From: Mark Mitchell Date: Fri, 2 Apr 1999 15:36:57 +0000 (+0000) Subject: tinfo.h (__class_type_info): Fix illegal declaration. X-Git-Tag: prereleases/libgcj-0.1~102 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=8f0327178b2158f8c6ee5996b2bd12c7dde8dbe8;p=gcc.git tinfo.h (__class_type_info): Fix illegal declaration. 1999-04-02 Mark Mitchell * tinfo.h (__class_type_info): Fix illegal declaration. * cp-tree.def (TEMPLATE_ID_EXPR): Update comment. * cp-tree.h (INHERITED_VALUE_BINDING_P): New macro. (IDENTIFIER_CLASS_VALUE): Improve documentation. (is_properly_derived_from): Declare. (invalidate_class_lookup_cache): Likewise. (maybe_maybe_note_name_used_in_class): Likewise. (note_name_declared_in_class): Likewise. (push_using_decl): Remove duplicate declaration. (id_in_current_class): Remove declaration. (push_class_binding): Change prototype. (clear_identitifer_class_values): Declare. * call.c (is_properly_derived_from): Make it global. (build_new_function_call): Be careful about updating candidates. (build_new_method_call): Handle COMPONENT_REFs. Don't crash when asked to make illegal calls. * class.c: Include splay-tree.h. (class_stack_node): Add names_used slot. (check_member_decl_is_same_in_complete_scope): Remove. (add_method): Fix comment. Push the declaration into class scope. (finish_struct_1): When popping the class, pop the bindings too. Remove check for data member/function member conflict. (finish_struct): Remove calls to check_member_decl_is_same_in_complete_scope. Change calls to popclass. (pushclass): Clear names_used in the class stack entry. Use invalidate_class_lookup_cache to remove cached entries, rather than magic values with popclass. Clear IDENTIFIER_CLASS_VALUE before entering a new class. Remove dead code. Don't mess with current_function_decl when pushing declarations. (invalidate_class_lookup_cache): New function, split out from ... (popclass): Here. Clean up names_used on our way out. (instantiate_type): Adjust. (build_self_reference): Don't push the declaration here. (maybe_note_name_used_in_class): New function. (note_name_declared_in_class): Likewise. * decl.c (add_binding): Change prototype. (find_class_binding_level): New function. (innermost_nonclass_level): Likewise. (current_binding_level): Update documentation. (inner_binding_level): Remove. Replace with current_binding_level throughout. (push_binding_level): Remove special handling of class_binding_level. (pop_binding_level): Likewise. Use find_class_binding_level. (suspend_binding_level): Likewise. (global_bindings_p): Use innermost_nonclass_level. (toplevel_bindings_p): Likewise. (namespace_bindings_p): Likewise. (pseudo_global_level_p): Likewise. (push_binding): Clear INHERITED_VALUE_BINDING_P. (add_binding): Check for illegal multiple declarations. Return a value indicating whether or not the new binding was legal. (push_local_binding): Skip over class binding levels. Check return value from add_binding. (push_class_binding): Set INHERITED_VALUE_BINDING_P. Call note_name_declared_in_class. (pushlevel_class): Remove "fake out the rest of the compiler" code. (poplevel_class): Reset IDENTIFIER_CLASS_VALUEs. (clear_identifier_class_values): New function. (pop_from_top_level): Use it. (pop_everything): Tweak. (maybe_process_template_type_declaration): Don't push the declaration for the template here. (pushtag): Don't push tag declarations into class scope here. (pushdecl): Apply DeMorgan's law for readability. (pushdecl_class_level): Remove special-case code for TYPE_BEING_DEFINED. Handle OVERLOADs and anonymous unions. (push_class_level_bindng): Deal with inherited bindings. (lookup_name_real): Remove special-case code for TYPE_BEING_DEFINED, and some implicit typename magic. (grokdeclarator): Handle COMPONENT_REF for a template function. (build_enumerator): Don't call pushdecl_class_level here. (id_in_current_class): Remove. * decl2.c (grokfield): Don't call pushdecl_class_level or check_template_shadow. * errfn.c (cp_file_of): Don't declare. (cp_line_of): Likewise. * error.c (dump_decl): Handle an OVERLOAD. (cp_file_of): Likewise. (cp_line_of): Likewise. * init.c (build_member_call): Handle a COMPONENT_REF. * lex.c (do_identifier): Call maybe_note_name_used_in_class, not pushdecl_class_level. * method.c (hack_identifier): Build COMPONENT_REFs for references to member templates as well as member functions. Remove dead code. * parse.y (left_curly): Remove. (nonnested_type): Call maybe_note_name_used_in_class, not pushdecl_class_level. * parse.c: Regenerated. (nested_name_specifier_1): Likewise. * pt.c (check_explicit_specialization): Adjust, for robustness. (check_template_shadow): Handle OVERLOADs. (build_template_decl): Set DECL_CONSTRUCTOR_P on the TEMPLATE_DECL, if appropriate. * search.c (envelope_add_decl): Remove. (dfs_pushdecls): Likewise. (dfs_compress_decls): Likewise. (dfs_push_decls): New function. (dfs_push_type_decls): Likewise. (setup_class_bindings): Likewise. (template_self_reference_p): Likewise. (lookup_field_r): Use it. (looup_member): Remove old comment. Deal with ambiguity. (push_class_decls): Use dfs_push_decls and dfs_push_type_decls, and remove envelope processing. * semantics.c (begin_class_definition): Let pushclass push declarations for base classes. (finish_member_declaration): Push declarations into class scope. * typeck.c (build_component_ref): Just put an OVERLOAD into the COMPONENT_REF, not a TREE_LIST of an OVERLOAD. (build_x_function_call): Deal with OVERLOAD. Handle template-ids. * Makefile.in (class.o): Depend on splay-tree.h. From-SVN: r26133 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 948736da48d3..186a1e5e879d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,123 @@ +1999-04-02 Mark Mitchell + + * tinfo.h (__class_type_info): Fix illegal declaration. + + * cp-tree.def (TEMPLATE_ID_EXPR): Update comment. + * cp-tree.h (INHERITED_VALUE_BINDING_P): New macro. + (IDENTIFIER_CLASS_VALUE): Improve documentation. + (is_properly_derived_from): Declare. + (invalidate_class_lookup_cache): Likewise. + (maybe_maybe_note_name_used_in_class): Likewise. + (note_name_declared_in_class): Likewise. + (push_using_decl): Remove duplicate declaration. + (id_in_current_class): Remove declaration. + (push_class_binding): Change prototype. + (clear_identitifer_class_values): Declare. + * call.c (is_properly_derived_from): Make it global. + (build_new_function_call): Be careful about updating candidates. + (build_new_method_call): Handle COMPONENT_REFs. Don't crash when + asked to make illegal calls. + * class.c: Include splay-tree.h. + (class_stack_node): Add names_used slot. + (check_member_decl_is_same_in_complete_scope): Remove. + (add_method): Fix comment. Push the declaration into class + scope. + (finish_struct_1): When popping the class, pop the bindings too. + Remove check for data member/function member conflict. + (finish_struct): Remove calls to + check_member_decl_is_same_in_complete_scope. Change calls to + popclass. + (pushclass): Clear names_used in the class stack entry. + Use invalidate_class_lookup_cache to remove cached entries, rather + than magic values with popclass. Clear IDENTIFIER_CLASS_VALUE + before entering a new class. Remove dead code. Don't mess with + current_function_decl when pushing declarations. + (invalidate_class_lookup_cache): New function, split out from ... + (popclass): Here. Clean up names_used on our way out. + (instantiate_type): Adjust. + (build_self_reference): Don't push the declaration here. + (maybe_note_name_used_in_class): New function. + (note_name_declared_in_class): Likewise. + * decl.c (add_binding): Change prototype. + (find_class_binding_level): New function. + (innermost_nonclass_level): Likewise. + (current_binding_level): Update documentation. + (inner_binding_level): Remove. Replace with current_binding_level + throughout. + (push_binding_level): Remove special handling of + class_binding_level. + (pop_binding_level): Likewise. Use find_class_binding_level. + (suspend_binding_level): Likewise. + (global_bindings_p): Use innermost_nonclass_level. + (toplevel_bindings_p): Likewise. + (namespace_bindings_p): Likewise. + (pseudo_global_level_p): Likewise. + (push_binding): Clear INHERITED_VALUE_BINDING_P. + (add_binding): Check for illegal multiple declarations. Return a + value indicating whether or not the new binding was legal. + (push_local_binding): Skip over class binding levels. Check + return value from add_binding. + (push_class_binding): Set INHERITED_VALUE_BINDING_P. Call + note_name_declared_in_class. + (pushlevel_class): Remove "fake out the rest of the compiler" + code. + (poplevel_class): Reset IDENTIFIER_CLASS_VALUEs. + (clear_identifier_class_values): New function. + (pop_from_top_level): Use it. + (pop_everything): Tweak. + (maybe_process_template_type_declaration): Don't push the + declaration for the template here. + (pushtag): Don't push tag declarations into class scope here. + (pushdecl): Apply DeMorgan's law for readability. + (pushdecl_class_level): Remove special-case code for + TYPE_BEING_DEFINED. Handle OVERLOADs and anonymous unions. + (push_class_level_bindng): Deal with inherited bindings. + (lookup_name_real): Remove special-case code for + TYPE_BEING_DEFINED, and some implicit typename magic. + (grokdeclarator): Handle COMPONENT_REF for a template function. + (build_enumerator): Don't call pushdecl_class_level here. + (id_in_current_class): Remove. + * decl2.c (grokfield): Don't call pushdecl_class_level or + check_template_shadow. + * errfn.c (cp_file_of): Don't declare. + (cp_line_of): Likewise. + * error.c (dump_decl): Handle an OVERLOAD. + (cp_file_of): Likewise. + (cp_line_of): Likewise. + * init.c (build_member_call): Handle a COMPONENT_REF. + * lex.c (do_identifier): Call maybe_note_name_used_in_class, not + pushdecl_class_level. + * method.c (hack_identifier): Build COMPONENT_REFs for references + to member templates as well as member functions. Remove dead + code. + * parse.y (left_curly): Remove. + (nonnested_type): Call maybe_note_name_used_in_class, not + pushdecl_class_level. + * parse.c: Regenerated. + (nested_name_specifier_1): Likewise. + * pt.c (check_explicit_specialization): Adjust, for robustness. + (check_template_shadow): Handle OVERLOADs. + (build_template_decl): Set DECL_CONSTRUCTOR_P on the + TEMPLATE_DECL, if appropriate. + * search.c (envelope_add_decl): Remove. + (dfs_pushdecls): Likewise. + (dfs_compress_decls): Likewise. + (dfs_push_decls): New function. + (dfs_push_type_decls): Likewise. + (setup_class_bindings): Likewise. + (template_self_reference_p): Likewise. + (lookup_field_r): Use it. + (looup_member): Remove old comment. Deal with ambiguity. + (push_class_decls): Use dfs_push_decls and dfs_push_type_decls, + and remove envelope processing. + * semantics.c (begin_class_definition): Let pushclass push + declarations for base classes. + (finish_member_declaration): Push declarations into class scope. + * typeck.c (build_component_ref): Just put an OVERLOAD into the + COMPONENT_REF, not a TREE_LIST of an OVERLOAD. + (build_x_function_call): Deal with OVERLOAD. Handle template-ids. + * Makefile.in (class.o): Depend on splay-tree.h. + Wed Mar 31 11:30:43 BST 1999 Nathan Sidwell * cvt.c (convert_pointer_to_real): Use same_type_p. diff --git a/gcc/cp/Makefile.in b/gcc/cp/Makefile.in index ae156e666904..576e97b95386 100644 --- a/gcc/cp/Makefile.in +++ b/gcc/cp/Makefile.in @@ -267,7 +267,8 @@ typeck2.o : typeck2.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \ typeck.o : typeck.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h $(RTL_H) \ $(EXPR_H) $(srcdir)/../system.h $(srcdir)/../toplev.h class.o : class.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \ - $(srcdir)/../system.h $(srcdir)/../toplev.h + $(srcdir)/../system.h $(srcdir)/../toplev.h \ + $(srcdir)/../../include/splay-tree.h call.o : call.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \ $(srcdir)/../system.h $(srcdir)/../toplev.h friend.o : friend.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h $(RTL_H) \ diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 9bc349e7999f..f3ef258d8694 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -87,7 +87,6 @@ static tree strip_top_quals PROTO((tree)); static tree non_reference PROTO((tree)); static tree build_conv PROTO((enum tree_code, tree, tree)); static int is_subseq PROTO((tree, tree)); -static int is_properly_derived_from PROTO((tree, tree)); static int maybe_handle_ref_bind PROTO((tree*, tree*)); static void maybe_handle_implicit_object PROTO((tree*)); static struct z_candidate * add_candidate PROTO((struct z_candidate *, @@ -2312,6 +2311,8 @@ build_new_function_call (fn, args) for (t1 = fn; t1; t1 = OVL_CHAIN (t1)) { tree t = OVL_FUNCTION (t1); + struct z_candidate *old_candidates = candidates; + if (TREE_CODE (t) == TEMPLATE_DECL) { templates = scratch_tree_cons (NULL_TREE, t, templates); @@ -2322,6 +2323,9 @@ build_new_function_call (fn, args) else if (! template_only) candidates = add_function_candidate (candidates, t, args, LOOKUP_NORMAL); + + if (candidates != old_candidates) + candidates->basetype_path = DECL_REAL_CONTEXT (t); } if (! any_viable (candidates)) @@ -3524,8 +3528,16 @@ build_new_method_call (instance, name, args, basetype_path, flags) { explicit_targs = TREE_OPERAND (name, 1); name = TREE_OPERAND (name, 0); - if (TREE_CODE (name) == TEMPLATE_DECL) + if (TREE_CODE_CLASS (TREE_CODE (name)) == 'd') name = DECL_NAME (name); + else + { + if (TREE_CODE (name) == COMPONENT_REF) + name = TREE_OPERAND (name, 1); + if (TREE_CODE (name) == OVERLOAD) + name = DECL_NAME (OVL_CURRENT (name)); + } + template_only = 1; } @@ -3675,7 +3687,10 @@ build_new_method_call (instance, name, args, basetype_path, flags) cp_error ("abstract virtual `%#D' called from constructor", cand->fn); if (TREE_CODE (TREE_TYPE (cand->fn)) == METHOD_TYPE && is_dummy_object (instance_ptr)) - cp_error ("cannot call member function `%D' without object", cand->fn); + { + cp_error ("cannot call member function `%D' without object", cand->fn); + return error_mark_node; + } if (DECL_VINDEX (cand->fn) && ! (flags & LOOKUP_NONVIRTUAL) && ((instance == current_class_ref && (dtor_label || ctor_label)) @@ -3738,7 +3753,7 @@ is_subseq (ics1, ics2) /* Returns non-zero iff DERIVED is derived from BASE. The inputs may be any _TYPE nodes. */ -static int +int is_properly_derived_from (derived, base) tree derived; tree base; diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 36765e08402b..7fd1eeb4ef50 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -30,6 +30,7 @@ Boston, MA 02111-1307, USA. */ #include "rtl.h" #include "output.h" #include "toplev.h" +#include "splay-tree.h" #include "obstack.h" #define obstack_chunk_alloc xmalloc @@ -62,6 +63,9 @@ typedef struct class_stack_node { /* The access specifier pending for new declarations in the scope of this class. */ tree access; + + /* If were defining TYPE, the names used in this class. */ + splay_tree names_used; }* class_stack_node_t; /* The stack itself. This is an dynamically resized array. The @@ -130,7 +134,6 @@ 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)); @@ -1286,7 +1289,7 @@ add_method (type, fields, method) /* We don't call duplicate_decls here to merge the declarations because that will confuse things if the - methods have inline definitions In particular, we + methods have inline definitions. In particular, we will crash while processing the definitions. */ return; } @@ -1295,6 +1298,12 @@ add_method (type, fields, method) /* Actually insert the new method. */ TREE_VEC_ELT (method_vec, slot) = build_overload (method, TREE_VEC_ELT (method_vec, slot)); + + /* Add the new binding. */ + if (!DECL_CONSTRUCTOR_P (method) + && !DECL_DESTRUCTOR_P (method)) + push_class_level_binding (DECL_NAME (method), + TREE_VEC_ELT (method_vec, slot)); } pop_obstacks (); } @@ -3255,7 +3264,7 @@ finish_struct_1 (t, warn_anon) cp_error ("redefinition of `%#T'", t); else my_friendly_abort (172); - popclass (0); + popclass (1); return t; } @@ -3838,32 +3847,6 @@ finish_struct_1 (t, warn_anon) /* Delete all duplicate fields from the fields */ delete_duplicate_fields (fields); - /* Catch function/field name conflict. We don't need to do this for a - signature, since it can only contain the fields constructed in - append_signature_fields. */ - if (! IS_SIGNATURE (t)) - { - int n_methods = method_vec ? TREE_VEC_LENGTH (method_vec) : 0; - for (x = fields; x; x = TREE_CHAIN (x)) - { - tree name = DECL_NAME (x); - int i; - - if (TREE_CODE (x) == TYPE_DECL && DECL_ARTIFICIAL (x)) - continue; - - 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) - { - cp_error_at ("data member `%#D' conflicts with", x); - cp_error_at ("function member `%#D'", - OVL_CURRENT (TREE_VEC_ELT (method_vec, i))); - break; - } - } - } - /* Now we have the nearly final fieldlist for the data fields. Record it, then lay out the structure or union (including the fields). */ @@ -4258,54 +4241,6 @@ 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; - - /* This should match pushdecl_class_level. */ - if (icv && icv != x - && 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); - } - } -} - /* When T was built up, the member declarations were added in reverse order. Rearrange them to declaration order. */ @@ -4372,14 +4307,6 @@ finish_struct (t, attributes, warn_anon) as necessary. */ unreverse_member_declarations (t); - if (flag_optional_diags) - { - 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); - } - /* 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; @@ -4413,8 +4340,9 @@ finish_struct (t, attributes, warn_anon) t = finish_struct_1 (t, warn_anon); TYPE_BEING_DEFINED (t) = 0; + if (current_class_type) - popclass (0); + popclass (1); else error ("trying to finish struct, but kicked out due to previous parse errors."); @@ -4636,6 +4564,7 @@ pushclass (type, modify) 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_stack[current_class_depth].names_used = 0; current_class_depth++; /* Now set up the new type. */ @@ -4651,12 +4580,12 @@ pushclass (type, modify) : access_public_node); if (previous_class_type != NULL_TREE - && (type != previous_class_type || TYPE_SIZE (previous_class_type) == NULL_TREE) + && (type != previous_class_type + || TYPE_SIZE (previous_class_type) == NULL_TREE) && current_class_depth == 1) { /* Forcibly remove any old class remnants. */ - popclass (-1); - previous_class_type = NULL_TREE; + invalidate_class_lookup_cache (); /* Now, free the obstack on which we cached all the values. */ obstack_free (&class_cache_obstack, class_cache_firstobj); @@ -4664,6 +4593,11 @@ pushclass (type, modify) = (char*) obstack_finish (&class_cache_obstack); } + /* If we're about to enter a nested class, clear + IDENTIFIER_CLASS_VALUE for the enclosing classes. */ + if (modify && current_class_depth > 1) + clear_identifier_class_values (); + pushlevel_class (); #if 0 @@ -4674,25 +4608,9 @@ pushclass (type, modify) if (modify) { tree tags; - tree this_fndecl = current_function_decl; - - if (current_function_decl - && DECL_CONTEXT (current_function_decl) - && TREE_CODE (DECL_CONTEXT (current_function_decl)) == FUNCTION_DECL) - current_function_decl = DECL_CONTEXT (current_function_decl); - else - current_function_decl = NULL_TREE; if (type != previous_class_type || current_class_depth > 1) - { -#ifdef MI_MATRIX - build_mi_matrix (type); - push_class_decls (type); - free_mi_matrix (); -#else - push_class_decls (type); -#endif - } + push_class_decls (type); else { tree item; @@ -4726,9 +4644,32 @@ pushclass (type, modify) && CLASSTYPE_IS_TEMPLATE (tag_type))) pushtag (TREE_PURPOSE (tags), tag_type, 0); } + } +} + +/* When we exit a toplevel class scope, we save the + IDENTIFIER_CLASS_VALUEs so that we can restore them quickly if we + reenter the class. Here, we've entered some other class, so we + must invalidate our cache. */ - current_function_decl = this_fndecl; +void +invalidate_class_lookup_cache () +{ + tree tags = CLASSTYPE_TAGS (previous_class_type); + tree t; + + /* This code can be seen as a cache miss. When we've cached a + class' scope's bindings and we can't use them, we need to reset + them. This is it! */ + for (t = previous_class_values; t; t = TREE_CHAIN (t)) + IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (t)) = NULL_TREE; + while (tags) + { + TREE_NONLOCAL_FLAG (TREE_VALUE (tags)) = 0; + tags = TREE_CHAIN (tags); } + + previous_class_type = NULL_TREE; } /* Get out of the current class scope. If we were in a class scope @@ -4740,26 +4681,6 @@ void popclass (modify) int modify; { - if (modify < 0) - { - /* Back this old class out completely. */ - tree tags = CLASSTYPE_TAGS (previous_class_type); - tree t; - - /* This code can be seen as a cache miss. When we've cached a - class' scope's bindings and we can't use them, we need to reset - them. This is it! */ - for (t = previous_class_values; t; t = TREE_CHAIN (t)) - IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (t)) = NULL_TREE; - while (tags) - { - TREE_NONLOCAL_FLAG (TREE_VALUE (tags)) = 0; - tags = TREE_CHAIN (tags); - } - - return; - } - if (modify) { /* Just remove from this class what didn't make @@ -4787,6 +4708,8 @@ popclass (modify) 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; + if (current_class_stack[current_class_depth].names_used) + splay_tree_delete (current_class_stack[current_class_depth].names_used); } /* Returns 1 if current_class_type is either T or a nested type of T. */ @@ -5216,8 +5139,6 @@ instantiate_type (lhstype, rhs, complain) tree field = TREE_OPERAND (rhs, 1); tree r; - my_friendly_assert (TREE_CODE (field) == TREE_LIST, 0); - r = instantiate_type (lhstype, field, complain); if (r != error_mark_node && TYPE_PTRMEMFUNC_P (lhstype)) @@ -5225,15 +5146,15 @@ instantiate_type (lhstype, rhs, complain) if (complain) { tree t = TYPE_PTRMEMFUNC_OBJECT_TYPE (lhstype); - tree fn = TREE_VALUE (field); - if (TREE_CODE (fn) == OVERLOAD) - fn = OVL_FUNCTION (fn); - if (TREE_CODE (fn) == FUNCTION_DECL) + + if (TREE_CODE (field) == OVERLOAD) + field = OVL_FUNCTION (field); + if (TREE_CODE (field) == FUNCTION_DECL) { cp_error ("object-dependent reference `%E' can only be used in a call", - DECL_NAME (fn)); + DECL_NAME (field)); cp_error (" to form a pointer to member function, say `&%T::%E'", - t, DECL_NAME (fn)); + t, DECL_NAME (field)); } else cp_error ("object-dependent reference can only be used in a call"); @@ -5490,8 +5411,6 @@ build_self_reference () DECL_CLASS_CONTEXT (value) = current_class_type; DECL_ARTIFICIAL (value) = 1; - pushdecl_class_level (value); - saved_cas = current_access_specifier; current_access_specifier = access_public_node; finish_member_declaration (value); @@ -5568,3 +5487,64 @@ is_base_of_enclosing_class (base, type) } return 0; } + +/* Note that NAME was looked up while the current class was being + defined and that the result of that lookup was DECL. */ + +void +maybe_note_name_used_in_class (name, decl) + tree name; + tree decl; +{ + splay_tree names_used; + + /* If we're not defining a class, there's nothing to do. */ + if (!current_class_type || !TYPE_BEING_DEFINED (current_class_type)) + return; + + /* If there's already a binding for this NAME, then we don't have + anything to worry about. */ + if (IDENTIFIER_CLASS_VALUE (name)) + return; + + if (!current_class_stack[current_class_depth - 1].names_used) + current_class_stack[current_class_depth - 1].names_used + = splay_tree_new (splay_tree_compare_pointers, 0, 0); + names_used = current_class_stack[current_class_depth - 1].names_used; + + splay_tree_insert (names_used, + (splay_tree_key) name, + (splay_tree_value) decl); +} + +/* Note that NAME was declared (as DECL) in the current class. Check + to see that the declaration is legal. */ + +void +note_name_declared_in_class (name, decl) + tree name; + tree decl; +{ + splay_tree names_used; + splay_tree_node n; + + /* Look to see if we ever used this name. */ + names_used + = current_class_stack[current_class_depth - 1].names_used; + if (!names_used) + return; + + n = splay_tree_lookup (names_used, (splay_tree_key) name); + if (n) + { + /* [basic.scope.class] + + 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. */ + cp_error ("declaration of `%#D'", decl); + cp_error_at ("changes meaning of `%s' from `%+#D'", + IDENTIFIER_POINTER (DECL_NAME (decl)), + (tree) n->value); + } +} diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def index 2fdacfd3965a..090d83724aca 100644 --- a/gcc/cp/cp-tree.def +++ b/gcc/cp/cp-tree.def @@ -170,12 +170,11 @@ DEFTREECODE (USING_DECL, "using_decl", 'd', 0) /* An un-parsed default argument. Looks like an IDENTIFIER_NODE. */ DEFTREECODE (DEFAULT_ARG, "default_arg", 'c', 2) -/* A template-id, like foo. The first operand is the template. - The second is the list of explicitly specified arguments. The - template will be a FUNCTION_DECL, TEMPLATE_DECL, or a list of - overloaded functions and templates if the template-id refers to - a global template. If the template-id refers to a member template, - the template may be an IDENTIFIER_NODE. */ +/* A template-id, like foo. The first operand is the template. + The second is the list of explicitly specified arguments. The + template will be a FUNCTION_DECL, TEMPLATE_DECL, or an OVERLOAD. + If the template-id refers to a member template, the template may be + an IDENTIFIER_NODE. */ DEFTREECODE (TEMPLATE_ID_EXPR, "template_id_expr", 'e', 2) /* An association between name and entity. Parameters are the scope diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 9babb014af57..6d0b2735bd23 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -40,6 +40,7 @@ Boston, MA 02111-1307, USA. */ (TREE_CALLS_NEW) (in _EXPR or _REF) (commented-out). TYPE_USES_COMPLEX_INHERITANCE (in _TYPE). C_DECLARED_LABEL_FLAG. + INHERITED_VALUE_BINDING_P (in CPLUS_BINDING) 2: IDENTIFIER_OPNAME_P. BINFO_VBASE_MARKED. BINFO_FIELDS_MARKED. @@ -134,6 +135,10 @@ typedef struct ptrmem_cst or namespace scope. */ #define LOCAL_BINDING_P(NODE) TREE_LANG_FLAG_0(NODE) +/* Nonzero if BINDING_VALUE is from a base class of the class which is + currently being defined. */ +#define INHERITED_VALUE_BINDING_P(NODE) TREE_LANG_FLAG_1(NODE) + /* For a binding between a name and an entity at a non-local scope, defines the scope where the binding is declared. (Either a class _TYPE node, or a NAMESPACE_DECL.) This macro should be used only @@ -235,10 +240,10 @@ struct tree_srcloc ? BINDING_VALUE (IDENTIFIER_BINDING (NODE)) \ : NULL_TREE) -/* If we are currently in class scope, then IDENTIFIER_CLASS_VALUE - indicates the class-scoped binding of NODE. This is just a pointer - to the BINDING_VALUE of one of the bindings in the - IDENTIFIER_BINDINGs list, so any time that this is set so is +/* If IDENTIFIER_CLASS_VALUE is set, then NODE is bound in the current + class, and IDENTIFIER_CLASS_VALUE is the value binding. This is + just a pointer to the BINDING_VALUE of one of the bindings in the + IDENTIFIER_BINDINGs list, so any time that this is non-NULL so is IDENTIFIER_BINDING. */ #define IDENTIFIER_CLASS_VALUE(NODE) \ (((struct lang_identifier *) (NODE))->class_value) @@ -2684,6 +2689,7 @@ extern int can_convert_arg PROTO((tree, tree, tree)); extern int enforce_access PROTO((tree, tree)); extern tree convert_default_arg PROTO((tree, tree, tree)); extern tree convert_arg_to_ellipsis PROTO((tree)); +extern int is_properly_derived_from PROTO((tree, tree)); /* in class.c */ extern tree build_vbase_path PROTO((enum tree_code, tree, tree, tree, int)); @@ -2713,6 +2719,9 @@ 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)); +extern void invalidate_class_lookup_cache PROTO((void)); +extern void maybe_note_name_used_in_class PROTO((tree, tree)); +extern void note_name_declared_in_class PROTO((tree, tree)); /* in cvt.c */ extern tree convert_to_reference PROTO((tree, tree, int, int, tree)); @@ -2776,7 +2785,6 @@ extern tree pushdecl_namespace_level PROTO((tree)); extern tree push_using_decl PROTO((tree, tree)); extern tree push_using_directive PROTO((tree)); extern void push_class_level_binding PROTO((tree, tree)); -extern tree push_using_decl PROTO((tree, tree)); extern tree implicitly_declare PROTO((tree)); extern tree lookup_label PROTO((tree)); extern tree shadow_label PROTO((tree)); @@ -2845,7 +2853,6 @@ extern tree maybe_build_cleanup_and_delete PROTO((tree)); extern tree maybe_build_cleanup PROTO((tree)); extern void cplus_expand_expr_stmt PROTO((tree)); extern void finish_stmt PROTO((void)); -extern int id_in_current_class PROTO((tree)); extern void push_cp_function_context PROTO((tree)); extern void pop_cp_function_context PROTO((tree)); extern int in_function_p PROTO((void)); @@ -2856,9 +2863,10 @@ extern void cat_namespace_levels PROTO((void)); extern void fixup_anonymous_union PROTO((tree)); extern int check_static_variable_definition PROTO((tree, tree)); extern void push_local_binding PROTO((tree, tree, int)); -extern void push_class_binding PROTO((tree, tree)); +extern int push_class_binding PROTO((tree, tree)); extern tree check_default_argument PROTO((tree, tree)); extern tree push_overloaded_decl PROTO((tree, int)); +extern void clear_identifier_class_values PROTO((void)); /* in decl2.c */ extern int check_java_method PROTO((tree)); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 74ba56b74aab..63f4fec11972 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -178,7 +178,7 @@ static void check_for_uninitialized_const_var PROTO((tree)); static unsigned long typename_hash PROTO((hash_table_key)); static boolean typename_compare PROTO((hash_table_key, hash_table_key)); static void push_binding PROTO((tree, tree, struct binding_level*)); -static void add_binding PROTO((tree, tree)); +static int add_binding PROTO((tree, tree)); static void pop_binding PROTO((tree, tree)); static tree local_variable_p PROTO((tree)); static tree find_binding PROTO((tree, tree)); @@ -188,6 +188,8 @@ static int lookup_flags PROTO((int, int)); static tree qualify_lookup PROTO((tree, int)); static tree record_builtin_java_type PROTO((const char *, int)); static const char *tag_name PROTO((enum tag_types code)); +static void find_class_binding_level PROTO((void)); +static struct binding_level *innermost_nonclass_level PROTO((void)); #if defined (DEBUG_CP_BINDING_LEVELS) static void indent PROTO((void)); @@ -716,7 +718,7 @@ struct binding_level #define NULL_BINDING_LEVEL ((struct binding_level *) NULL) -/* The (non-class) binding level currently in effect. */ +/* The binding level currently in effect. */ static struct binding_level *current_binding_level; @@ -724,11 +726,6 @@ static struct binding_level *current_binding_level; static struct binding_level *class_binding_level; -/* The current (class or non-class) binding level currently in effect. */ - -#define inner_binding_level \ - (class_binding_level ? class_binding_level : current_binding_level) - /* A chain of binding_level structures awaiting reuse. */ static struct binding_level *free_binding_level; @@ -771,15 +768,7 @@ push_binding_level (newlevel, tag_transparent, keep) /* Add this level to the front of the chain (stack) of levels that are active. */ *newlevel = clear_binding_level; - if (class_binding_level) - { - newlevel->level_chain = class_binding_level; - class_binding_level = (struct binding_level *)0; - } - else - { - newlevel->level_chain = current_binding_level; - } + newlevel->level_chain = current_binding_level; current_binding_level = newlevel; newlevel->tag_transparent = tag_transparent; newlevel->more_cleanups_ok = 1; @@ -794,12 +783,25 @@ push_binding_level (newlevel, tag_transparent, keep) #endif /* defined(DEBUG_CP_BINDING_LEVELS) */ } +/* Find the innermost enclosing class scope, and reset + CLASS_BINDING_LEVEL appropriately. */ + +static void +find_class_binding_level () +{ + struct binding_level *level = current_binding_level; + + while (level && level->parm_flag != 2) + level = level->level_chain; + if (level && level->parm_flag == 2) + class_binding_level = level; + else + class_binding_level = 0; +} + static void pop_binding_level () { - if (class_binding_level) - current_binding_level = class_binding_level; - if (global_binding_level) { /* Cannot pop a level, if there are none left to pop. */ @@ -828,13 +830,8 @@ pop_binding_level () if (level->binding_depth != binding_depth) abort (); #endif /* defined(DEBUG_CP_BINDING_LEVELS) */ - free_binding_level = level; - - class_binding_level = current_binding_level; - if (class_binding_level->parm_flag != 2) - class_binding_level = 0; - while (current_binding_level->parm_flag == 2) - current_binding_level = current_binding_level->level_chain; + free_binding_level = level; + find_class_binding_level (); } } @@ -864,14 +861,8 @@ suspend_binding_level () } is_class_level = 0; #endif /* defined(DEBUG_CP_BINDING_LEVELS) */ - { - current_binding_level = current_binding_level->level_chain; - class_binding_level = current_binding_level; - if (class_binding_level->parm_flag != 2) - class_binding_level = 0; - while (current_binding_level->parm_flag == 2) - current_binding_level = current_binding_level->level_chain; - } + current_binding_level = current_binding_level->level_chain; + find_class_binding_level (); } static void @@ -912,25 +903,44 @@ global_bindings_p () return current_binding_level == global_binding_level; } +/* Return the innermost binding level that is not for a class scope. */ + +static struct binding_level * +innermost_nonclass_level () +{ + struct binding_level *b; + + b = current_binding_level; + while (b->parm_flag == 2) + b = b->level_chain; + + return b; +} + /* Nonzero if we are currently in a toplevel binding level. This means either the global binding level or a namespace in a toplevel - binding level. - Since there are no non-toplevel namespace levels, this really - means any namespace or pseudo-global level. */ + binding level. Since there are no non-toplevel namespace levels, + this really means any namespace or pseudo-global level. We also + include a class whose context is toplevel. */ int toplevel_bindings_p () { - return current_binding_level->namespace_p - || current_binding_level->pseudo_global; + struct binding_level *b = innermost_nonclass_level (); + + return b->namespace_p || b->pseudo_global; } -/* Nonzero if this is a namespace scope. */ +/* Nonzero if this is a namespace scope, or if we are defining a class + which is itself at namespace scope, or whose enclosing class is + such a class, etc. */ int namespace_bindings_p () { - return current_binding_level->namespace_p; + struct binding_level *b = innermost_nonclass_level (); + + return b->namespace_p; } void @@ -974,7 +984,9 @@ declare_namespace_level () int pseudo_global_level_p () { - return current_binding_level->pseudo_global; + struct binding_level *b = innermost_nonclass_level (); + + return b->pseudo_global; } void @@ -1085,6 +1097,7 @@ push_binding (id, decl, level) BINDING_VALUE (binding) = decl; BINDING_TYPE (binding) = NULL_TREE; BINDING_LEVEL (binding) = level; + INHERITED_VALUE_BINDING_P (binding) = 0; LOCAL_BINDING_P (binding) = (level != class_binding_level); /* And put it on the front of the ilst of bindings for ID. */ @@ -1097,31 +1110,44 @@ push_binding (id, decl, level) stat' hack whereby a non-typedef class-name or enum-name can be bound at the same level as some other kind of entity. It's the responsibility of the caller to check that inserting this name is - legal here. */ -static void + legal here. Returns nonzero if the new binding was successful. */ +static int add_binding (id, decl) tree id; tree decl; { tree binding = IDENTIFIER_BINDING (id); + int ok = 1; if (TREE_CODE (decl) == TYPE_DECL && DECL_ARTIFICIAL (decl)) /* The new name is the type name. */ BINDING_TYPE (binding) = decl; - else - { - /* The old name must be the type name. It was placed in - IDENTIFIER_VALUE because it was thought, at the point it - was declared, to be the only entity with such a name. */ - my_friendly_assert (TREE_CODE (BINDING_VALUE (binding)) == TYPE_DECL - && DECL_ARTIFICIAL (BINDING_VALUE (binding)), - 0); - - /* Move the type name into the type slot; it is now hidden by - the new binding. */ + else if (!BINDING_VALUE (binding)) + /* This situation arises when push_class_level_binding moves an + inherited type-binding out of the way to make room for a new + value binding. */ + BINDING_VALUE (binding) = decl; + else if (TREE_CODE (BINDING_VALUE (binding)) == TYPE_DECL + && DECL_ARTIFICIAL (BINDING_VALUE (binding))) + { + /* The old binding was a type name. It was placed in + BINDING_VALUE because it was thought, at the point it was + declared, to be the only entity with such a name. Move the + type name into the type slot; it is now hidden by the new + binding. */ BINDING_TYPE (binding) = BINDING_VALUE (binding); BINDING_VALUE (binding) = decl; + INHERITED_VALUE_BINDING_P (binding) = 0; } + else + { + cp_error ("declaration of `%#D'", decl); + cp_error_at ("conflicts with previous declaration `%#D'", + BINDING_VALUE (binding)); + ok = 0; + } + + return ok; } /* Bind DECL to ID in the current_binding_level. @@ -1134,14 +1160,26 @@ push_local_binding (id, decl, flags) tree decl; int flags; { - tree d = decl; + struct binding_level *b; + + /* Skip over any local classes. This makes sense if we call + push_local_binding with a friend decl of a local class. */ + b = current_binding_level; + while (b->parm_flag == 2) + b = b->level_chain; if (lookup_name_current_level (id)) - /* Supplement the existing binding. */ - add_binding (id, d); + { + /* Supplement the existing binding. */ + if (!add_binding (id, decl)) + /* It didn't work. Something else must be bound at this + level. Do not add DECL to the list of things to pop + later. */ + return; + } else /* Create a new binding. */ - push_binding (id, d, current_binding_level); + push_binding (id, decl, b); if (TREE_CODE (decl) == OVERLOAD || (flags & PUSH_USING)) /* We must put the OVERLOAD into a TREE_LIST since the @@ -1151,21 +1189,30 @@ push_local_binding (id, decl, flags) /* And put DECL on the list of things declared by the current binding level. */ - TREE_CHAIN (decl) = current_binding_level->names; - current_binding_level->names = decl; + TREE_CHAIN (decl) = b->names; + b->names = decl; } -/* Bind DECL to ID in the class_binding_level. */ +/* Bind DECL to ID in the class_binding_level. Returns nonzero if the + binding was successful. */ -void +int push_class_binding (id, decl) tree id; tree decl; { - if (IDENTIFIER_BINDING (id) - && BINDING_LEVEL (IDENTIFIER_BINDING (id)) == class_binding_level) + int result = 1; + tree binding = IDENTIFIER_BINDING (id); + tree context; + + /* Note that we declared this value so that we can issue an error if + this an illegal redeclaration of a name already used for some + other purpose. */ + note_name_declared_in_class (id, decl); + + if (binding && BINDING_LEVEL (binding) == class_binding_level) /* Supplement the existing binding. */ - add_binding (id, decl); + result = add_binding (id, decl); else /* Create a new binding. */ push_binding (id, decl, class_binding_level); @@ -1176,6 +1223,32 @@ push_class_binding (id, decl) a class-name or enum-name we might prefer a field-name, or some such. */ IDENTIFIER_CLASS_VALUE (id) = BINDING_VALUE (IDENTIFIER_BINDING (id)); + + /* If this is a binding from a base class, mark it as such. */ + binding = IDENTIFIER_BINDING (id); + if (BINDING_VALUE (binding) == decl && TREE_CODE (decl) != TREE_LIST) + { + if (TREE_CODE (decl) == OVERLOAD) + context = DECL_REAL_CONTEXT (OVL_CURRENT (decl)); + else + { + my_friendly_assert (TREE_CODE_CLASS (TREE_CODE (decl)) == 'd', + 0); + context = DECL_REAL_CONTEXT (decl); + } + + if (is_properly_derived_from (current_class_type, context)) + INHERITED_VALUE_BINDING_P (binding) = 1; + else + INHERITED_VALUE_BINDING_P (binding) = 0; + } + else if (BINDING_VALUE (binding) == decl) + /* We only encounter a TREE_LIST when push_class_decls detects an + ambiguity. Such an ambiguity can be overridden by a definition + in this class. */ + INHERITED_VALUE_BINDING_P (binding) = 1; + + return result; } /* Remove the binding for DECL which should be the innermost binding @@ -1647,14 +1720,6 @@ pushlevel_class () decl_stack = push_decl_level (decl_stack, &decl_obstack); class_binding_level = current_binding_level; class_binding_level->parm_flag = 2; - /* We have just pushed into a new binding level. Now, fake out the rest - of the compiler. Set the `current_binding_level' back to point to - the most closely containing non-class binding level. */ - do - { - current_binding_level = current_binding_level->level_chain; - } - while (current_binding_level->parm_flag == 2); } /* ...and a poplevel for class declarations. FORCE is used to force @@ -1677,10 +1742,37 @@ poplevel_class (force) if we don't touch it here, we're able to use the cache effect if the next time we're entering a class scope, it is the same class. */ if (current_class_depth != 1 || force) - for (shadowed = level->class_shadowed; - shadowed; - shadowed = TREE_CHAIN (shadowed)) - IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (shadowed)) = TREE_VALUE (shadowed); + { + struct binding_level* b; + + /* Clear out our IDENTIFIER_CLASS_VALUEs. */ + for (shadowed = level->class_shadowed; + shadowed; + shadowed = TREE_CHAIN (shadowed)) + IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (shadowed)) = NULL_TREE; + + /* Find the next enclosing class, and recreate + IDENTIFIER_CLASS_VALUEs appropriate for that class. */ + b = level->level_chain; + while (b && b->parm_flag != 2) + b = b->level_chain; + + if (b) + for (shadowed = b->class_shadowed; + shadowed; + shadowed = TREE_CHAIN (shadowed)) + { + tree t; + + t = IDENTIFIER_BINDING (TREE_PURPOSE (shadowed)); + while (t && BINDING_LEVEL (t) != b) + t = TREE_CHAIN (t); + + if (t) + IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (shadowed)) + = BINDING_VALUE (t); + } + } else /* Remember to save what IDENTIFIER's were bound in this scope so we can recover from cache misses. */ @@ -1704,9 +1796,6 @@ poplevel_class (force) class_binding_level->parm_flag, class_binding_level->keep); - if (class_binding_level->parm_flag != 2) - class_binding_level = (struct binding_level *)0; - /* Now, pop out of the binding level which we created up in the `pushlevel_class' routine. */ #if defined(DEBUG_CP_BINDING_LEVELS) @@ -1717,6 +1806,24 @@ poplevel_class (force) return block; } + +/* We are entering the scope of a class. Clear IDENTIFIER_CLASS_VALUE + for any names in enclosing classes. */ + +void +clear_identifier_class_values () +{ + tree t; + + if (!class_binding_level) + return; + + for (t = class_binding_level->class_shadowed; + t; + t = TREE_CHAIN (t)) + IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (t)) = NULL_TREE; +} + /* For debugging. */ static int no_print_functions = 0; @@ -2202,7 +2309,7 @@ maybe_push_to_top_level (pseudo) extern int current_lang_stacksize; struct saved_scope *s = (struct saved_scope *) xmalloc (sizeof (struct saved_scope)); - struct binding_level *b = inner_binding_level; + struct binding_level *b = current_binding_level; tree old_bindings = NULL_TREE; push_cp_function_context (NULL_TREE); @@ -2296,10 +2403,7 @@ pop_from_top_level () /* Clear out class-level bindings cache. */ if (previous_class_type) - { - popclass (-1); - previous_class_type = NULL_TREE; - } + invalidate_class_lookup_cache (); pop_obstacks (); @@ -2385,14 +2489,14 @@ set_identifier_type_value_with_scope (id, type, b) SET_IDENTIFIER_TYPE_VALUE (id, type); } -/* As set_identifier_type_value_with_scope, but using inner_binding_level. */ +/* As set_identifier_type_value_with_scope, but using current_binding_level. */ void set_identifier_type_value (id, type) tree id; tree type; { - set_identifier_type_value_with_scope (id, type, inner_binding_level); + set_identifier_type_value_with_scope (id, type, current_binding_level); } /* Return the type associated with id. */ @@ -2425,9 +2529,9 @@ pop_everything () #ifdef DEBUG_CP_BINDING_LEVELS fprintf (stderr, "XXX entering pop_everything ()\n"); #endif - while (! toplevel_bindings_p () && ! pseudo_global_level_p ()) + while (!toplevel_bindings_p ()) { - if (class_binding_level) + if (current_binding_level->parm_flag == 2) pop_nested_class (1); else poplevel (0, 0, 0); @@ -2506,8 +2610,6 @@ maybe_process_template_type_declaration (type, globalize, b) && !globalize && b->pseudo_global && b->level_chain->parm_flag == 2) { - 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 @@ -2538,7 +2640,7 @@ pushtag (name, type, globalize) tree context = 0; tree c_decl = 0; - b = inner_binding_level; + b = current_binding_level; while (b->tag_transparent || (globalize && b->parm_flag == 2)) b = b->level_chain; @@ -2604,13 +2706,14 @@ pushtag (name, type, globalize) if (b->parm_flag == 2) { - 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 + pushdecl_class_level (d); } else d = pushdecl_with_scope (d, b); @@ -3942,8 +4045,8 @@ pushdecl (x) We will reverse them later if necessary. */ TREE_CHAIN (x) = current_binding_level->names; current_binding_level->names = x; - if (! (current_binding_level != global_binding_level - || TREE_PERMANENT (x))) + if (current_binding_level == global_binding_level + && !TREE_PERMANENT (x)) my_friendly_abort (124); } @@ -3987,7 +4090,7 @@ tree pushdecl_namespace_level (x) tree x; { - register struct binding_level *b = inner_binding_level; + register struct binding_level *b = current_binding_level; register tree t; t = pushdecl_with_scope (x, NAMESPACE_LEVEL (current_namespace)); @@ -4048,39 +4151,30 @@ pushdecl_class_level (x) { /* Don't use DECL_ASSEMBLER_NAME here! Everything that looks in class scope looks for the pre-mangled name. */ - register tree name = DECL_NAME (x); + register tree name; + + if (TREE_CODE (x) == OVERLOAD) + x = OVL_CURRENT (x); + name = DECL_NAME (x); if (name) { if (TYPE_BEING_DEFINED (current_class_type)) - { - /* 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. - Types, enums, and static vars are checked here; other - members are checked in finish_struct. */ - tree icv = IDENTIFIER_CLASS_VALUE (name); - - /* This should match check_member_decl_is_same_in_complete_scope. */ - if (icv && icv != x - && flag_optional_diags - /* Don't complain about inherited names. */ - && id_in_current_class (name) - /* Or shadowed tags. */ - && !(DECL_DECLARES_TYPE_P (icv) - && DECL_CONTEXT (icv) == current_class_type)) - { - cp_pedwarn ("declaration of identifier `%D' as `%#D'", name, x); - cp_pedwarn_at ("conflicts with previous use in class as `%#D'", - icv); - } - - check_template_shadow (x); - } + check_template_shadow (x); push_class_level_binding (name, x); if (TREE_CODE (x) == TYPE_DECL) set_identifier_type_value (name, TREE_TYPE (x)); } + else if (ANON_UNION_TYPE_P (TREE_TYPE (x))) + { + tree f; + + for (f = TYPE_FIELDS (TREE_TYPE (x)); + f; + f = TREE_CHAIN (f)) + pushdecl_class_level (f); + } } #if 0 @@ -4114,6 +4208,7 @@ push_class_level_binding (name, x) tree name; tree x; { + tree binding; /* The class_binding_level will be NULL if x is a template parameter name in a member template. */ if (!class_binding_level) @@ -4122,19 +4217,64 @@ push_class_level_binding (name, x) /* If this declaration shadows a declaration from an enclosing class, then we will need to restore IDENTIFIER_CLASS_VALUE when we leave this class. Record the shadowed declaration here. */ - maybe_push_cache_obstack (); - class_binding_level->class_shadowed - = tree_cons (name, IDENTIFIER_CLASS_VALUE (name), - class_binding_level->class_shadowed); - TREE_TYPE (class_binding_level->class_shadowed) - = x; - pop_obstacks (); - - /* Put the binding on the stack of bindings for the identifier, and - update IDENTIFIER_CLASS_VALUE. */ - push_class_binding (name, x); + binding = IDENTIFIER_BINDING (name); + if (binding + && ((TREE_CODE (x) == OVERLOAD + && BINDING_VALUE (binding) + && is_overloaded_fn (BINDING_VALUE (binding))) + || INHERITED_VALUE_BINDING_P (binding))) + { + tree shadow; + tree old_decl; + + /* If the old binding was from a base class, and was for a tag + name, slide it over to make room for the new binding. The + old binding is still visible if explicitly qualified with a + class-key. */ + if (INHERITED_VALUE_BINDING_P (binding) + && BINDING_VALUE (binding) + && TREE_CODE (BINDING_VALUE (binding)) == TYPE_DECL + && DECL_ARTIFICIAL (BINDING_VALUE (binding)) + && !(TREE_CODE (x) == TYPE_DECL && DECL_ARTIFICIAL (x))) + { + old_decl = BINDING_TYPE (binding); + BINDING_TYPE (binding) = BINDING_VALUE (binding); + BINDING_VALUE (binding) = NULL_TREE; + INHERITED_VALUE_BINDING_P (binding) = 0; + } + else + old_decl = BINDING_VALUE (binding); + + /* There was already a binding for X containing fewer + functions than are named in X. Find the previous + declaration of X on the class-shadowed list, and update it. */ + for (shadow = class_binding_level->class_shadowed; + shadow; + shadow = TREE_CHAIN (shadow)) + if (TREE_PURPOSE (shadow) == name + && TREE_TYPE (shadow) == old_decl) + { + BINDING_VALUE (binding) = x; + INHERITED_VALUE_BINDING_P (binding) = 0; + TREE_TYPE (shadow) = x; + return; + } + } - obstack_ptr_grow (&decl_obstack, x); + /* If we didn't replace an existing binding, put the binding on the + stack of bindings for the identifier, and update + IDENTIFIER_CLASS_VALUE. */ + if (push_class_binding (name, x)) + { + maybe_push_cache_obstack (); + class_binding_level->class_shadowed + = tree_cons (name, IDENTIFIER_CLASS_VALUE (name), + class_binding_level->class_shadowed); + pop_obstacks (); + /* Record the value we are binding NAME to so that we can know + what to pop later. */ + TREE_TYPE (class_binding_level->class_shadowed) = x; + } } /* Insert another USING_DECL into the current binding level, @@ -5434,26 +5574,6 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only) || TREE_CODE (type) == TYPENAME_TYPE) /* Someone else will give an error about this if needed. */ val = NULL_TREE; - else if (TYPE_BEING_DEFINED (type)) - { - val = IDENTIFIER_CLASS_VALUE (name); - if (val && DECL_CONTEXT (val) != type) - { - struct binding_level *b = class_binding_level; - for (val = NULL_TREE; b; b = b->level_chain) - { - tree t = purpose_member (name, b->class_shadowed); - if (t && TREE_VALUE (t) - && DECL_CONTEXT (TREE_VALUE (t)) == type) - { - val = TREE_VALUE (t); - break; - } - } - } - if (val == NULL_TREE) - val = lookup_field (type, name, 0, 1); - } else if (type == current_class_type) val = IDENTIFIER_CLASS_VALUE (name); else @@ -5495,26 +5615,6 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only) } } - /* If VAL is a type from a dependent base, we're not really supposed - to be able to see it; the fact that we can is the "implicit - typename" extension. We call lookup_field here to turn VAL into - a TYPE_DECL for a TYPENAME_TYPE. */ - if (processing_template_decl && val - && val == IDENTIFIER_CLASS_VALUE (name) - && TREE_CODE (val) == TYPE_DECL - && !currently_open_class (DECL_CONTEXT (val)) - && uses_template_parms (current_class_type)) - val = lookup_field (current_class_type, name, 0, 1); - - /* We don't put names from baseclasses onto the IDENTIFIER_BINDING - list when we're defining a type. It would probably be simpler to - do this, but we don't. So, we must lookup names from base - classes explicitly. */ - if (!val && !nonclass - && current_class_type && TYPE_BEING_DEFINED (current_class_type)) - val = qualify_lookup (lookup_field (current_class_type, name, 0, 0), - flags); - /* The name might be from an enclosing class of the current scope. */ if (!val && !nonclass && current_class_type) val = qualify_lookup (lookup_nested_field (name, !yylex), flags); @@ -9072,12 +9172,15 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) if (TREE_CODE (fns) == LOOKUP_EXPR) fns = TREE_OPERAND (fns, 0); - if (TREE_CODE (fns) == IDENTIFIER_NODE) - dname = fns; - else if (is_overloaded_fn (fns)) - dname = DECL_NAME (get_first_fn (fns)); - else - my_friendly_abort (0); + dname = fns; + if (TREE_CODE (dname) == COMPONENT_REF) + dname = TREE_OPERAND (dname, 1); + if (TREE_CODE (dname) != IDENTIFIER_NODE) + { + my_friendly_assert (is_overloaded_fn (dname), + 19990331); + dname = DECL_NAME (get_first_fn (dname)); + } } /* Fall through. */ @@ -12126,7 +12229,7 @@ xref_tag (code_type_node, name, globalize) enum tree_code code; int temp = 0; register tree ref, t; - struct binding_level *b = inner_binding_level; + struct binding_level *b = current_binding_level; int got_type = 0; tree attributes = NULL_TREE; @@ -12557,7 +12660,7 @@ start_enum (name) tree name; { register tree enumtype = NULL_TREE; - struct binding_level *b = inner_binding_level; + struct binding_level *b = current_binding_level; /* We are wasting space here and putting these on the permanent_obstack so that typeid(local enum) will work correctly. */ @@ -12795,13 +12898,10 @@ build_enumerator (name, value, type) TREE_READONLY (decl) = 1; if (context && context == current_class_type) - { - pushdecl_class_level (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); - } + /* 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 { pushdecl (decl); @@ -14506,13 +14606,6 @@ revert_static_member_fn (decl, fn, argtypes) *argtypes = args; } -int -id_in_current_class (id) - tree id; -{ - return !!purpose_member (id, class_binding_level->class_shadowed); -} - struct cp_function { int returns_value; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index bb7071e52211..180de3d6824d 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1525,7 +1525,6 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) DECL_ASSEMBLER_NAME (value) = get_identifier (build_overload_name (TREE_TYPE (value), 1, 1)); - pushdecl_class_level (value); return value; } @@ -1611,8 +1610,6 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) && (TREE_CODE (value) == VAR_DECL || TREE_CODE (value) == FUNCTION_DECL)) value = push_template_decl (value); - check_template_shadow (value); - if (attrlist) cplus_decl_attributes (value, TREE_PURPOSE (attrlist), TREE_VALUE (attrlist)); @@ -1656,7 +1653,6 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) DECL_CLASS_CONTEXT (value) = current_class_type; cp_finish_decl (value, init, asmspec_tree, 1, flags); - pushdecl_class_level (value); return value; } if (TREE_CODE (value) == FIELD_DECL) diff --git a/gcc/cp/errfn.c b/gcc/cp/errfn.c index 7d6e66dffac8..58a46af4bad6 100644 --- a/gcc/cp/errfn.c +++ b/gcc/cp/errfn.c @@ -41,8 +41,6 @@ int cp_silent = 0; typedef void errorfn (); /* deliberately vague */ static void cp_thing PROTO ((errorfn *, int, const char *, va_list)); -extern char* cp_file_of PROTO((tree)); -extern int cp_line_of PROTO((tree)); #define STRDUP(f) (ap = (char *) alloca (strlen (f) +1), strcpy (ap, (f)), ap) diff --git a/gcc/cp/error.c b/gcc/cp/error.c index b230e1f1efc2..45b96d7ef401 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -806,6 +806,10 @@ dump_decl (t, v) } break; + case OVERLOAD: + t = OVL_CURRENT (t); + /* Fall through. */ + case FUNCTION_DECL: if (GLOBAL_IORD_P (DECL_ASSEMBLER_NAME (t))) dump_global_iord (DECL_ASSEMBLER_NAME (t)); @@ -1928,6 +1932,8 @@ cp_file_of (t) return DECL_SOURCE_FILE (DECL_CONTEXT (t)); else if (TREE_CODE_CLASS (TREE_CODE (t)) == 't') return DECL_SOURCE_FILE (TYPE_MAIN_DECL (t)); + else if (TREE_CODE (t) == OVERLOAD) + return DECL_SOURCE_FILE (OVL_FUNCTION (t)); else return DECL_SOURCE_FILE (t); } @@ -1945,6 +1951,8 @@ cp_line_of (t) if (TREE_CODE_CLASS (TREE_CODE (t)) == 't') line = DECL_SOURCE_LINE (TYPE_MAIN_DECL (t)); + else if (TREE_CODE (t) == OVERLOAD) + line = DECL_SOURCE_LINE (OVL_FUNCTION (t)); else line = DECL_SOURCE_LINE (t); diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 71fd08b1d4c3..062620367154 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1377,14 +1377,17 @@ build_member_call (type, name, parmlist) return build_x_function_call (lookup_namespace_name (type, name), parmlist, current_class_ref); - if (TREE_CODE (name) != TEMPLATE_ID_EXPR) - method_name = name; - else + if (TREE_CODE (name) == TEMPLATE_ID_EXPR) { method_name = TREE_OPERAND (name, 0); + if (TREE_CODE (method_name) == COMPONENT_REF) + method_name = TREE_OPERAND (method_name, 1); if (is_overloaded_fn (method_name)) method_name = DECL_NAME (OVL_CURRENT (method_name)); + TREE_OPERAND (name, 0) = method_name; } + else + method_name = name; if (TREE_CODE (method_name) == BIT_NOT_EXPR) { diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 81e99d8cd041..4d68ba97bf4f 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -2878,15 +2878,13 @@ do_identifier (token, parsing, args) /* Remember that this name has been used in the class definition, as per [class.scope0] */ - if (id && current_class_type && parsing - && TYPE_BEING_DEFINED (current_class_type) - && ! IDENTIFIER_CLASS_VALUE (token) + if (id && parsing /* Avoid breaking if we get called for a default argument that refers to an overloaded method. Eventually this will not be necessary, since default arguments shouldn't be parsed until after the class is complete. (jason 3/12/97) */ && TREE_CODE (id) != OVERLOAD) - pushdecl_class_level (id); + maybe_note_name_used_in_class (token, id); if (id == error_mark_node) { diff --git a/gcc/cp/method.c b/gcc/cp/method.c index ecfa82c40123..d0bbf1546f68 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1916,11 +1916,16 @@ hack_identifier (value, name) TREE_USED (value) = 1; value = build_component_ref (current_class_ref, name, NULL_TREE, 1); } - else if (TREE_CODE (value) == FUNCTION_DECL - && DECL_FUNCTION_MEMBER_P (value)) + else if ((TREE_CODE (value) == FUNCTION_DECL + && DECL_FUNCTION_MEMBER_P (value)) + || (TREE_CODE (value) == OVERLOAD + && DECL_FUNCTION_MEMBER_P (OVL_CURRENT (value)))) { tree decl; + if (TREE_CODE (value) == OVERLOAD) + value = OVL_CURRENT (value); + if (IS_SIGNATURE (DECL_CLASS_CONTEXT (value))) return value; @@ -1928,19 +1933,7 @@ hack_identifier (value, name) value = build_component_ref (decl, name, NULL_TREE, 1); } else if (really_overloaded_fn (value)) - { -#if 0 - tree t = get_first_fn (value); - for (; t; t = DECL_CHAIN (t)) - { - if (TREE_CODE (t) == TEMPLATE_DECL) - continue; - - assemble_external (t); - TREE_USED (t) = 1; - } -#endif - } + ; else if (TREE_CODE (value) == OVERLOAD) /* not really overloaded function */ mark_used (OVL_FUNCTION (value)); diff --git a/gcc/cp/parse.c b/gcc/cp/parse.c index 6e3b2111f26f..6eedc518e86a 100644 --- a/gcc/cp/parse.c +++ b/gcc/cp/parse.c @@ -310,11 +310,11 @@ static const short yyprhs[] = { 0, 1498, 1503, 1505, 1507, 1511, 1516, 1520, 1526, 1528, 1533, 1537, 1541, 1542, 1546, 1550, 1554, 1555, 1558, 1561, 1562, 1570, 1575, 1576, 1583, 1587, 1590, 1593, 1596, 1597, 1598, - 1608, 1610, 1611, 1613, 1614, 1616, 1618, 1621, 1624, 1627, - 1630, 1633, 1636, 1639, 1642, 1645, 1649, 1654, 1658, 1661, - 1665, 1667, 1668, 1672, 1673, 1677, 1680, 1682, 1684, 1685, - 1688, 1692, 1694, 1699, 1701, 1705, 1707, 1709, 1714, 1719, - 1722, 1725, 1729, 1733, 1735, 1736, 1738, 1742, 1745, 1748, + 1599, 1610, 1612, 1613, 1615, 1616, 1618, 1620, 1623, 1626, + 1629, 1632, 1635, 1638, 1641, 1644, 1647, 1651, 1656, 1660, + 1663, 1667, 1669, 1670, 1674, 1675, 1679, 1682, 1684, 1686, + 1687, 1690, 1694, 1696, 1701, 1703, 1707, 1709, 1711, 1716, + 1721, 1724, 1727, 1731, 1735, 1736, 1738, 1742, 1745, 1748, 1750, 1753, 1756, 1759, 1762, 1765, 1768, 1771, 1773, 1776, 1779, 1783, 1786, 1789, 1794, 1799, 1802, 1804, 1810, 1815, 1817, 1818, 1820, 1824, 1825, 1827, 1831, 1833, 1835, 1837, @@ -368,8 +368,8 @@ static const short yyrhs[] = { -1, 54, 0, 209, 0, 313, 0, 327, 313, 0, 327, 209, 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, 268, 137, 0, - 45, 137, 0, 134, 268, 137, 0, 138, 0, 138, + 136, 59, 140, 0, 163, 0, 0, 269, 137, 0, + 45, 137, 0, 134, 269, 137, 0, 138, 0, 138, 64, 225, 0, 390, 0, 390, 64, 204, 0, 139, 0, 139, 64, 184, 0, 134, 142, 0, 134, 1, 0, 148, 147, 0, 143, 0, 141, 0, 133, 116, @@ -435,7 +435,7 @@ static const short yyrhs[] = { -1, 58, 199, 196, 109, 0, 93, 196, 108, 0, 47, 0, 93, 232, 108, 0, 64, 254, 0, 93, 225, 108, 0, 202, 93, 225, 108, 0, 197, 0, 202, - 197, 0, 202, 58, 255, 266, 109, 0, 203, 0, + 197, 0, 202, 58, 255, 267, 109, 0, 203, 0, 204, 83, 204, 0, 204, 84, 204, 0, 204, 78, 204, 0, 204, 79, 204, 0, 204, 80, 204, 0, 204, 81, 204, 0, 204, 82, 204, 0, 204, 76, @@ -509,24 +509,24 @@ static const short yyrhs[] = { -1, 337, 0, 256, 146, 361, 0, 256, 146, 1, 0, 0, 258, 257, 147, 0, 102, 204, 107, 0, 102, 1, 107, 0, 0, 260, 259, 0, 260, 1, 0, - 0, 14, 163, 58, 262, 296, 267, 109, 0, 14, - 163, 58, 109, 0, 0, 14, 58, 263, 296, 267, + 0, 14, 163, 58, 262, 296, 268, 109, 0, 14, + 163, 58, 109, 0, 0, 14, 58, 263, 296, 268, 109, 0, 14, 58, 109, 0, 14, 163, 0, 14, - 325, 0, 45, 320, 0, 0, 0, 276, 282, 283, - 109, 246, 264, 260, 265, 258, 0, 276, 0, 0, - 59, 0, 0, 59, 0, 36, 0, 268, 7, 0, - 268, 8, 0, 268, 9, 0, 268, 36, 0, 268, - 247, 0, 268, 163, 0, 268, 165, 0, 269, 58, - 0, 269, 62, 0, 268, 318, 163, 0, 268, 327, - 318, 163, 0, 268, 327, 163, 0, 268, 178, 0, - 268, 318, 178, 0, 269, 0, 0, 270, 273, 277, - 0, 0, 271, 274, 277, 0, 268, 58, 0, 275, - 0, 272, 0, 0, 62, 391, 0, 62, 391, 278, - 0, 279, 0, 278, 59, 391, 279, 0, 280, 0, - 281, 391, 280, 0, 320, 0, 305, 0, 30, 93, - 186, 108, 0, 30, 93, 225, 108, 0, 37, 391, - 0, 7, 391, 0, 281, 37, 391, 0, 281, 7, - 391, 0, 58, 0, 0, 285, 0, 283, 284, 285, + 325, 0, 45, 320, 0, 0, 0, 0, 277, 58, + 264, 283, 109, 246, 265, 260, 266, 258, 0, 277, + 0, 0, 59, 0, 0, 59, 0, 36, 0, 269, + 7, 0, 269, 8, 0, 269, 9, 0, 269, 36, + 0, 269, 247, 0, 269, 163, 0, 269, 165, 0, + 270, 58, 0, 270, 62, 0, 269, 318, 163, 0, + 269, 327, 318, 163, 0, 269, 327, 163, 0, 269, + 178, 0, 269, 318, 178, 0, 270, 0, 0, 271, + 274, 278, 0, 0, 272, 275, 278, 0, 269, 58, + 0, 276, 0, 273, 0, 0, 62, 391, 0, 62, + 391, 279, 0, 280, 0, 279, 59, 391, 280, 0, + 281, 0, 282, 391, 281, 0, 320, 0, 305, 0, + 30, 93, 186, 108, 0, 30, 93, 225, 108, 0, + 37, 391, 0, 7, 391, 0, 282, 37, 391, 0, + 282, 7, 391, 0, 0, 285, 0, 283, 284, 285, 0, 283, 284, 0, 37, 62, 0, 286, 0, 285, 286, 0, 287, 60, 0, 287, 109, 0, 156, 62, 0, 156, 95, 0, 156, 25, 0, 156, 58, 0, @@ -691,47 +691,47 @@ static const short yyrline[] = { 0, 1999, 2000, 2001, 2005, 2008, 2012, 2015, 2021, 2023, 2026, 2029, 2032, 2038, 2041, 2044, 2046, 2048, 2052, 2058, 2066, 2073, 2077, 2079, 2084, 2087, 2090, 2092, 2094, 2098, 2103, - 2110, 2114, 2118, 2125, 2129, 2132, 2135, 2141, 2153, 2157, - 2162, 2182, 2184, 2187, 2189, 2194, 2196, 2198, 2200, 2202, - 2204, 2208, 2216, 2219, 2221, 2225, 2231, 2236, 2241, 2243, - 2247, 2250, 2254, 2260, 2266, 2291, 2297, 2299, 2302, 2305, - 2307, 2311, 2313, 2317, 2322, 2328, 2331, 2332, 2353, 2376, - 2378, 2382, 2393, 2407, 2412, 2413, 2414, 2415, 2418, 2433, - 2438, 2444, 2446, 2451, 2453, 2455, 2457, 2459, 2461, 2464, - 2474, 2481, 2506, 2512, 2515, 2518, 2520, 2531, 2536, 2539, - 2544, 2547, 2554, 2564, 2567, 2574, 2584, 2586, 2589, 2591, - 2594, 2601, 2609, 2616, 2622, 2628, 2636, 2640, 2645, 2649, - 2652, 2661, 2663, 2667, 2670, 2675, 2679, 2685, 2696, 2699, - 2703, 2707, 2715, 2720, 2726, 2729, 2731, 2733, 2739, 2742, - 2744, 2746, 2748, 2752, 2755, 2773, 2783, 2785, 2786, 2790, - 2795, 2798, 2800, 2802, 2804, 2808, 2814, 2816, 2824, 2827, - 2829, 2831, 2833, 2837, 2840, 2843, 2845, 2847, 2849, 2853, - 2856, 2859, 2861, 2863, 2865, 2867, 2874, 2878, 2883, 2887, - 2892, 2894, 2898, 2901, 2903, 2906, 2908, 2909, 2912, 2914, - 2916, 2922, 2937, 2943, 2949, 2963, 2965, 2969, 2983, 2985, - 2987, 2991, 2997, 3010, 3012, 3016, 3029, 3035, 3037, 3038, - 3039, 3047, 3052, 3061, 3062, 3066, 3069, 3075, 3081, 3084, - 3086, 3088, 3090, 3094, 3098, 3102, 3105, 3110, 3113, 3115, - 3117, 3119, 3121, 3123, 3125, 3127, 3131, 3135, 3139, 3143, - 3144, 3146, 3148, 3150, 3152, 3154, 3156, 3158, 3160, 3168, - 3170, 3171, 3172, 3175, 3181, 3183, 3188, 3190, 3193, 3207, - 3210, 3213, 3217, 3220, 3227, 3229, 3232, 3234, 3236, 3239, - 3242, 3245, 3248, 3250, 3253, 3257, 3259, 3265, 3267, 3268, - 3270, 3275, 3277, 3279, 3281, 3283, 3286, 3287, 3289, 3292, - 3293, 3296, 3296, 3299, 3299, 3302, 3302, 3304, 3306, 3308, - 3310, 3316, 3322, 3325, 3328, 3334, 3336, 3338, 3342, 3344, - 3345, 3346, 3348, 3351, 3358, 3363, 3369, 3373, 3375, 3378, - 3380, 3383, 3387, 3389, 3392, 3394, 3397, 3414, 3420, 3428, - 3430, 3432, 3436, 3439, 3440, 3448, 3452, 3456, 3459, 3460, - 3466, 3469, 3472, 3474, 3478, 3483, 3486, 3496, 3501, 3502, - 3509, 3512, 3515, 3517, 3520, 3522, 3532, 3546, 3550, 3553, - 3555, 3559, 3563, 3566, 3569, 3571, 3575, 3577, 3584, 3591, - 3594, 3598, 3602, 3606, 3612, 3616, 3621, 3623, 3626, 3631, - 3637, 3648, 3651, 3653, 3657, 3662, 3664, 3671, 3674, 3676, - 3678, 3684, 3689, 3692, 3694, 3696, 3698, 3700, 3702, 3704, - 3706, 3708, 3710, 3712, 3714, 3716, 3718, 3720, 3722, 3724, - 3726, 3728, 3730, 3732, 3734, 3736, 3738, 3740, 3742, 3744, - 3746, 3748, 3750, 3752, 3754, 3757, 3759 + 2110, 2114, 2118, 2125, 2129, 2132, 2135, 2141, 2143, 2154, + 2158, 2163, 2183, 2185, 2188, 2190, 2195, 2197, 2199, 2201, + 2203, 2205, 2209, 2217, 2220, 2222, 2226, 2232, 2237, 2242, + 2244, 2248, 2251, 2255, 2261, 2267, 2292, 2298, 2300, 2303, + 2306, 2308, 2312, 2314, 2318, 2323, 2329, 2332, 2333, 2354, + 2377, 2379, 2383, 2394, 2408, 2409, 2410, 2411, 2414, 2429, + 2434, 2440, 2442, 2447, 2449, 2451, 2453, 2455, 2457, 2460, + 2470, 2477, 2502, 2508, 2511, 2514, 2516, 2527, 2532, 2535, + 2540, 2543, 2550, 2560, 2563, 2570, 2580, 2582, 2585, 2587, + 2590, 2597, 2605, 2612, 2618, 2624, 2632, 2636, 2641, 2645, + 2648, 2657, 2659, 2663, 2666, 2671, 2675, 2681, 2692, 2695, + 2699, 2703, 2711, 2716, 2722, 2725, 2727, 2729, 2735, 2738, + 2740, 2742, 2744, 2748, 2751, 2762, 2772, 2774, 2775, 2779, + 2784, 2787, 2789, 2791, 2793, 2797, 2803, 2805, 2813, 2816, + 2818, 2820, 2822, 2826, 2829, 2832, 2834, 2836, 2838, 2842, + 2845, 2848, 2850, 2852, 2854, 2856, 2863, 2867, 2872, 2876, + 2881, 2883, 2887, 2890, 2892, 2895, 2897, 2898, 2901, 2903, + 2905, 2911, 2921, 2927, 2933, 2947, 2949, 2953, 2967, 2969, + 2971, 2975, 2981, 2994, 2996, 3000, 3013, 3019, 3021, 3022, + 3023, 3031, 3036, 3045, 3046, 3050, 3053, 3059, 3065, 3068, + 3070, 3072, 3074, 3078, 3082, 3086, 3089, 3094, 3097, 3099, + 3101, 3103, 3105, 3107, 3109, 3111, 3115, 3119, 3123, 3127, + 3128, 3130, 3132, 3134, 3136, 3138, 3140, 3142, 3144, 3152, + 3154, 3155, 3156, 3159, 3165, 3167, 3172, 3174, 3177, 3191, + 3194, 3197, 3201, 3204, 3211, 3213, 3216, 3218, 3220, 3223, + 3226, 3229, 3232, 3234, 3237, 3241, 3243, 3249, 3251, 3252, + 3254, 3259, 3261, 3263, 3265, 3267, 3270, 3271, 3273, 3276, + 3277, 3280, 3280, 3283, 3283, 3286, 3286, 3288, 3290, 3292, + 3294, 3300, 3306, 3309, 3312, 3318, 3320, 3322, 3326, 3328, + 3329, 3330, 3332, 3335, 3342, 3347, 3353, 3357, 3359, 3362, + 3364, 3367, 3371, 3373, 3376, 3378, 3381, 3398, 3404, 3412, + 3414, 3416, 3420, 3423, 3424, 3432, 3436, 3440, 3443, 3444, + 3450, 3453, 3456, 3458, 3462, 3467, 3470, 3480, 3485, 3486, + 3493, 3496, 3499, 3501, 3504, 3506, 3516, 3530, 3534, 3537, + 3539, 3543, 3547, 3550, 3553, 3555, 3559, 3561, 3568, 3575, + 3578, 3582, 3586, 3590, 3596, 3600, 3605, 3607, 3610, 3615, + 3621, 3632, 3635, 3637, 3641, 3646, 3648, 3655, 3658, 3660, + 3662, 3668, 3673, 3676, 3678, 3680, 3682, 3684, 3686, 3688, + 3690, 3692, 3694, 3696, 3698, 3700, 3702, 3704, 3706, 3708, + 3710, 3712, 3714, 3716, 3718, 3720, 3722, 3724, 3726, 3728, + 3730, 3732, 3734, 3736, 3738, 3741, 3743 }; #endif @@ -778,32 +778,32 @@ static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER" "notype_initdcl0","nomods_initdcl0","@25","maybe_attribute","attributes","attribute", "attribute_list","attrib","any_word","identifiers_or_typenames","maybe_init", "init","initlist","fn.defpen","pending_inline","pending_inlines","defarg_again", -"pending_defargs","structsp","@26","@27","@28","@29","maybecomma","maybecomma_warn", +"pending_defargs","structsp","@26","@27","@28","@29","@30","maybecomma","maybecomma_warn", "aggr","named_class_head_sans_basetype","named_class_head_sans_basetype_defn", -"named_complex_class_head_sans_basetype","named_class_head","@30","@31","unnamed_class_head", +"named_complex_class_head_sans_basetype","named_class_head","@31","@32","unnamed_class_head", "class_head","maybe_base_class_list","base_class_list","base_class","base_class.1", -"base_class_access_list","left_curly","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","maybe_parmlist","after_type_declarator","nonnested_type", -"complete_type_name","nested_type","direct_after_type_declarator","notype_declarator_intern", -"notype_declarator","complex_notype_declarator","complex_direct_notype_declarator", -"qualified_id","notype_qualified_id","overqualified_id","functional_cast","type_name", -"nested_name_specifier","nested_name_specifier_1","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","@32","simple_if","@33","@34","implicitly_scoped_stmt", -"@35","stmt","simple_stmt","@36","@37","@38","@39","@40","@41","@42","@43","@44", -"@45","@46","@47","@48","@49","function_try_block","@50","@51","try_block","@52", -"@53","handler_seq","handler","@54","@55","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","@56","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 +"base_class_access_list","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", +"maybe_parmlist","after_type_declarator","nonnested_type","complete_type_name", +"nested_type","direct_after_type_declarator","notype_declarator_intern","notype_declarator", +"complex_notype_declarator","complex_direct_notype_declarator","qualified_id", +"notype_qualified_id","overqualified_id","functional_cast","type_name","nested_name_specifier", +"nested_name_specifier_1","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", +"@33","simple_if","@34","@35","implicitly_scoped_stmt","@36","stmt","simple_stmt", +"@37","@38","@39","@40","@41","@42","@43","@44","@45","@46","@47","@48","@49", +"@50","function_try_block","@51","@52","try_block","@53","@54","handler_seq", +"handler","@55","@56","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","@57","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 }; #endif @@ -855,12 +855,12 @@ static const short yyr1[] = { 0, 251, 251, 251, 252, 252, 253, 253, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 256, 257, 257, 257, 258, 258, 259, 259, 260, 260, 260, 262, 261, - 261, 263, 261, 261, 261, 261, 261, 264, 265, 261, - 261, 266, 266, 267, 267, 268, 268, 268, 268, 268, - 268, 269, 270, 270, 270, 271, 271, 271, 271, 271, - 272, 273, 272, 274, 272, 275, 276, 276, 277, 277, - 277, 278, 278, 279, 279, 280, 280, 280, 280, 281, - 281, 281, 281, 282, 283, 283, 283, 283, 284, 285, + 261, 263, 261, 261, 261, 261, 261, 264, 265, 266, + 261, 261, 267, 267, 268, 268, 269, 269, 269, 269, + 269, 269, 270, 271, 271, 271, 272, 272, 272, 272, + 272, 273, 274, 273, 275, 273, 276, 277, 277, 278, + 278, 278, 279, 279, 280, 280, 281, 281, 281, 281, + 282, 282, 282, 282, 283, 283, 283, 283, 284, 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, 288, 288, 289, 289, 289, 290, 290, 291, 291, @@ -946,12 +946,12 @@ static const short yyr2[] = { 0, 1, 1, 1, 1, 3, 0, 2, 1, 2, 3, 4, 1, 1, 3, 4, 3, 5, 1, 4, 3, 3, 0, 3, 3, 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, - 1, 0, 3, 0, 3, 2, 1, 1, 0, 2, - 3, 1, 4, 1, 3, 1, 1, 4, 4, 2, - 2, 3, 3, 1, 0, 1, 3, 2, 2, 1, + 4, 0, 6, 3, 2, 2, 2, 0, 0, 0, + 10, 1, 0, 1, 0, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 4, 3, 2, + 3, 1, 0, 3, 0, 3, 2, 1, 1, 0, + 2, 3, 1, 4, 1, 3, 1, 1, 4, 4, + 2, 2, 3, 3, 0, 1, 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, @@ -991,13 +991,13 @@ static const short yyr2[] = { 0, static const short yydefact[] = { 3, 12, 12, 5, 0, 4, 0, 281, 636, 637, 0, - 388, 400, 581, 0, 11, 0, 0, 0, 10, 486, + 388, 400, 581, 0, 11, 0, 0, 0, 10, 487, 842, 0, 0, 0, 167, 668, 282, 283, 83, 0, 0, 829, 0, 45, 0, 0, 13, 25, 0, 27, 8, 0, 16, 15, 89, 110, 86, 0, 638, 171, 302, 279, 303, 614, 0, 375, 0, 374, 393, 0, - 413, 392, 430, 399, 0, 501, 502, 504, 508, 507, - 481, 387, 597, 401, 598, 108, 301, 625, 595, 0, + 413, 392, 430, 399, 0, 502, 503, 505, 509, 508, + 482, 387, 597, 401, 598, 108, 301, 625, 595, 0, 639, 579, 0, 0, 280, 81, 82, 178, 642, 178, 643, 178, 284, 167, 140, 141, 142, 143, 144, 472, 475, 0, 664, 0, 476, 0, 0, 0, 0, 141, @@ -1012,2315 +1012,2296 @@ static const short yydefact[] = { 3, 579, 80, 0, 0, 0, 106, 0, 409, 365, 594, 366, 606, 0, 579, 390, 389, 78, 109, 376, 0, 411, 391, 107, 382, 406, 407, 377, 395, 397, 386, - 408, 0, 75, 431, 487, 488, 489, 490, 506, 149, - 148, 150, 492, 493, 172, 499, 491, 0, 0, 494, - 495, 509, 509, 524, 0, 582, 394, 0, 425, 637, - 0, 666, 171, 629, 630, 626, 600, 640, 0, 599, - 596, 0, 877, 873, 872, 870, 852, 857, 858, 0, - 864, 863, 849, 850, 848, 867, 856, 853, 854, 855, - 859, 860, 846, 847, 843, 844, 845, 869, 861, 862, - 851, 868, 0, 865, 775, 393, 776, 838, 284, 281, - 581, 306, 354, 0, 0, 0, 0, 350, 348, 321, - 352, 353, 0, 0, 0, 0, 0, 282, 283, 275, - 0, 0, 186, 185, 0, 187, 188, 0, 0, 189, - 0, 0, 179, 180, 0, 249, 0, 252, 184, 305, - 215, 0, 0, 307, 308, 0, 182, 372, 393, 373, - 631, 333, 323, 0, 0, 0, 0, 178, 0, 474, - 0, 469, 0, 665, 663, 0, 190, 191, 0, 0, - 0, 435, 3, 21, 29, 660, 656, 657, 659, 661, - 658, 140, 141, 142, 0, 143, 144, 648, 649, 653, - 650, 647, 0, 291, 292, 290, 628, 627, 33, 32, - 49, 0, 157, 0, 0, 393, 155, 0, 0, 608, - 610, 0, 609, 141, 142, 277, 278, 297, 0, 618, - 296, 0, 617, 0, 304, 282, 283, 0, 0, 0, - 295, 294, 622, 0, 0, 12, 0, 167, 9, 9, - 70, 0, 65, 0, 0, 71, 74, 0, 427, 429, - 122, 93, 127, 764, 0, 85, 84, 92, 125, 0, - 0, 123, 88, 624, 0, 0, 587, 0, 832, 0, - 592, 0, 591, 0, 0, 0, 0, 579, 428, 0, - 77, 583, 579, 605, 0, 379, 380, 0, 76, 428, - 384, 383, 385, 378, 398, 415, 414, 178, 496, 500, - 498, 0, 829, 503, 505, 547, 637, 0, 538, 0, - 0, 550, 0, 121, 116, 0, 171, 551, 554, 0, - 0, 530, 0, 119, 396, 428, 579, 94, 0, 0, - 0, 0, 579, 100, 580, 613, 637, 667, 171, 0, - 0, 866, 871, 395, 579, 579, 0, 579, 876, 178, - 0, 0, 0, 222, 0, 0, 224, 237, 238, 0, - 0, 0, 0, 0, 276, 221, 218, 217, 219, 0, - 0, 0, 0, 0, 305, 0, 0, 0, 216, 176, - 177, 299, 0, 220, 0, 0, 250, 0, 0, 0, + 408, 0, 75, 431, 488, 489, 490, 491, 507, 149, + 148, 150, 493, 494, 172, 500, 492, 0, 0, 495, + 496, 510, 510, 478, 582, 394, 0, 425, 637, 0, + 666, 171, 629, 630, 626, 600, 640, 0, 599, 596, + 0, 877, 873, 872, 870, 852, 857, 858, 0, 864, + 863, 849, 850, 848, 867, 856, 853, 854, 855, 859, + 860, 846, 847, 843, 844, 845, 869, 861, 862, 851, + 868, 0, 865, 775, 393, 776, 838, 284, 281, 581, + 306, 354, 0, 0, 0, 0, 350, 348, 321, 352, + 353, 0, 0, 0, 0, 0, 282, 283, 275, 0, + 0, 186, 185, 0, 187, 188, 0, 0, 189, 0, + 0, 179, 180, 0, 249, 0, 252, 184, 305, 215, + 0, 0, 307, 308, 0, 182, 372, 393, 373, 631, + 333, 323, 0, 0, 0, 0, 178, 0, 474, 0, + 469, 0, 665, 663, 0, 190, 191, 0, 0, 0, + 435, 3, 21, 29, 660, 656, 657, 659, 661, 658, + 140, 141, 142, 0, 143, 144, 648, 649, 653, 650, + 647, 0, 291, 292, 290, 628, 627, 33, 32, 49, + 0, 157, 0, 0, 393, 155, 0, 0, 608, 610, + 0, 609, 141, 142, 277, 278, 297, 0, 618, 296, + 0, 617, 0, 304, 282, 283, 0, 0, 0, 295, + 294, 622, 0, 0, 12, 0, 167, 9, 9, 70, + 0, 65, 0, 0, 71, 74, 0, 427, 429, 122, + 93, 127, 764, 0, 85, 84, 92, 125, 0, 0, + 123, 88, 624, 0, 0, 587, 0, 832, 0, 592, + 0, 591, 0, 0, 0, 0, 579, 428, 0, 77, + 583, 579, 605, 0, 379, 380, 0, 76, 428, 384, + 383, 385, 378, 398, 415, 414, 178, 497, 501, 499, + 0, 829, 504, 506, 0, 396, 428, 579, 94, 0, + 0, 0, 0, 579, 100, 580, 613, 637, 667, 171, + 0, 0, 866, 871, 395, 579, 579, 0, 579, 876, + 178, 0, 0, 0, 222, 0, 0, 224, 237, 238, + 0, 0, 0, 0, 0, 276, 221, 218, 217, 219, + 0, 0, 0, 0, 0, 305, 0, 0, 0, 216, + 176, 177, 299, 0, 220, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 315, - 0, 317, 319, 320, 358, 357, 0, 0, 240, 240, - 0, 226, 577, 0, 234, 355, 347, 0, 0, 829, - 336, 339, 340, 0, 0, 367, 685, 681, 690, 0, - 583, 579, 579, 579, 369, 688, 0, 635, 371, 0, - 0, 370, 335, 0, 330, 349, 331, 351, 632, 0, - 332, 175, 175, 0, 165, 0, 393, 163, 574, 484, - 572, 471, 0, 0, 402, 0, 0, 403, 404, 405, - 441, 442, 443, 440, 0, 433, 436, 0, 3, 0, - 651, 178, 654, 0, 41, 42, 0, 53, 0, 0, - 57, 61, 50, 828, 823, 0, 372, 393, 53, 373, - 827, 59, 168, 153, 151, 168, 175, 300, 616, 615, - 304, 0, 619, 0, 18, 20, 89, 9, 9, 73, - 72, 0, 128, 356, 0, 712, 91, 710, 452, 0, - 448, 447, 214, 0, 213, 584, 623, 0, 805, 0, - 800, 393, 0, 799, 801, 830, 812, 0, 0, 621, - 590, 589, 0, 0, 604, 0, 423, 422, 410, 603, - 0, 832, 593, 381, 412, 424, 428, 0, 497, 510, - 579, 798, 546, 539, 551, 540, 428, 428, 536, 537, - 534, 535, 579, 798, 281, 636, 0, 415, 117, 542, - 552, 557, 558, 415, 415, 0, 0, 415, 115, 543, - 555, 415, 0, 428, 0, 531, 532, 533, 428, 426, - 832, 798, 178, 178, 641, 178, 832, 798, 579, 97, - 579, 103, 875, 874, 838, 838, 838, 0, 0, 0, - 0, 635, 0, 0, 0, 0, 393, 0, 0, 0, - 311, 0, 309, 310, 0, 247, 181, 281, 636, 637, - 282, 283, 0, 0, 453, 482, 0, 274, 273, 790, - 789, 0, 271, 270, 268, 269, 267, 266, 265, 262, - 263, 264, 260, 261, 255, 256, 257, 258, 259, 253, - 254, 0, 0, 0, 0, 0, 240, 228, 244, 0, - 0, 227, 579, 579, 0, 579, 576, 675, 0, 0, - 0, 0, 0, 338, 0, 342, 0, 344, 0, 684, - 683, 680, 679, 828, 0, 0, 699, 0, 0, 832, - 368, 832, 686, 579, 798, 583, 685, 681, 0, 0, - 579, 0, 392, 0, 0, 0, 0, 170, 174, 285, - 168, 161, 159, 168, 0, 485, 0, 484, 212, 211, - 210, 209, 435, 0, 0, 24, 0, 0, 655, 0, - 38, 44, 43, 55, 52, 53, 0, 48, 0, 0, - 685, 681, 0, 819, 579, 822, 824, 0, 820, 821, - 54, 492, 0, 158, 168, 168, 156, 169, 298, 17, - 19, 69, 89, 416, 145, 636, 637, 133, 146, 147, - 0, 126, 129, 0, 638, 0, 0, 0, 0, 711, - 705, 449, 0, 124, 588, 585, 804, 818, 807, 0, - 586, 803, 817, 806, 802, 831, 814, 825, 815, 808, - 813, 834, 0, 420, 602, 601, 419, 175, 829, 0, - 829, 511, 512, 514, 829, 517, 516, 832, 0, 541, - 446, 446, 832, 0, 0, 0, 428, 428, 0, 428, - 428, 0, 428, 0, 529, 478, 0, 446, 96, 0, - 0, 0, 0, 102, 0, 832, 798, 832, 798, 840, - 839, 841, 286, 322, 223, 225, 328, 329, 0, 0, - 0, 0, 310, 313, 0, 0, 0, 0, 248, 0, - 314, 316, 318, 0, 0, 0, 0, 229, 246, 0, - 0, 672, 670, 0, 673, 583, 235, 0, 0, 178, - 345, 0, 0, 0, 682, 678, 689, 579, 698, 696, - 697, 687, 832, 0, 694, 0, 633, 634, 0, 334, - 166, 168, 168, 164, 575, 573, 473, 0, 434, 432, - 281, 0, 22, 30, 662, 56, 51, 58, 62, 684, - 680, 685, 681, 0, 595, 0, 579, 686, 60, 154, - 152, 68, 0, 131, 0, 135, 0, 137, 0, 139, - 0, 765, 0, 202, 713, 0, 706, 707, 0, 450, - 685, 681, 0, 305, 0, 631, 826, 0, 0, 835, - 836, 0, 0, 417, 173, 521, 0, 520, 829, 829, - 829, 0, 112, 579, 545, 549, 114, 579, 428, 428, - 566, 446, 281, 636, 0, 553, 559, 560, 415, 415, - 446, 446, 0, 446, 556, 466, 544, 579, 288, 287, - 289, 579, 99, 0, 105, 0, 0, 0, 0, 0, - 0, 456, 0, 454, 251, 272, 242, 241, 239, 230, - 0, 243, 245, 671, 669, 676, 674, 0, 236, 0, - 0, 337, 341, 343, 832, 692, 579, 693, 162, 160, - 470, 0, 437, 439, 684, 680, 600, 686, 132, 130, - 0, 0, 0, 0, 444, 0, 0, 281, 636, 637, - 714, 727, 730, 733, 738, 0, 0, 0, 0, 0, - 0, 0, 0, 282, 759, 767, 0, 786, 763, 762, - 761, 0, 722, 0, 0, 393, 0, 701, 720, 726, - 700, 721, 760, 0, 708, 451, 0, 634, 816, 810, - 811, 809, 0, 833, 421, 0, 0, 0, 0, 523, - 522, 515, 832, 832, 565, 562, 564, 0, 0, 428, - 428, 428, 561, 563, 548, 0, 832, 832, 579, 579, - 0, 0, 0, 0, 455, 0, 0, 231, 232, 677, - 346, 287, 695, 832, 0, 134, 136, 138, 772, 766, - 770, 0, 709, 704, 205, 779, 781, 782, 0, 0, - 718, 0, 0, 0, 745, 747, 748, 749, 0, 0, - 0, 0, 0, 0, 0, 780, 0, 364, 787, 0, - 723, 362, 415, 0, 363, 0, 415, 0, 0, 0, - 203, 703, 702, 724, 758, 757, 310, 837, 418, 518, - 519, 513, 111, 113, 428, 428, 571, 446, 446, 468, - 0, 467, 462, 95, 101, 832, 832, 324, 325, 326, - 327, 457, 0, 233, 691, 438, 0, 771, 445, 194, - 0, 715, 728, 717, 0, 0, 0, 0, 0, 741, - 0, 750, 0, 756, 39, 144, 34, 144, 0, 35, - 768, 0, 360, 361, 0, 0, 0, 359, 204, 718, - 570, 568, 567, 569, 0, 0, 480, 98, 104, 578, - 0, 773, 201, 0, 393, 0, 718, 0, 731, 719, - 705, 784, 734, 0, 0, 0, 0, 746, 755, 40, - 36, 0, 0, 725, 465, 464, 458, 86, 89, 0, - 0, 0, 195, 415, 716, 206, 729, 208, 0, 785, - 0, 783, 739, 743, 742, 769, 791, 0, 0, 463, - 777, 778, 774, 428, 705, 192, 0, 0, 198, 0, - 197, 718, 0, 0, 0, 792, 793, 751, 461, 0, - 460, 0, 207, 0, 732, 735, 740, 744, 0, 791, - 0, 0, 459, 199, 193, 0, 0, 0, 752, 794, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 315, 0, 317, 319, 320, 358, 357, 0, 0, 240, + 240, 0, 226, 577, 0, 234, 355, 347, 0, 0, + 829, 336, 339, 340, 0, 0, 367, 685, 681, 690, + 0, 583, 579, 579, 579, 369, 688, 0, 635, 371, + 0, 0, 370, 335, 0, 330, 349, 331, 351, 632, + 0, 332, 175, 175, 0, 165, 0, 393, 163, 574, + 485, 572, 471, 0, 0, 402, 0, 0, 403, 404, + 405, 441, 442, 443, 440, 0, 433, 436, 0, 3, + 0, 651, 178, 654, 0, 41, 42, 0, 53, 0, + 0, 57, 61, 50, 828, 823, 0, 372, 393, 53, + 373, 827, 59, 168, 153, 151, 168, 175, 300, 616, + 615, 304, 0, 619, 0, 18, 20, 89, 9, 9, + 73, 72, 0, 128, 356, 0, 712, 91, 710, 452, + 0, 448, 447, 214, 0, 213, 584, 623, 0, 805, + 0, 800, 393, 0, 799, 801, 830, 812, 0, 0, + 621, 590, 589, 0, 0, 604, 0, 423, 422, 410, + 603, 0, 832, 593, 381, 412, 424, 428, 0, 498, + 511, 547, 637, 0, 538, 0, 0, 550, 0, 121, + 116, 0, 171, 551, 554, 0, 0, 530, 0, 119, + 426, 832, 798, 178, 178, 641, 178, 832, 798, 579, + 97, 579, 103, 875, 874, 838, 838, 838, 0, 0, + 0, 0, 635, 0, 0, 0, 0, 393, 0, 0, + 0, 311, 0, 309, 310, 0, 247, 181, 281, 636, + 637, 282, 283, 0, 0, 453, 483, 0, 274, 273, + 790, 789, 0, 271, 270, 268, 269, 267, 266, 265, + 262, 263, 264, 260, 261, 255, 256, 257, 258, 259, + 253, 254, 0, 0, 0, 0, 0, 240, 228, 244, + 0, 0, 227, 579, 579, 0, 579, 576, 675, 0, + 0, 0, 0, 0, 338, 0, 342, 0, 344, 0, + 684, 683, 680, 679, 828, 0, 0, 699, 0, 0, + 832, 368, 832, 686, 579, 798, 583, 685, 681, 0, + 0, 579, 0, 392, 0, 0, 0, 0, 170, 174, + 285, 168, 161, 159, 168, 0, 486, 0, 485, 212, + 211, 210, 209, 435, 0, 0, 24, 0, 0, 655, + 0, 38, 44, 43, 55, 52, 53, 0, 48, 0, + 0, 685, 681, 0, 819, 579, 822, 824, 0, 820, + 821, 54, 493, 0, 158, 168, 168, 156, 169, 298, + 17, 19, 69, 89, 416, 145, 636, 637, 133, 146, + 147, 0, 126, 129, 0, 638, 0, 0, 0, 0, + 711, 705, 449, 0, 124, 588, 585, 804, 818, 807, + 0, 586, 803, 817, 806, 802, 831, 814, 825, 815, + 808, 813, 834, 0, 420, 602, 601, 419, 175, 829, + 0, 829, 512, 513, 515, 829, 518, 517, 579, 798, + 546, 539, 551, 540, 428, 428, 536, 537, 534, 535, + 579, 798, 281, 636, 0, 415, 117, 542, 552, 557, + 558, 415, 415, 0, 0, 415, 115, 543, 555, 415, + 0, 428, 0, 531, 532, 533, 428, 96, 0, 0, + 0, 0, 102, 0, 832, 798, 832, 798, 840, 839, + 841, 286, 322, 223, 225, 328, 329, 0, 0, 0, + 0, 310, 313, 0, 0, 0, 0, 248, 0, 314, + 316, 318, 0, 0, 0, 0, 229, 246, 0, 0, + 672, 670, 0, 673, 583, 235, 0, 0, 178, 345, + 0, 0, 0, 682, 678, 689, 579, 698, 696, 697, + 687, 832, 0, 694, 0, 633, 634, 0, 334, 166, + 168, 168, 164, 575, 573, 473, 0, 434, 432, 281, + 0, 22, 30, 662, 56, 51, 58, 62, 684, 680, + 685, 681, 0, 595, 0, 579, 686, 60, 154, 152, + 68, 0, 131, 0, 135, 0, 137, 0, 139, 0, + 765, 0, 202, 713, 0, 706, 707, 0, 450, 685, + 681, 0, 305, 0, 631, 826, 0, 0, 835, 836, + 0, 0, 417, 173, 522, 0, 521, 829, 829, 829, + 0, 832, 0, 541, 446, 446, 832, 0, 0, 0, + 428, 428, 0, 428, 428, 0, 428, 0, 529, 479, + 0, 446, 579, 288, 287, 289, 579, 99, 0, 105, + 0, 0, 0, 0, 0, 0, 456, 0, 454, 251, + 272, 242, 241, 239, 230, 0, 243, 245, 671, 669, + 676, 674, 0, 236, 0, 0, 337, 341, 343, 832, + 692, 579, 693, 162, 160, 470, 0, 437, 439, 684, + 680, 600, 686, 132, 130, 0, 0, 0, 0, 444, + 0, 0, 281, 636, 637, 714, 727, 730, 733, 738, + 0, 0, 0, 0, 0, 0, 0, 0, 282, 759, + 767, 0, 786, 763, 762, 761, 0, 722, 0, 0, + 393, 0, 701, 720, 726, 700, 721, 760, 0, 708, + 451, 0, 634, 816, 810, 811, 809, 0, 833, 421, + 0, 0, 0, 0, 524, 523, 516, 112, 579, 545, + 549, 114, 579, 428, 428, 566, 446, 281, 636, 0, + 553, 559, 560, 415, 415, 446, 446, 0, 446, 556, + 466, 544, 832, 832, 579, 579, 0, 0, 0, 0, + 455, 0, 0, 231, 232, 677, 346, 287, 695, 832, + 0, 134, 136, 138, 772, 766, 770, 0, 709, 704, + 205, 779, 781, 782, 0, 0, 718, 0, 0, 0, + 745, 747, 748, 749, 0, 0, 0, 0, 0, 0, + 0, 780, 0, 364, 787, 0, 723, 362, 415, 0, + 363, 0, 415, 0, 0, 0, 203, 703, 702, 724, + 758, 757, 310, 837, 418, 519, 520, 514, 832, 832, + 565, 562, 564, 0, 0, 428, 428, 428, 561, 563, + 548, 0, 95, 101, 832, 832, 324, 325, 326, 327, + 457, 0, 233, 691, 438, 0, 771, 445, 194, 0, + 715, 728, 717, 0, 0, 0, 0, 0, 741, 0, + 750, 0, 756, 39, 144, 34, 144, 0, 35, 768, + 0, 360, 361, 0, 0, 0, 359, 204, 718, 111, + 113, 428, 428, 571, 446, 446, 468, 0, 467, 462, + 98, 104, 578, 0, 773, 201, 0, 393, 0, 718, + 0, 731, 719, 705, 784, 734, 0, 0, 0, 0, + 746, 755, 40, 36, 0, 0, 725, 570, 568, 567, + 569, 0, 0, 481, 0, 0, 0, 195, 415, 716, + 206, 729, 208, 0, 785, 0, 783, 739, 743, 742, + 769, 791, 0, 465, 464, 458, 86, 89, 777, 778, + 774, 428, 705, 192, 0, 0, 198, 0, 197, 718, + 0, 0, 0, 792, 793, 751, 0, 463, 0, 207, + 0, 732, 735, 740, 744, 0, 791, 0, 0, 461, + 0, 460, 199, 193, 0, 0, 0, 752, 794, 459, 0, 0, 795, 0, 0, 200, 736, 796, 0, 753, 0, 0, 0, 737, 797, 754, 0, 0, 0 }; static const short yydefgoto[] = { 1627, - 436, 2, 437, 165, 726, 331, 181, 3, 4, 37, - 689, 373, 1329, 690, 512, 1330, 1331, 393, 1424, 694, - 41, 513, 402, 700, 974, 701, 702, 703, 43, 172, - 173, 44, 455, 184, 180, 45, 46, 822, 1087, 828, - 1089, 47, 515, 516, 185, 186, 456, 733, 1012, 1013, - 669, 1014, 234, 48, 996, 995, 716, 713, 1153, 1152, - 954, 951, 136, 994, 49, 236, 50, 948, 582, 332, - 333, 334, 335, 1332, 1578, 1482, 1580, 1524, 1611, 1195, - 1557, 1575, 367, 940, 336, 1270, 895, 621, 902, 337, - 338, 368, 340, 358, 52, 255, 695, 418, 154, 53, - 54, 341, 577, 342, 343, 344, 345, 457, 346, 1333, - 496, 643, 347, 1334, 56, 217, 706, 348, 218, 555, - 219, 197, 210, 60, 479, 497, 1356, 767, 1213, 198, - 211, 61, 526, 768, 62, 63, 685, 686, 687, 1306, - 462, 865, 866, 1548, 1549, 1517, 1462, 1376, 64, 673, - 361, 1246, 1463, 1108, 957, 65, 66, 67, 68, 69, - 242, 243, 70, 71, 504, 1052, 1053, 1054, 1055, 245, - 520, 815, 521, 522, 523, 800, 810, 801, 1236, 802, - 803, 1237, 1238, 670, 671, 622, 930, 350, 465, 466, + 435, 2, 436, 165, 707, 330, 181, 3, 4, 37, + 670, 372, 1304, 671, 768, 1305, 1306, 392, 1410, 675, + 41, 769, 401, 681, 935, 682, 683, 684, 43, 172, + 173, 44, 454, 184, 180, 45, 46, 783, 1066, 789, + 1068, 47, 771, 772, 185, 186, 455, 714, 973, 974, + 650, 975, 234, 48, 957, 956, 697, 694, 1132, 1131, + 915, 912, 136, 955, 49, 236, 50, 909, 563, 331, + 332, 333, 334, 1307, 1576, 1471, 1578, 1517, 1611, 1174, + 1552, 1573, 366, 901, 335, 1245, 856, 602, 863, 336, + 337, 367, 339, 357, 52, 254, 676, 417, 154, 53, + 54, 340, 558, 341, 342, 343, 344, 456, 345, 1308, + 495, 624, 346, 1309, 56, 217, 687, 347, 218, 536, + 219, 197, 210, 60, 478, 496, 1331, 748, 1192, 198, + 211, 61, 507, 749, 62, 63, 666, 667, 668, 1281, + 461, 826, 827, 1567, 1568, 1544, 1509, 1452, 64, 654, + 360, 505, 1361, 1510, 1087, 918, 65, 66, 67, 68, + 69, 242, 243, 70, 71, 503, 1013, 1014, 1015, 1016, + 776, 1053, 777, 778, 779, 1038, 1048, 1039, 1351, 1040, + 1041, 1352, 1353, 651, 652, 603, 891, 349, 464, 465, 191, 199, 73, 74, 75, 200, 142, 143, 157, 77, - 132, 351, 352, 353, 79, 354, 81, 1057, 123, 124, - 125, 531, 105, 82, 355, 907, 908, 925, 646, 1337, - 1338, 1196, 1197, 1198, 737, 1339, 1021, 1340, 1409, 1527, - 1485, 1486, 1341, 1342, 1510, 1410, 1528, 1411, 1559, 1412, - 1561, 1606, 1621, 1413, 1582, 1537, 1583, 1491, 458, 734, - 1304, 1343, 1427, 1542, 1400, 1401, 1477, 1552, 1526, 1522, - 1344, 1533, 1430, 872, 1585, 1586, 1587, 1619, 753, 754, - 1041, 1209, 1352, 755, 756, 757, 1037, 758, 148, 1039, - 760, 1211, 1212, 549, 84, 85 + 132, 350, 351, 352, 79, 353, 81, 1018, 123, 124, + 125, 512, 105, 82, 354, 868, 869, 886, 627, 1312, + 1313, 1175, 1176, 1177, 718, 1314, 982, 1315, 1395, 1520, + 1474, 1475, 1316, 1317, 1499, 1396, 1521, 1397, 1554, 1398, + 1556, 1605, 1621, 1399, 1580, 1530, 1581, 1480, 457, 715, + 1279, 1318, 1413, 1535, 1386, 1387, 1466, 1547, 1519, 1515, + 1319, 1526, 1416, 833, 1583, 1584, 1585, 1619, 734, 735, + 1002, 1188, 1327, 736, 737, 738, 998, 739, 148, 1000, + 741, 1190, 1191, 530, 84, 85 }; -static const short yypact[] = { 136, - 169,-32768,-32768, 5066,-32768, 203, 163, 73, 77, 190, - 291,-32768,-32768, 1458,-32768, 259, 264, 279,-32768,-32768, --32768, 871, 2044, 1374, 330,-32768, 336, 320,-32768, 1976, - 1976,-32768, 2798,-32768, 5066, 351,-32768,-32768, 355,-32768, - 51, 3166,-32768,-32768, 344, 824, 443, 463, 483,-32768, --32768,-32768,-32768, 324, 5213,-32768, 5421,-32768, 2205, 804, --32768, 456,-32768,-32768, 1137, 623,-32768,-32768,-32768,-32768, - 435, 3747,-32768,-32768,-32768, 198,-32768,-32768,-32768, 906, --32768,-32768, 1174, 8340, 481,-32768,-32768, 10037,-32768, 10037, --32768, 10037,-32768,-32768,-32768, 73, 77, 336, 510, 472, - 539, 483,-32768, 1000,-32768, 1174, 10123, 10123, 509,-32768, --32768,-32768,-32768,-32768, 234, 550, 474, 541, 767, 554, - 564,-32768,-32768, 1006,-32768, 305, 73, 77,-32768, 336, - 510,-32768, 2508, 1031, 545, 5547, 10037,-32768, 10037, 4171, - 2952,-32768,-32768, 1311, 1265, 2952,-32768, 664, 3604, 3604, - 2798, 517, 538,-32768, 559, 876, 562, 592,-32768,-32768, - 700,-32768, 630,-32768, 3999,-32768,-32768, 330, 3843, 643, --32768,-32768,-32768, 344, 6652, 6133, 836, 690,-32768,-32768, - 684, 456, 778, 176, 458, 728,-32768,-32768, 691, 69, --32768,-32768, 3940, 3940, 6529, 198, 864,-32768,-32768, 546, --32768,-32768, 1679,-32768,-32768,-32768,-32768,-32768, 2205, 883, --32768, 456, 198,-32768,-32768,-32768, 2251, 2205,-32768, 456, --32768, 6652,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 749,-32768, 483,-32768, 456, 2169, 910,-32768, --32768, 766, 766,-32768, 4696,-32768, 715, 1174,-32768, 784, - 1757,-32768, 366,-32768,-32768,-32768,-32768,-32768, 4100,-32768, --32768, 769,-32768, 740, 758,-32768,-32768,-32768,-32768, 781, +static const short yypact[] = { 109, + 134,-32768,-32768, 4885,-32768, 42, 50, 73, 331, 142, + 271,-32768,-32768, 1327,-32768, 270, 277, 309,-32768,-32768, +-32768, 1510, 1154, 1165, 343,-32768, 369, 372,-32768, 2239, + 2239,-32768, 2031,-32768, 4885, 361,-32768,-32768, 315,-32768, + 84, 5387,-32768,-32768, 384, 924, 493, 401, 467,-32768, +-32768,-32768,-32768, 510, 3805,-32768, 4032,-32768, 862, 246, +-32768, 525,-32768,-32768, 1990, 769,-32768,-32768,-32768,-32768, + 528, 3436,-32768,-32768,-32768, 1345,-32768,-32768,-32768, 644, +-32768,-32768, 214, 6209, 540,-32768,-32768, 9588,-32768, 9588, +-32768, 9588,-32768,-32768,-32768, 73, 331, 369, 573, 490, + 594, 467,-32768, 334,-32768, 214, 9674, 9674, 561,-32768, +-32768,-32768,-32768,-32768, 599, 607, 413, 441, 451, 616, + 621,-32768,-32768, 1360,-32768, 632, 73, 331,-32768, 369, + 573,-32768, 3078, 1248, 602, 10763, 9588,-32768, 9588, 3145, + 2789,-32768,-32768, 1580, 603, 2789,-32768, 1199, 2798, 2798, + 2031, 570, 619,-32768, 640, 392, 653, 669,-32768,-32768, + 726,-32768, 643,-32768, 10522,-32768,-32768, 343, 6171, 688, +-32768,-32768,-32768, 384, 5433, 10818, 422, 745,-32768,-32768, + 718, 525, 825, 92, 287, 770,-32768,-32768, 723, 154, +-32768,-32768, 3340, 3340, 3908, 1345, 580,-32768,-32768, 637, +-32768,-32768, 1772,-32768,-32768,-32768,-32768,-32768, 862, 660, +-32768, 525, 1345,-32768,-32768,-32768, 1432, 862,-32768, 525, +-32768, 5433,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 774,-32768, 467,-32768, 525, 1901, 1725,-32768, +-32768, 793, 793,-32768,-32768, 1264, 214,-32768, 579, 625, +-32768, 301,-32768,-32768,-32768,-32768,-32768, 3593,-32768,-32768, + 195,-32768, 773, 783,-32768,-32768,-32768,-32768, 801,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 755,-32768,-32768, 715, 3747, 1632,-32768,-32768, - 776,-32768,-32768, 10731, 10817, 10903, 10903,-32768,-32768,-32768, --32768,-32768, 780, 786, 797, 825, 832, 1025, 510, 10209, - 1357, 10903,-32768,-32768, 10903,-32768,-32768, 10903, 7539,-32768, - 10903, 65, 849,-32768, 10903,-32768, 10295,-32768, 11119, 426, - 1563, 3740, 10381,-32768, 919, 2567,-32768, 1700, 2285, 3286, --32768, 431,-32768, 3387, 1998, 65, 65, 10037, 5547,-32768, - 1357, 827, 1357,-32768,-32768, 826, 879, 11052, 837, 842, - 857, 1966, 630,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 550, 474, 541, 1357, 767, 554, 881, 564,-32768, - 914,-32768, 270, 73, 77,-32768,-32768,-32768,-32768,-32768, --32768, 6834,-32768, 6652, 6645, 723,-32768, 65, 301,-32768, --32768, 811,-32768, 897, 903,-32768,-32768,-32768, 2952,-32768, --32768, 2952,-32768, 873,-32768,-32768,-32768, 876, 876, 876, --32768,-32768,-32768, 4100, 103, 875, 884,-32768,-32768,-32768, --32768, 5547,-32768, 900, 963,-32768,-32768, 700,-32768, 456, --32768,-32768,-32768,-32768, 165,-32768,-32768,-32768,-32768, 8091, - 10209,-32768,-32768,-32768, 10209, 877,-32768, 5311, 240, 4742, --32768, 4742,-32768, 5059, 5059, 6529, 882,-32768, 456, 6652, --32768, 891,-32768,-32768, 5849, 2251, 2205, 6652,-32768, 456, --32768,-32768, 456, 2251,-32768, 981,-32768, 10037, 749,-32768, --32768, 2169,-32768,-32768,-32768,-32768, 807, 385,-32768, 10209, - 1836,-32768, 1836, 219, 219, 220, 433, 3033, 4527, 108, - 4879,-32768, 274, 219, 715, 456,-32768,-32768, 941, 944, - 971, 955,-32768,-32768,-32768,-32768, 847,-32768, 439, 921, - 927,-32768,-32768, 715,-32768,-32768, 1100,-32768,-32768, 10037, - 10209, 776, 7539,-32768, 451, 7539,-32768,-32768,-32768, 10123, - 4970, 4970, 4970, 4970, 11097,-32768,-32768,-32768,-32768, 934, - 10473, 10473, 7539, 937, 437, 939, 991, 947,-32768,-32768, --32768,-32768, 10037,-32768, 7630, 7539,-32768, 10209, 10209, 5654, - 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, - 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209,-32768, - 10209,-32768,-32768,-32768,-32768,-32768, 10209, 10209,-32768,-32768, - 339, 651, 1120, 8700,-32768,-32768,-32768, 998, 1757, 1053, - 469, 482, 581, 3585, 1265,-32768, 1659, 1659,-32768, 3502, - 960, 982, 1043,-32768,-32768, 590, 9320, 1173,-32768, 1103, - 1174,-32768,-32768, 10209,-32768,-32768,-32768,-32768,-32768, 90, - 481,-32768,-32768, 65,-32768, 6652, 1444,-32768, 1014, 1034, --32768,-32768, 1357, 881,-32768, 8432, 8523,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 278,-32768, 1016, 1020, 630, 270, - 1062, 10037,-32768, 1073,-32768,-32768, 1031, 2198, 1102, 71, - 1079, 1083,-32768,-32768, 2306, 6133, 2306, 2152, 1137, 4350, --32768, 1094,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 1046, 1054,-32768, 1107,-32768,-32768, 344,-32768,-32768,-32768, --32768, 104, 1493, 1101, 991,-32768,-32768,-32768,-32768, 7429, - 11097,-32768, 879, 1064, 11052,-32768,-32768, 1067,-32768, 1089, - 93, 3406, 1095,-32768, 571, 5919, 1140, 1145, 649,-32768, --32768,-32768, 4742, 4742,-32768, 5849,-32768, 1157,-32768,-32768, - 1111, 240,-32768, 2251,-32768,-32768, 456, 1109,-32768, 2385, --32768, 7162, 11097,-32768, 5202,-32768, 456, 456,-32768,-32768, --32768,-32768,-32768, 7162, 174, 966, 10209, 981,-32768, 1166, --32768,-32768,-32768, 485, 580, 906, 1265, 587, 219, 1177, --32768, 676, 1161, 456, 8768,-32768,-32768,-32768, 456,-32768, - 240, 7162, 10037, 10037,-32768, 10037, 240, 7162,-32768,-32768, --32768,-32768,-32768,-32768, 1688, 1688, 1688, 65, 1136, 1143, - 9688, 1043, 1147, 1149, 1152, 1170, 2853, 1186, 1189, 1190, --32768, 1167,-32768,-32768, 1168,-32768,-32768, 1211, 996, 1060, - 557, 601, 10209, 1217,-32768, 1232, 1191, 11097, 11097,-32768, --32768, 1235, 5746, 6217, 6158, 4780, 2387, 5364, 4442, 2354, - 2354, 2354, 1205, 1205, 1512, 1512, 1028, 1028, 1028,-32768, --32768, 1192, 1194, 1183, 10209, 10123,-32768, 651,-32768, 8091, - 10209,-32768,-32768,-32768, 10209,-32768,-32768, 1204, 10903, 1199, - 1215, 1231, 1264,-32768, 10209,-32768, 10209,-32768, 10209, 2925, --32768, 2925,-32768, 228, 1216, 1218,-32768, 1214, 4970, 240, --32768, 240, 3053,-32768, 7162, 1219, 9504, 9504, 6451, 1220, - 10295, 1221, 876, 2159, 1998, 1368, 1224,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 10209, 1357, 1225, 1034,-32768, 11097, --32768, 11097, 1966, 1227, 10559,-32768, 1233, 1253,-32768, 65, --32768,-32768,-32768,-32768,-32768, 1852, 6834,-32768, 4970, 10037, - 1202, 1202, 4282,-32768,-32768,-32768,-32768, 1679,-32768,-32768, --32768, 1188, 10209,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 344,-32768, 550, 474, 541,-32768, 767, 554, - 10209, 1285,-32768, 672, 564, 702, 706, 1806, 991,-32768, - 96,-32768, 171,-32768,-32768,-32768,-32768,-32768,-32768, 9412, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 1145, 1283,-32768, --32768,-32768, 4970,-32768,-32768,-32768, 1284,-32768,-32768, 1257, --32768, 1294,-32768,-32768, 298,-32768,-32768, 240, 1249,-32768, - 1305, 1305, 240, 1262, 10209, 10209, 7076, 456, 4960, 456, - 456, 1524, 456, 6356,-32768,-32768, 8838, 1305,-32768, 1266, - 65, 65, 65,-32768, 1267, 240, 7162, 240, 7162,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1289, 1290, - 1291, 1293, 1046,-32768, 10985, 8091, 7724, 1280,-32768, 10209, --32768,-32768,-32768, 1281, 1287, 1295, 4970,-32768,-32768, 1298, - 569, 1012, 1012, 1296, 1012,-32768,-32768, 10903, 1384, 10037, --32768, 1309, 1313, 1319,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 240, 1326,-32768, 1325,-32768,-32768, 2768,-32768, --32768,-32768,-32768,-32768, 11097,-32768,-32768, 1292,-32768,-32768, - 292, 1330,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2497, - 2497, 2557, 2557, 4282,-32768, 1679,-32768, 3088, 11119,-32768, --32768,-32768, 1331,-32768, 1493,-32768, 10209,-32768, 10209,-32768, - 10209,-32768, 1357,-32768,-32768, 7026, 1413,-32768, 7815,-32768, - 9596, 9596, 7226, 173, 1339, 209,-32768, 8091, 7906,-32768, --32768, 311, 8091,-32768,-32768,-32768, 10123,-32768,-32768,-32768, --32768, 1848,-32768,-32768,-32768,-32768,-32768,-32768, 7076, 7076, --32768, 1305, 585, 1127, 10209,-32768,-32768,-32768, 981, 981, - 1305, 1305, 847, 1305,-32768,-32768,-32768,-32768,-32768, 1395, --32768,-32768,-32768, 1342,-32768, 1346, 10209, 10209, 10209, 10209, - 8091,-32768, 1393,-32768,-32768, 11097,-32768,-32768,-32768, 60, - 1295,-32768,-32768,-32768,-32768,-32768,-32768, 1348,-32768, 1421, - 65,-32768,-32768,-32768, 240,-32768,-32768,-32768,-32768,-32768, --32768, 10209,-32768,-32768, 2497, 2497,-32768, 3088,-32768,-32768, - 1352, 1362, 1363, 1380,-32768, 1036, 321, 1407, 1164, 1165, --32768,-32768,-32768,-32768,-32768, 10209, 1416, 1419, 1425, 9774, - 653, 1357, 496, 693,-32768,-32768, 9865, 1477,-32768,-32768, --32768, 1430,-32768, 6551, 6039, 4418, 6895,-32768,-32768, 1475, --32768,-32768,-32768, 8931,-32768,-32768, 1386, 1373,-32768,-32768, --32768,-32768, 4970,-32768,-32768, 8091, 1391, 1399, 2385,-32768, --32768,-32768, 240, 240,-32768,-32768,-32768, 10209, 10209, 7076, - 456, 456,-32768,-32768,-32768, 6712, 240, 240,-32768,-32768, - 1400, 1401, 1405, 1410,-32768, 8091, 10209,-32768, 60,-32768, --32768,-32768,-32768, 240, 1415,-32768,-32768,-32768,-32768, 1380, --32768, 1357,-32768,-32768,-32768,-32768,-32768,-32768, 711, 711, - 991, 1432, 1433, 6200,-32768,-32768,-32768,-32768, 1467, 10209, - 1472, 1428, 1480, 1927, 1987,-32768, 991,-32768,-32768, 1451, --32768,-32768, 981, 1061,-32768, 1076, 981, 9951, 1090, 322, --32768,-32768,-32768,-32768,-32768,-32768, 364,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 7076, 7076,-32768, 1305, 1305,-32768, - 8614,-32768,-32768,-32768,-32768, 240, 240,-32768,-32768,-32768, --32768,-32768, 1434,-32768,-32768,-32768, 1459,-32768,-32768,-32768, - 10123,-32768,-32768,-32768, 1538, 9227, 7336, 10123, 10209,-32768, - 9039,-32768, 1496,-32768,-32768, 1504,-32768, 1480, 1927,-32768, --32768, 700,-32768,-32768, 10645, 10645, 8000,-32768,-32768, 991, --32768,-32768,-32768,-32768, 1452, 11007, 1463,-32768,-32768,-32768, - 10990,-32768,-32768, 1455, 398, 6652, 991, 9133,-32768,-32768, - 96,-32768,-32768, 1507, 1460, 11075, 9039,-32768,-32768,-32768, --32768, 1380, 76,-32768,-32768,-32768,-32768, 443, 344, 1462, - 1466, 991,-32768, 981,-32768,-32768,-32768,-32768, 714,-32768, - 8182,-32768,-32768,-32768,-32768, 1380, 1566, 1522, 177,-32768, --32768,-32768,-32768, 456, 96,-32768, 10209, 1523,-32768, 1529, --32768, 991, 9039, 1491, 63, 1531,-32768,-32768,-32768, 165, --32768, 1534,-32768, 1494,-32768,-32768,-32768,-32768, 10209, 1566, - 1539, 1566,-32768,-32768,-32768, 8273, 1500, 572,-32768,-32768, - 8091, 1501,-32768, 1577, 1553,-32768,-32768,-32768, 332,-32768, - 9133, 1603, 1559,-32768,-32768,-32768, 1621, 1622,-32768 +-32768, 768,-32768,-32768, 1264, 3436, 1127,-32768,-32768, 798, +-32768,-32768, 10282, 10368, 10454, 10454,-32768,-32768,-32768,-32768, +-32768, 806, 843, 861, 886, 889, 1274, 573, 9760, 1748, + 10454,-32768,-32768, 10454,-32768,-32768, 10454, 7137,-32768, 10454, + 470, 855,-32768, 10454,-32768, 9846,-32768, 11114, 354, 1918, + 5474, 9932,-32768, 962, 1226,-32768, 694, 5865, 5704,-32768, + 357,-32768, 3224, 1609, 470, 470, 9588, 10763,-32768, 1748, + 872, 1748,-32768,-32768, 877, 937, 6534, 890, 903, 916, + 1834, 643,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 607, 413, 441, 1748, 451, 616, 943, 621,-32768, 971, +-32768, 311, 73, 331,-32768,-32768,-32768,-32768,-32768,-32768, + 10927,-32768, 5433, 11007, 2304,-32768, 470, 986,-32768,-32768, + 554,-32768, 953, 961,-32768,-32768,-32768, 2789,-32768,-32768, + 2789,-32768, 933,-32768,-32768,-32768, 392, 392, 392,-32768, +-32768,-32768, 3593, 66, 935, 939,-32768,-32768,-32768,-32768, + 10763,-32768, 687, 778,-32768,-32768, 726,-32768, 525,-32768, +-32768,-32768,-32768, 117,-32768,-32768,-32768,-32768, 7689, 9760, +-32768,-32768,-32768, 9760, 940,-32768, 7046, 132, 4140,-32768, + 4140,-32768, 4757, 4757, 3908, 946,-32768, 525, 5433,-32768, + 948,-32768,-32768, 5008, 1432, 862, 5433,-32768, 525,-32768, +-32768, 525, 1432,-32768, 1045,-32768, 9588, 774,-32768,-32768, + 1901,-32768,-32768,-32768, 3498, 1264, 525,-32768,-32768, 1001, + 1003, 1024, 1007,-32768,-32768,-32768,-32768, 742,-32768, 363, + 979, 985,-32768,-32768, 1264,-32768,-32768, 817,-32768,-32768, + 9588, 9760, 798, 7137,-32768, 436, 7137,-32768,-32768,-32768, + 9674, 6081, 6081, 6081, 6081, 11092,-32768,-32768,-32768,-32768, + 977, 10024, 10024, 7137, 990, 59, 991, 1044, 996,-32768, +-32768,-32768,-32768, 9588,-32768, 7228, 7137,-32768, 9760, 9760, + 7780, 9760, 9760, 9760, 9760, 9760, 9760, 9760, 9760, 9760, + 9760, 9760, 9760, 9760, 9760, 9760, 9760, 9760, 9760, 9760, +-32768, 9760,-32768,-32768,-32768,-32768,-32768, 9760, 9760,-32768, +-32768, 4521, 430, 454, 8321,-32768,-32768,-32768, 1049, 625, + 1098, 502, 565, 574, 3291, 603,-32768, 1364, 1364,-32768, + 3759, 1000, 1028, 1079,-32768,-32768, 725, 8871, 380,-32768, + 896, 214,-32768,-32768, 9760,-32768,-32768,-32768,-32768,-32768, + 243, 540,-32768,-32768, 470,-32768, 5433, 2388,-32768, 1064, + 1070,-32768,-32768, 1748, 943,-32768, 8053, 8144,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, 49,-32768, 1037, 1025, 643, + 311, 1082, 9588,-32768, 1083,-32768,-32768, 1248, 1649, 1103, + 63, 1081, 1088,-32768,-32768, 2867, 10818, 2867, 3084, 1990, + 5001,-32768, 1100,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 1054, 1057,-32768, 1113,-32768,-32768, 384,-32768,-32768, +-32768,-32768, 70, 1053, 1115, 1044,-32768,-32768,-32768,-32768, + 5971, 11092,-32768, 937, 1072, 6534,-32768,-32768, 1078,-32768, + 1086, 199, 5100, 1087,-32768, 324, 10581, 1123, 1132, 615, +-32768,-32768,-32768, 4140, 4140,-32768, 5008,-32768, 1136,-32768, +-32768, 1095, 132,-32768, 1432,-32768,-32768, 525, 1138,-32768, + 1589,-32768, 766, 566,-32768, 9760, 4591,-32768, 4591, 175, + 175, 407, 618, 1653, 10636, 76, 4269,-32768, 121, 175, +-32768, 132, 10940, 9588, 9588,-32768, 9588, 132, 10940,-32768, +-32768,-32768,-32768,-32768,-32768, 753, 753, 753, 470, 1107, + 1110, 9239, 1079, 1116, 1118, 1120, 1150, 6074, 1158, 1160, + 1163,-32768, 1133,-32768,-32768, 1137,-32768,-32768, 1187, 295, + 859, 153, 57, 9760, 1188,-32768, 1201, 1156, 11092, 11092, +-32768,-32768, 1200, 11132, 5299, 11045, 11147, 5771, 5810, 5228, + 3744, 3744, 3744, 1789, 1789, 1590, 1590, 60, 60, 60, +-32768,-32768, 1171, 1176, 1155, 9760, 9674,-32768, 430,-32768, + 7689, 9760,-32768,-32768,-32768, 9760,-32768,-32768, 1191, 10454, + 1179, 1204, 1221, 1250,-32768, 9760,-32768, 9760,-32768, 9760, + 2159,-32768, 2159,-32768, 124, 1194, 1195,-32768, 1196, 6081, + 132,-32768, 132, 2743,-32768, 10940, 1202, 9055, 9055, 6858, + 1209, 9846, 1212, 392, 2599, 1609, 900, 1213,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, 9760, 1748, 1190, 1070,-32768, + 11092,-32768, 11092, 1834, 1215, 10110,-32768, 1203, 1266,-32768, + 470,-32768,-32768,-32768,-32768,-32768, 1551, 10927,-32768, 6081, + 9588, 1765, 1765, 2979,-32768,-32768,-32768,-32768, 1772,-32768, +-32768,-32768, 1009, 9760,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 384,-32768, 607, 413, 441,-32768, 451, + 616, 9760, 1251,-32768, 629, 621, 646, 689, 1794, 1044, +-32768, 61,-32768, 55,-32768,-32768,-32768,-32768,-32768,-32768, + 8963,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1132, 1263, +-32768,-32768,-32768, 6081,-32768,-32768,-32768, 1273,-32768,-32768, + 1235,-32768, 1280,-32768,-32768, 217,-32768,-32768,-32768, 10940, + 11092,-32768, 3610,-32768, 525, 525,-32768,-32768,-32768,-32768, +-32768, 10940, 452, 885, 9760, 1045,-32768, 1281,-32768,-32768, +-32768, 282, 680, 644, 603, 974, 175, 1285,-32768, 1117, + 1279, 525, 6339,-32768,-32768,-32768, 525,-32768, 1237, 470, + 470, 470,-32768, 1238, 132, 10940, 132, 10940,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1260, 1261, 1265, + 1268, 1054,-32768, 11002, 7689, 7322, 1257,-32768, 9760,-32768, +-32768,-32768, 1262, 1267, 1272, 6081,-32768,-32768, 1278, 303, + 852, 852, 1276, 852,-32768,-32768, 10454, 1381, 9588,-32768, + 1283, 1288, 1290,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 132, 1294,-32768, 1292,-32768,-32768, 2997,-32768,-32768, +-32768,-32768,-32768, 11092,-32768,-32768, 1297,-32768,-32768, 169, + 1305,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2320, 2320, + 2539, 2539, 2979,-32768, 1772,-32768, 2686, 11114,-32768,-32768, +-32768, 1311,-32768, 1053,-32768, 9760,-32768, 9760,-32768, 9760, +-32768, 1748,-32768,-32768, 6744, 1357,-32768, 7413,-32768, 9147, + 9147, 6952, 218, 1314, 423,-32768, 7689, 7504,-32768,-32768, + 213, 7689,-32768,-32768,-32768, 9674,-32768,-32768,-32768,-32768, + 1186, 132, 1318,-32768, 1363, 1363, 132, 1320, 9760, 9760, + 4789, 525, 4409, 525, 525, 973, 525, 5170,-32768,-32768, + 8389, 1363,-32768,-32768, 1375,-32768,-32768,-32768, 1324,-32768, + 1335, 9760, 9760, 9760, 9760, 7689,-32768, 1383,-32768,-32768, + 11092,-32768,-32768,-32768, 662, 1272,-32768,-32768,-32768,-32768, +-32768,-32768, 1337,-32768, 1403, 470,-32768,-32768,-32768, 132, +-32768,-32768,-32768,-32768,-32768,-32768, 9760,-32768,-32768, 2320, + 2320,-32768, 2686,-32768,-32768, 1344, 1347, 1354, 1369,-32768, + 835, 174, 1391, 908, 912,-32768,-32768,-32768,-32768,-32768, + 9760, 1405, 1409, 1410, 9325, 495, 1748, 884, 458,-32768, +-32768, 9416, 1469,-32768,-32768,-32768, 1421,-32768, 5273, 10704, + 10873, 6621,-32768,-32768, 1468,-32768,-32768,-32768, 8482,-32768, +-32768, 1378, 856,-32768,-32768,-32768,-32768, 6081,-32768,-32768, + 7689, 1379, 1380, 1589,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 4789, 4789,-32768, 1363, 523, 1093, 9760, +-32768,-32768,-32768, 1045, 1045, 1363, 1363, 742, 1363,-32768, +-32768,-32768, 132, 132,-32768,-32768, 1386, 1387, 1388, 1389, +-32768, 7689, 9760,-32768, 662,-32768,-32768,-32768,-32768, 132, + 1393,-32768,-32768,-32768,-32768, 1369,-32768, 1748,-32768,-32768, +-32768,-32768,-32768,-32768, 706, 706, 1044, 1398, 1413, 6390, +-32768,-32768,-32768,-32768, 1447, 9760, 1449, 1448, 1457, 1971, + 2010,-32768, 1044,-32768,-32768, 1425,-32768,-32768, 1045, 871, +-32768, 883, 1045, 9502, 909, 313,-32768,-32768,-32768,-32768, +-32768,-32768, 497,-32768,-32768,-32768,-32768,-32768, 132, 132, +-32768,-32768,-32768, 9760, 9760, 4789, 525, 525,-32768,-32768, +-32768, 6483,-32768,-32768, 132, 132,-32768,-32768,-32768,-32768, +-32768, 1408,-32768,-32768,-32768, 1428,-32768,-32768,-32768, 9674, +-32768,-32768,-32768, 1508, 8778, 5575, 9674, 9760,-32768, 8590, +-32768, 1467,-32768,-32768, 1478,-32768, 1457, 1971,-32768,-32768, + 726,-32768,-32768, 10196, 10196, 7598,-32768,-32768, 1044,-32768, +-32768, 4789, 4789,-32768, 1363, 1363,-32768, 8235,-32768,-32768, +-32768,-32768,-32768, 10994,-32768,-32768, 1427, 995, 5433, 1044, + 8684,-32768,-32768, 61,-32768,-32768, 1473, 1430, 11070, 8590, +-32768,-32768,-32768,-32768, 1369, 104,-32768,-32768,-32768,-32768, +-32768, 1434, 11024, 1442, 1435, 1438, 1044,-32768, 1045,-32768, +-32768,-32768,-32768, 731,-32768, 7871,-32768,-32768,-32768,-32768, + 1369, 1531, 1490,-32768,-32768,-32768, 493, 384,-32768,-32768, +-32768, 525, 61,-32768, 9760, 1491,-32768, 1497,-32768, 1044, + 8590, 1470, 746, 1502,-32768,-32768, 100,-32768, 1498,-32768, + 1456,-32768,-32768,-32768,-32768, 9760, 1531, 1514, 1531,-32768, + 117,-32768,-32768,-32768, 7962, 1480, 767,-32768,-32768,-32768, + 7689, 1487,-32768, 1565, 1521,-32768,-32768,-32768, 312,-32768, + 8684, 1586, 1543,-32768,-32768,-32768, 1605, 1606,-32768 }; static const short yypgoto[] = {-32768, - 1624,-32768, -304, 1456, -364, 75, 2, 1623,-32768, 1593, --32768,-32768, 315,-32768, 373,-32768, 507,-32768, 206, 942, - 58, 24,-32768,-32768, -669,-32768,-32768, 657, 59, 1469, - 1197, 1478, -719, 111, -173, 29, 55,-32768,-32768,-32768, --32768,-32768, 1125,-32768,-32768,-32768,-32768,-32768,-32768, 466, - 1903,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1568, -526, 6178, 1422, -58, -599, -235, -44, - 1533, -547,-32768, 388,-32768, 260,-32768, -1362,-32768, -1307, - 52,-32768, 1442, 1361, -254, 403, -557,-32768, -868, 3479, - -125, 1528, 4472, 1379, -332, -52, -76, 427, -140, -66, - 135,-32768,-32768,-32768, -344,-32768, -159,-32768,-32768, -1236, - -16, -329, 1934, 530, -150, -166, 78, 50, -206, -4, - -145, -165, -171, 32, -11, 357,-32768, -257,-32768,-32768, --32768,-32768,-32768, 734, 1247, -45,-32768, 716,-32768,-32768, - -765, -399, 940,-32768,-32768,-32768,-32768,-32768, 218,-32768, --32768,-32768,-32768,-32768, 729, -377,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 1447,-32768, 335, 473,-32768,-32768, --32768,-32768, 885, -479,-32768,-32768,-32768,-32768,-32768,-32768, - 1172,-32768, 624, 1030, 745, 1086, 2837, 14, 54, -461, - 1510, 2756, -686,-32768, 13,-32768, 645, 20, -142, 271, - -105, 5046, 1365,-32768, 5682, 2642, 1651, -19, -113,-32768, - 1590, -54,-32768, 5135, 3513, -359,-32768, 1597,-32768,-32768, - 381,-32768,-32768, 527, 138, -429,-32768,-32768,-32768,-32768, - -1369,-32768, -1238, -1389,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 156,-32768, --32768,-32768,-32768,-32768, 188, -1311,-32768,-32768, -51,-32768, --32768,-32768,-32768, -1385, 140,-32768, 144,-32768, -606, -580, - 710,-32768,-32768,-32768,-32768, -393,-32768, -390, -333,-32768, - 1007, 397,-32768, 83,-32768, -232 + 1618,-32768, -335, 1452, -377, -1, 10, 1621,-32768, 1595, +-32768,-32768, 205,-32768, 232,-32768, 275,-32768, 221, 978, + 45, 7,-32768,-32768, -661,-32768,-32768, 704, 53, 1486, + 1220, 1499, -706, 111, -173, 4, 72,-32768,-32768,-32768, +-32768,-32768, 892,-32768,-32768,-32768,-32768,-32768,-32768, 518, + 344,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1593, -653, 5642, 1451, -65, -578, -210, 329, + 1554, -529,-32768, 583,-32768, 305,-32768, -1379,-32768, -1145, + 83,-32768, 2023, 910, -286, 456, -538,-32768, -811, 3215, + -101, 1343, 4049, 1414, -318, -60, -77, 1310, -137, -47, + 106,-32768,-32768,-32768, -333,-32768, -153,-32768,-32768, -1238, + -15, -346, 3891, 113, 1282, -158, 48, 23, -199, -4, + -163, -171, -169, -16, 24, -3,-32768, -220,-32768,-32768, +-32768,-32768,-32768, 840, 1206, 54,-32768, 784,-32768,-32768, + -850, -443, 993,-32768,-32768,-32768,-32768,-32768, 81,-32768, +-32768,-32768,-32768,-32768,-32768, 792, -362,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, 1474,-32768, 385, 517,-32768, +-32768,-32768, 667, -708,-32768,-32768,-32768,-32768,-32768,-32768, + 947,-32768, 503, 1077, 807, 1134, 2728, 95, 25, -459, + 1534, 1793, -689,-32768, 6,-32768, 941, 238, -58, 545, + -106, 4549, 1390,-32768, 5209, 2423, 1969, -11, -113,-32768, + 1613, -53,-32768, 4653, 3236, -112,-32768, 3011,-32768,-32768, + 432,-32768,-32768, 569, 141, -387,-32768,-32768,-32768,-32768, + -1389,-32768, -1234, -1400,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 160,-32768, +-32768,-32768,-32768,-32768, 215, -1354,-32768,-32768, -41,-32768, +-32768,-32768,-32768, -1402, 151,-32768, 157,-32768, -707, -598, + 762,-32768,-32768,-32768,-32768, -396,-32768, -395, -397,-32768, + 1243, 434,-32768, 46,-32768, -226 }; -#define YYLAST 11203 +#define YYLAST 11231 static const short yytable[] = { 59, - 443, 435, 487, 122, 445, 36, 420, 423, 711, 444, - 658, 712, 392, 256, 1019, 432, 224, 72, 532, 648, - 771, 253, 657, 76, 709, 738, 103, 42, 400, 1118, - 59, 784, 298, 786, 182, 857, 36, 59, 196, 991, - 525, 816, 486, 141, 146, 356, 1016, 357, 72, 554, - 557, 494, 209, 58, 76, 72, 398, 399, 42, 926, - 742, 76, 896, 949, 249, 42, 926, 247, 688, 391, - 174, 492, 495, 177, 201, 727, 213, 256, 35, 296, - 397, 57, 587, 349, 58, 349, 626, 349, 1478, 544, - 1428, 58, 408, 1056, 224, 260, 1530, 297, 1443, 170, - 171, 1534, 349, 349, 1027, 1446, 899, 190, 163, 35, - 224, 208, 57, 626, 626, 467, 169, 998, 364, 176, - 662, 663, 661, 900, 1600, 1535, 89, 308, 1193, 977, - 91, 406, 349, 295, 349, -1, 256, 1567, 1558, 580, - 1544, 581, 544, 26, 813, 978, 90, 855, 164, 72, - 92, 1028, 901, 1387, 1029, 407, -828, 1555, 196, 410, - 59, 468, 419, 422, 59, 735, 224, 155, -2, 780, - 1601, 209, 717, 718, 224, 1059, 452, 1589, 72, 928, - 558, 559, 72, 1568, 76, 58, 517, 1064, 76, 997, - 403, 224, 42, 440, 201, 213, 567, 174, 1581, 568, - 177, 490, 569, 539, 1194, 579, 470, 472, 190, 584, - 724, 1004, 1597, 405, 58, 1080, 814, 625, 58, -302, - 1612, 1085, 736, 1560, 15, 842, 170, 171, -415, 1199, - 208, 1558, 776, -356, -356, 1065, 88, 453, 453, 1027, - 59, 201, 57, 169, 789, 15, 176, 88, 535, -415, - 1532, 705, 1538, 190, 1478, -625, -415, -415, 72, 178, - 260, -415, 86, 93, 524, -302, -302, 1593, 820, 632, - 454, 454, 300, 394, 395, 10, 221, 790, -415, 1200, - -295, 791, -415, 155, 155, 155, 1028, 696, 732, 1029, - 623, 374, 247, 631, 58, 1225, 1226, 375, 1565, 514, - 759, -625, -625, 158, 1220, 1020, 1166, 116, 117, 118, - 21, 87, 1247, 664, 792, 658, -625, 705, 38, 511, - 774, 976, 519, 26, 349, 27, 319, -415, 1144, 155, - 691, 420, 423, 817, 1221, 856, 963, 296, 94, 1117, - 492, 495, 8, 9, 1598, 247, 12, 13, 492, 38, - 1292, 107, 14, 349, 667, 297, 108, 32, 926, 583, - 119, 120, 711, 1002, 1003, 1038, 16, 260, 17, 1353, - -583, 109, 72, 138, 20, 580, 39, 581, 668, 495, - 1404, 1404, 818, 23, 967, 964, 178, 714, 127, 128, - 1622, 295, 26, 139, 130, 131, 532, 708, 495, 1293, - 209, 1388, 926, 135, 224, 215, 216, 39, 58, 137, - -304, 14, 533, 665, 162, 710, -583, 189, 1354, 158, - 158, 158, 648, 201, 1151, 699, 221, 1154, 950, 1405, - 1509, 897, 1169, 20, 221, 221, 405, 59, 26, 1623, - 130, 131, 23, 161, 636, 567, 568, 224, 1215, 926, - 179, 707, 517, 778, 517, 72, -304, -304, 534, 153, - 517, 76, 517, 752, 221, 158, 1367, 183, 1180, 1181, - 729, -298, 610, 177, 1146, 1373, 1374, 653, 1375, 793, - 1254, 710, 1256, 610, 777, 831, 18, 763, 764, 705, - 841, 58, 244, 349, 366, 370, 705, 636, 1016, 201, - 1119, 799, 787, 788, 459, 838, 59, 201, 59, -365, - 40, 15, 819, 221, 209, 914, 59, 707, 611, 176, - 1474, 460, 187, 654, 72, 794, 72, 377, 916, 611, - 524, 832, 524, 55, 72, 1056, 188, 805, 812, 129, - 524, 40, -365, 841, -295, 349, -365, 90, 349, 26, - 461, 349, 1423, 1001, 299, 349, 847, 847, 847, 847, - 58, 915, 58, 138, 55, 514, 221, 514, 349, 623, - 58, 175, 798, 808, 917, 514, 421, 424, 349, -365, - 360, 349, 1032, 711, 696, 511, 712, 511, 519, 1192, - 519, 973, -583, 926, 378, 511, 362, 816, 519, 709, - 658, 372, 1093, 376, -366, 705, 15, 380, 155, 155, - 155, -120, 657, 15, 92, 636, 296, 381, -143, 401, - 972, 153, 926, 221, -295, 1289, 1290, 918, 492, 1033, - 137, 705, 1034, 1614, 297, 708, 934, -366, -583, 482, - 544, -366, 752, 705, -120, 425, 1368, 970, -120, 952, - 920, 922, 189, 710, 138, 95, 110, 111, 88, 178, - 710, 841, -144, 260, 1278, 404, 95, 414, 415, 433, - 295, 705, 1056, 919, -366, 147, 1273, 705, 122, 1615, - 240, -120, 935, 936, 241, 201, 587, 349, 984, 707, - 989, 990, 1513, 1514, 55, 1042, 707, 899, 175, -620, - -118, 209, 15, 221, 221, 247, 1262, 1264, 112, 113, - 303, 221, 661, 1017, 900, 1216, 574, 1218, 1186, 98, - 113, 1222, 215, 216, 201, 987, 201, 201, 14, 214, - 215, 216, 1420, -118, 1165, 990, 14, -118, -7, 256, - 164, 1043, 221, 901, 158, 158, 158, 253, 1188, 447, - 20, 708, 1190, 18, 1426, 576, 517, 1480, 20, 23, - 1576, 221, 1274, 1275, 1187, 1277, 137, 23, 799, 710, - -118, 201, 8, 537, 518, 1036, 448, 708, 1081, 1082, - 451, 1083, 715, 1127, 705, 411, 1068, 463, 705, 708, - 413, 842, 1070, 1071, 1189, 710, 1068, 1073, 1191, 1264, - 1071, 464, 432, 1481, 805, 707, 1577, 710, 1349, 1351, - 59, 567, 568, 1355, 127, 128, 363, 708, 349, 349, - 379, 349, 498, 708, 130, 131, 705, 503, 72, 1182, - 527, 707, 705, 540, 524, 710, 769, 91, 147, 798, - 137, 710, 542, 707, 775, 1249, 1250, 1251, 538, 1590, - 15, 541, 746, 781, -415, 421, 722, 92, 363, 561, - 91, 1385, 222, 223, 58, 543, 130, 131, 551, 514, - 562, 707, 560, 95, 110, 111, 528, 707, 300, 705, - 92, 10, -415, -415, 221, 1359, 1360, 1361, 666, 511, - 538, 349, 519, 829, 222, 446, 1121, 224, 563, 782, - 91, 421, 424, 536, 392, 564, 18, 583, 7, 8, - 250, 10, 95, 96, 97, 449, 21, 1090, 1091, 1092, - 92, 256, 480, 481, 847, 221, 112, 113, 114, 626, - 708, 426, 427, 675, 752, 672, 705, 676, 705, 830, - 574, 488, 489, 574, 678, 428, 21, 844, 710, 679, - 920, 922, 710, 251, 692, 429, 1449, 260, 480, 730, - 574, 27, 28, 32, 680, 98, 99, 693, 430, 221, - 90, 175, 708, 574, 847, 349, 92, 871, 708, 576, - 721, 1484, 576, -6, 707, 252, 1472, 747, 707, 765, - 710, 221, 725, 32, 1170, 1171, 710, 1501, 421, 852, - 699, 770, 1279, 8, 9, 894, 842, 15, 382, 383, - 384, 910, 576, 539, 823, 127, 128, 824, 517, 89, - 535, 488, 731, 705, 825, 752, 707, 1066, 826, 420, - 423, 833, 707, 300, 394, 395, 10, 834, 847, 90, - 518, 851, 785, 710, 853, 1392, 854, 363, 736, 89, - 518, 911, 705, 385, 856, 130, 131, -141, 420, 423, - 913, 386, 387, 719, 221, 26, 720, 130, 131, 90, - 927, 21, 59, 942, 929, 567, 568, 955, 723, 707, - 1484, 903, 708, -183, 708, 1281, 27, 319, 1240, 931, - 72, 904, 956, 1240, 1402, 1403, 524, 1484, 137, -183, - 710, -183, 710, 127, 128, 905, 8, 9, 965, 256, - 608, 609, 847, 91, 411, 969, 413, 155, 32, 480, - 1503, -142, 1573, 127, 128, 349, 58, 711, 966, 536, - 1551, 514, 971, 92, 488, 1504, 707, 20, 707, 95, - 96, 97, 979, 225, 226, 227, 980, 363, 480, 1508, - 363, 511, 1484, -298, 519, 130, 131, 993, 130, 131, - 738, 999, 453, 1436, 155, 1017, 1000, 18, 1434, 708, - 1439, 1024, 228, 26, 1025, 130, 131, 8, 9, 252, - 89, -579, 252, 1048, -579, 1295, 1296, 710, 1369, 903, - 26, 1336, 98, 99, 229, 842, 1026, 1328, 752, 904, - 90, 579, 1031, -827, 7, 8, 9, 10, 1040, 72, - 13, 1616, 349, 905, 1295, 1296, 710, 89, 91, 931, - 1044, 1045, 1075, 707, 1069, 1407, 1408, 1371, 1372, 130, - 131, -579, 18, -579, -579, 1074, -579, 90, 92, 230, - 231, 232, 21, 1094, 1099, 58, -52, -579, 636, -579, - 1095, -52, 707, 158, 1096, 26, 1097, 27, 28, 1098, - 1100, 498, -52, 1101, 1102, -579, -579, 942, 127, 128, - 1327, 981, -140, 1335, 1103, 1104, 140, 140, 1106, 156, - -579, 982, 603, 604, 605, 606, 607, 608, 609, 32, - 1107, 639, 1124, 1113, 983, 641, 1110, 1126, 1109, 1111, - 158, 1112, 1129, 212, 1130, 220, 155, 155, 155, 1128, - 1131, 237, 1164, 7, 127, 128, 10, 1433, 544, 1433, - 130, 131, 1336, 1137, 1139, 1138, 574, 1147, 1148, 1145, - 209, 1150, 1336, 1157, 1160, 155, 155, 155, 1328, 1336, - 72, 1163, 1543, 1185, 518, 1328, 1208, 1214, 847, 1217, - 72, 21, 1219, 201, 1437, 201, 1224, 72, 251, 95, - 110, 111, 420, 423, 421, 852, 27, 28, 460, 1228, - 705, 8, 9, 1248, 1252, 1570, 58, 127, 128, 567, - 568, 1257, 1258, 1259, -304, 1260, 58, 140, 1265, 1267, - 252, 1280, 140, 58, 1268, 156, 156, 156, 32, -304, - 1291, 1327, 1269, -304, 1335, 1272, 1276, 719, 720, 153, - 723, 1327, 112, 113, 1335, 363, 1282, 129, 1327, -304, - 1283, 1335, 212, 130, 131, 490, 1284, 26, 450, 130, - 131, -304, -304, 1287, -304, 1288, -304, 1294, 1299, 140, - 140, 156, 158, 158, 158, 1193, 1348, 538, -662, 1379, - 214, 215, 216, 1380, 1386, 220, 1205, 14, 1390, 1396, - 95, 96, 97, 493, 220, -304, -304, 1391, 1406, 1397, - 1398, 158, 158, 158, 18, 1399, 1525, 1415, 1416, 20, - -304, 1336, 1336, 1525, 1417, 1429, 1336, 1328, 23, 1431, - 1444, 375, 1328, 1447, 297, 1005, 1006, 1007, 1450, 72, - 72, 297, 349, 953, 72, 140, 1451, 1468, 1469, 1554, - 1047, 26, 1470, 98, 99, 100, 708, 1471, 763, 764, - 1061, 1062, 1476, 1336, 1487, 1488, 1492, 127, 1243, 1328, - 295, 1494, 1336, 1495, 710, 58, 58, 295, 1328, 1008, - 58, 72, 1574, 1502, 1520, 201, 26, 1076, 1009, 1010, - 72, 1521, 1078, 221, 1529, 1539, 1525, 1540, 1545, 1547, - 1327, 1327, 1553, 1335, 1335, 1327, 1562, 1563, 1335, 1571, - 707, 363, 155, 1572, 297, 156, 1584, 58, 1336, 130, - 131, 1588, 1595, 1599, 1328, 1011, 58, 1618, 1596, 1602, - 574, 605, 606, 607, 608, 609, 72, 1604, 1609, 421, - 424, 1605, 1327, 538, 1357, 1335, 518, 1613, 1617, 612, - 295, 1327, 1620, 1625, 1335, 339, 1336, 339, 1626, 339, - 1628, 1629, 1328, 1, 5, 442, 147, 160, 421, 1347, - 1499, 968, 58, 1167, 72, 127, 128, 441, 728, 155, - 155, 155, 439, 809, 1381, 1382, 1383, 1384, 613, 614, - 1300, 212, 220, 615, 616, 617, 618, 1327, 1569, 500, - 1335, 359, 127, 128, 339, 140, 339, 13, 140, 1483, - 58, 409, 1624, 1389, 156, 156, 156, 550, 1159, 1023, - 140, 7, 8, 9, 10, 26, 1158, 130, 131, 505, - 811, 127, 128, 1452, 1362, 1327, 535, 1245, 1335, 1077, - 1156, 545, 958, 127, 128, 636, 898, 1419, 158, 483, - 633, 546, 26, 390, 130, 131, 140, 1442, 140, 21, - 156, 156, 156, 1345, 1591, 450, 251, 1603, 637, 1566, - 258, 140, 493, 220, 27, 28, 450, 0, 638, 1608, - 493, 26, 221, 130, 131, 1610, 636, 1207, 639, 1448, - 0, 640, 641, 26, 258, 130, 131, 545, 252, 95, - 110, 111, 529, 0, 0, 212, 32, 546, 0, 637, - 0, 0, 450, 0, 1473, 158, 158, 158, 1046, 638, - 0, 0, 0, 258, 0, 0, 0, 0, 0, 639, - 0, 0, 640, 641, 258, 0, 0, 21, 0, 156, - 1231, 1232, 156, 1241, 1242, 0, 1244, 1493, 116, 1006, - 1007, 0, 112, 113, 411, 413, 0, 156, 156, 156, - 0, 744, 536, 0, 0, 0, 0, 1079, 750, 0, - 0, 0, 156, 1084, 0, 0, 506, 0, 7, 8, - 507, 10, 167, 12, 13, 0, 0, 565, 0, 14, - 116, 1006, 1007, 258, 95, 110, 111, 0, 225, 226, - 227, 119, 120, 16, 1205, 17, 18, 19, 1523, 0, - 0, 20, 0, 0, 871, 1523, 21, 1050, 0, 0, - 23, 508, 18, 168, 0, 339, 0, 228, 258, 26, - 0, 27, 28, 943, 574, 509, 0, 510, 0, 0, - 0, 26, 743, 119, 120, 30, 0, 112, 113, 743, - 0, 839, 258, 220, 0, 31, 101, 0, 0, 0, - 0, 0, 0, 32, 115, 0, 0, 0, 33, 95, - 110, 111, 421, 1347, 0, 0, 1140, 0, 1141, 719, - 720, 0, 723, 0, 645, 649, 652, 0, 1523, 0, - 0, 0, 212, 0, 220, 237, 0, 0, 0, 0, - 0, 0, 1365, 1366, 1594, 0, 0, 233, 95, 110, - 111, 892, 681, 682, 683, 0, 0, 893, 7, 127, - 128, 10, 112, 1496, 13, 0, 1607, 741, 745, 95, - 110, 111, 743, 871, 0, 745, 0, 0, 220, 0, - 655, 8, 9, 10, 258, 0, 18, 0, 0, 140, - 140, 0, 140, 0, 947, 0, 21, 0, 0, 0, - 493, 112, 113, 450, 0, 339, 388, 0, 0, 26, - 0, 27, 28, 450, 450, 308, 656, 783, 21, 0, - 369, 371, 112, 1498, 0, 30, 116, 117, 118, 0, - 416, 26, 743, 130, 131, 31, 0, 0, 743, 0, - 450, 0, 258, 32, 1223, 450, 0, 0, 33, 1227, - 0, 0, 0, 0, 0, 0, 0, 339, 745, 0, - 0, 0, 0, 0, 0, 0, 0, 156, 743, 0, - 0, 0, 1253, 0, 1255, 743, 0, 26, 0, 119, - 120, 0, 0, 1457, 1458, 1459, 0, 0, 0, 0, - 339, 0, 741, 0, 0, 868, 869, 0, 873, 874, - 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, - 885, 886, 887, 888, 889, 890, 891, 0, 745, 0, - 499, 501, 0, 0, 745, 0, 0, 0, 0, 1286, - 0, 0, 258, 530, 7, 8, 9, 10, 214, 215, - 216, 300, 8, 9, 10, 14, 0, 0, 0, 0, - 0, 95, 96, 97, 745, 0, 0, 0, 0, 0, - 0, 745, 18, 156, 156, 943, 0, 20, 1511, 1512, - 0, 0, 21, 0, 0, 0, 23, 258, 636, 21, - 382, 383, 384, 960, 962, 26, 251, 27, 28, 0, - 0, 214, 215, 216, 27, 319, 363, 0, 14, 339, - 0, 981, 237, 566, 98, 99, 0, 140, 140, 943, - 0, 982, 0, 921, 923, 18, 0, 0, 252, 32, - 20, 639, 0, 0, 983, 641, 32, 0, 0, 23, - 0, 26, 0, 386, 387, 1114, 1115, 491, 215, 216, - 0, 1120, 578, 0, 14, 674, 0, 741, 0, 0, - 0, 0, 0, 0, 684, 1132, 943, 1133, 0, 1134, - 0, 18, 743, 0, 258, 0, 20, 674, 127, 128, - 0, 1393, 215, 216, 0, 23, 0, 0, 14, 0, - 258, 986, 0, 645, 649, 0, 652, 1592, 7, 8, - 9, 10, 0, 450, 450, 0, 450, 450, 0, 450, - 20, 0, 0, 0, 1067, 1162, 0, 0, 0, 23, - 0, 636, 0, 0, 0, 704, 743, 743, 26, 0, - 130, 131, 743, 0, 0, 0, 21, 0, 649, 0, - 339, 339, 636, 339, 637, 0, 743, 0, 743, 26, - 743, 27, 28, 0, 638, 0, 0, 0, 745, 1453, - 1454, 1183, 0, 0, 639, 981, 0, 647, 641, 0, - 0, 0, 0, 1464, 1465, 982, 0, 116, 1006, 1007, - 1105, 1049, 0, 32, 0, 639, 0, 0, 983, 641, - 1475, 751, 0, 0, 779, 0, 743, 0, 0, 0, - 0, 0, 0, 0, 1050, 0, 140, 140, 156, 156, - 943, 1051, 745, 745, 140, 0, 0, 741, 745, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 26, 0, - 119, 120, 745, 649, 745, 0, 745, 156, 156, 943, - 0, 0, 743, 0, 0, 0, 258, 596, 597, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 743, 1518, 1519, 0, 450, 450, 0, 0, 0, - 0, 0, 1155, 0, 0, 0, 840, 864, 0, 843, - 0, 0, 745, 845, 846, 848, 849, 850, 0, 7, - 8, 9, 10, 0, 0, 246, 578, 339, 0, 0, - 300, 394, 395, 10, 0, 0, 1135, 0, 1136, 867, - 1179, 0, 0, 0, 0, 0, 0, 18, 0, 1142, - 0, 912, 0, 921, 923, 0, 0, 21, 745, 0, - 0, 140, 140, 636, 140, 0, 0, 1301, 21, 1302, - 26, 1303, 27, 28, 0, 251, 0, 745, 0, 7, - 8, 9, 10, 27, 319, 13, 981, 627, 0, 300, - 394, 395, 10, 924, 628, 0, 982, 921, 923, 0, - 924, 212, 220, 0, 32, 0, 639, 18, 0, 983, - 641, 0, 1229, 1230, 258, 32, 258, 21, 0, 0, - 975, 0, 0, 636, 0, 0, 0, 21, 0, 0, - 26, 992, 27, 28, 629, 0, 450, 450, 450, 0, - 26, 0, 27, 319, 0, 0, 1172, 0, 743, 0, - 743, 0, 743, 741, 741, 0, 1173, 1266, 258, 0, - 0, 0, 864, 0, 32, 80, 639, 0, 0, 1174, - 641, 0, 1395, 0, 630, 104, 0, 339, 0, 0, - 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, - 0, 144, 144, 0, 144, 0, 80, 0, 0, 0, - 0, 0, 0, 80, 156, 0, 0, 0, 0, 704, - 0, 0, 0, 0, 0, 0, 203, 0, 80, 0, - 0, 450, 450, 0, 0, 0, 238, 0, 0, 0, - 0, 0, 0, 104, 745, 751, 745, 0, 745, 0, - 0, 0, 258, 0, 262, 104, 741, 751, 0, 0, - 0, 0, 0, 743, 0, 741, 741, 0, 0, 0, - 741, 0, 0, 0, 0, 0, 0, 104, 0, 0, - 0, 156, 156, 156, 0, 751, 0, 0, 0, 0, - 0, 751, 1370, 0, 0, 0, 1135, 1136, 921, 923, - 300, 8, 9, 10, 1142, 133, 0, 80, 0, 0, - 0, 144, 144, 0, 0, 0, 412, 144, 741, 0, - 144, 144, 144, 0, 0, 0, 0, 921, 923, 258, - 7, 127, 128, 10, 0, 0, 80, 0, 21, 0, - 80, 0, 0, 0, 0, 251, 203, 80, 0, 745, - 450, 0, 0, 27, 319, 0, 258, 0, 18, 1116, - 0, 0, 0, 0, 203, 203, 203, 0, 21, 0, - 0, 0, 0, 1414, 0, 0, 0, 538, 0, 0, - 0, 26, 0, 27, 28, 32, 127, 128, 0, 0, - 215, 216, 867, 203, 0, 684, 14, 149, 751, 0, - 0, 0, 924, 0, 0, 0, 0, 150, 975, 743, - 502, 0, 0, 741, 0, 32, 80, 0, 20, 104, - 151, 1135, 1136, 0, 1142, 1455, 1456, 23, 0, 636, - 144, 0, 0, 0, 0, 0, 26, 0, 130, 131, - 704, 0, 1168, 741, 0, 0, 924, 0, 259, 0, - 0, 0, 637, 0, 0, 0, 0, 0, 127, 128, - 0, 0, 638, 246, 0, 0, 0, 0, 104, 547, - 0, 0, 639, 0, 0, 640, 641, 0, 471, 473, - 477, 0, 0, 0, 7, 127, 128, 10, 0, 0, - 246, 0, 0, 924, 0, 745, 0, 0, 0, 0, - 0, 636, 0, 0, 0, 0, 1210, 0, 26, 0, - 130, 131, 18, 104, 0, 0, 0, 634, 1516, 547, - 547, 650, 21, 0, 637, 434, 0, 0, 0, 0, - 80, 0, 0, 0, 638, 26, 0, 27, 28, 1263, - 0, 0, 0, 0, 639, 0, 1536, 640, 641, 0, - 751, 30, 751, 0, 0, 0, 0, 469, 0, 0, - 0, 31, 0, 0, 133, 795, 796, 9, 10, 32, - 485, 0, 0, 104, 33, 203, 104, 0, 0, 0, - 1271, 0, 0, 0, 0, 0, 127, 128, 0, 0, - 144, 535, 0, 144, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 21, 0, 144, 0, 0, 0, 0, - 0, 0, 0, 80, 0, 0, 26, 0, 27, 28, - 7, 8, 9, 10, 797, 1305, 535, 0, 0, 636, - 0, 1263, 193, 0, 0, 0, 26, 924, 130, 131, - 0, 203, 194, 203, 0, 203, 203, 203, 18, 0, - 32, 203, 637, 0, 0, 195, 203, 0, 21, 203, - 0, 0, 638, 0, 636, 0, 924, 0, 741, 0, - 0, 26, 639, 27, 28, 640, 641, 0, 0, 133, - 1358, 0, 80, 0, 80, 0, 0, 981, 0, 806, - 80, 0, 80, 0, 0, 0, 166, 982, 7, 8, - 9, 10, 167, 12, 13, 32, 0, 639, 0, 14, - 983, 641, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, - 0, 20, 104, 104, 104, 104, 21, 0, 0, 0, - 23, 0, 0, 168, 0, 0, 0, 0, 0, 26, - 0, 27, 28, 1421, 1422, 761, 0, 762, 0, 471, - 473, 477, 0, 0, 0, 30, 0, 0, 0, 0, - 773, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, - 0, 0, 104, 34, 547, 0, 0, 0, 0, 0, - 0, 0, 0, 804, 0, 0, 634, 0, 547, 547, - 0, 650, 0, 0, 0, 0, 1210, 0, 944, 8, - 9, 0, 946, 12, 246, 0, 0, 0, 0, 14, - 0, 0, 0, 0, 1479, 0, 0, 203, 0, 0, - 0, 0, 0, 16, 766, 17, 0, 0, 0, 772, - 0, 20, 0, 0, 0, 0, 1497, 1500, 0, 0, - 23, 133, 636, 0, 0, 0, 0, 0, 133, 26, - 0, 130, 131, 0, 0, 0, 203, 988, 203, 203, - 238, 650, 0, 0, 0, 637, 0, 0, 0, 0, - 0, 0, 0, 821, 0, 638, 0, 0, 0, 827, - 0, 0, 0, 0, 0, 639, 0, 0, 640, 641, - 0, 835, 836, 0, 837, 0, 0, 0, 0, 300, - 8, 9, 10, 203, 0, 0, 0, 988, 0, 0, - 0, 1541, 0, 0, 203, 203, 0, 203, 7, 8, - 9, 10, 214, 215, 216, 0, 0, 0, 0, 14, - 0, 0, 0, 104, 0, 0, 806, 21, 0, 0, - 0, 0, 0, 0, 251, 104, 18, 0, 0, 0, - 578, 20, 27, 319, 0, 0, 21, 0, 1072, 0, - 23, 0, 636, 0, 704, 0, 80, 0, 0, 26, - 0, 27, 28, 104, 0, 0, 0, 0, 0, 104, - 0, 0, 0, 0, 32, 981, 547, 547, 547, 932, - 933, 0, 0, 0, 932, 982, 0, 0, 547, 0, - 0, 0, 0, 32, 0, 639, 0, 0, 1030, 641, - 0, 0, 0, 0, 0, 8, 9, 0, 167, 12, - 13, 0, 0, 749, 0, 14, 83, 0, 761, 762, - 0, 773, 0, 0, 0, 0, 106, 0, 0, 16, - 0, 17, 18, 0, 0, 126, 134, 20, 0, 0, - 804, 0, 145, 145, 0, 145, 23, 83, 636, 0, - 0, 0, 0, 0, 83, 26, 0, 130, 131, 0, - 0, 547, 0, 547, 0, 0, 0, 145, 0, 83, - 104, 637, 0, 0, 547, 0, 104, 239, 944, 944, - 944, 638, 0, 0, 248, 0, 1149, 300, 127, 128, - 10, 639, 0, 0, 640, 641, 248, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 127, 128, 10, - 0, 0, 13, 0, 0, 0, 0, 1058, 104, 0, - 104, 0, 203, 203, 1176, 21, 0, 0, 0, 1063, - 0, 0, 251, 0, 18, 0, 0, 0, 0, 0, - 27, 319, 0, 0, 21, 0, 0, 0, 83, 0, - 0, 0, 145, 145, 0, 0, 0, 26, 145, 27, - 28, 145, 145, 145, 0, 1086, 0, 1088, 0, 0, - 0, 1176, 32, 149, 0, 0, 0, 83, 0, 0, - 0, 83, 0, 150, 104, 0, 0, 145, 83, 0, - 0, 32, 0, 0, 0, 0, 151, 0, 0, 0, - 0, 0, 0, 0, 0, 145, 145, 145, 0, 0, - 203, 0, 0, 0, 0, 144, 0, 0, 80, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, - 104, 0, 0, 0, 145, 0, 471, 473, 477, 1122, - 1123, 0, 1125, 8, 9, 0, 0, 12, 13, 0, - 8, 9, 0, 14, 12, 246, 0, 83, 104, 0, - 14, 0, 0, 547, 547, 0, 547, 16, 0, 17, - 1143, 145, 0, 0, 16, 20, 17, 0, 0, 0, - 0, 0, 20, 0, 23, 477, 0, 0, 0, 0, - 0, 23, 0, 26, 0, 130, 131, 619, 0, 0, - 26, 0, 130, 131, 0, 0, 0, 0, 0, 248, - 145, 203, 203, 203, 203, 1176, 0, 0, 0, 203, - 0, 1178, 0, 0, 1239, 0, 642, 642, 642, 0, - 0, 0, 620, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1176, 1176, 1176, 7, 8, 9, 10, 167, - 12, 13, 0, 0, 248, 0, 14, 0, 635, 0, - 145, 145, 651, 0, 0, 0, 0, 660, 0, 0, - 16, 83, 17, 18, 19, 0, 0, 0, 20, 0, - 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, - 168, 0, 0, 0, 0, 0, 26, 0, 27, 28, - 0, 0, 0, 0, 0, 697, 0, 0, 0, 0, - 0, 0, 30, 0, 248, 0, 145, 248, 0, 0, - 0, 0, 31, 0, 0, 761, 762, 471, 473, 477, - 32, 145, 0, 773, 145, 33, 203, 203, 0, 203, - 34, 0, 7, 8, 9, 10, 145, 0, 13, 0, - 0, 0, 0, 0, 83, 0, 471, 473, 477, 0, + 442, 629, 35, 443, 692, 693, 444, 434, 980, 486, + 42, 122, 391, 36, 252, 723, 535, 538, 431, 103, + 639, 752, 887, 513, 977, 177, 58, 399, 952, 887, + 59, 1467, 255, 35, 818, 638, 669, 59, 690, 196, + 169, 42, 297, 958, 36, 174, 506, 1097, 42, 568, + 485, 57, 209, 491, 494, 397, 398, 58, 1022, 493, + 1024, 708, 857, 1414, 58, 910, 719, 246, 1054, 182, + 390, 1017, 396, 1527, 1523, 1059, 607, 1429, 190, 295, + 607, 1064, 57, 348, 1432, 348, 170, 348, 259, 176, + 419, 422, 451, 1172, 171, 525, 255, 1528, 72, 248, + 1600, 86, 348, 348, 761, 591, 294, 924, -1, 1537, + 138, 363, 1051, 1178, 607, 224, 55, 716, -144, 959, + 1553, 938, 178, 88, 141, 146, 89, 642, 208, 72, + 1550, 405, 348, -2, 348, 988, 72, 939, 155, 221, + 516, 163, 589, 590, 643, 644, 90, 55, 525, -356, + 87, 592, 177, 452, 175, 255, 925, -356, 58, 196, + 59, 452, 889, 1179, 59, 1562, -295, 169, 439, 1173, + 816, 209, 174, 705, 717, 42, 1579, 965, 296, 190, + 1055, 164, 989, 404, 1052, 990, 453, 58, 1123, 803, + 1594, 58, 740, 224, 453, 520, 698, 699, 8, 518, + 466, 15, 1612, 539, 540, -415, 1467, 402, 38, 224, + 988, 1563, 57, 170, -143, 93, 176, 8, 9, 548, + 1553, 171, 549, 1199, 190, 550, 137, 1267, 560, 1056, + 72, 817, 565, 1390, -415, 39, 489, 1525, -415, 38, + 606, 76, 362, 418, 421, 1531, 467, 208, 403, 178, + 130, 131, 259, 1200, 155, 155, 155, 989, 1130, 72, + 990, 1133, -828, 72, -302, 224, 39, 613, 757, 130, + 131, 1328, 76, 224, 519, 1145, 1268, 55, 40, 76, + 307, 175, 1391, -415, 612, 677, 781, 469, 471, 221, + 224, 246, 201, 713, 213, 1560, 26, 221, 221, 604, + 155, 887, 1159, 1160, 222, 223, -365, 639, 15, 40, + -302, -302, 1203, 299, 393, 394, 10, 937, 94, 1096, + 1329, 491, 494, 348, 1208, -295, 221, 755, 981, 491, + 672, 963, 964, 458, 928, 993, 295, 8, 9, -365, + 692, 999, 494, -365, 246, 887, 1595, 514, 89, 617, + 459, 21, 348, 648, 1340, 1341, -141, 101, 1229, 259, + 1231, 494, 107, 294, 26, 115, 27, 318, 90, 108, + 1622, 1362, 1390, 406, 162, 221, -365, 409, 1555, 460, + 58, 362, 994, 513, 91, 995, 629, 695, -579, 130, + 131, -579, 887, 515, 299, 802, 689, 10, 32, 209, + 591, 109, 76, 634, 92, 404, 76, 680, 233, 792, + 1248, 1148, 201, 213, 419, 422, 135, 1098, 355, 1623, + 356, 1498, 18, 688, 177, 138, 892, 1590, 221, 646, + 1194, 1027, 21, 1374, 911, 296, 59, 1125, -579, 773, + -579, -579, 137, -579, 710, 139, 592, 425, 426, 635, + 548, 549, 72, 161, -579, 793, -579, 127, 128, 201, + 187, 427, 733, 58, 1028, 407, 376, 387, 1029, -625, + 647, 428, -579, -579, 977, 750, 860, 1264, 1265, 32, + 222, 445, 617, 756, 429, 221, 90, -579, 176, 688, + 179, 415, 348, 861, 377, 691, 1443, 95, 110, 111, + 59, 1030, 224, 767, 378, 1449, 1450, 26, 1451, 130, + 131, 1017, 1054, 1209, 92, -625, -625, 183, 758, 1412, + 188, 178, 862, 864, 137, 88, 348, 58, 802, 348, + -625, 137, 348, 865, 962, 72, 348, 808, 808, 808, + 808, 692, 693, -304, 561, 224, 562, 866, 875, 348, + 112, 113, 775, 175, 887, 18, -583, 127, 128, 348, + 604, 691, 348, 1463, 677, 221, 221, 744, 745, 127, + 128, 934, 639, 221, 1406, 690, 770, 158, 155, 155, + 155, 498, 500, 887, 1444, 244, 221, 638, 1072, -304, + -304, 491, 1171, 511, 876, 649, 88, 295, 359, 72, + 933, 362, -583, 189, -298, 221, 127, 128, 525, 130, + 131, 877, 1195, 298, 1197, 568, 689, 774, 1201, 26, + 879, 130, 131, 733, 294, 508, 138, 95, 110, 111, + 510, 913, 91, 519, 116, 117, 118, 259, 479, 480, + 201, 1237, 1239, 688, 1017, 1253, 7, 8, 249, 10, + 688, 361, 92, 371, 1540, 1541, 373, 878, 130, 131, + 375, 1003, 374, 547, 1031, 21, 880, 122, 348, 379, + 945, 509, 950, 951, 380, 1165, 400, -295, 76, 642, + 112, 113, 209, -583, 21, 645, 246, 119, 120, 365, + 369, 250, 1167, 158, 158, 158, 296, 127, 128, 27, + 28, 773, 978, 773, -366, 655, 15, 1004, 860, 773, + 1032, 773, 881, 883, 665, 691, 201, 951, 487, 488, + 1144, 1166, 691, 251, 201, 861, 424, 655, 221, -583, + 481, 32, 689, 189, 1239, 1169, 302, -366, 1168, 158, + 617, -366, 780, 1324, 1326, 479, 711, 26, 1330, 130, + 131, -7, 1469, 803, 862, 1373, 127, 128, 1037, 688, + 432, 516, 59, 618, 59, 767, 431, 767, 1106, 221, + 209, 895, 59, 619, -366, 767, -620, 1574, 689, 348, + 348, 1170, 348, 620, 689, 164, 621, 622, 790, 58, + 1161, 58, 1371, 1025, 1026, 91, 548, 549, 1470, 58, + 1334, 1335, 1336, 1057, 446, 688, 26, 1597, 130, 131, + 447, 688, 1019, 221, 775, 92, 775, 896, 897, 91, + 127, 128, 526, 1575, 775, 759, 240, 450, 1614, 462, + 241, 691, 527, 463, 791, 221, 487, 712, 770, 92, + 770, 1069, 1070, 1071, 760, 1036, 1046, 497, 770, 1224, + 1225, 1226, 348, 1598, 502, 127, 128, 1100, 1020, 799, + 516, 72, 523, 72, 362, 391, 521, -304, 214, 215, + 216, 72, 130, 131, 1615, 14, 522, 691, 524, 774, + 1601, 1023, -304, 691, 201, 808, -304, 1435, 221, 774, + 532, 689, 18, 1388, 1389, 733, 251, 20, 541, 8, + 9, 255, -304, 8, 9, 26, 23, 130, 131, 825, + 555, 259, 91, 564, -304, -304, 542, -304, 688, -304, + -142, 864, 688, 201, 948, 201, 201, 129, 1461, 479, + 1492, 865, 92, 689, 543, 808, 348, 26, 89, 689, + 1409, 487, 1493, 362, 680, 866, 1210, 362, -304, -304, + 15, 130, 131, 873, -415, 130, 131, 224, 90, 544, + 688, 89, 545, -304, 803, 91, 688, 479, 1497, 1393, + 201, 147, 607, 1394, 997, 251, 127, 1358, 252, 519, + 653, 90, -415, -415, 656, 92, 733, 773, 1249, 1250, + 691, 1252, 881, 883, 691, 657, 255, 659, -120, 808, + 15, 931, 215, 216, 780, 1254, 780, 1037, 14, 1473, + 660, 1043, 1050, 688, 780, 689, 673, 158, 158, 158, + 362, 448, 936, 661, 674, 1490, 90, 689, 130, 131, + 20, -120, 691, 953, 92, -120, 1149, 1150, 691, 23, + 702, 617, 688, -6, 564, 1378, 727, 706, 59, 155, + 728, 767, 519, 746, 688, 966, 967, 968, 751, 1212, + 561, 689, 562, 689, 825, 1214, 1215, -52, -120, 1212, + 1217, 15, -52, 1215, 784, 58, 785, 786, 548, 549, + 787, 410, 497, -52, 812, 691, 412, 802, 688, 794, + 688, 808, 419, 422, 1036, 795, 155, 814, 815, 969, + 775, 717, 872, 817, 348, 874, 26, 255, 970, 971, + 888, 1473, 1060, 1061, 691, 1062, 555, 692, 1546, 555, + 890, 419, 422, 805, 770, 892, 691, 916, 917, 926, + 127, 128, 1473, 927, 147, 930, 555, 1420, 20, 1425, + 1422, -118, 932, 15, 940, 972, 89, 72, 689, 555, + 520, 941, 978, 832, 1445, 773, 116, 117, 118, 1571, + 691, -298, 691, 954, 960, 774, 90, 1616, 127, 128, + 1311, 803, 961, 1302, -118, 688, 452, 733, -118, 985, + 26, 855, 130, 131, 1303, 986, -827, 871, 116, 967, + 968, 348, 1473, 987, 992, 1001, 526, 58, 517, 1005, + 560, 95, 413, 414, 688, 1006, 527, 26, 129, 119, + 120, -118, 1009, 719, 1073, 1011, 59, 1074, 26, 767, + 130, 131, 1310, 1075, 1078, 1076, 608, 1077, 299, 393, + 394, 10, 1079, 609, 1080, 140, 140, 1081, 156, 26, + 1082, 119, 120, 58, 1083, 1270, 1271, 691, -140, 1085, + 299, 393, 394, 10, 98, 113, 155, 155, 155, 1086, + 1043, 1089, 212, 1088, 220, 1092, 21, 665, 775, 72, + 237, 215, 216, 610, 1270, 1271, 691, 14, 1090, 26, + 936, 27, 318, 1091, 1105, 155, 155, 155, 21, 1107, + 780, 1108, 770, 1419, 1109, 1419, 1110, 1311, 1136, 20, + 1302, 1116, 1117, 27, 318, 209, 1118, 1311, 23, 1164, + 1302, 1142, 1124, 611, 1311, 72, 1126, 1302, 525, 1127, + 1129, 1303, 1139, 808, 58, 1143, 1187, 1196, 1303, 95, + 96, 97, -183, 774, 58, 32, 1193, 1536, 1198, 1213, + 1219, 58, 153, 1218, 1223, 1227, 140, 137, -183, 1310, + -183, 140, 1232, 1233, 156, 156, 156, 1234, 700, 1310, + 1235, 701, 381, 382, 383, 1240, 1310, 127, 128, 725, + 1242, 15, 13, 704, 1243, -415, 731, 1447, 1448, 1244, + 26, 212, 98, 99, 100, 1247, 1251, 449, 1255, 1172, + 1257, 221, 548, 549, 1588, 1258, 72, 1259, 140, 140, + 156, 1262, 1263, -415, -415, 1266, 72, 384, -415, 410, + 617, 412, 1269, 72, 220, 385, 386, 26, 1274, 130, + 131, 1323, 492, 220, 517, 1339, 459, 1343, -662, 1238, + 338, 1365, 338, 618, 338, 419, 422, 1256, 490, 215, + 216, 800, 1366, 619, 1372, 14, 489, 1376, 1103, 1377, + 1355, 1382, 1392, 620, 1383, 1355, 621, 622, 780, 420, + 423, 1384, 18, 140, 1385, 1518, 1401, 20, 1402, 1403, + 1311, 1311, 1518, 1302, 1302, 1311, 23, 1415, 1302, 338, + 1417, 338, 555, 1430, 1303, 1433, 1436, 1437, 158, 1303, + 1476, 348, 294, 1457, 1458, 1459, 1460, 58, 58, 294, + 1465, 853, 58, 1549, 153, 1477, 1481, 854, 1483, 689, + 1484, 374, 95, 110, 111, 1280, 1311, 1491, 1513, 1302, + 1514, 1238, 1310, 1310, 1522, 1311, 1532, 1310, 1302, 155, + 1303, 1533, 1557, 156, 1548, 158, 688, 1558, 1566, 1303, + 1564, 1582, 1569, 58, 908, 1570, 201, 1423, 201, 1586, + 1592, 1518, 58, 95, 110, 111, 1593, 225, 226, 227, + 1599, 1603, 1596, 1604, 296, 112, 113, 114, 1310, 72, + 72, 296, 1572, 1608, 72, 1618, 1311, 1310, 294, 1302, + 1620, 18, 7, 127, 128, 10, 228, 1613, 744, 745, + 1303, 116, 967, 968, 1617, 1010, 1625, 1008, 221, 155, + 155, 155, 1626, 58, 1628, 1629, 112, 113, 691, 212, + 220, 636, 8, 9, 10, 72, 1311, 1, 1011, 1302, + 21, 441, 5, 140, 72, 1012, 140, 250, 1310, 160, + 1303, 1488, 156, 156, 156, 27, 28, 557, 140, 1407, + 1408, 1146, 26, 58, 119, 120, 307, 637, 929, 21, + 296, 381, 382, 383, 440, 1033, 1034, 9, 10, 251, + 709, 546, 26, 438, 130, 131, 1047, 32, 1310, 586, + 587, 588, 589, 590, 140, 72, 140, 1587, 156, 156, + 156, 1275, 686, 449, 700, 701, 358, 704, 499, 140, + 492, 220, 408, 21, 449, 158, 158, 158, 492, 338, + 1472, 1375, 26, 1624, 385, 386, 26, 1138, 27, 28, + 1137, 531, 449, 984, 1035, 72, 504, 1337, 1438, 1221, + 1360, 1049, 193, 1135, 158, 158, 158, 95, 96, 97, + 919, 1468, 194, 482, 614, 859, 389, 420, 703, 156, + 32, 1610, 156, 1428, 1320, 195, 1602, 1607, 686, 1561, + 95, 110, 111, 1486, 1489, 1609, 201, 156, 156, 156, + 1186, 1434, 0, 0, 555, 1093, 1094, 7, 8, 9, + 10, 1099, 156, 13, 7, 8, 9, 10, 1332, 0, + 98, 99, 0, 420, 423, 1111, 0, 1112, 0, 1113, + 0, 0, 0, 0, 0, 18, 116, 967, 968, 0, + 0, 722, 726, 112, 113, 21, 0, 0, 0, 726, + 0, 617, 21, 0, 1367, 1368, 1369, 1370, 26, 250, + 27, 28, 0, 0, 0, 0, 0, 27, 28, 0, + 0, 1534, 0, 904, 942, 1141, 95, 110, 111, 338, + 662, 663, 664, 557, 943, 0, 557, 0, 0, 119, + 120, 251, 32, 220, 620, 0, 0, 944, 622, 32, + 0, 0, 420, 813, 1205, 1206, 584, 585, 586, 587, + 588, 589, 590, 338, 726, 0, 557, 1405, 0, 0, + 0, 1162, 0, 147, 0, 0, 0, 0, 0, 112, + 113, 1220, 212, 0, 220, 237, 1222, 0, 0, 0, + 0, 0, 686, 95, 96, 97, 338, 0, 722, 686, + 0, 829, 830, 0, 834, 835, 836, 837, 838, 839, + 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 0, 726, 0, 0, 903, 220, 0, + 726, 0, 0, 0, 0, 0, 0, 0, 362, 140, + 140, 0, 140, 0, 0, 1462, 98, 99, 0, 0, + 492, 0, 0, 449, 593, 0, 0, 0, 158, 0, + 726, 0, 0, 95, 110, 111, 0, 726, 0, 0, + 212, 0, 0, 0, 0, 470, 472, 476, 1482, 0, + 0, 0, 95, 96, 97, 1007, 225, 226, 227, 921, + 923, 0, 0, 594, 595, 0, 0, 156, 596, 597, + 598, 599, 95, 110, 111, 338, 0, 0, 686, 0, + 18, 0, 0, 0, 1058, 228, 112, 1485, 0, 0, + 1063, 0, 0, 7, 127, 128, 10, 0, 158, 158, + 158, 0, 0, 26, 0, 98, 99, 229, 257, 0, + 1346, 1347, 1516, 1356, 1357, 0, 1359, 0, 832, 1516, + 0, 18, 0, 722, 686, 112, 1487, 0, 0, 0, + 686, 21, 257, 0, 0, 1276, 0, 1277, 555, 1278, + 0, 0, 0, 0, 26, 0, 27, 28, 0, 410, + 412, 0, 230, 231, 232, 0, 0, 517, 0, 0, + 149, 257, 0, 156, 156, 904, 0, 0, 1021, 0, + 150, 903, 257, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 0, 151, 0, 0, 338, 338, 0, 338, + 0, 0, 0, 1119, 0, 1120, 0, 0, 1516, 0, + 0, 0, 237, 0, 726, 0, 0, 140, 140, 904, + 0, 0, 0, 0, 0, 0, 0, 1591, 0, 0, + 0, 0, 127, 128, 0, 0, 1084, 245, 0, 0, + 0, 257, 0, 0, 0, 0, 1381, 686, 1606, 0, + 0, 686, 0, 1441, 1442, 0, 0, 832, 0, 0, + 0, 0, 0, 0, 0, 0, 904, 0, 726, 726, + 0, 0, 0, 722, 726, 617, 257, 0, 420, 813, + 700, 701, 26, 704, 130, 131, 0, 0, 726, 686, + 726, 0, 726, 0, 0, 686, 0, 0, 618, 257, + 449, 449, 0, 0, 0, 0, 0, 0, 619, 0, + 0, 7, 127, 128, 10, 0, 0, 13, 620, 0, + 0, 621, 622, 153, 0, 0, 0, 449, 1134, 0, + 0, 742, 449, 743, 0, 470, 472, 476, 726, 18, + 0, 0, 686, 0, 0, 0, 754, 0, 0, 21, + 0, 0, 0, 338, 0, 1504, 1505, 1506, 0, 0, + 0, 0, 26, 0, 27, 28, 1158, 0, 0, 0, + 1184, 686, 0, 0, 0, 0, 0, 1228, 30, 1230, + 214, 215, 216, 686, 726, 0, 0, 14, 31, 0, + 0, 257, 7, 8, 9, 10, 32, 0, 245, 0, + 0, 33, 0, 726, 18, 0, 0, 0, 0, 20, + 0, 1538, 1539, 0, 0, 0, 0, 686, 23, 686, + 18, 0, 0, 0, 140, 140, 156, 156, 904, 0, + 21, 0, 140, 696, 1261, 0, 617, 0, 0, 0, + 0, 0, 0, 26, 0, 27, 28, 1211, 0, 257, + 0, 0, 0, 0, 0, 156, 156, 904, 0, 942, + 0, 0, 0, 0, 214, 215, 216, 0, 0, 943, + 0, 14, 0, 0, 0, 0, 0, 32, 0, 620, + 0, 1589, 944, 622, 0, 0, 449, 449, 18, 449, + 449, 0, 449, 20, 0, 0, 80, 722, 722, 0, + 0, 1241, 23, 0, 686, 0, 104, 0, 0, 0, + 0, 0, 0, 0, 1338, 0, 133, 914, 0, 1342, + 0, 338, 144, 144, 0, 144, 0, 80, 0, 0, + 0, 420, 423, 686, 80, 0, 0, 0, 0, 257, + 0, 0, 0, 0, 0, 140, 140, 203, 140, 80, + 0, 0, 724, 0, 0, 0, 0, 238, 0, 724, + 420, 1322, 0, 0, 104, 0, 257, 0, 0, 0, + 0, 0, 1379, 0, 0, 261, 104, 0, 726, 0, + 726, 0, 726, 0, 0, 212, 220, 0, 0, 0, + 722, 0, 0, 0, 0, 0, 0, 0, 104, 722, + 722, 0, 0, 0, 722, 0, 742, 743, 0, 754, + 0, 7, 8, 9, 10, 0, 0, 13, 0, 449, + 449, 1344, 1345, 0, 724, 0, 133, 0, 80, 0, + 0, 0, 144, 144, 0, 0, 1042, 411, 144, 18, + 0, 144, 144, 144, 0, 0, 0, 0, 722, 21, + 0, 0, 0, 257, 0, 617, 0, 80, 0, 0, + 0, 80, 26, 0, 27, 28, 0, 203, 80, 257, + 0, 299, 8, 9, 10, 1453, 1454, 0, 1151, 726, + 0, 0, 0, 0, 724, 203, 203, 203, 1152, 0, + 724, 0, 1464, 0, 0, 0, 32, 0, 620, 156, + 0, 1153, 622, 1400, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 0, 203, 0, 250, 0, 0, 0, + 724, 449, 449, 449, 27, 318, 0, 724, 0, 0, + 0, 501, 0, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 722, 0, 0, 0, 0, 251, 0, + 144, 1500, 1501, 0, 0, 0, 32, 0, 7, 8, + 9, 10, 1446, 0, 516, 0, 0, 1511, 1512, 156, + 156, 156, 0, 0, 0, 0, 0, 449, 449, 0, + 0, 0, 0, 0, 722, 0, 18, 0, 104, 528, + 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 0, 0, 617, 1184, 470, 472, 476, 0, 0, 26, + 0, 27, 28, 0, 0, 0, 127, 128, 0, 0, + 0, 516, 0, 0, 0, 942, 0, 0, 0, 0, + 0, 0, 0, 104, 0, 943, 726, 615, 0, 528, + 528, 631, 0, 32, 0, 620, 0, 449, 944, 622, + 80, 0, 0, 476, 0, 0, 1502, 1503, 0, 617, + 0, 7, 127, 128, 10, 686, 26, 245, 130, 131, + 7, 127, 128, 10, 420, 1322, 13, 0, 0, 258, + 0, 0, 618, 0, 133, 1042, 0, 0, 0, 18, + 1529, 0, 619, 104, 724, 203, 104, 0, 18, 21, + 0, 0, 620, 0, 0, 621, 622, 0, 21, 0, + 144, 0, 26, 144, 27, 28, 0, 0, 0, 0, + 1543, 26, 0, 27, 28, 144, 0, 0, 30, 0, + 0, 0, 0, 80, 0, 0, 0, 149, 31, 7, + 8, 9, 10, 257, 0, 257, 32, 150, 724, 724, + 0, 33, 0, 0, 724, 32, 433, 0, 0, 0, + 151, 203, 0, 203, 0, 203, 203, 203, 724, 0, + 724, 203, 724, 0, 0, 0, 203, 21, 0, 203, + 0, 0, 0, 617, 0, 0, 0, 257, 468, 0, + 26, 0, 27, 28, 0, 0, 0, 80, 0, 0, + 0, 484, 0, 0, 0, 0, 942, 0, 0, 0, + 0, 742, 743, 470, 472, 476, 943, 0, 724, 754, + 0, 0, 0, 722, 32, 0, 620, 0, 0, 944, + 622, 0, 0, 0, 104, 104, 104, 104, 0, 0, + 0, 0, 470, 472, 476, 0, 0, 0, 0, 0, + 0, 7, 8, 9, 10, 167, 12, 13, 0, 0, + 730, 0, 14, 0, 724, 0, 0, 0, 0, 299, + 8, 9, 10, 0, 0, 1354, 16, 0, 17, 18, + 0, 0, 257, 724, 20, 0, 0, 0, 0, 21, + 0, 0, 0, 23, 104, 617, 528, 0, 0, 0, + 0, 0, 26, 0, 27, 28, 0, 21, 615, 0, + 528, 528, 0, 631, 250, 0, 0, 0, 1151, 0, + 905, 0, 27, 318, 907, 0, 0, 0, 1152, 0, + 0, 0, 742, 743, 0, 754, 32, 0, 620, 203, + 0, 1153, 622, 0, 0, 0, 519, 0, 0, 0, + 299, 393, 394, 10, 32, 0, 7, 8, 9, 10, + 214, 215, 216, 133, 0, 0, 257, 14, 0, 0, + 133, 0, 0, 0, 0, 0, 0, 0, 203, 949, + 203, 203, 238, 631, 18, 0, 0, 0, 21, 20, + 0, 0, 0, 257, 21, 250, 0, 0, 23, 0, + 617, 0, 0, 27, 318, 0, 0, 26, 0, 27, + 28, 0, 0, 0, 0, 0, 0, 7, 127, 128, + 10, 0, 0, 942, 0, 203, 0, 0, 0, 949, + 0, 0, 0, 943, 0, 32, 203, 203, 0, 203, + 0, 32, 0, 620, 0, 18, 944, 622, 0, 0, + 0, 0, 0, 0, 257, 21, 133, 0, 724, 80, + 724, 80, 724, 0, 0, 0, 1044, 80, 26, 80, + 27, 28, 0, 0, 747, 104, 0, 0, 0, 753, + 0, 104, 0, 0, 30, 0, 476, 0, 528, 528, + 528, 0, 0, 0, 31, 0, 299, 8, 9, 10, + 528, 0, 32, 0, 0, 782, 0, 33, 0, 83, + 0, 788, 0, 0, 0, 0, 0, 0, 0, 106, + 0, 0, 0, 796, 797, 0, 798, 0, 126, 134, + 0, 0, 0, 0, 21, 145, 145, 0, 145, 0, + 83, 250, 0, 0, 0, 0, 0, 83, 0, 27, + 318, 0, 0, 0, 0, 0, 470, 472, 476, 724, + 145, 0, 83, 299, 127, 128, 10, 0, 0, 0, + 239, 0, 0, 528, 0, 528, 0, 247, 0, 0, + 0, 32, 104, 0, 0, 0, 528, 0, 104, 247, + 905, 905, 905, 0, 0, 0, 0, 0, 1128, 0, + 0, 21, 0, 0, 0, 0, 0, 0, 250, 0, + 0, 0, 7, 8, 9, 10, 27, 318, 13, 0, + 0, 893, 894, 0, 0, 0, 893, 626, 630, 633, + 104, 0, 104, 0, 203, 203, 1155, 0, 0, 0, + 18, 83, 0, 0, 0, 145, 145, 0, 32, 0, + 21, 145, 0, 0, 145, 145, 145, 0, 0, 0, + 0, 0, 0, 26, 0, 27, 28, 0, 0, 0, + 83, 0, 0, 0, 83, 0, 0, 0, 0, 193, + 145, 83, 0, 1155, 0, 0, 0, 0, 0, 194, + 0, 0, 0, 0, 0, 0, 104, 32, 145, 145, + 145, 0, 195, 0, 0, 0, 0, 0, 0, 8, + 9, 0, 104, 12, 245, 1044, 724, 0, 0, 14, + 0, 0, 0, 0, 104, 0, 0, 145, 0, 0, + 0, 0, 0, 16, 0, 17, 0, 1216, 0, 0, + 0, 20, 0, 0, 0, 80, 0, 0, 0, 0, + 23, 0, 0, 0, 0, 0, 0, 0, 104, 26, + 104, 130, 131, 145, 0, 0, 0, 0, 762, 0, + 7, 8, 763, 10, 167, 12, 13, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 1065, 104, 1067, + 0, 0, 0, 528, 528, 16, 528, 17, 18, 19, + 0, 247, 145, 20, -525, 0, 0, 0, 21, 0, + 0, 0, 23, 764, 0, 168, 0, 0, 0, 0, + 0, 26, 0, 27, 28, 0, 0, 765, 0, 766, + 0, 623, 623, 623, 0, 0, 0, 30, 0, 0, + 0, 203, 203, 203, 203, 1155, 247, 31, 0, 203, + 616, 0, 145, 145, 632, 32, 0, 0, 0, 641, + 33, 1101, 1102, 83, 1104, 7, 127, 128, 10, 0, + 0, 516, 1155, 1155, 1155, 0, -525, 0, 0, 0, + 0, 0, 1033, 1034, 9, 10, 0, 0, 0, 0, + 0, 0, 1122, 18, 0, 0, 0, 678, 882, 884, + 0, 0, 0, 21, 0, 203, 247, 0, 145, 247, + 144, 0, 0, 80, 0, 0, 26, 0, 27, 28, + 21, 0, 0, 145, 0, 0, 145, 0, 0, 0, + 0, 0, 30, 26, 0, 27, 28, 0, 145, 1204, + 0, 1035, 31, 1157, 0, 0, 83, 0, 0, 193, + 32, 0, 0, 0, 0, 33, 0, 0, 0, 194, + 0, 0, 203, 203, 0, 203, 947, 32, 626, 630, + 0, 633, 195, 0, 145, 0, 145, 0, 145, 145, + 145, 0, 0, 0, 145, 0, 0, 0, 0, 145, + 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, + 0, 203, 949, 203, 0, 0, 0, 0, 0, 0, + 83, 0, 0, 630, 0, 0, 1202, 0, 0, 0, + 104, 0, 0, 0, 0, 0, 0, 0, 1207, 0, + 0, 0, 8, 9, 0, 167, 12, 13, 0, 0, + 730, 0, 14, 0, 0, 0, 0, 247, 247, 247, + 247, 0, 0, 0, 0, 0, 16, 0, 17, 18, + 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, + 0, 0, 0, 23, 0, 617, 0, 7, 8, 9, + 10, 0, 26, 0, 130, 131, 0, 0, 630, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 618, 0, + 0, 0, 623, 623, 0, 623, 0, 247, 619, 145, + 0, 0, 902, 0, 1260, 21, 1155, 0, 620, 0, + 0, 621, 622, 145, 145, 0, 632, 0, 26, 0, + 27, 28, 0, 906, 192, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 641, 0, 0, 0, + 0, 0, 145, 1273, 194, 0, 0, 0, 0, 0, + 0, 1114, 32, 1115, 0, 0, 0, 195, 0, 0, + 623, 0, 623, 623, 1121, 623, 678, 0, 882, 884, + 7, 8, 9, 10, 126, 0, 1155, 1155, 1155, 0, + 0, 145, 632, 145, 145, 239, 632, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 104, 0, 18, 0, + 0, 203, 0, 0, 0, 0, 0, 623, 21, 979, + 1363, 0, 882, 884, 1364, 0, 0, 0, 0, 0, + 0, 26, 0, 27, 28, 0, 0, 0, 145, 0, + 0, 0, 632, 0, 0, 0, 0, 473, 0, 145, + 145, 0, 145, 0, 0, 0, 0, 474, 0, 1380, + 0, 0, 0, 0, 0, 32, 979, 368, 370, 134, + 475, 0, 83, 0, 83, 0, 0, 0, 0, 1045, + 83, 0, 83, 0, 0, 0, 0, 0, 247, 0, + 0, 0, 623, 0, 247, 0, 0, 0, 0, 0, + 0, 145, 145, 145, 7, 8, 9, 10, 205, 12, + 206, 0, 0, 145, 0, 14, 0, 0, 0, 0, + 0, 0, 51, 0, 0, 0, 0, 0, 0, 16, + 0, 17, 18, 0, 0, 0, 1439, 20, 0, 0, + 1440, 0, 21, 0, 0, 0, 23, 0, 51, 51, + 0, 152, 0, 51, 0, 26, 0, 27, 28, 0, + 51, 207, 1455, 1456, 0, 623, 0, 623, 0, 0, + 0, 30, 0, 51, 0, 51, 0, 0, 623, 0, + 0, 31, 902, 902, 902, 0, 145, 0, 145, 32, + 0, 0, 0, 0, 33, 247, 0, 0, 253, 145, + 0, 247, 0, 906, 906, 906, 0, 0, 0, 0, + 0, 641, 7, 8, 9, 10, 0, 0, 245, 0, + 0, 0, 0, 0, 0, 0, 623, 623, 623, 1114, + 1115, 882, 884, 0, 0, 0, 0, 1121, 0, 0, + 18, 0, 0, 247, 0, 247, 0, 145, 145, 632, + 21, 395, 395, 0, 51, 0, 0, 0, 51, 51, + 882, 884, 253, 26, 51, 27, 28, 152, 152, 152, + 0, 0, 0, 0, 430, 902, 0, 0, 0, 193, + 0, 0, 0, 51, 0, 0, 0, 51, 559, 194, + 0, 0, 0, 51, 51, 0, 906, 32, 0, 0, + 0, 0, 195, 0, 0, 0, 0, 0, 0, 247, + 0, 51, 51, 152, 0, 0, 0, 0, 0, 0, + 0, 253, 0, 0, 0, 247, 0, 0, 1045, 0, + 0, 0, 0, 0, 0, 0, 0, 247, 0, 762, + 51, 7, 8, 763, 10, 167, 12, 13, 0, 0, + 1114, 1115, 14, 1121, 0, 0, 0, 0, 83, 0, + 0, 685, 0, 0, 0, 0, 16, 0, 17, 18, + 19, 247, 0, 247, 20, -526, 51, 0, 0, 21, + 0, 0, 0, 23, 764, 0, 168, 0, 0, 0, + 0, 0, 26, 0, 27, 28, 0, 0, 765, 0, + 766, 247, 0, 0, 0, 0, 145, 145, 30, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 0, 32, 732, 0, 0, + 0, 33, 0, 623, 623, 623, 623, 623, 0, 0, + 0, 623, 0, 0, 0, 0, 556, -526, 0, 0, + 0, 0, 0, 0, 145, 145, 145, 145, 632, 0, + 0, 0, 145, 395, 902, 902, 902, 0, 0, 979, + 0, 253, 0, 0, 0, 0, 51, 0, 0, 0, + 0, 1348, 1349, 9, 10, 906, 906, 906, 0, 0, + 0, 0, 0, 0, 801, 0, 0, 804, 0, 0, + 0, 806, 807, 809, 810, 811, 979, 0, 0, 0, + 395, 0, 0, 0, 559, 0, 0, 0, 145, 21, + 0, 51, 0, 145, 0, 0, 83, 828, 0, 0, + 0, 0, 26, 0, 27, 28, 51, 0, 0, 51, + 1350, 0, 0, 0, 0, 430, 430, 430, 193, 0, + 0, 51, 0, 0, 623, 623, 0, 623, 194, 51, + 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, + 0, 195, 0, 0, 0, 145, 145, 0, 145, 0, + 0, 885, 0, 0, 0, 0, 0, 51, 885, 51, + 0, 152, 152, 152, 8, 9, 0, 51, 12, 13, + 0, 0, 51, 1411, 14, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 145, 632, 145, 0, 16, 0, + 17, 0, 78, 51, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 247, 0, 23, 0, 0, 0, 979, + 0, 0, 0, 0, 26, 0, 130, 131, 78, 78, + 0, 78, 556, 78, 0, 556, 0, 0, 0, 0, + 78, 762, 0, 7, 8, 763, 10, 167, 12, 13, + 556, 556, 556, 78, 14, 78, 0, 0, 0, 0, + 0, 0, 0, 858, 0, 556, 0, 0, 16, 0, + 17, 18, 19, 0, 0, 0, 20, 685, 0, 0, + 0, 21, 0, 0, 0, 23, 764, 0, 168, 0, + 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, + 765, 0, 766, 0, 0, 0, 0, 0, 0, 906, + 30, 0, 0, 253, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 732, 0, 0, 556, 0, 32, 732, + 0, 0, 0, 33, 78, 159, 0, 0, 78, 78, + 0, 0, 0, 0, 78, 51, 0, 78, 78, 78, + 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, + 0, 0, 0, 78, 0, 0, 0, 78, 0, 395, + 0, 0, 0, 78, 78, 0, 395, 0, 0, 906, + 906, 906, 0, 0, 51, 51, 51, 51, 0, 0, + 0, 78, 78, 78, 0, 0, 0, 1095, 0, 247, + 0, 0, 0, 0, 145, 0, 0, 0, 0, 7, + 8, 9, 10, 0, 0, 13, 0, 0, 0, 0, + 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 828, 51, 0, 0, 0, 51, 732, 18, 0, 0, + 885, 0, 51, 51, 0, 51, 0, 21, 0, 0, + 0, 159, 159, 159, 0, 0, 78, 0, 0, 0, + 26, 0, 27, 28, 0, 51, 0, 51, 0, 18, + 0, 0, 51, 51, 0, 51, 473, 204, 685, 0, + 1147, 0, 0, 0, 885, 0, 474, 0, 0, 0, + 0, 0, 0, 0, 32, 204, 204, 477, 0, 475, + 556, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 0, 204, 0, 0, 0, 0, 0, + 0, 885, 0, 0, 0, 6, 0, 7, 8, 9, + 10, 11, 12, 13, 1189, 0, 0, 0, 14, 0, + 0, 0, 640, 0, 0, 0, 78, 0, 0, 0, + 732, 15, 16, 0, 17, 18, 19, 0, 0, 0, + 20, 0, 732, 0, 0, 21, 0, 0, 22, 23, + 24, 0, 25, 0, 0, 0, 0, 0, 26, 0, + 27, 28, 0, 0, 29, 0, 556, 556, 556, 529, + 0, 78, 430, 253, 30, 0, 732, 0, 732, 0, + 0, 0, 0, 0, 31, 0, 78, 0, 0, 78, + 0, 0, 32, 0, 0, 0, 0, 33, 0, 0, + 0, 78, 34, 0, 0, 0, 1246, 0, 0, 78, + 51, 51, 152, 0, 0, 0, 0, 253, 0, 625, + 625, 625, 0, -387, 8, 9, -387, -387, 12, 245, + 7, 8, 9, 10, 14, 0, 516, 78, 0, 78, + 0, 78, 78, 78, 0, 0, 0, 78, 16, 0, + 17, -387, 78, 0, 0, 78, 20, 0, 18, 1183, + 0, -387, 0, 885, 0, 23, 0, 617, 21, 0, + 0, 0, 0, 78, 26, 204, 130, 131, 0, 0, + 0, 26, 0, 27, 28, 0, 0, 0, 0, 0, + 618, 51, 885, 0, 0, 0, 0, 193, 0, 0, + 619, 0, 0, 0, 0, 0, 1333, 194, -387, 0, + 620, 0, 253, 621, 622, 32, 0, 0, 0, 0, + 195, 51, 7, 8, 9, 10, 214, 215, 216, 0, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 0, 204, 0, 204, 0, 477, 477, 477, 0, 0, + 18, 204, 0, 0, 0, 20, 204, 0, 0, 204, + 21, 0, 0, 0, 23, 0, 617, 0, 0, 0, + 0, 0, 0, 26, 0, 27, 28, 0, 0, 0, + 0, 0, 0, 0, 640, 0, 0, 0, 0, 942, + 0, 0, 1348, 127, 128, 10, 253, 0, 0, 943, + 0, 0, 0, 0, 0, 0, 0, 32, 0, 620, + 0, 0, 991, 622, 0, 78, 0, 51, 51, 152, + 152, 152, 0, 253, 0, 51, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 1189, 0, + 0, 0, 0, 26, 0, 27, 28, 0, 1183, 1183, + 1183, 1350, 0, 0, 78, 78, 78, 78, 0, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 867, 32, 0, 0, + 0, 51, 33, 202, 0, 0, 51, 0, 0, 51, + 625, 625, 0, 625, 0, 7, 8, 9, 10, 0, + 625, 78, 0, 0, 0, 78, 0, 0, 256, 0, + 0, 260, 78, 78, 0, 78, 0, 0, 0, 204, + 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 256, 21, 364, 78, 0, 78, 51, 51, + 0, 51, 78, 78, 0, 78, 26, 0, 27, 28, + 0, 0, 1418, 0, 0, 0, 0, 0, 946, 0, + 946, 946, 193, 625, 0, 0, 0, 0, 0, 0, + 0, 0, 194, 0, 0, 0, 0, 51, 51, 51, + 32, 0, 0, 0, 0, 195, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 202, 0, 946, 559, 166, 0, 7, + 8, 9, 10, 167, 12, 13, 204, 204, 0, 204, + 14, 202, 202, 202, 685, 0, 0, 0, 0, 0, + 0, 483, 0, 0, 16, 0, 17, 18, 19, 0, + 0, 0, 20, 0, 0, 0, 204, 21, 0, 0, + 202, 23, 0, 0, 168, 7, 8, 9, 10, 0, + 26, 0, 27, 28, 0, 0, 0, 0, 529, 529, + 529, 0, 0, 0, 640, 260, 30, 0, 0, 0, + 625, 0, 0, 0, 0, 0, 31, 0, 0, 256, + 0, 0, 1183, 21, 32, 0, 0, 8, 9, 33, + 0, 12, 13, 0, 34, 0, 26, 14, 27, 28, + 78, 78, 78, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 193, 17, 0, 0, 0, 0, 0, 20, + 0, 0, 194, 0, 0, 0, 0, 0, 23, 0, + 32, 0, 0, 0, 0, 195, 0, 26, 0, 130, + 131, 600, 0, 625, 0, 625, 0, 0, 0, 1185, + 0, 0, 1183, 1183, 1183, 0, 625, 0, 0, 0, + 625, 625, 625, 0, 0, 0, 0, 0, 0, 0, + 0, 256, 260, 0, 0, 0, 601, 51, 0, 0, + 0, 78, 0, 0, 0, 831, 0, 299, 8, 9, + 10, 167, 12, 300, 301, 302, 0, 303, 14, 0, + 0, 0, 0, 0, 946, 946, 1156, 0, 0, 0, + 0, 78, 16, 304, 17, 18, 19, 0, 305, 306, + 20, 202, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 318, 1524, 0, -788, 319, 0, 0, 0, 0, + 0, 320, 0, 1156, 321, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 324, 102, 0, 0, 0, 0, + 325, 326, 327, 0, 121, 102, 0, 328, 0, 0, + 0, 102, 102, 0, 102, 204, 0, 202, 0, 202, + 0, 202, 202, 202, 329, 0, 0, 202, 0, 0, + 0, 0, 202, 0, 0, 202, 0, 78, 78, 78, + 78, 78, 0, 0, 0, 78, 235, 8, 9, 0, + 0, 12, 245, 0, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1185, 1185, + 1185, 16, 0, 17, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 617, 0, 0, 867, 867, 0, 867, 26, 0, 130, + 131, 78, 0, 0, 0, 388, 78, 121, 0, 78, + 0, 0, 0, 618, 102, 102, 0, 0, 0, 0, + 0, 102, 102, 619, 0, 102, 102, 102, 0, 416, + 102, 102, 102, 620, 0, 0, 621, 622, 0, 0, + 0, 946, 946, 1156, 1156, 1156, 0, 0, 0, 946, + 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, + 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1156, 1156, 1156, 0, 0, 0, 0, 256, + 260, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 202, 0, 78, 78, 78, + 0, 0, 0, 0, 0, 204, 0, 0, 127, 128, + 0, 0, 215, 216, 0, 0, 0, 0, 14, 235, + 102, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 202, 0, 202, 202, 0, 102, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 23, + 0, 617, 0, 0, 0, 0, 0, 0, 26, 0, + 130, 131, 946, 946, 0, 946, 0, 0, 0, 0, + 0, 0, 0, 0, 618, 0, 0, 0, 102, 0, + 0, 202, 0, 0, 619, 0, 0, 0, 0, 0, + 0, 0, 202, 202, 620, 202, 0, 628, 622, 0, + 0, 204, 0, 204, 0, 0, 0, 0, 0, 0, + 0, 720, 1185, 819, 820, 821, 10, 0, 12, 533, + 301, 302, 202, 303, 14, 0, 102, 0, 102, 102, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 304, + 17, 0, 19, 0, 305, 306, 20, 0, 307, 308, + 309, 21, 310, 311, 0, 23, 0, 0, 0, 312, + 313, 314, 315, 316, 26, 0, 822, 823, 721, 0, + 0, 319, 0, 102, 0, 0, 0, 320, 0, 0, + 321, 0, 1185, 1185, 1185, 0, 0, 0, 322, 323, + 324, 0, 102, 0, 0, 0, 325, 326, 327, 102, + 0, 0, 102, 328, 824, 0, 0, 78, 0, 0, + 0, 0, 0, 0, 102, 0, 477, 127, 128, 983, + 329, 215, 216, 0, 8, 9, 0, 14, 12, 13, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 20, + 17, 0, 0, 256, 260, 256, 20, 0, 23, 0, + 617, 0, 0, 0, 0, 23, 0, 26, 0, 130, + 131, 0, 0, 0, 26, 0, 130, 131, 0, 0, + 0, 0, 102, 618, 0, 0, 477, 477, 477, 0, + 202, 202, 1154, 619, 0, 0, 0, 256, 0, 0, + 0, 0, 0, 620, 0, 0, 621, 622, 0, 102, + 0, 204, 0, 7, 8, 9, 10, 167, 12, 13, + 0, 0, 0, 0, 14, 0, 0, 260, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 1154, + 17, 18, 19, 0, 0, 0, 20, 0, 0, 262, + 0, 21, 8, 9, 0, 23, 12, 13, 168, 0, + 0, 0, 14, 0, 26, 0, 27, 28, 0, 0, + 0, 202, 0, 0, 0, 0, 16, 0, 17, 0, + 30, 0, 0, 0, 20, 102, 263, 264, 0, 0, + 31, 0, 483, 23, 0, 265, 102, 102, 32, 102, + 102, 0, 26, 33, 130, 131, 0, 266, 34, 0, + 0, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 0, 0, 288, 289, 290, 0, 0, 291, + 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 102, 0, 0, 0, 0, 0, 293, 102, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 235, 0, 0, 0, 0, 256, 0, 0, 762, + 0, 7, 8, 763, 10, 167, 12, 13, 0, 0, + 0, 0, 14, 0, 0, 976, 0, 202, 202, 202, + 202, 1154, 0, 1272, 0, 202, 16, 0, 17, 18, + 19, 0, 0, 0, 20, -528, 0, 0, 0, 21, + 0, 0, 0, 23, 764, 0, 168, 0, 1154, 1154, + 1154, 0, 26, 0, 27, 28, 0, 0, 765, 0, + 766, 1478, 976, 0, 0, 102, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, + 0, 202, 0, 0, 0, 0, 32, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 102, 102, 102, + 0, 0, 0, 0, 0, 0, 0, -528, 0, 102, + 0, 1479, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 0, 0, 0, 0, 202, 202, + 0, 202, 0, 1507, 0, -480, -480, -480, -480, -480, + -480, -480, 0, 0, -480, 0, -480, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -480, 0, -480, + 0, 0, 0, -480, 0, 0, 0, 202, -480, 202, + 0, 0, 102, -480, 102, 0, 0, -480, 0, -480, + 0, 0, 0, 0, 0, 102, -480, 0, -480, -480, + -480, -480, -480, 0, -480, -480, -480, -480, -480, -480, + -480, -480, -480, -480, -480, -480, -480, -480, -480, -480, + -480, -480, -480, -480, -480, -480, -480, 0, -480, -480, + -480, 0, -480, -480, -480, -480, -480, -480, 0, -480, + 0, 0, 0, 0, 1508, 0, 0, 0, 0, -480, + -480, -480, 658, -480, 0, 0, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 0, 0, + 976, 1426, 0, 1283, 1284, 1285, 10, 167, 12, 300, + 301, 302, 1154, 303, 14, 1286, 0, 1287, 1288, 1289, + 1290, 1291, 1292, 1293, 1294, 1295, 1296, 15, 16, 304, + 17, 18, 19, 0, 305, 306, 20, 0, 307, 308, + 309, 21, 310, 311, 1297, 23, 1298, 0, 0, 312, + 313, 314, 315, 316, 26, 0, 1299, 318, 717, 0, + 1300, 319, 0, 0, 0, 0, 102, 320, 0, 0, + 321, 0, 0, 0, 0, 0, 0, 0, 322, 323, + 324, 0, 1154, 1154, 1154, 0, 325, 326, 327, 0, + 0, 0, 0, 328, 0, 1301, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 202, 0, 1427, + 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 102, 102, 1282, 102, 1283, 1284, 1285, 10, + 167, 12, 300, 301, 302, 0, 303, 14, 1286, 0, + 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, + 15, 16, 304, 17, 18, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 1297, 23, 1298, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 1299, + 318, 717, 0, 1300, 319, 976, 0, 0, 0, 0, + 320, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 0, 322, 323, 324, 0, 0, 0, 0, 0, 325, + 326, 327, 0, 0, 0, 0, 328, 0, 1301, 0, + 0, 0, 976, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 329, 0, 0, 0, 102, 551, 102, + 299, 8, 9, 10, 167, 12, 300, 301, 302, 730, + 303, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 304, 17, 18, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 617, 0, 312, 313, 314, 315, + 316, 26, 0, 27, 318, -312, 0, 0, 319, 0, + 0, 0, 0, 0, 320, 0, 0, 898, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 899, 0, 0, + 0, 0, 0, 325, 326, 327, 0, 620, 0, 0, + 900, 622, 551, 0, 7, 8, 9, 10, 167, 12, + 300, 301, 302, 730, 303, 14, 0, 329, 0, 0, + 0, 0, 0, 0, 0, 976, 0, 0, 0, 16, + 304, 17, 18, 19, 0, 305, 306, 20, 0, 307, + 308, 309, 21, 310, 311, 0, 23, 0, 617, 0, + 312, 313, 314, 315, 316, 26, 0, 27, 28, -312, + 0, 0, 319, 0, 0, 0, 0, 0, 320, 0, + 0, 1180, 0, 0, 0, 0, 0, 0, 0, 322, + 323, 1181, 0, 0, 0, 0, 0, 325, 326, 327, + 0, 620, 0, 0, 1182, 622, 729, 0, 299, 8, + 9, 10, 167, 12, 300, 301, 302, 730, 303, 14, + 0, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 304, 17, 18, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 27, 318, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 320, 0, 0, 321, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, + 0, 325, 326, 327, 0, 0, 0, 551, 328, 299, + 8, 9, 10, 0, 12, 300, 301, 302, 0, 303, + 14, 0, 0, -798, 0, 329, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 304, 17, 18, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 0, 23, 0, 0, 0, 312, 313, 314, 315, 316, + 26, 0, 27, 318, -312, 0, 0, 319, 0, 0, + 0, 0, 0, 320, 0, 0, 552, 0, 0, 0, + 0, 0, 0, 0, 322, 323, 553, 0, 0, 0, + 0, 0, 325, 326, 327, 0, 0, 0, 720, 554, + 819, 820, 821, 10, 0, 12, 533, 301, 302, 0, + 303, 14, 0, 0, 0, 0, 329, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 304, 17, 0, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 0, 0, 312, 313, 314, 315, + 316, 26, 0, 822, 823, 721, 0, 0, 319, 0, + 0, 0, 0, 0, 320, 0, 0, 321, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 0, 325, 326, 327, 0, 0, 0, 0, + 328, 824, 720, 0, 819, 820, 821, 10, 0, 12, + 533, 301, 302, 0, 303, 14, 0, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 304, 17, 0, 19, 0, 305, 306, 20, 0, 307, + 308, 309, 21, 310, 311, 0, 23, 0, 0, 0, + 312, 313, 314, 315, 316, 26, 0, 822, 823, 721, + 0, 0, 319, 0, 0, 0, 0, 0, 320, 0, + 0, 321, 0, 0, 0, 0, 0, 0, 0, 322, + 323, 324, 0, 0, 0, 0, 0, 325, 326, 327, + 0, 0, 0, 720, 328, 819, 820, 821, 10, 0, + 12, 533, 301, 302, 0, 303, 14, 0, 0, 0, + -484, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 304, 17, 0, 19, 0, 305, 306, 20, 0, + 307, 308, 309, 21, 310, 311, 0, 23, 0, 0, + 0, 312, 313, 314, 315, 316, 26, 0, 822, 823, + 721, 0, 0, 319, 0, 0, 0, 0, 0, 320, + 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, + 322, 323, 324, 0, 0, 0, 0, 0, 325, 326, + 327, 0, 0, 0, 720, 328, 299, 8, 9, 10, + 0, 12, 533, 301, 302, 0, 303, 14, 0, 0, + 0, 1321, 329, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 304, 17, 0, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 318, 721, 0, 0, 319, 0, 0, 0, 0, 0, + 320, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 0, 322, 323, 324, 0, 0, 0, 0, 0, 325, + 326, 327, 0, 0, 0, 0, 328, 0, 551, 0, + 7, 8, 9, 10, 1325, 12, 300, 301, 302, 0, + 303, 14, 0, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 304, 17, 18, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 0, 0, 312, 313, 314, 315, + 316, 26, 0, 27, 28, -312, 0, 0, 319, 0, + 0, 0, 0, 0, 320, 0, 0, 1494, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 1495, 0, 0, + 0, 0, 0, 325, 326, 327, 0, 0, 0, 720, + 1496, 299, 8, 9, 10, 0, 12, 533, 301, 302, + 0, 303, 14, 0, 0, 0, 0, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 304, 17, 0, + 19, 0, 305, 306, 20, 0, 307, 308, 309, 21, + 310, 311, 0, 23, 0, 0, 0, 312, 313, 314, + 315, 316, 26, 0, 27, 318, 721, 0, 0, 319, + 0, 0, 0, 0, 0, 320, 0, 0, 321, 0, + 0, 0, 0, 0, 0, 0, 322, 323, 324, 0, + 0, 0, 0, 0, 325, 326, 327, 0, 0, 0, + 831, 328, 299, 8, 9, 10, 0, 12, 533, 301, + 302, 0, 303, 14, 0, 0, 0, 0, 329, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 304, 17, + 0, 19, 0, 305, 306, 20, 0, 307, 308, 309, + 21, 310, 311, 0, 23, 0, 0, 0, 312, 313, + 314, 315, 316, 26, 0, 27, 318, 0, 0, 0, + 319, -788, 0, 0, 0, 0, 320, 0, 0, 321, + 0, 0, 0, 0, 0, 0, 0, 322, 323, 324, + 0, 0, 0, 0, 0, 325, 326, 327, 0, 0, + 0, 1577, 328, 299, 8, 9, 10, 0, 12, 300, + 301, 302, 0, 303, 14, 0, 0, 0, 0, 329, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 304, + 17, 0, 19, 0, 305, 306, 20, 0, 307, 308, + 309, 21, 310, 311, 0, 23, 0, 0, 0, 312, + 313, 314, 315, 316, 26, 0, 27, 318, 0, 0, + -196, 319, 0, 0, 0, 0, 0, 320, 0, 0, + 321, 0, 0, 0, 0, 0, 0, 0, 322, 323, + 324, 0, 0, 0, 0, 0, 325, 326, 327, 0, + 0, 0, 831, 328, 299, 8, 9, 10, 0, 12, + 533, 301, 302, 0, 303, 14, 0, 0, 0, 0, + 329, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 304, 17, 0, 19, 0, 305, 306, 20, 0, 307, + 308, 309, 21, 310, 311, 0, 23, 0, 0, 0, + 312, 313, 314, 315, 316, 26, 0, 27, 318, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 320, 0, + 0, 321, 0, 0, 0, 0, 0, 0, 0, 322, + 323, 324, 0, 0, 0, 0, 0, 325, 326, 327, + 0, 0, 0, 920, 328, 299, 8, 9, 10, 0, + 12, 533, 301, 302, 0, 303, 14, 0, 0, -788, + 0, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 304, 17, 0, 19, 0, 305, 306, 20, 0, + 307, 308, 309, 21, 310, 311, 0, 23, 0, 0, + 0, 312, 313, 314, 315, 316, 26, 0, 27, 318, + 0, 0, 0, 319, 0, 0, 0, 0, 0, 320, + 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, + 322, 323, 324, 0, 0, 0, 0, 0, 325, 326, + 327, 0, 0, 0, 922, 328, 299, 8, 9, 10, + 0, 12, 533, 301, 302, 0, 303, 14, 0, 0, + 0, 0, 329, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 304, 17, 0, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 318, 0, 0, 0, 319, 0, 0, 0, 0, 0, + 320, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 0, 322, 323, 324, 0, 0, 0, 0, 0, 325, + 326, 327, 0, 0, 0, 1542, 328, 299, 8, 9, + 10, 0, 12, 533, 301, 302, 0, 303, 14, 0, + 0, 0, 0, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 304, 17, 0, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 318, 0, 0, 0, 319, 0, 0, 0, 0, + 0, 320, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 324, 0, 0, 0, 0, 0, + 325, 326, 327, 299, 8, 9, 10, 328, 12, 533, + 301, 302, 0, 303, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 329, 0, 0, 0, 16, 304, + 17, 0, 19, 0, 305, 306, 20, 0, 307, 308, + 309, 21, 310, 311, 0, 23, 0, 0, 0, 312, + 313, 314, 315, 316, 26, 0, 27, 318, 0, 0, + 0, 319, 0, 0, 0, 0, 0, 320, 0, 762, + 321, 7, 8, 763, 10, 167, 12, 13, 322, 323, + 324, 0, 14, 0, 0, 0, 325, 326, 327, 0, + 0, 0, 0, 328, 0, 0, 16, 0, 17, 18, + 19, 0, 0, 0, 20, -527, 0, 0, 0, 21, + 329, 870, 0, 23, 764, 0, 168, 0, 0, 0, + 0, 0, 26, 0, 27, 28, 0, 0, 765, 0, + 766, 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, 1283, 1284, 1285, 10, 167, 12, + 300, 301, 302, 0, 303, 14, 1286, -527, 1287, 1288, + 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 15, 16, + 304, 17, 18, 19, 0, 305, 306, 20, 0, 307, + 308, 309, 21, 310, 311, 1297, 23, 1298, 0, 0, + 312, 313, 314, 315, 316, 26, 0, 1299, 318, 717, + 0, 1300, 319, 0, 0, 0, 0, 0, 320, 0, + 0, 321, 0, 0, 0, 0, 0, 0, 0, 322, + 323, 324, 0, 0, 0, 0, 0, 325, 326, 327, + 0, 0, 0, 0, 328, 0, 1301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 1285, 203, 988, 203, 0, 0, - 21, 0, 145, 0, 145, 0, 145, 145, 145, 0, - 0, 0, 145, 26, 104, 27, 28, 145, 0, 6, - 145, 7, 8, 9, 10, 11, 12, 13, 0, 193, - 0, 0, 14, 1298, 0, 0, 0, 0, 0, 194, - 134, 0, 0, 83, 0, 83, 16, 32, 17, 18, - 807, 83, 195, 83, 20, 0, 0, 0, 0, 21, - 0, 0, 0, 23, 0, 0, 438, 0, 0, 0, - 761, 762, 26, 773, 27, 28, 0, 0, 29, 0, - 1363, 0, 0, 0, 1364, 0, 0, 0, 30, 0, - 0, 0, 0, 248, 248, 248, 248, 0, 31, 1176, - 0, 0, 0, 0, 1377, 0, 32, 0, 1378, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 127, 128, 10, 0, 0, 535, 0, - 0, 0, 0, 0, 0, 642, 642, 0, 642, 0, - 0, 0, 0, 1394, 0, 941, 0, 0, 0, 0, - 18, 0, 0, 248, 0, 145, 0, 0, 0, 0, - 21, 0, 0, 0, 0, 0, 1176, 1176, 1176, 145, - 145, 0, 651, 26, 0, 27, 28, 0, 0, 945, - 0, 0, 104, 0, 0, 0, 0, 203, 0, 30, - 0, 0, 660, 7, 127, 128, 10, 0, 145, 31, - 0, 0, 0, 642, 0, 642, 642, 32, 642, 0, - 0, 0, 33, 477, 0, 0, 0, 0, 0, 0, - 0, 18, 697, 0, 0, 0, 0, 0, 0, 0, - 126, 21, 0, 0, 0, 1466, 1467, 145, 651, 145, - 145, 239, 651, 0, 26, 0, 27, 28, 0, 0, - 642, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0, 1018, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 32, 0, - 471, 473, 477, 33, 145, 0, 0, 0, 651, 0, - 0, 0, 0, 0, 0, 145, 145, 0, 145, 0, - 0, 0, 0, 0, 7, 8, 9, 10, 167, 12, - 13, 0, 1018, 749, 248, 14, 0, 807, 0, 0, - 0, 0, 0, 0, 0, 0, 248, 0, 0, 16, + 1431, 329, 1283, 1284, 1285, 10, 167, 12, 300, 301, + 302, 0, 303, 14, 1286, 0, 1287, 1288, 1289, 1290, + 1291, 1292, 1293, 1294, 1295, 1296, 15, 16, 304, 17, + 18, 19, 0, 305, 306, 20, 0, 307, 308, 309, + 21, 310, 311, 1297, 23, 1298, 0, 0, 312, 313, + 314, 315, 316, 26, 0, 1299, 318, 717, 0, 1300, + 319, 0, 0, 0, 0, 0, 320, 0, 0, 321, + 0, 0, 0, 0, 0, 0, 0, 322, 323, 324, + 0, 0, 0, 0, 0, 325, 326, 327, 0, 0, + 0, 0, 328, 0, 1301, 0, 1283, 1284, 1285, 10, + 167, 12, 300, 301, 302, 0, 303, 14, 1286, 329, + 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, + 15, 16, 304, 17, 18, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 1297, 23, 1298, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 1299, + 318, 1551, 0, 1300, 319, 0, 0, 0, 0, 0, + 320, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 0, 322, 323, 324, 0, 0, 0, 0, 0, 325, + 326, 327, 0, 0, 0, 0, 328, 0, 1301, 0, + 1283, 1284, 1285, 10, 167, 12, 300, 301, 302, 0, + 303, 14, 1286, 329, 1287, 1288, 1289, 1290, 1291, 1292, + 1293, 1294, 1295, 1296, 15, 16, 304, 17, 18, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 1297, 23, 1298, 0, 0, 312, 313, 314, 315, + 316, 26, 0, 1299, 318, 0, 0, 1300, 319, 0, + 0, 0, 0, 0, 320, 0, 0, 321, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 0, 325, 326, 327, 0, 0, 0, 0, + 328, 0, 1301, 299, 8, 9, 10, 167, 12, 300, + 301, 302, 730, 303, 14, 0, 0, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 304, + 17, 18, 19, 0, 305, 306, 20, 0, 307, 308, + 309, 21, 310, 311, 0, 23, 0, 617, 0, 312, + 313, 314, 315, 316, 26, 0, 27, 318, 0, 0, + 0, 319, 0, 0, 0, 0, 0, 320, 0, 0, + 898, 0, 0, 0, 0, 0, 0, 0, 322, 323, + 899, 0, 0, 0, 0, 0, 325, 326, 327, 0, + 620, 0, 0, 900, 622, 7, 8, 9, 10, 167, + 12, 300, 301, 302, 730, 303, 14, 0, 0, 0, + 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 304, 17, 18, 19, 0, 305, 306, 20, 0, + 307, 308, 309, 21, 310, 311, 0, 23, 0, 617, + 0, 312, 313, 314, 315, 316, 26, 0, 27, 28, + 0, 0, 0, 319, 0, 0, 0, 0, 0, 320, + 0, 0, 1180, 0, 0, 0, 0, 0, 0, 0, + 322, 323, 1181, 0, 0, 0, 0, 0, 325, 326, + 327, 0, 620, 0, 0, 1182, 622, 299, 8, 9, + 10, 0, 12, 300, 301, 302, 0, 303, 14, 0, + 0, 0, 329, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 304, 17, 18, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 617, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 318, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 898, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 899, 0, 0, 0, 0, 0, + 325, 326, 327, 0, 620, 0, 0, 900, 622, 7, + 8, 9, 10, 0, 12, 300, 301, 302, 0, 303, + 14, 0, 0, 0, 329, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 304, 17, 18, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 0, 23, 0, 617, 0, 312, 313, 314, 315, 316, + 26, 0, 27, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 0, 1180, 0, 0, 0, + 0, 0, 0, 0, 322, 323, 1181, 0, 0, 0, + 0, 0, 325, 326, 327, 0, 620, 0, 0, 1182, + 622, 299, 8, 9, 10, 0, 12, 533, 301, 302, + 0, 303, 14, 0, 0, 0, 329, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 304, 17, 18, + 19, 0, 305, 306, 20, 0, 307, 308, 309, 21, + 310, 311, 0, 23, 0, 0, 0, 312, 313, 314, + 315, 316, 26, 0, 27, 318, 0, 0, 0, 319, + 0, 0, 0, 0, 0, 320, 0, 0, 552, 0, + 0, 0, 0, 0, 0, 0, 322, 323, 553, 0, + 0, 0, 0, 0, 325, 326, 327, 299, 8, 9, + 10, 554, 12, 533, 301, 302, 0, 303, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 329, 0, + 0, 0, 16, 304, 17, 0, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 318, 0, 0, 1404, 319, 0, 0, 0, 0, + 0, 320, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 324, 0, 0, 0, 0, 0, + 325, 326, 327, 0, 0, 0, 0, 328, 299, 8, + 9, 10, 167, 12, 300, 301, 302, 0, 303, 14, + 0, 0, 0, 0, 329, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 304, 17, 18, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 27, 318, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 320, 0, 0, 321, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, + 0, 325, 326, 327, 7, 8, 9, 10, 328, 12, + 533, 301, 302, 0, 303, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 329, 0, 0, 0, 16, + 304, 17, 18, 19, 0, 305, 306, 20, 0, 307, + 308, 309, 21, 310, 311, 0, 23, 0, 0, 0, + 312, 313, 314, 315, 316, 26, 0, 27, 28, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 320, 0, + 0, 1494, 0, 0, 0, 0, 0, 0, 0, 322, + 323, 1495, 0, 0, 0, 0, 0, 325, 326, 327, + 299, 8, 9, 10, 1496, 12, 300, 301, 302, 0, + 303, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 329, 0, 0, 0, 16, 304, 17, 0, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 0, 0, 312, 313, 314, 315, + 316, 26, 0, 317, 318, 0, 0, 0, 319, 0, + 0, 0, 0, 0, 320, 0, 0, 321, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 0, 325, 326, 327, 299, 8, 9, 10, + 328, 12, 300, 301, 302, 0, 303, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 329, 0, 0, + 0, 16, 304, 17, 0, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 318, 0, 0, 0, 319, 0, 0, 0, 0, 0, + 320, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 0, 322, 323, 324, 0, 0, 0, 0, 0, 325, + 326, 327, 299, 8, 9, 10, 328, 12, 533, 301, + 302, 0, 303, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 329, 0, 0, 0, 16, 304, 17, + 0, 19, 0, 305, 306, 20, 0, 307, 308, 309, + 21, 310, 311, 0, 23, 0, 0, 0, 312, 313, + 314, 315, 316, 26, 0, 27, 318, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 320, 0, 0, 321, + 0, 0, 0, 0, 0, 0, 0, 322, 323, 324, + 0, 0, 0, 0, 0, 325, 326, 327, 299, 8, + 9, 10, 328, 12, 533, 301, 302, 0, 303, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, + 0, 0, 0, 16, 304, 17, 0, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 27, 318, 566, 0, 0, 0, 0, 0, 0, + 0, 0, 320, 0, 0, 321, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, + 0, 325, 326, 327, 299, 8, 9, 10, 567, 12, + 533, 301, 302, 0, 303, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 329, 0, 0, 0, 16, + 304, 17, 0, 19, 0, 305, 306, 20, 0, 307, + 308, 309, 21, 310, 311, 0, 23, 0, 0, 0, + 312, 313, 314, 315, 316, 26, 0, 27, 318, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, + 0, 321, 0, 0, 0, 0, 0, 0, 0, 322, + 323, 324, 0, 0, 0, 0, 0, 325, 326, 327, + 0, 0, 0, 0, 328, 605, 299, 8, 9, 10, + 0, 12, 533, 301, 302, 0, 303, 14, 0, 0, + 0, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 304, 17, 18, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 552, 0, 0, 0, 0, 0, 0, + 0, 322, 323, 553, 0, 0, 0, 0, 0, 325, + 326, 327, 1140, 8, 9, 10, 554, 12, 533, 301, + 302, 0, 303, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 329, 0, 0, 0, 16, 304, 17, + 0, 19, 0, 305, 306, 20, 0, 307, 308, 309, + 21, 310, 311, 0, 23, 0, 0, 0, 312, 313, + 314, 315, 316, 26, 0, 27, 318, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 320, 0, 0, 321, + 0, 0, 0, 0, 0, 0, 0, 322, 323, 324, + 0, 0, 0, 0, 0, 325, 326, 327, 7, 8, + 9, 10, 328, 12, 300, 301, 302, 0, 303, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, + 0, 0, 0, 16, 304, 17, 18, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 320, 0, 0, 1494, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 1495, 0, 0, 0, 0, + 0, 325, 326, 327, 299, 8, 9, 10, 1496, 12, + 533, 301, 302, 0, 303, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 329, 0, 0, 0, 16, + 304, 17, 0, 19, 0, 305, 306, 20, 0, 307, + 308, 309, 21, 310, 311, 0, 23, 0, 0, 0, + 312, 313, 314, 315, 316, 26, 0, 27, 318, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, + 0, 321, 0, 0, 0, 0, 0, 0, 0, 322, + 323, 324, 0, 0, 0, 0, 0, 325, 326, 327, + 299, 8, 9, 10, 534, 12, 533, 301, 302, 0, + 303, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 329, 0, 0, 0, 16, 304, 17, 0, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 0, 0, 312, 313, 314, 315, + 316, 26, 0, 27, 318, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 320, 0, 0, 321, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 0, 325, 326, 327, 299, 8, 9, 10, + 537, 12, 533, 301, 302, 0, 303, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 329, 0, 0, + 0, 16, 304, 17, 0, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 6, 321, 7, 8, 9, 10, 11, 12, + 13, 322, 323, 324, 0, 14, 0, 0, 0, 325, + 326, 327, 0, 0, 0, 0, 328, 0, 0, 16, 0, 17, 18, 0, 0, 0, 0, 20, 0, 0, - 0, 0, 21, 0, 0, 642, 23, 83, 636, 0, - 0, 0, 0, 0, 248, 26, 0, 27, 28, 0, - 248, 0, 0, 0, 0, 0, 0, 145, 145, 145, - 0, 1172, -387, 8, 9, -387, -387, 12, 246, 145, - 0, 1173, 0, 14, 0, 0, 0, 0, 0, 32, - 0, 639, 0, 0, 1174, 641, 0, 16, 0, 17, - -387, 0, 0, 0, 0, 20, 0, 0, 0, 0, - -387, 0, 0, 0, 23, 0, 636, 0, 642, 0, - 642, 0, 0, 26, 0, 130, 131, 0, 0, 0, - 0, 642, 0, 0, 0, 941, 941, 941, 0, 637, - 7, 8, 9, 10, 214, 215, 216, 0, 0, 638, - 0, 14, 145, 0, 145, 0, 0, -387, 0, 639, - 0, 248, 640, 641, 0, 145, 0, 248, 18, 945, - 945, 945, 0, 20, 0, 0, 0, 660, 21, 642, - 642, 642, 23, 0, 636, 0, 0, 0, 0, 0, - 0, 26, 0, 27, 28, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 248, - 0, 248, 0, 145, 145, 651, 0, 194, 0, 0, - 0, 51, 51, 0, 152, 32, 51, 0, 941, 0, - 1438, 0, 0, 51, 598, 599, 600, 601, 602, 603, - 604, 605, 606, 607, 608, 609, 51, 0, 51, 795, - 8, 507, 10, 205, 12, 206, 0, 0, 0, 0, - 14, 0, 945, 0, 0, 0, 0, 0, 0, 0, - 0, 254, 0, 0, 16, 248, 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, 145, 27, 28, 0, 0, 145, 0, 797, 83, - 0, 0, 0, 0, 0, 0, 30, 0, 0, 248, - 0, 248, 0, 0, 396, 396, 31, 51, 0, 0, - 0, 51, 51, 0, 32, 254, 0, 51, 0, 33, - 152, 152, 152, 0, 0, 0, 0, 431, 0, 248, - 0, 0, 0, 0, 145, 145, 51, 145, 0, 0, - 51, 0, 0, 0, 0, 0, 51, 51, 642, 642, - 642, 642, 642, 0, 0, 0, 642, 0, 0, 0, - 0, 0, 0, 0, 51, 51, 152, 0, 0, 0, - 0, 0, 0, 0, 254, 0, 0, 0, 0, 941, - 941, 941, 145, 145, 145, 145, 651, 0, 0, 0, - 145, 0, 0, 51, 0, 0, 506, 1018, 7, 8, - 507, 10, 167, 12, 13, 0, 0, 0, 0, 14, - 0, 0, 0, 945, 945, 945, 51, 0, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, - 51, 20, -525, 0, 1018, 0, 21, 0, 0, 0, - 23, 508, 0, 168, 7, 8, 9, 10, 0, 26, - 246, 27, 28, 0, 0, 509, 0, 510, 0, 0, - 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 18, 642, 642, 31, 642, 0, 0, 0, - 0, 0, 21, 32, 0, 0, 0, 0, 33, 0, + 0, 0, 21, 329, 0, 0, 23, 0, 0, 437, 0, 0, 0, 0, 0, 26, 0, 27, 28, 0, - 575, 0, 0, 0, -525, 0, 0, 145, 145, 0, - 145, 193, 0, 0, 0, 0, 0, 396, 0, 0, - 0, 194, 0, 0, 0, 254, 0, 0, 0, 32, - 51, 0, 0, 0, 195, 1425, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 145, 651, 145, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 396, 248, 0, 0, 0, 0, - 0, 1018, 0, 0, 0, 51, 0, 0, 0, 506, - 0, 7, 8, 507, 10, 167, 12, 13, 0, 0, - 51, 0, 14, 51, 0, 0, 0, 0, 0, 431, - 431, 431, 0, 0, 0, 51, 16, 0, 17, 18, - 19, 0, 0, 51, 20, -526, 0, 0, 0, 21, - 0, 0, 0, 23, 508, 0, 168, 0, 0, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 509, 0, - 510, 51, 0, 51, 0, 152, 152, 152, 30, 0, - 945, 51, 0, 0, 0, 0, 51, 0, 31, 51, - 0, 0, 1233, 1234, 9, 10, 32, 0, 0, 0, - 0, 33, 0, 8, 9, 0, 0, 12, 13, 0, - 0, 0, 51, 14, 51, 0, 0, -526, 0, 51, - 51, 0, 51, 0, 0, 0, 0, 16, 0, 17, - 21, 0, 0, 0, 0, 20, 0, 0, 0, 0, - 0, 0, 0, 26, 23, 27, 28, 945, 945, 945, - 0, 1235, 0, 26, 575, 130, 131, 575, 0, 193, - 0, 0, 0, 248, 0, 0, 0, 0, 145, 194, - 0, 0, 575, 575, 575, 0, 0, 32, 0, 78, - 0, 0, 195, 0, 0, 0, 0, 575, 0, 0, - 0, 7, 8, 9, 10, 0, 6, 13, 7, 8, - 9, 10, 11, 12, 13, 78, 78, 0, 78, 14, - 78, 0, 0, 0, 0, 0, 0, 78, 0, 18, - 0, 0, 15, 16, 0, 17, 18, 19, 0, 21, - 78, 20, 78, 0, 0, 254, 21, 0, 0, 22, - 23, 24, 26, 25, 27, 28, 0, 0, 575, 26, - 0, 27, 28, 0, 0, 29, 0, 0, 474, 0, - 0, 0, 0, 0, 0, 30, 0, 51, 475, 0, - 0, 0, 0, 0, 0, 31, 32, 0, 0, 0, - 0, 476, 0, 32, 0, 0, 0, 0, 33, 0, - 0, 396, 0, 34, 0, 0, 0, 159, 396, 0, - 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, - 0, 78, 0, 0, 0, 78, 78, 0, 0, 204, - 0, 78, 0, 0, 78, 78, 78, 0, 0, 0, - 0, 0, 0, 0, 795, 796, 9, 10, 0, 0, - 78, 0, 0, 0, 78, 7, 8, 9, 10, 0, - 78, 78, 0, 51, 0, 0, 0, 51, 0, 0, - 0, 0, 0, 0, 51, 51, 0, 51, 78, 78, - 78, 0, 21, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 21, 0, 26, 51, 27, 28, 0, - 0, 1060, 0, 797, 0, 0, 26, 78, 27, 28, - 0, 193, 192, 0, 0, 0, 0, 254, 0, 0, - 0, 194, 193, 159, 159, 159, 51, 0, 0, 32, - 78, 0, 194, 0, 195, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 78, 195, 0, 0, 0, 204, - 0, 748, 575, 300, 8, 9, 10, 167, 12, 301, - 302, 303, 749, 304, 14, 0, 0, 204, 204, 478, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 204, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, - 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 659, 0, 0, 329, 78, 0, 0, 0, 575, 575, - 575, 0, 0, 0, 431, 254, 0, 0, -798, 0, - 330, 0, 0, 7, 8, 9, 10, 205, 12, 206, - 0, 0, 548, 0, 14, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 16, 78, - 17, 18, 51, 51, 152, 0, 20, 0, 0, 254, - 0, 21, 0, 0, 78, 23, 0, 78, 0, 0, - 0, 0, 0, 0, 26, 0, 27, 28, 0, 78, - 207, 0, 644, 644, 644, 0, 0, 78, 0, 0, + 0, 29, 0, 7, 8, 9, 10, 167, 12, 13, + 0, 30, 996, 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, 1033, 8, + 763, 10, 205, 12, 206, 0, 0, 0, 0, 14, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 1204, 0, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 33, 0, 78, 0, 78, 0, 78, - 78, 78, 0, 0, 0, 78, 0, 0, 0, 0, - 78, 0, 0, 78, 0, 0, 0, 0, 204, 0, - 51, 0, 0, 0, 0, 51, 0, 0, 51, 7, - 8, 9, 10, 167, 12, 13, 78, 0, 78, 0, - 14, 0, 0, 78, 78, 0, 78, 0, 0, 0, - 0, 0, 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, 204, 0, 204, 0, 478, 478, - 478, 0, 0, 0, 204, 0, 30, 0, 0, 204, - 254, 0, 204, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 0, 33, - 0, 51, 51, 152, 152, 152, 0, 254, 0, 51, - 0, 0, 204, 0, 870, 0, 300, 8, 9, 10, - 0, 12, 552, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 1204, 1204, 1204, 0, 0, 0, 0, 0, - 659, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 78, 0, 0, 320, -788, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 202, 0, 0, 326, - 327, 328, 0, 0, 0, 0, 329, 0, 0, 0, - 78, 78, 78, 78, 0, 0, 0, 906, 0, 0, - 0, 257, 0, 330, 261, 0, 51, 51, 0, 51, - 0, 644, 644, 0, 644, 0, 0, 0, 0, 0, - 0, 644, 0, 0, 0, 257, 0, 365, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, - 204, 78, 0, 0, 0, 51, 51, 51, 78, 78, - 0, 78, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, - 78, 0, 0, 0, 0, 0, 0, 0, 0, 985, - 0, 985, 985, 0, 644, 0, 0, 0, 0, 0, - 0, 7, 8, 9, 10, 0, 202, 535, 0, 0, - 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 202, 202, 202, 0, 0, 18, - 0, 0, 0, 0, 484, 0, 985, 0, 0, 21, - 0, 0, 0, 0, 0, 0, 0, 204, 204, 0, - 204, 0, 26, 202, 27, 28, 0, 0, 0, 1204, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 204, - 0, 7, 8, 9, 10, 167, 12, 13, 194, 261, - 1035, 0, 14, 0, 0, 0, 32, 0, 0, 0, - 0, 195, 0, 257, 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, 548, - 548, 548, 26, 0, 27, 28, 1204, 1204, 1204, 0, - 0, 644, 0, 0, 0, 0, 0, 0, 30, 0, - 659, 0, 0, 0, 0, 0, 0, 51, 31, 0, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 78, 78, 78, 0, - 0, 0, 0, 0, 0, 257, 261, 0, 0, 0, - 0, 7, 8, 9, 10, 205, 12, 206, 0, 0, - 0, 0, 14, 0, 644, 0, 644, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 644, 17, 18, - 0, 644, 644, 644, 20, 1206, 0, 0, 0, 21, - 0, 0, 0, 23, 0, 202, 0, 0, 0, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 1435, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, - 0, 0, 0, 0, 78, 985, 985, 1177, 31, 78, - 0, 0, 78, 0, 0, 0, 32, 0, 0, 0, - 0, 33, 0, 0, 0, 7, 8, 9, 10, 205, - 12, 206, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 202, 0, 202, 0, 202, 202, 202, 0, 0, - 16, 202, 17, 18, 1177, 0, 202, 0, 20, 202, + 31, 0, 0, 16, 0, 17, 18, 0, 32, 0, + 0, 20, 0, 33, 0, 0, 21, 0, 0, 0, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 27, 28, 0, 0, 0, 0, 1035, 0, 0, + 0, 0, 0, 0, 0, 30, 7, 8, 9, 10, + 205, 12, 206, 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, 1421, 0, 7, 8, 9, 10, 167, + 12, 13, 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, - 0, 102, 0, 0, 0, 0, 0, 0, 0, 202, - 121, 102, 30, 204, 0, 0, 0, 102, 102, 0, - 102, 1489, 31, 0, 0, 78, 78, 78, 78, 78, - 32, 0, 0, 78, 0, 33, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 235, 0, 0, 0, 1206, 1206, 1206, 0, - 0, 0, 0, 0, 0, 0, 906, 906, 0, 906, - 0, 1490, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 593, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 389, 0, 121, 985, 985, 1177, 1177, 1177, 0, - 102, 102, 985, 0, 0, 0, 0, 102, 102, 0, - 0, 102, 102, 102, 0, 417, 102, 102, 102, 0, - 0, 257, 261, 0, 0, 1177, 1177, 1177, 0, 0, - 78, 78, 0, 78, 0, 0, 0, 202, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1233, 127, - 128, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, - 78, 78, 0, 0, 0, 0, 202, 0, 202, 202, - 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, - 0, 27, 28, 0, 0, 235, 102, 1235, 0, 0, - 0, 0, 0, 0, 0, 30, 0, 0, 0, 985, - 985, 0, 985, 202, 0, 31, 102, 0, 0, 0, - 0, 0, 0, 32, 202, 202, 0, 202, 33, 0, - 0, 570, 0, 300, 8, 9, 10, 167, 12, 301, - 302, 303, 749, 304, 14, 0, 202, 0, 204, 0, - 204, 0, 0, 0, 0, 102, 0, 0, 16, 305, - 17, 18, 19, 1206, 306, 307, 20, 484, 308, 309, - 310, 21, 311, 312, 0, 23, 0, 636, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 319, -312, 0, - 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 937, 0, 0, 102, 0, 102, 102, 0, 323, 324, - 938, 7, 8, 9, 10, 0, 326, 327, 328, 0, - 639, 0, 0, 939, 641, 0, 0, 0, 0, 0, - 1206, 1206, 1206, 7, 8, 9, 10, 0, 0, 18, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 21, - 102, 78, 478, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 0, 102, - 0, 21, 0, 0, 0, 0, 102, 0, 474, 102, - 0, 0, 0, 0, 26, 0, 27, 28, 475, 0, - 1432, 102, 0, 0, 0, 0, 32, 0, 0, 0, - 193, 476, 0, 0, 0, 257, 261, 257, 0, 0, - 194, 0, 0, 0, 0, 0, 0, 0, 32, 478, - 478, 478, 0, 195, 0, 0, 0, 0, 8, 9, - 0, 205, 12, 206, 7, 8, 9, 10, 14, 0, - 204, 0, 202, 202, 1175, 0, 0, 0, 0, 257, - 0, 0, 16, 0, 17, 18, 0, 0, 0, 102, - 20, 0, 0, 0, 0, 102, 0, 0, 0, 23, - 0, 0, 21, 0, 0, 0, 0, 0, 26, 261, - 130, 131, 0, 0, 0, 26, 0, 27, 28, 0, - 0, 1175, 1460, 0, -479, -479, -479, -479, -479, -479, - -479, 193, 0, -479, 102, -479, 0, 0, 0, 0, - 0, 194, 0, 0, 0, 0, -479, 0, -479, 32, - 0, 0, -479, 0, 195, 0, 0, -479, 0, 0, - 202, 0, -479, 0, 0, 0, -479, 0, -479, 0, - 0, 0, 0, 0, 0, -479, 0, -479, -479, -479, - -479, -479, 0, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, 0, -479, -479, -479, - 102, -479, -479, -479, -479, -479, -479, 0, -479, 0, - 0, 102, 102, 1461, 102, 102, 0, 0, -479, -479, - -479, 0, -479, 0, 0, 0, 0, 0, 0, 0, - 257, 0, 0, 0, 0, 0, 0, 8, 9, 0, - 167, 12, 13, 0, 0, 0, 0, 14, 0, 0, - 0, 202, 202, 202, 202, 1175, 0, 1297, 0, 202, - 0, 16, 0, 17, 18, 0, 0, 102, 0, 20, - 0, 0, 0, 0, 102, 121, 0, 0, 698, 0, - 0, 168, 1175, 1175, 1175, 0, 235, 26, 0, 130, - 131, 0, 0, 0, 0, 1440, 0, 1308, 1309, 1310, - 10, 167, 12, 301, 302, 303, 0, 304, 14, 1311, - 1015, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, - 1321, 15, 16, 305, 17, 18, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 1322, 23, - 1323, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 1324, 319, 736, 0, 1325, 320, 0, 1015, 0, 0, - 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 325, 0, 202, 202, 0, 202, - 326, 327, 328, 0, 102, 0, 0, 329, 0, 1326, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1441, 330, 0, 0, 0, 0, 0, - 0, 0, 102, 102, 102, 202, 0, 202, 0, 0, - 0, 0, 0, 0, 102, 0, 1307, 0, 1308, 1309, - 1310, 10, 167, 12, 301, 302, 303, 0, 304, 14, - 1311, 0, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, - 1320, 1321, 15, 16, 305, 17, 18, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 1322, - 23, 1323, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 1324, 319, 736, 0, 1325, 320, 0, 0, 0, - 0, 0, 321, 0, 0, 322, 0, 102, 0, 102, - 0, 0, 0, 323, 324, 325, 18, 0, 0, 0, - 102, 326, 327, 328, 0, 0, 0, 0, 329, 1175, - 1326, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 330, 0, 0, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, - 0, 0, 0, 0, 0, 8, 9, 0, 167, 12, - 13, 0, 0, 749, 0, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1175, 1175, 1175, 16, - 0, 17, 18, 0, 0, 1015, 0, 20, 0, 0, - 0, 0, 0, 0, 0, 0, 23, 202, 0, 0, - 0, 0, 0, 0, 0, 26, 0, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 570, 0, 7, 8, - 9, 10, 167, 12, 301, 302, 303, 749, 304, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, - 0, 102, 0, 16, 305, 17, 18, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 636, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 28, -312, 0, 0, 320, 0, 0, 0, - 0, 0, 321, 0, 0, 1201, 0, 0, 0, 102, - 102, 0, 102, 323, 324, 1202, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 639, 0, 0, 1203, 641, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 330, 870, 0, 300, 8, - 9, 10, 167, 12, 301, 302, 303, 0, 304, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1015, 16, 305, 17, 18, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 1531, 0, -788, 320, 0, 0, 1015, - 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 0, 0, 0, 329, 739, - 0, 858, 859, 860, 10, 0, 12, 552, 302, 303, - 0, 304, 14, 0, 0, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, - 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, - 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, - 316, 317, 26, 0, 861, 862, 740, 0, 0, 320, - 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, - 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, - 0, 0, 0, 0, 326, 327, 328, 0, 0, 0, - 0, 329, 863, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1015, 1022, 330, 570, - 0, 300, 8, 9, 10, 0, 12, 301, 302, 303, - 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, - 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, - 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, - 316, 317, 26, 0, 27, 319, -312, 0, 0, 320, - 0, 0, 0, 0, 0, 321, 0, 0, 571, 0, - 0, 0, 0, 0, 0, 0, 323, 324, 572, 0, - 0, 0, 0, 0, 326, 327, 328, 0, 0, 0, - 739, 573, 858, 859, 860, 10, 0, 12, 552, 302, - 303, 0, 304, 14, 0, 0, 0, 0, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, - 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 861, 862, 740, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, - 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, - 0, 0, 329, 863, 739, 0, 858, 859, 860, 10, - 0, 12, 552, 302, 303, 0, 304, 14, 0, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 861, - 862, 740, 0, 0, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 739, 329, 858, 859, 860, - 10, 0, 12, 552, 302, 303, 0, 304, 14, 0, - 0, 0, -483, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 861, 862, 740, 0, 0, 320, 0, 0, 0, 0, - 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 0, 0, 0, 739, 329, 300, 8, - 9, 10, 0, 12, 552, 302, 303, 0, 304, 14, - 0, 0, 0, 1346, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 740, 0, 0, 320, 0, 0, 0, - 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 0, 0, 0, 329, 0, - 570, 0, 7, 8, 9, 10, 1350, 12, 301, 302, - 303, 0, 304, 14, 0, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, - 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 27, 28, -312, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 1505, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 1506, - 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, - 0, 739, 1507, 300, 8, 9, 10, 0, 12, 552, - 302, 303, 0, 304, 14, 0, 0, 0, 0, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 319, 740, 0, - 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 1579, 329, 300, 8, 9, 10, 0, 12, - 301, 302, 303, 0, 304, 14, 0, 0, 0, 0, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, - 0, -196, 320, 0, 0, 0, 0, 0, 321, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, - 0, 0, 0, 870, 329, 300, 8, 9, 10, 0, - 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, - 263, 0, 322, 8, 9, 0, 0, 12, 13, 0, - 323, 324, 325, 14, 0, 0, 0, 0, 326, 327, - 328, 0, 0, 0, 0, 329, 0, 16, 0, 17, - 0, 0, 0, 0, 0, 20, 0, 264, 265, 0, - -788, 0, 330, 0, 23, 0, 266, 0, 0, 0, - 0, 0, 0, 26, 0, 130, 131, 0, 267, 0, - 0, 0, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 0, 0, 289, 290, 291, 0, 0, - 292, 0, 959, 293, 300, 8, 9, 10, 0, 12, - 552, 302, 303, 0, 304, 14, 0, 0, 0, 294, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, - 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, - 0, 0, 0, 961, 329, 300, 8, 9, 10, 0, - 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, - 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, - 328, 0, 0, 0, 1515, 329, 300, 8, 9, 10, - 0, 12, 552, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 300, 8, 9, 10, 329, 12, 552, 302, - 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, - 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 506, 322, - 7, 8, 507, 10, 167, 12, 13, 323, 324, 325, - 0, 14, 0, 0, 0, 326, 327, 328, 0, 0, - 0, 0, 329, 0, 0, 16, 0, 17, 18, 19, - 0, 0, 0, 20, -528, 0, 0, 0, 21, 330, - 909, 0, 23, 508, 0, 168, 0, 0, 0, 0, - 0, 26, 0, 27, 28, 0, 0, 509, 0, 510, - 0, 0, 0, 0, 0, 0, 0, 30, 506, 0, - 7, 8, 507, 10, 167, 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, -527, 0, -528, 0, 21, 0, - 0, 0, 23, 508, 0, 168, 0, 0, 0, 0, - 0, 26, 0, 27, 28, 0, 0, 509, 0, 510, - 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 7, 8, 9, 10, 205, 12, 206, 0, 0, 0, + 0, 14, 30, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 16, 0, 17, 18, 0, + 32, 0, 0, 20, 0, 33, 0, 0, 21, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 27, 28, 7, 8, 9, 10, 214, + 215, 216, 0, 0, 0, 0, 14, 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, 1308, 1309, 1310, 10, 167, 12, 301, - 302, 303, 0, 304, 14, 1311, -527, 1312, 1313, 1314, - 1315, 1316, 1317, 1318, 1319, 1320, 1321, 15, 16, 305, - 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 1322, 23, 1323, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 1324, 319, 736, 0, - 1325, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 0, 329, 0, 1326, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, - 330, 1308, 1309, 1310, 10, 167, 12, 301, 302, 303, - 0, 304, 14, 1311, 0, 1312, 1313, 1314, 1315, 1316, - 1317, 1318, 1319, 1320, 1321, 15, 16, 305, 17, 18, - 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, - 311, 312, 1322, 23, 1323, 0, 0, 313, 314, 315, - 316, 317, 26, 0, 1324, 319, 736, 0, 1325, 320, - 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, - 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, - 0, 0, 0, 0, 326, 327, 328, 0, 0, 0, - 0, 329, 0, 1326, 0, 1308, 1309, 1310, 10, 167, - 12, 301, 302, 303, 0, 304, 14, 1311, 330, 1312, - 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 15, - 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 1322, 23, 1323, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 1324, 319, - 1556, 0, 1325, 320, 0, 0, 0, 0, 0, 321, - 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, - 328, 0, 0, 0, 0, 329, 0, 1326, 0, 1308, - 1309, 1310, 10, 167, 12, 301, 302, 303, 0, 304, - 14, 1311, 330, 1312, 1313, 1314, 1315, 1316, 1317, 1318, - 1319, 1320, 1321, 15, 16, 305, 17, 18, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 1322, 23, 1323, 0, 0, 313, 314, 315, 316, 317, - 26, 0, 1324, 319, 0, 0, 1325, 320, 0, 0, - 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 0, 0, 0, 0, 329, - 0, 1326, 300, 8, 9, 10, 167, 12, 301, 302, - 303, 749, 304, 14, 0, 0, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, - 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 636, 0, 313, 314, - 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 937, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 938, - 0, 0, 0, 0, 0, 326, 327, 328, 0, 639, - 0, 0, 939, 641, 7, 8, 9, 10, 167, 12, - 301, 302, 303, 749, 304, 14, 0, 0, 0, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 636, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 28, 0, - 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, - 0, 1201, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 1202, 0, 0, 0, 0, 0, 326, 327, 328, - 0, 639, 0, 0, 1203, 641, 300, 8, 9, 10, - 0, 12, 301, 302, 303, 0, 304, 14, 0, 0, - 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 636, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 321, 0, 0, 937, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 938, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 639, 0, 0, 939, 641, 7, 8, - 9, 10, 0, 12, 301, 302, 303, 0, 304, 14, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 636, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 321, 0, 0, 1201, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 1202, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 639, 0, 0, 1203, 641, - 300, 8, 9, 10, 0, 12, 552, 302, 303, 0, - 304, 14, 0, 0, 0, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, - 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, - 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, - 317, 26, 0, 27, 319, 0, 0, 0, 320, 0, - 0, 0, 0, 0, 321, 0, 0, 571, 0, 0, - 0, 0, 0, 0, 0, 323, 324, 572, 0, 0, - 0, 0, 0, 326, 327, 328, 300, 8, 9, 10, - 573, 12, 552, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 0, 0, 1418, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 0, 329, 300, 8, 9, - 10, 167, 12, 301, 302, 303, 0, 304, 14, 0, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 27, 319, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 7, 8, 9, 10, 329, 12, 552, - 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, - 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 28, 0, 0, - 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 1505, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 1506, 0, 0, 0, 0, 0, 326, 327, 328, 300, - 8, 9, 10, 1507, 12, 301, 302, 303, 0, 304, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, - 26, 0, 318, 319, 0, 0, 0, 320, 0, 0, - 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 300, 8, 9, 10, 329, - 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, - 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, - 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, - 328, 300, 8, 9, 10, 329, 12, 552, 302, 303, - 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, - 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, - 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, - 316, 317, 26, 0, 27, 319, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, - 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, - 0, 0, 0, 0, 326, 327, 328, 300, 8, 9, - 10, 329, 12, 552, 302, 303, 0, 304, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, - 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 27, 319, 585, 0, 0, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 300, 8, 9, 10, 586, 12, 552, - 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, - 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 0, 329, 624, 300, 8, 9, 10, 0, - 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 571, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 572, 0, 0, 0, 0, 0, 326, 327, - 328, 1161, 8, 9, 10, 573, 12, 552, 302, 303, - 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, - 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, - 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, - 316, 317, 26, 0, 27, 319, 0, 0, 0, 320, - 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, - 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, - 0, 0, 0, 0, 326, 327, 328, 7, 8, 9, - 10, 329, 12, 301, 302, 303, 0, 304, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, - 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 1505, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 1506, 0, 0, 0, 0, 0, - 326, 327, 328, 300, 8, 9, 10, 1507, 12, 552, - 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, - 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 300, - 8, 9, 10, 553, 12, 552, 302, 303, 0, 304, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, - 26, 0, 27, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 300, 8, 9, 10, 556, - 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, - 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, - 328, 0, 0, 8, 9, 329, 167, 12, 13, 0, - 0, 1550, 0, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 330, 0, 0, 0, 0, 16, 0, 17, - 18, 0, 0, 0, 0, 20, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 130, 131, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 0, 0, 0, 0, 1261, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 677, 0, 0, 1546, 588, 589, 590, 591, 592, 593, - 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, - 604, 605, 606, 607, 608, 609, 1564, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 0, 601, 602, 603, 604, 605, 606, - 607, 608, 609 + 0, 0, 0, 18, 0, 32, 0, 0, 20, 0, + 33, 0, 0, 21, 0, 0, 0, 23, 0, 617, + 0, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 8, 9, 0, 167, 12, 13, 0, 0, 0, 0, + 14, 0, 193, 8, 9, 0, 167, 12, 13, 0, + 0, 730, 194, 14, 16, 0, 17, 18, 0, 0, + 32, 0, 20, 0, 0, 1424, 0, 16, 0, 17, + 18, 679, 0, 0, 168, 20, 0, 0, 0, 0, + 26, 0, 130, 131, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 130, 131, 8, 9, 0, + 167, 12, 13, 0, 0, 1545, 0, 14, 0, 0, + 8, 9, 0, 205, 12, 206, 0, 0, 0, 0, + 14, 16, 0, 17, 18, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 16, 0, 17, 18, 23, 0, + 0, 0, 20, 0, 0, 0, 0, 26, 0, 130, + 131, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 130, 131, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 0, 0, + 0, 0, 1236, 575, 576, 577, 578, 579, 580, 581, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 0, + 1565, 1559, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 0, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 576, 577, 578, 579, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, + 590 }; static const short yycheck[] = { 4, - 174, 161, 209, 23, 176, 4, 149, 150, 402, 175, - 355, 402, 126, 80, 734, 156, 62, 4, 251, 349, - 482, 80, 355, 4, 402, 455, 14, 4, 134, 898, - 35, 511, 84, 513, 46, 583, 35, 42, 55, 709, - 247, 521, 209, 30, 31, 90, 733, 92, 35, 304, - 305, 218, 57, 4, 35, 42, 133, 134, 35, 640, - 460, 42, 620, 663, 76, 42, 647, 72, 373, 124, - 42, 217, 218, 42, 55, 440, 57, 144, 4, 84, - 133, 4, 337, 88, 35, 90, 11, 92, 1400, 296, - 1327, 42, 137, 780, 140, 83, 1486, 84, 1337, 42, - 42, 1487, 107, 108, 12, 1344, 47, 54, 58, 35, - 156, 57, 35, 11, 11, 47, 42, 717, 106, 42, - 356, 357, 355, 64, 62, 1488, 54, 38, 33, 59, - 54, 136, 137, 84, 139, 0, 203, 62, 1528, 75, - 1510, 77, 349, 54, 37, 75, 74, 577, 98, 136, - 74, 59, 93, 94, 62, 136, 64, 1527, 175, 140, - 165, 93, 149, 150, 169, 1, 212, 33, 0, 503, - 108, 176, 408, 409, 220, 782, 1, 1, 165, 641, - 306, 307, 169, 108, 165, 136, 245, 794, 169, 716, - 136, 237, 169, 165, 175, 176, 322, 169, 1561, 325, - 169, 213, 328, 262, 109, 331, 193, 194, 155, 335, - 108, 108, 1582, 136, 165, 822, 109, 343, 169, 47, - 1606, 828, 58, 1531, 27, 555, 169, 169, 31, 59, - 176, 1621, 490, 58, 58, 62, 74, 62, 62, 12, - 245, 222, 165, 169, 25, 27, 169, 74, 9, 31, - 1487, 402, 1491, 200, 1566, 47, 59, 60, 245, 42, - 248, 64, 60, 74, 245, 93, 94, 1575, 526, 346, - 95, 95, 3, 4, 5, 6, 59, 58, 60, 109, - 108, 62, 64, 149, 150, 151, 59, 393, 448, 62, - 342, 58, 297, 346, 245, 1061, 1062, 64, 1537, 245, - 61, 93, 94, 33, 7, 735, 976, 3, 4, 5, - 41, 109, 1078, 358, 95, 660, 108, 468, 4, 245, - 487, 699, 245, 54, 329, 56, 57, 109, 935, 195, - 385, 474, 475, 60, 37, 108, 59, 342, 48, 897, - 486, 487, 4, 5, 1583, 350, 8, 9, 494, 35, - 59, 93, 14, 358, 359, 342, 93, 88, 939, 59, - 56, 57, 756, 728, 729, 756, 28, 355, 30, 59, - 47, 93, 359, 54, 36, 75, 4, 77, 359, 525, - 60, 60, 109, 45, 689, 108, 169, 404, 4, 5, - 59, 342, 54, 74, 56, 57, 629, 402, 544, 108, - 405, 1270, 983, 74, 450, 8, 9, 35, 359, 74, - 47, 14, 47, 359, 60, 402, 93, 94, 108, 149, - 150, 151, 752, 404, 951, 402, 209, 954, 664, 109, - 109, 93, 980, 36, 217, 218, 359, 442, 54, 108, - 56, 57, 45, 93, 47, 571, 572, 493, 1048, 1030, - 107, 402, 511, 498, 513, 442, 93, 94, 93, 33, - 519, 442, 521, 468, 247, 195, 1232, 25, 995, 996, - 442, 108, 47, 442, 936, 1241, 1242, 47, 1244, 47, - 1087, 468, 1089, 47, 496, 47, 31, 474, 475, 640, - 93, 442, 58, 498, 107, 108, 647, 47, 1185, 480, - 900, 518, 514, 515, 47, 550, 511, 488, 513, 25, - 4, 27, 524, 296, 519, 47, 521, 468, 93, 442, - 1389, 64, 60, 93, 511, 93, 513, 54, 47, 93, - 511, 93, 513, 4, 521, 1222, 54, 518, 519, 44, - 521, 35, 58, 93, 108, 550, 62, 74, 553, 54, - 93, 556, 57, 727, 74, 560, 561, 562, 563, 564, - 511, 93, 513, 54, 35, 511, 349, 513, 573, 621, - 521, 42, 518, 519, 93, 521, 150, 151, 583, 95, - 109, 586, 12, 977, 690, 511, 977, 513, 511, 1019, - 513, 697, 47, 1174, 54, 521, 58, 1077, 521, 977, - 945, 93, 838, 54, 25, 756, 27, 54, 474, 475, - 476, 25, 945, 27, 74, 47, 621, 54, 62, 75, - 697, 195, 1203, 406, 108, 1152, 1153, 47, 774, 59, - 74, 782, 62, 62, 621, 640, 47, 58, 93, 94, - 847, 62, 647, 794, 58, 108, 62, 692, 62, 666, - 637, 638, 94, 640, 54, 3, 4, 5, 74, 442, - 647, 93, 62, 651, 1126, 136, 3, 4, 5, 108, - 621, 822, 1359, 93, 95, 31, 108, 828, 698, 108, - 58, 95, 93, 94, 62, 666, 941, 692, 705, 640, - 707, 708, 1458, 1459, 165, 47, 647, 47, 169, 108, - 25, 706, 27, 486, 487, 710, 1106, 1107, 56, 57, - 11, 494, 945, 733, 64, 1049, 329, 1051, 47, 56, - 57, 1055, 8, 9, 705, 706, 707, 708, 14, 7, - 8, 9, 80, 58, 970, 752, 14, 62, 109, 806, - 98, 93, 525, 93, 474, 475, 476, 806, 47, 60, - 36, 756, 47, 31, 62, 329, 815, 47, 36, 45, - 47, 544, 1122, 1123, 93, 1125, 74, 45, 785, 756, - 95, 752, 4, 5, 245, 756, 93, 782, 823, 824, - 3, 826, 60, 909, 935, 141, 798, 60, 939, 794, - 146, 1121, 804, 805, 93, 782, 808, 809, 93, 1199, - 812, 111, 943, 93, 785, 756, 93, 794, 1208, 1209, - 815, 937, 938, 1213, 4, 5, 48, 822, 823, 824, - 54, 826, 74, 828, 56, 57, 977, 62, 815, 1003, - 47, 782, 983, 94, 815, 822, 480, 54, 194, 785, - 74, 828, 62, 794, 488, 1081, 1082, 1083, 80, 1569, - 27, 94, 465, 47, 31, 429, 430, 74, 48, 74, - 54, 1261, 59, 60, 815, 111, 56, 57, 93, 815, - 74, 822, 93, 3, 4, 5, 93, 828, 3, 1030, - 74, 6, 59, 60, 667, 1219, 1220, 1221, 359, 815, - 80, 896, 815, 47, 59, 60, 901, 943, 74, 93, - 54, 475, 476, 259, 1018, 74, 31, 59, 3, 4, - 5, 6, 3, 4, 5, 182, 41, 835, 836, 837, - 74, 988, 59, 60, 929, 708, 56, 57, 58, 11, - 935, 56, 57, 108, 939, 109, 1087, 59, 1089, 93, - 553, 59, 60, 556, 108, 70, 41, 560, 935, 108, - 937, 938, 939, 48, 74, 80, 1356, 945, 59, 60, - 573, 56, 57, 88, 108, 56, 57, 54, 93, 752, - 74, 442, 977, 586, 979, 980, 74, 590, 983, 553, - 108, 1411, 556, 109, 935, 80, 1386, 111, 939, 108, - 977, 774, 109, 88, 981, 982, 983, 1427, 572, 573, - 977, 111, 1128, 4, 5, 618, 1336, 27, 3, 4, - 5, 624, 586, 1072, 74, 4, 5, 74, 1077, 54, - 9, 59, 60, 1174, 54, 1030, 977, 62, 74, 1172, - 1173, 111, 983, 3, 4, 5, 6, 111, 1043, 74, - 511, 108, 513, 1030, 108, 1281, 108, 48, 58, 54, - 521, 54, 1203, 48, 108, 56, 57, 62, 1201, 1202, - 8, 56, 57, 419, 847, 54, 422, 56, 57, 74, - 111, 41, 1077, 647, 93, 1201, 1202, 64, 434, 1030, - 1510, 70, 1087, 59, 1089, 1130, 56, 57, 1069, 47, - 1077, 80, 59, 1074, 59, 60, 1077, 1527, 74, 75, - 1087, 77, 1089, 4, 5, 94, 4, 5, 93, 1176, - 83, 84, 1117, 54, 470, 54, 472, 983, 88, 59, - 60, 62, 1552, 4, 5, 1130, 1077, 1521, 109, 485, - 1521, 1077, 60, 74, 59, 60, 1087, 36, 1089, 3, - 4, 5, 64, 7, 8, 9, 64, 48, 59, 60, - 48, 1077, 1582, 108, 1077, 56, 57, 64, 56, 57, - 1590, 108, 62, 1335, 1030, 1185, 60, 31, 1334, 1174, - 1336, 108, 36, 54, 108, 56, 57, 4, 5, 80, - 54, 9, 80, 75, 12, 1172, 1173, 1174, 62, 70, - 54, 1196, 56, 57, 58, 1525, 108, 1196, 1203, 80, - 74, 1327, 108, 64, 3, 4, 5, 6, 64, 1196, - 9, 1611, 1217, 94, 1201, 1202, 1203, 54, 54, 47, - 64, 111, 62, 1174, 59, 62, 62, 1239, 1240, 56, - 57, 59, 31, 61, 62, 59, 64, 74, 74, 103, - 104, 105, 41, 108, 75, 1196, 59, 75, 47, 77, - 108, 64, 1203, 983, 108, 54, 108, 56, 57, 108, - 75, 74, 75, 75, 75, 93, 94, 841, 4, 5, - 1196, 70, 62, 1196, 108, 108, 30, 31, 62, 33, - 108, 80, 78, 79, 80, 81, 82, 83, 84, 88, - 59, 90, 905, 111, 93, 94, 62, 94, 108, 108, - 1030, 108, 88, 57, 74, 59, 1172, 1173, 1174, 111, - 47, 65, 60, 3, 4, 5, 6, 1334, 1525, 1336, - 56, 57, 1327, 108, 111, 108, 939, 108, 108, 111, - 1335, 108, 1337, 109, 108, 1201, 1202, 1203, 1337, 1344, - 1327, 109, 1502, 59, 815, 1344, 64, 64, 1353, 93, - 1337, 41, 59, 1334, 1335, 1336, 108, 1344, 48, 3, - 4, 5, 1505, 1506, 938, 939, 56, 57, 64, 108, - 1521, 4, 5, 108, 108, 1549, 1327, 4, 5, 1505, - 1506, 93, 93, 93, 12, 93, 1337, 141, 109, 109, - 80, 8, 146, 1344, 108, 149, 150, 151, 88, 27, - 109, 1327, 108, 31, 1327, 108, 111, 763, 764, 983, - 766, 1337, 56, 57, 1337, 48, 108, 44, 1344, 47, - 108, 1344, 176, 56, 57, 1437, 108, 54, 182, 56, - 57, 59, 60, 108, 62, 111, 64, 108, 108, 193, - 194, 195, 1172, 1173, 1174, 33, 108, 80, 54, 108, - 7, 8, 9, 108, 62, 209, 1030, 14, 111, 108, - 3, 4, 5, 217, 218, 93, 94, 47, 62, 108, - 108, 1201, 1202, 1203, 31, 96, 1481, 62, 60, 36, - 108, 1486, 1487, 1488, 60, 9, 1491, 1486, 45, 60, - 16, 64, 1491, 108, 1481, 3, 4, 5, 108, 1486, - 1487, 1488, 1507, 60, 1491, 259, 108, 108, 108, 1526, - 777, 54, 108, 56, 57, 58, 1521, 108, 1505, 1506, - 787, 788, 108, 1528, 93, 93, 60, 4, 5, 1528, - 1481, 60, 1537, 54, 1521, 1486, 1487, 1488, 1537, 47, - 1491, 1528, 1554, 93, 111, 1526, 54, 814, 56, 57, - 1537, 93, 819, 1336, 17, 60, 1561, 54, 107, 97, - 1486, 1487, 108, 1486, 1487, 1491, 60, 108, 1491, 108, - 1521, 48, 1438, 108, 1561, 329, 11, 1528, 1583, 56, - 57, 60, 60, 93, 1583, 93, 1537, 11, 60, 59, - 1203, 80, 81, 82, 83, 84, 1583, 64, 60, 1173, - 1174, 108, 1528, 80, 1217, 1528, 1077, 108, 108, 47, - 1561, 1537, 60, 11, 1537, 88, 1621, 90, 60, 92, - 0, 0, 1621, 0, 2, 170, 982, 35, 1202, 1203, - 1425, 690, 1583, 977, 1621, 4, 5, 169, 442, 1505, - 1506, 1507, 165, 519, 1257, 1258, 1259, 1260, 86, 87, - 1185, 405, 406, 91, 92, 93, 94, 1583, 1548, 238, - 1583, 94, 4, 5, 137, 419, 139, 9, 422, 1410, - 1621, 139, 1621, 1271, 428, 429, 430, 299, 963, 740, - 434, 3, 4, 5, 6, 54, 958, 56, 57, 243, - 519, 4, 5, 1359, 1222, 1621, 9, 1074, 1621, 815, - 956, 70, 673, 4, 5, 47, 621, 1320, 1438, 200, - 346, 80, 54, 124, 56, 57, 470, 1337, 472, 41, - 474, 475, 476, 1197, 1569, 479, 48, 1590, 70, 1542, - 80, 485, 486, 487, 56, 57, 490, -1, 80, 1600, - 494, 54, 1525, 56, 57, 1602, 47, 1038, 90, 1353, - -1, 93, 94, 54, 104, 56, 57, 70, 80, 3, - 4, 5, 6, -1, -1, 519, 88, 80, -1, 70, - -1, -1, 526, -1, 1387, 1505, 1506, 1507, 772, 80, - -1, -1, -1, 133, -1, -1, -1, -1, -1, 90, - -1, -1, 93, 94, 144, -1, -1, 41, -1, 553, - 1067, 1068, 556, 1070, 1071, -1, 1073, 1420, 3, 4, - 5, -1, 56, 57, 1170, 1171, -1, 571, 572, 573, - -1, 461, 1178, -1, -1, -1, -1, 821, 468, -1, - -1, -1, 586, 827, -1, -1, 1, -1, 3, 4, - 5, 6, 7, 8, 9, -1, -1, 320, -1, 14, - 3, 4, 5, 203, 3, 4, 5, -1, 7, 8, - 9, 56, 57, 28, 1438, 30, 31, 32, 1481, -1, - -1, 36, -1, -1, 1487, 1488, 41, 30, -1, -1, - 45, 46, 31, 48, -1, 358, -1, 36, 238, 54, - -1, 56, 57, 647, 1507, 60, -1, 62, -1, -1, - -1, 54, 461, 56, 57, 70, -1, 56, 57, 468, - -1, 551, 262, 667, -1, 80, 14, -1, -1, -1, - -1, -1, -1, 88, 22, -1, -1, -1, 93, 3, - 4, 5, 1506, 1507, -1, -1, 930, -1, 932, 1295, - 1296, -1, 1298, -1, 348, 349, 350, -1, 1561, -1, - -1, -1, 706, -1, 708, 709, -1, -1, -1, -1, - -1, -1, 1229, 1230, 1577, -1, -1, 65, 3, 4, - 5, 611, 7, 8, 9, -1, -1, 617, 3, 4, - 5, 6, 56, 57, 9, -1, 1599, 460, 461, 3, - 4, 5, 551, 1606, -1, 468, -1, -1, 752, -1, - 3, 4, 5, 6, 354, -1, 31, -1, -1, 763, - 764, -1, 766, -1, 654, -1, 41, -1, -1, -1, - 774, 56, 57, 777, -1, 498, 124, -1, -1, 54, - -1, 56, 57, 787, 788, 38, 39, 510, 41, -1, - 107, 108, 56, 57, -1, 70, 3, 4, 5, -1, - 148, 54, 611, 56, 57, 80, -1, -1, 617, -1, - 814, -1, 412, 88, 1058, 819, -1, -1, 93, 1063, - -1, -1, -1, -1, -1, -1, -1, 550, 551, -1, - -1, -1, -1, -1, -1, -1, -1, 841, 647, -1, - -1, -1, 1086, -1, 1088, 654, -1, 54, -1, 56, - 57, -1, -1, 1370, 1371, 1372, -1, -1, -1, -1, - 583, -1, 585, -1, -1, 588, 589, -1, 591, 592, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, -1, 611, -1, - 238, 239, -1, -1, 617, -1, -1, -1, -1, 1143, - -1, -1, 502, 251, 3, 4, 5, 6, 7, 8, - 9, 3, 4, 5, 6, 14, -1, -1, -1, -1, - -1, 3, 4, 5, 647, -1, -1, -1, -1, -1, - -1, 654, 31, 937, 938, 939, -1, 36, 1455, 1456, - -1, -1, 41, -1, -1, -1, 45, 547, 47, 41, - 3, 4, 5, 676, 677, 54, 48, 56, 57, -1, - -1, 7, 8, 9, 56, 57, 48, -1, 14, 692, - -1, 70, 976, 321, 56, 57, -1, 981, 982, 983, - -1, 80, -1, 637, 638, 31, -1, -1, 80, 88, - 36, 90, -1, -1, 93, 94, 88, -1, -1, 45, - -1, 54, -1, 56, 57, 895, 896, 7, 8, 9, - -1, 901, 329, -1, 14, 363, -1, 740, -1, -1, - -1, -1, -1, -1, 372, 915, 1030, 917, -1, 919, - -1, 31, 841, -1, 634, -1, 36, 385, 4, 5, - -1, 1285, 8, 9, -1, 45, -1, -1, 14, -1, - 650, 705, -1, 707, 708, -1, 710, 1574, 3, 4, - 5, 6, -1, 1067, 1068, -1, 1070, 1071, -1, 1073, - 36, -1, -1, -1, 797, 965, -1, -1, -1, 45, - -1, 47, -1, -1, -1, 402, 895, 896, 54, -1, - 56, 57, 901, -1, -1, -1, 41, -1, 752, -1, - 823, 824, 47, 826, 70, -1, 915, -1, 917, 54, - 919, 56, 57, -1, 80, -1, -1, -1, 841, 1363, - 1364, 1011, -1, -1, 90, 70, -1, 93, 94, -1, - -1, -1, -1, 1377, 1378, 80, -1, 3, 4, 5, - 863, 7, -1, 88, -1, 90, -1, -1, 93, 94, - 1394, 468, -1, -1, 502, -1, 965, -1, -1, -1, - -1, -1, -1, -1, 30, -1, 1170, 1171, 1172, 1173, - 1174, 37, 895, 896, 1178, -1, -1, 900, 901, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 54, -1, - 56, 57, 915, 847, 917, -1, 919, 1201, 1202, 1203, - -1, -1, 1011, -1, -1, -1, 806, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 1030, 1466, 1467, -1, 1229, 1230, -1, -1, -1, - -1, -1, 955, -1, -1, -1, 553, 585, -1, 556, - -1, -1, 965, 560, 561, 562, 563, 564, -1, 3, - 4, 5, 6, -1, -1, 9, 573, 980, -1, -1, - 3, 4, 5, 6, -1, -1, 920, -1, 922, 586, - 993, -1, -1, -1, -1, -1, -1, 31, -1, 933, - -1, 629, -1, 937, 938, -1, -1, 41, 1011, -1, - -1, 1295, 1296, 47, 1298, -1, -1, 1187, 41, 1189, - 54, 1191, 56, 57, -1, 48, -1, 1030, -1, 3, - 4, 5, 6, 56, 57, 9, 70, 1, -1, 3, - 4, 5, 6, 640, 8, -1, 80, 981, 982, -1, - 647, 1335, 1336, -1, 88, -1, 90, 31, -1, 93, - 94, -1, 1065, 1066, 944, 88, 946, 41, -1, -1, - 698, -1, -1, 47, -1, -1, -1, 41, -1, -1, - 54, 709, 56, 57, 48, -1, 1370, 1371, 1372, -1, - 54, -1, 56, 57, -1, -1, 70, -1, 1187, -1, - 1189, -1, 1191, 1106, 1107, -1, 80, 1110, 988, -1, - -1, -1, 740, -1, 88, 4, 90, -1, -1, 93, - 94, -1, 1292, -1, 88, 14, -1, 1130, -1, -1, - -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, - -1, 30, 31, -1, 33, -1, 35, -1, -1, -1, - -1, -1, -1, 42, 1438, -1, -1, -1, -1, 756, - -1, -1, -1, -1, -1, -1, 55, -1, 57, -1, - -1, 1455, 1456, -1, -1, -1, 65, -1, -1, -1, - -1, -1, -1, 72, 1187, 782, 1189, -1, 1191, -1, - -1, -1, 1072, -1, 83, 84, 1199, 794, -1, -1, - -1, -1, -1, 1292, -1, 1208, 1209, -1, -1, -1, - 1213, -1, -1, -1, -1, -1, -1, 106, -1, -1, - -1, 1505, 1506, 1507, -1, 822, -1, -1, -1, -1, - -1, 828, 1235, -1, -1, -1, 1170, 1171, 1172, 1173, - 3, 4, 5, 6, 1178, 134, -1, 136, -1, -1, - -1, 140, 141, -1, -1, -1, 145, 146, 1261, -1, - 149, 150, 151, -1, -1, -1, -1, 1201, 1202, 1149, - 3, 4, 5, 6, -1, -1, 165, -1, 41, -1, - 169, -1, -1, -1, -1, 48, 175, 176, -1, 1292, - 1574, -1, -1, 56, 57, -1, 1176, -1, 31, 896, - -1, -1, -1, -1, 193, 194, 195, -1, 41, -1, - -1, -1, -1, 1316, -1, -1, -1, 80, -1, -1, - -1, 54, -1, 56, 57, 88, 4, 5, -1, -1, - 8, 9, 929, 222, -1, 963, 14, 70, 935, -1, - -1, -1, 939, -1, -1, -1, -1, 80, 976, 1438, - 239, -1, -1, 1356, -1, 88, 245, -1, 36, 248, - 93, 1295, 1296, -1, 1298, 1368, 1369, 45, -1, 47, - 259, -1, -1, -1, -1, -1, 54, -1, 56, 57, - 977, -1, 979, 1386, -1, -1, 983, -1, 82, -1, - -1, -1, 70, -1, -1, -1, -1, -1, 4, 5, - -1, -1, 80, 9, -1, -1, -1, -1, 297, 298, - -1, -1, 90, -1, -1, 93, 94, -1, 193, 194, - 195, -1, -1, -1, 3, 4, 5, 6, -1, -1, - 9, -1, -1, 1030, -1, 1438, -1, -1, -1, -1, - -1, 47, -1, -1, -1, -1, 1043, -1, 54, -1, - 56, 57, 31, 342, -1, -1, -1, 346, 1461, 348, - 349, 350, 41, -1, 70, 159, -1, -1, -1, -1, - 359, -1, -1, -1, 80, 54, -1, 56, 57, 1107, - -1, -1, -1, -1, 90, -1, 1489, 93, 94, -1, - 1087, 70, 1089, -1, -1, -1, -1, 191, -1, -1, - -1, 80, -1, -1, 393, 3, 4, 5, 6, 88, - 204, -1, -1, 402, 93, 404, 405, -1, -1, -1, - 1117, -1, -1, -1, -1, -1, 4, 5, -1, -1, - 419, 9, -1, 422, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 434, -1, -1, -1, -1, - -1, -1, -1, 442, -1, -1, 54, -1, 56, 57, - 3, 4, 5, 6, 62, 1193, 9, -1, -1, 47, - -1, 1199, 70, -1, -1, -1, 54, 1174, 56, 57, - -1, 470, 80, 472, -1, 474, 475, 476, 31, -1, - 88, 480, 70, -1, -1, 93, 485, -1, 41, 488, - -1, -1, 80, -1, 47, -1, 1203, -1, 1611, -1, - -1, 54, 90, 56, 57, 93, 94, -1, -1, 508, - 1217, -1, 511, -1, 513, -1, -1, 70, -1, 518, - 519, -1, 521, -1, -1, -1, 1, 80, 3, 4, - 5, 6, 7, 8, 9, 88, -1, 90, -1, 14, - 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, - -1, 36, 561, 562, 563, 564, 41, -1, -1, -1, - 45, -1, -1, 48, -1, -1, -1, -1, -1, 54, - -1, 56, 57, 1321, 1322, 470, -1, 472, -1, 474, - 475, 476, -1, -1, -1, 70, -1, -1, -1, -1, - 485, -1, -1, -1, -1, 80, -1, -1, -1, -1, - -1, -1, -1, 88, -1, -1, -1, -1, 93, -1, - -1, -1, 621, 98, 623, -1, -1, -1, -1, -1, - -1, -1, -1, 518, -1, -1, 635, -1, 637, 638, - -1, 640, -1, -1, -1, -1, 1353, -1, 647, 4, - 5, -1, 651, 8, 9, -1, -1, -1, -1, 14, - -1, -1, -1, -1, 1402, -1, -1, 666, -1, -1, - -1, -1, -1, 28, 478, 30, -1, -1, -1, 483, - -1, 36, -1, -1, -1, -1, 1424, 1425, -1, -1, - 45, 690, 47, -1, -1, -1, -1, -1, 697, 54, - -1, 56, 57, -1, -1, -1, 705, 706, 707, 708, - 709, 710, -1, -1, -1, 70, -1, -1, -1, -1, - -1, -1, -1, 527, -1, 80, -1, -1, -1, 533, - -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, - -1, 545, 546, -1, 548, -1, -1, -1, -1, 3, - 4, 5, 6, 752, -1, -1, -1, 756, -1, -1, - -1, 1499, -1, -1, 763, 764, -1, 766, 3, 4, - 5, 6, 7, 8, 9, -1, -1, -1, -1, 14, - -1, -1, -1, 782, -1, -1, 785, 41, -1, -1, - -1, -1, -1, -1, 48, 794, 31, -1, -1, -1, - 1507, 36, 56, 57, -1, -1, 41, -1, 807, -1, - 45, -1, 47, -1, 1521, -1, 815, -1, -1, 54, - -1, 56, 57, 822, -1, -1, -1, -1, -1, 828, - -1, -1, -1, -1, 88, 70, 835, 836, 837, 643, - 644, -1, -1, -1, 648, 80, -1, -1, 847, -1, - -1, -1, -1, 88, -1, 90, -1, -1, 93, 94, - -1, -1, -1, -1, -1, 4, 5, -1, 7, 8, - 9, -1, -1, 12, -1, 14, 4, -1, 763, 764, - -1, 766, -1, -1, -1, -1, 14, -1, -1, 28, - -1, 30, 31, -1, -1, 23, 24, 36, -1, -1, - 785, -1, 30, 31, -1, 33, 45, 35, 47, -1, - -1, -1, -1, -1, 42, 54, -1, 56, 57, -1, - -1, 920, -1, 922, -1, -1, -1, 55, -1, 57, - 929, 70, -1, -1, 933, -1, 935, 65, 937, 938, - 939, 80, -1, -1, 72, -1, 945, 3, 4, 5, - 6, 90, -1, -1, 93, 94, 84, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, - -1, -1, 9, -1, -1, -1, -1, 781, 977, -1, - 979, -1, 981, 982, 983, 41, -1, -1, -1, 793, - -1, -1, 48, -1, 31, -1, -1, -1, -1, -1, - 56, 57, -1, -1, 41, -1, -1, -1, 136, -1, - -1, -1, 140, 141, -1, -1, -1, 54, 146, 56, - 57, 149, 150, 151, -1, 829, -1, 831, -1, -1, - -1, 1030, 88, 70, -1, -1, -1, 165, -1, -1, - -1, 169, -1, 80, 1043, -1, -1, 175, 176, -1, - -1, 88, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, -1, 193, 194, 195, -1, -1, - 1069, -1, -1, -1, -1, 1074, -1, -1, 1077, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1087, -1, - 1089, -1, -1, -1, 222, -1, 981, 982, 983, 903, - 904, -1, 906, 4, 5, -1, -1, 8, 9, -1, - 4, 5, -1, 14, 8, 9, -1, 245, 1117, -1, - 14, -1, -1, 1122, 1123, -1, 1125, 28, -1, 30, - 934, 259, -1, -1, 28, 36, 30, -1, -1, -1, - -1, -1, 36, -1, 45, 1030, -1, -1, -1, -1, - -1, 45, -1, 54, -1, 56, 57, 58, -1, -1, - 54, -1, 56, 57, -1, -1, -1, -1, -1, 297, - 298, 1170, 1171, 1172, 1173, 1174, -1, -1, -1, 1178, - -1, 985, -1, -1, 1069, -1, 348, 349, 350, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1201, 1202, 1203, 3, 4, 5, 6, 7, - 8, 9, -1, -1, 342, -1, 14, -1, 346, -1, - 348, 349, 350, -1, -1, -1, -1, 355, -1, -1, - 28, 359, 30, 31, 32, -1, -1, -1, 36, -1, - -1, -1, -1, 41, -1, -1, -1, 45, -1, -1, - 48, -1, -1, -1, -1, -1, 54, -1, 56, 57, - -1, -1, -1, -1, -1, 393, -1, -1, -1, -1, - -1, -1, 70, -1, 402, -1, 404, 405, -1, -1, - -1, -1, 80, -1, -1, 1170, 1171, 1172, 1173, 1174, - 88, 419, -1, 1178, 422, 93, 1295, 1296, -1, 1298, - 98, -1, 3, 4, 5, 6, 434, -1, 9, -1, - -1, -1, -1, -1, 442, -1, 1201, 1202, 1203, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 31, -1, -1, -1, 1138, 1334, 1335, 1336, -1, -1, - 41, -1, 470, -1, 472, -1, 474, 475, 476, -1, - -1, -1, 480, 54, 1353, 56, 57, 485, -1, 1, - 488, 3, 4, 5, 6, 7, 8, 9, -1, 70, - -1, -1, 14, 1177, -1, -1, -1, -1, -1, 80, - 508, -1, -1, 511, -1, 513, 28, 88, 30, 31, - 518, 519, 93, 521, 36, -1, -1, -1, -1, 41, - -1, -1, -1, 45, -1, -1, 48, -1, -1, -1, - 1295, 1296, 54, 1298, 56, 57, -1, -1, 60, -1, - 1224, -1, -1, -1, 1228, -1, -1, -1, 70, -1, - -1, -1, -1, 561, 562, 563, 564, -1, 80, 1438, - -1, -1, -1, -1, 1248, -1, 88, -1, 1252, -1, - -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, - -1, -1, -1, -1, -1, 637, 638, -1, 640, -1, - -1, -1, -1, 1287, -1, 647, -1, -1, -1, -1, - 31, -1, -1, 621, -1, 623, -1, -1, -1, -1, - 41, -1, -1, -1, -1, -1, 1505, 1506, 1507, 637, - 638, -1, 640, 54, -1, 56, 57, -1, -1, 647, - -1, -1, 1521, -1, -1, -1, -1, 1526, -1, 70, - -1, -1, 660, 3, 4, 5, 6, -1, 666, 80, - -1, -1, -1, 705, -1, 707, 708, 88, 710, -1, - -1, -1, 93, 1438, -1, -1, -1, -1, -1, -1, - -1, 31, 690, -1, -1, -1, -1, -1, -1, -1, - 698, 41, -1, -1, -1, 1379, 1380, 705, 706, 707, - 708, 709, 710, -1, 54, -1, 56, 57, -1, -1, - 752, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, -1, -1, -1, -1, 733, -1, -1, -1, -1, - 80, -1, -1, -1, -1, -1, -1, -1, 88, -1, - 1505, 1506, 1507, 93, 752, -1, -1, -1, 756, -1, - -1, -1, -1, -1, -1, 763, 764, -1, 766, -1, - -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, - 9, -1, 780, 12, 782, 14, -1, 785, -1, -1, - -1, -1, -1, -1, -1, -1, 794, -1, -1, 28, - -1, 30, 31, -1, -1, -1, -1, 36, -1, -1, - -1, -1, 41, -1, -1, 847, 45, 815, 47, -1, - -1, -1, -1, -1, 822, 54, -1, 56, 57, -1, - 828, -1, -1, -1, -1, -1, -1, 835, 836, 837, - -1, 70, 3, 4, 5, 6, 7, 8, 9, 847, - -1, 80, -1, 14, -1, -1, -1, -1, -1, 88, - -1, 90, -1, -1, 93, 94, -1, 28, -1, 30, - 31, -1, -1, -1, -1, 36, -1, -1, -1, -1, - 41, -1, -1, -1, 45, -1, 47, -1, 920, -1, - 922, -1, -1, 54, -1, 56, 57, -1, -1, -1, - -1, 933, -1, -1, -1, 937, 938, 939, -1, 70, - 3, 4, 5, 6, 7, 8, 9, -1, -1, 80, - -1, 14, 920, -1, 922, -1, -1, 88, -1, 90, - -1, 929, 93, 94, -1, 933, -1, 935, 31, 937, - 938, 939, -1, 36, -1, -1, -1, 945, 41, 981, - 982, 983, 45, -1, 47, -1, -1, -1, -1, -1, - -1, 54, -1, 56, 57, 4, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 70, -1, 977, - -1, 979, -1, 981, 982, 983, -1, 80, -1, -1, - -1, 30, 31, -1, 33, 88, 35, -1, 1030, -1, - 93, -1, -1, 42, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 55, -1, 57, 3, - 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, - 14, -1, 1030, -1, -1, -1, -1, -1, -1, -1, - -1, 80, -1, -1, 28, 1043, 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, 1069, 56, 57, -1, -1, 1074, -1, 62, 1077, - -1, -1, -1, -1, -1, -1, 70, -1, -1, 1087, - -1, 1089, -1, -1, 133, 134, 80, 136, -1, -1, - -1, 140, 141, -1, 88, 144, -1, 146, -1, 93, - 149, 150, 151, -1, -1, -1, -1, 156, -1, 1117, - -1, -1, -1, -1, 1122, 1123, 165, 1125, -1, -1, - 169, -1, -1, -1, -1, -1, 175, 176, 1170, 1171, - 1172, 1173, 1174, -1, -1, -1, 1178, -1, -1, -1, - -1, -1, -1, -1, 193, 194, 195, -1, -1, -1, - -1, -1, -1, -1, 203, -1, -1, -1, -1, 1201, - 1202, 1203, 1170, 1171, 1172, 1173, 1174, -1, -1, -1, - 1178, -1, -1, 222, -1, -1, 1, 1185, 3, 4, - 5, 6, 7, 8, 9, -1, -1, -1, -1, 14, - -1, -1, -1, 1201, 1202, 1203, 245, -1, -1, -1, - -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, - 259, 36, 37, -1, 1222, -1, 41, -1, -1, -1, - 45, 46, -1, 48, 3, 4, 5, 6, -1, 54, - 9, 56, 57, -1, -1, 60, -1, 62, -1, -1, - -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, - -1, -1, 31, 1295, 1296, 80, 1298, -1, -1, -1, - -1, -1, 41, 88, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, - 329, -1, -1, -1, 109, -1, -1, 1295, 1296, -1, - 1298, 70, -1, -1, -1, -1, -1, 346, -1, -1, - -1, 80, -1, -1, -1, 354, -1, -1, -1, 88, - 359, -1, -1, -1, 93, 1323, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1334, 1335, 1336, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 393, 1353, -1, -1, -1, -1, - -1, 1359, -1, -1, -1, 404, -1, -1, -1, 1, + 174, 348, 4, 175, 401, 401, 176, 161, 715, 209, + 4, 23, 126, 4, 80, 459, 303, 304, 156, 14, + 354, 481, 621, 250, 714, 42, 4, 134, 690, 628, + 35, 1386, 80, 35, 564, 354, 372, 42, 401, 55, + 42, 35, 84, 697, 35, 42, 246, 859, 42, 336, + 209, 4, 57, 217, 218, 133, 134, 35, 767, 218, + 769, 439, 601, 1302, 42, 644, 454, 72, 777, 46, + 124, 761, 133, 1476, 1475, 783, 11, 1312, 54, 84, + 11, 789, 35, 88, 1319, 90, 42, 92, 83, 42, + 149, 150, 1, 33, 42, 295, 144, 1477, 4, 76, + 1, 60, 107, 108, 502, 47, 84, 59, 0, 1499, + 54, 106, 37, 59, 11, 62, 4, 1, 62, 698, + 1521, 59, 42, 74, 30, 31, 54, 354, 57, 35, + 1520, 136, 137, 0, 139, 12, 42, 75, 33, 59, + 9, 58, 83, 84, 355, 356, 74, 35, 348, 58, + 109, 93, 169, 62, 42, 203, 108, 58, 136, 175, + 165, 62, 622, 109, 169, 62, 108, 169, 165, 109, + 558, 176, 169, 108, 58, 169, 1556, 108, 84, 155, + 60, 98, 59, 136, 109, 62, 95, 165, 896, 536, + 1580, 169, 61, 140, 95, 261, 407, 408, 4, 5, + 47, 27, 1605, 305, 306, 31, 1561, 136, 4, 156, + 12, 108, 165, 169, 62, 74, 169, 4, 5, 321, + 1621, 169, 324, 7, 200, 327, 74, 59, 330, 109, + 136, 108, 334, 60, 60, 4, 213, 1476, 64, 35, + 342, 4, 48, 149, 150, 1480, 93, 176, 136, 169, + 56, 57, 247, 37, 149, 150, 151, 59, 912, 165, + 62, 915, 64, 169, 47, 212, 35, 345, 489, 56, + 57, 59, 35, 220, 80, 937, 108, 165, 4, 42, + 38, 169, 109, 109, 345, 392, 507, 193, 194, 209, + 237, 296, 55, 447, 57, 1530, 54, 217, 218, 341, + 195, 900, 956, 957, 59, 60, 25, 641, 27, 35, + 93, 94, 1020, 3, 4, 5, 6, 680, 48, 858, + 108, 485, 486, 328, 1032, 108, 246, 486, 716, 493, + 384, 709, 710, 47, 670, 12, 341, 4, 5, 58, + 737, 737, 506, 62, 349, 944, 1581, 47, 54, 47, + 64, 41, 357, 358, 1205, 1206, 62, 14, 1066, 354, + 1068, 525, 93, 341, 54, 22, 56, 57, 74, 93, + 59, 1222, 60, 136, 60, 295, 95, 140, 1524, 93, + 358, 48, 59, 610, 54, 62, 733, 403, 9, 56, + 57, 12, 991, 93, 3, 93, 401, 6, 88, 404, + 47, 93, 165, 47, 74, 358, 169, 401, 65, 47, + 108, 941, 175, 176, 473, 474, 74, 861, 90, 108, + 92, 109, 31, 401, 441, 54, 47, 1573, 348, 358, + 1009, 25, 41, 1245, 645, 341, 441, 897, 59, 505, + 61, 62, 74, 64, 441, 74, 93, 56, 57, 93, + 552, 553, 358, 93, 75, 93, 77, 4, 5, 222, + 60, 70, 467, 441, 58, 137, 54, 124, 62, 47, + 358, 80, 93, 94, 1164, 479, 47, 1131, 1132, 88, + 59, 60, 47, 487, 93, 405, 74, 108, 441, 467, + 107, 148, 497, 64, 54, 401, 1347, 3, 4, 5, + 505, 95, 449, 505, 54, 1356, 1357, 54, 1359, 56, + 57, 1201, 1221, 62, 74, 93, 94, 25, 495, 62, + 54, 441, 93, 70, 74, 74, 531, 505, 93, 534, + 108, 74, 537, 80, 708, 441, 541, 542, 543, 544, + 545, 938, 938, 47, 75, 492, 77, 94, 47, 554, + 56, 57, 505, 441, 1153, 31, 47, 4, 5, 564, + 602, 467, 567, 1375, 671, 485, 486, 473, 474, 4, + 5, 678, 906, 493, 80, 938, 505, 33, 473, 474, + 475, 238, 239, 1182, 62, 58, 506, 906, 799, 93, + 94, 755, 980, 250, 93, 358, 74, 602, 109, 505, + 678, 48, 93, 94, 108, 525, 4, 5, 808, 56, + 57, 47, 1010, 74, 1012, 902, 621, 505, 1016, 54, + 47, 56, 57, 628, 602, 47, 54, 3, 4, 5, + 6, 647, 54, 80, 3, 4, 5, 632, 59, 60, + 403, 1085, 1086, 621, 1334, 1105, 3, 4, 5, 6, + 628, 58, 74, 93, 1505, 1506, 58, 93, 56, 57, + 54, 47, 64, 320, 47, 41, 93, 679, 673, 54, + 686, 93, 688, 689, 54, 47, 75, 108, 441, 906, + 56, 57, 687, 47, 41, 357, 691, 56, 57, 107, + 108, 48, 47, 149, 150, 151, 602, 4, 5, 56, + 57, 767, 714, 769, 25, 362, 27, 93, 47, 775, + 93, 777, 618, 619, 371, 621, 479, 733, 59, 60, + 931, 93, 628, 80, 487, 64, 108, 384, 648, 93, + 94, 88, 737, 94, 1178, 47, 11, 58, 93, 195, + 47, 62, 505, 1187, 1188, 59, 60, 54, 1192, 56, + 57, 109, 47, 1100, 93, 94, 4, 5, 774, 737, + 108, 9, 767, 70, 769, 767, 904, 769, 870, 689, + 775, 47, 777, 80, 95, 777, 108, 47, 783, 784, + 785, 93, 787, 90, 789, 98, 93, 94, 47, 767, + 964, 769, 1236, 770, 771, 54, 898, 899, 93, 777, + 1198, 1199, 1200, 780, 60, 783, 54, 62, 56, 57, + 93, 789, 47, 733, 767, 74, 769, 93, 94, 54, + 4, 5, 70, 93, 777, 497, 58, 3, 62, 60, + 62, 737, 80, 111, 93, 755, 59, 60, 767, 74, + 769, 796, 797, 798, 501, 774, 775, 74, 777, 1060, + 1061, 1062, 857, 108, 62, 4, 5, 862, 93, 531, + 9, 767, 62, 769, 48, 979, 94, 12, 7, 8, + 9, 777, 56, 57, 108, 14, 94, 783, 111, 767, + 1587, 769, 27, 789, 647, 890, 31, 1331, 808, 777, + 93, 896, 31, 59, 60, 900, 80, 36, 93, 4, + 5, 949, 47, 4, 5, 54, 45, 56, 57, 566, + 328, 906, 54, 59, 59, 60, 74, 62, 896, 64, + 62, 70, 900, 686, 687, 688, 689, 44, 1372, 59, + 60, 80, 74, 938, 74, 940, 941, 54, 54, 944, + 57, 59, 60, 48, 938, 94, 62, 48, 93, 94, + 27, 56, 57, 610, 31, 56, 57, 904, 74, 74, + 938, 54, 74, 108, 1311, 54, 944, 59, 60, 62, + 733, 31, 11, 62, 737, 80, 4, 5, 1044, 80, + 109, 74, 59, 60, 108, 74, 991, 1053, 1101, 1102, + 896, 1104, 898, 899, 900, 59, 1044, 108, 25, 1004, + 27, 673, 8, 9, 767, 1107, 769, 1023, 14, 1397, + 108, 774, 775, 991, 777, 1020, 74, 473, 474, 475, + 48, 182, 679, 108, 54, 1413, 74, 1032, 56, 57, + 36, 58, 938, 690, 74, 62, 942, 943, 944, 45, + 108, 47, 1020, 109, 59, 1256, 464, 109, 1053, 944, + 111, 1053, 80, 108, 1032, 3, 4, 5, 111, 1036, + 75, 1066, 77, 1068, 721, 1042, 1043, 59, 95, 1046, + 1047, 27, 64, 1050, 74, 1053, 74, 54, 1180, 1181, + 74, 141, 74, 75, 108, 991, 146, 93, 1066, 111, + 1068, 1096, 1151, 1152, 1023, 111, 991, 108, 108, 47, + 1053, 58, 54, 108, 1109, 8, 54, 1155, 56, 57, + 111, 1499, 784, 785, 1020, 787, 534, 1514, 1514, 537, + 93, 1180, 1181, 541, 1053, 47, 1032, 64, 59, 93, + 4, 5, 1520, 109, 194, 54, 554, 1309, 36, 1311, + 1310, 25, 60, 27, 64, 93, 54, 1053, 1153, 567, + 1216, 64, 1164, 571, 62, 1221, 3, 4, 5, 1547, + 1066, 108, 1068, 64, 108, 1053, 74, 1611, 4, 5, + 1175, 1518, 60, 1175, 58, 1153, 62, 1182, 62, 108, + 54, 599, 56, 57, 1175, 108, 64, 605, 3, 4, + 5, 1196, 1580, 108, 108, 64, 70, 1175, 258, 64, + 1302, 3, 4, 5, 1182, 111, 80, 54, 44, 56, + 57, 95, 75, 1601, 108, 30, 1221, 108, 54, 1221, + 56, 57, 1175, 108, 75, 108, 1, 108, 3, 4, + 5, 6, 75, 8, 75, 30, 31, 75, 33, 54, + 108, 56, 57, 1221, 108, 1151, 1152, 1153, 62, 62, + 3, 4, 5, 6, 56, 57, 1151, 1152, 1153, 59, + 1023, 62, 57, 108, 59, 111, 41, 924, 1221, 1175, + 65, 8, 9, 48, 1180, 1181, 1182, 14, 108, 54, + 937, 56, 57, 108, 94, 1180, 1181, 1182, 41, 111, + 1053, 88, 1221, 1309, 74, 1311, 47, 1302, 109, 36, + 1302, 108, 108, 56, 57, 1310, 111, 1312, 45, 59, + 1312, 109, 111, 88, 1319, 1221, 108, 1319, 1518, 108, + 108, 1312, 108, 1328, 1302, 60, 64, 93, 1319, 3, + 4, 5, 59, 1221, 1312, 88, 64, 1491, 59, 59, + 62, 1319, 33, 59, 108, 108, 141, 74, 75, 1302, + 77, 146, 93, 93, 149, 150, 151, 93, 418, 1312, + 93, 421, 3, 4, 5, 109, 1319, 4, 5, 460, + 109, 27, 9, 433, 108, 31, 467, 1354, 1355, 108, + 54, 176, 56, 57, 58, 108, 111, 182, 8, 33, + 108, 1311, 1494, 1495, 1568, 108, 1302, 108, 193, 194, + 195, 108, 111, 59, 60, 109, 1312, 48, 64, 469, + 47, 471, 108, 1319, 209, 56, 57, 54, 108, 56, + 57, 108, 217, 218, 484, 108, 64, 108, 54, 1086, + 88, 108, 90, 70, 92, 1494, 1495, 1109, 7, 8, + 9, 532, 108, 80, 62, 14, 1423, 111, 866, 47, + 1213, 108, 62, 90, 108, 1218, 93, 94, 1221, 150, + 151, 108, 31, 258, 96, 1470, 62, 36, 60, 60, + 1475, 1476, 1477, 1475, 1476, 1480, 45, 9, 1480, 137, + 60, 139, 900, 16, 1475, 108, 108, 108, 944, 1480, + 93, 1496, 1470, 108, 108, 108, 108, 1475, 1476, 1477, + 108, 592, 1480, 1519, 195, 93, 60, 598, 60, 1514, + 54, 64, 3, 4, 5, 1172, 1521, 93, 111, 1521, + 93, 1178, 1475, 1476, 17, 1530, 60, 1480, 1530, 1424, + 1521, 54, 60, 328, 108, 991, 1514, 108, 97, 1530, + 107, 11, 108, 1521, 635, 108, 1309, 1310, 1311, 60, + 60, 1556, 1530, 3, 4, 5, 60, 7, 8, 9, + 59, 64, 93, 108, 1470, 56, 57, 58, 1521, 1475, + 1476, 1477, 1549, 60, 1480, 11, 1581, 1530, 1556, 1581, + 60, 31, 3, 4, 5, 6, 36, 108, 1494, 1495, + 1581, 3, 4, 5, 108, 7, 11, 758, 1518, 1494, + 1495, 1496, 60, 1581, 0, 0, 56, 57, 1514, 404, + 405, 3, 4, 5, 6, 1521, 1621, 0, 30, 1621, + 41, 170, 2, 418, 1530, 37, 421, 48, 1581, 35, + 1621, 1411, 427, 428, 429, 56, 57, 328, 433, 1296, + 1297, 938, 54, 1621, 56, 57, 38, 39, 671, 41, + 1556, 3, 4, 5, 169, 3, 4, 5, 6, 80, + 441, 319, 54, 165, 56, 57, 775, 88, 1621, 80, + 81, 82, 83, 84, 469, 1581, 471, 1567, 473, 474, + 475, 1164, 401, 478, 744, 745, 94, 747, 238, 484, + 485, 486, 139, 41, 489, 1151, 1152, 1153, 493, 357, + 1396, 1246, 54, 1621, 56, 57, 54, 924, 56, 57, + 919, 298, 507, 721, 62, 1621, 243, 1201, 1334, 1053, + 1218, 775, 70, 917, 1180, 1181, 1182, 3, 4, 5, + 654, 1388, 80, 200, 345, 602, 124, 428, 429, 534, + 88, 1601, 537, 1312, 1176, 93, 1587, 1597, 467, 1535, + 3, 4, 5, 1410, 1411, 1599, 1519, 552, 553, 554, + 999, 1328, -1, -1, 1182, 856, 857, 3, 4, 5, + 6, 862, 567, 9, 3, 4, 5, 6, 1196, -1, + 56, 57, -1, 474, 475, 876, -1, 878, -1, 880, + -1, -1, -1, -1, -1, 31, 3, 4, 5, -1, + -1, 459, 460, 56, 57, 41, -1, -1, -1, 467, + -1, 47, 41, -1, 1232, 1233, 1234, 1235, 54, 48, + 56, 57, -1, -1, -1, -1, -1, 56, 57, -1, + -1, 1488, -1, 628, 70, 926, 3, 4, 5, 497, + 7, 8, 9, 534, 80, -1, 537, -1, -1, 56, + 57, 80, 88, 648, 90, -1, -1, 93, 94, 88, + -1, -1, 553, 554, 1025, 1026, 78, 79, 80, 81, + 82, 83, 84, 531, 532, -1, 567, 1295, -1, -1, + -1, 972, -1, 943, -1, -1, -1, -1, -1, 56, + 57, 1052, 687, -1, 689, 690, 1057, -1, -1, -1, + -1, -1, 621, 3, 4, 5, 564, -1, 566, 628, + -1, 569, 570, -1, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 589, 590, -1, 592, -1, -1, 628, 733, -1, + 598, -1, -1, -1, -1, -1, -1, -1, 48, 744, + 745, -1, 747, -1, -1, 1373, 56, 57, -1, -1, + 755, -1, -1, 758, 47, -1, -1, -1, 1424, -1, + 628, -1, -1, 3, 4, 5, -1, 635, -1, -1, + 775, -1, -1, -1, -1, 193, 194, 195, 1406, -1, + -1, -1, 3, 4, 5, 753, 7, 8, 9, 657, + 658, -1, -1, 86, 87, -1, -1, 802, 91, 92, + 93, 94, 3, 4, 5, 673, -1, -1, 737, -1, + 31, -1, -1, -1, 782, 36, 56, 57, -1, -1, + 788, -1, -1, 3, 4, 5, 6, -1, 1494, 1495, + 1496, -1, -1, 54, -1, 56, 57, 58, 80, -1, + 1211, 1212, 1470, 1214, 1215, -1, 1217, -1, 1476, 1477, + -1, 31, -1, 721, 783, 56, 57, -1, -1, -1, + 789, 41, 104, -1, -1, 1166, -1, 1168, 1496, 1170, + -1, -1, -1, -1, 54, -1, 56, 57, -1, 1149, + 1150, -1, 103, 104, 105, -1, -1, 1157, -1, -1, + 70, 133, -1, 898, 899, 900, -1, -1, 766, -1, + 80, 802, 144, -1, -1, -1, -1, -1, 88, -1, + -1, -1, -1, 93, -1, -1, 784, 785, -1, 787, + -1, -1, -1, 891, -1, 893, -1, -1, 1556, -1, + -1, -1, 937, -1, 802, -1, -1, 942, 943, 944, + -1, -1, -1, -1, -1, -1, -1, 1575, -1, -1, + -1, -1, 4, 5, -1, -1, 824, 9, -1, -1, + -1, 203, -1, -1, -1, -1, 1267, 896, 1596, -1, + -1, 900, -1, 1344, 1345, -1, -1, 1605, -1, -1, + -1, -1, -1, -1, -1, -1, 991, -1, 856, 857, + -1, -1, -1, 861, 862, 47, 238, -1, 899, 900, + 1270, 1271, 54, 1273, 56, 57, -1, -1, 876, 938, + 878, -1, 880, -1, -1, 944, -1, -1, 70, 261, + 1025, 1026, -1, -1, -1, -1, -1, -1, 80, -1, + -1, 3, 4, 5, 6, -1, -1, 9, 90, -1, + -1, 93, 94, 944, -1, -1, -1, 1052, 916, -1, + -1, 469, 1057, 471, -1, 473, 474, 475, 926, 31, + -1, -1, 991, -1, -1, -1, 484, -1, -1, 41, + -1, -1, -1, 941, -1, 1446, 1447, 1448, -1, -1, + -1, -1, 54, -1, 56, 57, 954, -1, -1, -1, + 991, 1020, -1, -1, -1, -1, -1, 1065, 70, 1067, + 7, 8, 9, 1032, 972, -1, -1, 14, 80, -1, + -1, 353, 3, 4, 5, 6, 88, -1, 9, -1, + -1, 93, -1, 991, 31, -1, -1, -1, -1, 36, + -1, 1502, 1503, -1, -1, -1, -1, 1066, 45, 1068, + 31, -1, -1, -1, 1149, 1150, 1151, 1152, 1153, -1, + 41, -1, 1157, 60, 1122, -1, 47, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, 1035, -1, 411, + -1, -1, -1, -1, -1, 1180, 1181, 1182, -1, 70, + -1, -1, -1, -1, 7, 8, 9, -1, -1, 80, + -1, 14, -1, -1, -1, -1, -1, 88, -1, 90, + -1, 1572, 93, 94, -1, -1, 1211, 1212, 31, 1214, + 1215, -1, 1217, 36, -1, -1, 4, 1085, 1086, -1, + -1, 1089, 45, -1, 1153, -1, 14, -1, -1, -1, + -1, -1, -1, -1, 1202, -1, 24, 60, -1, 1207, + -1, 1109, 30, 31, -1, 33, -1, 35, -1, -1, + -1, 1152, 1153, 1182, 42, -1, -1, -1, -1, 501, + -1, -1, -1, -1, -1, 1270, 1271, 55, 1273, 57, + -1, -1, 460, -1, -1, -1, -1, 65, -1, 467, + 1181, 1182, -1, -1, 72, -1, 528, -1, -1, -1, + -1, -1, 1260, -1, -1, 83, 84, -1, 1166, -1, + 1168, -1, 1170, -1, -1, 1310, 1311, -1, -1, -1, + 1178, -1, -1, -1, -1, -1, -1, -1, 106, 1187, + 1188, -1, -1, -1, 1192, -1, 744, 745, -1, 747, + -1, 3, 4, 5, 6, -1, -1, 9, -1, 1344, + 1345, 1209, 1210, -1, 532, -1, 134, -1, 136, -1, + -1, -1, 140, 141, -1, -1, 774, 145, 146, 31, + -1, 149, 150, 151, -1, -1, -1, -1, 1236, 41, + -1, -1, -1, 615, -1, 47, -1, 165, -1, -1, + -1, 169, 54, -1, 56, 57, -1, 175, 176, 631, + -1, 3, 4, 5, 6, 1363, 1364, -1, 70, 1267, + -1, -1, -1, -1, 592, 193, 194, 195, 80, -1, + 598, -1, 1380, -1, -1, -1, 88, -1, 90, 1424, + -1, 93, 94, 1291, -1, -1, -1, -1, -1, 41, + -1, -1, -1, -1, 222, -1, 48, -1, -1, -1, + 628, 1446, 1447, 1448, 56, 57, -1, 635, -1, -1, + -1, 239, -1, -1, -1, -1, -1, -1, -1, 247, + -1, -1, -1, 1331, -1, -1, -1, -1, 80, -1, + 258, 1439, 1440, -1, -1, -1, 88, -1, 3, 4, + 5, 6, 1350, -1, 9, -1, -1, 1455, 1456, 1494, + 1495, 1496, -1, -1, -1, -1, -1, 1502, 1503, -1, + -1, -1, -1, -1, 1372, -1, 31, -1, 296, 297, + -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, + -1, -1, 47, 1424, 942, 943, 944, -1, -1, 54, + -1, 56, 57, -1, -1, -1, 4, 5, -1, -1, + -1, 9, -1, -1, -1, 70, -1, -1, -1, -1, + -1, -1, -1, 341, -1, 80, 1424, 345, -1, 347, + 348, 349, -1, 88, -1, 90, -1, 1572, 93, 94, + 358, -1, -1, 991, -1, -1, 1444, 1445, -1, 47, + -1, 3, 4, 5, 6, 1514, 54, 9, 56, 57, + 3, 4, 5, 6, 1495, 1496, 9, -1, -1, 82, + -1, -1, 70, -1, 392, 1023, -1, -1, -1, 31, + 1478, -1, 80, 401, 802, 403, 404, -1, 31, 41, + -1, -1, 90, -1, -1, 93, 94, -1, 41, -1, + 418, -1, 54, 421, 56, 57, -1, -1, -1, -1, + 1508, 54, -1, 56, 57, 433, -1, -1, 70, -1, + -1, -1, -1, 441, -1, -1, -1, 70, 80, 3, + 4, 5, 6, 905, -1, 907, 88, 80, 856, 857, + -1, 93, -1, -1, 862, 88, 159, -1, -1, -1, + 93, 469, -1, 471, -1, 473, 474, 475, 876, -1, + 878, 479, 880, -1, -1, -1, 484, 41, -1, 487, + -1, -1, -1, 47, -1, -1, -1, 949, 191, -1, + 54, -1, 56, 57, -1, -1, -1, 505, -1, -1, + -1, 204, -1, -1, -1, -1, 70, -1, -1, -1, + -1, 1149, 1150, 1151, 1152, 1153, 80, -1, 926, 1157, + -1, -1, -1, 1611, 88, -1, 90, -1, -1, 93, + 94, -1, -1, -1, 542, 543, 544, 545, -1, -1, + -1, -1, 1180, 1181, 1182, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, - 419, -1, 14, 422, -1, -1, -1, -1, -1, 428, - 429, 430, -1, -1, -1, 434, 28, -1, 30, 31, - 32, -1, -1, 442, 36, 37, -1, -1, -1, 41, + 12, -1, 14, -1, 972, -1, -1, -1, -1, 3, + 4, 5, 6, -1, -1, 1213, 28, -1, 30, 31, + -1, -1, 1044, 991, 36, -1, -1, -1, -1, 41, + -1, -1, -1, 45, 602, 47, 604, -1, -1, -1, + -1, -1, 54, -1, 56, 57, -1, 41, 616, -1, + 618, 619, -1, 621, 48, -1, -1, -1, 70, -1, + 628, -1, 56, 57, 632, -1, -1, -1, 80, -1, + -1, -1, 1270, 1271, -1, 1273, 88, -1, 90, 647, + -1, 93, 94, -1, -1, -1, 80, -1, -1, -1, + 3, 4, 5, 6, 88, -1, 3, 4, 5, 6, + 7, 8, 9, 671, -1, -1, 1128, 14, -1, -1, + 678, -1, -1, -1, -1, -1, -1, -1, 686, 687, + 688, 689, 690, 691, 31, -1, -1, -1, 41, 36, + -1, -1, -1, 1155, 41, 48, -1, -1, 45, -1, + 47, -1, -1, 56, 57, -1, -1, 54, -1, 56, + 57, -1, -1, -1, -1, -1, -1, 3, 4, 5, + 6, -1, -1, 70, -1, 733, -1, -1, -1, 737, + -1, -1, -1, 80, -1, 88, 744, 745, -1, 747, + -1, 88, -1, 90, -1, 31, 93, 94, -1, -1, + -1, -1, -1, -1, 1216, 41, 764, -1, 1166, 767, + 1168, 769, 1170, -1, -1, -1, 774, 775, 54, 777, + 56, 57, -1, -1, 477, 783, -1, -1, -1, 482, + -1, 789, -1, -1, 70, -1, 1424, -1, 796, 797, + 798, -1, -1, -1, 80, -1, 3, 4, 5, 6, + 808, -1, 88, -1, -1, 508, -1, 93, -1, 4, + -1, 514, -1, -1, -1, -1, -1, -1, -1, 14, + -1, -1, -1, 526, 527, -1, 529, -1, 23, 24, + -1, -1, -1, -1, 41, 30, 31, -1, 33, -1, + 35, 48, -1, -1, -1, -1, -1, 42, -1, 56, + 57, -1, -1, -1, -1, -1, 1494, 1495, 1496, 1267, + 55, -1, 57, 3, 4, 5, 6, -1, -1, -1, + 65, -1, -1, 881, -1, 883, -1, 72, -1, -1, + -1, 88, 890, -1, -1, -1, 894, -1, 896, 84, + 898, 899, 900, -1, -1, -1, -1, -1, 906, -1, + -1, 41, -1, -1, -1, -1, -1, -1, 48, -1, + -1, -1, 3, 4, 5, 6, 56, 57, 9, -1, + -1, 624, 625, -1, -1, -1, 629, 347, 348, 349, + 938, -1, 940, -1, 942, 943, 944, -1, -1, -1, + 31, 136, -1, -1, -1, 140, 141, -1, 88, -1, + 41, 146, -1, -1, 149, 150, 151, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, -1, -1, -1, + 165, -1, -1, -1, 169, -1, -1, -1, -1, 70, + 175, 176, -1, 991, -1, -1, -1, -1, -1, 80, + -1, -1, -1, -1, -1, -1, 1004, 88, 193, 194, + 195, -1, 93, -1, -1, -1, -1, -1, -1, 4, + 5, -1, 1020, 8, 9, 1023, 1424, -1, -1, 14, + -1, -1, -1, -1, 1032, -1, -1, 222, -1, -1, + -1, -1, -1, 28, -1, 30, -1, 1045, -1, -1, + -1, 36, -1, -1, -1, 1053, -1, -1, -1, -1, + 45, -1, -1, -1, -1, -1, -1, -1, 1066, 54, + 1068, 56, 57, 258, -1, -1, -1, -1, 1, -1, + 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, + -1, 14, -1, -1, -1, -1, -1, 790, 1096, 792, + -1, -1, -1, 1101, 1102, 28, 1104, 30, 31, 32, + -1, 296, 297, 36, 37, -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, 347, 348, 349, -1, -1, -1, 70, -1, -1, + -1, 1149, 1150, 1151, 1152, 1153, 341, 80, -1, 1157, + 345, -1, 347, 348, 349, 88, -1, -1, -1, 354, + 93, 864, 865, 358, 867, 3, 4, 5, 6, -1, + -1, 9, 1180, 1181, 1182, -1, 109, -1, -1, -1, + -1, -1, 3, 4, 5, 6, -1, -1, -1, -1, + -1, -1, 895, 31, -1, -1, -1, 392, 618, 619, + -1, -1, -1, 41, -1, 1213, 401, -1, 403, 404, + 1218, -1, -1, 1221, -1, -1, 54, -1, 56, 57, + 41, -1, -1, 418, -1, -1, 421, -1, -1, -1, + -1, -1, 70, 54, -1, 56, 57, -1, 433, 60, + -1, 62, 80, 946, -1, -1, 441, -1, -1, 70, + 88, -1, -1, -1, -1, 93, -1, -1, -1, 80, + -1, -1, 1270, 1271, -1, 1273, 686, 88, 688, 689, + -1, 691, 93, -1, 469, -1, 471, -1, 473, 474, + 475, -1, -1, -1, 479, -1, -1, -1, -1, 484, + -1, -1, 487, -1, -1, -1, -1, -1, -1, -1, + -1, 1309, 1310, 1311, -1, -1, -1, -1, -1, -1, + 505, -1, -1, 733, -1, -1, 1019, -1, -1, -1, + 1328, -1, -1, -1, -1, -1, -1, -1, 1031, -1, + -1, -1, 4, 5, -1, 7, 8, 9, -1, -1, + 12, -1, 14, -1, -1, -1, -1, 542, 543, 544, + 545, -1, -1, -1, -1, -1, 28, -1, 30, 31, + -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, + -1, -1, -1, 45, -1, 47, -1, 3, 4, 5, + 6, -1, 54, -1, 56, 57, -1, -1, 808, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 70, -1, + -1, -1, 618, 619, -1, 621, -1, 602, 80, 604, + -1, -1, 628, -1, 1117, 41, 1424, -1, 90, -1, + -1, 93, 94, 618, 619, -1, 621, -1, 54, -1, + 56, 57, -1, 628, 60, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 70, -1, 641, -1, -1, -1, + -1, -1, 647, 1156, 80, -1, -1, -1, -1, -1, + -1, 881, 88, 883, -1, -1, -1, 93, -1, -1, + 686, -1, 688, 689, 894, 691, 671, -1, 898, 899, + 3, 4, 5, 6, 679, -1, 1494, 1495, 1496, -1, + -1, 686, 687, 688, 689, 690, 691, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1514, -1, 31, -1, + -1, 1519, -1, -1, -1, -1, -1, 733, 41, 714, + 1223, -1, 942, 943, 1227, -1, -1, -1, -1, -1, + -1, 54, -1, 56, 57, -1, -1, -1, 733, -1, + -1, -1, 737, -1, -1, -1, -1, 70, -1, 744, + 745, -1, 747, -1, -1, -1, -1, 80, -1, 1262, + -1, -1, -1, -1, -1, 88, 761, 107, 108, 764, + 93, -1, 767, -1, 769, -1, -1, -1, -1, 774, + 775, -1, 777, -1, -1, -1, -1, -1, 783, -1, + -1, -1, 808, -1, 789, -1, -1, -1, -1, -1, + -1, 796, 797, 798, 3, 4, 5, 6, 7, 8, + 9, -1, -1, 808, -1, 14, -1, -1, -1, -1, + -1, -1, 4, -1, -1, -1, -1, -1, -1, 28, + -1, 30, 31, -1, -1, -1, 1339, 36, -1, -1, + 1343, -1, 41, -1, -1, -1, 45, -1, 30, 31, + -1, 33, -1, 35, -1, 54, -1, 56, 57, -1, + 42, 60, 1365, 1366, -1, 881, -1, 883, -1, -1, + -1, 70, -1, 55, -1, 57, -1, -1, 894, -1, + -1, 80, 898, 899, 900, -1, 881, -1, 883, 88, + -1, -1, -1, -1, 93, 890, -1, -1, 80, 894, + -1, 896, -1, 898, 899, 900, -1, -1, -1, -1, + -1, 906, 3, 4, 5, 6, -1, -1, 9, -1, + -1, -1, -1, -1, -1, -1, 942, 943, 944, 1149, + 1150, 1151, 1152, -1, -1, -1, -1, 1157, -1, -1, + 31, -1, -1, 938, -1, 940, -1, 942, 943, 944, + 41, 133, 134, -1, 136, -1, -1, -1, 140, 141, + 1180, 1181, 144, 54, 146, 56, 57, 149, 150, 151, + -1, -1, -1, -1, 156, 991, -1, -1, -1, 70, + -1, -1, -1, 165, -1, -1, -1, 169, 328, 80, + -1, -1, -1, 175, 176, -1, 991, 88, -1, -1, + -1, -1, 93, -1, -1, -1, -1, -1, -1, 1004, + -1, 193, 194, 195, -1, -1, -1, -1, -1, -1, + -1, 203, -1, -1, -1, 1020, -1, -1, 1023, -1, + -1, -1, -1, -1, -1, -1, -1, 1032, -1, 1, + 222, 3, 4, 5, 6, 7, 8, 9, -1, -1, + 1270, 1271, 14, 1273, -1, -1, -1, -1, 1053, -1, + -1, 401, -1, -1, -1, -1, 28, -1, 30, 31, + 32, 1066, -1, 1068, 36, 37, 258, -1, -1, 41, -1, -1, -1, 45, 46, -1, 48, -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, 60, -1, - 62, 470, -1, 472, -1, 474, 475, 476, 70, -1, - 1438, 480, -1, -1, -1, -1, 485, -1, 80, 488, - -1, -1, 3, 4, 5, 6, 88, -1, -1, -1, - -1, 93, -1, 4, 5, -1, -1, 8, 9, -1, - -1, -1, 511, 14, 513, -1, -1, 109, -1, 518, - 519, -1, 521, -1, -1, -1, -1, 28, -1, 30, - 41, -1, -1, -1, -1, 36, -1, -1, -1, -1, - -1, -1, -1, 54, 45, 56, 57, 1505, 1506, 1507, - -1, 62, -1, 54, 553, 56, 57, 556, -1, 70, - -1, -1, -1, 1521, -1, -1, -1, -1, 1526, 80, - -1, -1, 571, 572, 573, -1, -1, 88, -1, 4, - -1, -1, 93, -1, -1, -1, -1, 586, -1, -1, - -1, 3, 4, 5, 6, -1, 1, 9, 3, 4, - 5, 6, 7, 8, 9, 30, 31, -1, 33, 14, - 35, -1, -1, -1, -1, -1, -1, 42, -1, 31, - -1, -1, 27, 28, -1, 30, 31, 32, -1, 41, - 55, 36, 57, -1, -1, 634, 41, -1, -1, 44, - 45, 46, 54, 48, 56, 57, -1, -1, 647, 54, - -1, 56, 57, -1, -1, 60, -1, -1, 70, -1, - -1, -1, -1, -1, -1, 70, -1, 666, 80, -1, - -1, -1, -1, -1, -1, 80, 88, -1, -1, -1, - -1, 93, -1, 88, -1, -1, -1, -1, 93, -1, - -1, 690, -1, 98, -1, -1, -1, 33, 697, -1, - -1, -1, -1, -1, -1, -1, 705, 706, 707, 708, - -1, 136, -1, -1, -1, 140, 141, -1, -1, 55, - -1, 146, -1, -1, 149, 150, 151, -1, -1, -1, - -1, -1, -1, -1, 3, 4, 5, 6, -1, -1, - 165, -1, -1, -1, 169, 3, 4, 5, 6, -1, - 175, 176, -1, 752, -1, -1, -1, 756, -1, -1, - -1, -1, -1, -1, 763, 764, -1, 766, 193, 194, - 195, -1, 41, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 54, 785, 56, 57, -1, - -1, 60, -1, 62, -1, -1, 54, 222, 56, 57, - -1, 70, 60, -1, -1, -1, -1, 806, -1, -1, - -1, 80, 70, 149, 150, 151, 815, -1, -1, 88, - 245, -1, 80, -1, 93, -1, -1, -1, -1, -1, - 88, -1, -1, -1, 259, 93, -1, -1, -1, 175, - -1, 1, 841, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, -1, 193, 194, 195, - -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, 222, -1, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, -1, -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, -1, 86, 87, 88, -1, - 355, -1, -1, 93, 359, -1, -1, -1, 937, 938, - 939, -1, -1, -1, 943, 944, -1, -1, 108, -1, - 110, -1, -1, 3, 4, 5, 6, 7, 8, 9, - -1, -1, 298, -1, 14, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 28, 404, - 30, 31, 981, 982, 983, -1, 36, -1, -1, 988, - -1, 41, -1, -1, 419, 45, -1, 422, -1, -1, - -1, -1, -1, -1, 54, -1, 56, 57, -1, 434, - 60, -1, 348, 349, 350, -1, -1, 442, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 80, 1030, -1, -1, -1, -1, -1, -1, 88, -1, - -1, -1, -1, 93, -1, 470, -1, 472, -1, 474, - 475, 476, -1, -1, -1, 480, -1, -1, -1, -1, - 485, -1, -1, 488, -1, -1, -1, -1, 404, -1, - 1069, -1, -1, -1, -1, 1074, -1, -1, 1077, 3, - 4, 5, 6, 7, 8, 9, 511, -1, 513, -1, - 14, -1, -1, 518, 519, -1, 521, -1, -1, -1, - -1, -1, -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, 470, -1, 472, -1, 474, 475, - 476, -1, -1, -1, 480, -1, 70, -1, -1, 485, - 1149, -1, 488, -1, -1, -1, 80, -1, -1, -1, - -1, -1, -1, -1, 88, -1, -1, -1, -1, 93, - -1, 1170, 1171, 1172, 1173, 1174, -1, 1176, -1, 1178, - -1, -1, 518, -1, 1, -1, 3, 4, 5, 6, - -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, - -1, -1, 1201, 1202, 1203, -1, -1, -1, -1, -1, - 635, 28, 29, 30, -1, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, - -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, 666, -1, -1, 61, 62, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, 78, 79, 80, -1, -1, 55, -1, -1, 86, - 87, 88, -1, -1, -1, -1, 93, -1, -1, -1, - 705, 706, 707, 708, -1, -1, -1, 623, -1, -1, - -1, 80, -1, 110, 83, -1, 1295, 1296, -1, 1298, - -1, 637, 638, -1, 640, -1, -1, -1, -1, -1, - -1, 647, -1, -1, -1, 104, -1, 106, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 752, -1, -1, - 666, 756, -1, -1, -1, 1334, 1335, 1336, 763, 764, - -1, 766, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 785, -1, -1, -1, -1, -1, -1, -1, -1, 705, - -1, 707, 708, -1, 710, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, -1, 175, 9, -1, -1, - 815, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 193, 194, 195, -1, -1, 31, - -1, -1, -1, -1, 203, -1, 752, -1, -1, 41, - -1, -1, -1, -1, -1, -1, -1, 763, 764, -1, - 766, -1, 54, 222, 56, 57, -1, -1, -1, 1438, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 785, - -1, 3, 4, 5, 6, 7, 8, 9, 80, 248, - 12, -1, 14, -1, -1, -1, 88, -1, -1, -1, - -1, 93, -1, 262, -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, 835, - 836, 837, 54, -1, 56, 57, 1505, 1506, 1507, -1, - -1, 847, -1, -1, -1, -1, -1, -1, 70, -1, - 945, -1, -1, -1, -1, -1, -1, 1526, 80, -1, + 62, 1096, -1, -1, -1, -1, 1101, 1102, 70, 1104, + -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, + -1, -1, -1, -1, -1, -1, 88, 467, -1, -1, + -1, 93, -1, 1149, 1150, 1151, 1152, 1153, -1, -1, + -1, 1157, -1, -1, -1, -1, 328, 109, -1, -1, + -1, -1, -1, -1, 1149, 1150, 1151, 1152, 1153, -1, + -1, -1, 1157, 345, 1180, 1181, 1182, -1, -1, 1164, + -1, 353, -1, -1, -1, -1, 358, -1, -1, -1, + -1, 3, 4, 5, 6, 1180, 1181, 1182, -1, -1, + -1, -1, -1, -1, 534, -1, -1, 537, -1, -1, + -1, 541, 542, 543, 544, 545, 1201, -1, -1, -1, + 392, -1, -1, -1, 554, -1, -1, -1, 1213, 41, + -1, 403, -1, 1218, -1, -1, 1221, 567, -1, -1, + -1, -1, 54, -1, 56, 57, 418, -1, -1, 421, + 62, -1, -1, -1, -1, 427, 428, 429, 70, -1, + -1, 433, -1, -1, 1270, 1271, -1, 1273, 80, 441, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, - -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 981, 982, 983, -1, - -1, -1, -1, -1, -1, 354, 355, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, - -1, -1, 14, -1, 920, -1, 922, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 28, 933, 30, 31, - -1, 937, 938, 939, 36, 1030, -1, -1, -1, 41, - -1, -1, -1, 45, -1, 404, -1, -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, 1069, 981, 982, 983, 80, 1074, - -1, -1, 1077, -1, -1, -1, 88, -1, -1, -1, - -1, 93, -1, -1, -1, 3, 4, 5, 6, 7, - 8, 9, -1, -1, -1, -1, 14, -1, -1, -1, - -1, 470, -1, 472, -1, 474, 475, 476, -1, -1, - 28, 480, 30, 31, 1030, -1, 485, -1, 36, 488, - -1, -1, -1, 41, -1, -1, -1, 45, -1, -1, - -1, -1, -1, -1, -1, -1, 54, -1, 56, 57, - -1, 14, -1, -1, -1, -1, -1, -1, -1, 518, - 23, 24, 70, 1069, -1, -1, -1, 30, 31, -1, - 33, 12, 80, -1, -1, 1170, 1171, 1172, 1173, 1174, - 88, -1, -1, 1178, -1, 93, 69, 70, 71, 72, + -1, 93, -1, -1, -1, 1270, 1271, -1, 1273, -1, + -1, 621, -1, -1, -1, -1, -1, 469, 628, 471, + -1, 473, 474, 475, 4, 5, -1, 479, 8, 9, + -1, -1, 484, 1298, 14, 487, -1, -1, -1, -1, + -1, -1, -1, -1, 1309, 1310, 1311, -1, 28, -1, + 30, -1, 4, 505, -1, -1, 36, -1, -1, -1, + -1, -1, -1, 1328, -1, 45, -1, -1, -1, 1334, + -1, -1, -1, -1, 54, -1, 56, 57, 30, 31, + -1, 33, 534, 35, -1, 537, -1, -1, -1, -1, + 42, 1, -1, 3, 4, 5, 6, 7, 8, 9, + 552, 553, 554, 55, 14, 57, -1, -1, -1, -1, + -1, -1, -1, 93, -1, 567, -1, -1, 28, -1, + 30, 31, 32, -1, -1, -1, 36, 737, -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, 1424, + 70, -1, -1, 615, -1, -1, -1, -1, -1, -1, + 80, -1, -1, 783, -1, -1, 628, -1, 88, 789, + -1, -1, -1, 93, 136, 33, -1, -1, 140, 141, + -1, -1, -1, -1, 146, 647, -1, 149, 150, 151, + -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, + -1, -1, -1, 165, -1, -1, -1, 169, -1, 671, + -1, -1, -1, 175, 176, -1, 678, -1, -1, 1494, + 1495, 1496, -1, -1, 686, 687, 688, 689, -1, -1, + -1, 193, 194, 195, -1, -1, -1, 857, -1, 1514, + -1, -1, -1, -1, 1519, -1, -1, -1, -1, 3, + 4, 5, 6, -1, -1, 9, -1, -1, -1, -1, + 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 890, 733, -1, -1, -1, 737, 896, 31, -1, -1, + 900, -1, 744, 745, -1, 747, -1, 41, -1, -1, + -1, 149, 150, 151, -1, -1, 258, -1, -1, -1, + 54, -1, 56, 57, -1, 767, -1, 769, -1, 31, + -1, -1, 774, 775, -1, 777, 70, 175, 938, -1, + 940, -1, -1, -1, 944, -1, 80, -1, -1, -1, + -1, -1, -1, -1, 88, 193, 194, 195, -1, 93, + 802, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, -1, 222, -1, -1, -1, -1, -1, + -1, 991, -1, -1, -1, 1, -1, 3, 4, 5, + 6, 7, 8, 9, 1004, -1, -1, -1, 14, -1, + -1, -1, 354, -1, -1, -1, 358, -1, -1, -1, + 1020, 27, 28, -1, 30, 31, 32, -1, -1, -1, + 36, -1, 1032, -1, -1, 41, -1, -1, 44, 45, + 46, -1, 48, -1, -1, -1, -1, -1, 54, -1, + 56, 57, -1, -1, 60, -1, 898, 899, 900, 297, + -1, 403, 904, 905, 70, -1, 1066, -1, 1068, -1, + -1, -1, -1, -1, 80, -1, 418, -1, -1, 421, + -1, -1, 88, -1, -1, -1, -1, 93, -1, -1, + -1, 433, 98, -1, -1, -1, 1096, -1, -1, 441, + 942, 943, 944, -1, -1, -1, -1, 949, -1, 347, + 348, 349, -1, 3, 4, 5, 6, 7, 8, 9, + 3, 4, 5, 6, 14, -1, 9, 469, -1, 471, + -1, 473, 474, 475, -1, -1, -1, 479, 28, -1, + 30, 31, 484, -1, -1, 487, 36, -1, 31, 991, + -1, 41, -1, 1153, -1, 45, -1, 47, 41, -1, + -1, -1, -1, 505, 54, 403, 56, 57, -1, -1, + -1, 54, -1, 56, 57, -1, -1, -1, -1, -1, + 70, 1023, 1182, -1, -1, -1, -1, 70, -1, -1, + 80, -1, -1, -1, -1, -1, 1196, 80, 88, -1, + 90, -1, 1044, 93, 94, 88, -1, -1, -1, -1, + 93, 1053, 3, 4, 5, 6, 7, 8, 9, -1, + -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, + -1, 469, -1, 471, -1, 473, 474, 475, -1, -1, + 31, 479, -1, -1, -1, 36, 484, -1, -1, 487, + 41, -1, -1, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, -1, -1, -1, + -1, -1, -1, -1, 616, -1, -1, -1, -1, 70, + -1, -1, 3, 4, 5, 6, 1128, -1, -1, 80, + -1, -1, -1, -1, -1, -1, -1, 88, -1, 90, + -1, -1, 93, 94, -1, 647, -1, 1149, 1150, 1151, + 1152, 1153, -1, 1155, -1, 1157, -1, -1, -1, -1, + 41, -1, -1, -1, -1, -1, -1, -1, 1328, -1, + -1, -1, -1, 54, -1, 56, 57, -1, 1180, 1181, + 1182, 62, -1, -1, 686, 687, 688, 689, -1, 70, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, + -1, -1, -1, -1, -1, -1, 604, 88, -1, -1, + -1, 1213, 93, 55, -1, -1, 1218, -1, -1, 1221, + 618, 619, -1, 621, -1, 3, 4, 5, 6, -1, + 628, 733, -1, -1, -1, 737, -1, -1, 80, -1, + -1, 83, 744, 745, -1, 747, -1, -1, -1, 647, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 65, -1, -1, -1, 1201, 1202, 1203, -1, - -1, -1, -1, -1, -1, -1, 1122, 1123, -1, 1125, + 83, 84, 104, 41, 106, 767, -1, 769, 1270, 1271, + -1, 1273, 774, 775, -1, 777, 54, -1, 56, 57, + -1, -1, 60, -1, -1, -1, -1, -1, 686, -1, + 688, 689, 70, 691, -1, -1, -1, -1, -1, -1, + -1, -1, 80, -1, -1, -1, -1, 1309, 1310, 1311, + 88, -1, -1, -1, -1, 93, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 175, -1, 733, 1496, 1, -1, 3, + 4, 5, 6, 7, 8, 9, 744, 745, -1, 747, + 14, 193, 194, 195, 1514, -1, -1, -1, -1, -1, + -1, 203, -1, -1, 28, -1, 30, 31, 32, -1, + -1, -1, 36, -1, -1, -1, 774, 41, -1, -1, + 222, 45, -1, -1, 48, 3, 4, 5, 6, -1, + 54, -1, 56, 57, -1, -1, -1, -1, 796, 797, + 798, -1, -1, -1, 906, 247, 70, -1, -1, -1, + 808, -1, -1, -1, -1, -1, 80, -1, -1, 261, + -1, -1, 1424, 41, 88, -1, -1, 4, 5, 93, + -1, 8, 9, -1, 98, -1, 54, 14, 56, 57, + 942, 943, 944, -1, -1, -1, -1, -1, -1, -1, + -1, 28, 70, 30, -1, -1, -1, -1, -1, 36, + -1, -1, 80, -1, -1, -1, -1, -1, 45, -1, + 88, -1, -1, -1, -1, 93, -1, 54, -1, 56, + 57, 58, -1, 881, -1, 883, -1, -1, -1, 991, + -1, -1, 1494, 1495, 1496, -1, 894, -1, -1, -1, + 898, 899, 900, -1, -1, -1, -1, -1, -1, -1, + -1, 353, 354, -1, -1, -1, 93, 1519, -1, -1, + -1, 1023, -1, -1, -1, 1, -1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, -1, 13, 14, -1, + -1, -1, -1, -1, 942, 943, 944, -1, -1, -1, + -1, 1053, 28, 29, 30, 31, 32, -1, 34, 35, + 36, 403, 38, 39, 40, 41, 42, 43, -1, 45, + -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, + 56, 57, 58, -1, 60, 61, -1, -1, -1, -1, + -1, 67, -1, 991, 70, -1, -1, -1, -1, -1, + -1, -1, 78, 79, 80, 14, -1, -1, -1, -1, + 86, 87, 88, -1, 23, 24, -1, 93, -1, -1, + -1, 30, 31, -1, 33, 1023, -1, 469, -1, 471, + -1, 473, 474, 475, 110, -1, -1, 479, -1, -1, + -1, -1, 484, -1, -1, 487, -1, 1149, 1150, 1151, + 1152, 1153, -1, -1, -1, 1157, 65, 4, 5, -1, + -1, 8, 9, -1, -1, -1, -1, 14, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1180, 1181, + 1182, 28, -1, 30, -1, -1, -1, -1, -1, 36, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + 47, -1, -1, 1101, 1102, -1, 1104, 54, -1, 56, + 57, 1213, -1, -1, -1, 124, 1218, 126, -1, 1221, + -1, -1, -1, 70, 133, 134, -1, -1, -1, -1, + -1, 140, 141, 80, -1, 144, 145, 146, -1, 148, + 149, 150, 151, 90, -1, -1, 93, 94, -1, -1, + -1, 1149, 1150, 1151, 1152, 1153, -1, -1, -1, 1157, + -1, -1, -1, -1, -1, -1, -1, -1, 1270, 1271, + -1, 1273, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1180, 1181, 1182, -1, -1, -1, -1, 631, + 632, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 647, -1, 1309, 1310, 1311, + -1, -1, -1, -1, -1, 1213, -1, -1, 4, 5, + -1, -1, 8, 9, -1, -1, -1, -1, 14, 238, + 239, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 686, -1, 688, 689, -1, 258, + 36, -1, -1, -1, -1, -1, -1, -1, -1, 45, + -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, + 56, 57, 1270, 1271, -1, 1273, -1, -1, -1, -1, + -1, -1, -1, -1, 70, -1, -1, -1, 297, -1, + -1, 733, -1, -1, 80, -1, -1, -1, -1, -1, + -1, -1, 744, 745, 90, 747, -1, 93, 94, -1, + -1, 1309, -1, 1311, -1, -1, -1, -1, -1, -1, + -1, 1, 1424, 3, 4, 5, 6, -1, 8, 9, + 10, 11, 774, 13, 14, -1, 345, -1, 347, 348, + -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, + 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, + 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, + 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, + -1, 61, -1, 392, -1, -1, -1, 67, -1, -1, + 70, -1, 1494, 1495, 1496, -1, -1, -1, 78, 79, + 80, -1, 411, -1, -1, -1, 86, 87, 88, 418, + -1, -1, 421, 93, 94, -1, -1, 1519, -1, -1, + -1, -1, -1, -1, 433, -1, 1424, 4, 5, 109, + 110, 8, 9, -1, 4, 5, -1, 14, 8, 9, + -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 28, 36, + 30, -1, -1, 905, 906, 907, 36, -1, 45, -1, + 47, -1, -1, -1, -1, 45, -1, 54, -1, 56, + 57, -1, -1, -1, 54, -1, 56, 57, -1, -1, + -1, -1, 501, 70, -1, -1, 1494, 1495, 1496, -1, + 942, 943, 944, 80, -1, -1, -1, 949, -1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 528, + -1, 1519, -1, 3, 4, 5, 6, 7, 8, 9, + -1, -1, -1, -1, 14, -1, -1, 979, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 28, 991, + 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, + -1, 1023, -1, -1, -1, -1, 28, -1, 30, -1, + 70, -1, -1, -1, 36, 604, 38, 39, -1, -1, + 80, -1, 1044, 45, -1, 47, 615, 616, 88, 618, + 619, -1, 54, 93, 56, 57, -1, 59, 98, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, -1, -1, 86, 87, 88, -1, -1, 91, + -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 671, -1, -1, -1, -1, -1, 110, 678, + 679, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 690, -1, -1, -1, -1, 1128, -1, -1, 1, + -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, + -1, -1, 14, -1, -1, 714, -1, 1149, 1150, 1151, + 1152, 1153, -1, 1155, -1, 1157, 28, -1, 30, 31, + 32, -1, -1, -1, 36, 37, -1, -1, -1, 41, + -1, -1, -1, 45, 46, -1, 48, -1, 1180, 1181, + 1182, -1, 54, -1, 56, 57, -1, -1, 60, -1, + 62, 12, 761, -1, -1, 764, -1, -1, 70, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, + -1, 1213, -1, -1, -1, -1, 88, -1, -1, -1, + -1, 93, -1, -1, -1, -1, -1, 796, 797, 798, + -1, -1, -1, -1, -1, -1, -1, 109, -1, 808, -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 124, -1, 126, 1170, 1171, 1172, 1173, 1174, -1, - 133, 134, 1178, -1, -1, -1, -1, 140, 141, -1, - -1, 144, 145, 146, -1, 148, 149, 150, 151, -1, - -1, 650, 651, -1, -1, 1201, 1202, 1203, -1, -1, - 1295, 1296, -1, 1298, -1, -1, -1, 666, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1334, - 1335, 1336, -1, -1, -1, -1, 705, -1, 707, 708, - -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, - -1, 56, 57, -1, -1, 238, 239, 62, -1, -1, - -1, -1, -1, -1, -1, 70, -1, -1, -1, 1295, - 1296, -1, 1298, 752, -1, 80, 259, -1, -1, -1, - -1, -1, -1, 88, 763, 764, -1, 766, 93, -1, - -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, 785, -1, 1334, -1, - 1336, -1, -1, -1, -1, 298, -1, -1, 28, 29, - 30, 31, 32, 1438, 34, 35, 36, 806, 38, 39, - 40, 41, 42, 43, -1, 45, -1, 47, -1, 49, + 81, 82, 83, 84, -1, -1, -1, -1, 1270, 1271, + -1, 1273, -1, 1, -1, 3, 4, 5, 6, 7, + 8, 9, -1, -1, 12, -1, 14, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 25, -1, 27, + -1, -1, -1, 31, -1, -1, -1, 1309, 36, 1311, + -1, -1, 881, 41, 883, -1, -1, 45, -1, 47, + -1, -1, -1, -1, -1, 894, 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, 59, 111, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, + 979, 1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 1424, 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, - -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, 346, -1, 348, 349, -1, 78, 79, - 80, 3, 4, 5, 6, -1, 86, 87, 88, -1, - 90, -1, -1, 93, 94, -1, -1, -1, -1, -1, - 1505, 1506, 1507, 3, 4, 5, 6, -1, -1, 31, - 110, -1, -1, -1, -1, -1, -1, -1, -1, 41, - 393, 1526, 1438, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 54, -1, 56, 57, -1, -1, -1, 412, - -1, 41, -1, -1, -1, -1, 419, -1, 70, 422, - -1, -1, -1, -1, 54, -1, 56, 57, 80, -1, - 60, 434, -1, -1, -1, -1, 88, -1, -1, -1, - 70, 93, -1, -1, -1, 944, 945, 946, -1, -1, - 80, -1, -1, -1, -1, -1, -1, -1, 88, 1505, - 1506, 1507, -1, 93, -1, -1, -1, -1, 4, 5, - -1, 7, 8, 9, 3, 4, 5, 6, 14, -1, - 1526, -1, 981, 982, 983, -1, -1, -1, -1, 988, - -1, -1, 28, -1, 30, 31, -1, -1, -1, 502, - 36, -1, -1, -1, -1, 508, -1, -1, -1, 45, - -1, -1, 41, -1, -1, -1, -1, -1, 54, 1018, - 56, 57, -1, -1, -1, 54, -1, 56, 57, -1, - -1, 1030, 1, -1, 3, 4, 5, 6, 7, 8, - 9, 70, -1, 12, 547, 14, -1, -1, -1, -1, - -1, 80, -1, -1, -1, -1, 25, -1, 27, 88, - -1, -1, 31, -1, 93, -1, -1, 36, -1, -1, - 1069, -1, 41, -1, -1, -1, 45, -1, 47, -1, - -1, -1, -1, -1, -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, - 623, 90, 91, 92, 93, 94, 95, -1, 97, -1, - -1, 634, 635, 102, 637, 638, -1, -1, 107, 108, - 109, -1, 111, -1, -1, -1, -1, -1, -1, -1, - 1149, -1, -1, -1, -1, -1, -1, 4, 5, -1, - 7, 8, 9, -1, -1, -1, -1, 14, -1, -1, - -1, 1170, 1171, 1172, 1173, 1174, -1, 1176, -1, 1178, - -1, 28, -1, 30, 31, -1, -1, 690, -1, 36, - -1, -1, -1, -1, 697, 698, -1, -1, 45, -1, - -1, 48, 1201, 1202, 1203, -1, 709, 54, -1, 56, - 57, -1, -1, -1, -1, 1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, - 733, 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, 780, -1, -1, - -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 80, -1, 1295, 1296, -1, 1298, - 86, 87, 88, -1, 807, -1, -1, 93, -1, 95, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 109, 110, -1, -1, -1, -1, -1, - -1, -1, 835, 836, 837, 1334, -1, 1336, -1, -1, - -1, -1, -1, -1, 847, -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, 920, -1, 922, - -1, -1, -1, 78, 79, 80, 31, -1, -1, -1, - 933, 86, 87, 88, -1, -1, -1, -1, 93, 1438, - 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 110, -1, -1, 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, -1, 4, 5, -1, 7, 8, - 9, -1, -1, 12, -1, 14, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1505, 1506, 1507, 28, - -1, 30, 31, -1, -1, 1018, -1, 36, -1, -1, - -1, -1, -1, -1, -1, -1, 45, 1526, -1, -1, - -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, - -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, + 60, 61, -1, -1, -1, -1, 1045, 67, -1, -1, + 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, -1, 1494, 1495, 1496, -1, 86, 87, 88, -1, + -1, -1, -1, 93, -1, 95, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1519, -1, 109, + 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1101, 1102, 1, 1104, 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, 1164, -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, 1201, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 110, -1, -1, -1, 1216, 1, 1218, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, -1, -1, -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, 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, -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, 110, -1, -1, + -1, -1, -1, -1, -1, 1334, -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, -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, -1, -1, -1, -1, 1072, - -1, 1074, -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, 1122, - 1123, -1, 1125, 78, 79, 80, -1, -1, -1, -1, - -1, 86, 87, 88, -1, 90, -1, -1, 93, 94, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 110, 1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1185, 28, 29, 30, 31, 32, -1, 34, + -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, - -1, 56, 57, 58, -1, 60, 61, -1, -1, 1222, + -1, 56, 57, -1, -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, - -1, 86, 87, 88, -1, -1, -1, -1, 93, 1, - -1, 3, 4, 5, 6, -1, 8, 9, 10, 11, - -1, 13, 14, -1, -1, 110, -1, -1, -1, -1, + -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, + 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, + 14, -1, -1, 108, -1, 110, -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, -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, -1, 86, 87, 88, -1, -1, -1, 1, 93, + 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, + 13, 14, -1, -1, -1, -1, 110, -1, -1, -1, + -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, + -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, + 43, -1, 45, -1, -1, -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, -1, 86, 87, 88, -1, -1, -1, -1, + 93, 94, 1, -1, 3, 4, 5, 6, -1, 8, + 9, 10, 11, -1, 13, 14, -1, 110, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, + 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, + 39, 40, 41, 42, 43, -1, 45, -1, -1, -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, -1, 86, 87, 88, + -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, + 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, + 109, 110, -1, -1, -1, -1, -1, -1, -1, -1, + 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, + 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, + -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, -1, 86, 87, + 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, + -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, + -1, 109, 110, -1, -1, -1, -1, -1, -1, -1, + -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, + -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, + -1, -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, -1, 86, + 87, 88, -1, -1, -1, -1, 93, -1, 1, -1, + 3, 4, 5, 6, 101, 8, 9, 10, 11, -1, + 13, 14, -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, -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, -1, 86, 87, 88, -1, -1, -1, 1, + 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, + -1, 13, 14, -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -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, -1, 86, 87, 88, -1, -1, -1, - -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1359, 109, 110, 1, - -1, 3, 4, 5, 6, -1, 8, 9, 10, 11, - -1, 13, 14, -1, -1, -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, -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, -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -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, -1, 86, 87, 88, -1, -1, - -1, -1, 93, 94, 1, -1, 3, 4, 5, 6, - -1, 8, 9, 10, 11, -1, 13, 14, -1, 110, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, - -1, -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, -1, 86, - 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, - 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, - -1, -1, 109, 110, -1, -1, -1, -1, -1, -1, - -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, - 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, - -1, -1, -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, -1, - 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, - 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, - -1, -1, -1, 109, 110, -1, -1, -1, -1, -1, - -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, - 45, -1, -1, -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, - -1, 86, 87, 88, -1, -1, -1, -1, 93, -1, - 1, -1, 3, 4, 5, 6, 101, 8, 9, 10, - 11, -1, 13, 14, -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, -1, 56, 57, 58, -1, -1, - 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, + 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, + 61, 62, -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, 3, 4, 5, 6, -1, 8, 9, @@ -3328,38 +3309,13 @@ static const short yycheck[] = { 4, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, - -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, + 50, 51, 52, 53, 54, -1, 56, 57, -1, -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, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, - 29, 30, -1, 32, -1, 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, 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, 3, 4, 5, 6, -1, - 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, - -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, - 28, 29, 30, -1, 32, -1, 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, 61, -1, -1, -1, -1, -1, 67, - 1, -1, 70, 4, 5, -1, -1, 8, 9, -1, - 78, 79, 80, 14, -1, -1, -1, -1, 86, 87, - 88, -1, -1, -1, -1, 93, -1, 28, -1, 30, - -1, -1, -1, -1, -1, 36, -1, 38, 39, -1, - 108, -1, 110, -1, 45, -1, 47, -1, -1, -1, - -1, -1, -1, 54, -1, 56, 57, -1, 59, -1, - -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, -1, -1, 86, 87, 88, -1, -1, - 91, -1, 1, 94, 3, 4, 5, 6, -1, 8, - 9, 10, 11, -1, 13, 14, -1, -1, -1, 110, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 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, @@ -3367,7 +3323,7 @@ static const short yycheck[] = { 4, -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, 3, 4, 5, 6, -1, - 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, + 8, 9, 10, 11, -1, 13, 14, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, @@ -3384,172 +3340,13 @@ static const short yycheck[] = { 4, 57, -1, -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, -1, 86, - 87, 88, 3, 4, 5, 6, 93, 8, 9, 10, - 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 110, -1, -1, -1, 28, 29, 30, - -1, 32, -1, 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, - 61, -1, -1, -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, 32, - -1, -1, -1, 36, 37, -1, -1, -1, 41, 110, - 111, -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, 6, 7, 8, 9, - 10, 11, -1, 13, 14, 15, 109, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, - 110, 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, -1, -1, - -1, 93, -1, 95, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, 13, 14, 15, 110, 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, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, - 14, 15, 110, 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, -1, -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, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, -1, -1, 110, -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, 47, -1, 49, 50, - 51, 52, 53, 54, -1, 56, 57, -1, -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, -1, 86, 87, 88, -1, 90, - -1, -1, 93, 94, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, -1, -1, -1, 110, - -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, 47, -1, - 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, - -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, -1, 86, 87, 88, - -1, 90, -1, -1, 93, 94, 3, 4, 5, 6, - -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, - -1, 110, -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, - 47, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, -1, -1, -1, -1, -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, 90, -1, -1, 93, 94, 3, 4, - 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, - -1, -1, -1, 110, -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, 47, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, -1, -1, -1, -1, -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, 90, -1, -1, 93, 94, - 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, - 13, 14, -1, -1, -1, 110, -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, -1, 56, 57, -1, -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, -1, 86, 87, 88, 3, 4, 5, 6, - 93, 8, 9, 10, 11, -1, 13, 14, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, - -1, 28, 29, 30, -1, 32, -1, 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, 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, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, 13, 14, -1, + 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, + 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, 110, -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, -1, - 56, 57, -1, -1, -1, -1, -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, 3, 4, 5, 6, 93, 8, 9, - 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 110, -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, -1, 56, 57, -1, -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, -1, 86, 87, 88, 3, - 4, 5, 6, 93, 8, 9, 10, 11, -1, 13, - 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, -1, -1, -1, 28, 29, 30, -1, 32, -1, - 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, 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, 3, 4, 5, 6, 93, - 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, - 28, 29, 30, -1, 32, -1, 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, 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, 3, 4, 5, 6, 93, 8, 9, 10, 11, - -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 110, -1, -1, -1, 28, 29, 30, -1, - 32, -1, 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, 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, 3, 4, 5, - 6, 93, 8, 9, 10, 11, -1, 13, 14, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, - 56, 57, 58, -1, -1, -1, -1, -1, -1, -1, + 56, 57, -1, -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, -1, 86, 87, 88, 3, 4, 5, 6, 93, 8, 9, @@ -3558,21 +3355,95 @@ static const short yycheck[] = { 4, 30, -1, 32, -1, 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, + -1, 61, -1, -1, -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, + 32, -1, -1, -1, 36, 37, -1, -1, -1, 41, + 110, 111, -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, 6, 7, 8, + 9, 10, 11, -1, 13, 14, 15, 109, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 109, 110, 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, -1, + -1, -1, 93, -1, 95, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, 13, 14, 15, 110, + 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, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + 13, 14, 15, 110, 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, -1, -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, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, -1, -1, 110, -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, 47, -1, 49, + 50, 51, 52, 53, 54, -1, 56, 57, -1, -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, -1, 86, 87, 88, -1, - -1, -1, -1, 93, 94, 3, 4, 5, 6, -1, - 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, + 90, -1, -1, 93, 94, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, 110, -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, + 38, 39, 40, 41, 42, 43, -1, 45, -1, 47, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, + -1, -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, -1, 86, 87, - 88, 3, 4, 5, 6, 93, 8, 9, 10, 11, - -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 110, -1, -1, -1, 28, 29, 30, -1, + 88, -1, 90, -1, -1, 93, 94, 3, 4, 5, + 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, + -1, -1, 110, -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, 47, -1, 49, 50, 51, 52, 53, 54, -1, + 56, 57, -1, -1, -1, -1, -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, 90, -1, -1, 93, 94, 3, + 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, + 14, -1, -1, -1, 110, -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, 47, -1, 49, 50, 51, 52, 53, + 54, -1, 56, 57, -1, -1, -1, -1, -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, 90, -1, -1, 93, + 94, 3, 4, 5, 6, -1, 8, 9, 10, 11, + -1, 13, 14, -1, -1, -1, 110, -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, -1, 56, 57, -1, -1, -1, 61, @@ -3581,63 +3452,198 @@ static const short yycheck[] = { 4, -1, -1, -1, -1, 86, 87, 88, 3, 4, 5, 6, 93, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, - -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, + -1, -1, 28, 29, 30, -1, 32, -1, 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, + 56, 57, -1, -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, 3, 4, 5, 6, 93, 8, 9, - 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 110, -1, -1, -1, 28, 29, - 30, -1, 32, -1, 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, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, 3, - 4, 5, 6, 93, 8, 9, 10, 11, -1, 13, - 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, -1, -1, -1, 28, 29, 30, -1, 32, -1, - 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, -1, -1, -1, - -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, - -1, -1, 86, 87, 88, 3, 4, 5, 6, 93, - 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, - 28, 29, 30, -1, 32, -1, 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, -1, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, - 88, -1, -1, 4, 5, 93, 7, 8, 9, -1, - -1, 12, -1, 14, -1, -1, -1, -1, -1, -1, - -1, -1, 110, -1, -1, -1, -1, 28, -1, 30, - 31, -1, -1, -1, -1, 36, -1, -1, -1, -1, - -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, 54, -1, 56, 57, 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, -1, 111, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 59, -1, -1, 107, 63, 64, 65, 66, 67, 68, + 86, 87, 88, -1, -1, -1, -1, 93, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, + -1, -1, -1, -1, 110, -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, + -1, 56, 57, -1, -1, -1, -1, -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, 3, 4, 5, 6, 93, 8, + 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 110, -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, -1, 56, 57, -1, + -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, -1, 86, 87, 88, + 3, 4, 5, 6, 93, 8, 9, 10, 11, -1, + 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 110, -1, -1, -1, 28, 29, 30, -1, 32, + -1, 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, 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, 3, 4, 5, 6, + 93, 8, 9, 10, 11, -1, 13, 14, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, + -1, 28, 29, 30, -1, 32, -1, 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, 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, 3, 4, 5, 6, 93, 8, 9, 10, + 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 110, -1, -1, -1, 28, 29, 30, + -1, 32, -1, 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, + 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, 3, 4, + 5, 6, 93, 8, 9, 10, 11, -1, 13, 14, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, + -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, + 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, + 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, + -1, 56, 57, 58, -1, -1, -1, -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, 3, 4, 5, 6, 93, 8, + 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 110, -1, -1, -1, 28, + 29, 30, -1, 32, -1, 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, -1, -1, -1, -1, -1, -1, -1, 78, + 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, + -1, -1, -1, -1, 93, 94, 3, 4, 5, 6, + -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, + -1, 110, -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, -1, 56, + 57, -1, -1, -1, -1, -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, 3, 4, 5, 6, 93, 8, 9, 10, + 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 110, -1, -1, -1, 28, 29, 30, + -1, 32, -1, 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, + 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, 3, 4, + 5, 6, 93, 8, 9, 10, 11, -1, 13, 14, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, + -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, + -1, 56, 57, -1, -1, -1, -1, -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, 3, 4, 5, 6, 93, 8, + 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 110, -1, -1, -1, 28, + 29, 30, -1, 32, -1, 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, -1, -1, -1, -1, -1, -1, -1, 78, + 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, + 3, 4, 5, 6, 93, 8, 9, 10, 11, -1, + 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 110, -1, -1, -1, 28, 29, 30, -1, 32, + -1, 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, -1, -1, + -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, + -1, -1, -1, 86, 87, 88, 3, 4, 5, 6, + 93, 8, 9, 10, 11, -1, 13, 14, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, + -1, 28, 29, 30, -1, 32, -1, 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, 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, 48, + -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, + -1, 60, -1, 3, 4, 5, 6, 7, 8, 9, + -1, 70, 12, -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, 28, -1, 30, 31, -1, 88, -1, + -1, 36, -1, 93, -1, -1, 41, -1, -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, -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, 28, -1, 30, 31, -1, + 88, -1, -1, 36, -1, 93, -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, + 4, 5, -1, 7, 8, 9, -1, -1, -1, -1, + 14, -1, 70, 4, 5, -1, 7, 8, 9, -1, + -1, 12, 80, 14, 28, -1, 30, 31, -1, -1, + 88, -1, 36, -1, -1, 93, -1, 28, -1, 30, + 31, 45, -1, -1, 48, 36, -1, -1, -1, -1, + 54, -1, 56, 57, 45, -1, -1, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, 4, 5, -1, + 7, 8, 9, -1, -1, 12, -1, 14, -1, -1, + 4, 5, -1, 7, 8, 9, -1, -1, -1, -1, + 14, 28, -1, 30, 31, -1, -1, -1, -1, 36, + -1, -1, -1, -1, 28, -1, 30, 31, 45, -1, + -1, -1, 36, -1, -1, -1, -1, 54, -1, 56, + 57, 45, -1, -1, -1, -1, -1, -1, -1, -1, + 54, -1, 56, 57, 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, -1, 111, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, + 107, 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, 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, + 79, 80, 81, 82, 83, 84, 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 + 84 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/cygnus/gnupro-98r2/share/bison.simple" +#line 3 "/usr/lib/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -3830,7 +3836,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/cygnus/gnupro-98r2/share/bison.simple" +#line 196 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -6100,7 +6106,11 @@ case 477: cp_pedwarn ("using `typename' outside of template"); ; break;} case 478: -#line 2143 "parse.y" +#line 2142 "parse.y" +{ yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ; + break;} +case 479: +#line 2144 "parse.y" { int semi; @@ -6108,25 +6118,25 @@ case 478: yychar = YYLEX; semi = yychar == ';'; - yyval.ttype = finish_class_definition (yyvsp[-4].ttype, yyvsp[0].ttype, semi); + yyval.ttype = finish_class_definition (yyvsp[-5].ttype, yyvsp[0].ttype, semi); ; break;} -case 479: -#line 2153 "parse.y" +case 480: +#line 2154 "parse.y" { begin_inline_definitions (); ; break;} -case 480: -#line 2157 "parse.y" +case 481: +#line 2158 "parse.y" { finish_inline_definitions (); yyval.ftype.t = yyvsp[-3].ttype; yyval.ftype.new_type_flag = 1; ; break;} -case 481: -#line 2163 "parse.y" +case 482: +#line 2164 "parse.y" { yyval.ftype.new_type_flag = 0; if (TYPE_BINFO (yyvsp[0].ttype) == NULL_TREE) @@ -6145,104 +6155,104 @@ case 481: } ; break;} -case 485: -#line 2190 "parse.y" +case 486: +#line 2191 "parse.y" { if (pedantic && !in_system_header) pedwarn ("comma at end of enumerator list"); ; break;} -case 487: -#line 2197 "parse.y" +case 488: +#line 2198 "parse.y" { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} -case 488: -#line 2199 "parse.y" +case 489: +#line 2200 "parse.y" { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} -case 489: -#line 2201 "parse.y" +case 490: +#line 2202 "parse.y" { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} -case 490: -#line 2203 "parse.y" +case 491: +#line 2204 "parse.y" { error ("no body nor ';' separates two class, struct or union declarations"); ; break;} -case 491: -#line 2205 "parse.y" +case 492: +#line 2206 "parse.y" { yyval.ttype = build_decl_list (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 492: -#line 2210 "parse.y" +case 493: +#line 2211 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 493: -#line 2218 "parse.y" +case 494: +#line 2219 "parse.y" { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 494: -#line 2220 "parse.y" +case 495: +#line 2221 "parse.y" { yyungetc ('{', 1); ; break;} -case 495: -#line 2222 "parse.y" +case 496: +#line 2223 "parse.y" { yyungetc (':', 1); ; break;} -case 496: -#line 2227 "parse.y" +case 497: +#line 2228 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = handle_class_head (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 497: -#line 2232 "parse.y" +case 498: +#line 2233 "parse.y" { current_aggr = yyvsp[-3].ttype; yyval.ttype = handle_class_head (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 498: -#line 2237 "parse.y" +case 499: +#line 2238 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = handle_class_head (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype); ; break;} -case 499: -#line 2242 "parse.y" -{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; - break;} case 500: -#line 2244 "parse.y" +#line 2243 "parse.y" { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 501: -#line 2249 "parse.y" -{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 1); ; +#line 2245 "parse.y" +{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 502: -#line 2251 "parse.y" -{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 0); ; +#line 2250 "parse.y" +{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 1); ; break;} case 503: -#line 2255 "parse.y" +#line 2252 "parse.y" +{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 0); ; + break;} +case 504: +#line 2256 "parse.y" { yyval.ttype = yyvsp[-1].ttype; if (yyvsp[0].ttype) xref_basetypes (current_aggr, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 504: -#line 2261 "parse.y" +case 505: +#line 2262 "parse.y" { if (yyvsp[0].ttype != error_mark_node) push_scope (CP_DECL_CONTEXT (yyvsp[0].ttype)); ; break;} -case 505: -#line 2266 "parse.y" +case 506: +#line 2267 "parse.y" { if (yyvsp[-2].ttype != error_mark_node) { @@ -6267,45 +6277,45 @@ case 505: } ; break;} -case 506: -#line 2293 "parse.y" +case 507: +#line 2294 "parse.y" { yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), 0); yyungetc ('{', 1); ; break;} -case 509: -#line 2304 "parse.y" +case 510: +#line 2305 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 510: -#line 2306 "parse.y" +case 511: +#line 2307 "parse.y" { yyungetc(':', 1); yyval.ttype = NULL_TREE; ; break;} -case 511: -#line 2308 "parse.y" +case 512: +#line 2309 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 513: -#line 2314 "parse.y" +case 514: +#line 2315 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} -case 514: -#line 2319 "parse.y" +case 515: +#line 2320 "parse.y" { yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype, current_aggr == signature_type_node); ; break;} -case 515: -#line 2323 "parse.y" +case 516: +#line 2324 "parse.y" { yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, current_aggr == signature_type_node); ; break;} -case 516: -#line 2330 "parse.y" +case 517: +#line 2331 "parse.y" { if (yyval.ttype != error_mark_node) yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ; break;} -case 518: -#line 2333 "parse.y" +case 519: +#line 2334 "parse.y" { if (current_aggr == signature_type_node) { @@ -6327,8 +6337,8 @@ case 518: } ; break;} -case 519: -#line 2354 "parse.y" +case 520: +#line 2355 "parse.y" { if (current_aggr == signature_type_node) { @@ -6350,14 +6360,14 @@ case 519: } ; break;} -case 521: -#line 2379 "parse.y" +case 522: +#line 2380 "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 522: -#line 2383 "parse.y" +case 523: +#line 2384 "parse.y" { if (yyvsp[-2].ttype != access_default_virtual_node) error ("multiple access specifiers"); @@ -6369,8 +6379,8 @@ case 522: yyval.ttype = access_private_virtual_node; ; break;} -case 523: -#line 2394 "parse.y" +case 524: +#line 2395 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) cp_error ("`%D' access", yyvsp[-1].ttype); else if (yyval.ttype == access_public_node) @@ -6383,12 +6393,8 @@ case 523: error ("multiple `virtual' specifiers"); ; break;} -case 524: -#line 2409 "parse.y" -{ yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ; - break;} case 529: -#line 2420 "parse.y" +#line 2416 "parse.y" { if (current_aggr == signature_type_node) { @@ -6400,49 +6406,49 @@ case 529: ; break;} case 530: -#line 2435 "parse.y" +#line 2431 "parse.y" { finish_member_declaration (yyvsp[0].ttype); ; break;} case 531: -#line 2439 "parse.y" +#line 2435 "parse.y" { finish_member_declaration (yyvsp[0].ttype); ; break;} case 533: -#line 2447 "parse.y" +#line 2443 "parse.y" { error ("missing ';' before right brace"); yyungetc ('}', 0); ; break;} case 534: -#line 2452 "parse.y" +#line 2448 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 535: -#line 2454 "parse.y" +#line 2450 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 536: -#line 2456 "parse.y" +#line 2452 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 537: -#line 2458 "parse.y" +#line 2454 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 538: -#line 2460 "parse.y" +#line 2456 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 539: -#line 2462 "parse.y" +#line 2458 "parse.y" { yyval.ttype = yyvsp[0].ttype; pedantic = yyvsp[-1].itype; ; break;} case 540: -#line 2465 "parse.y" +#line 2461 "parse.y" { if (yyvsp[0].ttype) yyval.ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6454,14 +6460,14 @@ case 540: ; break;} case 541: -#line 2475 "parse.y" +#line 2471 "parse.y" { yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); finish_template_decl (yyvsp[-2].ttype); ; break;} case 542: -#line 2486 "parse.y" +#line 2482 "parse.y" { /* Most of the productions for component_decl only allow the creation of one new member, so we call @@ -6484,7 +6490,7 @@ case 542: ; break;} case 543: -#line 2507 "parse.y" +#line 2503 "parse.y" { if (!yyvsp[0].itype) grok_x_components (yyvsp[-1].ttype); @@ -6492,45 +6498,45 @@ case 543: ; break;} case 544: -#line 2513 "parse.y" +#line 2509 "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 2516 "parse.y" +#line 2512 "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 546: -#line 2519 "parse.y" +#line 2515 "parse.y" { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ; break;} case 547: -#line 2521 "parse.y" +#line 2517 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 548: -#line 2532 "parse.y" +#line 2528 "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 549: -#line 2537 "parse.y" +#line 2533 "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 550: -#line 2540 "parse.y" +#line 2536 "parse.y" { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ; break;} case 551: -#line 2546 "parse.y" +#line 2542 "parse.y" { yyval.itype = 0; ; break;} case 552: -#line 2548 "parse.y" +#line 2544 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6539,7 +6545,7 @@ case 552: ; break;} case 553: -#line 2555 "parse.y" +#line 2551 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) @@ -6549,11 +6555,11 @@ case 553: ; break;} case 554: -#line 2566 "parse.y" +#line 2562 "parse.y" { yyval.itype = 0; ; break;} case 555: -#line 2568 "parse.y" +#line 2564 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6562,7 +6568,7 @@ case 555: ; break;} case 556: -#line 2575 "parse.y" +#line 2571 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) @@ -6572,7 +6578,7 @@ case 556: ; break;} case 561: -#line 2596 "parse.y" +#line 2592 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; @@ -6580,7 +6586,7 @@ case 561: build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} case 562: -#line 2602 "parse.y" +#line 2598 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; @@ -6588,7 +6594,7 @@ case 562: cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 563: -#line 2611 "parse.y" +#line 2607 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; @@ -6596,7 +6602,7 @@ case 563: build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} case 564: -#line 2617 "parse.y" +#line 2613 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; @@ -6604,7 +6610,7 @@ case 564: build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} case 565: -#line 2623 "parse.y" +#line 2619 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; @@ -6612,7 +6618,7 @@ case 565: cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 566: -#line 2629 "parse.y" +#line 2625 "parse.y" { split_specs_attrs (yyvsp[-3].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-3].ttype = current_declspecs; @@ -6620,54 +6626,54 @@ case 566: cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 567: -#line 2638 "parse.y" +#line 2634 "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 568: -#line 2641 "parse.y" +#line 2637 "parse.y" { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 569: -#line 2647 "parse.y" +#line 2643 "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 570: -#line 2650 "parse.y" +#line 2646 "parse.y" { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 571: -#line 2653 "parse.y" +#line 2649 "parse.y" { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 573: -#line 2664 "parse.y" +#line 2660 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 574: -#line 2669 "parse.y" +#line 2665 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ; break;} case 575: -#line 2671 "parse.y" +#line 2667 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ; break;} case 576: -#line 2677 "parse.y" +#line 2673 "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 577: -#line 2680 "parse.y" +#line 2676 "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 578: -#line 2687 "parse.y" +#line 2683 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new"); @@ -6677,90 +6683,83 @@ case 578: ; break;} case 579: -#line 2698 "parse.y" +#line 2694 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 580: -#line 2700 "parse.y" +#line 2696 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} case 581: -#line 2705 "parse.y" +#line 2701 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); yyval.ftype.new_type_flag = 0; ; break;} case 582: -#line 2708 "parse.y" +#line 2704 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 583: -#line 2717 "parse.y" +#line 2713 "parse.y" { yyval.itype = suspend_momentary (); ; break;} case 584: -#line 2722 "parse.y" +#line 2718 "parse.y" { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ; break;} case 585: -#line 2728 "parse.y" +#line 2724 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 586: -#line 2730 "parse.y" +#line 2726 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 587: -#line 2732 "parse.y" +#line 2728 "parse.y" { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ; break;} case 588: -#line 2734 "parse.y" +#line 2730 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ; break;} case 589: -#line 2741 "parse.y" +#line 2737 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 590: -#line 2743 "parse.y" +#line 2739 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 591: -#line 2745 "parse.y" +#line 2741 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 592: -#line 2747 "parse.y" +#line 2743 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 593: -#line 2749 "parse.y" +#line 2745 "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 595: -#line 2757 "parse.y" +#line 2753 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) { yyval.ttype = lookup_name (yyvsp[0].ttype, 1); - if (current_class_type - && TYPE_BEING_DEFINED (current_class_type) - && ! IDENTIFIER_CLASS_VALUE (yyvsp[0].ttype)) - { - /* Remember that this name has been used in the class - definition, as per [class.scope0] */ - pushdecl_class_level (yyval.ttype); - } + maybe_note_name_used_in_class (yyvsp[0].ttype, yyval.ttype); } else yyval.ttype = yyvsp[0].ttype; ; break;} case 596: -#line 2774 "parse.y" +#line 2763 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -6770,37 +6769,37 @@ case 596: ; break;} case 599: -#line 2787 "parse.y" +#line 2776 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 600: -#line 2792 "parse.y" +#line 2781 "parse.y" { yyval.ttype = get_type_decl (yyvsp[0].ttype); ; break;} case 601: -#line 2797 "parse.y" +#line 2786 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 602: -#line 2799 "parse.y" +#line 2788 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} case 603: -#line 2801 "parse.y" +#line 2790 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} case 604: -#line 2803 "parse.y" +#line 2792 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 605: -#line 2805 "parse.y" +#line 2794 "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 608: -#line 2817 "parse.y" +#line 2806 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ @@ -6808,138 +6807,133 @@ case 608: ; break;} case 609: -#line 2826 "parse.y" +#line 2815 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 610: -#line 2828 "parse.y" +#line 2817 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 611: -#line 2830 "parse.y" +#line 2819 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 612: -#line 2832 "parse.y" +#line 2821 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 613: -#line 2834 "parse.y" +#line 2823 "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 615: -#line 2842 "parse.y" +#line 2831 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 616: -#line 2844 "parse.y" +#line 2833 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 617: -#line 2846 "parse.y" +#line 2835 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 618: -#line 2848 "parse.y" +#line 2837 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 619: -#line 2850 "parse.y" +#line 2839 "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 621: -#line 2858 "parse.y" +#line 2847 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 622: -#line 2860 "parse.y" +#line 2849 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 623: -#line 2862 "parse.y" +#line 2851 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} case 624: -#line 2864 "parse.y" +#line 2853 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} case 625: -#line 2866 "parse.y" +#line 2855 "parse.y" { enter_scope_of (yyvsp[0].ttype); ; break;} case 626: -#line 2868 "parse.y" +#line 2857 "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 627: -#line 2876 "parse.y" +#line 2865 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} case 628: -#line 2879 "parse.y" +#line 2868 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 629: -#line 2885 "parse.y" +#line 2874 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} case 630: -#line 2888 "parse.y" +#line 2877 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 632: -#line 2895 "parse.y" +#line 2884 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 633: -#line 2900 "parse.y" +#line 2889 "parse.y" { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} case 634: -#line 2902 "parse.y" +#line 2891 "parse.y" { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} case 635: -#line 2904 "parse.y" +#line 2893 "parse.y" { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 640: -#line 2915 "parse.y" +#line 2904 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 641: -#line 2917 "parse.y" +#line 2906 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 642: -#line 2924 "parse.y" +#line 2913 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) { yyval.ttype = lastiddecl; - /* Remember that this name has been used in the class - definition, as per [class.scope0] */ - if (current_class_type - && TYPE_BEING_DEFINED (current_class_type) - && ! IDENTIFIER_CLASS_VALUE (yyvsp[-1].ttype)) - pushdecl_class_level (yyval.ttype); + maybe_note_name_used_in_class (yyvsp[-1].ttype, yyval.ttype); } got_scope = yyval.ttype = TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype)); ; break;} case 643: -#line 2938 "parse.y" +#line 2922 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; @@ -6947,7 +6941,7 @@ case 643: ; break;} case 644: -#line 2944 "parse.y" +#line 2928 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; @@ -6955,15 +6949,15 @@ case 644: ; break;} case 645: -#line 2950 "parse.y" +#line 2934 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ; break;} case 647: -#line 2966 "parse.y" +#line 2950 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 648: -#line 2971 "parse.y" +#line 2955 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -6978,26 +6972,26 @@ case 648: ; break;} case 649: -#line 2984 "parse.y" +#line 2968 "parse.y" { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ; break;} case 650: -#line 2986 "parse.y" +#line 2970 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 651: -#line 2988 "parse.y" +#line 2972 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 652: -#line 2993 "parse.y" +#line 2977 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype); ; break;} case 653: -#line 2998 "parse.y" +#line 2982 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -7012,15 +7006,15 @@ case 653: ; break;} case 654: -#line 3011 "parse.y" +#line 2995 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 655: -#line 3013 "parse.y" +#line 2997 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 656: -#line 3018 "parse.y" +#line 3002 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyvsp[-1].ttype = lastiddecl; @@ -7034,7 +7028,7 @@ case 656: ; break;} case 657: -#line 3030 "parse.y" +#line 3014 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyval.ttype = lastiddecl; @@ -7042,11 +7036,11 @@ case 657: ; break;} case 658: -#line 3036 "parse.y" +#line 3020 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; break;} case 661: -#line 3040 "parse.y" +#line 3024 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; @@ -7054,11 +7048,11 @@ case 661: ; break;} case 662: -#line 3049 "parse.y" +#line 3033 "parse.y" { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 663: -#line 3054 "parse.y" +#line 3038 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -7068,148 +7062,148 @@ case 663: ; break;} case 665: -#line 3063 "parse.y" +#line 3047 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 666: -#line 3068 "parse.y" +#line 3052 "parse.y" { got_scope = NULL_TREE; ; break;} case 667: -#line 3070 "parse.y" +#line 3054 "parse.y" { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ; break;} case 668: -#line 3077 "parse.y" +#line 3061 "parse.y" { got_scope = void_type_node; ; break;} case 669: -#line 3083 "parse.y" +#line 3067 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 670: -#line 3085 "parse.y" +#line 3069 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} case 671: -#line 3087 "parse.y" +#line 3071 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 672: -#line 3089 "parse.y" +#line 3073 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} case 673: -#line 3091 "parse.y" +#line 3075 "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 674: -#line 3095 "parse.y" +#line 3079 "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 676: -#line 3104 "parse.y" +#line 3088 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} case 677: -#line 3106 "parse.y" +#line 3090 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} case 678: -#line 3112 "parse.y" +#line 3096 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 679: -#line 3114 "parse.y" +#line 3098 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 680: -#line 3116 "parse.y" +#line 3100 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} case 681: -#line 3118 "parse.y" +#line 3102 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ; break;} case 682: -#line 3120 "parse.y" +#line 3104 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 683: -#line 3122 "parse.y" +#line 3106 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 684: -#line 3124 "parse.y" +#line 3108 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} case 685: -#line 3126 "parse.y" +#line 3110 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ; break;} case 686: -#line 3128 "parse.y" +#line 3112 "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 687: -#line 3132 "parse.y" +#line 3116 "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 689: -#line 3141 "parse.y" +#line 3125 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 691: -#line 3145 "parse.y" +#line 3129 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 692: -#line 3147 "parse.y" +#line 3131 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 693: -#line 3149 "parse.y" +#line 3133 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} case 694: -#line 3151 "parse.y" +#line 3135 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} case 695: -#line 3153 "parse.y" +#line 3137 "parse.y" { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 696: -#line 3155 "parse.y" +#line 3139 "parse.y" { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 697: -#line 3157 "parse.y" +#line 3141 "parse.y" { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 698: -#line 3159 "parse.y" +#line 3143 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} case 699: -#line 3161 "parse.y" +#line 3145 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ; break;} case 706: -#line 3184 "parse.y" +#line 3168 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids label declarations"); ; break;} case 709: -#line 3195 "parse.y" +#line 3179 "parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { @@ -7220,181 +7214,181 @@ case 709: ; break;} case 710: -#line 3209 "parse.y" +#line 3193 "parse.y" {; break;} case 712: -#line 3215 "parse.y" +#line 3199 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} case 713: -#line 3217 "parse.y" +#line 3201 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} case 714: -#line 3222 "parse.y" +#line 3206 "parse.y" { yyval.ttype = begin_if_stmt (); cond_stmt_keyword = "if"; ; break;} case 715: -#line 3227 "parse.y" +#line 3211 "parse.y" { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 716: -#line 3229 "parse.y" +#line 3213 "parse.y" { yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ; break;} case 718: -#line 3234 "parse.y" +#line 3218 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} case 719: -#line 3236 "parse.y" +#line 3220 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} case 720: -#line 3241 "parse.y" +#line 3225 "parse.y" {; break;} case 722: -#line 3247 "parse.y" +#line 3231 "parse.y" { finish_stmt (); ; break;} case 723: -#line 3249 "parse.y" +#line 3233 "parse.y" { finish_expr_stmt (yyvsp[-1].ttype); ; break;} case 724: -#line 3251 "parse.y" +#line 3235 "parse.y" { begin_else_clause (); ; break;} case 725: -#line 3253 "parse.y" +#line 3237 "parse.y" { finish_else_clause (yyvsp[-3].ttype); finish_if_stmt (); ; break;} case 726: -#line 3258 "parse.y" +#line 3242 "parse.y" { finish_if_stmt (); ; break;} case 727: -#line 3260 "parse.y" +#line 3244 "parse.y" { yyval.ttype = begin_while_stmt (); cond_stmt_keyword = "while"; ; break;} case 728: -#line 3265 "parse.y" +#line 3249 "parse.y" { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 729: -#line 3267 "parse.y" +#line 3251 "parse.y" { finish_while_stmt (yyvsp[-3].ttype); ; break;} case 730: -#line 3269 "parse.y" +#line 3253 "parse.y" { yyval.ttype = begin_do_stmt (); ; break;} case 731: -#line 3271 "parse.y" +#line 3255 "parse.y" { finish_do_body (yyvsp[-2].ttype); cond_stmt_keyword = "do"; ; break;} case 732: -#line 3276 "parse.y" +#line 3260 "parse.y" { finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} case 733: -#line 3278 "parse.y" +#line 3262 "parse.y" { yyval.ttype = begin_for_stmt (); ; break;} case 734: -#line 3280 "parse.y" +#line 3264 "parse.y" { finish_for_init_stmt (yyvsp[-2].ttype); ; break;} case 735: -#line 3282 "parse.y" +#line 3266 "parse.y" { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} case 736: -#line 3284 "parse.y" +#line 3268 "parse.y" { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ; break;} case 737: -#line 3286 "parse.y" +#line 3270 "parse.y" { finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ; break;} case 738: -#line 3288 "parse.y" +#line 3272 "parse.y" { begin_switch_stmt (); ; break;} case 739: -#line 3290 "parse.y" +#line 3274 "parse.y" { yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ; break;} case 740: -#line 3292 "parse.y" +#line 3276 "parse.y" { finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 741: -#line 3294 "parse.y" +#line 3278 "parse.y" { finish_case_label (yyvsp[-1].ttype, NULL_TREE); ; break;} case 743: -#line 3297 "parse.y" +#line 3281 "parse.y" { finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 745: -#line 3300 "parse.y" +#line 3284 "parse.y" { finish_case_label (NULL_TREE, NULL_TREE); ; break;} case 747: -#line 3303 "parse.y" +#line 3287 "parse.y" { finish_break_stmt (); ; break;} case 748: -#line 3305 "parse.y" +#line 3289 "parse.y" { finish_continue_stmt (); ; break;} case 749: -#line 3307 "parse.y" +#line 3291 "parse.y" { finish_return_stmt (NULL_TREE); ; break;} case 750: -#line 3309 "parse.y" +#line 3293 "parse.y" { finish_return_stmt (yyvsp[-1].ttype); ; break;} case 751: -#line 3311 "parse.y" +#line 3295 "parse.y" { finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, NULL_TREE); ; break;} case 752: -#line 3317 "parse.y" +#line 3301 "parse.y" { finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ; break;} case 753: -#line 3323 "parse.y" +#line 3307 "parse.y" { finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 754: -#line 3327 "parse.y" +#line 3311 "parse.y" { finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ; break;} case 755: -#line 3329 "parse.y" +#line 3313 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids computed gotos"); @@ -7402,29 +7396,29 @@ case 755: ; break;} case 756: -#line 3335 "parse.y" +#line 3319 "parse.y" { finish_goto_stmt (yyvsp[-1].ttype); ; break;} case 757: -#line 3337 "parse.y" +#line 3321 "parse.y" { finish_stmt (); ; break;} case 758: -#line 3339 "parse.y" +#line 3323 "parse.y" { error ("label must be followed by statement"); yyungetc ('}', 0); finish_stmt (); ; break;} case 759: -#line 3343 "parse.y" +#line 3327 "parse.y" { finish_stmt (); ; break;} case 762: -#line 3347 "parse.y" +#line 3331 "parse.y" { do_local_using_decl (yyvsp[0].ttype); ; break;} case 764: -#line 3353 "parse.y" +#line 3337 "parse.y" { if (! current_function_parms_stored) store_parm_decls (); @@ -7432,54 +7426,54 @@ case 764: ; break;} case 765: -#line 3359 "parse.y" +#line 3343 "parse.y" { expand_start_all_catch (); ; break;} case 766: -#line 3363 "parse.y" +#line 3347 "parse.y" { expand_end_all_catch (); yyval.itype = yyvsp[-3].itype; ; break;} case 767: -#line 3371 "parse.y" +#line 3355 "parse.y" { yyval.ttype = begin_try_block (); ; break;} case 768: -#line 3373 "parse.y" +#line 3357 "parse.y" { finish_try_block (yyvsp[-1].ttype); ; break;} case 769: -#line 3375 "parse.y" +#line 3359 "parse.y" { finish_handler_sequence (yyvsp[-3].ttype); ; break;} case 772: -#line 3385 "parse.y" +#line 3369 "parse.y" { yyval.ttype = begin_handler(); ; break;} case 773: -#line 3387 "parse.y" +#line 3371 "parse.y" { finish_handler_parms (yyvsp[-1].ttype); ; break;} case 774: -#line 3389 "parse.y" +#line 3373 "parse.y" { finish_handler (yyvsp[-3].ttype); ; break;} case 777: -#line 3399 "parse.y" +#line 3383 "parse.y" { expand_start_catch_block (NULL_TREE, NULL_TREE); ; break;} case 778: -#line 3415 "parse.y" +#line 3399 "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 779: -#line 3422 "parse.y" +#line 3406 "parse.y" { tree label; do_label: label = define_label (input_filename, lineno, yyvsp[-1].ttype); @@ -7488,98 +7482,98 @@ case 779: ; break;} case 780: -#line 3429 "parse.y" +#line 3413 "parse.y" { goto do_label; ; break;} case 781: -#line 3431 "parse.y" +#line 3415 "parse.y" { goto do_label; ; break;} case 782: -#line 3433 "parse.y" +#line 3417 "parse.y" { goto do_label; ; break;} case 783: -#line 3438 "parse.y" +#line 3422 "parse.y" { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; break;} case 785: -#line 3441 "parse.y" +#line 3425 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids compound statements inside for initializations"); ; break;} case 786: -#line 3450 "parse.y" +#line 3434 "parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} case 787: -#line 3453 "parse.y" +#line 3437 "parse.y" { emit_line_note (input_filename, lineno); ; break;} case 788: -#line 3458 "parse.y" +#line 3442 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 790: -#line 3461 "parse.y" +#line 3445 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 791: -#line 3468 "parse.y" +#line 3452 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 794: -#line 3475 "parse.y" +#line 3459 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} case 795: -#line 3480 "parse.y" +#line 3464 "parse.y" { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; break;} case 796: -#line 3485 "parse.y" +#line 3469 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; break;} case 797: -#line 3487 "parse.y" +#line 3471 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} case 798: -#line 3498 "parse.y" +#line 3482 "parse.y" { yyval.ttype = empty_parms(); ; break;} case 800: -#line 3503 "parse.y" +#line 3487 "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 801: -#line 3511 "parse.y" +#line 3495 "parse.y" { yyval.ttype = finish_parmlist (yyval.ttype, 0); ; break;} case 802: -#line 3513 "parse.y" +#line 3497 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} case 803: -#line 3516 "parse.y" +#line 3500 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} case 804: -#line 3518 "parse.y" +#line 3502 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 1); ; break;} case 805: -#line 3521 "parse.y" +#line 3505 "parse.y" { yyval.ttype = finish_parmlist (NULL_TREE, 1); ; break;} case 806: -#line 3523 "parse.y" +#line 3507 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7591,7 +7585,7 @@ case 806: ; break;} case 807: -#line 3533 "parse.y" +#line 3517 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7604,99 +7598,99 @@ case 807: ; break;} case 808: -#line 3548 "parse.y" +#line 3532 "parse.y" { maybe_snarf_defarg (); ; break;} case 809: -#line 3550 "parse.y" +#line 3534 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 812: -#line 3561 "parse.y" +#line 3545 "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 813: -#line 3564 "parse.y" +#line 3548 "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 814: -#line 3567 "parse.y" +#line 3551 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; break;} case 815: -#line 3570 "parse.y" +#line 3554 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 816: -#line 3572 "parse.y" +#line 3556 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; break;} case 818: -#line 3578 "parse.y" +#line 3562 "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 819: -#line 3588 "parse.y" +#line 3572 "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 820: -#line 3592 "parse.y" +#line 3576 "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 821: -#line 3595 "parse.y" +#line 3579 "parse.y" { yyval.ftype.t = build_tree_list (build_decl_list (NULL_TREE, yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 822: -#line 3599 "parse.y" +#line 3583 "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 823: -#line 3603 "parse.y" +#line 3587 "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 824: -#line 3607 "parse.y" +#line 3591 "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 825: -#line 3614 "parse.y" +#line 3598 "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 826: -#line 3617 "parse.y" +#line 3601 "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 829: -#line 3628 "parse.y" +#line 3612 "parse.y" { see_typename (); ; break;} case 830: -#line 3633 "parse.y" +#line 3617 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ; break;} case 831: -#line 3638 "parse.y" +#line 3622 "parse.y" { error ("type specifier omitted for parameter"); if (TREE_CODE (yyval.ttype) == SCOPE_REF @@ -7707,193 +7701,193 @@ case 831: ; break;} case 832: -#line 3650 "parse.y" +#line 3634 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 833: -#line 3652 "parse.y" +#line 3636 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 834: -#line 3654 "parse.y" +#line 3638 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ; break;} case 835: -#line 3659 "parse.y" +#line 3643 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ; break;} case 837: -#line 3665 "parse.y" +#line 3649 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 838: -#line 3673 "parse.y" +#line 3657 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 839: -#line 3675 "parse.y" +#line 3659 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 840: -#line 3677 "parse.y" +#line 3661 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 841: -#line 3679 "parse.y" +#line 3663 "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 842: -#line 3686 "parse.y" +#line 3670 "parse.y" { got_scope = NULL_TREE; ; break;} case 843: -#line 3691 "parse.y" +#line 3675 "parse.y" { yyval.ttype = ansi_opname[MULT_EXPR]; ; break;} case 844: -#line 3693 "parse.y" +#line 3677 "parse.y" { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; break;} case 845: -#line 3695 "parse.y" +#line 3679 "parse.y" { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; break;} case 846: -#line 3697 "parse.y" +#line 3681 "parse.y" { yyval.ttype = ansi_opname[PLUS_EXPR]; ; break;} case 847: -#line 3699 "parse.y" +#line 3683 "parse.y" { yyval.ttype = ansi_opname[MINUS_EXPR]; ; break;} case 848: -#line 3701 "parse.y" +#line 3685 "parse.y" { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; break;} case 849: -#line 3703 "parse.y" +#line 3687 "parse.y" { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; break;} case 850: -#line 3705 "parse.y" +#line 3689 "parse.y" { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; break;} case 851: -#line 3707 "parse.y" +#line 3691 "parse.y" { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; break;} case 852: -#line 3709 "parse.y" +#line 3693 "parse.y" { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; break;} case 853: -#line 3711 "parse.y" +#line 3695 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 854: -#line 3713 "parse.y" +#line 3697 "parse.y" { yyval.ttype = ansi_opname[LT_EXPR]; ; break;} case 855: -#line 3715 "parse.y" +#line 3699 "parse.y" { yyval.ttype = ansi_opname[GT_EXPR]; ; break;} case 856: -#line 3717 "parse.y" +#line 3701 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 857: -#line 3719 "parse.y" +#line 3703 "parse.y" { yyval.ttype = ansi_assopname[yyvsp[0].code]; ; break;} case 858: -#line 3721 "parse.y" +#line 3705 "parse.y" { yyval.ttype = ansi_opname [MODIFY_EXPR]; ; break;} case 859: -#line 3723 "parse.y" +#line 3707 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 860: -#line 3725 "parse.y" +#line 3709 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 861: -#line 3727 "parse.y" +#line 3711 "parse.y" { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; break;} case 862: -#line 3729 "parse.y" +#line 3713 "parse.y" { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; break;} case 863: -#line 3731 "parse.y" +#line 3715 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; break;} case 864: -#line 3733 "parse.y" +#line 3717 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; break;} case 865: -#line 3735 "parse.y" +#line 3719 "parse.y" { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; break;} case 866: -#line 3737 "parse.y" +#line 3721 "parse.y" { yyval.ttype = ansi_opname[COND_EXPR]; ; break;} case 867: -#line 3739 "parse.y" +#line 3723 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 868: -#line 3741 "parse.y" +#line 3725 "parse.y" { yyval.ttype = ansi_opname[COMPONENT_REF]; ; break;} case 869: -#line 3743 "parse.y" +#line 3727 "parse.y" { yyval.ttype = ansi_opname[MEMBER_REF]; ; break;} case 870: -#line 3745 "parse.y" +#line 3729 "parse.y" { yyval.ttype = ansi_opname[CALL_EXPR]; ; break;} case 871: -#line 3747 "parse.y" +#line 3731 "parse.y" { yyval.ttype = ansi_opname[ARRAY_REF]; ; break;} case 872: -#line 3749 "parse.y" +#line 3733 "parse.y" { yyval.ttype = ansi_opname[NEW_EXPR]; ; break;} case 873: -#line 3751 "parse.y" +#line 3735 "parse.y" { yyval.ttype = ansi_opname[DELETE_EXPR]; ; break;} case 874: -#line 3753 "parse.y" +#line 3737 "parse.y" { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; break;} case 875: -#line 3755 "parse.y" +#line 3739 "parse.y" { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; break;} case 876: -#line 3758 "parse.y" +#line 3742 "parse.y" { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 877: -#line 3760 "parse.y" +#line 3744 "parse.y" { yyval.ttype = ansi_opname[ERROR_MARK]; ; break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/cygnus/gnupro-98r2/share/bison.simple" +#line 498 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -8089,7 +8083,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 3763 "parse.y" +#line 3747 "parse.y" #ifdef SPEW_DEBUG diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index d5dee42efda5..476fdcf9f92e 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -2138,7 +2138,8 @@ structsp: if (!processing_template_decl) cp_pedwarn ("using `typename' outside of template"); } /* C++ extensions, merged with C to avoid shift/reduce conflicts */ - | class_head left_curly + | class_head '{' + { $1 = begin_class_definition ($1); } opt.component_decl_list '}' maybe_attribute { int semi; @@ -2147,7 +2148,7 @@ structsp: yychar = YYLEX; semi = yychar == ';'; - $$ = finish_class_definition ($1, $5, semi); + $$ = finish_class_definition ($1, $6, semi); } pending_defargs { @@ -2156,7 +2157,7 @@ structsp: pending_inlines { finish_inline_definitions (); - $$.t = $6; + $$.t = $7; $$.new_type_flag = 1; } | class_head %prec EMPTY @@ -2404,11 +2405,6 @@ base_class_access_list: } ; -left_curly: - '{' - { $0 = begin_class_definition ($0); } - ; - opt.component_decl_list: | component_decl_list | opt.component_decl_list access_specifier component_decl_list @@ -2758,14 +2754,7 @@ nonnested_type: if (TREE_CODE ($1) == IDENTIFIER_NODE) { $$ = lookup_name ($1, 1); - if (current_class_type - && TYPE_BEING_DEFINED (current_class_type) - && ! IDENTIFIER_CLASS_VALUE ($1)) - { - /* Remember that this name has been used in the class - definition, as per [class.scope0] */ - pushdecl_class_level ($$); - } + maybe_note_name_used_in_class ($1, $$); } else $$ = $1; @@ -2925,12 +2914,7 @@ nested_name_specifier_1: if (TREE_CODE ($1) == IDENTIFIER_NODE) { $$ = lastiddecl; - /* Remember that this name has been used in the class - definition, as per [class.scope0] */ - if (current_class_type - && TYPE_BEING_DEFINED (current_class_type) - && ! IDENTIFIER_CLASS_VALUE ($1)) - pushdecl_class_level ($$); + maybe_note_name_used_in_class ($1, $$); } got_scope = $$ = TYPE_MAIN_VARIANT (TREE_TYPE ($$)); } diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index a3c3a32836c5..28161b11c31f 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1304,16 +1304,6 @@ check_explicit_specialization (declarator, decl, template_count, flags) if (declarator == error_mark_node) return error_mark_node; - if (TREE_CODE (TREE_OPERAND (declarator, 0)) == LOOKUP_EXPR) - { - /* A friend declaration. We can't do much, because we don't - know what this resolves to, yet. */ - my_friendly_assert (is_friend != 0, 0); - my_friendly_assert (!explicit_instantiation, 0); - SET_DECL_IMPLICIT_INSTANTIATION (decl); - return decl; - } - if (ctype != NULL_TREE && TYPE_BEING_DEFINED (ctype)) { if (!explicit_instantiation) @@ -1340,6 +1330,15 @@ check_explicit_specialization (declarator, decl, template_count, flags) return decl; } + else if (TREE_CODE (TREE_OPERAND (declarator, 0)) == LOOKUP_EXPR) + { + /* A friend declaration. We can't do much, because we don't + know what this resolves to, yet. */ + my_friendly_assert (is_friend != 0, 0); + my_friendly_assert (!explicit_instantiation, 0); + SET_DECL_IMPLICIT_INSTANTIATION (decl); + return decl; + } else if (ctype != NULL_TREE && (TREE_CODE (TREE_OPERAND (declarator, 0)) == IDENTIFIER_NODE)) @@ -1598,7 +1597,11 @@ void check_template_shadow (decl) tree decl; { - tree olddecl = IDENTIFIER_VALUE (DECL_NAME (decl)); + tree olddecl; + + if (TREE_CODE (decl) == OVERLOAD) + decl = OVL_CURRENT (decl); + olddecl = IDENTIFIER_VALUE (DECL_NAME (decl)); if (current_template_parms && olddecl) { @@ -1888,8 +1891,8 @@ build_template_decl (decl, parms) if (DECL_LANG_SPECIFIC (decl)) { DECL_CLASS_CONTEXT (tmpl) = DECL_CLASS_CONTEXT (decl); - DECL_STATIC_FUNCTION_P (tmpl) = - DECL_STATIC_FUNCTION_P (decl); + DECL_STATIC_FUNCTION_P (tmpl) = DECL_STATIC_FUNCTION_P (decl); + DECL_CONSTRUCTOR_P (tmpl) = DECL_CONSTRUCTOR_P (decl); } return tmpl; diff --git a/gcc/cp/search.c b/gcc/cp/search.c index c4c365b147c8..5f4a76fe6cc1 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -89,7 +89,6 @@ static int hides PROTO((tree, tree)); static tree virtual_context PROTO((tree, tree, tree)); static tree dfs_check_overlap PROTO((tree, void *)); static tree dfs_no_overlap_yet PROTO((tree, void *)); -static void envelope_add_decl PROTO((tree, tree, tree *)); static int get_base_distance_recursive PROTO((tree, int, int, int, int *, tree *, tree, int, int *, int, int)); @@ -111,8 +110,8 @@ static tree dfs_find_vbases PROTO((tree, void *)); static tree dfs_clear_vbase_slots PROTO((tree, void *)); static tree dfs_init_vbase_pointers PROTO((tree, void *)); static tree dfs_get_vbase_types PROTO((tree, void *)); -static tree dfs_pushdecls PROTO((tree, void *)); -static tree dfs_compress_decls PROTO((tree, void *)); +static tree dfs_push_type_decls PROTO((tree, void *)); +static tree dfs_push_decls PROTO((tree, void *)); static tree dfs_unuse_fields PROTO((tree, void *)); static tree add_conversions PROTO((tree, void *)); static tree get_virtuals_named_this PROTO((tree, tree)); @@ -150,6 +149,8 @@ static tree dfs_assert_unmarked_p PROTO ((tree, void *)); static void assert_canonical_unmarked PROTO ((tree)); static int protected_accessible_p PROTO ((tree, tree, tree, tree)); static int friend_accessible_p PROTO ((tree, tree, tree, tree)); +static void setup_class_bindings PROTO ((tree, int)); +static int template_self_reference_p PROTO ((tree, tree)); /* Allocate a level of searching. */ @@ -1175,6 +1176,25 @@ lookup_field_queue_p (binfo, data) return binfo; } +/* Within the scope of a template class, you can refer to the + particular to the current specialization with the name of the + template itself. For example: + + template struct S { S* sp; } + + Returns non-zero if DECL is such a declaration in a class TYPE. */ + +static int +template_self_reference_p (type, decl) + tree type; + tree decl; +{ + return (CLASSTYPE_USE_TEMPLATE (type) + && TREE_CODE (decl) == TYPE_DECL + && DECL_ARTIFICIAL (decl) + && DECL_NAME (decl) == constructor_name (type)); +} + /* DATA is really a struct lookup_field_info. Look for a field with the name indicated there in BINFO. If this function returns a non-NULL value it is the result of the lookup. Called from @@ -1206,6 +1226,11 @@ lookup_field_r (binfo, data) if (!nval) return NULL_TREE; + /* You must name a template base class with a template-id. */ + if (!same_type_p (type, lfi->type) + && template_self_reference_p (type, nval)) + return NULL_TREE; + from_dep_base_p = dependent_base_p (binfo); if (lfi->from_dep_base_p && !from_dep_base_p) { @@ -1266,7 +1291,12 @@ lookup_field_r (binfo, data) { nval = purpose_member (lfi->name, CLASSTYPE_TAGS (type)); if (nval) - nval = TYPE_MAIN_DECL (TREE_VALUE (nval)); + { + nval = TYPE_MAIN_DECL (TREE_VALUE (nval)); + if (!same_type_p (type, lfi->type) + && template_self_reference_p (type, nval)) + nval = NULL_TREE; + } } if (nval) @@ -1300,13 +1330,15 @@ lookup_field_r (binfo, data) } /* Look for a memer named NAME in an inheritance lattice dominated by - XBASETYPE. PROTECT is zero if we can avoid computing access - information, otherwise it is 1. WANT_TYPE is 1 when we should only - return TYPE_DECLs, if no TYPE_DECL can be found return NULL_TREE. + XBASETYPE. PROTECT is 0 or two, we do not check access. If it is + 1, we enforce accessibility. If PROTECT is zero, then, for an + ambiguous lookup, we return NULL. If PROTECT is 1, we issue an + error message. If PROTECT is two 2, we return a TREE_LIST whose + TREE_PURPOSE is error_mark_node and whose TREE_VALUE is the list of + ambiguous candidates. - It was not clear what should happen if WANT_TYPE is set, and an - ambiguity is found. At least one use (lookup_name) to not see - the error. */ + WANT_TYPE is 1 when we should only return TYPE_DECLs, if no + TYPE_DECL can be found return NULL_TREE. */ tree lookup_member (xbasetype, name, protect, want_type) @@ -1324,13 +1356,6 @@ lookup_member (xbasetype, name, protect, want_type) checks. Whereas rval is only set if a proper (not hidden) non-function member is found. */ - /* rval_binfo_h and binfo_h are binfo values used when we perform the - hiding checks, as virtual base classes may not be shared. The strategy - is we always go into the binfo hierarchy owned by TYPE_BINFO of - virtual base classes, as we cross virtual base class lines. This way - we know that binfo of a virtual base class will always == itself when - found along any line. (mrs) */ - const char *errstr = 0; if (xbasetype == current_class_type && TYPE_BEING_DEFINED (xbasetype) @@ -1379,6 +1404,21 @@ lookup_member (xbasetype, name, protect, want_type) if (!protect && lfi.ambiguous) return NULL_TREE; + if (protect == 2) + { + if (lfi.ambiguous) + { + /* This flag tells hack_identifier that the lookup is + ambiguous. */ + TREE_NONLOCAL_FLAG (lfi.ambiguous) = 1; + return scratch_tree_cons (error_mark_node, + lfi.ambiguous, + NULL_TREE); + } + else + protect = 0; + } + /* [class.access] In the case of overloaded function names, access control is @@ -2814,107 +2854,6 @@ note_debug_info_needed (type) /* Subroutines of push_class_decls (). */ -/* Add in a decl to the envelope. */ -static void -envelope_add_decl (type, decl, values) - tree type, decl, *values; -{ - tree context, *tmp; - tree name = DECL_NAME (decl); - int dont_add = 0; - - /* Yet Another Implicit Typename Kludge: Since we don't tsubst - the members for partial instantiations, DECL_CONTEXT (decl) is wrong. - But pretend it's right for this function. */ - if (processing_template_decl) - type = DECL_REAL_CONTEXT (decl); - - /* virtual base names are always unique. */ - if (VBASE_NAME_P (name)) - *values = NULL_TREE; - - /* Possible ambiguity. If its defining type(s) - is (are all) derived from us, no problem. */ - else if (*values && TREE_CODE (*values) != TREE_LIST) - { - tree value = *values; - /* Only complain if we shadow something we can access. */ - if (warn_shadow && TREE_CODE (decl) == FUNCTION_DECL - && ((DECL_LANG_SPECIFIC (*values) - && DECL_CLASS_CONTEXT (value) == current_class_type) - || ! TREE_PRIVATE (value))) - /* Should figure out access control more accurately. */ - { - cp_warning_at ("member `%#D' is shadowed", value); - cp_warning_at ("by member function `%#D'", decl); - warning ("in this context"); - } - - context = DECL_REAL_CONTEXT (value); - - if (context == type) - { - if (TREE_CODE (value) == TYPE_DECL - && DECL_ARTIFICIAL (value)) - *values = NULL_TREE; - else - dont_add = 1; - } - else if (type == current_class_type - || DERIVED_FROM_P (context, type)) - { - /* Don't add in *values to list */ - *values = NULL_TREE; - } - else - *values = build_tree_list (NULL_TREE, value); - } - else - for (tmp = values; *tmp;) - { - tree value = TREE_VALUE (*tmp); - my_friendly_assert (TREE_CODE (value) != TREE_LIST, 999); - context = (TREE_CODE (value) == FUNCTION_DECL - && DECL_VIRTUAL_P (value)) - ? DECL_CLASS_CONTEXT (value) - : DECL_CONTEXT (value); - - if (type == current_class_type - || DERIVED_FROM_P (context, type)) - { - /* remove *tmp from list */ - *tmp = TREE_CHAIN (*tmp); - } - else - tmp = &TREE_CHAIN (*tmp); - } - - if (! dont_add) - { - /* Put the new contents in our envelope. */ - if (TREE_CODE (decl) == FUNCTION_DECL) - { - *values = tree_cons (name, decl, *values); - TREE_NONLOCAL_FLAG (*values) = 1; - TREE_TYPE (*values) = unknown_type_node; - } - else - { - if (*values) - { - *values = tree_cons (NULL_TREE, decl, *values); - /* Mark this as a potentially ambiguous member. */ - /* Leaving TREE_TYPE blank is intentional. - We cannot use `error_mark_node' (lookup_name) - or `unknown_type_node' (all member functions use this). */ - TREE_NONLOCAL_FLAG (*values) = 1; - } - else - *values = decl; - } - } -} - /* Returns 1 iff BINFO is a base we shouldn't really be able to see into, because it (or one of the intermediate bases) depends on template parms. */ @@ -2932,182 +2871,133 @@ dependent_base_p (binfo) return 0; } -/* Add the instance variables which this class contributed to the - current class binding contour. When a redefinition occurs, if the - redefinition is strictly within a single inheritance path, we just - overwrite the old declaration with the new. If the fields are not - within a single inheritance path, we must cons them. - - In order to know what decls are new (stemming from the current - invocation of push_class_decls) we enclose them in an "envelope", - which is a TREE_LIST node where the TREE_PURPOSE slot contains the - new decl (or possibly a list of competing ones), the TREE_VALUE slot - points to the old value and the TREE_CHAIN slot chains together all - envelopes which needs to be "opened" in push_class_decls. Opening an - envelope means: push the old value onto the class_shadowed list, - install the new one and if it's a TYPE_DECL do the same to the - IDENTIFIER_TYPE_VALUE. Such an envelope is recognized by seeing that - the TREE_PURPOSE slot is non-null, and that it is not an identifier. - Because if it is, it could be a set of overloaded methods from an - outer scope. */ - -static tree -dfs_pushdecls (binfo, data) - tree binfo; - void *data; +static void +setup_class_bindings (name, type_binding_p) + tree name; + int type_binding_p; { - tree *closed_envelopes = (tree *) data; - tree type = BINFO_TYPE (binfo); - tree fields; - tree method_vec; - int dummy = 0; + tree type_binding = NULL_TREE; + tree value_binding; - /* Only record types if we're a template base. */ - if (processing_template_decl && type != current_class_type - && dependent_base_p (binfo)) - dummy = 1; + /* If we've already done the lookup for this declaration, we're + done. */ + if (IDENTIFIER_CLASS_VALUE (name)) + return; - for (fields = TYPE_FIELDS (type); fields; fields = TREE_CHAIN (fields)) + /* First, deal with the type binding. */ + if (type_binding_p) { - if (dummy && TREE_CODE (fields) != TYPE_DECL) - continue; - - /* Unmark so that if we are in a constructor, and then find that - this field was initialized by a base initializer, - we can emit an error message. */ - if (TREE_CODE (fields) == FIELD_DECL) - TREE_USED (fields) = 0; - - /* Recurse into anonymous unions. */ - if (DECL_NAME (fields) == NULL_TREE - && TREE_CODE (TREE_TYPE (fields)) == UNION_TYPE) - { - dfs_pushdecls (TYPE_BINFO (TREE_TYPE (fields)), data); - continue; - } - - if (DECL_NAME (fields)) - { - tree name = DECL_NAME (fields); - tree 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. */ - maybe_push_cache_obstack (); - if (class_value == NULL_TREE || TREE_CODE (class_value) != TREE_LIST - || TREE_PURPOSE (class_value) == NULL_TREE - || TREE_CODE (TREE_PURPOSE (class_value)) == IDENTIFIER_NODE) - { - /* See comment above for a description of envelopes. */ - *closed_envelopes = tree_cons (NULL_TREE, class_value, - *closed_envelopes); - IDENTIFIER_CLASS_VALUE (name) = *closed_envelopes; - class_value = IDENTIFIER_CLASS_VALUE (name); - } - - envelope_add_decl (type, fields, &TREE_PURPOSE (class_value)); - pop_obstacks (); - } + type_binding = lookup_member (current_class_type, name, + /*protect=*/2, + /*want_type=*/1); + if (TREE_CODE (type_binding) == TREE_LIST + && TREE_PURPOSE (type_binding) == error_mark_node) + /* NAME is ambiguous. */ + push_class_level_binding (name, TREE_VALUE (type_binding)); + else + pushdecl_class_level (type_binding); } - method_vec = CLASS_TYPE_P (type) ? CLASSTYPE_METHOD_VEC (type) : NULL_TREE; - if (method_vec && ! dummy) + /* Now, do the value binding. */ + value_binding = lookup_member (current_class_type, name, + /*protect=*/2, + /*want_type=*/0); + + if (type_binding_p + && (TREE_CODE (value_binding) == TYPE_DECL + || (TREE_CODE (value_binding) == TREE_LIST + && TREE_PURPOSE (value_binding) == error_mark_node + && (TREE_CODE (TREE_VALUE (TREE_VALUE (value_binding))) + == TYPE_DECL)))) + /* We found a type-binding, even when looking for a non-type + binding. This means that we already processed this binding + above. */ + my_friendly_assert (type_binding_p, 19990401); + else { - tree *methods; - tree *end; - - /* Farm out constructors and destructors. */ - end = TREE_VEC_END (method_vec); - - for (methods = &TREE_VEC_ELT (method_vec, 2); - *methods && methods != end; - methods++) + if (TREE_CODE (value_binding) == TREE_LIST + && TREE_PURPOSE (value_binding) == error_mark_node) + /* NAME is ambiguous. */ + push_class_level_binding (name, TREE_VALUE (value_binding)); + else { - /* This will cause lookup_name to return a pointer - to the tree_list of possible methods of this name. */ - tree name; - tree class_value; - - - name = DECL_NAME (OVL_CURRENT (*methods)); - class_value = IDENTIFIER_CLASS_VALUE (name); + if (TREE_CODE (value_binding) == TREE_LIST) + /* NAME is some overloaded functions. */ + value_binding = TREE_VALUE (value_binding); + pushdecl_class_level (value_binding); + } + } +} - maybe_push_cache_obstack (); +/* Push class-level declarations for any names appearing in BINFO that + are TYPE_DECLS. */ - /* If the class value is not an envelope of the kind described in - the comment above, we create a new envelope. */ - if (class_value == NULL_TREE || TREE_CODE (class_value) != TREE_LIST - || TREE_PURPOSE (class_value) == NULL_TREE - || TREE_CODE (TREE_PURPOSE (class_value)) == IDENTIFIER_NODE) - { - /* See comment above for a description of envelopes. */ - *closed_envelopes = tree_cons (NULL_TREE, class_value, - *closed_envelopes); - IDENTIFIER_CLASS_VALUE (name) = *closed_envelopes; - class_value = IDENTIFIER_CLASS_VALUE (name); - } +static tree +dfs_push_type_decls (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + tree type; + tree fields; - /* Here we try to rule out possible ambiguities. - If we can't do that, keep a TREE_LIST with possibly ambiguous - decls in there. */ - /* Arbitrarily choose the first function in the list. This is OK - because this is only used for initial lookup; anything that - actually uses the function will look it up again. */ - envelope_add_decl (type, OVL_CURRENT (*methods), - &TREE_PURPOSE (class_value)); - pop_obstacks (); - } - } + type = BINFO_TYPE (binfo); + for (fields = TYPE_FIELDS (type); fields; fields = TREE_CHAIN (fields)) + if (DECL_NAME (fields) && TREE_CODE (fields) == TYPE_DECL + && !template_self_reference_p (type, fields)) + setup_class_bindings (DECL_NAME (fields), /*type_binding_p=*/1); /* We can't just use BINFO_MARKED because envelope_add_decl uses DERIVED_FROM_P, which calls get_base_distance. */ SET_BINFO_PUSHDECLS_MARKED (binfo); - + return NULL_TREE; } -/* Consolidate unique (by name) member functions. */ +/* Push class-level declarations for any names appearing in BINFO that + are not TYPE_DECLS. */ static tree -dfs_compress_decls (binfo, data) +dfs_push_decls (binfo, data) tree binfo; - void *data ATTRIBUTE_UNUSED; + void *data; { - tree type = BINFO_TYPE (binfo); - tree method_vec - = CLASS_TYPE_P (type) ? CLASSTYPE_METHOD_VEC (type) : NULL_TREE; + tree type; + tree method_vec; + int dep_base_p; - if (processing_template_decl && type != current_class_type - && dependent_base_p (binfo)) - /* We only record types if we're a template base. */; - else if (method_vec != 0) + type = BINFO_TYPE (binfo); + dep_base_p = (processing_template_decl && type != current_class_type + && dependent_base_p (binfo)); + if (!dep_base_p) { - /* Farm out constructors and destructors. */ - tree *methods; - tree *end = TREE_VEC_END (method_vec); - - for (methods = &TREE_VEC_ELT (method_vec, 2); - methods != end && *methods; methods++) + tree fields; + for (fields = TYPE_FIELDS (type); fields; fields = TREE_CHAIN (fields)) + if (DECL_NAME (fields) + && TREE_CODE (fields) != TYPE_DECL + && TREE_CODE (fields) != USING_DECL) + setup_class_bindings (DECL_NAME (fields), /*type_binding_p=*/0); + else if (TREE_CODE (fields) == FIELD_DECL + && ANON_UNION_TYPE_P (TREE_TYPE (fields))) + dfs_push_decls (TYPE_BINFO (TREE_TYPE (fields)), data); + + method_vec = (CLASS_TYPE_P (type) + ? CLASSTYPE_METHOD_VEC (type) : NULL_TREE); + if (method_vec) { - /* This is known to be an envelope of the kind described before - dfs_pushdecls. */ - tree class_value = - IDENTIFIER_CLASS_VALUE (DECL_NAME (OVL_CURRENT (*methods))); - tree tmp = TREE_PURPOSE (class_value); - - /* This was replaced in scope by somebody else. Just leave it - alone. */ - if (TREE_CODE (tmp) != TREE_LIST) - continue; - - if (TREE_CHAIN (tmp) == NULL_TREE - && TREE_VALUE (tmp) - && OVL_NEXT (TREE_VALUE (tmp)) == NULL_TREE) - { - TREE_PURPOSE (class_value) = TREE_VALUE (tmp); - } + tree *methods; + tree *end; + + /* Farm out constructors and destructors. */ + end = TREE_VEC_END (method_vec); + + for (methods = &TREE_VEC_ELT (method_vec, 2); + *methods && methods != end; + methods++) + setup_class_bindings (DECL_NAME (OVL_CURRENT (*methods)), + /*type_binding_p=*/0); } } + CLEAR_BINFO_PUSHDECLS_MARKED (binfo); return NULL_TREE; @@ -3125,7 +3015,6 @@ push_class_decls (type) tree type; { struct obstack *ambient_obstack = current_obstack; - tree closed_envelopes = NULL_TREE; search_stack = push_search_level (search_stack, &search_obstack); /* Build up all the relevant bindings and such on the cache @@ -3134,75 +3023,12 @@ push_class_decls (type) maybe_push_cache_obstack (); /* Push class fields into CLASS_VALUE scope, and mark. */ - dfs_walk (TYPE_BINFO (type), dfs_pushdecls, unmarked_pushdecls_p, - &closed_envelopes); + dfs_walk (TYPE_BINFO (type), dfs_push_type_decls, unmarked_pushdecls_p, 0); /* Compress fields which have only a single entry by a given name, and unmark. */ - dfs_walk (TYPE_BINFO (type), dfs_compress_decls, marked_pushdecls_p, - 0); + dfs_walk (TYPE_BINFO (type), dfs_push_decls, marked_pushdecls_p, 0); - /* Open up all the closed envelopes and push the contained decls into - class scope. */ - while (closed_envelopes) - { - tree new = TREE_PURPOSE (closed_envelopes); - tree id; - - /* This is messy because the class value may be a *_DECL, or a - TREE_LIST of overloaded *_DECLs or even a TREE_LIST of ambiguous - *_DECLs. The name is stored at different places in these three - cases. */ - if (TREE_CODE (new) == TREE_LIST) - { - if (TREE_PURPOSE (new) != NULL_TREE) - id = TREE_PURPOSE (new); - else - { - tree node = TREE_VALUE (new); - - if (TREE_CODE (node) == TYPE_DECL - && DECL_ARTIFICIAL (node) - && IS_AGGR_TYPE (TREE_TYPE (node)) - && CLASSTYPE_TEMPLATE_INFO (TREE_TYPE (node))) - { - tree t = CLASSTYPE_TI_TEMPLATE (TREE_TYPE (node)); - tree n = new; - - for (; n; n = TREE_CHAIN (n)) - { - tree d = TREE_VALUE (n); - if (TREE_CODE (d) == TYPE_DECL - && DECL_ARTIFICIAL (node) - && IS_AGGR_TYPE (TREE_TYPE (d)) - && CLASSTYPE_TEMPLATE_INFO (TREE_TYPE (d)) - && CLASSTYPE_TI_TEMPLATE (TREE_TYPE (d)) == t) - /* OK */; - else - break; - } - - if (n == NULL_TREE) - new = t; - } - else while (TREE_CODE (node) == TREE_LIST) - node = TREE_VALUE (node); - id = DECL_NAME (node); - } - } - else - id = DECL_NAME (new); - - /* Install the original class value in order to make - pushdecl_class_level work correctly. */ - IDENTIFIER_CLASS_VALUE (id) = TREE_VALUE (closed_envelopes); - if (TREE_CODE (new) == TREE_LIST) - push_class_level_binding (id, new); - else - pushdecl_class_level (new); - closed_envelopes = TREE_CHAIN (closed_envelopes); - } - /* Undo the call to maybe_push_cache_obstack above. */ pop_obstacks (); diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 0bbb1195da61..c0716d6c84a5 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1295,7 +1295,7 @@ begin_class_definition (t) && TYPE_CONTEXT (t) && TYPE_P (TYPE_CONTEXT (t)) && ! current_class_type) push_template_decl (TYPE_STUB_DECL (t)); - pushclass (t, 0); + pushclass (t, 1); TYPE_BEING_DEFINED (t) = 1; /* Reset the interface data, at the earliest possible moment, as it might have been set via a class foo; @@ -1419,6 +1419,10 @@ finish_member_declaration (decl) TREE_CHAIN (decl) = TYPE_FIELDS (current_class_type); TYPE_FIELDS (current_class_type) = decl; } + + /* Enter the DECL into the scope of the class. */ + if (TREE_CODE (decl) != USING_DECL) + pushdecl_class_level (decl); } } diff --git a/gcc/cp/tinfo.h b/gcc/cp/tinfo.h index 2601ce25edac..e0b9eec78970 100644 --- a/gcc/cp/tinfo.h +++ b/gcc/cp/tinfo.h @@ -40,7 +40,7 @@ struct __class_type_info : public __user_type_info { const __user_type_info *base; USItype offset: 29; bool is_virtual: 1; - access access: 2; + enum access access: 2; }; const base_info *base_list; diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 77cdf0567448..6016d91df081 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -2191,7 +2191,7 @@ build_component_ref (datum, component, basetype_path, protect) } ref = build (COMPONENT_REF, unknown_type_node, - datum, fndecls); + datum, TREE_VALUE (fndecls)); return ref; } @@ -2616,6 +2616,8 @@ build_x_function_call (function, params, decl) && current_class_type != NULL_TREE && (IDENTIFIER_CLASS_VALUE (TREE_PURPOSE (function)) == function)) + || (TREE_CODE (function) == OVERLOAD + && DECL_FUNCTION_MEMBER_P (OVL_CURRENT (function))) || TREE_CODE (function) == IDENTIFIER_NODE || TREE_CODE (type) == METHOD_TYPE || TYPE_PTRMEMFUNC_P (type)); @@ -2629,6 +2631,9 @@ build_x_function_call (function, params, decl) { tree basetype = NULL_TREE; + if (TREE_CODE (function) == OVERLOAD) + function = OVL_CURRENT (function); + if (TREE_CODE (function) == FUNCTION_DECL || DECL_FUNCTION_TEMPLATE_P (function)) { @@ -2700,7 +2705,14 @@ build_x_function_call (function, params, decl) /* Undo what we did in build_component_ref. */ decl = TREE_OPERAND (function, 0); function = TREE_OPERAND (function, 1); - function = DECL_NAME (OVL_CURRENT (TREE_VALUE (function))); + function = DECL_NAME (OVL_CURRENT (function)); + + if (template_id) + { + TREE_OPERAND (template_id, 0) = function; + function = template_id; + } + return build_method_call (decl, function, params, NULL_TREE, LOOKUP_NORMAL); } diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/tem03.C b/gcc/testsuite/g++.old-deja/g++.benjamin/tem03.C index abb956f87976..0e4c389b5060 100644 --- a/gcc/testsuite/g++.old-deja/g++.benjamin/tem03.C +++ b/gcc/testsuite/g++.old-deja/g++.benjamin/tem03.C @@ -123,7 +123,7 @@ public: template friend bool fooy(U u); - template // ERROR - .* + template friend bool foo(T161 u) { Xseven obj; diff --git a/gcc/testsuite/g++.old-deja/g++.other/lookup12.C b/gcc/testsuite/g++.old-deja/g++.other/lookup12.C new file mode 100644 index 000000000000..5c3143cdf332 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/lookup12.C @@ -0,0 +1,21 @@ +// Build don't link: +// Origin: Mark Mitchell + +struct B { + struct X {}; +}; + + +struct D : public B { + void X(); + + struct X x; + + void f(); +}; + + +void D::f() +{ + struct X y; +} diff --git a/gcc/testsuite/g++.old-deja/g++.other/using5.C b/gcc/testsuite/g++.old-deja/g++.other/using5.C index 57a9507b0b37..65dc9522a76d 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/using5.C +++ b/gcc/testsuite/g++.old-deja/g++.other/using5.C @@ -3,8 +3,6 @@ // Based on bug report by Klaus-Georg Adams // -// crash test - XFAIL *-*-* - struct bar { typedef bar t; }; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup7.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup7.C new file mode 100644 index 000000000000..9cc0d616d63c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup7.C @@ -0,0 +1,14 @@ +// Build don't link: +// Origin: Jason Merrill + +struct A { typedef int B; }; +template struct C : public A { + B b; + void f(); +}; + + +template +void C::f() { + B b; +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/lookup8.C b/gcc/testsuite/g++.old-deja/g++.pt/lookup8.C new file mode 100644 index 000000000000..cc562bf5d754 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/lookup8.C @@ -0,0 +1,15 @@ +// Build don't link: +// Origin: Mark Mitchell + +template +class X{}; + +class Y : public X +{ + void f(); +}; + +void Y::f() +{ + X x; // ERROR - X is not a type. +}