Changeset fe26fbf


Ignore:
Timestamp:
Feb 7, 2017, 1:01:34 PM (9 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
35b1bf4
Parents:
dbe8f244 (diff), b4d65c7 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:/u/cforall/software/cfa/cfa-cc

Files:
13 added
57 edited
1 moved

Legend:

Unmodified
Added
Removed
  • configure

    rdbe8f244 rfe26fbf  
    61846184
    61856185
    6186 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile"
     6186ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/benchmark/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile"
    61876187
    61886188
     
    69456945    "src/driver/Makefile") CONFIG_FILES="$CONFIG_FILES src/driver/Makefile" ;;
    69466946    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
     6947    "src/benchmark/Makefile") CONFIG_FILES="$CONFIG_FILES src/benchmark/Makefile" ;;
    69476948    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
    69486949    "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
  • configure.ac

    rdbe8f244 rfe26fbf  
    190190        src/driver/Makefile
    191191        src/Makefile
     192        src/benchmark/Makefile
    192193        src/examples/Makefile
    193194        src/tests/Makefile
  • src/CodeGen/CodeGenerator.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jan 18 15:23:08 2017
    13 // Update Count     : 414
     12// Last Modified On : Wed Feb  1 14:09:02 2017
     13// Update Count     : 416
    1414//
    1515
     
    177177
    178178        void CodeGenerator::handleAggregate( AggregateDecl * aggDecl ) {
     179                genAttributes( aggDecl->get_attributes() );
     180               
    179181                if ( aggDecl->get_name() != "" )
    180182                        output << aggDecl->get_name();
     
    214216                extension( enumDecl );
    215217                output << "enum ";
     218                genAttributes( enumDecl->get_attributes() );
    216219
    217220                if ( enumDecl->get_name() != "" )
  • src/CodeGen/GenType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul  9 16:43:52 2015
    13 // Update Count     : 13
     12// Last Modified On : Thu Feb  2 13:53:43 2017
     13// Update Count     : 20
    1414//
    1515
     
    5656        std::string genType( Type *type, const std::string &baseString, bool mangle ) {
    5757                GenType gt( baseString, mangle );
     58                std::ostringstream os;
     59               
     60                if ( ! type->get_attributes().empty() ) {
     61                        CodeGenerator cg( os, mangle );
     62                        cg.genAttributes( type->get_attributes() );
     63                } // if
     64
    5865                type->accept( gt );
    59                 return gt.get_typeString();
     66                return os.str() + gt.get_typeString();
    6067        }
    6168
     
    99106                if ( qualifiers.isAtomic ) {
    100107                        os << "_Atomic ";
    101                 } // if
    102                 if ( qualifiers.isAttribute ) {
    103                         os << "__attribute(( )) ";
    104108                } // if
    105109                if ( dimension != 0 ) {
  • src/Common/ScopedMap.h

    rdbe8f244 rfe26fbf  
    102102                iterator operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
    103103
    104                 bool operator== (const iterator &that) {
     104                bool operator== (const iterator &that) const {
    105105                        return scopes == that.scopes && level == that.level && it == that.it;
    106106                }
    107                 bool operator!= (const iterator &that) { return !( *this == that ); }
     107                bool operator!= (const iterator &that) const { return !( *this == that ); }
    108108
    109109                size_type get_level() const { return level; }
     
    180180                const_iterator operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
    181181
    182                 bool operator== (const const_iterator &that) {
     182                bool operator== (const const_iterator &that) const {
    183183                        return scopes == that.scopes && level == that.level && it == that.it;
    184184                }
    185                 bool operator!= (const const_iterator &that) { return !( *this == that ); }
     185                bool operator!= (const const_iterator &that) const { return !( *this == that ); }
    186186
    187187                size_type get_level() const { return level; }
  • src/Makefile.am

    rdbe8f244 rfe26fbf  
    2626
    2727include CodeGen/module.mk
     28include CodeTools/module.mk
    2829include Common/module.mk
    2930include ControlStruct/module.mk
  • src/Makefile.in

    rdbe8f244 rfe26fbf  
    2424#SRC +=  ArgTweak/Rewriter.cc \
    2525#       ArgTweak/Mutate.cc
     26
     27######################### -*- Mode: Makefile-Gmake -*- ########################
     28###############################################################################
    2629
    2730######################### -*- Mode: Makefile-Gmake -*- ########################
     
    7174build_triplet = @build@
    7275host_triplet = @host@
    73 DIST_COMMON = $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk \
     76DIST_COMMON = $(srcdir)/CodeGen/module.mk \
     77        $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk \
    7478        $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \
    7579        $(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.am \
     
    99103        CodeGen/driver_cfa_cpp-FixMain.$(OBJEXT) \
    100104        CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) \
     105        CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT) \
    101106        Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
    102107        Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
     
    376381        CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
    377382        CodeGen/FixNames.cc CodeGen/FixMain.cc \
    378         CodeGen/OperatorTable.cc Common/SemanticError.cc \
    379         Common/UniqueName.cc Common/DebugMalloc.cc Common/Assert.cc \
     383        CodeGen/OperatorTable.cc CodeTools/DeclStats.cc \
     384        Common/SemanticError.cc Common/UniqueName.cc \
     385        Common/DebugMalloc.cc Common/Assert.cc \
    380386        ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
    381387        ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
     
    440446.SUFFIXES:
    441447.SUFFIXES: .cc .ll .o .obj .yy
    442 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps)
     448$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps)
    443449        @for dep in $?; do \
    444450          case '$(am__configure_deps)' in \
     
    461467            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
    462468        esac;
    463 $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:
     469$(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:
    464470
    465471$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
     
    526532CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT):  \
    527533        CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
     534CodeTools/$(am__dirstamp):
     535        @$(MKDIR_P) CodeTools
     536        @: > CodeTools/$(am__dirstamp)
     537CodeTools/$(DEPDIR)/$(am__dirstamp):
     538        @$(MKDIR_P) CodeTools/$(DEPDIR)
     539        @: > CodeTools/$(DEPDIR)/$(am__dirstamp)
     540CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT):  \
     541        CodeTools/$(am__dirstamp) CodeTools/$(DEPDIR)/$(am__dirstamp)
    528542Common/$(am__dirstamp):
    529543        @$(MKDIR_P) Common
     
    813827        -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT)
    814828        -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT)
     829        -rm -f CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT)
    815830        -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT)
    816831        -rm -f Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT)
     
    922937@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@
    923938@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@
     939@AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po@am__quote@
    924940@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@
    925941@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po@am__quote@
     
    11481164@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
    11491165
     1166CodeTools/driver_cfa_cpp-DeclStats.o: CodeTools/DeclStats.cc
     1167@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-DeclStats.o -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo -c -o CodeTools/driver_cfa_cpp-DeclStats.o `test -f 'CodeTools/DeclStats.cc' || echo '$(srcdir)/'`CodeTools/DeclStats.cc
     1168@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po
     1169@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeTools/DeclStats.cc' object='CodeTools/driver_cfa_cpp-DeclStats.o' libtool=no @AMDEPBACKSLASH@
     1170@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1171@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.o `test -f 'CodeTools/DeclStats.cc' || echo '$(srcdir)/'`CodeTools/DeclStats.cc
     1172
     1173CodeTools/driver_cfa_cpp-DeclStats.obj: CodeTools/DeclStats.cc
     1174@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-DeclStats.obj -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`
     1175@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po
     1176@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeTools/DeclStats.cc' object='CodeTools/driver_cfa_cpp-DeclStats.obj' libtool=no @AMDEPBACKSLASH@
     1177@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1178@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`
     1179
    11501180Common/driver_cfa_cpp-SemanticError.o: Common/SemanticError.cc
    11511181@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
     
    26312661        -rm -f CodeGen/$(DEPDIR)/$(am__dirstamp)
    26322662        -rm -f CodeGen/$(am__dirstamp)
     2663        -rm -f CodeTools/$(DEPDIR)/$(am__dirstamp)
     2664        -rm -f CodeTools/$(am__dirstamp)
    26332665        -rm -f Common/$(DEPDIR)/$(am__dirstamp)
    26342666        -rm -f Common/$(am__dirstamp)
     
    26642696
    26652697distclean: distclean-am
    2666         -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
     2698        -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
    26672699        -rm -f Makefile
    26682700distclean-am: clean-am distclean-compile distclean-generic \
     
    27102742
    27112743maintainer-clean: maintainer-clean-am
    2712         -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
     2744        -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
    27132745        -rm -f Makefile
    27142746maintainer-clean-am: distclean-am maintainer-clean-generic
  • src/Parser/DeclarationNode.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jan 14 14:36:23 2017
    13 // Update Count     : 669
     12// Last Modified On : Mon Feb  6 16:01:29 2017
     13// Update Count     : 739
    1414//
    1515
     
    8383DeclarationNode * DeclarationNode::clone() const {
    8484        DeclarationNode * newnode = new DeclarationNode;
     85        newnode->set_next( maybeClone( get_next() ) );
     86        newnode->name = name ? new string( *name ) : nullptr;
     87
    8588        newnode->type = maybeClone( type );
    86         newnode->name = name ? new string( *name ) : nullptr;
    8789        newnode->storageClass = storageClass;
     90        newnode->bitfieldWidth = maybeClone( bitfieldWidth );
    8891        newnode->isInline = isInline;
    8992        newnode->isNoreturn = isNoreturn;
    90         newnode->bitfieldWidth = maybeClone( bitfieldWidth );
     93        newnode->enumeratorValue.reset( maybeClone( enumeratorValue.get() ) );
    9194        newnode->hasEllipsis = hasEllipsis;
    92         newnode->initializer = maybeClone( initializer );
    93         newnode->set_next( maybeClone( get_next() ) );
    9495        newnode->linkage = linkage;
    9596        newnode->asmName = maybeClone( asmName );
     97        cloneAll( attributes, newnode->attributes );
     98        newnode->initializer = maybeClone( initializer );
     99        newnode->extension = extension;
     100        newnode->error = error;
    96101
    97102//      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     
    159164        newnode->type->function.newStyle = newStyle;
    160165        newnode->type->function.body = body;
     166
    161167        // ignore unnamed routine declarations: void p( int (*)(int) );
    162168        if ( newnode->name ) {
     
    436442        } // if
    437443        appendError( error, q->error );
    438 } // DeclarationNode::copyStorageClasses
     444} // DeclarationNode::checkStorageClasses
    439445
    440446DeclarationNode * DeclarationNode::copyStorageClasses( DeclarationNode * q ) {
     
    446452                storageClass = q->storageClass;
    447453        } // if
    448         attributes.splice( attributes.end(), q->attributes );
     454
     455        for ( Attribute *attr: reverseIterate( q->attributes ) ) {
     456                attributes.push_front( attr->clone() );
     457        } // for
    449458        return this;
    450459} // DeclarationNode::copyStorageClasses
     
    656665}
    657666
    658 DeclarationNode * DeclarationNode::addAsmName( ConstantExpr * newname ) {
     667DeclarationNode * DeclarationNode::addAsmName( DeclarationNode * newname ) {
    659668        assert( ! asmName );
    660         asmName = newname;
    661         return this;
     669        asmName = newname ? newname->asmName : nullptr;
     670        return this->addQualifiers( newname );
    662671}
    663672
     
    690699}
    691700
    692 static void setBase( TypeData *&type, TypeData * newType ) {
     701DeclarationNode * DeclarationNode::setBase( TypeData * newType ) {
    693702        if ( type ) {
    694703                TypeData * prevBase = type;
     
    702711                type = newType;
    703712        } // if
    704 }
     713        return this;
     714}
     715
     716DeclarationNode * DeclarationNode::copyAttribute( DeclarationNode * a ) {
     717        if ( a ) {
     718                for ( Attribute *attr: reverseIterate( a->attributes ) ) {
     719                        attributes.push_front( attr );
     720                } // for
     721                a->attributes.clear();
     722        } // if
     723        return this;
     724} // copyAttribute
    705725
    706726DeclarationNode * DeclarationNode::addPointer( DeclarationNode * p ) {
    707727        if ( p ) {
    708728                assert( p->type->kind == TypeData::Pointer );
    709                 setBase( type, p->type );
     729                setBase( p->type );
    710730                p->type = nullptr;
     731                copyAttribute( p );
    711732                delete p;
    712733        } // if
     
    717738        if ( a ) {
    718739                assert( a->type->kind == TypeData::Array );
    719                 setBase( type, a->type );
     740                setBase( a->type );
    720741                a->type = nullptr;
     742                copyAttribute( a );
    721743                delete a;
    722744        } // if
     
    790812        TypeData * ftype = new TypeData( TypeData::Function );
    791813        ftype->function.params = params;
    792         setBase( type, ftype );
     814        setBase( ftype );
    793815        return this;
    794816}
     
    836858                TypeData * srcType = type;
    837859
     860                // search for the base type by scanning off pointers and array designators
    838861                while ( srcType->base ) {
    839862                        srcType = srcType->base;
     
    9861009        if ( attr.expr ) {
    9871010//              return new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
    988                 return new AttrType( buildQualifiers( type ), *name, attr.expr->build() );
     1011                return new AttrType( buildQualifiers( type ), *name, attr.expr->build(), attributes );
    9891012        } else if ( attr.type ) {
    9901013//              return new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
    991                 return new AttrType( buildQualifiers( type ), *name, attr.type->buildType() );
     1014                return new AttrType( buildQualifiers( type ), *name, attr.type->buildType(), attributes );
    9921015        } // if
    9931016
    9941017        switch ( type->kind ) {
    995           case TypeData::Enum:
    996                 return new EnumInstType( buildQualifiers( type ), *type->enumeration.name );
     1018          case TypeData::Enum: {
     1019                  EnumDecl * typedecl = buildEnum( type, attributes );
     1020                  return new EnumInstType( buildQualifiers( type ), typedecl );
     1021          }
    9971022          case TypeData::Aggregate: {
     1023                  AggregateDecl * typedecl = buildAggregate( type, attributes );
    9981024                  ReferenceToType * ret;
    9991025                  switch ( type->aggregate.kind ) {
    10001026                        case DeclarationNode::Struct:
    1001                           ret = new StructInstType( buildQualifiers( type ), *type->aggregate.name );
     1027                          ret = new StructInstType( buildQualifiers( type ), (StructDecl *)typedecl );
    10021028                          break;
    10031029                        case DeclarationNode::Union:
    1004                           ret = new UnionInstType( buildQualifiers( type ), *type->aggregate.name );
     1030                          ret = new UnionInstType( buildQualifiers( type ), (UnionDecl *)typedecl );
    10051031                          break;
    10061032                        case DeclarationNode::Trait:
    1007                           ret = new TraitInstType( buildQualifiers( type ), *type->aggregate.name );
     1033                          assert( false );
     1034                          //ret = new TraitInstType( buildQualifiers( type ), (TraitDecl *)typedecl );
    10081035                          break;
    10091036                        default:
     
    10141041          }
    10151042          case TypeData::Symbolic: {
    1016                   TypeInstType * ret = new TypeInstType( buildQualifiers( type ), *type->symbolic.name, false );
     1043                  TypeInstType * ret = new TypeInstType( buildQualifiers( type ), *type->symbolic.name, false, attributes );
    10171044                  buildList( type->symbolic.actuals, ret->get_parameters() );
    10181045                  return ret;
    10191046          }
    10201047          default:
    1021                 return typebuild( type );
     1048                Type * simpletypes = typebuild( type );
     1049                simpletypes->get_attributes() = attributes;             // copy because member is const
     1050                return simpletypes;
    10221051        } // switch
    10231052}
  • src/Parser/ParseNode.h

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jan 18 16:20:43 2017
    13 // Update Count     : 650
     12// Last Modified On : Mon Feb  6 15:52:21 2017
     13// Update Count     : 657
    1414//
    1515
     
    198198  public:
    199199        // These must remain in the same order as the corresponding DeclarationNode names.
     200
     201        // enum StorageClass { Extern, Static, Auto, Register, NoStorageClass };
     202        // enum FunctionSpec { Inline, Fortran, Noreturn, NoFunctionSpec };
     203        // enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, Threadlocal, Mutex, NoQualifier };
     204
    200205        enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, };
    201206        enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, NoQualifier };
     
    259264        DeclarationNode * addAssertions( DeclarationNode * );
    260265        DeclarationNode * addName( std::string * );
    261         DeclarationNode * addAsmName( ConstantExpr * );
     266        DeclarationNode * addAsmName( DeclarationNode * );
    262267        DeclarationNode * addBitfield( ExpressionNode * size );
    263268        DeclarationNode * addVarArgs();
    264269        DeclarationNode * addFunctionBody( StatementNode * body );
    265270        DeclarationNode * addOldDeclList( DeclarationNode * list );
     271        DeclarationNode * setBase( TypeData * newType );
     272        DeclarationNode * copyAttribute( DeclarationNode * attr );
    266273        DeclarationNode * addPointer( DeclarationNode * qualifiers );
    267274        DeclarationNode * addArray( DeclarationNode * array );
  • src/Parser/StatementNode.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug 21 11:59:37 2016
    13 // Update Count     : 325
     12// Last Modified On : Thu Feb  2 22:16:40 2017
     13// Update Count     : 327
    1414//
    1515
     
    2828
    2929StatementNode::StatementNode( DeclarationNode *decl ) {
    30         if ( decl ) {
    31                 DeclarationNode *agg = decl->extractAggregate();
    32                 if ( agg ) {
    33                         StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
    34                         set_next( nextStmt );
    35                         if ( decl->get_next() ) {
    36                                 get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) );
    37                                 decl->set_next( 0 );
    38                         } // if
    39                 } else {
    40                         if ( decl->get_next() ) {
    41                                 set_next(new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) );
    42                                 decl->set_next( 0 );
    43                         } // if
    44                         agg = decl;
     30        assert( decl );
     31        DeclarationNode *agg = decl->extractAggregate();
     32        if ( agg ) {
     33                StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
     34                set_next( nextStmt );
     35                if ( decl->get_next() ) {
     36                        get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) );
     37                        decl->set_next( 0 );
    4538                } // if
    46                 stmt.reset( new DeclStmt( noLabels, maybeMoveBuild< Declaration >(agg) ) );
    4739        } else {
    48                 assert( false );
     40                if ( decl->get_next() ) {
     41                        set_next( new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) );
     42                        decl->set_next( 0 );
     43                } // if
     44                agg = decl;
    4945        } // if
    50 }
     46        stmt.reset( new DeclStmt( noLabels, maybeMoveBuild< Declaration >(agg) ) );
     47} // StatementNode::StatementNode
    5148
    5249StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
  • src/Parser/TypeData.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jan 13 15:47:37 2017
    13 // Update Count     : 423
     12// Last Modified On : Fri Jan 27 15:28:56 2017
     13// Update Count     : 428
    1414//
    1515
     
    617617} // buildPointer
    618618
    619 AggregateDecl * buildAggregate( const TypeData * td ) {
     619AggregateDecl * buildAggregate( const TypeData * td, std::list< Attribute * > attributes ) {
    620620        assert( td->kind == TypeData::Aggregate );
    621621        AggregateDecl * at;
    622622        switch ( td->aggregate.kind ) {
    623623          case DeclarationNode::Struct:
    624                 at = new StructDecl( *td->aggregate.name );
     624                at = new StructDecl( *td->aggregate.name, attributes );
    625625                buildForall( td->aggregate.params, at->get_parameters() );
    626626                break;
    627627          case DeclarationNode::Union:
    628                 at = new UnionDecl( *td->aggregate.name );
     628                at = new UnionDecl( *td->aggregate.name, attributes );
    629629                buildForall( td->aggregate.params, at->get_parameters() );
    630630                break;
    631631          case DeclarationNode::Trait:
    632                 at = new TraitDecl( *td->aggregate.name );
     632                at = new TraitDecl( *td->aggregate.name, attributes );
    633633                buildList( td->aggregate.params, at->get_parameters() );
    634634                break;
     
    685685} // buildSymbolic
    686686
    687 EnumDecl * buildEnum( const TypeData * td ) {
     687EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes ) {
    688688        assert( td->kind == TypeData::Enum );
    689         EnumDecl * ret = new EnumDecl( *td->enumeration.name );
     689        EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes );
    690690        buildList( td->enumeration.constants, ret->get_members() );
    691691        list< Declaration * >::iterator members = ret->get_members().begin();
     
    746746                return decl->set_asmName( asmName );
    747747        } else if ( td->kind == TypeData::Aggregate ) {
    748                 return buildAggregate( td );
     748                return buildAggregate( td, attributes );
    749749        } else if ( td->kind == TypeData::Enum ) {
    750                 return buildEnum( td );
     750                return buildEnum( td, attributes );
    751751        } else if ( td->kind == TypeData::Symbolic ) {
    752752                return buildSymbolic( td, name, sc );
    753753        } else {
    754                 return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn ))->set_asmName( asmName );
     754                return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, attributes, isInline, isNoreturn ))->set_asmName( asmName );
    755755        } // if
    756756        return nullptr;
  • src/Parser/TypeData.h

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jan 13 16:11:23 2017
    13 // Update Count     : 144
     12// Last Modified On : Thu Feb  2 17:02:09 2017
     13// Update Count     : 146
    1414//
    1515
     
    103103PointerType * buildPointer( const TypeData * );
    104104ArrayType * buildArray( const TypeData * );
    105 AggregateDecl * buildAggregate( const TypeData * );
     105AggregateDecl * buildAggregate( const TypeData *, std::list< Attribute * > );
    106106ReferenceToType * buildAggInst( const TypeData * );
    107107NamedTypeDecl * buildSymbolic( const TypeData *, const std::string &name, DeclarationNode::StorageClass sc );
    108108TypeDecl * buildVariable( const TypeData * );
    109 EnumDecl * buildEnum( const TypeData * );
     109EnumDecl * buildEnum( const TypeData *, std::list< Attribute * > );
    110110TypeInstType * buildSymbolicInst( const TypeData * );
    111111TupleType * buildTuple( const TypeData * );
  • src/Parser/parser.cc

    rdbe8f244 rfe26fbf  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 41 "parser.yy"
     69#line 42 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    9595} // appendStr
    9696
     97DeclarationNode * distAttr( DeclarationNode * specifier, DeclarationNode * declList ) {
     98        // distribute declaration_specifier across all declared variables, e.g., static, const, __attribute__.
     99        DeclarationNode * cur = declList, * cl = (new DeclarationNode)->addType( specifier );
     100        //cur->addType( specifier );
     101        for ( cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ) ) {
     102                cl->cloneBaseType( cur );
     103        } // for
     104        declList->addType( cl );
     105//      delete cl;
     106        return declList;
     107} // distAttr
     108
     109void distExt( DeclarationNode * declaration ) {
     110        // distribute EXTENSION across all declarations
     111        for ( DeclarationNode *iter = declaration; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {
     112                iter->set_extension( true );
     113        } // for
     114} // distExt
     115
    97116
    98117/* Line 268 of yacc.c  */
    99 #line 100 "Parser/parser.cc"
     118#line 119 "Parser/parser.cc"
    100119
    101120/* Enabling traces.  */
     
    358377
    359378/* Line 293 of yacc.c  */
    360 #line 119 "parser.yy"
     379#line 139 "parser.yy"
    361380
    362381        Token tok;
    363         ParseNode *pn;
    364         ExpressionNode *en;
    365         DeclarationNode *decl;
     382        ParseNode * pn;
     383        ExpressionNode * en;
     384        DeclarationNode * decl;
    366385        DeclarationNode::Aggregate aggKey;
    367386        DeclarationNode::TypeClass tclass;
    368         StatementNode *sn;
    369         ConstantExpr *constant;
    370         ForCtl *fctl;
    371         LabelNode *label;
    372         InitializerNode *in;
     387        StatementNode * sn;
     388        ConstantExpr * constant;
     389        ForCtl * fctl;
     390        LabelNode * label;
     391        InitializerNode * in;
    373392        OperKinds op;
    374         std::string *str;
     393        std::string * str;
    375394        bool flag;
    376395
     
    378397
    379398/* Line 293 of yacc.c  */
    380 #line 381 "Parser/parser.cc"
     399#line 400 "Parser/parser.cc"
    381400} YYSTYPE;
    382401# define YYSTYPE_IS_TRIVIAL 1
     
    390409
    391410/* Line 343 of yacc.c  */
    392 #line 393 "Parser/parser.cc"
     411#line 412 "Parser/parser.cc"
    393412
    394413#ifdef short
     
    607626
    608627/* YYFINAL -- State number of the termination state.  */
    609 #define YYFINAL  251
     628#define YYFINAL  240
    610629/* YYLAST -- Last index in YYTABLE.  */
    611 #define YYLAST   10498
     630#define YYLAST   10925
    612631
    613632/* YYNTOKENS -- Number of terminals.  */
    614633#define YYNTOKENS  138
    615634/* YYNNTS -- Number of nonterminals.  */
    616 #define YYNNTS  243
     635#define YYNNTS  242
    617636/* YYNRULES -- Number of rules.  */
    618 #define YYNRULES  758
     637#define YYNRULES  756
    619638/* YYNRULES -- Number of states.  */
    620 #define YYNSTATES  1546
     639#define YYNSTATES  1550
    621640
    622641/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    689708     408,   410,   414,   416,   420,   421,   423,   425,   427,   429,
    690709     431,   433,   435,   437,   439,   446,   451,   454,   462,   464,
    691      468,   470,   473,   475,   478,   480,   483,   486,   492,   500,
    692      506,   516,   522,   532,   534,   538,   540,   542,   546,   550,
    693      553,   555,   558,   561,   562,   564,   567,   571,   572,   574,
    694      577,   581,   585,   590,   591,   593,   595,   598,   604,   612,
    695      619,   626,   631,   635,   640,   643,   647,   650,   654,   658,
    696      662,   666,   672,   676,   680,   685,   687,   693,   700,   706,
    697      713,   723,   734,   744,   755,   758,   760,   763,   766,   769,
    698      771,   778,   787,   798,   811,   826,   827,   829,   830,   832,
    699      834,   838,   843,   851,   852,   854,   858,   860,   864,   866,
    700      868,   870,   874,   876,   878,   880,   884,   885,   887,   891,
    701      896,   898,   902,   904,   906,   910,   914,   918,   922,   926,
    702      929,   933,   940,   944,   948,   953,   955,   958,   961,   965,
    703      971,   979,   987,   993,  1003,  1006,  1009,  1015,  1019,  1025,
    704     1030,  1034,  1039,  1044,  1052,  1056,  1060,  1064,  1068,  1073,
    705     1080,  1082,  1084,  1086,  1088,  1090,  1092,  1094,  1096,  1097,
    706     1099,  1101,  1104,  1106,  1108,  1110,  1112,  1114,  1116,  1118,
    707     1119,  1125,  1127,  1130,  1134,  1136,  1139,  1141,  1143,  1145,
    708     1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,  1163,  1165,
    709     1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1185,
    710     1187,  1190,  1193,  1197,  1201,  1203,  1207,  1209,  1212,  1215,
    711     1218,  1223,  1228,  1233,  1238,  1240,  1243,  1246,  1250,  1252,
    712     1255,  1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,
    713     1282,  1287,  1290,  1291,  1298,  1306,  1309,  1312,  1315,  1316,
    714     1319,  1322,  1326,  1329,  1333,  1335,  1338,  1342,  1345,  1348,
    715     1353,  1354,  1356,  1359,  1362,  1364,  1365,  1367,  1370,  1373,
    716     1379,  1382,  1383,  1391,  1394,  1399,  1400,  1403,  1404,  1406,
    717     1408,  1410,  1416,  1422,  1428,  1430,  1436,  1442,  1452,  1454,
    718     1460,  1461,  1463,  1465,  1471,  1473,  1475,  1481,  1487,  1489,
    719     1493,  1497,  1502,  1504,  1506,  1508,  1510,  1513,  1515,  1519,
    720     1523,  1525,  1528,  1530,  1534,  1536,  1538,  1540,  1542,  1544,
    721     1546,  1548,  1550,  1552,  1554,  1556,  1559,  1561,  1563,  1565,
    722     1568,  1569,  1572,  1575,  1577,  1582,  1583,  1585,  1588,  1592,
    723     1597,  1600,  1603,  1605,  1608,  1611,  1617,  1623,  1631,  1638,
    724     1640,  1643,  1646,  1650,  1652,  1655,  1658,  1663,  1666,  1671,
    725     1672,  1677,  1680,  1682,  1684,  1686,  1688,  1689,  1692,  1698,
    726     1704,  1718,  1720,  1722,  1726,  1730,  1733,  1737,  1741,  1744,
    727     1749,  1751,  1758,  1768,  1769,  1781,  1783,  1787,  1791,  1795,
    728     1797,  1799,  1805,  1808,  1814,  1815,  1817,  1819,  1823,  1824,
    729     1826,  1828,  1830,  1832,  1833,  1840,  1843,  1845,  1848,  1853,
    730     1856,  1860,  1864,  1868,  1873,  1879,  1885,  1891,  1898,  1900,
    731     1902,  1904,  1908,  1909,  1915,  1916,  1918,  1920,  1923,  1930,
    732     1932,  1936,  1937,  1939,  1944,  1946,  1948,  1950,  1952,  1955,
    733     1957,  1960,  1963,  1965,  1969,  1972,  1976,  1980,  1983,  1988,
    734     1993,  1997,  2006,  2010,  2013,  2015,  2018,  2025,  2034,  2038,
    735     2041,  2045,  2049,  2054,  2059,  2063,  2065,  2067,  2069,  2074,
    736     2081,  2085,  2088,  2092,  2096,  2101,  2106,  2110,  2113,  2115,
    737     2118,  2121,  2123,  2127,  2130,  2134,  2138,  2141,  2146,  2151,
    738     2155,  2162,  2171,  2175,  2178,  2180,  2183,  2186,  2189,  2193,
    739     2197,  2200,  2205,  2210,  2214,  2221,  2230,  2234,  2237,  2239,
    740     2242,  2245,  2247,  2249,  2252,  2256,  2260,  2263,  2268,  2275,
    741     2284,  2286,  2289,  2292,  2294,  2297,  2300,  2304,  2308,  2310,
    742     2315,  2320,  2324,  2330,  2339,  2343,  2346,  2350,  2352,  2358,
    743     2364,  2371,  2378,  2380,  2383,  2386,  2388,  2391,  2394,  2398,
    744     2402,  2404,  2409,  2414,  2418,  2424,  2433,  2437,  2439,  2442,
    745     2444,  2447,  2454,  2460,  2467,  2475,  2483,  2485,  2488,  2491,
    746     2493,  2496,  2499,  2503,  2507,  2509,  2514,  2519,  2523,  2532,
    747     2536,  2538,  2540,  2543,  2545,  2547,  2550,  2554,  2557,  2561,
    748     2564,  2568,  2572,  2575,  2580,  2584,  2587,  2591,  2594,  2599,
    749     2603,  2606,  2613,  2620,  2627,  2635,  2637,  2640,  2642,  2644,
    750     2646,  2649,  2653,  2656,  2660,  2663,  2667,  2671,  2676,  2679,
    751     2683,  2688,  2691,  2697,  2704,  2711,  2712,  2714,  2715
     710     468,   470,   473,   475,   478,   481,   483,   486,   489,   495,
     711     503,   509,   519,   525,   535,   537,   541,   543,   545,   549,
     712     553,   556,   558,   561,   564,   565,   567,   570,   574,   575,
     713     577,   580,   584,   588,   593,   594,   596,   598,   601,   607,
     714     615,   622,   629,   634,   638,   643,   646,   650,   653,   657,
     715     661,   665,   669,   675,   679,   683,   688,   690,   696,   703,
     716     709,   716,   726,   737,   747,   758,   761,   763,   766,   769,
     717     772,   774,   781,   790,   801,   814,   829,   830,   832,   833,
     718     835,   837,   841,   846,   854,   855,   857,   861,   863,   867,
     719     869,   871,   873,   877,   879,   881,   883,   887,   888,   890,
     720     894,   899,   901,   905,   907,   909,   913,   917,   921,   925,
     721     929,   932,   936,   943,   947,   951,   956,   958,   961,   964,
     722     968,   974,   982,   990,   996,  1006,  1009,  1012,  1018,  1022,
     723    1028,  1033,  1037,  1042,  1047,  1055,  1060,  1064,  1068,  1072,
     724    1076,  1083,  1085,  1087,  1089,  1091,  1093,  1095,  1097,  1099,
     725    1100,  1102,  1104,  1107,  1109,  1111,  1113,  1115,  1117,  1119,
     726    1121,  1122,  1128,  1130,  1133,  1137,  1139,  1142,  1144,  1146,
     727    1148,  1150,  1152,  1154,  1156,  1158,  1160,  1162,  1164,  1166,
     728    1168,  1170,  1172,  1174,  1176,  1178,  1180,  1182,  1184,  1186,
     729    1188,  1190,  1193,  1196,  1200,  1204,  1206,  1210,  1212,  1215,
     730    1218,  1221,  1226,  1231,  1236,  1241,  1243,  1246,  1249,  1253,
     731    1255,  1258,  1261,  1263,  1266,  1269,  1273,  1275,  1278,  1281,
     732    1283,  1285,  1291,  1295,  1296,  1304,  1313,  1317,  1319,  1321,
     733    1322,  1325,  1328,  1332,  1336,  1341,  1343,  1346,  1350,  1353,
     734    1355,  1360,  1361,  1363,  1366,  1369,  1371,  1372,  1374,  1377,
     735    1384,  1388,  1389,  1398,  1401,  1406,  1407,  1410,  1411,  1413,
     736    1415,  1417,  1423,  1429,  1435,  1437,  1443,  1449,  1459,  1461,
     737    1467,  1468,  1470,  1472,  1478,  1480,  1482,  1488,  1494,  1496,
     738    1500,  1504,  1509,  1511,  1513,  1515,  1517,  1520,  1522,  1526,
     739    1530,  1532,  1535,  1537,  1541,  1543,  1545,  1547,  1549,  1551,
     740    1553,  1555,  1557,  1559,  1561,  1563,  1566,  1568,  1570,  1571,
     741    1574,  1577,  1579,  1584,  1585,  1587,  1590,  1594,  1599,  1602,
     742    1605,  1607,  1610,  1613,  1619,  1625,  1633,  1640,  1642,  1645,
     743    1648,  1652,  1654,  1657,  1660,  1665,  1668,  1673,  1674,  1679,
     744    1682,  1684,  1686,  1688,  1690,  1691,  1694,  1700,  1706,  1720,
     745    1722,  1724,  1728,  1732,  1735,  1739,  1743,  1746,  1751,  1753,
     746    1760,  1770,  1771,  1783,  1785,  1789,  1793,  1797,  1799,  1801,
     747    1807,  1810,  1816,  1817,  1819,  1821,  1825,  1826,  1828,  1830,
     748    1832,  1834,  1835,  1842,  1845,  1847,  1850,  1855,  1858,  1862,
     749    1866,  1870,  1875,  1881,  1887,  1893,  1900,  1902,  1904,  1906,
     750    1910,  1911,  1917,  1918,  1920,  1922,  1925,  1932,  1934,  1938,
     751    1939,  1941,  1946,  1948,  1950,  1952,  1954,  1957,  1959,  1962,
     752    1965,  1967,  1971,  1974,  1978,  1983,  1986,  1991,  1996,  2000,
     753    2009,  2013,  2016,  2018,  2021,  2028,  2037,  2041,  2044,  2048,
     754    2052,  2057,  2062,  2066,  2068,  2070,  2072,  2077,  2086,  2090,
     755    2093,  2097,  2101,  2106,  2111,  2115,  2118,  2120,  2123,  2126,
     756    2128,  2132,  2135,  2139,  2144,  2147,  2152,  2157,  2161,  2168,
     757    2177,  2181,  2184,  2186,  2189,  2192,  2195,  2199,  2204,  2207,
     758    2212,  2217,  2221,  2228,  2237,  2241,  2244,  2246,  2249,  2252,
     759    2254,  2256,  2259,  2263,  2268,  2271,  2276,  2283,  2292,  2294,
     760    2297,  2300,  2302,  2305,  2308,  2312,  2317,  2319,  2324,  2329,
     761    2333,  2339,  2348,  2352,  2355,  2359,  2361,  2367,  2373,  2380,
     762    2387,  2389,  2392,  2395,  2397,  2400,  2403,  2407,  2412,  2414,
     763    2419,  2424,  2428,  2434,  2443,  2447,  2449,  2452,  2454,  2457,
     764    2464,  2470,  2477,  2485,  2493,  2495,  2498,  2501,  2503,  2506,
     765    2509,  2513,  2518,  2520,  2525,  2530,  2534,  2543,  2547,  2549,
     766    2551,  2554,  2556,  2558,  2561,  2565,  2568,  2572,  2575,  2579,
     767    2583,  2586,  2591,  2595,  2598,  2602,  2605,  2610,  2614,  2617,
     768    2624,  2631,  2638,  2646,  2648,  2651,  2653,  2655,  2657,  2660,
     769    2664,  2667,  2671,  2674,  2678,  2682,  2687,  2690,  2694,  2699,
     770    2702,  2708,  2715,  2722,  2723,  2725,  2726
    752771};
    753772
     
    755774static const yytype_int16 yyrhs[] =
    756775{
    757      309,     0,    -1,    -1,    -1,    82,    -1,    85,    -1,    86,
     776     308,     0,    -1,    -1,    -1,    82,    -1,    85,    -1,    86,
    758777      -1,    87,    -1,    83,    -1,    75,    -1,    79,    -1,   145,
    759778      -1,    75,    -1,    79,    -1,    75,    -1,   145,    -1,    88,
     
    765784     149,    86,    -1,   149,    90,   144,    -1,   149,    90,   116,
    766785     139,   152,   140,   117,    -1,   149,    91,    -1,   149,    92,
    767       -1,   114,   282,   115,   119,   286,   379,   120,    -1,   149,
     786      -1,   114,   281,   115,   119,   285,   378,   120,    -1,   149,
    768787     119,   150,   120,    -1,   151,    -1,   150,   121,   151,    -1,
    769788      -1,   172,    -1,   153,    -1,   152,   121,   153,    -1,   154,
     
    775794     141,    -1,   146,    -1,    43,   159,    -1,   157,   159,    -1,
    776795     158,   159,    -1,    91,   156,    -1,    92,   156,    -1,    40,
    777      156,    -1,    40,   114,   282,   115,    -1,    69,   156,    -1,
    778       69,   114,   282,   115,    -1,    41,   114,   282,   121,   144,
     796     156,    -1,    40,   114,   281,   115,    -1,    69,   156,    -1,
     797      69,   114,   281,   115,    -1,    41,   114,   281,   121,   144,
    779798     115,    -1,    79,    -1,    79,   114,   151,   115,    -1,    79,
    780      114,   283,   115,    -1,   122,    -1,   123,    -1,   124,    -1,
    781      125,    -1,   126,    -1,   127,    -1,   156,    -1,   114,   282,
     799     114,   282,   115,    -1,   122,    -1,   123,    -1,   124,    -1,
     800     125,    -1,   126,    -1,   127,    -1,   156,    -1,   114,   281,
    782801     115,   159,    -1,   159,    -1,   160,   122,   159,    -1,   160,
    783802     128,   159,    -1,   160,   129,   159,    -1,   160,    -1,   161,
     
    799818      -1,   177,    -1,   180,    -1,   181,    -1,   185,    -1,   186,
    800819      -1,   198,    -1,   200,    -1,   201,    -1,   206,    -1,   132,
    801      149,   119,   150,   120,   137,    -1,   279,   135,   319,   179,
     820     149,   119,   150,   120,   137,    -1,   278,   135,   318,   179,
    802821      -1,   119,   120,    -1,   119,   139,   139,   217,   182,   140,
    803822     120,    -1,   183,    -1,   182,   139,   183,    -1,   220,    -1,
    804       43,   220,    -1,   315,    -1,   179,   140,    -1,   179,    -1,
    805      184,   179,    -1,   178,   137,    -1,    44,   114,   177,   115,
    806      179,    -1,    44,   114,   177,   115,   179,    45,   179,    -1,
    807       46,   114,   177,   115,   191,    -1,    46,   114,   177,   115,
    808      119,   139,   213,   192,   120,    -1,    56,   114,   177,   115,
    809      191,    -1,    56,   114,   177,   115,   119,   139,   213,   194,
    810      120,    -1,   171,    -1,   171,   101,   171,    -1,   317,    -1,
    811      187,    -1,   188,   121,   187,    -1,    47,   188,   135,    -1,
    812       48,   135,    -1,   189,    -1,   190,   189,    -1,   190,   179,
    813       -1,    -1,   193,    -1,   190,   184,    -1,   193,   190,   184,
    814       -1,    -1,   195,    -1,   190,   197,    -1,   190,   184,   196,
    815       -1,   195,   190,   197,    -1,   195,   190,   184,   196,    -1,
    816       -1,   197,    -1,    59,    -1,    59,   137,    -1,    50,   114,
    817      177,   115,   179,    -1,    49,   179,    50,   114,   177,   115,
    818      137,    -1,    51,   114,   139,   199,   115,   179,    -1,   178,
    819      140,   137,   178,   137,   178,    -1,   220,   178,   137,   178,
    820       -1,    54,   279,   137,    -1,    54,   122,   177,   137,    -1,
    821       53,   137,    -1,    53,   279,   137,    -1,    52,   137,    -1,
    822       52,   279,   137,    -1,    55,   178,   137,    -1,    64,   173,
    823      137,    -1,    65,   173,   137,    -1,    65,   173,    66,   172,
    824      137,    -1,    60,   181,   202,    -1,    60,   181,   204,    -1,
    825       60,   181,   202,   204,    -1,   203,    -1,    61,   114,   101,
    826      115,   181,    -1,   203,    61,   114,   101,   115,   181,    -1,
    827       62,   114,   101,   115,   181,    -1,   203,    62,   114,   101,
    828      115,   181,    -1,    61,   114,   139,   139,   205,   140,   115,
    829      181,   140,    -1,   203,    61,   114,   139,   139,   205,   140,
    830      115,   181,   140,    -1,    62,   114,   139,   139,   205,   140,
    831      115,   181,   140,    -1,   203,    62,   114,   139,   139,   205,
    832      140,   115,   181,   140,    -1,    63,   181,    -1,   233,    -1,
    833      233,   316,    -1,   233,   364,    -1,   373,   144,    -1,   373,
    834       -1,    67,   207,   114,   146,   115,   137,    -1,    67,   207,
    835      114,   146,   135,   208,   115,   137,    -1,    67,   207,   114,
    836      146,   135,   208,   135,   208,   115,   137,    -1,    67,   207,
    837      114,   146,   135,   208,   135,   208,   135,   211,   115,   137,
    838       -1,    67,   207,    54,   114,   146,   135,   135,   208,   135,
    839      211,   135,   212,   115,   137,    -1,    -1,    11,    -1,    -1,
    840      209,    -1,   210,    -1,   209,   121,   210,    -1,   146,   114,
    841      171,   115,    -1,   116,   171,   117,   146,   114,   171,   115,
    842       -1,    -1,   146,    -1,   211,   121,   146,    -1,   144,    -1,
    843      212,   121,   144,    -1,   140,    -1,   214,    -1,   220,    -1,
    844      214,   139,   220,    -1,   140,    -1,   216,    -1,   230,    -1,
    845      216,   139,   230,    -1,    -1,   218,    -1,    31,   219,   137,
    846       -1,   218,    31,   219,   137,    -1,   281,    -1,   219,   121,
    847      281,    -1,   221,    -1,   230,    -1,   222,   140,   137,    -1,
    848      227,   140,   137,    -1,   224,   140,   137,    -1,   300,   140,
    849      137,    -1,   303,   140,   137,    -1,   223,   284,    -1,   239,
    850      223,   284,    -1,   222,   140,   121,   139,   279,   284,    -1,
    851      374,   279,   318,    -1,   377,   279,   318,    -1,   235,   377,
    852      279,   318,    -1,   225,    -1,   235,   225,    -1,   239,   225,
    853       -1,   239,   235,   225,    -1,   224,   140,   121,   139,   279,
    854       -1,   377,   279,   114,   139,   267,   140,   115,    -1,   226,
    855      279,   114,   139,   267,   140,   115,    -1,   116,   139,   269,
    856      140,   117,    -1,   116,   139,   269,   140,   121,   139,   270,
    857      140,   117,    -1,     3,   223,    -1,     3,   225,    -1,   227,
    858      140,   121,   139,   144,    -1,     3,   233,   316,    -1,   228,
    859      140,   121,   139,   316,    -1,   235,     3,   233,   316,    -1,
    860      233,     3,   316,    -1,   233,     3,   235,   316,    -1,     3,
    861      144,   136,   172,    -1,   229,   140,   121,   139,   144,   136,
    862      172,    -1,   231,   140,   137,    -1,   228,   140,   137,    -1,
    863      229,   140,   137,    -1,   247,   140,   137,    -1,   232,   316,
    864      318,   284,    -1,   231,   121,   319,   316,   318,   284,    -1,
    865      243,    -1,   247,    -1,   249,    -1,   290,    -1,   244,    -1,
    866      248,    -1,   250,    -1,   291,    -1,    -1,   235,    -1,   236,
    867       -1,   235,   236,    -1,   237,    -1,   321,    -1,    10,    -1,
    868       12,    -1,    11,    -1,    14,    -1,    70,    -1,    -1,    13,
    869      114,   238,   293,   115,    -1,   240,    -1,   235,   240,    -1,
    870      239,   235,   240,    -1,   241,    -1,   240,   241,    -1,     5,
    871       -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    872       -1,    72,    -1,    74,    -1,    16,    -1,    21,    -1,    20,
    873       -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    874       -1,    15,    -1,    27,    -1,    28,    -1,    29,    -1,    26,
    875       -1,    24,    -1,    25,    -1,   244,    -1,   239,   244,    -1,
    876      243,   241,    -1,   243,   241,   235,    -1,   243,   241,   244,
    877       -1,   245,    -1,   234,   246,   234,    -1,   242,    -1,   235,
    878      242,    -1,   245,   236,    -1,   245,   242,    -1,    30,   114,
    879      283,   115,    -1,    30,   114,   177,   115,    -1,    81,   114,
    880      283,   115,    -1,    81,   114,   177,   115,    -1,   248,    -1,
    881      239,   248,    -1,   247,   241,    -1,   247,   241,   235,    -1,
    882      251,    -1,   235,   251,    -1,   248,   236,    -1,   250,    -1,
    883      239,   250,    -1,   249,   241,    -1,   249,   241,   235,    -1,
    884       77,    -1,   235,    77,    -1,   250,   236,    -1,   252,    -1,
    885      263,    -1,   254,   119,   255,   120,    -1,   254,   281,    -1,
    886       -1,   254,   281,   253,   119,   255,   120,    -1,   254,   114,
    887      299,   115,   119,   255,   120,    -1,   254,   292,    -1,    33,
    888      319,    -1,    34,   319,    -1,    -1,   255,   256,    -1,   257,
    889      137,    -1,    43,   257,   137,    -1,   258,   137,    -1,    43,
    890      258,   137,    -1,   373,    -1,   373,   281,    -1,   257,   121,
    891      281,    -1,   257,   121,    -1,   233,   259,    -1,   258,   121,
    892      319,   259,    -1,    -1,   261,    -1,   325,   260,    -1,   338,
    893      260,    -1,   364,    -1,    -1,   261,    -1,   135,   171,    -1,
    894       32,   319,    -1,   262,   119,   265,   379,   120,    -1,   262,
    895      281,    -1,    -1,   262,   281,   264,   119,   265,   379,   120,
    896       -1,   281,   266,    -1,   265,   121,   281,   266,    -1,    -1,
    897      136,   171,    -1,    -1,   268,    -1,   270,    -1,   269,    -1,
    898      269,   140,   121,   139,   270,    -1,   270,   140,   121,   139,
    899      101,    -1,   269,   140,   121,   139,   101,    -1,   274,    -1,
    900      270,   140,   121,   139,   274,    -1,   269,   140,   121,   139,
    901      274,    -1,   269,   140,   121,   139,   270,   140,   121,   139,
    902      274,    -1,   275,    -1,   270,   140,   121,   139,   275,    -1,
    903       -1,   272,    -1,   273,    -1,   273,   140,   121,   139,   101,
    904       -1,   277,    -1,   276,    -1,   273,   140,   121,   139,   277,
    905       -1,   273,   140,   121,   139,   276,    -1,   276,    -1,   369,
    906      279,   380,    -1,   377,   279,   380,    -1,   235,   377,   279,
    907      380,    -1,   225,    -1,   277,    -1,   369,    -1,   377,    -1,
    908      235,   377,    -1,   378,    -1,   232,   343,   380,    -1,   232,
    909      347,   380,    -1,   232,    -1,   232,   358,    -1,   144,    -1,
    910      278,   121,   144,    -1,   142,    -1,    77,    -1,    78,    -1,
    911      143,    -1,    77,    -1,    78,    -1,   144,    -1,    77,    -1,
    912       78,    -1,   373,    -1,   233,    -1,   233,   364,    -1,   373,
    913       -1,   378,    -1,   233,    -1,   233,   352,    -1,    -1,   136,
    914      285,    -1,   112,   285,    -1,   172,    -1,   119,   286,   379,
    915      120,    -1,    -1,   285,    -1,   287,   285,    -1,   286,   121,
    916      285,    -1,   286,   121,   287,   285,    -1,   288,   135,    -1,
    917      281,   135,    -1,   289,    -1,   288,   289,    -1,   118,   281,
    918       -1,   116,   139,   172,   140,   117,    -1,   116,   139,   317,
    919      140,   117,    -1,   116,   139,   171,   101,   171,   140,   117,
    920       -1,   118,   116,   139,   152,   140,   117,    -1,   291,    -1,
    921      239,   291,    -1,   290,   241,    -1,   290,   241,   235,    -1,
    922      292,    -1,   235,   292,    -1,   291,   236,    -1,    78,   114,
    923      299,   115,    -1,   294,   380,    -1,   293,   121,   294,   380,
    924       -1,    -1,   296,   281,   295,   297,    -1,   233,   343,    -1,
    925       35,    -1,    37,    -1,    36,    -1,    38,    -1,    -1,   297,
    926      298,    -1,   133,   281,   114,   299,   115,    -1,   133,   119,
    927      139,   305,   120,    -1,   133,   114,   139,   293,   140,   115,
    928      119,   139,   305,   120,   114,   299,   115,    -1,   283,    -1,
    929      172,    -1,   299,   121,   283,    -1,   299,   121,   172,    -1,
    930       35,   301,    -1,   240,    35,   301,    -1,   300,   121,   301,
    931       -1,   302,   297,    -1,   302,   297,   136,   283,    -1,   281,
    932       -1,   280,   114,   139,   293,   140,   115,    -1,    39,   281,
    933      114,   139,   293,   140,   115,   119,   120,    -1,    -1,    39,
    934      281,   114,   139,   293,   140,   115,   119,   304,   305,   120,
    935       -1,   306,    -1,   305,   139,   306,    -1,   307,   140,   137,
    936       -1,   308,   140,   137,    -1,   223,    -1,   225,    -1,   307,
    937      140,   121,   139,   279,    -1,   233,   316,    -1,   308,   140,
    938      121,   139,   316,    -1,    -1,   310,    -1,   312,    -1,   310,
    939      139,   312,    -1,    -1,   310,    -1,   220,    -1,   314,    -1,
    940      206,    -1,    -1,     5,    84,   313,   119,   311,   120,    -1,
    941       43,   312,    -1,   315,    -1,   330,   181,    -1,   334,   139,
    942      215,   181,    -1,   224,   181,    -1,   232,   330,   181,    -1,
    943      235,   330,   181,    -1,   239,   330,   181,    -1,   239,   235,
    944      330,   181,    -1,   232,   334,   139,   215,   181,    -1,   235,
    945      334,   139,   215,   181,    -1,   239,   334,   139,   215,   181,
    946       -1,   239,   235,   334,   139,   215,   181,    -1,   325,    -1,
    947      338,    -1,   330,    -1,   171,   127,   171,    -1,    -1,    67,
    948      114,   146,   115,   319,    -1,    -1,   320,    -1,   321,    -1,
    949      320,   321,    -1,    42,   114,   114,   322,   115,   115,    -1,
    950      323,    -1,   322,   121,   323,    -1,    -1,   324,    -1,   324,
    951      114,   150,   115,    -1,    75,    -1,    77,    -1,    78,    -1,
    952       10,    -1,   326,   319,    -1,   327,    -1,   328,   319,    -1,
    953      329,   319,    -1,   142,    -1,   114,   326,   115,    -1,   157,
    954      325,    -1,   157,   235,   325,    -1,   114,   327,   115,    -1,
    955      326,   356,    -1,   114,   327,   115,   356,    -1,   114,   328,
    956      115,   357,    -1,   114,   328,   115,    -1,   114,   327,   115,
    957      114,   139,   271,   140,   115,    -1,   114,   329,   115,    -1,
    958      331,   319,    -1,   332,    -1,   333,   319,    -1,   326,   114,
    959      139,   271,   140,   115,    -1,   114,   332,   115,   114,   139,
    960      271,   140,   115,    -1,   114,   331,   115,    -1,   157,   330,
    961       -1,   157,   235,   330,    -1,   114,   332,   115,    -1,   114,
    962      332,   115,   356,    -1,   114,   333,   115,   357,    -1,   114,
    963      333,   115,    -1,   335,    -1,   336,    -1,   337,    -1,   326,
    964      114,   278,   115,    -1,   114,   336,   115,   114,   278,   115,
    965       -1,   114,   335,   115,    -1,   157,   334,    -1,   157,   235,
    966      334,    -1,   114,   336,   115,    -1,   114,   336,   115,   356,
    967       -1,   114,   337,   115,   357,    -1,   114,   337,   115,    -1,
    968      339,   319,    -1,   340,    -1,   341,   319,    -1,   342,   319,
    969       -1,   348,    -1,   114,   339,   115,    -1,   157,   338,    -1,
    970      157,   235,   338,    -1,   114,   340,   115,    -1,   339,   356,
    971       -1,   114,   340,   115,   356,    -1,   114,   341,   115,   357,
    972       -1,   114,   341,   115,    -1,   339,   114,   139,   271,   140,
    973      115,    -1,   114,   340,   115,   114,   139,   271,   140,   115,
    974       -1,   114,   342,   115,    -1,   326,   319,    -1,   344,    -1,
    975      345,   319,    -1,   346,   319,    -1,   157,   343,    -1,   157,
    976      235,   343,    -1,   114,   344,   115,    -1,   326,   362,    -1,
    977      114,   344,   115,   356,    -1,   114,   345,   115,   357,    -1,
    978      114,   345,   115,    -1,   326,   114,   139,   271,   140,   115,
    979       -1,   114,   344,   115,   114,   139,   271,   140,   115,    -1,
    980      114,   346,   115,    -1,   348,   319,    -1,   349,    -1,   350,
    981      319,    -1,   351,   319,    -1,    77,    -1,    78,    -1,   157,
    982      347,    -1,   157,   235,   347,    -1,   114,   349,   115,    -1,
    983      348,   362,    -1,   114,   349,   115,   362,    -1,   348,   114,
    984      139,   271,   140,   115,    -1,   114,   349,   115,   114,   139,
    985      271,   140,   115,    -1,   353,    -1,   354,   319,    -1,   355,
    986      319,    -1,   157,    -1,   157,   235,    -1,   157,   352,    -1,
    987      157,   235,   352,    -1,   114,   353,   115,    -1,   356,    -1,
    988      114,   353,   115,   356,    -1,   114,   354,   115,   357,    -1,
    989      114,   354,   115,    -1,   114,   139,   271,   140,   115,    -1,
    990      114,   353,   115,   114,   139,   271,   140,   115,    -1,   114,
    991      355,   115,    -1,   116,   117,    -1,   116,   117,   357,    -1,
    992      357,    -1,   116,   139,   172,   140,   117,    -1,   116,   139,
    993      122,   140,   117,    -1,   357,   116,   139,   172,   140,   117,
    994       -1,   357,   116,   139,   122,   140,   117,    -1,   359,    -1,
    995      360,   319,    -1,   361,   319,    -1,   157,    -1,   157,   235,
    996       -1,   157,   358,    -1,   157,   235,   358,    -1,   114,   359,
    997      115,    -1,   362,    -1,   114,   359,   115,   362,    -1,   114,
    998      360,   115,   357,    -1,   114,   360,   115,    -1,   114,   139,
    999      271,   140,   115,    -1,   114,   359,   115,   114,   139,   271,
    1000      140,   115,    -1,   114,   361,   115,    -1,   363,    -1,   363,
    1001      357,    -1,   357,    -1,   116,   117,    -1,   116,   139,   235,
     823      43,   220,    -1,   314,    -1,    43,   314,    -1,   179,   140,
     824      -1,   179,    -1,   184,   179,    -1,   178,   137,    -1,    44,
     825     114,   177,   115,   179,    -1,    44,   114,   177,   115,   179,
     826      45,   179,    -1,    46,   114,   177,   115,   191,    -1,    46,
     827     114,   177,   115,   119,   139,   213,   192,   120,    -1,    56,
     828     114,   177,   115,   191,    -1,    56,   114,   177,   115,   119,
     829     139,   213,   194,   120,    -1,   171,    -1,   171,   101,   171,
     830      -1,   316,    -1,   187,    -1,   188,   121,   187,    -1,    47,
     831     188,   135,    -1,    48,   135,    -1,   189,    -1,   190,   189,
     832      -1,   190,   179,    -1,    -1,   193,    -1,   190,   184,    -1,
     833     193,   190,   184,    -1,    -1,   195,    -1,   190,   197,    -1,
     834     190,   184,   196,    -1,   195,   190,   197,    -1,   195,   190,
     835     184,   196,    -1,    -1,   197,    -1,    59,    -1,    59,   137,
     836      -1,    50,   114,   177,   115,   179,    -1,    49,   179,    50,
     837     114,   177,   115,   137,    -1,    51,   114,   139,   199,   115,
     838     179,    -1,   178,   140,   137,   178,   137,   178,    -1,   220,
     839     178,   137,   178,    -1,    54,   278,   137,    -1,    54,   122,
     840     177,   137,    -1,    53,   137,    -1,    53,   278,   137,    -1,
     841      52,   137,    -1,    52,   278,   137,    -1,    55,   178,   137,
     842      -1,    64,   173,   137,    -1,    65,   173,   137,    -1,    65,
     843     173,    66,   172,   137,    -1,    60,   181,   202,    -1,    60,
     844     181,   204,    -1,    60,   181,   202,   204,    -1,   203,    -1,
     845      61,   114,   101,   115,   181,    -1,   203,    61,   114,   101,
     846     115,   181,    -1,    62,   114,   101,   115,   181,    -1,   203,
     847      62,   114,   101,   115,   181,    -1,    61,   114,   139,   139,
     848     205,   140,   115,   181,   140,    -1,   203,    61,   114,   139,
     849     139,   205,   140,   115,   181,   140,    -1,    62,   114,   139,
     850     139,   205,   140,   115,   181,   140,    -1,   203,    62,   114,
     851     139,   139,   205,   140,   115,   181,   140,    -1,    63,   181,
     852      -1,   233,    -1,   233,   315,    -1,   233,   363,    -1,   372,
     853     144,    -1,   372,    -1,    67,   207,   114,   146,   115,   137,
     854      -1,    67,   207,   114,   146,   135,   208,   115,   137,    -1,
     855      67,   207,   114,   146,   135,   208,   135,   208,   115,   137,
     856      -1,    67,   207,   114,   146,   135,   208,   135,   208,   135,
     857     211,   115,   137,    -1,    67,   207,    54,   114,   146,   135,
     858     135,   208,   135,   211,   135,   212,   115,   137,    -1,    -1,
     859      11,    -1,    -1,   209,    -1,   210,    -1,   209,   121,   210,
     860      -1,   146,   114,   171,   115,    -1,   116,   171,   117,   146,
     861     114,   171,   115,    -1,    -1,   146,    -1,   211,   121,   146,
     862      -1,   144,    -1,   212,   121,   144,    -1,   140,    -1,   214,
     863      -1,   220,    -1,   214,   139,   220,    -1,   140,    -1,   216,
     864      -1,   230,    -1,   216,   139,   230,    -1,    -1,   218,    -1,
     865      31,   219,   137,    -1,   218,    31,   219,   137,    -1,   280,
     866      -1,   219,   121,   280,    -1,   221,    -1,   230,    -1,   222,
     867     140,   137,    -1,   227,   140,   137,    -1,   224,   140,   137,
     868      -1,   299,   140,   137,    -1,   302,   140,   137,    -1,   223,
     869     283,    -1,   239,   223,   283,    -1,   222,   140,   121,   139,
     870     278,   283,    -1,   373,   278,   317,    -1,   376,   278,   317,
     871      -1,   235,   376,   278,   317,    -1,   225,    -1,   235,   225,
     872      -1,   239,   225,    -1,   239,   235,   225,    -1,   224,   140,
     873     121,   139,   278,    -1,   376,   278,   114,   139,   266,   140,
     874     115,    -1,   226,   278,   114,   139,   266,   140,   115,    -1,
     875     116,   139,   268,   140,   117,    -1,   116,   139,   268,   140,
     876     121,   139,   269,   140,   117,    -1,     3,   223,    -1,     3,
     877     225,    -1,   227,   140,   121,   139,   144,    -1,     3,   233,
     878     315,    -1,   228,   140,   121,   139,   315,    -1,   235,     3,
     879     233,   315,    -1,   233,     3,   315,    -1,   233,     3,   235,
     880     315,    -1,     3,   144,   136,   172,    -1,   229,   140,   121,
     881     139,   144,   136,   172,    -1,   232,   231,   140,   137,    -1,
     882     228,   140,   137,    -1,   229,   140,   137,    -1,   247,   140,
     883     137,    -1,   315,   317,   283,    -1,   231,   121,   318,   315,
     884     317,   283,    -1,   243,    -1,   247,    -1,   249,    -1,   289,
     885      -1,   244,    -1,   248,    -1,   250,    -1,   290,    -1,    -1,
     886     235,    -1,   236,    -1,   235,   236,    -1,   237,    -1,   320,
     887      -1,    10,    -1,    12,    -1,    11,    -1,    14,    -1,    70,
     888      -1,    -1,    13,   114,   238,   292,   115,    -1,   240,    -1,
     889     235,   240,    -1,   239,   235,   240,    -1,   241,    -1,   240,
     890     241,    -1,     5,    -1,     7,    -1,     4,    -1,     6,    -1,
     891       8,    -1,     9,    -1,    72,    -1,    74,    -1,    16,    -1,
     892      21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,    -1,
     893      22,    -1,    23,    -1,    15,    -1,    27,    -1,    28,    -1,
     894      29,    -1,    26,    -1,    24,    -1,    25,    -1,   244,    -1,
     895     239,   244,    -1,   243,   241,    -1,   243,   241,   235,    -1,
     896     243,   241,   244,    -1,   245,    -1,   234,   246,   234,    -1,
     897     242,    -1,   235,   242,    -1,   245,   236,    -1,   245,   242,
     898      -1,    30,   114,   282,   115,    -1,    30,   114,   177,   115,
     899      -1,    81,   114,   282,   115,    -1,    81,   114,   177,   115,
     900      -1,   248,    -1,   239,   248,    -1,   247,   241,    -1,   247,
     901     241,   235,    -1,   251,    -1,   235,   251,    -1,   248,   236,
     902      -1,   250,    -1,   239,   250,    -1,   249,   241,    -1,   249,
     903     241,   235,    -1,    77,    -1,   235,    77,    -1,   250,   236,
     904      -1,   252,    -1,   262,    -1,   254,   318,   119,   255,   120,
     905      -1,   254,   318,   280,    -1,    -1,   254,   318,   280,   253,
     906     119,   255,   120,    -1,   254,   318,   114,   298,   115,   119,
     907     255,   120,    -1,   254,   318,   291,    -1,    33,    -1,    34,
     908      -1,    -1,   255,   256,    -1,   257,   137,    -1,    43,   257,
     909     137,    -1,   233,   258,   137,    -1,    43,   233,   258,   137,
     910      -1,   372,    -1,   372,   280,    -1,   257,   121,   280,    -1,
     911     257,   121,    -1,   259,    -1,   258,   121,   318,   259,    -1,
     912      -1,   261,    -1,   324,   260,    -1,   337,   260,    -1,   363,
     913      -1,    -1,   261,    -1,   135,   171,    -1,    32,   318,   119,
     914     264,   378,   120,    -1,    32,   318,   280,    -1,    -1,    32,
     915     318,   280,   263,   119,   264,   378,   120,    -1,   280,   265,
     916      -1,   264,   121,   280,   265,    -1,    -1,   136,   171,    -1,
     917      -1,   267,    -1,   269,    -1,   268,    -1,   268,   140,   121,
     918     139,   269,    -1,   269,   140,   121,   139,   101,    -1,   268,
     919     140,   121,   139,   101,    -1,   273,    -1,   269,   140,   121,
     920     139,   273,    -1,   268,   140,   121,   139,   273,    -1,   268,
     921     140,   121,   139,   269,   140,   121,   139,   273,    -1,   274,
     922      -1,   269,   140,   121,   139,   274,    -1,    -1,   271,    -1,
     923     272,    -1,   272,   140,   121,   139,   101,    -1,   276,    -1,
     924     275,    -1,   272,   140,   121,   139,   276,    -1,   272,   140,
     925     121,   139,   275,    -1,   275,    -1,   368,   278,   379,    -1,
     926     376,   278,   379,    -1,   235,   376,   278,   379,    -1,   225,
     927      -1,   276,    -1,   368,    -1,   376,    -1,   235,   376,    -1,
     928     377,    -1,   232,   342,   379,    -1,   232,   346,   379,    -1,
     929     232,    -1,   232,   357,    -1,   144,    -1,   277,   121,   144,
     930      -1,   142,    -1,    77,    -1,    78,    -1,   143,    -1,    77,
     931      -1,    78,    -1,   144,    -1,    77,    -1,    78,    -1,   372,
     932      -1,   233,    -1,   233,   351,    -1,   281,    -1,   377,    -1,
     933      -1,   136,   284,    -1,   112,   284,    -1,   172,    -1,   119,
     934     285,   378,   120,    -1,    -1,   284,    -1,   286,   284,    -1,
     935     285,   121,   284,    -1,   285,   121,   286,   284,    -1,   287,
     936     135,    -1,   280,   135,    -1,   288,    -1,   287,   288,    -1,
     937     118,   280,    -1,   116,   139,   172,   140,   117,    -1,   116,
     938     139,   316,   140,   117,    -1,   116,   139,   171,   101,   171,
     939     140,   117,    -1,   118,   116,   139,   152,   140,   117,    -1,
     940     290,    -1,   239,   290,    -1,   289,   241,    -1,   289,   241,
     941     235,    -1,   291,    -1,   235,   291,    -1,   290,   236,    -1,
     942      78,   114,   298,   115,    -1,   293,   379,    -1,   292,   121,
     943     293,   379,    -1,    -1,   295,   280,   294,   296,    -1,   233,
     944     342,    -1,    35,    -1,    37,    -1,    36,    -1,    38,    -1,
     945      -1,   296,   297,    -1,   133,   280,   114,   298,   115,    -1,
     946     133,   119,   139,   304,   120,    -1,   133,   114,   139,   292,
     947     140,   115,   119,   139,   304,   120,   114,   298,   115,    -1,
     948     282,    -1,   172,    -1,   298,   121,   282,    -1,   298,   121,
     949     172,    -1,    35,   300,    -1,   240,    35,   300,    -1,   299,
     950     121,   300,    -1,   301,   296,    -1,   301,   296,   136,   282,
     951      -1,   280,    -1,   279,   114,   139,   292,   140,   115,    -1,
     952      39,   280,   114,   139,   292,   140,   115,   119,   120,    -1,
     953      -1,    39,   280,   114,   139,   292,   140,   115,   119,   303,
     954     304,   120,    -1,   305,    -1,   304,   139,   305,    -1,   306,
     955     140,   137,    -1,   307,   140,   137,    -1,   223,    -1,   225,
     956      -1,   306,   140,   121,   139,   278,    -1,   233,   315,    -1,
     957     307,   140,   121,   139,   315,    -1,    -1,   309,    -1,   311,
     958      -1,   309,   139,   311,    -1,    -1,   309,    -1,   220,    -1,
     959     313,    -1,   206,    -1,    -1,     5,    84,   312,   119,   310,
     960     120,    -1,    43,   311,    -1,   314,    -1,   329,   181,    -1,
     961     333,   139,   215,   181,    -1,   224,   181,    -1,   232,   329,
     962     181,    -1,   235,   329,   181,    -1,   239,   329,   181,    -1,
     963     239,   235,   329,   181,    -1,   232,   333,   139,   215,   181,
     964      -1,   235,   333,   139,   215,   181,    -1,   239,   333,   139,
     965     215,   181,    -1,   239,   235,   333,   139,   215,   181,    -1,
     966     324,    -1,   337,    -1,   329,    -1,   171,   127,   171,    -1,
     967      -1,    67,   114,   146,   115,   318,    -1,    -1,   319,    -1,
     968     320,    -1,   319,   320,    -1,    42,   114,   114,   321,   115,
     969     115,    -1,   322,    -1,   321,   121,   322,    -1,    -1,   323,
     970      -1,   323,   114,   150,   115,    -1,    75,    -1,    77,    -1,
     971      78,    -1,    10,    -1,   325,   318,    -1,   326,    -1,   327,
     972     318,    -1,   328,   318,    -1,   142,    -1,   114,   325,   115,
     973      -1,   157,   324,    -1,   157,   235,   324,    -1,   114,   326,
     974     115,   318,    -1,   325,   355,    -1,   114,   326,   115,   355,
     975      -1,   114,   327,   115,   356,    -1,   114,   327,   115,    -1,
     976     114,   326,   115,   114,   139,   270,   140,   115,    -1,   114,
     977     328,   115,    -1,   330,   318,    -1,   331,    -1,   332,   318,
     978      -1,   325,   114,   139,   270,   140,   115,    -1,   114,   331,
     979     115,   114,   139,   270,   140,   115,    -1,   114,   330,   115,
     980      -1,   157,   329,    -1,   157,   235,   329,    -1,   114,   331,
     981     115,    -1,   114,   331,   115,   355,    -1,   114,   332,   115,
     982     356,    -1,   114,   332,   115,    -1,   334,    -1,   335,    -1,
     983     336,    -1,   325,   114,   277,   115,    -1,   114,   335,   115,
     984     114,   139,   270,   140,   115,    -1,   114,   334,   115,    -1,
     985     157,   333,    -1,   157,   235,   333,    -1,   114,   335,   115,
     986      -1,   114,   335,   115,   355,    -1,   114,   336,   115,   356,
     987      -1,   114,   336,   115,    -1,   338,   318,    -1,   339,    -1,
     988     340,   318,    -1,   341,   318,    -1,   347,    -1,   114,   338,
     989     115,    -1,   157,   337,    -1,   157,   235,   337,    -1,   114,
     990     339,   115,   318,    -1,   338,   355,    -1,   114,   339,   115,
     991     355,    -1,   114,   340,   115,   356,    -1,   114,   340,   115,
     992      -1,   338,   114,   139,   270,   140,   115,    -1,   114,   339,
     993     115,   114,   139,   270,   140,   115,    -1,   114,   341,   115,
     994      -1,   325,   318,    -1,   343,    -1,   344,   318,    -1,   345,
     995     318,    -1,   157,   342,    -1,   157,   235,   342,    -1,   114,
     996     343,   115,   318,    -1,   325,   361,    -1,   114,   343,   115,
     997     355,    -1,   114,   344,   115,   356,    -1,   114,   344,   115,
     998      -1,   325,   114,   139,   270,   140,   115,    -1,   114,   343,
     999     115,   114,   139,   270,   140,   115,    -1,   114,   345,   115,
     1000      -1,   347,   318,    -1,   348,    -1,   349,   318,    -1,   350,
     1001     318,    -1,    77,    -1,    78,    -1,   157,   346,    -1,   157,
     1002     235,   346,    -1,   114,   348,   115,   318,    -1,   347,   361,
     1003      -1,   114,   348,   115,   361,    -1,   347,   114,   139,   270,
     1004     140,   115,    -1,   114,   348,   115,   114,   139,   270,   140,
     1005     115,    -1,   352,    -1,   353,   318,    -1,   354,   318,    -1,
     1006     157,    -1,   157,   235,    -1,   157,   351,    -1,   157,   235,
     1007     351,    -1,   114,   352,   115,   318,    -1,   355,    -1,   114,
     1008     352,   115,   355,    -1,   114,   353,   115,   356,    -1,   114,
     1009     353,   115,    -1,   114,   139,   270,   140,   115,    -1,   114,
     1010     352,   115,   114,   139,   270,   140,   115,    -1,   114,   354,
     1011     115,    -1,   116,   117,    -1,   116,   117,   356,    -1,   356,
     1012      -1,   116,   139,   172,   140,   117,    -1,   116,   139,   122,
     1013     140,   117,    -1,   356,   116,   139,   172,   140,   117,    -1,
     1014     356,   116,   139,   122,   140,   117,    -1,   358,    -1,   359,
     1015     318,    -1,   360,   318,    -1,   157,    -1,   157,   235,    -1,
     1016     157,   357,    -1,   157,   235,   357,    -1,   114,   358,   115,
     1017     318,    -1,   361,    -1,   114,   358,   115,   361,    -1,   114,
     1018     359,   115,   356,    -1,   114,   359,   115,    -1,   114,   139,
     1019     270,   140,   115,    -1,   114,   358,   115,   114,   139,   270,
     1020     140,   115,    -1,   114,   360,   115,    -1,   362,    -1,   362,
     1021     356,    -1,   356,    -1,   116,   117,    -1,   116,   139,   235,
    10021022     122,   140,   117,    -1,   116,   139,   235,   140,   117,    -1,
    10031023     116,   139,   235,   172,   140,   117,    -1,   116,   139,     7,
    10041024     234,   172,   140,   117,    -1,   116,   139,   235,     7,   172,
    1005      140,   117,    -1,   365,    -1,   366,   319,    -1,   367,   319,
    1006       -1,   157,    -1,   157,   235,    -1,   157,   364,    -1,   157,
    1007      235,   364,    -1,   114,   365,   115,    -1,   356,    -1,   114,
    1008      365,   115,   356,    -1,   114,   366,   115,   357,    -1,   114,
    1009      366,   115,    -1,   114,   365,   115,   114,   139,   271,   140,
    1010      115,    -1,   114,   367,   115,    -1,   369,    -1,   377,    -1,
    1011      235,   377,    -1,   370,    -1,   371,    -1,   157,   233,    -1,
    1012      235,   157,   233,    -1,   157,   378,    -1,   235,   157,   378,
    1013       -1,   157,   368,    -1,   235,   157,   368,    -1,   116,   117,
    1014      233,    -1,   372,   233,    -1,   116,   117,   357,   233,    -1,
    1015      372,   357,   233,    -1,   357,   233,    -1,   116,   117,   370,
    1016       -1,   372,   370,    -1,   116,   117,   357,   370,    -1,   372,
    1017      357,   370,    -1,   357,   370,    -1,   116,   139,   235,   122,
    1018      140,   117,    -1,   116,   139,   235,   172,   140,   117,    -1,
    1019      116,   139,   239,   172,   140,   117,    -1,   116,   139,   239,
    1020      235,   172,   140,   117,    -1,   377,    -1,   235,   377,    -1,
    1021      374,    -1,   375,    -1,   376,    -1,   157,   233,    -1,   235,
    1022      157,   233,    -1,   157,   378,    -1,   235,   157,   378,    -1,
    1023      157,   373,    -1,   235,   157,   373,    -1,   116,   117,   233,
    1024       -1,   116,   117,   357,   233,    -1,   357,   233,    -1,   116,
    1025      117,   375,    -1,   116,   117,   357,   375,    -1,   357,   375,
    1026       -1,   116,   139,   270,   140,   117,    -1,   377,   114,   139,
    1027      267,   140,   115,    -1,   226,   114,   139,   267,   140,   115,
    1028       -1,    -1,   121,    -1,    -1,   136,   172,    -1
     1025     140,   117,    -1,   364,    -1,   365,   318,    -1,   366,   318,
     1026      -1,   157,    -1,   157,   235,    -1,   157,   363,    -1,   157,
     1027     235,   363,    -1,   114,   364,   115,   318,    -1,   355,    -1,
     1028     114,   364,   115,   355,    -1,   114,   365,   115,   356,    -1,
     1029     114,   365,   115,    -1,   114,   364,   115,   114,   139,   270,
     1030     140,   115,    -1,   114,   366,   115,    -1,   368,    -1,   376,
     1031      -1,   235,   376,    -1,   369,    -1,   370,    -1,   157,   233,
     1032      -1,   235,   157,   233,    -1,   157,   377,    -1,   235,   157,
     1033     377,    -1,   157,   367,    -1,   235,   157,   367,    -1,   116,
     1034     117,   233,    -1,   371,   233,    -1,   116,   117,   356,   233,
     1035      -1,   371,   356,   233,    -1,   356,   233,    -1,   116,   117,
     1036     369,    -1,   371,   369,    -1,   116,   117,   356,   369,    -1,
     1037     371,   356,   369,    -1,   356,   369,    -1,   116,   139,   235,
     1038     122,   140,   117,    -1,   116,   139,   235,   172,   140,   117,
     1039      -1,   116,   139,   239,   172,   140,   117,    -1,   116,   139,
     1040     239,   235,   172,   140,   117,    -1,   376,    -1,   235,   376,
     1041      -1,   373,    -1,   374,    -1,   375,    -1,   157,   233,    -1,
     1042     235,   157,   233,    -1,   157,   377,    -1,   235,   157,   377,
     1043      -1,   157,   372,    -1,   235,   157,   372,    -1,   116,   117,
     1044     233,    -1,   116,   117,   356,   233,    -1,   356,   233,    -1,
     1045     116,   117,   374,    -1,   116,   117,   356,   374,    -1,   356,
     1046     374,    -1,   116,   139,   269,   140,   117,    -1,   376,   114,
     1047     139,   266,   140,   115,    -1,   226,   114,   139,   266,   140,
     1048     115,    -1,    -1,   121,    -1,    -1,   136,   172,    -1
    10291049};
    10301050
     
    10321052static const yytype_uint16 yyrline[] =
    10331053{
    1034        0,   305,   305,   309,   316,   317,   318,   319,   320,   324,
    1035      325,   326,   330,   331,   335,   336,   340,   341,   345,   349,
    1036      350,   361,   363,   365,   366,   368,   373,   374,   380,   382,
    1037      384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
    1038      414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
    1039      435,   440,   442,   444,   456,   457,   465,   468,   470,   472,
    1040      477,   490,   492,   494,   496,   498,   500,   502,   504,   506,
    1041      508,   510,   517,   518,   524,   525,   526,   527,   531,   532,
    1042      539,   540,   542,   544,   549,   550,   552,   557,   558,   560,
    1043      565,   566,   568,   570,   572,   577,   578,   580,   585,   586,
    1044      591,   592,   597,   598,   603,   604,   609,   610,   615,   616,
    1045      619,   626,   631,   632,   640,   641,   645,   646,   647,   648,
    1046      649,   650,   651,   652,   653,   654,   655,   656,   666,   668,
    1047      673,   674,   679,   680,   686,   687,   693,   694,   695,   696,
    1048      697,   698,   699,   700,   701,   711,   718,   720,   730,   731,
    1049      736,   738,   744,   746,   750,   751,   756,   761,   764,   766,
    1050      768,   778,   780,   791,   792,   794,   798,   800,   804,   805,
    1051      810,   811,   815,   820,   821,   825,   827,   833,   834,   838,
    1052      840,   842,   844,   850,   851,   855,   857,   862,   864,   866,
    1053      871,   873,   878,   880,   884,   887,   891,   894,   898,   900,
    1054      902,   904,   909,   911,   913,   918,   920,   922,   924,   926,
    1055      931,   933,   935,   937,   942,   954,   955,   960,   962,   967,
    1056      971,   973,   975,   977,   979,   985,   986,   992,   993,   997,
    1057      998,  1003,  1005,  1011,  1012,  1014,  1020,  1025,  1035,  1037,
    1058     1041,  1042,  1047,  1049,  1053,  1054,  1058,  1060,  1064,  1065,
    1059     1069,  1070,  1074,  1075,  1090,  1091,  1092,  1093,  1094,  1098,
    1060     1103,  1110,  1120,  1125,  1130,  1138,  1143,  1148,  1153,  1158,
    1061     1188,  1193,  1200,  1202,  1209,  1214,  1219,  1230,  1235,  1240,
    1062     1245,  1250,  1259,  1264,  1272,  1273,  1274,  1275,  1281,  1286,
    1063     1294,  1295,  1296,  1297,  1301,  1302,  1303,  1304,  1309,  1310,
    1064     1319,  1320,  1325,  1326,  1330,  1332,  1334,  1336,  1338,  1341,
    1065     1340,  1352,  1353,  1355,  1365,  1366,  1371,  1373,  1375,  1377,
    1066     1379,  1382,  1384,  1387,  1392,  1394,  1396,  1398,  1400,  1402,
    1067     1404,  1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1426,
    1068     1427,  1429,  1431,  1433,  1438,  1439,  1445,  1446,  1448,  1450,
    1069     1455,  1457,  1459,  1461,  1466,  1467,  1469,  1471,  1476,  1477,
    1070     1479,  1484,  1485,  1487,  1489,  1494,  1496,  1498,  1503,  1504,
    1071     1508,  1510,  1516,  1515,  1519,  1521,  1526,  1528,  1534,  1535,
    1072     1540,  1541,  1543,  1544,  1553,  1554,  1556,  1558,  1563,  1565,
    1073     1571,  1572,  1574,  1577,  1580,  1585,  1586,  1591,  1596,  1600,
    1074     1602,  1608,  1607,  1614,  1616,  1622,  1623,  1631,  1632,  1636,
    1075     1637,  1638,  1640,  1642,  1649,  1650,  1652,  1654,  1659,  1660,
    1076     1666,  1667,  1671,  1672,  1677,  1678,  1679,  1681,  1689,  1690,
    1077     1692,  1695,  1697,  1701,  1702,  1703,  1705,  1707,  1711,  1716,
    1078     1724,  1725,  1734,  1736,  1741,  1742,  1743,  1747,  1748,  1749,
    1079     1753,  1754,  1755,  1759,  1760,  1761,  1766,  1767,  1768,  1769,
    1080     1775,  1776,  1778,  1783,  1784,  1789,  1790,  1791,  1792,  1793,
    1081     1808,  1809,  1814,  1815,  1821,  1823,  1826,  1828,  1830,  1853,
    1082     1854,  1856,  1858,  1863,  1864,  1866,  1871,  1876,  1877,  1883,
    1083     1882,  1886,  1890,  1892,  1894,  1896,  1902,  1903,  1908,  1913,
    1084     1915,  1920,  1922,  1923,  1925,  1930,  1932,  1934,  1939,  1941,
    1085     1946,  1951,  1959,  1965,  1964,  1978,  1979,  1984,  1985,  1989,
    1086     1994,  1999,  2007,  2012,  2023,  2024,  2029,  2030,  2036,  2037,
    1087     2041,  2042,  2043,  2046,  2045,  2056,  2065,  2071,  2077,  2086,
    1088     2092,  2098,  2104,  2110,  2118,  2124,  2132,  2138,  2147,  2148,
    1089     2149,  2153,  2159,  2160,  2166,  2167,  2171,  2172,  2177,  2182,
    1090     2183,  2189,  2190,  2192,  2197,  2198,  2199,  2200,  2235,  2237,
    1091     2238,  2240,  2245,  2250,  2255,  2257,  2259,  2264,  2266,  2268,
    1092     2270,  2275,  2277,  2286,  2288,  2289,  2294,  2296,  2298,  2303,
    1093     2305,  2307,  2312,  2314,  2316,  2325,  2326,  2327,  2331,  2333,
    1094     2335,  2340,  2342,  2344,  2349,  2351,  2353,  2368,  2370,  2371,
    1095     2373,  2378,  2379,  2384,  2386,  2388,  2393,  2395,  2397,  2399,
    1096     2404,  2406,  2408,  2418,  2420,  2421,  2423,  2428,  2430,  2432,
    1097     2437,  2439,  2441,  2443,  2448,  2450,  2452,  2483,  2485,  2486,
    1098     2488,  2493,  2498,  2506,  2508,  2510,  2515,  2517,  2522,  2524,
    1099     2538,  2539,  2541,  2546,  2548,  2550,  2552,  2554,  2559,  2560,
    1100     2562,  2564,  2569,  2571,  2573,  2579,  2581,  2583,  2587,  2589,
    1101     2591,  2593,  2607,  2608,  2610,  2615,  2617,  2619,  2621,  2623,
    1102     2628,  2629,  2631,  2633,  2638,  2640,  2642,  2648,  2649,  2651,
    1103     2660,  2663,  2665,  2668,  2670,  2672,  2685,  2686,  2688,  2693,
    1104     2695,  2697,  2699,  2701,  2706,  2707,  2709,  2711,  2716,  2718,
    1105     2726,  2727,  2728,  2733,  2734,  2738,  2740,  2742,  2744,  2746,
    1106     2748,  2755,  2757,  2759,  2761,  2763,  2766,  2768,  2770,  2772,
    1107     2774,  2779,  2781,  2783,  2788,  2814,  2815,  2817,  2821,  2822,
    1108     2826,  2828,  2830,  2832,  2834,  2836,  2843,  2845,  2847,  2849,
    1109     2851,  2853,  2858,  2865,  2867,  2885,  2887,  2892,  2893
     1054       0,   326,   326,   330,   337,   338,   339,   340,   341,   345,
     1055     346,   347,   351,   352,   356,   357,   361,   362,   366,   370,
     1056     371,   382,   384,   386,   387,   389,   394,   395,   401,   403,
     1057     405,   407,   409,   411,   413,   415,   417,   419,   428,   429,
     1058     435,   436,   440,   441,   445,   446,   448,   450,   452,   454,
     1059     456,   461,   463,   465,   477,   478,   486,   489,   491,   493,
     1060     498,   511,   513,   515,   517,   519,   521,   523,   525,   527,
     1061     529,   531,   538,   539,   545,   546,   547,   548,   552,   553,
     1062     560,   561,   563,   565,   570,   571,   573,   578,   579,   581,
     1063     586,   587,   589,   591,   593,   598,   599,   601,   606,   607,
     1064     612,   613,   618,   619,   624,   625,   630,   631,   636,   637,
     1065     640,   647,   652,   653,   661,   662,   666,   667,   668,   669,
     1066     670,   671,   672,   673,   674,   675,   676,   677,   687,   689,
     1067     694,   695,   700,   701,   707,   708,   714,   715,   716,   717,
     1068     718,   719,   720,   721,   722,   732,   739,   741,   752,   753,
     1069     758,   760,   765,   767,   772,   776,   777,   782,   787,   790,
     1070     792,   794,   804,   806,   817,   818,   820,   824,   826,   830,
     1071     831,   836,   837,   841,   846,   847,   851,   853,   859,   860,
     1072     864,   866,   868,   870,   876,   877,   881,   883,   888,   890,
     1073     892,   897,   899,   904,   906,   910,   913,   917,   920,   924,
     1074     926,   928,   930,   935,   937,   939,   944,   946,   948,   950,
     1075     952,   957,   959,   961,   963,   968,   980,   981,   986,   988,
     1076     993,   997,   999,  1001,  1003,  1005,  1011,  1012,  1018,  1019,
     1077    1023,  1024,  1029,  1031,  1037,  1038,  1040,  1046,  1051,  1061,
     1078    1063,  1067,  1068,  1073,  1075,  1079,  1080,  1084,  1086,  1090,
     1079    1091,  1095,  1096,  1100,  1101,  1116,  1117,  1118,  1119,  1120,
     1080    1124,  1129,  1136,  1146,  1151,  1156,  1164,  1169,  1174,  1179,
     1081    1184,  1214,  1219,  1226,  1228,  1235,  1240,  1245,  1256,  1261,
     1082    1266,  1271,  1276,  1285,  1290,  1320,  1324,  1325,  1326,  1332,
     1083    1337,  1345,  1346,  1347,  1348,  1352,  1353,  1354,  1355,  1360,
     1084    1361,  1370,  1371,  1376,  1377,  1381,  1383,  1385,  1387,  1389,
     1085    1392,  1391,  1403,  1404,  1406,  1416,  1417,  1422,  1424,  1426,
     1086    1428,  1430,  1433,  1435,  1438,  1443,  1445,  1447,  1449,  1451,
     1087    1453,  1455,  1457,  1459,  1461,  1463,  1465,  1467,  1469,  1471,
     1088    1477,  1478,  1480,  1482,  1484,  1489,  1490,  1496,  1497,  1499,
     1089    1501,  1506,  1508,  1510,  1512,  1517,  1518,  1520,  1522,  1527,
     1090    1528,  1530,  1535,  1536,  1538,  1540,  1545,  1547,  1549,  1554,
     1091    1555,  1559,  1561,  1567,  1566,  1570,  1572,  1577,  1579,  1585,
     1092    1586,  1591,  1592,  1597,  1600,  1608,  1609,  1611,  1613,  1618,
     1093    1619,  1625,  1626,  1628,  1631,  1634,  1639,  1640,  1645,  1650,
     1094    1652,  1658,  1657,  1664,  1666,  1672,  1673,  1681,  1682,  1686,
     1095    1687,  1688,  1690,  1692,  1699,  1700,  1702,  1704,  1709,  1710,
     1096    1716,  1717,  1721,  1722,  1727,  1728,  1729,  1731,  1739,  1740,
     1097    1742,  1745,  1747,  1751,  1752,  1753,  1755,  1757,  1761,  1766,
     1098    1774,  1775,  1784,  1786,  1791,  1792,  1793,  1797,  1798,  1799,
     1099    1803,  1804,  1805,  1809,  1810,  1811,  1816,  1817,  1822,  1823,
     1100    1825,  1830,  1831,  1836,  1837,  1838,  1839,  1840,  1855,  1856,
     1101    1861,  1862,  1868,  1870,  1873,  1875,  1877,  1900,  1901,  1903,
     1102    1905,  1910,  1911,  1913,  1918,  1923,  1924,  1930,  1929,  1933,
     1103    1937,  1939,  1941,  1943,  1949,  1950,  1955,  1960,  1962,  1967,
     1104    1969,  1970,  1972,  1977,  1979,  1981,  1986,  1988,  1993,  1998,
     1105    2006,  2012,  2011,  2025,  2026,  2031,  2032,  2036,  2041,  2046,
     1106    2054,  2059,  2070,  2071,  2076,  2077,  2083,  2084,  2088,  2089,
     1107    2090,  2093,  2092,  2103,  2111,  2117,  2123,  2132,  2138,  2144,
     1108    2150,  2156,  2164,  2170,  2178,  2184,  2193,  2194,  2195,  2199,
     1109    2205,  2206,  2216,  2217,  2221,  2222,  2227,  2232,  2233,  2239,
     1110    2240,  2242,  2247,  2248,  2249,  2250,  2285,  2287,  2288,  2290,
     1111    2295,  2300,  2305,  2307,  2309,  2314,  2316,  2318,  2320,  2325,
     1112    2327,  2336,  2338,  2339,  2344,  2346,  2348,  2353,  2355,  2357,
     1113    2362,  2364,  2366,  2378,  2379,  2380,  2384,  2386,  2388,  2393,
     1114    2395,  2397,  2402,  2404,  2406,  2421,  2423,  2424,  2426,  2431,
     1115    2432,  2437,  2439,  2441,  2446,  2448,  2450,  2452,  2457,  2459,
     1116    2461,  2471,  2473,  2474,  2476,  2481,  2483,  2485,  2490,  2492,
     1117    2494,  2496,  2501,  2503,  2505,  2518,  2520,  2521,  2523,  2528,
     1118    2533,  2541,  2543,  2545,  2550,  2552,  2557,  2559,  2576,  2577,
     1119    2579,  2584,  2586,  2588,  2590,  2592,  2597,  2598,  2600,  2602,
     1120    2607,  2609,  2611,  2617,  2619,  2621,  2625,  2627,  2629,  2631,
     1121    2665,  2666,  2668,  2673,  2675,  2677,  2679,  2681,  2686,  2687,
     1122    2689,  2691,  2696,  2698,  2700,  2706,  2707,  2709,  2718,  2721,
     1123    2723,  2726,  2728,  2730,  2744,  2745,  2747,  2752,  2754,  2756,
     1124    2758,  2760,  2765,  2766,  2768,  2770,  2775,  2777,  2785,  2786,
     1125    2787,  2792,  2793,  2797,  2799,  2801,  2803,  2805,  2807,  2814,
     1126    2816,  2818,  2820,  2822,  2825,  2827,  2829,  2831,  2833,  2838,
     1127    2840,  2842,  2847,  2873,  2874,  2876,  2880,  2881,  2885,  2887,
     1128    2889,  2891,  2893,  2895,  2902,  2904,  2906,  2908,  2910,  2912,
     1129    2917,  2924,  2926,  2944,  2946,  2951,  2952
    11101130};
    11111131#endif
     
    11611181  "asm_volatile_opt", "asm_operands_opt", "asm_operands_list",
    11621182  "asm_operand", "asm_clobbers_list_opt", "label_list",
    1163   "declaration_list_opt", "declaration_list", "old_declaration_list_opt",
    1164   "old_declaration_list", "local_label_declaration_opt",
     1183  "declaration_list_opt", "declaration_list", "KR_declaration_list_opt",
     1184  "KR_declaration_list", "local_label_declaration_opt",
    11651185  "local_label_declaration_list", "local_label_list", "declaration",
    1166   "new_declaration", "new_variable_declaration", "new_variable_specifier",
    1167   "new_function_declaration", "new_function_specifier",
    1168   "new_function_return", "new_typedef_declaration", "typedef_declaration",
    1169   "typedef_expression", "old_declaration", "declaring_list",
     1186  "cfa_declaration", "cfa_variable_declaration", "cfa_variable_specifier",
     1187  "cfa_function_declaration", "cfa_function_specifier",
     1188  "cfa_function_return", "cfa_typedef_declaration", "typedef_declaration",
     1189  "typedef_expression", "c_declaration", "declaring_list",
    11701190  "declaration_specifier", "type_specifier", "type_qualifier_list_opt",
    11711191  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
     
    11741194  "direct_type_name", "indirect_type_name", "sue_declaration_specifier",
    11751195  "sue_type_specifier", "typedef_declaration_specifier",
    1176   "typedef_type_specifier", "elaborated_type_name", "aggregate_name",
    1177   "$@2", "aggregate_key", "field_declaration_list", "field_declaration",
    1178   "new_field_declaring_list", "field_declaring_list", "field_declarator",
    1179   "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
    1180   "$@3", "enumerator_list", "enumerator_value_opt",
    1181   "new_parameter_type_list_opt", "new_parameter_type_list",
    1182   "new_parameter_list", "new_abstract_parameter_list",
    1183   "parameter_type_list_opt", "parameter_type_list", "parameter_list",
    1184   "new_parameter_declaration", "new_abstract_parameter_declaration",
    1185   "parameter_declaration", "abstract_parameter_declaration",
    1186   "identifier_list", "identifier_or_type_name",
    1187   "no_01_identifier_or_type_name", "no_attr_identifier_or_type_name",
    1188   "type_name_no_function", "type_name", "initializer_opt", "initializer",
    1189   "initializer_list", "designation", "designator_list", "designator",
    1190   "typegen_declaration_specifier", "typegen_type_specifier",
    1191   "typegen_name", "type_parameter_list", "type_parameter", "$@4",
    1192   "type_class", "assertion_list_opt", "assertion", "type_name_list",
    1193   "type_declaring_list", "type_declarator", "type_declarator_name",
    1194   "trait_specifier", "$@5", "trait_declaration_list", "trait_declaration",
    1195   "new_trait_declaring_list", "trait_declaring_list", "translation_unit",
     1196  "typedef_type_specifier", "elaborated_type", "aggregate_type", "$@2",
     1197  "aggregate_key", "field_declaration_list", "field_declaration",
     1198  "cfa_field_declaring_list", "field_declaring_list", "field_declarator",
     1199  "bit_subrange_size_opt", "bit_subrange_size", "enum_type", "$@3",
     1200  "enumerator_list", "enumerator_value_opt", "cfa_parameter_type_list_opt",
     1201  "cfa_parameter_type_list", "cfa_parameter_list",
     1202  "cfa_abstract_parameter_list", "parameter_type_list_opt",
     1203  "parameter_type_list", "parameter_list", "cfa_parameter_declaration",
     1204  "cfa_abstract_parameter_declaration", "parameter_declaration",
     1205  "abstract_parameter_declaration", "identifier_list",
     1206  "identifier_or_type_name", "no_01_identifier_or_type_name",
     1207  "no_attr_identifier_or_type_name", "type_name_no_function", "type_name",
     1208  "initializer_opt", "initializer", "initializer_list", "designation",
     1209  "designator_list", "designator", "typegen_declaration_specifier",
     1210  "typegen_type_specifier", "typegen_name", "type_parameter_list",
     1211  "type_parameter", "$@4", "type_class", "assertion_list_opt", "assertion",
     1212  "type_name_list", "type_declaring_list", "type_declarator",
     1213  "type_declarator_name", "trait_specifier", "$@5",
     1214  "trait_declaration_list", "trait_declaration",
     1215  "cfa_trait_declaring_list", "trait_declaring_list", "translation_unit",
    11961216  "external_definition_list", "external_definition_list_opt",
    11971217  "external_definition", "$@6", "external_function_definition",
     
    12021222  "variable_array", "variable_function", "function_declarator",
    12031223  "function_no_ptr", "function_ptr", "function_array",
    1204   "old_function_declarator", "old_function_no_ptr", "old_function_ptr",
    1205   "old_function_array", "variable_type_redeclarator", "paren_type",
     1224  "KR_function_declarator", "KR_function_no_ptr", "KR_function_ptr",
     1225  "KR_function_array", "variable_type_redeclarator", "paren_type",
    12061226  "type_ptr", "type_array", "type_function",
    12071227  "identifier_parameter_declarator", "identifier_parameter_ptr",
     
    12161236  "variable_abstract_ptr", "variable_abstract_array",
    12171237  "variable_abstract_function",
    1218   "new_identifier_parameter_declarator_tuple",
    1219   "new_identifier_parameter_declarator_no_tuple",
    1220   "new_identifier_parameter_ptr", "new_identifier_parameter_array",
    1221   "new_array_parameter_1st_dimension", "new_abstract_declarator_tuple",
    1222   "new_abstract_declarator_no_tuple", "new_abstract_ptr",
    1223   "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
     1238  "cfa_identifier_parameter_declarator_tuple",
     1239  "cfa_identifier_parameter_declarator_no_tuple",
     1240  "cfa_identifier_parameter_ptr", "cfa_identifier_parameter_array",
     1241  "cfa_array_parameter_1st_dimension", "cfa_abstract_declarator_tuple",
     1242  "cfa_abstract_declarator_no_tuple", "cfa_abstract_ptr",
     1243  "cfa_abstract_array", "cfa_abstract_tuple", "cfa_abstract_function",
    12241244  "comma_opt", "assignment_opt", 0
    12251245};
     
    12661286     176,   176,   177,   177,   178,   178,   179,   179,   179,   179,
    12671287     179,   179,   179,   179,   179,   180,   181,   181,   182,   182,
    1268      183,   183,   183,   183,   184,   184,   185,   186,   186,   186,
    1269      186,   186,   186,   187,   187,   187,   188,   188,   189,   189,
    1270      190,   190,   191,   192,   192,   193,   193,   194,   194,   195,
    1271      195,   195,   195,   196,   196,   197,   197,   198,   198,   198,
    1272      199,   199,   200,   200,   200,   200,   200,   200,   200,   200,
    1273      200,   200,   201,   201,   201,   202,   202,   202,   202,   202,
    1274      203,   203,   203,   203,   204,   205,   205,   205,   205,   205,
    1275      206,   206,   206,   206,   206,   207,   207,   208,   208,   209,
    1276      209,   210,   210,   211,   211,   211,   212,   212,   213,   213,
    1277      214,   214,   215,   215,   216,   216,   217,   217,   218,   218,
    1278      219,   219,   220,   220,   221,   221,   221,   221,   221,   222,
    1279      222,   222,   223,   223,   223,   224,   224,   224,   224,   224,
    1280      225,   225,   226,   226,   227,   227,   227,   228,   228,   228,
    1281      228,   228,   229,   229,   230,   230,   230,   230,   231,   231,
    1282      232,   232,   232,   232,   233,   233,   233,   233,   234,   234,
    1283      235,   235,   236,   236,   237,   237,   237,   237,   237,   238,
    1284      237,   239,   239,   239,   240,   240,   241,   241,   241,   241,
    1285      241,   241,   241,   241,   242,   242,   242,   242,   242,   242,
    1286      242,   242,   242,   242,   242,   242,   242,   242,   242,   243,
    1287      243,   243,   243,   243,   244,   244,   245,   245,   245,   245,
    1288      246,   246,   246,   246,   247,   247,   247,   247,   248,   248,
    1289      248,   249,   249,   249,   249,   250,   250,   250,   251,   251,
    1290      252,   252,   253,   252,   252,   252,   254,   254,   255,   255,
    1291      256,   256,   256,   256,   257,   257,   257,   257,   258,   258,
    1292      259,   259,   259,   259,   259,   260,   260,   261,   262,   263,
    1293      263,   264,   263,   265,   265,   266,   266,   267,   267,   268,
    1294      268,   268,   268,   268,   269,   269,   269,   269,   270,   270,
    1295      271,   271,   272,   272,   273,   273,   273,   273,   274,   274,
    1296      274,   274,   274,   275,   275,   275,   275,   275,   276,   276,
    1297      277,   277,   278,   278,   279,   279,   279,   280,   280,   280,
    1298      281,   281,   281,   282,   282,   282,   283,   283,   283,   283,
    1299      284,   284,   284,   285,   285,   286,   286,   286,   286,   286,
    1300      287,   287,   288,   288,   289,   289,   289,   289,   289,   290,
    1301      290,   290,   290,   291,   291,   291,   292,   293,   293,   295,
    1302      294,   294,   296,   296,   296,   296,   297,   297,   298,   298,
    1303      298,   299,   299,   299,   299,   300,   300,   300,   301,   301,
    1304      302,   302,   303,   304,   303,   305,   305,   306,   306,   307,
     1288     183,   183,   183,   183,   183,   184,   184,   185,   186,   186,
     1289     186,   186,   186,   186,   187,   187,   187,   188,   188,   189,
     1290     189,   190,   190,   191,   192,   192,   193,   193,   194,   194,
     1291     195,   195,   195,   195,   196,   196,   197,   197,   198,   198,
     1292     198,   199,   199,   200,   200,   200,   200,   200,   200,   200,
     1293     200,   200,   200,   201,   201,   201,   202,   202,   202,   202,
     1294     202,   203,   203,   203,   203,   204,   205,   205,   205,   205,
     1295     205,   206,   206,   206,   206,   206,   207,   207,   208,   208,
     1296     209,   209,   210,   210,   211,   211,   211,   212,   212,   213,
     1297     213,   214,   214,   215,   215,   216,   216,   217,   217,   218,
     1298     218,   219,   219,   220,   220,   221,   221,   221,   221,   221,
     1299     222,   222,   222,   223,   223,   223,   224,   224,   224,   224,
     1300     224,   225,   225,   226,   226,   227,   227,   227,   228,   228,
     1301     228,   228,   228,   229,   229,   230,   230,   230,   230,   231,
     1302     231,   232,   232,   232,   232,   233,   233,   233,   233,   234,
     1303     234,   235,   235,   236,   236,   237,   237,   237,   237,   237,
     1304     238,   237,   239,   239,   239,   240,   240,   241,   241,   241,
     1305     241,   241,   241,   241,   241,   242,   242,   242,   242,   242,
     1306     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
     1307     243,   243,   243,   243,   243,   244,   244,   245,   245,   245,
     1308     245,   246,   246,   246,   246,   247,   247,   247,   247,   248,
     1309     248,   248,   249,   249,   249,   249,   250,   250,   250,   251,
     1310     251,   252,   252,   253,   252,   252,   252,   254,   254,   255,
     1311     255,   256,   256,   256,   256,   257,   257,   257,   257,   258,
     1312     258,   259,   259,   259,   259,   259,   260,   260,   261,   262,
     1313     262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
     1314     267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
     1315     270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
     1316     273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
     1317     276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
     1318     280,   280,   280,   281,   281,   281,   282,   282,   283,   283,
     1319     283,   284,   284,   285,   285,   285,   285,   285,   286,   286,
     1320     287,   287,   288,   288,   288,   288,   288,   289,   289,   289,
     1321     289,   290,   290,   290,   291,   292,   292,   294,   293,   293,
     1322     295,   295,   295,   295,   296,   296,   297,   297,   297,   298,
     1323     298,   298,   298,   299,   299,   299,   300,   300,   301,   301,
     1324     302,   303,   302,   304,   304,   305,   305,   306,   306,   306,
    13051325     307,   307,   308,   308,   309,   309,   310,   310,   311,   311,
    1306      312,   312,   312,   313,   312,   312,   314,   314,   314,   315,
    1307      315,   315,   315,   315,   315,   315,   315,   315,   316,   316,
    1308      316,   317,   318,   318,   319,   319,   320,   320,   321,   322,
    1309      322,   323,   323,   323,   324,   324,   324,   324,   325,   325,
    1310      325,   325,   326,   326,   327,   327,   327,   328,   328,   328,
    1311      328,   329,   329,   330,   330,   330,   331,   331,   331,   332,
    1312      332,   332,   333,   333,   333,   334,   334,   334,   335,   335,
    1313      335,   336,   336,   336,   337,   337,   337,   338,   338,   338,
    1314      338,   339,   339,   340,   340,   340,   341,   341,   341,   341,
    1315      342,   342,   342,   343,   343,   343,   343,   344,   344,   344,
    1316      345,   345,   345,   345,   346,   346,   346,   347,   347,   347,
    1317      347,   348,   348,   349,   349,   349,   350,   350,   351,   351,
    1318      352,   352,   352,   353,   353,   353,   353,   353,   354,   354,
    1319      354,   354,   355,   355,   355,   356,   356,   356,   357,   357,
    1320      357,   357,   358,   358,   358,   359,   359,   359,   359,   359,
    1321      360,   360,   360,   360,   361,   361,   361,   362,   362,   362,
    1322      363,   363,   363,   363,   363,   363,   364,   364,   364,   365,
    1323      365,   365,   365,   365,   366,   366,   366,   366,   367,   367,
    1324      368,   368,   368,   369,   369,   370,   370,   370,   370,   370,
    1325      370,   371,   371,   371,   371,   371,   371,   371,   371,   371,
    1326      371,   372,   372,   372,   372,   373,   373,   373,   374,   374,
    1327      375,   375,   375,   375,   375,   375,   376,   376,   376,   376,
    1328      376,   376,   377,   378,   378,   379,   379,   380,   380
     1326     311,   312,   311,   311,   313,   313,   313,   314,   314,   314,
     1327     314,   314,   314,   314,   314,   314,   315,   315,   315,   316,
     1328     317,   317,   318,   318,   319,   319,   320,   321,   321,   322,
     1329     322,   322,   323,   323,   323,   323,   324,   324,   324,   324,
     1330     325,   325,   326,   326,   326,   327,   327,   327,   327,   328,
     1331     328,   329,   329,   329,   330,   330,   330,   331,   331,   331,
     1332     332,   332,   332,   333,   333,   333,   334,   334,   334,   335,
     1333     335,   335,   336,   336,   336,   337,   337,   337,   337,   338,
     1334     338,   339,   339,   339,   340,   340,   340,   340,   341,   341,
     1335     341,   342,   342,   342,   342,   343,   343,   343,   344,   344,
     1336     344,   344,   345,   345,   345,   346,   346,   346,   346,   347,
     1337     347,   348,   348,   348,   349,   349,   350,   350,   351,   351,
     1338     351,   352,   352,   352,   352,   352,   353,   353,   353,   353,
     1339     354,   354,   354,   355,   355,   355,   356,   356,   356,   356,
     1340     357,   357,   357,   358,   358,   358,   358,   358,   359,   359,
     1341     359,   359,   360,   360,   360,   361,   361,   361,   362,   362,
     1342     362,   362,   362,   362,   363,   363,   363,   364,   364,   364,
     1343     364,   364,   365,   365,   365,   365,   366,   366,   367,   367,
     1344     367,   368,   368,   369,   369,   369,   369,   369,   369,   370,
     1345     370,   370,   370,   370,   370,   370,   370,   370,   370,   371,
     1346     371,   371,   371,   372,   372,   372,   373,   373,   374,   374,
     1347     374,   374,   374,   374,   375,   375,   375,   375,   375,   375,
     1348     376,   377,   377,   378,   378,   379,   379
    13291349};
    13301350
     
    13471367       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
    13481368       1,     1,     1,     1,     6,     4,     2,     7,     1,     3,
    1349        1,     2,     1,     2,     1,     2,     2,     5,     7,     5,
    1350        9,     5,     9,     1,     3,     1,     1,     3,     3,     2,
    1351        1,     2,     2,     0,     1,     2,     3,     0,     1,     2,
    1352        3,     3,     4,     0,     1,     1,     2,     5,     7,     6,
    1353        6,     4,     3,     4,     2,     3,     2,     3,     3,     3,
    1354        3,     5,     3,     3,     4,     1,     5,     6,     5,     6,
    1355        9,    10,     9,    10,     2,     1,     2,     2,     2,     1,
    1356        6,     8,    10,    12,    14,     0,     1,     0,     1,     1,
    1357        3,     4,     7,     0,     1,     3,     1,     3,     1,     1,
    1358        1,     3,     1,     1,     1,     3,     0,     1,     3,     4,
    1359        1,     3,     1,     1,     3,     3,     3,     3,     3,     2,
    1360        3,     6,     3,     3,     4,     1,     2,     2,     3,     5,
    1361        7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
    1362        3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
    1363        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
    1364        1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
    1365        5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
     1369       1,     2,     1,     2,     2,     1,     2,     2,     5,     7,
     1370       5,     9,     5,     9,     1,     3,     1,     1,     3,     3,
     1371       2,     1,     2,     2,     0,     1,     2,     3,     0,     1,
     1372       2,     3,     3,     4,     0,     1,     1,     2,     5,     7,
     1373       6,     6,     4,     3,     4,     2,     3,     2,     3,     3,
     1374       3,     3,     5,     3,     3,     4,     1,     5,     6,     5,
     1375       6,     9,    10,     9,    10,     2,     1,     2,     2,     2,
     1376       1,     6,     8,    10,    12,    14,     0,     1,     0,     1,
     1377       1,     3,     4,     7,     0,     1,     3,     1,     3,     1,
     1378       1,     1,     3,     1,     1,     1,     3,     0,     1,     3,
     1379       4,     1,     3,     1,     1,     3,     3,     3,     3,     3,
     1380       2,     3,     6,     3,     3,     4,     1,     2,     2,     3,
     1381       5,     7,     7,     5,     9,     2,     2,     5,     3,     5,
     1382       4,     3,     4,     4,     7,     4,     3,     3,     3,     3,
     1383       6,     1,     1,     1,     1,     1,     1,     1,     1,     0,
     1384       1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
     1385       0,     5,     1,     2,     3,     1,     2,     1,     1,     1,
    13661386       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    13671387       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1368        2,     2,     3,     3,     1,     3,     1,     2,     2,     2,
    1369        4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
    1370        2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
    1371        4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
    1372        2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
    1373        0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
    1374        2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
     1388       1,     2,     2,     3,     3,     1,     3,     1,     2,     2,
     1389       2,     4,     4,     4,     4,     1,     2,     2,     3,     1,
     1390       2,     2,     1,     2,     2,     3,     1,     2,     2,     1,
     1391       1,     5,     3,     0,     7,     8,     3,     1,     1,     0,
     1392       2,     2,     3,     3,     4,     1,     2,     3,     2,     1,
     1393       4,     0,     1,     2,     2,     1,     0,     1,     2,     6,
     1394       3,     0,     8,     2,     4,     0,     2,     0,     1,     1,
    13751395       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
    13761396       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
    13771397       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
    13781398       1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
    1379        1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
    1380        0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
    1381        2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
    1382        2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
    1383        4,     2,     1,     1,     1,     1,     0,     2,     5,     5,
    1384       13,     1,     1,     3,     3,     2,     3,     3,     2,     4,
    1385        1,     6,     9,     0,    11,     1,     3,     3,     3,     1,
    1386        1,     5,     2,     5,     0,     1,     1,     3,     0,     1,
    1387        1,     1,     1,     0,     6,     2,     1,     2,     4,     2,
    1388        3,     3,     3,     4,     5,     5,     5,     6,     1,     1,
    1389        1,     3,     0,     5,     0,     1,     1,     2,     6,     1,
    1390        3,     0,     1,     4,     1,     1,     1,     1,     2,     1,
    1391        2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
    1392        3,     8,     3,     2,     1,     2,     6,     8,     3,     2,
    1393        3,     3,     4,     4,     3,     1,     1,     1,     4,     6,
    1394        3,     2,     3,     3,     4,     4,     3,     2,     1,     2,
    1395        2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
    1396        6,     8,     3,     2,     1,     2,     2,     2,     3,     3,
    1397        2,     4,     4,     3,     6,     8,     3,     2,     1,     2,
    1398        2,     1,     1,     2,     3,     3,     2,     4,     6,     8,
    1399        1,     2,     2,     1,     2,     2,     3,     3,     1,     4,
    1400        4,     3,     5,     8,     3,     2,     3,     1,     5,     5,
    1401        6,     6,     1,     2,     2,     1,     2,     2,     3,     3,
    1402        1,     4,     4,     3,     5,     8,     3,     1,     2,     1,
    1403        2,     6,     5,     6,     7,     7,     1,     2,     2,     1,
    1404        2,     2,     3,     3,     1,     4,     4,     3,     8,     3,
    1405        1,     1,     2,     1,     1,     2,     3,     2,     3,     2,
    1406        3,     3,     2,     4,     3,     2,     3,     2,     4,     3,
    1407        2,     6,     6,     6,     7,     1,     2,     1,     1,     1,
    1408        2,     3,     2,     3,     2,     3,     3,     4,     2,     3,
    1409        4,     2,     5,     6,     6,     0,     1,     0,     2
     1399       1,     1,     1,     1,     1,     2,     1,     1,     0,     2,
     1400       2,     1,     4,     0,     1,     2,     3,     4,     2,     2,
     1401       1,     2,     2,     5,     5,     7,     6,     1,     2,     2,
     1402       3,     1,     2,     2,     4,     2,     4,     0,     4,     2,
     1403       1,     1,     1,     1,     0,     2,     5,     5,    13,     1,
     1404       1,     3,     3,     2,     3,     3,     2,     4,     1,     6,
     1405       9,     0,    11,     1,     3,     3,     3,     1,     1,     5,
     1406       2,     5,     0,     1,     1,     3,     0,     1,     1,     1,
     1407       1,     0,     6,     2,     1,     2,     4,     2,     3,     3,
     1408       3,     4,     5,     5,     5,     6,     1,     1,     1,     3,
     1409       0,     5,     0,     1,     1,     2,     6,     1,     3,     0,
     1410       1,     4,     1,     1,     1,     1,     2,     1,     2,     2,
     1411       1,     3,     2,     3,     4,     2,     4,     4,     3,     8,
     1412       3,     2,     1,     2,     6,     8,     3,     2,     3,     3,
     1413       4,     4,     3,     1,     1,     1,     4,     8,     3,     2,
     1414       3,     3,     4,     4,     3,     2,     1,     2,     2,     1,
     1415       3,     2,     3,     4,     2,     4,     4,     3,     6,     8,
     1416       3,     2,     1,     2,     2,     2,     3,     4,     2,     4,
     1417       4,     3,     6,     8,     3,     2,     1,     2,     2,     1,
     1418       1,     2,     3,     4,     2,     4,     6,     8,     1,     2,
     1419       2,     1,     2,     2,     3,     4,     1,     4,     4,     3,
     1420       5,     8,     3,     2,     3,     1,     5,     5,     6,     6,
     1421       1,     2,     2,     1,     2,     2,     3,     4,     1,     4,
     1422       4,     3,     5,     8,     3,     1,     2,     1,     2,     6,
     1423       5,     6,     7,     7,     1,     2,     2,     1,     2,     2,
     1424       3,     4,     1,     4,     4,     3,     8,     3,     1,     1,
     1425       2,     1,     1,     2,     3,     2,     3,     2,     3,     3,
     1426       2,     4,     3,     2,     3,     2,     4,     3,     2,     6,
     1427       6,     6,     7,     1,     2,     1,     1,     1,     2,     3,
     1428       2,     3,     2,     3,     3,     4,     2,     3,     4,     2,
     1429       5,     6,     6,     0,     1,     0,     2
    14101430};
    14111431
     
    14151435static const yytype_uint16 yydefact[] =
    14161436{
    1417      298,   298,   318,   316,   319,   317,   320,   321,   304,   306,
    1418      305,     0,   307,   332,   324,   329,   327,   328,   326,   325,
    1419      330,   331,   337,   338,   336,   333,   334,   335,   554,   554,
    1420      554,     0,     0,     0,   298,   225,   308,   322,   323,     9,
    1421      365,     0,    10,    16,    17,     0,     2,    72,    73,   572,
    1422       11,   298,   532,   530,   252,     3,   460,     3,   265,     0,
    1423        3,     3,     3,   253,     3,     0,     0,     0,   299,   300,
    1424      302,   298,   311,   314,   346,   290,   339,   344,   291,   354,
    1425      292,   361,   358,   368,     0,     0,   369,   293,   479,   483,
    1426        3,     3,     0,     2,   526,   531,   536,   303,     0,     0,
    1427      554,   584,   554,     2,   595,   596,   597,   298,     0,   738,
    1428      739,     0,    14,     0,    15,   298,   274,   275,     0,   299,
    1429      294,   295,   296,   297,   533,   309,   398,   555,   556,   376,
    1430      377,    14,   451,   452,    13,   447,   450,     0,   510,   505,
    1431      496,   451,   452,     0,     0,   535,   226,     0,   298,     0,
    1432        0,     0,     0,     0,     0,     0,     0,   298,   298,     0,
    1433      740,   299,   589,   601,   744,   737,   735,   742,     0,     0,
    1434        0,   259,     2,     0,   539,   445,   446,   444,     0,     0,
    1435        0,     0,   554,     0,   641,   642,     0,     0,   552,   548,
    1436      554,   569,   554,   554,   550,     2,   549,   554,   608,   554,
    1437      554,   611,     0,     0,     0,   298,   298,   316,   366,     2,
    1438      298,   266,   301,   312,   347,   359,   484,     0,     2,     0,
    1439      460,   267,   299,   340,   355,   362,   480,     0,     2,     0,
    1440      315,   341,   348,   349,     0,   356,   360,   363,   367,   452,
    1441      298,   378,   371,   375,     0,   400,   481,   485,     0,     0,
    1442        0,     1,   298,     2,   537,   583,   585,   298,     2,   748,
    1443      299,   751,   552,   552,     0,   299,     0,     0,   277,   554,
    1444      550,     2,   298,     0,     0,   298,   557,     2,   508,     2,
    1445      561,     0,     0,     0,     0,     0,     0,    21,    69,     4,
    1446        8,    19,     5,     6,     7,     0,     0,   298,     2,    74,
    1447       75,    76,    77,    57,    22,    58,    18,    26,    56,    78,
    1448      298,     0,    80,    84,    87,    90,    95,    98,   100,   102,
    1449      104,   106,   108,   112,   502,    23,   458,   501,     0,   456,
    1450      457,     0,   573,   588,   591,   594,   600,   603,   606,     2,
    1451      746,   298,   749,     2,    72,   298,     3,   432,     0,   440,
    1452      299,   298,   311,   339,   291,   354,   361,     3,     3,   414,
    1453      418,   428,   433,   479,   298,   434,   713,   714,   298,   435,
    1454      437,     2,   590,   602,   736,     2,     2,   254,     2,   465,
    1455        0,   463,   462,   461,   146,     2,     2,   256,     2,     2,
    1456      255,     2,   285,     2,   286,     0,   284,     0,     0,     0,
    1457        0,     0,     0,     0,     0,     0,   574,   613,     0,   460,
    1458        2,   568,   577,   667,   570,   571,   540,   298,     2,   607,
    1459      616,   609,   610,     0,   280,   298,   298,   345,   299,     0,
    1460      299,   298,   741,   745,   743,   541,   298,   552,   260,   268,
    1461      313,     0,     2,   542,   298,   506,   342,   343,   287,   357,
    1462      364,     0,   298,     0,   755,   405,     0,   482,   507,   257,
    1463      258,   527,   298,   442,     0,   298,   242,     0,     2,   244,
    1464        0,   299,     0,   262,     2,   263,   282,     0,     0,     2,
    1465      298,   552,   298,   492,   494,   493,   495,     0,     0,   757,
    1466        0,   298,     0,   298,   497,   298,   567,   564,   565,   566,
    1467        0,   559,   562,     0,     0,   298,    64,   298,    78,    59,
    1468      298,    66,   298,   298,    62,    63,     2,   132,     0,     0,
    1469      454,     0,   453,   735,   298,    20,    31,     0,    34,    35,
    1470       40,     2,     0,    40,   118,   119,   120,   121,   122,   123,
    1471      124,   125,   126,   127,   117,   116,     0,    60,    61,     0,
     1437     299,   299,   319,   317,   320,   318,   321,   322,   305,   307,
     1438     306,     0,   308,   333,   325,   330,   328,   329,   327,   326,
     1439     331,   332,   338,   339,   337,   334,   335,   336,   552,   377,
     1440     378,     0,     0,     0,   299,   226,   309,   323,   324,     9,
     1441     366,     0,    10,    16,    17,     0,     2,    72,    73,   570,
     1442      11,   299,   530,   528,   253,     3,   458,     3,   266,     0,
     1443       3,     3,     3,   254,     0,     0,     0,   300,   301,   303,
     1444     299,   312,   315,   347,   291,   340,   345,   292,   355,   293,
     1445     362,   359,   369,   552,   370,   294,   477,   481,     3,     3,
     1446       0,     2,   524,   529,   534,   304,     0,     0,   552,   582,
     1447     552,     2,   593,   594,   595,   299,     0,   736,   737,     0,
     1448      14,     0,    15,   299,   275,   276,     0,   300,   295,   296,
     1449     297,   298,   531,   310,     0,   553,   554,    14,   451,   452,
     1450      13,   447,   450,     0,   508,   503,   494,   451,   452,     0,
     1451       0,   533,   227,     0,   299,     0,     0,     0,     0,     0,
     1452       0,     0,     0,   299,   299,     0,   738,   300,   587,   599,
     1453     742,   735,   733,   740,     0,     0,     0,   260,     2,     0,
     1454     537,   445,   446,   444,     0,     0,     0,     0,   639,   640,
     1455       0,     0,     3,   550,   546,   552,   567,   552,   552,   548,
     1456       2,   547,   552,   606,   552,   552,   609,     0,     0,     0,
     1457     299,   299,   317,   367,     2,   299,   267,   302,   313,   348,
     1458     360,   482,     0,     2,     0,   458,   268,   300,   341,   356,
     1459     363,   478,     0,     2,     0,   316,   342,   349,   350,     0,
     1460     357,   361,   364,   368,     0,   479,   483,     0,     0,     0,
     1461       1,   299,     2,   535,   581,   583,   299,     2,   746,   300,
     1462     749,   550,   550,     0,   300,     0,     0,   278,   552,   548,
     1463       2,   299,     0,     0,   299,     0,   400,   555,     2,   506,
     1464       2,   559,     0,     0,     0,     0,     0,     0,    21,    69,
     1465       4,     8,    19,     5,     6,     7,     0,     0,   299,     2,
     1466      74,    75,    76,    77,    57,    22,    58,    18,    26,    56,
     1467      78,   299,     0,    80,    84,    87,    90,    95,    98,   100,
     1468     102,   104,   106,   108,   112,   500,    23,   454,   456,   499,
     1469       0,   453,   457,     0,   571,   586,   589,   592,   598,   601,
     1470     604,     2,   744,   299,   747,     2,    72,   299,     3,   432,
     1471       0,   440,   300,   299,   312,   340,   292,   355,   362,     3,
     1472       3,   414,   418,   428,   433,   477,   299,   434,   711,   712,
     1473     299,   435,   437,     2,   588,   600,   734,     2,     2,   255,
     1474       2,   463,     0,   461,   460,   459,   146,     2,     2,   257,
     1475       2,     2,   256,     2,   286,     2,   287,     0,     0,     0,
     1476       0,     0,     0,     0,     0,     0,   572,   611,   552,     0,
     1477       0,   458,     2,   566,   575,   665,   568,   569,   538,   299,
     1478       2,   605,   614,   607,   608,     0,   281,   299,   299,   346,
     1479     300,     0,   300,   299,   739,   743,   741,   539,   299,   550,
     1480     261,   269,   314,     0,     2,   540,   299,   504,   343,   344,
     1481     288,   358,   365,   452,   299,   379,   372,   376,   480,   505,
     1482     258,   259,   525,   299,   442,     0,   299,   243,     0,     2,
     1483     245,     0,   300,     0,   263,     2,   264,   283,     0,     0,
     1484       2,   299,   550,   299,   490,   492,   491,   493,     0,     0,
     1485     755,     0,   753,   405,     0,   299,     0,   299,   495,   299,
     1486     565,   562,   563,   564,     0,   557,   560,     0,     0,   299,
     1487      64,   299,    78,    59,   299,    66,   299,   299,    62,    63,
     1488       2,   132,     0,     0,     0,   733,   299,    20,    31,     0,
     1489      34,    35,    40,     2,     0,    40,   118,   119,   120,   121,
     1490     122,   123,   124,   125,   126,   127,   117,   116,     0,    60,
     1491      61,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    14721492       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1473        0,     0,     0,     0,     0,     0,     0,     0,     2,   653,
    1474      459,   650,   554,   554,   658,   486,   298,     2,   592,   593,
    1475        0,   604,   605,     0,   747,   750,   298,   298,     0,   715,
    1476      299,   719,   710,   711,   717,     0,     2,     2,   675,   554,
    1477      757,   624,   554,   554,   757,   554,   638,   554,   554,   689,
    1478      441,   672,   554,   554,   680,   687,   298,   436,   299,     0,
    1479        0,   298,   725,   299,   730,   757,   722,   298,   727,   757,
    1480      298,   298,     0,     0,    21,     2,     0,    22,     0,   466,
    1481      755,     0,     0,   472,   246,     0,   298,     0,     0,     0,
    1482      552,   576,   580,   582,   612,   615,   619,   622,   575,   614,
    1483        0,   288,   665,     0,   298,   281,     0,     0,     0,     0,
    1484      279,     2,     0,   264,   543,   298,     0,     0,   298,     2,
    1485      370,   390,   379,     0,     0,   384,   378,   756,     0,     0,
    1486      403,     0,   299,     3,   421,     3,   425,   424,   598,     0,
    1487      538,   298,    72,     3,   298,   440,   299,     3,   434,   435,
    1488        2,     0,     0,     0,   491,   310,   298,     0,   487,   489,
    1489        3,     2,     2,     0,   509,     3,     0,   561,    40,     0,
    1490        0,   227,     0,     0,     0,     0,    41,     0,     0,   298,
    1491       24,     0,    25,     0,   699,   704,   455,   696,   554,   554,
     1493       2,   651,   455,   648,   552,   552,   656,   484,   299,     2,
     1494     590,   591,     2,   602,   603,     0,   745,   748,   299,   299,
     1495       0,   713,   300,   717,   708,   709,   715,     0,     2,     2,
     1496     673,   552,   755,   622,   552,   552,   755,   552,   636,   552,
     1497     552,   687,   441,   670,   552,   552,   678,   685,   299,   436,
     1498     300,     0,     0,   299,   723,   300,   728,   755,   720,   299,
     1499     725,   755,   299,   299,     0,     0,    21,     2,     0,    22,
     1500       0,   464,   753,     0,     0,   470,   247,     0,   299,     0,
     1501       0,     0,   552,   578,   580,   610,   552,   617,   620,   573,
     1502     612,     0,   285,     0,   289,   663,     0,   299,   282,     0,
     1503       0,     0,     0,   280,     2,     0,   265,   541,   299,     0,
     1504       0,   299,     0,   300,     3,   421,     3,   425,   424,   596,
     1505       0,   536,   299,    72,     3,   299,   440,   300,     3,   434,
     1506     435,     2,     0,     0,     0,   489,   311,   299,     0,   485,
     1507     487,   754,     0,     0,   403,     0,     3,     2,     2,     0,
     1508     507,     3,     0,   559,    40,     0,     0,   228,     0,     2,
     1509       0,     0,     0,    41,     0,     0,   299,    24,     0,    25,
    14921510       0,   114,     3,     2,    32,     0,    38,     0,     2,    29,
    14931511       0,   113,    81,    82,    83,    85,    86,    88,    89,    93,
    14941512      94,    91,    92,    96,    97,    99,   101,   103,   105,   107,
    1495        0,     0,   298,     0,     0,     0,   654,   655,   651,   652,
    1496      504,   503,   298,     0,   721,   298,   726,   299,   298,   669,
    1497      712,   668,     2,   298,     0,     0,     0,     0,     0,     0,
    1498        0,     0,   690,     0,   676,   627,   643,   677,     2,   623,
    1499      630,   438,   625,   626,   439,     2,   637,   646,   639,   640,
    1500      673,   674,   688,   716,   720,   718,   757,   272,     2,   752,
    1501        2,   429,   724,   729,   430,     3,   408,     3,     3,     3,
    1502      460,     0,     0,     2,   474,   471,   756,     0,   467,     2,
    1503      470,   473,     0,   298,   247,   269,     3,   276,   278,     0,
    1504      460,     2,   578,   579,     2,   617,   618,     0,   666,   544,
    1505        3,   351,   350,   353,   352,   298,   545,     0,   546,   378,
    1506        0,     0,   298,     0,     0,   699,   388,   391,   395,   554,
    1507      395,   394,   387,   380,   554,   382,   385,   298,   405,   399,
    1508      111,   406,   755,     0,     0,   443,   245,     0,     0,     3,
    1509        2,   675,   436,     0,   534,     0,   757,   758,   496,     0,
    1510      298,   298,   298,     0,   558,   560,     0,     0,   220,     0,
    1511        0,     0,   228,   229,    65,     0,    67,    70,    71,     0,
    1512      133,     0,     0,     0,   700,   701,   697,   698,   465,    79,
    1513      115,   130,     3,   114,     0,    28,    40,     3,     0,    37,
    1514      110,     0,     3,   657,   661,   664,   656,     3,   599,   723,
    1515      728,     2,    72,   298,     3,     3,   299,     0,     3,   629,
    1516      633,   636,   645,   679,   683,   686,   298,     3,   628,   644,
    1517      678,   298,   298,   431,   298,   298,     0,     0,     0,     0,
    1518      261,   111,     0,     3,     3,     0,   468,     0,   464,     0,
    1519        0,   250,   298,     0,     0,   134,     0,     0,     0,     0,
    1520        0,   134,     0,     0,   114,   114,    21,   365,   446,    69,
    1521        0,    22,   135,     0,     3,   136,   137,     2,   148,   138,
    1522      139,   140,   141,   142,   143,   150,     0,   152,     0,     0,
    1523        0,   289,   298,   298,   554,     0,   547,   298,   381,   383,
    1524        0,   397,   700,   392,   396,   393,   386,   390,   373,   404,
    1525        0,   586,     2,   671,   670,     0,   676,     2,   488,   490,
    1526      511,     3,   519,   520,     0,     2,   515,     3,     3,     0,
    1527        0,   563,   227,     0,     0,     0,   227,     0,     0,   703,
    1528      707,   709,   702,   755,   114,     0,     3,    54,     0,    54,
     1513       0,     0,   299,     0,     0,     0,   652,   653,   649,   650,
     1514     502,   501,   299,   299,   719,   299,   724,   300,   299,   667,
     1515     710,   666,     2,   299,     0,     0,     0,     0,     0,     0,
     1516       0,     0,   688,     0,   674,   625,   641,   675,     2,   621,
     1517     628,   438,   623,   624,   439,     2,   635,   644,   637,   638,
     1518     671,   672,   686,   714,   718,   716,   755,   273,     2,   750,
     1519       2,   429,   722,   727,   430,     3,   408,     3,     3,     3,
     1520     458,     0,     0,     2,   472,   469,   754,     0,   465,     2,
     1521     468,   471,     0,   299,   248,   270,     3,   277,   279,     0,
     1522       2,   574,   576,   577,     2,   613,   615,   616,   550,     0,
     1523     664,   542,     3,   352,   351,   354,   353,   299,   543,     0,
     1524     544,     0,   299,   371,   391,   380,     0,   385,   379,     0,
     1525       0,   443,   246,     0,     0,     3,     2,   673,   436,     0,
     1526     532,     0,   755,   756,   494,   405,   399,   111,   406,   753,
     1527       0,   299,   299,   299,     0,   556,   558,     0,     0,   221,
     1528       0,     0,     0,   229,   230,    65,   299,     0,    67,    70,
     1529      71,     0,   133,   463,    79,   115,   130,     3,   114,     0,
     1530      28,    40,     3,     0,    37,   110,     0,     3,   552,   659,
     1531     662,   654,     3,     3,   721,   726,     2,    72,   299,     3,
     1532       3,   300,     0,     3,   552,   631,   634,   552,   552,   681,
     1533     684,   299,     3,   626,   642,   676,   299,   299,   431,   299,
     1534     299,     0,     0,     0,     0,   262,   111,     0,     3,     3,
     1535       0,   466,     0,   462,     0,     0,   251,   299,     0,     0,
     1536     134,     0,     0,     0,     0,     0,   134,     0,     0,   114,
     1537     114,    21,   366,   446,    69,     0,    22,   135,     0,     3,
     1538     136,   137,     2,   148,   138,   139,   140,   141,   142,   143,
     1539     150,     0,   152,     0,     0,     0,   299,   299,   458,   552,
     1540       0,   545,   379,   391,     0,     0,     0,   697,     0,   389,
     1541     392,   396,   552,   396,   702,   395,   694,   552,   552,   388,
     1542     381,   386,   299,   584,     2,   669,   668,     0,   674,     2,
     1543     486,   488,   404,     0,   509,     3,   517,   518,     0,     2,
     1544     513,     3,     3,     0,     0,   561,   228,     0,     0,     0,
     1545     228,     0,     0,   753,   114,     0,     3,    54,     0,    54,
    15291546      54,     3,    42,    44,    39,     0,     3,   109,     0,     2,
    1530      659,   660,     0,   298,     0,     0,     0,     3,   645,     0,
    1531        2,   631,   632,     2,   647,     2,   681,   682,     0,     0,
    1532       72,     0,     3,     3,     3,     3,   416,   415,   419,   754,
    1533        2,     2,   753,     0,     0,     0,     0,     3,   469,     3,
    1534        0,   248,   151,     3,   299,   298,     0,     0,     0,     0,
    1535        2,   196,     0,   194,     0,     0,     0,     0,     0,     0,
    1536        0,     0,     0,   156,   153,   298,     0,   554,     0,   271,
    1537      283,     3,     3,   553,   620,   374,   389,   402,   298,   270,
    1538      298,     0,   522,   499,   298,     0,     0,   498,   513,     0,
    1539        0,     0,   221,     0,   230,    68,     2,   705,   706,     0,
    1540      131,   128,     0,    51,     2,    45,    52,    53,     0,     0,
    1541        0,     0,    27,     0,   662,   298,   587,   731,   732,   733,
    1542        0,   684,   298,   298,   298,     3,     3,     0,   692,     0,
    1543        0,     0,     0,   298,   298,     3,   551,   475,   476,     0,
    1544      251,   299,     0,     0,     0,     0,   298,   197,   195,     0,
    1545      192,   198,     0,     0,     0,     0,   202,   205,   203,   199,
    1546        0,   200,    40,   149,   147,   134,   249,     0,     0,   423,
    1547      427,   426,     0,   516,     2,   517,     2,   518,   512,   298,
    1548      233,     0,   231,     0,   233,   298,    36,   129,    55,     0,
    1549       43,    33,     2,    49,     2,    47,    30,     3,   734,     3,
    1550        3,     3,     0,     0,   691,   693,   634,   648,   273,     2,
    1551      413,     3,   412,     0,   478,   134,     0,     0,   134,     3,
    1552        0,   134,   193,     0,     2,     2,   214,   204,     0,     0,
    1553        0,     0,   145,   581,   621,     2,     0,     0,     2,   234,
    1554        0,     0,   222,     0,     3,     3,     0,     0,     0,     0,
    1555        0,     0,   694,   695,   298,     0,   477,   157,     0,     0,
    1556        2,   170,   134,   159,     0,   187,     0,   134,     0,     2,
    1557      161,     0,     2,     0,     2,     2,     2,   201,    37,   298,
    1558      521,   523,   514,     0,     0,     0,     0,     0,     0,     3,
    1559        3,   663,   635,   649,   685,   417,   134,   163,   166,     0,
    1560      165,   169,     3,   172,   171,     0,   134,   189,   134,     3,
    1561        0,   298,     0,   298,     0,     2,     0,     2,   144,     2,
    1562      235,   236,     0,   232,   223,   708,    46,     0,     0,   158,
    1563        0,     0,   168,   238,   173,     2,   240,   188,     0,   191,
    1564      177,   206,     3,   215,   219,   208,     3,     0,   298,     0,
    1565      298,     0,     0,     0,    50,    48,   164,   167,   134,     0,
    1566      174,   298,   134,   134,     0,   178,     0,     0,   699,   216,
    1567      217,   218,     0,   207,     3,   209,     3,   298,   224,   237,
    1568      154,   175,   160,   134,   241,   190,   185,   183,   179,   162,
    1569      134,     0,   700,     0,     0,     0,     0,   155,   176,   186,
    1570      180,   184,   183,   181,     3,     3,     0,     0,   500,   182,
    1571      210,   212,     3,     3,   211,   213
     1547     655,   657,   658,     0,     0,   299,     0,     0,     0,     3,
     1548     552,     0,     2,   627,   629,   630,     2,   643,   645,     2,
     1549     677,   679,   680,     0,     0,    72,     0,     3,     3,     3,
     1550       3,   416,   415,   419,   752,     2,     2,   751,     0,     0,
     1551       0,     0,     3,   467,     3,     0,   249,   151,   153,     0,
     1552       0,     0,     0,     2,   197,     0,   195,     0,     0,     0,
     1553       0,     0,     0,     0,     0,     0,   157,   154,   299,     0,
     1554     552,     0,   272,   284,     3,     3,   290,   551,   618,   299,
     1555       0,   382,     0,     0,     0,     0,   398,   698,   699,   552,
     1556     383,   393,   397,   394,   695,   696,   387,   374,   299,   271,
     1557     299,   402,     0,   520,   497,   299,     0,     0,   496,   511,
     1558       0,     0,     0,   222,     0,   231,    68,     0,   131,   128,
     1559       0,    51,     2,    45,    52,    53,     0,     0,     0,     0,
     1560      27,     0,   660,   299,   585,   597,   729,   730,   731,     0,
     1561     682,   299,   299,   299,     3,     3,     0,   690,     0,     0,
     1562       0,     0,   299,   299,     3,   549,   473,   474,     0,   252,
     1563       0,     0,     0,     0,   299,   198,   196,     0,   193,   199,
     1564       0,     0,     0,     0,   203,   206,   204,   200,     0,   201,
     1565      40,   149,   147,   134,   250,     0,     0,   375,   384,   552,
     1566     705,   707,   700,   391,   423,   427,   426,     0,   514,     2,
     1567     515,     2,   516,   510,   299,   234,     0,   232,     0,   234,
     1568      36,   129,    55,     0,    43,    33,     2,    49,     2,    47,
     1569      30,     3,   732,     3,     3,     3,     0,     0,   689,   691,
     1570     632,   646,   274,     2,   413,     3,   412,     0,   476,   134,
     1571       0,     0,   134,     3,     0,   134,     3,   300,   299,   194,
     1572       0,     2,     2,   215,   205,     0,     0,     0,     0,   145,
     1573     579,   619,     2,   701,   703,   704,   390,     2,     0,     0,
     1574       2,   235,     0,     0,   223,     0,     3,     0,     0,     0,
     1575       0,     0,     0,   692,   693,   299,     0,   475,   158,     0,
     1576       0,     2,   171,   134,   160,     0,   188,     0,   134,     0,
     1577     300,     2,   162,     0,     2,     0,     2,     2,     2,   202,
     1578      37,   299,   299,   519,   521,   512,     0,     0,     0,     0,
     1579       0,     3,     3,   661,   633,   647,   683,   417,   134,   164,
     1580     167,     0,   166,   170,     3,   173,   172,     0,   134,   190,
     1581     134,     3,     0,   299,     0,   299,     0,     2,     0,     2,
     1582     144,     3,     2,   236,   237,     0,   233,   224,    46,     0,
     1583       0,   159,     0,     0,   169,   239,   174,     2,   241,   189,
     1584       0,   192,   178,   207,     3,   216,   220,   209,     3,     0,
     1585     299,     0,   299,     0,     0,     0,     0,    50,    48,   165,
     1586     168,   134,     0,   175,   299,   134,   134,     0,   179,     0,
     1587       0,   697,   217,   218,   219,     0,   208,     3,   210,     3,
     1588     706,   299,   225,   238,   155,   176,   161,   134,   242,   191,
     1589     186,   184,   180,   163,   134,     0,   698,     0,     0,     0,
     1590       0,   156,   177,   187,   181,   185,   184,   182,     3,     3,
     1591       0,     0,   498,   183,   211,   213,     3,     3,   212,   214
    15721592};
    15731593
     
    15751595static const yytype_int16 yydefgoto[] =
    15761596{
    1577       -1,   803,   466,   303,    49,   135,   136,   304,   305,   306,
    1578      307,   308,   755,   756,  1121,  1122,  1123,  1233,   309,   380,
    1579      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
    1580      321,   322,   323,  1012,   517,   961,   546,   325,   962,  1042,
    1581     1043,  1510,  1045,  1046,  1047,  1048,  1511,  1049,  1050,  1428,
    1582     1429,  1391,  1392,  1393,  1489,  1490,  1494,  1495,  1530,  1531,
    1583     1051,  1350,  1052,  1053,  1286,  1287,  1288,  1472,  1054,   147,
    1584      941,   942,   943,  1370,  1452,  1464,  1465,   467,   468,   863,
    1585      864,  1020,    53,    54,    55,    56,    57,   347,   159,    60,
    1586       61,    62,    63,    64,   349,    66,    67,   265,    69,    70,
    1587      275,   351,   352,    73,    74,    75,   120,    77,   205,   354,
    1588      121,    80,   122,    82,    83,   453,    84,   452,   682,   683,
    1589      684,   896,  1073,   897,    85,    86,   456,   454,   690,   845,
    1590      846,   357,   358,   693,   694,   695,   359,   360,   361,   362,
    1591      464,  1056,   137,   138,   521,   327,   171,   639,   640,   641,
    1592      642,   643,    87,   123,    89,   488,   489,   928,   490,   278,
    1593      494,   328,    90,   139,   140,    91,  1309,  1095,  1096,  1097,
    1594     1098,    92,    93,   711,    94,   274,    95,    96,   188,  1014,
    1595      673,   411,   127,    97,   500,   501,   502,   189,   269,   191,
    1596      192,   193,   270,   100,   101,   102,   103,   104,   105,   106,
    1597      196,   197,   198,   199,   200,   815,   601,   602,   603,   604,
    1598      201,   606,   607,   608,   570,   571,   572,   573,   745,   107,
    1599      610,   611,   612,   613,   614,   615,   955,   747,   748,   749,
    1600      591,   365,   366,   367,   368,   329,   165,   109,   110,   111,
    1601      370,   688,   718
     1597      -1,   783,   457,   294,    49,   131,   132,   295,   296,   297,
     1598     298,   299,   735,   736,  1091,  1092,  1093,  1221,   300,   372,
     1599     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     1600     312,   313,   314,   977,   511,   926,   538,   316,   927,  1007,
     1601    1008,  1514,  1010,  1011,  1012,  1013,  1515,  1014,  1015,  1430,
     1602    1431,  1392,  1393,  1394,  1492,  1493,  1497,  1498,  1534,  1535,
     1603    1016,  1344,  1017,  1018,  1274,  1275,  1276,  1474,  1019,   143,
     1604     912,   913,   914,  1372,  1455,  1466,  1467,   458,   459,   843,
     1605     844,   985,    53,    54,    55,    56,    57,   339,   155,    60,
     1606      61,    62,    63,   182,   341,    65,    66,   254,    68,    69,
     1607     264,   343,   344,    72,    73,    74,   118,    76,   200,   346,
     1608     119,    79,   120,    81,    82,   672,    83,   671,   875,   876,
     1609    1038,  1039,  1191,  1040,    84,   484,   482,   704,   825,   826,
     1610     349,   350,   674,   675,   676,   351,   352,   677,   354,   455,
     1611    1021,   133,   134,   318,   319,   167,   631,   632,   633,   634,
     1612     635,    85,   121,    87,   479,   480,   894,   481,   269,   488,
     1613     320,    88,   135,   136,    89,  1304,  1069,  1070,  1071,  1072,
     1614      90,    91,   692,    92,   263,    93,    94,   183,   979,   666,
     1615     403,   125,    95,   494,   495,   496,   184,   258,   186,   187,
     1616     188,   259,    98,    99,   100,   101,   102,   103,   104,   191,
     1617     192,   193,   194,   195,   795,   593,   594,   595,   596,   196,
     1618     598,   599,   600,   562,   563,   564,   565,  1044,   105,   602,
     1619     603,   604,   605,   606,   607,  1045,  1046,  1047,  1048,   583,
     1620     357,   358,   359,   360,   321,   161,   107,   108,   109,   362,
     1621     702,   699
    16021622};
    16031623
    16041624/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    16051625   STATE-NUM.  */
    1606 #define YYPACT_NINF -1328
     1626#define YYPACT_NINF -1276
    16071627static const yytype_int16 yypact[] =
    16081628{
    1609     7094,  5192, -1328,    47, -1328, -1328, -1328, -1328, -1328, -1328,
    1610    -1328,    41, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1611    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,   209,   209,
    1612      209,  1263,  1027,   118,  7336,   312, -1328, -1328, -1328, -1328,
    1613    -1328,   248, -1328, -1328, -1328,  1020,   187, -1328, -1328, -1328,
    1614    -1328,  8977, -1328, -1328, -1328, -1328,   126,   266, -1328,  1653,
    1615    -1328, -1328, -1328, -1328,   285,  1985,   410,    77,  7457, -1328,
    1616    -1328,  8977,   983, -1328, -1328,   602,   416,  4937,   741,  1118,
    1617      602,  1546, -1328, -1328,  1203,   473, -1328,   602,  1860, -1328,
    1618      325, -1328,   471,   476, -1328, -1328, -1328, -1328,   367,   266,
    1619      209, -1328,   209, -1328, -1328, -1328, -1328,  7962,  1653, -1328,
    1620    -1328,  1653, -1328,   375, -1328,  8082, -1328, -1328,  2291,  9246,
    1621    -1328,   847,   847,   847, -1328, -1328, -1328,   209, -1328, -1328,
    1622    -1328,   408,   426,   461, -1328, -1328, -1328,   472, -1328, -1328,
    1623    -1328, -1328, -1328,   508,   512, -1328, -1328,   103,  8623,  1598,
    1624      500,   443,   518,   536,   544,   548,   556,  9286,  6718,   568,
    1625    -1328,  9017, -1328, -1328, -1328, -1328,   575, -1328,   190,  3423,
    1626     3423, -1328,   577,   294, -1328, -1328, -1328, -1328,   578,   352,
    1627      387,   393,   209,   564, -1328, -1328,  1985,  3980,   641, -1328,
    1628       84, -1328,   209,   209,   266, -1328, -1328,   214, -1328,   209,
    1629      209, -1328,  4262,   597,   616,   847,  6752, -1328, -1328, -1328,
    1630     8977, -1328, -1328,   602, -1328, -1328, -1328,   266, -1328,  1653,
    1631      126, -1328,  7808, -1328,   847,   847,   847,   266, -1328,  1263,
    1632    -1328,  6380, -1328, -1328,   600,   847, -1328,   847, -1328,   248,
    1633     8623, -1328,   625, -1328,  1027,   697,   847, -1328,  1263,   667,
    1634      675, -1328,  7336,   663, -1328, -1328, -1328,  3551, -1328, -1328,
    1635     8539, -1328,   641,   128,  5841,  9246,  2291,  4262, -1328,   236,
    1636    -1328, -1328,  8082,  1653,   700, 10420, -1328, -1328,   221, -1328,
    1637      493,   710,   742,  6026,   753,  5841,  9865, -1328,   766, -1328,
    1638    -1328, -1328, -1328, -1328, -1328,  9924,  9924,  8387,   187, -1328,
    1639    -1328, -1328, -1328, -1328, -1328, -1328,   808, -1328,  2340,  2114,
    1640     8623,  5841, -1328,   633,    22,   547,   447,   693,   771,   758,
    1641      785,   800,    32, -1328, -1328, -1328,   572, -1328,   268, -1328,
    1642    -1328,  1598, -1328, -1328,   329,   827, -1328,   417,   827, -1328,
    1643    -1328,  7962, -1328,   807,   834,  8741, -1328, -1328,  1437,  2015,
    1644     8168,  6752,   602, -1328,   602,   847,   847, -1328, -1328, -1328,
    1645    -1328, -1328, -1328,   847,  7962,  1653, -1328, -1328,  9286,  1675,
    1646    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,  4621,
    1647     5841, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1648    -1328, -1328, -1328, -1328, -1328,  2291, -1328,   818,   832,   839,
    1649      851,   857,   865,   870,   881,  3980, -1328, -1328,   888,   126,
    1650      903, -1328, -1328,   889, -1328, -1328, -1328,  3551, -1328, -1328,
    1651    -1328, -1328, -1328,  4262, -1328,  8623,  8623, -1328,   847,  2291,
    1652     6876,  8243, -1328, -1328, -1328, -1328,  3551,   128, -1328, -1328,
    1653      602,   266, -1328, -1328,  3551, -1328,  6628, -1328, -1328,   847,
    1654      847,   552,  5831,   902,   906,   897,   905,   847, -1328, -1328,
    1655    -1328, -1328,  9444, -1328,   569, 10160, -1328,   266,   913, -1328,
    1656     2291, 10200,  9983, -1328, -1328, -1328, -1328,   896,  4262, -1328,
    1657     8243,   641,  7215, -1328, -1328, -1328, -1328,  1315,   613,   907,
    1658     1027, 10420,  1475,  8082, -1328, 10420, -1328, -1328, -1328, -1328,
    1659      654, -1328,   931,   742,   246,  8387, -1328,  9319, -1328, -1328,
    1660     8387, -1328,  8505,  8387, -1328, -1328,   187, -1328,   666,   933,
    1661      695,   936, -1328, -1328,  6470, -1328, -1328,   345, -1328, -1328,
    1662     5841, -1328,   431,  5841, -1328, -1328, -1328, -1328, -1328, -1328,
    1663    -1328, -1328, -1328, -1328, -1328, -1328,  5841, -1328, -1328,  5841,
    1664     5841,  5841,  5841,  5841,  5841,  5841,  5841,  5841,  5841,  5841,
    1665     5841,  5841,  5841,  5841,  5841,  5841,  5841,  4496,   572,   830,
    1666    -1328, -1328,   209,   209, -1328, -1328,  8623, -1328, -1328,   889,
    1667      663, -1328,   889, 10042, -1328, -1328,  9286,  6470,   929, -1328,
    1668     9246, -1328, -1328,   575, -1328,   937,   947,   939,  3082,   257,
    1669      907, -1328,   209,   209,   907,   260, -1328,   209,   209,   889,
    1670    -1328, -1328,   209,   209, -1328,   827,  9404,  1653, 10351,   176,
    1671      238,  9404, -1328,  8539, -1328,   907, -1328,  7962, -1328,     8,
    1672     5680,  5680,  1653,  5204,   927, -1328,   546,   943,   945, -1328,
    1673      950,  3423,   381, -1328,  1033,  1653,  5680,   663,  2291,   663,
    1674      641,   477,   827, -1328, -1328,   604,   827, -1328, -1328, -1328,
    1675      742, -1328,   827,   266,  9444, -1328,   678,   967,   680,   968,
    1676    -1328,   807,   266, -1328, -1328,  3551,   266,   965,  9319,   187,
    1677    -1328,  1893, -1328,   436,   439,  1027, -1328,  1027,   966,  5841,
    1678    -1328,  1027, 10351, -1328, -1328,   972, -1328, -1328, -1328,   663,
    1679    -1328, 10276,   834, -1328,  5680,   707,  8168, -1328, -1328,   575,
    1680      973,   976,  1315,  1837, -1328, -1328, 10420,  5841, -1328, -1328,
    1681      979, -1328, -1328,   993, -1328,   979,   982,   493,  5841,   977,
    1682      974,    26,  1002,   998,  1007,  1008, -1328,  1011,  1012,  6470,
    1683    -1328,  5841, -1328,   695,  1078, -1328, -1328, -1328,   209,   209,
    1684     5376,  5841,  1015, -1328, -1328,   718, -1328,  5841, -1328, -1328,
    1685      733, -1328, -1328, -1328, -1328,   633,   633,    22,    22,   547,
    1686      547,   547,   547,   447,   447,   693,   771,   758,   785,   800,
    1687     5841,   106,  9444,  1023,  1035,  1036,   830, -1328, -1328, -1328,
    1688    -1328, -1328,  9444,   730, -1328,  7962, -1328,  6842,  8859, -1328,
    1689    -1328, -1328,   947,  9444,   952,  1039,  1040,  1041,  1042,  1044,
    1690     1046,  1047, -1328,  4747,  3082, -1328, -1328, -1328, -1328, -1328,
    1691    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1692    -1328, -1328,   889, -1328, -1328, -1328,   907, -1328, -1328, -1328,
    1693    -1328, -1328, -1328, -1328, -1328, -1328, -1328,  1053,  1054, -1328,
    1694      126,  1015,  5204, -1328, -1328, -1328,  4621,  1051, -1328, -1328,
    1695    -1328, -1328,  1027,  6163,  1143, -1328, -1328, -1328, -1328,  1049,
    1696      126, -1328, -1328,   889, -1328, -1328,   889,  1060,   889, -1328,
    1697    -1328, -1328, -1328, -1328, -1328,  6718, -1328,   266, -1328, -1328,
    1698      444,   451,  6718,  2036,  5841,  3709, -1328, -1328,  1045,    40,
    1699     1045, -1328,  1027, -1328,   209, -1328, -1328,  9131,   897, -1328,
    1700    -1328, -1328,   906,  1061,  1056, -1328, -1328,  1069,  1072, -1328,
    1701      707,  1770, -1328,   275, -1328,  1837,   907, -1328, -1328,  1076,
    1702    10420,  8082,  8623,  1081, -1328, -1328,   734,  1058, -1328,  5841,
    1703     1084,   279,  1082, -1328,  1080,   663,  1080, -1328, -1328,  1080,
    1704    -1328,  1087,  1089,  1091,  1078, -1328, -1328, -1328,  4621, -1328,
    1705    -1328, -1328,  1088,  5841,   919, -1328,  5841, -1328,   919, -1328,
    1706    -1328,  5841, -1328,   611,   827, -1328, -1328, -1328, -1328, -1328,
    1707    -1328, -1328,   834,  8741, -1328, -1328,  6966,  1093, -1328,   640,
    1708      827, -1328,   652,   657,   827, -1328,   847,  4999, -1328, -1328,
    1709    -1328,  9444,  9444, -1328,  8243,  8243,  1096,  1094,  1095,  1099,
    1710    -1328,   347,    89,  1015, -1328,   919, -1328,  3423, -1328,  5841,
    1711      464, -1328,  6346,  1103,  1105,  9806,  1107,  1112,   627,   759,
    1712     1566,  5841,  1115,   266,  5841,  5841,  1092,  1104,   248,   228,
    1713      302,  1108,  1123,  1097, -1328, -1328, -1328,  1128, -1328, -1328,
    1714    -1328, -1328, -1328, -1328, -1328, -1328,  1119, -1328,  1027,  1138,
    1715     5841, -1328,  9444,  9444,   209,  1140, -1328,  9171, -1328, -1328,
    1716      806, -1328,  3709, -1328, -1328, -1328, -1328,  1893, -1328, -1328,
    1717     1136, -1328, -1328, -1328, -1328,  1144,  1770, -1328, -1328,  1127,
    1718    -1328,   979, -1328, -1328,  2291,  1145, -1328, -1328, -1328,   749,
    1719     1149, -1328,    26,  1146,  5841,  1132,    26,    26,  1157,   672,
    1720      827, -1328, -1328,   950,  5841,  1159,  1088, -1328,  1148, -1328,
    1721    -1328,  1158, -1328,    81, -1328,  1166,  1158, -1328,  1169, -1328,
    1722    -1328,   889,  1171,  6594,  1173,  1184,  1185, -1328, -1328,  1189,
    1723    -1328, -1328,   889, -1328, -1328, -1328, -1328,   889,  5841,  5841,
    1724      834,  1188, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1725    -1328, -1328, -1328,  5841,  5841,  1190,  1194,  1158, -1328, -1328,
    1726     1027, -1328, -1328, -1328,  7733,  8082,  5841,  5841,  1274,  5841,
    1727    -1328, -1328,  1191, -1328,  1192,  5841,  1199,  1206,  5841,  1013,
    1728     1207,    37,  2395, -1328, -1328,  6163,  1211,   209,   482, -1328,
    1729    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,  9622, -1328,
    1730     8243,  1231, -1328, -1328,  8082,   492,   506, -1328,  1227,  1219,
    1731      742,  1242, -1328,   293, -1328, -1328, -1328, -1328,   889,  1238,
    1732    -1328, -1328,  1243,  1273, -1328, -1328,  1273,  1273,   919,  1245,
    1733     1200,  1221, -1328,  1247, -1328,  9444, -1328, -1328, -1328, -1328,
    1734     1251, -1328,  9444,  9444,  9444, -1328, -1328,  1252, -1328,  1254,
    1735     1257,  1259,   446,  7928,  8048, -1328, -1328, -1328, -1328,  1258,
    1736    -1328,  8318,   754,   762,  1267,   767,  3351, -1328, -1328,   507,
    1737    -1328, -1328,   782,  1269,  1270,   266,  1323,   868, -1328, -1328,
    1738     5841, -1328,  5841, -1328, -1328,  9806, -1328,  1272,  1280, -1328,
    1739    -1328, -1328,  1277, -1328, -1328, -1328, -1328, -1328, -1328,  8082,
    1740      742,  1284, -1328,  1264,   742,  9444, -1328, -1328, -1328,   919,
    1741    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1742    -1328, -1328,  1285,  1288, -1328, -1328, -1328, -1328, -1328, -1328,
    1743    -1328,  1292, -1328,  1294, -1328,  9806,   292,  5841,  9806, -1328,
    1744     1297,  5841, -1328,   298,  1308,  1314, -1328, -1328,  1302,  1303,
    1745     1282,   817, -1328, -1328, -1328, -1328,  1653,  2291,  1300, -1328,
    1746      139,  5841, -1328,   792, -1328,  1158,   919,   919,  1310,  1312,
    1747     1313,  1317, -1328, -1328,  8243,  1309, -1328,  1388,  5841,  1299,
    1748    -1328, -1328,  9716, -1328,   793, -1328,  1298,  9806,  1304, -1328,
    1749    -1328,  1325, -1328,  1327, -1328,  1342,  1344, -1328,  1316,  8082,
    1750    -1328, -1328, -1328,   742,   663,  1334,  1318,  1337,  1343,  1158,
    1751     1158, -1328, -1328, -1328, -1328, -1328,  9806,   149, -1328,   165,
    1752    -1328, -1328,  7578, -1328, -1328,  1322,  5841, -1328,  5841,  7578,
    1753      266,  9319,   266,  9319,  1351, -1328,  1352, -1328, -1328,  1348,
    1754    -1328, -1328,   794, -1328, -1328, -1328, -1328,  1347,  1355, -1328,
    1755     5841,  5841, -1328, -1328,   893,   117, -1328, -1328,  1338, -1328,
    1756      893, -1328, -1328,  2215,   663, -1328, -1328,   266,  9319,   266,
    1757     9319,  1362,  1341,   663, -1328, -1328, -1328, -1328,  9716,  1365,
    1758      893,  7657,  5841,  9626,  1366,   893,  1367,  2215,  3729, -1328,
    1759    -1328, -1328,  1372, -1328, -1328, -1328, -1328,  8623, -1328, -1328,
    1760    -1328,  9488, -1328,  9716, -1328, -1328,  1353,  5938, -1328, -1328,
    1761     9626,   266,  3729,   266,  1376,  1377,   795, -1328,  9488, -1328,
    1762    -1328, -1328,  5938, -1328, -1328, -1328,   266,   266, -1328, -1328,
    1763    -1328, -1328, -1328, -1328, -1328, -1328
     1629    7275,  9192, -1276,    31, -1276, -1276, -1276, -1276, -1276, -1276,
     1630   -1276,    12, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1631   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,    99, -1276,
     1632   -1276,  1603,   681,    89,  7517,   210, -1276, -1276, -1276, -1276,
     1633   -1276,   116, -1276, -1276, -1276,   429,   144, -1276, -1276, -1276,
     1634   -1276,  4252, -1276, -1276, -1276, -1276,    32,   152, -1276,  1816,
     1635   -1276, -1276, -1276, -1276,  1962,   287,    93,  5921, -1276, -1276,
     1636    4252,  1910, -1276, -1276,  1592,   306,  3283,   540,   736,  1592,
     1637    1249, -1276, -1276,    99, -1276,  1592,  1618, -1276,   235, -1276,
     1638     384,   511, -1276, -1276, -1276, -1276,   414,   152,    99, -1276,
     1639      99, -1276, -1276, -1276, -1276,  8217,  1816, -1276, -1276,  1816,
     1640   -1276,   362, -1276,  9392, -1276, -1276,  2239,  9432, -1276,  1003,
     1641    1003,  1003, -1276, -1276,  1463,    99, -1276,   471,   504,   530,
     1642   -1276, -1276, -1276,   542, -1276, -1276, -1276, -1276, -1276,   556,
     1643     565, -1276, -1276,    28,  8758,  2572,   309,   566,   591,   602,
     1644     611,   630,   646,  9465,  6899,   621, -1276,  9152, -1276, -1276,
     1645   -1276, -1276,   649, -1276,   146,  5718,  5718, -1276,   655,   206,
     1646   -1276, -1276, -1276, -1276,   679,   277,   321,   326, -1276, -1276,
     1647    1962,  2534,   677,   743, -1276,    23, -1276,    99,    99,   152,
     1648   -1276, -1276,    55, -1276,    99,    99, -1276,  3049,   700,   703,
     1649    1003,  6685, -1276, -1276, -1276,  4252, -1276, -1276,  1592, -1276,
     1650   -1276, -1276,   152, -1276,  1816,    32, -1276,  7868, -1276,  1003,
     1651    1003,  1003,   152, -1276,  1603, -1276,  3585, -1276, -1276,   684,
     1652    1003, -1276,  1003, -1276,   652,  1003, -1276,  1603,   709,   712,
     1653   -1276,  7517,   615, -1276, -1276, -1276,  9119, -1276, -1276,  8674,
     1654   -1276,   743,    35,  3690,  9432,  2239,  3049, -1276,    59, -1276,
     1655   -1276,  9392,  1816,   718, 10847,   681,   733, -1276, -1276,   582,
     1656   -1276,   359,   716,   770, 10233,   748,  3690, 10292, -1276,   750,
     1657   -1276, -1276, -1276, -1276, -1276, -1276, 10351, 10351,  8522,   144,
     1658   -1276, -1276, -1276, -1276, -1276, -1276, -1276,   786, -1276,  1681,
     1659    2360,  8758,  3690, -1276,   222,   671,   732,   427,   759,   755,
     1660     741,   747,   784,    38, -1276, -1276, -1276,   667, -1276, -1276,
     1661     145, -1276, -1276,  2572, -1276, -1276,   415,   774, -1276,   509,
     1662     774, -1276, -1276,  8217, -1276,   779,   788,  8876, -1276, -1276,
     1663     810,  1492,  8303,  6685,  1592, -1276,  1592,  1003,  1003, -1276,
     1664   -1276, -1276, -1276, -1276, -1276,  1003,  8217,  1816, -1276, -1276,
     1665    9465,  1201, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1666   -1276,  4829,  3690, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1667   -1276, -1276, -1276, -1276, -1276, -1276, -1276,   787,   794,   804,
     1668     807,   858,   830,   835,   845,  2534, -1276, -1276,    99,   827,
     1669     811,    32,   872, -1276, -1276,   876, -1276, -1276, -1276,  9119,
     1670   -1276, -1276, -1276, -1276, -1276,  3049, -1276,  8758,  8758, -1276,
     1671    1003,  2239,  6809,  8378, -1276, -1276, -1276, -1276,  9119,    35,
     1672   -1276, -1276,  1592,   152, -1276, -1276,  9119, -1276,  4366, -1276,
     1673   -1276,  1003,  1003,   116,  8758, -1276,   877, -1276,  1003, -1276,
     1674   -1276, -1276, -1276,  9703, -1276,   336, 10587, -1276,   152,   879,
     1675   -1276,  2239, 10627, 10410, -1276, -1276, -1276, -1276,   862,  3049,
     1676   -1276,  8378,   743,  7396, -1276, -1276, -1276, -1276,   620,   381,
     1677     869,   681,   890,   882,   911, 10847,  1023,  9392, -1276, 10847,
     1678   -1276, -1276, -1276, -1276,   405, -1276,   917,   770,   259,  8522,
     1679   -1276,  9550, -1276, -1276,  8522, -1276,  8640,  8522, -1276, -1276,
     1680     144, -1276,   435,   919,   921, -1276,  6651, -1276, -1276,   329,
     1681   -1276, -1276,  3690, -1276,   450,  3690, -1276, -1276, -1276, -1276,
     1682   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,  3690, -1276,
     1683   -1276,  3690,  3690,  3690,  3690,  3690,  3690,  3690,  3690,  3690,
     1684    3690,  3690,  3690,  3690,  3690,  3690,  3690,  3690,  3690,  3309,
     1685     667,  1689, -1276, -1276,    99,    99, -1276, -1276,  8758, -1276,
     1686   -1276,   876, -1276, -1276,   876, 10469, -1276, -1276,  9465,  6651,
     1687     923, -1276,  9432, -1276, -1276,   649, -1276,   927,  1763,   929,
     1688    2234,    63,   869, -1276,    99,    99,   869,    76, -1276,    99,
     1689      99,   876, -1276, -1276,    99,    99, -1276,   774,  9583,  1816,
     1690   10778,   446,   465,  9583, -1276,  8674, -1276,   869, -1276,  8217,
     1691   -1276,   294,  7988,  7988,  1816, 10174,   903, -1276,  1168,   913,
     1692     916, -1276,   932,  5718,   550, -1276,  1024,  1816,  7988,   615,
     1693    2239,   615,    79,   774, -1276, -1276,    80,   774, -1276, -1276,
     1694   -1276,  2239, -1276,   770, -1276,   774,   152,  9703, -1276,   498,
     1695     942,   515,   944, -1276,   779,   152, -1276, -1276,  9119,   152,
     1696     563,  5344,   941, 10778, -1276, -1276,   948, -1276, -1276, -1276,
     1697     615, -1276, 10703,   788, -1276,  7988,   693,  8303, -1276, -1276,
     1698     649,   945,   949,   620,  2900, -1276, -1276, 10847,  3690, -1276,
     1699   -1276,   681,   964,  3690, -1276,   681,   943, -1276, -1276,   971,
     1700   -1276,   943,   976,   359,  3690,   957,   956,    62,   980,   144,
     1701     975,   982,   988, -1276,   992,   994,  6651, -1276,  3690, -1276,
     1702    6072,  3690,   993, -1276, -1276,   595, -1276,  3690, -1276, -1276,
     1703     773, -1276, -1276, -1276, -1276,   222,   222,   671,   671,   732,
     1704     732,   732,   732,   427,   427,   759,   755,   741,   747,   784,
     1705    3690,   195,  9703,  1002,  1005,  1010,  1689, -1276, -1276, -1276,
     1706   -1276, -1276,  9703,  9703, -1276,  8217, -1276,  7023,  8994, -1276,
     1707   -1276, -1276,  1763,  9703,   887,  1011,  1012,  1015,  1017,  1018,
     1708    1021,  1029, -1276,  4594,  2234, -1276, -1276, -1276, -1276, -1276,
     1709   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1710   -1276, -1276,   876, -1276, -1276, -1276,   869, -1276, -1276, -1276,
     1711   -1276, -1276, -1276, -1276, -1276, -1276, -1276,  1031,  1034, -1276,
     1712      32,   993, 10174, -1276, -1276, -1276,  4829,   996, -1276, -1276,
     1713   -1276, -1276,   681,  6383,  1087, -1276, -1276, -1276, -1276,  1014,
     1714   -1276, -1276, -1276,   876, -1276, -1276, -1276,   876,   743,  1037,
     1715     876, -1276, -1276, -1276, -1276, -1276, -1276,  6899, -1276,   152,
     1716   -1276,  1020,  9550, -1276,  1883, -1276,   395,   681, -1276,  1038,
     1717    1036, -1276, -1276,  1042,  1045, -1276,   693,  1694, -1276,   494,
     1718   -1276,  2900,   869, -1276, -1276,   882, -1276, -1276, -1276,   890,
     1719    1048, 10847,  9392,  8758,  1049, -1276, -1276,   599,  1032, -1276,
     1720    3690,  1052,   284,  1050, -1276,  1056,  6899,   615,  1056, -1276,
     1721   -1276,  1056, -1276,  4829, -1276, -1276, -1276,  1055,  3690,  1312,
     1722   -1276,  3690, -1276,  1312, -1276, -1276,  3690, -1276,   265,   774,
     1723   -1276, -1276, -1276, -1276, -1276, -1276, -1276,   788,  8876, -1276,
     1724   -1276,  7147,  1054, -1276,   273,   774, -1276,   289,   296,   774,
     1725   -1276,  1003,  6008, -1276, -1276, -1276,  9703,  9703, -1276,  8378,
     1726    8378,  1062,  1058,  1059,  1069, -1276,   528,    60,   993, -1276,
     1727    1312, -1276,  5718, -1276,  3690,   459, -1276,  6520,  1071,  1075,
     1728   10115,  1076,  1078,   495,   516,  1001,  3690,  1081,   152,  3690,
     1729    3690,  1064,  1066,   116,   161,   546,  1072,  1083,  1060, -1276,
     1730   -1276, -1276,  1086, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1731   -1276,  1074, -1276,   681,  1096,  3690,  9703,  9703,    32,    99,
     1732    1099, -1276, -1276,  1883,   479,  1980,  3690,  2331,   485, -1276,
     1733   -1276,  1082,    14,  1082, -1276, -1276, -1276,    99,    99,   681,
     1734   -1276, -1276,  9277, -1276, -1276, -1276, -1276,  1101,  1694, -1276,
     1735   -1276,  1091, -1276,  1100, -1276,   943, -1276, -1276,  2239,  1107,
     1736   -1276, -1276, -1276,   616,  1115, -1276,    62,  1102,  3690,  1103,
     1737      62,    62,  1123,   932,  3690,  1124,  1055, -1276,  1148, -1276,
     1738   -1276,  1121, -1276,   215, -1276,  1127,  1121, -1276,  1134, -1276,
     1739   -1276, -1276,   876,  1135,  1136,  6775,  1150,  1154,  1155, -1276,
     1740      99,  1138, -1276, -1276, -1276,   876, -1276, -1276, -1276, -1276,
     1741   -1276, -1276,   876,  3690,  3690,   788,  1156, -1276, -1276, -1276,
     1742   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,  3690,  3690,
     1743    1164,  1169,  1121, -1276, -1276,   681, -1276, -1276, -1276,  3690,
     1744    3690,  1238,  3690, -1276, -1276,  1157, -1276,  1159,  3690,  1161,
     1745    1162,  3690,   946,  1166,    25,  2027, -1276, -1276,  6383,  1184,
     1746      99,   527, -1276, -1276, -1276, -1276, -1276, -1276, -1276,  9317,
     1747     534, -1276,   796,  1190,  1192,  1196, -1276,  2331, -1276,    99,
     1748   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,  9931, -1276,
     1749    8378, -1276,  1202, -1276, -1276,  9392,   537,   538, -1276,  1209,
     1750    1186,   770,  1207, -1276,   320, -1276, -1276,  1210, -1276, -1276,
     1751    1216,  1257, -1276, -1276,  1257,  1257,  1312,  1218,  2023,  2049,
     1752   -1276,  1227, -1276,  9703, -1276, -1276, -1276, -1276, -1276,  1228,
     1753   -1276,  9703,  9703,  9703, -1276, -1276,  1229, -1276,  1230,  1233,
     1754    1234,   575,  8063,  8183, -1276, -1276, -1276, -1276,  1236, -1276,
     1755     647,   658,  1240,   665,  6215, -1276, -1276,   561, -1276, -1276,
     1756     670,  1241,  1246,   152,  1300,   854, -1276, -1276,  3690, -1276,
     1757    3690, -1276, -1276, 10115, -1276,  1255,  1256, -1276, -1276,   312,
     1758     774, -1276, -1276,  1883, -1276, -1276, -1276,  1245, -1276, -1276,
     1759   -1276, -1276, -1276, -1276,  9392,   770,  1261, -1276,  1239,   770,
     1760   -1276, -1276, -1276,  1312, -1276, -1276, -1276, -1276, -1276, -1276,
     1761   -1276, -1276, -1276, -1276, -1276, -1276,  1262,  1267, -1276, -1276,
     1762   -1276, -1276, -1276, -1276, -1276,  1270, -1276,  1273, -1276, 10115,
     1763     240,  3690, 10115, -1276,  1276,  3690, -1276,  7793,  9392, -1276,
     1764     271,  1291,  1294, -1276, -1276,  1282,  1288,  1272,   818, -1276,
     1765   -1276, -1276, -1276, -1276, -1276,   876, -1276, -1276,  1816,  2239,
     1766    1287, -1276,   339,  3690, -1276,   690,  1121,  1312,  1312,  1289,
     1767    1296,  1299,  1304, -1276, -1276,  8378,  1303, -1276,  1370,  3690,
     1768    1286, -1276, -1276, 10025, -1276,   707, -1276,  1293, 10115,  1298,
     1769    8453, -1276, -1276,  1310, -1276,  1311, -1276,  1330,  1335, -1276,
     1770    1302,  9703,  9392, -1276, -1276, -1276,   770,   615,  1322,  1305,
     1771    1323,  1121,  1121, -1276, -1276, -1276, -1276, -1276, 10115,   147,
     1772   -1276,   420, -1276, -1276,  7638, -1276, -1276,  1313,  3690, -1276,
     1773    3690,  7638,   152,  9550,   152,  9550,  1326, -1276,  1332, -1276,
     1774   -1276, -1276,  1328, -1276, -1276,   714, -1276, -1276, -1276,  1337,
     1775    1342, -1276,  3690,  3690, -1276, -1276,   883,    84, -1276, -1276,
     1776    1324, -1276,   883, -1276, -1276,  2177,   615, -1276, -1276,   152,
     1777    9550,   152,  9550,  1334,  1349,  1336,   615, -1276, -1276, -1276,
     1778   -1276, 10025,  1345,   883,  7717,  3690,  9935,  1351,   883,  1357,
     1779    2177,  2664, -1276, -1276, -1276,  1359, -1276, -1276, -1276, -1276,
     1780   -1276,  8758, -1276, -1276, -1276,  9797, -1276, 10025, -1276, -1276,
     1781    1346,  9707, -1276, -1276,  9935,   152,  2664,   152,  1369,  1372,
     1782     730, -1276,  9797, -1276, -1276, -1276,  9707, -1276, -1276, -1276,
     1783     152,   152, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276
    17641784};
    17651785
     
    17671787static const yytype_int16 yypgoto[] =
    17681788{
    1769    -1328,  4218,  2910, -1328,  2669, -1328,   454,     0,  -147, -1328,
    1770    -1328,   463,  -522,  -472,  -935, -1037, -1328,  -158,  4217,  1113,
    1771    -1328,   115,   430,   459,   419,   456,   932,   938,   935,   940,
    1772      941, -1328,  -236,  -629,  5014,  -930, -1328, -1328,   543,  -135,
    1773     -872,  -345, -1328,  1349, -1328,   324,  -967, -1328, -1328,    49,
    1774    -1328, -1273,  -818,   170, -1328, -1328, -1328, -1328,    -5, -1312,
    1775    -1328, -1328, -1328, -1328, -1328, -1328,   244, -1175,    35, -1328,
    1776     -502, -1328,   424,   219, -1328,    95, -1328,  -308, -1328, -1328,
    1777    -1328,   479,  -837, -1328, -1328,     4,  -995,   175,  1139, -1328,
    1778    -1328, -1328,  -119, -1328,    57,   315,  -193,  1470,  3860, -1328,
    1779    -1328,    63,   160,   685,  1861, -1328,  1798, -1328, -1328,    18,
    1780     1913, -1328,  2277,  2037, -1328, -1328, -1328,  -545, -1328,   862,
    1781      867,   458,   646,   -93, -1328, -1328, -1328,   856,   647,  -449,
    1782    -1328,  -478,  -351,  -615, -1328, -1328,  -928,  -975,    -3,   985,
    1783      981,   776, -1328,   107,   366,   -24,  -195,  -132,   609,   706,
    1784    -1328,   926, -1328,  2605,  1917,  -447,   855, -1328, -1328,   645,
    1785    -1328,  -234, -1328,  -136, -1328, -1328, -1328, -1230,   360, -1328,
    1786    -1328, -1328,  1098, -1328,    12, -1328, -1328,  -835,  -110, -1327,
    1787     -138,  2640, -1328,  3073, -1328,   848, -1328,  -166,    72,  -183,
    1788     -179,  -176,     2,   -41,   -36,   -32,    62,    10,    19,    21,
    1789      -98,  -172,  -171,  -170,  -167,  -307,  -494,  -481,  -476,  -551,
    1790     -310,  -510, -1328, -1328,  -515,  1010,  1014,  1017,  1772,  4826,
    1791     -557,  -496,  -482,  -480,  -543, -1328,  -503,  -723,  -721,  -720,
    1792     -573,  -287,  -290, -1328, -1328,   226,   457,    -9, -1328,  3666,
    1793      -27,  -611,  -257
     1789   -1276,  4372,  2980, -1276,  2546, -1276,   133,     0,   353, -1276,
     1790   -1276,   484,  -503,  -488,  -816,  -925, -1276,  -155,  5343,   687,
     1791   -1276,    -8,   438,   439,   406,   473,   936,   937,   938,   940,
     1792     935, -1276,    16,  -629,  5085,  -872, -1276, -1276,   571,   711,
     1793    -953,   442, -1276,   143, -1276,   337, -1218, -1276, -1276,    43,
     1794   -1276, -1095,  -891,   157, -1276, -1276, -1276, -1276,   -28, -1182,
     1795   -1276, -1276, -1276, -1276, -1276, -1276,   239, -1036,    39, -1276,
     1796    -292, -1276,   428,   203, -1276,    73, -1276,  -329, -1276, -1276,
     1797   -1276,   497,  -831, -1276, -1276,     8, -1177,   119,  2152, -1276,
     1798   -1276, -1276,  -200, -1276,   218,   464,  -197,  1593,  4090, -1276,
     1799   -1276,    54,    10,    81,   870, -1276,  1757, -1276, -1276,     4,
     1800    2080, -1276,  2209,   245, -1276, -1276, -1276,  -810, -1276,   651,
     1801     492,   236,   490,  -591, -1276, -1276,   829,   640,  -247, -1276,
     1802    -487,  -338,   961, -1276, -1276,  -885,  -918,  -131,   -60, -1276,
     1803     462, -1276,  1284,  -121,  -305,  -157,  -103,   614,   708, -1276,
     1804     905, -1276,  2602,  1460,  -448,   848, -1276, -1276,   661, -1276,
     1805    -437, -1276,   217, -1276, -1276, -1276, -1269,   341, -1276, -1276,
     1806   -1276,  1085, -1276,     6, -1276, -1276,  -796,   -87, -1275,  -158,
     1807    2622, -1276,  4369, -1276,   843, -1276,    21,   165,  -174,  -172,
     1808    -169,     2,   -40,   -32,   -30,  1684,    26,    53,    66,   110,
     1809    -166,  -163,  -160,  -159,  -293,  -485,  -480,  -434,  -541,  -314,
     1810    -513, -1276, -1276,  -535,  1006,  1008,  1016,  1639,  4667,  -574,
     1811    -533,  -528,  -509,  -421, -1276,  -961, -1011, -1007, -1005,  -575,
     1812    -287,  -299, -1276, -1276,   298,   238,   -63, -1276,  3674,   814,
     1813    -613,  -492
    17941814};
    17951815
     
    17971817   positive, shift that token.  If negative, reduce the rule which
    17981818   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1799 #define YYTABLE_NINF -530
     1819#define YYTABLE_NINF -528
    18001820static const yytype_int16 yytable[] =
    18011821{
    1802       50,   114,    99,   398,   151,   116,   451,   399,   268,   152,
    1803      400,   760,   427,   153,   401,   402,   403,   746,    78,   404,
    1804      951,   406,   952,   953,   167,   438,  1055,  1173,  1057,   857,
    1805     1158,   114,   114,  1126,    50,    52,    99,   382,   383,   605,
    1806      735,   817,   600,   834,   720,    50,   145,   816,   725,   880,
    1807      409,    50,    78,   162,   787,   154,   820,    65,   592,    50,
    1808      911,  1430,   827,    71,   155,    50,   156,   194,    50,    52,
    1809      217,    50,    98,   227,   624,   220,  1156,  1157,   628,  1368,
    1810     1167,  1235,    33,   398,   114,   114,   808,   399,   167,   407,
    1811      400,    65,   424,   445,   401,   402,   403,    71,   261,   404,
    1812      809,   406,   805,  1290,  1190,  1191,    98,   203,    50,   663,
    1813      291,    50,   458,   163,   810,   806,   811,   150,    50,  1434,
    1814      807,   330,   474,    98,   473,   475,    33,   195,   672,   707,
    1815      218,   124,   566,   228,  1430,   504,   676,   190,   469,   143,
    1816       98,   907,   939,    98,   717,   151,   552,   553,   342,    50,
    1817      152,   162,   847,   847,   153,   125,   410,   281,   204,  1187,
    1818       72,    50,   518,   372,  -239,  -239,   567,   972,   847,   407,
    1819      951,  1240,   952,   953,  1291,    58,   117,   977,   901,  1449,
    1820      714,  1518,   849,   434,  1230,  1172,    50,    50,   988,   162,
    1821     1163,   242,   245,   708,    72,   408,   154,   866,   253,  1241,
    1822      410,  1320,    50,  1323,  1325,   155,   936,   156,  1533,    58,
    1823       50,   163,   162,   330,   661,  1434,  1164,   282,   805,    50,
    1824     1434,    98,    50,   373,   441,   151,   847,   741,   213,   114,
    1825      152,   806,   144,    98,   153,  1158,   807,  -239,   169,   658,
    1826     1434,   971,   474,   211,   114,   434,   221,  1434,   114,   163,
    1827     1460,    33,    50,   114,    99,   919,    33,  1000,   397,   190,
    1828     1413,   820,   170,   999,   461,  1071,    50,    50,  1476,   162,
    1829       78,   976,   163,    50,  1414,    78,  1164,   164,    33,   848,
    1830      848,  1173,    98,   167,   442,   650,  1461,    52,   605,  1158,
    1831      666,   668,   987,   837,    98,   848,   796,   838,   469,    33,
    1832     1462,  1080,    33,  1504,   157,  1506,   809,   659,   805,    65,
    1833     1103,   376,   658,   665,   470,    71,   118,   469,   594,   670,
    1834      810,   806,   811,   146,    98,   469,   807,   377,   418,   592,
    1835      410,    50,   585,   372,   592,  1156,  1157,   843,   477,  1388,
    1836     1389,   164,   512,   821,  1067,  1388,  1389,   824,    50,    50,
    1837      479,   455,   410,   848,   492,   839,   729,   493,  1055,   840,
    1838     1057,   730,   148,   -10,   817,    50,   160,   887,   841,    50,
    1839      518,   818,   844,   597,   825,   518,   597,   287,   518,   637,
    1840      659,   731,   440,   575,  1375,   172,  1153,  1154,   707,   576,
    1841       43,    44,   839,   373,  1105,    50,  1087,   439,   330,   330,
    1842      509,   667,   669,    98,  1349,    50,   182,   372,  1313,  1158,
    1843      834,  1390,    72,   202,  1106,   386,   513,  1399,   378,  -294,
    1844      112,   599,   259,    50,   809,   547,   548,    58,  1314,    50,
    1845      160,   387,   781,    43,    44,    78,   433,  1173,   810,  1351,
    1846      811,  1419,  1420,   577,  1173,   410,   248,  1201,  1202,  1144,
    1847     1146,  1112,   708,   910,    78,   113,  1425,   108,   108,   696,
    1848      547,   753,    78,   326,  -112,   114,   330,   373,  -112,   724,
    1849       50,   251,   340,   389,   470,  1221,  -525,   190,    50,  1398,
    1850      372,   253,    50,  1091,    99,   330,   638,    50,   737,   390,
    1851      114,   108,   114,   470,  1124,   547,  1173,   859,   433,   636,
    1852       78,   470,  1229,   496,   605,   980,   112,   998,   391,   858,
    1853      213,   264,   870,   877,   393,   898,   860,    52,  1044,    43,
    1854       44,   429,   -12,   522,   392,   432,  1517,   114,   108,  1000,
    1855      394,   580,   114,   410,  1265,  1266,   164,   705,   868,    65,
    1856     -448,   707,   556,   557,   970,    71,  1528,   758,   112,   330,
    1857      141,   142,   791,  1532,    98,   326,   469,   902,   333,   599,
    1858      904,    43,    44,  1338,  1468,   902,  1469,  1339,   497,  1112,
    1859      498,   499,   904,   903,   901,  -449,   905,   558,   559,  1003,
    1860      114,  1068,   916,   900,   940,  1170,   277,   432,  1069,   835,
    1861      487,   871,   244,   410,   594,  1466,    50,   719,    50,   723,
    1862     1219,  1171,  1466,  1170,  1223,   708,     2,   207,     4,     5,
    1863        6,     7,   520,  1304,   253,   332,  1011,    50,   998,  1296,
    1864     1515,   112,   279,   141,   142,   160,   280,  1306,   741,  1305,
    1865     1327,   213,    50,   334,    43,    44,   114,  1329,  1330,  1331,
    1866      554,   555,    72,  1307,  1352,    50,  1488,   114,    50,   114,
    1867      798,   335,  1493,  1155,  1514,  1010,   584,    58,   910,   336,
    1868      589,   696,   853,   337,   762,   763,   764,   677,   804,  1088,
    1869      599,   338,  1513,   576,    37,  1061,    38,  1520,   685,   622,
    1870     1178,    50,   371,   626,   698,   114,   568,   114,   410,   375,
    1871      699,   114,   388,    78,    47,    48,   592,   384,  1099,   114,
    1872     1374,   396,    39,   910,   175,   176,    42,   463,   408,   108,
    1873      398,   425,    50,    50,   399,    43,    44,   400,   874,    78,
    1874      410,   401,   402,   403,  1016,  1129,   404,   410,   715,   406,
    1875      426,   522,   470,   522,   716,  1127,   522,   448,   112,   522,
    1876      326,   326,  1415,   854,  -372,     2,   207,     4,     5,     6,
    1877        7,    43,    44,   899,  1140,   549,   410,   230,   470,  1427,
    1878      231,   550,   551,   235,  1181,   237,  1143,   681,   597,   726,
    1879     1361,  1145,   246,   597,   951,   727,   952,   953,   440,   696,
    1880      118,   740,   707,  1011,   804,   599,  1226,   741,   410,   696,
    1881      560,   561,   906,   881,   908,   883,   705,   407,   455,   741,
    1882      696,   741,    50,  1148,   459,  1074,   487,  1074,   326,   743,
    1883      487,   410,   460,    37,    50,    38,  -401,    47,    48,   482,
    1884      520,   920,   520,   597,   503,   520,   291,   326,   520,    47,
    1885       48,  1486,  1427,   965,    39,   178,   175,   176,    42,   966,
    1886        8,     9,    10,    11,    12,   978,   708,    43,    44,  1101,
    1887     1044,   699,   213,   969,   966,   966,   637,     8,     9,    10,
    1888       11,    12,   114,  1041,  1217,   959,   213,   507,   910,  1345,
    1889      576,   732,    33,   733,   804,   741,   734,  1346,    -3,   738,
    1890      512,    78,  1348,   741,   262,  1168,   599,   263,   741,    33,
    1891      563,   326,   525,    50,   562,    50,  1183,  1353,   230,   565,
    1892       36,   794,   114,   741,   685,   330,   658,  1416,  1435,  1482,
    1893     1538,   898,  1341,  1413,   741,  1483,   576,    36,   564,   113,
    1894       65,   332,   410,   708,   586,    50,    71,   910,   910,  1358,
    1895     1359,   833,   253,   332,   410,  1092,   589,  1408,   966,   108,
    1896     1388,  1389,   842,   339,   568,   114,   410,   651,   798,   705,
    1897     1362,    -3,    47,    48,   652,   940,   835,   213,   637,   940,
    1898      940,  1236,  1237,   638,   114,  1070,   653,   899,   114,  1021,
    1899     1500,   418,   654,   410,   659,   769,   770,   771,   772,   900,
    1900      655,   754,   765,   766,  1212,   656,   759,     2,   207,     4,
    1901        5,     6,     7,   681,   112,   437,   657,   599,   696,   696,
    1902     1387,  1117,   660,  1395,  1118,   258,  1119,    43,    44,  1076,
    1903      479,   332,   410,   767,   768,   114,   773,   774,   229,  1112,
    1904      662,   686,    39,    72,   691,  1041,    42,   687,    50,    50,
    1905       50,   487,  -243,   689,   463,    43,    44,   230,    58,   235,
    1906       78,  1272,  1273,   717,  1275,   728,   799,  1433,   742,   481,
    1907     1279,   750,  1437,  1282,   801,    37,   812,    38,   114,   696,
    1908      696,   802,   -14,   597,   862,   638,   818,   332,   597,    47,
    1909       48,   856,    50,  1311,  1283,  1284,  1285,    50,   -15,   470,
    1910      855,  1459,   882,   884,   889,  1175,   909,  -422,     8,     9,
    1911       10,    11,    12,  -529,    50,    39,   924,   934,   547,    42,
    1912      716,   867,   112,   869,   141,   142,  1093,   932,    43,    44,
    1913      979,   938,   937,    51,   115,    43,    44,   944,   114,   945,
    1914       33,  -295,   946,   947,   178,   230,   948,   949,     8,     9,
    1915       10,    11,    12,   685,    45,   910,   963,   509,   973,    59,
    1916       59,   625,    47,    48,   899,   629,   440,    51,    36,   899,
    1917      974,   975,   910,   915,   989,   990,   991,   992,   149,   993,
    1918       33,   994,   995,  1369,    51,  1021,  1527,  1369,  -410,  -409,
    1919      114,  1018,  1527,    59,  1058,  1064,  1081,  1082,   187,   220,
    1920      894,   210,    72,  1527,    51,  1060,  1083,  1527,    36,  1084,
    1921      705,  1090,   743,  1102,   410,  1041,  1100,    58,  1104,   958,
    1922       47,    48,  1109,  1107,  1110,  1300,  1111,    59,  1138,  1114,
    1923       59,  1159,  1394,    78,  1162,  1160,  1161,  1176,  1092,  1177,
    1924      115,  1179,   681,   112,   910,   910,  1180,    -9,   115,  1188,
    1925     1117,   267,   272,  1118,  1193,  1119,    43,    44,   114,  -445,
    1926      114,   114,   696,   -11,   741,   487,  1094,   326,    -3,   696,
    1927      696,   696,    65,  1199,  1197,  1204,  1207,  1411,    71,  1209,
    1928      492,   310,   149,  1220,  1234,  1213,  1450,   705,  1218,  1222,
    1929      115,   345,  1225,  1526,   210,   112,  1231,  1270,   112,  1238,
    1930      141,   239,  1117,  1242,  1244,  1118,  1246,  1119,    43,    44,
    1931     1247,    43,    44,   685,    78,  1041,   112,   348,   833,   187,
    1932      187,  1248,  1249,  1117,  1251,  1258,  1118,  1267,  1119,    43,
    1933       44,  1268,   696,  1092,   398,   267,  1322,   240,   399,   114,
    1934      108,   400,   241,    51,  1274,   401,   402,   403,  1277,  1278,
    1935      404,  1294,   406,   470,   213,   210,  1280,  1324,   131,  1175,
    1936      132,   133,   134,  1281,  1289,  1041,  1302,  1308,  1041,   211,
    1937      221,    43,    44,   310,  1310,    72,   658,  1312,  1316,  1318,
    1938     1317,    59,  1321,  1499,  1326,    51,    50,    50,  1328,  1334,
    1939       58,  1335,  1336,   272,  1337,  1344,   114,   114,   272,   267,
    1940      267,  1347,   681,  1354,  1355,   115,  1285,  1363,   108,  1093,
    1941       39,    59,  1041,   836,    42,  1364,  1365,  1041,  1371,  1108,
    1942      407,  1372,  1382,    43,    44,  1383,   174,  -411,   850,  1401,
    1943      310,  1386,  1397,  1092,   114,  1403,  1405,  1406,  1120,  1407,
    1944     1412,   865,  1120,   310,   659,  1421,  1041,  1422,  1423,   712,
    1945     1339,   440,  1424,  1426,  1431,  1436,    72,    47,    48,   569,
    1946     1440,  1438,  1442,  1444,   149,  1446,   439,   697,   254,  1453,
    1947       78,    58,  1455,  1448,   115,  1454,   151,    78,   345,  1467,
    1948     1456,   152,   598,   616,  1484,   153,  1477,  1479,  1481,  1120,
    1949       68,   119,  1485,    50,   114,  1492,  1507,   621,  1508,   108,
    1950      330,   621,  1521,   114,  1093,  1512,  1519,  1523,  1041,   470,
    1951     1529,  1536,  1537,  1041,   775,  1175,   470,    50,    50,   777,
    1952      162,   776,  1175,  1192,    68,   778,  1116,   779,   267,    78,
    1953     1487,  1041,    39,  1041,   175,   176,    42,  1041,   187,  1293,
    1954     1041,   161,    50,  1400,   372,    43,    44,  1539,  1041,  1094,
    1955     1357,  1224,  1041,  1373,  1470,  1206,   267,  1198,   310,   310,
    1956      890,   222,   267,   416,   621,   891,  1075,   912,   470,  -296,
    1957      112,   371,   141,   142,  1175,  1079,     8,     9,    10,    11,
    1958       12,   793,  1017,    43,    44,   115,   435,  1113,   861,   477,
    1959      348,   926,  1120,  1089,  1303,   935,   443,   260,   783,     0,
    1960      710,     0,   784,   267,  1093,   785,     0,     0,    33,   721,
    1961        0,   267,    72,   621,   722,    51,     0,     0,     0,    72,
    1962      713,     0,     0,     0,     0,     0,   115,    58,     8,     9,
    1963       10,    11,    12,     0,    58,     0,    36,     0,   310,   331,
    1964      115,    59,     0,   310,  1094,   310,   310,   260,   350,     0,
    1965        0,     0,   108,   744,     0,     0,     0,   345,     0,     0,
    1966       33,    39,     0,   175,   176,    42,   519,     0,     0,   697,
    1967        0,    72,   108,     0,    43,    44,     0,   405,     0,     0,
    1968        0,     0,     0,   348,     0,     0,    58,  1474,    36,  1474,
    1969        0,   108,   423,    39,     0,   428,   430,    42,     0,     0,
    1970      161,   569,   569,     0,     0,     0,    43,    44,  1185,   310,
    1971        0,     0,  1120,     0,  1120,  1120,     0,     0,     0,   621,
    1972      345,   446,     0,   616,  1474,   449,  1474,   450,     0,   598,
    1973        0,   598,    45,     0,     0,     0,   457,     0,     0,     0,
    1974       47,    48,    68,     0,  1094,     0,   348,   471,    39,   621,
    1975      175,   176,    42,   108,   621,     0,   616,   478,     0,     0,
    1976      621,    43,    44,   621,   621,   430,     0,     0,     0,     0,
    1977       39,     0,   175,   176,    42,     0,  1473,     0,  1473,   621,
    1978        0,   267,     0,    43,    44,     0,   108,   697,     0,   348,
    1979      348,     0,     0,  1120,     0,     0,     0,   697,     0,     0,
    1980        8,     9,    10,    11,    12,   348,     0,     0,   697,   375,
    1981      674,   115,     0,  1473,   895,  1473,     0,     0,    76,     0,
    1982        0,     0,     0,     0,  1182,  1184,  1186,     0,     0,     0,
    1983        0,   260,    33,     0,     0,   590,   700,   621,   921,   616,
    1984        0,   618,   326,     0,     0,   713,   713,     0,     0,     0,
    1985     1120,  1120,    76,     0,   623,     0,     0,     0,   623,     0,
    1986       36,     0,     0,   348,     0,     0,     0,     8,     9,    10,
    1987       11,    12,   345,     0,   519,     0,   744,   744,     0,   519,
    1988        0,     0,   519,  -297,     0,     0,   108,     0,  1451,   223,
    1989        8,     9,    10,    11,    12,     0,     0,     0,     0,    33,
    1990        0,     0,     0,     0,   920,     0,   597,   471,     0,   108,
    1991        0,     0,    47,    48,     0,     0,   108,     0,     0,   569,
    1992        0,   350,    33,     0,     0,     0,   471,    36,   621,     0,
    1993      983,     0,    39,    79,   471,   598,    42,     0,     0,     0,
    1994        0,     0,     0,     0,     0,    43,    44,   598,  1501,   214,
    1995       36,     0,   692,     0,     0,   430,     0,  1509,   233,     0,
    1996        0,     0,     0,     0,     0,     0,     0,    79,   108,     0,
    1997      706,   712,    68,     0,     0,     0,   353,     0,     0,    47,
    1998       48,   430,   412,     0,     0,   430,     0,     0,    39,   420,
    1999      184,   185,    42,     0,     0,     0,   310,     0,     0,     0,
    2000      214,    43,    44,     0,   224,   216,   697,   697,     0,     0,
    2001        0,     0,     0,     0,   350,     0,     0,     0,   345,     0,
    2002        0,   243,    59,     0,     0,   345,   895,   893,   895,   410,
    2003        0,     0,   879,     0,     0,    47,    48,     0,     0,     0,
    2004      115,   886,   214,     0,   348,   888,     0,     0,   894,   447,
    2005        0,     0,     0,   921,   921,     0,   216,     0,   713,   786,
    2006        0,   412,     0,     0,   115,   310,     0,   697,   697,     0,
    2007       76,     0,     0,     0,     0,    76,   623,   797,     0,     0,
    2008       39,     0,   184,   185,    42,     0,     0,   744,   814,     0,
    2009       59,   355,     0,    43,    44,     0,     0,     0,   216,     0,
    2010        0,     0,     0,   214,     0,     0,   590,     0,     0,     0,
    2011       39,   590,   184,   185,    42,     0,   345,   623,   574,   186,
    2012      350,   350,     0,    43,    44,   215,   578,    47,    48,   581,
    2013        0,    39,     0,   184,   185,    42,   350,   621,   621,     0,
    2014        0,   214,     0,     0,    43,    44,   214,     0,     0,   596,
    2015        0,   597,     0,     0,   692,   310,     0,    47,    48,   216,
    2016        0,     0,  1410,   348,   348,   471,     0,     0,     0,   223,
    2017      893,     0,   410,     0,     0,     0,   215,     0,    47,    48,
    2018        0,    59,     0,     0,     0,    79,     0,     0,     0,   412,
    2019       79,   471,     0,   420,   350,     0,     0,   216,     0,     0,
    2020      115,     0,   216,   925,     0,   895,   430,     0,     0,     0,
    2021      895,     0,     0,  1301,     0,     0,     0,     0,   215,   921,
    2022        0,     0,     0,     0,     0,     0,     0,   267,     0,   706,
    2023        0,   214,     0,     0,   954,    76,   534,   535,   536,   537,
    2024      538,   539,   540,   541,   542,   543,   544,     0,     0,   353,
    2025      697,     0,     0,     0,    76,     0,  1066,   697,   697,   697,
    2026        0,     0,    76,     0,     0,     0,   345,     0,     0,   412,
    2027      545,     0,   692,     0,     0,     0,     0,     0,     0,   215,
    2028      353,     0,   692,     0,   224,   623,     0,   216,   986,     0,
    2029        0,     0,     0,   692,     0,     0,     0,    81,   353,     0,
    2030       76,     0,     0,   997,     0,     0,     0,   272,   115,     0,
    2031       39,   214,   184,   185,    42,     0,     0,   215,     0,     0,
    2032      697,     0,   215,    43,    44,     0,     0,   214,   310,     0,
    2033        0,    81,     0,    59,    59,     0,     0,     0,     0,     0,
    2034        0,     0,   353,   621,     0,     0,     0,   115,     0,  1497,
    2035       79,   410,   214,    68,    59,     0,     0,    47,    48,     0,
    2036      574,   574,     0,     0,   355,     0,     0,   216,   225,    79,
    2037        0,     0,     0,    59,     0,   797,     0,    79,     0,     0,
    2038        0,     0,   706,     0,     0,  1072,    39,     0,   184,   185,
    2039       42,     0,     0,     0,     0,   355,   621,   621,     0,    43,
    2040       44,     0,  1189,     0,   272,   353,     0,   215,   216,   310,
    2041        0,  1086,     0,   355,     0,    79,     0,     0,     0,     0,
    2042      430,   119,   348,   348,     0,   266,     0,     0,     0,     0,
    2043       59,     0,     0,    47,    48,    59,     0,     0,     0,     0,
    2044        0,     0,   115,   872,     0,     0,   526,   875,   353,   353,
    2045      527,   528,   529,     0,     0,   356,     0,   355,     0,     0,
    2046        0,     0,     0,     0,   353,     0,     0,     0,    59,     0,
    2047        0,   214,     0,   590,   530,     0,   531,     0,   532,   533,
    2048        0,     0,   353,     0,     0,     0,   428,   215,     0,     0,
    2049        0,   692,   692,    76,   350,   350,     0,     0,     0,   214,
    2050      267,   526,     0,     0,   214,   527,   528,   529,     0,     0,
    2051        0,     0,  1174,     0,     0,     0,     0,   621,     0,    76,
    2052      355,     0,   353,     0,     0,     0,     0,   216,   215,   530,
    2053        0,   531,     0,   532,  1292,     0,     0,     0,     0,     0,
    2054        0,     0,   115,   348,     0,     0,     0,     0,     0,    81,
    2055        0,     0,   692,   692,    81,   216,     0,   353,     0,     0,
    2056      216,     0,     0,   355,   355,   115,     0,     0,    59,     0,
    2057        0,     0,   115,   214,   115,     0,   115,     0,   574,   355,
    2058        0,     0,     0,     0,     0,     0,     0,   214,     0,     0,
    2059        0,    59,     0,     0,     0,     0,     0,   355,    59,     0,
    2060      353,     0,     0,     0,     0,     0,  1498,     0,    79,     0,
    2061      353,   115,     0,   115,     0,     0,   223,     0,     0,     0,
    2062        0,   353,     0,   706,   115,    88,     0,     0,     0,   216,
    2063     1498,  1498,     0,     0,    79,     0,     0,   355,     0,     0,
    2064      310,     0,     0,   216,     0,     0,     0,   215,   225,     0,
    2065       59,     0,     0,     0,  1356,  1498,     0,     0,     0,    88,
    2066        0,     0,     0,     0,     0,  1271,     0,     0,     0,     0,
    2067        0,     0,   355,     0,     0,   215,     0,     0,   214,     0,
    2068      215,    76,     0,     0,     0,    68,     0,     0,   126,   129,
    2069      130,   412,     0,     0,     0,     0,   226,     0,   692,     0,
    2070      706,     0,     0,   353,   119,     0,     0,     0,     0,     0,
    2071      353,     0,     0,     0,    81,   355,     0,     0,     0,     0,
    2072        0,     0,     0,     0,     0,   355,     0,     0,   356,     0,
    2073        0,   224,     0,    81,   216,   692,   355,     0,     0,     0,
    2074        0,    81,   692,   692,   692,     0,     0,     0,   177,   215,
    2075        0,     0,     0,   350,   350,     0,     0,     0,     0,   356,
    2076      255,     0,   256,   215,     0,  1130,  1174,     0,     0,     0,
    2077        0,     0,     0,     0,     0,     0,     0,   356,     0,    81,
    2078        0,  1141,     0,   363,     0,     0,     0,     0,     0,     0,
    2079        0,     0,     0,     0,     0,     0,    79,   177,     0,   119,
    2080      177,     0,     0,     0,     0,   692,     0,     0,     0,  1471,
    2081        0,  1475,     0,     0,     0,     0,     0,     0,   355,   353,
    2082      353,   356,   353,   353,     0,   355,     0,     0,     0,     0,
     1822      50,   112,    97,   419,    77,   147,   388,   670,   389,   114,
     1823      71,   390,  1020,   148,   391,   149,   797,   392,   722,   837,
     1824     393,   394,   740,   353,  1183,   401,   767,   597,  1184,   257,
     1825    1185,   112,   112,   814,    50,  1370,    97,   706,    77,    52,
     1826     141,   711,   250,  1160,    71,    50,   460,  1022,   592,   796,
     1827     584,    50,  1133,   158,    70,   789,    33,   616,   430,    50,
     1828     790,   620,   374,   375,    50,    33,   189,    50,  1052,   212,
     1829      50,   150,   222,    52,   898,   788,  1188,   208,   215,   791,
     1830     656,   388,   272,   389,  1131,  1132,   390,  1346,    70,   391,
     1831     334,  1278,   392,   464,   466,   393,   394,    33,   151,   665,
     1832     801,    33,   400,   785,   804,    33,    50,   669,   786,    50,
     1833     416,   152,   660,   662,  1432,   122,    50,  1096,    33,    58,
     1834     115,    33,    33,   198,   112,   821,   123,  1163,  1164,   824,
     1835     402,  -240,  -240,   688,   111,   827,   827,   242,   558,   402,
     1836     147,    33,   273,  1452,   165,    50,   282,   158,   148,   465,
     1837     149,   827,   225,    58,   787,   226,  1147,    50,   230,   364,
     1838     232,  1138,  1279,  1223,  1142,    96,   235,   514,   166,   410,
     1839     800,   402,   559,   470,   199,   402,   807,   798,   910,   589,
     1840      50,    50,   710,   158,   689,   695,   206,  1139,  1432,   216,
     1841     805,  1148,   589,   850,   854,   402,   402,    50,   827,    96,
     1842     170,   724,   396,   140,  -240,    50,   150,   158,   785,   460,
     1843     146,   907,  1218,   786,    50,   147,    96,    50,    64,   433,
     1844     965,   142,  1179,   148,   112,   149,  1292,   432,   460,   185,
     1845     144,   941,    96,   151,   112,    96,   460,   112,   106,   106,
     1846     243,    50,   112,    97,   654,    77,   152,   452,  1462,   789,
     1847      77,    71,    64,   964,   790,    50,    50,  1346,   158,   787,
     1848     567,   153,    50,   771,  1346,   112,   568,   368,   503,   952,
     1849     577,   168,   106,   791,  1139,   506,   597,   396,  1521,   776,
     1850      52,  1077,  1133,   369,   828,   828,  1063,  1389,  1390,   225,
     1851     197,   397,   353,   539,   540,    70,   -10,   785,  1436,  1532,
     1852     828,  1314,   786,  1317,  1319,  1228,  1536,    33,   106,  -295,
     1853      96,  1343,   210,   797,  1522,    33,   728,  1346,  1389,  1390,
     1854     823,   584,    96,    50,   968,   364,   584,   378,   658,   539,
     1855     936,    33,   408,  1229,   663,  1133,   431,  1020,    33,   869,
     1856      50,    50,  1537,   379,   541,   387,   185,   828,   787,   160,
     1857     542,   543,   208,   789,    33,   427,   237,    50,   790,  1391,
     1858      58,    50,   210,   800,   539,   435,   397,  1131,  1132,   490,
     1859      96,   629,  1022,   814,   716,   454,   829,   791,   718,  1099,
     1860     720,   402,    96,   721,   240,   353,   725,  1112,   688,   402,
     1861    1401,   846,  1399,   678,   717,    50,  1436,   364,   381,  1079,
     1862    1060,  1436,   210,  1116,   110,   589,    96,  1186,   465,  1478,
     1863    1119,   160,   589,    77,   382,    50,   649,    43,    44,  1080,
     1864     468,    50,  1436,   242,   324,   225,  1362,   230,   402,  1436,
     1865     698,   513,    77,  1345,   491,  1308,   492,   493,   885,   689,
     1866      77,   437,   383,  1094,  1507,   733,  1509,   385,   353,  1212,
     1867    1192,   679,  1192,  1065,   449,  1309,   112,   680,   384,    64,
     1868    1416,    50,   210,   386,   461,   116,  1073,  1133,   460,    50,
     1869    1217,   364,   208,    50,  1417,    97,   945,    77,    50,   106,
     1870     597,   112,   882,    71,   965,  1470,   112,  1471,    96,  1183,
     1871     649,   353,   353,  1184,   210,  1185,   696,  1376,   253,   210,
     1872    1427,   963,   697,   425,    39,   650,   591,   353,    42,  1254,
     1873    1255,  -523,    52,   225,  1503,   156,  1049,    43,    44,   112,
     1874     712,   174,   548,   549,   112,   110,   713,    70,   242,   569,
     1875     838,   402,  1050,   742,   743,   744,  1118,  1121,    43,    44,
     1876    1188,  1463,  1519,    45,     2,   202,     4,     5,     6,     7,
     1877     727,    47,    48,   848,   353,  1464,   728,   550,   551,   425,
     1878     185,  1421,  1422,   817,   858,  1292,   738,   818,   251,   248,
     1879      39,   252,   171,   172,    42,  1491,   667,   156,   688,   650,
     1880    1145,  1496,   819,    43,    44,   -12,   820,   210,    50,   111,
     1881      50,    39,    58,   171,   172,    42,  1146,   678,   963,   160,
     1882    1049,   681,  1517,  1468,    43,    44,  1189,  1524,   317,    50,
     1883    1468,   819,    37,   863,    38,  1059,  1181,   332,  -448,   728,
     1884     432,   278,  1190,   572,    50,   402,   498,   461,   112,   689,
     1885     865,  1130,  1154,   778,    43,    44,   728,    50,    96,   112,
     1886      50,   112,   513,   591,  -449,  -112,   461,   513,  1145,  -112,
     1887     513,    50,   734,  1156,   461,  1189,   268,   739,  1299,  1301,
     1888     507,   584,   370,  1518,  1284,   421,   839,   210,   628,   424,
     1889     270,  1288,    77,   975,  1300,  1302,   429,    -3,   871,   271,
     1890     112,   325,   728,   208,   568,   840,    77,    51,   113,   686,
     1891     110,    64,  1332,    50,    50,    39,  1333,   208,  1349,    42,
     1892    1028,   112,   678,    43,    44,   112,   326,   210,    43,    44,
     1893     930,   106,   678,   678,  1075,   486,   931,   327,   487,   897,
     1894     931,    51,   924,   678,   472,   424,   328,   110,   478,   137,
     1895     443,  1208,   145,   981,   693,   363,   353,   568,    51,  -296,
     1896      43,    44,    47,    48,  1418,   329,     8,     9,    10,    11,
     1897      12,   181,   317,   784,   205,   591,   110,    51,   137,   138,
     1898    1429,   330,  1339,   367,  1123,   156,   444,   688,   728,    43,
     1899      44,   445,   847,  1340,   849,   376,   935,  1358,    33,   728,
     1900    1342,   560,    50,   402,  1210,  1350,   728,   208,  1214,    47,
     1901      48,   728,   113,   380,    50,   544,   545,   576,   398,   861,
     1902     113,   581,   174,   256,   261,  1419,    36,   886,   868,   589,
     1903     400,  1416,   870,   881,   417,    47,    48,   418,   689,   617,
     1904     614,   440,  1437,   621,   618,   546,   547,   210,   728,  1485,
     1905     497,   301,   145,  1489,  1429,  1486,   629,   473,   353,   353,
     1906     113,   337,   112,  1006,   205,  1542,   450,    77,   976,   451,
     1907     715,   568,  -401,    71,   282,   210,   552,   553,   784,   591,
     1908     210,   388,   501,   389,   506,   163,   390,   181,   181,   391,
     1909     517,  1176,   392,   555,    50,   393,   394,   112,   554,  1143,
     1910     556,   317,   317,   557,   256,    39,   461,   171,   172,    42,
     1911     331,    50,    51,   934,   931,  1041,   578,    70,    43,    44,
     1912     461,   242,   324,   402,   205,    -3,   678,   678,   317,   642,
     1913    1066,   324,   402,   689,  1335,  1355,  1356,   112,   210,   643,
     1914     116,   778,   644,   629,   363,   653,   897,   163,    51,   112,
     1915    1389,  1390,   210,   112,  1224,  1225,   261,   209,  1410,   931,
     1916     539,   261,   256,   256,   686,   646,   228,   784,   113,   478,
     1917     647,   317,  1097,   478,   749,   750,   751,   752,   322,   591,
     1918     648,   432,    58,   317,   652,   317,   678,   678,   317,   877,
     1919     317,   317,   410,   645,   402,   301,   470,   324,   402,   503,
     1920     112,  1203,   745,   746,  1043,   747,   748,   209,   301,   655,
     1921    1006,    77,   247,    50,    50,    50,  -373,    71,  -244,   512,
     1922     976,   798,   324,   589,   561,   698,   859,  1271,  1272,  1273,
     1923     145,   701,  1031,     8,     9,    10,    11,    12,   703,   426,
     1924     113,  1067,   210,   112,   337,   753,   754,   209,   590,   608,
     1925     705,   714,   317,    50,   729,    50,   730,    50,   -14,  1042,
     1926     779,    70,   774,   613,   781,    33,   792,   613,   -15,   112,
     1927    1082,   835,   897,   836,  1041,   842,   591,   864,   396,   866,
     1928     878,    64,  1090,  -422,   697,  -527,  1090,  1295,    50,   890,
     1929     911,   816,   813,    36,  1530,   426,    39,   581,   171,   172,
     1930      42,   106,   181,   822,   896,   903,   830,   209,   112,    43,
     1931      44,   905,   908,   909,   897,   915,   917,   918,   110,   845,
     1932     137,   138,   256,   919,   301,   301,    58,   920,   256,   921,
     1933     613,    43,    44,  1090,   928,   163,   983,   938,  1023,   209,
     1934     939,   353,   353,  1158,   209,   940,   954,   955,   659,   661,
     1935     956,   301,   957,   958,   686,   874,   959,   707,  1296,  1032,
     1936     106,  1162,   708,  1043,   960,   112,  -410,   397,   256,  -409,
     1937    1025,   586,  1029,  1053,   897,   897,   256,  1054,   613,  1055,
     1938      51,   478,  1056,  1064,  1074,   694,  1078,  1076,  1006,  1110,
     1939     877,  1081,    77,   678,   113,   923,  1084,  1134,    71,  1135,
     1940    1136,   678,   678,   678,  1137,  1149,   301,    50,   113,  1150,
     1941    1152,   301,  1153,   301,   301,  1161,   210,  1166,  1042,    -9,
     1942    1182,  -445,  1042,   337,   728,    64,    -3,   -11,   649,  1170,
     1943     512,  1172,   209,  1066,  1178,   512,  1199,  1036,   512,  1211,
     1944    1201,  1090,    70,   110,   486,   106,   112,  1204,   112,   112,
     1945    1087,   322,   322,  1088,  1209,  1089,    43,    44,  1216,   944,
     1946    1213,  1219,  1226,   110,  1230,   137,   138,   561,   561,  1232,
     1947    1234,  1235,  -297,  1240,   353,   301,    43,    44,   322,     8,
     1948       9,    10,    11,    12,  1222,   613,   337,  1236,    77,   608,
     1949     761,  1237,  1238,  1247,    71,   590,    39,   590,   171,   172,
     1950      42,  1256,  1414,  1006,   833,  1009,  1257,    58,  1262,    43,
     1951      44,    33,   209,    50,  1265,   613,  1266,   650,  1268,  1269,
     1952     613,   322,   608,  1277,  1282,  1289,   613,  1290,   209,   613,
     1953     613,  1291,  1066,   112,  1041,   367,   139,  1297,  1348,    36,
     1954     322,  1305,  1307,   686,  1067,   613,   388,   256,   389,  1303,
     1955    1310,   390,   209,  1311,   391,  1315,  1033,   392,   256,  1006,
     1956     393,   394,  1006,  1312,  1320,  1322,  1328,  1329,  1330,  1331,
     1957     877,   678,  1042,  1338,  1341,  1351,   215,   208,   113,  1090,
     1958    1352,  1090,  1090,  1273,  1367,   478,  1068,   317,    50,    50,
     1959    1360,  1361,   613,   887,   608,  1373,  1374,   112,   112,  1383,
     1960     694,   694,   322,    58,  1384,  -411,    64,   110,  1502,   897,
     1961    1387,  1398,  1403,  1006,  1087,  1405,  1407,  1088,  1006,  1089,
     1962      43,    44,  1408,  1043,  1423,   897,   106,  1415,   266,  1409,
     1963     432,  1424,   813,   337,  1425,  1428,  1353,   112,   686,  1426,
     1964    1066,  1433,   815,  1067,  1333,  1442,  1444,   586,  1006,   911,
     1965    1438,  1446,  1151,   911,   911,  1440,  1448,  1456,    77,  1450,
     1966    1458,  1479,  1457,   106,    71,    77,  1090,  1481,  1484,  1510,
     1967    1469,    71,   209,   561,  1487,  1155,  1157,  1159,  1042,  1488,
     1968     147,  1495,   613,  1511,   948,  1516,   206,   216,   148,   590,
     1969     149,  1523,  1525,  1512,  1527,    50,   112,   877,   897,   897,
     1970     209,   590,   461,  1533,  1540,   209,   112,  1541,  1348,  1165,
     1971     755,  1006,   756,   759,   757,  1348,  1006,   758,    77,  1086,
     1972      50,    50,   106,   158,    71,  1281,  1490,  1402,  1543,  1215,
     1973    1090,  1090,  1375,  1354,  1472,  1006,   874,  1006,   446,   431,
     1974    1171,  1006,   396,  1034,  1006,  1180,    50,   211,   364,  1366,
     1975     301,  1067,  1006,  1193,   899,  1062,  1006,  1083,   110,   841,
     1976     137,   138,   106,   209,   982,   892,  1298,   649,  1348,   483,
     1977    1454,    43,    44,    58,   337,  1061,   906,   209,   691,   113,
     1978      58,  1037,     0,     0,  1306,     0,   763,    39,   764,   178,
     1979     179,    42,     0,   887,   887,     0,   765,   211,   694,     0,
     1980      43,    44,   265,     0,     0,  1473,   106,  1477,     0,   113,
     1981     301,     0,   210,    67,   117,     0,     2,   202,     4,     5,
     1982       6,     7,     0,   337,     0,     0,   588,     0,   589,  1504,
     1983    1009,   397,     0,    58,    47,    48,     0,   211,   862,  1513,
     1984       0,  -298,  1506,     0,  1508,     0,     0,    67,     8,     9,
     1985      10,    11,    12,     0,     0,   337,   650,     0,     0,     0,
     1986       0,     0,     0,   874,   157,   210,     0,   209,     0,     0,
     1987     106,     0,   461,     0,     0,   630,   613,   613,  1371,   461,
     1988      33,     0,  1371,   217,    37,   468,    38,     0,  1538,  1068,
     1989    1539,     0,   106,     0,   301,     0,     0,   211,   127,   106,
     1990     128,   129,   130,  1546,  1547,     0,     0,     0,    36,     0,
     1991       0,    43,    44,     0,   447,     0,     0,     0,   249,     8,
     1992       9,    10,    11,    12,     8,     9,    10,    11,    12,   211,
     1993       0,     0,   461,     0,   211,     0,     0,   322,     0,     0,
     1994    1037,     0,  1037,   937,  1037,  1359,     0,     0,     0,     0,
     1995       0,    33,   106,   942,   943,   159,    33,     0,   323,   113,
     1996       0,  1476,     0,  1476,   953,   887,   249,   342,   190,     0,
     1997       0,   213,     0,     0,   223,   256,     0,    75,     0,    36,
     1998       0,     0,   815,     0,    36,   700,     0,   518,  1068,  1453,
     1999     709,   519,   520,   521,   395,     0,     0,     0,  1476,     0,
     2000    1476,  1388,     0,     0,  1396,     0,     0,     0,     0,     0,
     2001     415,    75,   337,   420,   422,   522,     0,   523,   157,   524,
     2002     525,     0,   211,   560,     0,   402,     0,     0,   886,     0,
     2003     589,    47,    48,     0,     0,     0,    47,    48,     0,   438,
     2004       0,   209,     0,   441,   404,   442,     0,   218,   448,   159,
     2005    1413,   412,     0,     0,    67,  1435,     0,     0,    39,   462,
     2006    1439,   365,    42,     0,     0,     0,     0,     0,     0,   469,
     2007       0,    43,    44,     0,     0,   301,     0,   422,     0,     0,
     2008    1260,  1261,     0,  1263,     0,   159,   113,     0,     0,  1267,
     2009    1461,     0,  1270,     0,  1037,     0,  1068,   782,     0,   589,
     2010       0,     0,   211,     0,     0,    47,    48,   613,     0,   159,
     2011       0,    39,   113,   171,   172,    42,     0,   404,     0,     0,
     2012       0,   434,     0,     0,    43,    44,     0,  1475,     0,  1475,
     2013       0,   345,   834,     0,     2,   202,     4,     5,     6,     7,
     2014       0,     0,   211,     0,     0,     0,   249,  1128,  1129,     0,
     2015     582,     0,     0,     0,     0,     0,   610,     0,     0,   613,
     2016     613,     0,     0,     0,  1475,   224,  1475,     0,     0,   615,
     2017       0,   301,     0,   615,     0,     0,   566,  1531,    39,     0,
     2018     178,   179,    42,  1531,     0,   570,     0,     0,   573,     0,
     2019       0,    43,    44,     0,  1531,   317,     0,     0,  1531,     0,
     2020    1037,     0,    37,   439,    38,   895,     0,  1174,  1175,   483,
     2021       0,   113,     0,     0,     0,     0,     0,  1035,    75,   402,
     2022       0,     0,   462,    75,     0,    47,    48,   365,     0,     0,
     2023       0,     0,     0,     0,     0,     0,   342,     0,  1036,     0,
     2024       0,   462,     0,     0,     0,     0,   404,     0,     0,   462,
     2025     412,     0,     0,     0,   261,   113,     0,    39,     0,   178,
     2026     179,    42,   211,     0,     0,     0,   673,     0,     0,   422,
     2027      43,    44,  1395,     0,     0,    39,   256,   178,   179,    42,
     2028       0,     0,     0,     0,   687,     0,    67,     0,    43,    44,
     2029     211,     0,   613,     0,     0,   211,   180,     0,   422,   365,
     2030      78,     0,   422,     0,    47,    48,     0,   261,     0,     0,
     2031       0,     0,     0,     0,  1035,     0,   402,     0,   110,   113,
     2032     218,     0,    47,    48,     0,  1087,     0,   404,  1088,   342,
     2033    1089,    43,    44,   518,    78,     0,     0,   519,   520,   521,
     2034     630,   113,     0,     0,   110,     0,   986,     0,   113,     0,
     2035     113,  1087,   113,   211,  1088,     0,  1089,    43,    44,  1316,
     2036       0,   522,     0,   523,     0,   524,  1280,   211,     0,     0,
     2037     219,     0,    59,    59,   766,     0,     0,     0,     0,     0,
     2038       0,  1051,  1501,     0,     0,  1318,    75,   113,     0,   113,
     2039       0,   615,   777,     0,     0,     0,     0,     0,     0,     0,
     2040     345,   113,     0,   794,     0,    75,    59,  1501,  1501,     0,
     2041       0,     0,     0,    75,  1321,     0,     0,     0,   301,   566,
     2042     566,   582,  1323,  1324,  1325,     0,   582,   630,     0,    80,
     2043     345,     0,   615,  1501,     0,   342,   342,   209,     0,    59,
     2044       0,     0,    59,     0,     0,     0,     0,     0,   345,     0,
     2045      75,   342,     0,     0,   347,     0,     0,   211,     0,     0,
     2046       0,     0,     0,    80,     8,     9,    10,    11,    12,     0,
     2047     673,     0,    39,     0,   178,   179,    42,     0,     0,     0,
     2048       0,   462,     0,     0,     0,    43,    44,     0,     0,     0,
     2049     209,     0,     0,   345,     0,   462,    33,     0,   342,   220,
     2050       0,   852,     0,     0,     0,   856,     0,   891,     0,     0,
     2051     422,  1500,     0,   402,     0,     0,     0,     0,     0,    47,
     2052      48,     0,     0,     0,    36,     0,   340,   986,     0,    39,
     2053       0,   178,   179,    42,    39,     0,   178,   179,    42,   687,
     2054       0,    78,    43,    44,     0,   322,    78,    43,    44,     0,
     2055       0,     0,     0,  1196,     0,     0,   345,     0,     0,     0,
     2056       0,     8,     9,    10,    11,    12,     0,     0,   588,     0,
     2057     589,     0,     0,   255,     0,   673,    47,    48,     0,     0,
     2058       0,    47,    48,   348,     0,   673,   673,     0,   615,    59,
     2059       0,   951,  1451,    33,     0,     0,   673,     0,     0,   345,
     2060     345,     0,     0,     0,     0,     0,   962,     0,     0,     0,
     2061       0,     0,     0,    59,     0,   345,     0,     0,     0,     0,
     2062       0,    36,     0,     0,     0,   566,    39,     0,   178,   179,
     2063      42,   211,     0,     0,   345,     0,     0,     0,     0,    43,
     2064      44,     0,     0,   219,     0,    75,     0,     0,     0,  1259,
     2065       0,     0,     0,     0,     0,     0,    67,     0,     0,    75,
     2066       0,     0,   345,     0,     0,  1035,     0,   402,     0,     0,
     2067      80,     0,     0,    47,    48,    80,     0,     0,     0,     0,
     2068     777,     0,   526,   527,   528,   529,   530,   531,   532,   533,
     2069     534,   535,   536,     0,     0,     0,     0,     0,     0,     0,
     2070    1058,     0,     0,   345,     0,     0,     0,     0,     0,    78,
     2071       0,     0,     0,     0,   422,   117,   537,     0,     0,     0,
     2072       0,     0,     0,   347,     0,     0,     0,     0,    78,   687,
     2073       0,     0,     0,     0,     0,     0,    78,     0,     0,   345,
     2074       0,     0,     0,     0,     0,     0,     0,     0,     0,   345,
     2075     345,     0,     0,   347,     0,   218,     0,     0,     0,     0,
     2076     345,   582,     0,     0,     8,     9,    10,    11,    12,     0,
     2077       0,   347,   220,    78,   420,     0,     0,     0,     0,   673,
     2078     673,     0,   342,   342,     0,     0,     0,     0,     0,     0,
     2079       0,     0,     0,     0,     0,   340,    33,  1101,     0,     0,
     2080      67,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2081       0,     0,     0,  1114,     0,     0,   347,     0,     0,     0,
     2082      75,     0,    86,     0,    36,   173,     0,     0,     0,    39,
     2083       0,   178,   179,    42,    33,     0,     0,     0,    80,   673,
     2084     673,     0,    43,    44,   345,    59,     0,     0,     0,     0,
     2085    1187,     0,   348,     0,     0,     0,    86,    80,     0,     0,
     2086       0,     0,    36,     0,     0,    80,     0,    39,   180,     0,
     2087     124,    42,   173,     0,     0,   173,    47,    48,     0,   347,
     2088      43,    44,   348,     0,     0,     0,     0,     0,   340,     0,
     2089       0,     0,   221,   345,     8,     9,    10,    11,    12,     0,
     2090     348,   404,    80,     0,     0,     0,    45,     0,     0,     0,
     2091       0,     0,     0,     0,    47,    48,     0,     0,   687,     0,
     2092       0,     0,   347,   347,     0,   234,    33,     0,     0,     0,
     2093       0,     0,     0,     0,     0,     0,     0,     0,   347,     0,
     2094     244,     0,   245,   345,   345,   348,   345,   345,     0,     0,
     2095       0,   340,     0,     0,    36,     0,     0,   347,     0,    39,
     2096       0,   178,   179,    42,    75,     0,     0,     0,    78,     0,
     2097       0,     0,    43,    44,     0,     0,   355,     0,     0,     0,
     2098     173,    67,    78,     0,     0,   347,     0,     0,     0,     0,
     2099       0,     0,     0,     0,   340,   340,     0,     0,  1500,     0,
     2100     402,     0,     0,   345,   345,     0,    47,    48,   348,     0,
     2101     340,   673,     0,   687,     0,     0,     0,     0,   117,     0,
     2102       0,     0,     0,     0,     0,     0,   347,   211,   173,   406,
     2103     407,     0,     0,     0,   411,     0,   413,   414,     0,     0,
     2104       0,   404,     0,     0,     0,     0,   673,     0,     0,     0,
     2105       0,   348,   348,     0,   673,   673,   673,   340,     0,     0,
     2106       0,     0,   347,    86,     0,   342,   342,   348,    86,     0,
     2107       0,     0,   347,   347,     0,     0,     0,  1347,   219,     0,
     2108     211,     0,   345,   347,     0,     0,   348,     0,     0,     0,
     2109       0,     0,     0,     0,     0,     0,     0,    80,     0,     0,
     2110       0,     0,     0,     0,     0,     0,   173,     0,     0,     0,
     2111       0,    80,     0,     0,   348,     0,     0,   117,     0,     0,
     2112       0,     0,     0,   173,     0,     0,     0,   173,     0,     0,
     2113       8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
     2114       0,     0,     0,    78,     0,    75,     0,     0,  1364,     0,
     2115       0,     0,     0,     0,     0,   348,     0,     0,     0,     0,
     2116       0,  1400,    33,     0,     0,   221,     0,   347,     0,     0,
     2117       0,     0,     0,     0,     0,   345,     0,   345,     0,     0,
    20832118       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2084       76,     0,   395,     0,     0,     0,  1503,     0,  1505,     0,
    2085        0,     0,   414,   415,   215,     0,     0,   419,     0,   421,
    2086      422,     0,   412,     0,     0,     0,     0,   214,     0,     0,
    2087        0,     0,     0,     0,   350,     0,     0,    88,     0,     0,
    2088      353,   353,    88,     0,   356,     0,     0,     0,     0,     0,
    2089     1534,     0,  1535,     0,     0,     0,     0,     0,     0,   119,
    2090        0,  1227,     0,     0,     0,  1542,  1543,     0,   177,     0,
     2119      36,   348,     0,     0,     0,    39,     0,     0,   342,    42,
     2120       0,   348,   348,     0,     0,     0,     0,   220,    43,    44,
     2121     345,     0,   348,     0,     0,    59,   347,     0,   345,   345,
     2122     345,     0,     0,     0,   673,   117,     0,     0,     0,   345,
     2123     345,    86,     0,     0,   693,     0,     0,     0,     0,   340,
     2124     651,    75,    47,    48,     0,   355,     0,  1347,     0,     0,
     2125      86,     0,     0,     0,  1347,   164,     0,   169,    86,     0,
     2126     175,   176,   177,     0,     0,     0,   347,   347,     0,   347,
     2127     347,     0,    80,     0,    59,   355,     0,   229,     0,     8,
     2128       9,    10,    11,    12,     0,     0,     0,    78,   238,   239,
     2129       0,     0,     0,   355,     0,    86,   348,     0,     0,     0,
     2130       0,     0,     0,     0,     0,     0,     0,  1347,     0,     0,
     2131       0,    33,     0,     0,  1526,     0,     0,     0,     0,     0,
     2132       0,     0,     0,     0,     0,   218,   347,   347,     0,     0,
     2133       0,     0,     0,     0,     0,     0,     0,     0,   355,    36,
     2134       0,   340,   340,     0,    39,   348,   178,   179,    42,     0,
     2135       0,     0,     0,     0,     0,     0,     0,    43,    44,    59,
     2136       0,     0,   345,     0,     0,     0,     0,     0,     0,     0,
     2137       0,     0,     0,     0,     0,   173,     0,     0,     0,     0,
     2138       0,     0,   399,   255,     0,     0,     0,     0,   345,     0,
     2139     173,    47,    48,     0,     0,   348,   348,     0,   348,   348,
     2140       0,   355,     0,   173,     0,   347,   768,   769,     0,     0,
     2141       0,    75,     0,     0,     0,     0,    80,     0,    75,     0,
    20912142       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2092        0,     0,  1174,   216,     0,     0,     0,   356,   356,  1174,
    2093        0,     0,     0,     0,   355,   355,     0,   355,   355,     0,
     2143       0,     0,     0,   799,     0,     0,   802,   803,     0,   806,
     2144       0,   808,   809,     0,   355,   355,   810,   811,     0,     0,
     2145       0,     0,     0,     0,     0,   348,   348,     0,     0,     0,
     2146     355,     0,     0,     0,     0,     0,     0,     0,    78,     0,
     2147       0,    75,     0,     0,     0,     0,     0,     0,     0,   355,
     2148       0,     0,     0,     0,   851,     0,     0,     0,   855,     0,
     2149      86,     0,     0,     0,     0,     0,     0,     0,   347,     0,
     2150     347,     0,     0,     0,    86,     0,     0,   355,     0,     0,
     2151       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2152      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2153      25,    26,    27,   347,   348,     0,   580,     0,   587,     0,
     2154      59,   347,   347,   347,     0,    33,     0,     0,   355,   611,
     2155     612,     0,   347,   347,     0,     0,     0,     0,     0,     0,
     2156       0,     0,     0,     0,    78,     0,     0,     0,     0,   274,
     2157     275,     0,   276,    36,     0,     0,     0,    59,     0,     0,
     2158       0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
     2159       0,     0,     0,     0,   355,   355,     0,    80,   277,     0,
     2160     221,     0,     0,     0,   278,   355,     0,     0,   279,   173,
     2161       0,   280,   281,   282,   283,   284,   285,    43,    44,     0,
     2162     286,   287,     0,     0,   340,   340,     0,   348,     0,   348,
     2163       0,     0,     0,     0,     0,     0,    59,     0,     0,     0,
     2164       0,     0,     0,   288,     0,   370,     0,     0,   219,     0,
     2165       0,    47,    48,   290,   291,   292,   293,     0,     0,     0,
     2166       0,     0,   348,     0,   760,    86,     0,     0,     0,     0,
     2167     348,   348,   348,     0,     0,     0,    59,     0,     0,     0,
     2168       0,   348,   348,     0,     0,   347,     0,     0,     0,   355,
     2169       0,     0,     0,    80,     0,     0,     0,     0,     0,     0,
     2170       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2171       0,   347,     0,     0,     0,     0,     0,     0,     0,    59,
     2172      59,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2173       0,     0,     0,     0,    78,     0,     0,     0,   355,     0,
     2174       0,    78,     0,     0,     0,     0,     0,     0,     0,     0,
     2175       0,     0,     0,     0,     0,     0,   173,   340,     0,   173,
     2176     173,   173,     0,     0,     0,     0,     0,     0,     0,     0,
     2177       0,     0,    59,     0,     0,     0,     0,   220,     0,     0,
     2178    1100,     0,     0,     0,    59,     0,     0,     0,   355,   355,
     2179       0,   355,   355,     0,    78,     0,  1113,     0,     0,  1117,
     2180    1120,     0,     0,     0,     0,     0,    59,     0,     0,    86,
     2181       0,     0,     0,    59,   348,     8,     9,    10,    11,    12,
     2182      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2183      23,    24,    25,    26,    27,  -299,     0,     0,     0,     0,
     2184     348,     0,     0,     0,     0,     0,     0,    33,   355,   355,
     2185       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2186       0,     0,     0,    80,     0,     0,    59,     0,     0,     0,
     2187      80,  1177,     0,     0,   879,    36,   880,     0,     0,     0,
     2188       0,     0,     0,   883,   884,     0,  -299,     0,   889,  1194,
     2189    1195,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2190       0,     0,     0,     0,     0,     0,   900,     0,     0,     0,
     2191       0,   904,     0,     0,     0,     0,     0,     0,     0,     0,
     2192       0,     0,     0,    80,     0,     0,     0,   355,     0,     0,
     2193       0,     0,   587,     0,   173,     0,     0,     0,     0,     0,
     2194       0,     0,     0,     0,     0,   162,     0,     0,     0,     0,
     2195     274,   275,  1117,   276,     0,     0,     0,     0,     0,     0,
     2196       0,   214,     0,     0,     0,     0,     0,     0,     0,     0,
     2197       0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
     2198       0,     0,     0,     0,     0,   278,     0,     0,     0,   279,
     2199      86,     0,   280,   281,   282,   283,   284,   285,    43,    44,
     2200       0,   286,   287,     0,     0,     0,     0,   162,     0,     0,
     2201       0,   262,  1283,     0,     0,     0,     0,     0,     0,     0,
     2202     355,     0,   355,     0,   288,   971,   370,   972,   973,   974,
     2203       0,  1293,    47,    48,   290,   291,   292,   293,   162,     0,
     2204       0,     0,     0,     0,     0,     0,  1024,     0,   361,   173,
     2205       0,   366,     0,     0,     0,   355,     0,     0,     0,     0,
     2206       0,     0,  1030,   355,   355,   355,     0,     0,     0,     0,
     2207       0,     0,     0,     0,   355,   355,     0,     0,     0,     0,
     2208       0,     0,     0,     0,     0,  1057,    86,     0,     0,     0,
     2209       0,     0,     0,     0,     0,     0,     0,     0,     0,   162,
     2210       0,     0,     0,     0,     0,   173,     0,     0,   173,     0,
     2211       0,   214,     0,     0,     0,     0,     0,     0,     0,     0,
     2212       0,     0,     0,     0,     0,     0,     0,  1085,     0,     0,
     2213       0,  1363,  1095,     0,   173,     0,     0,  1098,     0,     0,
     2214       0,     0,  1103,  1104,     0,     0,     0,  1106,   366,  1107,
     2215    1108,     0,     0,  1111,     0,   162,     0,     0,     0,   173,
     2216       0,     0,  1126,     0,   173,     0,     0,     0,     0,     0,
     2217     221,     0,     0,     0,     0,     0,     0,     0,  1140,  1141,
     2218       0,     0,   515,     0,     0,     0,     0,     0,     0,     0,
     2219       0,     0,     0,     0,   173,   162,     0,     0,     0,     0,
     2220       0,     0,     0,     0,     0,     0,     0,   355,     0,  1167,
     2221       0,     0,  1169,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2223       0,   585,     0,   355,     0,     0,   609,     0,     0,     0,
     2224       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2225       0,     0,     0,     0,     0,     0,    86,   173,     0,     0,
     2226       0,     0,   173,    86,     0,  1202,     0,     0,     0,     0,
     2227       0,  1206,  1207,     0,     0,     0,     0,     0,     0,     0,
     2228       0,   173,     0,   173,     0,     0,  1220,   173,     0,     0,
     2229     173,  1227,     0,     0,     0,     0,  1231,     0,   173,     0,
     2230       0,     0,   173,     0,     0,     0,     0,     0,     0,  1239,
     2231       0,   162,   162,     0,     0,     0,    86,   361,     0,     0,
     2232       0,     0,     0,     0,     0,  1246,     0,  1248,  1249,  1250,
     2233    1251,     0,     0,     0,     0,     0,     0,     0,   162,     0,
     2234       0,     0,  1258,     0,  1140,     0,     0,     0,     0,     0,
     2235       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2236       0,     0,     0,     0,     0,   690,     0,     0,     0,     0,
     2237       0,     0,     0,     0,  1285,  1286,     0,   207,     0,     0,
     2238       0,   162,     0,     0,     0,     0,   227,     0,   231,     0,
     2239     233,     0,     0,   515,     0,   515,   236,     0,   515,     0,
     2240     162,   515,     0,     0,     0,     0,     0,     0,     0,     0,
     2241     361,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2242       0,     0,     0,     0,     0,     0,     0,   207,     0,   231,
     2243     233,   236,     0,     0,     0,     0,     0,     0,     0,     0,
     2244       0,     0,     0,     0,  1326,  1327,     0,     0,     0,     0,
     2245       0,     0,     0,     0,  1337,     0,     0,     0,     0,     0,
     2246       0,     0,   162,     0,     0,     0,     0,   207,     0,     0,
     2247       0,     0,     0,   361,     0,     0,   780,     0,     0,     0,
     2248       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2249      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2250      26,    27,   585,     0,    28,    29,    30,   585,     0,     0,
     2251       0,     0,     0,     0,    33,     0,   361,   361,     0,     0,
     2252       0,  1379,     0,  1380,  1381,  1382,     0,   207,     0,   231,
     2253     233,   236,   361,     0,     0,  1386,     0,     0,     0,     0,
     2254       0,     0,    36,  1397,     0,     0,   169,    39,     0,    40,
     2255      41,    42,     0,     0,     0,     0,     0,     0,     0,   207,
     2256      43,    44,     0,     0,   207,   515,     0,     0,     0,     0,
     2257       0,     0,     0,     0,     0,     0,  1420,     0,     0,   361,
     2258       0,   888,     0,     0,     0,     0,    45,     0,    46,     0,
     2259       0,     0,     0,     0,    47,    48,     8,     9,    10,    11,
     2260      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2261      22,    23,    24,    25,    26,    27,  -300,   126,     0,     0,
     2262     690,  1459,  1460,     0,     0,     0,     0,     0,    33,     0,
     2263       0,     0,     0,   207,  1465,     0,     0,     0,   154,     0,
     2264       0,  1465,     0,     0,     0,     0,     0,     0,     0,     0,
     2265       0,  1483,   207,     0,     0,     0,    36,   231,   233,     0,
     2266       0,     0,     0,     0,     0,   236,     0,  -300,     0,     0,
     2267       0,   609,   126,     0,  1499,     0,     0,     0,  1505,     0,
     2268       0,     0,     0,   241,     0,     0,     0,   126,     0,   126,
     2269       0,     0,     0,   246,     0,     0,     0,     0,     0,     0,
     2270       0,     0,     0,     0,     0,   207,     0,  1528,     0,  1529,
     2271       0,     0,     0,     0,   267,     0,     0,     0,     0,     0,
     2272       0,     0,     0,     0,     0,   207,     0,     0,     0,     0,
     2273     207,     0,   207,     0,     0,     0,     0,     0,  1544,  1545,
     2274       0,     0,     0,     0,     0,     0,  1548,  1549,   207,     0,
     2275       0,   207,   207,     0,     0,     0,     0,     0,   207,     0,
     2276     377,   361,     0,     0,     0,     0,   515,     0,     0,     0,
     2277       0,     0,   207,     0,   126,     0,   126,   126,     0,   207,
     2278       0,   126,   409,   126,   126,     0,     0,     0,     0,     0,
     2279       0,     0,     0,     0,     0,     0,   423,   162,     0,     0,
     2280       0,     0,     0,     0,     0,   428,     0,     0,     0,     0,
     2281     690,     0,     0,     0,     0,   436,     0,     0,     0,     0,
     2282       0,   961,     0,     0,     8,     9,    10,    11,    12,     0,
     2283       0,     0,     0,     0,   453,     0,     0,     0,     0,   463,
     2284       0,     0,   585,     0,     0,     0,     0,   126,     0,     0,
     2285       0,     0,   471,     0,   274,   275,    33,   276,     0,     0,
     2286     485,     0,   489,   361,   361,     0,     0,     0,     0,     0,
     2287       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2288       0,   516,     0,   277,    36,     0,     0,     0,     0,   278,
     2289       0,     0,   207,   279,     0,     0,   280,   281,   282,   283,
     2290     284,   285,    43,    44,     0,   286,   287,     0,     0,     0,
     2291       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2292     207,     0,     0,   575,     0,   207,     0,   579,   288,     0,
     2293     370,     0,     0,     0,     0,     0,   336,    48,   290,   291,
     2294     292,   293,     0,     0,     0,     0,   515,     0,     0,     0,
     2295       0,     0,     0,     0,     0,   622,     0,     0,     0,   623,
     2296     624,     0,   625,     0,     0,     0,     0,     0,     0,   636,
     2297     637,     0,   638,   639,     0,   640,     0,   641,     0,     0,
     2298       0,     0,     0,   207,     0,     0,     0,   126,     0,     0,
     2299       0,     0,     0,     0,   575,     0,     0,   207,     0,   690,
     2300       0,     0,   657,     0,     0,     0,     0,     0,     0,     0,
     2301       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2302       0,     0,     0,     0,     0,     0,   668,     0,     0,     0,
     2303       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2304     333,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2305       0,   682,     0,     0,     0,     0,     0,   685,     0,     0,
     2306       0,     0,   453,     0,     0,     0,     0,     0,     0,     0,
     2307       0,     0,   405,   515,     0,     0,   207,     0,     0,   405,
     2308       0,     0,     0,     0,     0,     0,     0,   207,     0,   274,
     2309     275,     0,   276,     0,   690,     0,     0,     0,     0,     0,
     2310       0,     0,   726,     0,   207,     0,     0,     0,     0,     0,
     2311       0,     0,     0,     0,     0,   737,     0,     0,   277,     0,
     2312       0,     0,     0,     0,   626,     0,   137,   138,   279,     0,
     2313       0,   280,   281,   282,   283,   284,   285,    43,    44,     0,
     2314     286,   287,     0,     0,     0,   405,   361,   361,     0,     0,
     2315       0,     0,   762,   126,   126,     0,     0,     0,     0,     0,
     2316       0,   772,     0,   288,   773,   627,     0,   628,   371,     0,
     2317       0,    47,    48,   290,   291,   292,   293,     0,     0,     0,
     2318     126,   793,     0,   126,   126,     0,   126,     0,   126,   126,
     2319       0,     0,     0,   126,   126,     0,     0,     0,     0,     0,
     2320       0,   207,     0,     0,   405,     0,     0,     0,     0,     0,
     2321       0,     0,     0,   405,   571,     0,   405,   574,     0,   832,
     2322       0,     0,     0,     0,   356,     0,     0,     0,   601,     0,
     2323       0,   126,     0,     0,     0,   126,     0,     0,     0,     0,
     2324       0,   214,     0,     0,     0,     0,     0,   619,     0,     0,
     2325       0,     0,     0,     0,     0,     0,   867,     0,     0,     0,
     2326       0,   207,     0,     0,     0,     0,     0,     0,     0,     0,
     2327       0,     0,   207,     0,   405,     0,     0,     0,   405,   361,
     2328       0,     0,     0,   241,     0,     0,     0,     0,     0,     0,
     2329       0,     0,     0,     0,   214,     0,     0,     0,     0,   901,
     2330     902,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2331     356,   916,     0,     0,     0,     0,     0,     0,     0,     0,
     2332       0,     0,     0,     0,     0,   929,     0,     0,     0,     0,
     2333     933,     0,     0,     0,     0,     0,     0,   515,     0,   515,
     2334       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2335       0,     0,     0,     0,     0,   405,     0,     0,   356,     0,
     2336       0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
     2337       0,     0,     0,     0,   515,     0,   515,     0,     0,     0,
     2338       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2339     966,     0,     0,     0,     0,     0,     0,   967,     0,     0,
     2340       0,     0,     0,   356,     0,   162,     0,     0,     0,     0,
     2341     969,     0,   970,     0,     0,     0,     0,     0,     0,     0,
     2342       0,     0,     0,     0,     0,   980,     0,     0,     0,     0,
     2343       0,   984,     0,     0,     0,     0,     0,     0,     0,     0,
     2344       0,     0,  1026,     0,     0,     0,  1027,   405,   405,   315,
     2345       0,     0,     0,     0,     0,     0,     0,     0,     0,   338,
     2346       0,     0,     0,     0,     0,   775,   356,     0,     0,     0,
     2347     373,   373,     0,     0,     0,   601,     0,   601,   601,     0,
     2348       0,     0,     0,     0,   601,     0,     0,     0,     0,     0,
     2349       0,     0,     0,     0,   812,   356,     0,   207,     0,     0,
     2350     356,     0,     0,     0,     0,     0,     0,     0,     0,   356,
     2351     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2352       0,     0,     0,     0,     0,   356,     0,   126,     0,   405,
     2353     853,     0,     0,   405,   857,     0,     0,     0,  1105,     0,
     2354       0,     0,   860,   126,     0,     0,   126,   126,     0,     0,
     2355       0,     0,     0,     0,     0,     0,     0,     0,   467,     0,
     2356       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2357       0,     0,   356,   601,     8,     9,    10,    11,    12,    13,
     2358      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2359      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
     2360       0,     0,     0,     0,  1168,     0,    33,   872,     0,     0,
     2361       0,     0,     0,   356,     0,     0,     0,     0,   126,     0,
     2362       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2363       0,   126,     0,     0,    36,     0,   126,   126,     0,     0,
     2364       0,    40,    41,     0,     0,     0,  1198,     0,     0,     0,
     2365       0,  1200,     0,   405,     0,     0,     0,   207,     0,     0,
     2366       0,  1205,     0,     0,     0,     0,     0,     0,     0,   601,
     2367       0,   601,     0,     0,     0,     0,   373,     0,     0,     0,
     2368     719,   601,     0,     0,   873,     0,    47,    48,     0,     0,
     2369       0,  1233,     0,     0,     0,     0,     0,     0,     0,   126,
     2370       0,     0,     0,     0,  1241,     0,     0,     0,  1242,     0,
     2371     207,  1243,     0,     0,     0,     0,     0,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,     0,  1252,  1253,     0,
     2373       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2374       0,     0,     0,     0,     0,  1264,     0,     0,     0,   315,
     2375       0,     0,     0,     0,   356,     0,     0,     0,     0,   126,
     2376       0,   405,     0,     0,     0,     0,     0,     0,   684,     0,
     2377       0,     0,     0,   601,   601,     0,     0,     0,   126,     0,
     2378       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2379       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    20942380       0,     0,     0,   356,     0,     0,     0,     0,     0,     0,
    2095        0,   353,     0,     0,     0,    79,     0,     0,     0,     0,
    2096        0,   356,   177,     0,     0,     0,     0,     0,     0,     0,
    2097        0,     0,    81,     0,     0,     0,   226,     0,     0,     0,
    2098        0,  1174,     0,     0,     0,   168,     0,   173,  1522,     0,
    2099      179,   180,   181,   223,   183,   355,   355,     0,    81,     0,
    2100        0,   356,     0,     0,     0,     0,     0,     0,   234,     0,
    2101        0,     0,     0,    76,     0,     0,     0,     0,     0,     0,
    2102      249,   250,     0,     0,     0,     0,   353,     0,   353,     0,
    2103        0,     0,     0,     0,     0,     0,   356,   177,     0,     0,
    2104        0,     0,    88,   215,     0,     0,     0,     0,     0,     0,
    2105        0,     0,     0,     0,   177,   214,   363,     0,   177,     0,
    2106        0,    88,     0,   353,     0,     0,   355,     0,     0,    88,
    2107      353,   353,   353,     0,     0,     0,     0,     0,     0,   356,
    2108        0,   353,   353,     0,     0,     0,     0,   363,     0,   356,
    2109        0,     0,     0,     0,    76,   225,     0,     0,     0,     0,
    2110      356,     0,     0,     0,     0,   363,     0,    88,   224,     0,
    2111        0,   216,     8,     9,    10,    11,    12,     0,     0,     0,
    2112        0,   128,   128,   128,     0,     0,     0,     0,    79,     0,
    2113        0,     0,     0,   353,     0,     0,     0,     0,     0,     0,
    2114        0,   355,     0,   355,    33,     0,     0,     0,     0,   363,
    2115        0,     0,   214,     0,     0,     0,     0,     0,     0,     0,
    2116       81,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2117        0,     0,    36,     0,     0,     0,     0,    39,   355,   184,
    2118      185,    42,   356,     0,     0,   355,   355,   355,     0,   356,
    2119       43,    44,     0,   128,     0,   128,   355,   355,     0,     0,
    2120        0,     0,   353,     0,     0,     0,     0,     0,   216,    79,
    2121        0,     0,   363,     0,     0,     0,   596,     0,   597,     0,
    2122      276,     0,     0,     0,    47,    48,     0,     0,     0,     0,
    2123        0,   215,   788,   789,     0,     0,     0,     0,     0,     0,
    2124        0,     0,     0,     0,     0,     0,     0,     0,   355,     0,
    2125       76,     0,     0,     0,     0,   363,   363,    76,     0,   819,
    2126        0,     0,   822,   823,     0,   826,     0,   828,   829,     0,
    2127        0,   363,   830,   831,   588,   128,   595,     0,     0,     0,
    2128        0,     0,     0,   128,     0,   128,   128,   619,   620,   363,
    2129      128,     0,   128,   128,     0,     0,     0,     0,   356,   356,
    2130       88,   356,   356,     0,     0,     0,   177,     0,     0,    76,
    2131        0,     0,     0,     0,     0,     0,     0,   355,     0,    81,
    2132        0,   177,     0,     0,     0,     0,    88,     0,   215,   363,
    2133        0,     0,     0,     0,   177,     0,     0,     0,     0,     0,
    2134        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2135        0,     0,     0,     0,     0,     0,     0,     0,     0,   356,
    2136      356,     0,   128,     0,   363,    79,     0,     0,     0,     0,
    2137        0,     0,    79,     0,     1,     2,   207,     4,     5,     6,
     2381       0,   723,     0,     0,  1313,     0,     0,     0,     0,     0,
     2382       0,   732,     0,     0,     0,   405,  1102,   723,     0,     0,
     2383     723,     0,     0,     0,     0,   356,   207,   500,     0,   502,
     2384     505,   405,  1115,   741,   601,   601,  1122,     0,     0,   508,
     2385     509,     0,     0,     0,     0,     0,   356,   356,     0,     0,
     2386       0,     0,     0,     0,   502,   502,     0,     0,     0,     0,
     2387       0,     0,     0,   770,     0,     0,     0,     0,   126,     0,
     2388     338,     0,     0,     0,   732,     0,     0,     0,     0,     0,
     2389       0,  1368,     0,  1369,     0,     0,     0,     0,     0,     0,
     2390     502,     0,     0,     0,     0,     0,     0,     0,  1377,     0,
     2391    1378,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2392     405,     0,   405,     0,   405,  1385,     0,     0,     0,   405,
     2393     831,     0,     0,     0,     0,   502,     0,     0,   373,     0,
     2394       0,     0,     0,  1404,  1406,   601,     0,     0,     0,     0,
     2395       0,     0,     0,     0,  1411,     0,     0,     0,     0,  1412,
     2396       0,     0,  1205,     0,     0,     0,     0,     0,     0,     0,
     2397       0,     0,     0,     0,     0,     0,     0,     0,   274,   275,
     2398       0,   276,     0,  1434,     0,     0,     0,     0,     0,     0,
     2399       0,     0,   356,  1441,     0,     0,  1443,     0,  1445,  1447,
     2400    1449,     0,     0,   893,     0,     0,     0,   277,     0,     0,
     2401       0,     0,     0,   278,     0,     0,     0,   279,     0,   723,
     2402     280,   281,   282,   283,   284,   285,    43,    44,     0,   286,
     2403     287,   732,     0,   922,     0,     0,   925,     0,     0,  1480,
     2404       0,  1482,   932,     0,  1205,     0,     0,     0,     0,     0,
     2405       0,     0,   288,     0,   370,     0,     0,   371,     0,  1494,
     2406      47,    48,   290,   291,   292,   293,     0,     0,     0,   405,
     2407       0,     0,     0,     0,   405,     0,     0,     0,     0,     0,
     2408       0,     0,   949,   950,     0,     0,     0,   356,     0,     0,
     2409       0,     0,     0,     0,     0,     0,     0,     0,   338,     0,
     2410       0,     0,     0,     0,   502,   502,   502,   502,   502,   502,
     2411     502,   502,   502,   502,   502,   502,   502,   502,   502,   502,
     2412     502,   502,     0,     0,     0,     0,     0,     0,     0,     0,
     2413       0,     0,     0,     0,     0,     0,     0,   978,     0,   356,
     2414     356,   373,     0,     0,   201,     2,   202,     4,     5,     6,
    21382415       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    21392416      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2140       27,     0,     0,    28,    29,    30,    31,   363,   956,   957,
    2141       32,   283,   284,    33,   285,     0,     0,   363,     0,     0,
    2142        0,     0,     0,   226,    79,     0,     0,     0,   363,     0,
    2143      356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2144      286,    36,     0,    37,     0,    38,   287,     0,    40,    41,
    2145      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2146       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2147        0,     0,   225,     0,     0,     0,     0,     0,     0,     0,
    2148        0,     0,     0,   283,   284,   297,   285,   298,    88,     0,
    2149        0,     0,    81,    47,    48,   299,   300,   301,   302,     0,
    2150        0,     0,     0,     0,     0,   356,     0,   356,  -134,     0,
    2151      363,     0,   286,     0,     0,     0,     0,   363,   287,     0,
    2152        0,     0,   288,     0,     0,   289,   290,   291,   292,   293,
    2153      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    2154        0,     0,   356,     0,     0,     0,     0,     0,     0,   356,
    2155      356,   356,   177,     0,     0,     0,     0,   297,     0,   378,
    2156      356,   356,   379,     0,  1077,    47,    48,   299,   300,   301,
    2157      302,     0,     0,    81,   465,     2,   207,     4,     5,     6,
     2417      27,     0,   338,    28,    29,    30,   405,  1365,     0,     0,
     2418     405,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2419       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2420       0,     0,     0,     0,     0,     0,     0,     0,   315,     0,
     2421       0,    36,     0,    37,     0,    38,    39,     0,   203,    41,
     2422      42,   338,     0,     0,     0,     0,     0,     0,   373,    43,
     2423      44,     0,     0,   925,     0,  1124,   723,     0,     8,     9,
     2424      10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
     2425       0,     0,     0,     0,     0,    45,  1109,   204,     0,     0,
     2426       0,     0,     0,    47,    48,     0,   502,  1127,   274,   275,
     2427      33,   276,   356,     0,     0,     0,     0,     0,     0,     0,
     2428       0,     0,     0,     0,     0,     0,     0,   373,     0,  1144,
     2429       0,     0,     0,   502,     0,     0,     0,   277,    36,     0,
     2430       0,     0,     0,   278,   925,   925,     0,   279,     0,     0,
     2431     280,   281,   282,   283,   284,   285,    43,    44,     0,   286,
     2432     287,     0,     0,   502,     0,     0,     0,     0,     0,     0,
     2433    1173,     0,   274,   275,     0,   276,     0,     0,     0,     0,
     2434       0,     0,   288,     0,   370,     0,     0,     0,     0,     0,
     2435    1125,    48,   290,   291,   292,   293,     0,     0,     0,     0,
     2436       0,   277,   405,     0,     0,     0,     0,   278,     0,     0,
     2437       0,   279,     0,     0,   280,   281,   282,   283,   284,   285,
     2438      43,    44,     0,   286,   287,     0,     0,   405,   405,   925,
     2439       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2440       0,     0,     0,     0,     0,     0,   288,     0,   370,     0,
     2441     831,   923,     0,   405,    47,    48,   290,   291,   292,   293,
     2442       0,     0,     0,     0,     0,     0,     0,     0,  1244,  1245,
     2443       0,     0,     0,     0,     0,     0,     0,     0,     1,     2,
     2444     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2445      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2446      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2447      31,     0,     0,   502,    32,   274,   275,    33,   276,     0,
     2448       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2449       0,     0,     0,     0,     0,     0,     0,     0,     0,   502,
     2450       0,     0,     0,     0,   277,    36,     0,    37,     0,    38,
     2451     278,   502,    40,    41,   279,     0,     0,   280,   281,   282,
     2452     283,   284,   285,    43,    44,     0,   286,   287,     0,     0,
     2453       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2454       0,     0,     0,     0,     0,     0,     0,     0,     0,   288,
     2455     502,   289,     0,     0,     0,     0,     0,    47,    48,   290,
     2456     291,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     2457       0,     0,  -134,     0,     0,     0,     0,     0,     0,     0,
     2458       0,     0,     0,  1357,     0,   723,     0,     0,     0,     0,
     2459       0,     0,     0,     0,     0,     0,     0,     0,     0,   502,
     2460       0,     0,     0,     0,     0,     0,     1,     2,   202,     4,
     2461       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2462      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2463      25,    26,    27,     0,     0,    28,    29,    30,    31,     0,
     2464       0,   502,    32,   274,   275,    33,   987,   988,     0,   989,
     2465       0,     0,   990,   991,   992,   993,   994,   995,   996,   997,
     2466       0,     0,     0,   998,     0,     0,     0,   999,  1000,     0,
     2467      35,     0,   277,    36,     0,    37,     0,    38,  1001,     0,
     2468    1002,  1003,  1004,     0,     0,   280,   281,   282,   283,   284,
     2469     285,    43,    44,     0,   286,   287,     0,     0,     0,     0,
     2470       0,   502,   502,     0,     0,     0,     0,     0,     0,     0,
     2471       0,     0,     0,     0,     0,     0,     0,   288,     0,   289,
     2472       0,     0,   168,     0,     0,    47,    48,   290,   291,   292,
     2473     293,     0,     0,     0,     0,  1005,     0,     0,     0,     0,
     2474    -134,     0,     0,     1,     2,   202,     4,     5,     6,     7,
     2475       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2476      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2477       0,     0,    28,    29,    30,    31,     0,     0,     0,    32,
     2478     274,   275,    33,   276,     0,     0,     0,     0,     0,     0,
     2479       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2480       0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
     2481      36,     0,    37,     0,    38,   278,   315,    40,    41,   279,
     2482       0,     0,   280,   281,   282,   283,   284,   285,    43,    44,
     2483       0,   286,   287,     0,     0,     0,     0,     0,     0,     0,
     2484       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2485       0,     0,     0,     0,   288,     0,   289,     0,     0,     0,
     2486       0,     0,    47,    48,   290,   291,   292,   293,     0,     0,
     2487       0,     0,     0,     0,     0,     2,   202,     4,     5,     6,
    21582488       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    21592489      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    21602490      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2161        0,     0,   356,    33,     0,     0,     0,     0,     0,     0,
    2162        0,     0,     0,   913,     0,   914,   363,   363,     0,   363,
    2163      363,     0,   917,   918,     0,     0,     0,   923,     0,     0,
    2164        0,    36,     0,    37,     0,    38,     0,    88,    40,    41,
    2165      929,     0,     0,     0,     0,   933,     0,     0,     0,     0,
    2166        0,     0,     0,     0,     0,   128,   128,     0,     0,     0,
     2491       0,   274,   275,    33,   276,     8,     9,    10,    11,    12,
     2492      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2493      23,    24,    25,    26,    27,     0,   502,    28,    29,    30,
     2494     277,    36,     0,    37,     0,    38,   278,    33,    40,    41,
     2495     279,     0,   502,   280,   281,   282,   283,   284,   285,    43,
     2496      44,     0,   286,   287,     0,     0,     0,     0,     0,     0,
     2497       0,     0,     0,     0,     0,    36,     0,     0,     0,     0,
     2498       0,     0,    40,    41,     0,   288,     0,   335,     0,     0,
     2499       0,     0,   731,   336,    48,   290,   291,   292,   293,     2,
     2500     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2501      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2502      23,    24,    25,    26,    27,   502,   502,    28,    29,    30,
     2503       0,     0,     0,     0,     0,   274,   275,    33,   276,     8,
     2504       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2505      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2506       0,    28,    29,    30,   277,    36,     0,    37,     0,    38,
     2507     278,    33,    40,    41,   279,     0,     0,   280,   281,   282,
     2508     283,   284,   285,    43,    44,     0,   286,   287,     0,     0,
     2509       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
     2510       0,     0,     0,     0,     0,     0,   203,    41,     0,   288,
     2511       0,   335,     0,     0,     0,     0,   731,    47,    48,   290,
     2512     291,   292,   293,     2,   202,     4,     5,     6,     7,     8,
     2513       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2514      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2515       0,    28,    29,    30,     0,     0,     0,     0,     0,   274,
     2516     275,    33,   276,     0,     0,     0,     0,     0,     0,     0,
    21672517       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2168        0,   356,   595,     0,     0,     0,     0,   363,   363,     0,
    2169       -3,     0,   128,     0,     0,   128,   128,     0,   128,     0,
    2170      128,   128,     0,     0,     0,   128,   128,     0,     0,     0,
    2171        0,     0,     0,     0,   177,     0,     0,   177,   177,   177,
    2172        0,     0,     0,     0,  1203,     0,     0,     0,     0,    81,
    2173        0,     0,     0,     0,     0,     0,    81,   166,     0,     8,
    2174        9,    10,    11,    12,     0,     0,     0,     0,     0,     0,
    2175        0,     0,     0,     0,   219,     0,     0,     0,   363,     8,
    2176        9,    10,    11,    12,     0,     0,     0,     0,     0,     0,
    2177        0,    33,     0,     0,     0,  1006,     0,  1007,  1008,  1009,
    2178        0,     0,     0,     0,     0,     0,     0,     0,    81,     0,
    2179        0,    33,     0,     0,     0,     0,  1059,     0,     0,    36,
    2180      226,   166,     0,     0,    39,   273,   184,   185,    42,     0,
    2181     1065,     0,     0,     0,     0,     0,     0,    43,    44,    36,
    2182       88,     0,     0,     0,    39,     0,   184,   185,    42,     0,
    2183        0,     0,     0,   363,   166,   363,     0,    43,    44,     0,
    2184        0,   128,   128,   893,   369,   410,     0,   374,     0,  1085,
    2185        0,    47,    48,     0,     0,     0,     0,  1295,     0,     0,
    2186        0,     0,     0,  1497,     0,   410,     0,     0,     0,     0,
    2187      363,    47,    48,     0,     0,     0,     0,   363,   363,   363,
    2188        0,     0,     0,     0,   177,     0,     0,     0,   363,   363,
    2189        0,     0,  1115,     0,     0,     0,   166,  1125,     0,     0,
    2190        0,    88,  1128,     0,     0,     0,     0,  1132,   219,     0,
    2191        0,     0,  1134,     0,  1135,  1136,     0,     0,  1139,     0,
    2192        0,     0,     0,     0,     0,     0,   166,  1151,     0,     0,
     2518       0,     0,     0,     0,     0,     0,     0,     0,   277,    36,
     2519       0,    37,     0,    38,   278,     0,    40,    41,   279,     0,
     2520       0,   280,   281,   282,   283,   284,   285,    43,    44,     0,
     2521     286,   287,     0,     0,     0,     0,     0,     0,     0,     0,
    21932522       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2194      363,     0,     0,  1165,  1166,     0,     0,     0,   212,     0,
    2195        0,   374,     0,     0,     0,     0,     0,   232,   166,   236,
    2196        0,   238,     0,     0,     0,     0,     0,     0,   247,     0,
    2197        0,     0,     0,     0,  1194,     0,     0,  1196,     0,     0,
    2198        0,     0,     0,   523,   177,     0,     0,     0,     0,     0,
    2199        0,     0,   128,     0,     0,     0,   166,   128,     0,   212,
    2200        0,   236,   238,   247,     0,     0,     0,     0,     0,   363,
    2201        8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
    2202        0,  1211,     0,     0,     0,     0,     0,  1215,  1216,     0,
    2203        0,   593,     0,     0,   177,     0,   617,   177,     0,     0,
    2204        0,   212,    33,     0,     0,     0,  1232,     0,     0,     0,
    2205        0,  1239,     0,     0,     0,   177,  1243,    88,     0,     0,
    2206        0,     0,     0,     0,    88,     0,     0,  1250,     0,     0,
    2207       36,     0,     0,     0,     0,    39,     0,   184,   185,    42,
    2208     1257,   177,  1259,  1260,  1261,  1262,   177,     0,    43,    44,
    2209        0,     0,     0,     0,     0,     0,     0,  1269,     0,  1165,
    2210        0,     0,   212,   173,   236,   238,   247,     0,     0,     0,
    2211        0,   166,   166,     0,   186,   177,    88,   369,     0,     0,
    2212        0,     0,    47,    48,     0,     0,     0,     0,     0,     0,
    2213        0,  1297,  1298,     0,     0,     0,     0,     0,   523,     0,
    2214      212,     0,     0,     0,     0,   212,     0,     0,     0,     0,
    2215        0,     0,     0,     0,     0,     0,     0,   128,     0,     0,
    2216        0,     0,     0,     0,     0,     0,   709,     0,     0,     0,
    2217        0,     0,     0,     0,     0,     0,     0,   177,     0,   166,
    2218        0,     0,   177,     0,     0,  1332,  1333,     0,     0,     0,
    2219        0,   523,     0,   523,     0,  1343,   523,     0,   166,   523,
    2220      177,     0,   177,     0,     0,     0,   177,     0,     0,   177,
    2221      369,   212,     0,     0,     0,     0,     0,   177,     0,     0,
    2222        0,   177,     0,     0,     0,     0,     0,     0,     0,     0,
    2223      212,     0,     0,     0,     0,   236,   238,     0,     0,     0,
    2224        0,     0,     0,   247,     0,     0,     0,     0,     0,     0,
    2225        0,     0,     0,     0,     0,     0,     0,  1378,     0,  1379,
    2226     1380,  1381,   166,     0,     0,     0,     0,     0,     0,     0,
    2227        0,  1385,     0,   369,     0,     0,   800,     0,     0,  1396,
    2228        0,     0,     0,     0,   158,   212,     0,     0,     0,     0,
    2229      128,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    2230        0,     0,   593,   212,  1417,  1418,     0,   593,   212,     0,
    2231      212,     0,     0,     0,     0,     0,   369,   369,     0,     0,
    2232        0,     0,     0,     0,    33,     0,   212,     0,     0,   212,
    2233      212,   252,   369,     0,     0,     0,     0,   212,     0,     0,
    2234        0,   257,     0,     0,     0,     0,     0,     0,     0,  1457,
    2235     1458,   212,    36,     0,     0,     0,     0,    39,   212,   184,
    2236      185,    42,  1463,     0,   523,     0,     0,     0,     0,  1463,
    2237       43,    44,     0,     0,     0,     0,     0,     0,     0,     0,
    2238        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2239      369,     0,   922,     0,     0,     0,   266,     0,     0,     0,
    2240        0,     0,  1496,     0,    47,    48,  1502,     0,     0,     0,
    2241      385,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2242        0,     0,     0,     0,     0,   709,     0,     0,     0,     0,
    2243        0,     0,     0,   417,  1524,     0,  1525,     0,     0,     0,
    2244        0,     0,     0,     0,     0,     0,     0,   431,     0,     0,
    2245        0,     0,     0,     0,     0,     0,   436,     0,     0,     0,
    2246        0,     0,     0,     0,  1540,  1541,   444,     0,     0,     0,
    2247      212,     0,  1544,  1545,     0,     0,     0,     0,     0,     0,
    2248        0,     0,     0,   617,     0,     0,     0,     0,     0,     0,
    2249        0,   462,     0,     0,     0,     0,   472,     0,   212,     0,
    2250        0,     0,     0,   212,     0,     0,     0,     0,     0,   480,
    2251        0,     0,     0,     0,     0,   491,     0,   495,     0,     0,
    2252      506,     0,   508,   511,     0,     0,     0,     0,     0,     0,
    2253        0,     0,   514,   515,     0,     0,   524,     0,     0,     0,
    2254        0,     0,     0,     0,     0,     0,     0,   508,   508,     0,
    2255        0,     0,     0,     0,     0,     0,   283,   284,     0,   285,
    2256        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2257        0,   369,   212,     0,     0,     0,     0,   583,   709,     0,
    2258        0,   587,   508,     0,     0,   286,   212,     0,     0,     0,
    2259        0,   287,     0,   523,     0,   288,     0,     0,   289,   290,
    2260      291,   292,   293,   294,    43,    44,     0,   295,   296,   630,
    2261        0,     0,     0,   631,   632,     0,   633,   508,   166,     0,
    2262        0,     0,     0,   644,   645,     0,   646,   647,     0,   648,
    2263      297,   649,   378,     0,     0,     0,     0,     0,    47,    48,
    2264      299,   300,   301,   302,     0,     0,     0,     0,   583,     0,
    2265        0,   780,     0,     0,     0,     0,   664,     0,     0,     0,
    2266        0,     0,     0,     0,     0,     0,   212,     0,     0,   593,
    2267        0,     0,     0,     0,     0,     0,     0,   212,     0,     0,
    2268      675,   283,   284,     0,   285,     0,     0,     0,     0,     0,
    2269      369,   369,     0,     0,   212,     0,     0,     0,     0,     0,
    2270        0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
    2271      286,     0,   704,     0,     0,     0,   634,   462,   141,   142,
    2272      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2273       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2274        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2275        0,     0,     0,   523,   739,   297,     0,   635,     0,   636,
    2276      379,     0,     0,    47,    48,   299,   300,   301,   302,   757,
    2277        0,     0,     0,     0,   996,     0,     0,     8,     9,    10,
    2278       11,    12,     0,     0,     0,     0,   508,   508,   508,   508,
    2279      508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
    2280      508,   508,   508,   508,     0,   212,   782,   283,   284,    33,
    2281      285,     0,     0,     0,     0,   792,     0,     0,     0,   709,
    2282        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2283        0,     0,     0,     0,   212,   813,   286,    36,     0,     0,
    2284        0,     0,   287,     0,     0,     0,   288,     0,     0,   289,
    2285      290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
    2286      219,     0,     0,     0,     0,     0,   212,     0,     0,     0,
    2287        0,     0,     0,   852,     0,     0,     0,   212,     0,     0,
    2288        0,   297,     0,   378,     0,     0,     0,     0,     0,   344,
    2289       48,   299,   300,   301,   302,     0,   709,     0,     0,     0,
    2290        0,     0,     0,     0,     0,     0,     0,     0,     0,   885,
    2291        0,     0,     0,     0,     0,     0,     0,   892,     0,     0,
    2292        0,     0,     0,     0,     0,     0,   508,     0,     0,     0,
    2293        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2294        0,     0,     0,     0,     0,     0,     0,     0,   252,   369,
    2295      369,     0,   212,     0,     0,     0,     0,   219,     0,   930,
    2296      931,     0,     0,     0,     0,     0,   212,     8,     9,    10,
    2297       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2298       21,    22,    23,    24,    25,    26,    27,   508,     0,     0,
    2299        0,   964,     0,     0,     0,     0,   968,     0,     0,    33,
    2300        0,     0,     0,   341,   364,     0,     0,     0,     0,     0,
    2301        0,     0,     0,     0,     0,     0,     0,   508,     0,     0,
    2302        0,     0,     0,     0,     0,     0,  1149,    36,     0,     8,
    2303        9,    10,    11,    12,     0,     0,   413,     0,     0,     0,
    2304        0,     0,     0,   413,     0,     0,     0,     0,     0,     0,
    2305        0,     0,     0,     0,   212,     0,  1001,     0,     0,   283,
    2306      284,    33,   285,  1002,     0,     0,     0,     0,     0,     0,
    2307      369,     0,     0,     0,     0,     0,  1004,     0,  1005,     0,
    2308        0,     0,     0,     0,     0,     0,     0,     0,   286,    36,
    2309        0,  1015,     0,     0,   287,     0,     0,  1019,   288,     0,
    2310        0,   289,   290,   291,   292,   293,   294,    43,    44,  1062,
    2311      295,   296,  1063,     0,     0,   413,     0,     0,     0,     0,
    2312        0,     0,     0,     0,     0,     0,     0,   523,     0,   523,
    2313        0,   508,     0,   297,     0,   378,     0,     0,     0,     0,
    2314        0,  1150,    48,   299,   300,   301,   302,     0,     0,     0,
    2315        0,   212,     0,     0,     0,     0,     0,     0,     0,     0,
    2316        0,     0,     0,     0,   523,     0,   523,     0,     0,     0,
    2317        0,     0,   413,     0,     0,     0,   508,     0,     0,     0,
    2318      413,   579,   324,   413,   582,     0,     0,     0,     0,     0,
    2319        0,   364,   346,   166,     0,   609,     0,     0,     0,     0,
    2320        0,     0,     0,   381,   381,     0,     0,     0,   508,     0,
    2321        0,     0,     0,     0,   627,     0,     0,     0,     0,  1133,
    2322      508,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2323       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2324       26,    27,     0,   413,    28,    29,    30,   413,     0,     0,
    2325        0,     0,     0,     0,    33,     0,     0,     0,     0,   508,
    2326        0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
    2327        0,     0,     0,     0,   324,     0,     0,   364,     0,     0,
    2328        0,     0,    36,     0,     0,  1195,     0,   112,     0,    40,
    2329       41,     0,     0,   286,     0,     0,     0,     0,   476,   287,
    2330       43,    44,     0,   288,     0,     0,   289,   290,   291,   292,
    2331      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2332     1208,     0,     0,   413,     0,  1210,   364,     0,    46,     0,
    2333        0,     0,     0,  1214,    47,    48,     0,     0,   297,     0,
    2334      378,   508,     0,     0,     0,   751,    47,    48,   299,   300,
    2335      301,   302,     0,     0,     0,     0,     0,     0,     0,     0,
    2336        0,     0,     0,     0,     0,     0,   413,  1245,     0,     0,
    2337      364,     0,     0,     0,     0,     0,     0,     0,  1252,     0,
    2338        0,  1253,     0,  1254,     0,     0,     0,     0,     0,     0,
    2339        0,     0,     0,     0,     0,     0,     0,     0,  1263,  1264,
    2340      508,   508,   212,     0,     0,     0,     0,     0,     0,     0,
    2341        0,     0,     0,   381,   413,   413,     0,     0,  1276,     0,
    2342        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2343        0,     0,   795,   364,     0,     0,   283,   284,     0,   285,
    2344        0,     0,   609,     0,   609,   609,     0,     0,     0,     0,
    2345        0,   609,     0,     0,     0,     0,     0,     0,     0,     0,
    2346        0,   832,   364,     0,  1315,   286,     0,   364,     0,     0,
    2347        0,   287,  1319,     0,     0,   288,   364,   364,   289,   290,
    2348      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2349        0,     0,   364,     0,     0,     0,     0,   413,   873,     0,
    2350        0,   413,   876,     0,     0,     0,   703,     0,   878,     0,
    2351      297,     0,   378,     0,     0,   958,     0,     0,    47,    48,
    2352      299,   300,   301,   302,     0,     0,     0,   413,     0,     0,
    2353        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2354        0,     0,  1366,     0,  1367,     0,   736,     0,     0,     0,
    2355      364,   609,     0,     0,     0,     0,     0,     0,   752,     0,
    2356     1376,     0,  1377,     0,   736,     0,     0,   736,     0,     0,
    2357        0,     0,     0,     0,     0,     0,     0,  1384,     0,     0,
    2358      761,     0,     0,     0,     0,   364,     0,     0,     0,   413,
    2359      413,     0,  1402,  1404,     0,     0,     0,     0,     0,     0,
    2360        0,     0,     0,  1409,     0,     0,  1214,     0,   508,     0,
    2361      790,     0,     0,     0,     0,     0,     0,   346,     0,     0,
    2362        0,   752,     0,     0,     0,   508,     0,     0,  1432,     0,
    2363        0,     0,   413,     0,     0,     0,     0,  1439,     0,     0,
    2364     1441,     0,  1443,  1445,  1447,     0,     0,     0,   609,     0,
    2365      609,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2366      609,     0,     0,     0,     0,     0,     0,   851,     0,     0,
    2367        0,     0,     0,     0,     0,   381,     0,     0,     0,     0,
    2368        0,     0,     0,  1478,     0,  1480,     0,  1214,     0,     0,
    2369        0,     0,     0,     0,     0,     0,     0,   508,   508,     0,
    2370        0,     0,     0,  1491,     2,   207,     4,     5,     6,     7,
    2371        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2372       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2373        0,   364,    28,    29,    30,     0,     0,     0,   364,   413,
    2374        0,   413,    33,     0,     0,   413,     0,     0,     0,     0,
    2375        0,   927,     0,     0,     0,     0,     0,     0,     0,     0,
    2376        0,     0,   736,     0,     0,     0,   609,   609,     0,     0,
    2377       36,     0,    37,   752,    38,   950,     0,    40,    41,     0,
    2378        0,     0,     0,     0,     0,   960,     0,     0,     0,     0,
    2379        0,   967,     0,     0,     0,     0,     0,     0,     0,     0,
    2380      413,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2381        0,     0,     0,     0,     0,  -407,   671,     0,     0,   413,
    2382     1131,     0,    47,    48,     0,     0,     0,     0,     0,   364,
    2383        0,   984,   985,     0,     0,   413,  1142,     0,   609,   609,
    2384     1147,     0,     0,     0,     0,     0,     0,   346,     0,     0,
    2385      364,   364,     0,     0,     0,     0,     0,     0,     0,     0,
    2386        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2387       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2388       27,     0,     0,    28,    29,    30,  1013,     0,     0,     0,
    2389      381,     0,     0,    33,   678,     0,     0,     0,     0,     0,
    2390        0,   283,   284,     0,   285,     0,     0,     0,     0,     0,
    2391        0,     0,     0,     0,     0,     0,   413,     0,   413,   346,
    2392        0,    36,     0,   413,     0,     0,   346,     0,    40,    41,
    2393      286,     0,   609,     0,     0,     0,   287,     0,     0,     0,
    2394      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2395       44,     0,   295,   296,     0,   413,  1228,     0,     0,     0,
    2396        0,     0,     0,     0,     0,     0,   324,   679,     0,     0,
    2397        0,   680,     0,    47,    48,   297,     0,   378,     0,   364,
    2398        0,     0,     0,    47,    48,   299,   300,   301,   302,     0,
    2399        0,     0,   381,     0,     0,     0,     0,   960,   283,   284,
    2400      736,   285,  1023,     0,  1024,     0,     0,  1025,  1026,  1027,
    2401     1028,  1029,  1030,  1031,  1032,     0,     0,  1516,  1033,     0,
    2402     1137,     0,  1034,  1035,     0,    35,     0,   286,     0,     0,
    2403        0,  1152,     0,  1036,     0,   175,   176,  1039,     0,     0,
    2404      289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
    2405      296,   381,     0,  1169,     0,     0,   364,     0,     0,     0,
    2406        0,     0,     0,     0,     0,     0,     0,     0,   960,   960,
    2407        0,     0,   297,     0,   378,     0,     0,   172,     0,     0,
    2408       47,    48,   299,   300,   301,   302,   283,   284,     0,   285,
    2409     1040,     0,     0,     0,  1200,  -134,     0,     0,     0,     0,
    2410        0,     0,     0,     0,     0,     0,     0,     0,     0,   364,
    2411      364,     0,     0,     0,     0,   286,     0,     0,     0,     0,
    2412        0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
    2413      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2414        0,     0,     0,     0,     0,     0,     0,     0,   960,     0,
    2415        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2416      505,     0,   378,     0,     0,     0,     0,   851,    47,    48,
    2417      299,   300,   301,   302,     0,     0,     0,     0,     0,     0,
    2418        0,     0,  1255,  1256,     0,     0,     1,     2,   207,     4,
     2523       0,     0,     0,   288,     0,   335,     0,     0,     0,     0,
     2524       0,   336,    48,   290,   291,   292,   293,     2,   202,     4,
    24192525       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    24202526      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2421       25,    26,    27,     0,     0,    28,    29,    30,    31,     0,
    2422        0,     0,    32,   283,   284,    33,  1022,  1023,     0,  1024,
    2423      364,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,
    2424        0,     0,     0,  1033,     0,     0,     0,  1034,  1035,     0,
    2425       35,     0,   286,    36,     0,    37,     0,    38,  1036,     0,
    2426     1037,  1038,  1039,     0,     0,   289,   290,   291,   292,   293,
    2427      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    2428        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2429        0,     0,     0,     0,     0,     0,     0,   297,     0,   298,
    2430        0,     0,   172,     0,     0,    47,    48,   299,   300,   301,
    2431      302,     0,     0,     0,     0,  1040,     0,     0,     0,   413,
    2432     -134,     0,     0,     0,  1360,     0,   736,     0,     0,     0,
    2433        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2434        0,     0,     0,   413,   413,     0,     0,     0,     0,     0,
    2435        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2436        0,     0,     0,     0,     0,     0,     0,     0,   413,     1,
    2437        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2438       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2439       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2440       30,    31,     0,     0,     0,    32,   283,   284,    33,   285,
    2441        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2442       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2443     -298,     0,     0,     0,     0,   286,    36,     0,    37,     0,
    2444       38,   287,    33,    40,    41,   288,     0,     0,   289,   290,
    2445      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2446        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2447       36,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2448      297,  -298,   298,     0,     0,     0,     0,     0,    47,    48,
    2449      299,   300,   301,   302,     2,   207,     4,     5,     6,     7,
    2450        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2451       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2452        0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
    2453      283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
    2454        0,   324,     0,     0,     0,     0,     0,     0,     0,     0,
    2455        0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
    2456       36,     0,    37,     0,    38,   287,     0,    40,    41,   288,
    2457        0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
    2458        0,   295,   296,     0,     0,     0,     0,     0,     0,     0,
    2459        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2460        0,     0,     0,     0,   297,     0,   343,     0,     0,     0,
    2461        0,   751,   344,    48,   299,   300,   301,   302,     2,   207,
    2462        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2463       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2464       24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
    2465        0,     0,     0,     0,   283,   284,    33,   285,     8,     9,
    2466       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2467       20,    21,    22,    23,    24,    25,    26,    27,  -299,     0,
    2468        0,     0,     0,   286,    36,     0,    37,     0,    38,   287,
    2469       33,    40,    41,   288,     0,     0,   289,   290,   291,   292,
    2470      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2471        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2472        0,     0,     0,     0,     0,     0,     0,     0,   297,  -299,
    2473      343,     0,     0,     0,     0,   751,    47,    48,   299,   300,
    2474      301,   302,     2,   207,     4,     5,     6,     7,     8,     9,
    2475       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2476       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2477       28,    29,    30,     0,     0,     0,     0,     0,   283,   284,
    2478       33,   285,     8,     9,    10,    11,    12,    13,    14,    15,
    2479       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2480       26,    27,     0,     0,    28,    29,    30,   286,    36,     0,
    2481       37,     0,    38,   287,    33,    40,    41,   288,     0,     0,
    2482      289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
    2483      296,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2484        0,     0,    36,     0,     0,     0,     0,     0,     0,    40,
    2485       41,     0,   297,     0,   343,     0,     0,     0,     0,     0,
    2486      344,    48,   299,   300,   301,   302,     2,   207,     4,     5,
    2487        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2488       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2489       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2490        0,     0,   283,   284,    33,   285,     8,     9,    10,    11,
    2491       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2492       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2493       30,   286,    36,     0,    37,     0,    38,   287,    33,   208,
    2494       41,   288,     0,     0,   289,   290,   291,   292,   293,   294,
    2495       43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
    2496        0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
    2497        0,     0,     0,   208,    41,     0,   297,     0,   981,     0,
    2498        0,     0,     0,     0,   982,    48,   299,   300,   301,   302,
    2499        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2500       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2501       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2502       30,     0,     0,     0,     0,     0,   283,   284,    33,   285,
     2527      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
     2528       0,     0,     0,   274,   275,    33,   276,     0,     0,     0,
    25032529       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25042530       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2505        0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
    2506       38,   287,     0,   208,    41,   288,     0,     0,   289,   290,
    2507      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
     2531       0,     0,   277,    36,     0,    37,     0,    38,   278,     0,
     2532     203,    41,   279,     0,     0,   280,   281,   282,   283,   284,
     2533     285,    43,    44,     0,   286,   287,     0,     0,     0,     0,
     2534       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2535       0,     0,     0,     0,     0,     0,     0,   288,     0,   946,
     2536       0,     0,     0,     0,     0,   947,    48,   290,   291,   292,
     2537     293,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2538      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2539      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2540      29,    30,     0,     0,     0,     0,     0,   274,   275,    33,
     2541     276,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2542       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2543       0,     0,     0,     0,     0,     0,   277,    36,     0,    37,
     2544       0,    38,   278,     0,   203,    41,   279,     0,     0,   280,
     2545     281,   282,   283,   284,   285,    43,    44,     0,   286,   287,
    25082546       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25092547       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2510      297,     0,   378,     0,     0,     0,     0,     0,    47,    48,
    2511      299,   300,   301,   302,  -524,     0,     0,     1,     2,     3,
    2512        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2513       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2514       24,    25,    26,    27,     0,     0,    28,    29,    30,    31,
    2515        0,     0,     0,    32,     0,     0,    33,    34,     0,     0,
    2516        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2517        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2518        0,    35,     0,     0,    36,     0,    37,     0,    38,    39,
    2519        0,    40,    41,    42,     0,     0,     0,     0,     0,     0,
    2520        0,     0,    43,    44,     0,     0,     0,     0,     0,     0,
    2521        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,     0,     0,     0,     0,    45,     0,
    2523       46,     0,     0,     0,     0,     0,    47,    48,     1,     2,
     2548       0,   288,     0,   370,     0,     0,     0,     0,     0,    47,
     2549      48,   290,   291,   292,   293,  -522,     0,     0,     1,     2,
    25242550       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    25252551      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     
    25332559       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25342560       0,     0,     0,     0,     0,     0,     0,     0,     0,    45,
    2535        0,    46,     0,     0,     0,  -528,     0,    47,    48,     1,
     2561       0,    46,     0,     0,     0,     0,     0,    47,    48,     1,
    25362562       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    25372563      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     
    25452571       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25462572       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2547       45,     0,    46,     0,     0,     0,     0,     0,    47,    48,
    2548      206,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2573      45,     0,    46,     0,     0,     0,  -526,     0,    47,    48,
     2574       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
    25492575      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    25502576      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2551       29,    30,     0,     0,     0,     0,     0,     0,     0,    33,
     2577      29,    30,    31,     0,     0,     0,    32,     0,     0,    33,
     2578      34,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25522579       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2553        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2554        0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
    2555        0,    38,    39,     0,   208,    41,    42,     0,     0,     0,
     2580       0,     0,     0,     0,    35,     0,     0,    36,     0,    37,
     2581       0,    38,    39,     0,    40,    41,    42,     0,     0,     0,
    25562582       0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
    25572583       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25582584       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2559        0,    45,     0,   209,     0,     0,     0,     0,     0,    47,
    2560       48,     1,     2,   207,     4,     5,     6,     7,     8,     9,
     2585       0,    45,     0,    46,     0,     0,     0,     0,     0,    47,
     2586      48,     1,     2,   202,     4,     5,     6,     7,     8,     9,
    25612587      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2562       20,    21,    22,    23,    24,    25,    26,    27,  -298,     0,
     2588      20,    21,    22,    23,    24,    25,    26,    27,  -299,     0,
    25632589      28,    29,    30,    31,     0,     0,     0,    32,     0,     0,
    25642590      33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25652591       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25662592       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2567       37,     0,    38,     0,     0,    40,    41,     0,     0,  -298,
    2568        1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2593      37,     0,    38,     0,     0,    40,    41,     0,     0,  -299,
     2594       1,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    25692595      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    25702596      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     
    25732599       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25742600       0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
    2575        0,    38,     0,     0,    40,    41,   206,     2,   207,     4,
     2601       0,    38,     0,     0,    40,    41,   201,     2,   202,     4,
    25762602       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25772603      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    25812607       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25822608       0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
    2583      208,    41,     2,   207,     4,     5,     6,     7,     8,     9,
     2609     203,    41,     2,   202,     4,     5,     6,     7,     8,     9,
    25842610      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    25852611      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2586       28,    29,    30,     0,     0,     0,     0,     0,     0,   209,
     2612      28,    29,    30,     0,     0,     0,     0,     0,     0,   204,
    25872613      33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
    25882614       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25892615       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2590       37,     0,    38,    39,     0,   208,    41,    42,     0,     0,
     2616      37,     0,    38,    39,     0,   203,    41,    42,     0,     0,
    25912617       0,     0,     0,     0,     0,     0,    43,    44,     0,     0,
    25922618       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25932619       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2594        0,     0,    45,     0,   209,     0,     0,     0,     0,     0,
    2595       47,    48,     2,   207,     4,     5,     6,     7,     8,     9,
     2620       0,     0,    45,     0,   204,     0,     0,     0,     0,     0,
     2621      47,    48,     2,   202,     4,     5,     6,     7,     8,     9,
    25962622      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    25972623      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    25982624      28,    29,    30,     0,     0,     0,     0,     0,     0,     0,
    2599       33,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2600       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2601       26,    27,     0,     0,    28,    29,    30,     0,    36,     0,
    2602       37,     0,    38,     0,    33,    40,    41,     0,     0,     0,
    2603        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2604        0,     0,     0,     0,     0,     0,     0,     0,     0,  1340,
    2605        0,     0,    36,     0,     0,     0,     0,     0,     0,    40,
    2606       41,     0,     0,     0,   671,     0,     0,     0,     0,     0,
    2607       47,    48,     2,   207,     4,     5,     6,     7,     8,     9,
    2608       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2609       20,    21,    22,    23,    24,    25,    26,    27,   258,     0,
    2610       28,    29,    30,     0,    47,    48,     0,     0,     0,     0,
    2611       33,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2612       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2613       26,    27,     0,     0,    28,    29,    30,     0,    36,     0,
    2614       37,     0,    38,     0,    33,    40,    41,     0,     0,     0,
    2615        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2616        0,     0,     0,     0,     0,     0,     0,     0,     0,  1342,
    2617        0,     0,    36,     0,     0,     0,     0,     0,     0,    40,
    2618       41,     0,     0,     0,   671,     0,     0,     0,     0,     0,
    2619       47,    48,     2,   207,     4,     5,     6,     7,     8,     9,
    2620       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2621       20,    21,    22,    23,    24,    25,    26,    27,    46,     0,
    2622       28,    29,    30,     0,    47,    48,     0,     0,     0,     0,
    26232625      33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26242626       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26252627       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2626       37,     0,    38,     0,     0,   208,    41,     2,   207,     4,
     2628      37,     0,    38,     0,     0,    40,    41,     2,   202,     4,
    26272629       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    26282630      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    26292631      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2630        0,     0,     0,     0,   271,    33,     0,     0,     0,     0,
     2632       0,     0,     0,  -407,   664,    33,     0,     0,     0,     0,
    26312633      47,    48,     0,     0,     0,     0,     0,     0,     0,     0,
    26322634       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26332635       0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
    2634       40,    41,     2,   207,     4,     5,     6,     7,     8,     9,
     2636      40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
     2637       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2638       0,     0,     0,     0,  1334,     0,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,     0,     0,     0,     0,   664,
     2640       0,     0,     0,     0,     0,    47,    48,     2,   202,     4,
     2641       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2642      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2643      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
     2644       0,     0,     0,     0,     0,    33,     0,     8,     9,    10,
     2645      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2646      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2647      29,    30,     0,    36,     0,    37,     0,    38,     0,    33,
     2648      40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
     2649       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2650       0,     0,     0,     0,  1336,     0,     0,    36,     0,     0,
     2651       0,     0,     0,     0,    40,    41,     0,     0,     0,   664,
     2652       0,     0,     0,     0,     0,    47,    48,     2,   202,     4,
     2653       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2654      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2655      25,    26,    27,   247,     0,    28,    29,    30,     0,    47,
     2656      48,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2657       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2658       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2659       0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
     2660     203,    41,     2,   202,     4,     5,     6,     7,     8,     9,
    26352661      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    26362662      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2637       28,    29,    30,     0,     0,     0,     0,     0,     0,   671,
     2663      28,    29,    30,     0,     0,     0,     0,     0,     0,   260,
    26382664      33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
    26392665       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26402666       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2641       37,     0,    38,     0,     0,   208,    41,     8,     9,    10,
    2642       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2643       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2644       29,    30,     0,     0,     0,     0,     0,   283,   284,    33,
    2645      285,     0,     0,     0,   209,     0,     0,     0,     0,     0,
     2667      37,     0,    38,     0,     0,    40,    41,     2,   202,     4,
     2668       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2669      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2670      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
     2671       0,     0,     0,     0,   664,    33,     0,     0,     0,     0,
    26462672      47,    48,     0,     0,     0,     0,     0,     0,     0,     0,
    2647        0,     0,     0,     0,     0,     0,   286,    36,     0,     0,
    2648        0,     0,   287,     0,    40,    41,   288,     0,     0,   289,
    2649      290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
     2673       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2674       0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
     2675     203,    41,     8,     9,    10,    11,    12,    13,    14,    15,
     2676      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2677      26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
     2678       0,     0,   274,   275,    33,   276,     0,     0,     0,   204,
     2679       0,     0,     0,     0,     0,    47,    48,     0,     0,     0,
     2680       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2681       0,   277,    36,     0,     0,     0,     0,   278,     0,    40,
     2682      41,   279,     0,     0,   280,   281,   282,   283,   284,   285,
     2683      43,    44,     0,   286,   287,     0,     0,     0,     0,     0,
     2684       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2685       0,     0,     0,     0,     0,     0,   288,     0,   510,     0,
     2686       0,   168,     0,     0,    47,    48,   290,   291,   292,   293,
     2687       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2688      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2689       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
     2690     274,   275,    33,   276,     8,     9,    10,    11,    12,    13,
     2691      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2692      24,    25,    26,    27,     0,     0,    28,    29,    30,   277,
     2693      36,     0,     0,     0,     0,   278,    33,    40,    41,   279,
     2694       0,     0,   280,   281,   282,   283,   284,   285,    43,    44,
     2695       0,   286,   287,     0,     0,     0,     0,     0,     0,     0,
     2696       0,     0,     0,     0,    36,     0,     0,     0,     0,     0,
     2697       0,   203,    41,     0,   288,   -40,   289,     0,     0,     0,
     2698       0,     0,    47,    48,   290,   291,   292,   293,     8,     9,
     2699      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2700      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2701      28,    29,    30,     0,     0,     0,    47,    48,   274,   275,
     2702      33,   276,     0,     0,     0,     0,     0,     0,     0,     0,
     2703       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2704       0,     0,     0,     0,     0,     0,     0,   277,    36,     0,
     2705       0,     0,     0,   278,     0,    40,    41,   279,     0,     0,
     2706     280,   281,   282,   283,   284,   285,    43,    44,     0,   286,
     2707     287,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2708       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2709       0,     0,   288,     0,   289,     0,     0,     0,     0,     0,
     2710      47,    48,   290,   291,   292,   293,     8,     9,    10,    11,
     2711      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2712      22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
     2713      30,     0,     0,     0,     0,     0,   274,   275,    33,   276,
    26502714       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26512715       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2652        0,   297,     0,   516,     0,     0,   172,     0,     0,    47,
    2653       48,   299,   300,   301,   302,     8,     9,    10,    11,    12,
     2716       0,     0,     0,     0,     0,   277,    36,     0,     0,     0,
     2717       0,   278,     0,    40,    41,   279,     0,     0,   280,   281,
     2718     282,   283,   284,   285,    43,    44,     0,   286,   287,     0,
     2719       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2720       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2721     288,     0,   335,     0,     0,     0,     0,     0,    47,    48,
     2722     290,   291,   292,   293,     8,     9,    10,    11,    12,    13,
     2723      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2724      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
     2725       0,     0,     0,     0,   274,   275,    33,   276,     0,     0,
     2726       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2727       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2728       0,     0,     0,   277,    36,     0,     0,     0,     0,   278,
     2729       0,    40,    41,   279,     0,     0,   280,   281,   282,   283,
     2730     284,   285,    43,    44,     0,   286,   287,     0,     0,     0,
     2731       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2732       0,     0,     0,     0,     0,     0,     0,     0,   288,     0,
     2733     370,     0,     0,     0,     0,     0,    47,    48,   290,   291,
     2734     292,   293,   456,     2,   202,     4,     5,     6,     7,     8,
     2735       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2736      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2737       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
     2738       0,    33,     8,     9,    10,    11,    12,    13,    14,    15,
     2739      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2740      26,    27,     0,     0,    28,    29,    30,     0,     0,    36,
     2741       0,    37,     0,    38,    33,     0,    40,    41,     0,     0,
     2742       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2743      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2744      26,    27,    36,     0,    28,    29,    30,    39,     0,   203,
     2745      41,    42,     0,     0,    33,     0,     0,     0,    -3,     0,
     2746      43,    44,     0,     0,     0,     0,     0,     0,     0,     0,
     2747       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2748       0,     0,    36,     0,     0,     0,    45,   110,   260,    40,
     2749      41,     0,     0,     0,    47,    48,     0,     0,     0,     0,
     2750      43,    44,     0,     0,     0,     0,     0,     8,     9,    10,
     2751      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2752      21,    22,    23,    24,    25,    26,    27,     0,    46,    28,
     2753      29,    30,     0,     0,    47,    48,     0,     0,     0,    33,
     2754     872,     0,     0,     0,     0,     0,     0,     8,     9,    10,
     2755      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2756      21,    22,    23,    24,    25,    26,    27,    36,     0,    28,
     2757      29,    30,     0,     0,    40,    41,     0,     0,     0,    33,
     2758     872,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2759       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2760       0,     0,     0,     0,     0,     0,     0,    36,     0,     0,
     2761       0,     0,     0,   719,    40,    41,     0,  1197,     0,    47,
     2762      48,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2763      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2764      26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
     2765       0,     0,     0,   719,    33,     0,     0,  1287,     0,    47,
     2766      48,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2767      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2768      26,    27,    36,     0,    28,    29,    30,     0,     0,    40,
     2769      41,     0,     0,     0,    33,     8,     9,    10,    11,    12,
    26542770      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    26552771      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2656        0,     0,     0,     0,     0,   283,   284,    33,   285,     8,
    2657        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2658       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2659        0,    28,    29,    30,   286,    36,     0,     0,     0,     0,
    2660      287,    33,    40,    41,   288,     0,     0,   289,   290,   291,
    2661      292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
    2662        0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
    2663        0,     0,     0,     0,     0,     0,   208,    41,     0,   297,
    2664      -40,   298,     0,     0,     0,     0,     0,    47,    48,   299,
    2665      300,   301,   302,     8,     9,    10,    11,    12,    13,    14,
     2772       0,     0,    36,     0,     0,     0,     0,    33,    46,   203,
     2773      41,     0,     0,     0,    47,    48,     0,     0,     0,     0,
     2774       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2775       0,     0,     0,     0,     0,    36,     0,     0,     0,     0,
     2776       0,     0,    40,    41,     0,     0,     0,     0,   260,     0,
     2777       0,     0,     0,     0,    47,    48,     0,     0,     0,     0,
     2778       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2779      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2780       0,   331,    28,    29,    30,     0,     0,    47,    48,     0,
     2781       0,     0,    33,     8,     9,    10,    11,    12,    13,    14,
    26662782      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    26672783      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2668        0,    47,    48,   283,   284,    33,   285,     0,     0,     0,
     2784      36,     0,     0,     0,     0,    33,     0,    40,    41,     0,
    26692785       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26702786       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2671        0,     0,   286,    36,     0,     0,     0,     0,   287,     0,
    2672       40,    41,   288,     0,     0,   289,   290,   291,   292,   293,
    2673      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
     2787       0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
     2788      40,    41,     0,     0,     0,     0,   719,     0,     0,     0,
     2789       0,     0,    47,    48,     0,     0,     0,     0,     0,     0,
    26742790       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2675        0,     0,     0,     0,     0,     0,     0,   297,     0,   298,
    2676        0,     0,     0,     0,     0,    47,    48,   299,   300,   301,
    2677      302,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2791       0,     0,     0,     0,     0,     0,     0,     0,     0,   664,
     2792       0,     0,     0,     0,     0,    47,    48,     2,   202,     4,
     2793       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2794      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2795      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
     2796       0,     0,     0,     0,     0,    33,     0,   274,   275,     0,
     2797     276,   988,     0,   989,     0,     0,   990,   991,   992,   993,
     2798     994,   995,   996,   997,     0,     0,  1520,   998,     0,     0,
     2799       0,   999,  1000,    36,    35,    37,   277,    38,     0,     0,
     2800      40,    41,  1001,     0,   171,   172,  1004,     0,     0,   280,
     2801     281,   282,   283,   284,   285,    43,    44,     0,   286,   287,
     2802       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2803       0,     0,     0,     0,     0,     0,     0,     0,  -420,     0,
     2804       0,   288,     0,   370,     0,     0,   168,     0,     0,    47,
     2805      48,   290,   291,   292,   293,     0,     0,   274,   275,  1005,
     2806     276,   988,     0,   989,  -134,     0,   990,   991,   992,   993,
     2807     994,   995,   996,   997,     0,     0,     0,   998,     0,     0,
     2808       0,   999,  1000,     0,    35,     0,   277,     0,     0,     0,
     2809       0,     0,  1001,     0,   171,   172,  1004,     0,     0,   280,
     2810     281,   282,   283,   284,   285,    43,    44,     0,   286,   287,
     2811       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2812       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2813       0,   288,     0,   370,     0,     0,   168,     0,     0,    47,
     2814      48,   290,   291,   292,   293,     0,     0,     0,     0,  1005,
     2815       0,     0,     0,     0,  -134,     2,   202,     4,     5,     6,
     2816       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    26782817      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    26792818      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2680        0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
     2819       0,     0,     0,    33,     0,   274,   275,     0,   276,   988,
     2820       0,   989,  1389,  1390,   990,   991,   992,   993,   994,   995,
     2821     996,   997,     0,     0,  1520,   998,     0,     0,     0,   999,
     2822    1000,    36,    35,    37,   277,    38,     0,     0,    40,    41,
     2823    1001,     0,   171,   172,  1004,     0,     0,   280,   281,   282,
     2824     283,   284,   285,    43,    44,     0,   286,   287,     0,     0,
     2825       0,     0,  1294,     0,     0,     0,     0,     0,     0,     0,
     2826       0,     0,     0,     0,     0,     0,     0,     0,     0,   288,
     2827       0,   370,     0,     0,   168,     0,     0,    47,    48,   290,
     2828     291,   292,   293,     0,     0,   274,   275,  1005,   276,   988,
     2829       0,   989,  1389,  1390,   990,   991,   992,   993,   994,   995,
     2830     996,   997,     0,     0,     0,   998,     0,     0,     0,   999,
     2831    1000,     0,    35,     0,   277,     0,     0,     0,     0,     0,
     2832    1001,     0,   171,   172,  1004,     0,     0,   280,   281,   282,
     2833     283,   284,   285,    43,    44,     0,   286,   287,     0,     0,
    26812834       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2835       0,     0,     0,     0,     0,     0,     0,     0,     0,   288,
     2836       0,   370,     0,     0,   168,     0,     0,    47,    48,   290,
     2837     291,   292,   293,     0,     0,   274,   275,  1005,   276,   988,
     2838       0,   989,     0,     0,   990,   991,   992,   993,   994,   995,
     2839     996,   997,     0,     0,     0,   998,     0,     0,     0,   999,
     2840    1000,     0,    35,     0,   277,     0,     0,     0,     0,     0,
     2841    1001,     0,   171,   172,  1004,     0,     0,   280,   281,   282,
     2842     283,   284,   285,    43,    44,     0,   286,   287,     0,     0,
     2843       0,     0,     0,     0,   274,   275,     0,   276,     0,     0,
     2844       0,     0,     0,     0,     0,     0,     0,     0,     0,   288,
     2845       0,   370,     0,     0,   168,     0,     0,    47,    48,   290,
     2846     291,   292,   293,   277,     0,     0,     0,  1005,     0,   278,
     2847       0,     0,     0,   279,     0,     0,   280,   281,   282,   283,
     2848     284,   285,    43,    44,     0,   286,   287,     0,     0,     0,
     2849       0,     0,     0,   274,   275,     0,   276,     0,     0,     0,
     2850       0,     0,     0,     0,     0,     0,     0,     0,   288,     0,
     2851     370,     0,     0,     0,     0,   731,    47,    48,   290,   291,
     2852     292,   293,   277,     0,     0,     0,     0,     0,   278,     0,
     2853       0,     0,   279,     0,     0,   280,   281,   282,   283,   284,
     2854     285,    43,    44,     0,   286,   287,     0,     0,     0,     0,
     2855       0,     0,   274,   275,     0,   276,     0,     0,     0,     0,
     2856       0,     0,     0,     0,     0,     0,     0,   499,     0,   370,
     2857       0,     0,     0,     0,     0,    47,    48,   290,   291,   292,
     2858     293,   277,     0,     0,     0,     0,     0,   278,     0,     0,
     2859       0,   279,     0,     0,   280,   281,   282,   283,   284,   285,
     2860      43,    44,     0,   286,   287,     0,     0,     0,     0,     0,
     2861       0,   274,   275,     0,   276,     0,     0,     0,     0,     0,
     2862       0,     0,     0,     0,     0,     0,   504,     0,   370,     0,
     2863       0,     0,     0,     0,    47,    48,   290,   291,   292,   293,
     2864     277,     0,     0,     0,     0,     0,   278,     0,     0,     0,
     2865     279,     0,     0,   280,   281,   282,   283,   284,   285,    43,
     2866      44,     0,   286,   287,     0,     0,     0,     0,     0,     0,
     2867     274,   275,     0,   276,     0,     0,     0,     0,     0,     0,
     2868       0,     0,     0,     0,     0,   507,     0,   370,     0,     0,
     2869       0,     0,     0,    47,    48,   290,   291,   292,   293,   277,
     2870       0,     0,     0,     0,     0,   278,     0,     0,     0,   279,
     2871       0,     0,   280,   281,   282,   283,   284,   285,    43,    44,
     2872       0,   286,   287,     0,     0,     0,     0,     0,     0,   274,
     2873     275,     0,   276,     0,     0,     0,     0,     0,     0,     0,
     2874       0,     0,     0,     0,   288,     0,   370,     0,     0,     0,
     2875       0,     0,   683,    48,   290,   291,   292,   293,   277,     0,
     2876       0,     0,     0,     0,   278,     0,     0,     0,   279,     0,
     2877       0,   280,   281,   282,   283,   284,   285,    43,    44,     0,
     2878     286,   287,     0,     0,     0,     0,     0,     0,     0,     0,
    26822879       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2683      286,    36,     0,     0,     0,     0,   287,     0,    40,    41,
    2684      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2685       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2686        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2687        0,     0,     0,     0,     0,   297,     0,   343,     0,     0,
    2688        0,     0,     0,    47,    48,   299,   300,   301,   302,     8,
    2689        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2690       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2691        0,    28,    29,    30,     0,     0,     0,     0,     0,   283,
    2692      284,    33,   285,     0,     0,     0,     0,     0,     0,     0,
    2693        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2694        0,     0,     0,     0,     0,     0,     0,     0,   286,    36,
    2695        0,     0,     0,     0,   287,     0,    40,    41,   288,     0,
    2696        0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    2697      295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
    2698        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2699        0,     0,     0,   297,     0,   378,     0,     0,     0,     0,
    2700        0,    47,    48,   299,   300,   301,   302,     8,     9,    10,
     2880       0,     0,     0,   288,     0,   370,     0,     0,     0,     0,
     2881       0,   336,    48,   290,   291,   292,   293,     8,     9,    10,
    27012882      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    27022883      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    27032884      29,    30,     0,     0,     0,     0,     0,     0,     0,    33,
    2704        0,     0,     0,     0,     0,     0,     0,     8,     9,    10,
     2885     201,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    27052886      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    27062887      21,    22,    23,    24,    25,    26,    27,    36,     0,    28,
    2707       29,    30,    39,     0,    40,    41,    42,     0,     0,    33,
     2888      29,    30,   110,     0,    40,    41,     0,     0,     0,    33,
    27082889       0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
    27092890       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2710        0,     0,     0,     0,     0,     0,     0,    36,     0,     0,
    2711        0,    45,    39,    46,   208,    41,    42,     0,     0,    47,
    2712       48,     0,     0,     0,     0,    43,    44,     0,     0,     0,
     2891       0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
     2892       0,    38,     0,     0,   203,    41,   456,     2,   202,     4,
     2893       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2894      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2895      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
     2896       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    27132897       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27142898       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2715        0,    45,     0,   271,     0,     0,     0,     0,     0,    47,
    2716       48,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2717       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2718       27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2719        0,     0,     0,    33,   678,     0,     0,     0,     0,     0,
    2720        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2721       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2722       27,    36,     0,    28,    29,    30,     0,     0,    40,    41,
    2723        0,     0,     0,    33,   678,     0,     0,     0,     0,     0,
     2899       0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
     2900      40,    41,     2,   202,     4,     5,     6,     7,     8,     9,
     2901      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2902      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2903      28,    29,    30,     0,     0,     0,     0,     0,     0,     0,
     2904      33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2905       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2906       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
     2907      37,     0,    38,     0,     0,   203,    41,     8,     9,    10,
     2908      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2909      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2910      29,    30,   474,   475,   476,   477,     0,     0,     0,    33,
    27242911       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27252912       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2726        0,    36,     0,     0,     0,     0,     0,   679,    40,    41,
    2727        0,  1078,     0,    47,    48,     0,     8,     9,    10,    11,
    2728       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2729       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2730       30,     0,     0,     0,     0,     0,     0,   679,    33,     0,
    2731        0,  1205,     0,    47,    48,     0,     8,     9,    10,    11,
    2732       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2733       22,    23,    24,    25,    26,    27,    36,     0,    28,    29,
    2734       30,     0,     0,   208,    41,     0,     0,     0,    33,     8,
    2735        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2736       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2737        0,    28,    29,    30,     0,     0,    36,     0,     0,     0,
    2738        0,    33,   271,    40,    41,     0,     0,     0,    47,    48,
    2739        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2740        0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
    2741        0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
    2742        0,     0,   339,     0,     0,     0,     0,     0,    47,    48,
    2743        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2744       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2745       24,    25,    26,    27,     0,   679,    28,    29,    30,     0,
    2746        0,    47,    48,     0,     0,     0,    33,     0,     2,   207,
    2747        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2748       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2749       24,    25,    26,    27,    36,     0,    28,    29,    30,     0,
    2750        0,    40,    41,     0,     0,     0,    33,     0,     0,     0,
    2751        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2752        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2753        0,     0,     0,     0,    36,     0,    37,     0,    38,     0,
    2754      671,    40,    41,     0,     0,     0,    47,    48,   283,   284,
    2755        0,   285,  1023,     0,  1024,     0,     0,  1025,  1026,  1027,
    2756     1028,  1029,  1030,  1031,  1032,     0,     0,     0,  1033,     0,
    2757        0,     0,  1034,  1035,     0,    35,     0,   286,     0,  -420,
    2758        0,     0,     0,  1036,     0,   175,   176,  1039,     0,     0,
    2759      289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
    2760      296,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2761        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2762        0,     0,   297,     0,   378,     0,     0,   172,     0,     0,
    2763       47,    48,   299,   300,   301,   302,     0,     0,     0,     0,
    2764     1040,     0,     0,     0,     0,  -134,     2,   207,     4,     5,
    2765        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2766       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2767       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2768        0,     0,     0,     0,    33,     0,   283,   284,     0,   285,
    2769     1023,     0,  1024,  1388,  1389,  1025,  1026,  1027,  1028,  1029,
    2770     1030,  1031,  1032,     0,     0,  1516,  1033,     0,     0,     0,
    2771     1034,  1035,    36,    35,    37,   286,    38,     0,     0,    40,
    2772       41,  1036,     0,   175,   176,  1039,     0,     0,   289,   290,
    2773      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2774        0,     0,     0,  1299,     0,     0,     0,     0,     0,     0,
    2775        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2776      297,     0,   378,     0,     0,   172,     0,     0,    47,    48,
    2777      299,   300,   301,   302,     0,     0,   283,   284,  1040,   285,
    2778     1023,     0,  1024,  1388,  1389,  1025,  1026,  1027,  1028,  1029,
    2779     1030,  1031,  1032,     0,     0,     0,  1033,     0,     0,     0,
    2780     1034,  1035,     0,    35,     0,   286,     0,     0,     0,     0,
    2781        0,  1036,     0,   175,   176,  1039,     0,     0,   289,   290,
    2782      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2783        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2784        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2785      297,     0,   378,     0,     0,   172,     0,     0,    47,    48,
    2786      299,   300,   301,   302,     0,     0,   283,   284,  1040,   285,
    2787     1023,     0,  1024,     0,     0,  1025,  1026,  1027,  1028,  1029,
    2788     1030,  1031,  1032,     0,     0,     0,  1033,     0,     0,     0,
    2789     1034,  1035,     0,    35,     0,   286,     0,     0,     0,     0,
    2790        0,  1036,     0,   175,   176,  1039,     0,     0,   289,   290,
    2791      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2792        0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
    2793        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2794      297,     0,   378,     0,     0,   172,     0,     0,    47,    48,
    2795      299,   300,   301,   302,   286,     0,     0,     0,  1040,     0,
    2796      287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
    2797      292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
    2798        0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
    2799        0,     0,     0,     0,     0,     0,     0,     0,     0,   510,
    2800        0,   378,     0,     0,     0,     0,     0,    47,    48,   299,
    2801      300,   301,   302,   286,     0,     0,     0,     0,     0,   287,
    2802        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2803      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2804        0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
    2805        0,     0,     0,     0,     0,     0,     0,     0,   513,     0,
    2806      378,     0,     0,     0,     0,     0,    47,    48,   299,   300,
    2807      301,   302,   286,     0,     0,     0,     0,     0,   287,     0,
    2808        0,     0,   288,     0,     0,   289,   290,   291,   292,   293,
    2809      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    2810        0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
    2811        0,     0,     0,     0,     0,     0,     0,   297,     0,   378,
    2812        0,     0,     0,     0,     0,   702,    48,   299,   300,   301,
    2813      302,   286,     0,     0,     0,     0,     0,   287,     0,     0,
    2814        0,   288,     0,     0,   289,   290,   291,   292,   293,   294,
    2815       43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
    2816        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2817        0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
    2818        0,     0,     0,     0,   344,    48,   299,   300,   301,   302,
    2819        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2820       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2821        0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
    2822        0,     0,    33,   206,     2,   207,     4,     5,     6,     7,
    2823        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2824       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2825       36,     0,    28,    29,    30,   112,     0,    40,    41,     0,
    2826        0,     0,    33,     0,     0,     0,     0,     0,    43,    44,
    2827        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2828        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2829       36,     0,    37,     0,    38,     0,     0,   208,    41,   465,
    2830        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2831       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2832       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2833       30,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2834        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2835        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2836        0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    2837       38,     0,     0,    40,    41,     2,   207,     4,     5,     6,
    2838        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2839       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2840       27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2841        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2842        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2843        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2844        0,    36,     0,    37,     0,    38,     0,     0,   208,    41,
    2845        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2846       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2847        0,     0,    28,    29,    30,   483,   484,   485,   486,     0,
    2848        0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
    2849        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2850        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2851       36,     0,     0,     0,     0,     0,     0,    40,    41
     2913       0,     0,     0,     0,     0,     0,     0,    36,     0,     0,
     2914       0,     0,     0,     0,    40,    41
    28522915};
    28532916
    28542917#define yypact_value_is_default(yystate) \
    2855   ((yystate) == (-1328))
     2918  ((yystate) == (-1276))
    28562919
    28572920#define yytable_value_is_error(yytable_value) \
     
    28602923static const yytype_int16 yycheck[] =
    28612924{
    2862        0,     1,     0,   186,    45,     1,   240,   186,   118,    45,
    2863      186,   533,   205,    45,   186,   186,   186,   520,     0,   186,
    2864      743,   187,   743,   743,    51,   220,   863,  1022,   863,   640,
    2865     1005,    31,    32,   968,    34,     0,    34,   169,   170,   349,
    2866      512,   598,   349,   616,   491,    45,    34,   598,   495,   664,
    2867      188,    51,    34,    51,   569,    45,   599,     0,   345,    59,
    2868      689,  1388,   605,     0,    45,    65,    45,    65,    68,    34,
    2869       68,    71,     0,    71,   364,    71,  1004,  1005,   368,  1309,
    2870     1015,  1118,    42,   266,    84,    85,   596,   266,   115,   187,
    2871      266,    34,   202,   229,   266,   266,   266,    34,   107,   266,
    2872      596,   267,   596,    66,  1034,  1035,    34,    30,   108,   417,
    2873       84,   111,   248,    51,   596,   596,   596,    45,   118,  1392,
    2874      596,   148,   114,    51,   262,   263,    42,    65,   436,   480,
    2875       68,    84,   100,    71,  1461,   282,   444,    65,   257,    32,
    2876       68,   686,   116,    71,   136,   186,   124,   125,   157,   149,
    2877      186,   149,   630,   631,   186,   114,   116,    54,    81,  1031,
    2878        0,   161,   297,   161,    47,    48,   134,   782,   646,   267,
    2879      893,    90,   893,   893,   137,     0,     1,   792,   681,  1409,
    2880      487,  1493,   631,   210,  1114,  1022,   186,   187,   803,   187,
    2881      101,    84,    85,   480,    34,    67,   186,   646,   114,   118,
    2882      116,  1238,   202,  1240,  1241,   186,   728,   186,  1520,    34,
    2883      210,   149,   210,   240,   409,  1488,   127,   114,   712,   219,
    2884     1493,   149,   222,   161,   222,   266,   704,   121,    68,   229,
    2885      266,   712,   114,   161,   266,  1210,   712,   120,   112,   405,
    2886     1513,   135,   114,    68,   244,   272,    71,  1520,   248,   187,
    2887      101,    42,   252,   253,   252,   704,    42,   814,   186,   187,
    2888      121,   804,   136,   814,   252,   894,   266,   267,  1443,   267,
    2889      252,   786,   210,   273,   135,   257,   127,    51,    42,   630,
    2890      631,  1276,   210,   310,   222,   395,   121,   252,   598,  1264,
    2891      425,   426,   802,   117,   222,   646,   586,   121,   417,    42,
    2892      135,   912,    42,  1478,   117,  1480,   802,   405,   802,   252,
    2893      939,   121,   478,   423,   257,   252,     1,   436,   345,   429,
    2894      802,   802,   802,    11,   252,   444,   802,   137,   114,   616,
    2895      116,   331,   341,   331,   621,  1263,  1264,   627,   266,    47,
    2896       48,   115,   114,   600,   889,    47,    48,   604,   348,   349,
    2897      114,   244,   116,   704,   133,   117,   503,   136,  1195,   121,
    2898     1195,   115,   114,   135,   921,   365,    51,   675,   625,   369,
    2899      505,   114,   629,   116,   114,   510,   116,    75,   513,   379,
    2900      478,   135,   222,   115,  1319,   119,  1001,  1002,   739,   121,
    2901       88,    89,   117,   331,   115,   395,   121,   222,   425,   426,
    2902      285,   425,   426,   331,  1276,   405,   121,   405,   115,  1384,
    2903      983,   119,   252,     3,   135,   121,   114,   119,   116,     3,
    2904       75,   349,   107,   423,   920,   310,   311,   252,   135,   429,
    2905      115,   137,   567,    88,    89,   417,   210,  1432,   920,  1276,
    2906      920,  1376,  1377,   114,  1439,   116,   121,  1062,  1063,   992,
    2907      993,   954,   739,   689,   436,     1,  1384,     0,     1,   462,
    2908      345,   116,   444,   148,   117,   465,   493,   405,   121,   493,
    2909      470,     0,   157,   121,   417,  1104,     0,   405,   478,  1351,
    2910      478,   114,   482,   930,   482,   512,   379,   487,   512,   137,
    2911      490,    34,   492,   436,   966,   380,  1491,   116,   272,   118,
    2912      482,   444,  1113,    10,   814,   795,    75,   814,   121,   641,
    2913      350,   136,   650,   660,   121,   681,   135,   482,   863,    88,
    2914       89,   206,   114,   297,   137,   210,  1493,   527,    71,  1086,
    2915      137,   114,   532,   116,  1163,  1164,   310,   480,   648,   482,
    2916      114,   892,    95,    96,   780,   482,  1513,   116,    75,   576,
    2917       77,    78,   576,  1520,   482,   240,   675,   121,   115,   487,
    2918      121,    88,    89,   117,  1436,   121,  1438,   121,    75,  1072,
    2919       77,    78,   121,   137,  1077,   114,   137,   130,   131,   836,
    2920      580,   137,   701,   681,   731,   121,   114,   272,   137,   616,
    2921      275,   114,   119,   116,   621,  1432,   596,   490,   598,   492,
    2922     1102,   137,  1439,   121,  1106,   892,     4,     5,     6,     7,
    2923        8,     9,   297,   121,   114,   115,   852,   617,   925,   137,
    2924     1492,    75,   114,    77,    78,   310,   114,   121,   121,   137,
    2925     1245,   471,   632,   115,    88,    89,   636,  1252,  1253,  1254,
    2926       93,    94,   482,   137,   137,   645,  1464,   647,   648,   649,
    2927      587,   115,  1470,  1004,  1491,   850,   341,   482,   894,   115,
    2928      345,   664,   116,   115,   549,   550,   551,   115,   596,   926,
    2929      598,   115,  1490,   121,    72,   870,    74,  1495,   452,   364,
    2930     1025,   681,   114,   368,   115,   685,   114,   687,   116,   114,
    2931      121,   691,   114,   675,   122,   123,   983,   120,   932,   699,
    2932     1315,   137,    75,   939,    77,    78,    79,   253,    67,   252,
    2933      893,   114,   712,   713,   893,    88,    89,   893,   114,   701,
    2934      116,   893,   893,   893,   856,   114,   893,   116,   115,   895,
    2935      114,   505,   675,   507,   121,   971,   510,   137,    75,   513,
    2936      425,   426,  1371,   636,   119,     4,     5,     6,     7,     8,
    2937        9,    88,    89,   681,   114,   122,   116,    72,   701,  1388,
    2938       75,   128,   129,    78,   137,    80,   114,   452,   116,   115,
    2939     1292,   114,    87,   116,  1497,   121,  1497,  1497,   618,   782,
    2940      465,   115,  1133,  1019,   712,   713,   114,   121,   116,   792,
    2941       97,    98,   685,   115,   687,   115,   739,   895,   691,   121,
    2942      803,   121,   802,   996,   137,   898,   491,   900,   493,   114,
    2943      495,   116,   137,    72,   814,    74,   119,   122,   123,   119,
    2944      505,   114,   507,   116,   114,   510,    84,   512,   513,   122,
    2945      123,  1460,  1461,   115,    75,    59,    77,    78,    79,   121,
    2946       10,    11,    12,    13,    14,   115,  1133,    88,    89,   115,
    2947     1195,   121,   692,   120,   121,   121,   856,    10,    11,    12,
    2948       13,    14,   862,   863,   115,   750,   706,   114,  1104,   115,
    2949      121,   505,    42,   507,   802,   121,   510,   115,   137,   513,
    2950      114,   863,   115,   121,   108,  1017,   814,   111,   121,    42,
    2951      132,   576,    84,   893,   123,   895,   137,   115,   213,    99,
    2952       70,   586,   902,   121,   678,   932,  1072,   115,   115,   115,
    2953      115,  1077,  1263,   121,   121,   121,   121,    70,   133,   465,
    2954      863,   115,   116,  1210,   117,   925,   863,  1163,  1164,    61,
    2955       62,   616,   114,   115,   116,   931,   621,   120,   121,   482,
    2956       47,    48,   627,   116,   114,   945,   116,   115,   885,   892,
    2957     1295,   117,   122,   123,   115,  1102,   983,   797,   958,  1106,
    2958     1107,  1119,  1120,   856,   964,   893,   115,   895,   968,   862,
    2959     1473,   114,   115,   116,  1072,   556,   557,   558,   559,  1077,
    2960      115,   527,   552,   553,  1094,   115,   532,     4,     5,     6,
    2961        7,     8,     9,   678,    75,   219,   115,   925,  1001,  1002,
    2962     1345,    82,   114,  1348,    85,   116,    87,    88,    89,   902,
    2963      114,   115,   116,   554,   555,  1015,   560,   561,    35,  1522,
    2964      117,   119,    75,   863,   119,  1025,    79,   121,  1028,  1029,
    2965     1030,   716,   119,   136,   580,    88,    89,   352,   863,   354,
    2966     1022,  1176,  1177,   136,  1179,   114,   117,  1392,   115,   273,
    2967     1185,   115,  1397,  1188,   117,    72,   117,    74,  1058,  1062,
    2968     1063,   114,   135,   116,    31,   958,   114,   115,   116,   122,
    2969      123,   121,  1072,  1220,    61,    62,    63,  1077,   135,  1022,
    2970      135,  1426,   115,   115,   119,  1022,   120,   115,    10,    11,
    2971       12,    13,    14,   120,  1094,    75,   120,   115,   983,    79,
    2972      121,   647,    75,   649,    77,    78,   931,   114,    88,    89,
    2973      795,   137,   135,     0,     1,    88,    89,   115,  1118,   121,
    2974       42,     3,   115,   115,   348,   440,   115,   115,    10,    11,
    2975       12,    13,    14,   907,   114,  1371,   121,  1022,   115,     0,
    2976        1,   365,   122,   123,  1072,   369,   986,    34,    70,  1077,
    2977      115,   115,  1388,   699,   115,   115,   115,   115,    45,   115,
    2978       42,   115,   115,  1310,    51,  1058,  1511,  1314,   115,   115,
    2979     1170,   120,  1517,    34,    31,   115,   115,   121,    65,  1175,
    2980      135,    68,  1022,  1528,    71,   136,   117,  1532,    70,   117,
    2981     1133,   115,   114,   135,   116,  1195,   115,  1022,   114,   119,
    2982      122,   123,   115,   121,   115,  1208,   115,    68,   115,   121,
    2983       71,   115,  1347,  1195,   115,   121,   121,   114,  1214,   114,
    2984      107,   114,   907,    75,  1460,  1461,   114,   135,   115,   114,
    2985       82,   118,   119,    85,   137,    87,    88,    89,  1238,   135,
    2986     1240,  1241,  1245,   135,   121,   930,   931,   932,   120,  1252,
    2987     1253,  1254,  1195,   115,   135,   115,   120,  1367,  1195,   115,
    2988      133,   148,   149,   117,   116,   120,  1413,  1210,   119,   137,
    2989      157,   158,   115,  1507,   161,    75,   117,  1170,    75,   121,
    2990       77,    78,    82,   117,   115,    85,   115,    87,    88,    89,
    2991      117,    88,    89,  1067,  1276,  1295,    75,   158,   983,   186,
    2992      187,   117,   117,    82,   115,   117,    85,   117,    87,    88,
    2993       89,   117,  1315,  1309,  1497,   202,   116,   114,  1497,  1319,
    2994      863,  1497,   119,   210,    50,  1497,  1497,  1497,   137,   137,
    2995     1497,   120,  1498,  1276,  1174,   222,   137,   116,    75,  1276,
    2996       77,    78,    79,   137,   137,  1345,   115,   120,  1348,  1174,
    2997     1175,    88,    89,   240,   135,  1195,  1522,   115,   120,    86,
    2998      117,   222,   117,  1473,   117,   252,  1366,  1367,   117,   117,
    2999     1195,   117,   115,   260,   115,   117,  1376,  1377,   265,   266,
    3000      267,   114,  1067,   114,   114,   272,    63,   115,   931,  1214,
    3001       75,   252,  1392,   617,    79,   115,   119,  1397,   114,   945,
    3002     1498,   137,   117,    88,    89,   117,    57,   115,   632,   101,
    3003      297,   117,   115,  1409,  1414,   101,   114,   114,   964,   137,
    3004      120,   645,   968,   310,  1522,   115,  1426,   115,   115,   114,
    3005      121,  1271,   115,    45,   135,   137,  1276,   122,   123,   326,
    3006      115,   137,   115,   101,   331,   101,  1271,   462,    99,   115,
    3007     1432,  1276,   115,   137,   341,   137,  1497,  1439,   345,   137,
    3008      117,  1497,   349,   350,   117,  1497,   115,   115,   120,  1015,
    3009        0,     1,   117,  1473,  1474,   137,   114,   364,   137,  1022,
    3010     1507,   368,   115,  1483,  1309,   120,   120,   115,  1488,  1432,
    3011      137,   115,   115,  1493,   562,  1432,  1439,  1497,  1498,   564,
    3012     1498,   563,  1439,  1040,    34,   565,   963,   566,   395,  1491,
    3013     1461,  1511,    75,  1513,    77,    78,    79,  1517,   405,  1195,
    3014     1520,    51,  1522,  1353,  1522,    88,    89,  1532,  1528,  1214,
    3015     1286,  1107,  1532,  1314,  1439,  1077,   423,  1058,   425,   426,
    3016      678,    71,   429,   194,   431,   678,   900,   691,  1491,     3,
    3017       75,   114,    77,    78,  1491,   908,    10,    11,    12,    13,
    3018       14,   580,   856,    88,    89,   452,   217,   958,   642,  1497,
    3019      431,   716,  1118,   928,  1214,   727,   227,   107,   568,    -1,
    3020      482,    -1,   568,   470,  1409,   568,    -1,    -1,    42,   114,
    3021       -1,   478,  1432,   480,   119,   482,    -1,    -1,    -1,  1439,
    3022      487,    -1,    -1,    -1,    -1,    -1,   493,  1432,    10,    11,
    3023       12,    13,    14,    -1,  1439,    -1,    70,    -1,   505,   149,
    3024      507,   482,    -1,   510,  1309,   512,   513,   157,   158,    -1,
    3025       -1,    -1,  1175,   520,    -1,    -1,    -1,   524,    -1,    -1,
    3026       42,    75,    -1,    77,    78,    79,   297,    -1,    -1,   664,
    3027       -1,  1491,  1195,    -1,    88,    89,    -1,   187,    -1,    -1,
    3028       -1,    -1,    -1,   524,    -1,    -1,  1491,  1441,    70,  1443,
    3029       -1,  1214,   202,    75,    -1,   205,   206,    79,    -1,    -1,
    3030      210,   568,   569,    -1,    -1,    -1,    88,    89,   122,   576,
    3031       -1,    -1,  1238,    -1,  1240,  1241,    -1,    -1,    -1,   586,
    3032      587,   231,    -1,   590,  1478,   235,  1480,   237,    -1,   596,
    3033       -1,   598,   114,    -1,    -1,    -1,   246,    -1,    -1,    -1,
    3034      122,   123,   252,    -1,  1409,    -1,   587,   257,    75,   616,
    3035       77,    78,    79,  1276,   621,    -1,   623,   267,    -1,    -1,
    3036      627,    88,    89,   630,   631,   275,    -1,    -1,    -1,    -1,
    3037       75,    -1,    77,    78,    79,    -1,  1441,    -1,  1443,   646,
    3038       -1,   648,    -1,    88,    89,    -1,  1309,   782,    -1,   630,
    3039      631,    -1,    -1,  1319,    -1,    -1,    -1,   792,    -1,    -1,
    3040       10,    11,    12,    13,    14,   646,    -1,    -1,   803,   114,
    3041      441,   678,    -1,  1478,   681,  1480,    -1,    -1,     0,    -1,
    3042       -1,    -1,    -1,    -1,  1028,  1029,  1030,    -1,    -1,    -1,
    3043       -1,   341,    42,    -1,    -1,   345,   467,   704,   705,   706,
    3044       -1,   351,  1507,    -1,    -1,   712,   713,    -1,    -1,    -1,
    3045     1376,  1377,    34,    -1,   364,    -1,    -1,    -1,   368,    -1,
    3046       70,    -1,    -1,   704,    -1,    -1,    -1,    10,    11,    12,
    3047       13,    14,   739,    -1,   505,    -1,   743,   744,    -1,   510,
    3048       -1,    -1,   513,     3,    -1,    -1,  1409,    -1,  1414,    71,
    3049       10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    42,
    3050       -1,    -1,    -1,    -1,   114,    -1,   116,   417,    -1,  1432,
    3051       -1,    -1,   122,   123,    -1,    -1,  1439,    -1,    -1,   786,
    3052       -1,   431,    42,    -1,    -1,    -1,   436,    70,   795,    -1,
    3053      797,    -1,    75,     0,   444,   802,    79,    -1,    -1,    -1,
    3054       -1,    -1,    -1,    -1,    -1,    88,    89,   814,  1474,    68,
    3055       70,    -1,   462,    -1,    -1,   465,    -1,  1483,    77,    -1,
    3056       -1,    -1,    -1,    -1,    -1,    -1,    -1,    34,  1491,    -1,
    3057      480,   114,   482,    -1,    -1,    -1,   158,    -1,    -1,   122,
    3058      123,   491,   190,    -1,    -1,   495,    -1,    -1,    75,   197,
    3059       77,    78,    79,    -1,    -1,    -1,   863,    -1,    -1,    -1,
    3060      119,    88,    89,    -1,    71,    68,  1001,  1002,    -1,    -1,
    3061       -1,    -1,    -1,    -1,   524,    -1,    -1,    -1,   885,    -1,
    3062       -1,    84,   863,    -1,    -1,   892,   893,   114,   895,   116,
    3063       -1,    -1,   663,    -1,    -1,   122,   123,    -1,    -1,    -1,
    3064      907,   672,   161,    -1,   885,   676,    -1,    -1,   135,   231,
    3065       -1,    -1,    -1,   920,   921,    -1,   119,    -1,   925,   569,
    3066       -1,   269,    -1,    -1,   931,   932,    -1,  1062,  1063,    -1,
    3067      252,    -1,    -1,    -1,    -1,   257,   586,   587,    -1,    -1,
    3068       75,    -1,    77,    78,    79,    -1,    -1,   954,   598,    -1,
    3069      931,   158,    -1,    88,    89,    -1,    -1,    -1,   161,    -1,
    3070       -1,    -1,    -1,   222,    -1,    -1,   616,    -1,    -1,    -1,
    3071       75,   621,    77,    78,    79,    -1,   983,   627,   326,   114,
    3072      630,   631,    -1,    88,    89,    68,   334,   122,   123,   337,
    3073       -1,    75,    -1,    77,    78,    79,   646,  1004,  1005,    -1,
    3074       -1,   260,    -1,    -1,    88,    89,   265,    -1,    -1,   114,
    3075       -1,   116,    -1,    -1,   664,  1022,    -1,   122,   123,   222,
    3076       -1,    -1,  1366,  1004,  1005,   675,    -1,    -1,    -1,   351,
    3077      114,    -1,   116,    -1,    -1,    -1,   119,    -1,   122,   123,
    3078       -1,  1022,    -1,    -1,    -1,   252,    -1,    -1,    -1,   397,
    3079      257,   701,    -1,   401,   704,    -1,    -1,   260,    -1,    -1,
    3080     1067,    -1,   265,   713,    -1,  1072,   716,    -1,    -1,    -1,
    3081     1077,    -1,    -1,  1208,    -1,    -1,    -1,    -1,   161,  1086,
    3082       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1094,    -1,   739,
    3083       -1,   350,    -1,    -1,   744,   417,   102,   103,   104,   105,
    3084      106,   107,   108,   109,   110,   111,   112,    -1,    -1,   431,
    3085     1245,    -1,    -1,    -1,   436,    -1,   887,  1252,  1253,  1254,
    3086       -1,    -1,   444,    -1,    -1,    -1,  1133,    -1,    -1,   477,
    3087      136,    -1,   782,    -1,    -1,    -1,    -1,    -1,    -1,   222,
    3088      462,    -1,   792,    -1,   351,   795,    -1,   350,   798,    -1,
    3089       -1,    -1,    -1,   803,    -1,    -1,    -1,     0,   480,    -1,
    3090      482,    -1,    -1,   813,    -1,    -1,    -1,  1174,  1175,    -1,
    3091       75,   430,    77,    78,    79,    -1,    -1,   260,    -1,    -1,
    3092     1315,    -1,   265,    88,    89,    -1,    -1,   446,  1195,    -1,
    3093       -1,    34,    -1,  1174,  1175,    -1,    -1,    -1,    -1,    -1,
    3094       -1,    -1,   524,  1210,    -1,    -1,    -1,  1214,    -1,   114,
    3095      417,   116,   471,   863,  1195,    -1,    -1,   122,   123,    -1,
    3096      568,   569,    -1,    -1,   431,    -1,    -1,   430,    71,   436,
    3097       -1,    -1,    -1,  1214,    -1,   885,    -1,   444,    -1,    -1,
    3098       -1,    -1,   892,    -1,    -1,   895,    75,    -1,    77,    78,
    3099       79,    -1,    -1,    -1,    -1,   462,  1263,  1264,    -1,    88,
    3100       89,    -1,  1033,    -1,  1271,   587,    -1,   350,   471,  1276,
    3101       -1,   921,    -1,   480,    -1,   482,    -1,    -1,    -1,    -1,
    3102      930,   931,  1263,  1264,    -1,   114,    -1,    -1,    -1,    -1,
    3103     1271,    -1,    -1,   122,   123,  1276,    -1,    -1,    -1,    -1,
    3104       -1,    -1,  1309,   651,    -1,    -1,    86,   655,   630,   631,
    3105       90,    91,    92,    -1,    -1,   158,    -1,   524,    -1,    -1,
    3106       -1,    -1,    -1,    -1,   646,    -1,    -1,    -1,  1309,    -1,
    3107       -1,   590,    -1,   983,   114,    -1,   116,    -1,   118,   119,
    3108       -1,    -1,   664,    -1,    -1,    -1,   996,   430,    -1,    -1,
    3109       -1,  1001,  1002,   675,  1004,  1005,    -1,    -1,    -1,   618,
    3110     1367,    86,    -1,    -1,   623,    90,    91,    92,    -1,    -1,
    3111       -1,    -1,  1022,    -1,    -1,    -1,    -1,  1384,    -1,   701,
    3112      587,    -1,   704,    -1,    -1,    -1,    -1,   590,   471,   114,
    3113       -1,   116,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,
    3114       -1,    -1,  1409,  1384,    -1,    -1,    -1,    -1,    -1,   252,
    3115       -1,    -1,  1062,  1063,   257,   618,    -1,   739,    -1,    -1,
    3116      623,    -1,    -1,   630,   631,  1432,    -1,    -1,  1409,    -1,
    3117       -1,    -1,  1439,   692,  1441,    -1,  1443,    -1,   786,   646,
    3118       -1,    -1,    -1,    -1,    -1,    -1,    -1,   706,    -1,    -1,
    3119       -1,  1432,    -1,    -1,    -1,    -1,    -1,   664,  1439,    -1,
    3120      782,    -1,    -1,    -1,    -1,    -1,  1473,    -1,   675,    -1,
    3121      792,  1478,    -1,  1480,    -1,    -1,   798,    -1,    -1,    -1,
    3122       -1,   803,    -1,  1133,  1491,     0,    -1,    -1,    -1,   692,
    3123     1497,  1498,    -1,    -1,   701,    -1,    -1,   704,    -1,    -1,
    3124     1507,    -1,    -1,   706,    -1,    -1,    -1,   590,   351,    -1,
    3125     1491,    -1,    -1,    -1,  1285,  1522,    -1,    -1,    -1,    34,
    3126       -1,    -1,    -1,    -1,    -1,  1175,    -1,    -1,    -1,    -1,
    3127       -1,    -1,   739,    -1,    -1,   618,    -1,    -1,   797,    -1,
    3128      623,   863,    -1,    -1,    -1,  1195,    -1,    -1,    28,    29,
    3129       30,   899,    -1,    -1,    -1,    -1,    71,    -1,  1208,    -1,
    3130     1210,    -1,    -1,   885,  1214,    -1,    -1,    -1,    -1,    -1,
    3131      892,    -1,    -1,    -1,   417,   782,    -1,    -1,    -1,    -1,
    3132       -1,    -1,    -1,    -1,    -1,   792,    -1,    -1,   431,    -1,
    3133       -1,   798,    -1,   436,   797,  1245,   803,    -1,    -1,    -1,
    3134       -1,   444,  1252,  1253,  1254,    -1,    -1,    -1,    59,   692,
    3135       -1,    -1,    -1,  1263,  1264,    -1,    -1,    -1,    -1,   462,
    3136      100,    -1,   102,   706,    -1,   973,  1276,    -1,    -1,    -1,
    3137       -1,    -1,    -1,    -1,    -1,    -1,    -1,   480,    -1,   482,
    3138       -1,   989,    -1,   158,    -1,    -1,    -1,    -1,    -1,    -1,
    3139       -1,    -1,    -1,    -1,    -1,    -1,   863,   108,    -1,  1309,
    3140      111,    -1,    -1,    -1,    -1,  1315,    -1,    -1,    -1,  1440,
    3141       -1,  1442,    -1,    -1,    -1,    -1,    -1,    -1,   885,  1001,
    3142     1002,   524,  1004,  1005,    -1,   892,    -1,    -1,    -1,    -1,
     2925       0,     1,     0,   200,     0,    45,   180,   444,   180,     1,
     2926       0,   180,   843,    45,   180,    45,   590,   180,   506,   632,
     2927     180,   180,   525,   154,  1035,   183,   561,   341,  1035,   116,
     2928    1035,    31,    32,   608,    34,  1304,    34,   485,    34,     0,
     2929      34,   489,   105,   996,    34,    45,   246,   843,   341,   590,
     2930     337,    51,   970,    51,     0,   588,    42,   356,   215,    59,
     2931     588,   360,   165,   166,    64,    42,    64,    67,   878,    67,
     2932      70,    45,    70,    34,   703,   588,  1037,    67,    70,   588,
     2933     409,   255,    54,   255,   969,   970,   255,  1264,    34,   255,
     2934     153,    66,   255,   251,   252,   255,   255,    42,    45,   428,
     2935     592,    42,    67,   588,   596,    42,   106,   436,   588,   109,
     2936     197,    45,   417,   418,  1389,    84,   116,   933,    42,     0,
     2937       1,    42,    42,    30,   124,   617,   114,   999,  1000,   621,
     2938     116,    47,    48,   471,     1,   622,   623,   114,   100,   116,
     2939     180,    42,   114,  1412,   112,   145,    84,   145,   180,   114,
     2940     180,   638,    71,    34,   588,    74,   987,   157,    77,   157,
     2941      79,   101,   137,  1088,   980,     0,    85,   288,   136,   114,
     2942     591,   116,   134,   114,    81,   116,   597,   114,   116,   116,
     2943     180,   181,   487,   181,   471,   478,    67,   127,  1463,    70,
     2944     114,   987,   116,   114,   114,   116,   116,   197,   685,    34,
     2945      57,   506,   181,   114,   120,   205,   180,   205,   693,   409,
     2946      45,   714,  1084,   693,   214,   255,    51,   217,     0,   217,
     2947     794,    11,  1032,   255,   224,   255,  1187,   217,   428,    64,
     2948     114,   766,    67,   180,   234,    70,   436,   237,     0,     1,
     2949      97,   241,   242,   241,   401,   241,   180,   241,   101,   782,
     2950     246,   241,    34,   794,   782,   255,   256,  1434,   256,   693,
     2951     115,   117,   262,   568,  1441,   265,   121,   121,   276,   782,
     2952     333,   119,    34,   782,   127,   114,   590,   256,  1496,   578,
     2953     241,   910,  1200,   137,   622,   623,   899,    47,    48,   208,
     2954       3,   181,   423,   301,   302,   241,   135,   782,  1393,  1517,
     2955     638,  1226,   782,  1228,  1229,    90,  1524,    42,    70,     3,
     2956     145,  1264,    67,   887,  1496,    42,   121,  1494,    47,    48,
     2957     619,   608,   157,   323,   816,   323,   613,   121,   415,   337,
     2958     135,    42,   189,   118,   421,  1253,   217,  1168,    42,   668,
     2959     340,   341,  1524,   137,   122,   180,   181,   685,   782,    51,
     2960     128,   129,   342,   886,    42,   212,   121,   357,   886,   119,
     2961     241,   361,   117,   784,   372,   222,   256,  1252,  1253,    10,
     2962     205,   371,  1168,   948,   115,   242,   623,   886,   499,   114,
     2963     501,   116,   217,   504,     0,   516,   507,   114,   726,   116,
     2964     119,   638,  1345,   453,   135,   395,  1491,   395,   121,   115,
     2965     892,  1496,   157,   114,    75,   116,   241,  1036,   114,  1445,
     2966     114,   113,   116,   409,   137,   415,   395,    88,    89,   135,
     2967     255,   421,  1517,   114,   115,   344,   114,   346,   116,  1524,
     2968     136,   288,   428,  1264,    75,   115,    77,    78,   685,   726,
     2969     436,   224,   121,   931,  1480,   116,  1482,   121,   579,  1078,
     2970    1041,   115,  1043,   901,   237,   135,   456,   121,   137,   241,
     2971     121,   461,   217,   137,   246,     1,   903,  1385,   668,   469,
     2972    1083,   469,   462,   473,   135,   473,   775,   473,   478,   241,
     2973     794,   481,   682,   473,  1058,  1438,   486,  1440,   323,  1500,
     2974     469,   622,   623,  1500,   249,  1500,   115,  1313,   136,   254,
     2975    1385,   794,   121,   205,    75,   395,   341,   638,    79,  1138,
     2976    1139,     0,   473,   432,  1475,    51,   121,    88,    89,   519,
     2977     115,    59,    95,    96,   524,    75,   121,   473,   114,   114,
     2978     633,   116,   137,   541,   542,   543,   957,   958,    88,    89,
     2979    1501,   121,  1495,   114,     4,     5,     6,     7,     8,     9,
     2980     115,   122,   123,   640,   685,   135,   121,   130,   131,   261,
     2981     395,  1377,  1378,   117,   651,  1526,   116,   121,   106,   105,
     2982      75,   109,    77,    78,    79,  1466,   433,   113,   916,   469,
     2983     121,  1472,   117,    88,    89,   114,   121,   342,   588,   456,
     2984     590,    75,   473,    77,    78,    79,   137,   657,   891,   301,
     2985     121,   458,  1493,  1434,    88,    89,   121,  1498,   144,   609,
     2986    1441,   117,    72,   115,    74,   121,   137,   153,   114,   121,
     2987     610,    75,   137,   114,   624,   116,   273,   409,   628,   916,
     2988     115,   969,   137,   579,    88,    89,   121,   637,   473,   639,
     2989     640,   641,   499,   478,   114,   117,   428,   504,   121,   121,
     2990     507,   651,   519,   137,   436,   121,   114,   524,   121,   121,
     2991     114,   948,   116,  1494,   137,   201,   116,   422,   118,   205,
     2992     114,   137,   668,   830,   137,   137,   214,   137,   115,   114,
     2993     680,   115,   121,   673,   121,   135,   682,     0,     1,   471,
     2994      75,   473,   117,   693,   694,    75,   121,   687,   137,    79,
     2995     858,   701,   762,    88,    89,   705,   115,   462,    88,    89,
     2996     115,   473,   772,   773,   115,   133,   121,   115,   136,   703,
     2997     121,    34,   730,   783,   262,   261,   115,    75,   264,    77,
     2998      78,   115,    45,   836,   114,   114,   867,   121,    51,     3,
     2999      88,    89,   122,   123,  1373,   115,    10,    11,    12,    13,
     3000      14,    64,   288,   588,    67,   590,    75,    70,    77,    78,
     3001    1389,   115,   115,   114,   961,   301,   114,  1105,   121,    88,
     3002      89,   119,   639,   115,   641,   120,   760,  1280,    42,   121,
     3003     115,   114,   782,   116,  1076,   115,   121,   777,  1080,   122,
     3004     123,   121,   105,   114,   794,   124,   125,   333,   121,   656,
     3005     113,   337,   340,   116,   117,   115,    70,   114,   665,   116,
     3006      67,   121,   669,   680,   114,   122,   123,   114,  1105,   357,
     3007     356,   137,   115,   361,   360,    93,    94,   582,   121,   115,
     3008     114,   144,   145,  1462,  1463,   121,   836,   119,   969,   970,
     3009     153,   154,   842,   843,   157,   115,   137,   843,   832,   137,
     3010     497,   121,   119,   843,    84,   610,    97,    98,   693,   694,
     3011     615,  1035,   114,  1035,   114,    51,  1035,   180,   181,  1035,
     3012      84,  1028,  1035,   132,   874,  1035,  1035,   877,   123,   982,
     3013     133,   417,   418,    99,   197,    75,   668,    77,    78,    79,
     3014     116,   891,   205,   120,   121,   874,   117,   843,    88,    89,
     3015     682,   114,   115,   116,   217,   117,   966,   967,   444,   115,
     3016     902,   115,   116,  1200,  1252,    61,    62,   917,   673,   115,
     3017     456,   867,   115,   923,   114,   114,   910,   113,   241,   929,
     3018      47,    48,   687,   933,  1089,  1090,   249,    67,   120,   121,
     3019     948,   254,   255,   256,   726,   115,    76,   782,   261,   485,
     3020     115,   487,   936,   489,   548,   549,   550,   551,   144,   794,
     3021     115,   951,   843,   499,   137,   501,  1026,  1027,   504,   671,
     3022     506,   507,   114,   115,   116,   288,   114,   115,   116,   987,
     3023     980,  1068,   544,   545,   874,   546,   547,   117,   301,   117,
     3024     990,   987,   116,   993,   994,   995,   119,   987,   119,   288,
     3025     984,   114,   115,   116,   317,   136,   653,    61,    62,    63,
     3026     323,   121,   869,    10,    11,    12,    13,    14,   136,   205,
     3027     333,   902,   777,  1023,   337,   552,   553,   157,   341,   342,
     3028     119,   114,   568,  1033,   115,  1035,   115,  1037,   135,   874,
     3029     117,   987,   578,   356,   117,    42,   117,   360,   135,  1049,
     3030     917,   135,  1036,   121,  1033,    31,   891,   115,  1037,   115,
     3031     119,   843,   929,   115,   121,   120,   933,  1198,  1068,   120,
     3032     717,   609,   608,    70,  1511,   261,    75,   613,    77,    78,
     3033      79,   843,   395,   619,   120,   114,   624,   217,  1088,    88,
     3034      89,   115,   135,   137,  1078,   115,   121,   115,    75,   637,
     3035      77,    78,   415,   115,   417,   418,   987,   115,   421,   115,
     3036     423,    88,    89,   980,   121,   301,   120,   115,    31,   249,
     3037     115,  1252,  1253,   122,   254,   115,   115,   115,   417,   418,
     3038     115,   444,   115,   115,   916,   671,   115,   114,  1198,   119,
     3039     902,   998,   119,  1033,   115,  1145,   115,  1037,   461,   115,
     3040     136,   337,   115,   115,  1138,  1139,   469,   121,   471,   117,
     3041     473,   697,   117,   115,   115,   478,   114,   135,  1168,   115,
     3042     872,   121,  1168,  1233,   487,   119,   121,   115,  1168,   121,
     3043     121,  1241,  1242,  1243,   115,   114,   499,  1187,   501,   114,
     3044     114,   504,   114,   506,   507,   114,   951,   137,  1033,   135,
     3045    1035,   135,  1037,   516,   121,   987,   120,   135,  1187,   135,
     3046     499,   115,   342,  1205,   115,   504,   115,   135,   507,   117,
     3047     120,  1088,  1168,    75,   133,   987,  1226,   120,  1228,  1229,
     3048      82,   417,   418,    85,   119,    87,    88,    89,   115,   775,
     3049     137,   117,   121,    75,   117,    77,    78,   560,   561,   115,
     3050     115,   115,     3,   115,  1385,   568,    88,    89,   444,    10,
     3051      11,    12,    13,    14,   116,   578,   579,   117,  1264,   582,
     3052     559,   117,   117,   117,  1264,   588,    75,   590,    77,    78,
     3053      79,   117,  1369,  1283,   116,   843,   117,  1168,    50,    88,
     3054      89,    42,   422,  1293,   137,   608,   137,  1187,   137,   137,
     3055     613,   487,   615,   137,   120,   115,   619,   115,   438,   622,
     3056     623,   115,  1304,  1313,  1293,   114,    32,   115,  1264,    70,
     3057     506,   135,   115,  1105,  1205,   638,  1500,   640,  1500,   120,
     3058     120,  1500,   462,   117,  1500,   117,   872,  1500,   651,  1339,
     3059    1500,  1500,  1342,    86,   117,   117,   117,   117,   115,   115,
     3060    1052,  1411,  1187,   117,   114,   114,  1348,  1347,   671,  1226,
     3061     114,  1228,  1229,    63,   119,   901,   902,   903,  1368,  1369,
     3062     115,   115,   685,   686,   687,   114,   137,  1377,  1378,   117,
     3063     693,   694,   568,  1264,   117,   115,  1168,    75,  1475,  1373,
     3064     117,   115,   101,  1393,    82,   101,   114,    85,  1398,    87,
     3065      88,    89,   114,  1293,   115,  1389,  1168,   120,   124,   137,
     3066    1400,   115,   948,   726,   115,    45,  1273,  1417,  1200,   115,
     3067    1412,   135,   608,  1304,   121,   115,   115,   613,  1428,  1076,
     3068     137,   101,   990,  1080,  1081,   137,   101,   115,  1434,   137,
     3069     117,   115,   137,  1205,  1434,  1441,  1313,   115,   120,   115,
     3070     137,  1441,   582,   766,   117,   993,   994,   995,  1293,   117,
     3071    1500,   137,   775,   114,   777,   120,  1347,  1348,  1500,   782,
     3072    1500,   120,   115,   137,   115,  1475,  1476,  1179,  1462,  1463,
     3073     610,   794,  1264,   137,   115,   615,  1486,   115,  1434,  1005,
     3074     554,  1491,   555,   558,   556,  1441,  1496,   557,  1494,   928,
     3075    1500,  1501,  1264,  1501,  1494,  1168,  1463,  1350,  1536,  1081,
     3076    1377,  1378,  1309,  1274,  1441,  1515,  1052,  1517,   234,  1400,
     3077    1023,  1521,  1501,   872,  1524,  1033,  1526,    67,  1526,  1293,
     3078     843,  1412,  1532,  1043,   705,   895,  1536,   923,    75,   634,
     3079      77,    78,  1304,   673,   836,   697,  1205,  1526,  1494,   265,
     3080    1417,    88,    89,  1434,   867,   894,   713,   687,   473,   872,
     3081    1441,   874,    -1,    -1,  1211,    -1,   560,    75,   560,    77,
     3082      78,    79,    -1,   886,   887,    -1,   560,   117,   891,    -1,
     3083      88,    89,   119,    -1,    -1,  1442,  1348,  1444,    -1,   902,
     3084     903,    -1,  1347,     0,     1,    -1,     4,     5,     6,     7,
     3085       8,     9,    -1,   916,    -1,    -1,   114,    -1,   116,  1476,
     3086    1168,  1501,    -1,  1494,   122,   123,    -1,   157,   657,  1486,
     3087      -1,     3,  1479,    -1,  1481,    -1,    -1,    34,    10,    11,
     3088      12,    13,    14,    -1,    -1,   948,  1526,    -1,    -1,    -1,
     3089      -1,    -1,    -1,  1179,    51,  1400,    -1,   777,    -1,    -1,
     3090    1412,    -1,  1434,    -1,    -1,   371,   969,   970,  1305,  1441,
     3091      42,    -1,  1309,    70,    72,  1500,    74,    -1,  1525,  1205,
     3092    1527,    -1,  1434,    -1,   987,    -1,    -1,   217,    75,  1441,
     3093      77,    78,    79,  1540,  1541,    -1,    -1,    -1,    70,    -1,
     3094      -1,    88,    89,    -1,   234,    -1,    -1,    -1,   105,    10,
     3095      11,    12,    13,    14,    10,    11,    12,    13,    14,   249,
     3096      -1,    -1,  1494,    -1,   254,    -1,    -1,   903,    -1,    -1,
     3097    1033,    -1,  1035,   762,  1037,  1283,    -1,    -1,    -1,    -1,
     3098      -1,    42,  1494,   772,   773,    51,    42,    -1,   145,  1052,
     3099      -1,  1443,    -1,  1445,   783,  1058,   153,   154,    64,    -1,
     3100      -1,    67,    -1,    -1,    70,  1068,    -1,     0,    -1,    70,
     3101      -1,    -1,   948,    -1,    70,   481,    -1,    86,  1304,  1416,
     3102     486,    90,    91,    92,   181,    -1,    -1,    -1,  1480,    -1,
     3103    1482,  1339,    -1,    -1,  1342,    -1,    -1,    -1,    -1,    -1,
     3104     197,    34,  1105,   200,   201,   114,    -1,   116,   205,   118,
     3105     119,    -1,   342,   114,    -1,   116,    -1,    -1,   114,    -1,
     3106     116,   122,   123,    -1,    -1,    -1,   122,   123,    -1,   226,
     3107      -1,   951,    -1,   230,   185,   232,    -1,    70,   235,   145,
     3108    1368,   192,    -1,    -1,   241,  1393,    -1,    -1,    75,   246,
     3109    1398,   157,    79,    -1,    -1,    -1,    -1,    -1,    -1,   256,
     3110      -1,    88,    89,    -1,    -1,  1168,    -1,   264,    -1,    -1,
     3111    1149,  1150,    -1,  1152,    -1,   181,  1179,    -1,    -1,  1158,
     3112    1428,    -1,  1161,    -1,  1187,    -1,  1412,   114,    -1,   116,
     3113      -1,    -1,   422,    -1,    -1,   122,   123,  1200,    -1,   205,
     3114      -1,    75,  1205,    77,    78,    79,    -1,   258,    -1,    -1,
     3115      -1,   217,    -1,    -1,    88,    89,    -1,  1443,    -1,  1445,
     3116      -1,   154,   628,    -1,     4,     5,     6,     7,     8,     9,
     3117      -1,    -1,   462,    -1,    -1,    -1,   333,   966,   967,    -1,
     3118     337,    -1,    -1,    -1,    -1,    -1,   343,    -1,    -1,  1252,
     3119    1253,    -1,    -1,    -1,  1480,    35,  1482,    -1,    -1,   356,
     3120      -1,  1264,    -1,   360,    -1,    -1,   317,  1515,    75,    -1,
     3121      77,    78,    79,  1521,    -1,   326,    -1,    -1,   329,    -1,
     3122      -1,    88,    89,    -1,  1532,  1511,    -1,    -1,  1536,    -1,
     3123    1293,    -1,    72,   226,    74,   701,    -1,  1026,  1027,   705,
     3124      -1,  1304,    -1,    -1,    -1,    -1,    -1,   114,   241,   116,
     3125      -1,    -1,   409,   246,    -1,   122,   123,   323,    -1,    -1,
     3126      -1,    -1,    -1,    -1,    -1,    -1,   423,    -1,   135,    -1,
     3127      -1,   428,    -1,    -1,    -1,    -1,   387,    -1,    -1,   436,
     3128     391,    -1,    -1,    -1,  1347,  1348,    -1,    75,    -1,    77,
     3129      78,    79,   582,    -1,    -1,    -1,   453,    -1,    -1,   456,
     3130      88,    89,  1341,    -1,    -1,    75,  1369,    77,    78,    79,
     3131      -1,    -1,    -1,    -1,   471,    -1,   473,    -1,    88,    89,
     3132     610,    -1,  1385,    -1,    -1,   615,   114,    -1,   485,   395,
     3133       0,    -1,   489,    -1,   122,   123,    -1,  1400,    -1,    -1,
     3134      -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    75,  1412,
     3135     343,    -1,   122,   123,    -1,    82,    -1,   468,    85,   516,
     3136      87,    88,    89,    86,    34,    -1,    -1,    90,    91,    92,
     3137     836,  1434,    -1,    -1,    75,    -1,   842,    -1,  1441,    -1,
     3138    1443,    82,  1445,   673,    85,    -1,    87,    88,    89,   116,
     3139      -1,   114,    -1,   116,    -1,   118,   119,   687,    -1,    -1,
     3140      70,    -1,     0,     1,   561,    -1,    -1,    -1,    -1,    -1,
     3141      -1,   877,  1475,    -1,    -1,   116,   409,  1480,    -1,  1482,
     3142      -1,   578,   579,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3143     423,  1494,    -1,   590,    -1,   428,    34,  1500,  1501,    -1,
     3144      -1,    -1,    -1,   436,  1233,    -1,    -1,    -1,  1511,   560,
     3145     561,   608,  1241,  1242,  1243,    -1,   613,   923,    -1,     0,
     3146     453,    -1,   619,  1526,    -1,   622,   623,  1347,    -1,    67,
     3147      -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,   471,    -1,
     3148     473,   638,    -1,    -1,   154,    -1,    -1,   777,    -1,    -1,
     3149      -1,    -1,    -1,    34,    10,    11,    12,    13,    14,    -1,
     3150     657,    -1,    75,    -1,    77,    78,    79,    -1,    -1,    -1,
     3151      -1,   668,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
     3152    1400,    -1,    -1,   516,    -1,   682,    42,    -1,   685,    70,
     3153      -1,   642,    -1,    -1,    -1,   646,    -1,   694,    -1,    -1,
     3154     697,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
     3155     123,    -1,    -1,    -1,    70,    -1,   154,  1023,    -1,    75,
     3156      -1,    77,    78,    79,    75,    -1,    77,    78,    79,   726,
     3157      -1,   241,    88,    89,    -1,  1511,   246,    88,    89,    -1,
     3158      -1,    -1,    -1,  1049,    -1,    -1,   579,    -1,    -1,    -1,
     3159      -1,    10,    11,    12,    13,    14,    -1,    -1,   114,    -1,
     3160     116,    -1,    -1,   114,    -1,   762,   122,   123,    -1,    -1,
     3161      -1,   122,   123,   154,    -1,   772,   773,    -1,   775,   217,
     3162      -1,   778,  1411,    42,    -1,    -1,   783,    -1,    -1,   622,
     3163     623,    -1,    -1,    -1,    -1,    -1,   793,    -1,    -1,    -1,
     3164      -1,    -1,    -1,   241,    -1,   638,    -1,    -1,    -1,    -1,
     3165      -1,    70,    -1,    -1,    -1,   766,    75,    -1,    77,    78,
     3166      79,   951,    -1,    -1,   657,    -1,    -1,    -1,    -1,    88,
     3167      89,    -1,    -1,   343,    -1,   668,    -1,    -1,    -1,  1145,
     3168      -1,    -1,    -1,    -1,    -1,    -1,   843,    -1,    -1,   682,
     3169      -1,    -1,   685,    -1,    -1,   114,    -1,   116,    -1,    -1,
     3170     241,    -1,    -1,   122,   123,   246,    -1,    -1,    -1,    -1,
     3171     867,    -1,   102,   103,   104,   105,   106,   107,   108,   109,
     3172     110,   111,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3173     887,    -1,    -1,   726,    -1,    -1,    -1,    -1,    -1,   409,
     3174      -1,    -1,    -1,    -1,   901,   902,   136,    -1,    -1,    -1,
     3175      -1,    -1,    -1,   423,    -1,    -1,    -1,    -1,   428,   916,
     3176      -1,    -1,    -1,    -1,    -1,    -1,   436,    -1,    -1,   762,
     3177      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   772,
     3178     773,    -1,    -1,   453,    -1,   778,    -1,    -1,    -1,    -1,
     3179     783,   948,    -1,    -1,    10,    11,    12,    13,    14,    -1,
     3180      -1,   471,   343,   473,   961,    -1,    -1,    -1,    -1,   966,
     3181     967,    -1,   969,   970,    -1,    -1,    -1,    -1,    -1,    -1,
     3182      -1,    -1,    -1,    -1,    -1,   423,    42,   938,    -1,    -1,
     3183     987,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3184      -1,    -1,    -1,   954,    -1,    -1,   516,    -1,    -1,    -1,
     3185     843,    -1,     0,    -1,    70,    59,    -1,    -1,    -1,    75,
     3186      -1,    77,    78,    79,    42,    -1,    -1,    -1,   409,  1026,
     3187    1027,    -1,    88,    89,   867,   473,    -1,    -1,    -1,    -1,
     3188    1037,    -1,   423,    -1,    -1,    -1,    34,   428,    -1,    -1,
     3189      -1,    -1,    70,    -1,    -1,   436,    -1,    75,   114,    -1,
     3190      28,    79,   106,    -1,    -1,   109,   122,   123,    -1,   579,
     3191      88,    89,   453,    -1,    -1,    -1,    -1,    -1,   516,    -1,
     3192      -1,    -1,    70,   916,    10,    11,    12,    13,    14,    -1,
     3193     471,  1042,   473,    -1,    -1,    -1,   114,    -1,    -1,    -1,
     3194      -1,    -1,    -1,    -1,   122,   123,    -1,    -1,  1105,    -1,
     3195      -1,    -1,   622,   623,    -1,    83,    42,    -1,    -1,    -1,
     3196      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   638,    -1,
     3197      98,    -1,   100,   966,   967,   516,   969,   970,    -1,    -1,
     3198      -1,   579,    -1,    -1,    70,    -1,    -1,   657,    -1,    75,
     3199      -1,    77,    78,    79,   987,    -1,    -1,    -1,   668,    -1,
     3200      -1,    -1,    88,    89,    -1,    -1,   154,    -1,    -1,    -1,
     3201     214,  1168,   682,    -1,    -1,   685,    -1,    -1,    -1,    -1,
     3202      -1,    -1,    -1,    -1,   622,   623,    -1,    -1,   114,    -1,
     3203     116,    -1,    -1,  1026,  1027,    -1,   122,   123,   579,    -1,
     3204     638,  1198,    -1,  1200,    -1,    -1,    -1,    -1,  1205,    -1,
     3205      -1,    -1,    -1,    -1,    -1,    -1,   726,  1347,   262,   187,
     3206     188,    -1,    -1,    -1,   192,    -1,   194,   195,    -1,    -1,
     3207      -1,  1182,    -1,    -1,    -1,    -1,  1233,    -1,    -1,    -1,
     3208      -1,   622,   623,    -1,  1241,  1242,  1243,   685,    -1,    -1,
     3209      -1,    -1,   762,   241,    -1,  1252,  1253,   638,   246,    -1,
     3210      -1,    -1,   772,   773,    -1,    -1,    -1,  1264,   778,    -1,
     3211    1400,    -1,  1105,   783,    -1,    -1,   657,    -1,    -1,    -1,
     3212      -1,    -1,    -1,    -1,    -1,    -1,    -1,   668,    -1,    -1,
     3213      -1,    -1,    -1,    -1,    -1,    -1,   340,    -1,    -1,    -1,
     3214      -1,   682,    -1,    -1,   685,    -1,    -1,  1304,    -1,    -1,
     3215      -1,    -1,    -1,   357,    -1,    -1,    -1,   361,    -1,    -1,
     3216      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
     3217      -1,    -1,    -1,   843,    -1,  1168,    -1,    -1,  1289,    -1,
     3218      -1,    -1,    -1,    -1,    -1,   726,    -1,    -1,    -1,    -1,
     3219      -1,  1348,    42,    -1,    -1,   343,    -1,   867,    -1,    -1,
     3220      -1,    -1,    -1,    -1,    -1,  1198,    -1,  1200,    -1,    -1,
    31433221      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3144     1022,    -1,   182,    -1,    -1,    -1,  1477,    -1,  1479,    -1,
    3145       -1,    -1,   192,   193,   797,    -1,    -1,   197,    -1,   199,
    3146      200,    -1,  1070,    -1,    -1,    -1,    -1,   986,    -1,    -1,
    3147       -1,    -1,    -1,    -1,  1384,    -1,    -1,   252,    -1,    -1,
    3148     1062,  1063,   257,    -1,   587,    -1,    -1,    -1,    -1,    -1,
    3149     1521,    -1,  1523,    -1,    -1,    -1,    -1,    -1,    -1,  1409,
    3150       -1,  1109,    -1,    -1,    -1,  1536,  1537,    -1,   219,    -1,
     3222      70,   762,    -1,    -1,    -1,    75,    -1,    -1,  1385,    79,
     3223      -1,   772,   773,    -1,    -1,    -1,    -1,   778,    88,    89,
     3224    1233,    -1,   783,    -1,    -1,   843,   916,    -1,  1241,  1242,
     3225    1243,    -1,    -1,    -1,  1411,  1412,    -1,    -1,    -1,  1252,
     3226    1253,   409,    -1,    -1,   114,    -1,    -1,    -1,    -1,   867,
     3227     398,  1264,   122,   123,    -1,   423,    -1,  1434,    -1,    -1,
     3228     428,    -1,    -1,    -1,  1441,    55,    -1,    57,   436,    -1,
     3229      60,    61,    62,    -1,    -1,    -1,   966,   967,    -1,   969,
     3230     970,    -1,   843,    -1,   902,   453,    -1,    77,    -1,    10,
     3231      11,    12,    13,    14,    -1,    -1,    -1,   987,    88,    89,
     3232      -1,    -1,    -1,   471,    -1,   473,   867,    -1,    -1,    -1,
     3233      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1494,    -1,    -1,
     3234      -1,    42,    -1,    -1,  1501,    -1,    -1,    -1,    -1,    -1,
     3235      -1,    -1,    -1,    -1,    -1,  1348,  1026,  1027,    -1,    -1,
     3236      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   516,    70,
     3237      -1,   969,   970,    -1,    75,   916,    77,    78,    79,    -1,
     3238      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,   987,
     3239      -1,    -1,  1385,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3240      -1,    -1,    -1,    -1,    -1,   609,    -1,    -1,    -1,    -1,
     3241      -1,    -1,   182,   114,    -1,    -1,    -1,    -1,  1411,    -1,
     3242     624,   122,   123,    -1,    -1,   966,   967,    -1,   969,   970,
     3243      -1,   579,    -1,   637,    -1,  1105,   564,   565,    -1,    -1,
     3244      -1,  1434,    -1,    -1,    -1,    -1,   987,    -1,  1441,    -1,
    31513245      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3152       -1,    -1,  1432,   986,    -1,    -1,    -1,   630,   631,  1439,
    3153       -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,  1005,    -1,
    3154       -1,    -1,    -1,   646,    -1,    -1,    -1,    -1,    -1,    -1,
    3155       -1,  1133,    -1,    -1,    -1,  1022,    -1,    -1,    -1,    -1,
    3156       -1,   664,   273,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3157       -1,    -1,   675,    -1,    -1,    -1,   351,    -1,    -1,    -1,
    3158       -1,  1491,    -1,    -1,    -1,    55,    -1,    57,  1498,    -1,
    3159       60,    61,    62,  1175,    64,  1062,  1063,    -1,   701,    -1,
    3160       -1,   704,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,
    3161       -1,    -1,    -1,  1195,    -1,    -1,    -1,    -1,    -1,    -1,
    3162       90,    91,    -1,    -1,    -1,    -1,  1208,    -1,  1210,    -1,
    3163       -1,    -1,    -1,    -1,    -1,    -1,   739,   348,    -1,    -1,
    3164       -1,    -1,   417,   986,    -1,    -1,    -1,    -1,    -1,    -1,
    3165       -1,    -1,    -1,    -1,   365,  1174,   431,    -1,   369,    -1,
    3166       -1,   436,    -1,  1245,    -1,    -1,  1133,    -1,    -1,   444,
    3167     1252,  1253,  1254,    -1,    -1,    -1,    -1,    -1,    -1,   782,
    3168       -1,  1263,  1264,    -1,    -1,    -1,    -1,   462,    -1,   792,
    3169       -1,    -1,    -1,    -1,  1276,   798,    -1,    -1,    -1,    -1,
    3170      803,    -1,    -1,    -1,    -1,   480,    -1,   482,  1175,    -1,
    3171       -1,  1174,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3172       -1,    28,    29,    30,    -1,    -1,    -1,    -1,  1195,    -1,
    3173       -1,    -1,    -1,  1315,    -1,    -1,    -1,    -1,    -1,    -1,
    3174       -1,  1208,    -1,  1210,    42,    -1,    -1,    -1,    -1,   524,
    3175       -1,    -1,  1271,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3176      863,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3177       -1,    -1,    70,    -1,    -1,    -1,    -1,    75,  1245,    77,
    3178       78,    79,   885,    -1,    -1,  1252,  1253,  1254,    -1,   892,
    3179       88,    89,    -1,   100,    -1,   102,  1263,  1264,    -1,    -1,
    3180       -1,    -1,  1384,    -1,    -1,    -1,    -1,    -1,  1271,  1276,
    3181       -1,    -1,   587,    -1,    -1,    -1,   114,    -1,   116,    -1,
    3182      127,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,
    3183       -1,  1174,   572,   573,    -1,    -1,    -1,    -1,    -1,    -1,
    3184       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1315,    -1,
    3185     1432,    -1,    -1,    -1,    -1,   630,   631,  1439,    -1,   599,
    3186       -1,    -1,   602,   603,    -1,   605,    -1,   607,   608,    -1,
    3187       -1,   646,   612,   613,   344,   182,   346,    -1,    -1,    -1,
    3188       -1,    -1,    -1,   190,    -1,   192,   193,   357,   358,   664,
    3189      197,    -1,   199,   200,    -1,    -1,    -1,    -1,  1001,  1002,
    3190      675,  1004,  1005,    -1,    -1,    -1,   617,    -1,    -1,  1491,
    3191       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1384,    -1,  1022,
    3192       -1,   632,    -1,    -1,    -1,    -1,   701,    -1,  1271,   704,
    3193       -1,    -1,    -1,    -1,   645,    -1,    -1,    -1,    -1,    -1,
     3246      -1,    -1,    -1,   591,    -1,    -1,   594,   595,    -1,   597,
     3247      -1,   599,   600,    -1,   622,   623,   604,   605,    -1,    -1,
     3248      -1,    -1,    -1,    -1,    -1,  1026,  1027,    -1,    -1,    -1,
     3249     638,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1168,    -1,
     3250      -1,  1494,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   657,
     3251      -1,    -1,    -1,    -1,   642,    -1,    -1,    -1,   646,    -1,
     3252     668,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1198,    -1,
     3253    1200,    -1,    -1,    -1,   682,    -1,    -1,   685,    -1,    -1,
     3254      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3255      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3256      27,    28,    29,  1233,  1105,    -1,   336,    -1,   338,    -1,
     3257    1168,  1241,  1242,  1243,    -1,    42,    -1,    -1,   726,   349,
     3258     350,    -1,  1252,  1253,    -1,    -1,    -1,    -1,    -1,    -1,
     3259      -1,    -1,    -1,    -1,  1264,    -1,    -1,    -1,    -1,    40,
     3260      41,    -1,    43,    70,    -1,    -1,    -1,  1205,    -1,    -1,
     3261      -1,    -1,    -1,    -1,   762,    -1,    -1,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,   772,   773,    -1,  1168,    69,    -1,
     3263     778,    -1,    -1,    -1,    75,   783,    -1,    -1,    79,   843,
     3264      -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
     3265      91,    92,    -1,    -1,  1252,  1253,    -1,  1198,    -1,  1200,
     3266      -1,    -1,    -1,    -1,    -1,    -1,  1264,    -1,    -1,    -1,
     3267      -1,    -1,    -1,   114,    -1,   116,    -1,    -1,  1348,    -1,
     3268      -1,   122,   123,   124,   125,   126,   127,    -1,    -1,    -1,
     3269      -1,    -1,  1233,    -1,   135,   843,    -1,    -1,    -1,    -1,
     3270    1241,  1242,  1243,    -1,    -1,    -1,  1304,    -1,    -1,    -1,
     3271      -1,  1252,  1253,    -1,    -1,  1385,    -1,    -1,    -1,   867,
     3272      -1,    -1,    -1,  1264,    -1,    -1,    -1,    -1,    -1,    -1,
    31943273      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3195       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1062,
    3196     1063,    -1,   269,    -1,   739,  1432,    -1,    -1,    -1,    -1,
    3197       -1,    -1,  1439,    -1,     3,     4,     5,     6,     7,     8,
     3274      -1,  1411,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1347,
     3275    1348,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3276      -1,    -1,    -1,    -1,  1434,    -1,    -1,    -1,   916,    -1,
     3277      -1,  1441,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3278      -1,    -1,    -1,    -1,    -1,    -1,   990,  1385,    -1,   993,
     3279     994,   995,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3280      -1,    -1,  1400,    -1,    -1,    -1,    -1,  1348,    -1,    -1,
     3281     938,    -1,    -1,    -1,  1412,    -1,    -1,    -1,   966,   967,
     3282      -1,   969,   970,    -1,  1494,    -1,   954,    -1,    -1,   957,
     3283     958,    -1,    -1,    -1,    -1,    -1,  1434,    -1,    -1,   987,
     3284      -1,    -1,    -1,  1441,  1385,    10,    11,    12,    13,    14,
     3285      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3286      25,    26,    27,    28,    29,    30,    -1,    -1,    -1,    -1,
     3287    1411,    -1,    -1,    -1,    -1,    -1,    -1,    42,  1026,  1027,
     3288      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3289      -1,    -1,    -1,  1434,    -1,    -1,  1494,    -1,    -1,    -1,
     3290    1441,  1029,    -1,    -1,   674,    70,   676,    -1,    -1,    -1,
     3291      -1,    -1,    -1,   683,   684,    -1,    81,    -1,   688,  1047,
     3292    1048,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3293      -1,    -1,    -1,    -1,    -1,    -1,   706,    -1,    -1,    -1,
     3294      -1,   711,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3295      -1,    -1,    -1,  1494,    -1,    -1,    -1,  1105,    -1,    -1,
     3296      -1,    -1,   732,    -1,  1168,    -1,    -1,    -1,    -1,    -1,
     3297      -1,    -1,    -1,    -1,    -1,    51,    -1,    -1,    -1,    -1,
     3298      40,    41,  1110,    43,    -1,    -1,    -1,    -1,    -1,    -1,
     3299      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3300      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3301      -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,
     3302    1168,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
     3303      -1,    91,    92,    -1,    -1,    -1,    -1,   113,    -1,    -1,
     3304      -1,   117,  1170,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3305    1198,    -1,  1200,    -1,   114,   825,   116,   827,   828,   829,
     3306      -1,  1189,   122,   123,   124,   125,   126,   127,   144,    -1,
     3307      -1,    -1,    -1,    -1,    -1,    -1,   846,    -1,   154,  1283,
     3308      -1,   157,    -1,    -1,    -1,  1233,    -1,    -1,    -1,    -1,
     3309      -1,    -1,   862,  1241,  1242,  1243,    -1,    -1,    -1,    -1,
     3310      -1,    -1,    -1,    -1,  1252,  1253,    -1,    -1,    -1,    -1,
     3311      -1,    -1,    -1,    -1,    -1,   885,  1264,    -1,    -1,    -1,
     3312      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   205,
     3313      -1,    -1,    -1,    -1,    -1,  1339,    -1,    -1,  1342,    -1,
     3314      -1,   217,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3315      -1,    -1,    -1,    -1,    -1,    -1,    -1,   927,    -1,    -1,
     3316      -1,  1289,   932,    -1,  1368,    -1,    -1,   937,    -1,    -1,
     3317      -1,    -1,   942,   943,    -1,    -1,    -1,   947,   254,   949,
     3318     950,    -1,    -1,   953,    -1,   261,    -1,    -1,    -1,  1393,
     3319      -1,    -1,   962,    -1,  1398,    -1,    -1,    -1,    -1,    -1,
     3320    1348,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   978,   979,
     3321      -1,    -1,   288,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3322      -1,    -1,    -1,    -1,  1428,   301,    -1,    -1,    -1,    -1,
     3323      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1385,    -1,  1009,
     3324      -1,    -1,  1012,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3325      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3326      -1,   337,    -1,  1411,    -1,    -1,   342,    -1,    -1,    -1,
     3327      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3328      -1,    -1,    -1,    -1,    -1,    -1,  1434,  1491,    -1,    -1,
     3329      -1,    -1,  1496,  1441,    -1,  1065,    -1,    -1,    -1,    -1,
     3330      -1,  1071,  1072,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3331      -1,  1515,    -1,  1517,    -1,    -1,  1086,  1521,    -1,    -1,
     3332    1524,  1091,    -1,    -1,    -1,    -1,  1096,    -1,  1532,    -1,
     3333      -1,    -1,  1536,    -1,    -1,    -1,    -1,    -1,    -1,  1109,
     3334      -1,   417,   418,    -1,    -1,    -1,  1494,   423,    -1,    -1,
     3335      -1,    -1,    -1,    -1,    -1,  1125,    -1,  1127,  1128,  1129,
     3336    1130,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,    -1,
     3337      -1,    -1,  1142,    -1,  1144,    -1,    -1,    -1,    -1,    -1,
     3338      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3339      -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,    -1,    -1,
     3340      -1,    -1,    -1,    -1,  1174,  1175,    -1,    67,    -1,    -1,
     3341      -1,   487,    -1,    -1,    -1,    -1,    76,    -1,    78,    -1,
     3342      80,    -1,    -1,   499,    -1,   501,    86,    -1,   504,    -1,
     3343     506,   507,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3344     516,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3345      -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,   119,
     3346     120,   121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3347      -1,    -1,    -1,    -1,  1244,  1245,    -1,    -1,    -1,    -1,
     3348      -1,    -1,    -1,    -1,  1254,    -1,    -1,    -1,    -1,    -1,
     3349      -1,    -1,   568,    -1,    -1,    -1,    -1,   157,    -1,    -1,
     3350      -1,    -1,    -1,   579,    -1,    -1,   582,    -1,    -1,    -1,
     3351      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3352      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3353      28,    29,   608,    -1,    32,    33,    34,   613,    -1,    -1,
     3354      -1,    -1,    -1,    -1,    42,    -1,   622,   623,    -1,    -1,
     3355      -1,  1321,    -1,  1323,  1324,  1325,    -1,   217,    -1,   219,
     3356     220,   221,   638,    -1,    -1,  1335,    -1,    -1,    -1,    -1,
     3357      -1,    -1,    70,  1343,    -1,    -1,  1346,    75,    -1,    77,
     3358      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   249,
     3359      88,    89,    -1,    -1,   254,   671,    -1,    -1,    -1,    -1,
     3360      -1,    -1,    -1,    -1,    -1,    -1,  1376,    -1,    -1,   685,
     3361      -1,   687,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
     3362      -1,    -1,    -1,    -1,   122,   123,    10,    11,    12,    13,
     3363      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3364      24,    25,    26,    27,    28,    29,    30,    28,    -1,    -1,
     3365     726,  1421,  1422,    -1,    -1,    -1,    -1,    -1,    42,    -1,
     3366      -1,    -1,    -1,   323,  1434,    -1,    -1,    -1,    46,    -1,
     3367      -1,  1441,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3368      -1,  1451,   342,    -1,    -1,    -1,    70,   347,   348,    -1,
     3369      -1,    -1,    -1,    -1,    -1,   355,    -1,    81,    -1,    -1,
     3370      -1,   777,    83,    -1,  1474,    -1,    -1,    -1,  1478,    -1,
     3371      -1,    -1,    -1,    91,    -1,    -1,    -1,    98,    -1,   100,
     3372      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
     3373      -1,    -1,    -1,    -1,    -1,   395,    -1,  1507,    -1,  1509,
     3374      -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,    -1,
     3375      -1,    -1,    -1,    -1,    -1,   415,    -1,    -1,    -1,    -1,
     3376     420,    -1,   422,    -1,    -1,    -1,    -1,    -1,  1538,  1539,
     3377      -1,    -1,    -1,    -1,    -1,    -1,  1546,  1547,   438,    -1,
     3378      -1,   441,   442,    -1,    -1,    -1,    -1,    -1,   448,    -1,
     3379     168,   867,    -1,    -1,    -1,    -1,   872,    -1,    -1,    -1,
     3380      -1,    -1,   462,    -1,   185,    -1,   187,   188,    -1,   469,
     3381      -1,   192,   190,   194,   195,    -1,    -1,    -1,    -1,    -1,
     3382      -1,    -1,    -1,    -1,    -1,    -1,   204,   903,    -1,    -1,
     3383      -1,    -1,    -1,    -1,    -1,   213,    -1,    -1,    -1,    -1,
     3384     916,    -1,    -1,    -1,    -1,   223,    -1,    -1,    -1,    -1,
     3385      -1,     7,    -1,    -1,    10,    11,    12,    13,    14,    -1,
     3386      -1,    -1,    -1,    -1,   242,    -1,    -1,    -1,    -1,   247,
     3387      -1,    -1,   948,    -1,    -1,    -1,    -1,   258,    -1,    -1,
     3388      -1,    -1,   260,    -1,    40,    41,    42,    43,    -1,    -1,
     3389     268,    -1,   270,   969,   970,    -1,    -1,    -1,    -1,    -1,
     3390      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3391      -1,   289,    -1,    69,    70,    -1,    -1,    -1,    -1,    75,
     3392      -1,    -1,   582,    79,    -1,    -1,    82,    83,    84,    85,
     3393      86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
     3394      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3395     610,    -1,    -1,   331,    -1,   615,    -1,   335,   114,    -1,
     3396     116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,
     3397     126,   127,    -1,    -1,    -1,    -1,  1052,    -1,    -1,    -1,
     3398      -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,   367,
     3399     368,    -1,   370,    -1,    -1,    -1,    -1,    -1,    -1,   377,
     3400     378,    -1,   380,   381,    -1,   383,    -1,   385,    -1,    -1,
     3401      -1,    -1,    -1,   673,    -1,    -1,    -1,   398,    -1,    -1,
     3402      -1,    -1,    -1,    -1,   402,    -1,    -1,   687,    -1,  1105,
     3403      -1,    -1,   410,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3404      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3405      -1,    -1,    -1,    -1,    -1,    -1,   434,    -1,    -1,    -1,
     3406      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3407     153,   154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3408      -1,   459,    -1,    -1,    -1,    -1,    -1,   465,    -1,    -1,
     3409      -1,    -1,   470,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3410      -1,    -1,   185,  1179,    -1,    -1,   766,    -1,    -1,   192,
     3411      -1,    -1,    -1,    -1,    -1,    -1,    -1,   777,    -1,    40,
     3412      41,    -1,    43,    -1,  1200,    -1,    -1,    -1,    -1,    -1,
     3413      -1,    -1,   510,    -1,   794,    -1,    -1,    -1,    -1,    -1,
     3414      -1,    -1,    -1,    -1,    -1,   523,    -1,    -1,    69,    -1,
     3415      -1,    -1,    -1,    -1,    75,    -1,    77,    78,    79,    -1,
     3416      -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
     3417      91,    92,    -1,    -1,    -1,   258,  1252,  1253,    -1,    -1,
     3418      -1,    -1,   560,   564,   565,    -1,    -1,    -1,    -1,    -1,
     3419      -1,   569,    -1,   114,   572,   116,    -1,   118,   119,    -1,
     3420      -1,   122,   123,   124,   125,   126,   127,    -1,    -1,    -1,
     3421     591,   589,    -1,   594,   595,    -1,   597,    -1,   599,   600,
     3422      -1,    -1,    -1,   604,   605,    -1,    -1,    -1,    -1,    -1,
     3423      -1,   891,    -1,    -1,   317,    -1,    -1,    -1,    -1,    -1,
     3424      -1,    -1,    -1,   326,   327,    -1,   329,   330,    -1,   627,
     3425      -1,    -1,    -1,    -1,   337,    -1,    -1,    -1,   341,    -1,
     3426      -1,   642,    -1,    -1,    -1,   646,    -1,    -1,    -1,    -1,
     3427      -1,  1347,    -1,    -1,    -1,    -1,    -1,   360,    -1,    -1,
     3428      -1,    -1,    -1,    -1,    -1,    -1,   664,    -1,    -1,    -1,
     3429      -1,   951,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3430      -1,    -1,   962,    -1,   387,    -1,    -1,    -1,   391,  1385,
     3431      -1,    -1,    -1,   691,    -1,    -1,    -1,    -1,    -1,    -1,
     3432      -1,    -1,    -1,    -1,  1400,    -1,    -1,    -1,    -1,   707,
     3433     708,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3434     423,   719,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3435      -1,    -1,    -1,    -1,    -1,   733,    -1,    -1,    -1,    -1,
     3436     738,    -1,    -1,    -1,    -1,    -1,    -1,  1443,    -1,  1445,
     3437      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3438      -1,    -1,    -1,    -1,    -1,   468,    -1,    -1,   471,    -1,
     3439      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1058,    -1,
     3440      -1,    -1,    -1,    -1,  1480,    -1,  1482,    -1,    -1,    -1,
     3441      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3442     798,    -1,    -1,    -1,    -1,    -1,    -1,   805,    -1,    -1,
     3443      -1,    -1,    -1,   516,    -1,  1511,    -1,    -1,    -1,    -1,
     3444     818,    -1,   820,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3445      -1,    -1,    -1,    -1,    -1,   833,    -1,    -1,    -1,    -1,
     3446      -1,   839,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3447      -1,    -1,   850,    -1,    -1,    -1,   854,   560,   561,   144,
     3448      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   154,
     3449      -1,    -1,    -1,    -1,    -1,   578,   579,    -1,    -1,    -1,
     3450     165,   166,    -1,    -1,    -1,   588,    -1,   590,   591,    -1,
     3451      -1,    -1,    -1,    -1,   597,    -1,    -1,    -1,    -1,    -1,
     3452      -1,    -1,    -1,    -1,   607,   608,    -1,  1187,    -1,    -1,
     3453     613,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   622,
     3454     623,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3455      -1,    -1,    -1,    -1,    -1,   638,    -1,   938,    -1,   642,
     3456     643,    -1,    -1,   646,   647,    -1,    -1,    -1,   946,    -1,
     3457      -1,    -1,   655,   954,    -1,    -1,   957,   958,    -1,    -1,
     3458      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   253,    -1,
     3459      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3460      -1,    -1,   685,   686,    10,    11,    12,    13,    14,    15,
     3461      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3462      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
     3463      -1,    -1,    -1,    -1,  1012,    -1,    42,    43,    -1,    -1,
     3464      -1,    -1,    -1,   726,    -1,    -1,    -1,    -1,  1029,    -1,
     3465      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3466      -1,  1042,    -1,    -1,    70,    -1,  1047,  1048,    -1,    -1,
     3467      -1,    77,    78,    -1,    -1,    -1,  1054,    -1,    -1,    -1,
     3468      -1,  1059,    -1,   766,    -1,    -1,    -1,  1347,    -1,    -1,
     3469      -1,  1069,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   782,
     3470      -1,   784,    -1,    -1,    -1,    -1,   371,    -1,    -1,    -1,
     3471     116,   794,    -1,    -1,   120,    -1,   122,   123,    -1,    -1,
     3472      -1,  1099,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1110,
     3473      -1,    -1,    -1,    -1,  1112,    -1,    -1,    -1,  1116,    -1,
     3474    1400,  1119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3475      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1135,  1136,    -1,
     3476      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3477      -1,    -1,    -1,    -1,    -1,  1153,    -1,    -1,    -1,   444,
     3478      -1,    -1,    -1,    -1,   867,    -1,    -1,    -1,    -1,  1170,
     3479      -1,   874,    -1,    -1,    -1,    -1,    -1,    -1,   463,    -1,
     3480      -1,    -1,    -1,   886,   887,    -1,    -1,    -1,  1189,    -1,
     3481      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3482      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3483      -1,    -1,    -1,   916,    -1,    -1,    -1,    -1,    -1,    -1,
     3484      -1,   506,    -1,    -1,  1222,    -1,    -1,    -1,    -1,    -1,
     3485      -1,   516,    -1,    -1,    -1,   938,   939,   522,    -1,    -1,
     3486     525,    -1,    -1,    -1,    -1,   948,  1526,   274,    -1,   276,
     3487     277,   954,   955,   538,   957,   958,   959,    -1,    -1,   286,
     3488     287,    -1,    -1,    -1,    -1,    -1,   969,   970,    -1,    -1,
     3489      -1,    -1,    -1,    -1,   301,   302,    -1,    -1,    -1,    -1,
     3490      -1,    -1,    -1,   568,    -1,    -1,    -1,    -1,  1289,    -1,
     3491     575,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,    -1,
     3492      -1,  1299,    -1,  1301,    -1,    -1,    -1,    -1,    -1,    -1,
     3493     337,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1316,    -1,
     3494    1318,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3495    1033,    -1,  1035,    -1,  1037,  1333,    -1,    -1,    -1,  1042,
     3496     625,    -1,    -1,    -1,    -1,   372,    -1,    -1,   633,    -1,
     3497      -1,    -1,    -1,  1351,  1352,  1058,    -1,    -1,    -1,    -1,
     3498      -1,    -1,    -1,    -1,  1362,    -1,    -1,    -1,    -1,  1367,
     3499      -1,    -1,  1370,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3500      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    41,
     3501      -1,    43,    -1,  1391,    -1,    -1,    -1,    -1,    -1,    -1,
     3502      -1,    -1,  1105,  1401,    -1,    -1,  1404,    -1,  1406,  1407,
     3503    1408,    -1,    -1,   698,    -1,    -1,    -1,    69,    -1,    -1,
     3504      -1,    -1,    -1,    75,    -1,    -1,    -1,    79,    -1,   714,
     3505      82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
     3506      92,   726,    -1,   728,    -1,    -1,   731,    -1,    -1,  1447,
     3507      -1,  1449,   737,    -1,  1452,    -1,    -1,    -1,    -1,    -1,
     3508      -1,    -1,   114,    -1,   116,    -1,    -1,   119,    -1,  1467,
     3509     122,   123,   124,   125,   126,   127,    -1,    -1,    -1,  1182,
     3510      -1,    -1,    -1,    -1,  1187,    -1,    -1,    -1,    -1,    -1,
     3511      -1,    -1,   777,   778,    -1,    -1,    -1,  1200,    -1,    -1,
     3512      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   793,    -1,
     3513      -1,    -1,    -1,    -1,   541,   542,   543,   544,   545,   546,
     3514     547,   548,   549,   550,   551,   552,   553,   554,   555,   556,
     3515     557,   558,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3516      -1,    -1,    -1,    -1,    -1,    -1,    -1,   832,    -1,  1252,
     3517    1253,   836,    -1,    -1,     3,     4,     5,     6,     7,     8,
    31983518       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    31993519      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3200       29,    -1,    -1,    32,    33,    34,    35,   782,   748,   749,
    3201       39,    40,    41,    42,    43,    -1,    -1,   792,    -1,    -1,
    3202       -1,    -1,    -1,   798,  1491,    -1,    -1,    -1,   803,    -1,
    3203     1133,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3204       69,    70,    -1,    72,    -1,    74,    75,    -1,    77,    78,
    3205       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3206       89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
    3207       -1,    -1,  1175,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3208       -1,    -1,    -1,    40,    41,   114,    43,   116,   863,    -1,
    3209       -1,    -1,  1195,   122,   123,   124,   125,   126,   127,    -1,
    3210       -1,    -1,    -1,    -1,    -1,  1208,    -1,  1210,   137,    -1,
    3211      885,    -1,    69,    -1,    -1,    -1,    -1,   892,    75,    -1,
    3212       -1,    -1,    79,    -1,    -1,    82,    83,    84,    85,    86,
    3213       87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,
    3214       -1,    -1,  1245,    -1,    -1,    -1,    -1,    -1,    -1,  1252,
    3215     1253,  1254,   863,    -1,    -1,    -1,    -1,   114,    -1,   116,
    3216     1263,  1264,   119,    -1,   904,   122,   123,   124,   125,   126,
    3217      127,    -1,    -1,  1276,     3,     4,     5,     6,     7,     8,
    3218        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3219       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3220       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    3221       -1,    -1,  1315,    42,    -1,    -1,    -1,    -1,    -1,    -1,
    3222       -1,    -1,    -1,   693,    -1,   695,  1001,  1002,    -1,  1004,
    3223     1005,    -1,   702,   703,    -1,    -1,    -1,   707,    -1,    -1,
    3224       -1,    70,    -1,    72,    -1,    74,    -1,  1022,    77,    78,
    3225      720,    -1,    -1,    -1,    -1,   725,    -1,    -1,    -1,    -1,
    3226       -1,    -1,    -1,    -1,    -1,   572,   573,    -1,    -1,    -1,
     3520      29,    -1,   867,    32,    33,    34,  1289,  1290,    -1,    -1,
     3521    1293,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
    32273522      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3228       -1,  1384,   752,    -1,    -1,    -1,    -1,  1062,  1063,    -1,
    3229      119,    -1,   599,    -1,    -1,   602,   603,    -1,   605,    -1,
    3230      607,   608,    -1,    -1,    -1,   612,   613,    -1,    -1,    -1,
    3231       -1,    -1,    -1,    -1,  1025,    -1,    -1,  1028,  1029,  1030,
    3232       -1,    -1,    -1,    -1,  1064,    -1,    -1,    -1,    -1,  1432,
    3233       -1,    -1,    -1,    -1,    -1,    -1,  1439,    51,    -1,    10,
    3234       11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
    3235       -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,  1133,    10,
    3236       11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
    3237       -1,    42,    -1,    -1,    -1,   845,    -1,   847,   848,   849,
    3238       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1491,    -1,
    3239       -1,    42,    -1,    -1,    -1,    -1,   866,    -1,    -1,    70,
    3240     1175,   115,    -1,    -1,    75,   119,    77,    78,    79,    -1,
    3241      880,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    70,
    3242     1195,    -1,    -1,    -1,    75,    -1,    77,    78,    79,    -1,
    3243       -1,    -1,    -1,  1208,   148,  1210,    -1,    88,    89,    -1,
    3244       -1,   748,   749,   114,   158,   116,    -1,   161,    -1,   919,
    3245       -1,   122,   123,    -1,    -1,    -1,    -1,  1197,    -1,    -1,
    3246       -1,    -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,
    3247     1245,   122,   123,    -1,    -1,    -1,    -1,  1252,  1253,  1254,
    3248       -1,    -1,    -1,    -1,  1195,    -1,    -1,    -1,  1263,  1264,
    3249       -1,    -1,   962,    -1,    -1,    -1,   210,   967,    -1,    -1,
    3250       -1,  1276,   972,    -1,    -1,    -1,    -1,   977,   222,    -1,
    3251       -1,    -1,   982,    -1,   984,   985,    -1,    -1,   988,    -1,
    3252       -1,    -1,    -1,    -1,    -1,    -1,   240,   997,    -1,    -1,
     3523      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   903,    -1,
     3524      -1,    70,    -1,    72,    -1,    74,    75,    -1,    77,    78,
     3525      79,   916,    -1,    -1,    -1,    -1,    -1,    -1,   923,    88,
     3526      89,    -1,    -1,   928,    -1,     7,   931,    -1,    10,    11,
     3527      12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3528      -1,    -1,    -1,    -1,    -1,   114,   951,   116,    -1,    -1,
     3529      -1,    -1,    -1,   122,   123,    -1,   703,   962,    40,    41,
     3530      42,    43,  1385,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    -1,    -1,   982,    -1,   984,
     3532      -1,    -1,    -1,   730,    -1,    -1,    -1,    69,    70,    -1,
     3533      -1,    -1,    -1,    75,   999,  1000,    -1,    79,    -1,    -1,
     3534      82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
     3535      92,    -1,    -1,   760,    -1,    -1,    -1,    -1,    -1,    -1,
     3536    1025,    -1,    40,    41,    -1,    43,    -1,    -1,    -1,    -1,
     3537      -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,
     3538     122,   123,   124,   125,   126,   127,    -1,    -1,    -1,    -1,
     3539      -1,    69,  1475,    -1,    -1,    -1,    -1,    75,    -1,    -1,
     3540      -1,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
     3541      88,    89,    -1,    91,    92,    -1,    -1,  1500,  1501,  1084,
    32533542      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3254     1315,    -1,    -1,  1013,  1014,    -1,    -1,    -1,    68,    -1,
    3255       -1,   265,    -1,    -1,    -1,    -1,    -1,    77,   272,    79,
    3256       -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    88,    -1,
    3257       -1,    -1,    -1,    -1,  1044,    -1,    -1,  1047,    -1,    -1,
    3258       -1,    -1,    -1,   297,  1295,    -1,    -1,    -1,    -1,    -1,
    3259       -1,    -1,   899,    -1,    -1,    -1,   310,   904,    -1,   119,
    3260       -1,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,  1384,
    3261       10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
    3262       -1,  1091,    -1,    -1,    -1,    -1,    -1,  1097,  1098,    -1,
    3263       -1,   345,    -1,    -1,  1345,    -1,   350,  1348,    -1,    -1,
    3264       -1,   161,    42,    -1,    -1,    -1,  1116,    -1,    -1,    -1,
    3265       -1,  1121,    -1,    -1,    -1,  1366,  1126,  1432,    -1,    -1,
    3266       -1,    -1,    -1,    -1,  1439,    -1,    -1,  1137,    -1,    -1,
    3267       70,    -1,    -1,    -1,    -1,    75,    -1,    77,    78,    79,
    3268     1150,  1392,  1152,  1153,  1154,  1155,  1397,    -1,    88,    89,
    3269       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1167,    -1,  1169,
    3270       -1,    -1,   222,  1173,   224,   225,   226,    -1,    -1,    -1,
    3271       -1,   425,   426,    -1,   114,  1426,  1491,   431,    -1,    -1,
    3272       -1,    -1,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,
    3273       -1,  1201,  1202,    -1,    -1,    -1,    -1,    -1,   452,    -1,
    3274      260,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,    -1,
    3275       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1064,    -1,    -1,
    3276       -1,    -1,    -1,    -1,    -1,    -1,   480,    -1,    -1,    -1,
    3277       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1488,    -1,   493,
    3278       -1,    -1,  1493,    -1,    -1,  1255,  1256,    -1,    -1,    -1,
    3279       -1,   505,    -1,   507,    -1,  1265,   510,    -1,   512,   513,
    3280     1511,    -1,  1513,    -1,    -1,    -1,  1517,    -1,    -1,  1520,
    3281      524,   331,    -1,    -1,    -1,    -1,    -1,  1528,    -1,    -1,
    3282       -1,  1532,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3283      350,    -1,    -1,    -1,    -1,   355,   356,    -1,    -1,    -1,
    3284       -1,    -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,    -1,
    3285       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,  1329,
    3286     1330,  1331,   576,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3287       -1,  1341,    -1,   587,    -1,    -1,   590,    -1,    -1,  1349,
    3288       -1,    -1,    -1,    -1,    46,   405,    -1,    -1,    -1,    -1,
    3289     1197,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3290       -1,    -1,   616,   423,  1374,  1375,    -1,   621,   428,    -1,
    3291      430,    -1,    -1,    -1,    -1,    -1,   630,   631,    -1,    -1,
    3292       -1,    -1,    -1,    -1,    42,    -1,   446,    -1,    -1,   449,
    3293      450,    93,   646,    -1,    -1,    -1,    -1,   457,    -1,    -1,
    3294       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1419,
    3295     1420,   471,    70,    -1,    -1,    -1,    -1,    75,   478,    77,
    3296       78,    79,  1432,    -1,   678,    -1,    -1,    -1,    -1,  1439,
    3297       88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3543      -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
     3544    1105,   119,    -1,  1526,   122,   123,   124,   125,   126,   127,
     3545      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1123,  1124,
     3546      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
     3547       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3548      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3549      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3550      35,    -1,    -1,   910,    39,    40,    41,    42,    43,    -1,
    32983551      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3299      704,    -1,   706,    -1,    -1,    -1,   114,    -1,    -1,    -1,
    3300       -1,    -1,  1472,    -1,   122,   123,  1476,    -1,    -1,    -1,
    3301      172,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3302       -1,    -1,    -1,    -1,    -1,   739,    -1,    -1,    -1,    -1,
    3303       -1,    -1,    -1,   195,  1504,    -1,  1506,    -1,    -1,    -1,
    3304       -1,    -1,    -1,    -1,    -1,    -1,    -1,   209,    -1,    -1,
    3305       -1,    -1,    -1,    -1,    -1,    -1,   218,    -1,    -1,    -1,
    3306       -1,    -1,    -1,    -1,  1534,  1535,   228,    -1,    -1,    -1,
    3307      590,    -1,  1542,  1543,    -1,    -1,    -1,    -1,    -1,    -1,
    3308       -1,    -1,    -1,   797,    -1,    -1,    -1,    -1,    -1,    -1,
    3309       -1,   253,    -1,    -1,    -1,    -1,   258,    -1,   618,    -1,
    3310       -1,    -1,    -1,   623,    -1,    -1,    -1,    -1,    -1,   271,
    3311       -1,    -1,    -1,    -1,    -1,   277,    -1,   279,    -1,    -1,
    3312      283,    -1,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,
    3313       -1,    -1,   295,   296,    -1,    -1,   298,    -1,    -1,    -1,
    3314       -1,    -1,    -1,    -1,    -1,    -1,    -1,   310,   311,    -1,
    3315       -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    43,
     3552      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   936,
     3553      -1,    -1,    -1,    -1,    69,    70,    -1,    72,    -1,    74,
     3554      75,   948,    77,    78,    79,    -1,    -1,    82,    83,    84,
     3555      85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
    33163556      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3317       -1,   885,   692,    -1,    -1,    -1,    -1,   339,   892,    -1,
    3318       -1,   343,   345,    -1,    -1,    69,   706,    -1,    -1,    -1,
    3319       -1,    75,    -1,   907,    -1,    79,    -1,    -1,    82,    83,
    3320       84,    85,    86,    87,    88,    89,    -1,    91,    92,   371,
    3321       -1,    -1,    -1,   375,   376,    -1,   378,   380,   932,    -1,
    3322       -1,    -1,    -1,   385,   386,    -1,   388,   389,    -1,   391,
    3323      114,   393,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3324      124,   125,   126,   127,    -1,    -1,    -1,    -1,   410,    -1,
    3325       -1,   135,    -1,    -1,    -1,    -1,   418,    -1,    -1,    -1,
    3326       -1,    -1,    -1,    -1,    -1,    -1,   786,    -1,    -1,   983,
    3327       -1,    -1,    -1,    -1,    -1,    -1,    -1,   797,    -1,    -1,
    3328      442,    40,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
    3329     1004,  1005,    -1,    -1,   814,    -1,    -1,    -1,    -1,    -1,
    3330       -1,    -1,    -1,    -1,    -1,    -1,   468,    -1,    -1,    -1,
    3331       69,    -1,   474,    -1,    -1,    -1,    75,   479,    77,    78,
    3332       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3333       89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
    3334       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3335       -1,    -1,    -1,  1067,   516,   114,    -1,   116,    -1,   118,
    3336      119,    -1,    -1,   122,   123,   124,   125,   126,   127,   531,
    3337       -1,    -1,    -1,    -1,     7,    -1,    -1,    10,    11,    12,
    3338       13,    14,    -1,    -1,    -1,    -1,   549,   550,   551,   552,
    3339      553,   554,   555,   556,   557,   558,   559,   560,   561,   562,
    3340      563,   564,   565,   566,    -1,   925,   568,    40,    41,    42,
    3341       43,    -1,    -1,    -1,    -1,   577,    -1,    -1,    -1,  1133,
    3342       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3343       -1,    -1,    -1,    -1,   954,   597,    69,    70,    -1,    -1,
    3344       -1,    -1,    75,    -1,    -1,    -1,    79,    -1,    -1,    82,
    3345       83,    84,    85,    86,    87,    88,    89,    -1,    91,    92,
    3346     1174,    -1,    -1,    -1,    -1,    -1,   986,    -1,    -1,    -1,
    3347       -1,    -1,    -1,   635,    -1,    -1,    -1,   997,    -1,    -1,
    3348       -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
    3349      123,   124,   125,   126,   127,    -1,  1210,    -1,    -1,    -1,
    3350       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   671,
    3351       -1,    -1,    -1,    -1,    -1,    -1,    -1,   679,    -1,    -1,
    3352       -1,    -1,    -1,    -1,    -1,    -1,   689,    -1,    -1,    -1,
    3353       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3354       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   710,  1263,
    3355     1264,    -1,  1072,    -1,    -1,    -1,    -1,  1271,    -1,   721,
    3356      722,    -1,    -1,    -1,    -1,    -1,  1086,    10,    11,    12,
    3357       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3358       23,    24,    25,    26,    27,    28,    29,   750,    -1,    -1,
    3359       -1,   753,    -1,    -1,    -1,    -1,   758,    -1,    -1,    42,
    3360       -1,    -1,    -1,   157,   158,    -1,    -1,    -1,    -1,    -1,
    3361       -1,    -1,    -1,    -1,    -1,    -1,    -1,   780,    -1,    -1,
    3362       -1,    -1,    -1,    -1,    -1,    -1,     7,    70,    -1,    10,
    3363       11,    12,    13,    14,    -1,    -1,   190,    -1,    -1,    -1,
    3364       -1,    -1,    -1,   197,    -1,    -1,    -1,    -1,    -1,    -1,
    3365       -1,    -1,    -1,    -1,  1174,    -1,   818,    -1,    -1,    40,
    3366       41,    42,    43,   825,    -1,    -1,    -1,    -1,    -1,    -1,
    3367     1384,    -1,    -1,    -1,    -1,    -1,   838,    -1,   840,    -1,
    3368       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,
    3369       -1,   853,    -1,    -1,    75,    -1,    -1,   859,    79,    -1,
    3370       -1,    82,    83,    84,    85,    86,    87,    88,    89,   871,
    3371       91,    92,   874,    -1,    -1,   269,    -1,    -1,    -1,    -1,
    3372       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1441,    -1,  1443,
    3373       -1,   894,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,
    3374       -1,   122,   123,   124,   125,   126,   127,    -1,    -1,    -1,
    3375       -1,  1271,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3376       -1,    -1,    -1,    -1,  1478,    -1,  1480,    -1,    -1,    -1,
    3377       -1,    -1,   326,    -1,    -1,    -1,   939,    -1,    -1,    -1,
    3378      334,   335,   148,   337,   338,    -1,    -1,    -1,    -1,    -1,
    3379       -1,   345,   158,  1507,    -1,   349,    -1,    -1,    -1,    -1,
    3380       -1,    -1,    -1,   169,   170,    -1,    -1,    -1,   971,    -1,
    3381       -1,    -1,    -1,    -1,   368,    -1,    -1,    -1,    -1,   981,
    3382      983,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3383       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3384       28,    29,    -1,   397,    32,    33,    34,   401,    -1,    -1,
    3385       -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,  1022,
    3386       -1,    -1,    -1,    -1,    40,    41,    -1,    43,    -1,    -1,
    3387       -1,    -1,    -1,    -1,   240,    -1,    -1,   431,    -1,    -1,
    3388       -1,    -1,    70,    -1,    -1,  1047,    -1,    75,    -1,    77,
    3389       78,    -1,    -1,    69,    -1,    -1,    -1,    -1,   264,    75,
    3390       88,    89,    -1,    79,    -1,    -1,    82,    83,    84,    85,
    3391       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    3392     1082,    -1,    -1,   477,    -1,  1087,   480,    -1,   116,    -1,
    3393       -1,    -1,    -1,  1095,   122,   123,    -1,    -1,   114,    -1,
    3394      116,  1104,    -1,    -1,    -1,   121,   122,   123,   124,   125,
    3395      126,   127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3396       -1,    -1,    -1,    -1,    -1,    -1,   520,  1129,    -1,    -1,
    3397      524,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1140,    -1,
    3398       -1,  1143,    -1,  1145,    -1,    -1,    -1,    -1,    -1,    -1,
    3399       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1160,  1161,
    3400     1163,  1164,  1522,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3401       -1,    -1,    -1,   379,   568,   569,    -1,    -1,  1180,    -1,
    3402       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3403       -1,    -1,   586,   587,    -1,    -1,    40,    41,    -1,    43,
    3404       -1,    -1,   596,    -1,   598,   599,    -1,    -1,    -1,    -1,
    3405       -1,   605,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3406       -1,   615,   616,    -1,  1226,    69,    -1,   621,    -1,    -1,
    3407       -1,    75,  1234,    -1,    -1,    79,   630,   631,    82,    83,
    3408       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
    3409       -1,    -1,   646,    -1,    -1,    -1,    -1,   651,   652,    -1,
    3410       -1,   655,   656,    -1,    -1,    -1,   472,    -1,   662,    -1,
    3411      114,    -1,   116,    -1,    -1,   119,    -1,    -1,   122,   123,
    3412      124,   125,   126,   127,    -1,    -1,    -1,   681,    -1,    -1,
    3413       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3414       -1,    -1,  1304,    -1,  1306,    -1,   512,    -1,    -1,    -1,
    3415      704,   705,    -1,    -1,    -1,    -1,    -1,    -1,   524,    -1,
    3416     1322,    -1,  1324,    -1,   530,    -1,    -1,   533,    -1,    -1,
    3417       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1339,    -1,    -1,
    3418      546,    -1,    -1,    -1,    -1,   739,    -1,    -1,    -1,   743,
    3419      744,    -1,  1354,  1355,    -1,    -1,    -1,    -1,    -1,    -1,
    3420       -1,    -1,    -1,  1365,    -1,    -1,  1368,    -1,  1371,    -1,
    3421      576,    -1,    -1,    -1,    -1,    -1,    -1,   583,    -1,    -1,
    3422       -1,   587,    -1,    -1,    -1,  1388,    -1,    -1,  1390,    -1,
    3423       -1,    -1,   786,    -1,    -1,    -1,    -1,  1399,    -1,    -1,
    3424     1402,    -1,  1404,  1405,  1406,    -1,    -1,    -1,   802,    -1,
    3425      804,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3426      814,    -1,    -1,    -1,    -1,    -1,    -1,   633,    -1,    -1,
    3427       -1,    -1,    -1,    -1,    -1,   641,    -1,    -1,    -1,    -1,
    3428       -1,    -1,    -1,  1445,    -1,  1447,    -1,  1449,    -1,    -1,
    3429       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1460,  1461,    -1,
    3430       -1,    -1,    -1,  1465,     4,     5,     6,     7,     8,     9,
    3431       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3432       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3433       -1,   885,    32,    33,    34,    -1,    -1,    -1,   892,   893,
    3434       -1,   895,    42,    -1,    -1,   899,    -1,    -1,    -1,    -1,
    3435       -1,   717,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3436       -1,    -1,   728,    -1,    -1,    -1,   920,   921,    -1,    -1,
    3437       70,    -1,    72,   739,    74,   741,    -1,    77,    78,    -1,
    3438       -1,    -1,    -1,    -1,    -1,   751,    -1,    -1,    -1,    -1,
    3439       -1,   757,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3440      954,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3441       -1,    -1,    -1,    -1,    -1,   115,   116,    -1,    -1,   973,
    3442      974,    -1,   122,   123,    -1,    -1,    -1,    -1,    -1,   983,
    3443       -1,   797,   798,    -1,    -1,   989,   990,    -1,   992,   993,
    3444      994,    -1,    -1,    -1,    -1,    -1,    -1,   813,    -1,    -1,
    3445     1004,  1005,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3446       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3447       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3448       29,    -1,    -1,    32,    33,    34,   852,    -1,    -1,    -1,
    3449      856,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
    3450       -1,    40,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
    3451       -1,    -1,    -1,    -1,    -1,    -1,  1070,    -1,  1072,   885,
    3452       -1,    70,    -1,  1077,    -1,    -1,   892,    -1,    77,    78,
    3453       69,    -1,  1086,    -1,    -1,    -1,    75,    -1,    -1,    -1,
    3454       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3455       89,    -1,    91,    92,    -1,  1109,  1110,    -1,    -1,    -1,
    3456       -1,    -1,    -1,    -1,    -1,    -1,   932,   116,    -1,    -1,
    3457       -1,   120,    -1,   122,   123,   114,    -1,   116,    -1,  1133,
    3458       -1,    -1,    -1,   122,   123,   124,   125,   126,   127,    -1,
    3459       -1,    -1,   958,    -1,    -1,    -1,    -1,   963,    40,    41,
    3460      966,    43,    44,    -1,    46,    -1,    -1,    49,    50,    51,
    3461       52,    53,    54,    55,    56,    -1,    -1,    59,    60,    -1,
    3462      986,    -1,    64,    65,    -1,    67,    -1,    69,    -1,    -1,
    3463       -1,   997,    -1,    75,    -1,    77,    78,    79,    -1,    -1,
    3464       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    3465       92,  1017,    -1,  1019,    -1,    -1,  1210,    -1,    -1,    -1,
    3466       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1034,  1035,
    3467       -1,    -1,   114,    -1,   116,    -1,    -1,   119,    -1,    -1,
    3468      122,   123,   124,   125,   126,   127,    40,    41,    -1,    43,
    3469      132,    -1,    -1,    -1,  1060,   137,    -1,    -1,    -1,    -1,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1263,
    3471     1264,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
    3472       -1,    75,    -1,    -1,    -1,    79,    -1,    -1,    82,    83,
    3473       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
    3474       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1114,    -1,
    3475       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3476      114,    -1,   116,    -1,    -1,    -1,    -1,  1133,   122,   123,
    3477      124,   125,   126,   127,    -1,    -1,    -1,    -1,    -1,    -1,
    3478       -1,    -1,  1148,  1149,    -1,    -1,     3,     4,     5,     6,
     3557      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
     3558     987,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,
     3559     125,   126,   127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3560      -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3561      -1,    -1,    -1,  1278,    -1,  1280,    -1,    -1,    -1,    -1,
     3562      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1036,
     3563      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
    34793564       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    34803565      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    34813566      27,    28,    29,    -1,    -1,    32,    33,    34,    35,    -1,
    3482       -1,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
    3483     1384,    -1,    49,    50,    51,    52,    53,    54,    55,    56,
     3567      -1,  1078,    39,    40,    41,    42,    43,    44,    -1,    46,
     3568      -1,    -1,    49,    50,    51,    52,    53,    54,    55,    56,
    34843569      -1,    -1,    -1,    60,    -1,    -1,    -1,    64,    65,    -1,
    34853570      67,    -1,    69,    70,    -1,    72,    -1,    74,    75,    -1,
    34863571      77,    78,    79,    -1,    -1,    82,    83,    84,    85,    86,
    34873572      87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,
    3488       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3573      -1,  1138,  1139,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34893574      -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,
    34903575      -1,    -1,   119,    -1,    -1,   122,   123,   124,   125,   126,
    3491      127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,  1473,
    3492      137,    -1,    -1,    -1,  1290,    -1,  1292,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3494       -1,    -1,    -1,  1497,  1498,    -1,    -1,    -1,    -1,    -1,
    3495       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3496       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1522,     3,
    3497        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3498       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3499       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3500       34,    35,    -1,    -1,    -1,    39,    40,    41,    42,    43,
     3576     127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,    -1,
     3577     137,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
    35013578      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    35023579      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3503       30,    -1,    -1,    -1,    -1,    69,    70,    -1,    72,    -1,
    3504       74,    75,    42,    77,    78,    79,    -1,    -1,    82,    83,
    3505       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
     3580      -1,    -1,    32,    33,    34,    35,    -1,    -1,    -1,    39,
     3581      40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
    35063582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3507       70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3508      114,    81,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3509      124,   125,   126,   127,     4,     5,     6,     7,     8,     9,
    3510       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3511       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3512       -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
    3513       40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
    3514       -1,  1507,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35153583      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    3516       70,    -1,    72,    -1,    74,    75,    -1,    77,    78,    79,
     3584      70,    -1,    72,    -1,    74,    75,  1511,    77,    78,    79,
    35173585      -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
    35183586      -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35193587      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35203588      -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,    -1,
    3521       -1,   121,   122,   123,   124,   125,   126,   127,     4,     5,
    3522        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3523       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3524       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
    3525       -1,    -1,    -1,    -1,    40,    41,    42,    43,    10,    11,
    3526       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3527       22,    23,    24,    25,    26,    27,    28,    29,    30,    -1,
    3528       -1,    -1,    -1,    69,    70,    -1,    72,    -1,    74,    75,
    3529       42,    77,    78,    79,    -1,    -1,    82,    83,    84,    85,
    3530       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    3531       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3532       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    81,
    3533      116,    -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,
    3534      126,   127,     4,     5,     6,     7,     8,     9,    10,    11,
    3535       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3536       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3537       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    41,
    3538       42,    43,    10,    11,    12,    13,    14,    15,    16,    17,
    3539       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3540       28,    29,    -1,    -1,    32,    33,    34,    69,    70,    -1,
    3541       72,    -1,    74,    75,    42,    77,    78,    79,    -1,    -1,
    3542       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    3543       92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3544       -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    77,
    3545       78,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    3546      122,   123,   124,   125,   126,   127,     4,     5,     6,     7,
    3547        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3548       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3549       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3550       -1,    -1,    40,    41,    42,    43,    10,    11,    12,    13,
    3551       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3552       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3553       34,    69,    70,    -1,    72,    -1,    74,    75,    42,    77,
    3554       78,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    3555       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
    3556       -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,
    3557       -1,    -1,    -1,    77,    78,    -1,   114,    -1,   116,    -1,
    3558       -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,   127,
    3559        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3560       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3561       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3562       34,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,
     3589      -1,    -1,   122,   123,   124,   125,   126,   127,    -1,    -1,
     3590      -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,     8,
     3591       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3592      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3593      29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
     3594      -1,    40,    41,    42,    43,    10,    11,    12,    13,    14,
     3595      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3596      25,    26,    27,    28,    29,    -1,  1373,    32,    33,    34,
     3597      69,    70,    -1,    72,    -1,    74,    75,    42,    77,    78,
     3598      79,    -1,  1389,    82,    83,    84,    85,    86,    87,    88,
     3599      89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
     3600      -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
     3601      -1,    -1,    77,    78,    -1,   114,    -1,   116,    -1,    -1,
     3602      -1,    -1,   121,   122,   123,   124,   125,   126,   127,     4,
     3603       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3604      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3605      25,    26,    27,    28,    29,  1462,  1463,    32,    33,    34,
     3606      -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,    10,
     3607      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3608      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3609      -1,    32,    33,    34,    69,    70,    -1,    72,    -1,    74,
     3610      75,    42,    77,    78,    79,    -1,    -1,    82,    83,    84,
     3611      85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
     3612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
     3613      -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    -1,   114,
     3614      -1,   116,    -1,    -1,    -1,    -1,   121,   122,   123,   124,
     3615     125,   126,   127,     4,     5,     6,     7,     8,     9,    10,
     3616      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3617      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3618      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
     3619      41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3620      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3621      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,
     3622      -1,    72,    -1,    74,    75,    -1,    77,    78,    79,    -1,
     3623      -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
     3624      91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3625      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3626      -1,    -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,
     3627      -1,   122,   123,   124,   125,   126,   127,     4,     5,     6,
     3628       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3629      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3630      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3631      -1,    -1,    -1,    40,    41,    42,    43,    -1,    -1,    -1,
    35633632      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35643633      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3565       -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    72,    -1,
    3566       74,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
    3567       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
     3634      -1,    -1,    69,    70,    -1,    72,    -1,    74,    75,    -1,
     3635      77,    78,    79,    -1,    -1,    82,    83,    84,    85,    86,
     3636      87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,
     3637      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3638      -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,
     3639      -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,
     3640     127,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3641      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3642      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3643      33,    34,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,
     3644      43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3645      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3646      -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    72,
     3647      -1,    74,    75,    -1,    77,    78,    79,    -1,    -1,    82,
     3648      83,    84,    85,    86,    87,    88,    89,    -1,    91,    92,
    35683649      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35693650      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3570      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3571      124,   125,   126,   127,     0,    -1,    -1,     3,     4,     5,
    3572        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3573       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3574       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    35,
    3575       -1,    -1,    -1,    39,    -1,    -1,    42,    43,    -1,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3577       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3578       -1,    67,    -1,    -1,    70,    -1,    72,    -1,    74,    75,
    3579       -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
    3580       -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
    3581       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3582       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    3583      116,    -1,    -1,    -1,    -1,    -1,   122,   123,     3,     4,
     3651      -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
     3652     123,   124,   125,   126,   127,     0,    -1,    -1,     3,     4,
    35843653       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    35853654      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    35933662      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35943663      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3595       -1,   116,    -1,    -1,    -1,   120,    -1,   122,   123,     3,
     3664      -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,     3,
    35963665       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    35973666      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    36053674      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36063675      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
     3676     114,    -1,   116,    -1,    -1,    -1,   120,    -1,   122,   123,
    36083677       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    36093678      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    36103679      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3611       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
     3680      33,    34,    35,    -1,    -1,    -1,    39,    -1,    -1,    42,
     3681      43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36123682      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3613       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3614       -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,
     3683      -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    72,
    36153684      -1,    74,    75,    -1,    77,    78,    79,    -1,    -1,    -1,
    36163685      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
     
    36573726      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    36583727      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3659       42,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3660       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3661       28,    29,    -1,    -1,    32,    33,    34,    -1,    70,    -1,
    3662       72,    -1,    74,    -1,    42,    77,    78,    -1,    -1,    -1,
     3728      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36633729      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3664       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3665       -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    77,
    3666       78,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    3667      122,   123,     4,     5,     6,     7,     8,     9,    10,    11,
     3730      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
     3731      72,    -1,    74,    -1,    -1,    77,    78,     4,     5,     6,
     3732       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3733      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3734      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3735      -1,    -1,    -1,   115,   116,    42,    -1,    -1,    -1,    -1,
     3736     122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3737      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3738      -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
     3739      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3740      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3741      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
     3742      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
     3743      -1,    -1,    -1,    -1,    -1,   122,   123,     4,     5,     6,
     3744       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3745      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3746      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3747      -1,    -1,    -1,    -1,    -1,    42,    -1,    10,    11,    12,
     3748      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3749      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3750      33,    34,    -1,    70,    -1,    72,    -1,    74,    -1,    42,
     3751      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3752      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3753      -1,    -1,    -1,    -1,   101,    -1,    -1,    70,    -1,    -1,
     3754      -1,    -1,    -1,    -1,    77,    78,    -1,    -1,    -1,   116,
     3755      -1,    -1,    -1,    -1,    -1,   122,   123,     4,     5,     6,
     3756       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3757      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3758      27,    28,    29,   116,    -1,    32,    33,    34,    -1,   122,
     3759     123,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
     3760      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3761      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3762      -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
     3763      77,    78,     4,     5,     6,     7,     8,     9,    10,    11,
    36683764      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3669       22,    23,    24,    25,    26,    27,    28,    29,   116,    -1,
    3670       32,    33,    34,    -1,   122,   123,    -1,    -1,    -1,    -1,
    3671       42,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3672       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3673       28,    29,    -1,    -1,    32,    33,    34,    -1,    70,    -1,
    3674       72,    -1,    74,    -1,    42,    77,    78,    -1,    -1,    -1,
    3675       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3676       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3677       -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    77,
    3678       78,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    3679      122,   123,     4,     5,     6,     7,     8,     9,    10,    11,
    3680       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3681       22,    23,    24,    25,    26,    27,    28,    29,   116,    -1,
    3682       32,    33,    34,    -1,   122,   123,    -1,    -1,    -1,    -1,
    3683       42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3765      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     3766      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   116,
     3767      42,    -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,
    36843768      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36853769      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
     
    36923776      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36933777      -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
    3694       77,    78,     4,     5,     6,     7,     8,     9,    10,    11,
     3778      77,    78,    10,    11,    12,    13,    14,    15,    16,    17,
     3779      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3780      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
     3781      -1,    -1,    40,    41,    42,    43,    -1,    -1,    -1,   116,
     3782      -1,    -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,
     3783      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3784      -1,    69,    70,    -1,    -1,    -1,    -1,    75,    -1,    77,
     3785      78,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
     3786      88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
     3787      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3788      -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
     3789      -1,   119,    -1,    -1,   122,   123,   124,   125,   126,   127,
     3790      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3791      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3792      -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
     3793      40,    41,    42,    43,    10,    11,    12,    13,    14,    15,
     3794      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3795      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    69,
     3796      70,    -1,    -1,    -1,    -1,    75,    42,    77,    78,    79,
     3797      -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
     3798      -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3799      -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
     3800      -1,    77,    78,    -1,   114,   115,   116,    -1,    -1,    -1,
     3801      -1,    -1,   122,   123,   124,   125,   126,   127,    10,    11,
    36953802      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    36963803      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3697       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   116,
    3698       42,    -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,
     3804      32,    33,    34,    -1,    -1,    -1,   122,   123,    40,    41,
     3805      42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36993806      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3701       72,    -1,    74,    -1,    -1,    77,    78,    10,    11,    12,
     3807      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,
     3808      -1,    -1,    -1,    75,    -1,    77,    78,    79,    -1,    -1,
     3809      82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
     3810      92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3811      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3812      -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,
     3813     122,   123,   124,   125,   126,   127,    10,    11,    12,    13,
     3814      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3815      24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
     3816      34,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,
     3817      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3818      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3819      -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    -1,    -1,
     3820      -1,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
     3821      84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
     3822      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3823      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3824     114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
     3825     124,   125,   126,   127,    10,    11,    12,    13,    14,    15,
     3826      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3827      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
     3828      -1,    -1,    -1,    -1,    40,    41,    42,    43,    -1,    -1,
     3829      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3830      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3831      -1,    -1,    -1,    69,    70,    -1,    -1,    -1,    -1,    75,
     3832      -1,    77,    78,    79,    -1,    -1,    82,    83,    84,    85,
     3833      86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
     3834      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3835      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
     3836     116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,
     3837     126,   127,     3,     4,     5,     6,     7,     8,     9,    10,
     3838      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3839      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3840      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
     3841      -1,    42,    10,    11,    12,    13,    14,    15,    16,    17,
     3842      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3843      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    70,
     3844      -1,    72,    -1,    74,    42,    -1,    77,    78,    -1,    -1,
     3845      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3846      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3847      28,    29,    70,    -1,    32,    33,    34,    75,    -1,    77,
     3848      78,    79,    -1,    -1,    42,    -1,    -1,    -1,   119,    -1,
     3849      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3850      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3851      -1,    -1,    70,    -1,    -1,    -1,   114,    75,   116,    77,
     3852      78,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,
     3853      88,    89,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    37023854      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3703       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3704       33,    34,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,
    3705       43,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    3706      122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3707       -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    -1,
     3855      23,    24,    25,    26,    27,    28,    29,    -1,   116,    32,
     3856      33,    34,    -1,    -1,   122,   123,    -1,    -1,    -1,    42,
     3857      43,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
     3858      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3859      23,    24,    25,    26,    27,    28,    29,    70,    -1,    32,
     3860      33,    34,    -1,    -1,    77,    78,    -1,    -1,    -1,    42,
     3861      43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3862      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3863      -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
     3864      -1,    -1,    -1,   116,    77,    78,    -1,   120,    -1,   122,
     3865     123,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3866      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3867      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
     3868      -1,    -1,    -1,   116,    42,    -1,    -1,   120,    -1,   122,
     3869     123,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3870      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3871      28,    29,    70,    -1,    32,    33,    34,    -1,    -1,    77,
     3872      78,    -1,    -1,    -1,    42,    10,    11,    12,    13,    14,
     3873      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3874      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3875      -1,    -1,    70,    -1,    -1,    -1,    -1,    42,   116,    77,
     3876      78,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,
     3877      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3878      -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
     3879      -1,    -1,    77,    78,    -1,    -1,    -1,    -1,   116,    -1,
     3880      -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,
     3881      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3882      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3883      -1,   116,    32,    33,    34,    -1,    -1,   122,   123,    -1,
     3884      -1,    -1,    42,    10,    11,    12,    13,    14,    15,    16,
     3885      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3886      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3887      70,    -1,    -1,    -1,    -1,    42,    -1,    77,    78,    -1,
     3888      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3889      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3890      -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
     3891      77,    78,    -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,
     3892      -1,    -1,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,
     3893      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3894      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
     3895      -1,    -1,    -1,    -1,    -1,   122,   123,     4,     5,     6,
     3896       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3897      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3898      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3899      -1,    -1,    -1,    -1,    -1,    42,    -1,    40,    41,    -1,
     3900      43,    44,    -1,    46,    -1,    -1,    49,    50,    51,    52,
     3901      53,    54,    55,    56,    -1,    -1,    59,    60,    -1,    -1,
     3902      -1,    64,    65,    70,    67,    72,    69,    74,    -1,    -1,
     3903      77,    78,    75,    -1,    77,    78,    79,    -1,    -1,    82,
     3904      83,    84,    85,    86,    87,    88,    89,    -1,    91,    92,
     3905      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3906      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,
     3907      -1,   114,    -1,   116,    -1,    -1,   119,    -1,    -1,   122,
     3908     123,   124,   125,   126,   127,    -1,    -1,    40,    41,   132,
     3909      43,    44,    -1,    46,   137,    -1,    49,    50,    51,    52,
     3910      53,    54,    55,    56,    -1,    -1,    -1,    60,    -1,    -1,
     3911      -1,    64,    65,    -1,    67,    -1,    69,    -1,    -1,    -1,
    37083912      -1,    -1,    75,    -1,    77,    78,    79,    -1,    -1,    82,
    37093913      83,    84,    85,    86,    87,    88,    89,    -1,    91,    92,
     
    37113915      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37123916      -1,   114,    -1,   116,    -1,    -1,   119,    -1,    -1,   122,
    3713      123,   124,   125,   126,   127,    10,    11,    12,    13,    14,
    3714       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3715       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3716       -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,    10,
    3717       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3718       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3719       -1,    32,    33,    34,    69,    70,    -1,    -1,    -1,    -1,
    3720       75,    42,    77,    78,    79,    -1,    -1,    82,    83,    84,
    3721       85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
    3722       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
    3723       -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    -1,   114,
    3724      115,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,
    3725      125,   126,   127,    10,    11,    12,    13,    14,    15,    16,
    3726       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3727       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3728       -1,   122,   123,    40,    41,    42,    43,    -1,    -1,    -1,
    3729       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3730       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    69,    70,    -1,    -1,    -1,    -1,    75,    -1,
    3732       77,    78,    79,    -1,    -1,    82,    83,    84,    85,    86,
    3733       87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,
    3734       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,
    3736       -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,
    3737      127,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3917     123,   124,   125,   126,   127,    -1,    -1,    -1,    -1,   132,
     3918      -1,    -1,    -1,    -1,   137,     4,     5,     6,     7,     8,
     3919       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    37383920      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    37393921      29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    3740       -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
     3922      -1,    -1,    -1,    42,    -1,    40,    41,    -1,    43,    44,
     3923      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
     3924      55,    56,    -1,    -1,    59,    60,    -1,    -1,    -1,    64,
     3925      65,    70,    67,    72,    69,    74,    -1,    -1,    77,    78,
     3926      75,    -1,    77,    78,    79,    -1,    -1,    82,    83,    84,
     3927      85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
     3928      -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3929      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
     3930      -1,   116,    -1,    -1,   119,    -1,    -1,   122,   123,   124,
     3931     125,   126,   127,    -1,    -1,    40,    41,   132,    43,    44,
     3932      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
     3933      55,    56,    -1,    -1,    -1,    60,    -1,    -1,    -1,    64,
     3934      65,    -1,    67,    -1,    69,    -1,    -1,    -1,    -1,    -1,
     3935      75,    -1,    77,    78,    79,    -1,    -1,    82,    83,    84,
     3936      85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
    37413937      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3742       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3743       69,    70,    -1,    -1,    -1,    -1,    75,    -1,    77,    78,
    3744       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3745       89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
    3746       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3747       -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,
    3748       -1,    -1,    -1,   122,   123,   124,   125,   126,   127,    10,
    3749       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3750       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3751       -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
    3752       41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3753       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3754       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,
    3755       -1,    -1,    -1,    -1,    75,    -1,    77,    78,    79,    -1,
    3756       -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
    3757       91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3758       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3759       -1,    -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,
    3760       -1,   122,   123,   124,   125,   126,   127,    10,    11,    12,
    3761       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3762       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3763       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
    3764       -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3765       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3766       23,    24,    25,    26,    27,    28,    29,    70,    -1,    32,
    3767       33,    34,    75,    -1,    77,    78,    79,    -1,    -1,    42,
    3768       -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
    3769       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3770       -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
    3771       -1,   114,    75,   116,    77,    78,    79,    -1,    -1,   122,
    3772      123,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
    3773       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3774       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3775       -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
    3776      123,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3777       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3778       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    3779       -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
    3780       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3781       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3782       29,    70,    -1,    32,    33,    34,    -1,    -1,    77,    78,
    3783       -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
    3784       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3785       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3786       -1,    70,    -1,    -1,    -1,    -1,    -1,   116,    77,    78,
    3787       -1,   120,    -1,   122,   123,    -1,    10,    11,    12,    13,
    3788       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3789       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3790       34,    -1,    -1,    -1,    -1,    -1,    -1,   116,    42,    -1,
    3791       -1,   120,    -1,   122,   123,    -1,    10,    11,    12,    13,
    3792       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3793       24,    25,    26,    27,    28,    29,    70,    -1,    32,    33,
    3794       34,    -1,    -1,    77,    78,    -1,    -1,    -1,    42,    10,
    3795       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3796       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3797       -1,    32,    33,    34,    -1,    -1,    70,    -1,    -1,    -1,
    3798       -1,    42,   116,    77,    78,    -1,    -1,    -1,   122,   123,
    3799       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3800       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
    3801       -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    -1,    -1,
    3802       -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3803       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3804       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3805       26,    27,    28,    29,    -1,   116,    32,    33,    34,    -1,
    3806       -1,   122,   123,    -1,    -1,    -1,    42,    -1,     4,     5,
    3807        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3808       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3809       26,    27,    28,    29,    70,    -1,    32,    33,    34,    -1,
    3810       -1,    77,    78,    -1,    -1,    -1,    42,    -1,    -1,    -1,
    3811       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3812       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3813       -1,    -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,
    3814      116,    77,    78,    -1,    -1,    -1,   122,   123,    40,    41,
    3815       -1,    43,    44,    -1,    46,    -1,    -1,    49,    50,    51,
    3816       52,    53,    54,    55,    56,    -1,    -1,    -1,    60,    -1,
    3817       -1,    -1,    64,    65,    -1,    67,    -1,    69,    -1,   115,
    3818       -1,    -1,    -1,    75,    -1,    77,    78,    79,    -1,    -1,
    3819       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    3820       92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3821       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3822       -1,    -1,   114,    -1,   116,    -1,    -1,   119,    -1,    -1,
    3823      122,   123,   124,   125,   126,   127,    -1,    -1,    -1,    -1,
    3824      132,    -1,    -1,    -1,    -1,   137,     4,     5,     6,     7,
    3825        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3826       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3827       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3828       -1,    -1,    -1,    -1,    42,    -1,    40,    41,    -1,    43,
    3829       44,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
    3830       54,    55,    56,    -1,    -1,    59,    60,    -1,    -1,    -1,
    3831       64,    65,    70,    67,    72,    69,    74,    -1,    -1,    77,
    3832       78,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
    3833       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
    3834       -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
    3835       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3836      114,    -1,   116,    -1,    -1,   119,    -1,    -1,   122,   123,
    3837      124,   125,   126,   127,    -1,    -1,    40,    41,   132,    43,
    3838       44,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
    3839       54,    55,    56,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3840       64,    65,    -1,    67,    -1,    69,    -1,    -1,    -1,    -1,
    3841       -1,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
    3842       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
    3843       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3844       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3845      114,    -1,   116,    -1,    -1,   119,    -1,    -1,   122,   123,
    3846      124,   125,   126,   127,    -1,    -1,    40,    41,   132,    43,
    3847       44,    -1,    46,    -1,    -1,    49,    50,    51,    52,    53,
    3848       54,    55,    56,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3849       64,    65,    -1,    67,    -1,    69,    -1,    -1,    -1,    -1,
    3850       -1,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
    3851       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
    3852       -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    43,    -1,
    3853       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3854      114,    -1,   116,    -1,    -1,   119,    -1,    -1,   122,   123,
    3855      124,   125,   126,   127,    69,    -1,    -1,    -1,   132,    -1,
    3856       75,    -1,    -1,    -1,    79,    -1,    -1,    82,    83,    84,
     3938      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
     3939      -1,   116,    -1,    -1,   119,    -1,    -1,   122,   123,   124,
     3940     125,   126,   127,    -1,    -1,    40,    41,   132,    43,    44,
     3941      -1,    46,    -1,    -1,    49,    50,    51,    52,    53,    54,
     3942      55,    56,    -1,    -1,    -1,    60,    -1,    -1,    -1,    64,
     3943      65,    -1,    67,    -1,    69,    -1,    -1,    -1,    -1,    -1,
     3944      75,    -1,    77,    78,    79,    -1,    -1,    82,    83,    84,
    38573945      85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
    38583946      -1,    -1,    -1,    -1,    40,    41,    -1,    43,    -1,    -1,
    38593947      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3860       -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,
    3861      125,   126,   127,    69,    -1,    -1,    -1,    -1,    -1,    75,
     3948      -1,   116,    -1,    -1,   119,    -1,    -1,   122,   123,   124,
     3949     125,   126,   127,    69,    -1,    -1,    -1,   132,    -1,    75,
    38623950      -1,    -1,    -1,    79,    -1,    -1,    82,    83,    84,    85,
    38633951      86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    38643952      -1,    -1,    -1,    40,    41,    -1,    43,    -1,    -1,    -1,
    38653953      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    3866      116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,
     3954     116,    -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,
    38673955     126,   127,    69,    -1,    -1,    -1,    -1,    -1,    75,    -1,
    38683956      -1,    -1,    79,    -1,    -1,    82,    83,    84,    85,    86,
     
    38743962      -1,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    38753963      88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
    3876       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3964      -1,    40,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
    38773965      -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    38783966      -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,   127,
    3879       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3880       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3881       -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
    3882       -1,    -1,    42,     3,     4,     5,     6,     7,     8,     9,
    3883       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3884       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3885       70,    -1,    32,    33,    34,    75,    -1,    77,    78,    -1,
    3886       -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    88,    89,
     3967      69,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
     3968      79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
     3969      89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
     3970      40,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,
     3971      -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,
     3972      -1,    -1,    -1,   122,   123,   124,   125,   126,   127,    69,
     3973      -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,
     3974      -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
     3975      -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    40,
     3976      41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3977      -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,    -1,
     3978      -1,    -1,   122,   123,   124,   125,   126,   127,    69,    -1,
     3979      -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,    -1,
     3980      -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
     3981      91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3982      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3983      -1,    -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,
     3984      -1,   122,   123,   124,   125,   126,   127,    10,    11,    12,
     3985      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3986      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3987      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
     3988       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3989      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3990      23,    24,    25,    26,    27,    28,    29,    70,    -1,    32,
     3991      33,    34,    75,    -1,    77,    78,    -1,    -1,    -1,    42,
     3992      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
     3993      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3994      -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,
     3995      -1,    74,    -1,    -1,    77,    78,     3,     4,     5,     6,
     3996       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3997      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3998      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3999      -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
    38874000      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38884001      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3889       70,    -1,    72,    -1,    74,    -1,    -1,    77,    78,     3,
    3890        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3891       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3892       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3893       34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
     4002      -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
     4003      77,    78,     4,     5,     6,     7,     8,     9,    10,    11,
     4004      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     4005      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     4006      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4007      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4008      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4009      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
     4010      72,    -1,    74,    -1,    -1,    77,    78,    10,    11,    12,
     4011      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     4012      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     4013      33,    34,    35,    36,    37,    38,    -1,    -1,    -1,    42,
    38944014      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38954015      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3896       -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,    -1,
    3897       74,    -1,    -1,    77,    78,     4,     5,     6,     7,     8,
    3898        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3899       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3900       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    3901       -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
    3902       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3903       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3904       -1,    70,    -1,    72,    -1,    74,    -1,    -1,    77,    78,
    3905       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3906       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3907       -1,    -1,    32,    33,    34,    35,    36,    37,    38,    -1,
    3908       -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3909       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3910       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3911       70,    -1,    -1,    -1,    -1,    -1,    -1,    77,    78
     4016      -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
     4017      -1,    -1,    -1,    -1,    77,    78
    39124018};
    39134019
     
    39224028      77,    78,    79,    88,    89,   114,   116,   122,   123,   142,
    39234029     145,   157,   206,   220,   221,   222,   223,   224,   225,   226,
    3924      227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
    3925      237,   239,   240,   241,   242,   243,   244,   245,   247,   248,
    3926      249,   250,   251,   252,   254,   262,   263,   290,   291,   292,
    3927      300,   303,   309,   310,   312,   314,   315,   321,   326,   330,
    3928      331,   332,   333,   334,   335,   336,   337,   357,   374,   375,
    3929      376,   377,    75,   144,   145,   157,   223,   225,   233,   235,
    3930      244,   248,   250,   291,    84,   114,   319,   320,   321,   319,
    3931      319,    75,    77,    78,    79,   143,   144,   280,   281,   301,
    3932      302,    77,    78,   281,   114,   312,    11,   207,   114,   157,
    3933      326,   331,   332,   333,   335,   336,   337,   117,   139,   226,
    3934      233,   235,   330,   334,   373,   374,   377,   378,   140,   112,
    3935      136,   284,   119,   140,   181,    77,    78,   142,   279,   140,
    3936      140,   140,   121,   140,    77,    78,   114,   157,   316,   325,
    3937      326,   327,   328,   329,   330,   334,   338,   339,   340,   341,
    3938      342,   348,     3,    30,    81,   246,     3,     5,    77,   116,
    3939      157,   225,   236,   240,   242,   251,   292,   330,   334,   377,
    3940      223,   225,   235,   244,   248,   250,   291,   330,   334,    35,
    3941      241,   241,   236,   242,   140,   241,   236,   241,   236,    78,
    3942      114,   119,   281,   292,   119,   281,   241,   236,   121,   140,
    3943      140,     0,   139,   114,   181,   319,   319,   139,   116,   233,
    3944      235,   375,   279,   279,   136,   235,   114,   157,   316,   326,
    3945      330,   116,   157,   377,   313,   238,   321,   114,   297,   114,
    3946      114,    54,   114,    40,    41,    43,    69,    75,    79,    82,
    3947       83,    84,    85,    86,    87,    91,    92,   114,   116,   124,
    3948      125,   126,   127,   141,   145,   146,   147,   148,   149,   156,
    3949      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    3950      167,   168,   169,   170,   172,   175,   233,   283,   299,   373,
    3951      378,   235,   115,   115,   115,   115,   115,   115,   115,   116,
    3952      233,   357,   375,   116,   122,   157,   172,   225,   226,   232,
    3953      235,   239,   240,   244,   247,   248,   250,   269,   270,   274,
    3954      275,   276,   277,   291,   357,   369,   370,   371,   372,   377,
    3955      378,   114,   330,   334,   377,   114,   121,   137,   116,   119,
    3956      157,   172,   285,   285,   120,   139,   121,   137,   114,   121,
    3957      137,   121,   137,   121,   137,   319,   137,   326,   327,   328,
    3958      329,   339,   340,   341,   342,   235,   325,   338,    67,   318,
    3959      116,   319,   356,   357,   319,   319,   181,   139,   114,   319,
    3960      356,   319,   319,   235,   316,   114,   114,   234,   235,   233,
    3961      235,   139,   233,   373,   378,   181,   139,   279,   284,   225,
    3962      240,   330,   334,   181,   139,   301,   235,   244,   137,   235,
    3963      235,   299,   255,   253,   265,   281,   264,   235,   301,   137,
    3964      137,   312,   139,   144,   278,     3,   140,   215,   216,   230,
    3965      232,   235,   139,   318,   114,   318,   172,   326,   235,   114,
    3966      139,   279,   119,    35,    36,    37,    38,   233,   293,   294,
    3967      296,   139,   133,   136,   298,   139,    10,    75,    77,    78,
    3968      322,   323,   324,   114,   146,   114,   156,   114,   156,   159,
    3969      114,   156,   114,   114,   156,   156,   116,   172,   177,   181,
    3970      233,   282,   373,   377,   139,    84,    86,    90,    91,    92,
    3971      114,   116,   118,   119,   102,   103,   104,   105,   106,   107,
    3972      108,   109,   110,   111,   112,   136,   174,   159,   159,   122,
    3973      128,   129,   124,   125,    93,    94,    95,    96,   130,   131,
    3974       97,    98,   123,   132,   133,    99,   100,   134,   114,   157,
    3975      352,   353,   354,   355,   356,   115,   121,   114,   356,   357,
    3976      114,   356,   357,   139,   233,   375,   117,   139,   140,   233,
    3977      235,   368,   369,   377,   378,   140,   114,   116,   157,   326,
    3978      343,   344,   345,   346,   347,   348,   349,   350,   351,   357,
    3979      358,   359,   360,   361,   362,   363,   157,   377,   235,   140,
    3980      140,   157,   233,   235,   370,   279,   233,   357,   370,   279,
    3981      139,   139,   139,   139,    75,   116,   118,   145,   281,   285,
    3982      286,   287,   288,   289,   139,   139,   139,   139,   139,   139,
    3983      316,   115,   115,   115,   115,   115,   115,   115,   325,   338,
    3984      114,   284,   117,   215,   139,   316,   177,   283,   177,   283,
    3985      316,   116,   215,   318,   181,   139,   215,   115,    43,   116,
    3986      120,   233,   256,   257,   258,   373,   119,   121,   379,   136,
    3987      266,   119,   235,   271,   272,   273,   276,   277,   115,   121,
    3988      181,   139,   122,   172,   139,   232,   235,   270,   369,   377,
    3989      310,   311,   114,   157,   343,   115,   121,   136,   380,   281,
    3990      293,   114,   119,   281,   283,   293,   115,   121,   114,   146,
    3991      115,   135,   282,   282,   282,   151,   172,   283,   282,   139,
    3992      115,   121,   115,   114,   157,   356,   364,   365,   366,   367,
     4030     227,   228,   229,   230,   232,   233,   234,   235,   236,   237,
     4031     239,   240,   241,   242,   243,   244,   245,   247,   248,   249,
     4032     250,   251,   252,   254,   262,   289,   290,   291,   299,   302,
     4033     308,   309,   311,   313,   314,   320,   325,   329,   330,   331,
     4034     332,   333,   334,   335,   336,   356,   373,   374,   375,   376,
     4035      75,   144,   145,   157,   223,   225,   233,   235,   244,   248,
     4036     250,   290,    84,   114,   318,   319,   320,    75,    77,    78,
     4037      79,   143,   144,   279,   280,   300,   301,    77,    78,   280,
     4038     114,   311,    11,   207,   114,   157,   325,   330,   331,   332,
     4039     334,   335,   336,   117,   139,   226,   233,   235,   329,   333,
     4040     372,   373,   376,   377,   140,   112,   136,   283,   119,   140,
     4041     181,    77,    78,   142,   278,   140,   140,   140,    77,    78,
     4042     114,   157,   231,   315,   324,   325,   326,   327,   328,   329,
     4043     333,   337,   338,   339,   340,   341,   347,     3,    30,    81,
     4044     246,     3,     5,    77,   116,   157,   225,   236,   240,   242,
     4045     251,   291,   329,   333,   376,   223,   225,   235,   244,   248,
     4046     250,   290,   329,   333,    35,   241,   241,   236,   242,   140,
     4047     241,   236,   241,   236,   318,   241,   236,   121,   140,   140,
     4048       0,   139,   114,   181,   318,   318,   139,   116,   233,   235,
     4049     374,   278,   278,   136,   235,   114,   157,   315,   325,   329,
     4050     116,   157,   376,   312,   238,   119,   280,   320,   114,   296,
     4051     114,   114,    54,   114,    40,    41,    43,    69,    75,    79,
     4052      82,    83,    84,    85,    86,    87,    91,    92,   114,   116,
     4053     124,   125,   126,   127,   141,   145,   146,   147,   148,   149,
     4054     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
     4055     166,   167,   168,   169,   170,   172,   175,   233,   281,   282,
     4056     298,   372,   377,   235,   115,   115,   115,   115,   115,   115,
     4057     115,   116,   233,   356,   374,   116,   122,   157,   172,   225,
     4058     226,   232,   235,   239,   240,   244,   247,   248,   250,   268,
     4059     269,   273,   274,   275,   276,   290,   356,   368,   369,   370,
     4060     371,   376,   377,   114,   329,   333,   376,   114,   121,   137,
     4061     116,   119,   157,   172,   284,   284,   120,   139,   121,   137,
     4062     114,   121,   137,   121,   137,   121,   137,   325,   326,   327,
     4063     328,   338,   339,   340,   341,   235,   324,   337,   121,   140,
     4064      67,   317,   116,   318,   355,   356,   318,   318,   181,   139,
     4065     114,   318,   355,   318,   318,   235,   315,   114,   114,   234,
     4066     235,   233,   235,   139,   233,   372,   377,   181,   139,   278,
     4067     283,   225,   240,   329,   333,   181,   139,   300,   235,   244,
     4068     137,   235,   235,    78,   114,   119,   280,   291,   235,   300,
     4069     137,   137,   311,   139,   144,   277,     3,   140,   215,   216,
     4070     230,   232,   235,   139,   317,   114,   317,   172,   325,   235,
     4071     114,   139,   278,   119,    35,    36,    37,    38,   233,   292,
     4072     293,   295,   264,   280,   263,   139,   133,   136,   297,   139,
     4073      10,    75,    77,    78,   321,   322,   323,   114,   146,   114,
     4074     156,   114,   156,   159,   114,   156,   114,   114,   156,   156,
     4075     116,   172,   177,   181,   281,   376,   139,    84,    86,    90,
     4076      91,    92,   114,   116,   118,   119,   102,   103,   104,   105,
     4077     106,   107,   108,   109,   110,   111,   112,   136,   174,   159,
     4078     159,   122,   128,   129,   124,   125,    93,    94,    95,    96,
     4079     130,   131,    97,    98,   123,   132,   133,    99,   100,   134,
     4080     114,   157,   351,   352,   353,   354,   355,   115,   121,   114,
     4081     355,   356,   114,   355,   356,   139,   233,   374,   117,   139,
     4082     140,   233,   235,   367,   368,   376,   377,   140,   114,   116,
     4083     157,   325,   342,   343,   344,   345,   346,   347,   348,   349,
     4084     350,   356,   357,   358,   359,   360,   361,   362,   157,   376,
     4085     235,   140,   140,   157,   233,   235,   369,   278,   233,   356,
     4086     369,   278,   139,   139,   139,   139,    75,   116,   118,   145,
     4087     280,   284,   285,   286,   287,   288,   139,   139,   139,   139,
     4088     139,   139,   115,   115,   115,   115,   115,   115,   115,   324,
     4089     337,   318,   137,   114,   283,   117,   215,   139,   315,   177,
     4090     282,   177,   282,   315,   116,   215,   317,   181,   139,   215,
     4091     298,   255,   253,   235,   270,   271,   272,   275,   276,   115,
     4092     121,   181,   139,   122,   172,   139,   232,   235,   269,   368,
     4093     376,   309,   310,   114,   157,   342,   115,   121,   136,   379,
     4094     280,   121,   378,   136,   265,   119,   292,   114,   119,   280,
     4095     282,   292,   115,   121,   114,   146,   115,   135,   281,   116,
     4096     281,   281,   151,   172,   282,   281,   139,   115,   121,   115,
    39934097     115,   121,   172,   116,   144,   150,   151,   139,   116,   144,
    39944098     150,   172,   159,   159,   159,   160,   160,   161,   161,   162,
    39954099     162,   162,   162,   163,   163,   164,   165,   166,   167,   168,
    3996      135,   177,   139,   353,   354,   355,   235,   352,   319,   319,
    3997      172,   283,   139,   278,   233,   357,   370,   235,   239,   117,
    3998      377,   117,   114,   139,   326,   344,   345,   346,   349,   359,
    3999      360,   361,   117,   139,   235,   343,   347,   358,   114,   319,
    4000      362,   380,   319,   319,   380,   114,   319,   362,   319,   319,
    4001      319,   319,   357,   233,   368,   378,   279,   117,   121,   117,
    4002      121,   380,   233,   370,   380,   267,   268,   269,   270,   267,
    4003      279,   172,   139,   116,   281,   135,   121,   379,   285,   116,
    4004      135,   289,    31,   217,   218,   279,   267,   144,   316,   144,
    4005      318,   114,   356,   357,   114,   356,   357,   146,   357,   181,
    4006      271,   115,   115,   115,   115,   139,   181,   215,   181,   119,
    4007      257,   258,   139,   114,   135,   157,   259,   261,   325,   326,
    4008      338,   364,   121,   137,   121,   137,   281,   255,   281,   120,
    4009      170,   171,   265,   140,   140,   144,   230,   140,   140,   267,
    4010      114,   157,   377,   140,   120,   235,   294,   172,   295,   140,
    4011      139,   139,   114,   140,   115,   323,   150,   135,   137,   116,
    4012      146,   208,   209,   210,   115,   121,   115,   115,   115,   115,
    4013      172,   365,   366,   367,   235,   364,   319,   319,   119,   159,
    4014      172,   173,   176,   121,   139,   115,   121,   172,   139,   120,
    4015      170,   135,   271,   115,   115,   115,   352,   271,   115,   233,
    4016      370,   116,   122,   157,   172,   172,   235,   349,   271,   115,
    4017      115,   115,   115,   115,   115,   115,     7,   235,   343,   347,
    4018      358,   139,   139,   380,   139,   139,   140,   140,   140,   140,
    4019      284,   170,   171,   172,   317,   139,   285,   287,   120,   139,
    4020      219,   281,    43,    44,    46,    49,    50,    51,    52,    53,
    4021       54,    55,    56,    60,    64,    65,    75,    77,    78,    79,
    4022      132,   145,   177,   178,   179,   180,   181,   182,   183,   185,
    4023      186,   198,   200,   201,   206,   220,   279,   315,    31,   140,
    4024      136,   284,   139,   139,   115,   140,   181,   255,   137,   137,
    4025      326,   171,   235,   260,   261,   260,   281,   319,   120,   266,
    4026      379,   115,   121,   117,   117,   140,   235,   121,   380,   297,
    4027      115,   293,   223,   225,   233,   305,   306,   307,   308,   299,
    4028      115,   115,   135,   171,   114,   115,   135,   121,   144,   115,
    4029      115,   115,   364,   286,   121,   140,   176,    82,    85,    87,
     4100     135,   177,   139,   352,   353,   354,   235,   351,   318,   318,
     4101     172,   282,   139,   139,   233,   356,   369,   235,   239,   117,
     4102     376,   117,   114,   139,   325,   343,   344,   345,   348,   358,
     4103     359,   360,   117,   139,   235,   342,   346,   357,   114,   318,
     4104     361,   379,   318,   318,   379,   114,   318,   361,   318,   318,
     4105     318,   318,   356,   233,   367,   377,   278,   117,   121,   117,
     4106     121,   379,   233,   369,   379,   266,   267,   268,   269,   266,
     4107     278,   172,   139,   116,   280,   135,   121,   378,   284,   116,
     4108     135,   288,    31,   217,   218,   278,   266,   144,   315,   144,
     4109     114,   318,   355,   356,   114,   318,   355,   356,   315,   146,
     4110     356,   181,   270,   115,   115,   115,   115,   139,   181,   215,
     4111     181,   115,    43,   120,   233,   256,   257,   372,   119,   140,
     4112     140,   144,   230,   140,   140,   266,   114,   157,   376,   140,
     4113     120,   235,   293,   172,   294,   280,   120,   170,   171,   264,
     4114     140,   139,   139,   114,   140,   115,   322,   150,   135,   137,
     4115     116,   146,   208,   209,   210,   115,   139,   121,   115,   115,
     4116     115,   115,   172,   119,   159,   172,   173,   176,   121,   139,
     4117     115,   121,   172,   139,   120,   170,   135,   270,   115,   115,
     4118     115,   351,   270,   270,   233,   369,   116,   122,   157,   172,
     4119     172,   235,   348,   270,   115,   115,   115,   115,   115,   115,
     4120     115,     7,   235,   342,   346,   357,   139,   139,   379,   139,
     4121     139,   140,   140,   140,   140,   283,   170,   171,   172,   316,
     4122     139,   284,   286,   120,   139,   219,   280,    43,    44,    46,
     4123      49,    50,    51,    52,    53,    54,    55,    56,    60,    64,
     4124      65,    75,    77,    78,    79,   132,   145,   177,   178,   179,
     4125     180,   181,   182,   183,   185,   186,   198,   200,   201,   206,
     4126     220,   278,   314,    31,   140,   136,   139,   139,   317,   115,
     4127     140,   181,   119,   233,   257,   114,   135,   157,   258,   259,
     4128     261,   324,   325,   337,   355,   363,   364,   365,   366,   121,
     4129     137,   280,   255,   115,   121,   117,   117,   140,   235,   121,
     4130     379,   296,   265,   378,   115,   292,   223,   225,   233,   304,
     4131     305,   306,   307,   298,   115,   115,   135,   171,   114,   115,
     4132     135,   121,   144,   285,   121,   140,   176,    82,    85,    87,
    40304133     144,   152,   153,   154,   151,   140,   152,   170,   140,   114,
    4031      356,   357,   140,   139,   140,   140,   140,   172,   115,   140,
    4032      114,   356,   357,   114,   362,   114,   362,   357,   234,     7,
    4033      122,   140,   172,   271,   271,   270,   274,   274,   275,   115,
    4034      121,   121,   115,   101,   127,   140,   140,   152,   285,   172,
    4035      121,   137,   220,   224,   235,   239,   114,   114,   179,   114,
    4036      114,   137,   279,   137,   279,   122,   279,   178,   114,   181,
    4037      173,   173,   149,   137,   140,   139,   140,   135,   219,   115,
    4038      172,   271,   271,   319,   115,   120,   259,   120,   139,   115,
    4039      139,   140,   316,   120,   139,   140,   140,   115,   119,   208,
    4040      117,   171,   137,   208,   210,   115,   114,   356,   357,   379,
    4041      173,   117,   140,   155,   116,   153,   155,   155,   121,   140,
    4042       90,   118,   117,   140,   115,   139,   115,   117,   117,   117,
    4043      140,   115,   139,   139,   139,   172,   172,   140,   117,   140,
    4044      140,   140,   140,   139,   139,   171,   171,   117,   117,   140,
    4045      281,   235,   177,   177,    50,   177,   139,   137,   137,   177,
    4046      137,   137,   177,    61,    62,    63,   202,   203,   204,   137,
    4047       66,   137,   119,   183,   120,   319,   137,   140,   140,   101,
    4048      276,   277,   115,   306,   121,   137,   121,   137,   120,   304,
    4049      135,   146,   115,   115,   135,   139,   120,   117,    86,   139,
    4050      153,   117,   116,   153,   116,   153,   117,   271,   117,   271,
    4051      271,   271,   140,   140,   117,   117,   115,   115,   117,   121,
    4052      101,   270,   101,   140,   117,   115,   115,   114,   115,   178,
    4053      199,   220,   137,   115,   114,   114,   181,   204,    61,    62,
    4054      172,   150,   179,   115,   115,   119,   139,   139,   305,   146,
    4055      211,   114,   137,   211,   271,   152,   139,   139,   140,   140,
    4056      140,   140,   117,   117,   139,   140,   117,   179,    47,    48,
    4057      119,   189,   190,   191,   177,   179,   140,   115,   178,   119,
    4058      191,   101,   139,   101,   139,   114,   114,   137,   120,   139,
    4059      279,   316,   120,   121,   135,   171,   115,   140,   140,   152,
    4060      152,   115,   115,   115,   115,   274,    45,   171,   187,   188,
    4061      317,   135,   139,   179,   189,   115,   137,   179,   137,   139,
    4062      115,   139,   115,   139,   101,   139,   101,   139,   137,   305,
    4063      146,   144,   212,   115,   137,   115,   117,   140,   140,   179,
    4064      101,   121,   135,   140,   213,   214,   220,   137,   178,   178,
    4065      213,   181,   205,   233,   373,   181,   205,   115,   139,   115,
    4066      139,   120,   115,   121,   117,   117,   171,   187,   190,   192,
    4067      193,   139,   137,   190,   194,   195,   140,   114,   157,   316,
    4068      364,   144,   140,   181,   205,   181,   205,   114,   137,   144,
    4069      179,   184,   120,   190,   220,   178,    59,   184,   197,   120,
    4070      190,   115,   235,   115,   140,   140,   299,   179,   184,   137,
    4071      196,   197,   184,   197,   181,   181,   115,   115,   115,   196,
    4072      140,   140,   181,   181,   140,   140
     4134     318,   355,   356,   140,   140,   139,   140,   140,   140,   172,
     4135     115,   140,   114,   318,   355,   356,   114,   318,   361,   114,
     4136     318,   361,   356,   234,     7,   122,   140,   172,   270,   270,
     4137     269,   273,   273,   274,   115,   121,   121,   115,   101,   127,
     4138     140,   140,   152,   284,   172,   121,   137,   220,   314,   114,
     4139     114,   179,   114,   114,   137,   278,   137,   278,   122,   278,
     4140     178,   114,   181,   173,   173,   149,   137,   140,   139,   140,
     4141     135,   219,   115,   172,   270,   270,   283,   318,   115,   255,
     4142     258,   137,   325,   364,   365,   366,   171,   235,   363,   121,
     4143     137,   260,   261,   260,   318,   318,   280,   120,   139,   115,
     4144     139,   120,   140,   315,   120,   139,   140,   140,   115,   119,
     4145     208,   117,   171,   137,   208,   210,   115,   378,   173,   117,
     4146     140,   155,   116,   153,   155,   155,   121,   140,    90,   118,
     4147     117,   140,   115,   139,   115,   115,   117,   117,   117,   140,
     4148     115,   139,   139,   139,   172,   172,   140,   117,   140,   140,
     4149     140,   140,   139,   139,   171,   171,   117,   117,   140,   280,
     4150     177,   177,    50,   177,   139,   137,   137,   177,   137,   137,
     4151     177,    61,    62,    63,   202,   203,   204,   137,    66,   137,
     4152     119,   183,   120,   318,   137,   140,   140,   120,   137,   115,
     4153     115,   115,   363,   318,   101,   275,   276,   115,   305,   121,
     4154     137,   121,   137,   120,   303,   135,   146,   115,   115,   135,
     4155     120,   117,    86,   139,   153,   117,   116,   153,   116,   153,
     4156     117,   270,   117,   270,   270,   270,   140,   140,   117,   117,
     4157     115,   115,   117,   121,   101,   269,   101,   140,   117,   115,
     4158     115,   114,   115,   178,   199,   220,   224,   235,   239,   137,
     4159     115,   114,   114,   181,   204,    61,    62,   172,   150,   179,
     4160     115,   115,   114,   318,   355,   356,   259,   119,   139,   139,
     4161     304,   146,   211,   114,   137,   211,   152,   139,   139,   140,
     4162     140,   140,   140,   117,   117,   139,   140,   117,   179,    47,
     4163      48,   119,   189,   190,   191,   177,   179,   140,   115,   178,
     4164     235,   119,   191,   101,   139,   101,   139,   114,   114,   137,
     4165     120,   139,   139,   278,   315,   120,   121,   135,   171,   115,
     4166     140,   152,   152,   115,   115,   115,   115,   273,    45,   171,
     4167     187,   188,   316,   135,   139,   179,   189,   115,   137,   179,
     4168     137,   139,   115,   139,   115,   139,   101,   139,   101,   139,
     4169     137,   270,   304,   146,   144,   212,   115,   137,   117,   140,
     4170     140,   179,   101,   121,   135,   140,   213,   214,   220,   137,
     4171     178,   178,   213,   181,   205,   233,   372,   181,   205,   115,
     4172     139,   115,   139,   140,   120,   115,   121,   117,   117,   171,
     4173     187,   190,   192,   193,   139,   137,   190,   194,   195,   140,
     4174     114,   157,   315,   363,   144,   140,   181,   205,   181,   205,
     4175     115,   114,   137,   144,   179,   184,   120,   190,   220,   178,
     4176      59,   184,   197,   120,   190,   115,   235,   115,   140,   140,
     4177     298,   179,   184,   137,   196,   197,   184,   197,   181,   181,
     4178     115,   115,   115,   196,   140,   140,   181,   181,   140,   140
    40734179};
    40744180
     
    49075013
    49085014/* Line 1806 of yacc.c  */
    4909 #line 305 "parser.yy"
     5015#line 326 "parser.yy"
    49105016    { typedefTable.enterScope(); }
    49115017    break;
     
    49145020
    49155021/* Line 1806 of yacc.c  */
    4916 #line 309 "parser.yy"
     5022#line 330 "parser.yy"
    49175023    { typedefTable.leaveScope(); }
    49185024    break;
     
    49215027
    49225028/* Line 1806 of yacc.c  */
    4923 #line 316 "parser.yy"
     5029#line 337 "parser.yy"
    49245030    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    49255031    break;
     
    49285034
    49295035/* Line 1806 of yacc.c  */
    4930 #line 317 "parser.yy"
     5036#line 338 "parser.yy"
    49315037    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    49325038    break;
     
    49355041
    49365042/* Line 1806 of yacc.c  */
    4937 #line 318 "parser.yy"
     5043#line 339 "parser.yy"
    49385044    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    49395045    break;
     
    49425048
    49435049/* Line 1806 of yacc.c  */
    4944 #line 319 "parser.yy"
     5050#line 340 "parser.yy"
    49455051    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    49465052    break;
     
    49495055
    49505056/* Line 1806 of yacc.c  */
    4951 #line 320 "parser.yy"
     5057#line 341 "parser.yy"
    49525058    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    49535059    break;
     
    49565062
    49575063/* Line 1806 of yacc.c  */
    4958 #line 345 "parser.yy"
     5064#line 366 "parser.yy"
    49595065    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    49605066    break;
     
    49635069
    49645070/* Line 1806 of yacc.c  */
    4965 #line 349 "parser.yy"
     5071#line 370 "parser.yy"
    49665072    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    49675073    break;
     
    49705076
    49715077/* Line 1806 of yacc.c  */
    4972 #line 351 "parser.yy"
     5078#line 372 "parser.yy"
    49735079    {
    49745080                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    49815087
    49825088/* Line 1806 of yacc.c  */
    4983 #line 362 "parser.yy"
     5089#line 383 "parser.yy"
    49845090    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    49855091    break;
     
    49885094
    49895095/* Line 1806 of yacc.c  */
    4990 #line 364 "parser.yy"
     5096#line 385 "parser.yy"
    49915097    { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[(1) - (1)].tok) ) ); }
    49925098    break;
     
    49955101
    49965102/* Line 1806 of yacc.c  */
    4997 #line 367 "parser.yy"
     5103#line 388 "parser.yy"
    49985104    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    49995105    break;
     
    50025108
    50035109/* Line 1806 of yacc.c  */
    5004 #line 369 "parser.yy"
     5110#line 390 "parser.yy"
    50055111    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50065112    break;
     
    50095115
    50105116/* Line 1806 of yacc.c  */
    5011 #line 379 "parser.yy"
     5117#line 400 "parser.yy"
    50125118    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    50135119    break;
     
    50165122
    50175123/* Line 1806 of yacc.c  */
    5018 #line 381 "parser.yy"
     5124#line 402 "parser.yy"
    50195125    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50205126    break;
     
    50235129
    50245130/* Line 1806 of yacc.c  */
    5025 #line 383 "parser.yy"
     5131#line 404 "parser.yy"
    50265132    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50275133    break;
     
    50305136
    50315137/* Line 1806 of yacc.c  */
    5032 #line 385 "parser.yy"
     5138#line 406 "parser.yy"
    50335139    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50345140    break;
     
    50375143
    50385144/* Line 1806 of yacc.c  */
    5039 #line 387 "parser.yy"
     5145#line 408 "parser.yy"
    50405146    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
    50415147    break;
     
    50445150
    50455151/* Line 1806 of yacc.c  */
    5046 #line 389 "parser.yy"
     5152#line 410 "parser.yy"
    50475153    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50485154    break;
     
    50515157
    50525158/* Line 1806 of yacc.c  */
    5053 #line 391 "parser.yy"
     5159#line 412 "parser.yy"
    50545160    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50555161    break;
     
    50585164
    50595165/* Line 1806 of yacc.c  */
    5060 #line 393 "parser.yy"
     5166#line 414 "parser.yy"
    50615167    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    50625168    break;
     
    50655171
    50665172/* Line 1806 of yacc.c  */
    5067 #line 395 "parser.yy"
     5173#line 416 "parser.yy"
    50685174    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    50695175    break;
     
    50725178
    50735179/* Line 1806 of yacc.c  */
    5074 #line 397 "parser.yy"
     5180#line 418 "parser.yy"
    50755181    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    50765182    break;
     
    50795185
    50805186/* Line 1806 of yacc.c  */
    5081 #line 399 "parser.yy"
     5187#line 420 "parser.yy"
    50825188    {
    50835189                        Token fn;
     
    50905196
    50915197/* Line 1806 of yacc.c  */
    5092 #line 409 "parser.yy"
     5198#line 430 "parser.yy"
    50935199    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    50945200    break;
     
    50975203
    50985204/* Line 1806 of yacc.c  */
    5099 #line 414 "parser.yy"
     5205#line 435 "parser.yy"
    51005206    { (yyval.en) = nullptr; }
    51015207    break;
     
    51045210
    51055211/* Line 1806 of yacc.c  */
    5106 #line 420 "parser.yy"
     5212#line 441 "parser.yy"
    51075213    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    51085214    break;
     
    51115217
    51125218/* Line 1806 of yacc.c  */
    5113 #line 426 "parser.yy"
     5219#line 447 "parser.yy"
    51145220    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
    51155221    break;
     
    51185224
    51195225/* Line 1806 of yacc.c  */
    5120 #line 428 "parser.yy"
     5226#line 449 "parser.yy"
    51215227    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
    51225228    break;
     
    51255231
    51265232/* Line 1806 of yacc.c  */
    5127 #line 430 "parser.yy"
     5233#line 451 "parser.yy"
    51285234    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    51295235    break;
     
    51325238
    51335239/* Line 1806 of yacc.c  */
    5134 #line 432 "parser.yy"
     5240#line 453 "parser.yy"
    51355241    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    51365242    break;
     
    51395245
    51405246/* Line 1806 of yacc.c  */
    5141 #line 434 "parser.yy"
     5247#line 455 "parser.yy"
    51425248    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    51435249    break;
     
    51465252
    51475253/* Line 1806 of yacc.c  */
    5148 #line 436 "parser.yy"
     5254#line 457 "parser.yy"
    51495255    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    51505256    break;
     
    51535259
    51545260/* Line 1806 of yacc.c  */
    5155 #line 441 "parser.yy"
     5261#line 462 "parser.yy"
    51565262    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    51575263    break;
     
    51605266
    51615267/* Line 1806 of yacc.c  */
    5162 #line 443 "parser.yy"
     5268#line 464 "parser.yy"
    51635269    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    51645270    break;
     
    51675273
    51685274/* Line 1806 of yacc.c  */
    5169 #line 445 "parser.yy"
     5275#line 466 "parser.yy"
    51705276    {
    51715277                        if( (*(yyvsp[(1) - (2)].tok)) == "0" || (*(yyvsp[(1) - (2)].tok)) == "1" ) {
     
    51805286
    51815287/* Line 1806 of yacc.c  */
    5182 #line 456 "parser.yy"
     5288#line 477 "parser.yy"
    51835289    { (yyval.en) = nullptr; }
    51845290    break;
     
    51875293
    51885294/* Line 1806 of yacc.c  */
    5189 #line 458 "parser.yy"
     5295#line 479 "parser.yy"
    51905296    {
    51915297                        Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
     
    51975303
    51985304/* Line 1806 of yacc.c  */
    5199 #line 469 "parser.yy"
     5305#line 490 "parser.yy"
    52005306    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    52015307    break;
     
    52045310
    52055311/* Line 1806 of yacc.c  */
    5206 #line 471 "parser.yy"
     5312#line 492 "parser.yy"
    52075313    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    52085314    break;
     
    52115317
    52125318/* Line 1806 of yacc.c  */
    5213 #line 473 "parser.yy"
     5319#line 494 "parser.yy"
    52145320    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    52155321    break;
     
    52185324
    52195325/* Line 1806 of yacc.c  */
    5220 #line 478 "parser.yy"
     5326#line 499 "parser.yy"
    52215327    {
    52225328                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52365342
    52375343/* Line 1806 of yacc.c  */
    5238 #line 491 "parser.yy"
     5344#line 512 "parser.yy"
    52395345    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    52405346    break;
     
    52435349
    52445350/* Line 1806 of yacc.c  */
    5245 #line 493 "parser.yy"
     5351#line 514 "parser.yy"
    52465352    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    52475353    break;
     
    52505356
    52515357/* Line 1806 of yacc.c  */
    5252 #line 495 "parser.yy"
     5358#line 516 "parser.yy"
    52535359    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    52545360    break;
     
    52575363
    52585364/* Line 1806 of yacc.c  */
    5259 #line 497 "parser.yy"
     5365#line 518 "parser.yy"
    52605366    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52615367    break;
     
    52645370
    52655371/* Line 1806 of yacc.c  */
    5266 #line 499 "parser.yy"
     5372#line 520 "parser.yy"
    52675373    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52685374    break;
     
    52715377
    52725378/* Line 1806 of yacc.c  */
    5273 #line 501 "parser.yy"
     5379#line 522 "parser.yy"
    52745380    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52755381    break;
     
    52785384
    52795385/* Line 1806 of yacc.c  */
    5280 #line 503 "parser.yy"
     5386#line 524 "parser.yy"
    52815387    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52825388    break;
     
    52855391
    52865392/* Line 1806 of yacc.c  */
    5287 #line 505 "parser.yy"
     5393#line 526 "parser.yy"
    52885394    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52895395    break;
     
    52925398
    52935399/* Line 1806 of yacc.c  */
    5294 #line 507 "parser.yy"
     5400#line 528 "parser.yy"
    52955401    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52965402    break;
     
    52995405
    53005406/* Line 1806 of yacc.c  */
    5301 #line 509 "parser.yy"
     5407#line 530 "parser.yy"
    53025408    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    53035409    break;
     
    53065412
    53075413/* Line 1806 of yacc.c  */
    5308 #line 511 "parser.yy"
     5414#line 532 "parser.yy"
    53095415    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    53105416    break;
     
    53135419
    53145420/* Line 1806 of yacc.c  */
    5315 #line 517 "parser.yy"
     5421#line 538 "parser.yy"
    53165422    { (yyval.op) = OperKinds::PointTo; }
    53175423    break;
     
    53205426
    53215427/* Line 1806 of yacc.c  */
    5322 #line 518 "parser.yy"
     5428#line 539 "parser.yy"
    53235429    { (yyval.op) = OperKinds::AddressOf; }
    53245430    break;
     
    53275433
    53285434/* Line 1806 of yacc.c  */
    5329 #line 524 "parser.yy"
     5435#line 545 "parser.yy"
    53305436    { (yyval.op) = OperKinds::UnPlus; }
    53315437    break;
     
    53345440
    53355441/* Line 1806 of yacc.c  */
    5336 #line 525 "parser.yy"
     5442#line 546 "parser.yy"
    53375443    { (yyval.op) = OperKinds::UnMinus; }
    53385444    break;
     
    53415447
    53425448/* Line 1806 of yacc.c  */
    5343 #line 526 "parser.yy"
     5449#line 547 "parser.yy"
    53445450    { (yyval.op) = OperKinds::Neg; }
    53455451    break;
     
    53485454
    53495455/* Line 1806 of yacc.c  */
    5350 #line 527 "parser.yy"
     5456#line 548 "parser.yy"
    53515457    { (yyval.op) = OperKinds::BitNeg; }
    53525458    break;
     
    53555461
    53565462/* Line 1806 of yacc.c  */
    5357 #line 533 "parser.yy"
     5463#line 554 "parser.yy"
    53585464    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53595465    break;
     
    53625468
    53635469/* Line 1806 of yacc.c  */
    5364 #line 541 "parser.yy"
     5470#line 562 "parser.yy"
    53655471    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53665472    break;
     
    53695475
    53705476/* Line 1806 of yacc.c  */
    5371 #line 543 "parser.yy"
     5477#line 564 "parser.yy"
    53725478    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53735479    break;
     
    53765482
    53775483/* Line 1806 of yacc.c  */
    5378 #line 545 "parser.yy"
     5484#line 566 "parser.yy"
    53795485    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53805486    break;
     
    53835489
    53845490/* Line 1806 of yacc.c  */
    5385 #line 551 "parser.yy"
     5491#line 572 "parser.yy"
    53865492    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53875493    break;
     
    53905496
    53915497/* Line 1806 of yacc.c  */
    5392 #line 553 "parser.yy"
     5498#line 574 "parser.yy"
    53935499    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53945500    break;
     
    53975503
    53985504/* Line 1806 of yacc.c  */
    5399 #line 559 "parser.yy"
     5505#line 580 "parser.yy"
    54005506    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54015507    break;
     
    54045510
    54055511/* Line 1806 of yacc.c  */
    5406 #line 561 "parser.yy"
     5512#line 582 "parser.yy"
    54075513    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54085514    break;
     
    54115517
    54125518/* Line 1806 of yacc.c  */
    5413 #line 567 "parser.yy"
     5519#line 588 "parser.yy"
    54145520    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54155521    break;
     
    54185524
    54195525/* Line 1806 of yacc.c  */
    5420 #line 569 "parser.yy"
     5526#line 590 "parser.yy"
    54215527    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54225528    break;
     
    54255531
    54265532/* Line 1806 of yacc.c  */
    5427 #line 571 "parser.yy"
     5533#line 592 "parser.yy"
    54285534    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54295535    break;
     
    54325538
    54335539/* Line 1806 of yacc.c  */
    5434 #line 573 "parser.yy"
     5540#line 594 "parser.yy"
    54355541    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54365542    break;
     
    54395545
    54405546/* Line 1806 of yacc.c  */
    5441 #line 579 "parser.yy"
     5547#line 600 "parser.yy"
    54425548    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54435549    break;
     
    54465552
    54475553/* Line 1806 of yacc.c  */
    5448 #line 581 "parser.yy"
     5554#line 602 "parser.yy"
    54495555    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54505556    break;
     
    54535559
    54545560/* Line 1806 of yacc.c  */
    5455 #line 587 "parser.yy"
     5561#line 608 "parser.yy"
    54565562    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54575563    break;
     
    54605566
    54615567/* Line 1806 of yacc.c  */
    5462 #line 593 "parser.yy"
     5568#line 614 "parser.yy"
    54635569    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54645570    break;
     
    54675573
    54685574/* Line 1806 of yacc.c  */
    5469 #line 599 "parser.yy"
     5575#line 620 "parser.yy"
    54705576    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54715577    break;
     
    54745580
    54755581/* Line 1806 of yacc.c  */
    5476 #line 605 "parser.yy"
     5582#line 626 "parser.yy"
    54775583    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54785584    break;
     
    54815587
    54825588/* Line 1806 of yacc.c  */
    5483 #line 611 "parser.yy"
     5589#line 632 "parser.yy"
    54845590    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    54855591    break;
     
    54885594
    54895595/* Line 1806 of yacc.c  */
    5490 #line 617 "parser.yy"
     5596#line 638 "parser.yy"
    54915597    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54925598    break;
     
    54955601
    54965602/* Line 1806 of yacc.c  */
    5497 #line 620 "parser.yy"
     5603#line 641 "parser.yy"
    54985604    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54995605    break;
     
    55025608
    55035609/* Line 1806 of yacc.c  */
    5504 #line 633 "parser.yy"
     5610#line 654 "parser.yy"
    55055611    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    55065612    break;
     
    55095615
    55105616/* Line 1806 of yacc.c  */
    5511 #line 640 "parser.yy"
     5617#line 661 "parser.yy"
    55125618    { (yyval.en) = nullptr; }
    55135619    break;
     
    55165622
    55175623/* Line 1806 of yacc.c  */
    5518 #line 645 "parser.yy"
     5624#line 666 "parser.yy"
    55195625    { (yyval.op) = OperKinds::Assign; }
    55205626    break;
     
    55235629
    55245630/* Line 1806 of yacc.c  */
    5525 #line 646 "parser.yy"
     5631#line 667 "parser.yy"
    55265632    { (yyval.op) = OperKinds::AtAssn; }
    55275633    break;
     
    55305636
    55315637/* Line 1806 of yacc.c  */
    5532 #line 647 "parser.yy"
     5638#line 668 "parser.yy"
    55335639    { (yyval.op) = OperKinds::MulAssn; }
    55345640    break;
     
    55375643
    55385644/* Line 1806 of yacc.c  */
    5539 #line 648 "parser.yy"
     5645#line 669 "parser.yy"
    55405646    { (yyval.op) = OperKinds::DivAssn; }
    55415647    break;
     
    55445650
    55455651/* Line 1806 of yacc.c  */
    5546 #line 649 "parser.yy"
     5652#line 670 "parser.yy"
    55475653    { (yyval.op) = OperKinds::ModAssn; }
    55485654    break;
     
    55515657
    55525658/* Line 1806 of yacc.c  */
    5553 #line 650 "parser.yy"
     5659#line 671 "parser.yy"
    55545660    { (yyval.op) = OperKinds::PlusAssn; }
    55555661    break;
     
    55585664
    55595665/* Line 1806 of yacc.c  */
    5560 #line 651 "parser.yy"
     5666#line 672 "parser.yy"
    55615667    { (yyval.op) = OperKinds::MinusAssn; }
    55625668    break;
     
    55655671
    55665672/* Line 1806 of yacc.c  */
    5567 #line 652 "parser.yy"
     5673#line 673 "parser.yy"
    55685674    { (yyval.op) = OperKinds::LSAssn; }
    55695675    break;
     
    55725678
    55735679/* Line 1806 of yacc.c  */
    5574 #line 653 "parser.yy"
     5680#line 674 "parser.yy"
    55755681    { (yyval.op) = OperKinds::RSAssn; }
    55765682    break;
     
    55795685
    55805686/* Line 1806 of yacc.c  */
    5581 #line 654 "parser.yy"
     5687#line 675 "parser.yy"
    55825688    { (yyval.op) = OperKinds::AndAssn; }
    55835689    break;
     
    55865692
    55875693/* Line 1806 of yacc.c  */
    5588 #line 655 "parser.yy"
     5694#line 676 "parser.yy"
    55895695    { (yyval.op) = OperKinds::ERAssn; }
    55905696    break;
     
    55935699
    55945700/* Line 1806 of yacc.c  */
    5595 #line 656 "parser.yy"
     5701#line 677 "parser.yy"
    55965702    { (yyval.op) = OperKinds::OrAssn; }
    55975703    break;
     
    56005706
    56015707/* Line 1806 of yacc.c  */
    5602 #line 667 "parser.yy"
     5708#line 688 "parser.yy"
    56035709    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    56045710    break;
     
    56075713
    56085714/* Line 1806 of yacc.c  */
    5609 #line 669 "parser.yy"
     5715#line 690 "parser.yy"
    56105716    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56115717    break;
     
    56145720
    56155721/* Line 1806 of yacc.c  */
    5616 #line 675 "parser.yy"
     5722#line 696 "parser.yy"
    56175723    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    56185724    break;
     
    56215727
    56225728/* Line 1806 of yacc.c  */
    5623 #line 681 "parser.yy"
     5729#line 702 "parser.yy"
    56245730    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56255731    break;
     
    56285734
    56295735/* Line 1806 of yacc.c  */
    5630 #line 686 "parser.yy"
     5736#line 707 "parser.yy"
    56315737    { (yyval.en) = nullptr; }
    56325738    break;
     
    56355741
    56365742/* Line 1806 of yacc.c  */
    5637 #line 695 "parser.yy"
     5743#line 716 "parser.yy"
    56385744    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56395745    break;
     
    56425748
    56435749/* Line 1806 of yacc.c  */
    5644 #line 702 "parser.yy"
     5750#line 723 "parser.yy"
    56455751    {
    56465752                        Token fn;
     
    56535759
    56545760/* Line 1806 of yacc.c  */
    5655 #line 712 "parser.yy"
     5761#line 733 "parser.yy"
    56565762    {
    56575763                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) );
     
    56625768
    56635769/* Line 1806 of yacc.c  */
    5664 #line 719 "parser.yy"
     5770#line 740 "parser.yy"
    56655771    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    56665772    break;
     
    56695775
    56705776/* Line 1806 of yacc.c  */
    5671 #line 726 "parser.yy"
     5777#line 748 "parser.yy"
    56725778    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    56735779    break;
     
    56765782
    56775783/* Line 1806 of yacc.c  */
    5678 #line 732 "parser.yy"
     5784#line 754 "parser.yy"
    56795785    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56805786    break;
     
    56835789
    56845790/* Line 1806 of yacc.c  */
    5685 #line 737 "parser.yy"
     5791#line 759 "parser.yy"
    56865792    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    56875793    break;
     
    56905796
    56915797/* Line 1806 of yacc.c  */
    5692 #line 739 "parser.yy"
    5693     {   // mark all fields in list
    5694                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    5695                                 iter->set_extension( true );
     5798#line 761 "parser.yy"
     5799    {
     5800                        distExt( (yyvsp[(2) - (2)].decl) );
    56965801                        (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
    56975802                }
     
    57015806
    57025807/* Line 1806 of yacc.c  */
    5703 #line 745 "parser.yy"
     5808#line 766 "parser.yy"
    57045809    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57055810    break;
    57065811
    5707   case 155:
    5708 
    5709 /* Line 1806 of yacc.c  */
    5710 #line 752 "parser.yy"
     5812  case 153:
     5813
     5814/* Line 1806 of yacc.c  */
     5815#line 768 "parser.yy"
     5816    {
     5817                        distExt( (yyvsp[(2) - (2)].decl) );
     5818                        (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
     5819                }
     5820    break;
     5821
     5822  case 156:
     5823
     5824/* Line 1806 of yacc.c  */
     5825#line 778 "parser.yy"
    57115826    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57125827    break;
    57135828
    5714   case 156:
    5715 
    5716 /* Line 1806 of yacc.c  */
    5717 #line 757 "parser.yy"
     5829  case 157:
     5830
     5831/* Line 1806 of yacc.c  */
     5832#line 783 "parser.yy"
    57185833    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57195834    break;
    57205835
    5721   case 157:
    5722 
    5723 /* Line 1806 of yacc.c  */
    5724 #line 763 "parser.yy"
     5836  case 158:
     5837
     5838/* Line 1806 of yacc.c  */
     5839#line 789 "parser.yy"
    57255840    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    57265841    break;
    57275842
    5728   case 158:
    5729 
    5730 /* Line 1806 of yacc.c  */
    5731 #line 765 "parser.yy"
     5843  case 159:
     5844
     5845/* Line 1806 of yacc.c  */
     5846#line 791 "parser.yy"
    57325847    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    57335848    break;
    57345849
    5735   case 159:
    5736 
    5737 /* Line 1806 of yacc.c  */
    5738 #line 767 "parser.yy"
     5850  case 160:
     5851
     5852/* Line 1806 of yacc.c  */
     5853#line 793 "parser.yy"
    57395854    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57405855    break;
    57415856
    5742   case 160:
    5743 
    5744 /* Line 1806 of yacc.c  */
    5745 #line 769 "parser.yy"
     5857  case 161:
     5858
     5859/* Line 1806 of yacc.c  */
     5860#line 795 "parser.yy"
    57465861    {
    57475862                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57555870    break;
    57565871
    5757   case 161:
    5758 
    5759 /* Line 1806 of yacc.c  */
    5760 #line 779 "parser.yy"
     5872  case 162:
     5873
     5874/* Line 1806 of yacc.c  */
     5875#line 805 "parser.yy"
    57615876    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57625877    break;
    57635878
    5764   case 162:
    5765 
    5766 /* Line 1806 of yacc.c  */
    5767 #line 781 "parser.yy"
     5879  case 163:
     5880
     5881/* Line 1806 of yacc.c  */
     5882#line 807 "parser.yy"
    57685883    {
    57695884                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57725887    break;
    57735888
    5774   case 163:
    5775 
    5776 /* Line 1806 of yacc.c  */
    5777 #line 791 "parser.yy"
     5889  case 164:
     5890
     5891/* Line 1806 of yacc.c  */
     5892#line 817 "parser.yy"
    57785893    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57795894    break;
    57805895
    5781   case 164:
    5782 
    5783 /* Line 1806 of yacc.c  */
    5784 #line 793 "parser.yy"
     5896  case 165:
     5897
     5898/* Line 1806 of yacc.c  */
     5899#line 819 "parser.yy"
    57855900    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57865901    break;
    57875902
    5788   case 166:
    5789 
    5790 /* Line 1806 of yacc.c  */
    5791 #line 798 "parser.yy"
     5903  case 167:
     5904
     5905/* Line 1806 of yacc.c  */
     5906#line 824 "parser.yy"
    57925907    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    57935908    break;
    57945909
    5795   case 167:
    5796 
    5797 /* Line 1806 of yacc.c  */
    5798 #line 800 "parser.yy"
     5910  case 168:
     5911
     5912/* Line 1806 of yacc.c  */
     5913#line 826 "parser.yy"
    57995914    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    58005915    break;
    58015916
    5802   case 168:
    5803 
    5804 /* Line 1806 of yacc.c  */
    5805 #line 804 "parser.yy"
     5917  case 169:
     5918
     5919/* Line 1806 of yacc.c  */
     5920#line 830 "parser.yy"
    58065921    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    58075922    break;
    58085923
    5809   case 169:
    5810 
    5811 /* Line 1806 of yacc.c  */
    5812 #line 805 "parser.yy"
     5924  case 170:
     5925
     5926/* Line 1806 of yacc.c  */
     5927#line 831 "parser.yy"
    58135928    { (yyval.sn) = new StatementNode( build_default() ); }
    58145929    break;
    58155930
    5816   case 171:
    5817 
    5818 /* Line 1806 of yacc.c  */
    5819 #line 811 "parser.yy"
     5931  case 172:
     5932
     5933/* Line 1806 of yacc.c  */
     5934#line 837 "parser.yy"
    58205935    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    58215936    break;
    58225937
    5823   case 172:
    5824 
    5825 /* Line 1806 of yacc.c  */
    5826 #line 815 "parser.yy"
     5938  case 173:
     5939
     5940/* Line 1806 of yacc.c  */
     5941#line 841 "parser.yy"
    58275942    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58285943    break;
    58295944
    5830   case 173:
    5831 
    5832 /* Line 1806 of yacc.c  */
    5833 #line 820 "parser.yy"
     5945  case 174:
     5946
     5947/* Line 1806 of yacc.c  */
     5948#line 846 "parser.yy"
    58345949    { (yyval.sn) = nullptr; }
    58355950    break;
    58365951
    5837   case 175:
    5838 
    5839 /* Line 1806 of yacc.c  */
    5840 #line 826 "parser.yy"
     5952  case 176:
     5953
     5954/* Line 1806 of yacc.c  */
     5955#line 852 "parser.yy"
    58415956    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58425957    break;
    58435958
    5844   case 176:
    5845 
    5846 /* Line 1806 of yacc.c  */
    5847 #line 828 "parser.yy"
     5959  case 177:
     5960
     5961/* Line 1806 of yacc.c  */
     5962#line 854 "parser.yy"
    58485963    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    58495964    break;
    58505965
    5851   case 177:
    5852 
    5853 /* Line 1806 of yacc.c  */
    5854 #line 833 "parser.yy"
     5966  case 178:
     5967
     5968/* Line 1806 of yacc.c  */
     5969#line 859 "parser.yy"
    58555970    { (yyval.sn) = nullptr; }
    58565971    break;
    58575972
    5858   case 179:
    5859 
    5860 /* Line 1806 of yacc.c  */
    5861 #line 839 "parser.yy"
     5973  case 180:
     5974
     5975/* Line 1806 of yacc.c  */
     5976#line 865 "parser.yy"
    58625977    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58635978    break;
    58645979
    5865   case 180:
    5866 
    5867 /* Line 1806 of yacc.c  */
    5868 #line 841 "parser.yy"
     5980  case 181:
     5981
     5982/* Line 1806 of yacc.c  */
     5983#line 867 "parser.yy"
    58695984    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58705985    break;
    58715986
    5872   case 181:
    5873 
    5874 /* Line 1806 of yacc.c  */
    5875 #line 843 "parser.yy"
     5987  case 182:
     5988
     5989/* Line 1806 of yacc.c  */
     5990#line 869 "parser.yy"
    58765991    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58775992    break;
    58785993
    5879   case 182:
    5880 
    5881 /* Line 1806 of yacc.c  */
    5882 #line 845 "parser.yy"
     5994  case 183:
     5995
     5996/* Line 1806 of yacc.c  */
     5997#line 871 "parser.yy"
    58835998    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    58845999    break;
    58856000
    5886   case 183:
    5887 
    5888 /* Line 1806 of yacc.c  */
    5889 #line 850 "parser.yy"
     6001  case 184:
     6002
     6003/* Line 1806 of yacc.c  */
     6004#line 876 "parser.yy"
    58906005    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    58916006    break;
    58926007
    5893   case 185:
    5894 
    5895 /* Line 1806 of yacc.c  */
    5896 #line 856 "parser.yy"
     6008  case 186:
     6009
     6010/* Line 1806 of yacc.c  */
     6011#line 882 "parser.yy"
    58976012    { (yyval.sn) = nullptr; }
    58986013    break;
    58996014
    5900   case 186:
    5901 
    5902 /* Line 1806 of yacc.c  */
    5903 #line 858 "parser.yy"
     6015  case 187:
     6016
     6017/* Line 1806 of yacc.c  */
     6018#line 884 "parser.yy"
    59046019    { (yyval.sn) = nullptr; }
    59056020    break;
    59066021
    5907   case 187:
    5908 
    5909 /* Line 1806 of yacc.c  */
    5910 #line 863 "parser.yy"
     6022  case 188:
     6023
     6024/* Line 1806 of yacc.c  */
     6025#line 889 "parser.yy"
    59116026    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59126027    break;
    59136028
    5914   case 188:
    5915 
    5916 /* Line 1806 of yacc.c  */
    5917 #line 865 "parser.yy"
     6029  case 189:
     6030
     6031/* Line 1806 of yacc.c  */
     6032#line 891 "parser.yy"
    59186033    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    59196034    break;
    59206035
    5921   case 189:
    5922 
    5923 /* Line 1806 of yacc.c  */
    5924 #line 867 "parser.yy"
     6036  case 190:
     6037
     6038/* Line 1806 of yacc.c  */
     6039#line 893 "parser.yy"
    59256040    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    59266041    break;
    59276042
    5928   case 190:
    5929 
    5930 /* Line 1806 of yacc.c  */
    5931 #line 872 "parser.yy"
     6043  case 191:
     6044
     6045/* Line 1806 of yacc.c  */
     6046#line 898 "parser.yy"
    59326047    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59336048    break;
    59346049
    5935   case 191:
    5936 
    5937 /* Line 1806 of yacc.c  */
    5938 #line 874 "parser.yy"
     6050  case 192:
     6051
     6052/* Line 1806 of yacc.c  */
     6053#line 900 "parser.yy"
    59396054    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59406055    break;
    59416056
    5942   case 192:
    5943 
    5944 /* Line 1806 of yacc.c  */
    5945 #line 879 "parser.yy"
     6057  case 193:
     6058
     6059/* Line 1806 of yacc.c  */
     6060#line 905 "parser.yy"
    59466061    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    59476062    break;
    59486063
    5949   case 193:
    5950 
    5951 /* Line 1806 of yacc.c  */
    5952 #line 883 "parser.yy"
     6064  case 194:
     6065
     6066/* Line 1806 of yacc.c  */
     6067#line 909 "parser.yy"
    59536068    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59546069    break;
    59556070
    5956   case 194:
    5957 
    5958 /* Line 1806 of yacc.c  */
    5959 #line 886 "parser.yy"
     6071  case 195:
     6072
     6073/* Line 1806 of yacc.c  */
     6074#line 912 "parser.yy"
    59606075    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    59616076    break;
    59626077
    5963   case 195:
    5964 
    5965 /* Line 1806 of yacc.c  */
    5966 #line 890 "parser.yy"
     6078  case 196:
     6079
     6080/* Line 1806 of yacc.c  */
     6081#line 916 "parser.yy"
    59676082    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    59686083    break;
    59696084
    5970   case 196:
    5971 
    5972 /* Line 1806 of yacc.c  */
    5973 #line 893 "parser.yy"
     6085  case 197:
     6086
     6087/* Line 1806 of yacc.c  */
     6088#line 919 "parser.yy"
    59746089    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59756090    break;
    59766091
    5977   case 197:
    5978 
    5979 /* Line 1806 of yacc.c  */
    5980 #line 897 "parser.yy"
     6092  case 198:
     6093
     6094/* Line 1806 of yacc.c  */
     6095#line 923 "parser.yy"
    59816096    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    59826097    break;
    59836098
    5984   case 198:
    5985 
    5986 /* Line 1806 of yacc.c  */
    5987 #line 899 "parser.yy"
     6099  case 199:
     6100
     6101/* Line 1806 of yacc.c  */
     6102#line 925 "parser.yy"
    59886103    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    59896104    break;
    59906105
    5991   case 199:
    5992 
    5993 /* Line 1806 of yacc.c  */
    5994 #line 901 "parser.yy"
     6106  case 200:
     6107
     6108/* Line 1806 of yacc.c  */
     6109#line 927 "parser.yy"
    59956110    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    59966111    break;
    59976112
    5998   case 200:
    5999 
    6000 /* Line 1806 of yacc.c  */
    6001 #line 903 "parser.yy"
     6113  case 201:
     6114
     6115/* Line 1806 of yacc.c  */
     6116#line 929 "parser.yy"
    60026117    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60036118    break;
    60046119
    6005   case 201:
    6006 
    6007 /* Line 1806 of yacc.c  */
    6008 #line 905 "parser.yy"
     6120  case 202:
     6121
     6122/* Line 1806 of yacc.c  */
     6123#line 931 "parser.yy"
    60096124    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60106125    break;
    60116126
    6012   case 202:
    6013 
    6014 /* Line 1806 of yacc.c  */
    6015 #line 910 "parser.yy"
     6127  case 203:
     6128
     6129/* Line 1806 of yacc.c  */
     6130#line 936 "parser.yy"
    60166131    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    60176132    break;
    60186133
    6019   case 203:
    6020 
    6021 /* Line 1806 of yacc.c  */
    6022 #line 912 "parser.yy"
     6134  case 204:
     6135
     6136/* Line 1806 of yacc.c  */
     6137#line 938 "parser.yy"
    60236138    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    60246139    break;
    60256140
    6026   case 204:
    6027 
    6028 /* Line 1806 of yacc.c  */
    6029 #line 914 "parser.yy"
     6141  case 205:
     6142
     6143/* Line 1806 of yacc.c  */
     6144#line 940 "parser.yy"
    60306145    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    60316146    break;
    60326147
    6033   case 206:
    6034 
    6035 /* Line 1806 of yacc.c  */
    6036 #line 921 "parser.yy"
     6148  case 207:
     6149
     6150/* Line 1806 of yacc.c  */
     6151#line 947 "parser.yy"
    60376152    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60386153    break;
    60396154
    6040   case 207:
    6041 
    6042 /* Line 1806 of yacc.c  */
    6043 #line 923 "parser.yy"
     6155  case 208:
     6156
     6157/* Line 1806 of yacc.c  */
     6158#line 949 "parser.yy"
    60446159    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60456160    break;
    60466161
    6047   case 208:
    6048 
    6049 /* Line 1806 of yacc.c  */
    6050 #line 925 "parser.yy"
     6162  case 209:
     6163
     6164/* Line 1806 of yacc.c  */
     6165#line 951 "parser.yy"
    60516166    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60526167    break;
    60536168
    6054   case 209:
    6055 
    6056 /* Line 1806 of yacc.c  */
    6057 #line 927 "parser.yy"
     6169  case 210:
     6170
     6171/* Line 1806 of yacc.c  */
     6172#line 953 "parser.yy"
    60586173    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60596174    break;
    60606175
    6061   case 210:
    6062 
    6063 /* Line 1806 of yacc.c  */
    6064 #line 932 "parser.yy"
     6176  case 211:
     6177
     6178/* Line 1806 of yacc.c  */
     6179#line 958 "parser.yy"
    60656180    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60666181    break;
    60676182
    6068   case 211:
    6069 
    6070 /* Line 1806 of yacc.c  */
    6071 #line 934 "parser.yy"
     6183  case 212:
     6184
     6185/* Line 1806 of yacc.c  */
     6186#line 960 "parser.yy"
    60726187    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60736188    break;
    60746189
    6075   case 212:
    6076 
    6077 /* Line 1806 of yacc.c  */
    6078 #line 936 "parser.yy"
     6190  case 213:
     6191
     6192/* Line 1806 of yacc.c  */
     6193#line 962 "parser.yy"
    60796194    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60806195    break;
    60816196
    6082   case 213:
    6083 
    6084 /* Line 1806 of yacc.c  */
    6085 #line 938 "parser.yy"
     6197  case 214:
     6198
     6199/* Line 1806 of yacc.c  */
     6200#line 964 "parser.yy"
    60866201    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60876202    break;
    60886203
    6089   case 214:
    6090 
    6091 /* Line 1806 of yacc.c  */
    6092 #line 943 "parser.yy"
     6204  case 215:
     6205
     6206/* Line 1806 of yacc.c  */
     6207#line 969 "parser.yy"
    60936208    {
    60946209                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    60966211    break;
    60976212
    6098   case 216:
    6099 
    6100 /* Line 1806 of yacc.c  */
    6101 #line 956 "parser.yy"
     6213  case 217:
     6214
     6215/* Line 1806 of yacc.c  */
     6216#line 982 "parser.yy"
    61026217    {
    61036218                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61066221    break;
    61076222
    6108   case 217:
    6109 
    6110 /* Line 1806 of yacc.c  */
    6111 #line 961 "parser.yy"
     6223  case 218:
     6224
     6225/* Line 1806 of yacc.c  */
     6226#line 987 "parser.yy"
    61126227    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61136228    break;
    61146229
    6115   case 218:
    6116 
    6117 /* Line 1806 of yacc.c  */
    6118 #line 963 "parser.yy"
     6230  case 219:
     6231
     6232/* Line 1806 of yacc.c  */
     6233#line 989 "parser.yy"
    61196234    {
    61206235                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61236238    break;
    61246239
    6125   case 220:
    6126 
    6127 /* Line 1806 of yacc.c  */
    6128 #line 972 "parser.yy"
     6240  case 221:
     6241
     6242/* Line 1806 of yacc.c  */
     6243#line 998 "parser.yy"
    61296244    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    61306245    break;
    61316246
    6132   case 221:
    6133 
    6134 /* Line 1806 of yacc.c  */
    6135 #line 974 "parser.yy"
     6247  case 222:
     6248
     6249/* Line 1806 of yacc.c  */
     6250#line 1000 "parser.yy"
    61366251    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    61376252    break;
    61386253
    6139   case 222:
    6140 
    6141 /* Line 1806 of yacc.c  */
    6142 #line 976 "parser.yy"
     6254  case 223:
     6255
     6256/* Line 1806 of yacc.c  */
     6257#line 1002 "parser.yy"
    61436258    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    61446259    break;
    61456260
    6146   case 223:
    6147 
    6148 /* Line 1806 of yacc.c  */
    6149 #line 978 "parser.yy"
     6261  case 224:
     6262
     6263/* Line 1806 of yacc.c  */
     6264#line 1004 "parser.yy"
    61506265    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    61516266    break;
    61526267
    6153   case 224:
    6154 
    6155 /* Line 1806 of yacc.c  */
    6156 #line 980 "parser.yy"
     6268  case 225:
     6269
     6270/* Line 1806 of yacc.c  */
     6271#line 1006 "parser.yy"
    61576272    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    61586273    break;
    61596274
    6160   case 225:
    6161 
    6162 /* Line 1806 of yacc.c  */
    6163 #line 985 "parser.yy"
     6275  case 226:
     6276
     6277/* Line 1806 of yacc.c  */
     6278#line 1011 "parser.yy"
    61646279    { (yyval.flag) = false; }
    61656280    break;
    61666281
    6167   case 226:
    6168 
    6169 /* Line 1806 of yacc.c  */
    6170 #line 987 "parser.yy"
     6282  case 227:
     6283
     6284/* Line 1806 of yacc.c  */
     6285#line 1013 "parser.yy"
    61716286    { (yyval.flag) = true; }
    61726287    break;
    61736288
    6174   case 227:
    6175 
    6176 /* Line 1806 of yacc.c  */
    6177 #line 992 "parser.yy"
     6289  case 228:
     6290
     6291/* Line 1806 of yacc.c  */
     6292#line 1018 "parser.yy"
    61786293    { (yyval.en) = nullptr; }
    61796294    break;
    61806295
    6181   case 230:
    6182 
    6183 /* Line 1806 of yacc.c  */
    6184 #line 999 "parser.yy"
     6296  case 231:
     6297
     6298/* Line 1806 of yacc.c  */
     6299#line 1025 "parser.yy"
    61856300    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    61866301    break;
    61876302
    6188   case 231:
    6189 
    6190 /* Line 1806 of yacc.c  */
    6191 #line 1004 "parser.yy"
     6303  case 232:
     6304
     6305/* Line 1806 of yacc.c  */
     6306#line 1030 "parser.yy"
    61926307    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    61936308    break;
    61946309
    6195   case 232:
    6196 
    6197 /* Line 1806 of yacc.c  */
    6198 #line 1006 "parser.yy"
     6310  case 233:
     6311
     6312/* Line 1806 of yacc.c  */
     6313#line 1032 "parser.yy"
    61996314    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    62006315    break;
    62016316
    6202   case 233:
    6203 
    6204 /* Line 1806 of yacc.c  */
    6205 #line 1011 "parser.yy"
     6317  case 234:
     6318
     6319/* Line 1806 of yacc.c  */
     6320#line 1037 "parser.yy"
    62066321    { (yyval.en) = nullptr; }
    62076322    break;
    62086323
    6209   case 234:
    6210 
    6211 /* Line 1806 of yacc.c  */
    6212 #line 1013 "parser.yy"
     6324  case 235:
     6325
     6326/* Line 1806 of yacc.c  */
     6327#line 1039 "parser.yy"
    62136328    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62146329    break;
    62156330
    6216   case 235:
    6217 
    6218 /* Line 1806 of yacc.c  */
    6219 #line 1016 "parser.yy"
     6331  case 236:
     6332
     6333/* Line 1806 of yacc.c  */
     6334#line 1042 "parser.yy"
    62206335    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62216336    break;
    62226337
    6223   case 236:
    6224 
    6225 /* Line 1806 of yacc.c  */
    6226 #line 1021 "parser.yy"
     6338  case 237:
     6339
     6340/* Line 1806 of yacc.c  */
     6341#line 1047 "parser.yy"
    62276342    {
    62286343                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    62316346    break;
    62326347
    6233   case 237:
    6234 
    6235 /* Line 1806 of yacc.c  */
    6236 #line 1026 "parser.yy"
     6348  case 238:
     6349
     6350/* Line 1806 of yacc.c  */
     6351#line 1052 "parser.yy"
    62376352    {
    62386353                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    62416356    break;
    62426357
    6243   case 238:
    6244 
    6245 /* Line 1806 of yacc.c  */
    6246 #line 1036 "parser.yy"
     6358  case 239:
     6359
     6360/* Line 1806 of yacc.c  */
     6361#line 1062 "parser.yy"
    62476362    { (yyval.decl) = nullptr; }
    62486363    break;
    62496364
    6250   case 241:
    6251 
    6252 /* Line 1806 of yacc.c  */
    6253 #line 1043 "parser.yy"
     6365  case 242:
     6366
     6367/* Line 1806 of yacc.c  */
     6368#line 1069 "parser.yy"
    62546369    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62556370    break;
    62566371
    6257   case 242:
    6258 
    6259 /* Line 1806 of yacc.c  */
    6260 #line 1048 "parser.yy"
     6372  case 243:
     6373
     6374/* Line 1806 of yacc.c  */
     6375#line 1074 "parser.yy"
    62616376    { (yyval.decl) = nullptr; }
    62626377    break;
    62636378
    6264   case 245:
    6265 
    6266 /* Line 1806 of yacc.c  */
    6267 #line 1055 "parser.yy"
     6379  case 246:
     6380
     6381/* Line 1806 of yacc.c  */
     6382#line 1081 "parser.yy"
    62686383    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62696384    break;
    62706385
    6271   case 250:
    6272 
    6273 /* Line 1806 of yacc.c  */
    6274 #line 1069 "parser.yy"
     6386  case 251:
     6387
     6388/* Line 1806 of yacc.c  */
     6389#line 1095 "parser.yy"
    62756390    {}
    62766391    break;
    62776392
    6278   case 251:
    6279 
    6280 /* Line 1806 of yacc.c  */
    6281 #line 1070 "parser.yy"
     6393  case 252:
     6394
     6395/* Line 1806 of yacc.c  */
     6396#line 1096 "parser.yy"
    62826397    {}
    62836398    break;
    62846399
    6285   case 259:
    6286 
    6287 /* Line 1806 of yacc.c  */
    6288 #line 1099 "parser.yy"
     6400  case 260:
     6401
     6402/* Line 1806 of yacc.c  */
     6403#line 1125 "parser.yy"
    62896404    {
    62906405                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62936408    break;
    62946409
    6295   case 260:
    6296 
    6297 /* Line 1806 of yacc.c  */
    6298 #line 1106 "parser.yy"
     6410  case 261:
     6411
     6412/* Line 1806 of yacc.c  */
     6413#line 1132 "parser.yy"
    62996414    {
    63006415                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63036418    break;
    63046419
    6305   case 261:
    6306 
    6307 /* Line 1806 of yacc.c  */
    6308 #line 1111 "parser.yy"
     6420  case 262:
     6421
     6422/* Line 1806 of yacc.c  */
     6423#line 1137 "parser.yy"
    63096424    {
    63106425                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63136428    break;
    63146429
    6315   case 262:
    6316 
    6317 /* Line 1806 of yacc.c  */
    6318 #line 1121 "parser.yy"
     6430  case 263:
     6431
     6432/* Line 1806 of yacc.c  */
     6433#line 1147 "parser.yy"
    63196434    {
    63206435                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6321                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
     6436                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].decl) );
    63226437                }
    63236438    break;
    63246439
    6325   case 263:
    6326 
    6327 /* Line 1806 of yacc.c  */
    6328 #line 1126 "parser.yy"
     6440  case 264:
     6441
     6442/* Line 1806 of yacc.c  */
     6443#line 1152 "parser.yy"
    63296444    {
    63306445                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6331                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
     6446                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].decl) );
    63326447                }
    63336448    break;
    63346449
    6335   case 264:
    6336 
    6337 /* Line 1806 of yacc.c  */
    6338 #line 1131 "parser.yy"
     6450  case 265:
     6451
     6452/* Line 1806 of yacc.c  */
     6453#line 1157 "parser.yy"
    63396454    {
    63406455                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
    6341                         (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) )->addAsmName( (yyvsp[(4) - (4)].constant) );
     6456                        (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) )->addAsmName( (yyvsp[(4) - (4)].decl) );
    63426457                }
    63436458    break;
    63446459
    6345   case 265:
    6346 
    6347 /* Line 1806 of yacc.c  */
    6348 #line 1139 "parser.yy"
     6460  case 266:
     6461
     6462/* Line 1806 of yacc.c  */
     6463#line 1165 "parser.yy"
    63496464    {
    63506465                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63536468    break;
    63546469
    6355   case 266:
    6356 
    6357 /* Line 1806 of yacc.c  */
    6358 #line 1144 "parser.yy"
     6470  case 267:
     6471
     6472/* Line 1806 of yacc.c  */
     6473#line 1170 "parser.yy"
    63596474    {
    63606475                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63636478    break;
    63646479
    6365   case 267:
    6366 
    6367 /* Line 1806 of yacc.c  */
    6368 #line 1149 "parser.yy"
     6480  case 268:
     6481
     6482/* Line 1806 of yacc.c  */
     6483#line 1175 "parser.yy"
    63696484    {
    63706485                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63736488    break;
    63746489
    6375   case 268:
    6376 
    6377 /* Line 1806 of yacc.c  */
    6378 #line 1154 "parser.yy"
     6490  case 269:
     6491
     6492/* Line 1806 of yacc.c  */
     6493#line 1180 "parser.yy"
    63796494    {
    63806495                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63836498    break;
    63846499
    6385   case 269:
    6386 
    6387 /* Line 1806 of yacc.c  */
    6388 #line 1159 "parser.yy"
     6500  case 270:
     6501
     6502/* Line 1806 of yacc.c  */
     6503#line 1185 "parser.yy"
    63896504    {
    63906505                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63936508    break;
    63946509
    6395   case 270:
    6396 
    6397 /* Line 1806 of yacc.c  */
    6398 #line 1190 "parser.yy"
     6510  case 271:
     6511
     6512/* Line 1806 of yacc.c  */
     6513#line 1216 "parser.yy"
    63996514    {
    64006515                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64026517    break;
    64036518
    6404   case 271:
    6405 
    6406 /* Line 1806 of yacc.c  */
    6407 #line 1194 "parser.yy"
     6519  case 272:
     6520
     6521/* Line 1806 of yacc.c  */
     6522#line 1220 "parser.yy"
    64086523    {
    64096524                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64116526    break;
    64126527
    6413   case 272:
    6414 
    6415 /* Line 1806 of yacc.c  */
    6416 #line 1201 "parser.yy"
     6528  case 273:
     6529
     6530/* Line 1806 of yacc.c  */
     6531#line 1227 "parser.yy"
    64176532    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64186533    break;
    64196534
    6420   case 273:
    6421 
    6422 /* Line 1806 of yacc.c  */
    6423 #line 1205 "parser.yy"
     6535  case 274:
     6536
     6537/* Line 1806 of yacc.c  */
     6538#line 1231 "parser.yy"
    64246539    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64256540    break;
    64266541
    6427   case 274:
    6428 
    6429 /* Line 1806 of yacc.c  */
    6430 #line 1210 "parser.yy"
     6542  case 275:
     6543
     6544/* Line 1806 of yacc.c  */
     6545#line 1236 "parser.yy"
    64316546    {
    64326547                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64356550    break;
    64366551
    6437   case 275:
    6438 
    6439 /* Line 1806 of yacc.c  */
    6440 #line 1215 "parser.yy"
     6552  case 276:
     6553
     6554/* Line 1806 of yacc.c  */
     6555#line 1241 "parser.yy"
    64416556    {
    64426557                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64456560    break;
    64466561
    6447   case 276:
    6448 
    6449 /* Line 1806 of yacc.c  */
    6450 #line 1220 "parser.yy"
     6562  case 277:
     6563
     6564/* Line 1806 of yacc.c  */
     6565#line 1246 "parser.yy"
    64516566    {
    64526567                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64556570    break;
    64566571
    6457   case 277:
    6458 
    6459 /* Line 1806 of yacc.c  */
    6460 #line 1231 "parser.yy"
     6572  case 278:
     6573
     6574/* Line 1806 of yacc.c  */
     6575#line 1257 "parser.yy"
    64616576    {
    64626577                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64656580    break;
    64666581
    6467   case 278:
    6468 
    6469 /* Line 1806 of yacc.c  */
    6470 #line 1236 "parser.yy"
     6582  case 279:
     6583
     6584/* Line 1806 of yacc.c  */
     6585#line 1262 "parser.yy"
    64716586    {
    64726587                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64756590    break;
    64766591
    6477   case 279:
    6478 
    6479 /* Line 1806 of yacc.c  */
    6480 #line 1241 "parser.yy"
     6592  case 280:
     6593
     6594/* Line 1806 of yacc.c  */
     6595#line 1267 "parser.yy"
    64816596    {
    64826597                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64856600    break;
    64866601
    6487   case 280:
    6488 
    6489 /* Line 1806 of yacc.c  */
    6490 #line 1246 "parser.yy"
     6602  case 281:
     6603
     6604/* Line 1806 of yacc.c  */
     6605#line 1272 "parser.yy"
    64916606    {
    64926607                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64956610    break;
    64966611
    6497   case 281:
    6498 
    6499 /* Line 1806 of yacc.c  */
    6500 #line 1251 "parser.yy"
     6612  case 282:
     6613
     6614/* Line 1806 of yacc.c  */
     6615#line 1277 "parser.yy"
    65016616    {
    65026617                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65056620    break;
    65066621
    6507   case 282:
    6508 
    6509 /* Line 1806 of yacc.c  */
    6510 #line 1260 "parser.yy"
     6622  case 283:
     6623
     6624/* Line 1806 of yacc.c  */
     6625#line 1286 "parser.yy"
    65116626    {
    65126627                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
    6513                         (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
     6628                        (yyval.decl) = DeclarationNode::newName( 0 );                   // unimplemented
    65146629                }
    65156630    break;
    65166631
    6517   case 283:
    6518 
    6519 /* Line 1806 of yacc.c  */
    6520 #line 1265 "parser.yy"
     6632  case 284:
     6633
     6634/* Line 1806 of yacc.c  */
     6635#line 1291 "parser.yy"
    65216636    {
    65226637                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
    6523                         (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
     6638                        (yyval.decl) = DeclarationNode::newName( 0 );                   // unimplemented
    65246639                }
    65256640    break;
    65266641
    6527   case 288:
    6528 
    6529 /* Line 1806 of yacc.c  */
    6530 #line 1282 "parser.yy"
     6642  case 285:
     6643
     6644/* Line 1806 of yacc.c  */
     6645#line 1321 "parser.yy"
     6646    {
     6647                        (yyval.decl) = distAttr( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].decl) );
     6648                }
     6649    break;
     6650
     6651  case 289:
     6652
     6653/* Line 1806 of yacc.c  */
     6654#line 1333 "parser.yy"
    65316655    {
    65326656                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6533                         (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addAsmName( (yyvsp[(3) - (4)].constant) )->addInitializer( (yyvsp[(4) - (4)].in) );
     6657                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addAsmName( (yyvsp[(2) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );
    65346658                }
    65356659    break;
    65366660
    6537   case 289:
    6538 
    6539 /* Line 1806 of yacc.c  */
    6540 #line 1287 "parser.yy"
     6661  case 290:
     6662
     6663/* Line 1806 of yacc.c  */
     6664#line 1338 "parser.yy"
    65416665    {
    65426666                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6543                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addAsmName( (yyvsp[(5) - (6)].constant) )->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
     6667                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(4) - (6)].decl)->addQualifiers( (yyvsp[(3) - (6)].decl) )->addAsmName( (yyvsp[(5) - (6)].decl) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
    65446668                }
    65456669    break;
    65466670
    6547   case 298:
    6548 
    6549 /* Line 1806 of yacc.c  */
    6550 #line 1309 "parser.yy"
     6671  case 299:
     6672
     6673/* Line 1806 of yacc.c  */
     6674#line 1360 "parser.yy"
    65516675    { (yyval.decl) = nullptr; }
    65526676    break;
    65536677
    6554   case 301:
    6555 
    6556 /* Line 1806 of yacc.c  */
    6557 #line 1321 "parser.yy"
     6678  case 302:
     6679
     6680/* Line 1806 of yacc.c  */
     6681#line 1372 "parser.yy"
    65586682    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65596683    break;
    65606684
    6561   case 304:
    6562 
    6563 /* Line 1806 of yacc.c  */
    6564 #line 1331 "parser.yy"
     6685  case 305:
     6686
     6687/* Line 1806 of yacc.c  */
     6688#line 1382 "parser.yy"
    65656689    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65666690    break;
    65676691
    6568   case 305:
    6569 
    6570 /* Line 1806 of yacc.c  */
    6571 #line 1333 "parser.yy"
     6692  case 306:
     6693
     6694/* Line 1806 of yacc.c  */
     6695#line 1384 "parser.yy"
    65726696    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65736697    break;
    65746698
    6575   case 306:
    6576 
    6577 /* Line 1806 of yacc.c  */
    6578 #line 1335 "parser.yy"
     6699  case 307:
     6700
     6701/* Line 1806 of yacc.c  */
     6702#line 1386 "parser.yy"
    65796703    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    65806704    break;
    65816705
    6582   case 307:
    6583 
    6584 /* Line 1806 of yacc.c  */
    6585 #line 1337 "parser.yy"
     6706  case 308:
     6707
     6708/* Line 1806 of yacc.c  */
     6709#line 1388 "parser.yy"
    65866710    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    65876711    break;
    65886712
    6589   case 308:
    6590 
    6591 /* Line 1806 of yacc.c  */
    6592 #line 1339 "parser.yy"
     6713  case 309:
     6714
     6715/* Line 1806 of yacc.c  */
     6716#line 1390 "parser.yy"
    65936717    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    65946718    break;
    65956719
    6596   case 309:
    6597 
    6598 /* Line 1806 of yacc.c  */
    6599 #line 1341 "parser.yy"
     6720  case 310:
     6721
     6722/* Line 1806 of yacc.c  */
     6723#line 1392 "parser.yy"
    66006724    {
    66016725                        typedefTable.enterScope();
     
    66036727    break;
    66046728
    6605   case 310:
    6606 
    6607 /* Line 1806 of yacc.c  */
    6608 #line 1345 "parser.yy"
     6729  case 311:
     6730
     6731/* Line 1806 of yacc.c  */
     6732#line 1396 "parser.yy"
    66096733    {
    66106734                        typedefTable.leaveScope();
     
    66136737    break;
    66146738
    6615   case 312:
    6616 
    6617 /* Line 1806 of yacc.c  */
    6618 #line 1354 "parser.yy"
     6739  case 313:
     6740
     6741/* Line 1806 of yacc.c  */
     6742#line 1405 "parser.yy"
    66196743    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66206744    break;
    66216745
    6622   case 313:
    6623 
    6624 /* Line 1806 of yacc.c  */
    6625 #line 1356 "parser.yy"
     6746  case 314:
     6747
     6748/* Line 1806 of yacc.c  */
     6749#line 1407 "parser.yy"
    66266750    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66276751    break;
    66286752
    6629   case 315:
    6630 
    6631 /* Line 1806 of yacc.c  */
    6632 #line 1367 "parser.yy"
     6753  case 316:
     6754
     6755/* Line 1806 of yacc.c  */
     6756#line 1418 "parser.yy"
    66336757    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66346758    break;
    66356759
    6636   case 316:
    6637 
    6638 /* Line 1806 of yacc.c  */
    6639 #line 1372 "parser.yy"
     6760  case 317:
     6761
     6762/* Line 1806 of yacc.c  */
     6763#line 1423 "parser.yy"
    66406764    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66416765    break;
    66426766
    6643   case 317:
    6644 
    6645 /* Line 1806 of yacc.c  */
    6646 #line 1374 "parser.yy"
     6767  case 318:
     6768
     6769/* Line 1806 of yacc.c  */
     6770#line 1425 "parser.yy"
    66476771    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66486772    break;
    66496773
    6650   case 318:
    6651 
    6652 /* Line 1806 of yacc.c  */
    6653 #line 1376 "parser.yy"
     6774  case 319:
     6775
     6776/* Line 1806 of yacc.c  */
     6777#line 1427 "parser.yy"
    66546778    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66556779    break;
    66566780
    6657   case 319:
    6658 
    6659 /* Line 1806 of yacc.c  */
    6660 #line 1378 "parser.yy"
     6781  case 320:
     6782
     6783/* Line 1806 of yacc.c  */
     6784#line 1429 "parser.yy"
    66616785    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66626786    break;
    66636787
    6664   case 320:
    6665 
    6666 /* Line 1806 of yacc.c  */
    6667 #line 1381 "parser.yy"
     6788  case 321:
     6789
     6790/* Line 1806 of yacc.c  */
     6791#line 1432 "parser.yy"
    66686792    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    66696793    break;
    66706794
    6671   case 321:
    6672 
    6673 /* Line 1806 of yacc.c  */
    6674 #line 1383 "parser.yy"
     6795  case 322:
     6796
     6797/* Line 1806 of yacc.c  */
     6798#line 1434 "parser.yy"
    66756799    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66766800    break;
    66776801
    6678   case 322:
    6679 
    6680 /* Line 1806 of yacc.c  */
    6681 #line 1386 "parser.yy"
     6802  case 323:
     6803
     6804/* Line 1806 of yacc.c  */
     6805#line 1437 "parser.yy"
    66826806    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    66836807    break;
    66846808
    6685   case 323:
    6686 
    6687 /* Line 1806 of yacc.c  */
    6688 #line 1388 "parser.yy"
     6809  case 324:
     6810
     6811/* Line 1806 of yacc.c  */
     6812#line 1439 "parser.yy"
    66896813    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    66906814    break;
    66916815
    6692   case 324:
    6693 
    6694 /* Line 1806 of yacc.c  */
    6695 #line 1393 "parser.yy"
     6816  case 325:
     6817
     6818/* Line 1806 of yacc.c  */
     6819#line 1444 "parser.yy"
    66966820    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    66976821    break;
    66986822
    6699   case 325:
    6700 
    6701 /* Line 1806 of yacc.c  */
    6702 #line 1395 "parser.yy"
     6823  case 326:
     6824
     6825/* Line 1806 of yacc.c  */
     6826#line 1446 "parser.yy"
    67036827    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67046828    break;
    67056829
    6706   case 326:
    6707 
    6708 /* Line 1806 of yacc.c  */
    6709 #line 1397 "parser.yy"
     6830  case 327:
     6831
     6832/* Line 1806 of yacc.c  */
     6833#line 1448 "parser.yy"
    67106834    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67116835    break;
    67126836
    6713   case 327:
    6714 
    6715 /* Line 1806 of yacc.c  */
    6716 #line 1399 "parser.yy"
     6837  case 328:
     6838
     6839/* Line 1806 of yacc.c  */
     6840#line 1450 "parser.yy"
    67176841    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67186842    break;
    67196843
    6720   case 328:
    6721 
    6722 /* Line 1806 of yacc.c  */
    6723 #line 1401 "parser.yy"
     6844  case 329:
     6845
     6846/* Line 1806 of yacc.c  */
     6847#line 1452 "parser.yy"
    67246848    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    67256849    break;
    67266850
    6727   case 329:
    6728 
    6729 /* Line 1806 of yacc.c  */
    6730 #line 1403 "parser.yy"
     6851  case 330:
     6852
     6853/* Line 1806 of yacc.c  */
     6854#line 1454 "parser.yy"
    67316855    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    67326856    break;
    67336857
    6734   case 330:
    6735 
    6736 /* Line 1806 of yacc.c  */
    6737 #line 1405 "parser.yy"
     6858  case 331:
     6859
     6860/* Line 1806 of yacc.c  */
     6861#line 1456 "parser.yy"
    67386862    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    67396863    break;
    67406864
    6741   case 331:
    6742 
    6743 /* Line 1806 of yacc.c  */
    6744 #line 1407 "parser.yy"
     6865  case 332:
     6866
     6867/* Line 1806 of yacc.c  */
     6868#line 1458 "parser.yy"
    67456869    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    67466870    break;
    67476871
    6748   case 332:
    6749 
    6750 /* Line 1806 of yacc.c  */
    6751 #line 1409 "parser.yy"
     6872  case 333:
     6873
     6874/* Line 1806 of yacc.c  */
     6875#line 1460 "parser.yy"
    67526876    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67536877    break;
    67546878
    6755   case 333:
    6756 
    6757 /* Line 1806 of yacc.c  */
    6758 #line 1411 "parser.yy"
     6879  case 334:
     6880
     6881/* Line 1806 of yacc.c  */
     6882#line 1462 "parser.yy"
    67596883    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67606884    break;
    67616885
    6762   case 334:
    6763 
    6764 /* Line 1806 of yacc.c  */
    6765 #line 1413 "parser.yy"
     6886  case 335:
     6887
     6888/* Line 1806 of yacc.c  */
     6889#line 1464 "parser.yy"
    67666890    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    67676891    break;
    67686892
    6769   case 335:
    6770 
    6771 /* Line 1806 of yacc.c  */
    6772 #line 1415 "parser.yy"
     6893  case 336:
     6894
     6895/* Line 1806 of yacc.c  */
     6896#line 1466 "parser.yy"
    67736897    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    67746898    break;
    67756899
    6776   case 336:
    6777 
    6778 /* Line 1806 of yacc.c  */
    6779 #line 1417 "parser.yy"
     6900  case 337:
     6901
     6902/* Line 1806 of yacc.c  */
     6903#line 1468 "parser.yy"
    67806904    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    67816905    break;
    67826906
    6783   case 337:
    6784 
    6785 /* Line 1806 of yacc.c  */
    6786 #line 1419 "parser.yy"
     6907  case 338:
     6908
     6909/* Line 1806 of yacc.c  */
     6910#line 1470 "parser.yy"
    67876911    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
    67886912    break;
    67896913
    6790   case 338:
    6791 
    6792 /* Line 1806 of yacc.c  */
    6793 #line 1421 "parser.yy"
     6914  case 339:
     6915
     6916/* Line 1806 of yacc.c  */
     6917#line 1472 "parser.yy"
    67946918    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
    67956919    break;
    67966920
    6797   case 340:
    6798 
    6799 /* Line 1806 of yacc.c  */
    6800 #line 1428 "parser.yy"
     6921  case 341:
     6922
     6923/* Line 1806 of yacc.c  */
     6924#line 1479 "parser.yy"
    68016925    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68026926    break;
    68036927
    6804   case 341:
    6805 
    6806 /* Line 1806 of yacc.c  */
    6807 #line 1430 "parser.yy"
     6928  case 342:
     6929
     6930/* Line 1806 of yacc.c  */
     6931#line 1481 "parser.yy"
    68086932    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68096933    break;
    68106934
    6811   case 342:
    6812 
    6813 /* Line 1806 of yacc.c  */
    6814 #line 1432 "parser.yy"
     6935  case 343:
     6936
     6937/* Line 1806 of yacc.c  */
     6938#line 1483 "parser.yy"
    68156939    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68166940    break;
    68176941
    6818   case 343:
    6819 
    6820 /* Line 1806 of yacc.c  */
    6821 #line 1434 "parser.yy"
     6942  case 344:
     6943
     6944/* Line 1806 of yacc.c  */
     6945#line 1485 "parser.yy"
    68226946    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68236947    break;
    68246948
    6825   case 345:
    6826 
    6827 /* Line 1806 of yacc.c  */
    6828 #line 1440 "parser.yy"
     6949  case 346:
     6950
     6951/* Line 1806 of yacc.c  */
     6952#line 1491 "parser.yy"
    68296953    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68306954    break;
    68316955
    6832   case 347:
    6833 
    6834 /* Line 1806 of yacc.c  */
    6835 #line 1447 "parser.yy"
     6956  case 348:
     6957
     6958/* Line 1806 of yacc.c  */
     6959#line 1498 "parser.yy"
    68366960    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68376961    break;
    68386962
    6839   case 348:
    6840 
    6841 /* Line 1806 of yacc.c  */
    6842 #line 1449 "parser.yy"
     6963  case 349:
     6964
     6965/* Line 1806 of yacc.c  */
     6966#line 1500 "parser.yy"
    68436967    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68446968    break;
    68456969
    6846   case 349:
    6847 
    6848 /* Line 1806 of yacc.c  */
    6849 #line 1451 "parser.yy"
     6970  case 350:
     6971
     6972/* Line 1806 of yacc.c  */
     6973#line 1502 "parser.yy"
    68506974    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68516975    break;
    68526976
    6853   case 350:
    6854 
    6855 /* Line 1806 of yacc.c  */
    6856 #line 1456 "parser.yy"
     6977  case 351:
     6978
     6979/* Line 1806 of yacc.c  */
     6980#line 1507 "parser.yy"
    68576981    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68586982    break;
    68596983
    6860   case 351:
    6861 
    6862 /* Line 1806 of yacc.c  */
    6863 #line 1458 "parser.yy"
     6984  case 352:
     6985
     6986/* Line 1806 of yacc.c  */
     6987#line 1509 "parser.yy"
    68646988    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68656989    break;
    68666990
    6867   case 352:
    6868 
    6869 /* Line 1806 of yacc.c  */
    6870 #line 1460 "parser.yy"
     6991  case 353:
     6992
     6993/* Line 1806 of yacc.c  */
     6994#line 1511 "parser.yy"
    68716995    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68726996    break;
    68736997
    6874   case 353:
    6875 
    6876 /* Line 1806 of yacc.c  */
    6877 #line 1462 "parser.yy"
     6998  case 354:
     6999
     7000/* Line 1806 of yacc.c  */
     7001#line 1513 "parser.yy"
    68787002    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68797003    break;
    68807004
    6881   case 355:
    6882 
    6883 /* Line 1806 of yacc.c  */
    6884 #line 1468 "parser.yy"
     7005  case 356:
     7006
     7007/* Line 1806 of yacc.c  */
     7008#line 1519 "parser.yy"
    68857009    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68867010    break;
    68877011
    6888   case 356:
    6889 
    6890 /* Line 1806 of yacc.c  */
    6891 #line 1470 "parser.yy"
     7012  case 357:
     7013
     7014/* Line 1806 of yacc.c  */
     7015#line 1521 "parser.yy"
    68927016    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68937017    break;
    68947018
    6895   case 357:
    6896 
    6897 /* Line 1806 of yacc.c  */
    6898 #line 1472 "parser.yy"
     7019  case 358:
     7020
     7021/* Line 1806 of yacc.c  */
     7022#line 1523 "parser.yy"
    68997023    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69007024    break;
    69017025
    6902   case 359:
    6903 
    6904 /* Line 1806 of yacc.c  */
    6905 #line 1478 "parser.yy"
     7026  case 360:
     7027
     7028/* Line 1806 of yacc.c  */
     7029#line 1529 "parser.yy"
    69067030    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69077031    break;
    69087032
    6909   case 360:
    6910 
    6911 /* Line 1806 of yacc.c  */
    6912 #line 1480 "parser.yy"
     7033  case 361:
     7034
     7035/* Line 1806 of yacc.c  */
     7036#line 1531 "parser.yy"
    69137037    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69147038    break;
    69157039
    6916   case 362:
    6917 
    6918 /* Line 1806 of yacc.c  */
    6919 #line 1486 "parser.yy"
     7040  case 363:
     7041
     7042/* Line 1806 of yacc.c  */
     7043#line 1537 "parser.yy"
    69207044    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69217045    break;
    69227046
    6923   case 363:
    6924 
    6925 /* Line 1806 of yacc.c  */
    6926 #line 1488 "parser.yy"
     7047  case 364:
     7048
     7049/* Line 1806 of yacc.c  */
     7050#line 1539 "parser.yy"
    69277051    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69287052    break;
    69297053
    6930   case 364:
    6931 
    6932 /* Line 1806 of yacc.c  */
    6933 #line 1490 "parser.yy"
     7054  case 365:
     7055
     7056/* Line 1806 of yacc.c  */
     7057#line 1541 "parser.yy"
    69347058    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69357059    break;
    69367060
    6937   case 365:
    6938 
    6939 /* Line 1806 of yacc.c  */
    6940 #line 1495 "parser.yy"
     7061  case 366:
     7062
     7063/* Line 1806 of yacc.c  */
     7064#line 1546 "parser.yy"
    69417065    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69427066    break;
    69437067
    6944   case 366:
    6945 
    6946 /* Line 1806 of yacc.c  */
    6947 #line 1497 "parser.yy"
     7068  case 367:
     7069
     7070/* Line 1806 of yacc.c  */
     7071#line 1548 "parser.yy"
    69487072    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69497073    break;
    69507074
    6951   case 367:
    6952 
    6953 /* Line 1806 of yacc.c  */
    6954 #line 1499 "parser.yy"
     7075  case 368:
     7076
     7077/* Line 1806 of yacc.c  */
     7078#line 1550 "parser.yy"
    69557079    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69567080    break;
    69577081
    6958   case 370:
    6959 
    6960 /* Line 1806 of yacc.c  */
    6961 #line 1509 "parser.yy"
    6962     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    6963     break;
    6964 
    69657082  case 371:
    69667083
    69677084/* Line 1806 of yacc.c  */
    6968 #line 1511 "parser.yy"
    6969     {
    6970                         typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    6971                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), nullptr, nullptr, false );
     7085#line 1560 "parser.yy"
     7086    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), nullptr, nullptr, (yyvsp[(4) - (5)].decl), true )->addQualifiers( (yyvsp[(2) - (5)].decl) ); }
     7087    break;
     7088
     7089  case 372:
     7090
     7091/* Line 1806 of yacc.c  */
     7092#line 1562 "parser.yy"
     7093    {
     7094                        typedefTable.makeTypedef( *(yyvsp[(3) - (3)].tok) );
     7095                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (3)].aggKey), (yyvsp[(3) - (3)].tok), nullptr, nullptr, false )->addQualifiers( (yyvsp[(2) - (3)].decl) );
    69727096                }
    69737097    break;
    69747098
    6975   case 372:
    6976 
    6977 /* Line 1806 of yacc.c  */
    6978 #line 1516 "parser.yy"
    6979     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    6980     break;
    6981 
    69827099  case 373:
    69837100
    69847101/* Line 1806 of yacc.c  */
    6985 #line 1518 "parser.yy"
    6986     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     7102#line 1567 "parser.yy"
     7103    { typedefTable.makeTypedef( *(yyvsp[(3) - (3)].tok) ); }
    69877104    break;
    69887105
     
    69907107
    69917108/* Line 1806 of yacc.c  */
    6992 #line 1520 "parser.yy"
    6993     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     7109#line 1569 "parser.yy"
     7110    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(3) - (7)].tok), nullptr, (yyvsp[(6) - (7)].decl), true )->addQualifiers( (yyvsp[(2) - (7)].decl) ); }
    69947111    break;
    69957112
     
    69977114
    69987115/* Line 1806 of yacc.c  */
    6999 #line 1522 "parser.yy"
    7000     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7116#line 1571 "parser.yy"
     7117    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (8)].aggKey), nullptr, (yyvsp[(4) - (8)].en), (yyvsp[(7) - (8)].decl), false )->addQualifiers( (yyvsp[(2) - (8)].decl) ); }
    70017118    break;
    70027119
     
    70047121
    70057122/* Line 1806 of yacc.c  */
    7006 #line 1527 "parser.yy"
     7123#line 1573 "parser.yy"
     7124    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) ); }
     7125    break;
     7126
     7127  case 377:
     7128
     7129/* Line 1806 of yacc.c  */
     7130#line 1578 "parser.yy"
    70077131    { (yyval.aggKey) = DeclarationNode::Struct; }
    70087132    break;
    70097133
    7010   case 377:
    7011 
    7012 /* Line 1806 of yacc.c  */
    7013 #line 1529 "parser.yy"
     7134  case 378:
     7135
     7136/* Line 1806 of yacc.c  */
     7137#line 1580 "parser.yy"
    70147138    { (yyval.aggKey) = DeclarationNode::Union; }
    70157139    break;
    70167140
    7017   case 378:
    7018 
    7019 /* Line 1806 of yacc.c  */
    7020 #line 1534 "parser.yy"
     7141  case 379:
     7142
     7143/* Line 1806 of yacc.c  */
     7144#line 1585 "parser.yy"
    70217145    { (yyval.decl) = nullptr; }
    70227146    break;
    70237147
    7024   case 379:
    7025 
    7026 /* Line 1806 of yacc.c  */
    7027 #line 1536 "parser.yy"
     7148  case 380:
     7149
     7150/* Line 1806 of yacc.c  */
     7151#line 1587 "parser.yy"
    70287152    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70297153    break;
    70307154
    7031   case 381:
    7032 
    7033 /* Line 1806 of yacc.c  */
    7034 #line 1542 "parser.yy"
    7035     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    7036     break;
    7037 
    7038   case 383:
    7039 
    7040 /* Line 1806 of yacc.c  */
    7041 #line 1545 "parser.yy"
    7042     {   // mark all fields in list
    7043                         for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    7044                                 iter->set_extension( true );
     7155  case 382:
     7156
     7157/* Line 1806 of yacc.c  */
     7158#line 1593 "parser.yy"
     7159    {
     7160                        distExt( (yyvsp[(2) - (3)].decl) );                                                             // mark all fields in list
    70457161                        (yyval.decl) = (yyvsp[(2) - (3)].decl);
    70467162                }
    70477163    break;
    70487164
    7049   case 385:
    7050 
    7051 /* Line 1806 of yacc.c  */
    7052 #line 1555 "parser.yy"
     7165  case 383:
     7166
     7167/* Line 1806 of yacc.c  */
     7168#line 1598 "parser.yy"
     7169    {
     7170                        (yyval.decl) = distAttr( (yyvsp[(1) - (3)].decl), (yyvsp[(2) - (3)].decl) ); }
     7171    break;
     7172
     7173  case 384:
     7174
     7175/* Line 1806 of yacc.c  */
     7176#line 1601 "parser.yy"
     7177    {
     7178                        distExt( (yyvsp[(3) - (4)].decl) );                                                             // mark all fields in list
     7179                        (yyval.decl) = distAttr( (yyvsp[(2) - (4)].decl), (yyvsp[(3) - (4)].decl) );
     7180                }
     7181    break;
     7182
     7183  case 386:
     7184
     7185/* Line 1806 of yacc.c  */
     7186#line 1610 "parser.yy"
    70537187    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70547188    break;
    70557189
    7056   case 386:
    7057 
    7058 /* Line 1806 of yacc.c  */
    7059 #line 1557 "parser.yy"
     7190  case 387:
     7191
     7192/* Line 1806 of yacc.c  */
     7193#line 1612 "parser.yy"
    70607194    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70617195    break;
    70627196
    7063   case 387:
    7064 
    7065 /* Line 1806 of yacc.c  */
    7066 #line 1559 "parser.yy"
     7197  case 388:
     7198
     7199/* Line 1806 of yacc.c  */
     7200#line 1614 "parser.yy"
    70677201    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70687202    break;
    70697203
    7070   case 388:
    7071 
    7072 /* Line 1806 of yacc.c  */
    7073 #line 1564 "parser.yy"
    7074     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7075     break;
    7076 
    7077   case 389:
    7078 
    7079 /* Line 1806 of yacc.c  */
    7080 #line 1566 "parser.yy"
    7081     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    7082     break;
    7083 
    70847204  case 390:
    70857205
    70867206/* Line 1806 of yacc.c  */
    7087 #line 1571 "parser.yy"
     7207#line 1620 "parser.yy"
     7208    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(3) - (4)].decl) ) ); }
     7209    break;
     7210
     7211  case 391:
     7212
     7213/* Line 1806 of yacc.c  */
     7214#line 1625 "parser.yy"
    70887215    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    70897216    break;
    70907217
    7091   case 391:
    7092 
    7093 /* Line 1806 of yacc.c  */
    7094 #line 1573 "parser.yy"
     7218  case 392:
     7219
     7220/* Line 1806 of yacc.c  */
     7221#line 1627 "parser.yy"
    70957222    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    70967223    break;
    70977224
    7098   case 392:
    7099 
    7100 /* Line 1806 of yacc.c  */
    7101 #line 1576 "parser.yy"
     7225  case 393:
     7226
     7227/* Line 1806 of yacc.c  */
     7228#line 1630 "parser.yy"
    71027229    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71037230    break;
    71047231
    7105   case 393:
    7106 
    7107 /* Line 1806 of yacc.c  */
    7108 #line 1579 "parser.yy"
     7232  case 394:
     7233
     7234/* Line 1806 of yacc.c  */
     7235#line 1633 "parser.yy"
    71097236    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71107237    break;
    71117238
    7112   case 395:
    7113 
    7114 /* Line 1806 of yacc.c  */
    7115 #line 1585 "parser.yy"
     7239  case 396:
     7240
     7241/* Line 1806 of yacc.c  */
     7242#line 1639 "parser.yy"
    71167243    { (yyval.en) = nullptr; }
    71177244    break;
    71187245
    7119   case 396:
    7120 
    7121 /* Line 1806 of yacc.c  */
    7122 #line 1587 "parser.yy"
     7246  case 397:
     7247
     7248/* Line 1806 of yacc.c  */
     7249#line 1641 "parser.yy"
    71237250    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71247251    break;
    71257252
    7126   case 397:
    7127 
    7128 /* Line 1806 of yacc.c  */
    7129 #line 1592 "parser.yy"
     7253  case 398:
     7254
     7255/* Line 1806 of yacc.c  */
     7256#line 1646 "parser.yy"
    71307257    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71317258    break;
     
    71347261
    71357262/* Line 1806 of yacc.c  */
    7136 #line 1601 "parser.yy"
    7137     { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
     7263#line 1651 "parser.yy"
     7264    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(4) - (6)].decl) )->addQualifiers( (yyvsp[(2) - (6)].decl) ); }
    71387265    break;
    71397266
     
    71417268
    71427269/* Line 1806 of yacc.c  */
    7143 #line 1603 "parser.yy"
    7144     {
    7145                         typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    7146                         (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
     7270#line 1653 "parser.yy"
     7271    {
     7272                        typedefTable.makeTypedef( *(yyvsp[(3) - (3)].tok) );
     7273                        (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(3) - (3)].tok), 0 )->addQualifiers( (yyvsp[(2) - (3)].decl) );
    71477274                }
    71487275    break;
     
    71517278
    71527279/* Line 1806 of yacc.c  */
    7153 #line 1608 "parser.yy"
    7154     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7280#line 1658 "parser.yy"
     7281    { typedefTable.makeTypedef( *(yyvsp[(3) - (3)].tok) ); }
    71557282    break;
    71567283
     
    71587285
    71597286/* Line 1806 of yacc.c  */
    7160 #line 1610 "parser.yy"
    7161     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7287#line 1660 "parser.yy"
     7288    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(3) - (8)].tok), (yyvsp[(6) - (8)].decl) )->addQualifiers( (yyvsp[(2) - (8)].decl) ); }
    71627289    break;
    71637290
     
    71657292
    71667293/* Line 1806 of yacc.c  */
    7167 #line 1615 "parser.yy"
     7294#line 1665 "parser.yy"
    71687295    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71697296    break;
     
    71727299
    71737300/* Line 1806 of yacc.c  */
    7174 #line 1617 "parser.yy"
     7301#line 1667 "parser.yy"
    71757302    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71767303    break;
     
    71797306
    71807307/* Line 1806 of yacc.c  */
    7181 #line 1622 "parser.yy"
     7308#line 1672 "parser.yy"
    71827309    { (yyval.en) = nullptr; }
    71837310    break;
     
    71867313
    71877314/* Line 1806 of yacc.c  */
    7188 #line 1624 "parser.yy"
     7315#line 1674 "parser.yy"
    71897316    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71907317    break;
     
    71937320
    71947321/* Line 1806 of yacc.c  */
    7195 #line 1631 "parser.yy"
     7322#line 1681 "parser.yy"
    71967323    { (yyval.decl) = nullptr; }
    71977324    break;
     
    72007327
    72017328/* Line 1806 of yacc.c  */
    7202 #line 1639 "parser.yy"
     7329#line 1689 "parser.yy"
    72037330    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72047331    break;
     
    72077334
    72087335/* Line 1806 of yacc.c  */
    7209 #line 1641 "parser.yy"
     7336#line 1691 "parser.yy"
    72107337    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72117338    break;
     
    72147341
    72157342/* Line 1806 of yacc.c  */
    7216 #line 1643 "parser.yy"
     7343#line 1693 "parser.yy"
    72177344    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72187345    break;
     
    72217348
    72227349/* Line 1806 of yacc.c  */
    7223 #line 1651 "parser.yy"
     7350#line 1701 "parser.yy"
    72247351    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72257352    break;
     
    72287355
    72297356/* Line 1806 of yacc.c  */
    7230 #line 1653 "parser.yy"
     7357#line 1703 "parser.yy"
    72317358    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72327359    break;
     
    72357362
    72367363/* Line 1806 of yacc.c  */
    7237 #line 1655 "parser.yy"
     7364#line 1705 "parser.yy"
    72387365    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72397366    break;
     
    72427369
    72437370/* Line 1806 of yacc.c  */
    7244 #line 1661 "parser.yy"
     7371#line 1711 "parser.yy"
    72457372    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72467373    break;
     
    72497376
    72507377/* Line 1806 of yacc.c  */
    7251 #line 1666 "parser.yy"
     7378#line 1716 "parser.yy"
    72527379    { (yyval.decl) = nullptr; }
    72537380    break;
     
    72567383
    72577384/* Line 1806 of yacc.c  */
    7258 #line 1673 "parser.yy"
     7385#line 1723 "parser.yy"
    72597386    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72607387    break;
     
    72637390
    72647391/* Line 1806 of yacc.c  */
    7265 #line 1680 "parser.yy"
     7392#line 1730 "parser.yy"
    72667393    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72677394    break;
     
    72707397
    72717398/* Line 1806 of yacc.c  */
    7272 #line 1682 "parser.yy"
     7399#line 1732 "parser.yy"
    72737400    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72747401    break;
     
    72777404
    72787405/* Line 1806 of yacc.c  */
    7279 #line 1691 "parser.yy"
     7406#line 1741 "parser.yy"
    72807407    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72817408    break;
     
    72847411
    72857412/* Line 1806 of yacc.c  */
    7286 #line 1694 "parser.yy"
     7413#line 1744 "parser.yy"
    72877414    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72887415    break;
     
    72917418
    72927419/* Line 1806 of yacc.c  */
    7293 #line 1696 "parser.yy"
     7420#line 1746 "parser.yy"
    72947421    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    72957422    break;
     
    72987425
    72997426/* Line 1806 of yacc.c  */
    7300 #line 1706 "parser.yy"
     7427#line 1756 "parser.yy"
    73017428    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73027429    break;
     
    73057432
    73067433/* Line 1806 of yacc.c  */
    7307 #line 1712 "parser.yy"
     7434#line 1762 "parser.yy"
    73087435    {
    73097436                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73157442
    73167443/* Line 1806 of yacc.c  */
    7317 #line 1717 "parser.yy"
     7444#line 1767 "parser.yy"
    73187445    {
    73197446                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73257452
    73267453/* Line 1806 of yacc.c  */
    7327 #line 1726 "parser.yy"
     7454#line 1776 "parser.yy"
    73287455    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73297456    break;
     
    73327459
    73337460/* Line 1806 of yacc.c  */
    7334 #line 1735 "parser.yy"
     7461#line 1785 "parser.yy"
    73357462    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73367463    break;
     
    73397466
    73407467/* Line 1806 of yacc.c  */
    7341 #line 1737 "parser.yy"
     7468#line 1787 "parser.yy"
    73427469    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73437470    break;
     
    73467473
    73477474/* Line 1806 of yacc.c  */
    7348 #line 1762 "parser.yy"
     7475#line 1812 "parser.yy"
    73497476    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73507477    break;
    73517478
     7479  case 458:
     7480
     7481/* Line 1806 of yacc.c  */
     7482#line 1822 "parser.yy"
     7483    { (yyval.in) = nullptr; }
     7484    break;
     7485
    73527486  case 459:
    73537487
    73547488/* Line 1806 of yacc.c  */
    7355 #line 1770 "parser.yy"
    7356     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7489#line 1824 "parser.yy"
     7490    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73577491    break;
    73587492
     
    73607494
    73617495/* Line 1806 of yacc.c  */
    7362 #line 1775 "parser.yy"
     7496#line 1826 "parser.yy"
     7497    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     7498    break;
     7499
     7500  case 461:
     7501
     7502/* Line 1806 of yacc.c  */
     7503#line 1830 "parser.yy"
     7504    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7505    break;
     7506
     7507  case 462:
     7508
     7509/* Line 1806 of yacc.c  */
     7510#line 1831 "parser.yy"
     7511    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7512    break;
     7513
     7514  case 463:
     7515
     7516/* Line 1806 of yacc.c  */
     7517#line 1836 "parser.yy"
    73637518    { (yyval.in) = nullptr; }
    73647519    break;
    73657520
    7366   case 461:
    7367 
    7368 /* Line 1806 of yacc.c  */
    7369 #line 1777 "parser.yy"
    7370     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7371     break;
    7372 
    7373   case 462:
    7374 
    7375 /* Line 1806 of yacc.c  */
    7376 #line 1779 "parser.yy"
    7377     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    7378     break;
    7379 
    7380   case 463:
    7381 
    7382 /* Line 1806 of yacc.c  */
    7383 #line 1783 "parser.yy"
    7384     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7385     break;
    7386 
    7387   case 464:
    7388 
    7389 /* Line 1806 of yacc.c  */
    7390 #line 1784 "parser.yy"
    7391     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7392     break;
    7393 
    73947521  case 465:
    73957522
    73967523/* Line 1806 of yacc.c  */
    7397 #line 1789 "parser.yy"
    7398     { (yyval.in) = nullptr; }
     7524#line 1838 "parser.yy"
     7525    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7526    break;
     7527
     7528  case 466:
     7529
     7530/* Line 1806 of yacc.c  */
     7531#line 1839 "parser.yy"
     7532    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    73997533    break;
    74007534
     
    74027536
    74037537/* Line 1806 of yacc.c  */
    7404 #line 1791 "parser.yy"
    7405     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7406     break;
    7407 
    7408   case 468:
    7409 
    7410 /* Line 1806 of yacc.c  */
    7411 #line 1792 "parser.yy"
    7412     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     7538#line 1841 "parser.yy"
     7539    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74137540    break;
    74147541
     
    74167543
    74177544/* Line 1806 of yacc.c  */
    7418 #line 1794 "parser.yy"
    7419     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7545#line 1857 "parser.yy"
     7546    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74207547    break;
    74217548
     
    74237550
    74247551/* Line 1806 of yacc.c  */
    7425 #line 1810 "parser.yy"
    7426     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     7552#line 1863 "parser.yy"
     7553    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     7554    break;
     7555
     7556  case 472:
     7557
     7558/* Line 1806 of yacc.c  */
     7559#line 1869 "parser.yy"
     7560    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74277561    break;
    74287562
     
    74307564
    74317565/* Line 1806 of yacc.c  */
    7432 #line 1816 "parser.yy"
    7433     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     7566#line 1872 "parser.yy"
     7567    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74347568    break;
    74357569
     
    74377571
    74387572/* Line 1806 of yacc.c  */
    7439 #line 1822 "parser.yy"
    7440     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     7573#line 1874 "parser.yy"
     7574    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74417575    break;
    74427576
     
    74447578
    74457579/* Line 1806 of yacc.c  */
    7446 #line 1825 "parser.yy"
    7447     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     7580#line 1876 "parser.yy"
     7581    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74487582    break;
    74497583
     
    74517585
    74527586/* Line 1806 of yacc.c  */
    7453 #line 1827 "parser.yy"
    7454     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7455     break;
    7456 
    7457   case 477:
    7458 
    7459 /* Line 1806 of yacc.c  */
    7460 #line 1829 "parser.yy"
    7461     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     7587#line 1878 "parser.yy"
     7588    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74627589    break;
    74637590
     
    74657592
    74667593/* Line 1806 of yacc.c  */
    7467 #line 1831 "parser.yy"
    7468     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     7594#line 1902 "parser.yy"
     7595    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7596    break;
     7597
     7598  case 479:
     7599
     7600/* Line 1806 of yacc.c  */
     7601#line 1904 "parser.yy"
     7602    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74697603    break;
    74707604
     
    74727606
    74737607/* Line 1806 of yacc.c  */
    7474 #line 1855 "parser.yy"
     7608#line 1906 "parser.yy"
     7609    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7610    break;
     7611
     7612  case 482:
     7613
     7614/* Line 1806 of yacc.c  */
     7615#line 1912 "parser.yy"
    74757616    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74767617    break;
    74777618
    7478   case 481:
    7479 
    7480 /* Line 1806 of yacc.c  */
    7481 #line 1857 "parser.yy"
     7619  case 483:
     7620
     7621/* Line 1806 of yacc.c  */
     7622#line 1914 "parser.yy"
    74827623    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74837624    break;
    74847625
    7485   case 482:
    7486 
    7487 /* Line 1806 of yacc.c  */
    7488 #line 1859 "parser.yy"
    7489     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7490     break;
    7491 
    74927626  case 484:
    74937627
    74947628/* Line 1806 of yacc.c  */
    7495 #line 1865 "parser.yy"
    7496     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7497     break;
    7498 
    7499   case 485:
    7500 
    7501 /* Line 1806 of yacc.c  */
    7502 #line 1867 "parser.yy"
    7503     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7629#line 1919 "parser.yy"
     7630    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75047631    break;
    75057632
     
    75077634
    75087635/* Line 1806 of yacc.c  */
    7509 #line 1872 "parser.yy"
    7510     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     7636#line 1925 "parser.yy"
     7637    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     7638    break;
     7639
     7640  case 487:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1930 "parser.yy"
     7644    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75117645    break;
    75127646
     
    75147648
    75157649/* Line 1806 of yacc.c  */
    7516 #line 1878 "parser.yy"
    7517     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    7518     break;
    7519 
    7520   case 489:
    7521 
    7522 /* Line 1806 of yacc.c  */
    7523 #line 1883 "parser.yy"
    7524     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     7650#line 1932 "parser.yy"
     7651    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75257652    break;
    75267653
     
    75287655
    75297656/* Line 1806 of yacc.c  */
    7530 #line 1885 "parser.yy"
    7531     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7657#line 1938 "parser.yy"
     7658    { (yyval.tclass) = DeclarationNode::Otype; }
     7659    break;
     7660
     7661  case 491:
     7662
     7663/* Line 1806 of yacc.c  */
     7664#line 1940 "parser.yy"
     7665    { (yyval.tclass) = DeclarationNode::Dtype; }
    75327666    break;
    75337667
     
    75357669
    75367670/* Line 1806 of yacc.c  */
    7537 #line 1891 "parser.yy"
    7538     { (yyval.tclass) = DeclarationNode::Otype; }
     7671#line 1942 "parser.yy"
     7672    { (yyval.tclass) = DeclarationNode::Ftype; }
    75397673    break;
    75407674
     
    75427676
    75437677/* Line 1806 of yacc.c  */
    7544 #line 1893 "parser.yy"
    7545     { (yyval.tclass) = DeclarationNode::Dtype; }
     7678#line 1944 "parser.yy"
     7679    { (yyval.tclass) = DeclarationNode::Ttype; }
    75467680    break;
    75477681
     
    75497683
    75507684/* Line 1806 of yacc.c  */
    7551 #line 1895 "parser.yy"
    7552     { (yyval.tclass) = DeclarationNode::Ftype; }
     7685#line 1949 "parser.yy"
     7686    { (yyval.decl) = nullptr; }
    75537687    break;
    75547688
     
    75567690
    75577691/* Line 1806 of yacc.c  */
    7558 #line 1897 "parser.yy"
    7559     { (yyval.tclass) = DeclarationNode::Ttype; }
     7692#line 1951 "parser.yy"
     7693    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75607694    break;
    75617695
     
    75637697
    75647698/* Line 1806 of yacc.c  */
    7565 #line 1902 "parser.yy"
    7566     { (yyval.decl) = nullptr; }
    7567     break;
    7568 
    7569   case 497:
    7570 
    7571 /* Line 1806 of yacc.c  */
    7572 #line 1904 "parser.yy"
    7573     { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7574     break;
    7575 
    7576   case 498:
    7577 
    7578 /* Line 1806 of yacc.c  */
    7579 #line 1909 "parser.yy"
     7699#line 1956 "parser.yy"
    75807700    {
    75817701                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75847704    break;
    75857705
     7706  case 497:
     7707
     7708/* Line 1806 of yacc.c  */
     7709#line 1961 "parser.yy"
     7710    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7711    break;
     7712
     7713  case 498:
     7714
     7715/* Line 1806 of yacc.c  */
     7716#line 1963 "parser.yy"
     7717    { (yyval.decl) = nullptr; }
     7718    break;
     7719
    75867720  case 499:
    75877721
    75887722/* Line 1806 of yacc.c  */
    7589 #line 1914 "parser.yy"
    7590     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    7591     break;
    7592 
    7593   case 500:
    7594 
    7595 /* Line 1806 of yacc.c  */
    7596 #line 1916 "parser.yy"
    7597     { (yyval.decl) = nullptr; }
     7723#line 1968 "parser.yy"
     7724    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    75987725    break;
    75997726
     
    76017728
    76027729/* Line 1806 of yacc.c  */
    7603 #line 1921 "parser.yy"
    7604     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     7730#line 1971 "parser.yy"
     7731    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     7732    break;
     7733
     7734  case 502:
     7735
     7736/* Line 1806 of yacc.c  */
     7737#line 1973 "parser.yy"
     7738    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    76057739    break;
    76067740
     
    76087742
    76097743/* Line 1806 of yacc.c  */
    7610 #line 1924 "parser.yy"
    7611     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     7744#line 1978 "parser.yy"
     7745    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76127746    break;
    76137747
     
    76157749
    76167750/* Line 1806 of yacc.c  */
    7617 #line 1926 "parser.yy"
    7618     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     7751#line 1980 "parser.yy"
     7752    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76197753    break;
    76207754
     
    76227756
    76237757/* Line 1806 of yacc.c  */
    7624 #line 1931 "parser.yy"
    7625     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7758#line 1982 "parser.yy"
     7759    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76267760    break;
    76277761
     
    76297763
    76307764/* Line 1806 of yacc.c  */
    7631 #line 1933 "parser.yy"
    7632     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7765#line 1987 "parser.yy"
     7766    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76337767    break;
    76347768
     
    76367770
    76377771/* Line 1806 of yacc.c  */
    7638 #line 1935 "parser.yy"
    7639     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     7772#line 1989 "parser.yy"
     7773    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76407774    break;
    76417775
     
    76437777
    76447778/* Line 1806 of yacc.c  */
    7645 #line 1940 "parser.yy"
    7646     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7647     break;
    7648 
    7649   case 509:
    7650 
    7651 /* Line 1806 of yacc.c  */
    7652 #line 1942 "parser.yy"
    7653     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7654     break;
    7655 
    7656   case 510:
    7657 
    7658 /* Line 1806 of yacc.c  */
    7659 #line 1947 "parser.yy"
     7779#line 1994 "parser.yy"
    76607780    {
    76617781                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76647784    break;
    76657785
    7666   case 511:
    7667 
    7668 /* Line 1806 of yacc.c  */
    7669 #line 1952 "parser.yy"
     7786  case 509:
     7787
     7788/* Line 1806 of yacc.c  */
     7789#line 1999 "parser.yy"
    76707790    {
    76717791                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76747794    break;
    76757795
    7676   case 512:
    7677 
    7678 /* Line 1806 of yacc.c  */
    7679 #line 1960 "parser.yy"
     7796  case 510:
     7797
     7798/* Line 1806 of yacc.c  */
     7799#line 2007 "parser.yy"
    76807800    {
    76817801                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76847804    break;
    76857805
    7686   case 513:
    7687 
    7688 /* Line 1806 of yacc.c  */
    7689 #line 1965 "parser.yy"
     7806  case 511:
     7807
     7808/* Line 1806 of yacc.c  */
     7809#line 2012 "parser.yy"
    76907810    {
    76917811                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    76947814    break;
    76957815
    7696   case 514:
    7697 
    7698 /* Line 1806 of yacc.c  */
    7699 #line 1970 "parser.yy"
     7816  case 512:
     7817
     7818/* Line 1806 of yacc.c  */
     7819#line 2017 "parser.yy"
    77007820    {
    77017821                        typedefTable.leaveTrait();
     
    77057825    break;
    77067826
    7707   case 516:
    7708 
    7709 /* Line 1806 of yacc.c  */
    7710 #line 1980 "parser.yy"
     7827  case 514:
     7828
     7829/* Line 1806 of yacc.c  */
     7830#line 2027 "parser.yy"
    77117831    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77127832    break;
    77137833
    7714   case 519:
    7715 
    7716 /* Line 1806 of yacc.c  */
    7717 #line 1990 "parser.yy"
     7834  case 517:
     7835
     7836/* Line 1806 of yacc.c  */
     7837#line 2037 "parser.yy"
    77187838    {
    77197839                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77227842    break;
    77237843
    7724   case 520:
    7725 
    7726 /* Line 1806 of yacc.c  */
    7727 #line 1995 "parser.yy"
     7844  case 518:
     7845
     7846/* Line 1806 of yacc.c  */
     7847#line 2042 "parser.yy"
    77287848    {
    77297849                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77327852    break;
    77337853
    7734   case 521:
    7735 
    7736 /* Line 1806 of yacc.c  */
    7737 #line 2000 "parser.yy"
     7854  case 519:
     7855
     7856/* Line 1806 of yacc.c  */
     7857#line 2047 "parser.yy"
    77387858    {
    77397859                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77427862    break;
    77437863
    7744   case 522:
    7745 
    7746 /* Line 1806 of yacc.c  */
    7747 #line 2008 "parser.yy"
     7864  case 520:
     7865
     7866/* Line 1806 of yacc.c  */
     7867#line 2055 "parser.yy"
    77487868    {
    77497869                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77527872    break;
    77537873
    7754   case 523:
    7755 
    7756 /* Line 1806 of yacc.c  */
    7757 #line 2013 "parser.yy"
     7874  case 521:
     7875
     7876/* Line 1806 of yacc.c  */
     7877#line 2060 "parser.yy"
    77587878    {
    77597879                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77627882    break;
    77637883
    7764   case 524:
    7765 
    7766 /* Line 1806 of yacc.c  */
    7767 #line 2023 "parser.yy"
     7884  case 522:
     7885
     7886/* Line 1806 of yacc.c  */
     7887#line 2070 "parser.yy"
    77687888    {}
    77697889    break;
    77707890
     7891  case 523:
     7892
     7893/* Line 1806 of yacc.c  */
     7894#line 2072 "parser.yy"
     7895    { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);       }
     7896    break;
     7897
    77717898  case 525:
    77727899
    77737900/* Line 1806 of yacc.c  */
    7774 #line 2025 "parser.yy"
    7775     { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);       }
    7776     break;
    7777 
    7778   case 527:
    7779 
    7780 /* Line 1806 of yacc.c  */
    7781 #line 2031 "parser.yy"
     7901#line 2078 "parser.yy"
    77827902    { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77837903    break;
    77847904
    7785   case 528:
    7786 
    7787 /* Line 1806 of yacc.c  */
    7788 #line 2036 "parser.yy"
     7905  case 526:
     7906
     7907/* Line 1806 of yacc.c  */
     7908#line 2083 "parser.yy"
    77897909    { (yyval.decl) = nullptr; }
    77907910    break;
    77917911
    7792   case 532:
    7793 
    7794 /* Line 1806 of yacc.c  */
    7795 #line 2044 "parser.yy"
     7912  case 530:
     7913
     7914/* Line 1806 of yacc.c  */
     7915#line 2091 "parser.yy"
    77967916    {}
    77977917    break;
    77987918
    7799   case 533:
    7800 
    7801 /* Line 1806 of yacc.c  */
    7802 #line 2046 "parser.yy"
     7919  case 531:
     7920
     7921/* Line 1806 of yacc.c  */
     7922#line 2093 "parser.yy"
    78037923    {
    78047924                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    78077927    break;
    78087928
    7809   case 534:
    7810 
    7811 /* Line 1806 of yacc.c  */
    7812 #line 2051 "parser.yy"
     7929  case 532:
     7930
     7931/* Line 1806 of yacc.c  */
     7932#line 2098 "parser.yy"
    78137933    {
    78147934                        linkage = linkageStack.top();
     
    78187938    break;
    78197939
    7820   case 535:
    7821 
    7822 /* Line 1806 of yacc.c  */
    7823 #line 2057 "parser.yy"
    7824     {   // mark all fields in list
    7825                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    7826                                 iter->set_extension( true );
     7940  case 533:
     7941
     7942/* Line 1806 of yacc.c  */
     7943#line 2104 "parser.yy"
     7944    {
     7945                        distExt( (yyvsp[(2) - (2)].decl) );                                                             // mark all fields in list
    78277946                        (yyval.decl) = (yyvsp[(2) - (2)].decl);
    78287947                }
    78297948    break;
    78307949
    7831   case 537:
    7832 
    7833 /* Line 1806 of yacc.c  */
    7834 #line 2072 "parser.yy"
     7950  case 535:
     7951
     7952/* Line 1806 of yacc.c  */
     7953#line 2118 "parser.yy"
    78357954    {
    78367955                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78407959    break;
    78417960
    7842   case 538:
    7843 
    7844 /* Line 1806 of yacc.c  */
    7845 #line 2078 "parser.yy"
     7961  case 536:
     7962
     7963/* Line 1806 of yacc.c  */
     7964#line 2124 "parser.yy"
    78467965    {
    78477966                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78517970    break;
    78527971
    7853   case 539:
    7854 
    7855 /* Line 1806 of yacc.c  */
    7856 #line 2087 "parser.yy"
     7972  case 537:
     7973
     7974/* Line 1806 of yacc.c  */
     7975#line 2133 "parser.yy"
    78577976    {
    78587977                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78627981    break;
    78637982
    7864   case 540:
    7865 
    7866 /* Line 1806 of yacc.c  */
    7867 #line 2093 "parser.yy"
     7983  case 538:
     7984
     7985/* Line 1806 of yacc.c  */
     7986#line 2139 "parser.yy"
    78687987    {
    78697988                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78737992    break;
    78747993
    7875   case 541:
    7876 
    7877 /* Line 1806 of yacc.c  */
    7878 #line 2099 "parser.yy"
     7994  case 539:
     7995
     7996/* Line 1806 of yacc.c  */
     7997#line 2145 "parser.yy"
    78797998    {
    78807999                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78848003    break;
    78858004
    7886   case 542:
    7887 
    7888 /* Line 1806 of yacc.c  */
    7889 #line 2105 "parser.yy"
     8005  case 540:
     8006
     8007/* Line 1806 of yacc.c  */
     8008#line 2151 "parser.yy"
    78908009    {
    78918010                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78958014    break;
    78968015
    7897   case 543:
    7898 
    7899 /* Line 1806 of yacc.c  */
    7900 #line 2111 "parser.yy"
     8016  case 541:
     8017
     8018/* Line 1806 of yacc.c  */
     8019#line 2157 "parser.yy"
    79018020    {
    79028021                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79068025    break;
    79078026
    7908   case 544:
    7909 
    7910 /* Line 1806 of yacc.c  */
    7911 #line 2119 "parser.yy"
     8027  case 542:
     8028
     8029/* Line 1806 of yacc.c  */
     8030#line 2165 "parser.yy"
    79128031    {
    79138032                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79178036    break;
    79188037
    7919   case 545:
    7920 
    7921 /* Line 1806 of yacc.c  */
    7922 #line 2125 "parser.yy"
     8038  case 543:
     8039
     8040/* Line 1806 of yacc.c  */
     8041#line 2171 "parser.yy"
    79238042    {
    79248043                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79288047    break;
    79298048
    7930   case 546:
    7931 
    7932 /* Line 1806 of yacc.c  */
    7933 #line 2133 "parser.yy"
     8049  case 544:
     8050
     8051/* Line 1806 of yacc.c  */
     8052#line 2179 "parser.yy"
    79348053    {
    79358054                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79398058    break;
    79408059
    7941   case 547:
    7942 
    7943 /* Line 1806 of yacc.c  */
    7944 #line 2139 "parser.yy"
     8060  case 545:
     8061
     8062/* Line 1806 of yacc.c  */
     8063#line 2185 "parser.yy"
    79458064    {
    79468065                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79508069    break;
    79518070
     8071  case 549:
     8072
     8073/* Line 1806 of yacc.c  */
     8074#line 2200 "parser.yy"
     8075    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     8076    break;
     8077
     8078  case 550:
     8079
     8080/* Line 1806 of yacc.c  */
     8081#line 2205 "parser.yy"
     8082    { (yyval.decl) = nullptr; }
     8083    break;
     8084
    79528085  case 551:
    79538086
    79548087/* Line 1806 of yacc.c  */
    7955 #line 2154 "parser.yy"
    7956     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     8088#line 2207 "parser.yy"
     8089    {
     8090                        DeclarationNode * name = new DeclarationNode();
     8091                        name->asmName = (yyvsp[(3) - (5)].constant);
     8092                        (yyval.decl) = name->addQualifiers( (yyvsp[(5) - (5)].decl) );
     8093                }
    79578094    break;
    79588095
     
    79608097
    79618098/* Line 1806 of yacc.c  */
    7962 #line 2159 "parser.yy"
    7963     { (yyval.constant) = nullptr; }
    7964     break;
    7965 
    7966   case 553:
    7967 
    7968 /* Line 1806 of yacc.c  */
    7969 #line 2161 "parser.yy"
    7970     { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
    7971     break;
    7972 
    7973   case 554:
    7974 
    7975 /* Line 1806 of yacc.c  */
    7976 #line 2166 "parser.yy"
     8099#line 2216 "parser.yy"
    79778100    { (yyval.decl) = nullptr; }
    79788101    break;
    79798102
    7980   case 557:
    7981 
    7982 /* Line 1806 of yacc.c  */
    7983 #line 2173 "parser.yy"
     8103  case 555:
     8104
     8105/* Line 1806 of yacc.c  */
     8106#line 2223 "parser.yy"
    79848107    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79858108    break;
    79868109
     8110  case 556:
     8111
     8112/* Line 1806 of yacc.c  */
     8113#line 2228 "parser.yy"
     8114    { (yyval.decl) = (yyvsp[(4) - (6)].decl); }
     8115    break;
     8116
    79878117  case 558:
    79888118
    79898119/* Line 1806 of yacc.c  */
    7990 #line 2178 "parser.yy"
    7991     { (yyval.decl) = (yyvsp[(4) - (6)].decl); }
     8120#line 2234 "parser.yy"
     8121    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     8122    break;
     8123
     8124  case 559:
     8125
     8126/* Line 1806 of yacc.c  */
     8127#line 2239 "parser.yy"
     8128    { (yyval.decl) = nullptr; }
    79928129    break;
    79938130
     
    79958132
    79968133/* Line 1806 of yacc.c  */
    7997 #line 2184 "parser.yy"
    7998     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     8134#line 2241 "parser.yy"
     8135    { (yyval.decl) = DeclarationNode::newAttribute( (yyvsp[(1) - (1)].tok) ); }
    79998136    break;
    80008137
     
    80028139
    80038140/* Line 1806 of yacc.c  */
    8004 #line 2189 "parser.yy"
    8005     { (yyval.decl) = nullptr; }
    8006     break;
    8007 
    8008   case 562:
    8009 
    8010 /* Line 1806 of yacc.c  */
    8011 #line 2191 "parser.yy"
    8012     { (yyval.decl) = DeclarationNode::newAttribute( (yyvsp[(1) - (1)].tok) ); }
    8013     break;
    8014 
    8015   case 563:
    8016 
    8017 /* Line 1806 of yacc.c  */
    8018 #line 2193 "parser.yy"
     8141#line 2243 "parser.yy"
    80198142    { (yyval.decl) = DeclarationNode::newAttribute( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    80208143    break;
    80218144
    8022   case 567:
    8023 
    8024 /* Line 1806 of yacc.c  */
    8025 #line 2201 "parser.yy"
     8145  case 565:
     8146
     8147/* Line 1806 of yacc.c  */
     8148#line 2251 "parser.yy"
    80268149    { (yyval.tok) = Token{ new string( "__const__" ) }; }
    80278150    break;
    80288151
     8152  case 566:
     8153
     8154/* Line 1806 of yacc.c  */
     8155#line 2286 "parser.yy"
     8156    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8157    break;
     8158
    80298159  case 568:
    80308160
    80318161/* Line 1806 of yacc.c  */
    8032 #line 2236 "parser.yy"
     8162#line 2289 "parser.yy"
    80338163    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80348164    break;
    80358165
     8166  case 569:
     8167
     8168/* Line 1806 of yacc.c  */
     8169#line 2291 "parser.yy"
     8170    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8171    break;
     8172
    80368173  case 570:
    80378174
    80388175/* Line 1806 of yacc.c  */
    8039 #line 2239 "parser.yy"
    8040     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8041     break;
    8042 
    8043   case 571:
    8044 
    8045 /* Line 1806 of yacc.c  */
    8046 #line 2241 "parser.yy"
    8047     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8048     break;
    8049 
    8050   case 572:
    8051 
    8052 /* Line 1806 of yacc.c  */
    8053 #line 2246 "parser.yy"
     8176#line 2296 "parser.yy"
    80548177    {
    80558178                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80588181    break;
    80598182
     8183  case 571:
     8184
     8185/* Line 1806 of yacc.c  */
     8186#line 2301 "parser.yy"
     8187    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8188    break;
     8189
     8190  case 572:
     8191
     8192/* Line 1806 of yacc.c  */
     8193#line 2306 "parser.yy"
     8194    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8195    break;
     8196
    80608197  case 573:
    80618198
    80628199/* Line 1806 of yacc.c  */
    8063 #line 2251 "parser.yy"
     8200#line 2308 "parser.yy"
     8201    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8202    break;
     8203
     8204  case 574:
     8205
     8206/* Line 1806 of yacc.c  */
     8207#line 2310 "parser.yy"
     8208    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
     8209    break;
     8210
     8211  case 575:
     8212
     8213/* Line 1806 of yacc.c  */
     8214#line 2315 "parser.yy"
     8215    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8216    break;
     8217
     8218  case 576:
     8219
     8220/* Line 1806 of yacc.c  */
     8221#line 2317 "parser.yy"
     8222    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8223    break;
     8224
     8225  case 577:
     8226
     8227/* Line 1806 of yacc.c  */
     8228#line 2319 "parser.yy"
     8229    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8230    break;
     8231
     8232  case 578:
     8233
     8234/* Line 1806 of yacc.c  */
     8235#line 2321 "parser.yy"
    80648236    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80658237    break;
    80668238
    8067   case 574:
    8068 
    8069 /* Line 1806 of yacc.c  */
    8070 #line 2256 "parser.yy"
     8239  case 579:
     8240
     8241/* Line 1806 of yacc.c  */
     8242#line 2326 "parser.yy"
     8243    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8244    break;
     8245
     8246  case 580:
     8247
     8248/* Line 1806 of yacc.c  */
     8249#line 2328 "parser.yy"
     8250    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8251    break;
     8252
     8253  case 581:
     8254
     8255/* Line 1806 of yacc.c  */
     8256#line 2337 "parser.yy"
     8257    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8258    break;
     8259
     8260  case 583:
     8261
     8262/* Line 1806 of yacc.c  */
     8263#line 2340 "parser.yy"
     8264    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8265    break;
     8266
     8267  case 584:
     8268
     8269/* Line 1806 of yacc.c  */
     8270#line 2345 "parser.yy"
     8271    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8272    break;
     8273
     8274  case 585:
     8275
     8276/* Line 1806 of yacc.c  */
     8277#line 2347 "parser.yy"
     8278    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8279    break;
     8280
     8281  case 586:
     8282
     8283/* Line 1806 of yacc.c  */
     8284#line 2349 "parser.yy"
     8285    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8286    break;
     8287
     8288  case 587:
     8289
     8290/* Line 1806 of yacc.c  */
     8291#line 2354 "parser.yy"
    80718292    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80728293    break;
    80738294
    8074   case 575:
    8075 
    8076 /* Line 1806 of yacc.c  */
    8077 #line 2258 "parser.yy"
     8295  case 588:
     8296
     8297/* Line 1806 of yacc.c  */
     8298#line 2356 "parser.yy"
    80788299    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80798300    break;
    80808301
    8081   case 576:
    8082 
    8083 /* Line 1806 of yacc.c  */
    8084 #line 2260 "parser.yy"
     8302  case 589:
     8303
     8304/* Line 1806 of yacc.c  */
     8305#line 2358 "parser.yy"
    80858306    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80868307    break;
    80878308
    8088   case 577:
    8089 
    8090 /* Line 1806 of yacc.c  */
    8091 #line 2265 "parser.yy"
    8092     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8093     break;
    8094 
    8095   case 578:
    8096 
    8097 /* Line 1806 of yacc.c  */
    8098 #line 2267 "parser.yy"
     8309  case 590:
     8310
     8311/* Line 1806 of yacc.c  */
     8312#line 2363 "parser.yy"
    80998313    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81008314    break;
    81018315
    8102   case 579:
    8103 
    8104 /* Line 1806 of yacc.c  */
    8105 #line 2269 "parser.yy"
     8316  case 591:
     8317
     8318/* Line 1806 of yacc.c  */
     8319#line 2365 "parser.yy"
    81068320    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81078321    break;
    81088322
    8109   case 580:
    8110 
    8111 /* Line 1806 of yacc.c  */
    8112 #line 2271 "parser.yy"
     8323  case 592:
     8324
     8325/* Line 1806 of yacc.c  */
     8326#line 2367 "parser.yy"
    81138327    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81148328    break;
    81158329
    8116   case 581:
    8117 
    8118 /* Line 1806 of yacc.c  */
    8119 #line 2276 "parser.yy"
     8330  case 596:
     8331
     8332/* Line 1806 of yacc.c  */
     8333#line 2385 "parser.yy"
     8334    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8335    break;
     8336
     8337  case 597:
     8338
     8339/* Line 1806 of yacc.c  */
     8340#line 2387 "parser.yy"
    81208341    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81218342    break;
    81228343
    8123   case 582:
    8124 
    8125 /* Line 1806 of yacc.c  */
    8126 #line 2278 "parser.yy"
    8127     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8128     break;
    8129 
    8130   case 583:
    8131 
    8132 /* Line 1806 of yacc.c  */
    8133 #line 2287 "parser.yy"
    8134     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8135     break;
    8136 
    8137   case 585:
    8138 
    8139 /* Line 1806 of yacc.c  */
    8140 #line 2290 "parser.yy"
    8141     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8142     break;
    8143 
    8144   case 586:
    8145 
    8146 /* Line 1806 of yacc.c  */
    8147 #line 2295 "parser.yy"
    8148     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8149     break;
    8150 
    8151   case 587:
    8152 
    8153 /* Line 1806 of yacc.c  */
    8154 #line 2297 "parser.yy"
    8155     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8156     break;
    8157 
    8158   case 588:
    8159 
    8160 /* Line 1806 of yacc.c  */
    8161 #line 2299 "parser.yy"
    8162     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8163     break;
    8164 
    8165   case 589:
    8166 
    8167 /* Line 1806 of yacc.c  */
    8168 #line 2304 "parser.yy"
    8169     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8170     break;
    8171 
    8172   case 590:
    8173 
    8174 /* Line 1806 of yacc.c  */
    8175 #line 2306 "parser.yy"
    8176     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8177     break;
    8178 
    8179   case 591:
    8180 
    8181 /* Line 1806 of yacc.c  */
    8182 #line 2308 "parser.yy"
    8183     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8184     break;
    8185 
    8186   case 592:
    8187 
    8188 /* Line 1806 of yacc.c  */
    8189 #line 2313 "parser.yy"
    8190     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8191     break;
    8192 
    8193   case 593:
    8194 
    8195 /* Line 1806 of yacc.c  */
    8196 #line 2315 "parser.yy"
    8197     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8198     break;
    8199 
    8200   case 594:
    8201 
    8202 /* Line 1806 of yacc.c  */
    8203 #line 2317 "parser.yy"
    8204     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8205     break;
    8206 
    82078344  case 598:
    8208 
    8209 /* Line 1806 of yacc.c  */
    8210 #line 2332 "parser.yy"
    8211     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8212     break;
    8213 
    8214   case 599:
    8215 
    8216 /* Line 1806 of yacc.c  */
    8217 #line 2334 "parser.yy"
    8218     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8219     break;
    8220 
    8221   case 600:
    8222 
    8223 /* Line 1806 of yacc.c  */
    8224 #line 2336 "parser.yy"
    8225     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8226     break;
    8227 
    8228   case 601:
    8229 
    8230 /* Line 1806 of yacc.c  */
    8231 #line 2341 "parser.yy"
    8232     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8233     break;
    8234 
    8235   case 602:
    8236 
    8237 /* Line 1806 of yacc.c  */
    8238 #line 2343 "parser.yy"
    8239     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8240     break;
    8241 
    8242   case 603:
    8243 
    8244 /* Line 1806 of yacc.c  */
    8245 #line 2345 "parser.yy"
    8246     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8247     break;
    8248 
    8249   case 604:
    8250 
    8251 /* Line 1806 of yacc.c  */
    8252 #line 2350 "parser.yy"
    8253     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8254     break;
    8255 
    8256   case 605:
    8257 
    8258 /* Line 1806 of yacc.c  */
    8259 #line 2352 "parser.yy"
    8260     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8261     break;
    8262 
    8263   case 606:
    8264 
    8265 /* Line 1806 of yacc.c  */
    8266 #line 2354 "parser.yy"
    8267     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8268     break;
    8269 
    8270   case 607:
    8271 
    8272 /* Line 1806 of yacc.c  */
    8273 #line 2369 "parser.yy"
    8274     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8275     break;
    8276 
    8277   case 609:
    8278 
    8279 /* Line 1806 of yacc.c  */
    8280 #line 2372 "parser.yy"
    8281     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8282     break;
    8283 
    8284   case 610:
    8285 
    8286 /* Line 1806 of yacc.c  */
    8287 #line 2374 "parser.yy"
    8288     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8289     break;
    8290 
    8291   case 612:
    8292 
    8293 /* Line 1806 of yacc.c  */
    8294 #line 2380 "parser.yy"
    8295     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8296     break;
    8297 
    8298   case 613:
    8299 
    8300 /* Line 1806 of yacc.c  */
    8301 #line 2385 "parser.yy"
    8302     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8303     break;
    8304 
    8305   case 614:
    8306 
    8307 /* Line 1806 of yacc.c  */
    8308 #line 2387 "parser.yy"
    8309     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8310     break;
    8311 
    8312   case 615:
    83138345
    83148346/* Line 1806 of yacc.c  */
     
    83178349    break;
    83188350
    8319   case 616:
     8351  case 599:
    83208352
    83218353/* Line 1806 of yacc.c  */
    83228354#line 2394 "parser.yy"
    8323     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8324     break;
    8325 
    8326   case 617:
     8355    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8356    break;
     8357
     8358  case 600:
    83278359
    83288360/* Line 1806 of yacc.c  */
    83298361#line 2396 "parser.yy"
     8362    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8363    break;
     8364
     8365  case 601:
     8366
     8367/* Line 1806 of yacc.c  */
     8368#line 2398 "parser.yy"
     8369    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8370    break;
     8371
     8372  case 602:
     8373
     8374/* Line 1806 of yacc.c  */
     8375#line 2403 "parser.yy"
    83308376    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83318377    break;
    83328378
    8333   case 618:
    8334 
    8335 /* Line 1806 of yacc.c  */
    8336 #line 2398 "parser.yy"
     8379  case 603:
     8380
     8381/* Line 1806 of yacc.c  */
     8382#line 2405 "parser.yy"
    83378383    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83388384    break;
    83398385
    8340   case 619:
    8341 
    8342 /* Line 1806 of yacc.c  */
    8343 #line 2400 "parser.yy"
     8386  case 604:
     8387
     8388/* Line 1806 of yacc.c  */
     8389#line 2407 "parser.yy"
    83448390    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83458391    break;
    83468392
    8347   case 620:
    8348 
    8349 /* Line 1806 of yacc.c  */
    8350 #line 2405 "parser.yy"
    8351     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8352     break;
    8353 
    8354   case 621:
    8355 
    8356 /* Line 1806 of yacc.c  */
    8357 #line 2407 "parser.yy"
    8358     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8359     break;
    8360 
    8361   case 622:
    8362 
    8363 /* Line 1806 of yacc.c  */
    8364 #line 2409 "parser.yy"
    8365     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8366     break;
    8367 
    8368   case 623:
    8369 
    8370 /* Line 1806 of yacc.c  */
    8371 #line 2419 "parser.yy"
    8372     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8373     break;
    8374 
    8375   case 625:
     8393  case 605:
    83768394
    83778395/* Line 1806 of yacc.c  */
     
    83808398    break;
    83818399
    8382   case 626:
    8383 
    8384 /* Line 1806 of yacc.c  */
    8385 #line 2424 "parser.yy"
     8400  case 607:
     8401
     8402/* Line 1806 of yacc.c  */
     8403#line 2425 "parser.yy"
    83868404    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83878405    break;
    83888406
    8389   case 627:
    8390 
    8391 /* Line 1806 of yacc.c  */
    8392 #line 2429 "parser.yy"
    8393     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8394     break;
    8395 
    8396   case 628:
    8397 
    8398 /* Line 1806 of yacc.c  */
    8399 #line 2431 "parser.yy"
    8400     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8401     break;
    8402 
    8403   case 629:
     8407  case 608:
     8408
     8409/* Line 1806 of yacc.c  */
     8410#line 2427 "parser.yy"
     8411    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8412    break;
     8413
     8414  case 610:
    84048415
    84058416/* Line 1806 of yacc.c  */
     
    84088419    break;
    84098420
    8410   case 630:
     8421  case 611:
    84118422
    84128423/* Line 1806 of yacc.c  */
    84138424#line 2438 "parser.yy"
     8425    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8426    break;
     8427
     8428  case 612:
     8429
     8430/* Line 1806 of yacc.c  */
     8431#line 2440 "parser.yy"
     8432    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8433    break;
     8434
     8435  case 613:
     8436
     8437/* Line 1806 of yacc.c  */
     8438#line 2442 "parser.yy"
     8439    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
     8440    break;
     8441
     8442  case 614:
     8443
     8444/* Line 1806 of yacc.c  */
     8445#line 2447 "parser.yy"
    84148446    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84158447    break;
    84168448
    8417   case 631:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2440 "parser.yy"
     8449  case 615:
     8450
     8451/* Line 1806 of yacc.c  */
     8452#line 2449 "parser.yy"
    84218453    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84228454    break;
    84238455
    8424   case 632:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2442 "parser.yy"
     8456  case 616:
     8457
     8458/* Line 1806 of yacc.c  */
     8459#line 2451 "parser.yy"
    84288460    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84298461    break;
    84308462
    8431   case 633:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2444 "parser.yy"
    8435     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8436     break;
    8437 
    8438   case 634:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2449 "parser.yy"
    8442     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8443     break;
    8444 
    8445   case 635:
    8446 
    8447 /* Line 1806 of yacc.c  */
    8448 #line 2451 "parser.yy"
    8449     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8450     break;
    8451 
    8452   case 636:
     8463  case 617:
    84538464
    84548465/* Line 1806 of yacc.c  */
     
    84578468    break;
    84588469
     8470  case 618:
     8471
     8472/* Line 1806 of yacc.c  */
     8473#line 2458 "parser.yy"
     8474    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8475    break;
     8476
     8477  case 619:
     8478
     8479/* Line 1806 of yacc.c  */
     8480#line 2460 "parser.yy"
     8481    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8482    break;
     8483
     8484  case 620:
     8485
     8486/* Line 1806 of yacc.c  */
     8487#line 2462 "parser.yy"
     8488    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8489    break;
     8490
     8491  case 621:
     8492
     8493/* Line 1806 of yacc.c  */
     8494#line 2472 "parser.yy"
     8495    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8496    break;
     8497
     8498  case 623:
     8499
     8500/* Line 1806 of yacc.c  */
     8501#line 2475 "parser.yy"
     8502    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8503    break;
     8504
     8505  case 624:
     8506
     8507/* Line 1806 of yacc.c  */
     8508#line 2477 "parser.yy"
     8509    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8510    break;
     8511
     8512  case 625:
     8513
     8514/* Line 1806 of yacc.c  */
     8515#line 2482 "parser.yy"
     8516    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8517    break;
     8518
     8519  case 626:
     8520
     8521/* Line 1806 of yacc.c  */
     8522#line 2484 "parser.yy"
     8523    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8524    break;
     8525
     8526  case 627:
     8527
     8528/* Line 1806 of yacc.c  */
     8529#line 2486 "parser.yy"
     8530    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
     8531    break;
     8532
     8533  case 628:
     8534
     8535/* Line 1806 of yacc.c  */
     8536#line 2491 "parser.yy"
     8537    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8538    break;
     8539
     8540  case 629:
     8541
     8542/* Line 1806 of yacc.c  */
     8543#line 2493 "parser.yy"
     8544    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8545    break;
     8546
     8547  case 630:
     8548
     8549/* Line 1806 of yacc.c  */
     8550#line 2495 "parser.yy"
     8551    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8552    break;
     8553
     8554  case 631:
     8555
     8556/* Line 1806 of yacc.c  */
     8557#line 2497 "parser.yy"
     8558    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8559    break;
     8560
     8561  case 632:
     8562
     8563/* Line 1806 of yacc.c  */
     8564#line 2502 "parser.yy"
     8565    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8566    break;
     8567
     8568  case 633:
     8569
     8570/* Line 1806 of yacc.c  */
     8571#line 2504 "parser.yy"
     8572    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8573    break;
     8574
     8575  case 634:
     8576
     8577/* Line 1806 of yacc.c  */
     8578#line 2506 "parser.yy"
     8579    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8580    break;
     8581
     8582  case 635:
     8583
     8584/* Line 1806 of yacc.c  */
     8585#line 2519 "parser.yy"
     8586    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8587    break;
     8588
    84598589  case 637:
    84608590
    84618591/* Line 1806 of yacc.c  */
    8462 #line 2484 "parser.yy"
     8592#line 2522 "parser.yy"
    84638593    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84648594    break;
    84658595
     8596  case 638:
     8597
     8598/* Line 1806 of yacc.c  */
     8599#line 2524 "parser.yy"
     8600    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8601    break;
     8602
    84668603  case 639:
    84678604
    84688605/* Line 1806 of yacc.c  */
    8469 #line 2487 "parser.yy"
    8470     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8471     break;
    8472 
    8473   case 640:
    8474 
    8475 /* Line 1806 of yacc.c  */
    8476 #line 2489 "parser.yy"
    8477     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8478     break;
    8479 
    8480   case 641:
    8481 
    8482 /* Line 1806 of yacc.c  */
    8483 #line 2494 "parser.yy"
     8606#line 2529 "parser.yy"
    84848607    {
    84858608                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84888611    break;
    84898612
    8490   case 642:
    8491 
    8492 /* Line 1806 of yacc.c  */
    8493 #line 2499 "parser.yy"
     8613  case 640:
     8614
     8615/* Line 1806 of yacc.c  */
     8616#line 2534 "parser.yy"
    84948617    {
    84958618                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84988621    break;
    84998622
     8623  case 641:
     8624
     8625/* Line 1806 of yacc.c  */
     8626#line 2542 "parser.yy"
     8627    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8628    break;
     8629
     8630  case 642:
     8631
     8632/* Line 1806 of yacc.c  */
     8633#line 2544 "parser.yy"
     8634    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8635    break;
     8636
    85008637  case 643:
    85018638
    85028639/* Line 1806 of yacc.c  */
    8503 #line 2507 "parser.yy"
     8640#line 2546 "parser.yy"
     8641    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
     8642    break;
     8643
     8644  case 644:
     8645
     8646/* Line 1806 of yacc.c  */
     8647#line 2551 "parser.yy"
     8648    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8649    break;
     8650
     8651  case 645:
     8652
     8653/* Line 1806 of yacc.c  */
     8654#line 2553 "parser.yy"
     8655    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8656    break;
     8657
     8658  case 646:
     8659
     8660/* Line 1806 of yacc.c  */
     8661#line 2558 "parser.yy"
     8662    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8663    break;
     8664
     8665  case 647:
     8666
     8667/* Line 1806 of yacc.c  */
     8668#line 2560 "parser.yy"
     8669    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8670    break;
     8671
     8672  case 649:
     8673
     8674/* Line 1806 of yacc.c  */
     8675#line 2578 "parser.yy"
     8676    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8677    break;
     8678
     8679  case 650:
     8680
     8681/* Line 1806 of yacc.c  */
     8682#line 2580 "parser.yy"
     8683    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8684    break;
     8685
     8686  case 651:
     8687
     8688/* Line 1806 of yacc.c  */
     8689#line 2585 "parser.yy"
     8690    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8691    break;
     8692
     8693  case 652:
     8694
     8695/* Line 1806 of yacc.c  */
     8696#line 2587 "parser.yy"
     8697    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8698    break;
     8699
     8700  case 653:
     8701
     8702/* Line 1806 of yacc.c  */
     8703#line 2589 "parser.yy"
    85048704    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85058705    break;
    85068706
    8507   case 644:
    8508 
    8509 /* Line 1806 of yacc.c  */
    8510 #line 2509 "parser.yy"
     8707  case 654:
     8708
     8709/* Line 1806 of yacc.c  */
     8710#line 2591 "parser.yy"
    85118711    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85128712    break;
    85138713
    8514   case 645:
    8515 
    8516 /* Line 1806 of yacc.c  */
    8517 #line 2511 "parser.yy"
     8714  case 655:
     8715
     8716/* Line 1806 of yacc.c  */
     8717#line 2593 "parser.yy"
     8718    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
     8719    break;
     8720
     8721  case 657:
     8722
     8723/* Line 1806 of yacc.c  */
     8724#line 2599 "parser.yy"
     8725    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8726    break;
     8727
     8728  case 658:
     8729
     8730/* Line 1806 of yacc.c  */
     8731#line 2601 "parser.yy"
     8732    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8733    break;
     8734
     8735  case 659:
     8736
     8737/* Line 1806 of yacc.c  */
     8738#line 2603 "parser.yy"
    85188739    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85198740    break;
    85208741
    8521   case 646:
    8522 
    8523 /* Line 1806 of yacc.c  */
    8524 #line 2516 "parser.yy"
     8742  case 660:
     8743
     8744/* Line 1806 of yacc.c  */
     8745#line 2608 "parser.yy"
     8746    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8747    break;
     8748
     8749  case 661:
     8750
     8751/* Line 1806 of yacc.c  */
     8752#line 2610 "parser.yy"
     8753    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8754    break;
     8755
     8756  case 662:
     8757
     8758/* Line 1806 of yacc.c  */
     8759#line 2612 "parser.yy"
     8760    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8761    break;
     8762
     8763  case 663:
     8764
     8765/* Line 1806 of yacc.c  */
     8766#line 2618 "parser.yy"
     8767    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8768    break;
     8769
     8770  case 664:
     8771
     8772/* Line 1806 of yacc.c  */
     8773#line 2620 "parser.yy"
     8774    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8775    break;
     8776
     8777  case 666:
     8778
     8779/* Line 1806 of yacc.c  */
     8780#line 2626 "parser.yy"
     8781    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8782    break;
     8783
     8784  case 667:
     8785
     8786/* Line 1806 of yacc.c  */
     8787#line 2628 "parser.yy"
     8788    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8789    break;
     8790
     8791  case 668:
     8792
     8793/* Line 1806 of yacc.c  */
     8794#line 2630 "parser.yy"
     8795    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8796    break;
     8797
     8798  case 669:
     8799
     8800/* Line 1806 of yacc.c  */
     8801#line 2632 "parser.yy"
     8802    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8803    break;
     8804
     8805  case 671:
     8806
     8807/* Line 1806 of yacc.c  */
     8808#line 2667 "parser.yy"
     8809    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8810    break;
     8811
     8812  case 672:
     8813
     8814/* Line 1806 of yacc.c  */
     8815#line 2669 "parser.yy"
     8816    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8817    break;
     8818
     8819  case 673:
     8820
     8821/* Line 1806 of yacc.c  */
     8822#line 2674 "parser.yy"
     8823    { (yyval.decl) = DeclarationNode::newPointer( nullptr ); }
     8824    break;
     8825
     8826  case 674:
     8827
     8828/* Line 1806 of yacc.c  */
     8829#line 2676 "parser.yy"
     8830    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8831    break;
     8832
     8833  case 675:
     8834
     8835/* Line 1806 of yacc.c  */
     8836#line 2678 "parser.yy"
     8837    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( nullptr ) ); }
     8838    break;
     8839
     8840  case 676:
     8841
     8842/* Line 1806 of yacc.c  */
     8843#line 2680 "parser.yy"
     8844    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8845    break;
     8846
     8847  case 677:
     8848
     8849/* Line 1806 of yacc.c  */
     8850#line 2682 "parser.yy"
     8851    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
     8852    break;
     8853
     8854  case 679:
     8855
     8856/* Line 1806 of yacc.c  */
     8857#line 2688 "parser.yy"
     8858    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8859    break;
     8860
     8861  case 680:
     8862
     8863/* Line 1806 of yacc.c  */
     8864#line 2690 "parser.yy"
     8865    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8866    break;
     8867
     8868  case 681:
     8869
     8870/* Line 1806 of yacc.c  */
     8871#line 2692 "parser.yy"
     8872    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8873    break;
     8874
     8875  case 682:
     8876
     8877/* Line 1806 of yacc.c  */
     8878#line 2697 "parser.yy"
     8879    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8880    break;
     8881
     8882  case 683:
     8883
     8884/* Line 1806 of yacc.c  */
     8885#line 2699 "parser.yy"
     8886    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8887    break;
     8888
     8889  case 684:
     8890
     8891/* Line 1806 of yacc.c  */
     8892#line 2701 "parser.yy"
     8893    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8894    break;
     8895
     8896  case 686:
     8897
     8898/* Line 1806 of yacc.c  */
     8899#line 2708 "parser.yy"
    85258900    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85268901    break;
    85278902
    8528   case 647:
    8529 
    8530 /* Line 1806 of yacc.c  */
    8531 #line 2518 "parser.yy"
     8903  case 688:
     8904
     8905/* Line 1806 of yacc.c  */
     8906#line 2719 "parser.yy"
     8907    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8908    break;
     8909
     8910  case 689:
     8911
     8912/* Line 1806 of yacc.c  */
     8913#line 2722 "parser.yy"
     8914    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8915    break;
     8916
     8917  case 690:
     8918
     8919/* Line 1806 of yacc.c  */
     8920#line 2724 "parser.yy"
     8921    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8922    break;
     8923
     8924  case 691:
     8925
     8926/* Line 1806 of yacc.c  */
     8927#line 2727 "parser.yy"
     8928    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8929    break;
     8930
     8931  case 692:
     8932
     8933/* Line 1806 of yacc.c  */
     8934#line 2729 "parser.yy"
     8935    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8936    break;
     8937
     8938  case 693:
     8939
     8940/* Line 1806 of yacc.c  */
     8941#line 2731 "parser.yy"
     8942    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8943    break;
     8944
     8945  case 695:
     8946
     8947/* Line 1806 of yacc.c  */
     8948#line 2746 "parser.yy"
     8949    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8950    break;
     8951
     8952  case 696:
     8953
     8954/* Line 1806 of yacc.c  */
     8955#line 2748 "parser.yy"
     8956    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8957    break;
     8958
     8959  case 697:
     8960
     8961/* Line 1806 of yacc.c  */
     8962#line 2753 "parser.yy"
     8963    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8964    break;
     8965
     8966  case 698:
     8967
     8968/* Line 1806 of yacc.c  */
     8969#line 2755 "parser.yy"
     8970    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8971    break;
     8972
     8973  case 699:
     8974
     8975/* Line 1806 of yacc.c  */
     8976#line 2757 "parser.yy"
     8977    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8978    break;
     8979
     8980  case 700:
     8981
     8982/* Line 1806 of yacc.c  */
     8983#line 2759 "parser.yy"
     8984    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8985    break;
     8986
     8987  case 701:
     8988
     8989/* Line 1806 of yacc.c  */
     8990#line 2761 "parser.yy"
     8991    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
     8992    break;
     8993
     8994  case 703:
     8995
     8996/* Line 1806 of yacc.c  */
     8997#line 2767 "parser.yy"
    85328998    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85338999    break;
    85349000
    8535   case 648:
    8536 
    8537 /* Line 1806 of yacc.c  */
    8538 #line 2523 "parser.yy"
    8539     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8540     break;
    8541 
    8542   case 649:
    8543 
    8544 /* Line 1806 of yacc.c  */
    8545 #line 2525 "parser.yy"
     9001  case 704:
     9002
     9003/* Line 1806 of yacc.c  */
     9004#line 2769 "parser.yy"
     9005    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     9006    break;
     9007
     9008  case 705:
     9009
     9010/* Line 1806 of yacc.c  */
     9011#line 2771 "parser.yy"
     9012    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     9013    break;
     9014
     9015  case 706:
     9016
     9017/* Line 1806 of yacc.c  */
     9018#line 2776 "parser.yy"
    85469019    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85479020    break;
    85489021
    8549   case 651:
    8550 
    8551 /* Line 1806 of yacc.c  */
    8552 #line 2540 "parser.yy"
    8553     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8554     break;
    8555 
    8556   case 652:
    8557 
    8558 /* Line 1806 of yacc.c  */
    8559 #line 2542 "parser.yy"
    8560     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8561     break;
    8562 
    8563   case 653:
    8564 
    8565 /* Line 1806 of yacc.c  */
    8566 #line 2547 "parser.yy"
    8567     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8568     break;
    8569 
    8570   case 654:
    8571 
    8572 /* Line 1806 of yacc.c  */
    8573 #line 2549 "parser.yy"
    8574     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8575     break;
    8576 
    8577   case 655:
    8578 
    8579 /* Line 1806 of yacc.c  */
    8580 #line 2551 "parser.yy"
    8581     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8582     break;
    8583 
    8584   case 656:
    8585 
    8586 /* Line 1806 of yacc.c  */
    8587 #line 2553 "parser.yy"
    8588     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8589     break;
    8590 
    8591   case 657:
    8592 
    8593 /* Line 1806 of yacc.c  */
    8594 #line 2555 "parser.yy"
     9022  case 707:
     9023
     9024/* Line 1806 of yacc.c  */
     9025#line 2778 "parser.yy"
    85959026    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85969027    break;
    85979028
    8598   case 659:
    8599 
    8600 /* Line 1806 of yacc.c  */
    8601 #line 2561 "parser.yy"
    8602     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8603     break;
    8604 
    8605   case 660:
    8606 
    8607 /* Line 1806 of yacc.c  */
    8608 #line 2563 "parser.yy"
    8609     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8610     break;
    8611 
    8612   case 661:
    8613 
    8614 /* Line 1806 of yacc.c  */
    8615 #line 2565 "parser.yy"
    8616     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8617     break;
    8618 
    8619   case 662:
    8620 
    8621 /* Line 1806 of yacc.c  */
    8622 #line 2570 "parser.yy"
    8623     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    8624     break;
    8625 
    8626   case 663:
    8627 
    8628 /* Line 1806 of yacc.c  */
    8629 #line 2572 "parser.yy"
    8630     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8631     break;
    8632 
    8633   case 664:
    8634 
    8635 /* Line 1806 of yacc.c  */
    8636 #line 2574 "parser.yy"
    8637     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8638     break;
    8639 
    8640   case 665:
    8641 
    8642 /* Line 1806 of yacc.c  */
    8643 #line 2580 "parser.yy"
    8644     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8645     break;
    8646 
    8647   case 666:
    8648 
    8649 /* Line 1806 of yacc.c  */
    8650 #line 2582 "parser.yy"
    8651     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8652     break;
    8653 
    8654   case 668:
    8655 
    8656 /* Line 1806 of yacc.c  */
    8657 #line 2588 "parser.yy"
    8658     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8659     break;
    8660 
    8661   case 669:
    8662 
    8663 /* Line 1806 of yacc.c  */
    8664 #line 2590 "parser.yy"
    8665     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8666     break;
    8667 
    8668   case 670:
    8669 
    8670 /* Line 1806 of yacc.c  */
    8671 #line 2592 "parser.yy"
    8672     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8673     break;
    8674 
    8675   case 671:
    8676 
    8677 /* Line 1806 of yacc.c  */
    8678 #line 2594 "parser.yy"
    8679     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8680     break;
    8681 
    8682   case 673:
    8683 
    8684 /* Line 1806 of yacc.c  */
    8685 #line 2609 "parser.yy"
    8686     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8687     break;
    8688 
    8689   case 674:
    8690 
    8691 /* Line 1806 of yacc.c  */
    8692 #line 2611 "parser.yy"
    8693     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8694     break;
    8695 
    8696   case 675:
    8697 
    8698 /* Line 1806 of yacc.c  */
    8699 #line 2616 "parser.yy"
    8700     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8701     break;
    8702 
    8703   case 676:
    8704 
    8705 /* Line 1806 of yacc.c  */
    8706 #line 2618 "parser.yy"
    8707     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8708     break;
    8709 
    8710   case 677:
    8711 
    8712 /* Line 1806 of yacc.c  */
    8713 #line 2620 "parser.yy"
    8714     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8715     break;
    8716 
    8717   case 678:
    8718 
    8719 /* Line 1806 of yacc.c  */
    8720 #line 2622 "parser.yy"
    8721     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8722     break;
    8723 
    8724   case 679:
    8725 
    8726 /* Line 1806 of yacc.c  */
    8727 #line 2624 "parser.yy"
    8728     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8729     break;
    8730 
    8731   case 681:
    8732 
    8733 /* Line 1806 of yacc.c  */
    8734 #line 2630 "parser.yy"
    8735     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8736     break;
    8737 
    8738   case 682:
    8739 
    8740 /* Line 1806 of yacc.c  */
    8741 #line 2632 "parser.yy"
    8742     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8743     break;
    8744 
    8745   case 683:
    8746 
    8747 /* Line 1806 of yacc.c  */
    8748 #line 2634 "parser.yy"
    8749     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8750     break;
    8751 
    8752   case 684:
    8753 
    8754 /* Line 1806 of yacc.c  */
    8755 #line 2639 "parser.yy"
    8756     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    8757     break;
    8758 
    8759   case 685:
    8760 
    8761 /* Line 1806 of yacc.c  */
    8762 #line 2641 "parser.yy"
    8763     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8764     break;
    8765 
    8766   case 686:
    8767 
    8768 /* Line 1806 of yacc.c  */
    8769 #line 2643 "parser.yy"
    8770     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8771     break;
    8772 
    8773   case 688:
    8774 
    8775 /* Line 1806 of yacc.c  */
    8776 #line 2650 "parser.yy"
    8777     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8778     break;
    8779 
    8780   case 690:
    8781 
    8782 /* Line 1806 of yacc.c  */
    8783 #line 2661 "parser.yy"
    8784     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8785     break;
    8786 
    8787   case 691:
    8788 
    8789 /* Line 1806 of yacc.c  */
    8790 #line 2664 "parser.yy"
     9029  case 710:
     9030
     9031/* Line 1806 of yacc.c  */
     9032#line 2788 "parser.yy"
     9033    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     9034    break;
     9035
     9036  case 713:
     9037
     9038/* Line 1806 of yacc.c  */
     9039#line 2798 "parser.yy"
     9040    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9041    break;
     9042
     9043  case 714:
     9044
     9045/* Line 1806 of yacc.c  */
     9046#line 2800 "parser.yy"
     9047    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9048    break;
     9049
     9050  case 715:
     9051
     9052/* Line 1806 of yacc.c  */
     9053#line 2802 "parser.yy"
     9054    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9055    break;
     9056
     9057  case 716:
     9058
     9059/* Line 1806 of yacc.c  */
     9060#line 2804 "parser.yy"
     9061    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9062    break;
     9063
     9064  case 717:
     9065
     9066/* Line 1806 of yacc.c  */
     9067#line 2806 "parser.yy"
     9068    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9069    break;
     9070
     9071  case 718:
     9072
     9073/* Line 1806 of yacc.c  */
     9074#line 2808 "parser.yy"
     9075    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9076    break;
     9077
     9078  case 719:
     9079
     9080/* Line 1806 of yacc.c  */
     9081#line 2815 "parser.yy"
     9082    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9083    break;
     9084
     9085  case 720:
     9086
     9087/* Line 1806 of yacc.c  */
     9088#line 2817 "parser.yy"
     9089    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9090    break;
     9091
     9092  case 721:
     9093
     9094/* Line 1806 of yacc.c  */
     9095#line 2819 "parser.yy"
     9096    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9097    break;
     9098
     9099  case 722:
     9100
     9101/* Line 1806 of yacc.c  */
     9102#line 2821 "parser.yy"
     9103    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     9104    break;
     9105
     9106  case 723:
     9107
     9108/* Line 1806 of yacc.c  */
     9109#line 2823 "parser.yy"
     9110    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9111    break;
     9112
     9113  case 724:
     9114
     9115/* Line 1806 of yacc.c  */
     9116#line 2826 "parser.yy"
     9117    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9118    break;
     9119
     9120  case 725:
     9121
     9122/* Line 1806 of yacc.c  */
     9123#line 2828 "parser.yy"
     9124    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9125    break;
     9126
     9127  case 726:
     9128
     9129/* Line 1806 of yacc.c  */
     9130#line 2830 "parser.yy"
     9131    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9132    break;
     9133
     9134  case 727:
     9135
     9136/* Line 1806 of yacc.c  */
     9137#line 2832 "parser.yy"
     9138    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     9139    break;
     9140
     9141  case 728:
     9142
     9143/* Line 1806 of yacc.c  */
     9144#line 2834 "parser.yy"
     9145    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9146    break;
     9147
     9148  case 729:
     9149
     9150/* Line 1806 of yacc.c  */
     9151#line 2839 "parser.yy"
    87919152    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87929153    break;
    87939154
    8794   case 692:
    8795 
    8796 /* Line 1806 of yacc.c  */
    8797 #line 2666 "parser.yy"
    8798     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8799     break;
    8800 
    8801   case 693:
    8802 
    8803 /* Line 1806 of yacc.c  */
    8804 #line 2669 "parser.yy"
     9155  case 730:
     9156
     9157/* Line 1806 of yacc.c  */
     9158#line 2841 "parser.yy"
    88059159    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88069160    break;
    88079161
    8808   case 694:
    8809 
    8810 /* Line 1806 of yacc.c  */
    8811 #line 2671 "parser.yy"
    8812     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8813     break;
    8814 
    8815   case 695:
    8816 
    8817 /* Line 1806 of yacc.c  */
    8818 #line 2673 "parser.yy"
    8819     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8820     break;
    8821 
    8822   case 697:
    8823 
    8824 /* Line 1806 of yacc.c  */
    8825 #line 2687 "parser.yy"
    8826     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8827     break;
    8828 
    8829   case 698:
    8830 
    8831 /* Line 1806 of yacc.c  */
    8832 #line 2689 "parser.yy"
    8833     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8834     break;
    8835 
    8836   case 699:
    8837 
    8838 /* Line 1806 of yacc.c  */
    8839 #line 2694 "parser.yy"
    8840     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8841     break;
    8842 
    8843   case 700:
    8844 
    8845 /* Line 1806 of yacc.c  */
    8846 #line 2696 "parser.yy"
    8847     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8848     break;
    8849 
    8850   case 701:
    8851 
    8852 /* Line 1806 of yacc.c  */
    8853 #line 2698 "parser.yy"
    8854     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8855     break;
    8856 
    8857   case 702:
    8858 
    8859 /* Line 1806 of yacc.c  */
    8860 #line 2700 "parser.yy"
    8861     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8862     break;
    8863 
    8864   case 703:
    8865 
    8866 /* Line 1806 of yacc.c  */
    8867 #line 2702 "parser.yy"
    8868     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8869     break;
    8870 
    8871   case 705:
    8872 
    8873 /* Line 1806 of yacc.c  */
    8874 #line 2708 "parser.yy"
    8875     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8876     break;
    8877 
    8878   case 706:
    8879 
    8880 /* Line 1806 of yacc.c  */
    8881 #line 2710 "parser.yy"
    8882     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8883     break;
    8884 
    8885   case 707:
    8886 
    8887 /* Line 1806 of yacc.c  */
    8888 #line 2712 "parser.yy"
    8889     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8890     break;
    8891 
    8892   case 708:
    8893 
    8894 /* Line 1806 of yacc.c  */
    8895 #line 2717 "parser.yy"
    8896     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8897     break;
    8898 
    8899   case 709:
    8900 
    8901 /* Line 1806 of yacc.c  */
    8902 #line 2719 "parser.yy"
    8903     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8904     break;
    8905 
    8906   case 712:
    8907 
    8908 /* Line 1806 of yacc.c  */
    8909 #line 2729 "parser.yy"
     9162  case 731:
     9163
     9164/* Line 1806 of yacc.c  */
     9165#line 2846 "parser.yy"
     9166    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9167    break;
     9168
     9169  case 732:
     9170
     9171/* Line 1806 of yacc.c  */
     9172#line 2848 "parser.yy"
     9173    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9174    break;
     9175
     9176  case 734:
     9177
     9178/* Line 1806 of yacc.c  */
     9179#line 2875 "parser.yy"
    89109180    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89119181    break;
    89129182
    8913   case 715:
    8914 
    8915 /* Line 1806 of yacc.c  */
    8916 #line 2739 "parser.yy"
     9183  case 738:
     9184
     9185/* Line 1806 of yacc.c  */
     9186#line 2886 "parser.yy"
    89179187    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89189188    break;
    89199189
    8920   case 716:
    8921 
    8922 /* Line 1806 of yacc.c  */
    8923 #line 2741 "parser.yy"
     9190  case 739:
     9191
     9192/* Line 1806 of yacc.c  */
     9193#line 2888 "parser.yy"
    89249194    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89259195    break;
    89269196
    8927   case 717:
    8928 
    8929 /* Line 1806 of yacc.c  */
    8930 #line 2743 "parser.yy"
     9197  case 740:
     9198
     9199/* Line 1806 of yacc.c  */
     9200#line 2890 "parser.yy"
    89319201    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89329202    break;
    89339203
    8934   case 718:
    8935 
    8936 /* Line 1806 of yacc.c  */
    8937 #line 2745 "parser.yy"
     9204  case 741:
     9205
     9206/* Line 1806 of yacc.c  */
     9207#line 2892 "parser.yy"
    89389208    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89399209    break;
    89409210
    8941   case 719:
    8942 
    8943 /* Line 1806 of yacc.c  */
    8944 #line 2747 "parser.yy"
     9211  case 742:
     9212
     9213/* Line 1806 of yacc.c  */
     9214#line 2894 "parser.yy"
    89459215    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89469216    break;
    89479217
    8948   case 720:
    8949 
    8950 /* Line 1806 of yacc.c  */
    8951 #line 2749 "parser.yy"
     9218  case 743:
     9219
     9220/* Line 1806 of yacc.c  */
     9221#line 2896 "parser.yy"
    89529222    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89539223    break;
    89549224
    8955   case 721:
    8956 
    8957 /* Line 1806 of yacc.c  */
    8958 #line 2756 "parser.yy"
    8959     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8960     break;
    8961 
    8962   case 722:
    8963 
    8964 /* Line 1806 of yacc.c  */
    8965 #line 2758 "parser.yy"
     9225  case 744:
     9226
     9227/* Line 1806 of yacc.c  */
     9228#line 2903 "parser.yy"
     9229    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9230    break;
     9231
     9232  case 745:
     9233
     9234/* Line 1806 of yacc.c  */
     9235#line 2905 "parser.yy"
     9236    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9237    break;
     9238
     9239  case 746:
     9240
     9241/* Line 1806 of yacc.c  */
     9242#line 2907 "parser.yy"
    89669243    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89679244    break;
    89689245
    8969   case 723:
    8970 
    8971 /* Line 1806 of yacc.c  */
    8972 #line 2760 "parser.yy"
    8973     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8974     break;
    8975 
    8976   case 724:
    8977 
    8978 /* Line 1806 of yacc.c  */
    8979 #line 2762 "parser.yy"
    8980     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8981     break;
    8982 
    8983   case 725:
    8984 
    8985 /* Line 1806 of yacc.c  */
    8986 #line 2764 "parser.yy"
     9246  case 747:
     9247
     9248/* Line 1806 of yacc.c  */
     9249#line 2909 "parser.yy"
     9250    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9251    break;
     9252
     9253  case 748:
     9254
     9255/* Line 1806 of yacc.c  */
     9256#line 2911 "parser.yy"
     9257    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9258    break;
     9259
     9260  case 749:
     9261
     9262/* Line 1806 of yacc.c  */
     9263#line 2913 "parser.yy"
    89879264    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89889265    break;
    89899266
    8990   case 726:
    8991 
    8992 /* Line 1806 of yacc.c  */
    8993 #line 2767 "parser.yy"
    8994     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8995     break;
    8996 
    8997   case 727:
    8998 
    8999 /* Line 1806 of yacc.c  */
    9000 #line 2769 "parser.yy"
    9001     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9002     break;
    9003 
    9004   case 728:
    9005 
    9006 /* Line 1806 of yacc.c  */
    9007 #line 2771 "parser.yy"
    9008     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9009     break;
    9010 
    9011   case 729:
    9012 
    9013 /* Line 1806 of yacc.c  */
    9014 #line 2773 "parser.yy"
    9015     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9016     break;
    9017 
    9018   case 730:
    9019 
    9020 /* Line 1806 of yacc.c  */
    9021 #line 2775 "parser.yy"
    9022     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9023     break;
    9024 
    9025   case 731:
    9026 
    9027 /* Line 1806 of yacc.c  */
    9028 #line 2780 "parser.yy"
    9029     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9030     break;
    9031 
    9032   case 732:
    9033 
    9034 /* Line 1806 of yacc.c  */
    9035 #line 2782 "parser.yy"
    9036     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9037     break;
    9038 
    9039   case 733:
    9040 
    9041 /* Line 1806 of yacc.c  */
    9042 #line 2787 "parser.yy"
    9043     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9044     break;
    9045 
    9046   case 734:
    9047 
    9048 /* Line 1806 of yacc.c  */
    9049 #line 2789 "parser.yy"
    9050     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9051     break;
    9052 
    9053   case 736:
    9054 
    9055 /* Line 1806 of yacc.c  */
    9056 #line 2816 "parser.yy"
    9057     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9058     break;
    9059 
    9060   case 740:
    9061 
    9062 /* Line 1806 of yacc.c  */
    9063 #line 2827 "parser.yy"
    9064     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9065     break;
    9066 
    9067   case 741:
    9068 
    9069 /* Line 1806 of yacc.c  */
    9070 #line 2829 "parser.yy"
    9071     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9072     break;
    9073 
    9074   case 742:
    9075 
    9076 /* Line 1806 of yacc.c  */
    9077 #line 2831 "parser.yy"
    9078     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9079     break;
    9080 
    9081   case 743:
    9082 
    9083 /* Line 1806 of yacc.c  */
    9084 #line 2833 "parser.yy"
    9085     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9086     break;
    9087 
    9088   case 744:
    9089 
    9090 /* Line 1806 of yacc.c  */
    9091 #line 2835 "parser.yy"
    9092     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9093     break;
    9094 
    9095   case 745:
    9096 
    9097 /* Line 1806 of yacc.c  */
    9098 #line 2837 "parser.yy"
    9099     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9100     break;
    9101 
    9102   case 746:
    9103 
    9104 /* Line 1806 of yacc.c  */
    9105 #line 2844 "parser.yy"
    9106     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9107     break;
    9108 
    9109   case 747:
    9110 
    9111 /* Line 1806 of yacc.c  */
    9112 #line 2846 "parser.yy"
    9113     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9114     break;
    9115 
    9116   case 748:
    9117 
    9118 /* Line 1806 of yacc.c  */
    9119 #line 2848 "parser.yy"
    9120     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9121     break;
    9122 
    9123   case 749:
    9124 
    9125 /* Line 1806 of yacc.c  */
    9126 #line 2850 "parser.yy"
    9127     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9128     break;
    9129 
    91309267  case 750:
    91319268
    91329269/* Line 1806 of yacc.c  */
    9133 #line 2852 "parser.yy"
    9134     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9270#line 2918 "parser.yy"
     9271    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91359272    break;
    91369273
     
    91389275
    91399276/* Line 1806 of yacc.c  */
    9140 #line 2854 "parser.yy"
    9141     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9277#line 2925 "parser.yy"
     9278    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91429279    break;
    91439280
     
    91459282
    91469283/* Line 1806 of yacc.c  */
    9147 #line 2859 "parser.yy"
    9148     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    9149     break;
    9150 
    9151   case 753:
    9152 
    9153 /* Line 1806 of yacc.c  */
    9154 #line 2866 "parser.yy"
     9284#line 2927 "parser.yy"
    91559285    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91569286    break;
    91579287
    9158   case 754:
    9159 
    9160 /* Line 1806 of yacc.c  */
    9161 #line 2868 "parser.yy"
    9162     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    9163     break;
    9164 
    9165   case 757:
    9166 
    9167 /* Line 1806 of yacc.c  */
    9168 #line 2892 "parser.yy"
     9288  case 755:
     9289
     9290/* Line 1806 of yacc.c  */
     9291#line 2951 "parser.yy"
    91699292    { (yyval.en) = nullptr; }
    91709293    break;
    91719294
    9172   case 758:
    9173 
    9174 /* Line 1806 of yacc.c  */
    9175 #line 2894 "parser.yy"
     9295  case 756:
     9296
     9297/* Line 1806 of yacc.c  */
     9298#line 2953 "parser.yy"
    91769299    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91779300    break;
     
    91809303
    91819304/* Line 1806 of yacc.c  */
    9182 #line 9183 "Parser/parser.cc"
     9305#line 9306 "Parser/parser.cc"
    91839306      default: break;
    91849307    }
     
    94119534
    94129535/* Line 2067 of yacc.c  */
    9413 #line 2897 "parser.yy"
     9536#line 2956 "parser.yy"
    94149537
    94159538// ----end of grammar----
  • src/Parser/parser.h

    rdbe8f244 rfe26fbf  
    272272
    273273/* Line 2068 of yacc.c  */
    274 #line 119 "parser.yy"
     274#line 139 "parser.yy"
    275275
    276276        Token tok;
    277         ParseNode *pn;
    278         ExpressionNode *en;
    279         DeclarationNode *decl;
     277        ParseNode * pn;
     278        ExpressionNode * en;
     279        DeclarationNode * decl;
    280280        DeclarationNode::Aggregate aggKey;
    281281        DeclarationNode::TypeClass tclass;
    282         StatementNode *sn;
    283         ConstantExpr *constant;
    284         ForCtl *fctl;
    285         LabelNode *label;
    286         InitializerNode *in;
     282        StatementNode * sn;
     283        ConstantExpr * constant;
     284        ForCtl * fctl;
     285        LabelNode * label;
     286        InitializerNode * in;
    287287        OperKinds op;
    288         std::string *str;
     288        std::string * str;
    289289        bool flag;
    290290
  • src/Parser/parser.yy

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jan 18 15:51:25 2017
    13 // Update Count     : 2135
     12// Last Modified On : Mon Feb  6 16:00:29 2017
     13// Update Count     : 2181
    1414//
    1515
     
    3232//
    3333// 1. designation with and without '=' (use ':' instead)
     34// 2. attributes not allowed in parenthesis of declarator
    3435//
    3536// All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for Cforall
     
    6566        to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
    6667} // appendStr
     68
     69DeclarationNode * distAttr( DeclarationNode * specifier, DeclarationNode * declList ) {
     70        // distribute declaration_specifier across all declared variables, e.g., static, const, __attribute__.
     71        DeclarationNode * cur = declList, * cl = (new DeclarationNode)->addType( specifier );
     72        //cur->addType( specifier );
     73        for ( cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ) ) {
     74                cl->cloneBaseType( cur );
     75        } // for
     76        declList->addType( cl );
     77//      delete cl;
     78        return declList;
     79} // distAttr
     80
     81void distExt( DeclarationNode * declaration ) {
     82        // distribute EXTENSION across all declarations
     83        for ( DeclarationNode *iter = declaration; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {
     84                iter->set_extension( true );
     85        } // for
     86} // distExt
    6787%}
    6888
     
    119139{
    120140        Token tok;
    121         ParseNode *pn;
    122         ExpressionNode *en;
    123         DeclarationNode *decl;
     141        ParseNode * pn;
     142        ExpressionNode * en;
     143        DeclarationNode * decl;
    124144        DeclarationNode::Aggregate aggKey;
    125145        DeclarationNode::TypeClass tclass;
    126         StatementNode *sn;
    127         ConstantExpr *constant;
    128         ForCtl *fctl;
    129         LabelNode *label;
    130         InitializerNode *in;
     146        StatementNode * sn;
     147        ConstantExpr * constant;
     148        ForCtl * fctl;
     149        LabelNode * label;
     150        InitializerNode * in;
    131151        OperKinds op;
    132         std::string *str;
     152        std::string * str;
    133153        bool flag;
    134154}
     
    152172%type<fctl> for_control_expression
    153173%type<en> subrange
    154 %type<constant> asm_name_opt
     174%type<decl> asm_name_opt
    155175%type<en> asm_operands_opt asm_operands_list asm_operand
    156176%type<label> label_list
     
    171191
    172192// declarations
    173 %type<decl> abstract_array abstract_declarator abstract_function abstract_parameter_array
    174 %type<decl> abstract_parameter_declaration abstract_parameter_declarator abstract_parameter_function
    175 %type<decl> abstract_parameter_ptr abstract_ptr
     193%type<decl> abstract_declarator abstract_ptr abstract_array abstract_function array_dimension multi_array_dimension
     194%type<decl> abstract_parameter_declarator abstract_parameter_ptr abstract_parameter_array abstract_parameter_function array_parameter_dimension array_parameter_1st_dimension
     195%type<decl> abstract_parameter_declaration
    176196
    177197%type<aggKey> aggregate_key
    178 %type<decl>  aggregate_name
    179 
    180 %type<decl> array_dimension array_parameter_1st_dimension array_parameter_dimension multi_array_dimension
     198%type<decl>  aggregate_type
    181199
    182200%type<decl> assertion assertion_list_opt
     
    191209%type<decl> declaration_specifier declarator declaring_list
    192210
    193 %type<decl> elaborated_type_name
    194 
    195 %type<decl> enumerator_list enum_name
     211%type<decl> elaborated_type
     212
     213%type<decl> enumerator_list enum_type
    196214%type<en> enumerator_value_opt
    197215
     
    206224%type<decl> identifier_parameter_ptr identifier_list
    207225
    208 %type<decl> new_abstract_array new_abstract_declarator_no_tuple new_abstract_declarator_tuple
    209 %type<decl> new_abstract_function new_abstract_parameter_declaration new_abstract_parameter_list
    210 %type<decl> new_abstract_ptr new_abstract_tuple
    211 
    212 %type<decl> new_array_parameter_1st_dimension
    213 
    214 %type<decl> new_trait_declaring_list new_declaration new_field_declaring_list
    215 %type<decl> new_function_declaration new_function_return new_function_specifier
    216 
    217 %type<decl> new_identifier_parameter_array new_identifier_parameter_declarator_no_tuple
    218 %type<decl> new_identifier_parameter_declarator_tuple new_identifier_parameter_ptr
    219 
    220 %type<decl> new_parameter_declaration new_parameter_list new_parameter_type_list new_parameter_type_list_opt
    221 
    222 %type<decl> new_typedef_declaration new_variable_declaration new_variable_specifier
    223 
    224 %type<decl> old_declaration old_declaration_list old_declaration_list_opt old_function_array
    225 %type<decl> old_function_declarator old_function_no_ptr old_function_ptr
     226%type<decl> cfa_abstract_array cfa_abstract_declarator_no_tuple cfa_abstract_declarator_tuple
     227%type<decl> cfa_abstract_function cfa_abstract_parameter_declaration cfa_abstract_parameter_list
     228%type<decl> cfa_abstract_ptr cfa_abstract_tuple
     229
     230%type<decl> cfa_array_parameter_1st_dimension
     231
     232%type<decl> cfa_trait_declaring_list cfa_declaration cfa_field_declaring_list
     233%type<decl> cfa_function_declaration cfa_function_return cfa_function_specifier
     234
     235%type<decl> cfa_identifier_parameter_array cfa_identifier_parameter_declarator_no_tuple
     236%type<decl> cfa_identifier_parameter_declarator_tuple cfa_identifier_parameter_ptr
     237
     238%type<decl> cfa_parameter_declaration cfa_parameter_list cfa_parameter_type_list cfa_parameter_type_list_opt
     239
     240%type<decl> cfa_typedef_declaration cfa_variable_declaration cfa_variable_specifier
     241
     242%type<decl> c_declaration
     243%type<decl> KR_function_declarator KR_function_no_ptr KR_function_ptr KR_function_array
     244%type<decl> KR_declaration_list KR_declaration_list_opt
    226245
    227246%type<decl> parameter_declaration parameter_list parameter_type_list
     
    237256%type<decl> type_declarator type_declarator_name type_declaring_list
    238257
    239 %type<decl> typedef type_array typedef_declaration typedef_declaration_specifier typedef_expression
    240 %type<decl> type_function type_parameter_array type_parameter_function type_parameter_ptr
    241 %type<decl> type_parameter_redeclarator type_ptr variable_type_redeclarator typedef_type_specifier
     258%type<decl> typedef typedef_type_specifier typedef_declaration typedef_declaration_specifier typedef_expression
     259
     260%type<decl> variable_type_redeclarator type_ptr type_array type_function
     261
     262%type<decl> type_parameter_redeclarator type_parameter_ptr type_parameter_array type_parameter_function
    242263%type<decl> typegen_declaration_specifier typegen_type_specifier typegen_name
    243264
     
    249270%type<decl> type_qualifier type_qualifier_name type_qualifier_list type_qualifier_list_opt type_specifier
    250271
    251 %type<decl> variable_abstract_array variable_abstract_declarator variable_abstract_function
    252 %type<decl> variable_abstract_ptr variable_array variable_declarator variable_function variable_ptr
     272%type<decl> variable_declarator variable_ptr variable_array variable_function
     273%type<decl> variable_abstract_declarator variable_abstract_ptr variable_abstract_array variable_abstract_function
    253274
    254275%type<decl> attribute_list_opt attribute_list attribute_name_list attribute attribute_name
     
    659680tuple:                                                                                                  // CFA, tuple
    660681                // CFA, one assignment_expression is factored out of comma_expression to eliminate a shift/reduce conflict with
    661                 // comma_expression in new_identifier_parameter_array and new_abstract_array
     682                // comma_expression in cfa_identifier_parameter_array and cfa_abstract_array
    662683//      '[' ']'
    663684//              { $$ = new ExpressionNode( build_tuple() ); }
     
    723744          push push
    724745          local_label_declaration_opt                                           // GCC, local labels
    725           block_item_list pop '}'                                                       // C99, intermix declarations and statements
     746          block_item_list                                                                       // C99, intermix declarations and statements
     747          pop '}'
    726748                { $$ = new StatementNode( build_compound( $5 ) ); }
    727749        ;
     
    737759                { $$ = new StatementNode( $1 ); }
    738760        | EXTENSION declaration                                                         // GCC
    739                 {       // mark all fields in list
    740                         for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    741                                 iter->set_extension( true );
     761                {
     762                        distExt( $2 );
    742763                        $$ = new StatementNode( $2 );
    743764                }
    744765        | function_definition
    745766                { $$ = new StatementNode( $1 ); }
     767        | EXTENSION function_definition                                         // GCC
     768                {
     769                        distExt( $2 );
     770                        $$ = new StatementNode( $2 );
     771                }
    746772        | statement pop
    747773        ;
     
    960986        | type_specifier variable_abstract_declarator
    961987                { $$ = $2->addType( $1 ); }
    962         | new_abstract_declarator_tuple no_attr_identifier      // CFA
     988        | cfa_abstract_declarator_tuple no_attr_identifier      // CFA
    963989                {
    964990                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    965991                        $$ = $1->addName( $2 );
    966992                }
    967         | new_abstract_declarator_tuple                                         // CFA
     993        | cfa_abstract_declarator_tuple                                         // CFA
    968994        ;
    969995
     
    10441070        ;
    10451071
    1046 old_declaration_list_opt:                                                               // used to declare parameter types in K&R style functions
     1072KR_declaration_list_opt:                                                                // used to declare parameter types in K&R style functions
    10471073        pop
    10481074                { $$ = nullptr; }
    1049         | old_declaration_list
    1050         ;
    1051 
    1052 old_declaration_list:
    1053         old_declaration
    1054         | old_declaration_list push old_declaration
     1075        | KR_declaration_list
     1076        ;
     1077
     1078KR_declaration_list:
     1079        c_declaration
     1080        | KR_declaration_list push c_declaration
    10551081                { $$ = $1->appendList( $3 ); }
    10561082        ;
     
    10721098
    10731099declaration:                                                                                    // CFA, new & old style declarations
    1074         new_declaration
    1075         | old_declaration
     1100        cfa_declaration
     1101        | c_declaration
    10761102        ;
    10771103
     
    10871113//              [10] * char y;          char *y[10];    // array of 10 pointers to char
    10881114
    1089 new_declaration:                                                                                // CFA
    1090         new_variable_declaration pop ';'
    1091         | new_typedef_declaration pop ';'
    1092         | new_function_declaration pop ';'
     1115cfa_declaration:                                                                                // CFA
     1116        cfa_variable_declaration pop ';'
     1117        | cfa_typedef_declaration pop ';'
     1118        | cfa_function_declaration pop ';'
    10931119        | type_declaring_list pop ';'
    10941120        | trait_specifier pop ';'
    10951121        ;
    10961122
    1097 new_variable_declaration:                                                               // CFA
    1098         new_variable_specifier initializer_opt
     1123cfa_variable_declaration:                                                               // CFA
     1124        cfa_variable_specifier initializer_opt
    10991125                {
    11001126                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    11011127                        $$ = $1->addInitializer( $2 );
    11021128                }
    1103         | declaration_qualifier_list new_variable_specifier initializer_opt
     1129        | declaration_qualifier_list cfa_variable_specifier initializer_opt
    11041130                // declaration_qualifier_list also includes type_qualifier_list, so a semantic check is necessary to preclude
    11051131                // them as a type_qualifier cannot appear in that context.
     
    11081134                        $$ = $2->addQualifiers( $1 )->addInitializer( $3 );;
    11091135                }
    1110         | new_variable_declaration pop ',' push identifier_or_type_name initializer_opt
     1136        | cfa_variable_declaration pop ',' push identifier_or_type_name initializer_opt
    11111137                {
    11121138                        typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
     
    11151141        ;
    11161142
    1117 new_variable_specifier:                                                                 // CFA
     1143cfa_variable_specifier:                                                                 // CFA
    11181144                // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
    11191145                // storage-class
    1120         new_abstract_declarator_no_tuple identifier_or_type_name asm_name_opt
     1146        cfa_abstract_declarator_no_tuple identifier_or_type_name asm_name_opt
    11211147                {
    11221148                        typedefTable.setNextIdentifier( *$2 );
    11231149                        $$ = $1->addName( $2 )->addAsmName( $3 );
    11241150                }
    1125         | new_abstract_tuple identifier_or_type_name asm_name_opt
     1151        | cfa_abstract_tuple identifier_or_type_name asm_name_opt
    11261152                {
    11271153                        typedefTable.setNextIdentifier( *$2 );
    11281154                        $$ = $1->addName( $2 )->addAsmName( $3 );
    11291155                }
    1130         | type_qualifier_list new_abstract_tuple identifier_or_type_name asm_name_opt
     1156        | type_qualifier_list cfa_abstract_tuple identifier_or_type_name asm_name_opt
    11311157                {
    11321158                        typedefTable.setNextIdentifier( *$3 );
     
    11351161        ;
    11361162
    1137 new_function_declaration:                                                               // CFA
    1138         new_function_specifier
     1163cfa_function_declaration:                                                               // CFA
     1164        cfa_function_specifier
    11391165                {
    11401166                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    11411167                        $$ = $1;
    11421168                }
    1143         | type_qualifier_list new_function_specifier
     1169        | type_qualifier_list cfa_function_specifier
    11441170                {
    11451171                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    11461172                        $$ = $2->addQualifiers( $1 );
    11471173                }
    1148         | declaration_qualifier_list new_function_specifier
     1174        | declaration_qualifier_list cfa_function_specifier
    11491175                {
    11501176                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    11511177                        $$ = $2->addQualifiers( $1 );
    11521178                }
    1153         | declaration_qualifier_list type_qualifier_list new_function_specifier
     1179        | declaration_qualifier_list type_qualifier_list cfa_function_specifier
    11541180                {
    11551181                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    11561182                        $$ = $3->addQualifiers( $1 )->addQualifiers( $2 );
    11571183                }
    1158         | new_function_declaration pop ',' push identifier_or_type_name
     1184        | cfa_function_declaration pop ',' push identifier_or_type_name
    11591185                {
    11601186                        typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
     
    11631189        ;
    11641190
    1165 new_function_specifier:                                                                 // CFA
    1166 //      '[' ']' identifier_or_type_name '(' push new_parameter_type_list_opt pop ')' // S/R conflict
     1191cfa_function_specifier:                                                                 // CFA
     1192//      '[' ']' identifier_or_type_name '(' push cfa_parameter_type_list_opt pop ')' // S/R conflict
    11671193//              {
    11681194//                      $$ = DeclarationNode::newFunction( $3, DeclarationNode::newTuple( 0 ), $6, 0, true );
    11691195//              }
    1170 //      '[' ']' identifier '(' push new_parameter_type_list_opt pop ')'
     1196//      '[' ']' identifier '(' push cfa_parameter_type_list_opt pop ')'
    11711197//              {
    11721198//                      typedefTable.setNextIdentifier( *$5 );
    11731199//                      $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
    11741200//              }
    1175 //      | '[' ']' TYPEDEFname '(' push new_parameter_type_list_opt pop ')'
     1201//      | '[' ']' TYPEDEFname '(' push cfa_parameter_type_list_opt pop ')'
    11761202//              {
    11771203//                      typedefTable.setNextIdentifier( *$5 );
     
    11811207                // identifier_or_type_name must be broken apart because of the sequence:
    11821208                //
    1183                 //   '[' ']' identifier_or_type_name '(' new_parameter_type_list_opt ')'
     1209                //   '[' ']' identifier_or_type_name '(' cfa_parameter_type_list_opt ')'
    11841210                //   '[' ']' type_specifier
    11851211                //
    11861212                // type_specifier can resolve to just TYPEDEFname (e.g., typedef int T; int f( T );). Therefore this must be
    11871213                // flattened to allow lookahead to the '(' without having to reduce identifier_or_type_name.
    1188         new_abstract_tuple identifier_or_type_name '(' push new_parameter_type_list_opt pop ')'
    1189                 // To obtain LR(1 ), this rule must be factored out from function return type (see new_abstract_declarator).
     1214        cfa_abstract_tuple identifier_or_type_name '(' push cfa_parameter_type_list_opt pop ')'
     1215                // To obtain LR(1 ), this rule must be factored out from function return type (see cfa_abstract_declarator).
    11901216                {
    11911217                        $$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
    11921218                }
    1193         | new_function_return identifier_or_type_name '(' push new_parameter_type_list_opt pop ')'
     1219        | cfa_function_return identifier_or_type_name '(' push cfa_parameter_type_list_opt pop ')'
    11941220                {
    11951221                        $$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
     
    11971223        ;
    11981224
    1199 new_function_return:                                                                    // CFA
    1200         '[' push new_parameter_list pop ']'
     1225cfa_function_return:                                                                    // CFA
     1226        '[' push cfa_parameter_list pop ']'
    12011227                { $$ = DeclarationNode::newTuple( $3 ); }
    1202         | '[' push new_parameter_list pop ',' push new_abstract_parameter_list pop ']'
    1203                 // To obtain LR(1 ), the last new_abstract_parameter_list is added into this flattened rule to lookahead to the
     1228        | '[' push cfa_parameter_list pop ',' push cfa_abstract_parameter_list pop ']'
     1229                // To obtain LR(1 ), the last cfa_abstract_parameter_list is added into this flattened rule to lookahead to the
    12041230                // ']'.
    12051231                { $$ = DeclarationNode::newTuple( $3->appendList( $7 ) ); }
    12061232        ;
    12071233
    1208 new_typedef_declaration:                                                                // CFA
    1209         TYPEDEF new_variable_specifier
     1234cfa_typedef_declaration:                                                                // CFA
     1235        TYPEDEF cfa_variable_specifier
    12101236                {
    12111237                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    12121238                        $$ = $2->addTypedef();
    12131239                }
    1214         | TYPEDEF new_function_specifier
     1240        | TYPEDEF cfa_function_specifier
    12151241                {
    12161242                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    12171243                        $$ = $2->addTypedef();
    12181244                }
    1219         | new_typedef_declaration pop ',' push no_attr_identifier
     1245        | cfa_typedef_declaration pop ',' push no_attr_identifier
    12201246                {
    12211247                        typedefTable.addToEnclosingScope( *$5, TypedefTable::TD );
     
    12601286                {
    12611287                        typedefTable.addToEnclosingScope( *$2, TypedefTable::TD );
    1262                         $$ = DeclarationNode::newName( 0 ); // XXX
     1288                        $$ = DeclarationNode::newName( 0 );                     // unimplemented
    12631289                }
    12641290        | typedef_expression pop ',' push no_attr_identifier '=' assignment_expression
    12651291                {
    12661292                        typedefTable.addToEnclosingScope( *$5, TypedefTable::TD );
    1267                         $$ = DeclarationNode::newName( 0 ); // XXX
    1268                 }
    1269         ;
    1270 
    1271 old_declaration:
    1272         declaring_list pop ';'
     1293                        $$ = DeclarationNode::newName( 0 );                     // unimplemented
     1294                }
     1295        ;
     1296
     1297//c_declaration:
     1298//      declaring_list pop ';'
     1299//      | typedef_declaration pop ';'
     1300//      | typedef_expression pop ';'                                            // GCC, naming expression type
     1301//      | sue_declaration_specifier pop ';'
     1302//      ;
     1303//
     1304//declaring_list:
     1305//              // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
     1306//              // storage-class
     1307//       declarator asm_name_opt initializer_opt
     1308//              {
     1309//                      typedefTable.addToEnclosingScope( TypedefTable::ID );
     1310//                      $$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
     1311//              }
     1312//      | declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
     1313//              {
     1314//                      typedefTable.addToEnclosingScope( TypedefTable::ID );
     1315//                      $$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
     1316//              }
     1317//      ;
     1318
     1319c_declaration:
     1320        declaration_specifier declaring_list pop ';'
     1321                {
     1322                        $$ = distAttr( $1, $2 );
     1323                }
    12731324        | typedef_declaration pop ';'
    12741325        | typedef_expression pop ';'                                            // GCC, naming expression type
     
    12791330                // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
    12801331                // storage-class
    1281         declaration_specifier declarator asm_name_opt initializer_opt
     1332        declarator asm_name_opt initializer_opt
    12821333                {
    12831334                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1284                         $$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
     1335                        $$ = $1->addAsmName( $2 )->addInitializer( $3 );
    12851336                }
    12861337        | declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
    12871338                {
    12881339                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1289                         $$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
     1340                        $$ = $1->appendList( $4->addQualifiers( $3 )->addAsmName( $5 )->addInitializer( $6 ) );
    12901341                }
    12911342        ;
     
    14741525
    14751526sue_type_specifier:
    1476         elaborated_type_name                                                            // struct, union, enum
    1477         | type_qualifier_list elaborated_type_name
     1527        elaborated_type                                                                         // struct, union, enum
     1528        | type_qualifier_list elaborated_type
    14781529                { $$ = $2->addQualifiers( $1 ); }
    14791530        | sue_type_specifier type_qualifier
     
    15001551        ;
    15011552
    1502 elaborated_type_name:
    1503         aggregate_name
    1504         | enum_name
    1505         ;
    1506 
    1507 aggregate_name:
    1508         aggregate_key '{' field_declaration_list '}'
    1509                 { $$ = DeclarationNode::newAggregate( $1, nullptr, nullptr, $3, true ); }
    1510         | aggregate_key no_attr_identifier_or_type_name
    1511                 {
    1512                         typedefTable.makeTypedef( *$2 );
    1513                         $$ = DeclarationNode::newAggregate( $1, $2, nullptr, nullptr, false );
    1514                 }
    1515         | aggregate_key no_attr_identifier_or_type_name
    1516                 { typedefTable.makeTypedef( *$2 ); }
    1517                 '{' field_declaration_list '}'
    1518                 { $$ = DeclarationNode::newAggregate( $1, $2, nullptr, $5, true ); }
    1519         | aggregate_key '(' type_name_list ')' '{' field_declaration_list '}' // CFA
    1520                 { $$ = DeclarationNode::newAggregate( $1, nullptr, $3, $6, false ); }
    1521         | aggregate_key typegen_name                                            // CFA, S/R conflict
    1522                 { $$ = $2; }
     1553elaborated_type:
     1554        aggregate_type
     1555        | enum_type
     1556        ;
     1557
     1558aggregate_type:
     1559        aggregate_key attribute_list_opt '{' field_declaration_list '}'
     1560                { $$ = DeclarationNode::newAggregate( $1, nullptr, nullptr, $4, true )->addQualifiers( $2 ); }
     1561        | aggregate_key attribute_list_opt no_attr_identifier_or_type_name
     1562                {
     1563                        typedefTable.makeTypedef( *$3 );
     1564                        $$ = DeclarationNode::newAggregate( $1, $3, nullptr, nullptr, false )->addQualifiers( $2 );
     1565                }
     1566        | aggregate_key attribute_list_opt no_attr_identifier_or_type_name
     1567                { typedefTable.makeTypedef( *$3 ); }
     1568          '{' field_declaration_list '}'
     1569                { $$ = DeclarationNode::newAggregate( $1, $3, nullptr, $6, true )->addQualifiers( $2 ); }
     1570        | aggregate_key attribute_list_opt '(' type_name_list ')' '{' field_declaration_list '}' // CFA
     1571                { $$ = DeclarationNode::newAggregate( $1, nullptr, $4, $7, false )->addQualifiers( $2 ); }
     1572        | aggregate_key attribute_list_opt typegen_name         // CFA, S/R conflict
     1573                { $$ = $3->addQualifiers( $2 ); }
    15231574        ;
    15241575
    15251576aggregate_key:
    1526         STRUCT attribute_list_opt
     1577        STRUCT
    15271578                { $$ = DeclarationNode::Struct; }
    1528         | UNION attribute_list_opt
     1579        | UNION
    15291580                { $$ = DeclarationNode::Union; }
    15301581        ;
     
    15381589
    15391590field_declaration:
    1540         new_field_declaring_list ';'                                            // CFA, new style field declaration
    1541         | EXTENSION new_field_declaring_list ';'                        // GCC
    1542                 { $$ = $2->set_extension( true ); }
    1543         | field_declaring_list ';'
    1544         | EXTENSION field_declaring_list ';'                            // GCC
    1545                 {       // mark all fields in list
    1546                         for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    1547                                 iter->set_extension( true );
     1591        cfa_field_declaring_list ';'                                            // CFA, new style field declaration
     1592        | EXTENSION cfa_field_declaring_list ';'                        // GCC
     1593                {
     1594                        distExt( $2 );                                                          // mark all fields in list
    15481595                        $$ = $2;
    15491596                }
    1550         ;
    1551 
    1552 new_field_declaring_list:                                                               // CFA, new style field declaration
    1553         new_abstract_declarator_tuple                                           // CFA, no field name
    1554         | new_abstract_declarator_tuple no_attr_identifier_or_type_name
     1597        | type_specifier field_declaring_list ';'
     1598                {
     1599                        $$ = distAttr( $1, $2 ); }
     1600        | EXTENSION type_specifier field_declaring_list ';'     // GCC
     1601                {
     1602                        distExt( $3 );                                                          // mark all fields in list
     1603                        $$ = distAttr( $2, $3 );
     1604                }
     1605        ;
     1606
     1607cfa_field_declaring_list:                                                               // CFA, new style field declaration
     1608        cfa_abstract_declarator_tuple                                           // CFA, no field name
     1609        | cfa_abstract_declarator_tuple no_attr_identifier_or_type_name
    15551610                { $$ = $1->addName( $2 ); }
    1556         | new_field_declaring_list ',' no_attr_identifier_or_type_name
     1611        | cfa_field_declaring_list ',' no_attr_identifier_or_type_name
    15571612                { $$ = $1->appendList( $1->cloneType( $3 ) ); }
    1558         | new_field_declaring_list ','                                          // CFA, no field name
     1613        | cfa_field_declaring_list ','                                          // CFA, no field name
    15591614                { $$ = $1->appendList( $1->cloneType( 0 ) ); }
    15601615        ;
    15611616
    15621617field_declaring_list:
    1563         type_specifier field_declarator
    1564                 { $$ = $2->addType( $1 ); }
     1618        field_declarator
    15651619        | field_declaring_list ',' attribute_list_opt field_declarator
    1566                 { $$ = $1->appendList( $1->cloneBaseType( $4 ) ); }
     1620                { $$ = $1->appendList( $4->addQualifiers( $3 ) ); }
    15671621        ;
    15681622
     
    15931647        ;
    15941648
    1595 enum_key:
    1596         ENUM attribute_list_opt
    1597         ;
    1598 
    1599 enum_name:
    1600         enum_key '{' enumerator_list comma_opt '}'
    1601                 { $$ = DeclarationNode::newEnum( nullptr, $3 ); }
    1602         | enum_key no_attr_identifier_or_type_name
    1603                 {
    1604                         typedefTable.makeTypedef( *$2 );
    1605                         $$ = DeclarationNode::newEnum( $2, 0 );
    1606                 }
    1607         | enum_key no_attr_identifier_or_type_name
    1608                 { typedefTable.makeTypedef( *$2 ); }
    1609                 '{' enumerator_list comma_opt '}'
    1610                 { $$ = DeclarationNode::newEnum( $2, $5 ); }
     1649enum_type:
     1650        ENUM attribute_list_opt '{' enumerator_list comma_opt '}'
     1651                { $$ = DeclarationNode::newEnum( nullptr, $4 )->addQualifiers( $2 ); }
     1652        | ENUM attribute_list_opt no_attr_identifier_or_type_name
     1653                {
     1654                        typedefTable.makeTypedef( *$3 );
     1655                        $$ = DeclarationNode::newEnum( $3, 0 )->addQualifiers( $2 );
     1656                }
     1657        | ENUM attribute_list_opt no_attr_identifier_or_type_name
     1658                { typedefTable.makeTypedef( *$3 ); }
     1659          '{' enumerator_list comma_opt '}'
     1660                { $$ = DeclarationNode::newEnum( $3, $6 )->addQualifiers( $2 ); }
    16111661        ;
    16121662
     
    16271677// Minimum of one parameter after which ellipsis is allowed only at the end.
    16281678
    1629 new_parameter_type_list_opt:                                                    // CFA
     1679cfa_parameter_type_list_opt:                                                    // CFA
    16301680        // empty
    16311681                { $$ = nullptr; }
    1632         | new_parameter_type_list
    1633         ;
    1634 
    1635 new_parameter_type_list:                                                                // CFA, abstract + real
    1636         new_abstract_parameter_list
    1637         | new_parameter_list
    1638         | new_parameter_list pop ',' push new_abstract_parameter_list
     1682        | cfa_parameter_type_list
     1683        ;
     1684
     1685cfa_parameter_type_list:                                                                // CFA, abstract + real
     1686        cfa_abstract_parameter_list
     1687        | cfa_parameter_list
     1688        | cfa_parameter_list pop ',' push cfa_abstract_parameter_list
    16391689                { $$ = $1->appendList( $5 ); }
    1640         | new_abstract_parameter_list pop ',' push ELLIPSIS
     1690        | cfa_abstract_parameter_list pop ',' push ELLIPSIS
    16411691                { $$ = $1->addVarArgs(); }
    1642         | new_parameter_list pop ',' push ELLIPSIS
     1692        | cfa_parameter_list pop ',' push ELLIPSIS
    16431693                { $$ = $1->addVarArgs(); }
    16441694        ;
    16451695
    1646 new_parameter_list:                                                                             // CFA
    1647                 // To obtain LR(1) between new_parameter_list and new_abstract_tuple, the last new_abstract_parameter_list is
    1648                 // factored out from new_parameter_list, flattening the rules to get lookahead to the ']'.
    1649         new_parameter_declaration
    1650         | new_abstract_parameter_list pop ',' push new_parameter_declaration
     1696cfa_parameter_list:                                                                             // CFA
     1697                // To obtain LR(1) between cfa_parameter_list and cfa_abstract_tuple, the last cfa_abstract_parameter_list is
     1698                // factored out from cfa_parameter_list, flattening the rules to get lookahead to the ']'.
     1699        cfa_parameter_declaration
     1700        | cfa_abstract_parameter_list pop ',' push cfa_parameter_declaration
    16511701                { $$ = $1->appendList( $5 ); }
    1652         | new_parameter_list pop ',' push new_parameter_declaration
     1702        | cfa_parameter_list pop ',' push cfa_parameter_declaration
    16531703                { $$ = $1->appendList( $5 ); }
    1654         | new_parameter_list pop ',' push new_abstract_parameter_list pop ',' push new_parameter_declaration
     1704        | cfa_parameter_list pop ',' push cfa_abstract_parameter_list pop ',' push cfa_parameter_declaration
    16551705                { $$ = $1->appendList( $5 )->appendList( $9 ); }
    16561706        ;
    16571707
    1658 new_abstract_parameter_list:                                                    // CFA, new & old style abstract
    1659         new_abstract_parameter_declaration
    1660         | new_abstract_parameter_list pop ',' push new_abstract_parameter_declaration
     1708cfa_abstract_parameter_list:                                                    // CFA, new & old style abstract
     1709        cfa_abstract_parameter_declaration
     1710        | cfa_abstract_parameter_list pop ',' push cfa_abstract_parameter_declaration
    16611711                { $$ = $1->appendList( $5 ); }
    16621712        ;
     
    16861736// for typedef name by using type_parameter_redeclarator instead of typedef_redeclarator, and function prototypes.
    16871737
    1688 new_parameter_declaration:                                                              // CFA, new & old style parameter declaration
     1738cfa_parameter_declaration:                                                              // CFA, new & old style parameter declaration
    16891739        parameter_declaration
    1690         | new_identifier_parameter_declarator_no_tuple identifier_or_type_name assignment_opt
     1740        | cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name assignment_opt
    16911741                { $$ = $1->addName( $2 ); }
    1692         | new_abstract_tuple identifier_or_type_name assignment_opt
    1693                 // To obtain LR(1), these rules must be duplicated here (see new_abstract_declarator).
     1742        | cfa_abstract_tuple identifier_or_type_name assignment_opt
     1743                // To obtain LR(1), these rules must be duplicated here (see cfa_abstract_declarator).
    16941744                { $$ = $1->addName( $2 ); }
    1695         | type_qualifier_list new_abstract_tuple identifier_or_type_name assignment_opt
     1745        | type_qualifier_list cfa_abstract_tuple identifier_or_type_name assignment_opt
    16961746                { $$ = $2->addName( $3 )->addQualifiers( $1 ); }
    1697         | new_function_specifier
    1698         ;
    1699 
    1700 new_abstract_parameter_declaration:                                             // CFA, new & old style parameter declaration
     1747        | cfa_function_specifier
     1748        ;
     1749
     1750cfa_abstract_parameter_declaration:                                             // CFA, new & old style parameter declaration
    17011751        abstract_parameter_declaration
    1702         | new_identifier_parameter_declarator_no_tuple
    1703         | new_abstract_tuple
    1704                 // To obtain LR(1), these rules must be duplicated here (see new_abstract_declarator).
    1705         | type_qualifier_list new_abstract_tuple
     1752        | cfa_identifier_parameter_declarator_no_tuple
     1753        | cfa_abstract_tuple
     1754                // To obtain LR(1), these rules must be duplicated here (see cfa_abstract_declarator).
     1755        | type_qualifier_list cfa_abstract_tuple
    17061756                { $$ = $2->addQualifiers( $1 ); }
    1707         | new_abstract_function
     1757        | cfa_abstract_function
    17081758        ;
    17091759
     
    17571807
    17581808type_name_no_function:                                                                  // sizeof, alignof, cast (constructor)
    1759         new_abstract_declarator_tuple                                           // CFA
    1760         | type_specifier
    1761         | type_specifier variable_abstract_declarator
    1762                 { $$ = $2->addType( $1 ); }
    1763         ;
    1764 
    1765 type_name:                                                                                              // typeof, assertion
    1766         new_abstract_declarator_tuple                                           // CFA
    1767         | new_abstract_function                                                         // CFA
     1809        cfa_abstract_declarator_tuple                                           // CFA
    17681810        | type_specifier
    17691811        | type_specifier abstract_declarator
    17701812                { $$ = $2->addType( $1 ); }
     1813        ;
     1814
     1815type_name:                                                                                              // typeof, assertion
     1816        type_name_no_function
     1817        | cfa_abstract_function                                                         // CFA
    17711818        ;
    17721819
     
    19822029
    19832030trait_declaration:                                                                      // CFA
    1984         new_trait_declaring_list pop ';'
     2031        cfa_trait_declaring_list pop ';'
    19852032        | trait_declaring_list pop ';'
    19862033        ;
    19872034
    1988 new_trait_declaring_list:                                                               // CFA
    1989         new_variable_specifier
     2035cfa_trait_declaring_list:                                                               // CFA
     2036        cfa_variable_specifier
    19902037                {
    19912038                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    19922039                        $$ = $1;
    19932040                }
    1994         | new_function_specifier
     2041        | cfa_function_specifier
    19952042                {
    19962043                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    19972044                        $$ = $1;
    19982045                }
    1999         | new_trait_declaring_list pop ',' push identifier_or_type_name
     2046        | cfa_trait_declaring_list pop ',' push identifier_or_type_name
    20002047                {
    20012048                        typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
     
    20432090        | asm_statement                                                                         // GCC, global assembler statement
    20442091                {}
    2045         | EXTERN STRINGliteral
     2092        | EXTERN STRINGliteral                                                          // C++-style linkage specifier
    20462093                {
    20472094                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    20482095                        linkage = LinkageSpec::linkageCheck( $2 );
    20492096                }
    2050           '{' external_definition_list_opt '}'                          // C++-style linkage specifier
     2097          '{' external_definition_list_opt '}'
    20512098                {
    20522099                        linkage = linkageStack.top();
     
    20542101                        $$ = $5;
    20552102                }
    2056         | EXTENSION external_definition
    2057                 {       // mark all fields in list
    2058                         for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    2059                                 iter->set_extension( true );
     2103        | EXTENSION external_definition                                         // GCC, multiple __extension__ allowed, meaning unknown
     2104                {
     2105                        distExt( $2 );                                                          // mark all fields in list
    20602106                        $$ = $2;
    20612107                }
     
    20752121                        $$ = $1->addFunctionBody( $2 );
    20762122                }
    2077         | old_function_declarator push old_declaration_list_opt compound_statement
     2123        | KR_function_declarator push KR_declaration_list_opt compound_statement
    20782124                {
    20792125                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    20842130
    20852131function_definition:
    2086         new_function_declaration compound_statement                     // CFA
     2132        cfa_function_declaration compound_statement                     // CFA
    20872133                {
    20882134                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    21162162
    21172163                // Old-style K&R function definition, OBSOLESCENT (see 4)
    2118         | declaration_specifier old_function_declarator push old_declaration_list_opt compound_statement
     2164        | declaration_specifier KR_function_declarator push KR_declaration_list_opt compound_statement
    21192165                {
    21202166                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    21222168                        $$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addType( $1 );
    21232169                }
    2124         | type_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
     2170        | type_qualifier_list KR_function_declarator push KR_declaration_list_opt compound_statement
    21252171                {
    21262172                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    21302176
    21312177                // Old-style K&R function definition with "implicit int" type_specifier, OBSOLESCENT (see 4)
    2132         | declaration_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
     2178        | declaration_qualifier_list KR_function_declarator push KR_declaration_list_opt compound_statement
    21332179                {
    21342180                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    21362182                        $$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addQualifiers( $1 );
    21372183                }
    2138         | declaration_qualifier_list type_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
     2184        | declaration_qualifier_list type_qualifier_list KR_function_declarator push KR_declaration_list_opt compound_statement
    21392185                {
    21402186                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    21592205                { $$ = nullptr; }
    21602206        | ASM '(' string_literal ')' attribute_list_opt
    2161                 { $$ = $3; }
     2207                {
     2208                        DeclarationNode * name = new DeclarationNode();
     2209                        name->asmName = $3;
     2210                        $$ = name->addQualifiers( $5 );
     2211                }
    21622212        ;
    21632213
     
    21822232        attribute_name
    21832233        | attribute_name_list ',' attribute_name
    2184                 { $$ = $1->addQualifiers( $3 ); }
     2234                { $$ = $3->addQualifiers( $1 ); }
    21852235        ;
    21862236
     
    22572307        | ptrref_operator type_qualifier_list variable_declarator
    22582308                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2259         | '(' variable_ptr ')'
    2260                 { $$ = $2; }
     2309        | '(' variable_ptr ')' attribute_list_opt
     2310                { $$ = $2->addQualifiers( $4 ); }                               // redundant parenthesis
    22612311        ;
    22622312
     
    23182368        ;
    23192369
    2320 // This pattern parses an old-style K&R function declarator (OBSOLESCENT, see 4) that is not redefining a typedef name
    2321 // (see function_declarator for additional comments). The pattern precludes returning arrays and functions versus
    2322 // pointers to arrays and functions.
    2323 
    2324 old_function_declarator:
    2325         old_function_no_ptr
    2326         | old_function_ptr
    2327         | old_function_array
    2328         ;
    2329 
    2330 old_function_no_ptr:
     2370// This pattern parses an old-style K&R function declarator (OBSOLESCENT, see 4)
     2371//
     2372//   f( a, b, c ) int a, *b, c[]; {}
     2373//
     2374// that is not redefining a typedef name (see function_declarator for additional comments). The pattern precludes
     2375// returning arrays and functions versus pointers to arrays and functions.
     2376
     2377KR_function_declarator:
     2378        KR_function_no_ptr
     2379        | KR_function_ptr
     2380        | KR_function_array
     2381        ;
     2382
     2383KR_function_no_ptr:
    23312384        paren_identifier '(' identifier_list ')'                        // function_declarator handles empty parameter
    23322385                { $$ = $1->addIdList( $3 ); }
    2333         | '(' old_function_ptr ')' '(' identifier_list ')'
    2334                 { $$ = $2->addIdList( $5 ); }
    2335         | '(' old_function_no_ptr ')'                                           // redundant parenthesis
     2386        | '(' KR_function_ptr ')' '(' push parameter_type_list_opt pop ')'
     2387                { $$ = $2->addParamList( $6 ); }
     2388        | '(' KR_function_no_ptr ')'                                            // redundant parenthesis
    23362389                { $$ = $2; }
    23372390        ;
    23382391
    2339 old_function_ptr:
    2340         ptrref_operator old_function_declarator
     2392KR_function_ptr:
     2393        ptrref_operator KR_function_declarator
    23412394                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2342         | ptrref_operator type_qualifier_list old_function_declarator
     2395        | ptrref_operator type_qualifier_list KR_function_declarator
    23432396                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2344         | '(' old_function_ptr ')'
     2397        | '(' KR_function_ptr ')'
    23452398                { $$ = $2; }
    23462399        ;
    23472400
    2348 old_function_array:
    2349         '(' old_function_ptr ')' array_dimension
     2401KR_function_array:
     2402        '(' KR_function_ptr ')' array_dimension
    23502403                { $$ = $2->addArray( $4 ); }
    2351         | '(' old_function_array ')' multi_array_dimension      // redundant parenthesis
     2404        | '(' KR_function_array ')' multi_array_dimension       // redundant parenthesis
    23522405                { $$ = $2->addArray( $4 ); }
    2353         | '(' old_function_array ')'                                            // redundant parenthesis
     2406        | '(' KR_function_array ')'                                                     // redundant parenthesis
    23542407                { $$ = $2; }
    23552408        ;
     
    23862439        | ptrref_operator type_qualifier_list variable_type_redeclarator
    23872440                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2388         | '(' type_ptr ')'
    2389                 { $$ = $2; }
     2441        | '(' type_ptr ')' attribute_list_opt
     2442                { $$ = $2->addQualifiers( $4 ); }
    23902443        ;
    23912444
     
    24102463        ;
    24112464
    2412 // This pattern parses a declaration for a parameter variable or function prototype that is not redefining a typedef
    2413 // name and allows the C99 array options, which can only appear in a parameter list.  The pattern precludes declaring an
    2414 // array of functions versus a pointer to an array of functions, and returning arrays and functions versus pointers to
    2415 // arrays and functions.
     2465// This pattern parses a declaration for a parameter variable of a function prototype or actual that is not redefining a
     2466// typedef name and allows the C99 array options, which can only appear in a parameter list.  The pattern precludes
     2467// declaring an array of functions versus a pointer to an array of functions, and returning arrays and functions versus
     2468// pointers to arrays and functions.
    24162469
    24172470identifier_parameter_declarator:
     
    24302483        | ptrref_operator type_qualifier_list identifier_parameter_declarator
    24312484                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2432         | '(' identifier_parameter_ptr ')'
    2433                 { $$ = $2; }
     2485        | '(' identifier_parameter_ptr ')' attribute_list_opt
     2486                { $$ = $2->addQualifiers( $4 ); }
    24342487        ;
    24352488
     
    24602513//              int f( int foo ); // redefine typedef name in new scope
    24612514//
    2462 // and allows the C99 array options, which can only appear in a parameter list.  In addition, the pattern handles the
    2463 // special meaning of parenthesis around a typedef name:
    2464 //
    2465 //              ISO/IEC 9899:1999 Section 6.7.5.3(11) : "In a parameter declaration, a single typedef name in
    2466 //              parentheses is taken to be an abstract declarator that specifies a function with a single parameter,
    2467 //              not as redundant parentheses around the identifier."
    2468 //
    2469 // For example:
    2470 //
    2471 //              typedef float T;
    2472 //              int f( int ( T [5] ) );                                 // see abstract_parameter_declarator
    2473 //              int g( int ( T ( int ) ) );                             // see abstract_parameter_declarator
    2474 //              int f( int f1( T a[5] ) );                              // see identifier_parameter_declarator
    2475 //              int g( int g1( T g2( int p ) ) );               // see identifier_parameter_declarator
    2476 //
    2477 // In essence, a '(' immediately to the left of typedef name, T, is interpreted as starting a parameter type list, and
    2478 // not as redundant parentheses around a redeclaration of T. Finally, the pattern also precludes declaring an array of
    2479 // functions versus a pointer to an array of functions, and returning arrays and functions versus pointers to arrays and
    2480 // functions.
     2515// and allows the C99 array options, which can only appear in a parameter list.
    24812516
    24822517type_parameter_redeclarator:
     
    25082543        | ptrref_operator type_qualifier_list type_parameter_redeclarator
    25092544                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2510         | '(' type_parameter_ptr ')'
    2511                 { $$ = $2; }
     2545        | '(' type_parameter_ptr ')' attribute_list_opt
     2546                { $$ = $2->addQualifiers( $4 ); }
    25122547        ;
    25132548
     
    25302565//
    25312566//              sizeof( int );
     2567//              sizeof( int * );
    25322568//              sizeof( int [10] );
     2569//              sizeof( int (*)() );
     2570//              sizeof( int () );
    25332571//
    25342572// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
     
    25522590        | ptrref_operator type_qualifier_list abstract_declarator
    25532591                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2554         | '(' abstract_ptr ')'
    2555                 { $$ = $2; }
     2592        | '(' abstract_ptr ')' attribute_list_opt
     2593                { $$ = $2->addQualifiers( $4 ); }
    25562594        ;
    25572595
     
    25982636// identifier to which the type applies, e.g.:
    25992637//
    2600 //              int f( int );                   // abstract variable parameter; no parameter name specified
     2638//              int f( int );                   // not handled here
     2639//              int f( int * );                 // abstract function-prototype parameter; no parameter name specified
     2640//              int f( int (*)() );             // abstract function-prototype parameter; no parameter name specified
    26012641//              int f( int (int) );             // abstract function-prototype parameter; no parameter name specified
    26022642//
    26032643// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
    2604 // and functions versus pointers to arrays and functions.
     2644// and functions versus pointers to arrays and functions. In addition, the pattern handles the
     2645// special meaning of parenthesis around a typedef name:
     2646//
     2647//              ISO/IEC 9899:1999 Section 6.7.5.3(11) : "In a parameter declaration, a single typedef name in
     2648//              parentheses is taken to be an abstract declarator that specifies a function with a single parameter,
     2649//              not as redundant parentheses around the identifier."
     2650//
     2651// For example:
     2652//
     2653//              typedef float T;
     2654//              int f( int ( T [5] ) );                                 // see abstract_parameter_declarator
     2655//              int g( int ( T ( int ) ) );                             // see abstract_parameter_declarator
     2656//              int f( int f1( T a[5] ) );                              // see identifier_parameter_declarator
     2657//              int g( int g1( T g2( int p ) ) );               // see identifier_parameter_declarator
     2658//
     2659// In essence, a '(' immediately to the left of typedef name, T, is interpreted as starting a parameter type list, and
     2660// not as redundant parentheses around a redeclaration of T. Finally, the pattern also precludes declaring an array of
     2661// functions versus a pointer to an array of functions, and returning arrays and functions versus pointers to arrays and
     2662// functions.
    26052663
    26062664abstract_parameter_declarator:
     
    26142672abstract_parameter_ptr:
    26152673        ptrref_operator
    2616                 { $$ = DeclarationNode::newPointer( 0 ); }
     2674                { $$ = DeclarationNode::newPointer( nullptr ); }
    26172675        | ptrref_operator type_qualifier_list
    26182676                { $$ = DeclarationNode::newPointer( $2 ); }
    26192677        | ptrref_operator abstract_parameter_declarator
    2620                 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
     2678                { $$ = $2->addPointer( DeclarationNode::newPointer( nullptr ) ); }
    26212679        | ptrref_operator type_qualifier_list abstract_parameter_declarator
    26222680                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2623         | '(' abstract_parameter_ptr ')'
    2624                 { $$ = $2; }
     2681        | '(' abstract_parameter_ptr ')' attribute_list_opt
     2682                { $$ = $2->addQualifiers( $4 ); }
    26252683        ;
    26262684
     
    26742732        ;
    26752733
    2676 // This pattern parses a declaration of an abstract variable, i.e., there is no identifier to which the type applies,
    2677 // e.g.:
    2678 //
    2679 //              sizeof( int ); // abstract variable; no identifier name specified
    2680 //
    2681 // The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
    2682 // and functions versus pointers to arrays and functions.
     2734// This pattern parses a declaration of an abstract variable, but does not allow "int ()" for a function pointer.
     2735//
     2736//              struct S {
     2737//          int;
     2738//          int *;
     2739//          int [10];
     2740//          int (*)();
     2741//      };
    26832742
    26842743variable_abstract_declarator:
     
    26992758        | ptrref_operator type_qualifier_list variable_abstract_declarator
    27002759                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2701         | '(' variable_abstract_ptr ')'
    2702                 { $$ = $2; }
     2760        | '(' variable_abstract_ptr ')' attribute_list_opt
     2761                { $$ = $2->addQualifiers( $4 ); }
    27032762        ;
    27042763
     
    27232782// identifier or typedef name and allows the C99 array options, which can only appear in a parameter list.
    27242783
    2725 new_identifier_parameter_declarator_tuple:                              // CFA
    2726         new_identifier_parameter_declarator_no_tuple
    2727         | new_abstract_tuple
    2728         | type_qualifier_list new_abstract_tuple
     2784cfa_identifier_parameter_declarator_tuple:                              // CFA
     2785        cfa_identifier_parameter_declarator_no_tuple
     2786        | cfa_abstract_tuple
     2787        | type_qualifier_list cfa_abstract_tuple
    27292788                { $$ = $2->addQualifiers( $1 ); }
    27302789        ;
    27312790
    2732 new_identifier_parameter_declarator_no_tuple:                   // CFA
    2733         new_identifier_parameter_ptr
    2734         | new_identifier_parameter_array
    2735         ;
    2736 
    2737 new_identifier_parameter_ptr:                                                   // CFA
     2791cfa_identifier_parameter_declarator_no_tuple:                   // CFA
     2792        cfa_identifier_parameter_ptr
     2793        | cfa_identifier_parameter_array
     2794        ;
     2795
     2796cfa_identifier_parameter_ptr:                                                   // CFA
    27382797        ptrref_operator type_specifier
    27392798                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    27402799        | type_qualifier_list ptrref_operator type_specifier
    27412800                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2742         | ptrref_operator new_abstract_function
     2801        | ptrref_operator cfa_abstract_function
    27432802                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2744         | type_qualifier_list ptrref_operator new_abstract_function
     2803        | type_qualifier_list ptrref_operator cfa_abstract_function
    27452804                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2746         | ptrref_operator new_identifier_parameter_declarator_tuple
     2805        | ptrref_operator cfa_identifier_parameter_declarator_tuple
    27472806                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2748         | type_qualifier_list ptrref_operator new_identifier_parameter_declarator_tuple
     2807        | type_qualifier_list ptrref_operator cfa_identifier_parameter_declarator_tuple
    27492808                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    27502809        ;
    27512810
    2752 new_identifier_parameter_array:                                                 // CFA
     2811cfa_identifier_parameter_array:                                                 // CFA
    27532812                // Only the first dimension can be empty or have qualifiers. Empty dimension must be factored out due to
    27542813                // shift/reduce conflict with new-style empty (void) function return type.
    27552814        '[' ']' type_specifier
    27562815                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    2757         | new_array_parameter_1st_dimension type_specifier
     2816        | cfa_array_parameter_1st_dimension type_specifier
    27582817                { $$ = $2->addNewArray( $1 ); }
    27592818        | '[' ']' multi_array_dimension type_specifier
    27602819                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    2761         | new_array_parameter_1st_dimension multi_array_dimension type_specifier
     2820        | cfa_array_parameter_1st_dimension multi_array_dimension type_specifier
    27622821                { $$ = $3->addNewArray( $2 )->addNewArray( $1 ); }
    27632822        | multi_array_dimension type_specifier
    27642823                { $$ = $2->addNewArray( $1 ); }
    27652824
    2766         | '[' ']' new_identifier_parameter_ptr
     2825        | '[' ']' cfa_identifier_parameter_ptr
    27672826                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    2768         | new_array_parameter_1st_dimension new_identifier_parameter_ptr
     2827        | cfa_array_parameter_1st_dimension cfa_identifier_parameter_ptr
    27692828                { $$ = $2->addNewArray( $1 ); }
    2770         | '[' ']' multi_array_dimension new_identifier_parameter_ptr
     2829        | '[' ']' multi_array_dimension cfa_identifier_parameter_ptr
    27712830                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    2772         | new_array_parameter_1st_dimension multi_array_dimension new_identifier_parameter_ptr
     2831        | cfa_array_parameter_1st_dimension multi_array_dimension cfa_identifier_parameter_ptr
    27732832                { $$ = $3->addNewArray( $2 )->addNewArray( $1 ); }
    2774         | multi_array_dimension new_identifier_parameter_ptr
     2833        | multi_array_dimension cfa_identifier_parameter_ptr
    27752834                { $$ = $2->addNewArray( $1 ); }
    27762835        ;
    27772836
    2778 new_array_parameter_1st_dimension:
     2837cfa_array_parameter_1st_dimension:
    27792838        '[' push type_qualifier_list '*' pop ']'                        // remaining C99
    27802839                { $$ = DeclarationNode::newVarArray( $3 ); }
     
    27982857// These rules need LR(3):
    27992858//
    2800 //              new_abstract_tuple identifier_or_type_name
    2801 //              '[' new_parameter_list ']' identifier_or_type_name '(' new_parameter_type_list_opt ')'
     2859//              cfa_abstract_tuple identifier_or_type_name
     2860//              '[' cfa_parameter_list ']' identifier_or_type_name '(' cfa_parameter_type_list_opt ')'
    28022861//
    28032862// since a function return type can be syntactically identical to a tuple type:
     
    28072866//
    28082867// Therefore, it is necessary to look at the token after identifier_or_type_name to know when to reduce
    2809 // new_abstract_tuple. To make this LR(1), several rules have to be flattened (lengthened) to allow the necessary
    2810 // lookahead. To accomplish this, new_abstract_declarator has an entry point without tuple, and tuple declarations are
    2811 // duplicated when appearing with new_function_specifier.
    2812 
    2813 new_abstract_declarator_tuple:                                                  // CFA
    2814         new_abstract_tuple
    2815         | type_qualifier_list new_abstract_tuple
     2868// cfa_abstract_tuple. To make this LR(1), several rules have to be flattened (lengthened) to allow the necessary
     2869// lookahead. To accomplish this, cfa_abstract_declarator has an entry point without tuple, and tuple declarations are
     2870// duplicated when appearing with cfa_function_specifier.
     2871
     2872cfa_abstract_declarator_tuple:                                                  // CFA
     2873        cfa_abstract_tuple
     2874        | type_qualifier_list cfa_abstract_tuple
    28162875                { $$ = $2->addQualifiers( $1 ); }
    2817         | new_abstract_declarator_no_tuple
    2818         ;
    2819 
    2820 new_abstract_declarator_no_tuple:                                               // CFA
    2821         new_abstract_ptr
    2822         | new_abstract_array
    2823         ;
    2824 
    2825 new_abstract_ptr:                                                                               // CFA
     2876        | cfa_abstract_declarator_no_tuple
     2877        ;
     2878
     2879cfa_abstract_declarator_no_tuple:                                               // CFA
     2880        cfa_abstract_ptr
     2881        | cfa_abstract_array
     2882        ;
     2883
     2884cfa_abstract_ptr:                                                                               // CFA
    28262885        ptrref_operator type_specifier
    28272886                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    28282887        | type_qualifier_list ptrref_operator type_specifier
    28292888                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2830         | ptrref_operator new_abstract_function
     2889        | ptrref_operator cfa_abstract_function
    28312890                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2832         | type_qualifier_list ptrref_operator new_abstract_function
     2891        | type_qualifier_list ptrref_operator cfa_abstract_function
    28332892                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2834         | ptrref_operator new_abstract_declarator_tuple
     2893        | ptrref_operator cfa_abstract_declarator_tuple
    28352894                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2836         | type_qualifier_list ptrref_operator new_abstract_declarator_tuple
     2895        | type_qualifier_list ptrref_operator cfa_abstract_declarator_tuple
    28372896                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    28382897        ;
    28392898
    2840 new_abstract_array:                                                                             // CFA
     2899cfa_abstract_array:                                                                             // CFA
    28412900                // Only the first dimension can be empty. Empty dimension must be factored out due to shift/reduce conflict with
    28422901                // empty (void) function return type.
     
    28472906        | multi_array_dimension type_specifier
    28482907                { $$ = $2->addNewArray( $1 ); }
    2849         | '[' ']' new_abstract_ptr
     2908        | '[' ']' cfa_abstract_ptr
    28502909                { $$ = $3->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    2851         | '[' ']' multi_array_dimension new_abstract_ptr
     2910        | '[' ']' multi_array_dimension cfa_abstract_ptr
    28522911                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    2853         | multi_array_dimension new_abstract_ptr
     2912        | multi_array_dimension cfa_abstract_ptr
    28542913                { $$ = $2->addNewArray( $1 ); }
    28552914        ;
    28562915
    2857 new_abstract_tuple:                                                                             // CFA
    2858         '[' push new_abstract_parameter_list pop ']'
     2916cfa_abstract_tuple:                                                                             // CFA
     2917        '[' push cfa_abstract_parameter_list pop ']'
    28592918                { $$ = DeclarationNode::newTuple( $3 ); }
    28602919        ;
    28612920
    2862 new_abstract_function:                                                                  // CFA
    2863 //      '[' ']' '(' new_parameter_type_list_opt ')'
     2921cfa_abstract_function:                                                                  // CFA
     2922//      '[' ']' '(' cfa_parameter_type_list_opt ')'
    28642923//              { $$ = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), $4, nullptr ); }
    2865         new_abstract_tuple '(' push new_parameter_type_list_opt pop ')'
     2924        cfa_abstract_tuple '(' push cfa_parameter_type_list_opt pop ')'
    28662925                { $$ = DeclarationNode::newFunction( nullptr, $1, $4, nullptr ); }
    2867         | new_function_return '(' push new_parameter_type_list_opt pop ')'
     2926        | cfa_function_return '(' push cfa_parameter_type_list_opt pop ')'
    28682927                { $$ = DeclarationNode::newFunction( nullptr, $1, $4, nullptr ); }
    28692928        ;
  • src/ResolvExpr/Resolver.cc

    rdbe8f244 rfe26fbf  
    449449                        TypeSubstitution sub = makeGenericSubstitutuion( sit );
    450450                        StructDecl * st = sit->get_baseStruct();
     451                        if(st->get_members().empty()) return;
    451452                        // want to resolve each initializer to the members of the struct,
    452453                        // but if there are more initializers than members we should stop
     
    458459                        TypeSubstitution sub = makeGenericSubstitutuion( uit );
    459460                        UnionDecl * un = uit->get_baseUnion();
     461                        if(un->get_members().empty()) return;
    460462                        // only resolve to the first member of a union
    461463                        resolveSingleAggrInit( *un->get_members().begin(), init, initEnd, sub );
  • src/SymTab/AddVisit.h

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sun May 17 16:14:32 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 11:22:01 2016
    13 // Update Count     : 9
     12// Last Modified On : Thu Feb  2 16:36:02 2017
     13// Update Count     : 14
    1414//
    1515
     
    1818
    1919        template< typename Visitor >
    20         inline void addVisitStatementList( std::list< Statement* > &statements, Visitor &visitor ) {
    21                 for ( std::list< Statement* >::iterator i = statements.begin(); i != statements.end(); ++i ) {
    22                         addDecls( visitor.get_declsToAdd(), statements, i );
    23                         (*i)->accept( visitor );
    24                 } // for
    25                 addDecls( visitor.get_declsToAdd(), statements, statements.end() );
     20        inline void addVisitStatementList( std::list< Statement* > &stmts, Visitor &visitor ) {
     21                for ( std::list< Statement* >::iterator stmt = stmts.begin(); ; ++stmt ) {
     22                        // add any new declarations after the previous statement
     23                        for ( std::list< Declaration* >::iterator decl = visitor.declsToAddAfter.begin(); decl != visitor.declsToAddAfter.end(); ++decl ) {
     24                                DeclStmt *declStmt = new DeclStmt( noLabels, *decl );
     25                                stmts.insert( stmt, declStmt );
     26                        }
     27                        visitor.declsToAddAfter.clear();
     28
     29                        if ( stmt == stmts.end() ) break;
     30                       
     31                        // run mutator on statement
     32                        maybeAccept( *stmt, visitor );
     33
     34                        // add any new declarations before the statement
     35                        for ( std::list< Declaration* >::iterator decl = visitor.declsToAdd.begin(); decl != visitor.declsToAdd.end(); ++decl ) {
     36                                DeclStmt *declStmt = new DeclStmt( noLabels, *decl );
     37                                stmts.insert( stmt, declStmt );
     38                        }
     39                        visitor.declsToAdd.clear();
     40                }
    2641        }
    2742
     
    3853
    3954        template< typename Visitor >
    40         void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor, bool addBefore ) {
    41                 std::list< Declaration * >::iterator i = translationUnit.begin();
    42                 while ( i != translationUnit.end() ) {
    43                         (*i)->accept( visitor );
    44                         std::list< Declaration * >::iterator next = i;
    45                         next++;
    46                         if ( ! visitor.get_declsToAdd().empty() ) {
    47                                 translationUnit.splice( addBefore ? i : next, visitor.get_declsToAdd() );
    48                         } // if
    49                         i = next;
    50                 } // while
     55        void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor ) {
     56                for ( std::list< Declaration* >::iterator decl = translationUnit.begin(); ; ++decl ) {
     57                        // splice in new declarations after previous decl
     58                        translationUnit.splice( decl, visitor.declsToAddAfter );
     59
     60                        if ( decl == translationUnit.end() ) break;
     61                       
     62                        // run mutator on declaration
     63                        maybeAccept( *decl, visitor );
     64
     65                        // splice in new declarations before current decl
     66                        translationUnit.splice( decl, visitor.declsToAdd );
     67                }
    5168        }
    5269
  • src/SymTab/Autogen.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Thu Mar 03 15:45:56 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:47:17 2016
    13 // Update Count     : 2
     12// Last Modified On : Thu Feb  2 18:04:40 2017
     13// Update Count     : 11
    1414//
    1515
     
    4343
    4444        class AutogenerateRoutines final : public Visitor {
     45            template< typename Visitor >
     46            friend void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor );
     47            template< typename Visitor >
     48            friend void addVisitStatementList( std::list< Statement* > &stmts, Visitor &visitor );
    4549          public:
    4650                std::list< Declaration * > &get_declsToAdd() { return declsToAdd; }
     
    6771                template< typename StmtClass > void visitStatement( StmtClass *stmt );
    6872
    69                 std::list< Declaration * > declsToAdd;
     73                std::list< Declaration * > declsToAdd, declsToAddAfter;
    7074                std::set< std::string > structsDone;
    7175                unsigned int functionNesting = 0;     // current level of nested functions
     
    98102        void autogenerateRoutines( std::list< Declaration * > &translationUnit ) {
    99103                AutogenerateRoutines generator;
    100                 acceptAndAdd( translationUnit, generator, false );
     104                acceptAndAdd( translationUnit, generator );
    101105
    102106                // needs to be done separately because AutogenerateRoutines skips types that appear as function arguments, etc.
     
    567571                        EnumInstType *enumInst = new EnumInstType( Type::Qualifiers(), enumDecl->get_name() );
    568572                        // enumInst->set_baseEnum( enumDecl );
    569                         // declsToAdd.push_back(
    570                         makeEnumFunctions( enumDecl, enumInst, functionNesting, declsToAdd );
     573                        makeEnumFunctions( enumDecl, enumInst, functionNesting, declsToAddAfter );
    571574                }
    572575        }
     
    581584                        }
    582585                        structInst.set_baseStruct( structDecl );
    583                         makeStructFunctions( structDecl, &structInst, functionNesting, declsToAdd, data );
     586                        makeStructFunctions( structDecl, &structInst, functionNesting, declsToAddAfter, data );
    584587                        structsDone.insert( structDecl->get_name() );
    585588                } // if
     
    593596                                unionInst.get_parameters().push_back( new TypeExpr( new TypeInstType( Type::Qualifiers(), typeDecl->get_name(), typeDecl ) ) );
    594597                        }
    595                         makeUnionFunctions( unionDecl, &unionInst, functionNesting, declsToAdd );
     598                        makeUnionFunctions( unionDecl, &unionInst, functionNesting, declsToAddAfter );
    596599                } // if
    597600        }
     
    618621                FunctionDecl *func = genFunc( "?=?", type, functionNesting );
    619622                func->get_statements()->get_kids() = stmts;
    620                 declsToAdd.push_back( func );
     623                declsToAddAfter.push_back( func );
    621624        }
    622625
     
    763766        }
    764767} // SymTab
     768
     769// Local Variables: //
     770// tab-width: 4 //
     771// mode: c++ //
     772// compile-command: "make install" //
     773// End: //
  • src/SymTab/Autogen.h

    rdbe8f244 rfe26fbf  
    99// Author           : Rob Schluntz
    1010// Created On       : Sun May 17 21:53:34 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue May 19 16:49:43 2015
    13 // Update Count     : 1
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Feb  1 16:31:00 2017
     13// Update Count     : 2
    1414//
    1515
     
    5858                        assert( type );
    5959                        Type * castType = type->clone();
    60                         castType->get_qualifiers() -= Type::Qualifiers(true, true, true, false, true, true);
     60                        castType->get_qualifiers() -= Type::Qualifiers(true, true, true, false, true);
    6161                        castType->set_isLvalue( true ); // xxx - might not need this
    6262                        dstParam = new CastExpr( dstParam, new PointerType( Type::Qualifiers(), castType ) );
  • src/SymTab/Validate.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:49:21 2016
    13 // Update Count     : 298
     12// Last Modified On : Thu Feb  2 17:47:54 2017
     13// Update Count     : 312
    1414//
    1515
     
    6767namespace SymTab {
    6868        class HoistStruct final : public Visitor {
     69                template< typename Visitor >
     70                friend void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor );
     71            template< typename Visitor >
     72            friend void addVisitStatementList( std::list< Statement* > &stmts, Visitor &visitor );
    6973          public:
    7074                /// Flattens nested struct types
     
    7377                std::list< Declaration * > &get_declsToAdd() { return declsToAdd; }
    7478
     79                virtual void visit( EnumInstType *enumInstType );
     80                virtual void visit( StructInstType *structInstType );
     81                virtual void visit( UnionInstType *unionInstType );
    7582                virtual void visit( StructDecl *aggregateDecl );
    7683                virtual void visit( UnionDecl *aggregateDecl );
     
    8390                template< typename AggDecl > void handleAggregate( AggDecl *aggregateDecl );
    8491
    85                 std::list< Declaration * > declsToAdd;
     92                std::list< Declaration * > declsToAdd, declsToAddAfter;
    8693                bool inStruct;
    8794        };
     
    115122          private:
    116123                using Parent::visit;
     124                void visit( EnumInstType *enumInst ) final;
    117125                void visit( StructInstType *structInst ) final;
    118126                void visit( UnionInstType *unionInst ) final;
    119127                void visit( TraitInstType *contextInst ) final;
     128                void visit( EnumDecl *enumDecl ) final;
    120129                void visit( StructDecl *structDecl ) final;
    121130                void visit( UnionDecl *unionDecl ) final;
     
    124133                const Indexer *indexer;
    125134
     135                typedef std::map< std::string, std::list< EnumInstType * > > ForwardEnumsType;
    126136                typedef std::map< std::string, std::list< StructInstType * > > ForwardStructsType;
    127137                typedef std::map< std::string, std::list< UnionInstType * > > ForwardUnionsType;
     138                ForwardEnumsType forwardEnums;
    128139                ForwardStructsType forwardStructs;
    129140                ForwardUnionsType forwardUnions;
     
    236247        void HoistStruct::hoistStruct( std::list< Declaration * > &translationUnit ) {
    237248                HoistStruct hoister;
    238                 acceptAndAdd( translationUnit, hoister, true );
     249                acceptAndAdd( translationUnit, hoister );
    239250        }
    240251
     
    260271                return dynamic_cast< StructDecl * >( decl ) || dynamic_cast< UnionDecl * >( decl );
    261272        }
    262         // xxx - shouldn't this be declsToAddBefore?
     273
    263274        template< typename AggDecl >
    264275        void HoistStruct::handleAggregate( AggDecl *aggregateDecl ) {
     
    276287        }
    277288
     289        void HoistStruct::visit( EnumInstType *structInstType ) {
     290                if ( structInstType->get_baseEnum() ) {
     291                        declsToAdd.push_front( structInstType->get_baseEnum() );
     292                }
     293        }
     294
     295        void HoistStruct::visit( StructInstType *structInstType ) {
     296                if ( structInstType->get_baseStruct() ) {
     297                        declsToAdd.push_front( structInstType->get_baseStruct() );
     298                }
     299        }
     300
     301        void HoistStruct::visit( UnionInstType *structInstType ) {
     302                if ( structInstType->get_baseUnion() ) {
     303                        declsToAdd.push_front( structInstType->get_baseUnion() );
     304                }
     305        }
     306
    278307        void HoistStruct::visit( StructDecl *aggregateDecl ) {
    279308                handleAggregate( aggregateDecl );
     
    297326                        ObjectDecl * obj = dynamic_cast< ObjectDecl * >( *i );
    298327                        assert( obj );
    299                         obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
     328                        obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false ), enumDecl->get_name() ) );
    300329                } // for
    301330                Parent::visit( enumDecl );
     
    349378        }
    350379
     380        void LinkReferenceToTypes::visit( EnumInstType *enumInst ) {
     381                Parent::visit( enumInst );
     382                EnumDecl *st = indexer->lookupEnum( enumInst->get_name() );
     383                // it's not a semantic error if the enum is not found, just an implicit forward declaration
     384                if ( st ) {
     385                        //assert( ! enumInst->get_baseEnum() || enumInst->get_baseEnum()->get_members().empty() || ! st->get_members().empty() );
     386                        enumInst->set_baseEnum( st );
     387                } // if
     388                if ( ! st || st->get_members().empty() ) {
     389                        // use of forward declaration
     390                        forwardEnums[ enumInst->get_name() ].push_back( enumInst );
     391                } // if
     392        }
     393
    351394        void LinkReferenceToTypes::visit( StructInstType *structInst ) {
    352395                Parent::visit( structInst );
     
    419462                        }
    420463                }
     464        }
     465
     466        void LinkReferenceToTypes::visit( EnumDecl *enumDecl ) {
     467                // visit enum members first so that the types of self-referencing members are updated properly
     468                Parent::visit( enumDecl );
     469                if ( ! enumDecl->get_members().empty() ) {
     470                        ForwardEnumsType::iterator fwds = forwardEnums.find( enumDecl->get_name() );
     471                        if ( fwds != forwardEnums.end() ) {
     472                                for ( std::list< EnumInstType * >::iterator inst = fwds->second.begin(); inst != fwds->second.end(); ++inst ) {
     473                                        (*inst )->set_baseEnum( enumDecl );
     474                                } // for
     475                                forwardEnums.erase( fwds );
     476                        } // if
     477                } // if
    421478        }
    422479
  • src/SynTree/AggregateDecl.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sun May 17 23:56:39 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 13 18:03:30 2016
    13 // Update Count     : 10
     12// Last Modified On : Mon Feb  6 15:31:23 2017
     13// Update Count     : 17
    1414//
    1515
    1616#include "Declaration.h"
     17#include "Attribute.h"
    1718#include "Type.h"
    1819#include "Common/utility.h"
    1920
    2021
    21 AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, DeclarationNode::NoStorageClass, LinkageSpec::Cforall ), body( false ) {
     22AggregateDecl::AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes ) : Parent( name, DeclarationNode::NoStorageClass, LinkageSpec::Cforall ), body( false ), attributes( attributes ) {
    2223}
    2324
     
    2526        cloneAll( other.members, members );
    2627        cloneAll( other.parameters, parameters );
     28        cloneAll( other.attributes, attributes );
    2729        body = other.body;
    2830}
    2931
    3032AggregateDecl::~AggregateDecl() {
     33        deleteAll( attributes );
     34        deleteAll( parameters );
    3135        deleteAll( members );
    32         deleteAll( parameters );
    3336}
    3437
     
    4750                os << endl << string( indent+2, ' ' ) << "with members" << endl;
    4851                printAll( members, os, indent+4 );
     52        } // if
     53        if ( ! attributes.empty() ) {
     54                os << endl << string( indent+2, ' ' ) << "with attributes" << endl;
     55                printAll( attributes, os, indent+4 );
    4956        } // if
    5057}
  • src/SynTree/ArrayType.cc

    rdbe8f244 rfe26fbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu May 12 14:07:16 2016
    13 // Update Count     : 11
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Feb  1 17:16:29 2017
     13// Update Count     : 12
    1414//
    1515
     
    1919
    2020
    21 ArrayType::ArrayType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic )
    22                 : Type( tq ), base( base ), dimension( dimension ), isVarLen( isVarLen ), isStatic( isStatic ) {
     21ArrayType::ArrayType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes )
     22        : Type( tq, attributes ), base( base ), dimension( dimension ), isVarLen( isVarLen ), isStatic( isStatic ) {
    2323        base->set_isLvalue( false );
    2424}
  • src/SynTree/AttrType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:41:51 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Feb  1 17:17:59 2017
     13// Update Count     : 3
    1414//
    1515
     
    1919
    2020
    21 AttrType::AttrType( const Type::Qualifiers &tq, const std::string &name, Expression *expr )
    22         : Type( tq ), name( name ), expr( expr ), type( 0 ), isType( false ) {
     21AttrType::AttrType( const Type::Qualifiers &tq, const std::string &name, Expression *expr, const std::list< Attribute * > & attributes )
     22        : Type( tq, attributes ), name( name ), expr( expr ), type( 0 ), isType( false ) {
    2323}
    2424
    25 AttrType::AttrType( const Type::Qualifiers &tq, const std::string &name, Type *type )
    26         : Type( tq ), name( name ), expr( 0 ), type( type ), isType( true ) {
     25AttrType::AttrType( const Type::Qualifiers &tq, const std::string &name, Type *type, const std::list< Attribute * > & attributes )
     26        : Type( tq, attributes ), name( name ), expr( 0 ), type( type ), isType( true ) {
    2727}
    2828
  • src/SynTree/BasicType.cc

    rdbe8f244 rfe26fbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:15:45 2015
    13 // Update Count     : 6
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Feb  1 17:12:15 2017
     13// Update Count     : 8
    1414//
    1515
     
    1717#include "Type.h"
    1818
    19 BasicType::BasicType( const Type::Qualifiers &tq, Kind bt ) : Type( tq ), kind( bt ) {}
     19BasicType::BasicType( const Type::Qualifiers &tq, Kind bt, const std::list< Attribute * > & attributes ) : Type( tq, attributes ), kind( bt ) {}
    2020
    2121void BasicType::print( std::ostream &os, int indent ) const {
  • src/SynTree/Declaration.h

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 13:37:33 2016
    13 // Update Count     : 49
     12// Last Modified On : Fri Jan 20 15:07:29 2017
     13// Update Count     : 53
    1414//
    1515
     
    225225        typedef Declaration Parent;
    226226  public:
    227         AggregateDecl( const std::string &name );
     227        AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >() );
    228228        AggregateDecl( const AggregateDecl &other );
    229229        virtual ~AggregateDecl();
     
    231231        std::list<Declaration*>& get_members() { return members; }
    232232        std::list<TypeDecl*>& get_parameters() { return parameters; }
     233
     234        std::list< Attribute * >& get_attributes() { return attributes; }
     235        const std::list< Attribute * >& get_attributes() const { return attributes; }
    233236
    234237        bool has_body() const { return body; }
     
    244247        std::list<TypeDecl*> parameters;
    245248        bool body;
     249        std::list< Attribute * > attributes;
    246250};
    247251
     
    249253        typedef AggregateDecl Parent;
    250254  public:
    251         StructDecl( const std::string &name ) : Parent( name ) {}
     255        StructDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >() ) : Parent( name, attributes ) {}
    252256        StructDecl( const StructDecl &other ) : Parent( other ) {}
    253257
     
    262266        typedef AggregateDecl Parent;
    263267  public:
    264         UnionDecl( const std::string &name ) : Parent( name ) {}
     268        UnionDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >() ) : Parent( name, attributes ) {}
    265269        UnionDecl( const UnionDecl &other ) : Parent( other ) {}
    266270
     
    275279        typedef AggregateDecl Parent;
    276280  public:
    277         EnumDecl( const std::string &name ) : Parent( name ) {}
     281        EnumDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >() ) : Parent( name, attributes ) {}
    278282        EnumDecl( const EnumDecl &other ) : Parent( other ) {}
    279283
     
    288292        typedef AggregateDecl Parent;
    289293  public:
    290         TraitDecl( const std::string &name ) : Parent( name ) {}
     294        TraitDecl( const std::string &name, const std::list< Attribute * > & attributes ) : Parent( name ) {
     295                assertf( attributes.empty(), "attribute unsupported for traits" );
     296        }
    291297        TraitDecl( const TraitDecl &other ) : Parent( other ) {}
    292298
  • src/SynTree/FunctionType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 09:01:28 2015
    13 // Update Count     : 1
     12// Last Modified On : Wed Feb  1 17:21:00 2017
     13// Update Count     : 2
    1414//
    1515
     
    2121#include "Tuples/Tuples.h"
    2222
    23 FunctionType::FunctionType( const Type::Qualifiers &tq, bool isVarArgs ) : Type( tq ), isVarArgs( isVarArgs ) {
     23FunctionType::FunctionType( const Type::Qualifiers &tq, bool isVarArgs, const std::list< Attribute * > & attributes ) : Type( tq, attributes ), isVarArgs( isVarArgs ) {
    2424}
    2525
  • src/SynTree/PointerType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 15 15:39:10 2015
    13 // Update Count     : 5
     12// Last Modified On : Wed Feb  1 17:17:13 2017
     13// Update Count     : 6
    1414//
    1515
     
    1818#include "Common/utility.h"
    1919
    20 PointerType::PointerType( const Type::Qualifiers &tq, Type *base )
    21         : Type( tq ), base( base ), dimension( 0 ), isVarLen( false ), isStatic( false ) {
     20PointerType::PointerType( const Type::Qualifiers &tq, Type *base, const std::list< Attribute * > & attributes )
     21        : Type( tq, attributes ), base( base ), dimension( 0 ), isVarLen( false ), isStatic( false ) {
    2222}
    2323
    24 PointerType::PointerType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic )
    25         : Type( tq ), base( base ), dimension( dimension ), isVarLen( isVarLen ), isStatic( isStatic ) {
     24PointerType::PointerType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes )
     25        : Type( tq, attributes ), base( base ), dimension( dimension ), isVarLen( isVarLen ), isStatic( isStatic ) {
    2626}
    2727
  • src/SynTree/ReferenceToType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 13 18:03:30 2016
    13 // Update Count     : 9
     12// Last Modified On : Thu Feb  2 17:45:07 2017
     13// Update Count     : 23
    1414//
    1515
     
    2323#include "Common/utility.h"
    2424
    25 ReferenceToType::ReferenceToType( const Type::Qualifiers &tq, const std::string &name ) : Type( tq ), name( name ) {
     25ReferenceToType::ReferenceToType( const Type::Qualifiers &tq, const std::string &name, const std::list< Attribute * > & attributes ) : Type( tq, attributes ), name( name ) {
    2626}
    2727
     
    5555} // namespace
    5656
    57 StructInstType::StructInstType( const Type::Qualifiers & tq, StructDecl * baseStruct ) : Parent( tq, baseStruct->get_name() ), baseStruct( baseStruct ) {}
     57StructInstType::StructInstType( const Type::Qualifiers & tq, StructDecl * baseStruct, const std::list< Attribute * > & attributes ) :
     58                Parent( tq, baseStruct->get_name(), attributes ), baseStruct( baseStruct ) {}
    5859
    5960std::string StructInstType::typeString() const { return "struct"; }
     
    6465}
    6566
    66 bool StructInstType::isComplete() const { return baseStruct->has_body(); }
     67bool StructInstType::isComplete() const { return baseStruct ? baseStruct->has_body() : false; }
    6768
    6869void StructInstType::lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const {
     
    8586}
    8687
     88
     89UnionInstType::UnionInstType( const Type::Qualifiers & tq, UnionDecl * baseUnion, const std::list< Attribute * > & attributes ) :
     90                Parent( tq, baseUnion->get_name(), attributes ), baseUnion( baseUnion ) {}
     91
    8792std::string UnionInstType::typeString() const { return "union"; }
    8893
    89 std::list<TypeDecl*>* UnionInstType::get_baseParameters() {
     94std::list< TypeDecl * > * UnionInstType::get_baseParameters() {
    9095        if ( ! baseUnion ) return NULL;
    9196        return &baseUnion->get_parameters();
    9297}
    9398
    94 bool UnionInstType::isComplete() const { return baseUnion->has_body(); }
     99bool UnionInstType::isComplete() const { return baseUnion ? baseUnion->has_body() : false; }
    95100
    96101void UnionInstType::lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const {
     
    113118}
    114119
     120
     121EnumInstType::EnumInstType( const Type::Qualifiers & tq, EnumDecl * baseEnum, const std::list< Attribute * > & attributes ) :
     122                Parent( tq, baseEnum->get_name(), attributes ), baseEnum( baseEnum ) {}
     123
    115124std::string EnumInstType::typeString() const { return "enum"; }
     125
     126bool EnumInstType::isComplete() const { return baseEnum ? baseEnum->has_body() : false; }
    116127
    117128std::string TraitInstType::typeString() const { return "trait"; }
     
    127138bool TraitInstType::isComplete() const { assert( false ); }
    128139
    129 TypeInstType::TypeInstType( const Type::Qualifiers &tq, const std::string &name, TypeDecl *baseType ) : Parent( tq, name ) {
     140TypeInstType::TypeInstType( const Type::Qualifiers &tq, const std::string &name, TypeDecl *baseType, const std::list< Attribute * > & attributes ) : Parent( tq, name, attributes ) {
    130141        set_baseType( baseType );
    131142}
    132143
    133 TypeInstType::TypeInstType( const Type::Qualifiers &tq, const std::string &name, bool isFtype ) : Parent( tq, name ), baseType( 0 ), isFtype( isFtype ) {
     144TypeInstType::TypeInstType( const Type::Qualifiers &tq, const std::string &name, bool isFtype, const std::list< Attribute * > & attributes ) : Parent( tq, name, attributes ), baseType( 0 ), isFtype( isFtype ) {
    134145}
    135146
  • src/SynTree/TupleType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:00:01 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Feb  1 17:10:58 2017
     13// Update Count     : 3
    1414//
    1515
     
    1717#include "Common/utility.h"
    1818
    19 TupleType::TupleType( const Type::Qualifiers &tq, const std::list< Type * > & types ) : Type( tq ), types( types ) {
     19TupleType::TupleType( const Type::Qualifiers &tq, const std::list< Type * > & types, const std::list< Attribute * > & attributes ) : Type( tq, attributes ), types( types ) {
    2020}
    2121
  • src/SynTree/Type.cc

    rdbe8f244 rfe26fbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Dec 09 14:08:48 2015
    13 // Update Count     : 4
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Feb  2 11:26:24 2017
     13// Update Count     : 12
    1414//
    1515
     
    1818#include "Type.h"
    1919#include "Declaration.h"
     20#include "Attribute.h"
    2021#include "Common/utility.h"
     22
     23using namespace std;
    2124
    2225const char *BasicType::typeNames[BasicType::NUMBER_OF_BASIC_TYPES] = {
     
    4447};
    4548
    46 Type::Type( const Qualifiers &tq ) : tq( tq ) {}
     49Type::Type( const Qualifiers &tq, const std::list< Attribute * > & attributes ) : tq( tq ), attributes( attributes ) {}
    4750
    4851Type::Type( const Type &other ) : tq( other.tq ) {
    4952        cloneAll( other.forall, forall );
     53        cloneAll( other.attributes, attributes );
    5054}
    5155
    5256Type::~Type() {
    5357        deleteAll( forall );
     58        deleteAll( attributes );
    5459}
    5560
     
    7075                os << "_Atomic ";
    7176        } // if
    72         if ( isAttribute ) {
    73                 os << "__attribute(( )) ";
    74         } // if
    7577}
    7678
     
    8183                os << std::string( indent+2, ' ' );
    8284        } // if
     85
     86        if ( ! attributes.empty() ) {
     87                os << endl << string( indent+2, ' ' ) << "with attributes" << endl;
     88                printAll( attributes, os, indent+4 );
     89        } // if
     90       
    8391        tq.print( os, indent );
    8492}
     
    8997        } else {
    9098                out << "nullptr";
    91         }
     99        } // if
    92100        return out;
    93101}
  • src/SynTree/Type.h

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 13 11:46:54 2016
    13 // Update Count     : 23
     12// Last Modified On : Thu Feb  2 17:43:01 2017
     13// Update Count     : 33
    1414//
    1515
     
    2525  public:
    2626        struct Qualifiers {
    27                 Qualifiers(): isConst( false ), isVolatile( false ), isRestrict( false ), isLvalue( false ), isAtomic( false ), isAttribute( false ) {}
    28                 Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue, bool isAtomic, bool isAttribute ): isConst( isConst ), isVolatile( isVolatile ), isRestrict( isRestrict ), isLvalue( isLvalue ), isAtomic( isAtomic ), isAttribute( isAttribute ) {}
     27                Qualifiers(): isConst( false ), isVolatile( false ), isRestrict( false ), isLvalue( false ), isAtomic( false ) {}
     28                Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue, bool isAtomic ): isConst( isConst ), isVolatile( isVolatile ), isRestrict( isRestrict ), isLvalue( isLvalue ), isAtomic( isAtomic ) {}
    2929
    3030                Qualifiers &operator&=( const Qualifiers &other );
     
    4545                bool isLvalue;
    4646                bool isAtomic;
    47                 bool isAttribute;
    4847        };
    4948
    50         Type( const Qualifiers &tq );
     49        Type( const Qualifiers &tq, const std::list< Attribute * > & attributes );
    5150        Type( const Type &other );
    5251        virtual ~Type();
     
    5857        bool get_isLvalue() { return tq.isLvalue; }
    5958        bool get_isAtomic() { return tq.isAtomic; }
    60         bool get_isAttribute() { return tq.isAttribute; }
    6159        void set_isConst( bool newValue ) { tq.isConst = newValue; }
    6260        void set_isVolatile( bool newValue ) { tq.isVolatile = newValue; }
     
    6462        void set_isLvalue( bool newValue ) { tq.isLvalue = newValue; }
    6563        void set_isAtomic( bool newValue ) { tq.isAtomic = newValue; }
    66         void set_isAttribute( bool newValue ) { tq.isAttribute = newValue; }
    6764
    6865        typedef std::list<TypeDecl *> ForallList;
    6966        ForallList& get_forall() { return forall; }
     67
     68        std::list< Attribute * >& get_attributes() { return attributes; }
     69        const std::list< Attribute * >& get_attributes() const { return attributes; }
    7070
    7171        /// How many elemental types are represented by this type
     
    8383        Qualifiers tq;
    8484        ForallList forall;
     85        std::list< Attribute * > attributes;
    8586};
    8687
     
    8990class VoidType : public Type {
    9091  public:
    91         VoidType( const Type::Qualifiers &tq );
     92        VoidType( const Type::Qualifiers &tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    9293
    9394        virtual unsigned size() const { return 0; };
     
    129130        static const char *typeNames[];                                         // string names for basic types, MUST MATCH with Kind
    130131
    131         BasicType( const Type::Qualifiers &tq, Kind bt );
     132        BasicType( const Type::Qualifiers &tq, Kind bt, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    132133
    133134        Kind get_kind() { return kind; }
     
    146147class PointerType : public Type {
    147148  public:
    148         PointerType( const Type::Qualifiers &tq, Type *base );
    149         PointerType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic );
     149        PointerType( const Type::Qualifiers &tq, Type *base, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
     150        PointerType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    150151        PointerType( const PointerType& );
    151152        virtual ~PointerType();
     
    175176class ArrayType : public Type {
    176177  public:
    177         ArrayType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic );
     178        ArrayType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    178179        ArrayType( const ArrayType& );
    179180        virtual ~ArrayType();
     
    203204class FunctionType : public Type {
    204205  public:
    205         FunctionType( const Type::Qualifiers &tq, bool isVarArgs );
     206        FunctionType( const Type::Qualifiers &tq, bool isVarArgs, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    206207        FunctionType( const FunctionType& );
    207208        virtual ~FunctionType();
     
    231232class ReferenceToType : public Type {
    232233  public:
    233         ReferenceToType( const Type::Qualifiers &tq, const std::string &name );
     234        ReferenceToType( const Type::Qualifiers &tq, const std::string &name, const std::list< Attribute * > & attributes );
    234235        ReferenceToType( const ReferenceToType &other );
    235236        virtual ~ReferenceToType();
     
    253254        typedef ReferenceToType Parent;
    254255  public:
    255         StructInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ), baseStruct( 0 ) {}
    256         StructInstType( const Type::Qualifiers &tq, StructDecl * baseStruct );
     256        StructInstType( const Type::Qualifiers &tq, const std::string &name, const std::list< Attribute * > & attributes = std::list< Attribute * >()  ) : Parent( tq, name, attributes ), baseStruct( 0 ) {}
     257        StructInstType( const Type::Qualifiers &tq, StructDecl * baseStruct, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    257258        StructInstType( const StructInstType &other ) : Parent( other ), baseStruct( other.baseStruct ) {}
    258259
     
    285286        typedef ReferenceToType Parent;
    286287  public:
    287         UnionInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ), baseUnion( 0 ) {}
     288        UnionInstType( const Type::Qualifiers &tq, const std::string &name, const std::list< Attribute * > & attributes = std::list< Attribute * >()  ) : Parent( tq, name, attributes ), baseUnion( 0 ) {}
     289        UnionInstType( const Type::Qualifiers &tq, UnionDecl * baseUnion, const std::list< Attribute * > & attributes = std::list< Attribute * >()  );
    288290        UnionInstType( const UnionInstType &other ) : Parent( other ), baseUnion( other.baseUnion ) {}
    289291
    290292        UnionDecl *get_baseUnion() const { return baseUnion; }
    291         void set_baseUnion( UnionDecl *newValue ) { baseUnion = newValue; }
     293        void set_baseUnion( UnionDecl * newValue ) { baseUnion = newValue; }
    292294
    293295        /// Accesses generic parameters of base union (NULL if none such)
    294         std::list<TypeDecl*> * get_baseParameters();
     296        std::list< TypeDecl * > * get_baseParameters();
    295297
    296298        virtual bool isComplete() const;
     
    316318        typedef ReferenceToType Parent;
    317319  public:
    318         EnumInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ) {}
    319         EnumInstType( const EnumInstType &other ) : Parent( other ) {}
    320 
    321         // xxx - enum inst does not currently contain a pointer to base, this should be fixed.
    322         // virtual bool isComplete() const { return baseEnum()->hasBody(); }
     320        EnumInstType( const Type::Qualifiers &tq, const std::string &name, const std::list< Attribute * > & attributes = std::list< Attribute * >()  ) : Parent( tq, name, attributes ) {}
     321        EnumInstType( const Type::Qualifiers &tq, EnumDecl * baseEnum, const std::list< Attribute * > & attributes = std::list< Attribute * >()  );
     322        EnumInstType( const EnumInstType &other ) : Parent( other ), baseEnum( other.baseEnum ) {}
     323
     324        EnumDecl *get_baseEnum() const { return baseEnum; }
     325        void set_baseEnum( EnumDecl *newValue ) { baseEnum = newValue; }
     326
     327        virtual bool isComplete() const;
    323328
    324329        virtual EnumInstType *clone() const { return new EnumInstType( *this ); }
     
    327332  private:
    328333        virtual std::string typeString() const;
     334
     335        // this decl is not "owned" by the union inst; it is merely a pointer to elsewhere in the tree,
     336        // where the union used in this type is actually defined
     337        EnumDecl *baseEnum = nullptr;
    329338};
    330339
     
    332341        typedef ReferenceToType Parent;
    333342  public:
    334         TraitInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ) {}
     343        TraitInstType( const Type::Qualifiers &tq, const std::string &name, const std::list< Attribute * > & attributes = std::list< Attribute * >()  ) : Parent( tq, name, attributes ) {}
    335344        TraitInstType( const TraitInstType &other );
    336345        ~TraitInstType();
     
    354363        typedef ReferenceToType Parent;
    355364  public:
    356         TypeInstType( const Type::Qualifiers &tq, const std::string &name, TypeDecl *baseType );
    357         TypeInstType( const Type::Qualifiers &tq, const std::string &name, bool isFtype );
     365        TypeInstType( const Type::Qualifiers &tq, const std::string &name, TypeDecl *baseType, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
     366        TypeInstType( const Type::Qualifiers &tq, const std::string &name, bool isFtype, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    358367        TypeInstType( const TypeInstType &other );
    359368        ~TypeInstType();
     
    380389class TupleType : public Type {
    381390  public:
    382         TupleType( const Type::Qualifiers &tq, const std::list< Type * > & types = std::list< Type * >() );
     391        TupleType( const Type::Qualifiers &tq, const std::list< Type * > & types = std::list< Type * >(), const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    383392        TupleType( const TupleType& );
    384393        virtual ~TupleType();
     
    410419class TypeofType : public Type {
    411420  public:
    412         TypeofType( const Type::Qualifiers &tq, Expression *expr );
     421        TypeofType( const Type::Qualifiers &tq, Expression *expr, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    413422        TypeofType( const TypeofType& );
    414423        virtual ~TypeofType();
     
    429438class AttrType : public Type {
    430439  public:
    431         AttrType( const Type::Qualifiers &tq, const std::string &name, Expression *expr );
    432         AttrType( const Type::Qualifiers &tq, const std::string &name, Type *type );
     440        AttrType( const Type::Qualifiers &tq, const std::string &name, Expression *expr, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
     441        AttrType( const Type::Qualifiers &tq, const std::string &name, Type *type, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    433442        AttrType( const AttrType& );
    434443        virtual ~AttrType();
     
    460469  public:
    461470        VarArgsType();
    462         VarArgsType( Type::Qualifiers tq );
     471        VarArgsType( Type::Qualifiers tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    463472
    464473        virtual bool isComplete() const{ return true; } // xxx - is this right?
     
    474483  public:
    475484        ZeroType();
    476         ZeroType( Type::Qualifiers tq );
     485        ZeroType( Type::Qualifiers tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    477486
    478487        virtual ZeroType *clone() const { return new ZeroType( *this ); }
     
    486495  public:
    487496        OneType();
    488         OneType( Type::Qualifiers tq );
     497        OneType( Type::Qualifiers tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() );
    489498
    490499        virtual OneType *clone() const { return new OneType( *this ); }
  • src/SynTree/TypeofType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:13:29 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Feb  1 17:18:29 2017
     13// Update Count     : 3
    1414//
    1515
     
    1818#include "Common/utility.h"
    1919
    20 TypeofType::TypeofType( const Type::Qualifiers &tq, Expression *expr ) : Type( tq ), expr( expr ) {
     20TypeofType::TypeofType( const Type::Qualifiers &tq, Expression *expr, const std::list< Attribute * > & attributes ) : Type( tq, attributes ), expr( expr ) {
    2121}
    2222
  • src/SynTree/VarArgsType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Thu Feb 25 16:34:00 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:10:40 2016
    13 // Update Count     : 2
     12// Last Modified On : Wed Feb  1 17:14:48 2017
     13// Update Count     : 4
    1414//
    1515
    1616#include "Type.h"
    1717
    18 VarArgsType::VarArgsType() : Type( Type::Qualifiers() ) {}
     18VarArgsType::VarArgsType() : Type( Type::Qualifiers(), std::list< Attribute * >() ) {}
    1919
    20 VarArgsType::VarArgsType( Type::Qualifiers tq ) : Type( tq ) {}
     20VarArgsType::VarArgsType( Type::Qualifiers tq, const std::list< Attribute * > & attributes ) : Type( tq, attributes ) {}
    2121
    2222void VarArgsType::print( std::ostream &os, int indent ) const {
  • src/SynTree/VoidType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:16:42 2015
    13 // Update Count     : 1
     12// Last Modified On : Wed Feb  1 17:09:26 2017
     13// Update Count     : 3
    1414//
    1515
    1616#include "Type.h"
    1717
    18 VoidType::VoidType( const Type::Qualifiers &tq ) : Type( tq ) {
     18VoidType::VoidType( const Type::Qualifiers &tq, const std::list< Attribute * > & attributes ) : Type( tq, attributes ) {
    1919}
    2020
  • src/SynTree/ZeroOneType.cc

    rdbe8f244 rfe26fbf  
    99// Author           : Aaron B. Moss
    1010// Created On       : Fri Sep 16 14:08:00 2016
    11 // Last Modified By : Aaron B. Moss
    12 // Last Modified On : Fri Sep 16 14:08:00 2016
    13 // Update Count     : 1
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Feb  1 17:15:46 2017
     13// Update Count     : 4
    1414//
    1515
    1616#include "Type.h"
    1717
    18 ZeroType::ZeroType() : Type( Type::Qualifiers() ) {}
     18ZeroType::ZeroType() : Type( Type::Qualifiers(), std::list< Attribute * >() ) {}
    1919
    20 ZeroType::ZeroType( Type::Qualifiers tq ) : Type( tq ) {}
     20ZeroType::ZeroType( Type::Qualifiers tq, const std::list< Attribute * > & attributes ) : Type( tq, attributes ) {}
    2121
    2222void ZeroType::print( std::ostream &os, int indent ) const {
     
    2424}
    2525
    26 OneType::OneType() : Type( Type::Qualifiers() ) {}
     26OneType::OneType() : Type( Type::Qualifiers(), std::list< Attribute * >() ) {}
    2727
    28 OneType::OneType( Type::Qualifiers tq ) : Type( tq ) {}
     28OneType::OneType( Type::Qualifiers tq, const std::list< Attribute * > & attributes ) : Type( tq, attributes ) {}
    2929
    3030void OneType::print( std::ostream &os, int indent ) const {
  • src/Tuples/TupleAssignment.cc

    rdbe8f244 rfe26fbf  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Nov 9 13:48:42 2016
    13 // Update Count     : 2
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Feb  1 16:40:16 2017
     13// Update Count     : 3
    1414//
    1515
     
    199199                                Type * type = InitTweak::getPointerBase( castType );
    200200                                assert( type );
    201                                 type->get_qualifiers() -= Type::Qualifiers(true, true, true, false, true, true);
     201                                type->get_qualifiers() -= Type::Qualifiers(true, true, true, false, true);
    202202                                type->set_isLvalue( true ); // xxx - might not need this
    203203                                expr = new CastExpr( expr, castType );
  • src/Tuples/TupleExpansion.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 15:02:53 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Feb  1 16:40:40 2017
     13// Update Count     : 3
    1414//
    1515
     
    305305        Type * makeTupleType( const std::list< Expression * > & exprs ) {
    306306                // produce the TupleType which aggregates the types of the exprs
    307                 TupleType *tupleType = new TupleType( Type::Qualifiers(true, true, true, true, true, false) );
     307                TupleType *tupleType = new TupleType( Type::Qualifiers(true, true, true, true, true) );
    308308                Type::Qualifiers &qualifiers = tupleType->get_qualifiers();
    309309                for ( Expression * expr : exprs ) {
  • src/benchmark/bench.c

    rdbe8f244 rfe26fbf  
    8787
    8888struct CoroutineDummy { coroutine c; };
    89 DECL_COROUTINE(CoroutineDummy)
     89DECL_COROUTINE(CoroutineDummy);
    9090void main(CoroutineDummy * this) {}
    9191
     
    122122};
    123123
    124 DECL_COROUTINE(CoroutineResume)
     124DECL_COROUTINE(CoroutineResume);
    125125
    126126void ?{}(CoroutineResume* this, int N) {
     
    151151
    152152struct ThreadDummy { thread t; };
    153 DECL_THREAD(ThreadDummy)
     153DECL_THREAD(ThreadDummy);
    154154void main(ThreadDummy * this) {}
    155155
     
    183183};
    184184
    185 DECL_THREAD(ContextSwitch)
     185DECL_THREAD(ContextSwitch);
    186186
    187187void main(ContextSwitch * this) {   
  • src/driver/cfa.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Oct 27 22:19:37 2016
    13 // Update Count     : 154
     12// Last Modified On : Fri Jan 20 14:38:45 2017
     13// Update Count     : 155
    1414//
    1515
     
    284284        args[nargs] = "-D__CFORALL__";
    285285        nargs += 1;
     286        args[nargs] = "-D__cforall";
     287        nargs += 1;
    286288
    287289        if ( cpp_flag ) {
  • src/libcfa/concurrency/CtxSwitch-x86_64.S

    rdbe8f244 rfe26fbf  
    4949        // Save volatile registers on the stack.
    5050
     51        subq   $8,%rsp
     52        stmxcsr 0(%rsp)         // 4 bytes
     53        fnstcw  4(%rsp)         // 2 bytes
    5154        pushq %r15
    5255        pushq %r14
     
    7275        popq %r14
    7376        popq %r15
     77        fldcw   4(%rsp)
     78        ldmxcsr 0(%rsp)
     79        addq $8,%rsp
    7480
    7581        // Return to thread.
  • src/libcfa/concurrency/coroutines

    rdbe8f244 rfe26fbf  
    3030};
    3131
    32 #define DECL_COROUTINE(X) static inline coroutine* get_coroutine(X* this) { return &this->c; } void main(X* this);
     32#define DECL_COROUTINE(X) static inline coroutine* get_coroutine(X* this) { return &this->c; } void main(X* this)
    3333
    3434//-----------------------------------------------------------------------------
     
    110110}
    111111
     112static inline void resume(coroutine * dst) {
     113        coroutine * src = this_coroutine();             // optimization
     114
     115      // not resuming self ?
     116        if ( src != dst ) {
     117                assertf( dst->notHalted ,
     118                        "Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n"
     119                        "Possible cause is terminated coroutine's main routine has already returned.",
     120                        src->name, src, dst->name, dst );
     121
     122            // set last resumer
     123                dst->last = src;
     124        } // if
     125
     126      // always done for performance testing
     127        CoroutineCtxSwitch( src, dst );
     128}
     129
    112130#endif //COROUTINES_H
    113131
  • src/libcfa/concurrency/invoke.c

    rdbe8f244 rfe26fbf  
    109109      struct FakeStack {
    110110            void *fixedRegisters[5];                    // fixed registers rbx, r12, r13, r14, r15
    111             void *rturn;                                        // where to go on return from uSwitch
     111            uint32_t mxcr;                                  // SSE Status and Control bits (control bits are preserved across function calls)
     112            uint16_t fcw;                                   // X97 FPU control word (preserved across function calls)
     113            void *rturn;                                      // where to go on return from uSwitch
    112114            void *dummyReturn;                          // NULL return address to provide proper alignment
    113115      };
     
    120122      ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[0] = this;
    121123      ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[1] = invoke;
     124      ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
     125      ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
    122126#else
    123127      #error Only __i386__ and __x86_64__ is supported for threads in cfa
  • src/libcfa/concurrency/kernel.c

    rdbe8f244 rfe26fbf  
    4343};
    4444
    45 DECL_COROUTINE(processorCtx_t)
     45DECL_COROUTINE(processorCtx_t);
    4646
    4747#define KERNEL_STORAGE(T,X) static char X##_storage[sizeof(T)]
  • src/libcfa/concurrency/threads

    rdbe8f244 rfe26fbf  
    3232};
    3333
    34 #define DECL_THREAD(X) thread* get_thread(X* this) { return &this->t; } void main(X* this);
     34#define DECL_THREAD(X) thread* get_thread(X* this) { return &this->t; } void main(X* this)
    3535
    3636forall( dtype T | is_thread(T) )
  • src/libcfa/containers/vector

    rdbe8f244 rfe26fbf  
    118118}
    119119
    120 forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
    121 static inline const T* cbegin(const vector(T, allocator_t)* this)
    122 {
    123         return data(&this->storage);
    124 }
     120// forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
     121// static inline const T* cbegin(const vector(T, allocator_t)* this)
     122// {
     123//      return data(&this->storage);
     124// }
    125125
    126126forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
     
    130130}
    131131
    132 forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
    133 static inline const T* cend(const vector(T, allocator_t)* this)
    134 {
    135         return data(&this->storage) + this->size;
    136 }
     132// forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
     133// static inline const T* cend(const vector(T, allocator_t)* this)
     134// {
     135//      return data(&this->storage) + this->size;
     136// }
    137137
    138138//------------------------------------------------------------------------------
  • src/main.cc

    rdbe8f244 rfe26fbf  
    3535#include "CodeGen/FixNames.h"
    3636#include "CodeGen/FixMain.h"
     37#include "CodeTools/DeclStats.h"
    3738#include "ControlStruct/Mutate.h"
    3839#include "SymTab/Validate.h"
     
    6162        bboxp = false,
    6263        ctorinitp = false,
     64        declstatsp = false,
    6365        exprp = false,
    6466        expraltp = false,
     
    244246                } // if
    245247
     248                if ( declstatsp ) {
     249                        CodeTools::printDeclStats( translationUnit );
     250                        deleteAll( translationUnit );
     251                        return 0;
     252                }
     253
    246254                if ( bresolvep ) {
    247255                        dump( translationUnit );
     
    339347
    340348void parse_cmdline( int argc, char * argv[], const char *& filename ) {
    341         enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, };
     349        enum { Ast, Bbox, Bresolver, CtorInitFix, DeclStats, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, };
    342350
    343351        static struct option long_opts[] = {
     
    346354                { "before-resolver", no_argument, 0, Bresolver },
    347355                { "ctorinitfix", no_argument, 0, CtorInitFix },
     356                { "decl-stats", no_argument, 0, DeclStats },
    348357                { "expr", no_argument, 0, Expr },
    349358                { "expralt", no_argument, 0, ExprAlt },
     
    365374
    366375        int c;
    367         while ( (c = getopt_long( argc, argv, "abBcefglmnpqrstTvyzD:F:", long_opts, &long_index )) != -1 ) {
     376        while ( (c = getopt_long( argc, argv, "abBcdefglmnpqrstTvyzD:F:", long_opts, &long_index )) != -1 ) {
    368377                switch ( c ) {
    369378                  case Ast:
     
    381390                  case 'c':
    382391                        ctorinitp = true;
     392                        break;
     393                  case DeclStats:
     394                  case 'd':
     395                    declstatsp = true;
    383396                        break;
    384397                  case Expr:
  • src/prelude/Makefile.am

    rdbe8f244 rfe26fbf  
    2828
    2929# create forward declarations for gcc builtins
    30 builtins.cf : builtins.c
    31         ${AM_V_GEN}if [ -e $< ] ; then \
    32                 @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    33         fi
     30builtins.cf : builtins.c prototypes.sed
     31        ${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -f prototypes.sed > $@
    3432
    3533builtins.c : builtins.def prototypes.awk
    36         ${AM_V_GEN}if [ -e $< ] ; then \
    37                 @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    38         fi
     34        ${AM_V_GEN}@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@
    3935
    4036builtins.def :
  • src/prelude/Makefile.in

    rdbe8f244 rfe26fbf  
    424424
    425425# create forward declarations for gcc builtins
    426 builtins.cf : builtins.c
    427         ${AM_V_GEN}if [ -e $< ] ; then \
    428                 @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    429         fi
     426builtins.cf : builtins.c prototypes.sed
     427        ${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -f prototypes.sed > $@
    430428
    431429builtins.c : builtins.def prototypes.awk
    432         ${AM_V_GEN}if [ -e $< ] ; then \
    433                 @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    434         fi
     430        ${AM_V_GEN}@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@
    435431
    436432builtins.def :
  • src/prelude/builtins.c

    rdbe8f244 rfe26fbf  
    33#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)
    44
     5#define BT_BOOL _Bool
    56#define BT_UINTMAX unsigned long int
    67#define BT_UINT16 short int
     
    2223#define BT_LONGLONG long long
    2324#define BT_LONG long
    24 #define BT_DFLOAT32 _Decimal32
    25 #define BT_DFLOAT64 _Decimal64
    26 #define BT_DFLOAT128 _Decimal128
     25#define BT_DFLOAT32 __Unsupported
     26#define BT_DFLOAT64 __Unsupported
     27#define BT_DFLOAT128 __Unsupported
    2728#define BT_DOUBLEPTR double *
    2829#define BT_DOUBLE double
    2930#define BT_FLOATPTR float *
     31#define BT_FLOAT128X __Unsupported
     32#define BT_FLOAT128 __Unsupported
     33#define BT_FLOAT64X __Unsupported
     34#define BT_FLOAT64 __Unsupported
     35#define BT_FLOAT32X __Unsupported
     36#define BT_FLOAT32 __Unsupported
     37#define BT_FLOAT16 __Unsupported
    3038#define BT_FLOAT float
     39#define BT_CONST_VPTR const volatile void *
    3140#define BT_CONST_PTR const void *
    3241#define BT_CONST_STRING const char *
     42#define BT_CONST_TM_PTR const struct tm *
    3343#define BT_PTR_FN_VOID_VAR_PTR_SIZE
    3444#define BT_PTR_CONST_STRING char *const
    3545#define BT_PTRMODE_PTR
    3646#define BT_PTRPTR void **
     47#define BT_VPTR volatile void *
    3748#define BT_PTR void *
    3849#define BT_VOID void
     
    4758#define BT_SSIZE long int
    4859#define BT_PID int
    49 
    50 #define BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_LONGDOUBLE)
    51 #define BT_FN_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VALIST_ARG)
    52 #define BT_FN_VOID_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR)
    53 #define BT_FN_INT_CONST_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
    54 #define BT_FN_VOID_VALIST_REF(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF)
    55 #define BT_FN_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_COMPLEX_FLOAT)
    56 #define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)
    57 #define BT_FN_VOID_PTR_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_PTR)
    58 #define BT_FN_FLOAT_FLOAT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONGDOUBLE)
    59 #define BT_FN_INT_UINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINT)
    60 #define BT_FN_CONST_STRING(NAME) FUNC_SIMPLE(BT_CONST_STRING, NAME)
    61 #define BT_FN_FLOAT_FLOAT_FLOATPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOATPTR)
     60#define BT_I16 __int128
     61#define BT_I8 long long int
     62#define BT_I4 int
     63#define BT_I2 short
     64#define BT_I1 char
     65
    6266#define BT_FN_INT_INT_INT_INT_INT_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_INT, BT_INT, BT_INT, BT_INT, BT_VAR)
    63 #define BT_FN_INT_INT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT)
    64 #define BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
    6567#define BT_FN_INT_LONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONG)
    66 #define BT_FN_INT_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)
    67 #define BT_FN_VOID_PTR_WORD_WORD_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
    6868#define BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
    69 #define BT_FN_INT_DFLOAT128(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT128)
    70 #define BT_FN_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE)
    71 #define BT_FN_FLOAT_CONST_STRING(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_CONST_STRING)
    72 #define BT_FN_LONGDOUBLE_LONGDOUBLE_INT(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INT)
    73 #define BT_FN_FLOAT_FLOAT_INT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INT)
    74 #define BT_FN_INT_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING)
    75 #define BT_FN_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGDOUBLE)
    76 #define BT_FN_SIZE_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING, BT_CONST_STRING)
     69#define BT_FN_VOID_VPTR_I4_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I4, BT_INT)
     70#define BT_FN_I1_VPTR_I1_INT(NAME) FUNC_SIMPLE(BT_I1, NAME, BT_VPTR, BT_I1, BT_INT)
     71#define BT_FN_INT(NAME) FUNC_SIMPLE(BT_INT, NAME)
     72#define BT_FN_STRING_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING)
     73#define BT_FN_PTR_CONST_PTR_SIZE_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_SIZE, BT_VAR)
     74#define BT_FN_INT_ULONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONGLONG)
     75#define BT_FN_INT_CONST_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
     76#define BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
     77#define BT_FN_STRING_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE)
    7778#define BT_FN_VOID_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_SIZE)
    78 #define BT_FN_INT_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING)
    79 #define BT_FN_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME)
    80 #define BT_FN_INT_UINTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINTMAX)
    81 #define BT_FN_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME)
    82 #define BT_FN_INT(NAME) FUNC_SIMPLE(BT_INT, NAME)
    83 #define BT_FN_FLOAT_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_INTPTR)
    84 #define BT_FN_DOUBLE_DOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONGDOUBLE)
    85 #define BT_FN_PTR_CONST_PTR_SIZE_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_SIZE, BT_VAR)
    86 #define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
    87 #define BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)
    88 #define BT_FN_STRING_CONST_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
    89 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONG(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONG)
    90 #define BT_FN_COMPLEX_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_DOUBLE)
    91 #define BT_FN_VOID(NAME) FUNC_SIMPLE(BT_VOID, NAME)
    92 #define BT_FN_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT)
    93 #define BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
    94 #define BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_FLOAT, BT_FLOATPTR, BT_FLOATPTR)
    95 #define BT_FN_INT_DFLOAT64(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT64)
    96 #define BT_FN_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INTPTR)
    97 #define BT_FN_WINT_WINT(NAME) FUNC_SIMPLE(BT_WINT, NAME, BT_WINT)
    98 #define BT_FN_LONGLONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGDOUBLE)
    99 #define BT_FN_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE)
    100 #define BT_FN_DFLOAT64_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_CONST_STRING)
    101 #define BT_FN_DOUBLE_DOUBLE_INT(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INT)
    10279#define BT_FN_INTMAX_INTMAX(NAME) FUNC_SIMPLE(BT_INTMAX, NAME, BT_INTMAX)
    103 #define BT_FN_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VAR)
    104 #define BT_FN_LONG_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG, BT_LONG)
    105 #define BT_FN_DOUBLE_DOUBLE_LONG(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONG)
    106 #define BT_FN_LONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONGDOUBLE)
    107 #define BT_FN_FLOAT_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_FLOAT)
    108 #define BT_FN_VOID_VALIST_REF_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VAR)
    109 #define BT_FN_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING)
     80#define BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
     81#define BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
    11082#define BT_FN_VOID_VALIST_REF_VALIST_ARG(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VALIST_ARG)
    11183#define BT_FN_LONGDOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_CONST_STRING)
     84#define BT_FN_LONGLONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_FLOAT)
     85#define BT_FN_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME)
     86#define BT_FN_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGDOUBLE)
     87#define BT_FN_BOOL_VPTR_I2_I2(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I2, BT_I2)
     88#define BT_FN_FLOAT_FLOAT_FLOATPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOATPTR)
     89#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
     90#define BT_FN_VOID_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_INT)
     91#define BT_FN_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG)
     92#define BT_FN_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DOUBLE)
     93#define BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I16, BT_BOOL, BT_INT, BT_INT)
     94#define BT_FN_UINT(NAME) FUNC_SIMPLE(BT_UINT, NAME)
     95#define BT_FN_DOUBLE_DOUBLE_INT(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INT)
     96#define BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR, BT_LONGDOUBLEPTR)
     97#define BT_FN_INT_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VAR)
     98#define BT_FN_BOOL_INT_INT_INTPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_INT, BT_INT, BT_INTPTR)
     99#define BT_FN_DFLOAT32_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_DFLOAT32)
     100#define BT_FN_VOID_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME)
     101#define BT_FN_INT_CONST_STRING_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_FILEPTR)
     102#define BT_FN_VOID_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_INT)
     103#define BT_FN_DFLOAT128_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_CONST_STRING)
     104#define BT_FN_BOOL_VPTR_I16_I16(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I16, BT_I16)
     105#define BT_FN_BOOL_LONG_LONG_LONGPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_LONG, BT_LONG, BT_LONG, BT_PTR)
     106#define BT_FN_INT_DFLOAT64(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT64)
     107#define BT_FN_LONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_FLOAT)
     108#define BT_FN_CONST_STRING(NAME) FUNC_SIMPLE(BT_CONST_STRING, NAME)
     109#define BT_FN_SIZE_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING, BT_CONST_STRING)
     110#define BT_FN_COMPLEX_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_FLOAT)
     111#define BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_SIZE, BT_VPTR, BT_PTR, BT_PTR, BT_INT)
     112#define BT_FN_STRING_CONST_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
     113#define BT_FN_INT_CONST_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VAR)
     114#define BT_FN_LONGDOUBLE_LONGDOUBLE_INT(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INT)
     115#define BT_FN_BOOL_VPTR_I1_I1(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I1, BT_I1)
     116#define BT_FN_DOUBLE_DOUBLE_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLEPTR)
     117#define BT_FN_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE)
     118#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONG(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONG)
     119#define BT_FN_I16_VPTR_I16_INT(NAME) FUNC_SIMPLE(BT_I16, NAME, BT_VPTR, BT_I16, BT_INT)
     120#define BT_FN_INT_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
     121#define BT_FN_INT_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VAR)
     122#define BT_FN_UINT64_UINT64(NAME) FUNC_SIMPLE(BT_UINT64, NAME, BT_UINT64)
     123#define BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I2, BT_BOOL, BT_INT, BT_INT)
     124#define BT_FN_PTR_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE)
     125#define BT_FN_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_INT)
     126#define BT_FN_FLOAT_FLOAT_LONG(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONG)
     127#define BT_FN_FLOAT_CONST_STRING(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_CONST_STRING)
     128#define BT_FN_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INTPTR)
     129#define BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
     130#define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
     131#define BT_FN_INT_LONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGLONG)
     132#define BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
     133#define BT_FN_PTR_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR)
     134#define BT_FN_I1_VPTR_I1_I1(NAME) FUNC_SIMPLE(BT_I1, NAME, BT_VPTR, BT_I1, BT_I1)
     135#define BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)
     136#define BT_FN_FLOAT_FLOAT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONGDOUBLE)
     137#define BT_FN_DOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_CONST_STRING)
     138#define BT_FN_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME)
     139#define BT_FN_I16_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I16, NAME, BT_CONST_VPTR, BT_INT)
     140#define BT_FN_FLOAT_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_FLOAT)
     141#define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)
     142#define BT_FN_SIZE_CONST_PTR_INT(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_INT)
     143#define BT_FN_DOUBLE_DOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONGDOUBLE)
     144#define BT_FN_LONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONGDOUBLE)
     145#define BT_FN_BOOL_SIZE_CONST_VPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_SIZE, BT_CONST_VPTR)
     146#define BT_FN_I16_VPTR_I16(NAME) FUNC_SIMPLE(BT_I16, NAME, BT_VPTR, BT_I16)
     147#define BT_FN_VOID_VPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR)
     148#define BT_FN_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME)
     149#define BT_FN_VOID_PTRMODE_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTRMODE_PTR)
     150#define BT_FN_WINT_WINT(NAME) FUNC_SIMPLE(BT_WINT, NAME, BT_WINT)
     151#define BT_FN_BOOL_VPTR_I8_I8(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I8, BT_I8)
     152#define BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INTPTR)
     153#define BT_FN_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INTPTR)
     154#define BT_FN_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_COMPLEX_FLOAT)
     155#define BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I8, BT_BOOL, BT_INT, BT_INT)
     156#define BT_FN_I4_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I4, NAME, BT_CONST_VPTR, BT_INT)
     157#define BT_FN_INT_WINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_WINT)
     158#define BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_DOUBLE, BT_DOUBLEPTR, BT_DOUBLEPTR)
     159#define BT_FN_I8_VPTR_I8_INT(NAME) FUNC_SIMPLE(BT_I8, NAME, BT_VPTR, BT_I8, BT_INT)
     160#define BT_FN_VOID_PTR_WORD_WORD_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
     161#define BT_FN_I4_VPTR_I4_I4(NAME) FUNC_SIMPLE(BT_I4, NAME, BT_VPTR, BT_I4, BT_I4)
     162#define BT_FN_PTR_CONST_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_INT, BT_SIZE)
     163#define BT_FN_INT_UINTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINTMAX)
     164#define BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG, BT_PTR)
     165#define BT_FN_LONGLONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGDOUBLE)
     166#define BT_FN_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT)
     167#define BT_FN_INT_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
     168#define BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
     169#define BT_FN_INT_DFLOAT128(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT128)
     170#define BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR_FN_VOID_VAR_PTR_SIZE)
     171#define BT_FN_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE)
     172#define BT_FN_DFLOAT32_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_CONST_STRING)
     173#define BT_FN_LONG_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG, BT_LONG)
     174#define BT_FN_VOID_VPTR_I8_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I8, BT_INT)
     175#define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)
     176#define BT_FN_BOOL_VAR(NAME) FUNC_SIMPLE(BT_BOOL, NAME)
     177#define BT_FN_INT_FILEPTR_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VAR)
     178#define BT_FN_COMPLEX_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_DOUBLE)
     179#define BT_FN_INT_ULONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONG)
     180#define BT_FN_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_SIZE)
     181#define BT_FN_VOID(NAME) FUNC_SIMPLE(BT_VOID, NAME)
     182#define BT_FN_INT_DFLOAT32(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT32)
     183#define BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_SIZE, BT_CONST_VPTR, BT_PTR, BT_INT)
     184#define BT_FN_UNWINDWORD_PTR(NAME) FUNC_SIMPLE(BT_UNWINDWORD, NAME, BT_PTR)
     185#define BT_FN_I1_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I1, NAME, BT_CONST_VPTR, BT_INT)
     186#define BT_FN_INT_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)
     187#define BT_FN_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING)
     188#define BT_FN_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE, BT_SIZE)
     189#define BT_FN_VOID_VPTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_INT)
     190#define BT_FN_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME)
     191#define BT_FN_PTR_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME)
     192#define BT_FN_I8_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I8, NAME, BT_CONST_VPTR, BT_INT)
     193#define BT_FN_LONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_DOUBLE)
     194#define BT_FN_LONGLONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_DOUBLE)
     195#define BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I4, BT_BOOL, BT_INT, BT_INT)
     196#define BT_FN_VOID_CONST_PTR_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_VAR)
     197#define BT_FN_DOUBLE_DOUBLE_LONG(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONG)
     198#define BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_INTPTR)
     199#define BT_FN_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE)
     200#define BT_FN_INT_PTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTR)
    112201#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INTPTR)
    113 #define BT_FN_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE)
    114 #define BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
     202#define BT_FN_BOOL_VPTR_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_INT)
     203#define BT_FN_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VALIST_ARG)
     204#define BT_FN_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_COMPLEX_DOUBLE)
     205#define BT_FN_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE)
     206#define BT_FN_I2_VPTR_I2_INT(NAME) FUNC_SIMPLE(BT_I2, NAME, BT_VPTR, BT_I2, BT_INT)
     207#define BT_FN_INT_INT_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_FILEPTR)
     208#define BT_FN_DFLOAT64_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_DFLOAT64)
     209#define BT_FN_I8_VPTR_I8(NAME) FUNC_SIMPLE(BT_I8, NAME, BT_VPTR, BT_I8)
     210#define BT_FN_DOUBLE_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_INT, BT_DOUBLE)
     211#define BT_FN_I16_VPTR_I16_I16(NAME) FUNC_SIMPLE(BT_I16, NAME, BT_VPTR, BT_I16, BT_I16)
     212#define BT_FN_VOID_VPTR_I16_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I16, BT_INT)
     213#define BT_FN_VOID_VPTR_I1_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I1, BT_INT)
     214#define BT_FN_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME)
     215#define BT_FN_FLOAT_INT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_INT, BT_FLOAT)
     216#define BT_FN_I2_VPTR_I2_I2(NAME) FUNC_SIMPLE(BT_I2, NAME, BT_VPTR, BT_I2, BT_I2)
     217#define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT)
     218#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE)
     219#define BT_FN_VOID_VALIST_REF_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VAR)
     220#define BT_FN_UINT32_UINT32(NAME) FUNC_SIMPLE(BT_UINT32, NAME, BT_UINT32)
     221#define BT_FN_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT)
     222#define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
     223#define BT_FN_INT_CONST_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
     224#define BT_FN_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME)
     225#define BT_FN_FLOAT_FLOAT_INT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INT)
     226#define BT_FN_INT_UINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINT)
     227#define BT_FN_SIZE_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING)
     228#define BT_FN_PTR_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE)
     229#define BT_FN_I2_VPTR_I2(NAME) FUNC_SIMPLE(BT_I2, NAME, BT_VPTR, BT_I2)
     230#define BT_FN_UINT16_UINT16(NAME) FUNC_SIMPLE(BT_UINT16, NAME, BT_UINT16)
     231#define BT_FN_INT_INTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INTMAX)
     232#define BT_FN_VOID_PTR_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_PTR)
    115233#define BT_FN_STRING_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING)
    116 #define BT_FN_VOID_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_INT)
    117 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE)
    118 #define BT_FN_INT_ULONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONGLONG)
    119 #define BT_FN_INT_FILEPTR_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VAR)
    120 #define BT_FN_LONGLONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_DOUBLE)
    121 #define BT_FN_INT_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VAR)
    122 #define BT_FN_VOID_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_INT)
    123 #define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT)
    124 #define BT_FN_INT_WINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_WINT)
    125 #define BT_FN_PTR_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE)
    126 #define BT_FN_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_INT)
     234#define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
     235#define BT_FN_I2_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I2, NAME, BT_CONST_VPTR, BT_INT)
     236#define BT_FN_I1_VPTR_I1(NAME) FUNC_SIMPLE(BT_I1, NAME, BT_VPTR, BT_I1)
     237#define BT_FN_LONGLONG_LONGLONG(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGLONG)
     238#define BT_FN_PID(NAME) FUNC_SIMPLE(BT_PID, NAME)
     239#define BT_FN_I4_VPTR_I4(NAME) FUNC_SIMPLE(BT_I4, NAME, BT_VPTR, BT_I4)
     240#define BT_FN_I8_VPTR_I8_I8(NAME) FUNC_SIMPLE(BT_I8, NAME, BT_VPTR, BT_I8, BT_I8)
     241#define BT_FN_VOID_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR)
     242#define BT_FN_VOID_VPTR_I2_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I2, BT_INT)
     243#define BT_FN_VOID_SIZE_VPTR_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_SIZE, BT_VPTR, BT_PTR, BT_INT)
     244#define BT_FN_VOID_VALIST_REF(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF)
     245#define BT_FN_INT_PTRPTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTRPTR, BT_SIZE, BT_SIZE)
     246#define BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
     247#define BT_FN_INT_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING)
     248#define BT_FN_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VAR)
     249#define BT_FN_DFLOAT64_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_CONST_STRING)
     250#define BT_FN_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME)
     251#define BT_FN_PTR_PTR_INT_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
     252#define BT_FN_INT_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING)
     253#define BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_LONGDOUBLE)
     254#define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR)
     255#define BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_SIZE, BT_VPTR, BT_PTR, BT_PTR, BT_INT, BT_INT)
     256#define BT_FN_BOOL_UINT_UINT_UINTPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_UINT, BT_UINT, BT_UINT, BT_PTR)
     257#define BT_FN_BOOL_VPTR_I4_I4(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I4, BT_I4)
     258#define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
     259#define BT_FN_FLOAT_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_INTPTR)
     260#define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE)
     261#define BT_FN_I4_VPTR_I4_INT(NAME) FUNC_SIMPLE(BT_I4, NAME, BT_VPTR, BT_I4, BT_INT)
     262#define BT_FN_VOID_CONST_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_PTR, BT_SIZE)
     263#define BT_FN_DFLOAT128_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_DFLOAT128)
     264#define BT_FN_LONGDOUBLE_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_INT, BT_LONGDOUBLE)
     265#define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
     266#define BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
     267#define BT_FN_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME)
     268#define BT_FN_INT_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING)
     269#define BT_FN_INT_INT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT)
     270#define BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_FLOAT, BT_FLOATPTR, BT_FLOATPTR)
    127271#define BT_FN_INT_FLOAT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FLOAT)
    128 #define BT_FN_DOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_CONST_STRING)
    129 #define BT_FN_LONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_FLOAT)
    130 #define BT_FN_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE, BT_SIZE)
    131 #define BT_FN_STRING_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE)
    132 #define BT_FN_LONGLONG_LONGLONG(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGLONG)
    133 #define BT_FN_PTR_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR)
    134 #define BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
    135 #define BT_FN_FLOAT_FLOAT_LONG(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONG)
     272#define BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
     273#define BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VAR)
     274#define BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_SSIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)
     275#define BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_LONGLONG, BT_LONGLONG, BT_LONGLONG, BT_PTR)
     276#define BT_FN_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_SIZE)
     277#define BT_FN_PTR_UINT(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_UINT)
    136278#define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)
    137 #define BT_FN_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_SIZE)
    138 #define BT_FN_PTR_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME)
    139 #define BT_FN_SIZE_CONST_PTR_INT(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_INT)
    140 #define BT_FN_INT_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING)
    141 #define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
    142 #define BT_FN_INT_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
    143 #define BT_FN_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME)
    144 #define BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INTPTR)
    145 #define BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
    146 #define BT_FN_PTR_UINT(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_UINT)
    147 #define BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
    148 #define BT_FN_DFLOAT128_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_CONST_STRING)
    149 #define BT_FN_DOUBLE_DOUBLE_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLEPTR)
    150 #define BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_SSIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)
    151 #define BT_FN_DFLOAT32_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_DFLOAT32)
    152 #define BT_FN_INT_PTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTR)
    153 #define BT_FN_UINT32_UINT32(NAME) FUNC_SIMPLE(BT_UINT32, NAME, BT_UINT32)
    154 #define BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR_FN_VOID_VAR_PTR_SIZE)
    155 #define BT_FN_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DOUBLE)
    156 #define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)
    157 #define BT_FN_INT_ULONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONG)
    158 #define BT_FN_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INTPTR)
    159 #define BT_FN_UINT64_UINT64(NAME) FUNC_SIMPLE(BT_UINT64, NAME, BT_UINT64)
    160 #define BT_FN_STRING_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING)
    161 #define BT_FN_INT_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
    162 #define BT_FN_PTR_PTR_INT_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
    163 #define BT_FN_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_COMPLEX_DOUBLE)
    164 #define BT_FN_VOID_CONST_PTR_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_VAR)
    165 #define BT_FN_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME)
    166 #define BT_FN_INT_PTRPTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTRPTR, BT_SIZE, BT_SIZE)
    167 #define BT_FN_INT_CONST_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VAR)
    168 #define BT_FN_INT_DFLOAT32(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT32)
    169 #define BT_FN_DFLOAT64_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_DFLOAT64)
    170 #define BT_FN_VOID_CONST_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_PTR, BT_SIZE)
    171 #define BT_FN_UNWINDWORD_PTR(NAME) FUNC_SIMPLE(BT_UNWINDWORD, NAME, BT_PTR)
    172 #define BT_FN_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT)
    173 #define BT_FN_COMPLEX_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_FLOAT)
    174 #define BT_FN_UINT(NAME) FUNC_SIMPLE(BT_UINT, NAME)
    175 #define BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_INTPTR)
    176 #define BT_FN_UINT16_UINT16(NAME) FUNC_SIMPLE(BT_UINT16, NAME, BT_UINT16)
    177 #define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
    178 #define BT_FN_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE)
    179 #define BT_FN_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG)
    180 #define BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
    181 #define BT_FN_FLOAT_INT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_INT, BT_FLOAT)
    182 #define BT_FN_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME)
    183 #define BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
    184 #define BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_DOUBLE, BT_DOUBLEPTR, BT_DOUBLEPTR)
    185 #define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
    186 #define BT_FN_LONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_DOUBLE)
    187 #define BT_FN_SIZE_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING)
    188 #define BT_FN_LONGLONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_FLOAT)
    189 #define BT_FN_INT_CONST_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
    190 #define BT_FN_PTR_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE)
    191 #define BT_FN_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME)
    192 #define BT_FN_PID(NAME) FUNC_SIMPLE(BT_PID, NAME)
    193 #define BT_FN_INT_CONST_STRING_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_FILEPTR)
    194 #define BT_FN_INT_LONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGLONG)
    195 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
    196 #define BT_FN_INT_INT_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_FILEPTR)
    197 #define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
    198 #define BT_FN_VOID_PTRMODE_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTRMODE_PTR)
    199 #define BT_FN_INT_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VAR)
    200 #define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE)
    201 #define BT_FN_DFLOAT32_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_CONST_STRING)
    202 #define BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
    203 #define BT_FN_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_SIZE)
    204 #define BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VAR)
    205 #define BT_FN_DFLOAT128_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_DFLOAT128)
    206 #define BT_FN_DOUBLE_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_INT, BT_DOUBLE)
    207 #define BT_FN_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME)
    208 #define BT_FN_LONGDOUBLE_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_INT, BT_LONGDOUBLE)
    209 #define BT_FN_PTR_CONST_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_INT, BT_SIZE)
    210 #define BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR, BT_LONGDOUBLEPTR)
    211 #define BT_FN_INT_INTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INTMAX)
    212 #define BT_FN_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME)
    213 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR)
     279#define BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I1, BT_BOOL, BT_INT, BT_INT)
     280#define BT_FN_BOOL_ULONG_ULONG_ULONGPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_ULONG, BT_ULONG, BT_ULONG, BT_PTR)
    214281
    215282#include "builtins.def"
  • src/prelude/builtins.def

    rdbe8f244 rfe26fbf  
    11/* This file contains the definitions and documentation for the
    22   builtins used in the GNU compiler.
    3    Copyright (C) 2000-2014 Free Software Foundation, Inc.
     3   Copyright (C) 2000-2016 Free Software Foundation, Inc.
    44
    55This file is part of GCC.
     
    6363
    6464   The builtins is registered only if COND is true.  */
     65
     66/* A macro for builtins where the
     67   BUILT_IN_*_CHKP = BUILT_IN_* + BEGIN_CHKP_BUILTINS + 1
     68   enums should be defined too.  */
     69#ifndef DEF_BUILTIN_CHKP
     70#define DEF_BUILTIN_CHKP(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,      \
     71                         FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)  \
     72  DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P,     \
     73              NONANSI_P, ATTRS, IMPLICIT, COND)
     74#endif
    6575
    6676/* A GCC builtin (like __builtin_saveregs) is provided by the
     
    8898  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
    8999               true, true, false, ATTRS, true, true)
     100#undef DEF_LIB_BUILTIN_CHKP
     101#define DEF_LIB_BUILTIN_CHKP(ENUM, NAME, TYPE, ATTRS)   \
     102  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,     \
     103                    TYPE, true, true, false, ATTRS, true, true)
    90104
    91105/* Like DEF_LIB_BUILTIN, except that the function is not one that is
     
    97111  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
    98112               true, true, true, ATTRS, false, true)
     113#undef DEF_EXT_LIB_BUILTIN_CHKP
     114#define DEF_EXT_LIB_BUILTIN_CHKP(ENUM, NAME, TYPE, ATTRS)       \
     115  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,     \
     116                    TYPE, true, true, true, ATTRS, false, true)
    99117
    100118/* Like DEF_LIB_BUILTIN, except that the function is only a part of
     
    111129  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
    112130               true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
     131
     132/* Like DEF_LIB_BUILTIN, except that the function is only a part of
     133   the standard in C11 or above.  */
     134#undef DEF_C11_BUILTIN
     135#define DEF_C11_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
     136  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
     137               true, true, !flag_isoc11, ATTRS, targetm.libc_has_function (function_c11_misc), true)
    113138
    114139/* Like DEF_C99_BUILTIN, but for complex math functions.  */
     
    140165               false, ATTR_LAST, false, false)
    141166
    142 /* Builtin used by the implementation of GNU OpenMP.  None of these are
    143    actually implemented in the compiler; they're all in libgomp.  */
     167/* Builtin used by the implementation of OpenACC and OpenMP.  Few of these are
     168   actually implemented in the compiler; most are in libgomp.  */
     169/* These builtins also need to be enabled in offloading compilers invoked from
     170   mkoffload; for that purpose, we're checking the -foffload-abi flag here.  */
     171#undef DEF_GOACC_BUILTIN
     172#define DEF_GOACC_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
     173  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
     174               false, true, true, ATTRS, false, \
     175               (flag_openacc \
     176                || flag_offload_abi != OFFLOAD_ABI_UNSET))
     177#undef DEF_GOACC_BUILTIN_COMPILER
     178#define DEF_GOACC_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \
     179  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
     180               flag_openacc, true, true, ATTRS, false, true)
    144181#undef DEF_GOMP_BUILTIN
    145182#define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
    146183  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
    147184               false, true, true, ATTRS, false, \
    148                (flag_openmp || flag_tree_parallelize_loops))
     185               (flag_openacc \
     186                || flag_openmp \
     187                || flag_tree_parallelize_loops > 1 \
     188                || flag_cilkplus \
     189                || flag_offload_abi != OFFLOAD_ABI_UNSET))
    149190
    150191/* Builtin used by implementation of Cilk Plus.  Most of these are decomposed
     
    170211               true, true, true, ATTRS, true, \
    171212              (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_THREAD \
    172                                 | SANITIZE_UNDEFINED)))
     213                                | SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT) \
     214               || flag_sanitize_coverage))
    173215
    174216#undef DEF_CILKPLUS_BUILTIN
     
    176218  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_FN_INT_VAR, BT_LAST, \
    177219               false, false, false, ATTRS, false, flag_cilkplus)
     220
     221/* Builtin used by the implementation of Pointer Bounds Checker.  */
     222#undef DEF_CHKP_BUILTIN
     223#define DEF_CHKP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
     224  DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE,     \
     225                    TYPE, true, true, false, ATTRS, true, true)
    178226
    179227/* Define an attribute list for math functions that are normally
     
    224272DEF_C99_BUILTIN        (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
    225273DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
     274DEF_C11_BUILTIN        (BUILT_IN_ALIGNED_ALLOC, "aligned_alloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LIST)
    226275DEF_LIB_BUILTIN        (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
    227276DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
     
    428477DEF_C99_BUILTIN        (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
    429478DEF_C99_BUILTIN        (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
    430 DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
    431 DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
    432 DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
     479DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
     480DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
     481DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
    433482DEF_C99_BUILTIN        (BUILT_IN_ROUND, "round", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
    434483DEF_C99_BUILTIN        (BUILT_IN_ROUNDF, "roundf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
     
    443492DEF_C99_BUILTIN        (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
    444493DEF_C99_BUILTIN        (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
    445 DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
     494DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
    446495DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
    447496DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
     
    569618DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    570619DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    571 DEF_LIB_BUILTIN        (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
    572 DEF_LIB_BUILTIN        (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
    573 DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    574 DEF_LIB_BUILTIN        (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
     620DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
     621DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
     622DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
     623DEF_LIB_BUILTIN_CHKP   (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
    575624DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    576 DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
     625DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
    577626DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    578627DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    579 DEF_LIB_BUILTIN        (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
    580 DEF_LIB_BUILTIN        (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
     628DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
     629DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    581630DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    582 DEF_LIB_BUILTIN        (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
     631DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
    583632DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    584633DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
    585634DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
    586 DEF_LIB_BUILTIN        (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
     635DEF_LIB_BUILTIN_CHKP   (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    587636DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
    588637DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
     
    658707DEF_C94_BUILTIN        (BUILT_IN_TOWUPPER, "towupper", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
    659708
     709/* Category: integer overflow checking builtins.  */
     710DEF_GCC_BUILTIN        (BUILT_IN_ADD_OVERFLOW, "add_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
     711DEF_GCC_BUILTIN        (BUILT_IN_SUB_OVERFLOW, "sub_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
     712DEF_GCC_BUILTIN        (BUILT_IN_MUL_OVERFLOW, "mul_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)
     713/* Clang compatibility.  */
     714DEF_GCC_BUILTIN        (BUILT_IN_SADD_OVERFLOW, "sadd_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
     715DEF_GCC_BUILTIN        (BUILT_IN_SADDL_OVERFLOW, "saddl_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
     716DEF_GCC_BUILTIN        (BUILT_IN_SADDLL_OVERFLOW, "saddll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
     717DEF_GCC_BUILTIN        (BUILT_IN_SSUB_OVERFLOW, "ssub_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
     718DEF_GCC_BUILTIN        (BUILT_IN_SSUBL_OVERFLOW, "ssubl_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
     719DEF_GCC_BUILTIN        (BUILT_IN_SSUBLL_OVERFLOW, "ssubll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
     720DEF_GCC_BUILTIN        (BUILT_IN_SMUL_OVERFLOW, "smul_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)
     721DEF_GCC_BUILTIN        (BUILT_IN_SMULL_OVERFLOW, "smull_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)
     722DEF_GCC_BUILTIN        (BUILT_IN_SMULLL_OVERFLOW, "smulll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
     723DEF_GCC_BUILTIN        (BUILT_IN_UADD_OVERFLOW, "uadd_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
     724DEF_GCC_BUILTIN        (BUILT_IN_UADDL_OVERFLOW, "uaddl_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
     725DEF_GCC_BUILTIN        (BUILT_IN_UADDLL_OVERFLOW, "uaddll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
     726DEF_GCC_BUILTIN        (BUILT_IN_USUB_OVERFLOW, "usub_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
     727DEF_GCC_BUILTIN        (BUILT_IN_USUBL_OVERFLOW, "usubl_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
     728DEF_GCC_BUILTIN        (BUILT_IN_USUBLL_OVERFLOW, "usubll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
     729DEF_GCC_BUILTIN        (BUILT_IN_UMUL_OVERFLOW, "umul_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)
     730DEF_GCC_BUILTIN        (BUILT_IN_UMULL_OVERFLOW, "umull_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)
     731DEF_GCC_BUILTIN        (BUILT_IN_UMULLL_OVERFLOW, "umulll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)
     732
    660733/* Category: miscellaneous builtins.  */
    661 DEF_LIB_BUILTIN        (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
     734DEF_LIB_BUILTIN        (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
    662735DEF_LIB_BUILTIN        (BUILT_IN_ABS, "abs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
    663736DEF_GCC_BUILTIN        (BUILT_IN_AGGREGATE_INCOMING_ADDRESS, "aggregate_incoming_address", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
     
    794867/* Object size checking builtins.  */
    795868DEF_GCC_BUILTIN        (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
    796 DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
    797 DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
    798 DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    799 DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    800 DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
     869DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
     870DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
     871DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
     872DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
     873DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    801874DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    802 DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    803 DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
     875DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
     876DEF_EXT_LIB_BUILTIN_CHKP (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    804877DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
    805878DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
     
    854927DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST)
    855928
    856 #if 0
    857929/* Synchronization Primitives.  */
    858930#include "sync-builtins.def"
    859931
    860 /* OpenMP builtins.  */
     932#if 0
     933/* Offloading and Multi Processing builtins.  */
    861934#include "omp-builtins.def"
    862935
     
    872945/* Cilk Plus builtins.  */
    873946#include "cilkplus.def"
     947
     948/* Pointer Bounds Checker builtins.  */
     949#include "chkp-builtins.def"
    874950#endif
     951
     952#undef DEF_BUILTIN_CHKP
     953#undef DEF_BUILTIN
  • src/prelude/prototypes.awk

    rdbe8f244 rfe26fbf  
    1717
    1818BEGIN {
    19     FS = "("
     19  FS = "[( )]"
    2020    # order so string search is longest string
    21     types[0]  = "UINTMAX";                                      vtypes[0]  = "unsigned long int"
    22     types[1]  = "UINT16";                                       vtypes[1]  = "short int"
    23     types[2]  = "UINT32";                                       vtypes[2]  = "int"
    24     types[3]  = "UINT64";                                       vtypes[3]  = "long long int"
    25     types[4]  = "UINT";                                         vtypes[4]  = "unsigned int"
    26     types[5]  = "INTMAX";                                       vtypes[5]  = "long int"
    27     types[6]  = "INTPTR";                                       vtypes[6]  = "int *"
    28     types[7]  = "WINT";                                         vtypes[7]  = "unsigned int"
    29     types[8]  = "INT";                                          vtypes[8]  = "int"
    30     types[9]  = "ULONGLONG";                            vtypes[9]  = "unsigned long long"
    31     types[10] = "ULONG";                                        vtypes[10] = "unsigned long"
    32     types[11] = "UNSIGNED";                                     vtypes[11] = "unsigned"
    33     types[12] = "COMPLEX_LONGDOUBLE";           vtypes[12] = "_Complex long double"
    34     types[13] = "COMPLEX_DOUBLE";                       vtypes[13] = "_Complex double"
    35     types[14] = "COMPLEX_FLOAT";                        vtypes[14] = "_Complex float"
    36     types[15] = "LONGDOUBLEPTR";                        vtypes[15] = "long double *"
    37     types[16] = "LONGDOUBLE";                           vtypes[16] = "long double"
    38     types[17] = "LONGLONG";                                     vtypes[17] = "long long"
    39     types[18] = "LONG";                                         vtypes[18] = "long"
    40     types[19] = "DFLOAT32";                                     vtypes[19] = "_Decimal32"
    41     types[20] = "DFLOAT64";                                     vtypes[20] = "_Decimal64"
    42     types[21] = "DFLOAT128";                            vtypes[21] = "_Decimal128"
    43     types[22] = "DOUBLEPTR";                            vtypes[22] = "double *"
    44     types[23] = "DOUBLE";                                       vtypes[23] = "double"
    45     types[24] = "FLOATPTR";                                     vtypes[24] = "float *"
    46     types[25] = "FLOAT";                                        vtypes[25] = "float"
    47     types[26] = "CONST_PTR";                            vtypes[26] = "const void *"
    48     types[27] = "CONST_STRING";                         vtypes[27] = "const char *"
    49     types[28] = "PTR_FN_VOID_VAR_PTR_SIZE";     vtypes[28] = ""
    50     types[29] = "PTR_CONST_STRING";                     vtypes[29] = "char *const"
    51     types[30] = "PTRMODE_PTR";                          vtypes[30] = ""
    52     types[31] = "PTRPTR";                                       vtypes[31] = "void **"
    53     types[32] = "PTR";                                          vtypes[32] = "void *"
    54     types[33] = "VOID";                                         vtypes[33] = "void"
    55     types[34] = "STRING";                                       vtypes[34] = "char *"
    56     types[35] = "FILEPTR";                                      vtypes[35] = "struct _IO_FILE *"
    57     types[36] = "SIZE";                                         vtypes[36] = "unsigned long"
    58     types[37] = "VAR";                                          vtypes[37] = "..."
    59     types[38] = "VALIST_ARG";                           vtypes[38] = "__builtin_va_list"
    60     types[39] = "VALIST_REF";                           vtypes[39] = "__builtin_va_list"
    61     types[40] = "UNWINDWORD";                           vtypes[40] = "void *"
    62     types[41] = "WORD";                                         vtypes[41] = ""
    63     types[42] = "SSIZE";                                        vtypes[42] = "long int"
    64     types[43] = "PID";                                          vtypes[43] = "int"
    65     N = 44
     21    i=-1
     22    types[i+=1] = "BOOL";                                                         vtypes[i] = "_Bool"
     23    types[i+=1] = "UINTMAX";                                            vtypes[i] = "unsigned long int"
     24    types[i+=1] = "UINT16";                                               vtypes[i] = "short int"
     25    types[i+=1] = "UINT32";                                               vtypes[i] = "int"
     26    types[i+=1] = "UINT64";                                               vtypes[i] = "long long int"
     27    types[i+=1] = "UINT";                                                         vtypes[i] = "unsigned int"
     28    types[i+=1] = "INTMAX";                                               vtypes[i] = "long int"
     29    types[i+=1] = "INTPTR";                                               vtypes[i] = "int *"
     30    types[i+=1] = "WINT";                                                         vtypes[i] = "unsigned int"
     31    types[i+=1] = "INT";                                                          vtypes[i] = "int"
     32    types[i+=1] = "ULONGLONG";                                  vtypes[i] = "unsigned long long"
     33    types[i+=1] = "ULONG";                                                vtypes[i] = "unsigned long"
     34    types[i+=1] = "UNSIGNED";                                           vtypes[i] = "unsigned"
     35    types[i+=1] = "COMPLEX_LONGDOUBLE";             vtypes[i] = "_Complex long double"
     36    types[i+=1] = "COMPLEX_DOUBLE";                           vtypes[i] = "_Complex double"
     37    types[i+=1] = "COMPLEX_FLOAT";                            vtypes[i] = "_Complex float"
     38    types[i+=1] = "LONGDOUBLEPTR";                            vtypes[i] = "long double *"
     39    types[i+=1] = "LONGDOUBLE";                                 vtypes[i] = "long double"
     40    types[i+=1] = "LONGLONG";                                           vtypes[i] = "long long"
     41    types[i+=1] = "LONG";                                                         vtypes[i] = "long"
     42    types[i+=1] = "DFLOAT32";                                           vtypes[i] = "__Unsupported"
     43    types[i+=1] = "DFLOAT64";                                           vtypes[i] = "__Unsupported"
     44    types[i+=1] = "DFLOAT128";                                  vtypes[i] = "__Unsupported"
     45    types[i+=1] = "DOUBLEPTR";                              vtypes[i] = "double *"
     46    types[i+=1] = "DOUBLE";                                               vtypes[i] = "double"
     47    types[i+=1] = "FLOATPTR";                                           vtypes[i] = "float *"
     48    types[i+=1] = "FLOAT128X";                                              vtypes[i] = "__Unsupported"
     49    types[i+=1] = "FLOAT128";                                                 vtypes[i] = "__Unsupported"
     50    types[i+=1] = "FLOAT64X";                                                 vtypes[i] = "__Unsupported"
     51    types[i+=1] = "FLOAT64";                                                  vtypes[i] = "__Unsupported"
     52    types[i+=1] = "FLOAT32X";                                                 vtypes[i] = "__Unsupported"
     53    types[i+=1] = "FLOAT32";                                                  vtypes[i] = "__Unsupported"
     54    types[i+=1] = "FLOAT16";                                                  vtypes[i] = "__Unsupported"
     55    types[i+=1] = "FLOAT";                                                vtypes[i] = "float"
     56    types[i+=1] = "CONST_VPTR";                                       vtypes[i] = "const volatile void *"
     57    types[i+=1] = "CONST_PTR";                                  vtypes[i] = "const void *"
     58    types[i+=1] = "CONST_STRING";                                     vtypes[i] = "const char *"
     59    types[i+=1] = "CONST_TM_PTR";                               vtypes[i] = "const struct tm *"
     60    types[i+=1] = "PTR_FN_VOID_VAR_PTR_SIZE";   vtypes[i] = ""
     61    types[i+=1] = "PTR_CONST_STRING";                       vtypes[i] = "char *const"
     62    types[i+=1] = "PTRMODE_PTR";                                      vtypes[i] = ""
     63    types[i+=1] = "PTRPTR";                                               vtypes[i] = "void **"
     64    types[i+=1] = "VPTR";                                                   vtypes[i] = "volatile void *"
     65    types[i+=1] = "PTR";                                                          vtypes[i] = "void *"
     66    types[i+=1] = "VOID";                                                         vtypes[i] = "void"
     67    types[i+=1] = "STRING";                                               vtypes[i] = "char *"
     68    types[i+=1] = "FILEPTR";                                            vtypes[i] = "struct _IO_FILE *"
     69    types[i+=1] = "SIZE";                                                         vtypes[i] = "unsigned long"
     70    types[i+=1] = "VAR";                                                          vtypes[i] = "..."
     71    types[i+=1] = "VALIST_ARG";                                 vtypes[i] = "__builtin_va_list"
     72    types[i+=1] = "VALIST_REF";                                 vtypes[i] = "__builtin_va_list"
     73    types[i+=1] = "UNWINDWORD";                                 vtypes[i] = "void *"
     74    types[i+=1] = "WORD";                                                         vtypes[i] = ""
     75    types[i+=1] = "SSIZE";                                                vtypes[i] = "long int"
     76    types[i+=1] = "PID";                                                          vtypes[i] = "int"
     77    types[i+=1] = "I16";                                                          vtypes[i] = "__int128"
     78    types[i+=1] = "I8";                                                     vtypes[i] = "long long int"
     79    types[i+=1] = "I4";                                                     vtypes[i] = "int"
     80    types[i+=1] = "I2";                                                     vtypes[i] = "short"
     81    types[i+=1] = "I1";                                                     vtypes[i] = "char"
     82    N = i + 1
    6683} # BEGIN
    6784
    68 /^BT_/ { prototypes[$1] = $1 }
     85/BT_FN/ {
     86    for (i = 1; i <= NF; i++) {
     87      if( match($i, "BT_FN") != 0 ) {
     88        prototypes[$i] = $i
     89      }
     90    }
     91  }
    6992
    7093END {
     
    80103
    81104    for ( prototype in prototypes ) {
    82                 if ( index( "BT_LAST", prototype ) == 1 ) {
    83                         continue
    84                 } # if
     105      # printf( "//\"%s\"\n", prototype )
     106      if ( index( "BT_LAST", prototype ) == 1 ) {
     107        continue
     108      } # if
    85109
    86                 printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )
     110      printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )
    87111
    88                 if ( sub( "BT_FN_", "", prototype ) == 0 ) {
    89                         printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )
    90                         exit 0
    91                 } # if
     112      if ( sub( "BT_FN_", "", prototype ) == 0 ) {
     113        printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )
     114        exit 0
     115      } # if
    92116
    93                 # generate function return type as macro
    94                 for ( t = 0; t < N; t += 1 ) {                                  # find longest match
    95                         type = types[t];
    96                         if ( index( prototype, type ) == 1 ) {          # found match
    97                                 printf( "BT_%s, NAME", type )
    98                                 sub( type, "", prototype )
    99                                 break;
    100                         } # if
    101                 } # for
     117      # generate function return type as macro
     118      for ( t = 0; t < N; t += 1 ) {                                    # find longest match
     119        type = types[t];
     120        if ( index( prototype, type ) == 1 ) {          # found match
     121          printf( "BT_%s, NAME", type )
     122          sub( type, "", prototype )
     123          break;
     124        } # if
     125      } # for
    102126
    103                 # generate function parameter types as macro
    104                 if ( index( prototype, "VAR" ) != 2 ) {                 # C-style empty parameters ?
    105                         for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed
    106                                 sub( "_", "", prototype)                                # remove "_"
    107                                 printf( ", ", type )
    108                                 temp = prototype
    109                                 for ( t = 0; t < N; t += 1 ) {                  # find longest match
    110                                         type = types[t];
    111                                         if ( index( prototype, type ) == 1 ) { # found match
    112                                                 printf( "BT_%s", type )
    113                                                 sub( type, "", prototype )
    114                                                 break;
    115                                         } # if
    116                                 } # for
    117                                 if ( temp == prototype ) {                              # no match found for parameter in macro table
    118                                         printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )
    119                                         exit 0
    120                                 } # if
    121                         } # for
    122                 } # if
    123                 printf( ")\n" )
     127      # generate function parameter types as macro
     128      if ( index( prototype, "VAR" ) != 2 ) {                   # C-style empty parameters ?
     129        for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed
     130          sub( "_", "", prototype)                              # remove "_"
     131          printf( ", ", type )
     132          temp = prototype
     133          for ( t = 0; t < N; t += 1 ) {                        # find longest match
     134            type = types[t];
     135            if ( index( prototype, type ) == 1 ) { # found match
     136              printf( "BT_%s", type )
     137              sub( type, "", prototype )
     138              break;
     139            } # if
     140          } # for
     141          if ( temp == prototype ) {                            # no match found for parameter in macro table
     142            printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )
     143            exit 0
     144          } # if
     145        } # for
     146      } # if
     147      printf( ")\n" )
    124148    } # for
    125149
  • src/tests/.expect/64/declarationSpecifier.txt

    rdbe8f244 rfe26fbf  
    1 __attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(long unsigned int __size);
     1__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(long unsigned int __size);
    22__attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
    3 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
    4 __attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
    5 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
     3__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
     4__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
     5__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    77volatile const short __x1__CVs_1;
     
    629629}
    630630static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return __main__Fi_iPPCc__1(argc, argv); }
    631 __attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(long unsigned int __size);
     631__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(long unsigned int __size);
    632632__attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
    633 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
    634 __attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
    635 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
     633__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
     634__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
     635__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
    636636extern int printf(const char *__restrict __format, ...);
    637637static inline int invoke_main(int argc, char **argv, char **envp);
  • src/tests/.expect/64/extension.txt

    rdbe8f244 rfe26fbf  
    1 __attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(long unsigned int __size);
     1__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(long unsigned int __size);
    22__attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
    3 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
    4 __attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
    5 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
     3__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
     4__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
     5__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    77__extension__ int __a__i_1;
     
    7777    __B__C2eE_1,
    7878};
     79__extension__ int __f__Fi___1();
     80__extension__ int i;
     81__extension__ int j;
    7982__extension__ int __fred__Fi_i__1(int __p__i_1){
    8083    int ___retval_fred__i_1;
     
    8386        __extension__ int __b__i_2;
    8487        __extension__ int __c__i_2;
     88        __extension__ int *__x__Pi_2;
     89        __extension__ int *__y__Pi_2;
     90        __extension__ int *__z__Pi_2;
    8591    };
    8692    int __i__i_2 = ((int )(__extension__ __a__i_1+__extension__ 3));
     
    94100    ((void)((_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3)) , _tmp_cp_ret0));
    95101    ((void)((*((int *)(&_tmp_cp_ret0)))) /* ^?{} */);
     102    __extension__ int __mary__Fi_i__2(int __p__i_2){
     103        int ___retval_mary__i_2;
     104    }
    96105    ((void)__extension__ sizeof(3));
    97106    ((void)__extension__ (((int )(3!=((int )0))) || ((int )(4!=((int )0)))));
  • src/tests/.expect/64/gccExtensions.txt

    rdbe8f244 rfe26fbf  
    1 __attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(long unsigned int __size);
     1__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(long unsigned int __size);
    22__attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
    3 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
    4 __attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
    5 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
     3__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
     4__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
     5__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    77extern int __x__i_1 asm ( "xx" );
     
    166166}
    167167static inline int invoke_main(int argc, char* argv[], char* envp[]) { (void)argc; (void)argv; (void)envp; return __main__Fi_iPPCc__1(argc, argv); }
    168 __attribute__ ((__malloc__,__nothrow__,__leaf__)) extern void *malloc(long unsigned int __size);
     168__attribute__ ((__nothrow__,__leaf__,__malloc__)) extern void *malloc(long unsigned int __size);
    169169__attribute__ ((__nothrow__,__leaf__)) extern void free(void *__ptr);
    170 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void abort(void);
    171 __attribute__ ((__nonnull__(1),__nothrow__,__leaf__)) extern int atexit(void (*__func)(void));
    172 __attribute__ ((__noreturn__,__nothrow__,__leaf__)) extern void exit(int __status);
     170__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void abort(void);
     171__attribute__ ((__nothrow__,__leaf__,__nonnull__(1))) extern int atexit(void (*__func)(void));
     172__attribute__ ((__nothrow__,__leaf__,__noreturn__)) extern void exit(int __status);
    173173extern int printf(const char *__restrict __format, ...);
    174174static inline int invoke_main(int argc, char **argv, char **envp);
  • src/tests/Makefile.am

    rdbe8f244 rfe26fbf  
    1111## Created On       : Sun May 31 09:08:15 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Aug 15 12:24:54 2016
    14 ## Update Count     : 39
     13## Last Modified On : Mon Feb  6 16:10:43 2017
     14## Update Count     : 40
    1515###############################################################################
    1616
     
    6565        ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
    6666
     67attributes : attributes.c
     68        ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
     69
    6770memberCtors-ERR1: memberCtors.c
    6871        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
  • src/tests/Makefile.in

    rdbe8f244 rfe26fbf  
    686686        ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
    687687
     688attributes : attributes.c
     689        ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
     690
    688691memberCtors-ERR1: memberCtors.c
    689692        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
  • src/tests/extension.c

    rdbe8f244 rfe26fbf  
    77// Created On       : Mon Jul  4 20:42:43 2016
    88// Last Modified By : Peter A. Buhr
    9 // Last Modified On : Mon Jul  4 23:31:22 2016
    10 // Update Count     : 3
     9// Last Modified On : Mon Feb  6 15:44:39 2017
     10// Update Count     : 46
    1111//
    1212
    13 __extension__ int a, b, c;
     13__extension__ __extension__ int a, b, c;
    1414__extension__ struct S {
    15     __extension__ int a, b, c;
     15        __extension__ int a, b, c;
    1616};
    1717__extension__ union U {
    18     __extension__ int a, b, c;
     18        __extension__ int a, b, c;
    1919};
    2020__extension__ enum E {
    21     R, G, B,
     21        R, G, B,
    2222};
    2323__extension__ typedef int www; // typedefs are removed => no output
     24__extension__ __extension__ int f();
     25//__extension__ __extension__ asm( "nop" );
     26#ifdef __cforall
     27__extension__ __extension__ extern "C" {
     28        int i, j;
     29 }
     30#endif // __cforall
    2431
    2532__extension__ int fred( int p ) {
    26     __extension__ struct S {
    27         __extension__ int a, b, c;
    28     };
    29     int i = __extension__ a + __extension__ 3;
    30     __extension__ 3;
    31     __extension__ a;
    32     __extension__ int a, b, c;
     33        __extension__ struct S {
     34                __extension__ int a, b, c;
     35#ifdef __cforall
     36                __extension__ * int x, y, z;
     37#endif // __cforall
     38        };
     39        int i = __extension__ a + __extension__ 3;
     40        __extension__ 3;
     41        __extension__ a;
     42        __extension__ int a, b, c;
    3343
    34     __extension__ a = __extension__ b + __extension__ c;
    35     __extension__ fred( 3 );
    36     __extension__ sizeof( 3 );
    37     __extension__ (3 || 4);
    38     __extension__ __alignof__( __extension__ a );
    39     __extension__ a || __extension__ b && __extension__ c;
    40     __extension__ a > __extension__ b ? __extension__ c : __extension__ c;
    41     __extension__ a = __extension__ ( __extension__ b + __extension__ c );
    42     __extension__ a, __extension__ b, __extension__ c;
     44        __extension__ a = __extension__ b + __extension__ c;
     45        __extension__ fred( 3 );
     46        __extension__ int mary( int p ) {}
     47        __extension__ sizeof( 3 );
     48        __extension__ (3 || 4);
     49        __extension__ __alignof__( __extension__ a );
     50        __extension__ a || __extension__ b && __extension__ c;
     51        __extension__ a > __extension__ b ? __extension__ c : __extension__ c;
     52        __extension__ a = __extension__ ( __extension__ b + __extension__ c );
     53        __extension__ a, __extension__ b, __extension__ c;
    4354}
    4455
  • src/tests/thread.c

    rdbe8f244 rfe26fbf  
    77struct Second { thread t; simple_lock* lock; };
    88
    9 DECL_THREAD(First)
    10 DECL_THREAD(Second)
     9DECL_THREAD(First);
     10DECL_THREAD(Second);
    1111
    1212void ?{}( First * this, simple_lock* lock ) { this->lock = lock; }
Note: See TracChangeset for help on using the changeset viewer.