Implement 4 AMD-specific extensions.

- Support GL_AMD_shader_ballot (SPV_AMD_shader_ballot).
- Support GL_AMD_shader_trinary_minmax (SPV_AMD_shader_trinary_minmax).
- Support GL_AMD_shader_explicit_vertex_parameter
  (SPV_AMD_shader_explicit_vertex_parameter).
- Support GL_AMD_gcn_shader (SPV_AMD_gcn_shader).
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f2f2355..e9595d1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,12 +1,18 @@
 cmake_minimum_required(VERSION 2.8.12)
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 
+option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" OFF)
+
 enable_testing()
 
 set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix")
 
 project(glslang)
 
+if(ENABLE_AMD_EXTENSIONS)
+    add_definitions(-DAMD_EXTENSIONS)
+endif(ENABLE_AMD_EXTENSIONS)
+
 if(WIN32)
     set(CMAKE_DEBUG_POSTFIX "d")
     include(ChooseMSVCCRT.cmake)
diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
index 5c169b1..9628a82 100755
--- a/SPIRV/CMakeLists.txt
+++ b/SPIRV/CMakeLists.txt
@@ -18,6 +18,11 @@
     doc.h
     disassemble.h)
 
+if(ENABLE_AMD_EXTENSIONS)
+    set(HEADERS
+        GLSL.ext.AMD.h)
+endif(ENABLE_AMD_EXTENSIONS)
+
 add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
 set_property(TARGET SPIRV PROPERTY FOLDER glslang)
 
diff --git a/SPIRV/GLSL.ext.AMD.h b/SPIRV/GLSL.ext.AMD.h
new file mode 100644
index 0000000..633cea0
--- /dev/null
+++ b/SPIRV/GLSL.ext.AMD.h
@@ -0,0 +1,113 @@
+/*
+** Copyright (c) 2014-2016 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a copy
+** of this software and/or associated documentation files (the "Materials"),
+** to deal in the Materials without restriction, including without limitation
+** the rights to use, copy, modify, merge, publish, distribute, sublicense,
+** and/or sell copies of the Materials, and to permit persons to whom the
+** Materials are furnished to do so, subject to the following conditions:
+**
+** The above copyright notice and this permission notice shall be included in
+** all copies or substantial portions of the Materials.
+**
+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
+** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
+** IN THE MATERIALS.
+*/
+
+#ifndef GLSLextAMD_H
+#define GLSLextAMD_H
+
+enum BuiltIn;
+enum Decoration;
+enum Op;
+
+static const int GLSLextAMDVersion = 100;
+static const int GLSLextAMDRevision = 1;
+
+// SPV_AMD_shader_ballot
+static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot";
+
+static const Op OpGroupIAddNonUniformAMD = static_cast<Op>(5000);
+static const Op OpGroupFAddNonUniformAMD = static_cast<Op>(5001);
+static const Op OpGroupFMinNonUniformAMD = static_cast<Op>(5002);
+static const Op OpGroupUMinNonUniformAMD = static_cast<Op>(5003);
+static const Op OpGroupSMinNonUniformAMD = static_cast<Op>(5004);
+static const Op OpGroupFMaxNonUniformAMD = static_cast<Op>(5005);
+static const Op OpGroupUMaxNonUniformAMD = static_cast<Op>(5006);
+static const Op OpGroupSMaxNonUniformAMD = static_cast<Op>(5007);
+
+enum ShaderBallotAMD {
+    ShaderBallotBadAMD = 0, // Don't use
+
+    SwizzleInvocationsAMD = 1,
+    SwizzleInvocationsMaskedAMD = 2,
+    WriteInvocationAMD = 3,
+    MbcntAMD = 4,
+
+    ShaderBallotCountAMD
+};
+
+// SPV_AMD_shader_trinary_minmax
+static const char* const E_SPV_AMD_shader_trinary_minmax = "SPV_AMD_shader_trinary_minmax";
+
+enum ShaderTrinaryMinMaxAMD {
+    ShaderTrinaryMinMaxBadAMD = 0, // Don't use
+
+    FMin3AMD = 1,
+    UMin3AMD = 2,
+    SMin3AMD = 3,
+    FMax3AMD = 4,
+    UMax3AMD = 5,
+    SMax3AMD = 6,
+    FMid3AMD = 7,
+    UMid3AMD = 8,
+    SMid3AMD = 9,
+
+    ShaderTrinaryMinMaxCountAMD
+};
+
+// SPV_AMD_shader_explicit_vertex_parameter
+static const char* const E_SPV_AMD_shader_explicit_vertex_parameter = "SPV_AMD_shader_explicit_vertex_parameter";
+
+static const BuiltIn BuiltInBaryCoordNoPerspAMD           = static_cast<BuiltIn>(4992);
+static const BuiltIn BuiltInBaryCoordNoPerspCentroidAMD   = static_cast<BuiltIn>(4993);
+static const BuiltIn BuiltInBaryCoordNoPerspSampleAMD     = static_cast<BuiltIn>(4994);
+static const BuiltIn BuiltInBaryCoordSmoothAMD            = static_cast<BuiltIn>(4995);
+static const BuiltIn BuiltInBaryCoordSmoothCentroidAMD    = static_cast<BuiltIn>(4996);
+static const BuiltIn BuiltInBaryCoordSmoothSampleAMD      = static_cast<BuiltIn>(4997);
+static const BuiltIn BuiltInBaryCoordPullModelAMD         = static_cast<BuiltIn>(4998);
+
+static const Decoration DecorationExplicitInterpAMD       = static_cast<Decoration>(4999);
+
+enum ShaderExplicitVertexParameterAMD {
+    ShaderExplicitVertexParameterBadAMD = 0, // Don't use
+
+    InterpolateAtVertexAMD = 1,
+
+    ShaderExplicitVertexParameterCountAMD
+};
+
+// SPV_AMD_gcn_shader
+static const char* const E_SPV_AMD_gcn_shader = "SPV_AMD_gcn_shader";
+
+enum GcnShaderAMD {
+    GcnShaderBadAMD = 0, // Don't use
+
+    CubeFaceIndexAMD = 1,
+    CubeFaceCoordAMD = 2,
+    TimeAMD = 3,
+
+    GcnShaderCountAMD
+};
+
+#endif  // #ifndef GLSLextAMD_H
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index dd11304..0fc5730 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -43,6 +43,9 @@
 #include "SpvBuilder.h"
 namespace spv {
    #include "GLSL.std.450.h"
+#ifdef AMD_EXTENSIONS
+   #include "GLSL.ext.AMD.h"
+#endif
 }
 
 // Glslang includes
@@ -147,9 +150,9 @@
     spv::Id createConversion(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id destTypeId, spv::Id operand, glslang::TBasicType typeProxy);
     spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
     spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
-    spv::Id createInvocationsOperation(glslang::TOperator, spv::Id typeId, spv::Id operand);
+    spv::Id createInvocationsOperation(glslang::TOperator, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy);
     spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
-    spv::Id createNoArgOperation(glslang::TOperator op);
+    spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId);
     spv::Id getSymbolId(const glslang::TIntermSymbol* node);
     void addDecoration(spv::Id id, spv::Decoration dec);
     void addDecoration(spv::Id id, spv::Decoration dec, unsigned value);
@@ -160,6 +163,7 @@
     bool isTrivialLeaf(const glslang::TIntermTyped* node);
     bool isTrivial(const glslang::TIntermTyped* node);
     spv::Id createShortCircuit(glslang::TOperator, glslang::TIntermTyped& left, glslang::TIntermTyped& right);
+    spv::Id getExtBuiltins(const char* name);
 
     spv::Function* shaderEntry;
     spv::Instruction* entryPoint;
@@ -175,6 +179,7 @@
     std::set<spv::Id> iOSet;           // all input/output variables from either static use or declaration of interface
     const glslang::TIntermediate* glslangIntermediate;
     spv::Id stdBuiltins;
+    std::unordered_map<const char*, spv::Id> extBuiltinMap;
 
     std::unordered_map<int, spv::Id> symbolValues;
     std::unordered_set<int> constReadOnlyParameters;  // set of formal function parameters that have glslang qualifier constReadOnly, so we know they are not local function "const" that are write-once
@@ -371,6 +376,10 @@
         return spv::DecorationNoPerspective;
     else if (qualifier.flat)
         return spv::DecorationFlat;
+#ifdef AMD_EXTENSIONS
+    else if (qualifier.explicitInterp)
+        return spv::DecorationExplicitInterpAMD;
+#endif
     else
         return spv::DecorationMax;
 }
@@ -508,6 +517,15 @@
         // TODO: Add SPIR-V builtin ID.
         logger->missingFunctionality("shader ballot");
         return spv::BuiltInMax;
+#ifdef AMD_EXTENSIONS
+    case glslang::EbvBaryCoordNoPersp:          return spv::BuiltInBaryCoordNoPerspAMD;
+    case glslang::EbvBaryCoordNoPerspCentroid:  return spv::BuiltInBaryCoordNoPerspCentroidAMD;
+    case glslang::EbvBaryCoordNoPerspSample:    return spv::BuiltInBaryCoordNoPerspSampleAMD;
+    case glslang::EbvBaryCoordSmooth:           return spv::BuiltInBaryCoordSmoothAMD;
+    case glslang::EbvBaryCoordSmoothCentroid:   return spv::BuiltInBaryCoordSmoothCentroidAMD;
+    case glslang::EbvBaryCoordSmoothSample:     return spv::BuiltInBaryCoordSmoothSampleAMD;
+    case glslang::EbvBaryCoordPullModel:        return spv::BuiltInBaryCoordPullModelAMD;
+#endif
     default:                               return spv::BuiltInMax;
     }
 }
@@ -628,6 +646,10 @@
         child.invariant = true;
     if (parent.nopersp)
         child.nopersp = true;
+#ifdef AMD_EXTENSIONS
+    if (parent.explicitInterp)
+        child.explicitInterp = true;
+#endif
     if (parent.flat)
         child.flat = true;
     if (parent.centroid)
@@ -1484,6 +1506,9 @@
             break;
         case glslang::EOpInterpolateAtSample:
         case glslang::EOpInterpolateAtOffset:
+#ifdef AMD_EXTENSIONS
+        case glslang::EOpInterpolateAtVertex:
+#endif
             if (arg == 0)
                 lvalue = true;
             break;
@@ -1524,7 +1549,7 @@
         // Pass through to generic operations.
         switch (glslangOperands.size()) {
         case 0:
-            result = createNoArgOperation(node->getOp());
+            result = createNoArgOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()));
             break;
         case 1:
             result = createUnaryOperation(
@@ -3169,6 +3194,7 @@
 spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy)
 {
     spv::Op unaryOp = spv::OpNop;
+    int extBuiltins = -1;
     int libCall = -1;
     bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
     bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
@@ -3448,7 +3474,32 @@
     case glslang::EOpAnyInvocation:
     case glslang::EOpAllInvocations:
     case glslang::EOpAllInvocationsEqual:
-        return createInvocationsOperation(op, typeId, operand);
+#ifdef AMD_EXTENSIONS
+    case glslang::EOpMinInvocations:
+    case glslang::EOpMaxInvocations:
+    case glslang::EOpAddInvocations:
+    case glslang::EOpMinInvocationsNonUniform:
+    case glslang::EOpMaxInvocationsNonUniform:
+    case glslang::EOpAddInvocationsNonUniform:
+#endif
+        return createInvocationsOperation(op, typeId, operand, typeProxy);
+
+#ifdef AMD_EXTENSIONS
+    case glslang::EOpMbcnt:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot);
+        libCall = spv::MbcntAMD;
+        break;
+
+    case glslang::EOpCubeFaceIndex:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_gcn_shader);
+        libCall = spv::CubeFaceIndexAMD;
+        break;
+
+    case glslang::EOpCubeFaceCoord:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_gcn_shader);
+        libCall = spv::CubeFaceCoordAMD;
+        break;
+#endif
 
     default:
         return 0;
@@ -3458,7 +3509,7 @@
     if (libCall >= 0) {
         std::vector<spv::Id> args;
         args.push_back(operand);
-        id = builder.createBuiltinCall(typeId, stdBuiltins, libCall, args);
+        id = builder.createBuiltinCall(typeId, extBuiltins >= 0 ? extBuiltins : stdBuiltins, libCall, args);
     } else {
         id = builder.createUnaryOp(unaryOp, typeId, operand);
     }
@@ -3765,12 +3816,20 @@
 }
 
 // Create group invocation operations.
-spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, spv::Id operand)
+spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy)
 {
+    bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
+    bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
+
     builder.addCapability(spv::CapabilityGroups);
 
     std::vector<spv::Id> operands;
     operands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
+#ifdef AMD_EXTENSIONS
+    if (op == glslang::EOpMinInvocations || op == glslang::EOpMaxInvocations || op == glslang::EOpAddInvocations ||
+        op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpAddInvocationsNonUniform)
+        operands.push_back(spv::GroupOperationReduce);
+#endif
     operands.push_back(operand);
 
     switch (op) {
@@ -3786,6 +3845,74 @@
         return builder.createBinOp(spv::OpLogicalOr, typeId, groupAll,
                                    builder.createUnaryOp(spv::OpLogicalNot, typeId, groupAny));
     }
+#ifdef AMD_EXTENSIONS
+    case glslang::EOpMinInvocations:
+    case glslang::EOpMaxInvocations:
+    case glslang::EOpAddInvocations:
+    {
+        spv::Op spvOp = spv::OpNop;
+        if (op == glslang::EOpMinInvocations) {
+            if (isFloat)
+                spvOp = spv::OpGroupFMin;
+            else {
+                if (isUnsigned)
+                    spvOp = spv::OpGroupUMin;
+                else
+                    spvOp = spv::OpGroupSMin;
+            }
+        } else if (op == glslang::EOpMaxInvocations) {
+            if (isFloat)
+                spvOp = spv::OpGroupFMax;
+            else {
+                if (isUnsigned)
+                    spvOp = spv::OpGroupUMax;
+                else
+                    spvOp = spv::OpGroupSMax;
+            }
+        } else {
+            if (isFloat)
+                spvOp = spv::OpGroupFAdd;
+            else
+                spvOp = spv::OpGroupIAdd;
+        }
+
+        return builder.createOp(spvOp, typeId, operands);
+    }
+    case glslang::EOpMinInvocationsNonUniform:
+    case glslang::EOpMaxInvocationsNonUniform:
+    case glslang::EOpAddInvocationsNonUniform:
+    {
+        spv::Op spvOp = spv::OpNop;
+        if (op == glslang::EOpMinInvocationsNonUniform) {
+            if (isFloat)
+                spvOp = spv::OpGroupFMinNonUniformAMD;
+            else {
+                if (isUnsigned)
+                    spvOp = spv::OpGroupUMinNonUniformAMD;
+                else
+                    spvOp = spv::OpGroupSMinNonUniformAMD;
+            }
+        }
+        else if (op == glslang::EOpMaxInvocationsNonUniform) {
+            if (isFloat)
+                spvOp = spv::OpGroupFMaxNonUniformAMD;
+            else {
+                if (isUnsigned)
+                    spvOp = spv::OpGroupUMaxNonUniformAMD;
+                else
+                    spvOp = spv::OpGroupSMaxNonUniformAMD;
+            }
+        }
+        else {
+            if (isFloat)
+                spvOp = spv::OpGroupFAddNonUniformAMD;
+            else
+                spvOp = spv::OpGroupIAddNonUniformAMD;
+        }
+
+        return builder.createOp(spvOp, typeId, operands);
+    }
+#endif
     default:
         logger->missingFunctionality("invocation operation");
         return spv::NoResult;
@@ -3798,6 +3925,7 @@
     bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
 
     spv::Op opCode = spv::OpNop;
+    int extBuiltins = -1;
     int libCall = -1;
     size_t consumedOperands = operands.size();
     spv::Id typeId0 = 0;
@@ -3941,6 +4069,60 @@
         libCall = spv::GLSLstd450Bad;
         break;
 
+#ifdef AMD_EXTENSIONS
+    case glslang::EOpSwizzleInvocations:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot);
+        libCall = spv::SwizzleInvocationsAMD;
+        break;
+    case glslang::EOpSwizzleInvocationsMasked:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot);
+        libCall = spv::SwizzleInvocationsMaskedAMD;
+        break;
+    case glslang::EOpWriteInvocation:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot);
+        libCall = spv::WriteInvocationAMD;
+        break;
+
+    case glslang::EOpMin3:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax);
+        if (isFloat)
+            libCall = spv::FMin3AMD;
+        else {
+            if (isUnsigned)
+                libCall = spv::UMin3AMD;
+            else
+                libCall = spv::SMin3AMD;
+        }
+        break;
+    case glslang::EOpMax3:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax);
+        if (isFloat)
+            libCall = spv::FMax3AMD;
+        else {
+            if (isUnsigned)
+                libCall = spv::UMax3AMD;
+            else
+                libCall = spv::SMax3AMD;
+        }
+        break;
+    case glslang::EOpMid3:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax);
+        if (isFloat)
+            libCall = spv::FMid3AMD;
+        else {
+            if (isUnsigned)
+                libCall = spv::UMid3AMD;
+            else
+                libCall = spv::SMid3AMD;
+        }
+        break;
+
+    case glslang::EOpInterpolateAtVertex:
+        extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
+        libCall = spv::InterpolateAtVertexAMD;
+        break;
+#endif
+
     default:
         return 0;
     }
@@ -3951,7 +4133,7 @@
         // Construct the call arguments, without modifying the original operands vector.
         // We might need the remaining arguments, e.g. in the EOpFrexp case.
         std::vector<spv::Id> callArguments(operands.begin(), operands.begin() + consumedOperands);
-        id = builder.createBuiltinCall(typeId, stdBuiltins, libCall, callArguments);
+        id = builder.createBuiltinCall(typeId, extBuiltins >= 0 ? extBuiltins : stdBuiltins, libCall, callArguments);
     } else {
         switch (consumedOperands) {
         case 0:
@@ -3997,8 +4179,8 @@
     return builder.setPrecision(id, precision);
 }
 
-// Intrinsics with no arguments, no return value, and no precision.
-spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
+// Intrinsics with no arguments (or no return value, and no precision).
+spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId)
 {
     // TODO: get the barrier operands correct
 
@@ -4045,6 +4227,14 @@
         // Control barrier with non-"None" semantic is also a memory barrier.
         builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeWorkgroup, spv::MemorySemanticsWorkgroupMemoryMask);
         return 0;
+#ifdef AMD_EXTENSIONS
+    case glslang::EOpTime:
+    {
+        std::vector<spv::Id> args; // Dummy arguments
+        spv::Id id = builder.createBuiltinCall(typeId, getExtBuiltins(spv::E_SPV_AMD_gcn_shader), spv::TimeAMD, args);
+        return builder.setPrecision(id, precision);
+    }
+#endif
     default:
         logger->missingFunctionality("unknown operation with no arguments");
         return 0;
@@ -4437,6 +4627,20 @@
     return builder.createOp(spv::OpPhi, boolTypeId, phiOperands);
 }
 
+// Return type Id of the imported set of extended instructions corresponds to the name.
+// Import this set if it has not been imported yet.
+spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name)
+{
+    if (extBuiltinMap.find(name) != extBuiltinMap.end())
+        return extBuiltinMap[name];
+    else {
+        builder.addExtensions(name);
+        spv::Id extBuiltins = builder.import(name);
+        extBuiltinMap[name] = extBuiltins;
+        return extBuiltins;
+    }
+}
+
 };  // end anonymous namespace
 
 namespace glslang {
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index e5317ab..1411d16 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -2312,7 +2312,11 @@
         capInst.dump(out);
     }
 
-    // TBD: OpExtension ...
+    for (int e = 0; e < (int)extensions.size(); ++e) {
+        Instruction extInst(0, 0, OpExtension);
+        extInst.addStringOperand(extensions[e]);
+        extInst.dump(out);
+    }
 
     dumpInstructions(out, imports);
     Instruction memInst(0, 0, OpMemoryModel);
@@ -2331,10 +2335,10 @@
         sourceInst.addImmediateOperand(sourceVersion);
         sourceInst.dump(out);
     }
-    for (int e = 0; e < (int)extensions.size(); ++e) {
-        Instruction extInst(0, 0, OpSourceExtension);
-        extInst.addStringOperand(extensions[e]);
-        extInst.dump(out);
+    for (int e = 0; e < (int)sourceExtensions.size(); ++e) {
+        Instruction sourceExtInst(0, 0, OpSourceExtension);
+        sourceExtInst.addStringOperand(sourceExtensions[e]);
+        sourceExtInst.dump(out);
     }
     dumpInstructions(out, names);
     dumpInstructions(out, lines);
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index c7e3bcd..00e85b8 100755
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -70,7 +70,8 @@
         source = lang;
         sourceVersion = version;
     }
-    void addSourceExtension(const char* ext) { extensions.push_back(ext); }
+    void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); }
+    void addExtensions(const char* ext) { extensions.push_back(ext); }
     Id import(const char*);
     void setMemoryModel(spv::AddressingModel addr, spv::MemoryModel mem)
     {
@@ -552,6 +553,7 @@
     SourceLanguage source;
     int sourceVersion;
     std::vector<const char*> extensions;
+    std::vector<const char*> sourceExtensions;
     AddressingModel addressModel;
     MemoryModel memoryModel;
     std::set<spv::Capability> capabilities;
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
index 75688cb..b60b3ba 100644
--- a/SPIRV/disassemble.cpp
+++ b/SPIRV/disassemble.cpp
@@ -44,16 +44,25 @@
 #include <sstream>
 #include <cstring>
 
-namespace spv {
-    // Include C-based headers that don't have a namespace
-    #include "GLSL.std.450.h"
-}
-const char* GlslStd450DebugNames[spv::GLSLstd450Count];
-
 #include "disassemble.h"
 #include "doc.h"
 
 namespace spv {
+    extern "C" {
+        // Include C-based headers that don't have a namespace
+        #include "GLSL.std.450.h"
+#ifdef AMD_EXTENSIONS
+        #include "GLSL.ext.AMD.h"
+#endif
+    }
+}
+const char* GlslStd450DebugNames[spv::GLSLstd450Count];
+
+namespace spv {
+
+#ifdef AMD_EXTENSIONS
+static const char* GLSLextAMDGetDebugNames(const char*, unsigned);
+#endif
 
 static void Kill(std::ostream& out, const char* message)
 {
@@ -64,6 +73,9 @@
 // used to identify the extended instruction library imported when printing
 enum ExtInstSet {
     GLSL450Inst,
+#ifdef AMD_EXTENSIONS
+    GLSLextAMDInst,
+#endif
     OpenCLExtInst,
 };
 
@@ -446,14 +458,26 @@
             --numOperands;
             if (opCode == OpExtInst) {
                 ExtInstSet extInstSet = GLSL450Inst;
-                if (0 == memcmp("OpenCL", (const char*)(idDescriptor[stream[word-2]].c_str()), 6)) {
+                const char* name = idDescriptor[stream[word - 2]].c_str();
+                if (0 == memcmp("OpenCL", name, 6)) {
                     extInstSet = OpenCLExtInst;
+#ifdef AMD_EXTENSIONS
+                } else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 ||
+                           strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 ||
+                           strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 ||
+                           strcmp(spv::E_SPV_AMD_gcn_shader, name) == 0) {
+                    extInstSet = GLSLextAMDInst;
+#endif
                 }
                 unsigned entrypoint = stream[word - 1];
                 if (extInstSet == GLSL450Inst) {
                     if (entrypoint < GLSLstd450Count) {
                         out << "(" << GlslStd450DebugNames[entrypoint] << ")";
                     }
+#ifdef AMD_EXTENSIONS
+                } else if (extInstSet == GLSLextAMDInst) {
+                    out << "(" << GLSLextAMDGetDebugNames(name, entrypoint) << ")";
+#endif
                 }
             }
             break;
@@ -561,6 +585,50 @@
     names[GLSLstd450InterpolateAtOffset]     = "InterpolateAtOffset";
 }
 
+#ifdef AMD_EXTENSIONS
+static const char* GLSLextAMDGetDebugNames(const char* name, unsigned entrypoint)
+{
+    if (strcmp(name, spv::E_SPV_AMD_shader_ballot) == 0) {
+        switch (entrypoint) {
+        case SwizzleInvocationsAMD:         return "SwizzleInvocationsAMD";
+        case SwizzleInvocationsMaskedAMD:   return "SwizzleInvocationsMaskedAMD";
+        case WriteInvocationAMD:            return "WriteInvocationAMD";
+        case MbcntAMD:                      return "MbcntAMD";
+        default:                            return "Bad";
+        }
+    } else if (strcmp(name, spv::E_SPV_AMD_shader_trinary_minmax) == 0) {
+        switch (entrypoint) {
+        case FMin3AMD:      return "FMin3AMD";
+        case UMin3AMD:      return "UMin3AMD";
+        case SMin3AMD:      return "SMin3AMD";
+        case FMax3AMD:      return "FMax3AMD";
+        case UMax3AMD:      return "UMax3AMD";
+        case SMax3AMD:      return "SMax3AMD";
+        case FMid3AMD:      return "FMid3AMD";
+        case UMid3AMD:      return "UMid3AMD";
+        case SMid3AMD:      return "SMid3AMD";
+        default:            return "Bad";
+        }
+    } else if (strcmp(name, spv::E_SPV_AMD_shader_explicit_vertex_parameter) == 0) {
+        switch (entrypoint) {
+        case InterpolateAtVertexAMD:    return "InterpolateAtVertexAMD";
+        default:                        return "Bad";
+        }
+    }
+    else if (strcmp(name, spv::E_SPV_AMD_gcn_shader) == 0) {
+        switch (entrypoint) {
+        case CubeFaceIndexAMD:      return "CubeFaceIndexAMD";
+        case CubeFaceCoordAMD:      return "CubeFaceCoordAMD";
+        case TimeAMD:               return "TimeAMD";
+        default:
+            break;
+        }
+    }
+
+    return "Bad";
+}
+#endif
+
 void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
 {
     SpirvStream SpirvStream(out, stream);
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index fed3ec4..9b58b59 100755
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -45,6 +45,15 @@
 #include <string.h>
 #include <algorithm>
 
+#ifdef AMD_EXTENSIONS
+namespace spv {
+    extern "C" {
+        // Include C-based headers that don't have a namespace
+        #include "GLSL.ext.AMD.h"
+    }
+}
+#endif
+
 namespace spv {
 
 //
@@ -243,6 +252,10 @@
 
     case DecorationCeiling:
     default:  return "Bad";
+
+#ifdef AMD_EXTENSIONS
+    case 4999: return "ExplicitInterpAMD";
+#endif
     }
 }
 
@@ -298,6 +311,16 @@
 
     case BuiltInCeiling:
     default: return "Bad";
+
+#ifdef AMD_EXTENSIONS
+    case 4992: return "BaryCoordNoPerspAMD";
+    case 4993: return "BaryCoordNoPerspCentroidAMD";
+    case 4994: return "BaryCoordNoPerspSampleAMD";
+    case 4995: return "BaryCoordSmoothAMD";
+    case 4996: return "BaryCoordSmoothCentroidAMD";
+    case 4997: return "BaryCoordSmoothSampleAMD";
+    case 4998: return "BaryCoordPullModelAMD";
+#endif
     }
 }
 
@@ -1107,12 +1130,27 @@
     case OpcodeCeiling:
     default:
         return "Bad";
+
+#ifdef AMD_EXTENSIONS
+    case 5000: return "OpGroupIAddNonUniformAMD";
+    case 5001: return "OpGroupFAddNonUniformAMD";
+    case 5002: return "OpGroupFMinNonUniformAMD";
+    case 5003: return "OpGroupUMinNonUniformAMD";
+    case 5004: return "OpGroupSMinNonUniformAMD";
+    case 5005: return "OpGroupFMaxNonUniformAMD";
+    case 5006: return "OpGroupUMaxNonUniformAMD";
+    case 5007: return "OpGroupSMaxNonUniformAMD";
+#endif
     }
 }
 
 // The set of objects that hold all the instruction/operand
 // parameterization information.
+#ifdef AMD_EXTENSIONS
+InstructionParameters InstructionDesc[OpCodeMask + 1];
+#else
 InstructionParameters InstructionDesc[OpcodeCeiling];
+#endif
 OperandParameters ExecutionModeOperands[ExecutionModeCeiling];
 OperandParameters DecorationOperands[DecorationCeiling];
 
@@ -2703,6 +2741,48 @@
     InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'");
     InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
     InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
+
+#ifdef AMD_EXTENSIONS
+    InstructionDesc[OpGroupIAddNonUniformAMD].capabilities.push_back(CapabilityGroups);
+    InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
+    InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+    InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'");
+
+    InstructionDesc[OpGroupFAddNonUniformAMD].capabilities.push_back(CapabilityGroups);
+    InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
+    InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+    InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'");
+
+    InstructionDesc[OpGroupUMinNonUniformAMD].capabilities.push_back(CapabilityGroups);
+    InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
+    InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+    InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'");
+
+    InstructionDesc[OpGroupSMinNonUniformAMD].capabilities.push_back(CapabilityGroups);
+    InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
+    InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+    InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X");
+
+    InstructionDesc[OpGroupFMinNonUniformAMD].capabilities.push_back(CapabilityGroups);
+    InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
+    InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+    InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X");
+
+    InstructionDesc[OpGroupUMaxNonUniformAMD].capabilities.push_back(CapabilityGroups);
+    InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
+    InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+    InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X");
+
+    InstructionDesc[OpGroupSMaxNonUniformAMD].capabilities.push_back(CapabilityGroups);
+    InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
+    InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+    InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X");
+
+    InstructionDesc[OpGroupFMaxNonUniformAMD].capabilities.push_back(CapabilityGroups);
+    InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
+    InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+    InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X");
+#endif
 }
 
 }; // end spv namespace
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index 2c27577..7e12c55 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -186,6 +186,15 @@
     EbvSamplePosition,
     EbvSampleMask,
     EbvHelperInvocation,
+#ifdef AMD_EXTENSIONS
+    EbvBaryCoordNoPersp,
+    EbvBaryCoordNoPerspCentroid,
+    EbvBaryCoordNoPerspSample,
+    EbvBaryCoordSmooth,
+    EbvBaryCoordSmoothCentroid,
+    EbvBaryCoordSmoothSample,
+    EbvBaryCoordPullModel,
+#endif
 
     EbvLast
 };
@@ -286,6 +295,15 @@
     case EbvSamplePosition:       return "SamplePosition";
     case EbvSampleMask:           return "SampleMaskIn";
     case EbvHelperInvocation:     return "HelperInvocation";
+#ifdef AMD_EXTENSIONS
+    case EbvBaryCoordNoPersp:           return "BaryCoordNoPersp";
+    case EbvBaryCoordNoPerspCentroid:   return "BaryCoordNoPerspCentroid";
+    case EbvBaryCoordNoPerspSample:     return "BaryCoordNoPerspSample";
+    case EbvBaryCoordSmooth:            return "BaryCoordSmooth";
+    case EbvBaryCoordSmoothCentroid:    return "BaryCoordSmoothCentroid";
+    case EbvBaryCoordSmoothSample:      return "BaryCoordSmoothSample";
+    case EbvBaryCoordPullModel:         return "BaryCoordPullModel";
+#endif
     default:                      return "unknown built-in variable";
     }
 }
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index 39a9fff..e637851 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -405,6 +405,9 @@
         smooth       = false;
         flat         = false;
         nopersp      = false;
+#ifdef AMD_EXTENSIONS
+        explicitInterp = false;
+#endif
         patch        = false;
         sample       = false;
         coherent     = false;
@@ -438,6 +441,9 @@
     bool smooth       : 1;
     bool flat         : 1;
     bool nopersp      : 1;
+#ifdef AMD_EXTENSIONS
+    bool explicitInterp : 1;
+#endif
     bool patch        : 1;
     bool sample       : 1;
     bool coherent     : 1;
@@ -453,7 +459,11 @@
     }
     bool isInterpolation() const
     {
+#ifdef AMD_EXTENSIONS
+        return flat || smooth || nopersp || explicitInterp;
+#else
         return flat || smooth || nopersp;
+#endif
     }
     bool isAuxiliary() const
     {
@@ -1518,6 +1528,10 @@
             p += snprintf(p, end - p, "flat ");
         if (qualifier.nopersp)
             p += snprintf(p, end - p, "noperspective ");
+#ifdef AMD_EXTENSIONS
+        if (qualifier.explicitInterp)
+            p += snprintf(p, end - p, "__explicitInterpAMD ");
+#endif
         if (qualifier.patch)
             p += snprintf(p, end - p, "patch ");
         if (qualifier.sample)
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index a74b96e..4d260f0 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -246,6 +246,12 @@
     EOpReflect,
     EOpRefract,
 
+#ifdef AMD_EXTENSIONS
+    EOpMin3,
+    EOpMax3,
+    EOpMid3,
+#endif
+
     EOpDPdx,            // Fragment only
     EOpDPdy,            // Fragment only
     EOpFwidth,          // Fragment only
@@ -260,6 +266,10 @@
     EOpInterpolateAtSample,   // Fragment only
     EOpInterpolateAtOffset,   // Fragment only
 
+#ifdef AMD_EXTENSIONS
+    EOpInterpolateAtVertex,
+#endif
+
     EOpMatrixTimesMatrix,
     EOpOuterProduct,
     EOpDeterminant,
@@ -291,6 +301,23 @@
     EOpAllInvocations,
     EOpAllInvocationsEqual,
 
+#ifdef AMD_EXTENSIONS
+    EOpMinInvocations,
+    EOpMaxInvocations,
+    EOpAddInvocations,
+    EOpMinInvocationsNonUniform,
+    EOpMaxInvocationsNonUniform,
+    EOpAddInvocationsNonUniform,
+    EOpSwizzleInvocations,
+    EOpSwizzleInvocationsMasked,
+    EOpWriteInvocation,
+    EOpMbcnt,
+
+    EOpCubeFaceIndex,
+    EOpCubeFaceCoord,
+    EOpTime,
+#endif
+
     EOpAtomicAdd,
     EOpAtomicMin,
     EOpAtomicMax,
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 871e788..8523398 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -801,10 +801,85 @@
             "bvec3 notEqual(u64vec3, u64vec3);"
             "bvec4 notEqual(u64vec4, u64vec4);"
 
+#ifdef AMD_EXTENSIONS
+            "int   findLSB(int64_t);"
+            "ivec2 findLSB(i64vec2);"
+            "ivec3 findLSB(i64vec3);"
+            "ivec4 findLSB(i64vec4);"
+
+            "int   findLSB(uint64_t);"
+            "ivec2 findLSB(u64vec2);"
+            "ivec3 findLSB(u64vec3);"
+            "ivec4 findLSB(u64vec4);"
+
+            "int   findMSB(int64_t);"
+            "ivec2 findMSB(i64vec2);"
+            "ivec3 findMSB(i64vec3);"
+            "ivec4 findMSB(i64vec4);"
+
+            "int   findMSB(uint64_t);"
+            "ivec2 findMSB(u64vec2);"
+            "ivec3 findMSB(u64vec3);"
+            "ivec4 findMSB(u64vec4);"
+#endif
             "\n"
         );
     }
 
+#ifdef AMD_EXTENSIONS
+    // GL_AMD_shader_trinary_minmax
+    if (profile != EEsProfile && version >= 430) {
+        commonBuiltins.append(
+            "float min3(float, float, float);"
+            "vec2  min3(vec2,  vec2,  vec2);"
+            "vec3  min3(vec3,  vec3,  vec3);"
+            "vec4  min3(vec4,  vec4,  vec4);"
+
+            "int   min3(int,   int,   int);"
+            "ivec2 min3(ivec2, ivec2, ivec2);"
+            "ivec3 min3(ivec3, ivec3, ivec3);"
+            "ivec4 min3(ivec4, ivec4, ivec4);"
+
+            "uint  min3(uint,  uint,  uint);"
+            "uvec2 min3(uvec2, uvec2, uvec2);"
+            "uvec3 min3(uvec3, uvec3, uvec3);"
+            "uvec4 min3(uvec4, uvec4, uvec4);"
+
+            "float max3(float, float, float);"
+            "vec2  max3(vec2,  vec2,  vec2);"
+            "vec3  max3(vec3,  vec3,  vec3);"
+            "vec4  max3(vec4,  vec4,  vec4);"
+
+            "int   max3(int,   int,   int);"
+            "ivec2 max3(ivec2, ivec2, ivec2);"
+            "ivec3 max3(ivec3, ivec3, ivec3);"
+            "ivec4 max3(ivec4, ivec4, ivec4);"
+
+            "uint  max3(uint,  uint,  uint);"
+            "uvec2 max3(uvec2, uvec2, uvec2);"
+            "uvec3 max3(uvec3, uvec3, uvec3);"
+            "uvec4 max3(uvec4, uvec4, uvec4);"
+
+            "float mid3(float, float, float);"
+            "vec2  mid3(vec2,  vec2,  vec2);"
+            "vec3  mid3(vec3,  vec3,  vec3);"
+            "vec4  mid3(vec4,  vec4,  vec4);"
+
+            "int   mid3(int,   int,   int);"
+            "ivec2 mid3(ivec2, ivec2, ivec2);"
+            "ivec3 mid3(ivec3, ivec3, ivec3);"
+            "ivec4 mid3(ivec4, ivec4, ivec4);"
+
+            "uint  mid3(uint,  uint,  uint);"
+            "uvec2 mid3(uvec2, uvec2, uvec2);"
+            "uvec3 mid3(uvec3, uvec3, uvec3);"
+            "uvec4 mid3(uvec4, uvec4, uvec4);"
+
+            "\n"
+        );
+    }
+#endif
+
     if ((profile == EEsProfile && version >= 310) ||
         (profile != EEsProfile && version >= 430)) {
         commonBuiltins.append(
@@ -1468,6 +1543,161 @@
             "\n");
     }
 
+#ifdef AMD_EXTENSIONS
+    // GL_AMD_shader_ballot
+    if (profile != EEsProfile && version >= 450) {
+        commonBuiltins.append(
+            "float minInvocationsAMD(float);"
+            "vec2  minInvocationsAMD(vec2);"
+            "vec3  minInvocationsAMD(vec3);"
+            "vec4  minInvocationsAMD(vec4);"
+
+            "int   minInvocationsAMD(int);"
+            "ivec2 minInvocationsAMD(ivec2);"
+            "ivec3 minInvocationsAMD(ivec3);"
+            "ivec4 minInvocationsAMD(ivec4);"
+
+            "uint  minInvocationsAMD(uint);"
+            "uvec2 minInvocationsAMD(uvec2);"
+            "uvec3 minInvocationsAMD(uvec3);"
+            "uvec4 minInvocationsAMD(uvec4);"
+
+            "float maxInvocationsAMD(float);"
+            "vec2  maxInvocationsAMD(vec2);"
+            "vec3  maxInvocationsAMD(vec3);"
+            "vec4  maxInvocationsAMD(vec4);"
+
+            "int   maxInvocationsAMD(int);"
+            "ivec2 maxInvocationsAMD(ivec2);"
+            "ivec3 maxInvocationsAMD(ivec3);"
+            "ivec4 maxInvocationsAMD(ivec4);"
+
+            "uint  maxInvocationsAMD(uint);"
+            "uvec2 maxInvocationsAMD(uvec2);"
+            "uvec3 maxInvocationsAMD(uvec3);"
+            "uvec4 maxInvocationsAMD(uvec4);"
+
+            "float addInvocationsAMD(float);"
+            "vec2  addInvocationsAMD(vec2);"
+            "vec3  addInvocationsAMD(vec3);"
+            "vec4  addInvocationsAMD(vec4);"
+
+            "int   addInvocationsAMD(int);"
+            "ivec2 addInvocationsAMD(ivec2);"
+            "ivec3 addInvocationsAMD(ivec3);"
+            "ivec4 addInvocationsAMD(ivec4);"
+
+            "uint  addInvocationsAMD(uint);"
+            "uvec2 addInvocationsAMD(uvec2);"
+            "uvec3 addInvocationsAMD(uvec3);"
+            "uvec4 addInvocationsAMD(uvec4);"
+
+            "float minInvocationsNonUniformAMD(float);"
+            "vec2  minInvocationsNonUniformAMD(vec2);"
+            "vec3  minInvocationsNonUniformAMD(vec3);"
+            "vec4  minInvocationsNonUniformAMD(vec4);"
+
+            "int   minInvocationsNonUniformAMD(int);"
+            "ivec2 minInvocationsNonUniformAMD(ivec2);"
+            "ivec3 minInvocationsNonUniformAMD(ivec3);"
+            "ivec4 minInvocationsNonUniformAMD(ivec4);"
+
+            "uint  minInvocationsNonUniformAMD(uint);"
+            "uvec2 minInvocationsNonUniformAMD(uvec2);"
+            "uvec3 minInvocationsNonUniformAMD(uvec3);"
+            "uvec4 minInvocationsNonUniformAMD(uvec4);"
+
+            "float maxInvocationsNonUniformAMD(float);"
+            "vec2  maxInvocationsNonUniformAMD(vec2);"
+            "vec3  maxInvocationsNonUniformAMD(vec3);"
+            "vec4  maxInvocationsNonUniformAMD(vec4);"
+
+            "int   maxInvocationsNonUniformAMD(int);"
+            "ivec2 maxInvocationsNonUniformAMD(ivec2);"
+            "ivec3 maxInvocationsNonUniformAMD(ivec3);"
+            "ivec4 maxInvocationsNonUniformAMD(ivec4);"
+
+            "uint  maxInvocationsNonUniformAMD(uint);"
+            "uvec2 maxInvocationsNonUniformAMD(uvec2);"
+            "uvec3 maxInvocationsNonUniformAMD(uvec3);"
+            "uvec4 maxInvocationsNonUniformAMD(uvec4);"
+
+            "float addInvocationsNonUniformAMD(float);"
+            "vec2  addInvocationsNonUniformAMD(vec2);"
+            "vec3  addInvocationsNonUniformAMD(vec3);"
+            "vec4  addInvocationsNonUniformAMD(vec4);"
+
+            "int   addInvocationsNonUniformAMD(int);"
+            "ivec2 addInvocationsNonUniformAMD(ivec2);"
+            "ivec3 addInvocationsNonUniformAMD(ivec3);"
+            "ivec4 addInvocationsNonUniformAMD(ivec4);"
+
+            "uint  addInvocationsNonUniformAMD(uint);"
+            "uvec2 addInvocationsNonUniformAMD(uvec2);"
+            "uvec3 addInvocationsNonUniformAMD(uvec3);"
+            "uvec4 addInvocationsNonUniformAMD(uvec4);"
+
+            "float swizzleInvocationsAMD(float, uvec4);"
+            "vec2  swizzleInvocationsAMD(vec2,  uvec4);"
+            "vec3  swizzleInvocationsAMD(vec3,  uvec4);"
+            "vec4  swizzleInvocationsAMD(vec4,  uvec4);"
+
+            "int   swizzleInvocationsAMD(int,   uvec4);"
+            "ivec2 swizzleInvocationsAMD(ivec2, uvec4);"
+            "ivec3 swizzleInvocationsAMD(ivec3, uvec4);"
+            "ivec4 swizzleInvocationsAMD(ivec4, uvec4);"
+
+            "uint  swizzleInvocationsAMD(uint,  uvec4);"
+            "uvec2 swizzleInvocationsAMD(uvec2, uvec4);"
+            "uvec3 swizzleInvocationsAMD(uvec3, uvec4);"
+            "uvec4 swizzleInvocationsAMD(uvec4, uvec4);"
+
+            "float swizzleInvocationsMaskedAMD(float, uvec3);"
+            "vec2  swizzleInvocationsMaskedAMD(vec2,  uvec3);"
+            "vec3  swizzleInvocationsMaskedAMD(vec3,  uvec3);"
+            "vec4  swizzleInvocationsMaskedAMD(vec4,  uvec3);"
+
+            "int   swizzleInvocationsMaskedAMD(int,   uvec3);"
+            "ivec2 swizzleInvocationsMaskedAMD(ivec2, uvec3);"
+            "ivec3 swizzleInvocationsMaskedAMD(ivec3, uvec3);"
+            "ivec4 swizzleInvocationsMaskedAMD(ivec4, uvec3);"
+
+            "uint  swizzleInvocationsMaskedAMD(uint,  uvec3);"
+            "uvec2 swizzleInvocationsMaskedAMD(uvec2, uvec3);"
+            "uvec3 swizzleInvocationsMaskedAMD(uvec3, uvec3);"
+            "uvec4 swizzleInvocationsMaskedAMD(uvec4, uvec3);"
+
+            "float writeInvocationAMD(float, float, uint);"
+            "vec2  writeInvocationAMD(vec2,  vec2,  uint);"
+            "vec3  writeInvocationAMD(vec3,  vec3,  uint);"
+            "vec4  writeInvocationAMD(vec4,  vec4,  uint);"
+
+            "int   writeInvocationAMD(int,   int,   uint);"
+            "ivec2 writeInvocationAMD(ivec2, ivec2, uint);"
+            "ivec3 writeInvocationAMD(ivec3, ivec3, uint);"
+            "ivec4 writeInvocationAMD(ivec4, ivec4, uint);"
+
+            "uint  writeInvocationAMD(uint,  uint,  uint);"
+            "uvec2 writeInvocationAMD(uvec2, uvec2, uint);"
+            "uvec3 writeInvocationAMD(uvec3, uvec3, uint);"
+            "uvec4 writeInvocationAMD(uvec4, uvec4, uint);"
+
+            "uint mbcntAMD(uint64_t);"
+
+            "\n");
+    }
+
+    // GL_AMD_gcn_shader
+    if (profile != EEsProfile && version >= 450) {
+        commonBuiltins.append(
+            "float cubeFaceIndexAMD(vec3);"
+            "vec2 cubeFaceCoordAMD(vec3);"
+            "uint64_t timeAMD();"
+
+            "\n");
+    }
+#endif
+
     //============================================================================
     //
     // Prototypes for built-in functions seen by vertex shaders only.
@@ -1713,6 +1943,29 @@
             "\n");
     }
 
+#ifdef AMD_EXTENSIONS
+    // GL_AMD_shader_explicit_vertex_parameter
+    if (profile != EEsProfile && version >= 450) {
+        stageBuiltins[EShLangFragment].append(
+            "float interpolateAtVertexAMD(float, uint);"
+            "vec2  interpolateAtVertexAMD(vec2,  uint);"
+            "vec3  interpolateAtVertexAMD(vec3,  uint);"
+            "vec4  interpolateAtVertexAMD(vec4,  uint);"
+
+            "int   interpolateAtVertexAMD(int,   uint);"
+            "ivec2 interpolateAtVertexAMD(ivec2, uint);"
+            "ivec3 interpolateAtVertexAMD(ivec3, uint);"
+            "ivec4 interpolateAtVertexAMD(ivec4, uint);"
+
+            "uint  interpolateAtVertexAMD(uint,  uint);"
+            "uvec2 interpolateAtVertexAMD(uvec2, uint);"
+            "uvec3 interpolateAtVertexAMD(uvec3, uint);"
+            "uvec4 interpolateAtVertexAMD(uvec4, uint);"
+
+            "\n");
+    }
+#endif
+
     //============================================================================
     //
     // Standard Uniforms
@@ -2332,6 +2585,19 @@
                 "in float gl_CullDistance[];"
                 "bool gl_HelperInvocation;"     // needs qualifier fixed later
                 );
+
+#ifdef AMD_EXTENSIONS
+        if (version >= 450)
+            stageBuiltins[EShLangFragment].append(
+                "in vec2 gl_BaryCoordNoPerspAMD;"
+                "in vec2 gl_BaryCoordNoPerspCentroidAMD;"
+                "in vec2 gl_BaryCoordNoPerspSampleAMD;"
+                "in vec2 gl_BaryCoordSmoothAMD;"
+                "in vec2 gl_BaryCoordSmoothCentroidAMD;"
+                "in vec2 gl_BaryCoordSmoothSampleAMD;"
+                "in vec3 gl_BaryCoordPullModelAMD;"
+                );
+#endif
     } else {
         // ES profile
 
@@ -3460,6 +3726,14 @@
         s.append(builtInConstant);
     }
 
+#ifdef AMD_EXTENSIONS
+    // GL_AMD_gcn_shader
+    if (profile != EEsProfile && version >= 450) {
+        snprintf(builtInConstant, maxSize, "const int gl_SIMDGroupSizeAMD = 64;");
+        s.append(builtInConstant);
+    }
+#endif
+
     s.append("\n");
 }
 
@@ -3588,6 +3862,33 @@
             symbolTable.setFunctionExtensions("allInvocationsEqualARB", 1, &E_GL_ARB_shader_group_vote);
         }
 
+#ifdef AMD_EXTENSIONS
+        if (profile != EEsProfile) {
+            symbolTable.setFunctionExtensions("minInvocationsAMD",                1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("maxInvocationsAMD",                1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("addInvocationsAMD",                1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("minInvocationsNonUniformAMD",      1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("maxInvocationsNonUniformAMD",      1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("addInvocationsNonUniformAMD",      1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("swizzleInvocationsAMD",            1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("swizzleInvocationsWithPatternAMD", 1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("writeInvocationAMD",               1, &E_GL_AMD_shader_ballot);
+            symbolTable.setFunctionExtensions("mbcntAMD",                         1, &E_GL_AMD_shader_ballot);
+        }
+
+        if (profile != EEsProfile) {
+            symbolTable.setFunctionExtensions("min3", 1, &E_GL_AMD_shader_trinary_minmax);
+            symbolTable.setFunctionExtensions("max3", 1, &E_GL_AMD_shader_trinary_minmax);
+            symbolTable.setFunctionExtensions("mid3", 1, &E_GL_AMD_shader_trinary_minmax);
+        }
+
+        if (profile != EEsProfile) {
+            symbolTable.setFunctionExtensions("cubeFaceIndexAMD", 1, &E_GL_AMD_gcn_shader);
+            symbolTable.setFunctionExtensions("cubeFaceCoordAMD", 1, &E_GL_AMD_gcn_shader);
+            symbolTable.setFunctionExtensions("timeAMD",          1, &E_GL_AMD_gcn_shader);
+        }
+#endif
+
         // Compatibility variables, vertex only
         if (spvVersion.spv == 0) {
             BuiltInVariable("gl_Color",          EbvColor,          symbolTable);
@@ -3872,6 +4173,29 @@
             symbolTable.setFunctionExtensions("textureGradOffsetClampARB",          1, &E_GL_ARB_sparse_texture_clamp);
         }
 
+#ifdef AMD_EXTENSIONS
+        // E_GL_AMD_shader_explicit_vertex_parameter
+        if (profile != EEsProfile) {
+            symbolTable.setVariableExtensions("gl_BaryCoordNoPerspAMD",         1, &E_GL_AMD_shader_explicit_vertex_parameter);
+            symbolTable.setVariableExtensions("gl_BaryCoordNoPerspCentroidAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter);
+            symbolTable.setVariableExtensions("gl_BaryCoordNoPerspSampleAMD",   1, &E_GL_AMD_shader_explicit_vertex_parameter);
+            symbolTable.setVariableExtensions("gl_BaryCoordSmoothAMD",          1, &E_GL_AMD_shader_explicit_vertex_parameter);
+            symbolTable.setVariableExtensions("gl_BaryCoordSmoothCentroidAMD",  1, &E_GL_AMD_shader_explicit_vertex_parameter);
+            symbolTable.setVariableExtensions("gl_BaryCoordSmoothSampleAMD",    1, &E_GL_AMD_shader_explicit_vertex_parameter);
+            symbolTable.setVariableExtensions("gl_BaryCoordPullModelAMD",       1, &E_GL_AMD_shader_explicit_vertex_parameter);
+
+            symbolTable.setFunctionExtensions("interpolateAtVertexAMD",         1, &E_GL_AMD_shader_explicit_vertex_parameter);
+
+            BuiltInVariable("gl_BaryCoordNoPerspAMD",           EbvBaryCoordNoPersp,         symbolTable);
+            BuiltInVariable("gl_BaryCoordNoPerspCentroidAMD",   EbvBaryCoordNoPerspCentroid, symbolTable);
+            BuiltInVariable("gl_BaryCoordNoPerspSampleAMD",     EbvBaryCoordNoPerspSample,   symbolTable);
+            BuiltInVariable("gl_BaryCoordSmoothAMD",            EbvBaryCoordSmooth,          symbolTable);
+            BuiltInVariable("gl_BaryCoordSmoothCentroidAMD",    EbvBaryCoordSmoothCentroid,  symbolTable);
+            BuiltInVariable("gl_BaryCoordSmoothSampleAMD",      EbvBaryCoordSmoothSample,    symbolTable);
+            BuiltInVariable("gl_BaryCoordPullModelAMD",         EbvBaryCoordPullModel,       symbolTable);
+        }
+#endif
+
         symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth);
 
         if (profile == EEsProfile) {
@@ -4205,6 +4529,27 @@
             symbolTable.relateToOperator("anyInvocationARB",                EOpAnyInvocation);
             symbolTable.relateToOperator("allInvocationsARB",               EOpAllInvocations);
             symbolTable.relateToOperator("allInvocationsEqualARB",          EOpAllInvocationsEqual);
+
+#ifdef AMD_EXTENSIONS
+            symbolTable.relateToOperator("minInvocationsAMD",               EOpMinInvocations);
+            symbolTable.relateToOperator("maxInvocationsAMD",               EOpMaxInvocations);
+            symbolTable.relateToOperator("addInvocationsAMD",               EOpAddInvocations);
+            symbolTable.relateToOperator("minInvocationsNonUniformAMD",     EOpMinInvocationsNonUniform);
+            symbolTable.relateToOperator("maxInvocationsNonUniformAMD",     EOpMaxInvocationsNonUniform);
+            symbolTable.relateToOperator("addInvocationsNonUniformAMD",     EOpAddInvocationsNonUniform);
+            symbolTable.relateToOperator("swizzleInvocationsAMD",           EOpSwizzleInvocations);
+            symbolTable.relateToOperator("swizzleInvocationsMaskedAMD",     EOpSwizzleInvocationsMasked);
+            symbolTable.relateToOperator("writeInvocationAMD",              EOpWriteInvocation);
+            symbolTable.relateToOperator("mbcntAMD",                        EOpMbcnt);
+
+            symbolTable.relateToOperator("min3",    EOpMin3);
+            symbolTable.relateToOperator("max3",    EOpMax3);
+            symbolTable.relateToOperator("mid3",    EOpMid3);
+
+            symbolTable.relateToOperator("cubeFaceIndexAMD",    EOpCubeFaceIndex);
+            symbolTable.relateToOperator("cubeFaceCoordAMD",    EOpCubeFaceCoord);
+            symbolTable.relateToOperator("timeAMD",             EOpTime);
+#endif
         }
     }
 
@@ -4238,7 +4583,12 @@
         symbolTable.relateToOperator("interpolateAtCentroid", EOpInterpolateAtCentroid);
         symbolTable.relateToOperator("interpolateAtSample",   EOpInterpolateAtSample);
         symbolTable.relateToOperator("interpolateAtOffset",   EOpInterpolateAtOffset);
+
+#ifdef AMD_EXTENSIONS
+        if (profile != EEsProfile)
+            symbolTable.relateToOperator("interpolateAtVertexAMD", EOpInterpolateAtVertex);
         break;
+#endif
 
     case EShLangCompute:
         symbolTable.relateToOperator("memoryBarrierShared",     EOpMemoryBarrierShared);
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 0c20cf8..b93d39d 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -2119,6 +2119,10 @@
     TIntermSymbol* symNode = node->getAsSymbolNode();
     if (symNode && symNode->getQualifier().writeonly)
         error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str());
+#ifdef AMD_EXTENSIONS
+    else if (symNode && symNode->getQualifier().explicitInterp)
+        error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str());
+#endif
 }
 
 //
@@ -2665,7 +2669,11 @@
         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) {
+#endif
         if (publicType.basicType == EbtInt    || publicType.basicType == EbtUint   ||
             publicType.basicType == EbtInt64  || publicType.basicType == EbtUint64 ||
             publicType.basicType == EbtDouble ||
@@ -2802,7 +2810,11 @@
 
     // Multiple interpolation qualifiers (mostly done later by 'individual qualifiers')
     if (src.isInterpolation() && dst.isInterpolation())
+#ifdef AMD_EXTENSIONS
+        error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD)", "", "");
+#else
         error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective)", "", "");
+#endif
 
     // Ordering
     if (! force && ((profile != EEsProfile && version < 420) || 
@@ -2858,6 +2870,9 @@
     MERGE_SINGLETON(smooth);
     MERGE_SINGLETON(flat);
     MERGE_SINGLETON(nopersp);
+#ifdef AMD_EXTENSIONS
+    MERGE_SINGLETON(explicitInterp);
+#endif
     MERGE_SINGLETON(patch);
     MERGE_SINGLETON(sample);
     MERGE_SINGLETON(coherent);
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index b8cb869..0fcc52f 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -553,6 +553,9 @@
     (*KeywordMap)["noperspective"] =           NOPERSPECTIVE;
     (*KeywordMap)["smooth"] =                  SMOOTH;
     (*KeywordMap)["flat"] =                    FLAT;
+#ifdef AMD_EXTENSIONS
+    (*KeywordMap)["__explicitInterpAMD"] =     __EXPLICITINTERPAMD;
+#endif
     (*KeywordMap)["centroid"] =                CENTROID;
     (*KeywordMap)["precise"] =                 PRECISE;
     (*KeywordMap)["invariant"] =               INVARIANT;
@@ -1117,6 +1120,14 @@
             return identifierOrType();
         return keyword;
 
+#ifdef AMD_EXTENSIONS
+    case __EXPLICITINTERPAMD:
+        if (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
+            parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter))
+            return keyword;
+        return identifierOrType();
+#endif
+
     case FLAT:
         if (parseContext.profile == EEsProfile && parseContext.version < 300)
             reservedWord();
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index e46118a..52d205d 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -187,6 +187,13 @@
     extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive]          = EBhDisable;
     extensionBehavior[E_GL_GOOGLE_include_directive]                 = EBhDisable;
 
+#ifdef AMD_EXTENSIONS
+    extensionBehavior[E_GL_AMD_shader_ballot]                        = EBhDisable;
+    extensionBehavior[E_GL_AMD_shader_trinary_minmax]                = EBhDisable;
+    extensionBehavior[E_GL_AMD_shader_explicit_vertex_parameter]     = EBhDisable;
+    extensionBehavior[E_GL_AMD_gcn_shader]                           = EBhDisable;
+#endif
+
     // AEP
     extensionBehavior[E_GL_ANDROID_extension_pack_es31a]             = EBhDisable;
     extensionBehavior[E_GL_KHR_blend_equation_advanced]              = EBhDisable;
@@ -286,6 +293,13 @@
             "#define GL_ARB_sparse_texture_clamp 1\n"
 //            "#define GL_ARB_cull_distance 1\n"    // present for 4.5, but need extension control over block members
             "#define GL_EXT_shader_non_constant_global_initializers 1\n"
+
+#ifdef AMD_EXTENSIONS
+            "#define GL_AMD_shader_ballot 1\n"
+            "#define GL_AMD_shader_trinary_minmax 1\n"
+            "#define GL_AMD_shader_explicit_vertex_parameter 1\n"
+            "#define GL_AMD_gcn_shader 1\n"
+#endif
             ;
     }
 
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index 19d101d..6fd08b0 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -135,6 +135,13 @@
 const char* const E_GL_GOOGLE_cpp_style_line_directive          = "GL_GOOGLE_cpp_style_line_directive";
 const char* const E_GL_GOOGLE_include_directive                 = "GL_GOOGLE_include_directive";
 
+#ifdef AMD_EXTENSIONS
+const char* const E_GL_AMD_shader_ballot = "GL_AMD_shader_ballot";
+const char* const E_GL_AMD_shader_trinary_minmax = "GL_AMD_shader_trinary_minmax";
+const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter";
+const char* const E_GL_AMD_gcn_shader = "GL_AMD_gcn_shader";
+#endif
+
 // AEP
 const char* const E_GL_ANDROID_extension_pack_es31a             = "GL_ANDROID_extension_pack_es31a";
 const char* const E_GL_KHR_blend_equation_advanced              = "GL_KHR_blend_equation_advanced";
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index 2cd1cc6..11ed070 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -126,7 +126,7 @@
 %token <lex> UNIFORM PATCH SAMPLE BUFFER SHARED
 %token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY
 %token <lex> DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4
-%token <lex> NOPERSPECTIVE FLAT SMOOTH LAYOUT
+%token <lex> NOPERSPECTIVE FLAT SMOOTH LAYOUT __EXPLICITINTERPAMD
 
 %token <lex> MAT2X2 MAT2X3 MAT2X4
 %token <lex> MAT3X2 MAT3X3 MAT3X4
@@ -1050,6 +1050,15 @@
         $$.init($1.loc);
         $$.qualifier.nopersp = true;
     }
+    | __EXPLICITINTERPAMD {
+#ifdef AMD_EXTENSIONS
+        parseContext.globalCheck($1.loc, "__explicitInterpAMD");
+        parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
+        parseContext.profileRequires($1.loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
+        $$.init($1.loc);
+        $$.qualifier.explicitInterp = true;
+#endif
+    }
     ;
 
 layout_qualifier
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index c8664f9..7ae7e70 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 2.7.  */
 
 /* Bison implementation for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
+   
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,7 +26,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.4"
+#define YYBISON_VERSION "2.7"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -62,7 +62,8 @@
 
 
 /* Copy the first part of user declarations.  */
-#line 41 "MachineIndependent/glslang.y" /* yacc.c:339  */
+/* Line 371 of yacc.c  */
+#line 41 "glslang.y"
 
 
 /* Based on:
@@ -87,13 +88,14 @@
 using namespace glslang;
 
 
-#line 91 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339  */
+/* Line 371 of yacc.c  */
+#line 93 "glslang_tab.cpp"
 
-# ifndef YY_NULLPTR
+# ifndef YY_NULL
 #  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+#   define YY_NULL nullptr
 #  else
-#   define YY_NULLPTR 0
+#   define YY_NULL 0
 #  endif
 # endif
 
@@ -107,9 +109,9 @@
 
 /* In a future release of Bison, this section will be replaced
    by #include "glslang_tab.cpp.h".  */
-#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
-/* Debug traces.  */
+#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+/* Enabling traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 1
 #endif
@@ -117,287 +119,289 @@
 extern int yydebug;
 #endif
 
-/* Token type.  */
+/* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-  enum yytokentype
-  {
-    ATTRIBUTE = 258,
-    VARYING = 259,
-    CONST = 260,
-    BOOL = 261,
-    FLOAT = 262,
-    DOUBLE = 263,
-    INT = 264,
-    UINT = 265,
-    INT64_T = 266,
-    UINT64_T = 267,
-    BREAK = 268,
-    CONTINUE = 269,
-    DO = 270,
-    ELSE = 271,
-    FOR = 272,
-    IF = 273,
-    DISCARD = 274,
-    RETURN = 275,
-    SWITCH = 276,
-    CASE = 277,
-    DEFAULT = 278,
-    SUBROUTINE = 279,
-    BVEC2 = 280,
-    BVEC3 = 281,
-    BVEC4 = 282,
-    IVEC2 = 283,
-    IVEC3 = 284,
-    IVEC4 = 285,
-    I64VEC2 = 286,
-    I64VEC3 = 287,
-    I64VEC4 = 288,
-    UVEC2 = 289,
-    UVEC3 = 290,
-    UVEC4 = 291,
-    U64VEC2 = 292,
-    U64VEC3 = 293,
-    U64VEC4 = 294,
-    VEC2 = 295,
-    VEC3 = 296,
-    VEC4 = 297,
-    MAT2 = 298,
-    MAT3 = 299,
-    MAT4 = 300,
-    CENTROID = 301,
-    IN = 302,
-    OUT = 303,
-    INOUT = 304,
-    UNIFORM = 305,
-    PATCH = 306,
-    SAMPLE = 307,
-    BUFFER = 308,
-    SHARED = 309,
-    COHERENT = 310,
-    VOLATILE = 311,
-    RESTRICT = 312,
-    READONLY = 313,
-    WRITEONLY = 314,
-    DVEC2 = 315,
-    DVEC3 = 316,
-    DVEC4 = 317,
-    DMAT2 = 318,
-    DMAT3 = 319,
-    DMAT4 = 320,
-    NOPERSPECTIVE = 321,
-    FLAT = 322,
-    SMOOTH = 323,
-    LAYOUT = 324,
-    MAT2X2 = 325,
-    MAT2X3 = 326,
-    MAT2X4 = 327,
-    MAT3X2 = 328,
-    MAT3X3 = 329,
-    MAT3X4 = 330,
-    MAT4X2 = 331,
-    MAT4X3 = 332,
-    MAT4X4 = 333,
-    DMAT2X2 = 334,
-    DMAT2X3 = 335,
-    DMAT2X4 = 336,
-    DMAT3X2 = 337,
-    DMAT3X3 = 338,
-    DMAT3X4 = 339,
-    DMAT4X2 = 340,
-    DMAT4X3 = 341,
-    DMAT4X4 = 342,
-    ATOMIC_UINT = 343,
-    SAMPLER1D = 344,
-    SAMPLER2D = 345,
-    SAMPLER3D = 346,
-    SAMPLERCUBE = 347,
-    SAMPLER1DSHADOW = 348,
-    SAMPLER2DSHADOW = 349,
-    SAMPLERCUBESHADOW = 350,
-    SAMPLER1DARRAY = 351,
-    SAMPLER2DARRAY = 352,
-    SAMPLER1DARRAYSHADOW = 353,
-    SAMPLER2DARRAYSHADOW = 354,
-    ISAMPLER1D = 355,
-    ISAMPLER2D = 356,
-    ISAMPLER3D = 357,
-    ISAMPLERCUBE = 358,
-    ISAMPLER1DARRAY = 359,
-    ISAMPLER2DARRAY = 360,
-    USAMPLER1D = 361,
-    USAMPLER2D = 362,
-    USAMPLER3D = 363,
-    USAMPLERCUBE = 364,
-    USAMPLER1DARRAY = 365,
-    USAMPLER2DARRAY = 366,
-    SAMPLER2DRECT = 367,
-    SAMPLER2DRECTSHADOW = 368,
-    ISAMPLER2DRECT = 369,
-    USAMPLER2DRECT = 370,
-    SAMPLERBUFFER = 371,
-    ISAMPLERBUFFER = 372,
-    USAMPLERBUFFER = 373,
-    SAMPLERCUBEARRAY = 374,
-    SAMPLERCUBEARRAYSHADOW = 375,
-    ISAMPLERCUBEARRAY = 376,
-    USAMPLERCUBEARRAY = 377,
-    SAMPLER2DMS = 378,
-    ISAMPLER2DMS = 379,
-    USAMPLER2DMS = 380,
-    SAMPLER2DMSARRAY = 381,
-    ISAMPLER2DMSARRAY = 382,
-    USAMPLER2DMSARRAY = 383,
-    SAMPLEREXTERNALOES = 384,
-    SAMPLER = 385,
-    SAMPLERSHADOW = 386,
-    TEXTURE1D = 387,
-    TEXTURE2D = 388,
-    TEXTURE3D = 389,
-    TEXTURECUBE = 390,
-    TEXTURE1DARRAY = 391,
-    TEXTURE2DARRAY = 392,
-    ITEXTURE1D = 393,
-    ITEXTURE2D = 394,
-    ITEXTURE3D = 395,
-    ITEXTURECUBE = 396,
-    ITEXTURE1DARRAY = 397,
-    ITEXTURE2DARRAY = 398,
-    UTEXTURE1D = 399,
-    UTEXTURE2D = 400,
-    UTEXTURE3D = 401,
-    UTEXTURECUBE = 402,
-    UTEXTURE1DARRAY = 403,
-    UTEXTURE2DARRAY = 404,
-    TEXTURE2DRECT = 405,
-    ITEXTURE2DRECT = 406,
-    UTEXTURE2DRECT = 407,
-    TEXTUREBUFFER = 408,
-    ITEXTUREBUFFER = 409,
-    UTEXTUREBUFFER = 410,
-    TEXTURECUBEARRAY = 411,
-    ITEXTURECUBEARRAY = 412,
-    UTEXTURECUBEARRAY = 413,
-    TEXTURE2DMS = 414,
-    ITEXTURE2DMS = 415,
-    UTEXTURE2DMS = 416,
-    TEXTURE2DMSARRAY = 417,
-    ITEXTURE2DMSARRAY = 418,
-    UTEXTURE2DMSARRAY = 419,
-    SUBPASSINPUT = 420,
-    SUBPASSINPUTMS = 421,
-    ISUBPASSINPUT = 422,
-    ISUBPASSINPUTMS = 423,
-    USUBPASSINPUT = 424,
-    USUBPASSINPUTMS = 425,
-    IMAGE1D = 426,
-    IIMAGE1D = 427,
-    UIMAGE1D = 428,
-    IMAGE2D = 429,
-    IIMAGE2D = 430,
-    UIMAGE2D = 431,
-    IMAGE3D = 432,
-    IIMAGE3D = 433,
-    UIMAGE3D = 434,
-    IMAGE2DRECT = 435,
-    IIMAGE2DRECT = 436,
-    UIMAGE2DRECT = 437,
-    IMAGECUBE = 438,
-    IIMAGECUBE = 439,
-    UIMAGECUBE = 440,
-    IMAGEBUFFER = 441,
-    IIMAGEBUFFER = 442,
-    UIMAGEBUFFER = 443,
-    IMAGE1DARRAY = 444,
-    IIMAGE1DARRAY = 445,
-    UIMAGE1DARRAY = 446,
-    IMAGE2DARRAY = 447,
-    IIMAGE2DARRAY = 448,
-    UIMAGE2DARRAY = 449,
-    IMAGECUBEARRAY = 450,
-    IIMAGECUBEARRAY = 451,
-    UIMAGECUBEARRAY = 452,
-    IMAGE2DMS = 453,
-    IIMAGE2DMS = 454,
-    UIMAGE2DMS = 455,
-    IMAGE2DMSARRAY = 456,
-    IIMAGE2DMSARRAY = 457,
-    UIMAGE2DMSARRAY = 458,
-    STRUCT = 459,
-    VOID = 460,
-    WHILE = 461,
-    IDENTIFIER = 462,
-    TYPE_NAME = 463,
-    FLOATCONSTANT = 464,
-    DOUBLECONSTANT = 465,
-    INTCONSTANT = 466,
-    UINTCONSTANT = 467,
-    INT64CONSTANT = 468,
-    UINT64CONSTANT = 469,
-    BOOLCONSTANT = 470,
-    LEFT_OP = 471,
-    RIGHT_OP = 472,
-    INC_OP = 473,
-    DEC_OP = 474,
-    LE_OP = 475,
-    GE_OP = 476,
-    EQ_OP = 477,
-    NE_OP = 478,
-    AND_OP = 479,
-    OR_OP = 480,
-    XOR_OP = 481,
-    MUL_ASSIGN = 482,
-    DIV_ASSIGN = 483,
-    ADD_ASSIGN = 484,
-    MOD_ASSIGN = 485,
-    LEFT_ASSIGN = 486,
-    RIGHT_ASSIGN = 487,
-    AND_ASSIGN = 488,
-    XOR_ASSIGN = 489,
-    OR_ASSIGN = 490,
-    SUB_ASSIGN = 491,
-    LEFT_PAREN = 492,
-    RIGHT_PAREN = 493,
-    LEFT_BRACKET = 494,
-    RIGHT_BRACKET = 495,
-    LEFT_BRACE = 496,
-    RIGHT_BRACE = 497,
-    DOT = 498,
-    COMMA = 499,
-    COLON = 500,
-    EQUAL = 501,
-    SEMICOLON = 502,
-    BANG = 503,
-    DASH = 504,
-    TILDE = 505,
-    PLUS = 506,
-    STAR = 507,
-    SLASH = 508,
-    PERCENT = 509,
-    LEFT_ANGLE = 510,
-    RIGHT_ANGLE = 511,
-    VERTICAL_BAR = 512,
-    CARET = 513,
-    AMPERSAND = 514,
-    QUESTION = 515,
-    INVARIANT = 516,
-    PRECISE = 517,
-    HIGH_PRECISION = 518,
-    MEDIUM_PRECISION = 519,
-    LOW_PRECISION = 520,
-    PRECISION = 521,
-    PACKED = 522,
-    RESOURCE = 523,
-    SUPERP = 524
-  };
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     ATTRIBUTE = 258,
+     VARYING = 259,
+     CONST = 260,
+     BOOL = 261,
+     FLOAT = 262,
+     DOUBLE = 263,
+     INT = 264,
+     UINT = 265,
+     INT64_T = 266,
+     UINT64_T = 267,
+     BREAK = 268,
+     CONTINUE = 269,
+     DO = 270,
+     ELSE = 271,
+     FOR = 272,
+     IF = 273,
+     DISCARD = 274,
+     RETURN = 275,
+     SWITCH = 276,
+     CASE = 277,
+     DEFAULT = 278,
+     SUBROUTINE = 279,
+     BVEC2 = 280,
+     BVEC3 = 281,
+     BVEC4 = 282,
+     IVEC2 = 283,
+     IVEC3 = 284,
+     IVEC4 = 285,
+     I64VEC2 = 286,
+     I64VEC3 = 287,
+     I64VEC4 = 288,
+     UVEC2 = 289,
+     UVEC3 = 290,
+     UVEC4 = 291,
+     U64VEC2 = 292,
+     U64VEC3 = 293,
+     U64VEC4 = 294,
+     VEC2 = 295,
+     VEC3 = 296,
+     VEC4 = 297,
+     MAT2 = 298,
+     MAT3 = 299,
+     MAT4 = 300,
+     CENTROID = 301,
+     IN = 302,
+     OUT = 303,
+     INOUT = 304,
+     UNIFORM = 305,
+     PATCH = 306,
+     SAMPLE = 307,
+     BUFFER = 308,
+     SHARED = 309,
+     COHERENT = 310,
+     VOLATILE = 311,
+     RESTRICT = 312,
+     READONLY = 313,
+     WRITEONLY = 314,
+     DVEC2 = 315,
+     DVEC3 = 316,
+     DVEC4 = 317,
+     DMAT2 = 318,
+     DMAT3 = 319,
+     DMAT4 = 320,
+     NOPERSPECTIVE = 321,
+     FLAT = 322,
+     SMOOTH = 323,
+     LAYOUT = 324,
+     __EXPLICITINTERPAMD = 325,
+     MAT2X2 = 326,
+     MAT2X3 = 327,
+     MAT2X4 = 328,
+     MAT3X2 = 329,
+     MAT3X3 = 330,
+     MAT3X4 = 331,
+     MAT4X2 = 332,
+     MAT4X3 = 333,
+     MAT4X4 = 334,
+     DMAT2X2 = 335,
+     DMAT2X3 = 336,
+     DMAT2X4 = 337,
+     DMAT3X2 = 338,
+     DMAT3X3 = 339,
+     DMAT3X4 = 340,
+     DMAT4X2 = 341,
+     DMAT4X3 = 342,
+     DMAT4X4 = 343,
+     ATOMIC_UINT = 344,
+     SAMPLER1D = 345,
+     SAMPLER2D = 346,
+     SAMPLER3D = 347,
+     SAMPLERCUBE = 348,
+     SAMPLER1DSHADOW = 349,
+     SAMPLER2DSHADOW = 350,
+     SAMPLERCUBESHADOW = 351,
+     SAMPLER1DARRAY = 352,
+     SAMPLER2DARRAY = 353,
+     SAMPLER1DARRAYSHADOW = 354,
+     SAMPLER2DARRAYSHADOW = 355,
+     ISAMPLER1D = 356,
+     ISAMPLER2D = 357,
+     ISAMPLER3D = 358,
+     ISAMPLERCUBE = 359,
+     ISAMPLER1DARRAY = 360,
+     ISAMPLER2DARRAY = 361,
+     USAMPLER1D = 362,
+     USAMPLER2D = 363,
+     USAMPLER3D = 364,
+     USAMPLERCUBE = 365,
+     USAMPLER1DARRAY = 366,
+     USAMPLER2DARRAY = 367,
+     SAMPLER2DRECT = 368,
+     SAMPLER2DRECTSHADOW = 369,
+     ISAMPLER2DRECT = 370,
+     USAMPLER2DRECT = 371,
+     SAMPLERBUFFER = 372,
+     ISAMPLERBUFFER = 373,
+     USAMPLERBUFFER = 374,
+     SAMPLERCUBEARRAY = 375,
+     SAMPLERCUBEARRAYSHADOW = 376,
+     ISAMPLERCUBEARRAY = 377,
+     USAMPLERCUBEARRAY = 378,
+     SAMPLER2DMS = 379,
+     ISAMPLER2DMS = 380,
+     USAMPLER2DMS = 381,
+     SAMPLER2DMSARRAY = 382,
+     ISAMPLER2DMSARRAY = 383,
+     USAMPLER2DMSARRAY = 384,
+     SAMPLEREXTERNALOES = 385,
+     SAMPLER = 386,
+     SAMPLERSHADOW = 387,
+     TEXTURE1D = 388,
+     TEXTURE2D = 389,
+     TEXTURE3D = 390,
+     TEXTURECUBE = 391,
+     TEXTURE1DARRAY = 392,
+     TEXTURE2DARRAY = 393,
+     ITEXTURE1D = 394,
+     ITEXTURE2D = 395,
+     ITEXTURE3D = 396,
+     ITEXTURECUBE = 397,
+     ITEXTURE1DARRAY = 398,
+     ITEXTURE2DARRAY = 399,
+     UTEXTURE1D = 400,
+     UTEXTURE2D = 401,
+     UTEXTURE3D = 402,
+     UTEXTURECUBE = 403,
+     UTEXTURE1DARRAY = 404,
+     UTEXTURE2DARRAY = 405,
+     TEXTURE2DRECT = 406,
+     ITEXTURE2DRECT = 407,
+     UTEXTURE2DRECT = 408,
+     TEXTUREBUFFER = 409,
+     ITEXTUREBUFFER = 410,
+     UTEXTUREBUFFER = 411,
+     TEXTURECUBEARRAY = 412,
+     ITEXTURECUBEARRAY = 413,
+     UTEXTURECUBEARRAY = 414,
+     TEXTURE2DMS = 415,
+     ITEXTURE2DMS = 416,
+     UTEXTURE2DMS = 417,
+     TEXTURE2DMSARRAY = 418,
+     ITEXTURE2DMSARRAY = 419,
+     UTEXTURE2DMSARRAY = 420,
+     SUBPASSINPUT = 421,
+     SUBPASSINPUTMS = 422,
+     ISUBPASSINPUT = 423,
+     ISUBPASSINPUTMS = 424,
+     USUBPASSINPUT = 425,
+     USUBPASSINPUTMS = 426,
+     IMAGE1D = 427,
+     IIMAGE1D = 428,
+     UIMAGE1D = 429,
+     IMAGE2D = 430,
+     IIMAGE2D = 431,
+     UIMAGE2D = 432,
+     IMAGE3D = 433,
+     IIMAGE3D = 434,
+     UIMAGE3D = 435,
+     IMAGE2DRECT = 436,
+     IIMAGE2DRECT = 437,
+     UIMAGE2DRECT = 438,
+     IMAGECUBE = 439,
+     IIMAGECUBE = 440,
+     UIMAGECUBE = 441,
+     IMAGEBUFFER = 442,
+     IIMAGEBUFFER = 443,
+     UIMAGEBUFFER = 444,
+     IMAGE1DARRAY = 445,
+     IIMAGE1DARRAY = 446,
+     UIMAGE1DARRAY = 447,
+     IMAGE2DARRAY = 448,
+     IIMAGE2DARRAY = 449,
+     UIMAGE2DARRAY = 450,
+     IMAGECUBEARRAY = 451,
+     IIMAGECUBEARRAY = 452,
+     UIMAGECUBEARRAY = 453,
+     IMAGE2DMS = 454,
+     IIMAGE2DMS = 455,
+     UIMAGE2DMS = 456,
+     IMAGE2DMSARRAY = 457,
+     IIMAGE2DMSARRAY = 458,
+     UIMAGE2DMSARRAY = 459,
+     STRUCT = 460,
+     VOID = 461,
+     WHILE = 462,
+     IDENTIFIER = 463,
+     TYPE_NAME = 464,
+     FLOATCONSTANT = 465,
+     DOUBLECONSTANT = 466,
+     INTCONSTANT = 467,
+     UINTCONSTANT = 468,
+     INT64CONSTANT = 469,
+     UINT64CONSTANT = 470,
+     BOOLCONSTANT = 471,
+     LEFT_OP = 472,
+     RIGHT_OP = 473,
+     INC_OP = 474,
+     DEC_OP = 475,
+     LE_OP = 476,
+     GE_OP = 477,
+     EQ_OP = 478,
+     NE_OP = 479,
+     AND_OP = 480,
+     OR_OP = 481,
+     XOR_OP = 482,
+     MUL_ASSIGN = 483,
+     DIV_ASSIGN = 484,
+     ADD_ASSIGN = 485,
+     MOD_ASSIGN = 486,
+     LEFT_ASSIGN = 487,
+     RIGHT_ASSIGN = 488,
+     AND_ASSIGN = 489,
+     XOR_ASSIGN = 490,
+     OR_ASSIGN = 491,
+     SUB_ASSIGN = 492,
+     LEFT_PAREN = 493,
+     RIGHT_PAREN = 494,
+     LEFT_BRACKET = 495,
+     RIGHT_BRACKET = 496,
+     LEFT_BRACE = 497,
+     RIGHT_BRACE = 498,
+     DOT = 499,
+     COMMA = 500,
+     COLON = 501,
+     EQUAL = 502,
+     SEMICOLON = 503,
+     BANG = 504,
+     DASH = 505,
+     TILDE = 506,
+     PLUS = 507,
+     STAR = 508,
+     SLASH = 509,
+     PERCENT = 510,
+     LEFT_ANGLE = 511,
+     RIGHT_ANGLE = 512,
+     VERTICAL_BAR = 513,
+     CARET = 514,
+     AMPERSAND = 515,
+     QUESTION = 516,
+     INVARIANT = 517,
+     PRECISE = 518,
+     HIGH_PRECISION = 519,
+     MEDIUM_PRECISION = 520,
+     LOW_PRECISION = 521,
+     PRECISION = 522,
+     PACKED = 523,
+     RESOURCE = 524,
+     SUPERP = 525
+   };
 #endif
 
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 
-union YYSTYPE
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
 {
-#line 66 "MachineIndependent/glslang.y" /* yacc.c:355  */
+/* Line 387 of yacc.c  */
+#line 66 "glslang.y"
 
     struct {
         glslang::TSourceLoc loc;
@@ -431,22 +435,35 @@
         };
     } interm;
 
-#line 435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
-};
 
-typedef union YYSTYPE YYSTYPE;
+/* Line 387 of yacc.c  */
+#line 441 "glslang_tab.cpp"
+} YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
 int yyparse (glslang::TParseContext* pParseContext);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
-#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED  */
+#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
-#line 100 "MachineIndependent/glslang.y" /* yacc.c:358  */
+/* Line 390 of yacc.c  */
+#line 100 "glslang.y"
 
 
 /* windows only pragma */
@@ -462,7 +479,8 @@
 extern int yylex(YYSTYPE*, TParseContext&);
 
 
-#line 466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
+/* Line 390 of yacc.c  */
+#line 484 "glslang_tab.cpp"
 
 #ifdef short
 # undef short
@@ -476,8 +494,11 @@
 
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
-#else
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
 #endif
 
 #ifdef YYTYPE_UINT16
@@ -497,7 +518,8 @@
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -519,33 +541,6 @@
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-# else
-#  define YY_ATTRIBUTE(Spec) /* empty */
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -553,25 +548,23 @@
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
-    _Pragma ("GCC diagnostic pop")
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(N) (N)
 #else
-# define YY_INITIAL_VALUE(Value) Value
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+    int yyi;
 #endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+{
+  return yyi;
+}
 #endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
@@ -590,7 +583,8 @@
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
@@ -602,8 +596,8 @@
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's 'empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -619,7 +613,7 @@
 #  endif
 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
-             && (defined YYFREE || defined free)))
+	     && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #   ifndef EXIT_SUCCESS
 #    define EXIT_SUCCESS 0
@@ -627,13 +621,15 @@
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS
+#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS
+#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
@@ -643,7 +639,7 @@
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
@@ -668,16 +664,16 @@
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
-    do                                                                  \
-      {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
-        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-        Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
-      }                                                                 \
-    while (0)
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+	Stack = &yyptr->Stack_alloc;					\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (YYID (0))
 
 #endif
 
@@ -696,35 +692,33 @@
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
-      while (0)
+      while (YYID (0))
 #  endif
 # endif
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  248
+#define YYFINAL  249
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   5943
+#define YYLAST   5966
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  270
+#define YYNTOKENS  271
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  100
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  421
-/* YYNSTATES -- Number of states.  */
-#define YYNSTATES  553
+#define YYNRULES  422
+/* YYNRULES -- Number of states.  */
+#define YYNSTATES  554
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   524
+#define YYMAXUTOK   525
 
-#define YYTRANSLATE(YYX)                                                \
+#define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 static const yytype_uint16 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -779,11 +773,172 @@
      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
+     265,   266,   267,   268,   269,   270
 };
 
 #if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
+{
+       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
+      19,    21,    25,    27,    32,    34,    38,    41,    44,    46,
+      48,    50,    53,    56,    59,    61,    64,    68,    71,    73,
+      75,    77,    80,    83,    86,    88,    90,    92,    94,    96,
+     100,   104,   108,   110,   114,   118,   120,   124,   128,   130,
+     134,   138,   142,   146,   148,   152,   156,   158,   162,   164,
+     168,   170,   174,   176,   180,   182,   186,   188,   192,   194,
+     195,   202,   204,   208,   210,   212,   214,   216,   218,   220,
+     222,   224,   226,   228,   230,   232,   236,   238,   241,   244,
+     249,   252,   256,   261,   264,   268,   273,   274,   281,   284,
+     288,   291,   293,   295,   298,   302,   306,   309,   313,   316,
+     318,   321,   323,   325,   327,   331,   336,   343,   349,   351,
+     354,   358,   364,   369,   371,   374,   376,   378,   380,   382,
+     384,   389,   391,   395,   397,   401,   403,   405,   407,   410,
+     412,   414,   416,   418,   420,   422,   424,   426,   428,   430,
+     432,   434,   436,   438,   440,   442,   444,   446,   448,   450,
+     452,   454,   456,   458,   463,   465,   469,   471,   474,   477,
+     481,   485,   490,   492,   494,   496,   498,   500,   502,   504,
+     506,   508,   510,   512,   514,   516,   518,   520,   522,   524,
+     526,   528,   530,   532,   534,   536,   538,   540,   542,   544,
+     546,   548,   550,   552,   554,   556,   558,   560,   562,   564,
+     566,   568,   570,   572,   574,   576,   578,   580,   582,   584,
+     586,   588,   590,   592,   594,   596,   598,   600,   602,   604,
+     606,   608,   610,   612,   614,   616,   618,   620,   622,   624,
+     626,   628,   630,   632,   634,   636,   638,   640,   642,   644,
+     646,   648,   650,   652,   654,   656,   658,   660,   662,   664,
+     666,   668,   670,   672,   674,   676,   678,   680,   682,   684,
+     686,   688,   690,   692,   694,   696,   698,   700,   702,   704,
+     706,   708,   710,   712,   714,   716,   718,   720,   722,   724,
+     726,   728,   730,   732,   734,   736,   738,   740,   742,   744,
+     746,   748,   750,   752,   754,   756,   758,   760,   762,   764,
+     766,   768,   770,   772,   774,   776,   778,   780,   782,   784,
+     786,   788,   790,   792,   794,   796,   798,   800,   802,   804,
+     806,   808,   810,   812,   814,   816,   818,   820,   822,   824,
+     826,   828,   830,   832,   834,   836,   838,   839,   846,   847,
+     853,   855,   858,   862,   867,   869,   873,   875,   878,   880,
+     884,   889,   891,   895,   897,   899,   901,   903,   905,   907,
+     909,   911,   913,   915,   918,   919,   920,   926,   928,   930,
+     931,   934,   935,   938,   941,   945,   947,   950,   952,   955,
+     961,   965,   967,   969,   974,   975,   984,   985,   987,   991,
+     994,   995,  1002,  1003,  1012,  1013,  1021,  1023,  1025,  1027,
+    1028,  1031,  1035,  1038,  1041,  1044,  1048,  1051,  1053,  1056,
+    1058,  1060,  1061
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     367,     0,    -1,   208,    -1,   272,    -1,   212,    -1,   213,
+      -1,   214,    -1,   215,    -1,   210,    -1,   211,    -1,   216,
+      -1,   238,   300,   239,    -1,   273,    -1,   274,   240,   275,
+     241,    -1,   276,    -1,   274,   244,   208,    -1,   274,   219,
+      -1,   274,   220,    -1,   300,    -1,   277,    -1,   278,    -1,
+     280,   239,    -1,   279,   239,    -1,   281,   206,    -1,   281,
+      -1,   281,   298,    -1,   280,   245,   298,    -1,   282,   238,
+      -1,   326,    -1,   274,    -1,   274,    -1,   219,   283,    -1,
+     220,   283,    -1,   284,   283,    -1,   252,    -1,   250,    -1,
+     249,    -1,   251,    -1,   283,    -1,   285,   253,   283,    -1,
+     285,   254,   283,    -1,   285,   255,   283,    -1,   285,    -1,
+     286,   252,   285,    -1,   286,   250,   285,    -1,   286,    -1,
+     287,   217,   286,    -1,   287,   218,   286,    -1,   287,    -1,
+     288,   256,   287,    -1,   288,   257,   287,    -1,   288,   221,
+     287,    -1,   288,   222,   287,    -1,   288,    -1,   289,   223,
+     288,    -1,   289,   224,   288,    -1,   289,    -1,   290,   260,
+     289,    -1,   290,    -1,   291,   259,   290,    -1,   291,    -1,
+     292,   258,   291,    -1,   292,    -1,   293,   225,   292,    -1,
+     293,    -1,   294,   227,   293,    -1,   294,    -1,   295,   226,
+     294,    -1,   295,    -1,    -1,   295,   261,   297,   300,   246,
+     298,    -1,   296,    -1,   283,   299,   298,    -1,   247,    -1,
+     228,    -1,   229,    -1,   231,    -1,   230,    -1,   237,    -1,
+     232,    -1,   233,    -1,   234,    -1,   235,    -1,   236,    -1,
+     298,    -1,   300,   245,   298,    -1,   296,    -1,   306,   248,
+      -1,   313,   248,    -1,   267,   329,   326,   248,    -1,   303,
+     248,    -1,   303,   208,   248,    -1,   303,   208,   327,   248,
+      -1,   322,   248,    -1,   322,   208,   248,    -1,   322,   208,
+     305,   248,    -1,    -1,   322,   208,   242,   304,   333,   243,
+      -1,   245,   208,    -1,   305,   245,   208,    -1,   307,   239,
+      -1,   309,    -1,   308,    -1,   309,   311,    -1,   308,   245,
+     311,    -1,   315,   208,   238,    -1,   326,   208,    -1,   326,
+     208,   327,    -1,   322,   310,    -1,   310,    -1,   322,   312,
+      -1,   312,    -1,   326,    -1,   314,    -1,   313,   245,   208,
+      -1,   313,   245,   208,   327,    -1,   313,   245,   208,   327,
+     247,   337,    -1,   313,   245,   208,   247,   337,    -1,   315,
+      -1,   315,   208,    -1,   315,   208,   327,    -1,   315,   208,
+     327,   247,   337,    -1,   315,   208,   247,   337,    -1,   326,
+      -1,   322,   326,    -1,   262,    -1,    68,    -1,    67,    -1,
+      66,    -1,    70,    -1,    69,   238,   319,   239,    -1,   320,
+      -1,   319,   245,   320,    -1,   208,    -1,   208,   247,   301,
+      -1,    54,    -1,   263,    -1,   323,    -1,   322,   323,    -1,
+     324,    -1,   318,    -1,   329,    -1,   317,    -1,   316,    -1,
+     321,    -1,     5,    -1,     3,    -1,     4,    -1,    49,    -1,
+      47,    -1,    48,    -1,    46,    -1,    51,    -1,    52,    -1,
+      50,    -1,    53,    -1,    54,    -1,    55,    -1,    56,    -1,
+      57,    -1,    58,    -1,    59,    -1,    24,    -1,    24,   238,
+     325,   239,    -1,   209,    -1,   325,   245,   209,    -1,   328,
+      -1,   328,   327,    -1,   240,   241,    -1,   240,   296,   241,
+      -1,   327,   240,   241,    -1,   327,   240,   296,   241,    -1,
+     206,    -1,     7,    -1,     8,    -1,     9,    -1,    10,    -1,
+      11,    -1,    12,    -1,     6,    -1,    40,    -1,    41,    -1,
+      42,    -1,    60,    -1,    61,    -1,    62,    -1,    25,    -1,
+      26,    -1,    27,    -1,    28,    -1,    29,    -1,    30,    -1,
+      31,    -1,    32,    -1,    33,    -1,    34,    -1,    35,    -1,
+      36,    -1,    37,    -1,    38,    -1,    39,    -1,    43,    -1,
+      44,    -1,    45,    -1,    71,    -1,    72,    -1,    73,    -1,
+      74,    -1,    75,    -1,    76,    -1,    77,    -1,    78,    -1,
+      79,    -1,    63,    -1,    64,    -1,    65,    -1,    80,    -1,
+      81,    -1,    82,    -1,    83,    -1,    84,    -1,    85,    -1,
+      86,    -1,    87,    -1,    88,    -1,    89,    -1,    90,    -1,
+      91,    -1,    92,    -1,    93,    -1,    94,    -1,    95,    -1,
+      96,    -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,
+     120,    -1,   121,    -1,   101,    -1,   102,    -1,   103,    -1,
+     104,    -1,   105,    -1,   106,    -1,   122,    -1,   107,    -1,
+     108,    -1,   109,    -1,   110,    -1,   111,    -1,   112,    -1,
+     123,    -1,   113,    -1,   114,    -1,   115,    -1,   116,    -1,
+     117,    -1,   118,    -1,   119,    -1,   124,    -1,   125,    -1,
+     126,    -1,   127,    -1,   128,    -1,   129,    -1,   131,    -1,
+     132,    -1,   133,    -1,   134,    -1,   135,    -1,   136,    -1,
+     137,    -1,   138,    -1,   157,    -1,   139,    -1,   140,    -1,
+     141,    -1,   142,    -1,   143,    -1,   144,    -1,   158,    -1,
+     145,    -1,   146,    -1,   147,    -1,   148,    -1,   149,    -1,
+     150,    -1,   159,    -1,   151,    -1,   152,    -1,   153,    -1,
+     154,    -1,   155,    -1,   156,    -1,   160,    -1,   161,    -1,
+     162,    -1,   163,    -1,   164,    -1,   165,    -1,   172,    -1,
+     173,    -1,   174,    -1,   175,    -1,   176,    -1,   177,    -1,
+     178,    -1,   179,    -1,   180,    -1,   181,    -1,   182,    -1,
+     183,    -1,   184,    -1,   185,    -1,   186,    -1,   187,    -1,
+     188,    -1,   189,    -1,   190,    -1,   191,    -1,   192,    -1,
+     193,    -1,   194,    -1,   195,    -1,   196,    -1,   197,    -1,
+     198,    -1,   199,    -1,   200,    -1,   201,    -1,   202,    -1,
+     203,    -1,   204,    -1,   130,    -1,   166,    -1,   167,    -1,
+     168,    -1,   169,    -1,   170,    -1,   171,    -1,   330,    -1,
+     209,    -1,   264,    -1,   265,    -1,   266,    -1,    -1,   205,
+     208,   242,   331,   333,   243,    -1,    -1,   205,   242,   332,
+     333,   243,    -1,   334,    -1,   333,   334,    -1,   326,   335,
+     248,    -1,   322,   326,   335,   248,    -1,   336,    -1,   335,
+     245,   336,    -1,   208,    -1,   208,   327,    -1,   298,    -1,
+     242,   338,   243,    -1,   242,   338,   245,   243,    -1,   337,
+      -1,   338,   245,   337,    -1,   302,    -1,   342,    -1,   341,
+      -1,   339,    -1,   351,    -1,   352,    -1,   355,    -1,   358,
+      -1,   359,    -1,   366,    -1,   242,   243,    -1,    -1,    -1,
+     242,   343,   350,   344,   243,    -1,   349,    -1,   341,    -1,
+      -1,   347,   342,    -1,    -1,   348,   341,    -1,   242,   243,
+      -1,   242,   350,   243,    -1,   340,    -1,   350,   340,    -1,
+     248,    -1,   300,   248,    -1,    18,   238,   300,   239,   353,
+      -1,   346,    16,   346,    -1,   346,    -1,   300,    -1,   315,
+     208,   247,   337,    -1,    -1,    21,   238,   300,   239,   356,
+     242,   357,   243,    -1,    -1,   350,    -1,    22,   300,   246,
+      -1,    23,   246,    -1,    -1,   207,   238,   360,   354,   239,
+     345,    -1,    -1,    15,   361,   340,   207,   238,   300,   239,
+     248,    -1,    -1,    17,   238,   362,   363,   365,   239,   345,
+      -1,   351,    -1,   339,    -1,   354,    -1,    -1,   364,   248,
+      -1,   364,   248,   300,    -1,    14,   248,    -1,    13,   248,
+      -1,    20,   248,    -1,    20,   300,   248,    -1,    19,   248,
+      -1,   368,    -1,   367,   368,    -1,   369,    -1,   302,    -1,
+      -1,   306,   370,   349,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
        0,   246,   246,   252,   255,   258,   262,   266,   270,   273,
@@ -798,37 +953,37 @@
      728,   732,   736,   740,   745,   750,   759,   759,   770,   774,
      781,   788,   791,   798,   806,   826,   844,   859,   882,   893,
      903,   913,   923,   932,   935,   939,   943,   948,   956,   961,
-     966,   971,   976,   985,   996,  1023,  1032,  1039,  1046,  1056,
-    1062,  1065,  1072,  1076,  1080,  1088,  1097,  1100,  1111,  1114,
-    1117,  1120,  1124,  1128,  1135,  1139,  1151,  1165,  1170,  1176,
-    1182,  1189,  1195,  1200,  1205,  1210,  1217,  1221,  1225,  1229,
-    1233,  1237,  1243,  1255,  1258,  1263,  1267,  1276,  1281,  1289,
-    1293,  1303,  1307,  1311,  1316,  1320,  1325,  1330,  1335,  1339,
-    1344,  1349,  1354,  1360,  1366,  1372,  1377,  1382,  1387,  1392,
-    1397,  1402,  1408,  1414,  1420,  1426,  1432,  1438,  1444,  1450,
-    1456,  1461,  1466,  1471,  1476,  1481,  1486,  1491,  1496,  1501,
-    1506,  1511,  1516,  1522,  1528,  1534,  1540,  1546,  1552,  1558,
-    1564,  1570,  1576,  1582,  1588,  1593,  1598,  1603,  1608,  1613,
-    1618,  1623,  1628,  1633,  1638,  1643,  1648,  1653,  1658,  1663,
-    1668,  1673,  1678,  1683,  1688,  1693,  1698,  1703,  1708,  1713,
-    1718,  1723,  1728,  1733,  1738,  1743,  1748,  1753,  1758,  1763,
-    1768,  1773,  1778,  1783,  1788,  1793,  1798,  1803,  1808,  1813,
-    1818,  1823,  1828,  1833,  1838,  1843,  1848,  1853,  1858,  1863,
-    1868,  1873,  1878,  1883,  1888,  1893,  1898,  1903,  1908,  1913,
-    1918,  1923,  1928,  1933,  1938,  1943,  1948,  1953,  1958,  1963,
-    1968,  1973,  1978,  1983,  1988,  1993,  1998,  2003,  2008,  2013,
-    2018,  2023,  2028,  2033,  2038,  2043,  2048,  2053,  2058,  2063,
-    2068,  2073,  2078,  2083,  2088,  2093,  2098,  2103,  2108,  2113,
-    2118,  2123,  2128,  2133,  2139,  2145,  2151,  2157,  2163,  2169,
-    2175,  2180,  2196,  2202,  2208,  2217,  2217,  2228,  2228,  2238,
-    2241,  2254,  2272,  2296,  2300,  2306,  2311,  2322,  2325,  2331,
-    2340,  2343,  2349,  2353,  2354,  2360,  2361,  2362,  2363,  2364,
-    2365,  2366,  2370,  2371,  2375,  2371,  2387,  2388,  2392,  2392,
-    2399,  2399,  2413,  2416,  2424,  2432,  2443,  2444,  2448,  2455,
-    2459,  2467,  2471,  2484,  2484,  2504,  2507,  2513,  2525,  2537,
-    2537,  2552,  2552,  2568,  2568,  2589,  2592,  2598,  2601,  2607,
-    2611,  2618,  2623,  2628,  2635,  2638,  2647,  2651,  2658,  2661,
-    2667,  2667
+     966,   971,   976,   985,   996,  1023,  1032,  1039,  1046,  1053,
+    1065,  1071,  1074,  1081,  1085,  1089,  1097,  1106,  1109,  1120,
+    1123,  1126,  1129,  1133,  1137,  1144,  1148,  1160,  1174,  1179,
+    1185,  1191,  1198,  1204,  1209,  1214,  1219,  1226,  1230,  1234,
+    1238,  1242,  1246,  1252,  1264,  1267,  1272,  1276,  1285,  1290,
+    1298,  1302,  1312,  1316,  1320,  1325,  1329,  1334,  1339,  1344,
+    1348,  1353,  1358,  1363,  1369,  1375,  1381,  1386,  1391,  1396,
+    1401,  1406,  1411,  1417,  1423,  1429,  1435,  1441,  1447,  1453,
+    1459,  1465,  1470,  1475,  1480,  1485,  1490,  1495,  1500,  1505,
+    1510,  1515,  1520,  1525,  1531,  1537,  1543,  1549,  1555,  1561,
+    1567,  1573,  1579,  1585,  1591,  1597,  1602,  1607,  1612,  1617,
+    1622,  1627,  1632,  1637,  1642,  1647,  1652,  1657,  1662,  1667,
+    1672,  1677,  1682,  1687,  1692,  1697,  1702,  1707,  1712,  1717,
+    1722,  1727,  1732,  1737,  1742,  1747,  1752,  1757,  1762,  1767,
+    1772,  1777,  1782,  1787,  1792,  1797,  1802,  1807,  1812,  1817,
+    1822,  1827,  1832,  1837,  1842,  1847,  1852,  1857,  1862,  1867,
+    1872,  1877,  1882,  1887,  1892,  1897,  1902,  1907,  1912,  1917,
+    1922,  1927,  1932,  1937,  1942,  1947,  1952,  1957,  1962,  1967,
+    1972,  1977,  1982,  1987,  1992,  1997,  2002,  2007,  2012,  2017,
+    2022,  2027,  2032,  2037,  2042,  2047,  2052,  2057,  2062,  2067,
+    2072,  2077,  2082,  2087,  2092,  2097,  2102,  2107,  2112,  2117,
+    2122,  2127,  2132,  2137,  2142,  2148,  2154,  2160,  2166,  2172,
+    2178,  2184,  2189,  2205,  2211,  2217,  2226,  2226,  2237,  2237,
+    2247,  2250,  2263,  2281,  2305,  2309,  2315,  2320,  2331,  2334,
+    2340,  2349,  2352,  2358,  2362,  2363,  2369,  2370,  2371,  2372,
+    2373,  2374,  2375,  2379,  2380,  2384,  2380,  2396,  2397,  2401,
+    2401,  2408,  2408,  2422,  2425,  2433,  2441,  2452,  2453,  2457,
+    2464,  2468,  2476,  2480,  2493,  2493,  2513,  2516,  2522,  2534,
+    2546,  2546,  2561,  2561,  2577,  2577,  2598,  2601,  2607,  2610,
+    2616,  2620,  2627,  2632,  2637,  2644,  2647,  2656,  2660,  2667,
+    2670,  2676,  2676
 };
 #endif
 
@@ -846,54 +1001,55 @@
   "MAT3", "MAT4", "CENTROID", "IN", "OUT", "INOUT", "UNIFORM", "PATCH",
   "SAMPLE", "BUFFER", "SHARED", "COHERENT", "VOLATILE", "RESTRICT",
   "READONLY", "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3",
-  "DMAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", "MAT2X2", "MAT2X3",
-  "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4",
-  "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4",
-  "DMAT4X2", "DMAT4X3", "DMAT4X4", "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D",
-  "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW", "SAMPLER2DSHADOW",
-  "SAMPLERCUBESHADOW", "SAMPLER1DARRAY", "SAMPLER2DARRAY",
-  "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW", "ISAMPLER1D",
-  "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER1DARRAY",
-  "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D", "USAMPLER3D",
-  "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY", "SAMPLER2DRECT",
-  "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT",
-  "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLERCUBEARRAY",
-  "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY",
-  "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY",
-  "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES",
-  "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", "TEXTURE2D", "TEXTURE3D",
-  "TEXTURECUBE", "TEXTURE1DARRAY", "TEXTURE2DARRAY", "ITEXTURE1D",
-  "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE1DARRAY",
-  "ITEXTURE2DARRAY", "UTEXTURE1D", "UTEXTURE2D", "UTEXTURE3D",
-  "UTEXTURECUBE", "UTEXTURE1DARRAY", "UTEXTURE2DARRAY", "TEXTURE2DRECT",
-  "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER",
-  "UTEXTUREBUFFER", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY",
-  "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS", "UTEXTURE2DMS",
-  "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", "UTEXTURE2DMSARRAY",
-  "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS",
-  "USUBPASSINPUT", "USUBPASSINPUTMS", "IMAGE1D", "IIMAGE1D", "UIMAGE1D",
-  "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D", "IIMAGE3D", "UIMAGE3D",
-  "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT", "IMAGECUBE", "IIMAGECUBE",
-  "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER",
-  "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY", "IMAGE2DARRAY",
-  "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY", "IIMAGECUBEARRAY",
-  "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS", "UIMAGE2DMS",
-  "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", "STRUCT", "VOID",
-  "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT",
-  "INTCONSTANT", "UINTCONSTANT", "INT64CONSTANT", "UINT64CONSTANT",
-  "BOOLCONSTANT", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP",
-  "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN",
-  "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN",
-  "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN",
-  "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE",
-  "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG",
-  "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE",
-  "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION",
-  "INVARIANT", "PRECISE", "HIGH_PRECISION", "MEDIUM_PRECISION",
-  "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP", "$accept",
-  "variable_identifier", "primary_expression", "postfix_expression",
-  "integer_expression", "function_call", "function_call_or_method",
-  "function_call_generic", "function_call_header_no_parameters",
+  "DMAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT",
+  "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3",
+  "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3", "DMAT2X4",
+  "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4",
+  "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE",
+  "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW",
+  "SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW",
+  "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D",
+  "ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D",
+  "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY",
+  "USAMPLER2DARRAY", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW",
+  "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER",
+  "USAMPLERBUFFER", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW",
+  "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS",
+  "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY",
+  "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLER", "SAMPLERSHADOW",
+  "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY",
+  "TEXTURE2DARRAY", "ITEXTURE1D", "ITEXTURE2D", "ITEXTURE3D",
+  "ITEXTURECUBE", "ITEXTURE1DARRAY", "ITEXTURE2DARRAY", "UTEXTURE1D",
+  "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE1DARRAY",
+  "UTEXTURE2DARRAY", "TEXTURE2DRECT", "ITEXTURE2DRECT", "UTEXTURE2DRECT",
+  "TEXTUREBUFFER", "ITEXTUREBUFFER", "UTEXTUREBUFFER", "TEXTURECUBEARRAY",
+  "ITEXTURECUBEARRAY", "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS",
+  "UTEXTURE2DMS", "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY",
+  "UTEXTURE2DMSARRAY", "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT",
+  "ISUBPASSINPUTMS", "USUBPASSINPUT", "USUBPASSINPUTMS", "IMAGE1D",
+  "IIMAGE1D", "UIMAGE1D", "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D",
+  "IIMAGE3D", "UIMAGE3D", "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT",
+  "IMAGECUBE", "IIMAGECUBE", "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER",
+  "UIMAGEBUFFER", "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY",
+  "IMAGE2DARRAY", "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY",
+  "IIMAGECUBEARRAY", "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS",
+  "UIMAGE2DMS", "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY",
+  "STRUCT", "VOID", "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT",
+  "DOUBLECONSTANT", "INTCONSTANT", "UINTCONSTANT", "INT64CONSTANT",
+  "UINT64CONSTANT", "BOOLCONSTANT", "LEFT_OP", "RIGHT_OP", "INC_OP",
+  "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP",
+  "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN",
+  "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN",
+  "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
+  "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON",
+  "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH",
+  "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET",
+  "AMPERSAND", "QUESTION", "INVARIANT", "PRECISE", "HIGH_PRECISION",
+  "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE",
+  "SUPERP", "$accept", "variable_identifier", "primary_expression",
+  "postfix_expression", "integer_expression", "function_call",
+  "function_call_or_method", "function_call_generic",
+  "function_call_header_no_parameters",
   "function_call_header_with_parameters", "function_call_header",
   "function_identifier", "unary_expression", "unary_operator",
   "multiplicative_expression", "additive_expression", "shift_expression",
@@ -923,13 +1079,13 @@
   "switch_statement_list", "case_label", "iteration_statement", "$@10",
   "$@11", "$@12", "for_init_statement", "conditionopt",
   "for_rest_statement", "jump_statement", "translation_unit",
-  "external_declaration", "function_definition", "$@13", YY_NULLPTR
+  "external_declaration", "function_definition", "$@13", YY_NULL
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
 static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
@@ -958,343 +1114,353 @@
      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
      495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
      505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
-     515,   516,   517,   518,   519,   520,   521,   522,   523,   524
+     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
+     525
 };
 # endif
 
-#define YYPACT_NINF -496
-
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-496)))
-
-#define YYTABLE_NINF -379
-
-#define yytable_value_is_error(Yytable_value) \
-  0
-
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
-static const yytype_int16 yypact[] =
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint16 yyr1[] =
 {
-    2394,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -199,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -187,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -180,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -134,
-    -496,  -191,  -181,  -155,  -131,  3871,  -133,  -496,   -69,  -496,
-    -496,  -496,  -496,  2900,  -496,  -496,  -496,   -92,  -496,  -496,
-     546,  -496,  -496,   -68,   -45,   -91,  -496,  5735,  -200,  -496,
-    -496,   -85,  -496,  3871,  -496,  -496,  -496,  3871,   -50,   -49,
-    -496,  -209,  -193,  -496,  -496,  -496,  4323,   -80,  -496,  -496,
-    -496,  -202,  -496,   -86,  -171,  -496,  -496,  3871,   -84,  -496,
-    -198,   810,  -496,  -496,  -496,  -496,   -92,  -214,  -496,  4558,
-    -176,  -496,   -46,  -496,  -127,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  5271,  5271,  5271,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -175,  -496,  -496,  -496,   -73,  -169,  5503,
-     -71,  -496,  5271,  -118,  -170,  -195,  -197,   -90,   -89,   -87,
-     -88,   -57,   -58,  -208,   -67,  -496,  4804,  -496,   -36,  5271,
-    -496,   -45,  3871,  3871,   -33,  3145,  -496,  -496,  -496,   -72,
-     -70,  -496,   -61,   -59,   -66,  5039,   -55,  5271,   -62,   -51,
-     -54,  -496,  -496,  -141,  -496,  -496,  -125,  -496,  -181,   -48,
-    -496,  -496,  -496,  -496,  1074,  -496,  -496,  -496,  -496,  -496,
-    -496,   -80,  4558,  -174,  4558,  -496,  -496,  4558,  3871,  -496,
-     -23,  -496,  -496,  -496,  -167,  -496,  -496,  5271,   -20,  -496,
-    -496,  5271,   -43,  -496,  -496,  -496,  5271,  5271,  5271,  5271,
-    5271,  5271,  5271,  5271,  5271,  5271,  5271,  5271,  5271,  5271,
-    5271,  5271,  5271,  5271,  5271,  -496,  -496,  -496,   -44,  -496,
-    -496,  -496,  -496,  3387,   -33,   -92,  -121,  -496,  -496,  -496,
-    -496,  -496,  1338,  -496,  5271,  -496,  -496,  -120,  5271,  -102,
-    -496,  -496,  -496,  1338,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  5271,  5271,  -496,  -496,  -496,
-    -496,  4558,  -496,  -105,  -496,  3629,  -496,  -496,   -42,   -52,
-    -496,  -496,  -496,  -496,  -496,  -118,  -118,  -170,  -170,  -195,
-    -195,  -195,  -195,  -197,  -197,   -90,   -89,   -87,   -88,   -57,
-     -58,  5271,  -496,  -496,  -119,   -80,   -33,  -496,   -16,  2130,
-    -164,  -496,  -160,  -496,  2637,  1338,  -496,  -496,  -496,  -496,
-    4077,  -496,  -496,   -99,  -496,  -496,   -40,  -496,  -496,  2637,
-     -41,  -496,   -52,    -8,  3871,   -35,   -38,  -496,  -496,  5271,
-    5271,  -496,   -39,   -32,   191,   -31,  1866,  -496,   -30,   -34,
-    1602,  -496,  -496,  -138,  5271,  1602,   -41,  -496,  -496,  1338,
-    4558,  -496,  -496,  -496,   -29,   -52,  -496,  -496,  1338,   -27,
-    -496,  -496,  -496
+       0,   271,   272,   273,   273,   273,   273,   273,   273,   273,
+     273,   273,   274,   274,   274,   274,   274,   274,   275,   276,
+     277,   278,   278,   279,   279,   280,   280,   281,   282,   282,
+     283,   283,   283,   283,   284,   284,   284,   284,   285,   285,
+     285,   285,   286,   286,   286,   287,   287,   287,   288,   288,
+     288,   288,   288,   289,   289,   289,   290,   290,   291,   291,
+     292,   292,   293,   293,   294,   294,   295,   295,   296,   297,
+     296,   298,   298,   299,   299,   299,   299,   299,   299,   299,
+     299,   299,   299,   299,   300,   300,   301,   302,   302,   302,
+     302,   302,   302,   302,   302,   302,   304,   303,   305,   305,
+     306,   307,   307,   308,   308,   309,   310,   310,   311,   311,
+     311,   311,   312,   313,   313,   313,   313,   313,   314,   314,
+     314,   314,   314,   315,   315,   316,   317,   317,   317,   317,
+     318,   319,   319,   320,   320,   320,   321,   322,   322,   323,
+     323,   323,   323,   323,   323,   324,   324,   324,   324,   324,
+     324,   324,   324,   324,   324,   324,   324,   324,   324,   324,
+     324,   324,   324,   324,   325,   325,   326,   326,   327,   327,
+     327,   327,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     328,   328,   328,   329,   329,   329,   331,   330,   332,   330,
+     333,   333,   334,   334,   335,   335,   336,   336,   337,   337,
+     337,   338,   338,   339,   340,   340,   341,   341,   341,   341,
+     341,   341,   341,   342,   343,   344,   342,   345,   345,   347,
+     346,   348,   346,   349,   349,   350,   350,   351,   351,   352,
+     353,   353,   354,   354,   356,   355,   357,   357,   358,   358,
+     360,   359,   361,   359,   362,   359,   363,   363,   364,   364,
+     365,   365,   366,   366,   366,   366,   366,   367,   367,   368,
+     368,   370,   369
 };
 
-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-     Performed when YYTABLE does not specify something else to do.  Zero
-     means the default is an error.  */
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     3,     1,     4,     1,     3,     2,     2,     1,     1,
+       1,     2,     2,     2,     1,     2,     3,     2,     1,     1,
+       1,     2,     2,     2,     1,     1,     1,     1,     1,     3,
+       3,     3,     1,     3,     3,     1,     3,     3,     1,     3,
+       3,     3,     3,     1,     3,     3,     1,     3,     1,     3,
+       1,     3,     1,     3,     1,     3,     1,     3,     1,     0,
+       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     3,     1,     2,     2,     4,
+       2,     3,     4,     2,     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,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     4,     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,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     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,     5,
+       3,     1,     1,     4,     0,     8,     0,     1,     3,     2,
+       0,     6,     0,     8,     0,     7,     1,     1,     1,     0,
+       2,     3,     2,     2,     2,     3,     2,     1,     2,     1,
+       1,     0,     3
+};
+
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,   145,   146,   144,   178,   172,   173,   174,   175,   176,
-     177,   161,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   179,   180,   181,
-     200,   201,   202,   150,   148,   149,   147,   153,   151,   152,
-     154,   155,   156,   157,   158,   159,   160,   182,   183,   184,
-     212,   213,   214,   128,   127,   126,     0,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   215,   216,   217,   218,
+       0,   146,   147,   145,   179,   173,   174,   175,   176,   177,
+     178,   162,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   180,   181,   182,
+     201,   202,   203,   151,   149,   150,   148,   154,   152,   153,
+     155,   156,   157,   158,   159,   160,   161,   183,   184,   185,
+     213,   214,   215,   128,   127,   126,     0,   129,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   216,   217,   218,
      219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   238,   239,   240,
-     241,   242,   243,   245,   246,   247,   248,   249,   250,   252,
-     253,   254,   255,   256,   257,   258,   236,   237,   244,   251,
-     259,   260,   261,   262,   263,   264,   333,   265,   266,   267,
-     268,   269,   270,   271,   272,   274,   275,   276,   277,   278,
-     279,   281,   282,   283,   284,   285,   286,   288,   289,   290,
-     291,   292,   293,   273,   280,   287,   294,   295,   296,   297,
-     298,   299,   334,   335,   336,   337,   338,   339,   300,   301,
+     229,   230,   231,   232,   233,   234,   235,   236,   239,   240,
+     241,   242,   243,   244,   246,   247,   248,   249,   250,   251,
+     253,   254,   255,   256,   257,   258,   259,   237,   238,   245,
+     252,   260,   261,   262,   263,   264,   265,   334,   266,   267,
+     268,   269,   270,   271,   272,   273,   275,   276,   277,   278,
+     279,   280,   282,   283,   284,   285,   286,   287,   289,   290,
+     291,   292,   293,   294,   274,   281,   288,   295,   296,   297,
+     298,   299,   300,   335,   336,   337,   338,   339,   340,   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,     0,   171,   341,   125,   135,   342,   343,   344,     0,
-     419,     0,   420,     0,   102,   101,     0,   113,   118,   142,
-     141,   139,   143,     0,   136,   138,   123,   165,   140,   340,
-       0,   416,   418,     0,     0,     0,   347,     0,     0,    90,
-      87,     0,   100,     0,   109,   103,   111,     0,   112,     0,
-      88,   119,     0,    93,   137,   124,     0,   166,     1,   417,
-     163,     0,   134,   132,     0,   130,   345,     0,     0,    91,
-       0,     0,   421,   104,   108,   110,   106,   114,   105,     0,
-     120,    96,     0,    94,     0,     2,     8,     9,     4,     5,
-       6,     7,    10,     0,     0,     0,   167,    36,    35,    37,
-      34,     3,    12,    30,    14,    19,    20,     0,     0,    24,
-       0,    38,     0,    42,    45,    48,    53,    56,    58,    60,
-      62,    64,    66,    68,     0,    28,     0,   162,     0,     0,
-     129,     0,     0,     0,     0,     0,   349,    89,    92,     0,
-       0,   401,     0,     0,     0,     0,     0,     0,     0,     0,
-     373,   382,   386,    38,    71,    84,     0,   362,     0,   123,
-     365,   384,   364,   363,     0,   366,   367,   368,   369,   370,
-     371,   107,     0,   115,     0,   357,   122,     0,     0,    98,
-       0,    95,    31,    32,     0,    16,    17,     0,     0,    22,
-      21,     0,   171,    25,    27,    33,     0,     0,     0,     0,
+     332,   333,     0,   172,   342,   125,   136,   343,   344,   345,
+       0,   420,     0,   421,     0,   102,   101,     0,   113,   118,
+     143,   142,   140,   144,     0,   137,   139,   123,   166,   141,
+     341,     0,   417,   419,     0,     0,     0,   348,     0,     0,
+      90,    87,     0,   100,     0,   109,   103,   111,     0,   112,
+       0,    88,   119,     0,    93,   138,   124,     0,   167,     1,
+     418,   164,     0,   135,   133,     0,   131,   346,     0,     0,
+      91,     0,     0,   422,   104,   108,   110,   106,   114,   105,
+       0,   120,    96,     0,    94,     0,     2,     8,     9,     4,
+       5,     6,     7,    10,     0,     0,     0,   168,    36,    35,
+      37,    34,     3,    12,    30,    14,    19,    20,     0,     0,
+      24,     0,    38,     0,    42,    45,    48,    53,    56,    58,
+      60,    62,    64,    66,    68,     0,    28,     0,   163,     0,
+       0,   130,     0,     0,     0,     0,     0,   350,    89,    92,
+       0,     0,   402,     0,     0,     0,     0,     0,     0,     0,
+       0,   374,   383,   387,    38,    71,    84,     0,   363,     0,
+     123,   366,   385,   365,   364,     0,   367,   368,   369,   370,
+     371,   372,   107,     0,   115,     0,   358,   122,     0,     0,
+      98,     0,    95,    31,    32,     0,    16,    17,     0,     0,
+      22,    21,     0,   172,    25,    27,    33,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    69,   168,   169,     0,   164,
-      86,   133,   131,     0,     0,   355,     0,   353,   348,   350,
-     412,   411,     0,   403,     0,   415,   413,     0,     0,     0,
-     398,   399,   372,     0,    74,    75,    77,    76,    79,    80,
-      81,    82,    83,    78,    73,     0,     0,   387,   383,   385,
-     117,     0,   360,     0,   121,     0,    99,    11,     0,    18,
-      15,    26,    39,    40,    41,    44,    43,    46,    47,    51,
-      52,    49,    50,    54,    55,    57,    59,    61,    63,    65,
-      67,     0,   170,   346,     0,   356,     0,   351,     0,     0,
-       0,   414,     0,   397,     0,   374,    72,    85,   116,   358,
-       0,    97,    13,     0,   352,   354,     0,   406,   405,   408,
-     380,   393,   391,     0,     0,     0,     0,   359,   361,     0,
-       0,   407,     0,     0,   390,     0,     0,   388,     0,     0,
-       0,   375,    70,     0,   409,     0,   380,   379,   381,   395,
-       0,   377,   400,   376,     0,   410,   404,   389,   396,     0,
-     392,   402,   394
+       0,     0,     0,     0,     0,     0,    69,   169,   170,     0,
+     165,    86,   134,   132,     0,     0,   356,     0,   354,   349,
+     351,   413,   412,     0,   404,     0,   416,   414,     0,     0,
+       0,   399,   400,   373,     0,    74,    75,    77,    76,    79,
+      80,    81,    82,    83,    78,    73,     0,     0,   388,   384,
+     386,   117,     0,   361,     0,   121,     0,    99,    11,     0,
+      18,    15,    26,    39,    40,    41,    44,    43,    46,    47,
+      51,    52,    49,    50,    54,    55,    57,    59,    61,    63,
+      65,    67,     0,   171,   347,     0,   357,     0,   352,     0,
+       0,     0,   415,     0,   398,     0,   375,    72,    85,   116,
+     359,     0,    97,    13,     0,   353,   355,     0,   407,   406,
+     409,   381,   394,   392,     0,     0,     0,     0,   360,   362,
+       0,     0,   408,     0,     0,   391,     0,     0,   389,     0,
+       0,     0,   376,    70,     0,   410,     0,   381,   380,   382,
+     396,     0,   378,   401,   377,     0,   411,   405,   390,   397,
+       0,   393,   403,   395
 };
 
-  /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,   -53,  -496,  -237,  -288,  -286,  -243,  -183,  -179,
-    -184,  -177,  -168,  -185,  -496,  -234,  -496,  -266,  -496,  -280,
-    -496,     4,  -496,  -496,  -496,     6,  -496,  -496,  -496,   -15,
-     -10,    -9,  -496,  -496,  -475,  -496,  -496,  -496,  -496,   -83,
-    -496,  -204,  -211,  -496,  -496,     0,  -221,  -496,    33,  -496,
-    -496,  -496,  -308,  -314,  -178,  -247,  -349,  -496,  -248,  -346,
-    -495,  -283,  -496,  -496,  -292,  -291,  -496,  -496,    13,  -423,
-    -242,  -496,  -496,  -263,  -496,  -496,  -496,  -496,  -496,  -496,
-    -496,  -496,  -496,  -496,  -496,  -496,  -496,    28,  -496,  -496
-};
-
-  /* YYDEFGOTO[NTERM-NUM].  */
+/* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   291,   292,   293,   458,   294,   295,   296,   297,   298,
-     299,   300,   343,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   344,   481,   345,   445,   346,
-     411,   347,   201,   368,   274,   348,   203,   204,   205,   234,
-     235,   236,   206,   207,   208,   209,   210,   211,   254,   255,
-     212,   213,   214,   215,   251,   315,   247,   217,   218,   219,
-     322,   257,   325,   326,   416,   417,   366,   453,   350,   351,
-     352,   353,   433,   516,   542,   524,   525,   526,   543,   354,
-     355,   356,   527,   515,   357,   528,   549,   358,   359,   494,
-     422,   489,   509,   522,   523,   360,   220,   221,   222,   231
+      -1,   292,   293,   294,   459,   295,   296,   297,   298,   299,
+     300,   301,   344,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   345,   482,   346,   446,   347,
+     412,   348,   202,   369,   275,   349,   204,   205,   206,   235,
+     236,   237,   207,   208,   209,   210,   211,   212,   255,   256,
+     213,   214,   215,   216,   252,   316,   248,   218,   219,   220,
+     323,   258,   326,   327,   417,   418,   367,   454,   351,   352,
+     353,   354,   434,   517,   543,   525,   526,   527,   544,   355,
+     356,   357,   528,   516,   358,   529,   550,   359,   360,   495,
+     423,   490,   510,   523,   524,   361,   221,   222,   223,   232
 };
 
-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-     positive, shift that token.  If negative, reduce the rule whose
-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -495
+static const yytype_int16 yypact[] =
+{
+    2402,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -216,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -198,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -190,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -127,  -495,  -189,  -193,  -158,  -149,  3885,  -207,  -495,   -98,
+    -495,  -495,  -495,  -495,  2910,  -495,  -495,  -495,  -106,  -495,
+    -495,   547,  -495,  -495,   -62,   -45,   -90,  -495,  5757,  -217,
+    -495,  -495,   -86,  -495,  3885,  -495,  -495,  -495,  3885,   -51,
+     -50,  -495,  -208,  -155,  -495,  -495,  -495,  4339,   -81,  -495,
+    -495,  -495,  -185,  -495,   -87,  -157,  -495,  -495,  3885,   -83,
+    -495,  -204,   812,  -495,  -495,  -495,  -495,  -106,  -183,  -495,
+    4575,  -162,  -495,   -47,  -495,  -119,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  5291,  5291,  5291,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -195,  -495,  -495,  -495,   -77,  -150,
+    5524,   -72,  -495,  5291,  -111,  -144,  -167,  -194,  -147,   -93,
+     -91,   -89,   -55,   -56,  -213,   -69,  -495,  4822,  -495,   -36,
+    5291,  -495,   -45,  3885,  3885,   -34,  3156,  -495,  -495,  -495,
+     -73,   -71,  -495,   -60,   -59,   -66,  5058,   -54,  5291,   -70,
+     -49,   -58,  -495,  -495,  -163,  -495,  -495,  -118,  -495,  -193,
+     -46,  -495,  -495,  -495,  -495,  1077,  -495,  -495,  -495,  -495,
+    -495,  -495,   -81,  4575,  -161,  4575,  -495,  -495,  4575,  3885,
+    -495,   -25,  -495,  -495,  -495,  -145,  -495,  -495,  5291,   -21,
+    -495,  -495,  5291,   -48,  -495,  -495,  -495,  5291,  5291,  5291,
+    5291,  5291,  5291,  5291,  5291,  5291,  5291,  5291,  5291,  5291,
+    5291,  5291,  5291,  5291,  5291,  5291,  -495,  -495,  -495,   -44,
+    -495,  -495,  -495,  -495,  3399,   -34,  -106,  -117,  -495,  -495,
+    -495,  -495,  -495,  1342,  -495,  5291,  -495,  -495,  -113,  5291,
+    -154,  -495,  -495,  -495,  1342,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  5291,  5291,  -495,  -495,
+    -495,  -495,  4575,  -495,   -92,  -495,  3642,  -495,  -495,   -43,
+     -57,  -495,  -495,  -495,  -495,  -495,  -111,  -111,  -144,  -144,
+    -167,  -167,  -167,  -167,  -194,  -194,  -147,   -93,   -91,   -89,
+     -55,   -56,  5291,  -495,  -495,  -112,   -81,   -34,  -495,   -14,
+    2137,  -136,  -495,  -134,  -495,  2646,  1342,  -495,  -495,  -495,
+    -495,  4092,  -495,  -495,  -131,  -495,  -495,   -42,  -495,  -495,
+    2646,   -39,  -495,   -57,    -9,  3885,   -35,   -38,  -495,  -495,
+    5291,  5291,  -495,   -41,   -31,   184,   -32,  1872,  -495,   -30,
+     -29,  1607,  -495,  -495,  -132,  5291,  1607,   -39,  -495,  -495,
+    1342,  4575,  -495,  -495,  -495,   -37,   -57,  -495,  -495,  1342,
+     -27,  -495,  -495,  -495
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,   -53,  -495,  -271,  -252,  -272,  -244,  -187,  -184,
+    -182,  -181,  -179,  -186,  -495,  -237,  -495,  -266,  -495,  -280,
+    -495,     3,  -495,  -495,  -495,     5,  -495,  -495,  -495,   -15,
+      -7,    -5,  -495,  -495,  -475,  -495,  -495,  -495,  -495,   -85,
+    -495,  -205,  -212,  -495,  -495,     0,  -221,  -495,    29,  -495,
+    -495,  -495,  -308,  -310,  -176,  -251,  -351,  -495,  -250,  -348,
+    -494,  -284,  -495,  -495,  -293,  -292,  -495,  -495,    12,  -423,
+    -243,  -495,  -495,  -264,  -495,  -495,  -495,  -495,  -495,  -495,
+    -495,  -495,  -495,  -495,  -495,  -495,  -495,    27,  -495,  -495
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -380
 static const yytype_int16 yytable[] =
 {
-     216,   237,   244,   365,   200,   374,   202,   260,   449,   252,
-     495,   419,   314,   450,   413,   452,   228,   404,   454,   513,
-     270,   391,   392,   393,   394,   246,   244,   225,   268,   237,
-     246,   538,   362,   383,   513,   541,   317,   269,   223,   246,
-     541,   316,   318,   375,   376,   361,   363,   259,   271,   328,
-     224,   272,   405,   323,   273,   427,   229,   429,   395,   396,
-     455,   226,   -29,   316,   377,   316,   230,   320,   378,   380,
-     367,   457,   451,   321,   510,   381,   488,   446,   511,   389,
-     446,   390,   408,   232,   446,   410,   434,   435,   436,   437,
-     438,   439,   440,   441,   442,   443,   365,   459,   365,   419,
-     544,   365,   498,   467,   468,   444,   446,   469,   470,   471,
-     472,   239,   244,   233,   240,   461,   548,   370,   323,   446,
-     371,   323,   447,   486,   446,   486,   487,   491,   504,   196,
-     197,   198,   397,   398,   386,   387,   388,   499,   241,   500,
-     250,   419,   446,   493,   490,   446,   519,   246,   492,   449,
-     256,   518,   465,   466,   473,   474,   261,   266,   267,   316,
-     319,   369,   253,   327,   323,   379,   384,   402,   403,   401,
-     399,   400,   409,   406,   415,   420,   423,   421,   424,   496,
-     497,   425,   428,   430,   456,   365,   431,   460,   432,   -28,
-     506,   550,   446,   301,   485,   -23,   482,   520,   502,   529,
-    -378,   503,   449,   530,   531,   238,   535,   536,   534,   323,
-     340,   539,   540,   245,   512,   552,   475,   477,   551,   480,
-     216,   476,   264,   263,   200,   478,   202,   258,   265,   512,
-     372,   373,   227,   238,   365,   479,   484,   238,   412,   505,
-     533,   507,   537,   546,   262,   547,   521,   508,   249,   385,
-       0,   323,     0,   532,   545,     0,     0,   324,     0,     0,
-       0,   349,     0,   301,     0,     0,   301,     0,     0,     0,
-       0,     0,     0,     0,   365,     0,     0,     0,     0,     0,
+     217,   238,   245,   201,   366,   203,   375,   450,   261,   253,
+     315,   496,   451,   405,   453,   414,   420,   455,   226,   229,
+     514,   271,   224,   247,   376,   377,   245,   394,   395,   238,
+     269,   260,   247,   539,   384,   514,   317,   542,   240,   270,
+     225,   241,   542,   -29,   329,   378,   362,   364,   406,   379,
+     392,   393,   227,   324,   318,   231,   428,   247,   430,   230,
+     319,   456,   396,   397,   363,   435,   436,   437,   438,   439,
+     440,   441,   442,   443,   444,   489,   398,   399,   317,   317,
+     409,   233,   321,   411,   445,   368,   452,   272,   322,   381,
+     273,   447,   494,   274,   458,   382,   234,   366,   460,   366,
+     447,   499,   366,   511,   420,   512,   390,   545,   391,   447,
+     242,   447,   245,   447,   447,   520,   462,   549,   324,   466,
+     467,   324,   470,   471,   472,   473,   371,   447,   487,   372,
+     448,   488,   447,   487,   247,   492,   505,   197,   198,   199,
+     468,   469,   387,   388,   389,   491,   420,   251,   450,   493,
+     519,   500,   257,   501,   474,   475,   262,   267,   268,   317,
+     320,   370,   380,   254,   324,   328,   385,   400,   401,   402,
+     403,   404,   407,   410,   416,   421,   431,   422,   424,   425,
+     497,   498,   426,   457,   429,   433,   366,   461,   447,   432,
+     551,   -23,   -28,   507,   302,   486,   521,   483,   503,   530,
+     537,   450,   504,  -379,   531,   532,   239,   535,   536,   324,
+     341,   552,   540,   476,   246,   513,   553,   477,   541,   481,
+     478,   217,   479,   265,   201,   480,   203,   264,   259,   228,
+     513,   373,   374,   266,   239,   366,   506,   413,   239,   485,
+     508,   534,   538,   547,   263,   548,   522,   509,   250,     0,
+     386,   324,     0,     0,   533,   546,     0,     0,   325,     0,
+       0,     0,   350,     0,   302,     0,     0,   302,     0,     0,
+       0,     0,     0,     0,     0,   366,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     514,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   244,     0,   514,     0,     0,     0,     0,
+     515,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   245,     0,   515,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   324,   414,     0,   324,     0,     0,     0,     0,
-       0,     0,     0,   462,   463,   464,   301,   301,   301,   301,
-     301,   301,   301,   301,   301,   301,   301,   301,   301,   301,
-     301,   301,     0,     0,   349,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   324,     0,
+       0,     0,     0,   325,   415,     0,   325,     0,     0,     0,
+       0,     0,     0,     0,   463,   464,   465,   302,   302,   302,
+     302,   302,   302,   302,   302,   302,   302,   302,   302,   302,
+     302,   302,   302,     0,     0,   350,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   325,
        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,   324,     0,     0,     0,     0,     0,     0,
-       0,     0,   349,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   349,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   325,     0,     0,     0,     0,     0,
+       0,     0,     0,   350,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   350,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   324,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   325,     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,   349,
-       0,     0,     0,     0,   349,   349,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   349,
-       0,     0,     0,     0,   245,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   349,     0,     0,     0,
-     349,     0,     0,     0,     0,   349,     0,     0,     0,   349,
-       0,     0,     0,     0,     0,     0,   248,     0,   349,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    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,     0,     0,   193,     0,     0,     0,     0,     0,
+     350,     0,     0,     0,     0,   350,   350,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     350,     0,     0,     0,     0,   246,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   350,     0,     0,
+       0,   350,     0,     0,     0,     0,   350,     0,     0,     0,
+     350,     0,     0,     0,     0,     0,     0,   249,     0,   350,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      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,     0,     0,   194,     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,   194,   195,   196,
-     197,   198,   199,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,   329,   330,   331,     0,   332,   333,   334,
-     335,   336,   337,   338,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    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,   339,   275,   193,   276,
-     277,   278,   279,   280,   281,   282,     0,     0,   283,   284,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   285,     0,     0,
-       0,   340,   341,     0,     0,     0,     0,   342,   287,   288,
-     289,   290,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   194,   195,   196,   197,   198,   199,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,   329,   330,   331,
-       0,   332,   333,   334,   335,   336,   337,   338,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    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,
-     339,   275,   193,   276,   277,   278,   279,   280,   281,   282,
-       0,     0,   283,   284,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   285,     0,     0,     0,   340,   448,     0,     0,     0,
-       0,   342,   287,   288,   289,   290,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   194,   195,   196,   197,   198,
-     199,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,   329,   330,   331,     0,   332,   333,   334,   335,   336,
-     337,   338,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    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,   339,   275,   193,   276,   277,   278,
-     279,   280,   281,   282,     0,     0,   283,   284,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   285,     0,     0,     0,   340,
-       0,     0,     0,     0,     0,   342,   287,   288,   289,   290,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   194,
-     195,   196,   197,   198,   199,     1,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,   329,   330,   331,     0,   332,
-     333,   334,   335,   336,   337,   338,    11,    12,    13,    14,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   195,
+     196,   197,   198,   199,   200,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,   330,   331,   332,     0,   333,
+     334,   335,   336,   337,   338,   339,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    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,
@@ -1312,15 +1478,172 @@
      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,   339,   275,
-     193,   276,   277,   278,   279,   280,   281,   282,     0,     0,
-     283,   284,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   285,
-       0,     0,     0,   261,     0,     0,     0,     0,     0,   342,
-     287,   288,   289,   290,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   194,   195,   196,   197,   198,   199,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,   329,
-     330,   331,     0,   332,   333,   334,   335,   336,   337,   338,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   340,
+     276,   194,   277,   278,   279,   280,   281,   282,   283,     0,
+       0,   284,   285,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     286,     0,     0,     0,   341,   342,     0,     0,     0,     0,
+     343,   288,   289,   290,   291,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   195,   196,   197,   198,   199,   200,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+     330,   331,   332,     0,   333,   334,   335,   336,   337,   338,
+     339,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      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,   340,   276,   194,   277,   278,   279,
+     280,   281,   282,   283,     0,     0,   284,   285,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   286,     0,     0,     0,   341,
+     449,     0,     0,     0,     0,   343,   288,   289,   290,   291,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   195,
+     196,   197,   198,   199,   200,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,   330,   331,   332,     0,   333,
+     334,   335,   336,   337,   338,   339,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    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,   340,
+     276,   194,   277,   278,   279,   280,   281,   282,   283,     0,
+       0,   284,   285,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     286,     0,     0,     0,   341,     0,     0,     0,     0,     0,
+     343,   288,   289,   290,   291,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   195,   196,   197,   198,   199,   200,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+     330,   331,   332,     0,   333,   334,   335,   336,   337,   338,
+     339,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      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,   340,   276,   194,   277,   278,   279,
+     280,   281,   282,   283,     0,     0,   284,   285,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   286,     0,     0,     0,   262,
+       0,     0,     0,     0,     0,   343,   288,   289,   290,   291,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   195,
+     196,   197,   198,   199,   200,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,   330,   331,   332,     0,   333,
+     334,   335,   336,   337,   338,   339,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    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,   340,
+     276,   194,   277,   278,   279,   280,   281,   282,   283,     0,
+       0,   284,   285,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     343,   288,   289,   290,   291,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   195,   196,   197,   198,   199,   200,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      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,     0,   276,   194,   277,   278,   279,
+     280,   281,   282,   283,     0,     0,   284,   285,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   286,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   343,   288,   289,   290,   291,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   195,
+     196,   197,   198,   199,   200,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    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,     0,
+       0,   194,     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,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,     0,
+       0,     0,     0,     0,   195,   196,   197,   198,   199,   200,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
       31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
@@ -1339,12 +1662,12 @@
      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,   339,   275,   193,   276,   277,   278,   279,   280,
-     281,   282,     0,     0,   283,   284,     0,     0,     0,     0,
+     191,   192,   193,     0,   276,   194,   277,   278,   279,   280,
+     281,   282,   283,     0,     0,   284,   285,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   285,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   342,   287,   288,   289,   290,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   194,   195,   196,
+       0,     0,     0,     0,   286,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   288,   289,   290,   291,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   195,   196,
      197,   198,   199,     1,     2,     3,     4,     5,     6,     7,
        8,     9,    10,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
@@ -1365,139 +1688,38 @@
      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,     0,   275,   193,   276,
-     277,   278,   279,   280,   281,   282,     0,     0,   283,   284,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   285,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   342,   287,   288,
-     289,   290,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   194,   195,   196,   197,   198,   199,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    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,
-       0,     0,   193,     0,     0,     0,     0,     0,     0,     0,
+     187,   188,   189,   190,   191,   192,   193,     0,   243,   194,
        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,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-       0,     0,     0,     0,     0,   194,   195,   196,   197,   198,
-     199,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      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,     0,   275,   193,   276,   277,   278,   279,
-     280,   281,   282,     0,     0,   283,   284,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   285,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   287,   288,   289,   290,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   194,   195,
-     196,   197,   198,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    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,     0,   242,   193,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   244,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,     0,
+       0,     0,   195,   196,   197,   198,   199,     0,     0,     0,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    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,     0,     0,   194,     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,   243,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,     0,     0,
-       0,   194,   195,   196,   197,   198,     0,     0,     0,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    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,     0,     0,   193,     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,   418,     0,     0,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-       0,     0,     0,     0,     0,     0,   194,   195,   196,   197,
-     198,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      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,     0,     0,   193,     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,   483,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   419,
        0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,     0,     0,     0,     0,     0,     0,   194,   195,
-     196,   197,   198,    11,    12,    13,    14,    15,    16,    17,
+       9,    10,     0,     0,     0,     0,     0,     0,   195,   196,
+     197,   198,   199,    11,    12,    13,    14,    15,    16,    17,
       18,    19,    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,
@@ -1515,359 +1737,39 @@
      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,     0,     0,   193,     0,     0,
+     188,   189,   190,   191,   192,   193,     0,     0,   194,     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,   501,     0,     0,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,     0,     0,     0,     0,     0,     0,
-     194,   195,   196,   197,   198,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    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,     0,     0,   193,
-       0,     0,     0,     4,     5,     6,     7,     8,     9,    10,
+       0,     0,   484,     0,     0,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,     0,     0,     0,     0,     0,
+       0,   195,   196,   197,   198,   199,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    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,     0,
+       0,   194,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   194,   195,   196,   197,   198,    47,    48,    49,
-      50,    51,    52,     0,     0,     0,     0,    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,     0,   275,   193,   276,   277,   278,   279,
-     280,   281,   282,     0,     0,   283,   284,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   285,     0,     0,     0,   364,   517,
-       0,     0,     0,     0,     0,   287,   288,   289,   290,     4,
-       5,     6,     7,     8,     9,    10,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    47,    48,    49,    50,    51,    52,     0,
-       0,     0,     0,    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,     0,
-     275,   193,   276,   277,   278,   279,   280,   281,   282,     0,
-       0,   283,   284,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     285,     0,     0,   286,     4,     5,     6,     7,     8,     9,
-      10,   287,   288,   289,   290,     0,     0,     0,     0,     0,
-       0,     0,     0,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    47,    48,
-      49,    50,    51,    52,     0,     0,     0,     0,    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,     0,   275,   193,   276,   277,   278,
-     279,   280,   281,   282,     0,     0,   283,   284,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   285,     0,     0,     0,   364,
-       0,     0,     0,     0,     0,     0,   287,   288,   289,   290,
-       4,     5,     6,     7,     8,     9,    10,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    47,    48,    49,    50,    51,    52,
-       0,     0,     0,     0,    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,
-       0,   275,   193,   276,   277,   278,   279,   280,   281,   282,
-       0,     0,   283,   284,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   285,     0,     0,   407,     4,     5,     6,     7,     8,
-       9,    10,   287,   288,   289,   290,     0,     0,     0,     0,
-       0,     0,     0,     0,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    47,
-      48,    49,    50,    51,    52,     0,     0,     0,     0,    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,     0,   275,   193,   276,   277,
-     278,   279,   280,   281,   282,     0,     0,   283,   284,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   285,     4,     5,     6,
-       7,     8,     9,    10,     0,     0,   426,   287,   288,   289,
-     290,     0,     0,     0,     0,     0,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    47,    48,    49,    50,    51,    52,     0,     0,     0,
-       0,    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,     0,   275,   193,
-     276,   277,   278,   279,   280,   281,   282,     0,     0,   283,
-     284,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   285,     4,
-       5,     6,     7,     8,     9,    10,     0,     0,     0,   287,
-     288,   289,   290,     0,     0,     0,     0,     0,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    47,    48,    49,    50,    51,    52,     0,
-       0,     0,     0,    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,   382,     0,
-     275,   193,   276,   277,   278,   279,   280,   281,   282,     0,
-       0,   283,   284,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     285,     4,     5,     6,     7,     8,     9,    10,     0,     0,
-       0,   287,   288,   289,   290,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   502,     0,     0,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,     0,     0,
+       0,     0,     0,     0,   195,   196,   197,   198,   199,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    47,    48,    49,    50,    51,
-      52,     0,     0,     0,     0,    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,     0,     0,   193
-};
-
-static const yytype_int16 yycheck[] =
-{
-       0,   205,   213,   269,     0,   285,     0,   228,   354,    54,
-     433,   325,   246,   362,   322,   364,   207,   225,   367,   494,
-     241,   216,   217,   220,   221,   239,   237,   207,   237,   233,
-     239,   526,   246,   299,   509,   530,   238,   246,   237,   239,
-     535,   239,   244,   218,   219,   266,   267,   247,   241,   247,
-     237,   244,   260,   257,   247,   335,   247,   337,   255,   256,
-     368,   241,   237,   239,   239,   239,   247,   238,   243,   238,
-     246,   238,   246,   244,   238,   244,   422,   244,   238,   249,
-     244,   251,   316,   238,   244,   319,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   362,   377,   364,   413,
-     238,   367,   451,   391,   392,   246,   244,   393,   394,   395,
-     396,   244,   323,   244,   247,   381,   539,   244,   322,   244,
-     247,   325,   247,   244,   244,   244,   247,   247,   247,   263,
-     264,   265,   222,   223,   252,   253,   254,   242,   207,   244,
-     208,   455,   244,   245,   424,   244,   245,   239,   428,   495,
-     241,   500,   389,   390,   397,   398,   241,   207,   207,   239,
-     246,   207,   207,   247,   368,   238,   237,   224,   226,   257,
-     259,   258,   208,   240,   207,   247,   237,   247,   237,   445,
-     446,   247,   237,   245,   207,   451,   237,   207,   242,   237,
-     206,   540,   244,   246,   415,   238,   240,   237,   240,   207,
-     241,   481,   548,   238,   242,   205,   238,    16,   247,   413,
-     241,   241,   246,   213,   494,   242,   399,   401,   247,   404,
-     220,   400,   237,   233,   220,   402,   220,   227,   237,   509,
-     283,   284,   199,   233,   500,   403,   414,   237,   321,   486,
-     520,   489,   525,   535,   231,   536,   509,   489,   220,   302,
-      -1,   455,    -1,   519,   534,    -1,    -1,   257,    -1,    -1,
-      -1,   261,    -1,   316,    -1,    -1,   319,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   540,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     494,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   514,    -1,   509,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   322,   323,    -1,   325,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   386,   387,   388,   389,   390,   391,   392,
-     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
-     403,   404,    -1,    -1,   354,    -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,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   413,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   422,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -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,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   489,
-      -1,    -1,    -1,    -1,   494,   495,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   509,
-      -1,    -1,    -1,    -1,   514,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   526,    -1,    -1,    -1,
-     530,    -1,    -1,    -1,    -1,   535,    -1,    -1,    -1,   539,
-      -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,   548,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      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,    -1,    -1,   208,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   261,   262,   263,
-     264,   265,   266,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    -1,    17,    18,    19,
-      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,    -1,    -1,   218,   219,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   237,    -1,    -1,
-      -1,   241,   242,    -1,    -1,    -1,    -1,   247,   248,   249,
-     250,   251,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   261,   262,   263,   264,   265,   266,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      -1,    17,    18,    19,    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,
-      -1,    -1,   218,   219,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   237,    -1,    -1,    -1,   241,   242,    -1,    -1,    -1,
-      -1,   247,   248,   249,   250,   251,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   261,   262,   263,   264,   265,
-     266,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    -1,    17,    18,    19,    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,
@@ -1884,14 +1786,286 @@
      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,    -1,    -1,   218,   219,    -1,    -1,
+     192,   193,     0,     0,   194,     0,     0,     0,     4,     5,
+       6,     7,     8,     9,    10,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   195,   196,   197,
+     198,   199,    47,    48,    49,    50,    51,    52,     0,     0,
+       0,     0,     0,    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,     0,
+     276,   194,   277,   278,   279,   280,   281,   282,   283,     0,
+       0,   284,   285,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     286,     0,     0,     0,   365,   518,     0,     0,     0,     0,
+       0,   288,   289,   290,   291,     4,     5,     6,     7,     8,
+       9,    10,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    47,
+      48,    49,    50,    51,    52,     0,     0,     0,     0,     0,
+      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,     0,   276,   194,   277,
+     278,   279,   280,   281,   282,   283,     0,     0,   284,   285,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   286,     0,     0,
+     287,     4,     5,     6,     7,     8,     9,    10,   288,   289,
+     290,   291,     0,     0,     0,     0,     0,     0,     0,     0,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    47,    48,    49,    50,    51,
+      52,     0,     0,     0,     0,     0,    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,     0,   276,   194,   277,   278,   279,   280,   281,
+     282,   283,     0,     0,   284,   285,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   286,     0,     0,     0,   365,     0,     0,
+       0,     0,     0,     0,   288,   289,   290,   291,     4,     5,
+       6,     7,     8,     9,    10,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    47,    48,    49,    50,    51,    52,     0,     0,
+       0,     0,     0,    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,     0,
+     276,   194,   277,   278,   279,   280,   281,   282,   283,     0,
+       0,   284,   285,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     286,     0,     0,   408,     4,     5,     6,     7,     8,     9,
+      10,   288,   289,   290,   291,     0,     0,     0,     0,     0,
+       0,     0,     0,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    47,    48,
+      49,    50,    51,    52,     0,     0,     0,     0,     0,    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,     0,   276,   194,   277,   278,
+     279,   280,   281,   282,   283,     0,     0,   284,   285,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   286,     4,     5,     6,
+       7,     8,     9,    10,     0,     0,   427,   288,   289,   290,
+     291,     0,     0,     0,     0,     0,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    47,    48,    49,    50,    51,    52,     0,     0,     0,
+       0,     0,    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,     0,   276,
+     194,   277,   278,   279,   280,   281,   282,   283,     0,     0,
+     284,   285,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
+       4,     5,     6,     7,     8,     9,    10,     0,     0,     0,
+     288,   289,   290,   291,     0,     0,     0,     0,     0,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    47,    48,    49,    50,    51,    52,
+       0,     0,     0,     0,     0,    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,
+     383,     0,   276,   194,   277,   278,   279,   280,   281,   282,
+     283,     0,     0,   284,   285,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   286,     4,     5,     6,     7,     8,     9,    10,
+       0,     0,     0,   288,   289,   290,   291,     0,     0,     0,
+       0,     0,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    47,    48,    49,
+      50,    51,    52,     0,     0,     0,     0,     0,    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,     0,     0,   194
+};
+
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-495)))
+
+#define yytable_value_is_error(Yytable_value) \
+  YYID (0)
+
+static const yytype_int16 yycheck[] =
+{
+       0,   206,   214,     0,   270,     0,   286,   355,   229,    54,
+     247,   434,   363,   226,   365,   323,   326,   368,   208,   208,
+     495,   242,   238,   240,   219,   220,   238,   221,   222,   234,
+     238,   248,   240,   527,   300,   510,   240,   531,   245,   247,
+     238,   248,   536,   238,   248,   240,   267,   268,   261,   244,
+     217,   218,   242,   258,   239,   248,   336,   240,   338,   248,
+     245,   369,   256,   257,   247,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   423,   223,   224,   240,   240,
+     317,   239,   239,   320,   247,   247,   247,   242,   245,   239,
+     245,   245,   246,   248,   239,   245,   245,   363,   378,   365,
+     245,   452,   368,   239,   414,   239,   250,   239,   252,   245,
+     208,   245,   324,   245,   245,   246,   382,   540,   323,   390,
+     391,   326,   394,   395,   396,   397,   245,   245,   245,   248,
+     248,   248,   245,   245,   240,   248,   248,   264,   265,   266,
+     392,   393,   253,   254,   255,   425,   456,   209,   496,   429,
+     501,   243,   242,   245,   398,   399,   242,   208,   208,   240,
+     247,   208,   239,   208,   369,   248,   238,   260,   259,   258,
+     225,   227,   241,   209,   208,   248,   246,   248,   238,   238,
+     446,   447,   248,   208,   238,   243,   452,   208,   245,   238,
+     541,   239,   238,   207,   247,   416,   238,   241,   241,   208,
+      16,   549,   482,   242,   239,   243,   206,   248,   239,   414,
+     242,   248,   242,   400,   214,   495,   243,   401,   247,   405,
+     402,   221,   403,   238,   221,   404,   221,   234,   228,   200,
+     510,   284,   285,   238,   234,   501,   487,   322,   238,   415,
+     490,   521,   526,   536,   232,   537,   510,   490,   221,    -1,
+     303,   456,    -1,    -1,   520,   535,    -1,    -1,   258,    -1,
+      -1,    -1,   262,    -1,   317,    -1,    -1,   320,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   541,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   237,    -1,    -1,    -1,   241,
-      -1,    -1,    -1,    -1,    -1,   247,   248,   249,   250,   251,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   261,
-     262,   263,   264,   265,   266,     3,     4,     5,     6,     7,
+     495,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   515,    -1,   510,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   323,   324,    -1,   326,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   387,   388,   389,   390,   391,   392,
+     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
+     403,   404,   405,    -1,    -1,   355,    -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,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   414,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   423,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   434,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   456,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     490,    -1,    -1,    -1,    -1,   495,   496,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     510,    -1,    -1,    -1,    -1,   515,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   527,    -1,    -1,
+      -1,   531,    -1,    -1,    -1,    -1,   536,    -1,    -1,    -1,
+     540,    -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,   549,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    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,    -1,    -1,   209,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   262,
+     263,   264,   265,   266,   267,     3,     4,     5,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    -1,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
@@ -1912,14 +2086,171 @@
      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,    -1,    -1,
-     218,   219,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   237,
-      -1,    -1,    -1,   241,    -1,    -1,    -1,    -1,    -1,   247,
-     248,   249,   250,   251,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   261,   262,   263,   264,   265,   266,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,    -1,
+      -1,   219,   220,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     238,    -1,    -1,    -1,   242,   243,    -1,    -1,    -1,    -1,
+     248,   249,   250,   251,   252,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   262,   263,   264,   265,   266,   267,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    -1,    17,    18,    19,    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,    -1,    -1,   219,   220,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,    -1,   242,
+     243,    -1,    -1,    -1,    -1,   248,   249,   250,   251,   252,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   262,
+     263,   264,   265,   266,   267,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    -1,    17,
+      18,    19,    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,    -1,
+      -1,   219,   220,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     238,    -1,    -1,    -1,   242,    -1,    -1,    -1,    -1,    -1,
+     248,   249,   250,   251,   252,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   262,   263,   264,   265,   266,   267,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    -1,    17,    18,    19,    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,    -1,    -1,   219,   220,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,    -1,   242,
+      -1,    -1,    -1,    -1,    -1,   248,   249,   250,   251,   252,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   262,
+     263,   264,   265,   266,   267,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    -1,    17,
+      18,    19,    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,    -1,
+      -1,   219,   220,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     238,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     248,   249,   250,   251,   252,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   262,   263,   264,   265,   266,   267,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    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,    -1,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,    -1,    -1,   219,   220,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   248,   249,   250,   251,   252,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   262,
+     263,   264,   265,   266,   267,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    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,    -1,
+      -1,   209,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
+      -1,    -1,    -1,    -1,   262,   263,   264,   265,   266,   267,
       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,
@@ -1938,12 +2269,12 @@
      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,    -1,    -1,   218,   219,    -1,    -1,    -1,    -1,
+     204,   205,   206,    -1,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,    -1,    -1,   219,   220,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   237,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   247,   248,   249,   250,   251,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   261,   262,   263,
+      -1,    -1,    -1,    -1,   238,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   249,   250,   251,   252,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   262,   263,
      264,   265,   266,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    24,    25,    26,    27,    28,    29,
@@ -1964,90 +2295,86 @@
      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,    -1,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,    -1,    -1,   218,   219,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   237,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   247,   248,   249,
-     250,   251,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   261,   262,   263,   264,   265,   266,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    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,
-      -1,    -1,   208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     200,   201,   202,   203,   204,   205,   206,    -1,   208,   209,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      -1,    -1,    -1,    -1,    -1,   261,   262,   263,   264,   265,
-     266,    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,    -1,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,    -1,    -1,   218,   219,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   248,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
+      -1,    -1,   262,   263,   264,   265,   266,    -1,    -1,    -1,
+      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,    -1,    -1,   209,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   237,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   248,   249,   250,   251,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   261,   262,
-     263,   264,   265,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    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,    -1,   207,   208,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   243,
+      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    -1,    -1,    -1,    -1,    -1,    -1,   262,   263,
+     264,   265,   266,    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,    -1,    -1,   209,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   247,     3,     4,
+      -1,    -1,   243,    -1,    -1,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
+      -1,   262,   263,   264,   265,   266,    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,    -1,
+      -1,   209,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   243,    -1,    -1,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    -1,    -1,
-      -1,   261,   262,   263,   264,   265,    -1,    -1,    -1,    24,
+      -1,    -1,    -1,    -1,   262,   263,   264,   265,   266,    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,
@@ -2066,182 +2393,38 @@
      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,    -1,    -1,   208,    -1,    -1,    -1,    -1,    -1,    -1,
+     205,   206,    -1,    -1,   209,    -1,    -1,    -1,     6,     7,
+       8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   262,   263,   264,
+     265,   266,    60,    61,    62,    63,    64,    65,    -1,    -1,
+      -1,    -1,    -1,    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,    -1,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,    -1,
+      -1,   219,   220,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   242,    -1,    -1,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      -1,    -1,    -1,    -1,    -1,    -1,   261,   262,   263,   264,
-     265,    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,    -1,    -1,   208,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   242,
-      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    -1,    -1,    -1,    -1,    -1,    -1,   261,   262,
-     263,   264,   265,    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,    -1,    -1,   208,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   242,    -1,    -1,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
-     261,   262,   263,   264,   265,    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,    -1,    -1,   208,
-      -1,    -1,    -1,     6,     7,     8,     9,    10,    11,    12,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   261,   262,   263,   264,   265,    60,    61,    62,
-      63,    64,    65,    -1,    -1,    -1,    -1,    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,    -1,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,    -1,    -1,   218,   219,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   237,    -1,    -1,    -1,   241,   242,
-      -1,    -1,    -1,    -1,    -1,   248,   249,   250,   251,     6,
-       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    60,    61,    62,    63,    64,    65,    -1,
-      -1,    -1,    -1,    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,    -1,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,    -1,
-      -1,   218,   219,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     237,    -1,    -1,   240,     6,     7,     8,     9,    10,    11,
-      12,   248,   249,   250,   251,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
-      62,    63,    64,    65,    -1,    -1,    -1,    -1,    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,    -1,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,    -1,    -1,   218,   219,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   237,    -1,    -1,    -1,   241,
-      -1,    -1,    -1,    -1,    -1,    -1,   248,   249,   250,   251,
-       6,     7,     8,     9,    10,    11,    12,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    60,    61,    62,    63,    64,    65,
-      -1,    -1,    -1,    -1,    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,
-      -1,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-      -1,    -1,   218,   219,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   237,    -1,    -1,   240,     6,     7,     8,     9,    10,
-      11,    12,   248,   249,   250,   251,    -1,    -1,    -1,    -1,
+     238,    -1,    -1,    -1,   242,   243,    -1,    -1,    -1,    -1,
+      -1,   249,   250,   251,   252,     6,     7,     8,     9,    10,
+      11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,    30,
       31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
       41,    42,    43,    44,    45,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
-      61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,    70,
+      61,    62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,
       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,
@@ -2255,63 +2438,17 @@
      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,    -1,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,    -1,    -1,   218,   219,    -1,
+     201,   202,   203,   204,   205,   206,    -1,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,    -1,    -1,   219,   220,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   237,     6,     7,     8,
-       9,    10,    11,    12,    -1,    -1,   247,   248,   249,   250,
-     251,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
-      -1,    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,    -1,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,    -1,    -1,   218,
-     219,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   237,     6,
-       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,   248,
-     249,   250,   251,    -1,    -1,    -1,    -1,    -1,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    60,    61,    62,    63,    64,    65,    -1,
-      -1,    -1,    -1,    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,    -1,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,    -1,
-      -1,   218,   219,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     237,     6,     7,     8,     9,    10,    11,    12,    -1,    -1,
-      -1,   248,   249,   250,   251,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,
+     241,     6,     7,     8,     9,    10,    11,    12,   249,   250,
+     251,   252,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    60,    61,    62,    63,    64,
-      65,    -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,
+      65,    -1,    -1,    -1,    -1,    -1,    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,
@@ -2325,11 +2462,129 @@
      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,    -1,    -1,   208
+     205,   206,    -1,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,    -1,    -1,   219,   220,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   238,    -1,    -1,    -1,   242,    -1,    -1,
+      -1,    -1,    -1,    -1,   249,   250,   251,   252,     6,     7,
+       8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    61,    62,    63,    64,    65,    -1,    -1,
+      -1,    -1,    -1,    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,    -1,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,    -1,
+      -1,   219,   220,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     238,    -1,    -1,   241,     6,     7,     8,     9,    10,    11,
+      12,   249,   250,   251,   252,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
+      62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    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,    -1,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,    -1,    -1,   219,   220,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   238,     6,     7,     8,
+       9,    10,    11,    12,    -1,    -1,   248,   249,   250,   251,
+     252,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    60,    61,    62,    63,    64,    65,    -1,    -1,    -1,
+      -1,    -1,    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,    -1,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,    -1,    -1,
+     219,   220,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   238,
+       6,     7,     8,     9,    10,    11,    12,    -1,    -1,    -1,
+     249,   250,   251,   252,    -1,    -1,    -1,    -1,    -1,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    61,    62,    63,    64,    65,
+      -1,    -1,    -1,    -1,    -1,    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,    -1,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,    -1,    -1,   219,   220,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   238,     6,     7,     8,     9,    10,    11,    12,
+      -1,    -1,    -1,   249,   250,   251,   252,    -1,    -1,    -1,
+      -1,    -1,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    62,
+      63,    64,    65,    -1,    -1,    -1,    -1,    -1,    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,    -1,    -1,   209
 };
 
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
@@ -2351,151 +2606,69 @@
      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,   208,   261,   262,   263,   264,   265,   266,
-     301,   302,   305,   306,   307,   308,   312,   313,   314,   315,
-     316,   317,   320,   321,   322,   323,   325,   327,   328,   329,
-     366,   367,   368,   237,   237,   207,   241,   328,   207,   247,
-     247,   369,   238,   244,   309,   310,   311,   321,   325,   244,
-     247,   207,   207,   247,   322,   325,   239,   326,     0,   367,
-     208,   324,    54,   207,   318,   319,   241,   331,   325,   247,
-     326,   241,   348,   310,   309,   311,   207,   207,   237,   246,
-     326,   241,   244,   247,   304,   207,   209,   210,   211,   212,
-     213,   214,   215,   218,   219,   237,   240,   248,   249,   250,
-     251,   271,   272,   273,   275,   276,   277,   278,   279,   280,
+     203,   204,   205,   206,   209,   262,   263,   264,   265,   266,
+     267,   302,   303,   306,   307,   308,   309,   313,   314,   315,
+     316,   317,   318,   321,   322,   323,   324,   326,   328,   329,
+     330,   367,   368,   369,   238,   238,   208,   242,   329,   208,
+     248,   248,   370,   239,   245,   310,   311,   312,   322,   326,
+     245,   248,   208,   208,   248,   323,   326,   240,   327,     0,
+     368,   209,   325,    54,   208,   319,   320,   242,   332,   326,
+     248,   327,   242,   349,   311,   310,   312,   208,   208,   238,
+     247,   327,   242,   245,   248,   305,   208,   210,   211,   212,
+     213,   214,   215,   216,   219,   220,   238,   241,   249,   250,
+     251,   252,   272,   273,   274,   276,   277,   278,   279,   280,
      281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,   295,   325,   239,   238,   244,   246,
-     238,   244,   330,   321,   325,   332,   333,   247,   247,    13,
-      14,    15,    17,    18,    19,    20,    21,    22,    23,   206,
-     241,   242,   247,   282,   295,   297,   299,   301,   305,   325,
-     338,   339,   340,   341,   349,   350,   351,   354,   357,   358,
-     365,   326,   246,   326,   241,   297,   336,   246,   303,   207,
-     244,   247,   282,   282,   299,   218,   219,   239,   243,   238,
-     238,   244,   205,   297,   237,   282,   252,   253,   254,   249,
-     251,   216,   217,   220,   221,   255,   256,   222,   223,   259,
-     258,   257,   224,   226,   225,   260,   240,   240,   295,   208,
-     295,   300,   319,   332,   325,   207,   334,   335,   242,   333,
-     247,   247,   360,   237,   237,   247,   247,   299,   237,   299,
-     245,   237,   242,   342,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   246,   298,   244,   247,   242,   339,
-     336,   246,   336,   337,   336,   332,   207,   238,   274,   299,
-     207,   297,   282,   282,   282,   284,   284,   285,   285,   286,
-     286,   286,   286,   287,   287,   288,   289,   290,   291,   292,
-     293,   296,   240,   242,   334,   326,   244,   247,   339,   361,
-     299,   247,   299,   245,   359,   349,   297,   297,   336,   242,
-     244,   242,   240,   299,   247,   335,   206,   338,   350,   362,
-     238,   238,   299,   314,   321,   353,   343,   242,   336,   245,
-     237,   353,   363,   364,   345,   346,   347,   352,   355,   207,
-     238,   242,   297,   299,   247,   238,    16,   341,   340,   241,
-     246,   340,   344,   348,   238,   299,   344,   345,   349,   356,
-     336,   247,   242
+     291,   292,   293,   294,   295,   296,   326,   240,   239,   245,
+     247,   239,   245,   331,   322,   326,   333,   334,   248,   248,
+      13,    14,    15,    17,    18,    19,    20,    21,    22,    23,
+     207,   242,   243,   248,   283,   296,   298,   300,   302,   306,
+     326,   339,   340,   341,   342,   350,   351,   352,   355,   358,
+     359,   366,   327,   247,   327,   242,   298,   337,   247,   304,
+     208,   245,   248,   283,   283,   300,   219,   220,   240,   244,
+     239,   239,   245,   206,   298,   238,   283,   253,   254,   255,
+     250,   252,   217,   218,   221,   222,   256,   257,   223,   224,
+     260,   259,   258,   225,   227,   226,   261,   241,   241,   296,
+     209,   296,   301,   320,   333,   326,   208,   335,   336,   243,
+     334,   248,   248,   361,   238,   238,   248,   248,   300,   238,
+     300,   246,   238,   243,   343,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   247,   299,   245,   248,   243,
+     340,   337,   247,   337,   338,   337,   333,   208,   239,   275,
+     300,   208,   298,   283,   283,   283,   285,   285,   286,   286,
+     287,   287,   287,   287,   288,   288,   289,   290,   291,   292,
+     293,   294,   297,   241,   243,   335,   327,   245,   248,   340,
+     362,   300,   248,   300,   246,   360,   350,   298,   298,   337,
+     243,   245,   243,   241,   300,   248,   336,   207,   339,   351,
+     363,   239,   239,   300,   315,   322,   354,   344,   243,   337,
+     246,   238,   354,   364,   365,   346,   347,   348,   353,   356,
+     208,   239,   243,   298,   300,   248,   239,    16,   342,   341,
+     242,   247,   341,   345,   349,   239,   300,   345,   346,   350,
+     357,   337,   248,   243
 };
 
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   270,   271,   272,   272,   272,   272,   272,   272,   272,
-     272,   272,   273,   273,   273,   273,   273,   273,   274,   275,
-     276,   277,   277,   278,   278,   279,   279,   280,   281,   281,
-     282,   282,   282,   282,   283,   283,   283,   283,   284,   284,
-     284,   284,   285,   285,   285,   286,   286,   286,   287,   287,
-     287,   287,   287,   288,   288,   288,   289,   289,   290,   290,
-     291,   291,   292,   292,   293,   293,   294,   294,   295,   296,
-     295,   297,   297,   298,   298,   298,   298,   298,   298,   298,
-     298,   298,   298,   298,   299,   299,   300,   301,   301,   301,
-     301,   301,   301,   301,   301,   301,   303,   302,   304,   304,
-     305,   306,   306,   307,   307,   308,   309,   309,   310,   310,
-     310,   310,   311,   312,   312,   312,   312,   312,   313,   313,
-     313,   313,   313,   314,   314,   315,   316,   316,   316,   317,
-     318,   318,   319,   319,   319,   320,   321,   321,   322,   322,
-     322,   322,   322,   322,   323,   323,   323,   323,   323,   323,
-     323,   323,   323,   323,   323,   323,   323,   323,   323,   323,
-     323,   323,   323,   324,   324,   325,   325,   326,   326,   326,
-     326,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
-     327,   327,   328,   328,   328,   330,   329,   331,   329,   332,
-     332,   333,   333,   334,   334,   335,   335,   336,   336,   336,
-     337,   337,   338,   339,   339,   340,   340,   340,   340,   340,
-     340,   340,   341,   342,   343,   341,   344,   344,   346,   345,
-     347,   345,   348,   348,   349,   349,   350,   350,   351,   352,
-     352,   353,   353,   355,   354,   356,   356,   357,   357,   359,
-     358,   360,   358,   361,   358,   362,   362,   363,   363,   364,
-     364,   365,   365,   365,   365,   365,   366,   366,   367,   367,
-     369,   368
-};
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
 
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     3,     1,     4,     1,     3,     2,     2,     1,     1,
-       1,     2,     2,     2,     1,     2,     3,     2,     1,     1,
-       1,     2,     2,     2,     1,     1,     1,     1,     1,     3,
-       3,     3,     1,     3,     3,     1,     3,     3,     1,     3,
-       3,     3,     3,     1,     3,     3,     1,     3,     1,     3,
-       1,     3,     1,     3,     1,     3,     1,     3,     1,     0,
-       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     3,     1,     2,     2,     4,
-       2,     3,     4,     2,     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,     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,     1,     1,     1,
-       1,     1,     4,     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,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     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,     5,     3,
-       1,     1,     4,     0,     8,     0,     1,     3,     2,     0,
-       6,     0,     8,     0,     7,     1,     1,     1,     0,     2,
-       3,     2,     2,     2,     3,     2,     1,     2,     1,     1,
-       0,     3
-};
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
 
 
-#define yyerrok         (yyerrstatus = 0)
-#define yyclearin       (yychar = YYEMPTY)
-#define YYEMPTY         (-2)
-#define YYEOF           0
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
-#define YYACCEPT        goto yyacceptlab
-#define YYABORT         goto yyabortlab
-#define YYERROR         goto yyerrorlab
-
+#define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -2512,15 +2685,27 @@
   else                                                          \
     {                                                           \
       yyerror (pParseContext, YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+      YYERROR;							\
+    }								\
+while (YYID (0))
 
 /* Error token number */
-#define YYTERROR        1
-#define YYERRCODE       256
+#define YYTERROR	1
+#define YYERRCODE	256
 
 
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval, parseContext)
+#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -2530,47 +2715,58 @@
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)                        \
-do {                                            \
-  if (yydebug)                                  \
-    YYFPRINTF Args;                             \
-} while (0)
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (YYID (0))
 
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
+do {									  \
+  if (yydebug)								  \
+    {									  \
+      YYFPRINTF (stderr, "%s ", Title);					  \
+      yy_symbol_print (stderr,						  \
+		  Type, Value, pParseContext); \
+      YYFPRINTF (stderr, "\n");						  \
+    }									  \
+} while (YYID (0))
 
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
-do {                                                                      \
-  if (yydebug)                                                            \
-    {                                                                     \
-      YYFPRINTF (stderr, "%s ", Title);                                   \
-      yy_symbol_print (stderr,                                            \
-                  Type, Value, pParseContext); \
-      YYFPRINTF (stderr, "\n");                                           \
-    }                                                                     \
-} while (0)
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
 
-
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
-
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+    glslang::TParseContext* pParseContext;
+#endif
 {
   FILE *yyo = yyoutput;
   YYUSE (yyo);
-  YYUSE (pParseContext);
   if (!yyvaluep)
     return;
+  YYUSE (pParseContext);
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
 # endif
-  YYUSE (yytype);
+  switch (yytype)
+    {
+      default:
+        break;
+    }
 }
 
 
@@ -2578,11 +2774,23 @@
 | Print this symbol on YYOUTPUT.  |
 `--------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep, pParseContext)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+    glslang::TParseContext* pParseContext;
+#endif
 {
-  YYFPRINTF (yyoutput, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
   yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext);
   YYFPRINTF (yyoutput, ")");
@@ -2593,8 +2801,16 @@
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
+#endif
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -2605,42 +2821,50 @@
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)                            \
-do {                                                            \
-  if (yydebug)                                                  \
-    yy_stack_print ((Bottom), (Top));                           \
-} while (0)
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext)
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule, pParseContext)
+    YYSTYPE *yyvsp;
+    int yyrule;
+    glslang::TParseContext* pParseContext;
+#endif
 {
-  unsigned long int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
+  unsigned long int yylno = yyrline[yyrule];
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-             yyrule - 1, yylno);
+	     yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
-                                              , pParseContext);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+		       &(yyvsp[(yyi + 1) - (yynrhs)])
+		       		       , pParseContext);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)          \
-do {                                    \
-  if (yydebug)                          \
-    yy_reduce_print (yyssp, yyvsp, Rule, pParseContext); \
-} while (0)
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, Rule, pParseContext); \
+} while (YYID (0))
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
@@ -2654,7 +2878,7 @@
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
+#ifndef	YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -2677,8 +2901,15 @@
 #   define yystrlen strlen
 #  else
 /* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
 yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
 {
   YYSIZE_T yylen;
   for (yylen = 0; yystr[yylen]; yylen++)
@@ -2694,8 +2925,16 @@
 #  else
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static char *
 yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
 {
   char *yyd = yydest;
   const char *yys = yysrc;
@@ -2725,27 +2964,27 @@
       char const *yyp = yystr;
 
       for (;;)
-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
 
-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            /* Fall through.  */
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
 
-          case '"':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
     do_not_strip_quotes: ;
     }
 
@@ -2768,11 +3007,11 @@
 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
+  const char *yyformat = YY_NULL;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   /* Number of reported tokens (one for the "unexpected", one per
@@ -2780,6 +3019,10 @@
   int yycount = 0;
 
   /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+       for details.  YYERROR is fine as it does not invoke this
+       function.
      - If this state is a consistent state with a default action, then
        the only way this function was invoked is if the default action
        is an error action.  In that case, don't check for expected
@@ -2829,7 +3072,7 @@
                   }
                 yyarg[yycount++] = yytname[yyx];
                 {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
                   if (! (yysize <= yysize1
                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                     return 2;
@@ -2896,18 +3139,33 @@
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep, pParseContext)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+    glslang::TParseContext* pParseContext;
+#endif
 {
   YYUSE (yyvaluep);
   YYUSE (pParseContext);
+
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
 }
 
 
@@ -2917,18 +3175,56 @@
 | yyparse.  |
 `----------*/
 
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (glslang::TParseContext* pParseContext)
+#else
+int
+yyparse (pParseContext)
+    glslang::TParseContext* pParseContext;
+#endif
+#endif
 {
 /* The lookahead symbol.  */
 int yychar;
 
 
-/* The semantic value of the lookahead symbol.  */
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma ("GCC diagnostic pop")
+#else
 /* Default value used for initialization, for pacifying older GCCs
    or non-GCC compilers.  */
-YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
-YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
+static YYSTYPE yyval_default;
+# define YY_INITIAL_VALUE(Value) = Value
+#endif
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
 
     /* Number of syntax errors so far.  */
     int yynerrs;
@@ -2938,8 +3234,8 @@
     int yyerrstatus;
 
     /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
+       `yyss': related to states.
+       `yyvs': related to semantic values.
 
        Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
@@ -3007,23 +3303,23 @@
 
 #ifdef yyoverflow
       {
-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &'s don't force the real ones into
-           memory.  */
-        YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
+	/* Give user a chance to reallocate the stack.  Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	yytype_int16 *yyss1 = yyss;
 
-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
-                    &yystacksize);
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+		    &yystacksize);
 
-        yyss = yyss1;
-        yyvs = yyvs1;
+	yyss = yyss1;
+	yyvs = yyvs1;
       }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
@@ -3031,22 +3327,22 @@
 # else
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
+	goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-        yystacksize = YYMAXDEPTH;
+	yystacksize = YYMAXDEPTH;
 
       {
-        yytype_int16 *yyss1 = yyss;
-        union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-        if (! yyptr)
-          goto yyexhaustedlab;
-        YYSTACK_RELOCATE (yyss_alloc, yyss);
-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+	yytype_int16 *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss_alloc, yyss);
+	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
       }
 # endif
 #endif /* no yyoverflow */
@@ -3055,10 +3351,10 @@
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+		  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
+	YYABORT;
     }
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -3087,7 +3383,7 @@
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = yylex (&yylval, parseContext);
+      yychar = YYLEX;
     }
 
   if (yychar <= YYEOF)
@@ -3152,7 +3448,7 @@
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
+     `$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -3166,247 +3462,248 @@
   switch (yyn)
     {
         case 2:
-#line 246 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 246 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
+        (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[(1) - (1)].lex).loc, (yyvsp[(1) - (1)].lex).symbol, (yyvsp[(1) - (1)].lex).string);
     }
-#line 3174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 252 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 252 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
-#line 3182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 4:
-#line 255 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 255 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i, (yyvsp[(1) - (1)].lex).loc, true);
     }
-#line 3190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 5:
-#line 258 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 258 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned literal");
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u, (yyvsp[(1) - (1)].lex).loc, true);
     }
-#line 3199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 6:
-#line 262 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 262 "glslang.y"
     {
-        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);
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer literal");
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i64, (yyvsp[(1) - (1)].lex).loc, true);
     }
-#line 3208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 266 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 266 "glslang.y"
     {
-        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);
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer literal");
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u64, (yyvsp[(1) - (1)].lex).loc, true);
     }
-#line 3217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 270 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 270 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat, (yyvsp[(1) - (1)].lex).loc, true);
     }
-#line 3225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 9:
-#line 273 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 273 "glslang.y"
     {
-        parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double literal");
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtDouble, (yyvsp[(1) - (1)].lex).loc, true);
     }
-#line 3234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 277 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 277 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).b, (yyvsp[(1) - (1)].lex).loc, true);
     }
-#line 3242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 280 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 280 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
+        (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
         if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
             (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
     }
-#line 3252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 288 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 288 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
-#line 3260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 291 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 291 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.intermTypedNode), (yyvsp[(3) - (4)].interm.intermTypedNode));
     }
-#line 3268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 294 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 294 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
-#line 3276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 15:
-#line 297 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 297 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
+        (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[(3) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode), *(yyvsp[(3) - (3)].lex).string);
     }
-#line 3284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 300 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 300 "glslang.y"
     {
-        parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
-        parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
-        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
+        parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode));
+        parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "++", (yyvsp[(1) - (2)].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "++", EOpPostIncrement, (yyvsp[(1) - (2)].interm.intermTypedNode));
     }
-#line 3294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 305 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 305 "glslang.y"
     {
-        parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
-        parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
-        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
+        parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode));
+        parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "--", (yyvsp[(1) - (2)].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "--", EOpPostDecrement, (yyvsp[(1) - (2)].interm.intermTypedNode));
     }
-#line 3304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 313 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 313 "glslang.y"
     {
-        parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        parseContext.integerCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]");
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
-#line 3313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 320 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 320 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
-        delete (yyvsp[0].interm).function;
+        (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[(1) - (1)].interm).loc, (yyvsp[(1) - (1)].interm).function, (yyvsp[(1) - (1)].interm).intermNode);
+        delete (yyvsp[(1) - (1)].interm).function;
     }
-#line 3322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 327 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 327 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[0].interm);
+        (yyval.interm) = (yyvsp[(1) - (1)].interm);
     }
-#line 3330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 21:
-#line 333 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 333 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[-1].interm);
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        (yyval.interm) = (yyvsp[(1) - (2)].interm);
+        (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
     }
-#line 3339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 337 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 337 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[-1].interm);
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        (yyval.interm) = (yyvsp[(1) - (2)].interm);
+        (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
     }
-#line 3348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 344 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 344 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[-1].interm);
+        (yyval.interm) = (yyvsp[(1) - (2)].interm);
     }
-#line 3356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 347 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 347 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[0].interm);
+        (yyval.interm) = (yyvsp[(1) - (1)].interm);
     }
-#line 3364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 353 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 353 "glslang.y"
     {
         TParameter param = { 0, new TType };
-        param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
-        (yyvsp[-1].interm).function->addParameter(param);
-        (yyval.interm).function = (yyvsp[-1].interm).function;
-        (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
+        param.type->shallowCopy((yyvsp[(2) - (2)].interm.intermTypedNode)->getType());
+        (yyvsp[(1) - (2)].interm).function->addParameter(param);
+        (yyval.interm).function = (yyvsp[(1) - (2)].interm).function;
+        (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode);
     }
-#line 3376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 26:
-#line 360 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 360 "glslang.y"
     {
         TParameter param = { 0, new TType };
-        param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
-        (yyvsp[-2].interm).function->addParameter(param);
-        (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);
+        param.type->shallowCopy((yyvsp[(3) - (3)].interm.intermTypedNode)->getType());
+        (yyvsp[(1) - (3)].interm).function->addParameter(param);
+        (yyval.interm).function = (yyvsp[(1) - (3)].interm).function;
+        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 27:
-#line 370 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 370 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[-1].interm);
+        (yyval.interm) = (yyvsp[(1) - (2)].interm);
     }
-#line 3396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 28:
-#line 378 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 378 "glslang.y"
     {
         // Constructor
         (yyval.interm).intermNode = 0;
-        (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
+        (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type));
     }
-#line 3406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 29:
-#line 383 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 383 "glslang.y"
     {
         //
         // Should be a method or subroutine call, but we haven't recognized the arguments yet.
@@ -3414,18 +3711,18 @@
         (yyval.interm).function = 0;
         (yyval.interm).intermNode = 0;
 
-        TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode();
+        TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode();
         if (method) {
             (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength);
             (yyval.interm).intermNode = method->getObject();
         } else {
-            TIntermSymbol* symbol = (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode();
+            TIntermSymbol* symbol = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsSymbolNode();
             if (symbol) {
                 parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName());
                 TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid));
                 (yyval.interm).function = function;
             } else
-                parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", "");
+                parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", "");
         }
 
         if ((yyval.interm).function == 0) {
@@ -3434,3696 +3731,3710 @@
             (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull);
         }
     }
-#line 3438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 30:
-#line 413 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 413 "glslang.y"
     {
-        parseContext.variableCheck((yyvsp[0].interm.intermTypedNode));
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
-        if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
-            parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
+        parseContext.variableCheck((yyvsp[(1) - (1)].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+        if (TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode())
+            parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
     }
-#line 3449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 31:
-#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 419 "glslang.y"
     {
-        parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
-        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
+        parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "++", (yyvsp[(2) - (2)].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "++", EOpPreIncrement, (yyvsp[(2) - (2)].interm.intermTypedNode));
     }
-#line 3458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 32:
-#line 423 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 423 "glslang.y"
     {
-        parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
-        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
+        parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "--", (yyvsp[(2) - (2)].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "--", EOpPreDecrement, (yyvsp[(2) - (2)].interm.intermTypedNode));
     }
-#line 3467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 33:
-#line 427 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 427 "glslang.y"
     {
-        if ((yyvsp[-1].interm).op != EOpNull) {
+        if ((yyvsp[(1) - (2)].interm).op != EOpNull) {
             char errorOp[2] = {0, 0};
-            switch((yyvsp[-1].interm).op) {
+            switch((yyvsp[(1) - (2)].interm).op) {
             case EOpNegative:   errorOp[0] = '-'; break;
             case EOpLogicalNot: errorOp[0] = '!'; break;
             case EOpBitwiseNot: errorOp[0] = '~'; break;
             default: break; // some compilers want this
             }
-            (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].interm).loc, errorOp, (yyvsp[-1].interm).op, (yyvsp[0].interm.intermTypedNode));
+            (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].interm).loc, errorOp, (yyvsp[(1) - (2)].interm).op, (yyvsp[(2) - (2)].interm.intermTypedNode));
         } else {
-            (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
             if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
                 (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
         }
     }
-#line 3488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 34:
-#line 447 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 3494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 447 "glslang.y"
+    { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNull; }
     break;
 
   case 35:
-#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 3500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 448 "glslang.y"
+    { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNegative; }
     break;
 
   case 36:
-#line 449 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 3506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 449 "glslang.y"
+    { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLogicalNot; }
     break;
 
   case 37:
-#line 450 "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 3513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 450 "glslang.y"
+    { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpBitwiseNot;
+              parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise not"); }
     break;
 
   case 38:
-#line 456 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 456 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 39:
-#line 457 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 457 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "*", EOpMul, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 40:
-#line 462 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 462 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "/", EOpDiv, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 41:
-#line 467 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 467 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%");
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "%");
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "%", EOpMod, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 42:
-#line 476 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 476 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 43:
-#line 477 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 477 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "+", EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 44:
-#line 482 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 482 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "-", EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 490 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 490 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 46:
-#line 491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 491 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left");
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift left");
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<<", EOpLeftShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 47:
-#line 497 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 497 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right");
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift right");
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">>", EOpRightShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 48:
-#line 506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 506 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 49:
-#line 507 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 507 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<", EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 50:
-#line 512 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 512 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">", EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 51:
-#line 517 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 517 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<=", EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 52:
-#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 522 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 53:
-#line 530 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 530 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 54:
-#line 531 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 531 "glslang.y"
     {
-        parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
-        parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
-        parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison");
+        parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "==");
+        parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "==");
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "==", EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 539 "glslang.y"
     {
-        parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
-        parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
-        parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison");
+        parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!=");
+        parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!=");
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "!=", EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 56:
-#line 550 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 550 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 57:
-#line 551 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 551 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and");
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise and");
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&", EOpAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 58:
-#line 560 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 560 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 59:
-#line 561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 561 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or");
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise exclusive or");
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^", EOpExclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 60:
-#line 570 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 570 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 61:
-#line 571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 571 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or");
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise inclusive or");
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "|", EOpInclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
     }
-#line 3733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 580 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 580 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 63:
-#line 581 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 581 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&&", EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 589 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 589 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 65:
-#line 590 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 590 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^^", EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 66:
-#line 598 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 598 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 67:
-#line 599 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 599 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "||", EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
         if ((yyval.interm.intermTypedNode) == 0)
-            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
+            (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc);
     }
-#line 3781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 68:
-#line 607 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 607 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 69:
-#line 608 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 608 "glslang.y"
     {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 3795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 70:
-#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 611 "glslang.y"
     {
         --parseContext.controlFlowNestingLevel;
-        parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
-        parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode));
-        parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode));
-        parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode));
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc);
+        parseContext.boolCheck((yyvsp[(2) - (6)].lex).loc, (yyvsp[(1) - (6)].interm.intermTypedNode));
+        parseContext.rValueErrorCheck((yyvsp[(2) - (6)].lex).loc, "?", (yyvsp[(1) - (6)].interm.intermTypedNode));
+        parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode));
+        parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(6) - (6)].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[(1) - (6)].interm.intermTypedNode), (yyvsp[(4) - (6)].interm.intermTypedNode), (yyvsp[(6) - (6)].interm.intermTypedNode), (yyvsp[(2) - (6)].lex).loc);
         if ((yyval.interm.intermTypedNode) == 0) {
-            parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
-            (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+            parseContext.binaryOpError((yyvsp[(2) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(6) - (6)].interm.intermTypedNode)->getCompleteString());
+            (yyval.interm.intermTypedNode) = (yyvsp[(6) - (6)].interm.intermTypedNode);
         }
     }
-#line 3812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 71:
-#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 3818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 626 "glslang.y"
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
   case 72:
-#line 627 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 627 "glslang.y"
     {
-        parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
-        parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
-        parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
-        parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode));
-        parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode));
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].interm).loc);
+        parseContext.arrayObjectCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array assignment");
+        parseContext.opaqueCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=");
+        parseContext.specializationCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=");
+        parseContext.lValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode));
+        parseContext.rValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(3) - (3)].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[(2) - (3)].interm).op, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].interm).loc);
         if ((yyval.interm.intermTypedNode) == 0) {
-            parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
-            (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
+            parseContext.assignError((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString());
+            (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
         }
     }
-#line 3835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 73:
-#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 642 "glslang.y"
     {
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
         (yyval.interm).op = EOpAssign;
     }
-#line 3844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 74:
-#line 646 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 646 "glslang.y"
     {
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
         (yyval.interm).op = EOpMulAssign;
     }
-#line 3853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 75:
-#line 650 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 650 "glslang.y"
     {
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
         (yyval.interm).op = EOpDivAssign;
     }
-#line 3862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 76:
-#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 654 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "%=");
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
         (yyval.interm).op = EOpModAssign;
     }
-#line 3872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 77:
-#line 659 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 659 "glslang.y"
     {
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
         (yyval.interm).op = EOpAddAssign;
     }
-#line 3881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 78:
-#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 663 "glslang.y"
     {
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc;
         (yyval.interm).op = EOpSubAssign;
     }
-#line 3890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 79:
-#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 667 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
-        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift left assign");
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
     }
-#line 3899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 80:
-#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 671 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
-        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift right assign");
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
     }
-#line 3908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 81:
-#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 675 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
-        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-and assign");
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpAndAssign;
     }
-#line 3917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 82:
-#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 679 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
-        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-xor assign");
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
     }
-#line 3926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 83:
-#line 683 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 683 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
-        (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-or assign");
+        (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
     }
-#line 3935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 84:
-#line 690 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 690 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
-#line 3943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 85:
-#line 693 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 693 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc);
         if ((yyval.interm.intermTypedNode) == 0) {
-            parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
-            (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+            parseContext.binaryOpError((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString());
+            (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode);
         }
     }
-#line 3955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 86:
-#line 703 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 703 "glslang.y"
     {
-        parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        parseContext.constantValueCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "");
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
-#line 3964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 87:
-#line 710 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 710 "glslang.y"
     {
-        parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */);
+        parseContext.handleFunctionDeclarator((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).function, true /* prototype */);
         (yyval.interm.intermNode) = 0;
         // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
     }
-#line 3974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 88:
-#line 715 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 715 "glslang.y"
     {
-        if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate())
-            (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
-        (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
+        if ((yyvsp[(1) - (2)].interm).intermNode && (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate())
+            (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
+        (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermNode;
     }
-#line 3984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 89:
-#line 720 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 720 "glslang.y"
     {
-        parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
+        parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ENoProfile, 130, 0, "precision statement");
 
         // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope
         parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]);
-        parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
+        parseContext.setDefaultPrecision((yyvsp[(1) - (4)].lex).loc, (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.type).qualifier.precision);
         (yyval.interm.intermNode) = 0;
     }
-#line 3997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 90:
-#line 728 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 728 "glslang.y"
     {
-        parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
+        parseContext.declareBlock((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).typeList);
         (yyval.interm.intermNode) = 0;
     }
-#line 4006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 91:
-#line 732 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 732 "glslang.y"
     {
-        parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
+        parseContext.declareBlock((yyvsp[(1) - (3)].interm).loc, *(yyvsp[(1) - (3)].interm).typeList, (yyvsp[(2) - (3)].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 4015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 92:
-#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 736 "glslang.y"
     {
-        parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
+        parseContext.declareBlock((yyvsp[(1) - (4)].interm).loc, *(yyvsp[(1) - (4)].interm).typeList, (yyvsp[(2) - (4)].lex).string, (yyvsp[(3) - (4)].interm).arraySizes);
         (yyval.interm.intermNode) = 0;
     }
-#line 4024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 93:
-#line 740 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 740 "glslang.y"
     {
-        parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
-        parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
+        parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier);
+        parseContext.updateStandaloneQualifierDefaults((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type));
         (yyval.interm.intermNode) = 0;
     }
-#line 4034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 94:
-#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 745 "glslang.y"
     {
-        parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers);
-        parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
+        parseContext.checkNoShaderLayouts((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).shaderQualifiers);
+        parseContext.addQualifierToExisting((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).qualifier, *(yyvsp[(2) - (3)].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 4044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 95:
-#line 750 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 750 "glslang.y"
     {
-        parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
-        (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string);
-        parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
+        parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers);
+        (yyvsp[(3) - (4)].interm.identifierList)->push_back((yyvsp[(2) - (4)].lex).string);
+        parseContext.addQualifierToExisting((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier, *(yyvsp[(3) - (4)].interm.identifierList));
         (yyval.interm.intermNode) = 0;
     }
-#line 4055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 96:
-#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 4061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 759 "glslang.y"
+    { parseContext.nestedBlockCheck((yyvsp[(1) - (3)].interm.type).loc); }
     break;
 
   case 97:
-#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 759 "glslang.y"
     {
         --parseContext.structNestingLevel;
-        parseContext.blockName = (yyvsp[-4].lex).string;
-        parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier);
-        parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers);
-        parseContext.currentBlockQualifier = (yyvsp[-5].interm.type).qualifier;
-        (yyval.interm).loc = (yyvsp[-5].interm.type).loc;
-        (yyval.interm).typeList = (yyvsp[-1].interm.typeList);
+        parseContext.blockName = (yyvsp[(2) - (6)].lex).string;
+        parseContext.globalQualifierFixCheck((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).qualifier);
+        parseContext.checkNoShaderLayouts((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).shaderQualifiers);
+        parseContext.currentBlockQualifier = (yyvsp[(1) - (6)].interm.type).qualifier;
+        (yyval.interm).loc = (yyvsp[(1) - (6)].interm.type).loc;
+        (yyval.interm).typeList = (yyvsp[(5) - (6)].interm.typeList);
     }
-#line 4075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 98:
-#line 770 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 770 "glslang.y"
     {
         (yyval.interm.identifierList) = new TIdentifierList;
-        (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
+        (yyval.interm.identifierList)->push_back((yyvsp[(2) - (2)].lex).string);
     }
-#line 4084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 99:
-#line 774 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 774 "glslang.y"
     {
-        (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
-        (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
+        (yyval.interm.identifierList) = (yyvsp[(1) - (3)].interm.identifierList);
+        (yyval.interm.identifierList)->push_back((yyvsp[(3) - (3)].lex).string);
     }
-#line 4093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 100:
-#line 781 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 781 "glslang.y"
     {
-        (yyval.interm).function = (yyvsp[-1].interm.function);
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
+        (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
     }
-#line 4102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 101:
-#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 788 "glslang.y"
     {
-        (yyval.interm.function) = (yyvsp[0].interm.function);
+        (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
     }
-#line 4110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 102:
-#line 791 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 791 "glslang.y"
     {
-        (yyval.interm.function) = (yyvsp[0].interm.function);
+        (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
     }
-#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 103:
-#line 798 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 798 "glslang.y"
     {
         // Add the parameter
-        (yyval.interm.function) = (yyvsp[-1].interm.function);
-        if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid)
-            (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param);
+        (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function);
+        if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid)
+            (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param);
         else
-            delete (yyvsp[0].interm).param.type;
+            delete (yyvsp[(2) - (2)].interm).param.type;
     }
-#line 4131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 104:
-#line 806 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 806 "glslang.y"
     {
         //
         // Only first parameter of one-parameter functions can be void
         // The check for named parameters not being void is done in parameter_declarator
         //
-        if ((yyvsp[0].interm).param.type->getBasicType() == EbtVoid) {
+        if ((yyvsp[(3) - (3)].interm).param.type->getBasicType() == EbtVoid) {
             //
             // This parameter > first is void
             //
-            parseContext.error((yyvsp[-1].lex).loc, "cannot be an argument type except for '(void)'", "void", "");
-            delete (yyvsp[0].interm).param.type;
+            parseContext.error((yyvsp[(2) - (3)].lex).loc, "cannot be an argument type except for '(void)'", "void", "");
+            delete (yyvsp[(3) - (3)].interm).param.type;
         } else {
             // Add the parameter
-            (yyval.interm.function) = (yyvsp[-2].interm.function);
-            (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
+            (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function);
+            (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param);
         }
     }
-#line 4153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 105:
-#line 826 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 826 "glslang.y"
     {
-        if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) {
-            parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return",
-                               GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), "");
+        if ((yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqTemporary) {
+            parseContext.error((yyvsp[(2) - (3)].lex).loc, "no qualifiers allowed for function return",
+                               GetStorageQualifierString((yyvsp[(1) - (3)].interm.type).qualifier.storage), "");
         }
-        if ((yyvsp[-2].interm.type).arraySizes)
-            parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
+        if ((yyvsp[(1) - (3)].interm.type).arraySizes)
+            parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
 
         // Add the function as a prototype after parsing it (we do not support recursion)
         TFunction *function;
-        TType type((yyvsp[-2].interm.type));
-        function = new TFunction((yyvsp[-1].lex).string, type);
+        TType type((yyvsp[(1) - (3)].interm.type));
+        function = new TFunction((yyvsp[(2) - (3)].lex).string, type);
         (yyval.interm.function) = function;
     }
-#line 4172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 106:
-#line 844 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 844 "glslang.y"
     {
-        if ((yyvsp[-1].interm.type).arraySizes) {
-            parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
-            parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
-            parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes);
+        if ((yyvsp[(1) - (2)].interm.type).arraySizes) {
+            parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+            parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+            parseContext.arraySizeRequiredCheck((yyvsp[(1) - (2)].interm.type).loc, *(yyvsp[(1) - (2)].interm.type).arraySizes);
         }
-        if ((yyvsp[-1].interm.type).basicType == EbtVoid) {
-            parseContext.error((yyvsp[0].lex).loc, "illegal use of type 'void'", (yyvsp[0].lex).string->c_str(), "");
+        if ((yyvsp[(1) - (2)].interm.type).basicType == EbtVoid) {
+            parseContext.error((yyvsp[(2) - (2)].lex).loc, "illegal use of type 'void'", (yyvsp[(2) - (2)].lex).string->c_str(), "");
         }
-        parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string);
+        parseContext.reservedErrorCheck((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string);
 
-        TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))};
-        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))};
+        (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc;
         (yyval.interm).param = param;
     }
-#line 4192 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 107:
-#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 859 "glslang.y"
     {
-        if ((yyvsp[-2].interm.type).arraySizes) {
-            parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
-            parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
-            parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
+        if ((yyvsp[(1) - (3)].interm.type).arraySizes) {
+            parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+            parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+            parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
         }
-        parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.type).arraySizes, (yyvsp[0].interm).arraySizes);
+        parseContext.arrayDimCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.type).arraySizes, (yyvsp[(3) - (3)].interm).arraySizes);
 
-        parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes);
-        parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string);
+        parseContext.arraySizeRequiredCheck((yyvsp[(3) - (3)].interm).loc, *(yyvsp[(3) - (3)].interm).arraySizes);
+        parseContext.reservedErrorCheck((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string);
 
-        (yyvsp[-2].interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
+        (yyvsp[(1) - (3)].interm.type).arraySizes = (yyvsp[(3) - (3)].interm).arraySizes;
 
-        TParameter param = { (yyvsp[-1].lex).string, new TType((yyvsp[-2].interm.type))};
-        (yyval.interm).loc = (yyvsp[-1].lex).loc;
+        TParameter param = { (yyvsp[(2) - (3)].lex).string, new TType((yyvsp[(1) - (3)].interm.type))};
+        (yyval.interm).loc = (yyvsp[(2) - (3)].lex).loc;
         (yyval.interm).param = param;
     }
-#line 4214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 108:
-#line 882 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 882 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[0].interm);
-        if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
-            (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
+        (yyval.interm) = (yyvsp[(2) - (2)].interm);
+        if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone)
+            (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision;
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
 
-        parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
-        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);
+        parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
+        parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type);
+        parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type);
 
     }
-#line 4230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 109:
-#line 893 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 893 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[0].interm);
+        (yyval.interm) = (yyvsp[(1) - (1)].interm);
 
-        parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
-        parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
+        parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type);
+        parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 4242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 110:
-#line 903 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 903 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[0].interm);
-        if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
-            (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
-        parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
+        (yyval.interm) = (yyvsp[(2) - (2)].interm);
+        if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone)
+            (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision;
+        parseContext.precisionQualifierCheck((yyvsp[(1) - (2)].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
 
-        parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
-        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);
+        parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
+        parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type);
+        parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type);
     }
-#line 4257 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 111:
-#line 913 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 913 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[0].interm);
+        (yyval.interm) = (yyvsp[(1) - (1)].interm);
 
-        parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
-        parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
+        parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type);
+        parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 4269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 112:
-#line 923 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 923 "glslang.y"
     {
-        TParameter param = { 0, new TType((yyvsp[0].interm.type)) };
+        TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) };
         (yyval.interm).param = param;
-        if ((yyvsp[0].interm.type).arraySizes)
-            parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
+        if ((yyvsp[(1) - (1)].interm.type).arraySizes)
+            parseContext.arraySizeRequiredCheck((yyvsp[(1) - (1)].interm.type).loc, *(yyvsp[(1) - (1)].interm.type).arraySizes);
     }
-#line 4280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 113:
-#line 932 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 932 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[0].interm);
+        (yyval.interm) = (yyvsp[(1) - (1)].interm);
     }
-#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 114:
-#line 935 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 935 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[-2].interm);
-        parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
+        (yyval.interm) = (yyvsp[(1) - (3)].interm);
+        parseContext.declareVariable((yyvsp[(3) - (3)].lex).loc, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm).type);
     }
-#line 4297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 115:
-#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 939 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[-3].interm);
-        parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
+        (yyval.interm) = (yyvsp[(1) - (4)].interm);
+        parseContext.declareVariable((yyvsp[(3) - (4)].lex).loc, *(yyvsp[(3) - (4)].lex).string, (yyvsp[(1) - (4)].interm).type, (yyvsp[(4) - (4)].interm).arraySizes);
     }
-#line 4306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 116:
-#line 943 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 943 "glslang.y"
     {
-        (yyval.interm).type = (yyvsp[-5].interm).type;
-        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);
+        (yyval.interm).type = (yyvsp[(1) - (6)].interm).type;
+        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (6)].lex).loc, *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, (yyvsp[(4) - (6)].interm).arraySizes, (yyvsp[(6) - (6)].interm.intermTypedNode));
+        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, initNode, (yyvsp[(5) - (6)].lex).loc);
     }
-#line 4316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 117:
-#line 948 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 948 "glslang.y"
     {
-        (yyval.interm).type = (yyvsp[-4].interm).type;
-        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);
+        (yyval.interm).type = (yyvsp[(1) - (5)].interm).type;
+        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (5)].lex).loc, *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, 0, (yyvsp[(5) - (5)].interm.intermTypedNode));
+        (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (5)].interm).intermNode, initNode, (yyvsp[(4) - (5)].lex).loc);
     }
-#line 4326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 118:
-#line 956 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 956 "glslang.y"
     {
-        (yyval.interm).type = (yyvsp[0].interm.type);
+        (yyval.interm).type = (yyvsp[(1) - (1)].interm.type);
         (yyval.interm).intermNode = 0;
         parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
     }
-#line 4336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 119:
-#line 961 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 961 "glslang.y"
     {
-        (yyval.interm).type = (yyvsp[-1].interm.type);
+        (yyval.interm).type = (yyvsp[(1) - (2)].interm.type);
         (yyval.interm).intermNode = 0;
-        parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
+        parseContext.declareVariable((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string, (yyvsp[(1) - (2)].interm.type));
     }
-#line 4346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 120:
-#line 966 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 966 "glslang.y"
     {
-        (yyval.interm).type = (yyvsp[-2].interm.type);
+        (yyval.interm).type = (yyvsp[(1) - (3)].interm.type);
         (yyval.interm).intermNode = 0;
-        parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
+        parseContext.declareVariable((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string, (yyvsp[(1) - (3)].interm.type), (yyvsp[(3) - (3)].interm).arraySizes);
     }
-#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 121:
-#line 971 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 971 "glslang.y"
     {
-        (yyval.interm).type = (yyvsp[-4].interm.type);
-        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);
+        (yyval.interm).type = (yyvsp[(1) - (5)].interm.type);
+        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (5)].lex).loc, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), (yyvsp[(3) - (5)].interm).arraySizes, (yyvsp[(5) - (5)].interm.intermTypedNode));
+        (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(4) - (5)].lex).loc);
     }
-#line 4366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 122:
-#line 976 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 976 "glslang.y"
     {
-        (yyval.interm).type = (yyvsp[-3].interm.type);
-        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);
+        (yyval.interm).type = (yyvsp[(1) - (4)].interm.type);
+        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode));
+        (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(3) - (4)].lex).loc);
     }
-#line 4376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 123:
-#line 985 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 985 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
 
-        parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type));
-        if ((yyvsp[0].interm.type).arraySizes) {
-            parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
-            parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+        parseContext.globalQualifierTypeCheck((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier, (yyval.interm.type));
+        if ((yyvsp[(1) - (1)].interm.type).arraySizes) {
+            parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+            parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
         }
 
         parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
     }
-#line 4392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 124:
-#line 996 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 996 "glslang.y"
     {
-        parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
-        parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
+        parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier);
+        parseContext.globalQualifierTypeCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].interm.type));
 
-        if ((yyvsp[0].interm.type).arraySizes) {
-            parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
-            parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+        if ((yyvsp[(2) - (2)].interm.type).arraySizes) {
+            parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+            parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
         }
 
-        if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier))
-            (yyvsp[0].interm.type).arraySizes = 0;
+        if ((yyvsp[(2) - (2)].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier))
+            (yyvsp[(2) - (2)].interm.type).arraySizes = 0;
 
-        parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
-        (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers);
-        parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true);
-        parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier);
+        parseContext.checkNoShaderLayouts((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers);
+        (yyvsp[(2) - (2)].interm.type).shaderQualifiers.merge((yyvsp[(1) - (2)].interm.type).shaderQualifiers);
+        parseContext.mergeQualifiers((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).qualifier, (yyvsp[(1) - (2)].interm.type).qualifier, true);
+        parseContext.precisionQualifierCheck((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).basicType, (yyvsp[(2) - (2)].interm.type).qualifier);
 
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
 
         if (! (yyval.interm.type).qualifier.isInterpolation() &&
             ((parseContext.language == EShLangVertex   && (yyval.interm.type).qualifier.storage == EvqVaryingOut) ||
              (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
             (yyval.interm.type).qualifier.smooth = true;
     }
-#line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 125:
-#line 1023 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1023 "glslang.y"
     {
-        parseContext.globalCheck((yyvsp[0].lex).loc, "invariant");
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "invariant");
         parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
         (yyval.interm.type).qualifier.invariant = true;
     }
-#line 4432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 126:
-#line 1032 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1032 "glslang.y"
     {
-        parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
-        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
-        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "smooth");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "smooth");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "smooth");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
         (yyval.interm.type).qualifier.smooth = true;
     }
-#line 4444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 127:
-#line 1039 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1039 "glslang.y"
     {
-        parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
-        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
-        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "flat");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "flat");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "flat");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
         (yyval.interm.type).qualifier.flat = true;
     }
-#line 4456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 128:
-#line 1046 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1046 "glslang.y"
     {
-        parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
-        parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective");
-        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "noperspective");
+        parseContext.requireProfile((yyvsp[(1) - (1)].lex).loc, ~EEsProfile, "noperspective");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "noperspective");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
         (yyval.interm.type).qualifier.nopersp = true;
     }
-#line 4468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 129:
-#line 1056 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1053 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[-1].interm.type);
+#ifdef AMD_EXTENSIONS
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "__explicitInterpAMD");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.explicitInterp = true;
+#endif
     }
-#line 4476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 130:
-#line 1062 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1065 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(3) - (4)].interm.type);
     }
-#line 4484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 131:
-#line 1065 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1071 "glslang.y"
     {
-        (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);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
-#line 4494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 132:
-#line 1072 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1074 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
+        (yyval.interm.type) = (yyvsp[(1) - (3)].interm.type);
+        (yyval.interm.type).shaderQualifiers.merge((yyvsp[(3) - (3)].interm.type).shaderQualifiers);
+        parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[(3) - (3)].interm.type).qualifier, false);
     }
-#line 4503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 133:
-#line 1076 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1081 "glslang.y"
     {
-        (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));
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (1)].lex).string);
     }
-#line 4512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 134:
-#line 1080 "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 1792 of yacc.c  */
+#line 1085 "glslang.y"
+    {
+        (yyval.interm.type).init((yyvsp[(1) - (3)].lex).loc);
+        parseContext.setLayoutQualifier((yyvsp[(1) - (3)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (3)].lex).string, (yyvsp[(3) - (3)].interm.intermTypedNode));
     }
-#line 4522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 135:
-#line 1088 "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 1792 of yacc.c  */
+#line 1089 "glslang.y"
+    { // because "shared" is both an identifier and a keyword
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        TString strShared("shared");
+        parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), strShared);
     }
-#line 4533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 136:
-#line 1097 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1097 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.noContraction = true;
     }
-#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 137:
-#line 1100 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1106 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[-1].interm.type);
-        if ((yyval.interm.type).basicType == EbtVoid)
-            (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType;
-
-        (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);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
-#line 4554 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 138:
-#line 1111 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1109 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type);
+        if ((yyval.interm.type).basicType == EbtVoid)
+            (yyval.interm.type).basicType = (yyvsp[(2) - (2)].interm.type).basicType;
+
+        (yyval.interm.type).shaderQualifiers.merge((yyvsp[(2) - (2)].interm.type).shaderQualifiers);
+        parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).qualifier, false);
     }
-#line 4562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 139:
-#line 1114 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1120 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
-#line 4570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 140:
-#line 1117 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1123 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
-#line 4578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 141:
-#line 1120 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1126 "glslang.y"
     {
-        // allow inheritance of storage qualifier from block declaration
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
-#line 4587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 142:
-#line 1124 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1129 "glslang.y"
     {
         // allow inheritance of storage qualifier from block declaration
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
-#line 4596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 143:
-#line 1128 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1133 "glslang.y"
     {
         // allow inheritance of storage qualifier from block declaration
-        (yyval.interm.type) = (yyvsp[0].interm.type);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
-#line 4605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 144:
-#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1137 "glslang.y"
     {
-        (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
+        // allow inheritance of storage qualifier from block declaration
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
-#line 4614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 145:
-#line 1139 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1144 "glslang.y"
     {
-        parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
-        parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
-        parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute");
-        parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute");
-        parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute");
-
-        parseContext.globalCheck((yyvsp[0].lex).loc, "attribute");
-
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.storage = EvqVaryingIn;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqConst;  // will later turn into EvqConstReadOnly, if the initializer is not constant
     }
-#line 4631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 146:
-#line 1151 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1148 "glslang.y"
     {
-        parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
-        parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
-        parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying");
-        parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying");
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangVertex, "attribute");
+        parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "attribute");
+        parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "attribute");
+        parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "attribute");
+        parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "attribute");
 
-        parseContext.globalCheck((yyvsp[0].lex).loc, "varying");
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "attribute");
 
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqVaryingIn;
+    }
+    break;
+
+  case 147:
+/* Line 1792 of yacc.c  */
+#line 1160 "glslang.y"
+    {
+        parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "varying");
+        parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "varying");
+        parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "varying");
+        parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "varying");
+
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "varying");
+
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
         if (parseContext.language == EShLangVertex)
             (yyval.interm.type).qualifier.storage = EvqVaryingOut;
         else
             (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 4650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 147:
-#line 1165 "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 4660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 148:
-#line 1170 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1174 "glslang.y"
     {
-        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;
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "inout");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqInOut;
     }
-#line 4671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 149:
-#line 1176 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1179 "glslang.y"
     {
-        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;
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "in");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].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 4682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 150:
-#line 1182 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1185 "glslang.y"
     {
-        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
-        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
-        parseContext.globalCheck((yyvsp[0].lex).loc, "centroid");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.centroid = true;
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "out");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].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 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 151:
-#line 1189 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1191 "glslang.y"
     {
-        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;
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 120, 0, "centroid");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "centroid");
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "centroid");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.centroid = true;
     }
-#line 4705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 152:
-#line 1195 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1198 "glslang.y"
     {
-        parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.sample = true;
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "patch");
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.patch = true;
     }
-#line 4715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 153:
-#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1204 "glslang.y"
     {
-        parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.storage = EvqUniform;
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "sample");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.sample = true;
     }
-#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 154:
-#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1209 "glslang.y"
     {
-        parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.storage = EvqBuffer;
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "uniform");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqUniform;
     }
-#line 4735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 155:
-#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1214 "glslang.y"
     {
-        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
-        parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared");
-        parseContext.requireStage((yyvsp[0].lex).loc, EShLangCompute, "shared");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.storage = EvqShared;
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "buffer");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqBuffer;
     }
-#line 4747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 156:
-#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1219 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.coherent = true;
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 310, 0, "shared");
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangCompute, "shared");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqShared;
     }
-#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 157:
-#line 1221 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1226 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.volatil = true;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.coherent = true;
     }
-#line 4765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 158:
-#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1230 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.restrict = true;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.volatil = true;
     }
-#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 159:
-#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1234 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.readonly = true;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.restrict = true;
     }
-#line 4783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 160:
-#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1238 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.writeonly = true;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.readonly = true;
     }
-#line 4792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 161:
-#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1242 "glslang.y"
     {
-        parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
-        parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
-        (yyval.interm.type).init((yyvsp[0].lex).loc);
-        (yyval.interm.type).qualifier.storage = EvqUniform;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.writeonly = true;
     }
-#line 4803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 162:
-#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1246 "glslang.y"
     {
-        parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
-        parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
-        (yyval.interm.type).init((yyvsp[-3].lex).loc);
+        parseContext.spvRemoved((yyvsp[(1) - (1)].lex).loc, "subroutine");
+        parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "subroutine");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqUniform;
+    }
+    break;
+
+  case 163:
+/* Line 1792 of yacc.c  */
+#line 1252 "glslang.y"
+    {
+        parseContext.spvRemoved((yyvsp[(1) - (4)].lex).loc, "subroutine");
+        parseContext.globalCheck((yyvsp[(1) - (4)].lex).loc, "subroutine");
+        (yyval.interm.type).init((yyvsp[(1) - (4)].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqUniform;
         // 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 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 163:
-#line 1255 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        // TODO: 4.0 functionality: subroutine type to list
-    }
-#line 4825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 164:
-#line 1258 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1264 "glslang.y"
     {
+        // TODO: 4.0 functionality: subroutine type to list
     }
-#line 4832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 165:
-#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1267 "glslang.y"
     {
-        (yyval.interm.type) = (yyvsp[0].interm.type);
-        (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
     }
-#line 4841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 166:
-#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1272 "glslang.y"
     {
-        parseContext.arrayDimCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes, 0);
-        (yyval.interm.type) = (yyvsp[-1].interm.type);
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
-        (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
     }
-#line 4852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 167:
-#line 1276 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1276 "glslang.y"
     {
-        (yyval.interm).loc = (yyvsp[-1].lex).loc;
-        (yyval.interm).arraySizes = new TArraySizes;
-        (yyval.interm).arraySizes->addInnerSize();
+        parseContext.arrayDimCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0);
+        (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type);
+        (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
+        (yyval.interm.type).arraySizes = (yyvsp[(2) - (2)].interm).arraySizes;
     }
-#line 4862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 168:
-#line 1281 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1285 "glslang.y"
     {
-        (yyval.interm).loc = (yyvsp[-2].lex).loc;
+        (yyval.interm).loc = (yyvsp[(1) - (2)].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
-
-        TArraySize size;
-        parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
-        (yyval.interm).arraySizes->addInnerSize(size);
+        (yyval.interm).arraySizes->addInnerSize();
     }
-#line 4875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 169:
-#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1290 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[-2].interm);
-        (yyval.interm).arraySizes->addInnerSize();
+        (yyval.interm).loc = (yyvsp[(1) - (3)].lex).loc;
+        (yyval.interm).arraySizes = new TArraySizes;
+
+        TArraySize size;
+        parseContext.arraySizeCheck((yyvsp[(2) - (3)].interm.intermTypedNode)->getLoc(), (yyvsp[(2) - (3)].interm.intermTypedNode), size);
+        (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 4884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 170:
-#line 1293 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1298 "glslang.y"
     {
-        (yyval.interm) = (yyvsp[-3].interm);
-
-        TArraySize size;
-        parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
-        (yyval.interm).arraySizes->addInnerSize(size);
+        (yyval.interm) = (yyvsp[(1) - (3)].interm);
+        (yyval.interm).arraySizes->addInnerSize();
     }
-#line 4896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 171:
-#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1302 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtVoid;
+        (yyval.interm) = (yyvsp[(1) - (4)].interm);
+
+        TArraySize size;
+        parseContext.arraySizeCheck((yyvsp[(3) - (4)].interm.intermTypedNode)->getLoc(), (yyvsp[(3) - (4)].interm.intermTypedNode), size);
+        (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 4905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 172:
-#line 1307 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1312 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtVoid;
     }
-#line 4914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 173:
-#line 1311 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1316 "glslang.y"
     {
-        parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat;
     }
-#line 4924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 174:
-#line 1316 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1320 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt;
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
     }
-#line 4933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 175:
-#line 1320 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1325 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint;
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt;
     }
-#line 4943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 176:
-#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1329 "glslang.y"
     {
-        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;
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint;
     }
-#line 4953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 177:
-#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1334 "glslang.y"
     {
-        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;
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt64;
     }
-#line 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 178:
-#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1339 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtBool;
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint64;
     }
-#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 179:
-#line 1339 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1344 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(2);
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtBool;
     }
-#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 180:
-#line 1344 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1348 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 181:
-#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1353 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 5002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 182:
-#line 1354 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1358 "glslang.y"
     {
-        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);
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setVector(4);
     }
-#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 183:
-#line 1360 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1363 "glslang.y"
     {
-        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 5024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 184:
-#line 1366 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1369 "glslang.y"
     {
-        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 5035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 185:
-#line 1372 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1375 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtBool;
-        (yyval.interm.type).setVector(2);
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setVector(4);
     }
-#line 5045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 186:
-#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1381 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 5055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 187:
-#line 1382 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1386 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 5065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 188:
-#line 1387 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1391 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(2);
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtBool;
+        (yyval.interm.type).setVector(4);
     }
-#line 5075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 189:
-#line 1392 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1396 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 5085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 190:
-#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1401 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 191:
-#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1406 "glslang.y"
     {
-        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);
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt;
+        (yyval.interm.type).setVector(4);
     }
-#line 5106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 192:
-#line 1408 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1411 "glslang.y"
     {
-        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 193:
-#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1417 "glslang.y"
     {
-        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 5128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 194:
-#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1423 "glslang.y"
     {
-        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);
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt64;
+        (yyval.interm.type).setVector(4);
     }
-#line 5139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 195:
-#line 1426 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1429 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 5150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 196:
-#line 1432 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1435 "glslang.y"
     {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 197:
-#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1441 "glslang.y"
     {
-        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);
+        parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint;
+        (yyval.interm.type).setVector(4);
     }
-#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 198:
-#line 1444 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1447 "glslang.y"
     {
-        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());
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).setVector(2);
     }
-#line 5183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 199:
-#line 1450 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1453 "glslang.y"
     {
-        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());
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(3);
     }
-#line 5194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 200:
-#line 1456 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1459 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 2);
+        parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint64;
+        (yyval.interm.type).setVector(4);
     }
-#line 5204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 201:
-#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1465 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 3);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 5214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 202:
-#line 1466 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1470 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 4);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 5224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 203:
-#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1475 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 2);
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 5234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 204:
-#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1480 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 3);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 5244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 205:
-#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1485 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 4);
+        (yyval.interm.type).setMatrix(2, 3);
     }
-#line 5254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 206:
-#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1490 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 2);
+        (yyval.interm.type).setMatrix(2, 4);
     }
-#line 5264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 207:
-#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1495 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 3);
+        (yyval.interm.type).setMatrix(3, 2);
     }
-#line 5274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 208:
-#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1500 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 4);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 5284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 209:
-#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1505 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 2);
+        (yyval.interm.type).setMatrix(3, 4);
     }
-#line 5294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 210:
-#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1510 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 3);
+        (yyval.interm.type).setMatrix(4, 2);
     }
-#line 5304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 211:
-#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1515 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 4);
+        (yyval.interm.type).setMatrix(4, 3);
     }
-#line 5314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 212:
-#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1520 "glslang.y"
     {
-        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);
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 213:
-#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1525 "glslang.y"
     {
-        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 5336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 214:
-#line 1528 "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 5347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 215:
-#line 1534 "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());
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 5358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 214:
+/* Line 1792 of yacc.c  */
+#line 1531 "glslang.y"
     {
-        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 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 217:
-#line 1546 "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 5380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 218:
-#line 1552 "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 5391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 219:
-#line 1558 "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());
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 5402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 1564 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 215:
+/* Line 1792 of yacc.c  */
+#line 1537 "glslang.y"
     {
-        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 5413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 221:
-#line 1570 "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 5424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 222:
-#line 1576 "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 5435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 223:
-#line 1582 "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());
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 5446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 216:
+/* Line 1792 of yacc.c  */
+#line 1543 "glslang.y"
+    {
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(2, 2);
+    }
+    break;
+
+  case 217:
+/* Line 1792 of yacc.c  */
+#line 1549 "glslang.y"
+    {
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(2, 3);
+    }
+    break;
+
+  case 218:
+/* Line 1792 of yacc.c  */
+#line 1555 "glslang.y"
+    {
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(2, 4);
+    }
+    break;
+
+  case 219:
+/* Line 1792 of yacc.c  */
+#line 1561 "glslang.y"
+    {
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(3, 2);
+    }
+    break;
+
+  case 220:
+/* Line 1792 of yacc.c  */
+#line 1567 "glslang.y"
+    {
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(3, 3);
+    }
+    break;
+
+  case 221:
+/* Line 1792 of yacc.c  */
+#line 1573 "glslang.y"
+    {
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(3, 4);
+    }
+    break;
+
+  case 222:
+/* Line 1792 of yacc.c  */
+#line 1579 "glslang.y"
+    {
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(4, 2);
+    }
+    break;
+
+  case 223:
+/* Line 1792 of yacc.c  */
+#line 1585 "glslang.y"
+    {
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(4, 3);
+    }
     break;
 
   case 224:
-#line 1588 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1591 "glslang.y"
     {
-        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;
+        parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 225:
-#line 1593 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1597 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd1D);
+        parseContext.vulkanRemoved((yyvsp[(1) - (1)].lex).loc, "atomic counter types");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtAtomicUint;
     }
-#line 5466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 226:
-#line 1598 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1602 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd1D);
     }
-#line 5476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 227:
-#line 1603 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1607 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
     }
-#line 5486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 228:
-#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1612 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
     }
-#line 5496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 229:
-#line 1613 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1617 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].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, EsdCube);
     }
-#line 5506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 230:
-#line 1618 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1622 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].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, Esd1D, false, true);
     }
-#line 5516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 231:
-#line 1623 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1627 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].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, Esd2D, false, true);
     }
-#line 5526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 232:
-#line 1628 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1632 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
     }
-#line 5536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 233:
-#line 1633 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1637 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
     }
-#line 5546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 234:
-#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1642 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].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, Esd2D, true);
     }
-#line 5556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 235:
-#line 1643 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1647 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].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, Esd1D, true, true);
     }
-#line 5566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 236:
-#line 1648 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1652 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
     }
-#line 5576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 237:
-#line 1653 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1657 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].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, EsdCube, true);
     }
-#line 5586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 238:
-#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1662 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd1D);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
     }
-#line 5596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 239:
-#line 1663 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1667 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd2D);
+        (yyval.interm.type).sampler.set(EbtInt, Esd1D);
     }
-#line 5606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 240:
-#line 1668 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1672 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd3D);
+        (yyval.interm.type).sampler.set(EbtInt, Esd2D);
     }
-#line 5616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 241:
-#line 1673 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1677 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, EsdCube);
+        (yyval.interm.type).sampler.set(EbtInt, Esd3D);
     }
-#line 5626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 242:
-#line 1678 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1682 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
+        (yyval.interm.type).sampler.set(EbtInt, EsdCube);
     }
-#line 5636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 243:
-#line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1687 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
     }
-#line 5646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 244:
-#line 1688 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1692 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
+        (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
     }
-#line 5656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 245:
-#line 1693 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1697 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd1D);
+        (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
     }
-#line 5666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 246:
-#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1702 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd2D);
+        (yyval.interm.type).sampler.set(EbtUint, Esd1D);
     }
-#line 5676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 247:
-#line 1703 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1707 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd3D);
+        (yyval.interm.type).sampler.set(EbtUint, Esd2D);
     }
-#line 5686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 248:
-#line 1708 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1712 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, EsdCube);
+        (yyval.interm.type).sampler.set(EbtUint, Esd3D);
     }
-#line 5696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 249:
-#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1717 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
+        (yyval.interm.type).sampler.set(EbtUint, EsdCube);
     }
-#line 5706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 250:
-#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1722 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
+        (yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
     }
-#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 251:
-#line 1723 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1727 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
+        (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
     }
-#line 5726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 252:
-#line 1728 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1732 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdRect);
+        (yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
     }
-#line 5736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 253:
-#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1737 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdRect);
     }
-#line 5746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 254:
-#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1742 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, EsdRect);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
     }
-#line 5756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 255:
-#line 1743 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1747 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, EsdRect);
+        (yyval.interm.type).sampler.set(EbtInt, EsdRect);
     }
-#line 5766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 256:
-#line 1748 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1752 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
+        (yyval.interm.type).sampler.set(EbtUint, EsdRect);
     }
-#line 5776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 257:
-#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1757 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
+        (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
     }
-#line 5786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 258:
-#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1762 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
+        (yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
     }
-#line 5796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 259:
-#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1767 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
     }
-#line 5806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 260:
-#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1772 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
     }
-#line 5816 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 261:
-#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1777 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
     }
-#line 5826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 262:
-#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1782 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
     }
-#line 5836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 263:
-#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1787 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
     }
-#line 5846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 264:
-#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1792 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
     }
-#line 5856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 265:
-#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1797 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setPureSampler(false);
+        (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
     }
-#line 5866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 266:
-#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1802 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setPureSampler(true);
+        (yyval.interm.type).sampler.setPureSampler(false);
     }
-#line 5876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 267:
-#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1807 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
+        (yyval.interm.type).sampler.setPureSampler(true);
     }
-#line 5886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 268:
-#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1812 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
     }
-#line 5896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 269:
-#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1817 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
     }
-#line 5906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 270:
-#line 1818 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1822 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
     }
-#line 5916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 271:
-#line 1823 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1827 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
     }
-#line 5926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 272:
-#line 1828 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1832 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
     }
-#line 5936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 273:
-#line 1833 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1837 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
     }
-#line 5946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 274:
-#line 1838 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1842 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
     }
-#line 5956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 275:
-#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1847 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
     }
-#line 5966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 276:
-#line 1848 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1852 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
     }
-#line 5976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 277:
-#line 1853 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1857 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
     }
-#line 5986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 278:
-#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1862 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
     }
-#line 5996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 279:
-#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1867 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
     }
-#line 6006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 280:
-#line 1868 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1872 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
     }
-#line 6016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 281:
-#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1877 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
+        (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
     }
-#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 282:
-#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1882 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
     }
-#line 6036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 283:
-#line 1883 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1887 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
     }
-#line 6046 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 284:
-#line 1888 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1892 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
     }
-#line 6056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 285:
-#line 1893 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1897 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
     }
-#line 6066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 286:
-#line 1898 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1902 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
     }
-#line 6076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 287:
-#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1907 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
     }
-#line 6086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 288:
-#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1912 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
+        (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
     }
-#line 6096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 289:
-#line 1913 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1917 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
     }
-#line 6106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 290:
-#line 1918 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1922 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
+        (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
     }
-#line 6116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 291:
-#line 1923 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1927 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
+        (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
     }
-#line 6126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 292:
-#line 1928 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1932 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
     }
-#line 6136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 293:
-#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1937 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
+        (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
     }
-#line 6146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 294:
-#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1942 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
     }
-#line 6156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 295:
-#line 1943 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1947 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
     }
-#line 6166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 296:
-#line 1948 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1952 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
     }
-#line 6176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 297:
-#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1957 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
     }
-#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 298:
-#line 1958 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1962 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
     }
-#line 6196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 299:
-#line 1963 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1967 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
     }
-#line 6206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 300:
-#line 1968 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1972 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
+        (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
     }
-#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 301:
-#line 1973 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1977 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
+        (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
     }
-#line 6226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 302:
-#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1982 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
+        (yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
     }
-#line 6236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 303:
-#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1987 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
+        (yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
     }
-#line 6246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 304:
-#line 1988 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1992 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
+        (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
     }
-#line 6256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 305:
-#line 1993 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 1997 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
+        (yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
     }
-#line 6266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 306:
-#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2002 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
+        (yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
     }
-#line 6276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 307:
-#line 2003 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2007 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
+        (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
     }
-#line 6286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 308:
-#line 2008 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2012 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
+        (yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
     }
-#line 6296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 309:
-#line 2013 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2017 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
+        (yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
     }
-#line 6306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 310:
-#line 2018 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2022 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
+        (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
     }
-#line 6316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 311:
-#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2027 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
+        (yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
     }
-#line 6326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 312:
-#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2032 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
+        (yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
     }
-#line 6336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 313:
-#line 2033 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2037 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
+        (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
     }
-#line 6346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 314:
-#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2042 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
+        (yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
     }
-#line 6356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 315:
-#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2047 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
+        (yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
     }
-#line 6366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 316:
-#line 2048 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2052 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
+        (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
     }
-#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 317:
-#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2057 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
+        (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
     }
-#line 6386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 318:
-#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2062 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
+        (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
     }
-#line 6396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 319:
-#line 2063 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2067 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
+        (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
     }
-#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 320:
-#line 2068 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2072 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
+        (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
     }
-#line 6416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 321:
-#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2077 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
+        (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
     }
-#line 6426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 322:
-#line 2078 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2082 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
+        (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
     }
-#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 323:
-#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2087 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
+        (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
     }
-#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 324:
-#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2092 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
+        (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
     }
-#line 6456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 325:
-#line 2093 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2097 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
+        (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
     }
-#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 326:
-#line 2098 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2102 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
+        (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
     }
-#line 6476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 327:
-#line 2103 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2107 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
     }
-#line 6486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 328:
-#line 2108 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2112 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
     }
-#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 329:
-#line 2113 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2117 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
+        (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
     }
-#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 330:
-#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2122 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
     }
-#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 331:
-#line 2123 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2127 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
     }
-#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 332:
-#line 2128 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2132 "glslang.y"
     {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
+        (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
     }
-#line 6536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 333:
-#line 2133 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2137 "glslang.y"
+    {
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
+    }
+    break;
+
+  case 334:
+/* Line 1792 of yacc.c  */
+#line 2142 "glslang.y"
     {  // GL_OES_EGL_image_external
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
         (yyval.interm.type).sampler.external = true;
     }
-#line 6547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 334:
-#line 2139 "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 6558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 335:
-#line 2145 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2148 "glslang.y"
     {
-        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setSubpass(EbtFloat, true);
+        (yyval.interm.type).sampler.setSubpass(EbtFloat);
     }
-#line 6569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 336:
-#line 2151 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2154 "glslang.y"
     {
-        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setSubpass(EbtInt);
+        (yyval.interm.type).sampler.setSubpass(EbtFloat, true);
     }
-#line 6580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 337:
-#line 2157 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2160 "glslang.y"
     {
-        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setSubpass(EbtInt, true);
+        (yyval.interm.type).sampler.setSubpass(EbtInt);
     }
-#line 6591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 338:
-#line 2163 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2166 "glslang.y"
     {
-        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setSubpass(EbtUint);
+        (yyval.interm.type).sampler.setSubpass(EbtInt, true);
     }
-#line 6602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 339:
-#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2172 "glslang.y"
     {
-        parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
-        (yyval.interm.type).sampler.setSubpass(EbtUint, true);
+        (yyval.interm.type).sampler.setSubpass(EbtUint);
     }
-#line 6613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 340:
-#line 2175 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2178 "glslang.y"
     {
-        (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));
+        parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtSampler;
+        (yyval.interm.type).sampler.setSubpass(EbtUint, true);
     }
-#line 6623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 341:
-#line 2180 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2184 "glslang.y"
+    {
+        (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
+        (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+        parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
+    }
+    break;
+
+  case 342:
+/* Line 1792 of yacc.c  */
+#line 2189 "glslang.y"
     {
         //
         // This is for user defined type names.  The lexical phase looked up the
         // type.
         //
-        if (const TVariable* variable = ((yyvsp[0].lex).symbol)->getAsVariable()) {
+        if (const TVariable* variable = ((yyvsp[(1) - (1)].lex).symbol)->getAsVariable()) {
             const TType& structure = variable->getType();
-            (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+            (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
             (yyval.interm.type).basicType = EbtStruct;
             (yyval.interm.type).userDef = &structure;
         } else
-            parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
+            parseContext.error((yyvsp[(1) - (1)].lex).loc, "expected type name", (yyvsp[(1) - (1)].lex).string->c_str(), "");
     }
-#line 6641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 342:
-#line 2196 "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());
-        if (parseContext.profile == EEsProfile)
-            (yyval.interm.type).qualifier.precision = EpqHigh;
-    }
-#line 6652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 343:
-#line 2202 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2205 "glslang.y"
     {
-        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         if (parseContext.profile == EEsProfile)
-            (yyval.interm.type).qualifier.precision = EpqMedium;
+            (yyval.interm.type).qualifier.precision = EpqHigh;
     }
-#line 6663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 344:
-#line 2208 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2211 "glslang.y"
     {
-        parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
         if (parseContext.profile == EEsProfile)
-            (yyval.interm.type).qualifier.precision = EpqLow;
+            (yyval.interm.type).qualifier.precision = EpqMedium;
     }
-#line 6674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 345:
-#line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 6680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2217 "glslang.y"
+    {
+        parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
+        (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        if (parseContext.profile == EEsProfile)
+            (yyval.interm.type).qualifier.precision = EpqLow;
+    }
     break;
 
   case 346:
-#line 2217 "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);
-        TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true);
-        if (! parseContext.symbolTable.insert(*userTypeDef))
-            parseContext.error((yyvsp[-4].lex).loc, "redefinition", (yyvsp[-4].lex).string->c_str(), "struct");
-        (yyval.interm.type).init((yyvsp[-5].lex).loc);
-        (yyval.interm.type).basicType = EbtStruct;
-        (yyval.interm.type).userDef = structure;
-        --parseContext.structNestingLevel;
-    }
-#line 6696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2226 "glslang.y"
+    { parseContext.nestedStructCheck((yyvsp[(1) - (3)].lex).loc); }
     break;
 
   case 347:
-#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 6702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 348:
-#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2226 "glslang.y"
     {
-        TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
-        (yyval.interm.type).init((yyvsp[-4].lex).loc);
+        TType* structure = new TType((yyvsp[(5) - (6)].interm.typeList), *(yyvsp[(2) - (6)].lex).string);
+        parseContext.structArrayCheck((yyvsp[(2) - (6)].lex).loc, *structure);
+        TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true);
+        if (! parseContext.symbolTable.insert(*userTypeDef))
+            parseContext.error((yyvsp[(2) - (6)].lex).loc, "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct");
+        (yyval.interm.type).init((yyvsp[(1) - (6)].lex).loc);
         (yyval.interm.type).basicType = EbtStruct;
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 6714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 348:
+/* Line 1792 of yacc.c  */
+#line 2237 "glslang.y"
+    { parseContext.nestedStructCheck((yyvsp[(1) - (2)].lex).loc); }
     break;
 
   case 349:
-#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2237 "glslang.y"
     {
-        (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
+        TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString(""));
+        (yyval.interm.type).init((yyvsp[(1) - (5)].lex).loc);
+        (yyval.interm.type).basicType = EbtStruct;
+        (yyval.interm.type).userDef = structure;
+        --parseContext.structNestingLevel;
     }
-#line 6722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 350:
-#line 2241 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2247 "glslang.y"
     {
-        (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
-        for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
-            for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) {
-                if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[0].interm.typeList))[i].type->getFieldName())
-                    parseContext.error((*(yyvsp[0].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[0].interm.typeList))[i].type->getFieldName().c_str());
-            }
-            (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
-        }
+        (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList);
     }
-#line 6737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 351:
-#line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2250 "glslang.y"
     {
-        if ((yyvsp[-2].interm.type).arraySizes) {
-            parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
-            parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
-            if (parseContext.profile == EEsProfile)
-                parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
-        }
-
-        (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
-
-        parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
-        parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
-
-        for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
-            parseContext.arrayDimCheck((yyvsp[-2].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes);
-            (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
+        (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList);
+        for (unsigned int i = 0; i < (yyvsp[(2) - (2)].interm.typeList)->size(); ++i) {
+            for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) {
+                if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName())
+                    parseContext.error((*(yyvsp[(2) - (2)].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName().c_str());
+            }
+            (yyval.interm.typeList)->push_back((*(yyvsp[(2) - (2)].interm.typeList))[i]);
         }
     }
-#line 6760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 352:
-#line 2272 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2263 "glslang.y"
     {
-        parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier);
-        if ((yyvsp[-2].interm.type).arraySizes) {
-            parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
-            parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+        if ((yyvsp[(1) - (3)].interm.type).arraySizes) {
+            parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+            parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
             if (parseContext.profile == EEsProfile)
-                parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes);
+                parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes);
         }
 
-        (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
+        (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList);
 
-        parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
-        parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
-        parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true);
-        parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
+        parseContext.voidErrorCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyvsp[(2) - (3)].interm.typeList))[0].type->getFieldName(), (yyvsp[(1) - (3)].interm.type).basicType);
+        parseContext.precisionQualifierCheck((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).basicType, (yyvsp[(1) - (3)].interm.type).qualifier);
 
         for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
-            parseContext.arrayDimCheck((yyvsp[-3].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes);
-            (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
+            parseContext.arrayDimCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(1) - (3)].interm.type).arraySizes);
+            (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(1) - (3)].interm.type));
         }
     }
-#line 6786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 353:
-#line 2296 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2281 "glslang.y"
     {
-        (yyval.interm.typeList) = new TTypeList;
-        (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
+        parseContext.globalQualifierFixCheck((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier);
+        if ((yyvsp[(2) - (4)].interm.type).arraySizes) {
+            parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
+            parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
+            if (parseContext.profile == EEsProfile)
+                parseContext.arraySizeRequiredCheck((yyvsp[(2) - (4)].interm.type).loc, *(yyvsp[(2) - (4)].interm.type).arraySizes);
+        }
+
+        (yyval.interm.typeList) = (yyvsp[(3) - (4)].interm.typeList);
+
+        parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers);
+        parseContext.voidErrorCheck((yyvsp[(2) - (4)].interm.type).loc, (*(yyvsp[(3) - (4)].interm.typeList))[0].type->getFieldName(), (yyvsp[(2) - (4)].interm.type).basicType);
+        parseContext.mergeQualifiers((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).qualifier, (yyvsp[(1) - (4)].interm.type).qualifier, true);
+        parseContext.precisionQualifierCheck((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).basicType, (yyvsp[(2) - (4)].interm.type).qualifier);
+
+        for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
+            parseContext.arrayDimCheck((yyvsp[(1) - (4)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(2) - (4)].interm.type).arraySizes);
+            (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(2) - (4)].interm.type));
+        }
     }
-#line 6795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 354:
-#line 2300 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2305 "glslang.y"
     {
-        (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
+        (yyval.interm.typeList) = new TTypeList;
+        (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine));
     }
-#line 6803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 355:
-#line 2306 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2309 "glslang.y"
     {
-        (yyval.interm.typeLine).type = new TType(EbtVoid);
-        (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
-        (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
+        (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine));
     }
-#line 6813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 356:
-#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2315 "glslang.y"
     {
-        parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0);
-
         (yyval.interm.typeLine).type = new TType(EbtVoid);
-        (yyval.interm.typeLine).loc = (yyvsp[-1].lex).loc;
-        (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
-        (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes);
+        (yyval.interm.typeLine).loc = (yyvsp[(1) - (1)].lex).loc;
+        (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (1)].lex).string);
     }
-#line 6826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 357:
-#line 2322 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2320 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        parseContext.arrayDimCheck((yyvsp[(1) - (2)].lex).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0);
+
+        (yyval.interm.typeLine).type = new TType(EbtVoid);
+        (yyval.interm.typeLine).loc = (yyvsp[(1) - (2)].lex).loc;
+        (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (2)].lex).string);
+        (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[(2) - (2)].interm).arraySizes);
     }
-#line 6834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 358:
-#line 2325 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2331 "glslang.y"
     {
-        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);
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
-#line 6845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 359:
-#line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2334 "glslang.y"
     {
         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);
+        parseContext.requireProfile((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, initFeature);
+        parseContext.profileRequires((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
+        (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
     }
-#line 6856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 360:
-#line 2340 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2340 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
+        const char* initFeature = "{ } style initializers";
+        parseContext.requireProfile((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, initFeature);
+        parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
+        (yyval.interm.intermTypedNode) = (yyvsp[(2) - (4)].interm.intermTypedNode);
     }
-#line 6864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 361:
-#line 2343 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2349 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[(1) - (1)].interm.intermTypedNode), (yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc());
     }
-#line 6872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 362:
-#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2352 "glslang.y"
+    {
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode));
+    }
     break;
 
   case 363:
-#line 2353 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2358 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 364:
-#line 2354 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2362 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 365:
-#line 2360 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2363 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 366:
-#line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2369 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 367:
-#line 2362 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2370 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 368:
-#line 2363 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2371 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 369:
-#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2372 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 370:
-#line 2365 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2373 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 371:
-#line 2366 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2374 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 372:
-#line 2370 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 6938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2375 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 373:
-#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.symbolTable.push();
-        ++parseContext.statementNestingLevel;
-    }
-#line 6947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2379 "glslang.y"
+    { (yyval.interm.intermNode) = 0; }
     break;
 
   case 374:
-#line 2375 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2380 "glslang.y"
+    {
+        parseContext.symbolTable.push();
+        ++parseContext.statementNestingLevel;
+    }
+    break;
+
+  case 375:
+/* Line 1792 of yacc.c  */
+#line 2384 "glslang.y"
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
     }
-#line 6956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 375:
-#line 2379 "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 6966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 376:
-#line 2387 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2388 "glslang.y"
+    {
+        if ((yyvsp[(3) - (5)].interm.intermNode) && (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate())
+            (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
+        (yyval.interm.intermNode) = (yyvsp[(3) - (5)].interm.intermNode);
+    }
     break;
 
   case 377:
-#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2396 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 378:
-#line 2392 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        ++parseContext.controlFlowNestingLevel;
-    }
-#line 6986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2397 "glslang.y"
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
   case 379:
-#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2401 "glslang.y"
     {
-        --parseContext.controlFlowNestingLevel;
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+        ++parseContext.controlFlowNestingLevel;
     }
-#line 6995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 380:
-#line 2399 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2404 "glslang.y"
+    {
+        --parseContext.controlFlowNestingLevel;
+        (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode);
+    }
+    break;
+
+  case 381:
+/* Line 1792 of yacc.c  */
+#line 2408 "glslang.y"
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 7005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 381:
-#line 2404 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 382:
+/* Line 1792 of yacc.c  */
+#line 2413 "glslang.y"
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+        (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode);
     }
-#line 7016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 382:
-#line 2413 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = 0;
-    }
-#line 7024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 383:
-#line 2416 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2422 "glslang.y"
     {
-        if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
-            (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
-        (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
+        (yyval.interm.intermNode) = 0;
     }
-#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 384:
-#line 2424 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2425 "glslang.y"
     {
-        (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 ||
-                                            (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
-            parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode));
-            (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
-        }
+        if ((yyvsp[(2) - (3)].interm.intermNode) && (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate())
+            (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
+        (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermNode);
     }
-#line 7047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 385:
-#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2433 "glslang.y"
     {
-        if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
-                                            (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
-            parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode));
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode));
+        if ((yyvsp[(1) - (1)].interm.intermNode) && (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
+                                            (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
+            parseContext.wrapupSwitchSubsequence(0, (yyvsp[(1) - (1)].interm.intermNode));
             (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
-        } else
-            (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
+        }
     }
-#line 7060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 386:
-#line 2443 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 7066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2441 "glslang.y"
+    {
+        if ((yyvsp[(2) - (2)].interm.intermNode) && (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
+                                            (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
+            parseContext.wrapupSwitchSubsequence((yyvsp[(1) - (2)].interm.intermNode) ? (yyvsp[(1) - (2)].interm.intermNode)->getAsAggregate() : 0, (yyvsp[(2) - (2)].interm.intermNode));
+            (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
+        } else
+            (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode));
+    }
     break;
 
   case 387:
-#line 2444 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 7072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2452 "glslang.y"
+    { (yyval.interm.intermNode) = 0; }
     break;
 
   case 388:
-#line 2448 "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 7081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2453 "glslang.y"
+    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); }
     break;
 
   case 389:
-#line 2455 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2457 "glslang.y"
     {
-        (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
-        (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
+        parseContext.boolCheck((yyvsp[(1) - (5)].lex).loc, (yyvsp[(3) - (5)].interm.intermTypedNode));
+        (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).loc);
     }
-#line 7090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 390:
-#line 2459 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2464 "glslang.y"
     {
-        (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
-        (yyval.interm.nodePair).node2 = 0;
+        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
+        (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode);
     }
-#line 7099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 391:
-#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2468 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
-        parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
+        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
+        (yyval.interm.nodePair).node2 = 0;
     }
-#line 7108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 392:
-#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2476 "glslang.y"
     {
-        parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
+        parseContext.boolCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), (yyvsp[(1) - (1)].interm.intermTypedNode));
+    }
+    break;
 
-        TType type((yyvsp[-3].interm.type));
-        TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
+  case 393:
+/* Line 1792 of yacc.c  */
+#line 2480 "glslang.y"
+    {
+        parseContext.boolCheck((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.type));
+
+        TType type((yyvsp[(1) - (4)].interm.type));
+        TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode));
         if (initNode)
             (yyval.interm.intermTypedNode) = initNode->getAsTyped();
         else
             (yyval.interm.intermTypedNode) = 0;
     }
-#line 7123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 393:
-#line 2484 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 394:
+/* Line 1792 of yacc.c  */
+#line 2493 "glslang.y"
     {
         // start new switch sequence on the switch stack
         ++parseContext.controlFlowNestingLevel;
@@ -7132,13 +7443,13 @@
         parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
         parseContext.symbolTable.push();
     }
-#line 7136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 394:
-#line 2492 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 395:
+/* Line 1792 of yacc.c  */
+#line 2501 "glslang.y"
     {
-        (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
+        (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[(1) - (8)].lex).loc, (yyvsp[(3) - (8)].interm.intermTypedNode), (yyvsp[(7) - (8)].interm.intermNode) ? (yyvsp[(7) - (8)].interm.intermNode)->getAsAggregate() : 0);
         delete parseContext.switchSequenceStack.back();
         parseContext.switchSequenceStack.pop_back();
         parseContext.switchLevel.pop_back();
@@ -7146,287 +7457,287 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 7150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 395:
-#line 2504 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = 0;
-    }
-#line 7158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 396:
-#line 2507 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2513 "glslang.y"
     {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+        (yyval.interm.intermNode) = 0;
     }
-#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 397:
-#line 2513 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2516 "glslang.y"
     {
-        (yyval.interm.intermNode) = 0;
-        if (parseContext.switchLevel.size() == 0)
-            parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", "");
-        else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel)
-            parseContext.error((yyvsp[-2].lex).loc, "cannot be nested inside control flow", "case", "");
-        else {
-            parseContext.constantValueCheck((yyvsp[-1].interm.intermTypedNode), "case");
-            parseContext.integerCheck((yyvsp[-1].interm.intermTypedNode), "case");
-            (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
-        }
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
-#line 7183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 398:
-#line 2525 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2522 "glslang.y"
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
-            parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", "");
+            parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot appear outside switch statement", "case", "");
         else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel)
-            parseContext.error((yyvsp[-1].lex).loc, "cannot be nested inside control flow", "default", "");
-        else
-            (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
+            parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot be nested inside control flow", "case", "");
+        else {
+            parseContext.constantValueCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case");
+            parseContext.integerCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case");
+            (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc);
+        }
     }
-#line 7197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 399:
-#line 2537 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2534 "glslang.y"
     {
-        if (! parseContext.limits.whileLoops)
-            parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
-        parseContext.symbolTable.push();
-        ++parseContext.loopNestingLevel;
-        ++parseContext.statementNestingLevel;
-        ++parseContext.controlFlowNestingLevel;
+        (yyval.interm.intermNode) = 0;
+        if (parseContext.switchLevel.size() == 0)
+            parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot appear outside switch statement", "default", "");
+        else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel)
+            parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot be nested inside control flow", "default", "");
+        else
+            (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[(1) - (2)].lex).loc);
     }
-#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 400:
-#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2546 "glslang.y"
+    {
+        if (! parseContext.limits.whileLoops)
+            parseContext.error((yyvsp[(1) - (2)].lex).loc, "while loops not available", "limitation", "");
+        parseContext.symbolTable.push();
+        ++parseContext.loopNestingLevel;
+        ++parseContext.statementNestingLevel;
+        ++parseContext.controlFlowNestingLevel;
+    }
+    break;
+
+  case 401:
+/* Line 1792 of yacc.c  */
+#line 2554 "glslang.y"
     {
         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);
+        (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(6) - (6)].interm.intermNode), (yyvsp[(4) - (6)].interm.intermTypedNode), 0, true, (yyvsp[(1) - (6)].lex).loc);
         --parseContext.loopNestingLevel;
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 7222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 401:
-#line 2552 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 402:
+/* Line 1792 of yacc.c  */
+#line 2561 "glslang.y"
     {
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 402:
-#line 2557 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 403:
+/* Line 1792 of yacc.c  */
+#line 2566 "glslang.y"
     {
         if (! parseContext.limits.whileLoops)
-            parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
+            parseContext.error((yyvsp[(1) - (8)].lex).loc, "do-while loops not available", "limitation", "");
 
-        parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode));
+        parseContext.boolCheck((yyvsp[(8) - (8)].lex).loc, (yyvsp[(6) - (8)].interm.intermTypedNode));
 
-        (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc);
+        (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(3) - (8)].interm.intermNode), (yyvsp[(6) - (8)].interm.intermTypedNode), 0, false, (yyvsp[(4) - (8)].lex).loc);
         --parseContext.loopNestingLevel;
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 7248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 403:
-#line 2568 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 404:
+/* Line 1792 of yacc.c  */
+#line 2577 "glslang.y"
     {
         parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 7259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 404:
-#line 2574 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 405:
+/* Line 1792 of yacc.c  */
+#line 2583 "glslang.y"
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
-        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
-        TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc);
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(4) - (7)].interm.intermNode), (yyvsp[(2) - (7)].lex).loc);
+        TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[(7) - (7)].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node2), true, (yyvsp[(1) - (7)].lex).loc);
         if (! parseContext.limits.nonInductiveForLoops)
-            parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop);
-        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc);
+            parseContext.inductiveLoopCheck((yyvsp[(1) - (7)].lex).loc, (yyvsp[(4) - (7)].interm.intermNode), forLoop);
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[(1) - (7)].lex).loc);
         (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         --parseContext.loopNestingLevel;
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 405:
-#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-#line 7284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 406:
-#line 2592 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2598 "glslang.y"
     {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
-#line 7292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 407:
-#line 2598 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2601 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
-#line 7300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 408:
-#line 2601 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2607 "glslang.y"
     {
-        (yyval.interm.intermTypedNode) = 0;
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
-#line 7308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 409:
-#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2610 "glslang.y"
     {
-        (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
-        (yyval.interm.nodePair).node2 = 0;
+        (yyval.interm.intermTypedNode) = 0;
     }
-#line 7317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 410:
-#line 2611 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2616 "glslang.y"
     {
-        (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
-        (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
+        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
+        (yyval.interm.nodePair).node2 = 0;
     }
-#line 7326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 411:
-#line 2618 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2620 "glslang.y"
     {
-        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);
+        (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
+        (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode);
     }
-#line 7336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 412:
-#line 2623 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2627 "glslang.y"
     {
-        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);
+        if (parseContext.loopNestingLevel <= 0)
+            parseContext.error((yyvsp[(1) - (2)].lex).loc, "continue statement only allowed in loops", "", "");
+        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[(1) - (2)].lex).loc);
     }
-#line 7346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 413:
-#line 2628 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2632 "glslang.y"
     {
-        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
-        if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
-            parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", "");
-        if (parseContext.inMain)
-            parseContext.postMainReturn = true;
+        if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
+            parseContext.error((yyvsp[(1) - (2)].lex).loc, "break statement only allowed in switch and loops", "", "");
+        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[(1) - (2)].lex).loc);
     }
-#line 7358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 414:
-#line 2635 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2637 "glslang.y"
     {
-        (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
+        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).loc);
+        if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
+            parseContext.error((yyvsp[(1) - (2)].lex).loc, "non-void function must return a value", "return", "");
+        if (parseContext.inMain)
+            parseContext.postMainReturn = true;
     }
-#line 7366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 415:
-#line 2638 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2644 "glslang.y"
     {
-        parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
-        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
+        (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[(1) - (3)].lex).loc, (yyvsp[(2) - (3)].interm.intermTypedNode));
     }
-#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 416:
-#line 2647 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2647 "glslang.y"
     {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-        parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
+        parseContext.requireStage((yyvsp[(1) - (2)].lex).loc, EShLangFragment, "discard");
+        (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).loc);
     }
-#line 7384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 417:
-#line 2651 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2656 "glslang.y"
     {
-        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
         parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
     }
-#line 7393 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 418:
-#line 2658 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2660 "glslang.y"
     {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode));
+        parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
     }
-#line 7401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 419:
-#line 2661 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2667 "glslang.y"
     {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
-#line 7409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 420:
-#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2670 "glslang.y"
     {
-        (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);
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
     }
-#line 7418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 421:
-#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 2676 "glslang.y"
+    {
+        (yyvsp[(1) - (1)].interm).function = parseContext.handleFunctionDeclarator((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function, false /* not prototype */);
+        (yyvsp[(1) - (1)].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function);
+    }
+    break;
+
+  case 422:
+/* Line 1792 of yacc.c  */
+#line 2680 "glslang.y"
     {
         //   May be best done as post process phase on intermediate code
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
-            parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str());
+            parseContext.error((yyvsp[(1) - (3)].interm).loc, "function does not return a value:", "", (yyvsp[(1) - (3)].interm).function->getName().c_str());
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
-        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermNode));
-        parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[-2].interm).function->getType(), (yyvsp[-2].interm).loc);
-        (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[-2].interm).function->getMangledName().c_str());
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermNode));
+        parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[(1) - (3)].interm).function->getType(), (yyvsp[(1) - (3)].interm).loc);
+        (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[(1) - (3)].interm).function->getMangledName().c_str());
 
         // store the pragma information for debug and optimize and other vendor specific
         // information. This information can be queried from the parse tree
@@ -7434,11 +7745,11 @@
         (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
         (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
     }
-#line 7438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
 
-#line 7442 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+/* Line 1792 of yacc.c  */
+#line 7753 "glslang_tab.cpp"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -7460,7 +7771,7 @@
 
   *++yyvsp = yyval;
 
-  /* Now 'shift' the result of the reduction.  Determine what state
+  /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
 
@@ -7475,9 +7786,9 @@
   goto yynewstate;
 
 
-/*--------------------------------------.
-| yyerrlab -- here on detecting error.  |
-`--------------------------------------*/
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
      user semantic actions for why this is necessary.  */
@@ -7528,20 +7839,20 @@
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-         error, discard it.  */
+	 error, discard it.  */
 
       if (yychar <= YYEOF)
-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
+	{
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+	}
       else
-        {
-          yydestruct ("Error: discarding",
-                      yytoken, &yylval, pParseContext);
-          yychar = YYEMPTY;
-        }
+	{
+	  yydestruct ("Error: discarding",
+		      yytoken, &yylval, pParseContext);
+	  yychar = YYEMPTY;
+	}
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -7560,7 +7871,7 @@
   if (/*CONSTCOND*/ 0)
      goto yyerrorlab;
 
-  /* Do not reclaim the symbols of the rule whose action triggered
+  /* Do not reclaim the symbols of the rule which action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -7573,29 +7884,29 @@
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 
   for (;;)
     {
       yyn = yypact[yystate];
       if (!yypact_value_is_default (yyn))
-        {
-          yyn += YYTERROR;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-            {
-              yyn = yytable[yyn];
-              if (0 < yyn)
-                break;
-            }
-        }
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-        YYABORT;
+	YYABORT;
 
 
       yydestruct ("Error: popping",
-                  yystos[yystate], yyvsp, pParseContext);
+		  yystos[yystate], yyvsp, pParseContext);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -7646,14 +7957,14 @@
       yydestruct ("Cleanup: discarding lookahead",
                   yytoken, &yylval, pParseContext);
     }
-  /* Do not reclaim the symbols of the rule whose action triggered
+  /* Do not reclaim the symbols of the rule which action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp, pParseContext);
+		  yystos[*yyssp], yyvsp, pParseContext);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -7664,7 +7975,11 @@
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
 #endif
-  return yyresult;
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
-#line 2688 "MachineIndependent/glslang.y" /* yacc.c:1906  */
+
+
+/* Line 2055 of yacc.c  */
+#line 2697 "glslang.y"
 
diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h
index e7d8fae..3c0dc7b 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 2.7.  */
 
 /* Bison interface for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
+   
+      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,13 +26,13 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
-/* Debug traces.  */
+#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+/* Enabling traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 1
 #endif
@@ -40,287 +40,289 @@
 extern int yydebug;
 #endif
 
-/* Token type.  */
+/* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-  enum yytokentype
-  {
-    ATTRIBUTE = 258,
-    VARYING = 259,
-    CONST = 260,
-    BOOL = 261,
-    FLOAT = 262,
-    DOUBLE = 263,
-    INT = 264,
-    UINT = 265,
-    INT64_T = 266,
-    UINT64_T = 267,
-    BREAK = 268,
-    CONTINUE = 269,
-    DO = 270,
-    ELSE = 271,
-    FOR = 272,
-    IF = 273,
-    DISCARD = 274,
-    RETURN = 275,
-    SWITCH = 276,
-    CASE = 277,
-    DEFAULT = 278,
-    SUBROUTINE = 279,
-    BVEC2 = 280,
-    BVEC3 = 281,
-    BVEC4 = 282,
-    IVEC2 = 283,
-    IVEC3 = 284,
-    IVEC4 = 285,
-    I64VEC2 = 286,
-    I64VEC3 = 287,
-    I64VEC4 = 288,
-    UVEC2 = 289,
-    UVEC3 = 290,
-    UVEC4 = 291,
-    U64VEC2 = 292,
-    U64VEC3 = 293,
-    U64VEC4 = 294,
-    VEC2 = 295,
-    VEC3 = 296,
-    VEC4 = 297,
-    MAT2 = 298,
-    MAT3 = 299,
-    MAT4 = 300,
-    CENTROID = 301,
-    IN = 302,
-    OUT = 303,
-    INOUT = 304,
-    UNIFORM = 305,
-    PATCH = 306,
-    SAMPLE = 307,
-    BUFFER = 308,
-    SHARED = 309,
-    COHERENT = 310,
-    VOLATILE = 311,
-    RESTRICT = 312,
-    READONLY = 313,
-    WRITEONLY = 314,
-    DVEC2 = 315,
-    DVEC3 = 316,
-    DVEC4 = 317,
-    DMAT2 = 318,
-    DMAT3 = 319,
-    DMAT4 = 320,
-    NOPERSPECTIVE = 321,
-    FLAT = 322,
-    SMOOTH = 323,
-    LAYOUT = 324,
-    MAT2X2 = 325,
-    MAT2X3 = 326,
-    MAT2X4 = 327,
-    MAT3X2 = 328,
-    MAT3X3 = 329,
-    MAT3X4 = 330,
-    MAT4X2 = 331,
-    MAT4X3 = 332,
-    MAT4X4 = 333,
-    DMAT2X2 = 334,
-    DMAT2X3 = 335,
-    DMAT2X4 = 336,
-    DMAT3X2 = 337,
-    DMAT3X3 = 338,
-    DMAT3X4 = 339,
-    DMAT4X2 = 340,
-    DMAT4X3 = 341,
-    DMAT4X4 = 342,
-    ATOMIC_UINT = 343,
-    SAMPLER1D = 344,
-    SAMPLER2D = 345,
-    SAMPLER3D = 346,
-    SAMPLERCUBE = 347,
-    SAMPLER1DSHADOW = 348,
-    SAMPLER2DSHADOW = 349,
-    SAMPLERCUBESHADOW = 350,
-    SAMPLER1DARRAY = 351,
-    SAMPLER2DARRAY = 352,
-    SAMPLER1DARRAYSHADOW = 353,
-    SAMPLER2DARRAYSHADOW = 354,
-    ISAMPLER1D = 355,
-    ISAMPLER2D = 356,
-    ISAMPLER3D = 357,
-    ISAMPLERCUBE = 358,
-    ISAMPLER1DARRAY = 359,
-    ISAMPLER2DARRAY = 360,
-    USAMPLER1D = 361,
-    USAMPLER2D = 362,
-    USAMPLER3D = 363,
-    USAMPLERCUBE = 364,
-    USAMPLER1DARRAY = 365,
-    USAMPLER2DARRAY = 366,
-    SAMPLER2DRECT = 367,
-    SAMPLER2DRECTSHADOW = 368,
-    ISAMPLER2DRECT = 369,
-    USAMPLER2DRECT = 370,
-    SAMPLERBUFFER = 371,
-    ISAMPLERBUFFER = 372,
-    USAMPLERBUFFER = 373,
-    SAMPLERCUBEARRAY = 374,
-    SAMPLERCUBEARRAYSHADOW = 375,
-    ISAMPLERCUBEARRAY = 376,
-    USAMPLERCUBEARRAY = 377,
-    SAMPLER2DMS = 378,
-    ISAMPLER2DMS = 379,
-    USAMPLER2DMS = 380,
-    SAMPLER2DMSARRAY = 381,
-    ISAMPLER2DMSARRAY = 382,
-    USAMPLER2DMSARRAY = 383,
-    SAMPLEREXTERNALOES = 384,
-    SAMPLER = 385,
-    SAMPLERSHADOW = 386,
-    TEXTURE1D = 387,
-    TEXTURE2D = 388,
-    TEXTURE3D = 389,
-    TEXTURECUBE = 390,
-    TEXTURE1DARRAY = 391,
-    TEXTURE2DARRAY = 392,
-    ITEXTURE1D = 393,
-    ITEXTURE2D = 394,
-    ITEXTURE3D = 395,
-    ITEXTURECUBE = 396,
-    ITEXTURE1DARRAY = 397,
-    ITEXTURE2DARRAY = 398,
-    UTEXTURE1D = 399,
-    UTEXTURE2D = 400,
-    UTEXTURE3D = 401,
-    UTEXTURECUBE = 402,
-    UTEXTURE1DARRAY = 403,
-    UTEXTURE2DARRAY = 404,
-    TEXTURE2DRECT = 405,
-    ITEXTURE2DRECT = 406,
-    UTEXTURE2DRECT = 407,
-    TEXTUREBUFFER = 408,
-    ITEXTUREBUFFER = 409,
-    UTEXTUREBUFFER = 410,
-    TEXTURECUBEARRAY = 411,
-    ITEXTURECUBEARRAY = 412,
-    UTEXTURECUBEARRAY = 413,
-    TEXTURE2DMS = 414,
-    ITEXTURE2DMS = 415,
-    UTEXTURE2DMS = 416,
-    TEXTURE2DMSARRAY = 417,
-    ITEXTURE2DMSARRAY = 418,
-    UTEXTURE2DMSARRAY = 419,
-    SUBPASSINPUT = 420,
-    SUBPASSINPUTMS = 421,
-    ISUBPASSINPUT = 422,
-    ISUBPASSINPUTMS = 423,
-    USUBPASSINPUT = 424,
-    USUBPASSINPUTMS = 425,
-    IMAGE1D = 426,
-    IIMAGE1D = 427,
-    UIMAGE1D = 428,
-    IMAGE2D = 429,
-    IIMAGE2D = 430,
-    UIMAGE2D = 431,
-    IMAGE3D = 432,
-    IIMAGE3D = 433,
-    UIMAGE3D = 434,
-    IMAGE2DRECT = 435,
-    IIMAGE2DRECT = 436,
-    UIMAGE2DRECT = 437,
-    IMAGECUBE = 438,
-    IIMAGECUBE = 439,
-    UIMAGECUBE = 440,
-    IMAGEBUFFER = 441,
-    IIMAGEBUFFER = 442,
-    UIMAGEBUFFER = 443,
-    IMAGE1DARRAY = 444,
-    IIMAGE1DARRAY = 445,
-    UIMAGE1DARRAY = 446,
-    IMAGE2DARRAY = 447,
-    IIMAGE2DARRAY = 448,
-    UIMAGE2DARRAY = 449,
-    IMAGECUBEARRAY = 450,
-    IIMAGECUBEARRAY = 451,
-    UIMAGECUBEARRAY = 452,
-    IMAGE2DMS = 453,
-    IIMAGE2DMS = 454,
-    UIMAGE2DMS = 455,
-    IMAGE2DMSARRAY = 456,
-    IIMAGE2DMSARRAY = 457,
-    UIMAGE2DMSARRAY = 458,
-    STRUCT = 459,
-    VOID = 460,
-    WHILE = 461,
-    IDENTIFIER = 462,
-    TYPE_NAME = 463,
-    FLOATCONSTANT = 464,
-    DOUBLECONSTANT = 465,
-    INTCONSTANT = 466,
-    UINTCONSTANT = 467,
-    INT64CONSTANT = 468,
-    UINT64CONSTANT = 469,
-    BOOLCONSTANT = 470,
-    LEFT_OP = 471,
-    RIGHT_OP = 472,
-    INC_OP = 473,
-    DEC_OP = 474,
-    LE_OP = 475,
-    GE_OP = 476,
-    EQ_OP = 477,
-    NE_OP = 478,
-    AND_OP = 479,
-    OR_OP = 480,
-    XOR_OP = 481,
-    MUL_ASSIGN = 482,
-    DIV_ASSIGN = 483,
-    ADD_ASSIGN = 484,
-    MOD_ASSIGN = 485,
-    LEFT_ASSIGN = 486,
-    RIGHT_ASSIGN = 487,
-    AND_ASSIGN = 488,
-    XOR_ASSIGN = 489,
-    OR_ASSIGN = 490,
-    SUB_ASSIGN = 491,
-    LEFT_PAREN = 492,
-    RIGHT_PAREN = 493,
-    LEFT_BRACKET = 494,
-    RIGHT_BRACKET = 495,
-    LEFT_BRACE = 496,
-    RIGHT_BRACE = 497,
-    DOT = 498,
-    COMMA = 499,
-    COLON = 500,
-    EQUAL = 501,
-    SEMICOLON = 502,
-    BANG = 503,
-    DASH = 504,
-    TILDE = 505,
-    PLUS = 506,
-    STAR = 507,
-    SLASH = 508,
-    PERCENT = 509,
-    LEFT_ANGLE = 510,
-    RIGHT_ANGLE = 511,
-    VERTICAL_BAR = 512,
-    CARET = 513,
-    AMPERSAND = 514,
-    QUESTION = 515,
-    INVARIANT = 516,
-    PRECISE = 517,
-    HIGH_PRECISION = 518,
-    MEDIUM_PRECISION = 519,
-    LOW_PRECISION = 520,
-    PRECISION = 521,
-    PACKED = 522,
-    RESOURCE = 523,
-    SUPERP = 524
-  };
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     ATTRIBUTE = 258,
+     VARYING = 259,
+     CONST = 260,
+     BOOL = 261,
+     FLOAT = 262,
+     DOUBLE = 263,
+     INT = 264,
+     UINT = 265,
+     INT64_T = 266,
+     UINT64_T = 267,
+     BREAK = 268,
+     CONTINUE = 269,
+     DO = 270,
+     ELSE = 271,
+     FOR = 272,
+     IF = 273,
+     DISCARD = 274,
+     RETURN = 275,
+     SWITCH = 276,
+     CASE = 277,
+     DEFAULT = 278,
+     SUBROUTINE = 279,
+     BVEC2 = 280,
+     BVEC3 = 281,
+     BVEC4 = 282,
+     IVEC2 = 283,
+     IVEC3 = 284,
+     IVEC4 = 285,
+     I64VEC2 = 286,
+     I64VEC3 = 287,
+     I64VEC4 = 288,
+     UVEC2 = 289,
+     UVEC3 = 290,
+     UVEC4 = 291,
+     U64VEC2 = 292,
+     U64VEC3 = 293,
+     U64VEC4 = 294,
+     VEC2 = 295,
+     VEC3 = 296,
+     VEC4 = 297,
+     MAT2 = 298,
+     MAT3 = 299,
+     MAT4 = 300,
+     CENTROID = 301,
+     IN = 302,
+     OUT = 303,
+     INOUT = 304,
+     UNIFORM = 305,
+     PATCH = 306,
+     SAMPLE = 307,
+     BUFFER = 308,
+     SHARED = 309,
+     COHERENT = 310,
+     VOLATILE = 311,
+     RESTRICT = 312,
+     READONLY = 313,
+     WRITEONLY = 314,
+     DVEC2 = 315,
+     DVEC3 = 316,
+     DVEC4 = 317,
+     DMAT2 = 318,
+     DMAT3 = 319,
+     DMAT4 = 320,
+     NOPERSPECTIVE = 321,
+     FLAT = 322,
+     SMOOTH = 323,
+     LAYOUT = 324,
+     __EXPLICITINTERPAMD = 325,
+     MAT2X2 = 326,
+     MAT2X3 = 327,
+     MAT2X4 = 328,
+     MAT3X2 = 329,
+     MAT3X3 = 330,
+     MAT3X4 = 331,
+     MAT4X2 = 332,
+     MAT4X3 = 333,
+     MAT4X4 = 334,
+     DMAT2X2 = 335,
+     DMAT2X3 = 336,
+     DMAT2X4 = 337,
+     DMAT3X2 = 338,
+     DMAT3X3 = 339,
+     DMAT3X4 = 340,
+     DMAT4X2 = 341,
+     DMAT4X3 = 342,
+     DMAT4X4 = 343,
+     ATOMIC_UINT = 344,
+     SAMPLER1D = 345,
+     SAMPLER2D = 346,
+     SAMPLER3D = 347,
+     SAMPLERCUBE = 348,
+     SAMPLER1DSHADOW = 349,
+     SAMPLER2DSHADOW = 350,
+     SAMPLERCUBESHADOW = 351,
+     SAMPLER1DARRAY = 352,
+     SAMPLER2DARRAY = 353,
+     SAMPLER1DARRAYSHADOW = 354,
+     SAMPLER2DARRAYSHADOW = 355,
+     ISAMPLER1D = 356,
+     ISAMPLER2D = 357,
+     ISAMPLER3D = 358,
+     ISAMPLERCUBE = 359,
+     ISAMPLER1DARRAY = 360,
+     ISAMPLER2DARRAY = 361,
+     USAMPLER1D = 362,
+     USAMPLER2D = 363,
+     USAMPLER3D = 364,
+     USAMPLERCUBE = 365,
+     USAMPLER1DARRAY = 366,
+     USAMPLER2DARRAY = 367,
+     SAMPLER2DRECT = 368,
+     SAMPLER2DRECTSHADOW = 369,
+     ISAMPLER2DRECT = 370,
+     USAMPLER2DRECT = 371,
+     SAMPLERBUFFER = 372,
+     ISAMPLERBUFFER = 373,
+     USAMPLERBUFFER = 374,
+     SAMPLERCUBEARRAY = 375,
+     SAMPLERCUBEARRAYSHADOW = 376,
+     ISAMPLERCUBEARRAY = 377,
+     USAMPLERCUBEARRAY = 378,
+     SAMPLER2DMS = 379,
+     ISAMPLER2DMS = 380,
+     USAMPLER2DMS = 381,
+     SAMPLER2DMSARRAY = 382,
+     ISAMPLER2DMSARRAY = 383,
+     USAMPLER2DMSARRAY = 384,
+     SAMPLEREXTERNALOES = 385,
+     SAMPLER = 386,
+     SAMPLERSHADOW = 387,
+     TEXTURE1D = 388,
+     TEXTURE2D = 389,
+     TEXTURE3D = 390,
+     TEXTURECUBE = 391,
+     TEXTURE1DARRAY = 392,
+     TEXTURE2DARRAY = 393,
+     ITEXTURE1D = 394,
+     ITEXTURE2D = 395,
+     ITEXTURE3D = 396,
+     ITEXTURECUBE = 397,
+     ITEXTURE1DARRAY = 398,
+     ITEXTURE2DARRAY = 399,
+     UTEXTURE1D = 400,
+     UTEXTURE2D = 401,
+     UTEXTURE3D = 402,
+     UTEXTURECUBE = 403,
+     UTEXTURE1DARRAY = 404,
+     UTEXTURE2DARRAY = 405,
+     TEXTURE2DRECT = 406,
+     ITEXTURE2DRECT = 407,
+     UTEXTURE2DRECT = 408,
+     TEXTUREBUFFER = 409,
+     ITEXTUREBUFFER = 410,
+     UTEXTUREBUFFER = 411,
+     TEXTURECUBEARRAY = 412,
+     ITEXTURECUBEARRAY = 413,
+     UTEXTURECUBEARRAY = 414,
+     TEXTURE2DMS = 415,
+     ITEXTURE2DMS = 416,
+     UTEXTURE2DMS = 417,
+     TEXTURE2DMSARRAY = 418,
+     ITEXTURE2DMSARRAY = 419,
+     UTEXTURE2DMSARRAY = 420,
+     SUBPASSINPUT = 421,
+     SUBPASSINPUTMS = 422,
+     ISUBPASSINPUT = 423,
+     ISUBPASSINPUTMS = 424,
+     USUBPASSINPUT = 425,
+     USUBPASSINPUTMS = 426,
+     IMAGE1D = 427,
+     IIMAGE1D = 428,
+     UIMAGE1D = 429,
+     IMAGE2D = 430,
+     IIMAGE2D = 431,
+     UIMAGE2D = 432,
+     IMAGE3D = 433,
+     IIMAGE3D = 434,
+     UIMAGE3D = 435,
+     IMAGE2DRECT = 436,
+     IIMAGE2DRECT = 437,
+     UIMAGE2DRECT = 438,
+     IMAGECUBE = 439,
+     IIMAGECUBE = 440,
+     UIMAGECUBE = 441,
+     IMAGEBUFFER = 442,
+     IIMAGEBUFFER = 443,
+     UIMAGEBUFFER = 444,
+     IMAGE1DARRAY = 445,
+     IIMAGE1DARRAY = 446,
+     UIMAGE1DARRAY = 447,
+     IMAGE2DARRAY = 448,
+     IIMAGE2DARRAY = 449,
+     UIMAGE2DARRAY = 450,
+     IMAGECUBEARRAY = 451,
+     IIMAGECUBEARRAY = 452,
+     UIMAGECUBEARRAY = 453,
+     IMAGE2DMS = 454,
+     IIMAGE2DMS = 455,
+     UIMAGE2DMS = 456,
+     IMAGE2DMSARRAY = 457,
+     IIMAGE2DMSARRAY = 458,
+     UIMAGE2DMSARRAY = 459,
+     STRUCT = 460,
+     VOID = 461,
+     WHILE = 462,
+     IDENTIFIER = 463,
+     TYPE_NAME = 464,
+     FLOATCONSTANT = 465,
+     DOUBLECONSTANT = 466,
+     INTCONSTANT = 467,
+     UINTCONSTANT = 468,
+     INT64CONSTANT = 469,
+     UINT64CONSTANT = 470,
+     BOOLCONSTANT = 471,
+     LEFT_OP = 472,
+     RIGHT_OP = 473,
+     INC_OP = 474,
+     DEC_OP = 475,
+     LE_OP = 476,
+     GE_OP = 477,
+     EQ_OP = 478,
+     NE_OP = 479,
+     AND_OP = 480,
+     OR_OP = 481,
+     XOR_OP = 482,
+     MUL_ASSIGN = 483,
+     DIV_ASSIGN = 484,
+     ADD_ASSIGN = 485,
+     MOD_ASSIGN = 486,
+     LEFT_ASSIGN = 487,
+     RIGHT_ASSIGN = 488,
+     AND_ASSIGN = 489,
+     XOR_ASSIGN = 490,
+     OR_ASSIGN = 491,
+     SUB_ASSIGN = 492,
+     LEFT_PAREN = 493,
+     RIGHT_PAREN = 494,
+     LEFT_BRACKET = 495,
+     RIGHT_BRACKET = 496,
+     LEFT_BRACE = 497,
+     RIGHT_BRACE = 498,
+     DOT = 499,
+     COMMA = 500,
+     COLON = 501,
+     EQUAL = 502,
+     SEMICOLON = 503,
+     BANG = 504,
+     DASH = 505,
+     TILDE = 506,
+     PLUS = 507,
+     STAR = 508,
+     SLASH = 509,
+     PERCENT = 510,
+     LEFT_ANGLE = 511,
+     RIGHT_ANGLE = 512,
+     VERTICAL_BAR = 513,
+     CARET = 514,
+     AMPERSAND = 515,
+     QUESTION = 516,
+     INVARIANT = 517,
+     PRECISE = 518,
+     HIGH_PRECISION = 519,
+     MEDIUM_PRECISION = 520,
+     LOW_PRECISION = 521,
+     PRECISION = 522,
+     PACKED = 523,
+     RESOURCE = 524,
+     SUPERP = 525
+   };
 #endif
 
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 
-union YYSTYPE
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
 {
-#line 66 "MachineIndependent/glslang.y" /* yacc.c:1909  */
+/* Line 2058 of yacc.c  */
+#line 66 "glslang.y"
 
     struct {
         glslang::TSourceLoc loc;
@@ -354,16 +356,28 @@
         };
     } interm;
 
-#line 358 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
-};
 
-typedef union YYSTYPE YYSTYPE;
+/* Line 2058 of yacc.c  */
+#line 362 "glslang_tab.cpp.h"
+} YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
 int yyparse (glslang::TParseContext* pParseContext);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
-#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED  */
+#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED  */
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index 03519bc..893f42b 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -355,6 +355,7 @@
 
     case EOpBallot:                 out.debug << "ballot";                break;
     case EOpReadFirstInvocation:    out.debug << "readFirstInvocation";   break;
+
     case EOpAnyInvocation:          out.debug << "anyInvocation";         break;
     case EOpAllInvocations:         out.debug << "allInvocations";        break;
     case EOpAllInvocationsEqual:    out.debug << "allInvocationsEqual";   break;
@@ -365,6 +366,19 @@
     case EOpRcp:                    out.debug << "rcp";                   break;
     case EOpSaturate:               out.debug << "saturate";              break;
 
+#ifdef AMD_EXTENSIONS
+    case EOpMinInvocations:             out.debug << "minInvocations";              break;
+    case EOpMaxInvocations:             out.debug << "maxInvocations";              break;
+    case EOpAddInvocations:             out.debug << "addInvocations";              break;
+    case EOpMinInvocationsNonUniform:   out.debug << "minInvocationsNonUniform";    break;
+    case EOpMaxInvocationsNonUniform:   out.debug << "maxInvocationsNonUniform";    break;
+    case EOpAddInvocationsNonUniform:   out.debug << "addInvocationsNonUniform";    break;
+    case EOpMbcnt:                      out.debug << "mbcnt";                       break;
+
+    case EOpCubeFaceIndex:          out.debug << "cubeFaceIndex";         break;
+    case EOpCubeFaceCoord:          out.debug << "cubeFaceCoord";         break;
+#endif
+
     default: out.debug.message(EPrefixError, "Bad unary op");
     }
 
@@ -482,6 +496,18 @@
 
     case EOpReadInvocation:             out.debug << "readInvocation";        break;
 
+#ifdef AMD_EXTENSIONS
+    case EOpSwizzleInvocations:         out.debug << "swizzleInvocations";       break;
+    case EOpSwizzleInvocationsMasked:   out.debug << "swizzleInvocationsMasked"; break;
+    case EOpWriteInvocation:            out.debug << "writeInvocation";          break;
+
+    case EOpMin3:                       out.debug << "min3";                  break;
+    case EOpMax3:                       out.debug << "max3";                  break;
+    case EOpMid3:                       out.debug << "mid3";                  break;
+
+    case EOpTime:                       out.debug << "time";                  break;
+#endif
+
     case EOpAtomicAdd:                  out.debug << "AtomicAdd";             break;
     case EOpAtomicMin:                  out.debug << "AtomicMin";             break;
     case EOpAtomicMax:                  out.debug << "AtomicMax";             break;
@@ -539,6 +565,9 @@
 
     case EOpInterpolateAtSample:   out.debug << "interpolateAtSample";    break;
     case EOpInterpolateAtOffset:   out.debug << "interpolateAtOffset";    break;
+#ifdef AMD_EXTENSIONS
+    case EOpInterpolateAtVertex:   out.debug << "interpolateAtVertex";    break;
+#endif
 
     case EOpSinCos:                     out.debug << "sincos";                break;
     case EOpGenMul:                     out.debug << "mul";                   break;