Add-support-for-SPV_NV_fragment_shader_barycentric
authorChao Chen <chaoc@nvidia.com>
Wed, 19 Sep 2018 18:39:56 +0000 (11:39 -0700)
committerChao Chen <chaoc@nvidia.com>
Wed, 19 Sep 2018 20:07:42 +0000 (13:07 -0700)
19 files changed:
SPIRV/GLSL.ext.NV.h
SPIRV/GlslangToSpv.cpp
SPIRV/disassemble.cpp
SPIRV/doc.cpp
Test/baseResults/spv.fragmentShaderBarycentric.frag.out [new file with mode: 0644]
Test/baseResults/spv.fragmentShaderBarycentric2.frag.out [new file with mode: 0644]
Test/spv.fragmentShaderBarycentric.frag [new file with mode: 0644]
Test/spv.fragmentShaderBarycentric2.frag [new file with mode: 0644]
glslang/Include/BaseTypes.h
glslang/Include/Types.h
glslang/MachineIndependent/Initialize.cpp
glslang/MachineIndependent/ParseHelper.cpp
glslang/MachineIndependent/Scan.cpp
glslang/MachineIndependent/Versions.cpp
glslang/MachineIndependent/Versions.h
glslang/MachineIndependent/glslang.y
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/glslang_tab.cpp.h
gtests/Spv.FromFile.cpp

index 148d4b4..8b1faff 100644 (file)
@@ -33,7 +33,7 @@ enum Op;
 enum Capability;
 
 static const int GLSLextNVVersion = 100;
-static const int GLSLextNVRevision = 5;
+static const int GLSLextNVRevision = 6;
 
 //SPV_NV_sample_mask_override_coverage
 const char* const E_SPV_NV_sample_mask_override_coverage = "SPV_NV_sample_mask_override_coverage";
@@ -54,4 +54,7 @@ const char* const E_SPV_NVX_multiview_per_view_attributes = "SPV_NVX_multiview_p
 //SPV_NV_shader_subgroup_partitioned
 const char* const E_SPV_NV_shader_subgroup_partitioned = "SPV_NV_shader_subgroup_partitioned";
 
+//SPV_NV_fragment_shader_barycentric
+const char* const E_SPV_NV_fragment_shader_barycentric = "SPV_NV_fragment_shader_barycentric";
+
 #endif  // #ifndef GLSLextNV_H
\ No newline at end of file
index 3a36b38..c04a6c5 100755 (executable)
@@ -827,6 +827,14 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
         builder.addExtension(spv::E_SPV_EXT_fragment_fully_covered);
         builder.addCapability(spv::CapabilityFragmentFullyCoveredEXT);
         return spv::BuiltInFullyCoveredEXT;
+    case glslang::EbvBaryCoordNV:
+        builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric);
+        builder.addCapability(spv::CapabilityFragmentBarycentricNV);
+        return spv::BuiltInBaryCoordNV;
+    case glslang::EbvBaryCoordNoPerspNV:
+        builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric);
+        builder.addCapability(spv::CapabilityFragmentBarycentricNV);
+        return spv::BuiltInBaryCoordNoPerspNV;
 #endif 
     default:
         return spv::BuiltInMax;
@@ -6858,6 +6866,11 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
         builder.addCapability(spv::CapabilityGeometryShaderPassthroughNV);
         builder.addExtension(spv::E_SPV_NV_geometry_shader_passthrough);
     }
+    if (symbol->getQualifier().pervertexNV) {
+        builder.addDecoration(id, spv::DecorationPerVertexNV);
+        builder.addCapability(spv::CapabilityFragmentBarycentricNV);
+        builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric);
+    }
 #endif
 
     if (glslangIntermediate->getHlslFunctionality1() && symbol->getType().getQualifier().semanticName != nullptr) {
index 042d558..0266997 100644 (file)
@@ -510,7 +510,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
                 }else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 ||
                           strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 ||
                           strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 ||
-                          strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0) {
+                          strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 || 
+                          strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0) {
                     extInstSet = GLSLextNVInst;
 #endif
                 }
@@ -691,7 +692,8 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
         strcmp(name, spv::E_SPV_NV_geometry_shader_passthrough) == 0 ||
         strcmp(name, spv::E_ARB_shader_viewport_layer_array) == 0 ||
         strcmp(name, spv::E_SPV_NV_viewport_array2) == 0 ||
-        strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0) {
+        strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 ||
+        strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0) {
         switch (entrypoint) {
         case DecorationOverrideCoverageNV:          return "OverrideCoverageNV";
         case DecorationPassthroughNV:               return "PassthroughNV";
@@ -706,6 +708,10 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
         case BuiltInPositionPerViewNV:              return "PositionPerViewNV";
         case BuiltInViewportMaskPerViewNV:          return "ViewportMaskPerViewNV";
         case CapabilityPerViewAttributesNV:         return "PerViewAttributesNV";
+        case CapabilityFragmentBarycentricNV:       return "FragmentBarycentricNV";
+        case DecorationPerVertexNV:                 return "PerVertexNV";
+        case BuiltInBaryCoordNV:                    return "BaryCoordNV";
+        case BuiltInBaryCoordNoPerspNV:             return "BaryCoordNoPerspNV";
         default:                                    return "Bad";
         }
     }
index a68df0d..cd33103 100644 (file)
@@ -254,6 +254,7 @@ const char* DecorationString(int decoration)
     case DecorationPassthroughNV:               return "PassthroughNV";
     case DecorationViewportRelativeNV:          return "ViewportRelativeNV";
     case DecorationSecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV";
+    case DecorationPerVertexNV:                 return "PerVertexNV";
 #endif
 
     case DecorationNonUniformEXT:           return "DecorationNonUniformEXT";
@@ -338,6 +339,8 @@ const char* BuiltInString(int builtIn)
     case 5258: return "SecondaryViewportMaskNV";
     case 5261: return "PositionPerViewNV";
     case 5262: return "ViewportMaskPerViewNV";
+    case BuiltInBaryCoordNV:        return "BaryCoordNV";
+    case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV";
 #endif
 
     case 5264: return "FullyCoveredEXT";
@@ -826,6 +829,7 @@ const char* CapabilityString(int info)
     case CapabilityShaderStereoViewNV:           return "ShaderStereoViewNV";
     case CapabilityPerViewAttributesNV:          return "PerViewAttributesNV";
     case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV";
+    case CapabilityFragmentBarycentricNV:        return "FragmentBarycentricNV";
 #endif
 
     case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT";
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
new file mode 100644 (file)
index 0000000..ffb3527
--- /dev/null
@@ -0,0 +1,69 @@
+spv.fragmentShaderBarycentric.frag
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 43
+
+                              Capability Shader
+                              Capability FragmentBarycentricNV
+                              Extension  "SPV_NV_fragment_shader_barycentric"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 8 11 21
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              SourceExtension  "GL_NV_fragment_shader_barycentric"
+                              Name 4  "main"
+                              Name 8  "value"
+                              Name 11  "gl_BaryCoordNV"
+                              Name 17  "vertices"
+                              MemberName 17(vertices) 0  "attrib"
+                              Name 21  "v"
+                              Decorate 8(value) Location 1
+                              Decorate 11(gl_BaryCoordNV) BuiltIn BaryCoordNV
+                              Decorate 17(vertices) Block
+                              Decorate 21(v) Location 0
+                              Decorate 21(v) PerVertexNV
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Output 6(float)
+        8(value):      7(ptr) Variable Output
+               9:             TypeVector 6(float) 3
+              10:             TypePointer Input 9(fvec3)
+11(gl_BaryCoordNV):     10(ptr) Variable Input
+              12:             TypeInt 32 0
+              13:     12(int) Constant 0
+              14:             TypePointer Input 6(float)
+    17(vertices):             TypeStruct 6(float)
+              18:     12(int) Constant 3
+              19:             TypeArray 17(vertices) 18
+              20:             TypePointer Input 19
+           21(v):     20(ptr) Variable Input
+              22:             TypeInt 32 1
+              23:     22(int) Constant 0
+              27:     12(int) Constant 1
+              30:     22(int) Constant 1
+              35:     12(int) Constant 2
+              38:     22(int) Constant 2
+         4(main):           2 Function None 3
+               5:             Label
+              15:     14(ptr) AccessChain 11(gl_BaryCoordNV) 13
+              16:    6(float) Load 15
+              24:     14(ptr) AccessChain 21(v) 23 23
+              25:    6(float) Load 24
+              26:    6(float) FMul 16 25
+              28:     14(ptr) AccessChain 11(gl_BaryCoordNV) 27
+              29:    6(float) Load 28
+              31:     14(ptr) AccessChain 21(v) 30 23
+              32:    6(float) Load 31
+              33:    6(float) FMul 29 32
+              34:    6(float) FAdd 26 33
+              36:     14(ptr) AccessChain 11(gl_BaryCoordNV) 35
+              37:    6(float) Load 36
+              39:     14(ptr) AccessChain 21(v) 38 23
+              40:    6(float) Load 39
+              41:    6(float) FMul 37 40
+              42:    6(float) FAdd 34 41
+                              Store 8(value) 42
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
new file mode 100644 (file)
index 0000000..05dce7a
--- /dev/null
@@ -0,0 +1,65 @@
+spv.fragmentShaderBarycentric2.frag
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 42
+
+                              Capability Shader
+                              Capability FragmentBarycentricNV
+                              Extension  "SPV_NV_fragment_shader_barycentric"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 8 11 20
+                              ExecutionMode 4 OriginUpperLeft
+                              Source ESSL 320
+                              SourceExtension  "GL_NV_fragment_shader_barycentric"
+                              Name 4  "main"
+                              Name 8  "value"
+                              Name 11  "gl_BaryCoordNoPerspNV"
+                              Name 20  "vertexIDs"
+                              Decorate 8(value) Location 1
+                              Decorate 11(gl_BaryCoordNoPerspNV) BuiltIn BaryCoordNoPerspNV
+                              Decorate 20(vertexIDs) Location 0
+                              Decorate 20(vertexIDs) PerVertexNV
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Output 6(float)
+        8(value):      7(ptr) Variable Output
+               9:             TypeVector 6(float) 3
+              10:             TypePointer Input 9(fvec3)
+11(gl_BaryCoordNoPerspNV):     10(ptr) Variable Input
+              12:             TypeInt 32 0
+              13:     12(int) Constant 0
+              14:             TypePointer Input 6(float)
+              17:     12(int) Constant 3
+              18:             TypeArray 6(float) 17
+              19:             TypePointer Input 18
+   20(vertexIDs):     19(ptr) Variable Input
+              21:             TypeInt 32 1
+              22:     21(int) Constant 0
+              26:     12(int) Constant 1
+              29:     21(int) Constant 1
+              34:     12(int) Constant 2
+              37:     21(int) Constant 2
+         4(main):           2 Function None 3
+               5:             Label
+              15:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 13
+              16:    6(float) Load 15
+              23:     14(ptr) AccessChain 20(vertexIDs) 22
+              24:    6(float) Load 23
+              25:    6(float) FMul 16 24
+              27:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 26
+              28:    6(float) Load 27
+              30:     14(ptr) AccessChain 20(vertexIDs) 29
+              31:    6(float) Load 30
+              32:    6(float) FMul 28 31
+              33:    6(float) FAdd 25 32
+              35:     14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 34
+              36:    6(float) Load 35
+              38:     14(ptr) AccessChain 20(vertexIDs) 37
+              39:    6(float) Load 38
+              40:    6(float) FMul 36 39
+              41:    6(float) FAdd 33 40
+                              Store 8(value) 41
+                              Return
+                              FunctionEnd
diff --git a/Test/spv.fragmentShaderBarycentric.frag b/Test/spv.fragmentShaderBarycentric.frag
new file mode 100644 (file)
index 0000000..c923aca
--- /dev/null
@@ -0,0 +1,15 @@
+#version 450
+#extension GL_NV_fragment_shader_barycentric : require
+
+layout(location = 0) pervertexNV in vertices {
+    float attrib;
+    } v[];   
+      
+layout(location = 1) out float value;
+      
+void main () {
+    value = (gl_BaryCoordNV.x * v[0].attrib +
+             gl_BaryCoordNV.y * v[1].attrib +
+             gl_BaryCoordNV.z * v[2].attrib);
+
+}
diff --git a/Test/spv.fragmentShaderBarycentric2.frag b/Test/spv.fragmentShaderBarycentric2.frag
new file mode 100644 (file)
index 0000000..4682e4e
--- /dev/null
@@ -0,0 +1,15 @@
+#version 320 es
+#extension GL_NV_fragment_shader_barycentric : require
+
+precision highp float;
+
+layout(location = 0) pervertexNV in float vertexIDs[3];
+      
+layout(location = 1) out float value;
+      
+void main () {
+    value = (gl_BaryCoordNoPerspNV.x * vertexIDs[0] +
+             gl_BaryCoordNoPerspNV.y * vertexIDs[1] +
+             gl_BaryCoordNoPerspNV.z * vertexIDs[2]);
+
+}
index 46fe159..5e433fd 100644 (file)
@@ -227,6 +227,8 @@ enum TBuiltInVariable {
     EbvPositionPerViewNV,
     EbvViewportMaskPerViewNV,
     EbvFragFullyCoveredNV,
+    EbvBaryCoordNV,
+    EbvBaryCoordNoPerspNV,
 #endif 
 
     // HLSL built-ins that live only temporarily, until they get remapped
@@ -365,6 +367,8 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v)
     case EbvPositionPerViewNV:          return "PositionPerViewNV";
     case EbvViewportMaskPerViewNV:      return "ViewportMaskPerViewNV";
     case EbvFragFullyCoveredNV:         return "FragFullyCoveredNV";
+    case EbvBaryCoordNV:                return "BaryCoordNV";
+    case EbvBaryCoordNoPerspNV:         return "BaryCoordNoPerspNV";
 #endif 
     default:                      return "unknown built-in variable";
     }
index 3928932..1e2ce65 100644 (file)
@@ -457,6 +457,9 @@ public:
 #ifdef AMD_EXTENSIONS
         explicitInterp = false;
 #endif
+#ifdef NV_EXTENSIONS
+        pervertexNV = false;
+#endif
     }
 
     void clearMemory()
@@ -501,6 +504,9 @@ public:
 #ifdef AMD_EXTENSIONS
     bool explicitInterp : 1;
 #endif
+#ifdef NV_EXTENSIONS
+    bool pervertexNV  : 1;
+#endif
     bool patch        : 1;
     bool sample       : 1;
     bool coherent     : 1;
@@ -524,6 +530,7 @@ public:
     {
         return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly;
     }
+
     bool isInterpolation() const
     {
 #ifdef AMD_EXTENSIONS
@@ -532,15 +539,21 @@ public:
         return flat || smooth || nopersp;
 #endif
     }
+
 #ifdef AMD_EXTENSIONS
     bool isExplicitInterpolation() const
     {
         return explicitInterp;
     }
 #endif
+
     bool isAuxiliary() const
     {
+#ifdef NV_EXTENSIONS
+        return centroid || patch || sample || pervertexNV;
+#else
         return centroid || patch || sample;
+#endif
     }
 
     bool isPipeInput() const
@@ -656,6 +669,11 @@ public:
             return ! patch && (isPipeInput() || isPipeOutput());
         case EShLangTessEvaluation:
             return ! patch && isPipeInput();
+#ifdef NV_EXTENSIONS
+        case EShLangFragment:
+            return pervertexNV && isPipeInput();
+#endif
+
         default:
             return false;
         }
@@ -1721,6 +1739,10 @@ public:
         if (qualifier.explicitInterp)
             appendStr(" __explicitInterpAMD");
 #endif
+#ifdef NV_EXTENSIONS
+        if (qualifier.pervertexNV)
+            appendStr(" pervertexNV");
+#endif
         if (qualifier.patch)
             appendStr(" patch");
         if (qualifier.sample)
index eb690bc..71e82f6 100644 (file)
@@ -5734,6 +5734,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
             stageBuiltins[EShLangFragment].append(
                 "in bool gl_FragFullyCoveredNV;"
                 );
+        if (version >= 450)
+            stageBuiltins[EShLangFragment].append(
+                "in vec3 gl_BaryCoordNV;"
+                "in vec3 gl_BaryCoordNoPerspNV;"
+            );
 #endif
     } else {
         // ES profile
@@ -5775,6 +5780,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
         stageBuiltins[EShLangFragment].append(
             "highp float gl_FragDepthEXT;"       // GL_EXT_frag_depth
             );
+#ifdef NV_EXTENSIONS
+        if (version >= 320)
+            stageBuiltins[EShLangFragment].append(
+                "in vec3 gl_BaryCoordNV;"
+                "in vec3 gl_BaryCoordNoPerspNV;"
+            );
+#endif
     }
     stageBuiltins[EShLangFragment].append("\n");
 
@@ -7904,6 +7916,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
             symbolTable.setVariableExtensions("gl_FragFullyCoveredNV", 1, &E_GL_NV_conservative_raster_underestimation);
             BuiltInVariable("gl_FragFullyCoveredNV", EbvFragFullyCoveredNV, symbolTable);
         }
+        if ((profile != EEsProfile && version >= 450) ||
+            (profile == EEsProfile && version >= 320)) {
+            symbolTable.setVariableExtensions("gl_BaryCoordNV",        1, &E_GL_NV_fragment_shader_barycentric);
+            symbolTable.setVariableExtensions("gl_BaryCoordNoPerspNV", 1, &E_GL_NV_fragment_shader_barycentric);
+            BuiltInVariable("gl_BaryCoordNV",        EbvBaryCoordNV,        symbolTable);
+            BuiltInVariable("gl_BaryCoordNoPerspNV", EbvBaryCoordNoPerspNV, symbolTable);
+        }
 #endif
 
         symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth);
index ee7488b..8ab327d 100644 (file)
@@ -496,7 +496,12 @@ bool TParseContext::isIoResizeArray(const TType& type) const
 {
     return type.isArray() &&
            ((language == EShLangGeometry    && type.getQualifier().storage == EvqVaryingIn) ||
-            (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch));
+            (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch)
+#ifdef NV_EXTENSIONS
+            ||
+            (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn &&  type.getQualifier().pervertexNV)
+#endif
+            );
 }
 
 // If an array is not isIoResizeArray() but is an io array, make sure it has the right size
@@ -569,7 +574,12 @@ void TParseContext::checkIoArraysConsistency(const TSourceLoc& loc, bool tailOnl
     const char* feature;
     if (language == EShLangGeometry)
         feature = TQualifier::getGeometryString(intermediate.getInputPrimitive());
-    else if (language == EShLangTessControl)
+    else if (language == EShLangTessControl
+#ifdef NV_EXTENSIONS
+          || language == EShLangFragment
+#endif
+        )
+
         feature = "vertices";
     else
         feature = "unknown";
@@ -589,6 +599,11 @@ int TParseContext::getIoArrayImplicitSize() const
         return TQualifier::mapGeometryToSize(intermediate.getInputPrimitive());
     else if (language == EShLangTessControl)
         return intermediate.getVertices() != TQualifier::layoutNotSet ? intermediate.getVertices() : 0;
+#ifdef NV_EXTENSIONS
+    else if (language == EShLangFragment)
+        return 3; //Number of vertices for Fragment shader is always three.
+#endif
+
     else
         return 0;
 }
@@ -602,6 +617,12 @@ void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredS
             error(loc, "inconsistent input primitive for array size of", feature, name.c_str());
         else if (language == EShLangTessControl)
             error(loc, "inconsistent output number of vertices for array size of", feature, name.c_str());
+#ifdef NV_EXTENSIONS
+        else if (language == EShLangFragment) {
+            if (type.getOuterArraySize() > requiredSize)
+                error(loc, " cannot be greater than 3 for pervertexNV", feature, name.c_str());
+        }
+#endif
         else
             assert(0);
     }
@@ -3020,11 +3041,14 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
     if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble)
         profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output");
 
+    if (!qualifier.flat
 #ifdef AMD_EXTENSIONS
-    if (! qualifier.flat && ! qualifier.explicitInterp) {
-#else
-    if (!qualifier.flat) {
+        && !qualifier.explicitInterp
+#endif
+#ifdef NV_EXTENSIONS
+        && !qualifier.pervertexNV
 #endif
+        ) {
         if (isTypeInt(publicType.basicType) ||
             publicType.basicType == EbtDouble ||
             (publicType.userDef && (publicType.userDef->containsBasicType(EbtInt8)   ||
@@ -4939,6 +4963,8 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie
             dst.layoutViewportRelative = true;
         if (src.layoutSecondaryViewportRelativeOffset != -2048)
             dst.layoutSecondaryViewportRelativeOffset = src.layoutSecondaryViewportRelativeOffset;
+        if (src.pervertexNV)
+            dst.pervertexNV = true;
 #endif
     }
 }
index 238301f..722d73d 100644 (file)
@@ -691,6 +691,9 @@ void TScanContext::fillInKeywordMap()
     (*KeywordMap)["__explicitInterpAMD"] =     EXPLICITINTERPAMD;
 #endif
     (*KeywordMap)["centroid"] =                CENTROID;
+#ifdef NV_EXTENSIONS
+    (*KeywordMap)["pervertexNV"] =             PERVERTEXNV;
+#endif
     (*KeywordMap)["precise"] =                 PRECISE;
     (*KeywordMap)["invariant"] =               INVARIANT;
     (*KeywordMap)["packed"] =                  PACKED;
@@ -1507,6 +1510,15 @@ int TScanContext::tokenizeIdentifier()
         return identifierOrType();
 #endif
 
+#ifdef NV_EXTENSIONS
+    case PERVERTEXNV:
+        if (((parseContext.profile != EEsProfile && parseContext.version >= 450) ||
+            (parseContext.profile == EEsProfile && parseContext.version >= 320)) &&
+            parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric))
+            return keyword;
+        return identifierOrType();
+#endif
+
     case FLAT:
         if (parseContext.profile == EEsProfile && parseContext.version < 300)
             reservedWord();
index e757c29..ee74aec 100644 (file)
@@ -235,6 +235,7 @@ void TParseVersions::initializeExtensionBehavior()
     extensionBehavior[E_GL_NV_conservative_raster_underestimation]   = EBhDisable;
     extensionBehavior[E_GL_NV_shader_noperspective_interpolation]    = EBhDisable;
     extensionBehavior[E_GL_NV_shader_subgroup_partitioned]           = EBhDisable;
+    extensionBehavior[E_GL_NV_fragment_shader_barycentric]           = EBhDisable;
 #endif
 
     // AEP
@@ -405,6 +406,7 @@ void TParseVersions::getPreamble(std::string& preamble)
             "#define GL_NV_shader_atomic_int64 1\n"
             "#define GL_NV_conservative_raster_underestimation 1\n"
             "#define GL_NV_shader_subgroup_partitioned 1\n"
+            "#define GL_NV_fragment_shader_barycentric 1\n"
 #endif
             "#define GL_KHX_shader_explicit_arithmetic_types 1\n"
             "#define GL_KHX_shader_explicit_arithmetic_types_int8 1\n"
index 7628163..9efb242 100644 (file)
@@ -207,7 +207,7 @@ const char* const E_GL_NV_shader_atomic_int64                   = "GL_NV_shader_
 const char* const E_GL_NV_conservative_raster_underestimation   = "GL_NV_conservative_raster_underestimation";
 const char* const E_GL_NV_shader_noperspective_interpolation    = "GL_NV_shader_noperspective_interpolation";
 const char* const E_GL_NV_shader_subgroup_partitioned           = "GL_NV_shader_subgroup_partitioned";
-
+const char* const E_GL_NV_fragment_shader_barycentric           = "GL_NV_fragment_shader_barycentric";
 // Arrays of extensions for the above viewportEXTs duplications
 
 const char* const viewportEXTs[] = { E_GL_ARB_shader_viewport_layer_array, E_GL_NV_viewport_array2 };
index 55b18ec..64273fb 100644 (file)
@@ -146,7 +146,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
 %token <lex> F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4
 %token <lex> F32VEC2 F32VEC3 F32VEC4 F32MAT2 F32MAT3 F32MAT4
 %token <lex> F64VEC2 F64VEC3 F64VEC4 F64MAT2 F64MAT3 F64MAT4
-%token <lex> NOPERSPECTIVE FLAT SMOOTH LAYOUT EXPLICITINTERPAMD
+%token <lex> NOPERSPECTIVE FLAT SMOOTH LAYOUT EXPLICITINTERPAMD PERVERTEXNV
 
 %token <lex> MAT2X2 MAT2X3 MAT2X4
 %token <lex> MAT3X2 MAT3X3 MAT3X4
@@ -1144,6 +1144,16 @@ interpolation_qualifier
         $$.qualifier.explicitInterp = true;
 #endif
     }
+    | PERVERTEXNV {
+#ifdef NV_EXTENSIONS
+        parseContext.globalCheck($1.loc, "pervertexNV");
+        parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
+        parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
+        parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
+        $$.init($1.loc);
+        $$.qualifier.pervertexNV = true;
+#endif
+    }
     ;
 
 layout_qualifier
index f708964..97281b4 100644 (file)
@@ -242,280 +242,281 @@ extern int yydebug;
     SMOOTH = 374,
     LAYOUT = 375,
     EXPLICITINTERPAMD = 376,
-    MAT2X2 = 377,
-    MAT2X3 = 378,
-    MAT2X4 = 379,
-    MAT3X2 = 380,
-    MAT3X3 = 381,
-    MAT3X4 = 382,
-    MAT4X2 = 383,
-    MAT4X3 = 384,
-    MAT4X4 = 385,
-    DMAT2X2 = 386,
-    DMAT2X3 = 387,
-    DMAT2X4 = 388,
-    DMAT3X2 = 389,
-    DMAT3X3 = 390,
-    DMAT3X4 = 391,
-    DMAT4X2 = 392,
-    DMAT4X3 = 393,
-    DMAT4X4 = 394,
-    F16MAT2X2 = 395,
-    F16MAT2X3 = 396,
-    F16MAT2X4 = 397,
-    F16MAT3X2 = 398,
-    F16MAT3X3 = 399,
-    F16MAT3X4 = 400,
-    F16MAT4X2 = 401,
-    F16MAT4X3 = 402,
-    F16MAT4X4 = 403,
-    F32MAT2X2 = 404,
-    F32MAT2X3 = 405,
-    F32MAT2X4 = 406,
-    F32MAT3X2 = 407,
-    F32MAT3X3 = 408,
-    F32MAT3X4 = 409,
-    F32MAT4X2 = 410,
-    F32MAT4X3 = 411,
-    F32MAT4X4 = 412,
-    F64MAT2X2 = 413,
-    F64MAT2X3 = 414,
-    F64MAT2X4 = 415,
-    F64MAT3X2 = 416,
-    F64MAT3X3 = 417,
-    F64MAT3X4 = 418,
-    F64MAT4X2 = 419,
-    F64MAT4X3 = 420,
-    F64MAT4X4 = 421,
-    ATOMIC_UINT = 422,
-    SAMPLER1D = 423,
-    SAMPLER2D = 424,
-    SAMPLER3D = 425,
-    SAMPLERCUBE = 426,
-    SAMPLER1DSHADOW = 427,
-    SAMPLER2DSHADOW = 428,
-    SAMPLERCUBESHADOW = 429,
-    SAMPLER1DARRAY = 430,
-    SAMPLER2DARRAY = 431,
-    SAMPLER1DARRAYSHADOW = 432,
-    SAMPLER2DARRAYSHADOW = 433,
-    ISAMPLER1D = 434,
-    ISAMPLER2D = 435,
-    ISAMPLER3D = 436,
-    ISAMPLERCUBE = 437,
-    ISAMPLER1DARRAY = 438,
-    ISAMPLER2DARRAY = 439,
-    USAMPLER1D = 440,
-    USAMPLER2D = 441,
-    USAMPLER3D = 442,
-    USAMPLERCUBE = 443,
-    USAMPLER1DARRAY = 444,
-    USAMPLER2DARRAY = 445,
-    SAMPLER2DRECT = 446,
-    SAMPLER2DRECTSHADOW = 447,
-    ISAMPLER2DRECT = 448,
-    USAMPLER2DRECT = 449,
-    SAMPLERBUFFER = 450,
-    ISAMPLERBUFFER = 451,
-    USAMPLERBUFFER = 452,
-    SAMPLERCUBEARRAY = 453,
-    SAMPLERCUBEARRAYSHADOW = 454,
-    ISAMPLERCUBEARRAY = 455,
-    USAMPLERCUBEARRAY = 456,
-    SAMPLER2DMS = 457,
-    ISAMPLER2DMS = 458,
-    USAMPLER2DMS = 459,
-    SAMPLER2DMSARRAY = 460,
-    ISAMPLER2DMSARRAY = 461,
-    USAMPLER2DMSARRAY = 462,
-    SAMPLEREXTERNALOES = 463,
-    F16SAMPLER1D = 464,
-    F16SAMPLER2D = 465,
-    F16SAMPLER3D = 466,
-    F16SAMPLER2DRECT = 467,
-    F16SAMPLERCUBE = 468,
-    F16SAMPLER1DARRAY = 469,
-    F16SAMPLER2DARRAY = 470,
-    F16SAMPLERCUBEARRAY = 471,
-    F16SAMPLERBUFFER = 472,
-    F16SAMPLER2DMS = 473,
-    F16SAMPLER2DMSARRAY = 474,
-    F16SAMPLER1DSHADOW = 475,
-    F16SAMPLER2DSHADOW = 476,
-    F16SAMPLER1DARRAYSHADOW = 477,
-    F16SAMPLER2DARRAYSHADOW = 478,
-    F16SAMPLER2DRECTSHADOW = 479,
-    F16SAMPLERCUBESHADOW = 480,
-    F16SAMPLERCUBEARRAYSHADOW = 481,
-    SAMPLER = 482,
-    SAMPLERSHADOW = 483,
-    TEXTURE1D = 484,
-    TEXTURE2D = 485,
-    TEXTURE3D = 486,
-    TEXTURECUBE = 487,
-    TEXTURE1DARRAY = 488,
-    TEXTURE2DARRAY = 489,
-    ITEXTURE1D = 490,
-    ITEXTURE2D = 491,
-    ITEXTURE3D = 492,
-    ITEXTURECUBE = 493,
-    ITEXTURE1DARRAY = 494,
-    ITEXTURE2DARRAY = 495,
-    UTEXTURE1D = 496,
-    UTEXTURE2D = 497,
-    UTEXTURE3D = 498,
-    UTEXTURECUBE = 499,
-    UTEXTURE1DARRAY = 500,
-    UTEXTURE2DARRAY = 501,
-    TEXTURE2DRECT = 502,
-    ITEXTURE2DRECT = 503,
-    UTEXTURE2DRECT = 504,
-    TEXTUREBUFFER = 505,
-    ITEXTUREBUFFER = 506,
-    UTEXTUREBUFFER = 507,
-    TEXTURECUBEARRAY = 508,
-    ITEXTURECUBEARRAY = 509,
-    UTEXTURECUBEARRAY = 510,
-    TEXTURE2DMS = 511,
-    ITEXTURE2DMS = 512,
-    UTEXTURE2DMS = 513,
-    TEXTURE2DMSARRAY = 514,
-    ITEXTURE2DMSARRAY = 515,
-    UTEXTURE2DMSARRAY = 516,
-    F16TEXTURE1D = 517,
-    F16TEXTURE2D = 518,
-    F16TEXTURE3D = 519,
-    F16TEXTURE2DRECT = 520,
-    F16TEXTURECUBE = 521,
-    F16TEXTURE1DARRAY = 522,
-    F16TEXTURE2DARRAY = 523,
-    F16TEXTURECUBEARRAY = 524,
-    F16TEXTUREBUFFER = 525,
-    F16TEXTURE2DMS = 526,
-    F16TEXTURE2DMSARRAY = 527,
-    SUBPASSINPUT = 528,
-    SUBPASSINPUTMS = 529,
-    ISUBPASSINPUT = 530,
-    ISUBPASSINPUTMS = 531,
-    USUBPASSINPUT = 532,
-    USUBPASSINPUTMS = 533,
-    F16SUBPASSINPUT = 534,
-    F16SUBPASSINPUTMS = 535,
-    IMAGE1D = 536,
-    IIMAGE1D = 537,
-    UIMAGE1D = 538,
-    IMAGE2D = 539,
-    IIMAGE2D = 540,
-    UIMAGE2D = 541,
-    IMAGE3D = 542,
-    IIMAGE3D = 543,
-    UIMAGE3D = 544,
-    IMAGE2DRECT = 545,
-    IIMAGE2DRECT = 546,
-    UIMAGE2DRECT = 547,
-    IMAGECUBE = 548,
-    IIMAGECUBE = 549,
-    UIMAGECUBE = 550,
-    IMAGEBUFFER = 551,
-    IIMAGEBUFFER = 552,
-    UIMAGEBUFFER = 553,
-    IMAGE1DARRAY = 554,
-    IIMAGE1DARRAY = 555,
-    UIMAGE1DARRAY = 556,
-    IMAGE2DARRAY = 557,
-    IIMAGE2DARRAY = 558,
-    UIMAGE2DARRAY = 559,
-    IMAGECUBEARRAY = 560,
-    IIMAGECUBEARRAY = 561,
-    UIMAGECUBEARRAY = 562,
-    IMAGE2DMS = 563,
-    IIMAGE2DMS = 564,
-    UIMAGE2DMS = 565,
-    IMAGE2DMSARRAY = 566,
-    IIMAGE2DMSARRAY = 567,
-    UIMAGE2DMSARRAY = 568,
-    F16IMAGE1D = 569,
-    F16IMAGE2D = 570,
-    F16IMAGE3D = 571,
-    F16IMAGE2DRECT = 572,
-    F16IMAGECUBE = 573,
-    F16IMAGE1DARRAY = 574,
-    F16IMAGE2DARRAY = 575,
-    F16IMAGECUBEARRAY = 576,
-    F16IMAGEBUFFER = 577,
-    F16IMAGE2DMS = 578,
-    F16IMAGE2DMSARRAY = 579,
-    STRUCT = 580,
-    VOID = 581,
-    WHILE = 582,
-    IDENTIFIER = 583,
-    TYPE_NAME = 584,
-    FLOATCONSTANT = 585,
-    DOUBLECONSTANT = 586,
-    INT16CONSTANT = 587,
-    UINT16CONSTANT = 588,
-    INT32CONSTANT = 589,
-    UINT32CONSTANT = 590,
-    INTCONSTANT = 591,
-    UINTCONSTANT = 592,
-    INT64CONSTANT = 593,
-    UINT64CONSTANT = 594,
-    BOOLCONSTANT = 595,
-    FLOAT16CONSTANT = 596,
-    LEFT_OP = 597,
-    RIGHT_OP = 598,
-    INC_OP = 599,
-    DEC_OP = 600,
-    LE_OP = 601,
-    GE_OP = 602,
-    EQ_OP = 603,
-    NE_OP = 604,
-    AND_OP = 605,
-    OR_OP = 606,
-    XOR_OP = 607,
-    MUL_ASSIGN = 608,
-    DIV_ASSIGN = 609,
-    ADD_ASSIGN = 610,
-    MOD_ASSIGN = 611,
-    LEFT_ASSIGN = 612,
-    RIGHT_ASSIGN = 613,
-    AND_ASSIGN = 614,
-    XOR_ASSIGN = 615,
-    OR_ASSIGN = 616,
-    SUB_ASSIGN = 617,
-    LEFT_PAREN = 618,
-    RIGHT_PAREN = 619,
-    LEFT_BRACKET = 620,
-    RIGHT_BRACKET = 621,
-    LEFT_BRACE = 622,
-    RIGHT_BRACE = 623,
-    DOT = 624,
-    COMMA = 625,
-    COLON = 626,
-    EQUAL = 627,
-    SEMICOLON = 628,
-    BANG = 629,
-    DASH = 630,
-    TILDE = 631,
-    PLUS = 632,
-    STAR = 633,
-    SLASH = 634,
-    PERCENT = 635,
-    LEFT_ANGLE = 636,
-    RIGHT_ANGLE = 637,
-    VERTICAL_BAR = 638,
-    CARET = 639,
-    AMPERSAND = 640,
-    QUESTION = 641,
-    INVARIANT = 642,
-    PRECISE = 643,
-    HIGH_PRECISION = 644,
-    MEDIUM_PRECISION = 645,
-    LOW_PRECISION = 646,
-    PRECISION = 647,
-    PACKED = 648,
-    RESOURCE = 649,
-    SUPERP = 650
+    PERVERTEXNV = 377,
+    MAT2X2 = 378,
+    MAT2X3 = 379,
+    MAT2X4 = 380,
+    MAT3X2 = 381,
+    MAT3X3 = 382,
+    MAT3X4 = 383,
+    MAT4X2 = 384,
+    MAT4X3 = 385,
+    MAT4X4 = 386,
+    DMAT2X2 = 387,
+    DMAT2X3 = 388,
+    DMAT2X4 = 389,
+    DMAT3X2 = 390,
+    DMAT3X3 = 391,
+    DMAT3X4 = 392,
+    DMAT4X2 = 393,
+    DMAT4X3 = 394,
+    DMAT4X4 = 395,
+    F16MAT2X2 = 396,
+    F16MAT2X3 = 397,
+    F16MAT2X4 = 398,
+    F16MAT3X2 = 399,
+    F16MAT3X3 = 400,
+    F16MAT3X4 = 401,
+    F16MAT4X2 = 402,
+    F16MAT4X3 = 403,
+    F16MAT4X4 = 404,
+    F32MAT2X2 = 405,
+    F32MAT2X3 = 406,
+    F32MAT2X4 = 407,
+    F32MAT3X2 = 408,
+    F32MAT3X3 = 409,
+    F32MAT3X4 = 410,
+    F32MAT4X2 = 411,
+    F32MAT4X3 = 412,
+    F32MAT4X4 = 413,
+    F64MAT2X2 = 414,
+    F64MAT2X3 = 415,
+    F64MAT2X4 = 416,
+    F64MAT3X2 = 417,
+    F64MAT3X3 = 418,
+    F64MAT3X4 = 419,
+    F64MAT4X2 = 420,
+    F64MAT4X3 = 421,
+    F64MAT4X4 = 422,
+    ATOMIC_UINT = 423,
+    SAMPLER1D = 424,
+    SAMPLER2D = 425,
+    SAMPLER3D = 426,
+    SAMPLERCUBE = 427,
+    SAMPLER1DSHADOW = 428,
+    SAMPLER2DSHADOW = 429,
+    SAMPLERCUBESHADOW = 430,
+    SAMPLER1DARRAY = 431,
+    SAMPLER2DARRAY = 432,
+    SAMPLER1DARRAYSHADOW = 433,
+    SAMPLER2DARRAYSHADOW = 434,
+    ISAMPLER1D = 435,
+    ISAMPLER2D = 436,
+    ISAMPLER3D = 437,
+    ISAMPLERCUBE = 438,
+    ISAMPLER1DARRAY = 439,
+    ISAMPLER2DARRAY = 440,
+    USAMPLER1D = 441,
+    USAMPLER2D = 442,
+    USAMPLER3D = 443,
+    USAMPLERCUBE = 444,
+    USAMPLER1DARRAY = 445,
+    USAMPLER2DARRAY = 446,
+    SAMPLER2DRECT = 447,
+    SAMPLER2DRECTSHADOW = 448,
+    ISAMPLER2DRECT = 449,
+    USAMPLER2DRECT = 450,
+    SAMPLERBUFFER = 451,
+    ISAMPLERBUFFER = 452,
+    USAMPLERBUFFER = 453,
+    SAMPLERCUBEARRAY = 454,
+    SAMPLERCUBEARRAYSHADOW = 455,
+    ISAMPLERCUBEARRAY = 456,
+    USAMPLERCUBEARRAY = 457,
+    SAMPLER2DMS = 458,
+    ISAMPLER2DMS = 459,
+    USAMPLER2DMS = 460,
+    SAMPLER2DMSARRAY = 461,
+    ISAMPLER2DMSARRAY = 462,
+    USAMPLER2DMSARRAY = 463,
+    SAMPLEREXTERNALOES = 464,
+    F16SAMPLER1D = 465,
+    F16SAMPLER2D = 466,
+    F16SAMPLER3D = 467,
+    F16SAMPLER2DRECT = 468,
+    F16SAMPLERCUBE = 469,
+    F16SAMPLER1DARRAY = 470,
+    F16SAMPLER2DARRAY = 471,
+    F16SAMPLERCUBEARRAY = 472,
+    F16SAMPLERBUFFER = 473,
+    F16SAMPLER2DMS = 474,
+    F16SAMPLER2DMSARRAY = 475,
+    F16SAMPLER1DSHADOW = 476,
+    F16SAMPLER2DSHADOW = 477,
+    F16SAMPLER1DARRAYSHADOW = 478,
+    F16SAMPLER2DARRAYSHADOW = 479,
+    F16SAMPLER2DRECTSHADOW = 480,
+    F16SAMPLERCUBESHADOW = 481,
+    F16SAMPLERCUBEARRAYSHADOW = 482,
+    SAMPLER = 483,
+    SAMPLERSHADOW = 484,
+    TEXTURE1D = 485,
+    TEXTURE2D = 486,
+    TEXTURE3D = 487,
+    TEXTURECUBE = 488,
+    TEXTURE1DARRAY = 489,
+    TEXTURE2DARRAY = 490,
+    ITEXTURE1D = 491,
+    ITEXTURE2D = 492,
+    ITEXTURE3D = 493,
+    ITEXTURECUBE = 494,
+    ITEXTURE1DARRAY = 495,
+    ITEXTURE2DARRAY = 496,
+    UTEXTURE1D = 497,
+    UTEXTURE2D = 498,
+    UTEXTURE3D = 499,
+    UTEXTURECUBE = 500,
+    UTEXTURE1DARRAY = 501,
+    UTEXTURE2DARRAY = 502,
+    TEXTURE2DRECT = 503,
+    ITEXTURE2DRECT = 504,
+    UTEXTURE2DRECT = 505,
+    TEXTUREBUFFER = 506,
+    ITEXTUREBUFFER = 507,
+    UTEXTUREBUFFER = 508,
+    TEXTURECUBEARRAY = 509,
+    ITEXTURECUBEARRAY = 510,
+    UTEXTURECUBEARRAY = 511,
+    TEXTURE2DMS = 512,
+    ITEXTURE2DMS = 513,
+    UTEXTURE2DMS = 514,
+    TEXTURE2DMSARRAY = 515,
+    ITEXTURE2DMSARRAY = 516,
+    UTEXTURE2DMSARRAY = 517,
+    F16TEXTURE1D = 518,
+    F16TEXTURE2D = 519,
+    F16TEXTURE3D = 520,
+    F16TEXTURE2DRECT = 521,
+    F16TEXTURECUBE = 522,
+    F16TEXTURE1DARRAY = 523,
+    F16TEXTURE2DARRAY = 524,
+    F16TEXTURECUBEARRAY = 525,
+    F16TEXTUREBUFFER = 526,
+    F16TEXTURE2DMS = 527,
+    F16TEXTURE2DMSARRAY = 528,
+    SUBPASSINPUT = 529,
+    SUBPASSINPUTMS = 530,
+    ISUBPASSINPUT = 531,
+    ISUBPASSINPUTMS = 532,
+    USUBPASSINPUT = 533,
+    USUBPASSINPUTMS = 534,
+    F16SUBPASSINPUT = 535,
+    F16SUBPASSINPUTMS = 536,
+    IMAGE1D = 537,
+    IIMAGE1D = 538,
+    UIMAGE1D = 539,
+    IMAGE2D = 540,
+    IIMAGE2D = 541,
+    UIMAGE2D = 542,
+    IMAGE3D = 543,
+    IIMAGE3D = 544,
+    UIMAGE3D = 545,
+    IMAGE2DRECT = 546,
+    IIMAGE2DRECT = 547,
+    UIMAGE2DRECT = 548,
+    IMAGECUBE = 549,
+    IIMAGECUBE = 550,
+    UIMAGECUBE = 551,
+    IMAGEBUFFER = 552,
+    IIMAGEBUFFER = 553,
+    UIMAGEBUFFER = 554,
+    IMAGE1DARRAY = 555,
+    IIMAGE1DARRAY = 556,
+    UIMAGE1DARRAY = 557,
+    IMAGE2DARRAY = 558,
+    IIMAGE2DARRAY = 559,
+    UIMAGE2DARRAY = 560,
+    IMAGECUBEARRAY = 561,
+    IIMAGECUBEARRAY = 562,
+    UIMAGECUBEARRAY = 563,
+    IMAGE2DMS = 564,
+    IIMAGE2DMS = 565,
+    UIMAGE2DMS = 566,
+    IMAGE2DMSARRAY = 567,
+    IIMAGE2DMSARRAY = 568,
+    UIMAGE2DMSARRAY = 569,
+    F16IMAGE1D = 570,
+    F16IMAGE2D = 571,
+    F16IMAGE3D = 572,
+    F16IMAGE2DRECT = 573,
+    F16IMAGECUBE = 574,
+    F16IMAGE1DARRAY = 575,
+    F16IMAGE2DARRAY = 576,
+    F16IMAGECUBEARRAY = 577,
+    F16IMAGEBUFFER = 578,
+    F16IMAGE2DMS = 579,
+    F16IMAGE2DMSARRAY = 580,
+    STRUCT = 581,
+    VOID = 582,
+    WHILE = 583,
+    IDENTIFIER = 584,
+    TYPE_NAME = 585,
+    FLOATCONSTANT = 586,
+    DOUBLECONSTANT = 587,
+    INT16CONSTANT = 588,
+    UINT16CONSTANT = 589,
+    INT32CONSTANT = 590,
+    UINT32CONSTANT = 591,
+    INTCONSTANT = 592,
+    UINTCONSTANT = 593,
+    INT64CONSTANT = 594,
+    UINT64CONSTANT = 595,
+    BOOLCONSTANT = 596,
+    FLOAT16CONSTANT = 597,
+    LEFT_OP = 598,
+    RIGHT_OP = 599,
+    INC_OP = 600,
+    DEC_OP = 601,
+    LE_OP = 602,
+    GE_OP = 603,
+    EQ_OP = 604,
+    NE_OP = 605,
+    AND_OP = 606,
+    OR_OP = 607,
+    XOR_OP = 608,
+    MUL_ASSIGN = 609,
+    DIV_ASSIGN = 610,
+    ADD_ASSIGN = 611,
+    MOD_ASSIGN = 612,
+    LEFT_ASSIGN = 613,
+    RIGHT_ASSIGN = 614,
+    AND_ASSIGN = 615,
+    XOR_ASSIGN = 616,
+    OR_ASSIGN = 617,
+    SUB_ASSIGN = 618,
+    LEFT_PAREN = 619,
+    RIGHT_PAREN = 620,
+    LEFT_BRACKET = 621,
+    RIGHT_BRACKET = 622,
+    LEFT_BRACE = 623,
+    RIGHT_BRACE = 624,
+    DOT = 625,
+    COMMA = 626,
+    COLON = 627,
+    EQUAL = 628,
+    SEMICOLON = 629,
+    BANG = 630,
+    DASH = 631,
+    TILDE = 632,
+    PLUS = 633,
+    STAR = 634,
+    SLASH = 635,
+    PERCENT = 636,
+    LEFT_ANGLE = 637,
+    RIGHT_ANGLE = 638,
+    VERTICAL_BAR = 639,
+    CARET = 640,
+    AMPERSAND = 641,
+    QUESTION = 642,
+    INVARIANT = 643,
+    PRECISE = 644,
+    HIGH_PRECISION = 645,
+    MEDIUM_PRECISION = 646,
+    LOW_PRECISION = 647,
+    PRECISION = 648,
+    PACKED = 649,
+    RESOURCE = 650,
+    SUPERP = 651
   };
 #endif
 
@@ -559,7 +560,7 @@ union YYSTYPE
         };
     } interm;
 
-#line 563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
+#line 564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -590,7 +591,7 @@ int yyparse (glslang::TParseContext* pParseContext);
 extern int yylex(YYSTYPE*, TParseContext&);
 
 
-#line 594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
+#line 595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -830,23 +831,23 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  371
+#define YYFINAL  372
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   9064
+#define YYLAST   9087
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  396
+#define YYNTOKENS  397
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  107
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  561
+#define YYNRULES  562
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  702
+#define YYNSTATES  703
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   650
+#define YYMAXUTOK   651
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -920,7 +921,7 @@ static const yytype_uint16 yytranslate[] =
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395
+     395,   396
 };
 
 #if YYDEBUG
@@ -940,50 +941,50 @@ static const yytype_uint16 yyrline[] =
      819,   824,   833,   833,   844,   848,   855,   862,   865,   872,
      880,   900,   923,   938,   963,   974,   984,   994,  1004,  1013,
     1016,  1020,  1024,  1029,  1037,  1042,  1047,  1052,  1057,  1066,
-    1077,  1104,  1113,  1120,  1127,  1138,  1150,  1156,  1159,  1166,
-    1170,  1174,  1182,  1191,  1194,  1205,  1208,  1211,  1215,  1219,
-    1223,  1227,  1233,  1237,  1249,  1263,  1268,  1274,  1280,  1287,
-    1293,  1298,  1303,  1308,  1316,  1320,  1325,  1330,  1335,  1340,
-    1345,  1349,  1353,  1357,  1361,  1367,  1376,  1383,  1386,  1394,
-    1398,  1407,  1412,  1420,  1424,  1434,  1438,  1442,  1447,  1452,
-    1457,  1462,  1466,  1471,  1476,  1481,  1486,  1491,  1496,  1501,
-    1506,  1511,  1515,  1520,  1525,  1530,  1536,  1542,  1548,  1554,
-    1560,  1566,  1572,  1578,  1584,  1590,  1596,  1602,  1607,  1612,
-    1617,  1622,  1627,  1632,  1638,  1644,  1650,  1656,  1662,  1668,
-    1674,  1680,  1686,  1692,  1698,  1704,  1710,  1716,  1722,  1728,
-    1734,  1740,  1746,  1752,  1758,  1764,  1770,  1776,  1782,  1788,
-    1794,  1799,  1804,  1809,  1814,  1819,  1824,  1829,  1834,  1839,
-    1844,  1849,  1854,  1860,  1866,  1872,  1878,  1884,  1890,  1896,
-    1902,  1908,  1914,  1920,  1926,  1932,  1938,  1944,  1950,  1956,
-    1962,  1968,  1974,  1980,  1986,  1992,  1998,  2004,  2010,  2016,
-    2022,  2028,  2034,  2040,  2046,  2052,  2058,  2064,  2070,  2076,
-    2082,  2088,  2094,  2100,  2106,  2112,  2118,  2124,  2130,  2136,
-    2142,  2147,  2152,  2157,  2162,  2167,  2172,  2177,  2182,  2187,
-    2192,  2197,  2202,  2207,  2212,  2220,  2228,  2236,  2244,  2252,
-    2260,  2268,  2276,  2284,  2292,  2300,  2308,  2316,  2321,  2326,
-    2331,  2336,  2341,  2346,  2351,  2356,  2361,  2366,  2371,  2376,
-    2381,  2386,  2391,  2396,  2404,  2412,  2417,  2422,  2427,  2435,
-    2440,  2445,  2450,  2458,  2463,  2468,  2473,  2481,  2486,  2491,
-    2496,  2501,  2506,  2514,  2519,  2527,  2532,  2540,  2545,  2553,
-    2558,  2566,  2571,  2579,  2584,  2592,  2597,  2602,  2607,  2612,
-    2617,  2622,  2627,  2632,  2637,  2642,  2647,  2652,  2657,  2662,
-    2667,  2675,  2680,  2685,  2690,  2698,  2703,  2708,  2713,  2721,
-    2726,  2731,  2736,  2744,  2749,  2754,  2759,  2767,  2772,  2777,
-    2782,  2790,  2795,  2800,  2805,  2813,  2818,  2823,  2828,  2836,
-    2841,  2846,  2851,  2859,  2864,  2869,  2874,  2882,  2887,  2892,
-    2897,  2905,  2910,  2915,  2920,  2928,  2933,  2938,  2943,  2951,
-    2956,  2961,  2966,  2974,  2979,  2984,  2989,  2997,  3002,  3007,
-    3013,  3019,  3025,  3034,  3043,  3049,  3055,  3061,  3067,  3072,
-    3088,  3093,  3098,  3106,  3106,  3117,  3117,  3127,  3130,  3143,
-    3165,  3192,  3196,  3202,  3207,  3218,  3221,  3227,  3236,  3239,
-    3245,  3249,  3250,  3256,  3257,  3258,  3259,  3260,  3261,  3262,
-    3266,  3267,  3271,  3267,  3283,  3284,  3288,  3288,  3295,  3295,
-    3309,  3312,  3320,  3328,  3339,  3340,  3344,  3347,  3353,  3360,
-    3364,  3372,  3376,  3389,  3392,  3398,  3398,  3418,  3421,  3427,
-    3439,  3451,  3454,  3460,  3460,  3475,  3475,  3491,  3491,  3512,
-    3515,  3521,  3524,  3530,  3534,  3541,  3546,  3551,  3558,  3561,
-    3570,  3574,  3583,  3586,  3589,  3597,  3597,  3619,  3625,  3628,
-    3633,  3636
+    1077,  1104,  1113,  1120,  1127,  1138,  1147,  1160,  1166,  1169,
+    1176,  1180,  1184,  1192,  1201,  1204,  1215,  1218,  1221,  1225,
+    1229,  1233,  1237,  1243,  1247,  1259,  1273,  1278,  1284,  1290,
+    1297,  1303,  1308,  1313,  1318,  1326,  1330,  1335,  1340,  1345,
+    1350,  1355,  1359,  1363,  1367,  1371,  1377,  1386,  1393,  1396,
+    1404,  1408,  1417,  1422,  1430,  1434,  1444,  1448,  1452,  1457,
+    1462,  1467,  1472,  1476,  1481,  1486,  1491,  1496,  1501,  1506,
+    1511,  1516,  1521,  1525,  1530,  1535,  1540,  1546,  1552,  1558,
+    1564,  1570,  1576,  1582,  1588,  1594,  1600,  1606,  1612,  1617,
+    1622,  1627,  1632,  1637,  1642,  1648,  1654,  1660,  1666,  1672,
+    1678,  1684,  1690,  1696,  1702,  1708,  1714,  1720,  1726,  1732,
+    1738,  1744,  1750,  1756,  1762,  1768,  1774,  1780,  1786,  1792,
+    1798,  1804,  1809,  1814,  1819,  1824,  1829,  1834,  1839,  1844,
+    1849,  1854,  1859,  1864,  1870,  1876,  1882,  1888,  1894,  1900,
+    1906,  1912,  1918,  1924,  1930,  1936,  1942,  1948,  1954,  1960,
+    1966,  1972,  1978,  1984,  1990,  1996,  2002,  2008,  2014,  2020,
+    2026,  2032,  2038,  2044,  2050,  2056,  2062,  2068,  2074,  2080,
+    2086,  2092,  2098,  2104,  2110,  2116,  2122,  2128,  2134,  2140,
+    2146,  2152,  2157,  2162,  2167,  2172,  2177,  2182,  2187,  2192,
+    2197,  2202,  2207,  2212,  2217,  2222,  2230,  2238,  2246,  2254,
+    2262,  2270,  2278,  2286,  2294,  2302,  2310,  2318,  2326,  2331,
+    2336,  2341,  2346,  2351,  2356,  2361,  2366,  2371,  2376,  2381,
+    2386,  2391,  2396,  2401,  2406,  2414,  2422,  2427,  2432,  2437,
+    2445,  2450,  2455,  2460,  2468,  2473,  2478,  2483,  2491,  2496,
+    2501,  2506,  2511,  2516,  2524,  2529,  2537,  2542,  2550,  2555,
+    2563,  2568,  2576,  2581,  2589,  2594,  2602,  2607,  2612,  2617,
+    2622,  2627,  2632,  2637,  2642,  2647,  2652,  2657,  2662,  2667,
+    2672,  2677,  2685,  2690,  2695,  2700,  2708,  2713,  2718,  2723,
+    2731,  2736,  2741,  2746,  2754,  2759,  2764,  2769,  2777,  2782,
+    2787,  2792,  2800,  2805,  2810,  2815,  2823,  2828,  2833,  2838,
+    2846,  2851,  2856,  2861,  2869,  2874,  2879,  2884,  2892,  2897,
+    2902,  2907,  2915,  2920,  2925,  2930,  2938,  2943,  2948,  2953,
+    2961,  2966,  2971,  2976,  2984,  2989,  2994,  2999,  3007,  3012,
+    3017,  3023,  3029,  3035,  3044,  3053,  3059,  3065,  3071,  3077,
+    3082,  3098,  3103,  3108,  3116,  3116,  3127,  3127,  3137,  3140,
+    3153,  3175,  3202,  3206,  3212,  3217,  3228,  3231,  3237,  3246,
+    3249,  3255,  3259,  3260,  3266,  3267,  3268,  3269,  3270,  3271,
+    3272,  3276,  3277,  3281,  3277,  3293,  3294,  3298,  3298,  3305,
+    3305,  3319,  3322,  3330,  3338,  3349,  3350,  3354,  3357,  3363,
+    3370,  3374,  3382,  3386,  3399,  3402,  3408,  3408,  3428,  3431,
+    3437,  3449,  3461,  3464,  3470,  3470,  3485,  3485,  3501,  3501,
+    3522,  3525,  3531,  3534,  3540,  3544,  3551,  3556,  3561,  3568,
+    3571,  3580,  3584,  3593,  3596,  3599,  3607,  3607,  3629,  3635,
+    3638,  3643,  3646
 };
 #endif
 
@@ -1011,16 +1012,16 @@ static const char *const yytname[] =
   "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4",
   "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4",
   "F64MAT2", "F64MAT3", "F64MAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH",
-  "LAYOUT", "EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2",
-  "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3",
-  "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3",
-  "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2",
-  "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4",
-  "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3",
-  "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2",
-  "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4",
-  "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "SAMPLER1D",
-  "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW",
+  "LAYOUT", "EXPLICITINTERPAMD", "PERVERTEXNV", "MAT2X2", "MAT2X3",
+  "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4",
+  "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4",
+  "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4",
+  "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3",
+  "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", "F32MAT3X2",
+  "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", "F32MAT4X4",
+  "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3",
+  "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT",
+  "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW",
   "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER1DARRAY",
   "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW",
   "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE",
@@ -1160,16 +1161,16 @@ static const yytype_uint16 yytoknum[] =
      615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
      625,   626,   627,   628,   629,   630,   631,   632,   633,   634,
      635,   636,   637,   638,   639,   640,   641,   642,   643,   644,
-     645,   646,   647,   648,   649,   650
+     645,   646,   647,   648,   649,   650,   651
 };
 # endif
 
-#define YYPACT_NINF -641
+#define YYPACT_NINF -646
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-641)))
+  (!!((Yystate) == (-646)))
 
-#define YYTABLE_NINF -507
+#define YYTABLE_NINF -508
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -1178,77 +1179,77 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    3431,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -321,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -300,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -306,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -247,  -641,  -307,  -320,  -295,  -287,  5766,  -305,  -641,
-    -223,  -641,  -641,  -641,  -641,  4210,  -641,  -641,  -641,  -641,
-    -275,  -641,  -641,   701,  -641,  -641,  -217,   -67,  -242,  -641,
-    8735,  -327,  -641,  -641,  -218,  -641,  5766,  -641,  -641,  -641,
-    5766,  -194,  -188,  -641,  -331,  -293,  -641,  -641,  -641,  6497,
-    -213,  -641,  -641,  -641,  -297,  -641,  -203,  -292,  -641,  -641,
-    5766,  -214,  -641,  -326,  1091,  -641,  -641,  -641,  -641,  -275,
-    -316,  -641,  6870,  -310,  -641,  -165,  -641,  -266,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  7989,  7989,  7989,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -315,  -641,  -641,  -641,  -190,  -288,  8362,  -187,  -641,
-    7989,  -233,  -227,  -185,  -322,  -312,  -210,  -207,  -204,  -172,
-    -171,  -328,  -184,  -641,  -641,  7243,  -641,  -145,  7989,  -641,
-     -67,  5766,  5766,  -144,  4599,  -641,  -641,  -641,  -186,  -182,
-    -641,  -178,  -175,  -181,  7616,  -174,  7989,  -177,  -170,  -169,
-    -173,  -641,  -641,  -259,  -641,  -641,  -244,  -641,  -320,  -166,
-    -163,  -641,  -641,  -641,  -641,  1481,  -641,  -641,  -641,  -641,
-    -641,  -641,  -641,  -641,  -641,   -19,  -213,  6870,  -301,  6870,
-    -641,  -641,  6870,  5766,  -641,  -127,  -641,  -641,  -641,  -285,
-    -641,  -641,  7989,  -126,  -641,  -641,  7989,  -161,  -641,  -641,
-    -641,  7989,  7989,  7989,  7989,  7989,  7989,  7989,  7989,  7989,
-    7989,  7989,  7989,  7989,  7989,  7989,  7989,  7989,  7989,  7989,
-    -641,  -641,  -641,  -162,  -641,  -641,  -641,  -641,  4988,  -144,
-    -275,  -243,  -641,  -641,  -641,  -641,  -641,  1871,  -641,  7989,
-    -641,  -641,  -238,  7989,  -209,  -641,  -641,  -123,  -641,  1871,
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  7989,  7989,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    6870,  -641,  -215,  -641,  5377,  -641,  -641,  -158,  -160,  -641,
-    -641,  -641,  -641,  -641,  -233,  -233,  -227,  -227,  -185,  -185,
-    -185,  -185,  -322,  -322,  -312,  -210,  -207,  -204,  -172,  -171,
-    7989,  -641,  -641,  -232,  -213,  -144,  -641,  -118,  3041,  -283,
-    -641,  -258,  -641,  3821,  -152,  -278,  -641,  1871,  -641,  -641,
-    -641,  -641,  6124,  -641,  -641,  -205,  -641,  -641,  -150,  -641,
-    -641,  3821,  -153,  -641,  -160,  -113,  5766,  -148,  7989,  -149,
-    -123,  -147,  -641,  -641,  7989,  7989,  -641,  -155,  -142,   194,
-    -141,  2651,  -641,  -121,  -124,  2261,  -115,  -641,  -641,  -641,
-    -641,  -255,  7989,  2261,  -153,  -641,  -641,  1871,  6870,  -641,
-    -641,  -641,  -641,  -122,  -160,  -641,  -641,  1871,  -116,  -641,
-    -641,  -641
+    3439,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -315,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -298,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -646,  -311,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -355,  -646,  -312,  -348,  -284,  -307,  5780,  -267,
+    -646,  -220,  -646,  -646,  -646,  -646,  4220,  -646,  -646,  -646,
+    -646,  -242,  -646,  -646,   702,  -646,  -646,  -203,   -70,  -232,
+    -646,  8757,  -344,  -646,  -646,  -217,  -646,  5780,  -646,  -646,
+    -646,  5780,  -146,  -144,  -646,  -303,  -288,  -646,  -646,  -646,
+    6513,  -179,  -646,  -646,  -646,  -286,  -646,  -180,  -277,  -646,
+    -646,  5780,  -178,  -646,  -341,  1093,  -646,  -646,  -646,  -646,
+    -242,  -301,  -646,  6887,  -299,  -646,  -132,  -646,  -263,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  8009,  8009,  8009,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -293,  -646,  -646,  -646,  -167,  -273,  8383,  -165,
+    -646,  8009,  -231,  -300,  -230,  -328,  -196,  -186,  -184,  -182,
+    -147,  -148,  -329,  -161,  -646,  -646,  7261,  -646,  -122,  8009,
+    -646,   -70,  5780,  5780,  -121,  4610,  -646,  -646,  -646,  -164,
+    -163,  -646,  -155,  -152,  -160,  7635,  -151,  8009,  -157,  -145,
+    -150,  -143,  -646,  -646,  -216,  -646,  -646,  -251,  -646,  -348,
+    -142,  -141,  -646,  -646,  -646,  -646,  1484,  -646,  -646,  -646,
+    -646,  -646,  -646,  -646,  -646,  -646,   -17,  -179,  6887,  -291,
+    6887,  -646,  -646,  6887,  5780,  -646,  -112,  -646,  -646,  -646,
+    -270,  -646,  -646,  8009,  -111,  -646,  -646,  8009,  -140,  -646,
+    -646,  -646,  8009,  8009,  8009,  8009,  8009,  8009,  8009,  8009,
+    8009,  8009,  8009,  8009,  8009,  8009,  8009,  8009,  8009,  8009,
+    8009,  -646,  -646,  -646,  -139,  -646,  -646,  -646,  -646,  5000,
+    -121,  -242,  -249,  -646,  -646,  -646,  -646,  -646,  1875,  -646,
+    8009,  -646,  -646,  -243,  8009,  -213,  -646,  -646,  -108,  -646,
+    1875,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  8009,  8009,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  6887,  -646,  -324,  -646,  5390,  -646,  -646,  -138,  -137,
+    -646,  -646,  -646,  -646,  -646,  -231,  -231,  -300,  -300,  -230,
+    -230,  -230,  -230,  -328,  -328,  -196,  -186,  -184,  -182,  -147,
+    -148,  8009,  -646,  -646,  -239,  -179,  -121,  -646,  -101,  3048,
+    -269,  -646,  -268,  -646,  3830,  -134,  -323,  -646,  1875,  -646,
+    -646,  -646,  -646,  6139,  -646,  -646,  -190,  -646,  -646,  -133,
+    -646,  -646,  3830,  -135,  -646,  -137,   -94,  5780,  -129,  8009,
+    -130,  -108,  -131,  -646,  -646,  8009,  8009,  -646,  -128,  -126,
+     216,  -125,  2657,  -646,  -124,  -123,  2266,  -118,  -646,  -646,
+    -646,  -646,  -266,  8009,  2266,  -135,  -646,  -646,  1875,  6887,
+    -646,  -646,  -646,  -646,  -120,  -137,  -646,  -646,  1875,  -127,
+    -646,  -646,  -646
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1256,109 +1257,109 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,   153,   154,   188,   186,   189,   187,   190,   152,   201,
-     191,   192,   199,   200,   197,   198,   195,   196,   193,   194,
-     174,   217,   218,   219,   220,   221,   222,   235,   236,   237,
-     232,   233,   234,   247,   248,   249,   229,   230,   231,   244,
-     245,   246,   226,   227,   228,   241,   242,   243,   223,   224,
-     225,   238,   239,   240,   202,   203,   204,   250,   251,   252,
-     158,   156,   157,   155,   161,   159,   160,   162,   163,   176,
-     164,   170,   171,   172,   173,   165,   166,   167,   168,   169,
-     205,   206,   207,   262,   263,   264,   208,   209,   210,   274,
-     275,   276,   211,   212,   213,   286,   287,   288,   214,   215,
-     216,   298,   299,   300,   134,   133,   132,     0,   135,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   301,   302,   303,   304,   305,
+       0,   154,   155,   189,   187,   190,   188,   191,   153,   202,
+     192,   193,   200,   201,   198,   199,   196,   197,   194,   195,
+     175,   218,   219,   220,   221,   222,   223,   236,   237,   238,
+     233,   234,   235,   248,   249,   250,   230,   231,   232,   245,
+     246,   247,   227,   228,   229,   242,   243,   244,   224,   225,
+     226,   239,   240,   241,   203,   204,   205,   251,   252,   253,
+     159,   157,   158,   156,   162,   160,   161,   163,   164,   177,
+     165,   171,   172,   173,   174,   166,   167,   168,   169,   170,
+     206,   207,   208,   263,   264,   265,   209,   210,   211,   275,
+     276,   277,   212,   213,   214,   287,   288,   289,   215,   216,
+     217,   299,   300,   301,   134,   133,   132,     0,   135,   136,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   302,   303,   304,   305,
      306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,   337,   338,   339,   340,
-     341,   342,   344,   345,   346,   347,   348,   349,   351,   352,
-     355,   356,   357,   359,   360,   322,   323,   343,   350,   361,
-     363,   364,   365,   367,   368,   459,   324,   325,   326,   353,
-     327,   331,   332,   335,   358,   362,   366,   328,   329,   333,
-     334,   354,   330,   336,   369,   370,   371,   373,   375,   377,
-     379,   381,   385,   386,   387,   388,   389,   390,   392,   393,
-     394,   395,   396,   397,   399,   401,   402,   403,   405,   406,
-     383,   391,   398,   407,   409,   410,   411,   413,   414,   372,
-     374,   376,   400,   378,   380,   382,   384,   404,   408,   412,
-     460,   461,   464,   465,   466,   467,   462,   463,   415,   417,
-     418,   419,   421,   422,   423,   425,   426,   427,   429,   430,
-     431,   433,   434,   435,   437,   438,   439,   441,   442,   443,
-     445,   446,   447,   449,   450,   451,   453,   454,   455,   457,
-     458,   416,   420,   424,   428,   432,   440,   444,   448,   436,
-     452,   456,     0,   185,   469,   554,   131,   142,   470,   471,
-     472,     0,   553,     0,   555,     0,   108,   107,     0,   119,
-     124,   149,   148,   146,   150,     0,   143,   145,   151,   129,
-     179,   147,   468,     0,   550,   552,     0,     0,     0,   475,
-       0,     0,    96,    93,     0,   106,     0,   115,   109,   117,
-       0,   118,     0,    94,   125,     0,    99,   144,   130,     0,
-     180,     1,   551,   177,     0,   141,   139,     0,   137,   473,
-       0,     0,    97,     0,     0,   556,   110,   114,   116,   112,
-     120,   111,     0,   126,   102,     0,   100,     0,     2,    12,
-      13,    10,    11,     4,     5,     6,     7,     8,     9,    15,
-      14,     0,     0,     0,   181,    42,    41,    43,    40,     3,
-      17,    36,    19,    24,    25,     0,     0,    29,     0,    44,
-       0,    48,    51,    54,    59,    62,    64,    66,    68,    70,
-      72,    74,     0,    35,    33,     0,   175,     0,     0,   136,
-       0,     0,     0,     0,     0,   477,    95,    98,     0,     0,
-     535,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     501,   510,   514,    44,    77,    90,     0,   490,     0,   151,
-     129,   493,   512,   492,   491,     0,   494,   495,   516,   496,
-     523,   497,   498,   531,   499,     0,   113,     0,   121,     0,
-     485,   128,     0,     0,   104,     0,   101,    37,    38,     0,
-      21,    22,     0,     0,    27,    26,     0,   185,    30,    32,
-      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     316,   317,   318,   319,   320,   321,   322,   338,   339,   340,
+     341,   342,   343,   345,   346,   347,   348,   349,   350,   352,
+     353,   356,   357,   358,   360,   361,   323,   324,   344,   351,
+     362,   364,   365,   366,   368,   369,   460,   325,   326,   327,
+     354,   328,   332,   333,   336,   359,   363,   367,   329,   330,
+     334,   335,   355,   331,   337,   370,   371,   372,   374,   376,
+     378,   380,   382,   386,   387,   388,   389,   390,   391,   393,
+     394,   395,   396,   397,   398,   400,   402,   403,   404,   406,
+     407,   384,   392,   399,   408,   410,   411,   412,   414,   415,
+     373,   375,   377,   401,   379,   381,   383,   385,   405,   409,
+     413,   461,   462,   465,   466,   467,   468,   463,   464,   416,
+     418,   419,   420,   422,   423,   424,   426,   427,   428,   430,
+     431,   432,   434,   435,   436,   438,   439,   440,   442,   443,
+     444,   446,   447,   448,   450,   451,   452,   454,   455,   456,
+     458,   459,   417,   421,   425,   429,   433,   441,   445,   449,
+     437,   453,   457,     0,   186,   470,   555,   131,   143,   471,
+     472,   473,     0,   554,     0,   556,     0,   108,   107,     0,
+     119,   124,   150,   149,   147,   151,     0,   144,   146,   152,
+     129,   180,   148,   469,     0,   551,   553,     0,     0,     0,
+     476,     0,     0,    96,    93,     0,   106,     0,   115,   109,
+     117,     0,   118,     0,    94,   125,     0,    99,   145,   130,
+       0,   181,     1,   552,   178,     0,   142,   140,     0,   138,
+     474,     0,     0,    97,     0,     0,   557,   110,   114,   116,
+     112,   120,   111,     0,   126,   102,     0,   100,     0,     2,
+      12,    13,    10,    11,     4,     5,     6,     7,     8,     9,
+      15,    14,     0,     0,     0,   182,    42,    41,    43,    40,
+       3,    17,    36,    19,    24,    25,     0,     0,    29,     0,
+      44,     0,    48,    51,    54,    59,    62,    64,    66,    68,
+      70,    72,    74,     0,    35,    33,     0,   176,     0,     0,
+     137,     0,     0,     0,     0,     0,   478,    95,    98,     0,
+       0,   536,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   502,   511,   515,    44,    77,    90,     0,   491,     0,
+     152,   129,   494,   513,   493,   492,     0,   495,   496,   517,
+     497,   524,   498,   499,   532,   500,     0,   113,     0,   121,
+       0,   486,   128,     0,     0,   104,     0,   101,    37,    38,
+       0,    21,    22,     0,     0,    27,    26,     0,   186,    30,
+      32,    39,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      75,   182,   183,     0,   178,    92,   140,   138,     0,     0,
-     483,     0,   481,   476,   478,   546,   545,     0,   537,     0,
-     549,   547,     0,     0,     0,   530,   533,     0,   500,     0,
-      80,    81,    83,    82,    85,    86,    87,    88,    89,    84,
-      79,     0,     0,   515,   511,   513,   517,   524,   532,   123,
-       0,   488,     0,   127,     0,   105,    16,     0,    23,    20,
-      31,    45,    46,    47,    50,    49,    52,    53,    57,    58,
-      55,    56,    60,    61,    63,    65,    67,    69,    71,    73,
-       0,   184,   474,     0,   484,     0,   479,     0,     0,     0,
-     548,     0,   529,     0,   560,     0,   558,   502,    78,    91,
-     122,   486,     0,   103,    18,     0,   480,   482,     0,   540,
-     539,   542,   508,   525,   521,     0,     0,     0,     0,     0,
-       0,     0,   487,   489,     0,     0,   541,     0,     0,   520,
-       0,     0,   518,     0,     0,     0,     0,   557,   559,   503,
-      76,     0,   543,     0,   508,   507,   509,   527,     0,   505,
-     534,   504,   561,     0,   544,   538,   519,   528,     0,   522,
-     536,   526
+       0,    75,   183,   184,     0,   179,    92,   141,   139,     0,
+       0,   484,     0,   482,   477,   479,   547,   546,     0,   538,
+       0,   550,   548,     0,     0,     0,   531,   534,     0,   501,
+       0,    80,    81,    83,    82,    85,    86,    87,    88,    89,
+      84,    79,     0,     0,   516,   512,   514,   518,   525,   533,
+     123,     0,   489,     0,   127,     0,   105,    16,     0,    23,
+      20,    31,    45,    46,    47,    50,    49,    52,    53,    57,
+      58,    55,    56,    60,    61,    63,    65,    67,    69,    71,
+      73,     0,   185,   475,     0,   485,     0,   480,     0,     0,
+       0,   549,     0,   530,     0,   561,     0,   559,   503,    78,
+      91,   122,   487,     0,   103,    18,     0,   481,   483,     0,
+     541,   540,   543,   509,   526,   522,     0,     0,     0,     0,
+       0,     0,     0,   488,   490,     0,     0,   542,     0,     0,
+     521,     0,     0,   519,     0,     0,     0,     0,   558,   560,
+     504,    76,     0,   544,     0,   509,   508,   510,   528,     0,
+     506,   535,   505,   562,     0,   545,   539,   520,   529,     0,
+     523,   537,   527
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,  -641,  -294,  -641,  -357,  -356,  -407,  -360,  -314,  -282,
-    -313,  -281,  -284,  -289,  -641,  -359,  -641,  -383,  -641,  -373,
-    -403,     1,  -641,  -641,  -641,     2,  -641,  -641,  -641,  -103,
-     -98,   -97,  -641,  -641,  -606,  -641,  -641,  -641,  -641,  -183,
-    -641,  -323,  -332,  -641,     6,  -641,     0,  -338,  -641,   -59,
-    -641,  -641,  -641,  -433,  -438,  -280,  -361,  -482,  -641,  -363,
-    -473,  -640,  -404,  -641,  -641,  -415,  -414,  -641,  -641,   -82,
-    -550,  -355,  -641,  -221,  -641,  -376,  -641,  -219,  -641,  -641,
-    -641,  -641,  -216,  -641,  -641,  -641,  -641,  -641,  -641,  -641,
-    -641,   -66,  -641,  -641,  -641,  -641,  -380
+    -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,  -646,  -362,  -646,  -370,  -338,  -413,  -342,  -287,  -285,
+    -281,  -289,  -282,  -280,  -646,  -356,  -646,  -388,  -646,  -376,
+    -407,     1,  -646,  -646,  -646,     2,  -646,  -646,  -646,  -100,
+    -104,   -99,  -646,  -646,  -610,  -646,  -646,  -646,  -646,  -188,
+    -646,  -325,  -332,  -646,     6,  -646,     0,  -331,  -646,   -58,
+    -646,  -646,  -646,  -436,  -443,  -283,  -361,  -457,  -646,  -363,
+    -458,  -645,  -403,  -646,  -646,  -415,  -414,  -646,  -646,   -83,
+    -555,  -354,  -646,  -223,  -646,  -378,  -646,  -218,  -646,  -646,
+    -646,  -646,  -215,  -646,  -646,  -646,  -646,  -646,  -646,  -646,
+    -646,   -65,  -646,  -646,  -646,  -646,  -381
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   419,   420,   421,   597,   422,   423,   424,   425,   426,
-     427,   428,   473,   430,   431,   432,   433,   434,   435,   436,
-     437,   438,   439,   440,   441,   474,   620,   475,   581,   476,
-     546,   477,   323,   503,   397,   478,   325,   326,   327,   357,
-     358,   359,   328,   329,   330,   331,   332,   333,   377,   378,
-     334,   335,   336,   337,   443,   374,   444,   370,   340,   341,
-     342,   451,   380,   454,   455,   551,   552,   501,   592,   481,
-     482,   483,   484,   569,   661,   690,   669,   670,   671,   691,
-     485,   486,   487,   488,   672,   657,   489,   490,   673,   698,
-     491,   492,   493,   633,   557,   628,   651,   667,   668,   494,
-     343,   344,   345,   354,   495,   635,   636
+      -1,   420,   421,   422,   598,   423,   424,   425,   426,   427,
+     428,   429,   474,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   441,   442,   475,   621,   476,   582,   477,
+     547,   478,   324,   504,   398,   479,   326,   327,   328,   358,
+     359,   360,   329,   330,   331,   332,   333,   334,   378,   379,
+     335,   336,   337,   338,   444,   375,   445,   371,   341,   342,
+     343,   452,   381,   455,   456,   552,   553,   502,   593,   482,
+     483,   484,   485,   570,   662,   691,   670,   671,   672,   692,
+     486,   487,   488,   489,   673,   658,   490,   491,   674,   699,
+     492,   493,   494,   634,   558,   629,   652,   668,   669,   495,
+     344,   345,   346,   355,   496,   636,   637
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1366,428 +1367,585 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     339,   322,   324,   367,   360,   460,   338,   461,   462,   500,
-     442,   465,   585,   383,   375,   589,   554,   591,   548,   637,
-     593,   351,   348,   539,   528,   529,   393,   655,   367,   510,
-     511,   686,   391,   360,   369,   689,   532,   533,   369,   445,
-     509,   392,   346,   689,   518,   655,   382,   457,   -34,   369,
-     512,   496,   498,   353,   513,   445,   497,   452,   540,   530,
-     531,   349,   502,   347,   445,   362,   352,   446,   363,   355,
-     594,   590,   449,   447,   394,   429,   515,   395,   450,   596,
-     396,   652,   516,   356,   627,   582,   543,   582,   659,   545,
-     369,   562,   660,   564,   570,   571,   572,   573,   574,   575,
-     576,   577,   578,   579,   505,   364,   653,   506,   640,   693,
-     554,   373,   582,   580,   500,   582,   500,   507,   508,   500,
-     367,   608,   609,   610,   611,   379,   582,   625,   452,   583,
-     626,   452,   582,   600,   389,   630,   520,   697,   625,   598,
-     390,   646,   318,   319,   320,   521,   522,   523,   524,   384,
-     525,   429,   445,   641,   429,   642,   554,   526,   527,   456,
-     663,   582,   632,   504,   585,   582,   664,   604,   605,   448,
-     606,   607,   612,   613,   514,   534,   519,   535,   537,   536,
-     452,   538,   541,   544,   550,   558,   629,   555,   559,   563,
-     631,   556,   560,   566,   565,   568,   567,   -35,   638,   639,
-     -33,   595,   599,   -28,   621,   634,   699,   500,   644,   648,
-     582,   658,   624,   665,  -506,   674,   675,   677,   682,   684,
-     614,   679,   683,   616,   585,   452,   470,   601,   602,   603,
-     429,   429,   429,   429,   429,   429,   429,   429,   429,   429,
-     429,   429,   429,   429,   429,   429,   687,   645,   688,   692,
-     619,   700,   701,   615,   618,   676,   617,   387,   386,   500,
-     654,   376,   350,   388,   647,   649,   685,   547,   695,   623,
-     696,   452,   385,   650,   586,   666,   587,   372,   654,   588,
-     678,   680,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   681,     0,     0,     0,     0,     0,     0,   545,
-       0,     0,     0,     0,     0,   500,     0,     0,   468,   694,
-     656,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   367,     0,     0,   361,   656,     0,
-       0,     0,     0,   338,     0,   368,     0,     0,     0,     0,
-       0,   338,     0,   339,   322,   324,     0,     0,     0,   338,
-     381,     0,     0,     0,     0,     0,   361,     0,     0,     0,
-     361,     0,   338,     0,   429,     0,   338,     0,     0,     0,
+     340,   323,   325,   361,   368,   501,   339,   461,   430,   462,
+     463,   376,   555,   466,   443,   638,   549,   352,   349,   529,
+     530,   384,   370,   540,   656,   446,   354,   687,   586,   368,
+     383,   690,   361,   458,   394,   319,   320,   321,   510,   690,
+     519,   590,   656,   592,   660,   642,   594,   643,   661,   347,
+     508,   509,   511,   512,   531,   532,   453,   350,   541,   497,
+     499,   392,   353,   370,   357,   370,   348,   446,   595,   521,
+     393,   -34,   498,   513,   503,   446,   525,   514,   526,   447,
+     395,   356,   591,   396,   430,   448,   397,   430,   450,   563,
+     544,   565,   516,   546,   451,   597,   653,   654,   517,   694,
+     628,   583,   583,   583,   363,   583,   555,   364,   506,   365,
+     501,   507,   501,   527,   528,   501,   609,   610,   611,   612,
+     583,   368,   626,   584,   370,   627,   374,   453,   583,   601,
+     453,   631,   626,   698,   641,   647,   380,   599,   571,   572,
+     573,   574,   575,   576,   577,   578,   579,   580,   522,   523,
+     524,   385,   555,   533,   534,   605,   606,   581,   583,   633,
+     602,   603,   604,   430,   430,   430,   430,   430,   430,   430,
+     430,   430,   430,   430,   430,   430,   430,   430,   430,   453,
+     586,   583,   665,   390,   630,   391,   664,   446,   632,   607,
+     608,   613,   614,   449,   639,   640,   457,   505,   515,   520,
+     535,   536,   537,   501,   538,   539,   542,   545,   551,   559,
+     556,   557,   560,   564,   561,   566,   568,   596,   600,   567,
+     625,   635,   -35,   -33,   453,   -28,   569,   649,   622,   645,
+     659,   666,   700,  -507,   583,   675,   676,   678,   680,   684,
+     586,   685,   702,   471,   688,   646,   683,   693,   615,   618,
+     689,   616,   677,   387,   701,   501,   617,   619,   655,   377,
+     620,   388,   389,   548,   351,   648,   650,   624,   686,   696,
+     453,   697,   386,   587,   667,   651,   655,   681,   588,   373,
+     679,   589,     0,     0,     0,     0,     0,     0,     0,     0,
+     682,     0,     0,     0,     0,     0,     0,   430,     0,     0,
+       0,   501,     0,   546,     0,     0,     0,   695,     0,   657,
+       0,   469,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   368,     0,   657,   362,     0,
+       0,     0,     0,     0,   339,     0,   369,     0,     0,     0,
+       0,     0,   339,     0,   340,   323,   325,     0,     0,     0,
+     339,   382,     0,     0,     0,     0,     0,   362,     0,     0,
+       0,   362,     0,   339,     0,     0,     0,   339,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     453,     0,     0,     0,   480,     0,   338,     0,     0,     0,
-     479,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   454,     0,     0,     0,   481,     0,   339,     0,     0,
+       0,   480,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   453,   549,     0,   453,     0,     0,   338,   338,     0,
-     338,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   454,   550,     0,   454,     0,     0,   339,   339,
+       0,   339,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   480,     0,     0,     0,     0,
-       0,   479,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   453,     0,     0,     0,     0,     0,   338,
+       0,     0,     0,     0,     0,     0,   481,     0,     0,     0,
+       0,     0,   480,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   454,     0,     0,     0,     0,     0,
+     339,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   454,
+       0,     0,     0,     0,     0,   339,     0,     0,   481,     0,
+       0,     0,     0,     0,   480,     0,     0,     0,     0,     0,
+     481,     0,     0,     0,     0,     0,   480,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   453,     0,
-       0,     0,     0,     0,   338,     0,     0,   480,     0,     0,
-       0,     0,     0,   479,     0,     0,     0,     0,     0,   480,
-       0,     0,     0,     0,     0,   479,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   454,     0,     0,     0,     0,
+       0,   339,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   453,     0,     0,     0,     0,     0,
-     338,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   481,
+       0,     0,     0,     0,   481,   480,     0,     0,   481,     0,
+     480,     0,     0,     0,   480,     0,     0,     0,     0,     0,
+       0,     0,   481,     0,     0,     0,     0,   369,   480,     0,
+       0,     0,     0,   339,     0,     0,     0,     0,     0,     0,
+       0,     0,   481,     0,     0,     0,   481,     0,   480,     0,
+       0,     0,   480,     0,   481,     0,     0,     0,   481,     0,
+     480,     0,     0,     0,   480,     0,     0,     0,   481,     0,
+       0,     0,   372,     0,   480,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+       0,     0,   315,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   480,     0,
-       0,     0,     0,   480,   479,     0,     0,   480,     0,   479,
-       0,     0,     0,   479,     0,     0,     0,     0,     0,     0,
-       0,   480,     0,     0,     0,     0,   368,   479,     0,     0,
-       0,     0,   338,     0,     0,     0,     0,     0,     0,     0,
-       0,   480,     0,     0,     0,   480,     0,   479,     0,     0,
-       0,   479,     0,   480,     0,     0,     0,   480,     0,   479,
-       0,     0,     0,   479,     0,     0,     0,   480,     0,     0,
-       0,   371,     0,   479,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,     0,     0,
-     314,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   316,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   315,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,   321,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,   458,   459,   460,     0,   461,   462,   463,
-     464,   465,   466,   467,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   468,   398,
-     314,   399,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,     0,     0,   411,   412,     0,     0,     0,
+     317,   318,   319,   320,   321,   322,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,   459,   460,   461,     0,   462,
+     463,   464,   465,   466,   467,   468,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   469,   399,   315,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   411,     0,     0,   412,   413,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   413,     0,   469,     0,   470,   471,
-       0,     0,     0,     0,   472,   415,   416,   417,   418,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,   321,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,   458,   459,   460,     0,   461,   462,   463,
-     464,   465,   466,   467,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   468,   398,
-     314,   399,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,     0,     0,   411,   412,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   414,     0,   470,
+       0,   471,   472,     0,     0,     0,     0,   473,   416,   417,
+     418,   419,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   317,   318,   319,   320,   321,   322,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,   459,   460,   461,     0,
+     462,   463,   464,   465,   466,   467,   468,    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,    88,    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,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   469,   399,   315,   400,   401,   402,   403,   404,
+     405,   406,   407,   408,   409,   410,   411,     0,     0,   412,
+     413,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   414,     0,
+     470,     0,   471,   585,     0,     0,     0,     0,   473,   416,
+     417,   418,   419,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   317,   318,   319,   320,   321,   322,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,   459,   460,   461,
+       0,   462,   463,   464,   465,   466,   467,   468,    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,    88,    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,   137,   138,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   469,   399,   315,   400,   401,   402,   403,
+     404,   405,   406,   407,   408,   409,   410,   411,     0,     0,
+     412,   413,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   414,
+       0,   470,     0,   471,     0,     0,     0,     0,     0,   473,
+     416,   417,   418,   419,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   317,   318,   319,   320,   321,   322,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,   459,   460,
+     461,     0,   462,   463,   464,   465,   466,   467,   468,    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,    88,    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,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   469,   399,   315,   400,   401,   402,
+     403,   404,   405,   406,   407,   408,   409,   410,   411,     0,
+       0,   412,   413,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   413,     0,   469,     0,   470,   584,
-       0,     0,     0,     0,   472,   415,   416,   417,   418,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,   321,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,   458,   459,   460,     0,   461,   462,   463,
-     464,   465,   466,   467,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   468,   398,
-     314,   399,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,     0,     0,   411,   412,     0,     0,     0,
+     414,     0,   470,     0,   385,     0,     0,     0,     0,     0,
+     473,   416,   417,   418,   419,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   317,   318,   319,   320,   321,   322,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,   459,
+     460,   461,     0,   462,   463,   464,   465,   466,   467,   468,
+      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,    88,    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,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   469,   399,   315,   400,   401,
+     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
+       0,     0,   412,   413,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   414,     0,   470,     0,     0,     0,     0,     0,     0,
+       0,   473,   416,   417,   418,   419,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   317,   318,   319,   320,   321,
+     322,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    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,    88,
+      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,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,     0,   399,   315,   400,
+     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
+     411,     0,     0,   412,   413,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   414,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   473,   416,   417,   418,   419,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   317,   318,   319,   320,
+     321,   322,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    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,
+      88,    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,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,     0,     0,   315,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   316,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   317,   318,   319,
+     320,   321,   322,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    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,    88,    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,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,     0,   399,
+     315,   400,   401,   402,   403,   404,   405,   406,   407,   408,
+     409,   410,   411,     0,     0,   412,   413,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   414,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   416,   417,   418,   419,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   317,   318,
+     319,   320,   321,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    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,    88,    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,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,     0,   366,
+     315,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   413,     0,   469,     0,   470,     0,
-       0,     0,     0,     0,   472,   415,   416,   417,   418,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,   321,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,   458,   459,   460,     0,   461,   462,   463,
-     464,   465,   466,   467,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   468,   398,
-     314,   399,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,     0,     0,   411,   412,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   413,     0,   469,     0,   384,     0,
-       0,     0,     0,     0,   472,   415,   416,   417,   418,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,   321,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,   458,   459,   460,     0,   461,   462,   463,
-     464,   465,   466,   467,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   468,   398,
-     314,   399,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,     0,     0,   411,   412,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   413,     0,   469,     0,     0,     0,
-       0,     0,     0,     0,   472,   415,   416,   417,   418,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,   321,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,     0,   398,
-     314,   399,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,     0,     0,   411,   412,     0,     0,     0,
+       0,     0,     0,     0,   367,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   317,   318,
+     319,   320,   321,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    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,    88,    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,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,     0,     0,
+     315,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   413,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   472,   415,   416,   417,   418,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,   321,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,     0,     0,
-     314,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   554,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   317,   318,
+     319,   320,   321,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    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,    88,    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,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,     0,     0,
+     315,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   623,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   315,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,   321,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,     0,   398,
-     314,   399,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,     0,     0,   411,   412,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   317,   318,
+     319,   320,   321,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    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,    88,    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,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,     0,     0,
+     315,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   644,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   413,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   415,   416,   417,   418,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   316,   317,
-     318,   319,   320,     1,     2,     3,     4,     5,     6,     7,
+       0,     0,     0,     0,     0,     0,     0,     0,   317,   318,
+     319,   320,   321,     1,     2,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
@@ -1819,26 +1977,23 @@ static const yytype_int16 yytable[] =
      277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
      287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
      297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,     0,   365,   314,
+     307,   308,   309,   310,   311,   312,   313,   314,     0,     0,
+     315,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   366,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   316,   317,   318,
-     319,   320,     1,     2,     3,     4,     5,     6,     7,     8,
+       0,     0,     0,     0,     3,     4,     5,     6,     7,     0,
        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    20,    21,    22,    23,    24,    25,    26,    27,
+      19,     0,     0,     0,     0,     0,     0,     0,   317,   318,
+     319,   320,   321,    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,
+      58,    59,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    69,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    80,    81,    82,    83,    84,    85,    86,    87,
       88,    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,
+      98,    99,   100,   101,   102,   103,     0,     0,     0,     0,
+       0,     0,   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,   137,
      138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
@@ -1858,165 +2013,50 @@ static const yytype_int16 yytable[] =
      278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
      288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
      298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,     0,     0,   314,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   553,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   316,   317,   318,   319,
-     320,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,     0,     0,   314,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   622,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   316,   317,   318,   319,   320,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      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,    88,    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,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,     0,     0,   314,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   643,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   316,   317,   318,   319,   320,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    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,    88,    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,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
-     311,   312,   313,     0,     0,   314,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     308,   309,   310,   311,   312,   313,   314,     0,   399,   315,
+     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
+     410,   411,     0,     0,   412,   413,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     3,
-       4,     5,     6,     7,     0,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
-       0,     0,     0,   316,   317,   318,   319,   320,    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,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    69,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,     0,     0,     0,     0,     0,   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,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-     313,     0,   398,   314,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,     0,     0,   411,   412,
+       0,     0,     0,   414,     0,     0,     0,   500,   663,     0,
+       0,     0,     0,     0,   416,   417,   418,   419,     3,     4,
+       5,     6,     7,     0,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    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,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    69,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+       0,     0,     0,     0,     0,     0,   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,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,     0,   399,   315,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   411,     0,     0,   412,   413,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   413,     0,     0,
-       0,   499,   662,     0,     0,     0,     0,     0,   415,   416,
-     417,   418,     3,     4,     5,     6,     7,     0,     9,    10,
+       0,     0,     0,     0,     0,     0,     0,   414,     0,     0,
+     415,     0,     0,     0,     0,     0,     0,     0,   416,   417,
+     418,   419,     3,     4,     5,     6,     7,     0,     9,    10,
       11,    12,    13,    14,    15,    16,    17,    18,    19,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    21,    22,    23,    24,    25,    26,    27,    28,    29,
@@ -2027,7 +2067,7 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,     0,     0,     0,     0,     0,   109,
+     100,   101,   102,   103,     0,     0,     0,     0,     0,     0,
      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,   137,   138,   139,
@@ -2048,49 +2088,124 @@ static const yytype_int16 yytable[] =
      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
      290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
      300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,     0,   398,   314,   399,   400,   401,
-     402,   403,   404,   405,   406,   407,   408,   409,   410,     0,
-       0,   411,   412,     0,     0,     0,     0,     0,     0,     0,
+     310,   311,   312,   313,   314,     0,   399,   315,   400,   401,
+     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
+       0,     0,   412,   413,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     413,     0,     0,   414,     0,     0,     0,     0,     0,     0,
-       0,   415,   416,   417,   418,     3,     4,     5,     6,     7,
-       0,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    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,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    69,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,     0,     0,     0,
-       0,     0,   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,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
-     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,     0,   398,   314,
-     399,   400,   401,   402,   403,   404,   405,   406,   407,   408,
-     409,   410,     0,     0,   411,   412,     0,     0,     0,     0,
+       0,   414,     0,     0,     0,   500,     0,     0,     0,     0,
+       0,     0,   416,   417,   418,   419,     3,     4,     5,     6,
+       7,     0,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    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,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    69,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,     0,     0,
+       0,     0,     0,     0,   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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,     0,
+     399,   315,   400,   401,   402,   403,   404,   405,   406,   407,
+     408,   409,   410,   411,     0,     0,   412,   413,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   414,     0,     0,   543,     0,
+       0,     0,     0,     0,     0,     0,   416,   417,   418,   419,
+       3,     4,     5,     6,     7,     0,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    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,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    69,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    80,    81,
+      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,     0,     0,     0,     0,     0,     0,   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,   137,   138,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,     0,   399,   315,   400,   401,   402,   403,
+     404,   405,   406,   407,   408,   409,   410,   411,     0,     0,
+     412,   413,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   414,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   562,
+     416,   417,   418,   419,     3,     4,     5,     6,     7,     0,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    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,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    69,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    80,    81,    82,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,     0,     0,     0,     0,
+       0,     0,   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,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,     0,   399,   315,
+     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
+     410,   411,     0,     0,   412,   413,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   413,     0,     0,     0,   499,     0,     0,
-       0,     0,     0,     0,   415,   416,   417,   418,     3,     4,
+       0,     0,     0,   414,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   416,   417,   418,   419,     3,     4,
        5,     6,     7,     0,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    21,    22,    23,
@@ -2102,7 +2217,7 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,     0,     0,    80,    81,    82,    83,
       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-       0,     0,     0,     0,     0,   109,   110,   111,   112,   113,
+       0,     0,     0,     0,     0,     0,   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,   137,   138,   139,   140,   141,   142,   143,
@@ -2123,61 +2238,130 @@ static const yytype_int16 yytable[] =
      284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
      294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
      304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-       0,   398,   314,   399,   400,   401,   402,   403,   404,   405,
-     406,   407,   408,   409,   410,     0,     0,   411,   412,     0,
+     518,     0,   399,   315,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   411,     0,     0,   412,   413,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   413,     0,     0,   542,
-       0,     0,     0,     0,     0,     0,     0,   415,   416,   417,
-     418,     3,     4,     5,     6,     7,     0,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   414,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   416,   417,
+     418,   419,     3,     4,     5,     6,     7,     0,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      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,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    69,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    80,
-      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,     0,     0,     0,     0,     0,   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,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
-     311,   312,   313,     0,   398,   314,   399,   400,   401,   402,
-     403,   404,   405,   406,   407,   408,   409,   410,     0,     0,
-     411,   412,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   413,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   561,
-     415,   416,   417,   418,     3,     4,     5,     6,     7,     0,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+       0,    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,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,     0,     0,     0,     0,     0,     0,
+     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,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,     0,     0,   315
+};
+
+static const yytype_int16 yycheck[] =
+{
+       0,     0,     0,   328,   336,   393,     0,    24,   370,    26,
+      27,    81,   455,    30,   370,   570,   452,   329,   329,   347,
+     348,   352,   366,   352,   634,   366,   374,   672,   486,   361,
+     374,   676,   357,   374,   365,   390,   391,   392,   414,   684,
+     428,   498,   652,   500,   367,   369,   503,   371,   371,   364,
+     412,   413,   345,   346,   382,   383,   381,   368,   387,   390,
+     391,   364,   374,   366,   371,   366,   364,   366,   504,   431,
+     373,   364,   373,   366,   373,   366,   376,   370,   378,   365,
+     368,   365,   373,   371,   446,   371,   374,   449,   365,   465,
+     446,   467,   365,   449,   371,   365,   365,   365,   371,   365,
+     558,   371,   371,   371,   371,   371,   549,   374,   371,   329,
+     498,   374,   500,   343,   344,   503,   529,   530,   531,   532,
+     371,   453,   371,   374,   366,   374,   329,   452,   371,   517,
+     455,   374,   371,   688,   591,   374,   368,   513,   354,   355,
+     356,   357,   358,   359,   360,   361,   362,   363,   379,   380,
+     381,   368,   595,   349,   350,   525,   526,   373,   371,   372,
+     522,   523,   524,   525,   526,   527,   528,   529,   530,   531,
+     532,   533,   534,   535,   536,   537,   538,   539,   540,   504,
+     638,   371,   372,   329,   560,   329,   643,   366,   564,   527,
+     528,   533,   534,   373,   582,   583,   374,   329,   365,   364,
+     386,   385,   384,   591,   351,   353,   367,   329,   329,   364,
+     374,   374,   364,   364,   374,   372,   366,   329,   329,   364,
+     551,   329,   364,   364,   549,   365,   369,   328,   367,   367,
+     364,   364,   689,   368,   371,   329,   365,   367,   369,   365,
+     698,    25,   369,   368,   368,   621,   374,   365,   535,   538,
+     373,   536,   659,   357,   374,   643,   537,   539,   634,   329,
+     540,   361,   361,   451,   322,   626,   629,   550,   671,   684,
+     595,   685,   355,   496,   652,   629,   652,   665,   496,   344,
+     661,   496,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     666,    -1,    -1,    -1,    -1,    -1,    -1,   659,    -1,    -1,
+      -1,   689,    -1,   659,    -1,    -1,    -1,   683,    -1,   634,
+      -1,   328,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   657,    -1,   652,   328,    -1,
+      -1,    -1,    -1,    -1,   328,    -1,   336,    -1,    -1,    -1,
+      -1,    -1,   336,    -1,   344,   344,   344,    -1,    -1,    -1,
+     344,   351,    -1,    -1,    -1,    -1,    -1,   357,    -1,    -1,
+      -1,   361,    -1,   357,    -1,    -1,    -1,   361,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   381,    -1,    -1,    -1,   385,    -1,   381,    -1,    -1,
+      -1,   385,    -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,   452,   453,    -1,   455,    -1,    -1,   452,   453,
+      -1,   455,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   486,    -1,    -1,    -1,
+      -1,    -1,   486,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   504,    -1,    -1,    -1,    -1,    -1,
+     504,    -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,   549,
+      -1,    -1,    -1,    -1,    -1,   549,    -1,    -1,   558,    -1,
+      -1,    -1,    -1,    -1,   558,    -1,    -1,    -1,    -1,    -1,
+     570,    -1,    -1,    -1,    -1,    -1,   570,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   595,    -1,    -1,    -1,    -1,
+      -1,   595,    -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,   629,
+      -1,    -1,    -1,    -1,   634,   629,    -1,    -1,   638,    -1,
+     634,    -1,    -1,    -1,   638,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   652,    -1,    -1,    -1,    -1,   657,   652,    -1,
+      -1,    -1,    -1,   657,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   672,    -1,    -1,    -1,   676,    -1,   672,    -1,
+      -1,    -1,   676,    -1,   684,    -1,    -1,    -1,   688,    -1,
+     684,    -1,    -1,    -1,   688,    -1,    -1,    -1,   698,    -1,
+      -1,    -1,     0,    -1,   698,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    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,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    69,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    80,    81,    82,    83,    84,    85,    86,    87,
+      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,
       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,     0,     0,     0,     0,
-       0,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+      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,   137,
      138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
@@ -2197,24 +2381,104 @@ static const yytype_int16 yytable[] =
      278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
      288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
      298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,     0,   398,   314,   399,
-     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
-     410,     0,     0,   411,   412,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   413,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   415,   416,   417,   418,     3,     4,     5,
-       6,     7,     0,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
+      -1,    -1,   330,    -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,   374,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     388,   389,   390,   391,   392,   393,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    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,    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,    88,    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,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
+     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
+     337,   338,   339,   340,   341,   342,    -1,    -1,   345,   346,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   364,    -1,   366,
+      -1,   368,   369,    -1,    -1,    -1,    -1,   374,   375,   376,
+     377,   378,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   388,   389,   390,   391,   392,   393,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    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,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
+     336,   337,   338,   339,   340,   341,   342,    -1,    -1,   345,
+     346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   364,    -1,
+     366,    -1,   368,   369,    -1,    -1,    -1,    -1,   374,   375,
+     376,   377,   378,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   388,   389,   390,   391,   392,   393,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    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,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    69,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    80,    81,    82,    83,    84,
+      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,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,     0,
-       0,     0,     0,     0,   109,   110,   111,   112,   113,   114,
+      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,   137,   138,   139,   140,   141,   142,   143,   144,
@@ -2234,24 +2498,104 @@ static const yytype_int16 yytable[] =
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   517,     0,
-     398,   314,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,     0,     0,   411,   412,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   413,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   415,   416,   417,   418,
-       3,     4,     5,     6,     7,     0,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,    -1,    -1,
+     345,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   364,
+      -1,   366,    -1,   368,    -1,    -1,    -1,    -1,    -1,   374,
+     375,   376,   377,   378,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   388,   389,   390,   391,   392,   393,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    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,
+      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,    88,    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,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
+     334,   335,   336,   337,   338,   339,   340,   341,   342,    -1,
+      -1,   345,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     364,    -1,   366,    -1,   368,    -1,    -1,    -1,    -1,    -1,
+     374,   375,   376,   377,   378,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   388,   389,   390,   391,   392,   393,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    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,    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,    88,    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,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
+     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
+      -1,    -1,   345,   346,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   364,    -1,   366,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   374,   375,   376,   377,   378,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   388,   389,   390,   391,   392,
+     393,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    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,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    80,    81,
+      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,    88,    89,    90,    91,
       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,     0,     0,     0,     0,     0,   109,   110,   111,
+     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,   137,   138,   139,   140,   141,
@@ -2272,433 +2616,249 @@ static const yytype_int16 yytable[] =
      282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
      292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
      302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     312,   313,     0,     0,   314
-};
-
-static const yytype_int16 yycheck[] =
-{
-       0,     0,     0,   335,   327,    24,     0,    26,    27,   392,
-     369,    30,   485,   351,    81,   497,   454,   499,   451,   569,
-     502,   328,   328,   351,   346,   347,   364,   633,   360,   344,
-     345,   671,   363,   356,   365,   675,   348,   349,   365,   365,
-     413,   372,   363,   683,   427,   651,   373,   373,   363,   365,
-     365,   389,   390,   373,   369,   365,   372,   380,   386,   381,
-     382,   367,   372,   363,   365,   370,   373,   364,   373,   364,
-     503,   372,   364,   370,   367,   369,   364,   370,   370,   364,
-     373,   364,   370,   370,   557,   370,   445,   370,   366,   448,
-     365,   464,   370,   466,   353,   354,   355,   356,   357,   358,
-     359,   360,   361,   362,   370,   328,   364,   373,   590,   364,
-     548,   328,   370,   372,   497,   370,   499,   411,   412,   502,
-     452,   528,   529,   530,   531,   367,   370,   370,   451,   373,
-     373,   454,   370,   516,   328,   373,   430,   687,   370,   512,
-     328,   373,   389,   390,   391,   378,   379,   380,   375,   367,
-     377,   445,   365,   368,   448,   370,   594,   342,   343,   373,
-     642,   370,   371,   328,   637,   370,   371,   524,   525,   372,
-     526,   527,   532,   533,   364,   385,   363,   384,   350,   383,
-     503,   352,   366,   328,   328,   363,   559,   373,   363,   363,
-     563,   373,   373,   363,   371,   368,   365,   363,   581,   582,
-     363,   328,   328,   364,   366,   328,   688,   590,   366,   327,
-     370,   363,   550,   363,   367,   328,   364,   366,   373,    25,
-     534,   368,   364,   536,   697,   548,   367,   521,   522,   523,
-     524,   525,   526,   527,   528,   529,   530,   531,   532,   533,
-     534,   535,   536,   537,   538,   539,   367,   620,   372,   364,
-     539,   373,   368,   535,   538,   658,   537,   360,   356,   642,
-     633,   328,   321,   360,   625,   628,   670,   450,   683,   549,
-     684,   594,   354,   628,   495,   651,   495,   343,   651,   495,
-     660,   664,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   665,    -1,    -1,    -1,    -1,    -1,    -1,   658,
-      -1,    -1,    -1,    -1,    -1,   688,    -1,    -1,   327,   682,
-     633,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   656,    -1,    -1,   327,   651,    -1,
-      -1,    -1,    -1,   327,    -1,   335,    -1,    -1,    -1,    -1,
-      -1,   335,    -1,   343,   343,   343,    -1,    -1,    -1,   343,
-     350,    -1,    -1,    -1,    -1,    -1,   356,    -1,    -1,    -1,
-     360,    -1,   356,    -1,   658,    -1,   360,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     380,    -1,    -1,    -1,   384,    -1,   380,    -1,    -1,    -1,
-     384,    -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,   451,   452,    -1,   454,    -1,    -1,   451,   452,    -1,
-     454,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   485,    -1,    -1,    -1,    -1,
-      -1,   485,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   503,    -1,    -1,    -1,    -1,    -1,   503,
-      -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,   548,    -1,
-      -1,    -1,    -1,    -1,   548,    -1,    -1,   557,    -1,    -1,
-      -1,    -1,    -1,   557,    -1,    -1,    -1,    -1,    -1,   569,
-      -1,    -1,    -1,    -1,    -1,   569,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,
-     594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,   325,   326,   327,    -1,   329,   330,   331,
+     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
+     342,    -1,    -1,   345,   346,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   628,    -1,
-      -1,    -1,    -1,   633,   628,    -1,    -1,   637,    -1,   633,
-      -1,    -1,    -1,   637,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   651,    -1,    -1,    -1,    -1,   656,   651,    -1,    -1,
-      -1,    -1,   656,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   671,    -1,    -1,    -1,   675,    -1,   671,    -1,    -1,
-      -1,   675,    -1,   683,    -1,    -1,    -1,   687,    -1,   683,
-      -1,    -1,    -1,   687,    -1,    -1,    -1,   697,    -1,    -1,
-      -1,     0,    -1,   697,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,    -1,    -1,
-     329,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   364,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   374,   375,   376,   377,   378,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   388,   389,   390,   391,
+     392,   393,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    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,    88,    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,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+     321,   322,   323,   324,   325,   326,   327,    -1,    -1,   330,
       -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,   373,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,   392,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      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,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,    -1,    -1,   344,   345,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   363,    -1,   365,    -1,   367,   368,
-      -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,   392,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      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,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,    -1,    -1,   344,   345,    -1,    -1,    -1,
+      -1,    -1,    -1,   374,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,   389,   390,
+     391,   392,   393,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    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,    88,    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,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,    -1,   329,
+     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
+     340,   341,   342,    -1,    -1,   345,   346,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   363,    -1,   365,    -1,   367,   368,
-      -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,   392,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      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,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,    -1,    -1,   344,   345,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   364,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   375,   376,   377,   378,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,   389,
+     390,   391,   392,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    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,    88,    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,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,    -1,   329,
+     330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   363,    -1,   365,    -1,   367,    -1,
-      -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,   392,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      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,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,    -1,    -1,   344,   345,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   363,    -1,   365,    -1,   367,    -1,
-      -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,   392,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      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,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,    -1,    -1,   344,   345,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   363,    -1,   365,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,   392,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,    -1,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,    -1,    -1,   344,   345,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   374,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,   389,
+     390,   391,   392,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    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,    88,    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,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,    -1,    -1,
+     330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,   392,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,    -1,    -1,
-     329,    -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,   369,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,   389,
+     390,   391,   392,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    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,    88,    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,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,    -1,    -1,
+     330,    -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,   369,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,   389,
+     390,   391,   392,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    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,    88,    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,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,    -1,    -1,
+     330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   373,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,   392,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    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,    88,
-      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,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,    -1,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,    -1,    -1,   344,   345,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   374,   375,   376,   377,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,
-     389,   390,   391,     3,     4,     5,     6,     7,     8,     9,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   369,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,   389,
+     390,   391,   392,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    33,    34,    35,    36,    37,    38,    39,
@@ -2730,26 +2890,23 @@ static const yytype_int16 yycheck[] =
      290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
      300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,   322,   323,   324,   325,   326,    -1,   328,   329,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     320,   321,   322,   323,   324,   325,   326,   327,    -1,    -1,
+     330,    -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,   373,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   387,   388,   389,
-     390,   391,     3,     4,     5,     6,     7,     8,     9,    10,
+      -1,    -1,    -1,    -1,     5,     6,     7,     8,     9,    -1,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    33,    34,    35,    36,    37,    38,    39,    40,
+      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,   389,
+     390,   391,   392,    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,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+      71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    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,
+     111,   112,   113,   114,   115,   116,    -1,    -1,    -1,    -1,
+      -1,    -1,   123,   124,   125,   126,   127,   128,   129,   130,
      131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
      141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
@@ -2769,165 +2926,50 @@ static const yytype_int16 yycheck[] =
      291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
      301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
-     321,   322,   323,   324,   325,   326,    -1,    -1,   329,    -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,   368,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   387,   388,   389,   390,
-     391,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    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,    88,    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,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
-     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
-     322,   323,   324,   325,   326,    -1,    -1,   329,    -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,   368,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   387,   388,   389,   390,   391,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      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,    88,    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,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
-     323,   324,   325,   326,    -1,    -1,   329,    -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,   368,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   387,   388,   389,   390,   391,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    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,    88,    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,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,    -1,    -1,   329,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     321,   322,   323,   324,   325,   326,   327,    -1,   329,   330,
+     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
+     341,   342,    -1,    -1,   345,   346,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
-       6,     7,     8,     9,    -1,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   387,   388,   389,   390,   391,    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,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
-     326,    -1,   328,   329,   330,   331,   332,   333,   334,   335,
-     336,   337,   338,   339,   340,   341,    -1,    -1,   344,   345,
+      -1,    -1,    -1,   364,    -1,    -1,    -1,   368,   369,    -1,
+      -1,    -1,    -1,    -1,   375,   376,   377,   378,     5,     6,
+       7,     8,     9,    -1,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    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,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+      -1,    -1,    -1,    -1,    -1,    -1,   123,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
+     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
+     327,    -1,   329,   330,   331,   332,   333,   334,   335,   336,
+     337,   338,   339,   340,   341,   342,    -1,    -1,   345,   346,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,
-      -1,   367,   368,    -1,    -1,    -1,    -1,    -1,   374,   375,
-     376,   377,     5,     6,     7,     8,     9,    -1,    11,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   364,    -1,    -1,
+     367,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   375,   376,
+     377,   378,     5,     6,     7,     8,     9,    -1,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    34,    35,    36,    37,    38,    39,    40,    41,    42,
@@ -2938,7 +2980,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,    -1,    -1,    -1,    -1,    -1,   122,
+     113,   114,   115,   116,    -1,    -1,    -1,    -1,    -1,    -1,
      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
      143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
@@ -2959,49 +3001,124 @@ static const yytype_int16 yycheck[] =
      293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
      303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
      313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
-     323,   324,   325,   326,    -1,   328,   329,   330,   331,   332,
-     333,   334,   335,   336,   337,   338,   339,   340,   341,    -1,
-      -1,   344,   345,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     323,   324,   325,   326,   327,    -1,   329,   330,   331,   332,
+     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
+      -1,    -1,   345,   346,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     363,    -1,    -1,   366,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   374,   375,   376,   377,     5,     6,     7,     8,     9,
-      -1,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    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,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    93,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,    -1,    -1,    -1,
-      -1,    -1,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,   322,   323,   324,   325,   326,    -1,   328,   329,
-     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
-     340,   341,    -1,    -1,   344,   345,    -1,    -1,    -1,    -1,
+      -1,   364,    -1,    -1,    -1,   368,    -1,    -1,    -1,    -1,
+      -1,    -1,   375,   376,   377,   378,     5,     6,     7,     8,
+       9,    -1,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    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,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,    -1,    -1,
+      -1,    -1,    -1,    -1,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,    -1,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
+     339,   340,   341,   342,    -1,    -1,   345,   346,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   364,    -1,    -1,   367,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   375,   376,   377,   378,
+       5,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    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,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,    -1,    -1,    -1,    -1,    -1,    -1,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,    -1,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,    -1,    -1,
+     345,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   364,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   374,
+     375,   376,   377,   378,     5,     6,     7,     8,     9,    -1,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    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,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,    -1,    -1,    -1,    -1,
+      -1,    -1,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+     321,   322,   323,   324,   325,   326,   327,    -1,   329,   330,
+     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
+     341,   342,    -1,    -1,   345,   346,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   363,    -1,    -1,    -1,   367,    -1,    -1,
-      -1,    -1,    -1,    -1,   374,   375,   376,   377,     5,     6,
+      -1,    -1,    -1,   364,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   375,   376,   377,   378,     5,     6,
        7,     8,     9,    -1,    11,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    34,    35,    36,
@@ -3013,7 +3130,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-      -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,
+      -1,    -1,    -1,    -1,    -1,    -1,   123,   124,   125,   126,
      127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
      137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
      147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
@@ -3034,156 +3151,44 @@ static const yytype_int16 yycheck[] =
      297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
      307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
      317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
-      -1,   328,   329,   330,   331,   332,   333,   334,   335,   336,
-     337,   338,   339,   340,   341,    -1,    -1,   344,   345,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,   366,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   374,   375,   376,
-     377,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
+     327,    -1,   329,   330,   331,   332,   333,   334,   335,   336,
+     337,   338,   339,   340,   341,   342,    -1,    -1,   345,   346,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      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,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,    -1,   328,   329,   330,   331,   332,   333,
-     334,   335,   336,   337,   338,   339,   340,   341,    -1,    -1,
-     344,   345,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   363,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,
-     374,   375,   376,   377,     5,     6,     7,     8,     9,    -1,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    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,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,    -1,    -1,    -1,    -1,
-      -1,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
-     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
-     321,   322,   323,   324,   325,   326,    -1,   328,   329,   330,
-     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
-     341,    -1,    -1,   344,   345,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   364,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   375,   376,
+     377,   378,     5,     6,     7,     8,     9,    -1,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   374,   375,   376,   377,     5,     6,     7,
-       8,     9,    -1,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    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,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,    -1,
-      -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
-     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
-     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
-     318,   319,   320,   321,   322,   323,   324,   325,   326,    -1,
-     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
-     338,   339,   340,   341,    -1,    -1,   344,   345,    -1,    -1,
+      -1,    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,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   374,   375,   376,   377,
-       5,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    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,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,    -1,    -1,   329
+      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,    -1,    -1,    -1,    -1,    -1,    -1,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
+     323,   324,   325,   326,   327,    -1,    -1,   330
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -3221,108 +3226,108 @@ static const yytype_uint16 yystos[] =
      293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
      303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
      313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
-     323,   324,   325,   326,   329,   373,   387,   388,   389,   390,
-     391,   392,   427,   428,   431,   432,   433,   434,   438,   439,
-     440,   441,   442,   443,   446,   447,   448,   449,   450,   452,
-     454,   455,   456,   496,   497,   498,   363,   363,   328,   367,
-     455,   328,   373,   373,   499,   364,   370,   435,   436,   437,
-     447,   452,   370,   373,   328,   328,   373,   448,   452,   365,
-     453,     0,   497,   328,   451,    81,   328,   444,   445,   367,
-     458,   452,   373,   453,   367,   475,   436,   435,   437,   328,
-     328,   363,   372,   453,   367,   370,   373,   430,   328,   330,
+     323,   324,   325,   326,   327,   330,   374,   388,   389,   390,
+     391,   392,   393,   428,   429,   432,   433,   434,   435,   439,
+     440,   441,   442,   443,   444,   447,   448,   449,   450,   451,
+     453,   455,   456,   457,   497,   498,   499,   364,   364,   329,
+     368,   456,   329,   374,   374,   500,   365,   371,   436,   437,
+     438,   448,   453,   371,   374,   329,   329,   374,   449,   453,
+     366,   454,     0,   498,   329,   452,    81,   329,   445,   446,
+     368,   459,   453,   374,   454,   368,   476,   437,   436,   438,
+     329,   329,   364,   373,   454,   368,   371,   374,   431,   329,
      331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
-     341,   344,   345,   363,   366,   374,   375,   376,   377,   397,
-     398,   399,   401,   402,   403,   404,   405,   406,   407,   408,
+     341,   342,   345,   346,   364,   367,   375,   376,   377,   378,
+     398,   399,   400,   402,   403,   404,   405,   406,   407,   408,
      409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
-     419,   420,   421,   450,   452,   365,   364,   370,   372,   364,
-     370,   457,   447,   452,   459,   460,   373,   373,    22,    23,
-      24,    26,    27,    28,    29,    30,    31,    32,   327,   365,
-     367,   368,   373,   408,   421,   423,   425,   427,   431,   450,
-     452,   465,   466,   467,   468,   476,   477,   478,   479,   482,
-     483,   486,   487,   488,   495,   500,   453,   372,   453,   367,
-     423,   463,   372,   429,   328,   370,   373,   408,   408,   425,
-     344,   345,   365,   369,   364,   364,   370,   326,   423,   363,
-     408,   378,   379,   380,   375,   377,   342,   343,   346,   347,
-     381,   382,   348,   349,   385,   384,   383,   350,   352,   351,
-     386,   366,   366,   421,   328,   421,   426,   445,   459,   452,
-     328,   461,   462,   368,   460,   373,   373,   490,   363,   363,
-     373,   373,   425,   363,   425,   371,   363,   365,   368,   469,
-     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
-     372,   424,   370,   373,   368,   466,   479,   483,   488,   463,
-     372,   463,   464,   463,   459,   328,   364,   400,   425,   328,
-     423,   408,   408,   408,   410,   410,   411,   411,   412,   412,
-     412,   412,   413,   413,   414,   415,   416,   417,   418,   419,
-     422,   366,   368,   461,   453,   370,   373,   466,   491,   425,
-     373,   425,   371,   489,   328,   501,   502,   476,   423,   423,
-     463,   368,   370,   368,   366,   425,   373,   462,   327,   465,
-     477,   492,   364,   364,   425,   440,   447,   481,   363,   366,
-     370,   470,   368,   463,   371,   363,   481,   493,   494,   472,
-     473,   474,   480,   484,   328,   364,   426,   366,   502,   368,
-     423,   425,   373,   364,    25,   468,   467,   367,   372,   467,
-     471,   475,   364,   364,   425,   471,   472,   476,   485,   463,
-     373,   368
+     419,   420,   421,   422,   451,   453,   366,   365,   371,   373,
+     365,   371,   458,   448,   453,   460,   461,   374,   374,    22,
+      23,    24,    26,    27,    28,    29,    30,    31,    32,   328,
+     366,   368,   369,   374,   409,   422,   424,   426,   428,   432,
+     451,   453,   466,   467,   468,   469,   477,   478,   479,   480,
+     483,   484,   487,   488,   489,   496,   501,   454,   373,   454,
+     368,   424,   464,   373,   430,   329,   371,   374,   409,   409,
+     426,   345,   346,   366,   370,   365,   365,   371,   327,   424,
+     364,   409,   379,   380,   381,   376,   378,   343,   344,   347,
+     348,   382,   383,   349,   350,   386,   385,   384,   351,   353,
+     352,   387,   367,   367,   422,   329,   422,   427,   446,   460,
+     453,   329,   462,   463,   369,   461,   374,   374,   491,   364,
+     364,   374,   374,   426,   364,   426,   372,   364,   366,   369,
+     470,   354,   355,   356,   357,   358,   359,   360,   361,   362,
+     363,   373,   425,   371,   374,   369,   467,   480,   484,   489,
+     464,   373,   464,   465,   464,   460,   329,   365,   401,   426,
+     329,   424,   409,   409,   409,   411,   411,   412,   412,   413,
+     413,   413,   413,   414,   414,   415,   416,   417,   418,   419,
+     420,   423,   367,   369,   462,   454,   371,   374,   467,   492,
+     426,   374,   426,   372,   490,   329,   502,   503,   477,   424,
+     424,   464,   369,   371,   369,   367,   426,   374,   463,   328,
+     466,   478,   493,   365,   365,   426,   441,   448,   482,   364,
+     367,   371,   471,   369,   464,   372,   364,   482,   494,   495,
+     473,   474,   475,   481,   485,   329,   365,   427,   367,   503,
+     369,   424,   426,   374,   365,    25,   469,   468,   368,   373,
+     468,   472,   476,   365,   365,   426,   472,   473,   477,   486,
+     464,   374,   369
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   396,   397,   398,   398,   398,   398,   398,   398,   398,
-     398,   398,   398,   398,   398,   398,   398,   399,   399,   399,
-     399,   399,   399,   400,   401,   402,   403,   403,   404,   404,
-     405,   405,   406,   407,   407,   407,   408,   408,   408,   408,
-     409,   409,   409,   409,   410,   410,   410,   410,   411,   411,
-     411,   412,   412,   412,   413,   413,   413,   413,   413,   414,
-     414,   414,   415,   415,   416,   416,   417,   417,   418,   418,
-     419,   419,   420,   420,   421,   422,   421,   423,   423,   424,
-     424,   424,   424,   424,   424,   424,   424,   424,   424,   424,
-     425,   425,   426,   427,   427,   427,   427,   427,   427,   427,
-     427,   427,   429,   428,   430,   430,   431,   432,   432,   433,
-     433,   434,   435,   435,   436,   436,   436,   436,   437,   438,
-     438,   438,   438,   438,   439,   439,   439,   439,   439,   440,
-     440,   441,   442,   442,   442,   442,   443,   444,   444,   445,
-     445,   445,   446,   447,   447,   448,   448,   448,   448,   448,
-     448,   448,   449,   449,   449,   449,   449,   449,   449,   449,
-     449,   449,   449,   449,   449,   449,   449,   449,   449,   449,
-     449,   449,   449,   449,   449,   449,   450,   451,   451,   452,
-     452,   453,   453,   453,   453,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
-     455,   455,   455,   457,   456,   458,   456,   459,   459,   460,
-     460,   461,   461,   462,   462,   463,   463,   463,   464,   464,
-     465,   466,   466,   467,   467,   467,   467,   467,   467,   467,
-     468,   469,   470,   468,   471,   471,   473,   472,   474,   472,
-     475,   475,   476,   476,   477,   477,   478,   478,   479,   480,
-     480,   481,   481,   482,   482,   484,   483,   485,   485,   486,
-     486,   487,   487,   489,   488,   490,   488,   491,   488,   492,
-     492,   493,   493,   494,   494,   495,   495,   495,   495,   495,
-     496,   496,   497,   497,   497,   499,   498,   500,   501,   501,
-     502,   502
+       0,   397,   398,   399,   399,   399,   399,   399,   399,   399,
+     399,   399,   399,   399,   399,   399,   399,   400,   400,   400,
+     400,   400,   400,   401,   402,   403,   404,   404,   405,   405,
+     406,   406,   407,   408,   408,   408,   409,   409,   409,   409,
+     410,   410,   410,   410,   411,   411,   411,   411,   412,   412,
+     412,   413,   413,   413,   414,   414,   414,   414,   414,   415,
+     415,   415,   416,   416,   417,   417,   418,   418,   419,   419,
+     420,   420,   421,   421,   422,   423,   422,   424,   424,   425,
+     425,   425,   425,   425,   425,   425,   425,   425,   425,   425,
+     426,   426,   427,   428,   428,   428,   428,   428,   428,   428,
+     428,   428,   430,   429,   431,   431,   432,   433,   433,   434,
+     434,   435,   436,   436,   437,   437,   437,   437,   438,   439,
+     439,   439,   439,   439,   440,   440,   440,   440,   440,   441,
+     441,   442,   443,   443,   443,   443,   443,   444,   445,   445,
+     446,   446,   446,   447,   448,   448,   449,   449,   449,   449,
+     449,   449,   449,   450,   450,   450,   450,   450,   450,   450,
+     450,   450,   450,   450,   450,   450,   450,   450,   450,   450,
+     450,   450,   450,   450,   450,   450,   450,   451,   452,   452,
+     453,   453,   454,   454,   454,   454,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
+     455,   456,   456,   456,   458,   457,   459,   457,   460,   460,
+     461,   461,   462,   462,   463,   463,   464,   464,   464,   465,
+     465,   466,   467,   467,   468,   468,   468,   468,   468,   468,
+     468,   469,   470,   471,   469,   472,   472,   474,   473,   475,
+     473,   476,   476,   477,   477,   478,   478,   479,   479,   480,
+     481,   481,   482,   482,   483,   483,   485,   484,   486,   486,
+     487,   487,   488,   488,   490,   489,   491,   489,   492,   489,
+     493,   493,   494,   494,   495,   495,   496,   496,   496,   496,
+     496,   497,   497,   498,   498,   498,   500,   499,   501,   502,
+     502,   503,   503
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -3341,13 +3346,12 @@ static const yytype_uint8 yyr2[] =
        3,     4,     0,     6,     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,     1,     4,     1,     3,     1,
-       3,     1,     1,     1,     2,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     1,     1,     1,     1,     1,     1,     4,     1,     3,
+       1,     3,     1,     1,     1,     2,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     4,     1,     1,     3,     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,     4,     1,     1,     3,
+       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,
@@ -3375,16 +3379,17 @@ static const yytype_uint8 yyr2[] =
        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,     0,     6,     0,     5,     1,     2,     3,
-       4,     1,     3,     1,     2,     1,     3,     4,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     0,     0,     5,     1,     1,     0,     2,     0,     2,
-       2,     3,     1,     2,     1,     2,     1,     2,     5,     3,
-       1,     1,     4,     1,     2,     0,     8,     0,     1,     3,
-       2,     1,     2,     0,     6,     0,     8,     0,     7,     1,
-       1,     1,     0,     2,     3,     2,     2,     2,     3,     2,
-       1,     2,     1,     1,     1,     0,     3,     5,     1,     3,
-       1,     4
+       1,     1,     1,     1,     0,     6,     0,     5,     1,     2,
+       3,     4,     1,     3,     1,     2,     1,     3,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     0,     0,     5,     1,     1,     0,     2,     0,
+       2,     2,     3,     1,     2,     1,     2,     1,     2,     5,
+       3,     1,     1,     4,     1,     2,     0,     8,     0,     1,
+       3,     2,     1,     2,     0,     6,     0,     8,     0,     7,
+       1,     1,     1,     0,     2,     3,     2,     2,     2,     3,
+       2,     1,     2,     1,     1,     1,     0,     3,     5,     1,
+       3,     1,     4
 };
 
 
@@ -4071,7 +4076,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
     }
-#line 4075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 3:
@@ -4079,7 +4084,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 4:
@@ -4088,7 +4093,7 @@ yyreduce:
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 5:
@@ -4097,7 +4102,7 @@ yyreduce:
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 6:
@@ -4105,7 +4110,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 7:
@@ -4114,7 +4119,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -4123,7 +4128,7 @@ yyreduce:
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
     }
-#line 4127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 9:
@@ -4132,7 +4137,7 @@ yyreduce:
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
     }
-#line 4136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 10:
@@ -4141,7 +4146,7 @@ yyreduce:
         parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 11:
@@ -4150,7 +4155,7 @@ yyreduce:
         parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 12:
@@ -4158,7 +4163,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
     }
-#line 4162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 13:
@@ -4167,7 +4172,7 @@ yyreduce:
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
     }
-#line 4171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 14:
@@ -4176,7 +4181,7 @@ yyreduce:
         parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
     }
-#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 15:
@@ -4184,7 +4189,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
     }
-#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 16:
@@ -4194,7 +4199,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
             (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
     }
-#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 17:
@@ -4202,7 +4207,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 18:
@@ -4210,7 +4215,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 19:
@@ -4218,7 +4223,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -4226,7 +4231,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
     }
-#line 4230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 21:
@@ -4236,7 +4241,7 @@ yyreduce:
         parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 22:
@@ -4246,7 +4251,7 @@ yyreduce:
         parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 23:
@@ -4255,7 +4260,7 @@ yyreduce:
         parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 24:
@@ -4264,7 +4269,7 @@ yyreduce:
         (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
         delete (yyvsp[0].interm).function;
     }
-#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 25:
@@ -4272,7 +4277,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 4276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 26:
@@ -4281,7 +4286,7 @@ yyreduce:
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 4285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 27:
@@ -4290,7 +4295,7 @@ yyreduce:
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 4294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 28:
@@ -4298,7 +4303,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 4302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 29:
@@ -4306,7 +4311,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 4310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 30:
@@ -4318,7 +4323,7 @@ yyreduce:
         (yyval.interm).function = (yyvsp[-1].interm).function;
         (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 31:
@@ -4330,7 +4335,7 @@ yyreduce:
         (yyval.interm).function = (yyvsp[-2].interm).function;
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
     }
-#line 4334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 32:
@@ -4338,7 +4343,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 4342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 33:
@@ -4348,7 +4353,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 4352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 34:
@@ -4380,7 +4385,7 @@ yyreduce:
             (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull);
         }
     }
-#line 4384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 35:
@@ -4390,7 +4395,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 4394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 36:
@@ -4401,7 +4406,7 @@ yyreduce:
         if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
             parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
     }
-#line 4405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 37:
@@ -4410,7 +4415,7 @@ yyreduce:
         parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
     }
-#line 4414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 38:
@@ -4419,7 +4424,7 @@ yyreduce:
         parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
     }
-#line 4423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 39:
@@ -4440,38 +4445,38 @@ yyreduce:
                 (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
         }
     }
-#line 4444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 40:
 #line 519 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 4450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 41:
 #line 520 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 4456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 42:
 #line 521 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 4462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 43:
 #line 522 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
               parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 4469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 44:
 #line 528 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 45:
@@ -4481,7 +4486,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 46:
@@ -4491,7 +4496,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 47:
@@ -4502,13 +4507,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 48:
 #line 548 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 49:
@@ -4518,7 +4523,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 50:
@@ -4528,13 +4533,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 51:
 #line 562 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 52:
@@ -4545,7 +4550,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4554 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 53:
@@ -4556,13 +4561,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 54:
 #line 578 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 55:
@@ -4572,7 +4577,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 56:
@@ -4582,7 +4587,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 57:
@@ -4592,7 +4597,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 58:
@@ -4602,13 +4607,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 59:
 #line 602 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 60:
@@ -4621,7 +4626,7 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 61:
@@ -4634,13 +4639,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 62:
 #line 622 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 63:
@@ -4651,13 +4656,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 64:
 #line 632 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 65:
@@ -4668,13 +4673,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 66:
 #line 642 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 67:
@@ -4685,13 +4690,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 68:
 #line 652 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 69:
@@ -4701,13 +4706,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 70:
 #line 661 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 71:
@@ -4717,13 +4722,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 72:
 #line 670 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 73:
@@ -4733,13 +4738,13 @@ yyreduce:
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 74:
 #line 679 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 75:
@@ -4747,7 +4752,7 @@ yyreduce:
     {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 76:
@@ -4764,13 +4769,13 @@ yyreduce:
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 4768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4773 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 77:
 #line 698 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 78:
@@ -4788,7 +4793,7 @@ yyreduce:
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
         }
     }
-#line 4792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 79:
@@ -4797,7 +4802,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAssign;
     }
-#line 4801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 80:
@@ -4806,7 +4811,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpMulAssign;
     }
-#line 4810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 81:
@@ -4815,7 +4820,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpDivAssign;
     }
-#line 4819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 82:
@@ -4825,7 +4830,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpModAssign;
     }
-#line 4829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 83:
@@ -4834,7 +4839,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAddAssign;
     }
-#line 4838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 84:
@@ -4843,7 +4848,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpSubAssign;
     }
-#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 85:
@@ -4852,7 +4857,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
     }
-#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 86:
@@ -4861,7 +4866,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
     }
-#line 4865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 87:
@@ -4870,7 +4875,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
     }
-#line 4874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 88:
@@ -4879,7 +4884,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
     }
-#line 4883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 89:
@@ -4888,7 +4893,7 @@ yyreduce:
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
     }
-#line 4892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 90:
@@ -4896,7 +4901,7 @@ yyreduce:
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 91:
@@ -4909,7 +4914,7 @@ yyreduce:
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 4913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 92:
@@ -4918,7 +4923,7 @@ yyreduce:
         parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 93:
@@ -4928,7 +4933,7 @@ yyreduce:
         (yyval.interm.intermNode) = 0;
         // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
     }
-#line 4932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 94:
@@ -4938,7 +4943,7 @@ yyreduce:
             (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
     }
-#line 4942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 95:
@@ -4951,7 +4956,7 @@ yyreduce:
         parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
         (yyval.interm.intermNode) = 0;
     }
-#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 96:
@@ -4960,7 +4965,7 @@ yyreduce:
         parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
         (yyval.interm.intermNode) = 0;
     }
-#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 97:
@@ -4969,7 +4974,7 @@ yyreduce:
         parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 98:
@@ -4978,7 +4983,7 @@ yyreduce:
         parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
         (yyval.interm.intermNode) = 0;
     }
-#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 99:
@@ -4988,7 +4993,7 @@ yyreduce:
         parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
         (yyval.interm.intermNode) = 0;
     }
-#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 100:
@@ -4998,7 +5003,7 @@ yyreduce:
         parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 5002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 101:
@@ -5009,13 +5014,13 @@ yyreduce:
         parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
         (yyval.interm.intermNode) = 0;
     }
-#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 102:
 #line 833 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 5019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 103:
@@ -5029,7 +5034,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[-5].interm.type).loc;
         (yyval.interm).typeList = (yyvsp[-1].interm.typeList);
     }
-#line 5033 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 104:
@@ -5038,7 +5043,7 @@ yyreduce:
         (yyval.interm.identifierList) = new TIdentifierList;
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 5042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 105:
@@ -5047,7 +5052,7 @@ yyreduce:
         (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 5051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 106:
@@ -5056,7 +5061,7 @@ yyreduce:
         (yyval.interm).function = (yyvsp[-1].interm.function);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 5060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 107:
@@ -5064,7 +5069,7 @@ yyreduce:
     {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 5068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 108:
@@ -5072,7 +5077,7 @@ yyreduce:
     {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 5076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 109:
@@ -5085,7 +5090,7 @@ yyreduce:
         else
             delete (yyvsp[0].interm).param.type;
     }
-#line 5089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 110:
@@ -5107,7 +5112,7 @@ yyreduce:
             (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
         }
     }
-#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 111:
@@ -5131,7 +5136,7 @@ yyreduce:
         function = new TFunction((yyvsp[-1].lex).string, type);
         (yyval.interm.function) = function;
     }
-#line 5135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 112:
@@ -5151,7 +5156,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).param = param;
     }
-#line 5155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 113:
@@ -5175,7 +5180,7 @@ yyreduce:
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).param = param;
     }
-#line 5179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 114:
@@ -5191,7 +5196,7 @@ yyreduce:
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
 
     }
-#line 5195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 115:
@@ -5203,7 +5208,7 @@ yyreduce:
         parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 5207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5212 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 116:
@@ -5218,7 +5223,7 @@ yyreduce:
         parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
     }
-#line 5222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 117:
@@ -5230,7 +5235,7 @@ yyreduce:
         parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 5234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 118:
@@ -5241,7 +5246,7 @@ yyreduce:
         if ((yyvsp[0].interm.type).arraySizes)
             parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
     }
-#line 5245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 119:
@@ -5249,7 +5254,7 @@ yyreduce:
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 120:
@@ -5258,7 +5263,7 @@ yyreduce:
         (yyval.interm) = (yyvsp[-2].interm);
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
     }
-#line 5262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 121:
@@ -5267,7 +5272,7 @@ yyreduce:
         (yyval.interm) = (yyvsp[-3].interm);
         parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
     }
-#line 5271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 122:
@@ -5277,7 +5282,7 @@ yyreduce:
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 123:
@@ -5287,7 +5292,7 @@ yyreduce:
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 124:
@@ -5297,7 +5302,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
         parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
     }
-#line 5301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 125:
@@ -5307,7 +5312,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
     }
-#line 5311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 126:
@@ -5317,7 +5322,7 @@ yyreduce:
         (yyval.interm).intermNode = 0;
         parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
     }
-#line 5321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 127:
@@ -5327,7 +5332,7 @@ yyreduce:
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 128:
@@ -5337,7 +5342,7 @@ yyreduce:
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 129:
@@ -5353,7 +5358,7 @@ yyreduce:
 
         parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
     }
-#line 5357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 130:
@@ -5382,7 +5387,7 @@ yyreduce:
              (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
             (yyval.interm.type).qualifier.smooth = true;
     }
-#line 5386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 131:
@@ -5393,7 +5398,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.invariant = true;
     }
-#line 5397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 132:
@@ -5405,7 +5410,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.smooth = true;
     }
-#line 5409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 133:
@@ -5417,7 +5422,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.flat = true;
     }
-#line 5421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 134:
@@ -5433,7 +5438,7 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.nopersp = true;
     }
-#line 5437 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5442 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 135:
@@ -5447,84 +5452,99 @@ yyreduce:
         (yyval.interm.type).qualifier.explicitInterp = true;
 #endif
     }
-#line 5451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 136:
-#line 1150 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1147 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        (yyval.interm.type) = (yyvsp[-1].interm.type);
+#ifdef NV_EXTENSIONS
+        parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV");
+        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
+        parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
+        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
+        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).qualifier.pervertexNV = true;
+#endif
     }
-#line 5459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 137:
-#line 1156 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1160 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[-1].interm.type);
     }
-#line 5467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 138:
-#line 1159 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1166 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.type) = (yyvsp[0].interm.type);
+    }
+#line 5487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 139:
+#line 1169 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[-2].interm.type);
         (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
         parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
     }
-#line 5477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 139:
-#line 1166 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 140:
+#line 1176 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
     }
-#line 5486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 140:
-#line 1170 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 141:
+#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[-2].lex).loc);
         parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
     }
-#line 5495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 141:
-#line 1174 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 142:
+#line 1184 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { // because "shared" is both an identifier and a keyword
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         TString strShared("shared");
         parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
     }
-#line 5505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 142:
-#line 1182 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 143:
+#line 1192 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.noContraction = true;
     }
-#line 5516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 143:
-#line 1191 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 144:
+#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5524 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 144:
-#line 1194 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 145:
+#line 1204 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
         if ((yyval.interm.type).basicType == EbtVoid)
@@ -5533,80 +5553,80 @@ yyreduce:
         (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
         parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
     }
-#line 5537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 145:
-#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
-    }
-#line 5545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 146:
-#line 1208 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 147:
-#line 1211 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 148:
-#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1221 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        // allow inheritance of storage qualifier from block declaration
+        parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 149:
-#line 1219 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 150:
-#line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 151:
-#line 1227 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
+        // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 152:
-#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.type) = (yyvsp[0].interm.type);
+    }
+#line 5617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 153:
+#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqConst;  // will later turn into EvqConstReadOnly, if the initializer is not constant
     }
-#line 5606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 154:
+#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -5619,11 +5639,11 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 5623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 1249 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 155:
+#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -5638,43 +5658,43 @@ yyreduce:
         else
             (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 5642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 155:
-#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 156:
+#line 1273 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqInOut;
     }
-#line 5652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 156:
-#line 1268 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 157:
+#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "in");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
         (yyval.interm.type).qualifier.storage = EvqIn;
     }
-#line 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 157:
-#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 158:
+#line 1284 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "out");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
         (yyval.interm.type).qualifier.storage = EvqOut;
     }
-#line 5674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 1280 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 159:
+#line 1290 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -5682,52 +5702,52 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.centroid = true;
     }
-#line 5686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 1287 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 160:
+#line 1297 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.patch = true;
     }
-#line 5697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 160:
-#line 1293 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 161:
+#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.sample = true;
     }
-#line 5707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 161:
-#line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 162:
+#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqUniform;
     }
-#line 5717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 162:
-#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 163:
+#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqBuffer;
     }
-#line 5727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 163:
-#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 164:
+#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
@@ -5736,185 +5756,185 @@ yyreduce:
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqShared;
     }
-#line 5740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 164:
-#line 1316 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 165:
+#line 1326 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.coherent = true;
     }
-#line 5749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 165:
-#line 1320 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 166:
+#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent");
         (yyval.interm.type).qualifier.devicecoherent = true;
     }
-#line 5759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 167:
+#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent");
         (yyval.interm.type).qualifier.queuefamilycoherent = true;
     }
-#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 167:
-#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 168:
+#line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent");
         (yyval.interm.type).qualifier.workgroupcoherent = true;
     }
-#line 5779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 169:
+#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent");
         (yyval.interm.type).qualifier.subgroupcoherent = true;
     }
-#line 5789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 170:
+#line 1350 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate");
         (yyval.interm.type).qualifier.nonprivate = true;
     }
-#line 5799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 171:
+#line 1355 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.volatil = true;
     }
-#line 5808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 172:
+#line 1359 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.restrict = true;
     }
-#line 5817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 173:
+#line 1363 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.readonly = true;
     }
-#line 5826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 1357 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 174:
+#line 1367 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.writeonly = true;
     }
-#line 5835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 1361 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 175:
+#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
         parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
         parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
     }
-#line 5846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 1367 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 176:
+#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
         parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
         parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
         (yyval.interm.type).init((yyvsp[-3].lex).loc);
     }
-#line 5857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 1376 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 177:
+#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.nonUniform = true;
     }
-#line 5866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 1383 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 178:
+#line 1393 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // TODO
     }
-#line 5874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 179:
+#line 1396 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // TODO: 4.0 semantics: subroutines
         // 1) make sure each identifier is a type declared earlier with SUBROUTINE
         // 2) save all of the identifiers for future comparison with the declared function
     }
-#line 5884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 1394 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 180:
+#line 1404 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
     }
-#line 5893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 1398 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 181:
+#line 1408 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
         (yyval.interm.type) = (yyvsp[-1].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
         (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
     }
-#line 5904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 182:
+#line 1417 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 5914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 183:
+#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm).loc = (yyvsp[-2].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
@@ -5923,20 +5943,20 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 5927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 184:
+#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm) = (yyvsp[-2].interm);
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 5936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 185:
+#line 1434 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm) = (yyvsp[-3].interm);
 
@@ -5944,1814 +5964,1814 @@ yyreduce:
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 5948 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 1434 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 186:
+#line 1444 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtVoid;
     }
-#line 5957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 187:
+#line 1448 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
     }
-#line 5966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 1442 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 188:
+#line 1452 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
     }
-#line 5976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 1447 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 189:
+#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
     }
-#line 5986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 1452 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 190:
+#line 1462 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
     }
-#line 5996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 191:
+#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
     }
-#line 6006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 1462 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 192:
+#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
     }
-#line 6015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 1466 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 193:
+#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
     }
-#line 6025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 194:
+#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
     }
-#line 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 195:
+#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
     }
-#line 6045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 196:
+#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
     }
-#line 6055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 197:
+#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
     }
-#line 6065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 198:
+#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
     }
-#line 6075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 199:
+#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
     }
-#line 6085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 200:
+#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
     }
-#line 6095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 201:
+#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
     }
-#line 6105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 202:
+#line 1521 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
     }
-#line 6114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 203:
+#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(2);
     }
-#line 6124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 1520 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 204:
+#line 1530 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(3);
     }
-#line 6134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 205:
+#line 1535 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(4);
     }
-#line 6144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 1530 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 206:
+#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(2);
     }
-#line 6155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 1536 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 207:
+#line 1546 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(3);
     }
-#line 6166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 1542 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 208:
+#line 1552 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(4);
     }
-#line 6177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 1548 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 209:
+#line 1558 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setVector(2);
     }
-#line 6188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 1554 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 210:
+#line 1564 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setVector(3);
     }
-#line 6199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 1560 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 211:
+#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setVector(4);
     }
-#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 212:
+#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(2);
     }
-#line 6221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 1572 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 213:
+#line 1582 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(3);
     }
-#line 6232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 1578 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 214:
+#line 1588 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(4);
     }
-#line 6243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 215:
+#line 1594 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(2);
     }
-#line 6254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 216:
+#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(3);
     }
-#line 6265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 1596 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 217:
+#line 1606 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(4);
     }
-#line 6276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 1602 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 218:
+#line 1612 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(2);
     }
-#line 6286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 1607 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 219:
+#line 1617 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(3);
     }
-#line 6296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 1612 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 220:
+#line 1622 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(4);
     }
-#line 6306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 1617 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 221:
+#line 1627 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(2);
     }
-#line 6316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 1622 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 222:
+#line 1632 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(3);
     }
-#line 6326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 1627 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 223:
+#line 1637 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(4);
     }
-#line 6336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 1632 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 224:
+#line 1642 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
         (yyval.interm.type).setVector(2);
     }
-#line 6347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 225:
+#line 1648 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
         (yyval.interm.type).setVector(3);
     }
-#line 6358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 226:
+#line 1654 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
         (yyval.interm.type).setVector(4);
     }
-#line 6369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 1650 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 227:
+#line 1660 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
         (yyval.interm.type).setVector(2);
     }
-#line 6380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 1656 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 228:
+#line 1666 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
         (yyval.interm.type).setVector(3);
     }
-#line 6391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 1662 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 229:
+#line 1672 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
         (yyval.interm.type).setVector(4);
     }
-#line 6402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6422 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 1668 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 230:
+#line 1678 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(2);
     }
-#line 6413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 231:
+#line 1684 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(3);
     }
-#line 6424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 232:
+#line 1690 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(4);
     }
-#line 6435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 232:
-#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 233:
+#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
         (yyval.interm.type).setVector(2);
     }
-#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 234:
+#line 1702 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
         (yyval.interm.type).setVector(3);
     }
-#line 6457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 235:
+#line 1708 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
         (yyval.interm.type).setVector(4);
     }
-#line 6468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 235:
-#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 236:
+#line 1714 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(2);
     }
-#line 6479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 236:
-#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 237:
+#line 1720 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(3);
     }
-#line 6490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 238:
+#line 1726 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(4);
     }
-#line 6501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 238:
-#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 239:
+#line 1732 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
         (yyval.interm.type).setVector(2);
     }
-#line 6512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 1728 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 240:
+#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
         (yyval.interm.type).setVector(3);
     }
-#line 6523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 240:
-#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 241:
+#line 1744 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
         (yyval.interm.type).setVector(4);
     }
-#line 6534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6554 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 241:
-#line 1740 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 242:
+#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
         (yyval.interm.type).setVector(2);
     }
-#line 6545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 242:
-#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 243:
+#line 1756 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
         (yyval.interm.type).setVector(3);
     }
-#line 6556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 1752 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 244:
+#line 1762 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
         (yyval.interm.type).setVector(4);
     }
-#line 6567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 245:
+#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(2);
     }
-#line 6578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 1764 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 246:
+#line 1774 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(3);
     }
-#line 6589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 247:
+#line 1780 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(4);
     }
-#line 6600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 1776 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 248:
+#line 1786 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(2);
     }
-#line 6611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 1782 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 249:
+#line 1792 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(3);
     }
-#line 6622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 250:
+#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(4);
     }
-#line 6633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 251:
+#line 1804 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 1799 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 252:
+#line 1809 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 1804 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 253:
+#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 1809 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 254:
+#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 255:
+#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 6683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 256:
+#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 6693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 257:
+#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 6703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 258:
+#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 259:
+#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 6723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 260:
+#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 6733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 261:
+#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 6743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 262:
+#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6773 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 263:
+#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6784 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 1860 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 264:
+#line 1870 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 1866 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 265:
+#line 1876 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 1872 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 266:
+#line 1882 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 267:
+#line 1888 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 6808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 268:
+#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 6819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 1890 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 269:
+#line 1900 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 6830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 270:
+#line 1906 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1902 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 271:
+#line 1912 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 6852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 272:
+#line 1918 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 6863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 273:
+#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 6874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1920 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 274:
+#line 1930 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1926 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 275:
+#line 1936 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1932 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 276:
+#line 1942 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 277:
+#line 1948 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 278:
+#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1950 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 279:
+#line 1960 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 6940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1956 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 280:
+#line 1966 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 6951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1962 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 281:
+#line 1972 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 6962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1968 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 282:
+#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 283:
+#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 6984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1980 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 284:
+#line 1990 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 6995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1986 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 285:
+#line 1996 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 286:
+#line 2002 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 287:
+#line 2008 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 288:
+#line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 289:
+#line 2020 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 2016 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 290:
+#line 2026 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 2022 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 291:
+#line 2032 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 7072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 292:
+#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 293:
+#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 294:
+#line 2050 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 294:
-#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 295:
+#line 2056 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 295:
-#line 2052 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 296:
+#line 2062 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 7127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 296:
-#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 297:
+#line 2068 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 297:
-#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 298:
+#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 298:
-#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 299:
+#line 2080 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 2076 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 300:
+#line 2086 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 2082 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 301:
+#line 2092 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 301:
-#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 302:
+#line 2098 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 303:
+#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 7204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 2100 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 304:
+#line 2110 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 2106 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 305:
+#line 2116 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 2112 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 306:
+#line 2122 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7257 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 306:
-#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 307:
+#line 2128 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 307:
-#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 308:
+#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 7259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 308:
-#line 2130 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 309:
+#line 2140 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 309:
-#line 2136 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 310:
+#line 2146 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 310:
-#line 2142 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtAtomicUint;
-    }
-#line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 311:
-#line 2147 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd1D);
-    }
 #line 7301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 312:
+  case 311:
 #line 2152 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
+        parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
+        (yyval.interm.type).basicType = EbtAtomicUint;
     }
 #line 7311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 313:
+  case 312:
 #line 2157 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd1D);
     }
 #line 7321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 314:
+  case 313:
 #line 2162 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
     }
 #line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 315:
+  case 314:
 #line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
     }
 #line 7341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 316:
+  case 315:
 #line 2172 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
     }
 #line 7351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 317:
+  case 316:
 #line 2177 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
     }
 #line 7361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 318:
+  case 317:
 #line 2182 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
     }
 #line 7371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 319:
+  case 318:
 #line 2187 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
     }
 #line 7381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 320:
+  case 319:
 #line 2192 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
     }
 #line 7391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 321:
+  case 320:
 #line 2197 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
     }
 #line 7401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 322:
+  case 321:
 #line 2202 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
     }
 #line 7411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 323:
+  case 322:
 #line 2207 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
     }
 #line 7421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 324:
+  case 323:
 #line 2212 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-#ifdef AMD_EXTENSIONS
-        parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
-#endif
+        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
+    }
+#line 7431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 324:
+#line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
     }
-#line 7434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 325:
-#line 2220 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2222 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
 #endif
     }
-#line 7447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 326:
-#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2230 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
 #endif
     }
-#line 7460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 327:
-#line 2236 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
 #endif
     }
-#line 7473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 328:
-#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2246 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
 #endif
     }
-#line 7486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 329:
-#line 2252 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
 #endif
     }
-#line 7499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 330:
-#line 2260 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2262 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
 #endif
     }
-#line 7512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 331:
-#line 2268 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2270 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
 #endif
     }
-#line 7525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 332:
-#line 2276 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2278 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
 #endif
     }
-#line 7538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 333:
-#line 2284 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2286 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
 #endif
     }
-#line 7551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 334:
-#line 2292 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2294 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
 #endif
     }
-#line 7564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 335:
-#line 2300 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2302 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
 #endif
     }
-#line 7577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 336:
-#line 2308 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2310 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
+        (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
 #endif
     }
-#line 7590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 337:
-#line 2316 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd1D);
-    }
-#line 7600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 338:
-#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2318 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
+#ifdef AMD_EXTENSIONS
+        parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd2D);
+        (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
+#endif
     }
 #line 7610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 339:
+  case 338:
 #line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd3D);
+        (yyval.interm.type).sampler.set(EbtInt, Esd1D);
     }
 #line 7620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 340:
+  case 339:
 #line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, EsdCube);
+        (yyval.interm.type).sampler.set(EbtInt, Esd2D);
     }
 #line 7630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 341:
+  case 340:
 #line 2336 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
+        (yyval.interm.type).sampler.set(EbtInt, Esd3D);
     }
 #line 7640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 342:
+  case 341:
 #line 2341 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtInt, EsdCube);
     }
 #line 7650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 343:
+  case 342:
 #line 2346 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
+        (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
     }
 #line 7660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 344:
+  case 343:
 #line 2351 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd1D);
+        (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
     }
 #line 7670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 345:
+  case 344:
 #line 2356 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd2D);
+        (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
     }
 #line 7680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 346:
+  case 345:
 #line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd3D);
+        (yyval.interm.type).sampler.set(EbtUint, Esd1D);
     }
 #line 7690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 347:
+  case 346:
 #line 2366 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, EsdCube);
+        (yyval.interm.type).sampler.set(EbtUint, Esd2D);
     }
 #line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 348:
+  case 347:
 #line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
+        (yyval.interm.type).sampler.set(EbtUint, Esd3D);
     }
 #line 7710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 349:
+  case 348:
 #line 2376 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtUint, EsdCube);
     }
 #line 7720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 350:
+  case 349:
 #line 2381 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
+        (yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
     }
 #line 7730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 351:
+  case 350:
 #line 2386 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdRect);
+        (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
     }
 #line 7740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 352:
+  case 351:
 #line 2391 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
+        (yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
     }
 #line 7750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 353:
+  case 352:
 #line 2396 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.set(EbtFloat, EsdRect);
+    }
+#line 7760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 353:
+#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
+    }
+#line 7770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 354:
+#line 2406 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
@@ -7759,11 +7779,11 @@ yyreduce:
         (yyval.interm.type).sampler.set(EbtFloat16, EsdRect);
 #endif
     }
-#line 7763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 354:
-#line 2404 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 355:
+#line 2414 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7772,41 +7792,41 @@ yyreduce:
         (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true);
 #endif
     }
-#line 7776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 355:
-#line 2412 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 356:
+#line 2422 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdRect);
     }
-#line 7786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 356:
-#line 2417 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 357:
+#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdRect);
     }
-#line 7796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7816 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 357:
-#line 2422 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 358:
+#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
     }
-#line 7806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 358:
-#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 359:
+#line 2437 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7815,41 +7835,41 @@ yyreduce:
         (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer);
 #endif
     }
-#line 7819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 359:
-#line 2435 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 360:
+#line 2445 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
     }
-#line 7829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 360:
-#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 361:
+#line 2450 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
     }
-#line 7839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 361:
-#line 2445 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 362:
+#line 2455 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
     }
-#line 7849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 362:
-#line 2450 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 363:
+#line 2460 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7858,41 +7878,41 @@ yyreduce:
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true);
 #endif
     }
-#line 7862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 363:
-#line 2458 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 364:
+#line 2468 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
     }
-#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 364:
-#line 2463 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 365:
+#line 2473 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
     }
-#line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 365:
-#line 2468 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 366:
+#line 2478 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
     }
-#line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 366:
-#line 2473 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 367:
+#line 2483 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7901,61 +7921,61 @@ yyreduce:
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true);
 #endif
     }
-#line 7905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 367:
-#line 2481 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 368:
+#line 2491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
     }
-#line 7915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 368:
-#line 2486 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 369:
+#line 2496 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
     }
-#line 7925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 369:
-#line 2491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 370:
+#line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setPureSampler(false);
     }
-#line 7935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 370:
-#line 2496 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 371:
+#line 2506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setPureSampler(true);
     }
-#line 7945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 371:
-#line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 372:
+#line 2511 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
     }
-#line 7955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 372:
-#line 2506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 373:
+#line 2516 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7964,21 +7984,21 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D);
 #endif
     }
-#line 7968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 373:
-#line 2514 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 374:
+#line 2524 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
     }
-#line 7978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 374:
-#line 2519 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 375:
+#line 2529 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7987,21 +8007,21 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D);
 #endif
     }
-#line 7991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 375:
-#line 2527 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 376:
+#line 2537 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
     }
-#line 8001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 376:
-#line 2532 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 377:
+#line 2542 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8010,21 +8030,21 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D);
 #endif
     }
-#line 8014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 377:
-#line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 378:
+#line 2550 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
     }
-#line 8024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 378:
-#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 379:
+#line 2555 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8033,21 +8053,21 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube);
 #endif
     }
-#line 8037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 379:
-#line 2553 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 380:
+#line 2563 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
     }
-#line 8047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 380:
-#line 2558 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 381:
+#line 2568 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8056,21 +8076,21 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true);
 #endif
     }
-#line 8060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 381:
-#line 2566 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 382:
+#line 2576 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
     }
-#line 8070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 382:
-#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 383:
+#line 2581 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8079,21 +8099,21 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true);
 #endif
     }
-#line 8083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 383:
-#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 384:
+#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
     }
-#line 8093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8113 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 384:
-#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 385:
+#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8102,162 +8122,162 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true);
 #endif
     }
-#line 8106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 385:
-#line 2592 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
-    }
-#line 8116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 386:
-#line 2597 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
-    }
 #line 8126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 387:
+  case 386:
 #line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
     }
 #line 8136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 388:
+  case 387:
 #line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
     }
 #line 8146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 389:
+  case 388:
 #line 2612 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
     }
 #line 8156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 390:
+  case 389:
 #line 2617 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
     }
 #line 8166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 391:
+  case 390:
 #line 2622 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
     }
 #line 8176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 392:
+  case 391:
 #line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
     }
 #line 8186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 393:
+  case 392:
 #line 2632 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
+        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
     }
 #line 8196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 394:
+  case 393:
 #line 2637 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
     }
 #line 8206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 395:
+  case 394:
 #line 2642 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
     }
 #line 8216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 396:
+  case 395:
 #line 2647 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
     }
 #line 8226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 397:
+  case 396:
 #line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
     }
 #line 8236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 398:
+  case 397:
 #line 2657 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
     }
 #line 8246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 399:
+  case 398:
 #line 2662 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
     }
 #line 8256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 400:
+  case 399:
 #line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
+    }
+#line 8266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 400:
+#line 2672 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
+    }
+#line 8276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 401:
+#line 2677 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
@@ -8265,41 +8285,41 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect);
 #endif
     }
-#line 8269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 401:
-#line 2675 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 402:
+#line 2685 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
     }
-#line 8279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 402:
-#line 2680 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 403:
+#line 2690 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
     }
-#line 8289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 403:
-#line 2685 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 404:
+#line 2695 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
     }
-#line 8299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 404:
-#line 2690 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 405:
+#line 2700 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8308,41 +8328,41 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer);
 #endif
     }
-#line 8312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 405:
-#line 2698 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 406:
+#line 2708 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
     }
-#line 8322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 406:
-#line 2703 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 407:
+#line 2713 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
     }
-#line 8332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 407:
-#line 2708 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 408:
+#line 2718 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
     }
-#line 8342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 408:
-#line 2713 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 409:
+#line 2723 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8351,41 +8371,41 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true);
 #endif
     }
-#line 8355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 409:
-#line 2721 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 410:
+#line 2731 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
     }
-#line 8365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 410:
-#line 2726 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 411:
+#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
     }
-#line 8375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 411:
-#line 2731 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 412:
+#line 2741 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
     }
-#line 8385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 412:
-#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 413:
+#line 2746 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8394,41 +8414,41 @@ yyreduce:
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true);
 #endif
     }
-#line 8398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 413:
-#line 2744 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 414:
+#line 2754 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
     }
-#line 8408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 414:
-#line 2749 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 415:
+#line 2759 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
     }
-#line 8418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 415:
-#line 2754 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 416:
+#line 2764 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
     }
-#line 8428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 416:
-#line 2759 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 417:
+#line 2769 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8437,41 +8457,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D);
 #endif
     }
-#line 8441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 417:
-#line 2767 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 418:
+#line 2777 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
     }
-#line 8451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 418:
-#line 2772 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 419:
+#line 2782 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
     }
-#line 8461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 419:
-#line 2777 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 420:
+#line 2787 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
     }
-#line 8471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 420:
-#line 2782 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 421:
+#line 2792 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8480,41 +8500,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D);
 #endif
     }
-#line 8484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 421:
-#line 2790 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 422:
+#line 2800 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
     }
-#line 8494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 422:
-#line 2795 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 423:
+#line 2805 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
     }
-#line 8504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8524 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 423:
-#line 2800 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 424:
+#line 2810 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
     }
-#line 8514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 424:
-#line 2805 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 425:
+#line 2815 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8523,41 +8543,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D);
 #endif
     }
-#line 8527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 425:
-#line 2813 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 426:
+#line 2823 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
     }
-#line 8537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 426:
-#line 2818 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 427:
+#line 2828 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
     }
-#line 8547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 427:
-#line 2823 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 428:
+#line 2833 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
     }
-#line 8557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 428:
-#line 2828 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 429:
+#line 2838 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8566,41 +8586,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect);
 #endif
     }
-#line 8570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 429:
-#line 2836 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 430:
+#line 2846 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
     }
-#line 8580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 430:
-#line 2841 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 431:
+#line 2851 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
     }
-#line 8590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 431:
-#line 2846 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 432:
+#line 2856 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
     }
-#line 8600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 432:
-#line 2851 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 433:
+#line 2861 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8609,41 +8629,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube);
 #endif
     }
-#line 8613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 433:
-#line 2859 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 434:
+#line 2869 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
     }
-#line 8623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 434:
-#line 2864 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 435:
+#line 2874 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
     }
-#line 8633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 435:
-#line 2869 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 436:
+#line 2879 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
     }
-#line 8643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 436:
-#line 2874 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 437:
+#line 2884 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8652,41 +8672,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer);
 #endif
     }
-#line 8656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 437:
-#line 2882 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 438:
+#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
     }
-#line 8666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 438:
-#line 2887 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 439:
+#line 2897 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
     }
-#line 8676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 439:
-#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 440:
+#line 2902 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
     }
-#line 8686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 440:
-#line 2897 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 441:
+#line 2907 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8695,41 +8715,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true);
 #endif
     }
-#line 8699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 441:
-#line 2905 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 442:
+#line 2915 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
     }
-#line 8709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 442:
-#line 2910 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 443:
+#line 2920 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
     }
-#line 8719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 443:
-#line 2915 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 444:
+#line 2925 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
     }
-#line 8729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 444:
-#line 2920 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 445:
+#line 2930 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8738,41 +8758,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true);
 #endif
     }
-#line 8742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 445:
-#line 2928 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 446:
+#line 2938 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
     }
-#line 8752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 446:
-#line 2933 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 447:
+#line 2943 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
     }
-#line 8762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 447:
-#line 2938 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 448:
+#line 2948 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
     }
-#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 448:
-#line 2943 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 449:
+#line 2953 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8781,41 +8801,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true);
 #endif
     }
-#line 8785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 449:
-#line 2951 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 450:
+#line 2961 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
     }
-#line 8795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 450:
-#line 2956 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 451:
+#line 2966 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
     }
-#line 8805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 451:
-#line 2961 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 452:
+#line 2971 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
     }
-#line 8815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 452:
-#line 2966 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 453:
+#line 2976 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8824,41 +8844,41 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true);
 #endif
     }
-#line 8828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 453:
-#line 2974 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 454:
+#line 2984 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
     }
-#line 8838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 454:
-#line 2979 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 455:
+#line 2989 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
     }
-#line 8848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 455:
-#line 2984 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 456:
+#line 2994 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
     }
-#line 8858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 456:
-#line 2989 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 457:
+#line 2999 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8867,64 +8887,64 @@ yyreduce:
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true);
 #endif
     }
-#line 8871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 457:
-#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 458:
+#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
     }
-#line 8881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 458:
-#line 3002 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 459:
+#line 3012 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
     }
-#line 8891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 459:
-#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 460:
+#line 3017 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {  // GL_OES_EGL_image_external
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
         (yyval.interm.type).sampler.external = true;
     }
-#line 8902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 460:
-#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 461:
+#line 3023 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat);
     }
-#line 8913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 461:
-#line 3019 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 462:
+#line 3029 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat, true);
     }
-#line 8924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 462:
-#line 3025 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 463:
+#line 3035 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
@@ -8934,11 +8954,11 @@ yyreduce:
         (yyval.interm.type).sampler.setSubpass(EbtFloat16);
 #endif
     }
-#line 8938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 463:
-#line 3034 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 464:
+#line 3044 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
@@ -8948,65 +8968,65 @@ yyreduce:
         (yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
 #endif
     }
-#line 8952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 464:
-#line 3043 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 465:
+#line 3053 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtInt);
     }
-#line 8963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 465:
-#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 466:
+#line 3059 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtInt, true);
     }
-#line 8974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 466:
-#line 3055 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 467:
+#line 3065 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtUint);
     }
-#line 8985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 467:
-#line 3061 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 468:
+#line 3071 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtUint, true);
     }
-#line 8996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 468:
-#line 3067 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 469:
+#line 3077 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
         (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
     }
-#line 9006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 469:
-#line 3072 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 470:
+#line 3082 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         //
         // This is for user defined type names.  The lexical phase looked up the
@@ -9020,47 +9040,47 @@ yyreduce:
         } else
             parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
     }
-#line 9024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 470:
-#line 3088 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 471:
+#line 3098 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
     }
-#line 9034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 471:
-#line 3093 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 472:
+#line 3103 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
     }
-#line 9044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9064 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 472:
-#line 3098 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 473:
+#line 3108 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
     }
-#line 9054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 473:
-#line 3106 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 474:
+#line 3116 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 9060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 474:
-#line 3106 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 475:
+#line 3116 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
         parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -9072,17 +9092,17 @@ yyreduce:
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 9076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 475:
-#line 3117 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 476:
+#line 3127 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 9082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 476:
-#line 3117 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 477:
+#line 3127 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
         (yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -9090,19 +9110,19 @@ yyreduce:
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 9094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 477:
-#line 3127 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 478:
+#line 3137 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
     }
-#line 9102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 478:
-#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 479:
+#line 3140 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
         for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -9113,11 +9133,11 @@ yyreduce:
             (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
         }
     }
-#line 9117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 479:
-#line 3143 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 480:
+#line 3153 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -9140,11 +9160,11 @@ yyreduce:
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 9144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 480:
-#line 3165 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 481:
+#line 3175 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -9169,38 +9189,38 @@ yyreduce:
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 9173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 481:
-#line 3192 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 482:
+#line 3202 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = new TTypeList;
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 9182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 482:
-#line 3196 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 483:
+#line 3206 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 9190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 483:
-#line 3202 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 484:
+#line 3212 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeLine).type = new TType(EbtVoid);
         (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
     }
-#line 9200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 484:
-#line 3207 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 485:
+#line 3217 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
 
@@ -9209,219 +9229,219 @@ yyreduce:
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
         (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
     }
-#line 9213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 485:
-#line 3218 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 486:
+#line 3228 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 9221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 486:
-#line 3221 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 487:
+#line 3231 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         const char* initFeature = "{ } style initializers";
         parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
         parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
         (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
     }
-#line 9232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 487:
-#line 3227 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 488:
+#line 3237 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         const char* initFeature = "{ } style initializers";
         parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
         parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
         (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 9243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 488:
-#line 3236 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 489:
+#line 3246 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
     }
-#line 9251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 489:
-#line 3239 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 490:
+#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
     }
-#line 9259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 490:
-#line 3245 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 491:
-#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3255 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 492:
-#line 3250 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3259 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 493:
-#line 3256 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3260 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 494:
-#line 3257 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3266 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 495:
-#line 3258 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3267 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 496:
-#line 3259 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3268 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 497:
-#line 3260 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3269 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 498:
-#line 3261 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3270 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 499:
-#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3271 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 500:
-#line 3266 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 9325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3272 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 501:
-#line 3267 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3276 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = 0; }
+#line 9345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 502:
+#line 3277 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
     }
-#line 9334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 502:
-#line 3271 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 503:
+#line 3281 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
     }
-#line 9343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9363 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 503:
-#line 3275 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 504:
+#line 3285 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
             (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
     }
-#line 9353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 504:
-#line 3283 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 505:
+#line 3293 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 505:
-#line 3284 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 506:
+#line 3294 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 506:
-#line 3288 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 507:
+#line 3298 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9393 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 507:
-#line 3291 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 508:
+#line 3301 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 508:
-#line 3295 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 509:
+#line 3305 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9412 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 509:
-#line 3300 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 510:
+#line 3310 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 510:
-#line 3309 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 511:
+#line 3319 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
     }
-#line 9411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 511:
-#line 3312 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 512:
+#line 3322 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
             (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
     }
-#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 512:
-#line 3320 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 513:
+#line 3330 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -9430,11 +9450,11 @@ yyreduce:
             (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
         }
     }
-#line 9434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 513:
-#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 514:
+#line 3338 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
                                             (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -9443,76 +9463,76 @@ yyreduce:
         } else
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
     }
-#line 9447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 514:
-#line 3339 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 515:
+#line 3349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = 0; }
-#line 9453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 515:
-#line 3340 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 516:
+#line 3350 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 9459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 516:
-#line 3344 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 517:
+#line 3354 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 517:
-#line 3347 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 518:
+#line 3357 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 518:
-#line 3353 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 519:
+#line 3363 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
         (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
     }
-#line 9485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 519:
-#line 3360 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 520:
+#line 3370 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
     }
-#line 9494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 520:
-#line 3364 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 521:
+#line 3374 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 9503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 521:
-#line 3372 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 522:
+#line 3382 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
     }
-#line 9512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 522:
-#line 3376 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 523:
+#line 3386 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
 
@@ -9523,28 +9543,28 @@ yyreduce:
         else
             (yyval.interm.intermTypedNode) = 0;
     }
-#line 9527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 523:
-#line 3389 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 524:
+#line 3399 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 524:
-#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 525:
+#line 3402 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 525:
-#line 3398 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 526:
+#line 3408 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // start new switch sequence on the switch stack
         ++parseContext.controlFlowNestingLevel;
@@ -9553,11 +9573,11 @@ yyreduce:
         parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
         parseContext.symbolTable.push();
     }
-#line 9557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 526:
-#line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 527:
+#line 3416 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
         delete parseContext.switchSequenceStack.back();
@@ -9567,27 +9587,27 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 9571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 527:
-#line 3418 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 528:
+#line 3428 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
     }
-#line 9579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 528:
-#line 3421 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 529:
+#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 529:
-#line 3427 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 530:
+#line 3437 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -9600,11 +9620,11 @@ yyreduce:
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
         }
     }
-#line 9604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 530:
-#line 3439 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 531:
+#line 3449 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -9614,28 +9634,28 @@ yyreduce:
         else
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
     }
-#line 9618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 531:
-#line 3451 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 532:
+#line 3461 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 532:
-#line 3454 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 533:
+#line 3464 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 533:
-#line 3460 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 534:
+#line 3470 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -9644,11 +9664,11 @@ yyreduce:
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9648 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 534:
-#line 3468 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 535:
+#line 3478 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -9656,21 +9676,21 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 9660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 535:
-#line 3475 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 536:
+#line 3485 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 536:
-#line 3480 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 537:
+#line 3490 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -9682,22 +9702,22 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 9686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 537:
-#line 3491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 538:
+#line 3501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 538:
-#line 3497 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 539:
+#line 3507 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -9710,81 +9730,81 @@ yyreduce:
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 9714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 539:
-#line 3512 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 540:
+#line 3522 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 540:
-#line 3515 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 541:
+#line 3525 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 541:
-#line 3521 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 542:
+#line 3531 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 542:
-#line 3524 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 543:
+#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = 0;
     }
-#line 9746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 543:
-#line 3530 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 544:
+#line 3540 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 9755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 544:
-#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 545:
+#line 3544 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
     }
-#line 9764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9784 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 545:
-#line 3541 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 546:
+#line 3551 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (parseContext.loopNestingLevel <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
     }
-#line 9774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 546:
-#line 3546 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 547:
+#line 3556 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
     }
-#line 9784 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 547:
-#line 3551 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 548:
+#line 3561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -9792,83 +9812,83 @@ yyreduce:
         if (parseContext.inMain)
             parseContext.postEntryPointReturn = true;
     }
-#line 9796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9816 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 548:
-#line 3558 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 549:
+#line 3568 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 9804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 549:
-#line 3561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 550:
+#line 3571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
     }
-#line 9813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 550:
-#line 3570 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 551:
+#line 3580 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
         parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
     }
-#line 9822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 551:
-#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 552:
+#line 3584 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[0].interm.intermNode) != nullptr) {
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
             parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
         }
     }
-#line 9833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 552:
-#line 3583 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 553:
+#line 3593 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 553:
-#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 554:
+#line 3596 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 554:
-#line 3589 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 555:
+#line 3599 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
         parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
         (yyval.interm.intermNode) = nullptr;
     }
-#line 9859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 555:
-#line 3597 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 556:
+#line 3607 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
         (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
     }
-#line 9868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 556:
-#line 3601 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 557:
+#line 3611 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         //   May be best done as post process phase on intermediate code
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -9884,52 +9904,52 @@ yyreduce:
         (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
         (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
     }
-#line 9888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 557:
-#line 3619 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 558:
+#line 3629 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
         parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
     }
-#line 9897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 558:
-#line 3625 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 559:
+#line 3635 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.attributes) = (yyvsp[0].interm.attributes);
     }
-#line 9905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 559:
-#line 3628 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 560:
+#line 3638 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
     }
-#line 9913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 560:
-#line 3633 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 561:
+#line 3643 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
     }
-#line 9921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 561:
-#line 3636 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 562:
+#line 3646 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 9929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
 
-#line 9933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -10157,5 +10177,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 3640 "MachineIndependent/glslang.y" /* yacc.c:1906  */
+#line 3650 "MachineIndependent/glslang.y" /* yacc.c:1906  */
 
index 7534eea..a5f3914 100644 (file)
@@ -164,280 +164,281 @@ extern int yydebug;
     SMOOTH = 374,
     LAYOUT = 375,
     EXPLICITINTERPAMD = 376,
-    MAT2X2 = 377,
-    MAT2X3 = 378,
-    MAT2X4 = 379,
-    MAT3X2 = 380,
-    MAT3X3 = 381,
-    MAT3X4 = 382,
-    MAT4X2 = 383,
-    MAT4X3 = 384,
-    MAT4X4 = 385,
-    DMAT2X2 = 386,
-    DMAT2X3 = 387,
-    DMAT2X4 = 388,
-    DMAT3X2 = 389,
-    DMAT3X3 = 390,
-    DMAT3X4 = 391,
-    DMAT4X2 = 392,
-    DMAT4X3 = 393,
-    DMAT4X4 = 394,
-    F16MAT2X2 = 395,
-    F16MAT2X3 = 396,
-    F16MAT2X4 = 397,
-    F16MAT3X2 = 398,
-    F16MAT3X3 = 399,
-    F16MAT3X4 = 400,
-    F16MAT4X2 = 401,
-    F16MAT4X3 = 402,
-    F16MAT4X4 = 403,
-    F32MAT2X2 = 404,
-    F32MAT2X3 = 405,
-    F32MAT2X4 = 406,
-    F32MAT3X2 = 407,
-    F32MAT3X3 = 408,
-    F32MAT3X4 = 409,
-    F32MAT4X2 = 410,
-    F32MAT4X3 = 411,
-    F32MAT4X4 = 412,
-    F64MAT2X2 = 413,
-    F64MAT2X3 = 414,
-    F64MAT2X4 = 415,
-    F64MAT3X2 = 416,
-    F64MAT3X3 = 417,
-    F64MAT3X4 = 418,
-    F64MAT4X2 = 419,
-    F64MAT4X3 = 420,
-    F64MAT4X4 = 421,
-    ATOMIC_UINT = 422,
-    SAMPLER1D = 423,
-    SAMPLER2D = 424,
-    SAMPLER3D = 425,
-    SAMPLERCUBE = 426,
-    SAMPLER1DSHADOW = 427,
-    SAMPLER2DSHADOW = 428,
-    SAMPLERCUBESHADOW = 429,
-    SAMPLER1DARRAY = 430,
-    SAMPLER2DARRAY = 431,
-    SAMPLER1DARRAYSHADOW = 432,
-    SAMPLER2DARRAYSHADOW = 433,
-    ISAMPLER1D = 434,
-    ISAMPLER2D = 435,
-    ISAMPLER3D = 436,
-    ISAMPLERCUBE = 437,
-    ISAMPLER1DARRAY = 438,
-    ISAMPLER2DARRAY = 439,
-    USAMPLER1D = 440,
-    USAMPLER2D = 441,
-    USAMPLER3D = 442,
-    USAMPLERCUBE = 443,
-    USAMPLER1DARRAY = 444,
-    USAMPLER2DARRAY = 445,
-    SAMPLER2DRECT = 446,
-    SAMPLER2DRECTSHADOW = 447,
-    ISAMPLER2DRECT = 448,
-    USAMPLER2DRECT = 449,
-    SAMPLERBUFFER = 450,
-    ISAMPLERBUFFER = 451,
-    USAMPLERBUFFER = 452,
-    SAMPLERCUBEARRAY = 453,
-    SAMPLERCUBEARRAYSHADOW = 454,
-    ISAMPLERCUBEARRAY = 455,
-    USAMPLERCUBEARRAY = 456,
-    SAMPLER2DMS = 457,
-    ISAMPLER2DMS = 458,
-    USAMPLER2DMS = 459,
-    SAMPLER2DMSARRAY = 460,
-    ISAMPLER2DMSARRAY = 461,
-    USAMPLER2DMSARRAY = 462,
-    SAMPLEREXTERNALOES = 463,
-    F16SAMPLER1D = 464,
-    F16SAMPLER2D = 465,
-    F16SAMPLER3D = 466,
-    F16SAMPLER2DRECT = 467,
-    F16SAMPLERCUBE = 468,
-    F16SAMPLER1DARRAY = 469,
-    F16SAMPLER2DARRAY = 470,
-    F16SAMPLERCUBEARRAY = 471,
-    F16SAMPLERBUFFER = 472,
-    F16SAMPLER2DMS = 473,
-    F16SAMPLER2DMSARRAY = 474,
-    F16SAMPLER1DSHADOW = 475,
-    F16SAMPLER2DSHADOW = 476,
-    F16SAMPLER1DARRAYSHADOW = 477,
-    F16SAMPLER2DARRAYSHADOW = 478,
-    F16SAMPLER2DRECTSHADOW = 479,
-    F16SAMPLERCUBESHADOW = 480,
-    F16SAMPLERCUBEARRAYSHADOW = 481,
-    SAMPLER = 482,
-    SAMPLERSHADOW = 483,
-    TEXTURE1D = 484,
-    TEXTURE2D = 485,
-    TEXTURE3D = 486,
-    TEXTURECUBE = 487,
-    TEXTURE1DARRAY = 488,
-    TEXTURE2DARRAY = 489,
-    ITEXTURE1D = 490,
-    ITEXTURE2D = 491,
-    ITEXTURE3D = 492,
-    ITEXTURECUBE = 493,
-    ITEXTURE1DARRAY = 494,
-    ITEXTURE2DARRAY = 495,
-    UTEXTURE1D = 496,
-    UTEXTURE2D = 497,
-    UTEXTURE3D = 498,
-    UTEXTURECUBE = 499,
-    UTEXTURE1DARRAY = 500,
-    UTEXTURE2DARRAY = 501,
-    TEXTURE2DRECT = 502,
-    ITEXTURE2DRECT = 503,
-    UTEXTURE2DRECT = 504,
-    TEXTUREBUFFER = 505,
-    ITEXTUREBUFFER = 506,
-    UTEXTUREBUFFER = 507,
-    TEXTURECUBEARRAY = 508,
-    ITEXTURECUBEARRAY = 509,
-    UTEXTURECUBEARRAY = 510,
-    TEXTURE2DMS = 511,
-    ITEXTURE2DMS = 512,
-    UTEXTURE2DMS = 513,
-    TEXTURE2DMSARRAY = 514,
-    ITEXTURE2DMSARRAY = 515,
-    UTEXTURE2DMSARRAY = 516,
-    F16TEXTURE1D = 517,
-    F16TEXTURE2D = 518,
-    F16TEXTURE3D = 519,
-    F16TEXTURE2DRECT = 520,
-    F16TEXTURECUBE = 521,
-    F16TEXTURE1DARRAY = 522,
-    F16TEXTURE2DARRAY = 523,
-    F16TEXTURECUBEARRAY = 524,
-    F16TEXTUREBUFFER = 525,
-    F16TEXTURE2DMS = 526,
-    F16TEXTURE2DMSARRAY = 527,
-    SUBPASSINPUT = 528,
-    SUBPASSINPUTMS = 529,
-    ISUBPASSINPUT = 530,
-    ISUBPASSINPUTMS = 531,
-    USUBPASSINPUT = 532,
-    USUBPASSINPUTMS = 533,
-    F16SUBPASSINPUT = 534,
-    F16SUBPASSINPUTMS = 535,
-    IMAGE1D = 536,
-    IIMAGE1D = 537,
-    UIMAGE1D = 538,
-    IMAGE2D = 539,
-    IIMAGE2D = 540,
-    UIMAGE2D = 541,
-    IMAGE3D = 542,
-    IIMAGE3D = 543,
-    UIMAGE3D = 544,
-    IMAGE2DRECT = 545,
-    IIMAGE2DRECT = 546,
-    UIMAGE2DRECT = 547,
-    IMAGECUBE = 548,
-    IIMAGECUBE = 549,
-    UIMAGECUBE = 550,
-    IMAGEBUFFER = 551,
-    IIMAGEBUFFER = 552,
-    UIMAGEBUFFER = 553,
-    IMAGE1DARRAY = 554,
-    IIMAGE1DARRAY = 555,
-    UIMAGE1DARRAY = 556,
-    IMAGE2DARRAY = 557,
-    IIMAGE2DARRAY = 558,
-    UIMAGE2DARRAY = 559,
-    IMAGECUBEARRAY = 560,
-    IIMAGECUBEARRAY = 561,
-    UIMAGECUBEARRAY = 562,
-    IMAGE2DMS = 563,
-    IIMAGE2DMS = 564,
-    UIMAGE2DMS = 565,
-    IMAGE2DMSARRAY = 566,
-    IIMAGE2DMSARRAY = 567,
-    UIMAGE2DMSARRAY = 568,
-    F16IMAGE1D = 569,
-    F16IMAGE2D = 570,
-    F16IMAGE3D = 571,
-    F16IMAGE2DRECT = 572,
-    F16IMAGECUBE = 573,
-    F16IMAGE1DARRAY = 574,
-    F16IMAGE2DARRAY = 575,
-    F16IMAGECUBEARRAY = 576,
-    F16IMAGEBUFFER = 577,
-    F16IMAGE2DMS = 578,
-    F16IMAGE2DMSARRAY = 579,
-    STRUCT = 580,
-    VOID = 581,
-    WHILE = 582,
-    IDENTIFIER = 583,
-    TYPE_NAME = 584,
-    FLOATCONSTANT = 585,
-    DOUBLECONSTANT = 586,
-    INT16CONSTANT = 587,
-    UINT16CONSTANT = 588,
-    INT32CONSTANT = 589,
-    UINT32CONSTANT = 590,
-    INTCONSTANT = 591,
-    UINTCONSTANT = 592,
-    INT64CONSTANT = 593,
-    UINT64CONSTANT = 594,
-    BOOLCONSTANT = 595,
-    FLOAT16CONSTANT = 596,
-    LEFT_OP = 597,
-    RIGHT_OP = 598,
-    INC_OP = 599,
-    DEC_OP = 600,
-    LE_OP = 601,
-    GE_OP = 602,
-    EQ_OP = 603,
-    NE_OP = 604,
-    AND_OP = 605,
-    OR_OP = 606,
-    XOR_OP = 607,
-    MUL_ASSIGN = 608,
-    DIV_ASSIGN = 609,
-    ADD_ASSIGN = 610,
-    MOD_ASSIGN = 611,
-    LEFT_ASSIGN = 612,
-    RIGHT_ASSIGN = 613,
-    AND_ASSIGN = 614,
-    XOR_ASSIGN = 615,
-    OR_ASSIGN = 616,
-    SUB_ASSIGN = 617,
-    LEFT_PAREN = 618,
-    RIGHT_PAREN = 619,
-    LEFT_BRACKET = 620,
-    RIGHT_BRACKET = 621,
-    LEFT_BRACE = 622,
-    RIGHT_BRACE = 623,
-    DOT = 624,
-    COMMA = 625,
-    COLON = 626,
-    EQUAL = 627,
-    SEMICOLON = 628,
-    BANG = 629,
-    DASH = 630,
-    TILDE = 631,
-    PLUS = 632,
-    STAR = 633,
-    SLASH = 634,
-    PERCENT = 635,
-    LEFT_ANGLE = 636,
-    RIGHT_ANGLE = 637,
-    VERTICAL_BAR = 638,
-    CARET = 639,
-    AMPERSAND = 640,
-    QUESTION = 641,
-    INVARIANT = 642,
-    PRECISE = 643,
-    HIGH_PRECISION = 644,
-    MEDIUM_PRECISION = 645,
-    LOW_PRECISION = 646,
-    PRECISION = 647,
-    PACKED = 648,
-    RESOURCE = 649,
-    SUPERP = 650
+    PERVERTEXNV = 377,
+    MAT2X2 = 378,
+    MAT2X3 = 379,
+    MAT2X4 = 380,
+    MAT3X2 = 381,
+    MAT3X3 = 382,
+    MAT3X4 = 383,
+    MAT4X2 = 384,
+    MAT4X3 = 385,
+    MAT4X4 = 386,
+    DMAT2X2 = 387,
+    DMAT2X3 = 388,
+    DMAT2X4 = 389,
+    DMAT3X2 = 390,
+    DMAT3X3 = 391,
+    DMAT3X4 = 392,
+    DMAT4X2 = 393,
+    DMAT4X3 = 394,
+    DMAT4X4 = 395,
+    F16MAT2X2 = 396,
+    F16MAT2X3 = 397,
+    F16MAT2X4 = 398,
+    F16MAT3X2 = 399,
+    F16MAT3X3 = 400,
+    F16MAT3X4 = 401,
+    F16MAT4X2 = 402,
+    F16MAT4X3 = 403,
+    F16MAT4X4 = 404,
+    F32MAT2X2 = 405,
+    F32MAT2X3 = 406,
+    F32MAT2X4 = 407,
+    F32MAT3X2 = 408,
+    F32MAT3X3 = 409,
+    F32MAT3X4 = 410,
+    F32MAT4X2 = 411,
+    F32MAT4X3 = 412,
+    F32MAT4X4 = 413,
+    F64MAT2X2 = 414,
+    F64MAT2X3 = 415,
+    F64MAT2X4 = 416,
+    F64MAT3X2 = 417,
+    F64MAT3X3 = 418,
+    F64MAT3X4 = 419,
+    F64MAT4X2 = 420,
+    F64MAT4X3 = 421,
+    F64MAT4X4 = 422,
+    ATOMIC_UINT = 423,
+    SAMPLER1D = 424,
+    SAMPLER2D = 425,
+    SAMPLER3D = 426,
+    SAMPLERCUBE = 427,
+    SAMPLER1DSHADOW = 428,
+    SAMPLER2DSHADOW = 429,
+    SAMPLERCUBESHADOW = 430,
+    SAMPLER1DARRAY = 431,
+    SAMPLER2DARRAY = 432,
+    SAMPLER1DARRAYSHADOW = 433,
+    SAMPLER2DARRAYSHADOW = 434,
+    ISAMPLER1D = 435,
+    ISAMPLER2D = 436,
+    ISAMPLER3D = 437,
+    ISAMPLERCUBE = 438,
+    ISAMPLER1DARRAY = 439,
+    ISAMPLER2DARRAY = 440,
+    USAMPLER1D = 441,
+    USAMPLER2D = 442,
+    USAMPLER3D = 443,
+    USAMPLERCUBE = 444,
+    USAMPLER1DARRAY = 445,
+    USAMPLER2DARRAY = 446,
+    SAMPLER2DRECT = 447,
+    SAMPLER2DRECTSHADOW = 448,
+    ISAMPLER2DRECT = 449,
+    USAMPLER2DRECT = 450,
+    SAMPLERBUFFER = 451,
+    ISAMPLERBUFFER = 452,
+    USAMPLERBUFFER = 453,
+    SAMPLERCUBEARRAY = 454,
+    SAMPLERCUBEARRAYSHADOW = 455,
+    ISAMPLERCUBEARRAY = 456,
+    USAMPLERCUBEARRAY = 457,
+    SAMPLER2DMS = 458,
+    ISAMPLER2DMS = 459,
+    USAMPLER2DMS = 460,
+    SAMPLER2DMSARRAY = 461,
+    ISAMPLER2DMSARRAY = 462,
+    USAMPLER2DMSARRAY = 463,
+    SAMPLEREXTERNALOES = 464,
+    F16SAMPLER1D = 465,
+    F16SAMPLER2D = 466,
+    F16SAMPLER3D = 467,
+    F16SAMPLER2DRECT = 468,
+    F16SAMPLERCUBE = 469,
+    F16SAMPLER1DARRAY = 470,
+    F16SAMPLER2DARRAY = 471,
+    F16SAMPLERCUBEARRAY = 472,
+    F16SAMPLERBUFFER = 473,
+    F16SAMPLER2DMS = 474,
+    F16SAMPLER2DMSARRAY = 475,
+    F16SAMPLER1DSHADOW = 476,
+    F16SAMPLER2DSHADOW = 477,
+    F16SAMPLER1DARRAYSHADOW = 478,
+    F16SAMPLER2DARRAYSHADOW = 479,
+    F16SAMPLER2DRECTSHADOW = 480,
+    F16SAMPLERCUBESHADOW = 481,
+    F16SAMPLERCUBEARRAYSHADOW = 482,
+    SAMPLER = 483,
+    SAMPLERSHADOW = 484,
+    TEXTURE1D = 485,
+    TEXTURE2D = 486,
+    TEXTURE3D = 487,
+    TEXTURECUBE = 488,
+    TEXTURE1DARRAY = 489,
+    TEXTURE2DARRAY = 490,
+    ITEXTURE1D = 491,
+    ITEXTURE2D = 492,
+    ITEXTURE3D = 493,
+    ITEXTURECUBE = 494,
+    ITEXTURE1DARRAY = 495,
+    ITEXTURE2DARRAY = 496,
+    UTEXTURE1D = 497,
+    UTEXTURE2D = 498,
+    UTEXTURE3D = 499,
+    UTEXTURECUBE = 500,
+    UTEXTURE1DARRAY = 501,
+    UTEXTURE2DARRAY = 502,
+    TEXTURE2DRECT = 503,
+    ITEXTURE2DRECT = 504,
+    UTEXTURE2DRECT = 505,
+    TEXTUREBUFFER = 506,
+    ITEXTUREBUFFER = 507,
+    UTEXTUREBUFFER = 508,
+    TEXTURECUBEARRAY = 509,
+    ITEXTURECUBEARRAY = 510,
+    UTEXTURECUBEARRAY = 511,
+    TEXTURE2DMS = 512,
+    ITEXTURE2DMS = 513,
+    UTEXTURE2DMS = 514,
+    TEXTURE2DMSARRAY = 515,
+    ITEXTURE2DMSARRAY = 516,
+    UTEXTURE2DMSARRAY = 517,
+    F16TEXTURE1D = 518,
+    F16TEXTURE2D = 519,
+    F16TEXTURE3D = 520,
+    F16TEXTURE2DRECT = 521,
+    F16TEXTURECUBE = 522,
+    F16TEXTURE1DARRAY = 523,
+    F16TEXTURE2DARRAY = 524,
+    F16TEXTURECUBEARRAY = 525,
+    F16TEXTUREBUFFER = 526,
+    F16TEXTURE2DMS = 527,
+    F16TEXTURE2DMSARRAY = 528,
+    SUBPASSINPUT = 529,
+    SUBPASSINPUTMS = 530,
+    ISUBPASSINPUT = 531,
+    ISUBPASSINPUTMS = 532,
+    USUBPASSINPUT = 533,
+    USUBPASSINPUTMS = 534,
+    F16SUBPASSINPUT = 535,
+    F16SUBPASSINPUTMS = 536,
+    IMAGE1D = 537,
+    IIMAGE1D = 538,
+    UIMAGE1D = 539,
+    IMAGE2D = 540,
+    IIMAGE2D = 541,
+    UIMAGE2D = 542,
+    IMAGE3D = 543,
+    IIMAGE3D = 544,
+    UIMAGE3D = 545,
+    IMAGE2DRECT = 546,
+    IIMAGE2DRECT = 547,
+    UIMAGE2DRECT = 548,
+    IMAGECUBE = 549,
+    IIMAGECUBE = 550,
+    UIMAGECUBE = 551,
+    IMAGEBUFFER = 552,
+    IIMAGEBUFFER = 553,
+    UIMAGEBUFFER = 554,
+    IMAGE1DARRAY = 555,
+    IIMAGE1DARRAY = 556,
+    UIMAGE1DARRAY = 557,
+    IMAGE2DARRAY = 558,
+    IIMAGE2DARRAY = 559,
+    UIMAGE2DARRAY = 560,
+    IMAGECUBEARRAY = 561,
+    IIMAGECUBEARRAY = 562,
+    UIMAGECUBEARRAY = 563,
+    IMAGE2DMS = 564,
+    IIMAGE2DMS = 565,
+    UIMAGE2DMS = 566,
+    IMAGE2DMSARRAY = 567,
+    IIMAGE2DMSARRAY = 568,
+    UIMAGE2DMSARRAY = 569,
+    F16IMAGE1D = 570,
+    F16IMAGE2D = 571,
+    F16IMAGE3D = 572,
+    F16IMAGE2DRECT = 573,
+    F16IMAGECUBE = 574,
+    F16IMAGE1DARRAY = 575,
+    F16IMAGE2DARRAY = 576,
+    F16IMAGECUBEARRAY = 577,
+    F16IMAGEBUFFER = 578,
+    F16IMAGE2DMS = 579,
+    F16IMAGE2DMSARRAY = 580,
+    STRUCT = 581,
+    VOID = 582,
+    WHILE = 583,
+    IDENTIFIER = 584,
+    TYPE_NAME = 585,
+    FLOATCONSTANT = 586,
+    DOUBLECONSTANT = 587,
+    INT16CONSTANT = 588,
+    UINT16CONSTANT = 589,
+    INT32CONSTANT = 590,
+    UINT32CONSTANT = 591,
+    INTCONSTANT = 592,
+    UINTCONSTANT = 593,
+    INT64CONSTANT = 594,
+    UINT64CONSTANT = 595,
+    BOOLCONSTANT = 596,
+    FLOAT16CONSTANT = 597,
+    LEFT_OP = 598,
+    RIGHT_OP = 599,
+    INC_OP = 600,
+    DEC_OP = 601,
+    LE_OP = 602,
+    GE_OP = 603,
+    EQ_OP = 604,
+    NE_OP = 605,
+    AND_OP = 606,
+    OR_OP = 607,
+    XOR_OP = 608,
+    MUL_ASSIGN = 609,
+    DIV_ASSIGN = 610,
+    ADD_ASSIGN = 611,
+    MOD_ASSIGN = 612,
+    LEFT_ASSIGN = 613,
+    RIGHT_ASSIGN = 614,
+    AND_ASSIGN = 615,
+    XOR_ASSIGN = 616,
+    OR_ASSIGN = 617,
+    SUB_ASSIGN = 618,
+    LEFT_PAREN = 619,
+    RIGHT_PAREN = 620,
+    LEFT_BRACKET = 621,
+    RIGHT_BRACKET = 622,
+    LEFT_BRACE = 623,
+    RIGHT_BRACE = 624,
+    DOT = 625,
+    COMMA = 626,
+    COLON = 627,
+    EQUAL = 628,
+    SEMICOLON = 629,
+    BANG = 630,
+    DASH = 631,
+    TILDE = 632,
+    PLUS = 633,
+    STAR = 634,
+    SLASH = 635,
+    PERCENT = 636,
+    LEFT_ANGLE = 637,
+    RIGHT_ANGLE = 638,
+    VERTICAL_BAR = 639,
+    CARET = 640,
+    AMPERSAND = 641,
+    QUESTION = 642,
+    INVARIANT = 643,
+    PRECISE = 644,
+    HIGH_PRECISION = 645,
+    MEDIUM_PRECISION = 646,
+    LOW_PRECISION = 647,
+    PRECISION = 648,
+    PACKED = 649,
+    RESOURCE = 650,
+    SUPERP = 651
   };
 #endif
 
@@ -481,7 +482,7 @@ union YYSTYPE
         };
     } interm;
 
-#line 485 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
+#line 486 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
index 060232a..69099dc 100644 (file)
@@ -501,6 +501,8 @@ INSTANTIATE_TEST_CASE_P(
     "spv.multiviewPerViewAttributes.vert",
     "spv.multiviewPerViewAttributes.tesc",
     "spv.atomicInt64.comp",
+    "spv.fragmentShaderBarycentric.frag",
+    "spv.fragmentShaderBarycentric2.frag",
 })),
 FileNameAsCustomTestSuffix
 );