Changes in / [2162c2c:bb82c03]


Ignore:
Location:
src
Files:
2 deleted
56 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r2162c2c rbb82c03  
    656656        }
    657657
    658         void CodeGenerator::visit( UntypedTupleExpr * tupleExpr ) { assertf( false, "UntypedTupleExpr should not make it to Code Gen" ); }
    659 
    660         void CodeGenerator::visit( TupleExpr * tupleExpr ) { assertf( false, "TupleExpr should not make it to Code Gen" ); }
     658        void CodeGenerator::visit( TupleExpr * tupleExpr ) { assert( false ); }
    661659
    662660        void CodeGenerator::visit( TypeExpr * typeExpr ) {}
  • src/CodeGen/CodeGenerator.h

    r2162c2c rbb82c03  
    7272                virtual void visit( CommaExpr *commaExpr );
    7373                virtual void visit( CompoundLiteralExpr *compLitExpr );
    74                 virtual void visit( UntypedTupleExpr *tupleExpr );
    7574                virtual void visit( TupleExpr *tupleExpr );
    7675                virtual void visit( TypeExpr *typeExpr );
  • src/CodeGen/GenType.cc

    r2162c2c rbb82c03  
    4141                virtual void visit( EnumInstType *enumInst );
    4242                virtual void visit( TypeInstType *typeInst );
    43                 virtual void visit( TupleType * tupleType );
    4443                virtual void visit( VarArgsType *varArgsType );
    4544                virtual void visit( ZeroType *zeroType );
     
    198197        }
    199198
    200         void GenType::visit( TupleType * tupleType ) {
    201                 assertf( ! mangle, "Tuple types should not make it to Code Gen." );
    202                 Visitor::visit( tupleType );
    203         }
    204 
    205199        void GenType::visit( VarArgsType *varArgsType ) {
    206200                typeString = "__builtin_va_list " + typeString;
  • src/GenPoly/Box.cc

    r2162c2c rbb82c03  
    136136                        template< typename DeclClass >
    137137                        DeclClass *handleDecl( DeclClass *decl, Type *type );
    138                         template< typename AggDecl >
    139                         AggDecl * handleAggDecl( AggDecl * aggDecl );
    140 
    141                         typedef PolyMutator Parent;
    142                         using Parent::mutate;
     138
     139                        using PolyMutator::mutate;
    143140                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override;
    144141                        virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override;
    145                         virtual StructDecl *mutate( StructDecl *structDecl ) override;
    146                         virtual UnionDecl *mutate( UnionDecl *unionDecl ) override;
    147142                        virtual TypeDecl *mutate( TypeDecl *typeDecl ) override;
    148143                        virtual TypedefDecl *mutate( TypedefDecl *typedefDecl ) override;
     
    691686                        for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) {
    692687                                TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
    693                                 assertf(paramType, "Aggregate parameters should be type expressions");
     688                                assert(paramType && "Aggregate parameters should be type expressions");
    694689                                paramType->set_type( replaceWithConcrete( appExpr, paramType->get_type(), false ) );
    695690                        }
     
    788783                void Pass1::boxParams( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars ) {
    789784                        for ( std::list< DeclarationWithType *>::const_iterator param = function->get_parameters().begin(); param != function->get_parameters().end(); ++param, ++arg ) {
    790                                 assertf( arg != appExpr->get_args().end(), "boxParams: missing argument for param %s to %s in %s", toString( *param ).c_str(), toString( function ).c_str(), toString( appExpr ).c_str() );
     785                                assert( arg != appExpr->get_args().end() );
    791786                                addCast( *arg, (*param)->get_type(), exprTyVars );
    792787                                boxParam( (*param)->get_type(), *arg, exprTyVars );
     
    11321127                        makeTyVarMap( function, exprTyVars ); // xxx - should this take into account the variables already bound in scopeTyVars (i.e. remove them from exprTyVars?)
    11331128                        ReferenceToType *dynRetType = isDynRet( function, exprTyVars );
    1134 
    1135                         // NOTE: addDynRetParam needs to know the actual (generated) return type so it can make a temp variable, so pass the result type from the appExpr
    1136                         // passTypeVars needs to know the program-text return type (i.e. the distinction between _conc_T30 and T3(int))
    1137                         // concRetType may not be a good name in one or both of these places. A more appropriate name change is welcome.
     1129                        Type *concRetType = appExpr->get_result()->isVoid() ? nullptr : appExpr->get_result();// ?: dynRetType; // xxx - is concRetType a good name?
     1130
    11381131                        if ( dynRetType ) {
    1139                                 Type *concRetType = appExpr->get_result()->isVoid() ? nullptr : appExpr->get_result();
    11401132                                ret = addDynRetParam( appExpr, function, concRetType, arg ); // xxx - used to use dynRetType instead of concRetType
    11411133                        } else if ( needsAdapter( function, scopeTyVars ) && ! needsAdapter( function, exprTyVars) ) { // xxx - exprTyVars is used above...?
     
    11501142                        arg = appExpr->get_args().begin();
    11511143
    1152                         Type *concRetType = replaceWithConcrete( appExpr, dynRetType );
    11531144                        passTypeVars( appExpr, concRetType, arg, exprTyVars ); // xxx - used to use dynRetType instead of concRetType; this changed so that the correct type paramaters are passed for return types (it should be the concrete type's parameters, not the formal type's)
    11541145                        addInferredParams( appExpr, function, arg, exprTyVars );
     
    12801271                template< typename DeclClass >
    12811272                DeclClass * Pass2::handleDecl( DeclClass *decl, Type *type ) {
    1282                         DeclClass *ret = static_cast< DeclClass *>( Parent::mutate( decl ) );
     1273                        DeclClass *ret = static_cast< DeclClass *>( Mutator::mutate( decl ) );
    12831274
    12841275                        return ret;
     
    13141305                }
    13151306
    1316                 template< typename AggDecl >
    1317                 AggDecl * Pass2::handleAggDecl( AggDecl * aggDecl ) {
    1318                         // prevent tyVars from leaking into containing scope
    1319                         scopeTyVars.beginScope();
    1320                         Parent::mutate( aggDecl );
    1321                         scopeTyVars.endScope();
    1322                         return aggDecl;
    1323                 }
    1324 
    1325                 StructDecl * Pass2::mutate( StructDecl *aggDecl ) {
    1326                         return handleAggDecl( aggDecl );
    1327                 }
    1328 
    1329                 UnionDecl * Pass2::mutate( UnionDecl *aggDecl ) {
    1330                         return handleAggDecl( aggDecl );
    1331                 }
    1332 
    13331307                TypeDecl * Pass2::mutate( TypeDecl *typeDecl ) {
    13341308                        addToTyVarMap( typeDecl, scopeTyVars );
     
    13361310                                return handleDecl( typeDecl, typeDecl->get_base() );
    13371311                        } else {
    1338                                 return Parent::mutate( typeDecl );
     1312                                return Mutator::mutate( typeDecl );
    13391313                        }
    13401314                }
     
    13481322                        makeTyVarMap( pointerType, scopeTyVars );
    13491323
    1350                         Type *ret = Parent::mutate( pointerType );
     1324                        Type *ret = Mutator::mutate( pointerType );
    13511325
    13521326                        scopeTyVars.endScope();
  • src/GenPoly/InstantiateGeneric.cc

    r2162c2c rbb82c03  
    1818#include <utility>
    1919#include <vector>
    20 #include <unordered_map>
    2120
    2221#include "InstantiateGeneric.h"
     
    2524#include "GenPoly.h"
    2625#include "ScopedSet.h"
    27 #include "PolyMutator.h"
    2826
    2927#include "ResolvExpr/typeops.h"
     
    148146        }
    149147
    150         // collect the environments of each TypeInstType so that type variables can be replaced
    151         // xxx - possibly temporary solution. Access to type environments is required in GenericInstantiator, but it needs to be a DeclMutator which does not provide easy access to the type environments.
    152         class EnvFinder final : public GenPoly::PolyMutator {
    153         public:
    154                 virtual Type * mutate( TypeInstType * inst ) override {
    155                         if ( env ) envMap[inst] = env;
    156                         return inst;
    157                 }
    158 
    159                 // don't want to associate an environment with TypeInstTypes that occur in function types - this may actually only apply to function types belonging to DeclarationWithTypes (or even just FunctionDecl)?
    160                 virtual Type * mutate( FunctionType * ftype ) override {
    161                         return ftype;
    162                 }
    163                 std::unordered_map< ReferenceToType *, TypeSubstitution * > envMap;
    164         };
    165 
    166148        /// Mutator pass that replaces concrete instantiations of generic types with actual struct declarations, scoped appropriately
    167149        class GenericInstantiator final : public DeclMutator {
     
    172154                /// Namer for concrete types
    173155                UniqueName typeNamer;
    174                 /// Reference to mapping of environments
    175                 const std::unordered_map< ReferenceToType *, TypeSubstitution * > & envMap;
     156
    176157        public:
    177                 GenericInstantiator( const std::unordered_map< ReferenceToType *, TypeSubstitution * > & envMap ) : DeclMutator(), instantiations(), dtypeStatics(), typeNamer("_conc_"), envMap( envMap ) {}
     158                GenericInstantiator() : DeclMutator(), instantiations(), dtypeStatics(), typeNamer("_conc_") {}
    178159
    179160                using DeclMutator::mutate;
     
    193174                void insert( UnionInstType *inst, const std::list< TypeExpr* > &typeSubs, UnionDecl *decl ) { instantiations.insert( inst->get_baseUnion(), typeSubs, decl ); }
    194175
    195                 void replaceParametersWithConcrete( std::list< Expression* >& params );
    196                 Type *replaceWithConcrete( Type *type, bool doClone );
    197 
    198176                /// Strips a dtype-static aggregate decl of its type parameters, marks it as stripped
    199177                void stripDtypeParams( AggregateDecl *base, std::list< TypeDecl* >& baseParams, const std::list< TypeExpr* >& typeSubs );
     
    201179
    202180        void instantiateGeneric( std::list< Declaration* > &translationUnit ) {
    203                 EnvFinder finder;
    204                 mutateAll( translationUnit, finder );
    205                 GenericInstantiator instantiator( finder.envMap );
     181                GenericInstantiator instantiator;
    206182                instantiator.mutateDeclarationList( translationUnit );
    207183        }
     
    233209                                // can pretend that any ftype is `void (*)(void)`
    234210                                out.push_back( new TypeExpr( new FunctionType( Type::Qualifiers(), false ) ) );
    235                                 break;
    236                         case TypeDecl::Ttype:
    237                                 assertf( false, "Ttype parameters are not currently allowed as parameters to generic types." );
    238211                                break;
    239212                        }
     
    280253        }
    281254
    282         /// xxx - more or less copied from box -- these should be merged with those somehow...
    283         void GenericInstantiator::replaceParametersWithConcrete( std::list< Expression* >& params ) {
    284                 for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) {
    285                         TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
    286                         assertf(paramType, "Aggregate parameters should be type expressions");
    287                         paramType->set_type( replaceWithConcrete( paramType->get_type(), false ) );
    288                 }
    289         }
    290 
    291         Type *GenericInstantiator::replaceWithConcrete( Type *type, bool doClone ) {
    292                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( type ) ) {
    293                         if ( envMap.count( typeInst ) ) {
    294                                 TypeSubstitution * env = envMap.at( typeInst );
    295                                 Type *concrete = env->lookup( typeInst->get_name() );
    296                                 if ( concrete ) {
    297                                         return concrete->clone();
    298                                 }
    299                                 else return typeInst->clone();
    300                         }
    301                 } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
    302                         if ( doClone ) {
    303                                 structType = structType->clone();
    304                         }
    305                         replaceParametersWithConcrete( structType->get_parameters() );
    306                         return structType;
    307                 } else if ( UnionInstType *unionType = dynamic_cast< UnionInstType* >( type ) ) {
    308                         if ( doClone ) {
    309                                 unionType = unionType->clone();
    310                         }
    311                         replaceParametersWithConcrete( unionType->get_parameters() );
    312                         return unionType;
    313                 }
    314                 return type;
    315         }
    316 
    317 
    318255        Type* GenericInstantiator::mutate( StructInstType *inst ) {
    319256                // mutate subtypes
     
    325262                if ( inst->get_parameters().empty() ) return inst;
    326263
    327                 // need to replace type variables to ensure that generic types are instantiated for the return values of polymorphic functions (in particular, for thunks, because they are not [currently] copy constructed).
    328                 replaceWithConcrete( inst, false );
    329 
    330264                // check for an already-instantiatiated dtype-static type
    331265                if ( dtypeStatics.find( inst->get_baseStruct() ) != dtypeStatics.end() ) {
     
    335269
    336270                // check if type can be concretely instantiated; put substitutions into typeSubs
    337                 assertf( inst->get_baseParameters(), "Base struct has parameters" );
     271                assert( inst->get_baseParameters() && "Base struct has parameters" );
    338272                std::list< TypeExpr* > typeSubs;
    339273                genericType gt = makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs );
  • src/GenPoly/ScrubTyVars.cc

    r2162c2c rbb82c03  
    3131                          case TypeDecl::Any:
    3232                          case TypeDecl::Dtype:
    33                           case TypeDecl::Ttype:
    3433                                {
    3534                                        PointerType *ret = new PointerType( Type::Qualifiers(), new VoidType( typeInst->get_qualifiers() ) );
  • src/GenPoly/Specialize.cc

    r2162c2c rbb82c03  
    3232#include "Common/utility.h"
    3333#include "InitTweak/InitTweak.h"
    34 #include "Tuples/Tuples.h"
    3534
    3635namespace GenPoly {
    37         class Specializer;
     36        const std::list<Label> noLabels;
     37
    3838        class Specialize final : public PolyMutator {
    39                 friend class Specializer;
    4039          public:
     40                Specialize( std::string paramPrefix = "_p" );
     41
    4142                using PolyMutator::mutate;
    4243                virtual Expression * mutate( ApplicationExpr *applicationExpr ) override;
     
    4748                // virtual Expression * mutate( CommaExpr *commaExpr );
    4849
    49                 Specializer * specializer = nullptr;
     50          private:
     51                Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams = 0 );
     52                Expression *doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams = 0 );
    5053                void handleExplicitParams( ApplicationExpr *appExpr );
     54
     55                UniqueName thunkNamer;
     56                std::string paramPrefix;
    5157        };
    5258
    53         class Specializer {
    54           public:
    55                 Specializer( Specialize & spec ) : spec( spec ), env( spec.env ), stmtsToAdd( spec.stmtsToAdd ) {}
    56                 virtual bool needsSpecialization( Type * formalType, Type * actualType, TypeSubstitution * env ) = 0;
    57                 virtual Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) = 0;
    58                 virtual Expression *doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams = 0 );
    59 
    60           protected:
    61                 Specialize & spec;
    62                 std::string paramPrefix = "_p";
    63                 TypeSubstitution *& env;
    64                 std::list< Statement * > & stmtsToAdd;
    65         };
    66 
    67         // for normal polymorphic -> monomorphic function conversion
    68         class PolySpecializer : public Specializer {
    69           public:
    70                 PolySpecializer( Specialize & spec ) : Specializer( spec ) {}
    71                 virtual bool needsSpecialization( Type * formalType, Type * actualType, TypeSubstitution * env ) override;
    72                 virtual Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) override;
    73         };
    74 
    75         // // for tuple -> non-tuple function conversion
    76         class TupleSpecializer : public Specializer {
    77           public:
    78                 TupleSpecializer( Specialize & spec ) : Specializer( spec ) {}
    79                 virtual bool needsSpecialization( Type * formalType, Type * actualType, TypeSubstitution * env ) override;
    80                 virtual Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) override;
    81         };
     59        void convertSpecializations( std::list< Declaration* >& translationUnit ) {
     60                Specialize specializer;
     61                mutateAll( translationUnit, specializer );
     62        }
     63
     64        Specialize::Specialize( std::string paramPrefix )
     65                : thunkNamer( "_thunk" ), paramPrefix( paramPrefix ) {
     66        }
    8267
    8368        /// Looks up open variables in actual type, returning true if any of them are bound in the environment or formal type.
    84         bool PolySpecializer::needsSpecialization( Type *formalType, Type *actualType, TypeSubstitution *env ) {
     69        bool needsSpecialization( Type *formalType, Type *actualType, TypeSubstitution *env ) {
    8570                if ( env ) {
    8671                        using namespace ResolvExpr;
     
    10792
    10893        /// Generates a thunk that calls `actual` with type `funType` and returns its address
    109         Expression * PolySpecializer::createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) {
    110                 static UniqueName thunkNamer( "_thunk" );
    111 
     94        Expression * Specialize::createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) {
    11295                FunctionType *newType = funType->clone();
    11396                if ( env ) {
     97                        TypeSubstitution newEnv( *env );
    11498                        // it is important to replace only occurrences of type variables that occur free in the
    11599                        // thunk's type
    116                         env->applyFree( newType );
     100                        newEnv.applyFree( newType );
    117101                } // if
    118102                // create new thunk with same signature as formal type (C linkage, empty body)
     
    141125                std::list< Statement* > oldStmts;
    142126                oldStmts.splice( oldStmts.end(), stmtsToAdd );
    143                 spec.handleExplicitParams( appExpr );
     127                handleExplicitParams( appExpr );
    144128                paramPrefix = oldParamPrefix;
    145129                // write any statements added for recursive specializations into the thunk body
     
    163147        }
    164148
    165         Expression * Specializer::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) {
     149        Expression * Specialize::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) {
    166150                assertf( actual->has_result(), "attempting to specialize an untyped expression" );
    167151                if ( needsSpecialization( formalType, actual->get_result(), env ) ) {
    168                         if ( FunctionType *funType = getFunctionType( formalType ) ) {
     152                        FunctionType *funType;
     153                        if ( ( funType = getFunctionType( formalType ) ) ) {
    169154                                ApplicationExpr *appExpr;
    170155                                VariableExpr *varExpr;
     
    185170        }
    186171
    187         bool TupleSpecializer::needsSpecialization( Type *formalType, Type *actualType, TypeSubstitution *env ) {
    188                 if ( FunctionType * ftype = getFunctionType( formalType ) ) {
    189                         return ftype->isTtype();
    190                 }
    191                 return false;
    192         }
    193 
    194         /// restructures arg to match the structure of a single formal parameter. Assumes that atomic types are compatible (as the Resolver should have ensured this)
    195         template< typename OutIterator >
    196         void matchOneFormal( Expression * arg, unsigned & idx, Type * formal, OutIterator out ) {
    197                 if ( TupleType * tupleType = dynamic_cast< TupleType * >( formal ) ) {
    198                         std::list< Expression * > exprs;
    199                         for ( Type * t : *tupleType ) {
    200                                 matchOneFormal( arg, idx, t, back_inserter( exprs ) );
    201                         }
    202                         *out++ = new TupleExpr( exprs );
    203                 } else {
    204                         *out++ = new TupleIndexExpr( arg->clone(), idx++ );
    205                 }
    206         }
    207 
    208         /// restructures the ttype argument to match the structure of the formal parameters of the actual function.
    209         // [begin, end) are the formal parameters.
    210         // args is the list of arguments currently given to the actual function, the last of which needs to be restructured.
    211         template< typename Iterator, typename OutIterator >
    212         void fixLastArg( Expression * last, Iterator begin, Iterator end, OutIterator out ) {
    213                 // safe_dynamic_cast for the assertion
    214                 safe_dynamic_cast< TupleType * >( last->get_result() );
    215                 unsigned idx = 0;
    216                 for ( ; begin != end; ++begin ) {
    217                         DeclarationWithType * formal = *begin;
    218                         Type * formalType = formal->get_type();
    219                         matchOneFormal( last, idx, formalType, out );
    220                 }
    221                 delete last;
    222         }
    223 
    224         Expression * TupleSpecializer::createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) {
    225                 static UniqueName thunkNamer( "_tupleThunk" );
    226 
    227                 FunctionType *newType = funType->clone();
    228                 if ( env ) {
    229                         // it is important to replace only occurrences of type variables that occur free in the
    230                         // thunk's type
    231                         env->applyFree( newType );
    232                 } // if
    233                 // create new thunk with same signature as formal type (C linkage, empty body)
    234                 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( noLabels ), false, false );
    235                 thunkFunc->fixUniqueId();
    236 
    237                 // thunks may be generated and not used - silence warning with attribute
    238                 thunkFunc->get_attributes().push_back( new Attribute( "unused" ) );
    239 
    240                 // thread thunk parameters into call to actual function, naming thunk parameters as we go
    241                 UniqueName paramNamer( paramPrefix );
    242                 ApplicationExpr *appExpr = new ApplicationExpr( actual );
    243 
    244                 FunctionType * actualType = getFunctionType( actual->get_result() )->clone();
    245                 if ( env ) {
    246                         // need to apply the environment to the actual function's type, since it may itself be polymorphic
    247                         env->apply( actualType );
    248                 }
    249                 std::unique_ptr< FunctionType > actualTypeManager( actualType ); // for RAII
    250                 std::list< DeclarationWithType * >::iterator actualBegin = actualType->get_parameters().begin();
    251                 std::list< DeclarationWithType * >::iterator actualEnd = actualType->get_parameters().end();
    252                 std::list< DeclarationWithType * >::iterator formalBegin = funType->get_parameters().begin();
    253                 std::list< DeclarationWithType * >::iterator formalEnd = funType->get_parameters().end();
    254 
    255                 Expression * last = nullptr;
    256                 for ( DeclarationWithType* param : thunkFunc->get_functionType()->get_parameters() ) {
    257                         // walk the parameters to the actual function alongside the parameters to the thunk to find the location where the ttype parameter begins to satisfy parameters in the actual function.
    258                         param->set_name( paramNamer.newName() );
    259                         assertf( formalBegin != formalEnd, "Reached end of formal parameters before finding ttype parameter" );
    260                         if ( Tuples::isTtype((*formalBegin)->get_type()) ) {
    261                                 last = new VariableExpr( param );
    262                                 break;
    263                         }
    264                         assertf( actualBegin != actualEnd, "reached end of actual function's arguments before finding ttype parameter" );
    265                         ++actualBegin;
    266                         ++formalBegin;
    267 
    268                         appExpr->get_args().push_back( new VariableExpr( param ) );
    269                 } // for
    270                 assert( last );
    271                 fixLastArg( last, actualBegin, actualEnd, back_inserter( appExpr->get_args() ) );
    272                 appExpr->set_env( maybeClone( env ) );
    273                 if ( inferParams ) {
    274                         appExpr->get_inferParams() = *inferParams;
    275                 } // if
    276 
    277                 // handle any specializations that may still be present
    278                 std::string oldParamPrefix = paramPrefix;
    279                 paramPrefix += "p";
    280                 // save stmtsToAdd in oldStmts
    281                 std::list< Statement* > oldStmts;
    282                 oldStmts.splice( oldStmts.end(), stmtsToAdd );
    283                 spec.mutate( appExpr );
    284                 paramPrefix = oldParamPrefix;
    285                 // write any statements added for recursive specializations into the thunk body
    286                 thunkFunc->get_statements()->get_kids().splice( thunkFunc->get_statements()->get_kids().end(), stmtsToAdd );
    287                 // restore oldStmts into stmtsToAdd
    288                 stmtsToAdd.splice( stmtsToAdd.end(), oldStmts );
    289 
    290                 // add return (or valueless expression) to the thunk
    291                 Statement *appStmt;
    292                 if ( funType->get_returnVals().empty() ) {
    293                         appStmt = new ExprStmt( noLabels, appExpr );
    294                 } else {
    295                         appStmt = new ReturnStmt( noLabels, appExpr );
    296                 } // if
    297                 thunkFunc->get_statements()->get_kids().push_back( appStmt );
    298 
    299                 // add thunk definition to queue of statements to add
    300                 stmtsToAdd.push_back( new DeclStmt( noLabels, thunkFunc ) );
    301                 // return address of thunk function as replacement expression
    302                 return new AddressExpr( new VariableExpr( thunkFunc ) );
    303         }
    304 
    305172        void Specialize::handleExplicitParams( ApplicationExpr *appExpr ) {
    306173                // create thunks for the explicit parameters
     
    311178                std::list< Expression* >::iterator actual;
    312179                for ( formal = function->get_parameters().begin(), actual = appExpr->get_args().begin(); formal != function->get_parameters().end() && actual != appExpr->get_args().end(); ++formal, ++actual ) {
    313                         *actual = specializer->doSpecialization( (*formal )->get_type(), *actual, &appExpr->get_inferParams() );
     180                        *actual = doSpecialization( (*formal )->get_type(), *actual, &appExpr->get_inferParams() );
    314181                }
    315182        }
     
    323190                        // don't need to do this for intrinsic calls, because they aren't actually passed
    324191                        for ( InferredParams::iterator inferParam = appExpr->get_inferParams().begin(); inferParam != appExpr->get_inferParams().end(); ++inferParam ) {
    325                                 inferParam->second.expr = specializer->doSpecialization( inferParam->second.formalType, inferParam->second.expr, inferParam->second.inferParams.get() );
     192                                inferParam->second.expr = doSpecialization( inferParam->second.formalType, inferParam->second.expr, &appExpr->get_inferParams() );
    326193                        }
     194
    327195                        handleExplicitParams( appExpr );
    328196                }
     197
    329198                return appExpr;
    330199        }
     
    333202                addrExpr->get_arg()->acceptMutator( *this );
    334203                assert( addrExpr->has_result() );
    335                 addrExpr->set_arg( specializer->doSpecialization( addrExpr->get_result(), addrExpr->get_arg() ) );
     204                addrExpr->set_arg( doSpecialization( addrExpr->get_result(), addrExpr->get_arg() ) );
    336205                return addrExpr;
    337206        }
     
    343212                        return castExpr;
    344213                }
    345                 Expression *specialized = specializer->doSpecialization( castExpr->get_result(), castExpr->get_arg() );
     214                Expression *specialized = doSpecialization( castExpr->get_result(), castExpr->get_arg() );
    346215                if ( specialized != castExpr->get_arg() ) {
    347216                        // assume here that the specialization incorporates the cast
     
    367236        //      return commaExpr;
    368237        // }
    369 
    370         void convertSpecializations( std::list< Declaration* >& translationUnit ) {
    371                 Specialize spec;
    372 
    373                 TupleSpecializer tupleSpec( spec );
    374                 spec.specializer = &tupleSpec;
    375                 mutateAll( translationUnit, spec );
    376 
    377                 PolySpecializer polySpec( spec );
    378                 spec.specializer = &polySpec;
    379                 mutateAll( translationUnit, spec );
    380         }
    381238} // namespace GenPoly
    382239
  • src/InitTweak/FixInit.cc

    r2162c2c rbb82c03  
    3838#include "SynTree/AddStmtVisitor.h"
    3939#include "CodeGen/GenType.h"  // for warning/error messages
    40 #include "Tuples/Tuples.h"
    4140
    4241bool ctordtorp = false; // print all debug
     
    393392
    394393                bool ResolveCopyCtors::skipCopyConstruct( Type * type ) {
    395                         return dynamic_cast< VarArgsType * >( type ) || GenPoly::getFunctionType( type ) || Tuples::isTtype( type );
     394                        return dynamic_cast< VarArgsType * >( type ) || GenPoly::getFunctionType( type );
    396395                }
    397396
     
    11001099                        addDeclaration( tmp );
    11011100
    1102                         // xxx - this can be TupleAssignExpr now. Need to properly handle this case.
    11031101                        ApplicationExpr * callExpr = safe_dynamic_cast< ApplicationExpr * > ( ctorExpr->get_callExpr() );
    11041102                        TypeSubstitution * env = ctorExpr->get_env();
  • src/InitTweak/InitTweak.cc

    r2162c2c rbb82c03  
    487487                virtual void visit( UntypedValofExpr *valofExpr ) { isConstExpr = false; }
    488488                virtual void visit( CompoundLiteralExpr *compLitExpr ) { isConstExpr = false; }
    489                 virtual void visit( UntypedTupleExpr *tupleExpr ) { isConstExpr = false; }
    490489                virtual void visit( TupleExpr *tupleExpr ) { isConstExpr = false; }
    491490                virtual void visit( TupleAssignExpr *tupleExpr ) { isConstExpr = false; }
  • src/Parser/DeclarationNode.cc

    r2162c2c rbb82c03  
    948948//      if ( variable.name ) {
    949949        if ( variable.tyClass != NoTypeClass ) {
    950                 static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Dtype, TypeDecl::Ftype, TypeDecl::Ttype };
    951                 assertf( sizeof(kindMap)/sizeof(kindMap[0] == NoTypeClass-1), "DeclarationNode::build: kindMap is out of sync." );
    952                 assertf( variable.tyClass < sizeof(kindMap)/sizeof(kindMap[0]), "Variable's tyClass is out of bounds." );
     950                static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    953951//              TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
    954952                TypeDecl * ret = new TypeDecl( *name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
  • src/Parser/ExpressionNode.cc

    r2162c2c rbb82c03  
    323323
    324324Expression *build_tuple( ExpressionNode * expr_node ) {
    325         std::list< Expression * > exprs;
    326         buildMoveList( expr_node, exprs );
    327         return new UntypedTupleExpr( exprs );;
     325        TupleExpr *ret = new TupleExpr();
     326        buildMoveList( expr_node, ret->get_exprs() );
     327        return ret;
    328328}
    329329
  • src/Parser/ParseNode.h

    r2162c2c rbb82c03  
    204204        enum Length { Short, Long, LongLong, NoLength };
    205205        enum Aggregate { Struct, Union, Trait, NoAggregate };
    206         enum TypeClass { Otype, Dtype, Ftype, Ttype, NoTypeClass };
     206        enum TypeClass { Otype, Dtype, Ftype, NoTypeClass };
    207207        enum BuiltinType { Valist, Zero, One, NoBuiltinType };
    208208
  • src/Parser/lex.cc

    r2162c2c rbb82c03  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 186
    385 #define YY_END_OF_BUFFER 187
     384#define YY_NUM_RULES 185
     385#define YY_END_OF_BUFFER 186
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[909] =
     393static yyconst flex_int16_t yy_accept[905] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  121,  121,  124,  124,
    396       187,  185,    7,    9,    8,  144,  123,  106,  149,  152,
    397       120,  131,  132,  147,  145,  135,  146,  138,  148,  111,
    398       112,  113,  136,  137,  154,  156,  155,  157,  185,  106,
    399       129,  185,  130,  150,  106,  108,  106,  106,  106,  106,
    400       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    401       106,  106,  106,  133,  153,  134,  151,    7,  185,    4,
    402         4,  186,  109,  186,  110,  121,  122,  128,  124,  125,
    403         7,    9,    0,    8,  161,  180,  106,    0,  173,  143,
    404       166,  174,  171,  158,  169,  159,  170,  168,    0,  117,
    405 
    406         3,    0,  172,  116,  114,    0,    0,  114,  114,    0,
    407         0,  114,  113,  113,  113,    0,  113,  141,  142,  140,
    408       162,  164,  160,  165,  163,    0,    0,    0,    0,    0,
     395        0,    0,    0,    0,    0,    0,  120,  120,  123,  123,
     396      186,  184,    7,    9,    8,  143,  122,  105,  148,  151,
     397      119,  130,  131,  146,  144,  134,  145,  137,  147,  110,
     398      111,  112,  135,  136,  153,  155,  154,  156,  184,  105,
     399      128,  184,  129,  149,  105,  107,  105,  105,  105,  105,
     400      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     401      105,  105,  105,  132,  152,  133,  150,    7,  184,    4,
     402        4,  185,  108,  185,  109,  120,  121,  127,  123,  124,
     403        7,    9,    0,    8,  160,  179,  105,    0,  172,  142,
     404      165,  173,  170,  157,  168,  158,  169,  167,    0,  116,
     405
     406        3,    0,  171,  115,  113,    0,    0,  113,  113,    0,
     407        0,  113,  112,  112,  112,    0,  112,  140,  141,  139,
     408      161,  163,  159,  164,  162,    0,    0,    0,    0,    0,
    409409        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    410       107,  179,    0,  123,  120,  106,    0,    0,  176,    0,
    411       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    412       106,  106,  106,  106,  106,  106,  106,   38,  106,  106,
    413       106,  106,  106,  106,  106,  106,  106,  106,   57,  106,
    414       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    415       106,  106,  106,  106,  106,  106,  106,  106,  175,  167,
    416 
    417         7,    0,    0,    0,    2,    0,    5,  109,    0,    0,
    418         0,  121,    0,  127,  126,  126,    0,    0,    0,  124,
     410      106,  178,    0,  122,  119,  105,    0,    0,  175,    0,
     411      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     412      105,  105,  105,  105,  105,  105,  105,   38,  105,  105,
     413      105,  105,  105,  105,  105,  105,  105,  105,   57,  105,
     414      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     415      105,  105,  105,  105,  105,  105,  105,  174,  166,    7,
     416
     417        0,    0,    0,    2,    0,    5,  108,    0,    0,    0,
     418      120,    0,  126,  125,  125,    0,    0,    0,  123,    0,
    419419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,    0,    0,    0,    0,  139,  117,  118,    0,  118,
    421       118,    0,    0,    6,  118,  114,    0,    0,    0,  118,
    422         0,  114,  114,  114,  114,    0,  115,    0,    0,  113,
    423       113,  113,  113,    0,  177,  178,    0,  183,  181,    0,
    424         0,    0,  107,    0,    0,    0,    0,    0,    0,    0,
    425         0,  106,   17,  106,  106,  106,  106,  106,  106,  106,
    426       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    427 
    428       106,   14,  106,  106,  106,  106,  106,  106,  106,  106,
    429       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    430        51,  106,  106,  106,   64,  106,  106,  106,  106,  106,
    431       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    432        91,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    433         0,    0,    0,    0,    0,    0,    0,    0,  126,    0,
    434         0,    0,    0,    0,  126,    0,    0,  184,    0,    0,
    435         0,    0,    0,    0,    0,  118,    0,  118,    0,  118,
    436         0,  118,    0,    0,  118,    0,  114,  114,    0,    0,
    437       115,  115,    0,  115,    0,  115,  113,  113,    0,    0,
    438 
    439         0,    0,    0,    0,    0,    0,    0,    0,  182,  106,
    440       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    441       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    442       106,  106,   21,  106,   24,  106,   27,  106,  106,  106,
    443       106,  106,  106,  106,   41,  106,   43,  106,  106,  106,
    444       106,  106,  106,  106,   56,  106,   67,  106,  106,  106,
    445       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    446       106,  106,  106,  106,  106,  100,  106,  106,  106,    0,
     420        0,    0,    0,    0,  138,  116,  117,    0,  117,  117,
     421        0,    0,    6,  117,  113,    0,    0,    0,  117,    0,
     422      113,  113,  113,  113,    0,  114,    0,    0,  112,  112,
     423      112,  112,    0,  176,  177,    0,  182,  180,    0,    0,
     424        0,  106,    0,    0,    0,    0,    0,    0,    0,    0,
     425      105,   17,  105,  105,  105,  105,  105,  105,  105,  105,
     426      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     427
     428       14,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     429      105,  105,  105,  105,  105,  105,  105,  105,  105,   51,
     430      105,  105,  105,   64,  105,  105,  105,  105,  105,  105,
     431      105,  105,  105,  105,  105,  105,  105,  105,  105,   91,
     432      105,  105,  105,  105,  105,  105,  105,  105,    0,    0,
     433        0,    0,    0,    0,    0,    0,  125,    0,    0,    0,
     434        0,    0,  125,    0,    0,  183,    0,    0,    0,    0,
     435        0,    0,    0,  117,    0,  117,    0,  117,    0,  117,
     436        0,    0,  117,    0,  113,  113,    0,    0,  114,  114,
     437        0,  114,    0,  114,  112,  112,    0,    0,    0,    0,
     438
     439        0,    0,    0,    0,    0,    0,  181,  105,  105,  105,
     440      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     441      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     442       21,  105,   24,  105,   27,  105,  105,  105,  105,  105,
     443      105,  105,   41,  105,   43,  105,  105,  105,  105,  105,
     444      105,  105,   56,  105,   67,  105,  105,  105,  105,  105,
     445      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     446      105,  105,   99,  105,  105,  105,    0,    0,    0,    0,
    447447        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    448         0,    0,    0,  126,    0,    0,    0,    0,    0,  118,
    449 
    450         0,    0,    0,    0,    0,    0,    0,  115,  115,    0,
    451       119,    0,  115,  115,    0,    0,    0,    0,    0,    0,
    452         0,    0,    0,    0,    0,    0,    0,  106,  106,   22,
    453       106,  106,  106,  106,  106,  106,  106,   15,  106,  106,
    454       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    455       106,  106,   23,   25,  106,   32,  106,  106,  106,  106,
    456        40,  106,  106,  106,  106,   49,  106,  106,   54,  106,
    457       106,   71,   72,  106,  106,  106,   78,  106,  106,  106,
    458       106,  106,   88,   90,   92,  106,  106,   97,  106,  106,
    459       104,  106,    0,    0,    0,    0,    0,    0,    0,    0,
    460 
     448      125,    0,    0,    0,    0,    0,  117,    0,    0,    0,
     449
     450        0,    0,    0,    0,  114,  114,    0,  118,    0,  114,
     451      114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     452        0,    0,    0,    0,  105,  105,   22,  105,  105,  105,
     453      105,  105,  105,  105,   15,  105,  105,  105,  105,  105,
     454      105,  105,  105,  105,  105,  105,  105,  105,  105,   23,
     455       25,  105,   32,  105,  105,  105,  105,   40,  105,  105,
     456      105,  105,   49,  105,  105,   54,  105,  105,   71,   72,
     457      105,  105,  105,   78,  105,  105,  105,  105,  105,   88,
     458       90,  105,  105,   96,  105,  105,  103,  105,    0,    0,
    461459        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    462         0,  119,    0,    0,  115,  119,  119,  119,  119,    0,
    463       115,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    464         0,  106,    0,  106,  106,  106,  106,  106,  106,  106,
    465       106,  106,  106,  106,  106,  106,  106,  106,  106,   59,
    466       106,  106,  106,  106,  106,  106,  106,  106,   28,  106,
    467       106,  106,   39,   42,   45,  106,  106,   52,  106,   61,
    468        68,  106,  106,   77,   79,   82,   83,   85,   86,  106,
    469       106,   94,  106,  106,  105,    0,    1,    0,    0,    0,
    470         0,    0,    0,  109,    0,    0,    0,  126,    0,    0,
    471 
    472         0,    0,  119,    0,  119,  119,    0,    0,    0,    0,
    473         0,    0,    0,    0,    0,  106,  106,   18,  106,  106,
    474       106,  106,  106,  106,  106,   16,  106,  106,  106,   33,
    475       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    476       106,  106,   36,   37,  106,   48,   53,  106,  106,  106,
    477        93,  106,  106,    0,    0,    0,    0,    0,    0,    0,
    478         0,    0,    0,    0,    0,    0,   10,   11,   29,   55,
    479       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    480       106,   60,   62,   65,  106,  106,   80,   95,  106,  106,
    481        35,  106,   47,   73,   74,  106,   98,  101,    0,    0,
    482 
     460
     461        0,    0,    0,    0,    0,    0,    0,  118,    0,    0,
     462      114,  118,  118,  118,  118,    0,  114,    0,    0,    0,
     463        0,    0,    0,    0,    0,    0,    0,  105,    0,  105,
     464      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
     465      105,  105,  105,  105,  105,   59,  105,  105,  105,  105,
     466      105,  105,  105,  105,   28,  105,  105,  105,   39,   42,
     467       45,  105,  105,   52,  105,   61,   68,  105,  105,   77,
     468       79,   82,   83,   85,   86,  105,  105,   93,  105,  105,
     469      104,    0,    1,    0,    0,    0,    0,    0,    0,  108,
     470        0,    0,    0,  125,    0,    0,    0,    0,  118,    0,
     471
     472      118,  118,    0,    0,    0,    0,    0,    0,    0,    0,
     473        0,  105,  105,   18,  105,  105,  105,  105,  105,  105,
     474      105,   16,  105,  105,  105,   33,  105,  105,  105,  105,
     475      105,  105,  105,  105,  105,  105,  105,  105,   36,   37,
     476      105,   48,   53,  105,  105,  105,   92,  105,  105,    0,
    483477        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    484       106,   69,  106,  106,   12,  106,  106,   30,   34,  106,
    485       106,  106,   66,  106,  106,  106,  106,  106,  106,  106,
    486         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    487         0,    0,    0,   58,  106,  106,  106,  106,  106,  106,
    488       106,   50,   63,   75,   81,   96,  102,  106,  106,  106,
    489         0,    0,    0,    0,    0,    0,    0,    0,  106,  106,
    490        13,   19,  106,  106,   31,  106,  106,  106,   26,   46,
    491        89,    0,    0,  106,  106,  106,  106,  106,  106,   76,
    492       103,  106,   87,   20,  106,  106,   44,   84,  106,  106,
    493 
    494       106,  106,  106,  106,  106,   99,   70,    0
     478        0,    0,   10,   11,   29,   55,  105,  105,  105,  105,
     479      105,  105,  105,  105,  105,  105,  105,   60,   62,   65,
     480      105,  105,   80,   94,  105,  105,   35,  105,   47,   73,
     481       74,  105,   97,  100,    0,    0,    0,    0,    0,    0,
     482
     483        0,    0,    0,    0,    0,    0,  105,   69,  105,  105,
     484       12,  105,  105,   30,   34,  105,  105,  105,   66,  105,
     485      105,  105,  105,  105,  105,  105,    0,    0,    0,    0,
     486        0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
     487      105,  105,  105,  105,  105,  105,  105,   50,   63,   75,
     488       81,   95,  101,  105,  105,  105,    0,    0,    0,    0,
     489        0,    0,    0,    0,  105,  105,   13,   19,  105,  105,
     490       31,  105,  105,  105,   26,   46,   89,    0,    0,  105,
     491      105,  105,  105,  105,  105,   76,  102,  105,   87,   20,
     492      105,  105,   44,   84,  105,  105,  105,  105,  105,  105,
     493
     494      105,   98,   70,    0
    495495    } ;
    496496
     
    540540    } ;
    541541
    542 static yyconst flex_int16_t yy_base[1083] =
     542static yyconst flex_int16_t yy_base[1079] =
    543543    {   0,
    544         0,   84, 2330, 2327,   94,    0,  177,  178,  179,  180,
    545      2341, 2877,  191, 2877,  197,   55, 2877, 2287,   60,  173,
    546      2877, 2877, 2877,   56,  188, 2877,  191,  189,  204,  216,
    547       275,    0, 2306, 2877,  216, 2305,  152,  344,  155,  220,
    548      2877,  159, 2877,  217,  226, 2877,  185,  154,  212,  251,
    549       237,  270,  235,  257,  241,  279,  193,  305,  314,  351,
    550       238,  228,  227, 2877,  225, 2877, 2300,  406,  412, 2877,
    551      2309, 2877, 2277,  235, 2877,    0, 2877,  439,    0, 2877,
    552       426, 2877,  452,  464, 2877,  511, 2276,  264, 2877, 2877,
    553      2877, 2877, 2877, 2293, 2877, 2290, 2877, 2877, 2300,  572,
    554 
    555      2877, 2317, 2877,  451,  457,  524,  547,  298,  253,  197,
    556       312,  279,    0,  342,  325,  198,  322, 2877, 2877, 2877,
    557      2287, 2877, 2877, 2877, 2285, 2282,  218,  312, 2295,  350,
    558       363,  368,  369,  391,  411,  417, 2276,  452, 2225,  453,
    559      2254, 2877,  274, 2877, 2877,  438, 2248, 2245, 2877, 2218,
    560       435,  282,  353,  277,  391,  419,  442,  320,  583,  451,
    561       446,  443,  479,  469,  364,  472,  481,  454,  458,  484,
    562       503,  493,  352,  506,  486,  453,  507,  509, 2246,  539,
    563       532,  524,  516,  528,  556,  530,  540,  552,  553,  564,
    564       574,  538,  576,  613,  573,  597,  602,  571, 2877, 2877,
    565 
    566       668,  674, 2294,  680, 2877,  686, 2877, 2241,  603, 2235,
    567      2234,    0,  683, 2877, 2877,  692, 2233, 2231, 2211,    0,
    568      2233,  556,  627,  630,  662,  699,  688,  692,  693,  696,
    569      2230,  700,  703, 2205, 2202, 2877,    0,  695,  726,  693,
    570       701, 2201, 2253, 2877,  747,  742,  700,  753,  760,  793,
    571       815,  746, 2877, 2210, 2183,    0,  802, 2227,  801,  754,
    572      2877, 2203, 2178,  839, 2877, 2877, 2210, 2877, 2877,  709,
    573       723, 2187, 2185,  755, 2181, 2180, 2178,    0, 2175,    0,
    574      2144,  694,  736,  737,  741,  614,  739,  738,  742,  798,
    575       807,  792,  802,  797,  746,  816,  748,  791,  824,  819,
    576 
    577       826, 2174,  827,  830,  831,  440,  834,  838,  836,  843,
    578       847,  849,  841,  850,  861,  853,  862,  851,  863,  865,
    579       872,  864,  873,  874, 2173,  749,  875,  876,  878,  880,
    580       881,  882,  884,  885,  886,  888,  889,  892,  898,  896,
    581      2171,  899,  906,  944,  901,  907,  913,  917,  908,  911,
    582       976,  977, 2165, 2164, 2163,    0, 2161,    0,  964,  968,
    583      2158,    0, 2157,    0, 2156,    0, 2176, 2877,  964,  967,
    584      2153, 2147,    0, 2143,    0, 2877,  979,  998,  990, 2877,
    585      1004, 1044, 2141, 1020, 1066, 2139, 2877, 2877,  963, 1006,
    586      1052, 1005, 1091,  968, 1083, 1006, 2877, 2877, 2136, 2134,
    587 
    588      2132,    0, 2129,    0, 2126,    0, 2125,    0, 2877,  931,
    589       981,  985,  928, 1024,  987, 1068,  958, 1070, 1060, 1010,
    590      1005, 1072, 1083, 1022, 1078, 1082, 1088, 1042, 1084, 1081,
    591      1089, 1097, 2127, 1090, 2125, 1095, 2122, 1093, 1091, 1109,
    592      1101, 1111, 1115, 1116, 2119, 1118, 2118, 1119, 1120, 1121,
    593      1123, 1126, 1127, 1128, 2117, 1129, 2115, 1131, 1134, 1135,
    594      1132, 1138, 1140, 1143, 1148, 1149, 1150, 1152, 1155, 1151,
    595      1161, 1164, 1166, 1168, 1169, 2112, 1170, 1172, 1175, 1221,
    596      2106,    0, 2105,    0, 2104,    0, 2102,    0, 1216, 2099,
    597         0, 2096,    0, 2095, 2094, 2092,    0, 2089,    0, 1223,
    598 
    599      2086, 1229, 1245, 1231, 1270, 1236, 1186, 1185, 2877, 1286,
    600      1304, 1297, 2097, 2072, 2082, 2079,    0, 2076,    0, 2075,
    601         0, 2074,    0, 2072,    0, 2069,    0, 1190, 1210, 2069,
    602      1191, 1227, 1212, 1230, 1253, 1246, 1254, 1280, 1281, 1282,
    603      1284, 1228, 1287, 1286, 1288, 1285,  234, 1293, 1289, 1304,
    604      1300, 1305, 2068, 1322, 1306, 2067, 1308, 1313, 1318, 1320,
    605      2065, 1323, 1324, 1326, 1327, 2062, 1330, 1331, 2061, 1334,
    606      1335, 2060, 2058, 1337, 1339, 1340, 2055, 1004, 1346, 1347,
    607      1348, 1349, 1364, 2054, 2053, 1351, 1353, 2051, 1350, 1355,
    608      2018, 1362, 2066, 2012,    0, 2009,    0, 2006,    0, 2005,
    609 
    610         0, 2004,    0, 2002,    0, 1999,    0, 1996,    0, 1401,
    611      1407, 1435, 1418, 1995, 2877, 1424, 1411, 1421, 1427, 1994,
    612      2877, 1992,    0, 1989,    0, 1988,    0, 1987,    0,    0,
    613         0, 1988,    0, 1412, 1422, 1419, 1387, 1369, 1416, 1433,
    614      1436, 1403, 1446, 1441, 1431, 1432, 1451, 1452, 1455, 1456,
    615      1457, 1486, 1460, 1461, 1462, 1464, 1463, 1467, 1985, 1465,
    616      1468, 1470, 1984, 1983, 1981, 1472, 1466, 1974, 1478, 1972,
    617      1971, 1480, 1484, 1968, 1964, 1960, 1956, 1953, 1952, 1487,
    618      1494, 1951, 1497, 1483, 1949, 1996, 2877, 1942,    0, 1941,
    619         0,    0,    0, 1942,    0,    0,    0, 2877,    0,    0,
    620 
    621         0,    0, 1537, 1936, 2877, 2877, 1543, 1935,    0, 1934,
    622         0,    0,    0,    0, 1932, 1499, 1519, 1932, 1500, 1524,
    623      1530, 1501, 1502, 1533, 1537, 1931, 1532, 1541, 1534, 1539,
    624      1544,  599, 1548, 1549, 1579, 1556, 1557, 1560, 1561, 1562,
    625      1563, 1564, 1930, 1928, 1567, 1925, 1924, 1566, 1569, 1572,
    626      1923, 1574, 1578,    0,    0,    0, 1918, 1915, 1914, 1624,
    627         0, 1913, 1911, 1908, 1907, 1906, 1907, 1904, 1903, 1902,
    628      1580, 1588, 1576, 1577, 1601, 1583, 1602, 1589, 1604, 1603,
    629      1636, 1900, 1609, 1897, 1610, 1614, 1617, 1622, 1618, 1623,
    630      1896, 1624, 1895, 1893, 1886, 1626, 1884, 1883, 1877, 1876,
    631 
    632      1875, 1873, 1856, 1847, 1846, 1843, 1836, 1833, 1826, 1824,
    633      1628, 1826, 1629, 1630, 1631, 1632, 1635, 1637, 1805, 1639,
    634      1667, 1642, 1804, 1643, 1653, 1658, 1651, 1652, 1659, 1662,
    635      1800, 1793, 1791, 1790, 1748, 1745, 1744, 1742, 1741, 1737,
    636      1735, 1733, 1732, 1734, 1663, 1664, 1666, 1672, 1673, 1674,
    637      1675, 1731, 1689, 1676, 1644, 1522, 1680, 1685, 1686, 1687,
    638      1500, 1411, 1363, 1362, 1260, 1219, 1218, 1047, 1690, 1688,
    639      1046, 1700, 1695, 1701,  924, 1704, 1708, 1709,  839,  794,
    640       759,  702,  636, 1682, 1710, 1713, 1714, 1715, 1717,  638,
    641       536, 1719,  488,  441, 1721, 1722,  408,  281, 1723, 1726,
    642 
    643      1727, 1729, 1728, 1730, 1733,  233,  137, 2877, 1805, 1818,
    644      1831, 1841, 1851, 1864, 1874, 1887, 1900, 1913, 1921, 1931,
    645      1938, 1945, 1952, 1959, 1966, 1973, 1980, 1987, 1994, 2001,
    646      2005, 2013, 2019, 2026, 2033, 2040, 2047, 2050, 2057, 2063,
    647      2076, 2089, 2096, 2103, 2110, 2117, 2120, 2127, 2130, 2137,
    648      2140, 2147, 2150, 2157, 2160, 2167, 2170, 2177, 2180, 2187,
    649      2195, 2202, 2209, 2216, 2223, 2226, 2233, 2236, 2243, 2246,
    650      2253, 2259, 2272, 2279, 2286, 2289, 2296, 2299, 2306, 2309,
    651      2316, 2319, 2326, 2329, 2336, 2339, 2346, 2353, 2356, 2363,
    652      2366, 2373, 2380, 2387, 2390, 2397, 2400, 2407, 2410, 2417,
    653 
    654      2420, 2427, 2430, 2437, 2443, 2456, 2463, 2470, 2473, 2480,
    655      2483, 2490, 2493, 2500, 2503, 2510, 2513, 2520, 2523, 2530,
    656      2533, 2540, 2543, 2550, 2557, 2560, 2567, 2570, 2577, 2580,
    657      2587, 2590, 2593, 2599, 2606, 2615, 2622, 2629, 2632, 2639,
    658      2642, 2645, 2651, 2658, 2661, 2664, 2667, 2670, 2673, 2676,
    659      2679, 2686, 2689, 2696, 2699, 2702, 2705, 2708, 2718, 2725,
    660      2728, 2731, 2734, 2741, 2748, 2755, 2758, 2765, 2772, 2779,
    661      2786, 2793, 2800, 2807, 2814, 2821, 2828, 2835, 2842, 2849,
    662      2856, 2863
     544        0,   84, 2323, 2322,   94,    0,  177,  178,  179,  180,
     545     2338, 2866,  191, 2866,  197,   55, 2866, 2283,   60,  173,
     546     2866, 2866, 2866,   56,  188, 2866,  191,  189,  204,  216,
     547      275,    0, 2300, 2866,  216, 2298,  152,  344,  155,  220,
     548     2866,  159, 2866,  217,  226, 2866,  185,  154,  212,  251,
     549      237,  270,  235,  257,  241,  279,  193,  305,  314,  333,
     550      238,  228,  227, 2866,  225, 2866, 2295,  402,  390, 2866,
     551     2306, 2866, 2273,  235, 2866,    0, 2866,  426,    0, 2866,
     552      417, 2866,  439,  451, 2866,  498, 2270,  264, 2866, 2866,
     553     2866, 2866, 2866, 2286, 2866, 2285, 2866, 2866, 2297,  559,
     554
     555     2866, 2313, 2866,  438,  444,  511,  534,  289,  253,  197,
     556      380,  305,    0,  319,  280,  198,  322, 2866, 2866, 2866,
     557     2281, 2866, 2866, 2866, 2278, 2277,  218,  312, 2292,  350,
     558      459,  368,  398,  440,  405,  448, 2272,  441, 2219,  458,
     559     2247, 2866,  335, 2866, 2866,  321, 2243, 2242, 2866, 2214,
     560      444,  297,  433,  372,  425,  454,  434,  461,  570,  455,
     561      468,  385,  474,  475,  494,  492,  489,  464,  488,  491,
     562      513,  503,  430,  521,  517,  519,  516,  522, 2240,  526,
     563      523,  276,  460,  524,  542,  555,  554,  561,  325,  558,
     564      584,  552,  600,  586,  593,  588,  595, 2866, 2866,  667,
     565
     566      655, 2287,  682, 2866,  688, 2866, 2236,  590, 2232, 2230,
     567        0,  648, 2866, 2866,  675, 2227, 2224, 2223,    0, 2246,
     568      578,  631,  654,  685,  698,  660,  689,  670,  692, 2242,
     569      695,  701, 2200, 2198, 2866,    0,  693,  720,  685,  711,
     570     2197, 2247, 2866,  737,  745,  666,  757,  763,  797,  780,
     571      599, 2866, 2203, 2178,    0,  805, 2224,  806,  617, 2866,
     572     2199, 2172,  819, 2866, 2866, 2203, 2866, 2866,  707,  722,
     573     2182, 2182,  699, 2177, 2174, 2171,    0, 2170,    0, 2141,
     574      743,  724,  739,  689,  741,  720,  623,  759,  762,  804,
     575      681,  795,  749,  746,  799,  801,  765,  784,  803,  811,
     576
     577     2170,  814,  818,  827,  831,  817,  821,  833,  835,  841,
     578      842,  834,  843,  844,  845,  847,  849,  857,  858,  860,
     579      851,  859,  866, 2167,  867,  868,  869,  871,  873,  874,
     580      763,  875,  876,  880,  881,  884,  887,  888,  885, 2164,
     581      891,  936,  894,  897,  905,  899,  901,  902,  965,  961,
     582     2160, 2159, 2157,    0, 2154,    0,  952,  956, 2153,    0,
     583     2152,    0, 2150,    0, 2169, 2866,  951,  952, 2148, 2145,
     584        0, 2143,    0, 2866,  967,  986,  978, 2866,  992, 1032,
     585     2140, 1008, 1054, 2136, 2866, 2866,  915,  951, 1040,  993,
     586     1079,  956, 1071,  994, 2866, 2866, 2132, 2130, 2128,    0,
     587
     588     2125,    0, 2123,    0, 2121,    0, 2866,  935,  969,  973,
     589      968, 1012,  975, 1056,  992, 1058,  997, 1032,  993, 1000,
     590     1060, 1061, 1066, 1070, 1073, 1030, 1071, 1069, 1072, 1078,
     591     2121,  700, 2118, 1085, 2117, 1079, 1081, 1089, 1087, 1098,
     592     1096, 1099, 2116, 1101, 2114, 1105, 1106, 1107, 1109, 1112,
     593     1113, 1114, 2111, 1115, 2108, 1117, 1119, 1120, 1118, 1124,
     594     1126, 1121, 1136, 1130, 1134, 1135, 1149, 1137, 1138, 1150,
     595     1152, 1153, 2107, 1151, 1154, 1167, 1205, 2103,    0, 2101,
     596        0, 2098,    0, 2095,    0, 1204, 2094,    0, 2093,    0,
     597     2091, 2088, 2085,    0, 2084,    0, 1208, 2083, 1214, 1230,
     598
     599     1216, 1255, 1221, 1172, 1169, 2866, 1271, 1289, 1282, 2093,
     600     2066, 2075, 2074,    0, 2073,    0, 2071,    0, 2068,    0,
     601     2065,    0, 2064,    0, 1190, 1159, 2066, 1193, 1195, 1197,
     602     1212, 1237, 1231, 1265, 1248, 1266, 1267, 1213, 1268, 1269,
     603     1283, 1270, 1271,  234, 1285, 1273, 1274, 1287, 1293, 2064,
     604     1306, 1301, 2061, 1290, 1303, 1305, 1308, 2058, 1312, 1309,
     605     1311, 1313, 2057, 1314, 1319, 2056, 1316, 1322, 2054, 2051,
     606     1315, 1327, 1330, 2050, 1333, 1332, 1336, 1334, 1338, 1345,
     607     2049, 1335, 1348, 2047, 1346, 1349, 2044, 1351, 2093, 2039,
     608        0, 2037,    0, 2004,    0, 2002,    0, 2001,    0, 1998,
     609
     610        0, 1995,    0, 1994,    0, 1394, 1404, 1428, 1415, 1993,
     611     2866, 1421, 1370, 1391, 1419, 1991, 2866, 1988,    0, 1985,
     612        0, 1984,    0, 1983,    0,    0,    0, 1984,    0, 1352,
     613     1406, 1408, 1359, 1354, 1409, 1415, 1412, 1411, 1423, 1433,
     614     1425, 1430, 1435, 1437, 1439, 1448, 1442, 1449, 1440, 1444,
     615     1453, 1450, 1452, 1456, 1981, 1458, 1460, 1463, 1980, 1979,
     616     1977, 1466, 1467, 1974, 1470, 1973, 1972, 1469, 1473, 1970,
     617     1963, 1961, 1960, 1957, 1953, 1475, 1479, 1949, 1476, 1477,
     618     1945, 1992, 2866, 1938,    0, 1937,    0,    0,    0, 1938,
     619        0,    0,    0, 2866,    0,    0,    0,    0, 1525, 1932,
     620
     621     2866, 2866, 1531, 1931,    0, 1930,    0,    0,    0,    0,
     622     1928, 1488, 1483, 1928, 1491, 1507, 1518, 1490, 1519, 1521,
     623     1508, 1927, 1525, 1529, 1527, 1541, 1530, 1384, 1543, 1539,
     624     1558, 1547, 1549, 1512, 1545, 1552, 1553, 1554, 1926, 1924,
     625     1557, 1921, 1920, 1556, 1537, 1560, 1919, 1561, 1564,    0,
     626        0,    0, 1914, 1911, 1910, 1612,    0, 1909, 1907, 1904,
     627     1903, 1902, 1903, 1900, 1899, 1898, 1568, 1572, 1566, 1577,
     628     1590, 1570, 1578, 1579, 1591, 1596, 1625, 1896, 1598, 1893,
     629     1599, 1603, 1604, 1608, 1606, 1612, 1892, 1613, 1891, 1889,
     630     1886, 1614, 1885, 1884, 1879, 1872, 1870, 1869, 1866, 1865,
     631
     632     1864, 1862, 1845, 1836, 1835, 1832, 1616, 1828, 1617, 1622,
     633     1620, 1619, 1624, 1626, 1825, 1628, 1644, 1630, 1818, 1631,
     634     1639, 1645, 1647, 1634, 1649, 1651, 1813, 1812, 1791, 1790,
     635     1789, 1782, 1780, 1779, 1737, 1735, 1733, 1732, 1730, 1732,
     636     1652, 1654, 1655, 1657, 1659, 1662, 1663, 1731, 1729, 1668,
     637     1727, 1724, 1669, 1670, 1664, 1675, 1719, 1718, 1671, 1629,
     638     1564, 1468, 1350, 1269, 1678, 1681, 1239, 1682, 1688, 1689,
     639     1238, 1690, 1692, 1696, 1206, 1171, 1157, 1035, 1031, 1691,
     640     1697, 1700, 1704, 1702, 1706,  998,  560, 1701,  527,  395,
     641     1707, 1710,  357,  300, 1708, 1713, 1715, 1718, 1716, 1719,
     642
     643     1720,  233,  137, 2866, 1794, 1807, 1820, 1830, 1840, 1853,
     644     1863, 1876, 1889, 1902, 1910, 1920, 1927, 1934, 1941, 1948,
     645     1955, 1962, 1969, 1976, 1983, 1990, 1994, 2002, 2008, 2015,
     646     2022, 2029, 2036, 2039, 2046, 2052, 2065, 2078, 2085, 2092,
     647     2099, 2106, 2109, 2116, 2119, 2126, 2129, 2136, 2139, 2146,
     648     2149, 2156, 2159, 2166, 2169, 2176, 2184, 2191, 2198, 2205,
     649     2212, 2215, 2222, 2225, 2232, 2235, 2242, 2248, 2261, 2268,
     650     2275, 2278, 2285, 2288, 2295, 2298, 2305, 2308, 2315, 2318,
     651     2325, 2328, 2335, 2342, 2345, 2352, 2355, 2362, 2369, 2376,
     652     2379, 2386, 2389, 2396, 2399, 2406, 2409, 2416, 2419, 2426,
     653
     654     2432, 2445, 2452, 2459, 2462, 2469, 2472, 2479, 2482, 2489,
     655     2492, 2499, 2502, 2509, 2512, 2519, 2522, 2529, 2532, 2539,
     656     2546, 2549, 2556, 2559, 2566, 2569, 2576, 2579, 2582, 2588,
     657     2595, 2604, 2611, 2618, 2621, 2628, 2631, 2634, 2640, 2647,
     658     2650, 2653, 2656, 2659, 2662, 2665, 2668, 2675, 2678, 2685,
     659     2688, 2691, 2694, 2697, 2707, 2714, 2717, 2720, 2723, 2730,
     660     2737, 2744, 2747, 2754, 2761, 2768, 2775, 2782, 2789, 2796,
     661     2803, 2810, 2817, 2824, 2831, 2838, 2845, 2852
    663662    } ;
    664663
    665 static yyconst flex_int16_t yy_def[1083] =
     664static yyconst flex_int16_t yy_def[1079] =
    666665    {   0,
    667       908,    1,  909,  909,  908,    5,  910,  910,  911,  911,
    668       908,  908,  908,  908,  908,  908,  908,  912,  908,  908,
     666      904,    1,  905,  905,  904,    5,  906,  906,  907,  907,
     667      904,  904,  904,  904,  904,  904,  904,  908,  904,  904,
     668      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     669      904,   31,  904,  904,  904,  904,  904,  904,  909,  908,
     670      904,  904,  904,  904,  908,  904,  908,  908,  908,  908,
    669671      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    670       908,   31,  908,  908,  908,  908,  908,  908,  913,  912,
    671       908,  908,  908,  908,  912,  908,  912,  912,  912,  912,
    672       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    673       912,  912,  912,  908,  908,  908,  908,  908,  914,  908,
    674       908,  908,  915,  908,  908,  916,  908,  908,  917,  908,
    675       908,  908,  908,  908,  908,  908,  912,  908,  908,  908,
    676       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    677 
    678       908,  918,  908,  908,   30,  908,  908,  908,  908,  919,
    679        30,  908,   31,  908,  908,   31,  908,  908,  908,  908,
    680       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    681       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    682       920,  908,  908,  908,  908,  912,  921,  922,  908,  908,
    683       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    684       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    685       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    686       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    687       912,  912,  912,  912,  912,  912,  912,  912,  908,  908,
    688 
    689       908,  914,  914,  914,  908,  914,  908,  915,  908,  923,
    690       924,  916,  908,  908,  908,  908,  925,  926,  927,  917,
    691       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    692       908,  908,  908,  928,  929,  908,  100,  908,  908,  908,
    693       908,  100,  918,  908,  100,  111,  246,  908,  908,  908,
    694       908,  908,  908,  908,  908,  930,  931,  932,  908,  908,
    695       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    696       908,  908,  933,  908,  934,  935,  936,  937,  938,  939,
    697       908,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    698       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    699 
    700       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    701       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    702       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    703       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    704       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    705       941,  942,  943,  944,  945,  946,  947,  948,  908,  908,
    706       949,  950,  951,  952,  953,  954,  908,  908,  908,  908,
    707       908,  955,  956,  957,  958,  908,  908,  908,  908,  908,
    708       908,  908,  382,  908,  378,  385,  908,  908,  959,  960,
    709       961,  908,  908,  908,  961,  908,  908,  908,  962,  963,
    710 
    711       964,  965,  966,  967,  968,  969,  970,  971,  908,  972,
    712       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    713       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    714       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    715       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    716       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    717       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    718       972,  972,  972,  972,  972,  972,  972,  972,  972,  973,
    719       974,  975,  976,  977,  978,  979,  980,  981,  908,  982,
    720       983,  984,  985,  986,  986,  987,  988,  989,  990,  908,
    721 
    722       500,  908,  908,  991,  908,  991,  908,  908,  908,  908,
    723       908,  908,  908,  908,  992,  993,  994,  995,  996,  997,
    724       998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1005, 1005,
    725      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    726      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    727      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    728      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    729      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    730      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    731      1005, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
    732 
    733      1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022,  908,
    734       908,  908,  908, 1023,  908,  612,  908,  908,  908,  616,
    735       908, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
    736      1033, 1034, 1035, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    737      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    738      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    739      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    740      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    741      1034, 1034, 1034, 1034, 1034, 1036,  908, 1037, 1038, 1039,
    742      1040, 1041, 1042, 1043, 1044, 1045, 1046,  908, 1047, 1048,
    743 
    744      1049, 1050,  908,  703,  908,  908,  908, 1051, 1052, 1053,
    745      1054, 1055, 1056, 1057, 1058, 1059, 1059, 1059, 1059, 1059,
    746      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    747      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    748      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    749      1059, 1059, 1059, 1060, 1061, 1062, 1063, 1064, 1065,  908,
    750      1066, 1051, 1053, 1067, 1068, 1058, 1059, 1059, 1059, 1059,
    751      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    752      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    753      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1069, 1070,
    754 
    755      1063, 1071, 1064, 1072, 1065, 1073, 1074, 1067, 1075, 1068,
    756      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    757      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    758      1076, 1069, 1077, 1070, 1078, 1071, 1079, 1072, 1080, 1073,
    759      1081, 1074, 1075, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    760      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    761      1082, 1076, 1077, 1078, 1079, 1053, 1080, 1081, 1059, 1059,
    762      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    763      1059, 1082, 1053, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    764      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    765 
    766      1059, 1059, 1059, 1059, 1059, 1059, 1059,    0,  908,  908,
     672      908,  908,  908,  904,  904,  904,  904,  904,  910,  904,
     673      904,  904,  911,  904,  904,  912,  904,  904,  913,  904,
     674      904,  904,  904,  904,  904,  904,  908,  904,  904,  904,
     675      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     676
     677      904,  914,  904,  904,   30,  904,  904,  904,  904,  915,
     678       30,  904,   31,  904,  904,   31,  904,  904,  904,  904,
     679      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     680      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     681      916,  904,  904,  904,  904,  908,  917,  918,  904,  904,
    767682      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    768683      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    769684      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    770685      908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    771       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    772       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    773       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    774       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    775       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    776 
    777       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    778       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    779       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    780       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    781       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    782       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    783       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    784       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    785       908,  908
     686      908,  908,  908,  908,  908,  908,  908,  904,  904,  904,
     687
     688      910,  910,  910,  904,  910,  904,  911,  904,  919,  920,
     689      912,  904,  904,  904,  904,  921,  922,  923,  913,  904,
     690      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     691      904,  904,  924,  925,  904,  100,  904,  904,  904,  904,
     692      100,  914,  904,  100,  111,  245,  904,  904,  904,  904,
     693      904,  904,  904,  904,  926,  927,  928,  904,  904,  904,
     694      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     695      904,  929,  904,  930,  931,  932,  933,  934,  935,  904,
     696      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     697      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     698
     699      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     700      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     701      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     702      936,  936,  936,  936,  936,  936,  936,  936,  936,  936,
     703      936,  936,  936,  936,  936,  936,  936,  936,  937,  938,
     704      939,  940,  941,  942,  943,  944,  904,  904,  945,  946,
     705      947,  948,  949,  950,  904,  904,  904,  904,  904,  951,
     706      952,  953,  954,  904,  904,  904,  904,  904,  904,  904,
     707      380,  904,  376,  383,  904,  904,  955,  956,  957,  904,
     708      904,  904,  957,  904,  904,  904,  958,  959,  960,  961,
     709
     710      962,  963,  964,  965,  966,  967,  904,  968,  968,  968,
     711      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     712      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     713      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     714      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     715      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     716      968,  968,  968,  968,  968,  968,  968,  968,  968,  968,
     717      968,  968,  968,  968,  968,  968,  969,  970,  971,  972,
     718      973,  974,  975,  976,  977,  904,  978,  979,  980,  981,
     719      982,  982,  983,  984,  985,  986,  904,  497,  904,  904,
     720
     721      987,  904,  987,  904,  904,  904,  904,  904,  904,  904,
     722      904,  988,  989,  990,  991,  992,  993,  994,  995,  996,
     723      997,  998,  999, 1000, 1001, 1001, 1001, 1001, 1001, 1001,
     724     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     725     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     726     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     727     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     728     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
     729     1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1003,
     730     1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
     731
     732     1014, 1015, 1016, 1017, 1018,  904,  904,  904,  904, 1019,
     733      904,  608,  904,  904,  904,  612,  904, 1020, 1021, 1022,
     734     1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1030,
     735     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     736     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     737     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     738     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     739     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
     740     1030, 1032,  904, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
     741     1040, 1041, 1042,  904, 1043, 1044, 1045, 1046,  904,  699,
     742
     743      904,  904,  904, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
     744     1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     745     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     746     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     747     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056,
     748     1057, 1058, 1059, 1060, 1061,  904, 1062, 1047, 1049, 1063,
     749     1064, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     750     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     751     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     752     1055, 1055, 1055, 1055, 1065, 1066, 1059, 1067, 1060, 1068,
     753
     754     1061, 1069, 1070, 1063, 1071, 1064, 1055, 1055, 1055, 1055,
     755     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     756     1055, 1055, 1055, 1055, 1055, 1055, 1072, 1065, 1073, 1066,
     757     1074, 1067, 1075, 1068, 1076, 1069, 1077, 1070, 1071, 1055,
     758     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     759     1055, 1055, 1055, 1055, 1055, 1055, 1078, 1072, 1073, 1074,
     760     1075, 1049, 1076, 1077, 1055, 1055, 1055, 1055, 1055, 1055,
     761     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1078, 1049, 1055,
     762     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     763     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
     764
     765     1055, 1055, 1055,    0,  904,  904,  904,  904,  904,  904,
     766      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     767      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     768      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     769      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     770      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     771      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     772      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     773      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     774      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     775
     776      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     777      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     778      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     779      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     780      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     781      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     782      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     783      904,  904,  904,  904,  904,  904,  904,  904
    786784    } ;
    787785
    788 static yyconst flex_int16_t yy_nxt[2963] =
     786static yyconst flex_int16_t yy_nxt[2952] =
    789787    {   0,
    790788       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    811809
    812810       84,   84,   84,   83,   92,   94,   88,  143,  147,   99,
    813        96,  100,  100,  100,  100,  100,  100,  256,  908,   95,
     811       96,  100,  100,  100,  100,  100,  100,  255,  904,   95,
    814812      101,   86,   97,   98,   86,  102,  162,  119,  144,   78,
    815813       78,   78,   78,  145,  148,  103,  104,   88,  105,  105,
    816       105,  105,  106,  106,  120,   88,  121,  122,  149,  267,
    817       150,  268,  258,  264,  185,  107,  199,  652,  160,  108,
     814      105,  105,  106,  106,  120,   88,  121,  122,  149,  266,
     815      150,  267,  257,  263,  185,  107,  198,  648,  160,  108,
    818816      161,  151,  152,  153,   88,  109,  110,  154,  155,  163,
    819817      156,  111,   88,  157,  158,  146,  164,  107,   88,   88,
    820        88,  159,  165,  112,  210,   88,   88,   88,  198,   88,
    821        88,  109,  197,   88,  110,  104,  254,  113,  113,  113,
    822 
    823       113,  113,  113,   88,  170,  178,  171,  200,  196,   88,
    824       211,  181,  166,  234,  107,  172,  167,  182,  114,  179,
    825       255,  168,   88,  275,  115,  169,  180,  173,  253,   88,
    826       116,   88,  908,   88,   88,  174,  107,  175,  286,  235,
    827       176,  252,  117,  267,  177,  268,  252,  253,  183,  276,
    828       115,  126,  284,  184,  253,  127,  128,   88,  129,  144,
    829       130,  131,  908,  132,  145,  133,   88,  259,  262,  186,
    830       187,  261,   88,  253,  134,  135,  136,  194,  190,  188,
    831       269,  267,  189,  268,  290,  260,  191,  269,  192,  260,
    832       908,  261,  263,  193,  267,  137,  268,  261,  138,  267,
    833 
    834       267,  268,  268,   88,   88,   88,  146,  201,   82,   83,
    835        83,   83,  201,  204,  205,  202,   88,  261,  204,  318,
    836       195,  270,  267,  285,  268,  139,  140,   81,   82,   83,
    837        83,   83,   81,  309,  206,  206,  206,  206,  206,  206,
    838       213,  214,  267,   88,  268,  213,  144,  215,  267,  271,
    839       268,  145,  215,   83,   82,   83,   83,   83,   83,  287,
    840        88,  216,  216,  216,  216,   83,   82,   84,   84,   84,
    841        83,   88,  215,  245,  245,  245,  245,  245,  245,  246,
    842       246,  246,  246,  267,  267,  268,  268,   88,  217,  288,
    843        88,  215,   88,   88,   88,   88,  215,  215,   88,  436,
    844 
    845       215,  215,  282,   88,  304,   88,   88,  908,  215,  283,
    846        88,  215,  247,  215,  218,  215,  289,  219,  221,  302,
    847       303,   88,  222,  223,   88,  321,  307,  224,  225,  312,
    848       226,   88,  227,   88,  310,  908,   88,  313,   88,  308,
    849        88,  228,  229,  230,  104,   88,  106,  106,  106,  106,
    850       106,  106,  305,  306,  311,   88,  320,  314,   88,   88,
    851       315,   88,  231,  107,  249,  232,  249,  317,   88,  250,
    852       250,  250,  250,  250,  250,  319,   88,  328,  316,  248,
    853        88,  327,   88,  323,   88,  107,  322,  367,   88,  368,
    854        88,   88,   88,  233,  237,  237,  237,  237,  237,  237,
    855 
    856       333,  326,  251,  334,   88,   88,  324,  329,   88,  336,
    857       238,  239,  240,  325,  241,  240,   88,  342,  338,  330,
    858       335,  144,  781,   88,  337,   88,   88,  242,   88,  331,
    859       332,  340,  240,  239,  240,   88,  339,  241,  345,  240,
    860       291,  292,  293,  350,  294,  295,  346,  343,  296,   88,
    861       297,   88,  353,  341,   88,  298,  299,  300,  367,  301,
    862       368,  367,  347,  368,  348,   88,   88,  349,  344,  201,
    863        82,   83,   83,   83,  201,  204,  205,  202,  354,  368,
    864       204,  204,  205,  414,  213,  214,  204,  351,  205,  213,
    865        88,  908,  351,  367,  352,  368,  206,  206,  206,  206,
    866 
    867       206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
    868       206,  206,  206,  206,  359,  359,  359,  359,  368,  367,
    869       908,  368,  369,  367,  367,  368,  368,  367,  370,  368,
    870       367,  367,  368,  368,  367,  376,  368,  376,  376,  380,
    871       267,  380,  268,  377,  380,  377,   88,  360,  378,  378,
    872       378,  378,  378,  378,  267,  384,  268,  908,  376,  410,
    873       376,  380,  104,  380,  246,  246,  246,  246,  380,  382,
    874       382,  382,  382,  382,  382,  106,  106,  106,  106,  106,
    875       106,  379,  250,  250,  250,  250,  250,  250,   88,   88,
    876        88,   88,  107,   88,   88,  387,  415,  247,   88,  417,
    877 
    878        88,   88,  383,  397,  399,  428,  411,  412,  259,  413,
    879       416,   88,  457,  425,  107,  385,  385,  385,  385,  385,
    880       385,  387,  390,  106,  106,  106,  106,  106,  106,  397,
    881       400,  238,  249,  240,  249,  241,  240,  250,  250,  250,
    882       250,  250,  250,   88,   88,  392,   88,  393,  386,   88,
    883        88,  394,  429,  240,   88,  240,  259,  395,  241,   88,
    884       240,  113,  113,  113,  113,  113,  113,  422,   88,  396,
    885       418,   88,  423,  393,  419,  424,   88,  394,   88,   88,
    886       420,  421,   88,   88,  426,  427,   88,  434,   88,  430,
    887        88,   88,  435,   88,  264,   88,  432,  433,  431,   88,
    888 
    889       441,   88,   88,   88,  442,   88,  437,  443,  438,  439,
    890       440,  445,  444,   88,   88,   88,   88,   88,  449,  446,
    891       450,  447,  451,  448,   88,   88,   88,   88,   88,  452,
    892        88,  459,   88,   88,   88,  454,   88,   88,   88,  456,
    893        88,   88,  458,  455,   88,  461,  453,  466,   88,  460,
    894        88,   88,  144,   88,  465,  462,  464,  463,   88,   88,
    895        88,  471,  467,   88,  468,   88,  469,  473,  470,   88,
    896       472,  474,  475,  476,  477,  478,   88,  351,  205,  205,
    897        88,  479,  351,   88,  352,  203,  215,  215,  215,  215,
    898       359,  359,  359,  359,  528,  367,   88,  368,  367,  531,
    899 
    900       368,  378,  378,  378,  378,  378,  378,  377,  505,  377,
    901        88,  513,  378,  378,  378,  378,  378,  378,  506,  489,
    902       500,  500,  500,  500,  500,  500,  237,  237,  237,  237,
    903       237,  237,  535,   88,  505,  514,  238,   88,  240,   88,
    904       241,  240,  246,  246,  246,  246,  106,  106,  508,  529,
    905       533,  505,  530,  501,  509,  509,   88,   88,  240,  381,
    906       240,  507,   88,  241,  675,  240,  382,  382,  382,  382,
    907       382,  382,  390,  508,   88,  384,   88,  505,  538,  539,
    908       509,  509,  238,  239,  240,  532,  241,  240,  385,  385,
    909       385,  385,  385,  385,   88,  392,  543,  393,   88,  383,
    910 
    911       548,  394,  908,  908,  240,  239,  240,  395,  510,  241,
    912       510,  240,   88,  511,  511,  511,  511,  511,  511,  396,
    913        88,  386,   88,  393,   88,  537,  392,  394,  393,  534,
    914        88,  536,  394,   88,   88,   88,   88,  540,  515,  545,
    915        88,   88,   88,   88,  550,   88,  512,   88,  544,   88,
    916       396,  541,  542,   88,  393,  546,  553,  549,  394,  554,
    917       551,   88,  547,   88,  552,  556,  555,   88,   88,  559,
    918        88,   88,   88,   88,  557,   88,  558,  561,   88,   88,
    919        88,   88,  560,   88,   88,  562,   88,   88,  565,  569,
    920        88,  563,   88,  567,  564,   88,  573,  566,  570,  568,
    921 
    922        88,   88,   88,   88,   88,  574,  571,   88,  572,  578,
    923       575,  581,  576,   88,  582,  580,   88,  577,   88,  579,
    924        88,   88,   88,  205,   88,  585,  586,   88,  583,  593,
    925       592,  505,  589,  591,  615,  584,  587,  588,  215,  215,
    926       215,  215,   88,   88,  590,  500,  500,  500,  500,  500,
    927       500,  382,  382,  382,  382,  382,  382,  505,  636,  634,
    928       615,  238,   88,  240,   88,  241,  240,  385,  385,  385,
    929       385,  385,  385,  908,  883,  635,  505,  638,  501,   88,
    930        88,  505,   88,  240,  502,  240,  506,  611,  241,  611,
    931       240,  614,  612,  612,  612,  612,  612,  612,   88,  637,
    932 
    933       503,  647,  505,  641,  639,   88,   88,  505,  511,  511,
    934       511,  511,  511,  511,  510,  908,  510,  642,  640,  511,
    935       511,  511,  511,  511,  511,  613,  616,  616,  616,  616,
    936       616,  616,   88,   88,   88,  643,   88,   88,   88,   88,
    937        88,   88,  617,  649,  618,   88,  619,  618,  648,  645,
    938       651,  650,   88,  644,  653,  646,   88,   88,   88,  620,
    939        88,  656,  657,  654,  618,   88,  618,  659,  658,  619,
    940        88,  618,   88,  655,   88,   88,   88,  660,   88,   88,
    941       661,  663,   88,   88,  664,  662,   88,   88,  669,   88,
    942       666,   88,   88,  665,  667,  670,  671,  668,   88,   88,
    943 
    944        88,   88,   88,   88,  673,   88,  677,   88,  676,  674,
    945       680,  672,  681,  679,   88,  682,   88,  908,  908,  683,
    946       684,   88,  678,  500,  500,  500,  500,  500,  500,  612,
    947       612,  612,  612,  612,  612,  611,  685,  611,  721,   88,
    948       612,  612,  612,  612,  612,  612,  616,  616,  616,  616,
    949       616,  616,  720,  705,  705,   88,  610,  703,  703,  703,
    950       703,  703,  703,  705,   88,  706,  908,  706,   88,  716,
    951       706,   88,  725,  617,   88,  618,  705,  619,  618,  620,
    952       719,  718,  717,   88,   88,   88,  705,  706,   88,  706,
    953       704,  722,  723,   88,  706,  618,  724,  618,   88,  729,
    954 
    955       619,  726,  618,   88,   88,  728,  727,   88,   88,   88,
    956       735,  733,   88,   88,   88,   88,   88,   88,   88,   88,
    957        88,  731,   88,  738,   88,  730,  734,  736,  741,  732,
    958        88,  744,   88,  737,  739,   88,   88,  740,   88,   88,
    959       742,  748,  743,  749,  745,  746,   88,  747,  750,   88,
    960       753,   88,   88,   88,   88,  882,  751,  773,  752,  703,
    961       703,  703,  703,  703,  703,  616,  616,  616,  616,  616,
    962       616,   88,  767,  772,   88,  617,   88,  618,  769,  619,
    963       618,  768,   88,  770,   88,   88,   88,  771,  774,   88,
    964       776,   88,  704,   88,  779,  778,   88,  618,  707,  618,
    965 
    966        88,   88,  619,  782,  618,  784,  777,  775,   88,   88,
    967       783,  785,   88,   88,   88,   88,   88,  780,   88,   88,
    968       787,   88,  786,  788,   88,  791,   88,  789,   88,   88,
    969        88,   88,   88,  813,  797,   88,  790,  792,  794,  798,
    970        88,   88,  793,  795,  814,  796,  703,  703,  703,  703,
    971       703,  703,  811,   88,   88,   88,   88,  812,  816,  819,
    972       821,   88,   88,  815,  822,  823,   88,  818,  820,   88,
    973        88,  817,  825,  824,   88,   88,   88,  826,   88,  760,
    974        88,   88,   88,   88,   88,  827,  847,   88,   88,   88,
    975       849,   88,  850,  852,   88,   88,   88,  853,  828,  829,
    976 
    977       846,  830,  845,   88,   88,   88,  848,  844,  855,  851,
    978        88,   88,  857,  856,   88,   88,   88,  854,   88,   88,
    979       858,  871,  859,  870,   88,   88,   88,   88,   88,  875,
    980       860,  877,   88,  872,   88,  878,  869,   88,   88,   88,
    981        88,   88,   88,  873,  876,  885,  879,   88,  881,  874,
    982       880,  884,   88,   88,  892,  886,   88,  887,  888,  889,
    983        88,   88,   88,  890,  891,   88,   88,   88,  894,   88,
    984       896,   88,  897,   88,   88,   88,  895,  893,   88,   88,
    985        88,   88,   88,   88,  901,   88,   88,  908,  908,  900,
    986       868,  902,  908,  898,  899,  907,  867,  908,  905,  865,
    987 
    988       908,  903,  904,  864,  906,   70,   70,   70,   70,   70,
    989        70,   70,   70,   70,   70,   70,   70,   70,   76,   76,
     818       88,  159,  165,  112,  209,   88,   88,   88,  197,   88,
     819       88,  109,  196,   88,  110,  104,  253,  113,  113,  113,
     820
     821      113,  113,  113,   88,  170,  178,  171,  199,  195,   88,
     822      210,  181,  166,  233,  107,  172,  167,  182,  114,  179,
     823      254,  168,   88,  261,  115,  169,  180,  173,   88,  144,
     824      116,   88,  251,  326,  145,  174,  107,  175,  252,  234,
     825      176,  144,  117,  266,  177,  267,  145,  262,  183,   88,
     826      115,  126,   88,  184,  252,  127,  128,   88,  129,  193,
     827      130,  131,  259,  132,  252,  133,   88,  283,  260,  186,
     828      187,  260,  251,   88,  134,  135,  136,   88,  190,  188,
     829      252,  266,  189,  267,  274,   88,  191,  268,  146,  259,
     830      337,  203,  204,  192,  260,  137,  203,  260,  138,  266,
     831
     832      904,  267,  194,  200,   82,   83,   83,   83,  200,   88,
     833      275,  201,  205,  205,  205,  205,  205,  205,   81,   82,
     834       83,   83,   83,   81,   88,  139,  140,  212,  213,  266,
     835      904,  267,  212,  285,  214,  258,  266,   88,  267,  214,
     836       83,   82,   83,   83,   83,   83,  303,   88,  215,  215,
     837      215,  215,   83,   82,   84,   84,   84,   83,  904,  214,
     838      244,  244,  244,  244,  244,  244,  245,  245,  245,  245,
     839      269,  266,  266,  267,  267,  216,  268,   88,  214,  266,
     840      270,  267,   88,  214,  214,   88,   88,  214,  214,  266,
     841      266,  267,  267,  286,  904,  214,   88,  317,  214,  246,
     842
     843      214,  217,  214,  284,  218,  220,   88,   88,  288,  221,
     844      222,  281,   88,   88,  223,  224,   88,  225,  282,  226,
     845       88,  327,  904,  301,  287,  289,   88,   88,  227,  228,
     846      229,  104,  306,  106,  106,  106,  106,  106,  106,  311,
     847       88,   88,  302,   88,   88,  307,   88,  304,  305,  230,
     848      107,  248,  231,  248,  309,   88,  249,  249,  249,  249,
     849      249,  249,  310,  308,  313,   88,  247,  312,   88,   88,
     850      314,   88,  107,   88,   88,   88,   88,  316,   88,   88,
     851      232,  236,  236,  236,  236,  236,  236,  319,  315,  250,
     852      318,  320,  325,  323,   88,  321,  322,  237,  238,  239,
     853
     854      324,  240,  239,  328,   88,  329,   88,   88,  144,  365,
     855       88,  366,   88,   88,  241,  330,  331,  333,  335,  239,
     856      238,  239,   88,  341,  240,  332,  239,  290,  291,  292,
     857      338,  293,  294,  336,  334,  295,   88,  296,   88,  351,
     858       88,  339,  297,  298,  299,   88,  300,   88,  385,  212,
     859      213,  343,   88,  347,  212,  342,  203,  204,  345,  344,
     860      346,  203,  365,  340,  366,  352,  395,  348,  200,   82,
     861       83,   83,   83,  200,  385,   88,  201,  205,  205,  205,
     862      205,  205,  205,  203,  204,  365,  904,  366,  203,  349,
     863      204,  365,  395,  366,  349,  414,  350,  357,  357,  357,
     864
     865      357,  365,  366,  366,  205,  205,  205,  205,  205,  205,
     866      205,  205,  205,  205,  205,  205,  365,  366,  366,  367,
     867      365,  382,  366,  365,  368,  366,  365,  374,  366,  365,
     868      358,  366,  365,   88,  366,  374,  374,  375,  266,  375,
     869      267,   88,  376,  376,  376,  376,  376,  376,  397,  378,
     870      374,  378,   88,  266,  378,  267,  420,  411,  374,  380,
     871      380,  380,  380,  380,  380,  104,  550,  245,  245,  245,
     872      245,  378,   88,  378,  398,  377,   88,  413,  378,  106,
     873      106,  106,  106,  106,  106,  249,  249,  249,  249,  249,
     874      249,   88,  381,   88,  409,   88,  107,  248,   88,  248,
     875
     876      246,   88,  249,  249,  249,  249,  249,  249,  408,  410,
     877      412,   88,  258,  423,   88,   88,  415,   88,  107,  383,
     878      383,  383,  383,  383,  383,  388,  427,  422,  106,  106,
     879      106,  106,  106,  106,  416,  237,   88,  239,  461,  240,
     880      239,  113,  113,  113,  113,  113,  113,   88,  390,  428,
     881      391,   88,  384,   88,  392,   88,   88,  239,  426,  239,
     882      393,  258,  240,   88,  239,  421,   88,  424,  425,   88,
     883       88,  417,  394,   88,  263,  432,  391,  418,  419,   88,
     884      392,  430,  429,   88,  431,   88,   88,   88,  433,  435,
     885      434,  436,  439,   88,   88,   88,   88,   88,  440,   88,
     886
     887      441,   88,  444,   88,  443,  442,  437,  438,  446,   88,
     888       88,   88,   88,  445,  448,  449,  447,  450,   88,   88,
     889       88,   88,  452,   88,  457,   88,   88,   88,   88,  453,
     890      455,  454,   88,   88,  451,  456,   88,   88,  459,   88,
     891       88,  464,  458,   88,  144,  463,   88,  462,  460,   88,
     892      469,   88,  470,   88,   88,  465,  474,   88,  468,  466,
     893      502,  467,  472,  204,  471,  473,  349,  204,  475,  202,
     894      503,  349,  476,  350,  214,  214,  214,  214,  357,  357,
     895      357,  357,  365,  365,  366,  366,  502,   88,   88,  376,
     896      376,  376,  376,  376,  376,  375,  502,  375,  525,  510,
     897
     898      376,  376,  376,  376,  376,  376,  504,  486,  497,  497,
     899      497,  497,  497,  497,  236,  236,  236,  236,  236,  236,
     900       88,   88,  502,  511,  237,   88,  239,   88,  240,  239,
     901      245,  245,  245,  245,  106,  106,  505,  526,  530,  528,
     902      527,  498,  506,  506,   88,   88,  239,  379,  239,   88,
     903       88,  240,   88,  239,  380,  380,  380,  380,  380,  380,
     904      388,  505,  534,  382,   88,  537,  532,  536,  506,  506,
     905      237,  238,  239,  529,  240,  239,  383,  383,  383,  383,
     906      383,  383,   88,  390,   88,  391,  904,  381,  545,  392,
     907      904,  904,  239,  238,  239,  393,  507,  240,  507,  239,
     908
     909      535,  508,  508,  508,  508,  508,  508,  394,   88,  384,
     910       88,  391,   88,   88,  390,  392,  391,  531,   88,  533,
     911      392,   88,   88,   88,   88,   88,  512,  542,  538,  539,
     912       88,   88,  547,   88,  509,  540,  541,   88,  394,   88,
     913      543,   88,  391,  548,  546,  549,  392,  544,   88,  551,
     914       88,   88,  552,   88,  554,  553,  556,   88,   88,   88,
     915      558,   88,  555,  557,   88,   88,   88,   88,  559,   88,
     916       88,   88,   88,   88,  562,  566,   88,  560,   88,  564,
     917      561,  570,   88,  563,  567,  565,   88,   88,   88,   88,
     918       88,  571,  568,  569,  578,  574,  572,  575,  573,  577,
     919
     920      576,   88,   88,   88,   88,   88,   88,  204,  579,   88,
     921      582,   88,  581,  589,  580,  587,  585,  502,  611,   88,
     922      583,  584,  588,   88,  631,  586,  214,  214,  214,  214,
     923      497,  497,  497,  497,  497,  497,  380,  380,  380,  380,
     924      380,  380,   88,  502,  611,   88,  237,   88,  239,   88,
     925      240,  239,  383,  383,  383,  383,  383,  383,   88,  630,
     926      632,  502,  634,  498,   88,   88,  502,  633,  239,  499,
     927      239,  503,  607,  240,  607,  239,  610,  608,  608,  608,
     928      608,  608,  608,   88,  642,  500,  635,  502,  637,   88,
     929       88,   88,  502,  508,  508,  508,  508,  508,  508,  507,
     930
     931       88,  507,  636,  639,  508,  508,  508,  508,  508,  508,
     932      609,  612,  612,  612,  612,  612,  612,   88,   88,   88,
     933       88,   88,   88,   88,  904,   88,   88,  613,  638,  614,
     934      644,  615,  614,  646,  641,   88,  647,   88,  640,   88,
     935      645,  643,   88,  651,  616,   88,  649,  650,  652,  614,
     936      653,  614,  654,   88,  615,   88,  614,   88,   88,  656,
     937       88,   88,  655,   88,   88,   88,   88,   88,   88,  659,
     938      657,   88,  658,  660,   88,  662,  665,  666,  661,   88,
     939      663,  664,   88,  667,   88,   88,   88,   88,   88,  668,
     940       88,  676,  669,  671,  672,  673,  677,   88,   88,  670,
     941
     942       88,   88,  675,   88,   88,  904,   88,  777,  674,  712,
     943      678,   88,  701,  701,  680,  679,  497,  497,  497,  497,
     944      497,  497,  713,  717,  716,  681,  608,  608,  608,  608,
     945      608,  608,  607,  701,  607,  701,   88,  608,  608,  608,
     946      608,  608,  608,  612,  612,  612,  612,  612,  612,  606,
     947      699,  699,  699,  699,  699,  699,  701,  702,   88,  702,
     948       88,   88,  702,   88,   88,  714,  613,   88,  614,  715,
     949      615,  614,  720,  731,  719,   88,  616,   88,  722,  702,
     950      721,  702,   88,  700,  718,   88,  702,   88,  614,   88,
     951      614,   88,   88,  615,   88,  614,   88,  725,  723,  724,
     952
     953       88,   88,   88,  729,   88,   88,  727,  732,   88,  726,
     954       88,  730,   88,  728,  734,   88,  733,  737,   88,   88,
     955      735,   88,   88,  879,  740,   88,  736,   88,   88,   88,
     956      744,   88,  745,  738,  739,   88,  746,  748,  741,  743,
     957       88,  747,   88,   88,  749,  764,  742,  699,  699,  699,
     958      699,  699,  699,  612,  612,  612,  612,  612,  612,   88,
     959       88,  763,  768,  613,   88,  614,  766,  615,  614,  765,
     960       88,   88,  783,   88,  769,  767,  770,   88,  771,   88,
     961      700,   88,   88,  772,  780,  614,  703,  614,  774,   88,
     962      615,   88,  614,   88,  773,   88,  775,   88,  778,   88,
     963
     964      779,   88,  781,  776,   88,   88,   88,  784,   88,   88,
     965       88,  791,   88,   88,  782,  787,   88,  785,   88,  904,
     966       88,  793,   88,  809,   88,  794,  786,  788,  790,   88,
     967       88,   88,  789,  792,  699,  699,  699,  699,  699,  699,
     968      807,  808,   88,   88,  810,  812,  815,  813,   88,  817,
     969       88,   88,  811,  818,  819,   88,   88,  814,   88,  821,
     970       88,  816,  820,  822,   88,   88,   88,  756,   88,   88,
     971      848,   88,   88,  823,   88,  843,   88,   88,   88,  845,
     972       88,  846,   88,   88,  904,  849,   88,  824,  825,  826,
     973      841,   88,  842,  844,  851,  840,   88,   88,  847,   88,
     974
     975      852,   88,  854,   88,   88,  850,   88,   88,  853,   88,
     976      867,   88,  855,  866,   88,   88,   88,  871,  868,  856,
     977       88,   88,   88,  873,  874,  865,  904,   88,  876,  869,
     978       88,  875,  872,   88,   88,  870,  877,  882,  881,  880,
     979       88,   88,   88,   88,   88,  885,  884,  886,   88,   88,
     980      883,  887,   88,   88,   88,  890,   88,  892,   88,   88,
     981       88,  893,   88,  888,  889,   88,  891,   88,   88,  897,
     982       88,   88,   88,  904,  878,  894,   88,  896,  898,   88,
     983      895,   88,  903,   88,   88,  904,  901,  904,  864,  899,
     984      904,  900,  863,  902,   70,   70,   70,   70,   70,   70,
     985
     986       70,   70,   70,   70,   70,   70,   70,   76,   76,   76,
    990987       76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
    991        76,   79,   79,   79,   79,   79,   79,   79,   79,   79,
    992        79,   79,   79,   79,   87,  908,  863,   87,  908,   87,
    993        87,   87,   87,   87,  141,  862,   88,   88,  141,  141,
    994       141,  141,  141,  141,  203,  203,  203,  203,  203,  203,
    995       203,  203,  203,  203,  203,  203,  203,  208,   88,  908,
    996       208,  843,  208,  208,  208,  208,  208,  212,  908,  212,
    997       212,  842,  212,  212,  212,  212,  212,  212,  840,  212,
    998 
    999       220,  908,  838,  220,  220,  220,  220,  220,  220,  220,
    1000       220,  908,  220,  243,  243,  243,  243,  243,  243,  243,
    1001       243,  243,  243,  243,  243,  243,  257,  257,  836,  257,
    1002       908,  834,  832,  257,  273,   88,   88,  273,   88,  273,
    1003       273,  273,  273,  273,  277,   88,  277,   88,   88,   88,
    1004       277,  279,   88,  279,   88,   88,   88,  279,  355,   88,
    1005       355,  908,  810,  808,  355,  357,  908,  357,  908,  805,
    1006       803,  357,  361,  801,  361,   88,   88,   88,  361,  363,
    1007        88,  363,   88,   88,   88,  363,  365,  766,  365,  763,
    1008       762,  760,  365,  372,  209,  372,  756,  755,  687,  372,
    1009 
    1010       374,   88,  374,   88,   88,   88,  374,  389,   88,  389,
    1011       391,  391,   88,  391,  391,  391,   88,  391,  257,  257,
    1012        88,  257,  273,   88,   88,  273,   88,  273,  273,  273,
    1013       273,  273,  401,   88,  401,   88,   88,   88,  401,  403,
    1014        88,  403,  714,  713,  711,  403,  405,  709,  405,  707,
    1015       614,  702,  405,  277,  701,  277,  407,  699,  407,  697,
    1016       695,  693,  407,  279,  691,  279,   87,  689,  687,   87,
    1017        88,   87,   87,   87,   87,   87,  203,  203,  203,  203,
    1018       203,  203,  203,  203,  203,  203,  203,  203,  203,  480,
    1019       480,  480,  480,  480,  480,  480,  480,  480,  480,  480,
    1020 
    1021       480,  480,  481,   88,  481,   88,   88,   88,  481,  483,
    1022        88,  483,   88,   88,   88,  483,  485,   88,  485,   88,
    1023        88,   88,  485,  355,  633,  355,  487,  631,  487,  629,
    1024       627,  625,  487,  357,  623,  357,  490,  515,  490,  621,
    1025       621,  610,  490,  361,  609,  361,  492,  607,  492,  495,
    1026       495,  605,  492,  363,  603,  363,  494,  601,  494,  599,
    1027       597,  595,  494,  365,   88,  365,  496,   88,  496,   88,
    1028        88,   88,  496,  372,   88,  372,  498,   88,  498,   88,
    1029       527,  525,  498,  374,  523,  374,  504,  521,  504,  519,
    1030       504,  517,  504,  389,  503,  389,  502,  389,  499,  389,
    1031 
    1032       391,  391,  497,  391,  391,  391,  368,  391,  516,  368,
    1033       516,  495,  493,  491,  516,  518,  488,  518,  486,  484,
    1034       482,  518,  520,   88,  520,   88,   88,  409,  520,  401,
    1035       408,  401,  522,  406,  522,  404,  402,  274,  522,  403,
    1036       269,  403,  524,  268,  524,  398,  398,  256,  524,  405,
    1037       388,  405,  526,  388,  526,  244,  381,  375,  526,  407,
    1038       373,  407,   87,  371,  367,   87,  366,   87,   87,   87,
    1039        87,   87,  480,  480,  480,  480,  480,  480,  480,  480,
    1040       480,  480,  480,  480,  480,  594,  364,  594,  362,  358,
    1041       356,  594,  481,  209,  481,  596,  205,  596,   88,  281,
    1042 
    1043       280,  596,  483,  278,  483,  598,  274,  598,  269,  272,
    1044       269,  598,  485,  267,  485,  600,  266,  600,  265,  244,
    1045       236,  600,  487,   86,  487,  602,   86,  602,   88,  209,
    1046       207,  602,  490,   86,  490,  604,  123,  604,  118,   88,
    1047       908,  604,  492,   71,  492,  494,   71,  494,  908,  908,
    1048       908,  494,  606,  908,  606,  908,  908,  908,  606,  496,
    1049       908,  496,  608,  908,  608,  908,  908,  908,  608,  498,
    1050       908,  498,  504,  908,  504,  908,  504,  908,  504,  391,
    1051       908,  391,  908,  908,  908,  391,  622,  908,  622,  908,
    1052       908,  908,  622,  516,  908,  516,  624,  908,  624,  908,
    1053 
    1054       908,  908,  624,  518,  908,  518,  626,  908,  626,  908,
    1055       908,  908,  626,  520,  908,  520,  628,  908,  628,  908,
    1056       908,  908,  628,  522,  908,  522,  630,  908,  630,  908,
    1057       908,  908,  630,  524,  908,  524,  632,  908,  632,  908,
    1058       908,  908,  632,  526,  908,  526,   87,  908,  908,   87,
    1059       908,   87,   87,   87,   87,   87,  686,  686,  686,  686,
    1060       686,  686,  686,  686,  686,  686,  686,  686,  686,  688,
    1061       908,  688,  908,  908,  908,  688,  594,  908,  594,  690,
    1062       908,  690,  908,  908,  908,  690,  596,  908,  596,  692,
    1063       908,  692,  908,  908,  908,  692,  598,  908,  598,  694,
    1064 
    1065       908,  694,  908,  908,  908,  694,  600,  908,  600,  696,
    1066       908,  696,  908,  908,  908,  696,  602,  908,  602,  698,
    1067       908,  698,  908,  908,  908,  698,  604,  908,  604,  700,
    1068       908,  700,  908,  908,  908,  700,  606,  908,  606,   87,
    1069       908,   87,  908,  908,  908,   87,  608,  908,  608,  504,
    1070       908,  504,  908,  908,  908,  504,  708,  908,  708,  908,
    1071       908,  908,  708,  622,  908,  622,  710,  908,  710,  908,
    1072       908,  908,  710,  624,  908,  624,  712,  908,  712,  908,
    1073       908,  908,  712,  626,  908,  626,  141,  908,  141,  908,
    1074       908,  908,  141,  628,  908,  628,  715,  908,  715,  630,
    1075 
    1076       908,  630,   87,  908,  908,   87,  908,   87,   87,   87,
    1077        87,   87,  632,  908,  632,  686,  686,  686,  686,  686,
    1078       686,  686,  686,  686,  686,  686,  686,  686,  754,  908,
    1079       754,  908,  908,  908,  754,  688,  908,  688,  208,  908,
    1080       208,  908,  908,  908,  208,  690,  908,  690,  757,  908,
    1081       757,  692,  908,  692,  208,  908,  908,  208,  908,  208,
    1082       208,  208,  208,  208,  694,  908,  694,  758,  908,  758,
    1083       696,  908,  696,  698,  908,  698,  759,  908,  759,  700,
    1084       908,  700,   87,  908,   87,  761,  908,  761,  908,  908,
    1085       908,  761,  708,  908,  708,  273,  908,  273,  908,  908,
    1086 
    1087       908,  273,  710,  908,  710,  764,  908,  764,  712,  908,
    1088       712,  141,  908,  141,  765,  908,  765,  908,  908,  908,
    1089       765,   87,  908,  908,   87,  908,   87,   87,   87,   87,
    1090        87,  799,  908,  799,  754,  908,  754,  208,  908,  208,
    1091       800,  908,  800,  908,  908,  908,  800,  802,  908,  802,
    1092       908,  908,  908,  802,  804,  908,  804,  908,  908,  908,
    1093       804,  806,  908,  806,  807,  908,  807,  908,  908,  908,
    1094       807,  809,  908,  809,  908,  908,  908,  809,  831,  908,
    1095       831,  908,  908,  908,  831,  833,  908,  833,  908,  908,
    1096       908,  833,  835,  908,  835,  908,  908,  908,  835,  837,
    1097 
    1098       908,  837,  908,  908,  908,  837,  839,  908,  839,  908,
    1099       908,  908,  839,  841,  908,  841,  908,  908,  908,  841,
    1100       632,  908,  632,  908,  908,  908,  632,  861,  908,  861,
    1101       908,  908,  908,  861,  694,  908,  694,  908,  908,  908,
    1102       694,  698,  908,  698,  908,  908,  908,  698,   87,  908,
    1103        87,  908,  908,  908,   87,  866,  908,  866,  908,  908,
    1104       908,  866,  141,  908,  141,  908,  908,  908,  141,  208,
    1105       908,  208,  908,  908,  908,  208,   11,  908,  908,  908,
    1106       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1107       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1108 
    1109       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1110       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1111       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1112       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1113       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1114       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1115       908,  908
     988       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
     989       79,   79,   79,   87,  904,  861,   87,  904,   87,   87,
     990       87,   87,   87,  141,  860,  904,  859,  141,  141,  141,
     991      141,  141,  141,  202,  202,  202,  202,  202,  202,  202,
     992      202,  202,  202,  202,  202,  202,  207,  904,  858,  207,
     993       88,  207,  207,  207,  207,  207,  211,   88,  211,  211,
     994       88,  211,  211,  211,  211,  211,  211,  904,  211,  219,
     995      839,  904,  219,  219,  219,  219,  219,  219,  219,  219,
     996
     997      838,  219,  242,  242,  242,  242,  242,  242,  242,  242,
     998      242,  242,  242,  242,  242,  256,  256,  836,  256,  904,
     999      834,  904,  256,  272,  832,  904,  272,  830,  272,  272,
     1000      272,  272,  272,  276,  828,  276,   88,   88,   88,  276,
     1001      278,   88,  278,   88,   88,   88,  278,  353,   88,  353,
     1002       88,   88,   88,  353,  355,   88,  355,  904,  806,  804,
     1003      355,  359,  904,  359,  904,  801,  799,  359,  361,  797,
     1004      361,   88,   88,   88,  361,  363,   88,  363,   88,   88,
     1005       88,  363,  370,  762,  370,  759,  758,  756,  370,  372,
     1006      208,  372,  752,  751,  683,  372,  387,   88,  387,  389,
     1007
     1008      389,   88,  389,  389,  389,   88,  389,  256,  256,   88,
     1009      256,  272,   88,   88,  272,   88,  272,  272,  272,  272,
     1010      272,  399,   88,  399,   88,   88,   88,  399,  401,   88,
     1011      401,   88,   88,   88,  401,  403,   88,  403,  710,  709,
     1012      707,  403,  276,  705,  276,  405,  703,  405,  610,  698,
     1013      697,  405,  278,  695,  278,   87,  693,  691,   87,  689,
     1014       87,   87,   87,   87,   87,  202,  202,  202,  202,  202,
     1015      202,  202,  202,  202,  202,  202,  202,  202,  477,  477,
     1016      477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
     1017      477,  478,  687,  478,  685,  683,   88,  478,  480,   88,
     1018
     1019      480,   88,   88,   88,  480,  482,   88,  482,   88,   88,
     1020       88,  482,  353,   88,  353,  484,   88,  484,   88,  629,
     1021      627,  484,  355,  625,  355,  487,  623,  487,  621,  619,
     1022      512,  487,  359,  617,  359,  489,  617,  489,  606,  605,
     1023      603,  489,  361,  492,  361,  491,  492,  491,  601,  599,
     1024      597,  491,  363,  595,  363,  493,  593,  493,  591,   88,
     1025       88,  493,  370,   88,  370,  495,   88,  495,   88,   88,
     1026       88,  495,  372,   88,  372,  501,  524,  501,  522,  501,
     1027      520,  501,  387,  518,  387,  516,  387,  514,  387,  389,
     1028      389,  500,  389,  389,  389,  499,  389,  513,  496,  513,
     1029
     1030      494,  366,  366,  513,  515,  492,  515,  490,  488,  485,
     1031      515,  517,  483,  517,  481,  479,   88,  517,  399,   88,
     1032      399,  519,   88,  519,  407,  406,  404,  519,  401,  402,
     1033      401,  521,  400,  521,  273,  268,  267,  521,  403,  396,
     1034      403,  523,  396,  523,  255,  386,  386,  523,  405,  243,
     1035      405,   87,  379,  373,   87,  371,   87,   87,   87,   87,
     1036       87,  477,  477,  477,  477,  477,  477,  477,  477,  477,
     1037      477,  477,  477,  477,  590,  369,  590,  365,  364,  362,
     1038      590,  478,  360,  478,  592,  356,  592,  354,  208,  204,
     1039      592,  480,   88,  480,  594,  280,  594,  279,  277,  273,
     1040
     1041      594,  482,  268,  482,  596,  271,  596,  268,  266,  265,
     1042      596,  484,  264,  484,  598,  243,  598,  235,   86,   86,
     1043      598,  487,   88,  487,  600,  208,  600,  206,   86,  123,
     1044      600,  489,  118,  489,  491,   88,  491,  904,   71,   71,
     1045      491,  602,  904,  602,  904,  904,  904,  602,  493,  904,
     1046      493,  604,  904,  604,  904,  904,  904,  604,  495,  904,
     1047      495,  501,  904,  501,  904,  501,  904,  501,  389,  904,
     1048      389,  904,  904,  904,  389,  618,  904,  618,  904,  904,
     1049      904,  618,  513,  904,  513,  620,  904,  620,  904,  904,
     1050      904,  620,  515,  904,  515,  622,  904,  622,  904,  904,
     1051
     1052      904,  622,  517,  904,  517,  624,  904,  624,  904,  904,
     1053      904,  624,  519,  904,  519,  626,  904,  626,  904,  904,
     1054      904,  626,  521,  904,  521,  628,  904,  628,  904,  904,
     1055      904,  628,  523,  904,  523,   87,  904,  904,   87,  904,
     1056       87,   87,   87,   87,   87,  682,  682,  682,  682,  682,
     1057      682,  682,  682,  682,  682,  682,  682,  682,  684,  904,
     1058      684,  904,  904,  904,  684,  590,  904,  590,  686,  904,
     1059      686,  904,  904,  904,  686,  592,  904,  592,  688,  904,
     1060      688,  904,  904,  904,  688,  594,  904,  594,  690,  904,
     1061      690,  904,  904,  904,  690,  596,  904,  596,  692,  904,
     1062
     1063      692,  904,  904,  904,  692,  598,  904,  598,  694,  904,
     1064      694,  904,  904,  904,  694,  600,  904,  600,  696,  904,
     1065      696,  904,  904,  904,  696,  602,  904,  602,   87,  904,
     1066       87,  904,  904,  904,   87,  604,  904,  604,  501,  904,
     1067      501,  904,  904,  904,  501,  704,  904,  704,  904,  904,
     1068      904,  704,  618,  904,  618,  706,  904,  706,  904,  904,
     1069      904,  706,  620,  904,  620,  708,  904,  708,  904,  904,
     1070      904,  708,  622,  904,  622,  141,  904,  141,  904,  904,
     1071      904,  141,  624,  904,  624,  711,  904,  711,  626,  904,
     1072      626,   87,  904,  904,   87,  904,   87,   87,   87,   87,
     1073
     1074       87,  628,  904,  628,  682,  682,  682,  682,  682,  682,
     1075      682,  682,  682,  682,  682,  682,  682,  750,  904,  750,
     1076      904,  904,  904,  750,  684,  904,  684,  207,  904,  207,
     1077      904,  904,  904,  207,  686,  904,  686,  753,  904,  753,
     1078      688,  904,  688,  207,  904,  904,  207,  904,  207,  207,
     1079      207,  207,  207,  690,  904,  690,  754,  904,  754,  692,
     1080      904,  692,  694,  904,  694,  755,  904,  755,  696,  904,
     1081      696,   87,  904,   87,  757,  904,  757,  904,  904,  904,
     1082      757,  704,  904,  704,  272,  904,  272,  904,  904,  904,
     1083      272,  706,  904,  706,  760,  904,  760,  708,  904,  708,
     1084
     1085      141,  904,  141,  761,  904,  761,  904,  904,  904,  761,
     1086       87,  904,  904,   87,  904,   87,   87,   87,   87,   87,
     1087      795,  904,  795,  750,  904,  750,  207,  904,  207,  796,
     1088      904,  796,  904,  904,  904,  796,  798,  904,  798,  904,
     1089      904,  904,  798,  800,  904,  800,  904,  904,  904,  800,
     1090      802,  904,  802,  803,  904,  803,  904,  904,  904,  803,
     1091      805,  904,  805,  904,  904,  904,  805,  827,  904,  827,
     1092      904,  904,  904,  827,  829,  904,  829,  904,  904,  904,
     1093      829,  831,  904,  831,  904,  904,  904,  831,  833,  904,
     1094      833,  904,  904,  904,  833,  835,  904,  835,  904,  904,
     1095
     1096      904,  835,  837,  904,  837,  904,  904,  904,  837,  628,
     1097      904,  628,  904,  904,  904,  628,  857,  904,  857,  904,
     1098      904,  904,  857,  690,  904,  690,  904,  904,  904,  690,
     1099      694,  904,  694,  904,  904,  904,  694,   87,  904,   87,
     1100      904,  904,  904,   87,  862,  904,  862,  904,  904,  904,
     1101      862,  141,  904,  141,  904,  904,  904,  141,  207,  904,
     1102      207,  904,  904,  904,  207,   11,  904,  904,  904,  904,
     1103      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1104      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1105      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1106
     1107      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1108      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1109      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1110      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1111      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1112      904
    11161113    } ;
    11171114
    1118 static yyconst flex_int16_t yy_chk[2963] =
     1115static yyconst flex_int16_t yy_chk[2952] =
    11191116    {   0,
    11201117        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11371134        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11381135        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1139         8,    9,   10,   37,   37,   20,   39,    9,   10,  907,
     1136        8,    9,   10,   37,   37,   20,   39,    9,   10,  903,
    11401137        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11411138
     
    11451142        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
    11461143       30,   30,   30,   30,   35,   57,   35,   35,   44,  127,
    1147        44,  127,  110,  116,   57,   30,   65,  547,   47,   30,
     1144       44,  127,  110,  116,   57,   30,   65,  544,   47,   30,
    11481145       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    11491146       45,   30,   40,   45,   45,   40,   49,   30,   45,   63,
    1150        62,   45,   49,   30,   74,  906,  547,   53,   63,   51,
     1147       62,   45,   49,   30,   74,  902,  544,   53,   63,   51,
    11511148       61,   30,   62,   55,   30,   31,  109,   31,   31,   31,
    11521149
    11531150       31,   31,   31,   50,   51,   53,   51,   65,   61,   54,
    11541151       74,   55,   50,   88,   31,   51,   50,   55,   31,   54,
    1155       109,   50,   52,  143,   31,   50,   54,   52,  112,  154,
    1156        31,   56,  111,  898,  152,   52,   31,   52,  154,   88,
    1157        52,  108,   31,  128,   52,  128,  112,  108,   56,  143,
    1158        31,   38,  152,   56,  112,   38,   38,   58,   38,   60,
    1159        38,   38,  111,   38,   60,   38,   59,  111,  115,   58,
    1160        58,  117,  158,  108,   38,   38,   38,   60,   59,   58,
    1161       131,  130,   58,  130,  158,  114,   59,  132,   59,  117,
    1162       111,  114,  115,   59,  131,   38,  131,  117,   38,  132,
    1163 
    1164       133,  132,  133,   60,  173,  153,   60,   68,   68,   68,
    1165        68,   68,   68,   69,   69,   68,  165,  114,   69,  173,
    1166        60,  134,  134,  153,  134,   38,   38,   81,   81,   81,
    1167        81,   81,   81,  165,   69,   69,   69,   69,   69,   69,
    1168        78,   78,  135,  155,  135,   78,  146,   78,  136,  136,
    1169       136,  146,   78,   83,   83,   83,   83,   83,   83,  155,
    1170       897,   78,   78,   78,   78,   84,   84,   84,   84,   84,
    1171        84,  156,   78,  104,  104,  104,  104,  104,  104,  105,
    1172       105,  105,  105,  138,  140,  138,  140,  151,   78,  156,
    1173       146,   78,  306,  894,  157,  162,   78,   78,  161,  306,
    1174 
    1175        78,   78,  151,  160,  162,  176,  168,  105,   78,  151,
    1176       169,   78,  105,   78,   78,   78,  157,   78,   86,  160,
    1177       161,  164,   86,   86,  166,  176,  164,   86,   86,  168,
    1178        86,  163,   86,  167,  166,  105,  170,  169,  175,  164,
    1179       893,   86,   86,   86,  106,  172,  106,  106,  106,  106,
    1180       106,  106,  163,  163,  167,  171,  175,  170,  174,  177,
    1181       171,  178,   86,  106,  107,   86,  107,  172,  183,  107,
    1182       107,  107,  107,  107,  107,  174,  182,  183,  171,  106,
    1183       184,  182,  186,  178,  181,  106,  177,  222,  891,  222,
    1184       192,  180,  187,   86,  100,  100,  100,  100,  100,  100,
    1185 
    1186       186,  181,  107,  187,  188,  189,  180,  184,  185,  188,
    1187       100,  100,  100,  180,  100,  100,  190,  192,  189,  185,
    1188       187,  194,  732,  198,  188,  195,  191,  100,  193,  185,
    1189       185,  191,  100,  100,  100,  159,  190,  100,  195,  100,
    1190       159,  159,  159,  198,  159,  159,  195,  193,  159,  196,
    1191       159,  732,  209,  191,  197,  159,  159,  159,  223,  159,
    1192       223,  224,  196,  224,  196,  194,  286,  197,  194,  201,
    1193       201,  201,  201,  201,  201,  202,  202,  201,  209,  225,
    1194       202,  204,  204,  286,  213,  213,  204,  206,  206,  213,
    1195       890,  883,  206,  225,  206,  225,  202,  202,  202,  202,
    1196 
    1197       202,  202,  204,  204,  204,  204,  204,  204,  206,  206,
    1198       206,  206,  206,  206,  216,  216,  216,  216,  226,  227,
    1199       247,  227,  228,  228,  229,  228,  229,  230,  230,  230,
    1200       226,  232,  226,  232,  233,  240,  233,  238,  238,  241,
    1201       270,  241,  270,  239,  241,  239,  282,  216,  239,  239,
    1202       239,  239,  239,  239,  271,  247,  271,  882,  240,  282,
    1203       238,  241,  246,  241,  246,  246,  246,  246,  241,  245,
    1204       245,  245,  245,  245,  245,  248,  248,  248,  248,  248,
    1205       248,  239,  249,  249,  249,  249,  249,  249,  283,  284,
    1206       288,  287,  248,  285,  289,  252,  287,  246,  295,  289,
    1207 
    1208       297,  326,  245,  260,  274,  297,  283,  284,  248,  285,
    1209       288,  881,  326,  295,  248,  250,  250,  250,  250,  250,
    1210       250,  252,  257,  259,  259,  259,  259,  259,  259,  260,
    1211       274,  250,  251,  250,  251,  250,  250,  251,  251,  251,
    1212       251,  251,  251,  298,  292,  257,  880,  257,  250,  294,
    1213       290,  257,  298,  250,  293,  250,  259,  257,  250,  291,
    1214       250,  264,  264,  264,  264,  264,  264,  292,  296,  257,
    1215       290,  300,  293,  257,  291,  294,  299,  257,  301,  303,
    1216       291,  291,  304,  305,  296,  296,  307,  304,  309,  299,
    1217       308,  879,  305,  313,  264,  310,  301,  303,  300,  311,
    1218 
    1219       310,  312,  314,  318,  311,  316,  307,  312,  308,  309,
    1220       309,  314,  313,  315,  317,  319,  322,  320,  318,  315,
    1221       319,  316,  320,  317,  321,  323,  324,  327,  328,  321,
    1222       329,  328,  330,  331,  332,  322,  333,  334,  335,  324,
    1223       336,  337,  327,  323,  338,  330,  321,  335,  340,  329,
    1224       339,  342,  344,  345,  334,  331,  333,  332,  343,  346,
    1225       349,  340,  336,  350,  337,  347,  338,  343,  339,  348,
    1226       342,  345,  346,  347,  348,  349,  875,  351,  351,  352,
    1227       413,  350,  351,  410,  351,  352,  359,  359,  359,  359,
    1228       360,  360,  360,  360,  410,  369,  344,  369,  370,  413,
    1229 
    1230       370,  377,  377,  377,  377,  377,  377,  379,  389,  379,
    1231       417,  394,  379,  379,  379,  379,  379,  379,  389,  359,
    1232       378,  378,  378,  378,  378,  378,  381,  381,  381,  381,
    1233       381,  381,  417,  411,  389,  394,  378,  412,  378,  415,
    1234       378,  378,  384,  384,  384,  384,  384,  384,  392,  411,
    1235       415,  390,  412,  378,  392,  396,  578,  421,  378,  381,
    1236       378,  390,  420,  378,  578,  378,  382,  382,  382,  382,
    1237       382,  382,  391,  396,  424,  384,  414,  390,  420,  421,
    1238       392,  396,  382,  382,  382,  414,  382,  382,  385,  385,
    1239       385,  385,  385,  385,  428,  391,  424,  391,  871,  382,
    1240 
    1241       428,  391,  868,  395,  382,  382,  382,  391,  393,  382,
    1242       393,  382,  419,  393,  393,  393,  393,  393,  393,  391,
    1243       416,  385,  418,  391,  422,  419,  395,  391,  395,  416,
    1244       425,  418,  395,  430,  426,  423,  429,  422,  395,  426,
    1245       427,  431,  434,  439,  430,  438,  393,  436,  425,  432,
    1246       395,  423,  423,  441,  395,  427,  434,  429,  395,  436,
    1247       431,  440,  427,  442,  432,  439,  438,  443,  444,  442,
    1248       446,  448,  449,  450,  440,  451,  441,  444,  452,  453,
    1249       454,  456,  443,  458,  461,  446,  459,  460,  450,  454,
    1250       462,  448,  463,  452,  449,  464,  460,  451,  456,  453,
    1251 
    1252       465,  466,  467,  470,  468,  461,  458,  469,  459,  465,
    1253       462,  468,  463,  471,  469,  467,  472,  464,  473,  466,
    1254       474,  475,  477,  480,  478,  472,  473,  479,  470,  480,
    1255       479,  507,  475,  478,  508,  471,  473,  474,  489,  489,
    1256       489,  489,  528,  531,  477,  500,  500,  500,  500,  500,
    1257       500,  502,  502,  502,  502,  502,  502,  507,  531,  528,
    1258       508,  500,  529,  500,  533,  500,  500,  503,  503,  503,
    1259       503,  503,  503,  867,  866,  529,  504,  533,  500,  532,
    1260       542,  506,  534,  500,  502,  500,  504,  505,  500,  505,
    1261       500,  506,  505,  505,  505,  505,  505,  505,  536,  532,
    1262 
    1263       503,  542,  504,  536,  534,  535,  537,  506,  510,  510,
    1264       510,  510,  510,  510,  512,  865,  512,  537,  535,  512,
    1265       512,  512,  512,  512,  512,  505,  511,  511,  511,  511,
    1266       511,  511,  538,  539,  540,  538,  541,  546,  544,  543,
    1267       545,  549,  511,  544,  511,  548,  511,  511,  543,  540,
    1268       546,  545,  551,  539,  548,  541,  550,  552,  555,  511,
    1269       557,  551,  552,  549,  511,  558,  511,  555,  554,  511,
    1270       559,  511,  560,  550,  554,  562,  563,  557,  564,  565,
    1271       558,  560,  567,  568,  562,  559,  570,  571,  568,  574,
    1272       564,  575,  576,  563,  565,  570,  571,  567,  579,  580,
    1273 
    1274       581,  582,  589,  586,  575,  587,  580,  590,  579,  576,
    1275       583,  574,  586,  582,  592,  587,  583,  864,  863,  589,
    1276       590,  638,  581,  610,  610,  610,  610,  610,  610,  611,
    1277       611,  611,  611,  611,  611,  613,  592,  613,  638,  637,
    1278       613,  613,  613,  613,  613,  613,  616,  616,  616,  616,
    1279       616,  616,  637,  617,  617,  642,  610,  612,  612,  612,
    1280       612,  612,  612,  618,  634,  619,  862,  619,  639,  634,
    1281       619,  636,  642,  612,  635,  612,  617,  612,  612,  616,
    1282       636,  635,  634,  645,  646,  640,  618,  619,  641,  619,
    1283       612,  639,  640,  644,  619,  612,  641,  612,  643,  646,
    1284 
    1285       612,  643,  612,  647,  648,  645,  644,  649,  650,  651,
    1286       652,  650,  653,  654,  655,  657,  656,  660,  667,  658,
    1287       661,  648,  662,  655,  666,  647,  651,  653,  658,  649,
    1288       669,  662,  672,  654,  656,  684,  673,  657,  652,  680,
    1289       660,  672,  661,  673,  666,  667,  681,  669,  680,  683,
    1290       684,  716,  719,  722,  723,  861,  681,  723,  683,  703,
    1291       703,  703,  703,  703,  703,  707,  707,  707,  707,  707,
    1292       707,  717,  716,  722,  856,  703,  720,  703,  719,  703,
    1293       703,  717,  721,  720,  727,  724,  729,  721,  724,  725,
    1294       727,  730,  703,  728,  730,  729,  731,  703,  707,  703,
    1295 
    1296       733,  734,  703,  733,  703,  735,  728,  725,  736,  737,
    1297       734,  736,  738,  739,  740,  741,  742,  731,  748,  745,
    1298       738,  749,  737,  739,  750,  742,  752,  740,  773,  774,
    1299       753,  735,  771,  773,  752,  776,  741,  745,  748,  753,
    1300       772,  778,  745,  749,  774,  750,  760,  760,  760,  760,
    1301       760,  760,  771,  775,  777,  780,  779,  772,  776,  779,
    1302       781,  783,  785,  775,  783,  785,  786,  778,  780,  787,
    1303       789,  777,  787,  786,  788,  790,  792,  788,  796,  760,
    1304       811,  813,  814,  815,  816,  789,  815,  817,  781,  818,
    1305       817,  820,  818,  821,  822,  824,  855,  822,  790,  792,
    1306 
    1307       814,  796,  813,  827,  828,  825,  816,  811,  825,  820,
    1308       826,  829,  827,  826,  830,  845,  846,  824,  847,  821,
    1309       828,  847,  829,  846,  848,  849,  850,  851,  854,  850,
    1310       830,  854,  857,  848,  884,  857,  845,  858,  859,  860,
    1311       870,  853,  869,  849,  851,  870,  858,  873,  860,  849,
    1312       859,  869,  872,  874,  884,  872,  876,  873,  874,  876,
    1313       877,  878,  885,  877,  878,  886,  887,  888,  886,  889,
    1314       888,  892,  889,  895,  896,  899,  887,  885,  900,  901,
    1315       903,  902,  904,  852,  899,  905,  844,  843,  842,  896,
    1316       841,  900,  840,  892,  895,  905,  839,  838,  903,  837,
    1317 
    1318       836,  901,  902,  835,  904,  909,  909,  909,  909,  909,
    1319       909,  909,  909,  909,  909,  909,  909,  909,  910,  910,
    1320       910,  910,  910,  910,  910,  910,  910,  910,  910,  910,
    1321       910,  911,  911,  911,  911,  911,  911,  911,  911,  911,
    1322       911,  911,  911,  911,  912,  834,  833,  912,  832,  912,
    1323       912,  912,  912,  912,  913,  831,  823,  819,  913,  913,
    1324       913,  913,  913,  913,  914,  914,  914,  914,  914,  914,
    1325       914,  914,  914,  914,  914,  914,  914,  915,  812,  810,
    1326       915,  809,  915,  915,  915,  915,  915,  916,  808,  916,
    1327       916,  807,  916,  916,  916,  916,  916,  916,  806,  916,
    1328 
    1329       917,  805,  804,  917,  917,  917,  917,  917,  917,  917,
    1330       917,  803,  917,  918,  918,  918,  918,  918,  918,  918,
    1331       918,  918,  918,  918,  918,  918,  919,  919,  802,  919,
    1332       801,  800,  799,  919,  920,  798,  797,  920,  795,  920,
    1333       920,  920,  920,  920,  921,  794,  921,  793,  791,  784,
    1334       921,  922,  782,  922,  770,  769,  768,  922,  923,  767,
    1335       923,  766,  765,  764,  923,  924,  763,  924,  762,  759,
    1336       758,  924,  925,  757,  925,  751,  747,  746,  925,  926,
    1337       744,  926,  743,  726,  718,  926,  927,  715,  927,  710,
    1338       708,  704,  927,  928,  694,  928,  690,  688,  686,  928,
    1339 
    1340       929,  685,  929,  682,  679,  678,  929,  930,  677,  930,
    1341       931,  931,  676,  931,  931,  931,  675,  931,  932,  932,
    1342       674,  932,  933,  671,  670,  933,  668,  933,  933,  933,
    1343       933,  933,  934,  665,  934,  664,  663,  659,  934,  935,
    1344       632,  935,  628,  626,  624,  935,  936,  622,  936,  620,
    1345       614,  608,  936,  937,  606,  937,  938,  604,  938,  602,
    1346       600,  598,  938,  939,  596,  939,  940,  594,  593,  940,
    1347       591,  940,  940,  940,  940,  940,  941,  941,  941,  941,
    1348       941,  941,  941,  941,  941,  941,  941,  941,  941,  942,
    1349       942,  942,  942,  942,  942,  942,  942,  942,  942,  942,
    1350 
    1351       942,  942,  943,  588,  943,  585,  584,  577,  943,  944,
    1352       573,  944,  572,  569,  566,  944,  945,  561,  945,  556,
    1353       553,  530,  945,  946,  526,  946,  947,  524,  947,  522,
    1354       520,  518,  947,  948,  516,  948,  949,  515,  949,  514,
    1355       513,  501,  949,  950,  498,  950,  951,  496,  951,  495,
    1356       494,  492,  951,  952,  490,  952,  953,  487,  953,  485,
    1357       483,  481,  953,  954,  476,  954,  955,  457,  955,  455,
    1358       447,  445,  955,  956,  437,  956,  957,  435,  957,  433,
    1359       407,  405,  957,  958,  403,  958,  959,  401,  959,  400,
    1360       959,  399,  959,  960,  386,  960,  383,  960,  374,  960,
    1361 
    1362       961,  961,  372,  961,  961,  961,  371,  961,  962,  367,
    1363       962,  365,  363,  361,  962,  963,  357,  963,  355,  354,
    1364       353,  963,  964,  341,  964,  325,  302,  281,  964,  965,
    1365       279,  965,  966,  277,  966,  276,  275,  273,  966,  967,
    1366       272,  967,  968,  267,  968,  263,  262,  258,  968,  969,
    1367       255,  969,  970,  254,  970,  243,  242,  235,  970,  971,
    1368       234,  971,  972,  231,  221,  972,  219,  972,  972,  972,
    1369       972,  972,  973,  973,  973,  973,  973,  973,  973,  973,
    1370       973,  973,  973,  973,  973,  974,  218,  974,  217,  211,
    1371       210,  974,  975,  208,  975,  976,  203,  976,  179,  150,
    1372 
    1373       148,  976,  977,  147,  977,  978,  141,  978,  139,  137,
    1374       129,  978,  979,  126,  979,  980,  125,  980,  121,  102,
    1375        99,  980,  981,   96,  981,  982,   94,  982,   87,   73,
    1376        71,  982,  983,   67,  983,  984,   36,  984,   33,   18,
    1377        11,  984,  985,    4,  985,  986,    3,  986,    0,    0,
    1378         0,  986,  987,    0,  987,    0,    0,    0,  987,  988,
    1379         0,  988,  989,    0,  989,    0,    0,    0,  989,  990,
    1380         0,  990,  991,    0,  991,    0,  991,    0,  991,  992,
    1381         0,  992,    0,    0,    0,  992,  993,    0,  993,    0,
    1382         0,    0,  993,  994,    0,  994,  995,    0,  995,    0,
    1383 
    1384         0,    0,  995,  996,    0,  996,  997,    0,  997,    0,
    1385         0,    0,  997,  998,    0,  998,  999,    0,  999,    0,
    1386         0,    0,  999, 1000,    0, 1000, 1001,    0, 1001,    0,
    1387         0,    0, 1001, 1002,    0, 1002, 1003,    0, 1003,    0,
    1388         0,    0, 1003, 1004,    0, 1004, 1005,    0,    0, 1005,
    1389         0, 1005, 1005, 1005, 1005, 1005, 1006, 1006, 1006, 1006,
    1390      1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1007,
    1391         0, 1007,    0,    0,    0, 1007, 1008,    0, 1008, 1009,
    1392         0, 1009,    0,    0,    0, 1009, 1010,    0, 1010, 1011,
    1393         0, 1011,    0,    0,    0, 1011, 1012,    0, 1012, 1013,
    1394 
    1395         0, 1013,    0,    0,    0, 1013, 1014,    0, 1014, 1015,
    1396         0, 1015,    0,    0,    0, 1015, 1016,    0, 1016, 1017,
    1397         0, 1017,    0,    0,    0, 1017, 1018,    0, 1018, 1019,
    1398         0, 1019,    0,    0,    0, 1019, 1020,    0, 1020, 1021,
    1399         0, 1021,    0,    0,    0, 1021, 1022,    0, 1022, 1023,
    1400         0, 1023,    0,    0,    0, 1023, 1024,    0, 1024,    0,
    1401         0,    0, 1024, 1025,    0, 1025, 1026,    0, 1026,    0,
    1402         0,    0, 1026, 1027,    0, 1027, 1028,    0, 1028,    0,
    1403         0,    0, 1028, 1029,    0, 1029, 1030,    0, 1030,    0,
    1404         0,    0, 1030, 1031,    0, 1031, 1032,    0, 1032, 1033,
    1405 
    1406         0, 1033, 1034,    0,    0, 1034,    0, 1034, 1034, 1034,
    1407      1034, 1034, 1035,    0, 1035, 1036, 1036, 1036, 1036, 1036,
    1408      1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037,    0,
    1409      1037,    0,    0,    0, 1037, 1038,    0, 1038, 1039,    0,
    1410      1039,    0,    0,    0, 1039, 1040,    0, 1040, 1041,    0,
    1411      1041, 1042,    0, 1042, 1043,    0,    0, 1043,    0, 1043,
    1412      1043, 1043, 1043, 1043, 1044,    0, 1044, 1045,    0, 1045,
    1413      1046,    0, 1046, 1047,    0, 1047, 1048,    0, 1048, 1049,
    1414         0, 1049, 1050,    0, 1050, 1051,    0, 1051,    0,    0,
    1415         0, 1051, 1052,    0, 1052, 1053,    0, 1053,    0,    0,
    1416 
    1417         0, 1053, 1054,    0, 1054, 1055,    0, 1055, 1056,    0,
    1418      1056, 1057,    0, 1057, 1058,    0, 1058,    0,    0,    0,
    1419      1058, 1059,    0,    0, 1059,    0, 1059, 1059, 1059, 1059,
    1420      1059, 1060,    0, 1060, 1061,    0, 1061, 1062,    0, 1062,
    1421      1063,    0, 1063,    0,    0,    0, 1063, 1064,    0, 1064,
    1422         0,    0,    0, 1064, 1065,    0, 1065,    0,    0,    0,
    1423      1065, 1066,    0, 1066, 1067,    0, 1067,    0,    0,    0,
    1424      1067, 1068,    0, 1068,    0,    0,    0, 1068, 1069,    0,
    1425      1069,    0,    0,    0, 1069, 1070,    0, 1070,    0,    0,
    1426         0, 1070, 1071,    0, 1071,    0,    0,    0, 1071, 1072,
    1427 
    1428         0, 1072,    0,    0,    0, 1072, 1073,    0, 1073,    0,
    1429         0,    0, 1073, 1074,    0, 1074,    0,    0,    0, 1074,
    1430      1075,    0, 1075,    0,    0,    0, 1075, 1076,    0, 1076,
    1431         0,    0,    0, 1076, 1077,    0, 1077,    0,    0,    0,
    1432      1077, 1078,    0, 1078,    0,    0,    0, 1078, 1079,    0,
    1433      1079,    0,    0,    0, 1079, 1080,    0, 1080,    0,    0,
    1434         0, 1080, 1081,    0, 1081,    0,    0,    0, 1081, 1082,
    1435         0, 1082,    0,    0,    0, 1082,  908,  908,  908,  908,
    1436       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1437       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1438 
    1439       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1440       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1441       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1442       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1443       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1444       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1445       908,  908
     1152      109,   50,   52,  115,   31,   50,   54,   52,  182,  146,
     1153       31,   56,  108,  182,  146,   52,   31,   52,  108,   88,
     1154       52,   60,   31,  128,   52,  128,   60,  115,   56,  152,
     1155       31,   38,  894,   56,  112,   38,   38,   58,   38,   60,
     1156       38,   38,  114,   38,  108,   38,   59,  152,  114,   58,
     1157       58,  117,  112,  146,   38,   38,   38,  189,   59,   58,
     1158      112,  130,   58,  130,  143,   60,   59,  132,   60,  117,
     1159      189,   69,   69,   59,  114,   38,   69,  117,   38,  132,
     1160
     1161      111,  132,   60,   68,   68,   68,   68,   68,   68,  893,
     1162      143,   68,   69,   69,   69,   69,   69,   69,   81,   81,
     1163       81,   81,   81,   81,  154,   38,   38,   78,   78,  133,
     1164      111,  133,   78,  154,   78,  111,  135,  162,  135,   78,
     1165       83,   83,   83,   83,   83,   83,  162,  890,   78,   78,
     1166       78,   78,   84,   84,   84,   84,   84,   84,  111,   78,
     1167      104,  104,  104,  104,  104,  104,  105,  105,  105,  105,
     1168      134,  134,  138,  134,  138,   78,  131,  155,   78,  136,
     1169      136,  136,  173,   78,   78,  153,  157,   78,   78,  140,
     1170      131,  140,  131,  155,  105,   78,  151,  173,   78,  105,
     1171
     1172       78,   78,   78,  153,   78,   86,  156,  160,  157,   86,
     1173       86,  151,  183,  158,   86,   86,  168,   86,  151,   86,
     1174      161,  183,  105,  160,  156,  158,  163,  164,   86,   86,
     1175       86,  106,  164,  106,  106,  106,  106,  106,  106,  168,
     1176      169,  167,  161,  170,  166,  164,  165,  163,  163,   86,
     1177      106,  107,   86,  107,  166,  172,  107,  107,  107,  107,
     1178      107,  107,  167,  165,  170,  171,  106,  169,  177,  175,
     1179      171,  176,  106,  174,  178,  181,  184,  172,  180,  889,
     1180       86,  100,  100,  100,  100,  100,  100,  175,  171,  107,
     1181      174,  176,  181,  180,  185,  177,  178,  100,  100,  100,
     1182
     1183      180,  100,  100,  184,  192,  185,  187,  186,  193,  221,
     1184      190,  221,  887,  188,  100,  185,  185,  187,  188,  100,
     1185      100,  100,  159,  192,  100,  186,  100,  159,  159,  159,
     1186      190,  159,  159,  188,  187,  159,  191,  159,  194,  208,
     1187      196,  191,  159,  159,  159,  195,  159,  197,  251,  212,
     1188      212,  194,  193,  196,  212,  193,  201,  201,  195,  194,
     1189      195,  201,  222,  191,  222,  208,  259,  197,  200,  200,
     1190      200,  200,  200,  200,  251,  287,  200,  201,  201,  201,
     1191      201,  201,  201,  203,  203,  223,  246,  223,  203,  205,
     1192      205,  226,  259,  226,  205,  287,  205,  215,  215,  215,
     1193
     1194      215,  228,  224,  228,  203,  203,  203,  203,  203,  203,
     1195      205,  205,  205,  205,  205,  205,  224,  225,  224,  227,
     1196      227,  246,  227,  229,  229,  229,  231,  239,  231,  225,
     1197      215,  225,  232,  291,  232,  237,  237,  238,  269,  238,
     1198      269,  284,  238,  238,  238,  238,  238,  238,  273,  240,
     1199      239,  240,  432,  270,  240,  270,  291,  284,  237,  244,
     1200      244,  244,  244,  244,  244,  245,  432,  245,  245,  245,
     1201      245,  240,  286,  240,  273,  238,  282,  286,  240,  247,
     1202      247,  247,  247,  247,  247,  248,  248,  248,  248,  248,
     1203      248,  283,  244,  285,  282,  281,  247,  250,  294,  250,
     1204
     1205      245,  293,  250,  250,  250,  250,  250,  250,  281,  283,
     1206      285,  288,  247,  294,  289,  331,  288,  297,  247,  249,
     1207      249,  249,  249,  249,  249,  256,  297,  293,  258,  258,
     1208      258,  258,  258,  258,  289,  249,  298,  249,  331,  249,
     1209      249,  263,  263,  263,  263,  263,  263,  292,  256,  298,
     1210      256,  295,  249,  296,  256,  299,  290,  249,  296,  249,
     1211      256,  258,  249,  300,  249,  292,  302,  295,  295,  306,
     1212      303,  290,  256,  307,  263,  303,  256,  290,  290,  304,
     1213      256,  300,  299,  305,  302,  308,  312,  309,  304,  306,
     1214      305,  307,  309,  310,  311,  313,  314,  315,  310,  316,
     1215
     1216      311,  317,  314,  321,  313,  312,  308,  308,  316,  318,
     1217      319,  322,  320,  315,  318,  319,  317,  320,  323,  325,
     1218      326,  327,  321,  328,  327,  329,  330,  332,  333,  322,
     1219      325,  323,  334,  335,  320,  326,  336,  339,  329,  337,
     1220      338,  334,  328,  341,  342,  333,  343,  332,  330,  344,
     1221      339,  346,  341,  347,  348,  335,  346,  345,  338,  336,
     1222      387,  337,  344,  350,  343,  345,  349,  349,  347,  350,
     1223      387,  349,  348,  349,  357,  357,  357,  357,  358,  358,
     1224      358,  358,  367,  368,  367,  368,  387,  408,  342,  375,
     1225      375,  375,  375,  375,  375,  377,  388,  377,  408,  392,
     1226
     1227      377,  377,  377,  377,  377,  377,  388,  357,  376,  376,
     1228      376,  376,  376,  376,  379,  379,  379,  379,  379,  379,
     1229      411,  409,  388,  392,  376,  410,  376,  413,  376,  376,
     1230      382,  382,  382,  382,  382,  382,  390,  409,  413,  411,
     1231      410,  376,  390,  394,  415,  419,  376,  379,  376,  417,
     1232      886,  376,  420,  376,  380,  380,  380,  380,  380,  380,
     1233      389,  394,  417,  382,  412,  420,  415,  419,  390,  394,
     1234      380,  380,  380,  412,  380,  380,  383,  383,  383,  383,
     1235      383,  383,  426,  389,  418,  389,  879,  380,  426,  389,
     1236      878,  393,  380,  380,  380,  389,  391,  380,  391,  380,
     1237
     1238      418,  391,  391,  391,  391,  391,  391,  389,  414,  383,
     1239      416,  389,  421,  422,  393,  389,  393,  414,  423,  416,
     1240      393,  428,  424,  427,  429,  425,  393,  424,  421,  421,
     1241      430,  436,  428,  437,  391,  422,  423,  434,  393,  439,
     1242      425,  438,  393,  429,  427,  430,  393,  425,  441,  434,
     1243      440,  442,  436,  444,  438,  437,  440,  446,  447,  448,
     1244      442,  449,  439,  441,  450,  451,  452,  454,  444,  456,
     1245      459,  457,  458,  462,  448,  452,  460,  446,  461,  450,
     1246      447,  458,  464,  449,  454,  451,  465,  466,  463,  468,
     1247      469,  459,  456,  457,  466,  462,  460,  463,  461,  465,
     1248
     1249      464,  467,  470,  474,  471,  472,  475,  477,  467,  877,
     1250      470,  526,  469,  477,  468,  475,  472,  504,  505,  476,
     1251      470,  471,  476,  876,  526,  474,  486,  486,  486,  486,
     1252      497,  497,  497,  497,  497,  497,  499,  499,  499,  499,
     1253      499,  499,  525,  504,  505,  528,  497,  529,  497,  530,
     1254      497,  497,  500,  500,  500,  500,  500,  500,  875,  525,
     1255      528,  501,  530,  497,  531,  538,  503,  529,  497,  499,
     1256      497,  501,  502,  497,  502,  497,  503,  502,  502,  502,
     1257      502,  502,  502,  533,  538,  500,  531,  501,  533,  532,
     1258      871,  867,  503,  507,  507,  507,  507,  507,  507,  509,
     1259
     1260      535,  509,  532,  535,  509,  509,  509,  509,  509,  509,
     1261      502,  508,  508,  508,  508,  508,  508,  534,  536,  537,
     1262      539,  540,  542,  543,  864,  546,  547,  508,  534,  508,
     1263      540,  508,  508,  542,  537,  541,  543,  545,  536,  548,
     1264      541,  539,  554,  547,  508,  549,  545,  546,  548,  508,
     1265      549,  508,  551,  552,  508,  555,  508,  556,  551,  554,
     1266      557,  560,  552,  561,  559,  562,  564,  571,  567,  557,
     1267      555,  565,  556,  559,  568,  561,  565,  567,  560,  572,
     1268      562,  564,  573,  568,  576,  575,  578,  582,  577,  571,
     1269      579,  580,  572,  575,  576,  577,  582,  580,  585,  573,
     1270
     1271      583,  586,  579,  588,  630,  863,  634,  728,  578,  630,
     1272      583,  633,  613,  613,  586,  585,  606,  606,  606,  606,
     1273      606,  606,  630,  634,  633,  588,  607,  607,  607,  607,
     1274      607,  607,  609,  614,  609,  613,  728,  609,  609,  609,
     1275      609,  609,  609,  612,  612,  612,  612,  612,  612,  606,
     1276      608,  608,  608,  608,  608,  608,  614,  615,  631,  615,
     1277      632,  635,  615,  638,  637,  631,  608,  636,  608,  632,
     1278      608,  608,  637,  648,  636,  639,  612,  641,  639,  615,
     1279      638,  615,  642,  608,  635,  640,  615,  643,  608,  644,
     1280      608,  645,  649,  608,  647,  608,  650,  642,  640,  641,
     1281
     1282      646,  648,  652,  646,  653,  651,  644,  649,  654,  643,
     1283      656,  647,  657,  645,  651,  658,  650,  654,  662,  663,
     1284      652,  668,  665,  862,  658,  669,  653,  676,  679,  680,
     1285      668,  677,  669,  656,  657,  713,  676,  679,  662,  665,
     1286      712,  677,  718,  715,  680,  713,  663,  699,  699,  699,
     1287      699,  699,  699,  703,  703,  703,  703,  703,  703,  716,
     1288      721,  712,  718,  699,  734,  699,  716,  699,  699,  715,
     1289      717,  719,  734,  720,  719,  717,  720,  723,  721,  725,
     1290      699,  724,  727,  723,  731,  699,  703,  699,  725,  745,
     1291      699,  730,  699,  726,  724,  729,  726,  735,  729,  732,
     1292
     1293      730,  733,  732,  727,  736,  737,  738,  735,  744,  741,
     1294      731,  745,  746,  748,  733,  738,  749,  736,  769,  861,
     1295      767,  748,  772,  769,  768,  749,  737,  741,  744,  770,
     1296      773,  774,  741,  746,  756,  756,  756,  756,  756,  756,
     1297      767,  768,  771,  775,  770,  772,  775,  773,  776,  777,
     1298      779,  781,  771,  779,  781,  782,  783,  774,  785,  783,
     1299      784,  776,  782,  784,  786,  788,  792,  756,  807,  809,
     1300      817,  812,  811,  785,  810,  811,  813,  777,  814,  813,
     1301      816,  814,  818,  820,  860,  818,  824,  786,  788,  792,
     1302      809,  821,  810,  812,  821,  807,  817,  822,  816,  823,
     1303
     1304      822,  825,  824,  826,  841,  820,  842,  843,  823,  844,
     1305      843,  845,  825,  842,  846,  847,  855,  846,  844,  826,
     1306      850,  853,  854,  850,  853,  841,  859,  856,  855,  845,
     1307      865,  854,  847,  866,  868,  845,  856,  868,  866,  865,
     1308      869,  870,  872,  880,  873,  872,  870,  873,  874,  881,
     1309      869,  874,  882,  888,  884,  882,  883,  884,  885,  891,
     1310      895,  885,  892,  880,  881,  896,  883,  897,  899,  895,
     1311      898,  900,  901,  858,  857,  888,  852,  892,  896,  851,
     1312      891,  849,  901,  848,  840,  839,  899,  838,  837,  897,
     1313      836,  898,  835,  900,  905,  905,  905,  905,  905,  905,
     1314
     1315      905,  905,  905,  905,  905,  905,  905,  906,  906,  906,
     1316      906,  906,  906,  906,  906,  906,  906,  906,  906,  906,
     1317      907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
     1318      907,  907,  907,  908,  834,  833,  908,  832,  908,  908,
     1319      908,  908,  908,  909,  831,  830,  829,  909,  909,  909,
     1320      909,  909,  909,  910,  910,  910,  910,  910,  910,  910,
     1321      910,  910,  910,  910,  910,  910,  911,  828,  827,  911,
     1322      819,  911,  911,  911,  911,  911,  912,  815,  912,  912,
     1323      808,  912,  912,  912,  912,  912,  912,  806,  912,  913,
     1324      805,  804,  913,  913,  913,  913,  913,  913,  913,  913,
     1325
     1326      803,  913,  914,  914,  914,  914,  914,  914,  914,  914,
     1327      914,  914,  914,  914,  914,  915,  915,  802,  915,  801,
     1328      800,  799,  915,  916,  798,  797,  916,  796,  916,  916,
     1329      916,  916,  916,  917,  795,  917,  794,  793,  791,  917,
     1330      918,  790,  918,  789,  787,  780,  918,  919,  778,  919,
     1331      766,  765,  764,  919,  920,  763,  920,  762,  761,  760,
     1332      920,  921,  759,  921,  758,  755,  754,  921,  922,  753,
     1333      922,  747,  743,  742,  922,  923,  740,  923,  739,  722,
     1334      714,  923,  924,  711,  924,  706,  704,  700,  924,  925,
     1335      690,  925,  686,  684,  682,  925,  926,  681,  926,  927,
     1336
     1337      927,  678,  927,  927,  927,  675,  927,  928,  928,  674,
     1338      928,  929,  673,  672,  929,  671,  929,  929,  929,  929,
     1339      929,  930,  670,  930,  667,  666,  664,  930,  931,  661,
     1340      931,  660,  659,  655,  931,  932,  628,  932,  624,  622,
     1341      620,  932,  933,  618,  933,  934,  616,  934,  610,  604,
     1342      602,  934,  935,  600,  935,  936,  598,  596,  936,  594,
     1343      936,  936,  936,  936,  936,  937,  937,  937,  937,  937,
     1344      937,  937,  937,  937,  937,  937,  937,  937,  938,  938,
     1345      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
     1346      938,  939,  592,  939,  590,  589,  587,  939,  940,  584,
     1347
     1348      940,  581,  574,  570,  940,  941,  569,  941,  566,  563,
     1349      558,  941,  942,  553,  942,  943,  550,  943,  527,  523,
     1350      521,  943,  944,  519,  944,  945,  517,  945,  515,  513,
     1351      512,  945,  946,  511,  946,  947,  510,  947,  498,  495,
     1352      493,  947,  948,  492,  948,  949,  491,  949,  489,  487,
     1353      484,  949,  950,  482,  950,  951,  480,  951,  478,  473,
     1354      455,  951,  952,  453,  952,  953,  445,  953,  443,  435,
     1355      433,  953,  954,  431,  954,  955,  405,  955,  403,  955,
     1356      401,  955,  956,  399,  956,  398,  956,  397,  956,  957,
     1357      957,  384,  957,  957,  957,  381,  957,  958,  372,  958,
     1358
     1359      370,  369,  365,  958,  959,  363,  959,  361,  359,  355,
     1360      959,  960,  353,  960,  352,  351,  340,  960,  961,  324,
     1361      961,  962,  301,  962,  280,  278,  276,  962,  963,  275,
     1362      963,  964,  274,  964,  272,  271,  266,  964,  965,  262,
     1363      965,  966,  261,  966,  257,  254,  253,  966,  967,  242,
     1364      967,  968,  241,  234,  968,  233,  968,  968,  968,  968,
     1365      968,  969,  969,  969,  969,  969,  969,  969,  969,  969,
     1366      969,  969,  969,  969,  970,  230,  970,  220,  218,  217,
     1367      970,  971,  216,  971,  972,  210,  972,  209,  207,  202,
     1368      972,  973,  179,  973,  974,  150,  974,  148,  147,  141,
     1369
     1370      974,  975,  139,  975,  976,  137,  976,  129,  126,  125,
     1371      976,  977,  121,  977,  978,  102,  978,   99,   96,   94,
     1372      978,  979,   87,  979,  980,   73,  980,   71,   67,   36,
     1373      980,  981,   33,  981,  982,   18,  982,   11,    4,    3,
     1374      982,  983,    0,  983,    0,    0,    0,  983,  984,    0,
     1375      984,  985,    0,  985,    0,    0,    0,  985,  986,    0,
     1376      986,  987,    0,  987,    0,  987,    0,  987,  988,    0,
     1377      988,    0,    0,    0,  988,  989,    0,  989,    0,    0,
     1378        0,  989,  990,    0,  990,  991,    0,  991,    0,    0,
     1379        0,  991,  992,    0,  992,  993,    0,  993,    0,    0,
     1380
     1381        0,  993,  994,    0,  994,  995,    0,  995,    0,    0,
     1382        0,  995,  996,    0,  996,  997,    0,  997,    0,    0,
     1383        0,  997,  998,    0,  998,  999,    0,  999,    0,    0,
     1384        0,  999, 1000,    0, 1000, 1001,    0,    0, 1001,    0,
     1385     1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1002,
     1386     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003,    0,
     1387     1003,    0,    0,    0, 1003, 1004,    0, 1004, 1005,    0,
     1388     1005,    0,    0,    0, 1005, 1006,    0, 1006, 1007,    0,
     1389     1007,    0,    0,    0, 1007, 1008,    0, 1008, 1009,    0,
     1390     1009,    0,    0,    0, 1009, 1010,    0, 1010, 1011,    0,
     1391
     1392     1011,    0,    0,    0, 1011, 1012,    0, 1012, 1013,    0,
     1393     1013,    0,    0,    0, 1013, 1014,    0, 1014, 1015,    0,
     1394     1015,    0,    0,    0, 1015, 1016,    0, 1016, 1017,    0,
     1395     1017,    0,    0,    0, 1017, 1018,    0, 1018, 1019,    0,
     1396     1019,    0,    0,    0, 1019, 1020,    0, 1020,    0,    0,
     1397        0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,    0,
     1398        0, 1022, 1023,    0, 1023, 1024,    0, 1024,    0,    0,
     1399        0, 1024, 1025,    0, 1025, 1026,    0, 1026,    0,    0,
     1400        0, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0,
     1401     1029, 1030,    0,    0, 1030,    0, 1030, 1030, 1030, 1030,
     1402
     1403     1030, 1031,    0, 1031, 1032, 1032, 1032, 1032, 1032, 1032,
     1404     1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,    0, 1033,
     1405        0,    0,    0, 1033, 1034,    0, 1034, 1035,    0, 1035,
     1406        0,    0,    0, 1035, 1036,    0, 1036, 1037,    0, 1037,
     1407     1038,    0, 1038, 1039,    0,    0, 1039,    0, 1039, 1039,
     1408     1039, 1039, 1039, 1040,    0, 1040, 1041,    0, 1041, 1042,
     1409        0, 1042, 1043,    0, 1043, 1044,    0, 1044, 1045,    0,
     1410     1045, 1046,    0, 1046, 1047,    0, 1047,    0,    0,    0,
     1411     1047, 1048,    0, 1048, 1049,    0, 1049,    0,    0,    0,
     1412     1049, 1050,    0, 1050, 1051,    0, 1051, 1052,    0, 1052,
     1413
     1414     1053,    0, 1053, 1054,    0, 1054,    0,    0,    0, 1054,
     1415     1055,    0,    0, 1055,    0, 1055, 1055, 1055, 1055, 1055,
     1416     1056,    0, 1056, 1057,    0, 1057, 1058,    0, 1058, 1059,
     1417        0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,    0,
     1418        0,    0, 1060, 1061,    0, 1061,    0,    0,    0, 1061,
     1419     1062,    0, 1062, 1063,    0, 1063,    0,    0,    0, 1063,
     1420     1064,    0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,
     1421        0,    0,    0, 1065, 1066,    0, 1066,    0,    0,    0,
     1422     1066, 1067,    0, 1067,    0,    0,    0, 1067, 1068,    0,
     1423     1068,    0,    0,    0, 1068, 1069,    0, 1069,    0,    0,
     1424
     1425        0, 1069, 1070,    0, 1070,    0,    0,    0, 1070, 1071,
     1426        0, 1071,    0,    0,    0, 1071, 1072,    0, 1072,    0,
     1427        0,    0, 1072, 1073,    0, 1073,    0,    0,    0, 1073,
     1428     1074,    0, 1074,    0,    0,    0, 1074, 1075,    0, 1075,
     1429        0,    0,    0, 1075, 1076,    0, 1076,    0,    0,    0,
     1430     1076, 1077,    0, 1077,    0,    0,    0, 1077, 1078,    0,
     1431     1078,    0,    0,    0, 1078,  904,  904,  904,  904,  904,
     1432      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1433      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1434      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1435
     1436      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1437      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1438      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1439      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1440      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
     1441      904
    14461442    } ;
    14471443
    14481444/* Table of booleans, true if rule could match eol. */
    1449 static yyconst flex_int32_t yy_rule_can_match_eol[187] =
     1445static yyconst flex_int32_t yy_rule_can_match_eol[186] =
    14501446    {   0,
    145114471, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14551451    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14561452    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1457     0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1453    0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14581454    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14591455    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1460     0, 0, 0, 0, 0, 0, 0,     };
     1456    0, 0, 0, 0, 0, 0,     };
    14611457
    14621458static yy_state_type yy_last_accepting_state;
     
    14801476 * The contents of this file are covered under the licence agreement in the
    14811477 * file "LICENCE" distributed with Cforall.
    1482  *
    1483  * lex.l --
    1484  *
     1478 * 
     1479 * lex.l -- 
     1480 * 
    14851481 * Author           : Peter A. Buhr
    14861482 * Created On       : Sat Sep 22 08:58:10 2001
     
    15481544
    15491545
    1550 #line 1551 "Parser/lex.cc"
     1546#line 1547 "Parser/lex.cc"
    15511547
    15521548#define INITIAL 0
     
    17431739
    17441740                                   /* line directives */
    1745 #line 1746 "Parser/lex.cc"
     1741#line 1742 "Parser/lex.cc"
    17461742
    17471743        if ( !(yy_init) )
     
    17971793                                {
    17981794                                yy_current_state = (int) yy_def[yy_current_state];
    1799                                 if ( yy_current_state >= 909 )
     1795                                if ( yy_current_state >= 905 )
    18001796                                        yy_c = yy_meta[(unsigned int) yy_c];
    18011797                                }
     
    18031799                        ++yy_cp;
    18041800                        }
    1805                 while ( yy_base[yy_current_state] != 2877 );
     1801                while ( yy_base[yy_current_state] != 2866 );
    18061802
    18071803yy_find_action:
     
    23242320YY_RULE_SETUP
    23252321#line 260 "lex.ll"
    2326 { KEYWORD_RETURN(TTYPE); }                              // CFA
     2322{ KEYWORD_RETURN(TYPEDEF); }
    23272323        YY_BREAK
    23282324case 93:
    23292325YY_RULE_SETUP
    23302326#line 261 "lex.ll"
    2331 { KEYWORD_RETURN(TYPEDEF); }
     2327{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23322328        YY_BREAK
    23332329case 94:
     
    23442340YY_RULE_SETUP
    23452341#line 264 "lex.ll"
    2346 { KEYWORD_RETURN(TYPEOF); }                             // GCC
     2342{ KEYWORD_RETURN(UNION); }
    23472343        YY_BREAK
    23482344case 97:
    23492345YY_RULE_SETUP
    23502346#line 265 "lex.ll"
    2351 { KEYWORD_RETURN(UNION); }
     2347{ KEYWORD_RETURN(UNSIGNED); }
    23522348        YY_BREAK
    23532349case 98:
    23542350YY_RULE_SETUP
    23552351#line 266 "lex.ll"
    2356 { KEYWORD_RETURN(UNSIGNED); }
     2352{ KEYWORD_RETURN(VALIST); }                     // GCC
    23572353        YY_BREAK
    23582354case 99:
    23592355YY_RULE_SETUP
    23602356#line 267 "lex.ll"
    2361 { KEYWORD_RETURN(VALIST); }                     // GCC
     2357{ KEYWORD_RETURN(VOID); }
    23622358        YY_BREAK
    23632359case 100:
    23642360YY_RULE_SETUP
    23652361#line 268 "lex.ll"
    2366 { KEYWORD_RETURN(VOID); }
     2362{ KEYWORD_RETURN(VOLATILE); }
    23672363        YY_BREAK
    23682364case 101:
    23692365YY_RULE_SETUP
    23702366#line 269 "lex.ll"
    2371 { KEYWORD_RETURN(VOLATILE); }
     2367{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23722368        YY_BREAK
    23732369case 102:
     
    23792375YY_RULE_SETUP
    23802376#line 271 "lex.ll"
    2381 { KEYWORD_RETURN(VOLATILE); }                   // GCC
     2377{ KEYWORD_RETURN(WHILE); }
    23822378        YY_BREAK
    23832379case 104:
    23842380YY_RULE_SETUP
    23852381#line 272 "lex.ll"
    2386 { KEYWORD_RETURN(WHILE); }
    2387         YY_BREAK
     2382{ NUMERIC_RETURN(ZERO_T); }                             // CFA
     2383        YY_BREAK
     2384/* identifier */
    23882385case 105:
    23892386YY_RULE_SETUP
    2390 #line 273 "lex.ll"
    2391 { NUMERIC_RETURN(ZERO_T); }                             // CFA
    2392         YY_BREAK
    2393 /* identifier */
     2387#line 275 "lex.ll"
     2388{ IDENTIFIER_RETURN(); }
     2389        YY_BREAK
    23942390case 106:
    23952391YY_RULE_SETUP
    23962392#line 276 "lex.ll"
     2393{ ATTRIBUTE_RETURN(); }
     2394        YY_BREAK
     2395case 107:
     2396YY_RULE_SETUP
     2397#line 277 "lex.ll"
     2398{ BEGIN BKQUOTE; }
     2399        YY_BREAK
     2400case 108:
     2401YY_RULE_SETUP
     2402#line 278 "lex.ll"
    23972403{ IDENTIFIER_RETURN(); }
    23982404        YY_BREAK
    2399 case 107:
    2400 YY_RULE_SETUP
    2401 #line 277 "lex.ll"
    2402 { ATTRIBUTE_RETURN(); }
    2403         YY_BREAK
    2404 case 108:
    2405 YY_RULE_SETUP
    2406 #line 278 "lex.ll"
    2407 { BEGIN BKQUOTE; }
    2408         YY_BREAK
    24092405case 109:
    24102406YY_RULE_SETUP
    24112407#line 279 "lex.ll"
    2412 { IDENTIFIER_RETURN(); }
    2413         YY_BREAK
     2408{ BEGIN 0; }
     2409        YY_BREAK
     2410/* numeric constants */
    24142411case 110:
    24152412YY_RULE_SETUP
    2416 #line 280 "lex.ll"
    2417 { BEGIN 0; }
    2418         YY_BREAK
    2419 /* numeric constants */
     2413#line 282 "lex.ll"
     2414{ NUMERIC_RETURN(ZERO); }                               // CFA
     2415        YY_BREAK
    24202416case 111:
    24212417YY_RULE_SETUP
    24222418#line 283 "lex.ll"
    2423 { NUMERIC_RETURN(ZERO); }                               // CFA
     2419{ NUMERIC_RETURN(ONE); }                                // CFA
    24242420        YY_BREAK
    24252421case 112:
    24262422YY_RULE_SETUP
    24272423#line 284 "lex.ll"
    2428 { NUMERIC_RETURN(ONE); }                                // CFA
     2424{ NUMERIC_RETURN(INTEGERconstant); }
    24292425        YY_BREAK
    24302426case 113:
     
    24412437YY_RULE_SETUP
    24422438#line 287 "lex.ll"
    2443 { NUMERIC_RETURN(INTEGERconstant); }
     2439{ NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
    24442440        YY_BREAK
    24452441case 116:
    24462442YY_RULE_SETUP
    24472443#line 288 "lex.ll"
    2448 { NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
     2444{ NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
    24492445        YY_BREAK
    24502446case 117:
    24512447YY_RULE_SETUP
    24522448#line 289 "lex.ll"
    2453 { NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
     2449{ NUMERIC_RETURN(FLOATINGconstant); }
    24542450        YY_BREAK
    24552451case 118:
     
    24582454{ NUMERIC_RETURN(FLOATINGconstant); }
    24592455        YY_BREAK
     2456/* character constant, allows empty value */
    24602457case 119:
    24612458YY_RULE_SETUP
    2462 #line 291 "lex.ll"
    2463 { NUMERIC_RETURN(FLOATINGconstant); }
    2464         YY_BREAK
    2465 /* character constant, allows empty value */
     2459#line 293 "lex.ll"
     2460{ BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
     2461        YY_BREAK
    24662462case 120:
    24672463YY_RULE_SETUP
    24682464#line 294 "lex.ll"
    2469 { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
     2465{ strtext->append( yytext, yyleng ); }
    24702466        YY_BREAK
    24712467case 121:
     2468/* rule 121 can match eol */
    24722469YY_RULE_SETUP
    24732470#line 295 "lex.ll"
    2474 { strtext->append( yytext, yyleng ); }
    2475         YY_BREAK
    2476 case 122:
    2477 /* rule 122 can match eol */
    2478 YY_RULE_SETUP
    2479 #line 296 "lex.ll"
    24802471{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    24812472        YY_BREAK
    24822473/* ' stop highlighting */
    24832474/* string constant */
     2475case 122:
     2476YY_RULE_SETUP
     2477#line 299 "lex.ll"
     2478{ BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
     2479        YY_BREAK
    24842480case 123:
    24852481YY_RULE_SETUP
    24862482#line 300 "lex.ll"
    2487 { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
     2483{ strtext->append( yytext, yyleng ); }
    24882484        YY_BREAK
    24892485case 124:
     2486/* rule 124 can match eol */
    24902487YY_RULE_SETUP
    24912488#line 301 "lex.ll"
    2492 { strtext->append( yytext, yyleng ); }
    2493         YY_BREAK
    2494 case 125:
    2495 /* rule 125 can match eol */
    2496 YY_RULE_SETUP
    2497 #line 302 "lex.ll"
    24982489{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    24992490        YY_BREAK
    25002491/* " stop highlighting */
    25012492/* common character/string constant */
     2493case 125:
     2494YY_RULE_SETUP
     2495#line 305 "lex.ll"
     2496{ rm_underscore(); strtext->append( yytext, yyleng ); }
     2497        YY_BREAK
    25022498case 126:
     2499/* rule 126 can match eol */
    25032500YY_RULE_SETUP
    25042501#line 306 "lex.ll"
    2505 { rm_underscore(); strtext->append( yytext, yyleng ); }
     2502{}                                              // continuation (ALSO HANDLED BY CPP)
    25062503        YY_BREAK
    25072504case 127:
    2508 /* rule 127 can match eol */
    25092505YY_RULE_SETUP
    25102506#line 307 "lex.ll"
    2511 {}                                              // continuation (ALSO HANDLED BY CPP)
    2512         YY_BREAK
     2507{ strtext->append( yytext, yyleng ); } // unknown escape character
     2508        YY_BREAK
     2509/* punctuation */
    25132510case 128:
    25142511YY_RULE_SETUP
    2515 #line 308 "lex.ll"
    2516 { strtext->append( yytext, yyleng ); } // unknown escape character
    2517         YY_BREAK
    2518 /* punctuation */
     2512#line 310 "lex.ll"
     2513{ ASCIIOP_RETURN(); }
     2514        YY_BREAK
    25192515case 129:
    25202516YY_RULE_SETUP
     
    25452541YY_RULE_SETUP
    25462542#line 316 "lex.ll"
     2543{ ASCIIOP_RETURN(); }                                   // also operator
     2544        YY_BREAK
     2545case 135:
     2546YY_RULE_SETUP
     2547#line 317 "lex.ll"
    25472548{ ASCIIOP_RETURN(); }
    2548         YY_BREAK
    2549 case 135:
    2550 YY_RULE_SETUP
    2551 #line 317 "lex.ll"
    2552 { ASCIIOP_RETURN(); }                                   // also operator
    25532549        YY_BREAK
    25542550case 136:
     
    25602556YY_RULE_SETUP
    25612557#line 319 "lex.ll"
     2558{ ASCIIOP_RETURN(); }                                   // also operator
     2559        YY_BREAK
     2560case 138:
     2561YY_RULE_SETUP
     2562#line 320 "lex.ll"
     2563{ NAMEDOP_RETURN(ELLIPSIS); }
     2564        YY_BREAK
     2565/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
     2566case 139:
     2567YY_RULE_SETUP
     2568#line 323 "lex.ll"
     2569{ RETURN_VAL('['); }
     2570        YY_BREAK
     2571case 140:
     2572YY_RULE_SETUP
     2573#line 324 "lex.ll"
     2574{ RETURN_VAL(']'); }
     2575        YY_BREAK
     2576case 141:
     2577YY_RULE_SETUP
     2578#line 325 "lex.ll"
     2579{ RETURN_VAL('{'); }
     2580        YY_BREAK
     2581case 142:
     2582YY_RULE_SETUP
     2583#line 326 "lex.ll"
     2584{ RETURN_VAL('}'); }
     2585        YY_BREAK
     2586/* operators */
     2587case 143:
     2588YY_RULE_SETUP
     2589#line 329 "lex.ll"
    25622590{ ASCIIOP_RETURN(); }
    25632591        YY_BREAK
    2564 case 138:
    2565 YY_RULE_SETUP
    2566 #line 320 "lex.ll"
    2567 { ASCIIOP_RETURN(); }                                   // also operator
    2568         YY_BREAK
    2569 case 139:
    2570 YY_RULE_SETUP
    2571 #line 321 "lex.ll"
    2572 { NAMEDOP_RETURN(ELLIPSIS); }
    2573         YY_BREAK
    2574 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2575 case 140:
    2576 YY_RULE_SETUP
    2577 #line 324 "lex.ll"
    2578 { RETURN_VAL('['); }
    2579         YY_BREAK
    2580 case 141:
    2581 YY_RULE_SETUP
    2582 #line 325 "lex.ll"
    2583 { RETURN_VAL(']'); }
    2584         YY_BREAK
    2585 case 142:
    2586 YY_RULE_SETUP
    2587 #line 326 "lex.ll"
    2588 { RETURN_VAL('{'); }
    2589         YY_BREAK
    2590 case 143:
    2591 YY_RULE_SETUP
    2592 #line 327 "lex.ll"
    2593 { RETURN_VAL('}'); }
    2594         YY_BREAK
    2595 /* operators */
    25962592case 144:
    25972593YY_RULE_SETUP
     
    26612657case 157:
    26622658YY_RULE_SETUP
    2663 #line 343 "lex.ll"
    2664 { ASCIIOP_RETURN(); }
     2659#line 344 "lex.ll"
     2660{ NAMEDOP_RETURN(ICR); }
    26652661        YY_BREAK
    26662662case 158:
    26672663YY_RULE_SETUP
    26682664#line 345 "lex.ll"
    2669 { NAMEDOP_RETURN(ICR); }
     2665{ NAMEDOP_RETURN(DECR); }
    26702666        YY_BREAK
    26712667case 159:
    26722668YY_RULE_SETUP
    26732669#line 346 "lex.ll"
    2674 { NAMEDOP_RETURN(DECR); }
     2670{ NAMEDOP_RETURN(EQ); }
    26752671        YY_BREAK
    26762672case 160:
    26772673YY_RULE_SETUP
    26782674#line 347 "lex.ll"
    2679 { NAMEDOP_RETURN(EQ); }
     2675{ NAMEDOP_RETURN(NE); }
    26802676        YY_BREAK
    26812677case 161:
    26822678YY_RULE_SETUP
    26832679#line 348 "lex.ll"
    2684 { NAMEDOP_RETURN(NE); }
     2680{ NAMEDOP_RETURN(LS); }
    26852681        YY_BREAK
    26862682case 162:
    26872683YY_RULE_SETUP
    26882684#line 349 "lex.ll"
    2689 { NAMEDOP_RETURN(LS); }
     2685{ NAMEDOP_RETURN(RS); }
    26902686        YY_BREAK
    26912687case 163:
    26922688YY_RULE_SETUP
    26932689#line 350 "lex.ll"
    2694 { NAMEDOP_RETURN(RS); }
     2690{ NAMEDOP_RETURN(LE); }
    26952691        YY_BREAK
    26962692case 164:
    26972693YY_RULE_SETUP
    26982694#line 351 "lex.ll"
    2699 { NAMEDOP_RETURN(LE); }
     2695{ NAMEDOP_RETURN(GE); }
    27002696        YY_BREAK
    27012697case 165:
    27022698YY_RULE_SETUP
    27032699#line 352 "lex.ll"
    2704 { NAMEDOP_RETURN(GE); }
     2700{ NAMEDOP_RETURN(ANDAND); }
    27052701        YY_BREAK
    27062702case 166:
    27072703YY_RULE_SETUP
    27082704#line 353 "lex.ll"
    2709 { NAMEDOP_RETURN(ANDAND); }
     2705{ NAMEDOP_RETURN(OROR); }
    27102706        YY_BREAK
    27112707case 167:
    27122708YY_RULE_SETUP
    27132709#line 354 "lex.ll"
    2714 { NAMEDOP_RETURN(OROR); }
     2710{ NAMEDOP_RETURN(ARROW); }
    27152711        YY_BREAK
    27162712case 168:
    27172713YY_RULE_SETUP
    27182714#line 355 "lex.ll"
    2719 { NAMEDOP_RETURN(ARROW); }
     2715{ NAMEDOP_RETURN(PLUSassign); }
    27202716        YY_BREAK
    27212717case 169:
    27222718YY_RULE_SETUP
    27232719#line 356 "lex.ll"
    2724 { NAMEDOP_RETURN(PLUSassign); }
     2720{ NAMEDOP_RETURN(MINUSassign); }
    27252721        YY_BREAK
    27262722case 170:
    27272723YY_RULE_SETUP
    27282724#line 357 "lex.ll"
    2729 { NAMEDOP_RETURN(MINUSassign); }
     2725{ NAMEDOP_RETURN(MULTassign); }
    27302726        YY_BREAK
    27312727case 171:
    27322728YY_RULE_SETUP
    27332729#line 358 "lex.ll"
    2734 { NAMEDOP_RETURN(MULTassign); }
     2730{ NAMEDOP_RETURN(DIVassign); }
    27352731        YY_BREAK
    27362732case 172:
    27372733YY_RULE_SETUP
    27382734#line 359 "lex.ll"
    2739 { NAMEDOP_RETURN(DIVassign); }
     2735{ NAMEDOP_RETURN(MODassign); }
    27402736        YY_BREAK
    27412737case 173:
    27422738YY_RULE_SETUP
    27432739#line 360 "lex.ll"
    2744 { NAMEDOP_RETURN(MODassign); }
     2740{ NAMEDOP_RETURN(ANDassign); }
    27452741        YY_BREAK
    27462742case 174:
    27472743YY_RULE_SETUP
    27482744#line 361 "lex.ll"
    2749 { NAMEDOP_RETURN(ANDassign); }
     2745{ NAMEDOP_RETURN(ORassign); }
    27502746        YY_BREAK
    27512747case 175:
    27522748YY_RULE_SETUP
    27532749#line 362 "lex.ll"
    2754 { NAMEDOP_RETURN(ORassign); }
     2750{ NAMEDOP_RETURN(ERassign); }
    27552751        YY_BREAK
    27562752case 176:
    27572753YY_RULE_SETUP
    27582754#line 363 "lex.ll"
    2759 { NAMEDOP_RETURN(ERassign); }
     2755{ NAMEDOP_RETURN(LSassign); }
    27602756        YY_BREAK
    27612757case 177:
    27622758YY_RULE_SETUP
    27632759#line 364 "lex.ll"
    2764 { NAMEDOP_RETURN(LSassign); }
     2760{ NAMEDOP_RETURN(RSassign); }
    27652761        YY_BREAK
    27662762case 178:
    27672763YY_RULE_SETUP
    2768 #line 365 "lex.ll"
    2769 { NAMEDOP_RETURN(RSassign); }
    2770         YY_BREAK
     2764#line 366 "lex.ll"
     2765{ NAMEDOP_RETURN(ATassign); }                   // CFA
     2766        YY_BREAK
     2767/* CFA, operator identifier */
    27712768case 179:
    27722769YY_RULE_SETUP
    2773 #line 367 "lex.ll"
    2774 { NAMEDOP_RETURN(ATassign); }                   // CFA
    2775         YY_BREAK
    2776 /* CFA, operator identifier */
     2770#line 369 "lex.ll"
     2771{ IDENTIFIER_RETURN(); }                                // unary
     2772        YY_BREAK
    27772773case 180:
    27782774YY_RULE_SETUP
    27792775#line 370 "lex.ll"
    2780 { IDENTIFIER_RETURN(); }                                // unary
     2776{ IDENTIFIER_RETURN(); }
    27812777        YY_BREAK
    27822778case 181:
     
    27882784YY_RULE_SETUP
    27892785#line 372 "lex.ll"
    2790 { IDENTIFIER_RETURN(); }
    2791         YY_BREAK
    2792 case 183:
    2793 YY_RULE_SETUP
    2794 #line 373 "lex.ll"
    27952786{ IDENTIFIER_RETURN(); }                // binary
    27962787        YY_BREAK
     
    28212812          an argument list.
    28222813        */
    2823 case 184:
    2824 YY_RULE_SETUP
    2825 #line 400 "lex.ll"
     2814case 183:
     2815YY_RULE_SETUP
     2816#line 399 "lex.ll"
    28262817{
    28272818        // 1 or 2 character unary operator ?
     
    28362827        YY_BREAK
    28372828/* unknown characters */
     2829case 184:
     2830YY_RULE_SETUP
     2831#line 411 "lex.ll"
     2832{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
     2833        YY_BREAK
    28382834case 185:
    28392835YY_RULE_SETUP
    2840 #line 412 "lex.ll"
    2841 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    2842         YY_BREAK
    2843 case 186:
    2844 YY_RULE_SETUP
    2845 #line 414 "lex.ll"
     2836#line 413 "lex.ll"
    28462837ECHO;
    28472838        YY_BREAK
    2848 #line 2849 "Parser/lex.cc"
     2839#line 2840 "Parser/lex.cc"
    28492840case YY_STATE_EOF(INITIAL):
    28502841case YY_STATE_EOF(COMMENT):
     
    31433134                        {
    31443135                        yy_current_state = (int) yy_def[yy_current_state];
    3145                         if ( yy_current_state >= 909 )
     3136                        if ( yy_current_state >= 905 )
    31463137                                yy_c = yy_meta[(unsigned int) yy_c];
    31473138                        }
     
    31713162                {
    31723163                yy_current_state = (int) yy_def[yy_current_state];
    3173                 if ( yy_current_state >= 909 )
     3164                if ( yy_current_state >= 905 )
    31743165                        yy_c = yy_meta[(unsigned int) yy_c];
    31753166                }
    31763167        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3177         yy_is_jam = (yy_current_state == 908);
     3168        yy_is_jam = (yy_current_state == 904);
    31783169
    31793170        return yy_is_jam ? 0 : yy_current_state;
     
    38213812#define YYTABLES_NAME "yytables"
    38223813
    3823 #line 414 "lex.ll"
     3814#line 413 "lex.ll"
    38243815
    38253816
  • src/Parser/lex.ll

    r2162c2c rbb82c03  
    44 * The contents of this file are covered under the licence agreement in the
    55 * file "LICENCE" distributed with Cforall.
    6  *
    7  * lex.l --
    8  *
     6 * 
     7 * lex.l -- 
     8 * 
    99 * Author           : Peter A. Buhr
    1010 * Created On       : Sat Sep 22 08:58:10 2001
     
    258258trait                   { KEYWORD_RETURN(TRAIT); }                              // CFA
    259259try                             { KEYWORD_RETURN(TRY); }                                // CFA
    260 ttype                   { KEYWORD_RETURN(TTYPE); }                              // CFA
    261260typedef                 { KEYWORD_RETURN(TYPEDEF); }
    262261typeof                  { KEYWORD_RETURN(TYPEOF); }                             // GCC
  • src/Parser/parser.cc

    r2162c2c rbb82c03  
    159159     FTYPE = 291,
    160160     DTYPE = 292,
    161      TTYPE = 293,
    162      TRAIT = 294,
    163      SIZEOF = 295,
    164      OFFSETOF = 296,
    165      ATTRIBUTE = 297,
    166      EXTENSION = 298,
    167      IF = 299,
    168      ELSE = 300,
    169      SWITCH = 301,
    170      CASE = 302,
    171      DEFAULT = 303,
    172      DO = 304,
    173      WHILE = 305,
    174      FOR = 306,
    175      BREAK = 307,
    176      CONTINUE = 308,
    177      GOTO = 309,
    178      RETURN = 310,
    179      CHOOSE = 311,
    180      DISABLE = 312,
    181      ENABLE = 313,
    182      FALLTHRU = 314,
    183      TRY = 315,
    184      CATCH = 316,
    185      CATCHRESUME = 317,
    186      FINALLY = 318,
    187      THROW = 319,
    188      THROWRESUME = 320,
    189      AT = 321,
    190      ASM = 322,
    191      ALIGNAS = 323,
    192      ALIGNOF = 324,
    193      ATOMIC = 325,
    194      GENERIC = 326,
    195      NORETURN = 327,
    196      STATICASSERT = 328,
    197      THREADLOCAL = 329,
    198      IDENTIFIER = 330,
    199      QUOTED_IDENTIFIER = 331,
    200      TYPEDEFname = 332,
    201      TYPEGENname = 333,
    202      ATTR_IDENTIFIER = 334,
    203      ATTR_TYPEDEFname = 335,
    204      ATTR_TYPEGENname = 336,
    205      INTEGERconstant = 337,
    206      CHARACTERconstant = 338,
    207      STRINGliteral = 339,
    208      REALDECIMALconstant = 340,
    209      REALFRACTIONconstant = 341,
    210      FLOATINGconstant = 342,
    211      ZERO = 343,
    212      ONE = 344,
    213      ARROW = 345,
    214      ICR = 346,
    215      DECR = 347,
    216      LS = 348,
    217      RS = 349,
    218      LE = 350,
    219      GE = 351,
    220      EQ = 352,
    221      NE = 353,
    222      ANDAND = 354,
    223      OROR = 355,
    224      ELLIPSIS = 356,
    225      MULTassign = 357,
    226      DIVassign = 358,
    227      MODassign = 359,
    228      PLUSassign = 360,
    229      MINUSassign = 361,
    230      LSassign = 362,
    231      RSassign = 363,
    232      ANDassign = 364,
    233      ERassign = 365,
    234      ORassign = 366,
    235      ATassign = 367,
    236      THEN = 368
     161     TRAIT = 293,
     162     SIZEOF = 294,
     163     OFFSETOF = 295,
     164     ATTRIBUTE = 296,
     165     EXTENSION = 297,
     166     IF = 298,
     167     ELSE = 299,
     168     SWITCH = 300,
     169     CASE = 301,
     170     DEFAULT = 302,
     171     DO = 303,
     172     WHILE = 304,
     173     FOR = 305,
     174     BREAK = 306,
     175     CONTINUE = 307,
     176     GOTO = 308,
     177     RETURN = 309,
     178     CHOOSE = 310,
     179     DISABLE = 311,
     180     ENABLE = 312,
     181     FALLTHRU = 313,
     182     TRY = 314,
     183     CATCH = 315,
     184     CATCHRESUME = 316,
     185     FINALLY = 317,
     186     THROW = 318,
     187     THROWRESUME = 319,
     188     AT = 320,
     189     ASM = 321,
     190     ALIGNAS = 322,
     191     ALIGNOF = 323,
     192     ATOMIC = 324,
     193     GENERIC = 325,
     194     NORETURN = 326,
     195     STATICASSERT = 327,
     196     THREADLOCAL = 328,
     197     IDENTIFIER = 329,
     198     QUOTED_IDENTIFIER = 330,
     199     TYPEDEFname = 331,
     200     TYPEGENname = 332,
     201     ATTR_IDENTIFIER = 333,
     202     ATTR_TYPEDEFname = 334,
     203     ATTR_TYPEGENname = 335,
     204     INTEGERconstant = 336,
     205     CHARACTERconstant = 337,
     206     STRINGliteral = 338,
     207     REALDECIMALconstant = 339,
     208     REALFRACTIONconstant = 340,
     209     FLOATINGconstant = 341,
     210     ZERO = 342,
     211     ONE = 343,
     212     ARROW = 344,
     213     ICR = 345,
     214     DECR = 346,
     215     LS = 347,
     216     RS = 348,
     217     LE = 349,
     218     GE = 350,
     219     EQ = 351,
     220     NE = 352,
     221     ANDAND = 353,
     222     OROR = 354,
     223     ELLIPSIS = 355,
     224     MULTassign = 356,
     225     DIVassign = 357,
     226     MODassign = 358,
     227     PLUSassign = 359,
     228     MINUSassign = 360,
     229     LSassign = 361,
     230     RSassign = 362,
     231     ANDassign = 363,
     232     ERassign = 364,
     233     ORassign = 365,
     234     ATassign = 366,
     235     THEN = 367
    237236   };
    238237#endif
     
    273272#define FTYPE 291
    274273#define DTYPE 292
    275 #define TTYPE 293
    276 #define TRAIT 294
    277 #define SIZEOF 295
    278 #define OFFSETOF 296
    279 #define ATTRIBUTE 297
    280 #define EXTENSION 298
    281 #define IF 299
    282 #define ELSE 300
    283 #define SWITCH 301
    284 #define CASE 302
    285 #define DEFAULT 303
    286 #define DO 304
    287 #define WHILE 305
    288 #define FOR 306
    289 #define BREAK 307
    290 #define CONTINUE 308
    291 #define GOTO 309
    292 #define RETURN 310
    293 #define CHOOSE 311
    294 #define DISABLE 312
    295 #define ENABLE 313
    296 #define FALLTHRU 314
    297 #define TRY 315
    298 #define CATCH 316
    299 #define CATCHRESUME 317
    300 #define FINALLY 318
    301 #define THROW 319
    302 #define THROWRESUME 320
    303 #define AT 321
    304 #define ASM 322
    305 #define ALIGNAS 323
    306 #define ALIGNOF 324
    307 #define ATOMIC 325
    308 #define GENERIC 326
    309 #define NORETURN 327
    310 #define STATICASSERT 328
    311 #define THREADLOCAL 329
    312 #define IDENTIFIER 330
    313 #define QUOTED_IDENTIFIER 331
    314 #define TYPEDEFname 332
    315 #define TYPEGENname 333
    316 #define ATTR_IDENTIFIER 334
    317 #define ATTR_TYPEDEFname 335
    318 #define ATTR_TYPEGENname 336
    319 #define INTEGERconstant 337
    320 #define CHARACTERconstant 338
    321 #define STRINGliteral 339
    322 #define REALDECIMALconstant 340
    323 #define REALFRACTIONconstant 341
    324 #define FLOATINGconstant 342
    325 #define ZERO 343
    326 #define ONE 344
    327 #define ARROW 345
    328 #define ICR 346
    329 #define DECR 347
    330 #define LS 348
    331 #define RS 349
    332 #define LE 350
    333 #define GE 351
    334 #define EQ 352
    335 #define NE 353
    336 #define ANDAND 354
    337 #define OROR 355
    338 #define ELLIPSIS 356
    339 #define MULTassign 357
    340 #define DIVassign 358
    341 #define MODassign 359
    342 #define PLUSassign 360
    343 #define MINUSassign 361
    344 #define LSassign 362
    345 #define RSassign 363
    346 #define ANDassign 364
    347 #define ERassign 365
    348 #define ORassign 366
    349 #define ATassign 367
    350 #define THEN 368
     274#define TRAIT 293
     275#define SIZEOF 294
     276#define OFFSETOF 295
     277#define ATTRIBUTE 296
     278#define EXTENSION 297
     279#define IF 298
     280#define ELSE 299
     281#define SWITCH 300
     282#define CASE 301
     283#define DEFAULT 302
     284#define DO 303
     285#define WHILE 304
     286#define FOR 305
     287#define BREAK 306
     288#define CONTINUE 307
     289#define GOTO 308
     290#define RETURN 309
     291#define CHOOSE 310
     292#define DISABLE 311
     293#define ENABLE 312
     294#define FALLTHRU 313
     295#define TRY 314
     296#define CATCH 315
     297#define CATCHRESUME 316
     298#define FINALLY 317
     299#define THROW 318
     300#define THROWRESUME 319
     301#define AT 320
     302#define ASM 321
     303#define ALIGNAS 322
     304#define ALIGNOF 323
     305#define ATOMIC 324
     306#define GENERIC 325
     307#define NORETURN 326
     308#define STATICASSERT 327
     309#define THREADLOCAL 328
     310#define IDENTIFIER 329
     311#define QUOTED_IDENTIFIER 330
     312#define TYPEDEFname 331
     313#define TYPEGENname 332
     314#define ATTR_IDENTIFIER 333
     315#define ATTR_TYPEDEFname 334
     316#define ATTR_TYPEGENname 335
     317#define INTEGERconstant 336
     318#define CHARACTERconstant 337
     319#define STRINGliteral 338
     320#define REALDECIMALconstant 339
     321#define REALFRACTIONconstant 340
     322#define FLOATINGconstant 341
     323#define ZERO 342
     324#define ONE 343
     325#define ARROW 344
     326#define ICR 345
     327#define DECR 346
     328#define LS 347
     329#define RS 348
     330#define LE 349
     331#define GE 350
     332#define EQ 351
     333#define NE 352
     334#define ANDAND 353
     335#define OROR 354
     336#define ELLIPSIS 355
     337#define MULTassign 356
     338#define DIVassign 357
     339#define MODassign 358
     340#define PLUSassign 359
     341#define MINUSassign 360
     342#define LSassign 361
     343#define RSassign 362
     344#define ANDassign 363
     345#define ERassign 364
     346#define ORassign 365
     347#define ATassign 366
     348#define THEN 367
    351349
    352350
     
    378376
    379377/* Line 293 of yacc.c  */
    380 #line 381 "Parser/parser.cc"
     378#line 379 "Parser/parser.cc"
    381379} YYSTYPE;
    382380# define YYSTYPE_IS_TRIVIAL 1
     
    390388
    391389/* Line 343 of yacc.c  */
    392 #line 393 "Parser/parser.cc"
     390#line 391 "Parser/parser.cc"
    393391
    394392#ifdef short
     
    609607#define YYFINAL  251
    610608/* YYLAST -- Last index in YYTABLE.  */
    611 #define YYLAST   10466
     609#define YYLAST   10624
    612610
    613611/* YYNTOKENS -- Number of terminals.  */
    614 #define YYNTOKENS  138
     612#define YYNTOKENS  137
    615613/* YYNNTS -- Number of nonterminals.  */
    616614#define YYNNTS  243
    617615/* YYNRULES -- Number of rules.  */
    618 #define YYNRULES  758
     616#define YYNRULES  757
    619617/* YYNRULES -- Number of states.  */
    620 #define YYNSTATES  1541
     618#define YYNSTATES  1540
    621619
    622620/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    623621#define YYUNDEFTOK  2
    624 #define YYMAXUTOK   368
     622#define YYMAXUTOK   367
    625623
    626624#define YYTRANSLATE(YYX)                                                \
     
    633631       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    634632       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    635        2,     2,     2,   126,     2,     2,     2,   129,   123,     2,
    636      114,   115,   122,   124,   121,   125,   118,   128,     2,     2,
    637        2,     2,     2,     2,     2,     2,     2,     2,   135,   137,
    638      130,   136,   131,   134,     2,     2,     2,     2,     2,     2,
     633       2,     2,     2,   125,     2,     2,     2,   128,   122,     2,
     634     113,   114,   121,   123,   120,   124,   117,   127,     2,     2,
     635       2,     2,     2,     2,     2,     2,     2,     2,   134,   136,
     636     129,   135,   130,   133,     2,     2,     2,     2,     2,     2,
    639637       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    640638       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    641        2,   116,     2,   117,   132,     2,     2,     2,     2,     2,
     639       2,   115,     2,   116,   131,     2,     2,     2,     2,     2,
    642640       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    643641       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    644        2,     2,     2,   119,   133,   120,   127,     2,     2,     2,
     642       2,     2,     2,   118,   132,   119,   126,     2,     2,     2,
    645643       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    646644       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    666664      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    667665      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    668      105,   106,   107,   108,   109,   110,   111,   112,   113
     666     105,   106,   107,   108,   109,   110,   111,   112
    669667};
    670668
     
    723721    1597,  1600,  1603,  1605,  1608,  1611,  1617,  1623,  1631,  1638,
    724722    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
     723    1672,  1677,  1680,  1682,  1684,  1686,  1687,  1690,  1696,  1702,
     724    1716,  1718,  1720,  1724,  1728,  1731,  1735,  1739,  1742,  1747,
     725    1749,  1756,  1766,  1767,  1779,  1781,  1785,  1789,  1793,  1795,
     726    1797,  1803,  1806,  1812,  1813,  1815,  1817,  1821,  1822,  1824,
     727    1826,  1828,  1830,  1831,  1838,  1841,  1843,  1846,  1851,  1854,
     728    1858,  1862,  1866,  1871,  1877,  1883,  1889,  1896,  1898,  1900,
     729    1902,  1906,  1907,  1913,  1914,  1916,  1918,  1921,  1928,  1930,
     730    1934,  1935,  1937,  1942,  1944,  1946,  1948,  1950,  1953,  1955,
     731    1958,  1961,  1963,  1967,  1970,  1974,  1978,  1981,  1986,  1991,
     732    1995,  2004,  2008,  2011,  2013,  2016,  2023,  2032,  2036,  2039,
     733    2043,  2047,  2052,  2057,  2061,  2063,  2065,  2067,  2072,  2079,
     734    2083,  2086,  2090,  2094,  2099,  2104,  2108,  2111,  2113,  2116,
     735    2119,  2121,  2125,  2128,  2132,  2136,  2139,  2144,  2149,  2153,
     736    2160,  2169,  2173,  2176,  2178,  2181,  2184,  2187,  2191,  2195,
     737    2198,  2203,  2208,  2212,  2219,  2228,  2232,  2235,  2237,  2240,
     738    2243,  2245,  2247,  2250,  2254,  2258,  2261,  2266,  2273,  2282,
     739    2284,  2287,  2290,  2292,  2295,  2298,  2302,  2306,  2308,  2313,
     740    2318,  2322,  2328,  2337,  2341,  2344,  2348,  2350,  2356,  2362,
     741    2369,  2376,  2378,  2381,  2384,  2386,  2389,  2392,  2396,  2400,
     742    2402,  2407,  2412,  2416,  2422,  2431,  2435,  2437,  2440,  2442,
     743    2445,  2452,  2458,  2465,  2473,  2481,  2483,  2486,  2489,  2491,
     744    2494,  2497,  2501,  2505,  2507,  2512,  2517,  2521,  2530,  2534,
     745    2536,  2538,  2541,  2543,  2545,  2548,  2552,  2555,  2559,  2562,
     746    2566,  2570,  2573,  2578,  2582,  2585,  2589,  2592,  2597,  2601,
     747    2604,  2611,  2618,  2625,  2633,  2635,  2638,  2640,  2642,  2644,
     748    2647,  2651,  2654,  2658,  2661,  2665,  2669,  2674,  2677,  2681,
     749    2686,  2689,  2695,  2702,  2709,  2710,  2712,  2713
    752750};
    753751
     
    755753static const yytype_int16 yyrhs[] =
    756754{
    757      309,     0,    -1,    -1,    -1,    82,    -1,    85,    -1,    86,
    758       -1,    87,    -1,    83,    -1,    75,    -1,    79,    -1,   145,
    759       -1,    75,    -1,    79,    -1,    75,    -1,   145,    -1,    88,
    760       -1,    89,    -1,   147,    -1,    84,    -1,   147,    84,    -1,
    761       75,    -1,   145,    -1,   175,    -1,   114,   177,   115,    -1,
    762      114,   181,   115,    -1,   148,    -1,   149,   116,   139,   172,
    763      140,   117,    -1,   149,   114,   150,   115,    -1,   149,   118,
    764      144,    -1,   149,   118,   116,   139,   152,   140,   117,    -1,
    765      149,    86,    -1,   149,    90,   144,    -1,   149,    90,   116,
    766      139,   152,   140,   117,    -1,   149,    91,    -1,   149,    92,
    767       -1,   114,   282,   115,   119,   286,   379,   120,    -1,   149,
    768      119,   150,   120,    -1,   151,    -1,   150,   121,   151,    -1,
    769       -1,   172,    -1,   153,    -1,   152,   121,   153,    -1,   154,
    770       -1,    85,   153,    -1,    85,   116,   139,   152,   140,   117,
    771       -1,   154,   118,   153,    -1,   154,   118,   116,   139,   152,
    772      140,   117,    -1,   154,    90,   153,    -1,   154,    90,   116,
    773      139,   152,   140,   117,    -1,    82,   155,    -1,    87,   155,
    774       -1,   144,   155,    -1,    -1,   155,    86,    -1,   149,    -1,
    775      141,    -1,   146,    -1,    43,   159,    -1,   157,   159,    -1,
    776      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,
    779      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,
    782      115,   159,    -1,   159,    -1,   160,   122,   159,    -1,   160,
    783      128,   159,    -1,   160,   129,   159,    -1,   160,    -1,   161,
    784      124,   160,    -1,   161,   125,   160,    -1,   161,    -1,   162,
    785       93,   161,    -1,   162,    94,   161,    -1,   162,    -1,   163,
    786      130,   162,    -1,   163,   131,   162,    -1,   163,    95,   162,
    787       -1,   163,    96,   162,    -1,   163,    -1,   164,    97,   163,
    788       -1,   164,    98,   163,    -1,   164,    -1,   165,   123,   164,
    789       -1,   165,    -1,   166,   132,   165,    -1,   166,    -1,   167,
    790      133,   166,    -1,   167,    -1,   168,    99,   167,    -1,   168,
    791       -1,   169,   100,   168,    -1,   169,    -1,   169,   134,   177,
    792      135,   170,    -1,   169,   134,   135,   170,    -1,   170,    -1,
    793      170,    -1,   156,   174,   172,    -1,    -1,   172,    -1,   136,
    794       -1,   112,    -1,   102,    -1,   103,    -1,   104,    -1,   105,
    795       -1,   106,    -1,   107,    -1,   108,    -1,   109,    -1,   110,
    796       -1,   111,    -1,   116,   139,   121,   176,   140,   117,    -1,
    797      116,   139,   172,   121,   176,   140,   117,    -1,   173,    -1,
    798      176,   121,   173,    -1,   172,    -1,   177,   121,   172,    -1,
    799       -1,   177,    -1,   180,    -1,   181,    -1,   185,    -1,   186,
    800       -1,   198,    -1,   200,    -1,   201,    -1,   206,    -1,   132,
    801      149,   119,   150,   120,   137,    -1,    75,   135,   319,   179,
    802       -1,   119,   120,    -1,   119,   139,   139,   217,   182,   140,
    803      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,    75,   137,    -1,    54,   122,   177,   137,    -1,
    821       53,   137,    -1,    53,    75,   137,    -1,    52,   137,    -1,
    822       52,    75,   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,
     755     308,     0,    -1,    -1,    -1,    81,    -1,    84,    -1,    85,
     756      -1,    86,    -1,    82,    -1,    74,    -1,    78,    -1,   144,
     757      -1,    74,    -1,    78,    -1,    74,    -1,   144,    -1,    87,
     758      -1,    88,    -1,   146,    -1,    83,    -1,   146,    83,    -1,
     759      74,    -1,   144,    -1,   174,    -1,   113,   176,   114,    -1,
     760     113,   180,   114,    -1,   147,    -1,   148,   115,   138,   171,
     761     139,   116,    -1,   148,   113,   149,   114,    -1,   148,   117,
     762     143,    -1,   148,   117,   115,   138,   151,   139,   116,    -1,
     763     148,    85,    -1,   148,    89,   143,    -1,   148,    89,   115,
     764     138,   151,   139,   116,    -1,   148,    90,    -1,   148,    91,
     765      -1,   113,   281,   114,   118,   285,   378,   119,    -1,   148,
     766     118,   149,   119,    -1,   150,    -1,   149,   120,   150,    -1,
     767      -1,   171,    -1,   152,    -1,   151,   120,   152,    -1,   153,
     768      -1,    84,   152,    -1,    84,   115,   138,   151,   139,   116,
     769      -1,   153,   117,   152,    -1,   153,   117,   115,   138,   151,
     770     139,   116,    -1,   153,    89,   152,    -1,   153,    89,   115,
     771     138,   151,   139,   116,    -1,    81,   154,    -1,    86,   154,
     772      -1,   143,   154,    -1,    -1,   154,    85,    -1,   148,    -1,
     773     140,    -1,   145,    -1,    42,   158,    -1,   156,   158,    -1,
     774     157,   158,    -1,    90,   155,    -1,    91,   155,    -1,    39,
     775     155,    -1,    39,   113,   281,   114,    -1,    68,   155,    -1,
     776      68,   113,   281,   114,    -1,    40,   113,   281,   120,   143,
     777     114,    -1,    78,    -1,    78,   113,   150,   114,    -1,    78,
     778     113,   282,   114,    -1,   121,    -1,   122,    -1,   123,    -1,
     779     124,    -1,   125,    -1,   126,    -1,   155,    -1,   113,   281,
     780     114,   158,    -1,   158,    -1,   159,   121,   158,    -1,   159,
     781     127,   158,    -1,   159,   128,   158,    -1,   159,    -1,   160,
     782     123,   159,    -1,   160,   124,   159,    -1,   160,    -1,   161,
     783      92,   160,    -1,   161,    93,   160,    -1,   161,    -1,   162,
     784     129,   161,    -1,   162,   130,   161,    -1,   162,    94,   161,
     785      -1,   162,    95,   161,    -1,   162,    -1,   163,    96,   162,
     786      -1,   163,    97,   162,    -1,   163,    -1,   164,   122,   163,
     787      -1,   164,    -1,   165,   131,   164,    -1,   165,    -1,   166,
     788     132,   165,    -1,   166,    -1,   167,    98,   166,    -1,   167,
     789      -1,   168,    99,   167,    -1,   168,    -1,   168,   133,   176,
     790     134,   169,    -1,   168,   133,   134,   169,    -1,   169,    -1,
     791     169,    -1,   155,   173,   171,    -1,    -1,   171,    -1,   135,
     792      -1,   111,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
     793      -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,   109,
     794      -1,   110,    -1,   115,   138,   120,   175,   139,   116,    -1,
     795     115,   138,   171,   120,   175,   139,   116,    -1,   172,    -1,
     796     175,   120,   172,    -1,   171,    -1,   176,   120,   171,    -1,
     797      -1,   176,    -1,   179,    -1,   180,    -1,   184,    -1,   185,
     798      -1,   197,    -1,   199,    -1,   200,    -1,   205,    -1,   131,
     799     148,   118,   149,   119,   136,    -1,    74,   134,   318,   178,
     800      -1,   118,   119,    -1,   118,   138,   138,   216,   181,   139,
     801     119,    -1,   182,    -1,   181,   138,   182,    -1,   219,    -1,
     802      42,   219,    -1,   314,    -1,   178,   139,    -1,   178,    -1,
     803     183,   178,    -1,   177,   136,    -1,    43,   113,   176,   114,
     804     178,    -1,    43,   113,   176,   114,   178,    44,   178,    -1,
     805      45,   113,   176,   114,   190,    -1,    45,   113,   176,   114,
     806     118,   138,   212,   191,   119,    -1,    55,   113,   176,   114,
     807     190,    -1,    55,   113,   176,   114,   118,   138,   212,   193,
     808     119,    -1,   170,    -1,   170,   100,   170,    -1,   316,    -1,
     809     186,    -1,   187,   120,   186,    -1,    46,   187,   134,    -1,
     810      47,   134,    -1,   188,    -1,   189,   188,    -1,   189,   178,
     811      -1,    -1,   192,    -1,   189,   183,    -1,   192,   189,   183,
     812      -1,    -1,   194,    -1,   189,   196,    -1,   189,   183,   195,
     813      -1,   194,   189,   196,    -1,   194,   189,   183,   195,    -1,
     814      -1,   196,    -1,    58,    -1,    58,   136,    -1,    49,   113,
     815     176,   114,   178,    -1,    48,   178,    49,   113,   176,   114,
     816     136,    -1,    50,   113,   138,   198,   114,   178,    -1,   177,
     817     139,   136,   177,   136,   177,    -1,   219,   177,   136,   177,
     818      -1,    53,    74,   136,    -1,    53,   121,   176,   136,    -1,
     819      52,   136,    -1,    52,    74,   136,    -1,    51,   136,    -1,
     820      51,    74,   136,    -1,    54,   177,   136,    -1,    63,   172,
     821     136,    -1,    64,   172,   136,    -1,    64,   172,    65,   171,
     822     136,    -1,    59,   180,   201,    -1,    59,   180,   203,    -1,
     823      59,   180,   201,   203,    -1,   202,    -1,    60,   113,   100,
     824     114,   180,    -1,   202,    60,   113,   100,   114,   180,    -1,
     825      61,   113,   100,   114,   180,    -1,   202,    61,   113,   100,
     826     114,   180,    -1,    60,   113,   138,   138,   204,   139,   114,
     827     180,   139,    -1,   202,    60,   113,   138,   138,   204,   139,
     828     114,   180,   139,    -1,    61,   113,   138,   138,   204,   139,
     829     114,   180,   139,    -1,   202,    61,   113,   138,   138,   204,
     830     139,   114,   180,   139,    -1,    62,   180,    -1,   232,    -1,
     831     232,   315,    -1,   232,   363,    -1,   372,   143,    -1,   372,
     832      -1,    66,   206,   113,   145,   114,   136,    -1,    66,   206,
     833     113,   145,   134,   207,   114,   136,    -1,    66,   206,   113,
     834     145,   134,   207,   134,   207,   114,   136,    -1,    66,   206,
     835     113,   145,   134,   207,   134,   207,   134,   210,   114,   136,
     836      -1,    66,   206,    53,   113,   145,   134,   134,   207,   134,
     837     210,   134,   211,   114,   136,    -1,    -1,    11,    -1,    -1,
     838     208,    -1,   209,    -1,   208,   120,   209,    -1,   145,   113,
     839     170,   114,    -1,   115,   170,   116,   145,   113,   170,   114,
     840      -1,    -1,   145,    -1,   210,   120,   145,    -1,   143,    -1,
     841     211,   120,   143,    -1,   139,    -1,   213,    -1,   219,    -1,
     842     213,   138,   219,    -1,   139,    -1,   215,    -1,   229,    -1,
     843     215,   138,   229,    -1,    -1,   217,    -1,    31,   218,   136,
     844      -1,   217,    31,   218,   136,    -1,   280,    -1,   218,   120,
     845     280,    -1,   220,    -1,   229,    -1,   221,   139,   136,    -1,
     846     226,   139,   136,    -1,   223,   139,   136,    -1,   299,   139,
     847     136,    -1,   302,   139,   136,    -1,   222,   283,    -1,   238,
     848     222,   283,    -1,   221,   139,   120,   138,   278,   283,    -1,
     849     373,   278,   317,    -1,   376,   278,   317,    -1,   234,   376,
     850     278,   317,    -1,   224,    -1,   234,   224,    -1,   238,   224,
     851      -1,   238,   234,   224,    -1,   223,   139,   120,   138,   278,
     852      -1,   376,   278,   113,   138,   266,   139,   114,    -1,   225,
     853     278,   113,   138,   266,   139,   114,    -1,   115,   138,   268,
     854     139,   116,    -1,   115,   138,   268,   139,   120,   138,   269,
     855     139,   116,    -1,     3,   222,    -1,     3,   224,    -1,   226,
     856     139,   120,   138,   143,    -1,     3,   232,   315,    -1,   227,
     857     139,   120,   138,   315,    -1,   234,     3,   232,   315,    -1,
     858     232,     3,   315,    -1,   232,     3,   234,   315,    -1,     3,
     859     143,   135,   171,    -1,   228,   139,   120,   138,   143,   135,
     860     171,    -1,   230,   139,   136,    -1,   227,   139,   136,    -1,
     861     228,   139,   136,    -1,   246,   139,   136,    -1,   231,   315,
     862     317,   283,    -1,   230,   120,   318,   315,   317,   283,    -1,
     863     242,    -1,   246,    -1,   248,    -1,   289,    -1,   243,    -1,
     864     247,    -1,   249,    -1,   290,    -1,    -1,   234,    -1,   235,
     865      -1,   234,   235,    -1,   236,    -1,   320,    -1,    10,    -1,
     866      12,    -1,    11,    -1,    14,    -1,    69,    -1,    -1,    13,
     867     113,   237,   292,   114,    -1,   239,    -1,   234,   239,    -1,
     868     238,   234,   239,    -1,   240,    -1,   239,   240,    -1,     5,
    871869      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    872       -1,    72,    -1,    74,    -1,    16,    -1,    21,    -1,    20,
     870      -1,    71,    -1,    73,    -1,    16,    -1,    21,    -1,    20,
    873871      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    874872      -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,   178,   115,    -1,   279,    -1,   241,    -1,   242,    -1,
    952      236,    -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,
    1002      122,   140,   117,    -1,   116,   139,   235,   140,   117,    -1,
    1003      116,   139,   235,   172,   140,   117,    -1,   116,   139,     7,
    1004      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
     873      -1,    24,    -1,    25,    -1,   243,    -1,   238,   243,    -1,
     874     242,   240,    -1,   242,   240,   234,    -1,   242,   240,   243,
     875      -1,   244,    -1,   233,   245,   233,    -1,   241,    -1,   234,
     876     241,    -1,   244,   235,    -1,   244,   241,    -1,    30,   113,
     877     282,   114,    -1,    30,   113,   176,   114,    -1,    80,   113,
     878     282,   114,    -1,    80,   113,   176,   114,    -1,   247,    -1,
     879     238,   247,    -1,   246,   240,    -1,   246,   240,   234,    -1,
     880     250,    -1,   234,   250,    -1,   247,   235,    -1,   249,    -1,
     881     238,   249,    -1,   248,   240,    -1,   248,   240,   234,    -1,
     882      76,    -1,   234,    76,    -1,   249,   235,    -1,   251,    -1,
     883     262,    -1,   253,   118,   254,   119,    -1,   253,   280,    -1,
     884      -1,   253,   280,   252,   118,   254,   119,    -1,   253,   113,
     885     298,   114,   118,   254,   119,    -1,   253,   291,    -1,    33,
     886     318,    -1,    34,   318,    -1,    -1,   254,   255,    -1,   256,
     887     136,    -1,    42,   256,   136,    -1,   257,   136,    -1,    42,
     888     257,   136,    -1,   372,    -1,   372,   280,    -1,   256,   120,
     889     280,    -1,   256,   120,    -1,   232,   258,    -1,   257,   120,
     890     318,   258,    -1,    -1,   260,    -1,   324,   259,    -1,   337,
     891     259,    -1,   363,    -1,    -1,   260,    -1,   134,   170,    -1,
     892      32,   318,    -1,   261,   118,   264,   378,   119,    -1,   261,
     893     280,    -1,    -1,   261,   280,   263,   118,   264,   378,   119,
     894      -1,   280,   265,    -1,   264,   120,   280,   265,    -1,    -1,
     895     135,   170,    -1,    -1,   267,    -1,   269,    -1,   268,    -1,
     896     268,   139,   120,   138,   269,    -1,   269,   139,   120,   138,
     897     100,    -1,   268,   139,   120,   138,   100,    -1,   273,    -1,
     898     269,   139,   120,   138,   273,    -1,   268,   139,   120,   138,
     899     273,    -1,   268,   139,   120,   138,   269,   139,   120,   138,
     900     273,    -1,   274,    -1,   269,   139,   120,   138,   274,    -1,
     901      -1,   271,    -1,   272,    -1,   272,   139,   120,   138,   100,
     902      -1,   276,    -1,   275,    -1,   272,   139,   120,   138,   276,
     903      -1,   272,   139,   120,   138,   275,    -1,   275,    -1,   368,
     904     278,   379,    -1,   376,   278,   379,    -1,   234,   376,   278,
     905     379,    -1,   224,    -1,   276,    -1,   368,    -1,   376,    -1,
     906     234,   376,    -1,   377,    -1,   231,   342,   379,    -1,   231,
     907     346,   379,    -1,   231,    -1,   231,   357,    -1,   143,    -1,
     908     277,   120,   143,    -1,   141,    -1,    76,    -1,    77,    -1,
     909     142,    -1,    76,    -1,    77,    -1,   143,    -1,    76,    -1,
     910      77,    -1,   372,    -1,   232,    -1,   232,   363,    -1,   372,
     911      -1,   377,    -1,   232,    -1,   232,   351,    -1,    -1,   135,
     912     284,    -1,   111,   284,    -1,   171,    -1,   118,   285,   378,
     913     119,    -1,    -1,   284,    -1,   286,   284,    -1,   285,   120,
     914     284,    -1,   285,   120,   286,   284,    -1,   287,   134,    -1,
     915     280,   134,    -1,   288,    -1,   287,   288,    -1,   117,   280,
     916      -1,   115,   138,   171,   139,   116,    -1,   115,   138,   316,
     917     139,   116,    -1,   115,   138,   170,   100,   170,   139,   116,
     918      -1,   117,   115,   138,   151,   139,   116,    -1,   290,    -1,
     919     238,   290,    -1,   289,   240,    -1,   289,   240,   234,    -1,
     920     291,    -1,   234,   291,    -1,   290,   235,    -1,    77,   113,
     921     298,   114,    -1,   293,   379,    -1,   292,   120,   293,   379,
     922      -1,    -1,   295,   280,   294,   296,    -1,   232,   342,    -1,
     923      35,    -1,    37,    -1,    36,    -1,    -1,   296,   297,    -1,
     924     132,   280,   113,   298,   114,    -1,   132,   118,   138,   304,
     925     119,    -1,   132,   113,   138,   292,   139,   114,   118,   138,
     926     304,   119,   113,   298,   114,    -1,   282,    -1,   171,    -1,
     927     298,   120,   282,    -1,   298,   120,   171,    -1,    35,   300,
     928      -1,   239,    35,   300,    -1,   299,   120,   300,    -1,   301,
     929     296,    -1,   301,   296,   135,   282,    -1,   280,    -1,   279,
     930     113,   138,   292,   139,   114,    -1,    38,   280,   113,   138,
     931     292,   139,   114,   118,   119,    -1,    -1,    38,   280,   113,
     932     138,   292,   139,   114,   118,   303,   304,   119,    -1,   305,
     933      -1,   304,   138,   305,    -1,   306,   139,   136,    -1,   307,
     934     139,   136,    -1,   222,    -1,   224,    -1,   306,   139,   120,
     935     138,   278,    -1,   232,   315,    -1,   307,   139,   120,   138,
     936     315,    -1,    -1,   309,    -1,   311,    -1,   309,   138,   311,
     937      -1,    -1,   309,    -1,   219,    -1,   313,    -1,   205,    -1,
     938      -1,     5,    83,   312,   118,   310,   119,    -1,    42,   311,
     939      -1,   314,    -1,   329,   180,    -1,   333,   138,   214,   180,
     940      -1,   223,   180,    -1,   231,   329,   180,    -1,   234,   329,
     941     180,    -1,   238,   329,   180,    -1,   238,   234,   329,   180,
     942      -1,   231,   333,   138,   214,   180,    -1,   234,   333,   138,
     943     214,   180,    -1,   238,   333,   138,   214,   180,    -1,   238,
     944     234,   333,   138,   214,   180,    -1,   324,    -1,   337,    -1,
     945     329,    -1,   170,   126,   170,    -1,    -1,    66,   113,   145,
     946     114,   318,    -1,    -1,   319,    -1,   320,    -1,   319,   320,
     947      -1,    41,   113,   113,   321,   114,   114,    -1,   322,    -1,
     948     321,   120,   322,    -1,    -1,   323,    -1,   323,   113,   177,
     949     114,    -1,   278,    -1,   240,    -1,   241,    -1,   235,    -1,
     950     325,   318,    -1,   326,    -1,   327,   318,    -1,   328,   318,
     951      -1,   141,    -1,   113,   325,   114,    -1,   156,   324,    -1,
     952     156,   234,   324,    -1,   113,   326,   114,    -1,   325,   355,
     953      -1,   113,   326,   114,   355,    -1,   113,   327,   114,   356,
     954      -1,   113,   327,   114,    -1,   113,   326,   114,   113,   138,
     955     270,   139,   114,    -1,   113,   328,   114,    -1,   330,   318,
     956      -1,   331,    -1,   332,   318,    -1,   325,   113,   138,   270,
     957     139,   114,    -1,   113,   331,   114,   113,   138,   270,   139,
     958     114,    -1,   113,   330,   114,    -1,   156,   329,    -1,   156,
     959     234,   329,    -1,   113,   331,   114,    -1,   113,   331,   114,
     960     355,    -1,   113,   332,   114,   356,    -1,   113,   332,   114,
     961      -1,   334,    -1,   335,    -1,   336,    -1,   325,   113,   277,
     962     114,    -1,   113,   335,   114,   113,   277,   114,    -1,   113,
     963     334,   114,    -1,   156,   333,    -1,   156,   234,   333,    -1,
     964     113,   335,   114,    -1,   113,   335,   114,   355,    -1,   113,
     965     336,   114,   356,    -1,   113,   336,   114,    -1,   338,   318,
     966      -1,   339,    -1,   340,   318,    -1,   341,   318,    -1,   347,
     967      -1,   113,   338,   114,    -1,   156,   337,    -1,   156,   234,
     968     337,    -1,   113,   339,   114,    -1,   338,   355,    -1,   113,
     969     339,   114,   355,    -1,   113,   340,   114,   356,    -1,   113,
     970     340,   114,    -1,   338,   113,   138,   270,   139,   114,    -1,
     971     113,   339,   114,   113,   138,   270,   139,   114,    -1,   113,
     972     341,   114,    -1,   325,   318,    -1,   343,    -1,   344,   318,
     973      -1,   345,   318,    -1,   156,   342,    -1,   156,   234,   342,
     974      -1,   113,   343,   114,    -1,   325,   361,    -1,   113,   343,
     975     114,   355,    -1,   113,   344,   114,   356,    -1,   113,   344,
     976     114,    -1,   325,   113,   138,   270,   139,   114,    -1,   113,
     977     343,   114,   113,   138,   270,   139,   114,    -1,   113,   345,
     978     114,    -1,   347,   318,    -1,   348,    -1,   349,   318,    -1,
     979     350,   318,    -1,    76,    -1,    77,    -1,   156,   346,    -1,
     980     156,   234,   346,    -1,   113,   348,   114,    -1,   347,   361,
     981      -1,   113,   348,   114,   361,    -1,   347,   113,   138,   270,
     982     139,   114,    -1,   113,   348,   114,   113,   138,   270,   139,
     983     114,    -1,   352,    -1,   353,   318,    -1,   354,   318,    -1,
     984     156,    -1,   156,   234,    -1,   156,   351,    -1,   156,   234,
     985     351,    -1,   113,   352,   114,    -1,   355,    -1,   113,   352,
     986     114,   355,    -1,   113,   353,   114,   356,    -1,   113,   353,
     987     114,    -1,   113,   138,   270,   139,   114,    -1,   113,   352,
     988     114,   113,   138,   270,   139,   114,    -1,   113,   354,   114,
     989      -1,   115,   116,    -1,   115,   116,   356,    -1,   356,    -1,
     990     115,   138,   171,   139,   116,    -1,   115,   138,   121,   139,
     991     116,    -1,   356,   115,   138,   171,   139,   116,    -1,   356,
     992     115,   138,   121,   139,   116,    -1,   358,    -1,   359,   318,
     993      -1,   360,   318,    -1,   156,    -1,   156,   234,    -1,   156,
     994     357,    -1,   156,   234,   357,    -1,   113,   358,   114,    -1,
     995     361,    -1,   113,   358,   114,   361,    -1,   113,   359,   114,
     996     356,    -1,   113,   359,   114,    -1,   113,   138,   270,   139,
     997     114,    -1,   113,   358,   114,   113,   138,   270,   139,   114,
     998      -1,   113,   360,   114,    -1,   362,    -1,   362,   356,    -1,
     999     356,    -1,   115,   116,    -1,   115,   138,   234,   121,   139,
     1000     116,    -1,   115,   138,   234,   139,   116,    -1,   115,   138,
     1001     234,   171,   139,   116,    -1,   115,   138,     7,   233,   171,
     1002     139,   116,    -1,   115,   138,   234,     7,   171,   139,   116,
     1003      -1,   364,    -1,   365,   318,    -1,   366,   318,    -1,   156,
     1004      -1,   156,   234,    -1,   156,   363,    -1,   156,   234,   363,
     1005      -1,   113,   364,   114,    -1,   355,    -1,   113,   364,   114,
     1006     355,    -1,   113,   365,   114,   356,    -1,   113,   365,   114,
     1007      -1,   113,   364,   114,   113,   138,   270,   139,   114,    -1,
     1008     113,   366,   114,    -1,   368,    -1,   376,    -1,   234,   376,
     1009      -1,   369,    -1,   370,    -1,   156,   232,    -1,   234,   156,
     1010     232,    -1,   156,   377,    -1,   234,   156,   377,    -1,   156,
     1011     367,    -1,   234,   156,   367,    -1,   115,   116,   232,    -1,
     1012     371,   232,    -1,   115,   116,   356,   232,    -1,   371,   356,
     1013     232,    -1,   356,   232,    -1,   115,   116,   369,    -1,   371,
     1014     369,    -1,   115,   116,   356,   369,    -1,   371,   356,   369,
     1015      -1,   356,   369,    -1,   115,   138,   234,   121,   139,   116,
     1016      -1,   115,   138,   234,   171,   139,   116,    -1,   115,   138,
     1017     238,   171,   139,   116,    -1,   115,   138,   238,   234,   171,
     1018     139,   116,    -1,   376,    -1,   234,   376,    -1,   373,    -1,
     1019     374,    -1,   375,    -1,   156,   232,    -1,   234,   156,   232,
     1020      -1,   156,   377,    -1,   234,   156,   377,    -1,   156,   372,
     1021      -1,   234,   156,   372,    -1,   115,   116,   232,    -1,   115,
     1022     116,   356,   232,    -1,   356,   232,    -1,   115,   116,   374,
     1023      -1,   115,   116,   356,   374,    -1,   356,   374,    -1,   115,
     1024     138,   269,   139,   116,    -1,   376,   113,   138,   266,   139,
     1025     114,    -1,   225,   113,   138,   266,   139,   114,    -1,    -1,
     1026     120,    -1,    -1,   135,   171,    -1
    10291027};
    10301028
     
    10811079    1810,  1811,  1816,  1817,  1823,  1825,  1828,  1830,  1832,  1855,
    10821080    1856,  1858,  1860,  1865,  1866,  1868,  1873,  1878,  1879,  1885,
    1083     1884,  1888,  1892,  1894,  1896,  1898,  1904,  1905,  1910,  1915,
    1084     1917,  1922,  1924,  1925,  1927,  1932,  1934,  1936,  1941,  1943,
    1085     1948,  1953,  1961,  1967,  1966,  1980,  1981,  1986,  1987,  1991,
    1086     1996,  2001,  2009,  2014,  2025,  2026,  2031,  2032,  2038,  2039,
    1087     2043,  2044,  2045,  2048,  2047,  2058,  2067,  2073,  2079,  2088,
    1088     2094,  2100,  2106,  2112,  2120,  2126,  2134,  2140,  2149,  2150,
    1089     2151,  2155,  2161,  2162,  2168,  2169,  2173,  2174,  2179,  2185,
    1090     2186,  2189,  2191,  2192,  2196,  2197,  2198,  2199,  2233,  2235,
    1091     2236,  2238,  2243,  2248,  2253,  2255,  2257,  2262,  2264,  2266,
    1092     2268,  2273,  2275,  2284,  2286,  2287,  2292,  2294,  2296,  2301,
    1093     2303,  2305,  2310,  2312,  2314,  2323,  2324,  2325,  2329,  2331,
    1094     2333,  2338,  2340,  2342,  2347,  2349,  2351,  2366,  2368,  2369,
    1095     2371,  2376,  2377,  2382,  2384,  2386,  2391,  2393,  2395,  2397,
    1096     2402,  2404,  2406,  2416,  2418,  2419,  2421,  2426,  2428,  2430,
    1097     2435,  2437,  2439,  2441,  2446,  2448,  2450,  2481,  2483,  2484,
    1098     2486,  2491,  2496,  2504,  2506,  2508,  2513,  2515,  2520,  2522,
    1099     2536,  2537,  2539,  2544,  2546,  2548,  2550,  2552,  2557,  2558,
    1100     2560,  2562,  2567,  2569,  2571,  2577,  2579,  2581,  2585,  2587,
    1101     2589,  2591,  2605,  2606,  2608,  2613,  2615,  2617,  2619,  2621,
    1102     2626,  2627,  2629,  2631,  2636,  2638,  2640,  2646,  2647,  2649,
    1103     2658,  2661,  2663,  2666,  2668,  2670,  2683,  2684,  2686,  2691,
    1104     2693,  2695,  2697,  2699,  2704,  2705,  2707,  2709,  2714,  2716,
    1105     2724,  2725,  2726,  2731,  2732,  2736,  2738,  2740,  2742,  2744,
    1106     2746,  2753,  2755,  2757,  2759,  2761,  2764,  2766,  2768,  2770,
    1107     2772,  2777,  2779,  2781,  2786,  2812,  2813,  2815,  2819,  2820,
    1108     2824,  2826,  2828,  2830,  2832,  2834,  2841,  2843,  2845,  2847,
    1109     2849,  2851,  2856,  2863,  2865,  2883,  2885,  2890,  2891
     1081    1884,  1888,  1892,  1894,  1896,  1902,  1903,  1908,  1913,  1915,
     1082    1920,  1922,  1923,  1925,  1930,  1932,  1934,  1939,  1941,  1946,
     1083    1951,  1959,  1965,  1964,  1978,  1979,  1984,  1985,  1989,  1994,
     1084    1999,  2007,  2012,  2023,  2024,  2029,  2030,  2036,  2037,  2041,
     1085    2042,  2043,  2046,  2045,  2056,  2065,  2071,  2077,  2086,  2092,
     1086    2098,  2104,  2110,  2118,  2124,  2132,  2138,  2147,  2148,  2149,
     1087    2153,  2159,  2160,  2166,  2167,  2171,  2172,  2177,  2183,  2184,
     1088    2187,  2189,  2190,  2194,  2195,  2196,  2197,  2231,  2233,  2234,
     1089    2236,  2241,  2246,  2251,  2253,  2255,  2260,  2262,  2264,  2266,
     1090    2271,  2273,  2282,  2284,  2285,  2290,  2292,  2294,  2299,  2301,
     1091    2303,  2308,  2310,  2312,  2321,  2322,  2323,  2327,  2329,  2331,
     1092    2336,  2338,  2340,  2345,  2347,  2349,  2364,  2366,  2367,  2369,
     1093    2374,  2375,  2380,  2382,  2384,  2389,  2391,  2393,  2395,  2400,
     1094    2402,  2404,  2414,  2416,  2417,  2419,  2424,  2426,  2428,  2433,
     1095    2435,  2437,  2439,  2444,  2446,  2448,  2479,  2481,  2482,  2484,
     1096    2489,  2494,  2502,  2504,  2506,  2511,  2513,  2518,  2520,  2534,
     1097    2535,  2537,  2542,  2544,  2546,  2548,  2550,  2555,  2556,  2558,
     1098    2560,  2565,  2567,  2569,  2575,  2577,  2579,  2583,  2585,  2587,
     1099    2589,  2603,  2604,  2606,  2611,  2613,  2615,  2617,  2619,  2624,
     1100    2625,  2627,  2629,  2634,  2636,  2638,  2644,  2645,  2647,  2656,
     1101    2659,  2661,  2664,  2666,  2668,  2681,  2682,  2684,  2689,  2691,
     1102    2693,  2695,  2697,  2702,  2703,  2705,  2707,  2712,  2714,  2722,
     1103    2723,  2724,  2729,  2730,  2734,  2736,  2738,  2740,  2742,  2744,
     1104    2751,  2753,  2755,  2757,  2759,  2762,  2764,  2766,  2768,  2770,
     1105    2775,  2777,  2779,  2784,  2810,  2811,  2813,  2817,  2818,  2822,
     1106    2824,  2826,  2828,  2830,  2832,  2839,  2841,  2843,  2845,  2847,
     1107    2849,  2854,  2861,  2863,  2881,  2883,  2888,  2889
    11101108};
    11111109#endif
     
    11211119  "SIGNED", "UNSIGNED", "ZERO_T", "ONE_T", "VALIST", "BOOL", "COMPLEX",
    11221120  "IMAGINARY", "TYPEOF", "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE",
    1123   "FTYPE", "DTYPE", "TTYPE", "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE",
     1121  "FTYPE", "DTYPE", "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE",
    11241122  "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "DO", "WHILE",
    11251123  "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE", "DISABLE",
     
    12421240     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    12431241     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
    1244      365,   366,   367,   368,    40,    41,    91,    93,    46,   123,
    1245      125,    44,    42,    38,    43,    45,    33,   126,    47,    37,
    1246       60,    62,    94,   124,    63,    58,    61,    59
     1242     365,   366,   367,    40,    41,    91,    93,    46,   123,   125,
     1243      44,    42,    38,    43,    45,    33,   126,    47,    37,    60,
     1244      62,    94,   124,    63,    58,    61,    59
    12471245};
    12481246# endif
     
    12511249static const yytype_uint16 yyr1[] =
    12521250{
    1253        0,   138,   139,   140,   141,   141,   141,   141,   141,   142,
    1254      142,   142,   143,   143,   144,   144,   145,   145,   146,   147,
    1255      147,   148,   148,   148,   148,   148,   149,   149,   149,   149,
    1256      149,   149,   149,   149,   149,   149,   149,   149,   150,   150,
    1257      151,   151,   152,   152,   153,   153,   153,   153,   153,   153,
    1258      153,   154,   154,   154,   155,   155,   156,   156,   156,   156,
    1259      156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
    1260      156,   156,   157,   157,   158,   158,   158,   158,   159,   159,
    1261      160,   160,   160,   160,   161,   161,   161,   162,   162,   162,
    1262      163,   163,   163,   163,   163,   164,   164,   164,   165,   165,
    1263      166,   166,   167,   167,   168,   168,   169,   169,   170,   170,
    1264      170,   171,   172,   172,   173,   173,   174,   174,   174,   174,
    1265      174,   174,   174,   174,   174,   174,   174,   174,   175,   175,
    1266      176,   176,   177,   177,   178,   178,   179,   179,   179,   179,
    1267      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,
    1305      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
     1251       0,   137,   138,   139,   140,   140,   140,   140,   140,   141,
     1252     141,   141,   142,   142,   143,   143,   144,   144,   145,   146,
     1253     146,   147,   147,   147,   147,   147,   148,   148,   148,   148,
     1254     148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
     1255     150,   150,   151,   151,   152,   152,   152,   152,   152,   152,
     1256     152,   153,   153,   153,   154,   154,   155,   155,   155,   155,
     1257     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
     1258     155,   155,   156,   156,   157,   157,   157,   157,   158,   158,
     1259     159,   159,   159,   159,   160,   160,   160,   161,   161,   161,
     1260     162,   162,   162,   162,   162,   163,   163,   163,   164,   164,
     1261     165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
     1262     169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
     1263     173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
     1264     175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
     1265     178,   178,   178,   178,   178,   179,   180,   180,   181,   181,
     1266     182,   182,   182,   182,   183,   183,   184,   185,   185,   185,
     1267     185,   185,   185,   186,   186,   186,   187,   187,   188,   188,
     1268     189,   189,   190,   191,   191,   192,   192,   193,   193,   194,
     1269     194,   194,   194,   195,   195,   196,   196,   197,   197,   197,
     1270     198,   198,   199,   199,   199,   199,   199,   199,   199,   199,
     1271     199,   199,   200,   200,   200,   201,   201,   201,   201,   201,
     1272     202,   202,   202,   202,   203,   204,   204,   204,   204,   204,
     1273     205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
     1274     208,   209,   209,   210,   210,   210,   211,   211,   212,   212,
     1275     213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
     1276     218,   218,   219,   219,   220,   220,   220,   220,   220,   221,
     1277     221,   221,   222,   222,   222,   223,   223,   223,   223,   223,
     1278     224,   224,   225,   225,   226,   226,   226,   227,   227,   227,
     1279     227,   227,   228,   228,   229,   229,   229,   229,   230,   230,
     1280     231,   231,   231,   231,   232,   232,   232,   232,   233,   233,
     1281     234,   234,   235,   235,   236,   236,   236,   236,   236,   237,
     1282     236,   238,   238,   238,   239,   239,   240,   240,   240,   240,
     1283     240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
     1284     241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
     1285     242,   242,   242,   242,   243,   243,   244,   244,   244,   244,
     1286     245,   245,   245,   245,   246,   246,   246,   246,   247,   247,
     1287     247,   248,   248,   248,   248,   249,   249,   249,   250,   250,
     1288     251,   251,   252,   251,   251,   251,   253,   253,   254,   254,
     1289     255,   255,   255,   255,   256,   256,   256,   256,   257,   257,
     1290     258,   258,   258,   258,   258,   259,   259,   260,   261,   262,
     1291     262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
     1292     267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
     1293     270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
     1294     273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
     1295     276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
     1296     280,   280,   280,   281,   281,   281,   282,   282,   282,   282,
     1297     283,   283,   283,   284,   284,   285,   285,   285,   285,   285,
     1298     286,   286,   287,   287,   288,   288,   288,   288,   288,   289,
     1299     289,   289,   289,   290,   290,   290,   291,   292,   292,   294,
     1300     293,   293,   295,   295,   295,   296,   296,   297,   297,   297,
     1301     298,   298,   298,   298,   299,   299,   299,   300,   300,   301,
     1302     301,   302,   303,   302,   304,   304,   305,   305,   306,   306,
     1303     306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
     1304     311,   311,   312,   311,   311,   313,   313,   313,   314,   314,
     1305     314,   314,   314,   314,   314,   314,   314,   315,   315,   315,
     1306     316,   317,   317,   318,   318,   319,   319,   320,   321,   321,
     1307     322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
     1308     324,   325,   325,   326,   326,   326,   327,   327,   327,   327,
     1309     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
     1310     331,   332,   332,   332,   333,   333,   333,   334,   334,   334,
     1311     335,   335,   335,   336,   336,   336,   337,   337,   337,   337,
     1312     338,   338,   339,   339,   339,   340,   340,   340,   340,   341,
     1313     341,   341,   342,   342,   342,   342,   343,   343,   343,   344,
     1314     344,   344,   344,   345,   345,   345,   346,   346,   346,   346,
     1315     347,   347,   348,   348,   348,   349,   349,   350,   350,   351,
     1316     351,   351,   352,   352,   352,   352,   352,   353,   353,   353,
     1317     353,   354,   354,   354,   355,   355,   355,   356,   356,   356,
     1318     356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
     1319     359,   359,   359,   360,   360,   360,   361,   361,   361,   362,
     1320     362,   362,   362,   362,   362,   363,   363,   363,   364,   364,
     1321     364,   364,   364,   365,   365,   365,   365,   366,   366,   367,
     1322     367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
     1323     370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
     1324     371,   371,   371,   371,   372,   372,   372,   373,   373,   374,
     1325     374,   374,   374,   374,   374,   375,   375,   375,   375,   375,
     1326     375,   376,   377,   377,   378,   378,   379,   379
    13291327};
    13301328
     
    13811379       2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
    13821380       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,
     1381       4,     2,     1,     1,     1,     0,     2,     5,     5,    13,
     1382       1,     1,     3,     3,     2,     3,     3,     2,     4,     1,
     1383       6,     9,     0,    11,     1,     3,     3,     3,     1,     1,
     1384       5,     2,     5,     0,     1,     1,     3,     0,     1,     1,
     1385       1,     1,     0,     6,     2,     1,     2,     4,     2,     3,
     1386       3,     3,     4,     5,     5,     5,     6,     1,     1,     1,
     1387       3,     0,     5,     0,     1,     1,     2,     6,     1,     3,
     1388       0,     1,     4,     1,     1,     1,     1,     2,     1,     2,
    13951389       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
     1390       8,     3,     2,     1,     2,     6,     8,     3,     2,     3,
     1391       3,     4,     4,     3,     1,     1,     1,     4,     6,     3,
     1392       2,     3,     3,     4,     4,     3,     2,     1,     2,     2,
     1393       1,     3,     2,     3,     3,     2,     4,     4,     3,     6,
     1394       8,     3,     2,     1,     2,     2,     2,     3,     3,     2,
     1395       4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
     1396       1,     1,     2,     3,     3,     2,     4,     6,     8,     1,
     1397       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
     1398       3,     5,     8,     3,     2,     3,     1,     5,     5,     6,
     1399       6,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1400       4,     4,     3,     5,     8,     3,     1,     2,     1,     2,
     1401       6,     5,     6,     7,     7,     1,     2,     2,     1,     2,
     1402       2,     3,     3,     1,     4,     4,     3,     8,     3,     1,
     1403       1,     2,     1,     1,     2,     3,     2,     3,     2,     3,
     1404       3,     2,     4,     3,     2,     3,     2,     4,     3,     2,
     1405       6,     6,     6,     7,     1,     2,     1,     1,     1,     2,
     1406       3,     2,     3,     2,     3,     3,     4,     2,     3,     4,
     1407       2,     5,     6,     6,     0,     1,     0,     2
    14101408};
    14111409
     
    14171415     298,   298,   318,   316,   319,   317,   320,   321,   304,   306,
    14181416     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,
     1417     330,   331,   337,   338,   336,   333,   334,   335,   553,   553,
     1418     553,     0,     0,     0,   298,   225,   308,   322,   323,     9,
     1419     365,     0,    10,    16,    17,     0,     2,    72,    73,   571,
     1420      11,   298,   531,   529,   252,     3,   460,     3,   265,     0,
    14231421       3,     3,     3,   253,     3,     0,     0,     0,   299,   300,
    14241422     302,   298,   311,   314,   346,   290,   339,   344,   291,   354,
    14251423     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,
     1424       3,     3,     0,     2,   525,   530,   535,   303,     0,     0,
     1425     553,   583,   553,     2,   594,   595,   596,   298,     0,   737,
     1426     738,     0,    14,     0,    15,   298,   274,   275,     0,   299,
     1427     294,   295,   296,   297,   532,   309,   398,   554,   555,   376,
     1428     377,    14,   451,   452,    13,   447,   450,     0,   509,   504,
     1429     495,   451,   452,     0,     0,   534,   226,     0,   298,     0,
    14321430       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,
     1431     739,   299,   588,   600,   743,   736,   734,   741,     0,     0,
     1432       0,   259,     2,     0,   538,   445,   446,   444,     0,     0,
     1433       0,     0,   553,     0,   640,   641,     0,     0,   551,   547,
     1434     553,   568,   553,   553,   549,     2,   548,   553,   607,   553,
     1435     553,   610,     0,     0,     0,   298,   298,   316,   366,     2,
    14381436     298,   266,   301,   312,   347,   359,   484,     0,     2,     0,
    14391437     460,   267,   299,   340,   355,   362,   480,     0,     2,     0,
    14401438     315,   341,   348,   349,     0,   356,   360,   363,   367,   452,
    14411439     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,
     1440       0,     1,   298,     2,   536,   582,   584,   298,     2,   747,
     1441     299,   750,   551,   551,     0,   299,     0,     0,   277,   553,
     1442     549,     2,   298,     0,     0,   298,   556,     2,   507,     2,
     1443     560,     0,     0,     0,     0,     0,     0,    21,    69,     4,
    14461444       8,    19,     5,     6,     7,     0,     0,   298,     2,    74,
    14471445      75,    76,    77,    57,    22,    58,    18,    26,    56,    78,
    14481446     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,
     1447     104,   106,   108,   112,   501,    23,   458,   500,     0,   456,
     1448     457,     0,   572,   587,   590,   593,   599,   602,   605,     2,
     1449     745,   298,   748,     2,    72,   298,     3,   432,     0,   440,
    14521450     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,
     1451     418,   428,   433,   479,   298,   434,   712,   713,   298,   435,
     1452     437,     2,   589,   601,   735,     2,     2,   254,     2,   465,
    14551453       0,   463,   462,   461,   146,     2,     2,   256,     2,     2,
    14561454     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,
     1455       0,     0,     0,     0,     0,     0,   573,   612,     0,   460,
     1456       2,   567,   576,   666,   569,   570,   539,   298,     2,   606,
     1457     615,   608,   609,     0,   280,   298,   298,   345,   299,     0,
     1458     299,   298,   740,   744,   742,   540,   298,   551,   260,   268,
     1459     313,     0,     2,   541,   298,   505,   342,   343,   287,   357,
     1460     364,     0,   298,     0,   754,   405,     0,   482,   506,   257,
     1461     258,   526,   298,   442,     0,   298,   242,     0,     2,   244,
    14641462       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,   565,   566,   564,
    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,
     1463     298,   551,   298,   492,   494,   493,     0,     0,   756,     0,
     1464     298,     0,   298,   496,   298,   566,   564,   565,   563,     0,
     1465     558,   561,     0,     0,   298,    64,   298,    78,    59,   298,
     1466      66,   298,   298,    62,    63,     2,   132,     0,     0,   454,
     1467       0,   453,   734,   298,    20,    31,     0,    34,    35,    40,
     1468       2,     0,    40,   118,   119,   120,   121,   122,   123,   124,
     1469     125,   126,   127,   117,   116,     0,    60,    61,     0,     0,
    14721470       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,   134,     0,
    1490        0,   227,     0,     0,     0,     0,    41,     0,     0,   298,
    1491       24,     0,    25,     0,   699,   704,   455,   696,   554,   554,
    1492        0,   114,     3,     2,    32,     0,    38,     0,     2,    29,
    1493        0,   113,    81,    82,    83,    85,    86,    88,    89,    93,
    1494       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,   135,     0,     0,   220,
    1511        0,     0,     0,   228,   229,    65,     0,    67,    70,    71,
    1512        0,   133,     0,     0,     0,   700,   701,   697,   698,   465,
    1513       79,   115,   130,     3,   114,     0,    28,    40,     3,     0,
    1514       37,   110,     0,     3,   657,   661,   664,   656,     3,   599,
    1515      723,   728,     2,    72,   298,     3,     3,   299,     0,     3,
    1516      629,   633,   636,   645,   679,   683,   686,   298,     3,   628,
    1517      644,   678,   298,   298,   431,   298,   298,     0,     0,     0,
    1518        0,   261,   111,     0,     3,     3,     0,   468,     0,   464,
    1519        0,     0,   250,   298,     0,     0,   134,     0,     0,     0,
    1520        0,     0,   134,     0,     0,   114,   114,    21,     0,     0,
    1521        3,   136,   137,     2,   148,   138,   139,   140,   141,   142,
    1522      143,   150,   152,     0,     0,     0,   289,   298,   298,   554,
    1523        0,   547,   298,   381,   383,     0,   397,   700,   392,   396,
    1524      393,   386,   390,   373,   404,     0,   586,     2,   671,   670,
    1525        0,   676,     2,   488,   490,   511,     3,   519,   520,     0,
    1526        2,   515,     3,     3,     0,     0,   563,   227,     0,     0,
    1527        0,   227,     0,     0,   703,   707,   709,   702,   755,   114,
    1528        0,     3,    54,     0,    54,    54,     3,    42,    44,    39,
    1529        0,     3,   109,     0,     2,   659,   660,     0,   298,     0,
    1530        0,     0,     3,   645,     0,     2,   631,   632,     2,   647,
    1531        2,   681,   682,     0,     0,    72,     0,     3,     3,     3,
    1532        3,   416,   415,   419,   754,     2,     2,   753,     0,     0,
    1533        0,     0,     3,   469,     3,     0,   248,   151,     3,   299,
    1534      298,     0,     0,     0,     0,     2,     0,   196,     0,   194,
    1535        0,     0,     0,     0,     0,     0,     0,   554,     0,   156,
    1536      153,   298,     0,     0,   271,   283,     3,     3,   553,   620,
    1537      374,   389,   402,   298,   270,   298,     0,   522,   499,   298,
    1538        0,     0,   498,   513,     0,     0,     0,   221,     0,   230,
    1539       68,     2,   705,   706,     0,   131,   128,     0,    51,     2,
    1540       45,    52,    53,     0,     0,     0,     0,    27,     0,   662,
    1541      298,   587,   731,   732,   733,     0,   684,   298,   298,   298,
    1542        3,     3,     0,   692,     0,     0,     0,     0,   298,   298,
    1543        3,   551,   475,   476,     0,   251,   299,     0,     0,     0,
    1544        0,   298,   197,   195,   192,     0,   198,     0,     0,     0,
    1545        0,   202,   205,   203,   199,     0,   200,   134,    40,   149,
    1546      147,   249,     0,     0,   423,   427,   426,     0,   516,     2,
    1547      517,     2,   518,   512,   298,   233,     0,   231,     0,   233,
    1548      298,    36,   129,    55,     0,    43,    33,     2,    49,     2,
    1549       47,    30,     3,   734,     3,     3,     3,     0,     0,   691,
    1550      693,   634,   648,   273,     2,   413,     3,   412,     0,   478,
    1551      134,     0,     0,   134,     3,     0,   134,   193,     0,     2,
    1552        2,   214,   204,     0,     0,     0,   145,     0,   581,   621,
    1553        2,     0,     0,     2,   234,     0,     0,   222,     0,     3,
    1554        3,     0,     0,     0,     0,     0,     0,   694,   695,   298,
    1555        0,   477,   157,     0,     0,     2,   170,   134,   159,     0,
    1556      187,     0,   134,     0,     2,   161,     0,     2,     0,     2,
    1557        2,     2,   201,    37,   298,   521,   523,   514,     0,     0,
    1558        0,     0,     0,     0,     3,     3,   663,   635,   649,   685,
    1559      417,   134,   163,   166,     0,   165,   169,     3,   172,   171,
    1560        0,   134,   189,   134,     3,     0,   298,     0,   298,     0,
    1561        2,     0,     2,   144,     2,   235,   236,     0,   232,   223,
    1562      708,    46,     0,     0,   158,     0,     0,   168,   238,   173,
    1563        2,   240,   188,     0,   191,   177,   206,     3,   215,   219,
    1564      208,     3,     0,   298,     0,   298,     0,     0,     0,    50,
    1565       48,   164,   167,   134,     0,   174,   298,   134,   134,     0,
    1566      178,     0,     0,   699,   216,   217,   218,     0,   207,     3,
    1567      209,     3,   298,   224,   237,   154,   175,   160,   134,   241,
    1568      190,   185,   183,   179,   162,   134,     0,   700,     0,     0,
    1569        0,     0,   155,   176,   186,   180,   184,   183,   181,     3,
    1570        3,     0,     0,   500,   182,   210,   212,     3,     3,   211,
    1571      213
     1471       0,     0,     0,     0,     0,     0,     0,     2,   652,   459,
     1472     649,   553,   553,   657,   486,   298,     2,   591,   592,     0,
     1473     603,   604,     0,   746,   749,   298,   298,     0,   714,   299,
     1474     718,   709,   710,   716,     0,     2,     2,   674,   553,   756,
     1475     623,   553,   553,   756,   553,   637,   553,   553,   688,   441,
     1476     671,   553,   553,   679,   686,   298,   436,   299,     0,     0,
     1477     298,   724,   299,   729,   756,   721,   298,   726,   756,   298,
     1478     298,     0,     0,    21,     2,     0,    22,     0,   466,   754,
     1479       0,     0,   472,   246,     0,   298,     0,     0,     0,   551,
     1480     575,   579,   581,   611,   614,   618,   621,   574,   613,     0,
     1481     288,   664,     0,   298,   281,     0,     0,     0,     0,   279,
     1482       2,     0,   264,   542,   298,     0,     0,   298,     2,   370,
     1483     390,   379,     0,     0,   384,   378,   755,     0,     0,   403,
     1484       0,   299,     3,   421,     3,   425,   424,   597,     0,   537,
     1485     298,    72,     3,   298,   440,   299,     3,   434,   435,     2,
     1486       0,     0,     0,   491,   310,   298,     0,   487,   489,     3,
     1487       2,     2,     0,   508,     3,     0,   560,   134,     0,     0,
     1488     227,     0,     0,     0,     0,    41,     0,     0,   298,    24,
     1489       0,    25,     0,   698,   703,   455,   695,   553,   553,     0,
     1490     114,     3,     2,    32,     0,    38,     0,     2,    29,     0,
     1491     113,    81,    82,    83,    85,    86,    88,    89,    93,    94,
     1492      91,    92,    96,    97,    99,   101,   103,   105,   107,     0,
     1493       0,   298,     0,     0,     0,   653,   654,   650,   651,   503,
     1494     502,   298,     0,   720,   298,   725,   299,   298,   668,   711,
     1495     667,     2,   298,     0,     0,     0,     0,     0,     0,     0,
     1496       0,   689,     0,   675,   626,   642,   676,     2,   622,   629,
     1497     438,   624,   625,   439,     2,   636,   645,   638,   639,   672,
     1498     673,   687,   715,   719,   717,   756,   272,     2,   751,     2,
     1499     429,   723,   728,   430,     3,   408,     3,     3,     3,   460,
     1500       0,     0,     2,   474,   471,   755,     0,   467,     2,   470,
     1501     473,     0,   298,   247,   269,     3,   276,   278,     0,   460,
     1502       2,   577,   578,     2,   616,   617,     0,   665,   543,     3,
     1503     351,   350,   353,   352,   298,   544,     0,   545,   378,     0,
     1504       0,   298,     0,     0,   698,   388,   391,   395,   553,   395,
     1505     394,   387,   380,   553,   382,   385,   298,   405,   399,   111,
     1506     406,   754,     0,     0,   443,   245,     0,     0,     3,     2,
     1507     674,   436,     0,   533,     0,   756,   757,   495,     0,   298,
     1508     298,   298,     0,   557,   559,   135,     0,     0,   220,     0,
     1509       0,     0,   228,   229,    65,     0,    67,    70,    71,     0,
     1510     133,     0,     0,     0,   699,   700,   696,   697,   465,    79,
     1511     115,   130,     3,   114,     0,    28,    40,     3,     0,    37,
     1512     110,     0,     3,   656,   660,   663,   655,     3,   598,   722,
     1513     727,     2,    72,   298,     3,     3,   299,     0,     3,   628,
     1514     632,   635,   644,   678,   682,   685,   298,     3,   627,   643,
     1515     677,   298,   298,   431,   298,   298,     0,     0,     0,     0,
     1516     261,   111,     0,     3,     3,     0,   468,     0,   464,     0,
     1517       0,   250,   298,     0,     0,   134,     0,     0,     0,     0,
     1518       0,   134,     0,     0,   114,   114,    21,     0,     0,     3,
     1519     136,   137,     2,   148,   138,   139,   140,   141,   142,   143,
     1520     150,   152,     0,     0,     0,   289,   298,   298,   553,     0,
     1521     546,   298,   381,   383,     0,   397,   699,   392,   396,   393,
     1522     386,   390,   373,   404,     0,   585,     2,   670,   669,     0,
     1523     675,     2,   488,   490,   510,     3,   518,   519,     0,     2,
     1524     514,     3,     3,     0,     0,   562,   227,     0,     0,     0,
     1525     227,     0,     0,   702,   706,   708,   701,   754,   114,     0,
     1526       3,    54,     0,    54,    54,     3,    42,    44,    39,     0,
     1527       3,   109,     0,     2,   658,   659,     0,   298,     0,     0,
     1528       0,     3,   644,     0,     2,   630,   631,     2,   646,     2,
     1529     680,   681,     0,     0,    72,     0,     3,     3,     3,     3,
     1530     416,   415,   419,   753,     2,     2,   752,     0,     0,     0,
     1531       0,     3,   469,     3,     0,   248,   151,     3,   299,   298,
     1532       0,     0,     0,     0,     2,     0,   196,     0,   194,     0,
     1533       0,     0,     0,     0,     0,     0,   553,     0,   156,   153,
     1534     298,     0,     0,   271,   283,     3,     3,   552,   619,   374,
     1535     389,   402,   298,   270,   298,     0,   521,   498,   298,     0,
     1536       0,   497,   512,     0,     0,     0,   221,     0,   230,    68,
     1537       2,   704,   705,     0,   131,   128,     0,    51,     2,    45,
     1538      52,    53,     0,     0,     0,     0,    27,     0,   661,   298,
     1539     586,   730,   731,   732,     0,   683,   298,   298,   298,     3,
     1540       3,     0,   691,     0,     0,     0,     0,   298,   298,     3,
     1541     550,   475,   476,     0,   251,   299,     0,     0,     0,     0,
     1542     298,   197,   195,   192,     0,   198,     0,     0,     0,     0,
     1543     202,   205,   203,   199,     0,   200,   134,    40,   149,   147,
     1544     249,     0,     0,   423,   427,   426,     0,   515,     2,   516,
     1545       2,   517,   511,   298,   233,     0,   231,     0,   233,   298,
     1546      36,   129,    55,     0,    43,    33,     2,    49,     2,    47,
     1547      30,     3,   733,     3,     3,     3,     0,     0,   690,   692,
     1548     633,   647,   273,     2,   413,     3,   412,     0,   478,   134,
     1549       0,     0,   134,     3,     0,   134,   193,     0,     2,     2,
     1550     214,   204,     0,     0,     0,   145,     0,   580,   620,     2,
     1551       0,     0,     2,   234,     0,     0,   222,     0,     3,     3,
     1552       0,     0,     0,     0,     0,     0,   693,   694,   298,     0,
     1553     477,   157,     0,     0,     2,   170,   134,   159,     0,   187,
     1554       0,   134,     0,     2,   161,     0,     2,     0,     2,     2,
     1555       2,   201,    37,   298,   520,   522,   513,     0,     0,     0,
     1556       0,     0,     0,     3,     3,   662,   634,   648,   684,   417,
     1557     134,   163,   166,     0,   165,   169,     3,   172,   171,     0,
     1558     134,   189,   134,     3,     0,   298,     0,   298,     0,     2,
     1559       0,     2,   144,     2,   235,   236,     0,   232,   223,   707,
     1560      46,     0,     0,   158,     0,     0,   168,   238,   173,     2,
     1561     240,   188,     0,   191,   177,   206,     3,   215,   219,   208,
     1562       3,     0,   298,     0,   298,     0,     0,     0,    50,    48,
     1563     164,   167,   134,     0,   174,   298,   134,   134,     0,   178,
     1564       0,     0,   698,   216,   217,   218,     0,   207,     3,   209,
     1565       3,   298,   224,   237,   154,   175,   160,   134,   241,   190,
     1566     185,   183,   179,   162,   134,     0,   699,     0,     0,     0,
     1567       0,   155,   176,   186,   180,   184,   183,   181,     3,     3,
     1568       0,     0,   499,   182,   210,   212,     3,     3,   211,   213
    15721569};
    15731570
     
    15751572static const yytype_int16 yydefgoto[] =
    15761573{
    1577       -1,   803,   466,   303,    49,   135,   136,   304,   305,   306,
    1578      307,   308,   755,   756,  1116,  1117,  1118,  1228,   309,   380,
     1574      -1,   802,   466,   303,    49,   135,   136,   304,   305,   306,
     1575     307,   308,   754,   755,  1115,  1116,  1117,  1227,   309,   380,
    15791576     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
    1580      321,   322,   323,  1013,   517,   962,   546,   325,   963,   936,
    1581     1039,  1505,  1041,  1042,  1043,  1044,  1506,  1045,  1046,  1423,
    1582     1424,  1386,  1387,  1388,  1484,  1485,  1489,  1490,  1525,  1526,
    1583     1047,  1345,  1048,  1049,  1281,  1282,  1283,  1467,  1050,   147,
    1584      942,   943,   944,  1365,  1447,  1459,  1460,   467,   468,   863,
    1585      864,  1021,    53,    54,    55,    56,    57,   347,   159,    60,
     1577     321,   322,   323,  1012,   516,   961,   545,   325,   962,   935,
     1578    1038,  1504,  1040,  1041,  1042,  1043,  1505,  1044,  1045,  1422,
     1579    1423,  1385,  1386,  1387,  1483,  1484,  1488,  1489,  1524,  1525,
     1580    1046,  1344,  1047,  1048,  1280,  1281,  1282,  1466,  1049,   147,
     1581     941,   942,   943,  1364,  1446,  1458,  1459,   467,   468,   862,
     1582     863,  1020,    53,    54,    55,    56,    57,   347,   159,    60,
    15861583      61,    62,    63,    64,   349,    66,    67,   265,    69,    70,
    15871584     275,   351,   352,    73,    74,    75,   120,    77,   205,   354,
    1588      121,    80,   122,    82,    83,   453,    84,   452,   682,   683,
    1589      684,   896,  1068,   897,    85,    86,   456,   454,   690,   845,
    1590      846,   357,   358,   693,   694,   695,   359,   360,   361,   362,
    1591      464,   178,   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,  1304,  1090,  1091,  1092,
    1594     1093,    92,    93,   711,    94,   274,    95,    96,   188,  1015,
    1595      673,   411,   127,    97,   500,   501,   502,   189,   269,   191,
     1585     121,    80,   122,    82,    83,   453,    84,   452,   681,   682,
     1586     683,   895,  1067,   896,    85,    86,   456,   454,   689,   844,
     1587     845,   357,   358,   692,   693,   694,   359,   360,   361,   362,
     1588     464,   178,   137,   138,   520,   327,   171,   638,   639,   640,
     1589     641,   642,    87,   123,    89,   487,   488,   927,   489,   278,
     1590     493,   328,    90,   139,   140,    91,  1303,  1089,  1090,  1091,
     1591    1092,    92,    93,   710,    94,   274,    95,    96,   188,  1014,
     1592     672,   411,   127,    97,   499,   500,   501,   189,   269,   191,
    15961593     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,   956,   747,   748,   749,
    1600      591,   365,   366,   367,   368,   329,   165,   109,   110,   111,
    1601      370,   688,   718
     1594     196,   197,   198,   199,   200,   814,   600,   601,   602,   603,
     1595     201,   605,   606,   607,   569,   570,   571,   572,   744,   107,
     1596     609,   610,   611,   612,   613,   614,   955,   746,   747,   748,
     1597     590,   365,   366,   367,   368,   329,   165,   109,   110,   111,
     1598     370,   687,   717
    16021599};
    16031600
    16041601/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    16051602   STATE-NUM.  */
    1606 #define YYPACT_NINF -1263
     1603#define YYPACT_NINF -1267
    16071604static const yytype_int16 yypact[] =
    16081605{
    1609     6864,  4432, -1263,    10, -1263, -1263, -1263, -1263, -1263, -1263,
    1610    -1263,   -12, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
    1611    -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,    67,    67,
    1612       67,   564,   950,    20,  6985,   166, -1263, -1263, -1263, -1263,
    1613    -1263,    71, -1263, -1263, -1263,  1431,   111, -1263, -1263, -1263,
    1614    -1263,  3253, -1263, -1263, -1263, -1263,    83,   193, -1263,  1119,
    1615    -1263, -1263, -1263, -1263,   213,  1691,   349,    98,  7106, -1263,
    1616    -1263,  3253,   817, -1263, -1263,   596,   492,  5210,  1011,  1044,
    1617      596,  1122, -1263, -1263,   838,   957, -1263,   596,  1203, -1263,
    1618      236, -1263,   406,   508, -1263, -1263, -1263, -1263,   429,   193,
    1619       67, -1263,    67, -1263, -1263, -1263, -1263,  4697,  1119, -1263,
    1620    -1263,  1119, -1263,   434, -1263,  7806, -1263, -1263,  2149,  8896,
    1621    -1263,   644,   644,   644, -1263, -1263, -1263,    67, -1263, -1263,
    1622    -1263,   436,   458,   468, -1263, -1263, -1263,   480, -1263, -1263,
    1623    -1263, -1263, -1263,   498,   503, -1263, -1263,    77,  8347,  2436,
    1624      255,   519,   522,   535,   547,   585,   603,  8929,  6488,   597,
    1625    -1263,  4574, -1263, -1263, -1263, -1263,   608, -1263,   -37,  5487,
    1626     5487, -1263,   539,   241, -1263, -1263, -1263, -1263,   624,   287,
    1627      313,   327,    67,   621, -1263, -1263,  1691,  2813,   734, -1263,
    1628      120, -1263,    67,    67,   193, -1263, -1263,   204, -1263,    67,
    1629       67, -1263,  2931,   664,   675,   644,  6274, -1263, -1263, -1263,
    1630     3253, -1263, -1263,   596, -1263, -1263, -1263,   193, -1263,  1119,
    1631       83, -1263,  7457, -1263,   644,   644,   644,   193, -1263,   564,
    1632    -1263,  3379, -1263, -1263,   671,   644, -1263,   644, -1263,    71,
    1633     8347, -1263,   715, -1263,   950,   724,   644, -1263,   564,   704,
    1634      714, -1263,  6985,   544, -1263, -1263, -1263,  8708, -1263, -1263,
    1635     8263, -1263,   734,   123,  9697,  8896,  2149,  2931, -1263,   205,
    1636    -1263, -1263,  7806,  1119,   738,  5343, -1263, -1263,   211, -1263,
    1637    10116,   739,   650,  9756,   757,  9697,  9815, -1263,   763, -1263,
    1638    -1263, -1263, -1263, -1263, -1263,  9874,  9874,  8111,   111, -1263,
    1639    -1263, -1263, -1263, -1263, -1263, -1263,   795, -1263,  1259,  2219,
    1640     8347,  9697, -1263,   496,   315,   375,   430,   719,   760,   770,
    1641      771,   807,   114, -1263, -1263, -1263,   814, -1263,   402, -1263,
    1642    -1263,  2436, -1263, -1263,   104,   792, -1263,   372,   792, -1263,
    1643    -1263,  4697, -1263,   802,   812,  8465, -1263, -1263,   721,  1811,
    1644     7892,  6274,   596, -1263,   596,   644,   644, -1263, -1263, -1263,
    1645    -1263, -1263, -1263,   644,  4697,  1119, -1263, -1263,  8929,  1749,
    1646    -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,  4858,
    1647     9697, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
    1648    -1263, -1263, -1263, -1263, -1263,  2149, -1263,   677,   823,   827,
    1649      829,   862,   831,   834,   836,  2813, -1263, -1263,   842,    83,
    1650      841, -1263, -1263,   837, -1263, -1263, -1263,  8708, -1263, -1263,
    1651    -1263, -1263, -1263,  2931, -1263,  8347,  8347, -1263,   644,  2149,
    1652     6398,  7967, -1263, -1263, -1263, -1263,  8708,   123, -1263, -1263,
    1653      596,   193, -1263, -1263,  8708, -1263,  5038, -1263, -1263,   644,
    1654      644,   474,  8741,   848,   849,   824,   850,   644, -1263, -1263,
    1655    -1263, -1263,  9167, -1263,   507, 10150, -1263,   193,   853, -1263,
    1656     2149, 10237,  9933, -1263, -1263, -1263, -1263,   898,  2931, -1263,
    1657     7967,   734,  5424, -1263, -1263, -1263, -1263,  1676,   514,   844,
    1658      950,  5343,  1027,  7806, -1263,  5343, -1263, -1263, -1263, -1263,
    1659      545, -1263,   859,   650,   244,  8111, -1263,  9014, -1263, -1263,
    1660     8111, -1263,  8229,  8111, -1263, -1263,   111, -1263,   548,   867,
    1661      926,   872, -1263, -1263,  6240, -1263, -1263,   387, -1263, -1263,
    1662     9697, -1263,   467,  9697, -1263, -1263, -1263, -1263, -1263, -1263,
    1663    -1263, -1263, -1263, -1263, -1263, -1263,  9697, -1263, -1263,  9697,
    1664     9697,  9697,  9697,  9697,  9697,  9697,  9697,  9697,  9697,  9697,
    1665     9697,  9697,  9697,  9697,  9697,  9697,  9697,  4047,   814,  1636,
    1666    -1263, -1263,    67,    67, -1263, -1263,  8347, -1263, -1263,   837,
    1667      544, -1263,   837,  9992, -1263, -1263,  8929,  6240,   873, -1263,
    1668     8896, -1263, -1263,   608, -1263,   880,   787,   882,  2301,   259,
    1669      844, -1263,    67,    67,   844,   286, -1263,    67,    67,   837,
    1670    -1263, -1263,    67,    67, -1263,   792,  9047,  1119, 10388,   450,
    1671      493,  9047, -1263,  8263, -1263,   844, -1263,  4697, -1263,   -35,
    1672     7577,  7577,  1119,  5632,   869, -1263,   326,   874,   889, -1263,
    1673      881,  5487,   342, -1263,   977,  1119,  7577,   544,  2149,   544,
    1674      734,   382,   792, -1263, -1263,   405,   792, -1263, -1263, -1263,
    1675      650, -1263,   792,   193,  9167, -1263,   570,   918,   602,   921,
    1676    -1263,   802,   193, -1263, -1263,  8708,   193,   940,  9014,   111,
    1677    -1263,  1310, -1263,   353,   395,   950, -1263,   950,   941,  9697,
    1678    -1263,   950, 10388, -1263, -1263,   948, -1263, -1263, -1263,   544,
    1679    -1263, 10313,   812, -1263,  7577,   987,  7892, -1263, -1263,   608,
    1680      955,   960,  1676,  3085, -1263, -1263,  5343,  9697, -1263, -1263,
    1681      947, -1263, -1263,   956, -1263,   947,   967, 10116,  9697,   949,
    1682      954,   180,   972,   975,   984,   993, -1263,  1002,  1005,  6240,
    1683    -1263,  9697, -1263,   926,  1965, -1263, -1263, -1263,    67,    67,
    1684     9638,  9697,   992, -1263, -1263,   615, -1263,  9697, -1263, -1263,
    1685      711, -1263, -1263, -1263, -1263,   496,   496,   315,   315,   375,
    1686      375,   375,   375,   430,   430,   719,   760,   770,   771,   807,
    1687     9697,   330,  9167,  1006,  1007,  1008,  1636, -1263, -1263, -1263,
    1688    -1263, -1263,  9167,   620, -1263,  4697, -1263,  6612,  8583, -1263,
    1689    -1263, -1263,   787,  9167,   937,  1012,  1014,  1022,  1023,  1024,
    1690     1029,  1036, -1263,  3424,  2301, -1263, -1263, -1263, -1263, -1263,
    1691    -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
    1692    -1263, -1263,   837, -1263, -1263, -1263,   844, -1263, -1263, -1263,
    1693    -1263, -1263, -1263, -1263, -1263, -1263, -1263,  1039,  1043, -1263,
    1694       83,   992,  5632, -1263, -1263, -1263,  4858,  1042, -1263, -1263,
    1695    -1263, -1263,   950,  5809,  1095, -1263, -1263, -1263, -1263,  1030,
    1696       83, -1263, -1263,   837, -1263, -1263,   837,  1048,   837, -1263,
    1697    -1263, -1263, -1263, -1263, -1263,  6488, -1263,   193, -1263, -1263,
    1698      407,   410,  6488,  2038,  9697,  2697, -1263, -1263,  1037,    53,
    1699     1037, -1263,   950, -1263,    67, -1263, -1263,  8781,   824, -1263,
    1700    -1263, -1263,   849,  1059,  1021, -1263, -1263,  1062,  1063, -1263,
    1701      987,  2296, -1263,   528, -1263,  3085,   844, -1263, -1263,  1071,
    1702     5343,  7806,  8347,  1073, -1263, -1263,  1074,  1084,  1066, -1263,
    1703     9697,  1088,   282,  1083, -1263,  1091,   544,  1091, -1263, -1263,
    1704     1091, -1263,  1097,  1105,  1115,  1965, -1263, -1263, -1263,  4858,
    1705    -1263, -1263, -1263,  1113,  9697,   605, -1263,  9697, -1263,   605,
    1706    -1263, -1263,  9697, -1263,   424,   792, -1263, -1263, -1263, -1263,
    1707    -1263, -1263, -1263,   812,  8465, -1263, -1263,  6736,  1120, -1263,
    1708      568,   792, -1263,   594,   631,   792, -1263,   644,  3969, -1263,
    1709    -1263, -1263,  9167,  9167, -1263,  7967,  7967,  1123,  1118,  1127,
    1710     1125, -1263,   558,   212,   992, -1263,   605, -1263,  5487, -1263,
    1711     9697,   420, -1263,  6116,  1129,  1135,  9579,  1136,  1137,   146,
    1712      206,   181,  9697,  1140,   193,  9697,  9697,  1106,   305,  1124,
    1713    -1263, -1263, -1263,  1143, -1263, -1263, -1263, -1263, -1263, -1263,
    1714    -1263, -1263, -1263,   950,  1141,  9697, -1263,  9167,  9167,    67,
    1715     1150, -1263,  8856, -1263, -1263,   722, -1263,  2697, -1263, -1263,
    1716    -1263, -1263,  1310, -1263, -1263,  1148, -1263, -1263, -1263, -1263,
    1717     1154,  2296, -1263, -1263,  1139, -1263,   947, -1263, -1263,  2149,
    1718     1158, -1263, -1263, -1263,   627,  1151, -1263,   180,  1138,  9697,
    1719     1146,   180,   180,  1165,   653,   792, -1263, -1263,   881,  9697,
    1720     1164,  1113, -1263,  1068, -1263, -1263,  1163, -1263,   219, -1263,
    1721     1168,  1163, -1263,  1171, -1263, -1263,   837,  1173,  6364,  1172,
    1722     1175,  1177, -1263, -1263,  1180, -1263, -1263,   837, -1263, -1263,
    1723    -1263, -1263,   837,  9697,  9697,   812,  1179, -1263, -1263, -1263,
    1724    -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,  9697,  9697,
    1725     1182,  1184,  1163, -1263, -1263,   950, -1263, -1263, -1263,  7382,
    1726     7806,  9697,  9697,  1240,  9697, -1263,  1160, -1263,  1170, -1263,
    1727     1174,  9697,  1178,  9697,  1032,  1185,    59,    67,  1380, -1263,
    1728    -1263,  5809,  1189,   442, -1263, -1263, -1263, -1263, -1263, -1263,
    1729    -1263, -1263, -1263,  9395, -1263,  7967,  1190, -1263, -1263,  7806,
    1730      454,   456, -1263,  1197,  1193,   650,  1210, -1263,   295, -1263,
    1731    -1263, -1263, -1263,   837,  1213, -1263, -1263,  1220,  1252, -1263,
    1732    -1263,  1252,  1252,   605,  1222,  1144,  1570, -1263,  1237, -1263,
    1733     9167, -1263, -1263, -1263, -1263,  1238, -1263,  9167,  9167,  9167,
    1734    -1263, -1263,  1239, -1263,  1241,  1242,  1245,   586,  7652,  7772,
    1735    -1263, -1263, -1263, -1263,  1244, -1263,  8042,   635,   640,  1249,
    1736      662,  5981, -1263, -1263, -1263,   460, -1263,   666,  1250,  1251,
    1737      193,  1306,   785, -1263, -1263,  9697, -1263,  9579,  9697, -1263,
    1738    -1263, -1263,  1255,  1257, -1263, -1263, -1263,  1262, -1263, -1263,
    1739    -1263, -1263, -1263, -1263,  7806,   650,  1270, -1263,  1254,   650,
    1740     9167, -1263, -1263, -1263,   605, -1263, -1263, -1263, -1263, -1263,
    1741    -1263, -1263, -1263, -1263, -1263, -1263, -1263,  1278,  1279, -1263,
    1742    -1263, -1263, -1263, -1263, -1263, -1263,  1282, -1263,  1284, -1263,
    1743     9579,    89,  9697,  9579, -1263,  1287,  9697, -1263,   136,  1302,
    1744     1311, -1263, -1263,  1297,  1299,  1280, -1263,   753, -1263, -1263,
    1745    -1263,  1119,  2149,  1300, -1263,   338,  9697, -1263,   667, -1263,
    1746     1163,   605,   605,  1314,  1315,  1320,  1328, -1263, -1263,  7967,
    1747     1304, -1263,  1376,  9697,  1309, -1263, -1263,  9489, -1263,   690,
    1748    -1263,  1313,  9579,  1321, -1263, -1263,  1331, -1263,  1333, -1263,
    1749     1351,  1361, -1263,  1337,  7806, -1263, -1263, -1263,   650,   544,
    1750     1362,  1339,  1365,  1364,  1163,  1163, -1263, -1263, -1263, -1263,
    1751    -1263,  9579,   234, -1263,   427, -1263, -1263,  7227, -1263, -1263,
    1752     1346,  9697, -1263,  9697,  7227,   193,  9014,   193,  9014,  1369,
    1753    -1263,  1370, -1263, -1263,  1367, -1263, -1263,   697, -1263, -1263,
    1754    -1263, -1263,  1371,  1373, -1263,  9697,  9697, -1263, -1263,   839,
    1755       85, -1263, -1263,  1358, -1263,   839, -1263, -1263,  2097,   544,
    1756    -1263, -1263,   193,  9014,   193,  9014,  1387,  1366,   544, -1263,
    1757    -1263, -1263, -1263,  9489,  1384,   839,  7306,  9697,  9399,  1388,
    1758      839,  1392,  2097,  3030, -1263, -1263, -1263,  1399, -1263, -1263,
    1759    -1263, -1263,  8347, -1263, -1263, -1263,  9261, -1263,  9489, -1263,
    1760    -1263,  1378,  9171, -1263, -1263,  9399,   193,  3030,   193,  1401,
    1761     1403,   712, -1263,  9261, -1263, -1263, -1263,  9171, -1263, -1263,
    1762    -1263,   193,   193, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
    1763    -1263
     1606    5235,  8510, -1267,   -14, -1267, -1267, -1267, -1267, -1267, -1267,
     1607   -1267,   -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1608   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,    84,    84,
     1609      84,  1541,   905,   123,  6677,   163, -1267, -1267, -1267, -1267,
     1610   -1267,   157, -1267, -1267, -1267,  1043,    81, -1267, -1267, -1267,
     1611   -1267,  4048, -1267, -1267, -1267, -1267,   225,   198, -1267,  1956,
     1612   -1267, -1267, -1267, -1267,   217,  1716,   371,    37,  6797, -1267,
     1613   -1267,  4048,   829, -1267, -1267,  1101,   380,  3172,   661,   839,
     1614    1101,   977, -1267, -1267,  1289,   340, -1267,  1101,  1140, -1267,
     1615     273, -1267,   439,   447, -1267, -1267, -1267, -1267,   337,   198,
     1616      84, -1267,    84, -1267, -1267, -1267, -1267,  7269,  1956, -1267,
     1617   -1267,  1956, -1267,   325, -1267,  7582, -1267, -1267,  2178,  8744,
     1618   -1267,   675,   675,   675, -1267, -1267, -1267,    84, -1267, -1267,
     1619   -1267,   360,   395,   436, -1267, -1267, -1267,   466, -1267, -1267,
     1620   -1267, -1267, -1267,   503,   515, -1267, -1267,   272,  8119,  1675,
     1621     307,   370,   377,   524,   565,   568,   580,  8828,  6307,   594,
     1622   -1267,  4677, -1267, -1267, -1267, -1267,   613, -1267,   271,  9583,
     1623    9583, -1267,   610,   339, -1267, -1267, -1267, -1267,   618,   379,
     1624     421,   468,    84,   603, -1267, -1267,  1716,  2591,   687, -1267,
     1625      90, -1267,    84,    84,   198, -1267, -1267,    91, -1267,    84,
     1626      84, -1267,  2973,   652,   657,   675,  6831, -1267, -1267, -1267,
     1627    4048, -1267, -1267,  1101, -1267, -1267, -1267,   198, -1267,  1956,
     1628     225, -1267,  7235, -1267,   675,   675,   675,   198, -1267,  1541,
     1629   -1267,  3826, -1267, -1267,   642,   675, -1267,   675, -1267,   157,
     1630    8119, -1267,   665, -1267,   905,   685,   675, -1267,  1541,   689,
     1631     710, -1267,  6677,   291, -1267, -1267, -1267,  8477, -1267, -1267,
     1632    4354, -1267,   687,     8,  9760,  8744,  2178,  2973, -1267,   101,
     1633   -1267, -1267,  7582,  1956,   740, 10515, -1267, -1267,   378, -1267,
     1634   10178,   730,   705,  9819,   773,  9760,  9878, -1267,   794, -1267,
     1635   -1267, -1267, -1267, -1267, -1267,  9937,  9937,  7885,    81, -1267,
     1636   -1267, -1267, -1267, -1267, -1267, -1267,   834, -1267,  1184,  2546,
     1637    8119,  9760, -1267,   525,   415,   844,   338,   853,   823,   831,
     1638     841,   886,    56, -1267, -1267, -1267,   518, -1267,   528, -1267,
     1639   -1267,  1675, -1267, -1267,   456,   900, -1267,   490,   900, -1267,
     1640   -1267,  7269, -1267,   940,   946,  8236, -1267, -1267,   536,  1525,
     1641    7667,  6831,  1101, -1267,  1101,   675,   675, -1267, -1267, -1267,
     1642   -1267, -1267, -1267,   675,  7269,  1956, -1267, -1267,  8828,  1786,
     1643   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9524,
     1644    9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1645   -1267, -1267, -1267, -1267, -1267,  2178, -1267,   446,   945,   961,
     1646     968,   800,   973,   976,   981,  2591, -1267, -1267,   939,   225,
     1647     982, -1267, -1267,   987, -1267, -1267, -1267,  8477, -1267, -1267,
     1648   -1267, -1267, -1267,  2973, -1267,  8119,  8119, -1267,   675,  2178,
     1649   10547,  7742, -1267, -1267, -1267, -1267,  8477,     8, -1267, -1267,
     1650    1101,   198, -1267, -1267,  8477, -1267,  5404, -1267, -1267,   675,
     1651     675,   579,  8594,   994,   993,   983,   998,   675, -1267, -1267,
     1652   -1267, -1267,  9019, -1267,   616, 10212, -1267,   198,  1004, -1267,
     1653    2178, 10298,  9996, -1267, -1267, -1267, -1267,   843,  2973, -1267,
     1654    7742,   687,  5806, -1267, -1267, -1267,  1900,   626,   990,   905,
     1655   10515,  1647,  7582, -1267, 10515, -1267, -1267, -1267, -1267,   627,
     1656   -1267,  1013,   705,   154,  7885, -1267,  8860, -1267, -1267,  7885,
     1657   -1267,  8002,  7885, -1267, -1267,    81, -1267,   640,  1015,   658,
     1658    1021, -1267, -1267,  6061, -1267, -1267,   315, -1267, -1267,  9760,
     1659   -1267,   368,  9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1660   -1267, -1267, -1267, -1267, -1267,  9760, -1267, -1267,  9760,  9760,
     1661    9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,
     1662    9760,  9760,  9760,  9760,  9760,  9760,  3432,   518,  1212, -1267,
     1663   -1267,    84,    84, -1267, -1267,  8119, -1267, -1267,   987,   291,
     1664   -1267,   987, 10055, -1267, -1267,  8828,  6061,  1020, -1267,  8744,
     1665   -1267, -1267,   613, -1267,  1023,  1793,  1025,  1950,   136,   990,
     1666   -1267,    84,    84,   990,   407, -1267,    84,    84,   987, -1267,
     1667   -1267,    84,    84, -1267,   900,  8944,  1956, 10447,   356,   541,
     1668    8944, -1267,  4354, -1267,   990, -1267,  7269, -1267,   126,  7354,
     1669    7354,  1956,  9642,  1003, -1267,   789,  1008,  1010, -1267,  1026,
     1670    9583,   449, -1267,  1114,  1956,  7354,   291,  2178,   291,   687,
     1671     707,   900, -1267, -1267,   766,   900, -1267, -1267, -1267,   705,
     1672   -1267,   900,   198,  9019, -1267,   643,  1041,   647,  1045, -1267,
     1673     940,   198, -1267, -1267,  8477,   198,  1042,  8860,    81, -1267,
     1674    1307, -1267,   471,   481,   905, -1267,   905,  1047,  9760, -1267,
     1675     905, 10447, -1267, -1267,  1056, -1267, -1267, -1267,   291, -1267,
     1676   10373,   946, -1267,  7354,   694,  7667, -1267, -1267,   613,  1052,
     1677    1057,  1900,  2267, -1267, -1267, 10515,  9760, -1267, -1267,  1055,
     1678   -1267, -1267,  1048, -1267,  1055,  1063, 10178,  9760,  1046,  1051,
     1679     117,  1065,  1062,  1070,  1074, -1267,  1081,  1082,  6061, -1267,
     1680    9760, -1267,   658,  1520, -1267, -1267, -1267,    84,    84,  9701,
     1681    9760,  1077, -1267, -1267,   679, -1267,  9760, -1267, -1267,   821,
     1682   -1267, -1267, -1267, -1267,   525,   525,   415,   415,   844,   844,
     1683     844,   844,   338,   338,   853,   823,   831,   841,   886,  9760,
     1684     397,  9019,  1085,  1086,  1087,  1212, -1267, -1267, -1267, -1267,
     1685   -1267,  9019,   691, -1267,  7269, -1267,  6430,  8353, -1267, -1267,
     1686   -1267,  1793,  9019,   856,  1089,  1091,  1092,  1093,  1096,  1098,
     1687    1104, -1267,  3291,  1950, -1267, -1267, -1267, -1267, -1267, -1267,
     1688   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1689   -1267,   987, -1267, -1267, -1267,   990, -1267, -1267, -1267, -1267,
     1690   -1267, -1267, -1267, -1267, -1267, -1267,  1105,  1106, -1267,   225,
     1691    1077,  9642, -1267, -1267, -1267,  9524,  1108, -1267, -1267, -1267,
     1692   -1267,   905,  5524,  1197, -1267, -1267, -1267, -1267,  1095,   225,
     1693   -1267, -1267,   987, -1267, -1267,   987,  1117,   987, -1267, -1267,
     1694   -1267, -1267, -1267, -1267,  6307, -1267,   198, -1267, -1267,   505,
     1695     507,  6307,  1549,  9760,  2098, -1267, -1267,  1099,    38,  1099,
     1696   -1267,   905, -1267,    84, -1267, -1267,  8627,   983, -1267, -1267,
     1697   -1267,   993,  1120,  1115, -1267, -1267,  1122,  1123, -1267,   694,
     1698    1698, -1267,   576, -1267,  2267,   990, -1267, -1267,  1126, 10515,
     1699    7582,  8119,  1129, -1267, -1267,  1125,  1135,  1118, -1267,  9760,
     1700    1141,   190,  1136, -1267,  1142,   291,  1142, -1267, -1267,  1142,
     1701   -1267,  1147,  1152,  1154,  1520, -1267, -1267, -1267,  9524, -1267,
     1702   -1267, -1267,  1163,  9760,   986, -1267,  9760, -1267,   986, -1267,
     1703   -1267,  9760, -1267,   894,   900, -1267, -1267, -1267, -1267, -1267,
     1704   -1267, -1267,   946,  8236, -1267, -1267,  6553,  1171, -1267,   898,
     1705     900, -1267,   920,   936,   900, -1267,   675,  7112, -1267, -1267,
     1706   -1267,  9019,  9019, -1267,  7742,  7742,  1172,  1167,  1168,  1175,
     1707   -1267,   670,   111,  1077, -1267,   986, -1267,  9583, -1267,  9760,
     1708     540, -1267,  5932,  1180,  1181,  9465,  1182,  1185,    -8,    40,
     1709      86,  9760,  1191,   198,  9760,  9760,  1177,   585,  1169, -1267,
     1710   -1267, -1267,  1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1711   -1267, -1267,   905,  1195,  9760, -1267,  9019,  9019,    84,  1201,
     1712   -1267,  8711, -1267, -1267,   862, -1267,  2098, -1267, -1267, -1267,
     1713   -1267,  1307, -1267, -1267,  1198, -1267, -1267, -1267, -1267,  1202,
     1714    1698, -1267, -1267,  1196, -1267,  1055, -1267, -1267,  2178,  1210,
     1715   -1267, -1267, -1267,   704,  1217, -1267,   117,  1214,  9760,  1200,
     1716     117,   117,  1224,   950,   900, -1267, -1267,  1026,  9760,  1230,
     1717    1163, -1267,   943, -1267, -1267,  1220, -1267,    78, -1267,  1231,
     1718    1220, -1267,  1234, -1267, -1267,   987,  1236,  6184,  1235,  1239,
     1719    1241, -1267, -1267,  1238, -1267, -1267,   987, -1267, -1267, -1267,
     1720   -1267,   987,  9760,  9760,   946,  1243, -1267, -1267, -1267, -1267,
     1721   -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9760,  9760,  1244,
     1722    1248,  1220, -1267, -1267,   905, -1267, -1267, -1267,  7070,  7582,
     1723    9760,  9760,  1318,  9760, -1267,  1233, -1267,  1246, -1267,  1250,
     1724    9760,  1254,  9760,   938,  1255,    47,    84,  1805, -1267, -1267,
     1725    5524,  1256,   554, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1726   -1267, -1267,  9281, -1267,  7742,  1260, -1267, -1267,  7582,   555,
     1727     561, -1267,  1273,  1262,   705,  1283, -1267,   256, -1267, -1267,
     1728   -1267, -1267,   987,  1282, -1267, -1267,  1288,  1321, -1267, -1267,
     1729    1321,  1321,   986,  1292,  1699,  1866, -1267,  1295, -1267,  9019,
     1730   -1267, -1267, -1267, -1267,  1298, -1267,  9019,  9019,  9019, -1267,
     1731   -1267,  1300, -1267,  1301,  1310,  1311,   725,  7429,  7548, -1267,
     1732   -1267, -1267, -1267,  1305, -1267,  7817,   709,   755,  1317,   758,
     1733    5667, -1267, -1267, -1267,   582, -1267,   768,  1319,  1323,   198,
     1734    1369,   935, -1267, -1267,  9760, -1267,  9465,  9760, -1267, -1267,
     1735   -1267,  1320,  1326, -1267, -1267, -1267,  1324, -1267, -1267, -1267,
     1736   -1267, -1267, -1267,  7582,   705,  1330, -1267,  1313,   705,  9019,
     1737   -1267, -1267, -1267,   986, -1267, -1267, -1267, -1267, -1267, -1267,
     1738   -1267, -1267, -1267, -1267, -1267, -1267,  1337,  1340, -1267, -1267,
     1739   -1267, -1267, -1267, -1267, -1267,  1343, -1267,  1342, -1267,  9465,
     1740     276,  9760,  9465, -1267,  1346,  9760, -1267,   281,  1361,  1363,
     1741   -1267, -1267,  1355,  1356,  1339, -1267,   901, -1267, -1267, -1267,
     1742    1956,  2178,  1347, -1267,   401,  9760, -1267,   783, -1267,  1220,
     1743     986,   986,  1362,  1364,  1365,  1367, -1267, -1267,  7742,  1357,
     1744   -1267,  1438,  9760,  1352, -1267, -1267,  9375, -1267,   791, -1267,
     1745    1360,  9465,  1368, -1267, -1267,  1386, -1267,  1389, -1267,  1407,
     1746    1409, -1267,  1376,  7582, -1267, -1267, -1267,   705,   291,  1403,
     1747    1382,  1405,  1404,  1220,  1220, -1267, -1267, -1267, -1267, -1267,
     1748    9465,   240, -1267,   474, -1267, -1267,  6917, -1267, -1267,  1385,
     1749    9760, -1267,  9760,  6917,   198,  8860,   198,  8860,  1410, -1267,
     1750    1411, -1267, -1267,  1408, -1267, -1267,   802, -1267, -1267, -1267,
     1751   -1267,  1422,  1423, -1267,  9760,  9760, -1267, -1267,   979,    59,
     1752   -1267, -1267,  1390, -1267,   979, -1267, -1267,  2042,   291, -1267,
     1753   -1267,   198,  8860,   198,  8860,  1427,  1412,   291, -1267, -1267,
     1754   -1267, -1267,  9375,  1425,   979,  6995,  9760,  9285,  1426,   979,
     1755    1435,  2042,  2360, -1267, -1267, -1267,  1436, -1267, -1267, -1267,
     1756   -1267,  8119, -1267, -1267, -1267,  9148, -1267,  9375, -1267, -1267,
     1757    1416,  9058, -1267, -1267,  9285,   198,  2360,   198,  1441,  1445,
     1758     814, -1267,  9148, -1267, -1267, -1267,  9058, -1267, -1267, -1267,
     1759     198,   198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267
    17641760};
    17651761
     
    17671763static const yytype_int16 yypgoto[] =
    17681764{
    1769    -1263,  3947,  2776, -1263,    44, -1263,   887,   695,  -232, -1263,
    1770    -1263,   487,  -523,  -501,  -842,  -960, -1263,  -216,  4593,     0,
    1771    -1263,   122,   359,   368,   437,   403,   964,   965,   963,   966,
    1772      969, -1263,   998,  -607,  4667,  -955, -1263, -1263,   569,  -183,
    1773     -658,   414, -1263,  1406, -1263,   347, -1148, -1263, -1263,    84,
    1774    -1263,  -949, -1074,   191, -1263, -1263, -1263, -1263,    17, -1186,
    1775    -1263, -1263, -1263, -1263, -1263, -1263,   265, -1262,    33, -1263,
    1776     -866, -1263,   445,   246, -1263,   124, -1263,  -320, -1263, -1263,
    1777    -1263,   506,  -835, -1263, -1263,    19,  -980,    55,   606, -1263,
    1778    -1263, -1263,  -220, -1263,   129,  1096,  -190,  1478,  3486, -1263,
    1779    -1263,    96,   144,  1103,  1793, -1263,  1550, -1263, -1263,    27,
    1780     1989, -1263,  2286,  1081, -1263, -1263, -1263,  -632, -1263,   884,
    1781      886,   488,   668,  -575, -1263, -1263, -1263,   875,   659,  -511,
    1782    -1263,  -466,  -248,   801, -1263, -1263,  -959,  -944,  -218,   636,
    1783      989,    92, -1263,   209,   354,  -244,  -203,  -140,   611,   717,
    1784    -1263,   932, -1263,  2427,  1924,  -447,   860, -1263, -1263,   647,
    1785    -1263,  -235, -1263,   189, -1263, -1263, -1263, -1245,   370, -1263,
    1786    -1263, -1263,  1098, -1263,     2, -1263, -1263,  -849,  -115, -1223,
    1787     -150,  2775, -1263,  2462, -1263,   854, -1263,  -127,    40,  -178,
    1788     -174,  -173,     7,   -43,   -41,   -36,  1803,    12,    18,    21,
    1789     -101,  -168,  -162,  -160,  -144,  -317,  -520,  -513,  -497,  -545,
    1790     -300,  -486, -1263, -1263,  -547,  1009,  1026,  1028,  1598,  4212,
    1791     -563,  -557,  -544,  -532,  -458, -1263,  -514,  -722,  -720,  -718,
    1792     -585,  -194,  -291, -1263, -1263,   769,   138,   -88, -1263,  3371,
    1793      239,  -624,  -483
     1765   -1267,  4051,  2784, -1267,   133, -1267,  1353,   867,  -240, -1267,
     1766   -1267,   504,  -528,  -489,  -834, -1001, -1267,   -77,  4776,     0,
     1767   -1267,   793,   489,   531,   722,   534,   999,  1001,  1005,  1007,
     1768    1002, -1267,   711,  -584,  4023,  -739, -1267, -1267,   606,  -227,
     1769    -674,  -263, -1267,   335, -1267,   382,  -963, -1267, -1267,   119,
     1770   -1267,  -732, -1049,   228, -1267, -1267, -1267, -1267,    54, -1266,
     1771   -1267, -1267, -1267, -1267, -1267, -1267,   302, -1050,    23, -1267,
     1772    -171, -1267,   482,   277, -1267,   153, -1267,  -355, -1267, -1267,
     1773   -1267,   538,  -612, -1267, -1267,     9,  -990,   219,  2319, -1267,
     1774   -1267, -1267,  -124, -1267,   110,    36,  -188,  1213,  3869, -1267,
     1775   -1267,    12,    61,   970,  1623, -1267,  1495, -1267, -1267,    21,
     1776    1827, -1267,  2153,  1937, -1267, -1267, -1267,  -641, -1267,   911,
     1777     914,   521,   695,   -93, -1267, -1267, -1267,   906,   690,  -521,
     1778   -1267,  -507,  -417,  -420, -1267, -1267,  -914,  -941,  -147,   -54,
     1779    1019,    19, -1267,  2311,   381,  -366,  -185,  -122,   649,   745,
     1780   -1267,   964, -1267,  2435,  1823,  -463,   895, -1267, -1267,   693,
     1781   -1267,  -225, -1267,   103, -1267, -1267, -1267, -1263,   408, -1267,
     1782   -1267, -1267,  1139, -1267,    42, -1267, -1267,  -832,   -94, -1230,
     1783    -162,  2364, -1267,  3117, -1267,   908, -1267,  -103,   120,  -184,
     1784    -183,  -178,     7,   -40,   -39,   -36,  1505,     4,    32,    71,
     1785      92,  -173,  -172,  -170,  -168,  -306,  -510,  -503,  -496,  -559,
     1786    -313,  -498, -1267, -1267,  -514,  1064,  1072,  1076,  1925,  4399,
     1787    -524,  -566,  -556,  -543,  -548, -1267,  -508,  -723,  -722,  -717,
     1788    -582,  -166,  -229, -1267, -1267,   283,   102,     6, -1267,  3380,
     1789     108,  -611,  -462
    17941790};
    17951791
     
    17971793   positive, shift that token.  If negative, reduce the rule which
    17981794   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1799 #define YYTABLE_NINF -530
     1795#define YYTABLE_NINF -529
    18001796static const yytype_int16 yytable[] =
    18011797{
    1802       51,   115,   151,   268,   152,   451,   746,    99,   398,   153,
    1803      760,   735,   399,   400,  1052,   427,   857,   438,   401,   261,
    1804      116,   952,   787,   953,   402,   954,   403,    78,  1051,   382,
    1805      383,   834,   600,    52,    51,   817,   145,   469,   409,   809,
    1806       98,    99,   404,  1168,   720,   149,  1151,  1152,   725,   605,
    1807      504,    51,   810,   816,   907,    58,   117,   154,   162,  1363,
    1808      406,    78,  1153,   155,   811,   187,   156,    52,   210,   342,
    1809      937,    51,   194,   624,    98,   217,   805,   628,   227,   474,
    1810     1185,  1186,   911,   806,   376,   150,   407,   424,   398,    58,
    1811      220,    98,   399,   400,   124,    33,    71,   663,   401,   807,
    1812      377,   717,   125,   177,   402,   190,   403,   115,    98,    33,
    1813      808,    98,   473,   475,   518,   115,   672,   821,   267,   272,
    1814      849,   824,   404,   211,   676,  1285,   221,  1121,   203,    65,
    1815       71,   281,  -239,  -239,   144,   866,  1383,  1384,   108,   108,
    1816      406,   820,   841,   151,    72,   152,   844,   827,   310,   149,
    1817      153,   592,   177,  1230,  1225,   177,   162,   115,   345,  1444,
    1818     1425,   210,    33,    65,   847,   847,   407,   901,   372,   410,
    1819      714,   952,   108,   953,  1162,   954,  1471,   146,    72,   204,
    1820      847,   667,   669,  1383,  1384,   148,   187,   187,  1167,    98,
    1821      408,   282,   805,   919,   162,   169,  1286,   469,   154,   806,
    1822      262,    98,   267,   263,   155,  -239,   661,   156,  1385,   108,
    1823       51,  1499,   213,  1501,   566,   807,   469,   162,   577,   170,
    1824      410,  1176,   210,   151,   469,   152,   397,   190,   157,   441,
    1825      153,  1214,   707,  1425,   253,  1218,   410,   474,   847,   977,
    1826      310,   143,   666,   668,   696,   809,    33,    33,   567,   724,
    1827       98,  1001,    51,   585,   461,  1394,  1180,  1062,   810,    99,
    1828      272,  1153,    98,   177,   291,   272,   267,   267,   737,  1000,
    1829      811,   729,   115,  1315,   162,  1318,  1320,   439,   658,    78,
    1830      650,  1178,   805,  1177,    78,    52,   708,  1066,  1075,   806,
    1831      167,  1168,    98,   242,   245,   796,   940,   310,   605,  1151,
    1832     1152,    33,  1513,  1181,   659,   807,   477,    58,   665,  1235,
    1833      310,   437,   172,  1158,   670,  1153,   988,   177,   418,   479,
    1834      410,   410,   518,  1069,   177,  1069,   569,   518,    33,  1528,
    1835      518,   149,   791,  1098,   182,  1455,   843,  1236,   372,  1159,
    1836     1512,   115,  1052,  1179,   492,   345,   820,   493,    71,   598,
    1837      616,   658,   202,  1004,   167,   887,  1051,   248,   817,   730,
    1838     1523,  1159,   386,   809,   621,   481,   440,  1527,   621,   253,
    1839      332,    98,   499,   818,  1182,   597,   810,   659,   387,   731,
    1840      287,    65,   848,   848,   781,  1483,   470,   330,   811,   599,
    1841      108,  1488,   177,    43,    44,   267,    72,  1100,   848,   834,
    1842      825,   112,   597,   141,   142,   187,   251,   509,   389,   177,
    1843     1308,  1508,   372,   177,    43,    44,  1515,  1101,   445,   513,
    1844     1420,   378,   592,   267,   390,   310,   310,   592,   877,   267,
    1845     1309,   621,   547,   548,   391,  1153,  1346,   458,  1429,   552,
    1846      553,  1107,   853,  1083,    78,   190,   696,  1168,   393,   434,
    1847      392,   741,   115,   455,  1168,   469,   848,   625,   859,  1408,
    1848      636,   629,   112,    78,   394,   972,  1119,   547,   554,   555,
    1849      267,    78,  1370,  1409,   902,    43,    44,   860,   267,   330,
    1850      621,   916,    51,  1086,  1224,   372,   580,   713,   410,    99,
    1851      903,   707,  1216,   115,   213,  -294,   871,   999,   410,   941,
    1852      870,   858,   547,   753,   981,   310,  1168,   115,  -525,    78,
    1853      310,   434,   310,   310,   605,    52,   904,   575,  1001,   874,
    1854      744,   410,    98,   576,   345,   556,   557,   599,   902,  1414,
    1855     1415,   904,   905,   868,  1429,  1139,  1141,    58,  1124,  1429,
    1856      410,  1165,   112,   253,  1063,   708,   470,  1064,  1456,   167,
    1857      -12,  1260,  1261,  1107,   898,    43,    44,  1166,   901,  1429,
    1858      558,   559,  1457,  1165,   696,   470,  1429,   837,   569,   569,
    1859      264,   838,  -448,   470,   696,  1299,   310,  1301,    71,  1291,
    1860      900,   741,  -449,   758,   594,   696,   621,   345,   638,   677,
    1861      616,  1300,  1461,  1302,   277,   576,   598,  1347,   598,  1461,
    1862        2,   207,     4,     5,     6,     7,    59,    59,   999,   705,
    1863      839,    65,   279,  1344,   840,   213,   621,   280,   549,   112,
    1864      108,   621,   698,   616,   550,   551,    72,   621,   699,   715,
    1865      621,   621,    43,    44,   333,   716,   804,   334,   599,   131,
    1866       59,   132,   133,   134,   707,   839,   621,  1011,   267,  1082,
    1867      335,  1509,    43,    44,     8,     9,    10,    11,    12,   384,
    1868      726,   177,   336,   740,   330,   330,   727,  1056,    37,   741,
    1869       38,   762,   763,   764,    59,  -112,   177,    59,   115,  -112,
    1870      112,   895,  1135,   798,   410,   881,    33,  1112,  1393,   177,
    1871     1113,   741,  1114,    43,    44,    50,   114,  1094,   708,   719,
    1872      337,   723,    78,  1333,   621,   921,   616,  1334,  1138,   836,
    1873      597,   371,   713,   713,    36,   398,  1017,   883,   338,   399,
    1874      400,   899,   375,   741,   850,   401,   114,   114,    78,    50,
    1875      966,   402,   330,   403,   291,   979,   967,   865,   388,   345,
    1876       50,   699,  1212,   744,   744,  1140,    50,   597,   576,   404,
    1877     1340,   330,   804,   599,    50,  1341,   741,  1150,   396,  1410,
    1878       50,   741,   440,    50,   348,  1357,    50,  1221,   406,   410,
    1879      952,   177,   953,  1463,   954,  1464,  1422,  1343,   425,   114,
    1880      114,  1348,  1411,   741,   696,   696,   569,   741,  1408,   426,
    1881      592,   253,   332,   410,   407,   621,    39,   984,   175,   176,
    1882       42,   408,   598,    50,   470,  1430,    50,  1143,   448,    43,
    1883       44,   741,  1477,    50,   598,   330,   560,   561,  1478,   499,
    1884      164,     2,   207,     4,     5,     6,     7,  1533,    59,  1510,
    1885      470,   970,   967,   576,  -372,   371,   213,   332,   410,   696,
    1886      696,   459,   804,  -401,    50,   854,  1353,  1354,  1481,  1422,
    1887      213,   460,   229,   503,   599,   835,    50,   482,    59,   732,
    1888      594,   733,    39,   310,   734,   941,    42,   738,   705,   941,
    1889      941,   507,   960,  1403,   967,    43,    44,   512,  1163,   525,
    1890      707,    50,    50,   562,   164,   345,  1383,  1384,   113,    37,
    1891       78,    38,   345,   895,   906,   895,   908,    50,  1231,  1232,
    1892      455,   802,   563,   597,   564,    50,   565,   115,   339,    47,
    1893       48,   765,   766,   112,    50,   141,   239,    50,    58,   586,
    1894      921,   921,   767,   768,   114,   713,    43,    44,   568,    -3,
    1895      410,   115,   310,  1065,   708,   899,    47,    48,   651,   114,
    1896      658,   213,   652,   114,   653,   898,   655,    50,   114,   656,
    1897     1087,   657,   240,   258,  1495,   744,   660,   241,   662,    71,
    1898      689,    50,    50,   773,   774,   599,   659,   686,    50,   691,
    1899      687,   900,  -243,   728,  1207,    50,   418,   654,   410,   433,
    1900      717,   798,   742,  1306,   345,  1295,  1088,   750,  1267,  1268,
    1901      799,  1270,    65,   769,   770,   771,   772,   801,  1275,   812,
    1902     1277,   108,   856,  1107,   -14,   621,   621,    72,   862,   -15,
    1903     1336,   708,   479,   332,   410,     2,   207,     4,     5,     6,
    1904        7,   705,   696,   310,   855,   112,    50,   141,   142,   696,
    1905      696,   696,   112,   882,   141,   142,   884,   348,    43,    44,
    1906      743,   433,   410,    50,    50,    43,    44,  -295,    47,    48,
    1907       78,   818,   332,   597,     8,     9,    10,    11,    12,   889,
    1908       50,   909,   115,  -422,    50,   638,   522,   895,   716,   108,
    1909      932,  1022,   895,  1364,   637,  -529,   244,  1364,    58,   164,
    1910      924,   921,   934,    37,   938,    38,    33,   945,    59,   267,
    1911       50,   939,   696,  1278,  1279,  1280,   946,   118,   697,   947,
    1912       50,   920,   112,   597,   141,   142,   547,   899,   948,    47,
    1913       48,  1071,   899,   964,    36,    43,    44,   949,    50,  1170,
    1914      950,   974,   975,   976,    50,  -296,  1053,   990,   345,   991,
    1915      348,   440,     8,     9,    10,    11,    12,   992,   993,   994,
    1916      463,   721,  1077,   112,   995,   509,   722,   160,    -3,   215,
    1917     1112,   996,   470,  1113,  -410,  1114,    43,    44,  -409,  1389,
    1918      114,   108,  1019,  1059,    33,    50,  1055,    72,   638,   272,
    1919      115,   330,   894,    50,  1076,   230,  1445,    50,   231,  1078,
    1920     1079,   235,    50,   237,  1229,   114,  1085,   114,  1095,   220,
    1921      246,   310,    36,   348,    39,   741,   175,   176,    42,  1096,
    1922      215,  1097,  1099,   259,  1102,   621,  -297,    43,    44,   115,
    1923      959,   160,  1104,     8,     9,    10,    11,    12,    78,   112,
    1924     1105,   685,   114,   835,   211,   221,  1112,   114,  1087,  1113,
    1925     1106,  1114,    43,    44,  1109,  1133,   348,   348,  1154,  1155,
    1926     1157,  1187,   215,  1171,   326,    33,    58,  1406,  1156,  1172,
    1927     1174,  1175,   348,   340,  1183,  1215,  1194,   705,   621,   621,
    1928     1317,  1189,  1022,    -3,  1088,  1199,   272,  1521,  1202,  1204,
    1929     1213,   310,   492,    36,   522,   114,   522,  1040,  1208,   522,
    1930     1220,  1226,   522,  1217,  1233,  1237,  1239,    71,  1241,  1242,
    1931     1269,    50,  1243,    50,  1244,  1246,  1253,  1272,    78,  1262,
    1932      697,  1263,   429,   215,   115,  1297,   432,  1273,   108,  1290,
    1933      348,  1274,    50,   213,   398,  1276,   230,  1303,   399,   400,
    1934       65,   439,  1284,  1087,   401,  1307,    58,    50,  1305,   108,
    1935      402,   114,   403,  1311,   705,    72,   326,  1312,  1313,  1316,
    1936       50,   215,   114,    50,   114,   526,   215,   108,   404,   527,
    1937      528,   529,   113,  1494,  1321,  1323,  1329,  1331,  1330,  1088,
    1938     1332,  1339,   267,  1342,  1349,  1350,   406,  1170,   432,  1280,
    1939     1358,   487,  1359,   530,  1265,   531,    50,   532,   533,   621,
    1940      114,  1360,   114,   497,  1366,    39,   114,   184,   185,    42,
    1941      658,  1367,   407,   520,   114,  1377,  1378,  -411,    43,    44,
    1942      470,  1381,  1392,  1396,   115,   177,   160,    50,    50,   108,
    1943      440,  1400,  1398,  1401,   754,    72,   659,  1402,   697,   759,
    1944     1407,  1421,    50,  1087,   893,  1334,   410,   115,   697,  1416,
    1945     1417,   215,    47,    48,   115,  1418,   115,   584,   115,   697,
    1946     1173,   589,   108,  1419,  1426,   894,  1435,   685,  1437,   151,
    1947     1431,   152,  1439,  1405,    78,   230,   153,   235,  1433,  1088,
    1948      622,    78,  1441,   174,   626,   880,   526,   463,  1493,    59,
    1949      527,   528,   529,   115,  1443,   115,  1449,  1448,    68,   119,
    1950     1450,  1451,    58,  1462,  1472,  1474,   115,  1476,  1479,    58,
    1951     1480,   348,  1493,  1493,   530,  1487,   531,    50,   532,  1288,
    1952      162,  1502,   310,  1503,  1507,   254,    39,  1516,  1514,    50,
    1953       42,   215,    68,    78,  1518,  1524,  1531,  1493,  1532,    43,
    1954       44,   326,   326,  1170,   372,  1188,   775,   777,   776,   161,
    1955     1170,   778,   477,  1111,   867,   779,   869,    59,  1289,  1395,
    1956     1482,    58,   108,   230,  1534,    45,  1352,  1219,   681,   222,
    1957       76,   637,   215,    47,    48,  1368,   470,   114,  1465,  1193,
    1958     1201,   118,   890,   470,   891,   108,   912,  1074,  1070,   793,
    1959     1108,    72,   108,  1018,   861,  1084,   926,   783,    72,  1298,
    1960      710,   935,  1170,   973,    76,   260,   915,   487,    50,   326,
    1961       50,   487,     0,   978,   784,     0,   785,   114,     0,     0,
    1962      416,   520,     0,   520,   989,  1040,   520,     0,   326,   520,
    1963        0,   348,   348,     0,     0,   470,     0,     0,     0,     0,
    1964       50,   223,     0,   435,   108,     0,     0,   331,     0,    59,
    1965       72,     0,     0,   443,     0,   260,   350,     0,   697,   697,
    1966        0,   114,     0,     0,     0,   112,     8,     9,    10,    11,
    1967       12,     0,  1112,     0,   637,  1113,     0,  1114,    43,    44,
    1968      114,     0,     0,     0,   114,   405,     0,     0,     0,     0,
    1969        0,   215,   326,     0,     0,     0,   685,     0,    33,     0,
    1970      423,     0,   794,   428,   430,     0,  1319,   910,   161,     0,
    1971        0,     0,     0,   697,   697,     0,     0,     0,     0,   215,
    1972        0,  1356,     0,   519,   215,     0,    36,     0,   353,   446,
    1973        0,   114,   833,   449,     0,   450,     0,   589,     0,     0,
    1974        0,     0,     0,   842,   457,     0,     0,     0,     0,     0,
    1975       68,     0,     0,     0,     0,   471,     0,     0,     0,     0,
    1976        0,   330,     0,     0,     0,   478,     0,     0,   114,     0,
    1977      568,    39,   410,   430,  1382,    42,     0,  1390,    47,    48,
    1978        0,     0,    50,     0,    43,    44,    39,    50,   184,   185,
    1979       42,     0,     0,   215,   681,    59,    59,     0,   971,    43,
    1980       44,   447,     0,     0,    50,     0,     0,   215,   412,     0,
    1981      712,     0,     0,     0,     0,   420,     0,    59,    47,    48,
    1982        0,  1428,    76,  1148,  1149,   186,  1432,    76,   114,     0,
    1983        0,     0,   487,    47,    48,    59,     0,     0,     0,   260,
    1984        0,     0,     0,   590,    39,     0,   175,   176,    42,   618,
    1985      497,   685,     0,  1103,     0,  1454,     0,    43,    44,  1296,
    1986        0,     0,   623,     0,     0,     0,   623,   674,     0,     0,
    1987     1012,     0,  1115,     0,   163,     0,  1115,     0,  1196,  1197,
    1988      114,   214,     0,   375,   348,   348,     0,   412,   195,     0,
    1989      233,   218,    59,   700,   228,     0,   697,    59,   215,     0,
    1990        0,     0,     0,   697,   697,   697,    39,     0,   184,   185,
    1991       42,   980,   910,     0,     0,   471,     0,     0,     0,    43,
    1992       44,   223,     0,  1115,     0,     0,     0,     0,     0,   350,
    1993       59,   519,   214,     0,   471,     0,   519,     0,     0,   519,
    1994     1522,     0,   471,     0,   574,   596,  1522,   597,   114,     0,
    1995      114,   114,   578,    47,    48,   581,     0,  1522,   910,     0,
    1996      692,  1522,     0,   430,     0,     0,   697,     0,     0,     0,
    1997        0,     0,   163,     0,   214,     0,     0,     0,   706,     0,
    1998       68,     0,     0,     0,   373,     0,     0,    76,     0,   430,
    1999     1122,     0,     0,   430,     0,     8,     9,    10,    11,    12,
    2000        0,   353,     0,     0,     0,   348,    76,     0,     0,    79,
    2001      163,     0,   216,     0,    76,   412,     0,     0,     0,   420,
    2002     1115,     0,   350,   681,     0,     0,     0,    33,   243,   114,
    2003       59,     0,   353,   163,     0,   214,     0,     0,  1012,     0,
    2004        0,     0,     0,    79,     0,   442,   487,  1089,   326,     0,
    2005      353,     0,    76,    59,     0,    36,     0,     0,     0,     0,
    2006       59,  1322,     0,   216,     0,     0,     0,   786,  1324,  1325,
    2007     1326,     0,     0,   214,     0,     0,    50,    50,   214,     0,
    2008      224,     0,     0,     0,   623,   797,   114,   114,   215,   879,
    2009        0,     0,     0,   498,   353,   412,   814,     0,   886,   743,
    2010      833,   410,   888,     0,     0,   216,     0,    47,    48,     0,
    2011        0,     0,    59,     0,   590,     0,     0,   910,     0,   590,
    2012        0,     0,     0,     0,   114,   623,     0,     0,   350,   350,
    2013        0,  1369,     0,    39,     0,   184,   185,    42,     0,     0,
    2014     1115,     0,  1115,  1115,   350,     0,    43,    44,     0,     0,
    2015        0,     0,     0,     0,   373,     0,     0,   353,     0,     0,
    2016        0,     0,   692,   214,     0,     0,   216,   355,     0,     0,
    2017        0,     0,   893,   471,   410,     0,   910,   910,   681,     0,
    2018       47,    48,     0,    50,   114,     0,   574,   574,     0,     0,
    2019        0,     0,    39,   114,   184,   185,    42,     0,     0,   471,
    2020      353,   353,   350,     0,   216,    43,    44,    50,    50,   216,
    2021        0,   925,     0,     0,   430,     0,   353,     0,     0,     0,
    2022        0,  1115,     0,     0,     0,  1469,     0,  1469,   373,     0,
    2023        0,  1492,    50,   410,   353,     0,     0,   706,     0,    47,
    2024       48,     0,   955,   214,    39,    76,   184,   185,    42,     0,
    2025        0,     0,     0,     0,     0,     0,     0,    43,    44,   214,
    2026        0,    79,  1469,     0,  1469,     0,    79,     0,     0,   872,
    2027      215,    76,     0,   875,   353,     0,     0,     0,  1115,  1115,
    2028      692,     0,     0,   266,   214,     0,     0,     0,     0,     0,
    2029      692,    47,    48,   623,   216,     0,   987,     0,     0,     0,
    2030        0,   692,     0,     0,     0,     0,    81,     0,     0,   353,
    2031        0,   998,     0,  1061,     0,     0,  1446,     0,     0,     0,
    2032        0,     0,     0,     0,     0,  1089,     8,     9,    10,    11,
    2033       12,     8,     9,    10,    11,    12,     0,     0,     0,     0,
    2034       81,   534,   535,   536,   537,   538,   539,   540,   541,   542,
    2035      543,   544,   353,     0,     0,     0,     0,     0,    33,     0,
    2036      224,    68,   353,    33,     0,     0,     0,   215,   223,     0,
    2037        0,     0,     0,   353,   216,   545,  1496,   225,     0,     0,
    2038        0,     0,     0,   797,   910,  1504,    36,     0,     0,     0,
    2039      706,    36,     0,  1067,     0,     0,    39,     0,   184,   185,
    2040       42,   910,     0,   214,   574,     0,     0,     0,     0,    43,
    2041       44,     0,     0,     0,     0,   216,     0,     0,     0,  1081,
    2042     1089,     0,     0,     0,     0,     0,    79,     0,   430,   119,
    2043      920,   214,   597,    76,     0,   596,   214,   597,    47,    48,
    2044      355,     0,     0,    47,    48,    79,     0,    88,     0,     0,
    2045        0,     0,     0,    79,     0,   353,     0,     0,     0,     0,
    2046     1184,     0,   353,     0,   356,     0,     8,     9,    10,    11,
    2047       12,   355,     0,   910,   910,     0,     0,     0,     0,     0,
    2048        0,    88,   590,     0,     0,     0,     0,     0,     0,   355,
    2049        0,    79,     0,     0,     0,   428,     0,     0,    33,     0,
    2050      692,   692,     0,   350,   350,   214,     0,     0,     0,     0,
    2051      128,   128,   128,     0,     0,     0,     0,   412,   226,   214,
    2052     1089,  1169,     0,     0,     0,     0,    36,     0,     0,     0,
    2053        0,    39,     0,   355,   216,    42,     0,     0,     0,     0,
    2054      498,     0,     0,     0,    43,    44,     0,     0,     0,     0,
    2055        0,     0,  1468,     0,  1468,   692,   692,     0,    81,     0,
    2056        0,     0,   216,    81,     0,     0,     0,   216,     0,     0,
    2057       45,     0,   353,   353,     0,   353,   353,     0,    47,    48,
    2058        0,     0,   128,     0,   128,     0,     0,     0,     0,  1468,
    2059        0,  1468,  1125,    76,     0,     0,   355,     0,     0,     0,
    2060        0,     0,     0,     0,     0,   363,     0,     0,  1136,   276,
    2061      214,     0,     0,     0,     0,     0,     0,     0,   326,     0,
    2062        0,     0,     0,     0,     0,     0,   706,   353,   353,     0,
    2063        0,     0,     0,     0,     0,     0,   216,     0,     0,   355,
     1798      51,   115,   398,   399,   759,   151,   152,    99,   400,   153,
     1799     116,   745,    71,   401,   402,   451,   403,   427,   404,   951,
     1800     952,    78,   734,    52,   268,   953,   409,   719,   856,   808,
     1801    1051,   724,  1167,   833,    51,   438,   604,   118,   815,   809,
     1802    1362,    99,   503,   599,   906,   149,    71,   382,   383,   154,
     1803     819,    51,   810,   936,   786,    78,   826,    52,   162,   666,
     1804     668,    72,   662,   706,  1152,   187,  1175,   203,   210,   124,
     1805     517,    51,   194,   816,   408,   217,   145,   155,   227,    33,
     1806     220,   671,   398,   399,   406,   804,   125,   160,   400,   675,
     1807    1150,  1151,   805,   401,   402,    72,   403,   807,   404,   806,
     1808     473,   475,   108,   108,   910,  -239,  -239,   115,   424,   848,
     1809      65,  1229,  1284,   261,  1177,   115,   156,   204,   267,   272,
     1810      98,   474,   846,   846,   865,    33,   723,   262,  1176,   213,
     1811     263,    33,    33,   469,  1120,   623,   108,   820,   846,   627,
     1812    1443,   823,    33,   259,    65,   736,   151,   152,   310,   149,
     1813     153,   160,  1424,   410,    98,   565,   162,   115,   345,   167,
     1814    1179,   210,   840,   342,   406,   150,   843,  1234,   372,   951,
     1815     952,    98,   900,   108,   146,   953,  1178,    33,  -239,   591,
     1816     713,  1161,   918,  1285,   326,   190,   187,   187,    98,   566,
     1817     154,    98,   177,   340,   162,  1235,   846,   157,   665,   667,
     1818     291,   804,   267,   253,   418,   410,   410,  1180,   805,   790,
     1819      51,  1157,   847,   847,   479,   806,   410,   162,   155,    58,
     1820     117,  1512,   210,   167,   660,  1424,   151,   152,   847,   441,
     1821     153,  1314,   939,  1317,  1319,   808,   144,  1158,   437,   474,
     1822     310,   177,   429,   879,   177,   809,   432,  1061,  1527,   817,
     1823    1050,   596,    51,    58,   999,   819,   330,   156,   810,    99,
     1824     272,   716,   728,  1152,    71,   272,   267,   267,   729,    98,
     1825     148,   976,   115,    78,   162,    52,   326,   517,    78,   407,
     1826    1167,    98,   517,   440,   604,   517,   847,   211,   730,  1000,
     1827     221,   804,   481,   469,   461,  1184,  1185,   310,   805,   498,
     1828    1074,   649,   657,   987,  1099,   806,   397,   190,   432,  1065,
     1829     310,   486,   469,    72,   707,   695,   172,  1152,   434,   886,
     1830     469,   706,  1382,  1383,  1100,   281,   568,  1382,  1383,   664,
     1831      98,   149,   445,   519,   164,   669,   169,   182,   372,   780,
     1832    1454,   115,    98,  1150,  1151,   345,   160,   584,   330,   597,
     1833     615,   458,   177,   808,   108,  1097,   795,  1181,  1051,   407,
     1834     170,   972,    65,   809,   620,   112,  1158,   470,   620,  1224,
     1835    1307,   977,    98,  1003,   202,   657,   810,   583,    43,    44,
     1836     434,   588,   988,  -294,   624,   282,   477,  1470,   628,   112,
     1837    1308,   376,   174,   248,  1384,   267,   816,   842,   164,  1393,
     1838     621,   833,    43,    44,   625,   187,   177,   377,   696,  1482,
     1839    1166,   213,   372,   177,   112,  1487,   141,   142,   167,   876,
     1840     253,   332,  1498,   267,  1500,   310,   310,    43,    44,   267,
     1841     752,   620,   555,   556,   254,  1507,  1167,  1152,    78,   251,
     1842    1514,   439,   112,  1167,  1138,  1140,  1106,  -524,    33,   591,
     1843     253,    98,   115,   593,   591,    43,    44,    78,   244,   386,
     1844     264,   326,   326,  1082,  1419,    78,  1085,   557,   558,   598,
     1845     267,    58,   836,   -12,   706,   387,   837,  1118,   267,  1369,
     1846     620,   177,    51,   757,   333,   372,   712,   869,   680,    99,
     1847     940,   334,   115,   433,    71,  1167,  1223,   658,   177,   389,
     1848     604,   118,   177,    78,   310,    52,   115,   998,  -448,   310,
     1849     491,   310,   310,   492,  1215,   390,   695,   740,   857,   743,
     1850     824,  1407,   596,   345,  1511,   190,   486,   470,   326,   416,
     1851     486,   971,   213,   330,   330,  1408,  1413,  1414,   551,   552,
     1852     519,   391,   519,    72,  1522,   519,   470,   326,   519,  -449,
     1853     469,  1526,   435,   867,   470,   433,  1000,   392,  1106,   253,
     1854     332,   410,   443,   900,   858,   980,   635,   568,   568,   576,
     1855     658,   410,   707,  1259,  1260,   310,   915,   897,  1050,   277,
     1856     521,  1147,  1148,   859,   108,   620,   345,  1149,   393,   615,
     1857     704,   901,    65,   164,  1455,   597,  1343,   597,   797,  1039,
     1858     330,   903,    98,   579,   394,   410,   598,   902,  1456,   696,
     1859      39,   326,   175,   176,    42,   620,   279,   904,   998,   330,
     1860     620,   793,   615,    43,    44,   901,   620,   903,   280,   620,
     1861     620,   567,   518,   410,   695,   835,  1195,  1196,   335,    47,
     1862      48,  1062,   574,  1063,   695,   620,   548,   267,   575,   371,
     1863     849,   832,   549,   550,  1428,   695,   588,   838,  1345,   287,
     1864    1164,   839,   841,   864,  1010,     2,   207,     4,     5,     6,
     1865       7,  1392,    43,    44,  1164,  1298,  1165,   115,   440,   336,
     1866     894,  1300,   337,   330,  1055,     8,     9,    10,    11,    12,
     1867    1290,  1299,   838,   676,   338,    78,  1081,  1301,   512,   575,
     1868     378,    58,   740,   620,   920,   615,  1093,   371,   398,   399,
     1869     706,   712,   712,   680,   400,   803,    33,   598,  1346,   401,
     1870     402,    78,   403,   834,   404,   707,   375,   696,   593,   384,
     1871     697,   388,    37,  1016,    38,   684,   698,   696,   345,   396,
     1872     714,   725,   743,   743,    36,   498,   715,   726,   696,   177,
     1873    1428,   486,   213,   408,   739,  1428,  1462,   880,  1463,  1356,
     1874     740,   882,  1172,   740,   177,   425,   213,   740,   951,   952,
     1875     426,   742,   899,   410,   953,  1428,   673,   177,   448,    47,
     1876      48,  1409,  1428,  -372,   470,   568,  -112,   521,   291,   521,
     1877    -112,   406,   521,   965,   620,   521,   983,    -3,  1421,   966,
     1878     898,   597,   699,  -401,  1068,   978,  1068,   919,  1142,   596,
     1879     470,   698,  1509,   597,  1460,    47,    48,   591,  1211,  1321,
     1880     870,  1460,   410,  1339,   575,   459,  1323,  1324,  1325,   740,
     1881     979,   803,   598,     2,   207,     4,     5,     6,     7,   518,
     1882    1335,  1332,  -295,   502,   518,  1333,   460,   518,   704,     8,
     1883       9,    10,    11,    12,   695,   695,   940,   213,   482,   177,
     1884     940,   940,   310,   112,   229,   141,   142,    50,   114,  1340,
     1885    1480,  1421,  1342,  1508,    71,   740,    43,    44,   740,   873,
     1886      33,   410,  1347,    78,   345,   731,   506,   732,   740,  1368,
     1887     733,   345,   894,   737,   894,  1162,   797,  1410,   114,   114,
     1888      37,    50,    38,  1407,   852,  1429,   115,   511,    36,   695,
     1889     695,   740,    50,   418,   653,   410,  1476,   524,    50,   920,
     1890     920,   803,  1477,    72,   712,  1213,    50,  1039,  1532,  1217,
     1891     115,   310,    50,   598,   575,    50,   553,   554,    50,  1086,
     1892     969,   966,   680,  1266,  1267,   561,  1269,   696,   696,   559,
     1893     560,   114,   114,  1274,   743,  1276,   479,   332,   410,  1494,
     1894     684,   707,   562,   657,   108,   486,  1088,   326,   897,   817,
     1895     332,   596,    65,   563,  1305,    50,   332,   410,    50,   112,
     1896    -296,   141,   142,   345,   564,    50,   407,     8,     9,    10,
     1897      11,    12,    43,    44,  1206,  1352,  1353,   878,  1277,  1278,
     1898    1279,   704,   696,   696,   620,   620,   885,  1123,  1106,   410,
     1899     887,  1134,  1064,   410,   898,   339,    50,   112,    33,   832,
     1900    1402,   966,   310,  1355,  1111,  1382,  1383,  1112,    50,  1113,
     1901      43,    44,   108,  1137,  1169,   596,  1230,  1231,   707,   330,
     1902     764,   765,   230,    78,   598,   231,    36,   440,   235,  1139,
     1903     237,   596,   659,    50,    50,  1294,   585,   246,  1228,   650,
     1904     112,   115,    -3,  1220,  1363,   410,   894,  1111,  1363,    50,
     1905    1112,   894,  1113,    43,    44,   651,  1381,    50,   508,  1389,
     1906     920,    58,   652,    72,   766,   767,    50,   654,   267,    50,
     1907     655,   834,   695,   772,   773,   656,   114,   680,   661,   695,
     1908     695,   695,   258,   546,   547,     2,   207,     4,     5,     6,
     1909       7,   114,   685,   686,  1388,   114,   690,    39,   688,    50,
     1910     114,    42,  -243,  1427,   108,   716,   727,   345,  1431,   741,
     1911      43,    44,   470,    50,    50,   749,   798,   -14,   546,   800,
     1912      50,   811,   -15,  -297,   854,   861,   855,    50,  1295,  1087,
     1913       8,     9,    10,    11,    12,   881,    45,  1453,   658,   883,
     1914     888,   931,   695,   899,    47,    48,   908,  1444,   272,   115,
     1915    -422,  -528,    37,   546,    38,   715,   923,   933,   220,   944,
     1916     937,    33,   945,   230,   946,   696,   898,   938,   947,   684,
     1917     310,   898,   696,   696,   696,   948,   949,   963,    50,   973,
     1918     974,   975,    71,   989,   620,   990,   991,   992,   115,    36,
     1919     993,    78,   994,    68,   119,    50,    50,  1086,   995,  -410,
     1920    -409,  1060,     8,     9,    10,    11,    12,  1018,  1052,   213,
     1921    1054,  1058,    50,   893,  1075,  1076,    50,   704,  1077,  1078,
     1922    1084,    58,  1521,  1094,  1088,   740,   636,    68,  1521,  1095,
     1923     496,    72,  1096,    33,  1098,   696,  1101,   620,   620,  1521,
     1924     958,  1103,    50,  1521,   161,   272,  1104,  1405,  1105,   525,
     1925     310,   108,    50,   526,   527,   528,  1520,   768,   769,   770,
     1926     771,    36,  1169,  1108,   222,  1132,  1153,  1154,  1155,  1156,
     1927      50,    78,   108,  1170,  1171,  1173,    50,   529,  1174,   530,
     1928      65,   531,   532,   115,  1182,  1188,    -3,   398,   399,  1193,
     1929     108,  1186,  1086,   400,   704,  1198,  1203,  1201,   401,   402,
     1930     260,   403,   230,   404,   235,   567,   440,   410,   491,  1207,
     1931    1214,    72,   114,    47,    48,  1212,  1216,    50,  1219,  1088,
     1932    1232,   761,   762,   763,   684,    50,  1225,  1236,  1238,    50,
     1933    1240,  1241,  1245,    50,   113,  1242,   114,  1243,   114,  1252,
     1934    1261,   267,   331,   112,  1262,   141,   239,  1268,  1183,  1271,
     1935     260,   350,   108,  1493,  1296,  1289,    43,    44,   620,  1404,
     1936     470,    39,  1272,   184,   185,    42,  1273,   211,   221,   406,
     1937    1275,  1283,  1302,   114,    43,    44,  1304,  1306,   114,   909,
     1938     405,  1310,   240,   115,  1311,   108,  1312,   241,  1315,    58,
     1939     230,  1320,  1086,   657,  1322,   423,  1328,  1329,   428,   430,
     1940     892,  1338,   410,   161,  1330,  1331,   115,  1087,    47,    48,
     1941    1341,  1279,  1348,   115,  1357,   115,  1349,   115,  1169,  1088,
     1942    1358,   893,  1359,  1365,   446,  1169,   114,    78,   449,  1366,
     1943     450,   151,   152,  1376,    78,   153,  1377,  -411,  1380,   457,
     1944    1391,  1395,    50,  1397,    50,    68,  1406,  1492,  1399,  1400,
     1945     471,  1467,   115,  1467,   115,  1401,  1415,  1333,  1416,  1417,
     1946     478,  1418,  1420,    50,   439,   115,  1425,    72,   430,    58,
     1947     970,  1492,  1492,   177,    72,    76,  1430,  1169,    50,   162,
     1948    1434,   310,   114,  1436,  1432,   108,    78,  1438,  1467,  1440,
     1949    1467,    50,  1442,   114,    50,   114,  1492,  1447,  1448,  1449,
     1950    1450,  1461,  1087,   372,  1471,  1473,  1486,  1475,   108,    76,
     1951       8,     9,    10,    11,    12,   108,   470,   326,  1478,  1479,
     1952    1501,  1187,   959,   470,  1506,  1513,    72,    50,  1502,  1515,
     1953    1517,   114,  1523,   114,   260,  1530,   163,   114,   589,  1531,
     1954     774,    33,  1011,   775,   617,   114,   223,   778,   776,  1110,
     1955     195,   777,  1288,   218,  1481,  1394,   228,   622,    50,    50,
     1956    1533,   622,  1351,  1218,   407,  1367,  1464,   108,   889,    36,
     1957    1192,   890,  1200,    50,  1069,   470,   911,  1073,   792,    39,
     1958    1017,   184,   185,    42,   909,   860,   463,  1107,   658,   330,
     1959     925,   477,    43,    44,  1350,   131,  1297,   132,   133,   134,
     1960    1083,   709,  1087,    39,     0,   184,   185,    42,    43,    44,
     1961     471,   782,     0,   742,   934,   410,    43,    44,   595,   783,
     1962     596,    47,    48,   784,   350,    58,    47,    48,     0,   471,
     1963     909,     0,    58,   353,   163,     0,     0,   471,     0,     0,
     1964       0,     0,   892,     0,   410,     0,   373,     0,    50,     0,
     1965      47,    48,     0,     0,     0,   691,     0,     0,   430,     0,
     1966      50,     0,  1121,     0,     0,     8,     9,    10,    11,    12,
     1967       0,   214,   163,   705,     0,    68,   496,     0,     0,     0,
     1968     233,     0,     0,   430,    58,     0,     0,   430,     8,     9,
     1969      10,    11,    12,     0,     0,   163,    33,     0,  1468,     0,
     1970    1468,   112,   636,   141,   142,     0,   447,   442,   114,     0,
     1971    1011,     0,     0,     0,    43,    44,   350,     0,     0,    33,
     1972       0,     0,   214,     0,    36,     0,     0,    76,     0,    39,
     1973       0,     0,    76,    42,     0,  1468,     0,  1468,     0,    50,
     1974     720,    50,    43,    44,     0,   721,     0,    36,   114,  1465,
     1975       0,  1469,     0,   112,     0,     0,   546,     0,     0,     0,
     1976    1111,   785,     0,  1112,   214,  1113,    43,    44,    45,     0,
     1977      39,    50,   184,   185,    42,     0,    47,    48,   622,   796,
     1978       0,     0,     0,    43,    44,     0,  1497,     0,  1499,   909,
     1979     813,   919,   114,   596,  1316,   508,     0,     0,   113,    47,
     1980      48,     0,     0,     0,     0,   636,     0,    79,   589,   186,
     1981       0,   114,     0,   589,     0,   114,   373,    47,    48,   622,
     1982       0,     0,   350,   350,     0,   214,   223,     0,     0,     0,
     1983    1528,     0,  1529,     0,     0,     0,     0,     0,   350,     0,
     1984      39,    79,   175,   176,    42,  1536,  1537,    39,   909,   909,
     1985       0,    42,     0,    43,    44,     0,   691,     0,     0,   753,
     1986      43,    44,   114,   214,   758,     0,     0,   471,   214,     0,
     1987     525,   216,     0,     0,   526,   527,   528,     0,   224,   375,
     1988       0,     0,     0,   497,     0,     0,   801,   243,   596,     0,
     1989     373,     0,    76,   471,    47,    48,   350,     0,   529,   114,
     1990     530,     0,   531,  1287,     0,   924,   353,     0,   430,     0,
     1991       0,    76,   463,    50,     0,     0,     0,     0,    50,    76,
     1992     112,     0,   216,     0,     0,     0,     0,  1111,     0,     0,
     1993    1112,   705,  1113,    43,    44,    50,   954,   353,     0,     0,
     1994       8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
     1995       0,     0,     0,   214,    39,   353,     0,    76,    42,   114,
     1996       0,  1318,     0,     0,   216,   355,     0,    43,    44,     0,
     1997       0,    33,     0,     0,   691,     0,     0,     0,     0,   866,
     1998       0,   868,     0,     0,   691,   215,     0,   622,     0,     0,
     1999     986,     0,     0,   711,     0,   691,     0,     0,   353,    36,
     2000       0,    47,    48,     0,    39,   997,   184,   185,    42,     0,
     2001      39,   114,   175,   176,    42,     0,     0,    43,    44,     0,
     2002       0,     0,     0,    43,    44,   216,     0,     0,     0,     0,
     2003       0,   914,     0,   214,     0,     0,   215,     0,     0,     0,
     2004       0,     0,     0,   595,     0,   596,     0,     0,     0,   214,
     2005       0,    47,    48,     0,     0,    68,   909,     0,     0,    79,
     2006       0,   353,     0,   216,    79,     0,     0,     0,   216,     0,
     2007       0,     0,     0,   909,   214,     0,     0,   796,   215,   114,
     2008       0,   114,   114,     0,   705,     0,     0,  1066,     8,     9,
     2009      10,    11,    12,     0,     0,   412,    39,     0,   184,   185,
     2010      42,     0,   420,     0,   353,   353,     0,     0,     0,    43,
     2011      44,     0,     0,  1080,     0,     0,     0,     0,     0,    33,
     2012     353,     0,   430,   119,     0,     0,     0,     0,     0,     0,
     2013       0,     0,     0,    81,     0,  1491,     0,   410,   353,   215,
     2014       0,     0,     0,    47,    48,   909,   909,    36,     0,    76,
     2015       0,     0,    39,   216,   184,   185,    42,     0,   224,     0,
     2016     114,     0,     0,     0,     0,    43,    44,    81,     0,     0,
     2017       0,     0,     0,     0,   412,    76,   589,   215,   353,     0,
     2018       0,     0,   215,     0,     0,     0,     0,     0,     0,   428,
     2019       0,   892,   214,   410,   691,   691,     0,   350,   350,    47,
     2020      48,     0,     0,     0,   225,     0,     0,    50,    50,     0,
     2021       0,     0,     0,   353,     0,  1168,     0,   114,   114,     0,
     2022     214,     0,     0,     0,    79,   214,     0,     0,     0,     0,
     2023       0,   573,    39,   216,   184,   185,    42,     0,   355,   577,
     2024       0,     0,   580,    79,     0,    43,    44,     0,     0,   691,
     2025     691,    79,     0,     0,     0,   114,   353,     8,     9,    10,
     2026      11,    12,     0,     0,     0,     0,   353,   215,     0,   355,
     2027       0,   266,   223,     0,   216,     0,     0,   353,  1102,    47,
     2028      48,     0,     0,     0,     0,     0,     0,   355,    33,    79,
     2029       0,   356,     0,     0,   214,     0,     0,  1114,     0,    59,
     2030      59,  1114,   412,     0,     0,     0,   420,     0,   214,     0,
     2031       0,     0,     0,     0,    50,   114,    36,     0,     0,     0,
     2032     705,    39,     0,   143,   114,    42,     0,     0,     0,   497,
     2033     355,     0,     0,    59,    43,    44,     0,    76,    50,    50,
     2034       0,     0,     0,     0,     0,     0,     0,   215,  1114,     0,
     2035       8,     9,    10,    11,    12,     0,     0,     0,     0,   353,
     2036     711,     0,  1265,    50,     0,     0,   353,    59,    47,    48,
     2037      59,     0,   126,   129,   130,   242,   245,     0,     0,     0,
     2038       0,    33,   412,    68,     0,    81,     0,     0,   215,     0,
     2039      81,     0,   216,   355,     0,   691,     0,   705,     0,   214,
     2040       0,   119,     0,     0,     0,     0,     0,     0,     0,    36,
     2041       0,     0,     0,     0,    39,    88,   184,   185,    42,     0,
     2042     216,     0,     0,     0,     0,   216,     0,    43,    44,     0,
     2043       0,     0,   691,     0,     0,     0,   355,   355,     0,   691,
     2044     691,   691,     0,     0,   255,  1114,   256,     0,     0,    88,
     2045     350,   350,   355,  1491,     0,   410,     0,   348,     0,     0,
     2046       0,    47,    48,  1168,     0,     0,     0,     0,     0,     0,
     2047     355,     0,   573,   573,     0,     0,   353,   353,     0,   353,
     2048     353,    79,     0,     0,   225,     0,   226,     0,     0,     0,
     2049       0,     0,     0,     0,   216,     0,   119,    76,     0,     0,
     2050       0,     0,   691,     0,     0,     0,   215,    79,   216,     0,
    20642051     355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2065      216,     0,     0,     0,     0,   355,     0,   225,     0,     0,
    2066        0,     0,     0,     0,   128,     0,     0,     0,  1266,     0,
    2067        0,     0,   128,   355,   128,   128,     0,     0,     0,   128,
    2068        0,   128,   128,   412,    79,     0,     0,     0,     0,    68,
    2069        0,     0,     0,     0,     0,     0,     0,     0,   353,    88,
    2070        0,   692,     0,   706,    88,     0,  1351,   119,     0,     0,
    2071       79,     0,     0,   355,     0,     0,     0,     0,     0,     0,
    2072        0,     0,  1222,    81,     0,     0,     0,     8,     9,    10,
    2073       11,    12,     0,     0,     0,     0,     0,   356,   692,     0,
    2074      223,   216,    81,     0,     0,   692,   692,   692,   355,     0,
    2075       81,   128,     0,     0,     0,     0,   350,   350,     0,    33,
    2076        0,    76,     0,     0,     0,     0,     0,     0,   356,  1169,
    2077        0,     0,     0,   353,     0,   353,     0,     0,     0,     0,
    2078        0,     0,     0,     0,     0,     0,   356,    36,    81,     0,
    2079        0,   355,    39,     0,   184,   185,    42,     0,   226,     0,
    2080      214,   355,   119,     0,     0,    43,    44,   224,   692,     0,
    2081      353,     0,   355,     0,     0,     0,     0,   353,   353,   353,
    2082        0,     0,     0,   126,   129,   130,     0,     0,   353,   353,
    2083      356,   893,     0,   410,     0,     0,     0,     0,     0,    47,
    2084       48,    76,     0,     8,     9,    10,    11,    12,     0,     0,
    2085        0,   168,     0,   173,     0,     0,   179,   180,   181,     0,
    2086      183,  1466,     0,  1470,    88,     0,     0,     0,     0,     0,
    2087        0,     0,    79,     0,   234,    33,     0,   350,   363,     0,
    2088      353,     0,     0,    88,     0,     0,   249,   250,     0,     0,
    2089        0,    88,     0,   356,   355,   255,     0,   256,  1498,     0,
    2090     1500,   355,   119,    36,     0,     0,     0,     0,    39,   363,
    2091      184,   185,    42,     0,     0,     0,     0,     0,     0,     0,
    2092        0,    43,    44,     0,     0,  1169,     0,   363,     0,    88,
    2093        0,   216,  1169,     0,     0,     0,   356,   356,     0,     0,
    2094        0,     0,  1529,     0,  1530,     0,     0,   186,     0,   353,
    2095        0,     0,   356,     0,     0,    47,    48,  1537,  1538,     0,
    2096        0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
    2097      356,   363,     0,     0,     0,     0,     0,   395,     0,     0,
    2098        0,    81,   214,     0,  1169,     0,     0,   414,   415,     0,
    2099        0,  1517,   419,    33,   421,   422,     0,    76,     0,     0,
    2100        0,     0,     0,     0,    76,     0,     0,    81,     0,     0,
    2101      356,   355,   355,     0,   355,   355,     0,     0,     0,     0,
    2102        0,    36,     0,     0,     0,     0,    39,     0,   184,   185,
    2103       42,     0,    79,     0,   363,     0,     0,     0,     0,    43,
    2104       44,     0,     0,     0,     0,   356,     0,     0,     0,     0,
    2105        0,     0,     0,     0,   128,   128,    76,     0,     0,     0,
    2106        8,     9,    10,    11,    12,   266,   355,   355,     0,     0,
    2107        0,     0,     0,    47,    48,     0,     0,   363,   363,   214,
    2108        0,   128,     0,     0,   128,   128,     0,   128,   356,   128,
    2109      128,     0,    33,   363,   128,   128,     0,     0,   356,     0,
    2110        0,     0,     0,     0,   225,     0,     0,     0,     0,   356,
    2111        0,   363,     0,   216,     0,     8,     9,    10,    11,    12,
    2112       36,     0,    88,     0,     0,    39,     0,   184,   185,    42,
    2113        0,     0,     0,     0,     0,     0,     0,   355,    43,    44,
    2114      588,     0,   595,     0,     0,     0,     0,    33,    88,     0,
    2115        0,   363,     0,   619,   620,     0,     0,     0,     0,     0,
    2116        0,     0,     0,     0,  1492,     0,   410,     0,     0,    81,
    2117        0,     0,    47,    48,     0,    36,     0,     0,     0,   224,
    2118       39,     0,     0,     0,    42,     0,   363,     0,     0,     0,
    2119        0,   356,     0,    43,    44,     0,     0,     0,   356,     0,
    2120       79,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2121      216,     0,   355,     0,   355,     0,     0,     0,     0,   712,
    2122        0,     0,     0,     0,     0,     0,     0,    47,    48,   363,
    2123      128,   128,     0,     0,     0,     0,     0,     0,     0,   363,
    2124        0,     0,     0,     0,     0,   226,     0,     0,     0,   355,
    2125      363,     0,     0,     0,     0,     0,   355,   355,   355,     0,
    2126        0,     0,     0,     0,     0,     0,     0,   355,   355,     0,
     2052       0,    59,     0,     0,     0,     0,   395,     0,     0,     0,
     2053       0,   353,   353,     0,   215,   455,   414,   415,     0,   215,
     2054       0,   419,     0,   421,   422,   355,     0,     0,     0,     0,
     2055      81,    59,     0,     0,     0,   871,     0,     0,     0,   874,
     2056       0,     0,     0,     0,   356,  1114,     0,  1114,  1114,    81,
     2057       0,   350,     0,   363,     0,     0,     0,    81,     0,     0,
     2058       0,     8,     9,    10,    11,    12,     0,     0,   355,   214,
     2059       0,     0,     0,     0,     0,   356,   119,     0,   355,   216,
     2060       0,     0,   353,     0,   224,     0,     0,     0,   215,   355,
     2061       0,     0,    33,   356,     0,    81,     0,     0,     0,  1168,
     2062       0,     0,   215,     0,     0,     0,  1168,   533,   534,   535,
     2063     536,   537,   538,   539,   540,   541,   542,   543,     0,     0,
     2064      36,     0,     0,     0,   223,    39,  1114,   184,   185,    42,
     2065       0,     0,     0,     0,     0,     0,   356,     0,    43,    44,
     2066       0,   544,     0,     0,     0,    76,     0,    88,     0,    79,
     2067     637,     0,    88,     0,     0,     0,     0,   353,  1168,   353,
     2068       0,     0,     0,     0,   186,  1516,     0,     0,     0,     0,
     2069     573,   355,    47,    48,     0,     0,     0,     0,   355,     0,
     2070       0,     0,     0,  1114,  1114,     0,     0,     0,     0,     0,
     2071       0,     0,     0,   215,   353,     0,     0,     0,     0,   356,
     2072       0,   353,   353,   353,     0,     0,     0,     0,     0,     0,
     2073     348,     0,   353,   353,     0,     0,     0,     0,     0,     0,
     2074       0,  1445,     0,     0,     0,    76,     0,     0,     0,     0,
    21272075       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2128       79,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2129       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2130       25,    26,    27,     0,     0,    28,    29,    30,   356,   356,
    2131       88,   356,   356,     0,     0,    33,     0,     0,     0,   355,
    2132        0,     0,     0,     0,     0,     0,     0,     0,     0,    81,
    2133        0,     0,   363,     0,     0,     0,     0,     0,     0,   363,
    2134        0,     0,     0,    36,     0,     0,     0,     0,    39,     0,
    2135       40,    41,    42,     0,     0,     0,     0,     0,     0,     0,
    2136        0,    43,    44,   356,   356,     0,     0,   788,   789,     0,
     2076       0,     0,   356,   356,     0,     0,   226,     0,     0,     0,
     2077       0,   214,     0,     0,     0,     0,     0,     0,   356,     0,
     2078     718,    59,   722,     0,   353,     0,     0,     0,     0,   216,
     2079       0,     0,     0,     0,     0,     0,   356,     0,     0,     0,
     2080       0,  1495,     0,   412,     0,     0,     0,    81,   355,   355,
     2081    1503,   355,   355,     0,     0,     0,     0,     0,     0,   168,
     2082       0,   173,   348,     0,   179,   180,   181,     0,   183,    79,
     2083       0,     0,    88,    81,     0,     0,   356,     0,     0,     0,
     2084       0,     0,   234,     0,     0,     0,   363,     0,     0,     0,
     2085       0,    88,     0,   353,   249,   250,     0,     0,     0,    88,
     2086       0,     0,     0,   355,   355,     0,     0,     0,   214,     0,
     2087       0,   356,     0,     0,     0,     0,     0,   363,  1124,     0,
     2088       0,     0,     0,     0,     0,   348,     0,     0,     0,     0,
     2089       0,     0,     0,     0,  1135,   363,     0,    88,     0,     0,
     2090       0,    76,     0,   215,     0,     0,     0,     0,    76,     0,
     2091       0,     0,     0,     0,   356,   787,   788,     0,     0,     0,
     2092       0,     0,     0,     0,   356,     0,   853,     0,   348,   348,
     2093     225,     0,     0,     0,   355,   356,     0,     0,   363,     0,
     2094       0,     0,   818,     0,   348,   821,   822,     0,   825,     0,
     2095     827,   828,     0,     0,     0,   829,   830,     0,     0,     0,
     2096      76,     0,     0,     8,     9,    10,    11,    12,     0,   412,
     2097       0,   216,     0,     0,     0,   905,   224,   907,     0,     0,
     2098       0,   455,     0,     0,     0,     0,     0,     0,     0,     0,
     2099       0,     0,     0,     0,    33,    81,     0,    79,     0,     0,
     2100       0,   363,   348,     0,     0,     0,     0,     0,  1221,   355,
     2101       0,   355,     0,     0,     0,     0,     0,   356,     0,     0,
     2102       0,     0,    36,     0,   356,     0,     0,    39,     0,   184,
     2103     185,    42,     0,     0,     0,     0,     0,     0,     0,     0,
     2104      43,    44,     0,     0,   363,   363,   355,     0,     0,     0,
     2105       0,     0,     0,   355,   355,   355,     0,     0,     0,     0,
     2106     363,     0,     0,     0,   355,   355,   266,     0,   216,     0,
     2107       0,     0,     0,     0,    47,    48,     0,    79,   363,     0,
     2108       0,     0,     0,     0,     0,   215,     0,     0,     0,    88,
     2109       0,   956,   957,     0,     0,     0,     0,     0,     0,     0,
     2110       0,     0,     0,     0,     0,     0,     0,     0,   587,     0,
     2111     594,     0,     0,     0,     0,    88,   355,     0,   363,     0,
     2112       0,   618,   619,     0,     0,   128,   128,   128,     0,     0,
     2113       0,     0,     0,     0,   356,   356,     0,   356,   356,     0,
     2114       0,     0,     0,     0,     0,     0,   637,     0,     0,     0,
     2115       0,     0,  1021,   363,     0,    81,     0,     0,     0,     0,
     2116       0,    59,     8,     9,    10,    11,    12,    13,    14,    15,
     2117      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2118      26,    27,   215,   348,     0,   355,     0,     0,     0,   356,
     2119     356,     0,  1070,    33,     0,     0,   363,   128,     0,   128,
     2120       0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
     2121       0,     0,   226,     0,     0,     0,     0,   363,     0,     0,
     2122       0,    36,     0,     0,   276,     0,     0,     0,     0,    59,
     2123       0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
     2124      79,     0,     0,     0,     0,     0,     0,  1071,     0,   637,
    21372125       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2138        0,   128,     0,     0,     0,     0,   128,    45,   355,    46,
    2139        0,     0,     0,     0,   819,    47,    48,   822,   823,     0,
    2140      826,     0,   828,   829,     0,     0,     0,   830,   831,     8,
    2141        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2142       19,    20,    21,    22,    23,    24,    25,    26,    27,  -298,
    2143        0,     0,     0,     0,   356,     0,    79,     0,     0,     0,
    2144        0,    33,   166,    79,     0,     0,     0,     0,     0,   363,
    2145      363,   997,   363,   363,     8,     9,    10,    11,    12,   219,
    2146        0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
    2147       88,     0,     0,     0,     0,     0,   225,     0,     0,     0,
    2148     -298,     0,     0,     0,   283,   284,    33,   285,     0,   913,
    2149        0,   914,     0,     0,     0,    79,     0,    81,   917,   918,
    2150        0,     0,     0,   923,   363,   363,   166,     0,     0,   356,
    2151      273,   356,     0,   286,    36,     0,   929,     0,     0,   287,
    2152        0,   933,     0,   288,     0,     0,   289,   290,   291,   292,
    2153      293,   294,    43,    44,     0,   295,   296,     0,     0,   166,
    2154        0,   128,     0,   957,   958,     0,   356,     0,   595,   369,
    2155        0,     0,   374,   356,   356,   356,     0,     0,   297,     0,
    2156      378,     0,     0,     0,   356,   356,   344,    48,   299,   300,
    2157      301,   302,     0,     0,   212,   363,     0,    81,     0,     0,
    2158        0,     0,     0,   232,     0,   236,     0,   238,     0,     0,
    2159        0,     0,     0,     0,   247,     0,     0,     0,     0,     0,
    2160        0,   166,     0,     0,     0,     0,     0,     0,     0,     0,
    2161        0,     0,     0,   219,     0,     0,   356,   226,     0,     0,
    2162        0,     0,     0,     0,     0,   212,     0,   236,   238,   247,
    2163        0,   166,     0,     0,     0,     0,     0,     0,    88,     0,
    2164        0,  1007,     0,  1008,  1009,  1010,     0,     0,     0,     0,
    2165      363,     0,   363,     0,     0,     0,   374,     0,     0,     0,
    2166        0,     0,  1054,   166,     0,     0,     0,   212,     0,   128,
    2167        0,     0,     0,     0,     0,     0,  1060,     0,     0,     0,
    2168        0,     0,     0,     0,     0,   356,     0,   363,   523,     0,
    2169        0,     0,     0,     0,   363,   363,   363,     0,     0,  1072,
    2170        0,   166,     0,     0,     0,   363,   363,     0,     0,     0,
    2171        0,     0,     0,     0,     0,  1080,     0,     0,    88,     0,
     2126     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2127       0,     0,     0,     0,     0,     0,     0,    88,   996,   128,
     2128       0,     8,     9,    10,    11,    12,     0,   128,     0,   128,
     2129     128,     0,    79,     0,   128,     0,   128,   128,     0,   363,
     2130       0,     0,   225,   348,   348,     0,   363,     0,     0,     0,
     2131     283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
     2132       0,    59,     0,    81,     0,     0,     0,     0,     0,     0,
     2133       0,     0,     0,     0,     0,   356,     0,   356,     0,   286,
     2134      36,     0,     0,  1021,     0,   287,     0,     0,     0,   288,
     2135       0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
     2136       0,   295,   296,     0,     0,     0,   128,     0,     0,     0,
     2137       0,     0,   356,     0,     0,     0,     0,     0,     0,   356,
     2138     356,   356,     0,     0,   297,     0,   378,     0,     0,     0,
     2139     356,   356,   344,    48,   299,   300,   301,   302,     0,     0,
     2140       0,     0,  1197,    81,     0,     0,     0,     0,     0,     0,
     2141       0,   166,     0,     0,     0,     0,   363,   363,     0,   363,
     2142     363,     0,     0,     0,     0,     0,     0,     0,   219,     0,
     2143       0,     0,     0,     0,     0,     0,     0,    88,     0,     0,
     2144       0,     0,   356,     0,     0,     0,     0,     0,     0,     0,
     2145       0,   283,   284,     0,   285,  1264,   912,     0,   913,     0,
     2146       0,     0,     0,     0,     0,   916,   917,    59,    59,     0,
     2147     922,   363,   363,     0,     0,   166,     0,     0,     0,   273,
     2148     286,     0,     0,   928,     0,     0,   287,     0,   932,    59,
     2149     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
     2150      44,     0,   295,   296,     0,     0,     0,    59,   166,     0,
     2151       0,   356,     0,     0,     0,   594,     0,     0,   369,     0,
     2152       0,   374,     0,     0,     0,   297,     0,   378,     0,     0,
     2153    1286,     0,     0,    47,    48,   299,   300,   301,   302,     0,
     2154       0,     0,   363,     0,     0,     0,   779,     0,     0,     0,
     2155       0,     0,     0,     0,     0,     0,   348,   348,     0,    81,
     2156       0,     0,     0,     0,    59,     0,    81,     0,     0,    59,
     2157     166,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2158       0,     0,   219,     0,   226,     0,     0,     0,     0,     0,
     2159       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2160     166,     0,    59,     0,     0,    88,     0,     0,  1006,     0,
     2161    1007,  1008,  1009,     0,     0,     0,     0,   363,    81,   363,
     2162       0,     0,     0,     0,     0,   374,     0,     0,     0,  1053,
     2163       0,     0,   166,     0,     0,     0,     0,     0,     0,     0,
     2164       0,     0,     0,  1059,     0,     0,     0,     0,     0,     0,
     2165       0,     0,     0,     0,   363,     0,     0,   522,     0,     0,
     2166       0,   363,   363,   363,     0,     0,     0,     0,   128,   128,
     2167     166,     0,   363,   363,     0,     0,     0,   348,     0,     0,
     2168       0,     0,  1079,     0,     0,    88,     0,     0,     0,     0,
     2169       0,     0,     0,     0,     0,   128,     0,     0,   128,   128,
     2170       0,   128,    59,   128,   128,   592,     0,     0,   128,   128,
     2171     616,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2172       0,     0,     0,     0,   363,    59,  1109,     0,     0,     0,
     2173       0,  1119,    59,     0,     0,     0,  1122,     0,     0,     0,
     2174       0,  1126,     0,     0,     0,     0,  1128,     0,  1129,  1130,
     2175       0,     0,  1133,     0,     0,     0,     0,     0,     0,     0,
     2176       0,  1145,     0,     0,     0,     0,     0,     0,     0,     0,
     2177       0,     0,     0,     0,     0,     0,     0,  1159,  1160,     0,
     2178       0,     0,     0,     0,    59,   166,   166,     0,     0,     0,
     2179       0,   369,     0,   363,     0,     0,     0,     0,     0,     0,
     2180       0,     0,     0,  1189,     0,     0,  1191,     0,     0,     0,
     2181       0,     0,   522,     0,     0,     0,     8,     9,    10,    11,
     2182      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2183      22,    23,    24,    25,    26,    27,  -298,     0,     0,     0,
     2184     708,    88,     0,     0,   128,   128,     0,    33,    88,  1205,
     2185       0,     0,   166,     0,     0,  1209,  1210,     0,     0,     0,
     2186       0,     0,     0,     0,   522,     0,   522,     0,     0,   522,
     2187       0,   166,   522,     0,  1226,    36,     0,     0,     0,  1233,
     2188       0,     0,     0,   369,  1237,     0,  -298,     0,     0,     0,
     2189       0,     0,     0,     0,     0,  1244,     0,     0,     0,     0,
     2190      88,     0,     0,     0,     0,     0,     0,     0,  1251,     0,
     2191    1253,  1254,  1255,  1256,     0,     0,     0,   212,     0,     0,
     2192       0,     0,     0,     0,     0,  1263,   232,  1159,   236,     0,
     2193     238,   173,     0,     0,     0,   166,     0,   247,     0,     0,
     2194       0,     0,     0,     0,     0,     0,   369,     0,     0,   799,
     2195       0,     0,     0,     0,     0,     0,     0,     0,     0,  1291,
     2196    1292,     0,     0,     0,     0,     0,     0,     0,   212,     0,
     2197     236,   238,   247,     0,     0,   592,     0,     0,     0,     0,
     2198     592,     0,     0,     0,     0,     0,     0,     0,     0,   369,
     2199     369,     0,     0,     0,     0,   128,     0,     0,     0,     0,
     2200     128,     0,     0,     0,     0,   369,     0,     0,     0,     0,
     2201     212,     0,     0,  1326,  1327,     0,     0,     0,     0,     0,
     2202       0,     0,     0,  1337,     0,     0,     0,     0,     0,     0,
     2203       0,     0,     0,     0,     0,     0,     0,   522,     8,     9,
     2204      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2205      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2206      28,    29,    30,   369,     0,   921,     0,     0,     0,    33,
     2207       0,   212,     0,   236,   238,   247,     0,   158,     0,     0,
     2208       0,     0,     0,     0,     0,  1372,     0,  1373,  1374,  1375,
     2209       0,     0,     0,     0,     0,     0,     0,    36,   708,  1379,
     2210       0,     0,    39,     0,    40,    41,    42,  1390,     0,   212,
     2211       0,     0,     0,     0,   212,    43,    44,     0,     0,     0,
     2212       0,     0,     0,     0,   252,     0,     0,     0,     0,   495,
     2213       0,     0,  1411,  1412,   257,     0,     0,     0,     0,     0,
     2214       0,    45,     0,    46,     0,     0,     0,     0,     0,    47,
     2215      48,   324,     0,     0,     0,   128,   616,     0,     0,     0,
     2216       0,   346,     0,     0,     0,     0,     0,     0,     0,     0,
     2217       0,     0,   381,   381,     0,     0,     0,  1451,  1452,     0,
     2218     212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2219    1457,     0,     0,     0,     0,     0,     0,  1457,     0,   212,
     2220       0,     0,     0,   385,   236,   238,     0,     0,     0,     0,
     2221       0,     0,   247,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,     0,     0,     0,     0,   417,     0,     0,     0,
     2223    1490,     0,     0,     0,  1496,     0,     0,     0,     0,     0,
     2224     431,     0,     0,   324,   369,     0,     0,     0,     0,   436,
     2225       0,   708,     0,     0,   212,     0,     0,     0,     0,   444,
     2226       0,     0,  1518,     0,  1519,     0,   522,   476,     0,     0,
     2227       0,     0,   212,     0,     0,     0,     0,   212,     0,   212,
     2228       0,     0,     0,   128,   462,     0,     0,     0,     0,   472,
     2229       0,   166,  1534,  1535,     0,   212,     0,     0,   212,   212,
     2230    1538,  1539,   480,     0,     0,     0,   212,     0,   490,     0,
     2231     494,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2232     212,     0,     0,     0,     0,     0,     0,   212,     0,   523,
     2233       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2234       0,     0,     0,   592,     8,     9,    10,    11,    12,    13,
     2235      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2236      24,    25,    26,    27,   369,   369,    28,    29,    30,     0,
     2237     582,     0,     0,     0,   586,    33,     0,     0,     0,     0,
     2238       0,     0,   381,     0,     0,     0,     0,     0,     0,     0,
     2239       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2240       0,     0,   629,    36,     0,     0,   630,   631,     0,   632,
     2241     208,    41,     0,     0,     0,     0,   643,   644,     0,   645,
     2242     646,   522,   647,     0,   648,     0,     0,     0,     0,     0,
    21722243       0,     0,     0,     0,     0,     0,     0,     0,   212,     0,
    2173      236,   238,   247,    81,     0,     0,   593,     0,     0,     0,
    2174       81,   617,     0,     0,     0,     0,     0,     0,     0,     0,
    2175        0,     0,     0,     0,     0,     0,     0,   363,     0,  1110,
    2176        0,     0,     0,     0,  1120,     0,   212,     0,     0,  1123,
    2177        0,   212,     0,     0,  1127,     0,     0,     0,     0,  1129,
    2178        0,  1130,  1131,     0,     0,  1134,   496,     0,     0,     0,
    2179        0,     0,    81,     0,  1146,     0,     0,     0,     0,     0,
     2244       0,   582,     0,     0,     0,     0,     0,     0,     0,   663,
     2245       0,     0,     0,     0,     0,    47,    48,     0,     0,     0,
     2246       0,     0,     0,     0,     0,     0,   212,     0,     0,     0,
     2247       0,   212,     0,   674,     0,   702,     0,     0,     0,     0,
     2248       0,     0,     0,     0,     0,     0,     0,   708,     0,     0,
     2249       0,     0,     0,     0,     0,     0,     0,     0,     0,   700,
     2250       0,     0,     0,     0,     0,   703,     0,     0,     0,     0,
     2251     462,     0,     0,     0,   735,     0,     0,     0,     0,     0,
     2252       0,     0,     0,     0,     0,     0,   751,     0,   219,     0,
     2253       0,     0,   735,     0,     0,   735,   341,   364,     0,     0,
     2254     212,     0,     0,     0,     0,     0,   738,     0,   760,     0,
     2255       0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
     2256       0,   756,     0,     0,   708,     0,     0,     0,     0,   413,
     2257       0,     0,     0,     0,     0,   495,   413,     0,   789,     0,
     2258       0,     0,     0,     0,     0,   346,     0,     0,     0,   751,
     2259       0,     0,     0,     0,     0,     0,     0,     0,   781,     0,
     2260       0,     0,     0,     0,     0,     0,     0,   791,     0,     0,
     2261       0,     0,     0,     0,     0,     0,     0,   369,   369,     0,
     2262       0,     0,     0,     0,     0,   219,     0,   812,     0,     0,
     2263       0,     0,     0,     0,   212,   850,     0,     0,     0,     0,
     2264       0,     0,     0,   381,     0,   212,     0,     0,   413,     0,
    21802265       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2181     1160,  1161,     0,     0,     0,     0,   166,   166,     0,     0,
    2182        0,     0,   369,     0,     0,     0,   363,     0,     0,     0,
    2183        0,     0,     0,     0,     0,     0,  1190,   212,     0,  1192,
    2184        0,     0,     0,   523,     0,     0,     0,     0,     0,     0,
    2185        0,     0,     0,     0,  1198,     0,   212,     0,     0,     0,
    2186        0,   236,   238,     0,     0,     0,     0,     0,     0,   247,
    2187        0,   709,     0,     0,    88,     0,     0,     0,     0,     0,
    2188        0,    88,  1206,     0,   166,     0,     0,     0,  1210,  1211,
    2189        0,     0,     0,     0,     0,     0,   523,     0,   523,     0,
    2190        0,   523,     0,   166,   523,     0,     0,  1227,     0,     0,
    2191        0,   212,  1234,     0,     0,   369,     0,  1238,     0,     0,
    2192        0,     0,     0,     0,     0,     0,     0,     0,  1245,   212,
    2193        0,     0,     0,    88,   212,     0,   212,     0,     0,     0,
    2194        0,  1252,     0,  1254,  1255,  1256,  1257,     0,     0,     0,
    2195        0,     0,   212,     0,     0,   212,   212,     0,  1264,     0,
    2196     1160,     0,     0,   212,   173,     0,     0,   166,     0,     0,
    2197        0,     0,     0,     0,     0,     0,     0,   212,   369,     0,
    2198        0,   800,  1287,     0,   212,     0,     0,     0,     0,     0,
    2199        0,     0,  1292,  1293,     0,     0,  1144,     0,     0,     8,
    2200        9,    10,    11,    12,     0,     0,     0,   593,     0,     0,
    2201        0,     0,   593,   158,     0,     0,     0,     0,     0,     0,
    2202        0,   369,   369,     0,     0,     0,     0,     0,     0,   283,
    2203      284,    33,   285,     0,     0,     0,     0,   369,     0,     0,
    2204        0,     0,     0,     0,     0,     0,  1327,  1328,     0,     0,
    2205        0,     0,     0,     0,     0,     0,  1338,     0,   286,    36,
    2206      252,     0,     0,     0,   287,     0,     0,     0,   288,   523,
    2207      257,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    2208      295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
    2209        0,     0,     0,     0,     0,   369,   212,   922,     0,     0,
    2210        0,     0,     0,   297,     0,   378,     0,   283,   284,     0,
    2211      285,  1145,    48,   299,   300,   301,   302,     0,  1373,     0,
    2212     1374,  1375,  1376,     0,   212,     0,     0,     0,     0,   212,
    2213      709,     0,  1380,     0,     0,     0,   286,     0,     0,   385,
    2214     1391,     0,   287,     0,     0,     0,   288,     0,     0,   289,
    2215      290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
    2216        0,     0,   417,     0,     0,  1412,  1413,     0,     0,     0,
    2217        0,     0,     0,     0,     0,     0,   431,     0,     0,     0,
    2218        0,   297,     0,   378,     0,   436,     0,     0,   617,    47,
    2219       48,   299,   300,   301,   302,   444,     0,     0,   212,     0,
    2220        0,     0,   780,     0,     0,     0,     0,     0,     0,     0,
    2221     1452,  1453,   212,     0,     0,     0,     0,     0,     0,     0,
    2222      462,     0,     0,  1458,     0,   472,     0,     0,     0,     0,
    2223     1458,     0,     0,   496,     0,     0,     0,     0,   480,     0,
    2224        0,     0,     0,     0,   491,     0,   495,     0,     0,     0,
    2225        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2226        0,     0,     0,  1491,     0,   524,     0,  1497,     0,     0,
    2227        0,     0,     0,     0,     0,     0,   369,     0,     0,     0,
    2228        0,     0,     0,   709,     0,     0,     0,     0,     0,     0,
    2229        0,     0,   212,     0,     0,  1519,     0,  1520,   523,     0,
    2230        0,     0,     0,   212,     0,     0,   583,     0,     0,     0,
    2231      587,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2232      212,     0,     0,   166,     0,  1535,  1536,     0,     0,     0,
    2233        0,     0,     0,  1539,  1540,     0,     0,     0,   630,     0,
    2234        0,     0,   631,   632,     0,   633,     0,     0,     0,     0,
    2235        0,     0,   644,   645,     0,   646,   647,     0,   648,     0,
    2236      649,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2237        0,     0,     0,     0,     0,   593,     0,   583,     0,     0,
    2238        0,     0,     0,     0,     0,   664,     0,     0,     0,   341,
    2239      364,     0,     0,     0,     0,     0,   369,   369,     0,     0,
    2240        0,     0,     0,     0,     0,     0,     0,     0,     0,   675,
    2241        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2242        0,     0,   413,     0,     0,     0,     0,     0,     0,   413,
    2243        0,   212,     0,     0,     0,   701,     0,     0,     0,     0,
    2244        0,   704,     0,     0,     0,     0,   462,     0,     0,     0,
    2245        0,     0,     0,   523,     0,     0,     0,     0,     0,     0,
    2246        0,   212,     8,     9,    10,    11,    12,    13,    14,    15,
    2247       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2248       26,    27,     0,   739,    28,    29,    30,     0,     0,     0,
    2249        0,     0,     0,   212,    33,     0,     0,     0,   757,     0,
    2250        0,   413,     0,     0,   212,     0,     0,     0,     0,     0,
    2251        0,     0,     0,     0,     0,     0,     0,     0,     0,   709,
    2252        0,     0,    36,     0,     0,     0,     0,   112,     0,    40,
    2253       41,     0,     0,     0,     0,   782,     0,     0,     0,     0,
    2254       43,    44,     0,     0,   792,     0,     0,     0,     0,     0,
    2255        0,     0,     0,     0,     0,     0,     0,     0,   413,     0,
    2256      219,     0,     0,     0,   813,     0,   413,   579,    46,   413,
    2257      582,     0,     0,   212,    47,    48,     0,   364,     0,     0,
    2258        0,   609,     0,     0,     0,     0,     0,   212,     0,     0,
    2259        0,     0,     0,     0,     0,     0,   709,     0,     0,     0,
    2260      627,     0,   852,     0,     8,     9,    10,    11,    12,    13,
    2261       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2262       24,    25,    26,    27,     0,     0,    28,    29,    30,   413,
    2263        0,     0,     0,   413,     0,     0,    33,     0,   885,     0,
    2264        0,     0,     0,     0,     0,     0,   892,     0,     0,   369,
    2265      369,     0,     0,     0,     0,     0,     0,   219,     0,     0,
    2266        0,     0,     0,   364,    36,     0,     0,     0,     0,    39,
    2267        0,   208,    41,    42,     0,   212,     0,   252,     0,     0,
    2268        0,     0,    43,    44,     0,     0,     0,     0,   930,   931,
    2269        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2270        0,     0,     0,     0,     0,     0,     0,     0,    45,   413,
    2271      271,     0,   364,     0,     0,     0,    47,    48,     0,     0,
    2272      965,     0,     0,     0,     0,   969,     0,     8,     9,    10,
     2266       0,     0,   212,     0,     0,   851,     0,     8,     9,    10,
    22732267      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    22742268      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2275       29,    30,   413,     0,     0,     0,   364,     0,     0,    33,
     2269      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
     2270       0,   884,     0,     0,     0,   413,     0,     0,     0,   891,
     2271       0,     0,     0,   413,   578,     0,   413,   581,     0,   926,
     2272       0,     0,     0,     0,   364,     0,    36,     0,   608,     0,
     2273       0,    39,     0,   208,    41,    42,     0,     0,   369,     0,
     2274     252,   751,     0,   950,    43,    44,     0,   626,     0,     0,
     2275       0,   929,   930,   960,     0,     0,     0,     0,     0,   967,
    22762276       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2277      369,     0,   212,     0,     0,     0,     0,     0,     0,     0,
    2278        0,     0,     0,     0,     0,  1002,     0,    36,     0,     0,
    2279        0,     0,  1003,     0,    40,    41,     0,     0,     0,     0,
    2280      413,   413,     0,     0,     0,  1005,     0,  1006,     0,     0,
    2281        0,     0,     0,     0,     0,     0,     0,     0,   795,   364,
    2282     1016,     0,     0,     0,     0,     0,  1020,   523,   609,   523,
    2283      609,   609,     0,   258,     0,   324,     0,   609,  1057,    47,
    2284       48,  1058,     0,     0,     0,   346,     0,   832,   364,     0,
    2285        0,     0,     0,   364,     0,     0,   381,   381,     0,     0,
    2286        0,     0,   364,   364,   523,     0,   523,     0,     0,     0,
    2287        0,     0,     0,     0,     0,     0,     0,     0,   364,     0,
    2288        0,     0,     0,   413,   873,     0,     0,   413,   876,     0,
    2289        0,     0,     0,   166,   878,     0,   506,     0,   508,   511,
    2290        0,     0,     0,     0,     0,     0,     0,     0,   514,   515,
    2291        0,     0,     0,   413,     0,     0,     0,     0,   283,   284,
    2292        0,   285,     0,   508,   508,     0,     0,   324,     0,     0,
    2293        0,     0,     0,     0,     0,     0,   364,   609,     0,     0,
    2294        0,     0,     0,     0,     0,     0,     0,   286,     0,  1128,
    2295        0,   476,     0,   634,     0,   141,   142,   288,   508,     0,
    2296      289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
    2297      296,   364,     0,     0,     0,   413,   413,     0,     0,     0,
     2277      45,     0,   271,   212,     0,     0,   413,     0,    47,    48,
     2278     413,     0,     0,   964,     0,     0,     0,     0,   968,     0,
     2279       0,     0,     0,     0,     0,   522,     0,   522,     0,   984,
     2280     985,     0,     0,   212,     0,     0,     0,     0,     0,     0,
     2281     364,     0,     0,     0,     0,   346,     0,     0,     0,     0,
    22982282       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2299        0,     0,   297,   508,   635,     0,   636,   379,     0,     0,
    2300       47,    48,   299,   300,   301,   302,     0,     0,     0,     0,
    2301     1191,     0,     0,     0,     0,     0,     0,     0,   413,     0,
    2302        0,     0,     0,   212,     0,     0,     0,     0,     0,     0,
    2303        0,     0,     0,     0,   609,     0,   609,     0,     0,     0,
    2304        0,     0,     0,     0,  1203,     0,   609,     0,     0,  1205,
    2305        0,     0,     0,     0,     0,     0,     0,  1209,     0,     0,
    2306        0,     0,     0,     0,     0,     0,   381,     0,     8,     9,
    2307       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2308       20,    21,    22,    23,    24,    25,    26,    27,  -299,     0,
    2309        0,  1240,     0,     0,     0,     0,     0,     0,     0,     0,
    2310       33,     0,  1247,     0,     0,  1248,     0,  1249,     0,     0,
    2311        0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
    2312        0,     0,  1258,  1259,   364,   413,     0,   413,    36,     0,
    2313        0,   413,     0,     0,     0,     0,     0,     0,     0,  -299,
    2314        0,     0,  1271,     0,     0,     0,     0,     0,     0,     0,
    2315        0,     0,   609,   609,     0,     0,     0,     0,     0,   703,
    2316        0,     0,   508,   508,   508,   508,   508,   508,   508,   508,
    2317      508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
    2318        0,     0,     0,     0,     0,     0,     0,   413,  1310,     0,
    2319        0,     0,     0,     0,     0,     0,  1314,     0,     0,   736,
    2320        0,     0,     0,     0,     0,     0,   413,  1126,     0,     0,
    2321        0,   752,     0,     0,     0,     0,   364,   736,     0,     0,
    2322      736,     0,   413,  1137,     0,   609,   609,  1142,     0,     0,
    2323        0,     0,     0,   761,     0,     0,     0,   364,   364,     0,
    2324        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2325       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2326        0,     0,     0,   790,     0,     0,  1361,     0,  1362,     0,
    2327      346,     0,    33,     0,   752,     0,     0,     0,     0,     0,
    2328        0,     0,     0,     0,  1371,     0,  1372,     0,     0,     0,
    2329        0,     0,     0,     0,     0,     0,     0,   413,     0,   413,
    2330       36,  1379,   508,     0,   413,     0,     0,     0,     0,     0,
    2331        0,     0,     0,   609,     0,     0,  1397,  1399,     0,     0,
    2332      851,     0,     0,     0,     0,     0,     0,  1404,   381,     0,
    2333     1209,     0,     0,     0,     0,     0,   413,  1223,     0,     0,
     2283       0,     0,   522,     0,   522,   212,     0,     0,     0,     0,
     2284       0,     0,     0,     0,     0,     0,   212,     0,  1001,     0,
     2285       0,     0,     0,     0,  1013,  1002,   413,     0,   381,   364,
     2286       0,   166,     0,     0,     0,     0,     0,     0,  1004,     0,
     2287    1005,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2288       0,     0,     0,  1015,     0,     0,     0,   346,     0,  1019,
     2289       0,     0,     0,     0,   346,     0,     0,     0,   413,     0,
     2290       0,  1056,   364,     0,  1057,     0,     0,     0,     0,     0,
     2291       0,     0,     0,     0,     0,   212,     0,     0,     0,     0,
     2292       0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
     2293       0,     0,     0,     0,   324,     0,     0,     0,     0,     0,
     2294       0,     0,     0,     0,     0,     0,   413,   413,     0,     0,
    23342295       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2335        0,     0,  1427,     0,     0,     0,     0,     0,     0,     0,
    2336      364,  1434,     0,   508,  1436,     0,  1438,  1440,  1442,     0,
    2337        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2338       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2339       25,    26,    27,   508,     0,    28,    29,    30,   483,   484,
    2340      485,   486,     0,     0,   927,    33,     0,  1473,     0,  1475,
    2341        0,  1209,     0,     0,     0,     0,     0,     0,     0,     0,
    2342        0,     0,     0,     0,     0,     0,   752,  1486,   951,     0,
    2343        0,     0,     0,    36,     0,     0,     0,   364,   961,     0,
    2344       40,    41,     0,     0,   968,     0,     0,     1,     2,     3,
     2296       0,   381,     0,     0,   794,   364,   960,     0,     0,   735,
     2297       0,     0,     0,     0,   608,     0,   608,   608,     0,     0,
     2298       0,     0,     0,   608,     0,     0,     0,     0,     0,  1131,
     2299       0,     0,     0,   831,   364,     0,     0,     0,     0,   364,
     2300    1146,     0,     0,     0,     0,     0,     0,     0,   364,   364,
     2301       0,     0,  1127,     0,     0,     0,     0,   212,     0,     0,
     2302     381,     0,  1163,     0,   364,     0,     0,     0,     0,   413,
     2303     872,     0,     0,   413,   875,     0,     0,   960,   960,   505,
     2304     877,   507,   510,     0,     0,     0,     0,     0,     0,     0,
     2305       0,   513,   514,     0,     0,     0,     0,  1194,     0,   413,
     2306       0,     0,     0,     0,     0,     0,   507,   507,     0,     0,
     2307       0,     0,     0,  1190,     0,     0,     0,     0,     0,     0,
     2308       0,     0,   364,   608,     0,     0,     0,     0,     0,     0,
     2309       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2310       0,   507,     0,     0,     0,     0,     0,  1202,     0,     0,
     2311       0,   960,  1204,     0,   212,     0,     0,   364,     0,     0,
     2312    1208,   413,   413,     0,     0,     0,     0,     0,     0,     0,
     2313     850,     0,     0,     0,     0,     0,   507,     0,     0,     0,
     2314       0,     0,     0,     0,     0,  1249,  1250,     0,     0,     0,
     2315       0,     0,     0,     0,  1239,     0,     0,     0,     0,     0,
     2316       0,     0,     0,     0,   413,  1246,     0,     0,  1247,     0,
     2317    1248,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2318     608,     0,   608,     0,     0,  1257,  1258,     0,     0,     0,
     2319       0,     0,   608,     0,     0,     0,     0,     0,     0,     0,
     2320       0,     0,     0,     0,     0,  1270,     0,     0,     0,     0,
     2321       0,     0,     0,     0,     0,  -523,     0,     0,     1,     2,
     2322       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2323      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2324      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2325      31,  1309,     0,    32,     0,     0,    33,    34,     0,  1313,
     2326       0,     0,     0,   364,     0,     0,     0,     0,     0,     0,
     2327     364,   413,     0,   413,     0,     0,     0,   413,     0,     0,
     2328       0,    35,     0,     0,    36,     0,    37,  1354,    38,    39,
     2329     735,    40,    41,    42,     0,     0,     0,     0,   608,   608,
     2330       0,     0,    43,    44,   507,   507,   507,   507,   507,   507,
     2331     507,   507,   507,   507,   507,   507,   507,   507,   507,   507,
     2332     507,   507,     0,     0,     0,     0,     0,     0,    45,  1360,
     2333      46,  1361,     0,   413,     0,     0,    47,    48,     0,     0,
     2334       0,     0,     0,     0,     0,     0,     0,  1370,     0,  1371,
     2335       0,     0,   413,  1125,     0,     0,     0,     0,     0,     0,
     2336       0,     0,   364,     0,  1378,   212,     0,     0,   413,  1136,
     2337       0,   608,   608,  1141,     0,     0,     0,     0,     0,  1396,
     2338    1398,     0,     0,   364,   364,     0,     0,     0,     0,     0,
     2339    1403,     0,     0,  1208,     8,     9,    10,    11,    12,    13,
     2340      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2341      24,    25,    26,    27,  -299,  1426,     0,     0,     0,     0,
     2342       0,     0,     0,     0,  1433,    33,     0,  1435,     0,  1437,
     2343    1439,  1441,     0,     0,     0,     0,     0,     0,     0,     0,
     2344       0,     0,     0,   413,   507,   413,     0,     0,     0,     0,
     2345     413,     0,     0,    36,     0,     0,     0,     0,     0,   608,
     2346       0,     0,     0,     0,  -299,     0,     0,     0,     0,     0,
     2347    1472,     0,  1474,     0,  1208,     0,     0,     0,     0,     0,
     2348       0,     0,   413,  1222,     0,     0,     0,     0,     0,     0,
     2349    1485,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2350       0,     0,     0,     0,   324,   507,   364,     1,     2,   207,
    23452351       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    23462352      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2347       24,    25,    26,    27,     0,     0,    28,    29,    30,    31,
    2348        0,     0,     0,    32,   985,   986,    33,    34,     0,     0,
    2349      364,   364,     0,     0,     0,     0,     0,     0,     0,     0,
    2350      346,     0,     0,     0,     0,     0,     0,   508,     0,     0,
    2351        0,    35,     0,     0,    36,     0,    37,     0,    38,    39,
    2352        0,    40,    41,    42,     0,     0,     0,     0,     0,     0,
    2353        0,     0,    43,    44,     0,     0,     0,     0,     0,  1014,
    2354        0,     0,     0,   381,     0,     0,     0,   283,   284,     0,
    2355      285,     0,     0,   508,     0,     0,     0,     0,    45,     0,
    2356       46,     0,     0,     0,  -528,     0,    47,    48,     0,     0,
    2357        0,     0,   346,     0,     0,     0,   286,     0,     0,   346,
    2358        0,     0,   287,     0,     0,   508,   288,     0,     0,   289,
    2359      290,   291,   292,   293,   294,    43,    44,   508,   295,   296,
     2353      24,    25,    26,    27,     0,   507,    28,    29,    30,    31,
     2354       0,     0,    32,   283,   284,    33,  1022,  1023,     0,  1024,
     2355       0,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,
     2356       0,     0,     0,  1033,     0,     0,     0,  1034,  1035,     0,
     2357      35,     0,   286,    36,     0,    37,     0,    38,  1036,     0,
     2358      40,    41,   288,   364,     0,   289,   290,   291,   292,   293,
     2359     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    23602360       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2361        0,   364,     0,     0,     0,     0,     0,     0,     0,   324,
    2362        0,   297,     0,   378,     0,     0,   379,     0,     0,    47,
    2363       48,   299,   300,   301,   302,     0,   508,     0,     0,     0,
    2364        0,     0,     0,     0,     0,     0,   381,     0,     0,     0,
    2365        0,   961,     0,     0,   736,     0,     0,     0,     0,     0,
     2361       0,     0,     0,     0,     0,     0,     0,   297,     0,   298,
     2362       0,     0,   172,     0,     0,    47,    48,   299,   300,   301,
     2363     302,     0,     0,     0,     0,  1037,   364,   364,     0,     0,
     2364    -134,     0,     0,     0,     0,     0,     0,     0,     0,   507,
     2365       1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2366      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2367      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2368      29,    30,    31,     0,     0,    32,   283,   284,    33,   285,
     2369       0,     0,     0,     0,     0,   507,     0,     0,     0,     0,
    23662370       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2367        0,     0,     0,     0,  1132,     0,     0,     0,     0,     0,
    2368        0,     0,     0,     0,     0,  1147,     0,     0,     0,     0,
    2369        0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
    2370      413,     0,     0,     0,     0,   381,     0,  1164,     0,     0,
    2371        0,     0,   508,     0,     0,     0,     0,     0,     0,     0,
    2372        0,   286,   961,   961,   413,   413,     0,   287,     0,     0,
    2373        0,   288,     0,     0,   289,   290,   291,   292,   293,   294,
    2374       43,    44,  1195,   295,   296,     0,     0,     0,     0,   413,
     2371       0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
     2372      38,   287,     0,    40,    41,   288,     0,   507,   289,   290,
     2373     291,   292,   293,   294,    43,    44,     0,   295,   296,   507,
    23752374       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2376        0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
    2377        0,   508,   508,   751,    47,    48,   299,   300,   301,   302,
     2375       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
     2376     297,     0,   298,     0,     0,     0,     0,     0,    47,    48,
     2377     299,   300,   301,   302,     0,     0,     0,     0,   507,     0,
     2378       0,     0,     0,  -134,     0,     0,     0,     0,     0,     1,
     2379       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2380      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2381      22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
     2382      30,    31,     0,     0,    32,     0,     0,    33,    34,     0,
    23782383       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2379        0,     0,     0,     0,     0,     0,   961,     0,     0,     0,
     2384       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
     2385       0,     0,    35,     0,   507,    36,     0,    37,     0,    38,
     2386      39,     0,    40,    41,    42,     0,     0,     0,     0,     0,
     2387     413,   413,     0,    43,    44,     0,     0,     0,     0,     0,
    23802388       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2381        0,     0,     0,     0,     0,   851,     0,     0,     0,     0,
    2382        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2383     1250,  1251,     1,     2,   207,     4,     5,     6,     7,     8,
    2384        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2385       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2386        0,    28,    29,    30,    31,     0,     0,     0,    32,   283,
    2387      284,    33,  1023,  1024,     0,  1025,     0,     0,  1026,  1027,
    2388     1028,  1029,  1030,  1031,  1032,  1033,     0,     0,     0,  1034,
    2389        0,     0,     0,  1035,  1036,     0,    35,     0,   286,    36,
    2390        0,    37,     0,    38,  1037,     0,    40,    41,   288,     0,
    2391        0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    2392      295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
    2393        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2394        0,     0,     0,   297,     0,   298,     0,     0,   172,     0,
    2395        0,    47,    48,   299,   300,   301,   302,     0,     0,     0,
    2396        0,  1038,     0,     0,     0,     0,  -134,     0,     0,     0,
    2397        0,     0,  1355,     0,     0,   736,     0,     0,     0,   508,
    2398        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2399        0,     0,     0,     0,     0,     0,   508,     0,     0,     0,
    2400        0,     0,     0,     0,     1,     2,   207,     4,     5,     6,
    2401        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2402       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2403       27,     0,     0,    28,    29,    30,    31,     0,     0,     0,
     2389       0,     0,     0,     0,     0,   413,     0,     0,     0,    45,
     2390       0,    46,     0,     0,     0,  -527,     0,    47,    48,     0,
     2391       0,     0,     0,   507,   507,     1,     2,   207,     4,     5,
     2392       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2393      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2394      26,    27,     0,     0,    28,    29,    30,    31,     0,     0,
    24042395      32,   283,   284,    33,   285,     0,     0,     0,     0,     0,
    24052396       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2406        0,     0,     0,     0,     0,     0,     0,     0,   508,   508,
     2397       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24072398     286,    36,     0,    37,     0,    38,   287,     0,    40,    41,
    24082399     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
     
    24112402       0,     0,     0,     0,     0,   297,     0,   298,     0,     0,
    24122403       0,     0,     0,    47,    48,   299,   300,   301,   302,     0,
    2413        0,     0,     0,     0,     0,     0,     0,     0,  -134,     1,
    2414        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2415       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2416       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2417       30,    31,     0,     0,     0,    32,   283,   284,    33,   285,
    2418        0,     0,     0,     0,     0,     0,     0,     0,     0,   324,
     2404       0,     0,     0,     0,     0,     2,   207,     4,     5,     6,
     2405       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2406      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2407      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
     2408     283,   284,    33,   285,     0,     0,     0,     0,     0,     0,
     2409       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2410       0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
     2411      36,     0,    37,     0,    38,   287,     0,    40,    41,   288,
     2412       0,   507,   289,   290,   291,   292,   293,   294,    43,    44,
     2413       0,   295,   296,     0,     0,     0,     0,     0,   507,     0,
     2414       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2415       0,     0,     0,     0,   297,     0,   343,     0,     0,     0,
     2416       0,   750,   344,    48,   299,   300,   301,   302,     2,   207,
     2417       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2418      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2419      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
     2420       0,     0,     0,   283,   284,    33,   285,     0,     0,     0,
     2421     507,   507,     0,     0,     0,     0,     0,     0,     0,     0,
     2422       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2423       0,     0,   286,    36,     0,    37,     0,    38,   287,     0,
     2424      40,    41,   288,     0,     0,   289,   290,   291,   292,   293,
     2425     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
     2426       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2427       0,     0,     0,     0,     0,     0,     0,   297,     0,   343,
     2428       0,     0,     0,     0,   750,    47,    48,   299,   300,   301,
     2429     302,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2430      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2431      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2432      29,    30,     0,     0,     0,     0,   283,   284,    33,   285,
     2433       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24192434       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24202435       0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
     
    24232438       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24242439       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2425      297,     0,   298,     0,     0,     0,     0,     0,    47,    48,
     2440     297,     0,   343,     0,     0,     0,     0,     0,   344,    48,
    24262441     299,   300,   301,   302,     2,   207,     4,     5,     6,     7,
    24272442       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    24282443      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2429        0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
    2430      283,   284,    33,   285,     8,     9,    10,    11,    12,    13,
    2431       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2432       24,    25,    26,    27,     0,     0,    28,    29,    30,   286,
    2433       36,     0,    37,     0,    38,   287,    33,    40,    41,   288,
    2434        0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
    2435        0,   295,   296,     0,     0,     0,     0,     0,     0,     0,
    2436        0,     0,     0,     0,    36,     0,     0,     0,     0,     0,
    2437        0,    40,    41,     0,   297,     0,   343,     0,     0,     0,
    2438        0,   751,   344,    48,   299,   300,   301,   302,     2,   207,
    2439        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2440       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2441       24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
    2442        0,     0,     0,     0,   283,   284,    33,   285,     8,     9,
    2443       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2444       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2445       28,    29,    30,   286,    36,     0,    37,     0,    38,   287,
    2446       33,    40,    41,   288,     0,     0,   289,   290,   291,   292,
    2447      293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2448        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2449        0,     0,     0,     0,     0,   208,    41,     0,   297,     0,
    2450      343,     0,     0,     0,     0,   751,    47,    48,   299,   300,
    2451      301,   302,     2,   207,     4,     5,     6,     7,     8,     9,
    2452       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2453       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2454       28,    29,    30,     0,     0,     0,     0,     0,   283,   284,
    2455       33,   285,     0,     0,     0,     0,     0,     0,     0,     0,
     2444       0,     0,    28,    29,    30,     0,     0,     0,     0,   283,
     2445     284,    33,   285,     0,     0,     0,     0,     0,     0,     0,
    24562446       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2457        0,     0,     0,     0,     0,     0,     0,   286,    36,     0,
    2458       37,     0,    38,   287,     0,    40,    41,   288,     0,     0,
    2459      289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
    2460      296,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2447       0,     0,     0,     0,     0,     0,     0,     0,   286,    36,
     2448       0,    37,     0,    38,   287,     0,   208,    41,   288,     0,
     2449       0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
     2450     295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
    24612451       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2462        0,     0,   297,     0,   343,     0,     0,     0,     0,     0,
    2463      344,    48,   299,   300,   301,   302,     2,   207,     4,     5,
    2464        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2465       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2466       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
     2452       0,     0,     0,   297,     0,   981,     0,     0,     0,     0,
     2453       0,   982,    48,   299,   300,   301,   302,     2,   207,     4,
     2454       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2455      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2456      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    24672457       0,     0,   283,   284,    33,   285,     0,     0,     0,     0,
    24682458       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     
    24722462      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
    24732463       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2474        0,     0,     0,     0,     0,     0,   297,     0,   982,     0,
    2475        0,     0,     0,     0,   983,    48,   299,   300,   301,   302,
    2476        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2477       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2478       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2479       30,     0,     0,     0,     0,     0,   283,   284,    33,   285,
     2464       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
     2465       0,     0,     0,     0,    47,    48,   299,   300,   301,   302,
     2466       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
     2467      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2468      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2469      29,    30,    31,     0,     0,    32,     0,     0,    33,    34,
    24802470       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24812471       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2482        0,     0,     0,     0,     0,   286,    36,     0,    37,     0,
    2483       38,   287,     0,   208,    41,   288,     0,     0,   289,   290,
    2484      291,   292,   293,   294,    43,    44,     0,   295,   296,     0,
    2485        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2486        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2487      297,     0,   378,     0,     0,     0,     0,     0,    47,    48,
    2488      299,   300,   301,   302,  -524,     0,     0,     1,     2,     3,
    2489        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2490       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2491       24,    25,    26,    27,     0,     0,    28,    29,    30,    31,
    2492        0,     0,     0,    32,     0,     0,    33,    34,     0,     0,
    2493        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2494        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2495        0,    35,     0,     0,    36,     0,    37,     0,    38,    39,
    2496        0,    40,    41,    42,     0,     0,     0,     0,     0,     0,
    2497        0,     0,    43,    44,     0,     0,     0,     0,     0,     0,
    2498        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2499        0,     0,     0,     0,     0,     0,     0,     0,    45,     0,
    2500       46,     0,     0,     0,     0,     0,    47,    48,     1,     2,
    2501        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2502       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2503       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2504       31,     0,     0,     0,    32,     0,     0,    33,    34,     0,
    2505        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2506        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2507        0,     0,    35,     0,     0,    36,     0,    37,     0,    38,
    2508       39,     0,    40,    41,    42,     0,     0,     0,     0,     0,
    2509        0,     0,     0,    43,    44,     0,     0,     0,     0,     0,
    2510        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2511        0,     0,     0,     0,     0,     0,     0,     0,     0,    45,
    2512        0,    46,     0,     0,     0,     0,     0,    47,    48,   206,
    2513        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2514       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2515       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2516       30,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2517        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2518        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2519        0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    2520       38,    39,     0,   208,    41,    42,     0,     0,     0,     0,
     2472       0,     0,     0,    35,     0,     0,    36,     0,    37,     0,
     2473      38,    39,     0,    40,    41,    42,     0,     0,     0,     0,
    25212474       0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
    25222475       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25232476       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2477      45,     0,    46,     0,     0,     0,     0,     0,    47,    48,
     2478     206,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2479      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2480      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2481      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
     2482       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2483      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2484      27,     0,     0,    28,    29,    30,    36,     0,    37,     0,
     2485      38,    39,    33,   208,    41,    42,     0,     0,     0,     0,
     2486       0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
     2487       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2488      36,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    25242489      45,     0,   209,     0,     0,     0,     0,     0,    47,    48,
    25252490       1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    25262491      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    25272492      21,    22,    23,    24,    25,    26,    27,  -298,     0,    28,
    2528       29,    30,    31,     0,     0,     0,    32,     0,     0,    33,
     2493      29,    30,    31,     0,     0,    32,     0,     0,    33,     0,
    25292494       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25302495       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2531        0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
    2532        0,    38,     0,     0,    40,    41,     0,     0,  -298,     1,
    2533        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2534       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2535       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2536       30,    31,     0,    46,     0,    32,     0,     0,    33,    47,
    2537       48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2496       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
     2497      38,     0,     0,    40,    41,     0,     0,  -298,     1,     2,
     2498     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2499      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2500      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2501      31,     0,    46,    32,     0,     0,    33,     0,    47,    48,
     2502       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2503       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2504       0,     0,     0,     0,    36,     0,    37,     0,    38,     0,
     2505       0,    40,    41,   206,     2,   207,     4,     5,     6,     7,
     2506       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2507      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2508       0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
     2509      46,    33,     0,     0,     0,     0,    47,    48,     0,  1143,
     2510       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2511       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
     2512       0,    37,     0,    38,     0,     0,   208,    41,     0,     0,
     2513       0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
     2514       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2515       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2516     286,    36,     0,     0,     0,   209,   287,     0,     0,     0,
     2517     288,    47,    48,   289,   290,   291,   292,   293,   294,    43,
     2518      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
     2519       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2520       0,     0,     0,     0,     0,   297,     0,   378,     0,     0,
     2521       0,     0,     0,  1144,    48,   299,   300,   301,   302,     2,
     2522     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2523      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2524      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2525       0,     0,     0,     0,     0,     0,    33,     0,     0,     8,
     2526       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2527      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2528       0,    28,    29,    30,    36,     0,    37,     0,    38,    39,
     2529      33,   208,    41,    42,     0,     0,     0,     0,     0,     0,
     2530       0,     0,    43,    44,     0,     0,     0,     0,     0,     0,
     2531       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
     2532       0,     0,     0,     0,     0,    40,    41,     0,    45,     0,
     2533     209,     0,     0,     0,     0,     0,    47,    48,     2,   207,
     2534       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2535      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2536      24,    25,    26,    27,   258,     0,    28,    29,    30,     0,
     2537      47,    48,     0,     0,     0,    33,     0,     0,     0,     0,
     2538       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2539       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2540       0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
     2541      40,    41,     0,     2,   207,     4,     5,     6,     7,     8,
     2542       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2543      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2544       0,    28,    29,    30,     0,     0,     0,     0,  -407,   670,
     2545      33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
     2546       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2547       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
     2548      37,     0,    38,     0,     0,    40,    41,     0,     0,     0,
     2549       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2550       0,     0,     0,     0,     0,     0,     0,     0,     0,  1334,
     2551       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2552       0,     0,     0,     0,   670,     0,     0,     0,     0,     0,
     2553      47,    48,     2,   207,     4,     5,     6,     7,     8,     9,
     2554      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2555      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2556      28,    29,    30,     0,     0,     0,     0,     0,     0,    33,
     2557       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2558      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2559      26,    27,     0,     0,    28,    29,    30,    36,     0,    37,
     2560       0,    38,     0,    33,    40,    41,     0,     0,     0,     0,
     2561       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2562       0,     0,     0,     0,     0,     0,     0,     0,  1336,     0,
     2563       0,    36,     0,     0,     0,     0,     0,     0,    40,    41,
     2564       0,     0,     0,   670,     0,     0,     0,     0,     0,    47,
     2565      48,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2566      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2567      21,    22,    23,    24,    25,    26,    27,    46,     0,    28,
     2568      29,    30,     0,    47,    48,     0,     0,     0,    33,     0,
     2569       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25382570       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25392571       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    2540       38,     0,     0,    40,    41,   206,     2,   207,     4,     5,
     2572      38,     0,     0,   208,    41,     0,     2,   207,     4,     5,
    25412573       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25422574      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    25432575      26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2544        0,     0,    46,     0,    33,     0,     0,     0,    47,    48,
     2576       0,     0,   271,    33,     0,     0,     0,     0,    47,    48,
    25452577       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25462578       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2547        0,     0,    36,     0,    37,     0,    38,     0,     0,   208,
    2548       41,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2579       0,    36,     0,    37,     0,    38,     0,     0,    40,    41,
     2580       0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    25492581      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    25502582      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2551       29,    30,     0,     0,     0,     0,     0,     0,   209,    33,
    2552        0,     0,     0,     0,    47,    48,     0,     0,     0,     0,
     2583      29,    30,     0,     0,     0,     0,     0,   670,    33,     0,
     2584       0,     0,     0,    47,    48,     0,     0,     0,     0,     0,
    25532585       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,
    2556        0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
     2586       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
     2587      38,     0,     0,   208,    41,     8,     9,    10,    11,    12,
     2588      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2589      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2590       0,     0,     0,     0,   283,   284,    33,   285,     0,     0,
     2591       0,     0,   209,     0,     0,     0,     0,     0,    47,    48,
    25572592       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2593       0,     0,     0,   286,    36,     0,     0,     0,     0,   287,
     2594       0,    40,    41,   288,     0,     0,   289,   290,   291,   292,
     2595     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    25582596       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2559        0,    45,     0,   209,     0,     0,     0,     0,     0,    47,
    2560       48,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2561       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2562       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2563       29,    30,     0,     0,     0,     0,     0,     0,     0,    33,
    2564        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2565        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2566        0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
    2567        0,    38,     0,     0,    40,    41,     2,   207,     4,     5,
    2568        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2597       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2598     515,     0,     0,   172,     0,     0,    47,    48,   299,   300,
     2599     301,   302,     8,     9,    10,    11,    12,    13,    14,    15,
    25692600      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    25702601      26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2571        0,     0,  -407,   671,    33,     0,     0,     0,     0,    47,
    2572       48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2602       0,   283,   284,    33,   285,     0,     0,     0,     0,     0,
    25732603       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2574        0,     0,    36,     0,    37,     0,    38,     0,     0,    40,
    2575       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2576        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2577        0,     0,     0,  1335,     0,     0,     0,     0,     0,     0,
    2578        0,     0,     0,     0,     0,     0,     0,     0,   671,     0,
    2579        0,     0,     0,     0,    47,    48,     2,   207,     4,     5,
    2580        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2581       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2582       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2583        0,     0,     0,     0,    33,     0,     8,     9,    10,    11,
    2584       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2585       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2586       30,     0,    36,     0,    37,     0,    38,     0,    33,    40,
    2587       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2588        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2589        0,     0,     0,  1337,     0,     0,    36,     0,     0,     0,
    2590        0,     0,     0,    40,    41,     0,     0,     0,   671,     0,
    2591        0,     0,     0,     0,    47,    48,     2,   207,     4,     5,
    2592        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2593       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2594       26,    27,    46,     0,    28,    29,    30,     0,    47,    48,
    2595        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2596        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2597        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2598        0,     0,    36,     0,    37,     0,    38,     0,     0,   208,
    2599       41,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2600       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2601       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2602       29,    30,     0,     0,     0,     0,     0,     0,   271,    33,
    2603        0,     0,     0,     0,    47,    48,     0,     0,     0,     0,
    2604        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2605        0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
    2606        0,    38,     0,     0,    40,    41,     2,   207,     4,     5,
    2607        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2608       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2609       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2610        0,     0,     0,   671,    33,     0,     0,     0,     0,    47,
    2611       48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2612        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2613        0,     0,    36,     0,    37,     0,    38,     0,     0,   208,
    2614       41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2615       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2616       27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2617        0,   283,   284,    33,   285,     0,     0,     0,   209,     0,
    2618        0,     0,     0,     0,    47,    48,     0,     0,     0,     0,
    26192604       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26202605     286,    36,     0,     0,     0,     0,   287,     0,    40,    41,
     
    26222607      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    26232608       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2624        0,     0,     0,     0,     0,   297,     0,   516,     0,     0,
    2625      172,     0,     0,    47,    48,   299,   300,   301,   302,     8,
     2609       0,     0,     0,     0,     0,   297,   -40,   298,     0,     0,
     2610       0,     0,     0,    47,    48,   299,   300,   301,   302,     8,
    26262611       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    26272612      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2628        0,    28,    29,    30,     0,     0,     0,     0,     0,   283,
    2629      284,    33,   285,     8,     9,    10,    11,    12,    13,    14,
    2630       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2631       25,    26,    27,     0,     0,    28,    29,    30,   286,    36,
    2632        0,     0,     0,     0,   287,    33,    40,    41,   288,     0,
    2633        0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    2634      295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
    2635        0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
    2636      208,    41,     0,   297,   -40,   298,     0,     0,     0,     0,
    2637        0,    47,    48,   299,   300,   301,   302,     8,     9,    10,
    2638       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2639       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2640       29,    30,     0,     0,     0,    47,    48,   283,   284,    33,
    2641      285,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2613       0,    28,    29,    30,     0,     0,     0,     0,   283,   284,
     2614      33,   285,     0,     0,     0,     0,     0,     0,     0,     0,
    26422615       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2643        0,     0,     0,     0,     0,     0,   286,    36,     0,     0,
    2644        0,     0,   287,     0,    40,    41,   288,     0,     0,   289,
    2645      290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
     2616       0,     0,     0,     0,     0,     0,     0,   286,    36,     0,
     2617       0,     0,     0,   287,     0,    40,    41,   288,     0,     0,
     2618     289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
     2619     296,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26462620       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2647        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2648        0,   297,     0,   298,     0,     0,     0,     0,     0,    47,
    2649       48,   299,   300,   301,   302,     8,     9,    10,    11,    12,
    2650       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2651       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2652        0,     0,     0,     0,     0,   283,   284,    33,   285,     0,
     2621       0,     0,   297,     0,   298,     0,     0,     0,     0,     0,
     2622      47,    48,   299,   300,   301,   302,     8,     9,    10,    11,
     2623      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2624      22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
     2625      30,     0,     0,     0,     0,   283,   284,    33,   285,     0,
    26532626       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26542627       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     
    26622635      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    26632636      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2664        0,     0,     0,   283,   284,    33,   285,     0,     0,     0,
     2637       0,     0,   283,   284,    33,   285,     0,     0,     0,     0,
    26652638       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26662639       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2667        0,     0,   286,    36,     0,     0,     0,     0,   287,     0,
    2668       40,    41,   288,     0,     0,   289,   290,   291,   292,   293,
    2669      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
     2640       0,   286,    36,     0,     0,     0,     0,   287,     0,    40,
     2641      41,   288,     0,     0,   289,   290,   291,   292,   293,   294,
     2642      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
    26702643       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2671        0,     0,     0,     0,     0,     0,     0,   297,     0,   378,
    2672        0,     0,     0,     0,     0,    47,    48,   299,   300,   301,
    2673      302,   465,     2,   207,     4,     5,     6,     7,     8,     9,
    2674       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2675       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2676       28,    29,    30,     0,     0,     0,     0,     0,     0,     0,
    2677       33,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2678       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2679       27,     0,     0,    28,    29,    30,     0,     0,    36,     0,
    2680       37,     0,    38,    33,   678,    40,    41,     0,     0,     0,
     2644       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
     2645       0,     0,     0,     0,    47,    48,   299,   300,   301,   302,
     2646     465,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2647      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2648      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2649      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
     2650       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2651      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2652       0,     0,    28,    29,    30,     0,    36,     0,    37,     0,
     2653      38,    33,     0,    40,    41,     0,     0,     0,     0,     0,
     2654       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2655       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
     2656       0,     0,     0,     0,   112,     0,    40,    41,     0,     0,
     2657       0,     0,     0,     0,     0,    -3,     0,    43,    44,     0,
     2658       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2659      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2660      24,    25,    26,    27,     0,    46,    28,    29,    30,     0,
     2661       0,    47,    48,     0,     0,    33,   677,     8,     9,    10,
     2662      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2663      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2664      29,    30,     0,    36,     0,     0,     0,     0,    33,   677,
     2665      40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
     2666       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2667       0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
     2668       0,     0,     0,    40,    41,     0,     0,     0,     0,   678,
     2669       0,     0,     0,   679,     0,    47,    48,     0,     0,     0,
    26812670       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    26822671      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2683       27,    36,     0,    28,    29,    30,     0,     0,    40,    41,
    2684        0,     0,     0,    33,   678,     0,     0,    -3,     0,     0,
     2672      27,     0,   678,    28,    29,    30,  1072,     0,    47,    48,
     2673       0,     0,    33,   677,     8,     9,    10,    11,    12,    13,
     2674      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2675      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
     2676      36,     0,     0,     0,     0,    33,     0,    40,    41,     0,
    26852677       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26862678       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2687        0,    36,     0,     0,     0,     0,     0,   679,    40,    41,
    2688        0,   680,     0,    47,    48,     0,     8,     9,    10,    11,
    2689       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2690       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2691       30,     0,     0,     0,     0,     0,     0,   679,    33,   678,
    2692        0,  1073,     0,    47,    48,     0,     8,     9,    10,    11,
    2693       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2694       22,    23,    24,    25,    26,    27,    36,     0,    28,    29,
    2695       30,     0,     0,    40,    41,     0,     0,     0,    33,     8,
    2696        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2697       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2698        0,    28,    29,    30,     0,     0,    36,     0,     0,     0,
    2699        0,    33,   679,   208,    41,     0,  1200,     0,    47,    48,
     2679       0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
     2680     208,    41,     0,     0,     0,     0,   678,     0,     0,     0,
     2681    1199,     0,    47,    48,     0,     0,     0,     0,     8,     9,
     2682      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2683      20,    21,    22,    23,    24,    25,    26,    27,     0,   271,
     2684      28,    29,    30,     0,     0,    47,    48,     0,     0,    33,
     2685       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2686      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2687       0,     0,    28,    29,    30,     0,     0,    36,     0,     0,
     2688       0,    33,     0,     0,    40,    41,     0,     0,     0,     0,
    27002689       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27012690       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
    27022691       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
    2703        0,     0,   271,     0,     0,     0,     0,     0,    47,    48,
    2704        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2692       0,     0,     0,   339,     0,     0,     0,     0,     0,    47,
     2693      48,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    27052694      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2706       24,    25,    26,    27,     0,   339,    28,    29,    30,     0,
    2707        0,    47,    48,     0,     0,     0,    33,     8,     9,    10,
    2708       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2709       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2710       29,    30,     0,     0,    36,     0,     0,     0,     0,    33,
    2711        0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
    2712        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2713        0,     0,     0,     0,     0,     0,     0,    36,     0,     0,
    2714        0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
    2715      679,     0,     0,     0,     0,     0,    47,    48,     0,     0,
     2695      24,    25,    26,    27,     0,   678,    28,    29,    30,     0,
     2696       0,    47,    48,     0,     0,    33,     0,     0,     0,     0,
    27162697       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27172698       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2718        0,     0,     0,   671,     0,     0,     0,     0,     0,    47,
    2719       48,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2720       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2721       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2722       29,    30,     0,     0,     0,     0,     0,     0,     0,    33,
    2723        0,   283,   284,     0,   285,  1024,     0,  1025,     0,     0,
    2724     1026,  1027,  1028,  1029,  1030,  1031,  1032,  1033,     0,     0,
    2725     1511,  1034,     0,     0,     0,  1035,  1036,    36,    35,    37,
    2726      286,    38,     0,     0,    40,    41,  1037,     0,     0,     0,
     2699       0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
     2700      40,    41,     0,     2,   207,     4,     5,     6,     7,     8,
     2701       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2702      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2703       0,    28,    29,    30,     0,     0,     0,     0,     0,   670,
     2704      33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
     2705       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2706       0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
     2707      37,     0,    38,     0,     0,    40,    41,   283,   284,     0,
     2708     285,  1023,     0,  1024,     0,     0,  1025,  1026,  1027,  1028,
     2709    1029,  1030,  1031,  1032,     0,     0,  1510,  1033,     0,     0,
     2710       0,  1034,  1035,     0,    35,     0,   286,     0,     0,     0,
     2711       0,     0,  1036,  -420,     0,     0,   288,     0,     0,   289,
     2712     290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
     2713       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2714       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2715       0,   297,     0,   378,     0,     0,   172,     0,     0,    47,
     2716      48,   299,   300,   301,   302,     0,     0,   283,   284,  1037,
     2717     285,  1023,     0,  1024,  -134,     0,  1025,  1026,  1027,  1028,
     2718    1029,  1030,  1031,  1032,     0,     0,     0,  1033,     0,     0,
     2719       0,  1034,  1035,     0,    35,     0,   286,     0,     0,     0,
     2720       0,     0,  1036,     0,     0,     0,   288,     0,     0,   289,
     2721     290,   291,   292,   293,   294,    43,    44,     0,   295,   296,
     2722       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2723       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2724       0,   297,     0,   378,     0,     0,   172,     0,     0,    47,
     2725      48,   299,   300,   301,   302,     0,     0,     0,     0,  1037,
     2726       0,     0,     0,     0,  -134,     2,   207,     4,     5,     6,
     2727       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2728      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2729      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
     2730       0,     0,    33,     0,   283,   284,     0,   285,  1023,     0,
     2731    1024,  1382,  1383,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
     2732    1032,     0,     0,  1510,  1033,     0,     0,     0,  1034,  1035,
     2733      36,    35,    37,   286,    38,     0,     0,    40,    41,  1036,
     2734       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
     2735     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
     2736       0,  1293,     0,     0,     0,     0,     0,     0,     0,     0,
     2737       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2738     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
     2739     301,   302,     0,     0,   283,   284,  1037,   285,  1023,     0,
     2740    1024,  1382,  1383,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
     2741    1032,     0,     0,     0,  1033,     0,     0,     0,  1034,  1035,
     2742       0,    35,     0,   286,     0,     0,     0,     0,     0,  1036,
     2743       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
     2744     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
     2745       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2746       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2747     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
     2748     301,   302,     0,     0,   283,   284,  1037,   285,  1023,     0,
     2749    1024,     0,     0,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
     2750    1032,     0,     0,     0,  1033,     0,     0,     0,  1034,  1035,
     2751       0,    35,     0,   286,     0,     0,     0,     0,     0,  1036,
     2752       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
     2753     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
     2754       0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
     2755       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2756     378,     0,     0,   172,     0,     0,    47,    48,   299,   300,
     2757     301,   302,   286,     0,     0,     0,  1037,     0,   633,     0,
     2758     141,   142,   288,     0,     0,   289,   290,   291,   292,   293,
     2759     294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
     2760       0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
     2761       0,     0,     0,     0,     0,     0,     0,   297,     0,   634,
     2762       0,   635,   379,     0,     0,    47,    48,   299,   300,   301,
     2763     302,   286,     0,     0,     0,     0,     0,   287,     0,     0,
     2764       0,   288,     0,     0,   289,   290,   291,   292,   293,   294,
     2765      43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
     2766       0,   283,   284,     0,   285,     0,     0,     0,     0,     0,
     2767       0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
     2768       0,   379,     0,     0,    47,    48,   299,   300,   301,   302,
     2769     286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
    27272770     288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    27282771      44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2729        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2730        0,     0,  -420,     0,     0,   297,     0,   378,     0,     0,
    2731      172,     0,     0,    47,    48,   299,   300,   301,   302,     0,
    2732        0,   283,   284,  1038,   285,  1024,     0,  1025,  -134,     0,
    2733     1026,  1027,  1028,  1029,  1030,  1031,  1032,  1033,     0,     0,
    2734        0,  1034,     0,     0,     0,  1035,  1036,     0,    35,     0,
    2735      286,     0,     0,     0,     0,     0,  1037,     0,     0,     0,
    2736      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2737       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2738        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2772     283,   284,     0,   285,     0,     0,     0,     0,     0,     0,
    27392773       0,     0,     0,     0,     0,   297,     0,   378,     0,     0,
    2740      172,     0,     0,    47,    48,   299,   300,   301,   302,     0,
    2741        0,     0,     0,  1038,     0,     0,     0,     0,  -134,     2,
    2742      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2743       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2744       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2745        0,     0,     0,     0,     0,     0,     0,    33,     0,   283,
    2746      284,     0,   285,  1024,     0,  1025,  1383,  1384,  1026,  1027,
    2747     1028,  1029,  1030,  1031,  1032,  1033,     0,     0,  1511,  1034,
    2748        0,     0,     0,  1035,  1036,    36,    35,    37,   286,    38,
    2749        0,     0,    40,    41,  1037,     0,     0,     0,   288,     0,
    2750        0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    2751      295,   296,     0,     0,     0,     0,  1294,     0,     0,     0,
    2752        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2753        0,     0,     0,   297,     0,   378,     0,     0,   172,     0,
    2754        0,    47,    48,   299,   300,   301,   302,     0,     0,   283,
    2755      284,  1038,   285,  1024,     0,  1025,  1383,  1384,  1026,  1027,
    2756     1028,  1029,  1030,  1031,  1032,  1033,     0,     0,     0,  1034,
    2757        0,     0,     0,  1035,  1036,     0,    35,     0,   286,     0,
    2758        0,     0,     0,     0,  1037,     0,     0,     0,   288,     0,
    2759        0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    2760      295,   296,     0,     0,     0,     0,     0,     0,     0,     0,
    2761        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2762        0,     0,     0,   297,     0,   378,     0,     0,   172,     0,
    2763        0,    47,    48,   299,   300,   301,   302,     0,     0,   283,
    2764      284,  1038,   285,  1024,     0,  1025,     0,     0,  1026,  1027,
    2765     1028,  1029,  1030,  1031,  1032,  1033,     0,     0,     0,  1034,
    2766        0,     0,     0,  1035,  1036,     0,    35,     0,   286,     0,
    2767        0,     0,     0,     0,  1037,     0,     0,     0,   288,     0,
     2774       0,     0,   750,    47,    48,   299,   300,   301,   302,   286,
     2775       0,     0,     0,     0,     0,   287,     0,     0,     0,   288,
     2776       0,     0,   289,   290,   291,   292,   293,   294,    43,    44,
     2777       0,   295,   296,     0,     0,     0,     0,     0,     0,   283,
     2778     284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
     2779       0,     0,     0,     0,   297,     0,   378,     0,     0,   958,
     2780       0,     0,    47,    48,   299,   300,   301,   302,   286,     0,
     2781       0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
    27682782       0,   289,   290,   291,   292,   293,   294,    43,    44,     0,
    27692783     295,   296,     0,     0,     0,     0,     0,     0,   283,   284,
    27702784       0,   285,     0,     0,     0,     0,     0,     0,     0,     0,
    2771        0,     0,     0,   297,     0,   378,     0,     0,   172,     0,
     2785       0,     0,     0,   297,     0,   378,     0,     0,     0,     0,
    27722786       0,    47,    48,   299,   300,   301,   302,   286,     0,     0,
    2773        0,  1038,     0,   287,     0,     0,     0,   288,     0,     0,
     2787       0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
    27742788     289,   290,   291,   292,   293,   294,    43,    44,     0,   295,
    27752789     296,     0,     0,     0,     0,     0,     0,   283,   284,     0,
    27762790     285,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2777        0,     0,   297,     0,   378,     0,     0,   959,     0,     0,
     2791       0,     0,   504,     0,   378,     0,     0,     0,     0,     0,
    27782792      47,    48,   299,   300,   301,   302,   286,     0,     0,     0,
    27792793       0,     0,   287,     0,     0,     0,   288,     0,     0,   289,
     
    27812795       0,     0,     0,     0,     0,     0,   283,   284,     0,   285,
    27822796       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2783        0,   297,     0,   378,     0,     0,     0,     0,     0,    47,
     2797       0,   509,     0,   378,     0,     0,     0,     0,     0,    47,
    27842798      48,   299,   300,   301,   302,   286,     0,     0,     0,     0,
    27852799       0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
     
    27872801       0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
    27882802       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2789      505,     0,   378,     0,     0,     0,     0,     0,    47,    48,
     2803     512,     0,   378,     0,     0,     0,     0,     0,    47,    48,
    27902804     299,   300,   301,   302,   286,     0,     0,     0,     0,     0,
    27912805     287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
    27922806     292,   293,   294,    43,    44,     0,   295,   296,     0,     0,
    27932807       0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
    2794        0,     0,     0,     0,     0,     0,     0,     0,     0,   510,
    2795        0,   378,     0,     0,     0,     0,     0,    47,    48,   299,
     2808       0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
     2809       0,   378,     0,     0,     0,     0,     0,   701,    48,   299,
    27962810     300,   301,   302,   286,     0,     0,     0,     0,     0,   287,
    27972811       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    27982812     293,   294,    43,    44,     0,   295,   296,     0,     0,     0,
    2799        0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
    2800        0,     0,     0,     0,     0,     0,     0,     0,   513,     0,
    2801      378,     0,     0,     0,     0,     0,    47,    48,   299,   300,
    2802      301,   302,   286,     0,     0,     0,     0,     0,   287,     0,
    2803        0,     0,   288,     0,     0,   289,   290,   291,   292,   293,
    2804      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    2805        0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
    2806        0,     0,     0,     0,     0,     0,     0,   297,     0,   378,
    2807        0,     0,     0,     0,     0,   702,    48,   299,   300,   301,
    2808      302,   286,     0,     0,     0,     0,     0,   287,     0,     0,
    2809        0,   288,     0,     0,   289,   290,   291,   292,   293,   294,
    2810       43,    44,     0,   295,   296,     0,     0,     0,     0,     0,
    28112813       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2812        0,     0,     0,     0,     0,     0,   297,     0,   378,     0,
    2813        0,     0,     0,     0,   344,    48,   299,   300,   301,   302,
    2814        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2815       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2816       22,    23,    24,    25,    26,    27,     0,     0,     0,     0,
    2817        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2818        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2819       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2820        0,     0,    28,    29,    30,     0,    36,     0,    37,     0,
    2821       38,    39,    33,   175,   176,    42,     0,     0,     0,     0,
    2822        0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
     2814       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
     2815     378,     0,     0,     0,     0,     0,   344,    48,   299,   300,
     2816     301,   302,     2,   207,     4,     5,     6,     7,     8,     9,
     2817      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2818      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2819       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2820       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2821      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2822      26,    27,     0,     0,    28,    29,    30,    36,     0,    37,
     2823       0,    38,    39,    33,   175,   176,    42,     0,     0,     0,
     2824       0,     0,     0,     0,     0,    43,    44,     0,     0,     0,
    28232825       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2824       36,     0,     0,     0,     0,   112,     0,    40,    41,     0,
    2825        0,     0,     0,     0,     0,     0,     0,     0,    43,    44,
    2826      206,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2827       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2828       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2829       29,    30,     0,     0,     0,     0,     0,     0,     0,    33,
     2826       0,    36,     0,     0,     0,     0,   112,     0,    40,    41,
     2827       0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
     2828      44,   206,     2,   207,     4,     5,     6,     7,     8,     9,
     2829      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2830      20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
     2831      28,    29,    30,     0,     0,     0,     0,     0,     0,    33,
    28302832       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28312833       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     
    28352837      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    28362838      25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2837        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2839       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    28382840       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28392841       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2840        0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
    2841       40,    41,     2,   207,     4,     5,     6,     7,     8,     9,
    2842       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2843       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2844       28,    29,    30,     0,     0,     0,     0,     0,     0,     0,
    2845       33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2842       0,     0,    36,     0,    37,     0,    38,     0,     0,    40,
     2843      41,     2,   207,     4,     5,     6,     7,     8,     9,    10,
     2844      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2845      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2846      29,    30,     0,     0,     0,     0,     0,     0,    33,     0,
    28462847       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2847        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2848       37,     0,    38,     0,     0,   208,    41
     2848       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2849       0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
     2850      38,     0,     0,   208,    41,     8,     9,    10,    11,    12,
     2851      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2852      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2853     483,   484,   485,     0,     0,     0,    33,     8,     9,    10,
     2854      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2855      21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
     2856      29,    30,     0,     0,    36,     0,     0,     0,    33,     0,
     2857       0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
     2858       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2859       0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
     2860       0,     0,     0,   208,    41
    28492861};
    28502862
    28512863#define yypact_value_is_default(yystate) \
    2852   ((yystate) == (-1263))
     2864  ((yystate) == (-1267))
    28532865
    28542866#define yytable_value_is_error(yytable_value) \
     
    28572869static const yytype_int16 yycheck[] =
    28582870{
    2859        0,     1,    45,   118,    45,   240,   520,     0,   186,    45,
    2860      533,   512,   186,   186,   863,   205,   640,   220,   186,   107,
    2861        1,   743,   569,   743,   186,   743,   186,     0,   863,   169,
    2862      170,   616,   349,     0,    34,   598,    34,   257,   188,   596,
    2863        0,    34,   186,  1023,   491,    45,  1005,  1006,   495,   349,
    2864      282,    51,   596,   598,   686,     0,     1,    45,    51,  1304,
    2865      187,    34,  1006,    45,   596,    65,    45,    34,    68,   157,
    2866      728,    71,    65,   364,    34,    68,   596,   368,    71,   114,
    2867     1035,  1036,   689,   596,   121,    45,   187,   202,   266,    34,
    2868       71,    51,   266,   266,    84,    42,     0,   417,   266,   596,
    2869      137,   136,   114,    59,   266,    65,   266,   107,    68,    42,
    2870      596,    71,   262,   263,   297,   115,   436,   600,   118,   119,
    2871      631,   604,   266,    68,   444,    66,    71,   969,    30,     0,
    2872       34,    54,    47,    48,   114,   646,    47,    48,     0,     1,
    2873      267,   599,   625,   186,     0,   186,   629,   605,   148,   149,
    2874      186,   345,   108,  1113,  1109,   111,   149,   157,   158,  1404,
    2875     1383,   161,    42,    34,   630,   631,   267,   681,   161,   116,
    2876      487,   893,    34,   893,  1016,   893,  1438,    11,    34,    81,
    2877      646,   425,   426,    47,    48,   114,   186,   187,  1023,   149,
    2878       67,   114,   712,   704,   187,   112,   137,   417,   186,   712,
    2879      108,   161,   202,   111,   186,   120,   409,   186,   119,    71,
    2880      210,  1473,    68,  1475,   100,   712,   436,   210,   114,   136,
    2881      116,    75,   222,   266,   444,   266,   186,   187,   117,   222,
    2882      266,  1097,   480,  1456,   114,  1101,   116,   114,   704,   786,
    2883      240,    32,   425,   426,   462,   802,    42,    42,   134,   493,
    2884      210,   814,   252,   341,   252,   119,    75,   889,   802,   252,
    2885      260,  1205,   222,   219,    84,   265,   266,   267,   512,   814,
    2886      802,   503,   272,  1233,   267,  1235,  1236,   222,   405,   252,
    2887      395,    75,   802,   137,   257,   252,   480,   894,   912,   802,
    2888       51,  1271,   252,    84,    85,   586,   116,   297,   598,  1258,
    2889     1259,    42,  1488,   122,   405,   802,   266,   252,   423,    90,
    2890      310,   219,   119,   101,   429,  1259,   802,   273,   114,   114,
    2891      116,   116,   505,   898,   280,   900,   326,   510,    42,  1515,
    2892      513,   331,   576,   940,   121,   101,   627,   118,   331,   127,
    2893     1488,   341,  1191,   137,   133,   345,   804,   136,   252,   349,
    2894      350,   478,     3,   836,   115,   675,  1191,   121,   921,   115,
    2895     1508,   127,   121,   920,   364,   273,   222,  1515,   368,   114,
    2896      115,   331,   280,   114,  1032,   116,   920,   478,   137,   135,
    2897       75,   252,   630,   631,   567,  1459,   257,   148,   920,   349,
    2898      252,  1465,   348,    88,    89,   395,   252,   115,   646,   984,
    2899      114,    75,   116,    77,    78,   405,     0,   285,   121,   365,
    2900      115,  1485,   405,   369,    88,    89,  1490,   135,   229,   114,
    2901     1379,   116,   616,   423,   137,   425,   426,   621,   660,   429,
    2902      135,   431,   310,   311,   121,  1379,  1271,   248,  1387,   124,
    2903      125,   955,   116,   926,   417,   405,   664,  1427,   121,   210,
    2904      137,   121,   452,   244,  1434,   675,   704,   365,   116,   121,
    2905      118,   369,    75,   436,   137,   135,   967,   345,    93,    94,
    2906      470,   444,  1314,   135,   121,    88,    89,   135,   478,   240,
    2907      480,   701,   482,   930,  1108,   478,   114,   487,   116,   482,
    2908      137,   739,  1099,   493,   350,     3,   114,   814,   116,   731,
    2909      650,   641,   380,   116,   795,   505,  1486,   507,     0,   482,
    2910      510,   272,   512,   513,   814,   482,   121,   115,  1081,   114,
    2911      520,   116,   482,   121,   524,    95,    96,   487,   121,  1371,
    2912     1372,   121,   137,   648,  1483,   993,   994,   482,   114,  1488,
    2913      116,   121,    75,   114,   137,   739,   417,   137,   121,   310,
    2914      114,  1158,  1159,  1067,   681,    88,    89,   137,  1072,  1508,
    2915      130,   131,   135,   121,   782,   436,  1515,   117,   568,   569,
    2916      136,   121,   114,   444,   792,   121,   576,   121,   482,   137,
    2917      681,   121,   114,   116,   345,   803,   586,   587,   379,   115,
    2918      590,   137,  1427,   137,   114,   121,   596,   137,   598,  1434,
    2919        4,     5,     6,     7,     8,     9,     0,     1,   925,   480,
    2920      117,   482,   114,  1271,   121,   471,   616,   114,   122,    75,
    2921      482,   621,   115,   623,   128,   129,   482,   627,   121,   115,
    2922      630,   631,    88,    89,   115,   121,   596,   115,   598,    75,
    2923       34,    77,    78,    79,   892,   117,   646,   850,   648,   121,
    2924      115,  1486,    88,    89,    10,    11,    12,    13,    14,   120,
    2925      115,   617,   115,   115,   425,   426,   121,   870,    72,   121,
    2926       74,   549,   550,   551,    68,   117,   632,    71,   678,   121,
    2927       75,   681,   114,   587,   116,   115,    42,    82,  1346,   645,
    2928       85,   121,    87,    88,    89,     0,     1,   932,   892,   490,
    2929      115,   492,   675,   117,   704,   705,   706,   121,   114,   617,
    2930      116,   114,   712,   713,    70,   893,   856,   115,   115,   893,
    2931      893,   681,   114,   121,   632,   893,    31,    32,   701,    34,
    2932      115,   893,   493,   893,    84,   115,   121,   645,   114,   739,
    2933       45,   121,   115,   743,   744,   114,    51,   116,   121,   893,
    2934      115,   512,   712,   713,    59,   115,   121,  1005,   137,  1366,
    2935       65,   121,   618,    68,   158,  1288,    71,   114,   895,   116,
    2936     1492,   727,  1492,  1431,  1492,  1433,  1383,   115,   114,    84,
    2937       85,   115,   115,   121,  1002,  1003,   786,   121,   121,   114,
    2938      984,   114,   115,   116,   895,   795,    75,   797,    77,    78,
    2939       79,    67,   802,   108,   675,   115,   111,   997,   137,    88,
    2940       89,   121,   115,   118,   814,   576,    97,    98,   121,   727,
    2941       51,     4,     5,     6,     7,     8,     9,   115,   222,  1487,
    2942      701,   120,   121,   121,   119,   114,   692,   115,   116,  1057,
    2943     1058,   137,   802,   119,   149,   636,    61,    62,  1455,  1456,
    2944      706,   137,    35,   114,   814,   616,   161,   119,   252,   505,
    2945      621,   507,    75,   863,   510,  1097,    79,   513,   739,  1101,
    2946     1102,   114,   750,   120,   121,    88,    89,   114,  1018,    84,
    2947     1128,   186,   187,   123,   115,   885,    47,    48,     1,    72,
    2948      863,    74,   892,   893,   685,   895,   687,   202,  1114,  1115,
    2949      691,   114,   132,   116,   133,   210,    99,   907,   116,   122,
    2950      123,   552,   553,    75,   219,    77,    78,   222,   863,   117,
    2951      920,   921,   554,   555,   229,   925,    88,    89,   114,   117,
    2952      116,   931,   932,   893,  1128,   895,   122,   123,   115,   244,
    2953     1067,   797,   115,   248,   115,  1072,   115,   252,   253,   115,
    2954      931,   115,   114,   116,  1468,   955,   114,   119,   117,   863,
    2955      136,   266,   267,   560,   561,   925,  1067,   119,   273,   119,
    2956      121,  1072,   119,   114,  1089,   280,   114,   115,   116,   210,
    2957      136,   885,   115,  1215,   984,  1203,   931,   115,  1171,  1172,
    2958      117,  1174,   863,   556,   557,   558,   559,   117,  1181,   117,
    2959     1183,   863,   121,  1517,   135,  1005,  1006,   863,    31,   135,
    2960     1258,  1205,   114,   115,   116,     4,     5,     6,     7,     8,
    2961        9,   892,  1240,  1023,   135,    75,   331,    77,    78,  1247,
    2962     1248,  1249,    75,   115,    77,    78,   115,   431,    88,    89,
    2963      114,   272,   116,   348,   349,    88,    89,     3,   122,   123,
    2964     1023,   114,   115,   116,    10,    11,    12,    13,    14,   119,
    2965      365,   120,  1062,   115,   369,   856,   297,  1067,   121,   931,
    2966      114,   862,  1072,  1305,   379,   120,   119,  1309,  1023,   310,
    2967      120,  1081,   115,    72,   135,    74,    42,   115,   482,  1089,
    2968      395,   137,  1310,    61,    62,    63,   121,     1,   462,   115,
    2969      405,   114,    75,   116,    77,    78,   984,  1067,   115,   122,
    2970      123,   902,  1072,   121,    70,    88,    89,   115,   423,  1023,
    2971      115,   115,   115,   115,   429,     3,    31,   115,  1128,   115,
    2972      524,   987,    10,    11,    12,    13,    14,   115,   115,   115,
    2973      253,   114,   121,    75,   115,  1023,   119,    51,   137,    68,
    2974       82,   115,  1023,    85,   115,    87,    88,    89,   115,  1342,
    2975      465,  1023,   120,   115,    42,   470,   136,  1023,   959,  1169,
    2976     1170,   932,   135,   478,   115,    72,  1408,   482,    75,   117,
    2977      117,    78,   487,    80,   116,   490,   115,   492,   115,  1170,
    2978       87,  1191,    70,   587,    75,   121,    77,    78,    79,   115,
    2979      119,   135,   114,   107,   121,  1205,     3,    88,    89,  1209,
    2980      119,   115,   115,    10,    11,    12,    13,    14,  1191,    75,
    2981      115,   452,   527,   984,  1169,  1170,    82,   532,  1209,    85,
    2982      115,    87,    88,    89,   121,   115,   630,   631,   115,   121,
    2983      115,   135,   161,   114,   148,    42,  1191,  1362,   121,   114,
    2984      114,   114,   646,   157,   114,   117,   115,  1128,  1258,  1259,
    2985      116,   137,  1053,   120,  1209,   115,  1266,  1502,   120,   115,
    2986      119,  1271,   133,    70,   505,   580,   507,   863,   120,   510,
    2987      115,   117,   513,   137,   121,   117,   115,  1191,   115,   117,
    2988       50,   596,   117,   598,   117,   115,   117,   137,  1271,   117,
    2989      664,   117,   206,   222,  1304,   115,   210,   137,  1170,   120,
    2990      704,   137,   617,  1169,  1492,   137,   213,   120,  1492,  1492,
    2991     1191,  1266,   137,  1304,  1492,   115,  1271,   632,   135,  1191,
    2992     1492,   636,  1492,   120,  1205,  1191,   240,   117,    86,   117,
    2993      645,   260,   647,   648,   649,    86,   265,  1209,  1492,    90,
    2994       91,    92,   465,  1468,   117,   117,   117,   115,   117,  1304,
    2995      115,   117,  1362,   114,   114,   114,  1493,  1271,   272,    63,
    2996      115,   275,   115,   114,  1165,   116,   681,   118,   119,  1379,
    2997      685,   119,   687,   280,   114,    75,   691,    77,    78,    79,
    2998     1517,   137,  1493,   297,   699,   117,   117,   115,    88,    89,
    2999     1271,   117,   115,   101,  1404,  1361,   310,   712,   713,  1271,
    3000     1266,   114,   101,   114,   527,  1271,  1517,   137,   782,   532,
    3001      120,    45,   727,  1404,   114,   121,   116,  1427,   792,   115,
    3002      115,   350,   122,   123,  1434,   115,  1436,   341,  1438,   803,
    3003     1026,   345,  1304,   115,   135,   135,   115,   678,   115,  1492,
    3004      137,  1492,   101,  1361,  1427,   352,  1492,   354,   137,  1404,
    3005      364,  1434,   101,    57,   368,   664,    86,   580,  1468,   863,
    3006       90,    91,    92,  1473,   137,  1475,   137,   115,     0,     1,
    3007      115,   117,  1427,   137,   115,   115,  1486,   120,   117,  1434,
    3008      117,   885,  1492,  1493,   114,   137,   116,   802,   118,   119,
    3009     1493,   114,  1502,   137,   120,    99,    75,   115,   120,   814,
    3010       79,   430,    34,  1486,   115,   137,   115,  1517,   115,    88,
    3011       89,   425,   426,  1427,  1517,  1038,   562,   564,   563,    51,
    3012     1434,   565,  1492,   964,   647,   566,   649,   931,  1191,  1348,
    3013     1456,  1486,  1404,   440,  1527,   114,  1281,  1102,   452,    71,
    3014        0,   856,   471,   122,   123,  1309,  1427,   862,  1434,  1053,
    3015     1072,   465,   678,  1434,   678,  1427,   691,   908,   900,   580,
    3016      959,  1427,  1434,   856,   642,   928,   716,   568,  1434,  1209,
    3017      482,   727,  1486,   782,    34,   107,   699,   491,   893,   493,
    3018      895,   495,    -1,   792,   568,    -1,   568,   902,    -1,    -1,
    3019      194,   505,    -1,   507,   803,  1191,   510,    -1,   512,   513,
    3020       -1,  1005,  1006,    -1,    -1,  1486,    -1,    -1,    -1,    -1,
    3021      925,    71,    -1,   217,  1486,    -1,    -1,   149,    -1,  1023,
    3022     1486,    -1,    -1,   227,    -1,   157,   158,    -1,  1002,  1003,
    3023       -1,   946,    -1,    -1,    -1,    75,    10,    11,    12,    13,
    3024       14,    -1,    82,    -1,   959,    85,    -1,    87,    88,    89,
    3025      965,    -1,    -1,    -1,   969,   187,    -1,    -1,    -1,    -1,
    3026       -1,   590,   576,    -1,    -1,    -1,   907,    -1,    42,    -1,
    3027      202,    -1,   586,   205,   206,    -1,   116,   689,   210,    -1,
    3028       -1,    -1,    -1,  1057,  1058,    -1,    -1,    -1,    -1,   618,
    3029       -1,  1287,    -1,   297,   623,    -1,    70,    -1,   158,   231,
    3030       -1,  1016,   616,   235,    -1,   237,    -1,   621,    -1,    -1,
    3031       -1,    -1,    -1,   627,   246,    -1,    -1,    -1,    -1,    -1,
    3032      252,    -1,    -1,    -1,    -1,   257,    -1,    -1,    -1,    -1,
    3033       -1,  1502,    -1,    -1,    -1,   267,    -1,    -1,  1053,    -1,
    3034      114,    75,   116,   275,  1340,    79,    -1,  1343,   122,   123,
    3035       -1,    -1,  1067,    -1,    88,    89,    75,  1072,    77,    78,
    3036       79,    -1,    -1,   692,   678,  1169,  1170,    -1,   780,    88,
    3037       89,   231,    -1,    -1,  1089,    -1,    -1,   706,   190,    -1,
    3038      114,    -1,    -1,    -1,    -1,   197,    -1,  1191,   122,   123,
    3039       -1,  1387,   252,  1002,  1003,   114,  1392,   257,  1113,    -1,
    3040       -1,    -1,   716,   122,   123,  1209,    -1,    -1,    -1,   341,
    3041       -1,    -1,    -1,   345,    75,    -1,    77,    78,    79,   351,
    3042      727,  1062,    -1,   946,    -1,  1421,    -1,    88,    89,  1203,
    3043       -1,    -1,   364,    -1,    -1,    -1,   368,   441,    -1,    -1,
    3044      852,    -1,   965,    -1,    51,    -1,   969,    -1,  1057,  1058,
    3045     1165,    68,    -1,   114,  1258,  1259,    -1,   269,    65,    -1,
    3046       77,    68,  1266,   467,    71,    -1,  1240,  1271,   797,    -1,
    3047       -1,    -1,    -1,  1247,  1248,  1249,    75,    -1,    77,    78,
    3048       79,   795,   894,    -1,    -1,   417,    -1,    -1,    -1,    88,
    3049       89,   351,    -1,  1016,    -1,    -1,    -1,    -1,    -1,   431,
    3050     1304,   505,   119,    -1,   436,    -1,   510,    -1,    -1,   513,
    3051     1506,    -1,   444,    -1,   326,   114,  1512,   116,  1233,    -1,
    3052     1235,  1236,   334,   122,   123,   337,    -1,  1523,   940,    -1,
    3053      462,  1527,    -1,   465,    -1,    -1,  1310,    -1,    -1,    -1,
    3054       -1,    -1,   149,    -1,   161,    -1,    -1,    -1,   480,    -1,
    3055      482,    -1,    -1,    -1,   161,    -1,    -1,   417,    -1,   491,
    3056      972,    -1,    -1,   495,    -1,    10,    11,    12,    13,    14,
    3057       -1,   431,    -1,    -1,    -1,  1379,   436,    -1,    -1,     0,
    3058      187,    -1,    68,    -1,   444,   397,    -1,    -1,    -1,   401,
    3059     1113,    -1,   524,   907,    -1,    -1,    -1,    42,    84,  1314,
    3060     1404,    -1,   462,   210,    -1,   222,    -1,    -1,  1020,    -1,
    3061       -1,    -1,    -1,    34,    -1,   222,   930,   931,   932,    -1,
    3062      480,    -1,   482,  1427,    -1,    70,    -1,    -1,    -1,    -1,
    3063     1434,  1240,    -1,   119,    -1,    -1,    -1,   569,  1247,  1248,
    3064     1249,    -1,    -1,   260,    -1,    -1,  1361,  1362,   265,    -1,
    3065       71,    -1,    -1,    -1,   586,   587,  1371,  1372,   987,   663,
    3066       -1,    -1,    -1,   280,   524,   477,   598,    -1,   672,   114,
    3067      984,   116,   676,    -1,    -1,   161,    -1,   122,   123,    -1,
    3068       -1,    -1,  1486,    -1,   616,    -1,    -1,  1099,    -1,   621,
    3069       -1,    -1,    -1,    -1,  1409,   627,    -1,    -1,   630,   631,
    3070       -1,  1310,    -1,    75,    -1,    77,    78,    79,    -1,    -1,
    3071     1233,    -1,  1235,  1236,   646,    -1,    88,    89,    -1,    -1,
    3072       -1,    -1,    -1,    -1,   331,    -1,    -1,   587,    -1,    -1,
    3073       -1,    -1,   664,   350,    -1,    -1,   222,   158,    -1,    -1,
    3074       -1,    -1,   114,   675,   116,    -1,  1158,  1159,  1062,    -1,
    3075      122,   123,    -1,  1468,  1469,    -1,   568,   569,    -1,    -1,
    3076       -1,    -1,    75,  1478,    77,    78,    79,    -1,    -1,   701,
    3077      630,   631,   704,    -1,   260,    88,    89,  1492,  1493,   265,
    3078       -1,   713,    -1,    -1,   716,    -1,   646,    -1,    -1,    -1,
    3079       -1,  1314,    -1,    -1,    -1,  1436,    -1,  1438,   405,    -1,
    3080       -1,   114,  1517,   116,   664,    -1,    -1,   739,    -1,   122,
    3081      123,    -1,   744,   430,    75,   675,    77,    78,    79,    -1,
    3082       -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,   446,
    3083       -1,   252,  1473,    -1,  1475,    -1,   257,    -1,    -1,   651,
    3084     1169,   701,    -1,   655,   704,    -1,    -1,    -1,  1371,  1372,
    3085      782,    -1,    -1,   114,   471,    -1,    -1,    -1,    -1,    -1,
    3086      792,   122,   123,   795,   350,    -1,   798,    -1,    -1,    -1,
    3087       -1,   803,    -1,    -1,    -1,    -1,     0,    -1,    -1,   739,
    3088       -1,   813,    -1,   887,    -1,    -1,  1409,    -1,    -1,    -1,
    3089       -1,    -1,    -1,    -1,    -1,  1209,    10,    11,    12,    13,
    3090       14,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
    3091       34,   102,   103,   104,   105,   106,   107,   108,   109,   110,
    3092      111,   112,   782,    -1,    -1,    -1,    -1,    -1,    42,    -1,
    3093      351,   863,   792,    42,    -1,    -1,    -1,  1266,   798,    -1,
    3094       -1,    -1,    -1,   803,   430,   136,  1469,    71,    -1,    -1,
    3095       -1,    -1,    -1,   885,  1366,  1478,    70,    -1,    -1,    -1,
    3096      892,    70,    -1,   895,    -1,    -1,    75,    -1,    77,    78,
    3097       79,  1383,    -1,   590,   786,    -1,    -1,    -1,    -1,    88,
    3098       89,    -1,    -1,    -1,    -1,   471,    -1,    -1,    -1,   921,
    3099     1304,    -1,    -1,    -1,    -1,    -1,   417,    -1,   930,   931,
    3100      114,   618,   116,   863,    -1,   114,   623,   116,   122,   123,
    3101      431,    -1,    -1,   122,   123,   436,    -1,     0,    -1,    -1,
    3102       -1,    -1,    -1,   444,    -1,   885,    -1,    -1,    -1,    -1,
    3103     1034,    -1,   892,    -1,   158,    -1,    10,    11,    12,    13,
    3104       14,   462,    -1,  1455,  1456,    -1,    -1,    -1,    -1,    -1,
    3105       -1,    34,   984,    -1,    -1,    -1,    -1,    -1,    -1,   480,
    3106       -1,   482,    -1,    -1,    -1,   997,    -1,    -1,    42,    -1,
    3107     1002,  1003,    -1,  1005,  1006,   692,    -1,    -1,    -1,    -1,
    3108       28,    29,    30,    -1,    -1,    -1,    -1,   899,    71,   706,
    3109     1404,  1023,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,
    3110       -1,    75,    -1,   524,   590,    79,    -1,    -1,    -1,    -1,
    3111      727,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,
    3112       -1,    -1,  1436,    -1,  1438,  1057,  1058,    -1,   252,    -1,
    3113       -1,    -1,   618,   257,    -1,    -1,    -1,   623,    -1,    -1,
    3114      114,    -1,  1002,  1003,    -1,  1005,  1006,    -1,   122,   123,
    3115       -1,    -1,   100,    -1,   102,    -1,    -1,    -1,    -1,  1473,
    3116       -1,  1475,   974,  1023,    -1,    -1,   587,    -1,    -1,    -1,
    3117       -1,    -1,    -1,    -1,    -1,   158,    -1,    -1,   990,   127,
    3118      797,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1502,    -1,
    3119       -1,    -1,    -1,    -1,    -1,    -1,  1128,  1057,  1058,    -1,
    3120       -1,    -1,    -1,    -1,    -1,    -1,   692,    -1,    -1,   630,
    3121      631,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3122      706,    -1,    -1,    -1,    -1,   646,    -1,   351,    -1,    -1,
    3123       -1,    -1,    -1,    -1,   182,    -1,    -1,    -1,  1170,    -1,
    3124       -1,    -1,   190,   664,   192,   193,    -1,    -1,    -1,   197,
    3125       -1,   199,   200,  1065,   675,    -1,    -1,    -1,    -1,  1191,
    3126       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1128,   252,
    3127       -1,  1203,    -1,  1205,   257,    -1,  1280,  1209,    -1,    -1,
    3128      701,    -1,    -1,   704,    -1,    -1,    -1,    -1,    -1,    -1,
    3129       -1,    -1,  1104,   417,    -1,    -1,    -1,    10,    11,    12,
    3130       13,    14,    -1,    -1,    -1,    -1,    -1,   431,  1240,    -1,
    3131     1170,   797,   436,    -1,    -1,  1247,  1248,  1249,   739,    -1,
    3132      444,   269,    -1,    -1,    -1,    -1,  1258,  1259,    -1,    42,
    3133       -1,  1191,    -1,    -1,    -1,    -1,    -1,    -1,   462,  1271,
    3134       -1,    -1,    -1,  1203,    -1,  1205,    -1,    -1,    -1,    -1,
    3135       -1,    -1,    -1,    -1,    -1,    -1,   480,    70,   482,    -1,
    3136       -1,   782,    75,    -1,    77,    78,    79,    -1,   351,    -1,
    3137      987,   792,  1304,    -1,    -1,    88,    89,   798,  1310,    -1,
    3138     1240,    -1,   803,    -1,    -1,    -1,    -1,  1247,  1248,  1249,
    3139       -1,    -1,    -1,    28,    29,    30,    -1,    -1,  1258,  1259,
    3140      524,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
    3141      123,  1271,    -1,    10,    11,    12,    13,    14,    -1,    -1,
    3142       -1,    55,    -1,    57,    -1,    -1,    60,    61,    62,    -1,
    3143       64,  1435,    -1,  1437,   417,    -1,    -1,    -1,    -1,    -1,
    3144       -1,    -1,   863,    -1,    78,    42,    -1,  1379,   431,    -1,
    3145     1310,    -1,    -1,   436,    -1,    -1,    90,    91,    -1,    -1,
    3146       -1,   444,    -1,   587,   885,   100,    -1,   102,  1472,    -1,
    3147     1474,   892,  1404,    70,    -1,    -1,    -1,    -1,    75,   462,
    3148       77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3149       -1,    88,    89,    -1,    -1,  1427,    -1,   480,    -1,   482,
    3150       -1,   987,  1434,    -1,    -1,    -1,   630,   631,    -1,    -1,
    3151       -1,    -1,  1516,    -1,  1518,    -1,    -1,   114,    -1,  1379,
    3152       -1,    -1,   646,    -1,    -1,   122,   123,  1531,  1532,    -1,
    3153       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
    3154      664,   524,    -1,    -1,    -1,    -1,    -1,   182,    -1,    -1,
    3155       -1,   675,  1169,    -1,  1486,    -1,    -1,   192,   193,    -1,
    3156       -1,  1493,   197,    42,   199,   200,    -1,  1427,    -1,    -1,
    3157       -1,    -1,    -1,    -1,  1434,    -1,    -1,   701,    -1,    -1,
    3158      704,  1002,  1003,    -1,  1005,  1006,    -1,    -1,    -1,    -1,
    3159       -1,    70,    -1,    -1,    -1,    -1,    75,    -1,    77,    78,
    3160       79,    -1,  1023,    -1,   587,    -1,    -1,    -1,    -1,    88,
    3161       89,    -1,    -1,    -1,    -1,   739,    -1,    -1,    -1,    -1,
    3162       -1,    -1,    -1,    -1,   572,   573,  1486,    -1,    -1,    -1,
    3163       10,    11,    12,    13,    14,   114,  1057,  1058,    -1,    -1,
    3164       -1,    -1,    -1,   122,   123,    -1,    -1,   630,   631,  1266,
    3165       -1,   599,    -1,    -1,   602,   603,    -1,   605,   782,   607,
    3166      608,    -1,    42,   646,   612,   613,    -1,    -1,   792,    -1,
    3167       -1,    -1,    -1,    -1,   798,    -1,    -1,    -1,    -1,   803,
    3168       -1,   664,    -1,  1169,    -1,    10,    11,    12,    13,    14,
    3169       70,    -1,   675,    -1,    -1,    75,    -1,    77,    78,    79,
    3170       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1128,    88,    89,
    3171      344,    -1,   346,    -1,    -1,    -1,    -1,    42,   701,    -1,
    3172       -1,   704,    -1,   357,   358,    -1,    -1,    -1,    -1,    -1,
    3173       -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,   863,
    3174       -1,    -1,   122,   123,    -1,    70,    -1,    -1,    -1,  1170,
    3175       75,    -1,    -1,    -1,    79,    -1,   739,    -1,    -1,    -1,
    3176       -1,   885,    -1,    88,    89,    -1,    -1,    -1,   892,    -1,
    3177     1191,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3178     1266,    -1,  1203,    -1,  1205,    -1,    -1,    -1,    -1,   114,
    3179       -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,   123,   782,
    3180      748,   749,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   792,
    3181       -1,    -1,    -1,    -1,    -1,   798,    -1,    -1,    -1,  1240,
    3182      803,    -1,    -1,    -1,    -1,    -1,  1247,  1248,  1249,    -1,
    3183       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1258,  1259,    -1,
     2871       0,     1,   186,   186,   532,    45,    45,     0,   186,    45,
     2872       1,   519,     0,   186,   186,   240,   186,   205,   186,   742,
     2873     742,     0,   511,     0,   118,   742,   188,   490,   639,   595,
     2874     862,   494,  1022,   615,    34,   220,   349,     1,   597,   595,
     2875    1303,    34,   282,   349,   685,    45,    34,   169,   170,    45,
     2876     598,    51,   595,   727,   568,    34,   604,    34,    51,   425,
     2877     426,     0,   417,   480,  1005,    65,    74,    30,    68,    83,
     2878     297,    71,    65,   597,    66,    68,    34,    45,    71,    41,
     2879      71,   436,   266,   266,   187,   595,   113,    51,   266,   444,
     2880    1004,  1005,   595,   266,   266,    34,   266,   595,   266,   595,
     2881     262,   263,     0,     1,   688,    46,    47,   107,   202,   630,
     2882       0,  1112,    65,   107,    74,   115,    45,    80,   118,   119,
     2883       0,   113,   629,   630,   645,    41,   492,   108,   136,    68,
     2884     111,    41,    41,   257,   968,   364,    34,   599,   645,   368,
     2885    1403,   603,    41,   107,    34,   511,   186,   186,   148,   149,
     2886     186,   115,  1382,   115,    34,    99,   149,   157,   158,    51,
     2887      74,   161,   624,   157,   267,    45,   628,    89,   161,   892,
     2888     892,    51,   680,    71,    11,   892,   136,    41,   119,   345,
     2889     486,  1015,   703,   136,   148,    65,   186,   187,    68,   133,
     2890     186,    71,    59,   157,   187,   117,   703,   116,   425,   426,
     2891      83,   711,   202,   113,   113,   115,   115,   121,   711,   575,
     2892     210,   100,   629,   630,   113,   711,   115,   210,   186,     0,
     2893       1,  1487,   222,   115,   409,  1455,   266,   266,   645,   222,
     2894     266,  1232,   115,  1234,  1235,   801,   113,   126,   219,   113,
     2895     240,   108,   206,   663,   111,   801,   210,   888,  1514,   113,
     2896     862,   115,   252,    34,   813,   803,   148,   186,   801,   252,
     2897     260,   135,   502,  1204,   252,   265,   266,   267,   114,   149,
     2898     113,   785,   272,   252,   267,   252,   240,   504,   257,   187,
     2899    1270,   161,   509,   222,   597,   512,   703,    68,   134,   813,
     2900      71,   801,   273,   417,   252,  1034,  1035,   297,   801,   280,
     2901     911,   395,   405,   801,   114,   801,   186,   187,   272,   893,
     2902     310,   275,   436,   252,   480,   462,   118,  1258,   210,   674,
     2903     444,   738,    46,    47,   134,    53,   326,    46,    47,   423,
     2904     210,   331,   229,   297,    51,   429,   111,   120,   331,   566,
     2905     100,   341,   222,  1257,  1258,   345,   310,   341,   240,   349,
     2906     350,   248,   219,   919,   252,   939,   585,  1031,  1190,   267,
     2907     135,   781,   252,   919,   364,    74,   126,   257,   368,  1108,
     2908     114,   791,   252,   835,     3,   478,   919,   341,    87,    88,
     2909     272,   345,   802,     3,   365,   113,   266,  1437,   369,    74,
     2910     134,   120,    57,   120,   118,   395,   920,   626,   115,   118,
     2911     364,   983,    87,    88,   368,   405,   273,   136,   462,  1458,
     2912    1022,   350,   405,   280,    74,  1464,    76,    77,   310,   659,
     2913     113,   114,  1472,   423,  1474,   425,   426,    87,    88,   429,
     2914     115,   431,    94,    95,    99,  1484,  1426,  1378,   417,     0,
     2915    1489,   222,    74,  1433,   992,   993,   954,     0,    41,   615,
     2916     113,   331,   452,   345,   620,    87,    88,   436,   118,   120,
     2917     135,   425,   426,   925,  1378,   444,   929,   129,   130,   349,
     2918     470,   252,   116,   113,   891,   136,   120,   966,   478,  1313,
     2919     480,   348,   482,   115,   114,   478,   486,   649,   452,   482,
     2920     730,   114,   492,   210,   482,  1485,  1107,   405,   365,   120,
     2921     813,   465,   369,   482,   504,   482,   506,   813,   113,   509,
     2922     132,   511,   512,   135,  1098,   136,   663,   120,   640,   519,
     2923     113,   120,   115,   523,  1487,   405,   490,   417,   492,   194,
     2924     494,   134,   471,   425,   426,   134,  1370,  1371,   123,   124,
     2925     504,   120,   506,   482,  1507,   509,   436,   511,   512,   113,
     2926     674,  1514,   217,   647,   444,   272,  1080,   136,  1066,   113,
     2927     114,   115,   227,  1071,   115,   794,   117,   567,   568,   113,
     2928     478,   115,   738,  1157,  1158,   575,   700,   680,  1190,   113,
     2929     297,  1001,  1002,   134,   482,   585,   586,  1004,   120,   589,
     2930     480,   120,   482,   310,   120,   595,  1270,   597,   586,   862,
     2931     492,   120,   482,   113,   136,   115,   486,   136,   134,   663,
     2932      74,   575,    76,    77,    78,   615,   113,   136,   924,   511,
     2933     620,   585,   622,    87,    88,   120,   626,   120,   113,   629,
     2934     630,   113,   297,   115,   781,   616,  1056,  1057,   114,   121,
     2935     122,   136,   114,   136,   791,   645,   121,   647,   120,   113,
     2936     631,   615,   127,   128,  1386,   802,   620,   116,  1270,    74,
     2937     120,   120,   626,   644,   849,     4,     5,     6,     7,     8,
     2938       9,  1345,    87,    88,   120,   120,   136,   677,   617,   114,
     2939     680,   120,   114,   575,   869,    10,    11,    12,    13,    14,
     2940     136,   136,   116,   114,   114,   674,   120,   136,   113,   120,
     2941     115,   482,   120,   703,   704,   705,   931,   113,   892,   892,
     2942    1127,   711,   712,   677,   892,   595,    41,   597,   136,   892,
     2943     892,   700,   892,   615,   892,   891,   113,   781,   620,   119,
     2944     114,   113,    71,   855,    73,   452,   120,   791,   738,   136,
     2945     114,   114,   742,   743,    69,   726,   120,   120,   802,   616,
     2946    1482,   715,   691,    66,   114,  1487,  1430,   114,  1432,  1287,
     2947     120,   114,  1025,   120,   631,   113,   705,   120,  1491,  1491,
     2948     113,   113,   680,   115,  1491,  1507,   441,   644,   136,   121,
     2949     122,  1365,  1514,   118,   674,   785,   116,   504,    83,   506,
     2950     120,   894,   509,   114,   794,   512,   796,   136,  1382,   120,
     2951     680,   801,   467,   118,   897,   114,   899,   113,   996,   115,
     2952     700,   120,  1486,   813,  1426,   121,   122,   983,   114,  1239,
     2953     113,  1433,   115,   114,   120,   136,  1246,  1247,  1248,   120,
     2954     794,   711,   712,     4,     5,     6,     7,     8,     9,   504,
     2955    1257,   116,     3,   113,   509,   120,   136,   512,   738,    10,
     2956      11,    12,    13,    14,  1001,  1002,  1096,   796,   118,   726,
     2957    1100,  1101,   862,    74,    35,    76,    77,     0,     1,   114,
     2958    1454,  1455,   114,  1485,   862,   120,    87,    88,   120,   113,
     2959      41,   115,   114,   862,   884,   504,   113,   506,   120,  1309,
     2960     509,   891,   892,   512,   894,  1017,   884,   114,    31,    32,
     2961      71,    34,    73,   120,   115,   114,   906,   113,    69,  1056,
     2962    1057,   120,    45,   113,   114,   115,   114,    83,    51,   919,
     2963     920,   801,   120,   862,   924,  1096,    59,  1190,   114,  1100,
     2964     930,   931,    65,   813,   120,    68,    92,    93,    71,   930,
     2965     119,   120,   906,  1170,  1171,   122,  1173,  1001,  1002,    96,
     2966      97,    84,    85,  1180,   954,  1182,   113,   114,   115,  1467,
     2967     677,  1127,   131,  1066,   862,   929,   930,   931,  1071,   113,
     2968     114,   115,   862,   132,  1214,   108,   114,   115,   111,    74,
     2969       3,    76,    77,   983,    98,   118,   894,    10,    11,    12,
     2970      13,    14,    87,    88,  1088,    60,    61,   662,    60,    61,
     2971      62,   891,  1056,  1057,  1004,  1005,   671,   113,  1516,   115,
     2972     675,   113,   892,   115,   894,   115,   149,    74,    41,   983,
     2973     119,   120,  1022,  1286,    81,    46,    47,    84,   161,    86,
     2974      87,    88,   930,   113,  1022,   115,  1113,  1114,  1204,   931,
     2975     551,   552,    72,  1022,   924,    75,    69,   986,    78,   113,
     2976      80,   115,   113,   186,   187,  1202,   116,    87,   115,   114,
     2977      74,  1061,   116,   113,  1304,   115,  1066,    81,  1308,   202,
     2978      84,  1071,    86,    87,    88,   114,  1339,   210,   285,  1342,
     2979    1080,   862,   114,  1022,   553,   554,   219,   114,  1088,   222,
     2980     114,   983,  1239,   559,   560,   114,   229,  1061,   116,  1246,
     2981    1247,  1248,   115,   310,   311,     4,     5,     6,     7,     8,
     2982       9,   244,   118,   120,  1341,   248,   118,    74,   135,   252,
     2983     253,    78,   118,  1386,  1022,   135,   113,  1127,  1391,   114,
     2984      87,    88,  1022,   266,   267,   114,   116,   134,   345,   116,
     2985     273,   116,   134,     3,   134,    31,   120,   280,  1202,   930,
     2986      10,    11,    12,    13,    14,   114,   113,  1420,  1066,   114,
     2987     118,   113,  1309,  1071,   121,   122,   119,  1407,  1168,  1169,
     2988     114,   119,    71,   380,    73,   120,   119,   114,  1169,   114,
     2989     134,    41,   120,   213,   114,  1239,  1066,   136,   114,   906,
     2990    1190,  1071,  1246,  1247,  1248,   114,   114,   120,   331,   114,
     2991     114,   114,  1190,   114,  1204,   114,   114,   114,  1208,    69,
     2992     114,  1190,   114,     0,     1,   348,   349,  1208,   114,   114,
     2993     114,   886,    10,    11,    12,    13,    14,   119,    31,  1168,
     2994     135,   114,   365,   134,   114,   120,   369,  1127,   116,   116,
     2995     114,  1022,  1505,   114,  1208,   120,   379,    34,  1511,   114,
     2996     280,  1190,   134,    41,   113,  1309,   120,  1257,  1258,  1522,
     2997     118,   114,   395,  1526,    51,  1265,   114,  1361,   114,    85,
     2998    1270,  1169,   405,    89,    90,    91,  1501,   555,   556,   557,
     2999     558,    69,  1270,   120,    71,   114,   114,   120,   120,   114,
     3000     423,  1270,  1190,   113,   113,   113,   429,   113,   113,   115,
     3001    1190,   117,   118,  1303,   113,   136,   119,  1491,  1491,   114,
     3002    1208,   134,  1303,  1491,  1204,   114,   114,   119,  1491,  1491,
     3003     107,  1491,   352,  1491,   354,   113,  1265,   115,   132,   119,
     3004     116,  1270,   465,   121,   122,   118,   136,   470,   114,  1303,
     3005     120,   548,   549,   550,  1061,   478,   116,   116,   114,   482,
     3006     114,   116,   114,   486,     1,   116,   489,   116,   491,   116,
     3007     116,  1361,   149,    74,   116,    76,    77,    49,  1033,   136,
     3008     157,   158,  1270,  1467,   114,   119,    87,    88,  1378,  1360,
     3009    1270,    74,   136,    76,    77,    78,   136,  1168,  1169,  1492,
     3010     136,   136,   119,   526,    87,    88,   134,   114,   531,   688,
     3011     187,   119,   113,  1403,   116,  1303,    85,   118,   116,  1190,
     3012     440,   116,  1403,  1516,   116,   202,   116,   116,   205,   206,
     3013     113,   116,   115,   210,   114,   114,  1426,  1208,   121,   122,
     3014     113,    62,   113,  1433,   114,  1435,   113,  1437,  1426,  1403,
     3015     114,   134,   118,   113,   231,  1433,   579,  1426,   235,   136,
     3016     237,  1491,  1491,   116,  1433,  1491,   116,   114,   116,   246,
     3017     114,   100,   595,   100,   597,   252,   119,  1467,   113,   113,
     3018     257,  1435,  1472,  1437,  1474,   136,   114,   120,   114,   114,
     3019     267,   114,    44,   616,  1265,  1485,   134,  1426,   275,  1270,
     3020     779,  1491,  1492,  1360,  1433,     0,   136,  1485,   631,  1492,
     3021     114,  1501,   635,   114,   136,  1403,  1485,   100,  1472,   100,
     3022    1474,   644,   136,   646,   647,   648,  1516,   114,   136,   114,
     3023     116,   136,  1303,  1516,   114,   114,   136,   119,  1426,    34,
     3024      10,    11,    12,    13,    14,  1433,  1426,  1501,   116,   116,
     3025     113,  1037,   749,  1433,   119,   119,  1485,   680,   136,   114,
     3026     114,   684,   136,   686,   341,   114,    51,   690,   345,   114,
     3027     561,    41,   851,   562,   351,   698,    71,   565,   563,   963,
     3028      65,   564,  1190,    68,  1455,  1347,    71,   364,   711,   712,
     3029    1526,   368,  1280,  1101,  1492,  1308,  1433,  1485,   677,    69,
     3030    1052,   677,  1071,   726,   899,  1485,   690,   907,   579,    74,
     3031     855,    76,    77,    78,   893,   641,   253,   958,  1516,  1501,
     3032     715,  1491,    87,    88,  1279,    74,  1208,    76,    77,    78,
     3033     927,   482,  1403,    74,    -1,    76,    77,    78,    87,    88,
     3034     417,   567,    -1,   113,   726,   115,    87,    88,   113,   567,
     3035     115,   121,   122,   567,   431,  1426,   121,   122,    -1,   436,
     3036     939,    -1,  1433,   158,   149,    -1,    -1,   444,    -1,    -1,
     3037      -1,    -1,   113,    -1,   115,    -1,   161,    -1,   801,    -1,
     3038     121,   122,    -1,    -1,    -1,   462,    -1,    -1,   465,    -1,
     3039     813,    -1,   971,    -1,    -1,    10,    11,    12,    13,    14,
     3040      -1,    68,   187,   480,    -1,   482,   726,    -1,    -1,    -1,
     3041      77,    -1,    -1,   490,  1485,    -1,    -1,   494,    10,    11,
     3042      12,    13,    14,    -1,    -1,   210,    41,    -1,  1435,    -1,
     3043    1437,    74,   855,    76,    77,    -1,   231,   222,   861,    -1,
     3044    1019,    -1,    -1,    -1,    87,    88,   523,    -1,    -1,    41,
     3045      -1,    -1,   119,    -1,    69,    -1,    -1,   252,    -1,    74,
     3046      -1,    -1,   257,    78,    -1,  1472,    -1,  1474,    -1,   892,
     3047     113,   894,    87,    88,    -1,   118,    -1,    69,   901,  1434,
     3048      -1,  1436,    -1,    74,    -1,    -1,   983,    -1,    -1,    -1,
     3049      81,   568,    -1,    84,   161,    86,    87,    88,   113,    -1,
     3050      74,   924,    76,    77,    78,    -1,   121,   122,   585,   586,
     3051      -1,    -1,    -1,    87,    88,    -1,  1471,    -1,  1473,  1098,
     3052     597,   113,   945,   115,   115,  1022,    -1,    -1,   465,   121,
     3053     122,    -1,    -1,    -1,    -1,   958,    -1,     0,   615,   113,
     3054      -1,   964,    -1,   620,    -1,   968,   331,   121,   122,   626,
     3055      -1,    -1,   629,   630,    -1,   222,   351,    -1,    -1,    -1,
     3056    1515,    -1,  1517,    -1,    -1,    -1,    -1,    -1,   645,    -1,
     3057      74,    34,    76,    77,    78,  1530,  1531,    74,  1157,  1158,
     3058      -1,    78,    -1,    87,    88,    -1,   663,    -1,    -1,   526,
     3059      87,    88,  1015,   260,   531,    -1,    -1,   674,   265,    -1,
     3060      85,    68,    -1,    -1,    89,    90,    91,    -1,    71,   113,
     3061      -1,    -1,    -1,   280,    -1,    -1,   113,    84,   115,    -1,
     3062     405,    -1,   417,   700,   121,   122,   703,    -1,   113,  1052,
     3063     115,    -1,   117,   118,    -1,   712,   431,    -1,   715,    -1,
     3064      -1,   436,   579,  1066,    -1,    -1,    -1,    -1,  1071,   444,
     3065      74,    -1,   119,    -1,    -1,    -1,    -1,    81,    -1,    -1,
     3066      84,   738,    86,    87,    88,  1088,   743,   462,    -1,    -1,
     3067      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
     3068      -1,    -1,    -1,   350,    74,   480,    -1,   482,    78,  1112,
     3069      -1,   115,    -1,    -1,   161,   158,    -1,    87,    88,    -1,
     3070      -1,    41,    -1,    -1,   781,    -1,    -1,    -1,    -1,   646,
     3071      -1,   648,    -1,    -1,   791,    68,    -1,   794,    -1,    -1,
     3072     797,    -1,    -1,   113,    -1,   802,    -1,    -1,   523,    69,
     3073      -1,   121,   122,    -1,    74,   812,    76,    77,    78,    -1,
     3074      74,  1164,    76,    77,    78,    -1,    -1,    87,    88,    -1,
     3075      -1,    -1,    -1,    87,    88,   222,    -1,    -1,    -1,    -1,
     3076      -1,   698,    -1,   430,    -1,    -1,   119,    -1,    -1,    -1,
     3077      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,   446,
     3078      -1,   121,   122,    -1,    -1,   862,  1365,    -1,    -1,   252,
     3079      -1,   586,    -1,   260,   257,    -1,    -1,    -1,   265,    -1,
     3080      -1,    -1,    -1,  1382,   471,    -1,    -1,   884,   161,  1232,
     3081      -1,  1234,  1235,    -1,   891,    -1,    -1,   894,    10,    11,
     3082      12,    13,    14,    -1,    -1,   190,    74,    -1,    76,    77,
     3083      78,    -1,   197,    -1,   629,   630,    -1,    -1,    -1,    87,
     3084      88,    -1,    -1,   920,    -1,    -1,    -1,    -1,    -1,    41,
     3085     645,    -1,   929,   930,    -1,    -1,    -1,    -1,    -1,    -1,
     3086      -1,    -1,    -1,     0,    -1,   113,    -1,   115,   663,   222,
     3087      -1,    -1,    -1,   121,   122,  1454,  1455,    69,    -1,   674,
     3088      -1,    -1,    74,   350,    76,    77,    78,    -1,   351,    -1,
     3089    1313,    -1,    -1,    -1,    -1,    87,    88,    34,    -1,    -1,
     3090      -1,    -1,    -1,    -1,   269,   700,   983,   260,   703,    -1,
     3091      -1,    -1,   265,    -1,    -1,    -1,    -1,    -1,    -1,   996,
     3092      -1,   113,   589,   115,  1001,  1002,    -1,  1004,  1005,   121,
     3093     122,    -1,    -1,    -1,    71,    -1,    -1,  1360,  1361,    -1,
     3094      -1,    -1,    -1,   738,    -1,  1022,    -1,  1370,  1371,    -1,
     3095     617,    -1,    -1,    -1,   417,   622,    -1,    -1,    -1,    -1,
     3096      -1,   326,    74,   430,    76,    77,    78,    -1,   431,   334,
     3097      -1,    -1,   337,   436,    -1,    87,    88,    -1,    -1,  1056,
     3098    1057,   444,    -1,    -1,    -1,  1408,   781,    10,    11,    12,
     3099      13,    14,    -1,    -1,    -1,    -1,   791,   350,    -1,   462,
     3100      -1,   113,   797,    -1,   471,    -1,    -1,   802,   945,   121,
     3101     122,    -1,    -1,    -1,    -1,    -1,    -1,   480,    41,   482,
     3102      -1,   158,    -1,    -1,   691,    -1,    -1,   964,    -1,     0,
     3103       1,   968,   397,    -1,    -1,    -1,   401,    -1,   705,    -1,
     3104      -1,    -1,    -1,    -1,  1467,  1468,    69,    -1,    -1,    -1,
     3105    1127,    74,    -1,    32,  1477,    78,    -1,    -1,    -1,   726,
     3106     523,    -1,    -1,    34,    87,    88,    -1,   862,  1491,  1492,
     3107      -1,    -1,    -1,    -1,    -1,    -1,    -1,   430,  1015,    -1,
     3108      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,   884,
     3109     113,    -1,  1169,  1516,    -1,    -1,   891,    68,   121,   122,
     3110      71,    -1,    28,    29,    30,    84,    85,    -1,    -1,    -1,
     3111      -1,    41,   477,  1190,    -1,   252,    -1,    -1,   471,    -1,
     3112     257,    -1,   589,   586,    -1,  1202,    -1,  1204,    -1,   796,
     3113      -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3114      -1,    -1,    -1,    -1,    74,     0,    76,    77,    78,    -1,
     3115     617,    -1,    -1,    -1,    -1,   622,    -1,    87,    88,    -1,
     3116      -1,    -1,  1239,    -1,    -1,    -1,   629,   630,    -1,  1246,
     3117    1247,  1248,    -1,    -1,   100,  1112,   102,    -1,    -1,    34,
     3118    1257,  1258,   645,   113,    -1,   115,    -1,   158,    -1,    -1,
     3119      -1,   121,   122,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
     3120     663,    -1,   567,   568,    -1,    -1,  1001,  1002,    -1,  1004,
     3121    1005,   674,    -1,    -1,   351,    -1,    71,    -1,    -1,    -1,
     3122      -1,    -1,    -1,    -1,   691,    -1,  1303,  1022,    -1,    -1,
     3123      -1,    -1,  1309,    -1,    -1,    -1,   589,   700,   705,    -1,
     3124     703,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3125      -1,   222,    -1,    -1,    -1,    -1,   182,    -1,    -1,    -1,
     3126      -1,  1056,  1057,    -1,   617,   244,   192,   193,    -1,   622,
     3127      -1,   197,    -1,   199,   200,   738,    -1,    -1,    -1,    -1,
     3128     417,   252,    -1,    -1,    -1,   650,    -1,    -1,    -1,   654,
     3129      -1,    -1,    -1,    -1,   431,  1232,    -1,  1234,  1235,   436,
     3130      -1,  1378,    -1,   158,    -1,    -1,    -1,   444,    -1,    -1,
     3131      -1,    10,    11,    12,    13,    14,    -1,    -1,   781,   986,
     3132      -1,    -1,    -1,    -1,    -1,   462,  1403,    -1,   791,   796,
     3133      -1,    -1,  1127,    -1,   797,    -1,    -1,    -1,   691,   802,
     3134      -1,    -1,    41,   480,    -1,   482,    -1,    -1,    -1,  1426,
     3135      -1,    -1,   705,    -1,    -1,    -1,  1433,   101,   102,   103,
     3136     104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
     3137      69,    -1,    -1,    -1,  1169,    74,  1313,    76,    77,    78,
     3138      -1,    -1,    -1,    -1,    -1,    -1,   523,    -1,    87,    88,
     3139      -1,   135,    -1,    -1,    -1,  1190,    -1,   252,    -1,   862,
     3140     379,    -1,   257,    -1,    -1,    -1,    -1,  1202,  1485,  1204,
     3141      -1,    -1,    -1,    -1,   113,  1492,    -1,    -1,    -1,    -1,
     3142     785,   884,   121,   122,    -1,    -1,    -1,    -1,   891,    -1,
     3143      -1,    -1,    -1,  1370,  1371,    -1,    -1,    -1,    -1,    -1,
     3144      -1,    -1,    -1,   796,  1239,    -1,    -1,    -1,    -1,   586,
     3145      -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,    -1,    -1,
     3146     431,    -1,  1257,  1258,    -1,    -1,    -1,    -1,    -1,    -1,
     3147      -1,  1408,    -1,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
    31843148      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3185     1271,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3186       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3187       27,    28,    29,    -1,    -1,    32,    33,    34,  1002,  1003,
    3188      863,  1005,  1006,    -1,    -1,    42,    -1,    -1,    -1,  1310,
    3189       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,
    3190       -1,    -1,   885,    -1,    -1,    -1,    -1,    -1,    -1,   892,
    3191       -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    75,    -1,
    3192       77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3193       -1,    88,    89,  1057,  1058,    -1,    -1,   572,   573,    -1,
     3149      -1,    -1,   629,   630,    -1,    -1,   351,    -1,    -1,    -1,
     3150      -1,  1168,    -1,    -1,    -1,    -1,    -1,    -1,   645,    -1,
     3151     489,   482,   491,    -1,  1309,    -1,    -1,    -1,    -1,   986,
     3152      -1,    -1,    -1,    -1,    -1,    -1,   663,    -1,    -1,    -1,
     3153      -1,  1468,    -1,   898,    -1,    -1,    -1,   674,  1001,  1002,
     3154    1477,  1004,  1005,    -1,    -1,    -1,    -1,    -1,    -1,    55,
     3155      -1,    57,   523,    -1,    60,    61,    62,    -1,    64,  1022,
     3156      -1,    -1,   417,   700,    -1,    -1,   703,    -1,    -1,    -1,
     3157      -1,    -1,    78,    -1,    -1,    -1,   431,    -1,    -1,    -1,
     3158      -1,   436,    -1,  1378,    90,    91,    -1,    -1,    -1,   444,
     3159      -1,    -1,    -1,  1056,  1057,    -1,    -1,    -1,  1265,    -1,
     3160      -1,   738,    -1,    -1,    -1,    -1,    -1,   462,   973,    -1,
     3161      -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,    -1,    -1,
     3162      -1,    -1,    -1,    -1,   989,   480,    -1,   482,    -1,    -1,
     3163      -1,  1426,    -1,   986,    -1,    -1,    -1,    -1,  1433,    -1,
     3164      -1,    -1,    -1,    -1,   781,   571,   572,    -1,    -1,    -1,
     3165      -1,    -1,    -1,    -1,   791,    -1,   635,    -1,   629,   630,
     3166     797,    -1,    -1,    -1,  1127,   802,    -1,    -1,   523,    -1,
     3167      -1,    -1,   598,    -1,   645,   601,   602,    -1,   604,    -1,
     3168     606,   607,    -1,    -1,    -1,   611,   612,    -1,    -1,    -1,
     3169    1485,    -1,    -1,    10,    11,    12,    13,    14,    -1,  1064,
     3170      -1,  1168,    -1,    -1,    -1,   684,  1169,   686,    -1,    -1,
     3171      -1,   690,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3172      -1,    -1,    -1,    -1,    41,   862,    -1,  1190,    -1,    -1,
     3173      -1,   586,   703,    -1,    -1,    -1,    -1,    -1,  1103,  1202,
     3174      -1,  1204,    -1,    -1,    -1,    -1,    -1,   884,    -1,    -1,
     3175      -1,    -1,    69,    -1,   891,    -1,    -1,    74,    -1,    76,
     3176      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3177      87,    88,    -1,    -1,   629,   630,  1239,    -1,    -1,    -1,
     3178      -1,    -1,    -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,
     3179     645,    -1,    -1,    -1,  1257,  1258,   113,    -1,  1265,    -1,
     3180      -1,    -1,    -1,    -1,   121,   122,    -1,  1270,   663,    -1,
     3181      -1,    -1,    -1,    -1,    -1,  1168,    -1,    -1,    -1,   674,
     3182      -1,   747,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3183      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   344,    -1,
     3184     346,    -1,    -1,    -1,    -1,   700,  1309,    -1,   703,    -1,
     3185      -1,   357,   358,    -1,    -1,    28,    29,    30,    -1,    -1,
     3186      -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,  1005,    -1,
     3187      -1,    -1,    -1,    -1,    -1,    -1,   855,    -1,    -1,    -1,
     3188      -1,    -1,   861,   738,    -1,  1022,    -1,    -1,    -1,    -1,
     3189      -1,   862,    10,    11,    12,    13,    14,    15,    16,    17,
     3190      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3191      28,    29,  1265,   884,    -1,  1378,    -1,    -1,    -1,  1056,
     3192    1057,    -1,   901,    41,    -1,    -1,   781,   100,    -1,   102,
     3193      -1,    -1,    -1,    -1,    -1,    -1,   791,    -1,    -1,    -1,
     3194      -1,    -1,   797,    -1,    -1,    -1,    -1,   802,    -1,    -1,
     3195      -1,    69,    -1,    -1,   127,    -1,    -1,    -1,    -1,   930,
     3196      -1,    -1,    -1,  1426,    -1,    -1,    -1,    -1,    -1,    -1,
     3197    1433,    -1,    -1,    -1,    -1,    -1,    -1,   903,    -1,   958,
    31943198      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3195       -1,   899,    -1,    -1,    -1,    -1,   904,   114,  1379,   116,
    3196       -1,    -1,    -1,    -1,   599,   122,   123,   602,   603,    -1,
    3197      605,    -1,   607,   608,    -1,    -1,    -1,   612,   613,    10,
    3198       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3199       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
    3200       -1,    -1,    -1,    -1,  1128,    -1,  1427,    -1,    -1,    -1,
    3201       -1,    42,    51,  1434,    -1,    -1,    -1,    -1,    -1,  1002,
    3202     1003,     7,  1005,  1006,    10,    11,    12,    13,    14,    68,
    3203       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
    3204     1023,    -1,    -1,    -1,    -1,    -1,  1170,    -1,    -1,    -1,
    3205       81,    -1,    -1,    -1,    40,    41,    42,    43,    -1,   693,
    3206       -1,   695,    -1,    -1,    -1,  1486,    -1,  1191,   702,   703,
    3207       -1,    -1,    -1,   707,  1057,  1058,   115,    -1,    -1,  1203,
    3208      119,  1205,    -1,    69,    70,    -1,   720,    -1,    -1,    75,
    3209       -1,   725,    -1,    79,    -1,    -1,    82,    83,    84,    85,
    3210       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,   148,
    3211       -1,  1059,    -1,   748,   749,    -1,  1240,    -1,   752,   158,
    3212       -1,    -1,   161,  1247,  1248,  1249,    -1,    -1,   114,    -1,
    3213      116,    -1,    -1,    -1,  1258,  1259,   122,   123,   124,   125,
    3214      126,   127,    -1,    -1,    68,  1128,    -1,  1271,    -1,    -1,
    3215       -1,    -1,    -1,    77,    -1,    79,    -1,    81,    -1,    -1,
    3216       -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,    -1,
    3217       -1,   210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3218       -1,    -1,    -1,   222,    -1,    -1,  1310,  1170,    -1,    -1,
    3219       -1,    -1,    -1,    -1,    -1,   119,    -1,   121,   122,   123,
    3220       -1,   240,    -1,    -1,    -1,    -1,    -1,    -1,  1191,    -1,
    3221       -1,   845,    -1,   847,   848,   849,    -1,    -1,    -1,    -1,
    3222     1203,    -1,  1205,    -1,    -1,    -1,   265,    -1,    -1,    -1,
    3223       -1,    -1,   866,   272,    -1,    -1,    -1,   161,    -1,  1187,
    3224       -1,    -1,    -1,    -1,    -1,    -1,   880,    -1,    -1,    -1,
    3225       -1,    -1,    -1,    -1,    -1,  1379,    -1,  1240,   297,    -1,
    3226       -1,    -1,    -1,    -1,  1247,  1248,  1249,    -1,    -1,   904,
    3227       -1,   310,    -1,    -1,    -1,  1258,  1259,    -1,    -1,    -1,
    3228       -1,    -1,    -1,    -1,    -1,   919,    -1,    -1,  1271,    -1,
    3229       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   222,    -1,
    3230      224,   225,   226,  1427,    -1,    -1,   345,    -1,    -1,    -1,
    3231     1434,   350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3232       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1310,    -1,   963,
    3233       -1,    -1,    -1,    -1,   968,    -1,   260,    -1,    -1,   973,
    3234       -1,   265,    -1,    -1,   978,    -1,    -1,    -1,    -1,   983,
    3235       -1,   985,   986,    -1,    -1,   989,   280,    -1,    -1,    -1,
    3236       -1,    -1,  1486,    -1,   998,    -1,    -1,    -1,    -1,    -1,
     3199    1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3200      -1,    -1,    -1,    -1,    -1,    -1,    -1,   862,     7,   182,
     3201      -1,    10,    11,    12,    13,    14,    -1,   190,    -1,   192,
     3202     193,    -1,  1485,    -1,   197,    -1,   199,   200,    -1,   884,
     3203      -1,    -1,  1169,  1004,  1005,    -1,   891,    -1,    -1,    -1,
     3204      39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
     3205      -1,  1022,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
     3206      -1,    -1,    -1,    -1,    -1,  1202,    -1,  1204,    -1,    68,
     3207      69,    -1,    -1,  1052,    -1,    74,    -1,    -1,    -1,    78,
     3208      -1,    -1,    81,    82,    83,    84,    85,    86,    87,    88,
     3209      -1,    90,    91,    -1,    -1,    -1,   269,    -1,    -1,    -1,
     3210      -1,    -1,  1239,    -1,    -1,    -1,    -1,    -1,    -1,  1246,
     3211    1247,  1248,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,
     3212    1257,  1258,   121,   122,   123,   124,   125,   126,    -1,    -1,
     3213      -1,    -1,  1058,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
     3214      -1,    51,    -1,    -1,    -1,    -1,  1001,  1002,    -1,  1004,
     3215    1005,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
     3216      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1022,    -1,    -1,
     3217      -1,    -1,  1309,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3218      -1,    39,    40,    -1,    42,  1164,   692,    -1,   694,    -1,
     3219      -1,    -1,    -1,    -1,    -1,   701,   702,  1168,  1169,    -1,
     3220     706,  1056,  1057,    -1,    -1,   115,    -1,    -1,    -1,   119,
     3221      68,    -1,    -1,   719,    -1,    -1,    74,    -1,   724,  1190,
     3222      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
     3223      88,    -1,    90,    91,    -1,    -1,    -1,  1208,   148,    -1,
     3224      -1,  1378,    -1,    -1,    -1,   751,    -1,    -1,   158,    -1,
     3225      -1,   161,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
     3226    1186,    -1,    -1,   121,   122,   123,   124,   125,   126,    -1,
     3227      -1,    -1,  1127,    -1,    -1,    -1,   134,    -1,    -1,    -1,
     3228      -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,  1426,
     3229      -1,    -1,    -1,    -1,  1265,    -1,  1433,    -1,    -1,  1270,
     3230     210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3231      -1,    -1,   222,    -1,  1169,    -1,    -1,    -1,    -1,    -1,
    32373232      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3238     1014,  1015,    -1,    -1,    -1,    -1,   425,   426,    -1,    -1,
    3239       -1,    -1,   431,    -1,    -1,    -1,  1379,    -1,    -1,    -1,
    3240       -1,    -1,    -1,    -1,    -1,    -1,  1040,   331,    -1,  1043,
    3241       -1,    -1,    -1,   452,    -1,    -1,    -1,    -1,    -1,    -1,
    3242       -1,    -1,    -1,    -1,  1059,    -1,   350,    -1,    -1,    -1,
    3243       -1,   355,   356,    -1,    -1,    -1,    -1,    -1,    -1,   363,
    3244       -1,   480,    -1,    -1,  1427,    -1,    -1,    -1,    -1,    -1,
    3245       -1,  1434,  1086,    -1,   493,    -1,    -1,    -1,  1092,  1093,
    3246       -1,    -1,    -1,    -1,    -1,    -1,   505,    -1,   507,    -1,
    3247       -1,   510,    -1,   512,   513,    -1,    -1,  1111,    -1,    -1,
    3248       -1,   405,  1116,    -1,    -1,   524,    -1,  1121,    -1,    -1,
    3249       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1132,   423,
    3250       -1,    -1,    -1,  1486,   428,    -1,   430,    -1,    -1,    -1,
    3251       -1,  1145,    -1,  1147,  1148,  1149,  1150,    -1,    -1,    -1,
    3252       -1,    -1,   446,    -1,    -1,   449,   450,    -1,  1162,    -1,
    3253     1164,    -1,    -1,   457,  1168,    -1,    -1,   576,    -1,    -1,
    3254       -1,    -1,    -1,    -1,    -1,    -1,    -1,   471,   587,    -1,
    3255       -1,   590,  1187,    -1,   478,    -1,    -1,    -1,    -1,    -1,
    3256       -1,    -1,  1196,  1197,    -1,    -1,     7,    -1,    -1,    10,
    3257       11,    12,    13,    14,    -1,    -1,    -1,   616,    -1,    -1,
    3258       -1,    -1,   621,    46,    -1,    -1,    -1,    -1,    -1,    -1,
    3259       -1,   630,   631,    -1,    -1,    -1,    -1,    -1,    -1,    40,
    3260       41,    42,    43,    -1,    -1,    -1,    -1,   646,    -1,    -1,
    3261       -1,    -1,    -1,    -1,    -1,    -1,  1250,  1251,    -1,    -1,
    3262       -1,    -1,    -1,    -1,    -1,    -1,  1260,    -1,    69,    70,
    3263       93,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,   678,
    3264      103,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
    3265       91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3266       -1,    -1,    -1,    -1,    -1,   704,   590,   706,    -1,    -1,
    3267       -1,    -1,    -1,   114,    -1,   116,    -1,    40,    41,    -1,
    3268       43,   122,   123,   124,   125,   126,   127,    -1,  1322,    -1,
    3269     1324,  1325,  1326,    -1,   618,    -1,    -1,    -1,    -1,   623,
    3270      739,    -1,  1336,    -1,    -1,    -1,    69,    -1,    -1,   172,
    3271     1344,    -1,    75,    -1,    -1,    -1,    79,    -1,    -1,    82,
    3272       83,    84,    85,    86,    87,    88,    89,    -1,    91,    92,
    3273       -1,    -1,   195,    -1,    -1,  1369,  1370,    -1,    -1,    -1,
    3274       -1,    -1,    -1,    -1,    -1,    -1,   209,    -1,    -1,    -1,
    3275       -1,   114,    -1,   116,    -1,   218,    -1,    -1,   797,   122,
    3276      123,   124,   125,   126,   127,   228,    -1,    -1,   692,    -1,
    3277       -1,    -1,   135,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3278     1414,  1415,   706,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3279      253,    -1,    -1,  1427,    -1,   258,    -1,    -1,    -1,    -1,
    3280     1434,    -1,    -1,   727,    -1,    -1,    -1,    -1,   271,    -1,
    3281       -1,    -1,    -1,    -1,   277,    -1,   279,    -1,    -1,    -1,
     3233     240,    -1,  1303,    -1,    -1,  1190,    -1,    -1,   844,    -1,
     3234     846,   847,   848,    -1,    -1,    -1,    -1,  1202,  1485,  1204,
     3235      -1,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,   865,
     3236      -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3237      -1,    -1,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,
     3238      -1,    -1,    -1,    -1,  1239,    -1,    -1,   297,    -1,    -1,
     3239      -1,  1246,  1247,  1248,    -1,    -1,    -1,    -1,   571,   572,
     3240     310,    -1,  1257,  1258,    -1,    -1,    -1,  1378,    -1,    -1,
     3241      -1,    -1,   918,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
     3242      -1,    -1,    -1,    -1,    -1,   598,    -1,    -1,   601,   602,
     3243      -1,   604,  1403,   606,   607,   345,    -1,    -1,   611,   612,
     3244     350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3245      -1,    -1,    -1,    -1,  1309,  1426,   962,    -1,    -1,    -1,
     3246      -1,   967,  1433,    -1,    -1,    -1,   972,    -1,    -1,    -1,
     3247      -1,   977,    -1,    -1,    -1,    -1,   982,    -1,   984,   985,
     3248      -1,    -1,   988,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3249      -1,   997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3250      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1013,  1014,    -1,
     3251      -1,    -1,    -1,    -1,  1485,   425,   426,    -1,    -1,    -1,
     3252      -1,   431,    -1,  1378,    -1,    -1,    -1,    -1,    -1,    -1,
     3253      -1,    -1,    -1,  1039,    -1,    -1,  1042,    -1,    -1,    -1,
     3254      -1,    -1,   452,    -1,    -1,    -1,    10,    11,    12,    13,
     3255      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3256      24,    25,    26,    27,    28,    29,    30,    -1,    -1,    -1,
     3257     480,  1426,    -1,    -1,   747,   748,    -1,    41,  1433,  1085,
     3258      -1,    -1,   492,    -1,    -1,  1091,  1092,    -1,    -1,    -1,
     3259      -1,    -1,    -1,    -1,   504,    -1,   506,    -1,    -1,   509,
     3260      -1,   511,   512,    -1,  1110,    69,    -1,    -1,    -1,  1115,
     3261      -1,    -1,    -1,   523,  1120,    -1,    80,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,    -1,  1131,    -1,    -1,    -1,    -1,
     3263    1485,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1144,    -1,
     3264    1146,  1147,  1148,  1149,    -1,    -1,    -1,    68,    -1,    -1,
     3265      -1,    -1,    -1,    -1,    -1,  1161,    77,  1163,    79,    -1,
     3266      81,  1167,    -1,    -1,    -1,   575,    -1,    88,    -1,    -1,
     3267      -1,    -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,   589,
     3268      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1195,
     3269    1196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,
     3270     121,   122,   123,    -1,    -1,   615,    -1,    -1,    -1,    -1,
     3271     620,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   629,
     3272     630,    -1,    -1,    -1,    -1,   898,    -1,    -1,    -1,    -1,
     3273     903,    -1,    -1,    -1,    -1,   645,    -1,    -1,    -1,    -1,
     3274     161,    -1,    -1,  1249,  1250,    -1,    -1,    -1,    -1,    -1,
     3275      -1,    -1,    -1,  1259,    -1,    -1,    -1,    -1,    -1,    -1,
     3276      -1,    -1,    -1,    -1,    -1,    -1,    -1,   677,    10,    11,
     3277      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3278      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     3279      32,    33,    34,   703,    -1,   705,    -1,    -1,    -1,    41,
     3280      -1,   222,    -1,   224,   225,   226,    -1,    46,    -1,    -1,
     3281      -1,    -1,    -1,    -1,    -1,  1321,    -1,  1323,  1324,  1325,
     3282      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,   738,  1335,
     3283      -1,    -1,    74,    -1,    76,    77,    78,  1343,    -1,   260,
     3284      -1,    -1,    -1,    -1,   265,    87,    88,    -1,    -1,    -1,
     3285      -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,   280,
     3286      -1,    -1,  1368,  1369,   103,    -1,    -1,    -1,    -1,    -1,
     3287      -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
     3288     122,   148,    -1,    -1,    -1,  1058,   796,    -1,    -1,    -1,
     3289      -1,   158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3290      -1,    -1,   169,   170,    -1,    -1,    -1,  1413,  1414,    -1,
     3291     331,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3292    1426,    -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,   350,
     3293      -1,    -1,    -1,   172,   355,   356,    -1,    -1,    -1,    -1,
     3294      -1,    -1,   363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3295      -1,    -1,    -1,    -1,    -1,    -1,   195,    -1,    -1,    -1,
     3296    1466,    -1,    -1,    -1,  1470,    -1,    -1,    -1,    -1,    -1,
     3297     209,    -1,    -1,   240,   884,    -1,    -1,    -1,    -1,   218,
     3298      -1,   891,    -1,    -1,   405,    -1,    -1,    -1,    -1,   228,
     3299      -1,    -1,  1498,    -1,  1500,    -1,   906,   264,    -1,    -1,
     3300      -1,    -1,   423,    -1,    -1,    -1,    -1,   428,    -1,   430,
     3301      -1,    -1,    -1,  1186,   253,    -1,    -1,    -1,    -1,   258,
     3302      -1,   931,  1528,  1529,    -1,   446,    -1,    -1,   449,   450,
     3303    1536,  1537,   271,    -1,    -1,    -1,   457,    -1,   277,    -1,
     3304     279,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3305     471,    -1,    -1,    -1,    -1,    -1,    -1,   478,    -1,   298,
    32823306      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3283       -1,    -1,    -1,  1467,    -1,   298,    -1,  1471,    -1,    -1,
    3284       -1,    -1,    -1,    -1,    -1,    -1,   885,    -1,    -1,    -1,
    3285       -1,    -1,    -1,   892,    -1,    -1,    -1,    -1,    -1,    -1,
    3286       -1,    -1,   786,    -1,    -1,  1499,    -1,  1501,   907,    -1,
    3287       -1,    -1,    -1,   797,    -1,    -1,   339,    -1,    -1,    -1,
    3288      343,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3289      814,    -1,    -1,   932,    -1,  1529,  1530,    -1,    -1,    -1,
    3290       -1,    -1,    -1,  1537,  1538,    -1,    -1,    -1,   371,    -1,
    3291       -1,    -1,   375,   376,    -1,   378,    -1,    -1,    -1,    -1,
    3292       -1,    -1,   385,   386,    -1,   388,   389,    -1,   391,    -1,
    3293      393,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3294       -1,    -1,    -1,    -1,    -1,   984,    -1,   410,    -1,    -1,
    3295       -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,    -1,   157,
    3296      158,    -1,    -1,    -1,    -1,    -1,  1005,  1006,    -1,    -1,
    3297       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   442,
     3307      -1,    -1,    -1,   983,    10,    11,    12,    13,    14,    15,
     3308      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3309      26,    27,    28,    29,  1004,  1005,    32,    33,    34,    -1,
     3310     339,    -1,    -1,    -1,   343,    41,    -1,    -1,    -1,    -1,
     3311      -1,    -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    32983312      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3299       -1,    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,   197,
    3300       -1,   925,    -1,    -1,    -1,   468,    -1,    -1,    -1,    -1,
    3301       -1,   474,    -1,    -1,    -1,    -1,   479,    -1,    -1,    -1,
    3302       -1,    -1,    -1,  1062,    -1,    -1,    -1,    -1,    -1,    -1,
    3303       -1,   955,    10,    11,    12,    13,    14,    15,    16,    17,
    3304       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3305       28,    29,    -1,   516,    32,    33,    34,    -1,    -1,    -1,
    3306       -1,    -1,    -1,   987,    42,    -1,    -1,    -1,   531,    -1,
    3307       -1,   269,    -1,    -1,   998,    -1,    -1,    -1,    -1,    -1,
    3308       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1128,
    3309       -1,    -1,    70,    -1,    -1,    -1,    -1,    75,    -1,    77,
    3310       78,    -1,    -1,    -1,    -1,   568,    -1,    -1,    -1,    -1,
    3311       88,    89,    -1,    -1,   577,    -1,    -1,    -1,    -1,    -1,
    3312       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   326,    -1,
    3313     1169,    -1,    -1,    -1,   597,    -1,   334,   335,   116,   337,
    3314      338,    -1,    -1,  1067,   122,   123,    -1,   345,    -1,    -1,
    3315       -1,   349,    -1,    -1,    -1,    -1,    -1,  1081,    -1,    -1,
    3316       -1,    -1,    -1,    -1,    -1,    -1,  1205,    -1,    -1,    -1,
    3317      368,    -1,   635,    -1,    10,    11,    12,    13,    14,    15,
    3318       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3319       26,    27,    28,    29,    -1,    -1,    32,    33,    34,   397,
    3320       -1,    -1,    -1,   401,    -1,    -1,    42,    -1,   671,    -1,
    3321       -1,    -1,    -1,    -1,    -1,    -1,   679,    -1,    -1,  1258,
    3322     1259,    -1,    -1,    -1,    -1,    -1,    -1,  1266,    -1,    -1,
    3323       -1,    -1,    -1,   431,    70,    -1,    -1,    -1,    -1,    75,
    3324       -1,    77,    78,    79,    -1,  1169,    -1,   710,    -1,    -1,
    3325       -1,    -1,    88,    89,    -1,    -1,    -1,    -1,   721,   722,
     3313      -1,    -1,   371,    69,    -1,    -1,   375,   376,    -1,   378,
     3314      76,    77,    -1,    -1,    -1,    -1,   385,   386,    -1,   388,
     3315     389,  1061,   391,    -1,   393,    -1,    -1,    -1,    -1,    -1,
     3316      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   589,    -1,
     3317      -1,   410,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,
     3318      -1,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
     3319      -1,    -1,    -1,    -1,    -1,    -1,   617,    -1,    -1,    -1,
     3320      -1,   622,    -1,   442,    -1,   472,    -1,    -1,    -1,    -1,
     3321      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1127,    -1,    -1,
     3322      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   468,
     3323      -1,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,    -1,
     3324     479,    -1,    -1,    -1,   511,    -1,    -1,    -1,    -1,    -1,
     3325      -1,    -1,    -1,    -1,    -1,    -1,   523,    -1,  1168,    -1,
     3326      -1,    -1,   529,    -1,    -1,   532,   157,   158,    -1,    -1,
     3327     691,    -1,    -1,    -1,    -1,    -1,   515,    -1,   545,    -1,
     3328      -1,    -1,    -1,    -1,   705,    -1,    -1,    -1,    -1,    -1,
     3329      -1,   530,    -1,    -1,  1204,    -1,    -1,    -1,    -1,   190,
     3330      -1,    -1,    -1,    -1,    -1,   726,   197,    -1,   575,    -1,
     3331      -1,    -1,    -1,    -1,    -1,   582,    -1,    -1,    -1,   586,
     3332      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   567,    -1,
     3333      -1,    -1,    -1,    -1,    -1,    -1,    -1,   576,    -1,    -1,
     3334      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,
     3335      -1,    -1,    -1,    -1,    -1,  1265,    -1,   596,    -1,    -1,
     3336      -1,    -1,    -1,    -1,   785,   632,    -1,    -1,    -1,    -1,
     3337      -1,    -1,    -1,   640,    -1,   796,    -1,    -1,   269,    -1,
    33263338      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3327       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,   477,
    3328      116,    -1,   480,    -1,    -1,    -1,   122,   123,    -1,    -1,
    3329      753,    -1,    -1,    -1,    -1,   758,    -1,    10,    11,    12,
     3339      -1,    -1,   813,    -1,    -1,   634,    -1,    10,    11,    12,
    33303340      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    33313341      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3332       33,    34,   520,    -1,    -1,    -1,   524,    -1,    -1,    42,
     3342      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
     3343      -1,   670,    -1,    -1,    -1,   326,    -1,    -1,    -1,   678,
     3344      -1,    -1,    -1,   334,   335,    -1,   337,   338,    -1,   716,
     3345      -1,    -1,    -1,    -1,   345,    -1,    69,    -1,   349,    -1,
     3346      -1,    74,    -1,    76,    77,    78,    -1,    -1,  1378,    -1,
     3347     709,   738,    -1,   740,    87,    88,    -1,   368,    -1,    -1,
     3348      -1,   720,   721,   750,    -1,    -1,    -1,    -1,    -1,   756,
    33333349      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3334     1379,    -1,  1266,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3335       -1,    -1,    -1,    -1,    -1,   818,    -1,    70,    -1,    -1,
    3336       -1,    -1,   825,    -1,    77,    78,    -1,    -1,    -1,    -1,
    3337      568,   569,    -1,    -1,    -1,   838,    -1,   840,    -1,    -1,
    3338       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   586,   587,
    3339      853,    -1,    -1,    -1,    -1,    -1,   859,  1436,   596,  1438,
    3340      598,   599,    -1,   116,    -1,   148,    -1,   605,   871,   122,
    3341      123,   874,    -1,    -1,    -1,   158,    -1,   615,   616,    -1,
    3342       -1,    -1,    -1,   621,    -1,    -1,   169,   170,    -1,    -1,
    3343       -1,    -1,   630,   631,  1473,    -1,  1475,    -1,    -1,    -1,
    3344       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   646,    -1,
    3345       -1,    -1,    -1,   651,   652,    -1,    -1,   655,   656,    -1,
    3346       -1,    -1,    -1,  1502,   662,    -1,   283,    -1,   285,   286,
    3347       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   295,   296,
    3348       -1,    -1,    -1,   681,    -1,    -1,    -1,    -1,    40,    41,
    3349       -1,    43,    -1,   310,   311,    -1,    -1,   240,    -1,    -1,
    3350       -1,    -1,    -1,    -1,    -1,    -1,   704,   705,    -1,    -1,
    3351       -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,   982,
    3352       -1,   264,    -1,    75,    -1,    77,    78,    79,   345,    -1,
    3353       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    3354       92,   739,    -1,    -1,    -1,   743,   744,    -1,    -1,    -1,
     3350     113,    -1,   115,   924,    -1,    -1,   397,    -1,   121,   122,
     3351     401,    -1,    -1,   752,    -1,    -1,    -1,    -1,   757,    -1,
     3352      -1,    -1,    -1,    -1,    -1,  1435,    -1,  1437,    -1,   796,
     3353     797,    -1,    -1,   954,    -1,    -1,    -1,    -1,    -1,    -1,
     3354     431,    -1,    -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,
    33553355      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3356       -1,    -1,   114,   380,   116,    -1,   118,   119,    -1,    -1,
    3357      122,   123,   124,   125,   126,   127,    -1,    -1,    -1,    -1,
    3358     1043,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   786,    -1,
    3359       -1,    -1,    -1,  1517,    -1,    -1,    -1,    -1,    -1,    -1,
    3360       -1,    -1,    -1,    -1,   802,    -1,   804,    -1,    -1,    -1,
    3361       -1,    -1,    -1,    -1,  1077,    -1,   814,    -1,    -1,  1082,
    3362       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1090,    -1,    -1,
    3363       -1,    -1,    -1,    -1,    -1,    -1,   379,    -1,    10,    11,
    3364       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3365       22,    23,    24,    25,    26,    27,    28,    29,    30,    -1,
    3366       -1,  1124,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3367       42,    -1,  1135,    -1,    -1,  1138,    -1,  1140,    -1,    -1,
    3368       -1,    -1,    -1,    -1,    -1,    -1,    -1,   885,    -1,    -1,
    3369       -1,    -1,  1155,  1156,   892,   893,    -1,   895,    70,    -1,
    3370       -1,   899,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
    3371       -1,    -1,  1175,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3372       -1,    -1,   920,   921,    -1,    -1,    -1,    -1,    -1,   472,
    3373       -1,    -1,   549,   550,   551,   552,   553,   554,   555,   556,
    3374      557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
    3375       -1,    -1,    -1,    -1,    -1,    -1,    -1,   955,  1221,    -1,
    3376       -1,    -1,    -1,    -1,    -1,    -1,  1229,    -1,    -1,   512,
    3377       -1,    -1,    -1,    -1,    -1,    -1,   974,   975,    -1,    -1,
    3378       -1,   524,    -1,    -1,    -1,    -1,   984,   530,    -1,    -1,
    3379      533,    -1,   990,   991,    -1,   993,   994,   995,    -1,    -1,
    3380       -1,    -1,    -1,   546,    -1,    -1,    -1,  1005,  1006,    -1,
    3381       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3382       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3383       -1,    -1,    -1,   576,    -1,    -1,  1299,    -1,  1301,    -1,
    3384      583,    -1,    42,    -1,   587,    -1,    -1,    -1,    -1,    -1,
    3385       -1,    -1,    -1,    -1,  1317,    -1,  1319,    -1,    -1,    -1,
    3386       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1065,    -1,  1067,
    3387       70,  1334,   689,    -1,  1072,    -1,    -1,    -1,    -1,    -1,
    3388       -1,    -1,    -1,  1081,    -1,    -1,  1349,  1350,    -1,    -1,
    3389      633,    -1,    -1,    -1,    -1,    -1,    -1,  1360,   641,    -1,
    3390     1363,    -1,    -1,    -1,    -1,    -1,  1104,  1105,    -1,    -1,
     3356      -1,    -1,  1472,    -1,  1474,   986,    -1,    -1,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,    -1,   997,    -1,   817,    -1,
     3358      -1,    -1,    -1,    -1,   851,   824,   477,    -1,   855,   480,
     3359      -1,  1501,    -1,    -1,    -1,    -1,    -1,    -1,   837,    -1,
     3360     839,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3361      -1,    -1,    -1,   852,    -1,    -1,    -1,   884,    -1,   858,
     3362      -1,    -1,    -1,    -1,   891,    -1,    -1,    -1,   519,    -1,
     3363      -1,   870,   523,    -1,   873,    -1,    -1,    -1,    -1,    -1,
     3364      -1,    -1,    -1,    -1,    -1,  1066,    -1,    -1,    -1,    -1,
     3365      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1080,
     3366      -1,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,    -1,
     3367      -1,    -1,    -1,    -1,    -1,    -1,   567,   568,    -1,    -1,
    33913368      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3392       -1,    -1,  1385,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3393     1128,  1394,    -1,   750,  1397,    -1,  1399,  1400,  1401,    -1,
    3394       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3395       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3396       27,    28,    29,   780,    -1,    32,    33,    34,    35,    36,
    3397       37,    38,    -1,    -1,   717,    42,    -1,  1440,    -1,  1442,
    3398       -1,  1444,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3399       -1,    -1,    -1,    -1,    -1,    -1,   739,  1460,   741,    -1,
    3400       -1,    -1,    -1,    70,    -1,    -1,    -1,  1205,   751,    -1,
    3401       77,    78,    -1,    -1,   757,    -1,    -1,     3,     4,     5,
     3369      -1,   958,    -1,    -1,   585,   586,   963,    -1,    -1,   966,
     3370      -1,    -1,    -1,    -1,   595,    -1,   597,   598,    -1,    -1,
     3371      -1,    -1,    -1,   604,    -1,    -1,    -1,    -1,    -1,   986,
     3372      -1,    -1,    -1,   614,   615,    -1,    -1,    -1,    -1,   620,
     3373     997,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   629,   630,
     3374      -1,    -1,   981,    -1,    -1,    -1,    -1,  1168,    -1,    -1,
     3375    1017,    -1,  1019,    -1,   645,    -1,    -1,    -1,    -1,   650,
     3376     651,    -1,    -1,   654,   655,    -1,    -1,  1034,  1035,   283,
     3377     661,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3378      -1,   295,   296,    -1,    -1,    -1,    -1,  1054,    -1,   680,
     3379      -1,    -1,    -1,    -1,    -1,    -1,   310,   311,    -1,    -1,
     3380      -1,    -1,    -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,
     3381      -1,    -1,   703,   704,    -1,    -1,    -1,    -1,    -1,    -1,
     3382      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3383      -1,   345,    -1,    -1,    -1,    -1,    -1,  1076,    -1,    -1,
     3384      -1,  1108,  1081,    -1,  1265,    -1,    -1,   738,    -1,    -1,
     3385    1089,   742,   743,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3386    1127,    -1,    -1,    -1,    -1,    -1,   380,    -1,    -1,    -1,
     3387      -1,    -1,    -1,    -1,    -1,  1142,  1143,    -1,    -1,    -1,
     3388      -1,    -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,
     3389      -1,    -1,    -1,    -1,   785,  1134,    -1,    -1,  1137,    -1,
     3390    1139,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3391     801,    -1,   803,    -1,    -1,  1154,  1155,    -1,    -1,    -1,
     3392      -1,    -1,   813,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3393      -1,    -1,    -1,    -1,    -1,  1174,    -1,    -1,    -1,    -1,
     3394      -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,     4,
     3395       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3396      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3397      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3398      35,  1220,    -1,    38,    -1,    -1,    41,    42,    -1,  1228,
     3399      -1,    -1,    -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,
     3400     891,   892,    -1,   894,    -1,    -1,    -1,   898,    -1,    -1,
     3401      -1,    66,    -1,    -1,    69,    -1,    71,  1284,    73,    74,
     3402    1287,    76,    77,    78,    -1,    -1,    -1,    -1,   919,   920,
     3403      -1,    -1,    87,    88,   548,   549,   550,   551,   552,   553,
     3404     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
     3405     564,   565,    -1,    -1,    -1,    -1,    -1,    -1,   113,  1298,
     3406     115,  1300,    -1,   954,    -1,    -1,   121,   122,    -1,    -1,
     3407      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1316,    -1,  1318,
     3408      -1,    -1,   973,   974,    -1,    -1,    -1,    -1,    -1,    -1,
     3409      -1,    -1,   983,    -1,  1333,  1516,    -1,    -1,   989,   990,
     3410      -1,   992,   993,   994,    -1,    -1,    -1,    -1,    -1,  1348,
     3411    1349,    -1,    -1,  1004,  1005,    -1,    -1,    -1,    -1,    -1,
     3412    1359,    -1,    -1,  1362,    10,    11,    12,    13,    14,    15,
     3413      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3414      26,    27,    28,    29,    30,  1384,    -1,    -1,    -1,    -1,
     3415      -1,    -1,    -1,    -1,  1393,    41,    -1,  1396,    -1,  1398,
     3416    1399,  1400,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3417      -1,    -1,    -1,  1064,   688,  1066,    -1,    -1,    -1,    -1,
     3418    1071,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,  1080,
     3419      -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,    -1,
     3420    1439,    -1,  1441,    -1,  1443,    -1,    -1,    -1,    -1,    -1,
     3421      -1,    -1,  1103,  1104,    -1,    -1,    -1,    -1,    -1,    -1,
     3422    1459,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3423      -1,    -1,    -1,    -1,  1501,   749,  1127,     3,     4,     5,
    34023424       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    34033425      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3404       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    35,
    3405       -1,    -1,    -1,    39,   797,   798,    42,    43,    -1,    -1,
    3406     1258,  1259,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3407      813,    -1,    -1,    -1,    -1,    -1,    -1,   894,    -1,    -1,
    3408       -1,    67,    -1,    -1,    70,    -1,    72,    -1,    74,    75,
    3409       -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
    3410       -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,   852,
    3411       -1,    -1,    -1,   856,    -1,    -1,    -1,    40,    41,    -1,
    3412       43,    -1,    -1,   940,    -1,    -1,    -1,    -1,   114,    -1,
    3413      116,    -1,    -1,    -1,   120,    -1,   122,   123,    -1,    -1,
    3414       -1,    -1,   885,    -1,    -1,    -1,    69,    -1,    -1,   892,
    3415       -1,    -1,    75,    -1,    -1,   972,    79,    -1,    -1,    82,
    3416       83,    84,    85,    86,    87,    88,    89,   984,    91,    92,
     3426      26,    27,    28,    29,    -1,   779,    32,    33,    34,    35,
     3427      -1,    -1,    38,    39,    40,    41,    42,    43,    -1,    45,
     3428      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
     3429      -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,
     3430      66,    -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,
     3431      76,    77,    78,  1204,    -1,    81,    82,    83,    84,    85,
     3432      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
    34173433      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3418       -1,  1379,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   932,
    3419       -1,   114,    -1,   116,    -1,    -1,   119,    -1,    -1,   122,
    3420      123,   124,   125,   126,   127,    -1,  1023,    -1,    -1,    -1,
    3421       -1,    -1,    -1,    -1,    -1,    -1,   959,    -1,    -1,    -1,
    3422       -1,   964,    -1,    -1,   967,    -1,    -1,    -1,    -1,    -1,
     3434      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
     3435      -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,   125,
     3436     126,    -1,    -1,    -1,    -1,   131,  1257,  1258,    -1,    -1,
     3437     136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   893,
     3438       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3439      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3440      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3441      33,    34,    35,    -1,    -1,    38,    39,    40,    41,    42,
     3442      -1,    -1,    -1,    -1,    -1,   939,    -1,    -1,    -1,    -1,
    34233443      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3424       -1,    -1,    -1,    -1,   987,    -1,    -1,    -1,    -1,    -1,
    3425       -1,    -1,    -1,    -1,    -1,   998,    -1,    -1,    -1,    -1,
    3426       -1,    -1,    40,    41,    -1,    43,    -1,    -1,    -1,    -1,
    3427     1468,    -1,    -1,    -1,    -1,  1018,    -1,  1020,    -1,    -1,
    3428       -1,    -1,  1099,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3429       -1,    69,  1035,  1036,  1492,  1493,    -1,    75,    -1,    -1,
    3430       -1,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    3431       88,    89,  1055,    91,    92,    -1,    -1,    -1,    -1,  1517,
     3444      -1,    -1,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
     3445      73,    74,    -1,    76,    77,    78,    -1,   971,    81,    82,
     3446      83,    84,    85,    86,    87,    88,    -1,    90,    91,   983,
    34323447      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3433       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    3434       -1,  1158,  1159,   121,   122,   123,   124,   125,   126,   127,
    3435       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3436       -1,    -1,    -1,    -1,    -1,    -1,  1109,    -1,    -1,    -1,
    3437       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3438       -1,    -1,    -1,    -1,    -1,  1128,    -1,    -1,    -1,    -1,
    3439       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3440     1143,  1144,     3,     4,     5,     6,     7,     8,     9,    10,
    3441       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3442       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3443       -1,    32,    33,    34,    35,    -1,    -1,    -1,    39,    40,
    3444       41,    42,    43,    44,    -1,    46,    -1,    -1,    49,    50,
    3445       51,    52,    53,    54,    55,    56,    -1,    -1,    -1,    60,
    3446       -1,    -1,    -1,    64,    65,    -1,    67,    -1,    69,    70,
    3447       -1,    72,    -1,    74,    75,    -1,    77,    78,    79,    -1,
    3448       -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
    3449       91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3450       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3451       -1,    -1,    -1,   114,    -1,   116,    -1,    -1,   119,    -1,
    3452       -1,   122,   123,   124,   125,   126,   127,    -1,    -1,    -1,
    3453       -1,   132,    -1,    -1,    -1,    -1,   137,    -1,    -1,    -1,
    3454       -1,    -1,  1285,    -1,    -1,  1288,    -1,    -1,    -1,  1366,
    3455       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3456       -1,    -1,    -1,    -1,    -1,    -1,  1383,    -1,    -1,    -1,
    3457       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    3458        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3459       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3460       29,    -1,    -1,    32,    33,    34,    35,    -1,    -1,    -1,
    3461       39,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3463       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1455,  1456,
    3464       69,    70,    -1,    72,    -1,    74,    75,    -1,    77,    78,
    3465       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3466       89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
    3467       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3468       -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,
    3469       -1,    -1,    -1,   122,   123,   124,   125,   126,   127,    -1,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   137,     3,
     3448      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1378,    -1,    -1,
     3449     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3450     123,   124,   125,   126,    -1,    -1,    -1,    -1,  1022,    -1,
     3451      -1,    -1,    -1,   136,    -1,    -1,    -1,    -1,    -1,     3,
    34713452       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    34723453      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    34733454      24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3474       34,    35,    -1,    -1,    -1,    39,    40,    41,    42,    43,
    3475       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1502,
     3455      34,    35,    -1,    -1,    38,    -1,    -1,    41,    42,    -1,
    34763456      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3477       -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    72,    -1,
    3478       74,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
    3479       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
     3457      -1,    -1,    -1,    -1,    -1,    -1,  1467,    -1,    -1,    -1,
     3458      -1,    -1,    66,    -1,  1098,    69,    -1,    71,    -1,    73,
     3459      74,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
     3460    1491,  1492,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,
     3461      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3462      -1,    -1,    -1,    -1,    -1,  1516,    -1,    -1,    -1,   113,
     3463      -1,   115,    -1,    -1,    -1,   119,    -1,   121,   122,    -1,
     3464      -1,    -1,    -1,  1157,  1158,     3,     4,     5,     6,     7,
     3465       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3466      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3467      28,    29,    -1,    -1,    32,    33,    34,    35,    -1,    -1,
     3468      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
    34803469      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34813470      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3482      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3483      124,   125,   126,   127,     4,     5,     6,     7,     8,     9,
     3471      68,    69,    -1,    71,    -1,    73,    74,    -1,    76,    77,
     3472      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
     3473      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
     3474      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3475      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
     3476      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,    -1,
     3477      -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,     8,
     3478       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3479      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3480      29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
     3481      39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
     3482      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3483      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
     3484      69,    -1,    71,    -1,    73,    74,    -1,    76,    77,    78,
     3485      -1,  1365,    81,    82,    83,    84,    85,    86,    87,    88,
     3486      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,  1382,    -1,
     3487      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3488      -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,
     3489      -1,   120,   121,   122,   123,   124,   125,   126,     4,     5,
     3490       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3491      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3492      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
     3493      -1,    -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,
     3494    1454,  1455,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3495      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3496      -1,    -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,
     3497      76,    77,    78,    -1,    -1,    81,    82,    83,    84,    85,
     3498      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
     3499      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3500      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
     3501      -1,    -1,    -1,    -1,   120,   121,   122,   123,   124,   125,
     3502     126,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3503      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3504      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3505      33,    34,    -1,    -1,    -1,    -1,    39,    40,    41,    42,
     3506      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3507      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3508      -1,    -1,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
     3509      73,    74,    -1,    76,    77,    78,    -1,    -1,    81,    82,
     3510      83,    84,    85,    86,    87,    88,    -1,    90,    91,    -1,
     3511      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3512      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3513     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3514     123,   124,   125,   126,     4,     5,     6,     7,     8,     9,
     3515      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3516      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3517      -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    39,
     3518      40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3519      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
     3521      -1,    71,    -1,    73,    74,    -1,    76,    77,    78,    -1,
     3522      -1,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
     3523      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3524      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3525      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,
     3526      -1,   121,   122,   123,   124,   125,   126,     4,     5,     6,
     3527       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3528      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3529      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3530      -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3532      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3533      -1,    68,    69,    -1,    71,    -1,    73,    74,    -1,    76,
     3534      77,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
     3535      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
     3536      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3537      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
     3538      -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,   126,
     3539       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3540      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3541      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3542      33,    34,    35,    -1,    -1,    38,    -1,    -1,    41,    42,
     3543      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3544      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3545      -1,    -1,    -1,    66,    -1,    -1,    69,    -1,    71,    -1,
     3546      73,    74,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
     3547      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
     3548      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3550     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3551       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3552      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3553      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3554      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
     3555      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3556      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3557      29,    -1,    -1,    32,    33,    34,    69,    -1,    71,    -1,
     3558      73,    74,    41,    76,    77,    78,    -1,    -1,    -1,    -1,
     3559      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3561      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
     3562     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3563       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3564      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3565      23,    24,    25,    26,    27,    28,    29,    30,    -1,    32,
     3566      33,    34,    35,    -1,    -1,    38,    -1,    -1,    41,    -1,
     3567      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3568      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3569      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
     3570      73,    -1,    -1,    76,    77,    -1,    -1,    80,     3,     4,
     3571       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3572      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3573      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3574      35,    -1,   115,    38,    -1,    -1,    41,    -1,   121,   122,
     3575      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3576      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3577      -1,    -1,    -1,    -1,    69,    -1,    71,    -1,    73,    -1,
     3578      -1,    76,    77,     3,     4,     5,     6,     7,     8,     9,
    34843579      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    34853580      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    34863581      -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
    3487       40,    41,    42,    43,    10,    11,    12,    13,    14,    15,
    3488       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3489       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    69,
    3490       70,    -1,    72,    -1,    74,    75,    42,    77,    78,    79,
    3491       -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
    3492       -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
    3494       -1,    77,    78,    -1,   114,    -1,   116,    -1,    -1,    -1,
    3495       -1,   121,   122,   123,   124,   125,   126,   127,     4,     5,
     3582     115,    41,    -1,    -1,    -1,    -1,   121,   122,    -1,     7,
     3583      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3584      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3585      -1,    71,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,
     3586      -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
     3587      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3588      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3589      68,    69,    -1,    -1,    -1,   115,    74,    -1,    -1,    -1,
     3590      78,   121,   122,    81,    82,    83,    84,    85,    86,    87,
     3591      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
     3592      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3593      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
     3594      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,     4,
     3595       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3596      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3597      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3598      -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    10,
     3599      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3600      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3601      -1,    32,    33,    34,    69,    -1,    71,    -1,    73,    74,
     3602      41,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
     3603      -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,
     3604      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
     3605      -1,    -1,    -1,    -1,    -1,    76,    77,    -1,   113,    -1,
     3606     115,    -1,    -1,    -1,    -1,    -1,   121,   122,     4,     5,
    34963607       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    34973608      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3498       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
    3499       -1,    -1,    -1,    -1,    40,    41,    42,    43,    10,    11,
     3609      26,    27,    28,    29,   115,    -1,    32,    33,    34,    -1,
     3610     121,   122,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,
     3611      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3613      -1,    -1,    -1,    69,    -1,    71,    -1,    73,    -1,    -1,
     3614      76,    77,    -1,     4,     5,     6,     7,     8,     9,    10,
     3615      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3616      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3617      -1,    32,    33,    34,    -1,    -1,    -1,    -1,   114,   115,
     3618      41,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
     3619      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3620      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
     3621      71,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,    -1,
     3622      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3623      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
     3624      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3625      -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,
     3626     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
    35003627      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    35013628      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3502       32,    33,    34,    69,    70,    -1,    72,    -1,    74,    75,
    3503       42,    77,    78,    79,    -1,    -1,    82,    83,    84,    85,
    3504       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    3505       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3506       -1,    -1,    -1,    -1,    -1,    77,    78,    -1,   114,    -1,
    3507      116,    -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,
    3508      126,   127,     4,     5,     6,     7,     8,     9,    10,    11,
    3509       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3510       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3511       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    41,
    3512       42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3629      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
     3630      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3631      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3632      28,    29,    -1,    -1,    32,    33,    34,    69,    -1,    71,
     3633      -1,    73,    -1,    41,    76,    77,    -1,    -1,    -1,    -1,
    35133634      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3514       -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,
    3515       72,    -1,    74,    75,    -1,    77,    78,    79,    -1,    -1,
    3516       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    3517       92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3635      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,    -1,
     3636      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
     3637      -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
     3638     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3639      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3640      23,    24,    25,    26,    27,    28,    29,   115,    -1,    32,
     3641      33,    34,    -1,   121,   122,    -1,    -1,    -1,    41,    -1,
    35183642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3519       -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    3520      122,   123,   124,   125,   126,   127,     4,     5,     6,     7,
     3643      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3644      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
     3645      73,    -1,    -1,    76,    77,    -1,     4,     5,     6,     7,
    35213646       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    35223647      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    35233648      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3524       -1,    -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,
     3649      -1,    -1,   115,    41,    -1,    -1,    -1,    -1,   121,   122,
    35253650      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35263651      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3527       -1,    69,    70,    -1,    72,    -1,    74,    75,    -1,    77,
    3528       78,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    3529       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
     3652      -1,    69,    -1,    71,    -1,    73,    -1,    -1,    76,    77,
     3653      -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3654      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3655      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3656      33,    34,    -1,    -1,    -1,    -1,    -1,   115,    41,    -1,
     3657      -1,    -1,    -1,   121,   122,    -1,    -1,    -1,    -1,    -1,
    35303658      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3531       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    3532       -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,   127,
    3533        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3659      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
     3660      73,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
     3661      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3662      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3663      -1,    -1,    -1,    -1,    39,    40,    41,    42,    -1,    -1,
     3664      -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3665      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3666      -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,    74,
     3667      -1,    76,    77,    78,    -1,    -1,    81,    82,    83,    84,
     3668      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3669      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3670      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3671     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
     3672     125,   126,    10,    11,    12,    13,    14,    15,    16,    17,
     3673      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3674      28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
     3675      -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
     3676      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3677      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3678      68,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,    77,
     3679      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
     3680      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
     3681      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3682      -1,    -1,    -1,    -1,    -1,   113,   114,   115,    -1,    -1,
     3683      -1,    -1,    -1,   121,   122,   123,   124,   125,   126,    10,
     3684      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3685      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3686      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    39,    40,
     3687      41,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3688      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3689      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    -1,
     3690      -1,    -1,    -1,    74,    -1,    76,    77,    78,    -1,    -1,
     3691      81,    82,    83,    84,    85,    86,    87,    88,    -1,    90,
     3692      91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3693      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3694      -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,
     3695     121,   122,   123,   124,   125,   126,    10,    11,    12,    13,
    35343696      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    35353697      24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3536       34,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,
     3698      34,    -1,    -1,    -1,    -1,    39,    40,    41,    42,    -1,
    35373699      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35383700      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3539       -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    72,    -1,
    3540       74,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
    3541       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
     3701      -1,    -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,
     3702      74,    -1,    76,    77,    78,    -1,    -1,    81,    82,    83,
     3703      84,    85,    86,    87,    88,    -1,    90,    91,    -1,    -1,
     3704      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3705      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
     3706      -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,
     3707     124,   125,   126,    10,    11,    12,    13,    14,    15,    16,
     3708      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3709      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
     3710      -1,    -1,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
    35423711      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35433712      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3544      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3545      124,   125,   126,   127,     0,    -1,    -1,     3,     4,     5,
    3546        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3547       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3548       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    35,
    3549       -1,    -1,    -1,    39,    -1,    -1,    42,    43,    -1,    -1,
     3713      -1,    68,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,
     3714      77,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
     3715      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
    35503716      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3551       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3552       -1,    67,    -1,    -1,    70,    -1,    72,    -1,    74,    75,
    3553       -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
    3554       -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
    3555       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3556       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    3557      116,    -1,    -1,    -1,    -1,    -1,   122,   123,     3,     4,
    3558        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3559       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3560       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3561       35,    -1,    -1,    -1,    39,    -1,    -1,    42,    43,    -1,
    3562       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3563       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    67,    -1,    -1,    70,    -1,    72,    -1,    74,
    3565       75,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
    3566       -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    3567       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3568       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3569       -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,     3,
    3570        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3571       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3572       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3573       34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
    3574       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3575       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,    -1,
    3577       74,    75,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
    3578       -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,
    3579       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3580       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3581      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3582        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3583       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3584       23,    24,    25,    26,    27,    28,    29,    30,    -1,    32,
    3585       33,    34,    35,    -1,    -1,    -1,    39,    -1,    -1,    42,
    3586       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3588       -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,
    3589       -1,    74,    -1,    -1,    77,    78,    -1,    -1,    81,     3,
    3590        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3591       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3592       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3593       34,    35,    -1,   116,    -1,    39,    -1,    -1,    42,   122,
    3594      123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3595       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3596       -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,    -1,
    3597       74,    -1,    -1,    77,    78,     3,     4,     5,     6,     7,
    3598        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3599       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3600       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3601       -1,    -1,   116,    -1,    42,    -1,    -1,    -1,   122,   123,
    3602       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3603       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3604       -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,    77,
    3605       78,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3606       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3607       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3608       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   116,    42,
    3609       -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,
    3610       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3611       -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,
    3612       -1,    74,    75,    -1,    77,    78,    79,    -1,    -1,    -1,
    3613       -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
    3614       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3615       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3616       -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
    3617      123,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3618       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3619       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3620       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
    3621       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3622       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,
    3624       -1,    74,    -1,    -1,    77,    78,     4,     5,     6,     7,
    3625        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3626       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3627       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3628       -1,    -1,   115,   116,    42,    -1,    -1,    -1,    -1,   122,
    3629      123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3630       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,    77,
    3632       78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3633       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3634       -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,
    3636       -1,    -1,    -1,    -1,   122,   123,     4,     5,     6,     7,
    3637        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3638       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3639       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3640       -1,    -1,    -1,    -1,    42,    -1,    10,    11,    12,    13,
    3641       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3642       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3643       34,    -1,    70,    -1,    72,    -1,    74,    -1,    42,    77,
    3644       78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3645       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3646       -1,    -1,    -1,   101,    -1,    -1,    70,    -1,    -1,    -1,
    3647       -1,    -1,    -1,    77,    78,    -1,    -1,    -1,   116,    -1,
    3648       -1,    -1,    -1,    -1,   122,   123,     4,     5,     6,     7,
    3649        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3650       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3651       28,    29,   116,    -1,    32,    33,    34,    -1,   122,   123,
    3652       -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
    3653       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3654       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,    77,
    3656       78,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3657       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3658       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3659       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   116,    42,
    3660       -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,
    3661       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3662       -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,
    3663       -1,    74,    -1,    -1,    77,    78,     4,     5,     6,     7,
    3664        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3665       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3666       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3667       -1,    -1,    -1,   116,    42,    -1,    -1,    -1,    -1,   122,
    3668      123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3669       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3670       -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,    77,
    3671       78,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3672       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3673       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    3674       -1,    40,    41,    42,    43,    -1,    -1,    -1,   116,    -1,
    3675       -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,
    3676       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3677       69,    70,    -1,    -1,    -1,    -1,    75,    -1,    77,    78,
    3678       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3679       89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
    3680       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3681       -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,
    3682      119,    -1,    -1,   122,   123,   124,   125,   126,   127,    10,
    3683       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3684       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3685       -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
    3686       41,    42,    43,    10,    11,    12,    13,    14,    15,    16,
    3687       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3688       27,    28,    29,    -1,    -1,    32,    33,    34,    69,    70,
    3689       -1,    -1,    -1,    -1,    75,    42,    77,    78,    79,    -1,
    3690       -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
    3691       91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3692       -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
    3693       77,    78,    -1,   114,   115,   116,    -1,    -1,    -1,    -1,
    3694       -1,   122,   123,   124,   125,   126,   127,    10,    11,    12,
    3695       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3696       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3697       33,    34,    -1,    -1,    -1,   122,   123,    40,    41,    42,
    3698       43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3699       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    -1,
    3701       -1,    -1,    75,    -1,    77,    78,    79,    -1,    -1,    82,
    3702       83,    84,    85,    86,    87,    88,    89,    -1,    91,    92,
    3703       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3704       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3705       -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
    3706      123,   124,   125,   126,   127,    10,    11,    12,    13,    14,
    3707       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3708       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3709       -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,    -1,
    3710       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3712       -1,    -1,    -1,    -1,    69,    70,    -1,    -1,    -1,    -1,
    3713       75,    -1,    77,    78,    79,    -1,    -1,    82,    83,    84,
    3714       85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
    3715       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3716       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3717       -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,
    3718      125,   126,   127,    10,    11,    12,    13,    14,    15,    16,
    3719       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3720       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3721       -1,    -1,    -1,    40,    41,    42,    43,    -1,    -1,    -1,
    3722       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3723       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3724       -1,    -1,    69,    70,    -1,    -1,    -1,    -1,    75,    -1,
    3725       77,    78,    79,    -1,    -1,    82,    83,    84,    85,    86,
    3726       87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,
    3727       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3728       -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,
    3729       -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,
    3730      127,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3731       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3732       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3733       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3734       42,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3735       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3736       29,    -1,    -1,    32,    33,    34,    -1,    -1,    70,    -1,
    3737       72,    -1,    74,    42,    43,    77,    78,    -1,    -1,    -1,
    3738       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3739       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3740       29,    70,    -1,    32,    33,    34,    -1,    -1,    77,    78,
    3741       -1,    -1,    -1,    42,    43,    -1,    -1,   119,    -1,    -1,
    3742       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3743       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3744       -1,    70,    -1,    -1,    -1,    -1,    -1,   116,    77,    78,
    3745       -1,   120,    -1,   122,   123,    -1,    10,    11,    12,    13,
    3746       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3747       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3748       34,    -1,    -1,    -1,    -1,    -1,    -1,   116,    42,    43,
    3749       -1,   120,    -1,   122,   123,    -1,    10,    11,    12,    13,
    3750       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3751       24,    25,    26,    27,    28,    29,    70,    -1,    32,    33,
    3752       34,    -1,    -1,    77,    78,    -1,    -1,    -1,    42,    10,
    3753       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3754       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3755       -1,    32,    33,    34,    -1,    -1,    70,    -1,    -1,    -1,
    3756       -1,    42,   116,    77,    78,    -1,   120,    -1,   122,   123,
    3757       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3758       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
    3759       -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    -1,    -1,
    3760       -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3761       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3762       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3763       26,    27,    28,    29,    -1,   116,    32,    33,    34,    -1,
    3764       -1,   122,   123,    -1,    -1,    -1,    42,    10,    11,    12,
    3765       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3766       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3767       33,    34,    -1,    -1,    70,    -1,    -1,    -1,    -1,    42,
    3768       -1,    77,    78,    -1,    -1,    -1,    -1,    -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,    -1,    -1,    -1,    77,    78,    -1,    -1,    -1,    -1,
    3772      116,    -1,    -1,    -1,    -1,    -1,   122,   123,    -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,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
    3776      123,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3777       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3778       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3779       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
    3780       -1,    40,    41,    -1,    43,    44,    -1,    46,    -1,    -1,
    3781       49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
    3782       59,    60,    -1,    -1,    -1,    64,    65,    70,    67,    72,
    3783       69,    74,    -1,    -1,    77,    78,    75,    -1,    -1,    -1,
    3784       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3785       89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
    3786       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3787       -1,    -1,   115,    -1,    -1,   114,    -1,   116,    -1,    -1,
    3788      119,    -1,    -1,   122,   123,   124,   125,   126,   127,    -1,
    3789       -1,    40,    41,   132,    43,    44,    -1,    46,   137,    -1,
    3790       49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
    3791       -1,    60,    -1,    -1,    -1,    64,    65,    -1,    67,    -1,
    3792       69,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
    3793       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3794       89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
    3795       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3796       -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,
    3797      119,    -1,    -1,   122,   123,   124,   125,   126,   127,    -1,
    3798       -1,    -1,    -1,   132,    -1,    -1,    -1,    -1,   137,     4,
    3799        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3800       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3801       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3802       -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    40,
    3803       41,    -1,    43,    44,    -1,    46,    47,    48,    49,    50,
    3804       51,    52,    53,    54,    55,    56,    -1,    -1,    59,    60,
    3805       -1,    -1,    -1,    64,    65,    70,    67,    72,    69,    74,
    3806       -1,    -1,    77,    78,    75,    -1,    -1,    -1,    79,    -1,
    3807       -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
    3808       91,    92,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
    3809       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3810       -1,    -1,    -1,   114,    -1,   116,    -1,    -1,   119,    -1,
    3811       -1,   122,   123,   124,   125,   126,   127,    -1,    -1,    40,
    3812       41,   132,    43,    44,    -1,    46,    47,    48,    49,    50,
    3813       51,    52,    53,    54,    55,    56,    -1,    -1,    -1,    60,
    3814       -1,    -1,    -1,    64,    65,    -1,    67,    -1,    69,    -1,
    3815       -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,    -1,
    3816       -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
    3817       91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3818       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3819       -1,    -1,    -1,   114,    -1,   116,    -1,    -1,   119,    -1,
    3820       -1,   122,   123,   124,   125,   126,   127,    -1,    -1,    40,
    3821       41,   132,    43,    44,    -1,    46,    -1,    -1,    49,    50,
    3822       51,    52,    53,    54,    55,    56,    -1,    -1,    -1,    60,
    3823       -1,    -1,    -1,    64,    65,    -1,    67,    -1,    69,    -1,
    3824       -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,    -1,
    3825       -1,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
    3826       91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    40,    41,
    3827       -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3828       -1,    -1,    -1,   114,    -1,   116,    -1,    -1,   119,    -1,
    3829       -1,   122,   123,   124,   125,   126,   127,    69,    -1,    -1,
    3830       -1,   132,    -1,    75,    -1,    -1,    -1,    79,    -1,    -1,
    3831       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    3832       92,    -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,
    3833       43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3834       -1,    -1,   114,    -1,   116,    -1,    -1,   119,    -1,    -1,
    3835      122,   123,   124,   125,   126,   127,    69,    -1,    -1,    -1,
    3836       -1,    -1,    75,    -1,    -1,    -1,    79,    -1,    -1,    82,
    3837       83,    84,    85,    86,    87,    88,    89,    -1,    91,    92,
    3838       -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    43,
    3839       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3840       -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
    3841      123,   124,   125,   126,   127,    69,    -1,    -1,    -1,    -1,
    3842       -1,    75,    -1,    -1,    -1,    79,    -1,    -1,    82,    83,
    3843       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
    3844       -1,    -1,    -1,    -1,    -1,    40,    41,    -1,    43,    -1,
    3845       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3846      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3847      124,   125,   126,   127,    69,    -1,    -1,    -1,    -1,    -1,
    3848       75,    -1,    -1,    -1,    79,    -1,    -1,    82,    83,    84,
    3849       85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
    3850       -1,    -1,    -1,    -1,    40,    41,    -1,    43,    -1,    -1,
    3851       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3852       -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,
    3853      125,   126,   127,    69,    -1,    -1,    -1,    -1,    -1,    75,
    3854       -1,    -1,    -1,    79,    -1,    -1,    82,    83,    84,    85,
    3855       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    3856       -1,    -1,    -1,    40,    41,    -1,    43,    -1,    -1,    -1,
    3857       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    3858      116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,
    3859      126,   127,    69,    -1,    -1,    -1,    -1,    -1,    75,    -1,
    3860       -1,    -1,    79,    -1,    -1,    82,    83,    84,    85,    86,
    3861       87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,
    3862       -1,    -1,    40,    41,    -1,    43,    -1,    -1,    -1,    -1,
    3863       -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,
    3864       -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,
    3865      127,    69,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,
    3866       -1,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    3867       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
    3868       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3869       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    3870       -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,   127,
    3871        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3872       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3873       24,    25,    26,    27,    28,    29,    -1,    -1,    -1,    -1,
    3874       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
    3875       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3876       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3877       -1,    -1,    32,    33,    34,    -1,    70,    -1,    72,    -1,
    3878       74,    75,    42,    77,    78,    79,    -1,    -1,    -1,    -1,
    3879       -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,
    3880       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3881       70,    -1,    -1,    -1,    -1,    75,    -1,    77,    78,    -1,
    3882       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
     3717      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
     3718      -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,   126,
    38833719       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    38843720      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    38853721      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3886       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
     3722      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
     3723      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3724      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3725      -1,    -1,    32,    33,    34,    -1,    69,    -1,    71,    -1,
     3726      73,    41,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,
     3727      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3728      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3729      -1,    -1,    -1,    -1,    74,    -1,    76,    77,    -1,    -1,
     3730      -1,    -1,    -1,    -1,    -1,   118,    -1,    87,    88,    -1,
     3731      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3732      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3733      26,    27,    28,    29,    -1,   115,    32,    33,    34,    -1,
     3734      -1,   121,   122,    -1,    -1,    41,    42,    10,    11,    12,
     3735      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3736      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3737      33,    34,    -1,    69,    -1,    -1,    -1,    -1,    41,    42,
     3738      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3739      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3740      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
     3741      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,   115,
     3742      -1,    -1,    -1,   119,    -1,   121,   122,    -1,    -1,    -1,
     3743      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3744      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3745      29,    -1,   115,    32,    33,    34,   119,    -1,   121,   122,
     3746      -1,    -1,    41,    42,    10,    11,    12,    13,    14,    15,
     3747      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3748      26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
     3749      69,    -1,    -1,    -1,    -1,    41,    -1,    76,    77,    -1,
    38873750      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38883751      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3889       -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,
    3890       -1,    74,    -1,    -1,    77,    78,     3,     4,     5,     6,
     3752      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
     3753      76,    77,    -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,
     3754     119,    -1,   121,   122,    -1,    -1,    -1,    -1,    10,    11,
     3755      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3756      22,    23,    24,    25,    26,    27,    28,    29,    -1,   115,
     3757      32,    33,    34,    -1,    -1,   121,   122,    -1,    -1,    41,
     3758      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3759      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3760      -1,    -1,    32,    33,    34,    -1,    -1,    69,    -1,    -1,
     3761      -1,    41,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
     3762      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3763      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
     3764      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
     3765      -1,    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
     3766     122,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3767      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3768      26,    27,    28,    29,    -1,   115,    32,    33,    34,    -1,
     3769      -1,   121,   122,    -1,    -1,    41,    -1,    -1,    -1,    -1,
     3770      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3771      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3772      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
     3773      76,    77,    -1,     4,     5,     6,     7,     8,     9,    10,
     3774      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3775      21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
     3776      -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,   115,
     3777      41,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
     3778      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3779      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
     3780      71,    -1,    73,    -1,    -1,    76,    77,    39,    40,    -1,
     3781      42,    43,    -1,    45,    -1,    -1,    48,    49,    50,    51,
     3782      52,    53,    54,    55,    -1,    -1,    58,    59,    -1,    -1,
     3783      -1,    63,    64,    -1,    66,    -1,    68,    -1,    -1,    -1,
     3784      -1,    -1,    74,   114,    -1,    -1,    78,    -1,    -1,    81,
     3785      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
     3786      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3787      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3788      -1,   113,    -1,   115,    -1,    -1,   118,    -1,    -1,   121,
     3789     122,   123,   124,   125,   126,    -1,    -1,    39,    40,   131,
     3790      42,    43,    -1,    45,   136,    -1,    48,    49,    50,    51,
     3791      52,    53,    54,    55,    -1,    -1,    -1,    59,    -1,    -1,
     3792      -1,    63,    64,    -1,    66,    -1,    68,    -1,    -1,    -1,
     3793      -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,
     3794      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
     3795      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3796      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3797      -1,   113,    -1,   115,    -1,    -1,   118,    -1,    -1,   121,
     3798     122,   123,   124,   125,   126,    -1,    -1,    -1,    -1,   131,
     3799      -1,    -1,    -1,    -1,   136,     4,     5,     6,     7,     8,
     3800       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3801      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3802      29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
     3803      -1,    -1,    41,    -1,    39,    40,    -1,    42,    43,    -1,
     3804      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
     3805      55,    -1,    -1,    58,    59,    -1,    -1,    -1,    63,    64,
     3806      69,    66,    71,    68,    73,    -1,    -1,    76,    77,    74,
     3807      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
     3808      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3809      -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3810      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3811     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
     3812     125,   126,    -1,    -1,    39,    40,   131,    42,    43,    -1,
     3813      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
     3814      55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
     3815      -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    74,
     3816      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
     3817      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3818      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3819      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3820     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
     3821     125,   126,    -1,    -1,    39,    40,   131,    42,    43,    -1,
     3822      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
     3823      55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
     3824      -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    74,
     3825      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
     3826      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3827      -1,    -1,    -1,    39,    40,    -1,    42,    -1,    -1,    -1,
     3828      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3829     115,    -1,    -1,   118,    -1,    -1,   121,   122,   123,   124,
     3830     125,   126,    68,    -1,    -1,    -1,   131,    -1,    74,    -1,
     3831      76,    77,    78,    -1,    -1,    81,    82,    83,    84,    85,
     3832      86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,
     3833      -1,    -1,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,
     3834      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,
     3835      -1,   117,   118,    -1,    -1,   121,   122,   123,   124,   125,
     3836     126,    68,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,
     3837      -1,    78,    -1,    -1,    81,    82,    83,    84,    85,    86,
     3838      87,    88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,
     3839      -1,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,
     3840      -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,
     3841      -1,   118,    -1,    -1,   121,   122,   123,   124,   125,   126,
     3842      68,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,
     3843      78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
     3844      88,    -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,
     3845      39,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
     3846      -1,    -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,
     3847      -1,    -1,   120,   121,   122,   123,   124,   125,   126,    68,
     3848      -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,
     3849      -1,    -1,    81,    82,    83,    84,    85,    86,    87,    88,
     3850      -1,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3851      40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3852      -1,    -1,    -1,    -1,   113,    -1,   115,    -1,    -1,   118,
     3853      -1,    -1,   121,   122,   123,   124,   125,   126,    68,    -1,
     3854      -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,    -1,
     3855      -1,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
     3856      90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,
     3857      -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3858      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,
     3859      -1,   121,   122,   123,   124,   125,   126,    68,    -1,    -1,
     3860      -1,    -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,
     3861      81,    82,    83,    84,    85,    86,    87,    88,    -1,    90,
     3862      91,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,
     3863      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3864      -1,    -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,
     3865     121,   122,   123,   124,   125,   126,    68,    -1,    -1,    -1,
     3866      -1,    -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,
     3867      82,    83,    84,    85,    86,    87,    88,    -1,    90,    91,
     3868      -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    42,
     3869      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3870      -1,   113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,
     3871     122,   123,   124,   125,   126,    68,    -1,    -1,    -1,    -1,
     3872      -1,    74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,
     3873      83,    84,    85,    86,    87,    88,    -1,    90,    91,    -1,
     3874      -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    42,    -1,
     3875      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3876     113,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
     3877     123,   124,   125,   126,    68,    -1,    -1,    -1,    -1,    -1,
     3878      74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,
     3879      84,    85,    86,    87,    88,    -1,    90,    91,    -1,    -1,
     3880      -1,    -1,    -1,    -1,    39,    40,    -1,    42,    -1,    -1,
     3881      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
     3882      -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,
     3883     124,   125,   126,    68,    -1,    -1,    -1,    -1,    -1,    74,
     3884      -1,    -1,    -1,    78,    -1,    -1,    81,    82,    83,    84,
     3885      85,    86,    87,    88,    -1,    90,    91,    -1,    -1,    -1,
     3886      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3887      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     3888     115,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,   124,
     3889     125,   126,     4,     5,     6,     7,     8,     9,    10,    11,
     3890      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3891      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     3892      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,
     3893      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3894      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3895      28,    29,    -1,    -1,    32,    33,    34,    69,    -1,    71,
     3896      -1,    73,    74,    41,    76,    77,    78,    -1,    -1,    -1,
     3897      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,
     3898      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3899      -1,    69,    -1,    -1,    -1,    -1,    74,    -1,    76,    77,
     3900      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     3901      88,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3902      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3903      22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
     3904      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
     3905      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3906      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3907      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,
     3908      -1,    73,    -1,    -1,    76,    77,     3,     4,     5,     6,
    38913909       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    38923910      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    38933911      27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3894       -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
     3912      -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,
    38953913      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38963914      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3897       -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
    3898       77,    78,     4,     5,     6,     7,     8,     9,    10,    11,
    3899       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3900       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3901       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3902       42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3915      -1,    -1,    69,    -1,    71,    -1,    73,    -1,    -1,    76,
     3916      77,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3917      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3918      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3919      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
    39033920      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3904       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3905       72,    -1,    74,    -1,    -1,    77,    78
     3921      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3922      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,
     3923      73,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
     3924      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3925      25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
     3926      35,    36,    37,    -1,    -1,    -1,    41,    10,    11,    12,
     3927      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3928      23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
     3929      33,    34,    -1,    -1,    69,    -1,    -1,    -1,    41,    -1,
     3930      -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3931      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3932      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
     3933      -1,    -1,    -1,    76,    77
    39063934};
    39073935
     
    39133941      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    39143942      22,    23,    24,    25,    26,    27,    28,    29,    32,    33,
    3915       34,    35,    39,    42,    43,    67,    70,    72,    74,    75,
    3916       77,    78,    79,    88,    89,   114,   116,   122,   123,   142,
    3917      145,   157,   206,   220,   221,   222,   223,   224,   225,   226,
    3918      227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
    3919      237,   239,   240,   241,   242,   243,   244,   245,   247,   248,
    3920      249,   250,   251,   252,   254,   262,   263,   290,   291,   292,
    3921      300,   303,   309,   310,   312,   314,   315,   321,   326,   330,
    3922      331,   332,   333,   334,   335,   336,   337,   357,   374,   375,
    3923      376,   377,    75,   144,   145,   157,   223,   225,   233,   235,
    3924      244,   248,   250,   291,    84,   114,   319,   320,   321,   319,
    3925      319,    75,    77,    78,    79,   143,   144,   280,   281,   301,
    3926      302,    77,    78,   281,   114,   312,    11,   207,   114,   157,
    3927      326,   331,   332,   333,   335,   336,   337,   117,   139,   226,
    3928      233,   235,   330,   334,   373,   374,   377,   378,   140,   112,
    3929      136,   284,   119,   140,   181,    77,    78,   142,   279,   140,
    3930      140,   140,   121,   140,    77,    78,   114,   157,   316,   325,
    3931      326,   327,   328,   329,   330,   334,   338,   339,   340,   341,
    3932      342,   348,     3,    30,    81,   246,     3,     5,    77,   116,
    3933      157,   225,   236,   240,   242,   251,   292,   330,   334,   377,
    3934      223,   225,   235,   244,   248,   250,   291,   330,   334,    35,
    3935      241,   241,   236,   242,   140,   241,   236,   241,   236,    78,
    3936      114,   119,   281,   292,   119,   281,   241,   236,   121,   140,
    3937      140,     0,   139,   114,   181,   319,   319,   139,   116,   233,
    3938      235,   375,   279,   279,   136,   235,   114,   157,   316,   326,
    3939      330,   116,   157,   377,   313,   238,   321,   114,   297,   114,
    3940      114,    54,   114,    40,    41,    43,    69,    75,    79,    82,
    3941       83,    84,    85,    86,    87,    91,    92,   114,   116,   124,
    3942      125,   126,   127,   141,   145,   146,   147,   148,   149,   156,
    3943      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    3944      167,   168,   169,   170,   172,   175,   233,   283,   299,   373,
    3945      378,   235,   115,   115,   115,   115,   115,   115,   115,   116,
    3946      233,   357,   375,   116,   122,   157,   172,   225,   226,   232,
    3947      235,   239,   240,   244,   247,   248,   250,   269,   270,   274,
    3948      275,   276,   277,   291,   357,   369,   370,   371,   372,   377,
    3949      378,   114,   330,   334,   377,   114,   121,   137,   116,   119,
    3950      157,   172,   285,   285,   120,   139,   121,   137,   114,   121,
    3951      137,   121,   137,   121,   137,   319,   137,   326,   327,   328,
    3952      329,   339,   340,   341,   342,   235,   325,   338,    67,   318,
    3953      116,   319,   356,   357,   319,   319,   181,   139,   114,   319,
    3954      356,   319,   319,   235,   316,   114,   114,   234,   235,   233,
    3955      235,   139,   233,   373,   378,   181,   139,   279,   284,   225,
    3956      240,   330,   334,   181,   139,   301,   235,   244,   137,   235,
    3957      235,   299,   255,   253,   265,   281,   264,   235,   301,   137,
    3958      137,   312,   139,   144,   278,     3,   140,   215,   216,   230,
    3959      232,   235,   139,   318,   114,   318,   172,   326,   235,   114,
    3960      139,   279,   119,    35,    36,    37,    38,   233,   293,   294,
    3961      296,   139,   133,   136,   298,   139,   236,   241,   242,   279,
    3962      322,   323,   324,   114,   146,   114,   156,   114,   156,   159,
    3963      114,   156,   114,   114,   156,   156,   116,   172,   177,   181,
    3964      233,   282,   373,   377,   139,    84,    86,    90,    91,    92,
    3965      114,   116,   118,   119,   102,   103,   104,   105,   106,   107,
    3966      108,   109,   110,   111,   112,   136,   174,   159,   159,   122,
    3967      128,   129,   124,   125,    93,    94,    95,    96,   130,   131,
    3968       97,    98,   123,   132,   133,    99,   100,   134,   114,   157,
    3969      352,   353,   354,   355,   356,   115,   121,   114,   356,   357,
    3970      114,   356,   357,   139,   233,   375,   117,   139,   140,   233,
    3971      235,   368,   369,   377,   378,   140,   114,   116,   157,   326,
    3972      343,   344,   345,   346,   347,   348,   349,   350,   351,   357,
    3973      358,   359,   360,   361,   362,   363,   157,   377,   235,   140,
    3974      140,   157,   233,   235,   370,   279,   233,   357,   370,   279,
    3975      139,   139,   139,   139,    75,   116,   118,   145,   281,   285,
    3976      286,   287,   288,   289,   139,   139,   139,   139,   139,   139,
    3977      316,   115,   115,   115,   115,   115,   115,   115,   325,   338,
    3978      114,   284,   117,   215,   139,   316,   177,   283,   177,   283,
    3979      316,   116,   215,   318,   181,   139,   215,   115,    43,   116,
    3980      120,   233,   256,   257,   258,   373,   119,   121,   379,   136,
    3981      266,   119,   235,   271,   272,   273,   276,   277,   115,   121,
    3982      181,   139,   122,   172,   139,   232,   235,   270,   369,   377,
    3983      310,   311,   114,   157,   343,   115,   121,   136,   380,   281,
    3984      293,   114,   119,   281,   283,   293,   115,   121,   114,   146,
    3985      115,   135,   282,   282,   282,   151,   172,   283,   282,   139,
    3986      115,   121,   115,   114,   157,   356,   364,   365,   366,   367,
    3987      115,   121,   172,   116,   144,   150,   151,   139,   116,   144,
    3988      150,   172,   159,   159,   159,   160,   160,   161,   161,   162,
    3989      162,   162,   162,   163,   163,   164,   165,   166,   167,   168,
    3990      135,   177,   139,   353,   354,   355,   235,   352,   319,   319,
    3991      172,   283,   139,   278,   233,   357,   370,   235,   239,   117,
    3992      377,   117,   114,   139,   326,   344,   345,   346,   349,   359,
    3993      360,   361,   117,   139,   235,   343,   347,   358,   114,   319,
    3994      362,   380,   319,   319,   380,   114,   319,   362,   319,   319,
    3995      319,   319,   357,   233,   368,   378,   279,   117,   121,   117,
    3996      121,   380,   233,   370,   380,   267,   268,   269,   270,   267,
    3997      279,   172,   139,   116,   281,   135,   121,   379,   285,   116,
    3998      135,   289,    31,   217,   218,   279,   267,   144,   316,   144,
    3999      318,   114,   356,   357,   114,   356,   357,   146,   357,   181,
    4000      271,   115,   115,   115,   115,   139,   181,   215,   181,   119,
    4001      257,   258,   139,   114,   135,   157,   259,   261,   325,   326,
    4002      338,   364,   121,   137,   121,   137,   281,   255,   281,   120,
    4003      170,   171,   265,   140,   140,   144,   230,   140,   140,   267,
    4004      114,   157,   377,   140,   120,   235,   294,   172,   295,   140,
    4005      139,   139,   114,   140,   115,   323,   177,   178,   135,   137,
    4006      116,   146,   208,   209,   210,   115,   121,   115,   115,   115,
    4007      115,   172,   365,   366,   367,   235,   364,   319,   319,   119,
    4008      159,   172,   173,   176,   121,   139,   115,   121,   172,   139,
    4009      120,   170,   135,   271,   115,   115,   115,   352,   271,   115,
    4010      233,   370,   116,   122,   157,   172,   172,   235,   349,   271,
    4011      115,   115,   115,   115,   115,   115,   115,     7,   235,   343,
    4012      347,   358,   139,   139,   380,   139,   139,   140,   140,   140,
    4013      140,   284,   170,   171,   172,   317,   139,   285,   287,   120,
    4014      139,   219,   281,    43,    44,    46,    49,    50,    51,    52,
    4015       53,    54,    55,    56,    60,    64,    65,    75,   132,   178,
    4016      179,   180,   181,   182,   183,   185,   186,   198,   200,   201,
    4017      206,   220,   315,    31,   140,   136,   284,   139,   139,   115,
    4018      140,   181,   255,   137,   137,   326,   171,   235,   260,   261,
    4019      260,   281,   319,   120,   266,   379,   115,   121,   117,   117,
    4020      140,   235,   121,   380,   297,   115,   293,   223,   225,   233,
    4021      305,   306,   307,   308,   299,   115,   115,   135,   171,   114,
    4022      115,   135,   121,   144,   115,   115,   115,   364,   286,   121,
    4023      140,   176,    82,    85,    87,   144,   152,   153,   154,   151,
    4024      140,   152,   170,   140,   114,   356,   357,   140,   139,   140,
    4025      140,   140,   172,   115,   140,   114,   356,   357,   114,   362,
    4026      114,   362,   357,   234,     7,   122,   140,   172,   271,   271,
    4027      270,   274,   274,   275,   115,   121,   121,   115,   101,   127,
    4028      140,   140,   152,   285,   172,   121,   137,   220,   224,   235,
    4029      239,   114,   114,   179,   114,   114,    75,   137,    75,   137,
    4030       75,   122,   178,   114,   181,   173,   173,   135,   149,   137,
    4031      140,   139,   140,   219,   115,   172,   271,   271,   319,   115,
    4032      120,   259,   120,   139,   115,   139,   140,   316,   120,   139,
    4033      140,   140,   115,   119,   208,   117,   171,   137,   208,   210,
    4034      115,   114,   356,   357,   379,   173,   117,   140,   155,   116,
    4035      153,   155,   155,   121,   140,    90,   118,   117,   140,   115,
    4036      139,   115,   117,   117,   117,   140,   115,   139,   139,   139,
    4037      172,   172,   140,   117,   140,   140,   140,   140,   139,   139,
    4038      171,   171,   117,   117,   140,   281,   235,   177,   177,    50,
    4039      177,   139,   137,   137,   137,   177,   137,   177,    61,    62,
    4040       63,   202,   203,   204,   137,    66,   137,   319,   119,   183,
    4041      120,   137,   140,   140,   101,   276,   277,   115,   306,   121,
    4042      137,   121,   137,   120,   304,   135,   146,   115,   115,   135,
    4043      139,   120,   117,    86,   139,   153,   117,   116,   153,   116,
    4044      153,   117,   271,   117,   271,   271,   271,   140,   140,   117,
    4045      117,   115,   115,   117,   121,   101,   270,   101,   140,   117,
    4046      115,   115,   114,   115,   178,   199,   220,   137,   115,   114,
    4047      114,   181,   204,    61,    62,   172,   179,   150,   115,   115,
    4048      119,   139,   139,   305,   146,   211,   114,   137,   211,   271,
    4049      152,   139,   139,   140,   140,   140,   140,   117,   117,   139,
    4050      140,   117,   179,    47,    48,   119,   189,   190,   191,   177,
    4051      179,   140,   115,   178,   119,   191,   101,   139,   101,   139,
    4052      114,   114,   137,   120,   139,   279,   316,   120,   121,   135,
    4053      171,   115,   140,   140,   152,   152,   115,   115,   115,   115,
    4054      274,    45,   171,   187,   188,   317,   135,   139,   179,   189,
    4055      115,   137,   179,   137,   139,   115,   139,   115,   139,   101,
    4056      139,   101,   139,   137,   305,   146,   144,   212,   115,   137,
    4057      115,   117,   140,   140,   179,   101,   121,   135,   140,   213,
    4058      214,   220,   137,   178,   178,   213,   181,   205,   233,   373,
    4059      181,   205,   115,   139,   115,   139,   120,   115,   121,   117,
    4060      117,   171,   187,   190,   192,   193,   139,   137,   190,   194,
    4061      195,   140,   114,   157,   316,   364,   144,   140,   181,   205,
    4062      181,   205,   114,   137,   144,   179,   184,   120,   190,   220,
    4063      178,    59,   184,   197,   120,   190,   115,   235,   115,   140,
    4064      140,   299,   179,   184,   137,   196,   197,   184,   197,   181,
    4065      181,   115,   115,   115,   196,   140,   140,   181,   181,   140,
    4066      140
     3943      34,    35,    38,    41,    42,    66,    69,    71,    73,    74,
     3944      76,    77,    78,    87,    88,   113,   115,   121,   122,   141,
     3945     144,   156,   205,   219,   220,   221,   222,   223,   224,   225,
     3946     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
     3947     236,   238,   239,   240,   241,   242,   243,   244,   246,   247,
     3948     248,   249,   250,   251,   253,   261,   262,   289,   290,   291,
     3949     299,   302,   308,   309,   311,   313,   314,   320,   325,   329,
     3950     330,   331,   332,   333,   334,   335,   336,   356,   373,   374,
     3951     375,   376,    74,   143,   144,   156,   222,   224,   232,   234,
     3952     243,   247,   249,   290,    83,   113,   318,   319,   320,   318,
     3953     318,    74,    76,    77,    78,   142,   143,   279,   280,   300,
     3954     301,    76,    77,   280,   113,   311,    11,   206,   113,   156,
     3955     325,   330,   331,   332,   334,   335,   336,   116,   138,   225,
     3956     232,   234,   329,   333,   372,   373,   376,   377,   139,   111,
     3957     135,   283,   118,   139,   180,    76,    77,   141,   278,   139,
     3958     139,   139,   120,   139,    76,    77,   113,   156,   315,   324,
     3959     325,   326,   327,   328,   329,   333,   337,   338,   339,   340,
     3960     341,   347,     3,    30,    80,   245,     3,     5,    76,   115,
     3961     156,   224,   235,   239,   241,   250,   291,   329,   333,   376,
     3962     222,   224,   234,   243,   247,   249,   290,   329,   333,    35,
     3963     240,   240,   235,   241,   139,   240,   235,   240,   235,    77,
     3964     113,   118,   280,   291,   118,   280,   240,   235,   120,   139,
     3965     139,     0,   138,   113,   180,   318,   318,   138,   115,   232,
     3966     234,   374,   278,   278,   135,   234,   113,   156,   315,   325,
     3967     329,   115,   156,   376,   312,   237,   320,   113,   296,   113,
     3968     113,    53,   113,    39,    40,    42,    68,    74,    78,    81,
     3969      82,    83,    84,    85,    86,    90,    91,   113,   115,   123,
     3970     124,   125,   126,   140,   144,   145,   146,   147,   148,   155,
     3971     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
     3972     166,   167,   168,   169,   171,   174,   232,   282,   298,   372,
     3973     377,   234,   114,   114,   114,   114,   114,   114,   114,   115,
     3974     232,   356,   374,   115,   121,   156,   171,   224,   225,   231,
     3975     234,   238,   239,   243,   246,   247,   249,   268,   269,   273,
     3976     274,   275,   276,   290,   356,   368,   369,   370,   371,   376,
     3977     377,   113,   329,   333,   376,   113,   120,   136,   115,   118,
     3978     156,   171,   284,   284,   119,   138,   120,   136,   113,   120,
     3979     136,   120,   136,   120,   136,   318,   136,   325,   326,   327,
     3980     328,   338,   339,   340,   341,   234,   324,   337,    66,   317,
     3981     115,   318,   355,   356,   318,   318,   180,   138,   113,   318,
     3982     355,   318,   318,   234,   315,   113,   113,   233,   234,   232,
     3983     234,   138,   232,   372,   377,   180,   138,   278,   283,   224,
     3984     239,   329,   333,   180,   138,   300,   234,   243,   136,   234,
     3985     234,   298,   254,   252,   264,   280,   263,   234,   300,   136,
     3986     136,   311,   138,   143,   277,     3,   139,   214,   215,   229,
     3987     231,   234,   138,   317,   113,   317,   171,   325,   234,   113,
     3988     138,   278,   118,    35,    36,    37,   232,   292,   293,   295,
     3989     138,   132,   135,   297,   138,   235,   240,   241,   278,   321,
     3990     322,   323,   113,   145,   113,   155,   113,   155,   158,   113,
     3991     155,   113,   113,   155,   155,   115,   171,   176,   180,   232,
     3992     281,   372,   376,   138,    83,    85,    89,    90,    91,   113,
     3993     115,   117,   118,   101,   102,   103,   104,   105,   106,   107,
     3994     108,   109,   110,   111,   135,   173,   158,   158,   121,   127,
     3995     128,   123,   124,    92,    93,    94,    95,   129,   130,    96,
     3996      97,   122,   131,   132,    98,    99,   133,   113,   156,   351,
     3997     352,   353,   354,   355,   114,   120,   113,   355,   356,   113,
     3998     355,   356,   138,   232,   374,   116,   138,   139,   232,   234,
     3999     367,   368,   376,   377,   139,   113,   115,   156,   325,   342,
     4000     343,   344,   345,   346,   347,   348,   349,   350,   356,   357,
     4001     358,   359,   360,   361,   362,   156,   376,   234,   139,   139,
     4002     156,   232,   234,   369,   278,   232,   356,   369,   278,   138,
     4003     138,   138,   138,    74,   115,   117,   144,   280,   284,   285,
     4004     286,   287,   288,   138,   138,   138,   138,   138,   138,   315,
     4005     114,   114,   114,   114,   114,   114,   114,   324,   337,   113,
     4006     283,   116,   214,   138,   315,   176,   282,   176,   282,   315,
     4007     115,   214,   317,   180,   138,   214,   114,    42,   115,   119,
     4008     232,   255,   256,   257,   372,   118,   120,   378,   135,   265,
     4009     118,   234,   270,   271,   272,   275,   276,   114,   120,   180,
     4010     138,   121,   171,   138,   231,   234,   269,   368,   376,   309,
     4011     310,   113,   156,   342,   114,   120,   135,   379,   280,   292,
     4012     113,   118,   280,   282,   292,   114,   120,   113,   145,   114,
     4013     134,   281,   281,   281,   150,   171,   282,   281,   138,   114,
     4014     120,   114,   113,   156,   355,   363,   364,   365,   366,   114,
     4015     120,   171,   115,   143,   149,   150,   138,   115,   143,   149,
     4016     171,   158,   158,   158,   159,   159,   160,   160,   161,   161,
     4017     161,   161,   162,   162,   163,   164,   165,   166,   167,   134,
     4018     176,   138,   352,   353,   354,   234,   351,   318,   318,   171,
     4019     282,   138,   277,   232,   356,   369,   234,   238,   116,   376,
     4020     116,   113,   138,   325,   343,   344,   345,   348,   358,   359,
     4021     360,   116,   138,   234,   342,   346,   357,   113,   318,   361,
     4022     379,   318,   318,   379,   113,   318,   361,   318,   318,   318,
     4023     318,   356,   232,   367,   377,   278,   116,   120,   116,   120,
     4024     379,   232,   369,   379,   266,   267,   268,   269,   266,   278,
     4025     171,   138,   115,   280,   134,   120,   378,   284,   115,   134,
     4026     288,    31,   216,   217,   278,   266,   143,   315,   143,   317,
     4027     113,   355,   356,   113,   355,   356,   145,   356,   180,   270,
     4028     114,   114,   114,   114,   138,   180,   214,   180,   118,   256,
     4029     257,   138,   113,   134,   156,   258,   260,   324,   325,   337,
     4030     363,   120,   136,   120,   136,   280,   254,   280,   119,   169,
     4031     170,   264,   139,   139,   143,   229,   139,   139,   266,   113,
     4032     156,   376,   139,   119,   234,   293,   171,   294,   139,   138,
     4033     138,   113,   139,   114,   322,   176,   177,   134,   136,   115,
     4034     145,   207,   208,   209,   114,   120,   114,   114,   114,   114,
     4035     171,   364,   365,   366,   234,   363,   318,   318,   118,   158,
     4036     171,   172,   175,   120,   138,   114,   120,   171,   138,   119,
     4037     169,   134,   270,   114,   114,   114,   351,   270,   114,   232,
     4038     369,   115,   121,   156,   171,   171,   234,   348,   270,   114,
     4039     114,   114,   114,   114,   114,   114,     7,   234,   342,   346,
     4040     357,   138,   138,   379,   138,   138,   139,   139,   139,   139,
     4041     283,   169,   170,   171,   316,   138,   284,   286,   119,   138,
     4042     218,   280,    42,    43,    45,    48,    49,    50,    51,    52,
     4043      53,    54,    55,    59,    63,    64,    74,   131,   177,   178,
     4044     179,   180,   181,   182,   184,   185,   197,   199,   200,   205,
     4045     219,   314,    31,   139,   135,   283,   138,   138,   114,   139,
     4046     180,   254,   136,   136,   325,   170,   234,   259,   260,   259,
     4047     280,   318,   119,   265,   378,   114,   120,   116,   116,   139,
     4048     234,   120,   379,   296,   114,   292,   222,   224,   232,   304,
     4049     305,   306,   307,   298,   114,   114,   134,   170,   113,   114,
     4050     134,   120,   143,   114,   114,   114,   363,   285,   120,   139,
     4051     175,    81,    84,    86,   143,   151,   152,   153,   150,   139,
     4052     151,   169,   139,   113,   355,   356,   139,   138,   139,   139,
     4053     139,   171,   114,   139,   113,   355,   356,   113,   361,   113,
     4054     361,   356,   233,     7,   121,   139,   171,   270,   270,   269,
     4055     273,   273,   274,   114,   120,   120,   114,   100,   126,   139,
     4056     139,   151,   284,   171,   120,   136,   219,   223,   234,   238,
     4057     113,   113,   178,   113,   113,    74,   136,    74,   136,    74,
     4058     121,   177,   113,   180,   172,   172,   134,   148,   136,   139,
     4059     138,   139,   218,   114,   171,   270,   270,   318,   114,   119,
     4060     258,   119,   138,   114,   138,   139,   315,   119,   138,   139,
     4061     139,   114,   118,   207,   116,   170,   136,   207,   209,   114,
     4062     113,   355,   356,   378,   172,   116,   139,   154,   115,   152,
     4063     154,   154,   120,   139,    89,   117,   116,   139,   114,   138,
     4064     114,   116,   116,   116,   139,   114,   138,   138,   138,   171,
     4065     171,   139,   116,   139,   139,   139,   139,   138,   138,   170,
     4066     170,   116,   116,   139,   280,   234,   176,   176,    49,   176,
     4067     138,   136,   136,   136,   176,   136,   176,    60,    61,    62,
     4068     201,   202,   203,   136,    65,   136,   318,   118,   182,   119,
     4069     136,   139,   139,   100,   275,   276,   114,   305,   120,   136,
     4070     120,   136,   119,   303,   134,   145,   114,   114,   134,   138,
     4071     119,   116,    85,   138,   152,   116,   115,   152,   115,   152,
     4072     116,   270,   116,   270,   270,   270,   139,   139,   116,   116,
     4073     114,   114,   116,   120,   100,   269,   100,   139,   116,   114,
     4074     114,   113,   114,   177,   198,   219,   136,   114,   113,   113,
     4075     180,   203,    60,    61,   171,   178,   149,   114,   114,   118,
     4076     138,   138,   304,   145,   210,   113,   136,   210,   270,   151,
     4077     138,   138,   139,   139,   139,   139,   116,   116,   138,   139,
     4078     116,   178,    46,    47,   118,   188,   189,   190,   176,   178,
     4079     139,   114,   177,   118,   190,   100,   138,   100,   138,   113,
     4080     113,   136,   119,   138,   278,   315,   119,   120,   134,   170,
     4081     114,   139,   139,   151,   151,   114,   114,   114,   114,   273,
     4082      44,   170,   186,   187,   316,   134,   138,   178,   188,   114,
     4083     136,   178,   136,   138,   114,   138,   114,   138,   100,   138,
     4084     100,   138,   136,   304,   145,   143,   211,   114,   136,   114,
     4085     116,   139,   139,   178,   100,   120,   134,   139,   212,   213,
     4086     219,   136,   177,   177,   212,   180,   204,   232,   372,   180,
     4087     204,   114,   138,   114,   138,   119,   114,   120,   116,   116,
     4088     170,   186,   189,   191,   192,   138,   136,   189,   193,   194,
     4089     139,   113,   156,   315,   363,   143,   139,   180,   204,   180,
     4090     204,   113,   136,   143,   178,   183,   119,   189,   219,   177,
     4091      58,   183,   196,   119,   189,   114,   234,   114,   139,   139,
     4092     298,   178,   183,   136,   195,   196,   183,   196,   180,   180,
     4093     114,   114,   114,   195,   139,   139,   180,   180,   139,   139
    40674094};
    40684095
     
    75377564/* Line 1806 of yacc.c  */
    75387565#line 1895 "parser.yy"
     7566    { (yyval.tclass) = DeclarationNode::Ftype; }
     7567    break;
     7568
     7569  case 494:
     7570
     7571/* Line 1806 of yacc.c  */
     7572#line 1897 "parser.yy"
    75397573    { (yyval.tclass) = DeclarationNode::Dtype; }
    75407574    break;
    75417575
    7542   case 494:
    7543 
    7544 /* Line 1806 of yacc.c  */
    7545 #line 1897 "parser.yy"
    7546     { (yyval.tclass) = DeclarationNode::Ftype; }
    7547     break;
    7548 
    75497576  case 495:
    75507577
    75517578/* Line 1806 of yacc.c  */
    7552 #line 1899 "parser.yy"
    7553     { (yyval.tclass) = DeclarationNode::Ttype; }
     7579#line 1902 "parser.yy"
     7580    { (yyval.decl) = nullptr; }
    75547581    break;
    75557582
     
    75587585/* Line 1806 of yacc.c  */
    75597586#line 1904 "parser.yy"
    7560     { (yyval.decl) = nullptr; }
     7587    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75617588    break;
    75627589
     
    75647591
    75657592/* Line 1806 of yacc.c  */
    7566 #line 1906 "parser.yy"
    7567     { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7568     break;
    7569 
    7570   case 498:
    7571 
    7572 /* Line 1806 of yacc.c  */
    7573 #line 1911 "parser.yy"
     7593#line 1909 "parser.yy"
    75747594    {
    75757595                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75787598    break;
    75797599
     7600  case 498:
     7601
     7602/* Line 1806 of yacc.c  */
     7603#line 1914 "parser.yy"
     7604    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7605    break;
     7606
    75807607  case 499:
    75817608
    75827609/* Line 1806 of yacc.c  */
    75837610#line 1916 "parser.yy"
    7584     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7611    { (yyval.decl) = nullptr; }
    75857612    break;
    75867613
     
    75887615
    75897616/* Line 1806 of yacc.c  */
    7590 #line 1918 "parser.yy"
    7591     { (yyval.decl) = nullptr; }
    7592     break;
    7593 
    7594   case 501:
    7595 
    7596 /* Line 1806 of yacc.c  */
    7597 #line 1923 "parser.yy"
     7617#line 1921 "parser.yy"
    75987618    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    75997619    break;
    76007620
     7621  case 502:
     7622
     7623/* Line 1806 of yacc.c  */
     7624#line 1924 "parser.yy"
     7625    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     7626    break;
     7627
    76017628  case 503:
    76027629
    76037630/* Line 1806 of yacc.c  */
    76047631#line 1926 "parser.yy"
    7605     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     7632    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    76067633    break;
    76077634
     
    76097636
    76107637/* Line 1806 of yacc.c  */
    7611 #line 1928 "parser.yy"
    7612     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     7638#line 1931 "parser.yy"
     7639    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76137640    break;
    76147641
     
    76177644/* Line 1806 of yacc.c  */
    76187645#line 1933 "parser.yy"
    7619     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7646    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76207647    break;
    76217648
     
    76247651/* Line 1806 of yacc.c  */
    76257652#line 1935 "parser.yy"
    7626     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7653    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76277654    break;
    76287655
     
    76307657
    76317658/* Line 1806 of yacc.c  */
    7632 #line 1937 "parser.yy"
    7633     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     7659#line 1940 "parser.yy"
     7660    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76347661    break;
    76357662
     
    76387665/* Line 1806 of yacc.c  */
    76397666#line 1942 "parser.yy"
    7640     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     7667    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76417668    break;
    76427669
     
    76447671
    76457672/* Line 1806 of yacc.c  */
    7646 #line 1944 "parser.yy"
    7647     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7648     break;
    7649 
    7650   case 510:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1949 "parser.yy"
     7673#line 1947 "parser.yy"
    76547674    {
    76557675                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76587678    break;
    76597679
    7660   case 511:
    7661 
    7662 /* Line 1806 of yacc.c  */
    7663 #line 1954 "parser.yy"
     7680  case 510:
     7681
     7682/* Line 1806 of yacc.c  */
     7683#line 1952 "parser.yy"
    76647684    {
    76657685                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76687688    break;
    76697689
    7670   case 512:
    7671 
    7672 /* Line 1806 of yacc.c  */
    7673 #line 1962 "parser.yy"
     7690  case 511:
     7691
     7692/* Line 1806 of yacc.c  */
     7693#line 1960 "parser.yy"
    76747694    {
    76757695                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76787698    break;
    76797699
    7680   case 513:
    7681 
    7682 /* Line 1806 of yacc.c  */
    7683 #line 1967 "parser.yy"
     7700  case 512:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1965 "parser.yy"
    76847704    {
    76857705                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    76887708    break;
    76897709
    7690   case 514:
    7691 
    7692 /* Line 1806 of yacc.c  */
    7693 #line 1972 "parser.yy"
     7710  case 513:
     7711
     7712/* Line 1806 of yacc.c  */
     7713#line 1970 "parser.yy"
    76947714    {
    76957715                        typedefTable.leaveTrait();
     
    76997719    break;
    77007720
    7701   case 516:
    7702 
    7703 /* Line 1806 of yacc.c  */
    7704 #line 1982 "parser.yy"
     7721  case 515:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1980 "parser.yy"
    77057725    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77067726    break;
    77077727
    7708   case 519:
    7709 
    7710 /* Line 1806 of yacc.c  */
    7711 #line 1992 "parser.yy"
     7728  case 518:
     7729
     7730/* Line 1806 of yacc.c  */
     7731#line 1990 "parser.yy"
    77127732    {
    77137733                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77167736    break;
    77177737
    7718   case 520:
    7719 
    7720 /* Line 1806 of yacc.c  */
    7721 #line 1997 "parser.yy"
     7738  case 519:
     7739
     7740/* Line 1806 of yacc.c  */
     7741#line 1995 "parser.yy"
    77227742    {
    77237743                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77267746    break;
    77277747
    7728   case 521:
    7729 
    7730 /* Line 1806 of yacc.c  */
    7731 #line 2002 "parser.yy"
     7748  case 520:
     7749
     7750/* Line 1806 of yacc.c  */
     7751#line 2000 "parser.yy"
    77327752    {
    77337753                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77367756    break;
    77377757
    7738   case 522:
    7739 
    7740 /* Line 1806 of yacc.c  */
    7741 #line 2010 "parser.yy"
     7758  case 521:
     7759
     7760/* Line 1806 of yacc.c  */
     7761#line 2008 "parser.yy"
    77427762    {
    77437763                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77467766    break;
    77477767
    7748   case 523:
    7749 
    7750 /* Line 1806 of yacc.c  */
    7751 #line 2015 "parser.yy"
     7768  case 522:
     7769
     7770/* Line 1806 of yacc.c  */
     7771#line 2013 "parser.yy"
    77527772    {
    77537773                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77567776    break;
    77577777
     7778  case 523:
     7779
     7780/* Line 1806 of yacc.c  */
     7781#line 2023 "parser.yy"
     7782    {}
     7783    break;
     7784
    77587785  case 524:
    77597786
    77607787/* Line 1806 of yacc.c  */
    77617788#line 2025 "parser.yy"
     7789    { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);       }
     7790    break;
     7791
     7792  case 526:
     7793
     7794/* Line 1806 of yacc.c  */
     7795#line 2031 "parser.yy"
     7796    { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7797    break;
     7798
     7799  case 527:
     7800
     7801/* Line 1806 of yacc.c  */
     7802#line 2036 "parser.yy"
     7803    { (yyval.decl) = nullptr; }
     7804    break;
     7805
     7806  case 531:
     7807
     7808/* Line 1806 of yacc.c  */
     7809#line 2044 "parser.yy"
    77627810    {}
    77637811    break;
    77647812
    7765   case 525:
    7766 
    7767 /* Line 1806 of yacc.c  */
    7768 #line 2027 "parser.yy"
    7769     { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);       }
    7770     break;
    7771 
    7772   case 527:
    7773 
    7774 /* Line 1806 of yacc.c  */
    7775 #line 2033 "parser.yy"
    7776     { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    7777     break;
    7778 
    7779   case 528:
    7780 
    7781 /* Line 1806 of yacc.c  */
    7782 #line 2038 "parser.yy"
    7783     { (yyval.decl) = nullptr; }
    7784     break;
    7785 
    77867813  case 532:
    77877814
    77887815/* Line 1806 of yacc.c  */
    77897816#line 2046 "parser.yy"
    7790     {}
    7791     break;
    7792 
    7793   case 533:
    7794 
    7795 /* Line 1806 of yacc.c  */
    7796 #line 2048 "parser.yy"
    77977817    {
    77987818                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    78017821    break;
    78027822
    7803   case 534:
    7804 
    7805 /* Line 1806 of yacc.c  */
    7806 #line 2053 "parser.yy"
     7823  case 533:
     7824
     7825/* Line 1806 of yacc.c  */
     7826#line 2051 "parser.yy"
    78077827    {
    78087828                        linkage = linkageStack.top();
     
    78127832    break;
    78137833
    7814   case 535:
    7815 
    7816 /* Line 1806 of yacc.c  */
    7817 #line 2059 "parser.yy"
     7834  case 534:
     7835
     7836/* Line 1806 of yacc.c  */
     7837#line 2057 "parser.yy"
    78187838    {   // mark all fields in list
    78197839                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    78237843    break;
    78247844
    7825   case 537:
    7826 
    7827 /* Line 1806 of yacc.c  */
    7828 #line 2074 "parser.yy"
     7845  case 536:
     7846
     7847/* Line 1806 of yacc.c  */
     7848#line 2072 "parser.yy"
    78297849    {
    78307850                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78347854    break;
    78357855
    7836   case 538:
    7837 
    7838 /* Line 1806 of yacc.c  */
    7839 #line 2080 "parser.yy"
     7856  case 537:
     7857
     7858/* Line 1806 of yacc.c  */
     7859#line 2078 "parser.yy"
    78407860    {
    78417861                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78457865    break;
    78467866
    7847   case 539:
    7848 
    7849 /* Line 1806 of yacc.c  */
    7850 #line 2089 "parser.yy"
     7867  case 538:
     7868
     7869/* Line 1806 of yacc.c  */
     7870#line 2087 "parser.yy"
    78517871    {
    78527872                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78567876    break;
    78577877
    7858   case 540:
    7859 
    7860 /* Line 1806 of yacc.c  */
    7861 #line 2095 "parser.yy"
     7878  case 539:
     7879
     7880/* Line 1806 of yacc.c  */
     7881#line 2093 "parser.yy"
    78627882    {
    78637883                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78677887    break;
    78687888
    7869   case 541:
    7870 
    7871 /* Line 1806 of yacc.c  */
    7872 #line 2101 "parser.yy"
     7889  case 540:
     7890
     7891/* Line 1806 of yacc.c  */
     7892#line 2099 "parser.yy"
    78737893    {
    78747894                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78787898    break;
    78797899
    7880   case 542:
    7881 
    7882 /* Line 1806 of yacc.c  */
    7883 #line 2107 "parser.yy"
     7900  case 541:
     7901
     7902/* Line 1806 of yacc.c  */
     7903#line 2105 "parser.yy"
    78847904    {
    78857905                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78897909    break;
    78907910
    7891   case 543:
    7892 
    7893 /* Line 1806 of yacc.c  */
    7894 #line 2113 "parser.yy"
     7911  case 542:
     7912
     7913/* Line 1806 of yacc.c  */
     7914#line 2111 "parser.yy"
    78957915    {
    78967916                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79007920    break;
    79017921
    7902   case 544:
    7903 
    7904 /* Line 1806 of yacc.c  */
    7905 #line 2121 "parser.yy"
     7922  case 543:
     7923
     7924/* Line 1806 of yacc.c  */
     7925#line 2119 "parser.yy"
    79067926    {
    79077927                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79117931    break;
    79127932
    7913   case 545:
    7914 
    7915 /* Line 1806 of yacc.c  */
    7916 #line 2127 "parser.yy"
     7933  case 544:
     7934
     7935/* Line 1806 of yacc.c  */
     7936#line 2125 "parser.yy"
    79177937    {
    79187938                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79227942    break;
    79237943
    7924   case 546:
    7925 
    7926 /* Line 1806 of yacc.c  */
    7927 #line 2135 "parser.yy"
     7944  case 545:
     7945
     7946/* Line 1806 of yacc.c  */
     7947#line 2133 "parser.yy"
    79287948    {
    79297949                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79337953    break;
    79347954
    7935   case 547:
    7936 
    7937 /* Line 1806 of yacc.c  */
    7938 #line 2141 "parser.yy"
     7955  case 546:
     7956
     7957/* Line 1806 of yacc.c  */
     7958#line 2139 "parser.yy"
    79397959    {
    79407960                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79447964    break;
    79457965
     7966  case 550:
     7967
     7968/* Line 1806 of yacc.c  */
     7969#line 2154 "parser.yy"
     7970    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7971    break;
     7972
    79467973  case 551:
    79477974
    79487975/* Line 1806 of yacc.c  */
    7949 #line 2156 "parser.yy"
    7950     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7976#line 2159 "parser.yy"
     7977    { (yyval.constant) = nullptr; }
    79517978    break;
    79527979
     
    79557982/* Line 1806 of yacc.c  */
    79567983#line 2161 "parser.yy"
    7957     { (yyval.constant) = nullptr; }
     7984    { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
    79587985    break;
    79597986
     
    79617988
    79627989/* Line 1806 of yacc.c  */
    7963 #line 2163 "parser.yy"
    7964     { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
    7965     break;
    7966 
    7967   case 554:
    7968 
    7969 /* Line 1806 of yacc.c  */
    7970 #line 2168 "parser.yy"
     7990#line 2166 "parser.yy"
    79717991    { (yyval.decl) = nullptr; }
    79727992    break;
    79737993
     7994  case 556:
     7995
     7996/* Line 1806 of yacc.c  */
     7997#line 2173 "parser.yy"
     7998    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7999    break;
     8000
    79748001  case 557:
    79758002
    79768003/* Line 1806 of yacc.c  */
    7977 #line 2175 "parser.yy"
    7978     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7979     break;
    7980 
    7981   case 558:
    7982 
    7983 /* Line 1806 of yacc.c  */
    7984 #line 2181 "parser.yy"
     8004#line 2179 "parser.yy"
    79858005    { (yyval.decl) = nullptr; }
    79868006    break;
    79878007
     8008  case 562:
     8009
     8010/* Line 1806 of yacc.c  */
     8011#line 2190 "parser.yy"
     8012    { delete (yyvsp[(3) - (4)].en); }
     8013    break;
     8014
    79888015  case 563:
    79898016
    79908017/* Line 1806 of yacc.c  */
    7991 #line 2192 "parser.yy"
    7992     { delete (yyvsp[(3) - (4)].en); }
     8018#line 2194 "parser.yy"
     8019    { delete (yyvsp[(1) - (1)].tok); }
    79938020    break;
    79948021
     
    79968023
    79978024/* Line 1806 of yacc.c  */
     8025#line 2195 "parser.yy"
     8026    { delete (yyvsp[(1) - (1)].decl); }
     8027    break;
     8028
     8029  case 565:
     8030
     8031/* Line 1806 of yacc.c  */
    79988032#line 2196 "parser.yy"
    7999     { delete (yyvsp[(1) - (1)].tok); }
    8000     break;
    8001 
    8002   case 565:
     8033    { delete (yyvsp[(1) - (1)].decl); }
     8034    break;
     8035
     8036  case 566:
    80038037
    80048038/* Line 1806 of yacc.c  */
     
    80078041    break;
    80088042
    8009   case 566:
    8010 
    8011 /* Line 1806 of yacc.c  */
    8012 #line 2198 "parser.yy"
    8013     { delete (yyvsp[(1) - (1)].decl); }
    8014     break;
    8015 
    80168043  case 567:
    80178044
    80188045/* Line 1806 of yacc.c  */
    8019 #line 2199 "parser.yy"
    8020     { delete (yyvsp[(1) - (1)].decl); }
    8021     break;
    8022 
    8023   case 568:
    8024 
    8025 /* Line 1806 of yacc.c  */
    8026 #line 2234 "parser.yy"
     8046#line 2232 "parser.yy"
     8047    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8048    break;
     8049
     8050  case 569:
     8051
     8052/* Line 1806 of yacc.c  */
     8053#line 2235 "parser.yy"
    80278054    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80288055    break;
     
    80388065
    80398066/* Line 1806 of yacc.c  */
    8040 #line 2239 "parser.yy"
    8041     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8042     break;
    8043 
    8044   case 572:
    8045 
    8046 /* Line 1806 of yacc.c  */
    8047 #line 2244 "parser.yy"
     8067#line 2242 "parser.yy"
    80488068    {
    80498069                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80528072    break;
    80538073
     8074  case 572:
     8075
     8076/* Line 1806 of yacc.c  */
     8077#line 2247 "parser.yy"
     8078    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8079    break;
     8080
    80548081  case 573:
    80558082
    80568083/* Line 1806 of yacc.c  */
    8057 #line 2249 "parser.yy"
     8084#line 2252 "parser.yy"
     8085    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8086    break;
     8087
     8088  case 574:
     8089
     8090/* Line 1806 of yacc.c  */
     8091#line 2254 "parser.yy"
     8092    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8093    break;
     8094
     8095  case 575:
     8096
     8097/* Line 1806 of yacc.c  */
     8098#line 2256 "parser.yy"
    80588099    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80598100    break;
    80608101
    8061   case 574:
    8062 
    8063 /* Line 1806 of yacc.c  */
    8064 #line 2254 "parser.yy"
    8065     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8066     break;
    8067 
    8068   case 575:
    8069 
    8070 /* Line 1806 of yacc.c  */
    8071 #line 2256 "parser.yy"
    8072     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8073     break;
    8074 
    80758102  case 576:
    80768103
    80778104/* Line 1806 of yacc.c  */
    8078 #line 2258 "parser.yy"
    8079     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8105#line 2261 "parser.yy"
     8106    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80808107    break;
    80818108
     
    80848111/* Line 1806 of yacc.c  */
    80858112#line 2263 "parser.yy"
    8086     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8113    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80878114    break;
    80888115
     
    80988125/* Line 1806 of yacc.c  */
    80998126#line 2267 "parser.yy"
     8127    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8128    break;
     8129
     8130  case 580:
     8131
     8132/* Line 1806 of yacc.c  */
     8133#line 2272 "parser.yy"
     8134    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8135    break;
     8136
     8137  case 581:
     8138
     8139/* Line 1806 of yacc.c  */
     8140#line 2274 "parser.yy"
     8141    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8142    break;
     8143
     8144  case 582:
     8145
     8146/* Line 1806 of yacc.c  */
     8147#line 2283 "parser.yy"
     8148    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8149    break;
     8150
     8151  case 584:
     8152
     8153/* Line 1806 of yacc.c  */
     8154#line 2286 "parser.yy"
     8155    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8156    break;
     8157
     8158  case 585:
     8159
     8160/* Line 1806 of yacc.c  */
     8161#line 2291 "parser.yy"
     8162    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8163    break;
     8164
     8165  case 586:
     8166
     8167/* Line 1806 of yacc.c  */
     8168#line 2293 "parser.yy"
     8169    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8170    break;
     8171
     8172  case 587:
     8173
     8174/* Line 1806 of yacc.c  */
     8175#line 2295 "parser.yy"
     8176    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8177    break;
     8178
     8179  case 588:
     8180
     8181/* Line 1806 of yacc.c  */
     8182#line 2300 "parser.yy"
     8183    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8184    break;
     8185
     8186  case 589:
     8187
     8188/* Line 1806 of yacc.c  */
     8189#line 2302 "parser.yy"
     8190    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8191    break;
     8192
     8193  case 590:
     8194
     8195/* Line 1806 of yacc.c  */
     8196#line 2304 "parser.yy"
     8197    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8198    break;
     8199
     8200  case 591:
     8201
     8202/* Line 1806 of yacc.c  */
     8203#line 2309 "parser.yy"
    81008204    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8101     break;
    8102 
    8103   case 580:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2269 "parser.yy"
    8107     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8108     break;
    8109 
    8110   case 581:
    8111 
    8112 /* Line 1806 of yacc.c  */
    8113 #line 2274 "parser.yy"
    8114     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8115     break;
    8116 
    8117   case 582:
    8118 
    8119 /* Line 1806 of yacc.c  */
    8120 #line 2276 "parser.yy"
    8121     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8122     break;
    8123 
    8124   case 583:
    8125 
    8126 /* Line 1806 of yacc.c  */
    8127 #line 2285 "parser.yy"
    8128     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8129     break;
    8130 
    8131   case 585:
    8132 
    8133 /* Line 1806 of yacc.c  */
    8134 #line 2288 "parser.yy"
    8135     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8136     break;
    8137 
    8138   case 586:
    8139 
    8140 /* Line 1806 of yacc.c  */
    8141 #line 2293 "parser.yy"
    8142     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8143     break;
    8144 
    8145   case 587:
    8146 
    8147 /* Line 1806 of yacc.c  */
    8148 #line 2295 "parser.yy"
    8149     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8150     break;
    8151 
    8152   case 588:
    8153 
    8154 /* Line 1806 of yacc.c  */
    8155 #line 2297 "parser.yy"
    8156     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8157     break;
    8158 
    8159   case 589:
    8160 
    8161 /* Line 1806 of yacc.c  */
    8162 #line 2302 "parser.yy"
    8163     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8164     break;
    8165 
    8166   case 590:
    8167 
    8168 /* Line 1806 of yacc.c  */
    8169 #line 2304 "parser.yy"
    8170     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8171     break;
    8172 
    8173   case 591:
    8174 
    8175 /* Line 1806 of yacc.c  */
    8176 #line 2306 "parser.yy"
    8177     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81788205    break;
    81798206
     
    81898216/* Line 1806 of yacc.c  */
    81908217#line 2313 "parser.yy"
     8218    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8219    break;
     8220
     8221  case 597:
     8222
     8223/* Line 1806 of yacc.c  */
     8224#line 2328 "parser.yy"
     8225    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8226    break;
     8227
     8228  case 598:
     8229
     8230/* Line 1806 of yacc.c  */
     8231#line 2330 "parser.yy"
     8232    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8233    break;
     8234
     8235  case 599:
     8236
     8237/* Line 1806 of yacc.c  */
     8238#line 2332 "parser.yy"
     8239    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8240    break;
     8241
     8242  case 600:
     8243
     8244/* Line 1806 of yacc.c  */
     8245#line 2337 "parser.yy"
     8246    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8247    break;
     8248
     8249  case 601:
     8250
     8251/* Line 1806 of yacc.c  */
     8252#line 2339 "parser.yy"
     8253    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8254    break;
     8255
     8256  case 602:
     8257
     8258/* Line 1806 of yacc.c  */
     8259#line 2341 "parser.yy"
     8260    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8261    break;
     8262
     8263  case 603:
     8264
     8265/* Line 1806 of yacc.c  */
     8266#line 2346 "parser.yy"
    81918267    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8192     break;
    8193 
    8194   case 594:
    8195 
    8196 /* Line 1806 of yacc.c  */
    8197 #line 2315 "parser.yy"
    8198     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8199     break;
    8200 
    8201   case 598:
    8202 
    8203 /* Line 1806 of yacc.c  */
    8204 #line 2330 "parser.yy"
    8205     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8206     break;
    8207 
    8208   case 599:
    8209 
    8210 /* Line 1806 of yacc.c  */
    8211 #line 2332 "parser.yy"
    8212     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8213     break;
    8214 
    8215   case 600:
    8216 
    8217 /* Line 1806 of yacc.c  */
    8218 #line 2334 "parser.yy"
    8219     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8220     break;
    8221 
    8222   case 601:
    8223 
    8224 /* Line 1806 of yacc.c  */
    8225 #line 2339 "parser.yy"
    8226     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8227     break;
    8228 
    8229   case 602:
    8230 
    8231 /* Line 1806 of yacc.c  */
    8232 #line 2341 "parser.yy"
    8233     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8234     break;
    8235 
    8236   case 603:
    8237 
    8238 /* Line 1806 of yacc.c  */
    8239 #line 2343 "parser.yy"
    8240     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82418268    break;
    82428269
     
    82528279/* Line 1806 of yacc.c  */
    82538280#line 2350 "parser.yy"
    8254     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8281    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82558282    break;
    82568283
     
    82588285
    82598286/* Line 1806 of yacc.c  */
    8260 #line 2352 "parser.yy"
    8261     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8262     break;
    8263 
    8264   case 607:
    8265 
    8266 /* Line 1806 of yacc.c  */
    8267 #line 2367 "parser.yy"
     8287#line 2365 "parser.yy"
     8288    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8289    break;
     8290
     8291  case 608:
     8292
     8293/* Line 1806 of yacc.c  */
     8294#line 2368 "parser.yy"
    82688295    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82698296    break;
     
    82768303    break;
    82778304
    8278   case 610:
    8279 
    8280 /* Line 1806 of yacc.c  */
    8281 #line 2372 "parser.yy"
    8282     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8305  case 611:
     8306
     8307/* Line 1806 of yacc.c  */
     8308#line 2376 "parser.yy"
     8309    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82838310    break;
    82848311
     
    82868313
    82878314/* Line 1806 of yacc.c  */
    8288 #line 2378 "parser.yy"
     8315#line 2381 "parser.yy"
     8316    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8317    break;
     8318
     8319  case 613:
     8320
     8321/* Line 1806 of yacc.c  */
     8322#line 2383 "parser.yy"
     8323    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8324    break;
     8325
     8326  case 614:
     8327
     8328/* Line 1806 of yacc.c  */
     8329#line 2385 "parser.yy"
    82898330    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82908331    break;
    82918332
    8292   case 613:
    8293 
    8294 /* Line 1806 of yacc.c  */
    8295 #line 2383 "parser.yy"
    8296     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8297     break;
    8298 
    8299   case 614:
    8300 
    8301 /* Line 1806 of yacc.c  */
    8302 #line 2385 "parser.yy"
    8303     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8304     break;
    8305 
    83068333  case 615:
    83078334
    83088335/* Line 1806 of yacc.c  */
    8309 #line 2387 "parser.yy"
    8310     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8336#line 2390 "parser.yy"
     8337    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83118338    break;
    83128339
     
    83158342/* Line 1806 of yacc.c  */
    83168343#line 2392 "parser.yy"
    8317     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8344    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83188345    break;
    83198346
     
    83298356/* Line 1806 of yacc.c  */
    83308357#line 2396 "parser.yy"
    8331     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8358    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83328359    break;
    83338360
     
    83358362
    83368363/* Line 1806 of yacc.c  */
    8337 #line 2398 "parser.yy"
     8364#line 2401 "parser.yy"
     8365    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8366    break;
     8367
     8368  case 620:
     8369
     8370/* Line 1806 of yacc.c  */
     8371#line 2403 "parser.yy"
     8372    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8373    break;
     8374
     8375  case 621:
     8376
     8377/* Line 1806 of yacc.c  */
     8378#line 2405 "parser.yy"
    83388379    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83398380    break;
    83408381
    8341   case 620:
    8342 
    8343 /* Line 1806 of yacc.c  */
    8344 #line 2403 "parser.yy"
    8345     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8346     break;
    8347 
    8348   case 621:
    8349 
    8350 /* Line 1806 of yacc.c  */
    8351 #line 2405 "parser.yy"
    8352     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8353     break;
    8354 
    83558382  case 622:
    83568383
    83578384/* Line 1806 of yacc.c  */
    8358 #line 2407 "parser.yy"
    8359     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8360     break;
    8361 
    8362   case 623:
    8363 
    8364 /* Line 1806 of yacc.c  */
    8365 #line 2417 "parser.yy"
     8385#line 2415 "parser.yy"
     8386    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8387    break;
     8388
     8389  case 624:
     8390
     8391/* Line 1806 of yacc.c  */
     8392#line 2418 "parser.yy"
    83668393    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83678394    break;
     
    83778404
    83788405/* Line 1806 of yacc.c  */
    8379 #line 2422 "parser.yy"
    8380     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8406#line 2425 "parser.yy"
     8407    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83818408    break;
    83828409
     
    83858412/* Line 1806 of yacc.c  */
    83868413#line 2427 "parser.yy"
    8387     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8414    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83888415    break;
    83898416
     
    83928419/* Line 1806 of yacc.c  */
    83938420#line 2429 "parser.yy"
    8394     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8421    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83958422    break;
    83968423
     
    83988425
    83998426/* Line 1806 of yacc.c  */
    8400 #line 2431 "parser.yy"
    8401     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8427#line 2434 "parser.yy"
     8428    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84028429    break;
    84038430
     
    84068433/* Line 1806 of yacc.c  */
    84078434#line 2436 "parser.yy"
    8408     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8435    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84098436    break;
    84108437
     
    84208447/* Line 1806 of yacc.c  */
    84218448#line 2440 "parser.yy"
    8422     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8449    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84238450    break;
    84248451
     
    84268453
    84278454/* Line 1806 of yacc.c  */
    8428 #line 2442 "parser.yy"
     8455#line 2445 "parser.yy"
     8456    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8457    break;
     8458
     8459  case 634:
     8460
     8461/* Line 1806 of yacc.c  */
     8462#line 2447 "parser.yy"
     8463    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8464    break;
     8465
     8466  case 635:
     8467
     8468/* Line 1806 of yacc.c  */
     8469#line 2449 "parser.yy"
    84298470    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84308471    break;
    84318472
    8432   case 634:
    8433 
    8434 /* Line 1806 of yacc.c  */
    8435 #line 2447 "parser.yy"
    8436     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8437     break;
    8438 
    8439   case 635:
    8440 
    8441 /* Line 1806 of yacc.c  */
    8442 #line 2449 "parser.yy"
    8443     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8444     break;
    8445 
    84468473  case 636:
    84478474
    84488475/* Line 1806 of yacc.c  */
    8449 #line 2451 "parser.yy"
    8450     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8451     break;
    8452 
    8453   case 637:
    8454 
    8455 /* Line 1806 of yacc.c  */
    8456 #line 2482 "parser.yy"
     8476#line 2480 "parser.yy"
     8477    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8478    break;
     8479
     8480  case 638:
     8481
     8482/* Line 1806 of yacc.c  */
     8483#line 2483 "parser.yy"
    84578484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84588485    break;
     
    84688495
    84698496/* Line 1806 of yacc.c  */
    8470 #line 2487 "parser.yy"
    8471     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8472     break;
    8473 
    8474   case 641:
    8475 
    8476 /* Line 1806 of yacc.c  */
    8477 #line 2492 "parser.yy"
     8497#line 2490 "parser.yy"
    84788498    {
    84798499                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84828502    break;
    84838503
    8484   case 642:
    8485 
    8486 /* Line 1806 of yacc.c  */
    8487 #line 2497 "parser.yy"
     8504  case 641:
     8505
     8506/* Line 1806 of yacc.c  */
     8507#line 2495 "parser.yy"
    84888508    {
    84898509                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84928512    break;
    84938513
     8514  case 642:
     8515
     8516/* Line 1806 of yacc.c  */
     8517#line 2503 "parser.yy"
     8518    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8519    break;
     8520
    84948521  case 643:
    84958522
    84968523/* Line 1806 of yacc.c  */
    84978524#line 2505 "parser.yy"
    8498     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8525    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84998526    break;
    85008527
     
    85038530/* Line 1806 of yacc.c  */
    85048531#line 2507 "parser.yy"
    8505     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8532    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85068533    break;
    85078534
     
    85098536
    85108537/* Line 1806 of yacc.c  */
    8511 #line 2509 "parser.yy"
    8512     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8538#line 2512 "parser.yy"
     8539    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85138540    break;
    85148541
     
    85178544/* Line 1806 of yacc.c  */
    85188545#line 2514 "parser.yy"
    8519     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8546    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85208547    break;
    85218548
     
    85238550
    85248551/* Line 1806 of yacc.c  */
    8525 #line 2516 "parser.yy"
    8526     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8552#line 2519 "parser.yy"
     8553    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85278554    break;
    85288555
     
    85318558/* Line 1806 of yacc.c  */
    85328559#line 2521 "parser.yy"
    8533     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8534     break;
    8535 
    8536   case 649:
    8537 
    8538 /* Line 1806 of yacc.c  */
    8539 #line 2523 "parser.yy"
    85408560    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8561    break;
     8562
     8563  case 650:
     8564
     8565/* Line 1806 of yacc.c  */
     8566#line 2536 "parser.yy"
     8567    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85418568    break;
    85428569
     
    85518578
    85528579/* Line 1806 of yacc.c  */
    8553 #line 2540 "parser.yy"
    8554     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8580#line 2543 "parser.yy"
     8581    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85558582    break;
    85568583
     
    85598586/* Line 1806 of yacc.c  */
    85608587#line 2545 "parser.yy"
    8561     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8588    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85628589    break;
    85638590
     
    85668593/* Line 1806 of yacc.c  */
    85678594#line 2547 "parser.yy"
    8568     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8595    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85698596    break;
    85708597
     
    85738600/* Line 1806 of yacc.c  */
    85748601#line 2549 "parser.yy"
    8575     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8602    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85768603    break;
    85778604
     
    85808607/* Line 1806 of yacc.c  */
    85818608#line 2551 "parser.yy"
    8582     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8583     break;
    8584 
    8585   case 657:
    8586 
    8587 /* Line 1806 of yacc.c  */
    8588 #line 2553 "parser.yy"
    85898609    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8610    break;
     8611
     8612  case 658:
     8613
     8614/* Line 1806 of yacc.c  */
     8615#line 2557 "parser.yy"
     8616    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85908617    break;
    85918618
     
    86018628/* Line 1806 of yacc.c  */
    86028629#line 2561 "parser.yy"
    8603     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8630    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86048631    break;
    86058632
     
    86078634
    86088635/* Line 1806 of yacc.c  */
    8609 #line 2563 "parser.yy"
     8636#line 2566 "parser.yy"
     8637    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8638    break;
     8639
     8640  case 662:
     8641
     8642/* Line 1806 of yacc.c  */
     8643#line 2568 "parser.yy"
     8644    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8645    break;
     8646
     8647  case 663:
     8648
     8649/* Line 1806 of yacc.c  */
     8650#line 2570 "parser.yy"
    86108651    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86118652    break;
    86128653
    8613   case 662:
    8614 
    8615 /* Line 1806 of yacc.c  */
    8616 #line 2568 "parser.yy"
    8617     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    8618     break;
    8619 
    8620   case 663:
    8621 
    8622 /* Line 1806 of yacc.c  */
    8623 #line 2570 "parser.yy"
    8624     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8625     break;
    8626 
    86278654  case 664:
    86288655
    86298656/* Line 1806 of yacc.c  */
    8630 #line 2572 "parser.yy"
    8631     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8657#line 2576 "parser.yy"
     8658    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86328659    break;
    86338660
     
    86368663/* Line 1806 of yacc.c  */
    86378664#line 2578 "parser.yy"
    8638     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8639     break;
    8640 
    8641   case 666:
    8642 
    8643 /* Line 1806 of yacc.c  */
    8644 #line 2580 "parser.yy"
    86458665    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86468666    break;
    86478667
     8668  case 667:
     8669
     8670/* Line 1806 of yacc.c  */
     8671#line 2584 "parser.yy"
     8672    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8673    break;
     8674
    86488675  case 668:
    86498676
    86508677/* Line 1806 of yacc.c  */
    86518678#line 2586 "parser.yy"
    8652     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8679    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86538680    break;
    86548681
     
    86578684/* Line 1806 of yacc.c  */
    86588685#line 2588 "parser.yy"
    8659     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8686    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86608687    break;
    86618688
     
    86648691/* Line 1806 of yacc.c  */
    86658692#line 2590 "parser.yy"
    8666     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8667     break;
    8668 
    8669   case 671:
    8670 
    8671 /* Line 1806 of yacc.c  */
    8672 #line 2592 "parser.yy"
    86738693    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8694    break;
     8695
     8696  case 672:
     8697
     8698/* Line 1806 of yacc.c  */
     8699#line 2605 "parser.yy"
     8700    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86748701    break;
    86758702
     
    86848711
    86858712/* Line 1806 of yacc.c  */
    8686 #line 2609 "parser.yy"
    8687     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8713#line 2612 "parser.yy"
     8714    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86888715    break;
    86898716
     
    86928719/* Line 1806 of yacc.c  */
    86938720#line 2614 "parser.yy"
    8694     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8721    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86958722    break;
    86968723
     
    86998726/* Line 1806 of yacc.c  */
    87008727#line 2616 "parser.yy"
    8701     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8728    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87028729    break;
    87038730
     
    87068733/* Line 1806 of yacc.c  */
    87078734#line 2618 "parser.yy"
    8708     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8735    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87098736    break;
    87108737
     
    87138740/* Line 1806 of yacc.c  */
    87148741#line 2620 "parser.yy"
    8715     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8716     break;
    8717 
    8718   case 679:
    8719 
    8720 /* Line 1806 of yacc.c  */
    8721 #line 2622 "parser.yy"
    87228742    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8743    break;
     8744
     8745  case 680:
     8746
     8747/* Line 1806 of yacc.c  */
     8748#line 2626 "parser.yy"
     8749    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87238750    break;
    87248751
     
    87348761/* Line 1806 of yacc.c  */
    87358762#line 2630 "parser.yy"
    8736     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8763    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87378764    break;
    87388765
     
    87408767
    87418768/* Line 1806 of yacc.c  */
    8742 #line 2632 "parser.yy"
     8769#line 2635 "parser.yy"
     8770    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8771    break;
     8772
     8773  case 684:
     8774
     8775/* Line 1806 of yacc.c  */
     8776#line 2637 "parser.yy"
     8777    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8778    break;
     8779
     8780  case 685:
     8781
     8782/* Line 1806 of yacc.c  */
     8783#line 2639 "parser.yy"
    87438784    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87448785    break;
    87458786
    8746   case 684:
    8747 
    8748 /* Line 1806 of yacc.c  */
    8749 #line 2637 "parser.yy"
    8750     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    8751     break;
    8752 
    8753   case 685:
    8754 
    8755 /* Line 1806 of yacc.c  */
    8756 #line 2639 "parser.yy"
    8757     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8758     break;
    8759 
    8760   case 686:
    8761 
    8762 /* Line 1806 of yacc.c  */
    8763 #line 2641 "parser.yy"
    8764     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8765     break;
    8766 
    8767   case 688:
    8768 
    8769 /* Line 1806 of yacc.c  */
    8770 #line 2648 "parser.yy"
     8787  case 687:
     8788
     8789/* Line 1806 of yacc.c  */
     8790#line 2646 "parser.yy"
    87718791    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87728792    break;
    87738793
     8794  case 689:
     8795
     8796/* Line 1806 of yacc.c  */
     8797#line 2657 "parser.yy"
     8798    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8799    break;
     8800
    87748801  case 690:
    87758802
    87768803/* Line 1806 of yacc.c  */
    8777 #line 2659 "parser.yy"
    8778     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8804#line 2660 "parser.yy"
     8805    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87798806    break;
    87808807
     
    87838810/* Line 1806 of yacc.c  */
    87848811#line 2662 "parser.yy"
    8785     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8812    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    87868813    break;
    87878814
     
    87898816
    87908817/* Line 1806 of yacc.c  */
    8791 #line 2664 "parser.yy"
    8792     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8818#line 2665 "parser.yy"
     8819    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87938820    break;
    87948821
     
    87978824/* Line 1806 of yacc.c  */
    87988825#line 2667 "parser.yy"
    8799     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8826    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    88008827    break;
    88018828
     
    88048831/* Line 1806 of yacc.c  */
    88058832#line 2669 "parser.yy"
    8806     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8807     break;
    8808 
    8809   case 695:
    8810 
    8811 /* Line 1806 of yacc.c  */
    8812 #line 2671 "parser.yy"
    88138833    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8834    break;
     8835
     8836  case 696:
     8837
     8838/* Line 1806 of yacc.c  */
     8839#line 2683 "parser.yy"
     8840    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88148841    break;
    88158842
     
    88248851
    88258852/* Line 1806 of yacc.c  */
    8826 #line 2687 "parser.yy"
    8827     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8853#line 2690 "parser.yy"
     8854    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88288855    break;
    88298856
     
    88328859/* Line 1806 of yacc.c  */
    88338860#line 2692 "parser.yy"
    8834     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8861    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88358862    break;
    88368863
     
    88398866/* Line 1806 of yacc.c  */
    88408867#line 2694 "parser.yy"
    8841     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8868    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88428869    break;
    88438870
     
    88468873/* Line 1806 of yacc.c  */
    88478874#line 2696 "parser.yy"
    8848     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8875    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88498876    break;
    88508877
     
    88538880/* Line 1806 of yacc.c  */
    88548881#line 2698 "parser.yy"
    8855     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8856     break;
    8857 
    8858   case 703:
    8859 
    8860 /* Line 1806 of yacc.c  */
    8861 #line 2700 "parser.yy"
    88628882    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8883    break;
     8884
     8885  case 704:
     8886
     8887/* Line 1806 of yacc.c  */
     8888#line 2704 "parser.yy"
     8889    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88638890    break;
    88648891
     
    88748901/* Line 1806 of yacc.c  */
    88758902#line 2708 "parser.yy"
    8876     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8903    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88778904    break;
    88788905
     
    88808907
    88818908/* Line 1806 of yacc.c  */
    8882 #line 2710 "parser.yy"
     8909#line 2713 "parser.yy"
     8910    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8911    break;
     8912
     8913  case 708:
     8914
     8915/* Line 1806 of yacc.c  */
     8916#line 2715 "parser.yy"
    88838917    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88848918    break;
    88858919
    8886   case 708:
    8887 
    8888 /* Line 1806 of yacc.c  */
    8889 #line 2715 "parser.yy"
    8890     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8891     break;
    8892 
    8893   case 709:
    8894 
    8895 /* Line 1806 of yacc.c  */
    8896 #line 2717 "parser.yy"
    8897     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8898     break;
    8899 
    8900   case 712:
    8901 
    8902 /* Line 1806 of yacc.c  */
    8903 #line 2727 "parser.yy"
     8920  case 711:
     8921
     8922/* Line 1806 of yacc.c  */
     8923#line 2725 "parser.yy"
    89048924    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89058925    break;
    89068926
     8927  case 714:
     8928
     8929/* Line 1806 of yacc.c  */
     8930#line 2735 "parser.yy"
     8931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8932    break;
     8933
    89078934  case 715:
    89088935
    89098936/* Line 1806 of yacc.c  */
    89108937#line 2737 "parser.yy"
     8938    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8939    break;
     8940
     8941  case 716:
     8942
     8943/* Line 1806 of yacc.c  */
     8944#line 2739 "parser.yy"
    89118945    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89128946    break;
    89138947
    8914   case 716:
    8915 
    8916 /* Line 1806 of yacc.c  */
    8917 #line 2739 "parser.yy"
     8948  case 717:
     8949
     8950/* Line 1806 of yacc.c  */
     8951#line 2741 "parser.yy"
    89188952    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89198953    break;
    89208954
    8921   case 717:
    8922 
    8923 /* Line 1806 of yacc.c  */
    8924 #line 2741 "parser.yy"
     8955  case 718:
     8956
     8957/* Line 1806 of yacc.c  */
     8958#line 2743 "parser.yy"
    89258959    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89268960    break;
    89278961
    8928   case 718:
    8929 
    8930 /* Line 1806 of yacc.c  */
    8931 #line 2743 "parser.yy"
     8962  case 719:
     8963
     8964/* Line 1806 of yacc.c  */
     8965#line 2745 "parser.yy"
    89328966    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89338967    break;
    89348968
    8935   case 719:
    8936 
    8937 /* Line 1806 of yacc.c  */
    8938 #line 2745 "parser.yy"
     8969  case 720:
     8970
     8971/* Line 1806 of yacc.c  */
     8972#line 2752 "parser.yy"
     8973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8974    break;
     8975
     8976  case 721:
     8977
     8978/* Line 1806 of yacc.c  */
     8979#line 2754 "parser.yy"
     8980    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8981    break;
     8982
     8983  case 722:
     8984
     8985/* Line 1806 of yacc.c  */
     8986#line 2756 "parser.yy"
     8987    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8988    break;
     8989
     8990  case 723:
     8991
     8992/* Line 1806 of yacc.c  */
     8993#line 2758 "parser.yy"
     8994    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8995    break;
     8996
     8997  case 724:
     8998
     8999/* Line 1806 of yacc.c  */
     9000#line 2760 "parser.yy"
     9001    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9002    break;
     9003
     9004  case 725:
     9005
     9006/* Line 1806 of yacc.c  */
     9007#line 2763 "parser.yy"
     9008    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9009    break;
     9010
     9011  case 726:
     9012
     9013/* Line 1806 of yacc.c  */
     9014#line 2765 "parser.yy"
     9015    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9016    break;
     9017
     9018  case 727:
     9019
     9020/* Line 1806 of yacc.c  */
     9021#line 2767 "parser.yy"
     9022    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9023    break;
     9024
     9025  case 728:
     9026
     9027/* Line 1806 of yacc.c  */
     9028#line 2769 "parser.yy"
     9029    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     9030    break;
     9031
     9032  case 729:
     9033
     9034/* Line 1806 of yacc.c  */
     9035#line 2771 "parser.yy"
     9036    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9037    break;
     9038
     9039  case 730:
     9040
     9041/* Line 1806 of yacc.c  */
     9042#line 2776 "parser.yy"
     9043    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     9044    break;
     9045
     9046  case 731:
     9047
     9048/* Line 1806 of yacc.c  */
     9049#line 2778 "parser.yy"
     9050    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     9051    break;
     9052
     9053  case 732:
     9054
     9055/* Line 1806 of yacc.c  */
     9056#line 2783 "parser.yy"
     9057    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9058    break;
     9059
     9060  case 733:
     9061
     9062/* Line 1806 of yacc.c  */
     9063#line 2785 "parser.yy"
     9064    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9065    break;
     9066
     9067  case 735:
     9068
     9069/* Line 1806 of yacc.c  */
     9070#line 2812 "parser.yy"
     9071    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     9072    break;
     9073
     9074  case 739:
     9075
     9076/* Line 1806 of yacc.c  */
     9077#line 2823 "parser.yy"
    89399078    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89409079    break;
    89419080
    8942   case 720:
    8943 
    8944 /* Line 1806 of yacc.c  */
    8945 #line 2747 "parser.yy"
     9081  case 740:
     9082
     9083/* Line 1806 of yacc.c  */
     9084#line 2825 "parser.yy"
    89469085    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89479086    break;
    89489087
    8949   case 721:
    8950 
    8951 /* Line 1806 of yacc.c  */
    8952 #line 2754 "parser.yy"
    8953     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8954     break;
    8955 
    8956   case 722:
    8957 
    8958 /* Line 1806 of yacc.c  */
    8959 #line 2756 "parser.yy"
     9088  case 741:
     9089
     9090/* Line 1806 of yacc.c  */
     9091#line 2827 "parser.yy"
     9092    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9093    break;
     9094
     9095  case 742:
     9096
     9097/* Line 1806 of yacc.c  */
     9098#line 2829 "parser.yy"
     9099    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9100    break;
     9101
     9102  case 743:
     9103
     9104/* Line 1806 of yacc.c  */
     9105#line 2831 "parser.yy"
     9106    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9107    break;
     9108
     9109  case 744:
     9110
     9111/* Line 1806 of yacc.c  */
     9112#line 2833 "parser.yy"
     9113    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9114    break;
     9115
     9116  case 745:
     9117
     9118/* Line 1806 of yacc.c  */
     9119#line 2840 "parser.yy"
     9120    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9121    break;
     9122
     9123  case 746:
     9124
     9125/* Line 1806 of yacc.c  */
     9126#line 2842 "parser.yy"
     9127    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9128    break;
     9129
     9130  case 747:
     9131
     9132/* Line 1806 of yacc.c  */
     9133#line 2844 "parser.yy"
    89609134    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89619135    break;
    89629136
    8963   case 723:
    8964 
    8965 /* Line 1806 of yacc.c  */
    8966 #line 2758 "parser.yy"
    8967     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8968     break;
    8969 
    8970   case 724:
    8971 
    8972 /* Line 1806 of yacc.c  */
    8973 #line 2760 "parser.yy"
    8974     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8975     break;
    8976 
    8977   case 725:
    8978 
    8979 /* Line 1806 of yacc.c  */
    8980 #line 2762 "parser.yy"
     9137  case 748:
     9138
     9139/* Line 1806 of yacc.c  */
     9140#line 2846 "parser.yy"
     9141    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9142    break;
     9143
     9144  case 749:
     9145
     9146/* Line 1806 of yacc.c  */
     9147#line 2848 "parser.yy"
     9148    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9149    break;
     9150
     9151  case 750:
     9152
     9153/* Line 1806 of yacc.c  */
     9154#line 2850 "parser.yy"
    89819155    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89829156    break;
    89839157
    8984   case 726:
    8985 
    8986 /* Line 1806 of yacc.c  */
    8987 #line 2765 "parser.yy"
    8988     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8989     break;
    8990 
    8991   case 727:
    8992 
    8993 /* Line 1806 of yacc.c  */
    8994 #line 2767 "parser.yy"
    8995     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8996     break;
    8997 
    8998   case 728:
    8999 
    9000 /* Line 1806 of yacc.c  */
    9001 #line 2769 "parser.yy"
    9002     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9003     break;
    9004 
    9005   case 729:
    9006 
    9007 /* Line 1806 of yacc.c  */
    9008 #line 2771 "parser.yy"
    9009     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9010     break;
    9011 
    9012   case 730:
    9013 
    9014 /* Line 1806 of yacc.c  */
    9015 #line 2773 "parser.yy"
    9016     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9017     break;
    9018 
    9019   case 731:
    9020 
    9021 /* Line 1806 of yacc.c  */
    9022 #line 2778 "parser.yy"
    9023     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9024     break;
    9025 
    9026   case 732:
    9027 
    9028 /* Line 1806 of yacc.c  */
    9029 #line 2780 "parser.yy"
    9030     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9031     break;
    9032 
    9033   case 733:
    9034 
    9035 /* Line 1806 of yacc.c  */
    9036 #line 2785 "parser.yy"
    9037     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9038     break;
    9039 
    9040   case 734:
    9041 
    9042 /* Line 1806 of yacc.c  */
    9043 #line 2787 "parser.yy"
    9044     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9045     break;
    9046 
    9047   case 736:
    9048 
    9049 /* Line 1806 of yacc.c  */
    9050 #line 2814 "parser.yy"
    9051     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9052     break;
    9053 
    9054   case 740:
    9055 
    9056 /* Line 1806 of yacc.c  */
    9057 #line 2825 "parser.yy"
    9058     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9059     break;
    9060 
    9061   case 741:
    9062 
    9063 /* Line 1806 of yacc.c  */
    9064 #line 2827 "parser.yy"
    9065     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9066     break;
    9067 
    9068   case 742:
    9069 
    9070 /* Line 1806 of yacc.c  */
    9071 #line 2829 "parser.yy"
    9072     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9073     break;
    9074 
    9075   case 743:
    9076 
    9077 /* Line 1806 of yacc.c  */
    9078 #line 2831 "parser.yy"
    9079     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9080     break;
    9081 
    9082   case 744:
    9083 
    9084 /* Line 1806 of yacc.c  */
    9085 #line 2833 "parser.yy"
    9086     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9087     break;
    9088 
    9089   case 745:
    9090 
    9091 /* Line 1806 of yacc.c  */
    9092 #line 2835 "parser.yy"
    9093     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9094     break;
    9095 
    9096   case 746:
    9097 
    9098 /* Line 1806 of yacc.c  */
    9099 #line 2842 "parser.yy"
    9100     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9101     break;
    9102 
    9103   case 747:
    9104 
    9105 /* Line 1806 of yacc.c  */
    9106 #line 2844 "parser.yy"
    9107     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9108     break;
    9109 
    9110   case 748:
    9111 
    9112 /* Line 1806 of yacc.c  */
    9113 #line 2846 "parser.yy"
    9114     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9115     break;
    9116 
    9117   case 749:
    9118 
    9119 /* Line 1806 of yacc.c  */
    9120 #line 2848 "parser.yy"
    9121     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9122     break;
    9123 
    9124   case 750:
    9125 
    9126 /* Line 1806 of yacc.c  */
    9127 #line 2850 "parser.yy"
    9128     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9129     break;
    9130 
    91319158  case 751:
    91329159
    91339160/* Line 1806 of yacc.c  */
    9134 #line 2852 "parser.yy"
    9135     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9161#line 2855 "parser.yy"
     9162    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91369163    break;
    91379164
     
    91399166
    91409167/* Line 1806 of yacc.c  */
    9141 #line 2857 "parser.yy"
    9142     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     9168#line 2862 "parser.yy"
     9169    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91439170    break;
    91449171
     
    91509177    break;
    91519178
    9152   case 754:
    9153 
    9154 /* Line 1806 of yacc.c  */
    9155 #line 2866 "parser.yy"
    9156     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     9179  case 756:
     9180
     9181/* Line 1806 of yacc.c  */
     9182#line 2888 "parser.yy"
     9183    { (yyval.en) = nullptr; }
    91579184    break;
    91589185
     
    91619188/* Line 1806 of yacc.c  */
    91629189#line 2890 "parser.yy"
    9163     { (yyval.en) = nullptr; }
    9164     break;
    9165 
    9166   case 758:
    9167 
    9168 /* Line 1806 of yacc.c  */
    9169 #line 2892 "parser.yy"
    91709190    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91719191    break;
     
    91749194
    91759195/* Line 1806 of yacc.c  */
    9176 #line 9177 "Parser/parser.cc"
     9196#line 9197 "Parser/parser.cc"
    91779197      default: break;
    91789198    }
     
    94059425
    94069426/* Line 2067 of yacc.c  */
    9407 #line 2895 "parser.yy"
     9427#line 2893 "parser.yy"
    94089428
    94099429// ----end of grammar----
  • src/Parser/parser.h

    r2162c2c rbb82c03  
    7373     FTYPE = 291,
    7474     DTYPE = 292,
    75      TTYPE = 293,
    76      TRAIT = 294,
    77      SIZEOF = 295,
    78      OFFSETOF = 296,
    79      ATTRIBUTE = 297,
    80      EXTENSION = 298,
    81      IF = 299,
    82      ELSE = 300,
    83      SWITCH = 301,
    84      CASE = 302,
    85      DEFAULT = 303,
    86      DO = 304,
    87      WHILE = 305,
    88      FOR = 306,
    89      BREAK = 307,
    90      CONTINUE = 308,
    91      GOTO = 309,
    92      RETURN = 310,
    93      CHOOSE = 311,
    94      DISABLE = 312,
    95      ENABLE = 313,
    96      FALLTHRU = 314,
    97      TRY = 315,
    98      CATCH = 316,
    99      CATCHRESUME = 317,
    100      FINALLY = 318,
    101      THROW = 319,
    102      THROWRESUME = 320,
    103      AT = 321,
    104      ASM = 322,
    105      ALIGNAS = 323,
    106      ALIGNOF = 324,
    107      ATOMIC = 325,
    108      GENERIC = 326,
    109      NORETURN = 327,
    110      STATICASSERT = 328,
    111      THREADLOCAL = 329,
    112      IDENTIFIER = 330,
    113      QUOTED_IDENTIFIER = 331,
    114      TYPEDEFname = 332,
    115      TYPEGENname = 333,
    116      ATTR_IDENTIFIER = 334,
    117      ATTR_TYPEDEFname = 335,
    118      ATTR_TYPEGENname = 336,
    119      INTEGERconstant = 337,
    120      CHARACTERconstant = 338,
    121      STRINGliteral = 339,
    122      REALDECIMALconstant = 340,
    123      REALFRACTIONconstant = 341,
    124      FLOATINGconstant = 342,
    125      ZERO = 343,
    126      ONE = 344,
    127      ARROW = 345,
    128      ICR = 346,
    129      DECR = 347,
    130      LS = 348,
    131      RS = 349,
    132      LE = 350,
    133      GE = 351,
    134      EQ = 352,
    135      NE = 353,
    136      ANDAND = 354,
    137      OROR = 355,
    138      ELLIPSIS = 356,
    139      MULTassign = 357,
    140      DIVassign = 358,
    141      MODassign = 359,
    142      PLUSassign = 360,
    143      MINUSassign = 361,
    144      LSassign = 362,
    145      RSassign = 363,
    146      ANDassign = 364,
    147      ERassign = 365,
    148      ORassign = 366,
    149      ATassign = 367,
    150      THEN = 368
     75     TRAIT = 293,
     76     SIZEOF = 294,
     77     OFFSETOF = 295,
     78     ATTRIBUTE = 296,
     79     EXTENSION = 297,
     80     IF = 298,
     81     ELSE = 299,
     82     SWITCH = 300,
     83     CASE = 301,
     84     DEFAULT = 302,
     85     DO = 303,
     86     WHILE = 304,
     87     FOR = 305,
     88     BREAK = 306,
     89     CONTINUE = 307,
     90     GOTO = 308,
     91     RETURN = 309,
     92     CHOOSE = 310,
     93     DISABLE = 311,
     94     ENABLE = 312,
     95     FALLTHRU = 313,
     96     TRY = 314,
     97     CATCH = 315,
     98     CATCHRESUME = 316,
     99     FINALLY = 317,
     100     THROW = 318,
     101     THROWRESUME = 319,
     102     AT = 320,
     103     ASM = 321,
     104     ALIGNAS = 322,
     105     ALIGNOF = 323,
     106     ATOMIC = 324,
     107     GENERIC = 325,
     108     NORETURN = 326,
     109     STATICASSERT = 327,
     110     THREADLOCAL = 328,
     111     IDENTIFIER = 329,
     112     QUOTED_IDENTIFIER = 330,
     113     TYPEDEFname = 331,
     114     TYPEGENname = 332,
     115     ATTR_IDENTIFIER = 333,
     116     ATTR_TYPEDEFname = 334,
     117     ATTR_TYPEGENname = 335,
     118     INTEGERconstant = 336,
     119     CHARACTERconstant = 337,
     120     STRINGliteral = 338,
     121     REALDECIMALconstant = 339,
     122     REALFRACTIONconstant = 340,
     123     FLOATINGconstant = 341,
     124     ZERO = 342,
     125     ONE = 343,
     126     ARROW = 344,
     127     ICR = 345,
     128     DECR = 346,
     129     LS = 347,
     130     RS = 348,
     131     LE = 349,
     132     GE = 350,
     133     EQ = 351,
     134     NE = 352,
     135     ANDAND = 353,
     136     OROR = 354,
     137     ELLIPSIS = 355,
     138     MULTassign = 356,
     139     DIVassign = 357,
     140     MODassign = 358,
     141     PLUSassign = 359,
     142     MINUSassign = 360,
     143     LSassign = 361,
     144     RSassign = 362,
     145     ANDassign = 363,
     146     ERassign = 364,
     147     ORassign = 365,
     148     ATassign = 366,
     149     THEN = 367
    151150   };
    152151#endif
     
    187186#define FTYPE 291
    188187#define DTYPE 292
    189 #define TTYPE 293
    190 #define TRAIT 294
    191 #define SIZEOF 295
    192 #define OFFSETOF 296
    193 #define ATTRIBUTE 297
    194 #define EXTENSION 298
    195 #define IF 299
    196 #define ELSE 300
    197 #define SWITCH 301
    198 #define CASE 302
    199 #define DEFAULT 303
    200 #define DO 304
    201 #define WHILE 305
    202 #define FOR 306
    203 #define BREAK 307
    204 #define CONTINUE 308
    205 #define GOTO 309
    206 #define RETURN 310
    207 #define CHOOSE 311
    208 #define DISABLE 312
    209 #define ENABLE 313
    210 #define FALLTHRU 314
    211 #define TRY 315
    212 #define CATCH 316
    213 #define CATCHRESUME 317
    214 #define FINALLY 318
    215 #define THROW 319
    216 #define THROWRESUME 320
    217 #define AT 321
    218 #define ASM 322
    219 #define ALIGNAS 323
    220 #define ALIGNOF 324
    221 #define ATOMIC 325
    222 #define GENERIC 326
    223 #define NORETURN 327
    224 #define STATICASSERT 328
    225 #define THREADLOCAL 329
    226 #define IDENTIFIER 330
    227 #define QUOTED_IDENTIFIER 331
    228 #define TYPEDEFname 332
    229 #define TYPEGENname 333
    230 #define ATTR_IDENTIFIER 334
    231 #define ATTR_TYPEDEFname 335
    232 #define ATTR_TYPEGENname 336
    233 #define INTEGERconstant 337
    234 #define CHARACTERconstant 338
    235 #define STRINGliteral 339
    236 #define REALDECIMALconstant 340
    237 #define REALFRACTIONconstant 341
    238 #define FLOATINGconstant 342
    239 #define ZERO 343
    240 #define ONE 344
    241 #define ARROW 345
    242 #define ICR 346
    243 #define DECR 347
    244 #define LS 348
    245 #define RS 349
    246 #define LE 350
    247 #define GE 351
    248 #define EQ 352
    249 #define NE 353
    250 #define ANDAND 354
    251 #define OROR 355
    252 #define ELLIPSIS 356
    253 #define MULTassign 357
    254 #define DIVassign 358
    255 #define MODassign 359
    256 #define PLUSassign 360
    257 #define MINUSassign 361
    258 #define LSassign 362
    259 #define RSassign 363
    260 #define ANDassign 364
    261 #define ERassign 365
    262 #define ORassign 366
    263 #define ATassign 367
    264 #define THEN 368
     188#define TRAIT 293
     189#define SIZEOF 294
     190#define OFFSETOF 295
     191#define ATTRIBUTE 296
     192#define EXTENSION 297
     193#define IF 298
     194#define ELSE 299
     195#define SWITCH 300
     196#define CASE 301
     197#define DEFAULT 302
     198#define DO 303
     199#define WHILE 304
     200#define FOR 305
     201#define BREAK 306
     202#define CONTINUE 307
     203#define GOTO 308
     204#define RETURN 309
     205#define CHOOSE 310
     206#define DISABLE 311
     207#define ENABLE 312
     208#define FALLTHRU 313
     209#define TRY 314
     210#define CATCH 315
     211#define CATCHRESUME 316
     212#define FINALLY 317
     213#define THROW 318
     214#define THROWRESUME 319
     215#define AT 320
     216#define ASM 321
     217#define ALIGNAS 322
     218#define ALIGNOF 323
     219#define ATOMIC 324
     220#define GENERIC 325
     221#define NORETURN 326
     222#define STATICASSERT 327
     223#define THREADLOCAL 328
     224#define IDENTIFIER 329
     225#define QUOTED_IDENTIFIER 330
     226#define TYPEDEFname 331
     227#define TYPEGENname 332
     228#define ATTR_IDENTIFIER 333
     229#define ATTR_TYPEDEFname 334
     230#define ATTR_TYPEGENname 335
     231#define INTEGERconstant 336
     232#define CHARACTERconstant 337
     233#define STRINGliteral 338
     234#define REALDECIMALconstant 339
     235#define REALFRACTIONconstant 340
     236#define FLOATINGconstant 341
     237#define ZERO 342
     238#define ONE 343
     239#define ARROW 344
     240#define ICR 345
     241#define DECR 346
     242#define LS 347
     243#define RS 348
     244#define LE 349
     245#define GE 350
     246#define EQ 351
     247#define NE 352
     248#define ANDAND 353
     249#define OROR 354
     250#define ELLIPSIS 355
     251#define MULTassign 356
     252#define DIVassign 357
     253#define MODassign 358
     254#define PLUSassign 359
     255#define MINUSassign 360
     256#define LSassign 361
     257#define RSassign 362
     258#define ANDassign 363
     259#define ERassign 364
     260#define ORassign 365
     261#define ATassign 366
     262#define THEN 367
    265263
    266264
     
    292290
    293291/* Line 2068 of yacc.c  */
    294 #line 295 "Parser/parser.h"
     292#line 293 "Parser/parser.h"
    295293} YYSTYPE;
    296294# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r2162c2c rbb82c03  
    8383%token TYPEOF LABEL                                                                             // GCC
    8484%token ENUM STRUCT UNION
    85 %token OTYPE FTYPE DTYPE TTYPE TRAIT                                                    // CFA
     85%token OTYPE FTYPE DTYPE TRAIT                                                  // CFA
    8686%token SIZEOF OFFSETOF
    8787%token ATTRIBUTE EXTENSION                                                              // GCC
     
    18931893                { $$ = DeclarationNode::Otype; }
    18941894        | DTYPE
     1895                { $$ = DeclarationNode::Ftype; }
     1896        | FTYPE
    18951897                { $$ = DeclarationNode::Dtype; }
    1896         | FTYPE
    1897                 { $$ = DeclarationNode::Ftype; }
    1898         | TTYPE
    1899                 { $$ = DeclarationNode::Ttype; }
    19001898        ;
    19011899
  • src/ResolvExpr/AdjustExprType.cc

    r2162c2c rbb82c03  
    2222        class AdjustExprType : public Mutator {
    2323                typedef Mutator Parent;
    24                 using Parent::mutate;
    2524          public:
    2625                AdjustExprType( const TypeEnvironment &env, const SymTab::Indexer &indexer );
  • src/ResolvExpr/AlternativeFinder.cc

    r2162c2c rbb82c03  
    267267                std::list< Expression* >& actuals = appExpr->get_args();
    268268
     269                std::list< Type * > formalTypes;
     270                std::list< Type * >::iterator formalType = formalTypes.end();
     271
    269272                for ( std::list< Expression* >::iterator actualExpr = actuals.begin(); actualExpr != actuals.end(); ++actualExpr ) {
    270                         Type * actualType = (*actualExpr)->get_result();
     273
    271274                        PRINT(
    272275                                std::cerr << "actual expression:" << std::endl;
    273276                                (*actualExpr)->print( std::cerr, 8 );
    274277                                std::cerr << "--- results are" << std::endl;
    275                                 actualType->print( std::cerr, 8 );
    276                         )
     278                                (*actualExpr)->get_result()->print( std::cerr, 8 );
     279                        )
     280                        std::list< DeclarationWithType* >::iterator startFormal = formal;
    277281                        Cost actualCost;
    278                         if ( formal == formals.end() ) {
    279                                 if ( function->get_isVarArgs() ) {
    280                                         convCost += Cost( 1, 0, 0 );
    281                                         continue;
     282                        std::list< Type * > flatActualTypes;
     283                        flatten( (*actualExpr)->get_result(), back_inserter( flatActualTypes ) );
     284                        for ( std::list< Type* >::iterator actualType = flatActualTypes.begin(); actualType != flatActualTypes.end(); ++actualType ) {
     285
     286
     287                                // tuple handling code
     288                                if ( formalType == formalTypes.end() ) {
     289                                        // the type of the formal parameter may be a tuple type. To make this easier to work with,
     290                                        // flatten the tuple type and traverse the resulting list of types, incrementing the formal
     291                                        // iterator once its types have been extracted. Once a particular formal parameter's type has
     292                                        // been exhausted load the next formal parameter's type.
     293                                        if ( formal == formals.end() ) {
     294                                                if ( function->get_isVarArgs() ) {
     295                                                        convCost += Cost( 1, 0, 0 );
     296                                                        break;
     297                                                } else {
     298                                                        return Cost::infinity;
     299                                                }
     300                                        }
     301                                        formalTypes.clear();
     302                                        flatten( (*formal)->get_type(), back_inserter( formalTypes ) );
     303                                        formalType = formalTypes.begin();
     304                                        ++formal;
     305                                }
     306
     307                                PRINT(
     308                                        std::cerr << std::endl << "converting ";
     309                                        (*actualType)->print( std::cerr, 8 );
     310                                        std::cerr << std::endl << " to ";
     311                                        (*formalType)->print( std::cerr, 8 );
     312                                )
     313                                Cost newCost = conversionCost( *actualType, *formalType, indexer, alt.env );
     314                                PRINT(
     315                                        std::cerr << std::endl << "cost is" << newCost << std::endl;
     316                                )
     317
     318                                if ( newCost == Cost::infinity ) {
     319                                        return newCost;
     320                                }
     321                                convCost += newCost;
     322                                actualCost += newCost;
     323
     324                                convCost += Cost( 0, polyCost( *formalType, alt.env, indexer ) + polyCost( *actualType, alt.env, indexer ), 0 );
     325
     326                                formalType++;
     327                        }
     328                        if ( actualCost != Cost( 0, 0, 0 ) ) {
     329                                std::list< DeclarationWithType* >::iterator startFormalPlusOne = startFormal;
     330                                startFormalPlusOne++;
     331                                if ( formal == startFormalPlusOne ) {
     332                                        // not a tuple type
     333                                        Type *newType = (*startFormal)->get_type()->clone();
     334                                        alt.env.apply( newType );
     335                                        *actualExpr = new CastExpr( *actualExpr, newType );
    282336                                } else {
    283                                         return Cost::infinity;
     337                                        TupleType *newType = new TupleType( Type::Qualifiers() );
     338                                        for ( std::list< DeclarationWithType* >::iterator i = startFormal; i != formal; ++i ) {
     339                                                newType->get_types().push_back( (*i)->get_type()->clone() );
     340                                        }
     341                                        alt.env.apply( newType );
     342                                        *actualExpr = new CastExpr( *actualExpr, newType );
    284343                                }
    285344                        }
    286                         Type * formalType = (*formal)->get_type();
    287                         PRINT(
    288                                 std::cerr << std::endl << "converting ";
    289                                 actualType->print( std::cerr, 8 );
    290                                 std::cerr << std::endl << " to ";
    291                                 formalType->print( std::cerr, 8 );
    292                         )
    293                         Cost newCost = conversionCost( actualType, formalType, indexer, alt.env );
    294                         PRINT(
    295                                 std::cerr << std::endl << "cost is" << newCost << std::endl;
    296                         )
    297 
    298                         if ( newCost == Cost::infinity ) {
    299                                 return newCost;
    300                         }
    301                         convCost += newCost;
    302                         actualCost += newCost;
    303                         if ( actualCost != Cost( 0, 0, 0 ) ) {
    304                                 Type *newType = formalType->clone();
    305                                 alt.env.apply( newType );
    306                                 *actualExpr = new CastExpr( *actualExpr, newType );
    307                         }
    308                         convCost += Cost( 0, polyCost( formalType, alt.env, indexer ) + polyCost( actualType, alt.env, indexer ), 0 );
    309                         ++formal; // can't be in for-loop update because of the continue
     345
    310346                }
    311347                if ( formal != formals.end() ) {
     
    328364                        }
    329365                        convCost += newCost;
     366
    330367                        convCost += Cost( 0, polyCost( assert->second.formalType, alt.env, indexer ) + polyCost( assert->second.actualType, alt.env, indexer ), 0 );
    331368                }
     
    339376                        unifiableVars[ (*tyvar)->get_name() ] = TypeDecl::Data{ *tyvar };
    340377                        for ( std::list< DeclarationWithType* >::iterator assert = (*tyvar)->get_assertions().begin(); assert != (*tyvar)->get_assertions().end(); ++assert ) {
    341                                 needAssertions[ *assert ].isUsed = true;
     378                                needAssertions[ *assert ] = true;
    342379                        }
    343380///     needAssertions.insert( needAssertions.end(), (*tyvar)->get_assertions().begin(), (*tyvar)->get_assertions().end() );
     
    351388                if ( TupleType * tupleType = dynamic_cast< TupleType * >( formalType ) ) {
    352389                        // formalType is a TupleType - group actuals into a TupleExpr whose type unifies with the TupleType
    353                         std::list< Expression * > exprs;
     390                        TupleExpr * tupleExpr = new TupleExpr();
    354391                        for ( Type * type : *tupleType ) {
    355                                 if ( ! instantiateArgument( type, defaultValue, actualIt, actualEnd, openVars, resultEnv, resultNeed, resultHave, indexer, cost, back_inserter( exprs ) ) ) {
    356                                         deleteAll( exprs );
     392                                if ( ! instantiateArgument( type, defaultValue, actualIt, actualEnd, openVars, resultEnv, resultNeed, resultHave, indexer, cost, back_inserter( tupleExpr->get_exprs() ) ) ) {
     393                                        delete tupleExpr;
    357394                                        return false;
    358395                                }
    359396                        }
    360                         *out++ = new TupleExpr( exprs );
    361                 } else if ( TypeInstType * ttype = Tuples::isTtype( formalType ) ) {
    362                         // xxx - mixing default arguments with variadic??
    363                         std::list< Expression * > exprs;
    364                         for ( ; actualIt != actualEnd; ++actualIt ) {
    365                                 exprs.push_back( actualIt->expr->clone() );
    366                                 cost += actualIt->cost;
    367                         }
    368                         Expression * arg = nullptr;
    369                         if ( exprs.size() == 1 && Tuples::isTtype( exprs.front()->get_result() ) ) {
    370                                 // the case where a ttype value is passed directly is special, e.g. for argument forwarding purposes
    371                                 // xxx - what if passing multiple arguments, last of which is ttype?
    372                                 // xxx - what would happen if unify was changed so that unifying tuple types flattened both before unifying lists? then pass in TupleType(ttype) below.
    373                                 arg = exprs.front();
    374                         } else {
    375                                 arg = new TupleExpr( exprs );
    376                         }
    377                         assert( arg && arg->get_result() );
    378                         if ( ! unify( ttype, arg->get_result(), resultEnv, resultNeed, resultHave, openVars, indexer ) ) {
    379                                 return false;
    380                         }
    381                         *out++ = arg;
     397                        tupleExpr->set_result( Tuples::makeTupleType( tupleExpr->get_exprs() ) );
     398                        *out++ = tupleExpr;
    382399                } else if ( actualIt != actualEnd ) {
    383400                        // both actualType and formalType are atomic (non-tuple) types - if they unify
     
    466483        void addToIndexer( AssertionSet &assertSet, SymTab::Indexer &indexer ) {
    467484                for ( AssertionSet::iterator i = assertSet.begin(); i != assertSet.end(); ++i ) {
    468                         if ( i->second.isUsed ) {
     485                        if ( i->second == true ) {
    469486                                i->first->accept( indexer );
    470487                        }
     
    477494                if ( begin == end ) {
    478495                        if ( newNeed.empty() ) {
    479                                 PRINT(
    480                                         std::cerr << "all assertions satisfied, output alternative: ";
    481                                         newAlt.print( std::cerr );
    482                                         std::cerr << std::endl;
    483                                 );
    484496                                *out++ = newAlt;
    485497                                return;
     
    498510
    499511                ForwardIterator cur = begin++;
    500                 if ( ! cur->second.isUsed ) {
     512                if ( ! cur->second ) {
    501513                        inferRecursive( begin, end, newAlt, openVars, decls, newNeed, /*needParents,*/ level, indexer, out );
    502514                        return; // xxx - should this continue? previously this wasn't here, and it looks like it should be
     
    542554                                assert( (*candidate)->get_uniqueId() );
    543555                                DeclarationWithType *candDecl = static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) );
    544 
    545                                 // everything with an empty idChain was pulled in by the current assertion.
    546                                 // add current assertion's idChain + current assertion's ID so that the correct inferParameters can be found.
    547                                 for ( auto & a : newerNeed ) {
    548                                         if ( a.second.idChain.empty() ) {
    549                                                 a.second.idChain = cur->second.idChain;
    550                                                 a.second.idChain.push_back( curDecl->get_uniqueId() );
    551                                         }
    552                                 }
    553 
    554556                                //AssertionParentSet newNeedParents( needParents );
    555557                                // skip repeatingly-self-recursive assertion satisfaction
     
    567569                                )
    568570                                ApplicationExpr *appExpr = static_cast< ApplicationExpr* >( newerAlt.expr );
    569                                 // follow the current assertion's ID chain to find the correct set of inferred parameters to add the candidate to (i.e. the set of inferred parameters belonging to the entity which requested the assertion parameter).
    570                                 InferredParams * inferParameters = &appExpr->get_inferParams();
    571                                 for ( UniqueId id : cur->second.idChain ) {
    572                                         inferParameters = (*inferParameters)[ id ].inferParams.get();
    573                                 }
    574571                                // XXX: this is a memory leak, but adjType can't be deleted because it might contain assertions
    575                                 (*inferParameters)[ curDecl->get_uniqueId() ] = ParamEntry( (*candidate)->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr );
     572                                appExpr->get_inferParams()[ curDecl->get_uniqueId() ] = ParamEntry( (*candidate)->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr );
    576573                                inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, /*newNeedParents,*/ level, indexer, out );
    577574                        } else {
     
    612609                makeUnifiableVars( funcType, openVars, resultNeed );
    613610                AltList instantiatedActuals; // filled by instantiate function
    614                 if ( targetType && ! targetType->isVoid() && ! funcType->get_returnVals().empty() ) {
     611                if ( targetType && ! targetType->isVoid() ) {
    615612                        // attempt to narrow based on expected target type
    616613                        Type * returnType = funcType->get_returnVals().front()->get_type();
     
    10781075        }
    10791076
    1080         void AlternativeFinder::visit( UntypedTupleExpr *tupleExpr ) {
     1077        void AlternativeFinder::visit( TupleExpr *tupleExpr ) {
    10811078                std::list< AlternativeFinder > subExprAlternatives;
    10821079                findSubExprs( tupleExpr->get_exprs().begin(), tupleExpr->get_exprs().end(), back_inserter( subExprAlternatives ) );
     
    10841081                combos( subExprAlternatives.begin(), subExprAlternatives.end(), back_inserter( possibilities ) );
    10851082                for ( std::list< AltList >::const_iterator i = possibilities.begin(); i != possibilities.end(); ++i ) {
    1086                         std::list< Expression * > exprs;
    1087                         makeExprList( *i, exprs );
     1083                        TupleExpr *newExpr = new TupleExpr;
     1084                        makeExprList( *i, newExpr->get_exprs() );
     1085                        newExpr->set_result( Tuples::makeTupleType( newExpr->get_exprs() ) );
    10881086
    10891087                        TypeEnvironment compositeEnv;
    10901088                        simpleCombineEnvironments( i->begin(), i->end(), compositeEnv );
    1091                         alternatives.push_back( Alternative( new TupleExpr( exprs ) , compositeEnv, sumCost( *i ) ) );
     1089                        alternatives.push_back( Alternative( newExpr, compositeEnv, sumCost( *i ) ) );
    10921090                } // for
    1093         }
    1094 
    1095         void AlternativeFinder::visit( TupleExpr *tupleExpr ) {
    1096                 alternatives.push_back( Alternative( tupleExpr->clone(), env, Cost::zero ) );
    10971091        }
    10981092
  • src/ResolvExpr/AlternativeFinder.h

    r2162c2c rbb82c03  
    6464                virtual void visit( ConditionalExpr *conditionalExpr );
    6565                virtual void visit( CommaExpr *commaExpr );
     66                virtual void visit( TupleExpr *tupleExpr );
    6667                virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr );
    6768                virtual void visit( ConstructorExpr * ctorExpr );
    68                 virtual void visit( UntypedTupleExpr *tupleExpr );
    69                 virtual void visit( TupleExpr *tupleExpr );
    7069                virtual void visit( TupleIndexExpr *tupleExpr );
    7170                virtual void visit( TupleAssignExpr *tupleExpr );
  • src/ResolvExpr/FindOpenVars.cc

    r2162c2c rbb82c03  
    5050                                openVars[ (*i)->get_name() ] = TypeDecl::Data{ (*i) };
    5151                                for ( std::list< DeclarationWithType* >::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) {
    52                                         needAssertions[ *assert ].isUsed = false;
     52                                        needAssertions[ *assert ] = false;
    5353                                }
    5454///       cloneAll( (*i)->get_assertions(), needAssertions );
     
    5959                                closedVars[ (*i)->get_name() ] = TypeDecl::Data{ (*i) };
    6060                                for ( std::list< DeclarationWithType* >::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) {
    61                                         haveAssertions[ *assert ].isUsed = false;
     61                                        haveAssertions[ *assert ] = false;
    6262                                }
    6363///       cloneAll( (*i)->get_assertions(), haveAssertions );
  • src/ResolvExpr/TypeEnvironment.cc

    r2162c2c rbb82c03  
    7575                for ( AssertionSet::const_iterator i = assertions.begin(); i != assertions.end(); ++i ) {
    7676                        i->first->print( os, indent );
    77                         if ( i->second.isUsed ) {
     77                        if ( i->second ) {
    7878                                os << "(used)";
    7979                        } else {
  • src/ResolvExpr/TypeEnvironment.h

    r2162c2c rbb82c03  
    3131                bool operator()( DeclarationWithType * d1, DeclarationWithType * d2 ) const;
    3232        };
    33         struct AssertionSetValue {
    34                 bool isUsed;
    35                 // chain of Unique IDs of the assertion declarations. The first ID in the chain is the ID of an assertion on the current type,
    36                 // with each successive ID being the ID of an assertion pulled in by the previous ID. The last ID in the chain is
    37                 // the ID of the assertion that pulled in the current assertion.
    38                 std::list< UniqueId > idChain;
    39         };
    40         typedef std::map< DeclarationWithType*, AssertionSetValue, AssertCompare > AssertionSet;
     33        typedef std::map< DeclarationWithType*, bool, AssertCompare > AssertionSet;
    4134        typedef std::map< std::string, TypeDecl::Data > OpenVarSet;
    4235
  • src/ResolvExpr/Unify.cc

    r2162c2c rbb82c03  
    2626#include "SymTab/Indexer.h"
    2727#include "Common/utility.h"
    28 #include "Tuples/Tuples.h"
     28
    2929
    3030// #define DEBUG
     
    157157                        // if the type variable is specified to be a complete type then the incoming
    158158                        // type must also be complete
    159                         // xxx - should this also check that type is not a tuple type and that it's not a ttype?
    160159                        return ! isFtype( type, indexer ) && (! data.isComplete || isComplete( type ));
    161160                  case TypeDecl::Ftype:
    162161                        return isFtype( type, indexer );
    163                         case TypeDecl::Ttype:
    164                         // ttype unifies with any tuple type
    165                         return dynamic_cast< TupleType * >( type );
    166162                } // switch
     163                assert( false );
    167164                return false;
    168165        }
     
    434431                if ( i != assertions.end() ) {
    435432///     std::cerr << "found it!" << std::endl;
    436                         i->second.isUsed = true;
     433                        i->second = true;
    437434                } // if
    438435        }
     
    488485        }
    489486
    490         template< typename Iterator >
    491         std::unique_ptr<Type> combineTypes( Iterator begin, Iterator end ) {
    492                 std::list< Type * > types;
    493                 for ( ; begin != end; ++begin ) {
    494                         // it's guaranteed that a ttype variable will be bound to a flat tuple, so ensure that this results in a flat tuple
    495                         flatten( (*begin)->get_type(), back_inserter( types ) );
    496                 }
    497                 return std::unique_ptr<Type>( new TupleType( Type::Qualifiers(), types ) );
    498         }
    499 
    500487        template< typename Iterator1, typename Iterator2 >
    501488        bool unifyDeclList( Iterator1 list1Begin, Iterator1 list1End, Iterator2 list2Begin, Iterator2 list2End, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, const SymTab::Indexer &indexer ) {
    502489                for ( ; list1Begin != list1End && list2Begin != list2End; ++list1Begin, ++list2Begin ) {
    503                         Type * t1 = (*list1Begin)->get_type();
    504                         Type * t2 = (*list2Begin)->get_type();
    505                         bool isTtype1 = Tuples::isTtype( t1 );
    506                         bool isTtype2 = Tuples::isTtype( t2 );
    507                         // xxx - assumes ttype must be last parameter
    508                         // xxx - there may be a nice way to refactor this, but be careful because the argument positioning might matter in some cases.
    509                         if ( isTtype1 && ! isTtype2 ) {
    510                                 // combine all of the things in list2, then unify
    511                                 return unifyExact( t1, combineTypes( list2Begin, list2End ).get(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer );
    512                         } else if ( isTtype2 && ! isTtype1 ) {
    513                                 // combine all of the things in list1, then unify
    514                                 return unifyExact( combineTypes( list1Begin, list1End ).get(), t2, env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer );
    515                         } else if ( ! unifyExact( t1, t2, env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ) ) {
     490                        // Type * commonType;
     491                        // if ( ! unifyInexact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( true, true ), indexer, commonType ) ) {
     492                        if ( ! unifyExact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ) ) {
    516493                                return false;
    517494                        } // if
    518495                } // for
    519                 // may get to the end of one argument list before the end of the other. This is only okay when the other is a ttype
    520                 if ( list1Begin != list1End ) {
    521                         // try unifying empty tuple type with ttype
    522                         Type * t1 = (*list1Begin)->get_type();
    523                         if ( Tuples::isTtype( t1 ) ) {
    524                                 return unifyExact( t1, combineTypes( list2Begin, list2End ).get(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer );
    525                         } else return false;
    526                 } else if ( list2Begin != list2End ) {
    527                         // try unifying empty tuple type with ttype
    528                         Type * t2 = (*list2Begin)->get_type();
    529                         if ( Tuples::isTtype( t2 ) ) {
    530                                 return unifyExact( combineTypes( list1Begin, list1End ).get(), t2, env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer );
    531                         } else return false;
     496                if ( list1Begin != list1End || list2Begin != list2End ) {
     497                        return false;
    532498                } else {
    533499                        return true;
    534500                } // if
    535         }
    536 
    537         /// Finds ttypes and replaces them with their expansion, if known.
    538         /// This needs to be done so that satisfying ttype assertions is easier.
    539         /// If this isn't done then argument lists can have wildly different
    540         /// size and structure, when they should be compatible.
    541         struct TtypeExpander : public Mutator {
    542                 TypeEnvironment & env;
    543                 TtypeExpander( TypeEnvironment & env ) : env( env ) {}
    544                 Type * mutate( TypeInstType * typeInst ) {
    545                         EqvClass eqvClass;
    546                         if ( env.lookup( typeInst->get_name(), eqvClass ) ) {
    547                                 if ( eqvClass.data.kind == TypeDecl::Ttype ) {
    548                                         // expand ttype parameter into its actual type
    549                                         if ( eqvClass.type ) {
    550                                                 delete typeInst;
    551                                                 return eqvClass.type->clone();
    552                                         }
    553                                 }
    554                         }
    555                         return typeInst;
    556                 }
    557         };
    558 
    559         /// flattens a list of declarations, so that each tuple type has a single declaration.
    560         /// makes use of TtypeExpander to ensure ttypes are flat as well.
    561         void flattenList( std::list< DeclarationWithType * > src, std::list< DeclarationWithType * > & dst, TypeEnvironment & env ) {
    562                 dst.clear();
    563                 for ( DeclarationWithType * dcl : src ) {
    564                         TtypeExpander expander( env );
    565                         dcl->acceptMutator( expander );
    566                         std::list< Type * > types;
    567                         flatten( dcl->get_type(), back_inserter( types ) );
    568                         for ( Type * t : types ) {
    569                                 dst.push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, t, nullptr ) );
    570                         }
    571                         delete dcl;
    572                 }
    573501        }
    574502
     
    576504                FunctionType *otherFunction = dynamic_cast< FunctionType* >( type2 );
    577505                if ( otherFunction && functionType->get_isVarArgs() == otherFunction->get_isVarArgs() ) {
    578                         // flatten the parameter lists for both functions so that tuple structure
    579                         // doesn't affect unification. Must be a clone so that the types don't change.
    580                         std::unique_ptr<FunctionType> flatFunc( functionType->clone() );
    581                         std::unique_ptr<FunctionType> flatOther( otherFunction->clone() );
    582                         flattenList( flatFunc->get_parameters(), flatFunc->get_parameters(), env );
    583                         flattenList( flatOther->get_parameters(), flatOther->get_parameters(), env );
    584 
    585                         // sizes don't have to match if ttypes are involved; need to be more precise wrt where the ttype is to prevent errors
    586                         if ( (flatFunc->get_parameters().size() == flatOther->get_parameters().size() && flatFunc->get_returnVals().size() == flatOther->get_returnVals().size()) || flatFunc->isTtype() || flatOther->isTtype() ) {
    587                                 if ( unifyDeclList( flatFunc->get_parameters().begin(), flatFunc->get_parameters().end(), flatOther->get_parameters().begin(), flatOther->get_parameters().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) {
    588                                         if ( unifyDeclList( flatFunc->get_returnVals().begin(), flatFunc->get_returnVals().end(), flatOther->get_returnVals().begin(), flatOther->get_returnVals().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) {
    589 
    590                                                 // the original types must be used in mark assertions, since pointer comparisons are used
     506                        if ( functionType->get_parameters().size() == otherFunction->get_parameters().size() && functionType->get_returnVals().size() == otherFunction->get_returnVals().size() ) {
     507                                if ( unifyDeclList( functionType->get_parameters().begin(), functionType->get_parameters().end(), otherFunction->get_parameters().begin(), otherFunction->get_parameters().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) {
     508                                        if ( unifyDeclList( functionType->get_returnVals().begin(), functionType->get_returnVals().end(), otherFunction->get_returnVals().begin(), otherFunction->get_returnVals().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) {
     509
    591510                                                markAssertions( haveAssertions, needAssertions, functionType );
    592511                                                markAssertions( haveAssertions, needAssertions, otherFunction );
  • src/ResolvExpr/typeops.h

    r2162c2c rbb82c03  
    164164                        }
    165165                } else {
    166                         *out++ = type->clone();
     166                        *out++ = type;
    167167                }
    168168        }
  • src/SymTab/Indexer.cc

    r2162c2c rbb82c03  
    453453        }
    454454
     455        void Indexer::visit( TupleExpr *tupleExpr ) {
     456                acceptNewScope( tupleExpr->get_result(), *this );
     457                acceptAll( tupleExpr->get_exprs(), *this );
     458        }
     459
     460        void Indexer::visit( TupleAssignExpr *tupleExpr ) {
     461                acceptNewScope( tupleExpr->get_result(), *this );
     462                maybeAccept( tupleExpr->get_stmtExpr(), *this );
     463        }
     464
    455465        void Indexer::visit( TypeExpr *typeExpr ) {
    456466                acceptNewScope( typeExpr->get_result(), *this );
     
    464474        }
    465475
    466         void Indexer::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) {
    467                 acceptNewScope( impCpCtorExpr->get_result(), *this );
    468                 maybeAccept( impCpCtorExpr->get_callExpr(), *this );
    469                 acceptAll( impCpCtorExpr->get_tempDecls(), *this );
    470                 acceptAll( impCpCtorExpr->get_returnDecls(), *this );
    471                 acceptAll( impCpCtorExpr->get_dtors(), *this );
    472         }
    473 
    474         void Indexer::visit( ConstructorExpr * ctorExpr ) {
    475                 acceptNewScope( ctorExpr->get_result(), *this );
    476                 maybeAccept( ctorExpr->get_callExpr(), *this );
    477         }
    478 
    479         void Indexer::visit( CompoundLiteralExpr *compLitExpr ) {
    480                 acceptNewScope( compLitExpr->get_result(), *this );
    481                 maybeAccept( compLitExpr->get_type(), *this );
    482                 maybeAccept( compLitExpr->get_initializer(), *this );
    483         }
    484 
    485476        void Indexer::visit( UntypedValofExpr *valofExpr ) {
    486477                acceptNewScope( valofExpr->get_result(), *this );
    487478                maybeAccept( valofExpr->get_body(), *this );
    488         }
    489 
    490         void Indexer::visit( RangeExpr *rangeExpr ) {
    491                 maybeAccept( rangeExpr->get_low(), *this );
    492                 maybeAccept( rangeExpr->get_high(), *this );
    493         }
    494 
    495         void Indexer::visit( UntypedTupleExpr *tupleExpr ) {
    496                 acceptNewScope( tupleExpr->get_result(), *this );
    497                 acceptAll( tupleExpr->get_exprs(), *this );
    498         }
    499 
    500         void Indexer::visit( TupleExpr *tupleExpr ) {
    501                 acceptNewScope( tupleExpr->get_result(), *this );
    502                 acceptAll( tupleExpr->get_exprs(), *this );
    503         }
    504 
    505         void Indexer::visit( TupleIndexExpr *tupleExpr ) {
    506                 acceptNewScope( tupleExpr->get_result(), *this );
    507                 maybeAccept( tupleExpr->get_tuple(), *this );
    508         }
    509 
    510         void Indexer::visit( MemberTupleExpr *tupleExpr ) {
    511                 acceptNewScope( tupleExpr->get_result(), *this );
    512                 maybeAccept( tupleExpr->get_member(), *this );
    513                 maybeAccept( tupleExpr->get_aggregate(), *this );
    514         }
    515 
    516         void Indexer::visit( TupleAssignExpr *tupleExpr ) {
    517                 acceptNewScope( tupleExpr->get_result(), *this );
    518                 maybeAccept( tupleExpr->get_stmtExpr(), *this );
    519         }
    520 
    521         void Indexer::visit( StmtExpr *stmtExpr ) {
    522                 acceptNewScope( stmtExpr->get_result(), *this );
    523                 maybeAccept( stmtExpr->get_statements(), *this );
    524                 acceptAll( stmtExpr->get_returnDecls(), *this );
    525                 acceptAll( stmtExpr->get_dtors(), *this );
    526         }
    527 
    528         void Indexer::visit( UniqueExpr *uniqueExpr ) {
    529                 acceptNewScope( uniqueExpr->get_result(), *this );
    530                 maybeAccept( uniqueExpr->get_expr(), *this );
    531479        }
    532480
  • src/SymTab/Indexer.h

    r2162c2c rbb82c03  
    6666                virtual void visit( TypeExpr *typeExpr );
    6767                virtual void visit( AsmExpr *asmExpr );
    68                 virtual void visit( ImplicitCopyCtorExpr *impCpCtorExpr );
    69                 virtual void visit( ConstructorExpr * ctorExpr );
    70                 virtual void visit( CompoundLiteralExpr *compLitExpr );
    7168                virtual void visit( UntypedValofExpr *valofExpr );
    72                 virtual void visit( RangeExpr *rangeExpr );
    73                 virtual void visit( UntypedTupleExpr *tupleExpr );
    7469                virtual void visit( TupleExpr *tupleExpr );
    75                 virtual void visit( TupleIndexExpr *tupleExpr );
    76                 virtual void visit( MemberTupleExpr *tupleExpr );
    7770                virtual void visit( TupleAssignExpr *tupleExpr );
    78                 virtual void visit( StmtExpr * stmtExpr );
    79                 virtual void visit( UniqueExpr * uniqueExpr );
    8071
    8172                virtual void visit( TraitInstType *contextInst );
  • src/SymTab/Mangler.cc

    r2162c2c rbb82c03  
    214214                                mangleName << "f";
    215215                                break;
    216                                 case TypeDecl::Ttype:
    217                                 mangleName << "tVARGS";
    218                                 break;
    219                                 default:
    220                                 assert( false );
    221216                        } // switch
    222217                        mangleName << numStream.str();
     
    261256                if ( ! type->get_forall().empty() ) {
    262257                        std::list< std::string > assertionNames;
    263                         int tcount = 0, dcount = 0, fcount = 0, vcount = 0;
     258                        int tcount = 0, dcount = 0, fcount = 0;
    264259                        mangleName << "A";
    265260                        for ( Type::ForallList::iterator i = type->get_forall().begin(); i != type->get_forall().end(); ++i ) {
     
    274269                                        fcount++;
    275270                                        break;
    276                                   case TypeDecl::Ttype:
    277                                         vcount++;
    278                                         break;
    279                                   default:
    280                                         assert( false );
    281271                                } // switch
    282272                                varNums[ (*i )->get_name() ] = std::pair< int, int >( nextVarNum++, (int )(*i )->get_kind() );
     
    290280                                } // for
    291281                        } // for
    292                         mangleName << tcount << "_" << dcount << "_" << fcount << "_" << vcount << "_";
     282                        mangleName << tcount << "_" << dcount << "_" << fcount << "_";
    293283                        std::copy( assertionNames.begin(), assertionNames.end(), std::ostream_iterator< std::string >( mangleName, "" ) );
    294284                        mangleName << "_";
  • src/SynTree/ApplicationExpr.cc

    r2162c2c rbb82c03  
    2424
    2525ParamEntry::ParamEntry( const ParamEntry &other ) :
    26                 decl( other.decl ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) ), inferParams( new InferredParams( *other.inferParams ) ) {
     26                decl( other.decl ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) ) {
    2727}
    2828
     
    3434        formalType = maybeClone( other.formalType );
    3535        expr = maybeClone( other.expr );
    36         *inferParams = *other.inferParams;
    3736        return *this;
    3837}
     
    6362}
    6463
    65 void printInferParams( const InferredParams & inferParams, std::ostream &os, int indent, int level ) {
    66         if ( ! inferParams.empty() ) {
    67                 os << std::string(indent, ' ') << "with inferred parameters " << level << ":" << std::endl;
    68                 for ( InferredParams::const_iterator i = inferParams.begin(); i != inferParams.end(); ++i ) {
    69                         os << std::string(indent+2, ' ');
    70                         Declaration::declFromId( i->second.decl )->printShort( os, indent+2 );
    71                         os << std::endl;
    72                         printInferParams( *i->second.inferParams, os, indent+2, level+1 );
    73                 } // for
    74         } // if
    75 }
    76 
    7764void ApplicationExpr::print( std::ostream &os, int indent ) const {
    7865        os << "Application of" << std::endl << std::string(indent+2, ' ');
     
    8269                printAll( args, os, indent+2 );
    8370        } // if
    84         printInferParams( inferParams, os, indent+2, 0 );
     71        if ( ! inferParams.empty() ) {
     72                os << std::string(indent, ' ') << "with inferred parameters:" << std::endl;
     73                for ( InferredParams::const_iterator i = inferParams.begin(); i != inferParams.end(); ++i ) {
     74                        os << std::string(indent+2, ' ');
     75                        Declaration::declFromId( i->second.decl )->printShort( os, indent+2 );
     76                        os << std::endl;
     77                } // for
     78        } // if
    8579        Expression::print( os, indent );
    8680}
  • src/SynTree/Declaration.cc

    r2162c2c rbb82c03  
    5757
    5858std::ostream & operator<<( std::ostream & out, const Declaration * decl ) {
    59         if ( decl ){
    60                 decl->print( out );
    61         } else {
    62                 out << "nullptr";
    63         }
     59        decl->print( out );
    6460        return out;
    6561}
  • src/SynTree/Declaration.h

    r2162c2c rbb82c03  
    179179        typedef NamedTypeDecl Parent;
    180180  public:
    181         enum Kind { Any, Dtype, Ftype, Ttype };
     181        enum Kind { Any, Dtype, Ftype };
    182182        /// Data extracted from a type decl
    183183        struct Data {
  • src/SynTree/Expression.cc

    r2162c2c rbb82c03  
    672672
    673673std::ostream & operator<<( std::ostream & out, const Expression * expr ) {
    674         if ( expr ) {
    675                 expr->print( out );
    676         } else {
    677                 out << "nullptr";
    678         }
     674        expr->print( out );
    679675        return out;
    680676}
  • src/SynTree/Expression.h

    r2162c2c rbb82c03  
    5454};
    5555
    56 struct ParamEntry;
    57 typedef std::map< UniqueId, ParamEntry > InferredParams;
    58 
    5956/// ParamEntry contains the i.d. of a declaration and a type that is derived from that declaration,
    6057/// but subject to decay-to-pointer and type parameter renaming
    6158struct ParamEntry {
    62         ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ), inferParams( new InferredParams ) {}
    63         ParamEntry( UniqueId decl, Type *actualType, Type *formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr ), inferParams( new InferredParams ) {}
     59        ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ) {}
     60        ParamEntry( UniqueId decl, Type *actualType, Type *formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr ) {}
    6461        ParamEntry( const ParamEntry &other );
    6562        ~ParamEntry();
     
    7067        Type *formalType;
    7168        Expression* expr;
    72         std::unique_ptr< InferredParams > inferParams;
    73 };
     69};
     70
     71typedef std::map< UniqueId, ParamEntry > InferredParams;
    7472
    7573/// ApplicationExpr represents the application of a function to a set of parameters.  This is the result of running an
     
    636634};
    637635
    638 /// UntypedTupleExpr represents a tuple expression ( [a, b, c] ) before resolution
    639 class UntypedTupleExpr : public Expression {
    640   public:
    641         UntypedTupleExpr( const std::list< Expression * > & exprs, Expression *_aname = nullptr );
    642         UntypedTupleExpr( const UntypedTupleExpr &other );
    643         virtual ~UntypedTupleExpr();
    644 
    645         std::list<Expression*>& get_exprs() { return exprs; }
    646 
    647         virtual UntypedTupleExpr *clone() const { return new UntypedTupleExpr( *this ); }
    648         virtual void accept( Visitor &v ) { v.visit( this ); }
    649         virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    650         virtual void print( std::ostream &os, int indent = 0 ) const;
    651   private:
    652         std::list<Expression*> exprs;
    653 };
    654 
    655636/// TupleExpr represents a tuple expression ( [a, b, c] )
    656637class TupleExpr : public Expression {
    657638  public:
    658         TupleExpr( const std::list< Expression * > & exprs, Expression *_aname = nullptr );
     639        TupleExpr( const std::list< Expression * > & exprs = std::list< Expression * >(), Expression *_aname = nullptr );
    659640        TupleExpr( const TupleExpr &other );
    660641        virtual ~TupleExpr();
    661642
     643        void set_exprs( std::list<Expression*> newValue ) { exprs = newValue; }
    662644        std::list<Expression*>& get_exprs() { return exprs; }
    663645
  • src/SynTree/FunctionType.cc

    r2162c2c rbb82c03  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FunctionType.cc --
     7// FunctionType.cc -- 
    88//
    99// Author           : Richard C. Bilson
     
    1919#include "Declaration.h"
    2020#include "Common/utility.h"
    21 #include "Tuples/Tuples.h"
    2221
    2322FunctionType::FunctionType( const Type::Qualifiers &tq, bool isVarArgs ) : Type( tq ), isVarArgs( isVarArgs ) {
     
    3231        deleteAll( returnVals );
    3332        deleteAll( parameters );
    34 }
    35 
    36 namespace {
    37         bool containsTtype( const std::list<DeclarationWithType * > & l ) {
    38                 if ( ! l.empty() ) {
    39                         return Tuples::isTtype( l.back()->get_type() );
    40                 }
    41                 return false;
    42         }
    43 }
    44 
    45 bool FunctionType::isTtype() const {
    46         return containsTtype( returnVals ) || containsTtype( parameters );
    4733}
    4834
  • src/SynTree/Mutator.cc

    r2162c2c rbb82c03  
    2323#include "Constant.h"
    2424#include "Common/utility.h"
    25 #include "TypeSubstitution.h"
    2625
    2726Mutator::Mutator() {}
     
    179178
    180179Expression *Mutator::mutate( ApplicationExpr *applicationExpr ) {
    181         applicationExpr->set_env( maybeMutate( applicationExpr->get_env(), *this ) );
    182180        applicationExpr->set_result( maybeMutate( applicationExpr->get_result(), *this ) );
    183181        applicationExpr->set_function( maybeMutate( applicationExpr->get_function(), *this ) );
     
    187185
    188186Expression *Mutator::mutate( UntypedExpr *untypedExpr ) {
    189         untypedExpr->set_env( maybeMutate( untypedExpr->get_env(), *this ) );
    190187        untypedExpr->set_result( maybeMutate( untypedExpr->get_result(), *this ) );
    191188        mutateAll( untypedExpr->get_args(), *this );
     
    194191
    195192Expression *Mutator::mutate( NameExpr *nameExpr ) {
    196         nameExpr->set_env( maybeMutate( nameExpr->get_env(), *this ) );
    197193        nameExpr->set_result( maybeMutate( nameExpr->get_result(), *this ) );
    198194        return nameExpr;
     
    200196
    201197Expression *Mutator::mutate( AddressExpr *addressExpr ) {
    202         addressExpr->set_env( maybeMutate( addressExpr->get_env(), *this ) );
    203198        addressExpr->set_result( maybeMutate( addressExpr->get_result(), *this ) );
    204199        addressExpr->set_arg( maybeMutate( addressExpr->get_arg(), *this ) );
     
    207202
    208203Expression *Mutator::mutate( LabelAddressExpr *labelAddressExpr ) {
    209         labelAddressExpr->set_env( maybeMutate( labelAddressExpr->get_env(), *this ) );
    210204        labelAddressExpr->set_result( maybeMutate( labelAddressExpr->get_result(), *this ) );
    211205        labelAddressExpr->set_arg( maybeMutate( labelAddressExpr->get_arg(), *this ) );
     
    214208
    215209Expression *Mutator::mutate( CastExpr *castExpr ) {
    216         castExpr->set_env( maybeMutate( castExpr->get_env(), *this ) );
    217210        castExpr->set_result( maybeMutate( castExpr->get_result(), *this ) );
    218211        castExpr->set_arg( maybeMutate( castExpr->get_arg(), *this ) );
     
    221214
    222215Expression *Mutator::mutate( UntypedMemberExpr *memberExpr ) {
    223         memberExpr->set_env( maybeMutate( memberExpr->get_env(), *this ) );
    224216        memberExpr->set_result( maybeMutate( memberExpr->get_result(), *this ) );
    225217        memberExpr->set_aggregate( maybeMutate( memberExpr->get_aggregate(), *this ) );
     
    229221
    230222Expression *Mutator::mutate( MemberExpr *memberExpr ) {
    231         memberExpr->set_env( maybeMutate( memberExpr->get_env(), *this ) );
    232223        memberExpr->set_result( maybeMutate( memberExpr->get_result(), *this ) );
    233224        memberExpr->set_aggregate( maybeMutate( memberExpr->get_aggregate(), *this ) );
     
    236227
    237228Expression *Mutator::mutate( VariableExpr *variableExpr ) {
    238         variableExpr->set_env( maybeMutate( variableExpr->get_env(), *this ) );
    239229        variableExpr->set_result( maybeMutate( variableExpr->get_result(), *this ) );
    240230        return variableExpr;
     
    242232
    243233Expression *Mutator::mutate( ConstantExpr *constantExpr ) {
    244         constantExpr->set_env( maybeMutate( constantExpr->get_env(), *this ) );
    245234        constantExpr->set_result( maybeMutate( constantExpr->get_result(), *this ) );
    246235//  maybeMutate( constantExpr->get_constant(), *this )
     
    249238
    250239Expression *Mutator::mutate( SizeofExpr *sizeofExpr ) {
    251         sizeofExpr->set_env( maybeMutate( sizeofExpr->get_env(), *this ) );
    252240        sizeofExpr->set_result( maybeMutate( sizeofExpr->get_result(), *this ) );
    253241        if ( sizeofExpr->get_isType() ) {
     
    260248
    261249Expression *Mutator::mutate( AlignofExpr *alignofExpr ) {
    262         alignofExpr->set_env( maybeMutate( alignofExpr->get_env(), *this ) );
    263250        alignofExpr->set_result( maybeMutate( alignofExpr->get_result(), *this ) );
    264251        if ( alignofExpr->get_isType() ) {
     
    271258
    272259Expression *Mutator::mutate( UntypedOffsetofExpr *offsetofExpr ) {
    273         offsetofExpr->set_env( maybeMutate( offsetofExpr->get_env(), *this ) );
    274260        offsetofExpr->set_result( maybeMutate( offsetofExpr->get_result(), *this ) );
    275261        offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) );
     
    278264
    279265Expression *Mutator::mutate( OffsetofExpr *offsetofExpr ) {
    280         offsetofExpr->set_env( maybeMutate( offsetofExpr->get_env(), *this ) );
    281266        offsetofExpr->set_result( maybeMutate( offsetofExpr->get_result(), *this ) );
    282267        offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) );
     
    286271
    287272Expression *Mutator::mutate( OffsetPackExpr *offsetPackExpr ) {
    288         offsetPackExpr->set_env( maybeMutate( offsetPackExpr->get_env(), *this ) );
    289273        offsetPackExpr->set_result( maybeMutate( offsetPackExpr->get_result(), *this ) );
    290274        offsetPackExpr->set_type( maybeMutate( offsetPackExpr->get_type(), *this ) );
     
    293277
    294278Expression *Mutator::mutate( AttrExpr *attrExpr ) {
    295         attrExpr->set_env( maybeMutate( attrExpr->get_env(), *this ) );
    296279        attrExpr->set_result( maybeMutate( attrExpr->get_result(), *this ) );
    297280        if ( attrExpr->get_isType() ) {
     
    304287
    305288Expression *Mutator::mutate( LogicalExpr *logicalExpr ) {
    306         logicalExpr->set_env( maybeMutate( logicalExpr->get_env(), *this ) );
    307289        logicalExpr->set_result( maybeMutate( logicalExpr->get_result(), *this ) );
    308290        logicalExpr->set_arg1( maybeMutate( logicalExpr->get_arg1(), *this ) );
     
    312294
    313295Expression *Mutator::mutate( ConditionalExpr *conditionalExpr ) {
    314         conditionalExpr->set_env( maybeMutate( conditionalExpr->get_env(), *this ) );
    315296        conditionalExpr->set_result( maybeMutate( conditionalExpr->get_result(), *this ) );
    316297        conditionalExpr->set_arg1( maybeMutate( conditionalExpr->get_arg1(), *this ) );
     
    321302
    322303Expression *Mutator::mutate( CommaExpr *commaExpr ) {
    323         commaExpr->set_env( maybeMutate( commaExpr->get_env(), *this ) );
    324304        commaExpr->set_result( maybeMutate( commaExpr->get_result(), *this ) );
    325305        commaExpr->set_arg1( maybeMutate( commaExpr->get_arg1(), *this ) );
     
    329309
    330310Expression *Mutator::mutate( TypeExpr *typeExpr ) {
    331         typeExpr->set_env( maybeMutate( typeExpr->get_env(), *this ) );
    332311        typeExpr->set_result( maybeMutate( typeExpr->get_result(), *this ) );
    333312        typeExpr->set_type( maybeMutate( typeExpr->get_type(), *this ) );
     
    336315
    337316Expression *Mutator::mutate( AsmExpr *asmExpr ) {
    338         asmExpr->set_env( maybeMutate( asmExpr->get_env(), *this ) );
    339317        asmExpr->set_inout( maybeMutate( asmExpr->get_inout(), *this ) );
    340318        asmExpr->set_constraint( maybeMutate( asmExpr->get_constraint(), *this ) );
     
    344322
    345323Expression* Mutator::mutate( ImplicitCopyCtorExpr *impCpCtorExpr ) {
    346         impCpCtorExpr->set_env( maybeMutate( impCpCtorExpr->get_env(), *this ) );
    347         impCpCtorExpr->set_result( maybeMutate( impCpCtorExpr->get_result(), *this ) );
    348324        impCpCtorExpr->set_callExpr( maybeMutate( impCpCtorExpr->get_callExpr(), *this ) );
    349325        mutateAll( impCpCtorExpr->get_tempDecls(), *this );
     
    354330
    355331Expression* Mutator::mutate( ConstructorExpr *ctorExpr ) {
    356         ctorExpr->set_env( maybeMutate( ctorExpr->get_env(), *this ) );
    357332        ctorExpr->set_result( maybeMutate( ctorExpr->get_result(), *this ) );
    358333        ctorExpr->set_callExpr( maybeMutate( ctorExpr->get_callExpr(), *this ) );
     
    361336
    362337Expression *Mutator::mutate( CompoundLiteralExpr *compLitExpr ) {
    363         compLitExpr->set_env( maybeMutate( compLitExpr->get_env(), *this ) );
    364338        compLitExpr->set_result( maybeMutate( compLitExpr->get_result(), *this ) );
    365339        compLitExpr->set_type( maybeMutate( compLitExpr->get_type(), *this ) );
     
    369343
    370344Expression *Mutator::mutate( UntypedValofExpr *valofExpr ) {
    371         valofExpr->set_env( maybeMutate( valofExpr->get_env(), *this ) );
    372345        valofExpr->set_result( maybeMutate( valofExpr->get_result(), *this ) );
    373346        return valofExpr;
     
    375348
    376349Expression *Mutator::mutate( RangeExpr *rangeExpr ) {
    377         rangeExpr->set_env( maybeMutate( rangeExpr->get_env(), *this ) );
    378350        rangeExpr->set_low( maybeMutate( rangeExpr->get_low(), *this ) );
    379351        rangeExpr->set_high( maybeMutate( rangeExpr->get_high(), *this ) );
     
    381353}
    382354
    383 Expression *Mutator::mutate( UntypedTupleExpr *tupleExpr ) {
    384         tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );
     355Expression *Mutator::mutate( TupleExpr *tupleExpr ) {
    385356        tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );
    386357        mutateAll( tupleExpr->get_exprs(), *this );
     
    388359}
    389360
    390 Expression *Mutator::mutate( TupleExpr *tupleExpr ) {
    391         tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );
    392         tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );
    393         mutateAll( tupleExpr->get_exprs(), *this );
    394         return tupleExpr;
    395 }
    396 
    397361Expression *Mutator::mutate( TupleIndexExpr *tupleExpr ) {
    398         tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );
    399362        tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );
    400363        tupleExpr->set_tuple( maybeMutate( tupleExpr->get_tuple(), *this ) );
     
    403366
    404367Expression *Mutator::mutate( MemberTupleExpr *tupleExpr ) {
    405         tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );
    406368        tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );
    407369        tupleExpr->set_member( maybeMutate( tupleExpr->get_member(), *this ) );
     
    411373
    412374Expression *Mutator::mutate( TupleAssignExpr *assignExpr ) {
    413         assignExpr->set_env( maybeMutate( assignExpr->get_env(), *this ) );
    414375        assignExpr->set_result( maybeMutate( assignExpr->get_result(), *this ) );
    415376        assignExpr->set_stmtExpr( maybeMutate( assignExpr->get_stmtExpr(), *this ) );
     
    418379
    419380Expression *Mutator::mutate( StmtExpr *stmtExpr ) {
    420         stmtExpr->set_env( maybeMutate( stmtExpr->get_env(), *this ) );
    421381        stmtExpr->set_result( maybeMutate( stmtExpr->get_result(), *this ) );
    422382        stmtExpr->set_statements( maybeMutate( stmtExpr->get_statements(), *this ) );
     
    427387
    428388Expression *Mutator::mutate( UniqueExpr *uniqueExpr ) {
    429         uniqueExpr->set_env( maybeMutate( uniqueExpr->get_env(), *this ) );
    430389        uniqueExpr->set_result( maybeMutate( uniqueExpr->get_result(), *this ) );
    431390        uniqueExpr->set_expr( maybeMutate( uniqueExpr->get_expr(), *this ) );
  • src/SynTree/Mutator.h

    r2162c2c rbb82c03  
    7878        virtual Expression* mutate( UntypedValofExpr *valofExpr );
    7979        virtual Expression* mutate( RangeExpr *rangeExpr );
    80         virtual Expression* mutate( UntypedTupleExpr *tupleExpr );
    8180        virtual Expression* mutate( TupleExpr *tupleExpr );
    8281        virtual Expression* mutate( TupleIndexExpr *tupleExpr );
  • src/SynTree/Statement.cc

    r2162c2c rbb82c03  
    388388
    389389std::ostream & operator<<( std::ostream & out, const Statement * statement ) {
    390         if ( statement ) {
    391                 statement->print( out );
    392         } else {
    393                 out << "nullptr";
    394         }
     390        statement->print( out );
    395391        return out;
    396392}
  • src/SynTree/SynTree.h

    r2162c2c rbb82c03  
    8383class UntypedValofExpr;
    8484class RangeExpr;
    85 class UntypedTupleExpr;
    8685class TupleExpr;
    8786class TupleIndexExpr;
  • src/SynTree/TupleExpr.cc

    r2162c2c rbb82c03  
    2121#include "VarExprReplacer.h"
    2222
    23 UntypedTupleExpr::UntypedTupleExpr( const std::list< Expression * > & exprs, Expression *_aname ) : Expression( _aname ), exprs( exprs ) {
    24 }
    25 
    26 UntypedTupleExpr::UntypedTupleExpr( const UntypedTupleExpr &other ) : Expression( other ) {
    27         cloneAll( other.exprs, exprs );
    28 }
    29 
    30 UntypedTupleExpr::~UntypedTupleExpr() {
    31         deleteAll( exprs );
    32 }
    33 
    34 void UntypedTupleExpr::print( std::ostream &os, int indent ) const {
    35         os << "Untyped Tuple:" << std::endl;
    36         printAll( exprs, os, indent+2 );
    37         Expression::print( os, indent );
    38 }
    39 
    4023TupleExpr::TupleExpr( const std::list< Expression * > & exprs, Expression *_aname ) : Expression( _aname ), exprs( exprs ) {
    41         set_result( Tuples::makeTupleType( exprs ) );
     24        if ( ! exprs.empty() ) {
     25                if ( std::all_of( exprs.begin(), exprs.end(), [](Expression * expr) { return expr->get_result(); } ) ) {
     26                        set_result( Tuples::makeTupleType( exprs ) );
     27                }
     28        }
    4229}
    4330
     
    5845TupleIndexExpr::TupleIndexExpr( Expression * tuple, unsigned int index ) : tuple( tuple ), index( index )  {
    5946        TupleType * type = safe_dynamic_cast< TupleType * >( tuple->get_result() );
    60         assertf( type->size() > index, "TupleIndexExpr index out of bounds: tuple size %d, requested index %d in expr %s", type->size(), index, toString( tuple ).c_str() );
     47        assert( type->size() > index );
    6148        set_result( (*std::next( type->get_types().begin(), index ))->clone() );
    6249        get_result()->set_isLvalue( type->get_isLvalue() );
  • src/SynTree/Type.cc

    r2162c2c rbb82c03  
    8585
    8686std::ostream & operator<<( std::ostream & out, const Type * type ) {
    87         if ( type ) {
    88                 type->print( out );
    89         } else {
    90                 out << "nullptr";
    91         }
     87        type->print( out );
    9288        return out;
    9389}
  • src/SynTree/Type.h

    r2162c2c rbb82c03  
    204204        std::list<DeclarationWithType*> & get_returnVals() { return returnVals; }
    205205        std::list<DeclarationWithType*> & get_parameters() { return parameters; }
    206         bool get_isVarArgs() const { return isVarArgs; }
     206        bool get_isVarArgs() { return isVarArgs; }
    207207        void set_isVarArgs( bool newValue ) { isVarArgs = newValue; }
    208 
    209         bool isTtype() const;
    210208
    211209        virtual FunctionType *clone() const { return new FunctionType( *this ); }
  • src/SynTree/TypeDecl.cc

    r2162c2c rbb82c03  
    1818#include "Common/utility.h"
    1919
    20 TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ), sized( kind == Any || kind == Ttype ) {
     20TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ), sized( kind == Any ) {
    2121}
    2222
     
    2525
    2626std::string TypeDecl::typeString() const {
    27         static const char *kindNames[] = { "type", "incomplete type", "function type", "tuple type" };
     27        static const char *kindNames[] = { "type", "incomplete type", "function type" };
    2828        return kindNames[ kind ];
    2929}
  • src/SynTree/TypeSubstitution.cc

    r2162c2c rbb82c03  
    231231}
    232232
    233 TypeSubstitution * TypeSubstitution::acceptMutator( Mutator & mutator ) {
    234         for ( auto & p : typeEnv ) {
    235                 p.second = maybeMutate( p.second, mutator );
    236         }
    237         for ( auto & p : varEnv ) {
    238                 p.second = maybeMutate( p.second, mutator );
    239         }
    240         return this;
    241 }
    242 
    243233void TypeSubstitution::print( std::ostream &os, int indent ) const {
    244234        os << std::string( indent, ' ' ) << "Types:" << std::endl;
  • src/SynTree/TypeSubstitution.h

    r2162c2c rbb82c03  
    5353
    5454        void normalize();
    55 
    56         TypeSubstitution * acceptMutator( Mutator & mutator );
    5755
    5856        void print( std::ostream &os, int indent = 0 ) const;
  • src/SynTree/Visitor.cc

    r2162c2c rbb82c03  
    273273
    274274void Visitor::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) {
    275         maybeAccept( impCpCtorExpr->get_result(), *this );
    276275        maybeAccept( impCpCtorExpr->get_callExpr(), *this );
    277276        acceptAll( impCpCtorExpr->get_tempDecls(), *this );
     
    299298        maybeAccept( rangeExpr->get_low(), *this );
    300299        maybeAccept( rangeExpr->get_high(), *this );
    301 }
    302 
    303 void Visitor::visit( UntypedTupleExpr *tupleExpr ) {
    304         maybeAccept( tupleExpr->get_result(), *this );
    305         acceptAll( tupleExpr->get_exprs(), *this );
    306300}
    307301
  • src/SynTree/Visitor.h

    r2162c2c rbb82c03  
    7878        virtual void visit( UntypedValofExpr *valofExpr );
    7979        virtual void visit( RangeExpr *rangeExpr );
    80         virtual void visit( UntypedTupleExpr *tupleExpr );
    8180        virtual void visit( TupleExpr *tupleExpr );
    8281        virtual void visit( TupleIndexExpr *tupleExpr );
  • src/Tuples/Explode.h

    r2162c2c rbb82c03  
    3333        /// helper function used by explode
    3434        template< typename OutputIterator >
    35         void explodeUnique( Expression * expr, const ResolvExpr::Alternative & alt, const SymTab::Indexer & indexer, OutputIterator out, bool isTupleAssign ) {
    36                 if ( isTupleAssign ) {
    37                         // tuple assignment needs AddressExprs to be recursively exploded to easily get at all of the components
    38                         if ( AddressExpr * addrExpr = dynamic_cast< AddressExpr * >( expr ) ) {
    39                                 ResolvExpr::AltList alts;
    40                                 explodeUnique( addrExpr->get_arg(), alt, indexer, back_inserter( alts ), isTupleAssign );
    41                                 for ( ResolvExpr::Alternative & alt : alts ) {
    42                                         // distribute '&' over all components
    43                                         alt.expr = distributeAddr( alt.expr );
    44                                         *out++ = alt;
    45                                 }
    46                                 // in tuple assignment, still need to handle the other cases, but only if not already handled here (don't want to output too many alternatives)
    47                                 return;
     35        void explodeUnique( Expression * expr, const ResolvExpr::Alternative & alt, const SymTab::Indexer & indexer, OutputIterator out ) {
     36                Type * res = expr->get_result();
     37                if ( AddressExpr * addrExpr = dynamic_cast< AddressExpr * >( expr ) ) {
     38                        ResolvExpr::AltList alts;
     39                        explodeUnique( addrExpr->get_arg(), alt, indexer, back_inserter( alts ) );
     40                        for ( ResolvExpr::Alternative & alt : alts ) {
     41                                // distribute '&' over all components
     42                                alt.expr = distributeAddr( alt.expr );
     43                                *out++ = alt;
    4844                        }
    49                 }
    50                 Type * res = expr->get_result();
    51                 if ( TupleType * tupleType = dynamic_cast< TupleType * > ( res ) ) {
     45                } else if ( TupleType * tupleType = dynamic_cast< TupleType * > ( res ) ) {
    5246                        if ( TupleExpr * tupleExpr = dynamic_cast< TupleExpr * >( expr ) ) {
    5347                                // can open tuple expr and dump its exploded components
    5448                                for ( Expression * expr : tupleExpr->get_exprs() ) {
    55                                         explodeUnique( expr, alt, indexer, out, isTupleAssign );
     49                                        explodeUnique( expr, alt, indexer, out );
    5650                                }
    5751                        } else {
     
    6458                                for ( unsigned int i = 0; i < tupleType->size(); i++ ) {
    6559                                        TupleIndexExpr * idx = new TupleIndexExpr( arg->clone(), i );
    66                                         explodeUnique( idx, alt, indexer, out, isTupleAssign );
     60                                        explodeUnique( idx, alt, indexer, out );
    6761                                        delete idx;
    6862                                }
     
    7771        /// expands a tuple-valued alternative into multiple alternatives, each with a non-tuple-type
    7872        template< typename OutputIterator >
    79         void explode( const ResolvExpr::Alternative &alt, const SymTab::Indexer & indexer, OutputIterator out, bool isTupleAssign = false ) {
    80                 explodeUnique( alt.expr, alt, indexer, out, isTupleAssign );
     73        void explode( const ResolvExpr::Alternative &alt, const SymTab::Indexer & indexer, OutputIterator out ) {
     74                explodeUnique( alt.expr, alt, indexer, out );
    8175        }
    8276
    8377        // explode list of alternatives
    8478        template< typename AltIterator, typename OutputIterator >
    85         void explode( AltIterator altBegin, AltIterator altEnd, const SymTab::Indexer & indexer, OutputIterator out, bool isTupleAssign = false ) {
     79        void explode( AltIterator altBegin, AltIterator altEnd, const SymTab::Indexer & indexer, OutputIterator out ) {
    8680                for ( ; altBegin != altEnd; ++altBegin ) {
    87                         explode( *altBegin, indexer, out, isTupleAssign );
     81                        explode( *altBegin, indexer, out );
    8882                }
    8983        }
    9084
    9185        template< typename OutputIterator >
    92         void explode( const ResolvExpr::AltList & alts, const SymTab::Indexer & indexer, OutputIterator out, bool isTupleAssign = false ) {
    93                 explode( alts.begin(), alts.end(), indexer, out, isTupleAssign );
     86        void explode( const ResolvExpr::AltList & alts, const SymTab::Indexer & indexer, OutputIterator out ) {
     87                explode( alts.begin(), alts.end(), indexer, out );
    9488        }
    9589} // namespace Tuples
  • src/Tuples/TupleAssignment.cc

    r2162c2c rbb82c03  
    7373        };
    7474
    75         /// true if expr is an expression of tuple type
     75        /// true if expr is an expression of tuple type, i.e. a tuple expression, tuple variable, or MRV (multiple-return-value) function
    7676        bool isTuple( Expression *expr ) {
    7777                if ( ! expr ) return false;
    7878                assert( expr->has_result() );
    79                 return dynamic_cast< TupleType * >( expr->get_result() );
     79                return dynamic_cast<TupleExpr *>(expr) || expr->get_result()->size() > 1;
    8080        }
    8181
     
    142142                matcher->match( new_assigns );
    143143
    144                 if ( ! matcher->lhs.empty() || ! matcher->rhs.empty() ) {
    145                         // if both lhs and rhs are empty then this is the empty tuple case, wherein it's okay for new_assigns to be empty.
    146                         // if not the empty tuple case, return early so that no new alternatives are generated.
    147                         if ( new_assigns.empty() ) return;
    148                 }
     144                if ( new_assigns.empty() ) return;
    149145                ResolvExpr::AltList current;
    150146                // now resolve new assignments
     
    190186
    191187                // explode the lhs so that each field of the tuple-valued-expr is assigned.
    192                 explode( lhsAlt, spotter.currentFinder.get_indexer(), back_inserter(lhs), true );
     188                explode( lhsAlt, spotter.currentFinder.get_indexer(), back_inserter(lhs) );
    193189
    194190                // and finally, re-add the cast to each lhs expr, so that qualified tuple fields can be constructed
     
    215211        TupleAssignSpotter::MultipleAssignMatcher::MultipleAssignMatcher( TupleAssignSpotter &spotter, const ResolvExpr::AltList & alts ) : Matcher( spotter, alts ) {
    216212                // explode the rhs so that each field of the tuple-valued-expr is assigned.
    217                 explode( std::next(alts.begin(), 1), alts.end(), spotter.currentFinder.get_indexer(), back_inserter(rhs), true );
     213                explode( std::next(alts.begin(), 1), alts.end(), spotter.currentFinder.get_indexer(), back_inserter(rhs) );
    218214        }
    219215
     
    252248                static UniqueName lhsNamer( "__massassign_L" );
    253249                static UniqueName rhsNamer( "__massassign_R" );
    254                 // empty tuple case falls into this matcher, hence the second part of the assert
    255                 assert( (! lhs.empty() && rhs.size() <= 1) || (lhs.empty() && rhs.empty()) );
     250                assert ( ! lhs.empty() && rhs.size() <= 1);
    256251
    257252                ObjectDecl * rtmp = rhs.size() == 1 ? newObject( rhsNamer, rhs.front().expr ) : nullptr;
    258253                for ( ResolvExpr::Alternative & lhsAlt : lhs ) {
    259                         // create a temporary object for each value in the lhs and create a call involving the rhs
    260254                        ObjectDecl * ltmp = newObject( lhsNamer, lhsAlt.expr );
    261255                        out.push_back( createFunc( spotter.fname, ltmp, rtmp ) );
     
    269263                static UniqueName rhsNamer( "__multassign_R" );
    270264
     265                // xxx - need more complicated matching?
    271266                if ( lhs.size() == rhs.size() ) {
    272                         // produce a new temporary object for each value in the lhs and rhs and pairwise create the calls
    273267                        std::list< ObjectDecl * > ltmp;
    274268                        std::list< ObjectDecl * > rtmp;
  • src/Tuples/TupleExpansion.cc

    r2162c2c rbb82c03  
    144144
    145145        Expression * MemberTupleExpander::mutate( UntypedMemberExpr * memberExpr ) {
    146                 if ( UntypedTupleExpr * tupleExpr = dynamic_cast< UntypedTupleExpr * > ( memberExpr->get_member() ) ) {
     146                if ( TupleExpr * tupleExpr = dynamic_cast< TupleExpr * > ( memberExpr->get_member() ) ) {
    147147                        Expression * aggr = memberExpr->get_aggregate()->clone()->acceptMutator( *this );
    148148                        // aggregate expressions which might be impure must be wrapped in unique expressions
     
    225225                                decl->get_parameters().push_back( tyParam );
    226226                        }
    227                         if ( tupleType->size() == 0 ) {
    228                                 // empty structs are not standard C. Add a dummy field to empty tuples to silence warnings when a compound literal Tuple0 is created.
    229                                 decl->get_members().push_back( new ObjectDecl( "dummy", DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr ) );
    230                         }
    231227                        typeMap[mangleName] = decl;
    232228                        addDeclaration( decl );
     
    319315                        qualifiers &= type->get_qualifiers();
    320316                } // for
    321                 if ( exprs.empty() ) qualifiers = Type::Qualifiers();
    322317                return tupleType;
    323         }
    324 
    325         TypeInstType * isTtype( Type * type ) {
    326                 if ( TypeInstType * inst = dynamic_cast< TypeInstType * >( type ) ) {
    327                         if ( inst->get_baseType()->get_kind() == TypeDecl::Ttype ) {
    328                                 return inst;
    329                         }
    330                 }
    331                 return nullptr;
    332318        }
    333319
  • src/Tuples/Tuples.h

    r2162c2c rbb82c03  
    4242        Type * makeTupleType( const std::list< Expression * > & exprs );
    4343
    44         /// returns a TypeInstType if `type` is a ttype, nullptr otherwise
    45         TypeInstType * isTtype( Type * type );
    46 
    4744        /// returns true if the expression may contain side-effects.
    4845        bool maybeImpure( Expression * expr );
  • src/libcfa/math.c

    r2162c2c rbb82c03  
    1 //
     1// 
    22// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
    33//
    44// The contents of this file are covered under the licence agreement in the
    55// file "LICENCE" distributed with Cforall.
    6 //
    7 // math.c --
    8 //
     6// 
     7// math.c -- 
     8// 
    99// Author           : Peter A. Buhr
    1010// Created On       : Tue Apr 19 22:23:08 2016
     
    1212// Last Modified On : Sun Apr 24 08:52:31 2016
    1313// Update Count     : 75
    14 //
     14// 
    1515
    1616#include "math"
     
    3434long double remainder( long double x, long double y ) { return remainderl( x, y ); }
    3535
    36 [ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
     36// [ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
    3737float remquo( float x, float y, int *quo ) { return remquof( x, y, quo ); }
    38 [ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
    39 [ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
     38// [ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
     39// [ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
    4040long double remquo( long double x, long double y, int *quo ) { return remquol( x, y, quo ); }
    4141
    42 [ int, float ] div( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
     42// [ int, float ] div( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
    4343float div( float x, float y, int *quo ) { return remquof( x, y, quo ); }
    44 [ int, double ] div( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
    45 [ int, long double ] div( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
     44// [ int, double ] div( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
     45// [ int, long double ] div( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
    4646long double div( long double x, long double y, int *quo ) { return remquol( x, y, quo ); }
    4747
     
    278278long double ldexp( long double x, int exp2 ) { return ldexpl( x, exp2 ); }
    279279
    280 [ float, float ] modf( float x ) { float i; x = modff( x, &i ); return [ i, x ]; }
     280// [ float, float ] modf( float x ) { float i; x = modff( x, &i ); return [ i, x ]; }
    281281float modf( float x, float *i ) { return modff( x, i ); }
    282 [ double, double ] modf( double x ) { double i; x = modf( x, &i ); return [ i, x ]; }
    283 [ long double, long double ] modf( long double x ) { long double i; x = modfl( x, &i ); return [ i, x ]; }
     282// [ double, double ] modf( double x ) { double i; x = modf( x, &i ); return [ i, x ]; }
     283// [ long double, long double ] modf( long double x ) { long double i; x = modfl( x, &i ); return [ i, x ]; }
    284284long double modf( long double x, long double *i ) { return modfl( x, i ); }
    285285
  • src/libcfa/stdlib

    r2162c2c rbb82c03  
    4747void free( void * ptr );
    4848} // extern "C"
    49 
    50 forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p );
    51 forall( dtype T | { void ^?{}(T *); } ) void delete( T * ptr );
    52 
    5349
    5450//---------------------------------------
  • src/libcfa/stdlib.c

    r2162c2c rbb82c03  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // algorithm.c --
     7// algorithm.c -- 
    88//
    99// Author           : Peter A. Buhr
     
    7878} // posix_memalign
    7979
    80 forall( otype T, ttype Params | { void ?{}(T *, Params); } )
    81 T * new( Params p ) {
    82         return ((T*)malloc()){ p };
    83 }
    84 
    85 forall( dtype T | { void ^?{}(T *); } )
    86 void delete( T * ptr ) {
    87   if ( ptr ) {
    88     ^ptr{};
    89     free( ptr );
    90   }
    91 }
    92 
    9380//---------------------------------------
    9481
     
    154141        if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {}
    155142        return re + im * _Complex_I;
    156 }
     143}       
    157144
    158145int strto( const char * sptr, char ** eptr, int base ) {
     
    226213//---------------------------------------
    227214
    228 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
    229 [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2 ]; }
     215// forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )
     216// [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2 ]; }
    230217
    231218//---------------------------------------
  • src/main.cc

    r2162c2c rbb82c03  
    6969        symtabp = false,
    7070        treep = false,
    71         tuplep = false,
    7271        validp = false,
    7372        errorp = false,
     
    267266                OPTPRINT( "expandUniqueExpr" ); // xxx - is this the right place for this? want to expand ASAP so that subsequent passes don't need to worry about double-visiting a unique expr - needs to go after InitTweak::fix so that copy constructed return declarations are reused
    268267                Tuples::expandUniqueExpr( translationUnit );
    269 
    270                 OPTPRINT( "convertSpecializations" ) // needs to happen before tuple types are expanded
    271                 GenPoly::convertSpecializations( translationUnit );
    272 
    273268                OPTPRINT( "expandTuples" ); // xxx - is this the right place for this?
    274269                Tuples::expandTuples( translationUnit );
    275                 if ( tuplep ) {
    276                         dump( translationUnit );
    277                         return 0;
    278                 }
    279270
    280271                OPTPRINT("instantiateGenerics")
     
    282273                OPTPRINT( "copyParams" );
    283274                GenPoly::copyParams( translationUnit );
     275                OPTPRINT( "convertSpecializations" )
     276                GenPoly::convertSpecializations( translationUnit );
    284277                OPTPRINT( "convertLvalue" )
    285278                GenPoly::convertLvalue( translationUnit );
     
    334327
    335328void parse_cmdline( int argc, char * argv[], const char *& filename ) {
    336         enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, };
     329        enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
    337330
    338331        static struct option long_opts[] = {
     
    351344                { "symbol", no_argument, 0, Symbol },
    352345                { "tree", no_argument, 0, Tree },
    353                 { "tuple-expansion", no_argument, 0, TupleExpansion },
    354346                { "validate", no_argument, 0, Validate },
    355347                { 0, 0, 0, 0 }
     
    360352
    361353        int c;
    362         while ( (c = getopt_long( argc, argv, "abBcefglnpqrstTvyzD:F:", long_opts, &long_index )) != -1 ) {
     354        while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
    363355                switch ( c ) {
    364356                  case Ast:
     
    370362                        bresolvep = true;
    371363                        break;
    372                   case 'B':                                                                             // print before box steps
     364                  case 'B':                                                                             // print before resolver steps
    373365                        bboxp = true;
    374366                        break;
     
    416408                  case 't':                                                                             // build in tree
    417409                        treep = true;
    418                         break;
    419                   case TupleExpansion:
    420                   case 'T':                                                                             // print after tuple expansion
    421                         tuplep = true;
    422410                        break;
    423411                  case 'v':                                                                             // dump AST after decl validation pass
  • src/tests/avltree/avl.h

    r2162c2c rbb82c03  
    1919forall(otype T | Comparable(T))
    2020int ?>?(T t1, T t2);
    21 
    22 // xxx - unbound type variable problems when trying to use new instead of create
    23 // forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p );
    2421
    2522forall(dtype T | { void ^?{}(T *); })
  • src/tests/avltree/avl0.c

    r2162c2c rbb82c03  
    1010  return t2 < t1;
    1111}
     12
     13forall(dtype T | { void ^?{}(T *); })
     14void delete(T * x) {
     15  if (x) {
     16    ^?{}(x);
     17    free(x);
     18  }
     19}
Note: See TracChangeset for help on using the changeset viewer.