Merge pull request #1557 from nicebyte/spec-const-decorations

Add names for composite spec constants in SPIR-V
diff --git a/BUILD.gn b/BUILD.gn
index a84dbe2..5d5b150 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -58,7 +58,6 @@
     "SPIRV/SpvBuilder.cpp",
     "SPIRV/SpvBuilder.h",
     "SPIRV/SpvPostProcess.cpp",
-    "SPIRV/SpvPostProcess.h",
     "SPIRV/bitutils.h",
     "SPIRV/disassemble.cpp",
     "SPIRV/disassemble.h",
diff --git a/SPIRV/GLSL.ext.NV.h b/SPIRV/GLSL.ext.NV.h
index 6abc469..102d645 100644
--- a/SPIRV/GLSL.ext.NV.h
+++ b/SPIRV/GLSL.ext.NV.h
@@ -66,8 +66,8 @@
 //SPV_NV_mesh_shader
 const char* const E_SPV_NV_mesh_shader = "SPV_NV_mesh_shader";
 
-//SPV_NVX_raytracing
-const char* const E_SPV_NVX_raytracing = "SPV_NVX_raytracing";
+//SPV_NV_raytracing
+const char* const E_SPV_NV_ray_tracing = "SPV_NV_ray_tracing";
 
 //SPV_NV_shading_rate
 const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate";
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 61e520f..632a217 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -276,12 +276,12 @@
     case EShLangFragment:         return spv::ExecutionModelFragment;
     case EShLangCompute:          return spv::ExecutionModelGLCompute;
 #ifdef NV_EXTENSIONS
-    case EShLangRayGenNV:         return spv::ExecutionModelRayGenerationNVX;
-    case EShLangIntersectNV:      return spv::ExecutionModelIntersectionNVX;
-    case EShLangAnyHitNV:         return spv::ExecutionModelAnyHitNVX;
-    case EShLangClosestHitNV:     return spv::ExecutionModelClosestHitNVX;
-    case EShLangMissNV:           return spv::ExecutionModelMissNVX;
-    case EShLangCallableNV:       return spv::ExecutionModelCallableNVX;
+    case EShLangRayGenNV:         return spv::ExecutionModelRayGenerationNV;
+    case EShLangIntersectNV:      return spv::ExecutionModelIntersectionNV;
+    case EShLangAnyHitNV:         return spv::ExecutionModelAnyHitNV;
+    case EShLangClosestHitNV:     return spv::ExecutionModelClosestHitNV;
+    case EShLangMissNV:           return spv::ExecutionModelMissNV;
+    case EShLangCallableNV:       return spv::ExecutionModelCallableNV;
     case EShLangTaskNV:           return spv::ExecutionModelTaskNV;
     case EShLangMeshNV:           return spv::ExecutionModelMeshNV;
 #endif
@@ -338,6 +338,8 @@
         case glslang::EvqPayloadNV:    return spv::DecorationBlock;
         case glslang::EvqPayloadInNV:  return spv::DecorationBlock;
         case glslang::EvqHitAttrNV:    return spv::DecorationBlock;
+        case glslang::EvqCallableDataNV:   return spv::DecorationBlock;
+        case glslang::EvqCallableDataInNV: return spv::DecorationBlock;
 #endif
         default:
             assert(0);
@@ -411,6 +413,8 @@
             case glslang::EvqPayloadNV:
             case glslang::EvqPayloadInNV:
             case glslang::EvqHitAttrNV:
+            case glslang::EvqCallableDataNV:
+            case glslang::EvqCallableDataInNV:
                 return spv::DecorationMax;
 #endif
             default:
@@ -875,31 +879,33 @@
 
     // raytracing
     case glslang::EbvLaunchIdNV:
-        return spv::BuiltInLaunchIdNVX;
+        return spv::BuiltInLaunchIdNV;
     case glslang::EbvLaunchSizeNV:
-        return spv::BuiltInLaunchSizeNVX;
+        return spv::BuiltInLaunchSizeNV;
     case glslang::EbvWorldRayOriginNV:
-        return spv::BuiltInWorldRayOriginNVX;
+        return spv::BuiltInWorldRayOriginNV;
     case glslang::EbvWorldRayDirectionNV:
-        return spv::BuiltInWorldRayDirectionNVX;
+        return spv::BuiltInWorldRayDirectionNV;
     case glslang::EbvObjectRayOriginNV:
-        return spv::BuiltInObjectRayOriginNVX;
+        return spv::BuiltInObjectRayOriginNV;
     case glslang::EbvObjectRayDirectionNV:
-        return spv::BuiltInObjectRayDirectionNVX;
+        return spv::BuiltInObjectRayDirectionNV;
     case glslang::EbvRayTminNV:
-        return spv::BuiltInRayTminNVX;
+        return spv::BuiltInRayTminNV;
     case glslang::EbvRayTmaxNV:
-        return spv::BuiltInRayTmaxNVX;
+        return spv::BuiltInRayTmaxNV;
     case glslang::EbvInstanceCustomIndexNV:
-        return spv::BuiltInInstanceCustomIndexNVX;
+        return spv::BuiltInInstanceCustomIndexNV;
     case glslang::EbvHitTNV:
-        return spv::BuiltInHitTNVX;
+        return spv::BuiltInHitTNV;
     case glslang::EbvHitKindNV:
-        return spv::BuiltInHitKindNVX;
+        return spv::BuiltInHitKindNV;
     case glslang::EbvObjectToWorldNV:
-        return spv::BuiltInObjectToWorldNVX;
+        return spv::BuiltInObjectToWorldNV;
     case glslang::EbvWorldToObjectNV:
-        return spv::BuiltInWorldToObjectNVX;
+        return spv::BuiltInWorldToObjectNV;
+    case glslang::EbvIncomingRayFlagsNV:
+        return spv::BuiltInIncomingRayFlagsNV;
     case glslang::EbvBaryCoordNV:
         builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric);
         builder.addCapability(spv::CapabilityFragmentBarycentricNV);
@@ -1082,7 +1088,7 @@
             return spv::StorageClassPushConstant;
 #ifdef NV_EXTENSIONS
         if (type.getQualifier().layoutShaderRecordNV)
-            return spv::StorageClassShaderRecordBufferNVX;
+            return spv::StorageClassShaderRecordBufferNV;
 #endif
         if (type.getBasicType() == glslang::EbtBlock)
             return spv::StorageClassUniform;
@@ -1095,9 +1101,11 @@
     case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
     case glslang::EvqTemporary:     return spv::StorageClassFunction;
 #ifdef NV_EXTENSIONS
-    case glslang::EvqPayloadNV:     return spv::StorageClassRayPayloadNVX;
-    case glslang::EvqPayloadInNV:   return spv::StorageClassIncomingRayPayloadNVX;
-    case glslang::EvqHitAttrNV:     return spv::StorageClassHitAttributeNVX;
+    case glslang::EvqPayloadNV:        return spv::StorageClassRayPayloadNV;
+    case glslang::EvqPayloadInNV:      return spv::StorageClassIncomingRayPayloadNV;
+    case glslang::EvqHitAttrNV:        return spv::StorageClassHitAttributeNV;
+    case glslang::EvqCallableDataNV:   return spv::StorageClassCallableDataNV;
+    case glslang::EvqCallableDataInNV: return spv::StorageClassIncomingCallableDataNV;
 #endif
     default:
         assert(0);
@@ -1430,8 +1438,8 @@
     case EShLangClosestHitNV:
     case EShLangMissNV:
     case EShLangCallableNV:
-        builder.addCapability(spv::CapabilityRaytracingNVX);
-        builder.addExtension("SPV_NVX_raytracing");
+        builder.addCapability(spv::CapabilityRayTracingNV);
+        builder.addExtension("SPV_NV_ray_tracing");
         break;
     case EShLangTaskNV:
     case EShLangMeshNV:
@@ -2267,6 +2275,7 @@
     case glslang::EOpIgnoreIntersectionNV:
     case glslang::EOpTerminateRayNV:
     case glslang::EOpTraceNV:
+    case glslang::EOpExecuteCallableNV:
     case glslang::EOpWritePackedPrimitiveIndices4x8NV:
         noReturnValue = true;
         break;
@@ -6871,12 +6880,18 @@
     case glslang::EOpReportIntersectionNV:
     {
         typeId = builder.makeBoolType();
-        opCode = spv::OpReportIntersectionNVX;
+        opCode = spv::OpReportIntersectionNV;
     }
     break;
     case glslang::EOpTraceNV:
     {
-        builder.createNoResultOp(spv::OpTraceNVX, operands);
+        builder.createNoResultOp(spv::OpTraceNV, operands);
+        return 0;
+    }
+    break;
+    case glslang::EOpExecuteCallableNV:
+    {
+        builder.createNoResultOp(spv::OpExecuteCallableNV, operands);
         return 0;
     }
     break;
@@ -7060,10 +7075,10 @@
 #endif
 #ifdef NV_EXTENSIONS
     case glslang::EOpIgnoreIntersectionNV:
-        builder.createNoResultOp(spv::OpIgnoreIntersectionNVX);
+        builder.createNoResultOp(spv::OpIgnoreIntersectionNV);
         return 0;
     case glslang::EOpTerminateRayNV:
-        builder.createNoResultOp(spv::OpTerminateRayNVX);
+        builder.createNoResultOp(spv::OpTerminateRayNV);
         return 0;
 #endif
     default:
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index 7d77934..8755d9e 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -507,12 +507,12 @@
 Id Builder::makeAccelerationStructureNVType()
 {
     Instruction *type;
-    if (groupedTypes[OpTypeAccelerationStructureNVX].size() == 0) {
-        type = new Instruction(getUniqueId(), NoType, OpTypeAccelerationStructureNVX);
+    if (groupedTypes[OpTypeAccelerationStructureNV].size() == 0) {
+        type = new Instruction(getUniqueId(), NoType, OpTypeAccelerationStructureNV);
         constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
         module.mapInstruction(type);
     } else {
-        type = groupedTypes[OpTypeAccelerationStructureNVX].back();
+        type = groupedTypes[OpTypeAccelerationStructureNV].back();
     }
 
     return type->getResultId();
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index dbbe97d..4f7c198 100644
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -106,12 +106,12 @@
     default: return "Bad";
 
 #ifdef NV_EXTENSIONS
-    case ExecutionModelRayGenerationNVX: return "RayGenerationNVX";
-    case ExecutionModelIntersectionNVX:  return "IntersectionNVX";
-    case ExecutionModelAnyHitNVX:        return "AnyHitNVX";
-    case ExecutionModelClosestHitNVX:    return "ClosestHitNVX";
-    case ExecutionModelMissNVX:          return "MissNVX";
-    case ExecutionModelCallableNVX:      return "CallableNVX";
+    case ExecutionModelRayGenerationNV: return "RayGenerationNV";
+    case ExecutionModelIntersectionNV:  return "IntersectionNV";
+    case ExecutionModelAnyHitNV:        return "AnyHitNV";
+    case ExecutionModelClosestHitNV:    return "ClosestHitNV";
+    case ExecutionModelMissNV:          return "MissNV";
+    case ExecutionModelCallableNV:      return "CallableNV";
 #endif
 
     }
@@ -212,10 +212,12 @@
     case 12: return "StorageBuffer";
 
 #ifdef NV_EXTENSIONS
-    case StorageClassRayPayloadNVX:         return "RayPayloadNVX";
-    case StorageClassHitAttributeNVX:       return "HitAttributeNVX";
-    case StorageClassIncomingRayPayloadNVX: return "IncomingRayPayloadNVX";
-    case StorageClassShaderRecordBufferNVX: return "ShaderRecordBufferNVX";
+    case StorageClassRayPayloadNV:            return "RayPayloadNV";
+    case StorageClassHitAttributeNV:          return "HitAttributeNV";
+    case StorageClassIncomingRayPayloadNV:    return "IncomingRayPayloadNV";
+    case StorageClassShaderRecordBufferNV:    return "ShaderRecordBufferNV";
+    case StorageClassCallableDataNV:          return "CallableDataNV";
+    case StorageClassIncomingCallableDataNV:  return "IncomingCallableDataNV";
 #endif
 
     default: return "Bad";
@@ -367,19 +369,20 @@
 #endif
 
 #ifdef NV_EXTENSIONS
-    case BuiltInLaunchIdNVX:                return "LaunchIdNVX";
-    case BuiltInLaunchSizeNVX:              return "LaunchSizeNVX";
-    case BuiltInWorldRayOriginNVX:          return "WorldRayOriginNVX";
-    case BuiltInWorldRayDirectionNVX:       return "WorldRayDirectionNVX";
-    case BuiltInObjectRayOriginNVX:         return "ObjectRayOriginNVX";
-    case BuiltInObjectRayDirectionNVX:      return "ObjectRayDirectionNVX";
-    case BuiltInRayTminNVX:                 return "RayTminNVX";
-    case BuiltInRayTmaxNVX:                 return "RayTmaxNVX";
-    case BuiltInInstanceCustomIndexNVX:     return "InstanceCustomIndexNVX";
-    case BuiltInObjectToWorldNVX:           return "ObjectToWorldNVX";
-    case BuiltInWorldToObjectNVX:           return "WorldToObjectNVX";
-    case BuiltInHitTNVX:                    return "HitTNVX";
-    case BuiltInHitKindNVX:                 return "HitKindNVX";
+    case BuiltInLaunchIdNV:                 return "LaunchIdNV";
+    case BuiltInLaunchSizeNV:               return "LaunchSizeNV";
+    case BuiltInWorldRayOriginNV:           return "WorldRayOriginNV";
+    case BuiltInWorldRayDirectionNV:        return "WorldRayDirectionNV";
+    case BuiltInObjectRayOriginNV:          return "ObjectRayOriginNV";
+    case BuiltInObjectRayDirectionNV:       return "ObjectRayDirectionNV";
+    case BuiltInRayTminNV:                  return "RayTminNV";
+    case BuiltInRayTmaxNV:                  return "RayTmaxNV";
+    case BuiltInInstanceCustomIndexNV:      return "InstanceCustomIndexNV";
+    case BuiltInObjectToWorldNV:            return "ObjectToWorldNV";
+    case BuiltInWorldToObjectNV:            return "WorldToObjectNV";
+    case BuiltInHitTNV:                     return "HitTNV";
+    case BuiltInHitKindNV:                  return "HitKindNV";
+    case BuiltInIncomingRayFlagsNV:         return "IncomingRayFlagsNV";
     case BuiltInViewportMaskNV:             return "ViewportMaskNV";
     case BuiltInSecondaryPositionNV:        return "SecondaryPositionNV";
     case BuiltInSecondaryViewportMaskNV:    return "SecondaryViewportMaskNV";
@@ -889,7 +892,7 @@
     case CapabilityShaderStereoViewNV:              return "ShaderStereoViewNV";
     case CapabilityPerViewAttributesNV:             return "PerViewAttributesNV";
     case CapabilityGroupNonUniformPartitionedNV:    return "GroupNonUniformPartitionedNV";
-    case CapabilityRaytracingNVX:                   return "RaytracingNVX";
+    case CapabilityRayTracingNV:                    return "RayTracingNV";
     case CapabilityComputeDerivativeGroupQuadsNV:   return "ComputeDerivativeGroupQuadsNV";
     case CapabilityComputeDerivativeGroupLinearNV:  return "ComputeDerivativeGroupLinearNV";
     case CapabilityFragmentBarycentricNV:           return "FragmentBarycentricNV";
@@ -1308,11 +1311,12 @@
 
 #ifdef NV_EXTENSIONS
     case OpGroupNonUniformPartitionNV:       return "OpGroupNonUniformPartitionNV";
-    case OpReportIntersectionNVX:            return "OpReportIntersectionNVX";
-    case OpIgnoreIntersectionNVX:            return "OpIgnoreIntersectionNVX";
-    case OpTerminateRayNVX:                  return "OpTerminateRayNVX";
-    case OpTraceNVX:                         return "OpTraceNVX";
-    case OpTypeAccelerationStructureNVX:     return "OpTypeAccelerationStructureNVX";
+    case OpReportIntersectionNV:             return "OpReportIntersectionNV";
+    case OpIgnoreIntersectionNV:             return "OpIgnoreIntersectionNV";
+    case OpTerminateRayNV:                   return "OpTerminateRayNV";
+    case OpTraceNV:                          return "OpTraceNV";
+    case OpTypeAccelerationStructureNV:      return "OpTypeAccelerationStructureNV";
+    case OpExecuteCallableNV:                return "OpExecuteCallableNV";
     case OpImageSampleFootprintNV:           return "OpImageSampleFootprintNV";
     case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV";
 #endif
@@ -2662,28 +2666,32 @@
 #ifdef NV_EXTENSIONS
     InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
 
-    InstructionDesc[OpTypeAccelerationStructureNVX].setResultAndType(true, false);
+    InstructionDesc[OpTypeAccelerationStructureNV].setResultAndType(true, false);
 
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'NV Acceleration Structure'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Ray Flags'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Cull Mask'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'SBT Record Offset'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'SBT Record Stride'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Miss Index'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Ray Origin'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'TMin'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Ray Direction'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'TMax'");
-    InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Payload'");
-    InstructionDesc[OpTraceNVX].setResultAndType(false, false);
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'NV Acceleration Structure'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'");
+    InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'");
+    InstructionDesc[OpTraceNV].setResultAndType(false, false);
 
-    InstructionDesc[OpReportIntersectionNVX].operands.push(OperandId, "'Hit Parameter'");
-    InstructionDesc[OpReportIntersectionNVX].operands.push(OperandId, "'Hit Kind'");
+    InstructionDesc[OpReportIntersectionNV].operands.push(OperandId, "'Hit Parameter'");
+    InstructionDesc[OpReportIntersectionNV].operands.push(OperandId, "'Hit Kind'");
 
-    InstructionDesc[OpIgnoreIntersectionNVX].setResultAndType(false, false);
+    InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false);
 
-    InstructionDesc[OpTerminateRayNVX].setResultAndType(false, false);
+    InstructionDesc[OpTerminateRayNV].setResultAndType(false, false);
     
+    InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index");
+    InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID");
+    InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false);
+
     InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'");
     InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'");
     InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'");
diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp
index 14605b8..25b5ce9 100644
--- a/SPIRV/spirv.hpp
+++ b/SPIRV/spirv.hpp
@@ -75,12 +75,12 @@
     ExecutionModelKernel = 6,
     ExecutionModelTaskNV = 5267,
     ExecutionModelMeshNV = 5268,
-    ExecutionModelRayGenerationNVX = 5313,
-    ExecutionModelIntersectionNVX = 5314,
-    ExecutionModelAnyHitNVX = 5315,
-    ExecutionModelClosestHitNVX = 5316,
-    ExecutionModelMissNVX = 5317,
-    ExecutionModelCallableNVX = 5318,
+    ExecutionModelRayGenerationNV = 5313,
+    ExecutionModelIntersectionNV = 5314,
+    ExecutionModelAnyHitNV = 5315,
+    ExecutionModelClosestHitNV = 5316,
+    ExecutionModelMissNV = 5317,
+    ExecutionModelCallableNV = 5318,
     ExecutionModelMax = 0x7fffffff,
 };
 
@@ -162,10 +162,12 @@
     StorageClassAtomicCounter = 10,
     StorageClassImage = 11,
     StorageClassStorageBuffer = 12,
-    StorageClassRayPayloadNVX = 5338,
-    StorageClassHitAttributeNVX = 5339,
-    StorageClassIncomingRayPayloadNVX = 5342,
-    StorageClassShaderRecordBufferNVX = 5343,
+    StorageClassCallableDataNV = 5328,
+    StorageClassIncomingCallableDataNV = 5329,
+    StorageClassRayPayloadNV = 5338,
+    StorageClassHitAttributeNV = 5339,
+    StorageClassIncomingRayPayloadNV = 5342,
+    StorageClassShaderRecordBufferNV = 5343,
     StorageClassMax = 0x7fffffff,
 };
 
@@ -512,19 +514,20 @@
     BuiltInBaryCoordNoPerspNV = 5287,
     BuiltInFragmentSizeNV = 5292,
     BuiltInInvocationsPerPixelNV = 5293,
-    BuiltInLaunchIdNVX = 5319,
-    BuiltInLaunchSizeNVX = 5320,
-    BuiltInWorldRayOriginNVX = 5321,
-    BuiltInWorldRayDirectionNVX = 5322,
-    BuiltInObjectRayOriginNVX = 5323,
-    BuiltInObjectRayDirectionNVX = 5324,
-    BuiltInRayTminNVX = 5325,
-    BuiltInRayTmaxNVX = 5326,
-    BuiltInInstanceCustomIndexNVX = 5327,
-    BuiltInObjectToWorldNVX = 5330,
-    BuiltInWorldToObjectNVX = 5331,
-    BuiltInHitTNVX = 5332,
-    BuiltInHitKindNVX = 5333,
+    BuiltInLaunchIdNV = 5319,
+    BuiltInLaunchSizeNV = 5320,
+    BuiltInWorldRayOriginNV = 5321,
+    BuiltInWorldRayDirectionNV = 5322,
+    BuiltInObjectRayOriginNV = 5323,
+    BuiltInObjectRayDirectionNV = 5324,
+    BuiltInRayTminNV = 5325,
+    BuiltInRayTmaxNV = 5326,
+    BuiltInInstanceCustomIndexNV = 5327,
+    BuiltInObjectToWorldNV = 5330,
+    BuiltInWorldToObjectNV = 5331,
+    BuiltInHitTNV = 5332,
+    BuiltInHitKindNV = 5333,
+    BuiltInIncomingRayFlagsNV = 5351,
     BuiltInMax = 0x7fffffff,
 };
 
@@ -781,7 +784,7 @@
     CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
     CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
     CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
-    CapabilityRaytracingNVX = 5340,
+    CapabilityRayTracingNV = 5340,
     CapabilityVulkanMemoryModelKHR = 5345,
     CapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
     CapabilityComputeDerivativeGroupLinearNV = 5350,
@@ -1151,11 +1154,12 @@
     OpImageSampleFootprintNV = 5283,
     OpGroupNonUniformPartitionNV = 5296,
     OpWritePackedPrimitiveIndices4x8NV = 5299,
-    OpReportIntersectionNVX = 5334,
-    OpIgnoreIntersectionNVX = 5335,
-    OpTerminateRayNVX = 5336,
-    OpTraceNVX = 5337,
-    OpTypeAccelerationStructureNVX = 5341,
+    OpReportIntersectionNV = 5334,
+    OpIgnoreIntersectionNV = 5335,
+    OpTerminateRayNV = 5336,
+    OpTraceNV = 5337,
+    OpTypeAccelerationStructureNV = 5341,
+    OpExecuteCallableNV = 5344,
     OpSubgroupShuffleINTEL = 5571,
     OpSubgroupShuffleDownINTEL = 5572,
     OpSubgroupShuffleUpINTEL = 5573,
diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out
index 1dd88b3..92b31d0 100644
--- a/Test/baseResults/spv.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.AnyHitShader.rahit.out
@@ -3,99 +3,99 @@
 // Generated by (magic number): 80007
 // Id's are bound by 81
 
-                              Capability RaytracingNVX
-                              Extension  "SPV_NVX_raytracing"
+                              Capability RayTracingNV
+                              Extension  "SPV_NV_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint AnyHitNVX 4  "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
+                              EntryPoint AnyHitNV 4  "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
                               Source GLSL 460
-                              SourceExtension  "GL_NVX_raytracing"
+                              SourceExtension  "GL_NV_ray_tracing"
                               Name 4  "main"
                               Name 9  "v0"
-                              Name 11  "gl_LaunchIDNVX"
+                              Name 11  "gl_LaunchIDNV"
                               Name 13  "v1"
-                              Name 14  "gl_LaunchSizeNVX"
+                              Name 14  "gl_LaunchSizeNV"
                               Name 18  "v2"
                               Name 20  "gl_PrimitiveID"
                               Name 22  "v3"
                               Name 23  "gl_InstanceID"
                               Name 25  "v4"
-                              Name 26  "gl_InstanceCustomIndexNVX"
+                              Name 26  "gl_InstanceCustomIndexNV"
                               Name 31  "v5"
-                              Name 33  "gl_WorldRayOriginNVX"
+                              Name 33  "gl_WorldRayOriginNV"
                               Name 35  "v6"
-                              Name 36  "gl_WorldRayDirectionNVX"
+                              Name 36  "gl_WorldRayDirectionNV"
                               Name 38  "v7"
-                              Name 39  "gl_ObjectRayOriginNVX"
+                              Name 39  "gl_ObjectRayOriginNV"
                               Name 41  "v8"
-                              Name 42  "gl_ObjectRayDirectionNVX"
+                              Name 42  "gl_ObjectRayDirectionNV"
                               Name 45  "v9"
-                              Name 47  "gl_RayTminNVX"
+                              Name 47  "gl_RayTminNV"
                               Name 49  "v10"
-                              Name 50  "gl_RayTmaxNVX"
+                              Name 50  "gl_RayTmaxNV"
                               Name 52  "v11"
-                              Name 53  "gl_HitTNVX"
+                              Name 53  "gl_HitTNV"
                               Name 56  "v12"
-                              Name 58  "gl_HitKindNVX"
+                              Name 58  "gl_HitKindNV"
                               Name 62  "v13"
-                              Name 64  "gl_ObjectToWorldNVX"
+                              Name 64  "gl_ObjectToWorldNV"
                               Name 66  "v14"
-                              Name 67  "gl_WorldToObjectNVX"
+                              Name 67  "gl_WorldToObjectNV"
                               Name 71  "incomingPayload"
-                              Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX
-                              Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX
+                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
+                              Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
                               Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
                               Decorate 23(gl_InstanceID) BuiltIn InstanceId
-                              Decorate 26(gl_InstanceCustomIndexNVX) BuiltIn InstanceCustomIndexNVX
-                              Decorate 33(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX
-                              Decorate 36(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX
-                              Decorate 39(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX
-                              Decorate 42(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX
-                              Decorate 47(gl_RayTminNVX) BuiltIn RayTminNVX
-                              Decorate 50(gl_RayTmaxNVX) BuiltIn RayTmaxNVX
-                              Decorate 53(gl_HitTNVX) BuiltIn HitTNVX
-                              Decorate 58(gl_HitKindNVX) BuiltIn HitKindNVX
-                              Decorate 64(gl_ObjectToWorldNVX) BuiltIn ObjectToWorldNVX
-                              Decorate 67(gl_WorldToObjectNVX) BuiltIn WorldToObjectNVX
+                              Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexNV
+                              Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
+                              Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
+                              Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
+                              Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
+                              Decorate 47(gl_RayTminNV) BuiltIn RayTminNV
+                              Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxNV
+                              Decorate 53(gl_HitTNV) BuiltIn HitTNV
+                              Decorate 58(gl_HitKindNV) BuiltIn HitKindNV
+                              Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldNV
+                              Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectNV
                               Decorate 71(incomingPayload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
-               7:             TypeVector 6(int) 2
-               8:             TypePointer Function 7(ivec2)
-              10:             TypePointer Input 7(ivec2)
-11(gl_LaunchIDNVX):     10(ptr) Variable Input
-14(gl_LaunchSizeNVX):     10(ptr) Variable Input
+               7:             TypeVector 6(int) 3
+               8:             TypePointer Function 7(ivec3)
+              10:             TypePointer Input 7(ivec3)
+11(gl_LaunchIDNV):     10(ptr) Variable Input
+14(gl_LaunchSizeNV):     10(ptr) Variable Input
               16:             TypeInt 32 1
               17:             TypePointer Function 16(int)
               19:             TypePointer Input 16(int)
 20(gl_PrimitiveID):     19(ptr) Variable Input
 23(gl_InstanceID):     19(ptr) Variable Input
-26(gl_InstanceCustomIndexNVX):     19(ptr) Variable Input
+26(gl_InstanceCustomIndexNV):     19(ptr) Variable Input
               28:             TypeFloat 32
               29:             TypeVector 28(float) 3
               30:             TypePointer Function 29(fvec3)
               32:             TypePointer Input 29(fvec3)
-33(gl_WorldRayOriginNVX):     32(ptr) Variable Input
-36(gl_WorldRayDirectionNVX):     32(ptr) Variable Input
-39(gl_ObjectRayOriginNVX):     32(ptr) Variable Input
-42(gl_ObjectRayDirectionNVX):     32(ptr) Variable Input
+33(gl_WorldRayOriginNV):     32(ptr) Variable Input
+36(gl_WorldRayDirectionNV):     32(ptr) Variable Input
+39(gl_ObjectRayOriginNV):     32(ptr) Variable Input
+42(gl_ObjectRayDirectionNV):     32(ptr) Variable Input
               44:             TypePointer Function 28(float)
               46:             TypePointer Input 28(float)
-47(gl_RayTminNVX):     46(ptr) Variable Input
-50(gl_RayTmaxNVX):     46(ptr) Variable Input
-  53(gl_HitTNVX):     46(ptr) Variable Input
+47(gl_RayTminNV):     46(ptr) Variable Input
+50(gl_RayTmaxNV):     46(ptr) Variable Input
+   53(gl_HitTNV):     46(ptr) Variable Input
               55:             TypePointer Function 6(int)
               57:             TypePointer Input 6(int)
-58(gl_HitKindNVX):     57(ptr) Variable Input
+58(gl_HitKindNV):     57(ptr) Variable Input
               60:             TypeMatrix 29(fvec3) 4
               61:             TypePointer Function 60
               63:             TypePointer Input 60
-64(gl_ObjectToWorldNVX):     63(ptr) Variable Input
-67(gl_WorldToObjectNVX):     63(ptr) Variable Input
+64(gl_ObjectToWorldNV):     63(ptr) Variable Input
+67(gl_WorldToObjectNV):     63(ptr) Variable Input
               69:             TypeVector 28(float) 4
-              70:             TypePointer IncomingRayPayloadNVX 69(fvec4)
-71(incomingPayload):     70(ptr) Variable IncomingRayPayloadNVX
+              70:             TypePointer IncomingRayPayloadNV 69(fvec4)
+71(incomingPayload):     70(ptr) Variable IncomingRayPayloadNV
               72:   28(float) Constant 1056964608
               73:   69(fvec4) ConstantComposite 72 72 72 72
               75:     16(int) Constant 1
@@ -117,35 +117,35 @@
          56(v12):     55(ptr) Variable Function
          62(v13):     61(ptr) Variable Function
          66(v14):     61(ptr) Variable Function
-              12:    7(ivec2) Load 11(gl_LaunchIDNVX)
+              12:    7(ivec3) Load 11(gl_LaunchIDNV)
                               Store 9(v0) 12
-              15:    7(ivec2) Load 14(gl_LaunchSizeNVX)
+              15:    7(ivec3) Load 14(gl_LaunchSizeNV)
                               Store 13(v1) 15
               21:     16(int) Load 20(gl_PrimitiveID)
                               Store 18(v2) 21
               24:     16(int) Load 23(gl_InstanceID)
                               Store 22(v3) 24
-              27:     16(int) Load 26(gl_InstanceCustomIndexNVX)
+              27:     16(int) Load 26(gl_InstanceCustomIndexNV)
                               Store 25(v4) 27
-              34:   29(fvec3) Load 33(gl_WorldRayOriginNVX)
+              34:   29(fvec3) Load 33(gl_WorldRayOriginNV)
                               Store 31(v5) 34
-              37:   29(fvec3) Load 36(gl_WorldRayDirectionNVX)
+              37:   29(fvec3) Load 36(gl_WorldRayDirectionNV)
                               Store 35(v6) 37
-              40:   29(fvec3) Load 39(gl_ObjectRayOriginNVX)
+              40:   29(fvec3) Load 39(gl_ObjectRayOriginNV)
                               Store 38(v7) 40
-              43:   29(fvec3) Load 42(gl_ObjectRayDirectionNVX)
+              43:   29(fvec3) Load 42(gl_ObjectRayDirectionNV)
                               Store 41(v8) 43
-              48:   28(float) Load 47(gl_RayTminNVX)
+              48:   28(float) Load 47(gl_RayTminNV)
                               Store 45(v9) 48
-              51:   28(float) Load 50(gl_RayTmaxNVX)
+              51:   28(float) Load 50(gl_RayTmaxNV)
                               Store 49(v10) 51
-              54:   28(float) Load 53(gl_HitTNVX)
+              54:   28(float) Load 53(gl_HitTNV)
                               Store 52(v11) 54
-              59:      6(int) Load 58(gl_HitKindNVX)
+              59:      6(int) Load 58(gl_HitKindNV)
                               Store 56(v12) 59
-              65:          60 Load 64(gl_ObjectToWorldNVX)
+              65:          60 Load 64(gl_ObjectToWorldNV)
                               Store 62(v13) 65
-              68:          60 Load 67(gl_WorldToObjectNVX)
+              68:          60 Load 67(gl_WorldToObjectNV)
                               Store 66(v14) 68
                               Store 71(incomingPayload) 73
               74:     16(int) Load 18(v2)
@@ -153,10 +153,10 @@
                               SelectionMerge 79 None
                               BranchConditional 77 78 80
               78:               Label
-                                IgnoreIntersectionNVX
+                                IgnoreIntersectionNV
                                 Branch 79
               80:               Label
-                                TerminateRayNVX
+                                TerminateRayNV
                                 Branch 79
               79:             Label
                               Return
diff --git a/Test/baseResults/spv.AnyHitShader_Errors.rahit.out b/Test/baseResults/spv.AnyHitShader_Errors.rahit.out
index 5a863be..e9bab08 100644
--- a/Test/baseResults/spv.AnyHitShader_Errors.rahit.out
+++ b/Test/baseResults/spv.AnyHitShader_Errors.rahit.out
@@ -1,7 +1,7 @@
 spv.AnyHitShader_Errors.rahit
-ERROR: 0:8: 'assign' :  l-value required "payload" (cannot modify hitAttributeNVX in this stage)
-ERROR: 0:9: 'reportIntersectionNVX' : no matching overloaded function found 
-ERROR: 0:10: 'traceNVX' : no matching overloaded function found 
+ERROR: 0:8: 'assign' :  l-value required "payload" (cannot modify hitAttributeNV in this stage)
+ERROR: 0:9: 'reportIntersectionNV' : no matching overloaded function found 
+ERROR: 0:10: 'traceNV' : no matching overloaded function found 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out
index 5a1d7fc..b461462 100644
--- a/Test/baseResults/spv.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShader.rchit.out
@@ -3,62 +3,62 @@
 // Generated by (magic number): 80007
 // Id's are bound by 88
 
-                              Capability RaytracingNVX
-                              Extension  "SPV_NVX_raytracing"
+                              Capability RayTracingNV
+                              Extension  "SPV_NV_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint ClosestHitNVX 4  "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
+                              EntryPoint ClosestHitNV 4  "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
                               Source GLSL 460
-                              SourceExtension  "GL_NVX_raytracing"
+                              SourceExtension  "GL_NV_ray_tracing"
                               Name 4  "main"
                               Name 9  "v0"
-                              Name 11  "gl_LaunchIDNVX"
+                              Name 11  "gl_LaunchIDNV"
                               Name 13  "v1"
-                              Name 14  "gl_LaunchSizeNVX"
+                              Name 14  "gl_LaunchSizeNV"
                               Name 18  "v2"
                               Name 20  "gl_PrimitiveID"
                               Name 22  "v3"
                               Name 23  "gl_InstanceID"
                               Name 25  "v4"
-                              Name 26  "gl_InstanceCustomIndexNVX"
+                              Name 26  "gl_InstanceCustomIndexNV"
                               Name 31  "v5"
-                              Name 33  "gl_WorldRayOriginNVX"
+                              Name 33  "gl_WorldRayOriginNV"
                               Name 35  "v6"
-                              Name 36  "gl_WorldRayDirectionNVX"
+                              Name 36  "gl_WorldRayDirectionNV"
                               Name 38  "v7"
-                              Name 39  "gl_ObjectRayOriginNVX"
+                              Name 39  "gl_ObjectRayOriginNV"
                               Name 41  "v8"
-                              Name 42  "gl_ObjectRayDirectionNVX"
+                              Name 42  "gl_ObjectRayDirectionNV"
                               Name 45  "v9"
-                              Name 47  "gl_RayTminNVX"
+                              Name 47  "gl_RayTminNV"
                               Name 49  "v10"
-                              Name 50  "gl_RayTmaxNVX"
+                              Name 50  "gl_RayTmaxNV"
                               Name 52  "v11"
-                              Name 53  "gl_HitTNVX"
+                              Name 53  "gl_HitTNV"
                               Name 56  "v12"
-                              Name 58  "gl_HitKindNVX"
+                              Name 58  "gl_HitKindNV"
                               Name 62  "v13"
-                              Name 64  "gl_ObjectToWorldNVX"
+                              Name 64  "gl_ObjectToWorldNV"
                               Name 66  "v14"
-                              Name 67  "gl_WorldToObjectNVX"
+                              Name 67  "gl_WorldToObjectNV"
                               Name 71  "accNV"
                               Name 85  "localPayload"
                               Name 87  "incomingPayload"
-                              Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX
-                              Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX
+                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
+                              Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
                               Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
                               Decorate 23(gl_InstanceID) BuiltIn InstanceId
-                              Decorate 26(gl_InstanceCustomIndexNVX) BuiltIn InstanceCustomIndexNVX
-                              Decorate 33(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX
-                              Decorate 36(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX
-                              Decorate 39(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX
-                              Decorate 42(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX
-                              Decorate 47(gl_RayTminNVX) BuiltIn RayTminNVX
-                              Decorate 50(gl_RayTmaxNVX) BuiltIn RayTmaxNVX
-                              Decorate 53(gl_HitTNVX) BuiltIn HitTNVX
-                              Decorate 58(gl_HitKindNVX) BuiltIn HitKindNVX
-                              Decorate 64(gl_ObjectToWorldNVX) BuiltIn ObjectToWorldNVX
-                              Decorate 67(gl_WorldToObjectNVX) BuiltIn WorldToObjectNVX
+                              Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexNV
+                              Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
+                              Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
+                              Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
+                              Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
+                              Decorate 47(gl_RayTminNV) BuiltIn RayTminNV
+                              Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxNV
+                              Decorate 53(gl_HitTNV) BuiltIn HitTNV
+                              Decorate 58(gl_HitKindNV) BuiltIn HitKindNV
+                              Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldNV
+                              Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectNV
                               Decorate 71(accNV) DescriptorSet 0
                               Decorate 71(accNV) Binding 0
                               Decorate 85(localPayload) Location 0
@@ -66,39 +66,39 @@
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
-               7:             TypeVector 6(int) 2
-               8:             TypePointer Function 7(ivec2)
-              10:             TypePointer Input 7(ivec2)
-11(gl_LaunchIDNVX):     10(ptr) Variable Input
-14(gl_LaunchSizeNVX):     10(ptr) Variable Input
+               7:             TypeVector 6(int) 3
+               8:             TypePointer Function 7(ivec3)
+              10:             TypePointer Input 7(ivec3)
+11(gl_LaunchIDNV):     10(ptr) Variable Input
+14(gl_LaunchSizeNV):     10(ptr) Variable Input
               16:             TypeInt 32 1
               17:             TypePointer Function 16(int)
               19:             TypePointer Input 16(int)
 20(gl_PrimitiveID):     19(ptr) Variable Input
 23(gl_InstanceID):     19(ptr) Variable Input
-26(gl_InstanceCustomIndexNVX):     19(ptr) Variable Input
+26(gl_InstanceCustomIndexNV):     19(ptr) Variable Input
               28:             TypeFloat 32
               29:             TypeVector 28(float) 3
               30:             TypePointer Function 29(fvec3)
               32:             TypePointer Input 29(fvec3)
-33(gl_WorldRayOriginNVX):     32(ptr) Variable Input
-36(gl_WorldRayDirectionNVX):     32(ptr) Variable Input
-39(gl_ObjectRayOriginNVX):     32(ptr) Variable Input
-42(gl_ObjectRayDirectionNVX):     32(ptr) Variable Input
+33(gl_WorldRayOriginNV):     32(ptr) Variable Input
+36(gl_WorldRayDirectionNV):     32(ptr) Variable Input
+39(gl_ObjectRayOriginNV):     32(ptr) Variable Input
+42(gl_ObjectRayDirectionNV):     32(ptr) Variable Input
               44:             TypePointer Function 28(float)
               46:             TypePointer Input 28(float)
-47(gl_RayTminNVX):     46(ptr) Variable Input
-50(gl_RayTmaxNVX):     46(ptr) Variable Input
-  53(gl_HitTNVX):     46(ptr) Variable Input
+47(gl_RayTminNV):     46(ptr) Variable Input
+50(gl_RayTmaxNV):     46(ptr) Variable Input
+   53(gl_HitTNV):     46(ptr) Variable Input
               55:             TypePointer Function 6(int)
               57:             TypePointer Input 6(int)
-58(gl_HitKindNVX):     57(ptr) Variable Input
+58(gl_HitKindNV):     57(ptr) Variable Input
               60:             TypeMatrix 29(fvec3) 4
               61:             TypePointer Function 60
               63:             TypePointer Input 60
-64(gl_ObjectToWorldNVX):     63(ptr) Variable Input
-67(gl_WorldToObjectNVX):     63(ptr) Variable Input
-              69:             TypeAccelerationStructureNVX
+64(gl_ObjectToWorldNV):     63(ptr) Variable Input
+67(gl_WorldToObjectNV):     63(ptr) Variable Input
+              69:             TypeAccelerationStructureNV
               70:             TypePointer UniformConstant 69
        71(accNV):     70(ptr) Variable UniformConstant
               73:      6(int) Constant 0
@@ -112,10 +112,10 @@
               81:   28(float) Constant 1061158912
               82:     16(int) Constant 1
               83:             TypeVector 28(float) 4
-              84:             TypePointer RayPayloadNVX 83(fvec4)
-85(localPayload):     84(ptr) Variable RayPayloadNVX
-              86:             TypePointer IncomingRayPayloadNVX 83(fvec4)
-87(incomingPayload):     86(ptr) Variable IncomingRayPayloadNVX
+              84:             TypePointer RayPayloadNV 83(fvec4)
+85(localPayload):     84(ptr) Variable RayPayloadNV
+              86:             TypePointer IncomingRayPayloadNV 83(fvec4)
+87(incomingPayload):     86(ptr) Variable IncomingRayPayloadNV
          4(main):           2 Function None 3
                5:             Label
            9(v0):      8(ptr) Variable Function
@@ -133,37 +133,37 @@
          56(v12):     55(ptr) Variable Function
          62(v13):     61(ptr) Variable Function
          66(v14):     61(ptr) Variable Function
-              12:    7(ivec2) Load 11(gl_LaunchIDNVX)
+              12:    7(ivec3) Load 11(gl_LaunchIDNV)
                               Store 9(v0) 12
-              15:    7(ivec2) Load 14(gl_LaunchSizeNVX)
+              15:    7(ivec3) Load 14(gl_LaunchSizeNV)
                               Store 13(v1) 15
               21:     16(int) Load 20(gl_PrimitiveID)
                               Store 18(v2) 21
               24:     16(int) Load 23(gl_InstanceID)
                               Store 22(v3) 24
-              27:     16(int) Load 26(gl_InstanceCustomIndexNVX)
+              27:     16(int) Load 26(gl_InstanceCustomIndexNV)
                               Store 25(v4) 27
-              34:   29(fvec3) Load 33(gl_WorldRayOriginNVX)
+              34:   29(fvec3) Load 33(gl_WorldRayOriginNV)
                               Store 31(v5) 34
-              37:   29(fvec3) Load 36(gl_WorldRayDirectionNVX)
+              37:   29(fvec3) Load 36(gl_WorldRayDirectionNV)
                               Store 35(v6) 37
-              40:   29(fvec3) Load 39(gl_ObjectRayOriginNVX)
+              40:   29(fvec3) Load 39(gl_ObjectRayOriginNV)
                               Store 38(v7) 40
-              43:   29(fvec3) Load 42(gl_ObjectRayDirectionNVX)
+              43:   29(fvec3) Load 42(gl_ObjectRayDirectionNV)
                               Store 41(v8) 43
-              48:   28(float) Load 47(gl_RayTminNVX)
+              48:   28(float) Load 47(gl_RayTminNV)
                               Store 45(v9) 48
-              51:   28(float) Load 50(gl_RayTmaxNVX)
+              51:   28(float) Load 50(gl_RayTmaxNV)
                               Store 49(v10) 51
-              54:   28(float) Load 53(gl_HitTNVX)
+              54:   28(float) Load 53(gl_HitTNV)
                               Store 52(v11) 54
-              59:      6(int) Load 58(gl_HitKindNVX)
+              59:      6(int) Load 58(gl_HitKindNV)
                               Store 56(v12) 59
-              65:          60 Load 64(gl_ObjectToWorldNVX)
+              65:          60 Load 64(gl_ObjectToWorldNV)
                               Store 62(v13) 65
-              68:          60 Load 67(gl_WorldToObjectNVX)
+              68:          60 Load 67(gl_WorldToObjectNV)
                               Store 66(v14) 68
               72:          69 Load 71(accNV)
-                              TraceNVX 72 73 74 75 76 73 78 77 80 81 82
+                              TraceNV 72 73 74 75 76 73 78 77 80 81 82
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ClosestHitShader_Errors.rchit.out b/Test/baseResults/spv.ClosestHitShader_Errors.rchit.out
index 36352ae..e6f8410 100644
--- a/Test/baseResults/spv.ClosestHitShader_Errors.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShader_Errors.rchit.out
@@ -1,8 +1,8 @@
 spv.ClosestHitShader_Errors.rchit
-ERROR: 0:8: 'assign' :  l-value required "payload" (cannot modify hitAttributeNVX in this stage)
-ERROR: 0:9: 'reportIntersectionNVX' : no matching overloaded function found 
-ERROR: 0:10: 'terminateRayNVX' : no matching overloaded function found 
-ERROR: 0:11: 'ignoreIntersectionNVX' : no matching overloaded function found 
+ERROR: 0:8: 'assign' :  l-value required "payload" (cannot modify hitAttributeNV in this stage)
+ERROR: 0:9: 'reportIntersectionNV' : no matching overloaded function found 
+ERROR: 0:10: 'terminateRayNV' : no matching overloaded function found 
+ERROR: 0:11: 'ignoreIntersectionNV' : no matching overloaded function found 
 ERROR: 4 compilation errors.  No code generated.
 
 
diff --git a/Test/baseResults/spv.IntersectShader.rint.out b/Test/baseResults/spv.IntersectShader.rint.out
index bc84c6e..cbb70cd 100644
--- a/Test/baseResults/spv.IntersectShader.rint.out
+++ b/Test/baseResults/spv.IntersectShader.rint.out
@@ -3,88 +3,88 @@
 // Generated by (magic number): 80007
 // Id's are bound by 71
 
-                              Capability RaytracingNVX
-                              Extension  "SPV_NVX_raytracing"
+                              Capability RayTracingNV
+                              Extension  "SPV_NV_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint IntersectionNVX 4  "main" 11 14 20 23 26 33 36 39 42 47 50 56 59
+                              EntryPoint IntersectionNV 4  "main" 11 14 20 23 26 33 36 39 42 47 50 56 59
                               Source GLSL 460
-                              SourceExtension  "GL_NVX_raytracing"
+                              SourceExtension  "GL_NV_ray_tracing"
                               Name 4  "main"
                               Name 9  "v0"
-                              Name 11  "gl_LaunchIDNVX"
+                              Name 11  "gl_LaunchIDNV"
                               Name 13  "v1"
-                              Name 14  "gl_LaunchSizeNVX"
+                              Name 14  "gl_LaunchSizeNV"
                               Name 18  "v2"
                               Name 20  "gl_PrimitiveID"
                               Name 22  "v3"
                               Name 23  "gl_InstanceID"
                               Name 25  "v4"
-                              Name 26  "gl_InstanceCustomIndexNVX"
+                              Name 26  "gl_InstanceCustomIndexNV"
                               Name 31  "v5"
-                              Name 33  "gl_WorldRayOriginNVX"
+                              Name 33  "gl_WorldRayOriginNV"
                               Name 35  "v6"
-                              Name 36  "gl_WorldRayDirectionNVX"
+                              Name 36  "gl_WorldRayDirectionNV"
                               Name 38  "v7"
-                              Name 39  "gl_ObjectRayOriginNVX"
+                              Name 39  "gl_ObjectRayOriginNV"
                               Name 41  "v8"
-                              Name 42  "gl_ObjectRayDirectionNVX"
+                              Name 42  "gl_ObjectRayDirectionNV"
                               Name 45  "v9"
-                              Name 47  "gl_RayTminNVX"
+                              Name 47  "gl_RayTminNV"
                               Name 49  "v10"
-                              Name 50  "gl_RayTmaxNVX"
+                              Name 50  "gl_RayTmaxNV"
                               Name 54  "v11"
-                              Name 56  "gl_ObjectToWorldNVX"
+                              Name 56  "gl_ObjectToWorldNV"
                               Name 58  "v12"
-                              Name 59  "gl_WorldToObjectNVX"
+                              Name 59  "gl_WorldToObjectNV"
                               Name 63  "iAttr"
-                              Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX
-                              Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX
+                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
+                              Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
                               Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
                               Decorate 23(gl_InstanceID) BuiltIn InstanceId
-                              Decorate 26(gl_InstanceCustomIndexNVX) BuiltIn InstanceCustomIndexNVX
-                              Decorate 33(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX
-                              Decorate 36(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX
-                              Decorate 39(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX
-                              Decorate 42(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX
-                              Decorate 47(gl_RayTminNVX) BuiltIn RayTminNVX
-                              Decorate 50(gl_RayTmaxNVX) BuiltIn RayTmaxNVX
-                              Decorate 56(gl_ObjectToWorldNVX) BuiltIn ObjectToWorldNVX
-                              Decorate 59(gl_WorldToObjectNVX) BuiltIn WorldToObjectNVX
+                              Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexNV
+                              Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
+                              Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
+                              Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
+                              Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
+                              Decorate 47(gl_RayTminNV) BuiltIn RayTminNV
+                              Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxNV
+                              Decorate 56(gl_ObjectToWorldNV) BuiltIn ObjectToWorldNV
+                              Decorate 59(gl_WorldToObjectNV) BuiltIn WorldToObjectNV
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
-               7:             TypeVector 6(int) 2
-               8:             TypePointer Function 7(ivec2)
-              10:             TypePointer Input 7(ivec2)
-11(gl_LaunchIDNVX):     10(ptr) Variable Input
-14(gl_LaunchSizeNVX):     10(ptr) Variable Input
+               7:             TypeVector 6(int) 3
+               8:             TypePointer Function 7(ivec3)
+              10:             TypePointer Input 7(ivec3)
+11(gl_LaunchIDNV):     10(ptr) Variable Input
+14(gl_LaunchSizeNV):     10(ptr) Variable Input
               16:             TypeInt 32 1
               17:             TypePointer Function 16(int)
               19:             TypePointer Input 16(int)
 20(gl_PrimitiveID):     19(ptr) Variable Input
 23(gl_InstanceID):     19(ptr) Variable Input
-26(gl_InstanceCustomIndexNVX):     19(ptr) Variable Input
+26(gl_InstanceCustomIndexNV):     19(ptr) Variable Input
               28:             TypeFloat 32
               29:             TypeVector 28(float) 3
               30:             TypePointer Function 29(fvec3)
               32:             TypePointer Input 29(fvec3)
-33(gl_WorldRayOriginNVX):     32(ptr) Variable Input
-36(gl_WorldRayDirectionNVX):     32(ptr) Variable Input
-39(gl_ObjectRayOriginNVX):     32(ptr) Variable Input
-42(gl_ObjectRayDirectionNVX):     32(ptr) Variable Input
+33(gl_WorldRayOriginNV):     32(ptr) Variable Input
+36(gl_WorldRayDirectionNV):     32(ptr) Variable Input
+39(gl_ObjectRayOriginNV):     32(ptr) Variable Input
+42(gl_ObjectRayDirectionNV):     32(ptr) Variable Input
               44:             TypePointer Function 28(float)
               46:             TypePointer Input 28(float)
-47(gl_RayTminNVX):     46(ptr) Variable Input
-50(gl_RayTmaxNVX):     46(ptr) Variable Input
+47(gl_RayTminNV):     46(ptr) Variable Input
+50(gl_RayTmaxNV):     46(ptr) Variable Input
               52:             TypeMatrix 29(fvec3) 4
               53:             TypePointer Function 52
               55:             TypePointer Input 52
-56(gl_ObjectToWorldNVX):     55(ptr) Variable Input
-59(gl_WorldToObjectNVX):     55(ptr) Variable Input
+56(gl_ObjectToWorldNV):     55(ptr) Variable Input
+59(gl_WorldToObjectNV):     55(ptr) Variable Input
               61:             TypeVector 28(float) 4
-              62:             TypePointer HitAttributeNVX 61(fvec4)
-       63(iAttr):     62(ptr) Variable HitAttributeNVX
+              62:             TypePointer HitAttributeNV 61(fvec4)
+       63(iAttr):     62(ptr) Variable HitAttributeNV
               64:   28(float) Constant 1056964608
               65:   28(float) Constant 0
               66:   28(float) Constant 1065353216
@@ -106,33 +106,33 @@
          49(v10):     44(ptr) Variable Function
          54(v11):     53(ptr) Variable Function
          58(v12):     53(ptr) Variable Function
-              12:    7(ivec2) Load 11(gl_LaunchIDNVX)
+              12:    7(ivec3) Load 11(gl_LaunchIDNV)
                               Store 9(v0) 12
-              15:    7(ivec2) Load 14(gl_LaunchSizeNVX)
+              15:    7(ivec3) Load 14(gl_LaunchSizeNV)
                               Store 13(v1) 15
               21:     16(int) Load 20(gl_PrimitiveID)
                               Store 18(v2) 21
               24:     16(int) Load 23(gl_InstanceID)
                               Store 22(v3) 24
-              27:     16(int) Load 26(gl_InstanceCustomIndexNVX)
+              27:     16(int) Load 26(gl_InstanceCustomIndexNV)
                               Store 25(v4) 27
-              34:   29(fvec3) Load 33(gl_WorldRayOriginNVX)
+              34:   29(fvec3) Load 33(gl_WorldRayOriginNV)
                               Store 31(v5) 34
-              37:   29(fvec3) Load 36(gl_WorldRayDirectionNVX)
+              37:   29(fvec3) Load 36(gl_WorldRayDirectionNV)
                               Store 35(v6) 37
-              40:   29(fvec3) Load 39(gl_ObjectRayOriginNVX)
+              40:   29(fvec3) Load 39(gl_ObjectRayOriginNV)
                               Store 38(v7) 40
-              43:   29(fvec3) Load 42(gl_ObjectRayDirectionNVX)
+              43:   29(fvec3) Load 42(gl_ObjectRayDirectionNV)
                               Store 41(v8) 43
-              48:   28(float) Load 47(gl_RayTminNVX)
+              48:   28(float) Load 47(gl_RayTminNV)
                               Store 45(v9) 48
-              51:   28(float) Load 50(gl_RayTmaxNVX)
+              51:   28(float) Load 50(gl_RayTmaxNV)
                               Store 49(v10) 51
-              57:          52 Load 56(gl_ObjectToWorldNVX)
+              57:          52 Load 56(gl_ObjectToWorldNV)
                               Store 54(v11) 57
-              60:          52 Load 59(gl_WorldToObjectNVX)
+              60:          52 Load 59(gl_WorldToObjectNV)
                               Store 58(v12) 60
                               Store 63(iAttr) 67
-              70:    69(bool) ReportIntersectionNVX 64 68
+              70:    69(bool) ReportIntersectionNV 64 68
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.IntersectShader_Errors.rint.out b/Test/baseResults/spv.IntersectShader_Errors.rint.out
index 804ddb4..f267026 100644
--- a/Test/baseResults/spv.IntersectShader_Errors.rint.out
+++ b/Test/baseResults/spv.IntersectShader_Errors.rint.out
@@ -1,9 +1,9 @@
 spv.IntersectShader_Errors.rint
-ERROR: 0:3: 'rayPayloadInNVX' : not supported in this stage: intersection
-ERROR: 0:4: 'rayPayloadNVX' : not supported in this stage: intersection
-ERROR: 0:8: 'gl_HitTNVX' : undeclared identifier 
-ERROR: 0:9: 'gl_HitKindNVX' : undeclared identifier 
-ERROR: 0:10: 'traceNVX' : no matching overloaded function found 
+ERROR: 0:3: 'rayPayloadInNV' : not supported in this stage: intersection
+ERROR: 0:4: 'rayPayloadNV' : not supported in this stage: intersection
+ERROR: 0:8: 'gl_HitTNV' : undeclared identifier 
+ERROR: 0:9: 'gl_HitKindNV' : undeclared identifier 
+ERROR: 0:10: 'traceNV' : no matching overloaded function found 
 ERROR: 5 compilation errors.  No code generated.
 
 
diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out
index 5384084..0ad3341 100644
--- a/Test/baseResults/spv.MissShader.rmiss.out
+++ b/Test/baseResults/spv.MissShader.rmiss.out
@@ -3,41 +3,41 @@
 // Generated by (magic number): 80007
 // Id's are bound by 60
 
-                              Capability RaytracingNVX
-                              Extension  "SPV_NVX_raytracing"
+                              Capability RayTracingNV
+                              Extension  "SPV_NV_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint MissNVX 4  "main" 11 14 21 24 27 30 35 38
+                              EntryPoint MissNV 4  "main" 11 14 21 24 27 30 35 38
                               Source GLSL 460
-                              SourceExtension  "GL_NVX_raytracing"
+                              SourceExtension  "GL_NV_ray_tracing"
                               Name 4  "main"
                               Name 9  "v0"
-                              Name 11  "gl_LaunchIDNVX"
+                              Name 11  "gl_LaunchIDNV"
                               Name 13  "v1"
-                              Name 14  "gl_LaunchSizeNVX"
+                              Name 14  "gl_LaunchSizeNV"
                               Name 19  "v2"
-                              Name 21  "gl_WorldRayOriginNVX"
+                              Name 21  "gl_WorldRayOriginNV"
                               Name 23  "v3"
-                              Name 24  "gl_WorldRayDirectionNVX"
+                              Name 24  "gl_WorldRayDirectionNV"
                               Name 26  "v4"
-                              Name 27  "gl_ObjectRayOriginNVX"
+                              Name 27  "gl_ObjectRayOriginNV"
                               Name 29  "v5"
-                              Name 30  "gl_ObjectRayDirectionNVX"
+                              Name 30  "gl_ObjectRayDirectionNV"
                               Name 33  "v6"
-                              Name 35  "gl_RayTminNVX"
+                              Name 35  "gl_RayTminNV"
                               Name 37  "v7"
-                              Name 38  "gl_RayTmaxNVX"
+                              Name 38  "gl_RayTmaxNV"
                               Name 42  "accNV"
                               Name 57  "localPayload"
                               Name 59  "incomingPayload"
-                              Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX
-                              Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX
-                              Decorate 21(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX
-                              Decorate 24(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX
-                              Decorate 27(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX
-                              Decorate 30(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX
-                              Decorate 35(gl_RayTminNVX) BuiltIn RayTminNVX
-                              Decorate 38(gl_RayTmaxNVX) BuiltIn RayTmaxNVX
+                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
+                              Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+                              Decorate 21(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
+                              Decorate 24(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
+                              Decorate 27(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
+                              Decorate 30(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
+                              Decorate 35(gl_RayTminNV) BuiltIn RayTminNV
+                              Decorate 38(gl_RayTmaxNV) BuiltIn RayTmaxNV
                               Decorate 42(accNV) DescriptorSet 0
                               Decorate 42(accNV) Binding 0
                               Decorate 57(localPayload) Location 0
@@ -45,24 +45,24 @@
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
-               7:             TypeVector 6(int) 2
-               8:             TypePointer Function 7(ivec2)
-              10:             TypePointer Input 7(ivec2)
-11(gl_LaunchIDNVX):     10(ptr) Variable Input
-14(gl_LaunchSizeNVX):     10(ptr) Variable Input
+               7:             TypeVector 6(int) 3
+               8:             TypePointer Function 7(ivec3)
+              10:             TypePointer Input 7(ivec3)
+11(gl_LaunchIDNV):     10(ptr) Variable Input
+14(gl_LaunchSizeNV):     10(ptr) Variable Input
               16:             TypeFloat 32
               17:             TypeVector 16(float) 3
               18:             TypePointer Function 17(fvec3)
               20:             TypePointer Input 17(fvec3)
-21(gl_WorldRayOriginNVX):     20(ptr) Variable Input
-24(gl_WorldRayDirectionNVX):     20(ptr) Variable Input
-27(gl_ObjectRayOriginNVX):     20(ptr) Variable Input
-30(gl_ObjectRayDirectionNVX):     20(ptr) Variable Input
+21(gl_WorldRayOriginNV):     20(ptr) Variable Input
+24(gl_WorldRayDirectionNV):     20(ptr) Variable Input
+27(gl_ObjectRayOriginNV):     20(ptr) Variable Input
+30(gl_ObjectRayDirectionNV):     20(ptr) Variable Input
               32:             TypePointer Function 16(float)
               34:             TypePointer Input 16(float)
-35(gl_RayTminNVX):     34(ptr) Variable Input
-38(gl_RayTmaxNVX):     34(ptr) Variable Input
-              40:             TypeAccelerationStructureNVX
+35(gl_RayTminNV):     34(ptr) Variable Input
+38(gl_RayTmaxNV):     34(ptr) Variable Input
+              40:             TypeAccelerationStructureNV
               41:             TypePointer UniformConstant 40
        42(accNV):     41(ptr) Variable UniformConstant
               44:      6(int) Constant 0
@@ -77,10 +77,10 @@
               53:             TypeInt 32 1
               54:     53(int) Constant 1
               55:             TypeVector 16(float) 4
-              56:             TypePointer RayPayloadNVX 55(fvec4)
-57(localPayload):     56(ptr) Variable RayPayloadNVX
-              58:             TypePointer IncomingRayPayloadNVX 55(fvec4)
-59(incomingPayload):     58(ptr) Variable IncomingRayPayloadNVX
+              56:             TypePointer RayPayloadNV 55(fvec4)
+57(localPayload):     56(ptr) Variable RayPayloadNV
+              58:             TypePointer IncomingRayPayloadNV 55(fvec4)
+59(incomingPayload):     58(ptr) Variable IncomingRayPayloadNV
          4(main):           2 Function None 3
                5:             Label
            9(v0):      8(ptr) Variable Function
@@ -91,23 +91,23 @@
           29(v5):     18(ptr) Variable Function
           33(v6):     32(ptr) Variable Function
           37(v7):     32(ptr) Variable Function
-              12:    7(ivec2) Load 11(gl_LaunchIDNVX)
+              12:    7(ivec3) Load 11(gl_LaunchIDNV)
                               Store 9(v0) 12
-              15:    7(ivec2) Load 14(gl_LaunchSizeNVX)
+              15:    7(ivec3) Load 14(gl_LaunchSizeNV)
                               Store 13(v1) 15
-              22:   17(fvec3) Load 21(gl_WorldRayOriginNVX)
+              22:   17(fvec3) Load 21(gl_WorldRayOriginNV)
                               Store 19(v2) 22
-              25:   17(fvec3) Load 24(gl_WorldRayDirectionNVX)
+              25:   17(fvec3) Load 24(gl_WorldRayDirectionNV)
                               Store 23(v3) 25
-              28:   17(fvec3) Load 27(gl_ObjectRayOriginNVX)
+              28:   17(fvec3) Load 27(gl_ObjectRayOriginNV)
                               Store 26(v4) 28
-              31:   17(fvec3) Load 30(gl_ObjectRayDirectionNVX)
+              31:   17(fvec3) Load 30(gl_ObjectRayDirectionNV)
                               Store 29(v5) 31
-              36:   16(float) Load 35(gl_RayTminNVX)
+              36:   16(float) Load 35(gl_RayTminNV)
                               Store 33(v6) 36
-              39:   16(float) Load 38(gl_RayTmaxNVX)
+              39:   16(float) Load 38(gl_RayTmaxNV)
                               Store 37(v7) 39
               43:          40 Load 42(accNV)
-                              TraceNVX 43 44 45 46 47 44 49 48 51 52 54
+                              TraceNV 43 44 45 46 47 44 49 48 51 52 54
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.MissShader_Errors.rmiss.out b/Test/baseResults/spv.MissShader_Errors.rmiss.out
index bfc2f6c..52b412b 100644
--- a/Test/baseResults/spv.MissShader_Errors.rmiss.out
+++ b/Test/baseResults/spv.MissShader_Errors.rmiss.out
@@ -1,20 +1,20 @@
 spv.MissShader_Errors.rmiss
-ERROR: 0:3: 'hitAttributeNVX' : not supported in this stage: miss
+ERROR: 0:3: 'hitAttributeNV' : not supported in this stage: miss
 ERROR: 0:6: 'gl_PrimitiveID' : undeclared identifier 
 ERROR: 0:6: '=' :  cannot convert from ' temp float' to ' temp highp int'
 ERROR: 0:7: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
 ERROR: 0:7: '=' :  cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:8: 'gl_InstanceCustomIndexNVX' : undeclared identifier 
+ERROR: 0:8: 'gl_InstanceCustomIndexNV' : undeclared identifier 
 ERROR: 0:8: '=' :  cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:9: 'gl_ObjectToWorldNVX' : undeclared identifier 
+ERROR: 0:9: 'gl_ObjectToWorldNV' : undeclared identifier 
 ERROR: 0:9: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
-ERROR: 0:10: 'gl_WorldToObjectNVX' : undeclared identifier 
+ERROR: 0:10: 'gl_WorldToObjectNV' : undeclared identifier 
 ERROR: 0:10: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
-ERROR: 0:11: 'gl_HitTNVX' : undeclared identifier 
-ERROR: 0:12: 'gl_HitKindNVX' : undeclared identifier 
-ERROR: 0:13: 'reportIntersectionNVX' : no matching overloaded function found 
-ERROR: 0:14: 'ignoreIntersectionNVX' : no matching overloaded function found 
-ERROR: 0:15: 'terminateRayNVX' : no matching overloaded function found 
+ERROR: 0:11: 'gl_HitTNV' : undeclared identifier 
+ERROR: 0:12: 'gl_HitKindNV' : undeclared identifier 
+ERROR: 0:13: 'reportIntersectionNV' : no matching overloaded function found 
+ERROR: 0:14: 'ignoreIntersectionNV' : no matching overloaded function found 
+ERROR: 0:15: 'terminateRayNV' : no matching overloaded function found 
 ERROR: 16 compilation errors.  No code generated.
 
 
diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out
new file mode 100644
index 0000000..198d686
--- /dev/null
+++ b/Test/baseResults/spv.RayCallable.rcall.out
@@ -0,0 +1,73 @@
+spv.RayCallable.rcall
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 38
+
+                              Capability RayTracingNV
+                              Extension  "SPV_NV_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint CallableNV 4  "main" 11 14 19
+                              Source GLSL 460
+                              SourceExtension  "GL_NV_ray_tracing"
+                              Name 4  "main"
+                              Name 9  "id"
+                              Name 11  "gl_LaunchIDNV"
+                              Name 13  "size"
+                              Name 14  "gl_LaunchSizeNV"
+                              Name 17  "curFlags"
+                              Name 19  "gl_IncomingRayFlagsNV"
+                              Name 24  "dataBlock"
+                              MemberName 24(dataBlock) 0  "data1"
+                              Name 26  ""
+                              Name 37  "data0"
+                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
+                              Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+                              Decorate 19(gl_IncomingRayFlagsNV) BuiltIn IncomingRayFlagsNV
+                              Decorate 24(dataBlock) Block
+                              Decorate 26 Location 1
+                              Decorate 37(data0) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeVector 6(int) 3
+               8:             TypePointer Function 7(ivec3)
+              10:             TypePointer Input 7(ivec3)
+11(gl_LaunchIDNV):     10(ptr) Variable Input
+14(gl_LaunchSizeNV):     10(ptr) Variable Input
+              16:             TypePointer Function 6(int)
+              18:             TypePointer Input 6(int)
+19(gl_IncomingRayFlagsNV):     18(ptr) Variable Input
+              22:      6(int) Constant 1
+   24(dataBlock):             TypeStruct 6(int)
+              25:             TypePointer IncomingCallableDataNV 24(dataBlock)
+              26:     25(ptr) Variable IncomingCallableDataNV
+              27:             TypeInt 32 1
+              28:     27(int) Constant 0
+              29:      6(int) Constant 256
+              30:             TypePointer IncomingCallableDataNV 6(int)
+              32:      6(int) Constant 2
+              33:     27(int) Constant 1
+              34:             TypeFloat 32
+              35:             TypeVector 34(float) 4
+              36:             TypePointer CallableDataNV 35(fvec4)
+       37(data0):     36(ptr) Variable CallableDataNV
+         4(main):           2 Function None 3
+               5:             Label
+           9(id):      8(ptr) Variable Function
+        13(size):      8(ptr) Variable Function
+    17(curFlags):     16(ptr) Variable Function
+              12:    7(ivec3) Load 11(gl_LaunchIDNV)
+                              Store 9(id) 12
+              15:    7(ivec3) Load 14(gl_LaunchSizeNV)
+                              Store 13(size) 15
+              20:      6(int) Load 19(gl_IncomingRayFlagsNV)
+                              Store 17(curFlags) 20
+              21:      6(int) Load 17(curFlags)
+              23:      6(int) BitwiseAnd 21 22
+                              Store 17(curFlags) 23
+              31:     30(ptr) AccessChain 26 28
+                              Store 31 29
+                              ExecuteCallableNV 32 33
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.RayCallable_Errors.rcall.out b/Test/baseResults/spv.RayCallable_Errors.rcall.out
new file mode 100644
index 0000000..a807a57
--- /dev/null
+++ b/Test/baseResults/spv.RayCallable_Errors.rcall.out
@@ -0,0 +1,33 @@
+spv.RayCallable_Errors.rcall
+ERROR: 0:3: 'hitAttributeNV' : not supported in this stage: callable
+ERROR: 0:4: 'rayPayloadNV' : not supported in this stage: callable
+ERROR: 0:5: 'rayPayloadInNV' : not supported in this stage: callable
+ERROR: 0:9: 'gl_PrimitiveID' : undeclared identifier 
+ERROR: 0:9: '=' :  cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:10: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
+ERROR: 0:10: '=' :  cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:11: 'gl_InstanceCustomIndexNV' : undeclared identifier 
+ERROR: 0:11: '=' :  cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:12: 'gl_WorldRayOriginNV' : undeclared identifier 
+ERROR: 0:12: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:13: 'gl_WorldRayDirectionNV' : undeclared identifier 
+ERROR: 0:13: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:14: 'gl_ObjectRayOriginNV' : undeclared identifier 
+ERROR: 0:14: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:15: 'gl_ObjectRayDirectionNV' : undeclared identifier 
+ERROR: 0:15: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:16: 'gl_RayTminNV' : undeclared identifier 
+ERROR: 0:17: 'gl_RayTmaxNV' : undeclared identifier 
+ERROR: 0:18: 'gl_ObjectToWorldNV' : undeclared identifier 
+ERROR: 0:18: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:19: 'gl_WorldToObjectNV' : undeclared identifier 
+ERROR: 0:19: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:20: 'gl_HitTNV' : undeclared identifier 
+ERROR: 0:21: 'gl_HitKindNV' : undeclared identifier 
+ERROR: 0:22: 'reportIntersectionNV' : no matching overloaded function found 
+ERROR: 0:23: 'ignoreIntersectionNV' : no matching overloaded function found 
+ERROR: 0:24: 'terminateRayNV' : no matching overloaded function found 
+ERROR: 28 compilation errors.  No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out
index ecbee8a..d939acf 100644
--- a/Test/baseResults/spv.RayConstants.rgen.out
+++ b/Test/baseResults/spv.RayConstants.rgen.out
@@ -3,13 +3,13 @@
 // Generated by (magic number): 80007
 // Id's are bound by 27
 
-                              Capability RaytracingNVX
-                              Extension  "SPV_NVX_raytracing"
+                              Capability RayTracingNV
+                              Extension  "SPV_NV_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint RayGenerationNVX 4  "main"
+                              EntryPoint RayGenerationNV 4  "main"
                               Source GLSL 460
-                              SourceExtension  "GL_NVX_raytracing"
+                              SourceExtension  "GL_NV_ray_tracing"
                               Name 4  "main"
                               Name 8  "accNV"
                               Name 26  "payload"
@@ -18,7 +18,7 @@
                               Decorate 26(payload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeAccelerationStructureNVX
+               6:             TypeAccelerationStructureNV
                7:             TypePointer UniformConstant 6
         8(accNV):      7(ptr) Variable UniformConstant
               10:             TypeInt 32 0
@@ -36,11 +36,11 @@
               22:             TypeInt 32 1
               23:     22(int) Constant 1
               24:             TypeVector 14(float) 4
-              25:             TypePointer RayPayloadNVX 24(fvec4)
-     26(payload):     25(ptr) Variable RayPayloadNVX
+              25:             TypePointer RayPayloadNV 24(fvec4)
+     26(payload):     25(ptr) Variable RayPayloadNV
          4(main):           2 Function None 3
                5:             Label
                9:           6 Load 8(accNV)
-                              TraceNVX 9 11 12 13 13 12 17 18 20 21 23
+                              TraceNV 9 11 12 13 13 12 17 18 20 21 23
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index ad1ba7c..db6ecfc 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -3,19 +3,19 @@
 // Generated by (magic number): 80007
 // Id's are bound by 60
 
-                              Capability RaytracingNVX
-                              Extension  "SPV_NVX_raytracing"
+                              Capability RayTracingNV
+                              Extension  "SPV_NV_ray_tracing"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint RayGenerationNVX 4  "main" 11 21
+                              EntryPoint RayGenerationNV 4  "main" 11 21
                               Source GLSL 460
-                              SourceExtension  "GL_NVX_raytracing"
+                              SourceExtension  "GL_NV_ray_tracing"
                               Name 4  "main"
                               Name 8  "lx"
-                              Name 11  "gl_LaunchIDNVX"
+                              Name 11  "gl_LaunchIDNV"
                               Name 16  "ly"
                               Name 20  "sx"
-                              Name 21  "gl_LaunchSizeNVX"
+                              Name 21  "gl_LaunchSizeNV"
                               Name 24  "sy"
                               Name 29  "accNV"
                               Name 48  "block"
@@ -23,8 +23,8 @@
                               MemberName 48(block) 1  "pad"
                               Name 50  ""
                               Name 56  "payload"
-                              Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX
-                              Decorate 21(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX
+                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
+                              Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
                               Decorate 29(accNV) DescriptorSet 0
                               Decorate 29(accNV) Binding 0
                               Decorate 46 ArrayStride 4
@@ -36,14 +36,14 @@
                3:             TypeFunction 2
                6:             TypeInt 32 0
                7:             TypePointer Function 6(int)
-               9:             TypeVector 6(int) 2
-              10:             TypePointer Input 9(ivec2)
-11(gl_LaunchIDNVX):     10(ptr) Variable Input
+               9:             TypeVector 6(int) 3
+              10:             TypePointer Input 9(ivec3)
+11(gl_LaunchIDNV):     10(ptr) Variable Input
               12:      6(int) Constant 0
               13:             TypePointer Input 6(int)
               17:      6(int) Constant 1
-21(gl_LaunchSizeNVX):     10(ptr) Variable Input
-              27:             TypeAccelerationStructureNVX
+21(gl_LaunchSizeNV):     10(ptr) Variable Input
+              27:             TypeAccelerationStructureNV
               28:             TypePointer UniformConstant 27
        29(accNV):     28(ptr) Variable UniformConstant
               35:             TypeFloat 32
@@ -60,30 +60,30 @@
               46:             TypeArray 35(float) 45
               47:             TypeVector 35(float) 4
        48(block):             TypeStruct 46 47(fvec4)
-              49:             TypePointer ShaderRecordBufferNVX 48(block)
-              50:     49(ptr) Variable ShaderRecordBufferNVX
+              49:             TypePointer ShaderRecordBufferNV 48(block)
+              50:     49(ptr) Variable ShaderRecordBufferNV
               51:     43(int) Constant 0
               52:     43(int) Constant 3
-              53:             TypePointer ShaderRecordBufferNVX 35(float)
-              55:             TypePointer RayPayloadNVX 47(fvec4)
-     56(payload):     55(ptr) Variable RayPayloadNVX
-              58:             TypePointer ShaderRecordBufferNVX 47(fvec4)
+              53:             TypePointer ShaderRecordBufferNV 35(float)
+              55:             TypePointer RayPayloadNV 47(fvec4)
+     56(payload):     55(ptr) Variable RayPayloadNV
+              58:             TypePointer ShaderRecordBufferNV 47(fvec4)
          4(main):           2 Function None 3
                5:             Label
            8(lx):      7(ptr) Variable Function
           16(ly):      7(ptr) Variable Function
           20(sx):      7(ptr) Variable Function
           24(sy):      7(ptr) Variable Function
-              14:     13(ptr) AccessChain 11(gl_LaunchIDNVX) 12
+              14:     13(ptr) AccessChain 11(gl_LaunchIDNV) 12
               15:      6(int) Load 14
                               Store 8(lx) 15
-              18:     13(ptr) AccessChain 11(gl_LaunchIDNVX) 17
+              18:     13(ptr) AccessChain 11(gl_LaunchIDNV) 17
               19:      6(int) Load 18
                               Store 16(ly) 19
-              22:     13(ptr) AccessChain 21(gl_LaunchSizeNVX) 12
+              22:     13(ptr) AccessChain 21(gl_LaunchSizeNV) 12
               23:      6(int) Load 22
                               Store 20(sx) 23
-              25:     13(ptr) AccessChain 21(gl_LaunchSizeNVX) 17
+              25:     13(ptr) AccessChain 21(gl_LaunchSizeNV) 17
               26:      6(int) Load 25
                               Store 24(sy) 26
               30:          27 Load 29(accNV)
@@ -91,7 +91,7 @@
               32:      6(int) Load 16(ly)
               33:      6(int) Load 20(sx)
               34:      6(int) Load 24(sy)
-                              TraceNVX 30 31 32 33 34 12 38 39 41 42 44
+                              TraceNV 30 31 32 33 34 12 38 39 41 42 44
               54:     53(ptr) AccessChain 50 51 52
                               Store 54 40
               57:   47(fvec4) Load 56(payload)
diff --git a/Test/baseResults/spv.RayGenShader_Errors.rgen.out b/Test/baseResults/spv.RayGenShader_Errors.rgen.out
index 7d9e2c2..27d51c2 100644
--- a/Test/baseResults/spv.RayGenShader_Errors.rgen.out
+++ b/Test/baseResults/spv.RayGenShader_Errors.rgen.out
@@ -1,39 +1,39 @@
 spv.RayGenShader_Errors.rgen
-ERROR: 0:3: 'hitAttributeNVX' : not supported in this stage: ray-generation
-ERROR: 0:4: 'rayPayloadInNVX' : not supported in this stage: ray-generation
-ERROR: 0:5: 'shaderRecordNVX' : can only be used with a buffer 
-ERROR: 0:9: 'binding' : cannot be used with shaderRecordNVX 
-ERROR: 0:12: 'set' : cannot be used with shaderRecordNVX 
-ERROR: 0:23: 'accelerationStructureNVX' : accelerationStructureNVX can only be used in uniform variables or function parameters: a
-ERROR: 0:23: '=' :  cannot convert from ' const int' to ' temp accelerationStructureNVX'
+ERROR: 0:3: 'hitAttributeNV' : not supported in this stage: ray-generation
+ERROR: 0:4: 'rayPayloadInNV' : not supported in this stage: ray-generation
+ERROR: 0:5: 'shaderRecordNV' : can only be used with a buffer 
+ERROR: 0:9: 'binding' : cannot be used with shaderRecordNV 
+ERROR: 0:12: 'set' : cannot be used with shaderRecordNV 
+ERROR: 0:23: 'accelerationStructureNV' : accelerationStructureNV can only be used in uniform variables or function parameters: a
+ERROR: 0:23: '=' :  cannot convert from ' const int' to ' temp accelerationStructureNV'
 ERROR: 0:24: 'gl_PrimitiveID' : undeclared identifier 
 ERROR: 0:24: '=' :  cannot convert from ' temp float' to ' temp highp int'
 ERROR: 0:25: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
 ERROR: 0:25: '=' :  cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:26: 'gl_InstanceCustomIndexNVX' : undeclared identifier 
+ERROR: 0:26: 'gl_InstanceCustomIndexNV' : undeclared identifier 
 ERROR: 0:26: '=' :  cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:27: 'gl_WorldRayOriginNVX' : undeclared identifier 
+ERROR: 0:27: 'gl_WorldRayOriginNV' : undeclared identifier 
 ERROR: 0:27: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:28: 'gl_WorldRayDirectionNVX' : undeclared identifier 
+ERROR: 0:28: 'gl_WorldRayDirectionNV' : undeclared identifier 
 ERROR: 0:28: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:29: 'gl_ObjectRayOriginNVX' : undeclared identifier 
+ERROR: 0:29: 'gl_ObjectRayOriginNV' : undeclared identifier 
 ERROR: 0:29: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:30: 'gl_ObjectRayDirectionNVX' : undeclared identifier 
+ERROR: 0:30: 'gl_ObjectRayDirectionNV' : undeclared identifier 
 ERROR: 0:30: '=' :  cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:31: 'gl_RayTminNVX' : undeclared identifier 
-ERROR: 0:32: 'gl_RayTmaxNVX' : undeclared identifier 
-ERROR: 0:33: 'gl_ObjectToWorldNVX' : undeclared identifier 
+ERROR: 0:31: 'gl_RayTminNV' : undeclared identifier 
+ERROR: 0:32: 'gl_RayTmaxNV' : undeclared identifier 
+ERROR: 0:33: 'gl_ObjectToWorldNV' : undeclared identifier 
 ERROR: 0:33: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
-ERROR: 0:34: 'gl_WorldToObjectNVX' : undeclared identifier 
+ERROR: 0:34: 'gl_WorldToObjectNV' : undeclared identifier 
 ERROR: 0:34: '=' :  cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
-ERROR: 0:35: 'gl_HitTNVX' : undeclared identifier 
-ERROR: 0:36: 'gl_HitKindNVX' : undeclared identifier 
-ERROR: 0:37: 'reportIntersectionNVX' : no matching overloaded function found 
-ERROR: 0:38: 'ignoreIntersectionNVX' : no matching overloaded function found 
-ERROR: 0:39: 'terminateRayNVX' : no matching overloaded function found 
+ERROR: 0:35: 'gl_HitTNV' : undeclared identifier 
+ERROR: 0:36: 'gl_HitKindNV' : undeclared identifier 
+ERROR: 0:37: 'reportIntersectionNV' : no matching overloaded function found 
+ERROR: 0:38: 'ignoreIntersectionNV' : no matching overloaded function found 
+ERROR: 0:39: 'terminateRayNV' : no matching overloaded function found 
 ERROR: 32 compilation errors.  No code generated.
 
 
-ERROR: Linking ray-generation stage: Only one shaderRecordNVX buffer block is allowed per stage
+ERROR: Linking ray-generation stage: Only one shaderRecordNV buffer block is allowed per stage
 
 SPIR-V is not generated for failed compile or link
diff --git a/Test/spv.AnyHitShader.rahit b/Test/spv.AnyHitShader.rahit
index 88e5601..c03cc2f 100644
--- a/Test/spv.AnyHitShader.rahit
+++ b/Test/spv.AnyHitShader.rahit
@@ -1,26 +1,26 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-layout(location = 1) rayPayloadInNVX vec4 incomingPayload;
+#extension GL_NV_ray_tracing : enable
+layout(location = 1) rayPayloadInNV vec4 incomingPayload;
 void main()
 {
-	uvec2 v0 = gl_LaunchIDNVX;
-	uvec2 v1 = gl_LaunchSizeNVX;
+	uvec3 v0 = gl_LaunchIDNV;
+	uvec3 v1 = gl_LaunchSizeNV;
 	int v2 = gl_PrimitiveID;
 	int v3 = gl_InstanceID;
-	int v4 = gl_InstanceCustomIndexNVX;
-	vec3 v5 = gl_WorldRayOriginNVX;
-	vec3 v6 = gl_WorldRayDirectionNVX;
-	vec3 v7 = gl_ObjectRayOriginNVX;
-	vec3 v8 = gl_ObjectRayDirectionNVX;
-	float v9 = gl_RayTminNVX;
-	float v10 = gl_RayTmaxNVX;
-	float v11 = gl_HitTNVX;
-	uint v12 = gl_HitKindNVX;
-	mat4x3 v13 = gl_ObjectToWorldNVX;
-	mat4x3 v14 = gl_WorldToObjectNVX;
+	int v4 = gl_InstanceCustomIndexNV;
+	vec3 v5 = gl_WorldRayOriginNV;
+	vec3 v6 = gl_WorldRayDirectionNV;
+	vec3 v7 = gl_ObjectRayOriginNV;
+	vec3 v8 = gl_ObjectRayDirectionNV;
+	float v9 = gl_RayTminNV;
+	float v10 = gl_RayTmaxNV;
+	float v11 = gl_HitTNV;
+	uint v12 = gl_HitKindNV;
+	mat4x3 v13 = gl_ObjectToWorldNV;
+	mat4x3 v14 = gl_WorldToObjectNV;
 	incomingPayload = vec4(0.5f);
 	if (v2 == 1)
-	    ignoreIntersectionNVX();
+	    ignoreIntersectionNV();
 	else
-	    terminateRayNVX();
+	    terminateRayNV();
 }
diff --git a/Test/spv.AnyHitShader_Errors.rahit b/Test/spv.AnyHitShader_Errors.rahit
index a0f72e6..952461e 100644
--- a/Test/spv.AnyHitShader_Errors.rahit
+++ b/Test/spv.AnyHitShader_Errors.rahit
@@ -1,11 +1,11 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-hitAttributeNVX vec4 payload;                               
-layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV;
+#extension GL_NV_ray_tracing : enable
+hitAttributeNV vec4 payload;                               
+layout(binding = 0, set = 0) uniform accelerationStructureNV accNV;
 
 void main()
 {
-    payload.x = 1.0f;                                       // ERROR, cannot write to hitattributeNVX in stage
-    reportIntersectionNVX(1.0, 1U);                         // ERROR, unsupported builtin in stage
-    traceNVX(accNV, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported builtin in stage
+    payload.x = 1.0f;                                       // ERROR, cannot write to hitattributeNV in stage
+    reportIntersectionNV(1.0, 1U);                          // ERROR, unsupported builtin in stage
+    traceNV(accNV, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported builtin in stage
 }
diff --git a/Test/spv.ClosestHitShader.rchit b/Test/spv.ClosestHitShader.rchit
index 498d0d8..7a09b80 100644
--- a/Test/spv.ClosestHitShader.rchit
+++ b/Test/spv.ClosestHitShader.rchit
@@ -1,24 +1,24 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV;
-layout(location = 0) rayPayloadNVX vec4 localPayload;
-layout(location = 1) rayPayloadInNVX vec4 incomingPayload;
+#extension GL_NV_ray_tracing : enable
+layout(binding = 0, set = 0) uniform accelerationStructureNV accNV;
+layout(location = 0) rayPayloadNV vec4 localPayload;
+layout(location = 1) rayPayloadInNV vec4 incomingPayload;
 void main()
 {
-	uvec2 v0 = gl_LaunchIDNVX;
-	uvec2 v1 = gl_LaunchSizeNVX;
+	uvec3 v0 = gl_LaunchIDNV;
+	uvec3 v1 = gl_LaunchSizeNV;
 	int v2 = gl_PrimitiveID;
 	int v3 = gl_InstanceID;
-	int v4 = gl_InstanceCustomIndexNVX;
-	vec3 v5 = gl_WorldRayOriginNVX;
-	vec3 v6 = gl_WorldRayDirectionNVX;
-	vec3 v7 = gl_ObjectRayOriginNVX;
-	vec3 v8 = gl_ObjectRayDirectionNVX;
-	float v9 = gl_RayTminNVX;
-	float v10 = gl_RayTmaxNVX;
-	float v11 = gl_HitTNVX;
-	uint v12 = gl_HitKindNVX;
-	mat4x3 v13 = gl_ObjectToWorldNVX;
-	mat4x3 v14 = gl_WorldToObjectNVX;
-	traceNVX(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
+	int v4 = gl_InstanceCustomIndexNV;
+	vec3 v5 = gl_WorldRayOriginNV;
+	vec3 v6 = gl_WorldRayDirectionNV;
+	vec3 v7 = gl_ObjectRayOriginNV;
+	vec3 v8 = gl_ObjectRayDirectionNV;
+	float v9 = gl_RayTminNV;
+	float v10 = gl_RayTmaxNV;
+	float v11 = gl_HitTNV;
+	uint v12 = gl_HitKindNV;
+	mat4x3 v13 = gl_ObjectToWorldNV;
+	mat4x3 v14 = gl_WorldToObjectNV;
+	traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
 }
diff --git a/Test/spv.ClosestHitShader_Errors.rchit b/Test/spv.ClosestHitShader_Errors.rchit
index 6c1f6e4..b7b421e 100644
--- a/Test/spv.ClosestHitShader_Errors.rchit
+++ b/Test/spv.ClosestHitShader_Errors.rchit
@@ -1,12 +1,12 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-hitAttributeNVX vec4 payload;                               
-layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV;
+#extension GL_NV_ray_tracing : enable
+hitAttributeNV vec4 payload;
+layout(binding = 0, set = 0) uniform accelerationStructureNV accNV;
 
 void main()
 {
-    payload.x = 1.0f;                                       // ERROR, cannot write to hitattributeNVX in stage
-    reportIntersectionNVX(1.0, 1U);                         // ERROR, unsupported builtin in stage 
-    terminateRayNVX();
-    ignoreIntersectionNVX();
+    payload.x = 1.0f;                                       // ERROR, cannot write to hitattributeNV in stage
+    reportIntersectionNV(1.0, 1U);                          // ERROR, unsupported builtin in stage 
+    terminateRayNV();
+    ignoreIntersectionNV();
 }
diff --git a/Test/spv.IntersectShader.rint b/Test/spv.IntersectShader.rint
index 226ff06..85ec319 100644
--- a/Test/spv.IntersectShader.rint
+++ b/Test/spv.IntersectShader.rint
@@ -1,21 +1,21 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-hitAttributeNVX vec4 iAttr;
+#extension GL_NV_ray_tracing : enable
+hitAttributeNV vec4 iAttr;
 void main()
 {
-	uvec2 v0 = gl_LaunchIDNVX;
-	uvec2 v1 = gl_LaunchSizeNVX;
+	uvec3 v0 = gl_LaunchIDNV;
+	uvec3 v1 = gl_LaunchSizeNV;
 	int v2 = gl_PrimitiveID;
 	int v3 = gl_InstanceID;
-	int v4 = gl_InstanceCustomIndexNVX;
-	vec3 v5 = gl_WorldRayOriginNVX;
-	vec3 v6 = gl_WorldRayDirectionNVX;
-	vec3 v7 = gl_ObjectRayOriginNVX;
-	vec3 v8 = gl_ObjectRayDirectionNVX;
-	float v9 = gl_RayTminNVX;
-	float v10 = gl_RayTmaxNVX;
-	mat4x3 v11 = gl_ObjectToWorldNVX;
-	mat4x3 v12 = gl_WorldToObjectNVX;
+	int v4 = gl_InstanceCustomIndexNV;
+	vec3 v5 = gl_WorldRayOriginNV;
+	vec3 v6 = gl_WorldRayDirectionNV;
+	vec3 v7 = gl_ObjectRayOriginNV;
+	vec3 v8 = gl_ObjectRayDirectionNV;
+	float v9 = gl_RayTminNV;
+	float v10 = gl_RayTmaxNV;
+	mat4x3 v11 = gl_ObjectToWorldNV;
+	mat4x3 v12 = gl_WorldToObjectNV;
 	iAttr = vec4(0.5f,0.5f,0.0f,1.0f);
-	reportIntersectionNVX(0.5, 1U);
+	reportIntersectionNV(0.5, 1U);
 }
diff --git a/Test/spv.IntersectShader_Errors.rint b/Test/spv.IntersectShader_Errors.rint
index 90278d8..fbc6846 100644
--- a/Test/spv.IntersectShader_Errors.rint
+++ b/Test/spv.IntersectShader_Errors.rint
@@ -1,11 +1,11 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-rayPayloadInNVX vec4 payloadIn;                             // ERROR, rayPayloadIn unsupported in this stage
-rayPayloadNVX vec4 payload;                                 // ERROR, rayPayload unsuppoted in this stage
-uniform accelerationStructureNVX accNV;
+#extension GL_NV_ray_tracing : enable
+rayPayloadInNV vec4 payloadIn;                             // ERROR, rayPayloadIn unsupported in this stage
+rayPayloadNV vec4 payload;                                 // ERROR, rayPayload unsuppoted in this stage
+uniform accelerationStructureNV accNV;
 void main()
 {
-    float e12 = gl_HitTNVX;                                 // ERROR, unsupported builtin in stage
-    float e13 = gl_HitKindNVX;                              // ERROR, unsupported builtin in stage
-    traceNVX(accNV, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported
+    float e12 = gl_HitTNV;                                 // ERROR, unsupported builtin in stage
+    float e13 = gl_HitKindNV;                              // ERROR, unsupported builtin in stage
+    traceNV(accNV, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported
 }
diff --git a/Test/spv.MissShader.rmiss b/Test/spv.MissShader.rmiss
index 6daaa01..06113de 100644
--- a/Test/spv.MissShader.rmiss
+++ b/Test/spv.MissShader.rmiss
@@ -1,17 +1,17 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV;
-layout(location = 0) rayPayloadNVX vec4 localPayload;
-layout(location = 1) rayPayloadInNVX vec4 incomingPayload;
+#extension GL_NV_ray_tracing : enable
+layout(binding = 0, set = 0) uniform accelerationStructureNV accNV;
+layout(location = 0) rayPayloadNV vec4 localPayload;
+layout(location = 1) rayPayloadInNV vec4 incomingPayload;
 void main()
 {
-	uvec2 v0 = gl_LaunchIDNVX;
-	uvec2 v1 = gl_LaunchSizeNVX;
-	vec3 v2 = gl_WorldRayOriginNVX;
-	vec3 v3 = gl_WorldRayDirectionNVX;
-	vec3 v4 = gl_ObjectRayOriginNVX;
-	vec3 v5 = gl_ObjectRayDirectionNVX;
-	float v6 = gl_RayTminNVX;
-	float v7 = gl_RayTmaxNVX;
-	traceNVX(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
+	uvec3 v0 = gl_LaunchIDNV;
+	uvec3 v1 = gl_LaunchSizeNV;
+	vec3 v2 = gl_WorldRayOriginNV;
+	vec3 v3 = gl_WorldRayDirectionNV;
+	vec3 v4 = gl_ObjectRayOriginNV;
+	vec3 v5 = gl_ObjectRayDirectionNV;
+	float v6 = gl_RayTminNV;
+	float v7 = gl_RayTmaxNV;
+	traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
 }
diff --git a/Test/spv.MissShader_Errors.rmiss b/Test/spv.MissShader_Errors.rmiss
index a45cb8d..a7f7c59 100644
--- a/Test/spv.MissShader_Errors.rmiss
+++ b/Test/spv.MissShader_Errors.rmiss
@@ -1,16 +1,16 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-hitAttributeNVX vec4 payload;                               // ERROR, hitattributeNVX unsupported in this stage 
+#extension GL_NV_ray_tracing : enable
+hitAttributeNV vec4 payload;                               // ERROR, hitattributeNV unsupported in this stage 
 void main()
 {
-    int e0 = gl_PrimitiveID;                                // ERROR, unsupported builtin in stage
-    int e1 = gl_InstanceID;                                 // ERROR, unsupported builtin in stage
-    int e3 = gl_InstanceCustomIndexNVX;                     // ERROR, unsupported builtin in stage
-    mat4x3 e10 = gl_ObjectToWorldNVX;                       // ERROR, unsupported builtin in stage
-    mat4x3 e11 = gl_WorldToObjectNVX;                       // ERROR, unsupported builtin in stage
-    float e12 = gl_HitTNVX;                                 // ERROR, unsupported builtin in stage
-    float e13 = gl_HitKindNVX;                              // ERROR, unsupported builtin in stage
-    reportIntersectionNVX(1.0, 1U);                         // ERROR, unsupported builtin in stage
-    ignoreIntersectionNVX();                                // ERROR, unsupported builtin in stage
-    terminateRayNVX();                                      // ERROR, unsupported builtin in stage
+    int e0 = gl_PrimitiveID;                               // ERROR, unsupported builtin in stage
+    int e1 = gl_InstanceID;                                // ERROR, unsupported builtin in stage
+    int e3 = gl_InstanceCustomIndexNV;                     // ERROR, unsupported builtin in stage
+    mat4x3 e10 = gl_ObjectToWorldNV;                       // ERROR, unsupported builtin in stage
+    mat4x3 e11 = gl_WorldToObjectNV;                       // ERROR, unsupported builtin in stage
+    float e12 = gl_HitTNV;                                 // ERROR, unsupported builtin in stage
+    float e13 = gl_HitKindNV;                              // ERROR, unsupported builtin in stage
+    reportIntersectionNV(1.0, 1U);                         // ERROR, unsupported builtin in stage
+    ignoreIntersectionNV();                                // ERROR, unsupported builtin in stage
+    terminateRayNV();                                      // ERROR, unsupported builtin in stage
 }
diff --git a/Test/spv.RayCallable.rcall b/Test/spv.RayCallable.rcall
new file mode 100644
index 0000000..12f2884
--- /dev/null
+++ b/Test/spv.RayCallable.rcall
@@ -0,0 +1,15 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+layout(location = 0) callableDataNV vec4 data0;
+layout(location = 1) callableDataInNV dataBlock {
+	uint data1;
+};
+void main()
+{
+	uvec3 id = gl_LaunchIDNV;
+	uvec3 size = gl_LaunchSizeNV;
+    uint curFlags = gl_IncomingRayFlagsNV;
+	curFlags = curFlags & gl_RayFlagsOpaqueNV;
+	data1 = 256U;
+	executeCallableNV(2,1);
+}
diff --git a/Test/spv.RayCallable_Errors.rcall b/Test/spv.RayCallable_Errors.rcall
new file mode 100644
index 0000000..7339682
--- /dev/null
+++ b/Test/spv.RayCallable_Errors.rcall
@@ -0,0 +1,25 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+hitAttributeNV vec4 hitattr;                                // ERROR, hitattributeNV unsupported in this stage 
+rayPayloadNV vec4 payload;                                  // ERROR, rayPayloadNV unsupported in this stage
+rayPayloadInNV vec4 payloadIn;                              // ERROR, rayPayloadInNV unsupported in this stage
+
+void main()
+{
+    int e0 = gl_PrimitiveID;                                // ERROR, unsupported builtin in stage
+    int e1 = gl_InstanceID;                                 // ERROR, unsupported builtin in stage
+    int e3 = gl_InstanceCustomIndexNV;                      // ERROR, unsupported builtin in stage
+    vec3 e4 = gl_WorldRayOriginNV;                          // ERROR, unsupported builtin in stage
+    vec3 e5 = gl_WorldRayDirectionNV;                       // ERROR, unsupported builtin in stage
+    vec3 e6 = gl_ObjectRayOriginNV;                         // ERROR, unsupported builtin in stage
+    vec3 e7 = gl_ObjectRayDirectionNV;                      // ERROR, unsupported builtin in stage
+    float e8 = gl_RayTminNV;                                // ERROR, unsupported builtin in stage
+    float e9 = gl_RayTmaxNV;                                // ERROR, unsupported builtin in stage
+    mat4x3 e10 = gl_ObjectToWorldNV;                        // ERROR, unsupported builtin in stage
+    mat4x3 e11 = gl_WorldToObjectNV;                        // ERROR, unsupported builtin in stage
+    float e12 = gl_HitTNV;                                  // ERROR, unsupported builtin in stage
+    float e13 = gl_HitKindNV;                               // ERROR, unsupported builtin in stage
+    reportIntersectionNV(1.0, 1U);                          // ERROR, unsupported builtin in stage
+    ignoreIntersectionNV();                                 // ERROR, unsupported builtin in stage
+    terminateRayNV();                                       // ERROR, unsupported builtin in stage
+}
diff --git a/Test/spv.RayConstants.rgen b/Test/spv.RayConstants.rgen
index 61ff39e..b8ff5d5 100644
--- a/Test/spv.RayConstants.rgen
+++ b/Test/spv.RayConstants.rgen
@@ -1,15 +1,15 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV;
-layout(location = 0) rayPayloadNVX vec4 payload;
+#extension GL_NV_ray_tracing : enable
+layout(binding = 0, set = 0) uniform accelerationStructureNV accNV;
+layout(location = 0) rayPayloadNV vec4 payload;
 void main()
 {
-    const uint rayFlags = gl_RayFlagsNoneNVX | gl_RayFlagsOpaqueNVX |
-                          gl_RayFlagsNoOpaqueNVX | gl_RayFlagsTerminateOnFirstHitNVX |
-                          gl_RayFlagsSkipClosestHitShaderNVX | gl_RayFlagsCullBackFacingTrianglesNVX |
-                          gl_RayFlagsCullFrontFacingTrianglesNVX | gl_RayFlagsCullOpaqueNVX | 
-                          gl_RayFlagsCullNoOpaqueNVX;
+    const uint rayFlags = gl_RayFlagsNoneNV | gl_RayFlagsOpaqueNV |
+                          gl_RayFlagsNoOpaqueNV | gl_RayFlagsTerminateOnFirstHitNV |
+                          gl_RayFlagsSkipClosestHitShaderNV | gl_RayFlagsCullBackFacingTrianglesNV |
+                          gl_RayFlagsCullFrontFacingTrianglesNV | gl_RayFlagsCullOpaqueNV | 
+                          gl_RayFlagsCullNoOpaqueNV;
 
     const int payloadId = 1;
-    traceNVX(accNV, rayFlags, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, payloadId);
+    traceNV(accNV, rayFlags, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, payloadId);
 }
diff --git a/Test/spv.RayGenShader.rgen b/Test/spv.RayGenShader.rgen
index 19f16ce..68f92b2 100644
--- a/Test/spv.RayGenShader.rgen
+++ b/Test/spv.RayGenShader.rgen
@@ -1,19 +1,19 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV;
-layout(location = 0) rayPayloadNVX vec4 payload;
-layout(shaderRecordNVX) buffer block
+#extension GL_NV_ray_tracing : enable
+layout(binding = 0, set = 0) uniform accelerationStructureNV accNV;
+layout(location = 0) rayPayloadNV vec4 payload;
+layout(shaderRecordNV) buffer block
 {
 	float arr[4];
 	vec4 pad;
 };
 void main()
 {
-    uint lx = gl_LaunchIDNVX.x;
-    uint ly = gl_LaunchIDNVX.y;
-    uint sx = gl_LaunchSizeNVX.x;
-    uint sy = gl_LaunchSizeNVX.y;
-    traceNVX(accNV, lx, ly, sx, sy, 0u, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 1);
+    uint lx = gl_LaunchIDNV.x;
+    uint ly = gl_LaunchIDNV.y;
+    uint sx = gl_LaunchSizeNV.x;
+    uint sy = gl_LaunchSizeNV.y;
+    traceNV(accNV, lx, ly, sx, sy, 0u, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 1);
     arr[3] = 1.0f;
     pad = payload;
 }
diff --git a/Test/spv.RayGenShader_Errors.rgen b/Test/spv.RayGenShader_Errors.rgen
index 73175b8..d61ac21 100644
--- a/Test/spv.RayGenShader_Errors.rgen
+++ b/Test/spv.RayGenShader_Errors.rgen
@@ -1,40 +1,40 @@
 #version 460
-#extension GL_NVX_raytracing : enable
-hitAttributeNVX vec4 payload;                               // ERROR, hitattributeNVX unsupported in this stage 
-rayPayloadInNVX vec4 payloadIn;                             // ERROR, rayPayloadIn unsupported in this stage
-layout(shaderRecordNVX) uniform ublock                      // ERROR, shaderRecordNVX unsupported on uniform blocks
+#extension GL_NV_ray_tracing : enable
+hitAttributeNV vec4 payload;                                // ERROR, hitattributeNV unsupported in this stage 
+rayPayloadInNV vec4 payloadIn;                              // ERROR, rayPayloadIn unsupported in this stage
+layout(shaderRecordNV) uniform ublock                       // ERROR, shaderRecordNV unsupported on uniform blocks
 {
     float a;
 };
-layout(binding = 0, shaderRecordNVX) buffer bblock {        // ERROR, binding unsupported on shaderRecordNVX blocks
+layout(binding = 0, shaderRecordNV) buffer bblock {         // ERROR, binding unsupported on shaderRecordNV blocks
     float b;
 };
-layout(set = 0, shaderRecordNVX) buffer bblock2 {           // ERROR, set unsupported on shaderRecordNVX blocks
+layout(set = 0, shaderRecordNV) buffer bblock2 {            // ERROR, set unsupported on shaderRecordNV blocks
     float c;
 };
-layout(shaderRecordNVX) buffer bblock3 {
+layout(shaderRecordNV) buffer bblock3 {
     float d;
 };
-layout(shaderRecordNVX) buffer bblock4 {                    // ERROR, cannot have more than one shaderRecordNVX block
+layout(shaderRecordNV) buffer bblock4 {                     // ERROR, cannot have more than one shaderRecordNVX block
     float e;
 };
 void main()
 {
-    accelerationStructureNVX a = 0;
+    accelerationStructureNV a = 0;
     int e0 = gl_PrimitiveID;                                // ERROR, unsupported builtin in stage
     int e1 = gl_InstanceID;                                 // ERROR, unsupported builtin in stage
-    int e3 = gl_InstanceCustomIndexNVX;                     // ERROR, unsupported builtin in stage
-    vec3 e4 = gl_WorldRayOriginNVX;                         // ERROR, unsupported builtin in stage
-    vec3 e5 = gl_WorldRayDirectionNVX;                      // ERROR, unsupported builtin in stage
-    vec3 e6 = gl_ObjectRayOriginNVX;                        // ERROR, unsupported builtin in stage
-    vec3 e7 = gl_ObjectRayDirectionNVX;                     // ERROR, unsupported builtin in stage
-    float e8 = gl_RayTminNVX;                               // ERROR, unsupported builtin in stage
-    float e9 = gl_RayTmaxNVX;                               // ERROR, unsupported builtin in stage
-    mat4x3 e10 = gl_ObjectToWorldNVX;                       // ERROR, unsupported builtin in stage
-    mat4x3 e11 = gl_WorldToObjectNVX;                       // ERROR, unsupported builtin in stage
-    float e12 = gl_HitTNVX;                                 // ERROR, unsupported builtin in stage
-    float e13 = gl_HitKindNVX;                              // ERROR, unsupported builtin in stage
-    reportIntersectionNVX(1.0, 1U);                         // ERROR, unsupported builtin in stage
-    ignoreIntersectionNVX();                                // ERROR, unsupported builtin in stage
-    terminateRayNVX();                                      // ERROR, unsupported builtin in stage
+    int e3 = gl_InstanceCustomIndexNV;                      // ERROR, unsupported builtin in stage
+    vec3 e4 = gl_WorldRayOriginNV;                          // ERROR, unsupported builtin in stage
+    vec3 e5 = gl_WorldRayDirectionNV;                       // ERROR, unsupported builtin in stage
+    vec3 e6 = gl_ObjectRayOriginNV;                         // ERROR, unsupported builtin in stage
+    vec3 e7 = gl_ObjectRayDirectionNV;                      // ERROR, unsupported builtin in stage
+    float e8 = gl_RayTminNV;                                // ERROR, unsupported builtin in stage
+    float e9 = gl_RayTmaxNV;                                // ERROR, unsupported builtin in stage
+    mat4x3 e10 = gl_ObjectToWorldNV;                        // ERROR, unsupported builtin in stage
+    mat4x3 e11 = gl_WorldToObjectNV;                        // ERROR, unsupported builtin in stage
+    float e12 = gl_HitTNV;                                  // ERROR, unsupported builtin in stage
+    float e13 = gl_HitKindNV;                               // ERROR, unsupported builtin in stage
+    reportIntersectionNV(1.0, 1U);                          // ERROR, unsupported builtin in stage
+    ignoreIntersectionNV();                                 // ERROR, unsupported builtin in stage
+    terminateRayNV();                                       // ERROR, unsupported builtin in stage
 }
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index fc3a19f..4a7c056 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -96,6 +96,8 @@
     EvqPayloadNV,
     EvqPayloadInNV,
     EvqHitAttrNV,
+    EvqCallableDataNV,
+    EvqCallableDataInNV,
 #endif
 
     // parameters
@@ -253,6 +255,7 @@
     EbvHitKindNV,
     EbvObjectToWorldNV,
     EbvWorldToObjectNV,
+    EbvIncomingRayFlagsNV,
     EbvBaryCoordNV,
     EbvBaryCoordNoPerspNV,
     EbvTaskCountNV,
@@ -310,9 +313,11 @@
     case EvqFragColor:      return "fragColor";      break;
     case EvqFragDepth:      return "gl_FragDepth";   break;
 #ifdef NV_EXTENSIONS
-    case EvqPayloadNV:      return "rayPayloadNVX";   break;
-    case EvqPayloadInNV:    return "rayPayloadInNVX"; break;
-    case EvqHitAttrNV:      return "hitAttributeNVX"; break;
+    case EvqPayloadNV:        return "rayPayloadNV";     break;
+    case EvqPayloadInNV:      return "rayPayloadInNV";   break;
+    case EvqHitAttrNV:        return "hitAttributeNV";   break;
+    case EvqCallableDataNV:   return "callableDataNV";   break;
+    case EvqCallableDataInNV: return "callableDataInNV"; break;
 #endif
     default:                return "unknown qualifier";
     }
@@ -408,19 +413,21 @@
     case EbvFragFullyCoveredNV:         return "FragFullyCoveredNV";
     case EbvFragmentSizeNV:             return "FragmentSizeNV";
     case EbvInvocationsPerPixelNV:      return "InvocationsPerPixelNV";
-    case EbvLaunchIdNV:                 return "LaunchIdNVX";
-    case EbvLaunchSizeNV:               return "LaunchSizeNVX";
-    case EbvInstanceCustomIndexNV:      return "InstanceCustomIndexNVX";
-    case EbvWorldRayOriginNV:           return "WorldRayOriginNVX";
-    case EbvWorldRayDirectionNV:        return "WorldRayDirectionNVX";
-    case EbvObjectRayOriginNV:          return "ObjectRayOriginNVX";
-    case EbvObjectRayDirectionNV:       return "ObjectRayDirectionNVX";
-    case EbvRayTminNV:                  return "ObjectRayTminNVX";
-    case EbvRayTmaxNV:                  return "ObjectRayTmaxNVX";
-    case EbvHitTNV:                     return "HitTNVX";
-    case EbvHitKindNV:                  return "HitKindNVX";
-    case EbvObjectToWorldNV:            return "ObjectToWorldNVX";
-    case EbvWorldToObjectNV:            return "WorldToObjectNVX";
+    case EbvLaunchIdNV:                 return "LaunchIdNV";
+    case EbvLaunchSizeNV:               return "LaunchSizeNV";
+    case EbvInstanceCustomIndexNV:      return "InstanceCustomIndexNV";
+    case EbvWorldRayOriginNV:           return "WorldRayOriginNV";
+    case EbvWorldRayDirectionNV:        return "WorldRayDirectionNV";
+    case EbvObjectRayOriginNV:          return "ObjectRayOriginNV";
+    case EbvObjectRayDirectionNV:       return "ObjectRayDirectionNV";
+    case EbvRayTminNV:                  return "ObjectRayTminNV";
+    case EbvRayTmaxNV:                  return "ObjectRayTmaxNV";
+    case EbvHitTNV:                     return "HitTNV";
+    case EbvHitKindNV:                  return "HitKindNV";
+    case EbvIncomingRayFlagsNV:         return "IncomingRayFlagsNV";
+    case EbvObjectToWorldNV:            return "ObjectToWorldNV";
+    case EbvWorldToObjectNV:            return "WorldToObjectNV";
+
     case EbvBaryCoordNV:                return "BaryCoordNV";
     case EbvBaryCoordNoPerspNV:         return "BaryCoordNoPerspNV";
     case EbvTaskCountNV:                return "TaskCountNV";
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index 4536860..ae9cf40 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -1684,7 +1684,7 @@
         case EbtStruct:            return "structure";
         case EbtBlock:             return "block";
 #ifdef NV_EXTENSIONS
-        case EbtAccStructNV:       return "accelerationStructureNVX";
+        case EbtAccStructNV:       return "accelerationStructureNV";
 #endif
         default:                   return "unknown type";
         }
@@ -1782,7 +1782,7 @@
                     appendInt(qualifier.layoutSecondaryViewportRelativeOffset);
                 }
                 if (qualifier.layoutShaderRecordNV)
-                    appendStr(" shaderRecordNVX");
+                    appendStr(" shaderRecordNV");
 #endif
 
                 appendStr(")");
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index b770cee..2725007 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -898,6 +898,7 @@
     EOpReportIntersectionNV,
     EOpIgnoreIntersectionNV,
     EOpTerminateRayNV,
+    EOpExecuteCallableNV,
     EOpWritePackedPrimitiveIndices4x8NV,
 #endif
     //
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 7e7eaba..a17ea1a 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -5059,23 +5059,29 @@
 
 #ifdef NV_EXTENSIONS
 
-    // Builtins for GL_NV_raytracing
+    // Builtins for GL_NV_ray_tracing
     if (profile != EEsProfile && version >= 460) {
         stageBuiltins[EShLangRayGenNV].append(
-            "void traceNVX(accelerationStructureNVX,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void executeCallableNV(uint, int);"
             "\n");
         stageBuiltins[EShLangIntersectNV].append(
-            "bool reportIntersectionNVX(float, uint);"
+            "bool reportIntersectionNV(float, uint);"
             "\n");
         stageBuiltins[EShLangAnyHitNV].append(
-            "void ignoreIntersectionNVX();"
-            "void terminateRayNVX();"
+            "void ignoreIntersectionNV();"
+            "void terminateRayNV();"
             "\n");
         stageBuiltins[EShLangClosestHitNV].append(
-            "void traceNVX(accelerationStructureNVX,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void executeCallableNV(uint, int);"
             "\n");
         stageBuiltins[EShLangMissNV].append(
-            "void traceNVX(accelerationStructureNVX,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void executeCallableNV(uint, int);"
+            "\n");
+        stageBuiltins[EShLangCallableNV].append(
+            "void executeCallableNV(uint, int);"
             "\n");
     }
 
@@ -6107,79 +6113,94 @@
     }
 
 #ifdef NV_EXTENSIONS
-    // GL_NV_raytracing
+    // GL_NV_ray_tracing
     if (profile != EEsProfile && version >= 460) {
 
         const char *constRayFlags =
-            "const uint gl_RayFlagsNoneNVX = 0U;"
-            "const uint gl_RayFlagsOpaqueNVX = 1U;"
-            "const uint gl_RayFlagsNoOpaqueNVX = 2U;"
-            "const uint gl_RayFlagsTerminateOnFirstHitNVX = 4U;"
-            "const uint gl_RayFlagsSkipClosestHitShaderNVX = 8U;"
-            "const uint gl_RayFlagsCullBackFacingTrianglesNVX = 16U;"
-            "const uint gl_RayFlagsCullFrontFacingTrianglesNVX = 32U;"
-            "const uint gl_RayFlagsCullOpaqueNVX = 64U;"
-            "const uint gl_RayFlagsCullNoOpaqueNVX = 128U;"
+            "const uint gl_RayFlagsNoneNV = 0U;"
+            "const uint gl_RayFlagsOpaqueNV = 1U;"
+            "const uint gl_RayFlagsNoOpaqueNV = 2U;"
+            "const uint gl_RayFlagsTerminateOnFirstHitNV = 4U;"
+            "const uint gl_RayFlagsSkipClosestHitShaderNV = 8U;"
+            "const uint gl_RayFlagsCullBackFacingTrianglesNV = 16U;"
+            "const uint gl_RayFlagsCullFrontFacingTrianglesNV = 32U;"
+            "const uint gl_RayFlagsCullOpaqueNV = 64U;"
+            "const uint gl_RayFlagsCullNoOpaqueNV = 128U;"
             "\n";
         const char *rayGenDecls =
-            "in    uvec2  gl_LaunchIDNVX;"
-            "in    uvec2  gl_LaunchSizeNVX;"
+            "in    uvec3  gl_LaunchIDNV;"
+            "in    uvec3  gl_LaunchSizeNV;"
             "\n";
         const char *intersectDecls =
-            "in    uvec2  gl_LaunchIDNVX;"
-            "in    uvec2  gl_LaunchSizeNVX;"
+            "in    uvec3  gl_LaunchIDNV;"
+            "in    uvec3  gl_LaunchSizeNV;"
             "in     int   gl_PrimitiveID;"
             "in     int   gl_InstanceID;"
-            "in     int   gl_InstanceCustomIndexNVX;"
-            "in    vec3   gl_WorldRayOriginNVX;"
-            "in    vec3   gl_WorldRayDirectionNVX;"
-            "in    vec3   gl_ObjectRayOriginNVX;"
-            "in    vec3   gl_ObjectRayDirectionNVX;"
-            "in    float  gl_RayTminNVX;"
-            "in    float  gl_RayTmaxNVX;"
-            "in    mat4x3 gl_ObjectToWorldNVX;"
-            "in    mat4x3 gl_WorldToObjectNVX;"
+            "in     int   gl_InstanceCustomIndexNV;"
+            "in    vec3   gl_WorldRayOriginNV;"
+            "in    vec3   gl_WorldRayDirectionNV;"
+            "in    vec3   gl_ObjectRayOriginNV;"
+            "in    vec3   gl_ObjectRayDirectionNV;"
+            "in    float  gl_RayTminNV;"
+            "in    float  gl_RayTmaxNV;"
+            "in    mat4x3 gl_ObjectToWorldNV;"
+            "in    mat4x3 gl_WorldToObjectNV;"
+            "in    uint   gl_IncomingRayFlagsNV;"
             "\n";
         const char *hitDecls =
-            "in    uvec2  gl_LaunchIDNVX;"
-            "in    uvec2  gl_LaunchSizeNVX;"
+            "in    uvec3  gl_LaunchIDNV;"
+            "in    uvec3  gl_LaunchSizeNV;"
             "in     int   gl_PrimitiveID;"
             "in     int   gl_InstanceID;"
-            "in     int   gl_InstanceCustomIndexNVX;"
-            "in    vec3   gl_WorldRayOriginNVX;"
-            "in    vec3   gl_WorldRayDirectionNVX;"
-            "in    vec3   gl_ObjectRayOriginNVX;"
-            "in    vec3   gl_ObjectRayDirectionNVX;"
-            "in    float  gl_RayTminNVX;"
-            "in    float  gl_RayTmaxNVX;"
-            "in    float  gl_HitTNVX;"
-            "in    uint   gl_HitKindNVX;"
-            "in    mat4x3 gl_ObjectToWorldNVX;"
-            "in    mat4x3 gl_WorldToObjectNVX;"
+            "in     int   gl_InstanceCustomIndexNV;"
+            "in    vec3   gl_WorldRayOriginNV;"
+            "in    vec3   gl_WorldRayDirectionNV;"
+            "in    vec3   gl_ObjectRayOriginNV;"
+            "in    vec3   gl_ObjectRayDirectionNV;"
+            "in    float  gl_RayTminNV;"
+            "in    float  gl_RayTmaxNV;"
+            "in    float  gl_HitTNV;"
+            "in    uint   gl_HitKindNV;"
+            "in    mat4x3 gl_ObjectToWorldNV;"
+            "in    mat4x3 gl_WorldToObjectNV;"
+            "in    uint   gl_IncomingRayFlagsNV;"
             "\n";
         const char *missDecls =
-            "in    uvec2  gl_LaunchIDNVX;"
-            "in    uvec2  gl_LaunchSizeNVX;"
-            "in    vec3   gl_WorldRayOriginNVX;"
-            "in    vec3   gl_WorldRayDirectionNVX;"
-            "in    vec3   gl_ObjectRayOriginNVX;"
-            "in    vec3   gl_ObjectRayDirectionNVX;"
-            "in    float  gl_RayTminNVX;"
-            "in    float  gl_RayTmaxNVX;"
+            "in    uvec3  gl_LaunchIDNV;"
+            "in    uvec3  gl_LaunchSizeNV;"
+            "in    vec3   gl_WorldRayOriginNV;"
+            "in    vec3   gl_WorldRayDirectionNV;"
+            "in    vec3   gl_ObjectRayOriginNV;"
+            "in    vec3   gl_ObjectRayDirectionNV;"
+            "in    float  gl_RayTminNV;"
+            "in    float  gl_RayTmaxNV;"
+            "in    uint   gl_IncomingRayFlagsNV;"
+            "\n";
+
+        const char *callableDecls =
+            "in    uvec3  gl_LaunchIDNV;"
+            "in    uvec3  gl_LaunchSizeNV;"
+            "in    uint   gl_IncomingRayFlagsNV;"
             "\n";
 
         stageBuiltins[EShLangRayGenNV].append(rayGenDecls);
         stageBuiltins[EShLangRayGenNV].append(constRayFlags);
 
         stageBuiltins[EShLangIntersectNV].append(intersectDecls);
+        stageBuiltins[EShLangIntersectNV].append(constRayFlags);
 
         stageBuiltins[EShLangAnyHitNV].append(hitDecls);
+        stageBuiltins[EShLangAnyHitNV].append(constRayFlags);
 
         stageBuiltins[EShLangClosestHitNV].append(hitDecls);
         stageBuiltins[EShLangClosestHitNV].append(constRayFlags);
 
         stageBuiltins[EShLangMissNV].append(missDecls);
         stageBuiltins[EShLangMissNV].append(constRayFlags);
+
+        stageBuiltins[EShLangCallableNV].append(callableDecls);
+        stageBuiltins[EShLangCallableNV].append(constRayFlags);
+
     }
     if ((profile != EEsProfile && version >= 140)) {
         const char *deviceIndex =
@@ -8600,39 +8621,43 @@
     case EShLangAnyHitNV:
     case EShLangClosestHitNV:
     case EShLangMissNV:
+    case EShLangCallableNV:
         if (profile != EEsProfile && version >= 460) {
-            symbolTable.setVariableExtensions("gl_LaunchIDNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_LaunchSizeNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_PrimitiveID", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_InstanceID", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_InstanceCustomIndexNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_WorldRayOriginNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_WorldRayDirectionNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_ObjectRayOriginNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_ObjectRayDirectionNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_RayTminNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_RayTmaxNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_HitTNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_HitKindNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_ObjectToWorldNVX", 1, &E_GL_NVX_raytracing);
-            symbolTable.setVariableExtensions("gl_WorldToObjectNVX", 1, &E_GL_NVX_raytracing);
+            symbolTable.setVariableExtensions("gl_LaunchIDNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_LaunchSizeNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_PrimitiveID", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_InstanceID", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_InstanceCustomIndexNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_WorldRayOriginNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_WorldRayDirectionNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_ObjectRayOriginNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_ObjectRayDirectionNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_RayTminNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_RayTmaxNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_HitTNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_HitKindNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_ObjectToWorldNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_WorldToObjectNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setVariableExtensions("gl_IncomingRayFlagsNV", 1, &E_GL_NV_ray_tracing);
+
             symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
 
-            BuiltInVariable("gl_LaunchIDNVX",           EbvLaunchIdNV,           symbolTable);
-            BuiltInVariable("gl_LaunchSizeNVX",         EbvLaunchSizeNV,         symbolTable);
+            BuiltInVariable("gl_LaunchIDNV",            EbvLaunchIdNV,           symbolTable);
+            BuiltInVariable("gl_LaunchSizeNV",          EbvLaunchSizeNV,         symbolTable);
             BuiltInVariable("gl_PrimitiveID",           EbvPrimitiveId,          symbolTable);
             BuiltInVariable("gl_InstanceID",            EbvInstanceId,           symbolTable);
-            BuiltInVariable("gl_InstanceCustomIndexNVX",EbvInstanceCustomIndexNV,symbolTable);
-            BuiltInVariable("gl_WorldRayOriginNVX",     EbvWorldRayOriginNV,     symbolTable);
-            BuiltInVariable("gl_WorldRayDirectionNVX",  EbvWorldRayDirectionNV,  symbolTable);
-            BuiltInVariable("gl_ObjectRayOriginNVX",    EbvObjectRayOriginNV,    symbolTable);
-            BuiltInVariable("gl_ObjectRayDirectionNVX", EbvObjectRayDirectionNV, symbolTable);
-            BuiltInVariable("gl_RayTminNVX",            EbvRayTminNV,            symbolTable);
-            BuiltInVariable("gl_RayTmaxNVX",            EbvRayTmaxNV,            symbolTable);
-            BuiltInVariable("gl_HitTNVX",               EbvHitTNV,               symbolTable);
-            BuiltInVariable("gl_HitKindNVX",            EbvHitKindNV,            symbolTable);
-            BuiltInVariable("gl_ObjectToWorldNVX",      EbvObjectToWorldNV,      symbolTable);
-            BuiltInVariable("gl_WorldToObjectNVX",      EbvWorldToObjectNV,      symbolTable);
+            BuiltInVariable("gl_InstanceCustomIndexNV", EbvInstanceCustomIndexNV,symbolTable);
+            BuiltInVariable("gl_WorldRayOriginNV",      EbvWorldRayOriginNV,     symbolTable);
+            BuiltInVariable("gl_WorldRayDirectionNV",   EbvWorldRayDirectionNV,  symbolTable);
+            BuiltInVariable("gl_ObjectRayOriginNV",     EbvObjectRayOriginNV,    symbolTable);
+            BuiltInVariable("gl_ObjectRayDirectionNV",  EbvObjectRayDirectionNV, symbolTable);
+            BuiltInVariable("gl_RayTminNV",             EbvRayTminNV,            symbolTable);
+            BuiltInVariable("gl_RayTmaxNV",             EbvRayTmaxNV,            symbolTable);
+            BuiltInVariable("gl_HitTNV",                EbvHitTNV,               symbolTable);
+            BuiltInVariable("gl_HitKindNV",             EbvHitKindNV,            symbolTable);
+            BuiltInVariable("gl_ObjectToWorldNV",       EbvObjectToWorldNV,      symbolTable);
+            BuiltInVariable("gl_WorldToObjectNV",       EbvWorldToObjectNV,      symbolTable);
+            BuiltInVariable("gl_IncomingRayFlagsNV",    EbvIncomingRayFlagsNV,   symbolTable);
             BuiltInVariable("gl_DeviceIndex",           EbvDeviceIndex,          symbolTable);
         } 
         break;
@@ -9373,17 +9398,24 @@
     case EShLangRayGenNV:
     case EShLangClosestHitNV:
     case EShLangMissNV:
-        if (profile != EEsProfile && version >= 460)
-            symbolTable.relateToOperator("traceNVX", EOpTraceNV);
+        if (profile != EEsProfile && version >= 460) {
+            symbolTable.relateToOperator("traceNV", EOpTraceNV);
+            symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
+        }
         break;
     case EShLangIntersectNV:
         if (profile != EEsProfile && version >= 460)
-            symbolTable.relateToOperator("reportIntersectionNVX", EOpReportIntersectionNV);
+            symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersectionNV);
         break;
     case EShLangAnyHitNV:
         if (profile != EEsProfile && version >= 460) {
-            symbolTable.relateToOperator("ignoreIntersectionNVX", EOpIgnoreIntersectionNV);
-            symbolTable.relateToOperator("terminateRayNVX", EOpTerminateRayNV);
+            symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersectionNV);
+            symbolTable.relateToOperator("terminateRayNV", EOpTerminateRayNV);
+        }
+        break;
+    case EShLangCallableNV:
+        if (profile != EEsProfile && version >= 460) {
+            symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
         }
         break;
     case EShLangMeshNV:
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
index ca5d7e4..7a968ce 100644
--- a/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -156,7 +156,7 @@
 #ifdef NV_EXTENSIONS
     case EvqHitAttrNV:
         if (language != EShLangIntersectNV)
-            message = "cannot modify hitAttributeNVX in this stage";
+            message = "cannot modify hitAttributeNV in this stage";
         break;
 #endif
 
@@ -176,7 +176,7 @@
             break;
 #ifdef NV_EXTENSIONS
         case EbtAccStructNV:
-            message = "can't modify accelerationStructureNVX";
+            message = "can't modify accelerationStructureNV";
             break;
 #endif
         default:
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 3063d37..74cd5ce 100755
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -1872,6 +1872,17 @@
         break;
     }
 
+#ifdef NV_EXTENSIONS
+    case EOpTraceNV:
+        if (!(*argp)[10]->getAsConstantUnion())
+            error(loc, "argument must be compile-time constant", "payload number", "");
+        break;
+    case EOpExecuteCallableNV:
+        if (!(*argp)[1]->getAsConstantUnion())
+            error(loc, "argument must be compile-time constant", "callable data number", "");
+        break;
+#endif
+
     case EOpTextureQuerySamples:
     case EOpImageQuerySamples:
         // GL_ARB_shader_texture_image_samples
@@ -2990,9 +3001,9 @@
         return;
 
     if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtAccStructNV))
-        error(loc, "non-uniform struct contains an accelerationStructureNVX:", type.getBasicTypeString().c_str(), identifier.c_str());
+        error(loc, "non-uniform struct contains an accelerationStructureNV:", type.getBasicTypeString().c_str(), identifier.c_str());
     else if (type.getBasicType() == EbtAccStructNV && type.getQualifier().storage != EvqUniform)
-        error(loc, "accelerationStructureNVX can only be used in uniform variables or function parameters:",
+        error(loc, "accelerationStructureNV can only be used in uniform variables or function parameters:",
             type.getBasicTypeString().c_str(), identifier.c_str());
 
 }
@@ -4778,7 +4789,7 @@
         if (language == EShLangRayGenNV || language == EShLangIntersectNV ||
         language == EShLangAnyHitNV || language == EShLangClosestHitNV ||
         language == EShLangMissNV || language == EShLangCallableNV) {
-            if (id == "shaderrecordnvx") {
+            if (id == "shaderrecordnv") {
                 publicType.qualifier.layoutShaderRecordNV = true;
                 return;
             }
@@ -5236,7 +5247,7 @@
                     error(loc, "can only specify on a uniform block", "push_constant", "");
 #ifdef NV_EXTENSIONS
                 if (qualifier.layoutShaderRecordNV)
-                    error(loc, "can only specify on a buffer block", "shaderRecordNVX", "");
+                    error(loc, "can only specify on a buffer block", "shaderRecordNV", "");
 #endif
             }
             break;
@@ -5315,6 +5326,8 @@
         case EvqPayloadNV:
         case EvqPayloadInNV:
         case EvqHitAttrNV:
+        case EvqCallableDataNV:
+        case EvqCallableDataInNV:
             break;
 #endif
         default:
@@ -5457,7 +5470,7 @@
 
 #ifdef NV_EXTENSIONS
     if (qualifier.layoutShaderRecordNV && type.getBasicType() != EbtBlock)
-        error(loc, "can only be used with a block", "shaderRecordNVX", "");
+        error(loc, "can only be used with a block", "shaderRecordNV", "");
 #endif
 
     // input attachment
@@ -5598,11 +5611,15 @@
 #ifdef NV_EXTENSIONS
     if (qualifier.layoutShaderRecordNV) {
         if (qualifier.storage != EvqBuffer)
-            error(loc, "can only be used with a buffer", "shaderRecordNVX", "");
+            error(loc, "can only be used with a buffer", "shaderRecordNV", "");
         if (qualifier.hasBinding())
-            error(loc, "cannot be used with shaderRecordNVX", "binding", "");
+            error(loc, "cannot be used with shaderRecordNV", "binding", "");
         if (qualifier.hasSet())
-            error(loc, "cannot be used with shaderRecordNVX", "set", "");
+            error(loc, "cannot be used with shaderRecordNV", "set", "");
+
+    }
+    if (qualifier.storage == EvqHitAttrNV && qualifier.hasLayout()) {
+        error(loc, "cannot apply layout qualifiers to hitAttributeNV variable", "hitAttributeNV", "");
     }
 #endif
 }
@@ -6963,18 +6980,27 @@
         break;
 #ifdef NV_EXTENSIONS
     case EvqPayloadNV:
-        profileRequires(loc, ~EEsProfile, 450, E_GL_NVX_raytracing, "rayPayloadNVX block");
+        profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV block");
         requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask),
-            "rayPayloadNVX block");
+            "rayPayloadNV block");
         break;
     case EvqPayloadInNV:
-        profileRequires(loc, ~EEsProfile, 450, E_GL_NVX_raytracing, "rayPayloadInNVX block");
+        profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV block");
         requireStage(loc, (EShLanguageMask)(EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask),
-            "rayPayloadInNVX block");
+            "rayPayloadInNV block");
         break;
     case EvqHitAttrNV:
-        profileRequires(loc, ~EEsProfile, 450, E_GL_NVX_raytracing, "hitAttributeNVX block");
-        requireStage(loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask), "hitAttributeNVX block");
+        profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV block");
+        requireStage(loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask), "hitAttributeNV block");
+        break;
+    case EvqCallableDataNV:
+        profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "callableDataNV block");
+        requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask),
+            "callableDataNV block");
+        break;
+    case EvqCallableDataInNV:
+        profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV block");
+        requireStage(loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV block");
         break;
 #endif
     default:
@@ -7503,7 +7529,7 @@
         error(loc, "cannot declare a default, can only be used on a scalar", "constant_id", "");
 #ifdef NV_EXTENSIONS
     if (qualifier.layoutShaderRecordNV)
-        error(loc, "cannot declare a default, can only be used on a block", "shaderRecordNVX", "");
+        error(loc, "cannot declare a default, can only be used on a block", "shaderRecordNV", "");
 #endif
 }
 
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index 31ed7cf..4d2db38 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -701,10 +701,12 @@
     (*KeywordMap)["superp"] =                  SUPERP;
 
 #ifdef NV_EXTENSIONS
-    (*KeywordMap)["rayPayloadNVX"] =            PAYLOADNV;
-    (*KeywordMap)["rayPayloadInNVX"] =          PAYLOADINNV;
-    (*KeywordMap)["hitAttributeNVX"] =          HITATTRNV;
-    (*KeywordMap)["accelerationStructureNVX"] = ACCSTRUCTNV;
+    (*KeywordMap)["rayPayloadNV"] =            PAYLOADNV;
+    (*KeywordMap)["rayPayloadInNV"] =          PAYLOADINNV;
+    (*KeywordMap)["hitAttributeNV"] =          HITATTRNV;
+    (*KeywordMap)["callableDataNV"] =          CALLDATANV;
+    (*KeywordMap)["callableDataInNV"] =        CALLDATAINNV;
+    (*KeywordMap)["accelerationStructureNV"] = ACCSTRUCTNV;
     (*KeywordMap)["perprimitiveNV"] =          PERPRIMITIVENV;
     (*KeywordMap)["perviewNV"] =               PERVIEWNV;
     (*KeywordMap)["taskNV"] =                  PERTASKNV;
@@ -952,10 +954,12 @@
     case PAYLOADNV:
     case PAYLOADINNV:
     case HITATTRNV:
+    case CALLDATANV:
+    case CALLDATAINNV:
     case ACCSTRUCTNV:
         if (parseContext.symbolTable.atBuiltInLevel() ||
             (parseContext.profile != EEsProfile && parseContext.version >= 460
-                 && parseContext.extensionTurnedOn(E_GL_NVX_raytracing)))
+                 && parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)))
             return keyword;
         return identifierOrType();
 #endif
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index 522ded1..3c847d2 100755
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -360,6 +360,8 @@
             infoSink, commonTable, symbolTables);
         InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMissNV, source,
             infoSink, commonTable, symbolTables);
+        InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCallableNV, source,
+            infoSink, commonTable, symbolTables);
     }
 
     // check for mesh
@@ -607,7 +609,7 @@
     case EShLangCallableNV:
         if (profile == EEsProfile || version < 460) {
             correct = false;
-            infoSink.info.message(EPrefixError, "#version: raytracing shaders require non-es profile with version 460 or above");
+            infoSink.info.message(EPrefixError, "#version: ray tracing shaders require non-es profile with version 460 or above");
             version = 460;
         }
         break;
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index b26bc3e..66fa3e2 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -236,7 +236,7 @@
     extensionBehavior[E_GL_NV_shader_noperspective_interpolation]    = EBhDisable;
     extensionBehavior[E_GL_NV_shader_subgroup_partitioned]           = EBhDisable;
     extensionBehavior[E_GL_NV_shading_rate_image]                    = EBhDisable;
-    extensionBehavior[E_GL_NVX_raytracing]                           = EBhDisable;
+    extensionBehavior[E_GL_NV_ray_tracing]                           = EBhDisable;
     extensionBehavior[E_GL_NV_fragment_shader_barycentric]           = EBhDisable;
     extensionBehavior[E_GL_NV_compute_shader_derivatives]            = EBhDisable;
     extensionBehavior[E_GL_NV_shader_texture_footprint]              = EBhDisable;
@@ -412,7 +412,7 @@
             "#define GL_NV_conservative_raster_underestimation 1\n"
             "#define GL_NV_shader_subgroup_partitioned 1\n"
             "#define GL_NV_shading_rate_image 1\n"
-            "#define GL_NVX_raytracing 1\n"
+            "#define GL_NV_ray_tracing 1\n"
             "#define GL_NV_fragment_shader_barycentric 1\n"
             "#define GL_NV_compute_shader_derivatives 1\n"
             "#define GL_NV_shader_texture_footprint 1\n"
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index e4cbbbb..85c93c0 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -208,7 +208,7 @@
 const char* const E_GL_NV_shader_noperspective_interpolation    = "GL_NV_shader_noperspective_interpolation";
 const char* const E_GL_NV_shader_subgroup_partitioned           = "GL_NV_shader_subgroup_partitioned";
 const char* const E_GL_NV_shading_rate_image                    = "GL_NV_shading_rate_image";
-const char* const E_GL_NVX_raytracing                           = "GL_NVX_raytracing";
+const char* const E_GL_NV_ray_tracing                           = "GL_NV_ray_tracing";
 const char* const E_GL_NV_fragment_shader_barycentric           = "GL_NV_fragment_shader_barycentric";
 const char* const E_GL_NV_compute_shader_derivatives            = "GL_NV_compute_shader_derivatives";
 const char* const E_GL_NV_shader_texture_footprint              = "GL_NV_shader_texture_footprint";
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index f6e33c6..3634f16 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -140,7 +140,7 @@
 %token <lex> U8VEC2  U8VEC3  U8VEC4
 %token <lex> VEC2 VEC3 VEC4
 %token <lex> MAT2 MAT3 MAT4 CENTROID IN OUT INOUT
-%token <lex> UNIFORM PATCH SAMPLE BUFFER SHARED NONUNIFORM PAYLOADNV PAYLOADINNV HITATTRNV
+%token <lex> UNIFORM PATCH SAMPLE BUFFER SHARED NONUNIFORM PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV
 %token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT SUBGROUPCOHERENT NONPRIVATE
 %token <lex> DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4
 %token <lex> F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4
@@ -1348,34 +1348,53 @@
     }
     | HITATTRNV {
 #ifdef NV_EXTENSIONS
-        parseContext.globalCheck($1.loc, "hitAttributeNVX");
+        parseContext.globalCheck($1.loc, "hitAttributeNV");
         parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask
-            | EShLangAnyHitNVMask), "hitAttributeNVX");
-        parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NVX_raytracing, "hitAttributeNVX");
+            | EShLangAnyHitNVMask), "hitAttributeNV");
+        parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV");
         $$.init($1.loc);
         $$.qualifier.storage = EvqHitAttrNV;
 #endif
     }
     | PAYLOADNV {
 #ifdef NV_EXTENSIONS
-        parseContext.globalCheck($1.loc, "rayPayloadNVX");
+        parseContext.globalCheck($1.loc, "rayPayloadNV");
         parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask |
-            EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNVX");
-        parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NVX_raytracing, "rayPayloadNVX");
+            EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV");
+        parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV");
         $$.init($1.loc);
         $$.qualifier.storage = EvqPayloadNV;
 #endif
     }
     | PAYLOADINNV {
 #ifdef NV_EXTENSIONS
-        parseContext.globalCheck($1.loc, "rayPayloadInNVX");
+        parseContext.globalCheck($1.loc, "rayPayloadInNV");
         parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitNVMask |
-            EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNVX");
-        parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NVX_raytracing, "rayPayloadInNVX");
+            EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV");
+        parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV");
         $$.init($1.loc);
         $$.qualifier.storage = EvqPayloadInNV;
 #endif
     }
+    | CALLDATANV {
+#ifdef NV_EXTENSIONS
+        parseContext.globalCheck($1.loc, "callableDataNV");
+        parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask |
+            EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV");
+        parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV");
+        $$.init($1.loc);
+        $$.qualifier.storage = EvqCallableDataNV;
+#endif
+    }
+    | CALLDATAINNV {
+#ifdef NV_EXTENSIONS
+        parseContext.globalCheck($1.loc, "callableDataInNV");
+        parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV");
+        parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV");
+        $$.init($1.loc);
+        $$.qualifier.storage = EvqCallableDataInNV;
+#endif
+    }
     | SHARED {
         parseContext.globalCheck($1.loc, "shared");
         parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index 4b70ee3..e57edb5 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -206,324 +206,326 @@
     PAYLOADNV = 338,
     PAYLOADINNV = 339,
     HITATTRNV = 340,
-    COHERENT = 341,
-    VOLATILE = 342,
-    RESTRICT = 343,
-    READONLY = 344,
-    WRITEONLY = 345,
-    DEVICECOHERENT = 346,
-    QUEUEFAMILYCOHERENT = 347,
-    WORKGROUPCOHERENT = 348,
-    SUBGROUPCOHERENT = 349,
-    NONPRIVATE = 350,
-    DVEC2 = 351,
-    DVEC3 = 352,
-    DVEC4 = 353,
-    DMAT2 = 354,
-    DMAT3 = 355,
-    DMAT4 = 356,
-    F16VEC2 = 357,
-    F16VEC3 = 358,
-    F16VEC4 = 359,
-    F16MAT2 = 360,
-    F16MAT3 = 361,
-    F16MAT4 = 362,
-    F32VEC2 = 363,
-    F32VEC3 = 364,
-    F32VEC4 = 365,
-    F32MAT2 = 366,
-    F32MAT3 = 367,
-    F32MAT4 = 368,
-    F64VEC2 = 369,
-    F64VEC3 = 370,
-    F64VEC4 = 371,
-    F64MAT2 = 372,
-    F64MAT3 = 373,
-    F64MAT4 = 374,
-    NOPERSPECTIVE = 375,
-    FLAT = 376,
-    SMOOTH = 377,
-    LAYOUT = 378,
-    EXPLICITINTERPAMD = 379,
-    PERVERTEXNV = 380,
-    PERPRIMITIVENV = 381,
-    PERVIEWNV = 382,
-    PERTASKNV = 383,
-    MAT2X2 = 384,
-    MAT2X3 = 385,
-    MAT2X4 = 386,
-    MAT3X2 = 387,
-    MAT3X3 = 388,
-    MAT3X4 = 389,
-    MAT4X2 = 390,
-    MAT4X3 = 391,
-    MAT4X4 = 392,
-    DMAT2X2 = 393,
-    DMAT2X3 = 394,
-    DMAT2X4 = 395,
-    DMAT3X2 = 396,
-    DMAT3X3 = 397,
-    DMAT3X4 = 398,
-    DMAT4X2 = 399,
-    DMAT4X3 = 400,
-    DMAT4X4 = 401,
-    F16MAT2X2 = 402,
-    F16MAT2X3 = 403,
-    F16MAT2X4 = 404,
-    F16MAT3X2 = 405,
-    F16MAT3X3 = 406,
-    F16MAT3X4 = 407,
-    F16MAT4X2 = 408,
-    F16MAT4X3 = 409,
-    F16MAT4X4 = 410,
-    F32MAT2X2 = 411,
-    F32MAT2X3 = 412,
-    F32MAT2X4 = 413,
-    F32MAT3X2 = 414,
-    F32MAT3X3 = 415,
-    F32MAT3X4 = 416,
-    F32MAT4X2 = 417,
-    F32MAT4X3 = 418,
-    F32MAT4X4 = 419,
-    F64MAT2X2 = 420,
-    F64MAT2X3 = 421,
-    F64MAT2X4 = 422,
-    F64MAT3X2 = 423,
-    F64MAT3X3 = 424,
-    F64MAT3X4 = 425,
-    F64MAT4X2 = 426,
-    F64MAT4X3 = 427,
-    F64MAT4X4 = 428,
-    ATOMIC_UINT = 429,
-    ACCSTRUCTNV = 430,
-    SAMPLER1D = 431,
-    SAMPLER2D = 432,
-    SAMPLER3D = 433,
-    SAMPLERCUBE = 434,
-    SAMPLER1DSHADOW = 435,
-    SAMPLER2DSHADOW = 436,
-    SAMPLERCUBESHADOW = 437,
-    SAMPLER1DARRAY = 438,
-    SAMPLER2DARRAY = 439,
-    SAMPLER1DARRAYSHADOW = 440,
-    SAMPLER2DARRAYSHADOW = 441,
-    ISAMPLER1D = 442,
-    ISAMPLER2D = 443,
-    ISAMPLER3D = 444,
-    ISAMPLERCUBE = 445,
-    ISAMPLER1DARRAY = 446,
-    ISAMPLER2DARRAY = 447,
-    USAMPLER1D = 448,
-    USAMPLER2D = 449,
-    USAMPLER3D = 450,
-    USAMPLERCUBE = 451,
-    USAMPLER1DARRAY = 452,
-    USAMPLER2DARRAY = 453,
-    SAMPLER2DRECT = 454,
-    SAMPLER2DRECTSHADOW = 455,
-    ISAMPLER2DRECT = 456,
-    USAMPLER2DRECT = 457,
-    SAMPLERBUFFER = 458,
-    ISAMPLERBUFFER = 459,
-    USAMPLERBUFFER = 460,
-    SAMPLERCUBEARRAY = 461,
-    SAMPLERCUBEARRAYSHADOW = 462,
-    ISAMPLERCUBEARRAY = 463,
-    USAMPLERCUBEARRAY = 464,
-    SAMPLER2DMS = 465,
-    ISAMPLER2DMS = 466,
-    USAMPLER2DMS = 467,
-    SAMPLER2DMSARRAY = 468,
-    ISAMPLER2DMSARRAY = 469,
-    USAMPLER2DMSARRAY = 470,
-    SAMPLEREXTERNALOES = 471,
-    F16SAMPLER1D = 472,
-    F16SAMPLER2D = 473,
-    F16SAMPLER3D = 474,
-    F16SAMPLER2DRECT = 475,
-    F16SAMPLERCUBE = 476,
-    F16SAMPLER1DARRAY = 477,
-    F16SAMPLER2DARRAY = 478,
-    F16SAMPLERCUBEARRAY = 479,
-    F16SAMPLERBUFFER = 480,
-    F16SAMPLER2DMS = 481,
-    F16SAMPLER2DMSARRAY = 482,
-    F16SAMPLER1DSHADOW = 483,
-    F16SAMPLER2DSHADOW = 484,
-    F16SAMPLER1DARRAYSHADOW = 485,
-    F16SAMPLER2DARRAYSHADOW = 486,
-    F16SAMPLER2DRECTSHADOW = 487,
-    F16SAMPLERCUBESHADOW = 488,
-    F16SAMPLERCUBEARRAYSHADOW = 489,
-    SAMPLER = 490,
-    SAMPLERSHADOW = 491,
-    TEXTURE1D = 492,
-    TEXTURE2D = 493,
-    TEXTURE3D = 494,
-    TEXTURECUBE = 495,
-    TEXTURE1DARRAY = 496,
-    TEXTURE2DARRAY = 497,
-    ITEXTURE1D = 498,
-    ITEXTURE2D = 499,
-    ITEXTURE3D = 500,
-    ITEXTURECUBE = 501,
-    ITEXTURE1DARRAY = 502,
-    ITEXTURE2DARRAY = 503,
-    UTEXTURE1D = 504,
-    UTEXTURE2D = 505,
-    UTEXTURE3D = 506,
-    UTEXTURECUBE = 507,
-    UTEXTURE1DARRAY = 508,
-    UTEXTURE2DARRAY = 509,
-    TEXTURE2DRECT = 510,
-    ITEXTURE2DRECT = 511,
-    UTEXTURE2DRECT = 512,
-    TEXTUREBUFFER = 513,
-    ITEXTUREBUFFER = 514,
-    UTEXTUREBUFFER = 515,
-    TEXTURECUBEARRAY = 516,
-    ITEXTURECUBEARRAY = 517,
-    UTEXTURECUBEARRAY = 518,
-    TEXTURE2DMS = 519,
-    ITEXTURE2DMS = 520,
-    UTEXTURE2DMS = 521,
-    TEXTURE2DMSARRAY = 522,
-    ITEXTURE2DMSARRAY = 523,
-    UTEXTURE2DMSARRAY = 524,
-    F16TEXTURE1D = 525,
-    F16TEXTURE2D = 526,
-    F16TEXTURE3D = 527,
-    F16TEXTURE2DRECT = 528,
-    F16TEXTURECUBE = 529,
-    F16TEXTURE1DARRAY = 530,
-    F16TEXTURE2DARRAY = 531,
-    F16TEXTURECUBEARRAY = 532,
-    F16TEXTUREBUFFER = 533,
-    F16TEXTURE2DMS = 534,
-    F16TEXTURE2DMSARRAY = 535,
-    SUBPASSINPUT = 536,
-    SUBPASSINPUTMS = 537,
-    ISUBPASSINPUT = 538,
-    ISUBPASSINPUTMS = 539,
-    USUBPASSINPUT = 540,
-    USUBPASSINPUTMS = 541,
-    F16SUBPASSINPUT = 542,
-    F16SUBPASSINPUTMS = 543,
-    IMAGE1D = 544,
-    IIMAGE1D = 545,
-    UIMAGE1D = 546,
-    IMAGE2D = 547,
-    IIMAGE2D = 548,
-    UIMAGE2D = 549,
-    IMAGE3D = 550,
-    IIMAGE3D = 551,
-    UIMAGE3D = 552,
-    IMAGE2DRECT = 553,
-    IIMAGE2DRECT = 554,
-    UIMAGE2DRECT = 555,
-    IMAGECUBE = 556,
-    IIMAGECUBE = 557,
-    UIMAGECUBE = 558,
-    IMAGEBUFFER = 559,
-    IIMAGEBUFFER = 560,
-    UIMAGEBUFFER = 561,
-    IMAGE1DARRAY = 562,
-    IIMAGE1DARRAY = 563,
-    UIMAGE1DARRAY = 564,
-    IMAGE2DARRAY = 565,
-    IIMAGE2DARRAY = 566,
-    UIMAGE2DARRAY = 567,
-    IMAGECUBEARRAY = 568,
-    IIMAGECUBEARRAY = 569,
-    UIMAGECUBEARRAY = 570,
-    IMAGE2DMS = 571,
-    IIMAGE2DMS = 572,
-    UIMAGE2DMS = 573,
-    IMAGE2DMSARRAY = 574,
-    IIMAGE2DMSARRAY = 575,
-    UIMAGE2DMSARRAY = 576,
-    F16IMAGE1D = 577,
-    F16IMAGE2D = 578,
-    F16IMAGE3D = 579,
-    F16IMAGE2DRECT = 580,
-    F16IMAGECUBE = 581,
-    F16IMAGE1DARRAY = 582,
-    F16IMAGE2DARRAY = 583,
-    F16IMAGECUBEARRAY = 584,
-    F16IMAGEBUFFER = 585,
-    F16IMAGE2DMS = 586,
-    F16IMAGE2DMSARRAY = 587,
-    STRUCT = 588,
-    VOID = 589,
-    WHILE = 590,
-    IDENTIFIER = 591,
-    TYPE_NAME = 592,
-    FLOATCONSTANT = 593,
-    DOUBLECONSTANT = 594,
-    INT16CONSTANT = 595,
-    UINT16CONSTANT = 596,
-    INT32CONSTANT = 597,
-    UINT32CONSTANT = 598,
-    INTCONSTANT = 599,
-    UINTCONSTANT = 600,
-    INT64CONSTANT = 601,
-    UINT64CONSTANT = 602,
-    BOOLCONSTANT = 603,
-    FLOAT16CONSTANT = 604,
-    LEFT_OP = 605,
-    RIGHT_OP = 606,
-    INC_OP = 607,
-    DEC_OP = 608,
-    LE_OP = 609,
-    GE_OP = 610,
-    EQ_OP = 611,
-    NE_OP = 612,
-    AND_OP = 613,
-    OR_OP = 614,
-    XOR_OP = 615,
-    MUL_ASSIGN = 616,
-    DIV_ASSIGN = 617,
-    ADD_ASSIGN = 618,
-    MOD_ASSIGN = 619,
-    LEFT_ASSIGN = 620,
-    RIGHT_ASSIGN = 621,
-    AND_ASSIGN = 622,
-    XOR_ASSIGN = 623,
-    OR_ASSIGN = 624,
-    SUB_ASSIGN = 625,
-    LEFT_PAREN = 626,
-    RIGHT_PAREN = 627,
-    LEFT_BRACKET = 628,
-    RIGHT_BRACKET = 629,
-    LEFT_BRACE = 630,
-    RIGHT_BRACE = 631,
-    DOT = 632,
-    COMMA = 633,
-    COLON = 634,
-    EQUAL = 635,
-    SEMICOLON = 636,
-    BANG = 637,
-    DASH = 638,
-    TILDE = 639,
-    PLUS = 640,
-    STAR = 641,
-    SLASH = 642,
-    PERCENT = 643,
-    LEFT_ANGLE = 644,
-    RIGHT_ANGLE = 645,
-    VERTICAL_BAR = 646,
-    CARET = 647,
-    AMPERSAND = 648,
-    QUESTION = 649,
-    INVARIANT = 650,
-    PRECISE = 651,
-    HIGH_PRECISION = 652,
-    MEDIUM_PRECISION = 653,
-    LOW_PRECISION = 654,
-    PRECISION = 655,
-    PACKED = 656,
-    RESOURCE = 657,
-    SUPERP = 658
+    CALLDATANV = 341,
+    CALLDATAINNV = 342,
+    COHERENT = 343,
+    VOLATILE = 344,
+    RESTRICT = 345,
+    READONLY = 346,
+    WRITEONLY = 347,
+    DEVICECOHERENT = 348,
+    QUEUEFAMILYCOHERENT = 349,
+    WORKGROUPCOHERENT = 350,
+    SUBGROUPCOHERENT = 351,
+    NONPRIVATE = 352,
+    DVEC2 = 353,
+    DVEC3 = 354,
+    DVEC4 = 355,
+    DMAT2 = 356,
+    DMAT3 = 357,
+    DMAT4 = 358,
+    F16VEC2 = 359,
+    F16VEC3 = 360,
+    F16VEC4 = 361,
+    F16MAT2 = 362,
+    F16MAT3 = 363,
+    F16MAT4 = 364,
+    F32VEC2 = 365,
+    F32VEC3 = 366,
+    F32VEC4 = 367,
+    F32MAT2 = 368,
+    F32MAT3 = 369,
+    F32MAT4 = 370,
+    F64VEC2 = 371,
+    F64VEC3 = 372,
+    F64VEC4 = 373,
+    F64MAT2 = 374,
+    F64MAT3 = 375,
+    F64MAT4 = 376,
+    NOPERSPECTIVE = 377,
+    FLAT = 378,
+    SMOOTH = 379,
+    LAYOUT = 380,
+    EXPLICITINTERPAMD = 381,
+    PERVERTEXNV = 382,
+    PERPRIMITIVENV = 383,
+    PERVIEWNV = 384,
+    PERTASKNV = 385,
+    MAT2X2 = 386,
+    MAT2X3 = 387,
+    MAT2X4 = 388,
+    MAT3X2 = 389,
+    MAT3X3 = 390,
+    MAT3X4 = 391,
+    MAT4X2 = 392,
+    MAT4X3 = 393,
+    MAT4X4 = 394,
+    DMAT2X2 = 395,
+    DMAT2X3 = 396,
+    DMAT2X4 = 397,
+    DMAT3X2 = 398,
+    DMAT3X3 = 399,
+    DMAT3X4 = 400,
+    DMAT4X2 = 401,
+    DMAT4X3 = 402,
+    DMAT4X4 = 403,
+    F16MAT2X2 = 404,
+    F16MAT2X3 = 405,
+    F16MAT2X4 = 406,
+    F16MAT3X2 = 407,
+    F16MAT3X3 = 408,
+    F16MAT3X4 = 409,
+    F16MAT4X2 = 410,
+    F16MAT4X3 = 411,
+    F16MAT4X4 = 412,
+    F32MAT2X2 = 413,
+    F32MAT2X3 = 414,
+    F32MAT2X4 = 415,
+    F32MAT3X2 = 416,
+    F32MAT3X3 = 417,
+    F32MAT3X4 = 418,
+    F32MAT4X2 = 419,
+    F32MAT4X3 = 420,
+    F32MAT4X4 = 421,
+    F64MAT2X2 = 422,
+    F64MAT2X3 = 423,
+    F64MAT2X4 = 424,
+    F64MAT3X2 = 425,
+    F64MAT3X3 = 426,
+    F64MAT3X4 = 427,
+    F64MAT4X2 = 428,
+    F64MAT4X3 = 429,
+    F64MAT4X4 = 430,
+    ATOMIC_UINT = 431,
+    ACCSTRUCTNV = 432,
+    SAMPLER1D = 433,
+    SAMPLER2D = 434,
+    SAMPLER3D = 435,
+    SAMPLERCUBE = 436,
+    SAMPLER1DSHADOW = 437,
+    SAMPLER2DSHADOW = 438,
+    SAMPLERCUBESHADOW = 439,
+    SAMPLER1DARRAY = 440,
+    SAMPLER2DARRAY = 441,
+    SAMPLER1DARRAYSHADOW = 442,
+    SAMPLER2DARRAYSHADOW = 443,
+    ISAMPLER1D = 444,
+    ISAMPLER2D = 445,
+    ISAMPLER3D = 446,
+    ISAMPLERCUBE = 447,
+    ISAMPLER1DARRAY = 448,
+    ISAMPLER2DARRAY = 449,
+    USAMPLER1D = 450,
+    USAMPLER2D = 451,
+    USAMPLER3D = 452,
+    USAMPLERCUBE = 453,
+    USAMPLER1DARRAY = 454,
+    USAMPLER2DARRAY = 455,
+    SAMPLER2DRECT = 456,
+    SAMPLER2DRECTSHADOW = 457,
+    ISAMPLER2DRECT = 458,
+    USAMPLER2DRECT = 459,
+    SAMPLERBUFFER = 460,
+    ISAMPLERBUFFER = 461,
+    USAMPLERBUFFER = 462,
+    SAMPLERCUBEARRAY = 463,
+    SAMPLERCUBEARRAYSHADOW = 464,
+    ISAMPLERCUBEARRAY = 465,
+    USAMPLERCUBEARRAY = 466,
+    SAMPLER2DMS = 467,
+    ISAMPLER2DMS = 468,
+    USAMPLER2DMS = 469,
+    SAMPLER2DMSARRAY = 470,
+    ISAMPLER2DMSARRAY = 471,
+    USAMPLER2DMSARRAY = 472,
+    SAMPLEREXTERNALOES = 473,
+    F16SAMPLER1D = 474,
+    F16SAMPLER2D = 475,
+    F16SAMPLER3D = 476,
+    F16SAMPLER2DRECT = 477,
+    F16SAMPLERCUBE = 478,
+    F16SAMPLER1DARRAY = 479,
+    F16SAMPLER2DARRAY = 480,
+    F16SAMPLERCUBEARRAY = 481,
+    F16SAMPLERBUFFER = 482,
+    F16SAMPLER2DMS = 483,
+    F16SAMPLER2DMSARRAY = 484,
+    F16SAMPLER1DSHADOW = 485,
+    F16SAMPLER2DSHADOW = 486,
+    F16SAMPLER1DARRAYSHADOW = 487,
+    F16SAMPLER2DARRAYSHADOW = 488,
+    F16SAMPLER2DRECTSHADOW = 489,
+    F16SAMPLERCUBESHADOW = 490,
+    F16SAMPLERCUBEARRAYSHADOW = 491,
+    SAMPLER = 492,
+    SAMPLERSHADOW = 493,
+    TEXTURE1D = 494,
+    TEXTURE2D = 495,
+    TEXTURE3D = 496,
+    TEXTURECUBE = 497,
+    TEXTURE1DARRAY = 498,
+    TEXTURE2DARRAY = 499,
+    ITEXTURE1D = 500,
+    ITEXTURE2D = 501,
+    ITEXTURE3D = 502,
+    ITEXTURECUBE = 503,
+    ITEXTURE1DARRAY = 504,
+    ITEXTURE2DARRAY = 505,
+    UTEXTURE1D = 506,
+    UTEXTURE2D = 507,
+    UTEXTURE3D = 508,
+    UTEXTURECUBE = 509,
+    UTEXTURE1DARRAY = 510,
+    UTEXTURE2DARRAY = 511,
+    TEXTURE2DRECT = 512,
+    ITEXTURE2DRECT = 513,
+    UTEXTURE2DRECT = 514,
+    TEXTUREBUFFER = 515,
+    ITEXTUREBUFFER = 516,
+    UTEXTUREBUFFER = 517,
+    TEXTURECUBEARRAY = 518,
+    ITEXTURECUBEARRAY = 519,
+    UTEXTURECUBEARRAY = 520,
+    TEXTURE2DMS = 521,
+    ITEXTURE2DMS = 522,
+    UTEXTURE2DMS = 523,
+    TEXTURE2DMSARRAY = 524,
+    ITEXTURE2DMSARRAY = 525,
+    UTEXTURE2DMSARRAY = 526,
+    F16TEXTURE1D = 527,
+    F16TEXTURE2D = 528,
+    F16TEXTURE3D = 529,
+    F16TEXTURE2DRECT = 530,
+    F16TEXTURECUBE = 531,
+    F16TEXTURE1DARRAY = 532,
+    F16TEXTURE2DARRAY = 533,
+    F16TEXTURECUBEARRAY = 534,
+    F16TEXTUREBUFFER = 535,
+    F16TEXTURE2DMS = 536,
+    F16TEXTURE2DMSARRAY = 537,
+    SUBPASSINPUT = 538,
+    SUBPASSINPUTMS = 539,
+    ISUBPASSINPUT = 540,
+    ISUBPASSINPUTMS = 541,
+    USUBPASSINPUT = 542,
+    USUBPASSINPUTMS = 543,
+    F16SUBPASSINPUT = 544,
+    F16SUBPASSINPUTMS = 545,
+    IMAGE1D = 546,
+    IIMAGE1D = 547,
+    UIMAGE1D = 548,
+    IMAGE2D = 549,
+    IIMAGE2D = 550,
+    UIMAGE2D = 551,
+    IMAGE3D = 552,
+    IIMAGE3D = 553,
+    UIMAGE3D = 554,
+    IMAGE2DRECT = 555,
+    IIMAGE2DRECT = 556,
+    UIMAGE2DRECT = 557,
+    IMAGECUBE = 558,
+    IIMAGECUBE = 559,
+    UIMAGECUBE = 560,
+    IMAGEBUFFER = 561,
+    IIMAGEBUFFER = 562,
+    UIMAGEBUFFER = 563,
+    IMAGE1DARRAY = 564,
+    IIMAGE1DARRAY = 565,
+    UIMAGE1DARRAY = 566,
+    IMAGE2DARRAY = 567,
+    IIMAGE2DARRAY = 568,
+    UIMAGE2DARRAY = 569,
+    IMAGECUBEARRAY = 570,
+    IIMAGECUBEARRAY = 571,
+    UIMAGECUBEARRAY = 572,
+    IMAGE2DMS = 573,
+    IIMAGE2DMS = 574,
+    UIMAGE2DMS = 575,
+    IMAGE2DMSARRAY = 576,
+    IIMAGE2DMSARRAY = 577,
+    UIMAGE2DMSARRAY = 578,
+    F16IMAGE1D = 579,
+    F16IMAGE2D = 580,
+    F16IMAGE3D = 581,
+    F16IMAGE2DRECT = 582,
+    F16IMAGECUBE = 583,
+    F16IMAGE1DARRAY = 584,
+    F16IMAGE2DARRAY = 585,
+    F16IMAGECUBEARRAY = 586,
+    F16IMAGEBUFFER = 587,
+    F16IMAGE2DMS = 588,
+    F16IMAGE2DMSARRAY = 589,
+    STRUCT = 590,
+    VOID = 591,
+    WHILE = 592,
+    IDENTIFIER = 593,
+    TYPE_NAME = 594,
+    FLOATCONSTANT = 595,
+    DOUBLECONSTANT = 596,
+    INT16CONSTANT = 597,
+    UINT16CONSTANT = 598,
+    INT32CONSTANT = 599,
+    UINT32CONSTANT = 600,
+    INTCONSTANT = 601,
+    UINTCONSTANT = 602,
+    INT64CONSTANT = 603,
+    UINT64CONSTANT = 604,
+    BOOLCONSTANT = 605,
+    FLOAT16CONSTANT = 606,
+    LEFT_OP = 607,
+    RIGHT_OP = 608,
+    INC_OP = 609,
+    DEC_OP = 610,
+    LE_OP = 611,
+    GE_OP = 612,
+    EQ_OP = 613,
+    NE_OP = 614,
+    AND_OP = 615,
+    OR_OP = 616,
+    XOR_OP = 617,
+    MUL_ASSIGN = 618,
+    DIV_ASSIGN = 619,
+    ADD_ASSIGN = 620,
+    MOD_ASSIGN = 621,
+    LEFT_ASSIGN = 622,
+    RIGHT_ASSIGN = 623,
+    AND_ASSIGN = 624,
+    XOR_ASSIGN = 625,
+    OR_ASSIGN = 626,
+    SUB_ASSIGN = 627,
+    LEFT_PAREN = 628,
+    RIGHT_PAREN = 629,
+    LEFT_BRACKET = 630,
+    RIGHT_BRACKET = 631,
+    LEFT_BRACE = 632,
+    RIGHT_BRACE = 633,
+    DOT = 634,
+    COMMA = 635,
+    COLON = 636,
+    EQUAL = 637,
+    SEMICOLON = 638,
+    BANG = 639,
+    DASH = 640,
+    TILDE = 641,
+    PLUS = 642,
+    STAR = 643,
+    SLASH = 644,
+    PERCENT = 645,
+    LEFT_ANGLE = 646,
+    RIGHT_ANGLE = 647,
+    VERTICAL_BAR = 648,
+    CARET = 649,
+    AMPERSAND = 650,
+    QUESTION = 651,
+    INVARIANT = 652,
+    PRECISE = 653,
+    HIGH_PRECISION = 654,
+    MEDIUM_PRECISION = 655,
+    LOW_PRECISION = 656,
+    PRECISION = 657,
+    PACKED = 658,
+    RESOURCE = 659,
+    SUPERP = 660
   };
 #endif
 
@@ -567,7 +569,7 @@
         };
     } interm;
 
-#line 571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
+#line 573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -598,7 +600,7 @@
 extern int yylex(YYSTYPE*, TParseContext&);
 
 
-#line 602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
+#line 604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -838,23 +840,23 @@
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  379
+#define YYFINAL  381
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   9248
+#define YYLAST   9294
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  404
+#define YYNTOKENS  406
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  107
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  569
+#define YYNRULES  571
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  710
+#define YYNSTATES  712
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   658
+#define YYMAXUTOK   660
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -928,7 +930,8 @@
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405
 };
 
 #if YYDEBUG
@@ -952,46 +955,47 @@
     1191,  1197,  1200,  1207,  1211,  1215,  1223,  1232,  1235,  1246,
     1249,  1252,  1256,  1260,  1264,  1268,  1274,  1278,  1290,  1304,
     1309,  1315,  1321,  1328,  1334,  1339,  1344,  1349,  1359,  1369,
-    1379,  1391,  1395,  1400,  1405,  1410,  1415,  1420,  1424,  1428,
-    1432,  1436,  1442,  1451,  1458,  1461,  1469,  1473,  1482,  1487,
-    1495,  1499,  1509,  1513,  1517,  1522,  1527,  1532,  1537,  1541,
-    1546,  1551,  1556,  1561,  1566,  1571,  1576,  1581,  1586,  1590,
-    1595,  1600,  1605,  1611,  1617,  1623,  1629,  1635,  1641,  1647,
-    1653,  1659,  1665,  1671,  1677,  1682,  1687,  1692,  1697,  1702,
-    1707,  1713,  1719,  1725,  1731,  1737,  1743,  1749,  1755,  1761,
-    1767,  1773,  1779,  1785,  1791,  1797,  1803,  1809,  1815,  1821,
-    1827,  1833,  1839,  1845,  1851,  1857,  1863,  1869,  1874,  1879,
-    1884,  1889,  1894,  1899,  1904,  1909,  1914,  1919,  1924,  1929,
-    1935,  1941,  1947,  1953,  1959,  1965,  1971,  1977,  1983,  1989,
-    1995,  2001,  2007,  2013,  2019,  2025,  2031,  2037,  2043,  2049,
-    2055,  2061,  2067,  2073,  2079,  2085,  2091,  2097,  2103,  2109,
-    2115,  2121,  2127,  2133,  2139,  2145,  2151,  2157,  2163,  2169,
-    2175,  2181,  2187,  2193,  2199,  2205,  2211,  2217,  2223,  2228,
-    2233,  2238,  2243,  2248,  2253,  2258,  2263,  2268,  2273,  2278,
-    2283,  2288,  2293,  2301,  2309,  2317,  2325,  2333,  2341,  2349,
-    2357,  2365,  2373,  2381,  2389,  2397,  2402,  2407,  2412,  2417,
-    2422,  2427,  2432,  2437,  2442,  2447,  2452,  2457,  2462,  2467,
-    2472,  2477,  2485,  2493,  2498,  2503,  2508,  2516,  2521,  2526,
-    2531,  2539,  2544,  2549,  2554,  2562,  2567,  2572,  2577,  2582,
-    2587,  2595,  2600,  2608,  2613,  2621,  2626,  2634,  2639,  2647,
-    2652,  2660,  2665,  2673,  2678,  2683,  2688,  2693,  2698,  2703,
-    2708,  2713,  2718,  2723,  2728,  2733,  2738,  2743,  2748,  2756,
-    2761,  2766,  2771,  2779,  2784,  2789,  2794,  2802,  2807,  2812,
-    2817,  2825,  2830,  2835,  2840,  2848,  2853,  2858,  2863,  2871,
-    2876,  2881,  2886,  2894,  2899,  2904,  2909,  2917,  2922,  2927,
-    2932,  2940,  2945,  2950,  2955,  2963,  2968,  2973,  2978,  2986,
-    2991,  2996,  3001,  3009,  3014,  3019,  3024,  3032,  3037,  3042,
-    3047,  3055,  3060,  3065,  3070,  3078,  3083,  3088,  3094,  3100,
-    3106,  3115,  3124,  3130,  3136,  3142,  3148,  3153,  3169,  3174,
-    3179,  3187,  3187,  3198,  3198,  3208,  3211,  3224,  3246,  3273,
-    3277,  3283,  3288,  3299,  3302,  3308,  3317,  3320,  3326,  3330,
-    3331,  3337,  3338,  3339,  3340,  3341,  3342,  3343,  3347,  3348,
-    3352,  3348,  3364,  3365,  3369,  3369,  3376,  3376,  3390,  3393,
-    3401,  3409,  3420,  3421,  3425,  3428,  3434,  3441,  3445,  3453,
-    3457,  3470,  3473,  3479,  3479,  3499,  3502,  3508,  3520,  3532,
-    3535,  3541,  3541,  3556,  3556,  3572,  3572,  3593,  3596,  3602,
-    3605,  3611,  3615,  3622,  3627,  3632,  3639,  3642,  3651,  3655,
-    3664,  3667,  3670,  3678,  3678,  3700,  3706,  3709,  3714,  3717
+    1379,  1389,  1398,  1410,  1414,  1419,  1424,  1429,  1434,  1439,
+    1443,  1447,  1451,  1455,  1461,  1470,  1477,  1480,  1488,  1492,
+    1501,  1506,  1514,  1518,  1528,  1532,  1536,  1541,  1546,  1551,
+    1556,  1560,  1565,  1570,  1575,  1580,  1585,  1590,  1595,  1600,
+    1605,  1609,  1614,  1619,  1624,  1630,  1636,  1642,  1648,  1654,
+    1660,  1666,  1672,  1678,  1684,  1690,  1696,  1701,  1706,  1711,
+    1716,  1721,  1726,  1732,  1738,  1744,  1750,  1756,  1762,  1768,
+    1774,  1780,  1786,  1792,  1798,  1804,  1810,  1816,  1822,  1828,
+    1834,  1840,  1846,  1852,  1858,  1864,  1870,  1876,  1882,  1888,
+    1893,  1898,  1903,  1908,  1913,  1918,  1923,  1928,  1933,  1938,
+    1943,  1948,  1954,  1960,  1966,  1972,  1978,  1984,  1990,  1996,
+    2002,  2008,  2014,  2020,  2026,  2032,  2038,  2044,  2050,  2056,
+    2062,  2068,  2074,  2080,  2086,  2092,  2098,  2104,  2110,  2116,
+    2122,  2128,  2134,  2140,  2146,  2152,  2158,  2164,  2170,  2176,
+    2182,  2188,  2194,  2200,  2206,  2212,  2218,  2224,  2230,  2236,
+    2242,  2247,  2252,  2257,  2262,  2267,  2272,  2277,  2282,  2287,
+    2292,  2297,  2302,  2307,  2312,  2320,  2328,  2336,  2344,  2352,
+    2360,  2368,  2376,  2384,  2392,  2400,  2408,  2416,  2421,  2426,
+    2431,  2436,  2441,  2446,  2451,  2456,  2461,  2466,  2471,  2476,
+    2481,  2486,  2491,  2496,  2504,  2512,  2517,  2522,  2527,  2535,
+    2540,  2545,  2550,  2558,  2563,  2568,  2573,  2581,  2586,  2591,
+    2596,  2601,  2606,  2614,  2619,  2627,  2632,  2640,  2645,  2653,
+    2658,  2666,  2671,  2679,  2684,  2692,  2697,  2702,  2707,  2712,
+    2717,  2722,  2727,  2732,  2737,  2742,  2747,  2752,  2757,  2762,
+    2767,  2775,  2780,  2785,  2790,  2798,  2803,  2808,  2813,  2821,
+    2826,  2831,  2836,  2844,  2849,  2854,  2859,  2867,  2872,  2877,
+    2882,  2890,  2895,  2900,  2905,  2913,  2918,  2923,  2928,  2936,
+    2941,  2946,  2951,  2959,  2964,  2969,  2974,  2982,  2987,  2992,
+    2997,  3005,  3010,  3015,  3020,  3028,  3033,  3038,  3043,  3051,
+    3056,  3061,  3066,  3074,  3079,  3084,  3089,  3097,  3102,  3107,
+    3113,  3119,  3125,  3134,  3143,  3149,  3155,  3161,  3167,  3172,
+    3188,  3193,  3198,  3206,  3206,  3217,  3217,  3227,  3230,  3243,
+    3265,  3292,  3296,  3302,  3307,  3318,  3321,  3327,  3336,  3339,
+    3345,  3349,  3350,  3356,  3357,  3358,  3359,  3360,  3361,  3362,
+    3366,  3367,  3371,  3367,  3383,  3384,  3388,  3388,  3395,  3395,
+    3409,  3412,  3420,  3428,  3439,  3440,  3444,  3447,  3453,  3460,
+    3464,  3472,  3476,  3489,  3492,  3498,  3498,  3518,  3521,  3527,
+    3539,  3551,  3554,  3560,  3560,  3575,  3575,  3591,  3591,  3612,
+    3615,  3621,  3624,  3630,  3634,  3641,  3646,  3651,  3658,  3661,
+    3670,  3674,  3683,  3686,  3689,  3697,  3697,  3719,  3725,  3728,
+    3733,  3736
 };
 #endif
 
@@ -1012,39 +1016,40 @@
   "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", "U8VEC2", "U8VEC3",
   "U8VEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID",
   "IN", "OUT", "INOUT", "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED",
-  "NONUNIFORM", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", "COHERENT",
-  "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", "DEVICECOHERENT",
-  "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", "SUBGROUPCOHERENT",
-  "NONPRIVATE", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4",
-  "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", "F16MAT4",
-  "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", "F32MAT4",
-  "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", "F64MAT4",
-  "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", "EXPLICITINTERPAMD",
-  "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "MAT2X2",
-  "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3",
-  "MAT4X4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3",
-  "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3",
-  "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2",
-  "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4",
-  "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3",
-  "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2",
-  "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4",
-  "ATOMIC_UINT", "ACCSTRUCTNV", "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", "F16SAMPLER1D",
-  "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE",
-  "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY",
-  "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY",
-  "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW",
+  "NONUNIFORM", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", "CALLDATANV",
+  "CALLDATAINNV", "COHERENT", "VOLATILE", "RESTRICT", "READONLY",
+  "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT",
+  "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "DVEC2", "DVEC3",
+  "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4",
+  "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4",
+  "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4",
+  "F64MAT2", "F64MAT3", "F64MAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH",
+  "LAYOUT", "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV",
+  "PERVIEWNV", "PERTASKNV", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2",
+  "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3",
+  "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3",
+  "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2",
+  "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4",
+  "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3",
+  "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2",
+  "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4",
+  "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV",
+  "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", "F16SAMPLER1D", "F16SAMPLER2D", "F16SAMPLER3D",
+  "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY",
+  "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER",
+  "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW",
+  "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW",
   "F16SAMPLER2DARRAYSHADOW", "F16SAMPLER2DRECTSHADOW",
   "F16SAMPLERCUBESHADOW", "F16SAMPLERCUBEARRAYSHADOW", "SAMPLER",
   "SAMPLERSHADOW", "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE",
@@ -1170,16 +1175,16 @@
      625,   626,   627,   628,   629,   630,   631,   632,   633,   634,
      635,   636,   637,   638,   639,   640,   641,   642,   643,   644,
      645,   646,   647,   648,   649,   650,   651,   652,   653,   654,
-     655,   656,   657,   658
+     655,   656,   657,   658,   659,   660
 };
 # endif
 
-#define YYPACT_NINF -645
+#define YYPACT_NINF -649
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-645)))
+  (!!((Yystate) == (-649)))
 
-#define YYTABLE_NINF -515
+#define YYTABLE_NINF -517
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -1188,77 +1193,78 @@
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    3495,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -317,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -266,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -314,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -273,
-    -645,  -315,  -355,  -335,  -299,  5878,  -286,  -645,  -239,  -645,
-    -645,  -645,  -645,  4290,  -645,  -645,  -645,  -645,  -233,  -645,
-    -645,   709,  -645,  -645,  -181,   -69,  -218,  -645,  8911,  -340,
-    -645,  -645,  -212,  -645,  5878,  -645,  -645,  -645,  5878,  -168,
-    -167,  -645,  -337,  -303,  -645,  -645,  -645,  6625,  -203,  -645,
-    -645,  -645,  -305,  -645,  -209,  -304,  -645,  -645,  5878,  -208,
-    -645,  -333,  1107,  -645,  -645,  -645,  -645,  -233,  -323,  -645,
-    7006,  -311,  -645,  -164,  -645,  -275,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  8149,
-    8149,  8149,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -322,
-    -645,  -645,  -645,  -198,  -296,  8530,  -196,  -645,  8149,  -251,
-    -292,  -222,  -331,  -225,  -217,  -215,  -213,  -178,  -179,  -334,
-    -192,  -645,  -645,  7387,  -645,  -153,  8149,  -645,   -69,  5878,
-    5878,  -152,  4687,  -645,  -645,  -645,  -195,  -194,  -645,  -186,
-    -183,  -191,  7768,  -182,  8149,  -187,  -177,  -180,  -176,  -645,
-    -645,  -216,  -645,  -645,  -274,  -645,  -355,  -175,  -174,  -645,
-    -645,  -645,  -645,  1505,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -645,   -19,  -203,  7006,  -310,  7006,  -645,  -645,
-    7006,  5878,  -645,  -135,  -645,  -645,  -645,  -295,  -645,  -645,
-    8149,  -134,  -645,  -645,  8149,  -169,  -645,  -645,  -645,  8149,
-    8149,  8149,  8149,  8149,  8149,  8149,  8149,  8149,  8149,  8149,
-    8149,  8149,  8149,  8149,  8149,  8149,  8149,  8149,  -645,  -645,
-    -645,  -170,  -645,  -645,  -645,  -645,  5084,  -152,  -233,  -268,
-    -645,  -645,  -645,  -645,  -645,  1903,  -645,  8149,  -645,  -645,
-    -263,  8149,  -240,  -645,  -645,  -131,  -645,  1903,  -645,  -645,
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  8149,
-    8149,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  7006,  -645,
-    -267,  -645,  5481,  -645,  -645,  -166,  -163,  -645,  -645,  -645,
-    -645,  -645,  -251,  -251,  -292,  -292,  -222,  -222,  -222,  -222,
-    -331,  -331,  -225,  -217,  -215,  -213,  -178,  -179,  8149,  -645,
-    -645,  -261,  -203,  -152,  -645,  -126,  3097,  -291,  -645,  -288,
-    -645,  3893,  -161,  -336,  -645,  1903,  -645,  -645,  -645,  -645,
-    6244,  -645,  -645,  -236,  -645,  -645,  -160,  -645,  -645,  3893,
-    -159,  -645,  -163,  -124,  5878,  -158,  8149,  -157,  -131,  -156,
-    -645,  -645,  8149,  8149,  -645,  -162,  -154,   196,  -149,  2699,
-    -645,  -148,  -151,  2301,  -150,  -645,  -645,  -645,  -645,  -284,
-    8149,  2301,  -159,  -645,  -645,  1903,  7006,  -645,  -645,  -645,
-    -645,  -130,  -163,  -645,  -645,  1903,  -146,  -645,  -645,  -645
+    3511,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -326,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -310,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -316,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -256,  -649,  -317,  -357,  -305,  -269,  5906,  -315,  -649,
+    -225,  -649,  -649,  -649,  -649,  4310,  -649,  -649,  -649,  -649,
+    -234,  -649,  -649,   711,  -649,  -649,  -204,   -69,  -222,  -649,
+    8955,  -335,  -649,  -649,  -218,  -649,  5906,  -649,  -649,  -649,
+    5906,  -170,  -169,  -649,  -339,  -303,  -649,  -649,  -649,  6657,
+    -205,  -649,  -649,  -649,  -307,  -649,  -211,  -302,  -649,  -649,
+    5906,  -210,  -649,  -321,  1111,  -649,  -649,  -649,  -649,  -234,
+    -340,  -649,  7040,  -325,  -649,  -166,  -649,  -292,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  8189,  8189,  8189,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -324,  -649,  -649,  -649,  -200,  -298,  8572,  -198,  -649,
+    8189,  -242,  -278,  -314,  -333,  -209,  -219,  -217,  -215,  -180,
+    -181,  -336,  -194,  -649,  -649,  7423,  -649,  -155,  8189,  -649,
+     -69,  5906,  5906,  -154,  4709,  -649,  -649,  -649,  -197,  -195,
+    -649,  -188,  -184,  -193,  7806,  -179,  8189,  -189,  -178,  -182,
+    -177,  -649,  -649,  -267,  -649,  -649,  -252,  -649,  -357,  -176,
+    -173,  -649,  -649,  -649,  -649,  1511,  -649,  -649,  -649,  -649,
+    -649,  -649,  -649,  -649,  -649,   -19,  -205,  7040,  -311,  7040,
+    -649,  -649,  7040,  5906,  -649,  -142,  -649,  -649,  -649,  -293,
+    -649,  -649,  8189,  -136,  -649,  -649,  8189,  -171,  -649,  -649,
+    -649,  8189,  8189,  8189,  8189,  8189,  8189,  8189,  8189,  8189,
+    8189,  8189,  8189,  8189,  8189,  8189,  8189,  8189,  8189,  8189,
+    -649,  -649,  -649,  -172,  -649,  -649,  -649,  -649,  5108,  -154,
+    -234,  -251,  -649,  -649,  -649,  -649,  -649,  1911,  -649,  8189,
+    -649,  -649,  -245,  8189,  -228,  -649,  -649,  -133,  -649,  1911,
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  8189,  8189,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    7040,  -649,  -285,  -649,  5507,  -649,  -649,  -168,  -165,  -649,
+    -649,  -649,  -649,  -649,  -242,  -242,  -278,  -278,  -314,  -314,
+    -314,  -314,  -333,  -333,  -209,  -219,  -217,  -215,  -180,  -181,
+    8189,  -649,  -649,  -241,  -205,  -154,  -649,  -128,  3111,  -290,
+    -649,  -268,  -649,  3911,  -163,  -297,  -649,  1911,  -649,  -649,
+    -649,  -649,  6274,  -649,  -649,  -223,  -649,  -649,  -162,  -649,
+    -649,  3911,  -161,  -649,  -165,  -126,  5906,  -160,  8189,  -159,
+    -133,  -158,  -649,  -649,  8189,  8189,  -649,  -164,  -156,   196,
+    -151,  2711,  -649,  -131,  -135,  2311,  -152,  -649,  -649,  -649,
+    -649,  -254,  8189,  2311,  -161,  -649,  -649,  1911,  7040,  -649,
+    -649,  -649,  -649,  -134,  -165,  -649,  -649,  1911,  -127,  -649,
+    -649,  -649
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1266,109 +1272,110 @@
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,   157,   158,   195,   193,   196,   194,   197,   156,   208,
-     198,   199,   206,   207,   204,   205,   202,   203,   200,   201,
-     181,   224,   225,   226,   227,   228,   229,   242,   243,   244,
-     239,   240,   241,   254,   255,   256,   236,   237,   238,   251,
-     252,   253,   233,   234,   235,   248,   249,   250,   230,   231,
-     232,   245,   246,   247,   209,   210,   211,   257,   258,   259,
-     162,   160,   161,   159,   165,   163,   164,   166,   170,   183,
-     168,   169,   167,   171,   177,   178,   179,   180,   172,   173,
-     174,   175,   176,   212,   213,   214,   269,   270,   271,   215,
-     216,   217,   281,   282,   283,   218,   219,   220,   293,   294,
-     295,   221,   222,   223,   305,   306,   307,   134,   133,   132,
-       0,   135,   136,   137,   138,   139,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   308,   309,   310,   311,   312,   313,   314,   315,
-     316,   318,   317,   319,   320,   321,   322,   323,   324,   325,
-     326,   327,   328,   329,   345,   346,   347,   348,   349,   350,
-     352,   353,   354,   355,   356,   357,   359,   360,   363,   364,
-     365,   367,   368,   330,   331,   351,   358,   369,   371,   372,
-     373,   375,   376,   467,   332,   333,   334,   361,   335,   339,
-     340,   343,   366,   370,   374,   336,   337,   341,   342,   362,
-     338,   344,   377,   378,   379,   381,   383,   385,   387,   389,
-     393,   394,   395,   396,   397,   398,   400,   401,   402,   403,
-     404,   405,   407,   409,   410,   411,   413,   414,   391,   399,
-     406,   415,   417,   418,   419,   421,   422,   380,   382,   384,
-     408,   386,   388,   390,   392,   412,   416,   420,   468,   469,
-     472,   473,   474,   475,   470,   471,   423,   425,   426,   427,
-     429,   430,   431,   433,   434,   435,   437,   438,   439,   441,
-     442,   443,   445,   446,   447,   449,   450,   451,   453,   454,
-     455,   457,   458,   459,   461,   462,   463,   465,   466,   424,
-     428,   432,   436,   440,   448,   452,   456,   444,   460,   464,
-       0,   192,   477,   562,   131,   146,   478,   479,   480,     0,
-     561,     0,   563,     0,   108,   107,     0,   119,   124,   153,
-     152,   150,   154,     0,   147,   149,   155,   129,   186,   151,
-     476,     0,   558,   560,     0,     0,     0,   483,     0,     0,
-      96,    93,     0,   106,     0,   115,   109,   117,     0,   118,
-       0,    94,   125,     0,    99,   148,   130,     0,   187,     1,
-     559,   184,     0,   145,   143,     0,   141,   481,     0,     0,
-      97,     0,     0,   564,   110,   114,   116,   112,   120,   111,
-       0,   126,   102,     0,   100,     0,     2,    12,    13,    10,
-      11,     4,     5,     6,     7,     8,     9,    15,    14,     0,
-       0,     0,   188,    42,    41,    43,    40,     3,    17,    36,
-      19,    24,    25,     0,     0,    29,     0,    44,     0,    48,
-      51,    54,    59,    62,    64,    66,    68,    70,    72,    74,
-       0,    35,    33,     0,   182,     0,     0,   140,     0,     0,
-       0,     0,     0,   485,    95,    98,     0,     0,   543,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   509,   518,
-     522,    44,    77,    90,     0,   498,     0,   155,   129,   501,
-     520,   500,   499,     0,   502,   503,   524,   504,   531,   505,
-     506,   539,   507,     0,   113,     0,   121,     0,   493,   128,
-       0,     0,   104,     0,   101,    37,    38,     0,    21,    22,
-       0,     0,    27,    26,     0,   192,    30,    32,    39,     0,
+       0,   157,   158,   197,   195,   198,   196,   199,   156,   210,
+     200,   201,   208,   209,   206,   207,   204,   205,   202,   203,
+     183,   226,   227,   228,   229,   230,   231,   244,   245,   246,
+     241,   242,   243,   256,   257,   258,   238,   239,   240,   253,
+     254,   255,   235,   236,   237,   250,   251,   252,   232,   233,
+     234,   247,   248,   249,   211,   212,   213,   259,   260,   261,
+     162,   160,   161,   159,   165,   163,   164,   166,   172,   185,
+     168,   169,   167,   170,   171,   173,   179,   180,   181,   182,
+     174,   175,   176,   177,   178,   214,   215,   216,   271,   272,
+     273,   217,   218,   219,   283,   284,   285,   220,   221,   222,
+     295,   296,   297,   223,   224,   225,   307,   308,   309,   134,
+     133,   132,     0,   135,   136,   137,   138,   139,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   320,   319,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,   347,   348,   349,   350,
+     351,   352,   354,   355,   356,   357,   358,   359,   361,   362,
+     365,   366,   367,   369,   370,   332,   333,   353,   360,   371,
+     373,   374,   375,   377,   378,   469,   334,   335,   336,   363,
+     337,   341,   342,   345,   368,   372,   376,   338,   339,   343,
+     344,   364,   340,   346,   379,   380,   381,   383,   385,   387,
+     389,   391,   395,   396,   397,   398,   399,   400,   402,   403,
+     404,   405,   406,   407,   409,   411,   412,   413,   415,   416,
+     393,   401,   408,   417,   419,   420,   421,   423,   424,   382,
+     384,   386,   410,   388,   390,   392,   394,   414,   418,   422,
+     470,   471,   474,   475,   476,   477,   472,   473,   425,   427,
+     428,   429,   431,   432,   433,   435,   436,   437,   439,   440,
+     441,   443,   444,   445,   447,   448,   449,   451,   452,   453,
+     455,   456,   457,   459,   460,   461,   463,   464,   465,   467,
+     468,   426,   430,   434,   438,   442,   450,   454,   458,   446,
+     462,   466,     0,   194,   479,   564,   131,   146,   480,   481,
+     482,     0,   563,     0,   565,     0,   108,   107,     0,   119,
+     124,   153,   152,   150,   154,     0,   147,   149,   155,   129,
+     188,   151,   478,     0,   560,   562,     0,     0,     0,   485,
+       0,     0,    96,    93,     0,   106,     0,   115,   109,   117,
+       0,   118,     0,    94,   125,     0,    99,   148,   130,     0,
+     189,     1,   561,   186,     0,   145,   143,     0,   141,   483,
+       0,     0,    97,     0,     0,   566,   110,   114,   116,   112,
+     120,   111,     0,   126,   102,     0,   100,     0,     2,    12,
+      13,    10,    11,     4,     5,     6,     7,     8,     9,    15,
+      14,     0,     0,     0,   190,    42,    41,    43,    40,     3,
+      17,    36,    19,    24,    25,     0,     0,    29,     0,    44,
+       0,    48,    51,    54,    59,    62,    64,    66,    68,    70,
+      72,    74,     0,    35,    33,     0,   184,     0,     0,   140,
+       0,     0,     0,     0,     0,   487,    95,    98,     0,     0,
+     545,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     511,   520,   524,    44,    77,    90,     0,   500,     0,   155,
+     129,   503,   522,   502,   501,     0,   504,   505,   526,   506,
+     533,   507,   508,   541,   509,     0,   113,     0,   121,     0,
+     495,   128,     0,     0,   104,     0,   101,    37,    38,     0,
+      21,    22,     0,     0,    27,    26,     0,   194,    30,    32,
+      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    75,   189,
-     190,     0,   185,    92,   144,   142,     0,     0,   491,     0,
-     489,   484,   486,   554,   553,     0,   545,     0,   557,   555,
-       0,     0,     0,   538,   541,     0,   508,     0,    80,    81,
-      83,    82,    85,    86,    87,    88,    89,    84,    79,     0,
-       0,   523,   519,   521,   525,   532,   540,   123,     0,   496,
-       0,   127,     0,   105,    16,     0,    23,    20,    31,    45,
-      46,    47,    50,    49,    52,    53,    57,    58,    55,    56,
-      60,    61,    63,    65,    67,    69,    71,    73,     0,   191,
-     482,     0,   492,     0,   487,     0,     0,     0,   556,     0,
-     537,     0,   568,     0,   566,   510,    78,    91,   122,   494,
-       0,   103,    18,     0,   488,   490,     0,   548,   547,   550,
-     516,   533,   529,     0,     0,     0,     0,     0,     0,     0,
-     495,   497,     0,     0,   549,     0,     0,   528,     0,     0,
-     526,     0,     0,     0,     0,   565,   567,   511,    76,     0,
-     551,     0,   516,   515,   517,   535,     0,   513,   542,   512,
-     569,     0,   552,   546,   527,   536,     0,   530,   544,   534
+      75,   191,   192,     0,   187,    92,   144,   142,     0,     0,
+     493,     0,   491,   486,   488,   556,   555,     0,   547,     0,
+     559,   557,     0,     0,     0,   540,   543,     0,   510,     0,
+      80,    81,    83,    82,    85,    86,    87,    88,    89,    84,
+      79,     0,     0,   525,   521,   523,   527,   534,   542,   123,
+       0,   498,     0,   127,     0,   105,    16,     0,    23,    20,
+      31,    45,    46,    47,    50,    49,    52,    53,    57,    58,
+      55,    56,    60,    61,    63,    65,    67,    69,    71,    73,
+       0,   193,   484,     0,   494,     0,   489,     0,     0,     0,
+     558,     0,   539,     0,   570,     0,   568,   512,    78,    91,
+     122,   496,     0,   103,    18,     0,   490,   492,     0,   550,
+     549,   552,   518,   535,   531,     0,     0,     0,     0,     0,
+       0,     0,   497,   499,     0,     0,   551,     0,     0,   530,
+       0,     0,   528,     0,     0,     0,     0,   567,   569,   513,
+      76,     0,   553,     0,   518,   517,   519,   537,     0,   515,
+     544,   514,   571,     0,   554,   548,   529,   538,     0,   532,
+     546,   536
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,  -645,  -297,  -645,  -468,  -373,  -437,  -374,  -319,  -312,
-    -316,  -290,  -293,  -289,  -645,  -367,  -645,  -391,  -645,  -376,
-    -412,     1,  -645,  -645,  -645,     2,  -645,  -645,  -645,  -112,
-    -107,  -108,  -645,  -645,  -613,  -645,  -645,  -645,  -645,  -197,
-    -645,  -332,  -339,  -645,     6,  -645,     0,  -345,  -645,   -67,
-    -645,  -645,  -645,  -440,  -444,  -294,  -369,  -490,  -645,  -370,
-    -480,  -644,  -410,  -645,  -645,  -422,  -421,  -645,  -645,   -90,
-    -561,  -363,  -645,  -229,  -645,  -384,  -645,  -227,  -645,  -645,
-    -645,  -645,  -226,  -645,  -645,  -645,  -645,  -645,  -645,  -645,
-    -645,   -73,  -645,  -645,  -645,  -645,  -389
+    -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,  -649,  -304,  -649,  -373,  -370,  -416,  -379,  -294,  -322,
+    -291,  -295,  -288,  -296,  -649,  -369,  -649,  -393,  -649,  -382,
+    -414,     1,  -649,  -649,  -649,     2,  -649,  -649,  -649,  -114,
+    -109,  -112,  -649,  -649,  -615,  -649,  -649,  -649,  -649,  -196,
+    -649,  -334,  -341,  -649,     6,  -649,     0,  -347,  -649,   -68,
+    -649,  -649,  -649,  -443,  -448,  -287,  -368,  -492,  -649,  -376,
+    -482,  -648,  -415,  -649,  -649,  -427,  -426,  -649,  -649,   -93,
+    -560,  -365,  -649,  -231,  -649,  -386,  -649,  -229,  -649,  -649,
+    -649,  -649,  -227,  -649,  -649,  -649,  -649,  -649,  -649,  -649,
+    -649,   -76,  -649,  -649,  -649,  -649,  -390
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   427,   428,   429,   605,   430,   431,   432,   433,   434,
-     435,   436,   481,   438,   439,   440,   441,   442,   443,   444,
-     445,   446,   447,   448,   449,   482,   628,   483,   589,   484,
-     554,   485,   331,   511,   405,   486,   333,   334,   335,   365,
-     366,   367,   336,   337,   338,   339,   340,   341,   385,   386,
-     342,   343,   344,   345,   451,   382,   452,   378,   348,   349,
-     350,   459,   388,   462,   463,   559,   560,   509,   600,   489,
-     490,   491,   492,   577,   669,   698,   677,   678,   679,   699,
-     493,   494,   495,   496,   680,   665,   497,   498,   681,   706,
-     499,   500,   501,   641,   565,   636,   659,   675,   676,   502,
-     351,   352,   353,   362,   503,   643,   644
+      -1,   429,   430,   431,   607,   432,   433,   434,   435,   436,
+     437,   438,   483,   440,   441,   442,   443,   444,   445,   446,
+     447,   448,   449,   450,   451,   484,   630,   485,   591,   486,
+     556,   487,   333,   513,   407,   488,   335,   336,   337,   367,
+     368,   369,   338,   339,   340,   341,   342,   343,   387,   388,
+     344,   345,   346,   347,   453,   384,   454,   380,   350,   351,
+     352,   461,   390,   464,   465,   561,   562,   511,   602,   491,
+     492,   493,   494,   579,   671,   700,   679,   680,   681,   701,
+     495,   496,   497,   498,   682,   667,   499,   500,   683,   708,
+     501,   502,   503,   643,   567,   638,   661,   677,   678,   504,
+     353,   354,   355,   364,   505,   645,   646
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1376,555 +1383,78 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     347,   330,   332,   368,   375,   468,   346,   469,   470,   508,
-     450,   473,   383,   593,   391,   597,   645,   599,   562,   556,
-     601,   359,   356,   536,   537,   547,   361,   401,   663,   375,
-     518,   519,   368,   377,   399,   694,   377,   363,   667,   697,
-     453,   390,   668,   400,   526,   517,   663,   697,   465,   -34,
-     377,   520,   504,   506,   354,   521,   460,   505,   538,   539,
-     548,   357,   453,   453,   612,   613,   360,   454,   457,   510,
-     598,   602,   402,   455,   458,   403,   523,   604,   404,   364,
-     437,   660,   524,   590,   661,   635,   551,   590,   701,   553,
-     590,   532,   370,   533,   590,   371,   570,   372,   572,   616,
-     617,   618,   619,   513,   590,   355,   514,   591,   648,   649,
-     633,   650,   562,   634,   508,   590,   508,   633,   638,   508,
-     654,   375,   515,   516,   326,   327,   328,   460,   534,   535,
-     460,   540,   541,   608,   705,   529,   530,   531,   590,   640,
-     377,   528,   590,   672,   606,   578,   579,   580,   581,   582,
-     583,   584,   585,   586,   587,   381,   437,   387,   562,   437,
-     671,   614,   615,   392,   588,   593,   620,   621,   397,   398,
-     453,   456,   512,   464,   522,   527,   542,   543,   544,   460,
-     545,   546,   549,   552,   558,   566,   563,   564,   567,   571,
-     568,   637,   573,   575,   574,   639,   -35,   -33,   646,   647,
-     576,   603,   607,   -28,   629,   642,   707,   508,   652,   656,
-     666,   673,   682,   632,   683,   590,  -514,   685,   691,   690,
-     687,   692,   700,   622,   460,   593,   478,   695,   624,   696,
-     709,   623,   609,   610,   611,   437,   437,   437,   437,   437,
-     437,   437,   437,   437,   437,   437,   437,   437,   437,   437,
-     437,   708,   653,   626,   684,   625,   395,   394,   627,   508,
-     396,   555,   358,   631,   655,   662,   657,   384,   693,   703,
-     460,   704,   393,   658,   594,   674,   595,   596,   380,   686,
-       0,   688,     0,   662,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   689,     0,   553,
-       0,     0,     0,     0,     0,   508,     0,     0,     0,   664,
-       0,     0,     0,     0,   702,     0,   476,     0,     0,     0,
-       0,     0,     0,     0,     0,   375,     0,   664,     0,     0,
-       0,     0,     0,     0,     0,   369,     0,     0,     0,     0,
-       0,   346,     0,   376,     0,     0,     0,     0,     0,   346,
-       0,   347,   330,   332,     0,     0,     0,   346,   389,     0,
-       0,     0,     0,     0,   369,     0,     0,     0,   369,   437,
-     346,     0,     0,     0,   346,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   461,     0,
-       0,     0,   488,     0,   346,     0,     0,     0,   487,     0,
+     349,   332,   334,   370,   377,   470,   348,   471,   472,   510,
+     452,   475,   385,   595,   393,   599,   564,   601,   558,   647,
+     603,   361,   358,   538,   539,   549,   363,   403,   665,   377,
+     520,   521,   370,   696,   401,   379,   379,   699,   536,   537,
+     379,   519,   507,   402,   528,   699,   665,   356,   392,   -34,
+     455,   522,   506,   508,   455,   523,   462,   512,   540,   541,
+     550,   359,   467,   357,   455,   372,   362,   456,   373,   365,
+     604,   600,   459,   457,   404,   439,   525,   405,   460,   669,
+     406,   606,   526,   670,   662,   637,   553,   592,   515,   555,
+     592,   516,   572,   651,   574,   652,   580,   581,   582,   583,
+     584,   585,   586,   587,   588,   589,   663,   534,   650,   535,
+     564,   366,   592,   374,   510,   590,   510,   517,   518,   510,
+     703,   377,   618,   619,   620,   621,   592,   462,   592,   635,
+     462,   593,   636,   610,   383,   592,   530,   707,   640,   635,
+     608,   379,   656,   328,   329,   330,   531,   532,   533,   542,
+     543,   439,   592,   642,   439,   389,   564,   592,   674,   394,
+     673,   614,   615,   622,   623,   595,   616,   617,   399,   400,
+     455,   458,   514,   466,   524,   529,   544,   545,   546,   462,
+     547,   548,   551,   554,   560,   568,   565,   639,   566,   569,
+     570,   641,   575,   577,   573,   576,   605,   -35,   648,   649,
+     -33,   578,   609,   -28,   631,   644,   709,   510,   654,   658,
+     668,   675,   684,   634,   685,   592,  -516,   687,   693,   692,
+     689,   694,   702,   625,   462,   595,   480,   611,   612,   613,
+     439,   439,   439,   439,   439,   439,   439,   439,   439,   439,
+     439,   439,   439,   439,   439,   439,   697,   698,   655,   710,
+     624,   711,   627,   629,   686,   626,   397,   396,   398,   510,
+     628,   664,   659,   360,   557,   695,   705,   657,   706,   386,
+     462,   395,   633,   660,   596,   676,   597,   382,   598,   664,
+     688,   690,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   691,     0,     0,     0,     0,     0,   555,
+       0,     0,     0,     0,     0,   510,     0,     0,     0,   666,
+     704,     0,     0,     0,     0,     0,     0,     0,   478,     0,
+       0,     0,     0,     0,     0,   377,     0,   666,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   371,     0,     0,
+       0,     0,     0,   348,     0,   378,     0,     0,     0,     0,
+       0,   348,     0,   349,   332,   334,     0,     0,     0,   348,
+     391,     0,     0,     0,   439,     0,   371,     0,     0,     0,
+     371,     0,   348,     0,     0,     0,   348,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     463,     0,     0,     0,   490,     0,   348,     0,     0,     0,
+     489,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   461,
-     557,     0,   461,     0,     0,   346,   346,     0,   346,     0,
+       0,   463,   559,     0,   463,     0,     0,   348,   348,     0,
+     348,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   488,     0,     0,     0,     0,     0,   487,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   461,     0,     0,     0,     0,     0,   346,     0,     0,
+       0,     0,     0,     0,     0,   490,     0,     0,     0,     0,
+       0,   489,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   463,     0,     0,     0,     0,     0,   348,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   461,     0,     0,     0,
-       0,     0,   346,     0,     0,   488,     0,     0,     0,     0,
-       0,   487,     0,     0,     0,     0,     0,   488,     0,     0,
-       0,     0,     0,   487,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   463,     0,
+       0,     0,     0,     0,   348,     0,     0,   490,     0,     0,
+       0,     0,     0,   489,     0,     0,     0,     0,     0,   490,
+       0,     0,     0,     0,     0,   489,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   461,     0,     0,     0,     0,     0,   346,     0,
+       0,     0,     0,     0,   463,     0,     0,     0,     0,     0,
+     348,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   488,     0,     0,     0,
-       0,   488,   487,     0,     0,   488,     0,   487,     0,     0,
-       0,   487,     0,     0,     0,     0,     0,     0,     0,   488,
-       0,     0,     0,     0,   376,   487,     0,     0,     0,     0,
-     346,     0,     0,     0,     0,     0,     0,     0,     0,   488,
-       0,     0,     0,   488,     0,   487,     0,     0,     0,   487,
-       0,   488,     0,     0,     0,   488,     0,   487,     0,     0,
-       0,   487,     0,     0,     0,   488,     0,     0,     0,   379,
-       0,   487,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
-     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
-     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
-     318,   319,   320,   321,     0,     0,   322,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     323,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   324,   325,   326,   327,   328,   329,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,   466,
-     467,   468,     0,   469,   470,   471,   472,   473,   474,   475,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,   476,   406,   322,   407,   408,   409,   410,   411,
-     412,   413,   414,   415,   416,   417,   418,     0,     0,   419,
-     420,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   421,     0,
-     477,     0,   478,   479,     0,     0,     0,     0,   480,   423,
-     424,   425,   426,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   324,   325,   326,   327,   328,   329,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,   466,   467,   468,
-       0,   469,   470,   471,   472,   473,   474,   475,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
-     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
-     476,   406,   322,   407,   408,   409,   410,   411,   412,   413,
-     414,   415,   416,   417,   418,     0,     0,   419,   420,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   421,     0,   477,     0,
-     478,   592,     0,     0,     0,     0,   480,   423,   424,   425,
-     426,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     324,   325,   326,   327,   328,   329,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,   466,   467,   468,     0,   469,
-     470,   471,   472,   473,   474,   475,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,   476,   406,
-     322,   407,   408,   409,   410,   411,   412,   413,   414,   415,
-     416,   417,   418,     0,     0,   419,   420,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   421,     0,   477,     0,   478,     0,
-       0,     0,     0,     0,   480,   423,   424,   425,   426,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   324,   325,
-     326,   327,   328,   329,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,   466,   467,   468,     0,   469,   470,   471,
-     472,   473,   474,   475,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,   476,   406,   322,   407,
-     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
-     418,     0,     0,   419,   420,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   421,     0,   477,     0,   392,     0,     0,     0,
-       0,     0,   480,   423,   424,   425,   426,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   324,   325,   326,   327,
-     328,   329,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,   466,   467,   468,     0,   469,   470,   471,   472,   473,
-     474,   475,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
-     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
-     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
-     318,   319,   320,   321,   476,   406,   322,   407,   408,   409,
-     410,   411,   412,   413,   414,   415,   416,   417,   418,     0,
-       0,   419,   420,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     421,     0,   477,     0,     0,     0,     0,     0,     0,     0,
-     480,   423,   424,   425,   426,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   324,   325,   326,   327,   328,   329,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,     0,   406,   322,   407,   408,   409,   410,   411,
-     412,   413,   414,   415,   416,   417,   418,     0,     0,   419,
-     420,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   421,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   480,   423,
-     424,   425,   426,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   324,   325,   326,   327,   328,   329,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
-     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
-       0,     0,   322,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   323,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     324,   325,   326,   327,   328,   329,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,     0,   406,
-     322,   407,   408,   409,   410,   411,   412,   413,   414,   415,
-     416,   417,   418,     0,     0,   419,   420,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   421,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   423,   424,   425,   426,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   324,   325,
-     326,   327,   328,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
-     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
-     317,   318,   319,   320,   321,     0,   373,   322,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   374,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   324,   325,   326,   327,   328,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,     0,     0,   322,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   561,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   324,   325,   326,   327,   328,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,   316,   317,   318,   319,   320,   321,     0,
-       0,   322,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     630,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   324,
-     325,   326,   327,   328,     1,     2,     3,     4,     5,     6,
+       0,     0,     0,     0,     0,     0,     0,     0,   490,     0,
+       0,     0,     0,   490,   489,     0,     0,   490,     0,   489,
+       0,     0,     0,   489,     0,     0,     0,     0,     0,     0,
+       0,   490,     0,     0,     0,     0,   378,   489,     0,     0,
+       0,     0,   348,     0,     0,     0,     0,     0,     0,     0,
+       0,   490,     0,     0,     0,   490,     0,   489,     0,     0,
+       0,   489,     0,   490,     0,     0,     0,   490,     0,   489,
+       0,     0,     0,   489,     0,     0,     0,   490,     0,     0,
+       0,   381,     0,   489,     1,     2,     3,     4,     5,     6,
        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
       17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
@@ -1957,14 +1487,414 @@
      286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
      296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
      306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,     0,     0,   322,     0,
+     316,   317,   318,   319,   320,   321,   322,   323,     0,     0,
+     324,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   651,     0,     0,
+       0,     0,     0,     0,   325,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
+     328,   329,   330,   331,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,   468,   469,   470,     0,   471,   472,   473,
+     474,   475,   476,   477,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   478,   408,
+     324,   409,   410,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   420,     0,     0,   421,   422,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   324,   325,   326,   327,
-     328,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+       0,     0,     0,     0,   423,     0,   479,     0,   480,   481,
+       0,     0,     0,     0,   482,   425,   426,   427,   428,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
+     328,   329,   330,   331,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,   468,   469,   470,     0,   471,   472,   473,
+     474,   475,   476,   477,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   478,   408,
+     324,   409,   410,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   420,     0,     0,   421,   422,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   423,     0,   479,     0,   480,   594,
+       0,     0,     0,     0,   482,   425,   426,   427,   428,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
+     328,   329,   330,   331,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,   468,   469,   470,     0,   471,   472,   473,
+     474,   475,   476,   477,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   478,   408,
+     324,   409,   410,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   420,     0,     0,   421,   422,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   423,     0,   479,     0,   480,     0,
+       0,     0,     0,     0,   482,   425,   426,   427,   428,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
+     328,   329,   330,   331,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,   468,   469,   470,     0,   471,   472,   473,
+     474,   475,   476,   477,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   478,   408,
+     324,   409,   410,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   420,     0,     0,   421,   422,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   423,     0,   479,     0,   394,     0,
+       0,     0,     0,     0,   482,   425,   426,   427,   428,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
+     328,   329,   330,   331,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,   468,   469,   470,     0,   471,   472,   473,
+     474,   475,   476,   477,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   478,   408,
+     324,   409,   410,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   420,     0,     0,   421,   422,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   423,     0,   479,     0,     0,     0,
+       0,     0,     0,     0,   482,   425,   426,   427,   428,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
+     328,   329,   330,   331,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,     0,   408,
+     324,   409,   410,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   420,     0,     0,   421,   422,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   423,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   482,   425,   426,   427,   428,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
+     328,   329,   330,   331,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,     0,     0,
+     324,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     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,   326,   327,
+     328,   329,   330,   331,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,     0,   408,
+     324,   409,   410,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   420,     0,     0,   421,   422,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   423,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   425,   426,   427,   428,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   326,   327,
+     328,   329,   330,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
+     317,   318,   319,   320,   321,   322,   323,     0,   375,   324,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   376,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   326,   327,   328,
+     329,   330,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,   323,     0,     0,   324,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   563,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   326,   327,   328,   329,
+     330,     1,     2,     3,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    20,    21,    22,    23,    24,    25,    26,    27,    28,
@@ -1997,137 +1927,26 @@
      289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
      299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
      309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,     0,     0,   322,     0,     0,     0,     0,
+     319,   320,   321,   322,   323,     0,     0,   324,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     3,
-       4,     5,     6,     7,     0,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
-       0,     0,     0,   324,   325,   326,   327,   328,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    69,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,   316,   317,   318,   319,   320,   321,     0,
-     406,   322,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,     0,     0,   419,   420,     0,     0,
+       0,     0,     0,     0,     0,     0,   632,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   421,     0,     0,     0,   507,
-     670,     0,     0,     0,     0,     0,   423,   424,   425,   426,
-       3,     4,     5,     6,     7,     0,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    69,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
-     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
-       0,   406,   322,   407,   408,   409,   410,   411,   412,   413,
-     414,   415,   416,   417,   418,     0,     0,   419,   420,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   421,     0,     0,   422,
-       0,     0,     0,     0,     0,     0,     0,   423,   424,   425,
-     426,     3,     4,     5,     6,     7,     0,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    69,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
-     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
-     321,     0,   406,   322,   407,   408,   409,   410,   411,   412,
-     413,   414,   415,   416,   417,   418,     0,     0,   419,   420,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   421,     0,     0,
-       0,   507,     0,     0,     0,     0,     0,     0,   423,   424,
-     425,   426,     3,     4,     5,     6,     7,     0,     9,    10,
+       0,     0,     0,     0,     0,   326,   327,   328,   329,   330,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
       11,    12,    13,    14,    15,    16,    17,    18,    19,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      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,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    69,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    83,    84,    85,    86,    87,    88,    89,
+      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,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   116,   117,   118,   119,
+     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,
@@ -2148,238 +1967,18 @@
      290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
      300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,     0,   406,   322,   407,   408,   409,   410,   411,
-     412,   413,   414,   415,   416,   417,   418,     0,     0,   419,
-     420,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   421,     0,
-       0,   550,     0,     0,     0,     0,     0,     0,     0,   423,
-     424,   425,   426,     3,     4,     5,     6,     7,     0,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+     320,   321,   322,   323,     0,     0,   324,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      69,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    83,    84,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,     0,   406,   322,   407,   408,   409,   410,
-     411,   412,   413,   414,   415,   416,   417,   418,     0,     0,
-     419,   420,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   421,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   569,
-     423,   424,   425,   426,     3,     4,     5,     6,     7,     0,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    69,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    83,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
-     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
-     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
-     318,   319,   320,   321,     0,   406,   322,   407,   408,   409,
-     410,   411,   412,   413,   414,   415,   416,   417,   418,     0,
-       0,   419,   420,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     421,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   423,   424,   425,   426,     3,     4,     5,     6,     7,
-       0,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    69,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
-     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
-     317,   318,   319,   320,   525,     0,   406,   322,   407,   408,
-     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
-       0,     0,   419,   420,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   421,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   423,   424,   425,   426,     3,     4,     5,     6,
-       7,     0,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   653,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,     0,     0,   322
-};
-
-static const yytype_int16 yycheck[] =
-{
-       0,     0,     0,   335,   343,    24,     0,    26,    27,   400,
-     377,    30,    81,   493,   359,   505,   577,   507,   462,   459,
-     510,   336,   336,   354,   355,   359,   381,   372,   641,   368,
-     352,   353,   364,   373,   371,   679,   373,   372,   374,   683,
-     373,   381,   378,   380,   435,   421,   659,   691,   381,   371,
-     373,   373,   397,   398,   371,   377,   388,   380,   389,   390,
-     394,   375,   373,   373,   532,   533,   381,   372,   372,   380,
-     380,   511,   375,   378,   378,   378,   372,   372,   381,   378,
-     377,   372,   378,   378,   372,   565,   453,   378,   372,   456,
-     378,   383,   378,   385,   378,   381,   472,   336,   474,   536,
-     537,   538,   539,   378,   378,   371,   381,   381,   598,   376,
-     378,   378,   556,   381,   505,   378,   507,   378,   381,   510,
-     381,   460,   419,   420,   397,   398,   399,   459,   350,   351,
-     462,   356,   357,   524,   695,   386,   387,   388,   378,   379,
-     373,   438,   378,   379,   520,   361,   362,   363,   364,   365,
-     366,   367,   368,   369,   370,   336,   453,   375,   602,   456,
-     650,   534,   535,   375,   380,   645,   540,   541,   336,   336,
-     373,   380,   336,   381,   372,   371,   393,   392,   391,   511,
-     358,   360,   374,   336,   336,   371,   381,   381,   371,   371,
-     381,   567,   379,   373,   371,   571,   371,   371,   589,   590,
-     376,   336,   336,   372,   374,   336,   696,   598,   374,   335,
-     371,   371,   336,   558,   372,   378,   375,   374,   372,   381,
-     376,    25,   372,   542,   556,   705,   375,   375,   544,   380,
-     376,   543,   529,   530,   531,   532,   533,   534,   535,   536,
-     537,   538,   539,   540,   541,   542,   543,   544,   545,   546,
-     547,   381,   628,   546,   666,   545,   368,   364,   547,   650,
-     368,   458,   329,   557,   633,   641,   636,   336,   678,   691,
-     602,   692,   362,   636,   503,   659,   503,   503,   351,   668,
-      -1,   672,    -1,   659,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   673,    -1,   666,
-      -1,    -1,    -1,    -1,    -1,   696,    -1,    -1,    -1,   641,
-      -1,    -1,    -1,    -1,   690,    -1,   335,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   664,    -1,   659,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,    -1,
-      -1,   335,    -1,   343,    -1,    -1,    -1,    -1,    -1,   343,
-      -1,   351,   351,   351,    -1,    -1,    -1,   351,   358,    -1,
-      -1,    -1,    -1,    -1,   364,    -1,    -1,    -1,   368,   666,
-     364,    -1,    -1,    -1,   368,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,    -1,
-      -1,    -1,   392,    -1,   388,    -1,    -1,    -1,   392,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   459,
-     460,    -1,   462,    -1,    -1,   459,   460,    -1,   462,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   493,    -1,    -1,    -1,    -1,    -1,   493,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   511,    -1,    -1,    -1,    -1,    -1,   511,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   556,    -1,    -1,    -1,
-      -1,    -1,   556,    -1,    -1,   565,    -1,    -1,    -1,    -1,
-      -1,   565,    -1,    -1,    -1,    -1,    -1,   577,    -1,    -1,
-      -1,    -1,    -1,   577,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   602,    -1,    -1,    -1,    -1,    -1,   602,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   636,    -1,    -1,    -1,
-      -1,   641,   636,    -1,    -1,   645,    -1,   641,    -1,    -1,
-      -1,   645,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   659,
-      -1,    -1,    -1,    -1,   664,   659,    -1,    -1,    -1,    -1,
-     664,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   679,
-      -1,    -1,    -1,   683,    -1,   679,    -1,    -1,    -1,   683,
-      -1,   691,    -1,    -1,    -1,   695,    -1,   691,    -1,    -1,
-      -1,   695,    -1,    -1,    -1,   705,    -1,    -1,    -1,     0,
-      -1,   705,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    33,    34,    35,    36,    37,    38,    39,    40,
+       0,     0,     0,     0,   326,   327,   328,   329,   330,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
@@ -2408,26 +2007,23 @@
      291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
      301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
-     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
-     331,   332,   333,   334,    -1,    -1,   337,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     381,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   395,   396,   397,   398,   399,   400,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
+     321,   322,   323,     0,     0,   324,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     3,
+       4,     5,     6,     7,     0,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
+       0,     0,     0,   326,   327,   328,   329,   330,    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,
+      53,    54,    55,    56,    57,    58,    59,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    69,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    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,
+     103,   104,   105,   106,   107,   108,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   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,
@@ -2448,66 +2044,63 @@
      293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
      303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
      313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
-     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
-     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
-     343,   344,   345,   346,   347,   348,   349,    -1,    -1,   352,
-     353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   371,    -1,
-     373,    -1,   375,   376,    -1,    -1,    -1,    -1,   381,   382,
-     383,   384,   385,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   395,   396,   397,   398,   399,   400,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      -1,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,    -1,    -1,   352,   353,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   371,    -1,   373,    -1,
-     375,   376,    -1,    -1,    -1,    -1,   381,   382,   383,   384,
-     385,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     395,   396,   397,   398,   399,   400,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    -1,    26,
+     323,     0,   408,   324,   409,   410,   411,   412,   413,   414,
+     415,   416,   417,   418,   419,   420,     0,     0,   421,   422,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   423,     0,     0,
+       0,   509,   672,     0,     0,     0,     0,     0,   425,   426,
+     427,   428,     3,     4,     5,     6,     7,     0,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    69,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,     0,   408,   324,   409,   410,   411,
+     412,   413,   414,   415,   416,   417,   418,   419,   420,     0,
+       0,   421,   422,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     423,     0,     0,   424,     0,     0,     0,     0,     0,     0,
+       0,   425,   426,   427,   428,     3,     4,     5,     6,     7,
+       0,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    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,
+      57,    58,    59,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    69,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    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,
+     107,   108,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   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,
@@ -2527,15 +2120,315 @@
      287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
      297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
      307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
-     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
-     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
-     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
-     347,   348,   349,    -1,    -1,   352,   353,    -1,    -1,    -1,
+     317,   318,   319,   320,   321,   322,   323,     0,   408,   324,
+     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
+     419,   420,     0,     0,   421,   422,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   423,     0,     0,     0,   509,     0,     0,
+       0,     0,     0,     0,   425,   426,   427,   428,     3,     4,
+       5,     6,     7,     0,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    69,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
+       0,   408,   324,   409,   410,   411,   412,   413,   414,   415,
+     416,   417,   418,   419,   420,     0,     0,   421,   422,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   423,     0,     0,   552,
+       0,     0,     0,     0,     0,     0,     0,   425,   426,   427,
+     428,     3,     4,     5,     6,     7,     0,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    69,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+     321,   322,   323,     0,   408,   324,   409,   410,   411,   412,
+     413,   414,   415,   416,   417,   418,   419,   420,     0,     0,
+     421,   422,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   423,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   571,
+     425,   426,   427,   428,     3,     4,     5,     6,     7,     0,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    69,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,   323,     0,   408,   324,   409,
+     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
+     420,     0,     0,   421,   422,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   423,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   425,   426,   427,   428,     3,     4,     5,
+       6,     7,     0,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    69,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   527,     0,
+     408,   324,   409,   410,   411,   412,   413,   414,   415,   416,
+     417,   418,   419,   420,     0,     0,   421,   422,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   423,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   425,   426,   427,   428,
+       3,     4,     5,     6,     7,     0,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   108,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,     0,     0,   324
+};
+
+static const yytype_int16 yycheck[] =
+{
+       0,     0,     0,   337,   345,    24,     0,    26,    27,   402,
+     379,    30,    81,   495,   361,   507,   464,   509,   461,   579,
+     512,   338,   338,   356,   357,   361,   383,   374,   643,   370,
+     354,   355,   366,   681,   373,   375,   375,   685,   352,   353,
+     375,   423,   382,   382,   437,   693,   661,   373,   383,   373,
+     375,   375,   399,   400,   375,   379,   390,   382,   391,   392,
+     396,   377,   383,   373,   375,   380,   383,   374,   383,   374,
+     513,   382,   374,   380,   377,   379,   374,   380,   380,   376,
+     383,   374,   380,   380,   374,   567,   455,   380,   380,   458,
+     380,   383,   474,   378,   476,   380,   363,   364,   365,   366,
+     367,   368,   369,   370,   371,   372,   374,   385,   600,   387,
+     558,   380,   380,   338,   507,   382,   509,   421,   422,   512,
+     374,   462,   538,   539,   540,   541,   380,   461,   380,   380,
+     464,   383,   383,   526,   338,   380,   440,   697,   383,   380,
+     522,   375,   383,   399,   400,   401,   388,   389,   390,   358,
+     359,   455,   380,   381,   458,   377,   604,   380,   381,   377,
+     652,   534,   535,   542,   543,   647,   536,   537,   338,   338,
+     375,   382,   338,   383,   374,   373,   395,   394,   393,   513,
+     360,   362,   376,   338,   338,   373,   383,   569,   383,   373,
+     383,   573,   381,   375,   373,   373,   338,   373,   591,   592,
+     373,   378,   338,   374,   376,   338,   698,   600,   376,   337,
+     373,   373,   338,   560,   374,   380,   377,   376,   374,   383,
+     378,    25,   374,   545,   558,   707,   377,   531,   532,   533,
+     534,   535,   536,   537,   538,   539,   540,   541,   542,   543,
+     544,   545,   546,   547,   548,   549,   377,   382,   630,   383,
+     544,   378,   547,   549,   668,   546,   370,   366,   370,   652,
+     548,   643,   638,   331,   460,   680,   693,   635,   694,   338,
+     604,   364,   559,   638,   505,   661,   505,   353,   505,   661,
+     670,   674,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   675,    -1,    -1,    -1,    -1,    -1,   668,
+      -1,    -1,    -1,    -1,    -1,   698,    -1,    -1,    -1,   643,
+     692,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   337,    -1,
+      -1,    -1,    -1,    -1,    -1,   666,    -1,   661,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   337,    -1,    -1,
+      -1,    -1,    -1,   337,    -1,   345,    -1,    -1,    -1,    -1,
+      -1,   345,    -1,   353,   353,   353,    -1,    -1,    -1,   353,
+     360,    -1,    -1,    -1,   668,    -1,   366,    -1,    -1,    -1,
+     370,    -1,   366,    -1,    -1,    -1,   370,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   371,    -1,   373,    -1,   375,    -1,
-      -1,    -1,    -1,    -1,   381,   382,   383,   384,   385,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   395,   396,
-     397,   398,   399,   400,     3,     4,     5,     6,     7,     8,
+     390,    -1,    -1,    -1,   394,    -1,   390,    -1,    -1,    -1,
+     394,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   461,   462,    -1,   464,    -1,    -1,   461,   462,    -1,
+     464,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   495,    -1,    -1,    -1,    -1,
+      -1,   495,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,    -1,   513,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   558,    -1,
+      -1,    -1,    -1,    -1,   558,    -1,    -1,   567,    -1,    -1,
+      -1,    -1,    -1,   567,    -1,    -1,    -1,    -1,    -1,   579,
+      -1,    -1,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   604,    -1,    -1,    -1,    -1,    -1,
+     604,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   638,    -1,
+      -1,    -1,    -1,   643,   638,    -1,    -1,   647,    -1,   643,
+      -1,    -1,    -1,   647,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   661,    -1,    -1,    -1,    -1,   666,   661,    -1,    -1,
+      -1,    -1,   666,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   681,    -1,    -1,    -1,   685,    -1,   681,    -1,    -1,
+      -1,   685,    -1,   693,    -1,    -1,    -1,   697,    -1,   693,
+      -1,    -1,    -1,   697,    -1,    -1,    -1,   707,    -1,    -1,
+      -1,     0,    -1,   707,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,    -1,    -1,
+     339,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   383,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,   402,     3,     4,     5,     6,     7,     8,
        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
@@ -2570,290 +2463,172 @@
      319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
      329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
      339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
-     349,    -1,    -1,   352,   353,    -1,    -1,    -1,    -1,    -1,
+     349,   350,   351,    -1,    -1,   354,   355,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   371,    -1,   373,    -1,   375,    -1,    -1,    -1,
-      -1,    -1,   381,   382,   383,   384,   385,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   395,   396,   397,   398,
-     399,   400,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
-     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
-     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
-     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
-     341,   342,   343,   344,   345,   346,   347,   348,   349,    -1,
-      -1,   352,   353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   373,    -1,   375,    -1,   377,   378,
+      -1,    -1,    -1,    -1,   383,   384,   385,   386,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,   402,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,    -1,    -1,   354,   355,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     371,    -1,   373,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     381,   382,   383,   384,   385,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   395,   396,   397,   398,   399,   400,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
+      -1,    -1,    -1,    -1,   373,    -1,   375,    -1,   377,   378,
+      -1,    -1,    -1,    -1,   383,   384,   385,   386,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,   402,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,    -1,    -1,   354,   355,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
-     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
-     333,   334,    -1,   336,   337,   338,   339,   340,   341,   342,
-     343,   344,   345,   346,   347,   348,   349,    -1,    -1,   352,
-     353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   371,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   381,   382,
-     383,   384,   385,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   395,   396,   397,   398,   399,   400,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-      -1,    -1,   337,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   373,    -1,   375,    -1,   377,    -1,
+      -1,    -1,    -1,    -1,   383,   384,   385,   386,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,   402,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,    -1,    -1,   354,   355,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   373,    -1,   375,    -1,   377,    -1,
+      -1,    -1,    -1,    -1,   383,   384,   385,   386,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,   402,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,    -1,    -1,   354,   355,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   381,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     395,   396,   397,   398,   399,   400,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
-     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
-     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
-     327,   328,   329,   330,   331,   332,   333,   334,    -1,   336,
-     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
-     347,   348,   349,    -1,    -1,   352,   353,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   371,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   382,   383,   384,   385,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   395,   396,
-     397,   398,   399,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     330,   331,   332,   333,   334,    -1,   336,   337,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   381,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   395,   396,   397,   398,   399,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
-     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
-     333,   334,    -1,    -1,   337,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   376,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   395,   396,   397,   398,   399,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
-     326,   327,   328,   329,   330,   331,   332,   333,   334,    -1,
-      -1,   337,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   395,
-     396,   397,   398,   399,     3,     4,     5,     6,     7,     8,
+      -1,    -1,    -1,    -1,   373,    -1,   375,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   383,   384,   385,   386,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,   402,     3,     4,     5,     6,     7,     8,
        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    33,    34,    35,    36,    37,    38,
@@ -2886,14 +2661,174 @@
      299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
      309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
      319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,    -1,    -1,   337,    -1,
+     329,   330,   331,   332,   333,   334,   335,   336,    -1,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,    -1,    -1,   354,   355,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   373,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   383,   384,   385,   386,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,   402,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,    -1,    -1,
+     339,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   376,    -1,    -1,
+      -1,    -1,    -1,    -1,   383,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,   402,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,    -1,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,    -1,    -1,   354,   355,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   395,   396,   397,   398,
-     399,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      -1,    -1,    -1,    -1,   373,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   384,   385,   386,   387,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,
+     399,   400,   401,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,   332,   333,   334,   335,   336,    -1,   338,   339,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   383,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   397,   398,   399,
+     400,   401,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,   332,   333,   334,   335,   336,    -1,    -1,   339,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   378,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   397,   398,   399,   400,
+     401,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    33,    34,    35,    36,    37,    38,    39,    40,    41,
@@ -2926,137 +2861,26 @@
      302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
      312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
      322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
-     332,   333,   334,    -1,    -1,   337,    -1,    -1,    -1,    -1,
+     332,   333,   334,   335,   336,    -1,    -1,   339,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
-       6,     7,     8,     9,    -1,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   395,   396,   397,   398,   399,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
-     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
-     326,   327,   328,   329,   330,   331,   332,   333,   334,    -1,
-     336,   337,   338,   339,   340,   341,   342,   343,   344,   345,
-     346,   347,   348,   349,    -1,    -1,   352,   353,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   378,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   371,    -1,    -1,    -1,   375,
-     376,    -1,    -1,    -1,    -1,    -1,   382,   383,   384,   385,
-       5,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-      -1,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,    -1,    -1,   352,   353,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   371,    -1,    -1,   374,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   382,   383,   384,
-     385,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
-     334,    -1,   336,   337,   338,   339,   340,   341,   342,   343,
-     344,   345,   346,   347,   348,   349,    -1,    -1,   352,   353,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   371,    -1,    -1,
-      -1,   375,    -1,    -1,    -1,    -1,    -1,    -1,   382,   383,
-     384,   385,     5,     6,     7,     8,     9,    -1,    11,    12,
+      -1,    -1,    -1,    -1,    -1,   397,   398,   399,   400,   401,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      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,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    96,    97,    98,    99,   100,   101,   102,
+      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,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   129,   130,   131,   132,
+     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,
@@ -3077,50 +2901,242 @@
      303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
      313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
      323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
-     333,   334,    -1,   336,   337,   338,   339,   340,   341,   342,
-     343,   344,   345,   346,   347,   348,   349,    -1,    -1,   352,
-     353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   371,    -1,
-      -1,   374,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   382,
-     383,   384,   385,     5,     6,     7,     8,     9,    -1,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+     333,   334,   335,   336,    -1,    -1,   339,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
-     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
-     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
-     332,   333,   334,    -1,   336,   337,   338,   339,   340,   341,
-     342,   343,   344,   345,   346,   347,   348,   349,    -1,    -1,
-     352,   353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   371,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   381,
-     382,   383,   384,   385,     5,     6,     7,     8,     9,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   378,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   397,   398,   399,   400,   401,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
+     334,   335,   336,    -1,    -1,   339,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
+       6,     7,     8,     9,    -1,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   397,   398,   399,   400,   401,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
+     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
+     336,    -1,   338,   339,   340,   341,   342,   343,   344,   345,
+     346,   347,   348,   349,   350,   351,    -1,    -1,   354,   355,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,    -1,    -1,
+      -1,   377,   378,    -1,    -1,    -1,    -1,    -1,   384,   385,
+     386,   387,     5,     6,     7,     8,     9,    -1,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
+     333,   334,   335,   336,    -1,   338,   339,   340,   341,   342,
+     343,   344,   345,   346,   347,   348,   349,   350,   351,    -1,
+      -1,   354,   355,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     373,    -1,    -1,   376,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   384,   385,   386,   387,     5,     6,     7,     8,     9,
+      -1,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,   332,   333,   334,   335,   336,    -1,   338,   339,
+     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
+     350,   351,    -1,    -1,   354,   355,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   373,    -1,    -1,    -1,   377,    -1,    -1,
+      -1,    -1,    -1,    -1,   384,   385,   386,   387,     5,     6,
+       7,     8,     9,    -1,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
+     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
+      -1,   338,   339,   340,   341,   342,   343,   344,   345,   346,
+     347,   348,   349,   350,   351,    -1,    -1,   354,   355,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   373,    -1,    -1,   376,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   384,   385,   386,
+     387,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
+     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
+     334,   335,   336,    -1,   338,   339,   340,   341,   342,   343,
+     344,   345,   346,   347,   348,   349,   350,   351,    -1,    -1,
+     354,   355,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   383,
+     384,   385,   386,   387,     5,     6,     7,     8,     9,    -1,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
       21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    34,    35,    36,    37,    38,    39,    40,
@@ -3129,10 +3145,10 @@
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
       71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    99,   100,
      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   118,   119,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   129,   130,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      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,
@@ -3153,83 +3169,84 @@
      301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
      321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
-     331,   332,   333,   334,    -1,   336,   337,   338,   339,   340,
-     341,   342,   343,   344,   345,   346,   347,   348,   349,    -1,
-      -1,   352,   353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     331,   332,   333,   334,   335,   336,    -1,   338,   339,   340,
+     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
+     351,    -1,    -1,   354,   355,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     371,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   382,   383,   384,   385,     5,     6,     7,     8,     9,
-      -1,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     330,   331,   332,   333,   334,    -1,   336,   337,   338,   339,
-     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
-      -1,    -1,   352,   353,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   373,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   384,   385,   386,   387,     5,     6,     7,
+       8,     9,    -1,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   371,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   382,   383,   384,   385,     5,     6,     7,     8,
-       9,    -1,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,   332,   333,   334,   335,   336,    -1,
+     338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
+     348,   349,   350,   351,    -1,    -1,   354,   355,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,    -1,    -1,   337
+      -1,    -1,    -1,    -1,    -1,   373,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   384,   385,   386,   387,
+       5,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,    -1,    -1,   339
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -3268,107 +3285,109 @@
      303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
      313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
      323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
-     333,   334,   337,   381,   395,   396,   397,   398,   399,   400,
-     435,   436,   439,   440,   441,   442,   446,   447,   448,   449,
-     450,   451,   454,   455,   456,   457,   458,   460,   462,   463,
-     464,   504,   505,   506,   371,   371,   336,   375,   463,   336,
-     381,   381,   507,   372,   378,   443,   444,   445,   455,   460,
-     378,   381,   336,   336,   381,   456,   460,   373,   461,     0,
-     505,   336,   459,    81,   336,   452,   453,   375,   466,   460,
-     381,   461,   375,   483,   444,   443,   445,   336,   336,   371,
-     380,   461,   375,   378,   381,   438,   336,   338,   339,   340,
-     341,   342,   343,   344,   345,   346,   347,   348,   349,   352,
-     353,   371,   374,   382,   383,   384,   385,   405,   406,   407,
-     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
+     333,   334,   335,   336,   339,   383,   397,   398,   399,   400,
+     401,   402,   437,   438,   441,   442,   443,   444,   448,   449,
+     450,   451,   452,   453,   456,   457,   458,   459,   460,   462,
+     464,   465,   466,   506,   507,   508,   373,   373,   338,   377,
+     465,   338,   383,   383,   509,   374,   380,   445,   446,   447,
+     457,   462,   380,   383,   338,   338,   383,   458,   462,   375,
+     463,     0,   507,   338,   461,    81,   338,   454,   455,   377,
+     468,   462,   383,   463,   377,   485,   446,   445,   447,   338,
+     338,   373,   382,   463,   377,   380,   383,   440,   338,   340,
+     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
+     351,   354,   355,   373,   376,   384,   385,   386,   387,   407,
+     408,   409,   411,   412,   413,   414,   415,   416,   417,   418,
      419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
-     429,   458,   460,   373,   372,   378,   380,   372,   378,   465,
-     455,   460,   467,   468,   381,   381,    22,    23,    24,    26,
-      27,    28,    29,    30,    31,    32,   335,   373,   375,   376,
-     381,   416,   429,   431,   433,   435,   439,   458,   460,   473,
-     474,   475,   476,   484,   485,   486,   487,   490,   491,   494,
-     495,   496,   503,   508,   461,   380,   461,   375,   431,   471,
-     380,   437,   336,   378,   381,   416,   416,   433,   352,   353,
-     373,   377,   372,   372,   378,   334,   431,   371,   416,   386,
-     387,   388,   383,   385,   350,   351,   354,   355,   389,   390,
-     356,   357,   393,   392,   391,   358,   360,   359,   394,   374,
-     374,   429,   336,   429,   434,   453,   467,   460,   336,   469,
-     470,   376,   468,   381,   381,   498,   371,   371,   381,   381,
-     433,   371,   433,   379,   371,   373,   376,   477,   361,   362,
-     363,   364,   365,   366,   367,   368,   369,   370,   380,   432,
-     378,   381,   376,   474,   487,   491,   496,   471,   380,   471,
-     472,   471,   467,   336,   372,   408,   433,   336,   431,   416,
-     416,   416,   418,   418,   419,   419,   420,   420,   420,   420,
-     421,   421,   422,   423,   424,   425,   426,   427,   430,   374,
-     376,   469,   461,   378,   381,   474,   499,   433,   381,   433,
-     379,   497,   336,   509,   510,   484,   431,   431,   471,   376,
-     378,   376,   374,   433,   381,   470,   335,   473,   485,   500,
-     372,   372,   433,   448,   455,   489,   371,   374,   378,   478,
-     376,   471,   379,   371,   489,   501,   502,   480,   481,   482,
-     488,   492,   336,   372,   434,   374,   510,   376,   431,   433,
-     381,   372,    25,   476,   475,   375,   380,   475,   479,   483,
-     372,   372,   433,   479,   480,   484,   493,   471,   381,   376
+     429,   430,   431,   460,   462,   375,   374,   380,   382,   374,
+     380,   467,   457,   462,   469,   470,   383,   383,    22,    23,
+      24,    26,    27,    28,    29,    30,    31,    32,   337,   375,
+     377,   378,   383,   418,   431,   433,   435,   437,   441,   460,
+     462,   475,   476,   477,   478,   486,   487,   488,   489,   492,
+     493,   496,   497,   498,   505,   510,   463,   382,   463,   377,
+     433,   473,   382,   439,   338,   380,   383,   418,   418,   435,
+     354,   355,   375,   379,   374,   374,   380,   336,   433,   373,
+     418,   388,   389,   390,   385,   387,   352,   353,   356,   357,
+     391,   392,   358,   359,   395,   394,   393,   360,   362,   361,
+     396,   376,   376,   431,   338,   431,   436,   455,   469,   462,
+     338,   471,   472,   378,   470,   383,   383,   500,   373,   373,
+     383,   383,   435,   373,   435,   381,   373,   375,   378,   479,
+     363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
+     382,   434,   380,   383,   378,   476,   489,   493,   498,   473,
+     382,   473,   474,   473,   469,   338,   374,   410,   435,   338,
+     433,   418,   418,   418,   420,   420,   421,   421,   422,   422,
+     422,   422,   423,   423,   424,   425,   426,   427,   428,   429,
+     432,   376,   378,   471,   463,   380,   383,   476,   501,   435,
+     383,   435,   381,   499,   338,   511,   512,   486,   433,   433,
+     473,   378,   380,   378,   376,   435,   383,   472,   337,   475,
+     487,   502,   374,   374,   435,   450,   457,   491,   373,   376,
+     380,   480,   378,   473,   381,   373,   491,   503,   504,   482,
+     483,   484,   490,   494,   338,   374,   436,   376,   512,   378,
+     433,   435,   383,   374,    25,   478,   477,   377,   382,   477,
+     481,   485,   374,   374,   435,   481,   482,   486,   495,   473,
+     383,   378
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   404,   405,   406,   406,   406,   406,   406,   406,   406,
-     406,   406,   406,   406,   406,   406,   406,   407,   407,   407,
-     407,   407,   407,   408,   409,   410,   411,   411,   412,   412,
-     413,   413,   414,   415,   415,   415,   416,   416,   416,   416,
-     417,   417,   417,   417,   418,   418,   418,   418,   419,   419,
-     419,   420,   420,   420,   421,   421,   421,   421,   421,   422,
-     422,   422,   423,   423,   424,   424,   425,   425,   426,   426,
-     427,   427,   428,   428,   429,   430,   429,   431,   431,   432,
-     432,   432,   432,   432,   432,   432,   432,   432,   432,   432,
-     433,   433,   434,   435,   435,   435,   435,   435,   435,   435,
-     435,   435,   437,   436,   438,   438,   439,   440,   440,   441,
-     441,   442,   443,   443,   444,   444,   444,   444,   445,   446,
-     446,   446,   446,   446,   447,   447,   447,   447,   447,   448,
-     448,   449,   450,   450,   450,   450,   450,   450,   450,   450,
-     451,   452,   452,   453,   453,   453,   454,   455,   455,   456,
-     456,   456,   456,   456,   456,   456,   457,   457,   457,   457,
-     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
-     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
-     457,   457,   457,   458,   459,   459,   460,   460,   461,   461,
-     461,   461,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
-     462,   462,   462,   462,   462,   462,   462,   462,   463,   463,
-     463,   465,   464,   466,   464,   467,   467,   468,   468,   469,
-     469,   470,   470,   471,   471,   471,   472,   472,   473,   474,
-     474,   475,   475,   475,   475,   475,   475,   475,   476,   477,
-     478,   476,   479,   479,   481,   480,   482,   480,   483,   483,
-     484,   484,   485,   485,   486,   486,   487,   488,   488,   489,
-     489,   490,   490,   492,   491,   493,   493,   494,   494,   495,
-     495,   497,   496,   498,   496,   499,   496,   500,   500,   501,
-     501,   502,   502,   503,   503,   503,   503,   503,   504,   504,
-     505,   505,   505,   507,   506,   508,   509,   509,   510,   510
+       0,   406,   407,   408,   408,   408,   408,   408,   408,   408,
+     408,   408,   408,   408,   408,   408,   408,   409,   409,   409,
+     409,   409,   409,   410,   411,   412,   413,   413,   414,   414,
+     415,   415,   416,   417,   417,   417,   418,   418,   418,   418,
+     419,   419,   419,   419,   420,   420,   420,   420,   421,   421,
+     421,   422,   422,   422,   423,   423,   423,   423,   423,   424,
+     424,   424,   425,   425,   426,   426,   427,   427,   428,   428,
+     429,   429,   430,   430,   431,   432,   431,   433,   433,   434,
+     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
+     435,   435,   436,   437,   437,   437,   437,   437,   437,   437,
+     437,   437,   439,   438,   440,   440,   441,   442,   442,   443,
+     443,   444,   445,   445,   446,   446,   446,   446,   447,   448,
+     448,   448,   448,   448,   449,   449,   449,   449,   449,   450,
+     450,   451,   452,   452,   452,   452,   452,   452,   452,   452,
+     453,   454,   454,   455,   455,   455,   456,   457,   457,   458,
+     458,   458,   458,   458,   458,   458,   459,   459,   459,   459,
+     459,   459,   459,   459,   459,   459,   459,   459,   459,   459,
+     459,   459,   459,   459,   459,   459,   459,   459,   459,   459,
+     459,   459,   459,   459,   459,   460,   461,   461,   462,   462,
+     463,   463,   463,   463,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     464,   464,   464,   464,   464,   464,   464,   464,   464,   464,
+     465,   465,   465,   467,   466,   468,   466,   469,   469,   470,
+     470,   471,   471,   472,   472,   473,   473,   473,   474,   474,
+     475,   476,   476,   477,   477,   477,   477,   477,   477,   477,
+     478,   479,   480,   478,   481,   481,   483,   482,   484,   482,
+     485,   485,   486,   486,   487,   487,   488,   488,   489,   490,
+     490,   491,   491,   492,   492,   494,   493,   495,   495,   496,
+     496,   497,   497,   499,   498,   500,   498,   501,   498,   502,
+     502,   503,   503,   504,   504,   505,   505,   505,   505,   505,
+     506,   506,   507,   507,   507,   509,   508,   510,   511,   511,
+     512,   512
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -3392,8 +3411,8 @@
        1,     1,     1,     1,     1,     1,     1,     1,     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,     1,     3,     1,     2,     2,     3,
-       3,     4,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     4,     1,     1,     3,     1,     2,
+       2,     3,     3,     4,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
@@ -3422,15 +3441,16 @@
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     6,     0,     5,     1,     2,     3,     4,     1,
-       3,     1,     2,     1,     3,     4,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
-       0,     5,     1,     1,     0,     2,     0,     2,     2,     3,
-       1,     2,     1,     2,     1,     2,     5,     3,     1,     1,
-       4,     1,     2,     0,     8,     0,     1,     3,     2,     1,
-       2,     0,     6,     0,     8,     0,     7,     1,     1,     1,
-       0,     2,     3,     2,     2,     2,     3,     2,     1,     2,
-       1,     1,     1,     0,     3,     5,     1,     3,     1,     4
+       1,     1,     1,     0,     6,     0,     5,     1,     2,     3,
+       4,     1,     3,     1,     2,     1,     3,     4,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     0,     0,     5,     1,     1,     0,     2,     0,     2,
+       2,     3,     1,     2,     1,     2,     1,     2,     5,     3,
+       1,     1,     4,     1,     2,     0,     8,     0,     1,     3,
+       2,     1,     2,     0,     6,     0,     8,     0,     7,     1,
+       1,     1,     0,     2,     3,     2,     2,     2,     3,     2,
+       1,     2,     1,     1,     1,     0,     3,     5,     1,     3,
+       1,     4
 };
 
 
@@ -4117,7 +4137,7 @@
     {
         (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
     }
-#line 4121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 3:
@@ -4125,7 +4145,7 @@
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 4:
@@ -4134,7 +4154,7 @@
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 5:
@@ -4143,7 +4163,7 @@
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 6:
@@ -4151,7 +4171,7 @@
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 7:
@@ -4160,7 +4180,7 @@
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -4169,7 +4189,7 @@
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
     }
-#line 4173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 9:
@@ -4178,7 +4198,7 @@
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
     }
-#line 4182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 10:
@@ -4187,7 +4207,7 @@
         parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 11:
@@ -4196,7 +4216,7 @@
         parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
     }
-#line 4200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 12:
@@ -4204,7 +4224,7 @@
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
     }
-#line 4208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 13:
@@ -4213,7 +4233,7 @@
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
     }
-#line 4217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 14:
@@ -4222,7 +4242,7 @@
         parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
     }
-#line 4226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 15:
@@ -4230,7 +4250,7 @@
     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
     }
-#line 4234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 16:
@@ -4240,7 +4260,7 @@
         if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
             (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
     }
-#line 4244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 17:
@@ -4248,7 +4268,7 @@
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 18:
@@ -4256,7 +4276,7 @@
     {
         (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 19:
@@ -4264,7 +4284,7 @@
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -4272,7 +4292,7 @@
     {
         (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
     }
-#line 4276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 21:
@@ -4282,7 +4302,7 @@
         parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 22:
@@ -4292,7 +4312,7 @@
         parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 23:
@@ -4301,7 +4321,7 @@
         parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 24:
@@ -4310,7 +4330,7 @@
         (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
         delete (yyvsp[0].interm).function;
     }
-#line 4314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 25:
@@ -4318,7 +4338,7 @@
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 4322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 26:
@@ -4327,7 +4347,7 @@
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 4331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 27:
@@ -4336,7 +4356,7 @@
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 4340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 28:
@@ -4344,7 +4364,7 @@
     {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 4348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 29:
@@ -4352,7 +4372,7 @@
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 30:
@@ -4364,7 +4384,7 @@
         (yyval.interm).function = (yyvsp[-1].interm).function;
         (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 31:
@@ -4376,7 +4396,7 @@
         (yyval.interm).function = (yyvsp[-2].interm).function;
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
     }
-#line 4380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 32:
@@ -4384,7 +4404,7 @@
     {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 33:
@@ -4394,7 +4414,7 @@
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 34:
@@ -4426,7 +4446,7 @@
             (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull);
         }
     }
-#line 4430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 35:
@@ -4436,7 +4456,7 @@
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 4440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 36:
@@ -4447,7 +4467,7 @@
         if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
             parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
     }
-#line 4451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 37:
@@ -4456,7 +4476,7 @@
         parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
     }
-#line 4460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 38:
@@ -4465,7 +4485,7 @@
         parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
         (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
     }
-#line 4469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 39:
@@ -4486,38 +4506,38 @@
                 (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
         }
     }
-#line 4490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 40:
 #line 520 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 4496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 41:
 #line 521 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 4502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 42:
 #line 522 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 43:
 #line 523 "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 4515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 44:
 #line 529 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 45:
@@ -4527,7 +4547,7 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 46:
@@ -4537,7 +4557,7 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 47:
@@ -4548,13 +4568,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 48:
 #line 549 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 49:
@@ -4564,7 +4584,7 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 50:
@@ -4574,13 +4594,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 51:
 #line 563 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 52:
@@ -4591,7 +4611,7 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 53:
@@ -4602,13 +4622,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 54:
 #line 579 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 55:
@@ -4618,7 +4638,7 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 56:
@@ -4628,7 +4648,7 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 57:
@@ -4638,7 +4658,7 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 58:
@@ -4648,13 +4668,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 59:
 #line 603 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 60:
@@ -4667,7 +4687,7 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 61:
@@ -4680,13 +4700,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4684 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 62:
 #line 623 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 63:
@@ -4697,13 +4717,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 64:
 #line 633 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 65:
@@ -4714,13 +4734,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 66:
 #line 643 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 67:
@@ -4731,13 +4751,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 4735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 68:
 #line 653 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 69:
@@ -4747,13 +4767,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 70:
 #line 662 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 71:
@@ -4763,13 +4783,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4767 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 72:
 #line 671 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4773 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 73:
@@ -4779,13 +4799,13 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 4783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 74:
 #line 680 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 75:
@@ -4793,7 +4813,7 @@
     {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 4797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 76:
@@ -4810,13 +4830,13 @@
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 4814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 77:
 #line 699 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 78:
@@ -4834,7 +4854,7 @@
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
         }
     }
-#line 4838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 79:
@@ -4843,7 +4863,7 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAssign;
     }
-#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 80:
@@ -4852,7 +4872,7 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpMulAssign;
     }
-#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 81:
@@ -4861,7 +4881,7 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpDivAssign;
     }
-#line 4865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 82:
@@ -4871,7 +4891,7 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpModAssign;
     }
-#line 4875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 83:
@@ -4880,7 +4900,7 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAddAssign;
     }
-#line 4884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 84:
@@ -4889,7 +4909,7 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpSubAssign;
     }
-#line 4893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 85:
@@ -4898,7 +4918,7 @@
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
     }
-#line 4902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 86:
@@ -4907,7 +4927,7 @@
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
     }
-#line 4911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 87:
@@ -4916,7 +4936,7 @@
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
     }
-#line 4920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 88:
@@ -4925,7 +4945,7 @@
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
     }
-#line 4929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 89:
@@ -4934,7 +4954,7 @@
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
     }
-#line 4938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 90:
@@ -4942,7 +4962,7 @@
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 91:
@@ -4955,7 +4975,7 @@
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 4959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 92:
@@ -4964,7 +4984,7 @@
         parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 93:
@@ -4974,7 +4994,7 @@
         (yyval.interm.intermNode) = 0;
         // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
     }
-#line 4978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 4998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 94:
@@ -4984,7 +5004,7 @@
             (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
     }
-#line 4988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 95:
@@ -4997,7 +5017,7 @@
         parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
         (yyval.interm.intermNode) = 0;
     }
-#line 5001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 96:
@@ -5006,7 +5026,7 @@
         parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
         (yyval.interm.intermNode) = 0;
     }
-#line 5010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 97:
@@ -5015,7 +5035,7 @@
         parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 5019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 98:
@@ -5024,7 +5044,7 @@
         parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
         (yyval.interm.intermNode) = 0;
     }
-#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 99:
@@ -5034,7 +5054,7 @@
         parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
         (yyval.interm.intermNode) = 0;
     }
-#line 5038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 100:
@@ -5044,7 +5064,7 @@
         parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 5048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 101:
@@ -5055,13 +5075,13 @@
         parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
         (yyval.interm.intermNode) = 0;
     }
-#line 5059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 102:
 #line 834 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 5065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 103:
@@ -5075,7 +5095,7 @@
         (yyval.interm).loc = (yyvsp[-5].interm.type).loc;
         (yyval.interm).typeList = (yyvsp[-1].interm.typeList);
     }
-#line 5079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 104:
@@ -5084,7 +5104,7 @@
         (yyval.interm.identifierList) = new TIdentifierList;
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 5088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 105:
@@ -5093,7 +5113,7 @@
         (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 5097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 106:
@@ -5102,7 +5122,7 @@
         (yyval.interm).function = (yyvsp[-1].interm.function);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 5106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 107:
@@ -5110,7 +5130,7 @@
     {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 5114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 108:
@@ -5118,7 +5138,7 @@
     {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 5122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 109:
@@ -5131,7 +5151,7 @@
         else
             delete (yyvsp[0].interm).param.type;
     }
-#line 5135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 110:
@@ -5153,7 +5173,7 @@
             (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
         }
     }
-#line 5157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 111:
@@ -5177,7 +5197,7 @@
         function = new TFunction((yyvsp[-1].lex).string, type);
         (yyval.interm.function) = function;
     }
-#line 5181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 112:
@@ -5197,7 +5217,7 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).param = param;
     }
-#line 5201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 113:
@@ -5221,7 +5241,7 @@
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).param = param;
     }
-#line 5225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 114:
@@ -5237,7 +5257,7 @@
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
 
     }
-#line 5241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 115:
@@ -5249,7 +5269,7 @@
         parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 116:
@@ -5264,7 +5284,7 @@
         parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
     }
-#line 5268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 117:
@@ -5276,7 +5296,7 @@
         parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
         parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
     }
-#line 5280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 118:
@@ -5287,7 +5307,7 @@
         if ((yyvsp[0].interm.type).arraySizes)
             parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
     }
-#line 5291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 119:
@@ -5295,7 +5315,7 @@
     {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 5299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 120:
@@ -5304,7 +5324,7 @@
         (yyval.interm) = (yyvsp[-2].interm);
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
     }
-#line 5308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 121:
@@ -5313,7 +5333,7 @@
         (yyval.interm) = (yyvsp[-3].interm);
         parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
     }
-#line 5317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 122:
@@ -5323,7 +5343,7 @@
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 123:
@@ -5333,7 +5353,7 @@
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 124:
@@ -5343,7 +5363,7 @@
         (yyval.interm).intermNode = 0;
         parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
     }
-#line 5347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 125:
@@ -5353,7 +5373,7 @@
         (yyval.interm).intermNode = 0;
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
     }
-#line 5357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5377 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 126:
@@ -5363,7 +5383,7 @@
         (yyval.interm).intermNode = 0;
         parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
     }
-#line 5367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 127:
@@ -5373,7 +5393,7 @@
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5377 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 128:
@@ -5383,7 +5403,7 @@
         TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
         (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
     }
-#line 5387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 129:
@@ -5399,7 +5419,7 @@
 
         parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
     }
-#line 5403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 130:
@@ -5428,7 +5448,7 @@
              (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
             (yyval.interm.type).qualifier.smooth = true;
     }
-#line 5432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 131:
@@ -5439,7 +5459,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.invariant = true;
     }
-#line 5443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 132:
@@ -5451,7 +5471,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.smooth = true;
     }
-#line 5455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 133:
@@ -5463,7 +5483,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.flat = true;
     }
-#line 5467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 134:
@@ -5479,7 +5499,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.nopersp = true;
     }
-#line 5483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 135:
@@ -5493,7 +5513,7 @@
         (yyval.interm.type).qualifier.explicitInterp = true;
 #endif
     }
-#line 5497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 136:
@@ -5508,7 +5528,7 @@
         (yyval.interm.type).qualifier.pervertexNV = true;
 #endif
     }
-#line 5512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 137:
@@ -5525,7 +5545,7 @@
         (yyval.interm.type).qualifier.perPrimitiveNV = true;
 #endif
     }
-#line 5529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 138:
@@ -5539,7 +5559,7 @@
         (yyval.interm.type).qualifier.perViewNV = true;
 #endif
     }
-#line 5543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 139:
@@ -5553,7 +5573,7 @@
         (yyval.interm.type).qualifier.perTaskNV = true;
 #endif
     }
-#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 140:
@@ -5561,7 +5581,7 @@
     {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
     }
-#line 5565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 141:
@@ -5569,7 +5589,7 @@
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 142:
@@ -5579,7 +5599,7 @@
         (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
         parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
     }
-#line 5583 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 143:
@@ -5588,7 +5608,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
     }
-#line 5592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 144:
@@ -5597,7 +5617,7 @@
         (yyval.interm.type).init((yyvsp[-2].lex).loc);
         parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
     }
-#line 5601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 145:
@@ -5607,7 +5627,7 @@
         TString strShared("shared");
         parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
     }
-#line 5611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 146:
@@ -5618,7 +5638,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.noContraction = true;
     }
-#line 5622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 147:
@@ -5626,7 +5646,7 @@
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 148:
@@ -5639,7 +5659,7 @@
         (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
         parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
     }
-#line 5643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 149:
@@ -5647,7 +5667,7 @@
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 150:
@@ -5655,7 +5675,7 @@
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 151:
@@ -5664,7 +5684,7 @@
         parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 152:
@@ -5673,7 +5693,7 @@
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 153:
@@ -5682,7 +5702,7 @@
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 154:
@@ -5691,7 +5711,7 @@
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 155:
@@ -5699,7 +5719,7 @@
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 5703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 156:
@@ -5708,7 +5728,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqConst;  // will later turn into EvqConstReadOnly, if the initializer is not constant
     }
-#line 5712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 157:
@@ -5725,7 +5745,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 5729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 158:
@@ -5744,7 +5764,7 @@
         else
             (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 5748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 159:
@@ -5754,7 +5774,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqInOut;
     }
-#line 5758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 160:
@@ -5765,7 +5785,7 @@
         // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
         (yyval.interm.type).qualifier.storage = EvqIn;
     }
-#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 161:
@@ -5776,7 +5796,7 @@
         // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
         (yyval.interm.type).qualifier.storage = EvqOut;
     }
-#line 5780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 162:
@@ -5788,7 +5808,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.centroid = true;
     }
-#line 5792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 163:
@@ -5799,7 +5819,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.patch = true;
     }
-#line 5803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 164:
@@ -5809,7 +5829,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.sample = true;
     }
-#line 5813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 165:
@@ -5819,7 +5839,7 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqUniform;
     }
-#line 5823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 166:
@@ -5829,57 +5849,86 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqBuffer;
     }
-#line 5833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 167:
 #line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef NV_EXTENSIONS
-        parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNVX");
+        parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask
-            | EShLangAnyHitNVMask), "hitAttributeNVX");
-        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NVX_raytracing, "hitAttributeNVX");
+            | EShLangAnyHitNVMask), "hitAttributeNV");
+        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqHitAttrNV;
 #endif
     }
-#line 5848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 168:
 #line 1359 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef NV_EXTENSIONS
-        parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNVX");
+        parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask |
-            EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNVX");
-        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NVX_raytracing, "rayPayloadNVX");
+            EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV");
+        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayloadNV;
 #endif
     }
-#line 5863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 169:
 #line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef NV_EXTENSIONS
-        parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNVX");
+        parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitNVMask |
-            EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNVX");
-        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NVX_raytracing, "rayPayloadInNVX");
+            EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV");
+        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayloadInNV;
 #endif
     }
-#line 5878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 170:
 #line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
+#ifdef NV_EXTENSIONS
+        parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
+        parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask |
+            EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV");
+        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV");
+        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqCallableDataNV;
+#endif
+    }
+#line 5913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 171:
+#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+#ifdef NV_EXTENSIONS
+        parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
+        parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV");
+        parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV");
+        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqCallableDataInNV;
+#endif
+    }
+#line 5927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 172:
+#line 1398 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
         parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
         parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared");
@@ -5891,185 +5940,185 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqShared;
     }
-#line 5895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 1391 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 173:
+#line 1410 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.coherent = true;
     }
-#line 5904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 1395 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 174:
+#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent");
         (yyval.interm.type).qualifier.devicecoherent = true;
     }
-#line 5914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 1400 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 175:
+#line 1419 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent");
         (yyval.interm.type).qualifier.queuefamilycoherent = true;
     }
-#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 1405 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 176:
+#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent");
         (yyval.interm.type).qualifier.workgroupcoherent = true;
     }
-#line 5934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 1410 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 177:
+#line 1429 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent");
         (yyval.interm.type).qualifier.subgroupcoherent = true;
     }
-#line 5944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 5993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 1415 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 178:
+#line 1434 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate");
         (yyval.interm.type).qualifier.nonprivate = true;
     }
-#line 5954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 179:
+#line 1439 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.volatil = true;
     }
-#line 5963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 180:
+#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.restrict = true;
     }
-#line 5972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 1428 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 181:
+#line 1447 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.readonly = true;
     }
-#line 5981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 1432 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 182:
+#line 1451 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.writeonly = true;
     }
-#line 5990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 1436 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 183:
+#line 1455 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
         parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
         parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
         (yyval.interm.type).init((yyvsp[0].lex).loc);
     }
-#line 6001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 1442 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 184:
+#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
         parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
         parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
         (yyval.interm.type).init((yyvsp[-3].lex).loc);
     }
-#line 6012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 1451 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 185:
+#line 1470 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.nonUniform = true;
     }
-#line 6021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 1458 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 186:
+#line 1477 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // TODO
     }
-#line 6029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 187:
+#line 1480 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // TODO: 4.0 semantics: subroutines
         // 1) make sure each identifier is a type declared earlier with SUBROUTINE
         // 2) save all of the identifiers for future comparison with the declared function
     }
-#line 6039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 188:
+#line 1488 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
     }
-#line 6048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 1473 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 189:
+#line 1492 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
         (yyval.interm.type) = (yyvsp[-1].interm.type);
         (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
         (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
     }
-#line 6059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 190:
+#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 6069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 1487 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 191:
+#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm).loc = (yyvsp[-2].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
@@ -6078,20 +6127,20 @@
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 6082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 1495 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 192:
+#line 1514 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm) = (yyvsp[-2].interm);
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 6091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 1499 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 193:
+#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm) = (yyvsp[-3].interm);
 
@@ -6099,1495 +6148,1495 @@
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 6103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 1509 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 194:
+#line 1528 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtVoid;
     }
-#line 6112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 1513 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 195:
+#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
     }
-#line 6121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 1517 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 196:
+#line 1536 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
     }
-#line 6131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 197:
+#line 1541 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
     }
-#line 6141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 1527 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 198:
+#line 1546 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
     }
-#line 6151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 199:
+#line 1551 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
     }
-#line 6161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 1537 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 200:
+#line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
     }
-#line 6170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 1541 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 201:
+#line 1560 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
     }
-#line 6180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 1546 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 202:
+#line 1565 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
     }
-#line 6190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 1551 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 203:
+#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
     }
-#line 6200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 204:
+#line 1575 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
     }
-#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 205:
+#line 1580 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
     }
-#line 6220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 206:
+#line 1585 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
     }
-#line 6230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 207:
+#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
     }
-#line 6240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 208:
+#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
     }
-#line 6250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 1581 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 209:
+#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
     }
-#line 6260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 208:
-#line 1586 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtBool;
-    }
-#line 6269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 209:
-#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 210:
-#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1605 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).basicType = EbtBool;
     }
-#line 6289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 211:
-#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1609 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(2);
     }
-#line 6299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 212:
-#line 1605 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1614 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setVector(2);
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setVector(3);
     }
-#line 6310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 213:
-#line 1611 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1619 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setVector(4);
     }
-#line 6321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 214:
-#line 1617 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1624 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 215:
+#line 1630 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 216:
+#line 1636 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(4);
     }
-#line 6332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 215:
-#line 1623 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 216:
-#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 217:
-#line 1635 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1642 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat16;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 218:
+#line 1648 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat16;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 219:
+#line 1654 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setVector(4);
     }
-#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 218:
-#line 1641 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 219:
-#line 1647 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 220:
-#line 1653 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1660 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 221:
+#line 1666 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 222:
+#line 1672 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setVector(4);
     }
-#line 6398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 221:
-#line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 222:
-#line 1665 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 223:
-#line 1671 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1678 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 224:
+#line 1684 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 225:
+#line 1690 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(4);
     }
-#line 6431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 224:
-#line 1677 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtBool;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 225:
-#line 1682 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtBool;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 226:
-#line 1687 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtBool;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 227:
+#line 1701 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtBool;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 228:
+#line 1706 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
         (yyval.interm.type).setVector(4);
     }
-#line 6461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 227:
-#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 228:
-#line 1697 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 229:
-#line 1702 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1711 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(4);
+        (yyval.interm.type).setVector(2);
     }
-#line 6491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 230:
-#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt8;
-        (yyval.interm.type).setVector(2);
+        (yyval.interm.type).basicType = EbtInt;
+        (yyval.interm.type).setVector(3);
     }
-#line 6502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6530 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 231:
-#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1721 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt8;
-        (yyval.interm.type).setVector(3);
+        (yyval.interm.type).basicType = EbtInt;
+        (yyval.interm.type).setVector(4);
     }
-#line 6513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 232:
-#line 1719 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1726 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt8;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 233:
+#line 1732 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt8;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 234:
+#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt8;
         (yyval.interm.type).setVector(4);
     }
-#line 6524 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 233:
-#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt16;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 234:
-#line 1731 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt16;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 235:
-#line 1737 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1744 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt16;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 236:
+#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt16;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 237:
+#line 1756 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt16;
         (yyval.interm.type).setVector(4);
     }
-#line 6557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 236:
-#line 1743 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 237:
-#line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 238:
-#line 1755 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1762 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 239:
+#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 240:
+#line 1774 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
         (yyval.interm.type).setVector(4);
     }
-#line 6590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 239:
-#line 1761 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt64;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 240:
-#line 1767 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtInt64;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 241:
-#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1780 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt64;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 242:
+#line 1786 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtInt64;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 243:
+#line 1792 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt64;
         (yyval.interm.type).setVector(4);
     }
-#line 6623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 242:
-#line 1779 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 243:
-#line 1785 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 244:
-#line 1791 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 245:
+#line 1804 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 246:
+#line 1810 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(4);
     }
-#line 6656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 245:
-#line 1797 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint8;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6667 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 246:
-#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint8;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 247:
-#line 1809 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1816 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint8;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 248:
+#line 1822 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint8;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 249:
+#line 1828 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint8;
         (yyval.interm.type).setVector(4);
     }
-#line 6689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 248:
-#line 1815 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint16;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 249:
-#line 1821 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint16;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 250:
-#line 1827 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint16;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 251:
+#line 1840 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint16;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 252:
+#line 1846 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint16;
         (yyval.interm.type).setVector(4);
     }
-#line 6722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 251:
-#line 1833 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(2);
-    }
-#line 6733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 252:
-#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtUint;
-        (yyval.interm.type).setVector(3);
-    }
-#line 6744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 253:
-#line 1845 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1852 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint;
+        (yyval.interm.type).setVector(2);
+    }
+#line 6782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 254:
+#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtUint;
+        (yyval.interm.type).setVector(3);
+    }
+#line 6793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 255:
+#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint;
         (yyval.interm.type).setVector(4);
     }
-#line 6755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1851 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 256:
+#line 1870 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(2);
     }
-#line 6766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1857 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 257:
+#line 1876 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(3);
     }
-#line 6777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 258:
+#line 1882 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtUint64;
         (yyval.interm.type).setVector(4);
     }
-#line 6788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 257:
-#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 2);
-    }
-#line 6798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 258:
-#line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 3);
-    }
-#line 6808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 259:
-#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1888 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 4);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 260:
-#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1893 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 2);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 261:
-#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1898 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 3);
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 262:
-#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 4);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 263:
-#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 2);
+        (yyval.interm.type).setMatrix(2, 3);
     }
-#line 6858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 264:
-#line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1913 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 3);
+        (yyval.interm.type).setMatrix(2, 4);
     }
-#line 6868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 265:
-#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1918 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 4);
+        (yyval.interm.type).setMatrix(3, 2);
     }
-#line 6878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 266:
-#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1923 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 2);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 267:
-#line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1928 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 3);
+        (yyval.interm.type).setMatrix(3, 4);
     }
-#line 6898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 268:
-#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 4);
+        (yyval.interm.type).setMatrix(4, 2);
     }
-#line 6908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 269:
-#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(2, 2);
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setMatrix(4, 3);
     }
-#line 6919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 270:
-#line 1935 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1943 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(3, 3);
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 271:
-#line 1941 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1948 "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);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 272:
-#line 1947 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(2, 2);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 6952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 273:
-#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1960 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(2, 3);
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 6963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 274:
-#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1966 "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);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 6974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 275:
-#line 1965 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1972 "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);
+        (yyval.interm.type).setMatrix(2, 3);
     }
-#line 6985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 276:
-#line 1971 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(3, 3);
+        (yyval.interm.type).setMatrix(2, 4);
     }
-#line 6996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 277:
-#line 1977 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(3, 4);
+        (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 278:
-#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1990 "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);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 279:
-#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 1996 "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);
+        (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 280:
-#line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2002 "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 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 281:
+#line 2008 "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 7078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 282:
+#line 2014 "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 7040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 281:
-#line 2001 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(2, 2);
-    }
-#line 7051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 282:
-#line 2007 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(3, 3);
-    }
-#line 7062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 283:
-#line 2013 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2020 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(4, 4);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 284:
-#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2026 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(2, 2);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 285:
-#line 2025 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2032 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(2, 3);
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 286:
-#line 2031 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(2, 4);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 287:
-#line 2037 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(3, 2);
+        (yyval.interm.type).setMatrix(2, 3);
     }
-#line 7117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 288:
-#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2050 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(3, 3);
+        (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 289:
-#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2056 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(3, 4);
+        (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 290:
-#line 2055 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2062 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(4, 2);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 291:
-#line 2061 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2068 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
-        (yyval.interm.type).setMatrix(4, 3);
+        (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 292:
-#line 2067 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat16;
+        (yyval.interm.type).setMatrix(4, 2);
+    }
+#line 7199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 293:
+#line 2080 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat16;
+        (yyval.interm.type).setMatrix(4, 3);
+    }
+#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 294:
+#line 2086 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat16;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 293:
-#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 2);
-    }
-#line 7183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 294:
-#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(3, 3);
-    }
-#line 7194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 295:
-#line 2085 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2092 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(4, 4);
+        (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 296:
-#line 2091 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2098 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 2);
+        (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 297:
-#line 2097 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
-        (yyval.interm.type).setMatrix(2, 3);
+        (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 298:
-#line 2103 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 2110 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setMatrix(2, 2);
+    }
+#line 7265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 299:
+#line 2116 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtFloat;
+        (yyval.interm.type).setMatrix(2, 3);
+    }
+#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 300:
+#line 2122 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 301:
+#line 2128 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 2115 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 302:
+#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 301:
-#line 2121 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 303:
+#line 2140 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 2127 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 304:
+#line 2146 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 7282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 2133 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 305:
+#line 2152 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 306:
+#line 2158 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 2145 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 307:
+#line 2164 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 306:
-#line 2151 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 308:
+#line 2170 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 307:
-#line 2157 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 309:
+#line 2176 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 308:
-#line 2163 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 310:
+#line 2182 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 2);
     }
-#line 7348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 309:
-#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 311:
+#line 2188 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 3);
     }
-#line 7359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 310:
-#line 2175 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 312:
+#line 2194 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(2, 4);
     }
-#line 7370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 311:
-#line 2181 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 313:
+#line 2200 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 2);
     }
-#line 7381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 312:
-#line 2187 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 314:
+#line 2206 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 3);
     }
-#line 7392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 313:
-#line 2193 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 315:
+#line 2212 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(3, 4);
     }
-#line 7403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 314:
-#line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 316:
+#line 2218 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 2);
     }
-#line 7414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 315:
-#line 2205 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 317:
+#line 2224 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 3);
     }
-#line 7425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 316:
-#line 2211 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 318:
+#line 2230 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setMatrix(4, 4);
     }
-#line 7436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 317:
-#line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 319:
+#line 2236 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef NV_EXTENSIONS
        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
        (yyval.interm.type).basicType = EbtAccStructNV;
 #endif
     }
-#line 7447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 318:
-#line 2223 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 320:
+#line 2242 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtAtomicUint;
     }
-#line 7457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 319:
-#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 321:
+#line 2247 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd1D);
     }
-#line 7467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 320:
-#line 2233 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 322:
+#line 2252 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
     }
-#line 7477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 321:
-#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 323:
+#line 2257 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd3D);
     }
-#line 7487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 322:
-#line 2243 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 324:
+#line 2262 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube);
     }
-#line 7497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 323:
-#line 2248 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 325:
+#line 2267 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
     }
-#line 7507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 324:
-#line 2253 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 326:
+#line 2272 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
     }
-#line 7517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 325:
-#line 2258 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 327:
+#line 2277 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
     }
-#line 7527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 326:
-#line 2263 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 328:
+#line 2282 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
     }
-#line 7537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 327:
-#line 2268 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 329:
+#line 2287 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
     }
-#line 7547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 328:
-#line 2273 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 330:
+#line 2292 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
     }
-#line 7557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 329:
-#line 2278 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 331:
+#line 2297 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
     }
-#line 7567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 330:
-#line 2283 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 332:
+#line 2302 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
     }
-#line 7577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 331:
-#line 2288 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 333:
+#line 2307 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
     }
-#line 7587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 332:
-#line 2293 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 334:
+#line 2312 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7596,11 +7645,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
 #endif
     }
-#line 7600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 333:
-#line 2301 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 335:
+#line 2320 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7609,11 +7658,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
 #endif
     }
-#line 7613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 334:
-#line 2309 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 336:
+#line 2328 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7622,11 +7671,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
 #endif
     }
-#line 7626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 335:
-#line 2317 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 337:
+#line 2336 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7635,11 +7684,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
 #endif
     }
-#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 336:
-#line 2325 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 338:
+#line 2344 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7648,11 +7697,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
 #endif
     }
-#line 7652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 337:
-#line 2333 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 339:
+#line 2352 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7661,11 +7710,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
 #endif
     }
-#line 7665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 338:
-#line 2341 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 340:
+#line 2360 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7674,11 +7723,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
 #endif
     }
-#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 339:
-#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 341:
+#line 2368 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7687,11 +7736,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
 #endif
     }
-#line 7691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 340:
-#line 2357 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 342:
+#line 2376 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7700,11 +7749,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
 #endif
     }
-#line 7704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 341:
-#line 2365 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 343:
+#line 2384 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7713,11 +7762,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
 #endif
     }
-#line 7717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 342:
-#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 344:
+#line 2392 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7726,11 +7775,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
 #endif
     }
-#line 7730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 343:
-#line 2381 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 345:
+#line 2400 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7739,11 +7788,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
 #endif
     }
-#line 7743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 344:
-#line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 346:
+#line 2408 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7752,171 +7801,171 @@
         (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
 #endif
     }
-#line 7756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 345:
-#line 2397 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 347:
+#line 2416 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd1D);
     }
-#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 346:
-#line 2402 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 348:
+#line 2421 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D);
     }
-#line 7776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 347:
-#line 2407 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 349:
+#line 2426 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd3D);
     }
-#line 7786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 348:
-#line 2412 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 350:
+#line 2431 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdCube);
     }
-#line 7796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 349:
-#line 2417 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 351:
+#line 2436 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
     }
-#line 7806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 350:
-#line 2422 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 352:
+#line 2441 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
     }
-#line 7816 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 351:
-#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 353:
+#line 2446 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
     }
-#line 7826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 352:
-#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 354:
+#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd1D);
     }
-#line 7836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 353:
-#line 2437 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 355:
+#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D);
     }
-#line 7846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 354:
-#line 2442 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 356:
+#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd3D);
     }
-#line 7856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 355:
-#line 2447 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 357:
+#line 2466 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdCube);
     }
-#line 7866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 356:
-#line 2452 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 358:
+#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
     }
-#line 7876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 357:
-#line 2457 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 359:
+#line 2476 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
     }
-#line 7886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 358:
-#line 2462 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 360:
+#line 2481 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
     }
-#line 7896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 359:
-#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 361:
+#line 2486 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdRect);
     }
-#line 7906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 360:
-#line 2472 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 362:
+#line 2491 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
     }
-#line 7916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 361:
-#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 363:
+#line 2496 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7925,11 +7974,11 @@
         (yyval.interm.type).sampler.set(EbtFloat16, EsdRect);
 #endif
     }
-#line 7929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 362:
-#line 2485 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 364:
+#line 2504 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7938,41 +7987,41 @@
         (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true);
 #endif
     }
-#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 7991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 363:
-#line 2493 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 365:
+#line 2512 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdRect);
     }
-#line 7952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 364:
-#line 2498 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 366:
+#line 2517 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdRect);
     }
-#line 7962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 365:
-#line 2503 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 367:
+#line 2522 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
     }
-#line 7972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 366:
-#line 2508 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 368:
+#line 2527 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7981,41 +8030,41 @@
         (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer);
 #endif
     }
-#line 7985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 367:
-#line 2516 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 369:
+#line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
     }
-#line 7995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 368:
-#line 2521 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 370:
+#line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
     }
-#line 8005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 369:
-#line 2526 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 371:
+#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
     }
-#line 8015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8064 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 370:
-#line 2531 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 372:
+#line 2550 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -8024,41 +8073,41 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true);
 #endif
     }
-#line 8028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 371:
-#line 2539 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 373:
+#line 2558 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
     }
-#line 8038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 372:
-#line 2544 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 374:
+#line 2563 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
     }
-#line 8048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 373:
-#line 2549 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 375:
+#line 2568 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
     }
-#line 8058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 374:
-#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 376:
+#line 2573 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -8067,61 +8116,61 @@
         (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true);
 #endif
     }
-#line 8071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 375:
-#line 2562 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 377:
+#line 2581 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
     }
-#line 8081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 376:
-#line 2567 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 378:
+#line 2586 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
     }
-#line 8091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 377:
-#line 2572 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 379:
+#line 2591 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setPureSampler(false);
     }
-#line 8101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 378:
-#line 2577 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 380:
+#line 2596 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setPureSampler(true);
     }
-#line 8111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 379:
-#line 2582 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 381:
+#line 2601 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
     }
-#line 8121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 380:
-#line 2587 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 382:
+#line 2606 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8130,21 +8179,21 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D);
 #endif
     }
-#line 8134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 381:
-#line 2595 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 383:
+#line 2614 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
     }
-#line 8144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 382:
-#line 2600 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 384:
+#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8153,21 +8202,21 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D);
 #endif
     }
-#line 8157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 383:
-#line 2608 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 385:
+#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
     }
-#line 8167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 384:
-#line 2613 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 386:
+#line 2632 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8176,21 +8225,21 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D);
 #endif
     }
-#line 8180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 385:
-#line 2621 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 387:
+#line 2640 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
     }
-#line 8190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 386:
-#line 2626 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 388:
+#line 2645 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8199,21 +8248,21 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube);
 #endif
     }
-#line 8203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 387:
-#line 2634 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 389:
+#line 2653 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
     }
-#line 8213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 388:
-#line 2639 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 390:
+#line 2658 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8222,21 +8271,21 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true);
 #endif
     }
-#line 8226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 389:
-#line 2647 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 391:
+#line 2666 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
     }
-#line 8236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 390:
-#line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 392:
+#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8245,21 +8294,21 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true);
 #endif
     }
-#line 8249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 391:
-#line 2660 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 393:
+#line 2679 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
     }
-#line 8259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 392:
-#line 2665 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 394:
+#line 2684 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8268,161 +8317,161 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true);
 #endif
     }
-#line 8272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 393:
-#line 2673 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 395:
+#line 2692 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
     }
-#line 8282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 394:
-#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 396:
+#line 2697 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
     }
-#line 8292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 395:
-#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 397:
+#line 2702 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
     }
-#line 8302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 396:
-#line 2688 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 398:
+#line 2707 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
     }
-#line 8312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 397:
-#line 2693 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 399:
+#line 2712 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
     }
-#line 8322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 398:
-#line 2698 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 400:
+#line 2717 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
     }
-#line 8332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 399:
-#line 2703 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 401:
+#line 2722 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
     }
-#line 8342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 400:
-#line 2708 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 402:
+#line 2727 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
     }
-#line 8352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 401:
-#line 2713 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 403:
+#line 2732 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
     }
-#line 8362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 402:
-#line 2718 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 404:
+#line 2737 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
     }
-#line 8372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 403:
-#line 2723 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 405:
+#line 2742 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
     }
-#line 8382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 404:
-#line 2728 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 406:
+#line 2747 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
     }
-#line 8392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 405:
-#line 2733 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 407:
+#line 2752 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
     }
-#line 8402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 406:
-#line 2738 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 408:
+#line 2757 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
     }
-#line 8412 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 407:
-#line 2743 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 409:
+#line 2762 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
     }
-#line 8422 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 408:
-#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 410:
+#line 2767 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8431,41 +8480,41 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect);
 #endif
     }
-#line 8435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 409:
-#line 2756 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 411:
+#line 2775 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
     }
-#line 8445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 410:
-#line 2761 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 412:
+#line 2780 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
     }
-#line 8455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 411:
-#line 2766 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 413:
+#line 2785 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
     }
-#line 8465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 412:
-#line 2771 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 414:
+#line 2790 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8474,41 +8523,41 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer);
 #endif
     }
-#line 8478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 413:
-#line 2779 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 415:
+#line 2798 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
     }
-#line 8488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 414:
-#line 2784 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 416:
+#line 2803 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
     }
-#line 8498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 415:
-#line 2789 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 417:
+#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
     }
-#line 8508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 416:
-#line 2794 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 418:
+#line 2813 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8517,41 +8566,41 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true);
 #endif
     }
-#line 8521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 417:
-#line 2802 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 419:
+#line 2821 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
     }
-#line 8531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 418:
-#line 2807 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 420:
+#line 2826 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
     }
-#line 8541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 419:
-#line 2812 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 421:
+#line 2831 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
     }
-#line 8551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 420:
-#line 2817 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 422:
+#line 2836 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8560,41 +8609,41 @@
         (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true);
 #endif
     }
-#line 8564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 421:
-#line 2825 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 423:
+#line 2844 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
     }
-#line 8574 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 422:
-#line 2830 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 424:
+#line 2849 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
     }
-#line 8584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 423:
-#line 2835 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 425:
+#line 2854 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
     }
-#line 8594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 424:
-#line 2840 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 426:
+#line 2859 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8603,41 +8652,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D);
 #endif
     }
-#line 8607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 425:
-#line 2848 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 427:
+#line 2867 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
     }
-#line 8617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 426:
-#line 2853 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 428:
+#line 2872 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
     }
-#line 8627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 427:
-#line 2858 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 429:
+#line 2877 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
     }
-#line 8637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 428:
-#line 2863 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 430:
+#line 2882 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8646,41 +8695,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D);
 #endif
     }
-#line 8650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 429:
-#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 431:
+#line 2890 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
     }
-#line 8660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 430:
-#line 2876 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 432:
+#line 2895 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
     }
-#line 8670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 431:
-#line 2881 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 433:
+#line 2900 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
     }
-#line 8680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 432:
-#line 2886 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 434:
+#line 2905 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8689,41 +8738,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D);
 #endif
     }
-#line 8693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 433:
-#line 2894 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 435:
+#line 2913 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
     }
-#line 8703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 434:
-#line 2899 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 436:
+#line 2918 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
     }
-#line 8713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 435:
-#line 2904 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 437:
+#line 2923 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
     }
-#line 8723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 436:
-#line 2909 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 438:
+#line 2928 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8732,41 +8781,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect);
 #endif
     }
-#line 8736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 437:
-#line 2917 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 439:
+#line 2936 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
     }
-#line 8746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 438:
-#line 2922 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 440:
+#line 2941 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
     }
-#line 8756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 439:
-#line 2927 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 441:
+#line 2946 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
     }
-#line 8766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 440:
-#line 2932 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 442:
+#line 2951 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8775,41 +8824,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube);
 #endif
     }
-#line 8779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 441:
-#line 2940 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 443:
+#line 2959 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
     }
-#line 8789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 442:
-#line 2945 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 444:
+#line 2964 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
     }
-#line 8799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 443:
-#line 2950 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 445:
+#line 2969 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
     }
-#line 8809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 444:
-#line 2955 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 446:
+#line 2974 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8818,41 +8867,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer);
 #endif
     }
-#line 8822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 445:
-#line 2963 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 447:
+#line 2982 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
     }
-#line 8832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 446:
-#line 2968 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 448:
+#line 2987 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
     }
-#line 8842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 447:
-#line 2973 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 449:
+#line 2992 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
     }
-#line 8852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 448:
-#line 2978 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 450:
+#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8861,41 +8910,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true);
 #endif
     }
-#line 8865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 449:
-#line 2986 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 451:
+#line 3005 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
     }
-#line 8875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 450:
-#line 2991 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 452:
+#line 3010 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
     }
-#line 8885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 451:
-#line 2996 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 453:
+#line 3015 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
     }
-#line 8895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 452:
-#line 3001 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 454:
+#line 3020 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8904,41 +8953,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true);
 #endif
     }
-#line 8908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 453:
-#line 3009 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 455:
+#line 3028 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
     }
-#line 8918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 454:
-#line 3014 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 456:
+#line 3033 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
     }
-#line 8928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 455:
-#line 3019 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 457:
+#line 3038 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
     }
-#line 8938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 8987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 456:
-#line 3024 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 458:
+#line 3043 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8947,41 +8996,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true);
 #endif
     }
-#line 8951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 457:
-#line 3032 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 459:
+#line 3051 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
     }
-#line 8961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 458:
-#line 3037 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 460:
+#line 3056 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
     }
-#line 8971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9020 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 459:
-#line 3042 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 461:
+#line 3061 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
     }
-#line 8981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 460:
-#line 3047 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 462:
+#line 3066 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8990,41 +9039,41 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true);
 #endif
     }
-#line 8994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 461:
-#line 3055 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 463:
+#line 3074 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
     }
-#line 9004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 462:
-#line 3060 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 464:
+#line 3079 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
     }
-#line 9014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 463:
-#line 3065 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 465:
+#line 3084 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
     }
-#line 9024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 464:
-#line 3070 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 466:
+#line 3089 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -9033,64 +9082,64 @@
         (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true);
 #endif
     }
-#line 9037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 465:
-#line 3078 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 467:
+#line 3097 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
     }
-#line 9047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 466:
-#line 3083 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 468:
+#line 3102 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
     }
-#line 9057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 467:
-#line 3088 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 469:
+#line 3107 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {  // GL_OES_EGL_image_external
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.set(EbtFloat, Esd2D);
         (yyval.interm.type).sampler.external = true;
     }
-#line 9068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 468:
-#line 3094 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 470:
+#line 3113 "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 9079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 469:
-#line 3100 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 471:
+#line 3119 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat, true);
     }
-#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 470:
-#line 3106 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 472:
+#line 3125 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
@@ -9100,11 +9149,11 @@
         (yyval.interm.type).sampler.setSubpass(EbtFloat16);
 #endif
     }
-#line 9104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 471:
-#line 3115 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 473:
+#line 3134 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
 #ifdef AMD_EXTENSIONS
         parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
@@ -9114,65 +9163,65 @@
         (yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
 #endif
     }
-#line 9118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 472:
-#line 3124 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 474:
+#line 3143 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtInt);
     }
-#line 9129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 473:
-#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 475:
+#line 3149 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtInt, true);
     }
-#line 9140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 474:
-#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 476:
+#line 3155 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtUint);
     }
-#line 9151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 475:
-#line 3142 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 477:
+#line 3161 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtUint, true);
     }
-#line 9162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 476:
-#line 3148 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 478:
+#line 3167 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.type) = (yyvsp[0].interm.type);
         (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
     }
-#line 9172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 477:
-#line 3153 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 479:
+#line 3172 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         //
         // This is for user defined type names.  The lexical phase looked up the
@@ -9186,47 +9235,47 @@
         } else
             parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
     }
-#line 9190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 478:
-#line 3169 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 480:
+#line 3188 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
     }
-#line 9200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 479:
-#line 3174 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 481:
+#line 3193 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
     }
-#line 9210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 480:
-#line 3179 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 482:
+#line 3198 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
     }
-#line 9220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 481:
-#line 3187 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 483:
+#line 3206 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 9226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 482:
-#line 3187 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 484:
+#line 3206 "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);
@@ -9238,17 +9287,17 @@
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 9242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 483:
-#line 3198 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 485:
+#line 3217 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 9248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 484:
-#line 3198 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 486:
+#line 3217 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
         (yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -9256,19 +9305,19 @@
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 9260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 485:
-#line 3208 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 487:
+#line 3227 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
     }
-#line 9268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 486:
-#line 3211 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 488:
+#line 3230 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
         for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -9279,11 +9328,11 @@
             (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
         }
     }
-#line 9283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 487:
-#line 3224 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 489:
+#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -9306,11 +9355,11 @@
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 9310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 488:
-#line 3246 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 490:
+#line 3265 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-2].interm.type).arraySizes) {
             parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -9335,38 +9384,38 @@
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 9339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 489:
-#line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 491:
+#line 3292 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList) = new TTypeList;
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 9348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 490:
-#line 3277 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 492:
+#line 3296 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 9356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 491:
-#line 3283 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 493:
+#line 3302 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.typeLine).type = new TType(EbtVoid);
         (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
     }
-#line 9366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 492:
-#line 3288 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 494:
+#line 3307 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
 
@@ -9375,219 +9424,219 @@
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
         (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
     }
-#line 9379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 493:
-#line 3299 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 495:
+#line 3318 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 9387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 494:
-#line 3302 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 496:
+#line 3321 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         const char* initFeature = "{ } style initializers";
         parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
         parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
         (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
     }
-#line 9398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 495:
-#line 3308 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 497:
+#line 3327 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         const char* initFeature = "{ } style initializers";
         parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
         parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
         (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
     }
-#line 9409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 496:
-#line 3317 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
-    }
-#line 9417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 497:
-#line 3320 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
-    }
-#line 9425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 498:
-#line 3326 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3336 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
+    }
+#line 9466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 499:
-#line 3330 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9437 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3339 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+    }
+#line 9474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 500:
-#line 3331 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3345 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 501:
-#line 3337 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3349 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 502:
-#line 3338 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3350 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 503:
-#line 3339 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3356 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 504:
-#line 3340 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3357 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 505:
-#line 3341 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3358 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 506:
-#line 3342 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3359 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 507:
-#line 3343 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3360 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 508:
-#line 3347 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 9491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3361 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 509:
-#line 3348 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3362 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 510:
+#line 3366 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = 0; }
+#line 9540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 511:
+#line 3367 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
     }
-#line 9500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 510:
-#line 3352 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 512:
+#line 3371 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
     }
-#line 9509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 511:
-#line 3356 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 513:
+#line 3375 "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 9519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 512:
-#line 3364 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 513:
-#line 3365 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 514:
-#line 3369 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        ++parseContext.controlFlowNestingLevel;
-    }
-#line 9539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3383 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9574 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 515:
-#line 3372 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3384 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 516:
+#line 3388 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        ++parseContext.controlFlowNestingLevel;
+    }
+#line 9588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 517:
+#line 3391 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9548 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 516:
-#line 3376 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 518:
+#line 3395 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 517:
-#line 3381 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 519:
+#line 3400 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 518:
-#line 3390 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 520:
+#line 3409 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
     }
-#line 9577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 519:
-#line 3393 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 521:
+#line 3412 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
             (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
         (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
     }
-#line 9587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 520:
-#line 3401 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 522:
+#line 3420 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -9596,11 +9645,11 @@
             (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
         }
     }
-#line 9600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 521:
-#line 3409 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 523:
+#line 3428 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
                                             (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -9609,76 +9658,76 @@
         } else
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
     }
-#line 9613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 522:
-#line 3420 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = 0; }
-#line 9619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 523:
-#line 3421 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 9625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 524:
-#line 3425 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-#line 9633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 3439 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = 0; }
+#line 9668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 525:
-#line 3428 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3440 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
+#line 9674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 526:
+#line 3444 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+    }
+#line 9682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 527:
+#line 3447 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 526:
-#line 3434 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 528:
+#line 3453 "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 9651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 527:
-#line 3441 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 529:
+#line 3460 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
     }
-#line 9660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 528:
-#line 3445 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 530:
+#line 3464 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 9669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 529:
-#line 3453 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 531:
+#line 3472 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
     }
-#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 530:
-#line 3457 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 532:
+#line 3476 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
 
@@ -9689,28 +9738,28 @@
         else
             (yyval.interm.intermTypedNode) = 0;
     }
-#line 9693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 531:
-#line 3470 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 533:
+#line 3489 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 532:
-#line 3473 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 534:
+#line 3492 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 533:
-#line 3479 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 535:
+#line 3498 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         // start new switch sequence on the switch stack
         ++parseContext.controlFlowNestingLevel;
@@ -9719,11 +9768,11 @@
         parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
         parseContext.symbolTable.push();
     }
-#line 9723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 534:
-#line 3487 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 536:
+#line 3506 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
         delete parseContext.switchSequenceStack.back();
@@ -9733,27 +9782,27 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 9737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 535:
-#line 3499 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = 0;
-    }
-#line 9745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 536:
-#line 3502 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-#line 9753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 537:
-#line 3508 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3518 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermNode) = 0;
+    }
+#line 9794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 538:
+#line 3521 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+    }
+#line 9802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 539:
+#line 3527 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -9766,11 +9815,11 @@
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
         }
     }
-#line 9770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 538:
-#line 3520 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 540:
+#line 3539 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -9780,28 +9829,28 @@
         else
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
     }
-#line 9784 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 539:
-#line 3532 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 541:
+#line 3551 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 540:
-#line 3535 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 542:
+#line 3554 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 541:
-#line 3541 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 543:
+#line 3560 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -9810,11 +9859,11 @@
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 542:
-#line 3549 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 544:
+#line 3568 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -9822,21 +9871,21 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 9826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 543:
-#line 3556 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 545:
+#line 3575 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 544:
-#line 3561 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 546:
+#line 3580 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -9848,22 +9897,22 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 9852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 545:
-#line 3572 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 547:
+#line 3591 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 9863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 546:
-#line 3578 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 548:
+#line 3597 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -9876,81 +9925,81 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 9880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 547:
-#line 3593 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-#line 9888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 548:
-#line 3596 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-#line 9896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 549:
-#line 3602 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3612 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 550:
-#line 3605 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3615 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        (yyval.interm.intermTypedNode) = 0;
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 9912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 551:
-#line 3611 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3621 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+    }
+#line 9953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 552:
+#line 3624 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermTypedNode) = 0;
+    }
+#line 9961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 553:
+#line 3630 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 9921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 552:
-#line 3615 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 554:
+#line 3634 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
     }
-#line 9930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 553:
-#line 3622 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 555:
+#line 3641 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (parseContext.loopNestingLevel <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
     }
-#line 9940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 554:
-#line 3627 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 556:
+#line 3646 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
             parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
     }
-#line 9950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 9999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 555:
-#line 3632 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 557:
+#line 3651 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -9958,83 +10007,83 @@
         if (parseContext.inMain)
             parseContext.postEntryPointReturn = true;
     }
-#line 9962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 556:
-#line 3639 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 558:
+#line 3658 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 9970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 557:
-#line 3642 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 559:
+#line 3661 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
     }
-#line 9979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 558:
-#line 3651 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 560:
+#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
         parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
     }
-#line 9988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 559:
-#line 3655 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 561:
+#line 3674 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         if ((yyvsp[0].interm.intermNode) != nullptr) {
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
             parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
         }
     }
-#line 9999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 560:
-#line 3664 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-#line 10007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 561:
-#line 3667 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
-    }
-#line 10015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 562:
-#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3683 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+    }
+#line 10056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 563:
+#line 3686 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
+    }
+#line 10064 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 564:
+#line 3689 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
         parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
         (yyval.interm.intermNode) = nullptr;
     }
-#line 10025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 563:
-#line 3678 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 565:
+#line 3697 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
         (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
     }
-#line 10034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 564:
-#line 3682 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 566:
+#line 3701 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         //   May be best done as post process phase on intermediate code
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -10050,52 +10099,52 @@
         (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
         (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
     }
-#line 10054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
-  case 565:
-#line 3700 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+  case 567:
+#line 3719 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
         parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
     }
-#line 10063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 566:
-#line 3706 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.attributes) = (yyvsp[0].interm.attributes);
-    }
-#line 10071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
-    break;
-
-  case 567:
-#line 3709 "MachineIndependent/glslang.y" /* yacc.c:1646  */
-    {
-        (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
-    }
-#line 10079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 568:
-#line 3714 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3725 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
-        (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
+        (yyval.interm.attributes) = (yyvsp[0].interm.attributes);
     }
-#line 10087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
   case 569:
-#line 3717 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+#line 3728 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
+    }
+#line 10128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 570:
+#line 3733 "MachineIndependent/glslang.y" /* yacc.c:1646  */
+    {
+        (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
+    }
+#line 10136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+    break;
+
+  case 571:
+#line 3736 "MachineIndependent/glslang.y" /* yacc.c:1646  */
     {
         (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 10095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
     break;
 
 
-#line 10099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
+#line 10148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -10323,5 +10372,5 @@
 #endif
   return yyresult;
 }
-#line 3721 "MachineIndependent/glslang.y" /* yacc.c:1906  */
+#line 3740 "MachineIndependent/glslang.y" /* yacc.c:1906  */
 
diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h
index d1f2e71..50bbcfc 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -128,324 +128,326 @@
     PAYLOADNV = 338,
     PAYLOADINNV = 339,
     HITATTRNV = 340,
-    COHERENT = 341,
-    VOLATILE = 342,
-    RESTRICT = 343,
-    READONLY = 344,
-    WRITEONLY = 345,
-    DEVICECOHERENT = 346,
-    QUEUEFAMILYCOHERENT = 347,
-    WORKGROUPCOHERENT = 348,
-    SUBGROUPCOHERENT = 349,
-    NONPRIVATE = 350,
-    DVEC2 = 351,
-    DVEC3 = 352,
-    DVEC4 = 353,
-    DMAT2 = 354,
-    DMAT3 = 355,
-    DMAT4 = 356,
-    F16VEC2 = 357,
-    F16VEC3 = 358,
-    F16VEC4 = 359,
-    F16MAT2 = 360,
-    F16MAT3 = 361,
-    F16MAT4 = 362,
-    F32VEC2 = 363,
-    F32VEC3 = 364,
-    F32VEC4 = 365,
-    F32MAT2 = 366,
-    F32MAT3 = 367,
-    F32MAT4 = 368,
-    F64VEC2 = 369,
-    F64VEC3 = 370,
-    F64VEC4 = 371,
-    F64MAT2 = 372,
-    F64MAT3 = 373,
-    F64MAT4 = 374,
-    NOPERSPECTIVE = 375,
-    FLAT = 376,
-    SMOOTH = 377,
-    LAYOUT = 378,
-    EXPLICITINTERPAMD = 379,
-    PERVERTEXNV = 380,
-    PERPRIMITIVENV = 381,
-    PERVIEWNV = 382,
-    PERTASKNV = 383,
-    MAT2X2 = 384,
-    MAT2X3 = 385,
-    MAT2X4 = 386,
-    MAT3X2 = 387,
-    MAT3X3 = 388,
-    MAT3X4 = 389,
-    MAT4X2 = 390,
-    MAT4X3 = 391,
-    MAT4X4 = 392,
-    DMAT2X2 = 393,
-    DMAT2X3 = 394,
-    DMAT2X4 = 395,
-    DMAT3X2 = 396,
-    DMAT3X3 = 397,
-    DMAT3X4 = 398,
-    DMAT4X2 = 399,
-    DMAT4X3 = 400,
-    DMAT4X4 = 401,
-    F16MAT2X2 = 402,
-    F16MAT2X3 = 403,
-    F16MAT2X4 = 404,
-    F16MAT3X2 = 405,
-    F16MAT3X3 = 406,
-    F16MAT3X4 = 407,
-    F16MAT4X2 = 408,
-    F16MAT4X3 = 409,
-    F16MAT4X4 = 410,
-    F32MAT2X2 = 411,
-    F32MAT2X3 = 412,
-    F32MAT2X4 = 413,
-    F32MAT3X2 = 414,
-    F32MAT3X3 = 415,
-    F32MAT3X4 = 416,
-    F32MAT4X2 = 417,
-    F32MAT4X3 = 418,
-    F32MAT4X4 = 419,
-    F64MAT2X2 = 420,
-    F64MAT2X3 = 421,
-    F64MAT2X4 = 422,
-    F64MAT3X2 = 423,
-    F64MAT3X3 = 424,
-    F64MAT3X4 = 425,
-    F64MAT4X2 = 426,
-    F64MAT4X3 = 427,
-    F64MAT4X4 = 428,
-    ATOMIC_UINT = 429,
-    ACCSTRUCTNV = 430,
-    SAMPLER1D = 431,
-    SAMPLER2D = 432,
-    SAMPLER3D = 433,
-    SAMPLERCUBE = 434,
-    SAMPLER1DSHADOW = 435,
-    SAMPLER2DSHADOW = 436,
-    SAMPLERCUBESHADOW = 437,
-    SAMPLER1DARRAY = 438,
-    SAMPLER2DARRAY = 439,
-    SAMPLER1DARRAYSHADOW = 440,
-    SAMPLER2DARRAYSHADOW = 441,
-    ISAMPLER1D = 442,
-    ISAMPLER2D = 443,
-    ISAMPLER3D = 444,
-    ISAMPLERCUBE = 445,
-    ISAMPLER1DARRAY = 446,
-    ISAMPLER2DARRAY = 447,
-    USAMPLER1D = 448,
-    USAMPLER2D = 449,
-    USAMPLER3D = 450,
-    USAMPLERCUBE = 451,
-    USAMPLER1DARRAY = 452,
-    USAMPLER2DARRAY = 453,
-    SAMPLER2DRECT = 454,
-    SAMPLER2DRECTSHADOW = 455,
-    ISAMPLER2DRECT = 456,
-    USAMPLER2DRECT = 457,
-    SAMPLERBUFFER = 458,
-    ISAMPLERBUFFER = 459,
-    USAMPLERBUFFER = 460,
-    SAMPLERCUBEARRAY = 461,
-    SAMPLERCUBEARRAYSHADOW = 462,
-    ISAMPLERCUBEARRAY = 463,
-    USAMPLERCUBEARRAY = 464,
-    SAMPLER2DMS = 465,
-    ISAMPLER2DMS = 466,
-    USAMPLER2DMS = 467,
-    SAMPLER2DMSARRAY = 468,
-    ISAMPLER2DMSARRAY = 469,
-    USAMPLER2DMSARRAY = 470,
-    SAMPLEREXTERNALOES = 471,
-    F16SAMPLER1D = 472,
-    F16SAMPLER2D = 473,
-    F16SAMPLER3D = 474,
-    F16SAMPLER2DRECT = 475,
-    F16SAMPLERCUBE = 476,
-    F16SAMPLER1DARRAY = 477,
-    F16SAMPLER2DARRAY = 478,
-    F16SAMPLERCUBEARRAY = 479,
-    F16SAMPLERBUFFER = 480,
-    F16SAMPLER2DMS = 481,
-    F16SAMPLER2DMSARRAY = 482,
-    F16SAMPLER1DSHADOW = 483,
-    F16SAMPLER2DSHADOW = 484,
-    F16SAMPLER1DARRAYSHADOW = 485,
-    F16SAMPLER2DARRAYSHADOW = 486,
-    F16SAMPLER2DRECTSHADOW = 487,
-    F16SAMPLERCUBESHADOW = 488,
-    F16SAMPLERCUBEARRAYSHADOW = 489,
-    SAMPLER = 490,
-    SAMPLERSHADOW = 491,
-    TEXTURE1D = 492,
-    TEXTURE2D = 493,
-    TEXTURE3D = 494,
-    TEXTURECUBE = 495,
-    TEXTURE1DARRAY = 496,
-    TEXTURE2DARRAY = 497,
-    ITEXTURE1D = 498,
-    ITEXTURE2D = 499,
-    ITEXTURE3D = 500,
-    ITEXTURECUBE = 501,
-    ITEXTURE1DARRAY = 502,
-    ITEXTURE2DARRAY = 503,
-    UTEXTURE1D = 504,
-    UTEXTURE2D = 505,
-    UTEXTURE3D = 506,
-    UTEXTURECUBE = 507,
-    UTEXTURE1DARRAY = 508,
-    UTEXTURE2DARRAY = 509,
-    TEXTURE2DRECT = 510,
-    ITEXTURE2DRECT = 511,
-    UTEXTURE2DRECT = 512,
-    TEXTUREBUFFER = 513,
-    ITEXTUREBUFFER = 514,
-    UTEXTUREBUFFER = 515,
-    TEXTURECUBEARRAY = 516,
-    ITEXTURECUBEARRAY = 517,
-    UTEXTURECUBEARRAY = 518,
-    TEXTURE2DMS = 519,
-    ITEXTURE2DMS = 520,
-    UTEXTURE2DMS = 521,
-    TEXTURE2DMSARRAY = 522,
-    ITEXTURE2DMSARRAY = 523,
-    UTEXTURE2DMSARRAY = 524,
-    F16TEXTURE1D = 525,
-    F16TEXTURE2D = 526,
-    F16TEXTURE3D = 527,
-    F16TEXTURE2DRECT = 528,
-    F16TEXTURECUBE = 529,
-    F16TEXTURE1DARRAY = 530,
-    F16TEXTURE2DARRAY = 531,
-    F16TEXTURECUBEARRAY = 532,
-    F16TEXTUREBUFFER = 533,
-    F16TEXTURE2DMS = 534,
-    F16TEXTURE2DMSARRAY = 535,
-    SUBPASSINPUT = 536,
-    SUBPASSINPUTMS = 537,
-    ISUBPASSINPUT = 538,
-    ISUBPASSINPUTMS = 539,
-    USUBPASSINPUT = 540,
-    USUBPASSINPUTMS = 541,
-    F16SUBPASSINPUT = 542,
-    F16SUBPASSINPUTMS = 543,
-    IMAGE1D = 544,
-    IIMAGE1D = 545,
-    UIMAGE1D = 546,
-    IMAGE2D = 547,
-    IIMAGE2D = 548,
-    UIMAGE2D = 549,
-    IMAGE3D = 550,
-    IIMAGE3D = 551,
-    UIMAGE3D = 552,
-    IMAGE2DRECT = 553,
-    IIMAGE2DRECT = 554,
-    UIMAGE2DRECT = 555,
-    IMAGECUBE = 556,
-    IIMAGECUBE = 557,
-    UIMAGECUBE = 558,
-    IMAGEBUFFER = 559,
-    IIMAGEBUFFER = 560,
-    UIMAGEBUFFER = 561,
-    IMAGE1DARRAY = 562,
-    IIMAGE1DARRAY = 563,
-    UIMAGE1DARRAY = 564,
-    IMAGE2DARRAY = 565,
-    IIMAGE2DARRAY = 566,
-    UIMAGE2DARRAY = 567,
-    IMAGECUBEARRAY = 568,
-    IIMAGECUBEARRAY = 569,
-    UIMAGECUBEARRAY = 570,
-    IMAGE2DMS = 571,
-    IIMAGE2DMS = 572,
-    UIMAGE2DMS = 573,
-    IMAGE2DMSARRAY = 574,
-    IIMAGE2DMSARRAY = 575,
-    UIMAGE2DMSARRAY = 576,
-    F16IMAGE1D = 577,
-    F16IMAGE2D = 578,
-    F16IMAGE3D = 579,
-    F16IMAGE2DRECT = 580,
-    F16IMAGECUBE = 581,
-    F16IMAGE1DARRAY = 582,
-    F16IMAGE2DARRAY = 583,
-    F16IMAGECUBEARRAY = 584,
-    F16IMAGEBUFFER = 585,
-    F16IMAGE2DMS = 586,
-    F16IMAGE2DMSARRAY = 587,
-    STRUCT = 588,
-    VOID = 589,
-    WHILE = 590,
-    IDENTIFIER = 591,
-    TYPE_NAME = 592,
-    FLOATCONSTANT = 593,
-    DOUBLECONSTANT = 594,
-    INT16CONSTANT = 595,
-    UINT16CONSTANT = 596,
-    INT32CONSTANT = 597,
-    UINT32CONSTANT = 598,
-    INTCONSTANT = 599,
-    UINTCONSTANT = 600,
-    INT64CONSTANT = 601,
-    UINT64CONSTANT = 602,
-    BOOLCONSTANT = 603,
-    FLOAT16CONSTANT = 604,
-    LEFT_OP = 605,
-    RIGHT_OP = 606,
-    INC_OP = 607,
-    DEC_OP = 608,
-    LE_OP = 609,
-    GE_OP = 610,
-    EQ_OP = 611,
-    NE_OP = 612,
-    AND_OP = 613,
-    OR_OP = 614,
-    XOR_OP = 615,
-    MUL_ASSIGN = 616,
-    DIV_ASSIGN = 617,
-    ADD_ASSIGN = 618,
-    MOD_ASSIGN = 619,
-    LEFT_ASSIGN = 620,
-    RIGHT_ASSIGN = 621,
-    AND_ASSIGN = 622,
-    XOR_ASSIGN = 623,
-    OR_ASSIGN = 624,
-    SUB_ASSIGN = 625,
-    LEFT_PAREN = 626,
-    RIGHT_PAREN = 627,
-    LEFT_BRACKET = 628,
-    RIGHT_BRACKET = 629,
-    LEFT_BRACE = 630,
-    RIGHT_BRACE = 631,
-    DOT = 632,
-    COMMA = 633,
-    COLON = 634,
-    EQUAL = 635,
-    SEMICOLON = 636,
-    BANG = 637,
-    DASH = 638,
-    TILDE = 639,
-    PLUS = 640,
-    STAR = 641,
-    SLASH = 642,
-    PERCENT = 643,
-    LEFT_ANGLE = 644,
-    RIGHT_ANGLE = 645,
-    VERTICAL_BAR = 646,
-    CARET = 647,
-    AMPERSAND = 648,
-    QUESTION = 649,
-    INVARIANT = 650,
-    PRECISE = 651,
-    HIGH_PRECISION = 652,
-    MEDIUM_PRECISION = 653,
-    LOW_PRECISION = 654,
-    PRECISION = 655,
-    PACKED = 656,
-    RESOURCE = 657,
-    SUPERP = 658
+    CALLDATANV = 341,
+    CALLDATAINNV = 342,
+    COHERENT = 343,
+    VOLATILE = 344,
+    RESTRICT = 345,
+    READONLY = 346,
+    WRITEONLY = 347,
+    DEVICECOHERENT = 348,
+    QUEUEFAMILYCOHERENT = 349,
+    WORKGROUPCOHERENT = 350,
+    SUBGROUPCOHERENT = 351,
+    NONPRIVATE = 352,
+    DVEC2 = 353,
+    DVEC3 = 354,
+    DVEC4 = 355,
+    DMAT2 = 356,
+    DMAT3 = 357,
+    DMAT4 = 358,
+    F16VEC2 = 359,
+    F16VEC3 = 360,
+    F16VEC4 = 361,
+    F16MAT2 = 362,
+    F16MAT3 = 363,
+    F16MAT4 = 364,
+    F32VEC2 = 365,
+    F32VEC3 = 366,
+    F32VEC4 = 367,
+    F32MAT2 = 368,
+    F32MAT3 = 369,
+    F32MAT4 = 370,
+    F64VEC2 = 371,
+    F64VEC3 = 372,
+    F64VEC4 = 373,
+    F64MAT2 = 374,
+    F64MAT3 = 375,
+    F64MAT4 = 376,
+    NOPERSPECTIVE = 377,
+    FLAT = 378,
+    SMOOTH = 379,
+    LAYOUT = 380,
+    EXPLICITINTERPAMD = 381,
+    PERVERTEXNV = 382,
+    PERPRIMITIVENV = 383,
+    PERVIEWNV = 384,
+    PERTASKNV = 385,
+    MAT2X2 = 386,
+    MAT2X3 = 387,
+    MAT2X4 = 388,
+    MAT3X2 = 389,
+    MAT3X3 = 390,
+    MAT3X4 = 391,
+    MAT4X2 = 392,
+    MAT4X3 = 393,
+    MAT4X4 = 394,
+    DMAT2X2 = 395,
+    DMAT2X3 = 396,
+    DMAT2X4 = 397,
+    DMAT3X2 = 398,
+    DMAT3X3 = 399,
+    DMAT3X4 = 400,
+    DMAT4X2 = 401,
+    DMAT4X3 = 402,
+    DMAT4X4 = 403,
+    F16MAT2X2 = 404,
+    F16MAT2X3 = 405,
+    F16MAT2X4 = 406,
+    F16MAT3X2 = 407,
+    F16MAT3X3 = 408,
+    F16MAT3X4 = 409,
+    F16MAT4X2 = 410,
+    F16MAT4X3 = 411,
+    F16MAT4X4 = 412,
+    F32MAT2X2 = 413,
+    F32MAT2X3 = 414,
+    F32MAT2X4 = 415,
+    F32MAT3X2 = 416,
+    F32MAT3X3 = 417,
+    F32MAT3X4 = 418,
+    F32MAT4X2 = 419,
+    F32MAT4X3 = 420,
+    F32MAT4X4 = 421,
+    F64MAT2X2 = 422,
+    F64MAT2X3 = 423,
+    F64MAT2X4 = 424,
+    F64MAT3X2 = 425,
+    F64MAT3X3 = 426,
+    F64MAT3X4 = 427,
+    F64MAT4X2 = 428,
+    F64MAT4X3 = 429,
+    F64MAT4X4 = 430,
+    ATOMIC_UINT = 431,
+    ACCSTRUCTNV = 432,
+    SAMPLER1D = 433,
+    SAMPLER2D = 434,
+    SAMPLER3D = 435,
+    SAMPLERCUBE = 436,
+    SAMPLER1DSHADOW = 437,
+    SAMPLER2DSHADOW = 438,
+    SAMPLERCUBESHADOW = 439,
+    SAMPLER1DARRAY = 440,
+    SAMPLER2DARRAY = 441,
+    SAMPLER1DARRAYSHADOW = 442,
+    SAMPLER2DARRAYSHADOW = 443,
+    ISAMPLER1D = 444,
+    ISAMPLER2D = 445,
+    ISAMPLER3D = 446,
+    ISAMPLERCUBE = 447,
+    ISAMPLER1DARRAY = 448,
+    ISAMPLER2DARRAY = 449,
+    USAMPLER1D = 450,
+    USAMPLER2D = 451,
+    USAMPLER3D = 452,
+    USAMPLERCUBE = 453,
+    USAMPLER1DARRAY = 454,
+    USAMPLER2DARRAY = 455,
+    SAMPLER2DRECT = 456,
+    SAMPLER2DRECTSHADOW = 457,
+    ISAMPLER2DRECT = 458,
+    USAMPLER2DRECT = 459,
+    SAMPLERBUFFER = 460,
+    ISAMPLERBUFFER = 461,
+    USAMPLERBUFFER = 462,
+    SAMPLERCUBEARRAY = 463,
+    SAMPLERCUBEARRAYSHADOW = 464,
+    ISAMPLERCUBEARRAY = 465,
+    USAMPLERCUBEARRAY = 466,
+    SAMPLER2DMS = 467,
+    ISAMPLER2DMS = 468,
+    USAMPLER2DMS = 469,
+    SAMPLER2DMSARRAY = 470,
+    ISAMPLER2DMSARRAY = 471,
+    USAMPLER2DMSARRAY = 472,
+    SAMPLEREXTERNALOES = 473,
+    F16SAMPLER1D = 474,
+    F16SAMPLER2D = 475,
+    F16SAMPLER3D = 476,
+    F16SAMPLER2DRECT = 477,
+    F16SAMPLERCUBE = 478,
+    F16SAMPLER1DARRAY = 479,
+    F16SAMPLER2DARRAY = 480,
+    F16SAMPLERCUBEARRAY = 481,
+    F16SAMPLERBUFFER = 482,
+    F16SAMPLER2DMS = 483,
+    F16SAMPLER2DMSARRAY = 484,
+    F16SAMPLER1DSHADOW = 485,
+    F16SAMPLER2DSHADOW = 486,
+    F16SAMPLER1DARRAYSHADOW = 487,
+    F16SAMPLER2DARRAYSHADOW = 488,
+    F16SAMPLER2DRECTSHADOW = 489,
+    F16SAMPLERCUBESHADOW = 490,
+    F16SAMPLERCUBEARRAYSHADOW = 491,
+    SAMPLER = 492,
+    SAMPLERSHADOW = 493,
+    TEXTURE1D = 494,
+    TEXTURE2D = 495,
+    TEXTURE3D = 496,
+    TEXTURECUBE = 497,
+    TEXTURE1DARRAY = 498,
+    TEXTURE2DARRAY = 499,
+    ITEXTURE1D = 500,
+    ITEXTURE2D = 501,
+    ITEXTURE3D = 502,
+    ITEXTURECUBE = 503,
+    ITEXTURE1DARRAY = 504,
+    ITEXTURE2DARRAY = 505,
+    UTEXTURE1D = 506,
+    UTEXTURE2D = 507,
+    UTEXTURE3D = 508,
+    UTEXTURECUBE = 509,
+    UTEXTURE1DARRAY = 510,
+    UTEXTURE2DARRAY = 511,
+    TEXTURE2DRECT = 512,
+    ITEXTURE2DRECT = 513,
+    UTEXTURE2DRECT = 514,
+    TEXTUREBUFFER = 515,
+    ITEXTUREBUFFER = 516,
+    UTEXTUREBUFFER = 517,
+    TEXTURECUBEARRAY = 518,
+    ITEXTURECUBEARRAY = 519,
+    UTEXTURECUBEARRAY = 520,
+    TEXTURE2DMS = 521,
+    ITEXTURE2DMS = 522,
+    UTEXTURE2DMS = 523,
+    TEXTURE2DMSARRAY = 524,
+    ITEXTURE2DMSARRAY = 525,
+    UTEXTURE2DMSARRAY = 526,
+    F16TEXTURE1D = 527,
+    F16TEXTURE2D = 528,
+    F16TEXTURE3D = 529,
+    F16TEXTURE2DRECT = 530,
+    F16TEXTURECUBE = 531,
+    F16TEXTURE1DARRAY = 532,
+    F16TEXTURE2DARRAY = 533,
+    F16TEXTURECUBEARRAY = 534,
+    F16TEXTUREBUFFER = 535,
+    F16TEXTURE2DMS = 536,
+    F16TEXTURE2DMSARRAY = 537,
+    SUBPASSINPUT = 538,
+    SUBPASSINPUTMS = 539,
+    ISUBPASSINPUT = 540,
+    ISUBPASSINPUTMS = 541,
+    USUBPASSINPUT = 542,
+    USUBPASSINPUTMS = 543,
+    F16SUBPASSINPUT = 544,
+    F16SUBPASSINPUTMS = 545,
+    IMAGE1D = 546,
+    IIMAGE1D = 547,
+    UIMAGE1D = 548,
+    IMAGE2D = 549,
+    IIMAGE2D = 550,
+    UIMAGE2D = 551,
+    IMAGE3D = 552,
+    IIMAGE3D = 553,
+    UIMAGE3D = 554,
+    IMAGE2DRECT = 555,
+    IIMAGE2DRECT = 556,
+    UIMAGE2DRECT = 557,
+    IMAGECUBE = 558,
+    IIMAGECUBE = 559,
+    UIMAGECUBE = 560,
+    IMAGEBUFFER = 561,
+    IIMAGEBUFFER = 562,
+    UIMAGEBUFFER = 563,
+    IMAGE1DARRAY = 564,
+    IIMAGE1DARRAY = 565,
+    UIMAGE1DARRAY = 566,
+    IMAGE2DARRAY = 567,
+    IIMAGE2DARRAY = 568,
+    UIMAGE2DARRAY = 569,
+    IMAGECUBEARRAY = 570,
+    IIMAGECUBEARRAY = 571,
+    UIMAGECUBEARRAY = 572,
+    IMAGE2DMS = 573,
+    IIMAGE2DMS = 574,
+    UIMAGE2DMS = 575,
+    IMAGE2DMSARRAY = 576,
+    IIMAGE2DMSARRAY = 577,
+    UIMAGE2DMSARRAY = 578,
+    F16IMAGE1D = 579,
+    F16IMAGE2D = 580,
+    F16IMAGE3D = 581,
+    F16IMAGE2DRECT = 582,
+    F16IMAGECUBE = 583,
+    F16IMAGE1DARRAY = 584,
+    F16IMAGE2DARRAY = 585,
+    F16IMAGECUBEARRAY = 586,
+    F16IMAGEBUFFER = 587,
+    F16IMAGE2DMS = 588,
+    F16IMAGE2DMSARRAY = 589,
+    STRUCT = 590,
+    VOID = 591,
+    WHILE = 592,
+    IDENTIFIER = 593,
+    TYPE_NAME = 594,
+    FLOATCONSTANT = 595,
+    DOUBLECONSTANT = 596,
+    INT16CONSTANT = 597,
+    UINT16CONSTANT = 598,
+    INT32CONSTANT = 599,
+    UINT32CONSTANT = 600,
+    INTCONSTANT = 601,
+    UINTCONSTANT = 602,
+    INT64CONSTANT = 603,
+    UINT64CONSTANT = 604,
+    BOOLCONSTANT = 605,
+    FLOAT16CONSTANT = 606,
+    LEFT_OP = 607,
+    RIGHT_OP = 608,
+    INC_OP = 609,
+    DEC_OP = 610,
+    LE_OP = 611,
+    GE_OP = 612,
+    EQ_OP = 613,
+    NE_OP = 614,
+    AND_OP = 615,
+    OR_OP = 616,
+    XOR_OP = 617,
+    MUL_ASSIGN = 618,
+    DIV_ASSIGN = 619,
+    ADD_ASSIGN = 620,
+    MOD_ASSIGN = 621,
+    LEFT_ASSIGN = 622,
+    RIGHT_ASSIGN = 623,
+    AND_ASSIGN = 624,
+    XOR_ASSIGN = 625,
+    OR_ASSIGN = 626,
+    SUB_ASSIGN = 627,
+    LEFT_PAREN = 628,
+    RIGHT_PAREN = 629,
+    LEFT_BRACKET = 630,
+    RIGHT_BRACKET = 631,
+    LEFT_BRACE = 632,
+    RIGHT_BRACE = 633,
+    DOT = 634,
+    COMMA = 635,
+    COLON = 636,
+    EQUAL = 637,
+    SEMICOLON = 638,
+    BANG = 639,
+    DASH = 640,
+    TILDE = 641,
+    PLUS = 642,
+    STAR = 643,
+    SLASH = 644,
+    PERCENT = 645,
+    LEFT_ANGLE = 646,
+    RIGHT_ANGLE = 647,
+    VERTICAL_BAR = 648,
+    CARET = 649,
+    AMPERSAND = 650,
+    QUESTION = 651,
+    INVARIANT = 652,
+    PRECISE = 653,
+    HIGH_PRECISION = 654,
+    MEDIUM_PRECISION = 655,
+    LOW_PRECISION = 656,
+    PRECISION = 657,
+    PACKED = 658,
+    RESOURCE = 659,
+    SUPERP = 660
   };
 #endif
 
@@ -489,7 +491,7 @@
         };
     } interm;
 
-#line 493 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
+#line 495 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index 5aa5776..5ad6790 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -1049,10 +1049,11 @@
     case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
 
 #ifdef NV_EXTENSIONS
-    case EOpTraceNV:                          out.debug << "traceNVX"; break;
-    case EOpReportIntersectionNV:             out.debug << "reportIntersectionNVX"; break;
-    case EOpIgnoreIntersectionNV:             out.debug << "ignoreIntersectionNVX"; break;
-    case EOpTerminateRayNV:                   out.debug << "terminateRayNVX"; break;
+    case EOpTraceNV:                          out.debug << "traceNV"; break;
+    case EOpReportIntersectionNV:             out.debug << "reportIntersectionNV"; break;
+    case EOpIgnoreIntersectionNV:             out.debug << "ignoreIntersectionNV"; break;
+    case EOpTerminateRayNV:                   out.debug << "terminateRayNV"; break;
+    case EOpExecuteCallableNV:                out.debug << "executeCallableNV"; break;
     case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break;
 #endif
 
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 4f78c13..8630128 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -712,7 +712,7 @@
     case EShLangMissNV:
     case EShLangCallableNV:
         if (numShaderRecordNVBlocks > 1)
-            error(infoSink, "Only one shaderRecordNVX buffer block is allowed per stage");
+            error(infoSink, "Only one shaderRecordNV buffer block is allowed per stage");
         break;
     case EShLangMeshNV:
         // NV_mesh_shader doesn't allow use of both single-view and per-view builtins.
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 5f03ac1..ca558cd 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -517,6 +517,8 @@
     "spv.ClosestHitShader_Errors.rchit",
     "spv.MissShader.rmiss",
     "spv.MissShader_Errors.rmiss",
+    "spv.RayCallable.rcall",
+    "spv.RayCallable_Errors.rcall",
     "spv.fragmentShaderBarycentric.frag",
     "spv.fragmentShaderBarycentric2.frag",
     "spv.computeShaderDerivatives.comp",
diff --git a/known_good.json b/known_good.json
index aac6853..ee82885 100755
--- a/known_good.json
+++ b/known_good.json
@@ -5,14 +5,14 @@
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subdir" : "External/spirv-tools",
-      "commit" : "9bfe0eb25e3dfdf4f3fd86ab6c0cda009c9bd661"
+      "commit" : "fb996dce752507132c40c255898154cce6c072c5"
     },
     {
       "name" : "spirv-tools/external/spirv-headers",
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Headers",
       "subdir" : "External/spirv-tools/external/spirv-headers",
-      "commit" : "d5b2e1255f706ce1f88812217e9a554f299848af"
+      "commit" : "a2c529b5dda18838ab4b52f816acfebd774eaab3"
     }
   ]
 }