diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-10-06 14:20:30 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-10-06 14:20:30 +0000 |
commit | 0f2952a1b9dca38240341ee5f52aac41082b7fb3 (patch) | |
tree | ca926df12cc21f9255b06e75608dc6cf68e8a63e /gcc/cp | |
parent | 8dba80b0ca4d214c61b6cc27b7a894522ae9067c (diff) | |
download | gcc-0f2952a1b9dca38240341ee5f52aac41082b7fb3.tar.gz |
* cp-tree.def (PTRMEM_CST): New tree node.
* cp-tree.h (ptrmem_cst): New type.
(lang_type): Remove local_typedecls.
(dummy): Increase to 12 bits from 11.
(CLASSTYPE_LOCAL_TYPEDECLS): Remove.
(PTRMEM_CST_CLASS): New macro.
(PTRMEM_CST_MEMBER): Likewise.
(current_access_specifier): New variable.
(current_class_type): Remove duplicate declaration.
(finish_struct): Change prototype.
(unreverse_member_declarations): New function.
(pushdecl_class_level): Change prototype.
(grok_enum_decls): Remove.
(fixup_anonymous_union): New function.
(grok_x_components): Change prototype.
(tsubst_chain): Remove.
(finish_member_template_decl): Likewise.
(check_explicit_specialization): Fix indentation.
(finish_class_definition): Change prototype.
(finish_member_class_template): Likewise.
(finish_member_declaration): New function.
(check_multiple_declarators): Likewise.
* class.c (class_stack_node_t): New type.
(current_class_base): Remove.
(current_class_stack): Change type.
(current_access_specifier): New variable.
(grow_method): Remove.
(check_member_decl_is_same_in_complete_scope): Break out from
finish_struct.
(make_method_vec): New function.
(free_method_vec): Likewise.
(add_implicitly_declared_members): Break out from finish_struct_1.
(free_method_vecs): New variable.
(add_method): Rework for direct use from parser.
(handle_using_decl): Watch for NULL_TREE while iterating through
CLASSTYPE_METHOD_VEC.
(finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
just do some error-checking.
(warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
(finish_struct_1): Simplify. Use add_implicitly_declared_members.
(finish_struct): Change prototype. Simplify; fields and methods
are already set up at this point.
(init_class_processing): Set up current_class_stack.
(pushclass): Save current_access_specifier.
(popclass): Restore it.
(currently_open_class): Simplify.
(build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
* decl.c (saved_scope): Add access_specifier.
(maybe_push_to_top_level): Save it.
(pop_from_top_level): Restore it.
(maybe_process_template_type_declaration): Use
finish_member_declaration.
(pushtag): Likewise.
(pushdecl_class_level): Don't return a value.
(fixup_anonymous_union): Break out from grok_x_components.
(shadow_tag): Use it.
(xref_tag): Complain about using an elaborated type specifier to
reference a template type parameter or typedef name.
(xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
(current_local_enum): Remove.
(build_enumerator): Call finish_member_declaration.
(grok_enum_decls): Remove.
* decl2.c (grok_x_components): Simplify.
(check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
(grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
(merge_functions): Add to comment.
(arg_assoc_type): Prototype.
(arg_assoc): Pass as many arguments as there are parameters.
* error.c (dump_expr): Handle PTRMEM_CST. Improve handling of
OFFSET_REF.
* expr.c (cpls_expand_expr): Remove dead code. Handle
PTRMEM_CST.
* friend.c (do_friend): Lookup friends when in nested classes.
Change comments.
* init.c (build_offset_ref): Do lookup even for classes that are
only partially defined.
(decl_constant_value): Remove dead code.
* method.c (build_overload_value): Remove hack where by TYPE was
not a TYPE. Handle PTRMEM_CST.
(build_template_parm_names): Don't pass a PARM_DECL where a TYPE
should go.
* parse.y (components, notype_components, component_decl,
component_decl_1, component_declarator, component_declarator0):
Now all are itype rather than ttype. Rework to add members to
classes on the fly.
(typesqpecqual_reserved): Use check_multiple_declarators.
(structsp): Update class to finish_class_definition.
(do_xref_defn): Unsplit into named_class_head.
(access_specifier): Set current_access_specifier.
* pt.c (set_current_access_from_decl): New function.
(finish_member_template_decl): Don't take the parameters.
(comp_template_args): Make more robust.
(lookup_template_class): Don't use current_local_enum.
(for_each_template_parm): Handle PTRMEM_CST.
(instantiate_class_template): Use set_current_access_from_decl,
finish_member_declaration and unreverse_member_declarations. Set
lineno/input_filename before generating implicit member functions.
(type_unification_real): Don't assume back-unification happens
only for the last argument.
(regenerate_decl_from_template): Call pushclass a bit earlier.
(tsubst_chain): Remove.
(tsubst_enum): Use set_current_access_from_decl.
(set_mangled_name_for_template_decl): Fix indentation.
* search.c (lookup_fnfields_1): Change iteration through
CLASSTYPE_METHOD_VEC.
(dfs_pushdecls): Likewise.
(dfs_compress_decls): Likewise.
(add_conversions): Likewise.
* semantics.c (finish_class_definition): Don't take components.
Change call to finish_struct.
(finish_member_declaration): New function.
(finish_member_class_template): Don't take template parameters.
Change call to grok_x_components. Call finish_member_template_decl.
(check_multiple_declarators): New function.
* sig.c (append_signature_fields): Work from the TYPE_METHODS, not
a passed in fieldlist.
* tree.c (search_tree): Handle PTRMEM_CST.
(mapcar): Likewise.
* typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
INTEGER_CSTs, for pointer-to-data members.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22869 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 121 | ||||
-rw-r--r-- | gcc/cp/class.c | 811 | ||||
-rw-r--r-- | gcc/cp/cp-tree.def | 5 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 59 | ||||
-rw-r--r-- | gcc/cp/decl.c | 164 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 158 | ||||
-rw-r--r-- | gcc/cp/error.c | 19 | ||||
-rw-r--r-- | gcc/cp/expr.c | 42 | ||||
-rw-r--r-- | gcc/cp/friend.c | 25 | ||||
-rw-r--r-- | gcc/cp/init.c | 45 | ||||
-rw-r--r-- | gcc/cp/method.c | 33 | ||||
-rw-r--r-- | gcc/cp/parse.c | 6636 | ||||
-rw-r--r-- | gcc/cp/parse.y | 158 | ||||
-rw-r--r-- | gcc/cp/pt.c | 206 | ||||
-rw-r--r-- | gcc/cp/search.c | 49 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 134 | ||||
-rw-r--r-- | gcc/cp/sig.c | 50 | ||||
-rw-r--r-- | gcc/cp/tree.c | 19 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 17 |
19 files changed, 4514 insertions, 4237 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ff3901d3855..1588d2d3da8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,126 @@ 1998-10-06 Mark Mitchell <mark@markmitchell.com> + * cp-tree.def (PTRMEM_CST): New tree node. + * cp-tree.h (ptrmem_cst): New type. + (lang_type): Remove local_typedecls. + (dummy): Increase to 12 bits from 11. + (CLASSTYPE_LOCAL_TYPEDECLS): Remove. + (PTRMEM_CST_CLASS): New macro. + (PTRMEM_CST_MEMBER): Likewise. + (current_access_specifier): New variable. + (current_class_type): Remove duplicate declaration. + (finish_struct): Change prototype. + (unreverse_member_declarations): New function. + (pushdecl_class_level): Change prototype. + (grok_enum_decls): Remove. + (fixup_anonymous_union): New function. + (grok_x_components): Change prototype. + (tsubst_chain): Remove. + (finish_member_template_decl): Likewise. + (check_explicit_specialization): Fix indentation. + (finish_class_definition): Change prototype. + (finish_member_class_template): Likewise. + (finish_member_declaration): New function. + (check_multiple_declarators): Likewise. + * class.c (class_stack_node_t): New type. + (current_class_base): Remove. + (current_class_stack): Change type. + (current_access_specifier): New variable. + (grow_method): Remove. + (check_member_decl_is_same_in_complete_scope): Break out from + finish_struct. + (make_method_vec): New function. + (free_method_vec): Likewise. + (add_implicitly_declared_members): Break out from finish_struct_1. + (free_method_vecs): New variable. + (add_method): Rework for direct use from parser. + (handle_using_decl): Watch for NULL_TREE while iterating through + CLASSTYPE_METHOD_VEC. + (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here; + just do some error-checking. + (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC. + (finish_struct_1): Simplify. Use add_implicitly_declared_members. + (finish_struct): Change prototype. Simplify; fields and methods + are already set up at this point. + (init_class_processing): Set up current_class_stack. + (pushclass): Save current_access_specifier. + (popclass): Restore it. + (currently_open_class): Simplify. + (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS. + * decl.c (saved_scope): Add access_specifier. + (maybe_push_to_top_level): Save it. + (pop_from_top_level): Restore it. + (maybe_process_template_type_declaration): Use + finish_member_declaration. + (pushtag): Likewise. + (pushdecl_class_level): Don't return a value. + (fixup_anonymous_union): Break out from grok_x_components. + (shadow_tag): Use it. + (xref_tag): Complain about using an elaborated type specifier to + reference a template type parameter or typedef name. + (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS. + (current_local_enum): Remove. + (build_enumerator): Call finish_member_declaration. + (grok_enum_decls): Remove. + * decl2.c (grok_x_components): Simplify. + (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC. + (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS. + (merge_functions): Add to comment. + (arg_assoc_type): Prototype. + (arg_assoc): Pass as many arguments as there are parameters. + * error.c (dump_expr): Handle PTRMEM_CST. Improve handling of + OFFSET_REF. + * expr.c (cpls_expand_expr): Remove dead code. Handle + PTRMEM_CST. + * friend.c (do_friend): Lookup friends when in nested classes. + Change comments. + * init.c (build_offset_ref): Do lookup even for classes that are + only partially defined. + (decl_constant_value): Remove dead code. + * method.c (build_overload_value): Remove hack where by TYPE was + not a TYPE. Handle PTRMEM_CST. + (build_template_parm_names): Don't pass a PARM_DECL where a TYPE + should go. + * parse.y (components, notype_components, component_decl, + component_decl_1, component_declarator, component_declarator0): + Now all are itype rather than ttype. Rework to add members to + classes on the fly. + (typesqpecqual_reserved): Use check_multiple_declarators. + (structsp): Update class to finish_class_definition. + (do_xref_defn): Unsplit into named_class_head. + (access_specifier): Set current_access_specifier. + * pt.c (set_current_access_from_decl): New function. + (finish_member_template_decl): Don't take the parameters. + (comp_template_args): Make more robust. + (lookup_template_class): Don't use current_local_enum. + (for_each_template_parm): Handle PTRMEM_CST. + (instantiate_class_template): Use set_current_access_from_decl, + finish_member_declaration and unreverse_member_declarations. Set + lineno/input_filename before generating implicit member functions. + (type_unification_real): Don't assume back-unification happens + only for the last argument. + (regenerate_decl_from_template): Call pushclass a bit earlier. + (tsubst_chain): Remove. + (tsubst_enum): Use set_current_access_from_decl. + (set_mangled_name_for_template_decl): Fix indentation. + * search.c (lookup_fnfields_1): Change iteration through + CLASSTYPE_METHOD_VEC. + (dfs_pushdecls): Likewise. + (dfs_compress_decls): Likewise. + (add_conversions): Likewise. + * semantics.c (finish_class_definition): Don't take components. + Change call to finish_struct. + (finish_member_declaration): New function. + (finish_member_class_template): Don't take template parameters. + Change call to grok_x_components. Call finish_member_template_decl. + (check_multiple_declarators): New function. + * sig.c (append_signature_fields): Work from the TYPE_METHODS, not + a passed in fieldlist. + * tree.c (search_tree): Handle PTRMEM_CST. + (mapcar): Likewise. + * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not + INTEGER_CSTs, for pointer-to-data members. + * call.c (resolve_args): Resolve template specializations, if possible. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index b64a91ad9a6..33a443475c2 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -43,11 +43,32 @@ extern struct obstack permanent_obstack; extern void set_class_shadows PROTO ((tree)); -/* Way of stacking class types. */ -static tree *current_class_base, *current_class_stack; -static int current_class_stacksize; +/* The number of nested classes being processed. If we are not in the + scope of any class, this is zero. */ + int current_class_depth; +/* In order to deal with nested classes, we keep a stack of classes. + The topmost entry is the innermost class, and is the entry at index + CURRENT_CLASS_DEPTH */ + +typedef struct class_stack_node { + /* The name of the class. */ + tree name; + + /* The _TYPE node for the class. */ + tree type; + + /* The access specifier pending for new declarations in the scope of + this class. */ + tree access; +}* class_stack_node_t; + +/* The stack itself. This is an dynamically resized array. The + number of elements allocated is CURRENT_CLASS_STACK_SIZE. */ +static int current_class_stack_size; +static class_stack_node_t current_class_stack; + /* When we're processing a member function, current_class_ptr is the PARM_DECL for the `this' pointer. The current_class_ref is an expression for `*this'. */ @@ -56,6 +77,7 @@ tree current_class_ptr, current_class_ref; /* The following two can be derived from the previous one */ tree current_class_name; /* IDENTIFIER_NODE: name of current class */ tree current_class_type; /* _TYPE: the type of the current class */ +tree current_access_specifier; tree previous_class_type; /* _TYPE: the previous type that was a class */ tree previous_class_values; /* TREE_LIST: copy of the class_shadowed list when leaving an outermost class scope. */ @@ -74,7 +96,6 @@ static tree build_vtable PROTO((tree, tree)); static void prepare_fresh_vtable PROTO((tree, tree)); static void fixup_vtable_deltas1 PROTO((tree, tree)); static void fixup_vtable_deltas PROTO((tree, int, tree)); -static void grow_method PROTO((tree, tree *)); static void finish_vtbls PROTO((tree, int, tree)); static void modify_vtable_entry PROTO((tree, tree, tree)); static tree get_vtable_entry_n PROTO((tree, unsigned HOST_WIDE_INT)); @@ -103,6 +124,10 @@ static void build_class_init_list PROTO((tree)); static int finish_base_struct PROTO((tree, struct base_info *)); static void finish_struct_methods PROTO((tree)); static void maybe_warn_about_overly_private_class PROTO ((tree)); +static void check_member_decl_is_same_in_complete_scope PROTO((tree, tree)); +static tree make_method_vec PROTO((int)); +static void free_method_vec PROTO((tree)); +static tree add_implicitly_declared_members PROTO((tree, int, int, int)); /* Way of stacking language names. */ tree *current_lang_base, *current_lang_stack; @@ -1046,6 +1071,46 @@ add_virtual_function (pv, phv, has_virtual, fndecl, t) struct obstack class_obstack; extern struct obstack *current_obstack; +/* These are method vectors that were too small for the number of + methods in some class, and so were abandoned. */ +static tree free_method_vecs; + +/* Returns a method vector with enough room for N methods. N should + be a power of two. */ + +static tree +make_method_vec (n) + int n; +{ + tree new_vec; + tree* t; + + for (t = &free_method_vecs; *t; t = &(TREE_CHAIN (*t))) + /* Note that we don't use >= n here because we don't want to + allocate a very large vector where it isn't needed. */ + if (TREE_VEC_LENGTH (*t) == n) + { + new_vec = *t; + *t = TREE_CHAIN (new_vec); + TREE_CHAIN (new_vec) = NULL_TREE; + bzero (&TREE_VEC_ELT (new_vec, 0), n * sizeof (tree)); + return new_vec; + } + + new_vec = make_tree_vec (n); + return new_vec; +} + +/* Free the method vector VEC. */ + +static void +free_method_vec (vec) + tree vec; +{ + TREE_CHAIN (vec) = free_method_vecs; + free_method_vecs = vec; +} + /* Add method METHOD to class TYPE. This is used when a method has been defined which did not initially appear in the class definition, and helps cut down on spurious error messages. @@ -1059,109 +1124,127 @@ add_method (type, fields, method) { push_obstacks (&permanent_obstack, &permanent_obstack); + /* Setting the DECL_CONTEXT and DECL_CLASS_CONTEXT here is probably + redundant. */ + DECL_CONTEXT (method) = type; + DECL_CLASS_CONTEXT (method) = type; + if (fields && *fields) - *fields = build_overload (method, *fields); - else if (CLASSTYPE_METHOD_VEC (type) == 0) - { - tree method_vec = make_node (TREE_VEC); - if (TYPE_IDENTIFIER (type) == DECL_NAME (method)) - { - /* ??? Is it possible for there to have been enough room in the - current chunk for the tree_vec structure but not a tree_vec - plus a tree*? Will this work in that case? */ - obstack_free (current_obstack, method_vec); - obstack_blank (current_obstack, sizeof (struct tree_vec) + sizeof (tree *)); - if (DESTRUCTOR_NAME_P (DECL_ASSEMBLER_NAME (method))) - TREE_VEC_ELT (method_vec, 1) = method; - else - TREE_VEC_ELT (method_vec, 0) = method; - TREE_VEC_LENGTH (method_vec) = 2; - } - else + *fields = build_overload (method, *fields); + else + { + int len; + tree method_vec; + + if (!CLASSTYPE_METHOD_VEC (type)) + /* Make a new method vector. We start with 8 entries. We must + allocate at least two (for constructors and destructors), and + we're going to end up with an assignment operator at some + point as well. + + We could use a TREE_LIST for now, and convert it to a + TREE_VEC in finish_struct, but we would probably waste more + memory making the links in the list than we would by + over-allocating the size of the vector here. Furthermore, + we would complicate all the code that expects this to be a + vector. We keep a free list of vectors that we outgrew so + that we don't really waste any memory. */ + CLASSTYPE_METHOD_VEC (type) = make_method_vec (8); + + method_vec = CLASSTYPE_METHOD_VEC (type); + len = TREE_VEC_LENGTH (method_vec); + + if (DECL_NAME (method) == constructor_name (type)) { - /* ??? Is it possible for there to have been enough room in the - current chunk for the tree_vec structure but not a tree_vec - plus a tree*? Will this work in that case? */ - obstack_free (current_obstack, method_vec); - obstack_blank (current_obstack, sizeof (struct tree_vec) + 2*sizeof (tree *)); - TREE_VEC_ELT (method_vec, 2) = method; - TREE_VEC_LENGTH (method_vec) = 3; - obstack_finish (current_obstack); - } - CLASSTYPE_METHOD_VEC (type) = method_vec; - } - else - { - tree method_vec = CLASSTYPE_METHOD_VEC (type); - int len = TREE_VEC_LENGTH (method_vec); + /* A new constructor or destructor. Constructors go in + slot 0; destructors go in slot 1. */ + int slot + = DESTRUCTOR_NAME_P (DECL_ASSEMBLER_NAME (method)) ? 1 : 0; - /* Adding a new ctor or dtor. This is easy because our - METHOD_VEC always has a slot for such entries. */ - if (TYPE_IDENTIFIER (type) == DECL_NAME (method)) - { - int idx = !!DESTRUCTOR_NAME_P (DECL_ASSEMBLER_NAME (method)); - /* TREE_VEC_ELT (method_vec, idx) = method; */ - if (method != TREE_VEC_ELT (method_vec, idx)) - TREE_VEC_ELT (method_vec, idx) = - build_overload (method, TREE_VEC_ELT (method_vec, idx)); + TREE_VEC_ELT (method_vec, slot) + = build_overload (method, TREE_VEC_ELT (method_vec, slot)); } else { - /* This is trickier. We try to extend the TREE_VEC in-place, - but if that does not work, we copy all its data to a new - TREE_VEC that's large enough. */ - struct obstack *ob = &class_obstack; - tree *end = (tree *)obstack_next_free (ob); + int i; - if (end != TREE_VEC_END (method_vec)) + /* See if we already have an entry with this name. */ + for (i = 2; i < len; ++i) + if (!TREE_VEC_ELT (method_vec, i) + || (DECL_NAME (OVL_CURRENT (TREE_VEC_ELT (method_vec, i))) + == DECL_NAME (method))) + break; + + if (i == len) { - ob = current_obstack; - TREE_VEC_LENGTH (method_vec) += 1; - TREE_VEC_ELT (method_vec, len) = NULL_TREE; - method_vec = copy_node (method_vec); - TREE_VEC_LENGTH (method_vec) -= 1; + /* We need a bigger method vector. */ + tree new_vec = make_method_vec (2 * len); + bcopy (&TREE_VEC_ELT (method_vec, 0), + &TREE_VEC_ELT (new_vec, 0), + len * sizeof (tree)); + free_method_vec (method_vec); + len = 2 * len; + method_vec = CLASSTYPE_METHOD_VEC (type) = new_vec; } - else + + if (IDENTIFIER_TYPENAME_P (DECL_NAME (method))) { - tree tmp_vec = (tree) obstack_base (ob); - if (obstack_room (ob) < sizeof (tree)) + /* Type conversion operators have to come before + ordinary methods; add_conversions depends on this to + speed up looking for conversion operators. So, if + necessary, we slide some of the vector elements up. + In theory, this makes this algorithm O(N^2) but we + don't expect many conversion operators. */ + for (i = 2; i < len; ++i) { - obstack_blank (ob, sizeof (struct tree_common) - + tree_code_length[(int) TREE_VEC] - * sizeof (char *) - + len * sizeof (tree)); - tmp_vec = (tree) obstack_base (ob); - bcopy ((char *) method_vec, (char *) tmp_vec, - (sizeof (struct tree_common) - + tree_code_length[(int) TREE_VEC] * sizeof (char *) - + (len-1) * sizeof (tree))); - method_vec = tmp_vec; + tree fn = TREE_VEC_ELT (method_vec, i); + tree name; + + if (!fn) + /* There are no more entries in the vector, so we + can insert the new conversion operator here. */ + break; + + name = DECL_NAME (OVL_CURRENT (fn)); + if (!IDENTIFIER_TYPENAME_P (name)) + /* We can insert the new function right at the Ith + position. */ + break; } + + if (!TREE_VEC_ELT (method_vec, i)) + /* There is nothing in the Ith slot, so we can avoid + moving anything. */ + ; else - obstack_blank (ob, sizeof (tree)); + { + /* We know the last slot in the vector is empty + because we know that at this point there's room for + a new function. */ + bcopy (&TREE_VEC_ELT (method_vec, i), + &TREE_VEC_ELT (method_vec, i + 1), + (len - i - 1) * sizeof (tree)); + TREE_VEC_ELT (method_vec, i) = NULL_TREE; + } } - obstack_finish (ob); - TREE_VEC_ELT (method_vec, len) = method; - TREE_VEC_LENGTH (method_vec) = len + 1; - CLASSTYPE_METHOD_VEC (type) = method_vec; - - if (TYPE_BINFO_BASETYPES (type) && CLASSTYPE_BASELINK_VEC (type)) - { - /* ??? May be better to know whether these can be extended? */ - tree baselink_vec = CLASSTYPE_BASELINK_VEC (type); - - TREE_VEC_LENGTH (baselink_vec) += 1; - CLASSTYPE_BASELINK_VEC (type) = copy_node (baselink_vec); - TREE_VEC_LENGTH (baselink_vec) -= 1; - - TREE_VEC_ELT (CLASSTYPE_BASELINK_VEC (type), len) = 0; - } + /* Actually insert the new method. */ + TREE_VEC_ELT (method_vec, i) + = build_overload (method, TREE_VEC_ELT (method_vec, i)); + } + + if (TYPE_BINFO_BASETYPES (type) && CLASSTYPE_BASELINK_VEC (type)) + { + /* ??? May be better to know whether these can be extended? */ + tree baselink_vec = CLASSTYPE_BASELINK_VEC (type); + + TREE_VEC_LENGTH (baselink_vec) += 1; + CLASSTYPE_BASELINK_VEC (type) = copy_node (baselink_vec); + TREE_VEC_LENGTH (baselink_vec) -= 1; + + TREE_VEC_ELT (CLASSTYPE_BASELINK_VEC (type), len) = 0; } } - DECL_CONTEXT (method) = type; - DECL_CLASS_CONTEXT (method) = type; - pop_obstacks (); } @@ -1360,7 +1443,7 @@ handle_using_decl (using_decl, t, method_vec, fields) name = DECL_NAME (fdecl); n_methods = method_vec ? TREE_VEC_LENGTH (method_vec) : 0; - for (i = 2; i < n_methods; i++) + for (i = 2; i < n_methods && TREE_VEC_ELT (method_vec, i); i++) if (DECL_NAME (OVL_CURRENT (TREE_VEC_ELT (method_vec, i))) == name) { @@ -1872,33 +1955,6 @@ finish_struct_bits (t, max_has_virtual) } } -/* Add FNDECL to the method_vec growing on the class_obstack. Used by - finish_struct_methods. Note, FNDECL cannot be a constructor or - destructor, those cases are handled by the caller. */ - -static void -grow_method (fndecl, method_vec_ptr) - tree fndecl; - tree *method_vec_ptr; -{ - tree method_vec = (tree)obstack_base (&class_obstack); - - /* Start off past the constructors and destructor. */ - tree *testp = &TREE_VEC_ELT (method_vec, 2); - - while (testp < (tree *) obstack_next_free (&class_obstack) - && (*testp == NULL_TREE || DECL_NAME (OVL_CURRENT (*testp)) != DECL_NAME (fndecl))) - testp++; - - if (testp < (tree *) obstack_next_free (&class_obstack)) - *testp = build_overload (fndecl, *testp); - else - { - obstack_ptr_grow (&class_obstack, fndecl); - *method_vec_ptr = (tree)obstack_base (&class_obstack); - } -} - /* Issue warnings about T having private constructors, but no friends, and so forth. @@ -2044,9 +2100,6 @@ maybe_warn_about_overly_private_class (t) /* Warn about duplicate methods in fn_fields. Also compact method lists so that lookup can be made faster. - Algorithm: Outer loop builds lists by method name. Inner loop - checks for redundant method names within a list. - Data Structure: List of method lists. The outer list is a TREE_LIST, whose TREE_PURPOSE field is the field name and the TREE_VALUE is the DECL_CHAIN of the FUNCTION_DECLs. TREE_CHAIN @@ -2069,22 +2122,10 @@ finish_struct_methods (t) tree t; { tree fn_fields; - tree method_vec; + tree method_vec = CLASSTYPE_METHOD_VEC (t); tree ctor_name = constructor_name (t); int i, n_baseclasses = CLASSTYPE_N_BASECLASSES (t); - /* Now prepare to gather fn_fields into vector. */ - struct obstack *ambient_obstack = current_obstack; - current_obstack = &class_obstack; - method_vec = make_tree_vec (2); - current_obstack = ambient_obstack; - - /* Now make this a live vector. */ - obstack_free (&class_obstack, method_vec); - - /* Save room for constructors and destructors. */ - obstack_blank (&class_obstack, sizeof (struct tree_vec) + sizeof (struct tree *)); - /* First fill in entry 0 with the constructors, entry 1 with destructors, and the next few with type conversion operators (if any). */ for (fn_fields = TYPE_METHODS (t); fn_fields; @@ -2119,32 +2160,8 @@ finish_struct_methods (t) TYPE_HAS_NONPUBLIC_CTOR (t) = 2; } } - if (DESTRUCTOR_NAME_P (DECL_ASSEMBLER_NAME (fn_fields))) - { - /* Destructors go in slot 1. */ - TREE_VEC_ELT (method_vec, 1) = - build_overload (fn_fields, TREE_VEC_ELT (method_vec, 1)); - } - else - { - /* Constructors go in slot 0. */ - TREE_VEC_ELT (method_vec, 0) = - build_overload (fn_fields, TREE_VEC_ELT (method_vec, 0)); - } - } - else if (IDENTIFIER_TYPENAME_P (fn_name)) - grow_method (fn_fields, &method_vec); - } - - for (fn_fields = TYPE_METHODS (t); fn_fields; - fn_fields = TREE_CHAIN (fn_fields)) - { - tree fn_name = DECL_NAME (fn_fields); - - if (fn_name == ctor_name || IDENTIFIER_TYPENAME_P (fn_name)) - continue; - - if (fn_name == ansi_opname[(int) MODIFY_EXPR]) + } + else if (fn_name == ansi_opname[(int) MODIFY_EXPR]) { tree parmtype = TREE_VALUE (FUNCTION_ARG_CHAIN (fn_fields)); @@ -2156,15 +2173,8 @@ finish_struct_methods (t) TYPE_HAS_NONPUBLIC_ASSIGN_REF (t) = 2; } } - - grow_method (fn_fields, &method_vec); } - TREE_VEC_LENGTH (method_vec) = (tree *)obstack_next_free (&class_obstack) - - (&TREE_VEC_ELT (method_vec, 0)); - obstack_finish (&class_obstack); - CLASSTYPE_METHOD_VEC (t) = method_vec; - if (TYPE_HAS_DESTRUCTOR (t) && !TREE_VEC_ELT (method_vec, 1)) /* We thought there was a destructor, but there wasn't. Some parse errors cause this anomalous situation. */ @@ -2178,6 +2188,7 @@ finish_struct_methods (t) destructors), compute where member functions of the same name reside in base classes. */ if (n_baseclasses != 0 + && method_vec && TREE_VEC_LENGTH (method_vec) > 2) { int len = TREE_VEC_LENGTH (method_vec); @@ -2185,11 +2196,13 @@ finish_struct_methods (t) int any_links = 0; tree baselink_binfo = build_tree_list (NULL_TREE, TYPE_BINFO (t)); - for (i = 2; i < len; i++) + for (i = 2; i < len && TREE_VEC_ELT (method_vec, i); i++) { + tree ovl = TREE_VEC_ELT (method_vec, i); + TREE_VEC_ELT (baselink_vec, i) = get_baselinks (baselink_binfo, t, - DECL_NAME (OVL_CURRENT (TREE_VEC_ELT (method_vec, i)))); + DECL_NAME (OVL_CURRENT (ovl))); if (TREE_VEC_ELT (baselink_vec, i) != 0) any_links = 1; } @@ -2995,7 +3008,7 @@ warn_hidden (t) int i; /* We go through each separately named virtual function. */ - for (i = 2; i < n_methods; ++i) + for (i = 2; i < n_methods && TREE_VEC_ELT (method_vec, i); ++i) { tree fns = TREE_VEC_ELT (method_vec, i); tree fndecl; @@ -3096,6 +3109,90 @@ finish_struct_anon (t) extern int interface_only, interface_unknown; +/* Create default constructors, assignment operators, and so forth for + the type indicated by T, if they are needed. + CANT_HAVE_DEFAULT_CTOR, CANT_HAVE_CONST_CTOR, and + CANT_HAVE_ASSIGNMENT are nonzero if, for whatever reason, the class + cannot have a default constructor, copy constructor taking a const + reference argument, or an assignment operator, respectively. If a + virtual destructor is created, its DECL is returned; otherwise the + return value is NULL_TREE. */ + +static tree +add_implicitly_declared_members (t, cant_have_default_ctor, + cant_have_const_cctor, + cant_have_assignment) + tree t; + int cant_have_default_ctor; + int cant_have_const_cctor; + int cant_have_assignment; +{ + tree default_fn; + tree implicit_fns = NULL_TREE; + tree name = TYPE_IDENTIFIER (t); + tree virtual_dtor = NULL_TREE; + tree *f; + + /* Destructor. */ + if (TYPE_NEEDS_DESTRUCTOR (t) && !TYPE_HAS_DESTRUCTOR (t) + && !IS_SIGNATURE (t)) + { + default_fn = cons_up_default_function (t, name, 0); + check_for_override (default_fn, t); + + /* If we couldn't make it work, then pretend we didn't need it. */ + if (default_fn == void_type_node) + TYPE_NEEDS_DESTRUCTOR (t) = 0; + else + { + TREE_CHAIN (default_fn) = implicit_fns; + implicit_fns = default_fn; + + if (DECL_VINDEX (default_fn)) + virtual_dtor = default_fn; + } + } + TYPE_NEEDS_DESTRUCTOR (t) |= TYPE_HAS_DESTRUCTOR (t); + + /* Default constructor. */ + if (! TYPE_HAS_CONSTRUCTOR (t) && ! cant_have_default_ctor + && ! IS_SIGNATURE (t)) + { + default_fn = cons_up_default_function (t, name, 2); + TREE_CHAIN (default_fn) = implicit_fns; + implicit_fns = default_fn; + } + + /* Copy constructor. */ + if (! TYPE_HAS_INIT_REF (t) && ! IS_SIGNATURE (t) && ! TYPE_FOR_JAVA (t)) + { + /* ARM 12.18: You get either X(X&) or X(const X&), but + not both. --Chip */ + default_fn = cons_up_default_function (t, name, + 3 + cant_have_const_cctor); + TREE_CHAIN (default_fn) = implicit_fns; + implicit_fns = default_fn; + } + + /* Assignment operator. */ + if (! TYPE_HAS_ASSIGN_REF (t) && ! IS_SIGNATURE (t) && ! TYPE_FOR_JAVA (t)) + { + default_fn = cons_up_default_function (t, name, + 5 + cant_have_assignment); + TREE_CHAIN (default_fn) = implicit_fns; + implicit_fns = default_fn; + } + + /* Now, hook all of the new functions on to TYPE_METHODS, + and add them to the CLASSTYPE_METHOD_VEC. */ + for (f = &implicit_fns; *f; f = &TREE_CHAIN (*f)) + add_method (t, 0, *f); + *f = TYPE_METHODS (t); + TYPE_METHODS (t) = implicit_fns; + + return virtual_dtor; +} + /* Create a RECORD_TYPE or UNION_TYPE node for a C struct or union declaration (or C++ class declaration). @@ -3121,10 +3218,6 @@ extern int interface_only, interface_unknown; inheritance. Additional virtual function tables have different DELTAs, which tell how to adjust `this' to point to the right thing. - LIST_OF_FIELDLISTS is just that. The elements of the list are - TREE_LIST elements, whose TREE_PURPOSE field tells what access - the list has, and the TREE_VALUE slot gives the actual fields. - ATTRIBUTES is the set of decl attributes to be applied, if any. */ tree @@ -3133,10 +3226,8 @@ finish_struct_1 (t, warn_anon) int warn_anon; { int old; - tree name = TYPE_IDENTIFIER (t); enum tree_code code = TREE_CODE (t); tree fields = TYPE_FIELDS (t); - tree fn_fields = TYPE_METHODS (t); tree x, last_x, method_vec; int has_virtual; int max_has_virtual; @@ -3145,6 +3236,7 @@ finish_struct_1 (t, warn_anon) tree abstract_virtuals = NULL_TREE; tree vfield; tree vfields; + tree virtual_dtor; int cant_have_default_ctor; int cant_have_const_ctor; int no_const_asn_ref; @@ -3262,8 +3354,6 @@ finish_struct_1 (t, warn_anon) if (IDENTIFIER_ERROR_LOCUS (DECL_ASSEMBLER_NAME (x))) continue; - DECL_CLASS_CONTEXT (x) = t; - /* Do both of these, even though they're in the same union; if the insn `r' member and the size `i' member are different sizes, as on the alpha, the larger of the two @@ -3626,32 +3716,6 @@ finish_struct_1 (t, warn_anon) CLASSTYPE_REF_FIELDS_NEED_INIT (t) = ref_sans_init; CLASSTYPE_ABSTRACT_VIRTUALS (t) = abstract_virtuals; - /* Synthesize any needed methods. Note that methods will be synthesized - for anonymous unions; grok_x_components undoes that. */ - - if (TYPE_NEEDS_DESTRUCTOR (t) && !TYPE_HAS_DESTRUCTOR (t) - && !IS_SIGNATURE (t)) - { - /* Here we must cons up a destructor on the fly. */ - tree dtor = cons_up_default_function (t, name, 0); - check_for_override (dtor, t); - - /* If we couldn't make it work, then pretend we didn't need it. */ - if (dtor == void_type_node) - TYPE_NEEDS_DESTRUCTOR (t) = 0; - else - { - /* Link dtor onto end of fn_fields. */ - - TREE_CHAIN (dtor) = fn_fields; - fn_fields = dtor; - - if (DECL_VINDEX (dtor)) - add_virtual_function (&pending_virtuals, &pending_hard_virtuals, - &has_virtual, dtor, t); - } - } - /* Effective C++ rule 11. */ if (has_pointers && warn_ecpp && TYPE_HAS_CONSTRUCTOR (t) && ! (TYPE_HAS_INIT_REF (t) && TYPE_HAS_ASSIGN_REF (t))) @@ -3667,9 +3731,9 @@ finish_struct_1 (t, warn_anon) else if (! TYPE_HAS_ASSIGN_REF (t)) cp_warning (" but does not override `operator=(const %T&)'", t); } - - TYPE_NEEDS_DESTRUCTOR (t) |= TYPE_HAS_DESTRUCTOR (t); - + + /* Do some bookkeeping that will guide the generation of implicitly + declared member functions. */ TYPE_HAS_COMPLEX_INIT_REF (t) |= (TYPE_HAS_INIT_REF (t) || TYPE_USES_VIRTUAL_BASECLASSES (t) || has_virtual || any_default_members); @@ -3679,46 +3743,23 @@ finish_struct_1 (t, warn_anon) if (! IS_SIGNATURE (t)) CLASSTYPE_NON_AGGREGATE (t) = ! aggregate || has_virtual || TYPE_HAS_CONSTRUCTOR (t); - - /* ARM $12.1: A default constructor will be generated for a class X - only if no constructor has been declared for class X. So we - check TYPE_HAS_CONSTRUCTOR also, to make sure we don't generate - one if they declared a constructor in this class. */ - if (! TYPE_HAS_CONSTRUCTOR (t) && ! cant_have_default_ctor - && ! IS_SIGNATURE (t)) - { - tree default_fn = cons_up_default_function (t, name, 2); - TREE_CHAIN (default_fn) = fn_fields; - fn_fields = default_fn; - } - - /* Create default copy constructor, if needed. */ - if (! TYPE_HAS_INIT_REF (t) && ! IS_SIGNATURE (t) && ! TYPE_FOR_JAVA (t)) - { - /* ARM 12.18: You get either X(X&) or X(const X&), but - not both. --Chip */ - tree default_fn = cons_up_default_function (t, name, - 3 + cant_have_const_ctor); - TREE_CHAIN (default_fn) = fn_fields; - fn_fields = default_fn; - } - TYPE_HAS_REAL_ASSIGNMENT (t) |= TYPE_HAS_ASSIGNMENT (t); TYPE_HAS_REAL_ASSIGN_REF (t) |= TYPE_HAS_ASSIGN_REF (t); TYPE_HAS_COMPLEX_ASSIGN_REF (t) |= TYPE_HAS_ASSIGN_REF (t) || TYPE_USES_VIRTUAL_BASECLASSES (t); - if (! TYPE_HAS_ASSIGN_REF (t) && ! IS_SIGNATURE (t) && ! TYPE_FOR_JAVA (t)) - { - tree default_fn = cons_up_default_function (t, name, - 5 + no_const_asn_ref); - TREE_CHAIN (default_fn) = fn_fields; - fn_fields = default_fn; - } + /* Synthesize any needed methods. Note that methods will be synthesized + for anonymous unions; grok_x_components undoes that. */ + virtual_dtor + = add_implicitly_declared_members (t, cant_have_default_ctor, + cant_have_const_ctor, + no_const_asn_ref); + if (virtual_dtor) + add_virtual_function (&pending_virtuals, &pending_hard_virtuals, + &has_virtual, virtual_dtor, t); - if (fn_fields) + if (TYPE_METHODS (t)) { - TYPE_METHODS (t) = fn_fields; finish_struct_methods (t); method_vec = CLASSTYPE_METHOD_VEC (t); } @@ -3806,12 +3847,12 @@ finish_struct_1 (t, warn_anon) for (x = fields; x; x = TREE_CHAIN (x)) { tree name = DECL_NAME (x); - int i = 2; + int i; if (TREE_CODE (x) == TYPE_DECL && DECL_ARTIFICIAL (x)) continue; - for (; i < n_methods; ++i) + for (i = 2; i < n_methods && TREE_VEC_ELT (method_vec, i); ++i) if (DECL_NAME (OVL_CURRENT (TREE_VEC_ELT (method_vec, i))) == name) { @@ -4229,18 +4270,94 @@ finish_struct_1 (t, warn_anon) return t; } +/* In [basic.scope.class] we have: + + A name N used in a class S shall refer to the same declaration in + its context and when re-evaluated in the completed scope of S. + + This function checks this condition for X, which is a member of + T. */ + +static void +check_member_decl_is_same_in_complete_scope (t, x) + tree t; + tree x; +{ + /* A name N used in a class S shall refer to the same declaration in + its context and when re-evaluated in the completed scope of S. + + Enums, types and static vars have already been checked. */ + if (TREE_CODE (x) != USING_DECL + && TREE_CODE (x) != TYPE_DECL && !DECL_CLASS_TEMPLATE_P (x) + && TREE_CODE (x) != CONST_DECL && TREE_CODE (x) != VAR_DECL) + { + tree name = DECL_NAME (x); + tree icv; + + /* Don't get confused by access decls. */ + if (name && TREE_CODE (name) == IDENTIFIER_NODE) + icv = IDENTIFIER_CLASS_VALUE (name); + else + icv = NULL_TREE; + + if (icv + /* Don't complain about constructors. */ + && name != constructor_name (current_class_type) + /* Or inherited names. */ + && id_in_current_class (name) + /* Or shadowed tags. */ + && !(TREE_CODE (icv) == TYPE_DECL && DECL_CONTEXT (icv) == t)) + { + cp_pedwarn_at ("declaration of identifier `%D' as `%+#D'", + name, x); + cp_pedwarn_at ("conflicts with other use in class as `%#D'", + icv); + } + } +} + +/* When T was built up, the member declarations were added in reverse + order. Rearrange them to declaration order. */ + +void +unreverse_member_declarations (t) + tree t; +{ + tree next; + tree prev; + tree x; + + /* The TYPE_FIELDS, TYPE_METHODS, and CLASSTYPE_TAGS are all in + reverse order. Put them in declaration order now. */ + TYPE_METHODS (t) = nreverse (TYPE_METHODS (t)); + CLASSTYPE_TAGS (t) = nreverse (CLASSTYPE_TAGS (t)); + + /* Actually, for the TYPE_FIELDS, only the non TYPE_DECLs are in + reverse order, so we can't just use nreverse. */ + prev = NULL_TREE; + for (x = TYPE_FIELDS (t); + x && TREE_CODE (x) != TYPE_DECL; + x = next) + { + next = TREE_CHAIN (x); + TREE_CHAIN (x) = prev; + prev = x; + } + if (prev) + { + TREE_CHAIN (TYPE_FIELDS (t)) = x; + if (prev) + TYPE_FIELDS (t) = prev; + } +} + tree -finish_struct (t, list_of_fieldlists, attributes, warn_anon) - tree t, list_of_fieldlists, attributes; +finish_struct (t, attributes, warn_anon) + tree t, attributes; int warn_anon; { - tree fields = NULL_TREE; - tree *tail = &TYPE_METHODS (t); tree name = TYPE_NAME (t); - tree x, last_x = NULL_TREE; - tree access; - tree dummy = NULL_TREE; - tree next_x = NULL_TREE; + tree x; if (TREE_CODE (name) == TYPE_DECL) { @@ -4260,147 +4377,23 @@ finish_struct (t, list_of_fieldlists, attributes, warn_anon) /* Append the fields we need for constructing signature tables. */ if (IS_SIGNATURE (t)) - append_signature_fields (list_of_fieldlists); - - /* Move our self-reference declaration to the end of the field list so - any real field with the same name takes precedence. */ - if (list_of_fieldlists - && TREE_VALUE (list_of_fieldlists) - && DECL_ARTIFICIAL (TREE_VALUE (list_of_fieldlists))) - { - dummy = TREE_VALUE (list_of_fieldlists); - list_of_fieldlists = TREE_CHAIN (list_of_fieldlists); - } - - if (last_x && list_of_fieldlists) - TREE_CHAIN (last_x) = TREE_VALUE (list_of_fieldlists); - - while (list_of_fieldlists) - { - access = TREE_PURPOSE (list_of_fieldlists); - - /* For signatures, we made all methods `public' in the parser and - reported an error if a access specifier was used. */ - if (access == access_default_node) - { - if (CLASSTYPE_DECLARED_CLASS (t) == 0) - access = access_public_node; - else - access = access_private_node; - } - - for (x = TREE_VALUE (list_of_fieldlists); x; x = next_x) - { - next_x = TREE_CHAIN (x); - - TREE_PRIVATE (x) = access == access_private_node; - TREE_PROTECTED (x) = access == access_protected_node; - - if (TREE_CODE (x) == TEMPLATE_DECL) - { - TREE_PRIVATE (DECL_RESULT (x)) = TREE_PRIVATE (x); - TREE_PROTECTED (DECL_RESULT (x)) = TREE_PROTECTED (x); - } + append_signature_fields (t); - /* A name N used in a class S shall refer to the same declaration - in its context and when re-evaluated in the completed scope of S. + /* Now that we've got all the field declarations, reverse everything + as necessary. */ + unreverse_member_declarations (t); - Enums, types and static vars have already been checked. */ - if (TREE_CODE (x) != TYPE_DECL && TREE_CODE (x) != USING_DECL - && ! (TREE_CODE (x) == TEMPLATE_DECL - && TREE_CODE (DECL_RESULT (x)) == TYPE_DECL) - && TREE_CODE (x) != CONST_DECL && TREE_CODE (x) != VAR_DECL) - { - tree name = DECL_NAME (x); - tree icv; - - /* Don't get confused by access decls. */ - if (name && TREE_CODE (name) == IDENTIFIER_NODE) - icv = IDENTIFIER_CLASS_VALUE (name); - else - icv = NULL_TREE; - - if (icv - && flag_optional_diags - /* Don't complain about constructors. */ - && name != constructor_name (current_class_type) - /* Or inherited names. */ - && id_in_current_class (name) - /* Or shadowed tags. */ - && !(TREE_CODE (icv) == TYPE_DECL - && DECL_CONTEXT (icv) == t)) - { - cp_pedwarn_at ("declaration of identifier `%D' as `%+#D'", - name, x); - cp_pedwarn_at ("conflicts with other use in class as `%#D'", - icv); - } - } - - if (TREE_CODE (x) == FUNCTION_DECL - || DECL_FUNCTION_TEMPLATE_P (x)) - { - DECL_CLASS_CONTEXT (x) = t; - - if (last_x) - TREE_CHAIN (last_x) = next_x; - - /* Link x onto end of TYPE_METHODS. */ - *tail = x; - tail = &TREE_CHAIN (x); - continue; - } - - if (TREE_CODE (x) != TYPE_DECL) - DECL_FIELD_CONTEXT (x) = t; - - if (! fields) - fields = x; - last_x = x; - } - list_of_fieldlists = TREE_CHAIN (list_of_fieldlists); - /* link the tail while we have it! */ - if (last_x) - { - TREE_CHAIN (last_x) = NULL_TREE; - - if (list_of_fieldlists - && TREE_VALUE (list_of_fieldlists) - && TREE_CODE (TREE_VALUE (list_of_fieldlists)) != FUNCTION_DECL) - TREE_CHAIN (last_x) = TREE_VALUE (list_of_fieldlists); - } - } - - /* Now add the tags, if any, to the list of TYPE_DECLs - defined for this type. */ - if (CLASSTYPE_TAGS (t) || dummy) + if (flag_optional_diags) { - /* The list of tags was built up in pushtag in reverse order; we need - to fix that so that enumerators will be processed in forward order - in template instantiation. */ - CLASSTYPE_TAGS (t) = x = nreverse (CLASSTYPE_TAGS (t)); - while (x) - { - tree tag_type = TREE_VALUE (x); - tree tag = TYPE_MAIN_DECL (TREE_VALUE (x)); - - if (IS_AGGR_TYPE_CODE (TREE_CODE (tag_type)) - && CLASSTYPE_IS_TEMPLATE (tag_type)) - tag = CLASSTYPE_TI_TEMPLATE (tag_type); - - TREE_NONLOCAL_FLAG (tag_type) = 0; - x = TREE_CHAIN (x); - last_x = chainon (last_x, tag); - } - if (dummy) - last_x = chainon (last_x, dummy); - if (fields == NULL_TREE) - fields = last_x; - CLASSTYPE_LOCAL_TYPEDECLS (t) = 1; + for (x = TYPE_METHODS (t); x; x = TREE_CHAIN (x)) + check_member_decl_is_same_in_complete_scope (t, x); + for (x = TYPE_FIELDS (t); x; x = TREE_CHAIN (x)) + check_member_decl_is_same_in_complete_scope (t, x); } - *tail = NULL_TREE; - TYPE_FIELDS (t) = fields; + /* Mark all the tags in the class as class-local. */ + for (x = CLASSTYPE_TAGS (t); x; x = TREE_CHAIN (x)) + TREE_NONLOCAL_FLAG (TREE_VALUE (x)) = 0; cplus_decl_attributes (t, attributes, NULL_TREE); @@ -4574,9 +4567,10 @@ void init_class_processing () { current_class_depth = 0; - current_class_stacksize = 10; - current_class_base = (tree *)xmalloc(current_class_stacksize * sizeof (tree)); - current_class_stack = current_class_base; + current_class_stack_size = 10; + current_class_stack + = (class_stack_node_t) xmalloc (current_class_stack_size + * sizeof (struct class_stack_node)); current_lang_stacksize = 10; current_lang_base = (tree *)xmalloc(current_lang_stacksize * sizeof (tree)); @@ -4639,23 +4633,34 @@ pushclass (type, modify) { type = TYPE_MAIN_VARIANT (type); - current_class_depth++; - *current_class_stack++ = current_class_name; - *current_class_stack++ = current_class_type; - if (current_class_stack >= current_class_base + current_class_stacksize) - { - current_class_base - = (tree *)xrealloc (current_class_base, - sizeof (tree) * (current_class_stacksize + 10)); - current_class_stack = current_class_base + current_class_stacksize; - current_class_stacksize += 10; + /* Make sure there is enough room for the new entry on the stack. */ + if (current_class_depth + 1 >= current_class_stack_size) + { + current_class_stack_size *= 2; + current_class_stack + = (class_stack_node_t) xrealloc (current_class_stack, + current_class_stack_size + * sizeof (struct class_stack_node)); } + /* Insert a new entry on the class stack. */ + current_class_stack[current_class_depth].name = current_class_name; + current_class_stack[current_class_depth].type = current_class_type; + current_class_stack[current_class_depth].access = current_access_specifier; + current_class_depth++; + + /* Now set up the new type. */ current_class_name = TYPE_NAME (type); if (TREE_CODE (current_class_name) == TYPE_DECL) current_class_name = DECL_NAME (current_class_name); current_class_type = type; + /* By default, things in classes are private, while things in + structures or unions are public. */ + current_access_specifier = (CLASSTYPE_DECLARED_CLASS (type) + ? access_private_node + : access_public_node); + if (previous_class_type != NULL_TREE && (type != previous_class_type || TYPE_SIZE (previous_class_type) == NULL_TREE) && current_class_depth == 1) @@ -4783,8 +4788,9 @@ popclass (modify) pop_class_decls (); current_class_depth--; - current_class_type = *--current_class_stack; - current_class_name = *--current_class_stack; + current_class_name = current_class_stack[current_class_depth].name; + current_class_type = current_class_stack[current_class_depth].type; + current_access_specifier = current_class_stack[current_class_depth].access; ret: ; @@ -4800,7 +4806,7 @@ currently_open_class (t) if (t == current_class_type) return 1; for (i = 0; i < current_class_depth; ++i) - if (current_class_stack [-i*2 - 1] == t) + if (current_class_stack [i].type == t) return 1; return 0; } @@ -5505,7 +5511,6 @@ build_self_reference () DECL_NONLOCAL (value) = 1; DECL_CONTEXT (value) = current_class_type; DECL_CLASS_CONTEXT (value) = current_class_type; - CLASSTYPE_LOCAL_TYPEDECLS (current_class_type) = 1; DECL_ARTIFICIAL (value) = 1; pushdecl_class_level (value); diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def index b610737cc23..20a0117c160 100644 --- a/gcc/cp/cp-tree.def +++ b/gcc/cp/cp-tree.def @@ -29,6 +29,11 @@ Boston, MA 02111-1307, USA. */ just won't work for us. */ DEFTREECODE (OFFSET_REF, "offset_ref", 'r', 2) +/* A pointer-to-member constant. For a pointer-to-member constant + `X::Y' The PTRMEM_CST_CLASS is the RECORD_TYPE for `X' and the + PTRMEM_CST_MEMBER is the _DECL for `Y'. */ +DEFTREECODE (PTRMEM_CST, "ptrmem_cst", 'c', 1) + /* For NEW_EXPR, operand 0 is the placement list. Operand 1 is the new-declarator. Operand 2 is the initializer. */ diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 68655c155c0..bef5e0e8bbd 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -109,6 +109,12 @@ typedef struct tree decl; } template_parm_index; +typedef struct ptrmem_cst +{ + char common[sizeof (struct tree_common)]; + tree member; +}* ptrmem_cst_t; + /* For a binding between a name and an entity, defines the scope where the binding is declared. Currently always points to a namespace declaration. */ @@ -586,7 +592,6 @@ struct lang_type unsigned has_call_overloaded : 1; unsigned has_array_ref_overloaded : 1; unsigned has_arrow_overloaded : 1; - unsigned local_typedecls : 1; unsigned interface_only : 1; unsigned interface_unknown : 1; @@ -625,7 +630,7 @@ struct lang_type /* The MIPS compiler gets it wrong if this struct also does not fill out to a multiple of 4 bytes. Add a member `dummy' with new bits if you go over the edge. */ - unsigned dummy : 11; + unsigned dummy : 12; } type_flags; int n_ancestors; @@ -786,7 +791,12 @@ struct lang_type hierarchy, then we can use more efficient search techniques. */ #define TYPE_USES_VIRTUAL_BASECLASSES(NODE) (TREE_LANG_FLAG_3(NODE)) -/* List of lists of member functions defined in this class. */ +/* Vector member functions defined in this class. Each element is + either a FUNCTION_DECL, a TEMPLATE_DECL, or an OVERLOAD. The first + two elements are for constructors, and destructors, respectively. + Any user-defined conversion operators follow these. These are + followed by ordinary member functions. There may be empty entries + at the end of the vector. */ #define CLASSTYPE_METHOD_VEC(NODE) (TYPE_LANG_SPECIFIC(NODE)->methods) /* The first type conversion operator in the class (the others can be @@ -900,9 +910,6 @@ struct lang_type the virtual function table will be written out. */ #define CLASSTYPE_VTABLE_NEEDS_WRITING(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.vtable_needs_writing) -/* Nonzero means that this type defines its own local type declarations. */ -#define CLASSTYPE_LOCAL_TYPEDECLS(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.local_typedecls) - /* Nonzero means that this type has an X() constructor. */ #define TYPE_HAS_DEFAULT_CONSTRUCTOR(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_default_ctor) @@ -1508,6 +1515,17 @@ extern int flag_new_for_scope; #define DELTA2_FROM_PTRMEMFUNC(NODE) (build_component_ref (build_component_ref ((NODE), pfn_or_delta2_identifier, NULL_TREE, 0), delta2_identifier, NULL_TREE, 0)) #define PFN_FROM_PTRMEMFUNC(NODE) (build_component_ref (build_component_ref ((NODE), pfn_or_delta2_identifier, NULL_TREE, 0), pfn_identifier, NULL_TREE, 0)) +/* For a pointer-to-member constant `X::Y' this is the RECORD_TYPE for + `X'. */ +#define PTRMEM_CST_CLASS(NODE) \ + (TYPE_PTRMEM_P (TREE_TYPE (NODE)) \ + ? TYPE_OFFSET_BASETYPE (TREE_TYPE (NODE)) \ + : TYPE_PTRMEMFUNC_OBJECT_TYPE (TREE_TYPE (NODE))) + +/* For a pointer-to-member constant `X::Y' this is the _DECL for + `Y'. */ +#define PTRMEM_CST_MEMBER(NODE) (((ptrmem_cst_t) NODE)->member) + /* Nonzero for VAR_DECL and FUNCTION_DECL node means that `extern' was specified in its declaration. */ #define DECL_THIS_EXTERN(NODE) (DECL_LANG_FLAG_2(NODE)) @@ -1853,6 +1871,7 @@ extern void constant_expression_warning PROTO((tree)); extern tree convert_and_check PROTO((tree, tree)); extern void overflow_warning PROTO((tree)); extern void unsigned_conversion_warning PROTO((tree, tree)); + /* Read the rest of the current #-directive line. */ #if USE_CPPLIB extern char *get_directive_line PROTO((void)); @@ -1957,6 +1976,13 @@ extern int minimal_parse_mode; extern void maybe_print_template_context PROTO ((void)); /* in class.c */ + +/* When parsing a class definition, the access specifier most recently + given by the user, or, if no access specifier was given, the + default value appropriate for the kind of class (i.e., struct, + class, or union). */ +extern tree current_access_specifier; + extern tree current_class_name; extern tree current_class_type; extern tree current_class_ptr; @@ -2257,7 +2283,6 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, OP_FLAG, TYPENAME_FLAG }; /* The following two can be derived from the previous one */ extern tree current_class_name; /* IDENTIFIER_NODE: name of current class */ -extern tree current_class_type; /* _TYPE: the type of the current class */ /* Some macros for char-based bitfields. */ #define B_SET(a,x) (a[x>>3] |= (1 << (x&7))) @@ -2414,7 +2439,7 @@ extern void add_method PROTO((tree, tree *, tree)); extern int currently_open_class PROTO((tree)); extern tree get_vfield_offset PROTO((tree)); extern void duplicate_tag_error PROTO((tree)); -extern tree finish_struct PROTO((tree, tree, tree, int)); +extern tree finish_struct PROTO((tree, tree, int)); extern tree finish_struct_1 PROTO((tree, int)); extern int resolves_to_fixed_type_p PROTO((tree, int *)); extern void init_class_processing PROTO((void)); @@ -2433,6 +2458,7 @@ extern tree build_self_reference PROTO((void)); extern void warn_hidden PROTO((tree)); extern tree get_enclosing_class PROTO((tree)); int is_base_of_enclosing_class PROTO((tree, tree)); +extern void unreverse_member_declarations PROTO((tree)); /* in cvt.c */ extern tree convert_to_reference PROTO((tree, tree, int, int, tree)); @@ -2488,7 +2514,7 @@ extern int decls_match PROTO((tree, tree)); extern int duplicate_decls PROTO((tree, tree)); extern tree pushdecl PROTO((tree)); extern tree pushdecl_top_level PROTO((tree)); -extern tree pushdecl_class_level PROTO((tree)); +extern void pushdecl_class_level PROTO((tree)); #if 0 extern void pushdecl_nonclass_level PROTO((tree)); #endif @@ -2551,7 +2577,6 @@ extern void xref_basetypes PROTO((tree, tree, tree, tree)); extern tree start_enum PROTO((tree)); extern tree finish_enum PROTO((tree)); extern tree build_enumerator PROTO((tree, tree, tree)); -extern tree grok_enum_decls PROTO((tree)); extern int start_function PROTO((tree, tree, tree, int)); extern void expand_start_early_try_stmts PROTO((void)); extern void store_parm_decls PROTO((void)); @@ -2572,13 +2597,14 @@ extern void replace_defarg PROTO((tree, tree)); extern void print_other_binding_stack PROTO((struct binding_level *)); extern void revert_static_member_fn PROTO((tree*, tree*, tree*)); extern void cat_namespace_levels PROTO((void)); +extern void fixup_anonymous_union PROTO((tree)); /* in decl2.c */ extern int check_java_method PROTO((tree)); extern int lang_decode_option PROTO((int, char **)); extern tree grok_method_quals PROTO((tree, tree, tree)); extern void warn_if_unknown_interface PROTO((tree)); -extern tree grok_x_components PROTO((tree, tree)); +extern void grok_x_components PROTO((tree)); extern void maybe_retrofit_in_chrg PROTO((tree)); extern void maybe_make_one_only PROTO((tree)); extern void grokclassfn PROTO((tree, tree, enum overload_flags, tree)); @@ -2787,10 +2813,9 @@ extern tree innermost_args PROTO ((tree)); extern tree tsubst PROTO ((tree, tree, tree)); extern tree tsubst_expr PROTO ((tree, tree, tree)); extern tree tsubst_copy PROTO ((tree, tree, tree)); -extern tree tsubst_chain PROTO((tree, tree)); extern void maybe_begin_member_template_processing PROTO((tree)); extern void maybe_end_member_template_processing PROTO((void)); -extern tree finish_member_template_decl PROTO((tree, tree)); +extern tree finish_member_template_decl PROTO((tree)); extern void begin_template_parm_list PROTO((void)); extern void begin_specialization PROTO((void)); extern void reset_specialization PROTO((void)); @@ -2798,7 +2823,7 @@ extern void end_specialization PROTO((void)); extern void begin_explicit_instantiation PROTO((void)); extern void end_explicit_instantiation PROTO((void)); extern tree determine_specialization PROTO((tree, tree, tree *, int, int)); -extern tree check_explicit_specialization PROTO((tree, tree, int, int)); +extern tree check_explicit_specialization PROTO((tree, tree, int, int)); extern tree process_template_parm PROTO((tree, tree)); extern tree end_template_parm_list PROTO((tree)); extern void end_template_decl PROTO((void)); @@ -2950,14 +2975,16 @@ extern tree finish_template_type_parm PROTO((tree, tree)); extern tree finish_template_template_parm PROTO((tree, tree)); extern tree finish_parmlist PROTO((tree, int)); extern tree begin_class_definition PROTO((tree)); -extern tree finish_class_definition PROTO((tree, tree, tree, int)); +extern tree finish_class_definition PROTO((tree, tree, int)); extern void finish_default_args PROTO((void)); extern void begin_inline_definitions PROTO((void)); -extern tree finish_member_class_template PROTO((tree, tree)); +extern tree finish_member_class_template PROTO((tree)); extern void finish_template_decl PROTO((tree)); extern tree finish_template_type PROTO((tree, tree, int)); extern void enter_scope_of PROTO((tree)); extern tree finish_base_specifier PROTO((tree, tree, int)); +extern void finish_member_declaration PROTO((tree)); +extern void check_multiple_declarators PROTO((void)); /* in sig.c */ extern tree build_signature_pointer_type PROTO((tree)); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index cae72561e0c..19cbcf529c2 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -1896,7 +1896,9 @@ struct saved_scope { tree old_bindings; tree old_namespace; struct saved_scope *prev; - tree class_name, class_type, function_decl; + tree class_name, class_type; + tree access_specifier; + tree function_decl; struct binding_level *class_bindings; tree *lang_base, *lang_stack, lang_name; int lang_stacksize; @@ -2010,6 +2012,7 @@ maybe_push_to_top_level (pseudo) s->old_namespace = current_namespace; s->class_name = current_class_name; s->class_type = current_class_type; + s->access_specifier = current_access_specifier; s->function_decl = current_function_decl; s->class_bindings = class_binding_level; s->lang_stack = current_lang_stack; @@ -2091,6 +2094,7 @@ pop_from_top_level () current_namespace = s->old_namespace; current_class_name = s->class_name; current_class_type = s->class_type; + current_access_specifier = s->access_specifier; current_function_decl = s->function_decl; class_binding_level = s->class_bindings; free (current_lang_base); @@ -2297,6 +2301,7 @@ maybe_process_template_type_declaration (type, globalize, b) { pushdecl_with_scope (CLASSTYPE_TI_TEMPLATE (type), b->level_chain); + finish_member_declaration (CLASSTYPE_TI_TEMPLATE (type)); /* Put this tag on the list of tags for the class, since that won't happen below because B is not the class binding level, but is instead the pseudo-global level. */ @@ -2391,7 +2396,15 @@ pushtag (name, type, globalize) globalize, b); if (b->parm_flag == 2) - d = pushdecl_class_level (d); + { + pushdecl_class_level (d); + if (newdecl && !PROCESSING_REAL_TEMPLATE_DECL_P ()) + /* Put this TYPE_DECL on the TYPE_FIELDS list for the + class. But if it's a member template class, we + want the TEMPLATE_DECL, not the TYPE_DECL, so this + is done later. */ + finish_member_declaration (d); + } else d = pushdecl_with_scope (d, b); @@ -3788,7 +3801,7 @@ pushdecl_top_level (x) /* Make the declaration of X appear in CLASS scope. */ -tree +void pushdecl_class_level (x) tree x; { @@ -3839,7 +3852,6 @@ pushdecl_class_level (x) set_identifier_type_value (name, TREE_TYPE (x)); } } - return x; } #if 0 @@ -6291,6 +6303,48 @@ define_function (name, type, function_code, pfn, library_name) return decl; } +/* When we call finish_struct for an anonymous union, we create + default copy constructors and such. But, an anonymous union + shouldn't have such things; this function undoes the damage to the + anonymous union type T. + + (The reason that we create the synthesized methods is that we don't + distinguish `union { int i; }' from `typedef union { int i; } U'. + The first is an anonymous union; the second is just an ordinary + union type.) */ + +void +fixup_anonymous_union (t) + tree t; +{ + tree *q; + + /* Wipe out memory of synthesized methods */ + TYPE_HAS_CONSTRUCTOR (t) = 0; + TYPE_HAS_DEFAULT_CONSTRUCTOR (t) = 0; + TYPE_HAS_INIT_REF (t) = 0; + TYPE_HAS_CONST_INIT_REF (t) = 0; + TYPE_HAS_ASSIGN_REF (t) = 0; + TYPE_HAS_ASSIGNMENT (t) = 0; + TYPE_HAS_CONST_ASSIGN_REF (t) = 0; + + /* Splice the implicitly generated functions out of the TYPE_METHODS + list. */ + q = &TYPE_METHODS (t); + while (*q) + { + if (DECL_ARTIFICIAL (*q)) + *q = TREE_CHAIN (*q); + else + q = &TREE_CHAIN (*q); + } + + /* ANSI C++ June 5 1992 WP 9.5.3. Anonymous unions may not have + function members. */ + if (TYPE_METHODS (t)) + error ("an anonymous union cannot have function members"); +} + /* Called when a declaration is seen that contains no names to declare. If its type is a reference to a structure, union or enum inherited from a containing scope, shadow that tag name for the current scope @@ -6349,31 +6403,7 @@ shadow_tag (declspecs) || (TREE_CODE (TYPE_NAME (t)) == TYPE_DECL && ANON_AGGRNAME_P (TYPE_IDENTIFIER (t))))) { - /* See also grok_x_components. */ - tree *q; - - /* Wipe out memory of synthesized methods */ - TYPE_HAS_CONSTRUCTOR (t) = 0; - TYPE_HAS_DEFAULT_CONSTRUCTOR (t) = 0; - TYPE_HAS_INIT_REF (t) = 0; - TYPE_HAS_CONST_INIT_REF (t) = 0; - TYPE_HAS_ASSIGN_REF (t) = 0; - TYPE_HAS_ASSIGNMENT (t) = 0; - TYPE_HAS_CONST_ASSIGN_REF (t) = 0; - - q = &TYPE_METHODS (t); - while (*q) - { - if (DECL_ARTIFICIAL (*q)) - *q = TREE_CHAIN (*q); - else - q = &TREE_CHAIN (*q); - } - - /* ANSI C++ June 5 1992 WP 9.5.3. Anonymous unions may not have - function members. */ - if (TYPE_METHODS (t)) - error ("an anonymous union cannot have function members"); + fixup_anonymous_union (t); if (TYPE_FIELDS (t)) { @@ -9714,6 +9744,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) type = TREE_TYPE (type); } + /* Merge any constancy or volatility into the target type + for the pointer. */ + /* We now know that constp and volatilep don't apply to the decl, but to the target of the pointer. */ constp = volatilep = 0; @@ -10040,6 +10073,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL && ANON_AGGRNAME_P (TYPE_IDENTIFIER (type))) { + /* FIXME: This is bogus; we should not be doing this for + cv-qualified types. */ + /* For anonymous structs that are cv-qualified, need to use TYPE_MAIN_VARIANT so that name will mangle correctly. As type not referenced after this block, don't bother @@ -10094,9 +10130,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) C_TYPEDEF_EXPLICITLY_SIGNED (decl) = 1; if (RIDBIT_SETP (RID_MUTABLE, specbits)) - { - error ("non-object member `%s' cannot be declared mutable", name); - } + error ("non-object member `%s' cannot be declared mutable", name); bad_specifiers (decl, "type", virtualp, quals != NULL_TREE, inlinep, friendp, raises != NULL_TREE); @@ -11477,6 +11511,7 @@ xref_tag (code_type_node, name, globalize) } else t = IDENTIFIER_TYPE_VALUE (name); + if (t && TREE_CODE (t) != code && TREE_CODE (t) != TEMPLATE_TYPE_PARM && TREE_CODE (t) != TEMPLATE_TEMPLATE_PARM) t = NULL_TREE; @@ -11651,6 +11686,19 @@ xref_tag (code_type_node, name, globalize) TREE_TYPE (ref) = attributes; + if (ref && TYPE_P (ref)) + { + /* [dcl.type.elab] + + If the identifier resolves to a typedef-name or a template + type-parameter, the elaborated-type-specifier is + ill-formed. */ + if (TYPE_LANG_SPECIFIC (ref) && TYPE_WAS_ANONYMOUS (ref)) + cp_error ("`%T' is a typedef name", ref); + else if (TREE_CODE (ref) == TEMPLATE_TYPE_PARM) + cp_error ("`%T' is a template type paramter", ref); + } + return ref; } @@ -11791,7 +11839,6 @@ xref_basetypes (code_type_node, name, ref, binfo) TYPE_GETS_NEW (ref) |= TYPE_GETS_NEW (basetype); TYPE_GETS_DELETE (ref) |= TYPE_GETS_DELETE (basetype); - CLASSTYPE_LOCAL_TYPEDECLS (ref) |= CLASSTYPE_LOCAL_TYPEDECLS (basetype); i += 1; } } @@ -11817,8 +11864,6 @@ xref_basetypes (code_type_node, name, ref, binfo) } -tree current_local_enum = NULL_TREE; - /* Begin compiling the definition of an enumeration type. NAME is its name (or null if anonymous). Returns the type object, as yet incomplete. @@ -11858,8 +11903,6 @@ start_enum (name) if (current_class_type) TREE_ADDRESSABLE (b->tags) = 1; - current_local_enum = NULL_TREE; - /* We don't copy this value because build_enumerator needs to do it. */ enum_next_value = integer_zero_node; enum_overflow = 0; @@ -12079,8 +12122,10 @@ build_enumerator (name, value, type) if (context && context == current_class_type) { pushdecl_class_level (decl); - TREE_CHAIN (decl) = current_local_enum; - current_local_enum = decl; + /* In something like `struct S { enum E { i = 7 }; };' we put `i' + on the TYPE_FIELDS list for `S'. (That's so that you can say + things like `S::i' later.) */ + finish_member_declaration (decl); } else { @@ -12100,47 +12145,6 @@ build_enumerator (name, value, type) return result; } -/* Called after we have finished the declaration of an enumeration - type, and, perhaps, some objects whose type involves the - enumeration type. DECL, if non-NULL, is the declaration of the - first such object. - - If CURRENT_LOCAL_ENUM is NULL, the DECL is returned. - - If CURRENT_LOCAL_ENUM is non-NULL, it should be the CONST_DECL for - the last enumeration constant of an enumeration type that is a - member of a class. The enumeration constants are already chained - together through their TREE_CHAIN fields. This function sets the - TREE_CHAIN of the last enumeration constant to DECL. The - CONST_DECL for the last enumeration constant is returned. - - CURRENT_LOCAL_ENUM will always be NULL when this function - returns. */ - -tree -grok_enum_decls (decl) - tree decl; -{ - tree d = current_local_enum; - - if (d == NULL_TREE) - return decl; - - while (1) - { - if (TREE_CHAIN (d) == NULL_TREE) - { - TREE_CHAIN (d) = decl; - break; - } - d = TREE_CHAIN (d); - } - - decl = current_local_enum; - current_local_enum = NULL_TREE; - - return decl; -} static int function_depth; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 492688b6c96..f70867a9e5a 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -860,123 +860,37 @@ warn_if_unknown_interface (decl) /* A subroutine of the parser, to handle a component list. */ -tree -grok_x_components (specs, components) - tree specs, components; +void +grok_x_components (specs) + tree specs; { - register tree t, x, tcode; - - /* We just got some friends. They have been recorded elsewhere. */ - if (components == void_type_node) - return NULL_TREE; + struct pending_inline **p; + tree t; - if (components == NULL_TREE) + t = groktypename (build_decl_list (strip_attrs (specs), NULL_TREE)); + + if (t == NULL_TREE) { - t = groktypename (build_decl_list (strip_attrs (specs), - NULL_TREE)); - - if (t == NULL_TREE) - { - error ("error in component specification"); - return NULL_TREE; - } - - switch (TREE_CODE (t)) - { - case VAR_DECL: - /* Static anonymous unions come out as VAR_DECLs. */ - if (ANON_UNION_TYPE_P (TREE_TYPE (t))) - return t; - - /* We return SPECS here, because in the parser it was ending - up with not doing anything to $$, which is what SPECS - represents. */ - return specs; - break; - - case RECORD_TYPE: - case UNION_TYPE: - if (TREE_CODE (t) == UNION_TYPE) - tcode = union_type_node; - else - tcode = record_type_node; - if (CLASSTYPE_DECLARED_CLASS (t)) - tcode = class_type_node; - else if (IS_SIGNATURE (t)) - tcode = signature_type_node; - - if (TYPE_LANG_SPECIFIC (t) - && CLASSTYPE_USE_TEMPLATE (t)) - /* We have already looked up this type. */ - ; - else - { - if (CLASSTYPE_IS_TEMPLATE (t)) - x = DECL_NAME (CLASSTYPE_TI_TEMPLATE (t)); - else - x = TYPE_IDENTIFIER (t); - t = xref_tag (tcode, x, 0); - } - - if (ANON_UNION_TYPE_P (t)) - { - /* See also shadow_tag. */ - - struct pending_inline **p; - tree *q; - x = build_lang_field_decl (FIELD_DECL, NULL_TREE, t); - - /* Wipe out memory of synthesized methods */ - TYPE_HAS_CONSTRUCTOR (t) = 0; - TYPE_HAS_DEFAULT_CONSTRUCTOR (t) = 0; - TYPE_HAS_INIT_REF (t) = 0; - TYPE_HAS_CONST_INIT_REF (t) = 0; - TYPE_HAS_ASSIGN_REF (t) = 0; - TYPE_HAS_ASSIGNMENT (t) = 0; - TYPE_HAS_CONST_ASSIGN_REF (t) = 0; - - q = &TYPE_METHODS (t); - while (*q) - { - if (DECL_ARTIFICIAL (*q)) - *q = TREE_CHAIN (*q); - else - q = &TREE_CHAIN (*q); - } - if (TYPE_METHODS (t)) - error ("an anonymous union cannot have function members"); - - p = &pending_inlines; - for (; *p; *p = (*p)->next) - if (DECL_CONTEXT ((*p)->fndecl) != t) - break; - - return x; - } - - return NULL_TREE; - break; + cp_error ("invalid member declaration"); + return; + } - case ENUMERAL_TYPE: - tcode = enum_type_node; - t = xref_tag (tcode, TYPE_IDENTIFIER (t), 0); - x = grok_enum_decls (NULL_TREE); - return x; - break; + /* The only case where we need to do anything additional here is an + anonymous union field, e.g.: `struct S { union { int i; }; };'. */ + if (!ANON_UNION_TYPE_P (t)) + return; - default: - if (t != void_type_node) - error ("empty component declaration"); - return NULL_TREE; - } - } - else - /* There may or may not be any enum decls to grok, but - grok_enum_decls will just return components, if there aren't - any. We used to try to figure out whether or not there were - any enum decls based on the type of components, but that's too - hard; it might be something like `enum { a } *p;'. */ - return grok_enum_decls (components); + fixup_anonymous_union (t); + finish_member_declaration (build_lang_field_decl (FIELD_DECL, + NULL_TREE, + t)); + + /* Ignore any inline function definitions in the anonymous union + since an anonymous union may not have function members. */ + p = &pending_inlines; + for (; *p; *p = (*p)->next) + if (DECL_CONTEXT ((*p)->fndecl) != t) + break; } /* Constructors for types with virtual baseclasses need an "in-charge" flag @@ -1459,7 +1373,7 @@ check_classfn (ctype, function) && DESTRUCTOR_NAME_P (DECL_ASSEMBLER_NAME (function))) goto got_it; - while (++methods != end) + while (++methods != end && *methods) { fndecl = *methods; if (fn_name == DECL_NAME (OVL_CURRENT (*methods))) @@ -1530,14 +1444,12 @@ check_classfn (ctype, function) if (templates) /* This function might be an instantiation or a specialization. - We should verify that this is possible. If it is, we must - somehow add the new declaration to the method vector for the - class. Perhaps we should use add_method? For now, we simply - return NULL_TREE, which lets the caller know that this - function is new, but we don't print an error message. */ + We should verify that this is possible. For now, we simply + return NULL_TREE, which lets the caller know that this function + is new, but we don't print an error message. */ return NULL_TREE; - if (methods != end) + if (methods != end && *methods) { tree fndecl = *methods; cp_error ("prototype for `%#D' does not match any in class `%T'", @@ -1640,7 +1552,6 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) DECL_NONLOCAL (value) = 1; DECL_CONTEXT (value) = current_class_type; DECL_CLASS_CONTEXT (value) = current_class_type; - CLASSTYPE_LOCAL_TYPEDECLS (current_class_type) = 1; /* Now that we've updated the context, we need to remangle the name for this TYPE_DECL. */ @@ -4129,7 +4040,9 @@ add_using_namespace (user, used, indirect) /* Combines two sets of overloaded functions into an OVERLOAD chain, removing duplicates. The first list becomes the tail of the result. - The algorithm is O(n^2). */ + The algorithm is O(n^2). We could get this down to O(n log n) by + doing a sort on the addresses of the functions, if that becomes + necessary. */ static tree merge_functions (s1, s2) @@ -4414,6 +4327,7 @@ struct arg_lookup static int arg_assoc PROTO((struct arg_lookup*, tree)); static int arg_assoc_args PROTO((struct arg_lookup*, tree)); +static int arg_assoc_type PROTO((struct arg_lookup*, tree)); /* Add a function to the lookup structure. Returns 1 on error. */ @@ -4662,7 +4576,7 @@ arg_assoc (k, n) return 1; } else if (TREE_CODE_CLASS (TREE_CODE (t)) == 't' - && arg_assoc_type (t) == 1) + && arg_assoc_type (k, t) == 1) return 1; } } diff --git a/gcc/cp/error.c b/gcc/cp/error.c index fb6995fe49f..52c519d692a 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1265,6 +1265,13 @@ dump_expr (t, nop) OB_PUTCP (digit_buffer); break; + case PTRMEM_CST: + OB_PUTC ('&'); + dump_type (PTRMEM_CST_CLASS (t), 0); + OB_PUTS ("::"); + OB_PUTID (DECL_NAME (PTRMEM_CST_MEMBER (t))); + break; + case STRING_CST: { char *p = TREE_STRING_POINTER (t); @@ -1571,10 +1578,14 @@ dump_expr (t, nop) { tree ob = TREE_OPERAND (t, 0); if (TREE_CODE (ob) == NOP_EXPR - && TREE_OPERAND (ob, 0) == error_mark_node - && TREE_CODE (TREE_OPERAND (t, 1)) == FUNCTION_DECL) - /* A::f */ - dump_expr (TREE_OPERAND (t, 1), 0); + && TREE_OPERAND (ob, 0) == error_mark_node) + { + if (TREE_CODE (TREE_OPERAND (t, 1)) == FUNCTION_DECL) + /* A::f */ + dump_expr (TREE_OPERAND (t, 1), 0); + else + dump_decl (TREE_OPERAND (t, 1), 0); + } else { dump_expr (TREE_OPERAND (t, 0), 0); diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c index ae8a374f86a..056f4d1f16a 100644 --- a/gcc/cp/expr.c +++ b/gcc/cp/expr.c @@ -162,19 +162,43 @@ cplus_expand_expr (exp, target, tmode, modifier) return DECL_RTL (slot); } + case PTRMEM_CST: + { + tree member; + tree offset; + + /* Find the member. */ + member = PTRMEM_CST_MEMBER (exp); + + if (TREE_CODE (member) == FIELD_DECL) + { + /* Find the offset for the field. */ + offset = convert (sizetype, + size_binop (EASY_DIV_EXPR, + DECL_FIELD_BITPOS (member), + size_int (BITS_PER_UNIT))); + + /* We offset all pointer to data members by 1 so that we + can distinguish between a null pointer to data member + and the first data member of a structure. */ + offset = size_binop (PLUS_EXPR, offset, size_int (1)); + + return expand_expr (cp_convert (type, offset), target, tmode, + modifier); + } + else + { + /* We don't yet handle pointer-to-member functions this + way. */ + my_friendly_abort (0); + return 0; + } + } + case OFFSET_REF: { -#if 1 return expand_expr (default_conversion (resolve_offset_ref (exp)), target, tmode, EXPAND_NORMAL); -#else - /* This is old crusty code, and does not handle all that the - resolve_offset_ref function does. (mrs) */ - tree base = build_unary_op (ADDR_EXPR, TREE_OPERAND (exp, 0), 0); - tree offset = build_unary_op (ADDR_EXPR, TREE_OPERAND (exp, 1), 0); - return expand_expr (build (PLUS_EXPR, TREE_TYPE (exp), base, offset), - target, tmode, EXPAND_NORMAL); -#endif } case THUNK_DECL: diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c index 91c3d34acc5..acb9657d666 100644 --- a/gcc/cp/friend.c +++ b/gcc/cp/friend.c @@ -372,21 +372,22 @@ do_friend (ctype, declarator, decl, parmdecls, flags, quals, funcdef_flag) if (is_friend_template) decl = DECL_TI_TEMPLATE (push_template_decl (decl)); - if (TYPE_SIZE (ctype) != 0 && template_class_depth (ctype) == 0) - decl = check_classfn (ctype, decl); - - /* TYPE_BEING_DEFINED is a hack for nested classes having - member functions of the enclosing class as friends. Will - go away as parsing of classes gets rewritten. */ - if (TREE_TYPE (decl) != error_mark_node) + /* A nested class may declare a member of an enclosing class + to be a friend, so we do lookup here even if CTYPE is in + the process of being defined. */ + if (TYPE_SIZE (ctype) != 0 || TYPE_BEING_DEFINED (ctype)) { - if (TYPE_BEING_DEFINED (ctype) || - TYPE_SIZE (ctype) || template_class_depth (ctype) > 0) + /* But, we defer looup in template specializations until + they are fully specialized. */ + if (template_class_depth (ctype) == 0) + decl = check_classfn (ctype, decl); + + if (decl) add_friend (current_class_type, decl); - else - cp_error ("member `%D' declared as friend before type `%T' defined", - decl, ctype); } + else + cp_error ("member `%D' declared as friend before type `%T' defined", + decl, ctype); } else { diff --git a/gcc/cp/init.c b/gcc/cp/init.c index b6a20ba8687..2386215ba4f 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1561,30 +1561,11 @@ build_offset_ref (type, name) name = ctor_identifier; #endif - if (TYPE_SIZE (complete_type (type)) == 0) + if (TYPE_SIZE (complete_type (type)) == 0 + && !TYPE_BEING_DEFINED (type)) { - if (type == current_class_type) - t = IDENTIFIER_CLASS_VALUE (name); - else - t = NULL_TREE; - if (t == 0) - { - cp_error ("incomplete type `%T' does not have member `%D'", type, - name); - return error_mark_node; - } - if (TREE_CODE (t) == TYPE_DECL || TREE_CODE (t) == VAR_DECL - || TREE_CODE (t) == CONST_DECL) - { - mark_used (t); - return t; - } - if (TREE_CODE (t) == FIELD_DECL) - sorry ("use of member in incomplete aggregate type"); - else if (TREE_CODE (t) == FUNCTION_DECL) - sorry ("use of member function in incomplete aggregate type"); - else - my_friendly_abort (52); + cp_error ("incomplete type `%T' does not have member `%D'", type, + name); return error_mark_node; } @@ -1883,28 +1864,14 @@ decl_constant_value (decl) tree decl; { if (! TREE_THIS_VOLATILE (decl) -#if 0 - /* These may be necessary for C, but they break C++. */ - ! TREE_PUBLIC (decl) - /* Don't change a variable array bound or initial value to a constant - in a place where a variable is invalid. */ - && ! pedantic -#endif /* 0 */ - && DECL_INITIAL (decl) != 0 + && DECL_INITIAL (decl) && DECL_INITIAL (decl) != error_mark_node /* This is invalid if initial value is not constant. If it has either a function call, a memory reference, or a variable, then re-evaluating it could give different results. */ && TREE_CONSTANT (DECL_INITIAL (decl)) /* Check for cases where this is sub-optimal, even though valid. */ - && TREE_CODE (DECL_INITIAL (decl)) != CONSTRUCTOR -#if 0 - /* We must allow this to work outside of functions so that - static constants can be used for array sizes. */ - && current_function_decl != 0 - && DECL_MODE (decl) != BLKmode -#endif - ) + && TREE_CODE (DECL_INITIAL (decl)) != CONSTRUCTOR) return DECL_INITIAL (decl); return decl; } diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 819fb51b821..82a886c2377 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -628,15 +628,12 @@ build_overload_value (type, value, in_template) tree type, value; int in_template; { + my_friendly_assert (TREE_CODE_CLASS (TREE_CODE (type)) == 't', 0); + while (TREE_CODE (value) == NON_LVALUE_EXPR || TREE_CODE (value) == NOP_EXPR) value = TREE_OPERAND (value, 0); - if (TREE_CODE (type) == PARM_DECL) - type = TREE_TYPE (type); - - my_friendly_assert (TREE_CODE_CLASS (TREE_CODE (type)) == 't', 0); - if (numeric_output_need_bar) { OB_PUTC ('_'); @@ -649,17 +646,20 @@ build_overload_value (type, value, in_template) return; } - if (TREE_CODE (type) == POINTER_TYPE - && TREE_CODE (TREE_TYPE (type)) == OFFSET_TYPE) + if (TYPE_PTRMEM_P (type)) { - /* Handle a pointer to data member as a template instantiation - parameter, boy, what fun! */ - type = integer_type_node; - if (TREE_CODE (value) != INTEGER_CST) - { - sorry ("unknown pointer to member constant"); - return; - } + if (TREE_CODE (value) != PTRMEM_CST) + /* We should have already rejected this pointer to member, + since it is not a constant. */ + my_friendly_abort (0); + + /* Get the actual FIELD_DECL. */ + value = PTRMEM_CST_MEMBER (value); + my_friendly_assert (TREE_CODE (value) == FIELD_DECL, 0); + + /* Output the name of the field. */ + build_overload_identifier (DECL_NAME (value)); + return; } if (TYPE_PTRMEMFUNC_P (type)) @@ -898,7 +898,8 @@ build_template_parm_names (parmlist, arglist) parm = tsubst (parm, arglist, NULL_TREE); /* It's a PARM_DECL. */ build_mangled_name_for_type (TREE_TYPE (parm)); - build_overload_value (parm, arg, uses_template_parms (arglist)); + build_overload_value (TREE_TYPE (parm), arg, + uses_template_parms (arglist)); } } } diff --git a/gcc/cp/parse.c b/gcc/cp/parse.c index e4c7df3eb4a..9ac44964ab0 100644 --- a/gcc/cp/parse.c +++ b/gcc/cp/parse.c @@ -154,7 +154,7 @@ empty_parms () #line 92 "parse.y" typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE; -#line 282 "parse.y" +#line 281 "parse.y" /* List of types and structure classes of the current declaration. */ static tree current_declspecs; @@ -215,11 +215,11 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl) -#define YYFINAL 1608 +#define YYFINAL 1609 #define YYFLAG -32768 #define YYNTBASE 112 -#define YYTRANSLATE(x) ((unsigned)(x) <= 342 ? yytranslate[x] : 395) +#define YYTRANSLATE(x) ((unsigned)(x) <= 342 ? yytranslate[x] : 396) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -310,44 +310,45 @@ static const short yyprhs[] = { 0, 1537, 1541, 1542, 1545, 1548, 1549, 1557, 1562, 1563, 1570, 1574, 1577, 1580, 1583, 1584, 1585, 1595, 1597, 1598, 1600, 1601, 1603, 1605, 1608, 1611, 1614, 1617, 1620, 1623, 1626, - 1629, 1632, 1636, 1641, 1645, 1648, 1652, 1653, 1655, 1659, + 1629, 1632, 1636, 1641, 1645, 1648, 1652, 1654, 1655, 1659, 1662, 1665, 1667, 1669, 1670, 1673, 1677, 1679, 1684, 1686, 1690, 1692, 1694, 1699, 1704, 1707, 1710, 1714, 1718, 1720, - 1721, 1723, 1726, 1731, 1735, 1737, 1740, 1743, 1746, 1749, - 1752, 1755, 1758, 1760, 1763, 1766, 1770, 1773, 1776, 1781, - 1786, 1789, 1791, 1797, 1802, 1804, 1805, 1807, 1811, 1812, - 1814, 1818, 1820, 1822, 1824, 1826, 1831, 1836, 1841, 1846, - 1851, 1855, 1860, 1865, 1870, 1875, 1879, 1881, 1885, 1887, - 1891, 1894, 1896, 1904, 1905, 1908, 1910, 1913, 1914, 1917, - 1922, 1927, 1930, 1935, 1939, 1943, 1946, 1949, 1953, 1955, - 1957, 1960, 1962, 1964, 1967, 1970, 1975, 1980, 1984, 1988, - 1991, 1993, 1997, 2001, 2004, 2007, 2011, 2013, 2017, 2021, - 2024, 2027, 2031, 2033, 2038, 2042, 2047, 2051, 2053, 2056, - 2059, 2062, 2065, 2068, 2070, 2073, 2078, 2083, 2086, 2088, - 2090, 2092, 2094, 2097, 2102, 2105, 2108, 2111, 2114, 2116, - 2119, 2122, 2125, 2128, 2132, 2134, 2137, 2141, 2146, 2149, - 2152, 2155, 2158, 2161, 2164, 2169, 2172, 2174, 2177, 2180, - 2184, 2186, 2190, 2193, 2197, 2200, 2203, 2207, 2209, 2213, - 2218, 2222, 2225, 2228, 2230, 2234, 2237, 2240, 2242, 2245, - 2249, 2251, 2255, 2257, 2264, 2269, 2274, 2278, 2284, 2288, - 2292, 2296, 2299, 2301, 2303, 2306, 2309, 2312, 2313, 2315, - 2317, 2320, 2324, 2326, 2329, 2330, 2334, 2335, 2336, 2342, - 2344, 2345, 2348, 2350, 2352, 2354, 2357, 2358, 2363, 2365, - 2366, 2367, 2373, 2374, 2375, 2383, 2384, 2385, 2386, 2387, - 2400, 2401, 2402, 2410, 2411, 2417, 2418, 2426, 2427, 2432, - 2435, 2438, 2441, 2445, 2452, 2461, 2472, 2485, 2490, 2494, - 2497, 2500, 2502, 2504, 2506, 2508, 2510, 2511, 2512, 2519, - 2520, 2521, 2527, 2529, 2532, 2533, 2534, 2540, 2542, 2544, - 2548, 2552, 2555, 2558, 2561, 2564, 2567, 2569, 2572, 2573, - 2575, 2576, 2578, 2580, 2581, 2583, 2585, 2589, 2594, 2596, - 2600, 2601, 2603, 2605, 2607, 2610, 2613, 2616, 2618, 2621, - 2624, 2625, 2629, 2631, 2633, 2635, 2638, 2641, 2644, 2649, - 2652, 2655, 2658, 2661, 2664, 2667, 2669, 2672, 2674, 2677, - 2679, 2681, 2682, 2683, 2685, 2686, 2691, 2694, 2696, 2698, - 2702, 2703, 2707, 2711, 2715, 2717, 2720, 2723, 2726, 2729, - 2732, 2735, 2738, 2741, 2744, 2747, 2750, 2753, 2756, 2759, - 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, 2790, - 2793, 2796, 2799, 2802, 2806, 2809, 2812, 2817, 2822, 2826 + 1721, 1723, 1726, 1730, 1733, 1736, 1738, 1741, 1744, 1747, + 1750, 1753, 1756, 1759, 1761, 1764, 1767, 1771, 1774, 1777, + 1782, 1787, 1790, 1792, 1798, 1803, 1805, 1806, 1808, 1812, + 1813, 1815, 1819, 1821, 1823, 1825, 1827, 1832, 1837, 1842, + 1847, 1852, 1856, 1861, 1866, 1871, 1876, 1880, 1882, 1886, + 1888, 1892, 1895, 1897, 1905, 1906, 1909, 1911, 1914, 1915, + 1918, 1923, 1928, 1931, 1936, 1940, 1944, 1947, 1950, 1954, + 1956, 1958, 1961, 1963, 1965, 1968, 1971, 1976, 1981, 1985, + 1989, 1992, 1994, 1998, 2002, 2005, 2008, 2012, 2014, 2018, + 2022, 2025, 2028, 2032, 2034, 2039, 2043, 2048, 2052, 2054, + 2057, 2060, 2063, 2066, 2069, 2071, 2074, 2079, 2084, 2087, + 2089, 2091, 2093, 2095, 2098, 2103, 2106, 2109, 2112, 2115, + 2117, 2120, 2123, 2126, 2129, 2133, 2135, 2138, 2142, 2147, + 2150, 2153, 2156, 2159, 2162, 2165, 2170, 2173, 2175, 2178, + 2181, 2185, 2187, 2191, 2194, 2198, 2201, 2204, 2208, 2210, + 2214, 2219, 2223, 2226, 2229, 2231, 2235, 2238, 2241, 2243, + 2246, 2250, 2252, 2256, 2258, 2265, 2270, 2275, 2279, 2285, + 2289, 2293, 2297, 2300, 2302, 2304, 2307, 2310, 2313, 2314, + 2316, 2318, 2321, 2325, 2327, 2330, 2331, 2335, 2336, 2337, + 2343, 2345, 2346, 2349, 2351, 2353, 2355, 2358, 2359, 2364, + 2366, 2367, 2368, 2374, 2375, 2376, 2384, 2385, 2386, 2387, + 2388, 2401, 2402, 2403, 2411, 2412, 2418, 2419, 2427, 2428, + 2433, 2436, 2439, 2442, 2446, 2453, 2462, 2473, 2486, 2491, + 2495, 2498, 2501, 2503, 2505, 2507, 2509, 2511, 2512, 2513, + 2520, 2521, 2522, 2528, 2530, 2533, 2534, 2535, 2541, 2543, + 2545, 2549, 2553, 2556, 2559, 2562, 2565, 2568, 2570, 2573, + 2574, 2576, 2577, 2579, 2581, 2582, 2584, 2586, 2590, 2595, + 2597, 2601, 2602, 2604, 2606, 2608, 2611, 2614, 2617, 2619, + 2622, 2625, 2626, 2630, 2632, 2634, 2636, 2639, 2642, 2645, + 2650, 2653, 2656, 2659, 2662, 2665, 2668, 2670, 2673, 2675, + 2678, 2680, 2682, 2683, 2684, 2686, 2687, 2692, 2695, 2697, + 2699, 2703, 2704, 2708, 2712, 2716, 2718, 2721, 2724, 2727, + 2730, 2733, 2736, 2739, 2742, 2745, 2748, 2751, 2754, 2757, + 2760, 2763, 2766, 2769, 2772, 2775, 2778, 2781, 2784, 2787, + 2791, 2794, 2797, 2800, 2803, 2807, 2810, 2813, 2818, 2823, + 2827 }; static const short yyrhs[] = { -1, @@ -359,16 +360,16 @@ static const short yyrhs[] = { -1, 0, 0, 44, 163, 58, 123, 115, 109, 0, 0, 44, 58, 124, 115, 109, 0, 125, 0, 127, 60, 0, 129, 0, 118, 122, 0, 0, 44, 163, 64, - 126, 132, 60, 0, 46, 309, 0, 46, 323, 309, - 0, 46, 323, 208, 0, 46, 131, 163, 0, 46, - 323, 163, 0, 46, 323, 131, 163, 0, 0, 46, + 126, 132, 60, 0, 46, 310, 0, 46, 324, 310, + 0, 46, 324, 208, 0, 46, 131, 163, 0, 46, + 324, 163, 0, 46, 324, 131, 163, 0, 0, 46, 44, 130, 132, 60, 0, 57, 54, 0, 131, 57, - 54, 0, 208, 0, 309, 0, 323, 309, 0, 323, + 54, 0, 208, 0, 310, 0, 324, 310, 0, 324, 208, 0, 98, 0, 133, 98, 0, 0, 48, 74, 135, 136, 75, 0, 48, 74, 75, 0, 140, 0, 136, 59, 140, 0, 163, 0, 0, 266, 137, 0, 45, 137, 0, 134, 266, 137, 0, 138, 0, 138, - 64, 223, 0, 386, 0, 386, 64, 203, 0, 139, + 64, 223, 0, 387, 0, 387, 64, 203, 0, 139, 0, 139, 64, 183, 0, 134, 142, 0, 134, 1, 0, 148, 147, 0, 143, 0, 141, 0, 133, 116, 148, 117, 147, 0, 133, 116, 143, 117, 0, 118, @@ -378,33 +379,33 @@ static const short yyrhs[] = { -1, 166, 60, 0, 224, 60, 0, 1, 60, 0, 1, 109, 0, 60, 0, 218, 0, 159, 0, 0, 158, 0, 158, 60, 0, 0, 107, 0, 154, 146, 145, - 333, 0, 154, 146, 357, 0, 154, 146, 1, 0, - 0, 314, 5, 93, 150, 377, 108, 296, 389, 0, - 314, 5, 47, 296, 389, 0, 0, 323, 314, 5, - 93, 151, 377, 108, 296, 389, 0, 323, 314, 5, - 47, 296, 389, 0, 0, 314, 178, 93, 152, 377, - 108, 296, 389, 0, 314, 178, 47, 296, 389, 0, - 0, 323, 314, 178, 93, 153, 377, 108, 296, 389, - 0, 323, 314, 178, 47, 296, 389, 0, 224, 221, - 0, 227, 306, 0, 306, 0, 227, 149, 0, 149, - 0, 5, 93, 377, 108, 296, 389, 0, 5, 47, - 296, 389, 0, 178, 93, 377, 108, 296, 389, 0, - 178, 47, 296, 389, 0, 227, 155, 0, 155, 0, - 224, 221, 0, 227, 306, 0, 306, 0, 227, 149, + 334, 0, 154, 146, 358, 0, 154, 146, 1, 0, + 0, 315, 5, 93, 150, 378, 108, 297, 390, 0, + 315, 5, 47, 297, 390, 0, 0, 324, 315, 5, + 93, 151, 378, 108, 297, 390, 0, 324, 315, 5, + 47, 297, 390, 0, 0, 315, 178, 93, 152, 378, + 108, 297, 390, 0, 315, 178, 47, 297, 390, 0, + 0, 324, 315, 178, 93, 153, 378, 108, 297, 390, + 0, 324, 315, 178, 47, 297, 390, 0, 224, 221, + 0, 227, 307, 0, 307, 0, 227, 149, 0, 149, + 0, 5, 93, 378, 108, 297, 390, 0, 5, 47, + 297, 390, 0, 178, 93, 378, 108, 297, 390, 0, + 178, 47, 297, 390, 0, 227, 155, 0, 155, 0, + 224, 221, 0, 227, 307, 0, 307, 0, 227, 149, 0, 149, 0, 25, 3, 0, 157, 251, 0, 157, 93, 195, 108, 0, 157, 47, 0, 62, 160, 161, 0, 0, 0, 162, 0, 161, 59, 162, 0, 161, 1, 0, 93, 195, 108, 0, 47, 0, 164, 93, - 195, 108, 0, 164, 47, 0, 302, 93, 195, 108, - 0, 302, 47, 0, 316, 93, 195, 108, 0, 316, + 195, 108, 0, 164, 47, 0, 303, 93, 195, 108, + 0, 303, 47, 0, 317, 93, 195, 108, 0, 317, 47, 0, 3, 0, 4, 0, 5, 0, 56, 0, 57, 0, 3, 0, 56, 0, 57, 0, 104, 0, 103, 0, 105, 0, 0, 48, 175, 230, 60, 167, 176, 0, 0, 48, 175, 224, 221, 168, 176, 0, - 0, 48, 175, 306, 169, 176, 0, 0, 48, 175, + 0, 48, 175, 307, 169, 176, 0, 0, 48, 175, 149, 170, 176, 0, 0, 7, 48, 175, 230, 60, 171, 176, 0, 0, 7, 48, 175, 224, 221, 172, - 176, 0, 0, 7, 48, 175, 306, 173, 176, 0, + 176, 0, 0, 7, 48, 175, 307, 173, 176, 0, 0, 7, 48, 175, 149, 174, 176, 0, 0, 0, 56, 74, 181, 180, 179, 0, 4, 74, 181, 180, 179, 0, 178, 0, 5, 74, 181, 180, 179, 0, @@ -413,17 +414,17 @@ static const short yyrhs[] = { -1, 79, 0, 78, 0, 86, 0, 87, 0, 110, 0, 194, 0, 203, 0, 47, 0, 93, 185, 108, 0, 47, 0, 93, 189, 108, 0, 0, 189, 0, 1, - 0, 0, 367, 221, 235, 244, 64, 190, 252, 0, - 185, 0, 109, 0, 330, 328, 109, 0, 330, 328, - 1, 109, 0, 330, 1, 109, 0, 0, 58, 193, - 191, 0, 342, 0, 203, 59, 203, 0, 203, 59, + 0, 0, 368, 221, 235, 244, 64, 190, 252, 0, + 185, 0, 109, 0, 331, 329, 109, 0, 331, 329, + 1, 109, 0, 331, 1, 109, 0, 0, 58, 193, + 191, 0, 343, 0, 203, 59, 203, 0, 203, 59, 1, 0, 194, 59, 203, 0, 194, 59, 1, 0, 203, 0, 194, 0, 212, 0, 118, 202, 0, 80, 202, 0, 70, 202, 0, 88, 202, 0, 184, 202, 0, 67, 163, 0, 13, 196, 0, 13, 93, 223, 108, 0, 29, 196, 0, 29, 93, 223, 108, 0, - 214, 295, 0, 214, 295, 200, 0, 214, 199, 295, - 0, 214, 199, 295, 200, 0, 214, 93, 198, 223, + 214, 296, 0, 214, 296, 200, 0, 214, 199, 296, + 0, 214, 199, 296, 200, 0, 214, 93, 198, 223, 197, 0, 214, 93, 198, 223, 197, 200, 0, 214, 199, 93, 198, 223, 197, 0, 214, 199, 93, 198, 223, 197, 200, 0, 215, 202, 0, 215, 94, 111, @@ -441,49 +442,49 @@ static const short yyrhs[] = { -1, 203, 72, 203, 0, 203, 71, 203, 0, 203, 70, 203, 0, 203, 68, 203, 0, 203, 69, 203, 0, 203, 67, 203, 0, 203, 66, 203, 0, 203, 65, - 372, 62, 203, 0, 203, 64, 203, 0, 203, 63, - 203, 0, 61, 0, 61, 203, 0, 88, 387, 163, - 0, 88, 387, 177, 0, 206, 0, 394, 0, 3, + 373, 62, 203, 0, 203, 64, 203, 0, 203, 63, + 203, 0, 61, 0, 61, 203, 0, 88, 388, 163, + 0, 88, 388, 177, 0, 206, 0, 395, 0, 3, 0, 56, 0, 57, 0, 0, 6, 74, 205, 181, - 180, 0, 394, 74, 205, 181, 180, 0, 48, 163, + 180, 0, 395, 74, 205, 181, 180, 0, 48, 163, 74, 181, 180, 0, 48, 6, 74, 181, 180, 0, - 48, 394, 74, 181, 180, 0, 204, 0, 4, 0, + 48, 395, 74, 181, 180, 0, 204, 0, 4, 0, 5, 0, 204, 0, 80, 209, 0, 70, 209, 0, 93, 209, 108, 0, 3, 74, 181, 180, 0, 57, - 74, 182, 180, 0, 308, 0, 204, 0, 210, 0, + 74, 182, 180, 0, 309, 0, 204, 0, 210, 0, 93, 209, 108, 0, 204, 0, 10, 0, 216, 0, 217, 0, 93, 185, 108, 0, 93, 209, 108, 0, - 93, 1, 108, 0, 0, 93, 213, 334, 108, 0, + 93, 1, 108, 0, 0, 93, 213, 335, 108, 0, 204, 93, 195, 108, 0, 204, 47, 0, 212, 93, 195, 108, 0, 212, 47, 0, 212, 94, 185, 111, 0, 212, 86, 0, 212, 87, 0, 40, 0, 9, - 93, 195, 108, 0, 312, 0, 50, 74, 223, 75, + 93, 195, 108, 0, 313, 0, 50, 74, 223, 75, 93, 185, 108, 0, 51, 74, 223, 75, 93, 185, 108, 0, 52, 74, 223, 75, 93, 185, 108, 0, 53, 74, 223, 75, 93, 185, 108, 0, 49, 93, - 185, 108, 0, 49, 93, 223, 108, 0, 323, 3, - 0, 323, 206, 0, 323, 394, 0, 311, 0, 311, - 93, 195, 108, 0, 311, 47, 0, 219, 207, 0, + 185, 108, 0, 49, 93, 223, 108, 0, 324, 3, + 0, 324, 206, 0, 324, 395, 0, 312, 0, 312, + 93, 195, 108, 0, 312, 47, 0, 219, 207, 0, 219, 207, 93, 195, 108, 0, 219, 207, 47, 0, - 219, 208, 0, 219, 311, 0, 219, 208, 93, 195, - 108, 0, 219, 208, 47, 0, 219, 311, 93, 195, - 108, 0, 219, 311, 47, 0, 219, 88, 8, 47, + 219, 208, 0, 219, 312, 0, 219, 208, 93, 195, + 108, 0, 219, 208, 47, 0, 219, 312, 93, 195, + 108, 0, 219, 312, 47, 0, 219, 88, 8, 47, 0, 219, 8, 54, 88, 8, 47, 0, 219, 1, - 0, 39, 0, 323, 39, 0, 38, 0, 323, 215, + 0, 39, 0, 324, 39, 0, 38, 0, 324, 215, 0, 42, 0, 43, 0, 11, 0, 217, 11, 0, 0, 212, 92, 0, 212, 91, 0, 230, 232, 60, 0, 224, 232, 60, 0, 227, 233, 60, 0, 224, - 60, 0, 227, 60, 0, 118, 220, 0, 301, 0, - 306, 0, 47, 0, 222, 47, 0, 228, 326, 0, - 297, 326, 0, 230, 326, 0, 228, 0, 297, 0, + 60, 0, 227, 60, 0, 118, 220, 0, 302, 0, + 307, 0, 47, 0, 222, 47, 0, 228, 327, 0, + 298, 327, 0, 230, 327, 0, 228, 0, 298, 0, 228, 0, 225, 0, 227, 230, 0, 230, 226, 0, 230, 229, 226, 0, 227, 230, 226, 0, 227, 230, 229, 0, 227, 230, 229, 226, 0, 7, 0, 226, 231, 0, 226, 7, 0, 226, 245, 0, 245, 0, - 297, 0, 7, 0, 227, 9, 0, 227, 7, 0, - 227, 245, 0, 245, 0, 230, 0, 297, 230, 0, - 230, 229, 0, 297, 230, 229, 0, 231, 0, 229, - 231, 0, 259, 0, 8, 0, 303, 0, 28, 93, + 298, 0, 7, 0, 227, 9, 0, 227, 7, 0, + 227, 245, 0, 245, 0, 230, 0, 298, 230, 0, + 230, 229, 0, 298, 230, 229, 0, 231, 0, 229, + 231, 0, 259, 0, 8, 0, 304, 0, 28, 93, 185, 108, 0, 28, 93, 223, 108, 0, 30, 93, 185, 108, 0, 30, 93, 223, 108, 0, 8, 0, 9, 0, 259, 0, 240, 0, 232, 59, 236, 0, @@ -491,7 +492,7 @@ static const short yyrhs[] = { -1, 236, 0, 0, 119, 93, 217, 108, 0, 0, 221, 235, 244, 64, 237, 252, 0, 221, 235, 244, 0, 0, 244, 64, 239, 252, 0, 244, 0, 221, 235, - 238, 0, 306, 235, 238, 0, 0, 306, 235, 243, + 238, 0, 307, 235, 238, 0, 0, 307, 235, 243, 238, 0, 149, 235, 244, 0, 0, 245, 0, 246, 0, 245, 246, 0, 31, 93, 93, 247, 108, 108, 0, 248, 0, 247, 59, 248, 0, 0, 249, 0, @@ -502,231 +503,232 @@ static const short yyrhs[] = { -1, 58, 253, 109, 0, 58, 253, 59, 109, 0, 1, 0, 252, 0, 253, 59, 252, 0, 94, 203, 111, 252, 0, 163, 62, 252, 0, 253, 59, 163, 62, - 252, 0, 97, 0, 254, 146, 145, 333, 0, 254, - 146, 357, 0, 254, 146, 1, 0, 0, 256, 255, + 252, 0, 97, 0, 254, 146, 145, 334, 0, 254, + 146, 358, 0, 254, 146, 1, 0, 0, 256, 255, 147, 0, 102, 203, 107, 0, 102, 1, 107, 0, 0, 258, 257, 0, 258, 1, 0, 0, 14, 163, - 58, 260, 293, 265, 109, 0, 14, 163, 58, 109, - 0, 0, 14, 58, 261, 293, 265, 109, 0, 14, - 58, 109, 0, 14, 163, 0, 14, 321, 0, 45, - 316, 0, 0, 0, 273, 279, 281, 109, 244, 262, + 58, 260, 294, 265, 109, 0, 14, 163, 58, 109, + 0, 0, 14, 58, 261, 294, 265, 109, 0, 14, + 58, 109, 0, 14, 163, 0, 14, 322, 0, 45, + 317, 0, 0, 0, 273, 279, 281, 109, 244, 262, 258, 263, 256, 0, 273, 0, 0, 59, 0, 0, 59, 0, 36, 0, 266, 7, 0, 266, 8, 0, 266, 9, 0, 266, 36, 0, 266, 245, 0, 266, 163, 0, 266, 165, 0, 267, 58, 0, 267, 62, - 0, 266, 314, 163, 0, 266, 323, 314, 163, 0, - 266, 323, 163, 0, 266, 177, 0, 266, 314, 177, - 0, 0, 267, 0, 268, 270, 274, 0, 269, 274, - 0, 266, 58, 0, 272, 0, 271, 0, 0, 62, - 387, 0, 62, 387, 275, 0, 276, 0, 275, 59, - 387, 276, 0, 277, 0, 278, 387, 277, 0, 316, - 0, 302, 0, 30, 93, 185, 108, 0, 30, 93, - 223, 108, 0, 37, 387, 0, 7, 387, 0, 278, - 37, 387, 0, 278, 7, 387, 0, 58, 0, 0, - 280, 0, 280, 282, 0, 281, 37, 62, 282, 0, - 281, 37, 62, 0, 283, 0, 282, 283, 0, 284, - 60, 0, 284, 109, 0, 156, 62, 0, 156, 95, - 0, 156, 25, 0, 156, 58, 0, 60, 0, 118, - 283, 0, 134, 283, 0, 134, 224, 60, 0, 224, - 285, 0, 227, 286, 0, 306, 235, 244, 251, 0, - 149, 235, 244, 251, 0, 62, 203, 0, 1, 0, - 227, 155, 235, 244, 251, 0, 155, 235, 244, 251, - 0, 127, 0, 0, 287, 0, 285, 59, 288, 0, - 0, 290, 0, 286, 59, 292, 0, 289, 0, 290, - 0, 291, 0, 292, 0, 301, 235, 244, 251, 0, - 4, 62, 203, 244, 0, 306, 235, 244, 251, 0, - 149, 235, 244, 251, 0, 3, 62, 203, 244, 0, - 62, 203, 244, 0, 301, 235, 244, 251, 0, 4, - 62, 203, 244, 0, 306, 235, 244, 251, 0, 3, - 62, 203, 244, 0, 62, 203, 244, 0, 294, 0, - 293, 59, 294, 0, 163, 0, 163, 64, 203, 0, - 367, 324, 0, 367, 0, 93, 198, 223, 197, 94, - 185, 111, 0, 0, 296, 9, 0, 9, 0, 297, - 9, 0, 0, 298, 185, 0, 298, 93, 195, 108, - 0, 298, 93, 377, 108, 0, 298, 47, 0, 298, - 93, 1, 108, 0, 80, 297, 301, 0, 70, 297, - 301, 0, 80, 301, 0, 70, 301, 0, 322, 296, - 301, 0, 305, 0, 313, 0, 323, 313, 0, 302, - 0, 304, 0, 323, 304, 0, 314, 313, 0, 305, - 300, 296, 389, 0, 305, 94, 299, 111, 0, 305, - 94, 111, 0, 93, 301, 108, 0, 314, 313, 0, - 313, 0, 80, 297, 306, 0, 70, 297, 306, 0, - 80, 306, 0, 70, 306, 0, 322, 296, 306, 0, - 211, 0, 80, 297, 306, 0, 70, 297, 306, 0, - 80, 307, 0, 70, 307, 0, 322, 296, 306, 0, - 308, 0, 211, 300, 296, 389, 0, 93, 307, 108, - 0, 211, 94, 299, 111, 0, 211, 94, 111, 0, - 310, 0, 314, 210, 0, 314, 208, 0, 314, 207, - 0, 314, 204, 0, 314, 207, 0, 310, 0, 323, - 310, 0, 230, 93, 195, 108, 0, 230, 93, 209, - 108, 0, 230, 222, 0, 4, 0, 5, 0, 177, - 0, 315, 0, 314, 315, 0, 314, 48, 320, 54, - 0, 4, 54, 0, 5, 54, 0, 57, 54, 0, - 177, 54, 0, 317, 0, 323, 317, 0, 318, 163, - 0, 318, 177, 0, 318, 320, 0, 318, 48, 320, - 0, 319, 0, 318, 319, 0, 318, 320, 54, 0, - 318, 48, 320, 54, 0, 4, 54, 0, 5, 54, - 0, 177, 54, 0, 56, 54, 0, 3, 54, 0, - 57, 54, 0, 163, 74, 181, 180, 0, 323, 313, - 0, 304, 0, 323, 304, 0, 314, 80, 0, 323, - 314, 80, 0, 54, 0, 80, 296, 324, 0, 80, - 296, 0, 70, 296, 324, 0, 70, 296, 0, 322, - 296, 0, 322, 296, 324, 0, 325, 0, 94, 185, - 111, 0, 325, 94, 299, 111, 0, 80, 297, 326, - 0, 80, 326, 0, 80, 297, 0, 80, 0, 70, - 297, 326, 0, 70, 326, 0, 70, 297, 0, 70, - 0, 322, 296, 0, 322, 296, 326, 0, 327, 0, - 93, 326, 108, 0, 90, 0, 327, 93, 377, 108, - 296, 389, 0, 327, 47, 296, 389, 0, 327, 94, - 299, 111, 0, 327, 94, 111, 0, 93, 378, 108, - 296, 389, 0, 201, 296, 389, 0, 222, 296, 389, - 0, 94, 299, 111, 0, 94, 111, 0, 341, 0, - 329, 0, 328, 341, 0, 328, 329, 0, 1, 60, - 0, 0, 331, 0, 332, 0, 331, 332, 0, 33, - 250, 60, 0, 334, 0, 1, 334, 0, 0, 58, - 335, 191, 0, 0, 0, 15, 337, 187, 338, 339, - 0, 334, 0, 0, 340, 342, 0, 334, 0, 342, - 0, 220, 0, 185, 60, 0, 0, 336, 16, 343, - 339, 0, 336, 0, 0, 0, 17, 344, 187, 345, - 192, 0, 0, 0, 18, 346, 339, 17, 347, 186, - 60, 0, 0, 0, 0, 0, 19, 348, 93, 370, - 349, 188, 60, 350, 372, 108, 351, 192, 0, 0, - 0, 20, 352, 93, 189, 108, 353, 339, 0, 0, - 21, 203, 62, 354, 341, 0, 0, 21, 203, 12, - 203, 62, 355, 341, 0, 0, 22, 62, 356, 341, - 0, 23, 60, 0, 24, 60, 0, 25, 60, 0, - 25, 185, 60, 0, 119, 371, 93, 217, 108, 60, - 0, 119, 371, 93, 217, 62, 373, 108, 60, 0, - 119, 371, 93, 217, 62, 373, 62, 373, 108, 60, - 0, 119, 371, 93, 217, 62, 373, 62, 373, 62, - 376, 108, 60, 0, 26, 80, 185, 60, 0, 26, - 163, 60, 0, 369, 341, 0, 369, 109, 0, 60, - 0, 360, 0, 129, 0, 128, 0, 125, 0, 0, - 0, 95, 358, 145, 334, 359, 363, 0, 0, 0, - 95, 361, 334, 362, 363, 0, 364, 0, 363, 364, - 0, 0, 0, 96, 365, 368, 366, 334, 0, 228, - 0, 297, 0, 93, 12, 108, 0, 93, 386, 108, - 0, 3, 62, 0, 56, 62, 0, 4, 62, 0, - 5, 62, 0, 372, 60, 0, 220, 0, 58, 191, - 0, 0, 9, 0, 0, 185, 0, 1, 0, 0, - 374, 0, 375, 0, 374, 59, 375, 0, 11, 93, - 185, 108, 0, 11, 0, 376, 59, 11, 0, 0, - 378, 0, 223, 0, 382, 0, 383, 12, 0, 382, - 12, 0, 223, 12, 0, 12, 0, 382, 62, 0, - 223, 62, 0, 0, 64, 380, 381, 0, 101, 0, - 252, 0, 384, 0, 386, 379, 0, 383, 385, 0, - 383, 388, 0, 383, 388, 64, 252, 0, 382, 59, - 0, 223, 59, 0, 225, 221, 0, 228, 221, 0, - 230, 221, 0, 225, 326, 0, 225, 0, 227, 306, - 0, 386, 0, 386, 379, 0, 384, 0, 223, 0, - 0, 0, 306, 0, 0, 61, 93, 391, 108, 0, - 61, 47, 0, 223, 0, 390, 0, 391, 59, 390, - 0, 0, 80, 296, 392, 0, 70, 296, 392, 0, - 322, 296, 392, 0, 41, 0, 393, 80, 0, 393, - 81, 0, 393, 82, 0, 393, 78, 0, 393, 79, - 0, 393, 70, 0, 393, 68, 0, 393, 69, 0, - 393, 88, 0, 393, 59, 0, 393, 73, 0, 393, - 74, 0, 393, 75, 0, 393, 72, 0, 393, 63, - 0, 393, 64, 0, 393, 76, 0, 393, 77, 0, - 393, 86, 0, 393, 87, 0, 393, 67, 0, 393, - 66, 0, 393, 110, 0, 393, 65, 62, 0, 393, - 71, 0, 393, 91, 0, 393, 83, 0, 393, 47, - 0, 393, 94, 111, 0, 393, 39, 0, 393, 38, - 0, 393, 39, 94, 111, 0, 393, 38, 94, 111, - 0, 393, 367, 392, 0, 393, 1, 0 + 0, 266, 315, 163, 0, 266, 324, 315, 163, 0, + 266, 324, 163, 0, 266, 177, 0, 266, 315, 177, + 0, 267, 0, 0, 268, 271, 274, 0, 269, 274, + 0, 266, 58, 0, 272, 0, 270, 0, 0, 62, + 388, 0, 62, 388, 275, 0, 276, 0, 275, 59, + 388, 276, 0, 277, 0, 278, 388, 277, 0, 317, + 0, 303, 0, 30, 93, 185, 108, 0, 30, 93, + 223, 108, 0, 37, 388, 0, 7, 388, 0, 278, + 37, 388, 0, 278, 7, 388, 0, 58, 0, 0, + 280, 0, 280, 283, 0, 281, 282, 283, 0, 281, + 282, 0, 37, 62, 0, 284, 0, 283, 284, 0, + 285, 60, 0, 285, 109, 0, 156, 62, 0, 156, + 95, 0, 156, 25, 0, 156, 58, 0, 60, 0, + 118, 284, 0, 134, 284, 0, 134, 224, 60, 0, + 224, 286, 0, 227, 287, 0, 307, 235, 244, 251, + 0, 149, 235, 244, 251, 0, 62, 203, 0, 1, + 0, 227, 155, 235, 244, 251, 0, 155, 235, 244, + 251, 0, 127, 0, 0, 288, 0, 286, 59, 289, + 0, 0, 291, 0, 287, 59, 293, 0, 290, 0, + 291, 0, 292, 0, 293, 0, 302, 235, 244, 251, + 0, 4, 62, 203, 244, 0, 307, 235, 244, 251, + 0, 149, 235, 244, 251, 0, 3, 62, 203, 244, + 0, 62, 203, 244, 0, 302, 235, 244, 251, 0, + 4, 62, 203, 244, 0, 307, 235, 244, 251, 0, + 3, 62, 203, 244, 0, 62, 203, 244, 0, 295, + 0, 294, 59, 295, 0, 163, 0, 163, 64, 203, + 0, 368, 325, 0, 368, 0, 93, 198, 223, 197, + 94, 185, 111, 0, 0, 297, 9, 0, 9, 0, + 298, 9, 0, 0, 299, 185, 0, 299, 93, 195, + 108, 0, 299, 93, 378, 108, 0, 299, 47, 0, + 299, 93, 1, 108, 0, 80, 298, 302, 0, 70, + 298, 302, 0, 80, 302, 0, 70, 302, 0, 323, + 297, 302, 0, 306, 0, 314, 0, 324, 314, 0, + 303, 0, 305, 0, 324, 305, 0, 315, 314, 0, + 306, 301, 297, 390, 0, 306, 94, 300, 111, 0, + 306, 94, 111, 0, 93, 302, 108, 0, 315, 314, + 0, 314, 0, 80, 298, 307, 0, 70, 298, 307, + 0, 80, 307, 0, 70, 307, 0, 323, 297, 307, + 0, 211, 0, 80, 298, 307, 0, 70, 298, 307, + 0, 80, 308, 0, 70, 308, 0, 323, 297, 307, + 0, 309, 0, 211, 301, 297, 390, 0, 93, 308, + 108, 0, 211, 94, 300, 111, 0, 211, 94, 111, + 0, 311, 0, 315, 210, 0, 315, 208, 0, 315, + 207, 0, 315, 204, 0, 315, 207, 0, 311, 0, + 324, 311, 0, 230, 93, 195, 108, 0, 230, 93, + 209, 108, 0, 230, 222, 0, 4, 0, 5, 0, + 177, 0, 316, 0, 315, 316, 0, 315, 48, 321, + 54, 0, 4, 54, 0, 5, 54, 0, 57, 54, + 0, 177, 54, 0, 318, 0, 324, 318, 0, 319, + 163, 0, 319, 177, 0, 319, 321, 0, 319, 48, + 321, 0, 320, 0, 319, 320, 0, 319, 321, 54, + 0, 319, 48, 321, 54, 0, 4, 54, 0, 5, + 54, 0, 177, 54, 0, 56, 54, 0, 3, 54, + 0, 57, 54, 0, 163, 74, 181, 180, 0, 324, + 314, 0, 305, 0, 324, 305, 0, 315, 80, 0, + 324, 315, 80, 0, 54, 0, 80, 297, 325, 0, + 80, 297, 0, 70, 297, 325, 0, 70, 297, 0, + 323, 297, 0, 323, 297, 325, 0, 326, 0, 94, + 185, 111, 0, 326, 94, 300, 111, 0, 80, 298, + 327, 0, 80, 327, 0, 80, 298, 0, 80, 0, + 70, 298, 327, 0, 70, 327, 0, 70, 298, 0, + 70, 0, 323, 297, 0, 323, 297, 327, 0, 328, + 0, 93, 327, 108, 0, 90, 0, 328, 93, 378, + 108, 297, 390, 0, 328, 47, 297, 390, 0, 328, + 94, 300, 111, 0, 328, 94, 111, 0, 93, 379, + 108, 297, 390, 0, 201, 297, 390, 0, 222, 297, + 390, 0, 94, 300, 111, 0, 94, 111, 0, 342, + 0, 330, 0, 329, 342, 0, 329, 330, 0, 1, + 60, 0, 0, 332, 0, 333, 0, 332, 333, 0, + 33, 250, 60, 0, 335, 0, 1, 335, 0, 0, + 58, 336, 191, 0, 0, 0, 15, 338, 187, 339, + 340, 0, 335, 0, 0, 341, 343, 0, 335, 0, + 343, 0, 220, 0, 185, 60, 0, 0, 337, 16, + 344, 340, 0, 337, 0, 0, 0, 17, 345, 187, + 346, 192, 0, 0, 0, 18, 347, 340, 17, 348, + 186, 60, 0, 0, 0, 0, 0, 19, 349, 93, + 371, 350, 188, 60, 351, 373, 108, 352, 192, 0, + 0, 0, 20, 353, 93, 189, 108, 354, 340, 0, + 0, 21, 203, 62, 355, 342, 0, 0, 21, 203, + 12, 203, 62, 356, 342, 0, 0, 22, 62, 357, + 342, 0, 23, 60, 0, 24, 60, 0, 25, 60, + 0, 25, 185, 60, 0, 119, 372, 93, 217, 108, + 60, 0, 119, 372, 93, 217, 62, 374, 108, 60, + 0, 119, 372, 93, 217, 62, 374, 62, 374, 108, + 60, 0, 119, 372, 93, 217, 62, 374, 62, 374, + 62, 377, 108, 60, 0, 26, 80, 185, 60, 0, + 26, 163, 60, 0, 370, 342, 0, 370, 109, 0, + 60, 0, 361, 0, 129, 0, 128, 0, 125, 0, + 0, 0, 95, 359, 145, 335, 360, 364, 0, 0, + 0, 95, 362, 335, 363, 364, 0, 365, 0, 364, + 365, 0, 0, 0, 96, 366, 369, 367, 335, 0, + 228, 0, 298, 0, 93, 12, 108, 0, 93, 387, + 108, 0, 3, 62, 0, 56, 62, 0, 4, 62, + 0, 5, 62, 0, 373, 60, 0, 220, 0, 58, + 191, 0, 0, 9, 0, 0, 185, 0, 1, 0, + 0, 375, 0, 376, 0, 375, 59, 376, 0, 11, + 93, 185, 108, 0, 11, 0, 377, 59, 11, 0, + 0, 379, 0, 223, 0, 383, 0, 384, 12, 0, + 383, 12, 0, 223, 12, 0, 12, 0, 383, 62, + 0, 223, 62, 0, 0, 64, 381, 382, 0, 101, + 0, 252, 0, 385, 0, 387, 380, 0, 384, 386, + 0, 384, 389, 0, 384, 389, 64, 252, 0, 383, + 59, 0, 223, 59, 0, 225, 221, 0, 228, 221, + 0, 230, 221, 0, 225, 327, 0, 225, 0, 227, + 307, 0, 387, 0, 387, 380, 0, 385, 0, 223, + 0, 0, 0, 307, 0, 0, 61, 93, 392, 108, + 0, 61, 47, 0, 223, 0, 391, 0, 392, 59, + 391, 0, 0, 80, 297, 393, 0, 70, 297, 393, + 0, 323, 297, 393, 0, 41, 0, 394, 80, 0, + 394, 81, 0, 394, 82, 0, 394, 78, 0, 394, + 79, 0, 394, 70, 0, 394, 68, 0, 394, 69, + 0, 394, 88, 0, 394, 59, 0, 394, 73, 0, + 394, 74, 0, 394, 75, 0, 394, 72, 0, 394, + 63, 0, 394, 64, 0, 394, 76, 0, 394, 77, + 0, 394, 86, 0, 394, 87, 0, 394, 67, 0, + 394, 66, 0, 394, 110, 0, 394, 65, 62, 0, + 394, 71, 0, 394, 91, 0, 394, 83, 0, 394, + 47, 0, 394, 94, 111, 0, 394, 39, 0, 394, + 38, 0, 394, 39, 94, 111, 0, 394, 38, 94, + 111, 0, 394, 368, 393, 0, 394, 1, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 335, 337, 345, 348, 349, 353, 355, 358, 363, 367, - 373, 377, 380, 384, 387, 389, 391, 394, 396, 399, - 402, 404, 406, 408, 410, 411, 413, 414, 418, 421, - 430, 433, 435, 439, 442, 444, 448, 451, 463, 470, - 478, 480, 481, 483, 487, 490, 496, 499, 501, 506, - 509, 513, 516, 519, 522, 526, 531, 541, 543, 545, - 547, 549, 562, 565, 569, 572, 574, 576, 579, 582, - 586, 588, 590, 592, 597, 599, 601, 603, 605, 606, - 613, 614, 615, 618, 621, 625, 627, 628, 631, 633, - 636, 639, 641, 645, 648, 650, 654, 656, 658, 662, - 664, 666, 670, 672, 674, 680, 684, 687, 690, 693, - 698, 701, 703, 705, 711, 721, 723, 726, 729, 731, - 734, 738, 747, 750, 752, 756, 769, 789, 792, 794, - 795, 798, 805, 811, 813, 815, 817, 819, 822, 827, - 829, 830, 831, 832, 835, 837, 838, 841, 843, 844, - 847, 852, 852, 856, 856, 859, 859, 862, 862, 866, - 866, 871, 871, 874, 874, 877, 879, 882, 889, 893, - 896, 899, 905, 914, 916, 924, 927, 930, 933, 937, - 940, 942, 945, 948, 950, 952, 954, 958, 961, 964, - 969, 973, 978, 982, 985, 986, 990, 1009, 1016, 1019, - 1021, 1022, 1023, 1026, 1030, 1031, 1035, 1039, 1042, 1044, - 1048, 1051, 1054, 1058, 1061, 1063, 1065, 1067, 1070, 1074, - 1076, 1078, 1080, 1086, 1089, 1092, 1095, 1107, 1112, 1116, - 1120, 1125, 1127, 1131, 1135, 1137, 1146, 1150, 1153, 1156, - 1161, 1164, 1166, 1174, 1187, 1192, 1198, 1200, 1202, 1215, - 1218, 1220, 1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236, - 1238, 1240, 1242, 1244, 1246, 1248, 1250, 1252, 1254, 1256, - 1258, 1262, 1264, 1266, 1283, 1286, 1288, 1289, 1290, 1291, - 1292, 1295, 1298, 1301, 1305, 1308, 1310, 1315, 1317, 1318, - 1321, 1323, 1325, 1327, 1331, 1334, 1338, 1342, 1343, 1344, - 1348, 1356, 1357, 1358, 1372, 1374, 1377, 1379, 1390, 1395, - 1397, 1399, 1401, 1403, 1405, 1407, 1410, 1412, 1456, 1457, - 1461, 1465, 1469, 1473, 1475, 1479, 1481, 1483, 1491, 1493, - 1495, 1497, 1501, 1503, 1505, 1507, 1512, 1514, 1516, 1518, - 1521, 1523, 1525, 1569, 1572, 1576, 1579, 1583, 1586, 1591, - 1593, 1597, 1610, 1613, 1620, 1627, 1632, 1634, 1639, 1641, - 1648, 1650, 1654, 1658, 1664, 1668, 1671, 1674, 1677, 1687, - 1689, 1692, 1696, 1699, 1702, 1705, 1708, 1714, 1720, 1722, - 1727, 1729, 1738, 1741, 1743, 1746, 1752, 1754, 1764, 1768, - 1771, 1774, 1779, 1782, 1790, 1792, 1794, 1796, 1799, 1802, - 1817, 1836, 1839, 1841, 1844, 1846, 1849, 1851, 1854, 1856, - 1859, 1862, 1866, 1872, 1873, 1885, 1892, 1895, 1901, 1905, - 1910, 1916, 1917, 1925, 1928, 1932, 1935, 1939, 1944, 1947, - 1951, 1954, 1956, 1958, 1960, 1967, 1969, 1970, 1971, 1975, - 1978, 1982, 1985, 1991, 1993, 1996, 1999, 2002, 2008, 2011, - 2014, 2016, 2018, 2022, 2028, 2036, 2038, 2042, 2044, 2049, - 2052, 2055, 2057, 2059, 2063, 2068, 2075, 2079, 2083, 2090, - 2094, 2097, 2100, 2106, 2118, 2120, 2123, 2143, 2145, 2148, - 2150, 2155, 2157, 2159, 2161, 2163, 2165, 2169, 2174, 2177, - 2179, 2183, 2189, 2194, 2199, 2201, 2205, 2210, 2213, 2220, - 2237, 2243, 2245, 2248, 2251, 2253, 2257, 2259, 2263, 2268, - 2274, 2277, 2278, 2299, 2322, 2324, 2328, 2339, 2353, 2358, - 2365, 2368, 2376, 2387, 2396, 2400, 2416, 2419, 2424, 2426, - 2428, 2430, 2432, 2434, 2437, 2439, 2443, 2449, 2451, 2454, - 2457, 2459, 2470, 2475, 2478, 2483, 2486, 2487, 2498, 2501, - 2502, 2513, 2515, 2518, 2520, 2523, 2530, 2538, 2545, 2551, - 2557, 2565, 2569, 2574, 2578, 2581, 2590, 2592, 2596, 2599, - 2604, 2608, 2614, 2625, 2628, 2632, 2636, 2644, 2649, 2655, - 2658, 2660, 2662, 2668, 2671, 2673, 2675, 2677, 2681, 2684, - 2702, 2712, 2714, 2715, 2719, 2724, 2727, 2729, 2731, 2733, - 2737, 2743, 2746, 2748, 2750, 2752, 2756, 2759, 2762, 2764, - 2766, 2768, 2772, 2775, 2778, 2780, 2782, 2784, 2786, 2793, - 2797, 2802, 2806, 2811, 2813, 2817, 2820, 2822, 2825, 2827, - 2828, 2831, 2833, 2835, 2841, 2856, 2862, 2868, 2882, 2884, - 2888, 2902, 2904, 2906, 2910, 2916, 2929, 2931, 2935, 2948, - 2954, 2956, 2957, 2958, 2966, 2971, 2980, 2981, 2985, 2988, - 2994, 3000, 3003, 3005, 3007, 3009, 3013, 3017, 3021, 3024, - 3029, 3032, 3034, 3036, 3038, 3040, 3042, 3044, 3046, 3050, - 3054, 3058, 3062, 3063, 3065, 3067, 3069, 3071, 3073, 3075, - 3077, 3079, 3087, 3089, 3090, 3091, 3094, 3100, 3102, 3107, - 3109, 3112, 3126, 3129, 3132, 3136, 3139, 3146, 3148, 3151, - 3153, 3155, 3158, 3161, 3164, 3167, 3169, 3172, 3176, 3178, - 3184, 3186, 3187, 3189, 3194, 3196, 3198, 3200, 3202, 3205, - 3206, 3208, 3211, 3212, 3215, 3215, 3218, 3218, 3221, 3221, - 3223, 3225, 3227, 3229, 3235, 3241, 3244, 3247, 3253, 3255, - 3257, 3261, 3263, 3264, 3265, 3267, 3270, 3277, 3282, 3290, - 3294, 3296, 3299, 3301, 3304, 3308, 3310, 3313, 3315, 3318, - 3335, 3341, 3349, 3351, 3353, 3357, 3360, 3361, 3369, 3373, - 3377, 3380, 3381, 3387, 3390, 3393, 3395, 3399, 3404, 3407, - 3417, 3422, 3423, 3430, 3433, 3436, 3438, 3441, 3443, 3453, - 3467, 3471, 3474, 3476, 3480, 3484, 3487, 3490, 3492, 3496, - 3498, 3505, 3512, 3515, 3518, 3522, 3526, 3532, 3536, 3541, - 3543, 3546, 3551, 3557, 3568, 3571, 3573, 3577, 3582, 3584, - 3591, 3594, 3596, 3598, 3604, 3609, 3612, 3614, 3616, 3618, - 3620, 3622, 3624, 3626, 3628, 3630, 3632, 3634, 3636, 3638, - 3640, 3642, 3644, 3646, 3648, 3650, 3652, 3654, 3656, 3658, - 3660, 3662, 3664, 3666, 3668, 3670, 3672, 3674, 3677, 3679 + 334, 336, 344, 347, 348, 352, 354, 357, 362, 366, + 372, 376, 379, 383, 386, 388, 390, 393, 395, 398, + 401, 403, 405, 407, 409, 410, 412, 413, 417, 420, + 429, 432, 434, 438, 441, 443, 447, 450, 462, 469, + 477, 479, 480, 482, 486, 489, 495, 498, 500, 505, + 508, 512, 515, 518, 521, 525, 530, 540, 542, 544, + 546, 548, 561, 564, 568, 571, 573, 575, 578, 581, + 585, 587, 589, 591, 596, 598, 600, 602, 604, 605, + 612, 613, 614, 617, 620, 624, 626, 627, 630, 632, + 635, 638, 640, 644, 647, 649, 653, 655, 657, 661, + 663, 665, 669, 671, 673, 679, 683, 686, 689, 692, + 697, 700, 702, 704, 710, 720, 722, 725, 728, 730, + 733, 737, 746, 749, 751, 755, 768, 788, 791, 793, + 794, 797, 804, 810, 812, 814, 816, 818, 821, 826, + 828, 829, 830, 831, 834, 836, 837, 840, 842, 843, + 846, 851, 851, 855, 855, 858, 858, 861, 861, 865, + 865, 870, 870, 873, 873, 876, 878, 881, 888, 892, + 895, 898, 904, 913, 915, 923, 926, 929, 932, 936, + 939, 941, 944, 947, 949, 951, 953, 957, 960, 963, + 968, 972, 977, 981, 984, 985, 989, 1008, 1015, 1018, + 1020, 1021, 1022, 1025, 1029, 1030, 1034, 1038, 1041, 1043, + 1047, 1050, 1053, 1057, 1060, 1062, 1064, 1066, 1069, 1073, + 1075, 1077, 1079, 1085, 1088, 1091, 1094, 1106, 1111, 1115, + 1119, 1124, 1126, 1130, 1134, 1136, 1145, 1149, 1152, 1155, + 1160, 1163, 1165, 1173, 1186, 1191, 1197, 1199, 1201, 1214, + 1217, 1219, 1221, 1223, 1225, 1227, 1229, 1231, 1233, 1235, + 1237, 1239, 1241, 1243, 1245, 1247, 1249, 1251, 1253, 1255, + 1257, 1261, 1263, 1265, 1282, 1285, 1287, 1288, 1289, 1290, + 1291, 1294, 1297, 1300, 1304, 1307, 1309, 1314, 1316, 1317, + 1320, 1322, 1324, 1326, 1330, 1333, 1337, 1341, 1342, 1343, + 1347, 1355, 1356, 1357, 1371, 1373, 1376, 1378, 1389, 1394, + 1396, 1398, 1400, 1402, 1404, 1406, 1409, 1411, 1455, 1456, + 1460, 1464, 1468, 1472, 1474, 1478, 1480, 1482, 1490, 1492, + 1494, 1496, 1500, 1502, 1504, 1506, 1511, 1513, 1515, 1517, + 1520, 1522, 1524, 1568, 1571, 1575, 1578, 1582, 1585, 1590, + 1592, 1596, 1609, 1612, 1619, 1626, 1631, 1633, 1638, 1640, + 1647, 1649, 1653, 1657, 1663, 1667, 1670, 1673, 1676, 1686, + 1688, 1691, 1695, 1698, 1701, 1704, 1707, 1713, 1719, 1721, + 1726, 1728, 1737, 1740, 1742, 1745, 1751, 1753, 1763, 1767, + 1770, 1773, 1778, 1781, 1789, 1791, 1793, 1795, 1798, 1801, + 1816, 1835, 1838, 1840, 1843, 1845, 1849, 1851, 1855, 1857, + 1861, 1864, 1868, 1874, 1875, 1887, 1894, 1897, 1903, 1907, + 1912, 1918, 1919, 1927, 1930, 1934, 1937, 1941, 1946, 1949, + 1953, 1956, 1958, 1960, 1962, 1969, 1971, 1972, 1973, 1977, + 1980, 1984, 1987, 1993, 1995, 1998, 2001, 2004, 2010, 2013, + 2016, 2018, 2020, 2024, 2030, 2038, 2040, 2044, 2046, 2051, + 2054, 2057, 2059, 2061, 2065, 2070, 2077, 2081, 2085, 2092, + 2096, 2099, 2102, 2108, 2120, 2122, 2125, 2145, 2147, 2150, + 2152, 2157, 2159, 2161, 2163, 2165, 2167, 2171, 2179, 2182, + 2184, 2188, 2194, 2199, 2204, 2206, 2210, 2213, 2215, 2221, + 2238, 2244, 2246, 2249, 2252, 2254, 2258, 2260, 2264, 2269, + 2275, 2278, 2279, 2300, 2323, 2325, 2329, 2340, 2354, 2359, + 2366, 2368, 2369, 2370, 2373, 2388, 2393, 2399, 2401, 2406, + 2408, 2410, 2412, 2414, 2416, 2419, 2429, 2436, 2461, 2467, + 2470, 2473, 2475, 2486, 2491, 2494, 2499, 2502, 2509, 2519, + 2522, 2529, 2539, 2541, 2544, 2546, 2549, 2556, 2564, 2571, + 2577, 2583, 2591, 2595, 2600, 2604, 2607, 2616, 2618, 2622, + 2625, 2630, 2634, 2640, 2651, 2654, 2658, 2662, 2670, 2675, + 2681, 2684, 2686, 2688, 2694, 2697, 2699, 2701, 2703, 2707, + 2710, 2728, 2738, 2740, 2741, 2745, 2750, 2753, 2755, 2757, + 2759, 2763, 2769, 2772, 2774, 2776, 2778, 2782, 2785, 2788, + 2790, 2792, 2794, 2798, 2801, 2804, 2806, 2808, 2810, 2812, + 2819, 2823, 2828, 2832, 2837, 2839, 2843, 2846, 2848, 2851, + 2853, 2854, 2857, 2859, 2861, 2867, 2882, 2888, 2894, 2908, + 2910, 2914, 2928, 2930, 2932, 2936, 2942, 2955, 2957, 2961, + 2974, 2980, 2982, 2983, 2984, 2992, 2997, 3006, 3007, 3011, + 3014, 3020, 3026, 3029, 3031, 3033, 3035, 3039, 3043, 3047, + 3050, 3055, 3058, 3060, 3062, 3064, 3066, 3068, 3070, 3072, + 3076, 3080, 3084, 3088, 3089, 3091, 3093, 3095, 3097, 3099, + 3101, 3103, 3105, 3113, 3115, 3116, 3117, 3120, 3126, 3128, + 3133, 3135, 3138, 3152, 3155, 3158, 3162, 3165, 3172, 3174, + 3177, 3179, 3181, 3184, 3187, 3190, 3193, 3195, 3198, 3202, + 3204, 3210, 3212, 3213, 3215, 3220, 3222, 3224, 3226, 3228, + 3231, 3232, 3234, 3237, 3238, 3241, 3241, 3244, 3244, 3247, + 3247, 3249, 3251, 3253, 3255, 3261, 3267, 3270, 3273, 3279, + 3281, 3283, 3287, 3289, 3290, 3291, 3293, 3296, 3303, 3308, + 3316, 3320, 3322, 3325, 3327, 3330, 3334, 3336, 3339, 3341, + 3344, 3361, 3367, 3375, 3377, 3379, 3383, 3386, 3387, 3395, + 3399, 3403, 3406, 3407, 3413, 3416, 3419, 3421, 3425, 3430, + 3433, 3443, 3448, 3449, 3456, 3459, 3462, 3464, 3467, 3469, + 3479, 3493, 3497, 3500, 3502, 3506, 3510, 3513, 3516, 3518, + 3522, 3524, 3531, 3538, 3541, 3544, 3548, 3552, 3558, 3562, + 3567, 3569, 3572, 3577, 3583, 3594, 3597, 3599, 3603, 3608, + 3610, 3617, 3620, 3622, 3624, 3630, 3635, 3638, 3640, 3642, + 3644, 3646, 3648, 3650, 3652, 3654, 3656, 3658, 3660, 3662, + 3664, 3666, 3668, 3670, 3672, 3674, 3676, 3678, 3680, 3682, + 3684, 3686, 3688, 3690, 3692, 3694, 3696, 3698, 3700, 3703, + 3705 }; #endif @@ -775,10 +777,10 @@ static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER" "pending_inlines","defarg_again","pending_defargs","structsp","@26","@27","@28", "@29","maybecomma","maybecomma_warn","aggr","named_class_head_sans_basetype", "named_class_head_sans_basetype_defn","named_complex_class_head_sans_basetype", -"do_xref_defn","named_class_head","unnamed_class_head","class_head","maybe_base_class_list", +"named_class_head","@30","unnamed_class_head","class_head","maybe_base_class_list", "base_class_list","base_class","base_class.1","base_class_access_list","left_curly", -"self_reference","opt.component_decl_list","component_decl_list","component_decl", -"component_decl_1","components","notype_components","component_declarator0", +"self_reference","opt.component_decl_list","access_specifier","component_decl_list", +"component_decl","component_decl_1","components","notype_components","component_declarator0", "component_declarator","after_type_component_declarator0","notype_component_declarator0", "after_type_component_declarator","notype_component_declarator","enumlist","enumerator", "new_type_id","cv_qualifiers","nonempty_cv_qualifiers","suspend_mom","nonmomentary_expr", @@ -789,13 +791,13 @@ static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER" "typename_sub","typename_sub0","typename_sub1","typename_sub2","explicit_template_type", "complex_type_name","ptr_to_mem","global_scope","new_declarator","direct_new_declarator", "absdcl","direct_abstract_declarator","stmts","errstmt","maybe_label_decls", -"label_decls","label_decl","compstmt_or_error","compstmt","@30","simple_if", -"@31","@32","implicitly_scoped_stmt","@33","stmt","simple_stmt","@34","@35", -"@36","@37","@38","@39","@40","@41","@42","@43","@44","@45","@46","@47","function_try_block", -"@48","@49","try_block","@50","@51","handler_seq","handler","@52","@53","type_specifier_seq", +"label_decls","label_decl","compstmt_or_error","compstmt","@31","simple_if", +"@32","@33","implicitly_scoped_stmt","@34","stmt","simple_stmt","@35","@36", +"@37","@38","@39","@40","@41","@42","@43","@44","@45","@46","@47","@48","function_try_block", +"@49","@50","try_block","@51","@52","handler_seq","handler","@53","@54","type_specifier_seq", "handler_args","label_colon","for.init.statement","maybe_cv_qualifier","xexpr", "asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist", -"complex_parmlist","defarg","@54","defarg1","parms","parms_comma","named_parm", +"complex_parmlist","defarg","@55","defarg1","parms","parms_comma","named_parm", "full_parm","parm","see_typename","bad_parm","exception_specification_opt","ansi_raise_identifier", "ansi_raise_identifiers","conversion_declarator","operator","operator_name", NULL }; @@ -851,44 +853,45 @@ static const short yyr1[] = { 0, 257, 258, 258, 258, 260, 259, 259, 261, 259, 259, 259, 259, 259, 262, 263, 259, 259, 264, 264, 265, 265, 266, 266, 266, 266, 266, 266, 267, 268, 268, - 268, 269, 269, 269, 269, 269, 270, 271, 271, 271, + 268, 269, 269, 269, 269, 269, 270, 271, 270, 270, 272, 273, 273, 274, 274, 274, 275, 275, 276, 276, 277, 277, 277, 277, 278, 278, 278, 278, 279, 280, - 281, 281, 281, 281, 282, 282, 283, 283, 283, 283, - 283, 283, 283, 283, 283, 283, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 285, 285, 285, 286, 286, - 286, 287, 287, 288, 288, 289, 289, 290, 290, 290, - 290, 291, 291, 292, 292, 292, 293, 293, 294, 294, - 295, 295, 295, 296, 296, 297, 297, 298, 299, 300, - 300, 300, 300, 301, 301, 301, 301, 301, 301, 302, - 302, 303, 303, 303, 304, 305, 305, 305, 305, 305, - 305, 306, 306, 306, 306, 306, 306, 307, 307, 307, - 307, 307, 307, 308, 308, 308, 308, 308, 308, 309, - 309, 310, 310, 311, 311, 312, 312, 312, 313, 313, - 313, 314, 314, 314, 315, 315, 315, 315, 316, 316, - 317, 317, 317, 317, 318, 318, 318, 318, 319, 319, - 319, 319, 319, 319, 320, 321, 321, 321, 322, 322, - 323, 324, 324, 324, 324, 324, 324, 324, 325, 325, - 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 281, 281, 281, 281, 282, 283, 283, 284, 284, 284, + 284, 284, 284, 284, 284, 284, 284, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 286, 286, 286, 287, + 287, 287, 288, 288, 289, 289, 290, 290, 291, 291, + 291, 291, 292, 292, 293, 293, 293, 294, 294, 295, + 295, 296, 296, 296, 297, 297, 298, 298, 299, 300, + 301, 301, 301, 301, 302, 302, 302, 302, 302, 302, + 303, 303, 304, 304, 304, 305, 306, 306, 306, 306, + 306, 306, 307, 307, 307, 307, 307, 307, 308, 308, + 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, + 310, 310, 311, 311, 312, 312, 313, 313, 313, 314, + 314, 314, 315, 315, 315, 316, 316, 316, 316, 317, + 317, 318, 318, 318, 318, 319, 319, 319, 319, 320, + 320, 320, 320, 320, 320, 321, 322, 322, 322, 323, + 323, 324, 325, 325, 325, 325, 325, 325, 325, 326, 326, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 328, 328, 328, 328, 329, 330, 330, 331, - 331, 332, 333, 333, 335, 334, 337, 338, 336, 339, - 340, 339, 341, 341, 342, 342, 343, 342, 342, 344, - 345, 342, 346, 347, 342, 348, 349, 350, 351, 342, - 352, 353, 342, 354, 342, 355, 342, 356, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 358, 359, 357, 361, - 362, 360, 363, 363, 365, 366, 364, 367, 367, 368, - 368, 369, 369, 369, 369, 370, 370, 370, 371, 371, - 372, 372, 372, 373, 373, 374, 374, 375, 376, 376, - 377, 377, 377, 378, 378, 378, 378, 378, 378, 378, - 380, 379, 381, 381, 382, 382, 382, 382, 382, 383, - 383, 384, 384, 384, 384, 384, 384, 385, 385, 386, - 386, 387, 388, 388, 389, 389, 389, 390, 391, 391, - 392, 392, 392, 392, 393, 394, 394, 394, 394, 394, - 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, - 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, - 394, 394, 394, 394, 394, 394, 394, 394, 394, 394 + 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 329, 329, 329, 329, 330, 331, 331, + 332, 332, 333, 334, 334, 336, 335, 338, 339, 337, + 340, 341, 340, 342, 342, 343, 343, 344, 343, 343, + 345, 346, 343, 347, 348, 343, 349, 350, 351, 352, + 343, 353, 354, 343, 355, 343, 356, 343, 357, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 359, 360, 358, + 362, 363, 361, 364, 364, 366, 367, 365, 368, 368, + 369, 369, 370, 370, 370, 370, 371, 371, 371, 372, + 372, 373, 373, 373, 374, 374, 375, 375, 376, 377, + 377, 378, 378, 378, 379, 379, 379, 379, 379, 379, + 379, 381, 380, 382, 382, 383, 383, 383, 383, 383, + 384, 384, 385, 385, 385, 385, 385, 385, 386, 386, + 387, 387, 388, 389, 389, 390, 390, 390, 391, 392, + 392, 393, 393, 393, 393, 394, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, + 395 }; static const short yyr2[] = { 0, @@ -941,99 +944,100 @@ static const short yyr2[] = { 0, 3, 0, 2, 2, 0, 7, 4, 0, 6, 3, 2, 2, 2, 0, 0, 9, 1, 0, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 4, 3, 2, 3, 0, 1, 3, 2, + 2, 3, 4, 3, 2, 3, 1, 0, 3, 2, 2, 1, 1, 0, 2, 3, 1, 4, 1, 3, 1, 1, 4, 4, 2, 2, 3, 3, 1, 0, - 1, 2, 4, 3, 1, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 2, 3, 2, 2, 4, 4, - 2, 1, 5, 4, 1, 0, 1, 3, 0, 1, - 3, 1, 1, 1, 1, 4, 4, 4, 4, 4, - 3, 4, 4, 4, 4, 3, 1, 3, 1, 3, - 2, 1, 7, 0, 2, 1, 2, 0, 2, 4, - 4, 2, 4, 3, 3, 2, 2, 3, 1, 1, - 2, 1, 1, 2, 2, 4, 4, 3, 3, 2, - 1, 3, 3, 2, 2, 3, 1, 3, 3, 2, - 2, 3, 1, 4, 3, 4, 3, 1, 2, 2, - 2, 2, 2, 1, 2, 4, 4, 2, 1, 1, - 1, 1, 2, 4, 2, 2, 2, 2, 1, 2, - 2, 2, 2, 3, 1, 2, 3, 4, 2, 2, - 2, 2, 2, 2, 4, 2, 1, 2, 2, 3, - 1, 3, 2, 3, 2, 2, 3, 1, 3, 4, - 3, 2, 2, 1, 3, 2, 2, 1, 2, 3, - 1, 3, 1, 6, 4, 4, 3, 5, 3, 3, - 3, 2, 1, 1, 2, 2, 2, 0, 1, 1, - 2, 3, 1, 2, 0, 3, 0, 0, 5, 1, - 0, 2, 1, 1, 1, 2, 0, 4, 1, 0, - 0, 5, 0, 0, 7, 0, 0, 0, 0, 12, - 0, 0, 7, 0, 5, 0, 7, 0, 4, 2, - 2, 2, 3, 6, 8, 10, 12, 4, 3, 2, - 2, 1, 1, 1, 1, 1, 0, 0, 6, 0, - 0, 5, 1, 2, 0, 0, 5, 1, 1, 3, - 3, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 0, 1, 1, 0, 1, 1, 3, 4, 1, 3, - 0, 1, 1, 1, 2, 2, 2, 1, 2, 2, - 0, 3, 1, 1, 1, 2, 2, 2, 4, 2, - 2, 2, 2, 2, 2, 1, 2, 1, 2, 1, - 1, 0, 0, 1, 0, 4, 2, 1, 1, 3, - 0, 3, 3, 3, 1, 2, 2, 2, 2, 2, + 1, 2, 3, 2, 2, 1, 2, 2, 2, 2, + 2, 2, 2, 1, 2, 2, 3, 2, 2, 4, + 4, 2, 1, 5, 4, 1, 0, 1, 3, 0, + 1, 3, 1, 1, 1, 1, 4, 4, 4, 4, + 4, 3, 4, 4, 4, 4, 3, 1, 3, 1, + 3, 2, 1, 7, 0, 2, 1, 2, 0, 2, + 4, 4, 2, 4, 3, 3, 2, 2, 3, 1, + 1, 2, 1, 1, 2, 2, 4, 4, 3, 3, + 2, 1, 3, 3, 2, 2, 3, 1, 3, 3, + 2, 2, 3, 1, 4, 3, 4, 3, 1, 2, + 2, 2, 2, 2, 1, 2, 4, 4, 2, 1, + 1, 1, 1, 2, 4, 2, 2, 2, 2, 1, + 2, 2, 2, 2, 3, 1, 2, 3, 4, 2, + 2, 2, 2, 2, 2, 4, 2, 1, 2, 2, + 3, 1, 3, 2, 3, 2, 2, 3, 1, 3, + 4, 3, 2, 2, 1, 3, 2, 2, 1, 2, + 3, 1, 3, 1, 6, 4, 4, 3, 5, 3, + 3, 3, 2, 1, 1, 2, 2, 2, 0, 1, + 1, 2, 3, 1, 2, 0, 3, 0, 0, 5, + 1, 0, 2, 1, 1, 1, 2, 0, 4, 1, + 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, + 12, 0, 0, 7, 0, 5, 0, 7, 0, 4, + 2, 2, 2, 3, 6, 8, 10, 12, 4, 3, + 2, 2, 1, 1, 1, 1, 1, 0, 0, 6, + 0, 0, 5, 1, 2, 0, 0, 5, 1, 1, + 3, 3, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 0, 1, 1, 0, 1, 1, 3, 4, 1, + 3, 0, 1, 1, 1, 2, 2, 2, 1, 2, + 2, 0, 3, 1, 1, 1, 2, 2, 2, 4, + 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, + 1, 1, 0, 0, 1, 0, 4, 2, 1, 1, + 3, 0, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 3, 2, 2, 4, 4, 3, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 3, 2, 2, 4, 4, 3, + 2 }; static const short yydefact[] = { 3, - 12, 12, 5, 0, 4, 0, 279, 629, 630, 0, - 384, 396, 576, 0, 11, 0, 0, 0, 10, 482, - 835, 0, 0, 0, 167, 661, 280, 281, 83, 0, - 0, 822, 0, 45, 0, 0, 13, 25, 0, 27, - 8, 0, 16, 15, 89, 110, 86, 0, 631, 171, - 298, 277, 299, 607, 0, 371, 0, 370, 389, 0, - 409, 388, 426, 395, 0, 498, 497, 504, 503, 502, - 477, 383, 592, 397, 593, 108, 297, 618, 590, 0, - 632, 574, 0, 0, 278, 81, 82, 176, 635, 176, - 636, 176, 282, 167, 140, 141, 142, 143, 144, 468, - 471, 0, 657, 0, 472, 0, 0, 0, 0, 141, + 12, 12, 5, 0, 4, 0, 279, 630, 631, 0, + 384, 396, 577, 0, 11, 0, 0, 0, 10, 482, + 836, 0, 0, 0, 167, 662, 280, 281, 83, 0, + 0, 823, 0, 45, 0, 0, 13, 25, 0, 27, + 8, 0, 16, 15, 89, 110, 86, 0, 632, 171, + 298, 277, 299, 608, 0, 371, 0, 370, 389, 0, + 409, 388, 426, 395, 0, 497, 498, 504, 503, 502, + 477, 383, 593, 397, 594, 108, 297, 619, 591, 0, + 633, 575, 0, 0, 278, 81, 82, 176, 636, 176, + 637, 176, 282, 167, 140, 141, 142, 143, 144, 468, + 471, 0, 658, 0, 472, 0, 0, 0, 0, 141, 142, 143, 144, 23, 0, 0, 0, 0, 0, 0, - 0, 473, 639, 0, 645, 0, 0, 0, 37, 0, - 0, 31, 0, 0, 47, 0, 176, 637, 0, 0, - 605, 0, 0, 0, 604, 0, 0, 0, 0, 298, - 0, 578, 0, 297, 574, 28, 0, 26, 3, 46, + 0, 473, 640, 0, 646, 0, 0, 0, 37, 0, + 0, 31, 0, 0, 47, 0, 176, 638, 0, 0, + 606, 0, 0, 0, 605, 0, 0, 0, 0, 298, + 0, 579, 0, 297, 575, 28, 0, 26, 3, 46, 0, 64, 384, 0, 0, 8, 67, 63, 66, 89, 0, 0, 0, 395, 90, 14, 0, 424, 0, 0, - 442, 87, 79, 638, 578, 0, 574, 80, 0, 0, - 0, 106, 0, 405, 361, 589, 362, 601, 0, 574, + 442, 87, 79, 639, 579, 0, 575, 80, 0, 0, + 0, 106, 0, 405, 361, 590, 362, 602, 0, 575, 386, 385, 78, 109, 372, 0, 407, 387, 107, 378, 402, 403, 373, 391, 393, 382, 404, 0, 75, 427, 483, 484, 485, 486, 501, 149, 148, 150, 488, 489, - 495, 487, 0, 0, 490, 491, 504, 822, 500, 519, - 520, 577, 390, 0, 421, 630, 0, 659, 171, 622, - 623, 619, 595, 633, 0, 594, 591, 0, 870, 866, - 865, 863, 845, 850, 851, 0, 857, 856, 842, 843, - 841, 860, 849, 846, 847, 848, 852, 853, 839, 840, - 836, 837, 838, 862, 854, 855, 844, 861, 0, 858, - 768, 389, 769, 831, 282, 279, 576, 302, 350, 0, + 495, 487, 0, 0, 490, 491, 504, 823, 500, 519, + 520, 578, 390, 0, 421, 631, 0, 660, 171, 623, + 624, 620, 596, 634, 0, 595, 592, 0, 871, 867, + 866, 864, 846, 851, 852, 0, 858, 857, 843, 844, + 842, 861, 850, 847, 848, 849, 853, 854, 840, 841, + 837, 838, 839, 863, 855, 856, 845, 862, 0, 859, + 769, 389, 770, 832, 282, 279, 577, 302, 350, 0, 0, 0, 0, 346, 344, 317, 348, 349, 0, 0, 0, 0, 0, 280, 281, 273, 0, 0, 184, 183, 0, 185, 186, 0, 0, 187, 0, 0, 177, 178, 0, 247, 0, 250, 182, 301, 213, 0, 0, 303, - 304, 0, 180, 368, 389, 369, 624, 329, 319, 0, - 0, 0, 0, 176, 0, 470, 0, 465, 0, 658, - 656, 0, 188, 189, 0, 0, 0, 431, 3, 21, - 29, 653, 649, 650, 652, 654, 651, 140, 141, 142, - 0, 143, 144, 641, 642, 646, 643, 640, 0, 289, - 290, 288, 621, 620, 33, 32, 49, 0, 157, 0, - 0, 389, 155, 0, 0, 603, 0, 602, 141, 142, - 275, 276, 293, 0, 611, 292, 0, 610, 0, 300, - 615, 0, 0, 12, 0, 167, 9, 9, 70, 0, + 304, 0, 180, 368, 389, 369, 625, 329, 319, 0, + 0, 0, 0, 176, 0, 470, 0, 465, 0, 659, + 657, 0, 188, 189, 0, 0, 0, 431, 3, 21, + 29, 654, 650, 651, 653, 655, 652, 140, 141, 142, + 0, 143, 144, 642, 643, 647, 644, 641, 0, 289, + 290, 288, 622, 621, 33, 32, 49, 0, 157, 0, + 0, 389, 155, 0, 0, 604, 0, 603, 141, 142, + 275, 276, 293, 0, 612, 292, 0, 611, 0, 300, + 616, 0, 0, 12, 0, 167, 9, 9, 70, 0, 65, 0, 0, 71, 74, 0, 423, 425, 122, 93, - 127, 757, 0, 85, 84, 92, 125, 0, 0, 123, - 88, 617, 0, 0, 582, 0, 825, 0, 587, 0, - 586, 0, 0, 0, 0, 574, 424, 0, 77, 578, - 574, 600, 0, 375, 376, 0, 76, 424, 380, 379, + 127, 758, 0, 85, 84, 92, 125, 0, 0, 123, + 88, 618, 0, 0, 583, 0, 826, 0, 588, 0, + 587, 0, 0, 0, 0, 575, 424, 0, 77, 579, + 575, 601, 0, 375, 376, 0, 76, 424, 380, 379, 381, 374, 394, 411, 410, 492, 496, 494, 0, 499, - 505, 0, 0, 392, 424, 574, 94, 0, 0, 0, - 0, 574, 100, 575, 606, 630, 660, 171, 0, 0, - 859, 864, 391, 574, 574, 0, 574, 869, 176, 0, + 505, 0, 0, 392, 424, 575, 94, 0, 0, 0, + 0, 575, 100, 576, 607, 631, 661, 171, 0, 0, + 860, 865, 391, 575, 575, 0, 575, 870, 176, 0, 0, 0, 220, 0, 0, 222, 235, 236, 0, 0, 0, 0, 0, 274, 219, 216, 215, 217, 0, 0, 0, 0, 0, 301, 0, 0, 0, 214, 174, 175, @@ -1041,1098 +1045,1067 @@ static const short yydefact[] = { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 0, 313, 315, 316, 354, 353, 0, 0, 238, 238, 0, - 224, 572, 0, 232, 351, 343, 0, 0, 822, 332, - 335, 336, 0, 0, 363, 678, 674, 683, 0, 578, - 574, 574, 574, 365, 681, 0, 628, 367, 0, 0, - 366, 331, 0, 326, 345, 327, 347, 625, 0, 328, - 173, 173, 0, 165, 0, 389, 163, 569, 480, 567, + 224, 573, 0, 232, 351, 343, 0, 0, 823, 332, + 335, 336, 0, 0, 363, 679, 675, 684, 0, 579, + 575, 575, 575, 365, 682, 0, 629, 367, 0, 0, + 366, 331, 0, 326, 345, 327, 347, 626, 0, 328, + 173, 173, 0, 165, 0, 389, 163, 570, 480, 568, 467, 0, 0, 398, 0, 0, 399, 400, 401, 437, - 438, 439, 436, 0, 429, 432, 0, 3, 0, 644, - 176, 647, 0, 41, 42, 0, 53, 0, 0, 57, - 61, 50, 821, 816, 0, 368, 389, 53, 369, 820, - 59, 168, 153, 151, 168, 173, 296, 609, 608, 300, - 612, 0, 18, 20, 89, 9, 9, 73, 72, 0, - 128, 352, 0, 705, 91, 703, 448, 0, 444, 443, - 212, 0, 211, 579, 616, 0, 798, 0, 793, 389, - 0, 792, 794, 823, 805, 0, 0, 614, 585, 584, - 0, 0, 599, 0, 419, 418, 406, 598, 0, 825, - 588, 377, 408, 420, 424, 493, 629, 630, 822, 0, - 822, 631, 506, 507, 509, 822, 512, 511, 0, 542, - 630, 0, 533, 0, 0, 545, 0, 121, 116, 0, - 171, 546, 549, 0, 525, 0, 119, 0, 424, 422, - 825, 791, 176, 176, 634, 176, 825, 791, 574, 97, - 574, 103, 868, 867, 831, 831, 831, 0, 0, 0, - 0, 628, 0, 0, 0, 0, 389, 0, 0, 0, - 307, 0, 305, 306, 0, 245, 179, 279, 629, 630, - 280, 281, 0, 0, 449, 478, 0, 272, 271, 783, - 782, 0, 269, 268, 266, 267, 265, 264, 263, 260, - 261, 262, 258, 259, 253, 254, 255, 256, 257, 251, - 252, 0, 0, 0, 0, 0, 238, 226, 242, 0, - 0, 225, 574, 574, 0, 574, 571, 668, 0, 0, - 0, 0, 0, 334, 0, 338, 0, 340, 0, 677, - 676, 673, 672, 821, 0, 0, 692, 0, 0, 825, - 364, 825, 679, 574, 791, 578, 678, 674, 0, 0, - 574, 0, 0, 0, 0, 0, 170, 172, 283, 168, - 161, 159, 168, 0, 481, 0, 480, 210, 209, 208, - 207, 431, 0, 0, 24, 0, 0, 648, 0, 38, - 44, 43, 55, 52, 53, 0, 48, 0, 0, 678, - 674, 0, 812, 574, 815, 817, 0, 813, 814, 54, - 488, 0, 158, 168, 168, 156, 169, 17, 19, 69, - 89, 412, 145, 133, 146, 147, 0, 126, 129, 0, - 0, 0, 0, 704, 698, 445, 0, 124, 583, 580, - 797, 811, 800, 0, 581, 796, 810, 799, 795, 824, - 807, 818, 808, 801, 806, 827, 0, 416, 597, 596, - 415, 516, 0, 515, 822, 822, 822, 0, 574, 791, - 541, 534, 546, 535, 424, 424, 531, 532, 529, 530, - 574, 791, 279, 629, 0, 411, 117, 537, 547, 552, - 553, 411, 411, 0, 0, 411, 115, 538, 550, 411, - 526, 527, 528, 424, 0, 474, 96, 0, 0, 0, - 0, 102, 0, 825, 791, 825, 791, 833, 832, 834, - 284, 318, 221, 223, 324, 325, 0, 0, 0, 0, - 306, 309, 0, 0, 0, 0, 246, 0, 310, 312, - 314, 0, 0, 0, 0, 227, 244, 0, 0, 665, - 663, 0, 666, 578, 233, 0, 0, 176, 341, 0, - 0, 0, 675, 671, 682, 574, 691, 689, 690, 680, - 825, 0, 687, 0, 626, 627, 0, 330, 166, 168, - 168, 164, 570, 568, 469, 0, 430, 428, 279, 0, - 22, 30, 655, 56, 51, 58, 62, 677, 673, 678, - 674, 0, 590, 0, 574, 679, 60, 154, 152, 68, - 0, 131, 0, 135, 0, 137, 0, 139, 0, 758, - 0, 200, 706, 0, 699, 700, 0, 446, 678, 674, - 0, 301, 0, 624, 819, 0, 0, 828, 829, 0, - 0, 413, 0, 0, 0, 518, 517, 510, 825, 0, - 536, 442, 442, 825, 0, 0, 0, 424, 424, 0, - 424, 424, 0, 424, 0, 442, 0, 462, 574, 286, - 285, 287, 574, 99, 0, 105, 0, 0, 0, 0, - 0, 0, 452, 0, 450, 249, 270, 240, 239, 237, - 228, 0, 241, 243, 664, 662, 669, 667, 0, 234, - 0, 0, 333, 337, 339, 825, 685, 574, 686, 162, - 160, 466, 0, 433, 435, 677, 673, 595, 679, 132, - 130, 0, 0, 0, 0, 440, 0, 0, 279, 629, - 630, 707, 720, 723, 726, 731, 0, 0, 0, 0, - 0, 0, 0, 0, 280, 752, 760, 0, 779, 756, - 755, 754, 0, 715, 0, 0, 389, 0, 694, 713, - 719, 693, 714, 753, 0, 701, 447, 0, 627, 809, - 803, 804, 802, 0, 826, 417, 0, 513, 514, 508, - 112, 574, 540, 544, 114, 574, 424, 424, 561, 442, - 279, 629, 0, 548, 554, 555, 411, 411, 442, 442, - 0, 442, 551, 539, 0, 825, 825, 574, 574, 0, - 0, 0, 0, 451, 0, 0, 229, 230, 670, 342, - 285, 688, 825, 0, 134, 136, 138, 765, 759, 763, - 0, 702, 697, 203, 772, 774, 775, 0, 0, 711, - 0, 0, 0, 738, 740, 741, 742, 0, 0, 0, - 0, 0, 0, 0, 773, 0, 360, 780, 0, 716, - 358, 411, 0, 359, 0, 411, 0, 0, 0, 201, - 696, 695, 717, 751, 750, 306, 830, 414, 825, 825, - 560, 557, 559, 0, 0, 424, 424, 424, 556, 558, - 543, 464, 0, 463, 458, 95, 101, 825, 825, 320, - 321, 322, 323, 453, 0, 231, 684, 434, 0, 764, - 441, 192, 0, 708, 721, 710, 0, 0, 0, 0, - 0, 734, 0, 743, 0, 749, 39, 144, 34, 144, - 0, 35, 761, 0, 356, 357, 0, 0, 0, 355, - 202, 711, 111, 113, 424, 424, 566, 442, 442, 0, - 0, 476, 98, 104, 573, 0, 766, 199, 0, 389, - 0, 711, 0, 724, 712, 698, 777, 727, 0, 0, - 0, 0, 739, 748, 40, 36, 0, 0, 718, 565, - 563, 562, 564, 461, 460, 454, 86, 89, 0, 0, - 0, 193, 411, 709, 204, 722, 206, 0, 778, 0, - 776, 732, 736, 735, 762, 784, 0, 0, 459, 770, - 771, 767, 424, 698, 190, 0, 0, 196, 0, 195, - 711, 0, 0, 0, 785, 786, 744, 457, 0, 456, - 0, 205, 0, 725, 728, 733, 737, 0, 784, 0, - 0, 455, 197, 191, 0, 0, 0, 745, 787, 0, - 0, 788, 0, 0, 198, 729, 789, 0, 746, 0, - 0, 0, 730, 790, 747, 0, 0, 0 + 438, 439, 436, 0, 429, 432, 0, 3, 0, 645, + 176, 648, 0, 41, 42, 0, 53, 0, 0, 57, + 61, 50, 822, 817, 0, 368, 389, 53, 369, 821, + 59, 168, 153, 151, 168, 173, 296, 610, 609, 300, + 613, 0, 18, 20, 89, 9, 9, 73, 72, 0, + 128, 352, 0, 706, 91, 704, 448, 0, 444, 443, + 212, 0, 211, 580, 617, 0, 799, 0, 794, 389, + 0, 793, 795, 824, 806, 0, 0, 615, 586, 585, + 0, 0, 600, 0, 419, 418, 406, 599, 0, 826, + 589, 377, 408, 420, 424, 493, 630, 631, 823, 0, + 823, 632, 506, 507, 509, 823, 512, 511, 0, 543, + 631, 0, 534, 0, 0, 546, 0, 121, 116, 0, + 171, 547, 550, 0, 526, 0, 119, 0, 424, 0, + 422, 826, 792, 176, 176, 635, 176, 826, 792, 575, + 97, 575, 103, 869, 868, 832, 832, 832, 0, 0, + 0, 0, 629, 0, 0, 0, 0, 389, 0, 0, + 0, 307, 0, 305, 306, 0, 245, 179, 279, 630, + 631, 280, 281, 0, 0, 449, 478, 0, 272, 271, + 784, 783, 0, 269, 268, 266, 267, 265, 264, 263, + 260, 261, 262, 258, 259, 253, 254, 255, 256, 257, + 251, 252, 0, 0, 0, 0, 0, 238, 226, 242, + 0, 0, 225, 575, 575, 0, 575, 572, 669, 0, + 0, 0, 0, 0, 334, 0, 338, 0, 340, 0, + 678, 677, 674, 673, 822, 0, 0, 693, 0, 0, + 826, 364, 826, 680, 575, 792, 579, 679, 675, 0, + 0, 575, 0, 0, 0, 0, 0, 170, 172, 283, + 168, 161, 159, 168, 0, 481, 0, 480, 210, 209, + 208, 207, 431, 0, 0, 24, 0, 0, 649, 0, + 38, 44, 43, 55, 52, 53, 0, 48, 0, 0, + 679, 675, 0, 813, 575, 816, 818, 0, 814, 815, + 54, 488, 0, 158, 168, 168, 156, 169, 17, 19, + 69, 89, 412, 145, 133, 146, 147, 0, 126, 129, + 0, 0, 0, 0, 705, 699, 445, 0, 124, 584, + 581, 798, 812, 801, 0, 582, 797, 811, 800, 796, + 825, 808, 819, 809, 802, 807, 828, 0, 416, 598, + 597, 415, 516, 0, 515, 823, 823, 823, 0, 575, + 792, 542, 535, 547, 536, 424, 424, 532, 533, 530, + 531, 575, 792, 279, 630, 0, 411, 117, 538, 548, + 553, 554, 411, 411, 0, 0, 411, 115, 539, 551, + 411, 527, 528, 529, 424, 525, 474, 0, 96, 0, + 0, 0, 0, 102, 0, 826, 792, 826, 792, 834, + 833, 835, 284, 318, 221, 223, 324, 325, 0, 0, + 0, 0, 306, 309, 0, 0, 0, 0, 246, 0, + 310, 312, 314, 0, 0, 0, 0, 227, 244, 0, + 0, 666, 664, 0, 667, 579, 233, 0, 0, 176, + 341, 0, 0, 0, 676, 672, 683, 575, 692, 690, + 691, 681, 826, 0, 688, 0, 627, 628, 0, 330, + 166, 168, 168, 164, 571, 569, 469, 0, 430, 428, + 279, 0, 22, 30, 656, 56, 51, 58, 62, 678, + 674, 679, 675, 0, 591, 0, 575, 680, 60, 154, + 152, 68, 0, 131, 0, 135, 0, 137, 0, 139, + 0, 759, 0, 200, 707, 0, 700, 701, 0, 446, + 679, 675, 0, 301, 0, 625, 820, 0, 0, 829, + 830, 0, 0, 413, 0, 0, 0, 518, 517, 510, + 826, 0, 537, 442, 442, 826, 0, 0, 0, 424, + 424, 0, 424, 424, 0, 424, 0, 442, 462, 575, + 286, 285, 287, 575, 99, 0, 105, 0, 0, 0, + 0, 0, 0, 452, 0, 450, 249, 270, 240, 239, + 237, 228, 0, 241, 243, 665, 663, 670, 668, 0, + 234, 0, 0, 333, 337, 339, 826, 686, 575, 687, + 162, 160, 466, 0, 433, 435, 678, 674, 596, 680, + 132, 130, 0, 0, 0, 0, 440, 0, 0, 279, + 630, 631, 708, 721, 724, 727, 732, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 753, 761, 0, 780, + 757, 756, 755, 0, 716, 0, 0, 389, 0, 695, + 714, 720, 694, 715, 754, 0, 702, 447, 0, 628, + 810, 804, 805, 803, 0, 827, 417, 0, 513, 514, + 508, 112, 575, 541, 545, 114, 575, 424, 424, 562, + 442, 279, 630, 0, 549, 555, 556, 411, 411, 442, + 442, 0, 442, 552, 540, 0, 826, 826, 575, 575, + 0, 0, 0, 0, 451, 0, 0, 229, 230, 671, + 342, 285, 689, 826, 0, 134, 136, 138, 766, 760, + 764, 0, 703, 698, 203, 773, 775, 776, 0, 0, + 712, 0, 0, 0, 739, 741, 742, 743, 0, 0, + 0, 0, 0, 0, 0, 774, 0, 360, 781, 0, + 717, 358, 411, 0, 359, 0, 411, 0, 0, 0, + 201, 697, 696, 718, 752, 751, 306, 831, 414, 826, + 826, 561, 558, 560, 0, 0, 424, 424, 424, 557, + 559, 544, 464, 0, 463, 458, 95, 101, 826, 826, + 320, 321, 322, 323, 453, 0, 231, 685, 434, 0, + 765, 441, 192, 0, 709, 722, 711, 0, 0, 0, + 0, 0, 735, 0, 744, 0, 750, 39, 144, 34, + 144, 0, 35, 762, 0, 356, 357, 0, 0, 0, + 355, 202, 712, 111, 113, 424, 424, 567, 442, 442, + 0, 0, 476, 98, 104, 574, 0, 767, 199, 0, + 389, 0, 712, 0, 725, 713, 699, 778, 728, 0, + 0, 0, 0, 740, 749, 40, 36, 0, 0, 719, + 566, 564, 563, 565, 461, 460, 454, 86, 89, 0, + 0, 0, 193, 411, 710, 204, 723, 206, 0, 779, + 0, 777, 733, 737, 736, 763, 785, 0, 0, 459, + 771, 772, 768, 424, 699, 190, 0, 0, 196, 0, + 195, 712, 0, 0, 0, 786, 787, 745, 457, 0, + 456, 0, 205, 0, 726, 729, 734, 738, 0, 785, + 0, 0, 455, 197, 191, 0, 0, 0, 746, 788, + 0, 0, 789, 0, 0, 198, 730, 790, 0, 747, + 0, 0, 0, 731, 791, 748, 0, 0, 0 }; -static const short yydefgoto[] = { 1606, +static const short yydefgoto[] = { 1607, 424, 2, 425, 161, 694, 327, 177, 3, 4, 37, - 658, 369, 1290, 659, 766, 1291, 1292, 389, 1393, 663, - 41, 767, 398, 669, 933, 670, 671, 672, 43, 168, - 169, 44, 443, 180, 176, 45, 46, 782, 1055, 788, - 1057, 47, 769, 770, 181, 182, 444, 701, 968, 969, - 638, 970, 230, 48, 955, 954, 685, 682, 1121, 1120, - 913, 910, 136, 953, 49, 50, 907, 551, 328, 329, - 330, 331, 1293, 1557, 1454, 1559, 1499, 1590, 1163, 1536, - 1554, 363, 900, 332, 1231, 855, 590, 862, 333, 334, + 658, 369, 1291, 659, 766, 1292, 1293, 389, 1394, 663, + 41, 767, 398, 669, 934, 670, 671, 672, 43, 168, + 169, 44, 443, 180, 176, 45, 46, 783, 1057, 789, + 1059, 47, 769, 770, 181, 182, 444, 701, 969, 970, + 638, 971, 230, 48, 956, 955, 685, 682, 1123, 1122, + 914, 911, 136, 954, 49, 50, 908, 551, 328, 329, + 330, 331, 1294, 1558, 1455, 1560, 1500, 1591, 1165, 1537, + 1555, 363, 901, 332, 1232, 856, 590, 863, 333, 334, 364, 336, 354, 52, 251, 664, 413, 53, 54, 337, - 546, 338, 339, 340, 341, 445, 342, 1294, 484, 612, - 343, 1295, 56, 213, 675, 344, 214, 524, 215, 193, - 206, 60, 467, 485, 1317, 735, 1181, 194, 207, 61, - 495, 736, 62, 63, 654, 655, 656, 1267, 450, 825, - 826, 1527, 1528, 1492, 1434, 1345, 64, 642, 357, 1208, - 1435, 1076, 916, 65, 66, 67, 68, 237, 69, 70, - 71, 239, 753, 754, 755, 756, 241, 492, 493, 774, - 775, 776, 1028, 1038, 1029, 1334, 1030, 1031, 1335, 1336, - 639, 640, 591, 890, 346, 453, 454, 187, 195, 73, - 74, 75, 196, 197, 153, 77, 132, 347, 348, 349, - 79, 350, 81, 758, 123, 124, 125, 500, 105, 82, - 351, 867, 868, 885, 615, 1298, 1299, 1164, 1165, 1166, - 705, 1300, 975, 1301, 1378, 1502, 1457, 1458, 1302, 1303, - 1482, 1379, 1503, 1380, 1538, 1381, 1540, 1585, 1600, 1382, - 1561, 1512, 1562, 1463, 446, 702, 1265, 1304, 1396, 1517, - 1369, 1370, 1449, 1531, 1501, 1497, 1305, 1508, 1399, 832, - 1564, 1565, 1566, 1598, 721, 722, 995, 1177, 1313, 723, - 724, 725, 991, 726, 146, 993, 728, 1179, 1180, 518, - 84, 85 + 546, 338, 339, 340, 341, 445, 342, 1295, 484, 612, + 343, 1296, 56, 213, 675, 344, 214, 524, 215, 193, + 206, 60, 467, 485, 1318, 735, 1183, 194, 207, 61, + 495, 736, 62, 63, 654, 655, 656, 1268, 450, 826, + 827, 1528, 1529, 1493, 1435, 1346, 64, 642, 357, 1209, + 1436, 1078, 917, 65, 66, 67, 68, 69, 237, 70, + 71, 239, 753, 754, 755, 756, 241, 492, 493, 780, + 774, 775, 776, 1029, 1039, 1030, 1335, 1031, 1032, 1336, + 1337, 639, 640, 591, 891, 346, 453, 454, 187, 195, + 73, 74, 75, 196, 197, 153, 77, 132, 347, 348, + 349, 79, 350, 81, 758, 123, 124, 125, 500, 105, + 82, 351, 868, 869, 886, 615, 1299, 1300, 1166, 1167, + 1168, 705, 1301, 976, 1302, 1379, 1503, 1458, 1459, 1303, + 1304, 1483, 1380, 1504, 1381, 1539, 1382, 1541, 1586, 1601, + 1383, 1562, 1513, 1563, 1464, 446, 702, 1266, 1305, 1397, + 1518, 1370, 1371, 1450, 1532, 1502, 1498, 1306, 1509, 1400, + 833, 1565, 1566, 1567, 1599, 721, 722, 996, 1179, 1314, + 723, 724, 725, 992, 726, 146, 994, 728, 1181, 1182, + 518, 84, 85 }; -static const short yypact[] = { 116, - 144,-32768,-32768, 3219,-32768, 156, 153, 205, 332, 176, - 170,-32768,-32768, 1325,-32768, 160, 185, 227,-32768,-32768, --32768, 532, 752, 1021, 259,-32768, 308, 426,-32768, 684, - 684,-32768, 5043,-32768, 3219, 323,-32768,-32768, 404,-32768, - 62, 2851,-32768,-32768, 350, 1007, 453, 415, 437,-32768, --32768,-32768,-32768, 530, 1892,-32768, 4895,-32768, 885, 379, --32768, 471,-32768,-32768, 1233, 93,-32768, 479,-32768,-32768, - 491, 2947,-32768,-32768,-32768, 1248,-32768,-32768,-32768, 1551, --32768,-32768, 612, 8144, 524,-32768,-32768, 9669,-32768, 9669, --32768, 9669,-32768,-32768,-32768, 205, 332, 308, 517, 476, - 543, 437,-32768, 451,-32768, 612, 9755, 9755, 516,-32768, --32768,-32768,-32768,-32768, 425, 579, 519, 546, 591, 598, - 605,-32768,-32768, 1440,-32768, 1568, 205, 332,-32768, 308, - 517,-32768, 562, 343, 599, 5841, 9669,-32768, 9669, 3212, --32768, 1951, 692, 3212,-32768, 1726, 3405, 3405, 5043, 570, - 586, 609, 602, 610,-32768,-32768, 732,-32768, 590,-32768, - 4344,-32768,-32768, 259, 3053, 646,-32768,-32768,-32768, 350, - 5462, 10843, 576, 698,-32768,-32768, 659, 471, 757, 209, - 251, 734,-32768,-32768, 685, 267,-32768,-32768, 3412, 3412, - 5669, 1248, 768,-32768,-32768, 615,-32768,-32768, 2065,-32768, --32768,-32768,-32768,-32768, 885, 774,-32768, 471, 1248,-32768, --32768,-32768, 2313, 885,-32768, 471,-32768, 5462,-32768,-32768, +static const short yypact[] = { 129, + 148,-32768,-32768, 10535,-32768, 92, 171, 272, 418, 199, + 124,-32768,-32768, 917,-32768, 270, 355, 360,-32768,-32768, +-32768, 1076, 1285, 1017, 216,-32768, 409, 499,-32768, 1618, + 1618,-32768, 4295,-32768, 10535, 415,-32768,-32768, 457,-32768, + 56, 4736,-32768,-32768, 412, 903, 509, 492, 505,-32768, +-32768,-32768,-32768, 404, 1979,-32768, 4015,-32768, 2281, 329, +-32768, 560,-32768,-32768, 798, 328,-32768, 548,-32768,-32768, + 567, 3285,-32768,-32768,-32768, 580,-32768,-32768,-32768, 1021, +-32768,-32768, 274, 7834, 555,-32768,-32768, 9429,-32768, 9429, +-32768, 9429,-32768,-32768,-32768, 272, 418, 409, 578, 563, + 600, 505,-32768, 760,-32768, 274, 9515, 9515, 607,-32768, +-32768,-32768,-32768,-32768, 601, 648, 549, 665, 680, 663, + 670,-32768,-32768, 1357,-32768, 1247, 272, 418,-32768, 409, + 578,-32768, 690, 1972, 657, 5887, 9429,-32768, 9429, 2223, +-32768, 2434, 402, 2223,-32768, 1599, 2316, 2316, 4295, 641, + 654, 649, 658, 679,-32768,-32768, 781,-32768, 685,-32768, + 3410,-32768,-32768, 216, 3278, 722,-32768,-32768,-32768, 412, + 4520, 10740, 737, 749,-32768,-32768, 735, 560, 843, 98, + 689, 791,-32768,-32768, 736, 66,-32768,-32768, 2840, 2840, + 4591, 580, 855,-32768,-32768, 540,-32768,-32768, 2691,-32768, +-32768,-32768,-32768,-32768, 2281, 878,-32768, 560, 580,-32768, +-32768,-32768, 2369, 2281,-32768, 560,-32768, 4520,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 437, 471, 1887, 1830,-32768,-32768, 479,-32768,-32768,-32768, --32768,-32768, 1160, 612,-32768, 537, 1463,-32768, 342,-32768, --32768,-32768,-32768,-32768, 4337,-32768,-32768, 229,-32768, 707, - 717,-32768,-32768,-32768,-32768, 751,-32768,-32768,-32768,-32768, + 505, 560, 1485, 1636,-32768,-32768, 548,-32768,-32768,-32768, +-32768,-32768, 1027, 274,-32768, 217, 1224,-32768, 94,-32768, +-32768,-32768,-32768,-32768, 2883,-32768,-32768, 229,-32768, 765, + 769,-32768,-32768,-32768,-32768, 811,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 704,-32768, --32768, 1160, 2947, 1101,-32768,-32768, 725,-32768,-32768, 10363, - 10449, 10535, 10535,-32768,-32768,-32768,-32768,-32768, 727, 769, - 792, 795, 801, 874, 517, 9841, 1937, 10535,-32768,-32768, - 10535,-32768,-32768, 10535, 7622,-32768, 10535, 442, 772,-32768, - 10535,-32768, 9927,-32768, 10838, 376, 1310, 2889, 10013,-32768, - 893, 1805,-32768, 2496, 3971, 3697,-32768, 440,-32768, 1965, - 1825, 442, 442, 9669, 5841,-32768, 1937, 804, 1937,-32768, --32768, 810, 861, 10919, 815, 828, 839, 1668, 590,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 579, 519, 546, - 1937, 591, 598, 876, 605,-32768, 904,-32768, 457, 205, - 332,-32768,-32768,-32768,-32768,-32768,-32768, 4481,-32768, 5462, - 5736, 2489,-32768, 442, 63,-32768, 363,-32768, 892, 899, --32768,-32768,-32768, 3212,-32768,-32768, 3212,-32768, 867,-32768, --32768, 4337, 88, 850, 883,-32768,-32768,-32768,-32768, 5841, --32768, 812, 823,-32768,-32768, 732,-32768, 471,-32768,-32768, --32768,-32768, 111,-32768,-32768,-32768,-32768, 7713, 9841,-32768, --32768,-32768, 9841, 896,-32768, 6976, 226, 5116,-32768, 5116, --32768, 5186, 5186, 5669, 888,-32768, 471, 5462,-32768, 900, --32768,-32768, 5405, 2313, 885, 5462,-32768, 471,-32768,-32768, - 471, 2313,-32768, 986,-32768,-32768, 437,-32768, 1887,-32768, - 1226, 3343, 81, 1160, 471,-32768,-32768, 941, 943, 965, - 953,-32768,-32768,-32768,-32768, 593,-32768, 450, 918, 919, --32768,-32768, 1160,-32768,-32768, 964,-32768,-32768, 9669, 9841, - 725, 7622,-32768, 509, 7622,-32768,-32768,-32768, 9755, 5650, - 5650, 5650, 5650, 10964,-32768,-32768,-32768,-32768, 924, 10621, - 10621, 7622, 927, 107, 928, 979, 934,-32768,-32768,-32768, --32768, 9669,-32768, 7252, 7622,-32768, 9841, 9841, 7804, 9841, - 9841, 9841, 9841, 9841, 9841, 9841, 9841, 9841, 9841, 9841, - 9841, 9841, 9841, 9841, 9841, 9841, 9841, 9841,-32768, 9841, --32768,-32768,-32768,-32768,-32768, 9841, 9841,-32768,-32768, 1313, - 315, 906, 8504,-32768,-32768,-32768, 989, 1463, 1037, 511, - 528, 638, 2333, 692,-32768, 1576, 1576,-32768, 2501, 937, - 956, 1003,-32768,-32768, 634, 9124, 1116,-32768, 999, 612, --32768,-32768, 9841,-32768,-32768,-32768,-32768,-32768, 303, 524, --32768,-32768, 442,-32768, 5462, 2982,-32768, 990, 1000,-32768, --32768, 1937, 876,-32768, 8236, 8327,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 193,-32768, 969, 949, 590, 457, 1010, - 9669,-32768, 1008,-32768,-32768, 343, 1095, 1044, 299, 1018, - 1023,-32768,-32768, 2225, 10843, 2225, 4136, 1233, 3794,-32768, - 1026,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 985, --32768, 1035,-32768,-32768, 350,-32768,-32768,-32768,-32768, 95, - 783, 1039, 979,-32768,-32768,-32768,-32768, 7158, 10964,-32768, - 861, 1012, 10919,-32768,-32768, 1014,-32768, 1019, 406, 4599, - 1022,-32768, 103, 5361, 1047, 1052, 654,-32768,-32768,-32768, - 5116, 5116,-32768, 5405,-32768, 1054,-32768,-32768, 1015, 226, --32768, 2313,-32768,-32768, 471,-32768, 519, 546,-32768, 1036, --32768, 605, 1074,-32768,-32768, 233,-32768,-32768, 1962,-32768, - 791, 1141,-32768, 9841, 6374,-32768, 6374, 83, 83, 301, - 658, 4251, 10775, 5963,-32768, 194, 83, 1073, 471,-32768, - 226, 3153, 9669, 9669,-32768, 9669, 226, 3153,-32768,-32768, --32768,-32768,-32768,-32768, 1067, 1067, 1067, 442, 1046, 1048, - 10105, 1003, 1057, 1058, 1068, 1104, 4764, 1107, 1108, 1109, --32768, 1078,-32768,-32768, 1082,-32768,-32768, 1132, 432, 762, - 182, 80, 9841, 1137,-32768, 1142, 1092, 10964, 10964,-32768, --32768, 1140, 4489, 6071, 6114, 3259, 5876, 4207, 3574, 2596, - 2596, 2596, 2581, 2581, 1305, 1305, 478, 478, 478,-32768, --32768, 1096, 1099, 1102, 9841, 9755,-32768, 315,-32768, 7713, - 9841,-32768,-32768,-32768, 9841,-32768,-32768, 1125, 10535, 1110, - 1138, 1146, 1185,-32768, 9841,-32768, 9841,-32768, 9841, 2601, --32768, 2601,-32768, 97, 1126, 1131,-32768, 1134, 5650, 226, --32768, 226, 2752,-32768, 3153, 1144, 9308, 9308, 6471, 1143, - 9927, 1150, 2158, 1825, 1004, 1152,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 9841, 1937, 1139, 1000,-32768, 10964,-32768, - 10964, 1668, 1153, 10191,-32768, 1157, 1186,-32768, 442,-32768, --32768,-32768,-32768,-32768, 1416, 4481,-32768, 5650, 9669, 1795, - 1795, 3508,-32768,-32768,-32768,-32768, 2065,-32768,-32768,-32768, - 417, 9841,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 350,-32768, 579,-32768, 591, 598, 9841, 1208,-32768, 666, - 674, 683, 979,-32768, 72,-32768, 183,-32768,-32768,-32768, --32768,-32768,-32768, 9216,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 1052, 1204,-32768,-32768,-32768, 5650,-32768,-32768,-32768, - 1206,-32768, 9755,-32768,-32768,-32768,-32768, 851,-32768, 3153, - 10964,-32768, 1679,-32768, 471, 471,-32768,-32768,-32768,-32768, --32768, 3153, 502, 787, 9841, 986,-32768, 1212,-32768,-32768, --32768, 235, 497, 1551, 692, 569, 83, 1214,-32768, 621, --32768,-32768,-32768, 471, 8572,-32768,-32768, 1168, 442, 442, - 442,-32768, 1169, 226, 3153, 226, 3153,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 1192, 1193, 1195, 1202, - 985,-32768, 6766, 7713, 7346, 1188,-32768, 9841,-32768,-32768, --32768, 1190, 1170, 1196, 5650,-32768,-32768, 1198, 173, 334, - 334, 1200, 334,-32768,-32768, 10535, 1301, 9669,-32768, 1216, - 1217, 1231,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 226, 1234,-32768, 1223,-32768,-32768, 2735,-32768,-32768,-32768, --32768,-32768, 10964,-32768,-32768, 1235,-32768,-32768, 199, 1240, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 2393, 2393, 2680, - 2680, 3508,-32768, 2065,-32768, 3520, 10838,-32768,-32768,-32768, - 1242,-32768, 783,-32768, 9841,-32768, 9841,-32768, 9841,-32768, - 1937,-32768,-32768, 6711, 1318,-32768, 7437,-32768, 9400, 9400, - 6861, 135, 1245, 261,-32768, 7713, 7528,-32768,-32768, 210, - 7713,-32768, 1246, 1247, 1226,-32768,-32768,-32768, 226, 1251, --32768, 1297, 1297, 226, 1257, 9841, 9841, 4003, 471, 4760, - 471, 471, 1105, 471, 5244, 1297, 8642,-32768,-32768,-32768, - 1314,-32768,-32768,-32768, 1267,-32768, 1269, 9841, 9841, 9841, - 9841, 7713,-32768, 1316,-32768,-32768, 10964,-32768,-32768,-32768, - 380, 1196,-32768,-32768,-32768,-32768,-32768,-32768, 1279,-32768, - 1345, 442,-32768,-32768,-32768, 226,-32768,-32768,-32768,-32768, --32768,-32768, 9841,-32768,-32768, 2393, 2393,-32768, 3520,-32768, --32768, 1285, 1286, 1290, 1309,-32768, 829, 214, 1347, 805, - 816,-32768,-32768,-32768,-32768,-32768, 9841, 1348, 1352, 1353, - 9492, 175, 1937, 616, 655,-32768,-32768, 9583, 1398,-32768, --32768,-32768, 1354,-32768, 5089, 5564, 4654, 6601,-32768,-32768, - 1400,-32768,-32768,-32768, 8735,-32768,-32768, 1321, 1368,-32768, --32768,-32768,-32768, 5650,-32768,-32768, 7713,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 4003, 4003,-32768, 1297, - 691, 863, 9841,-32768,-32768,-32768, 986, 986, 1297, 1297, - 593, 1297,-32768,-32768, 6263, 226, 226,-32768,-32768, 1323, - 1329, 1334, 1340,-32768, 7713, 9841,-32768, 380,-32768,-32768, --32768,-32768, 226, 1342,-32768,-32768,-32768,-32768, 1309,-32768, - 1937,-32768,-32768,-32768,-32768,-32768,-32768, 688, 688, 979, - 1324, 1333, 6168,-32768,-32768,-32768,-32768, 1362, 9841, 1373, - 1393, 1406, 1973, 2131,-32768, 979,-32768,-32768, 1372,-32768, --32768, 986, 841,-32768, 881, 986, 10277, 894, 252,-32768, --32768,-32768,-32768,-32768,-32768, 340,-32768,-32768, 226, 226, --32768,-32768,-32768, 9841, 9841, 4003, 471, 471,-32768,-32768, --32768,-32768, 8418,-32768,-32768,-32768,-32768, 226, 226,-32768, --32768,-32768,-32768,-32768, 1359,-32768,-32768,-32768, 1381,-32768, --32768,-32768, 9755,-32768,-32768,-32768, 1461, 9031, 7067, 9755, - 9841,-32768, 8843,-32768, 1420,-32768,-32768, 1428,-32768, 1406, - 1973,-32768,-32768, 732,-32768,-32768, 10707, 10707, 7895,-32768, --32768, 979,-32768,-32768, 4003, 4003,-32768, 1297, 1297, 1376, - 10874, 1387,-32768,-32768,-32768, 4964,-32768,-32768, 1377, 487, - 5462, 979, 8937,-32768,-32768, 72,-32768,-32768, 1430, 1385, - 10942, 8843,-32768,-32768,-32768,-32768, 1309, 91,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 453, 350, 1386, 1394, - 979,-32768, 986,-32768,-32768,-32768,-32768, 690,-32768, 7986, --32768,-32768,-32768,-32768, 1309, 1490, 1449, 218,-32768,-32768, --32768,-32768, 471, 72,-32768, 9841, 1451,-32768, 1453,-32768, - 979, 8843, 1422, 68, 1459,-32768,-32768,-32768, 111,-32768, - 1458,-32768, 1415,-32768,-32768,-32768,-32768, 9841, 1490, 1466, - 1490,-32768,-32768,-32768, 8077, 1419, 677,-32768,-32768, 7713, - 1421,-32768, 1517, 1470,-32768,-32768,-32768, 270,-32768, 8937, - 1521, 1475,-32768,-32768,-32768, 1537, 1538,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 764,-32768, +-32768, 1027, 3285, 814,-32768,-32768, 790,-32768,-32768, 10123, + 10209, 10295, 10295,-32768,-32768,-32768,-32768,-32768, 800, 825, + 834, 853, 870, 1090, 578, 9601, 1697, 10295,-32768,-32768, + 10295,-32768,-32768, 10295, 7312,-32768, 10295, 181, 894,-32768, + 10295,-32768, 9687,-32768, 10982, 370, 1912, 4227, 9773,-32768, + 948, 2212,-32768, 1316, 3488, 3177,-32768, 380,-32768, 1589, + 1575, 181, 181, 9429, 5887,-32768, 1697, 857, 1697,-32768, +-32768, 871, 934, 10915, 889, 902, 908, 1438, 685,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 648, 549, 665, + 1697, 680, 663, 932, 670,-32768, 969,-32768, 3160, 272, + 418,-32768,-32768,-32768,-32768,-32768,-32768, 4962,-32768, 4520, + 5717, 557,-32768, 181, 865,-32768, 366,-32768, 977, 985, +-32768,-32768,-32768, 2223,-32768,-32768, 2223,-32768, 935,-32768, +-32768, 2883, 96, 951, 957,-32768,-32768,-32768,-32768, 5887, +-32768, 890, 897,-32768,-32768, 781,-32768, 560,-32768,-32768, +-32768,-32768, 145,-32768,-32768,-32768,-32768, 7403, 9601,-32768, +-32768,-32768, 9601, 973,-32768, 6666, 131, 3139,-32768, 3139, +-32768, 3732, 3732, 4591, 978,-32768, 560, 4520,-32768, 974, +-32768,-32768, 3884, 2369, 2281, 4520,-32768, 560,-32768,-32768, + 560, 2369,-32768, 1061,-32768,-32768, 505,-32768, 1485,-32768, + 1755, 5946, 61, 1027, 560,-32768,-32768, 991, 1015, 1037, + 1019,-32768,-32768,-32768,-32768, 387,-32768, 392, 983, 986, +-32768,-32768, 1027,-32768,-32768, 466,-32768,-32768, 9429, 9601, + 790, 7312,-32768, 400, 7312,-32768,-32768,-32768, 9515, 3739, + 3739, 3739, 3739, 10960,-32768,-32768,-32768,-32768, 990, 10381, + 10381, 7312, 995, 50, 999, 1050, 1003,-32768,-32768,-32768, +-32768, 9429,-32768, 6942, 7312,-32768, 9601, 9601, 7494, 9601, + 9601, 9601, 9601, 9601, 9601, 9601, 9601, 9601, 9601, 9601, + 9601, 9601, 9601, 9601, 9601, 9601, 9601, 9601,-32768, 9601, +-32768,-32768,-32768,-32768,-32768, 9601, 9601,-32768,-32768, 4867, + 796, 610, 8194,-32768,-32768,-32768, 1065, 1224, 1112, 448, + 502, 520, 1832, 402,-32768, 1177, 1177,-32768, 2598, 1012, + 1031, 1080,-32768,-32768, 575, 8884, 956,-32768, 711, 274, +-32768,-32768, 9601,-32768,-32768,-32768,-32768,-32768, 562, 555, +-32768,-32768, 181,-32768, 4520, 2080,-32768, 1067, 1070,-32768, +-32768, 1697, 932,-32768, 7926, 8017,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 141,-32768, 1049, 1039, 685, 3160, 1093, + 9429,-32768, 1091,-32768,-32768, 1972, 1328, 1116, 481, 1092, + 1096,-32768,-32768, 2423, 10740, 2423, 2100, 798, 4579,-32768, + 1102,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1046, +-32768, 1097,-32768,-32768, 412,-32768,-32768,-32768,-32768, 97, + 362, 1106, 1050,-32768,-32768,-32768,-32768, 6848, 10960,-32768, + 934, 1062, 10915,-32768,-32768, 1063,-32768, 1066, 624, 2989, + 1072,-32768, 154, 5663, 1109, 1111, 577,-32768,-32768,-32768, + 3139, 3139,-32768, 3884,-32768, 1119,-32768,-32768, 1073, 131, +-32768, 2369,-32768,-32768, 560,-32768, 549, 665,-32768, 1095, +-32768, 670, 1133,-32768,-32768, 376,-32768,-32768, 1770,-32768, + 635, 785,-32768, 9601, 10613,-32768, 10613, 365, 365, 343, + 630, 3533, 5783, 8262,-32768, 191, 365, 1131, 560, 8332, +-32768, 131, 4646, 9429, 9429,-32768, 9429, 131, 4646,-32768, +-32768,-32768,-32768,-32768,-32768, 526, 526, 526, 181, 1086, + 1089, 9865, 1080, 1098, 1099, 1100, 1125, 3672, 1134, 1142, + 1146,-32768, 1114,-32768,-32768, 1115,-32768,-32768, 1163, 422, + 547, 325, 85, 9601, 1164,-32768, 1173, 1127, 10960, 10960, +-32768,-32768, 1175, 4072, 3326, 5005, 3563, 5041, 4438, 2541, + 3040, 3040, 3040, 2262, 2262, 1391, 1391, 146, 146, 146, +-32768,-32768, 1136, 1137, 1130, 9601, 9515,-32768, 796,-32768, + 7403, 9601,-32768,-32768,-32768, 9601,-32768,-32768, 1148, 10295, + 1143, 1178, 1198, 1226,-32768, 9601,-32768, 9601,-32768, 9601, + 1792,-32768, 1792,-32768, 103, 1166, 1168,-32768, 1171, 3739, + 131,-32768, 131, 2092,-32768, 4646, 1172, 9068, 9068, 6252, + 1176, 9687, 1183, 2753, 1575, 861, 1186,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 9601, 1697, 1197, 1070,-32768, 10960, +-32768, 10960, 1438, 1202, 9951,-32768, 1204, 1255,-32768, 181, +-32768,-32768,-32768,-32768,-32768, 1207, 4962,-32768, 3739, 9429, + 1346, 1346, 4301,-32768,-32768,-32768,-32768, 2691,-32768,-32768, +-32768, 993, 9601,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 412,-32768, 648,-32768, 680, 663, 9601, 1227,-32768, + 637, 644, 667, 1050,-32768, 93,-32768, 117,-32768,-32768, +-32768,-32768,-32768,-32768, 8976,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1111, 1252,-32768,-32768,-32768, 3739,-32768,-32768, +-32768, 1253,-32768, 9515,-32768,-32768,-32768,-32768, 875,-32768, + 4646, 10960,-32768, 1199,-32768, 560, 560,-32768,-32768,-32768, +-32768,-32768, 4646, 523, 898, 9601, 1061,-32768, 1263,-32768, +-32768,-32768, 197, 225, 1021, 402, 333, 365, 1267,-32768, + 462,-32768,-32768,-32768, 560,-32768,-32768, 8402,-32768, 1222, + 181, 181, 181,-32768, 1229, 131, 4646, 131, 4646,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1241, 1242, + 1245, 1250, 1046,-32768, 10848, 7403, 7036, 1231,-32768, 9601, +-32768,-32768,-32768, 1239, 1246, 1248, 3739,-32768,-32768, 1249, + 361, 768, 768, 1257, 768,-32768,-32768, 10295, 1350, 9429, +-32768, 1266, 1280, 1281,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 131, 1282,-32768, 1260,-32768,-32768, 2901,-32768, +-32768,-32768,-32768,-32768, 10960,-32768,-32768, 1283,-32768,-32768, + 210, 1286,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1374, + 1374, 1710, 1710, 4301,-32768, 2691,-32768, 1851, 10982,-32768, +-32768,-32768, 1287,-32768, 362,-32768, 9601,-32768, 9601,-32768, + 9601,-32768, 1697,-32768,-32768, 6460, 1342,-32768, 7127,-32768, + 9160, 9160, 6572, 285, 1289, 373,-32768, 7403, 7218,-32768, +-32768, 268, 7403,-32768, 1290, 1291, 1755,-32768,-32768,-32768, + 131, 1296,-32768, 1343, 1343, 131, 1304, 9601, 9601, 10826, + 560, 3996, 560, 560, 921, 560, 4123, 1343,-32768,-32768, +-32768, 1365,-32768,-32768,-32768, 1312,-32768, 1317, 9601, 9601, + 9601, 9601, 7403,-32768, 1367,-32768,-32768, 10960,-32768,-32768, +-32768, 496, 1248,-32768,-32768,-32768,-32768,-32768,-32768, 1321, +-32768, 1380, 181,-32768,-32768,-32768, 131,-32768,-32768,-32768, +-32768,-32768,-32768, 9601,-32768,-32768, 1374, 1374,-32768, 1851, +-32768,-32768, 1325, 1327, 1330, 1352,-32768, 923, 275, 1387, + 980, 1038,-32768,-32768,-32768,-32768,-32768, 9601, 1396, 1399, + 1401, 9252, 237, 1697, 421, 636,-32768,-32768, 9343, 1454, +-32768,-32768,-32768, 1409,-32768, 4396, 10681, 10795, 6350,-32768, +-32768, 1461,-32768,-32768,-32768, 8495,-32768,-32768, 1372, 614, +-32768,-32768,-32768,-32768, 3739,-32768,-32768, 7403,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 10826, 10826,-32768, + 1343, 651, 1048, 9601,-32768,-32768,-32768, 1061, 1061, 1343, + 1343, 387, 1343,-32768,-32768, 6089, 131, 131,-32768,-32768, + 1376, 1377, 1379, 1383,-32768, 7403, 9601,-32768, 496,-32768, +-32768,-32768,-32768, 131, 1388,-32768,-32768,-32768,-32768, 1352, +-32768, 1697,-32768,-32768,-32768,-32768,-32768,-32768, 682, 682, + 1050, 1404, 1410, 5995,-32768,-32768,-32768,-32768, 1442, 9601, + 1444, 1441, 1458, 1840, 1872,-32768, 1050,-32768,-32768, 1422, +-32768,-32768, 1061, 927,-32768, 954, 1061, 10037, 987, 289, +-32768,-32768,-32768,-32768,-32768,-32768, 397,-32768,-32768, 131, + 131,-32768,-32768,-32768, 9601, 9601, 10826, 560, 560,-32768, +-32768,-32768,-32768, 8108,-32768,-32768,-32768,-32768, 131, 131, +-32768,-32768,-32768,-32768,-32768, 1405,-32768,-32768,-32768, 1424, +-32768,-32768,-32768, 9515,-32768,-32768,-32768, 1501, 8791, 6757, + 9515, 9601,-32768, 8603,-32768, 1460,-32768,-32768, 1467,-32768, + 1458, 1840,-32768,-32768, 781,-32768,-32768, 10467, 10467, 7585, +-32768,-32768, 1050,-32768,-32768, 10826, 10826,-32768, 1343, 1343, + 1415, 10870, 1430,-32768,-32768,-32768, 5586,-32768,-32768, 1420, + 252, 4520, 1050, 8697,-32768,-32768, 93,-32768,-32768, 1471, + 1427, 10938, 8603,-32768,-32768,-32768,-32768, 1352, 89,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 509, 412, 1431, + 1432, 1050,-32768, 1061,-32768,-32768,-32768,-32768, 705,-32768, + 7676,-32768,-32768,-32768,-32768, 1352, 1527, 1486, 170,-32768, +-32768,-32768,-32768, 560, 93,-32768, 9601, 1487,-32768, 1488, +-32768, 1050, 8603, 1452, 753, 1493,-32768,-32768,-32768, 145, +-32768, 1489,-32768, 1446,-32768,-32768,-32768,-32768, 9601, 1527, + 1495, 1527,-32768,-32768,-32768, 7767, 1457, 787,-32768,-32768, + 7403, 1459,-32768, 1557, 1511,-32768,-32768,-32768, 295,-32768, + 8697, 1561, 1513,-32768,-32768,-32768, 1576, 1577,-32768 }; static const short yypgoto[] = {-32768, - 1541,-32768, -322, 1382, -386, 58, 0, 1540,-32768, 1512, --32768,-32768, 113,-32768, 253,-32768, 287,-32768, 159, 901, - 33, 19,-32768,-32768, -611,-32768,-32768, 627, 59, 1402, - 1147, 1408, -690, 51, -164, 10, 1,-32768,-32768,-32768, --32768,-32768, 806,-32768,-32768,-32768,-32768,-32768,-32768, 433, - 1592,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1494, -649, 5793, -67, -534, -203, 21, 1455, - -507,-32768, 397,-32768, 222,-32768, -1353,-32768, -1343, -3, --32768, 1661, 891, -267, 370, -520,-32768, -828, 1473, 74, - 1135, 3774, 1317, -325, -74, -94, 1462, -70, 434,-32768, --32768,-32768, -330,-32768, -154,-32768,-32768, -1214, -48, -327, - 3104, 52, 424, -150, 28, 86, -200, -4, -28, -163, - -157, 7, -35, -103,-32768, -359,-32768,-32768,-32768,-32768, --32768, -113, 237, -2,-32768, 697,-32768,-32768, -1067, -431, - 905,-32768,-32768,-32768,-32768,-32768, 167,-32768,-32768,-32768, --32768,-32768, 705, -373,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 1384,-32768, 444, 619,-32768,-32768,-32768,-32768, 589, - -717,-32768,-32768,-32768,-32768,-32768,-32768, 864,-32768, 431, - 996, 726, 1050, 4767, 47, 25, -443, 1446, 3480, -462, --32768, 2,-32768, 5022, -146, 651, -106, 4331, 1302,-32768, - 4962, 2031, 1670, -9, -104,-32768, 1519, -53,-32768, 4406, - 2964, -301,-32768, 1578,-32768,-32768, 347,-32768,-32768, 484, - 82, -419,-32768,-32768,-32768,-32768, -1336,-32768, -1222, -1362, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 102,-32768,-32768,-32768,-32768,-32768, - 142, -1296,-32768,-32768, -38,-32768,-32768,-32768,-32768, -1378, - 73,-32768, 79,-32768, -691, -572, 669,-32768,-32768,-32768, --32768, -389,-32768, -379, -143,-32768, 988, 348,-32768, 132, --32768, -227 + 1586,-32768, -336, 1421, -382, 70, 6, 1573,-32768, 1554, +-32768,-32768, 266,-32768, 277,-32768, 396,-32768, 195, 937, + 52, 14,-32768,-32768, -628,-32768,-32768, 661, 53, 1426, + 1179, 1439, -685, 77, -162, 13, 139,-32768,-32768,-32768, +-32768,-32768, 835,-32768,-32768,-32768,-32768,-32768,-32768, 456, + 1536,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1518, -616, 5440, -68, -498, -295, 26, 1478, + -508,-32768, -43,-32768, 245,-32768, -1359,-32768, -1380, 27, +-32768, 1476, 1201, -274, 405, -542,-32768, -817, 4764, 1360, + 1170, 3522, 1349, -326, -85, -94, 105, -71, -27,-32768, +-32768,-32768, -327,-32768, -156,-32768,-32768, -1216, 68, -343, + 4423, 107, 1101, -118, 19, 102, -200, -4, -138, -160, + -169, 20, -42, -245,-32768, -342,-32768,-32768,-32768,-32768, +-32768, -5, 1809, -17,-32768, 724,-32768,-32768, -988, -428, + 941,-32768,-32768,-32768,-32768,-32768, 168,-32768,-32768,-32768, +-32768,-32768, 733, -362,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 1416,-32768, 465, 645,-32768,-32768,-32768,-32768,-32768, + 881, -684,-32768,-32768,-32768,-32768,-32768,-32768, 885,-32768, + 460, 1022, 752, 1083, 4670, 47, 25, -441, 1474, 2689, + -454,-32768, 18,-32768, 5069, -134, 156, -82, 4079, 1334, +-32768, 4154, 1775, 1562, -16, -107,-32768, 1555, -58,-32768, + 4257, 2711, -195,-32768, 2673,-32768,-32768, 381,-32768,-32768, + 516, 115, -427,-32768,-32768,-32768,-32768, -1353,-32768, -1239, + -1387,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, 137,-32768,-32768,-32768,-32768, +-32768, 176, -1300,-32768,-32768, -54,-32768,-32768,-32768,-32768, + -1367, 116,-32768, 123,-32768, -698, -581, 704,-32768,-32768, +-32768,-32768, -383,-32768, -376, -175,-32768, 1675, 393,-32768, + 232,-32768, -226 }; -#define YYLAST 11048 +#define YYLAST 11066 static const short yytable[] = { 59, - 415, 418, 423, 36, 475, 431, 192, 432, 680, 252, - 178, 973, 249, 122, 433, 103, 710, 617, 681, 501, - 627, 388, 42, 706, 678, 626, 739, 396, 757, 1086, - 59, 57, 523, 526, 36, 956, 886, 59, 394, 395, - 245, 695, 494, 886, 817, 294, 657, 1012, 173, 1014, - 72, 170, 205, 42, 474, 55, 1041, 204, 393, 220, - 42, 35, 57, 482, 437, 556, 950, 243, 856, 172, - 387, 252, 1450, 1397, 166, 1412, 140, 144, 186, 292, - 1509, 72, 1415, 345, 256, 345, 55, 345, 72, 58, - 1048, 513, 35, 171, 491, 1505, 1053, 908, 595, 165, - 167, 595, 345, 345, 1161, 595, 1510, 360, 981, 15, - 352, 703, 353, -411, 986, -1, 38, 778, 744, 159, - 58, 552, 192, 630, 1323, 1324, 815, 58, 252, 1579, - 293, 402, 345, 138, 345, 780, 399, 549, 1344, 550, - 1537, -144, -411, -2, 513, 1519, -411, 38, 631, 632, - 235, 957, 1546, 579, 236, 982, 59, 404, 983, 160, - 59, 987, 1539, 401, 988, 1534, 888, 205, 704, 291, - 428, 173, 204, 478, 170, 1580, 186, 95, 110, 111, - 1162, -298, 72, 42, 480, 483, 1560, 400, 57, 779, - 508, -411, 172, 414, 417, 692, 802, 166, 1547, 580, - 686, 687, 962, 1112, 816, 220, 1591, 72, 174, 440, - 1572, 72, 55, 220, -291, 86, 171, 94, 1568, 605, - 186, 58, 165, 167, 1576, 217, 88, -298, -298, 220, - 112, 113, 8, 506, 504, 458, 460, 1537, 971, 1006, - 1513, 1167, -291, -143, 1507, 256, 58, 601, 1450, 93, - 58, 922, 107, 1042, 1389, 137, 39, 1253, 89, -361, - 1119, 15, 1423, 1122, 87, 801, -352, 600, 1314, 1007, - 441, 1429, 1430, 1373, 1431, -352, 359, 108, 90, 441, - 1234, 700, 665, 974, 130, 131, 727, 39, 243, 1544, - 40, 1168, -361, 208, 935, 216, -361, 447, 627, 592, - 923, 232, 1043, 442, 1148, 1149, 1254, -618, 507, 960, - 961, 1373, 442, 455, 448, 415, 418, 1315, 1190, 109, - 345, 40, 1374, 1134, 742, 1017, 886, 660, 1601, -361, - 1195, 174, 135, 292, 680, 926, 1085, 127, 128, 1577, - 304, 243, 504, 449, 992, 296, 390, 391, 10, 345, - 636, 683, 256, -618, -618, 634, 26, 936, 1018, 456, - 1481, 859, 1019, 1215, 737, 1217, 127, 128, -618, 886, - 501, 217, 743, 937, 633, 527, 528, 1602, 860, 217, - 217, 137, 401, 21, 293, 91, -300, 26, 502, 130, - 131, 536, 617, 677, 537, 1020, 205, 538, 27, 315, - 548, 72, 1357, 863, 553, 92, 635, 861, 208, 217, - 359, 886, 594, 864, 438, 157, 668, 981, 130, 131, - 1522, 1523, 579, 291, 771, 59, 859, 865, 1087, 909, - 32, 1137, -300, -300, 503, 220, 173, 218, 219, 697, - 58, 216, 507, 860, 679, 480, 483, -294, 745, 481, - 216, 720, 1114, 480, 8, 9, 175, 172, 217, 296, - 390, 391, 10, 158, 982, 483, 152, 983, 580, -821, - 1250, 1251, 861, 1356, 183, -52, 72, 179, 220, 138, - -52, 171, 370, 676, 483, 89, 622, 59, 371, 1041, - 184, -52, 768, -141, 211, 212, 791, 21, 359, 139, - 14, 18, 679, 362, 366, 90, 130, 131, 731, 732, - 26, 217, 27, 315, 345, 58, 549, 345, 550, 773, - 345, -362, 20, 15, 345, 807, 807, 807, 807, 1446, - 959, 23, 623, 605, 95, 110, 111, 345, 72, 798, - 238, 676, 792, 772, 32, 757, 680, 345, 240, 765, - 345, 592, 665, 1160, -362, 605, 681, 874, -362, 932, - 577, 578, 678, 1196, 296, 390, 391, 10, 217, 886, - 138, 931, 373, 627, 876, 88, -578, 58, 626, 801, - 152, 152, 152, 496, 356, 292, 911, 112, 113, 114, - 91, -362, 90, -120, 1061, 15, 174, 295, 886, 374, - 358, 801, 21, 875, 677, 1002, 513, 1004, 368, 247, - 92, 720, 1008, 536, 537, 8, 9, 27, 315, 92, - 877, 256, -578, 185, 152, 943, -120, 948, 949, 497, - -120, 1001, 372, 556, 218, 434, 293, 208, 216, 789, - 217, 217, 1223, 1225, 375, -118, 91, 15, 217, 32, - 1239, 376, 880, 882, 388, 679, 345, 122, 377, 129, - 217, -578, 679, -120, 137, 1046, 92, 130, 131, 26, - 205, 949, 1392, 397, 243, 291, 630, -291, -118, 217, - 894, 929, -118, 154, 878, 790, 7, 127, 128, 10, - 971, 972, 13, 420, 676, 127, 128, 771, -7, 771, - 996, 676, 185, 438, 1021, 771, 771, -578, 470, 421, - 481, 216, 1154, 480, 438, -118, 1395, -613, 481, 677, - 1156, 543, 757, 1027, 21, 1133, 895, 896, 137, 1158, - 879, 438, 1015, 1016, 1452, 1225, 1555, 26, 1593, 27, - 28, 1044, 299, 160, 1310, 1312, 997, 130, 131, 1316, - 1022, 436, 1424, 30, 116, 117, 118, 435, 1155, 439, - 59, 802, 59, 31, 88, 768, 1157, 768, 205, 59, - 679, 32, 1026, 1036, 768, 1159, 33, 677, 345, 345, - 1453, 345, 1556, 677, 1594, 963, 747, 748, 1235, 1236, - 1354, 1238, 773, 451, 773, 452, 1150, 154, 154, 154, - 509, 773, 217, 1049, 1050, 26, 1051, 119, 120, 676, - 510, 72, 511, 72, 512, 91, 772, 520, 1013, 529, - 72, 674, 765, -142, 765, 772, 468, 469, 679, 964, - 552, 765, 476, 477, 679, 92, 26, 1009, 965, 966, - 89, 154, 530, 217, 91, 1210, 1211, 1212, 1197, 714, - 58, 345, 58, 116, 747, 748, 1089, 1569, 89, 58, - 90, 1185, 1186, 1187, 92, 531, 1376, 676, 532, 91, - 468, 698, 216, 676, 533, 967, 252, 1377, 90, 674, - 750, 476, 699, 1010, 807, 1418, 217, 1371, 1372, 92, - 677, 210, 211, 212, 720, 152, 152, 152, 14, 468, - 1475, 1192, 1193, 595, 26, 256, 119, 120, 217, 127, - 128, 208, 641, 216, 232, 18, 89, 644, 543, 645, - 20, 543, 647, 1444, 1425, 804, 1058, 1059, 1060, 23, - 1206, 677, -181, 807, 345, 648, 90, 677, 543, 476, - 1476, 679, 1095, 880, 882, 679, 649, 137, -181, 661, - -181, 543, 468, 1480, 668, 831, 216, 662, -6, 26, - 1456, 130, 131, 252, 1027, 90, 249, 127, 128, 802, - 536, 537, 92, 217, 690, 863, 1473, 771, 481, 720, - 676, 438, 679, 854, 676, 864, 1138, 1139, 679, 870, - 1199, 693, 807, 415, 418, 733, 1201, 1202, 345, 865, - 1199, 1204, 8, 9, 1202, 677, 715, 8, 9, 208, - 738, 359, 15, 1026, 783, 438, 784, 677, 785, 130, - 131, 676, 415, 418, 127, 128, 786, 676, 793, 794, - 679, 811, 674, 15, 813, 814, 704, -411, 1361, 674, - 59, 816, 871, 248, 873, 768, 359, 887, 889, 891, - 677, 359, 677, 914, 130, 131, 679, 925, 915, 130, - 131, 924, 1456, 928, 129, -411, -411, 930, 679, 676, - 127, 128, 773, 252, 26, 504, 130, 131, 248, 20, - 807, 938, 1456, 507, 1329, 1330, 939, 1339, 1340, 952, - 1342, 72, -294, 345, 958, 676, 772, 378, 379, 380, - 441, 679, 765, 679, 127, 128, 680, 676, 127, 1341, - -820, 1552, 154, 154, 154, 994, 1530, 998, 1242, 978, - 26, 979, 130, 131, -574, 999, 980, -574, 1003, 985, - 58, 1403, 1005, 1408, 1045, 508, 514, 677, 1405, 771, - 676, 1456, 676, 972, 127, 128, 515, 674, 26, 706, - 382, 383, 359, 1062, 26, 1063, 130, 131, 1595, 1297, - 130, 131, 891, 1289, 1064, 1065, 720, 211, 212, 1240, - 514, 232, 802, 14, -574, 1066, -574, -574, 1067, -574, - 515, 1068, 1069, 1070, 507, 1071, 1256, 1257, 679, 1072, - -574, 1296, -574, -140, 26, 20, 130, 131, 1074, 1077, - 1075, 1078, 59, 1079, 23, 674, 1080, 768, -574, -574, - 72, 674, 1081, 1421, 1422, 1256, 1257, 679, 1094, 1098, - 1096, 1288, 335, -574, 335, 1097, 335, 676, 116, 747, - 748, 1099, 749, 1105, 773, 95, 96, 97, 1106, 221, - 222, 223, 536, 537, 1107, 1132, 1402, 1125, 1402, 58, - 1115, 438, 438, 72, 1113, 750, 676, 1116, 772, 1118, - 1128, 1092, 751, 18, 765, 1131, 1153, 1176, 224, 1182, - 1200, 335, 1205, 335, 15, 1209, 1213, 1229, -411, 26, - 438, 119, 120, 1297, 1218, 1219, 26, 1220, 98, 99, - 225, 205, 58, 1297, 1221, 543, 1226, 1289, 1228, 513, - 1297, 1427, 1428, 1230, 1289, 1233, -411, -411, 1241, 807, - 1237, -411, 1487, 1488, 1489, 1296, 8, 9, 674, 1518, - 12, 13, 674, 1243, 1244, 1296, 14, 95, 96, 97, - 415, 418, 1296, 1249, 72, 226, 227, 228, 1245, 712, - 16, 1248, 17, 1252, 72, 1288, 718, 1255, 20, 1260, - 1161, 72, 1309, 1318, 1319, 1288, 581, 23, 1322, 674, - 448, 548, 1288, 1549, 1326, 674, 26, -655, 130, 131, - 478, 1520, 1521, 58, 1348, 152, 1349, 1355, 26, -300, - 98, 99, 100, 58, 574, 575, 576, 577, 578, 1359, - 58, 1360, 1365, 1366, -300, 582, 583, 1367, -300, 1183, - 584, 585, 586, 587, 1368, 857, 1398, 674, 1375, 1384, - 799, 1385, 1386, 1400, -300, 1413, 1459, 152, 95, 110, - 111, 1464, 221, 222, 223, 1460, -300, -300, 1416, -300, - 1440, -300, 1466, 674, 438, 438, 1441, 438, 438, 1571, - 438, 1442, 378, 379, 380, 674, 18, 1443, 1500, 1448, - 534, 224, 1533, 1297, 1297, 1500, 371, 1289, 1297, 1467, - -300, -300, 1289, 217, 1474, 95, 110, 111, 498, 1495, - 852, 112, 113, 1496, 345, -300, 853, 1504, 674, 1514, - 674, 1515, 1524, 1526, 1532, 1296, 1296, 381, 335, 1541, - 1296, 677, 1542, 1550, 151, 382, 383, 1553, 1297, 293, - 1563, 1551, 1289, 21, 72, 72, 293, 1297, 1567, 72, - 1574, 1289, 1575, 906, 1578, 1288, 1288, 1581, 112, 113, - 1288, 1583, 1584, 731, 732, 1588, 1592, 1597, 1596, 1599, - 1296, 1604, 208, 216, 1605, 1500, 1607, 1608, 291, 1296, - 1, 5, 679, 58, 58, 291, 156, 430, 58, 72, - 536, 537, 1471, 7, 8, 246, 10, 1297, 72, 927, - 1288, 1289, 1135, 438, 438, 674, 429, 543, 427, 1288, - 116, 117, 118, 152, 152, 152, 696, 1548, 1037, 127, - 128, 676, 709, 713, 13, 1261, 293, 355, 58, 1296, - 713, 21, 154, 405, 674, 1297, 1603, 58, 247, 1289, - 1455, 1358, 152, 152, 152, 101, 27, 28, 72, 416, - 419, 519, 977, 115, 1350, 1351, 1352, 1353, 1127, 1288, - 490, 1126, 605, 119, 120, 291, 1188, 1296, 1320, 26, - 248, 130, 131, 1207, 154, 1343, 1039, 917, 32, 858, - 1124, 471, 386, 602, 1411, 606, 72, 58, 1306, 1570, - 1582, 1587, 151, 335, 713, 607, 229, 1288, 1545, 1589, - 1175, 1417, 438, 438, 438, 608, 217, 0, 609, 610, - 95, 110, 111, 0, 650, 651, 652, 1388, 0, 0, - 0, 1023, 1024, 9, 10, 58, 335, 0, 709, 0, - 0, 828, 829, 0, 833, 834, 835, 836, 837, 838, - 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, - 849, 850, 851, 0, 713, 384, 0, 0, 0, 21, - 713, 438, 438, 112, 113, 0, 0, 1000, 95, 409, - 410, 0, 26, 0, 27, 28, 0, 411, 1191, 0, - 1025, 0, 0, 0, 0, 1082, 1083, 0, 189, 254, - 713, 1088, 1445, 0, 0, 0, 0, 713, 190, 0, - 0, 0, 0, 0, 0, 1100, 32, 1101, 1047, 1102, - 0, 191, 0, 254, 1052, 0, 0, 0, 0, 919, - 921, 98, 113, 0, 0, 1465, 545, 0, 0, 438, - 154, 154, 154, 0, 0, 335, 0, 7, 8, 9, - 10, 0, 254, 13, 0, 596, 0, 296, 390, 391, - 10, 254, 597, 0, 1130, 0, 611, 611, 611, 154, - 154, 154, 0, 0, 486, 488, 0, 624, 8, 9, - 10, 0, 95, 96, 97, 21, 0, 0, 499, 0, - 152, 605, 709, 0, 0, 21, 0, 0, 26, 1498, - 27, 28, 598, 0, 0, 831, 1498, 1151, 26, 0, - 27, 315, 304, 625, 940, 21, 0, 0, 254, 0, - 0, 0, 0, 0, 941, 543, 0, 1108, 26, 1109, - 130, 131, 32, 0, 608, 98, 99, 942, 610, 95, - 96, 97, 599, 0, 7, 8, 9, 10, 1011, 0, - 0, 0, 254, 0, 0, 0, 0, 0, 535, 0, - 152, 152, 152, 0, 0, 0, 0, 335, 335, 674, - 335, 614, 618, 621, 416, 419, 0, 254, 0, 0, - 0, 0, 21, 0, 359, 713, 1498, 0, 0, 95, - 110, 111, 98, 99, 0, 26, 0, 27, 28, 0, - 643, 188, 1573, 7, 127, 128, 10, 1073, 0, 653, - 0, 189, 0, 0, 116, 747, 748, 296, 8, 9, - 10, 190, 643, 0, 1586, 95, 110, 111, 0, 32, - 0, 831, 0, 545, 191, 0, 545, 0, 0, 713, - 713, 21, 112, 113, 709, 713, 0, 0, 247, 0, - 0, 0, 416, 812, 0, 21, 27, 28, 0, 713, - 0, 713, 247, 713, 0, 0, 545, 119, 120, 254, - 27, 315, 0, 0, 0, 0, 0, 0, 112, 1468, - 248, 0, 0, 0, 80, 0, 0, 0, 32, 0, - 0, 1214, 0, 1216, 104, 1262, 0, 1263, 1123, 1264, - 0, 0, 32, 0, 133, 0, 0, 154, 713, 0, - 142, 142, 0, 142, 0, 80, 0, 7, 8, 9, - 10, 0, 80, 335, 0, 0, 254, 902, 611, 611, - 746, 611, 0, 0, 0, 199, 1147, 80, 901, 0, - 0, 0, 0, 0, 0, 233, 0, 0, 1247, 0, - 0, 713, 104, 0, 0, 21, 0, 0, 0, 711, - 0, 0, 247, 258, 104, 0, 711, 0, 713, 0, - 27, 28, 0, 0, 0, 0, 0, 154, 154, 154, - 0, 0, 0, 95, 110, 111, 104, 0, 0, 0, - 0, 0, 0, 1364, 248, 824, 611, 0, 611, 611, - 0, 611, 32, 0, 0, 0, 0, 0, 254, 1198, - 296, 8, 9, 10, 133, 0, 80, 0, 0, 0, - 142, 0, 0, 407, 142, 0, 1321, 142, 142, 142, - 711, 1325, 0, 881, 883, 254, 112, 1470, 0, 872, - 0, 80, 611, 0, 0, 80, 0, 0, 21, 0, - 0, 199, 80, 0, 0, 247, 0, 0, 709, 709, - 0, 0, 1227, 27, 315, 0, 0, 0, 0, 199, - 199, 199, 0, 0, 0, 0, 0, 7, 8, 9, - 10, 0, 335, 1362, 0, 0, 0, 248, 0, 0, - 711, 0, 0, 0, 0, 32, 711, 0, 199, 0, - 0, 945, 0, 614, 618, 0, 621, 0, 934, 0, - 0, 0, 902, 0, 489, 21, 0, 0, 0, 951, - 0, 605, 254, 0, 104, 0, 711, 0, 26, 611, - 27, 28, 0, 711, 0, 142, 0, 0, 254, 713, - 0, 713, 0, 713, 940, 0, 0, 618, 0, 824, - 0, 709, 0, 0, 941, 0, 0, 0, 0, 0, - 709, 709, 32, 0, 608, 709, 0, 942, 610, 479, - 211, 212, 0, 104, 516, 0, 14, 0, 0, 0, - 1327, 1328, 0, 1436, 1437, 296, 127, 128, 10, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 20, 0, - 1447, 0, 611, 0, 611, 0, 709, 23, 0, 416, - 812, 0, 0, 0, 0, 611, 0, 0, 104, 901, - 901, 901, 603, 21, 516, 516, 619, 0, 0, 0, - 247, 0, 0, 0, 618, 80, 0, 713, 27, 315, - 0, 0, 0, 0, 0, 7, 8, 9, 10, 0, - 0, 242, 0, 151, 0, 0, 1483, 1484, 0, 0, - 0, 1383, 611, 611, 611, 0, 0, 0, 0, 133, - 32, 0, 0, 0, 0, 1493, 1494, 0, 104, 0, - 199, 104, 0, 21, 0, 0, 0, 0, 0, 605, - 0, 0, 0, 0, 142, 1173, 26, 142, 27, 28, - 0, 709, 142, 0, 0, 0, 901, 1103, 0, 1104, - 80, 711, 940, 0, 0, 0, 0, 1426, 0, 0, - 1110, 0, 941, 0, 881, 883, 0, 0, 0, 0, - 32, 0, 608, 0, 0, 942, 610, 0, 199, 709, - 199, 0, 199, 199, 199, 210, 211, 212, 199, 127, - 128, 0, 14, 199, 8, 9, 199, 163, 12, 13, - 0, 0, 717, 653, 14, 711, 711, 881, 883, 18, - 0, 711, 80, 0, 20, 0, 934, 0, 16, 0, - 17, 18, 0, 23, 0, 711, 20, 711, 0, 711, - 0, 713, 605, 0, 0, 23, 0, 605, 684, 26, - 0, 130, 131, 0, 26, 0, 130, 131, 1485, 1486, - 104, 104, 104, 104, 0, 606, 0, 1491, 0, 0, - 606, 0, 254, 0, 254, 607, 0, 0, 0, 0, - 607, 0, 0, 0, 711, 608, 0, 0, 609, 610, - 608, 0, 0, 609, 610, 1511, 0, 0, 0, 0, - 0, 0, 416, 419, 127, 128, 0, 0, 0, 242, - 611, 611, 611, 611, 611, 0, 254, 0, 611, 0, - 104, 0, 516, 0, 0, 0, 0, 711, 0, 0, - 0, 416, 1308, 0, 603, 0, 516, 516, 0, 619, - 0, 901, 901, 901, 711, 0, 903, 605, 0, 0, - 905, 0, 0, 0, 26, 0, 130, 131, 572, 573, - 574, 575, 576, 577, 578, 199, 1224, 0, 0, 0, - 606, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 607, 0, 7, 8, 9, 10, 0, 0, 13, 133, - 608, 0, 0, 609, 610, 0, 133, 0, 0, 0, - 0, 0, 0, 254, 199, 947, 199, 199, 233, 619, - 0, 0, 0, 0, 0, 1103, 1104, 881, 883, 0, - 21, 0, 0, 1110, 709, 0, 605, 0, 611, 611, - 0, 611, 0, 26, 0, 27, 28, 296, 8, 9, - 10, 0, 0, 0, 0, 0, 881, 883, 0, 1140, - 199, 0, 1266, 0, 947, 127, 128, 0, 1224, 1141, - 504, 199, 199, 0, 199, 0, 0, 32, 0, 608, - 0, 0, 1142, 610, 0, 21, 0, 0, 0, 0, - 0, 0, 247, 0, 0, 0, 254, 0, 0, 0, - 27, 315, 133, 0, 0, 80, 0, 80, 605, 0, - 0, 0, 1034, 80, 80, 26, 0, 130, 131, 0, - 0, 0, 104, 254, 507, 711, 0, 711, 104, 711, - 0, 606, 32, 0, 0, 516, 516, 516, 0, 0, - 0, 607, 0, 1103, 1104, 0, 1110, 516, 0, 0, - 0, 608, 0, 0, 609, 610, 0, 0, 0, 0, - 0, 162, 0, 7, 8, 9, 10, 163, 12, 13, - 0, 0, 0, 0, 14, 0, 0, 0, 1173, 0, - 0, 0, 254, 1390, 1391, 0, 0, 0, 16, 0, - 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, - 0, 21, 8, 9, 0, 23, 12, 13, 164, 0, - 0, 0, 14, 0, 26, 0, 27, 28, 0, 0, - 516, 0, 516, 711, 0, 0, 16, 0, 17, 104, - 30, 0, 0, 516, 20, 104, 0, 903, 903, 903, - 31, 0, 0, 23, 1117, 0, 0, 0, 32, 416, - 1308, 0, 26, 33, 130, 131, 588, 0, 34, 0, - 8, 9, 0, 0, 12, 242, 0, 0, 0, 0, - 14, 0, 1451, 0, 0, 0, 104, 83, 104, 0, - 199, 199, 1144, 0, 16, 0, 17, 106, 0, 0, - 0, 589, 20, 0, 1469, 1472, 126, 134, 210, 211, - 212, 23, 0, 143, 143, 14, 143, 0, 83, 0, - 26, 0, 130, 131, 0, 83, 0, 0, 0, 0, - 0, 0, 18, 0, 1144, 0, 0, 20, 143, 0, - 83, 0, 0, 0, 0, 0, 23, 104, 234, 0, - 0, 0, 0, 0, 0, 244, 0, 0, 0, 0, - 104, 912, 0, 1034, 0, 0, 0, 244, 0, 0, - 0, 0, 104, 0, 0, 7, 8, 9, 10, 163, - 12, 13, 1516, 0, 0, 1203, 14, 711, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, - 16, 0, 17, 18, 19, 104, 0, 104, 20, 0, - 0, 0, 0, 21, 0, 0, 0, 23, 0, 83, - 164, 0, 0, 143, 0, 0, 26, 143, 27, 28, - 143, 143, 143, 0, 0, 104, 0, 0, 0, 0, - 516, 516, 30, 516, 83, 0, 0, 0, 83, 0, - 0, 0, 31, 0, 143, 83, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 33, 0, 0, 0, 0, - 34, 0, 143, 143, 143, 0, 8, 9, 0, 163, - 12, 13, 0, 0, 717, 0, 14, 0, 199, 199, - 199, 199, 1144, 0, 0, 0, 199, 0, 0, 0, - 16, 143, 17, 18, 0, 0, 0, 0, 20, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 1144, - 1144, 1144, 0, 0, 0, 0, 26, 0, 130, 131, - 365, 367, 0, 0, 7, 127, 128, 10, 143, 6, - 242, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 199, 0, 14, 0, 0, 142, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 15, 16, 0, 17, 18, - 19, 0, 21, 0, 20, 0, 244, 143, 0, 21, - 0, 0, 22, 23, 24, 26, 25, 27, 28, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 29, 0, - 0, 30, 0, 0, 0, 0, 199, 199, 30, 199, - 0, 31, 0, 0, 0, 0, 0, 0, 31, 32, - 0, 244, 0, 0, 33, 604, 32, 143, 143, 620, - 0, 33, 0, 0, 629, 0, 34, 0, 83, 0, - 0, 0, 0, 0, 0, 199, 947, 199, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 760, 104, 7, 8, 761, 10, 163, - 12, 13, 666, 0, 0, 0, 14, 0, 0, 0, - 0, 244, 0, 143, 244, 0, 0, 0, 0, 0, - 16, 0, 17, 18, 19, 0, 0, 143, 20, -521, - 143, 0, 0, 21, 0, 143, 0, 23, 762, 0, - 164, 0, 0, 83, 0, 0, 26, 0, 27, 28, - 0, 0, 763, 0, 764, 0, 0, 7, 127, 128, - 10, 0, 30, 13, 7, 8, 9, 10, 0, 0, - 13, 143, 31, 143, 0, 143, 143, 143, 547, 0, - 32, 143, 0, 0, 0, 33, 143, 1144, 0, 143, - 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, - 0, -521, 21, 0, 759, 83, 0, 0, 26, 0, - 27, 28, 0, 0, 0, 26, 0, 27, 28, 0, - 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, - 0, 189, 0, 0, 148, 0, 0, 0, 0, 0, - 0, 190, 32, 244, 244, 244, 244, 149, 0, 32, - 0, 673, 0, 0, 191, 0, 0, 1144, 1144, 1144, - 7, 8, 9, 10, 163, 12, 13, 0, 0, 717, - 0, 14, 7, 8, 9, 10, 104, 0, 504, 0, - 0, 199, 0, 0, 0, 16, 0, 17, 18, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 21, 0, - 0, 0, 23, 244, 605, 143, 0, 0, 0, 719, - 21, 26, 0, 27, 28, 0, 605, 0, 0, 143, - 143, 0, 620, 26, 0, 27, 28, 1140, 0, 904, - 0, 0, 0, 0, 0, 0, 0, 1141, 0, 940, - 0, 0, 629, 0, 0, 32, 0, 608, 143, 941, - 1142, 610, 0, 0, 0, 0, 0, 32, 0, 608, - 0, 0, 942, 610, 0, 0, 0, 0, 0, 0, - 0, 0, 666, 0, 0, 800, 0, 0, 803, 0, - 126, 0, 805, 806, 808, 809, 810, 143, 620, 143, - 143, 234, 620, 0, 0, 547, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 827, 0, - 0, 0, 0, 0, 759, 0, 0, 0, 459, 461, - 465, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 143, 0, 0, 0, 620, 0, 0, - 0, 0, 0, 0, 143, 143, 0, 143, 0, 0, - 8, 9, 0, 0, 12, 242, 0, 0, 0, 0, - 14, 0, 884, 0, 0, 0, 0, 0, 0, 884, - 0, 0, 0, 0, 16, 134, 17, 0, 83, 0, - 83, 0, 20, 0, 0, 1035, 83, 83, 0, 0, - 0, 23, 0, 605, 0, 244, 0, 0, 0, 0, - 26, 244, 130, 131, 0, 0, 0, 0, 143, 143, - 143, 0, 0, 0, 0, 0, 606, 0, 0, 0, - 143, 0, 0, 0, 0, 0, 607, 51, 0, 0, - 0, 0, 0, 0, 0, 0, 608, 0, 0, 609, - 610, 0, 0, 0, 0, 0, -383, 8, 9, -383, - -383, 12, 242, 51, 51, 0, 150, 14, 51, 0, - 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, - 0, 16, 0, 17, -383, 0, 0, 673, 51, 20, - 51, 0, 0, 0, -383, 0, 0, 0, 23, 0, - 605, 0, 0, 143, 0, 143, 0, 26, 0, 130, - 131, 0, 244, 250, 0, 0, 143, 0, 244, 0, - 904, 904, 904, 606, 0, 0, 0, 629, 0, 0, - 0, 0, 0, 607, 0, 0, 0, 0, 0, 0, - 0, -383, 0, 608, 0, 719, 609, 610, 0, 0, - 0, 719, 0, 0, 0, 0, 0, 0, 0, 244, - 0, 244, 0, 143, 143, 620, 392, 392, 0, 51, - 0, 0, 0, 51, 0, 250, 0, 51, 0, 0, - 150, 150, 150, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 51, 0, 0, 729, 51, 730, - 0, 459, 461, 465, 51, 51, 0, 904, 0, 0, - 0, 0, 741, 0, 0, 0, 0, 0, 0, 1084, - 244, 0, 51, 51, 150, 0, 0, 0, 0, 0, - 0, 759, 250, 244, 127, 128, 1035, 0, 211, 212, - 0, 0, 0, 0, 14, 244, 0, 0, 0, 0, - 0, 51, 827, 0, 0, 0, 0, 0, 719, 0, - 0, 0, 884, 0, 0, 0, 20, 0, 83, 0, - 0, 0, 0, 0, 0, 23, 0, 605, 244, 0, - 244, 0, 0, 0, 26, 0, 130, 131, 51, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 0, 673, - 606, 1136, 0, 0, 0, 884, 0, 0, 244, 0, - 607, 0, 0, 143, 143, 0, 143, 0, 0, 0, - 608, 0, 0, 616, 610, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 884, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 544, 0, - 1178, 143, 143, 143, 143, 620, 1184, 0, 0, 143, - 0, 0, 0, 719, 0, 392, 759, 0, 0, 0, - 0, 0, 0, 250, 0, 719, 0, 0, 51, 0, - 0, 0, 904, 904, 904, 0, 0, 0, 7, 8, - 9, 10, 210, 211, 212, 0, 0, 0, 759, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 719, 0, - 719, 0, 392, 143, 0, 0, 18, 0, 143, 0, - 83, 20, 0, 51, 0, 0, 21, 0, 0, 0, - 23, 0, 605, 0, 0, 0, 0, 51, 1232, 26, - 51, 27, 28, 0, 0, 51, 0, 0, 0, 0, - 0, 0, 0, 51, 0, 940, 0, 0, 0, 0, - 729, 730, 0, 741, 0, 941, 0, 0, 0, 143, - 143, 0, 143, 32, 0, 608, 0, 0, 942, 610, - 0, 51, 0, 51, 0, 150, 150, 150, 0, 0, - 0, 51, 0, 0, 0, 884, 51, 1394, 0, 51, - 0, 1032, 0, 1023, 1024, 9, 10, 0, 143, 620, - 143, 0, 0, 0, 0, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 884, 0, 0, 244, 566, 567, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 21, 0, 0, 0, 544, 0, 0, 544, 0, - 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, - 0, 0, 1025, 544, 544, 544, 0, 0, 0, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 544, 0, - 190, 0, 0, 0, 78, 0, 0, 0, 32, 7, - 127, 128, 10, 191, 6, 504, 7, 8, 9, 10, - 11, 12, 13, 0, 0, 0, 0, 14, 0, 0, - 78, 78, 0, 78, 0, 78, 0, 0, 0, 0, - 904, 16, 78, 17, 18, 0, 250, 21, 0, 20, - 0, 0, 0, 0, 21, 78, 0, 78, 23, 544, - 26, 426, 27, 28, 0, 0, 0, 26, 0, 27, - 28, 0, 0, 29, 0, 0, 30, 0, 51, 0, - 0, 0, 0, 30, 0, 0, 31, 1178, 0, 459, - 461, 465, 0, 31, 32, 0, 0, 0, 0, 33, - 0, 32, 392, 0, 0, 0, 33, 0, 155, 392, - 904, 904, 904, 0, 0, 0, 0, 51, 51, 51, - 51, 0, 0, 0, 0, 0, 0, 0, 0, 244, - 200, 0, 0, 465, 143, 0, 78, 0, 0, 0, - 78, 0, 0, 0, 78, 0, 0, 78, 78, 78, - 0, 0, 0, 0, 8, 9, 0, 163, 12, 13, - 0, 78, 1032, 51, 14, 78, 0, 51, 0, 0, - 0, 78, 78, 0, 51, 51, 0, 51, 16, 0, - 17, 18, 0, 0, 0, 0, 20, 0, 0, 78, - 78, 78, 0, 0, 0, 667, 0, 0, 164, 0, - 0, 0, 0, 0, 26, 0, 130, 131, 51, 0, - 51, 0, 0, 0, 0, 51, 51, 51, 78, 0, - 0, 0, 155, 155, 155, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 0, 544, 0, 200, 0, 0, 0, - 0, 0, 547, 0, 0, 78, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 200, 466, 0, 0, 673, + 423, 617, 433, 178, 475, 152, 122, 431, 252, 36, + 432, 249, 415, 418, 680, 706, 974, 42, 388, 710, + 501, 681, 57, 627, 626, 523, 526, 887, 739, 294, + 59, 103, 657, 245, 887, 678, 757, 59, 394, 395, + 36, 1088, 494, 818, 220, 695, 857, 393, 42, 951, + 72, 396, 205, 57, 170, 42, 631, 632, 556, 1413, + 172, 173, 491, 362, 366, 387, 1416, 243, 957, 1451, + 252, 1506, 1398, 35, 480, 483, 140, 144, 186, 292, + 1013, 72, 1015, 345, 1050, 345, 474, 345, 72, 1042, + 1055, 513, 1510, 166, 167, 482, 579, 778, 440, 595, + 256, 1511, 345, 345, 35, 58, 595, 595, 686, 687, + 55, 165, 455, 159, 982, 352, 1538, 353, 816, 152, + 152, 152, 192, 360, 630, 1163, 1540, 252, -1, 1520, + 293, 402, 345, 909, 345, 744, 58, 151, 138, 504, + 502, 55, 580, 58, 513, 703, -144, -2, 171, 1535, + 1547, 86, 781, 160, 401, -352, 59, -291, 456, 441, + 59, 983, 404, 152, 984, 987, 478, 205, 889, 779, + 1569, 94, 437, 428, 1573, 1169, 186, 170, 42, 57, + 803, 1561, 72, 172, 173, 291, 503, 958, 154, 508, + 220, 727, 442, 414, 417, 204, 1548, 1114, 220, 923, + 87, 1164, 704, 692, 963, 1324, 1325, 72, 1577, 174, + 817, 72, 988, 1538, 220, 989, 166, 167, 1592, 1345, + 186, -361, 737, 15, 1514, 1170, 217, -352, 577, 578, + 743, 441, 8, 506, 165, 458, 460, 58, 192, 95, + 110, 111, 400, 1508, 88, 1451, 972, 601, 924, -362, + 1043, 15, 416, 419, -361, 549, 600, 550, -361, 211, + 212, 256, 58, 496, 442, 14, 58, 55, 1254, 38, + 91, 171, 93, 1545, 399, 975, 359, 8, 9, 700, + 39, 543, -362, 592, 130, 131, -362, 20, 243, 135, + 92, -361, 112, 113, 1121, 151, 23, 1124, 605, 1044, + 38, 627, 154, 154, 154, 936, 665, 1136, 507, 497, + 204, 39, 1192, 961, 962, 1087, 1390, 1255, 887, -362, + 345, 927, 660, 1578, 1197, 89, 1315, 415, 418, 130, + 131, -298, 174, 292, 1374, 480, 483, 910, 1150, 1151, + 680, 243, 1424, 480, 802, 90, 154, 993, 1374, 345, + 636, 1430, 1431, 1602, 1432, 483, 742, -120, 1216, 15, + 1218, 887, 107, 1042, 964, 747, 748, 1018, 256, 127, + 128, 501, 217, 401, 483, 1316, 617, -298, -298, 633, + 217, 217, 1007, 1375, 293, 235, -143, 218, 219, 236, + -120, 15, -291, 677, -120, -411, 205, 1482, 137, 40, + 1019, 72, 1603, 887, 1020, 127, 128, 605, 965, 714, + 217, 668, 1008, 359, 1358, 26, 579, 966, 967, -619, + 220, 130, 131, 771, -411, 59, 622, -120, -411, 545, + 40, 1139, 1089, 790, 152, 152, 152, 1021, 792, 291, + 91, 745, 697, -300, 679, 507, 605, 108, 172, 173, + -579, 720, 109, 802, 968, 1116, 58, 130, 131, 217, + 92, 635, 580, 220, 129, -619, -619, 683, 1235, 127, + 128, 91, 623, -411, 26, 89, 72, 1393, 543, 791, + -619, 543, 137, -141, 793, 805, -118, 59, 15, -300, + -300, 92, 802, 634, 875, 90, -579, 185, 543, 676, + 1523, 1524, 679, 1063, -294, 1251, 1252, 157, 731, 732, + 773, 543, 217, 359, 345, 832, 158, 345, 175, -118, + 345, 130, 131, -118, 345, 808, 808, 808, 808, 127, + 128, 58, 960, 179, 504, 592, 171, 345, 72, 937, + 876, 1447, 860, 855, 799, 248, 1162, 345, 877, 871, + 345, 183, 138, 680, 757, 938, -118, 676, 184, 861, + 681, 765, 887, 210, 211, 212, 879, 416, 419, 217, + 14, 932, 139, 1003, 678, 1005, 665, 627, 626, 26, + 1009, 130, 131, 933, 1198, 292, -579, 18, 862, 1357, + 18, 887, 20, 58, 878, 514, 88, 174, 772, 304, + 91, 23, 373, 480, 677, 515, 15, 513, -142, 238, + -411, 720, 880, 127, 128, 26, 684, 154, 154, 154, + 92, 895, 90, 997, 240, -300, 545, 556, 295, 545, + 768, 138, -579, 470, 1135, 982, 293, 256, -411, -411, + -300, 217, 217, -411, -300, 416, 813, 1224, 1226, 217, + 122, 388, 881, 883, 1240, 679, 345, 358, 370, 545, + -300, 217, 679, 26, 371, 130, 131, 896, 897, 998, + 205, 356, -300, -300, 243, -300, 1022, -300, 630, 864, + 217, 1010, 983, 1156, 973, 984, 930, -822, 91, 865, + 1158, 291, 296, 390, 391, 10, 771, 1396, 771, 368, + 972, 372, 912, 866, 771, 771, -300, -300, 92, 137, + 676, 771, 1425, 1160, 8, 9, 376, 676, 374, 677, + 903, -300, 1023, 377, 88, 1016, 1017, 1011, 1453, 1157, + 21, 397, 757, 375, 1045, 447, 1159, 247, 92, 1002, + 1226, 944, 185, 949, 950, 27, 315, 803, -291, 1311, + 1313, 1556, 448, 137, 1317, 1211, 1212, 1213, 359, 1161, + 59, 420, 59, 8, 9, 421, 130, 131, 205, 59, + 679, 127, 128, 1047, 1454, 59, 504, 32, 677, 345, + 345, 449, 345, 773, 677, 773, -614, 950, 127, 128, + 248, 299, 773, -7, 1355, 218, 434, 1557, 773, 1152, + 95, 96, 97, 217, 221, 222, 223, 359, 435, 1051, + 1052, 72, 1053, 72, 1580, 130, 131, 127, 128, 160, + 72, 26, 1094, 130, 131, 676, 72, 436, 18, 679, + 1187, 1188, 1189, 224, 765, 679, 765, 864, 26, 1028, + 130, 131, 860, 765, 217, 439, 452, 865, 1594, 765, + 451, 26, 345, 98, 99, 225, 543, 1091, 509, 861, + 1581, 866, 510, 1570, 8, 9, 58, 26, 58, 130, + 131, 772, 511, 1014, 512, 58, 252, 116, 747, 748, + 772, 58, 520, 514, 676, 808, 772, 217, 862, 1419, + 676, 677, 529, 515, 1595, 720, 1236, 1237, 530, 1239, + 226, 227, 228, 768, 750, 768, 903, 531, 359, 217, + 1027, 1037, 768, 468, 469, 152, 130, 131, 768, 95, + 96, 97, 256, 552, 127, 1342, 532, 1445, 26, 15, + 119, 120, 677, -411, 808, 345, 476, 477, 677, 549, + 507, 550, 679, 533, 881, 883, 679, 1362, 468, 698, + 668, 89, 552, 1457, 803, 476, 699, 152, 595, 1199, + 1185, -411, -411, 252, -575, 641, 249, -575, 359, 1474, + 26, 90, 98, 99, 100, 217, 130, 131, 644, 771, + 720, 1372, 1373, 679, 1201, 468, 1476, 1140, 1141, 679, + 1203, 1204, 645, 808, 1201, 1206, 647, 676, 1204, 345, + 507, 676, 892, 416, 813, 661, 677, 415, 418, 648, + 1194, 1195, 476, 1477, -575, 649, -575, -575, 677, -575, + 127, 128, 662, 7, 8, 246, 10, 1060, 1061, 1062, + -575, 679, -575, 89, 211, 212, 415, 418, 676, 1208, + 14, 1377, 690, 59, 676, 468, 1481, 151, -575, -575, + 90, -52, 677, 90, 677, 1457, -52, 679, 92, -6, + 129, 21, 20, -575, 784, 693, 773, -52, 247, 679, + 26, 23, 130, 131, 252, 1457, 27, 28, 95, 110, + 111, 1028, 808, 715, 738, 733, 676, 15, 785, 1175, + 786, 91, 787, 794, 72, 345, 795, 812, 154, 1378, + 248, 89, 814, 679, 1553, 679, 815, 704, 32, 1426, + 817, 92, 676, 680, 152, 152, 152, 765, 872, 874, + 1531, 90, 888, 890, 676, 1243, 892, 1406, 916, 543, + 915, 112, 113, 114, 1457, 1404, 508, 1409, 973, 677, + 154, 925, 706, 152, 152, 152, 929, 926, -181, 58, + 931, 20, 1027, -294, 772, 939, 959, 803, 676, 940, + 676, 1298, 1596, 137, -181, 953, -181, 441, 720, 979, + 980, 1290, -821, 981, 995, 1351, 1352, 1353, 1354, 986, + 127, 128, 999, 1000, 1297, 13, 768, 1004, 1257, 1258, + 679, 1006, 1046, 1064, 1330, 1331, 1065, 1340, 1341, 1069, + 1343, 1024, 1025, 9, 10, 1066, 1067, 1068, 1070, 95, + 110, 111, 72, 221, 222, 223, 1071, 1257, 1258, 679, + 1072, 1073, 1074, 605, -140, 1076, 95, 110, 111, 498, + 26, 1077, 130, 131, 1079, 1289, 1080, 18, 1389, 21, + 1083, 1096, 224, 1081, 1082, 676, 606, 416, 419, 116, + 117, 118, 26, 1098, 27, 28, 607, 335, 1193, 335, + 1026, 335, 112, 113, 21, 1099, 608, 58, 189, 609, + 610, 1100, 1101, 1107, 676, 1108, 416, 1309, 190, 112, + 113, 1109, 1115, 1117, 1298, 1155, 32, 116, 117, 118, + 1118, 191, 205, 1120, 1298, 1428, 1429, 154, 154, 154, + 513, 1298, 119, 120, 1290, 1127, 335, 1297, 335, 1130, + 808, 1290, 1133, 1446, 1134, 1178, 1184, 1297, 1519, 127, + 128, 1202, 1422, 1423, 1297, 1207, 154, 154, 154, 1210, + 378, 379, 380, 1219, 1220, 72, 1214, 1221, 26, 1227, + 119, 120, 1222, 415, 418, 72, 1466, 1229, 7, 8, + 9, 10, 72, 1230, 13, 1231, 1234, 1242, 1289, 378, + 379, 380, 605, 1403, 478, 1403, 1550, 1238, 1289, 26, + 1250, 130, 131, 1244, 1163, 1289, 7, 8, 9, 10, + 152, 26, 242, 382, 383, 606, 21, 1245, 1246, 1249, + 58, 1253, 605, 1256, 1261, 607, 1310, 1319, 1320, 26, + 58, 27, 28, 1323, 381, 608, 448, 58, 609, 610, + 1499, 1327, 382, 383, 21, 941, 832, 1499, -656, 1349, + 605, 1488, 1489, 1490, 1350, 942, 1361, 26, 1356, 27, + 28, 1360, 1366, 32, 1367, 608, 543, 1368, 943, 610, + 95, 110, 111, 941, 650, 651, 652, 1369, 1376, 1501, + 152, 152, 152, 942, 1298, 1298, 1501, 1385, 1386, 1298, + 1387, 32, 1399, 608, 1290, 217, 943, 610, 1401, 1290, + 574, 575, 576, 577, 578, 345, 1414, 1297, 1297, 1417, + 1521, 1522, 1297, 1441, 1442, 534, 1443, 95, 96, 97, + 1444, 1554, 677, 112, 113, 1449, 1460, 1499, 674, 1298, + 293, 1465, 1461, 1467, 371, 72, 72, 293, 1298, 1290, + 72, 1468, 1175, 1574, 1475, 1496, 1497, 1505, 1290, 1515, + 1516, 1525, 1297, 335, 731, 732, 1527, 1533, 1289, 1289, + 1542, 1297, 359, 1289, 1543, 1587, 1501, 1564, 1551, 1552, + 98, 99, 832, 679, 1579, 1568, 1575, 1576, 1572, 101, + 72, 1582, 1584, 1585, 1589, 291, 674, 115, 1298, 72, + 58, 58, 291, 154, 1593, 58, 1597, 1598, 1290, 1534, + 1600, 1605, 1606, 1289, 5, 1608, 1609, 624, 8, 9, + 10, 1297, 1289, 416, 1309, 1, 430, 293, 156, 1472, + 429, 296, 8, 9, 10, 928, 1298, 1137, 676, 427, + 229, 95, 409, 410, 1549, 58, 1290, 1038, 696, 72, + 1262, 355, 304, 625, 58, 21, 405, 709, 713, 1297, + 7, 127, 128, 10, 1456, 713, 13, 1604, 26, 21, + 130, 131, 1289, 154, 154, 154, 247, 1359, 95, 96, + 97, 254, 291, 519, 27, 315, 1129, 72, 978, 712, + 1128, 1321, 490, 1190, 98, 113, 718, 1040, 21, 384, + 1048, 527, 528, 918, 58, 254, 1344, 1126, 217, 471, + 1289, 26, 859, 27, 28, 602, 32, 536, 386, 1412, + 537, 411, 1307, 538, 1583, 1571, 548, 30, 335, 713, + 553, 98, 99, 1546, 254, 1588, 1177, 31, 594, 95, + 110, 111, 58, 254, 1590, 32, 0, 1418, 0, 674, + 33, 0, 7, 8, 9, 10, 674, 0, 13, 0, + 800, 335, 0, 709, 0, 0, 829, 830, 0, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, + 845, 846, 847, 848, 849, 850, 851, 852, 0, 713, + 21, 0, 112, 113, 0, 713, 605, 116, 747, 748, + 254, 749, 0, 26, 0, 27, 28, 0, 486, 488, + 0, 0, 116, 747, 748, 0, 0, 0, 80, 1142, + 853, 0, 499, 0, 750, 713, 854, 0, 104, 1143, + 0, 751, 713, 0, 254, 127, 128, 32, 133, 608, + 242, 0, 1144, 610, 142, 142, 0, 142, 26, 80, + 119, 120, 0, 0, 920, 922, 80, 0, 0, 254, + 0, 0, 0, 907, 674, 119, 120, 0, 0, 199, + 335, 80, 0, 0, 296, 127, 128, 10, 605, 233, + 0, 0, 95, 110, 111, 26, 104, 130, 131, 0, + 0, 0, 535, 7, 8, 9, 10, 258, 104, 504, + 0, 606, 0, 0, 0, 208, 0, 216, 0, 0, + 0, 607, 21, 232, 95, 110, 111, 709, 0, 247, + 104, 608, 0, 674, 609, 610, 0, 27, 315, 674, + 0, 21, 0, 0, 643, 112, 1469, 605, 0, 536, + 537, 0, 0, 653, 26, 0, 27, 28, 133, 0, + 80, 254, 0, 0, 142, 0, 643, 407, 142, 32, + 941, 142, 142, 142, 711, 0, 0, 112, 1471, 0, + 942, 711, 0, 1012, 0, 80, 0, 0, 32, 80, + 608, 0, 0, 943, 610, 199, 80, 0, 0, 0, + 0, 0, 0, 335, 335, 0, 335, 0, 581, 0, + 0, 0, 0, 199, 199, 199, 0, 0, 254, 0, + 0, 713, 0, 0, 296, 390, 391, 10, 0, 0, + 208, 7, 8, 9, 10, 0, 438, 0, 0, 0, + 0, 0, 199, 1075, 0, 711, 674, 582, 583, 0, + 674, 0, 584, 585, 586, 587, 0, 0, 489, 0, + 0, 0, 21, 216, 0, 0, 0, 0, 104, 21, + 0, 481, 216, 0, 746, 713, 713, 27, 315, 142, + 709, 713, 26, 0, 27, 28, 0, 674, 188, 0, + 0, 0, 0, 674, 0, 713, 0, 713, 189, 713, + 254, 0, 0, 0, 0, 711, 1084, 1085, 190, 32, + 0, 711, 1090, 0, 0, 0, 32, 104, 516, 0, + 0, 191, 0, 0, 0, 0, 1102, 254, 1103, 0, + 1104, 0, 0, 0, 1125, 674, 210, 211, 212, 825, + 0, 711, 0, 14, 713, 127, 128, 0, 711, 0, + 504, 0, 7, 8, 9, 10, 210, 211, 212, 335, + 18, 674, 104, 14, 0, 20, 603, 0, 516, 516, + 619, 0, 1149, 674, 23, 1132, 0, 0, 0, 80, + 18, 0, 0, 873, 0, 20, 0, 713, 605, 913, + 21, 0, 0, 0, 23, 26, 605, 130, 131, 0, + 0, 0, 0, 26, 713, 27, 28, 674, 0, 674, + 0, 606, 0, 133, 254, 0, 0, 0, 1153, 941, + 0, 607, 104, 0, 199, 104, 0, 0, 0, 942, + 254, 608, 0, 0, 609, 610, 0, 32, 142, 608, + 0, 142, 943, 610, 0, 1200, 142, 0, 0, 0, + 0, 0, 935, 0, 80, 0, 0, 0, 0, 208, + 216, 0, 596, 952, 296, 390, 391, 10, 0, 597, + 0, 0, 0, 0, 0, 7, 127, 128, 10, 1097, + 0, 242, 199, 0, 199, 0, 199, 199, 199, 0, + 0, 0, 199, 825, 674, 709, 709, 199, 0, 1228, + 199, 0, 21, 0, 0, 0, 0, 536, 537, 598, + 0, 0, 0, 21, 0, 26, 80, 27, 315, 335, + 0, 0, 0, 674, 0, 438, 26, 711, 27, 28, + 0, 0, 481, 216, 0, 0, 438, 210, 211, 212, + 481, 0, 30, 0, 14, 0, 0, 0, 0, 599, + 0, 0, 31, 438, 104, 104, 104, 104, 0, 0, + 32, 18, 0, 0, 0, 33, 20, 0, 7, 127, + 128, 10, 0, 0, 13, 23, 713, 0, 713, 0, + 713, 711, 711, 0, 0, 0, 0, 711, 709, 572, + 573, 574, 575, 576, 577, 578, 0, 709, 709, 0, + 0, 711, 709, 711, 0, 711, 21, 1263, 0, 1264, + 0, 1265, 0, 0, 104, 0, 516, 1328, 1329, 26, + 0, 27, 28, 0, 0, 479, 211, 212, 603, 0, + 516, 516, 14, 619, 0, 147, 0, 0, 0, 0, + 904, 0, 709, 0, 906, 148, 0, 0, 0, 18, + 711, 0, 0, 32, 20, 0, 0, 0, 149, 199, + 0, 0, 0, 23, 1001, 0, 0, 0, 0, 0, + 0, 0, 0, 713, 0, 7, 8, 9, 10, 0, + 0, 0, 0, 133, 0, 0, 7, 127, 128, 10, + 133, 0, 0, 711, 216, 0, 0, 1384, 199, 948, + 199, 199, 233, 619, 1365, 0, 1049, 1241, 653, 0, + 711, 0, 1054, 21, 0, 254, 0, 254, 0, 605, + 0, 935, 0, 0, 21, 0, 26, 0, 27, 28, + 0, 247, 0, 208, 0, 216, 232, 709, 0, 27, + 28, 0, 941, 0, 199, 0, 0, 0, 948, 0, + 0, 0, 942, 1427, 0, 199, 199, 0, 199, 254, + 32, 0, 608, 248, 0, 943, 610, 0, 0, 0, + 0, 32, 0, 0, 0, 709, 0, 0, 216, 0, + 536, 537, 0, 0, 0, 0, 133, 0, 0, 80, + 0, 80, 0, 0, 0, 0, 1035, 80, 80, 0, + 481, 0, 0, 438, 80, 0, 0, 104, 0, 0, + 0, 0, 0, 104, 0, 1110, 0, 1111, 0, 0, + 516, 516, 516, 0, 0, 0, 0, 713, 0, 0, + 0, 208, 516, 0, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 1486, 1487, 254, 674, 0, 0, + 0, 8, 9, 1492, 163, 12, 13, 0, 0, 717, + 0, 14, 1225, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 16, 0, 17, 18, 0, + 0, 1512, 711, 20, 711, 0, 711, 0, 0, 0, + 0, 0, 23, 0, 605, 0, 0, 0, 548, 0, + 0, 26, 0, 130, 131, 516, 0, 516, 0, 0, + 0, 0, 0, 0, 104, 0, 0, 606, 516, 0, + 104, 0, 904, 904, 904, 0, 0, 607, 0, 1119, + 254, 0, 0, 0, 0, 0, 0, 608, 0, 0, + 609, 610, 0, 7, 8, 9, 10, 0, 1267, 0, + 0, 0, 0, 0, 1225, 0, 0, 254, 0, 0, + 0, 104, 0, 104, 83, 199, 199, 1146, 0, 0, + 0, 0, 0, 0, 106, 0, 0, 0, 0, 711, + 1215, 21, 1217, 126, 134, 0, 0, 0, 247, 0, + 143, 143, 0, 143, 232, 83, 27, 28, 0, 0, + 0, 0, 83, 0, 0, 296, 8, 9, 10, 1146, + 709, 0, 0, 0, 0, 143, 254, 83, 0, 0, + 248, 0, 104, 0, 0, 234, 0, 0, 32, 0, + 0, 0, 244, 0, 0, 104, 0, 1248, 1035, 0, + 0, 0, 0, 21, 244, 0, 0, 104, 0, 0, + 247, 0, 0, 0, 0, 0, 0, 0, 27, 315, + 1205, 0, 0, 0, 0, 0, 0, 0, 1391, 1392, + 0, 0, 80, 0, 438, 438, 0, 0, 0, 0, + 0, 104, 248, 104, 0, 0, 0, 536, 537, 0, + 32, 0, 7, 8, 9, 10, 83, 0, 13, 0, + 143, 0, 0, 438, 143, 0, 0, 143, 143, 143, + 0, 104, 0, 0, 0, 1322, 516, 516, 0, 516, + 1326, 83, 0, 0, 0, 83, 0, 459, 461, 465, + 21, 143, 83, 711, 0, 7, 127, 128, 10, 0, + 0, 504, 0, 26, 0, 27, 28, 0, 0, 143, + 143, 143, 0, 296, 8, 9, 10, 1452, 0, 189, + 0, 0, 0, 0, 199, 199, 199, 199, 1146, 190, + 0, 1363, 199, 21, 0, 0, 0, 32, 143, 1470, + 1473, 0, 191, 0, 0, 0, 26, 0, 27, 28, + 0, 21, 0, 0, 0, 1146, 1146, 1146, 247, 0, + 0, 0, 30, 0, 0, 0, 27, 315, 0, 0, + 0, 0, 31, 0, 0, 143, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 33, 199, 0, 0, 0, + 507, 142, 0, 0, 0, 0, 0, 0, 32, 0, 0, 7, 8, 9, 10, 210, 211, 212, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 729, 730, 459, - 461, 465, 0, 200, 0, 741, 0, 0, 0, 18, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 21, - 0, 0, 0, 23, 0, 605, 0, 0, 459, 461, - 465, 0, 26, 0, 27, 28, 7, 8, 9, 10, - 210, 211, 212, 0, 0, 0, 0, 14, 940, 0, - 544, 544, 544, 0, 0, 0, 250, 0, 941, 1337, - 0, 628, 0, 0, 18, 78, 32, 0, 608, 20, - 0, 984, 610, 0, 21, 0, 0, 0, 23, 517, - 605, 0, 0, 0, 0, 0, 0, 26, 0, 27, - 28, 0, 0, 51, 51, 150, 0, 0, 0, 0, - 250, 0, 0, 189, 0, 0, 0, 0, 0, 0, - 78, 0, 0, 190, 0, 729, 730, 0, 741, 0, - 0, 32, 0, 0, 78, 0, 1407, 78, 0, 613, - 613, 613, 78, 0, 0, 0, 0, 1172, 0, 0, - 78, 0, 1331, 1332, 9, 10, 0, 127, 128, 0, - 0, 211, 212, 0, 0, 0, 0, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 0, 78, 0, - 78, 0, 78, 78, 78, 0, 0, 0, 78, 20, - 21, 0, 0, 78, 0, 200, 78, 250, 23, 0, - 605, 0, 0, 26, 0, 27, 28, 26, 51, 130, - 131, 1333, 78, 0, 0, 0, 0, 0, 0, 189, - 0, 0, 0, 606, 0, 0, 0, 0, 0, 190, - 0, 0, 0, 607, 0, 0, 0, 32, 255, 0, - 0, 0, 191, 608, 0, 0, 609, 610, 0, 0, - 0, 0, 0, 200, 0, 200, 0, 466, 466, 466, - 0, 0, 0, 200, 0, 0, 0, 0, 200, 0, - 0, 200, 0, 0, 0, 0, 465, 0, 0, 0, - 250, 0, 0, 0, 0, 0, 0, 7, 8, 9, - 10, 201, 12, 202, 0, 0, 0, 0, 14, 0, - 0, 51, 51, 150, 150, 150, 0, 250, 0, 51, - 0, 422, 16, 0, 17, 18, 0, 0, 0, 0, - 20, 0, 0, 0, 628, 21, 0, 0, 0, 23, - 0, 0, 1172, 1172, 1172, 0, 0, 0, 26, 0, - 27, 28, 0, 457, 203, 0, 459, 461, 465, 0, - 0, 0, 0, 0, 30, 78, 473, 8, 9, 0, - 163, 12, 13, 51, 31, 1529, 0, 14, 51, 0, - 51, 0, 32, 0, 0, 0, 0, 33, 0, 0, - 0, 16, 0, 17, 18, 0, 0, 866, 0, 20, - 0, 0, 0, 0, 78, 78, 78, 78, 23, 0, - 0, 613, 613, 0, 613, 0, 198, 26, 0, 130, - 131, 613, 0, 0, 0, 76, 0, 0, 0, 51, - 51, 0, 51, 0, 0, 0, 0, 0, 0, 0, - 200, 253, 0, 0, 257, 7, 127, 128, 10, 0, - 78, 141, 145, 0, 78, 0, 76, 0, 0, 0, - 0, 78, 78, 76, 78, 253, 0, 361, 51, 51, - 51, 0, 0, 0, 0, 0, 0, 0, 209, 944, - 0, 944, 944, 21, 613, 0, 0, 0, 0, 0, - 0, 7, 8, 9, 10, 78, 26, 78, 27, 28, - 0, 0, 78, 78, 78, 0, 0, 0, 0, 0, - 0, 0, 147, 0, 0, 0, 0, 0, 7, 8, - 9, 10, 148, 0, 242, 944, 0, 0, 0, 21, - 32, 0, 198, 0, 0, 149, 200, 200, 0, 200, - 0, 0, 26, 0, 27, 28, 0, 0, 1401, 0, - 198, 198, 198, 0, 0, 0, 21, 403, 189, 0, - 472, 406, 0, 0, 0, 408, 0, 0, 190, 26, - 0, 27, 28, 0, 0, 0, 32, 200, 0, 198, - 1172, 191, 76, 0, 0, 189, 76, 0, 7, 8, - 9, 10, 0, 209, 13, 190, 0, 0, 0, 0, - 517, 517, 517, 32, 0, 257, 0, 0, 191, 0, - 141, 145, 613, 0, 0, 0, 0, 0, 0, 253, - 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, - 0, 0, 734, 0, 628, 0, 0, 740, 0, 26, - 0, 27, 28, 0, 0, 0, 1331, 127, 128, 10, - 1172, 1172, 1172, 0, 0, 462, 0, 0, 0, 0, - 0, 0, 781, 0, 0, 463, 0, 0, 787, 0, - 78, 78, 78, 32, 51, 0, 505, 0, 464, 0, - 795, 796, 0, 797, 21, 613, 0, 613, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 613, 27, - 28, 0, 613, 613, 613, 1333, 0, 0, 0, 0, - 0, 253, 257, 30, 1174, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 78, 0, 944, 944, 1145, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 198, 0, 7, 8, 9, 10, 163, 12, 13, - 0, 0, 989, 0, 14, 78, 637, 0, 892, 893, - 0, 0, 0, 892, 0, 0, 0, 0, 16, 1145, - 17, 18, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 21, 0, 0, 0, 23, 0, 7, 8, 9, - 10, 0, 0, 504, 26, 0, 27, 28, 200, 198, - 0, 198, 0, 198, 198, 198, 0, 0, 0, 198, - 30, 0, 0, 0, 198, 688, 0, 198, 689, 0, - 31, 0, 0, 691, 0, 21, 0, 0, 32, 0, - 0, 76, 0, 33, 0, 0, 0, 0, 26, 0, - 27, 28, 0, 0, 7, 8, 9, 10, 78, 78, - 78, 78, 78, 0, 189, 0, 78, 0, 0, 406, - 0, 408, 0, 0, 190, 0, 0, 0, 0, 0, - 0, 0, 32, 0, 505, 866, 866, 191, 866, 1174, - 1174, 1174, 21, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 777, 0, 26, 0, 27, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 78, 189, 0, 0, 0, 78, 0, 78, 0, 0, - 0, 190, 0, 944, 944, 1145, 1145, 1145, 0, 32, - 0, 944, 0, 0, 191, 1054, 0, 1056, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, - 201, 12, 202, 0, 1145, 1145, 1145, 14, 0, 0, - 253, 257, 0, 0, 0, 0, 78, 78, 0, 78, - 0, 16, 0, 17, 18, 0, 198, 0, 0, 20, - 0, 0, 0, 0, 21, 200, 0, 0, 23, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 0, 27, - 28, 0, 0, 1404, 0, 78, 78, 78, 0, 1090, - 1091, 0, 1093, 30, 0, 198, 0, 198, 198, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 8, 9, 0, 33, 12, 13, 0, - 1111, 944, 944, 14, 944, 0, 0, 0, 0, 0, - 0, 7, 8, 9, 10, 0, 0, 16, 0, 17, - 0, 198, 0, 0, 0, 20, 0, 0, 0, 0, - 0, 0, 198, 198, 23, 198, 946, 0, 0, 0, - 200, 0, 200, 26, 0, 130, 131, 0, 0, 21, - 1146, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 257, 0, 26, 0, 27, 28, 0, 0, 0, 0, - 0, 0, 0, 198, 0, 0, 0, 1174, 462, 8, - 9, 0, 201, 12, 202, 990, 0, 0, 463, 14, - 0, 0, 688, 689, 0, 691, 32, 0, 0, 0, - 0, 464, 0, 16, 0, 17, 18, 0, 0, 0, - 0, 20, 0, 0, 0, 1189, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 777, 1194, 777, 26, - 0, 130, 131, 1033, 1040, 777, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 102, 1174, 1174, 1174, - 0, 0, 466, 0, 0, 121, 102, 0, 0, 0, - 0, 0, 102, 102, 0, 102, 0, 0, 0, 0, - 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 7, 8, 9, 10, 163, 12, 13, - 0, 0, 0, 0, 14, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 253, 257, 253, 0, 16, 0, - 17, 18, 1246, 0, 0, 0, 20, 0, 0, 0, - 0, 21, 466, 466, 466, 23, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, - 0, 198, 198, 1143, 0, 0, 200, 0, 253, 0, - 30, 1259, 0, 0, 0, 0, 385, 0, 121, 0, - 31, 0, 0, 0, 0, 102, 102, 0, 32, 0, - 0, 0, 102, 33, 102, 102, 102, 0, 412, 102, - 102, 102, 0, 0, 0, 1143, 565, 566, 567, 568, + 0, 0, 14, 244, 143, 0, 0, 1517, 438, 438, + 0, 438, 438, 0, 438, 0, 614, 618, 621, 18, + 0, 1437, 1438, 0, 20, 0, 0, 0, 0, 21, + 0, 199, 199, 23, 199, 605, 0, 0, 1448, 0, + 0, 0, 26, 0, 27, 28, 0, 0, 244, 0, + 0, 0, 604, 0, 143, 143, 620, 0, 941, 0, + 0, 629, 0, 0, 0, 83, 0, 0, 942, 0, + 199, 948, 199, 0, 0, 0, 32, 0, 608, 0, + 0, 985, 610, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 1484, 1485, 0, 0, 0, 666, + 0, 0, 0, 0, 0, 208, 216, 0, 244, 0, + 143, 244, 0, 1494, 1495, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 143, 0, 0, 143, 0, 0, + 0, 0, 143, 0, 0, 0, 438, 438, 0, 0, + 83, 7, 8, 9, 10, 0, 729, 242, 730, 0, + 459, 461, 465, 0, 0, 0, 0, 0, 0, 0, + 0, 741, 296, 390, 391, 10, 0, 0, 143, 0, + 143, 0, 143, 143, 143, 0, 0, 0, 143, 21, + 8, 9, 1146, 143, 12, 242, 143, 0, 0, 0, + 14, 0, 26, 0, 27, 28, 0, 0, 0, 0, + 21, 759, 83, 0, 16, 0, 17, 0, 189, 0, + 0, 0, 20, 26, 0, 27, 315, 0, 190, 0, + 0, 23, 0, 605, 0, 0, 32, 0, 0, 0, + 26, 191, 130, 131, 0, 438, 438, 438, 0, 0, + 244, 244, 244, 244, 0, 0, 606, 32, 0, 0, + 0, 0, 1146, 1146, 1146, 0, 607, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 608, 0, 0, 609, + 610, 104, 0, 0, 0, 0, 199, 0, 882, 884, + 7, 8, 9, 10, 163, 12, 13, 0, 8, 9, + 0, 14, 12, 242, 438, 438, 0, 0, 14, 0, + 244, 0, 143, 0, 0, 16, 0, 17, 18, 19, + 0, 0, 16, 20, 17, 0, 143, 143, 21, 620, + 20, 0, 23, 0, 0, 164, 905, 0, 0, 23, + 0, 26, 0, 27, 28, 0, 0, 0, 26, 629, + 130, 131, 0, 0, 0, 143, 946, 30, 614, 618, + 0, 621, 0, 0, 0, 0, 0, 31, 0, 0, + 0, 0, 438, 0, 0, 32, 0, 0, 0, 666, + 33, 0, 0, 0, 0, 34, 0, 126, 0, 0, + 0, 0, 0, 0, 143, 620, 143, 143, 234, 620, + 0, 0, 618, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 0, 141, 145, 760, 0, 7, 8, 761, 10, 163, - 12, 13, 0, 0, 198, 1346, 14, 0, 0, 1347, + 6, 759, 7, 8, 9, 10, 11, 12, 13, 729, + 730, 0, 741, 14, 0, 0, 0, 0, 0, 0, + 143, 0, 0, 0, 620, 0, 0, 16, 0, 17, + 18, 143, 143, 0, 143, 20, 0, 0, 0, 0, + 21, 0, 0, 0, 23, 0, 0, 426, 0, 0, + 1033, 0, 0, 26, 0, 27, 28, 0, 0, 29, + 0, 0, 134, 0, 0, 83, 0, 83, 0, 30, + 618, 0, 1036, 83, 83, 0, 0, 0, 0, 31, + 83, 127, 128, 244, 0, 211, 212, 32, 0, 244, + 0, 14, 33, 0, 0, 0, 143, 143, 143, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 0, 20, 0, 51, 0, 0, 0, 0, + 0, 0, 23, 0, 605, 1024, 1025, 9, 10, 0, + 0, 26, 0, 130, 131, 0, 0, 0, 0, 0, + 0, 51, 51, 1105, 150, 1106, 51, 606, 0, 0, + 0, 0, 0, 51, 0, 0, 1112, 607, 0, 0, + 882, 884, 0, 21, 0, 0, 51, 608, 51, 0, + 616, 610, 0, 0, 0, 0, 26, 0, 27, 28, + 0, 143, 0, 143, 1026, 0, 0, 0, 0, 0, + 244, 250, 189, 0, 143, 0, 244, 0, 905, 905, + 905, 0, 190, 882, 884, 629, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 191, 0, 0, 0, 459, + 461, 465, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 575, 576, 577, 578, 244, 0, 244, + 0, 143, 143, 620, 392, 392, 0, 51, 0, 0, + 0, 51, 0, 250, 0, 51, 0, 0, 150, 150, + 150, 0, 0, 465, 0, 127, 128, 0, 0, 211, + 212, 0, 51, 0, 0, 14, 51, 0, 0, 0, + 0, 0, 51, 51, 0, 905, 0, 0, 0, 0, + 0, 0, 1033, 0, 0, 0, 0, 20, 244, 0, + 51, 51, 150, 0, 0, 0, 23, 0, 605, 759, + 250, 244, 0, 0, 1036, 26, 0, 130, 131, 0, + 0, 0, 0, 244, 7, 8, 9, 10, 0, 51, + 13, 606, 8, 9, 0, 0, 12, 13, 0, 0, + 0, 607, 14, 0, 0, 0, 0, 0, 83, 0, + 0, 608, 0, 0, 609, 610, 16, 244, 17, 244, + 0, 0, 21, 0, 20, 0, 51, 0, 0, 0, + 0, 0, 0, 23, 0, 26, 0, 27, 28, 0, + 0, 0, 26, 0, 130, 131, 0, 244, 0, 0, + 0, 462, 143, 143, 0, 143, 0, 0, 0, 0, + 0, 463, 1105, 1106, 882, 884, 0, 0, 0, 32, + 1112, 0, 0, 0, 464, 0, 0, 0, 729, 730, + 459, 461, 465, 0, 0, 0, 741, 0, 0, 0, + 0, 0, 0, 882, 884, 0, 544, 0, 0, 0, + 143, 143, 143, 143, 620, 0, 0, 0, 143, 459, + 461, 465, 0, 392, 0, 759, 0, 0, 0, 0, + 0, 250, 0, 0, 0, 0, 51, 0, 0, 0, + 0, 905, 905, 905, 0, 0, 7, 8, 9, 10, + 1338, 0, 504, 0, 0, 0, 0, 759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 17, 18, 19, 472, 0, 0, 20, -522, - 0, 0, 0, 21, 0, 0, 0, 23, 762, 0, - 164, 0, 0, 0, 1363, 0, 26, 0, 27, 28, - 0, 0, 763, 0, 764, 487, 102, 0, 0, 0, - 0, 0, 30, 0, 1033, 0, 0, 0, 0, 0, - 0, 0, 31, 0, 0, 0, 0, 102, 0, 0, - 32, 0, 0, 0, 0, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 777, 0, 0, 0, - 0, -522, 0, 0, 0, 0, 0, 0, 253, 0, - 0, 0, 0, 0, 0, 0, 102, 0, 1419, 0, - 0, 0, 1420, 0, 0, 0, 0, 0, 0, 198, - 198, 198, 198, 1143, 0, 1258, 0, 198, 0, 0, - 0, 0, 0, 0, 1438, 1439, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1143, 1143, 1143, 0, 102, 0, 102, 102, 562, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 0, 0, 0, 0, 406, - 408, 198, 0, 0, 0, 0, 0, 505, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1461, - 0, 102, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 0, 102, - 0, 0, 0, 0, 0, 0, 102, 0, 0, 102, - 0, 0, 0, 0, 102, 0, 0, 198, 198, 0, - 198, 1338, 0, 0, 0, 0, 1338, 0, 777, 1462, - 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 392, 0, 143, 0, 0, 0, 0, 143, 0, 0, + 0, 51, 0, 0, 21, 0, 0, 0, 0, 1105, + 1106, 0, 1112, 0, 0, 51, 0, 26, 51, 27, + 28, 0, 0, 51, 0, 729, 730, 0, 741, 0, + 0, 51, 0, 189, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 190, 0, 0, 0, 143, 143, 0, + 143, 32, 0, 0, 0, 0, 191, 0, 0, 51, + 0, 51, 0, 150, 150, 150, 0, 0, 0, 51, + 0, 0, 0, 0, 51, 1395, 0, 51, 1332, 1333, + 9, 10, 0, 0, 0, 0, 143, 620, 143, 0, + 0, 0, 0, 51, 0, 0, 0, 7, 8, 9, + 10, 201, 12, 202, 0, 244, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 0, 0, 16, 544, 17, 18, 544, 0, 0, 26, + 20, 27, 28, 0, 0, 21, 0, 1334, 0, 23, + 0, 544, 544, 544, 0, 189, 0, 0, 26, 0, + 27, 28, 0, 0, 203, 190, 544, 0, 0, 0, + 0, 0, 78, 32, 30, 0, 0, 0, 191, 0, + 0, 0, 0, 0, 31, 0, 465, 0, 0, 0, + 0, 0, 32, 0, 0, 0, 0, 33, 78, 78, + 0, 78, 0, 78, 0, 0, 0, 0, 905, 0, + 78, 0, 0, 0, 250, 1332, 127, 128, 10, 0, + 0, 0, 0, 78, 0, 78, 0, 544, 561, 562, + 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 51, 0, 0, 0, + 0, 0, 0, 21, 0, 0, 459, 461, 465, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 392, 0, 0, 0, 1334, 0, 0, 392, 905, 905, + 905, 0, 30, 0, 0, 51, 51, 51, 51, 0, + 0, 0, 31, 0, 0, 0, 0, 244, 198, 0, + 32, 0, 143, 0, 78, 33, 0, 0, 78, 0, + 0, 0, 78, 0, 0, 78, 78, 78, 0, 0, + 8, 9, 0, 253, 12, 13, 257, 0, 0, 78, + 14, 51, 0, 78, 0, 51, 0, 0, 0, 78, + 78, 0, 51, 51, 16, 51, 17, 253, 0, 361, + 0, 0, 20, 0, 0, 0, 0, 78, 78, 78, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 130, 131, 588, 0, 51, 0, 51, 155, + 0, 0, 0, 51, 51, 51, 78, 7, 127, 128, + 10, 51, 0, 7, 8, 9, 10, 163, 12, 13, + 0, 200, 717, 0, 14, 0, 0, 0, 0, 589, + 0, 0, 0, 544, 198, 0, 0, 0, 16, 0, + 17, 18, 0, 78, 0, 21, 20, 0, 0, 0, + 0, 21, 198, 198, 198, 23, 0, 605, 26, 0, + 27, 28, 472, 0, 26, 0, 27, 28, 0, 0, + 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, + 1142, 198, 0, 0, 148, 0, 0, 0, 0, 0, + 1143, 0, 32, 0, 0, 0, 0, 149, 32, 0, + 608, 0, 0, 1144, 610, 0, 0, 257, 7, 8, + 9, 10, 0, 155, 155, 155, 0, 0, 0, 0, + 0, 253, 0, 0, 0, 0, 0, 0, 0, 544, + 544, 544, 0, 0, 0, 250, 0, 200, 0, 628, + 0, 0, 0, 78, 0, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 200, 466, 0, 26, + 0, 27, 28, 0, 0, 1402, 0, 0, 0, 0, + 0, 0, 51, 51, 150, 189, 0, 0, 0, 250, + 0, 0, 0, 0, 200, 190, 0, 0, 78, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 191, 0, + 0, 0, 78, 0, 0, 78, 0, 0, 0, 0, + 78, 0, 0, 253, 257, 0, 1174, 0, 78, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 0, 0, 0, 0, 198, 0, 198, 0, - 0, 0, 0, 1432, 0, -475, -475, -475, -475, -475, - -475, -475, 0, 0, -475, 0, -475, 688, 689, 0, - 691, 102, 0, 752, 0, 0, 0, -475, 0, -475, - 0, 0, 0, -475, 0, 0, 0, 0, -475, 0, - 0, 0, 0, -475, 0, 0, 0, -475, 102, -475, - 0, 0, 0, 0, 0, 0, -475, 1406, -475, -475, - -475, -475, -475, 0, -475, -475, -475, -475, -475, -475, - -475, -475, -475, -475, -475, -475, -475, -475, -475, -475, - -475, -475, -475, -475, -475, -475, -475, 0, -475, -475, - -475, 0, -475, -475, -475, -475, -475, -475, 0, -475, - 0, 0, 0, 0, 1433, 0, 0, 0, 1143, -475, - -475, -475, 0, -475, 760, 0, 7, 8, 761, 10, - 163, 12, 13, 0, 102, 0, 0, 14, 0, 0, - 0, 0, 0, 0, 0, 102, 102, 0, 102, 102, - 0, 16, 0, 17, 18, 19, 0, 0, 0, 20, - 0, 0, 0, 0, 21, 0, 0, 0, 23, 762, - 0, 164, 0, 0, 0, 0, 0, 26, 0, 27, - 28, 0, 0, 763, 0, 764, 0, 0, 1143, 1143, - 1143, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 0, 102, 0, 31, 0, 0, 0, 0, 102, 121, - 0, 32, 198, 0, 0, 0, 33, 0, 0, 0, - 231, 539, 0, 296, 8, 9, 10, 163, 12, 297, - 298, 299, 717, 300, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 752, 0, 0, 0, 0, 16, 301, - 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, - 306, 21, 307, 308, 0, 23, 0, 605, 0, 309, - 310, 311, 312, 313, 26, 0, 27, 315, -308, 0, - 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, - 897, 0, 0, 0, 0, 0, 0, 0, 319, 320, - 898, 752, 0, 0, 102, 0, 322, 323, 324, 0, - 608, 0, 0, 899, 610, 0, 0, 0, 0, 0, + 577, 578, 7, 8, 9, 10, 0, 0, 0, 365, + 367, 0, 0, 0, 0, 51, 78, 0, 78, 0, + 78, 78, 78, 0, 0, 0, 78, 0, 0, 0, + 517, 78, 0, 198, 78, 0, 250, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 78, 0, 0, 26, 0, 27, 28, 0, 0, 0, + 0, -383, 8, 9, -383, -383, 12, 242, 0, 189, + 0, 0, 14, 7, 8, 9, 10, 0, 0, 190, + 613, 613, 613, 0, 0, 0, 16, 32, 17, -383, + 0, 198, 191, 198, 20, 198, 198, 198, 0, -383, + 0, 198, 0, 23, 0, 605, 198, 0, 0, 198, + 0, 21, 26, 0, 130, 131, 0, 0, 0, 0, + 250, 0, 0, 0, 26, 0, 27, 28, 606, 8, + 9, 0, 163, 12, 13, 0, 200, 717, 607, 14, + 462, 51, 51, 150, 150, 150, -383, 250, 608, 51, + 463, 609, 610, 16, 0, 17, 18, 0, 32, 0, + 0, 20, 628, 464, 0, 0, 0, 0, 0, 0, + 23, 0, 1174, 1174, 1174, 0, 0, 0, 0, 26, + 0, 130, 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 78, 200, 0, 200, 0, 466, 466, + 466, 0, 0, 51, 200, 0, 0, 0, 51, 200, + 0, 0, 200, 0, 0, 0, 162, 0, 7, 8, + 9, 10, 163, 12, 13, 0, 0, 547, 0, 14, + 0, 255, 78, 78, 78, 78, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, + 0, 20, 253, 257, 0, 0, 21, 0, 51, 51, + 23, 51, 0, 164, 0, 0, 0, 0, 198, 26, + 0, 27, 28, 0, 0, 0, 0, 0, 78, 0, + 0, 0, 78, 0, 0, 30, 0, 0, 0, 78, + 78, 0, 78, 0, 0, 31, 0, 51, 51, 51, + 673, 0, 0, 32, 422, 0, 0, 198, 33, 198, + 198, 0, 0, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 78, 0, 78, 0, 0, 867, 0, + 78, 78, 78, 0, 0, 0, 457, 0, 78, 0, + 0, 0, 613, 613, 0, 613, 0, 0, 0, 473, + 8, 9, 613, 198, 12, 13, 0, 0, 719, 0, + 14, 0, 0, 0, 198, 198, 0, 198, 0, 0, + 0, 200, 0, 0, 16, 0, 17, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 23, 257, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 130, 131, 0, 198, 0, 0, 0, 1174, + 945, 0, 945, 945, 0, 613, 0, 0, 0, 0, + 0, 0, 0, 0, 801, 0, 0, 804, 0, 0, + 0, 806, 807, 809, 810, 811, 0, 0, 0, 858, + 0, 0, 0, 0, 547, 8, 9, 0, 163, 12, + 13, 0, 0, 0, 0, 14, 945, 828, 0, 0, + 0, 0, 0, 628, 0, 0, 0, 200, 200, 16, + 200, 17, 18, 0, 0, 0, 0, 20, 0, 1174, + 1174, 1174, 0, 0, 0, 0, 667, 0, 0, 164, + 0, 0, 0, 0, 0, 26, 0, 130, 131, 78, + 78, 78, 0, 51, 0, 0, 0, 0, 200, 0, + 0, 885, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 0, 0, 0, 0, 0, 0, 102, 102, 102, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, - 0, 1409, 0, 1269, 1270, 1271, 10, 163, 12, 297, - 298, 299, 0, 300, 14, 1272, 0, 1273, 1274, 1275, - 1276, 1277, 1278, 1279, 1280, 1281, 1282, 15, 16, 301, - 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, - 306, 21, 307, 308, 1283, 23, 1284, 0, 0, 309, - 310, 311, 312, 313, 26, 0, 1285, 315, 704, 0, - 1286, 316, 0, 0, 0, 0, 0, 317, 0, 0, - 318, 0, 102, 0, 102, 0, 0, 0, 319, 320, - 321, 0, 0, 0, 0, 102, 322, 323, 324, 0, - 0, 0, 0, 325, 0, 1287, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1410, - 326, 1268, 0, 1269, 1270, 1271, 10, 163, 12, 297, - 298, 299, 0, 300, 14, 1272, 0, 1273, 1274, 1275, - 1276, 1277, 1278, 1279, 1280, 1281, 1282, 15, 16, 301, - 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, - 306, 21, 307, 308, 1283, 23, 1284, 0, 0, 309, - 310, 311, 312, 313, 26, 0, 1285, 315, 704, 0, - 1286, 316, 0, 0, 0, 0, 0, 317, 0, 0, - 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, - 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, - 752, 0, 0, 325, 0, 1287, 0, 0, 0, 0, + 0, 0, 517, 517, 517, 0, 0, 253, 257, 253, + 0, 0, 0, 1176, 613, 0, 0, 0, 0, 0, + 0, 0, 76, 563, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 0, + 0, 0, 78, 0, 198, 198, 1145, 0, 141, 145, + 0, 253, 0, 76, 0, 0, 0, 611, 611, 611, + 76, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 209, 78, 0, 0, 0, + 0, 0, 0, 0, 0, 734, 0, 613, 1145, 613, + 740, 0, 0, 0, 0, 0, 673, 0, 0, 0, + 613, 0, 0, 0, 613, 613, 613, 0, 0, 0, + 0, 0, 0, 0, 0, 782, 0, 198, 0, 0, + 0, 788, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 796, 797, 0, 798, 0, 472, 0, + 0, 0, 0, 0, 0, 0, 0, 945, 945, 1147, + 0, 0, 0, 0, 403, 719, 0, 0, 406, 0, + 0, 719, 408, 0, 0, 0, 0, 0, 78, 78, + 78, 78, 78, 0, 0, 0, 78, 0, 0, 76, + 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, + 209, 1147, 0, 0, 0, 0, 0, 0, 0, 1176, + 1176, 1176, 0, 0, 0, 0, 0, 141, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 0, 0, 0, 0, 0, 0, 102, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 200, 0, 253, 0, 0, 0, 0, 0, 0, 1086, + 78, 893, 894, 0, 0, 78, 893, 0, 0, 0, + 0, 0, 0, 198, 198, 198, 198, 1145, 0, 1259, + 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 828, 0, 0, 0, 0, 0, 719, 0, + 0, 0, 885, 505, 1145, 1145, 1145, 0, 0, 0, + 0, 0, 0, 0, 0, 78, 78, 0, 78, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 867, 867, + 0, 867, 0, 0, 0, 198, 0, 0, 0, 673, + 0, 1138, 0, 0, 0, 885, 0, 0, 0, 611, + 611, 0, 611, 0, 78, 78, 78, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 539, 0, 7, 8, 9, 10, 163, 12, 297, - 298, 299, 717, 300, 14, 0, 1222, 0, 0, 0, - 0, 0, 102, 102, 0, 102, 0, 0, 16, 301, - 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, - 306, 21, 307, 308, 0, 23, 0, 605, 0, 309, - 310, 311, 312, 313, 26, 0, 27, 28, -308, 0, - 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, - 1169, 0, 0, 0, 0, 0, 0, 0, 319, 320, - 1170, 0, 0, 0, 0, 752, 322, 323, 324, 0, - 608, 0, 0, 1171, 610, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 945, 945, 1147, 1147, + 1147, 0, 0, 0, 945, 0, 0, 885, 0, 0, + 198, 198, 0, 198, 0, 0, 0, 0, 0, 0, + 1180, 0, 0, 637, 0, 0, 1186, 1147, 1147, 1147, + 0, 0, 0, 719, 0, 0, 0, 611, 0, 611, + 611, 0, 611, 0, 0, 719, 0, 0, 0, 198, + 0, 198, 0, 102, 0, 0, 0, 0, 200, 1056, + 0, 1058, 121, 102, 0, 0, 0, 0, 0, 102, + 102, 0, 102, 0, 0, 0, 0, 0, 0, 719, + 0, 719, 688, 611, 0, 689, 1176, 0, 0, 0, + 691, 0, 0, 0, 0, 0, 0, 0, 76, 0, + 0, 0, 0, 0, 231, 0, 0, 0, 0, 1233, + 0, 0, 0, 945, 945, 0, 945, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 406, 0, 408, 0, + 0, 0, 0, 1092, 1093, 0, 1095, 0, 0, 0, + 0, 505, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 200, 0, 200, 0, 1176, 1176, 1176, 0, + 777, 1145, 0, 385, 1113, 121, 885, 0, 0, 0, + 0, 611, 102, 102, 0, 0, 0, 0, 0, 102, + 78, 102, 102, 102, 0, 412, 102, 102, 102, 8, + 9, 0, 163, 12, 13, 885, 0, 1530, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 0, 0, 0, 0, 0, 716, 752, 296, 8, + 0, 0, 0, 16, 1148, 17, 18, 0, 0, 0, + 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, + 23, 1145, 1145, 1145, 0, 0, 0, 0, 0, 26, + 0, 130, 131, 0, 611, 0, 611, 0, 0, 0, + 0, 0, 0, 0, 0, 198, 0, 611, 0, 0, + 0, 902, 902, 902, 466, 7, 8, 9, 10, 163, + 12, 13, 487, 102, 990, 0, 14, 0, 0, 1191, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 1196, 17, 18, 102, 0, 0, 0, 20, 0, + 0, 0, 0, 21, 611, 611, 611, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 8, 9, 0, 201, 12, 202, 0, 0, 0, 0, + 14, 0, 30, 102, 466, 466, 466, 1180, 0, 0, + 0, 0, 31, 947, 16, 0, 17, 18, 902, 0, + 32, 0, 20, 0, 0, 33, 0, 0, 200, 0, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 130, 131, 0, 0, 0, 1247, 0, 0, + 0, 102, 0, 102, 102, 1024, 8, 761, 10, 201, + 12, 202, 991, 0, 0, 0, 14, 0, 0, 688, + 689, 0, 691, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 17, 18, 0, 0, 1260, 0, 20, 0, + 0, 0, 0, 21, 0, 0, 0, 23, 102, 0, + 0, 0, 0, 777, 0, 777, 26, 0, 27, 28, + 1034, 1041, 777, 0, 1026, 0, 102, 0, 777, 0, + 0, 0, 30, 102, 0, 0, 102, 0, 0, 0, + 0, 102, 31, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 33, 0, 0, 0, 1347, + 0, 0, 0, 1348, 0, 0, 0, 0, 0, 7, + 8, 9, 10, 163, 12, 13, 0, 0, 0, 0, + 14, 0, 547, 611, 611, 611, 611, 611, 0, 0, + 0, 611, 0, 0, 16, 0, 17, 18, 1364, 673, + 0, 0, 20, 0, 0, 0, 0, 21, 102, 0, + 752, 23, 0, 0, 902, 902, 902, 0, 0, 0, + 26, 0, 27, 28, 0, 0, 760, 0, 7, 8, + 761, 10, 163, 12, 13, 102, 30, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 16, 32, 17, 18, 19, 0, 33, + 0, 20, -521, 0, 0, 0, 21, 0, 0, 0, + 23, 762, 1420, 164, 0, 0, 1421, 0, 0, 26, + 0, 27, 28, 0, 0, 763, 1462, 764, 0, 141, + 145, 0, 0, 0, 0, 30, 0, 0, 1439, 1440, + 611, 611, 0, 611, 0, 31, 0, 0, 0, 0, + 0, 102, 0, 32, 0, 0, 0, 0, 33, 0, + 0, 0, 102, 102, 0, 102, 102, 0, 0, 0, + 0, 0, 0, 0, -521, 0, 1463, 557, 558, 559, + 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 0, + 0, 0, 1034, 0, 0, 0, 0, 0, 0, 1433, + 0, -475, -475, -475, -475, -475, -475, -475, 102, 0, + -475, 0, -475, 0, 0, 102, 121, 0, 0, 0, + 0, 0, 0, -475, 0, -475, 777, 231, 0, -475, + 0, 0, 0, 0, -475, 0, 0, 0, 0, -475, + 0, 0, 0, -475, 0, -475, 0, 0, 0, 0, + 752, 0, -475, 0, -475, -475, -475, -475, -475, 0, + -475, -475, -475, -475, -475, -475, -475, -475, -475, -475, + -475, -475, -475, -475, -475, -475, -475, -475, -475, -475, + -475, -475, -475, 0, -475, -475, -475, 0, -475, -475, + -475, -475, -475, -475, 0, -475, 0, 0, 0, 0, + 1434, 0, 0, 0, 0, -475, -475, -475, 752, -475, + 0, 102, 0, 0, 0, 0, 0, 0, 406, 408, + 0, 0, 0, 0, 0, 0, 505, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 102, 102, 102, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, + 0, 0, 539, 0, 296, 8, 9, 10, 163, 12, + 297, 298, 299, 717, 300, 14, 0, 0, 0, 0, + 1339, 0, 0, 0, 0, 1339, 0, 0, 0, 16, + 301, 17, 18, 19, 0, 302, 303, 20, 0, 304, + 305, 306, 21, 307, 308, 0, 23, 0, 605, 0, + 309, 310, 311, 312, 313, 26, 0, 27, 315, -308, + 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, + 102, 898, 102, 0, 0, 688, 689, 0, 691, 319, + 320, 899, 0, 102, 0, 0, 0, 322, 323, 324, + 0, 608, 0, 0, 900, 610, 0, 0, 0, 0, + 1410, 0, 1270, 1271, 1272, 10, 163, 12, 297, 298, + 299, 326, 300, 14, 1273, 1407, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 15, 16, 301, 17, + 18, 19, 0, 302, 303, 20, 0, 304, 305, 306, + 21, 307, 308, 1284, 23, 1285, 0, 0, 309, 310, + 311, 312, 313, 26, 0, 1286, 315, 704, 0, 1287, + 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, + 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 325, 0, 1288, 0, 0, 0, 752, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1411, 326, + 1269, 0, 1270, 1271, 1272, 10, 163, 12, 297, 298, + 299, 0, 300, 14, 1273, 102, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 15, 16, 301, 17, + 18, 19, 0, 302, 303, 20, 0, 304, 305, 306, + 21, 307, 308, 1284, 23, 1285, 0, 0, 309, 310, + 311, 312, 313, 26, 0, 1286, 315, 704, 0, 1287, + 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, + 0, 102, 102, 0, 102, 0, 0, 319, 320, 321, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 325, 0, 1288, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 0, 0, 539, 0, 7, 8, 9, 10, 163, 12, + 297, 298, 299, 717, 300, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 752, 0, 0, 0, 0, 16, + 301, 17, 18, 19, 0, 302, 303, 20, 0, 304, + 305, 306, 21, 307, 308, 0, 23, 0, 605, 0, + 309, 310, 311, 312, 313, 26, 752, 27, 28, -308, + 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, + 0, 1171, 0, 0, 102, 0, 102, 0, 0, 319, + 320, 1172, 0, 0, 0, 0, 0, 322, 323, 324, + 0, 608, 0, 0, 1173, 610, 716, 0, 296, 8, 9, 10, 163, 12, 297, 298, 299, 717, 300, 14, - 0, 0, 0, 0, 0, 102, 0, 102, 0, 0, + 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, 26, 0, 27, 315, 0, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, - 0, 322, 323, 324, 0, 0, 0, 830, 325, 296, + 0, 322, 323, 324, 0, 0, 0, 831, 325, 296, 8, 9, 10, 163, 12, 297, 298, 299, 0, 300, - 14, 0, 0, -791, 0, 326, 0, 0, 0, 0, + 14, 0, 0, -792, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, - 26, 0, 27, 315, 1506, 0, -781, 316, 0, 0, + 26, 0, 27, 315, 1507, 0, -782, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, 707, 325, - 818, 819, 820, 10, 0, 12, 521, 298, 299, 0, + 819, 820, 821, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, - 313, 26, 0, 821, 822, 708, 0, 0, 316, 0, + 313, 26, 0, 822, 823, 708, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, - 325, 823, 707, 0, 818, 819, 820, 10, 0, 12, - 521, 298, 299, 0, 300, 14, 976, 326, 0, 0, + 325, 824, 707, 0, 819, 820, 821, 10, 0, 12, + 521, 298, 299, 0, 300, 14, 977, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, - 309, 310, 311, 312, 313, 26, 0, 821, 822, 708, + 309, 310, 311, 312, 313, 26, 0, 822, 823, 708, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, - 0, 0, 0, 0, 325, 823, 707, 0, 818, 819, - 820, 10, 0, 12, 521, 298, 299, 0, 300, 14, + 0, 0, 0, 0, 325, 824, 707, 0, 819, 820, + 821, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, 26, - 0, 821, 822, 708, 0, 0, 316, 0, 0, 0, + 0, 822, 823, 708, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, - 0, 322, 323, 324, 0, 0, 0, 707, 325, 818, - 819, 820, 10, 0, 12, 521, 298, 299, 0, 300, + 0, 322, 323, 324, 0, 0, 0, 707, 325, 819, + 820, 821, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, -479, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, - 26, 0, 821, 822, 708, 0, 0, 316, 0, 0, + 26, 0, 822, 823, 708, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, 707, 325, 296, 8, 9, 10, 0, 12, 521, 298, 299, 0, - 300, 14, 0, 0, 0, 1307, 326, 0, 0, 0, + 300, 14, 0, 0, 0, 1308, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, @@ -2140,7 +2113,7 @@ static const short yytable[] = { 59, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, - 325, 0, 539, 0, 296, 8, 9, 10, 1311, 12, + 325, 0, 539, 0, 296, 8, 9, 10, 1312, 12, 297, 298, 299, 0, 300, 14, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, @@ -2158,13 +2131,13 @@ static const short yytable[] = { 59, 708, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, - 324, 0, 0, 0, 830, 325, 296, 8, 9, 10, + 324, 0, 0, 0, 831, 325, 296, 8, 9, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, 26, 0, 27, - 315, 0, 0, 0, 316, -781, 0, 0, 0, 0, + 315, 0, 0, 0, 316, -782, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, 539, 325, 7, 8, 9, @@ -2174,9 +2147,9 @@ static const short yytable[] = { 59, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, 26, 0, 27, 28, -308, 0, 0, 316, 0, 0, 0, 0, - 0, 317, 0, 0, 1477, 0, 0, 0, 0, 0, - 0, 0, 319, 320, 1478, 0, 0, 0, 0, 0, - 322, 323, 324, 0, 0, 0, 1558, 1479, 296, 8, + 0, 317, 0, 0, 1478, 0, 0, 0, 0, 0, + 0, 0, 319, 320, 1479, 0, 0, 0, 0, 0, + 322, 323, 324, 0, 0, 0, 1559, 1480, 296, 8, 9, 10, 0, 12, 297, 298, 299, 0, 300, 14, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, @@ -2185,7 +2158,7 @@ static const short yytable[] = { 59, 0, 27, 315, 0, 0, -194, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, - 0, 322, 323, 324, 0, 0, 0, 830, 325, 296, + 0, 322, 323, 324, 0, 0, 0, 831, 325, 296, 8, 9, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, @@ -2196,12 +2169,12 @@ static const short yytable[] = { 59, 0, 12, 13, 0, 319, 320, 321, 14, 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, 325, 0, 16, 0, 17, 0, 0, 0, 0, 0, 20, - 0, 260, 261, 0, -781, 0, 326, 0, 23, 0, + 0, 260, 261, 0, -782, 0, 326, 0, 23, 0, 262, 0, 0, 0, 0, 0, 0, 26, 0, 130, 131, 0, 263, 0, 0, 0, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, 285, - 286, 287, 0, 0, 288, 0, 918, 289, 296, 8, + 286, 287, 0, 0, 288, 0, 919, 289, 296, 8, 9, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, @@ -2210,7 +2183,7 @@ static const short yytable[] = { 59, 0, 27, 315, 0, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, - 0, 322, 323, 324, 0, 0, 0, 920, 325, 296, + 0, 322, 323, 324, 0, 0, 0, 921, 325, 296, 8, 9, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, @@ -2219,7 +2192,7 @@ static const short yytable[] = { 59, 26, 0, 27, 315, 0, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, - 0, 0, 322, 323, 324, 0, 0, 0, 1490, 325, + 0, 0, 322, 323, 324, 0, 0, 0, 1491, 325, 296, 8, 9, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, @@ -2238,8 +2211,15 @@ static const short yytable[] = { 59, 317, 0, 760, 318, 7, 8, 761, 10, 163, 12, 13, 319, 320, 321, 0, 14, 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, 325, 0, 0, 16, + 0, 17, 18, 19, 0, 0, 0, 20, -522, 0, + 0, 0, 21, 326, 870, 0, 23, 762, 0, 164, + 0, 0, 0, 0, 0, 26, 0, 27, 28, 0, + 0, 763, 0, 764, 0, 0, 0, 0, 0, 0, + 0, 30, 760, 0, 7, 8, 761, 10, 163, 12, + 13, 31, 0, 0, 0, 14, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, 0, 20, -524, 0, - 0, 0, 21, 326, 869, 0, 23, 762, 0, 164, + -522, 0, 21, 0, 0, 0, 23, 762, 0, 164, 0, 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, 763, 0, 764, 0, 0, 0, 0, 0, 0, 0, 30, 760, 0, 7, 8, 761, 10, 163, 12, @@ -2251,89 +2231,89 @@ static const short yytable[] = { 59, 0, 763, 0, 764, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 32, - 0, 0, 0, 0, 33, 0, 0, 1269, 1270, 1271, - 10, 163, 12, 297, 298, 299, 0, 300, 14, 1272, - -523, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, - 1282, 15, 16, 301, 17, 18, 19, 0, 302, 303, - 20, 0, 304, 305, 306, 21, 307, 308, 1283, 23, - 1284, 0, 0, 309, 310, 311, 312, 313, 26, 0, - 1285, 315, 704, 0, 1286, 316, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 1270, 1271, 1272, + 10, 163, 12, 297, 298, 299, 0, 300, 14, 1273, + -523, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 1283, 15, 16, 301, 17, 18, 19, 0, 302, 303, + 20, 0, 304, 305, 306, 21, 307, 308, 1284, 23, + 1285, 0, 0, 309, 310, 311, 312, 313, 26, 0, + 1286, 315, 704, 0, 1287, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, - 322, 323, 324, 0, 0, 0, 0, 325, 0, 1287, + 322, 323, 324, 0, 0, 0, 0, 325, 0, 1288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1414, 326, 1269, 1270, 1271, 10, 163, - 12, 297, 298, 299, 0, 300, 14, 1272, 0, 1273, - 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 15, + 0, 0, 0, 1415, 326, 1270, 1271, 1272, 10, 163, + 12, 297, 298, 299, 0, 300, 14, 1273, 0, 1274, + 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 15, 16, 301, 17, 18, 19, 0, 302, 303, 20, 0, - 304, 305, 306, 21, 307, 308, 1283, 23, 1284, 0, - 0, 309, 310, 311, 312, 313, 26, 0, 1285, 315, - 704, 0, 1286, 316, 0, 0, 0, 0, 0, 317, + 304, 305, 306, 21, 307, 308, 1284, 23, 1285, 0, + 0, 309, 310, 311, 312, 313, 26, 0, 1286, 315, + 704, 0, 1287, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, - 324, 0, 0, 0, 0, 325, 0, 1287, 0, 1269, - 1270, 1271, 10, 163, 12, 297, 298, 299, 0, 300, - 14, 1272, 326, 1273, 1274, 1275, 1276, 1277, 1278, 1279, - 1280, 1281, 1282, 15, 16, 301, 17, 18, 19, 0, + 324, 0, 0, 0, 0, 325, 0, 1288, 0, 1270, + 1271, 1272, 10, 163, 12, 297, 298, 299, 0, 300, + 14, 1273, 326, 1274, 1275, 1276, 1277, 1278, 1279, 1280, + 1281, 1282, 1283, 15, 16, 301, 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, - 1283, 23, 1284, 0, 0, 309, 310, 311, 312, 313, - 26, 0, 1285, 315, 1535, 0, 1286, 316, 0, 0, + 1284, 23, 1285, 0, 0, 309, 310, 311, 312, 313, + 26, 0, 1286, 315, 1536, 0, 1287, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, 325, - 0, 1287, 0, 1269, 1270, 1271, 10, 163, 12, 297, - 298, 299, 0, 300, 14, 1272, 326, 1273, 1274, 1275, - 1276, 1277, 1278, 1279, 1280, 1281, 1282, 15, 16, 301, + 0, 1288, 0, 1270, 1271, 1272, 10, 163, 12, 297, + 298, 299, 0, 300, 14, 1273, 326, 1274, 1275, 1276, + 1277, 1278, 1279, 1280, 1281, 1282, 1283, 15, 16, 301, 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, - 306, 21, 307, 308, 1283, 23, 1284, 0, 0, 309, - 310, 311, 312, 313, 26, 0, 1285, 315, 0, 0, - 1286, 316, 0, 0, 0, 0, 0, 317, 0, 0, + 306, 21, 307, 308, 1284, 23, 1285, 0, 0, 309, + 310, 311, 312, 313, 26, 0, 1286, 315, 0, 0, + 1287, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, - 0, 0, 0, 325, 0, 1287, 296, 8, 9, 10, + 0, 0, 0, 325, 0, 1288, 296, 8, 9, 10, 163, 12, 297, 298, 299, 717, 300, 14, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 605, 0, 309, 310, 311, 312, 313, 26, 0, 27, 315, 0, 0, 0, 316, 0, 0, 0, 0, 0, - 317, 0, 0, 897, 0, 0, 0, 0, 0, 0, - 0, 319, 320, 898, 0, 0, 0, 0, 0, 322, - 323, 324, 0, 608, 0, 0, 899, 610, 7, 8, + 317, 0, 0, 898, 0, 0, 0, 0, 0, 0, + 0, 319, 320, 899, 0, 0, 0, 0, 0, 322, + 323, 324, 0, 608, 0, 0, 900, 610, 7, 8, 9, 10, 163, 12, 297, 298, 299, 717, 300, 14, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 18, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 605, 0, 309, 310, 311, 312, 313, 26, 0, 27, 28, 0, 0, 0, 316, 0, 0, 0, - 0, 0, 317, 0, 0, 1169, 0, 0, 0, 0, - 0, 0, 0, 319, 320, 1170, 0, 0, 0, 0, - 0, 322, 323, 324, 0, 608, 0, 0, 1171, 610, + 0, 0, 317, 0, 0, 1171, 0, 0, 0, 0, + 0, 0, 0, 319, 320, 1172, 0, 0, 0, 0, + 0, 322, 323, 324, 0, 608, 0, 0, 1173, 610, 296, 8, 9, 10, 0, 12, 297, 298, 299, 0, 300, 14, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 605, 0, 309, 310, 311, 312, 313, 26, 0, 27, 315, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 317, 0, 0, 897, 0, 0, - 0, 0, 0, 0, 0, 319, 320, 898, 0, 0, + 0, 0, 0, 0, 317, 0, 0, 898, 0, 0, + 0, 0, 0, 0, 0, 319, 320, 899, 0, 0, 0, 0, 0, 322, 323, 324, 0, 608, 0, 0, - 899, 610, 7, 8, 9, 10, 0, 12, 297, 298, + 900, 610, 7, 8, 9, 10, 0, 12, 297, 298, 299, 0, 300, 14, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 605, 0, 309, 310, 311, 312, 313, 26, 0, 27, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 317, 0, 0, 1169, - 0, 0, 0, 0, 0, 0, 0, 319, 320, 1170, + 0, 0, 0, 0, 0, 0, 317, 0, 0, 1171, + 0, 0, 0, 0, 0, 0, 0, 319, 320, 1172, 0, 0, 0, 0, 0, 322, 323, 324, 0, 608, - 0, 0, 1171, 610, 296, 8, 9, 10, 0, 12, + 0, 0, 1173, 610, 296, 8, 9, 10, 0, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, 26, 0, 27, 315, 0, - 0, 1387, 316, 0, 0, 0, 0, 0, 317, 0, + 0, 1388, 316, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 319, 320, 321, 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, 325, 296, 8, 9, 10, 163, @@ -2397,7 +2377,7 @@ static const short yytable[] = { 59, 27, 315, 0, 0, 0, 316, 0, 0, 0, 0, 0, 317, 0, 0, 540, 0, 0, 0, 0, 0, 0, 0, 319, 320, 541, 0, 0, 0, 0, 0, - 322, 323, 324, 1129, 8, 9, 10, 542, 12, 521, + 322, 323, 324, 1131, 8, 9, 10, 542, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, 304, 305, @@ -2412,9 +2392,9 @@ static const short yytable[] = { 59, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, 26, 0, 27, 28, 0, 0, 0, 316, 0, 0, - 0, 0, 0, 317, 0, 0, 1477, 0, 0, 0, - 0, 0, 0, 0, 319, 320, 1478, 0, 0, 0, - 0, 0, 322, 323, 324, 296, 8, 9, 10, 1479, + 0, 0, 0, 317, 0, 0, 1478, 0, 0, 0, + 0, 0, 0, 0, 319, 320, 1479, 0, 0, 0, + 0, 0, 322, 323, 324, 296, 8, 9, 10, 1480, 12, 521, 298, 299, 0, 300, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 16, 301, 17, 0, 19, 0, 302, 303, 20, 0, @@ -2455,737 +2435,732 @@ static const short yytable[] = { 59, 302, 303, 20, 0, 304, 305, 306, 21, 307, 308, 0, 23, 0, 0, 0, 309, 310, 311, 312, 313, 26, 0, 27, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 317, 0, 0, 1477, 1023, 8, 761, - 10, 201, 12, 202, 319, 320, 1478, 0, 14, 0, - 0, 0, 322, 323, 324, 0, 0, 0, 0, 1479, - 0, 0, 16, 0, 17, 18, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 21, 326, 0, 0, 23, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 27, 28, 0, 0, 0, 0, 1025, 0, 0, 0, - 0, 0, 0, 0, 30, 7, 8, 9, 10, 201, - 12, 202, 0, 0, 31, 0, 14, 0, 0, 0, - 0, 0, 32, 0, 0, 0, 0, 33, 0, 0, - 16, 0, 17, 18, 0, 0, 0, 0, 20, 0, - 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 0, 0, 0, 317, 0, 6, 1478, 7, 8, 9, + 10, 11, 12, 13, 319, 320, 1479, 0, 14, 0, + 0, 0, 322, 323, 324, 0, 0, 0, 0, 1480, + 0, 15, 16, 0, 17, 18, 19, 0, 0, 0, + 20, 0, 0, 0, 0, 21, 326, 0, 22, 23, + 24, 0, 25, 0, 0, 0, 0, 0, 26, 0, + 27, 28, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 760, 31, 7, 8, 761, 10, 163, + 12, 13, 32, 0, 0, 0, 14, 33, 0, 0, + 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, + 0, 0, 0, 21, 0, 0, 0, 23, 762, 0, + 164, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 0, 0, 763, 0, 764, 0, 0, 0, 0, 0, + 0, 0, 30, 7, 8, 9, 10, 201, 12, 202, + 0, 0, 31, 0, 14, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 33, 0, 0, 16, 0, + 17, 18, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 21, 0, 0, 0, 23, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, + 1405, 0, 7, 8, 9, 10, 201, 12, 202, 0, + 30, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 16, 32, 17, + 18, 0, 0, 33, 0, 20, 0, 0, 0, 0, + 21, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 27, 28, 7, 8, 9, + 10, 210, 211, 212, 0, 0, 0, 0, 14, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 18, 0, 32, 0, 0, + 20, 0, 33, 0, 0, 21, 0, 0, 0, 23, + 0, 605, 0, 0, 0, 0, 0, 0, 26, 0, + 27, 28, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, + 0, 0, 32, 0, 0, 0, 0, 1408, 557, 558, + 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 30, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 31, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 33, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 0, 0, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 0, 0, 0, 0, 1223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, - 1525, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 1543, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578 + 0, 0, 0, 646, 0, 0, 1526, 557, 558, 559, + 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 1544, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 557, 558, 559, 560, 561, 562, + 563, 564, 565, 566, 567, 568, 0, 570, 571, 572, + 573, 574, 575, 576, 577, 578 }; static const short yycheck[] = { 4, - 147, 148, 157, 4, 205, 170, 55, 171, 398, 80, - 46, 702, 80, 23, 172, 14, 448, 345, 398, 247, - 351, 126, 4, 443, 398, 351, 470, 134, 491, 858, - 35, 4, 300, 301, 35, 685, 609, 42, 133, 134, - 76, 428, 243, 616, 552, 84, 369, 765, 42, 767, - 4, 42, 57, 35, 205, 4, 774, 57, 133, 62, - 42, 4, 35, 214, 178, 333, 678, 72, 589, 42, - 124, 142, 1369, 1288, 42, 1298, 30, 31, 54, 84, - 1459, 35, 1305, 88, 83, 90, 35, 92, 42, 4, - 782, 292, 35, 42, 238, 1458, 788, 632, 11, 42, - 42, 11, 107, 108, 33, 11, 1460, 106, 12, 27, - 90, 1, 92, 31, 12, 0, 4, 37, 478, 58, - 35, 59, 171, 351, 1192, 1193, 546, 42, 199, 62, - 84, 136, 137, 54, 139, 495, 136, 75, 1206, 77, - 1503, 62, 60, 0, 345, 1482, 64, 35, 352, 353, - 58, 686, 62, 47, 62, 59, 161, 137, 62, 98, - 165, 59, 1506, 136, 62, 1502, 610, 172, 58, 84, - 161, 165, 172, 209, 165, 108, 152, 3, 4, 5, - 109, 47, 136, 165, 213, 214, 1540, 136, 161, 109, - 258, 109, 165, 147, 148, 108, 524, 165, 108, 93, - 404, 405, 108, 895, 108, 208, 1585, 161, 42, 1, - 1554, 165, 161, 216, 108, 60, 165, 48, 1, 47, - 196, 136, 165, 165, 1561, 59, 74, 93, 94, 232, - 56, 57, 4, 5, 9, 189, 190, 1600, 701, 7, - 1463, 59, 108, 62, 1459, 244, 161, 342, 1545, 74, - 165, 59, 93, 60, 80, 74, 4, 59, 54, 25, - 910, 27, 1330, 913, 109, 93, 58, 342, 59, 37, - 62, 1339, 1340, 60, 1342, 58, 48, 93, 74, 62, - 108, 436, 389, 703, 56, 57, 61, 35, 293, 1512, - 4, 109, 58, 57, 668, 59, 62, 47, 629, 338, - 108, 65, 109, 95, 954, 955, 108, 47, 80, 696, - 697, 60, 95, 47, 64, 462, 463, 108, 1010, 93, - 325, 35, 109, 935, 475, 25, 899, 381, 59, 95, - 1022, 165, 74, 338, 724, 658, 857, 4, 5, 1562, - 38, 346, 9, 93, 724, 3, 4, 5, 6, 354, - 355, 400, 351, 93, 94, 355, 54, 59, 58, 93, - 109, 47, 62, 1055, 468, 1057, 4, 5, 108, 942, - 598, 205, 476, 75, 354, 302, 303, 108, 64, 213, - 214, 74, 355, 41, 338, 54, 47, 54, 47, 56, - 57, 318, 720, 398, 321, 95, 401, 324, 56, 57, - 327, 355, 1231, 70, 331, 74, 355, 93, 172, 243, - 48, 984, 339, 80, 178, 93, 398, 12, 56, 57, - 1488, 1489, 47, 338, 492, 430, 47, 94, 860, 633, - 88, 939, 93, 94, 93, 438, 430, 59, 60, 430, - 355, 205, 80, 64, 398, 474, 475, 108, 484, 213, - 214, 456, 896, 482, 4, 5, 107, 430, 292, 3, - 4, 5, 6, 60, 59, 494, 33, 62, 93, 64, - 1120, 1121, 93, 94, 60, 59, 430, 25, 481, 54, - 64, 430, 58, 398, 513, 54, 47, 492, 64, 1207, - 54, 75, 492, 62, 8, 9, 47, 41, 48, 74, - 14, 31, 456, 107, 108, 74, 56, 57, 462, 463, - 54, 345, 56, 57, 519, 430, 75, 522, 77, 492, - 525, 25, 36, 27, 529, 530, 531, 532, 533, 1358, - 695, 45, 93, 47, 3, 4, 5, 542, 492, 519, - 62, 456, 93, 492, 88, 1008, 936, 552, 58, 492, - 555, 590, 659, 973, 58, 47, 936, 47, 62, 666, - 83, 84, 936, 62, 3, 4, 5, 6, 402, 1142, - 54, 666, 54, 904, 47, 74, 47, 492, 904, 93, - 147, 148, 149, 47, 109, 590, 635, 56, 57, 58, - 54, 95, 74, 25, 798, 27, 430, 74, 1171, 54, - 58, 93, 41, 93, 609, 749, 807, 751, 93, 48, - 74, 616, 756, 540, 541, 4, 5, 56, 57, 74, - 93, 620, 93, 94, 191, 674, 58, 676, 677, 93, - 62, 745, 54, 901, 59, 60, 590, 401, 402, 47, - 474, 475, 1074, 1075, 54, 25, 54, 27, 482, 88, - 1094, 54, 606, 607, 759, 609, 661, 667, 54, 44, - 494, 47, 616, 95, 74, 779, 74, 56, 57, 54, - 675, 720, 57, 75, 679, 590, 904, 108, 58, 513, - 47, 661, 62, 33, 47, 93, 3, 4, 5, 6, - 1153, 701, 9, 108, 609, 4, 5, 765, 109, 767, - 47, 616, 94, 467, 47, 773, 774, 93, 94, 108, - 474, 475, 47, 742, 478, 95, 62, 108, 482, 724, - 47, 325, 1185, 772, 41, 929, 93, 94, 74, 47, - 93, 495, 768, 769, 47, 1167, 47, 54, 62, 56, - 57, 777, 11, 98, 1176, 1177, 93, 56, 57, 1181, - 93, 93, 62, 70, 3, 4, 5, 60, 93, 3, - 765, 1089, 767, 80, 74, 765, 93, 767, 773, 774, - 724, 88, 772, 773, 774, 93, 93, 782, 783, 784, - 93, 786, 93, 788, 108, 3, 4, 5, 1090, 1091, - 1222, 1093, 765, 60, 767, 111, 961, 147, 148, 149, - 94, 774, 636, 783, 784, 54, 786, 56, 57, 724, - 94, 765, 62, 767, 111, 54, 765, 93, 767, 93, - 774, 398, 765, 62, 767, 774, 59, 60, 782, 47, - 59, 774, 59, 60, 788, 74, 54, 47, 56, 57, - 54, 191, 74, 677, 54, 1049, 1050, 1051, 62, 453, - 765, 856, 767, 3, 4, 5, 861, 1548, 54, 774, - 74, 1005, 1006, 1007, 74, 74, 62, 782, 74, 54, - 59, 60, 636, 788, 74, 93, 947, 62, 74, 456, - 30, 59, 60, 93, 889, 1317, 720, 59, 60, 74, - 895, 7, 8, 9, 899, 462, 463, 464, 14, 59, - 60, 1015, 1016, 11, 54, 904, 56, 57, 742, 4, - 5, 675, 109, 677, 678, 31, 54, 108, 522, 59, - 36, 525, 108, 1355, 62, 529, 795, 796, 797, 45, - 1044, 936, 59, 938, 939, 108, 74, 942, 542, 59, - 60, 895, 869, 897, 898, 899, 108, 74, 75, 74, - 77, 555, 59, 60, 936, 559, 720, 54, 109, 54, - 1380, 56, 57, 1034, 1013, 74, 1034, 4, 5, 1297, - 897, 898, 74, 807, 108, 70, 1396, 1045, 742, 984, - 895, 745, 936, 587, 899, 80, 940, 941, 942, 593, - 1026, 109, 997, 1140, 1141, 108, 1032, 1033, 1003, 94, - 1036, 1037, 4, 5, 1040, 1010, 111, 4, 5, 773, - 111, 48, 27, 1013, 74, 779, 74, 1022, 54, 56, - 57, 936, 1169, 1170, 4, 5, 74, 942, 111, 111, - 984, 108, 609, 27, 108, 108, 58, 31, 1242, 616, - 1045, 108, 54, 80, 8, 1045, 48, 111, 93, 47, - 1055, 48, 1057, 64, 56, 57, 1010, 109, 59, 56, - 57, 93, 1482, 54, 44, 59, 60, 60, 1022, 984, - 4, 5, 1045, 1144, 54, 9, 56, 57, 80, 36, - 1085, 64, 1502, 80, 1198, 1199, 64, 1201, 1202, 64, - 1204, 1045, 108, 1098, 60, 1010, 1045, 3, 4, 5, - 62, 1055, 1045, 1057, 4, 5, 1496, 1022, 4, 5, - 64, 1531, 462, 463, 464, 64, 1496, 64, 1098, 108, - 54, 108, 56, 57, 9, 111, 108, 12, 93, 108, - 1045, 1295, 59, 1297, 62, 1203, 70, 1142, 1296, 1207, - 1055, 1561, 1057, 1153, 4, 5, 80, 724, 54, 1569, - 56, 57, 48, 108, 54, 108, 56, 57, 1590, 1164, - 56, 57, 47, 1164, 108, 108, 1171, 8, 9, 1096, - 70, 935, 1500, 14, 59, 108, 61, 62, 75, 64, - 80, 75, 75, 75, 80, 108, 1140, 1141, 1142, 108, - 75, 1164, 77, 62, 54, 36, 56, 57, 62, 108, - 59, 62, 1207, 108, 45, 782, 108, 1207, 93, 94, - 1164, 788, 111, 1327, 1328, 1169, 1170, 1171, 94, 74, - 111, 1164, 88, 108, 90, 88, 92, 1142, 3, 4, - 5, 47, 7, 108, 1207, 3, 4, 5, 108, 7, - 8, 9, 1169, 1170, 111, 60, 1295, 109, 1297, 1164, - 108, 1015, 1016, 1207, 111, 30, 1171, 108, 1207, 108, - 108, 865, 37, 31, 1207, 109, 59, 64, 36, 64, - 59, 137, 59, 139, 27, 108, 108, 108, 31, 54, - 1044, 56, 57, 1288, 93, 93, 54, 93, 56, 57, - 58, 1296, 1207, 1298, 93, 899, 109, 1298, 109, 1500, - 1305, 1337, 1338, 108, 1305, 108, 59, 60, 8, 1314, - 111, 64, 1426, 1427, 1428, 1288, 4, 5, 895, 1474, - 8, 9, 899, 108, 108, 1298, 14, 3, 4, 5, - 1477, 1478, 1305, 111, 1288, 103, 104, 105, 108, 449, - 28, 108, 30, 109, 1298, 1288, 456, 108, 36, 108, - 33, 1305, 108, 108, 108, 1298, 47, 45, 108, 936, - 64, 1288, 1305, 1528, 108, 942, 54, 54, 56, 57, - 1406, 1485, 1486, 1288, 108, 942, 108, 62, 54, 12, - 56, 57, 58, 1298, 80, 81, 82, 83, 84, 111, - 1305, 47, 108, 108, 27, 86, 87, 108, 31, 1003, - 91, 92, 93, 94, 96, 93, 9, 984, 62, 62, - 520, 60, 60, 60, 47, 16, 93, 984, 3, 4, - 5, 60, 7, 8, 9, 93, 59, 60, 108, 62, - 108, 64, 60, 1010, 1198, 1199, 108, 1201, 1202, 1553, - 1204, 108, 3, 4, 5, 1022, 31, 108, 1453, 108, - 316, 36, 1501, 1458, 1459, 1460, 64, 1458, 1463, 54, - 93, 94, 1463, 1297, 93, 3, 4, 5, 6, 111, - 580, 56, 57, 93, 1479, 108, 586, 17, 1055, 60, - 1057, 54, 107, 97, 108, 1458, 1459, 48, 354, 60, - 1463, 1496, 108, 108, 33, 56, 57, 1533, 1503, 1453, - 11, 108, 1503, 41, 1458, 1459, 1460, 1512, 60, 1463, - 60, 1512, 60, 623, 93, 1458, 1459, 59, 56, 57, - 1463, 64, 108, 1477, 1478, 60, 108, 11, 108, 60, - 1503, 11, 1296, 1297, 60, 1540, 0, 0, 1453, 1512, - 0, 2, 1496, 1458, 1459, 1460, 35, 166, 1463, 1503, - 1477, 1478, 1394, 3, 4, 5, 6, 1562, 1512, 659, - 1503, 1562, 936, 1327, 1328, 1142, 165, 1171, 161, 1512, - 3, 4, 5, 1140, 1141, 1142, 430, 1527, 773, 4, - 5, 1496, 448, 449, 9, 1153, 1540, 94, 1503, 1562, - 456, 41, 942, 139, 1171, 1600, 1600, 1512, 48, 1600, - 1379, 1232, 1169, 1170, 1171, 14, 56, 57, 1562, 148, - 149, 295, 708, 22, 1218, 1219, 1220, 1221, 922, 1562, - 237, 917, 47, 56, 57, 1540, 1008, 1600, 1185, 54, - 80, 56, 57, 1045, 984, 1205, 773, 642, 88, 590, - 915, 196, 124, 342, 1298, 70, 1600, 1562, 1165, 1548, - 1569, 1579, 191, 519, 520, 80, 65, 1600, 1517, 1581, - 992, 1314, 1426, 1427, 1428, 90, 1500, -1, 93, 94, - 3, 4, 5, -1, 7, 8, 9, 1281, -1, -1, - -1, 3, 4, 5, 6, 1600, 552, -1, 554, -1, - -1, 557, 558, -1, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, -1, 580, 124, -1, -1, -1, 41, - 586, 1485, 1486, 56, 57, -1, -1, 740, 3, 4, - 5, -1, 54, -1, 56, 57, -1, 146, 60, -1, - 62, -1, -1, -1, -1, 855, 856, -1, 70, 80, - 616, 861, 1356, -1, -1, -1, -1, 623, 80, -1, - -1, -1, -1, -1, -1, 875, 88, 877, 781, 879, - -1, 93, -1, 104, 787, -1, -1, -1, -1, 645, - 646, 56, 57, -1, -1, 1389, 325, -1, -1, 1553, - 1140, 1141, 1142, -1, -1, 661, -1, 3, 4, 5, - 6, -1, 133, 9, -1, 1, -1, 3, 4, 5, - 6, 142, 8, -1, 924, -1, 344, 345, 346, 1169, - 1170, 1171, -1, -1, 233, 234, -1, 3, 4, 5, - 6, -1, 3, 4, 5, 41, -1, -1, 247, -1, - 1407, 47, 708, -1, -1, 41, -1, -1, 54, 1453, - 56, 57, 48, -1, -1, 1459, 1460, 967, 54, -1, - 56, 57, 38, 39, 70, 41, -1, -1, 199, -1, - -1, -1, -1, -1, 80, 1479, -1, 890, 54, 892, - 56, 57, 88, -1, 90, 56, 57, 93, 94, 3, - 4, 5, 88, -1, 3, 4, 5, 6, 764, -1, - -1, -1, 233, -1, -1, -1, -1, -1, 317, -1, - 1477, 1478, 1479, -1, -1, -1, -1, 783, 784, 1496, - 786, 344, 345, 346, 463, 464, -1, 258, -1, -1, - -1, -1, 41, -1, 48, 801, 1540, -1, -1, 3, - 4, 5, 56, 57, -1, 54, -1, 56, 57, -1, - 359, 60, 1556, 3, 4, 5, 6, 823, -1, 368, - -1, 70, -1, -1, 3, 4, 5, 3, 4, 5, - 6, 80, 381, -1, 1578, 3, 4, 5, -1, 88, - -1, 1585, -1, 522, 93, -1, 525, -1, -1, 855, - 856, 41, 56, 57, 860, 861, -1, -1, 48, -1, - -1, -1, 541, 542, -1, 41, 56, 57, -1, 875, - -1, 877, 48, 879, -1, -1, 555, 56, 57, 350, - 56, 57, -1, -1, -1, -1, -1, -1, 56, 57, - 80, -1, -1, -1, 4, -1, -1, -1, 88, -1, - -1, 1054, -1, 1056, 14, 1155, -1, 1157, 914, 1159, - -1, -1, 88, -1, 24, -1, -1, 1407, 924, -1, - 30, 31, -1, 33, -1, 35, -1, 3, 4, 5, - 6, -1, 42, 939, -1, -1, 407, 616, 606, 607, - 489, 609, -1, -1, -1, 55, 952, 57, 616, -1, - -1, -1, -1, -1, -1, 65, -1, -1, 1111, -1, - -1, 967, 72, -1, -1, 41, -1, -1, -1, 449, - -1, -1, 48, 83, 84, -1, 456, -1, 984, -1, - 56, 57, -1, -1, -1, -1, -1, 1477, 1478, 1479, - -1, -1, -1, 3, 4, 5, 106, -1, -1, -1, - -1, -1, -1, 1253, 80, 554, 674, -1, 676, 677, - -1, 679, 88, -1, -1, -1, -1, -1, 489, 1025, - 3, 4, 5, 6, 134, -1, 136, -1, -1, -1, - 140, -1, -1, 143, 144, -1, 1189, 147, 148, 149, - 520, 1194, -1, 606, 607, 516, 56, 57, -1, 598, - -1, 161, 720, -1, -1, 165, -1, -1, 41, -1, - -1, 171, 172, -1, -1, 48, -1, -1, 1074, 1075, - -1, -1, 1078, 56, 57, -1, -1, -1, -1, 189, - 190, 191, -1, -1, -1, -1, -1, 3, 4, 5, - 6, -1, 1098, 1246, -1, -1, -1, 80, -1, -1, - 580, -1, -1, -1, -1, 88, 586, -1, 218, -1, - -1, 674, -1, 676, 677, -1, 679, -1, 667, -1, - -1, -1, 801, -1, 234, 41, -1, -1, -1, 678, - -1, 47, 603, -1, 244, -1, 616, -1, 54, 807, - 56, 57, -1, 623, -1, 255, -1, -1, 619, 1155, - -1, 1157, -1, 1159, 70, -1, -1, 720, -1, 708, - -1, 1167, -1, -1, 80, -1, -1, -1, -1, -1, - 1176, 1177, 88, -1, 90, 1181, -1, 93, 94, 7, - 8, 9, -1, 293, 294, -1, 14, -1, -1, -1, - 1196, 1197, -1, 1346, 1347, 3, 4, 5, 6, -1, - -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, - 1363, -1, 880, -1, 882, -1, 1222, 45, -1, 898, - 899, -1, -1, -1, -1, 893, -1, -1, 338, 897, - 898, 899, 342, 41, 344, 345, 346, -1, -1, -1, - 48, -1, -1, -1, 807, 355, -1, 1253, 56, 57, - -1, -1, -1, -1, -1, 3, 4, 5, 6, -1, - -1, 9, -1, 942, -1, -1, 1419, 1420, -1, -1, - -1, 1277, 940, 941, 942, -1, -1, -1, -1, 389, - 88, -1, -1, -1, -1, 1438, 1439, -1, 398, -1, - 400, 401, -1, 41, -1, -1, -1, -1, -1, 47, - -1, -1, -1, -1, 414, 984, 54, 417, 56, 57, - -1, 1317, 422, -1, -1, -1, 984, 880, -1, 882, - 430, 801, 70, -1, -1, -1, -1, 1333, -1, -1, - 893, -1, 80, -1, 897, 898, -1, -1, -1, -1, - 88, -1, 90, -1, -1, 93, 94, -1, 458, 1355, - 460, -1, 462, 463, 464, 7, 8, 9, 468, 4, - 5, -1, 14, 473, 4, 5, 476, 7, 8, 9, - -1, -1, 12, 922, 14, 855, 856, 940, 941, 31, - -1, 861, 492, -1, 36, -1, 935, -1, 28, -1, - 30, 31, -1, 45, -1, 875, 36, 877, -1, 879, - -1, 1407, 47, -1, -1, 45, -1, 47, 60, 54, - -1, 56, 57, -1, 54, -1, 56, 57, 1424, 1425, - 530, 531, 532, 533, -1, 70, -1, 1433, -1, -1, - 70, -1, 903, -1, 905, 80, -1, -1, -1, -1, - 80, -1, -1, -1, 924, 90, -1, -1, 93, 94, - 90, -1, -1, 93, 94, 1461, -1, -1, -1, -1, - -1, -1, 1141, 1142, 4, 5, -1, -1, -1, 9, - 1138, 1139, 1140, 1141, 1142, -1, 947, -1, 1146, -1, - 590, -1, 592, -1, -1, -1, -1, 967, -1, -1, - -1, 1170, 1171, -1, 604, -1, 606, 607, -1, 609, - -1, 1169, 1170, 1171, 984, -1, 616, 47, -1, -1, - 620, -1, -1, -1, 54, -1, 56, 57, 78, 79, - 80, 81, 82, 83, 84, 635, 1075, -1, -1, -1, - 70, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 80, -1, 3, 4, 5, 6, -1, -1, 9, 659, - 90, -1, -1, 93, 94, -1, 666, -1, -1, -1, - -1, -1, -1, 1034, 674, 675, 676, 677, 678, 679, - -1, -1, -1, -1, -1, 1138, 1139, 1140, 1141, -1, - 41, -1, -1, 1146, 1590, -1, 47, -1, 1256, 1257, - -1, 1259, -1, 54, -1, 56, 57, 3, 4, 5, - 6, -1, -1, -1, -1, -1, 1169, 1170, -1, 70, - 720, -1, 1161, -1, 724, 4, 5, -1, 1167, 80, - 9, 731, 732, -1, 734, -1, -1, 88, -1, 90, - -1, -1, 93, 94, -1, 41, -1, -1, -1, -1, - -1, -1, 48, -1, -1, -1, 1117, -1, -1, -1, - 56, 57, 762, -1, -1, 765, -1, 767, 47, -1, - -1, -1, 772, 773, 774, 54, -1, 56, 57, -1, - -1, -1, 782, 1144, 80, 1155, -1, 1157, 788, 1159, - -1, 70, 88, -1, -1, 795, 796, 797, -1, -1, - -1, 80, -1, 1256, 1257, -1, 1259, 807, -1, -1, - -1, 90, -1, -1, 93, 94, -1, -1, -1, -1, - -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, - -1, -1, -1, -1, 14, -1, -1, -1, 1407, -1, - -1, -1, 1203, 1282, 1283, -1, -1, -1, 28, -1, - 30, 31, 32, -1, -1, -1, 36, -1, -1, -1, - -1, 41, 4, 5, -1, 45, 8, 9, 48, -1, - -1, -1, 14, -1, 54, -1, 56, 57, -1, -1, - 880, -1, 882, 1253, -1, -1, 28, -1, 30, 889, - 70, -1, -1, 893, 36, 895, -1, 897, 898, 899, - 80, -1, -1, 45, 904, -1, -1, -1, 88, 1478, - 1479, -1, 54, 93, 56, 57, 58, -1, 98, -1, - 4, 5, -1, -1, 8, 9, -1, -1, -1, -1, - 14, -1, 1371, -1, -1, -1, 936, 4, 938, -1, - 940, 941, 942, -1, 28, -1, 30, 14, -1, -1, - -1, 93, 36, -1, 1393, 1394, 23, 24, 7, 8, - 9, 45, -1, 30, 31, 14, 33, -1, 35, -1, - 54, -1, 56, 57, -1, 42, -1, -1, -1, -1, - -1, -1, 31, -1, 984, -1, -1, 36, 55, -1, - 57, -1, -1, -1, -1, -1, 45, 997, 65, -1, - -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, - 1010, 60, -1, 1013, -1, -1, -1, 84, -1, -1, - -1, -1, 1022, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 1471, -1, -1, 1035, 14, 1407, -1, -1, - -1, -1, -1, -1, -1, 1045, -1, -1, -1, -1, - 28, -1, 30, 31, 32, 1055, -1, 1057, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 45, -1, 136, - 48, -1, -1, 140, -1, -1, 54, 144, 56, 57, - 147, 148, 149, -1, -1, 1085, -1, -1, -1, -1, - 1090, 1091, 70, 1093, 161, -1, -1, -1, 165, -1, - -1, -1, 80, -1, 171, 172, -1, -1, -1, -1, - 88, -1, -1, -1, -1, 93, -1, -1, -1, -1, - 98, -1, 189, 190, 191, -1, 4, 5, -1, 7, - 8, 9, -1, -1, 12, -1, 14, -1, 1138, 1139, - 1140, 1141, 1142, -1, -1, -1, 1146, -1, -1, -1, - 28, 218, 30, 31, -1, -1, -1, -1, 36, -1, - -1, -1, -1, -1, -1, -1, -1, 45, -1, 1169, - 1170, 1171, -1, -1, -1, -1, 54, -1, 56, 57, - 107, 108, -1, -1, 3, 4, 5, 6, 255, 1, - 9, 3, 4, 5, 6, 7, 8, 9, -1, -1, - 1200, -1, 14, -1, -1, 1205, -1, 1207, -1, -1, - -1, -1, -1, -1, -1, 27, 28, -1, 30, 31, - 32, -1, 41, -1, 36, -1, 293, 294, -1, 41, - -1, -1, 44, 45, 46, 54, 48, 56, 57, -1, - -1, -1, 54, -1, 56, 57, -1, -1, 60, -1, - -1, 70, -1, -1, -1, -1, 1256, 1257, 70, 1259, - -1, 80, -1, -1, -1, -1, -1, -1, 80, 88, - -1, 338, -1, -1, 93, 342, 88, 344, 345, 346, - -1, 93, -1, -1, 351, -1, 98, -1, 355, -1, - -1, -1, -1, -1, -1, 1295, 1296, 1297, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 1, 1314, 3, 4, 5, 6, 7, - 8, 9, 389, -1, -1, -1, 14, -1, -1, -1, - -1, 398, -1, 400, 401, -1, -1, -1, -1, -1, - 28, -1, 30, 31, 32, -1, -1, 414, 36, 37, - 417, -1, -1, 41, -1, 422, -1, 45, 46, -1, - 48, -1, -1, 430, -1, -1, 54, -1, 56, 57, - -1, -1, 60, -1, 62, -1, -1, 3, 4, 5, - 6, -1, 70, 9, 3, 4, 5, 6, -1, -1, - 9, 458, 80, 460, -1, 462, 463, 464, 325, -1, - 88, 468, -1, -1, -1, 93, 473, 1407, -1, 476, - -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, - -1, 109, 41, -1, 491, 492, -1, -1, 54, -1, - 56, 57, -1, -1, -1, 54, -1, 56, 57, -1, - -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, - -1, 70, -1, -1, 80, -1, -1, -1, -1, -1, - -1, 80, 88, 530, 531, 532, 533, 93, -1, 88, - -1, 398, -1, -1, 93, -1, -1, 1477, 1478, 1479, - 3, 4, 5, 6, 7, 8, 9, -1, -1, 12, - -1, 14, 3, 4, 5, 6, 1496, -1, 9, -1, - -1, 1501, -1, -1, -1, 28, -1, 30, 31, -1, - -1, -1, -1, 36, -1, -1, -1, -1, 41, -1, - -1, -1, 45, 590, 47, 592, -1, -1, -1, 456, - 41, 54, -1, 56, 57, -1, 47, -1, -1, 606, - 607, -1, 609, 54, -1, 56, 57, 70, -1, 616, - -1, -1, -1, -1, -1, -1, -1, 80, -1, 70, - -1, -1, 629, -1, -1, 88, -1, 90, 635, 80, - 93, 94, -1, -1, -1, -1, -1, 88, -1, 90, - -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, - -1, -1, 659, -1, -1, 522, -1, -1, 525, -1, - 667, -1, 529, 530, 531, 532, 533, 674, 675, 676, - 677, 678, 679, -1, -1, 542, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 555, -1, - -1, -1, -1, -1, 701, -1, -1, -1, 189, 190, - 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 720, -1, -1, -1, 724, -1, -1, - -1, -1, -1, -1, 731, 732, -1, 734, -1, -1, - 4, 5, -1, -1, 8, 9, -1, -1, -1, -1, - 14, -1, 609, -1, -1, -1, -1, -1, -1, 616, - -1, -1, -1, -1, 28, 762, 30, -1, 765, -1, - 767, -1, 36, -1, -1, 772, 773, 774, -1, -1, - -1, 45, -1, 47, -1, 782, -1, -1, -1, -1, - 54, 788, 56, 57, -1, -1, -1, -1, 795, 796, - 797, -1, -1, -1, -1, -1, 70, -1, -1, -1, - 807, -1, -1, -1, -1, -1, 80, 4, -1, -1, - -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, - 94, -1, -1, -1, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 30, 31, -1, 33, 14, 35, -1, - -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, - -1, 28, -1, 30, 31, -1, -1, 724, 55, 36, - 57, -1, -1, -1, 41, -1, -1, -1, 45, -1, - 47, -1, -1, 880, -1, 882, -1, 54, -1, 56, - 57, -1, 889, 80, -1, -1, 893, -1, 895, -1, - 897, 898, 899, 70, -1, -1, -1, 904, -1, -1, - -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, - -1, 88, -1, 90, -1, 782, 93, 94, -1, -1, - -1, 788, -1, -1, -1, -1, -1, -1, -1, 936, - -1, 938, -1, 940, 941, 942, 133, 134, -1, 136, - -1, -1, -1, 140, -1, 142, -1, 144, -1, -1, - 147, 148, 149, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 161, -1, -1, 458, 165, 460, - -1, 462, 463, 464, 171, 172, -1, 984, -1, -1, - -1, -1, 473, -1, -1, -1, -1, -1, -1, 856, - 997, -1, 189, 190, 191, -1, -1, -1, -1, -1, - -1, 1008, 199, 1010, 4, 5, 1013, -1, 8, 9, - -1, -1, -1, -1, 14, 1022, -1, -1, -1, -1, - -1, 218, 889, -1, -1, -1, -1, -1, 895, -1, - -1, -1, 899, -1, -1, -1, 36, -1, 1045, -1, - -1, -1, -1, -1, -1, 45, -1, 47, 1055, -1, - 1057, -1, -1, -1, 54, -1, 56, 57, 255, -1, - -1, -1, -1, 31, -1, -1, -1, -1, -1, 936, - 70, 938, -1, -1, -1, 942, -1, -1, 1085, -1, - 80, -1, -1, 1090, 1091, -1, 1093, -1, -1, -1, - 90, -1, -1, 93, 94, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 984, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 325, -1, - 997, 1138, 1139, 1140, 1141, 1142, 1003, -1, -1, 1146, - -1, -1, -1, 1010, -1, 342, 1153, -1, -1, -1, - -1, -1, -1, 350, -1, 1022, -1, -1, 355, -1, - -1, -1, 1169, 1170, 1171, -1, -1, -1, 3, 4, - 5, 6, 7, 8, 9, -1, -1, -1, 1185, 14, - -1, -1, -1, -1, -1, -1, -1, -1, 1055, -1, - 1057, -1, 389, 1200, -1, -1, 31, -1, 1205, -1, - 1207, 36, -1, 400, -1, -1, 41, -1, -1, -1, - 45, -1, 47, -1, -1, -1, -1, 414, 1085, 54, - 417, 56, 57, -1, -1, 422, -1, -1, -1, -1, - -1, -1, -1, 430, -1, 70, -1, -1, -1, -1, - 731, 732, -1, 734, -1, 80, -1, -1, -1, 1256, - 1257, -1, 1259, 88, -1, 90, -1, -1, 93, 94, - -1, 458, -1, 460, -1, 462, 463, 464, -1, -1, - -1, 468, -1, -1, -1, 1142, 473, 1284, -1, 476, - -1, 772, -1, 3, 4, 5, 6, -1, 1295, 1296, - 1297, -1, -1, -1, -1, 492, -1, -1, -1, -1, - -1, -1, -1, -1, 1171, -1, -1, 1314, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 41, -1, -1, -1, 522, -1, -1, 525, -1, - -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, - -1, -1, 62, 540, 541, 542, -1, -1, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 555, -1, - 80, -1, -1, -1, 4, -1, -1, -1, 88, 3, - 4, 5, 6, 93, 1, 9, 3, 4, 5, 6, - 7, 8, 9, -1, -1, -1, -1, 14, -1, -1, - 30, 31, -1, 33, -1, 35, -1, -1, -1, -1, - 1407, 28, 42, 30, 31, -1, 603, 41, -1, 36, - -1, -1, -1, -1, 41, 55, -1, 57, 45, 616, - 54, 48, 56, 57, -1, -1, -1, 54, -1, 56, - 57, -1, -1, 60, -1, -1, 70, -1, 635, -1, - -1, -1, -1, 70, -1, -1, 80, 1314, -1, 940, - 941, 942, -1, 80, 88, -1, -1, -1, -1, 93, - -1, 88, 659, -1, -1, -1, 93, -1, 33, 666, - 1477, 1478, 1479, -1, -1, -1, -1, 674, 675, 676, - 677, -1, -1, -1, -1, -1, -1, -1, -1, 1496, - 55, -1, -1, 984, 1501, -1, 136, -1, -1, -1, - 140, -1, -1, -1, 144, -1, -1, 147, 148, 149, - -1, -1, -1, -1, 4, 5, -1, 7, 8, 9, - -1, 161, 1013, 720, 14, 165, -1, 724, -1, -1, - -1, 171, 172, -1, 731, 732, -1, 734, 28, -1, - 30, 31, -1, -1, -1, -1, 36, -1, -1, 189, - 190, 191, -1, -1, -1, 45, -1, -1, 48, -1, - -1, -1, -1, -1, 54, -1, 56, 57, 765, -1, - 767, -1, -1, -1, -1, 772, 773, 774, 218, -1, - -1, -1, 147, 148, 149, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, -1, 801, -1, 171, -1, -1, -1, - -1, -1, 1479, -1, -1, 255, -1, -1, -1, -1, - -1, -1, -1, -1, 189, 190, 191, -1, -1, 1496, + 157, 345, 172, 46, 205, 33, 23, 170, 80, 4, + 171, 80, 147, 148, 398, 443, 702, 4, 126, 448, + 247, 398, 4, 351, 351, 300, 301, 609, 470, 84, + 35, 14, 369, 76, 616, 398, 491, 42, 133, 134, + 35, 859, 243, 552, 62, 428, 589, 133, 35, 678, + 4, 134, 57, 35, 42, 42, 352, 353, 333, 1299, + 42, 42, 238, 107, 108, 124, 1306, 72, 685, 1370, + 142, 1459, 1289, 4, 213, 214, 30, 31, 54, 84, + 765, 35, 767, 88, 783, 90, 205, 92, 42, 774, + 789, 292, 1460, 42, 42, 214, 47, 37, 1, 11, + 83, 1461, 107, 108, 35, 4, 11, 11, 404, 405, + 4, 42, 47, 58, 12, 90, 1504, 92, 546, 147, + 148, 149, 55, 106, 351, 33, 1507, 199, 0, 1483, + 84, 136, 137, 632, 139, 478, 35, 33, 54, 9, + 47, 35, 93, 42, 345, 1, 62, 0, 42, 1503, + 62, 60, 495, 98, 136, 58, 161, 108, 93, 62, + 165, 59, 137, 191, 62, 12, 209, 172, 610, 109, + 1, 48, 178, 161, 1555, 59, 152, 165, 165, 161, + 524, 1541, 136, 165, 165, 84, 93, 686, 33, 258, + 208, 61, 95, 147, 148, 57, 108, 896, 216, 59, + 109, 109, 58, 108, 108, 1194, 1195, 161, 1562, 42, + 108, 165, 59, 1601, 232, 62, 165, 165, 1586, 1208, + 196, 25, 468, 27, 1464, 109, 59, 58, 83, 84, + 476, 62, 4, 5, 165, 189, 190, 136, 171, 3, + 4, 5, 136, 1460, 74, 1546, 701, 342, 108, 25, + 60, 27, 148, 149, 58, 75, 342, 77, 62, 8, + 9, 244, 161, 47, 95, 14, 165, 161, 59, 4, + 54, 165, 74, 1513, 136, 703, 48, 4, 5, 436, + 4, 325, 58, 338, 56, 57, 62, 36, 293, 74, + 74, 95, 56, 57, 911, 191, 45, 914, 47, 109, + 35, 629, 147, 148, 149, 668, 389, 936, 80, 93, + 172, 35, 1011, 696, 697, 858, 80, 108, 900, 95, + 325, 658, 381, 1563, 1023, 54, 59, 462, 463, 56, + 57, 47, 165, 338, 60, 474, 475, 633, 955, 956, + 724, 346, 1331, 482, 93, 74, 191, 724, 60, 354, + 355, 1340, 1341, 59, 1343, 494, 475, 25, 1057, 27, + 1059, 943, 93, 1048, 3, 4, 5, 25, 351, 4, + 5, 598, 205, 355, 513, 108, 720, 93, 94, 354, + 213, 214, 7, 109, 338, 58, 62, 59, 60, 62, + 58, 27, 108, 398, 62, 31, 401, 109, 74, 4, + 58, 355, 108, 985, 62, 4, 5, 47, 47, 453, + 243, 398, 37, 48, 1232, 54, 47, 56, 57, 47, + 438, 56, 57, 492, 60, 430, 47, 95, 64, 325, + 35, 940, 861, 47, 462, 463, 464, 95, 47, 338, + 54, 484, 430, 47, 398, 80, 47, 93, 430, 430, + 47, 456, 93, 93, 93, 897, 355, 56, 57, 292, + 74, 355, 93, 481, 44, 93, 94, 400, 108, 4, + 5, 54, 93, 109, 54, 54, 430, 57, 522, 93, + 108, 525, 74, 62, 93, 529, 25, 492, 27, 93, + 94, 74, 93, 355, 47, 74, 93, 94, 542, 398, + 1489, 1490, 456, 799, 108, 1122, 1123, 93, 462, 463, + 492, 555, 345, 48, 519, 559, 60, 522, 107, 58, + 525, 56, 57, 62, 529, 530, 531, 532, 533, 4, + 5, 430, 695, 25, 9, 590, 430, 542, 492, 59, + 93, 1359, 47, 587, 519, 80, 974, 552, 47, 593, + 555, 60, 54, 937, 1009, 75, 95, 456, 54, 64, + 937, 492, 1144, 7, 8, 9, 47, 463, 464, 402, + 14, 666, 74, 749, 937, 751, 659, 905, 905, 54, + 756, 56, 57, 666, 62, 590, 47, 31, 93, 94, + 31, 1173, 36, 492, 93, 70, 74, 430, 492, 38, + 54, 45, 54, 742, 609, 80, 27, 808, 62, 62, + 31, 616, 93, 4, 5, 54, 60, 462, 463, 464, + 74, 47, 74, 47, 58, 12, 522, 902, 74, 525, + 492, 54, 93, 94, 930, 12, 590, 620, 59, 60, + 27, 474, 475, 64, 31, 541, 542, 1076, 1077, 482, + 667, 759, 606, 607, 1096, 609, 661, 58, 58, 555, + 47, 494, 616, 54, 64, 56, 57, 93, 94, 93, + 675, 109, 59, 60, 679, 62, 47, 64, 905, 70, + 513, 47, 59, 47, 701, 62, 661, 64, 54, 80, + 47, 590, 3, 4, 5, 6, 765, 62, 767, 93, + 1155, 54, 635, 94, 773, 774, 93, 94, 74, 74, + 609, 780, 62, 47, 4, 5, 54, 616, 54, 724, + 616, 108, 93, 54, 74, 768, 769, 93, 47, 93, + 41, 75, 1187, 54, 777, 47, 93, 48, 74, 745, + 1169, 674, 94, 676, 677, 56, 57, 1091, 108, 1178, + 1179, 47, 64, 74, 1183, 1051, 1052, 1053, 48, 93, + 765, 108, 767, 4, 5, 108, 56, 57, 773, 774, + 724, 4, 5, 779, 93, 780, 9, 88, 783, 784, + 785, 93, 787, 765, 789, 767, 108, 720, 4, 5, + 80, 11, 774, 109, 1223, 59, 60, 93, 780, 962, + 3, 4, 5, 636, 7, 8, 9, 48, 60, 784, + 785, 765, 787, 767, 62, 56, 57, 4, 5, 98, + 774, 54, 866, 56, 57, 724, 780, 93, 31, 783, + 1006, 1007, 1008, 36, 765, 789, 767, 70, 54, 772, + 56, 57, 47, 774, 677, 3, 111, 80, 62, 780, + 60, 54, 857, 56, 57, 58, 900, 862, 94, 64, + 108, 94, 94, 1549, 4, 5, 765, 54, 767, 56, + 57, 765, 62, 767, 111, 774, 948, 3, 4, 5, + 774, 780, 93, 70, 783, 890, 780, 720, 93, 1318, + 789, 896, 93, 80, 108, 900, 1092, 1093, 74, 1095, + 103, 104, 105, 765, 30, 767, 802, 74, 48, 742, + 772, 773, 774, 59, 60, 943, 56, 57, 780, 3, + 4, 5, 905, 59, 4, 5, 74, 1356, 54, 27, + 56, 57, 937, 31, 939, 940, 59, 60, 943, 75, + 80, 77, 896, 74, 898, 899, 900, 1243, 59, 60, + 937, 54, 59, 1381, 1298, 59, 60, 985, 11, 62, + 1004, 59, 60, 1035, 9, 109, 1035, 12, 48, 1397, + 54, 74, 56, 57, 58, 808, 56, 57, 108, 1048, + 985, 59, 60, 937, 1027, 59, 60, 941, 942, 943, + 1033, 1034, 59, 998, 1037, 1038, 108, 896, 1041, 1004, + 80, 900, 47, 899, 900, 74, 1011, 1142, 1143, 108, + 1016, 1017, 59, 60, 59, 108, 61, 62, 1023, 64, + 4, 5, 54, 3, 4, 5, 6, 796, 797, 798, + 75, 985, 77, 54, 8, 9, 1171, 1172, 937, 1045, + 14, 62, 108, 1048, 943, 59, 60, 943, 93, 94, + 74, 59, 1057, 74, 1059, 1483, 64, 1011, 74, 109, + 44, 41, 36, 108, 74, 109, 1048, 75, 48, 1023, + 54, 45, 56, 57, 1146, 1503, 56, 57, 3, 4, + 5, 1014, 1087, 111, 111, 108, 985, 27, 74, 985, + 54, 54, 74, 111, 1048, 1100, 111, 108, 943, 62, + 80, 54, 108, 1057, 1532, 1059, 108, 58, 88, 62, + 108, 74, 1011, 1497, 1142, 1143, 1144, 1048, 54, 8, + 1497, 74, 111, 93, 1023, 1100, 47, 1297, 59, 1173, + 64, 56, 57, 58, 1562, 1296, 1205, 1298, 1155, 1144, + 985, 93, 1570, 1171, 1172, 1173, 54, 109, 59, 1048, + 60, 36, 1014, 108, 1048, 64, 60, 1501, 1057, 64, + 1059, 1166, 1591, 74, 75, 64, 77, 62, 1173, 108, + 108, 1166, 64, 108, 64, 1219, 1220, 1221, 1222, 108, + 4, 5, 64, 111, 1166, 9, 1048, 93, 1142, 1143, + 1144, 59, 62, 108, 1200, 1201, 108, 1203, 1204, 75, + 1206, 3, 4, 5, 6, 108, 108, 108, 75, 3, + 4, 5, 1166, 7, 8, 9, 75, 1171, 1172, 1173, + 75, 108, 108, 47, 62, 62, 3, 4, 5, 6, + 54, 59, 56, 57, 108, 1166, 62, 31, 1282, 41, + 111, 94, 36, 108, 108, 1144, 70, 1143, 1144, 3, + 4, 5, 54, 111, 56, 57, 80, 88, 60, 90, + 62, 92, 56, 57, 41, 88, 90, 1166, 70, 93, + 94, 74, 47, 108, 1173, 108, 1172, 1173, 80, 56, + 57, 111, 111, 108, 1289, 59, 88, 3, 4, 5, + 108, 93, 1297, 108, 1299, 1338, 1339, 1142, 1143, 1144, + 1501, 1306, 56, 57, 1299, 109, 137, 1289, 139, 108, + 1315, 1306, 109, 1357, 60, 64, 64, 1299, 1475, 4, + 5, 59, 1328, 1329, 1306, 59, 1171, 1172, 1173, 108, + 3, 4, 5, 93, 93, 1289, 108, 93, 54, 109, + 56, 57, 93, 1478, 1479, 1299, 1390, 109, 3, 4, + 5, 6, 1306, 108, 9, 108, 108, 8, 1289, 3, + 4, 5, 47, 1296, 1407, 1298, 1529, 111, 1299, 54, + 111, 56, 57, 108, 33, 1306, 3, 4, 5, 6, + 1408, 54, 9, 56, 57, 70, 41, 108, 108, 108, + 1289, 109, 47, 108, 108, 80, 108, 108, 108, 54, + 1299, 56, 57, 108, 48, 90, 64, 1306, 93, 94, + 1454, 108, 56, 57, 41, 70, 1460, 1461, 54, 108, + 47, 1427, 1428, 1429, 108, 80, 47, 54, 62, 56, + 57, 111, 108, 88, 108, 90, 1480, 108, 93, 94, + 3, 4, 5, 70, 7, 8, 9, 96, 62, 1454, + 1478, 1479, 1480, 80, 1459, 1460, 1461, 62, 60, 1464, + 60, 88, 9, 90, 1459, 1298, 93, 94, 60, 1464, + 80, 81, 82, 83, 84, 1480, 16, 1459, 1460, 108, + 1486, 1487, 1464, 108, 108, 316, 108, 3, 4, 5, + 108, 1534, 1497, 56, 57, 108, 93, 1541, 398, 1504, + 1454, 60, 93, 60, 64, 1459, 1460, 1461, 1513, 1504, + 1464, 54, 1408, 1557, 93, 111, 93, 17, 1513, 60, + 54, 107, 1504, 354, 1478, 1479, 97, 108, 1459, 1460, + 60, 1513, 48, 1464, 108, 1579, 1541, 11, 108, 108, + 56, 57, 1586, 1497, 93, 60, 60, 60, 1554, 14, + 1504, 59, 64, 108, 60, 1454, 456, 22, 1563, 1513, + 1459, 1460, 1461, 1408, 108, 1464, 108, 11, 1563, 1502, + 60, 11, 60, 1504, 2, 0, 0, 3, 4, 5, + 6, 1563, 1513, 1479, 1480, 0, 166, 1541, 35, 1395, + 165, 3, 4, 5, 6, 659, 1601, 937, 1497, 161, + 65, 3, 4, 5, 1528, 1504, 1601, 773, 430, 1563, + 1155, 94, 38, 39, 1513, 41, 139, 448, 449, 1601, + 3, 4, 5, 6, 1380, 456, 9, 1601, 54, 41, + 56, 57, 1563, 1478, 1479, 1480, 48, 1233, 3, 4, + 5, 80, 1541, 295, 56, 57, 923, 1601, 708, 449, + 918, 1187, 237, 1009, 56, 57, 456, 773, 41, 124, + 780, 302, 303, 642, 1563, 104, 1207, 916, 1501, 196, + 1601, 54, 590, 56, 57, 342, 88, 318, 124, 1299, + 321, 146, 1167, 324, 1570, 1549, 327, 70, 519, 520, + 331, 56, 57, 1518, 133, 1580, 993, 80, 339, 3, + 4, 5, 1601, 142, 1582, 88, -1, 1315, -1, 609, + 93, -1, 3, 4, 5, 6, 616, -1, 9, -1, + 520, 552, -1, 554, -1, -1, 557, 558, -1, 560, + 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, -1, 580, + 41, -1, 56, 57, -1, 586, 47, 3, 4, 5, + 199, 7, -1, 54, -1, 56, 57, -1, 233, 234, + -1, -1, 3, 4, 5, -1, -1, -1, 4, 70, + 580, -1, 247, -1, 30, 616, 586, -1, 14, 80, + -1, 37, 623, -1, 233, 4, 5, 88, 24, 90, + 9, -1, 93, 94, 30, 31, -1, 33, 54, 35, + 56, 57, -1, -1, 645, 646, 42, -1, -1, 258, + -1, -1, -1, 623, 724, 56, 57, -1, -1, 55, + 661, 57, -1, -1, 3, 4, 5, 6, 47, 65, + -1, -1, 3, 4, 5, 54, 72, 56, 57, -1, + -1, -1, 317, 3, 4, 5, 6, 83, 84, 9, + -1, 70, -1, -1, -1, 57, -1, 59, -1, -1, + -1, 80, 41, 65, 3, 4, 5, 708, -1, 48, + 106, 90, -1, 783, 93, 94, -1, 56, 57, 789, + -1, 41, -1, -1, 359, 56, 57, 47, -1, 540, + 541, -1, -1, 368, 54, -1, 56, 57, 134, -1, + 136, 350, -1, -1, 140, -1, 381, 143, 144, 88, + 70, 147, 148, 149, 449, -1, -1, 56, 57, -1, + 80, 456, -1, 764, -1, 161, -1, -1, 88, 165, + 90, -1, -1, 93, 94, 171, 172, -1, -1, -1, + -1, -1, -1, 784, 785, -1, 787, -1, 47, -1, + -1, -1, -1, 189, 190, 191, -1, -1, 407, -1, + -1, 802, -1, -1, 3, 4, 5, 6, -1, -1, + 172, 3, 4, 5, 6, -1, 178, -1, -1, -1, + -1, -1, 218, 824, -1, 520, 896, 86, 87, -1, + 900, -1, 91, 92, 93, 94, -1, -1, 234, -1, + -1, -1, 41, 205, -1, -1, -1, -1, 244, 41, + -1, 213, 214, -1, 489, 856, 857, 56, 57, 255, + 861, 862, 54, -1, 56, 57, -1, 937, 60, -1, + -1, -1, -1, 943, -1, 876, -1, 878, 70, 880, + 489, -1, -1, -1, -1, 580, 856, 857, 80, 88, + -1, 586, 862, -1, -1, -1, 88, 293, 294, -1, + -1, 93, -1, -1, -1, -1, 876, 516, 878, -1, + 880, -1, -1, -1, 915, 985, 7, 8, 9, 554, + -1, 616, -1, 14, 925, 4, 5, -1, 623, -1, + 9, -1, 3, 4, 5, 6, 7, 8, 9, 940, + 31, 1011, 338, 14, -1, 36, 342, -1, 344, 345, + 346, -1, 953, 1023, 45, 925, -1, -1, -1, 355, + 31, -1, -1, 598, -1, 36, -1, 968, 47, 60, + 41, -1, -1, -1, 45, 54, 47, 56, 57, -1, + -1, -1, -1, 54, 985, 56, 57, 1057, -1, 1059, + -1, 70, -1, 389, 603, -1, -1, -1, 968, 70, + -1, 80, 398, -1, 400, 401, -1, -1, -1, 80, + 619, 90, -1, -1, 93, 94, -1, 88, 414, 90, + -1, 417, 93, 94, -1, 1026, 422, -1, -1, -1, + -1, -1, 667, -1, 430, -1, -1, -1, -1, 401, + 402, -1, 1, 678, 3, 4, 5, 6, -1, 8, + -1, -1, -1, -1, -1, 3, 4, 5, 6, 870, + -1, 9, 458, -1, 460, -1, 462, 463, 464, -1, + -1, -1, 468, 708, 1144, 1076, 1077, 473, -1, 1080, + 476, -1, 41, -1, -1, -1, -1, 898, 899, 48, + -1, -1, -1, 41, -1, 54, 492, 56, 57, 1100, + -1, -1, -1, 1173, -1, 467, 54, 802, 56, 57, + -1, -1, 474, 475, -1, -1, 478, 7, 8, 9, + 482, -1, 70, -1, 14, -1, -1, -1, -1, 88, + -1, -1, 80, 495, 530, 531, 532, 533, -1, -1, + 88, 31, -1, -1, -1, 93, 36, -1, 3, 4, + 5, 6, -1, -1, 9, 45, 1157, -1, 1159, -1, + 1161, 856, 857, -1, -1, -1, -1, 862, 1169, 78, + 79, 80, 81, 82, 83, 84, -1, 1178, 1179, -1, + -1, 876, 1183, 878, -1, 880, 41, 1157, -1, 1159, + -1, 1161, -1, -1, 590, -1, 592, 1198, 1199, 54, + -1, 56, 57, -1, -1, 7, 8, 9, 604, -1, + 606, 607, 14, 609, -1, 70, -1, -1, -1, -1, + 616, -1, 1223, -1, 620, 80, -1, -1, -1, 31, + 925, -1, -1, 88, 36, -1, -1, -1, 93, 635, + -1, -1, -1, 45, 740, -1, -1, -1, -1, -1, + -1, -1, -1, 1254, -1, 3, 4, 5, 6, -1, + -1, -1, -1, 659, -1, -1, 3, 4, 5, 6, + 666, -1, -1, 968, 636, -1, -1, 1278, 674, 675, + 676, 677, 678, 679, 1254, -1, 782, 1098, 923, -1, + 985, -1, 788, 41, -1, 904, -1, 906, -1, 47, + -1, 936, -1, -1, 41, -1, 54, -1, 56, 57, + -1, 48, -1, 675, -1, 677, 678, 1318, -1, 56, + 57, -1, 70, -1, 720, -1, -1, -1, 724, -1, + -1, -1, 80, 1334, -1, 731, 732, -1, 734, 948, + 88, -1, 90, 80, -1, 93, 94, -1, -1, -1, + -1, 88, -1, -1, -1, 1356, -1, -1, 720, -1, + 1171, 1172, -1, -1, -1, -1, 762, -1, -1, 765, + -1, 767, -1, -1, -1, -1, 772, 773, 774, -1, + 742, -1, -1, 745, 780, -1, -1, 783, -1, -1, + -1, -1, -1, 789, -1, 891, -1, 893, -1, -1, + 796, 797, 798, -1, -1, -1, -1, 1408, -1, -1, + -1, 773, 808, -1, -1, -1, -1, 779, -1, -1, + -1, -1, -1, -1, 1425, 1426, 1035, 1497, -1, -1, + -1, 4, 5, 1434, 7, 8, 9, -1, -1, 12, + -1, 14, 1077, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 28, -1, 30, 31, -1, + -1, 1462, 1157, 36, 1159, -1, 1161, -1, -1, -1, + -1, -1, 45, -1, 47, -1, -1, -1, 1289, -1, + -1, 54, -1, 56, 57, 881, -1, 883, -1, -1, + -1, -1, -1, -1, 890, -1, -1, 70, 894, -1, + 896, -1, 898, 899, 900, -1, -1, 80, -1, 905, + 1119, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 3, 4, 5, 6, -1, 1163, -1, + -1, -1, -1, -1, 1169, -1, -1, 1146, -1, -1, + -1, 937, -1, 939, 4, 941, 942, 943, -1, -1, + -1, -1, -1, -1, 14, -1, -1, -1, -1, 1254, + 1056, 41, 1058, 23, 24, -1, -1, -1, 48, -1, + 30, 31, -1, 33, 936, 35, 56, 57, -1, -1, + -1, -1, 42, -1, -1, 3, 4, 5, 6, 985, + 1591, -1, -1, -1, -1, 55, 1205, 57, -1, -1, + 80, -1, 998, -1, -1, 65, -1, -1, 88, -1, + -1, -1, 72, -1, -1, 1011, -1, 1113, 1014, -1, + -1, -1, -1, 41, 84, -1, -1, 1023, -1, -1, + 48, -1, -1, -1, -1, -1, -1, -1, 56, 57, + 1036, -1, -1, -1, -1, -1, -1, -1, 1283, 1284, + -1, -1, 1048, -1, 1016, 1017, -1, -1, -1, -1, + -1, 1057, 80, 1059, -1, -1, -1, 1478, 1479, -1, + 88, -1, 3, 4, 5, 6, 136, -1, 9, -1, + 140, -1, -1, 1045, 144, -1, -1, 147, 148, 149, + -1, 1087, -1, -1, -1, 1191, 1092, 1093, -1, 1095, + 1196, 161, -1, -1, -1, 165, -1, 189, 190, 191, + 41, 171, 172, 1408, -1, 3, 4, 5, 6, -1, + -1, 9, -1, 54, -1, 56, 57, -1, -1, 189, + 190, 191, -1, 3, 4, 5, 6, 1372, -1, 70, + -1, -1, -1, -1, 1140, 1141, 1142, 1143, 1144, 80, + -1, 1247, 1148, 41, -1, -1, -1, 88, 218, 1394, + 1395, -1, 93, -1, -1, -1, 54, -1, 56, 57, + -1, 41, -1, -1, -1, 1171, 1172, 1173, 48, -1, + -1, -1, 70, -1, -1, -1, 56, 57, -1, -1, + -1, -1, 80, -1, -1, 255, -1, -1, -1, -1, + 88, -1, -1, -1, -1, 93, 1202, -1, -1, -1, + 80, 1207, -1, -1, -1, -1, -1, -1, 88, -1, -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, - -1, -1, 14, -1, -1, -1, -1, 1138, 1139, 1140, - 1141, 1142, -1, 218, -1, 1146, -1, -1, -1, 31, - -1, -1, -1, -1, 36, -1, -1, -1, -1, 41, - -1, -1, -1, 45, -1, 47, -1, -1, 1169, 1170, - 1171, -1, 54, -1, 56, 57, 3, 4, 5, 6, - 7, 8, 9, -1, -1, -1, -1, 14, 70, -1, - 897, 898, 899, -1, -1, -1, 903, -1, 80, 1200, - -1, 351, -1, -1, 31, 355, 88, -1, 90, 36, - -1, 93, 94, -1, 41, -1, -1, -1, 45, 294, - 47, -1, -1, -1, -1, -1, -1, 54, -1, 56, - 57, -1, -1, 940, 941, 942, -1, -1, -1, -1, - 947, -1, -1, 70, -1, -1, -1, -1, -1, -1, - 400, -1, -1, 80, -1, 1256, 1257, -1, 1259, -1, - -1, 88, -1, -1, 414, -1, 93, 417, -1, 344, - 345, 346, 422, -1, -1, -1, -1, 984, -1, -1, - 430, -1, 3, 4, 5, 6, -1, 4, 5, -1, - -1, 8, 9, -1, -1, -1, -1, 14, -1, -1, - -1, -1, -1, -1, -1, -1, 1013, -1, 458, -1, - 460, -1, 462, 463, 464, -1, -1, -1, 468, 36, - 41, -1, -1, 473, -1, 400, 476, 1034, 45, -1, - 47, -1, -1, 54, -1, 56, 57, 54, 1045, 56, - 57, 62, 492, -1, -1, -1, -1, -1, -1, 70, - -1, -1, -1, 70, -1, -1, -1, -1, -1, 80, - -1, -1, -1, 80, -1, -1, -1, 88, 82, -1, - -1, -1, 93, 90, -1, -1, 93, 94, -1, -1, - -1, -1, -1, 458, -1, 460, -1, 462, 463, 464, - -1, -1, -1, 468, -1, -1, -1, -1, 473, -1, - -1, 476, -1, -1, -1, -1, 1407, -1, -1, -1, - 1117, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, -1, -1, -1, -1, 14, -1, - -1, 1138, 1139, 1140, 1141, 1142, -1, 1144, -1, 1146, - -1, 155, 28, -1, 30, 31, -1, -1, -1, -1, - 36, -1, -1, -1, 604, 41, -1, -1, -1, 45, - -1, -1, 1169, 1170, 1171, -1, -1, -1, 54, -1, - 56, 57, -1, 187, 60, -1, 1477, 1478, 1479, -1, - -1, -1, -1, -1, 70, 635, 200, 4, 5, -1, - 7, 8, 9, 1200, 80, 12, -1, 14, 1205, -1, - 1207, -1, 88, -1, -1, -1, -1, 93, -1, -1, - -1, 28, -1, 30, 31, -1, -1, 592, -1, 36, - -1, -1, -1, -1, 674, 675, 676, 677, 45, -1, - -1, 606, 607, -1, 609, -1, 55, 54, -1, 56, - 57, 616, -1, -1, -1, 4, -1, -1, -1, 1256, - 1257, -1, 1259, -1, -1, -1, -1, -1, -1, -1, - 635, 80, -1, -1, 83, 3, 4, 5, 6, -1, - 720, 30, 31, -1, 724, -1, 35, -1, -1, -1, - -1, 731, 732, 42, 734, 104, -1, 106, 1295, 1296, - 1297, -1, -1, -1, -1, -1, -1, -1, 57, 674, - -1, 676, 677, 41, 679, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 765, 54, 767, 56, 57, - -1, -1, 772, 773, 774, -1, -1, -1, -1, -1, - -1, -1, 70, -1, -1, -1, -1, -1, 3, 4, - 5, 6, 80, -1, 9, 720, -1, -1, -1, 41, - 88, -1, 171, -1, -1, 93, 731, 732, -1, 734, - -1, -1, 54, -1, 56, 57, -1, -1, 60, -1, - 189, 190, 191, -1, -1, -1, 41, 136, 70, -1, - 199, 140, -1, -1, -1, 144, -1, -1, 80, 54, - -1, 56, 57, -1, -1, -1, 88, 772, -1, 218, - 1407, 93, 161, -1, -1, 70, 165, -1, 3, 4, - 5, 6, -1, 172, 9, 80, -1, -1, -1, -1, - 795, 796, 797, 88, -1, 244, -1, -1, 93, -1, - 189, 190, 807, -1, -1, -1, -1, -1, -1, 258, - -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, - -1, -1, 466, -1, 904, -1, -1, 471, -1, 54, - -1, 56, 57, -1, -1, -1, 3, 4, 5, 6, - 1477, 1478, 1479, -1, -1, 70, -1, -1, -1, -1, - -1, -1, 496, -1, -1, 80, -1, -1, 502, -1, - 940, 941, 942, 88, 1501, -1, 255, -1, 93, -1, - 514, 515, -1, 517, 41, 880, -1, 882, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 54, 893, 56, - 57, -1, 897, 898, 899, 62, -1, -1, -1, -1, - -1, 350, 351, 70, 984, -1, -1, -1, -1, -1, - -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, - -1, 88, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, 1013, -1, 940, 941, 942, -1, -1, + -1, -1, 14, 293, 294, -1, -1, 1472, 1200, 1201, + -1, 1203, 1204, -1, 1206, -1, 344, 345, 346, 31, + -1, 1347, 1348, -1, 36, -1, -1, -1, -1, 41, + -1, 1257, 1258, 45, 1260, 47, -1, -1, 1364, -1, + -1, -1, 54, -1, 56, 57, -1, -1, 338, -1, + -1, -1, 342, -1, 344, 345, 346, -1, 70, -1, + -1, 351, -1, -1, -1, 355, -1, -1, 80, -1, + 1296, 1297, 1298, -1, -1, -1, 88, -1, 90, -1, + -1, 93, 94, -1, -1, -1, -1, -1, -1, 1315, + -1, -1, -1, -1, 1420, 1421, -1, -1, -1, 389, + -1, -1, -1, -1, -1, 1297, 1298, -1, 398, -1, + 400, 401, -1, 1439, 1440, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 414, -1, -1, 417, -1, -1, + -1, -1, 422, -1, -1, -1, 1328, 1329, -1, -1, + 430, 3, 4, 5, 6, -1, 458, 9, 460, -1, + 462, 463, 464, -1, -1, -1, -1, -1, -1, -1, + -1, 473, 3, 4, 5, 6, -1, -1, 458, -1, + 460, -1, 462, 463, 464, -1, -1, -1, 468, 41, + 4, 5, 1408, 473, 8, 9, 476, -1, -1, -1, + 14, -1, 54, -1, 56, 57, -1, -1, -1, -1, + 41, 491, 492, -1, 28, -1, 30, -1, 70, -1, + -1, -1, 36, 54, -1, 56, 57, -1, 80, -1, + -1, 45, -1, 47, -1, -1, 88, -1, -1, -1, + 54, 93, 56, 57, -1, 1427, 1428, 1429, -1, -1, + 530, 531, 532, 533, -1, -1, 70, 88, -1, -1, + -1, -1, 1478, 1479, 1480, -1, 80, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, + 94, 1497, -1, -1, -1, -1, 1502, -1, 606, 607, + 3, 4, 5, 6, 7, 8, 9, -1, 4, 5, + -1, 14, 8, 9, 1486, 1487, -1, -1, 14, -1, + 590, -1, 592, -1, -1, 28, -1, 30, 31, 32, + -1, -1, 28, 36, 30, -1, 606, 607, 41, 609, + 36, -1, 45, -1, -1, 48, 616, -1, -1, 45, + -1, 54, -1, 56, 57, -1, -1, -1, 54, 629, + 56, 57, -1, -1, -1, 635, 674, 70, 676, 677, + -1, 679, -1, -1, -1, -1, -1, 80, -1, -1, + -1, -1, 1554, -1, -1, 88, -1, -1, -1, 659, + 93, -1, -1, -1, -1, 98, -1, 667, -1, -1, + -1, -1, -1, -1, 674, 675, 676, 677, 678, 679, + -1, -1, 720, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 1, 701, 3, 4, 5, 6, 7, 8, 9, 731, + 732, -1, 734, 14, -1, -1, -1, -1, -1, -1, + 720, -1, -1, -1, 724, -1, -1, 28, -1, 30, + 31, 731, 732, -1, 734, 36, -1, -1, -1, -1, + 41, -1, -1, -1, 45, -1, -1, 48, -1, -1, + 772, -1, -1, 54, -1, 56, 57, -1, -1, 60, + -1, -1, 762, -1, -1, 765, -1, 767, -1, 70, + 808, -1, 772, 773, 774, -1, -1, -1, -1, 80, + 780, 4, 5, 783, -1, 8, 9, 88, -1, 789, + -1, 14, 93, -1, -1, -1, 796, 797, 798, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 808, -1, + -1, -1, -1, 36, -1, 4, -1, -1, -1, -1, + -1, -1, 45, -1, 47, 3, 4, 5, 6, -1, + -1, 54, -1, 56, 57, -1, -1, -1, -1, -1, + -1, 30, 31, 881, 33, 883, 35, 70, -1, -1, + -1, -1, -1, 42, -1, -1, 894, 80, -1, -1, + 898, 899, -1, 41, -1, -1, 55, 90, 57, -1, + 93, 94, -1, -1, -1, -1, 54, -1, 56, 57, + -1, 881, -1, 883, 62, -1, -1, -1, -1, -1, + 890, 80, 70, -1, 894, -1, 896, -1, 898, 899, + 900, -1, 80, 941, 942, 905, -1, -1, -1, -1, + 88, -1, -1, -1, -1, 93, -1, -1, -1, 941, + 942, 943, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 937, -1, 939, + -1, 941, 942, 943, 133, 134, -1, 136, -1, -1, + -1, 140, -1, 142, -1, 144, -1, -1, 147, 148, + 149, -1, -1, 985, -1, 4, 5, -1, -1, 8, + 9, -1, 161, -1, -1, 14, 165, -1, -1, -1, + -1, -1, 171, 172, -1, 985, -1, -1, -1, -1, + -1, -1, 1014, -1, -1, -1, -1, 36, 998, -1, + 189, 190, 191, -1, -1, -1, 45, -1, 47, 1009, + 199, 1011, -1, -1, 1014, 54, -1, 56, 57, -1, + -1, -1, -1, 1023, 3, 4, 5, 6, -1, 218, + 9, 70, 4, 5, -1, -1, 8, 9, -1, -1, + -1, 80, 14, -1, -1, -1, -1, -1, 1048, -1, + -1, 90, -1, -1, 93, 94, 28, 1057, 30, 1059, + -1, -1, 41, -1, 36, -1, 255, -1, -1, -1, + -1, -1, -1, 45, -1, 54, -1, 56, 57, -1, + -1, -1, 54, -1, 56, 57, -1, 1087, -1, -1, + -1, 70, 1092, 1093, -1, 1095, -1, -1, -1, -1, + -1, 80, 1140, 1141, 1142, 1143, -1, -1, -1, 88, + 1148, -1, -1, -1, 93, -1, -1, -1, 1140, 1141, + 1142, 1143, 1144, -1, -1, -1, 1148, -1, -1, -1, + -1, -1, -1, 1171, 1172, -1, 325, -1, -1, -1, + 1140, 1141, 1142, 1143, 1144, -1, -1, -1, 1148, 1171, + 1172, 1173, -1, 342, -1, 1155, -1, -1, -1, -1, + -1, 350, -1, -1, -1, -1, 355, -1, -1, -1, + -1, 1171, 1172, 1173, -1, -1, 3, 4, 5, 6, + 1202, -1, 9, -1, -1, -1, -1, 1187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 400, -1, 3, 4, 5, 6, 7, 8, 9, - -1, -1, 12, -1, 14, 1045, 355, -1, 612, 613, - -1, -1, -1, 617, -1, -1, -1, -1, 28, 984, - 30, 31, -1, -1, -1, -1, 36, -1, -1, -1, - -1, 41, -1, -1, -1, 45, -1, 3, 4, 5, - 6, -1, -1, 9, 54, -1, 56, 57, 1013, 458, + 389, -1, 1202, -1, -1, -1, -1, 1207, -1, -1, + -1, 400, -1, -1, 41, -1, -1, -1, -1, 1257, + 1258, -1, 1260, -1, -1, 414, -1, 54, 417, 56, + 57, -1, -1, 422, -1, 1257, 1258, -1, 1260, -1, + -1, 430, -1, 70, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, -1, -1, -1, 1257, 1258, -1, + 1260, 88, -1, -1, -1, -1, 93, -1, -1, 458, -1, 460, -1, 462, 463, 464, -1, -1, -1, 468, - 70, -1, -1, -1, 473, 414, -1, 476, 417, -1, - 80, -1, -1, 422, -1, 41, -1, -1, 88, -1, - -1, 430, -1, 93, -1, -1, -1, -1, 54, -1, - 56, 57, -1, -1, 3, 4, 5, 6, 1138, 1139, - 1140, 1141, 1142, -1, 70, -1, 1146, -1, -1, 458, - -1, 460, -1, -1, 80, -1, -1, -1, -1, -1, - -1, -1, 88, -1, 473, 1090, 1091, 93, 1093, 1169, - 1170, 1171, 41, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 492, -1, 54, -1, 56, 57, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1200, 70, -1, -1, -1, 1205, -1, 1207, -1, -1, - -1, 80, -1, 1138, 1139, 1140, 1141, 1142, -1, 88, - -1, 1146, -1, -1, 93, 789, -1, 791, -1, -1, - -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, - 7, 8, 9, -1, 1169, 1170, 1171, 14, -1, -1, - 619, 620, -1, -1, -1, -1, 1256, 1257, -1, 1259, - -1, 28, -1, 30, 31, -1, 635, -1, -1, 36, - -1, -1, -1, -1, 41, 1200, -1, -1, 45, -1, - -1, -1, -1, -1, -1, -1, -1, 54, -1, 56, - 57, -1, -1, 60, -1, 1295, 1296, 1297, -1, 863, - 864, -1, 866, 70, -1, 674, -1, 676, 677, -1, - -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, - -1, 88, -1, 4, 5, -1, 93, 8, 9, -1, - 894, 1256, 1257, 14, 1259, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, -1, -1, 28, -1, 30, - -1, 720, -1, -1, -1, 36, -1, -1, -1, -1, - -1, -1, 731, 732, 45, 734, 675, -1, -1, -1, - 1295, -1, 1297, 54, -1, 56, 57, -1, -1, 41, - 944, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 759, -1, 54, -1, 56, 57, -1, -1, -1, -1, - -1, -1, -1, 772, -1, -1, -1, 1407, 70, 4, - 5, -1, 7, 8, 9, 724, -1, -1, 80, 14, - -1, -1, 731, 732, -1, 734, 88, -1, -1, -1, - -1, 93, -1, 28, -1, 30, 31, -1, -1, -1, - -1, 36, -1, -1, -1, 1009, -1, -1, -1, -1, - 45, -1, -1, -1, -1, -1, 765, 1021, 767, 54, - -1, 56, 57, 772, 773, 774, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 14, 1477, 1478, 1479, - -1, -1, 1407, -1, -1, 23, 24, -1, -1, -1, - -1, -1, 30, 31, -1, 33, -1, -1, -1, -1, - -1, 1501, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - -1, -1, -1, -1, 14, -1, -1, 65, -1, -1, - -1, -1, -1, -1, 903, 904, 905, -1, 28, -1, - 30, 31, 1106, -1, -1, -1, 36, -1, -1, -1, - -1, 41, 1477, 1478, 1479, 45, -1, -1, -1, -1, - -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, - -1, 940, 941, 942, -1, -1, 1501, -1, 947, -1, - 70, 1145, -1, -1, -1, -1, 124, -1, 126, -1, - 80, -1, -1, -1, -1, 133, 134, -1, 88, -1, - -1, -1, 140, 93, 142, 143, 144, -1, 146, 147, - 148, 149, -1, -1, -1, 984, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - -1, 940, 941, 1, -1, 3, 4, 5, 6, 7, - 8, 9, -1, -1, 1013, 1209, 14, -1, -1, 1213, + -1, -1, -1, -1, 473, 1285, -1, 476, 3, 4, + 5, 6, -1, -1, -1, -1, 1296, 1297, 1298, -1, + -1, -1, -1, 492, -1, -1, -1, 3, 4, 5, + 6, 7, 8, 9, -1, 1315, -1, -1, 14, -1, + -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, + -1, -1, 28, 522, 30, 31, 525, -1, -1, 54, + 36, 56, 57, -1, -1, 41, -1, 62, -1, 45, + -1, 540, 541, 542, -1, 70, -1, -1, 54, -1, + 56, 57, -1, -1, 60, 80, 555, -1, -1, -1, + -1, -1, 4, 88, 70, -1, -1, -1, 93, -1, + -1, -1, -1, -1, 80, -1, 1408, -1, -1, -1, + -1, -1, 88, -1, -1, -1, -1, 93, 30, 31, + -1, 33, -1, 35, -1, -1, -1, -1, 1408, -1, + 42, -1, -1, -1, 603, 3, 4, 5, 6, -1, + -1, -1, -1, 55, -1, 57, -1, 616, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 635, -1, -1, -1, + -1, -1, -1, 41, -1, -1, 1478, 1479, 1480, -1, + -1, -1, -1, -1, -1, -1, 54, -1, 56, 57, + 659, -1, -1, -1, 62, -1, -1, 666, 1478, 1479, + 1480, -1, 70, -1, -1, 674, 675, 676, 677, -1, + -1, -1, 80, -1, -1, -1, -1, 1497, 55, -1, + 88, -1, 1502, -1, 136, 93, -1, -1, 140, -1, + -1, -1, 144, -1, -1, 147, 148, 149, -1, -1, + 4, 5, -1, 80, 8, 9, 83, -1, -1, 161, + 14, 720, -1, 165, -1, 724, -1, -1, -1, 171, + 172, -1, 731, 732, 28, 734, 30, 104, -1, 106, + -1, -1, 36, -1, -1, -1, -1, 189, 190, 191, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + 54, -1, 56, 57, 58, -1, 765, -1, 767, 33, + -1, -1, -1, 772, 773, 774, 218, 3, 4, 5, + 6, 780, -1, 3, 4, 5, 6, 7, 8, 9, + -1, 55, 12, -1, 14, -1, -1, -1, -1, 93, + -1, -1, -1, 802, 171, -1, -1, -1, 28, -1, + 30, 31, -1, 255, -1, 41, 36, -1, -1, -1, + -1, 41, 189, 190, 191, 45, -1, 47, 54, -1, + 56, 57, 199, -1, 54, -1, 56, 57, -1, -1, + -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, + 70, 218, -1, -1, 80, -1, -1, -1, -1, -1, + 80, -1, 88, -1, -1, -1, -1, 93, 88, -1, + 90, -1, -1, 93, 94, -1, -1, 244, 3, 4, + 5, 6, -1, 147, 148, 149, -1, -1, -1, -1, + -1, 258, -1, -1, -1, -1, -1, -1, -1, 898, + 899, 900, -1, -1, -1, 904, -1, 171, -1, 351, + -1, -1, -1, 355, -1, -1, 41, -1, -1, -1, + -1, -1, -1, -1, -1, 189, 190, 191, -1, 54, + -1, 56, 57, -1, -1, 60, -1, -1, -1, -1, + -1, -1, 941, 942, 943, 70, -1, -1, -1, 948, + -1, -1, -1, -1, 218, 80, -1, -1, 400, -1, + -1, -1, -1, 88, -1, -1, -1, -1, 93, -1, + -1, -1, 414, -1, -1, 417, -1, -1, -1, -1, + 422, -1, -1, 350, 351, -1, 985, -1, 430, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 3, 4, 5, 6, -1, -1, -1, 107, + 108, -1, -1, -1, -1, 1014, 458, -1, 460, -1, + 462, 463, 464, -1, -1, -1, 468, -1, -1, -1, + 294, 473, -1, 400, 476, -1, 1035, -1, -1, -1, + 41, -1, -1, -1, -1, -1, -1, -1, -1, 1048, + 492, -1, -1, 54, -1, 56, 57, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, -1, 70, + -1, -1, 14, 3, 4, 5, 6, -1, -1, 80, + 344, 345, 346, -1, -1, -1, 28, 88, 30, 31, + -1, 458, 93, 460, 36, 462, 463, 464, -1, 41, + -1, 468, -1, 45, -1, 47, 473, -1, -1, 476, + -1, 41, 54, -1, 56, 57, -1, -1, -1, -1, + 1119, -1, -1, -1, 54, -1, 56, 57, 70, 4, + 5, -1, 7, 8, 9, -1, 400, 12, 80, 14, + 70, 1140, 1141, 1142, 1143, 1144, 88, 1146, 90, 1148, + 80, 93, 94, 28, -1, 30, 31, -1, 88, -1, + -1, 36, 604, 93, -1, -1, -1, -1, -1, -1, + 45, -1, 1171, 1172, 1173, -1, -1, -1, -1, 54, + -1, 56, 57, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 635, 458, -1, 460, -1, 462, 463, + 464, -1, -1, 1202, 468, -1, -1, -1, 1207, 473, + -1, -1, 476, -1, -1, -1, 1, -1, 3, 4, + 5, 6, 7, 8, 9, -1, -1, 325, -1, 14, + -1, 82, 674, 675, 676, 677, -1, -1, -1, -1, + -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, + -1, 36, 619, 620, -1, -1, 41, -1, 1257, 1258, + 45, 1260, -1, 48, -1, -1, -1, -1, 635, 54, + -1, 56, 57, -1, -1, -1, -1, -1, 720, -1, + -1, -1, 724, -1, -1, 70, -1, -1, -1, 731, + 732, -1, 734, -1, -1, 80, -1, 1296, 1297, 1298, + 398, -1, -1, 88, 155, -1, -1, 674, 93, 676, + 677, -1, -1, 98, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 765, -1, 767, -1, -1, 592, -1, + 772, 773, 774, -1, -1, -1, 187, -1, 780, -1, + -1, -1, 606, 607, -1, 609, -1, -1, -1, 200, + 4, 5, 616, 720, 8, 9, -1, -1, 456, -1, + 14, -1, -1, -1, 731, 732, -1, 734, -1, -1, + -1, 635, -1, -1, 28, -1, 30, -1, -1, -1, + -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, + -1, 45, 759, -1, -1, -1, -1, -1, -1, -1, + 54, -1, 56, 57, -1, 772, -1, -1, -1, 1408, + 674, -1, 676, 677, -1, 679, -1, -1, -1, -1, + -1, -1, -1, -1, 522, -1, -1, 525, -1, -1, + -1, 529, 530, 531, 532, 533, -1, -1, -1, 93, + -1, -1, -1, -1, 542, 4, 5, -1, 7, 8, + 9, -1, -1, -1, -1, 14, 720, 555, -1, -1, + -1, -1, -1, 905, -1, -1, -1, 731, 732, 28, + 734, 30, 31, -1, -1, -1, -1, 36, -1, 1478, + 1479, 1480, -1, -1, -1, -1, 45, -1, -1, 48, + -1, -1, -1, -1, -1, 54, -1, 56, 57, 941, + 942, 943, -1, 1502, -1, -1, -1, -1, 772, -1, + -1, 609, -1, -1, -1, -1, -1, -1, 616, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 28, -1, 30, 31, 32, 1034, -1, -1, 36, 37, - -1, -1, -1, 41, -1, -1, -1, 45, 46, -1, - 48, -1, -1, -1, 1248, -1, 54, -1, 56, 57, - -1, -1, 60, -1, 62, 233, 234, -1, -1, -1, - -1, -1, 70, -1, 1013, -1, -1, -1, -1, -1, - -1, -1, 80, -1, -1, -1, -1, 255, -1, -1, - 88, -1, -1, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1045, -1, -1, -1, - -1, 109, -1, -1, -1, -1, -1, -1, 1117, -1, - -1, -1, -1, -1, -1, -1, 294, -1, 1322, -1, - -1, -1, 1326, -1, -1, -1, -1, -1, -1, 1138, - 1139, 1140, 1141, 1142, -1, 1144, -1, 1146, -1, -1, - -1, -1, -1, -1, 1348, 1349, -1, -1, -1, -1, + -1, -1, 796, 797, 798, -1, -1, 904, 905, 906, + -1, -1, -1, 985, 808, -1, -1, -1, -1, -1, + -1, -1, 4, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, + -1, -1, 1014, -1, 941, 942, 943, -1, 30, 31, + -1, 948, -1, 35, -1, -1, -1, 344, 345, 346, + 42, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 57, 1048, -1, -1, -1, + -1, -1, -1, -1, -1, 466, -1, 881, 985, 883, + 471, -1, -1, -1, -1, -1, 724, -1, -1, -1, + 894, -1, -1, -1, 898, 899, 900, -1, -1, -1, + -1, -1, -1, -1, -1, 496, -1, 1014, -1, -1, + -1, 502, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 514, 515, -1, 517, -1, 1035, -1, + -1, -1, -1, -1, -1, -1, -1, 941, 942, 943, + -1, -1, -1, -1, 136, 783, -1, -1, 140, -1, + -1, 789, 144, -1, -1, -1, -1, -1, 1140, 1141, + 1142, 1143, 1144, -1, -1, -1, 1148, -1, -1, 161, + -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, + 172, 985, -1, -1, -1, -1, -1, -1, -1, 1171, + 1172, 1173, -1, -1, -1, -1, -1, 189, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1169, 1170, 1171, -1, 342, -1, 344, 345, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, -1, -1, -1, -1, 1138, - 1139, 1200, -1, -1, -1, -1, -1, 1146, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, - -1, 389, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, 407, - -1, -1, -1, -1, -1, -1, 414, -1, -1, 417, - -1, -1, -1, -1, 422, -1, -1, 1256, 1257, -1, - 1259, 1200, -1, -1, -1, -1, 1205, -1, 1207, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, -1, 1295, -1, 1297, -1, - -1, -1, -1, 1, -1, 3, 4, 5, 6, 7, - 8, 9, -1, -1, 12, -1, 14, 1256, 1257, -1, - 1259, 489, -1, 491, -1, -1, -1, 25, -1, 27, - -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 45, 516, 47, - -1, -1, -1, -1, -1, -1, 54, 1296, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, -1, 86, 87, - 88, -1, 90, 91, 92, 93, 94, 95, -1, 97, - -1, -1, -1, -1, 102, -1, -1, -1, 1407, 107, - 108, 109, -1, 111, 1, -1, 3, 4, 5, 6, - 7, 8, 9, -1, 592, -1, -1, 14, -1, -1, - -1, -1, -1, -1, -1, 603, 604, -1, 606, 607, - -1, 28, -1, 30, 31, 32, -1, -1, -1, 36, - -1, -1, -1, -1, 41, -1, -1, -1, 45, 46, - -1, 48, -1, -1, -1, -1, -1, 54, -1, 56, - 57, -1, -1, 60, -1, 62, -1, -1, 1477, 1478, - 1479, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, 659, -1, 80, -1, -1, -1, -1, 666, 667, - -1, 88, 1501, -1, -1, -1, 93, -1, -1, -1, - 678, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, -1, 701, -1, -1, -1, -1, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, -1, 45, -1, 47, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, - -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 759, -1, -1, 762, -1, 86, 87, 88, -1, - 90, -1, -1, 93, 94, -1, -1, -1, -1, -1, + 1014, -1, 1119, -1, -1, -1, -1, -1, -1, 857, + 1202, 612, 613, -1, -1, 1207, 617, -1, -1, -1, + -1, -1, -1, 1140, 1141, 1142, 1143, 1144, -1, 1146, + -1, 1148, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 890, -1, -1, -1, -1, -1, 896, -1, + -1, -1, 900, 255, 1171, 1172, 1173, -1, -1, -1, + -1, -1, -1, -1, -1, 1257, 1258, -1, 1260, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1092, 1093, + -1, 1095, -1, -1, -1, 1202, -1, -1, -1, 937, + -1, 939, -1, -1, -1, 943, -1, -1, -1, 606, + 607, -1, 609, -1, 1296, 1297, 1298, -1, -1, 616, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, -1, -1, -1, -1, -1, -1, 795, 796, 797, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 807, - -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, 15, -1, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, 44, 45, 46, -1, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, - 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, 880, -1, 882, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, 893, 86, 87, 88, -1, - -1, -1, -1, 93, -1, 95, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, - 110, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, 15, -1, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, 44, 45, 46, -1, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, - 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, - 1008, -1, -1, 93, -1, 95, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1140, 1141, 1142, 1143, + 1144, -1, -1, -1, 1148, -1, -1, 985, -1, -1, + 1257, 1258, -1, 1260, -1, -1, -1, -1, -1, -1, + 998, -1, -1, 355, -1, -1, 1004, 1171, 1172, 1173, + -1, -1, -1, 1011, -1, -1, -1, 674, -1, 676, + 677, -1, 679, -1, -1, 1023, -1, -1, -1, 1296, + -1, 1298, -1, 14, -1, -1, -1, -1, 1202, 790, + -1, 792, 23, 24, -1, -1, -1, -1, -1, 30, + 31, -1, 33, -1, -1, -1, -1, -1, -1, 1057, + -1, 1059, 414, 720, -1, 417, 1408, -1, -1, -1, + 422, -1, -1, -1, -1, -1, -1, -1, 430, -1, + -1, -1, -1, -1, 65, -1, -1, -1, -1, 1087, + -1, -1, -1, 1257, 1258, -1, 1260, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 458, -1, 460, -1, + -1, -1, -1, 864, 865, -1, 867, -1, -1, -1, + -1, 473, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1296, -1, 1298, -1, 1478, 1479, 1480, -1, + 492, 1408, -1, 124, 895, 126, 1144, -1, -1, -1, + -1, 808, 133, 134, -1, -1, -1, -1, -1, 140, + 1502, 142, 143, 144, -1, 146, 147, 148, 149, 4, + 5, -1, 7, 8, 9, 1173, -1, 12, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, -1, -1, -1, -1, -1, -1, 1035, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + -1, -1, -1, 28, 945, 30, 31, -1, -1, -1, + -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, + 45, 1478, 1479, 1480, -1, -1, -1, -1, -1, 54, + -1, 56, 57, -1, 881, -1, 883, -1, -1, -1, + -1, -1, -1, -1, -1, 1502, -1, 894, -1, -1, + -1, 898, 899, 900, 1408, 3, 4, 5, 6, 7, + 8, 9, 233, 234, 12, -1, 14, -1, -1, 1010, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, 111, -1, -1, -1, - -1, -1, 1090, 1091, -1, 1093, -1, -1, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, -1, 45, -1, 47, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, - -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, 1153, 86, 87, 88, -1, - 90, -1, -1, 93, 94, -1, -1, -1, -1, -1, + 28, 1022, 30, 31, 255, -1, -1, -1, 36, -1, + -1, -1, -1, 41, 941, 942, 943, 45, -1, -1, + -1, -1, -1, -1, -1, -1, 54, -1, 56, 57, + 4, 5, -1, 7, 8, 9, -1, -1, -1, -1, + 14, -1, 70, 294, 1478, 1479, 1480, 1315, -1, -1, + -1, -1, 80, 675, 28, -1, 30, 31, 985, -1, + 88, -1, 36, -1, -1, 93, -1, -1, 1502, -1, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + 54, -1, 56, 57, -1, -1, -1, 1108, -1, -1, + -1, 342, -1, 344, 345, 3, 4, 5, 6, 7, + 8, 9, 724, -1, -1, -1, 14, -1, -1, 731, + 732, -1, 734, -1, -1, -1, -1, -1, -1, -1, + 28, -1, 30, 31, -1, -1, 1147, -1, 36, -1, + -1, -1, -1, 41, -1, -1, -1, 45, 389, -1, + -1, -1, -1, 765, -1, 767, 54, -1, 56, 57, + 772, 773, 774, -1, 62, -1, 407, -1, 780, -1, + -1, -1, 70, 414, -1, -1, 417, -1, -1, -1, + -1, 422, 80, -1, -1, -1, -1, -1, -1, -1, + 88, -1, -1, -1, -1, 93, -1, -1, -1, 1210, + -1, -1, -1, 1214, -1, -1, -1, -1, -1, 3, + 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, + 14, -1, 1480, 1140, 1141, 1142, 1143, 1144, -1, -1, + -1, 1148, -1, -1, 28, -1, 30, 31, 1249, 1497, + -1, -1, 36, -1, -1, -1, -1, 41, 489, -1, + 491, 45, -1, -1, 1171, 1172, 1173, -1, -1, -1, + 54, -1, 56, 57, -1, -1, 1, -1, 3, 4, + 5, 6, 7, 8, 9, 516, 70, -1, -1, 14, + -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, + -1, -1, -1, 28, 88, 30, 31, 32, -1, 93, + -1, 36, 37, -1, -1, -1, 41, -1, -1, -1, + 45, 46, 1323, 48, -1, -1, 1327, -1, -1, 54, + -1, 56, 57, -1, -1, 60, 12, 62, -1, 941, + 942, -1, -1, -1, -1, 70, -1, -1, 1349, 1350, + 1257, 1258, -1, 1260, -1, 80, -1, -1, -1, -1, + -1, 592, -1, 88, -1, -1, -1, -1, 93, -1, + -1, -1, 603, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, -1, 109, -1, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, + -1, -1, 1014, -1, -1, -1, -1, -1, -1, 1, + -1, 3, 4, 5, 6, 7, 8, 9, 659, -1, + 12, -1, 14, -1, -1, 666, 667, -1, -1, -1, + -1, -1, -1, 25, -1, 27, 1048, 678, -1, 31, + -1, -1, -1, -1, 36, -1, -1, -1, -1, 41, + -1, -1, -1, 45, -1, 47, -1, -1, -1, -1, + 701, -1, 54, -1, 56, 57, 58, 59, 60, -1, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, -1, 86, 87, 88, -1, 90, 91, + 92, 93, 94, 95, -1, 97, -1, -1, -1, -1, + 102, -1, -1, -1, -1, 107, 108, 109, 759, 111, + -1, 762, -1, -1, -1, -1, -1, -1, 1140, 1141, + -1, -1, -1, -1, -1, -1, 1148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, -1, -1, -1, -1, -1, 1, 1185, 3, 4, + -1, -1, -1, -1, -1, 796, 797, 798, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 808, -1, -1, + -1, -1, 1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, + 1202, -1, -1, -1, -1, 1207, -1, -1, -1, 28, + 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, + 39, 40, 41, 42, 43, -1, 45, -1, 47, -1, + 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, + -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, + 881, 70, 883, -1, -1, 1257, 1258, -1, 1260, 78, + 79, 80, -1, 894, -1, -1, -1, 86, 87, 88, + -1, 90, -1, -1, 93, 94, -1, -1, -1, -1, + 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 110, 13, 14, 15, 1297, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, + 41, 42, 43, 44, 45, 46, -1, -1, 49, 50, + 51, 52, 53, 54, -1, 56, 57, 58, -1, 60, + 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, + -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, + -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, + -1, -1, 93, -1, 95, -1, -1, -1, 1009, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 109, 110, + 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, 13, 14, 15, 1036, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, + 41, 42, 43, 44, 45, 46, -1, -1, 49, 50, + 51, 52, 53, 54, -1, 56, 57, 58, -1, 60, + 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, + -1, 1092, 1093, -1, 1095, -1, -1, 78, 79, 80, + -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, + -1, -1, 93, -1, 95, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, + -1, -1, 1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, + -1, -1, -1, -1, 1155, -1, -1, -1, -1, 28, + 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, + 39, 40, 41, 42, 43, -1, 45, -1, 47, -1, + 49, 50, 51, 52, 53, 54, 1187, 56, 57, 58, + -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, + -1, 70, -1, -1, 1205, -1, 1207, -1, -1, 78, + 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, + -1, 90, -1, -1, 93, 94, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - -1, -1, -1, -1, -1, 1203, -1, 1205, -1, -1, + -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, @@ -3357,6 +3332,13 @@ static const short yycheck[] = { 4, 109, -1, 41, -1, -1, -1, 45, 46, -1, 48, -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, + -1, 70, 1, -1, 3, 4, 5, 6, 7, 8, + 9, 80, -1, -1, -1, 14, -1, -1, -1, 88, + -1, -1, -1, -1, 93, -1, -1, -1, -1, 28, + -1, 30, 31, 32, -1, -1, -1, 36, 37, -1, + 109, -1, 41, -1, -1, -1, 45, 46, -1, 48, + -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, + -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, 93, -1, -1, 3, 4, 5, @@ -3563,34 +3545,60 @@ static const short yycheck[] = { 4, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 67, -1, -1, 70, 3, 4, 5, + -1, -1, -1, 67, -1, 1, 70, 3, 4, 5, 6, 7, 8, 9, 78, 79, 80, -1, 14, -1, -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, - -1, -1, 28, -1, 30, 31, -1, -1, -1, -1, - 36, -1, -1, -1, -1, 41, 110, -1, -1, 45, - -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, - 56, 57, -1, -1, -1, -1, 62, -1, -1, -1, - -1, -1, -1, -1, 70, 3, 4, 5, 6, 7, - 8, 9, -1, -1, 80, -1, 14, -1, -1, -1, - -1, -1, 88, -1, -1, -1, -1, 93, -1, -1, - 28, -1, 30, 31, -1, -1, -1, -1, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 45, -1, -1, - -1, -1, -1, -1, -1, -1, 54, -1, 56, 57, + -1, 27, 28, -1, 30, 31, 32, -1, -1, -1, + 36, -1, -1, -1, -1, 41, 110, -1, 44, 45, + 46, -1, 48, -1, -1, -1, -1, -1, 54, -1, + 56, 57, -1, -1, 60, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, + -1, -1, -1, 1, 80, 3, 4, 5, 6, 7, + 8, 9, 88, -1, -1, -1, 14, 93, -1, -1, + -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, + 28, -1, 30, 31, 32, -1, -1, -1, 36, -1, + -1, -1, -1, 41, -1, -1, -1, 45, 46, -1, + 48, -1, -1, -1, -1, -1, 54, -1, 56, 57, + -1, -1, 60, -1, 62, -1, -1, -1, -1, -1, + -1, -1, 70, 3, 4, 5, 6, 7, 8, 9, + -1, -1, 80, -1, 14, -1, -1, -1, -1, -1, + 88, -1, -1, -1, -1, 93, -1, -1, 28, -1, + 30, 31, -1, -1, -1, -1, 36, -1, -1, -1, + -1, 41, -1, -1, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, + 60, -1, 3, 4, 5, 6, 7, 8, 9, -1, + 70, -1, -1, 14, -1, -1, -1, -1, -1, -1, + 80, -1, -1, -1, -1, -1, -1, 28, 88, 30, + 31, -1, -1, 93, -1, 36, -1, -1, -1, -1, + 41, -1, -1, -1, 45, -1, -1, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, 3, 4, 5, + 6, 7, 8, 9, -1, -1, -1, -1, 14, 70, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + -1, -1, -1, -1, -1, 31, -1, 88, -1, -1, + 36, -1, 93, -1, -1, 41, -1, -1, -1, 45, + -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, + 56, 57, -1, -1, -1, -1, 31, -1, -1, -1, + -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, + -1, -1, 88, -1, -1, -1, -1, 93, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 70, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 80, -1, -1, -1, -1, -1, -1, -1, - 88, -1, -1, -1, -1, 93, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, - 107, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84 + -1, -1, -1, 59, -1, -1, 107, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, + 79, 80, 81, 82, 83, 84 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/lib/bison.simple" @@ -4091,106 +4099,106 @@ yyreduce: switch (yyn) { case 2: -#line 338 "parse.y" +#line 337 "parse.y" { finish_translation_unit (); ; break;} case 3: -#line 346 "parse.y" +#line 345 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 4: -#line 348 "parse.y" +#line 347 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 5: -#line 350 "parse.y" +#line 349 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 8: -#line 359 "parse.y" +#line 358 "parse.y" { have_extern_spec = 1; used_extern_spec = 0; yyval.ttype = NULL_TREE; ; break;} case 9: -#line 364 "parse.y" +#line 363 "parse.y" { have_extern_spec = 0; ; break;} case 10: -#line 369 "parse.y" +#line 368 "parse.y" { yyval.itype = pedantic; pedantic = 0; ; break;} case 12: -#line 378 "parse.y" +#line 377 "parse.y" { if (pending_lang_change) do_pending_lang_change(); ; break;} case 13: -#line 380 "parse.y" +#line 379 "parse.y" { if (! toplevel_bindings_p () && ! pseudo_global_level_p()) pop_everything (); ; break;} case 14: -#line 386 "parse.y" +#line 385 "parse.y" { if (pending_inlines) do_pending_inlines (); ; break;} case 15: -#line 388 "parse.y" +#line 387 "parse.y" { if (pending_inlines) do_pending_inlines (); ; break;} case 16: -#line 390 "parse.y" +#line 389 "parse.y" { if (pending_inlines) do_pending_inlines (); ; break;} case 17: -#line 392 "parse.y" +#line 391 "parse.y" { if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype); assemble_asm (yyvsp[-2].ttype); ; break;} case 18: -#line 395 "parse.y" +#line 394 "parse.y" { pop_lang_context (); ; break;} case 19: -#line 397 "parse.y" +#line 396 "parse.y" { if (pending_inlines) do_pending_inlines (); pop_lang_context (); ; break;} case 20: -#line 400 "parse.y" +#line 399 "parse.y" { if (pending_inlines) do_pending_inlines (); pop_lang_context (); ; break;} case 21: -#line 403 "parse.y" +#line 402 "parse.y" { push_namespace (yyvsp[-1].ttype); ; break;} case 22: -#line 405 "parse.y" +#line 404 "parse.y" { pop_namespace (); ; break;} case 23: -#line 407 "parse.y" +#line 406 "parse.y" { push_namespace (NULL_TREE); ; break;} case 24: -#line 409 "parse.y" +#line 408 "parse.y" { pop_namespace (); ; break;} case 26: -#line 412 "parse.y" +#line 411 "parse.y" { do_toplevel_using_decl (yyvsp[-1].ttype); ; break;} case 28: -#line 415 "parse.y" +#line 414 "parse.y" { pedantic = yyvsp[-1].itype; ; break;} case 29: -#line 420 "parse.y" +#line 419 "parse.y" { begin_only_namespace_names (); ; break;} case 30: -#line 422 "parse.y" +#line 421 "parse.y" { end_only_namespace_names (); if (lastiddecl) @@ -4199,35 +4207,35 @@ case 30: ; break;} case 31: -#line 432 "parse.y" +#line 431 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 32: -#line 434 "parse.y" +#line 433 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 33: -#line 436 "parse.y" +#line 435 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 34: -#line 441 "parse.y" +#line 440 "parse.y" { yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 35: -#line 443 "parse.y" +#line 442 "parse.y" { yyval.ttype = build_parse_node (SCOPE_REF, global_namespace, yyvsp[0].ttype); ; break;} case 36: -#line 445 "parse.y" +#line 444 "parse.y" { yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 37: -#line 450 "parse.y" +#line 449 "parse.y" { begin_only_namespace_names (); ; break;} case 38: -#line 452 "parse.y" +#line 451 "parse.y" { end_only_namespace_names (); /* If no declaration was found, the using-directive is @@ -4239,7 +4247,7 @@ case 38: ; break;} case 39: -#line 465 "parse.y" +#line 464 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; @@ -4247,7 +4255,7 @@ case 39: ; break;} case 40: -#line 471 "parse.y" +#line 470 "parse.y" { yyval.ttype = yyvsp[-1].ttype; if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) @@ -4256,86 +4264,86 @@ case 40: ; break;} case 43: -#line 482 "parse.y" +#line 481 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 44: -#line 484 "parse.y" +#line 483 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 45: -#line 489 "parse.y" +#line 488 "parse.y" { push_lang_context (yyvsp[0].ttype); ; break;} case 46: -#line 491 "parse.y" +#line 490 "parse.y" { if (current_lang_name != yyvsp[0].ttype) cp_error ("use of linkage spec `%D' is different from previous spec `%D'", yyvsp[0].ttype, current_lang_name); pop_lang_context (); push_lang_context (yyvsp[0].ttype); ; break;} case 47: -#line 498 "parse.y" +#line 497 "parse.y" { begin_template_parm_list (); ; break;} case 48: -#line 500 "parse.y" +#line 499 "parse.y" { yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ; break;} case 49: -#line 502 "parse.y" +#line 501 "parse.y" { begin_specialization(); yyval.ttype = NULL_TREE; ; break;} case 50: -#line 508 "parse.y" +#line 507 "parse.y" { yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ; break;} case 51: -#line 510 "parse.y" +#line 509 "parse.y" { yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 52: -#line 515 "parse.y" +#line 514 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 53: -#line 517 "parse.y" +#line 516 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 54: -#line 521 "parse.y" +#line 520 "parse.y" { yyval.ttype = finish_template_type_parm (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 55: -#line 523 "parse.y" +#line 522 "parse.y" { yyval.ttype = finish_template_type_parm (class_type_node, yyvsp[0].ttype); ; break;} case 56: -#line 528 "parse.y" +#line 527 "parse.y" { yyval.ttype = finish_template_template_parm (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 57: -#line 540 "parse.y" +#line 539 "parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 58: -#line 542 "parse.y" +#line 541 "parse.y" { yyval.ttype = build_tree_list (groktypename (yyvsp[0].ftype.t), yyvsp[-2].ttype); ; break;} case 59: -#line 544 "parse.y" +#line 543 "parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ; break;} case 60: -#line 546 "parse.y" +#line 545 "parse.y" { yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ftype.t); ; break;} case 61: -#line 548 "parse.y" +#line 547 "parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 62: -#line 550 "parse.y" +#line 549 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) != TEMPLATE_DECL && TREE_CODE (yyvsp[0].ttype) != TEMPLATE_TEMPLATE_PARM @@ -4348,66 +4356,66 @@ case 62: ; break;} case 63: -#line 564 "parse.y" +#line 563 "parse.y" { finish_template_decl (yyvsp[-1].ttype); ; break;} case 64: -#line 566 "parse.y" +#line 565 "parse.y" { finish_template_decl (yyvsp[-1].ttype); ; break;} case 65: -#line 571 "parse.y" +#line 570 "parse.y" { if (pending_inlines) do_pending_inlines (); ; break;} case 66: -#line 573 "parse.y" +#line 572 "parse.y" { if (pending_inlines) do_pending_inlines (); ; break;} case 67: -#line 575 "parse.y" +#line 574 "parse.y" { if (pending_inlines) do_pending_inlines (); ; break;} case 68: -#line 577 "parse.y" +#line 576 "parse.y" { if (pending_inlines) do_pending_inlines (); pop_lang_context (); ; break;} case 69: -#line 580 "parse.y" +#line 579 "parse.y" { if (pending_inlines) do_pending_inlines (); pop_lang_context (); ; break;} case 70: -#line 583 "parse.y" +#line 582 "parse.y" { pedantic = yyvsp[-1].itype; ; break;} case 72: -#line 589 "parse.y" +#line 588 "parse.y" {; break;} case 73: -#line 591 "parse.y" +#line 590 "parse.y" { note_list_got_semicolon (yyvsp[-2].ftype.t); ; break;} case 74: -#line 593 "parse.y" +#line 592 "parse.y" { maybe_process_partial_specialization (yyvsp[-1].ftype.t); note_got_semicolon (yyvsp[-1].ftype.t); ; break;} case 76: -#line 600 "parse.y" +#line 599 "parse.y" {; break;} case 77: -#line 602 "parse.y" +#line 601 "parse.y" { note_list_got_semicolon (yyvsp[-2].ftype.t); ; break;} case 78: -#line 604 "parse.y" +#line 603 "parse.y" { pedwarn ("empty declaration"); ; break;} case 80: -#line 607 "parse.y" +#line 606 "parse.y" { tree t, attrs; split_specs_attrs (yyvsp[-1].ftype.t, &t, &attrs); @@ -4416,124 +4424,124 @@ case 80: ; break;} case 84: -#line 620 "parse.y" +#line 619 "parse.y" { yyval.itype = 0; ; break;} case 85: -#line 622 "parse.y" +#line 621 "parse.y" { yyval.itype = 1; ; break;} case 91: -#line 638 "parse.y" +#line 637 "parse.y" { finish_function (lineno, (int)yyvsp[-1].itype, 0); ; break;} case 92: -#line 640 "parse.y" +#line 639 "parse.y" { ; break;} case 93: -#line 642 "parse.y" +#line 641 "parse.y" { ; break;} case 94: -#line 647 "parse.y" +#line 646 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 95: -#line 649 "parse.y" +#line 648 "parse.y" { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 96: -#line 651 "parse.y" +#line 650 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 97: -#line 655 "parse.y" +#line 654 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 98: -#line 657 "parse.y" +#line 656 "parse.y" { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 99: -#line 659 "parse.y" +#line 658 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 100: -#line 663 "parse.y" +#line 662 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 101: -#line 665 "parse.y" +#line 664 "parse.y" { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 102: -#line 667 "parse.y" +#line 666 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 103: -#line 671 "parse.y" +#line 670 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 104: -#line 673 "parse.y" +#line 672 "parse.y" { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 105: -#line 675 "parse.y" +#line 674 "parse.y" { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 106: -#line 682 "parse.y" +#line 681 "parse.y" { if (!begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype)) YYERROR1; ; break;} case 107: -#line 685 "parse.y" +#line 684 "parse.y" { if (!begin_function_definition (yyvsp[-1].ttype, yyvsp[0].ttype)) YYERROR1; ; break;} case 108: -#line 688 "parse.y" +#line 687 "parse.y" { if (!begin_function_definition (NULL_TREE, yyvsp[0].ttype)) YYERROR1; ; break;} case 109: -#line 691 "parse.y" +#line 690 "parse.y" { if (!begin_function_definition (yyvsp[-1].ttype, yyvsp[0].ttype)) YYERROR1; ; break;} case 110: -#line 694 "parse.y" +#line 693 "parse.y" { if (!begin_function_definition (NULL_TREE, yyvsp[0].ttype)) YYERROR1; ; break;} case 111: -#line 700 "parse.y" +#line 699 "parse.y" { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 112: -#line 702 "parse.y" +#line 701 "parse.y" { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 113: -#line 704 "parse.y" +#line 703 "parse.y" { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 114: -#line 706 "parse.y" +#line 705 "parse.y" { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 115: -#line 713 "parse.y" +#line 712 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ttype); yyval.ttype = start_method (specs, yyvsp[0].ttype); rest_of_mdef: @@ -4544,34 +4552,34 @@ case 115: reinit_parse_for_method (yychar, yyval.ttype); ; break;} case 116: -#line 722 "parse.y" +#line 721 "parse.y" { yyval.ttype = start_method (NULL_TREE, yyvsp[0].ttype); goto rest_of_mdef; ; break;} case 117: -#line 724 "parse.y" +#line 723 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ; break;} case 118: -#line 727 "parse.y" +#line 726 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ttype); yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ; break;} case 119: -#line 730 "parse.y" +#line 729 "parse.y" { yyval.ttype = start_method (NULL_TREE, yyval.ttype); goto rest_of_mdef; ; break;} case 120: -#line 732 "parse.y" +#line 731 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ttype); yyval.ttype = start_method (specs, yyvsp[0].ttype); goto rest_of_mdef; ; break;} case 121: -#line 735 "parse.y" +#line 734 "parse.y" { yyval.ttype = start_method (NULL_TREE, yyval.ttype); goto rest_of_mdef; ; break;} case 122: -#line 740 "parse.y" +#line 739 "parse.y" { if (! current_function_parms_stored) store_parm_decls (); @@ -4579,19 +4587,19 @@ case 122: ; break;} case 123: -#line 749 "parse.y" +#line 748 "parse.y" { store_return_init (yyval.ttype, yyvsp[0].ttype); ; break;} case 124: -#line 751 "parse.y" +#line 750 "parse.y" { store_return_init (yyval.ttype, yyvsp[-1].ttype); ; break;} case 125: -#line 753 "parse.y" +#line 752 "parse.y" { store_return_init (yyval.ttype, NULL_TREE); ; break;} case 126: -#line 758 "parse.y" +#line 757 "parse.y" { if (yyvsp[0].itype == 0) error ("no base initializers given following ':'"); @@ -4603,7 +4611,7 @@ case 126: ; break;} case 127: -#line 771 "parse.y" +#line 770 "parse.y" { if (! current_function_parms_stored) store_parm_decls (); @@ -4622,15 +4630,15 @@ case 127: ; break;} case 128: -#line 791 "parse.y" +#line 790 "parse.y" { yyval.itype = 0; ; break;} case 129: -#line 793 "parse.y" +#line 792 "parse.y" { yyval.itype = 1; ; break;} case 132: -#line 800 "parse.y" +#line 799 "parse.y" { if (current_class_name) pedwarn ("anachronistic old style base class initializer"); @@ -4638,7 +4646,7 @@ case 132: ; break;} case 133: -#line 806 "parse.y" +#line 805 "parse.y" { if (current_class_name) pedwarn ("anachronistic old style base class initializer"); @@ -4646,89 +4654,89 @@ case 133: ; break;} case 134: -#line 812 "parse.y" +#line 811 "parse.y" { expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 135: -#line 814 "parse.y" +#line 813 "parse.y" { expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ; break;} case 136: -#line 816 "parse.y" +#line 815 "parse.y" { expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 137: -#line 818 "parse.y" +#line 817 "parse.y" { expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ; break;} case 138: -#line 820 "parse.y" +#line 819 "parse.y" { expand_member_init (current_class_ref, TYPE_MAIN_DECL (yyvsp[-3].ttype), yyvsp[-1].ttype); ; break;} case 139: -#line 823 "parse.y" +#line 822 "parse.y" { expand_member_init (current_class_ref, TYPE_MAIN_DECL (yyvsp[-1].ttype), void_type_node); ; break;} case 151: -#line 849 "parse.y" +#line 848 "parse.y" { do_type_instantiation (yyvsp[-1].ftype.t, NULL_TREE); yyungetc (';', 1); ; break;} case 153: -#line 853 "parse.y" +#line 852 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); do_decl_instantiation (specs, yyvsp[0].ttype, NULL_TREE); ; break;} case 155: -#line 857 "parse.y" +#line 856 "parse.y" { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 157: -#line 860 "parse.y" +#line 859 "parse.y" { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 159: -#line 863 "parse.y" +#line 862 "parse.y" { do_type_instantiation (yyvsp[-1].ftype.t, yyvsp[-4].ttype); yyungetc (';', 1); ; break;} case 161: -#line 868 "parse.y" +#line 867 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); do_decl_instantiation (specs, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} case 163: -#line 872 "parse.y" +#line 871 "parse.y" { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ; break;} case 165: -#line 875 "parse.y" +#line 874 "parse.y" { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ; break;} case 167: -#line 880 "parse.y" +#line 879 "parse.y" { begin_explicit_instantiation(); ; break;} case 168: -#line 883 "parse.y" +#line 882 "parse.y" { end_explicit_instantiation(); ; break;} case 169: -#line 892 "parse.y" +#line 891 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 170: -#line 895 "parse.y" +#line 894 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 172: -#line 902 "parse.y" +#line 901 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 173: -#line 906 "parse.y" +#line 905 "parse.y" { if (yychar == YYEMPTY) yychar = YYLEX; @@ -4738,7 +4746,7 @@ case 173: ; break;} case 175: -#line 917 "parse.y" +#line 916 "parse.y" { /* Handle `Class<Class<Type>>' without space in the `>>' */ pedwarn ("`>>' should be `> >' in template class name"); @@ -4746,79 +4754,79 @@ case 175: ; break;} case 176: -#line 926 "parse.y" +#line 925 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 178: -#line 932 "parse.y" +#line 931 "parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ; break;} case 179: -#line 934 "parse.y" +#line 933 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 180: -#line 939 "parse.y" +#line 938 "parse.y" { yyval.ttype = groktypename (yyvsp[0].ftype.t); ; break;} case 181: -#line 941 "parse.y" +#line 940 "parse.y" { yyval.ttype = lastiddecl; ; break;} case 183: -#line 947 "parse.y" +#line 946 "parse.y" { yyval.code = NEGATE_EXPR; ; break;} case 184: -#line 949 "parse.y" +#line 948 "parse.y" { yyval.code = CONVERT_EXPR; ; break;} case 185: -#line 951 "parse.y" +#line 950 "parse.y" { yyval.code = PREINCREMENT_EXPR; ; break;} case 186: -#line 953 "parse.y" +#line 952 "parse.y" { yyval.code = PREDECREMENT_EXPR; ; break;} case 187: -#line 955 "parse.y" +#line 954 "parse.y" { yyval.code = TRUTH_NOT_EXPR; ; break;} case 188: -#line 960 "parse.y" +#line 959 "parse.y" { yyval.ttype = build_x_compound_expr (yyval.ttype); ; break;} case 190: -#line 966 "parse.y" +#line 965 "parse.y" { error ("ANSI C++ forbids an empty condition for `%s'", cond_stmt_keyword); yyval.ttype = integer_zero_node; ; break;} case 191: -#line 970 "parse.y" +#line 969 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 192: -#line 975 "parse.y" +#line 974 "parse.y" { error ("ANSI C++ forbids an empty condition for `%s'", cond_stmt_keyword); yyval.ttype = integer_zero_node; ; break;} case 193: -#line 979 "parse.y" +#line 978 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 194: -#line 984 "parse.y" +#line 983 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 196: -#line 987 "parse.y" +#line 986 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 197: -#line 992 "parse.y" +#line 991 "parse.y" { { tree d; for (d = getdecls (); d; d = TREE_CHAIN (d)) @@ -4837,7 +4845,7 @@ case 197: ; break;} case 198: -#line 1009 "parse.y" +#line 1008 "parse.y" { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype, 1, LOOKUP_ONLYCONVERTING); resume_momentary (yyvsp[-2].itype); @@ -4847,182 +4855,182 @@ case 198: ; break;} case 204: -#line 1028 "parse.y" +#line 1027 "parse.y" { yyval.ttype = begin_compound_stmt (1); ; break;} case 205: -#line 1030 "parse.y" +#line 1029 "parse.y" { finish_compound_stmt (1, yyvsp[-1].ttype); ; break;} case 207: -#line 1037 "parse.y" +#line 1036 "parse.y" { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, build_expr_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 208: -#line 1040 "parse.y" +#line 1039 "parse.y" { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, build_expr_list (NULL_TREE, error_mark_node)); ; break;} case 209: -#line 1043 "parse.y" +#line 1042 "parse.y" { chainon (yyval.ttype, build_expr_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 210: -#line 1045 "parse.y" +#line 1044 "parse.y" { chainon (yyval.ttype, build_expr_list (NULL_TREE, error_mark_node)); ; break;} case 211: -#line 1050 "parse.y" +#line 1049 "parse.y" { yyval.ttype = build_expr_list (NULL_TREE, yyval.ttype); ; break;} case 213: -#line 1056 "parse.y" +#line 1055 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 214: -#line 1059 "parse.y" +#line 1058 "parse.y" { yyval.ttype = yyvsp[0].ttype; pedantic = yyvsp[-1].itype; ; break;} case 215: -#line 1062 "parse.y" +#line 1061 "parse.y" { yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ; break;} case 216: -#line 1064 "parse.y" +#line 1063 "parse.y" { yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ; break;} case 217: -#line 1066 "parse.y" +#line 1065 "parse.y" { yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ; break;} case 218: -#line 1068 "parse.y" +#line 1067 "parse.y" { yyval.ttype = finish_unary_op_expr (yyvsp[-1].code, yyvsp[0].ttype); ; break;} case 219: -#line 1071 "parse.y" +#line 1070 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids `&&'"); yyval.ttype = finish_label_address_expr (yyvsp[0].ttype); ; break;} case 220: -#line 1075 "parse.y" +#line 1074 "parse.y" { yyval.ttype = expr_sizeof (yyvsp[0].ttype); ; break;} case 221: -#line 1077 "parse.y" +#line 1076 "parse.y" { yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ftype.t)); ; break;} case 222: -#line 1079 "parse.y" +#line 1078 "parse.y" { yyval.ttype = grok_alignof (yyvsp[0].ttype); ; break;} case 223: -#line 1081 "parse.y" +#line 1080 "parse.y" { yyval.ttype = c_alignof (groktypename (yyvsp[-1].ftype.t)); check_for_new_type ("alignof", yyvsp[-1].ftype); ; break;} case 224: -#line 1087 "parse.y" +#line 1086 "parse.y" { yyval.ttype = build_new (NULL_TREE, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-1].itype); check_for_new_type ("new", yyvsp[0].ftype); ; break;} case 225: -#line 1090 "parse.y" +#line 1089 "parse.y" { yyval.ttype = build_new (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-2].itype); check_for_new_type ("new", yyvsp[-1].ftype); ; break;} case 226: -#line 1093 "parse.y" +#line 1092 "parse.y" { yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-2].itype); check_for_new_type ("new", yyvsp[0].ftype); ; break;} case 227: -#line 1096 "parse.y" +#line 1095 "parse.y" { yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-3].itype); check_for_new_type ("new", yyvsp[-1].ftype); ; break;} case 228: -#line 1109 "parse.y" +#line 1108 "parse.y" { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-1].ftype.t), NULL_TREE, yyvsp[-4].itype); check_for_new_type ("new", yyvsp[-1].ftype); ; break;} case 229: -#line 1114 "parse.y" +#line 1113 "parse.y" { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-5].itype); check_for_new_type ("new", yyvsp[-2].ftype); ; break;} case 230: -#line 1118 "parse.y" +#line 1117 "parse.y" { yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-1].ftype.t), NULL_TREE, yyvsp[-5].itype); check_for_new_type ("new", yyvsp[-1].ftype); ; break;} case 231: -#line 1122 "parse.y" +#line 1121 "parse.y" { yyval.ttype = build_new (yyvsp[-5].ttype, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-6].itype); check_for_new_type ("new", yyvsp[-2].ftype); ; break;} case 232: -#line 1126 "parse.y" +#line 1125 "parse.y" { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ; break;} case 233: -#line 1128 "parse.y" +#line 1127 "parse.y" { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype); if (yychar == YYEMPTY) yychar = YYLEX; ; break;} case 234: -#line 1132 "parse.y" +#line 1131 "parse.y" { yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype); if (yychar == YYEMPTY) yychar = YYLEX; ; break;} case 235: -#line 1136 "parse.y" +#line 1135 "parse.y" { yyval.ttype = build_x_unary_op (REALPART_EXPR, yyvsp[0].ttype); ; break;} case 236: -#line 1138 "parse.y" +#line 1137 "parse.y" { yyval.ttype = build_x_unary_op (IMAGPART_EXPR, yyvsp[0].ttype); ; break;} case 237: -#line 1148 "parse.y" +#line 1147 "parse.y" { finish_new_placement (NULL_TREE, yyvsp[-2].itype); ; break;} case 238: -#line 1151 "parse.y" +#line 1150 "parse.y" { yyval.itype = begin_new_placement (); ; break;} case 239: -#line 1155 "parse.y" +#line 1154 "parse.y" { yyval.ttype = finish_new_placement (yyvsp[-1].ttype, yyvsp[-2].itype); ; break;} case 240: -#line 1157 "parse.y" +#line 1156 "parse.y" { cp_pedwarn ("old style placement syntax, use () instead"); yyval.ttype = finish_new_placement (yyvsp[-1].ttype, yyvsp[-2].itype); ; break;} case 241: -#line 1163 "parse.y" +#line 1162 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 242: -#line 1165 "parse.y" +#line 1164 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 243: -#line 1167 "parse.y" +#line 1166 "parse.y" { cp_error ("`%T' is not a valid expression", yyvsp[-1].ftype.t); yyval.ttype = error_mark_node; ; break;} case 244: -#line 1175 "parse.y" +#line 1174 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids initialization of new expression with `='"); @@ -5034,23 +5042,23 @@ case 244: ; break;} case 245: -#line 1189 "parse.y" +#line 1188 "parse.y" { yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0); yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE); check_for_new_type ("cast", yyvsp[-1].ftype); ; break;} case 246: -#line 1193 "parse.y" +#line 1192 "parse.y" { yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0); yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE); check_for_new_type ("cast", yyvsp[-1].ftype); ; break;} case 248: -#line 1201 "parse.y" +#line 1200 "parse.y" { yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ; break;} case 249: -#line 1203 "parse.y" +#line 1202 "parse.y" { tree init = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); @@ -5063,161 +5071,161 @@ case 249: ; break;} case 251: -#line 1219 "parse.y" +#line 1218 "parse.y" { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ; break;} case 252: -#line 1221 "parse.y" +#line 1220 "parse.y" { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ; break;} case 253: -#line 1223 "parse.y" +#line 1222 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 254: -#line 1225 "parse.y" +#line 1224 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 255: -#line 1227 "parse.y" +#line 1226 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 256: -#line 1229 "parse.y" +#line 1228 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 257: -#line 1231 "parse.y" +#line 1230 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 258: -#line 1233 "parse.y" +#line 1232 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 259: -#line 1235 "parse.y" +#line 1234 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 260: -#line 1237 "parse.y" +#line 1236 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 261: -#line 1239 "parse.y" +#line 1238 "parse.y" { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ; break;} case 262: -#line 1241 "parse.y" +#line 1240 "parse.y" { yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ; break;} case 263: -#line 1243 "parse.y" +#line 1242 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 264: -#line 1245 "parse.y" +#line 1244 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 265: -#line 1247 "parse.y" +#line 1246 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 266: -#line 1249 "parse.y" +#line 1248 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 267: -#line 1251 "parse.y" +#line 1250 "parse.y" { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ; break;} case 268: -#line 1253 "parse.y" +#line 1252 "parse.y" { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ; break;} case 269: -#line 1255 "parse.y" +#line 1254 "parse.y" { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ; break;} case 270: -#line 1257 "parse.y" +#line 1256 "parse.y" { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 271: -#line 1259 "parse.y" +#line 1258 "parse.y" { yyval.ttype = build_x_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype); if (yyval.ttype != error_mark_node) C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ; break;} case 272: -#line 1263 "parse.y" +#line 1262 "parse.y" { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ; break;} case 273: -#line 1265 "parse.y" +#line 1264 "parse.y" { yyval.ttype = build_throw (NULL_TREE); ; break;} case 274: -#line 1267 "parse.y" +#line 1266 "parse.y" { yyval.ttype = build_throw (yyvsp[0].ttype); ; break;} case 275: -#line 1285 "parse.y" +#line 1284 "parse.y" { yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ; break;} case 276: -#line 1287 "parse.y" +#line 1286 "parse.y" { yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ; break;} case 282: -#line 1296 "parse.y" +#line 1295 "parse.y" { yyval.ttype = do_identifier (yyvsp[-1].ttype, 1, NULL_TREE); ; break;} case 283: -#line 1300 "parse.y" +#line 1299 "parse.y" { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 284: -#line 1302 "parse.y" +#line 1301 "parse.y" { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 285: -#line 1307 "parse.y" +#line 1306 "parse.y" { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 286: -#line 1309 "parse.y" +#line 1308 "parse.y" { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 287: -#line 1312 "parse.y" +#line 1311 "parse.y" { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 292: -#line 1324 "parse.y" +#line 1323 "parse.y" { yyval.ttype = build_parse_node (INDIRECT_REF, yyvsp[0].ttype); ; break;} case 293: -#line 1326 "parse.y" +#line 1325 "parse.y" { yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ; break;} case 294: -#line 1328 "parse.y" +#line 1327 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 295: -#line 1333 "parse.y" +#line 1332 "parse.y" { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 296: -#line 1335 "parse.y" +#line 1334 "parse.y" { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 300: -#line 1345 "parse.y" +#line 1344 "parse.y" { yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ; break;} case 301: -#line 1350 "parse.y" +#line 1349 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == BIT_NOT_EXPR) yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyvsp[0].ttype, 0)); @@ -5226,7 +5234,7 @@ case 301: ; break;} case 304: -#line 1359 "parse.y" +#line 1358 "parse.y" { if (processing_template_decl) push_obstacks (&permanent_obstack, &permanent_obstack); @@ -5242,20 +5250,20 @@ case 304: ; break;} case 305: -#line 1373 "parse.y" +#line 1372 "parse.y" { yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); ; break;} case 306: -#line 1375 "parse.y" +#line 1374 "parse.y" { yyvsp[-1].ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype); yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); ; break;} case 307: -#line 1378 "parse.y" +#line 1377 "parse.y" { yyval.ttype = error_mark_node; ; break;} case 308: -#line 1380 "parse.y" +#line 1379 "parse.y" { tree scope = current_scope (); if (!scope || TREE_CODE (scope) != FUNCTION_DECL) { @@ -5268,43 +5276,43 @@ case 308: ; break;} case 309: -#line 1391 "parse.y" +#line 1390 "parse.y" { yyval.ttype = finish_stmt_expr (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 310: -#line 1396 "parse.y" +#line 1395 "parse.y" { yyval.ttype = finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); ; break;} case 311: -#line 1398 "parse.y" +#line 1397 "parse.y" { yyval.ttype = finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 1); ; break;} case 312: -#line 1400 "parse.y" +#line 1399 "parse.y" { yyval.ttype = finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 0); ; break;} case 313: -#line 1402 "parse.y" +#line 1401 "parse.y" { yyval.ttype = finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 0); ; break;} case 314: -#line 1404 "parse.y" +#line 1403 "parse.y" { yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ; break;} case 315: -#line 1406 "parse.y" +#line 1405 "parse.y" { yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTINCREMENT_EXPR); ; break;} case 316: -#line 1408 "parse.y" +#line 1407 "parse.y" { yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTDECREMENT_EXPR); ; break;} case 317: -#line 1411 "parse.y" +#line 1410 "parse.y" { yyval.ttype = finish_this_expr (); ; break;} case 318: -#line 1413 "parse.y" +#line 1412 "parse.y" { tree type = NULL_TREE; tree id = yyval.ttype; @@ -5350,49 +5358,49 @@ case 318: ; break;} case 320: -#line 1458 "parse.y" +#line 1457 "parse.y" { tree type = groktypename (yyvsp[-4].ftype.t); check_for_new_type ("dynamic_cast", yyvsp[-4].ftype); yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ; break;} case 321: -#line 1462 "parse.y" +#line 1461 "parse.y" { tree type = groktypename (yyvsp[-4].ftype.t); check_for_new_type ("static_cast", yyvsp[-4].ftype); yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ; break;} case 322: -#line 1466 "parse.y" +#line 1465 "parse.y" { tree type = groktypename (yyvsp[-4].ftype.t); check_for_new_type ("reinterpret_cast", yyvsp[-4].ftype); yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ; break;} case 323: -#line 1470 "parse.y" +#line 1469 "parse.y" { tree type = groktypename (yyvsp[-4].ftype.t); check_for_new_type ("const_cast", yyvsp[-4].ftype); yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ; break;} case 324: -#line 1474 "parse.y" +#line 1473 "parse.y" { yyval.ttype = build_x_typeid (yyvsp[-1].ttype); ; break;} case 325: -#line 1476 "parse.y" +#line 1475 "parse.y" { tree type = groktypename (yyvsp[-1].ftype.t); check_for_new_type ("typeid", yyvsp[-1].ftype); yyval.ttype = get_typeid (TYPE_MAIN_VARIANT (type)); ; break;} case 326: -#line 1480 "parse.y" +#line 1479 "parse.y" { yyval.ttype = do_scoped_id (yyvsp[0].ttype, 1); ; break;} case 327: -#line 1482 "parse.y" +#line 1481 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 328: -#line 1484 "parse.y" +#line 1483 "parse.y" { got_scope = NULL_TREE; if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) @@ -5402,102 +5410,102 @@ case 328: ; break;} case 329: -#line 1492 "parse.y" +#line 1491 "parse.y" { yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ; break;} case 330: -#line 1494 "parse.y" +#line 1493 "parse.y" { yyval.ttype = finish_qualified_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 331: -#line 1496 "parse.y" +#line 1495 "parse.y" { yyval.ttype = finish_qualified_call_expr (yyvsp[-1].ttype, NULL_TREE); ; break;} case 332: -#line 1498 "parse.y" +#line 1497 "parse.y" { yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ; break;} case 333: -#line 1502 "parse.y" +#line 1501 "parse.y" { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ; break;} case 334: -#line 1504 "parse.y" +#line 1503 "parse.y" { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 335: -#line 1506 "parse.y" +#line 1505 "parse.y" { yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ; break;} case 336: -#line 1508 "parse.y" +#line 1507 "parse.y" { if (processing_template_decl) yyval.ttype = build_min_nt (COMPONENT_REF, yyvsp[-1].ttype, copy_to_permanent (yyvsp[0].ttype)); else yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ; break;} case 337: -#line 1513 "parse.y" +#line 1512 "parse.y" { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ; break;} case 338: -#line 1515 "parse.y" +#line 1514 "parse.y" { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 339: -#line 1517 "parse.y" +#line 1516 "parse.y" { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ; break;} case 340: -#line 1519 "parse.y" +#line 1518 "parse.y" { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 341: -#line 1522 "parse.y" +#line 1521 "parse.y" { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-3].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 342: -#line 1524 "parse.y" +#line 1523 "parse.y" { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-5].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ; break;} case 343: -#line 1526 "parse.y" +#line 1525 "parse.y" { yyval.ttype = error_mark_node; ; break;} case 344: -#line 1571 "parse.y" +#line 1570 "parse.y" { yyval.itype = 0; ; break;} case 345: -#line 1573 "parse.y" +#line 1572 "parse.y" { got_scope = NULL_TREE; yyval.itype = 1; ; break;} case 346: -#line 1578 "parse.y" +#line 1577 "parse.y" { yyval.itype = 0; ; break;} case 347: -#line 1580 "parse.y" +#line 1579 "parse.y" { got_scope = NULL_TREE; yyval.itype = 1; ; break;} case 348: -#line 1585 "parse.y" +#line 1584 "parse.y" { yyval.ttype = boolean_true_node; ; break;} case 349: -#line 1587 "parse.y" +#line 1586 "parse.y" { yyval.ttype = boolean_false_node; ; break;} case 351: -#line 1594 "parse.y" +#line 1593 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} case 352: -#line 1599 "parse.y" +#line 1598 "parse.y" { if (! current_function_parms_stored) store_parm_decls (); @@ -5509,18 +5517,18 @@ case 352: ; break;} case 353: -#line 1612 "parse.y" +#line 1611 "parse.y" { got_object = TREE_TYPE (yyval.ttype); ; break;} case 354: -#line 1614 "parse.y" +#line 1613 "parse.y" { yyval.ttype = build_x_arrow (yyval.ttype); got_object = TREE_TYPE (yyval.ttype); ; break;} case 355: -#line 1622 "parse.y" +#line 1621 "parse.y" { resume_momentary (yyvsp[-1].itype); if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t))) @@ -5528,138 +5536,138 @@ case 355: ; break;} case 356: -#line 1628 "parse.y" +#line 1627 "parse.y" { resume_momentary (yyvsp[-1].itype); note_list_got_semicolon (yyvsp[-2].ftype.t); ; break;} case 357: -#line 1633 "parse.y" +#line 1632 "parse.y" { resume_momentary (yyvsp[-1].itype); ; break;} case 358: -#line 1635 "parse.y" +#line 1634 "parse.y" { shadow_tag (yyvsp[-1].ftype.t); note_list_got_semicolon (yyvsp[-1].ftype.t); ; break;} case 359: -#line 1640 "parse.y" +#line 1639 "parse.y" { warning ("empty declaration"); ; break;} case 360: -#line 1642 "parse.y" +#line 1641 "parse.y" { pedantic = yyvsp[-1].itype; ; break;} case 363: -#line 1656 "parse.y" +#line 1655 "parse.y" { yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (), NULL_TREE, NULL_TREE); ; break;} case 364: -#line 1659 "parse.y" +#line 1658 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE, NULL_TREE); ; break;} case 365: -#line 1666 "parse.y" +#line 1665 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 366: -#line 1669 "parse.y" +#line 1668 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 367: -#line 1672 "parse.y" +#line 1671 "parse.y" { yyval.ftype.t = build_decl_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 368: -#line 1675 "parse.y" +#line 1674 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 369: -#line 1678 "parse.y" +#line 1677 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 372: -#line 1694 "parse.y" +#line 1693 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 373: -#line 1697 "parse.y" +#line 1696 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 374: -#line 1700 "parse.y" +#line 1699 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, yyvsp[0].ttype)); yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; break;} case 375: -#line 1703 "parse.y" +#line 1702 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 376: -#line 1706 "parse.y" +#line 1705 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 377: -#line 1709 "parse.y" +#line 1708 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ttype))); yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; break;} case 378: -#line 1716 "parse.y" +#line 1715 "parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyval.ttype)); yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ; break;} case 379: -#line 1721 "parse.y" +#line 1720 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ; break;} case 380: -#line 1723 "parse.y" +#line 1722 "parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} case 381: -#line 1728 "parse.y" +#line 1727 "parse.y" { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 382: -#line 1730 "parse.y" +#line 1729 "parse.y" { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ; break;} case 383: -#line 1740 "parse.y" +#line 1739 "parse.y" { yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ; break;} case 384: -#line 1742 "parse.y" +#line 1741 "parse.y" { yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ; break;} case 385: -#line 1744 "parse.y" +#line 1743 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 386: -#line 1747 "parse.y" +#line 1746 "parse.y" { if (extra_warnings && TREE_STATIC (yyval.ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); @@ -5667,61 +5675,61 @@ case 386: TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 387: -#line 1753 "parse.y" +#line 1752 "parse.y" { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 388: -#line 1755 "parse.y" +#line 1754 "parse.y" { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ; break;} case 389: -#line 1766 "parse.y" +#line 1765 "parse.y" { yyval.ftype.t = get_decl_list (yyvsp[0].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 390: -#line 1769 "parse.y" +#line 1768 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 391: -#line 1772 "parse.y" +#line 1771 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 392: -#line 1775 "parse.y" +#line 1774 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; break;} case 393: -#line 1781 "parse.y" +#line 1780 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ; break;} case 394: -#line 1783 "parse.y" +#line 1782 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ; break;} case 396: -#line 1793 "parse.y" +#line 1792 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; break;} case 397: -#line 1795 "parse.y" +#line 1794 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; break;} case 398: -#line 1797 "parse.y" +#line 1796 "parse.y" { yyval.ftype.t = TREE_TYPE (yyvsp[-1].ttype); yyval.ftype.new_type_flag = 0; ; break;} case 399: -#line 1800 "parse.y" +#line 1799 "parse.y" { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = 0; ; break;} case 400: -#line 1803 "parse.y" +#line 1802 "parse.y" { tree type = TREE_TYPE (yyvsp[-1].ttype); yyval.ftype.new_type_flag = 0; @@ -5738,7 +5746,7 @@ case 400: ; break;} case 401: -#line 1818 "parse.y" +#line 1817 "parse.y" { tree type = groktypename (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = 0; @@ -5755,188 +5763,200 @@ case 401: ; break;} case 402: -#line 1838 "parse.y" +#line 1837 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; break;} case 403: -#line 1840 "parse.y" +#line 1839 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; break;} +case 406: +#line 1846 "parse.y" +{ check_multiple_declarators (); ; + break;} +case 408: +#line 1852 "parse.y" +{ check_multiple_declarators (); ; + break;} +case 410: +#line 1858 "parse.y" +{ check_multiple_declarators (); ; + break;} case 411: -#line 1861 "parse.y" +#line 1863 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 412: -#line 1863 "parse.y" +#line 1865 "parse.y" { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 413: -#line 1868 "parse.y" +#line 1870 "parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, yyvsp[-1].ttype, prefix_attributes); ; break;} case 414: -#line 1872 "parse.y" +#line 1874 "parse.y" { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ; break;} case 415: -#line 1874 "parse.y" +#line 1876 "parse.y" { yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0, yyvsp[0].ttype, prefix_attributes); cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; break;} case 416: -#line 1887 "parse.y" +#line 1889 "parse.y" { yyvsp[0].itype = parse_decl (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype, 1, &yyval.ttype); ; break;} case 417: -#line 1892 "parse.y" +#line 1894 "parse.y" { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); yyval.itype = yyvsp[-2].itype; ; break;} case 418: -#line 1896 "parse.y" +#line 1898 "parse.y" { tree d; yyval.itype = parse_decl (yyvsp[-2].ttype, yyvsp[-3].ttype, yyvsp[0].ttype, 0, &d); cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; break;} case 419: -#line 1903 "parse.y" +#line 1905 "parse.y" { yyval.itype = yyvsp[0].itype; ; break;} case 420: -#line 1907 "parse.y" +#line 1909 "parse.y" { yyval.itype = yyvsp[0].itype; ; break;} case 421: -#line 1912 "parse.y" +#line 1914 "parse.y" { /* Set things up as initdcl0_innards expects. */ yyvsp[0].ttype = yyvsp[-1].ttype; yyvsp[-1].ttype = NULL_TREE; ; break;} case 422: -#line 1916 "parse.y" +#line 1918 "parse.y" {; break;} case 423: -#line 1918 "parse.y" +#line 1920 "parse.y" { tree d; parse_decl(yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype, 0, &d); cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; break;} case 424: -#line 1927 "parse.y" +#line 1929 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 425: -#line 1929 "parse.y" +#line 1931 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 426: -#line 1934 "parse.y" +#line 1936 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 427: -#line 1936 "parse.y" +#line 1938 "parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 428: -#line 1941 "parse.y" +#line 1943 "parse.y" { yyval.ttype = yyvsp[-2].ttype; ; break;} case 429: -#line 1946 "parse.y" +#line 1948 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 430: -#line 1948 "parse.y" +#line 1950 "parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 431: -#line 1953 "parse.y" +#line 1955 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 432: -#line 1955 "parse.y" +#line 1957 "parse.y" { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ; break;} case 433: -#line 1957 "parse.y" +#line 1959 "parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ; break;} case 434: -#line 1959 "parse.y" +#line 1961 "parse.y" { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ; break;} case 435: -#line 1961 "parse.y" +#line 1963 "parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 440: -#line 1977 "parse.y" +#line 1979 "parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 441: -#line 1979 "parse.y" +#line 1981 "parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 442: -#line 1984 "parse.y" +#line 1986 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 443: -#line 1986 "parse.y" +#line 1988 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 445: -#line 1994 "parse.y" +#line 1996 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE); TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; break;} case 446: -#line 1997 "parse.y" +#line 1999 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype)); TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; break;} case 447: -#line 2000 "parse.y" +#line 2002 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; break;} case 448: -#line 2003 "parse.y" +#line 2005 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 449: -#line 2010 "parse.y" +#line 2012 "parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ; break;} case 450: -#line 2012 "parse.y" +#line 2014 "parse.y" { yyval.ttype = expr_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} case 451: -#line 2015 "parse.y" +#line 2017 "parse.y" { yyval.ttype = build_expr_list (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 452: -#line 2017 "parse.y" +#line 2019 "parse.y" { yyval.ttype = build_expr_list (yyval.ttype, yyvsp[0].ttype); ; break;} case 453: -#line 2019 "parse.y" +#line 2021 "parse.y" { yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ; break;} case 454: -#line 2024 "parse.y" +#line 2026 "parse.y" { start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype), NULL_TREE, 1); reinit_parse_for_function (); ; break;} case 455: -#line 2030 "parse.y" +#line 2032 "parse.y" { int nested = (hack_decl_function_context (current_function_decl) != NULL_TREE); @@ -5945,37 +5965,37 @@ case 455: ; break;} case 456: -#line 2037 "parse.y" +#line 2039 "parse.y" { process_next_inline (yyvsp[-2].ttype); ; break;} case 457: -#line 2039 "parse.y" +#line 2041 "parse.y" { process_next_inline (yyvsp[-2].ttype); ; break;} case 460: -#line 2051 "parse.y" +#line 2053 "parse.y" { replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 461: -#line 2053 "parse.y" +#line 2055 "parse.y" { replace_defarg (yyvsp[-2].ttype, error_mark_node); ; break;} case 463: -#line 2058 "parse.y" +#line 2060 "parse.y" { do_pending_defargs (); ; break;} case 464: -#line 2060 "parse.y" +#line 2062 "parse.y" { do_pending_defargs (); ; break;} case 465: -#line 2065 "parse.y" +#line 2067 "parse.y" { yyvsp[0].itype = suspend_momentary (); yyval.ttype = current_enum_type; current_enum_type = start_enum (yyvsp[-1].ttype); ; break;} case 466: -#line 2069 "parse.y" +#line 2071 "parse.y" { TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype; yyval.ftype.t = finish_enum (current_enum_type); yyval.ftype.new_type_flag = 1; @@ -5984,19 +6004,19 @@ case 466: check_for_missing_semicolon (yyval.ftype.t); ; break;} case 467: -#line 2076 "parse.y" +#line 2078 "parse.y" { yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype)); yyval.ftype.new_type_flag = 1; check_for_missing_semicolon (yyval.ftype.t); ; break;} case 468: -#line 2080 "parse.y" +#line 2082 "parse.y" { yyvsp[0].itype = suspend_momentary (); yyval.ttype = current_enum_type; current_enum_type = start_enum (make_anon_name ()); ; break;} case 469: -#line 2084 "parse.y" +#line 2086 "parse.y" { TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype; yyval.ftype.t = finish_enum (current_enum_type); yyval.ftype.new_type_flag = 1; @@ -6005,30 +6025,30 @@ case 469: check_for_missing_semicolon (yyval.ftype.t); ; break;} case 470: -#line 2091 "parse.y" +#line 2093 "parse.y" { yyval.ftype.t = finish_enum (start_enum (make_anon_name())); yyval.ftype.new_type_flag = 1; check_for_missing_semicolon (yyval.ftype.t); ; break;} case 471: -#line 2095 "parse.y" +#line 2097 "parse.y" { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1); yyval.ftype.new_type_flag = 0; ; break;} case 472: -#line 2098 "parse.y" +#line 2100 "parse.y" { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1); yyval.ftype.new_type_flag = 0; ; break;} case 473: -#line 2101 "parse.y" +#line 2103 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; if (!processing_template_decl) cp_pedwarn ("using `typename' outside of template"); ; break;} case 474: -#line 2108 "parse.y" +#line 2110 "parse.y" { int semi; @@ -6036,21 +6056,21 @@ case 474: yychar = YYLEX; semi = yychar == ';'; - yyval.ttype = finish_class_definition (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, semi); + yyval.ttype = finish_class_definition (yyvsp[-4].ttype, yyvsp[0].ttype, semi); ; break;} case 475: -#line 2118 "parse.y" +#line 2120 "parse.y" { finish_default_args (); ; break;} case 476: -#line 2120 "parse.y" +#line 2122 "parse.y" { yyval.ftype.t = yyvsp[-3].ttype; yyval.ftype.new_type_flag = 1; begin_inline_definitions (); ; break;} case 477: -#line 2124 "parse.y" +#line 2126 "parse.y" { yyval.ftype.new_type_flag = 0; if (TYPE_BINFO (yyvsp[0].ttype) == NULL_TREE) @@ -6070,85 +6090,88 @@ case 477: ; break;} case 481: -#line 2151 "parse.y" +#line 2153 "parse.y" { if (pedantic && !in_system_header) pedwarn ("comma at end of enumerator list"); ; break;} case 483: -#line 2158 "parse.y" +#line 2160 "parse.y" { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} case 484: -#line 2160 "parse.y" +#line 2162 "parse.y" { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} case 485: -#line 2162 "parse.y" +#line 2164 "parse.y" { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} case 486: -#line 2164 "parse.y" +#line 2166 "parse.y" { error ("no body nor ';' separates two class, struct or union declarations"); ; break;} case 487: -#line 2166 "parse.y" +#line 2168 "parse.y" { yyval.ttype = build_decl_list (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 488: -#line 2171 "parse.y" -{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; +#line 2173 "parse.y" +{ + current_aggr = yyvsp[-1].ttype; + yyval.ttype = yyvsp[0].ttype; + ; break;} case 489: -#line 2176 "parse.y" +#line 2181 "parse.y" { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 490: -#line 2178 "parse.y" +#line 2183 "parse.y" { yyungetc ('{', 1); ; break;} case 491: -#line 2180 "parse.y" +#line 2185 "parse.y" { yyungetc (':', 1); ; break;} case 492: -#line 2185 "parse.y" +#line 2190 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = handle_class_head (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 493: -#line 2190 "parse.y" +#line 2195 "parse.y" { current_aggr = yyvsp[-3].ttype; yyval.ttype = handle_class_head (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 494: -#line 2195 "parse.y" +#line 2200 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = handle_class_head (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype); ; break;} case 495: -#line 2200 "parse.y" +#line 2205 "parse.y" { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 496: -#line 2202 "parse.y" +#line 2207 "parse.y" { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 497: -#line 2207 "parse.y" -{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 0); ; - break;} -case 498: #line 2212 "parse.y" { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 1); ; break;} +case 498: +#line 2214 "parse.y" +{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 0); ; + break;} case 499: -#line 2215 "parse.y" +#line 2216 "parse.y" { yyval.ttype = yyvsp[-1].ttype; if (yyvsp[0].ttype) @@ -6156,7 +6179,7 @@ case 499: ; break;} case 500: -#line 2221 "parse.y" +#line 2222 "parse.y" { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); if (TREE_INT_CST_LOW (current_aggr) == union_type @@ -6173,44 +6196,44 @@ case 500: ; break;} case 501: -#line 2239 "parse.y" +#line 2240 "parse.y" { yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), 0); yyungetc ('{', 1); ; break;} case 504: -#line 2250 "parse.y" +#line 2251 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 505: -#line 2252 "parse.y" +#line 2253 "parse.y" { yyungetc(':', 1); yyval.ttype = NULL_TREE; ; break;} case 506: -#line 2254 "parse.y" +#line 2255 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 508: -#line 2260 "parse.y" +#line 2261 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} case 509: -#line 2265 "parse.y" +#line 2266 "parse.y" { yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype, current_aggr == signature_type_node); ; break;} case 510: -#line 2269 "parse.y" +#line 2270 "parse.y" { yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, current_aggr == signature_type_node); ; break;} case 511: -#line 2276 "parse.y" +#line 2277 "parse.y" { if (yyval.ttype != error_mark_node) yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ; break;} case 513: -#line 2279 "parse.y" +#line 2280 "parse.y" { if (current_aggr == signature_type_node) { @@ -6233,7 +6256,7 @@ case 513: ; break;} case 514: -#line 2300 "parse.y" +#line 2301 "parse.y" { if (current_aggr == signature_type_node) { @@ -6256,13 +6279,13 @@ case 514: ; break;} case 516: -#line 2325 "parse.y" +#line 2326 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) cp_error ("`%D' access", yyvsp[-1].ttype); yyval.ttype = access_default_virtual_node; ; break;} case 517: -#line 2329 "parse.y" +#line 2330 "parse.y" { if (yyvsp[-2].ttype != access_default_virtual_node) error ("multiple access specifiers"); @@ -6275,7 +6298,7 @@ case 517: ; break;} case 518: -#line 2340 "parse.y" +#line 2341 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) cp_error ("`%D' access", yyvsp[-1].ttype); else if (yyval.ttype == access_public_node) @@ -6289,281 +6312,296 @@ case 518: ; break;} case 519: -#line 2355 "parse.y" +#line 2356 "parse.y" { yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ; break;} case 520: -#line 2360 "parse.y" -{ - yyval.ttype = build_self_reference (); - ; - break;} -case 521: -#line 2367 "parse.y" -{ if (yyval.ttype) yyval.ttype = build_tree_list (access_public_node, yyval.ttype); ; - break;} -case 522: -#line 2369 "parse.y" +#line 2361 "parse.y" { - if (current_aggr == signature_type_node) - yyval.ttype = build_tree_list (access_public_node, yyvsp[0].ttype); - else - yyval.ttype = build_tree_list (access_default_node, yyvsp[0].ttype); - if (yyvsp[-1].ttype) yyval.ttype = tree_cons (access_public_node, yyvsp[-1].ttype, yyval.ttype); + finish_member_declaration (build_self_reference ()); ; break;} -case 523: -#line 2377 "parse.y" +case 525: +#line 2375 "parse.y" { - tree visspec = yyvsp[-2].ttype; - if (current_aggr == signature_type_node) { error ("access specifier not allowed in signature"); - visspec = access_public_node; + yyvsp[-1].ttype = access_public_node; } - yyval.ttype = chainon (yyval.ttype, build_tree_list (visspec, yyvsp[0].ttype)); - ; - break;} -case 524: -#line 2388 "parse.y" -{ - if (current_aggr == signature_type_node) - error ("access specifier not allowed in signature"); - ; - break;} -case 525: -#line 2398 "parse.y" -{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; - ; + + current_access_specifier = yyvsp[-1].ttype; + ; break;} case 526: -#line 2401 "parse.y" -{ /* In pushdecl, we created a reverse list of names - in this binding level. Make sure that the chain - of what we're trying to add isn't the item itself - (which can happen with what pushdecl's doing). */ - if (yyvsp[0].ttype != NULL_TREE && yyvsp[0].ttype != void_type_node - && yyvsp[0].ttype != error_mark_node) - { - if (TREE_CHAIN (yyvsp[0].ttype) != yyval.ttype) - yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); - else - yyval.ttype = yyvsp[0].ttype; - } +#line 2390 "parse.y" +{ + finish_member_declaration (yyvsp[0].ttype); ; break;} case 527: -#line 2418 "parse.y" -{ ; +#line 2394 "parse.y" +{ + finish_member_declaration (yyvsp[0].ttype); + ; break;} -case 528: -#line 2420 "parse.y" +case 529: +#line 2402 "parse.y" { error ("missing ';' before right brace"); yyungetc ('}', 0); ; break;} -case 529: -#line 2425 "parse.y" -{ yyval.ttype = finish_method (yyval.ttype); ; - break;} case 530: -#line 2427 "parse.y" +#line 2407 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 531: -#line 2429 "parse.y" +#line 2409 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 532: -#line 2431 "parse.y" +#line 2411 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 533: -#line 2433 "parse.y" -{ yyval.ttype = NULL_TREE; ; +#line 2413 "parse.y" +{ yyval.ttype = finish_method (yyval.ttype); ; break;} case 534: -#line 2435 "parse.y" -{ yyval.ttype = yyvsp[0].ttype; - pedantic = yyvsp[-1].itype; ; +#line 2415 "parse.y" +{ yyval.ttype = NULL_TREE; ; break;} case 535: -#line 2438 "parse.y" -{ yyval.ttype = finish_member_template_decl (yyvsp[-1].ttype, yyvsp[0].ttype); ; +#line 2417 "parse.y" +{ yyval.ttype = yyvsp[0].ttype; + pedantic = yyvsp[-1].itype; ; break;} case 536: -#line 2440 "parse.y" -{ yyval.ttype = finish_member_class_template (yyvsp[-2].ttype, yyvsp[-1].ftype.t); ; +#line 2420 "parse.y" +{ + if (yyvsp[0].ttype) + yyval.ttype = finish_member_template_decl (yyvsp[0].ttype); + else + /* The component was already processed. */ + yyval.ttype = NULL_TREE; + + finish_template_decl (yyvsp[-1].ttype); + ; break;} case 537: -#line 2448 "parse.y" -{ yyval.ttype = grok_x_components (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; +#line 2430 "parse.y" +{ + yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); + finish_template_decl (yyvsp[-2].ttype); + ; break;} case 538: -#line 2450 "parse.y" -{ yyval.ttype = grok_x_components (yyvsp[-1].ttype, yyvsp[0].ttype); ; +#line 2441 "parse.y" +{ + /* Most of the productions for component_decl only + allow the creation of one new member, so we call + finish_member_declaration in component_decl_list. + For this rule and the next, however, there can be + more than one member, e.g.: + + int i, j; + + and we need the first member to be fully + registered before the second is processed. + Therefore, the rules for components take care of + this processing. To avoid registering the + components more than once, we send NULL_TREE up + here; that lets finish_member_declaration now + that there is nothing to do. */ + if (!yyvsp[0].itype) + grok_x_components (yyvsp[-1].ftype.t); + yyval.ttype = NULL_TREE; + ; break;} case 539: -#line 2452 "parse.y" -{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, - build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; +#line 2462 "parse.y" +{ + if (!yyvsp[0].itype) + grok_x_components (yyvsp[-1].ttype); + yyval.ttype = NULL_TREE; + ; break;} case 540: -#line 2455 "parse.y" +#line 2468 "parse.y" { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} case 541: -#line 2458 "parse.y" -{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ; +#line 2471 "parse.y" +{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, + build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} case 542: -#line 2460 "parse.y" -{ yyval.ttype = NULL_TREE; ; +#line 2474 "parse.y" +{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ; break;} case 543: -#line 2471 "parse.y" +#line 2476 "parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 544: +#line 2487 "parse.y" { tree specs, attrs; split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs); yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, attrs)); ; break;} -case 544: -#line 2476 "parse.y" +case 545: +#line 2492 "parse.y" { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} -case 545: -#line 2479 "parse.y" +case 546: +#line 2495 "parse.y" { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ; break;} -case 546: -#line 2485 "parse.y" -{ yyval.ttype = NULL_TREE; ; +case 547: +#line 2501 "parse.y" +{ yyval.itype = 0; ; break;} case 548: -#line 2488 "parse.y" -{ - /* In this context, void_type_node encodes - friends. They have been recorded elsewhere. */ - if (yyval.ttype == void_type_node) - yyval.ttype = yyvsp[0].ttype; - else - yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); +#line 2503 "parse.y" +{ + if (PROCESSING_REAL_TEMPLATE_DECL_P ()) + yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); + finish_member_declaration (yyvsp[0].ttype); + yyval.itype = 1; ; break;} case 549: -#line 2500 "parse.y" -{ yyval.ttype = NULL_TREE; ; +#line 2510 "parse.y" +{ + check_multiple_declarators (); + if (PROCESSING_REAL_TEMPLATE_DECL_P ()) + yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); + finish_member_declaration (yyvsp[0].ttype); + yyval.itype = 2; + ; + break;} +case 550: +#line 2521 "parse.y" +{ yyval.itype = 0; ; break;} case 551: -#line 2503 "parse.y" -{ - /* In this context, void_type_node encodes - friends. They have been recorded elsewhere. */ - if (yyval.ttype == void_type_node) - yyval.ttype = yyvsp[0].ttype; - else - yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); +#line 2523 "parse.y" +{ + if (PROCESSING_REAL_TEMPLATE_DECL_P ()) + yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); + finish_member_declaration (yyvsp[0].ttype); + yyval.itype = 1; ; break;} -case 556: -#line 2525 "parse.y" +case 552: +#line 2530 "parse.y" +{ + check_multiple_declarators (); + if (PROCESSING_REAL_TEMPLATE_DECL_P ()) + yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); + finish_member_declaration (yyvsp[0].ttype); + yyval.itype = 2; + ; + break;} +case 557: +#line 2551 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 557: -#line 2531 "parse.y" +case 558: +#line 2557 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 558: -#line 2540 "parse.y" +case 559: +#line 2566 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 559: -#line 2546 "parse.y" +case 560: +#line 2572 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 560: -#line 2552 "parse.y" +case 561: +#line 2578 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 561: -#line 2558 "parse.y" +case 562: +#line 2584 "parse.y" { split_specs_attrs (yyvsp[-3].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-3].ttype = current_declspecs; yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 562: -#line 2567 "parse.y" +case 563: +#line 2593 "parse.y" { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 563: -#line 2570 "parse.y" +case 564: +#line 2596 "parse.y" { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 564: -#line 2576 "parse.y" +case 565: +#line 2602 "parse.y" { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 565: -#line 2579 "parse.y" +case 566: +#line 2605 "parse.y" { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 566: -#line 2582 "parse.y" +case 567: +#line 2608 "parse.y" { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 568: -#line 2593 "parse.y" +case 569: +#line 2619 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 569: -#line 2598 "parse.y" +case 570: +#line 2624 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ; break;} -case 570: -#line 2600 "parse.y" +case 571: +#line 2626 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ; break;} -case 571: -#line 2606 "parse.y" +case 572: +#line 2632 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 572: -#line 2609 "parse.y" +case 573: +#line 2635 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 573: -#line 2616 "parse.y" +case 574: +#line 2642 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new"); @@ -6572,72 +6610,72 @@ case 573: yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag; ; break;} -case 574: -#line 2627 "parse.y" +case 575: +#line 2653 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 575: -#line 2629 "parse.y" +case 576: +#line 2655 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} -case 576: -#line 2634 "parse.y" +case 577: +#line 2660 "parse.y" { yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype); yyval.ftype.new_type_flag = 0; ; break;} -case 577: -#line 2637 "parse.y" +case 578: +#line 2663 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 578: -#line 2646 "parse.y" -{ yyval.itype = suspend_momentary (); ; - break;} case 579: -#line 2651 "parse.y" -{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ; +#line 2672 "parse.y" +{ yyval.itype = suspend_momentary (); ; break;} case 580: -#line 2657 "parse.y" -{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; +#line 2677 "parse.y" +{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ; break;} case 581: -#line 2659 "parse.y" +#line 2683 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 582: -#line 2661 "parse.y" -{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ; +#line 2685 "parse.y" +{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 583: -#line 2663 "parse.y" -{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ; +#line 2687 "parse.y" +{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ; break;} case 584: -#line 2670 "parse.y" -{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; +#line 2689 "parse.y" +{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ; break;} case 585: -#line 2672 "parse.y" -{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; +#line 2696 "parse.y" +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 586: -#line 2674 "parse.y" -{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; +#line 2698 "parse.y" +{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 587: -#line 2676 "parse.y" -{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; +#line 2700 "parse.y" +{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 588: -#line 2678 "parse.y" +#line 2702 "parse.y" +{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; + break;} +case 589: +#line 2704 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 590: -#line 2686 "parse.y" +case 591: +#line 2712 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) { @@ -6655,8 +6693,8 @@ case 590: yyval.ttype = yyvsp[0].ttype; ; break;} -case 591: -#line 2703 "parse.y" +case 592: +#line 2729 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -6665,153 +6703,153 @@ case 591: got_scope = NULL_TREE; ; break;} -case 594: -#line 2716 "parse.y" +case 595: +#line 2742 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 595: -#line 2721 "parse.y" +case 596: +#line 2747 "parse.y" { yyval.ttype = get_type_decl (yyvsp[0].ttype); ; break;} -case 596: -#line 2726 "parse.y" +case 597: +#line 2752 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 597: -#line 2728 "parse.y" +case 598: +#line 2754 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 598: -#line 2730 "parse.y" +case 599: +#line 2756 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 599: -#line 2732 "parse.y" +case 600: +#line 2758 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 600: -#line 2734 "parse.y" +case 601: +#line 2760 "parse.y" { push_nested_class (yyvsp[-1].ttype, 3); yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ; break;} -case 602: -#line 2745 "parse.y" +case 603: +#line 2771 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 603: -#line 2747 "parse.y" +case 604: +#line 2773 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 604: -#line 2749 "parse.y" +case 605: +#line 2775 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 605: -#line 2751 "parse.y" +case 606: +#line 2777 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 606: -#line 2753 "parse.y" +case 607: +#line 2779 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 608: -#line 2761 "parse.y" +case 609: +#line 2787 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 609: -#line 2763 "parse.y" +case 610: +#line 2789 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 610: -#line 2765 "parse.y" +case 611: +#line 2791 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 611: -#line 2767 "parse.y" +case 612: +#line 2793 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 612: -#line 2769 "parse.y" +case 613: +#line 2795 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 614: -#line 2777 "parse.y" +case 615: +#line 2803 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 615: -#line 2779 "parse.y" +case 616: +#line 2805 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 616: -#line 2781 "parse.y" +case 617: +#line 2807 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 617: -#line 2783 "parse.y" +case 618: +#line 2809 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 618: -#line 2785 "parse.y" +case 619: +#line 2811 "parse.y" { enter_scope_of (yyvsp[0].ttype); ; break;} -case 619: -#line 2787 "parse.y" +case 620: +#line 2813 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); enter_scope_of (yyval.ttype); ; break;} -case 620: -#line 2795 "parse.y" +case 621: +#line 2821 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} -case 621: -#line 2798 "parse.y" +case 622: +#line 2824 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 622: -#line 2804 "parse.y" +case 623: +#line 2830 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} -case 623: -#line 2807 "parse.y" +case 624: +#line 2833 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 625: -#line 2814 "parse.y" +case 626: +#line 2840 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 626: -#line 2819 "parse.y" +case 627: +#line 2845 "parse.y" { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} -case 627: -#line 2821 "parse.y" +case 628: +#line 2847 "parse.y" { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} -case 628: -#line 2823 "parse.y" +case 629: +#line 2849 "parse.y" { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 633: -#line 2834 "parse.y" +case 634: +#line 2860 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 634: -#line 2836 "parse.y" +case 635: +#line 2862 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 635: -#line 2843 "parse.y" +case 636: +#line 2869 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) { @@ -6826,32 +6864,32 @@ case 635: got_scope = yyval.ttype = TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype)); ; break;} -case 636: -#line 2857 "parse.y" +case 637: +#line 2883 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = TREE_TYPE (yyval.ttype); ; break;} -case 637: -#line 2863 "parse.y" +case 638: +#line 2889 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ; break;} -case 638: -#line 2869 "parse.y" +case 639: +#line 2895 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ; break;} -case 640: -#line 2885 "parse.y" +case 641: +#line 2911 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 641: -#line 2890 "parse.y" +case 642: +#line 2916 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -6865,27 +6903,27 @@ case 641: } ; break;} -case 642: -#line 2903 "parse.y" +case 643: +#line 2929 "parse.y" { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ; break;} -case 643: -#line 2905 "parse.y" +case 644: +#line 2931 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 644: -#line 2907 "parse.y" +case 645: +#line 2933 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} -case 645: -#line 2912 "parse.y" +case 646: +#line 2938 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype); ; break;} -case 646: -#line 2917 "parse.y" +case 647: +#line 2943 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -6899,16 +6937,16 @@ case 646: } ; break;} -case 647: -#line 2930 "parse.y" +case 648: +#line 2956 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} -case 648: -#line 2932 "parse.y" +case 649: +#line 2958 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 649: -#line 2937 "parse.y" +case 650: +#line 2963 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyvsp[-1].ttype = lastiddecl; @@ -6921,32 +6959,32 @@ case 649: cp_error ("`%T' is not a class or namespace", yyvsp[-1].ttype); ; break;} -case 650: -#line 2949 "parse.y" +case 651: +#line 2975 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; break;} -case 651: -#line 2955 "parse.y" +case 652: +#line 2981 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; break;} -case 654: -#line 2959 "parse.y" +case 655: +#line 2985 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ; break;} -case 655: -#line 2968 "parse.y" +case 656: +#line 2994 "parse.y" { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 656: -#line 2973 "parse.y" +case 657: +#line 2999 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -6955,149 +6993,149 @@ case 656: got_scope = NULL_TREE; ; break;} -case 658: -#line 2982 "parse.y" +case 659: +#line 3008 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 659: -#line 2987 "parse.y" +case 660: +#line 3013 "parse.y" { got_scope = NULL_TREE; ; break;} -case 660: -#line 2989 "parse.y" +case 661: +#line 3015 "parse.y" { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ; break;} -case 661: -#line 2996 "parse.y" +case 662: +#line 3022 "parse.y" { got_scope = void_type_node; ; break;} -case 662: -#line 3002 "parse.y" +case 663: +#line 3028 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 663: -#line 3004 "parse.y" +case 664: +#line 3030 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} -case 664: -#line 3006 "parse.y" +case 665: +#line 3032 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 665: -#line 3008 "parse.y" +case 666: +#line 3034 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} -case 666: -#line 3010 "parse.y" +case 667: +#line 3036 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg); ; break;} -case 667: -#line 3014 "parse.y" +case 668: +#line 3040 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 669: -#line 3023 "parse.y" +case 670: +#line 3049 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} -case 670: -#line 3025 "parse.y" +case 671: +#line 3051 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 671: -#line 3031 "parse.y" +case 672: +#line 3057 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 672: -#line 3033 "parse.y" +case 673: +#line 3059 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 673: -#line 3035 "parse.y" +case 674: +#line 3061 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} -case 674: -#line 3037 "parse.y" +case 675: +#line 3063 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ; break;} -case 675: -#line 3039 "parse.y" +case 676: +#line 3065 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 676: -#line 3041 "parse.y" +case 677: +#line 3067 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 677: -#line 3043 "parse.y" +case 678: +#line 3069 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} -case 678: -#line 3045 "parse.y" +case 679: +#line 3071 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ; break;} -case 679: -#line 3047 "parse.y" +case 680: +#line 3073 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg); ; break;} -case 680: -#line 3051 "parse.y" +case 681: +#line 3077 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 682: -#line 3060 "parse.y" +case 683: +#line 3086 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 684: -#line 3064 "parse.y" -{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; - break;} case 685: -#line 3066 "parse.y" -{ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; +#line 3090 "parse.y" +{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 686: -#line 3068 "parse.y" -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; +#line 3092 "parse.y" +{ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 687: -#line 3070 "parse.y" -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; +#line 3094 "parse.y" +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} case 688: -#line 3072 "parse.y" -{ yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; +#line 3096 "parse.y" +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} case 689: -#line 3074 "parse.y" -{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; +#line 3098 "parse.y" +{ yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 690: -#line 3076 "parse.y" +#line 3100 "parse.y" { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 691: -#line 3078 "parse.y" -{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; +#line 3102 "parse.y" +{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 692: -#line 3080 "parse.y" +#line 3104 "parse.y" +{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; + break;} +case 693: +#line 3106 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ; break;} -case 699: -#line 3103 "parse.y" +case 700: +#line 3129 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids label declarations"); ; break;} -case 702: -#line 3114 "parse.y" +case 703: +#line 3140 "parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { @@ -7107,226 +7145,226 @@ case 702: } ; break;} -case 703: -#line 3128 "parse.y" +case 704: +#line 3154 "parse.y" {; break;} -case 705: -#line 3134 "parse.y" +case 706: +#line 3160 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} -case 706: -#line 3136 "parse.y" +case 707: +#line 3162 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} -case 707: -#line 3141 "parse.y" +case 708: +#line 3167 "parse.y" { yyval.ttype = begin_if_stmt (); cond_stmt_keyword = "if"; ; break;} -case 708: -#line 3146 "parse.y" +case 709: +#line 3172 "parse.y" { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 709: -#line 3148 "parse.y" +case 710: +#line 3174 "parse.y" { yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ; break;} -case 711: -#line 3153 "parse.y" +case 712: +#line 3179 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} -case 712: -#line 3155 "parse.y" +case 713: +#line 3181 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} -case 713: -#line 3160 "parse.y" +case 714: +#line 3186 "parse.y" {; break;} -case 715: -#line 3166 "parse.y" +case 716: +#line 3192 "parse.y" { finish_stmt (); ; break;} -case 716: -#line 3168 "parse.y" +case 717: +#line 3194 "parse.y" { finish_expr_stmt (yyvsp[-1].ttype); ; break;} -case 717: -#line 3170 "parse.y" +case 718: +#line 3196 "parse.y" { begin_else_clause (); ; break;} -case 718: -#line 3172 "parse.y" +case 719: +#line 3198 "parse.y" { finish_else_clause (yyvsp[-3].ttype); finish_if_stmt (); ; break;} -case 719: -#line 3177 "parse.y" +case 720: +#line 3203 "parse.y" { finish_if_stmt (); ; break;} -case 720: -#line 3179 "parse.y" +case 721: +#line 3205 "parse.y" { yyval.ttype = begin_while_stmt (); cond_stmt_keyword = "while"; ; break;} -case 721: -#line 3184 "parse.y" +case 722: +#line 3210 "parse.y" { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 722: -#line 3186 "parse.y" +case 723: +#line 3212 "parse.y" { finish_while_stmt (yyvsp[-3].ttype); ; break;} -case 723: -#line 3188 "parse.y" +case 724: +#line 3214 "parse.y" { yyval.ttype = begin_do_stmt (); ; break;} -case 724: -#line 3190 "parse.y" +case 725: +#line 3216 "parse.y" { finish_do_body (yyvsp[-2].ttype); cond_stmt_keyword = "do"; ; break;} -case 725: -#line 3195 "parse.y" +case 726: +#line 3221 "parse.y" { finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} -case 726: -#line 3197 "parse.y" +case 727: +#line 3223 "parse.y" { yyval.ttype = begin_for_stmt (); ; break;} -case 727: -#line 3199 "parse.y" +case 728: +#line 3225 "parse.y" { finish_for_init_stmt (yyvsp[-2].ttype); ; break;} -case 728: -#line 3201 "parse.y" +case 729: +#line 3227 "parse.y" { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} -case 729: -#line 3203 "parse.y" +case 730: +#line 3229 "parse.y" { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ; break;} -case 730: -#line 3205 "parse.y" +case 731: +#line 3231 "parse.y" { finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ; break;} -case 731: -#line 3207 "parse.y" +case 732: +#line 3233 "parse.y" { begin_switch_stmt (); ; break;} -case 732: -#line 3209 "parse.y" +case 733: +#line 3235 "parse.y" { yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ; break;} -case 733: -#line 3211 "parse.y" +case 734: +#line 3237 "parse.y" { finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 734: -#line 3213 "parse.y" +case 735: +#line 3239 "parse.y" { finish_case_label (yyvsp[-1].ttype, NULL_TREE); ; break;} -case 736: -#line 3216 "parse.y" +case 737: +#line 3242 "parse.y" { finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 738: -#line 3219 "parse.y" +case 739: +#line 3245 "parse.y" { finish_case_label (NULL_TREE, NULL_TREE); ; break;} -case 740: -#line 3222 "parse.y" +case 741: +#line 3248 "parse.y" { finish_break_stmt (); ; break;} -case 741: -#line 3224 "parse.y" +case 742: +#line 3250 "parse.y" { finish_continue_stmt (); ; break;} -case 742: -#line 3226 "parse.y" +case 743: +#line 3252 "parse.y" { finish_return_stmt (NULL_TREE); ; break;} -case 743: -#line 3228 "parse.y" +case 744: +#line 3254 "parse.y" { finish_return_stmt (yyvsp[-1].ttype); ; break;} -case 744: -#line 3230 "parse.y" +case 745: +#line 3256 "parse.y" { finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, NULL_TREE); ; break;} -case 745: -#line 3236 "parse.y" +case 746: +#line 3262 "parse.y" { finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ; break;} -case 746: -#line 3242 "parse.y" +case 747: +#line 3268 "parse.y" { finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} -case 747: -#line 3246 "parse.y" +case 748: +#line 3272 "parse.y" { finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ; break;} -case 748: -#line 3248 "parse.y" +case 749: +#line 3274 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids computed gotos"); finish_goto_stmt (yyvsp[-1].ttype); ; break;} -case 749: -#line 3254 "parse.y" +case 750: +#line 3280 "parse.y" { finish_goto_stmt (yyvsp[-1].ttype); ; break;} -case 750: -#line 3256 "parse.y" +case 751: +#line 3282 "parse.y" { finish_stmt (); ; break;} -case 751: -#line 3258 "parse.y" +case 752: +#line 3284 "parse.y" { error ("label must be followed by statement"); yyungetc ('}', 0); finish_stmt (); ; break;} -case 752: -#line 3262 "parse.y" +case 753: +#line 3288 "parse.y" { finish_stmt (); ; break;} -case 755: -#line 3266 "parse.y" +case 756: +#line 3292 "parse.y" { do_local_using_decl (yyvsp[0].ttype); ; break;} -case 757: -#line 3272 "parse.y" +case 758: +#line 3298 "parse.y" { if (! current_function_parms_stored) store_parm_decls (); expand_start_early_try_stmts (); ; break;} -case 758: -#line 3278 "parse.y" +case 759: +#line 3304 "parse.y" { expand_start_all_catch (); ; break;} -case 759: -#line 3282 "parse.y" +case 760: +#line 3308 "parse.y" { int nested = (hack_decl_function_context (current_function_decl) != NULL_TREE); @@ -7334,42 +7372,42 @@ case 759: finish_function (lineno, (int)yyvsp[-3].itype, nested); ; break;} -case 760: -#line 3292 "parse.y" +case 761: +#line 3318 "parse.y" { yyval.ttype = begin_try_block (); ; break;} -case 761: -#line 3294 "parse.y" +case 762: +#line 3320 "parse.y" { finish_try_block (yyvsp[-1].ttype); ; break;} -case 762: -#line 3296 "parse.y" +case 763: +#line 3322 "parse.y" { finish_handler_sequence (yyvsp[-3].ttype); ; break;} -case 765: -#line 3306 "parse.y" +case 766: +#line 3332 "parse.y" { yyval.ttype = begin_handler(); ; break;} -case 766: -#line 3308 "parse.y" +case 767: +#line 3334 "parse.y" { finish_handler_parms (yyvsp[-1].ttype); ; break;} -case 767: -#line 3310 "parse.y" +case 768: +#line 3336 "parse.y" { finish_handler (yyvsp[-3].ttype); ; break;} -case 770: -#line 3320 "parse.y" +case 771: +#line 3346 "parse.y" { expand_start_catch_block (NULL_TREE, NULL_TREE); ; break;} -case 771: -#line 3336 "parse.y" +case 772: +#line 3362 "parse.y" { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype); expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t), TREE_VALUE (yyvsp[-1].ftype.t)); ; break;} -case 772: -#line 3343 "parse.y" +case 773: +#line 3369 "parse.y" { tree label; do_label: label = define_label (input_filename, lineno, yyvsp[-1].ttype); @@ -7377,99 +7415,99 @@ case 772: expand_label (label); ; break;} -case 773: -#line 3350 "parse.y" -{ goto do_label; ; - break;} case 774: -#line 3352 "parse.y" +#line 3376 "parse.y" { goto do_label; ; break;} case 775: -#line 3354 "parse.y" +#line 3378 "parse.y" { goto do_label; ; break;} case 776: -#line 3359 "parse.y" +#line 3380 "parse.y" +{ goto do_label; ; + break;} +case 777: +#line 3385 "parse.y" { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; break;} -case 778: -#line 3362 "parse.y" +case 779: +#line 3388 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids compound statements inside for initializations"); ; break;} -case 779: -#line 3371 "parse.y" +case 780: +#line 3397 "parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} -case 780: -#line 3374 "parse.y" +case 781: +#line 3400 "parse.y" { emit_line_note (input_filename, lineno); ; break;} -case 781: -#line 3379 "parse.y" +case 782: +#line 3405 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 783: -#line 3382 "parse.y" +case 784: +#line 3408 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 784: -#line 3389 "parse.y" +case 785: +#line 3415 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 787: -#line 3396 "parse.y" +case 788: +#line 3422 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} -case 788: -#line 3401 "parse.y" +case 789: +#line 3427 "parse.y" { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; break;} -case 789: -#line 3406 "parse.y" +case 790: +#line 3432 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; break;} -case 790: -#line 3408 "parse.y" +case 791: +#line 3434 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} -case 791: -#line 3419 "parse.y" +case 792: +#line 3445 "parse.y" { yyval.ttype = empty_parms(); ; break;} -case 793: -#line 3424 "parse.y" +case 794: +#line 3450 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0); check_for_new_type ("inside parameter list", yyvsp[0].ftype); ; break;} -case 794: -#line 3432 "parse.y" -{ yyval.ttype = finish_parmlist (yyval.ttype, 0); ; - break;} case 795: -#line 3434 "parse.y" -{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; +#line 3458 "parse.y" +{ yyval.ttype = finish_parmlist (yyval.ttype, 0); ; break;} case 796: -#line 3437 "parse.y" +#line 3460 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} case 797: -#line 3439 "parse.y" +#line 3463 "parse.y" +{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; + break;} +case 798: +#line 3465 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 1); ; break;} -case 798: -#line 3442 "parse.y" +case 799: +#line 3468 "parse.y" { yyval.ttype = finish_parmlist (NULL_TREE, 1); ; break;} -case 799: -#line 3444 "parse.y" +case 800: +#line 3470 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7480,8 +7518,8 @@ case 799: yychar = ')'; ; break;} -case 800: -#line 3454 "parse.y" +case 801: +#line 3480 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7493,99 +7531,99 @@ case 800: yychar = ')'; ; break;} -case 801: -#line 3469 "parse.y" +case 802: +#line 3495 "parse.y" { maybe_snarf_defarg (); ; break;} -case 802: -#line 3471 "parse.y" +case 803: +#line 3497 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 805: -#line 3482 "parse.y" +case 806: +#line 3508 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ; break;} -case 806: -#line 3485 "parse.y" +case 807: +#line 3511 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[-1].ftype); yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ; break;} -case 807: -#line 3488 "parse.y" +case 808: +#line 3514 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; break;} -case 808: -#line 3491 "parse.y" +case 809: +#line 3517 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} -case 809: -#line 3493 "parse.y" +case 810: +#line 3519 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; break;} -case 811: -#line 3499 "parse.y" +case 812: +#line 3525 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[-1].ftype); yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ; break;} -case 812: -#line 3509 "parse.y" +case 813: +#line 3535 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ; break;} -case 813: -#line 3513 "parse.y" +case 814: +#line 3539 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 814: -#line 3516 "parse.y" +case 815: +#line 3542 "parse.y" { yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 815: -#line 3519 "parse.y" +case 816: +#line 3545 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 816: -#line 3523 "parse.y" +case 817: +#line 3549 "parse.y" { tree specs = strip_attrs (yyvsp[0].ftype.t); yyval.ftype.t = build_tree_list (specs, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 817: -#line 3527 "parse.y" +case 818: +#line 3553 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ttype); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.new_type_flag = 0; ; break;} -case 818: -#line 3534 "parse.y" +case 819: +#line 3560 "parse.y" { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 819: -#line 3537 "parse.y" +case 820: +#line 3563 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 822: -#line 3548 "parse.y" +case 823: +#line 3574 "parse.y" { see_typename (); ; break;} -case 823: -#line 3553 "parse.y" +case 824: +#line 3579 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ; break;} -case 824: -#line 3558 "parse.y" +case 825: +#line 3584 "parse.y" { error ("type specifier omitted for parameter"); if (TREE_CODE (yyval.ttype) == SCOPE_REF @@ -7595,189 +7633,189 @@ case 824: yyval.ttype = build_tree_list (integer_type_node, yyval.ttype); ; break;} -case 825: -#line 3570 "parse.y" +case 826: +#line 3596 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 826: -#line 3572 "parse.y" +case 827: +#line 3598 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 827: -#line 3574 "parse.y" +case 828: +#line 3600 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ; break;} -case 828: -#line 3579 "parse.y" +case 829: +#line 3605 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ; break;} -case 830: -#line 3585 "parse.y" +case 831: +#line 3611 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 831: -#line 3593 "parse.y" +case 832: +#line 3619 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 832: -#line 3595 "parse.y" +case 833: +#line 3621 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 833: -#line 3597 "parse.y" +case 834: +#line 3623 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 834: -#line 3599 "parse.y" +case 835: +#line 3625 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 835: -#line 3606 "parse.y" -{ got_scope = NULL_TREE; ; - break;} case 836: -#line 3611 "parse.y" -{ yyval.ttype = ansi_opname[MULT_EXPR]; ; +#line 3632 "parse.y" +{ got_scope = NULL_TREE; ; break;} case 837: -#line 3613 "parse.y" -{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; +#line 3637 "parse.y" +{ yyval.ttype = ansi_opname[MULT_EXPR]; ; break;} case 838: -#line 3615 "parse.y" -{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; +#line 3639 "parse.y" +{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; break;} case 839: -#line 3617 "parse.y" -{ yyval.ttype = ansi_opname[PLUS_EXPR]; ; +#line 3641 "parse.y" +{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; break;} case 840: -#line 3619 "parse.y" -{ yyval.ttype = ansi_opname[MINUS_EXPR]; ; +#line 3643 "parse.y" +{ yyval.ttype = ansi_opname[PLUS_EXPR]; ; break;} case 841: -#line 3621 "parse.y" -{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; +#line 3645 "parse.y" +{ yyval.ttype = ansi_opname[MINUS_EXPR]; ; break;} case 842: -#line 3623 "parse.y" -{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; +#line 3647 "parse.y" +{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; break;} case 843: -#line 3625 "parse.y" -{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; +#line 3649 "parse.y" +{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; break;} case 844: -#line 3627 "parse.y" -{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; +#line 3651 "parse.y" +{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; break;} case 845: -#line 3629 "parse.y" -{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; +#line 3653 "parse.y" +{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; break;} case 846: -#line 3631 "parse.y" -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; +#line 3655 "parse.y" +{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; break;} case 847: -#line 3633 "parse.y" -{ yyval.ttype = ansi_opname[LT_EXPR]; ; +#line 3657 "parse.y" +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 848: -#line 3635 "parse.y" -{ yyval.ttype = ansi_opname[GT_EXPR]; ; +#line 3659 "parse.y" +{ yyval.ttype = ansi_opname[LT_EXPR]; ; break;} case 849: -#line 3637 "parse.y" -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; +#line 3661 "parse.y" +{ yyval.ttype = ansi_opname[GT_EXPR]; ; break;} case 850: -#line 3639 "parse.y" -{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ; +#line 3663 "parse.y" +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 851: -#line 3641 "parse.y" -{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ; +#line 3665 "parse.y" +{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ; break;} case 852: -#line 3643 "parse.y" -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; +#line 3667 "parse.y" +{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ; break;} case 853: -#line 3645 "parse.y" +#line 3669 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 854: -#line 3647 "parse.y" -{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; +#line 3671 "parse.y" +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 855: -#line 3649 "parse.y" -{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; +#line 3673 "parse.y" +{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; break;} case 856: -#line 3651 "parse.y" -{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; +#line 3675 "parse.y" +{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; break;} case 857: -#line 3653 "parse.y" -{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; +#line 3677 "parse.y" +{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; break;} case 858: -#line 3655 "parse.y" -{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; +#line 3679 "parse.y" +{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; break;} case 859: -#line 3657 "parse.y" -{ yyval.ttype = ansi_opname[COND_EXPR]; ; +#line 3681 "parse.y" +{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; break;} case 860: -#line 3659 "parse.y" -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; +#line 3683 "parse.y" +{ yyval.ttype = ansi_opname[COND_EXPR]; ; break;} case 861: -#line 3661 "parse.y" -{ yyval.ttype = ansi_opname[COMPONENT_REF]; ; +#line 3685 "parse.y" +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 862: -#line 3663 "parse.y" -{ yyval.ttype = ansi_opname[MEMBER_REF]; ; +#line 3687 "parse.y" +{ yyval.ttype = ansi_opname[COMPONENT_REF]; ; break;} case 863: -#line 3665 "parse.y" -{ yyval.ttype = ansi_opname[CALL_EXPR]; ; +#line 3689 "parse.y" +{ yyval.ttype = ansi_opname[MEMBER_REF]; ; break;} case 864: -#line 3667 "parse.y" -{ yyval.ttype = ansi_opname[ARRAY_REF]; ; +#line 3691 "parse.y" +{ yyval.ttype = ansi_opname[CALL_EXPR]; ; break;} case 865: -#line 3669 "parse.y" -{ yyval.ttype = ansi_opname[NEW_EXPR]; ; +#line 3693 "parse.y" +{ yyval.ttype = ansi_opname[ARRAY_REF]; ; break;} case 866: -#line 3671 "parse.y" -{ yyval.ttype = ansi_opname[DELETE_EXPR]; ; +#line 3695 "parse.y" +{ yyval.ttype = ansi_opname[NEW_EXPR]; ; break;} case 867: -#line 3673 "parse.y" -{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; +#line 3697 "parse.y" +{ yyval.ttype = ansi_opname[DELETE_EXPR]; ; break;} case 868: -#line 3675 "parse.y" -{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; +#line 3699 "parse.y" +{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; break;} case 869: -#line 3678 "parse.y" -{ yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; +#line 3701 "parse.y" +{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; break;} case 870: -#line 3680 "parse.y" +#line 3704 "parse.y" +{ yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; + break;} +case 871: +#line 3706 "parse.y" { yyval.ttype = ansi_opname[ERROR_MARK]; ; break;} } @@ -7978,7 +8016,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 3683 "parse.y" +#line 3709 "parse.y" #ifdef SPEW_DEBUG diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 64a75e823a9..42af7829516 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -204,10 +204,9 @@ empty_parms () %type <ttype> declarator notype_declarator after_type_declarator %type <ttype> direct_notype_declarator direct_after_type_declarator - -%type <ttype> opt.component_decl_list component_decl_list -%type <ttype> component_decl component_decl_1 components notype_components -%type <ttype> component_declarator component_declarator0 self_reference +%type <itype> components notype_components +%type <ttype> component_decl component_decl_1 +%type <ttype> component_declarator component_declarator0 %type <ttype> notype_component_declarator notype_component_declarator0 %type <ttype> after_type_component_declarator after_type_component_declarator0 %type <ttype> enumlist enumerator @@ -1844,16 +1843,19 @@ typespecqual_reserved: initdecls: initdcl0 | initdecls ',' initdcl + { check_multiple_declarators (); } ; notype_initdecls: notype_initdcl0 | notype_initdecls ',' initdcl + { check_multiple_declarators (); } ; nomods_initdecls: nomods_initdcl0 | nomods_initdecls ',' initdcl + { check_multiple_declarators (); } ; maybeasm: @@ -2112,7 +2114,7 @@ structsp: yychar = YYLEX; semi = yychar == ';'; - $<ttype>$ = finish_class_definition ($1, $3, $5, semi); + $<ttype>$ = finish_class_definition ($1, $5, semi); } pending_defargs { finish_default_args (); } @@ -2168,7 +2170,10 @@ aggr: named_class_head_sans_basetype: aggr identifier - { current_aggr = $$; $$ = $2; } + { + current_aggr = $1; + $$ = $2; + } ; named_class_head_sans_basetype_defn: @@ -2202,15 +2207,11 @@ named_complex_class_head_sans_basetype: { current_aggr = $$; $$ = $3; } ; -do_xref_defn: - /* empty */ %prec EMPTY - { $<ttype>$ = xref_tag (current_aggr, $<ttype>0, 0); } - ; - named_class_head: named_class_head_sans_basetype %prec EMPTY { $$ = xref_tag (current_aggr, $1, 1); } - | named_class_head_sans_basetype_defn do_xref_defn + | named_class_head_sans_basetype_defn + { $<ttype>$ = xref_tag (current_aggr, $1, 0); } maybe_base_class_list %prec EMPTY { $$ = $<ttype>2; @@ -2358,64 +2359,45 @@ left_curly: self_reference: /* empty */ { - $$ = build_self_reference (); + finish_member_declaration (build_self_reference ()); } ; opt.component_decl_list: self_reference - { if ($$) $$ = build_tree_list (access_public_node, $$); } | self_reference component_decl_list - { - if (current_aggr == signature_type_node) - $$ = build_tree_list (access_public_node, $2); - else - $$ = build_tree_list (access_default_node, $2); - if ($1) $$ = tree_cons (access_public_node, $1, $$); - } - | opt.component_decl_list VISSPEC ':' component_decl_list - { - tree visspec = $2; + | opt.component_decl_list access_specifier component_decl_list + | opt.component_decl_list access_specifier + ; +access_specifier: + VISSPEC ':' + { if (current_aggr == signature_type_node) { error ("access specifier not allowed in signature"); - visspec = access_public_node; + $1 = access_public_node; } - $$ = chainon ($$, build_tree_list (visspec, $4)); - } - | opt.component_decl_list VISSPEC ':' - { - if (current_aggr == signature_type_node) - error ("access specifier not allowed in signature"); - } + + current_access_specifier = $1; + } ; /* Note: we no longer warn about the semicolon after a component_decl_list. ARM $9.2 says that the semicolon is optional, and therefore allowed. */ component_decl_list: component_decl - { if ($$ == void_type_node) $$ = NULL_TREE; + { + finish_member_declaration ($1); } | component_decl_list component_decl - { /* In pushdecl, we created a reverse list of names - in this binding level. Make sure that the chain - of what we're trying to add isn't the item itself - (which can happen with what pushdecl's doing). */ - if ($2 != NULL_TREE && $2 != void_type_node - && $2 != error_mark_node) - { - if (TREE_CHAIN ($2) != $$) - $$ = chainon ($$, $2); - else - $$ = $2; - } + { + finish_member_declaration ($2); } ; component_decl: component_decl_1 ';' - { } | component_decl_1 '}' { error ("missing ';' before right brace"); yyungetc ('}', 0); } @@ -2435,9 +2417,20 @@ component_decl: { $$ = $2; pedantic = $<itype>1; } | template_header component_decl - { $$ = finish_member_template_decl ($1, $2); } + { + if ($2) + $$ = finish_member_template_decl ($2); + else + /* The component was already processed. */ + $$ = NULL_TREE; + + finish_template_decl ($1); + } | template_header typed_declspecs ';' - { $$ = finish_member_class_template ($1, $2.t); } + { + $$ = finish_member_class_template ($2.t); + finish_template_decl ($1); + } ; component_decl_1: @@ -2445,9 +2438,32 @@ component_decl_1: speed; we need to call grok_x_components for enums, so the speedup would be insignificant. */ typed_declspecs components - { $$ = grok_x_components ($1.t, $2); } + { + /* Most of the productions for component_decl only + allow the creation of one new member, so we call + finish_member_declaration in component_decl_list. + For this rule and the next, however, there can be + more than one member, e.g.: + + int i, j; + + and we need the first member to be fully + registered before the second is processed. + Therefore, the rules for components take care of + this processing. To avoid registering the + components more than once, we send NULL_TREE up + here; that lets finish_member_declaration now + that there is nothing to do. */ + if (!$2) + grok_x_components ($1.t); + $$ = NULL_TREE; + } | declmods notype_components - { $$ = grok_x_components ($1, $2); } + { + if (!$2) + grok_x_components ($1); + $$ = NULL_TREE; + } | notype_declarator maybeasm maybe_attribute maybe_init { $$ = grokfield ($$, NULL_TREE, $4, $2, build_tree_list ($3, NULL_TREE)); } @@ -2482,31 +2498,41 @@ component_decl_1: /* ??? Huh? ^^^ */ components: /* empty: possibly anonymous */ - { $$ = NULL_TREE; } + { $$ = 0; } | component_declarator0 + { + if (PROCESSING_REAL_TEMPLATE_DECL_P ()) + $1 = finish_member_template_decl ($1); + finish_member_declaration ($1); + $$ = 1; + } | components ',' component_declarator - { - /* In this context, void_type_node encodes - friends. They have been recorded elsewhere. */ - if ($$ == void_type_node) - $$ = $3; - else - $$ = chainon ($$, $3); + { + check_multiple_declarators (); + if (PROCESSING_REAL_TEMPLATE_DECL_P ()) + $3 = finish_member_template_decl ($3); + finish_member_declaration ($3); + $$ = 2; } ; notype_components: /* empty: possibly anonymous */ - { $$ = NULL_TREE; } + { $$ = 0; } | notype_component_declarator0 + { + if (PROCESSING_REAL_TEMPLATE_DECL_P ()) + $1 = finish_member_template_decl ($1); + finish_member_declaration ($1); + $$ = 1; + } | notype_components ',' notype_component_declarator - { - /* In this context, void_type_node encodes - friends. They have been recorded elsewhere. */ - if ($$ == void_type_node) - $$ = $3; - else - $$ = chainon ($$, $3); + { + check_multiple_declarators (); + if (PROCESSING_REAL_TEMPLATE_DECL_P ()) + $3 = finish_member_template_decl ($3); + finish_member_declaration ($3); + $$ = 2; } ; diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 10161f822ab..c493bea4f5f 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -129,6 +129,7 @@ static tree tsubst_decl PROTO((tree, tree, tree, tree)); static tree tsubst_arg_types PROTO((tree, tree, tree)); static void check_specialization_scope PROTO((void)); static tree process_partial_specialization PROTO((tree)); +static void set_current_access_from_decl PROTO((tree)); /* We use TREE_VECs to hold template arguments. If there is only one level of template arguments, then the TREE_VEC contains the @@ -196,12 +197,9 @@ static tree process_partial_specialization PROTO((tree)); it is a specialization, in which case the DECL itself is returned. */ tree -finish_member_template_decl (template_parameters, decl) - tree template_parameters; +finish_member_template_decl (decl) tree decl; { - finish_template_decl (template_parameters); - if (decl == NULL_TREE || decl == void_type_node) return NULL_TREE; else if (decl == error_mark_node) @@ -3066,9 +3064,11 @@ comp_template_args (oldargs, newargs) if (nt == ot) continue; - if (TREE_CODE (nt) != TREE_CODE (ot)) + else if (!nt || !ot) + return 0; + else if (TREE_CODE (nt) != TREE_CODE (ot)) return 0; - if (TREE_CODE (nt) == TREE_VEC) + else if (TREE_CODE (nt) == TREE_VEC) { /* For member templates */ if (comp_template_args (ot, nt)) @@ -3382,14 +3382,12 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope) } else { - extern tree current_local_enum; tree template_type = TREE_TYPE (template); tree type_decl; tree found = NULL_TREE; int arg_depth; int parm_depth; int is_partial_instantiation; - tree prev_local_enum = NULL_TREE; template = most_general_template (template); parmlist = DECL_TEMPLATE_PARMS (template); @@ -3549,10 +3547,7 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope) if (TREE_CODE (template_type) == ENUMERAL_TYPE) { if (!is_partial_instantiation) - { - prev_local_enum = current_local_enum; - t = start_enum (TYPE_IDENTIFIER (template_type)); - } + t = start_enum (TYPE_IDENTIFIER (template_type)); else /* We don't want to call start_enum for this type, since the values for the enumeration constants may involve @@ -3570,7 +3565,7 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope) TYPE_FOR_JAVA (t) = TYPE_FOR_JAVA (template_type); } - /* If we called tsubst_enum above, this information will already + /* If we called start_enum above, this information will already be set up. */ if (!TYPE_NAME (t)) { @@ -3599,17 +3594,14 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope) if (TREE_CODE (t) == ENUMERAL_TYPE && !is_partial_instantiation) - { - /* Now that the type has been registered on the - instantiations list, we set up the enumerators. Because - the enumeration constants may involve the enumeration - type itself, we make sure to register the type first, and - then create the constants. That way, doing tsubst_expr - for the enumeration constants won't result in recursive - calls here; we'll find the instantiation and exit above. */ - tsubst_enum (template_type, t, arglist); - current_local_enum = prev_local_enum; - } + /* Now that the type has been registered on the instantiations + list, we set up the enumerators. Because the enumeration + constants may involve the enumeration type itself, we make + sure to register the type first, and then create the + constants. That way, doing tsubst_expr for the enumeration + constants won't result in recursive calls here; we'll find + the instantiation and exit above. */ + tsubst_enum (template_type, t, arglist); /* We're done with the permanent obstack, now. */ pop_obstacks (); @@ -3814,6 +3806,9 @@ for_each_template_parm (t, fn, data) case TYPENAME_TYPE: return 1; + case PTRMEM_CST: + return for_each_template_parm (TREE_TYPE (t), fn, data); + case SCOPE_REF: return for_each_template_parm (TREE_OPERAND (t, 0), fn, data); @@ -4256,7 +4251,7 @@ tree instantiate_class_template (type) tree type; { - tree template, args, pattern, t, *field_chain; + tree template, args, pattern, t; tree typedecl; if (type == error_mark_node) @@ -4323,11 +4318,16 @@ instantiate_class_template (type) } if (pedantic && uses_template_parms (args)) - /* If there are still template parameters amongst the args, then - we can't instantiate the type; there's no telling whether or not one - of the template parameters might eventually be instantiated to some - value that results in a specialization being used. */ - return type; + { + /* If there are still template parameters amongst the args, then + we can't instantiate the type; there's no telling whether or not one + of the template parameters might eventually be instantiated to some + value that results in a specialization being used. We do the + type as complete so that, for example, declaring one of its + members to be a friend will not be rejected. */ + TYPE_SIZE (type) = integer_zero_node; + return type; + } TYPE_BEING_DEFINED (type) = 1; @@ -4394,8 +4394,6 @@ instantiate_class_template (type) TYPE_ALIGN (type) = TYPE_ALIGN (pattern); TYPE_FOR_JAVA (type) = TYPE_FOR_JAVA (pattern); /* For libjava's JArray<T> */ - CLASSTYPE_LOCAL_TYPEDECLS (type) = CLASSTYPE_LOCAL_TYPEDECLS (pattern); - /* If this is a partial instantiation, don't tsubst anything. We will only use this type for implicit typename, so the actual contents don't matter. All that matters is whether a particular name is a type. */ @@ -4449,8 +4447,6 @@ instantiate_class_template (type) } TYPE_GETS_NEW (type) |= TYPE_GETS_NEW (basetype); TYPE_GETS_DELETE (type) |= TYPE_GETS_DELETE (basetype); - CLASSTYPE_LOCAL_TYPEDECLS (type) - |= CLASSTYPE_LOCAL_TYPEDECLS (basetype); } /* Don't initialize this until the vector is filled out, or lookups will crash. */ @@ -4458,8 +4454,6 @@ instantiate_class_template (type) } } - field_chain = &TYPE_FIELDS (type); - for (t = CLASSTYPE_TAGS (pattern); t; t = TREE_CHAIN (t)) { tree tag = TREE_VALUE (t); @@ -4467,35 +4461,7 @@ instantiate_class_template (type) tree newtag; newtag = tsubst (tag, args, NULL_TREE); - if (TREE_CODE (newtag) == ENUMERAL_TYPE) - { - extern tree current_local_enum; - tree prev_local_enum = current_local_enum; - - if (TYPE_VALUES (newtag)) - { - tree v; - - /* We must set things up so that CURRENT_LOCAL_ENUM is the - CONST_DECL for the last enumeration constant, since the - CONST_DECLs are chained backwards. */ - for (v = TYPE_VALUES (newtag); TREE_CHAIN (v); - v = TREE_CHAIN (v)) - ; - - current_local_enum - = IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (v)); - *field_chain = grok_enum_decls (NULL_TREE); - current_local_enum = prev_local_enum; - - while (*field_chain) - { - DECL_FIELD_CONTEXT (*field_chain) = type; - field_chain = &TREE_CHAIN (*field_chain); - } - } - } - else + if (TREE_CODE (newtag) != ENUMERAL_TYPE) { /* Now, we call pushtag to put this NEWTAG into the scope of TYPE. We first set up the IDENTIFIER_TYPE_VALUE to avoid @@ -4530,12 +4496,27 @@ instantiate_class_template (type) DECL_EXTERNAL (r) = 1; cp_finish_decl (r, DECL_INITIAL (r), NULL_TREE, 0, 0); } - - *field_chain = r; - field_chain = &TREE_CHAIN (r); + + /* R will have a TREE_CHAIN if and only if it has already been + processed by finish_member_declaration. This can happen + if, for example, it is a TYPE_DECL for a class-scoped + ENUMERAL_TYPE; such a thing will already have been added to + the field list by tsubst_enum above. */ + if (!TREE_CHAIN (r)) + { + set_current_access_from_decl (r); + finish_member_declaration (r); + } } - TYPE_METHODS (type) = tsubst_chain (TYPE_METHODS (pattern), args); + /* Set up the list (TYPE_METHODS) and vector (CLASSTYPE_METHOD_VEC) + for this instantiation. */ + for (t = TYPE_METHODS (pattern); t; t = TREE_CHAIN (t)) + { + tree r = tsubst (t, args, NULL_TREE); + set_current_access_from_decl (r); + finish_member_declaration (r); + } /* Construct the DECL_FRIENDLIST for the new class type. */ typedecl = TYPE_MAIN_DECL (type); @@ -4627,6 +4608,14 @@ instantiate_class_template (type) require_complete_type (t); } + /* Set the file and line number information to whatever is given for + the class itself. This puts error messages involving generated + implicit functions at a predictable point, and the same point + that would be used for non-template classes. */ + lineno = DECL_SOURCE_LINE (typedecl); + input_filename = DECL_SOURCE_FILE (typedecl); + + unreverse_member_declarations (type); type = finish_struct_1 (type, 0); CLASSTYPE_GOT_SEMICOLON (type) = 1; @@ -6787,6 +6776,7 @@ type_unification_real (tparms, targs, parms, args, subr, { tree targs; tree arg_type; + int r; /* Have to back unify here */ arg = OVL_FUNCTION (arg); @@ -6795,10 +6785,14 @@ type_unification_real (tparms, targs, parms, args, subr, maybe_adjust_types_for_deduction (strict, &parm, &arg_type); parm = expr_tree_cons (NULL_TREE, parm, NULL_TREE); arg_type = scratch_tree_cons (NULL_TREE, arg_type, NULL_TREE); - return - type_unification (DECL_INNERMOST_TEMPLATE_PARMS (arg), - targs, arg_type, parm, NULL_TREE, - DEDUCE_EXACT, allow_incomplete); + r = type_unification (DECL_INNERMOST_TEMPLATE_PARMS (arg), + targs, arg_type, parm, NULL_TREE, + DEDUCE_EXACT, allow_incomplete); + if (r) + /* If the back-unification failed, just bail out. */ + return r; + else + continue; } arg = TREE_TYPE (arg); } @@ -7952,16 +7946,22 @@ regenerate_decl_from_template (decl, tmpl) register_specialization for it. */ my_friendly_assert (unregistered, 0); + if (TREE_CODE (decl) == VAR_DECL) + /* Make sure that we can see identifiers, and compute access + correctly, for the class members used in the declaration of + this static variable. */ + pushclass (DECL_CONTEXT (decl), 2); + /* Do the substitution to get the new declaration. */ new_decl = tsubst (code_pattern, args, NULL_TREE); if (TREE_CODE (decl) == VAR_DECL) { /* Set up DECL_INITIAL, since tsubst doesn't. */ - pushclass (DECL_CONTEXT (decl), 2); DECL_INITIAL (new_decl) = tsubst_expr (DECL_INITIAL (code_pattern), args, DECL_TI_TEMPLATE (decl)); + /* Pop the class context we pushed above. */ popclass (1); } @@ -8228,27 +8228,6 @@ out: return d; } -tree -tsubst_chain (t, argvec) - tree t, argvec; -{ - if (t) - { - tree first = tsubst (t, argvec, NULL_TREE); - tree last = first; - - for (t = TREE_CHAIN (t); t; t = TREE_CHAIN (t)) - { - tree x = tsubst (t, argvec, NULL_TREE); - TREE_CHAIN (last) = x; - last = x; - } - - return first; - } - return NULL_TREE; -} - static tree tsubst_expr_values (t, argvec) tree t, argvec; @@ -8321,6 +8300,20 @@ add_maybe_template (d, fns) DECL_MAYBE_TEMPLATE (d) = 1; } +/* Set CURRENT_ACCESS_SPECIFIER based on the protection of DECL. */ + +static void +set_current_access_from_decl (decl) + tree decl; +{ + if (TREE_PRIVATE (decl)) + current_access_specifier = access_private_node; + else if (TREE_PROTECTED (decl)) + current_access_specifier = access_protected_node; + else + current_access_specifier = access_public_node; +} + /* Instantiate an enumerated type. TAG is the template type, NEWTAG is the instantiation (which should have been created with start_enum) and ARGS are the template arguments to use. */ @@ -8335,15 +8328,20 @@ tsubst_enum (tag, newtag, args) for (e = TYPE_VALUES (tag); e; e = TREE_CHAIN (e)) { - tree elt - = build_enumerator (TREE_PURPOSE (e), - /* Note that in a template enum, the - TREE_VALUE is the CONST_DECL, not the - corresponding INTEGER_CST. */ - tsubst_expr (DECL_INITIAL (TREE_VALUE (e)), + tree value; + tree elt; + + /* Note that in a template enum, the TREE_VALUE is the + CONST_DECL, not the corresponding INTEGER_CST. */ + value = tsubst_expr (DECL_INITIAL (TREE_VALUE (e)), args, - NULL_TREE), - newtag); + NULL_TREE); + + /* Give this enumeration constant the correct access. */ + set_current_access_from_decl (TREE_VALUE (e)); + + /* Actually build the enumerator itself. */ + elt = build_enumerator (TREE_PURPOSE (e), value, newtag); /* We save the enumerators we have built so far in the TYPE_VALUES so that if the enumeration constants for @@ -8420,7 +8418,7 @@ set_mangled_name_for_template_decl (decl) with the innermost level omitted. */ fn_type = TREE_TYPE (tmpl); if (DECL_STATIC_FUNCTION_P (decl)) - context = DECL_CLASS_CONTEXT (decl); + context = DECL_CLASS_CONTEXT (decl); if (parm_depth == 1) /* No substitution is necessary. */ diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 75c3d198a1d..5f157029eca 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -1289,7 +1289,7 @@ lookup_fnfields_1 (type, name) if (*++methods && name == dtor_identifier) return 1; - while (++methods != end) + while (++methods != end && *methods) { #ifdef GATHER_STATISTICS n_outer_fields_searched++; @@ -1301,20 +1301,28 @@ lookup_fnfields_1 (type, name) /* If we didn't find it, it might have been a template conversion operator. (Note that we don't look for this case above so that we will always find specializations first.) */ - if (methods == end + if ((methods == end || !*methods) && IDENTIFIER_TYPENAME_P (name)) { methods = &TREE_VEC_ELT (method_vec, 0) + 1; - while (++methods != end) + while (++methods != end && *methods) { - if (TREE_CODE (OVL_CURRENT (*methods)) == TEMPLATE_DECL - && IDENTIFIER_TYPENAME_P (DECL_NAME (OVL_CURRENT (*methods)))) + tree method_name = DECL_NAME (OVL_CURRENT (*methods)); + + if (!IDENTIFIER_TYPENAME_P (method_name)) + { + /* Since all conversion operators come first, we know + there is no such operator. */ + methods = end; + break; + } + else if (TREE_CODE (OVL_CURRENT (*methods)) == TEMPLATE_DECL) break; } } - if (methods != end) + if (methods != end && *methods) return methods - &TREE_VEC_ELT (method_vec, 0); } @@ -2962,7 +2970,7 @@ dfs_pushdecls (binfo) tree binfo; { tree type = BINFO_TYPE (binfo); - tree fields, *methods, *end; + tree fields; tree method_vec; int dummy = 0; @@ -3015,16 +3023,24 @@ dfs_pushdecls (binfo) method_vec = CLASSTYPE_METHOD_VEC (type); if (method_vec && ! dummy) { + tree *methods; + tree *end; + /* Farm out constructors and destructors. */ - methods = &TREE_VEC_ELT (method_vec, 2); end = TREE_VEC_END (method_vec); - while (methods != end) + for (methods = &TREE_VEC_ELT (method_vec, 2); + *methods && methods != end; + methods++) { /* This will cause lookup_name to return a pointer to the tree_list of possible methods of this name. */ - tree name = DECL_NAME (OVL_CURRENT (*methods)); - tree class_value = IDENTIFIER_CLASS_VALUE (name); + tree name; + tree class_value; + + + name = DECL_NAME (OVL_CURRENT (*methods)); + class_value = IDENTIFIER_CLASS_VALUE (name); /* If the class value is not an envelope of the kind described in the comment above, we create a new envelope. */ @@ -3049,8 +3065,6 @@ dfs_pushdecls (binfo) envelope_add_decl (type, OVL_CURRENT (*methods), &TREE_PURPOSE (class_value)); pop_obstacks (); - - methods++; } } @@ -3074,10 +3088,11 @@ dfs_compress_decls (binfo) else if (method_vec != 0) { /* Farm out constructors and destructors. */ - tree *methods = &TREE_VEC_ELT (method_vec, 2); + tree *methods; tree *end = TREE_VEC_END (method_vec); - for (; methods != end; methods++) + for (methods = &TREE_VEC_ELT (method_vec, 2); + methods != end && *methods; methods++) { /* This is known to be an envelope of the kind described before dfs_pushdecls. */ @@ -3269,7 +3284,9 @@ add_conversions (binfo) for (i = 2; i < TREE_VEC_LENGTH (method_vec); ++i) { tree tmp = TREE_VEC_ELT (method_vec, i); - if (! IDENTIFIER_TYPENAME_P (DECL_NAME (OVL_CURRENT (tmp)))) + + if (!tmp + || !IDENTIFIER_TYPENAME_P (DECL_NAME (OVL_CURRENT (tmp)))) break; conversions = scratch_tree_cons (binfo, tmp, conversions); } diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 6f69d64594b..9579d44d96b 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1268,14 +1268,99 @@ begin_class_definition (t) return t; } -/* Finish a class definition T, with the indicated COMPONENTS, and - with the indicate ATTRIBUTES. If SEMI, the definition is - immediately followed by a semicolon. Returns the type. */ +/* Finish the member declaration given by DECL. */ + +void +finish_member_declaration (decl) + tree decl; +{ + if (decl == error_mark_node || decl == NULL_TREE) + return; + + if (decl == void_type_node) + /* The COMPONENT was a friend, not a member, and so there's + nothing for us to do. */ + return; + + /* We should see only one DECL at a time. */ + my_friendly_assert (TREE_CHAIN (decl) == NULL_TREE, 0); + + /* Set up access control for DECL. */ + TREE_PRIVATE (decl) + = (current_access_specifier == access_private_node); + TREE_PROTECTED (decl) + = (current_access_specifier == access_protected_node); + if (TREE_CODE (decl) == TEMPLATE_DECL) + { + TREE_PRIVATE (DECL_RESULT (decl)) = TREE_PRIVATE (decl); + TREE_PROTECTED (DECL_RESULT (decl)) = TREE_PROTECTED (decl); + } + + /* Mark the DECL as a member of the current class. */ + if (TREE_CODE (decl) == FUNCTION_DECL + || DECL_FUNCTION_TEMPLATE_P (decl)) + /* Historically, DECL_CONTEXT was not set for a FUNCTION_DECL in + finish_struct. Presumably it is already set as the function is + parsed. Perhaps DECL_CLASS_CONTEXT is already set, too? */ + DECL_CLASS_CONTEXT (decl) = current_class_type; + else if (TREE_CODE (decl) == TYPE_DECL) + /* Historically, DECL_CONTEXT was not set for a TYPE_DECL in + finish_struct, so we do not do it here either. Perhaps we + should, though. */ + ; + else + DECL_CONTEXT (decl) = current_class_type; + + /* Put functions on the TYPE_METHODS list and everything else on the + TYPE_FIELDS list. Note that these are built up in reverse order. + We reverse them (to obtain declaration order) in finish_struct. */ + if (TREE_CODE (decl) == FUNCTION_DECL + || DECL_FUNCTION_TEMPLATE_P (decl)) + { + /* We also need to add this function to the + CLASSTYPE_METHOD_VEC. */ + add_method (current_class_type, 0, decl); + + TREE_CHAIN (decl) = TYPE_METHODS (current_class_type); + TYPE_METHODS (current_class_type) = decl; + } + else + { + /* All TYPE_DECLs go at the end of TYPE_FIELDS. Ordinary fields + go at the beginning. The reason is that lookup_field_1 + searches the list in order, and we want a field name to + override a type name so that the "struct stat hack" will + work. In particular: + + struct S { enum E { }; int E } s; + s.E = 3; + + is legal. In addition, the FIELD_DECLs must be maintained in + declaration order so that class layout works as expected. + However, we don't need that order until class layout, so we + save a little time by putting FIELD_DECLs on in reverse order + here, and then reversing them in finish_struct_1. (We could + also keep a pointer to the correct insertion points in the + list.) */ + + if (TREE_CODE (decl) == TYPE_DECL) + TYPE_FIELDS (current_class_type) + = chainon (TYPE_FIELDS (current_class_type), decl); + else + { + TREE_CHAIN (decl) = TYPE_FIELDS (current_class_type); + TYPE_FIELDS (current_class_type) = decl; + } + } +} + +/* Finish a class definition T with the indicate ATTRIBUTES. If SEMI, + the definition is immediately followed by a semicolon. Returns the + type. */ tree -finish_class_definition (t, components, attributes, semi) +finish_class_definition (t, attributes, semi) tree t; - tree components; tree attributes; int semi; { @@ -1299,7 +1384,7 @@ finish_class_definition (t, components, attributes, semi) ; else { - t = finish_struct (t, components, attributes, semi); + t = finish_struct (t, attributes, semi); if (semi) note_got_semicolon (t); } @@ -1342,8 +1427,7 @@ begin_inline_definitions () TYPES whose template parameters are given by PARMS. */ tree -finish_member_class_template (parms, types) - tree parms; +finish_member_class_template (types) tree types; { tree t; @@ -1356,13 +1440,15 @@ finish_member_class_template (parms, types) maybe_process_partial_specialization (TREE_VALUE (t)); note_list_got_semicolon (types); - grok_x_components (types, NULL_TREE); + grok_x_components (types); if (TYPE_CONTEXT (TREE_VALUE (types)) != current_class_type) /* The component was in fact a friend declaration. We avoid finish_member_template_decl performing certain checks by unsetting TYPES. */ types = NULL_TREE; - finish_member_template_decl (parms, types); + + finish_member_template_decl (types); + /* As with other component type declarations, we do not store the new DECL on the list of component_decls. */ @@ -1480,3 +1566,31 @@ finish_base_specifier (access_specifier, base_class, return result; } + +/* Called when multiple declarators are processed. If that is not + premitted in this context, an error is issued. */ + +void +check_multiple_declarators () +{ + /* [temp] + + In a template-declaration, explicit specialization, or explicit + instantiation the init-declarator-list in the declaration shall + contain at most one declarator. + + We don't just use PROCESSING_TEMPLATE_DECL for the first + condition since that would disallow the perfectly legal code, + like `template <class T> struct S { int i, j; };'. */ + tree scope = current_scope (); + + if (scope && TREE_CODE (scope) == FUNCTION_DECL) + /* It's OK to write `template <class T> void f() { int i, j;}'. */ + return; + + if (PROCESSING_REAL_TEMPLATE_DECL_P () + || processing_explicit_instantiation + || processing_specialization) + cp_error ("multiple declarators in template declaration"); +} + diff --git a/gcc/cp/sig.c b/gcc/cp/sig.c index 3580d4fc49a..6f8d14dd19d 100644 --- a/gcc/cp/sig.c +++ b/gcc/cp/sig.c @@ -343,49 +343,45 @@ build_member_function_pointer (member) The new FIELD_DECLs are appended at the end of the last (and only) sublist of `list_of_fieldlists.' + T is the signature type. + As a side effect, each member function in the signature gets the `decl.ignored' bit turned on, so we don't output debug info for it. */ void -append_signature_fields (list_of_fieldlists) - tree list_of_fieldlists; +append_signature_fields (t) + tree t; { - tree l, x; - tree last_x = NULL_TREE; + tree x; tree mfptr; tree last_mfptr = NULL_TREE; tree mfptr_list = NULL_TREE; - /* For signatures it should actually be only a list with one element. */ - for (l = list_of_fieldlists; l; l = TREE_CHAIN (l)) + for (x = TYPE_METHODS (t); x; x = TREE_CHAIN (x)) { - for (x = TREE_VALUE (l); x; x = TREE_CHAIN (x)) + if (TREE_CODE (x) == FUNCTION_DECL) { - if (TREE_CODE (x) == FUNCTION_DECL) + mfptr = build_member_function_pointer (x); + DECL_MEMFUNC_POINTER_TO (x) = mfptr; + DECL_MEMFUNC_POINTING_TO (mfptr) = x; + DECL_IGNORED_P (x) = 1; + DECL_IN_AGGR_P (mfptr) = 1; + if (! mfptr_list) + mfptr_list = last_mfptr = mfptr; + else { - mfptr = build_member_function_pointer (x); - DECL_MEMFUNC_POINTER_TO (x) = mfptr; - DECL_MEMFUNC_POINTING_TO (mfptr) = x; - DECL_IGNORED_P (x) = 1; - DECL_IN_AGGR_P (mfptr) = 1; - if (! mfptr_list) - mfptr_list = last_mfptr = mfptr; - else - { - TREE_CHAIN (last_mfptr) = mfptr; - last_mfptr = mfptr; - } + TREE_CHAIN (last_mfptr) = mfptr; + last_mfptr = mfptr; } - last_x = x; } } - /* Append the lists. */ - if (last_x && mfptr_list) - { - TREE_CHAIN (last_x) = mfptr_list; - TREE_CHAIN (last_mfptr) = NULL_TREE; - } + /* The member function pointers must come after the TYPE_DECLs, in + this case, because build_signature_table_constructor depends on + finding opaque TYPE_DECLS before the functions that make use of + them. */ + if (last_mfptr) + TYPE_FIELDS (t) = chainon (TYPE_FIELDS (t), mfptr_list); } /* Compare the types of a signature member function and a class member diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 224c950c280..1f55e56b1d8 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1581,6 +1581,10 @@ search_tree (t, func) case DEFAULT_ARG: break; + case PTRMEM_CST: + TRY (TREE_TYPE (t)); + break; + case COND_EXPR: case TARGET_EXPR: case AGGR_INIT_EXPR: @@ -1845,6 +1849,12 @@ mapcar (t, func) case STRING_CST: return copy_node (t); + case PTRMEM_CST: + t = copy_node (t); + TREE_TYPE (t) = mapcar (TREE_TYPE (t), func); + PTRMEM_CST_MEMBER (t) = mapcar (PTRMEM_CST_MEMBER (t), func); + return t; + case COND_EXPR: case TARGET_EXPR: case AGGR_INIT_EXPR: @@ -1908,7 +1918,7 @@ mapcar (t, func) TREE_OPERAND (t, 1) = mapcar (TREE_OPERAND (t, 1), func); /* tree.def says that operand two is RTL, but - build_call_declarator puts trees in there. */ + make_call_declarator puts trees in there. */ if (TREE_OPERAND (t, 2) && TREE_CODE (TREE_OPERAND (t, 2)) == TREE_LIST) TREE_OPERAND (t, 2) = mapcar (TREE_OPERAND (t, 2), func); @@ -2449,6 +2459,13 @@ cp_tree_equal (t1, t2) return comptypes (TREE_OPERAND (t1, 0), TREE_OPERAND (t2, 0), 1); break; + case PTRMEM_CST: + /* Two pointer-to-members are the same if they point to the same + field or function in the same class. */ + return (PTRMEM_CST_MEMBER (t1) == PTRMEM_CST_MEMBER (t2) + && comptypes (PTRMEM_CST_CLASS (t1), PTRMEM_CST_CLASS (t2), + 1)); + default: break; } diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 9e2c1232743..02a8c84c06d 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -4884,7 +4884,6 @@ unary_complex_lvalue (code, arg) else { tree type; - tree offset; if (TREE_OPERAND (arg, 0) && (TREE_CODE (TREE_OPERAND (arg, 0)) != NOP_EXPR @@ -4896,21 +4895,13 @@ unary_complex_lvalue (code, arg) return error_mark_node; } - /* Add in the offset to the field. */ - offset = convert (sizetype, - size_binop (EASY_DIV_EXPR, - DECL_FIELD_BITPOS (t), - size_int (BITS_PER_UNIT))); - - /* We offset all pointer to data members by 1 so that we can - distinguish between a null pointer to data member and the first - data member of a structure. */ - offset = size_binop (PLUS_EXPR, offset, size_int (1)); - type = build_offset_type (DECL_FIELD_CONTEXT (t), TREE_TYPE (t)); type = build_pointer_type (type); - return cp_convert (type, offset); + t = make_node (PTRMEM_CST); + TREE_TYPE (t) = type; + PTRMEM_CST_MEMBER (t) = TREE_OPERAND (arg, 1); + return t; } } |