From 1d4e1364bd3dd85b557685e372e7bdba68cf1e21 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Mon, 7 Apr 2014 14:53:30 +0000 Subject: [PATCH 02/35] Keep inlined records in Typedtree and Types. Synthesize record types when inserting in the environment and module components, as for labels and constructors. Following features are not supported: inline record for exceptions, GADTs, polymorphic fields. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14553 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- asmcomp/cmmgen.ml | 2 +- boot/ocamlc | Bin 1535399 -> 1532519 bytes boot/ocamldep | Bin 421280 -> 421280 bytes boot/ocamllex | Bin 184001 -> 184001 bytes bytecomp/typeopt.ml | 5 +- tools/tast_iter.ml | 5 +- tools/untypeast.ml | 22 +-- toplevel/genprintval.ml | 84 ++++++----- typing/btype.ml | 39 +++--- typing/btype.mli | 2 + typing/ctype.ml | 76 +++++----- typing/datarepr.ml | 72 ++++++++-- typing/datarepr.mli | 6 +- typing/env.ml | 34 +++-- typing/includecore.ml | 30 ++-- typing/predef.ml | 7 +- typing/printtyp.ml | 91 ++---------- typing/printtyped.ml | 5 +- typing/subst.ml | 33 +++-- typing/typedecl.ml | 302 ++++++++++++++-------------------------- typing/typedecl.mli | 5 +- typing/typedtree.ml | 6 +- typing/typedtree.mli | 6 +- typing/typedtreeIter.ml | 5 +- typing/typedtreeMap.ml | 11 +- typing/typemod.ml | 23 +-- typing/types.ml | 7 +- typing/types.mli | 8 +- 28 files changed, 419 insertions(+), 467 deletions(-) diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml index 0e92fc499..0f9252361 100644 --- a/asmcomp/cmmgen.ml +++ b/asmcomp/cmmgen.ml @@ -633,7 +633,7 @@ let rec expr_size env = function RHS_block (List.length args) | Uprim(Pmakearray(Pfloatarray), args, _) -> RHS_floatblock (List.length args) - | Uprim (Pduprecord (Record_regular | Record_inlined _, sz), _, _) -> + | Uprim (Pduprecord ((Record_regular | Record_inlined _), sz), _, _) -> RHS_block sz | Uprim (Pduprecord (Record_exception _, sz), _, _) -> RHS_block (sz + 1) diff --git a/boot/ocamlc b/boot/ocamlc index c3936a2916e0deda5414fa3b12ce32885cd9460a..52613ca8f94110ccb7abf40489524c602bae2e04 100755 GIT binary patch delta 71861 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 delta 73375 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 E4SO3Y-2eap diff --git a/boot/ocamldep b/boot/ocamldep index 037bec05c017244121ac1a4622e51b1c7eec8b4f..155f00b144ec9d68dd060e66f68924be9038972f 100755 GIT binary patch delta 552 zcmV+@0@wYZ+ZmwS8IUdkGl4IKF9C%w0);OFwJ!vmqyaOR%%lWO0W*ghr3AMcr3FI7 z5UwepSZ%KKx7PR!t1A1?K9_811|tw@TG%$H(SX`Q9PYNS5LPKfu5%tpr9yJWpZt4Zf0*VOm|Rg<1bh83ZU&h-#$#(pr9y0 zb98ihaAk8a3BRpae-WLtF}{|d#J1D3pr9yMVRCM1ZfA2a=pMbHGJNg5U_5bH2yQnp zmpy9+DNpnbm;1vG%*)n zN->3(25bf-5QC=9?A&@=tiI+r^KW@|#g{s41}6}O;82%>qRkL8X~T|n^m@9Nacl-6 z5RlpJMRken$M~zTB@B~yf|sLg1}P8%c7b;t0PxeEXtl>OumiQ1+-wFpDc^dnz910O qPhxuyd{z1`1E8QKLt}4ka4>QMV(i{r(iak^c5Xp+n*^6WZ3bc$xc!9y delta 552 zcmV+@0@wYZ+ZmwS8IUdkGJ!9JF9C%w0);OFwJ!vmqyaLQ%%lWO0Wyagr3AMcr3FI7 z5Ita72mu%&v0D|A{*=S4Q{in&bjKRTD^@rh;)#muqSUJP=o>(}>cPD>;l;d}DH4B1M5zf(LN>mX)r7SXgcw>npr9yJWpZt4Zf0*Vr_5zJ1waEvIX6Lt?17utJ20;)%q;xQBiTMKF3%!Ck zyh3M}25bf-5MF$QdZ25-2PF(q6~gn{V3#^<1}6|Mdw5u)HjSxq-+Myg%p6abacl-6 z5Vz7Atpnj&V5+b+DNIQL6_=xI1}P98#T7h~wncY{{oGA=>jH?E+-wFpDLT^n(x*dY qyD{`qFc-P8AE2NmLt}4ka4?&(}WGl4IKF9EeL0<6jqJV?`%>ViXXRdI(KoaxK^m+Q&`au8`+ z*fyupfY;*z196!oTj`f=%K{=EFs?&+W%A5R>n+U& z;n;8j{Fms<0$32YSKl6MmQLH`TH`!P^|%jas!RodCamz>N3BoI>+q0SklF1;b&2f9 z_^Yrb43l?)m#fVJTMz}WGJ!9JF9EeL0<6jqC1>NeX({E8pjr4Tm9EFun@uHpM)LGgd5{ z#cA|3MmQSEtj6(v&MXj8}YPa$F)smz>N3BoHr5=Q)q0+T@o|YKY~|#Tb{+%mOeF z-QP0=zW3(OKLLUucDu`gmk`YYKM-DggnFQBzy~D^Q5C}T+F+Mo%>q0Sx6&G|1L0a= zs<1UFOi2M1m#fVJTM!<_6+Du*MR$n(+)a1u0*IFu&H_0Q4;kDb*(p(2RM)dAVjku@ ImtW2TV%avM%m4rY diff --git a/bytecomp/typeopt.ml b/bytecomp/typeopt.ml index c96e32b66..eb8c9435e 100644 --- a/bytecomp/typeopt.ml +++ b/bytecomp/typeopt.ml @@ -34,7 +34,7 @@ let maybe_pointer exp = match Env.find_type p exp.exp_env with | {type_kind = Type_variant []} -> true (* type exn *) | {type_kind = Type_variant cstrs} -> - List.exists (fun c -> c.Types.cd_args <> []) cstrs + List.exists (fun c -> c.Types.cd_args <> Cstr_tuple []) cstrs | _ -> true with Not_found -> true (* This can happen due to e.g. missing -I options, @@ -64,7 +64,8 @@ let array_element_kind env ty = {type_kind = Type_abstract} -> Pgenarray | {type_kind = Type_variant cstrs} - when List.for_all (fun c -> c.Types.cd_args = []) cstrs -> + when List.for_all (fun c -> c.Types.cd_args = Cstr_tuple []) + cstrs -> Pintarray | {type_kind = _} -> Paddrarray diff --git a/tools/tast_iter.ml b/tools/tast_iter.ml index c8af13670..2f5f0756f 100644 --- a/tools/tast_iter.ml +++ b/tools/tast_iter.ml @@ -18,7 +18,10 @@ let structure sub str = List.iter (sub # structure_item) str.str_items let constructor_decl sub cd = - List.iter (sub # core_type) cd.cd_args; + begin match cd.cd_args with + | Cstr_tuple l -> List.iter (sub # core_type) l + | Cstr_record l -> List.iter (fun ld -> sub # core_type ld.ld_type) l + end; opt (sub # core_type) cd.cd_res let structure_item sub x = diff --git a/tools/untypeast.ml b/tools/untypeast.ml index 4d2304e27..931e8cee5 100644 --- a/tools/untypeast.ml +++ b/tools/untypeast.ml @@ -123,13 +123,7 @@ and untype_type_declaration decl = | Ttype_variant list -> Ptype_variant (List.map untype_constructor_declaration list) | Ttype_record list -> - Ptype_record (List.map (fun ld -> - {pld_name=ld.ld_name; - pld_mutable=ld.ld_mutable; - pld_type=untype_core_type ld.ld_type; - pld_loc=ld.ld_loc; - pld_attributes=ld.ld_attributes} - ) list) + Ptype_record (List.map untype_label_declaration list) ); ptype_private = decl.typ_private; ptype_manifest = option untype_core_type decl.typ_manifest; @@ -137,10 +131,22 @@ and untype_type_declaration decl = ptype_loc = decl.typ_loc; } +and untype_label_declaration ld = + { + pld_name=ld.ld_name; + pld_mutable=ld.ld_mutable; + pld_type=untype_core_type ld.ld_type; + pld_loc=ld.ld_loc; + pld_attributes=ld.ld_attributes; + } + and untype_constructor_declaration cd = { pcd_name = cd.cd_name; - pcd_args = Pcstr_tuple (List.map untype_core_type cd.cd_args); + pcd_args = begin match cd.cd_args with + | Cstr_tuple l -> Pcstr_tuple (List.map untype_core_type l) + | Cstr_record l -> Pcstr_record (List.map untype_label_declaration l) + end; pcd_res = option untype_core_type cd.cd_res; pcd_loc = cd.cd_loc; pcd_attributes = cd.cd_attributes; diff --git a/toplevel/genprintval.ml b/toplevel/genprintval.ml index 5dc829b52..c774f8214 100644 --- a/toplevel/genprintval.ml +++ b/toplevel/genprintval.ml @@ -248,7 +248,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct if O.is_block obj then Cstr_block(O.tag obj) else Cstr_constant(O.obj obj) in - let {cd_id;cd_args;cd_res;cd_inlined} = + let {cd_id;cd_args;cd_res} = Datarepr.find_constr_by_tag tag constr_list in let type_params = match cd_res with @@ -259,46 +259,41 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct | _ -> assert false end | None -> decl.type_params in - let ty_args = - List.map - (function ty -> - try Ctype.apply env type_params ty ty_list with - Ctype.Cannot_apply -> abstract_type) - cd_args in - tree_of_constr_with_args (tree_of_constr env path) - (Ident.name cd_id) cd_inlined 0 depth obj - ty_args + begin + match cd_args with + | Cstr_tuple l -> + let ty_args = + List.map + (function ty -> + try Ctype.apply env type_params ty ty_list with + Ctype.Cannot_apply -> abstract_type) + l + in + tree_of_constr_with_args (tree_of_constr env path) + (Ident.name cd_id) false 0 depth obj + ty_args + | Cstr_record lbls -> + let r = + tree_of_record_fields depth + env path type_params ty_list + lbls 0 + in + Oval_constr(tree_of_constr env path + (Ident.name cd_id), + [ r ]) + end | {type_kind = Type_record(lbl_list, rep)} -> begin match check_depth depth obj ty with Some x -> x | None -> - let rec tree_of_fields pos = function - | [] -> [] - | {ld_id; ld_type} :: remainder -> - let ty_arg = - try - Ctype.apply env decl.type_params ld_type - ty_list - with - Ctype.Cannot_apply -> abstract_type in - let name = Ident.name ld_id in - (* PR#5722: print full module path only - for first record field *) - let lid = - if pos = 0 then tree_of_label env path name - else Oide_ident name - and v = - tree_of_val (depth - 1) (O.field obj pos) - ty_arg - in - (lid, v) :: tree_of_fields (pos + 1) remainder - in let pos = match rep with | Record_exception _ -> 1 | _ -> 0 in - Oval_record (tree_of_fields pos lbl_list) + tree_of_record_fields depth + env path decl.type_params ty_list + lbl_list pos end with Not_found -> (* raised by Env.find_type *) @@ -343,6 +338,31 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct Oval_stuff "" end + and tree_of_record_fields depth env path type_params ty_list + lbl_list pos = + let rec tree_of_fields pos = function + | [] -> [] + | {ld_id; ld_type} :: remainder -> + let ty_arg = + try + Ctype.apply env type_params ld_type + ty_list + with + Ctype.Cannot_apply -> abstract_type in + let name = Ident.name ld_id in + (* PR#5722: print full module path only + for first record field *) + let lid = + if pos = 0 then tree_of_label env path name + else Oide_ident name + and v = + tree_of_val (depth - 1) (O.field obj pos) + ty_arg + in + (lid, v) :: tree_of_fields (pos + 1) remainder + in + Oval_record (tree_of_fields pos lbl_list) + and tree_of_val_list start depth obj ty_list = let rec tree_list i = function | [] -> [] diff --git a/typing/btype.ml b/typing/btype.ml index 366e09e9a..499994148 100644 --- a/typing/btype.ml +++ b/typing/btype.ml @@ -252,6 +252,22 @@ type type_iterators = it_type_expr: type_iterators -> type_expr -> unit; it_path: Path.t -> unit; } +let iter_type_expr_kind f = function + | Type_abstract -> () + | Type_variant cstrs -> + List.iter + (fun cd -> + begin match cd.cd_args with + | Cstr_tuple tl -> List.iter f tl + | Cstr_record lbls -> List.iter (fun d -> f d.ld_type) lbls + end; + Misc.may f cd.cd_res + ) + cstrs + | Type_record(lbls, _) -> + List.iter (fun d -> f d.ld_type) lbls + + let type_iterators = let it_signature it = List.iter (it.it_signature_item it) @@ -305,15 +321,8 @@ let type_iterators = | Cty_arrow (_, ty, cty) -> it.it_type_expr it ty; it.it_class_type it cty - and it_type_kind it = function - Type_abstract -> () - | Type_record (ll, _) -> - List.iter (fun ld -> it.it_type_expr it ld.ld_type) ll - | Type_variant cl -> - List.iter (fun cd -> - List.iter (it.it_type_expr it) cd.cd_args; - may (it.it_type_expr it) cd.cd_res) - cl + and it_type_kind it kind = + iter_type_expr_kind (it.it_type_expr it) kind and it_type_expr it ty = iter_type_expr (it.it_type_expr it) ty; match ty.desc with @@ -440,17 +449,7 @@ let rec unmark_type ty = let unmark_type_decl decl = List.iter unmark_type decl.type_params; - begin match decl.type_kind with - Type_abstract -> () - | Type_variant cstrs -> - List.iter - (fun d -> - List.iter unmark_type d.cd_args; - Misc.may unmark_type d.cd_res) - cstrs - | Type_record(lbls, rep) -> - List.iter (fun d -> unmark_type d.ld_type) lbls - end; + iter_type_expr_kind unmark_type decl.type_kind; begin match decl.type_manifest with None -> () | Some ty -> unmark_type ty diff --git a/typing/btype.mli b/typing/btype.mli index 871760093..e670fa724 100644 --- a/typing/btype.mli +++ b/typing/btype.mli @@ -194,3 +194,5 @@ val log_type: type_expr -> unit (**** Forward declarations ****) val print_raw: (Format.formatter -> type_expr -> unit) ref + +val iter_type_expr_kind: (type_expr -> unit) -> (type_kind -> unit) diff --git a/typing/ctype.ml b/typing/ctype.ml index d75dea43e..68999ca01 100644 --- a/typing/ctype.ml +++ b/typing/ctype.ml @@ -546,7 +546,11 @@ let closed_type_decl decl = (fun {cd_args; cd_res; _} -> match cd_res with | Some _ -> () - | None -> List.iter closed_type cd_args) + | None -> + match cd_args with + | Cstr_tuple l -> List.iter closed_type l + | Cstr_record l -> List.iter (fun l -> closed_type l.ld_type) l + ) v | Type_record(r, rep) -> List.iter (fun l -> closed_type l.ld_type) r @@ -1156,25 +1160,36 @@ let instance_parameterized_type_2 sch_args sch_lst sch = cleanup_types (); (ty_args, ty_lst, ty) +let map_kind f = function + | Type_abstract -> Type_abstract + | Type_variant cl -> + Type_variant ( + List.map + (fun c -> + {c with + cd_args = + begin match c.cd_args with + | Cstr_tuple l-> Cstr_tuple (List.map f l) + | Cstr_record l -> + let field l = {l with ld_type = f l.ld_type} in + Cstr_record (List.map field l) + end; + cd_res=may_map f c.cd_res + }) + cl) + | Type_record (fl, rr) -> + Type_record ( + List.map + (fun l -> + {l with ld_type = f l.ld_type} + ) fl, rr) + + let instance_declaration decl = let decl = {decl with type_params = List.map simple_copy decl.type_params; type_manifest = may_map simple_copy decl.type_manifest; - type_kind = match decl.type_kind with - | Type_abstract -> Type_abstract - | Type_variant cl -> - Type_variant ( - List.map - (fun c -> - {c with cd_args=List.map simple_copy c.cd_args; - cd_res=may_map simple_copy c.cd_res}) - cl) - | Type_record (fl, rr) -> - Type_record ( - List.map - (fun l -> - {l with ld_type = copy l.ld_type} - ) fl, rr) + type_kind = map_kind simple_copy decl.type_kind; } in cleanup_types (); @@ -2125,7 +2140,12 @@ and mcomp_variant_description type_pairs env xs ys = match x, y with | c1 :: xs, c2 :: ys -> mcomp_type_option type_pairs env c1.cd_res c2.cd_res; - mcomp_list type_pairs env c1.cd_args c2.cd_args; + begin match c1.cd_args, c2.cd_args with + | Cstr_tuple l1, Cstr_tuple l2 -> mcomp_list type_pairs env l1 l2 + | Cstr_record l1, Cstr_record l2 -> + mcomp_record_description type_pairs env l1 l2 + | _ -> raise (Unify []) + end; if Ident.name c1.cd_id = Ident.name c2.cd_id then iter xs ys else raise (Unify []) @@ -4273,27 +4293,7 @@ let nondep_type_decl env mid id is_covariant decl = try let params = List.map (nondep_type_rec env mid) decl.type_params in let tk = - try match decl.type_kind with - Type_abstract -> - Type_abstract - | Type_variant cstrs -> - Type_variant - (List.map - (fun c -> - {c with - cd_args = List.map (nondep_type_rec env mid) c.cd_args; - cd_res = may_map (nondep_type_rec env mid) c.cd_res; - } - ) - cstrs) - | Type_record(lbls, rep) -> - Type_record - (List.map - (fun l -> - {l with ld_type = nondep_type_rec env mid l.ld_type} - ) - lbls, - rep) + try map_kind (nondep_type_rec env mid) decl.type_kind with Not_found when is_covariant -> Type_abstract and tm = try match decl.type_manifest with diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 5c1f987b4..729828f1f 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -39,16 +39,18 @@ let free_vars ty = unmark_type ty; !ret -let constructor_descrs ty_res cstrs priv = +let constructor_descrs ty_path decl cstrs = + let ty_res = newgenty (Tconstr(ty_path, decl.type_params, ref Mnil)) in let num_consts = ref 0 and num_nonconsts = ref 0 and num_normal = ref 0 in List.iter (fun {cd_args; cd_res; _} -> - if cd_args = [] then incr num_consts else incr num_nonconsts; + if cd_args = Cstr_tuple [] then incr num_consts else incr num_nonconsts; if cd_res = None then incr num_normal) cstrs; + let tdecls = ref [] in let rec describe_constructors idx_const idx_nonconst = function [] -> [] - | {cd_id; cd_args; cd_res; cd_loc; cd_attributes; cd_inlined} :: rem -> + | {cd_id; cd_args; cd_res; cd_loc; cd_attributes} :: rem -> let ty_res = match cd_res with | Some ty_res' -> ty_res' @@ -56,7 +58,7 @@ let constructor_descrs ty_res cstrs priv = in let (tag, descr_rem) = match cd_args with - [] -> (Cstr_constant idx_const, + Cstr_tuple [] -> (Cstr_constant idx_const, describe_constructors (idx_const+1) idx_nonconst rem) | _ -> (Cstr_block idx_nonconst, describe_constructors idx_const (idx_nonconst+1) rem) in @@ -65,27 +67,73 @@ let constructor_descrs ty_res cstrs priv = | None -> [] | Some type_ret -> let res_vars = free_vars type_ret in - let arg_vars = free_vars (newgenty (Ttuple cd_args)) in + let tyl = + match cd_args with + | Cstr_tuple l -> l + | Cstr_record l -> List.map (fun l -> l.ld_type) l + in + (* TODO: handle Tpoly *) + let arg_vars = free_vars (newgenty (Ttuple tyl)) in TypeSet.elements (TypeSet.diff arg_vars res_vars) in + let cstr_args, cstr_inlined = + match cd_args with + | Cstr_tuple l -> l, false + | Cstr_record lbls -> + let name = Path.last ty_path ^ "." ^ Ident.name cd_id in + let id = Ident.create name in + let path = + match ty_path with + | Path.Pdot(m, _, _) -> Path.Pdot(m, name, Path.nopos) + | Path.Pident _ -> Path.Pident id + | Path.Papply _ -> assert false + in + let type_manifest = + match decl.type_manifest with + | Some {desc = Tconstr(Path.Pdot (m, _, _), args, _)} -> + let p = Path.Pdot (m, name, Path.nopos) in + Some (newgenty (Tconstr (p, args, ref Mnil))) + | Some {desc = Tconstr(Path.Pident _, args, _)} -> + None (* looses the identity! *) + (* could we retrieve it in the current environment? *) + | _ -> None + in + let tdecl = + { + type_params = decl.type_params; (* TODO: add existentials *) + type_arity = decl.type_arity; + type_kind = Type_record (lbls, Record_inlined idx_nonconst); + type_private = Public; + type_manifest; + type_variance = decl.type_variance; + type_newtype_level = None; + type_loc = Location.none; + type_attributes = []; + } + in + tdecls := (id, path, tdecl) :: !tdecls; + [ newgenty (Tconstr(path, decl.type_params, ref Mnil)) ], + true + in let cstr = { cstr_name = Ident.name cd_id; cstr_res = ty_res; cstr_existentials = existentials; - cstr_args = cd_args; - cstr_arity = List.length cd_args; + cstr_args; + cstr_arity = List.length cstr_args; cstr_tag = tag; cstr_consts = !num_consts; cstr_nonconsts = !num_nonconsts; cstr_normal = !num_normal; - cstr_private = priv; + cstr_private = decl.type_private; cstr_generalized = cd_res <> None; cstr_loc = cd_loc; cstr_attributes = cd_attributes; - cstr_inlined = cd_inlined; + cstr_inlined; } in (cd_id, cstr) :: descr_rem in - describe_constructors 0 0 cstrs + let r = describe_constructors 0 0 cstrs in + r, !tdecls let exception_descr path_exc decl = { cstr_name = Path.last path_exc; @@ -101,7 +149,7 @@ let exception_descr path_exc decl = cstr_generalized = false; cstr_loc = decl.exn_loc; cstr_attributes = decl.exn_attributes; - cstr_inlined = decl.exn_inlined; + cstr_inlined = false; } let none = {desc = Ttuple []; level = -1; id = -1} @@ -140,7 +188,7 @@ exception Constr_not_found let rec find_constr tag num_const num_nonconst = function [] -> raise Constr_not_found - | {cd_args = []; _} as c :: rem -> + | {cd_args = Cstr_tuple []; _} as c :: rem -> if tag = Cstr_constant num_const then c else find_constr tag (num_const + 1) num_nonconst rem diff --git a/typing/datarepr.mli b/typing/datarepr.mli index 13ced4609..d7446f286 100644 --- a/typing/datarepr.mli +++ b/typing/datarepr.mli @@ -17,8 +17,10 @@ open Asttypes open Types val constructor_descrs: - type_expr -> constructor_declaration list -> - private_flag -> (Ident.t * constructor_description) list + Path.t -> type_declaration -> constructor_declaration list -> + (Ident.t * constructor_description) list * + (Ident.t * Path.t * type_declaration) list + val exception_descr: Path.t -> exception_declaration -> constructor_description val label_descrs: diff --git a/typing/env.ml b/typing/env.ml index 92b0c0f0d..41260546e 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -1034,14 +1034,9 @@ let scrape_alias env mty = scrape_alias env mty (* Compute constructor descriptions *) let constructors_of_type ty_path decl = - let handle_variants cstrs = - Datarepr.constructor_descrs - (newgenty (Tconstr(ty_path, decl.type_params, ref Mnil))) - cstrs decl.type_private - in match decl.type_kind with - | Type_variant cstrs -> handle_variants cstrs - | Type_record _ | Type_abstract -> [] + | Type_variant cstrs -> Datarepr.constructor_descrs ty_path decl cstrs + | Type_record _ | Type_abstract -> [], [] (* Compute label descriptions *) @@ -1176,7 +1171,7 @@ and components_of_module_maker (env, sub, path, mty) = let pl, sub, _ = prefix_idents_and_subst path sub sg in let env = ref env in let pos = ref 0 in - List.iter2 (fun item path -> + let rec aux item path = match item with Sig_value(id, decl) -> let decl' = Subst.value_description sub decl in @@ -1187,12 +1182,17 @@ and components_of_module_maker (env, sub, path, mty) = end | Sig_type(id, decl, _) -> let decl' = Subst.type_declaration sub decl in - let constructors = List.map snd (constructors_of_type path decl') in + let constrs, tdecls = constructors_of_type path decl' in + let constructors = List.map snd constrs in let labels = List.map snd (labels_of_type path decl') in c.comp_types <- Tbl.add (Ident.name id) ((decl', (constructors, labels)), nopos) c.comp_types; + List.iter + (fun (id, path, td) -> + aux (Sig_type(id, td, Trec_next)) path; + ) tdecls; List.iter (fun descr -> c.comp_constrs <- @@ -1234,9 +1234,10 @@ and components_of_module_maker (env, sub, path, mty) = | Sig_class_type(id, decl, _) -> let decl' = Subst.cltype_declaration sub decl in c.comp_cltypes <- - Tbl.add (Ident.name id) (decl', !pos) c.comp_cltypes) - sg pl; - Structure_comps c + Tbl.add (Ident.name id) (decl', !pos) c.comp_cltypes + in + List.iter2 aux sg pl; + Structure_comps c | Mty_functor(param, ty_arg, ty_res) -> Functor_comps { fcomp_param = param; @@ -1286,7 +1287,7 @@ and store_type ~check slot id path info env renv = if check then check_usage loc id (fun s -> Warnings.Unused_type_declaration s) type_declarations; - let constructors = constructors_of_type path info in + let constructors, tdecls = constructors_of_type path info in let labels = labels_of_type path info in let descrs = (List.map snd constructors, List.map snd labels) in @@ -1310,6 +1311,13 @@ and store_type ~check slot id path info env renv = end constructors end; + let env = + List.fold_left (fun env (id, path, td) -> + store_type ~check:false slot id path td env renv + ) + env + tdecls + in { env with constrs = List.fold_right diff --git a/typing/includecore.ml b/typing/includecore.ml index f783e49a1..6d5916bed 100644 --- a/typing/includecore.ml +++ b/typing/includecore.ml @@ -169,25 +169,33 @@ let rec compare_variants env decl1 decl2 n cstrs1 cstrs2 = {Types.cd_id=cstr2; cd_args=arg2; cd_res=ret2}::rem2 -> if Ident.name cstr1 <> Ident.name cstr2 then [Field_names (n, cstr1, cstr2)] - else if List.length arg1 <> List.length arg2 then - [Field_arity cstr1] else match ret1, ret2 with | Some r1, Some r2 when not (Ctype.equal env true [r1] [r2]) -> [Field_type cstr1] | Some _, None | None, Some _ -> [Field_type cstr1] | _ -> - if Misc.for_all2 - (fun ty1 ty2 -> - Ctype.equal env true (ty1::decl1.type_params) - (ty2::decl2.type_params)) - (arg1) (arg2) - then - compare_variants env decl1 decl2 (n+1) rem1 rem2 - else [Field_type cstr1] + let r = + match arg1, arg2 with + | Cstr_tuple arg1, Cstr_tuple arg2 -> + if List.length arg1 <> List.length arg2 then [Field_arity cstr1] + else if Misc.for_all2 + (fun ty1 ty2 -> + Ctype.equal env true (ty1::decl1.type_params) + (ty2::decl2.type_params)) + (arg1) (arg2) + then [] else [Field_type cstr1] + | Cstr_record l1, Cstr_record l2 -> + let r = compare_records env decl1 decl2 0 l1 l2 in + if r <> [] then Field_type cstr1 :: r else r + | _ -> + [Field_type cstr1] + in + if r <> [] then r + else compare_variants env decl1 decl2 (n+1) rem1 rem2 -let rec compare_records env decl1 decl2 n labels1 labels2 = +and compare_records env decl1 decl2 n labels1 labels2 = match labels1, labels2 with [], [] -> [] | [], l::_ -> [Field_missing (true, l.ld_id)] diff --git a/typing/predef.ml b/typing/predef.ml index 062bed4ee..d69076c28 100644 --- a/typing/predef.ml +++ b/typing/predef.ml @@ -106,11 +106,10 @@ let decl_abstr = let cstr id args = { cd_id = id; - cd_args = args; + cd_args = Cstr_tuple args; cd_res = None; cd_loc = Location.none; cd_attributes = []; - cd_inlined = false; } let ident_false = ident_create "false" @@ -167,9 +166,7 @@ let build_initial_env add_type add_exception empty_env = let add_exception id l = add_exception id - { exn_args = l; exn_loc = Location.none; exn_attributes = []; - exn_inlined = false; - } + { exn_args = l; exn_loc = Location.none; exn_attributes = [] } in add_exception ident_match_failure [newgenty (Ttuple[type_string; type_int; type_int])] ( diff --git a/typing/printtyp.ml b/typing/printtyp.ml index 2fd5ad967..b8a61ee6d 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -740,44 +740,6 @@ let string_of_mutable = function | Mutable -> "mutable " -(* Support for inlined records *) - -let inlined_records = ref [] - (* We don't reset this reference too often, as a hack to make - the error message produced by: - - module X : sig type 'a t = A of int end - = struct type 'a t = A of {x:int} end - - - work as expected (the type declaration is printed after - the signature, and so the definition of the inlined record is - available *) - -let register_inlined_record id td = - let td = Ctype.instance_declaration td in - let lbls = - match td.type_kind with - | Type_record(lbls, _) -> lbls - | _ -> assert false - in - inlined_records := (id, (lbls, td.type_params)) :: !inlined_records - -let get_inlined_record cd_args = - let id, args = - match cd_args with - | [ {desc = Tconstr(Path.Pident id, args, _)} ] -> id, args - | _ -> assert false - in - try - let lbls, params = List.assoc id !inlined_records in - lbls, params, args - with Not_found -> [], [], [] - (* This can happen in an error message, where the - variant type declaration is displayed on its own *) - - - let rec tree_of_type_decl id decl = reset(); @@ -821,13 +783,10 @@ let rec tree_of_type_decl id decl = | Type_variant cstrs -> List.iter (fun cd -> - if cd.cd_inlined then - let lbls, params, args = get_inlined_record cd.cd_args in - List.iter2 link_type params args; - List.iter (fun l -> mark_loops l.ld_type) lbls - else - List.iter mark_loops cd.cd_args; - may mark_loops cd.cd_res) + match cd.cd_args with + | Cstr_tuple l -> List.iter mark_loops l + | Cstr_record l -> List.iter (fun l -> mark_loops l.ld_type) l + ) cstrs | Type_record(l, rep) -> List.iter (fun l -> mark_loops l.ld_type) l @@ -887,11 +846,9 @@ let rec tree_of_type_decl id decl = and tree_of_constructor cd = let name = Ident.name cd.cd_id in let arg () = - if cd.cd_inlined then - let lbls, _, _ = get_inlined_record cd.cd_args in - [ Otyp_record (List.map tree_of_label lbls) ] - else - tree_of_typlist false cd.cd_args + match cd.cd_args with + | Cstr_tuple l -> tree_of_typlist false l + | Cstr_record l -> [ Otyp_record (List.map tree_of_label l) ] in match cd.cd_res with | None -> (name, arg (), None) @@ -921,19 +878,8 @@ let type_declaration id ppf decl = (* Print an exception declaration *) let tree_of_exception_declaration id decl = - let tyl = - if decl.exn_inlined then begin - let lbls, params, args = get_inlined_record decl.exn_args in - reset (); - List.iter2 link_type params args; - List.iter (fun l -> mark_loops l.ld_type) lbls; - [ Otyp_record (List.map tree_of_label lbls) ] - end else begin - reset_and_mark_loops_list decl.exn_args; - let tyl = tree_of_typlist false decl.exn_args in - tyl - end - in + reset_and_mark_loops_list decl.exn_args; + let tyl = tree_of_typlist false decl.exn_args in Osig_exception (Ident.name id, tyl) let exception_declaration id ppf decl = @@ -1141,17 +1087,6 @@ let filter_rem_sig item rem = ([ctydecl; tydecl1; tydecl2], rem) | Sig_class_type _, tydecl1 :: tydecl2 :: rem -> ([tydecl1; tydecl2], rem) - | Sig_type _, rem -> - let rec loop sg = function - | (Sig_type (id, - ({type_kind = Type_record (lbls, Record_inlined _)} as td), - Trec_next)) as it :: rem -> - register_inlined_record id td; - loop (it :: sg) rem - | rem -> - List.rev sg, rem - in - loop [] rem | _ -> ([], rem) @@ -1213,9 +1148,6 @@ and trees_of_sigitem = function [tree_of_value_description id decl] | Sig_type(id, _, _) when is_row_name (Ident.name id) -> [] - | Sig_type(id, ({type_kind=Type_record(_, Record_exception _)} as td), _) -> - register_inlined_record id td; - [] | Sig_type(id, decl, rs) -> [tree_of_type_declaration id decl rs] | Sig_exception(id, decl) -> @@ -1254,11 +1186,6 @@ let rec print_items showval env = function List.map (fun d -> (d, showval env item)) trees @ print_items showval env rem -let print_items showval env l = - let r = print_items showval env l in - inlined_records := []; - r - (* Print a signature body (used by -i when compiling a .ml) *) let print_signature ppf tree = diff --git a/typing/printtyped.ml b/typing/printtyped.ml index 209121e83..8f697066c 100644 --- a/typing/printtyped.ml +++ b/typing/printtyped.ml @@ -744,7 +744,10 @@ and constructor_decl i ppf {cd_id; cd_name = _; cd_args; cd_res; cd_loc; cd_attr line i ppf "%a\n" fmt_location cd_loc; attributes i ppf cd_attributes; line (i+1) ppf "%a\n" fmt_ident cd_id; - list (i+1) core_type ppf cd_args; + begin match cd_args with + | Cstr_tuple l -> list (i+1) core_type ppf l; + | Cstr_record l -> list (i+1) label_decl ppf l + end; option (i+1) core_type ppf cd_res and label_decl i ppf {ld_id; ld_name = _; ld_mutable; ld_type; ld_loc; ld_attributes} = diff --git a/typing/subst.ml b/typing/subst.ml index c2d12b1ae..24da1ef53 100644 --- a/typing/subst.ml +++ b/typing/subst.ml @@ -184,6 +184,15 @@ let type_expr s ty = cleanup_types (); ty' +let label_declaration s l = + { + ld_id = l.ld_id; + ld_mutable = l.ld_mutable; + ld_type = typexp s l.ld_type; + ld_loc = loc s l.ld_loc; + ld_attributes = attrs s l.ld_attributes; + } + let type_declaration s decl = let decl = { type_params = List.map (typexp s) decl.type_params; @@ -195,29 +204,24 @@ let type_declaration s decl = Type_variant (List.map (fun c -> + let cd_args = + match c.cd_args with + | Cstr_tuple l -> + Cstr_tuple (List.map (typexp s) l) + | Cstr_record l -> + Cstr_record (List.map (label_declaration s) l) + in { cd_id = c.cd_id; - cd_args = List.map (typexp s) c.cd_args; + cd_args; cd_res = may_map (typexp s) c.cd_res; cd_loc = loc s c.cd_loc; cd_attributes = attrs s c.cd_attributes; - cd_inlined = c.cd_inlined; } ) cstrs) | Type_record(lbls, rep) -> - Type_record - (List.map (fun l -> - { - ld_id = l.ld_id; - ld_mutable = l.ld_mutable; - ld_type = typexp s l.ld_type; - ld_loc = loc s l.ld_loc; - ld_attributes = attrs s l.ld_attributes; - } - ) - lbls, - rep) + Type_record (List.map (label_declaration s) lbls, rep) end; type_manifest = begin @@ -303,7 +307,6 @@ let exception_declaration s descr = { exn_args = List.map (type_expr s) descr.exn_args; exn_loc = loc s descr.exn_loc; exn_attributes = attrs s descr.exn_attributes; - exn_inlined = descr.exn_inlined; } let rec rename_bound_idents s idents = function diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 6bab0c06d..048a92bce 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -173,13 +173,35 @@ let freevars bound kind = ignore (mapper.type_kind mapper kind); StringMap.bindings !vars -let get_args = function - | Pcstr_tuple l -> l - | _ -> assert false - -let is_inline_record = function - | [ {ptyp_attributes = [{txt="#inline#"}, _]} ] -> true - | _ -> false +let transl_labels env closed lbls = + let all_labels = ref StringSet.empty in + List.iter + (fun {pld_name = {txt=name; loc}} -> + if StringSet.mem name !all_labels then + raise(Error(loc, Duplicate_label name)); + all_labels := StringSet.add name !all_labels) + lbls; + let mk {pld_name=name;pld_mutable=mut;pld_type=arg;pld_loc=loc;pld_attributes=attrs} = + let arg = Ast_helper.Typ.force_poly arg in + let cty = transl_simple_type env closed arg in + {ld_id = Ident.create name.txt; ld_name = name; ld_mutable = mut; ld_type = cty; + ld_loc = loc; ld_attributes = attrs} + in + let lbls = List.map mk lbls in + let lbls' = + List.map + (fun ld -> + let ty = ld.ld_type.ctyp_type in + let ty = match ty.desc with Tpoly(t,[]) -> t | _ -> ty in + {Types.ld_id = ld.ld_id; + ld_mutable = ld.ld_mutable; + ld_type = ty; + ld_loc = ld.ld_loc; + ld_attributes = ld.ld_attributes + } + ) + lbls in + lbls, lbls' let transl_declaration ?exnid env sdecl id = (* Bind type parameters *) @@ -204,23 +226,32 @@ let transl_declaration ?exnid env sdecl id = all_constrs := StringSet.add name !all_constrs) cstrs; if List.length - (List.filter (fun cd -> get_args cd.pcd_args <> []) cstrs) + (List.filter (fun cd -> cd.pcd_args <> Pcstr_tuple []) cstrs) > (Config.max_tag + 1) then raise(Error(sdecl.ptype_loc, Too_many_constructors)); let make_cstr {pcd_name = lid; pcd_args; pcd_res = ret_type; pcd_loc = loc; pcd_attributes = attrs} = let name = Ident.create lid.txt in - let args = get_args pcd_args in - let inlined = is_inline_record args in + let args closed = + match pcd_args with + | Pcstr_tuple l -> + let l = List.map (transl_simple_type env closed) l in + Types.Cstr_tuple (List.map (fun t -> t.ctyp_type) l), + Cstr_tuple l + | Pcstr_record l -> + let lbls, lbls' = transl_labels env closed l in + Types.Cstr_record lbls', + Cstr_record lbls + in match ret_type with | None -> - (name, lid, List.map (transl_simple_type env true) args, - None, None, loc, attrs, inlined) + (name, lid, args true, + None, None, loc, attrs) | Some sty -> (* if it's a generalized constructor we must first narrow and then widen so as to not introduce any new constraints *) let z = narrow () in reset_type_variables (); - let args = List.map (transl_simple_type env false) args in + let args = args false in let cty = transl_simple_type env false sty in let ret_type = let ty = cty.ctyp_type in @@ -232,60 +263,28 @@ let transl_declaration ?exnid env sdecl id = (ty, Ctype.newconstr p params))) in widen z; - (name, lid, args, Some cty, Some ret_type, loc, attrs, inlined) + (name, lid, args, Some cty, Some ret_type, loc, attrs) in let cstrs = List.map make_cstr cstrs in - Ttype_variant (List.map (fun (name, lid, ctys, res, _, loc, attrs, _) -> - {cd_id = name; cd_name = lid; cd_args = ctys; cd_res = res; + Ttype_variant (List.map (fun (name, lid, (_, args), res, _, loc, attrs) -> + {cd_id = name; cd_name = lid; cd_args = args; cd_res = res; cd_loc = loc; cd_attributes = attrs} ) cstrs), - Type_variant (List.map (fun (name, name_loc, ctys, _, option, loc, attrs, inlined) -> - {Types.cd_id = name; cd_args = List.map (fun cty -> cty.ctyp_type) ctys; + Type_variant (List.map (fun (name, name_loc, (args, _), _, option, loc, attrs) -> + {Types.cd_id = name; cd_args = args; cd_res = option; cd_loc = loc; cd_attributes = attrs; - cd_inlined = inlined; } ) cstrs) | Ptype_record lbls -> - let all_labels = ref StringSet.empty in - List.iter - (fun {pld_name = {txt=name}} -> - if StringSet.mem name !all_labels then - raise(Error(sdecl.ptype_loc, Duplicate_label name)); - all_labels := StringSet.add name !all_labels) - lbls; - let lbls = List.map (fun {pld_name=name;pld_mutable=mut;pld_type=arg;pld_loc=loc;pld_attributes=attrs} -> - let arg = Ast_helper.Typ.force_poly arg in - let cty = transl_simple_type env true arg in - {ld_id = Ident.create name.txt; ld_name = name; ld_mutable = mut; ld_type = cty; - ld_loc = loc; ld_attributes = attrs} - ) lbls in - let lbls' = - List.map - (fun ld -> - let ty = ld.ld_type.ctyp_type in - let ty = match ty.desc with Tpoly(t,[]) -> t | _ -> ty in - {Types.ld_id = ld.ld_id; - ld_mutable = ld.ld_mutable; - ld_type = ty; - ld_loc = ld.ld_loc; - ld_attributes = ld.ld_attributes - } - ) - lbls in - let rep = - match sdecl.ptype_attributes with - | [{txt="#tag#"}, PStr [{pstr_desc=Pstr_eval({pexp_desc=Pexp_constant(Const_int tag)}, _)}]] -> - begin match exnid with - | Some id -> Record_exception (Path.Pident id) - | None -> Record_inlined tag - end - | _ -> - if List.for_all (fun l -> is_float env l.Types.ld_type) lbls' - then Record_float - else Record_regular in - Ttype_record lbls, Type_record(lbls', rep) + let lbls, lbls' = transl_labels env true lbls in + let rep = + if List.for_all (fun l -> is_float env l.Types.ld_type) lbls' + then Record_float + else Record_regular + in + Ttype_record lbls, Type_record(lbls', rep) in let (tman, man) = match sdecl.ptype_manifest with None -> None, None @@ -345,18 +344,7 @@ let transl_declaration ?exnid env sdecl id = let generalize_decl decl = List.iter Ctype.generalize decl.type_params; - begin match decl.type_kind with - Type_abstract -> - () - | Type_variant v -> - List.iter - (fun c -> - List.iter Ctype.generalize c.Types.cd_args; - may Ctype.generalize c.Types.cd_res) - v - | Type_record(r, rep) -> - List.iter (fun l -> Ctype.generalize l.Types.ld_type) r - end; + Btype.iter_type_expr_kind Ctype.generalize decl.type_kind; begin match decl.type_manifest with | None -> () | Some ty -> Ctype.generalize ty @@ -390,6 +378,17 @@ let rec check_constraints_rec env loc visited ty = module SMap = Map.Make(String) +let check_constraints_labels env visited l pl = + let rec get_loc name = function + [] -> assert false + | pld :: tl -> + if name = pld.pld_name.txt then pld.pld_type.ptyp_loc else get_loc name tl + in + List.iter + (fun {Types.ld_id=name; ld_type=ty} -> + check_constraints_rec env (get_loc (Ident.name name) pl) visited ty) + l + let check_constraints env sdecl (_, decl) = let visited = ref TypeSet.empty in begin match decl.type_kind with @@ -407,14 +406,20 @@ let check_constraints env sdecl (_, decl) = List.fold_left foldf SMap.empty pl in List.iter - (fun {Types.cd_id=name; cd_args=tyl; cd_res=ret_type} -> + (fun {Types.cd_id=name; cd_args; cd_res=ret_type} -> let {pcd_args; pcd_res = sret_type; _} = try SMap.find (Ident.name name) pl_index with Not_found -> assert false in - List.iter2 - (fun sty ty -> - check_constraints_rec env sty.ptyp_loc visited ty) - (get_args pcd_args) tyl; + begin match cd_args, pcd_args with + | Cstr_tuple tyl, Pcstr_tuple styl -> + List.iter2 + (fun sty ty -> + check_constraints_rec env sty.ptyp_loc visited ty) + styl tyl + | Cstr_record tyl, Pcstr_record styl -> + check_constraints_labels env visited tyl styl + | _ -> assert false + end; match sret_type, ret_type with | Some sr, Some r -> check_constraints_rec env sr.ptyp_loc visited r @@ -427,15 +432,7 @@ let check_constraints env sdecl (_, decl) = | Ptype_variant _ | Ptype_abstract -> assert false in let pl = find_pl sdecl.ptype_kind in - let rec get_loc name = function - [] -> assert false - | pld :: tl -> - if name = pld.pld_name.txt then pld.pld_type.ptyp_loc else get_loc name tl - in - List.iter - (fun {Types.ld_id=name; ld_type=ty} -> - check_constraints_rec env (get_loc (Ident.name name) pl) visited ty) - l + check_constraints_labels env visited l pl end; begin match decl.type_manifest with | None -> () @@ -760,12 +757,19 @@ let constrained env vars ty = | Tvar _ -> List.exists (fun tl -> List.memq ty tl) vars | _ -> true +let for_constr = function + | Types.Cstr_tuple l -> add_false l + | Types.Cstr_record l -> + List.map + (fun {Types.ld_mutable; ld_type} -> (ld_mutable = Mutable, ld_type)) + l + let compute_variance_gadt env check (required, loc as rloc) decl (tl, ret_type_opt) = match ret_type_opt with | None -> compute_variance_type env check rloc {decl with type_private = Private} - (add_false tl) + (for_constr tl) | Some ret_type -> match Ctype.repr ret_type with | {desc=Tconstr (path, tyl, _)} -> @@ -785,7 +789,7 @@ let compute_variance_gadt env check (required, loc as rloc) decl in compute_variance_type env check rloc {decl with type_params = tyl; type_private = Private} - (add_false tl) + (for_constr tl) | _ -> assert false let compute_variance_decl env check decl (required, loc as rloc) = @@ -806,10 +810,11 @@ let compute_variance_decl env check decl (required, loc as rloc) = | Type_variant tll -> if List.for_all (fun c -> c.Types.cd_res = None) tll then compute_variance_type env check rloc decl - (mn @ add_false (List.flatten (List.map (fun c -> c.Types.cd_args) tll))) + (mn @ List.flatten (List.map (fun c -> for_constr c.Types.cd_args) + tll)) else begin let mn = - List.map (fun (_,ty) -> ([ty],None)) mn in + List.map (fun (_,ty) -> (Types.Cstr_tuple [ty],None)) mn in let tll = mn @ List.map (fun c -> c.Types.cd_args, c.Types.cd_res) tll in match List.map (compute_variance_gadt env check rloc decl) tll with | vari :: rem -> @@ -938,65 +943,6 @@ let name_recursion sdecl id decl = else decl | _ -> decl -(* Add fake record declarations for record constructor arguments *) -let inline_record_decls params manifest tag typname pcd = - let open Ast_helper in - match pcd.pcd_args with - | Pcstr_record lbls -> - let ptype_kind = Ptype_record lbls in - let bound = - List.fold_left (fun acc -> function - | Some {txt}, _ -> StringSet.add txt acc - | _ -> acc) StringSet.empty params - in - let extra_params = freevars bound ptype_kind in - let prepare_param (s, loc) = Some (mkloc s loc), Invariant in - let params = params @ List.map prepare_param extra_params in - let mk_arg = function - | (Some {txt;loc}, _) -> Typ.var ~loc txt - | (None, _) -> Typ.any () - in - let args = List.map mk_arg params in - let name = typname ^ "." ^ pcd.pcd_name.txt in - let ptype_attributes = - [ - mknoloc "#tag#", - PStr [ Str.eval (Exp.constant (Const_int !tag)) ] - ] - in - let ptype_manifest = - match manifest with - | Some {ptyp_desc=Ptyp_constr(lid, _args)} -> - (* does not make sense with 'as' clause *) - let rec append lid = - let open Longident in - match lid with - | Lident s -> Lident (s ^ "." ^ pcd.pcd_name.txt) - | Ldot (p, s) -> Ldot (p, s ^ "." ^ pcd.pcd_name.txt) - | Lapply (p1, p2) -> Lapply (p1, append p2) - in - Some (Typ.constr (mknoloc (append lid.txt)) args) (* todo: type parameters *) - | _ -> None - in - let decl = - { - ptype_name = mkloc name pcd.pcd_name.loc; - ptype_params = params; - ptype_cstrs = []; - ptype_kind; - ptype_private = Public; - ptype_manifest; - ptype_attributes; - ptype_loc = pcd.pcd_loc; - } in - incr tag; - let lid = mknoloc (Longident.Lident name) in - let attrs = [ mknoloc "#inline#", PStr [] ] in - let pcd_args = Pcstr_tuple [Typ.constr ~attrs lid args] in - {pcd with pcd_args}, [decl] - | Pcstr_tuple [] -> pcd, [] - | Pcstr_tuple _ -> incr tag; pcd, [] - (* Translate a set of mutually recursive type declarations *) let transl_type_decl ?exnid env sdecl_list = (* Add dummy types for fixed rows *) @@ -1009,24 +955,6 @@ let transl_type_decl ?exnid env sdecl_list = fixed_types @ sdecl_list in - let sdecl_list = - List.map - (function - | {ptype_kind = Ptype_variant cstrs} as sdecl -> - let tname = sdecl.ptype_name.txt in - let tag = ref 0 in - let do_cstr = - inline_record_decls sdecl.ptype_params sdecl.ptype_manifest - tag tname - in - let decls = List.map do_cstr cstrs in - let cstrs, more = List.split decls in - {sdecl with ptype_kind=Ptype_variant cstrs} :: List.flatten more - | x -> [ x ] - ) - sdecl_list - in - let sdecl_list = List.flatten sdecl_list in (* Create identifiers. *) let id_list = @@ -1151,17 +1079,13 @@ let transl_exception env excdecl = let id = Ident.create excdecl.pcd_name.txt in if excdecl.pcd_res <> None then raise (Error (loc, Exception_constructor_with_result)); - let excdecl, inlined_records = - inline_record_decls [] None (ref 0) "exn" excdecl - in - let (_, env) as tdecls = - match inlined_records with - | [] -> ([], env) - | decls -> transl_type_decl ~exnid:id env decls - in reset_type_variables(); Ctype.begin_def(); - let args = get_args excdecl.pcd_args in + let args = + match excdecl.pcd_args with + | Pcstr_tuple l -> l + | Pcstr_record _ -> assert false + in let ttypes = List.map (transl_closed_type env) args in Ctype.end_def(); let types = List.map (fun cty -> cty.ctyp_type) ttypes in @@ -1170,7 +1094,6 @@ let transl_exception env excdecl = { exn_args = types; exn_attributes = excdecl.pcd_attributes; - exn_inlined = is_inline_record args; Types.exn_loc = loc; } in @@ -1178,13 +1101,13 @@ let transl_exception env excdecl = let cd = { cd_id = id; cd_name = excdecl.pcd_name; - cd_args = ttypes; + cd_args = Cstr_tuple ttypes; cd_loc = loc; cd_res = None; cd_attributes = excdecl.pcd_attributes; } in - tdecls, cd, exn_decl, newenv + cd, exn_decl, newenv let transl_type_decl = transl_type_decl ?exnid:None @@ -1201,31 +1124,14 @@ let transl_exn_rebind env loc name lid = | Cstr_exception (path, _) -> path | _ -> raise(Error(loc, Not_an_exception lid)) in - let tdecls, exn_args = - if cdescr.cstr_inlined then - match cdescr.cstr_args with - | [{desc=Tconstr(p, [], _)} as ty] -> - let tdecl = - try Env.find_type p env - with Not_found -> assert false - in - let tdecl = {tdecl with type_manifest = Some ty} in - let (id, env) = - Env.enter_type ("exn." ^ name) tdecl env - in - ([id, tdecl], env), [ Ctype.newconstr (Path.Pident id) [] ] - | _ -> assert false - else - ([], env), cdescr.cstr_args - in + let exn_args = cdescr.cstr_args in let d = { Types.exn_args; exn_attributes = []; - exn_inlined = cdescr.cstr_inlined; exn_loc = loc } in - (tdecls, path, d) + (path, d) (* Translate a value declaration *) let transl_value_decl env loc valdecl = @@ -1473,7 +1379,11 @@ let report_error ppf = function begin match decl.type_kind, decl.type_manifest with | Type_variant tl, _ -> explain_unbound ppf ty tl (fun c -> - Btype.newgenty (Ttuple c.Types.cd_args)) + match c.cd_args with + | Cstr_tuple tl -> + Btype.newgenty (Ttuple tl) + | Cstr_record _ -> assert false + ) "case" (fun c -> Ident.name c.Types.cd_id ^ " of ") | Type_record (tl, _), _ -> explain_unbound ppf ty tl (fun l -> l.Types.ld_type) diff --git a/typing/typedecl.mli b/typing/typedecl.mli index ee68aa2e3..d8ac14c92 100644 --- a/typing/typedecl.mli +++ b/typing/typedecl.mli @@ -21,10 +21,11 @@ val transl_type_decl: val transl_exception: Env.t -> - Parsetree.constructor_declaration -> (Typedtree.type_declaration list * Env.t) * Typedtree.constructor_declaration * exception_declaration * Env.t + Parsetree.constructor_declaration -> + Typedtree.constructor_declaration * exception_declaration * Env.t val transl_exn_rebind: - Env.t -> Location.t -> string -> Longident.t -> ((Ident.t * Types.type_declaration) list * Env.t) * Path.t * exception_declaration + Env.t -> Location.t -> string -> Longident.t -> Path.t * exception_declaration val transl_value_decl: Env.t -> Location.t -> diff --git a/typing/typedtree.ml b/typing/typedtree.ml index 166086ae8..db56cf853 100644 --- a/typing/typedtree.ml +++ b/typing/typedtree.ml @@ -385,12 +385,16 @@ and constructor_declaration = { cd_id: Ident.t; cd_name: string loc; - cd_args: core_type list; + cd_args: constructor_arguments; cd_res: core_type option; cd_loc: Location.t; cd_attributes: attribute list; } +and constructor_arguments = + | Cstr_tuple of core_type list + | Cstr_record of label_declaration list + and class_type = { cltyp_desc: class_type_desc; diff --git a/typing/typedtree.mli b/typing/typedtree.mli index a7161914c..eabe828f8 100644 --- a/typing/typedtree.mli +++ b/typing/typedtree.mli @@ -384,12 +384,16 @@ and constructor_declaration = { cd_id: Ident.t; cd_name: string loc; - cd_args: core_type list; + cd_args: constructor_arguments; cd_res: core_type option; cd_loc: Location.t; cd_attributes: attributes; } +and constructor_arguments = + | Cstr_tuple of core_type list + | Cstr_record of label_declaration list + and class_type = { cltyp_desc: class_type_desc; diff --git a/typing/typedtreeIter.ml b/typing/typedtreeIter.ml index c0d61297d..f847a2e5a 100644 --- a/typing/typedtreeIter.ml +++ b/typing/typedtreeIter.ml @@ -164,7 +164,10 @@ module MakeIterator(Iter : IteratorArgument) : sig Iter.leave_value_description v and iter_constructor_declaration cd = - List.iter iter_core_type cd.cd_args; + begin match cd.cd_args with + | Cstr_tuple l -> List.iter iter_core_type l + | Cstr_record l -> List.iter (fun ld -> iter_core_type ld.ld_type) l + end; option iter_core_type cd.cd_res; and iter_type_declaration decl = diff --git a/typing/typedtreeMap.ml b/typing/typedtreeMap.ml index 93881a0f1..b4c00d04a 100644 --- a/typing/typedtreeMap.ml +++ b/typing/typedtreeMap.ml @@ -185,7 +185,16 @@ module MakeMap(Map : MapArgument) = struct typ_kind = typ_kind; typ_manifest = typ_manifest } and map_constructor_declaration cd = - {cd with cd_args = List.map map_core_type cd.cd_args; + let cd_args = + match cd.cd_args with + | Cstr_tuple l -> + Cstr_tuple (List.map map_core_type l) + | Cstr_record l -> + Cstr_record + (List.map (fun ld -> {ld with ld_type = map_core_type ld.ld_type}) + l) + in + {cd with cd_args; cd_res = may_map map_core_type cd.cd_res } diff --git a/typing/typemod.ml b/typing/typemod.ml index ddea66977..e5aaa238c 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -552,19 +552,13 @@ and transl_signature env sg = prepend_sig_types decls rem, final_env | Psig_exception sarg -> - let ((tdecls, tenv), arg, decl, newenv) = - Typedecl.transl_exception env sarg - in + let (arg, decl, newenv) = Typedecl.transl_exception env sarg in let (trem, rem, final_env) = transl_sig newenv srem in let id = arg.cd_id in - let trem = mksig (Tsig_exception arg) tenv loc :: trem in - let trem = - if tdecls = [] then trem else - mksig (Tsig_type tdecls) env loc :: trem - in + let trem = mksig (Tsig_exception arg) env loc :: trem in trem, (if List.exists (Ident.equal id) (get_exceptions rem) then rem - else prepend_sig_types tdecls (Sig_exception(id, decl) :: rem)), + else Sig_exception(id, decl) :: rem), final_env | Psig_module pmd -> check "module" item.psig_loc module_names pmd.pmd_name.txt; @@ -1163,20 +1157,17 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = prepend_sig_types decls [], enrich_type_decls anchor decls env newenv | Pstr_exception sarg -> - let ((tdecls, tenv), arg, decl, newenv) = - Typedecl.transl_exception env sarg - in - (* Note: we should keep tdecls in the typedtree *) + let (arg, decl, newenv) = Typedecl.transl_exception env sarg in Tstr_exception arg, - prepend_sig_types tdecls [Sig_exception(arg.cd_id, decl)], + [Sig_exception(arg.cd_id, decl)], newenv | Pstr_exn_rebind(name, longid, attrs) -> - let ((tdecls, env), path, arg) = + let (path, arg) = Typedecl.transl_exn_rebind env loc name.txt longid.txt in let (id, newenv) = Env.enter_exception name.txt arg env in Tstr_exn_rebind(id, name, path, longid, attrs), - prepend_sig_types' tdecls [Sig_exception(id, arg)], + [Sig_exception(id, arg)], newenv | Pstr_module {pmb_name = name; pmb_expr = smodl; pmb_attributes = attrs; pmb_loc; diff --git a/typing/types.ml b/typing/types.ml index 3eff6c70a..24e407680 100644 --- a/typing/types.ml +++ b/typing/types.ml @@ -209,13 +209,15 @@ and label_declaration = and constructor_declaration = { cd_id: Ident.t; - cd_args: type_expr list; + cd_args: constructor_arguments; cd_res: type_expr option; cd_loc: Location.t; cd_attributes: Parsetree.attributes; - cd_inlined: bool; } +and constructor_arguments = + | Cstr_tuple of type_expr list + | Cstr_record of label_declaration list and type_transparence = Type_public (* unrestricted expansion *) @@ -226,7 +228,6 @@ type exception_declaration = { exn_args: type_expr list; exn_loc: Location.t; exn_attributes: Parsetree.attributes; - exn_inlined: bool; (* merge with constructor_declaration? *) } (* Type expressions for the class language *) diff --git a/typing/types.mli b/typing/types.mli index 8cf172a8f..3c16a38be 100644 --- a/typing/types.mli +++ b/typing/types.mli @@ -197,13 +197,16 @@ and label_declaration = and constructor_declaration = { cd_id: Ident.t; - cd_args: type_expr list; + cd_args: constructor_arguments; cd_res: type_expr option; cd_loc: Location.t; cd_attributes: Parsetree.attributes; - cd_inlined: bool; } +and constructor_arguments = + | Cstr_tuple of type_expr list + | Cstr_record of label_declaration list + and type_transparence = Type_public (* unrestricted expansion *) | Type_new (* "new" type *) @@ -213,7 +216,6 @@ type exception_declaration = { exn_args: type_expr list; exn_loc: Location.t; exn_attributes: Parsetree.attributes; - exn_inlined: bool; (* merge with constructor_declaration? *) } (* Type expressions for the class language *) From 0b0d14e7a08835ca208d1734e8c9254d1226e844 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Mon, 7 Apr 2014 14:58:23 +0000 Subject: [PATCH 03/35] Fix re-export with a different name. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14554 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/datarepr.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 729828f1f..230f63643 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -90,8 +90,8 @@ let constructor_descrs ty_path decl cstrs = in let type_manifest = match decl.type_manifest with - | Some {desc = Tconstr(Path.Pdot (m, _, _), args, _)} -> - let p = Path.Pdot (m, name, Path.nopos) in + | Some {desc = Tconstr(Path.Pdot (m, name, _), args, _)} -> + let p = Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos) in Some (newgenty (Tconstr (p, args, ref Mnil))) | Some {desc = Tconstr(Path.Pident _, args, _)} -> None (* looses the identity! *) From 87c89730690540d7e4221da336005acf50a86233 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Mon, 7 Apr 2014 15:16:38 +0000 Subject: [PATCH 04/35] Find the id for local synthesized record types in the environment. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14557 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/datarepr.ml | 10 ++++++---- typing/datarepr.mli | 1 + typing/env.ml | 17 +++++++++++++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 230f63643..3441e50a0 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -39,7 +39,7 @@ let free_vars ty = unmark_type ty; !ret -let constructor_descrs ty_path decl cstrs = +let constructor_descrs resolv ty_path decl cstrs = let ty_res = newgenty (Tconstr(ty_path, decl.type_params, ref Mnil)) in let num_consts = ref 0 and num_nonconsts = ref 0 and num_normal = ref 0 in List.iter @@ -93,9 +93,11 @@ let constructor_descrs ty_path decl cstrs = | Some {desc = Tconstr(Path.Pdot (m, name, _), args, _)} -> let p = Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos) in Some (newgenty (Tconstr (p, args, ref Mnil))) - | Some {desc = Tconstr(Path.Pident _, args, _)} -> - None (* looses the identity! *) - (* could we retrieve it in the current environment? *) + | Some {desc = Tconstr(Path.Pident id, args, _)} -> + begin match resolv (Ident.name id ^ "." ^ Ident.name cd_id) with + | None -> None + | Some id -> Some (newgenty (Tconstr (Path.Pident id, args, ref Mnil))) + end | _ -> None in let tdecl = diff --git a/typing/datarepr.mli b/typing/datarepr.mli index d7446f286..9d0a18151 100644 --- a/typing/datarepr.mli +++ b/typing/datarepr.mli @@ -17,6 +17,7 @@ open Asttypes open Types val constructor_descrs: + (string -> Ident.t option) -> Path.t -> type_declaration -> constructor_declaration list -> (Ident.t * constructor_description) list * (Ident.t * Path.t * type_declaration) list diff --git a/typing/env.ml b/typing/env.ml index 41260546e..9d8f249f8 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -1033,9 +1033,18 @@ let scrape_alias env mty = scrape_alias env mty (* Compute constructor descriptions *) -let constructors_of_type ty_path decl = +let constructors_of_type env ty_path decl = match decl.type_kind with - | Type_variant cstrs -> Datarepr.constructor_descrs ty_path decl cstrs + | Type_variant cstrs -> + let resolv s = + try + let (p, _) = lookup_type (Longident.Lident s) env in + match p with + | Pident id -> Some id + | _ -> None + with Not_found -> None + in + Datarepr.constructor_descrs resolv ty_path decl cstrs | Type_record _ | Type_abstract -> [], [] (* Compute label descriptions *) @@ -1182,7 +1191,7 @@ and components_of_module_maker (env, sub, path, mty) = end | Sig_type(id, decl, _) -> let decl' = Subst.type_declaration sub decl in - let constrs, tdecls = constructors_of_type path decl' in + let constrs, tdecls = constructors_of_type !env path decl' in let constructors = List.map snd constrs in let labels = List.map snd (labels_of_type path decl') in c.comp_types <- @@ -1287,7 +1296,7 @@ and store_type ~check slot id path info env renv = if check then check_usage loc id (fun s -> Warnings.Unused_type_declaration s) type_declarations; - let constructors, tdecls = constructors_of_type path info in + let constructors, tdecls = constructors_of_type env path info in let labels = labels_of_type path info in let descrs = (List.map snd constructors, List.map snd labels) in From ca1e303b566acaebd938d47326fac8b767afeda5 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 8 Apr 2014 13:24:24 +0000 Subject: [PATCH 05/35] Keep the id for the synthesized sub-declaration in Cstr_record. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14560 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- testsuite/tests/typing-recordarg/recordarg.ml | 37 +++++++++++++++++++ .../typing-recordarg/recordarg.ml.reference | 13 +++---- toplevel/genprintval.ml | 2 +- typing/btype.ml | 2 +- typing/ctype.ml | 9 +++-- typing/datarepr.ml | 37 +++++++++++++------ typing/datarepr.mli | 4 +- typing/env.ml | 23 ++++++++---- typing/includecore.ml | 8 ++-- typing/includemod.ml | 20 +++++++++- typing/printtyp.ml | 4 +- typing/subst.ml | 18 ++++++++- typing/subst.mli | 3 ++ typing/typedecl.ml | 9 +++-- typing/types.ml | 2 +- typing/types.mli | 2 +- 16 files changed, 142 insertions(+), 51 deletions(-) create mode 100644 testsuite/tests/typing-recordarg/recordarg.ml diff --git a/testsuite/tests/typing-recordarg/recordarg.ml b/testsuite/tests/typing-recordarg/recordarg.ml new file mode 100644 index 000000000..f89d821c9 --- /dev/null +++ b/testsuite/tests/typing-recordarg/recordarg.ml @@ -0,0 +1,37 @@ +module M = struct + type t = A of {x:int} + let f (A r) = r +end;; +M.f;; + +module A : sig + type t = A of {x:int} + val f: t -> t.A +end = struct + type t = A of {x:int} + let f (A r) = r +end;; + +module type S = sig type t = A of {x:int} val f: t -> t.A end;; +module N : S with type t = M.t = M;; + + +(* +module M = struct + type 'a t = + | A of {x : 'a} + | B: {u : 'b} -> unit t + + exception Foo of {x : int} +end;; + +module N : sig + exception Foo of {x : int} +end = struct + type 'b t = 'b M.t = + | A of {x : 'b} + | B: {u : 'z} -> unit t + + exception Foo = M.Foo +end;; +*) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml.reference b/testsuite/tests/typing-recordarg/recordarg.ml.reference index 96198167a..cc14af3cd 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml.reference +++ b/testsuite/tests/typing-recordarg/recordarg.ml.reference @@ -1,8 +1,7 @@ -# module M : - sig - type 'a t = A of { x : 'a; } | B : { u : 'b; } -> unit t - exception Foo of { x : int; } - end -# module N : sig exception Foo of { x : int; } end -# +# module M : sig type t = A of { x : int; } val f : t -> t.A end +# - : M.t -> M.t.A = +# module A : sig type t = A of { x : int; } val f : t -> t.A end +# module type S = sig type t = A of { x : int; } val f : t -> t.A end +# module N : sig type t = M.t = A of { x : int; } val f : t -> t.A end +# * * * * * * * * * * * * * * * * * * diff --git a/toplevel/genprintval.ml b/toplevel/genprintval.ml index c774f8214..2ebff822f 100644 --- a/toplevel/genprintval.ml +++ b/toplevel/genprintval.ml @@ -272,7 +272,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct tree_of_constr_with_args (tree_of_constr env path) (Ident.name cd_id) false 0 depth obj ty_args - | Cstr_record lbls -> + | Cstr_record (_, lbls) -> let r = tree_of_record_fields depth env path type_params ty_list diff --git a/typing/btype.ml b/typing/btype.ml index 499994148..8122a2210 100644 --- a/typing/btype.ml +++ b/typing/btype.ml @@ -259,7 +259,7 @@ let iter_type_expr_kind f = function (fun cd -> begin match cd.cd_args with | Cstr_tuple tl -> List.iter f tl - | Cstr_record lbls -> List.iter (fun d -> f d.ld_type) lbls + | Cstr_record (_, lbls) -> List.iter (fun d -> f d.ld_type) lbls end; Misc.may f cd.cd_res ) diff --git a/typing/ctype.ml b/typing/ctype.ml index 68999ca01..afe92e159 100644 --- a/typing/ctype.ml +++ b/typing/ctype.ml @@ -549,7 +549,8 @@ let closed_type_decl decl = | None -> match cd_args with | Cstr_tuple l -> List.iter closed_type l - | Cstr_record l -> List.iter (fun l -> closed_type l.ld_type) l + | Cstr_record (_, l) -> + List.iter (fun l -> closed_type l.ld_type) l ) v | Type_record(r, rep) -> @@ -1170,9 +1171,9 @@ let map_kind f = function cd_args = begin match c.cd_args with | Cstr_tuple l-> Cstr_tuple (List.map f l) - | Cstr_record l -> + | Cstr_record (id, l) -> let field l = {l with ld_type = f l.ld_type} in - Cstr_record (List.map field l) + Cstr_record (id, List.map field l) end; cd_res=may_map f c.cd_res }) @@ -2142,7 +2143,7 @@ and mcomp_variant_description type_pairs env xs ys = mcomp_type_option type_pairs env c1.cd_res c2.cd_res; begin match c1.cd_args, c2.cd_args with | Cstr_tuple l1, Cstr_tuple l2 -> mcomp_list type_pairs env l1 l2 - | Cstr_record l1, Cstr_record l2 -> + | Cstr_record (_, l1), Cstr_record (_, l2) -> mcomp_record_description type_pairs env l1 l2 | _ -> raise (Unify []) end; diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 3441e50a0..359f6e2bf 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -39,8 +39,10 @@ let free_vars ty = unmark_type ty; !ret -let constructor_descrs resolv ty_path decl cstrs = - let ty_res = newgenty (Tconstr(ty_path, decl.type_params, ref Mnil)) in +let newgenconstr path tyl = newgenty (Tconstr (path, tyl, ref Mnil)) + +let constructor_descrs ty_path decl manifest_decl cstrs = + let ty_res = newgenconstr ty_path decl.type_params in let num_consts = ref 0 and num_nonconsts = ref 0 and num_normal = ref 0 in List.iter (fun {cd_args; cd_res; _} -> @@ -70,7 +72,7 @@ let constructor_descrs resolv ty_path decl cstrs = let tyl = match cd_args with | Cstr_tuple l -> l - | Cstr_record l -> List.map (fun l -> l.ld_type) l + | Cstr_record (_, l) -> List.map (fun l -> l.ld_type) l in (* TODO: handle Tpoly *) let arg_vars = free_vars (newgenty (Ttuple tyl)) in @@ -79,9 +81,8 @@ let constructor_descrs resolv ty_path decl cstrs = let cstr_args, cstr_inlined = match cd_args with | Cstr_tuple l -> l, false - | Cstr_record lbls -> + | Cstr_record (id, lbls) -> let name = Path.last ty_path ^ "." ^ Ident.name cd_id in - let id = Ident.create name in let path = match ty_path with | Path.Pdot(m, _, _) -> Path.Pdot(m, name, Path.nopos) @@ -91,12 +92,26 @@ let constructor_descrs resolv ty_path decl cstrs = let type_manifest = match decl.type_manifest with | Some {desc = Tconstr(Path.Pdot (m, name, _), args, _)} -> - let p = Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos) in - Some (newgenty (Tconstr (p, args, ref Mnil))) - | Some {desc = Tconstr(Path.Pident id, args, _)} -> - begin match resolv (Ident.name id ^ "." ^ Ident.name cd_id) with - | None -> None - | Some id -> Some (newgenty (Tconstr (Path.Pident id, args, ref Mnil))) + let p = + Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos) + in + Some (newgenconstr p args) + | Some {desc = Tconstr(Path.Pident _, args, _)} -> + begin match manifest_decl with + | Some {type_kind = Type_variant cstrs} -> + let c = + try + List.find + (fun c -> Ident.name c.cd_id = Ident.name cd_id) + cstrs + with Not_found -> assert false + in + begin match c.cd_args with + | Cstr_record (id, _) -> + Some (newgenconstr (Path.Pident id) args) + | _ -> assert false + end + | _ -> None end | _ -> None in diff --git a/typing/datarepr.mli b/typing/datarepr.mli index 9d0a18151..8a0d76912 100644 --- a/typing/datarepr.mli +++ b/typing/datarepr.mli @@ -17,8 +17,8 @@ open Asttypes open Types val constructor_descrs: - (string -> Ident.t option) -> - Path.t -> type_declaration -> constructor_declaration list -> + Path.t -> type_declaration -> type_declaration option -> + constructor_declaration list -> (Ident.t * constructor_description) list * (Ident.t * Path.t * type_declaration) list diff --git a/typing/env.ml b/typing/env.ml index 9d8f249f8..6993c9195 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -1036,15 +1036,15 @@ let scrape_alias env mty = scrape_alias env mty let constructors_of_type env ty_path decl = match decl.type_kind with | Type_variant cstrs -> - let resolv s = - try - let (p, _) = lookup_type (Longident.Lident s) env in - match p with - | Pident id -> Some id - | _ -> None - with Not_found -> None + let manifest_decl = + match decl.type_manifest with + | Some {desc = Tconstr((Path.Pident id) as p, _, _)} -> + begin try Some (find_type p env) + with Not_found -> None + end + | _ -> None in - Datarepr.constructor_descrs resolv ty_path decl cstrs + Datarepr.constructor_descrs ty_path decl manifest_decl cstrs | Type_record _ | Type_abstract -> [], [] (* Compute label descriptions *) @@ -1085,6 +1085,13 @@ let rec prefix_idents root pos sub = function to a constructor declaration with a record argument (the exception comes immediately after the synthesized type declaration). *) + let sub = + List.fold_left + (fun sub id -> + Subst.add_type id (Pdot(root, Ident.name id, pos)) sub + ) + sub (Subst.sub_ids decl) + in let (pl, final_sub) = prefix_idents root pos (Subst.add_type id p sub) rem in (p::pl, final_sub) diff --git a/typing/includecore.ml b/typing/includecore.ml index 6d5916bed..d84a90834 100644 --- a/typing/includecore.ml +++ b/typing/includecore.ml @@ -185,11 +185,9 @@ let rec compare_variants env decl1 decl2 n cstrs1 cstrs2 = (ty2::decl2.type_params)) (arg1) (arg2) then [] else [Field_type cstr1] - | Cstr_record l1, Cstr_record l2 -> - let r = compare_records env decl1 decl2 0 l1 l2 in - if r <> [] then Field_type cstr1 :: r else r - | _ -> - [Field_type cstr1] + | Cstr_record (_, l1), Cstr_record (_, l2) -> + compare_records env decl1 decl2 0 l1 l2 + | _ -> assert false (* TODO *) in if r <> [] then r else compare_variants env decl1 decl2 (n+1) rem1 rem2 diff --git a/typing/includemod.ml b/typing/includemod.ml index 7316a26af..dd41b6951 100644 --- a/typing/includemod.ml +++ b/typing/includemod.ml @@ -303,8 +303,24 @@ and signatures env cxt subst sig1 sig2 = let (id1, item1, pos1) = Tbl.find name2 comps1 in let new_subst = match item2 with - Sig_type _ -> - Subst.add_type id2 (Pident id1) subst + Sig_type (id2', decl2, _) -> + let subst = Subst.add_type id2 (Pident id1) subst in + begin match item1 with + | Sig_type (id1', decl1, _) -> + let ids1 = Subst.sub_ids decl1 in + let ids2 = Subst.sub_ids decl2 in + if List.length ids1 = List.length ids2 then + List.fold_left2 + (fun sub id1 id2 -> + if Ident.name id1 = Ident.name id2 then + Subst.add_type id2 (Pident id1) sub + else + sub + ) subst ids1 ids2 + else + subst + | _ -> assert false + end | Sig_module _ -> Subst.add_module id2 (Pident id1) subst | Sig_modtype _ -> diff --git a/typing/printtyp.ml b/typing/printtyp.ml index b8a61ee6d..ea951e342 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -785,7 +785,7 @@ let rec tree_of_type_decl id decl = (fun cd -> match cd.cd_args with | Cstr_tuple l -> List.iter mark_loops l - | Cstr_record l -> List.iter (fun l -> mark_loops l.ld_type) l + | Cstr_record (_, l) -> List.iter (fun l -> mark_loops l.ld_type) l ) cstrs | Type_record(l, rep) -> @@ -848,7 +848,7 @@ and tree_of_constructor cd = let arg () = match cd.cd_args with | Cstr_tuple l -> tree_of_typlist false l - | Cstr_record l -> [ Otyp_record (List.map tree_of_label l) ] + | Cstr_record (_, l) -> [ Otyp_record (List.map tree_of_label l) ] in match cd.cd_res with | None -> (name, arg (), None) diff --git a/typing/subst.ml b/typing/subst.ml index 24da1ef53..bbe56fe62 100644 --- a/typing/subst.ml +++ b/typing/subst.ml @@ -208,8 +208,8 @@ let type_declaration s decl = match c.cd_args with | Cstr_tuple l -> Cstr_tuple (List.map (typexp s) l) - | Cstr_record l -> - Cstr_record (List.map (label_declaration s) l) + | Cstr_record (id, l) -> + Cstr_record (id, List.map (label_declaration s) l) in { cd_id = c.cd_id; @@ -346,6 +346,7 @@ let rec modtype s = function Mty_alias(module_path s p) and signature s sg = + (* TODO: rename the Ident.t in Cstr_record *) (* Components of signature may be mutually recursive (e.g. type declarations or class and type declarations), so first build global renaming substitution... *) @@ -398,3 +399,16 @@ let compose s1 s2 = modules = merge_tbls (module_path s2) s1.modules s2.modules; modtypes = merge_tbls (modtype s2) s1.modtypes s2.modtypes; for_saving = false } + + +let sub_ids decl = + match decl.type_kind with + | Type_variant cstrs -> + List.fold_left + (fun l c -> + match c.cd_args with + | Cstr_record (id, _) -> id :: l + | _ -> l + ) + [] cstrs + | _ -> [] diff --git a/typing/subst.mli b/typing/subst.mli index 24a63b3e3..6f6bbd42d 100644 --- a/typing/subst.mli +++ b/typing/subst.mli @@ -55,3 +55,6 @@ val module_declaration: t -> module_declaration -> module_declaration (* Composition of substitutions: apply (compose s1 s2) x = apply s2 (apply s1 x) *) val compose: t -> t -> t + + +val sub_ids: type_declaration -> Ident.t list diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 048a92bce..8cb014e63 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -239,7 +239,8 @@ let transl_declaration ?exnid env sdecl id = Cstr_tuple l | Pcstr_record l -> let lbls, lbls' = transl_labels env closed l in - Types.Cstr_record lbls', + let id = Ident.create (Ident.name id ^ "." ^ lid.txt) in + Types.Cstr_record (id, lbls'), Cstr_record lbls in match ret_type with @@ -416,9 +417,9 @@ let check_constraints env sdecl (_, decl) = (fun sty ty -> check_constraints_rec env sty.ptyp_loc visited ty) styl tyl - | Cstr_record tyl, Pcstr_record styl -> + | Cstr_record (_, tyl), Pcstr_record styl -> check_constraints_labels env visited tyl styl - | _ -> assert false + | _ -> assert false (* todo *) end; match sret_type, ret_type with | Some sr, Some r -> @@ -759,7 +760,7 @@ let constrained env vars ty = let for_constr = function | Types.Cstr_tuple l -> add_false l - | Types.Cstr_record l -> + | Types.Cstr_record (_, l) -> List.map (fun {Types.ld_mutable; ld_type} -> (ld_mutable = Mutable, ld_type)) l diff --git a/typing/types.ml b/typing/types.ml index 24e407680..0543141d8 100644 --- a/typing/types.ml +++ b/typing/types.ml @@ -217,7 +217,7 @@ and constructor_declaration = and constructor_arguments = | Cstr_tuple of type_expr list - | Cstr_record of label_declaration list + | Cstr_record of Ident.t * label_declaration list and type_transparence = Type_public (* unrestricted expansion *) diff --git a/typing/types.mli b/typing/types.mli index 3c16a38be..1b772b356 100644 --- a/typing/types.mli +++ b/typing/types.mli @@ -205,7 +205,7 @@ and constructor_declaration = and constructor_arguments = | Cstr_tuple of type_expr list - | Cstr_record of label_declaration list + | Cstr_record of Ident.t * label_declaration list and type_transparence = Type_public (* unrestricted expansion *) From dc88cf81b855888be318b80510de01f29d7162bd Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 8 Apr 2014 13:38:08 +0000 Subject: [PATCH 06/35] Polymorphic fields are actually ok. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14561 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/datarepr.ml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 359f6e2bf..b7eb15a55 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -74,7 +74,9 @@ let constructor_descrs ty_path decl manifest_decl cstrs = | Cstr_tuple l -> l | Cstr_record (_, l) -> List.map (fun l -> l.ld_type) l in - (* TODO: handle Tpoly *) + (* Note: variables bound by Tpoly are Tvar, not Tunivar, + and thus they are not considered as free, which is + what we want. *) let arg_vars = free_vars (newgenty (Ttuple tyl)) in TypeSet.elements (TypeSet.diff arg_vars res_vars) in From ef1b5e59cf5721fd73b175c941e48f4b4ad1be7e Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 8 Apr 2014 13:48:23 +0000 Subject: [PATCH 07/35] Support for GADT constructors with record syntax. For now, do not try to infer a clever variance, nor a predictible ordering, for the extra arguments on synthesized types. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14562 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/datarepr.ml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/typing/datarepr.ml b/typing/datarepr.ml index b7eb15a55..7bfa19afa 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -97,7 +97,7 @@ let constructor_descrs ty_path decl manifest_decl cstrs = let p = Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos) in - Some (newgenconstr p args) + Some (newgenconstr p (args @ existentials)) | Some {desc = Tconstr(Path.Pident _, args, _)} -> begin match manifest_decl with | Some {type_kind = Type_variant cstrs} -> @@ -110,7 +110,7 @@ let constructor_descrs ty_path decl manifest_decl cstrs = in begin match c.cd_args with | Cstr_record (id, _) -> - Some (newgenconstr (Path.Pident id) args) + Some (newgenconstr (Path.Pident id) (args @ existentials)) | _ -> assert false end | _ -> None @@ -119,19 +119,19 @@ let constructor_descrs ty_path decl manifest_decl cstrs = in let tdecl = { - type_params = decl.type_params; (* TODO: add existentials *) + type_params = decl.type_params @ existentials; type_arity = decl.type_arity; type_kind = Type_record (lbls, Record_inlined idx_nonconst); type_private = Public; type_manifest; - type_variance = decl.type_variance; + type_variance = decl.type_variance @ List.map (fun _ -> Variance.full) existentials; type_newtype_level = None; type_loc = Location.none; type_attributes = []; } in tdecls := (id, path, tdecl) :: !tdecls; - [ newgenty (Tconstr(path, decl.type_params, ref Mnil)) ], + [ newgenconstr path (decl.type_params @ existentials) ], true in let cstr = From 632eb112461be27b662b1dad9c216c6bc346ebef Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 8 Apr 2014 15:52:14 +0000 Subject: [PATCH 08/35] For GADT constructors, the type parameters of the original sum type cannot be used for the synthesized record types. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14563 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- testsuite/tests/typing-recordarg/recordarg.ml | 3 +++ .../tests/typing-recordarg/recordarg.ml.reference | 4 +++- typing/datarepr.ml | 11 ++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml b/testsuite/tests/typing-recordarg/recordarg.ml index f89d821c9..b43b1a887 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml +++ b/testsuite/tests/typing-recordarg/recordarg.ml @@ -16,6 +16,9 @@ module type S = sig type t = A of {x:int} val f: t -> t.A end;; module N : S with type t = M.t = M;; +type 'a t = A: {x : 'a; y : 'b} -> 'a t;; +let f r = A r;; + (* module M = struct type 'a t = diff --git a/testsuite/tests/typing-recordarg/recordarg.ml.reference b/testsuite/tests/typing-recordarg/recordarg.ml.reference index cc14af3cd..750b83402 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml.reference +++ b/testsuite/tests/typing-recordarg/recordarg.ml.reference @@ -4,4 +4,6 @@ # module A : sig type t = A of { x : int; } val f : t -> t.A end # module type S = sig type t = A of { x : int; } val f : t -> t.A end # module N : sig type t = M.t = A of { x : int; } val f : t -> t.A end -# * * * * * * * * * * * * * * * * * * +# type 'a t = A : { x : 'a; y : 'b; } -> 'a t +# val f : ('a, 'b) t.A -> 'a t = +# * * * * * * * * * * * * * * * * * * diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 7bfa19afa..b33dfef86 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -64,9 +64,9 @@ let constructor_descrs ty_path decl manifest_decl cstrs = describe_constructors (idx_const+1) idx_nonconst rem) | _ -> (Cstr_block idx_nonconst, describe_constructors idx_const (idx_nonconst+1) rem) in - let existentials = + let arg_vars, existentials = match cd_res with - | None -> [] + | None -> decl.type_params, [] | Some type_ret -> let res_vars = free_vars type_ret in let tyl = @@ -78,6 +78,7 @@ let constructor_descrs ty_path decl manifest_decl cstrs = and thus they are not considered as free, which is what we want. *) let arg_vars = free_vars (newgenty (Ttuple tyl)) in + TypeSet.elements arg_vars, TypeSet.elements (TypeSet.diff arg_vars res_vars) in let cstr_args, cstr_inlined = @@ -119,19 +120,19 @@ let constructor_descrs ty_path decl manifest_decl cstrs = in let tdecl = { - type_params = decl.type_params @ existentials; + type_params = arg_vars; type_arity = decl.type_arity; type_kind = Type_record (lbls, Record_inlined idx_nonconst); type_private = Public; type_manifest; - type_variance = decl.type_variance @ List.map (fun _ -> Variance.full) existentials; + type_variance = List.map (fun _ -> Variance.full) arg_vars; type_newtype_level = None; type_loc = Location.none; type_attributes = []; } in tdecls := (id, path, tdecl) :: !tdecls; - [ newgenconstr path (decl.type_params @ existentials) ], + [ newgenconstr path arg_vars ], true in let cstr = From 65f986d784d676d9227ca84f8d48bb67a3770987 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Wed, 9 Apr 2014 16:14:37 +0000 Subject: [PATCH 09/35] Starting support for exceptions with record arguments. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14568 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- boot/ocamlc | Bin 1532519 -> 1534936 bytes boot/ocamldep | Bin 421280 -> 421280 bytes boot/ocamllex | Bin 184001 -> 184001 bytes typing/btype.ml | 5 +- typing/datarepr.ml | 122 ++++++++++++++++++++++-------------------- typing/datarepr.mli | 5 +- typing/env.ml | 28 ++++++---- typing/includecore.ml | 49 +++++++++-------- typing/mtype.ml | 9 +++- typing/predef.ml | 2 +- typing/printtyp.ml | 25 ++++----- typing/subst.ml | 27 +++++----- typing/typedecl.ml | 80 ++++++++++++++------------- typing/types.ml | 2 +- typing/types.mli | 2 +- 15 files changed, 199 insertions(+), 157 deletions(-) diff --git a/boot/ocamlc b/boot/ocamlc index 52613ca8f94110ccb7abf40489524c602bae2e04..0cc62a135980304b327e7eb7d33a4cd3955d15c6 100755 GIT binary patch delta 69956 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

2I;_jc@uWZ;48z`{D|BuIaYVz-opkEf2 z*w1jiu!3R!n`8uiMQz_}c_xzWP`|kncUcIxq=312M1$e>49&-q`p#($GwQ_eU}p-b z#9wbvee2i_>rec?D_zl+Z-%=RU_M@4t)EnzWL0*`H)?E8aJvfjC_n^(wH_*T8N3*? z`BKJAx$CbMhWTG@5|wm(fAeXZClO~Pi3toXtf5j-UPywg?&bWsVaz51>$tg3vSuyA z{5zRM!1?pFAo_>xRf8`lebc`UH7ivDAKWS{KYQYcC#@yvRrP_abrt+e31a+Kyl%@0 z$vh#tK2p`O?pY?EqxDbZrpX)GT?s%5iQFx5yxaX%4e2E4dyh&!UW64N&pT>y1zG@U0G=zBV2yBwP`mQ;*6VEGb$ zuLg5)@ie#PbB@$X?(FQ{{#|Ju1D~it7Tzv8RQ8l9!z*4bYc;hO$HJ@(Fxe^-hkG*6 Lb1WFvqRW2(Mf-v} diff --git a/boot/ocamldep b/boot/ocamldep index 155f00b144ec9d68dd060e66f68924be9038972f..a7d00ffcb5cc19ea00c40f66226861bfd17e90cb 100755 GIT binary patch delta 304 zcmV-00nh%R+ZmwS8GwWVgaU*Egam{Iv<8o95D@M-D}BgSfcFCaw93%b3A6THEFhgN&Y-w(EWpZv|Y)oN#c`z!bXuXUV&&}>QL=(!5 zt-6<*YXQ146(m!oV3DG(B41*gj2!grWxAG>+IZ3dUzYzD-S CNQig< delta 304 zcmV-00nh%R+ZmwS8GwWVgaU*Egam{Iv<8o95NTT2HmA{m*W&>LahW7r>6f2r1|vbN ze-0GrY#FdmmgB+J&V`+zpe96RaAj^}Fr43^1V++~nipN41oy$<;Gm!*Q+abRu0wfc z^2|%?EzJhu*l+^;mjh}BSP!injnZL zurUrmL3bpVZOZ~8C>O{FFvo8&+nIoV)CzYJcA%gnLvv+xFat{;#_D3|3#?eILdJcQ zWS6(g0wECfxuNGsr286o4-C;yWR)G4=*t3F5Tz0!_uQ?vgjG_v>Ds*`1(#6F0wF7# zAx2pY`@Rw+UA45v?`!d(peImaa&u{JXE1GtEu^i$?t+=J%{K<}-OHDp%mO43fwUHw zS%`1$@`5mKZq4*Nm(a`tFc2!HXuXUV&&}>QL=(!5t-6;G%>s)MBQYOa){L43@8sd> iQ146(m#fVJTM!as1*gj2!grWxAG>+IZ3dSX&H}5$?Sa<- delta 284 zcmV+%0ptF`oeRO83xI?Hv;y185IjiJlj?#)a8+@K8=UFO`er~ z;+MC}0wEBtLwRNL%uDMn%?9Dva02|7=*t3F5Vu#~9-cBpgYYyhg5OA_4wq2O0wF7Q zzOr*HfH(S>K@n8h53DDkpeImaa&u{JXD~tk3&i^|P=CwkYRXmG*~FKe%mO43QxxO# z=;V=xkdpG*db|Wim(a`tFc3m!HvIMU{RgViwwIzc+cTFC%>s)MklF1;b&2f9_^Yrb i43l?)m#fVJTMz List.iter (it.it_type_expr it) tl + | Cstr_record (_, lbls) -> + List.iter (fun d -> it.it_type_expr it d.ld_type) lbls and it_module_declaration it md = it.it_module_type it md.md_type and it_modtype_declaration it mtd = diff --git a/typing/datarepr.ml b/typing/datarepr.ml index b33dfef86..f9cafd904 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -41,6 +41,55 @@ let free_vars ty = let newgenconstr path tyl = newgenty (Tconstr (path, tyl, ref Mnil)) +let constructor_args ty_path type_manifest manifest_decl cd_id arg_vars rep = + function + | Cstr_tuple l -> l, false, [] + | Cstr_record (id, lbls) -> + let path = + match ty_path with + | Path.Pdot(m, _, _) -> Path.Pdot(m, Ident.name id, Path.nopos) + | Path.Pident _ -> Path.Pident id + | Path.Papply _ -> assert false + in + let type_manifest = + match type_manifest, manifest_decl with + | Some {desc = Tconstr(Path.Pdot (m, name, _), args, _)}, _ -> + let p = + Path.Pdot (m, name ^ "." ^ cd_id, Path.nopos) + in + Some (newgenconstr p arg_vars) + | Some {desc = Tconstr(Path.Pident _, args, _)}, + Some {type_kind = Type_variant cstrs} -> + let c = + try + List.find + (fun c -> Ident.name c.cd_id = cd_id) + cstrs + with Not_found -> assert false + in + begin match c.cd_args with + | Cstr_record (id, _) -> + Some (newgenconstr (Path.Pident id) arg_vars) + | _ -> assert false + end + | _ -> None + in + let tdecl = + { + type_params = arg_vars; + type_arity = List.length arg_vars; + type_kind = Type_record (lbls, rep); + type_private = Public; + type_manifest; + type_variance = List.map (fun _ -> Variance.full) arg_vars; + type_newtype_level = None; + type_loc = Location.none; + type_attributes = []; + } + in + [ newgenconstr path arg_vars ], + true, [ (id, path, tdecl) ] + let constructor_descrs ty_path decl manifest_decl cstrs = let ty_res = newgenconstr ty_path decl.type_params in let num_consts = ref 0 and num_nonconsts = ref 0 and num_normal = ref 0 in @@ -81,60 +130,14 @@ let constructor_descrs ty_path decl manifest_decl cstrs = TypeSet.elements arg_vars, TypeSet.elements (TypeSet.diff arg_vars res_vars) in - let cstr_args, cstr_inlined = - match cd_args with - | Cstr_tuple l -> l, false - | Cstr_record (id, lbls) -> - let name = Path.last ty_path ^ "." ^ Ident.name cd_id in - let path = - match ty_path with - | Path.Pdot(m, _, _) -> Path.Pdot(m, name, Path.nopos) - | Path.Pident _ -> Path.Pident id - | Path.Papply _ -> assert false - in - let type_manifest = - match decl.type_manifest with - | Some {desc = Tconstr(Path.Pdot (m, name, _), args, _)} -> - let p = - Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos) - in - Some (newgenconstr p (args @ existentials)) - | Some {desc = Tconstr(Path.Pident _, args, _)} -> - begin match manifest_decl with - | Some {type_kind = Type_variant cstrs} -> - let c = - try - List.find - (fun c -> Ident.name c.cd_id = Ident.name cd_id) - cstrs - with Not_found -> assert false - in - begin match c.cd_args with - | Cstr_record (id, _) -> - Some (newgenconstr (Path.Pident id) (args @ existentials)) - | _ -> assert false - end - | _ -> None - end - | _ -> None - in - let tdecl = - { - type_params = arg_vars; - type_arity = decl.type_arity; - type_kind = Type_record (lbls, Record_inlined idx_nonconst); - type_private = Public; - type_manifest; - type_variance = List.map (fun _ -> Variance.full) arg_vars; - type_newtype_level = None; - type_loc = Location.none; - type_attributes = []; - } - in - tdecls := (id, path, tdecl) :: !tdecls; - [ newgenconstr path arg_vars ], - true + let cstr_args, cstr_inlined, tds = + constructor_args ty_path decl.type_manifest manifest_decl + (Ident.name cd_id) + arg_vars + (Record_inlined idx_nonconst) + cd_args in + tdecls := tds @ !tdecls; let cstr = { cstr_name = Ident.name cd_id; cstr_res = ty_res; @@ -156,11 +159,16 @@ let constructor_descrs ty_path decl manifest_decl cstrs = r, !tdecls let exception_descr path_exc decl = + let cstr_args, cstr_inlined, tds = + constructor_args path_exc None None (Path.last path_exc) [] + (Record_exception path_exc) + decl.exn_args + in { cstr_name = Path.last path_exc; cstr_res = Predef.type_exn; cstr_existentials = []; - cstr_args = decl.exn_args; - cstr_arity = List.length decl.exn_args; + cstr_args; + cstr_arity = List.length cstr_args; cstr_tag = Cstr_exception (path_exc, decl.exn_loc); cstr_consts = -1; cstr_nonconsts = -1; @@ -169,8 +177,8 @@ let exception_descr path_exc decl = cstr_generalized = false; cstr_loc = decl.exn_loc; cstr_attributes = decl.exn_attributes; - cstr_inlined = false; - } + cstr_inlined; + }, tds let none = {desc = Ttuple []; level = -1; id = -1} (* Clearly ill-formed type *) diff --git a/typing/datarepr.mli b/typing/datarepr.mli index 8a0d76912..3ba5d3cea 100644 --- a/typing/datarepr.mli +++ b/typing/datarepr.mli @@ -23,7 +23,10 @@ val constructor_descrs: (Ident.t * Path.t * type_declaration) list val exception_descr: - Path.t -> exception_declaration -> constructor_description + Path.t -> exception_declaration -> + constructor_description * (Ident.t * Path.t * type_declaration) list + + val label_descrs: type_expr -> label_declaration list -> record_representation -> private_flag -> diff --git a/typing/env.ml b/typing/env.ml index 6993c9195..30c16fd2c 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -1222,7 +1222,11 @@ and components_of_module_maker (env, sub, path, mty) = env := store_type_infos None id path decl !env !env | Sig_exception(id, decl) -> let decl' = Subst.exception_declaration sub decl in - let cstr = Datarepr.exception_descr path decl' in + let cstr, tdecls = Datarepr.exception_descr path decl' in + List.iter + (fun (id, path, td) -> + aux (Sig_type(id, td, Trec_next)) path; + ) tdecls; let s = Ident.name id in c.comp_constrs <- add_to_tbl s (cstr, !pos) c.comp_constrs; @@ -1298,6 +1302,14 @@ and store_value ?check slot id path decl env renv = values = EnvTbl.add "value" slot id (path, decl) env.values renv.values; summary = Env_value(env.summary, id, decl) } +and store_extra_tdecls slot tdecls env renv = + (* Note: we should probably keep the original summary *) + List.fold_left (fun env (id, path, td) -> + store_type ~check:false slot id path td env renv + ) + env + tdecls + and store_type ~check slot id path info env renv = let loc = info.type_loc in if check then @@ -1327,13 +1339,7 @@ and store_type ~check slot id path info env renv = end constructors end; - let env = - List.fold_left (fun env (id, path, td) -> - store_type ~check:false slot id path td env renv - ) - env - tdecls - in + let env = store_extra_tdecls slot tdecls env renv in { env with constrs = List.fold_right @@ -1383,10 +1389,10 @@ and store_exception ~check slot id path decl env renv = ) end; end; + let constr, tdecls = Datarepr.exception_descr path decl in + let env = store_extra_tdecls slot tdecls env renv in { env with - constrs = EnvTbl.add "constructor" slot id - (Datarepr.exception_descr path decl) env.constrs - renv.constrs; + constrs = EnvTbl.add "constructor" slot id constr env.constrs renv.constrs; summary = Env_exception(env.summary, id, decl) } and store_module slot id path md env renv = diff --git a/typing/includecore.ml b/typing/includecore.ml index d84a90834..81b4dcbfb 100644 --- a/typing/includecore.ml +++ b/typing/includecore.ml @@ -160,7 +160,20 @@ let report_type_mismatch first second decl ppf = if err = Manifest then () else Format.fprintf ppf "@ %a." (report_type_mismatch0 first second decl) err) -let rec compare_variants env decl1 decl2 n cstrs1 cstrs2 = +let rec compare_constructor_arguments env cstr params1 params2 arg1 arg2 = + match arg1, arg2 with + | Types.Cstr_tuple arg1, Types.Cstr_tuple arg2 -> + if List.length arg1 <> List.length arg2 then [Field_arity cstr] + else if Misc.for_all2 + (fun ty1 ty2 -> Ctype.equal env true (ty1::params1) (ty2::params2)) + (arg1) (arg2) + then [] else [Field_type cstr] + | Types.Cstr_record (_, l1), Types.Cstr_record (_, l2) -> + (* TODO: compare with params1/param2 *) + compare_records env params1 params2 0 l1 l2 + | _ -> assert false (* TODO *) + +and compare_variants env params1 params2 n cstrs1 cstrs2 = match cstrs1, cstrs2 with [], [] -> [] | [], c::_ -> [Field_missing (true, c.Types.cd_id)] @@ -176,24 +189,14 @@ let rec compare_variants env decl1 decl2 n cstrs1 cstrs2 = [Field_type cstr1] | _ -> let r = - match arg1, arg2 with - | Cstr_tuple arg1, Cstr_tuple arg2 -> - if List.length arg1 <> List.length arg2 then [Field_arity cstr1] - else if Misc.for_all2 - (fun ty1 ty2 -> - Ctype.equal env true (ty1::decl1.type_params) - (ty2::decl2.type_params)) - (arg1) (arg2) - then [] else [Field_type cstr1] - | Cstr_record (_, l1), Cstr_record (_, l2) -> - compare_records env decl1 decl2 0 l1 l2 - | _ -> assert false (* TODO *) + compare_constructor_arguments env cstr1 + params1 params2 arg1 arg2 in if r <> [] then r - else compare_variants env decl1 decl2 (n+1) rem1 rem2 + else compare_variants env params1 params2 (n+1) rem1 rem2 -and compare_records env decl1 decl2 n labels1 labels2 = +and compare_records env params1 params2 n labels1 labels2 = match labels1, labels2 with [], [] -> [] | [], l::_ -> [Field_missing (true, l.ld_id)] @@ -203,9 +206,9 @@ and compare_records env decl1 decl2 n labels1 labels2 = if Ident.name lab1 <> Ident.name lab2 then [Field_names (n, lab1, lab2)] else if mut1 <> mut2 then [Field_mutable lab1] else - if Ctype.equal env true (arg1::decl1.type_params) - (arg2::decl2.type_params) - then compare_records env decl1 decl2 (n+1) rem1 rem2 + if Ctype.equal env true (arg1::params1) + (arg2::params2) + then compare_records env params1 params2 (n+1) rem1 rem2 else [Field_type lab1] let record_representations r1 r2 = @@ -235,9 +238,10 @@ let type_declarations ?(equality = false) env name decl1 id decl2 = in mark cstrs1 usage name decl1; if equality then mark cstrs2 Env.Positive (Ident.name id) decl2; - compare_variants env decl1 decl2 1 cstrs1 cstrs2 + compare_variants env decl1.type_params decl2.type_params 1 cstrs1 cstrs2 | (Type_record(labels1,rep1), Type_record(labels2,rep2)) -> - let err = compare_records env decl1 decl2 1 labels1 labels2 in + let err = compare_records env decl1.type_params decl2.type_params + 1 labels1 labels2 in if err <> [] || record_representations rep1 rep2 then err else [Record_representation (rep1, rep2)] | (_, _) -> [Kind] @@ -279,8 +283,11 @@ let type_declarations ?(equality = false) env name decl1 id decl2 = (* Inclusion between exception declarations *) let exception_declarations env ed1 ed2 = - Misc.for_all2 (fun ty1 ty2 -> Ctype.equal env false [ty1] [ty2]) + (* note: we use 'Ctype.equal true' now (allow renaming), but + since the type are closed, this doesn't matter *) + compare_constructor_arguments env (Ident.create "") [] [] ed1.exn_args ed2.exn_args + = [] (* Inclusion between class types *) let encode_val (mut, ty) rem = diff --git a/typing/mtype.ml b/typing/mtype.ml index a5e0d811d..6f2c67aab 100644 --- a/typing/mtype.ml +++ b/typing/mtype.ml @@ -131,7 +131,14 @@ let nondep_supertype env mid mty = | Sig_exception(id, d) -> let d = {d with - exn_args = List.map (Ctype.nondep_type env mid) d.exn_args + exn_args = match d.exn_args with + | Cstr_tuple l -> + Cstr_tuple (List.map (Ctype.nondep_type env mid) l) + | Cstr_record (id, l) -> + let field l = + {l with ld_type = Ctype.nondep_type env mid l.ld_type} + in + Cstr_record (id, List.map field l) } in Sig_exception(id, d) :: rem' diff --git a/typing/predef.ml b/typing/predef.ml index d69076c28..55fe4b880 100644 --- a/typing/predef.ml +++ b/typing/predef.ml @@ -166,7 +166,7 @@ let build_initial_env add_type add_exception empty_env = let add_exception id l = add_exception id - { exn_args = l; exn_loc = Location.none; exn_attributes = [] } + { exn_args = Cstr_tuple l; exn_loc = Location.none; exn_attributes = [] } in add_exception ident_match_failure [newgenty (Ttuple[type_string; type_int; type_int])] ( diff --git a/typing/printtyp.ml b/typing/printtyp.ml index ea951e342..ee39b36de 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -740,6 +740,10 @@ let string_of_mutable = function | Mutable -> "mutable " +let mark_loops_constructor_arguments = function + | Cstr_tuple l -> List.iter mark_loops l + | Cstr_record (_, l) -> List.iter (fun l -> mark_loops l.ld_type) l + let rec tree_of_type_decl id decl = reset(); @@ -782,11 +786,7 @@ let rec tree_of_type_decl id decl = | Type_abstract -> () | Type_variant cstrs -> List.iter - (fun cd -> - match cd.cd_args with - | Cstr_tuple l -> List.iter mark_loops l - | Cstr_record (_, l) -> List.iter (fun l -> mark_loops l.ld_type) l - ) + (fun cd -> mark_loops_constructor_arguments cd.cd_args) cstrs | Type_record(l, rep) -> List.iter (fun l -> mark_loops l.ld_type) l @@ -843,13 +843,13 @@ let rec tree_of_type_decl id decl = in (name, args, ty, priv, constraints) +and tree_of_constructor_arguments = function + | Cstr_tuple l -> tree_of_typlist false l + | Cstr_record (_, l) -> [ Otyp_record (List.map tree_of_label l) ] + and tree_of_constructor cd = let name = Ident.name cd.cd_id in - let arg () = - match cd.cd_args with - | Cstr_tuple l -> tree_of_typlist false l - | Cstr_record (_, l) -> [ Otyp_record (List.map tree_of_label l) ] - in + let arg () = tree_of_constructor_arguments cd.cd_args in match cd.cd_res with | None -> (name, arg (), None) | Some res -> @@ -878,8 +878,9 @@ let type_declaration id ppf decl = (* Print an exception declaration *) let tree_of_exception_declaration id decl = - reset_and_mark_loops_list decl.exn_args; - let tyl = tree_of_typlist false decl.exn_args in + reset (); + mark_loops_constructor_arguments decl.exn_args; + let tyl = tree_of_constructor_arguments decl.exn_args in Osig_exception (Ident.name id, tyl) let exception_declaration id ppf decl = diff --git a/typing/subst.ml b/typing/subst.ml index bbe56fe62..8cbc77776 100644 --- a/typing/subst.ml +++ b/typing/subst.ml @@ -193,6 +193,12 @@ let label_declaration s l = ld_attributes = attrs s l.ld_attributes; } +let constructor_arguments s = function + | Cstr_tuple l -> + Cstr_tuple (List.map (typexp s) l) + | Cstr_record (id, l) -> + Cstr_record (id, List.map (label_declaration s) l) + let type_declaration s decl = let decl = { type_params = List.map (typexp s) decl.type_params; @@ -204,16 +210,9 @@ let type_declaration s decl = Type_variant (List.map (fun c -> - let cd_args = - match c.cd_args with - | Cstr_tuple l -> - Cstr_tuple (List.map (typexp s) l) - | Cstr_record (id, l) -> - Cstr_record (id, List.map (label_declaration s) l) - in { cd_id = c.cd_id; - cd_args; + cd_args = constructor_arguments s c.cd_args; cd_res = may_map (typexp s) c.cd_res; cd_loc = loc s c.cd_loc; cd_attributes = attrs s c.cd_attributes; @@ -304,10 +303,14 @@ let value_description s descr = } let exception_declaration s descr = - { exn_args = List.map (type_expr s) descr.exn_args; - exn_loc = loc s descr.exn_loc; - exn_attributes = attrs s descr.exn_attributes; - } + let r = + { exn_args = constructor_arguments s descr.exn_args; + exn_loc = loc s descr.exn_loc; + exn_attributes = attrs s descr.exn_attributes; + } + in + cleanup_types (); + r let rec rename_bound_idents s idents = function [] -> (List.rev idents, s) diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 8cb014e63..e18371146 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -203,7 +203,18 @@ let transl_labels env closed lbls = lbls in lbls, lbls' -let transl_declaration ?exnid env sdecl id = +let transl_constructor_arguments env closed ty_name c_name = function + | Pcstr_tuple l -> + let l = List.map (transl_simple_type env closed) l in + Types.Cstr_tuple (List.map (fun t -> t.ctyp_type) l), + Cstr_tuple l + | Pcstr_record l -> + let lbls, lbls' = transl_labels env closed l in + let id = Ident.create (ty_name ^ "." ^ c_name) in + Types.Cstr_record (id, lbls'), + Cstr_record lbls + +let transl_declaration env sdecl id = (* Bind type parameters *) reset_type_variables(); Ctype.begin_def (); @@ -231,28 +242,22 @@ let transl_declaration ?exnid env sdecl id = raise(Error(sdecl.ptype_loc, Too_many_constructors)); let make_cstr {pcd_name = lid; pcd_args; pcd_res = ret_type; pcd_loc = loc; pcd_attributes = attrs} = let name = Ident.create lid.txt in - let args closed = - match pcd_args with - | Pcstr_tuple l -> - let l = List.map (transl_simple_type env closed) l in - Types.Cstr_tuple (List.map (fun t -> t.ctyp_type) l), - Cstr_tuple l - | Pcstr_record l -> - let lbls, lbls' = transl_labels env closed l in - let id = Ident.create (Ident.name id ^ "." ^ lid.txt) in - Types.Cstr_record (id, lbls'), - Cstr_record lbls - in match ret_type with | None -> - (name, lid, args true, - None, None, loc, attrs) + let args = + transl_constructor_arguments env true (Ident.name id) lid.txt + pcd_args + in + (name, lid, args, None, None, loc, attrs) | Some sty -> (* if it's a generalized constructor we must first narrow and then widen so as to not introduce any new constraints *) let z = narrow () in reset_type_variables (); - let args = args false in + let args = + transl_constructor_arguments env false (Ident.name id) lid.txt + pcd_args + in let cty = transl_simple_type env false sty in let ret_type = let ty = cty.ctyp_type in @@ -945,7 +950,7 @@ let name_recursion sdecl id decl = | _ -> decl (* Translate a set of mutually recursive type declarations *) -let transl_type_decl ?exnid env sdecl_list = +let transl_type_decl env sdecl_list = (* Add dummy types for fixed rows *) let fixed_types = List.filter is_fixed_type sdecl_list in let sdecl_list = @@ -995,7 +1000,7 @@ let transl_type_decl ?exnid env sdecl_list = id, Some slot in let transl_declaration name_sdecl (id, slot) = - current_slot := slot; transl_declaration ?exnid temp_env name_sdecl id in + current_slot := slot; transl_declaration temp_env name_sdecl id in let tdecls = List.map2 transl_declaration sdecl_list (List.map id_slots id_list) in let decls = @@ -1082,36 +1087,35 @@ let transl_exception env excdecl = raise (Error (loc, Exception_constructor_with_result)); reset_type_variables(); Ctype.begin_def(); - let args = - match excdecl.pcd_args with - | Pcstr_tuple l -> l - | Pcstr_record _ -> assert false + let exn_args, cd_args = + transl_constructor_arguments env true "exn" excdecl.pcd_name.txt + excdecl.pcd_args in - let ttypes = List.map (transl_closed_type env) args in Ctype.end_def(); - let types = List.map (fun cty -> cty.ctyp_type) ttypes in - List.iter Ctype.generalize types; - let exn_decl = - { - exn_args = types; - exn_attributes = excdecl.pcd_attributes; - Types.exn_loc = loc; - } - in - let newenv = Env.add_exception ~check:true id exn_decl env in let cd = { cd_id = id; cd_name = excdecl.pcd_name; - cd_args = Cstr_tuple ttypes; + cd_args; cd_loc = loc; cd_res = None; cd_attributes = excdecl.pcd_attributes; } in + begin match exn_args with + | Types.Cstr_tuple l -> List.iter Ctype.generalize l + | Types.Cstr_record (_,l) -> + List.iter (fun l -> Ctype.generalize l.Types.ld_type) l + end; + let exn_decl = + { + exn_args; + exn_attributes = excdecl.pcd_attributes; + Types.exn_loc = loc; + } + in + let newenv = Env.add_exception ~check:true id exn_decl env in cd, exn_decl, newenv -let transl_type_decl = transl_type_decl ?exnid:None - (* Translate an exception rebinding *) let transl_exn_rebind env loc name lid = let cdescr = @@ -1125,9 +1129,9 @@ let transl_exn_rebind env loc name lid = | Cstr_exception (path, _) -> path | _ -> raise(Error(loc, Not_an_exception lid)) in - let exn_args = cdescr.cstr_args in + (* TODO: re-export inlined record type! *) let d = { - Types.exn_args; + Types.exn_args = Cstr_tuple cdescr.cstr_args; exn_attributes = []; exn_loc = loc } diff --git a/typing/types.ml b/typing/types.ml index 0543141d8..57328026d 100644 --- a/typing/types.ml +++ b/typing/types.ml @@ -225,7 +225,7 @@ and type_transparence = | Type_private (* private type *) type exception_declaration = - { exn_args: type_expr list; + { exn_args: constructor_arguments; exn_loc: Location.t; exn_attributes: Parsetree.attributes; } diff --git a/typing/types.mli b/typing/types.mli index 1b772b356..d268ddafa 100644 --- a/typing/types.mli +++ b/typing/types.mli @@ -213,7 +213,7 @@ and type_transparence = | Type_private (* private type *) type exception_declaration = - { exn_args: type_expr list; + { exn_args: constructor_arguments; exn_loc: Location.t; exn_attributes: Parsetree.attributes; } From 3296c74189a27f27a14d5acfa4c195cffc406c00 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Wed, 9 Apr 2014 16:52:11 +0000 Subject: [PATCH 10/35] Continue support for record argument on exceptions. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14569 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- testsuite/tests/typing-recordarg/recordarg.ml | 9 +++-- .../typing-recordarg/recordarg.ml.reference | 9 ++++- typing/env.ml | 15 ++------- typing/includecore.ml | 5 +-- typing/includemod.ml | 33 ++++++++++++------- typing/subst.ml | 16 ++++++++- typing/subst.mli | 4 +++ 7 files changed, 61 insertions(+), 30 deletions(-) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml b/testsuite/tests/typing-recordarg/recordarg.ml index b43b1a887..079197953 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml +++ b/testsuite/tests/typing-recordarg/recordarg.ml @@ -19,7 +19,6 @@ module N : S with type t = M.t = M;; type 'a t = A: {x : 'a; y : 'b} -> 'a t;; let f r = A r;; -(* module M = struct type 'a t = | A of {x : 'a} @@ -29,7 +28,11 @@ module M = struct end;; module N : sig - exception Foo of {x : int} + type 'b t = 'b M.t = + | A of {x : 'b} + | B: {u : 'bla} -> unit t + +(* exception Foo of {x : int} *) (* Does not work yet *) end = struct type 'b t = 'b M.t = | A of {x : 'b} @@ -37,4 +40,4 @@ end = struct exception Foo = M.Foo end;; -*) + diff --git a/testsuite/tests/typing-recordarg/recordarg.ml.reference b/testsuite/tests/typing-recordarg/recordarg.ml.reference index 750b83402..437e26ed1 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml.reference +++ b/testsuite/tests/typing-recordarg/recordarg.ml.reference @@ -6,4 +6,11 @@ # module N : sig type t = M.t = A of { x : int; } val f : t -> t.A end # type 'a t = A : { x : 'a; y : 'b; } -> 'a t # val f : ('a, 'b) t.A -> 'a t = -# * * * * * * * * * * * * * * * * * * +# module M : + sig + type 'a t = A of { x : 'a; } | B : { u : 'b; } -> unit t + exception Foo of { x : int; } + end +# module N : + sig type 'b t = 'b M.t = A of { x : 'b; } | B : { u : 'bla; } -> unit t end +# diff --git a/typing/env.ml b/typing/env.ml index 30c16fd2c..87e7876b4 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -1080,23 +1080,14 @@ let rec prefix_idents root pos sub = function let (pl, final_sub) = prefix_idents root nextpos sub rem in (p::pl, final_sub) | Sig_type(id, decl, _) :: rem -> - let p = Pdot(root, Ident.name id, pos) in - (* the position is used for the type declaration corresponding - to a constructor declaration with a record argument - (the exception comes immediately after the synthesized type - declaration). *) - let sub = - List.fold_left - (fun sub id -> - Subst.add_type id (Pdot(root, Ident.name id, pos)) sub - ) - sub (Subst.sub_ids decl) - in + let p = Pdot(root, Ident.name id, nopos) in + let sub = Subst.add_prefixes root (Subst.sub_ids decl) sub in let (pl, final_sub) = prefix_idents root pos (Subst.add_type id p sub) rem in (p::pl, final_sub) | Sig_exception(id, decl) :: rem -> let p = Pdot(root, Ident.name id, pos) in + let sub = Subst.add_prefixes root (Subst.sub_ids_exn decl) sub in let (pl, final_sub) = prefix_idents root (pos+1) sub rem in (p::pl, final_sub) | Sig_module(id, mty, _) :: rem -> diff --git a/typing/includecore.ml b/typing/includecore.ml index 81b4dcbfb..13c4136dd 100644 --- a/typing/includecore.ml +++ b/typing/includecore.ml @@ -169,9 +169,10 @@ let rec compare_constructor_arguments env cstr params1 params2 arg1 arg2 = (arg1) (arg2) then [] else [Field_type cstr] | Types.Cstr_record (_, l1), Types.Cstr_record (_, l2) -> - (* TODO: compare with params1/param2 *) compare_records env params1 params2 0 l1 l2 - | _ -> assert false (* TODO *) + | _ -> + (* TODO: better report? *) + [Field_arity cstr] and compare_variants env params1 params2 n cstrs1 cstrs2 = match cstrs1, cstrs2 with diff --git a/typing/includemod.ml b/typing/includemod.ml index dd41b6951..1beb8488f 100644 --- a/typing/includemod.ml +++ b/typing/includemod.ml @@ -299,6 +299,18 @@ and signatures env cxt subst sig1 sig2 = Field_type (String.sub s 0 (String.length s - 4)), false | _ -> name2, true in + let equate_subtypes ids1 ids2 subst = + if List.length ids1 = List.length ids2 then + List.fold_left2 + (fun sub id1 id2 -> + if Ident.name id1 = Ident.name id2 then + Subst.add_type id2 (Pident id1) sub + else + sub + ) subst ids1 ids2 + else + subst + in begin try let (id1, item1, pos1) = Tbl.find name2 comps1 in let new_subst = @@ -309,23 +321,22 @@ and signatures env cxt subst sig1 sig2 = | Sig_type (id1', decl1, _) -> let ids1 = Subst.sub_ids decl1 in let ids2 = Subst.sub_ids decl2 in - if List.length ids1 = List.length ids2 then - List.fold_left2 - (fun sub id1 id2 -> - if Ident.name id1 = Ident.name id2 then - Subst.add_type id2 (Pident id1) sub - else - sub - ) subst ids1 ids2 - else - subst + equate_subtypes ids1 ids2 subst | _ -> assert false end | Sig_module _ -> Subst.add_module id2 (Pident id1) subst | Sig_modtype _ -> Subst.add_modtype id2 (Mty_ident (Pident id1)) subst - | Sig_value _ | Sig_exception _ | Sig_class _ | Sig_class_type _ -> + | Sig_exception (id2', decl2) -> + begin match item1 with + | Sig_exception (id1', decl1) -> + let ids1 = Subst.sub_ids_exn decl1 in + let ids2 = Subst.sub_ids_exn decl2 in + equate_subtypes ids1 ids2 subst + | _ -> assert false + end + | Sig_value _ | Sig_class _ | Sig_class_type _ -> subst in pair_components new_subst diff --git a/typing/subst.ml b/typing/subst.ml index 8cbc77776..ed476f0e3 100644 --- a/typing/subst.ml +++ b/typing/subst.ml @@ -411,7 +411,21 @@ let sub_ids decl = (fun l c -> match c.cd_args with | Cstr_record (id, _) -> id :: l - | _ -> l + | Cstr_tuple _ -> l ) [] cstrs | _ -> [] + + +let sub_ids_exn exn = + match exn.exn_args with + | Cstr_record (id, _) -> [id] + | Cstr_tuple _ -> [] + + +let add_prefixes root ids sub = + List.fold_left + (fun sub id -> + add_type id (Pdot(root, Ident.name id, nopos)) sub + ) + sub ids diff --git a/typing/subst.mli b/typing/subst.mli index 6f6bbd42d..4d6762374 100644 --- a/typing/subst.mli +++ b/typing/subst.mli @@ -58,3 +58,7 @@ val compose: t -> t -> t val sub_ids: type_declaration -> Ident.t list +val sub_ids_exn: exception_declaration -> Ident.t list + + +val add_prefixes: Path.t -> Ident.t list -> t -> t From 907c477c02450deb9b452b47599dc1d16806395c Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Wed, 9 Apr 2014 17:38:08 +0000 Subject: [PATCH 11/35] Produce type equation on exception rebinding with a record argument. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14570 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- testsuite/tests/typing-recordarg/recordarg.ml | 2 +- .../typing-recordarg/recordarg.ml.reference | 5 +- typing/datarepr.ml | 62 ++++++++++--------- typing/datarepr.mli | 1 + typing/env.ml | 6 +- typing/env.mli | 3 +- typing/typedecl.ml | 23 ++++++- typing/typedecl.mli | 4 +- typing/typemod.ml | 4 +- 9 files changed, 69 insertions(+), 41 deletions(-) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml b/testsuite/tests/typing-recordarg/recordarg.ml index 079197953..97b7561c8 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml +++ b/testsuite/tests/typing-recordarg/recordarg.ml @@ -32,7 +32,7 @@ module N : sig | A of {x : 'b} | B: {u : 'bla} -> unit t -(* exception Foo of {x : int} *) (* Does not work yet *) + exception Foo of {x : int} end = struct type 'b t = 'b M.t = | A of {x : 'b} diff --git a/testsuite/tests/typing-recordarg/recordarg.ml.reference b/testsuite/tests/typing-recordarg/recordarg.ml.reference index 437e26ed1..ad954903f 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml.reference +++ b/testsuite/tests/typing-recordarg/recordarg.ml.reference @@ -12,5 +12,8 @@ exception Foo of { x : int; } end # module N : - sig type 'b t = 'b M.t = A of { x : 'b; } | B : { u : 'bla; } -> unit t end + sig + type 'b t = 'b M.t = A of { x : 'b; } | B : { u : 'bla; } -> unit t + exception Foo of { x : int; } + end # diff --git a/typing/datarepr.ml b/typing/datarepr.ml index f9cafd904..5ef5e9ae6 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -41,7 +41,7 @@ let free_vars ty = let newgenconstr path tyl = newgenty (Tconstr (path, tyl, ref Mnil)) -let constructor_args ty_path type_manifest manifest_decl cd_id arg_vars rep = +let constructor_args ty_path type_manifest arg_vars rep = function | Cstr_tuple l -> l, false, [] | Cstr_record (id, lbls) -> @@ -51,36 +51,13 @@ let constructor_args ty_path type_manifest manifest_decl cd_id arg_vars rep = | Path.Pident _ -> Path.Pident id | Path.Papply _ -> assert false in - let type_manifest = - match type_manifest, manifest_decl with - | Some {desc = Tconstr(Path.Pdot (m, name, _), args, _)}, _ -> - let p = - Path.Pdot (m, name ^ "." ^ cd_id, Path.nopos) - in - Some (newgenconstr p arg_vars) - | Some {desc = Tconstr(Path.Pident _, args, _)}, - Some {type_kind = Type_variant cstrs} -> - let c = - try - List.find - (fun c -> Ident.name c.cd_id = cd_id) - cstrs - with Not_found -> assert false - in - begin match c.cd_args with - | Cstr_record (id, _) -> - Some (newgenconstr (Path.Pident id) arg_vars) - | _ -> assert false - end - | _ -> None - in let tdecl = { type_params = arg_vars; type_arity = List.length arg_vars; type_kind = Type_record (lbls, rep); type_private = Public; - type_manifest; + type_manifest = type_manifest (); type_variance = List.map (fun _ -> Variance.full) arg_vars; type_newtype_level = None; type_loc = Location.none; @@ -130,9 +107,31 @@ let constructor_descrs ty_path decl manifest_decl cstrs = TypeSet.elements arg_vars, TypeSet.elements (TypeSet.diff arg_vars res_vars) in + let type_manifest () = + match decl.type_manifest, manifest_decl with + | Some {desc = Tconstr(Path.Pdot (m, name, _), _, _)}, _ -> + let p = + Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos) + in + Some (newgenconstr p arg_vars) + | Some {desc = Tconstr(Path.Pident _, _, _)}, + Some {type_kind = Type_variant cstrs} -> + let c = + try + List.find + (fun c -> Ident.name c.cd_id = Ident.name cd_id) + cstrs + with Not_found -> assert false + in + begin match c.cd_args with + | Cstr_record (id, _) -> + Some (newgenconstr (Path.Pident id) arg_vars) + | _ -> assert false + end + | _ -> None + in let cstr_args, cstr_inlined, tds = - constructor_args ty_path decl.type_manifest manifest_decl - (Ident.name cd_id) + constructor_args ty_path type_manifest arg_vars (Record_inlined idx_nonconst) cd_args @@ -158,9 +157,14 @@ let constructor_descrs ty_path decl manifest_decl cstrs = let r = describe_constructors 0 0 cstrs in r, !tdecls -let exception_descr path_exc decl = +let exception_descr ?rebind path_exc decl = + let type_manifest () = + match rebind with + | None -> None + | Some p -> Some (newgenconstr p []) + in let cstr_args, cstr_inlined, tds = - constructor_args path_exc None None (Path.last path_exc) [] + constructor_args path_exc type_manifest [] (Record_exception path_exc) decl.exn_args in diff --git a/typing/datarepr.mli b/typing/datarepr.mli index 3ba5d3cea..fd5f07e0b 100644 --- a/typing/datarepr.mli +++ b/typing/datarepr.mli @@ -23,6 +23,7 @@ val constructor_descrs: (Ident.t * Path.t * type_declaration) list val exception_descr: + ?rebind:Path.t -> Path.t -> exception_declaration -> constructor_description * (Ident.t * Path.t * type_declaration) list diff --git a/typing/env.ml b/typing/env.ml index 87e7876b4..41b2e4f9f 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -1359,7 +1359,7 @@ and store_type_infos slot id path info env renv = renv.types; summary = Env_type(env.summary, id, info) } -and store_exception ~check slot id path decl env renv = +and store_exception ?rebind ~check slot id path decl env renv = let loc = decl.exn_loc in if check && not loc.Location.loc_ghost && Warnings.is_active (Warnings.Unused_exception ("", false)) @@ -1380,7 +1380,7 @@ and store_exception ~check slot id path decl env renv = ) end; end; - let constr, tdecls = Datarepr.exception_descr path decl in + let constr, tdecls = Datarepr.exception_descr ?rebind path decl in let env = store_extra_tdecls slot tdecls env renv in { env with constrs = EnvTbl.add "constructor" slot id constr env.constrs renv.constrs; @@ -1488,7 +1488,7 @@ let enter store_fun name data env = let enter_value ?check = enter (store_value ?check) and enter_type = enter (store_type ~check:true) -and enter_exception = enter (store_exception ~check:true) +and enter_exception ?rebind = enter (store_exception ?rebind ~check:true) and enter_module_declaration ?arg name md env = let id = Ident.create name in (id, add_module_declaration ?arg id md env) diff --git a/typing/env.mli b/typing/env.mli index 888869ebf..8b72f6e5f 100644 --- a/typing/env.mli +++ b/typing/env.mli @@ -128,7 +128,8 @@ val enter_value: ?check:(string -> Warnings.t) -> string -> value_description -> t -> Ident.t * t val enter_type: string -> type_declaration -> t -> Ident.t * t -val enter_exception: string -> exception_declaration -> t -> Ident.t * t +val enter_exception: + ?rebind:Path.t -> string -> exception_declaration -> t -> Ident.t * t val enter_module: ?arg:bool -> string -> module_type -> t -> Ident.t * t val enter_module_declaration: ?arg:bool -> string -> module_declaration -> t -> Ident.t * t diff --git a/typing/typedecl.ml b/typing/typedecl.ml index e18371146..29fce4309 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -1129,14 +1129,31 @@ let transl_exn_rebind env loc name lid = | Cstr_exception (path, _) -> path | _ -> raise(Error(loc, Not_an_exception lid)) in - (* TODO: re-export inlined record type! *) + let exn_args, manifest_path = + if cdescr.cstr_inlined then + let p = + match cdescr.cstr_args with + | [ {desc=Tconstr(p, [], _)} ] -> p + | _ -> assert false + in + let decl = + try Env.find_type p env with Not_found -> assert false + in + let lbls = + match decl.type_kind with Type_record (l, _) -> l | _ -> assert false + in + let id = Ident.create ("exn." ^ name) in + Types.Cstr_record (id, lbls), Some p + else + Types.Cstr_tuple cdescr.cstr_args, None + in let d = { - Types.exn_args = Cstr_tuple cdescr.cstr_args; + Types.exn_args; exn_attributes = []; exn_loc = loc } in - (path, d) + (path, d, manifest_path) (* Translate a value declaration *) let transl_value_decl env loc valdecl = diff --git a/typing/typedecl.mli b/typing/typedecl.mli index d8ac14c92..7237f3d24 100644 --- a/typing/typedecl.mli +++ b/typing/typedecl.mli @@ -25,7 +25,9 @@ val transl_exception: Typedtree.constructor_declaration * exception_declaration * Env.t val transl_exn_rebind: - Env.t -> Location.t -> string -> Longident.t -> Path.t * exception_declaration + Env.t -> Location.t -> string -> Longident.t -> + Path.t * + exception_declaration * Path.t option val transl_value_decl: Env.t -> Location.t -> diff --git a/typing/typemod.ml b/typing/typemod.ml index e5aaa238c..3d162fb2a 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -1162,10 +1162,10 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = [Sig_exception(arg.cd_id, decl)], newenv | Pstr_exn_rebind(name, longid, attrs) -> - let (path, arg) = + let (path, arg, rebind) = Typedecl.transl_exn_rebind env loc name.txt longid.txt in - let (id, newenv) = Env.enter_exception name.txt arg env in + let (id, newenv) = Env.enter_exception ?rebind name.txt arg env in Tstr_exn_rebind(id, name, path, longid, attrs), [Sig_exception(id, arg)], newenv From 3a89e6804a5fd1310b47f740c1e4635e597805f2 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Fri, 18 Apr 2014 12:55:10 +0000 Subject: [PATCH 12/35] Do not register labels of inlined records into the environment; they can only be used through type-based selection. Silence out-of-scope and disambiguated warnings when they are selected. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14638 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/env.ml | 32 +++++++++++++++++++++---------- typing/env.mli | 4 +++- typing/parmatch.ml | 2 +- typing/typecore.ml | 47 ++++++++++++++++++++++------------------------ 4 files changed, 48 insertions(+), 37 deletions(-) diff --git a/typing/env.ml b/typing/env.ml index f5c3abc22..7d5959b6d 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -162,7 +162,7 @@ module EnvTbl = end type type_descriptions = - constructor_description list * label_description list + constructor_description list * label_description list * bool type t = { values: (Path.t * value_description) EnvTbl.t; @@ -1194,7 +1194,7 @@ and components_of_module_maker (env, sub, path, mty) = let labels = List.map snd (labels_of_type path decl') in c.comp_types <- Tbl.add (Ident.name id) - ((decl', (constructors, labels)), nopos) + ((decl', (constructors, labels, false)), nopos) c.comp_types; List.iter (fun (id, path, td) -> @@ -1294,12 +1294,24 @@ and store_value ?check slot id path decl env renv = summary = Env_value(env.summary, id, decl) } and store_extra_tdecls slot tdecls env renv = - (* Note: we should probably keep the original summary *) - List.fold_left (fun env (id, path, td) -> - store_type ~check:false slot id path td env renv - ) - env - tdecls + List.fold_left + (fun env (id, path, td) -> store_extra_tdecl slot id path td env renv) + env tdecls + +and store_extra_tdecl slot id path info env renv = + (* Simplified version of store_type, used to insert + synthesized inlined record types. We don't update the summary + (since inserting again the main sum type will result in the synthesized + record to be inserted) and we don't add labels to + the environment (this could only be used through type-based + selection). *) + + let labels = labels_of_type path info in + let descrs = ([], List.map snd labels, true) in + { env with + types = EnvTbl.add "type" slot id (path, (info, descrs)) env.types + renv.types + } and store_type ~check slot id path info env renv = let loc = info.type_loc in @@ -1308,7 +1320,7 @@ and store_type ~check slot id path info env renv = type_declarations; let constructors, tdecls = constructors_of_type env path info in let labels = labels_of_type path info in - let descrs = (List.map snd constructors, List.map snd labels) in + let descrs = (List.map snd constructors, List.map snd labels, false) in if check && not loc.Location.loc_ghost && Warnings.is_active (Warnings.Unused_constructor ("", false, false)) @@ -1355,7 +1367,7 @@ and store_type_infos slot id path info env renv = keep track of type abbreviations (e.g. type t = float) in the computation of label representations. *) { env with - types = EnvTbl.add "type" slot id (path, (info,([],[]))) env.types + types = EnvTbl.add "type" slot id (path, (info,([],[],false))) env.types renv.types; summary = Env_type(env.summary, id, info) } diff --git a/typing/env.mli b/typing/env.mli index 8b72f6e5f..0197a193c 100644 --- a/typing/env.mli +++ b/typing/env.mli @@ -33,7 +33,9 @@ val initial: t val diff: t -> t -> Ident.t list type type_descriptions = - constructor_description list * label_description list + constructor_description list * label_description list * bool + (* true -> inlined record *) + (* For short-paths *) val iter_types: diff --git a/typing/parmatch.ml b/typing/parmatch.ml index b425144a1..64977130f 100644 --- a/typing/parmatch.ml +++ b/typing/parmatch.ml @@ -796,7 +796,7 @@ let complete_constrs p all_tags = | Tpat_construct (_,c,_) -> begin try let not_tags = complete_tags c.cstr_consts c.cstr_nonconsts all_tags in - let (constrs, _) = + let (constrs, _, _) = Env.find_type_descrs (adt_path p.pat_env p.pat_type) p.pat_env in map_filter (fun cnstr -> diff --git a/typing/typecore.ml b/typing/typecore.ml index 9263bbfe7..f66efe60f 100644 --- a/typing/typecore.ml +++ b/typing/typecore.ml @@ -599,12 +599,13 @@ end) = struct then get_name d else "") env lid let lookup_from_type env tpath lid = - let descrs = get_descrs (Env.find_type_descrs tpath env) in + let (_, _, inlined) as descrs = Env.find_type_descrs tpath env in + let descrs = get_descrs descrs in Env.mark_type_used (Path.last tpath) (Env.find_type tpath env); match lid.txt with Longident.Lident s -> begin try - List.find (fun nd -> get_name nd = s) descrs + List.find (fun nd -> get_name nd = s) descrs, inlined with Not_found -> raise (Error (lid.loc, env, Wrong_name ("", newvar (), type_kind, tpath, lid.txt))) @@ -636,7 +637,7 @@ end) = struct let disambiguate ?(warn=Location.prerr_warning) ?(check_lk=fun _ _ -> ()) ?scope lid env opath lbls = let scope = match scope with None -> lbls | Some l -> l in - let lbl = match opath with + let lbl, inlined = match opath with None -> begin match lbls with [] -> unbound_name_error env lid @@ -647,7 +648,7 @@ end) = struct warn lid.loc (Warnings.Ambiguous_name ([Longident.last lid.txt], paths, false)); - lbl + lbl, false end | Some(tpath0, tpath, pr) -> let warn_pr () = @@ -673,15 +674,17 @@ end) = struct (Warnings.Ambiguous_name ([Longident.last lid.txt], paths, false)) end; - lbl + lbl, false with Not_found -> try - let lbl = lookup_from_type env tpath lid in + let lbl, inlined = lookup_from_type env tpath lid in check_lk tpath lbl; - let s = Printtyp.string_of_path tpath in - warn lid.loc - (Warnings.Name_out_of_scope (s, [Longident.last lid.txt], false)); + if not inlined then begin + let s = Printtyp.string_of_path tpath in + warn lid.loc + (Warnings.Name_out_of_scope (s, [Longident.last lid.txt], false)); + end; if not pr then warn_pr (); - lbl + lbl, inlined with Not_found -> if lbls = [] then unbound_name_error env lid else let tp = (tpath0, expand_path env tpath) in @@ -696,12 +699,13 @@ end) = struct raise (Error (lid.loc, env, Name_type_mismatch (type_kind, lid.txt, tp, tpl))) in - begin match scope with - (lab1,_)::_ when lab1 == lbl -> () - | _ -> - Location.prerr_warning lid.loc - (Warnings.Disambiguated_name(get_name lbl)) - end; + if not inlined then + begin match scope with + (lab1,_)::_ when lab1 == lbl -> () + | _ -> + Location.prerr_warning lid.loc + (Warnings.Disambiguated_name(get_name lbl)) + end; lbl end @@ -714,7 +718,7 @@ module Label = NameChoice (struct let type_kind = "record" let get_name lbl = lbl.lbl_name let get_type lbl = lbl.lbl_res - let get_descrs = snd + let get_descrs (_, x, _) = x let fold = Env.fold_labels let unbound_name_error = Typetexp.unbound_label_error end) @@ -861,19 +865,12 @@ let check_recordpat_labels loc lbl_pat_list closed = (* Constructors *) -let lookup_constructor_from_type env tpath lid = - let (constructors, _) = Env.find_type_descrs tpath env in - match lid with - Longident.Lident s -> - List.find (fun cstr -> cstr.cstr_name = s) constructors - | _ -> raise Not_found - module Constructor = NameChoice (struct type t = constructor_description let type_kind = "variant" let get_name cstr = cstr.cstr_name let get_type cstr = cstr.cstr_res - let get_descrs = fst + let get_descrs (x, _, _) = x let fold = Env.fold_constructors let unbound_name_error = Typetexp.unbound_constructor_error end) From a527dcf467b28c27076cbc84513bcb7004f9ddbc Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Fri, 18 Apr 2014 13:10:43 +0000 Subject: [PATCH 13/35] Cleanup. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14639 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/datarepr.ml | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 5ef5e9ae6..879bb6a57 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -51,13 +51,18 @@ let constructor_args ty_path type_manifest arg_vars rep = | Path.Pident _ -> Path.Pident id | Path.Papply _ -> assert false in + let type_manifest = + match type_manifest () with + | Some p -> Some (newgenconstr p arg_vars) + | None -> None + in let tdecl = { type_params = arg_vars; type_arity = List.length arg_vars; type_kind = Type_record (lbls, rep); type_private = Public; - type_manifest = type_manifest (); + type_manifest; type_variance = List.map (fun _ -> Variance.full) arg_vars; type_newtype_level = None; type_loc = Location.none; @@ -110,10 +115,7 @@ let constructor_descrs ty_path decl manifest_decl cstrs = let type_manifest () = match decl.type_manifest, manifest_decl with | Some {desc = Tconstr(Path.Pdot (m, name, _), _, _)}, _ -> - let p = - Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos) - in - Some (newgenconstr p arg_vars) + Some (Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos)) | Some {desc = Tconstr(Path.Pident _, _, _)}, Some {type_kind = Type_variant cstrs} -> let c = @@ -124,8 +126,7 @@ let constructor_descrs ty_path decl manifest_decl cstrs = with Not_found -> assert false in begin match c.cd_args with - | Cstr_record (id, _) -> - Some (newgenconstr (Path.Pident id) arg_vars) + | Cstr_record (id, _) -> Some (Path.Pident id) | _ -> assert false end | _ -> None @@ -158,11 +159,7 @@ let constructor_descrs ty_path decl manifest_decl cstrs = r, !tdecls let exception_descr ?rebind path_exc decl = - let type_manifest () = - match rebind with - | None -> None - | Some p -> Some (newgenconstr p []) - in + let type_manifest () = rebind in let cstr_args, cstr_inlined, tds = constructor_args path_exc type_manifest [] (Record_exception path_exc) From c92bbee07d4e70d305fee631d5bffa6852c52fe3 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Fri, 18 Apr 2014 13:20:47 +0000 Subject: [PATCH 14/35] The type parameters of inlined record types are free variables that appear in the record definition (in order of syntactic appearance), both for GAT and non-GADT constructors. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14640 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/datarepr.ml | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 879bb6a57..efc1fb20a 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -17,16 +17,22 @@ open Asttypes open Types open Btype -(* Simplified version of Ctype.free_vars *) +(* Simplified version of Ctype.free_vars. Also compute + an ordered sequence of type variables (in the order in which + they appear, syntactically). *) let free_vars ty = let ret = ref TypeSet.empty in + let l = ref [] in let rec loop ty = let ty = repr ty in if ty.level >= lowest_level then begin ty.level <- pivot_level - ty.level; match ty.desc with | Tvar _ -> - ret := TypeSet.add ty !ret + if not (TypeSet.mem ty !ret) then begin + ret := TypeSet.add ty !ret; + l := ty :: !l + end; | Tvariant row -> let row = row_repr row in iter_row loop row; @@ -37,7 +43,7 @@ let free_vars ty = in loop ty; unmark_type ty; - !ret + !ret, List.rev !l let newgenconstr path tyl = newgenty (Tconstr (path, tyl, ref Mnil)) @@ -95,22 +101,22 @@ let constructor_descrs ty_path decl manifest_decl cstrs = describe_constructors (idx_const+1) idx_nonconst rem) | _ -> (Cstr_block idx_nonconst, describe_constructors idx_const (idx_nonconst+1) rem) in - let arg_vars, existentials = + let tyl = + match cd_args with + | Cstr_tuple l -> l + | Cstr_record (_, l) -> List.map (fun l -> l.ld_type) l + in + (* Note: variables bound by Tpoly are Tvar, not Tunivar, + and thus they are not considered as free, which is + what we want. *) + let arg_vars_set, arg_vars = free_vars (newgenty (Ttuple tyl)) in + let existentials = match cd_res with - | None -> decl.type_params, [] + | None -> + [] | Some type_ret -> - let res_vars = free_vars type_ret in - let tyl = - match cd_args with - | Cstr_tuple l -> l - | Cstr_record (_, l) -> List.map (fun l -> l.ld_type) l - in - (* Note: variables bound by Tpoly are Tvar, not Tunivar, - and thus they are not considered as free, which is - what we want. *) - let arg_vars = free_vars (newgenty (Ttuple tyl)) in - TypeSet.elements arg_vars, - TypeSet.elements (TypeSet.diff arg_vars res_vars) + let res_vars, _ = free_vars type_ret in + TypeSet.elements (TypeSet.diff arg_vars_set res_vars) in let type_manifest () = match decl.type_manifest, manifest_decl with From 942046117f5be317a98873c56d159e71bae1d507 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 22 Apr 2014 12:35:02 +0000 Subject: [PATCH 15/35] Consider that exceptions with a record argument create an implicit type. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14655 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- testsuite/tests/typing-recordarg/recordarg.ml | 6 ++++++ testsuite/tests/typing-recordarg/recordarg.ml.reference | 8 +++++++- typing/mtype.ml | 3 ++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml b/testsuite/tests/typing-recordarg/recordarg.ml index 97b7561c8..ad0def0a8 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml +++ b/testsuite/tests/typing-recordarg/recordarg.ml @@ -41,3 +41,9 @@ end = struct exception Foo = M.Foo end;; + +module type S = sig exception A of {x:int} end;; + +module F (X : sig val x : (module S) end) = struct + module A = (val X.x) +end;; diff --git a/testsuite/tests/typing-recordarg/recordarg.ml.reference b/testsuite/tests/typing-recordarg/recordarg.ml.reference index ad954903f..bc0ae9140 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml.reference +++ b/testsuite/tests/typing-recordarg/recordarg.ml.reference @@ -16,4 +16,10 @@ type 'b t = 'b M.t = A of { x : 'b; } | B : { u : 'bla; } -> unit t exception Foo of { x : int; } end -# +# module type S = sig exception A of { x : int; } end +# Characters 65-74: + module A = (val X.x) + ^^^^^^^^^ +Error: This expression creates fresh types. + It is not allowed inside applicative functors. +# diff --git a/typing/mtype.ml b/typing/mtype.ml index 17904500d..87136eca9 100644 --- a/typing/mtype.ml +++ b/typing/mtype.ml @@ -266,7 +266,8 @@ and contains_type_sig env = List.iter (contains_type_item env) and contains_type_item env = function Sig_type (_,({type_manifest = None} | {type_kind = Type_abstract; type_private = Private}),_) - | Sig_modtype _ -> + | Sig_modtype _ + | Sig_exception (_, {exn_args = Cstr_record _}) -> raise Exit | Sig_module (_, {md_type = mty}, _) -> contains_type env mty From 307caebc7ae1e3ee60efce2190f9919b17e199ae Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 22 Apr 2014 14:14:38 +0000 Subject: [PATCH 16/35] Proper renaming of the ident in Cstr_record during signature substitution. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14656 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/subst.ml | 75 +++++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/typing/subst.ml b/typing/subst.ml index ed476f0e3..eb4e7b3c0 100644 --- a/typing/subst.ml +++ b/typing/subst.ml @@ -21,10 +21,12 @@ type t = { types: (Ident.t, Path.t) Tbl.t; modules: (Ident.t, Path.t) Tbl.t; modtypes: (Ident.t, module_type) Tbl.t; + typids: (Ident.t, Ident.t) Tbl.t; (* only for Cstr_record ids *) for_saving: bool } let identity = { types = Tbl.empty; modules = Tbl.empty; modtypes = Tbl.empty; + typids = Tbl.empty; for_saving = false } let add_type id p s = { s with types = Tbl.add id p s.types } @@ -35,6 +37,38 @@ let add_modtype id ty s = { s with modtypes = Tbl.add id ty s.modtypes } let for_saving s = { s with for_saving = true } + + +let sub_ids_args = function + | Cstr_record (id, _) -> [id] + | Cstr_tuple _ -> [] + +let sub_ids decl = + match decl.type_kind with + | Type_variant cstrs -> + List.fold_left (fun l c -> sub_ids_args c.cd_args @ l) [] cstrs + | _ -> [] + + +let sub_ids_exn exn = sub_ids_args exn.exn_args + +let add_prefixes root ids sub = + List.fold_left + (fun sub id -> add_type id (Pdot(root, Ident.name id, nopos)) sub) + sub ids + +let rename_types ids sub = + List.fold_left + (fun s id -> + assert(not (Tbl.mem id s.types)); + let id' = Ident.rename id in + {s with typids = Tbl.add id id' s.typids; + types = Tbl.add id (Pident id') s.types + } + ) + sub ids + + let loc s x = if s.for_saving && not !Clflags.keep_locs then Location.none else x @@ -197,6 +231,7 @@ let constructor_arguments s = function | Cstr_tuple l -> Cstr_tuple (List.map (typexp s) l) | Cstr_record (id, l) -> + let id = try Tbl.find id s.typids with Not_found -> id in Cstr_record (id, List.map (label_declaration s) l) let type_declaration s decl = @@ -315,6 +350,7 @@ let exception_declaration s descr = let rec rename_bound_idents s idents = function [] -> (List.rev idents, s) | Sig_type(id, d, _) :: sg -> + let s = rename_types (sub_ids d) s in let id' = Ident.rename id in rename_bound_idents (add_type id (Pident id') s) (id' :: idents) sg | Sig_module(id, mty, _) :: sg -> @@ -324,8 +360,11 @@ let rec rename_bound_idents s idents = function let id' = Ident.rename id in rename_bound_idents (add_modtype id (Mty_ident(Pident id')) s) (id' :: idents) sg - | (Sig_value(id, _) | Sig_exception(id, _) | - Sig_class(id, _, _) | Sig_class_type(id, _, _)) :: sg -> + | Sig_exception(id, d) :: sg -> + let s = rename_types (sub_ids_exn d) s in + let id' = Ident.rename id in + rename_bound_idents s (id' :: idents) sg + | (Sig_value(id, _) | Sig_class(id, _, _) | Sig_class_type(id, _, _)) :: sg -> let id' = Ident.rename id in rename_bound_idents s (id' :: idents) sg @@ -353,7 +392,9 @@ and signature s sg = (* Components of signature may be mutually recursive (e.g. type declarations or class and type declarations), so first build global renaming substitution... *) - let (new_idents, s') = rename_bound_idents s [] sg in + let (new_idents, s') = + rename_bound_idents {s with typids = Tbl.empty} [] sg + in (* ... then apply it to each signature component in turn *) List.map2 (signature_component s') sg new_idents @@ -401,31 +442,5 @@ let compose s1 s2 = { types = merge_tbls (type_path s2) s1.types s2.types; modules = merge_tbls (module_path s2) s1.modules s2.modules; modtypes = merge_tbls (modtype s2) s1.modtypes s2.modtypes; + typids = Tbl.empty; for_saving = false } - - -let sub_ids decl = - match decl.type_kind with - | Type_variant cstrs -> - List.fold_left - (fun l c -> - match c.cd_args with - | Cstr_record (id, _) -> id :: l - | Cstr_tuple _ -> l - ) - [] cstrs - | _ -> [] - - -let sub_ids_exn exn = - match exn.exn_args with - | Cstr_record (id, _) -> [id] - | Cstr_tuple _ -> [] - - -let add_prefixes root ids sub = - List.fold_left - (fun sub id -> - add_type id (Pdot(root, Ident.name id, nopos)) sub - ) - sub ids From 9e23ded0d195e861ad9ed7d0801ed1c3a0ed34e3 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 22 Apr 2014 16:09:31 +0000 Subject: [PATCH 17/35] Check unicity of types introduced through exceptions. Do not discard exceptions from signatures if they introduce a type. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@14662 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- testsuite/tests/typing-recordarg/recordarg.ml | 36 +++++++++++++++++++ typing/typemod.ml | 22 +++++++++--- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml b/testsuite/tests/typing-recordarg/recordarg.ml index ad0def0a8..a9f607b98 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml +++ b/testsuite/tests/typing-recordarg/recordarg.ml @@ -47,3 +47,39 @@ module type S = sig exception A of {x:int} end;; module F (X : sig val x : (module S) end) = struct module A = (val X.x) end;; + + +module type S = sig + exception A of {x : int} + exception A of {x : string} +end;; + +module M = struct + exception A of {x : int} + exception A of {x : string} +end;; + + +module M1 = struct + exception A of {x : int} +end;; + +module M = struct + include M1 + include M1 +end;; + + +module type S1 = sig + exception A of {x : int} +end;; + +module type S = sig + include S1 + include S1 +end;; + +module M = struct + exception A = M1.A + exception A +end;; diff --git a/typing/typemod.ml b/typing/typemod.ml index ffff4a927..418af07f6 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -434,6 +434,11 @@ let check cl loc set_ref name = let check_name cl set_ref name = check cl name.loc set_ref name.txt +let check_exn_decl loc type_names decl = + List.iter + (fun id -> check "type" loc type_names (Ident.name id)) + (Subst.sub_ids_exn decl) + let check_sig_item type_names module_names modtype_names loc = function Sig_type(id, _, _) -> check "type" loc type_names (Ident.name id) @@ -441,6 +446,8 @@ let check_sig_item type_names module_names modtype_names loc = function check "module" loc module_names (Ident.name id) | Sig_modtype(id, _) -> check "module type" loc modtype_names (Ident.name id) + | Sig_exception(_, decl) -> + check_exn_decl loc type_names decl | _ -> () let rec remove_duplicates val_ids exn_ids = function @@ -448,8 +455,8 @@ let rec remove_duplicates val_ids exn_ids = function | Sig_value (id, _) :: rem when List.exists (Ident.equal id) val_ids -> remove_duplicates val_ids exn_ids rem - | Sig_exception(id, _) :: rem - when List.exists (Ident.equal id) exn_ids -> + | Sig_exception(id, decl) :: rem + when List.exists (Ident.equal id) exn_ids && Subst.sub_ids_exn decl = [] -> remove_duplicates val_ids exn_ids rem | f :: rem -> f :: remove_duplicates val_ids exn_ids rem @@ -460,7 +467,7 @@ let rec get_values = function let rec get_exceptions = function [] -> [] - | Sig_exception (id, _) :: rem -> id :: get_exceptions rem + | Sig_exception (id, decl) :: rem -> id :: get_exceptions rem | f :: rem -> get_exceptions rem @@ -573,11 +580,13 @@ and transl_signature env sg = final_env | Psig_exception sarg -> let (arg, decl, newenv) = Typedecl.transl_exception env sarg in + check_exn_decl sarg.pcd_name.loc type_names decl; let (trem, rem, final_env) = transl_sig newenv srem in let id = arg.cd_id in let trem = mksig (Tsig_exception arg) env loc :: trem in trem, - (if List.exists (Ident.equal id) (get_exceptions rem) then rem + (if List.exists (Ident.equal id) (get_exceptions rem) + && Subst.sub_ids_exn decl = [] then rem else Sig_exception(id, decl) :: rem), final_env | Psig_module pmd -> @@ -1183,11 +1192,13 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = enrich_type_decls anchor decls env newenv | Pstr_exception sarg -> let (arg, decl, newenv) = Typedecl.transl_exception env sarg in + check_exn_decl sarg.pcd_name.loc type_names decl; Tstr_exception arg, [Sig_exception(arg.cd_id, decl)], newenv | Pstr_exn_rebind ser -> let (er, newenv) = Typedecl.transl_exn_rebind env ser in + check_exn_decl ser.pexrb_name.loc type_names er.exrb_type; Tstr_exn_rebind er, [Sig_exception(er.exrb_id, er.exrb_type)], newenv @@ -1435,7 +1446,8 @@ and simplify_signature sg = | (Sig_exception(id, decl) as component) :: sg -> let name = Ident.name id in simplif val_names (StringSet.add name exn_names) - (if StringSet.mem name exn_names then res else component :: res) + (if StringSet.mem name exn_names && Subst.sub_ids_exn decl = [] + then res else component :: res) sg | Sig_module(id, md, rs) :: sg -> let md = {md with md_type = simplify_modtype md.md_type} in From fa3ab937f422c2d56043cd6d5e60e730bbf29882 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Thu, 7 Aug 2014 16:19:05 +0000 Subject: [PATCH 18/35] Accept. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15070 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- .../typing-recordarg/recordarg.ml.reference | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml.reference b/testsuite/tests/typing-recordarg/recordarg.ml.reference index bc0ae9140..4a5165d02 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml.reference +++ b/testsuite/tests/typing-recordarg/recordarg.ml.reference @@ -22,4 +22,39 @@ ^^^^^^^^^ Error: This expression creates fresh types. It is not allowed inside applicative functors. +# Characters 61-78: + exception A of {x : string} + ^^^^^^^^^^^^^^^^^ +Error: Multiple definition of the type name exn.A. + Names must be unique in a given structure or signature. +# Characters 58-75: + exception A of {x : string} + ^^^^^^^^^^^^^^^^^ +Error: Multiple definition of the type name exn.A. + Names must be unique in a given structure or signature. +# module M1 : sig exception A of { x : int; } end +# Characters 34-44: + include M1 + ^^^^^^^^^^ +Error: Multiple definition of the type name exn.A. + Names must be unique in a given structure or signature. +# module type S1 = sig exception A of { x : int; } end +# Characters 36-46: + include S1 + ^^^^^^^^^^ +Error: Multiple definition of the type name exn.A. + Names must be unique in a given structure or signature. +# Characters -1--1: + + +Error: In module M: + Modules do not match: + sig exception A of { x : int; } exception A end + is not included in + sig exception A of { x : int; } exception A end + In module M: + Extension declarations do not match: + type exn += A + is not included in + type exn += A of { x : int; } # From 9dcd1459fe00b1a2ae61d4c04085e0028d0f1139 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 12 Aug 2014 13:32:23 +0000 Subject: [PATCH 19/35] #5528: support rebinding inlined extension constructors with free variables. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15079 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/typedecl.ml | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 09fd73f64..8f49b5e6f 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -1135,21 +1135,25 @@ let transl_extension_constructor env check_open type_path type_params in let rebind, args = if cdescr.cstr_inlined then - let p = - match cdescr.cstr_args with - | [ {desc=Tconstr(p, [], _)} ] -> p - | [ {desc=Tconstr(_, _, _)} ] -> - (* #5528: TODO *) - failwith "Rebinding of inlined extension constructors with free variables is not yet supported." + let p, tl = + match args with + | [ {desc=Tconstr(p, tl, _)} ] -> p, tl | _ -> assert false in let decl = try Env.find_type p env with Not_found -> assert false in - let lbls = - match decl.type_kind with Type_record (l, _) -> l | _ -> assert false + let decl = Ctype.instance_declaration decl in + assert (List.length decl.type_params = List.length tl); + List.iter2 (Ctype.unify env) decl.type_params tl; + let lbls = + match decl.type_kind with + | Type_record (lbls, _) -> lbls + | _ -> assert false in - let id = Ident.create (Path.last type_path ^ "." ^ sext.pext_name.txt) in + let id = + Ident.create (Path.last type_path ^ "." ^ sext.pext_name.txt) + in Some p, Types.Cstr_record (id, lbls) else None, Types.Cstr_tuple args @@ -1546,7 +1550,7 @@ let report_error ppf = function fprintf ppf "A type variable is unbound in this extension constructor"; let args = match ext.ext_args with | Cstr_tuple l -> l - | Cstr_record _ -> assert false (* #5528: TODO *) + | Cstr_record (_, lbls) -> List.map (fun l -> l.Types.ld_type) lbls in explain_unbound ppf ty args (fun c -> c) "type" (fun _ -> "") | Not_open_type path -> From 9fce02d524c9d442b7a32d1be54dcc851a01aa15 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 12 Aug 2014 13:41:50 +0000 Subject: [PATCH 20/35] #5528: improve error reporting. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15080 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/typedecl.ml | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 8f49b5e6f..8b7235dfe 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -1478,6 +1478,19 @@ let explain_unbound_single ppf tv ty = "case" (fun (lab,_) -> "`" ^ lab ^ " of ") | _ -> trivial ty + +(* TODO #5528: this will result in error messages such as: + + # type t = A of { x : < .. > ; y : int };; + Error: A type variable is unbound in this type declaration. + In case A of (< .. > as 'a) * int the variable 'a is unbound +*) + +let tys_of_constr_args = function + | Types.Cstr_tuple tl -> tl + | Types.Cstr_record (_, lbls) -> List.map (fun l -> l.Types.ld_type) lbls + + let report_error ppf = function | Repeated_parameter -> fprintf ppf "A type parameter occurs several times" @@ -1533,10 +1546,8 @@ let report_error ppf = function begin match decl.type_kind, decl.type_manifest with | Type_variant tl, _ -> explain_unbound ppf ty tl (fun c -> - match c.cd_args with - | Cstr_tuple tl -> - Btype.newgenty (Ttuple tl) - | Cstr_record _ -> assert false (* #5528: TODO *) + let tl = tys_of_constr_args c.cd_args in + Btype.newgenty (Ttuple tl) ) "case" (fun c -> Ident.name c.Types.cd_id ^ " of ") | Type_record (tl, _), _ -> @@ -1548,10 +1559,7 @@ let report_error ppf = function end | Unbound_type_var_ext (ty, ext) -> fprintf ppf "A type variable is unbound in this extension constructor"; - let args = match ext.ext_args with - | Cstr_tuple l -> l - | Cstr_record (_, lbls) -> List.map (fun l -> l.Types.ld_type) lbls - in + let args = tys_of_constr_args ext.ext_args in explain_unbound ppf ty args (fun c -> c) "type" (fun _ -> "") | Not_open_type path -> fprintf ppf "@[%s@ %a@]" From b115e37fc80f37e4fca710903bd51b2342778f06 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 12 Aug 2014 13:57:13 +0000 Subject: [PATCH 21/35] #5528: improve error reporting. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15081 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/printtyp.ml | 4 ++++ typing/printtyp.mli | 1 + typing/typedecl.ml | 25 ++++++++++++------------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/typing/printtyp.ml b/typing/printtyp.ml index c86d24516..0e928c882 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -879,6 +879,10 @@ let tree_of_type_declaration id decl rs = let type_declaration id ppf decl = !Oprint.out_sig_item ppf (tree_of_type_declaration id decl Trec_first) +let constructor_arguments ppf a = + let tys = tree_of_constructor_arguments a in + !Oprint.out_type ppf (Otyp_tuple tys) + (* Print an extension declaration *) let tree_of_extension_constructor id ext es = diff --git a/typing/printtyp.mli b/typing/printtyp.mli index 531b0e995..f00f0e41d 100644 --- a/typing/printtyp.mli +++ b/typing/printtyp.mli @@ -32,6 +32,7 @@ val mark_loops: type_expr -> unit val reset_and_mark_loops: type_expr -> unit val reset_and_mark_loops_list: type_expr list -> unit val type_expr: formatter -> type_expr -> unit +val constructor_arguments: formatter -> constructor_arguments -> unit val tree_of_type_scheme: type_expr -> out_type val type_sch : formatter -> type_expr -> unit val type_scheme: formatter -> type_expr -> unit diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 8b7235dfe..aad2f6961 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -1446,17 +1446,21 @@ let check_recmod_typedecl env loc recmod_ids path decl = open Format -let explain_unbound ppf tv tl typ kwd lab = +let explain_unbound_gen ppf tv tl typ kwd pr = try let ti = List.find (fun ti -> Ctype.deep_occur tv (typ ti)) tl in let ty0 = (* Hack to force aliasing when needed *) Btype.newgenty (Tobject(tv, ref None)) in Printtyp.reset_and_mark_loops_list [typ ti; ty0]; fprintf ppf - ".@.@[In %s@ %s%a@;<1 -2>the variable %a is unbound@]" - kwd (lab ti) Printtyp.type_expr (typ ti) Printtyp.type_expr tv + ".@.@[In %s@ %a@;<1 -2>the variable %a is unbound@]" + kwd pr ti Printtyp.type_expr tv with Not_found -> () +let explain_unbound ppf tv tl typ kwd lab = + explain_unbound_gen ppf tv tl typ kwd + (fun ppf ti -> fprintf ppf "%s%a" (lab ti) Printtyp.type_expr (typ ti)) + let explain_unbound_single ppf tv ty = let trivial ty = explain_unbound ppf tv [ty] (fun t -> t) "type" (fun _ -> "") in @@ -1479,18 +1483,10 @@ let explain_unbound_single ppf tv ty = | _ -> trivial ty -(* TODO #5528: this will result in error messages such as: - - # type t = A of { x : < .. > ; y : int };; - Error: A type variable is unbound in this type declaration. - In case A of (< .. > as 'a) * int the variable 'a is unbound -*) - let tys_of_constr_args = function | Types.Cstr_tuple tl -> tl | Types.Cstr_record (_, lbls) -> List.map (fun l -> l.Types.ld_type) lbls - let report_error ppf = function | Repeated_parameter -> fprintf ppf "A type parameter occurs several times" @@ -1545,11 +1541,14 @@ let report_error ppf = function let ty = Ctype.repr ty in begin match decl.type_kind, decl.type_manifest with | Type_variant tl, _ -> - explain_unbound ppf ty tl (fun c -> + explain_unbound_gen ppf ty tl (fun c -> let tl = tys_of_constr_args c.cd_args in Btype.newgenty (Ttuple tl) ) - "case" (fun c -> Ident.name c.Types.cd_id ^ " of ") + "case" (fun ppf c -> + fprintf ppf + "%s of %a" (Ident.name c.Types.cd_id) + Printtyp.constructor_arguments c.cd_args) | Type_record (tl, _), _ -> explain_unbound ppf ty tl (fun l -> l.Types.ld_type) "field" (fun l -> Ident.name l.Types.ld_id ^ ": ") From 2acf7b75f3efaec6d2bf864b1e9f0ff8062db7d6 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 12 Aug 2014 14:58:56 +0000 Subject: [PATCH 22/35] #5528: -dsource printer, also fix a bug (present in trunk) when printing GADT constructors with multiple arguments. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15082 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- parsing/pprintast.ml | 77 +++++++++++++++++++++---------------------- parsing/pprintast.mli | 2 ++ 2 files changed, 40 insertions(+), 39 deletions(-) diff --git a/parsing/pprintast.ml b/parsing/pprintast.ml index 3fb3494b3..31e5edf0c 100644 --- a/parsing/pprintast.ml +++ b/parsing/pprintast.ml @@ -1140,22 +1140,16 @@ class printer ()= object(self:'self) | xs -> pp f "@[@[<2>type %a" (self#list aux ~sep:"@]@,@[<2>and " ~last:"@]@]") xs (* called by type_def_list *) + + method record_declaration f lbls = + let type_record_field f pld = + pp f "@[<2>%a%s:@;%a@]" self#mutable_flag pld.pld_mutable pld.pld_name.txt self#core_type pld.pld_type in + pp f "{@\n%a}" + (self#list type_record_field ~sep:";@\n" ) lbls + method type_declaration f x = begin - let type_variant_leaf f {pcd_name; pcd_args; pcd_res; pcd_loc=_} = match pcd_res with - |None -> - pp f "@\n|@;%s%a" pcd_name.txt - (fun f l -> match l with - | Pcstr_tuple [] -> () - | Pcstr_tuple l -> pp f "@;of@;%a" (self#list self#core_type1 ~sep:"*@;") l - | Pcstr_record _ -> assert false (* TODO *) - ) pcd_args - |Some x -> - begin match pcd_args with - | Pcstr_tuple l -> - pp f "@\n|@;%s:@;%a" pcd_name.txt - (self#list self#core_type1 ~sep:"@;->@;") (l@[x]) - | Pcstr_record _ -> assert false (* TODO *) - end + let type_variant_leaf f {pcd_name; pcd_args; pcd_res; pcd_loc=_} = + self#constructor_declaration f (pcd_name.txt, pcd_args, pcd_res) in pp f "%a%a@ %a" (fun f x -> match (x.ptype_manifest,x.ptype_kind,x.ptype_private) with @@ -1177,10 +1171,7 @@ class printer ()= object(self:'self) (self#list ~sep:"" type_variant_leaf) xs | Ptype_abstract -> () | Ptype_record l -> - let type_record_field f pld = - pp f "@[<2>%a%s:@;%a@]" self#mutable_flag pld.pld_mutable pld.pld_name.txt self#core_type pld.pld_type in - pp f "{@\n%a}" - (self#list type_record_field ~sep:";@\n" ) l ; + self#record_declaration f l | Ptype_open -> pp f ".." ) x @@ -1204,28 +1195,36 @@ class printer ()= object(self:'self) (self#list ~sep:"" extension_constructor) x.ptyext_constructors + method constructor_declaration f (name, args, res) = + match res with + | None -> + pp f "%s%a" name + (fun f -> function + | Pcstr_tuple [] -> () + | Pcstr_tuple l -> + pp f "@;of@;%a" (self#list self#core_type1 ~sep:"*@;") l + | Pcstr_record lbls -> + pp f "@;of@;%a" (self#record_declaration) lbls + ) args + | Some r -> + pp f "%s:@;%a" name + (fun f -> function + | Pcstr_tuple [] -> self#core_type1 f r + | Pcstr_tuple l -> pp f "%a@;->@;%a" + (self#list self#core_type1 ~sep:"*@;") l + self#core_type1 r + | Pcstr_record lbls -> + pp f "%a@;->@;%a" + (self#record_declaration) lbls + self#core_type1 r + ) + args + + method extension_constructor f x = match x.pext_kind with - | Pext_decl(l, None) -> - pp f "%s%a" x.pext_name.txt - (fun f -> function - | Pcstr_tuple [] -> () - | Pcstr_tuple l -> - pp f "@;of@;%a" (self#list self#core_type1 ~sep:"*@;") l - | Pcstr_record _ -> - pp f "{...}" (* #5528: TODO *) - ) l - | Pext_decl(l, Some r) -> - pp f "%s:@;%a" x.pext_name.txt - (fun f -> function - | Pcstr_tuple [] -> self#core_type1 f r - | Pcstr_tuple l -> pp f "%a@;->@;%a" - (self#list self#core_type1 ~sep:"*@;") l - self#core_type1 r - | Pcstr_record _ -> - pp f "{...}" (* #5528: TODO *) - ) - l + | Pext_decl(l, r) -> + self#constructor_declaration f (x.pext_name.txt, l, r) | Pext_rebind li -> pp f "%s@ = @ %a" x.pext_name.txt self#longident_loc li diff --git a/parsing/pprintast.mli b/parsing/pprintast.mli index 316218d31..4f690f98c 100644 --- a/parsing/pprintast.mli +++ b/parsing/pprintast.mli @@ -37,6 +37,7 @@ class printer : Format.formatter -> Parsetree.class_type_declaration list -> unit method constant : Format.formatter -> Asttypes.constant -> unit method constant_string : Format.formatter -> string -> unit + method constructor_declaration : Format.formatter -> (string * Parsetree.constructor_arguments * Parsetree.core_type option) -> unit method core_type : Format.formatter -> Parsetree.core_type -> unit method core_type1 : Format.formatter -> Parsetree.core_type -> unit method direction_flag : @@ -80,6 +81,7 @@ class printer : method payload : Format.formatter -> Parsetree.payload -> unit method private_flag : Format.formatter -> Asttypes.private_flag -> unit method rec_flag : Format.formatter -> Asttypes.rec_flag -> unit + method record_declaration : Format.formatter -> Parsetree.label_declaration list -> unit method reset : 'b method reset_semi : 'b From 67151820dcdfcab45f4d27369e6846c14bb2f5e1 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 12 Aug 2014 15:40:52 +0000 Subject: [PATCH 23/35] #5528: type extensions can create local type names t.A without an explicit local type t (if the extended type is non-local). We must thus check explicitly uniqueness of synthesized type names t.A instead of relying on uniqueness of declared types as before (well, we already had the problem if someone redefined a local exn type). git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15083 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- testsuite/tests/typing-recordarg/recordarg.ml | 18 ++++++++++ typing/typemod.ml | 35 +++++++++++++++---- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml b/testsuite/tests/typing-recordarg/recordarg.ml index a9f607b98..7446ab3b4 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml +++ b/testsuite/tests/typing-recordarg/recordarg.ml @@ -83,3 +83,21 @@ module M = struct exception A = M1.A exception A end;; + +module X1 = struct + type t = .. +end;; +module X2 = struct + type t = .. +end;; +module Z = struct + type X1.t += A of {x: int} + type X2.t += A of {x: int} +end;; +module Z = struct + type X1.t += A of {x: int} + let f = function A r -> r | _ -> assert false + + type t = A of {x: int} (* BUG: this should be rejected *) + let g = function A r -> r +end;; diff --git a/typing/typemod.ml b/typing/typemod.ml index 11aeab932..bcd1e006b 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -434,14 +434,32 @@ let check cl loc set_ref name = let check_name cl set_ref name = check cl name.loc set_ref name.txt -let check_ext_decl loc type_names decl = +let typedecl_subids decl = + match decl.ptype_kind with + | Ptype_variant cstrs -> + List.fold_left + (fun acc pcd -> + match pcd.pcd_args with + | Pcstr_record _ -> + {loc = pcd.pcd_name.loc; txt = decl.ptype_name.txt ^ "." ^ pcd.pcd_name.txt} :: acc + | Pcstr_tuple _ -> + acc + ) + [] cstrs + | _ -> + [] + +let check_types loc type_names ids = List.iter (fun id -> check "type" loc type_names (Ident.name id)) - (Subst.sub_ids_ext decl) + ids + +let check_ext_decl loc type_names decl = + check_types loc type_names (Subst.sub_ids_ext decl) let check_sig_item type_names module_names modtype_names loc = function - Sig_type(id, _, _) -> - check "type" loc type_names (Ident.name id) + Sig_type(id, decl, _) -> + check_types loc type_names (id :: Subst.sub_ids decl) | Sig_module(id, _, _) -> check "module" loc module_names (Ident.name id) | Sig_modtype(id, _) -> @@ -570,7 +588,9 @@ and transl_signature env sg = | Psig_type sdecls -> List.iter (fun decl -> - check_name "type" type_names decl.ptype_name) + List.iter (check_name "type" type_names) + (decl.ptype_name :: typedecl_subids decl) + ) sdecls; let (decls, newenv) = Typedecl.transl_type_decl env sdecls in let (trem, rem, final_env) = transl_sig newenv srem in @@ -1213,7 +1233,10 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = Tstr_primitive desc, [Sig_value(desc.val_id, desc.val_val)], newenv | Pstr_type sdecls -> List.iter - (fun decl -> check_name "type" type_names decl.ptype_name) + (fun decl -> + List.iter (check_name "type" type_names) + (decl.ptype_name :: typedecl_subids decl) + ) sdecls; let (decls, newenv) = Typedecl.transl_type_decl env sdecls in Tstr_type decls, From 815a3dd23ed8b52fea39222b99d5a0505ec76b79 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 12 Aug 2014 15:41:27 +0000 Subject: [PATCH 24/35] Accept test result. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15084 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- .../tests/typing-recordarg/recordarg.ml.reference | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml.reference b/testsuite/tests/typing-recordarg/recordarg.ml.reference index 4a5165d02..35c443b72 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml.reference +++ b/testsuite/tests/typing-recordarg/recordarg.ml.reference @@ -57,4 +57,16 @@ Error: In module M: type exn += A is not included in type exn += A of { x : int; } +# module X1 : sig type t = .. end +# module X2 : sig type t = .. end +# Characters 62-75: + type X2.t += A of {x: int} + ^^^^^^^^^^^^^ +Error: Multiple definition of the type name t.A. + Names must be unique in a given structure or signature. +# Characters 107-108: + type t = A of {x: int} (* BUG: this should be rejected *) + ^ +Error: Multiple definition of the type name t.A. + Names must be unique in a given structure or signature. # From e0957377188e4b04fef7fb3f48f1b3ce3b101018 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 12 Aug 2014 16:08:21 +0000 Subject: [PATCH 25/35] Bug is fixed. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15085 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- testsuite/tests/typing-recordarg/recordarg.ml | 2 +- testsuite/tests/typing-recordarg/recordarg.ml.reference | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testsuite/tests/typing-recordarg/recordarg.ml b/testsuite/tests/typing-recordarg/recordarg.ml index 7446ab3b4..376487000 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml +++ b/testsuite/tests/typing-recordarg/recordarg.ml @@ -98,6 +98,6 @@ module Z = struct type X1.t += A of {x: int} let f = function A r -> r | _ -> assert false - type t = A of {x: int} (* BUG: this should be rejected *) + type t = A of {x: int} let g = function A r -> r end;; diff --git a/testsuite/tests/typing-recordarg/recordarg.ml.reference b/testsuite/tests/typing-recordarg/recordarg.ml.reference index 35c443b72..f37aac356 100644 --- a/testsuite/tests/typing-recordarg/recordarg.ml.reference +++ b/testsuite/tests/typing-recordarg/recordarg.ml.reference @@ -65,7 +65,7 @@ Error: In module M: Error: Multiple definition of the type name t.A. Names must be unique in a given structure or signature. # Characters 107-108: - type t = A of {x: int} (* BUG: this should be rejected *) + type t = A of {x: int} ^ Error: Multiple definition of the type name t.A. Names must be unique in a given structure or signature. From 7740036108fc7c8bb1a7e22cfd5a73dc91244f57 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Thu, 4 Sep 2014 16:22:39 +0000 Subject: [PATCH 26/35] Bootstrap. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15191 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- boot/ocamlc | Bin 1707828 -> 1722715 bytes boot/ocamldep | Bin 525703 -> 527633 bytes boot/ocamllex | Bin 251380 -> 251602 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/boot/ocamlc b/boot/ocamlc index 3a04382c587ffc25decb4936dd5dc10a7634b70f..ec2276b571d0ff587509a3d16e34a07c012044f1 100755 GIT binary patch delta 275567 zcmc${d3;qx(mtL(3*77pWDg`E0RjXG5M&Dy1cqJ0qM)J#LD?k=DhkR~P(V>YqLhLX z1O){pK$NSX1Vu%`0mofXqT;wq+y)nBxWA|R^ttpsiN5oFe}BCBd^+dWQ`Obg)z#H~ z`Yz|`byJV6npTw8qHt>Y)mIf>F?sg1Ig_RqmQT9k>Y0U;%4f~FZua$)t}CBCr)=)D z>!y~?zG_nW>??~3r_GwPBkhm1$$KIqA}&E`jAEf=ptPtcd8n+S-9vpUjz5%Bao0l^ zip#5OAKGd(j{&m)MW93mgTW@aHbvoUGWnlul1amB>U{3 zqVzx+Us1BYTVxr(LbcethjVTf|wby zVAY1C!B>Olw&KTYy_H!SZ-$3g4w~D#MqRI!7R*-E9BILI6*U{XMP3h#EqI|K^U=(T zj7Jm1+>iyM9!(m2BY3U_uj93D!A%XtrR!y53w-^=N70EugryR~5RTBL1e}t`mbksT?&)YVeG#hhUn~l%c>tw5 z%A)F~&khyhj*7D9GSe3W=!5bb%H=30P}q_sRJqj1OqB8<`A@#CsCh11EUKt|E>r$b zt!TYFsk-&mEbGY)KV%>jQb)eAsExTdPv<@Lfl{BpPX4e z{KqF7SET%&R1x>PuVTX=N!9Iszfp(>Do+2FDITn@`D2+a);u#*j1|V(2>RrB<1Bhf zh)-HPgqAKuS%SiUQ7G)f_fgn_@su4Ml}X19ktW8|uZ9?iiw7#A-no{Kwwa<2n02O@ zkIM{8OcD>%5ld7gu7e_OgcWv^O6S<3usM%sBNPrc4lJHj@hFZ+jV&^57Ky6xpOZ?b zY|#>G;iIBh*2jOWZyk+mB$kQFz?Y3gUL&#I8Is&s@erMg7fFG)Vns`XjwXtjfRP|R z5MpECSfa=lw5_Q~qPV80(K|^bRb(wnqoYm5m10w%BuNySQJbNhjefg?)=z7kMk`ar zm_SOJ7$hhzP549=WoL+d8lNr_#C9rA7kOd_)ujX4&CpHc!__ql3Jy&!TjW{4)iJ*>ojWYr_bQNE<7Ow`%E*F`R z#(@aRIhdFc`8P;#gufQ3oGi+Ocs&rDB8nT+m~xROs~?J>3CBckq^Sho2rMcW^P7mj zQ}8x1)Hn?G-LWaudWq-~SiMl(F2rWayj_&W9zlgT6!z_AIJ^b1Xm=M}FS=6v zXgf79e3@8k^x%czVw5o`Y-TnJH_0B$MB&goiNZXl+1>A=WKjHaF(lOYRkO#Rn9;7vt73P_{}m zHqtvlQ2`3igdJGz*bY|Sffbxa{LH^!;OvbCbIDOyqdW1={)VVxLeh&F+`^&-<0Z3x#q z>hP%eM6?P(V5<;qDgFtVdukKLtzDqsW^o8u09dI=YzO`9;LlLF zcM2%88l(Rml~jvy$=^da`_Dk(KW?i{psHHTH)wc3G@~_`{WNM9+G#_JcA${}UlaKvi;7HTIZ9X^D?`xkwANX#%!!TjD)xpc!DqL)aa zBav9W556IC@cP>~#Ee!+O6#vmYXYu0C>$#M#}*~Yj6$pajB!lmG_*kk_& zZakH~38lsnF#_=DBjQ)_dtm6BxEO!Pl$=Eq-@*ilr>eKaP;r`0^Ch0@-V>R$Z5C$o z^tTZX@4bUry!UPKhAa3VDt=$&2hO}B`U~TXvo_H9_YgbrwBkLiXHe)|jyM-694dlb zYiRmR7$#5_q3~ZCN;*m`t$kk<84)7z=KG?NupR9E50I?J97Wu9_z+ohB-Ony#?k5z z#obDPD+z<5KSUhOJ1RaGCY2o%-9!}8F{CLD2Ob&=O|rup(UD__tj-_7A=_FsN}!X) zjbd7}L?cM>K(<8T49{7K|J-!jSa7su(cxQ-oC`Rdu0(NjBkvsCF#7^w#?d32)9`nI zbN=??FH#|P7xdCcVvs-W+hDK-%0!f_QF?qA3|@oM?fYQxDU_Zkfz<_r%l;J%{%|T7 z?DT6exSz{!!C=K7!JzMSFxVPp8p>-Zr%-DD9SmmtCm8IHviM9exEywH=Xj0b-PJQF zQ&Dg?6D51w8bofzkwvM2Egy^P%uYV#8OGiG8wrdTi18?#TX?Fl*Elyv1xi1~%G*2| zG90ula|(rJ*wZW%L&49`>8>X*4joP)(njG`EKg$Q#&b<7?P8>g1S&rvHp&eUKuk@V z@NSbV>iIdMVKWW<9Lrc@V9)1RVnh=f_XW~mQ(E=~VlaueejzfOB%@XvROETgs#64w zI4)8GC%?e{%byA^@2ff~ZknRcQFOYZd6&$!GZfuQ(V2>Fq3C9cZm#I&isoSE`dNxj zcIdtl*$PNh0y&E20OATQ6dkGPTt&OS&Z8w?3qPfNBVLZ>Zh|fAbqc)yjaX|KorSY= zTmHRR8ZC+fslSUErqKmX_#IAI^Ka3|6z9^hprHE~8kfo4S}#F;zKlt^|BR7@(%v`^ zfq$Nn6&NB6%M`r>rIwN3gbqJ$`sj~!Mna2s5l?I$$3Ooa1kLk;X*TBpntO?nO}j6O zPVip}9#2V^&-3UG#3UyLo@?ZIJw0Z0yCSN}bjOFT?2J>Nr50v$uyFGgh=oljS^ugFMl3w-M6bn`#@J)C|8G*@Ml_{!%Ctb$$o6nMI; z7E^q>k!s&j6AVUF)ZCXx!_$om{oRxl*XDraD`!B~!Vb6x35G3bkHQ1Ve;xKg1^yW0 zmKc8m3+s~o!60KCm;4uV0ErA`+-t$$E|h~PlYsO5FF~a~5fK%w&Pz}3j5fRh@iCQV z7)6)YpvpTa@4XQWw)=Z9_!Y{3P`C-V<8Fro$cMVKzWybgPVmq{I+PZZEv}$ohEaS) z_RrxFo8X~?KRFrQ9ifw;^%48nL*ENpw`MS{%{20`Ew9Nm$~*n?W-wU&7W(scFt`tk zLQ_nj;qL{5y*_aAGP}`rIlDKH%9Cb-Xuz7o~vj@=%u$%nz$M7M~`SJdab{3s^ zs!4)T_ycvUu~X}NW0}oWc#+Aak{qKX@@vd{2}=pvd0E(k z6$Jb(4D2M&r?t68(C91ZhdHq+ft`8AQX%>Uidz|DjmZAc#&yo8sy0Sx7zXUdD}yQz6V**)`Fk+C7a@>3AnDFMI0Y-W9jo^lL z4R++wva4|9b>`uCA7$+|b7=Q3O%rHavf)dXqX-e+i?GSOUAT#A1{!b2&Vwdi7o2FQ z9AuQm&Ic47f}#f-g^4!<;{M_yE8jvx2OHT<7Io7#p9rX4vqm{ec%4V<}^}(Gsus{%#?O&=x(cbd)F?>23nce~S0i@8GMZaz zWJlf|lBz5<1~$LPC2{4ojrX#=kaR;CPv!_CzxndN6d5?eD8>NOt*BJXx$(AGO9f?^ z+YeFQcqo5ZQnaBAIb?4f_RR~+j2uzP%!0t-GUF4pLRD87C&c!`GaFOwGBhWxsLmfU8H#^u;; z#blD~FeeZu8%@8Fk{tYM2 z4!tfCYXbZKZDckUy8^YQImg8L@94(nq!jV26PSmaoBc)9b5O|pfL|=?vjScIHs=3IUoD_~RTC zS^U+&p+Xb8f&(kK$&_%~aP(S}?S;S%9WtPa$pUZ05)e+`zu5 zvsse(8rtP7@w&Pmq=F*!<`DUd%p&6r%&?he77oDQE;1_<4=bS~>iQ-v>H^_^IKppX zOVrK4R?fux8lBHIKX3B3l6yy8-^Cr;bfW|H>~6-;#IEM{=I?>S_UpIa{F)Qw`&8Hs zuKXY{w3}Hcj1RH8t%%7DjPGH-ETWF0A`gDw#`H-swk&;%%^MBl7#iTCs*}a$?KH8s z`HS%pj1pKBW|x@jjgJNO+TAoG(4micV_Y(;;4OU%6xWAGY0q$TTspHj>oRK$3NOf< zfsayQsacF8;~Ay!^wGe9QuA#Ni?t)o0=Zj>rK-_prre3}dgaW+pGTU=TAQihLWJ99 z8hxQz70E5g{7y$^V8fJqkvS7;S6pPK+LA?OuVUBpUV2mly>*fKs19!0Zenva#>{~M z?~lPy8^^Ko^}rhw85f&5My)eyKdBxZz53st}(CYOg}HM*UN%Z6qo>KA1wi zr<%_8FM_J#th_`Hs4pSHdm3k^l}3DJU%VwTAJLCS%`dSenAV)i6G! zu&Hh;&M8k$HGPTSdw7j0dm4CI)4;3q@FJ;{dBd6aqlXtwe&#J;-p?LhDpfIW8}t6< z;iXe8^Nus`R}U|f;-`ZbHyym+!Q%}m_n-UFoJyG28@%+>o_c)f#lHAAl|jb;AC1j{ zco7PR4~v}9c&s*0;Xx1HQsKM<(amU~Z~@#M9@fKVvVOye@P{$n?WyUhz_*%Q!Sdkz zHW=f!2j^I0ypadzT?FHeL%82@81IFd;R`VwoR1V3kM!V43Xk&O$qJA5;3*1^(Qv$s z=uSV+F!StKypE)?GtE5eJrlV*o~Fz+r_g&d%_q~j`PSf1#Z|wJ$ft^{&BEL^V6jMB zb#14v1-MQFJ~e{AyV`7*%rc#T@vI4rF_p|hm~>d1t$l%xiHj zM0mkgVFdqTv~3O&&;tG!H{0wLFs?Ii6)guqumFWC{TnA-JXQlW>?>fj;5sv{5%;l| zQL)dD8_79lOyG;_%?AXnd&}_A;<@IEtV37c6l6?NBP4%}iU8N&=(`D#Ln z(cPf!EsYeKeT&)b9Ni|igWvgZ2Wcp1w%?^~IplK64u=?Tt#dWD77?W~B4nK4jo3!< z*&{hHco=xV2H}bUt2g)@2s{*gv+E8SzvjS&Kct^VDErQ*iUsJsYd-r2965p`>DU6Z zfEN4BG|KXuQ;pFECHy-+h1U7a_HsjzK*4VtJF$Bqee1_;zKAk!#lG_sD!bK8?K=jl zLTfO$j6dEnvN62C@G8KuG8S^|w2N__iYpgqplRg~2`P9h35)+F)a^F2D1$rBI^B+Q zvSuBZ8gdU3SaX}%QQ)nwLkrF9$jcziiq5B>7n= zvnXcVlzAO3UKw=vx7<(o0;i5(51o9o{Pf0JG*yT1U5db zvc&u@i*36W_1h>RT%_&X-`SWWz2Y+{ZcePvn1c?aCS)|ZP6^{8J9fR{+%er?@Y@S1 z)b38R`#E#L?E?Y+}48+x6nTqdPs#$wv+=mdKUV2?Y_Yk{tyFuDnQh#r`m+2kvt!&s2=m~w>>{Hgp)5tN zEVl#h1Bm~abq9xccARd(Vzj!2V-!LG)^p+6!pCu2Sc;(Hk;9`Uhy$BJhE|&?83cH7gjl4sA&C5Gnuw3RP*Q4 zvAfN}7WcU%#@a+nyr1Dn=6u4AxZi1OwbL>=)B_InphMw6f~{KXP!CDUco@wdPR_=g zvoaXQEH|4OmCj({b51Lkn}x2*+vL>StYjY7>OG;b zEvjDErUnkm?!voN!)tMPmb=nyi9-)3=AJZYJ*T*NE6t9vPoe+rpl*|1rl@;OyfciU zGPc9|mZoz`y92csHOZwR_nI9OcdAvE1| z(3ywKM``E7=0|cgKQO4z`q+%Xx^?E`R^*4O)uU9p(VSr%GjJS|LT_y}lf*~#AL z%~)_Z3F@#D_TII_d=wvpD%^?LAiKru zU*%4-$Yyn&DElcKNuQkP^NEkiti}fJW9nCJ4ov(W?epr$@#omEwi-!p2L-ClDX}NR ztc!ov&Xg&)j)p#Mmc{-M=ANoOb{-vl+8iW)q`YU$NwGhH?VjoGpo(YA;>4d-YrI!; zTC05q=SaUOm#A^Hj`XAJtGd3@)JtQJ1nu;08{1OwSG$H_i-nevJ=}Oj`T8IWW=+@xFcCq$pce|5qe!KWKKKb^YInmeKXQXIIm*^0*MOaWIXjF_4zlJ?6{|z#u#fIB9LWSX=bEPb@?@_I%sCnrHw7T7fqFo zttILFkz*cQPF0*3xYz7Ryp`m$3L>LJ!UDu}YO z>xuDZlmA??SSgn7)#mO=<7h^th4&F?S)`TUBOYyXsBz)_c0UyNyn_wawXg=ZiKkwI z)M6kQIzAMi66v;`DBFhep;1<*(ZsBn@LYz`)O0>;zah$M23Ad!RUVaub~)NIdRFW^ zjHM{rx*2Z>ABwgniDW8_u?j(z#aJ6{cCtxFqOCG~J`oI@=fzt1=s8iW)eY~^9SL0u zV%cf#TD+7>;#`4zS{G-O>#J0=qT|$**ee0Ksck8h z#>0J~OU+0to3_PE^>r`8ytm@5B(Q@mtW>_lTgAAnc-_jQ@d=jiEXSXKPGaIGNNqvHwa%{Dr()+YNQHHM?@Ca8_t!Tj))?y=b9HC3%|emJ~lt>Xw{V8mG0}YBqXI@3pjY=xC}Q z5&m>p&Or)StJgev_KjN(w8S)6#)!<_u zU7K0^@OkuKn^|*FJG`%zPS5>qtWr#PKey?l>@2GYl4YYYVfJ2xdy55GGHB{r!7(Ru zWG~=Mo)oY-1WEb6+0s;H-27~-ztP5;KtFoLKz_c)#PiZ1yI3XPChM}zzO+u>TcN~ zj1XI>l1Fhjt0;C7CfV7PDCfW|c2B4u9Ece7+SUyO7o3$xhdWB~@Q!ZGNAd}|IG8Up z_wki^G3+REW~0_;KDPW7BB$F}k{4v@PMAS%lI10cOTEX}CI`)yl2vIZ8w2N~%N z*txkK(z>AXld_Yi+l7V)T}G`?oUbYP%ech{BHRBrAzKt1ntbqk6qRIKd1qZ+UOzZD zpCd<1y5iJ1XQLVsoy4%Cx2&ccjo73X3v3 zV%hJ27%Q}}1{_x)YqMPrBbbmiule}YA4-0yv(?Fh&nzM zxO=m(l(t>~dqaU1KU_A}z>MusBxis-%NJUOw7QFxRMGC;7azaK=tL51`2x0zYp+4Rc z+8qYf^_0^^nJ5KD71yh?&Vkf&hCN~)#r1NMQP{K@+shglHbidZ3MwhV5`DOr46E=c zzzz*3Ip(;M;qP_ zbfb(CE8)+3!GYGGnbjqK+WGiCa)28gI)5Ll_)l6p(np4M{6;JD0=*+M(LvtV|L;3L z>3pkSSfg$#kpqQY|M^x@4{wt`G#R?ZSIzUTn9boMfRH(q-Pg(t%VInvZWFrNsleU$ zMc`JB;)Q*!L1Cu3Cp>~``${)9n6ZOTBIlh;{(dr^!$(!}x-u`HI`o(6He3J=cf+u% zSx^HrL^pcBe^|=?|DAohYq_C^CpW0=McDwElCYp_TPP&aJo!;?AJsYh_<`~+OqnZ_ z!-6Jy!p1z#q*n*Z8LCh1xIuF5Y;XrMcaSyutPjHTLg8TPRk^iQ_Xgn(+&@@a6b=>+ z(al_RmXaqw?mZQUfV?%QZ-?mJR$F#uzP@4}9x8|Mzs?8$%Oy0G_72mX`hQ>o?}~Vv z>e(;(ljW_Da*eZc4G&wncmvRr10G92DYlMTBc;n`jIgrhX9M@i(0-WO76?T1*8L_MoR~%O}!g6qvZyp!E{|WTCOU8 z#!IDj7s@5LL4oXxq#bJSpf-(bFOo+M;b8n2IjzEH20+|@jgiZBgOhRVSgU~gj{Wo5 z3IX0aDYelT%fu-6$D=OR_vp36%kEO_z;<06wyg7_Yg}TrffAlbxbW7KRXR7jb1#vd z3Ag*(OXLPC++^9A*_T=^>n#|(DE!%i!G~Lav0(7p-q3=G*QVbtj` zYTyK2vLcMC4WkOK&?V=FQTxNF_=&pYxG-w-L@b}Z%R(tJ%!g4J7e1*PO10zV8dh&i zTnT(V=zoy7fc8ub>40O0PR9|;0=#{T*UC#0${N(bQcjcfDX)gD?n;FAa5^#*w{xW? z<$Q|Uxkgu6N%DRCk;q1D`Y7^WsfV{-ceGRYLZ>c1$5IB3kz-WNu?^Q$A)rjId7&-6PG= zQ50^M^5}-CQag5`$VkrX15;%-`FR@BdDb-PV-?#t&`hQA(`1eL)2vK+D$hGnz8zy9 zUIxRQ#k^{oOyyj$!F#dGwJwaO+Pn07F^n!R1FAzSrt4|db)%1>W=LNu)8yG=8I-!G zn-i#fhCYL34B#78hygLt8NW#oXREKI;0!tPx~{76+eNVCNv>v|c zD7n^3O}s%fVlHcqhC>nj2;N6kUzG zdMq{Rp;1;AS_LO3vA=Eb`C&I%J|u=Zw^E$ybd&+x&I&u*4G55M!4LHsS!d#aDf zWQ8>E7TJ1(TQGS$eDW4+0y_5R0y`I27eYWO&GySBC4Ac^6|M2hx2CGXj`4$jIh8!V zTo~F_L9yIjAHP+`O1O8_*}iI-xBBWfb@Oe~QQ<}eZ$syOl($g&;J;}RpB?M3FZ$u_ z9ob=JR-77-j|nW&$5!6@_FiH&)861Y@&kTbYRf1o7TyIlY~i3Bm<36)>B2kYV5>f^ zxI=m-ykpUerAW9Ab+dSAv3{^1Pr9}Y!Y>4|f$*&ZJYuEMT}$L*7Ct&y`Eby-)M{4m z9mBh+c&VH{a?3w&X+v9n?Ttv;PP;op$Ae*8x3f3k*evrKQEKNqbQ#VoCu7=%FCu?k zSKDK^)#op#0Urvdf#pa8O!ET8^a^*qQC^l2*I`)$-CpT-d;T&x-M2ayx1RGJP4wN; zGy1Lv2PXNn{BHSvwfpu7zfGnp*4`~Ajoc3%Uy3(Y)KS0O6ivTJ4%L!-%8sI;8J|AmN8ekZ+-sN3btYe-X>mGF5~U2TsHMxft&C9Y1|5Z4V25>YOM)!_XfOe zYtWzvH0cK$I`*Ev(uqdQU^s=-KK*eo-iu|M>V@7z^z%wNg%O>ZwB}y8tM|QfZ>em@ za)4hSyI0?0@ai7>ux7?OH~Z(W($oH5%LQf2L50m z#*)5_Ak*L%3uhWW`9ab3Caru}e#8NH{(LASr+()LjAd6IHyC#o%Y0I4VI zHa*EUe$eV?JYrHpKPv;(!}n11pgc1P2i1W=;TmTFEgRo9h{91Vs zuQmX9`$<3h41GYOJ}7&3vI=oJz6XxDW@XB5G^hq~m5*;S%LPzY+xxIQ*9sr1vj==y zV=5$7Y^!_1U)Le!hu&@*Td9vn^m^GH6%+NS(Q=qJoE@gHx67q*t6N7Wky?KkkUN=; zp^cAB`4~Chz3cEHGbaKiwwK=|9`k~ni{U-1AA~%#&Oy(L4KnGgEy|Z0A8ZnS)-=dq9gJ~8?yZ};HiLfd40HBaSxKAUL%HaSLW zcUrT}Dwc^W5~DH>OIz4 z-xY?^6zzOk9;EA^Ps+r-kK+d%?cZN-5yAq@YnST6&khwn8xSk3AskfkrtShu0#YR0 zES2?O9X`Gm&`;xJ*E>IpWb`L$>))b6GCa1SHlOxBCs)5e=QL>ae*uQ)Aw)wr(%$#e zZg}cmP2!TJ31f!_J1Kp^6P^(*ml&vys;@&Ml2xn$;5D z){5%-|De60`#i*U!K<=Q4I1;`gYquw-~oNHIDJ5$-=(kVH_5m^)830`s$TNJ2lV$H zuyX6+2PK|D<6n?{$ETE6(5{14FZq>{BUEtHI_`3M@WkJ!uT!&w>X% z`uGVCZFp$Yl3Vb<=_zw6^vZKb=!UpFFLxIb{zwyl_m;zwc~_yhJSPYK$t`!) zVH{&w7RCIY+&a?L-W0#c;H)>!-CX!5U&ATn(0n?6L~a;W;5Go2y=mnew&nTgGz2qg z_ucqXhI$iNDR9qU5-4t{90j$o)N7fuwcr<%He-abK6xp0}** z{{uK|Fr+0sUXp1_*y~0i+BZ{(?aS`JXZ~ZT?!=c~tfh4$K=tRR20+WBRrh!?NKc3-^N- zy*U$EzaPE-v9&dpzYoIO7+$>NsPJQmZ90y%JMK7c8eYPyDED_Q5-mzNH_G{St|nA^ z+$yF4wdhwgjf3(i-qo{`WQ+FwrwM)}q1Nh1QMK3sq_Wyn>deAvl>I51nEi>B6vxsT zu#~Tv7TtO!lHWEKQoU&A=|ywy#S(m^o~^_$nM+M$KGjTY;g~3IjB=I6xKCk1o)k7( zT6B$oZ5=+d(xUiwgPU%x3+7W5>@(Uposf#!Dt?pCur+PxC@QdM!j)D^WP4@)If3%e ztY{%R(EJltH~ID#zoo!$fAv8zP&g!#=+FtPKn|wP<`qD)-|up zdqbt;{H;kCA^)5v%0IVKdvIK^THc+uMQMk^vt3aRFEYopQ8 zlE0rr3;tfnk^h}HtYWGBI|R*^udG4MyZwcp?t%EPt*u6j z9)G3>I=N##>Daf{TB8{G>OM1zR)2@6=;cJxd9?pKt0b~FG&tRi{@yB(W5^#yXn~@C zRmexB-y{44&G=r;%Lb+3A%n_(u(JO`QQh}e-e0f_PRe^g{`9r_evtnid``!)vFaqY zCxVWgl>6!DUl_iuGK(7Dl>?cHJ8d@s~e8)0wWh6TG2k1 zd#cU=#{D20VM?mNl7jvzzC@bn2%;eV$8df$)p(FduHn2t5Nc=7kKyh3bgi--OGnTS zJ5t$k4u6W4=UYFNd=zv&VhTz#;QV{sJQH{p@G=}jNcR_Z<`trt>{?U(k&A!=n4Em3t1q9t4a}vquhgc!QP95Op1@uEPQa zzgmkL`xoKMd7Ov~Q21}IhrYr?kMhvHJoGspx|N4+9!~oslEZdJAu!lb1L$~qJu^#$Y zJi$OW|4R@3k8s)_@nSd-vDHJb12CVQ1+~lFBdFas|x*urv6hD)}^+H>P z#b{W(!eW8>UBT0M5(QW0ry;o5Hww$pun!f+PepL$suadgMsTrv6~<3TaIqx{<0m92 ztarq81!kWGBZep}N5hH~)C5v7Mjnz0rg+>h=C#szFDssl zffcb^VXc)MW1AGl{bL<%6p!`a{!P#?9mgGIW?PMUrK-psW?nmucY)%$7+4Yg6;`0+ z7%Kv%hh2t;j{C+RE^rDz#I9HP*hBvVG#k@NYb2ns&KgDv%Lm5tT@;UdJxlS}6HPdV z&()ay!PE`tu7tZP8C)WAJTgg2rn@Hd+gIUwzVp!UDO$!bbVj`D5vcLd&w}Qj6lsmD zQJC91HtuGHxt(IHufp_BeEX#|&{?%06Y;JC$lzxB70}#Z53Rxb6xLJ2CVJ`(^U%FK zbn7r0{!a)4(4vR_0S~NUL(bP4-Kwy@8a7#B{WPo)m_D589y-$R0Z#ohyut|&{icV0 z)XenFr_zntNNS^}^?o`RVg;BR})dZ+PhEL9@;>P3Kle=Ir=C>Z$aw zhhFWWZ}rgEc<2cp`V!D=#1zel5uaoJGdNWPOFR|ZdgycyZF=aRPlS8tgopk}r+NNY z=>X`5JoGgldYFgq@1gTObb^Qe{j;+Ma{CcqXaLi1d+0+R`ehHj4K#c4TFr|SJTgN( zbWevqJN|hdfhM3?=|xb=*SShLr_kR&b$BiYRzxi@eX70ep|^VI2PBRD^J>a}cX$NK zJ#-mpHiRF?;I7KUJu>Hd=xkMInN}xGVbd97|FiW!ec~wR#}IHMx2x+476OfX--ts> z#>-=mJfnF0=myugjS8EkVM`QtufqJeMwBb?8cpz0g)Pyrp$eO=VTB62U&C4{Y_*0( zDeQU;J6WsNf4A5C6au!MdvvI_{uu94*cwgA28D5t*mDnQI__3H7XvF|p28}mJp8{- zt1wA1U5qOXRam8xW2~pb)@xWNV0r+yQZoF^0yb=;lI70DyRvfr0r>T})7wWigyR4QpWOa z6z@re;Sv$2FzzWguuYS%``GEAi?RICkJb3|!zf(KUsr;gl#(5qk|)8_UA$h&y3x!^ zNnxuroy$G-ZVu7P{}V$1G~jQ9hwka2+kxgDR%wkiQrLD4`}!kC&JE6;ipL&&lX={} z3xXH13!vV^O&)rshrZQAU*n-K_Ru9B+TRuc_hi3jb)v$a(XgM7g&X#zhkn^ZZ}HIg zdFb0gqg{W*L9LOQ4jA#gh7I>r?5kvS*SGh`ANg+HMQ}NhKEc>b^bG?#r>wy(9&eK>|51r%EX%ObW1Q&3~h(9Q`DNY#n;h|RC z-ak~k$5gugNEc&z zIDM=zejEey-dES->dL>*&$A!rsS%r$tm90K4tNnO706F*Ud27^CyitN-;Sm+@x8kun&|xd%^7qUr#AncJV1ZON}vp zN`_nisKWU7pqclL!}H6PIG~vCY8CEN826Sd{HA!^vnh(_VqisFt}r&xZS;JF{h?v4 z6~=}X@a*KukqYF8BXDEy-?5QRjh-7~$~zp)liyd#Va<2r<@DVf-8l zx4$t8<7ZH~*f0NZjAmn9>?4J-aW3|l>t391AaT~7~o=plkf=z>b*X!FegZyJo%`?^cb0^Fg->t zRhS+l=PFE(k*17s5_YEtKQ4sbf=k2~e|Ie9U|~197BlZT#nWSExx)G@9qgUi!1Qb~ zS;-94WcSdFr2eBfQZ%5B(Kr);rwM>z7%)R)PFX z4Q7te8hzcPAmE|bd+2*S^gIuJc^D1<_XqV4Lf$8o( ztYk)NGWU37Zt;77DXP+iTBX(=nG_El;i11d7;eZB54}sHIsPI@1DL)MH1~MCX2cYQ z@sn^|FO({bpN8XN-4xbM!=ehX+^FYZItoyC;maQS1*cL(xu*PSkIds9 z`fgQcx>jd?NJjP_&(Kps`dAHD*wtFa^At7%7<hsM*c2tp(~D(Y<5^Ft;<*^N>wo`%V+}X# zj^PG{>El05VP%?JSA|VfjoqktxI~+}PU+yXmYBf5dhLPC5%l+yYGR)eRnc zimJnp@ol-sS*enlt;zKC$aGLLZk%ujn<(sFt==Cm2ZMeNk{dMe zp8y%F(6DzDwh|cg?pHiqB3@8D7vsiAVXHMAi-GB0n&rs&BOcI%hN_AWYFMGCVxEUi zRdpWH>ioXn>BPetb_|$qz#&Ov{COPt?`2hKy;f!q^U$->u09_c?8|Ju6-IW13W$UED!x#jXzxA$C_~ZL(r`B6{VC7d`)3IMjlo?Tq2Sc?^R9ytG(f!dkeH*ch5@zSkV!! z(q@IdsbMQTiWVuEe`qqZ750{fU8=CR&tm?FE((0-EEtikuy-{qN@4G5*zYem26H29 z_y>xIOT>$c$Bi-XLydQ@;(ch)ur_uR|53%`;hmv)$29Cxg?*%9gB8XP&vA#iOGvNN zX077k67lo%j;%Zi*`62G6}I~&@R<_k{+EZWIM+(#9@l}PfN4W7%)b)GSARk{mqGXOM-lu%!&Dcpzs9XuL z`&bcshOc#+%uprc*5e-bRG1!zt$^vCOjj~m3`Y3>v)k$6PpSb{_D_ZBG5ET|e$nKf zR@lEZ>>-7n(y&_<=EfnnG2X%a5x;4I7bwA>fpM?@P&`~Bx`C(nCf`FRdgw?G{h#NY zj_U1w`kdbZf7gt73xaw>uX^a+9(tRHe!xTD;-RPLG>`u<0Nh(QSlB)Jx)A6b51p>+ z{Gb{B%d_Ezf90Xy^3aDs)1~e01V6W~58`7U$#oujm4{yBq33$&86J89X#SoCCm;MZ zkzeD|zcr6%H;ywWQPeqhvx)5?91STq(`16?FHyL36lkvN(!T|QLH=ThOMd~Hzl-D2 z?||m7y14X90a|~mQP0Ss!1!6D7to<|>`7u#ps<4-ZOE@9@bqng!rvlrzjLyPGE40I zz`Tw&o&mpz4t28gBl#U;{_;aEm7Zvf?{0UtyMr~hvz>=aRcAYsR(H13oYw`o9P4bC zHsNm;xDD{<BD)(dYl|9?FV*EUy4VR2Ea=jJ;D`nU z_cSCpQWxxbuH6M+B`81FUS=$cpq!a_#!!b*b`Ev!YPWP4_^pht_M`S97;jh9+W7Up zZgvc;DDGzGv+>>RxuL2(_C*h}ou3xupv*;?gyOceh)M=Yci@sr^9I?y65XzFEIaNz zFvwmDwT{SO`(nI)d$3)n+uoAS3_*-9qSB#qT2v3Un_6hRZcftzT9?f}( z9I#Z~A6MBE%ph)^n;8eD>jXT{t7m+6>}7z$TR!h{9crNE@!-4tsqeS4k#<0LQhPi@ zZ`>#wUk(b)9cBB4D5I(i;r6%-?fznd^LjeJzJgyD;fEC^`;QClHt;N6WS7yxix2?v z^;TT^jgfO_#u!WrfMe`A^0&U-MB#R3Q6PIPB9=}0;fsP#v$n3%x2i!qvQ zC!rU8;FI4__zOEHP}oOT0-uTN{V43ePbm9RyAsydTxypJ87Mh`-I2R0kbRkbLNuR@ zYWzLQH&HG@$wmPrRZOPr@%9{JvPGYi;`v^^m&U}tUhlUgkW&g(Z1 z-c2YMq3}2Q_&ZMSw*aFl`{Cr&7QFmO&2X#hS@zDfklKwC>~1aOcS-^GLE%6C4k3So zY7~lN^yvvUKN~9Z3VVwG0#xQdZlAl%5{z+odDwJ}4d77KF*bzfvyQP!Uc+>ZUCHa1 zjv+shm}n1&msnYrt}}IU448by4tYOi2Xh zRdz|@b@jOAS7Fp9(Tc0=JnLfAr>v=VGfd4xlaV(io=I`{*}ll}V6qW6P~9vf?}=1A z8SC*xnuALu*JS2gm#M1PK}+(DXq0zX+?})C&!1u!hm_vr*2~`ML&8|&iy1sdlb(dv zIVjvw{`(t>>x9X8&CXz%0u&CX+B44fhw&?^ZVHmkJhz47srJB-z4IyiKG~U#Q)PD# zOtp*Xt?AgGOr-3aF+QEA+3h3Q6z<(ElzAnvxO;rvBS$N20Zo|(Z228_0-c&>Uvs|S z<6`!kcQDy5o|3HeR>*S*^T0Abo;FXn^CDgLZI0dJ>D%d8yIo5b)~i&y&X;`w2Q~)_ z>v2UFLDcJgwy7mbV-&8#fpa_L^dKBhGBnC$XhiZnVr%bk&EWy2;cM~a#WRy_JkM&9 z?Mq(VP*W6~<4Uf(3X(FIE>-H5gw)NnGdm3c>JDoeUbBf%8H(+t4VoAmCQ2(fI>%GZ z^%%+JSKBd(ch##Ef4yBuN3XV%5|`EE@oZ^v1sZk7jD2%=J+bWB*vKAVY$u$rkL5j( z3mZ$+ZHdBZiqkLaTK=cH+KUygJ7ny&F2~kq?=;&dR?>lKF!`=>`}s&txI7Z~QvM7$ zHf07jyQ_$%+XZxd2IeU*NzAWcUD?!nr>`0PvDz1dCzfwriG}n&s=M0Gv%5fK02QFO zX9p0!A6PmQb+%k<=fH)BuEqXxHH+gRg1dcb_)%=gXH(bf5bI~Iw(%HWMx_>1Y6uk% z%GPN4^%(iCSEC+cASu*`HI9vOGwnWNEw??8vTm@GShnXFaSy-n5)7KyzQ?9j}(e$~FiAkZBlf-%@xfTu?eghiVw$_(KA!Z7k3NNulO$i zjd;C@`O(ZzS*Nz1!$vfEJa z`R=goon<=@D}T~4E<``&&^)ZxA3@w1FPLekNxyG%I7jEf>MFLnz%gXIgHN7sx6I(k zWN*0{$X)t&;I|TT<5I+Bv}e9ORP1Eyx>4_&?T(#FAg0iFI3G7u6FB)DtVc8^g72ft_=no7kU)40lam6~}2)>qS@d@_%MchE*s<)glAv5&^x zhD6k8Kf<~5Lc8O6{UOWpFG7{qNyCBXptw$Y2{QW74X4V57!wXH76VuIa(_Lsk_~uN zc-$g8Nrs^-tIu^ecwR^FE8r;0%oz1Yr=9Sqd90>9p{RC2JC;#6d@os)bRy1c_Uh{~UU4_{hr4-!XQ zWpdr?yTopm_@<{11Gwiy#Xu^3%q~plGb*3m+au_vH)OYNK%+!Y?x{z`y*&OK%qvGTX6mOIj)eqCyht|!e>y7W7mbg>NfcVU1Y zHT|h%73R%1ciI!gdrpu0JG;zp?t)Fr??P^U--~xl=X*9b=L1h)`%>9GaNwwAc1QeZ zN%TF~<@crhd$67FOEt@|G<8)=Jr(Baay(v zyWv`@T83mZ`5r9DKP|&O`X>(lDV5xfDu=6l?IVj+mCtDF-PjonUv5v0k?ZUuJu5)%K}5HHj2kLr0;dySnL`x&&m zbFL3>Trz3z3cG#c7xijl<5n2k5j8``$PKP2rai0Rtloq>ki1y_JrGx4iQG3OepOGE z+(vHOh>4SRuiajJ?eII% z!@_%}!cL2HCs1936@Jhv6es=&OZ7PJ8H!^(RrEf)OX5!+*YtG8Zpi(1FY&Y6h06PJ zsPc{x>M~o4D)-daWq>%D;|LS z?$y}g%(@4QNMEu$Ch{nA_kTl8nSH2gwVj&Gq5nG|ea+}fRfHMSP0pCab5zAY>Q_8n zuVTpqc4>NBRpZ}a>x0_Gxyyg`0ei%G98+x0e;~ta0K1g)63>^GDEdvp8OZ3f0gs1N z$uxo1Otupu`A(OW1s#WWp{)<%tn3r2*=QFeva0af@oVhjR@`xJ2)aYlPSg`EUtIy$4!WWC+dNDN`)*4xVxo4~31%;`X7)kws%u8l@kdc@92&xMujjHVv% zx991DAN793PP>3*I9}YnfmUX zc=b|duSU2JorGIM-ubXhDh+%D9a*=*o^W1{!qQYdcjj62Mc#o5DzX7zYss{no-Zxe3M+F@IZS(FuON-hbx zk71Q)>#PEqXpXy?4So8gXsss2V|HI!yczL;r=G7w@OIc__lk1;*TT_D>pEiF@WrdX zX015ny%QwYV`^);|7n4b)dpFd?>jgnKuY%;(n5d|vmsJuIUcaD76yP_k{+gltWj zPuPWt?HXzY55}(XHQdR9hUIrZf%ojBX{qUKQG1AS>l|=AK{!3+QOU!+aoJ)IGtN0X zP(EsXGtMklZNVJwpu?YSu_w@`L%uY+bgO+K_1%i&i-TM35$VZL#*GxB5j{k5sPYZ$ zaW8!mGEJ3CM~_SvZ9eSFj&fCWvT5aEUkZLDG5a}RwmkbeNM&2?Y@1itJeu?r7LOdh zfzGDh*EWi2!8zPO;f%oPh1V#2mO#G8%pGk`b=NdXr7?Sa38FbibUvMV*5^xPXRytk zU3;i>2%OR3IbVWo^;P=yDLc<7a_phb+mIi-C}PYItll_BjiFgbe0alc5?<}yhAD6^ z9odF`%dGA2-`?rbKKW3}u2fKk75iB#tHK_=8_lhdXSzCNNm{R|F&)+# z7uCG!D~;r{1h%aQZQKrZaYwL!(-Y^~)9-4H<0j=I?|-TewCc_K~$a?a_7#{E&bxYLiqNUTqH(eQ0ep zqWgTRsm4)UU;36W{iysIO!4C#WANDar;$Ezr}DJDRs4-ApW#!z7m|I{;Tc5U00xS1 z4+Qx_+Gt$4mD8aa-B~r{t=Z&XP(0tj0etv<%~i09t4(rm#R2+0ysRq98U14FEjQEK%9CU z=*Vu|2u%#D&u=fsPO1-GSs%J83@YDa7sXBnbXI-U9=kYp3ZSz_locoDCG*=}JcXu$ zbvAkmpSR~GP6NanZ=QLMje+Owyu|5%Lw#i5AfX}gEO^h1p`(w)ItRTosNe-0EX)jV z@c(1&Yv8P!y8kYLZpCh5rO@Pk<$v=le=L5C@egeGmODL3iG!(iKF!oo_0T%rh3cUzO$BbbMUO0dNU#;x4jGO5b$*+Hp5@2q=^rn1E}mMS!Q+ z*#NFwJTI%?gpYe(YTk5vlbNe=>M^9cEp$cU{XRMOElkm7!AWK5cn|z~{CnzQ)$Eq5!|Y`665rRR8>p$uhAFU!cyxXFB3R&R!XY!rB2M#*WmTvMfL zvpe^HhXR|;Z@ag+=C~y(6yHWhZHq~gxBlaP%5@E#><3YqF>E~6>0eU*4#u`?-I5iH zz5n;$!P$ek7EZfP25oWA)2_E-X*bw5JqnrBLf}r%~Oiz?=U8f6G7MZ~X`S0y*&>&OO{FE8oY~=t5A@W=tu2F3M|-wYQ70 z6=#94S+~_)95WjOD~%7|ncIqE7k4r!kW9axB)5KmyOz7qGS9fuW!(oDG#5+l2e=`+ z+s1YJ5O?(VpaeFVst=-;0+*0BSKj&n3)}e27p|?+@0AlD!VTVM1@8Mn?WrhS?3aPt zaL-r)Q|Y2-T7*lfE)29CG1#?S>%zgYmH0RR=6Ex?2t}|1GNkOwWZyRTMr>|X*0`r@ zB5~Vc*$+tmc8vKCGUk){+ui+LE8Ox%mfq5}(z3`l6*Il247(}Tl+2H?yz`K4r^7yS z&(a>2>W|!OT&vtNyqn&#;!-_c?*ABrd8MrR7%hw4r(FMdo}0=%!*wG)$%PQ7%9yu;m0e+(5(Y$D^fC*eDhOy9Hvw-2l3&<@!4wY5_4nR`y= zv*6&gH8sNj8yVfM_Hy7etYoc|yq)gS9dPBe!JbRWd1I9 zzvNeK_8aVQqtt*vdyNXM(q5O!-R=dhP0-|U_=dh;V!~IA7oMXb-;m0E;B;4>o)moN zOP=6+Q_8+aBc$wc-=V!FEBClZ$7}{yntQAieuoLq+tRcaBgub)wY6AJb-ja``V>7g znEo|ZskJS5xizrwO5v~W+=>-Tl4RXCINkW39Q+28y7$AywciH~ZKVXbYx@zVxMUyZ zupcmSwDw`}*glk^ZIi_PSk11HG5g&MwCz&6AAaj2DL8-*^)ZF?%eL>(+&iS^0P6aQ z)E#gSa(xOP^m}5u^_`B-pydKrjwcA&`D3&1lm!RjHa-{Q2TWRjIEV@77gGKm80?ZN z)J|r82kq<*qrN1nSo2bv}y%|KZf$A)w!o?Kgo_dcd6@exa!tkWSx{8ad&NT z1T9BX9Sis!FbXgMKwtc`R333J>i7#tIMk8kCjd!+vPh2N!r6Cz4UYU7jjR18Wxu$6 z$-hS=ACr~8xHn7AuUHK~ygel;g`eDIzv~a6^8a*5cwDNEy8CD+8<+-_j`TaIPbeIN@J~Av3e(rdjJ{)T`C=qv|NqVZRh}SRF z+6Ey`t_zDk)rpY%uJ2hz6oLh!l0>}>>(;{Kj#8ck={m6v{$LJ1*q~_z!Mqeb zO2fipep5YH>k=$!3aw~o1S?Z@d{wTilyuYm)?m~AJq$M8f_dqBqJ~@M#DUPmFt6TC z>mg<5>Av79FO-HG#EM&w4B&c8d4}%A?!cN1G*}-QlL>;eB#^25TxaW& zRg0r@8#47&+|$-%>SMG*$@f8qelpJom7XJI=R(Wx_@L!;!_14w+-r5!{!-K&S#T%Y zTt9*P*Oe{w(wITeBei>;M77ilwZT%#cC;q}mVN z?Ky}6_0}x?GOdIbHC%)$i6uN%c4=VSX#UgPhFOCu*bX5i_)lgNIr{ldem2>HG!8uJkr~ zTkTRQY@?5HjR6>r6h=~()xeQ|| zC-IhRBW_~Q-(E-OoFpUj_3#02CX*lMSqwQf*Q7EZ);3v;4*EtpUH~iotb_iLHdW?y z)XTLiC8`q)V44Iw>07kv5-8B;X*1+Rfj-)Gl`gZscej*1UC|2jJL}uEnNre4?}NJm zs23Z5F>oO-bV0>uiT@0Jg6nEqMff~8Rb+MUJ!hax%#rf`K#cE-mb`}ADcAl*BVORT zR+l5YP{uFa^!}JQ)39Y!cNp+>4kd2tu74}<^wfLFFRdW|;T|x%n7A{;7)FkR(%FTJztHeH5)f#Od-giboD zH~21;(gEns+j{H0G)#fdM0FRjU*WXhFR1R4kI|^J&qTk!LpGnO_jKK<%OksKDt+|k zuDkS#H-68QVSV5z7E4(leYAGBpws5bVWRGl#Iy8jZ3)ex5O+t3XQMA+(whZqIot=I zWSVxieus9i96cLu;y#(s7k%=6S=3iAPp&|{oCDWV$ty&ETo#;LsAI@oE(iNT#K-zU zi^A(5CbpI5fX#!FcrLoa3ijBFjFn(>I_rB#d_{U*#=}T<+TAL|IjF=*=*MJl40F=- zDueTi^ro6548-(*Re$|L*Q2%`58n>;JaYiIYL8i6s3qpE(B~Y?U7^Z+IXM7+@CoX3 zB+o&ywa@$>bG|bR^>}MKzlO~YU2|r*Bo)Ls1vOBgj+~D8} zF@vo-4|;f3Lg(rE+P@`#Fx<&H#&YHM!TNbxmDCK@cetL@<+%+_@in?3dNXK#=McS* z>xFQyl1{~XFV}iIa%(XNUZg|8BHUFNqP7+5*SKB^rv}HKuQ%6RFY7YyOIXc{p-^{F zYKQ8Zu_n2C7}Wi$G%e9fuJ-h+njars{ zO-HgfSUE~JG)#m!vdCMb;ilgU8+U^*eB%k+x941}UxSG;+`doJbK_Ixor|HqD4Fu7NS;68&9mTX4apbY(RX9HaYP+cEwuNXe1oV=yK7h-TbX5-x$M z?dc6iwEQykq>qWk=lL$vU(48G>n+lwej-(u>v_qaBH3xvpUJ_?VJbVN=~z90X|pww zZTJ$}Ib4XrWfLq>4vd9rzL1hqePqfmWI24HOrg8e>%&(Dpx{mmba~RkMBB$uzhOLkWQa=pr2MvvbyE|NR8-WkM77n) zf(d$I>m&b#>}OV0LTgho(VK`7;%`}VC0)*X%qY0}m5~cptST$Wl1Blk?DiKARX3t7$E|AZsK)sxt$iOL+-qgYgz?muAS_lk`lBx682R zPVFozP_q8?5L6M>%qFLbQD+CI@QTK$D80EJWkgK*Gha4RE7lz_TaXniMRqO#D@q(& zFj>m4jrCbOH7n3ANm7VA>-rCiMWb>nhjFQ4X zlf1#cv-NJ#t=J6|&?3*X;|v*RWo5;+dUHOX(4-PJOe~MQF>DQ>^65760c?a)n}#c_ zq&d?LN#~@ELi`1Lak`C7!!29pp`|hGY=__-e%ieR2qzO7%|e@rS}CWYF*E173_Agw zd03IAcAi!?4HvIT%l2Z(^;L!ifN)-UWUj7vq>;Q~uaeVvNkijhIMfb1*kM;myiWIW zTG`|<*7HenzMZ7lbM2gX_9BKHB^h=DI7KFpX%RgBTOL+(rU3J(SB?{Fzo^WLk>Epqh*ubWYe|~Z5S4}X&5m%K(D7~-OlP66+7Ow3`n@BZ=vH@;S zP#6}jGSj%JsnOWUVH*23L+*n!R2||XJ3hFf?Ym+Vh$O1Llx9>GHVD&;?eKJM-xM24 zPMS+?TKW{#?~Y;fi8LzhGSv6J32|uwrNs7jroMKljFAO9>&edC!e*x2zyv#w3RPZ? zt}IlAs;t2_em1)w2^1q$OJ(VEZ9-*oBPIWO-4{p(`T^{)IV&{ACM9oG={?wyBaKR% zWYY|@!%{m`mK|w0{p@sQ3nLJRE?U-mG>)754u=b&^I>7d6^S#v6+LDoWvFVh&6uK! z!I9mYbblZos4IR7XI7S?G^Na7IB1;OXSa>F^C*i{d6lUsL6o_Z2a8vhYu7T+WW1el zIYLzkLz*&G7za>a_)#sQ>{1n?`rJIwvJiHB#fv=Xo75M0RP%?!KzLroOsYLpjg&cD zk2I#kSgnxl=wwb?^kO%bH2nY!&#^;gG9&D`>U&BHlTp5v;Z{3T+8B$tvkT#U3XB%XX4qJ=h*l2~bHs2mEw_)G2N+mMwkrk#d` z-=S~0H4{3<(C zN(Ung|1UdKLMS{<&9lwG$s1-e=>LdsF#u zvhfS-5b<=2!QD3EQ9FEGs+OjD@g!~4&3Zv#;@)r#XiO~bb~~JEhu0vCto4_>!g&+cdd!M_4{p{?&GtTO71LTvH*@ zfTuqW(<@tf1UMEE$vX%lh7>eJAq+G&+CuXUo&dMzKdy{0ByS{1HY z8ZDNsMz%}swDq`-OuNNSd(lo?h*0I5X{Wtnr?Ky=H2W>ffhJq+#5)~{=h+!+>@+$8 zm9e{>wjH>>0H*Or!HNOB0K8YEW#<4)zz{$jzynAGkQdD{uEq$3+Tx-(cw!+INm``B zs7W{$@H>D`G#$_#kQOXiq;Gb$Og{}xADhN&$hdFZnXYDr^!wGF6P$S$*6T)OAO}mK zF3Bk~BJOju46H>#X1f}E{$B68*;9uF#|wQ!EwyY*wPR#iM^AFKwj$x} z>tLrPSYhqb23dO`Yn~mpwZnFH*xnBF?XZI^zE|Ied;YTf^wPASaErsHBZrQlu$oi$ z-KQ50{t&MpraY_-TacaP72qf*<5ce|#92!fUuegZZ5;DVmFf5E>k~SGJC#-44F8(Q zz034;u4z<_f5&KIUDDh4TVKW(~#yZKv}**q&R8Rd!RhF2%A&XDMHX zbtG&oFT>hz%VoNWCoLLKCE6K|m`%{N5$fbJ>^XLGp!h(L9zOlsJrbRTk}8+$UY8cN z{6;M9uR5BXB;PF8XSFyRmE_1(1Yob=bvA%1#nz}`W0xcyMFe8^v@kf#yBi7ECbiOg zAsxHgOz+*0!yU$)iD!?XmOf1IdpNEV*ifb%eE>{M@jj^MCh+|^{IT4#V6s0OSa+=S zqz12j5PJhLXWOlNj#RaE;aP|k=qeTBU#V|&^>tX4oLmWNO==&8Fq(uANXkP^o6Dw$ z^amv8aqfw&)GwB|9>y|~lWYnqGi4PvnR-e2D&*}YRSfz`%_=N`<16l~^eHi{DBC|l zs!MUKW7i41zGg|K-Vg7@sj0-?prk*kr@C2_=2EjWC0ky5RNo-!YtT?$$zOv-%a?K8NpMvSwrol^E5p3cqRCwmoSVaz7Rp4o8`Rrij)7VW~nXiv}AJtbA7AttIzI3U$XB(I7yy_zt1TdEGhUs(IeGhfzU15G}JCr!yKSYI_| zV>rlrRiBGk<*V2}L`QqoT7vDm0ULm3aKQ#3f!(>0QOSEvuRyTzHLTXcrM+$iTVKcC znJIlXS^3L1={1OzR_jHU!0f97rQ~C@zmj{h7@mN=LhA!WjWT$x2!tFZMKA& zw;6jXrfk`4iS2zGCp;k2+g7Z~3WA}xVG$PFXi2QYP8kT^u{hSgW6>3C!D$%q*kaYP z02#+ zN4HvHkN$wICkH>UvX1`H3buTR4Q*2vZL?y>wpmJFT!Z5upscZk>$x4<8)&rc*k?4w z_Yn@^AofwX2|uz(iay2`u_?iiEo9sd?3?$7r9NU$q zH2uP=_S`S9nQltKE~}a5?Ltv|W$P}i_nTtuwq%=&z+w>Nu!wCRVS^NH{-q_`;xFMz zF)n^(#mc|31sp>}jA| z?boMUWKAuy>I1N--}hsK)|B-JtX`Ra&=R%mpjE}{gE&tD!}!jM?flMC)S&OJYOMU; zGLwQIu(7-67Eq0%C^(2yx>4`E`WdHOhXrjCbqL7P99r`WTx>=soaw;TP;}!@C@1MS}B=>IYrzIJw|t zi@(m;n&5cCNeBHl@faeS{EBUdI4OTD)|>f0E;+p;33aYWD*uwCF;N3Mscf9fH3hAc zJ+~2@@!}J*y=z*gv^l0H<=ld251bRfvk-R@=l^LD=g`kN>Bite1}9y!V{+N!*dSeZ z4AYVJQgaO3SGP*&nBKMb{YM&;&O}_*MX_LY*VZ+rTO!l{z*sn}u44GCPV({}db5Q)Q-5h{T)ehS4} zYgJ@iR8jDNFP2Hv_ZL6PjN>>x_8(b%Trau&$sfbFnz@eL%Yk!BdAm*1(LpmIf@XwG z)5$?|ru00a`_sR`S{qB}FBW8+f{rvQlCskSe;;c6V%Z6ZvlZ2SAzScfEI$(GylWVZ zRYT%bea}O@5OMyT_};)fYf^Ebk(EeHq01u)f9d^WFN7L-12QwJVpd^#aQ0vNCx+`H z!+OW4Tstue6Xj?l9&ZOVmQU3(*Q|0IT9?sw9;%gdz>5)&L&$p~PM28GOMqi-I3veX zD7xYITnZGeK8z}VJl>m3$}vuKFxN2FYB=IoV;aRc&WE6<9PVny2gk-3ZKH6qZ&ADv ziY-MRO5IYEyT8RDmUSMZn^qd!=P?Y;RSM}_rnZ!XR+upzPry{`_OEbTGOcAQ4&fvk zt#BG}PNJ~}fiKA@aE&u0tF?J6luGfHvJuQJWxQ$N*d#>kjiV0Bbywb}*Q3%!|S)v+}=O-r$f-W2&az7hLZ%qO{mKwp_#FgKso9 zX6iDkz0q8T>e5YM2g{_Uv+T37N8)LWTx(>HY-L*{D^-$9L z$vBbU)_6+OCQEfYL*$)7$mRMdA=N|MW9w6*$-(mW#ym}%7gkW44#sVGz-Da+VlF-+9#l06I#!BF9!xucz zm)&5mCKneP17!nacysAFMuA-0&$tdpptlwpd=&&x)3v?9#pf7{G#TMaO|>K%fCB0z zlDa;yoW7fIShmvwGZo)@b6JT#>2nq;l>T8Fj*Kn9yW=ut@fpduD^17vyXq_>Y1yWx zIF$E&LXu>*iSHouU8#6bYlEJ?Y$is;Rkz~xRJ%5CirE^Rf4CT4ywg!+m|un!n%IpP zdRzX6=zJqL`956omknSW+Gwse^4Ea&4>j_& zHBvkjPUAK?Hq^-NehKz^Nz?&=*0W$La4OEUyCUKbNy#uHH}f+)EB%%tr-AN2Dt8Yv z+N528t!Q+m`ZTh?OtuU&s_>r6xg|z^U@a(=%dd`@IaF{0f*i_sUlNhtJ0gBGVy5wJ zM0^wCyw6np?mH0*G;;d4Mr0_9i1&|(w~C1W7BPEy1aarAiq)TO<0wc9kA0|(1L`e1 zfJIZ@!`<)1kxu| zBxZYI-{lt=`R(>$n#C62Afz-$!cD-FLAVlFv6X^HlYLikUEq8iSfDI90FrPjz_0*7 z*_i!qn=SFGZmj+-4t#6GncfAU@{O0$5k}YEsdf^5kRoB&6`-m^QMyAE1obMx3ztS1 zJze>KNav5^(|aeQG*(P$>@TcgI^*9X9;xZJU}NEQjsRvZ?D`HcrWZ z3*t<7F4Im1&Z&_L5LfAxr7z-Y0>*ed#Fd#ao{Bh}`KWqXH6Ykh>K=kbKcPazQ9yf21Wja9Tr8mrje>Tw?CfWNjM=)`A&r6YQFfRpr7kT`j=u_r-l-ryz9QiP z(|XZ6iIQY@ypbm}T{zI*X=y5kjAf}fyL%Dd=ijxW?oNM2`d!Ur`P`@^SzZ>Egf+QP zbC);!0-H6L!pLQ?9bRsS!NQMZM5>-4rIgZvBZOy`DG>=@g1iiLnlBS zfEK|gn2Qjyds6#qvCc}9&}dAdo)7vjHp(>5BCup@hm-0Snt2&55v7yiEcA{>C6-Oa z9Btqjqpf6KYFubNKivmJEQS-_J24M4a$B(ULK{uV&IGW%!$nks#B&$eHlXS*HN4hS z*La^^N~$-R{3bNY)OC!psP$rGVuQ2sX-6cZjCTW10}k`A9b=4?l(9zY02aVm4ATgt zEeEZda8S;vz_kK!DU!CwYTOH&dQD2;224s;9mO=^<;#oy>L33Y4-XgyskIFFs;u(JTGyjMt*AnowHsKAkO>`Hp&mP@t(szPAOQu ze1Ih#4(}?78PZZnLnBZUla`{T%KB2HFtEZdktEdQN;}R9G5c)*{*>k)veT93A4Z(6 zh6YLHI9q8|1Z^eatj!~K9&`-dR>|CPxVwB5_=cXgdYn;s!D<|(rPBHWSkqhp#eB?3 zimJ0=X+RWn0)Xb`0+4n!XdBvxeWW*)MTw~l{_y6Cdc{#ul!8r5X&*=ShPLzXHvARy z3-KuW6~=ijFnU@|9vg`25W6O88F*CCO{ zgQ-`DE{uAhz!*2J7N!_gpkZB2K-i}1CKwYkoZghJ(BOQgPc-HYaCWjONM<9|OAaxM z5NBzagIZ3LW=a>u5}&iBIwJX#I3!rU!zz%zgSl8>JvW&Lsx<2U)TF9O7#ZfTb;a{> zVQWBRb+I-UlFS>7=7XO{QBK{zfH*~1kFdT*wpLpK&u&6R(AHiAO@k1$wTf-qu!J!Q z9`_}rHME_7veBpY%Rte^v*vXF6qZE=8<7Sk8*@Fc0M%e51>JB{*>VaNE?$+wDTdFr z0eAVw)6%n@f^S3?a(fLSTQA&F6;q5-&+Co2g{Bx2Jez>3ubyD|EE-x3l#}5bHc5Xl z8wF5K;mruTw-9H+n-Mn193soNBS`;)I7^LW`A!7g7R1T&U4#uR%ddoH-UF(kdQGPp zxxL>9s(x^DG!-ohNtUyuZIk0xAR3ybY??9J^FbpN+_gWA6r}#}l%x!- zMJozt%%5p=_3Qwu!P`uqX$0_y#G#pnuN^hU{FHnYK(*y3$l+}BPo<#D@VEOc0=*M) zR`_#-jXl9!kpH(rzKGzq%PK?$&Nfo57XW{C3fJ6Ou-ZL9*Eg$_&q6`ERLw#?Ya6B1 z%`&_#I74OSSba*m7bFb|%e~qt$>0#6lD}@0y!dLY_cfI@R~z|fe}fciM9sPO*>R<@ zZ|yj}2@Befc!NDA&Ng}`AFxTHkW4pmP)5%-@{_-dKz}b4voY&`tU4w&o5K*TfSkzn z2hcViUg~BWUe6(*8#^3M0I?f1$LN5=7=?r2>sHJ$lCml7KmhsDW0B{N$lTE7x6Z-3 z%}-8#>^V~XYEy4(<~kjR!;Lstv;2gqaq+#MgEwU!b~xqO{)tCjBOcZ?b=NgUbI%c{ zC=&HABj59LBhs=9;&Zu+by@N+z}NR-OKQJpzGSNUXd^Di{sm9>Ya=d|*BZVSR3VLp z&X}6{Es`V`L(b-FVQIf3g;e2A7B$xxgQt^9=fdD}qD18n| zC@Vu2>&(K2c@0w@+9_#hoV=z;$51d0puV26`Z}ZZY>qr?ko*HAWJerBb?3o0CW}99 z77gB|@Oo69J6|RPQ%HQ(py}hE-Hu+jORLZsm8y znDWRCMtc|5aIHGVfuvC#@k*wfjNzVmXYsQ8Cfp@#y2(iLcp~wBPXbVlYU=OeT(-lv zhOM=e0k+`z2>B}qz8gZUQ-+#L>3lf$L~wHIBMEV(kK{%LW0sH`e1E>t!IhkXgvPdL z++q|YH?`3X_BH4hqcl0yMmN+sNb0mxsE+~dNe8;Yl)Bz(O!s(!YVcE*mwD$_c!*}e zH)x^mRv1eLQ1#6t(-**4G8>^*6Xk1!+Pwgi@a8}@bgin4Brjfi;=c{U0N(w{z#k5> ztiY4qh=V=ROOkhPGqOB6jaXr#moLN8?Pv3IrC=e$PqhYaZ~bxb{eI&=zaa9aI*_{Qr`* z!zo#1-IYeH+3xVkGp*h($)Kr=Ssj&LX44(;29S3e+sZ-qf@^ zvB@y|4s1}}dZ&>k&)^ELZCQK=ZmL+fZngkpaeXg<^&q}`14)m6AnDma((4~cdXohG za*WYRR!zo6%Ci?~Le6^K@_T4re2Bp4hvb^O44;RN*^$imN%lPz zRd_0@-zg}(DrWIwusjzj4JKN7f1Fp|Uu<-fyY9hG7FH1M#@%3l&@?#9!n?5@Hb4S* z!{!Gz${hr;Eh=7%YOz1B5kcT~tl0Iv2dy<2ct=g{0k0vANbB#3H{Ap4FK(1}=pLge z`Fx=0E*kto;S!9)L!FetswD>Azw^9Qm!q@c8<6FefKm4vgIWv&VO!*9k5Kkm0vrbk z9Q(YN_jC6eZDWQzafLA#)JKoqYZSOgAQ~@K2Q+W;NL;qH8FG?vp^UuG$aP-?bf%P^ zmFTNj!u`7YjJG|bm&B!+*fQIWhIM?N|r7c0Zxe%ZX#7*nxL%(K}Em_%K%n;rsbE38jk4~Y3C6!Kw* zs|(<1z3G zJ=Vn60J`Chd?*_X`K8bb{res>yi|TbaF}7g#65rw`-M{TfRXEJ=91xi z@iLr*2Mv>v&JSXrx6^}0v({W^r?ztdtiT`ug&YN-wrPiBWXgk>_AHde4;uMr>_lCi zK+9zA^8pH9?zrBp$?#6e>2mTx<1D-ku+Iu(jcb`!arZaawO?U02V37tSouQfvl8>( zg(54BLD@r52~quOG^N~1(u7(7u4PlV{o=oom!M-8*J#Tn$3n&!*e z4glN^;I9?HCAIxy@#Wk{jm{Y?o()CS({hx9SQy;=C>Fx;j--N{;(V>SkwFCv2TTDV zmjwvwm02oXR~vl>)20di0i5ZRJ1fU)N~B6+ni%=(3*8!3zJTK!dMh@ zIog8sd!_OTqX>!no-lZ@vgebS77juJ9{uvt|T>hkSqYH#p(~@%W z%^{cBqMizb)F1V&LcFlzX~Wx_#=y#{kd@@kr&0_HV=d_uSrZi|OXbs;noNE#5${FY zhttV>o;H$Dg}SGWo^DEJR8-IL$urLy@o7qES`ih^_R?g+Ge%*|UQkj=IpX^_P8#ib z29tq>;$Lf2BB)+#^>73@k@>9gNejj3V&qWFCg7U&v~uAvd>&qTiW4!P<3LNrIvl3L zA^CNNw;e52-Bhy?sR}kc@pMA0FWKNEOBI#~h*ma|Bh^(#jrD>K7RK({4lq&5?oPs< z#9PU!GWJ;<##!}uvT1#~l1{OS6m;Yn=WAn=bTYd;Bu5UwDeamai?`xDZ=4^lCO!qC zUc6$xY6V9Oc?CCtfh-#f+^t*}!^q|NT<49xFAa3d>62hsOmB zyqbR6TAcCi^rA5JB#!3W2A1)xkc;(P#9gDFs1YdnC_<4q4t@S#|Ij_4%r zmwUY16o;Ym(GS{GCMLCGk5<4U_@lC>0u(bAus z3DI)$7dz0v4lOIOmZdEHXc^=Xd?Q+Co9UNfRa|Vn8g^(`vPeD{Ivy8ffE3V4wwI{YbPJ}E2@*f zPjQEjc*Vj;GvxL(E$PZT!iai;e<4mc&kPjm62#f1RJ;gr3a{c_BJ#&a#9y&@>Mj)j zhw(nwnv*gvXte2ZJJ6J?1AxWw_bFz93>E9Hpm7#`{BKE$Gtwoc)@;^h7Y>8>0P%R3 zCc_B`DL3th3}`#gA;T+1%N(x6tAeQ9?;;Ai|8E%%y1-2EBoEr5;?ds5kuRH;Gdb3u zA!j$FBhPyiIjenMa7 zy!uM7Bkgf})=pY#5QoI-kE~FLQ~*PjhlTN+7;n6ZkF!Hn38uHVc{CIMUVK<@?Bz*G zDXoE50&`?b{!{w>?ZR2V?l^<;`>md4-P_p|R0FGeKdNM4g4`Z(58z1vrR48tTwCgp z&`Fms`guevIxTC4DMO!KiT;Wu)01K-93iu!d^&ts8@%!PS_q=Gt5}5ujXH*CbV8HeO*OiAX5 z|8*R`t&g49gnOIxO~xaQP@J6G@8zB zri{2QuE)9FHd>`A8Ky!Gnug_cc^23!L*6zzBmca&jXtLY1^+ST1?W)uQ&m(|rUqz& ztTwyGB&fz2pNu$7T%}JzoMo%{RK#iODt;y6G+z~;hB&M!P>+}n1X~P2J#L1LV<%S` zud;D80EL@r<5VRmaG8yB3O&olH3$xqy4prMrJrr%oHdve-0=<V;4|Md zQva{xXeRG_#`OQj7G(S0Gl~M1G!9i znllH0*Ca5}@LDgHB#9=9q`54gq@_xZhUawFZN(AtAF?q0+_T-7fjg_>j|@BlEP)|W zJ~_StQ}{DJHkw~V&%v^&3U(gKpeD`qsv3YjZ2*A1bu@ruDqRZ)0sfeW)gv8${Uz>K z93}hg-T0(-%tIkbPn9@Lof9%@njLhY)bvmE4pt~;BU`d$sIubHx^0I-Ep12QDKc3$ zmC|g}3tiMb?(z1vv;-`D7b{8^#S&;|tl)A?RfwaTVPj+gtT9aL@Q_D$MLq~<)|qiO zH{&EzSsCY~lW`B8tTghi4dkhaUT>p0=Jo@)#Q$_+t_;a>#aGO~)3m-w#=3B-%pzC^ zT2+D+6l&fJc$39s=ggTBDAhReV}bt(&=$bTF|U%0l^zASQ>tFUTE&v7vAtxzH^$Uv zOX0^JU&b(`O#`IcbZm8A;{}e-VemStFn~~cU>LuU`3&XI$;5PTI;6qa(jl+tYYjc)6L3%T2ayuOYyNOsnX*Uqgh8* zC<8#f(*m3(&dO65R*qdWSyq2y^l?+RBs|h$6k6YNbLJoya%2vxQ%G4MI(o{lX{qNh z&L&|q{I^a)TcxyK0C|#MrW8IC>>)SE^m}mH`I~2OdpBfc(H=!WjF zCxngLZ7ockz+R4rt;Sxj#a~3N(TS0}YU*83Hrt3M&#Ds0G8aHKS;Zpk2jH(QfW^}C z=b)XVq;hSdKf`HdY=8*>vchUTmQbvBbSX|@(kQF$CP-+;{Hb=PAri+DRNrEWk$p?K z-*b@0+AtsaQJ;6?q6b2X(hv76f49|QT2me>J{!OUS}-%vfLH(p%#;#1lMIrwJmt#DCEACXZn{ev~eZ4wT2_ zxoPAcsdc6Kv-5Gur~+CvwZVeJIm!x5Z$}DxN|N2znKcK%3JeCMOW{&@xRa0L{%hT$ zG}C&2u3h>8)0;*gVO18i{DqSWKgWz_p#(lRd@;(4;0+Q_y8M!PK#OmEC;T?Gpla#V zNIT$Jb4|*Nu$?*n2fTNDNE%+kd;Dc1DR~@nve8*p4X{tD$E11(JZRs&NA{u%a6>!; zWXM$?(xC2v!LTX#t2YuE^aY+OTq5(nFnkGoV4EqVF6ZVMK8ZCnH9n0`Lot^Upc?U5 zsapvD`^y(bs&pEcY~s!TiMzlGZ+Iz5?IO=j#y3uG*kz<<&SRZA{Qa*6cP`TCX?32U|W%W5V<=AyF@> z{1SVNeD6t$)b))jkdqzIvM0a9=4~&D`^xYqF9lcjLAD9|;Id$!uZ-3FGC}PgJOF{$ zQr8+iW5uTGoohciTWeg`f>Q+A5u1;_lGS4)QT|dX+G|wc(?UD<8e25$^(vjE?$uO$ z_xl?xY12cnFEA_HH=JenH`wWPCedKRNpbt|AZV$q*=Njiv)nW(n`jovv~P`HfiB%| zR9LI#E~#sZsdT~t;|NyrLkEmQ$qztu@+qq4mG~|CY07uTQ?^*u-{En<2j$Rr#vqS! z9V}Io!tZfUT`G&e$5Wa6rRfhw2wa;UGUg^br$?5A!Ig)MLwMj>lUZ}(GTYI4%mq9J z_!JNg#k2>YB_gER`jfFU`4o>Sg(Ks=lQ=?9tI7v(AtDuVs*PzZnYeU>xd8ejKY)W3 z(3WbMmsUkTMOQ$)$_Ih4H){ zSK}0p)=oNQ#-|gGX%vFOTEa=~193hXdjta>1(3scCB(}Qb+FM=OAV561P2QzN}nUf zlz-3^Nm|L_BiKWkD4`>G#AQewu1jT1ov|n*a!hJ4h3P*Vn=_~}3PQ(BqvVhAX;ODh zlD7rxN}tyTz+OUS4**b!lco3<_`b=q_!q3CgfpANBc6qU#h_+nU+c|oB_xO zV2hs2H8Fm}YSgOVuu`7zo000u56PEb#^7UazoGr6eHat(QBwk1Tb#`K4O^Lb@y(xx z*QyguM%9TDQ8E^LFX~HG!ydng_O|16l4vywGYhBG%4(s+i~ZEx1|37tKqC0 z>%+DnPFVo?<^tFr%DmdrHrX4d0GL5p(i)l(ek^bXpi!EvK4BDOu)Wz8C=1Kji!4@W zle!`3I-k9tnly=CfBw&uS-``xlpOW%FM~NyinCidLnh`pOmV5{z?zEe0?% zbHX+LjrAke)sT{xumW@Y-$sXI#;HUqi^KU!+59(NJCP=XP8w6vICiivlLGG!u{zjZ z*^H!^hfp?KD^t3L@Fs~kZq>Pb)+a4nX0cG^Js5TckWUl|wKY*B zv3Mb5BU}lfcG;_#t%*#>I|?s2hnM)VarwCDCjgSrAJe-*A}bpwsg^H6$ZOIwP6O!& z;4kcJiuaj5>vKd8OMVC*_I!Ns3P;M8gp5`(tH6$K9N*>Mfe#wSK7?mrCx4lo6vLu= z04n7~$e3%r3NJybF7o)6-EVf*)-2m>7M`NkM}kc?)29u^V11|#56bVdg2B3DPN^P&$Jh|Z=tgfZ^#`bonUz1G_IkC-I$!Mu|ncj0A1y?qG zq*;&|e0bO_9L}80K((_#3Y8$?L$fS4-29KplxQ>8L!p>L?R#*R#>|rq+wgviQLz}A4@8?; z_{x>xHhbbLS9o3Adb{ZhA58GIpg!54gY1x6P|eZAYL2s?_=n~=3#2-L?ak)m*ui)< zfOQD>-UT{Vuhz(V-5iAAgbr&$`xs`QG}f0*N4kbVapN^{zKbXYS*W&Q#n?7ZGbApu zH>vp`)vsEQAyrr;C0Kp#@+4}*22|S4!ZoF)4%vci33g8Elh?QhHK5P8qRmz^GZy!} zXPRa|)TAKB^vep<9G*rW%b(RY2r1}c37M$(QzYAhkAod!@QhT)B3LVn;><%PbJZ)s3;8v$H^x<^0O#dDf)TA(e1n|RkBh* zWR`y;3u{h1k6KPe*a|>1V6Ev&*MWvbQv?=G5m;Om@Z@Xdm0A?n`Z=If6DoG>>g)zo zC`l(veuC+5LFQj*b^nUnVFYe z1{6nVo^i=V$W|Ezhyt+YFU$01=-DExo0&x!tSgmICTjj*6)vG>W`6Qips7k)4WUrV zDpLH?{)^Ojk22rBz#CGQVdkQW6&Yqh_FfcC$+7?pQ4ys8Zw zOS85?>U<{Nn~6_$!hzuaqd7)CT6u!df64pXqMBRVInjOX%>6V0sV!5DS#U!(GPP((<22zPrq5*j+&**VO3ahDq*S( zT)Avz{XX#%r7p`X)mBMKwz)_vke%7) zJWm_&>;gCwfcbxpIo)bORUEC!AlfItsp{caVxC!xqU!R@G8jl{ zTeG;M@_@`pMr?j%@~|DtZdE){LJweB;&5BDKeBgiXBMK<;9Odhe++g_FE2fWlA!x+CR!80Tn9R%}%2BBr9epT7mgc4}fQ;tHZAFe%ZCrx_wP zzdBnQYR3*i;KmkZ0)GowTUt*JAS~PT_Dyl-tsN|JMO#b(uYK6S)uhe~raxqvflY8=$kBy^Qj7bT^Cr`zlaP_-zMst01dF}v)$nT0a_ z3^O0cVdM-Gk9I5!uIY;CDR<$eg5|n=N$76Afv#249n+6FB0b>S=g7t$$gw7Pu!p%- zL*n{gm^1H}gT1WLthBdTfnI*Jw^@Y#*Yiv>pDzxa6@^1fJoPC{&NSoGHltlwC0fo@ z0INA!s?Ibk(%$~3q+&_vW5%yp*T;0homZW0O$(2mZLZY*Llx)6C_PRNZtiR1)#>4* z`*O0M+28e!$qz^7$mDb2GBFsOV^&hE;dOX1;ro-5;;oO+Z?TBl)XRw%{NUYrIN)1( zEicfESq~S%^{kP&{^kS(W&N!wYh`~+wu1~NOThpuHg|xz79JSz&T!Ek7Os8rwi=0WFzZOftN9~daT!^~ng=Q&MqcN>EN zc(|Dw`CGD07FKxsvc%G?uf6nYRJ4pag>Nm0*ck62YT6U%(fU zx7zidDgDOBwn1x_USN9dwcvRdzy?Z#l^2*%+9?a%oC>f%vOP%;`D9w0q;xM#TNI)7n`|fJ30M-bC*LGV>H?-`IneItpx|S#I5v< zmQ9zK!?h12@lw;DY`t0?#TEf5`d%r#6q(lGxS2Tx4}~AR)Ete;Sm7A6_kwcE|$>c%}Mf zW-0_&dzqQnn_h$3rFit^oP;qmwaUz7s^<0#l~3F&zROMDvJFk+lP?CE4k#Z$f1WCR zE;s$%Kew&3FHpQwpr4uupwAi#;5c$Ape=wBgq0Jx+$?FWP-zMc(;*23VJJLQ1_xj+0vF5if z&L3|6F*;Mm{+?jU;VaAzuzufoOpZ7fH>*gzAI2|>$D6&a1*7$=@ZR^n(JdsSn$S2_Y_d3OWEYG2bpYH=Elip zpEGEg{84W+09ONO0o0Q-jkq3w9o(F2DFdg#$CL(FPC=hXSThwx5B|iohf~mz7bj`| z#LH?2_Er3-aK=XfngL=Z^jDe}U-Ay^PRkFh$I1ttFK_7Bsx$!hvd3&Zar6u{N|kmc z(r8DNfNAQ^nIkvjv_FQdHSGn@**sEr`M(>wV+*pjdQTX#{o!7g>M1QBLyd2-qyK@GMUbU?3m1KBX@^) zKAF~3s&9cpqATiha$S>;%ig6pD!qJ$nbht=G6DrF!b-9L{ssf@jQ5kk4Aa}Ydjz@z z;%anvl1IJ+vYFH{dkn}quT#}Hfz!a05AAN%fs!!JMr6n(W`^x0;EM9<)KcP~lC?TE z^8y#LIyG_}YbeybV*L@~Yz<1M)IxK)!l9O~Ha+p!gT2bk9oEri!%`J{CVz|<5)$W> ze!czDLd71*O}+yA2?%NGpN99LJI%x>-MXS~xN&GmHQ*1N+_cr@>8^x>=^T-B2Xa7MX<=Rb_Mp-l-fz3a-XtQ7s$B3;=My9{}Cw8LTHu)XzdNoJrcc?Hi9)9{t|Q_NWS z{ZeK0%6I!pfF0wc^<=y0LqC_r(z4I1bNeb2|sOA;YI-G6z)g+z4?j{ zNSk~DKBVVwC(>hk1NpU*Vy5;Qav}y zFFh(!Qv)oVmPKRH_uyS{_yXhafU#ePLTdrlfbwrbp-c9KLeBus#0MlF1Z)NT4d6JS z;PKU;uxVnO+1uyO=6G9dT7C&`o~DCtX!*aehfU z<~s=dl?YR0-@nYJ?WsW4jdNy2@`?R5SjCR@ef0;)y4E~1=|%_L3eZ)otL)X189Chc zw9916G85sUZ{>|^%^q_2l|(Z@LINxOK0XJl1iaS9Q$Qc^aR@2ZDhK{$`%|me*=aX8 z(#~_Fkv|Jgv2pWl`kT>J?rEJEV+p~I^EWm#Sx8%(AYg|J>~NtS3PLiaa~p*`6k6FG z1@3S2X@_g_n_!14?eJlQ%ujE6@<1rTDzv?whzA9)!?8W4J%kT1Fh6M-PO`&0>~OIi zJ|tx?#(D!(cspcKqOi^%;d2tsI6vh|izG{?KZ-b=yo%q6xYLNPMx2gWrH@9OqBxE8 ztT3)qlS(8^wSh!!06C6$9dY&DPnA z9=P?^!ZHFwI zbTjObj)C#@cKDJV&bGs;vgKo!KZae4WN%kgo$Zf#){Z?VWwUV1>g5}-;yr8vUhdLE zQk%)kv!a^G4>y?iwxhtzb&nmE+u`GO_?#U+RI#;{KjtAj_Lzj=Jlox8M}v0wjvc;h zhwt0r7V+I^`p#IvMstU5e=4Ca!SDt*Ex_u#bpVfqR)dLmp*bdYCv1)D$eq%|FR)m# z&`kAw4kYcGbod_R2Dd-$3|#gAe1W8d`Xs!wxxljvC|bEq-6y$S_?YIUx0}s8yOGE) z5l+O>%zV$6r?BY$m6HW(HWfKq0eI_%Brliazn0DvP55CMnJ`LAd09Kg40RW|pnYgA1q)~357AMM7IwsXq++AHi)ECibs(Vm< zl@FPcwbZKe>Zxv4Ie0g!#j;u3A0_S%>~SaDWA=*SLJ)C3;jtdzX5ND(rx|QVyt?2X z^Q`2KazPC`099}`y&U0V4U z4gDE;ohHEcpsBF=`J<_@RL+hme{=B0XxWV3PE_*X(+> zGTmSQCl27k8vPb2m7GBP$4o|&WuH>B#LRX5USB|9soU#e-&IP&qVj#9IA%A_B=O(q z_6D33Qxq?R^!P0HkH}(y%LVX9MUZeF#SAEcZ+ikR&#=rSBA<(f{H z%{V1n&0Kd+IlkPCPbPg9fW`1P023#-_q3&(r?6q^GUR%9{AuZ9PNBC3i2ujf*T7X- zWdD0F0{400Oa3Jwt2 zGO-TtVJ;7h3ReicIu1!G5BDTmD0N!7WcFacQ{cfOvD;O0;sK8@Y68$sNgYx>ed(xn zrDLuS&&6x*qKDxpFBirn?aFXln$~){#Kp8jXNykT_}F%+4cCVkowf;ar$fz^<$n&h z<2wCeo=2{I(9=1k3=O5e7652?B>*aYyb*Buknn?^T6cmG7?UoSnGa#tLb=pEPMx8N?#Ygc&^B<&H;fW+xYq`_7J zTmT|XlbBmzIxCSsun6(s3NAvNJ(&In6_m=6N8lT;kcL~ry>S`9B6U3=luG`i*j&Vs zKOI0*q2uk=4z1=<&yaR#neEUHKI$nLLGMqNx;rcd`z#Lm=>X0GSW}O7BxbIIF5ye>{J|QJaq!G!k%kcHKCwl~)3&oKQtWZ})g-r)&ar6aFaQ~D@$>W~f z3|a)ybpP~ghqm!?NbO?T`#8*N3NTq=e_+w_w6iafnDw6A(>h6?2o%j6XerGaf*-*i=ORAQV4ibFczWVcH36NF#C2`ZI7z z69eXEgQpYe3hI47jC zb5S@Qpes99ayNN~$gX<4`_7YmKaO-5A5hE*RLmYSYP%;wu6Wkd%N&Vfth>-rQPlM; zHuq9(DkyRnKA2y%5y|kNxAN@l6OXVvA>R+(pO>wvcfF3z@wI z7J|#wX(2-P*!&UG?ML!^{14Sr9~ z2rhoH+@FvgYFo6R#541Z=BNIcj4d zsv;}Xq~4Dv^m!TE_hv7_v3oZ>f%`UL2hnl^(t2>bAl~Jm6|6qAO&S8(#dW6*Fr^W# z?ie4z&j^n-wKU2d0gn(&|8S(~E7%}-Knh>MByu{)2HVbvz%x;2P}Ry$OJq%K6|mJv zaAmt<$^*N%!p&)pXM}Prbq4kkt?h)5pl81YDV{~m&cfy57`OU?Fq=6Og@V<4nAC6e zl*L^YQr|G~y$bHHZkHVMM7Vb#US741W5Yo-l>1rjiYe|lJs2JvSJ5u7@xk!%vbHwd z#73gh6clICB zov_W*H--L%Cd!e4CaVQpX~>*a`0{j^Y}^KKJW3k3;go9Tfdc!GPbqglh+jCLo>VfNcL zg?kL$t=CE2R%qV**U{}GrRH@{k-?Qg_W1Qu_PVE7hQHytFzNIkz z$w&lVHvpx_xz)U2Jj4eE{N=*Gc{-2ig*fTn=rlm9F%3=|j0e9-=cYfVldS2?52eG| zR!%ZImenjkcCfY)Y^RTaTLT$Q-Lu{cV z`5Za19ZOD*IajqSj_2lF*>?vzr00iLf^2)v>_IcS`*w@-$ z7Qf{wQj=S@`Zk~jw>q0<+FRa#Gd@C6-u4WQTO2|wo2%Y9y=OHv=e+gd>82L%?M^$g z#kwOrbzlOB>mKWi-=U^k-Ht9zH{)GcJfDGd$KKHnO=)kR4OnbB9oZ%A@Rdh+dk3Zv zcecxmc`!UX?yh#ps>s5};6#?T%PadkEVQrW)Iy*%d@}>wQj*IY+s_X8ltD;xe9E>b z!uzIB>w|4y>(XBx+s{_EpTS~mKk8MAeRn$s>i^*>IBnCHpAI!u2EBv1hho^9Og?LX z7VK7NzK&ZN6mToAyyF?{UeVf}r^a$D&A)|}&I?6J3W16%1+ED-`VN8 zP@PQAO71}=!D`h*s;arb@UCZQvKRTpSs8+pDRu997N}dTnO!S2@50kOw+oka>mv6` z%`UjV4D~?g>O~fO;q)b$vim)JRFlc|1fPujON6b?f6@sHB-UD#@SAM49^i8LaRr#6S5(U zDccAy2`YUh`U9}=pm;w3*^o+U7p(LlS&Uqis(%i0ZTi5|#aOH5DP`}ua5Tq`^di65^>DZ3*ol=F(+l$CAP=?cpwtNde*DogIpV= z@t+{@gbLhGLh)Y+?nR5n3M8zp}aUIZOpf|EsOzlde9r)7VWr@;M; zA+Ns}o&uJUUl>)77PC7!N#Bg8kZ>=qpQzvC$?5kjax9(W3cO~d#dQR*p3TAe67y1c zPQT}ZlTK4)OK^Um$n(KTrz!G6aDJf3i@`~!DdG>#4-|PRIO#M+UJlL=6nP~$=`=;Q z2ImKgyc(Qznj)_S=S$58W~Q8cIlOPwHl)+M0)0@%+fo|ZCcP4#7xg-l=yU>DEgySQ zquxLg2Z%sY<0~lmx3&dIYkT{oH`^z@)h4NOD{Ohf#W-o4+V?i{PAN&tUc8sy(I$x( z`kg}mdz(Ck{*N|EK=;WzpLn{*y@Pc9@ZmJ<6Ff5RL~^U{NzSKG)OXuZ;4QGS_ES&a zsP~Y5N-TRm#s2WWOX@yckIaqZq|NCB$2s(fg0KCh`#hGrDhF{6vF~D2PdIicbp;~jvm*7-@g&m030Nw&TfDMo@0dB))OK#}& zV1sEL;Ay}o*!6l6kd9rsLjeo_+mhDO6FYzN01sj_@w0&U0AB;_6D=);(sIC)JthhK zu??KKa+IMre*U+>#upkq^EhMGd5<8E?PZ+pz4teHKQ}R@(**n`ja`t|B!oXz%ERe) z3U0%;JNw`Hj|U%_R7=q-ID+}xFFfbqckY+?ng&Pl;{Y&O`6Xtm)w1DBe4SG*kzZko zRV_JR<1_j5zQR|MIB)BJp2!8i_?7xl=FnGgU5aKF3)SG1#w!kb9*%2*M`jmte5Vpr zOH8SmD*eCq{06-2Z#=#~IPR($t17;MzXjbx*u}$8X{0rRS zdEeqo5!`0+t>UEdTV0Tsh7=rvC&y95hdkTk+7~bS4l7vIQu!SetXj5w=b77zq;0oa zhJ5cSJx%hu@A0{UCfSM&4%sE$q%i}^-083Gn1MhJX^tG;g6mL2zLC4kB~^lz|BnftaH#$o|}mjB{OZiD)~h^MDCkM($KXI~4{Oq}fc)PJFJGjOC0zVLQb_VBqla%uUmp1&d? z^*F}9YAHFcdTZWs)ur{vJ%wpn{_!A6)1VpXDRLubYWO%LLp38vbLInQ3IIuJ%zIyo zPGC^SH(w__c^TAOPOCB;EV9dqfo^n@>^_0|oBY;qf$!upPb!gCom9-#ox}!=YT0^H zQEWVJc>Tvu;sY{Q^{OhP%=N*l{RUMn(`CSF{3R}oP$v9uQZK#7uvVjGWNT$q;Qa;tWb;V;tHxLrOatJ3%}v z-q`MP&F~*eFml}Pk1!F!MGw+H7pGLr8DK=nd0yix)y6?i`zAXff`B{mH+qd_;UHDo z)u?dE(Rj17e_xt$u}irX+9P|g)h?wl-B<%Q>K|v*{VnOnUVh{l@Q(Y4%wMt(Bo&K7fN zf)>x#QQ=4UKObrcOE1WSK~?+r=NW$Lo{TW|BA7eU5Cm4fF%OxG^AUrdrj9mJ+v!*# z$nh`W`-(>!3sA5Tm?hDPKs8Do@Eg|`$KGs$6~^Zn?29Q9J|KXjh4ge=TG zUvaeOe4`>FgYHVJCP(yJ0o3e%fPm$e7aRP(xP}2rZ=GZ;Q06uihjQZR%(Yjdvld_N``oA98% zKc=TY%to!pavLZ3lj4dQQ4b8=Pd^wF zaD`$hrrhuuRKb8m5hW@zgH!9ujWWeGb(ZSKUS@#}5Ml#qYWNsb(;3x#N+d~R`CE+2dATn8)VIuMup;nRzwV91~5`*puKzir8A6XsIU~y zQf-?%%h;m|aH7+;Kv{)SxnmVnK>zM*sPZ^te>VI)dUdw3ED&I_RB4Q5H&z-}N2QH< zpv6fO|Hw#dbNr2Sp@t}T=sKlUS4;B^(6kv6Qyrb^Updcsm1#vc8C6j6#+w3) zs{()Id{hgKtzBU3@ce<2RNk(JAYV0TwtCBkYItj?j2EytE9)!29^ z1Ap0F&=*BkOI=Ulp>#`)VxSyZY81E?p?D5VUYU3|TQ71q)yco-Zg7pLnxM|EF=Fu> zGfJvo?g}GQi3c61M6E|~7vh0Fn!7^rd}4)>rMRG?P>`oEhTLOtx>s_K8t`iFF&2br z!S!5aoFCSe$Gva{PS3{*IPv6Ppn{tFDNX;z`_YLIW6^4(%KQT{VzeoeL5~}1TBe2^ zsrkxC^?&xb@dOoU8J_ah#88WhJq_>X)P&K-CuzkVPwkmM;Kk2V#j5wPzT}uTN<~* zO6SV{Mm!h1b7hR}@BgY{M?wyH+c7kMERk;-8{O5BvS@;pRJ*XR?cQtL_c5L-etOe* z-~EXp(*}Ba`oDe4m_+xSzr!f($oA~S09ftcy3;6fyFXPEuM~gJU1-01pK)KF-BY43 z#L506JDwQ<7TM)BFJfwGNNSf^M1l8~SX9g#8XPgZ{|#Yy8Bo5H8s`7Op{m{5~Qt= z91o6XHzUl>+-Iad?x&iu99=urjK z;*669!%S5x%#=LGEYe{e?9h(VY?u`gMX71}AfW}O*&u@=%`UR<8ypEZ!!o-db+KjA zK5}exolX2<_(KX!sSX_#~f0Q{CQ!f9^7_%r$$vmkxed zkbHsWavax^X~He6<`#&vp?4$>YK}M0a(`*?WDy)1as{WBe>W5S!xK!8%l#EL9R3`W z;=e4>Jcs?TA<4{i9h99(W+B{%*K4M_6q|Z3#qjJ_HVZqOetG*+baG0v$(4bMWU~ZR zyxq*4@NdA?DB0f+7k4J5n6dPrSzSze#PTj?ZZaQ(DP2mL64%Vn_1AYXG2DJDHEHJO znx#WQEJeCx+vT<`N7K!x19c9Ok26dzvNUIyS-Sr3TI-it-OxHLJ9IM(Ajf0fOdq-N z_W1wdrmlynW+FAcRj=0fHaWM;?_(}NuoZ#ok=~MjSFE>oDGsBIj)>7u^cC4koi}Ei zINhLH_V)#Mcns`kjz>_`&-5ag+0Pt;pspWu2j<>i)so#G-2jySW*LI|{tD$_e{-W+ zJ-`vZhjEw1rW})(X70&hoBb_0CY~m%{qX|>m5m>ST1H6CAk^}`Y#5~I?w=8z?f+?z z$!Vv5>tHi0BJME6qz7;+pHd#L-^??+xQ%9HG7(pEjxhP)RW`yDaCB^hInVWjRE~t2 z{umf`wvB{7&5#`#$NMcc^ zIMAiVIINTkf#bq|f>jQhWR4AvubgDwA7~^Mi#IvQPm`6iikxDWB8jJK$-*hB>o8Ns z8Q4!m+J;h2MOF3o;VEXXajb=ZR5jWNT_%&X+V#e7n!;27m7L1nIza-W%9oa&?o|H` zCFXzmEM0ktS%ska5)8kXwM{iQwqH;7V?CK?aEb3vW;2juE``^hSPQSe?^4x}BbS<( z_4sFA2IWTni89EiNwTIX`IJsm{a!x}_EjzAmlIX?TyD;E{YnGQ0_Mys%$=%3`h($2 zX?`yuu-t=3|8i3;FT`AFHUP2lN^>iMWi!ldxos^N82PsCk)|0Y50Yx0Vdi!^0f)t= zv+ww*{Tr<7>*y4jFw?|r&A)6WSwu^&Hgny-2bL}Uv#vJ#QfZ|EysZ`M8gsYnq<{Z4 z@ZCh6ZQ=pVzhO4U4yf^=O0xy2hvtBVr7yd&C+#n0FN02qy?|?TuQgLuR1L_rML&C8 zDKOZ`z`QvVI2qEg30DR$=cFK|r+t2$DhP&YSL{-pL0Ewcd8o?#V{fNO{fiN)iCl={ z(>bj$8^Bh+C;M}uzzZv}UNPuf?8`WO7=zGrk+{DJ)ceZeE3rkV=}<&0`0(8eRXg6# zz%{A2c|7htEx4vVI!*TNzzwAf&w?3W`$cTRs@ag~$e;0j>t)~al8K%12{L1@8bIsk zs>w^~b9Q(wftrx%wG|FA zV>PB6sWNj z1K0RRnmF4kc73O$s5WU*R;@Z%y*FE3ZQiN0%aEKwv7AyB-JyE7@=iPeY`a4Z)I0A` z&nc-(%u+Q%&@0e6wmM9SA@*fUOg&qxUt$)vL8bpxtt6@s)#Ti%bOY6lS4$)`OJX08n1X2r_LyG(3XvOTbkiin6P_6Pq0#@#Z|?USblFiP37^e&~!b$6Lna=ZbT3HM*B=Gj$C75S}8H9vR*whZ$DEFz*&QJmfA?&&Rc z&pQ1nFU7$CMO9h3O} z4?=Cy?lCWRhnwmxlB}-Ai;lJTnAf-?OkMz&BFBliFB(-(onmyBsVmK)0p}t$%@{8? ztu$?Sq*MCCmF6P1Cy3jR3nK^nU#T_k4R;%+T=;;wP>pcxE>1_;#wP#%2h6fCsA&E} z7;l>7*h7Iy)mlgycaN;aEY}Rs_pe@Srn^U2XyjEWNgxFm43@3aQe&JoP~o_hmwy^B zRea}Ro)GbTH4?7_FR`tM=mL{R$@j6Fk=Ei zY#@jW1f3Wp$;tJ2)JuC59uwWXY@N9#E*`9F=Rv}F?fMv;>jqiyn0e5BV!2Fz++6QI zvRv%-W*_&lC`ofa`O~ z*&|zpu9NYY!fYB96{u8FRTRd{XcRD{0S)z*#brgD{^wib2nllz0R76|nxk0CpAs zM&s^9GcR%GJ%K}kILBfIG$(v%@+2OHKf{8enU%)VulVfm0Wd59Xv`D8$oo&4DT(^% zD+*h)`K7dg%DB}*hfV4F$-|i1K*c0EI*8=W&f!oR7g-%{lCr1F(ks_FMRX0Du$3ZM ztZNac;5eJmoIp7{T#t07>2hU=bHt%d=#~^9jVgjsd86s;)Pfxw!KAbWM>+*J%tnYt?yQVDkuR1UEkAzCg!v z%+xKo;0H;6DIukbnh30 zF;vMZR+Ah=HB}W3`rQagmMAMhR`(v$b#XeFTsdX?TJkkWXO;H?G;0@w2Gcm_V94HK z9%;1TlqNbYq$hQ#4E#_R%xVUnk@|Wwb>tjmF^Q7ObB=_%%0Zvygqp5u8uoZGpM#Fq zar@EFnz3<$1lS)PM*HseMB!?gfS zk@=rMEFOe60hq68GH<9;mNRJG92;LA(r1mNC9(@M09xiZJBTd2*E#QrM0Nf`C!cLz z=;TM?H*u<*kjl#VdVp?RcO2G4`DhCdxGR~q*)#`w?+-M9&X?tGb;_y6Ifo`Kanjfy zkI0(MW@@xHdZNwwQk``fbq3HitDU9tSJ?JaWRog2gyDk#az$U!5^}E6`#3)-m;=`K zs*}bUoX%so%!xmPPcsHo+%1)F#AMZABUj zQydgyIz&;ox~1hq!0~`9Y(b&kco?t zM%u*TUki?u)AE71`zRvkBZI_fQ$%Dd-Ui||2rU5fM5?x!-ZAT)@@SY!UX74Ns1Ela zkErEN8tcCnX~FeR|4dCST$7}EisKvAmam`IyP_;~BnS(eXk4>Ql z2M^oNNEuEDlhrR{%d#$ijVycKtTz?`l~t|8xnnq?>gaBFXYBHB_#4ohcDrM%-gNTc zal&0r_`VbV(+T%D;lG{mJ16|X34cP^7eMwH4nQ-@A8u)R{}D*ziI$d$fKgAjwEPp$ z^Qo4WH#Xu}x@TH)Ro7BnWRe9LzUzdV88X3k(Pg~7U(SEg?ACRogR|KQ|Amk^)bSf- z*^6dsf9)Nfb5LG)!oNA;#|T-3n)TB@`RGNnXVoYB0wQKQdvhn^Wa&Hr!v-gO10iv! z1!5;-0iNZg>+lsP?$Djl;S(fK4y>H*9aJ9}0ca{DOmD<*euIz&DS&fOka@2I7*e~nP)T_83jv{Ofn+=QQ<10B5}nFzq>)B~ z6CUE443XHSFX3!nX3~sw1(a}?7Xwaf41P2JG62i4@&}wUZ#!wkze%>gZ01yHW!{1$ z7W);C?_yH2`xTE8P6Tyw%Ud3LLr zHd3q5P6vON6KXMk?8Ir4!Mxar58ERvGGkJzzWQfdL-{Bq{+1Kh^`mHqJ`DkVXS>+@ zkDLZ)3~-3cdfCmyWlxL+F4GnS(jpas+<(dsPj^a^U6;7i<+E4K0q5zaXx6_2I*T;73!2RDf>2jW z+3kDJF=zZ{)zpB^plu=~ehJ`Q=Xa$Of_A`}YvMdrl7-p+8BSqZd#qDn145nu>IZ?x zF`Y+MW*$4B3-V%|IAw77{Qx6WU(GZbyrNNld)-WP-5{xNn7+wp0FAtAK7(Br(LZVo zw2{@2Y!?T=48K{64Sa_4oh0Yx;gRgPMC##oQooos`@+e0Zur`2?skN?nG)JeF~31>Rt)lPVg6V7(RKRe-H zoN%ra&UeC_op7NOE^@-#oUqynmmnP3Aw6&l8XBmcp(&+d_?-;xorJKWd*F1^&)&rA zn$2?JO*1Ph1$orXp@7Y}H6ACCrXq=I7f7mj3)?};fqPn!9xL}8w+#Vk>U+*K*|`Jj&^}Y% z|H73d=HKzAC0%Ov<8}JN$c}h3&=Ggb&HuaEIXMG_dVwz0_zXZd9haIf<8UP3SiDC# z`5hMf_kD~d^|k*n@vVY`(ou@uF*DU=B;C#0XLsUD0ZlfphbH5Y?J1T2Fo(Fa%-SD1 zCi%Dh1MlyndI5*l5RgjIPO~JcH!SMD7CWp!TQ}b^$fF4eFX*=J=?=NIIn|&AT9!GumJkH$unGY(p@=A~IDS zfAJgE|2Y*K(k@$?8qF>vh9aFp84sW;ZMWerA2_F)Sa}s*IJrMCJ4cOblb-c~IV5T{ zl1|l7HZaB;H3msR9ZReNB%SJ<-Ao$WreJ+?tT$?0n}T^CLbuLFQmZ2QoR?J7{Ouiph=@ZVt2V=9{_`G=G!+2*Noo#vi+deXX zz)dw$-(-3_(bOsQ3;-oK-jvv*F-iWzP3B)+u56Qa{kBWQ1yC|?P3YC zLS3%*@Aw$Is$9uZ_6gq3CCiad)T_&aPt6kJTwoFDfUNt}3~ZXG^xBk{%zfqtRI_uR zxg{=~gQ9~$p3b9>;LCIU1rA@(;xhnTK+_Z}V-Da2W1*BBFn#Kk+928gYqa+a(xAzm zkJ@!NaQDd|hwv1H=K$zpR1=VA$^LHW_k9PpNkuNF8sGohADAde9t<9lo;XYqR(d1eyPh zsjgIGTm7>Sac?QMbAOKwRLN5FJ>KnA%lN})xtwWRo#k(b%>l+mr`R~Gwx&3rY%OUv zj~EkMGZ+7W*U!bW;RkbXKMF$kp>8~qRG&;nNPh+Qt^|X94L@Q6Hp##9M=-(5+*Uk> zH<}ZVnA6;oO*t?GQ~8B)G1wT*Jy&{bzHEdkXS$+}&jL&t@-oi77)T#q`I4 zWNuF~=ZLy?)-|b ziSfzWx|oD>vr#qwcAgAOyXYxsYh;PN&wQH5EaWpDoKEe@L^^$wy($N_tpBfhVGp9w zR7U~$$5A;KK!v;*J;Hd7r2dMxgISXIE4H-E{}$aj`&SIuxXtTVymEi>S96;D)Z*&w zzN&+)$j2U+qjj_;lO*QtsMIsqnZYJaF%JZ=4dfLssZ<-r;WzkD zyEalK@3@&`T!pBzOQ||;`ZDN&Mg#cAN~j*?0HRSs8PfP_N3VQ#+#F1uSaeBrlJq}e z-i+?sctTCscbrh$R*o=87T<5?%+ss9tohBXh~wnNOS%BIB3Zn@b0@C9@^|bp1A(0< z1CIeG71j6_b1}Lcm$Pvr+x8YSw>^bbkyg2D?y3swkn55^^bb=}FQuf-AlN@#h;&L# z=V|}ovi{INxUJHRQjpXgfzql;>^J@enzq+%Epy?V>rC4xcZ6A!lKqlq zW~U~{BY6N|B;W$T#ef-raw*F6cvrdOq3(~xc)F4`Ei63{F-{ld72h#CRbF`&-sQY2 zW9@MA2*1!^duvCo_0+z-DFNHl;dMUzASyu_9UDh?LZ%sVu0X1k=O{o2DVi7WmE%LA zJInIXG1y4{L6lwl&Zb!DHV+%TNQW_l6_EzE^2K6f%dT56j2`bE8LLjL{I6IZxTG@4 z@>rQNa*f-Q!3QP^i-KaEM`33=u39HmeXZ1RDtM|iCl*|7szm+qJp z{AQ<6*qSaoqziyF*?D87=974DB2n0fgls?<;9pYrHg0fTxjQjI*8T@G>WLm}RMe%A zGo2Kf*(`M)t1Rv^B(cL;cOW^&u7B*! zk)~<+TybR%IgT9xa>bVQxqBKO0G22Ak=0*B#`>?dtx@hcsv`xgDQuSQ(N=lyD?*de zXnLFO0O*e z>lA2JPKQ2~fgR2Pn#yn;@Ypo=44ZJhQ?9kS(wwHcB+_U3qHaJgZ6&}$uFo3MV;+(? z9Ft)Zyb*B{x+xgdU*ogFTygV}Mm0d-kXV;)Es0y;B%kWiybP-}>gF~S)@4}5VNtgr zjrJX2AbU1GWa`<&N{CvB^iwQX(0kA5Vc~N}|Hd9xB&UFCqSNyt>|5K{6CUqqPb-~@ zmSu7CV1AaB+h$KCeaTf$J;|~x3kHDg-VA0)-6eR0UVG3TD}8#Q>MB&-+KbXMGcvVy z!XS@qTY$}b^Lts{&!8tx1g#7J^^Uv;r`?1&XVdINHz3f9yL(yLQHz2_ATh&m;rYlO zh9^anAUTrNO^4H&v&u;FU)I|?pBA&RkF_W2RuE}b1F6Zjvbs)1UGyF_0e04HZBTrB zAwJwInxMABPZi$))Vt{~op5wUv1P}xFngPYX$2ic`dS+kIc;Jx`O%_ll9GPbTsVcD z{j6fQOOYyqBr6ACu$?O{=f-<$BgQ2dB&FIUjRUNin5@+0THJ|?IqP@?^#kDtlBIE= zX+jpz_-Lz}OsNRyMt08MMCbu8+RHVTAJ9unX`wRZN=z{b=vsT^h%hhGZ`yQKbo z^u}kypxjd>Yq(Y8USigcYQpP);n3(A(mWjI8Yz)^@Gwe%*(2C1tdnB~m5e>aw6g(B z>j)q}oF#!5HF#ztab557UA=TK4)3o)f|8( zogt-XS-EjUDF@I2kc)BRn}a#eD`!~`%i3%3#mVZk!|X)P^H@l0G?mRIzFf4~J;3S` zkPNi593QbgI>PED^Y20z94^DI+5r<>5e94FUxAd~W%^|OV4Qd|ds!zux_84a(|1N# zv7PP&PA{OKwaR1Ng)ND8iu37*H4-Nm&^l=z84}}%t&uu1U?r*pgDhJ! zT0(GTYv){e8>t{Q*c zc&mtey_?U0A~s3nxmG`Bs6tmC7wS8BsoilP-$* z9;rFsTIXJA@^doG|1Yp!BA*j1UotBh&R@nrr7{QhaRtW;D2xBll zb14egdXbf@W_sFhFw|ZGI??ryW}Ew%!8L?=qw zG#rmUXp)tnoH-j$0qd~?x2u1Ix&N*qFr@jDV2fpPXm|V&`rJuYs_M|bKu6u`ZzbM* zQ+9M0@wG7-UP+s5^)l`U4-`t76iv2#?nn2^oXJ*F+#X;Dm+m4m*&07+6yD1RCs&5V zSB1o1{X}A?SX27Ff%Kz*LhNk#Gj?K7!#L&122iK>I%^fGd!%-Xl`~pTqJp0^PnV{@ zTBXiuT&fj5qAsy&l2_v=|0p>$wRM(RCmT!P1t)@;;09eK%_WvE?$(gxq2jyPlJML1 z;}w+bPYuKIiWkGkm-!1XfmOLT?e|ZgYDKt`OzeMJ31|kKjm=*71D^Rp7L{7hb)}=F zLtvZPDd%DvHaTK{#?;o0@Jat?I(e=pqeLYdL$0%sLyihWe+pa9e#Y*$1nh7_$1doitIPV}%92>yUkwlg1ex4{t!Ys_cN~bUpy8;-J5$3bKy^wDqWO@%L z?Bj$35b7SK%u*pEikrB6h-b)AmSIK*`QZjn#MLxR#&evIkGzZzcfuJ6HBIvQK4>Cn zZ48~J=Izigfrh3#X{`HMC(S1(TEbFsVO!y47%ozzVL?PzuTel?Wmf}8gbh3Nb6e^C z3-Q`nBf8+I-u!aQTYK^@&!wY*$8xg(EJtY%4k_0GapH^zFyxZ~acOg3VJ~^G(3c}l zhesR4H(+JfkiRl?Ez1Cp0q74&nqvC*Pl44u9p8aC)t2eAvZV1$H_s9M6- z96}n21gBkut-U0~zkH|CIQ(WMX9F}tz95ElI%$3D?7R=qkXKtecB=XT8`;Txa6Olz z9^#YkSx&eZp{9SCbG*HGqNMyWcXJ~l82MQ_ zak(|VpVp9)0KU@iK@K|W)Ot^TO{u)XN{uUWP-(ySa)-9^Rb4rrvIMo5VI_bqppMOv zMwILtnnm?G0;Y+cERp3_mfY}4WO{EZIn#PN;Z!H=?}Tgz^RsHp?)S=lYVH3)qwbGs3{sUm{Kp6?|B>K)X};3(R?X+LFkNJWi#=V{eWyB#*=@9fzLy)!?RS%RaSc9Q$S*$ zjs@txeL#w?vc@NF{G+T?br9~;$ZqX=Q7832(>`fao1~hLJzeZJDXQGFZIT-E5;LPV zBT3IzH%ra%7+=(LZLo^=o|e?}ZIEzuFV=UaS=RV)J_b&Z zx{L^4?WSiu>ZK2bm@KIk))MnY@z#5KdHB4L$g5!Ct29rvRu) z>?S|TXl*aUH|JO{iQ~f&wOtFhOv-1gWrbz4t>)I;)>5*p63>ZE_%hvE+?uPOhsvaC z4xd*1d*)zeq%~X1sZ4UOwJKVZwN{k*>#wzHU5T0#b{aWnW6PxEI^?0g>+qmeCaKqB zr5ER?UT@*h7Ca-(!$J&BtC(lCB##0*Rlgr#Fo0vjD1sch(OS~4Gk(&s(2r1VY%hOP zvBm-D!a1t4EvA3jP1bg@I zNCrj9Ms@>G5!e%q>+Wol%sZ@|P`Kth(3WJGy9E7~>~C0tr%Ze-|M{I*?n=gCGfb6b zcUhGnTt6!|OS&z!&WdaE%`~`)sV%z7>l!OdmRi2Va?H!u16JYCWDb7;4!16~@+Q|J zX%m1A;M|7;5>d$6Pe`|q2lB{eaNb6wzXf0#RhECTCt6xA0!)>{WmbOTJ%LmuBi+c= zQnw6Nb&r4dGR#bkmmR}-KqBw9a>DtMdAKzH;?9~p20zIIRlx<$C~PWe7J!dm7X#)1 zZU@{Ccp7jBFa)3<->6!dAi`&k3`Kg`Jyxp0i4Y|)UH0B>rK;0tNi`kN5x`R1P{&f- z>lZF871de_lEMqkyDhIO*$Y_d0A2D3ezW9{fI!JJf=k*+rUFposqI%epn3$9dn29> z2$${4ts&v;)lRB1sHV5Z%1dSn36cmkh(uIjsi?7rsB9*;&)%xDX;kgAtrb{*oGt|` ztW0(GswG8Di6yf9-dHT3t*{25{u3+Uqp&7}ehaPoeh# zkf0a9P8tQ^9|!y3_|=H(fgaZQAQmW>-)njLX_v){M*zro0e~GHoHq#Z2&r2ig_B=e zV!Ft}RoH>VF3FdigOOgcqUvKG6IebQK&icfx1((60Wcbl&z-R(;1SEf0oR)r;cV;Z z#7O%Rx>Zg_b)D=S^29Xi3gZl^c%)5W+F$^A?hc3mu+0=8L)x2L>fQ&>XseyL9C706 z_R*VFN&UT+cOaA4sr2G(72_m9wu2XtwLd5mjC@!kf)v!TC&Z;cwIybbT>tkh&?!`c-86q(`+;aJK31Tvp`6Sl+Lw+?TXI{hBkrS|YeSRsADnjR3* zb-)W1(Unpsc$NA;#Bf-w>x?86WwnM>-Vg0ci^S6FefMMCE!n^2ehj>Lz3}-17;0aa zveoMSMb&D|0&vXIY9ziPrE9P_IalVbv5GRd8H=4sMdxr#QL*FM8(fW!kmjdxBPh;f z_Q(|vS{HT==1prKHAI=0G(KnzQEy17Oc?;u%9r}VQK<%dMv;}ghpdvWoG)E~q;vq~ zzz&=SU@vsW9fjEOv+~E7gwfOk%Jxja-y9Ps6Z~ThlsR!|a_IoJhPCRKX9e>4L+}{s zVy%U3Cri;<%V(g~>Tj~-Ov1|L$!H!Nwid&?I+8O}w$)iUB9q5+X3Dp9*3iu6n+C-zDKfE~w>u8Q(w2Qtpz zGJ(dIJ&u>DZ^`(_@v`J?+?{Ii$ekhv*r&H1 z(>Cmd+<+x{>Hz)z4#!W2IdR-ku|f4Tu(DkLkR=-|zbhX{Mc_r_lfTP>3uDrvdjXg1 zv-~@z^sSCfsS1`Xg+PTO9-DD1fIXv|aXWtVFAFdoKs@@;VBB;kz8E3@x&T6Pb)AWP zq{e@$D;a9pvCAnQYIATUx*&z10GEPmh#X6qt`4qRXGOCXIL>_-uF&02@aZJ~&Ok~NBTKeygr(qV05v7jopJ?+ zGS@Oqmhn$xvc{}1oKJ*nmNxB)vgN*~@x~GF&Vx=w-uJZi1&=vX`+z^L$DWvAdgPcK zu-(a0{H(PRwYEG915TFg&3IT!mc^Ul_>yJAW^BJpmfYtQ%KqmN!@-|htiVBhq{CLQ zb)a;6UAXUNQzt^!a$d6z#VTV4Q3A zW7~*(uQ~@uI=yU-s*3q7uz4y^@S1>l{QC>=*bQtT z8Ke(nIfhIl9y|V7JnArC(?1JOOT=^N%@ zB!HFik8$F#S3d!V91R}z_~*Q0O?At{SFCg78_^AlA{3BNdA#Sl_%CVt3>Yj1}9&A)o67JT<5oRn>9+&kq@_Fx0sD{(|Gu9gB6Q8 zR8a$_ITISNZ{~&u>wIkyFBUbp(X`fy)FChh^Qd>sQn zy_yn_w0wu>GnUkR4Z!cgVOW9p`eLMT# zn4k{cl5;I4KCECMAj5y+b*s@O#|u5SK}kSCS~C2H{$|y8bbTRfcEF&%mK{5+ zibTAcP`ey~)XLx2GXC$x@Xtli5n{QAOu_MEA@LtV;@`B5S9SQTZ9<2=A@Pqw;_rpT-wug4 zgv4J8iEnNbufi*xHVOD7JtY2MNPJaDe0fNGNl1KANc^VYIL-3f-~_}gLgLdy;+KZR zr%1~NeC2sgNb=~A`0$W;Zb-auNW4c#JS`;dZ5yxZ5ZgAPgAo#Uhs007TL-Jo&mr;e zL*ieB#P_#}hjCzDaIB;6a=ru(rn@~P{%T14g^>8Bkobm>_`|Xh)eKr0lDsS=etSs# zmZSa^{|!rVZ8&_u>Uhzoj@R$Z=S=)*U(Ml){+x08BL3#ojl&gxCjeN4zxmRdqYZz@ zN&c5u5s2}Ze2J}UxD$QPK`a%Hm&~uN99jLll@P9Kko~zUc1C3X?_C-jkv$DZpV(FCEs8zGD(hoV{MUL-@-G$h>tSh*BigZ z18KSx9>P4Pn=Cnm<=39lcnBN)`pS^+tO^ue_Z=1k`>blVc}K5l_u#0)5s{40TT>R= zgAa1jENR?pXR2{(m=u4HwbCK7=XMMOFU|2eSzGbVu>V4I*s}fyg+iI609eQ7B9Dyxe zX+5Jn>ZH^g`g&r+mFt(HnVm8diPJ~dr6ngPdf7R0-Vby7AFK!E(T}ap z$-yG$EVNbRQr4*>zGC{(!u<+gNZnC1?rVISV=ZVMI@lY!x4xE{$B5ytJ7yJe$Y?%} zHx{n1Rt>Q;-CwuJ4_}!{FI;O+cVqb2zhyR7k#=eTMy99ojk@gDLJF+Iy&I`sp9%(=8Lj4;J zJKpVj*N-7R&l=GktU?+cqOeCG3y=pG3z!PH2{0a;7N!F32Do4`odH7ulK{8)bG>$j zt9H{qk398jm|exeh@#Si(VZcK(W=vIHVF0vOG5G&g~V?PiC^0`?(R^5&u%*UsxEDt z-eF2eyeK4oPDp%oNPKumJU1lXw{3h(haPPcI;4ffy&>_~khmcgzoQ)|uxlY$K0k-V zzYmFj6%yYc68~37{DYAAJ8k1t9k#bk=5dH)~s3G>_u^cDJQEP1>j$))O?C< z^-mSxtnEqIcG@S?9_1S9ugJ8Ig@aCcZ#ySrABG6+46tcMDf1;LOQk0J2V_fcyIAd_ z_ze1MI=@*TnX;c^_A=#fYu(A z<^gtA+yfxQ2A&D{8oy(tEFJ5wXAiU!qP_{P1UI4MV%Vhv?R2#yONnzhWVvry4xwU3 z%JSl{D}11RGv3{l4YD@|f&%}9TpI_!PM58N?JNYJ54M*es5rys8{zF|*fp+!JgJs{ z`GG(YchVQvC)sZDW|{66NH9c$F>? zM2tfnA9qQJ?~bUPoK;Y)r^81h)r^Dq&Rg1%XX8xrSB62v)1`Tsz09e*cKH$PAs-IS z!27)6m`Hq8Y^O_Fp1lZtP?u-tsV~ivNho-|h6AWdQy1^`CV%{6vKEN$a`MZzWdS0j z=4X6-I3+ouZ&&6son`qu*pI%4j|=dQV9aX?>G;UHek+%u^DsJoC-rC9JFub}>*;Yr zkh(sP@_e`tmeZFY?v}EVv8h*bzQ-j!S~6{!Xk!2sfExi!BY;z-9PGDSg5t#2&Em73 zZoO_A``eZlU#D#M_c-nt_w$V7?1BO!N&>M7##kvn;Cre{^T9qcx*{vo|K?ai#&f{82a22eQoNH&uR&z$IrSQL64X4;i z6=or7rYa_YfOoW?%QgT4O?3+*@6i(40{v63HQoZ6Q0;`V$y zyG`~_|2z9gyX+Bki<3Kez-&|zqw{tIv@D>iR4uMqditPAYHQAd$ZwF{)< z5RX)O`vQAT8}5z;)0d(NA9P z(Eg=ovE3POa`KDq4QOXfi=D-Lgd=!@iYaN6>;X}3wCGf$N+;Qw8M-H_9<&kG76u$z zZh+moNw&}3(UR9E*&~M$oyMC1U=giV!RaIs4iXg7soI82wo8*E5NCFz6M7J`mQQ5k zWIOL7Qqi7^XtXa+?$kgkTzG9qCAF*WA+6V)+B78Q)mUE}wU7Vb*$Hj3q54@pkfO9G5kF`lnE)4n zoul)Tr2Y~+E8L5?C3Vx|ak0s8JGKYWw05|_AY`UUbq3xk`DahXL~y#4PPMtiX6IB` z(mo$Pd{g&kse~e=x0GUDF}xJ>m?l|JYR`>(8PqUJDSjw~>3*P;xT3ghpese^&cS=N z`Ip)c!&Xx-vkMTEU55E*nQRCI&4I++GL<*4OyxC{+2vQHfKV?GW-B;VP7R5735jFH--Onnw zW7Ym5sv=d8Ql&JtYQ88%SJ+Dw3gvKmlp{caR2P)v(c}}UFSi%8*?6HRK-i}@-S%>< zOOM5eowKLg=@4DbblkrMFEZV(<-*97wztjO!`8xRO(8g-#&C+R8JsSQue7sS?Ujno z&MWOocZS7V9c1bZ`+RpdOP+l)-X}X|*fZVpev|<-?QZ63Jl=f{`1wcq(@gs|^Bep= z4^M?Bj>y+D?LnBgr(T7|z!?`^ZI`(+rT%J6(ph#zIF;EF-R|6RymZy4lbMmmHjpN0eS-RVqSRm3BV*Yi6a5 z-JPYh)YK|^nu=D*COxjT>I}XcW+BwQ10(^z5Rs??{$vdU{~PX@eH%%HgJHKueagp?n^0NY&RlS&wGW2-)^51)gMCDvQNMsRmc@DP;a** z1J|X7fi;SqT@+x^T4MXuXRT}nXTO|Qaf-o~@gad}>@Afh#Y>=NczfF`#%ItyJ4EhO zqC+EarRbgZ55UN~3vFl;xy#N=%t4hz4t`jGp4|oE43Nf`Ae=jv+6nG~mK<0SmL$(D zwL2SwP=>@0$nK@Eo+fEoYFD{)Ep;2NEMJVp$LQBxwtv?$dy-3a0|$4iC2P{|mW>#O zyKrnTSW@iGzuUeazvGut z{yuwan?~}r{Sv{fGgB;R6`2lKn#-z%w=qY+ntDdHjWI z?09uj*@N~>C4Kg74*(xD_{SLn8|N6y@dxc`>Z|=Eq_OdVJYH8AH4#z%1(IqWvdem~ zc~oO!1~-|b#i`QqYr#{sz8|sbUl{xP*tq2^?Xl=yaAYxc_A>Rk1}U(V7r;s$Kmx6R z^Ncg_gAZY$>1QIH`9lzL9>9G4nM!y3hRD+mJ^xHKUOvx+1ftU10ycq zdertrjR|EUwQF#(f?%pHScmv3uxsGHM7&%2@KHM&0{uR_iTyAveP=u3m%ZY>uldR))HzvOhZxC+OzRP z&y=+ssXvq>8D=+)mweEUIwu%a8YA$GraS1|P);}s@hpl<&O;7eGzHE-Wkj$Z(x%Q& z0cdq7ba2^GtoMAx{~u}Z1K;(u|AF7nXYK#z{b#kdwomP|wQAL>RZ}ae#rh+oNtBw~ z5EaqVkQyzLklSMPLKL@4uH1?)A4GG7D4Hv`kXnQ&HAGRg-}8Ci@AKK`v%>HD`|Z)` zeBS50&N;91I#6Q4n6d*scUYWE`Et`4J#! zdR!Rygs;t@@P-@(7^*m87%o+r_&$ld05tY5((|im+&b{2uWbZJT+lot8UCc|Dk`4z z6+}ReJ_&LYAeF5-US>Y&%a1_t!sgKAHX!$V2$qH+7?IIM|Hq8}`g<9T`9EfK$?s(} z_WzjC1UI9tPvN4^@J75C8AZrAPKG^a#znx4i-5s}6Mi|gASo_5@}HPXXgMCSWL(XR zrRdrpZ;{f4D&i8vku}&eaH@yhI>Y~p@Q^Z=;M1^I_ekT@Fy*3U+bZ8iV*&u0IC#Y~ zKJF@8`Y$M`v}STT1lh5OG}-wt*wJ5#wc1w!;F9aHwesm1zJ3re*rOGQDOrQT9;aVD zQeTC;u_huJyNnTVw2ELJ0D_(A8ehKmOOMR`6pu=_Ukj`9ODSB7Ii>Kzkx!^|gyp-| zSEa6op^Rq1v4p58&v)PAhQU2|_6L9ix-^?Udl*o|gPVEBE`-+sw+NH+gbK?~_ z1aimoppdd`%i-m{;G62bG*PDetqjj)vi=3%XwT)iHU-E}r2Xnw_o{4{il8F(%Al{z zC1~N3xVmEN+b!G5pcj1?t3a}T(sVH`X%3TV)L>uUu}dm)S^E2&-vn7l6vg3NMltkG}Dm844H;kBIWg$eHW_>Q%O%k zkfu8%cRkF#IH_LmYozyzuh=^&QQq(4N%u^a>a)NoDX;qW0Ij31g4~nDzrk0jluEW7 ze--%Rva$`J1g<};#a({k!z8e2sFf#4Q7so@WNEGMfJ)w0CtvlNZ>9?AphJfL$G1g= zWa*HC*L^kKt6)0kc{@e3W66;N$-+P@$9$R9k3?$_UGYyF;_JiR#jMGMg2U5&%8Xwf_ z{JRg1Y09PQP1xU9<9pLL85uXe>C5p>$9S|ewu#{3UK?R0Z}|$n*8zdgqtm@J5@qm@ z(d|8tN#N_)yx@tqeD89cyX9@)3U7rAbA6)By(hMlWF%PKWcNG1&Yl}2b~C0_JW{wB zBP@lG6z+=h2XEW#i}QMKOjNHa&UCz+KrgKF$&p=gw*2rejOGg^@Sd-t+5I}p-vh?D z6=o}%7w=O$UWxL86nSyqR7d>LF*=ZnHnI=Jow%m*jT0=1~(rgf3I zU0U@HcKy)zVYFwqG=A(`>8(uUBa|8P)+fG4jGF=3q_@g<`U;I(P7azA5rqC36Hi}8 z<86*=Tzu5`Q(tGJ3J|(Yo|UPef(grH;io=-N3M3U*JVoK$z_<&++U|Q6_aFO;lI}hU zGEndHCoK$zWaXrA8HVAzFToVt)%Cti;~oGs)u8bcEbXqY_r+!X4dKmeyXa)tL(HQZ z;Y~#K@4<}g;t0@^J-#~QUIc}Z4(5IaF-^J;VWd)1{lNS4h%S{qDI8>ZNIuYK#| zA4D{vvEB3=Uoie5{TXch1`_G?0{$d+P2tXvs#lY<<%e&5$)l+Hhzk1@mOT`1EF2HV zuv*&D{DUTG8eAY9;dMH4UT3%%?DSIoT-8C$UOcQ3qV~pLM>tvyR6a|?<0NlvRG?<- zmbl=dgT4-N@sH@pp#O+(X;l29q3_yXd^@p6KDhK(^eB>YhLI@~Zo+KjVx2+H0h3l>(@Jn3{cQxK|my9$(?0z;WGdL{G z_$Vs=F}JK;lGDy8jek7!xv-sqr^zLdVH|~*8Zeg2-v=9QWX^0XcyA9F*F#+vXBr#1 z;GKn;2an`t8JntjxGNbIMn0;scrJr~B;7@DTo7RIK)5#We-Dn`u7+#<2XJgo4Tq)b zgr*FGmFjIQgytm-6oJWK2iGk{n~5_sK-D+q6s%W^^_>c<|PAQ5R#L zH;v~)`9~s5aUD5%rPSvdE4(XVu?+O4$iv+X8*>_~x*4g_o~P96R&akWV{Vl9pO~7x ztz{3Ha0Q-YUfsv|*88+l+wEmTUt@^u9&WUii~{3g?=x=j!v#jB_g{&4BsoJqDKOsl ztd_#-P`@=&+s_!_U5kF_2`r~AOTq@0jQ&QP_gQpg2r+2Zl2l~c=cJ^+G1j{-amfH* zr{LE9#@Sxazlm11Z2c#=a1J&{%E&W}#qrOFC{(o$*EPlrM2Rn8W1_Lo6Lb=MGRT+< zOHf@AH>1$#>5=W{gPSINi7aNHVO$aaQYef3GmWL5mmS0A(3!?#k}w|Cd-^QnAD&mF zq{!IheKm2(=vEohcZkv1vq8#+7^}Rssv}Pib{c9Vd%dqEIxjVk8E)L^`A@KZxUtRC z>vfbc7}eq*Rr|(f-)}VgepB|2Fy`Sr*yMAJBI7EgpiW@QO%i0#^`)qgu7TSEwggw4XOw!4cQqZzGm=-1y`B5F zVkNi7`9|CL_uR-GGWvWl)>bgipoI3pW9J)Fyb#2Rqm3Px{h0)YOV%GrU^B^T5-eGI zp|KZjS#=Tc#-!y%#(HlZd8BLbg)s*9TF#fr7aPmt-`6z}Yn*Z1`(L+BI*m7yp{&&z zo7EF=U*d_GvB@$AZLDq-rw*p(qz)z%ejsbc8@ztAe!Ri!H*-pj0(fPm*!4AEj+Pp{ zGBt1scsngP;1Z)EK7N}nHyFIq!2M(&CQ9b!r1aqaNya0d`2U4stEU*{Q3=~MN#kVg zf1=W*{WZqi_#GjjRo58Bp7@VK-;LKA=#f5lr0Ek!nsz$Uq%K0`+zPvA$`Qq#RrnOf z;yo?Xu_0^UbwWCoDLeR}t_#3kRO6O+}H&u$c`Rg*e~o+_^c zJigvVM4f)~$M1>!{4DbG^T^M=k)K~getsG8i7jFc6-J2~t#LOWtKu*%2BwqS?Q?x*}-ZU?jFcL-}Vxb9!XqEF|?3282*hLUM8utjoe<>Zg;Mh$VC)UeFdAF{wUl1QZd^oYgvk9 zAMR*+TKs@(rh6-mv(vso#ITPW8}EVp2+o5C>bk(4FB2<`P1skJdoy_QRT+J=F~BoO zs&6({v>Ujy>ETX)^&rl64J>Cdv;6^X3@qqP^d8r7lHQpO@?l z#@uc^7Uel8D;GclACjXBP|`rjztbp>=YWHMJ}G$y^U#BGcvHfi#ucV!OjiFP?6Mh! zsjLg`GCuSilCpbv-so;9(+21FoV$%nJl{FLf4Cbx+4s)x9t(|2JwHhGLL;~1LufJL zOUjeU54)5PFXvgQUub0aA*h}{nFvs#5CMjIo`WzlStwo#?g1HpWWmLrpQP~~BVTsk zV`O@c@b^5=QF>J}X*7;W&52L)W&I2UIwJ=XjR^hH?E6@-a1n9@_f4)g7T{{#hH4|= zIWE>>W3u;G$Yi!JT{c%6zTmROhL4wquDX|W4eqTIH-7J&7+{;vipsD94oX$WG9~MUpK7{=%&oV{FuqV~Cq}0RM=oKJ zX;Lb%y3jL-Q3VrTSH;g`Ll&FaWORCRCqn>!sI2Xai4;gD9Qg|pMRqpO-!?t_a zXrth8qd*R3xt86GMONH!`mnKrqsOJFHI6ecHLCFycm!H!k`z2*Y;luRRbU*4O+#`0 zi-05Bi1=yYC;klMiU>_QHv7eJ7s2t{k^G5|8u@CLNpl7pV+x$gj$|qT3i}>4O5v$> zuu02|#cJJ;-3>FPNa(_;Rv5-yR9G;u9E3sIrH>h9mKcAe28 zAS3Ie+6Lcx-1wQ`wJVIg-&tOY`UhxyBAELR7-9wwPinQBEIXe>A?Q_B8mnN-$-bwI zeD6w+T>5-cx+F|C(I*d!ZzJRX2?3cURsTc=5W5af8@(|NIQD5U*LIotH2SVt!Ie*= zrw8XHK7-Ib!Q5xah-tym|1zd3^i~531X*oxNvv{>Q4grNu4LJ}78WfJ zz8c%S*w=OObH-+Tmc3%+B(c}mM0bc?y3T0yM)~BDe;Xsc7zjM`Z{tbNj^OC$4a)<3 zC%$0RA@Rx@GdqbbL`IE9X-?vjPFQ=H6Exy}hiXfM#zt?9PcD7Y=z(0SUxc+hOV+*k zyJS8}2wY6{61`yIOGY3n9Cg-_EgeEVPoBOm+9w~pVm#=@u;rRpjn`2?-Ubwl{mq&4 zT6PMi*BUoPBa@mpFbb&%j(yW8j#7`|a87}lje$dhMqDsKp5|beGMO&r55-b^54;UQ zPm`Q?j6!&m-vO6ym*wvmGnHs0OL+;-6;1m(7WV3DEBv0V(#AQ+4w!90L0gCS$qKdGj zst7t@*?Yzr2yWUekRusejb{*)*I=kG6i36ekn#{016n>VJX% z=Tbv&rL6xiDz#D?{;TY@1s~vRzO4TMbgPh~{7MVvZZmSDl-khRlC7pOKqa>;-l>77 z*s(iev*Gl5DbU{zNyX^mG&2CbU4EK5K+Gw)$7ax-u$*xK{R-X-{r(nAhx37tVDFF6 z*P+&>9~(HWDe*NbTd&XxwZ ze{S65@q+BqizTs6>7aj28HnYrn3v-=c7@6_OF8(_t@Ff~IP71#Qy;XjJ_|~Dw zQm-9AXr9uP{kt&l%diQTz>X8z_}=Hf6Z_8&DZK`WvGlg7L`>4x1hZyo$OKLD_Jj z5+rZG(jR5}mHw#OZ=`zDFh|>H;4!n~m`2#V-{8_o)B#LsKx-Uupbt>gg7Xd-i5|}a zss0uQW}4K0YploD(u2kdqg{B_r1%h6d%i3@WCQ`%&<$%L6B>-$@q2HB%Gdf%$x-fi z#ty(meUDP+OaAvt3p8fpRkS(Z!v^*4@hn+sq|3C!n2Olrk@wdD%O!^~;teTKS>weD z`Ui(G2x1tgMzf^+Y%5jT|7cv?B?D;b>C)sdic`swvpd5@P`dWVQ&8IflMz%4__RjY zU`>?X_mdGA$ddEiC=?iKOU`&jfCEk&G>CE=tLTX8Evk-C>j}J6*?a^#J0LTUD#K{a zQOtb6u=^PXTc$Mp47)SSrxqxJBY(kQ5f((%F$Ebs1`sH)<3a+u;fH?1>fx@M68@`uO&s1&b|%OqzuX9$zjdsZl0(?v0Hy$2QApeUw>E>|2;L9?Dyo z4lAEbxK%Bn*P-QGm|)f5(H1852VxUm3_@o~S&T|PFUBlF;HDU0hX=}H&8i5ql6;^g zuM2)tEAr2w)}~l952=pEvH;1BGi#&S@p+~8bDU)I#+z*r?2k7KB9>4oYfTI?H6HcE z);#3}55$`=@g_;DM3Ywc(nM9jmP9jG?GK~|AqwnxIM2>W83&bCKGY5^>r+)`FRspZ zXw{2tMm}>Y01^$eFew{^XY$r=a%{LXKn*aLVa|gWWtv4NE!c7tLlQXUDLY}diJeMm z!4;;7;{#e51&>>-0|?#9OeN=s2$+K3#GX0Km(fY6n@8p)nGN0!P8XKJaXW`O6bd59 z&V-!}>)kQb&DFIu%bonQPqLIcp=vY(n3~<0gYAM=KndfmR*E`xj@Qu2oQch(las-b z*gl$UZuE9m{c5_*X>Fbj_)V?RHqO?!2(CcBp-P?16>1Is>J$^5zN|_y14_{<#e-ye zm;mjVVp2;VO+mvAl)_XqRav1>LaG9~ZzWr^Z{_uInk1|gD3_`#wJOytP{vw!$^Fdo zd%L=I$Y^8oAwD#eUtVZqUJ9O1O;b!#mSzSaTB+$~1ppSNn?>H-5OEvQ&Fn~l3kLk= z3QyN=uCz99BT}2~(>)X~Ywz@=1ikG*0dEfW|en`M*Ua*>6 z_#-U&hJwSeS+XX>X%@X9{ULv*NIGXt|w2bvXq3@W|@IV!pMOvvrNrCo}?|Mti4H{ z3?(@_BpEU_8&Za)_-r)XED7=p8#uB}>UFCFc+=rE#V~AlR)K%2T2j_Q;jx^67@Ky0 z&_QF3Llsgwn$z)nK}WMfO}%MCM)X`cofNxZi01#}a+Y>d3QLeN?hs4M!F{^i;?HE;iy20;HJQl z4on--+)~#C0=!aUyP5@&(}z;rRgr3HS93*#A*9Q3r<2dhH7@~4mgkzOBREk(uA!*0 z3Fs3&%~{&ACVy7KjdA0NZf{6{&Kjqwa!quyK^Qm1H2VkiFl#`&x*nkFKsnw6tpE|k zjZp|J$TRc%P*v(73QG-X3WT49ZxUlX9QE)ya1K)}&tne}#I!gpFYNj0sWLp?)71%u zVtt~FK{X=DcSj^kdYS$HRH5mv11hQ)czM3m^fs~JAbWeGb0C>$(vm~9R?;nmw_Eeg zGV++SwYWAPeBRtRO+5{b7C!W<28|j|Lmzb-PWHm}U4G%~0k2AcALMRvrZwDNnWzKoOt!GcUxgRptE=KFslkD^CWUf#@6i1A`Gx_&JVO z?0Dxo-g(NC6CvOdC;WWJ8zl=)Hz#{8zv$JC-Z;k_?|7w- zcZuWu)$t}cUYX-vsysY)38WuB!|c}oazzJ+TRWi%$?+56sK+P%K^#u@oPox?QnCkv zt0zhMK(h*)i5doies~3j-c^owwc|~7yla#vTZaIFBLmHDo@q{axl|XL#jcf1?KI@6r!xlyXm1odV*-c61NRyq^>g}o~D zDy9A`u*J=ecZ=iAal9&eg|h!lH050W4#=@0FvYE5zi)GXKRm=d4fDTsLy+a|5<3*A z%$Mq+;IuJA&3>Lc_?x!vrlHWxcS>NGnW~<=zl%Q$@Nm}HVKC|zO8qc1Plk;&@#NPq zGt=`oDI5-BE^@qTM#IJ)Zcgzm4*Pv?*zfzoe%H9aM*#kQ{?79};CM@zVZQ7?2YOnZ z-+hbm`#~uw2G`-PdwLH$z)KzP5ve*CxI9Ym0`Z;)qAYV_mJ>W*W}gQdJSJ<-1JvUV z)DJ@d^>-OQ5|vvabtBEao=aq1iMeB_>VBX`I)bZ;;4X%vvfu;^)qVJ^$6${WM$3PX8i}4m7ug_nUn@`ij>^jI!DZ{23|KDWnO%WF0r}_ zEQ4cQqs%~e>RoDhsxr!e*7Q1zdhjY8F2_fi1re$fc!!d7!Ea{6B#wG6y}-;J5w6+w z^a#UxxZtdS?l%}tx@5y?ZO@4`Cp#D{GtplRAMIL|CmRWsqfL&OM_&l;ghk+Z>n{XH zJ|RahG$*Rd-q|qBa1W42d5UtOs!QcXYS6LjBGr{_xd>YS$)JA>^eb{i-yaA*J=VOQ zA22>@P}sV0D#6}yW=Xr1Xb`sT1h|867s1gQb4-zv@n#*iCY zBu^B8@TWTwWsu_x;U%Vx^^)RCFlx~tnuI%K=_TN~rzQKZiYjVp_~pNvgT1SqNhQgc z07(w@LsKWHt~YX$WXl9|vbrvW?N$WG4xJ4`gy%~!%pP@zF405P+;*5*27y+@AeHx) znR~s@_~fw%6VhcvAuPQ8mzr0gt1P(;ssDv!L|I$39;v(xCe>3SkEON(it=j$f%Pv;mXA(`hnx654B^RQFCu z^{kcJNoYhYf=^P`Xys(keW0|OVy*&Y?GzZ%SOmWo`lk0)=GyoWpW@1LJnOw|7#4@j ztIf`7n(`c)QFxnBD7hNq?u=fLRq<3X0_rzaG2fc0L@2mrsu@euWZN}nfijl!kpro% zSze*Q`JIw$&GlH)PMl`0@jmBFV8{p4%npcJUv6Tiy4>`6)=6$T#{Vj)82d_Mr<=?1 z75EubIvb`#zk%#OTiiZ;d^$S*=VkPD$n^!WW|%qNAaec1!ZO?pGtTp()XzZGr_F%z z{8A9V6TRM-ePaJ=rF+-=q}#7nhWnsm?hWQjH7D6Z%GY`^oO%rxW%qr!wJnR@!M3K= zPvXD!H)6OoFu43i*u!YmH8WAT_Z1&Ewzik9v&?SZS24NyU37byjSuWUSvkuLsKyO9 z`thzTObOvf`@MbTaa0r)SHVA zx%O~0(^KGd&g`K`1eQwOt1g0}v=q))!@!C2A!G3K`r9-Rr1Wr9TwDxC+}&RkAZsCf|kXZNwWND%Hxn%!Tcm zFE3=Gm?l;$xf`~Hi`mO}o8Lx&vpZoCB!jBHY+MK~7$^r8DkYeEk2$)ERZ)0^=Zml_ z@J+?TgyBO_U3U1;65x2M3_C{9q?*p`$C#evVN)`kL)A9$+2jlxjNMni-D75<27$ks z&e@4@T&4g<wnjY1*^u7;v;Xzq?pILtjGsqpF zVKFy1{teAg^5-)IIrl3BF+&hgPvQ_NL9T57xGKY&gRFT6Ye zJ*tF6s{V%C17|ET+x8*_Ng+)^QimgN4lwBjVzMvma)^F;HrjBF8v6 zu+&`tyVMG9dj!3w=j~wCGW6F-RP~tR?4^&HtIm7}<7Pe)`jd#MbHOs zvkOaw!8q1?mn?W3LbglRJ&w%b{T-zA$YFYE!Tc2_POV}xzm;91PKHujarj1QV3u2u zrDja-lp*OD4<1(W@BTqN(IR=@0}TEtbaWm$_-1pkjIB-{{s@5ZLh8`XrP}G;-v?l4 zBw*e7$NF*F;57KGFAMuGU>N?atbYQ0{gBi@VFubg1mVjLgZcnay3fEy`d(J5vCYB4 zOu{HN{e}a2oP;zJd0y;W?%#}=AQ=nUpRSMs2s+mY)QtMQd`UGk4&nezT zmCd4?e&_Gxshj@OrueGRNnqVf;J-A$RElqc(3f6DmbO$@o`lmJe= zMoKptDf}7Wn;KzFs-0?l9-ajc7w@dviy-`qpcSjCY4yb^;;DUz@|S-Q_th!l!t>qd z#8>@p!C(JL2H*Ti{Qf_QKcM2#Z7C*oxg;FJZ~r8NgMSi#2=SzU5gf}1Z<_|hDS0Dz zJgW`>OUmDUZPLPlz5@^kGYUcH#K*&{%rl}1(@EC6inA;~tb*Qth^L!J!)tuOJ>>ko zTeO=JXP-}!zaJt%c02e4e4 z-&z2E1Poz+f*;Z~VbaNdja+pE@%R_QL6>n9fqFO#Wh=c_o4tT@)$?X*N6qIXjfVdj z@WhGvx`bE_1McN@7#QK;&}uW+I0ldqDkq=~ znf@-iWR^$_*y^n9uPzqwTr6tWn1L*UQ{99k$T0pf*>BPaut6t~jK;CnOpW+vG#QIY zL)eAUo64AU^cd1}Tk8~=vDUnzhZhNmmY!-DgWp=jqYxKfNDD(+JZsJXZD&4ZVWi{R4hUihrqEE%|5y*Vvs(>$wXDEp7c2f?_-70fN9X{5% z$49_aKZkiL-5N~Fme2^{r=nj%I6{tSsf!5`Be2oe0JOQ%7hXgd&yv>sW1H|joe-+c zU|`lL;t>Gb{b@qR>%VXoDyBcsp9#k38!hD48V}YxUd}nMWAbG1zf0#hlKX3ZgZ4DZlH?4}!v5d|rLCc+9lK4V*ESrU zM0M`FxFD#&tAb`~uXX^zzX)a~)@%z(9Wl=UKocu8PR1#rj5lKAT63EP+b0WdA{^Tk z`xahQgQL8&Fc&oFMNCU$2H*g8noWBV(>-Z2^F<7`a7ornn1q}q*2`)X(eSdGXBocU zEL10xbENh(9G)3}FOS5nH^0V2((;M%n4Ne9Q+o5IumgUZy>Wwh?^iMDkIQOaMZz@j zWiB3#!ysK%EP0$V{K5Ygk%}H5e+eEBUZcS%e;-KPUNLB z<{O~-d>QZt1`+e6@(uK>JEZOnEc5G)YD1APt~Z_P<6b)do0uSoljZ+KWkzntuGx$% zY#KiCF#fyaP4j%U!v!adX5i+xt!G=9A$$vjo+a6DITH$RnR%zcx#2BytlC#Zo0W~m zzus_8mC80@@P=v1dlEqT*RTY%dlP!J`Ep>BTD8x6+nm}(Pp;6Op^o~)i52Ww&BqMY z=Wl~3Sc-kyoodsB)M|w7))8-~;U<=m@0e$x#D(uD;;wnetZc_v;!DNBj)lCf7!Be5 zrQsbTpyoKzWa?(Kx)-5!{(}LDPp5W3mZ@3maDl~xL|ZU*iTz1iFo4`8`?g>s69-7- zdjd~^V{yAA`(2P{mz2M&CUdLl?UFU`V*UWf?%y*Px{PZLPfnGywxS-}rD`j7bp#Aq z{Fa@P*8I3jCZviv?~ub=QQbI6tyA8BIyJ*Hxeh$EM{4W92v~Eg!#fcnq8{xF$M{8)|Xm05V!$0j$sZTT2$cAqD3 zZ}2f3jmh`~lYSubC+3#;4lXfw$>^QtK2Jv(@F_&t6P)-dN9!wP<}Nea+sTmgtwfx= z+=Xs$WiWL&<`DEL|9HI0JMs?X`a?Y;XG!rMOw`Q^*6cB(qFk7|RLhx9iO30=!Ik77fzcS0Sc#4#&lAKI`G90@#P5+g0_$w5+GB{wL zxghHFF36LESoR&KvaGryKHRd(#Wy*&n<1GUz3JZWhP-yGFGYGBz@`cu**btlj+S!Z z0E)OGnEx$l5-r0Ig2N_C_L<3m8Un|h*vT>{E*3I3=0It^ z7>*oDX(fkh(q`c|Ru#DMa_e=NWqbON`48_aC*-kp*n4_)gE?279@ls~Cgm*~E0J$wHRXlx%nov-Rh->Um&K_FFC0@*zwpnH1K*iNtyw9eOcvM5ue~f^ zYeQJR$EpYi3O|@*)qyyo&nnR;^ACd~+BDI1&(DcA=1Djm#vR}>_$I6lBiy<8&W39t zWnV<64m}+|>G(&+U^Z+hQiw9f4un)?SIy#c;aID;+=Fw27%ppiV=HdLptv^Yk-?ab zc`+T+@b?tgvC7n^%#Y}j!Fqtvm=9YAKUJJ+A*ou1ZCmL-niqTX40-S)VHKj_Jb(=kW3|4N z`k%~v?`gluV@G28$~i|+n%YZ`L(3k&{QU^-_H+C2*+O7Zr;n1j`l3b{SJQQQ^5CBK+MkoC@A%*xQQSAvmvBvLP#dQ43h z*B(=ou#Lymq(2S?W=@Z|QdBF=vf%OG*e8U~43SM) z9#O}g%8k&`zsZV5^dM!jsSzu}+aD;kay?}aEU+r@`?xhTeh;XuSX3JShgu#Rh56Y< znLb}|wZ}T23pI^itD-$SKa!di(y~caL&>61-`n7+hjdvTW${(OjZxOrqf&O zjWGb6CAD!-xU?`}LB?8@-o7Y$r>DJ~h_%`%yMQy&*>L0GI>S-xD6W-2yp<#46d!7%lhcn>tADx*MDSDyQ0@Ft0hA0C zFAFUY3ojH|)=`)Mb+*OBOi@Wz8T#3YNstRhwzQ_gD{5s`!wa;wQiJ6Sm9r%?HqRa2hs zkD)9LblTfH$n^^iu^WBu)im{BDfe3e@0o_WbLcFH3!fC(?6+EYvH7a5omKDM{iv+X zuzGlRE|WbO)}ZrF!`;5rKSdxBJBM62{&i{g5=>UJ?=*Z9b+Q{piNA3aEMS#Xy@M-* zQCY=T><5@7IcPUtMqv@%;K&jD`(>Gkm4pvv?XF8l}z% zZ;rZmrE`Eg1#pB9?>_$`8?&&L;ZfN~Z=58yw?=#Fu(#OC@gCSOnJW^~tIGFBzTH{s zev?;qxjhlqyxcFIbjlq7IFgd2C5dhWK0iOz*qHfGC%(TM&p5h{2#2R|MOw+qwpx#S z6M^CF@y*i?kf!_LZ=45XS;2GRG-7iR9!~cb&AvazUTMpJ!3}t1G92vOX5ZiMYZi}h zvW_mkGrkkUzQ6uTe$BShdo1|M2`5^`VQ6jt(qSD+lFs9XFXc7AH$ygfuswWaqt~uE zA(_F4J6N`7)KXM;6E3H>{B0W^vHTxi3d0=$1vvY^ zU{@r0zWgE*zt`k=M@)KMfMB9V4yI2FjOdWN7w?IzVr6|3%Uz9l!e0YNcsA`hh$qw1 zkj#Xi1xJ`JaGJ3%!tW7oI7}dUpp&&LZ73Ltop66>B!?cpfx%r_g($xm%j9_HvH$>?HTf@GCl ztflbOx#AvOt$u13PFhWM2`*jkYAsd+-_BC~I4-k0J=gjW!&R%BRgZB;LpPWp!^Pj- zs_~pHYr0#x-Vug;_a#OqKXkW})6PM)I-_Xz3EI}6UM!YC4=X3>T({PsmNGrgld(Ol z+~|=APQ*t1sML4@mxMlLLk}xC`uxy$7NbY;6aJ}&Q5T4nXGLC6IvU{kr>OC)aB(Z? zLN^BzNKNp`@q1eOTa&lLwY=JmT~m0Ue}o<{a3JIZ6!T+yFoSR#j=K6HMAF;}Wsct+ z;AmjSVgs6$nm)!Y|Ku!|EQ(6Mc5HL>kdo6gnravSN&L7!i60*x?>tMj>@aRRd%CAJ zxat~cqnqIt!L5dS1MVBR<8adofim#FGsD08a&61qU!? zQvVfk_}83Fa#b(OxN^duWL)+q@s}c=ZE>0FU+(%7;fLA=?@YFKZu-3f!E9F5WKwp1 zwBO)!O3i{MMFzc$MYU+^uNVTJID2_;5V%~loX&lIDj{( z$QZiDpU8p&j2f|rehQ|JHxyXDs^+=Qb#uEFJ}W;2?)Nab%`Gv!@&H%Fo9E_pJA8@> z+m5x+EWySC%}-a{Ahav0xS%IuO z-DG#U{@w5+aFOHvto*EnZuC8_|F@ICO8NtAksDp@`ioBjTS2gU-RS#Vzs3b)J17Fk z(f(GkaX*5?TI+Nx@;3Je5RHFsit5v?z|bZ5ZZ24q3bG>!D2NXg;<76RkF3sC9153F zQ~y+I{~Iu8LL{@nW0O4;QR>seTi;?@YJ>7wyF0gci2`-N(7*jJa5D z>2X$K9PFvW0oKyqs$)muj&PJXqW2JTX8ptCC@GA47-O}+MFp@-e(4!jx@^z0Z0{qO zn7t<|LtcKjwNDNG9yMg}GH;4Ho3cz+oMBCdg{3CDPalKbN__`fJrOW@Ae7&7SvAla zu8b~IrVg|Uq{kpD4hKLA23f^5cMr3BrK8j=IAWx=Jgd&?GMwaj904Ku=WCGuG}4-m z!4xVgH5lEEmIRhy@h+xoj4gKzvTQX~HcYC@Tl#U7D~M7-ny5mnU>pm>KUGKoKF3+? z8yFUj3~5hZrR(}69l*J-h&xvp>mi9IODC)Y-6;SvLCi4(xkL)|s;%RLxRF-0TXyIAVC9`DJ zSuj~~4fk2r0C?(vb=M;6(t+W2o95f_Ia*!xsnYRV*XVwS3X! zhiEA~*Gg?iY=B&-Pa@H~;5!ozASF{6SD!Q*98 zd7+ivr7Pg6En35Akz^4%FP6dIMN(g3rmD@&EP~2|E$f$+FX8o)BNt-SKc%MeiPRVl zVS9LG@mEPH3Yt(_rOc9|i_oyqCL@Wg6-Cn{nD|R<@@G@T>2Bv zEo~obT>)twaIuvyGakW8iMp|O(Z!gM#8msmAR!*p8E4_xQ?PKH73Gm(%dE_fx<12^ zF=;mjZUY*|RnC)D6#k9a2{Hg`0bIpCt9T@aqfW- z=X*O(JdI!?m$`AS(c z*~(TH%{ob(Z28@F^Xk>u5wUx40t~7 zd5RV67=8isH7Jb@q{Sx`hYeo1=57CXUSDwJRhR?Dk+b@%t&M$N0FIrJfGtRN4mSIK zG3=Ww9Lh?N+INuIp{X#z$|P_NdWQ-ryb;J^9|oW4-f#`*UmU}=hdM_@r?sUC%wv4~l>LAN9lX1oAFmFrg-!#J<7z@a1QjknbuekF!3gcVTI(~qzuQ>n^bX_h|Ni2 z5-KUS0h8d6?oHMJb&{1jE6WWAIyb>qn=g5@EWZ*kaw21O?+%M%7TGVja25aoxqh}) z$ZPTDj!aCK3A?aMu6?D|mIU~-`mF#EGRx^QRhJHVio);kIx1b~#)I59TRV}e({L-4 zW`*S31{SZ7%G<1U@bcza*%3`ji-%20L)S@HJ`a6%g)DSDvcqL6B8)~_`GtpvI4BHG zTWH~M#9J4t^=gF#ZnykrhF9(XZ4o*v2lvX`VM9U}%!hJSb1R}v*vCLZ6-;@LLiQljpKNR zcp)|yq{+60R+U;^u%v!x%kbS{mG?jpuu|U_HwA9J2kIDGDbBO~Nt76JFR4$mU;ysxF;I(&MVMBq)ltxNy^sXYpq`J;|Mf-IBUtq7L1eF z_bap~-*4q9e51sAD?T+I{OOQI*540KA1FKSN3-K{nftL}VZO|Kz{*z&h?^AHYY4Vm*ig{v){$qJS%;7+*=e zR@{T!vf+s46*BWdD_c#)a;B5?VcXGBKfdlZ%%{Qi526ia!!Mq=EH*6HerdZCOD1Hs zsZp3`nH+w|D)Mf0Oi}4kfvsYTzKD~x^=2$M8;%{N?!a|EM1=W=4{n$r!-q)u^`6v}O#GyLGdcSQ_Q`KJ9pO;g>I7vx zf0K{+n^|zWm+}spsP7?e7~|RTc7WsW1X+`nm|An*mN28h}F&e zmciE`;+fWAlNFCxIR>>C9h0|}9go0(P5&aCmRUXJ*cxndUN+Th%iT+@ z3q5a3{ZcR#E`@)@$`$j&B;Q5dkeqzPKW=Vg6A>{Y%wY+gE{ZhU9oBs0A96M&fq$ee zX@MCQ4xqOVh>Z&kvOBtQ?8VN)@Ak50Ig}^mzoS$&;7Ye6%dKvw+=)b#oNNmpQ+*JP zMS1!$n1^Ot!zm(sP(rlS1e%nMGI{^emcPRmAjMIbnnq!TGT~yS;qTVM*5sRazznQ6 z+j9ckf2BSLBwe<`y1xtOq4<{#N2SAhPJv@KL@X39Wew1FGyY+9_?;PxRsXOgZ8M5u z8{ZGdqPMu;i>34lE4%f(_$24DgVQ=DSpqAqBH8|g)yC6L8lC_ zzrt4aN%d_otLHqI*hXG{(&{#$J0eI83IHid}{iF{jQS0 z6;b{)BFJixi*+?YUTD$WVq950=xf~IzWayRIO$Q|GOnZ6za&~F91CVDrl4~QUHUHz z&ocgyf}640=zwL@ZgpQz zoEk|Hcjipcp>QNB8=l1GpTn~C<1Bw#Dn7%(hvA#xZ6&Y{gV<%C;jN$7*BZ%P{tH4d zPZk?~$!-e1nE~_UpDBf_G1xnCFRp<;=eGo35(!9Rk+=^-lj0!*N-L)&rPBz!19WxE z7T6(vH(KQG-gYME(0k*KXKbNgZPlfdFZv@TaiRht?@)n!fC(Gk6*6WGM#s1&d5tnJ zwyd#=PkMu$NhZP(bKF0?7ADO$AZ5w`%#9nG0jZ>8aVKSbs^`Pt%C*)4k2(P}0Et*O z6T`TC&Kj$BVY1)SZO15>YR|c!1=NA zd!^xdh{(z7~O?N*d znVNFV0@-^INvcYJGx%NZmcv1aON7h%i@X@L%&LDQoZq@~HTWi?B&*JsY^U@6)!mG! z;h(@a(-RLWVB(?iBp&a58;SRLeCzztZ1T6E-uQM$&}Ph#e?yxk=pv;rS~;D5I1ri7 zOnkGf4saTm+xN?N&$LXDt>d68cK;VW-i>LnzP4Us$6>Q|;WP;QlQ%}SO&~lQz5h4z z>rXAxz2|)?gI}^zQgRT+JoDfPL+$&&y)t;dk#?Saf^!q>t>II2JT)H(F266ohj zeSKV>Y^VU)Gb-cb+R-*6qme22#{^7Fw>^0LWec-k6_WUhwNKfgSf-8P0RC0$6{wUg zuVP4sVb=yVFfQDnW&x@m#?FYlH>kn%@(tJqk1MSJ}lYhxSsn&h`g~y#|{IWiR*-2A&mi_&=6l5o_V=oJp(*9^Z(`04V&@H?6Vi zz(neWg8cn$MX&JZIgY(;eXVMSF62VYc`iEv5L^(x85K_pR&2Irvi=9Q zU{P^u zo;9}1$EN^fH$ur{fm1?>gYShU4km8ps$*HOs?I8nLObsKfMb(j-Zo6YU^2kHiOBk& zm7NwEA0R8B8k!FVR0q?qW*sQIERBB()nMiSFiV1bw`@mKeS(sq7%9zVgiTVt6!IjOQVVSUAjgw)kUI!(u1}isyhN(JtpTe@w zV6p6x;Ahr8kZSqoptJH)gNHuHsRc6V7oZ|)_$4N;anScmt3ZjD7D4hW%}qTa(klce1 zXy9}Z$E+Y|1MLDi{g5)K7ame9y6=zzk8J>JW2;N#^Fp@FXt0Jr)`AVlW}xJLr;BDvsbJm*jhDIW*)(;;1}3@&KJW!ID+LxJV1Gb8Opq)Ah5c;5^F2^-pY!f z(Y`}v)z9cohsw^Mp`V7zQG6+hrs~UtBfp^js&e3vUr-e0ihqHqeu<+zGfX@%`wIjV z4>BSwba$$rAQ&199J3lco_%8diu}Kp++We5;xzfM|9|M}JU7=x^6mgn&i>768==g! zT(O0ez=-u6E)n?TH|q@dQh};I82I)+VL6u!w2tWT)}6pKG;D}I=q7o`YH)m`wb&c~ zjVn>7d=Y4WC^Gy-paY@M@E3u;4TYZcB2ZrZ!BFJnDD||^0=yFhy^Y6!0Qmjh~@1}ToQ^IIQ;erSVF_6Hgam&nH0B@un9 z?rXrLF*a|XD~PqZIx;oZuFm=nb)rJkdL?`~PvbIFqk=fQsHrQJIGa6hU7U^HUT`-m zCM4r+oW2a!#{({lT@}@BCL9@?timCCPdJBFRR26a(SAFcml?E>Kq^*o&hpu>DBLLs z6h}>`S<=d|i;&9l}lj@Gx=-$w)E#8HI$y;ThA`c53%un$SEY z8IFa=OLmH#J?=PybkCwGmxB^08WeJ>1(r-I{u-X#<4ATmm46G5m*pwAGVcU}w4wE^ z6z3!rox@yN2X0&by^>iPN6UZIrXEvW{y5YNxXu6vLh6rsMu^ z_PO{yGtG7maM9=@@(D2{z$IZEprqz`c;Db0)xB%yD@ zr}ouUbnYBe+sv2+{|IJ9lyK_%ob2W>xpE@i?ly|~Fe|Dysy;0kL`64@764=s5zn%d z5J({iF^N?AZC>P8=eNt+w?r)UI{O&XxRv`&apQL~*r%<1R#Iy>7hU4BvZAe>mlj^h z6o7=-Vsa*FgCtFe`!mpcJ|ra>cD9j*7_D@nurgf!VGqxQ>4?TZw;Wvh=I_FM!qLja zH=Bmw{s{2MX4YA@jeyAy*m><(>+o#a0VE8mfL-L?#@Nsn>r%S|wtE{RUd+q1llx=< zoK48uv&jPZCUIyHu+cRYG7(NJ9HQ|OG`09k#Is~!CRT#l1A?E~@bS-uT%TzNj1DIy z#$!yjZFGzPts9aUz!Rczaq`x5JP3b5mfabaRb>`>%{Y-PI~U%@EPH+bG$5#lZp4*1 zF)RR|)a0KIix|>L;viVEcW-Q!9NgdD?&kG&GS!VrST@P)h+@j57@pb!$vl`BTa2Bn zZne--t5l80roGwexK^yA-ShwDw#leY_Coab)t&4z&-P$LCs+bB1v~dfZ+n0;v^q-Rf3WC3qqp4;W}v%lRoC0z`8!MDwfQg`hsyBNpiPEK zzsY$y=U~s$m&cy2O#kZB(Riv7 zQhT3|Gdd;r`m%$^PPhNT?b*xEK<&57mNQf#jb|XKnqLtB)(y1%YT{07GnGH+5!qbO zS|xx+Q(zcA$o@Be=M~y@@EQvhr~3yh1yTqvqFGt{4jS!X7u*h zH;FpY4LfNX37x&}9?6iJDS^ycAfQKbitNfPj!(KHmJLbvWr`>`4egPQMQDrda=6H@ zS8D`h!S<4Ofl(lXjwC0iX-HC5#Ub7yf8kI&KeXkRqRHSrGH)oTv|Y9h1(T==#$1^; z%zgyaP8@Epfwz7*^wtj9IUGaO&Nv2zuP#z}wi@|kET1Ybdu7*muzAjsMgn za*txWCrT_UwpSwi*mLcf$P!yAI9XVa9TkYfx<4Kubu&}w6lmVNN6qR%tLAyS$@25; z6(=FWhPcj63n?FI*L%84VTrxM+rwNEZFQ0jy|7xBemzCE#H_+eOP z!j`15kOxfIL9ziVWZ(H95vV;1lM|e`BbwA0y6zP+dX$F9mWM~77>}%Sg6c+r*w_?5 z3jEwt5--5~Nreo*K!H!az~*+;#tZCJZ$+$px3Oht7H{2V6>9ysiPrg*qS<8 z(XQ}9o3okhV&cg>q;;=g{e^ZEhq!w$vd02;z!;lX9j+XM-fFuE+jr9BDz=hej_DvU>_nTl zJl2-O+&nhX_I2do96}uGXo~Qgj`is0)&ti;USVS;Py#ccw*DQLLzsn#D=&5FAaqQOa(?3aNQcv`^-Y z^7!~bwlW-VhtIzeaM5s7SP4?LtR>d|rb6CN1Bckzt#c8~2Grt2JJZR!T^fQZaV(LR zSZnyy&?;w~DuFhniAUEPE(b1A$}hnJ%l>a|UvyJWLrDiMjVI-VIAk8ek+h=IS;pfx z*RQ<6x@&C9E8}O_nQ~&9-3GUJM6~b{oFm{o3D5f1E3*iXn2; z?V*|%v|UO*=pW*P*y(maF&7JGHCb((sho~xPM7u5?e(6QWaf3?h;&(X9R%4aRP9h# z?87zb`f2PcX8^ggrpL6AW!K=Ak>_UEYw^Hj+4V3x@2Idp@(keb3cNB|{y2h8Uw{i8 zd;9}eJGQ(*Nk#4rm;)Sx!dY|v4TXzn16dvyo7$1VWEM8~a5%~^=RepE{LMeVlwE75 zCTO)k(3IC2<5OhXT`*23tj7Tz-h$kTEfrB~Pzphc3T!qaGc2m+{1GW)CgRGyg!N{E zyf!E%rh5ru?tuFcE*GE+;Qj-52+l&^I}2_joB=-SDFbeVa)VgiXcwwOb6H3Q`iG3{ zGMsU-D{<=Fn#I}qTS1tSGwrwxniHHHAx`wkujE@YXJwg`j;Nkuo@@i{yx*j$)%g@WP|k8kseub zlbsj8A6q_|K3aC(1cp$ho8A827bEDKXER7ANOABu-hOy*qxM*2E6MF0FS+*~Y zFeD8{l6gc(e4rhXJc%U`HU(~$teAz~TOpJqS7*lh)X6|{`XG>nCB{hEY;@_C%$$u0 z6=mVe zU!50d-oaq{WH%pMYHxNH_8p`x5=T>qhLC-hB%;>sYey7R+r$j{CCb*tz1J z2chb{)^00@F2_d9L}W_3Y?sotcAmUG$39JIKFv}rm@xe2?*u6+!!Dq%RZ#FQQ%tL} zlhyv@=9O%e+PN4&veWWNHP}eZTkQ@w=a)DamfnL>iddaVh)GYG(~T-8==%D(pmkrB zK~_38z7h37a8yNXevU)PDn!La4>@xuV*RZsQ_&1Btx4%^_V6xRWSEG5OmxaH9$WIu zSGU>8@l*_i!&A~TaTYCoKPEaR%)!>(MJHh0^`2*U8_0H=2HYmXCw{ylknBkklD8NZ zzBWuLq+)lPVd*@WPP1gkJlNu&OXECyYgL}GlM9z;+zFE_9tVc(h3dwEPEvLkY!_UHb2kh$Tta%c zeH32pLexxo{$R>IHcn<@v*+KG$uV^i^f+vmML4%ZTQwRrA-NoqBvz|>=2zQgYLH!Q-hRMnYK!KOUzr>#0j&!=6RdSgVkEMEfEeuel2w4!`djS-S~T_M8-1DN3&FSaRyGvU~i5#*)dHUal|Z25n9 zdl#^(sx55Ty%1${k-aV()U6<(qN3uR6cxNAc}Y~fB`Kz*CMK4Zl^rQPWo0K!vQcVM zT2fk~Wv$FkRCctoq_ouZBp&Ti<38^L+bZGS?hqUd9}A%rWnC zRzHT6TS(gD=vPVOd&}Rf_>RpFz$h+U~mha$;8@ix?8)32hm_$}`HE z57DH$FcO=dS9#_zjn$s`%h{U@K^%oJ=v!F)WZaYtWTCuMw7%C(tuIF1b&jvvFKrdcsp2$_qGM)|IC+ zb*<+`Y=qKF$d#dH#*^^u!t>Ejc{ZV_eCyDw&BMcAm`)llGuL|#%G@?aSi=8dhhaoe zhoKq!e=K50?=VM{K^(zBO--yj&LHe4=g&vRjOU6v@Q@9j9IMd4m{VB0Brf{UdkdDiwU@R`>W0_jHlO?5?AdG>N zK3TI`!B8e=!LVovCsPuosuV@*?_?xW2%JualODTsOb7XH@UwMGg$#Sv)53k&?o2e2 zf@eM5FWHM=bai_Xj5-O%g(DuG`6@f^Z1S%}KCB!{`g5M7uFM9rKu#0vNG`uww%5Zj z*ho8=E=A9IGTct?RXO+^G~of!H+pu+cW%Rwb06tpF-*-$1-6sFvwuIj$&;vjft#&y z*2Ll`y+lc6dkrtDZ}LP2qV-DtCXdhBn#&gD!N29l`#dqSd6UObuK!!MydD|To(yJq z)~7@mx}5@W*a{H$nmrHw<}`MZlJh+3jvt@dts>5&Q zf;oe7-|R`T6eC;~EmV@$HWRTlQAXYZUvjX8;TMO@*(@2Ku3H-g;?eh90}lbML)@U5pC=zQt%=cg6i$CNXd)ndfhIk>G8Pu zUh-5!+xxa*X6^&YIN2~ZiUd(6`opY~s%_BBc{1~5%;)4u^edjE1ZIpayQ9U=8^M~X zuV6~c)moxoMPE8kDqi&zwzrB8p&WT-2~o#04+$`=!xl^yZ1<$J3~my;0mWdmY%eY; z-;Qk_c;odoEaN;bdtUP_EX;9t7^!Oc7YK2%SaujQ)f&`~{ZLKKFN1_MWBwzQ)hH_79>lGH(ak7SGKz1FL z%5wC`u9Iq5)_x<_KUN23UbXUCj(MZk!P)7SP%GPXh)E)r+2v7w9$W(tbg0; zTby{?lWGlBhDq#B42x!C?sQUEa~Z!AZPfwE-w9QhFXcPIzvEK56H^n|!S)U&ROeV8 z;{Yvt2TMOJAg7aX0}^8*EYL1?f?M%yVuK;Vg@rR-m+N#)m~TfEj>+&{Xl&-n(p{LF zqc5g12!;e>pZG3JBrzfW7|_u(RuQl>Hhec099iWNwm~ZxYQ0%7jNo!9*^P`ldax@oU@wW z3fs@KBOhSmwV5d&VzM04oK^wSwu@QeS!nfzf0E7~ulR`v^tjz5ycX@l1co(+MR%wp zCQr|;!?f4oeV9!`vF?Wyg-Z5*&p~u8l0Si0>*bGlnf(do9j_Jn#FJYqX_HC2fJr~# zS>V1ckl7svP$}}{ECI%eq%28cI&4WOd>kxT zB?M%<;vxgD<0XPG?|+6>oEb9Vu*d&A_El1T1P=`zKkRv)Z^jh;7sZEe)#sl5)&&pF zf=UbdbCu!=#gW45<`Vrd#t0*y_OvQqCkCa;v82=TE@1C`1t941MU7~R4qvSl(BAQqhnK{x&fJ&bn)Huz5Ro(aJlV6S7P z>W;yY;nFIhhqVWUt*C3_Y;1JI(tB(zx5=W zo4>>sa(^hS9DZdj6%ZjKzxI5f+>Hj|PrMa7x1SQ`cpCGK=T3ZAe8X1Rgx~x?_!ZxI zT3NyvBk|cd>UHkH5KM@C2YKBtr@uo+FumKZ9k`1G3-@<_(kN z^cky2V}D1t=N{~y8yFR*GE$~n^DIsIb3QpY9ZR7re)l{J9gzNqH9=eUhc$75`AeTP z`qPp<>wD3kp0Uck{>AR4QuU{&yE6Kav_9*(Lz#R?o;-^wjHQR=XVy0CS3j#H>9ona_sD^y^mV zF#lht{X~&5>^04RJru@ak`wQJ^e3sKaD#XMe8rGe)vP|nd5^_PuSblg?tXTdOerY{ ziS3zfJE;vB)p!_(Pi(lCfJZmsoIE}Qr1xH#q2^rw1)zVygyOJ0Yc@kUA(@eufNN-N z+2vr&O>KLCZ4ZM@qFJ)r?MIj#MgY_x8eti4n3TQRIJR&EJ{|8r;bHar-xcwLu-TWP~AAL%~H(_MW+km-Y2WMA7b^)@Y9R-_ynanS^Oo4u#_^yY);OamA zhw6cWQ}|=xk#w;%8Gw4AEdr1k?9;Y_%}hqX&|i*ikCP%r^|^9nlcElHGjwm5`^{=a z)kEA5K-DvbW8!P1^7g5mM(R@cvH&#uGc~?=ZWb=+eGU4uZDaLL>#|d~l%2t4r*AY? zA5jk@+sp+MXH!3P&3%ZmbFx0vfn{0DaB&p zqB!+FfE&lF)3F$mAFpO9cr*2-1T|U#cxRG299DE|HK+Ls#Kj`uu!p41f}y@CZi0KM zahuYL*6Ll*p0mD1 z0I_1(6t-7$)h7X>NU@at;FIm)^C^JwXM-yE@=J#fYL}kt0Ay=rc?A>6!`3jYLX3jF zvi0y2NQHi+I@T52^Xa-^cx8=eQ2xkGa`qYctHs9Q2}CnRcCJY*y={QEngYOVMUu=; zQ3pqro)=sibySV0XKTT$I;q`d65-F)f-mf-E{NI)P#^&dRNpIAZvsL1YlYqRc#uz z6>ttH`~}rL6;Z!fD;@~laDR4Rss(3u1D8lU9NbpROTlPN%&qFEww4)P)GgLKosP$s zYk5rVst%g`3P8bC-mK$(wT^pxkQ*5|uQXo+zNR!Qx~l1Ib_9cLQA=c4{2Z_7(sx7Y zybiCdn|{9JcT)#N{TrZ~GTcGX8vxZ3tX%25Qje6Ix~o@1M^toIbE3-OCm`Q=ut&{` zdJ`aLDS4}G`gbS}2lh}WwhR`=x8R4|sv$z}sis7|T`RWXJ=Kh;owY#H6Lh^(3sf`# zT~wu)n%VU~fK%o!-yGV5KK21R=GX3V@^ZNAJhV^-iy&*=gUwpKCG2u z_GKufy|q9Ev!J`zU8Z)?DgY18=0{EBSZ_6^4O6aL=|6^FQbslI&vJZkHKmrY?yHrI z^&-up-fHWv`|V^{MC9Nx+75(BPX(;J>{D z{=19ek$!`d7xMu8_m{x`a0&dWi{PzWrm8ODfim#pCGbC80{`=c@r9OyTY^ESzvMhvg?)w~2jEl8c*2wrNs3f5X;aKqHN7CIvz{g${v zYKyL6!Ejq;urtO{AAgM69qdP}4kYi93?hi#!i|H}$es~^2kY=i+aGl}H4~$Y0t_7T z>un~9eRqw0QB7(`$(IPDYlB|HjP9htYGjlrI0ox2LwRVh8WyG2_765$%dYIUdy!y* zO@MZuH|a1$ZC$7XelhiFTmtXC1U}~C_-+kiFYcj1)4F)ccu0+nY6fsnVUTmp>w?hG zGmE~uF@Pn(Ekuh;;9Fh-A9rzlVT1UKduY(=68MBm;1e&3hlWVHs0R#UE`e`z34Gg& z;9asOOO19V;{X_HdOJCrg`sSFzpI1aO7UAA{Z=Qx)!A>Q`mHX0tE=DY=C`{0tsb&^ zCGzAAHP((01^g3*oKcoyJ}WZ3iD0jF+7w)wFBI1H>kZLn8{_ z1l!HVlkSPO+nL3<%62>BgGsg$SWV-bn~mCiwJglW)WW?vYKyjvHV4{UIw4RA{LCfn_l?tI(r7B`)hrpS&U7h@qaQtpn~)xw2GZwdVqLe}cy)`q1imP3M4QxW^$_oT{PFG6?5e!fhDc6vV&lyomf0+@#CF zKLj_`)V<&a?WIzghnm_(s`IcwaG#`2#nj0CKspt6fK*L|Y?ex1yRZ~le2w~-3@lge zX9(9$Qw=v?T%)c{l7a)63TqPK_L#?~sSk#@mPx@3#QLCFIz!bJ@4pZ&vqO<+3d8RK zX2mS^WFwjJj@rUJP@w)5YQ@K_BuHhKs95voThzgdtJF-pO+D$7KD&{2=ULbpGw=@e zGQJ#lhdKyW`5kH@tc-*zXY+aFlR1NcZWw6+j3-4FX<1dKJ^iR zoC-+w)c|j~M#M&~3MXz6NvoYvFdJbbt(c0uzxXwLpbWU?}w@K!Nzo^-rimZl;&0KE?HvIpHbw zU?ZN;epby@)z+2hXP3b_s&)ore4 z%*u^wvMZDqCu+DsBO>1H@H{G*djrDz88Pz(b&ygTEpJ{H6(dtNt6`XAZXD)jZKa1F z@a&d_na(N=YiYo(;W zsHV79nloR-LY(UdDY{EblFnJU1#{#!6&p+rnt3m)`$JsMOVuPTUS@1pTgjB|sv-Ao zS0^G|<#shiK{WAis|feH`fAYk&EaGro97pztyl5Pb^m6ZD+Qs3%egmDEjIg!Gbfd+ zeO*dfw0zXl)m+&UjW>Nd$k8{|XO*qdkLKXue~16#Ee0#)U2j<_BgHI5d9f~b!#nC= ze+q-l&i_#(6SV4<|p~-=lU^wxQ7Ggm*Ca?p8-Bu9waD_tk?g<&|jv zyF%Ir>hIu1#D{8{VuHZmqwpZzhw8OmIfK9%5jJF0<&JuD;8}oCIR@YoeZ+{h-rk`X zs<8wZ6tZ22Nqeyl`h!`tS8eQ4UX7N!+PGuP%@yjiC<}AK$7;NyYzOb|3~6qz*sp%X z5}N+0de-%tnRh^4;&Sh><>i=p@}PLO$%$)tXdMygo ztT?JJ3<2whA6Jt@nO!7_&3ERb$JH*x?>?axC=A+Vd3c;T{wsBjOB%(YZ1yI(!vasT ztQ6lj>Ow>#-#{OhOYFC5vic@yWVK?iigdjt+25+M%G=R0^+sIszvx?t)lMn;7VYIb zX63g?2kguKUd442KgiA>)Eu-6v8Pape~_|M5ZM19;1O4xEP4(rY)X~-Zkt^W zR{yN7cE1-0ka1cqbGns2zZC#l51 z-eSaZI#S!IxDN+Pt2|m0U?+HB-6K^V4X@Uj^HnV^#C;^-=_Ny(sr(l;_%*$)Z0>5{ zB85-UPo3n|K0w&y7*PJX43E)r;3|pHQd~#PJu%uKm#b2un`&w9V}Y2mn`#r3|3ypR z30j=FtErY5Dl^7tO+zX8CnPCOJFR@-*ORU9gSX-5>-Pv-QtT4hKx zHXkvFgu23ML<#ds{0ohIR%`RK-Po<`pmkAB`yIu5XP}y;XxA#g*w{tK@IJ(!*?3O& zaFJ%1ucc^VAzi0dzjAEKqX{x&BJflRv2NkNvj!(AO5I@TO^g=VQ^-!LsBoSL06 zA9Jl37>6^EXdgR2j?9g`3b)m~I81A*{172q?#G_dQqpW-h~g3xwMzy}BdPvYOO|d|fXN%k=fdV$o7$JNVYq)oMnt z7UelbUK*>VsJtF2llg&RN>ik2thU-6UMpY}WjG=LGRL9bua(B*wc(*0Au5tO6djm5 z#)IXN9`Q`j5}PqZR8ZWr;P%H~F<#41aO@G@?nvM&30X?bM6`2=$k|$e=c*@YDb}vq z7E`5gSS9Zxq6SWSC>akl(Sujyc57laX;FOc)13M&_@AAZ8 zH*?84FK&&!N}Hv4J#uWK)?A4R;3~e?lVmgBVOAz-b5M!}le9u5)+0Yo(&FHZ&V`Ks zAi23(fxD^Al4DfxSRUDmyJk9Hjj9!QH3sfbTPc&Z0;sLklOYdqR!`A3!P=Auy@Yce zd1zPGJq@ipw*a>xG?}VpBI4|++8_lD+K;CpDsywN%YMon{2Mt<3k&x->D5Sl_%&J= zyPe28f`cok%5jIsv}?3&{;1-m*EFq_yM+@_@}@y`O_Gz-Q1%=>jECXiP=UE#N`6yf z-E8wa!ZeWR>Do((XXkV+*WEG@MOiy}i-qx1!Y14!yKMOR`EVQc6C+HkK(z8hZSM#Y)_5+8TE|C%fj(+q8@jcYDVz=p-aH zBOy-0?DjfUXQgD_i4;~!{+(LkdDnC0$=N&6ghJc?1C`&Fn94nBEN;51TBKz}k$r(a zm!ubJS#>}~h1%E6tR5y3Z3RP>h>nFtj5UTqX8<>>Xt~Hu`rTR)ENftM>Tc*r+;q1X zb)lmPF&N}e-!0W4k+J5Ye`+|B@`IUjuZBJKD`nw*S_b+9JMKek0O#rZwVklc2eg^) zPBte7Nb)kRaA0TKS!;Oe0!8>G`K`dD46{dq*~O%kP(o5Y{(;`PWm;?8I#>CO=ChV8 zgFEUB$0#Wd4AWKe9@KnXQhpG6pc?}vTbG@fe?F+SbGhlCgX=`eeh9~B`uiHJBio-ow4~Ah1}xama=#xdt{HY* zr0aUX$-W_|BfkGfEuAT!d#;+Db zhT4o7R)=xv@JGtoi*Yy-1{kSuJO4}Z3+u61~%C<+t4la~9gty%kO-#1b04(?0IM@>$U|SvcQ*a0K z@LzTCg>~EmrD&VBzU9lu{DprT5~*AGtt9(p?PMY6a4BaAFu@cotvtUZW|NEfIVCX* zei-dtL9q5V?Cv1gyPwz2-Cc0oESBxBXzHYN8^FjYevVlA>I4k8-N8kD6^IIU-wwB< zGI4>ebC#;j@;bzS@LxaiBZ3Gml6+H3YuU+0Jq8p>S{+2v4kAPJ^OqlcO`6ZPT#Dp9v+>S2YU@^C2x@o&qZ`XWR?%98SpdyM$<6iTDd~`jUx_L754K2?#*4+Ju77@~tD|jS1 z0fse_YY0POxHPj;s@}qQ1gBiz){@cZ$bDN&>&HP3>CA-T&*?l}3P#mDPAcBk&LXBg zJ2B?RHDvEV<`0-N-_g>Q=A?woN`fJioJo-bVKTK@3|^DlrL{nqs$J;Bm&(lD+5|W6 zv$z6Y2Z=8a$C%?xHOxG<8*_`8K&X5V6KekT$;vy>E1mnk)~d~TR8bPlnHBz+Yo^5l zaAs9XB|90{MxDySJoM4`wH7^{%R8tJn2QOBBoj8-#>j~0YI!2eARD$)Quk=xm5CTN zv{qsoG1yhXvnW_2--GOw%AP%#!LfKMd8=@QIPL>&4W=M=e1L%{j(&fL?j7R#P&*x- zi)15#U}& z6!9VSl&4C`Aq-)z!JO0sxL)n>A+2e`w0eq+?40hvMgL5juUu<~S^Jq5Hu^dT7gWp) zGvfmAnHPZ1a^Q02GwrnddfSOPvS-i}4?m){!dN`zh-NCT*>d7@&HtdCC6P#NBFuOg zWY8J_=1bC1)T22v{3yo%H<(9`YPw6A3&OF$h#Ouaj%i8iJfuP0%|I-&8MuHzi*IwI z4W^(DwozQ+pvt1$u@85XKZg1B#^AlVz8K7t$22UN+#==2G5^0(P9BH6-6|0$toq*l zgti+ZdiDe+8OBQa7Z|Gk)=_UNKYyWp;<`avt--KtvG=`y)AkzckWOX<;Xzcw?8{xXo z^qthsaP3q70V`0b;AN+@^1zdsHS8*^;zX0hHDwW|AolCcHMS3on5FD50NHYz5t9&5 zdMFSU1PRQ9;g8j>P||;ds9^H#M=jocm(4nR+I{1XT8n0>fA~k?XyL78lqA?p!6lVH zYO&Vo*7_p8+m0&NjQt726lJkTGJgq8l<_|!PBso?AE~3g28oyj}8j% z4fZD`PVksuaGl^haqpzgPHIi+RZj4x!QeW<+Xn?Fr)q*{{Av@=79;?!6PyG)sk7S< z@FztGZgG^&Vhz~*6}^cma`snkp`YzO+58n&rdR!@^>8lmeT(PyxF^UnY@ z_Y9_}v6TP2R<4w~Wa>TPaq`d|n9pC86XlV$C3+9J;}2~t^i{oGyk3D*EU9gUUTv)Xc3o>_ht+SqlkWdE(DyO%oYnZcZ%4a1b^gR!ulQ?s$UQoB!paW3#7Rfs&G?KAL=idReHIogo8MlvW;FKquF zE@on)Ym_H6;5*W!y=gl!;0fHwv3O-lgvyQ{F+z^Kjb7Vo4P7V&78ED4O?$m=|@OW6FtRx zK9*tI!7wVesYQ<5$iXIh{OHBlh3SY5MTiVzq4GyKb41F5+YD06lv#YtK@S*~FvDj` z#^bmyds4LCI-I#=lFPBenH7~NZ~Ucul!vk6aa_SxVJHV^n#yRD-dNE+`f%3@$@Az( zT*Z>E!e!OsB-yCySL3^}#;PxyG(DFtof<%@=Ibfa8GDgrk*>EI{RpzgY?5A1ij&T^ zFcclqvGNl5N9*FPE%coPV22G(w8@B$1ggIK1Hpl1TcA7$t< zM4Jh_5#Hf#7;CLoKkk44ZU>{lUP@ znxzRkUQ}3Z2fdE{)`>-Yo%HT<^jbX(*C^=kV#`K+XMK7|prhdM{l1#k4nYIOai8qys@H7r zuJK*fRZq4e36|me1YoS3bkjW+j!jlgki2esiUnpXTMO)ySDYYhYHQ=npS$T-DA;F~ z-cw%&Yj;mQo4d|>S=LOyW%{kgY5H{F^3(Jp^byad=@G8pPa;2zky`mT7*=IU6b1IF zdT`WM#I2Kz-ntJcLUDFqREc)>}^kc0G~jV_!s^ewvNCcfMo{AnRGqRyAl)fGXX-C z4Cq;G5bCR!^n4ho6lkvNa7WKvm?D_fFfYRV3KLdUUHvWY18V+Lb@ekpS63f|87CS2 z&^K{OK|g&aUIIDT590l@#P&x`87uky^%8b0ejJKft+mY>N1B~8^off56;RFGOutf3bH8Rsi80DJ z^nP|-segppDkJsb?j1m7B2`>RKOXx;!n1Y5^*Zjd({q%6TkEB9=8A0nY6US?jn+@% zvd8Fqn&7n*1bG8*rRnk3TD_zDNPoFQznPYU`r&>vka*EpeZTvyfD^PN%ZhQj;eI<9 zmItb%$Lq-zsF%W>fg93m@wWu;In>XZql!CedI?@c^oruZ{MWf>H3&}T-QE7{I&Ty zu0Ukdnl^Ml(?(vXkEk)oR_5&!z`A!!DnvP zSGx}Y!@6Kg+#9!`Jv%5Rx9TbGLje@z0ZaC`>UY+Xp-cqhk3@VX1-HY`+68(TO0;x= zp60@Z(F+jEk=n6zzD*y6BTR+2>1h{?>~pEO4FZY%?6>RbUWyUh-b@(&nA}k&$7#Z% z+x0?sWpEO)()kW_TCt(`4n50nVb>v69#2m5+ z9V+y)7C}3GA>9l0J?<~<;J7O5E;L7&FSrZ(te>pDOE0l<&Jtu~P6?xK-3|HpN;bh# zzP2_yBuaw(k1 z19##a3K%Q2|GxJ&i%U6*YuJrrT^5YH{)b9J3J(h!trf@r%Ctdg$ds|PO=g|=9=D4I&j%} zkDllLKHyBbSKowT?!kNY;mRq0AE{H7gRK+EkASoH&E89Gs;wKvgQ;ekKV2Z2pB=cE zOZD_nONylAw1O9Z?$fawYNhPBUr$On?Rcw0#V-zAs_%zvK>~(AaBq4*Z;J0_51>u_ zRrWlf=VL!_+A@8IVvBdxgL+EfScC%dGGX{5sb_E|NjGK6YCWty3z$E$E|VYlvGYYY zQ2{}cq#_7so)i}8Das$1X4_j&Xcl?Q1>mt4fH%DW zyqO=apo4WnK#sRL0GUXD$_1ac9w>ZVFSaEygNqBDSLtDj4;=AeMB0BF+VV-O^gG=x z>{N24a+RLrZt27&(S>@FJ1!WTBoD0CKM3W;wyu>0I5ja>@nSf-22IXkcI_oTLO8;d*>zS zLf|0HoujqpQDkdUAa2}>h}~*u3{UaVF#nrJP}@)H+09zR3rm9Pib2}cj(OD>>#Eqg-VJlT~xex zaB73zx($_ui+O{gQsIw-(1tLU)+W9( z^(9eUfD5E*?%0mbw5yY3AJOyVrXBk4@SXoUIxq)i_3LN|wwY&M*ULiO-JKMr>`lGQ z-6KHH%(u`->nUY#p>67A`rgK{0AX`?VUDHAJ9?zKZ>N5r;yP#oVqF}X|1Nrcd9v(X zOiB4?oB}H`kE4{xA1bmmB;fQT@Mgx5#_`3AGQwood-@2B2aA_~-Q0ZfJqSLg+$-MK zmo)1Q|CtEK!e;nB0ebWIpf8Xvu^;FQt!)5Ifx=9?oo!Et?Fcs6lK{itAQ-1#fOAhD zfb?9c`aoX|8Xi8@TsC}&>2ZsBsS>kSf5!sHSa;5IMAbmb?u_*HK8W58s}W=sXN@})Ab_F}pW=Vy=kk@~N5e#-weyq=Q_YGvQ^kb_=OxS02rx)zA zrt)^|gIBJS>#M2{zobz$a6CqiQNRYEz40GCsr&;?{^l?6Q~)b`grpwFr4#$UfF=avzrf5up5%V1 zrz!(gnd)v7Cvm%QSn{FB@TP$Y-9f zocopD1^4xuC12}}L(d~?aDXhFdPzY^oc-P^7vB#U8RvRr)a^!$EdD|N1;Vl56pH0? zv-A|YXK?PU0w;%<(LbWI38BmW39T!bu;jG`N=kPnEL20H>R+E!_>6(PC4$9 zKZBZeK(fw22OW_0XY^F}aJwKINWn53l0J8aEr^uM0r{3V{zt{`lx>Rl^t=^B3j|M&XWo=+Mz-?BA&E5b2rc^jzzWZ@oA=Ay$r_)8BQE zK^n{n?rE;pV{5SH@oMxt!3P}4E)CCtFB1BbCZiOivn=`*lM=K7#uoVgA;#cZ!&YYuywa2qBQ^w*SJueDgbJ!`V*@QRj-iAZ zdr-@FyNw;8$H4LkIUA1&?hWC_oDh5CP0?vDdWTJnUvL^QDcZ=x8l@~zjhR@gJgFL( zYWrJ`=*AIOKhrdfL7}cM&9lvnoDl34&u(e>VCAtNM#z8oXI~eh#qV#ej7gR)d zGRzQXQ1x{*c2ac-u&E*+6}rzZSEM}D)yM=D6ixC_DZ?ud-Fc8p-va8@QQ z%UEr1Gs_zj7H?@IX>x_}7Xn2LHI^W)qM=3+F58g!5eR`>YDO5Gk48o&z&bsG^hoZN zM!GUVb#}sTX*Ln^#|nKFZ0_X$1cu6Tk}MdB^mC&WG=cZx-C5vWD#Ym&O1!@`q zMQ0nF5zfdq%3)P!8(C3TBSxq8Y!%$t=!=?M3uN7|v|^O;yL$@YjQW@qk2X?!ljUr6 zS!t=R&|g*>O);9=S^MscUH2*ds#RUdc%n49%IFAK`c=jt?<||h>uV8Ne3g+7NvOCAb+wSo^8jKUn?$|WF!p;&Kxt$;LO|{c>VvCIVrr=u3Ol%k!xh( zexbZvV~H}?UmI`$h{yKRt~R7u0pg@m{s1B|9X2H+3#OCon2(I$YC>8ma+X#H@!bro zy`C%Les|7;^n7T=8i*r{9bwT@p+7U1h`evRbUaemF^mvW2I)Ric{TM#}$(qYNb zxqwdtT#gptYcap#ZopTg8}QYiUv2p{g^YQftzeY|)0^Ox>E)qCLz(Z4w%Xk8h zfc_-))Kud!S64jEfy{J~a##{K5AeO$AY`gk6EKBKAoY;kteiP{JbEDA;Qk;7u^3+$3&`OtuwED(p;>G2AQr$jBHpoGshdZ1oq%r?^f^=cOd)2dfr@yn`LjS3J7 z_j^*jtm-wS0BcfA@|-656z@%8d`xwf95TJZLKQD5JRjg$FCXu zV!`_>0ZZD%twe%(vhB7SY)*IIt< zVp4C+g%BsOrsDNDLj7514&TTJ9<{WUKf~wfL|NR1+E~&H+4^~&aRuu_K*p!t$f!xo zVt!c!uH%sAaBnE!#cA9WcWqC!z@T_3Ket)BpHR22f>XG2<`@Q*^<~HH$e8{*aY;y z6|&pcl5SYll=XHLZJ+GD73{W}39IZZakk3N`m)N-66{?pMN6V@U10R^3v*k)FlSK5 zVvoJ0V_6uMkf-~FypJX1&`gy?A0^i);jAO`2>8F1@sit(l&E=VDA_n#Q;p*Lhf(Hg zAbb8{lr&>&epe6{POG`TTPkliVxtxZqs+=hMq?L3eqCs!u*+rneAx17cDoB5csIK% zZ0(=2fU@Fllmt?`+sJCh{@3T|Q#f9pMbuV@K=v#$e4Uw(8FtJp1cQj8)?Tcg|mSS_gf2K1t|a4pU3Zl z^C%TdE#?&7X9e4IpD`ie{|~?aKWq6IZgc; zPQ|;>h5MA)UL3kHokH8b+qVB{+Yj6Jom#q^iLRff-9jZZpp z*~41HS9p)@%tRU-Vorhi4Q4#dOc;6{P!BH0#tp0o$Hs@@2GxUO9*G<5$Hml2kTV)Y zUM|s37)i?J5b3)XQ*eErF(SPjrN#i43BzA6m?2WQ+K9JMUN|#h_#-OIkK$BAQ#dnW z_#^6yno#6oCJcW>4V9v249t$LF(zJq9o!^lSUtJm0Ef8Y_2AmtxDmuj*>XJ=UHF1$ zF$IUQ6SCE{6KLXi8Qe+*;gyD~j zrdT=fayqRp8670;Imp7?5?lD1A?8dN{+P;CivTOrZE*<~Ze~e*%4llQ8Ub`B41e@G zt%laoaAv~rN7QtpV!h-GiQq)aP#AI;cOI_8j2|AuU4;ps>-_cAk;)nM6bs{KvCOOo z#}h-u&8i32-o{;D56)}jX8Umxy54A`vV!wRs##*Xq&#EztgMspOc?%{zxIMtdl5vwGnK1kjH5Y_XvLYq^X-q^=aG0+G$#@#&IZtw7wY;&O zoOH8&-sCU&`BL(v(Hh;#^9p_pJZ8f1#}scC-&00>dlJLuFcXG9C-by33BZruZ?Q@= zP$jc#c#{NdCJcY{d20;=65z~);g6^VR78dHz#3eF(|-fR78Muj+RbK^*~R1aPa?Z_ zNI9T5-Dt`5o&KEt!;)z^x54mOMbZWSGhz5++>2_GrNYgG;g6`o8dPgIGhz56>aH48 z8#psz_#^6W3uToSHA*H7e?%>=Ra#Mw-dw`+k& z41Yu|voqi*EHuHE7IqXCc4wT;ZjI2JTNg1L56lwBgC+rZ~_q_3{;yWu-e+`e3 zbuSq65|$$-{8>}w!AxbF!H^G2_sxd%Ug1!T8bIZo2*V5)2NB||7Stj{Ldr0c{D@?f z8Oh2@tdd=Y<Z|Zld5f) z3AjvBU&d_mWpdMf17mLd1f1M%BzvDgPM8B` z&;lcjCPjlneW7cBip2eBI1M@NHKT`nt(|F?l)MJE-7jCiW^21x1a{JAlg6}27bTi- z7H)~8?!X*rKgrr*B=xI{eG+kJ!WVy}*bBp0NCVl%SRC>~rSN}VpRxv{pJrNIpha{t zM&XKysu2ye(u(A-3F%e8+e!;P;BUe_kRF6>?# zhG159gSSwTVC;)~7gF;quE>t?%9HOJQ(Vi;>URxnKWQt)?;FVpEK5XUF>C_t^A1L0 z3y^~e@irZ=$cV zX|GYKJcIhptLQdX7~d-!;P@ChDwV>IF=4#%BV&Z?Srgw_vVP7i*pJy8WuwL&pv~ot zPk>xwMto}Q;HvoU1I9vFgAQWx4trk?8o7N~Pe?CiZxcSqJ}x)ThMfcx0z+8cy(Z6V z_FfY+?~qZVsOJ{}u1C*B+WAL}1ukpP8KlTsFU^Eak+(_;O%t##Zl z%Fb%A<|R2(ZJ4fYE6co_z=K@eRp5Tv&i66%tjn8=Ba7yQaPLkf;T6EyHKJai?8m~8 z=ru6RK!Q}=;`ODT?yuK@U|$dGlfAHt`Cq(@nhTuu`MFORcR=l>cNH zM-kmY-b=(Jo+|&q^okMb#34JEMX5Jk2unS(Yrpl4-}=^Xedo7MO1{rK zX!Q3%>5wNs)N!AxYg>3bD!$9dBd-F9dv_Hf(n#2%rWhvK|9xs*s_4gr&Rur%zT*m4K{E^OUm@0YP7ln%iOjej z-d3(C4H#!;XRA~+!WQWnJ-wbN9dHhVStMKK>bI`&jgc8#968L79z&F1*zOaGs z;vO2bxCFlCCGc?<#iPFze^Cz&8nn6uKH(Dh#EaqCUrV}}2jE*@0^jBm__i0pcV!tT zU&I6P?Sk>LDHAQtR@vjXPWr8g0TwU?R-v=`D_D#=2S-tln5A9<-{lhct~K~Z{(Bbu zPYreh+!@5$Ti&{#59)C~sOR~hUgv|-YJuXHHEt1E3sRBpO^WIbP)#i@>JuFw)u)y( zYbRcMEszzkZ>@lNU87^8`T-QEu2S09n-SH&RzNGRjJlxnpJvXi758~hGY>c)&1;t#;i+gA=p)THEktPCMr!22JA2g{hC{_*+@b-wx1-zzV z^9{ss<7#u^K<{w3YqGg}xc6*G=wx^am#R@-pY^Fp^l0?kV@7$qV5&ZA6v}wA6pZpN zgmrQhl+9!_VzhU@3(mqZ-r=w+CgJ^s<72!}DsU_r=PiJj)8o8+5zLIA=#8M)l&ct0 zhF@ickgL4;R${Yi(w!qElf20?a*~y9;Uq6t3RX|@c1LVTp}ZlSMS0$3n6>gv#W)FF zp=s#4yg${u2H!KU@h-uD=;SrtVn4=*iILUQyvf$=RSblQ9S63xhh_gX4B4jW(&b-G znycJ&j)|SXdKhhRa06CK#Pe`30KI^N63y4H*19ay-y&Kui|{A!O7JZanphFwF> ztW1_F2hF+I^U?7$?9gNCMQ1zciS?oj9rV@pqRSlg+>XYi!sZ*h=yKANokGgL%{<9E&rm}r_s4fcZEn1 zLN&C%rKv;XqS166rBjUvb=FASqz~6#dS--{*?A9S77>T+#(Tz&iKcTSIWyG0 zF`*{l%parW0*jX~b3zTYl#3H=Vdo+#y(M0#3T604;1f9*wiEh~)T-RrP)nUJtgkf^ zBlv!5?$}V*zlrCawU!4#?PJEp%VOg~>6$%TMTUpMI@2yI=N*|8YN`wPrhg(*^(RLw_4I#453uN){}H`lGD-?lf0ILF zEAc6WZA0xeS2nn8fBIQo_LR`|GG!n#&Ndbk7RL(X7OHWPboEhgXegTGmN#Kq=CGP* zPEVNAv718Ii$Pc^BeXhYaEuqK4XIyhrDR(&flB z^L>8m+)!09DzEWebZ?>2QA=^M9kwvNTHfdPuu~qB*L6N`-dm{r1)=64+KPjR%GhZq z=I%3f#lldz5I-Vd&>+NF&nv4_SEKXmzpfaj>o%pASMMzhJu7q4)I(Jz{?BevsOCjX zloKMcq6cddS+QS(ovE<7_#2%nz8K{&R<&Fl8X(7|se!GESI*nMID{30#^;q=#tBXR zwM;{`b4{Tn)kxtsdjfKL!PsZw-$9f94w_s5v|oj?{jZ=XCg>wYs_5qNE7j&+G-dmz+1nWQh`2VnQaaU(=*&^ z|7k2`l=E^bUKdL%f`2Al8CvT4{3fxo%4mo$o~Aq!%1oJIB`f@WSOo7=WULNl<13{h ztC6qPYRPKU-_|N`b%=|=Ojvs&SABGZKx+sJ9c8K`Fhpz(a_jpw}I3SG4T*~T`0TO?Eu+awS(Om=pZ!D z9f>$~{4vat-1&D2GZU#UkZ@Nb&PbT`Hwne=ESo;oNw&)U({28|M7;WZTZwXI*l354 z7>jd0(DC~rebbqUUQht7Zy^@~WQ!1Ye=qpqhSYp6zyZz_MqeQ;QPLvdtut&=U5h2x z$g*fWztL^>g)ED~62JKy@GQL1vQYIUK>r8Tmlio%7s@C}Y2>~PJKML`YX5V%yC9hP zje`qq!Hhq__$7d|x4?5+tH_p6_@aA}I<>eD=U6?2a29YC?8L2z(%hd&qxNsXvz-Uf zDGUl#EXA_0PsFJFgBo60-IW*Wr61DPP>1qDVciMP5S6gAsb&EjRz>p?{a#5j`X)3dt3<{Hkje9j``OXq}3u0?%V98a`1QX@4a{5eVKM&JguQKv6 z1ipAqN@@LSx?#JJ^wsA>jkUqLLIMkmsXe3$y@2+sg{t!cs%mRh?j_ulPI&?MhFEmz z1>LV7e*t4ic5wJ|xd~TL_9S9lnjT-d?VduX3W)PQZc|6Q$iY{O`9jrxVB!>ayn zjI2Ao7%E>z3j-mu%u%(r1`}8k=@brhsUzcwYOXc&>Z!~bTMVlHD17K485DaAs!#%b z;RZV%m&#lhu*sL02o_DzYB z*fy2U!kj&!+Uy8b(I3msRcSkr(gs56izn6nJ3{43(o@K5%kn7=)((_d#7{$$pM zpQ$rDLoF*LnjBC)4CDWK(2!W%<>gR~hU^v@5=(^{qP+>DUWEgK zv*l~>%@-}$}4O%?TmvL)#-RG22xZl>JbdYB4tyrWEF zmaUXbQmd}5@Q0Y3S}<+U$=#tVO1_k!J2{1V`Y>(+DR!*YG2B|X+7*%QiWNP4yuar$^m!-Ox?e!R-qi&5}+)n;$#;}8c%5TFZ()Y_9( zds z+Ey0&3NvGU<>mjt$8lU3yS6U!V7obbv5TF)_6qpXYA0!f%~enD3r)Q2)&C&#LR}L5 zcGrb`YSbHeeD>OfU|id*Y1Pz@H$ru4?fwsBiKz}#X>W#l+P3m{4Bb9ccf5&V-Di1E zyotLQxhG8>p66B+dsXD^&@4F@Bit@UE9ceTk3kQwGM{n-^~^h=HE{ag?}n=A=72?9 z8M{$v?z@;NJFHH<8@dtAT<`bLc+XYS-_t(**n6S+@~~779fi;R@Lp&%2(N!1>0=p% z_c61Esl0y4VU_xJF)YXQL1=V{{XdI=MaCzrbWNe|{~%QVA6`cL`~%$Zv{rLJ3_bl1 z)#{3mFe+=I-uQ?&ZK~@r^hbq14sFDZ+qRE!Kc`F7S2%hZo~5BE8oUi z58DrfN=OXm_J0vtg}-|rdkB4y9@=#-_67^STuR9NrTE3A zlS`!JL=|nJ?mrw_pcR!^ayz|>juuxL_m?WCKS-eg%|Hg)-+v^;6)*5veTKU0XsCpK z2fILH1Yg4{qYabmsE>|@x)m_rL}cOBW5@zN>HiXCw=eJhFVPC>1Z%5pU+G@%_*WR+ zwpKg7*2RDFYZL+Q!;gnDYLE3`T;YYoQ2LtflVm& z9-yY5fXmrcNNh8VwM0&!%^8}v{{&Jo7Hz2No(xrPXzfS4ah5g zs7)$z5~2pERVOiMx7?(9rvTM{P!&MGTcB_bU5`;n#qUC;3(&j=8rwBtMEqSSquBcZ z#fyD9K>y&lPka}eTZ-Ky=Lf9TADBUy%4sc=xxnd;5?IFfdrVi&MqUc5HtkD<)yTH^ zAF-p~huXsC^~<7OUHk)HzxWV!`r1;}wSVyqEeO_9V^$^%%U$Bev)&j8c&Uj`ojAY4VR?9HM!bGa^ckQ>?H`0?$wxJNpe=h(p!MUvQJY zPi_7+lwXpDqZ2VPU6u1*{SBi%4YvkmD%yq_#Xe3bkYoIh1NPQ&{K@|%93gEMpqH4?eP}^DupcjV|L)ow(P-XfjhhmozfIyfYY4?r{joQYV zxG%0*&?I3iMoW~(P79ERb9wfTz}mGEV5GNYVtLv1CGrx^6;l|Z^p_V%tO*c_42g-+ z7Z_|}Z=lCmQtzJz=Ut|?&%c4qex&@sD&X#=XxZZH5-ZI8J@m83&Rqhu_vr`#Yc z52GzO9ST%MFPH?fC0@`{R}5AqtJ)ED$O~$~I)(gTK(V6`62C{E=m%9AvT!)au&HwW zJASCcI(!V|)P!}o0nR$EGB&v7)SNZNi$*he^?xUWY}4t!w%T)j5}K4oGMUdP1nuYo z4AkaJXhTz4x3TjlnSjx)Ojkc3DX4N4y^EP5+gJYu8%ScUIE_J3m9c9rP|%H4UQ&=z zfsVyMkzYqe+S0_tN}+(ax6=y+b*`obSsN*YflagRIjZ0S#?;xg<=zptV4<)CEG*H( zOuo(_1$jJ8mAEdsY%z+n?eRydO>)q<5>=;)Rk1U5lGMabGtfuBQA?78>EeVco)Xl@ zYpHEgf+{1%Qx^nU{RZs3BVoQ-qAVF^!K%bsN?2R$4Awp_;%x~)u&}y_w^2SN0cmv7LrGp(rvH{gs%w#;Mwi4YZuMf{z>tZZ`Lf9* z>P8agkvfjYZgf-&A4v`LEO={ms7R0j`{ox3!hKj$|7Iatj6;BGINLD;r--b>UJZD9 zGzHSpg<^DSY|$WG>^o=^2Q4WYREb#1MCq(3--DE}c1Xd+xe9h$X11uAH=uRi=)l(g z7v_Ncm9X0~PACQ@6-Ur{FD(3hOa*}o48cw%4ysYb0!#p?CyE6%TK^DLmE2642BOIs zNKK<=;(Qr)8igt|Xq+mZ8ko;ox&o9)!rV|~irSwVgi-GXqy}bKpQefz55ifL%W6fY zq1bI&tlk$2YOUTtIwz72A+CnWTsT;u^C4)LBllTdXvD7bC zv?LqMQ*a2{l?C#d_WW8uCW4Txtu)twBojL|A^8KUWm-_K(g~0gM5nV}ji^?ZF8h<( zUn;1gJ%C`Fbr*4x+md45;)-NIGE`;)7cl{b#02W%njF*#M*GKvf7S_CqwyFL6K2kT zNzA6H^S>4Vok|bF`i`62R=u{oKrj`eK1llfmdJI1y=)^xB@%UJUAWL#%zazz3`YDa zh}X|BSxsZcNl1e27#+eIlC>d5r`O2(YfgBBbz2(F78eqBuGM^GJXB1GF>`;cT;0a3-IAE<{<3fz$DosJ zjiTs_3!n!8tv|zT5=FO4M1ze@Bva$`VoWOFOr3D7*Hs?3Ty@pcQ`{O$I?cu;Or=7} z_%`p*R{Ya8R%B_Q-$Ekk#cIG}yr{AAFE=^m`Y1bIGFzO^S*-d~-R7#xa(uczQq>=e zN8F_<25r?-ST7}|XO#9@Ris++`dKt2#f^@hr{m1K%XZiqSRJ_H0PWC9M%rzUmLPDO!DH-iS|BYUXa0O0uFhi6?K|=%oq&l>r;Qbm6}`KrL()l*#*~Rj|*KtFKTmw+=$; z`F6px=|=`vsZpnf*)wZw^j3?)Qr*@*2xP@RBx{(ruYJ(g6{qrwbP9SEi?pmieC(JT z>JJ(=VZ_8C!|RV7GHA@``a{O%Oq?`f@{mbmCrlhLb;P9M118)sWbA~Yjq8udnOJ}H zh{1-gX4mX?S6zAKW$kN3&ncJupGvDXvHsu@IY!)s$vKsW3`uE!4 zkabC|7*XxfLo>4`fMINA^$CM=pnBy&6RKp5yRnW=W#aHb6K)t<1@VMy^?R>i`K8rH zkI0#vTY1pL%Js%pu7~5GD)lCgZIRoe*??wEvL@$@${9N~CrcA$-Iz1^UlDoVUL72( z;4W;tFz?NY!5rUP*tYFL)%&JknygeW@7y{FultN(p&NP7c@WP~7dQ{04Q%8* z9Niwl?b`kLG_wJ=)zNK@vj&Y-1WjoV%$AgN9*u1)u~5-UXFaxc|65yGv??2&r?G8l zShVGK+0- zwqPlp(#~3Ls`Twa*GQi8Kfi5tw&EuE1vKBqu-%8PqTb3ob;~=?M>n(#2?1S!|7@PT zBUtL@Exs#gCe*H3!4G1g8Z<8`TdoQkJBI6JwP=i2m1T8VLv1>T8aHlU;5D8r?*X=E zlwzKouVYnZUws~eqXCptFbuul)VtUT6UKg8B$exPEe;rB`vUzK4yYJT|XzNo${!BOsI*(nOO64-(HPg5AV- z2^2pgp6*P>agw-M%ns=`u$ojIOY$O}YTVg^( z&J@H)i!m{XrhHv>n;%pXAF2uSgFz{;$ag^SmV8?sn2)>j*Oo5` z26g=yLPkXS1{ii6`$l6N?w*b&cwU@EtO9AVm&X2!#*ES2H_9(@)n9E~fV;m})td`~ zD!P`rAK_03j~ocnl)o^zrO3C7-yhXxH#zYMX9J54Z>lbxCfjgRqEoP zseB!4BrFat(oD3j(s^*-D z@s5woX^Csc0rPI<-X;IbF0vmvlfP*h za4z@uxaGWW+`aB`uZ4G!cd@s_+v!#Dhx?2D`M&VSil4;e?ls;M?t1rIxdh$U1L8ON zi|m9Y!7p`sc$YbsJG(IGzS4QkdD|%?-*9da!^A{c(amsQkGSPM<@_#pJ9}W0`>?e7 zE8;crs=%W*(c1maJ>g#AT_oDci$!Od>>ZT%y5G7d-EYNF`3(BUmF_g>A@@qp^V9w7 z+>-uu=VoVybBoj3dqk{|_sa)lX)nXe^g`ZxFUwyos)~r?3Qts$Z3KFyA`2giBn@i) zg;-UmS)H1xMcW)~k2WViSIp~BCm(az-WpNgV}aGlH`~p)+cekvI=m{jwk~!_-;4TQ z)DHd1Rn7WdL>|1@0uEA7(pU334C2Thkg*z$XH#Oc^GVWA&Yq5hM|jwby@yEaP!9>u z>rk{!(KduWs*^wG-Qs;A#(GrbTeuTxzktKBtNBLwlGpD-tx~wrdKTDcah+3Wimc#V z;*AnNcBq+pFS;c**bL9<41Aw|mn;p)28r~kz2hBh|6#W89&1+x7N~adcWytwqbBX^ zm|hOIOzmkM$N5#3a+&MXa$W~sJI*#vCm;;I{s*mI^TQK z+*441`ybwSkTW>HpXQ&#ZXz6cPqb`xQ>#4Q(>lLvO%JyJOB8NRjZhOrCRlL8=`+tK zWLMb;%)D1-n2dPM)QJ0G_R@=Al3#g+{m0wV%S!r_A*oA#(KeODrE)kpDXD?)>jJ_c z4(A!(RNzZRFu>@0QO#63W<|dW8UdEv!S^(rn z<2=B>9Bk)h&D5Hy54fl0V9mH${PwS6tQrF;!DDtSJu(Gs16AzX?$ceiEHHZ0+R`ETQj zR1B~CY*Tx8MD^7EL)dH{Q2Dv<1g(klY{COj6h$dBBi>K$$Nn>Io&(Wl=RG7nOrze_ zOe8`(=uvQ8QC`DVATO9(!SOQBv;dFj|CXBzY|%D%`v=>9;H-1s#I`tpZT|6&72Q_O zlW;ZM2KaCJMn%&J-0Uy%BFCc%o%2TOWZn{RCV3Fhx&CISF>=Pr_?`c=b5c`o=*;p) z4spe5cay&fu{DJkYwX83PIDjDN2ZHD=` z_|N++t{zWkiE#(xWi6(mhW0p%g@b0phF z(>|W_rf42xMdbfG-49~w3tsJmxGIvcm1UF{y}4p4&U(!_+8OTs*x?(0XOSO}V6mjr z@+i*7-3@Y&KdfEN)U$5bV=r-9cI%+oaG2q31!PU(H7HUBx-ka}@B5Jtbj|z_B937% z+U9K}axL=u5w48a(y)yG=nqDD|E8%hJDp^ptO@1)PyO=fbXbsM&@657f7S^R7f$*r ze~sAUufckI%+?z1zLcj!#F>c#;KmO2E$=OFiul^AosE@)Pr2v(^YRxhMv0%Zb{3(Y zU!%nT@G;gwV7|_YN=V{o&Oak$BW?=gSMb$Ly(sBNU0~=bQ7ALek&kYBY0?butjA*5 z;tOQR7DL2{u$Sh_h_0Es9`}T4x|<<9J!!RgrYO}3dvl!)oi9hS9iv`=`GBNrlJ3y< zxgM~tumtOk3D@e_W~Ziq-cN%fC*&4?08~Rdk*xC&Xv%`b%*Te#8#@2!_W~2`QnXF! zn4rO6o`L?}h~=?wOo0uZha}w)U4tKbbj+Byz$zeW* zF`-=cns$TQ4~p6lM4HB8SG9kS_sC8hf6o0x7KsYY)?|a)%!D*Uk=r!e=~S|F4a>iT z)9B9S!S-N7@$b^FwBUI1ogFfp@HW_B)L5vDWa9d-)((NM^a}Su{{BeP!^qUqHE~-| z+i{+TGpuS)SjEWg7+N#*lg+g3vi?sRa;F{=7@R#)lXXzCQ-Yl^Hfpq_iBX+&eX4inxawhI{E)>7A(50|xJUjr)#)B;dLI#E|$Gp&O1vEw*kpv42 zPohFK>)3q91>6p!9d%xyp2GBnPpk#uMCy(rJ}r8U&~sR^|fZX=z_W9sGg zK^Esel1eR%QjqQ#_L{CL@hfKZ%V^K27^&OTmf+h!QeVpN$;W`vU~GP&szK#D zDt}*jSjOE|udZ?+qg&>#%!?~EE1y(mTA8ORJzhSu!b??tD6_Oea>ZNl9^%llC#xD^ zFO-z&Q_>OV(%Rmat)lTA<24m;{3T+y1`o(<(0495zFM+dzEUNB4Z=lh!^krrx?A$RWbGYNxU_W(`AJz`XGW%=NLFB1+Mh8hh@MRX zjbq7TGONi(G{}y#v2o9sSKJp<($*6^Zfb0JdAtG~eX@=Bf)ll*dW-`j4>_zz)DO@= zcA`RMYiGzTJomk~Xk5rO#jLHW3me07h@DAaI&`=|zDGde&H2BnK{di@bd?hAjq@03 zbcXJrSY5wDf(sD$q-c`VBkiW9ART7Z8uGYJ zp3drq*j(&K>kov(g>=K!hYt=51pZeBh6p&8PU~5X@xBdu*IosQR^Mabwz-8AwfS6- zhVf~3EfP1SPL(d%P!G)&ubpoY8xXZwgZ$pQ*yz-3M245z1(mU7-_uq4QTlC?T$6F>Xk?^gh}EVZOEOm zG2NqDYnwa`gNM_x$=OncpUgtb0qKXd>>#p5o5a%pWFt5qjHY!B3_CPwkj^OPAfxAy zJlC*AG;Wwov6ZQQTlFui6Y_aVzal&zi*`0P4}|?-^HI)8k4A6Q=L+zfs`W`S#iO|z zr6-oXF-zTiVrr+2M)K_o_)$~U@MJh$VHP?qt3^^{oq5VC%l8{V+g{`(jR)6cnA`Hs zM7rZ*d@UmdC6W*QpqRo)V(8)gfco3pIhVh{Ygwq8vp4^cbK02(*mLLWCJoImRp`5- zMb1V1dok1em>7CKIKQCi#`E0^QO23`d1iX9}kELk+;t>QYQa8Z=e5b z{_*pbJnw9?v%T`4aeqfaOn3i~P0v1*KLg$t4+G@M{FlyrcmC&dr_WB8!_E{tn|k&! zT_55!SNcDDpLmtM9Bt>N`626jiMQfkO+Sc01>H9Ga#Va z;xz;DFCUL%W;su6!k0&VoPEv;F+sSpocvvs$DPm=`4C3FPl-pI`^3Fsy?jwTBR9%S zH&4DS){7#ts;nX!%L8(yc-3hu-*E=x4abPQQ#|eNcNYs^EEUDQab7i%EF-hL-p>8r z4{m+2)vGMax$VU7-k;uWB1gRJHFCy_H@yaKFXwJdL$vZd+1h_d4iyi};bH`ys$b;P z^`}WH_^@c<4{#dF!+4;>>yq9=QB%$q2gD2B+wM!=L2<;J=gpM;#m#aBW-fi1B@T&Z za$m%|-0d%my8Yx6;(L)LX38FJEqT8)(EHK5Pc#sNJ>TyQ{pZL`7b6GL zWv25oC^kXyT(Qk*;rExH;`*$28#2?=9W3rc!cWMx@;*`1o9eXkLUOQ}hTOj3)pG}7 z?j;$@-VWYe@n8fAjg|e7?2GWOexind+IvK95Y3zha)FcUY?ptzJLI!|F5>sN^W|-R zzPsHmD(@9Hc-P9}?!DqJ{}D$*^{t{ClwE{T-+sws2Y-=sEgqHKF7FpRTq*BD5ibE1 zacyK%q}xi2@gpPsB`A&aZl-&w-0Te&jr_C7!T0VU_i`js3qJ6Ud{_FimvgUZ?B6Rc z!wt=o5WUD5<8Bm>${mP@){xTtDD{r8vo68zrH(A-0s&w{u()TWs=`P zj&$0~QFxIh(;4ZGf%i=DbMXB2J4}by@gh6$;C#6Af;-&F#6C@K!PE1tcz`|5S?W!b zsm@MkwjAjmkmH>R&I|amYNKBaqN|IEpe>HKUh9au;%B!NoN1s~=1y`ZV`~385q4UN z$7OH-eRrwoi~KGVkAwb2ca^vg>bLSc`y<^fs9!093O`M@6|?0NPHS;aR)da%P@_}4 zQEn|~sy7GDSj25FvmDoJFFpcQ4rT~T$!QQj(|ZEWRm6MUDdr8u1Hg;@qhg%f(w!!s zg)OJaL$axpFF%&c-EH7|&)o{S>tzK$%{_uzGEF+}FK#5)eZYMJ&NWTuItTDTX`fRM zVsr6Y0yV!;EEBusScq)pwH6i*{b?iL2!Zn+GwSL7NY>irl*3s+kl*Z>cWid)llaVaPlePWAcq}+aHgac(T<0e5 zfO`;%q{&n62GPU0UCsg9Vvjbc?cC!@caG@k9FjB9Cd`G!zJRIM%R}OI#FrwO!?Gk~ z<~rTnn?)mMf&VNX^tsdrI^6H8L@}`8zUfE3RATf54&kn!Q{C>@*DX)-loXKydYKiO6&t|uG0inaEHi|TOi?TI3u@QXP=zpbQe9uB*c!pdy&W) zcc0vVc4U#$OI$6k5xvC@RL!r&HSP)7+>adg=E_q3jiMQ5Jo`ZFcf1+mRxEOIi<}|4 z`eh+_hFFdp^4sMt=t^cFwgU>x5I=)f`qLn4sQAb$3$9PSX3ib%J@P%gl=8lO4Bn6n zKVYT&MND;fh!12My0I_4ue?e)0}fSpL_qW{T&pPz*vxra(vKTCg}^pL7@tP7B)Y>f zEBgmAoT%o$YzY2r6@-4ngYuQ26SF~ut+^I){A{Apg;pY9zMnfQ1l*O}zd0^6KN z{gQGks?TO|mzU>l5FU&_0&0^xmtD8W@vp~7p%-%8Oy_(ko-_U`TOwQ2-BjmNf2+96 zf6=+ZPXotHIZL#Ijl*&g^UrSN9{BuB^!r=II`07b>D%0gyo2aQHpwCGZtr?`Hgbvi za8$FaWEVU`>n2Of9&)Jru6Ws<=~r^@cDl0{!TjLeezsQ)jZ_tHwlhlPq8E8jye~e$ z({8@5)dNP)#j~Vg{*C@-j4307WLdcxjI*6B-c9~A{}XujE&c@mfOm=aA*|3t&c@rR z`{X9M&G|$8DM*_O>P>jBHJ*AXZ1N0<5k)B1Xg1lQ9XN>%0rmk2w+lJ#UR1B~FOda*{tv;NPu9A$OE`46qdU zr2G!&$S63$2HDJeQce(e`X|IwIM2im*Fhd8zys(o#btSnf+vgT<#dmYXKQffI?u`} zVk`QAlkx|=hBgx~qLoF$GZC8!#ddOp3tqs)BS@ZnQz1K7^gzP7#*riN0GsO{Eq??=VF#4YPJciV#I6~BkXvtQgQ>ie3{hs=4cwFHiYDPYMHa`ichb z`@K1SL;q%ffZxU4;AX?X3!NqIIHxx(*}j(lq)zk_oq+jNf$t>@ zLW{#Qj|}{KCBtWxqa-7Z7=~PAED;Lt)|qxtN<$3E5x9R7xeUUZXhr6OASarHf$^0= zgCoZcxLTm8o8U#;CK#Dmg{a&bZ>d}h2~m1=q)<2w865+Y7MIJ#SdbVLk2h!manUh0 ztr_7@iU~$b6ga~~?1Y=$a|xaP{o3(?1CXpvP_yG2NalK zep@3}P|}!h2J|u7MfC%ZVO)YYgHX+BK<7c|I}$lCP0d31 zC28oF#sy45tfEFk9;xL7IYB<=uhYpJnhE+@B{3|Ti4g;Jb|L|rFkZRVj!DQaj|prN z@nqsL>wlzsThqOYaRIM3iDl7DtihF0i>fd~40|DyVY^dmf?VTZvR4Oc{I;`hMzccvKV3>VA3}t ztRS9^8EH@`fo+XGGX6PWvvdKQVkRXiOtG`z7_%;*FL4jf@VvKLyN1CU^%L?>A$#R& zP5Pv0iCcXp#LXsX;v}$inmCpmJ?26+W@(B1hKGT&Ov1+B_C_!^Fv)0q^kB5Nc`#NW zYN1oz9f_kUB!#!v8CXboz6rZosc~X3*DURo5fnNn6B5yU z<%R-!MJE&J&^CN7%*LnheWF}(BN{$SOXsmq=?!c#PEF8kFlnZOPeGo;iJKv?V0%S4 zori*K;1%I!|6G5^5HSLHq(6KvNMvkH)NnwnsO#%MMSb#)~qnDJZ_X)9OQqtw;F5l_D5&PkLdf?B;d zD2dwA6F>$GAoUTi#r}se-FA$}MuN^1-tt(}TMPFcMrEo%d5KOQ&y2y4Vgif0jV7bv zCKkxQWskMJhEM0#R%H%eUkh ztksq|$xs3_FnH*SXM}hFi=!buDd_1YZgRR^t46Py=YEP_-v-hwjjBS*lfu@VE}DdL zi8t-HRf?^F4Na{+cs&XF*s`(brD$KQi*j^u8EDY<=sOwJs&%;NjqD06HHF%)z`({u zM*@asaTL2eHWFY*VO1tK!*YWbC>X)y)qt0em^*9|=7d`bTTHSLxC>?oA3!*6NSQK^? zYJ93||EHpiG~(ly{4|;*ZD0z*P&nW*8ro2@3VJ8x9pC&@h2iPYS3%y)a)!G+~&o*D3grl$$lH zxnd<%Jw6O-7Bz|x+Dxi$9|q}a#fL#*u~@DBFz6~A_1lL*jlpGP3e3jMh_+|EiV=gv zv6d#0gRsRh>T9Et4rvuhr`}cgAg8=*Pa$9$sUO(c6^C zS;$ZJQ=(&PE6H&1sz7y7ZCZy5$uC_Rv!dGhW{?{B%C!{)uhVHaF=Hj0CjKH=N56LC zRlw@l43GJ_@!H1!{fu|@qxAL+!DdWH08_Duzn|l{I9;Uz;^GvP^=}f1G1$`Zhh{Qj z2;;|i%#fPou9bGfyX>*}KgY;%A%-vp!tGhpME)i$&KxIiBiK70AShE{V75RnGpPbl#6|2bX%Hu)65|;5eqK@+yB21VUwg6ucfm9C zo!c@qTXrssvs!j$%bbmL9xW~r9-kG9$1bF_X;~RKkGMcsJV~QY0;!&OGs3N)FJjy# zDMM{It&;XiZTvV$&ny3NP@*LMup;Z5;H3CPl{pa{7r!a-ZBVDdSB}{zgdu*#n7xie z)dTy2R;uC~K@yw#WcBsFpdzcfD)dHBss8aOKRHb>G8i{7i_vFQ=iA^!Ug?v;Jwp7Y z)_xacYf;C)3+CY^t#82er<(qKaJ5?eLr_Y6{e94%i5B*Mb$-Q{);)g+x`+Ql6klfR zBfe%tjN7kj&l^ETG7*0Pt$uhTsHz6zWzZ(P>@9d?FlcjS;s#EP*?Fz{zZujG|EVE7 z8qA*#H%D#zA?QQ3JT?C(Sf%2r;2OLQ`KR*-=+g_n0hFsdi@bh!DDnsJ@`iuR$u-RlomtOxj%v>s_I!-;*mdtAdND2U^D+r zqpu9};Xl#Y5~pD}q~if~y5weH>Cwc9(L_=!jDJ0W=lm3pWJDV z22nmEfJZCRCTiIXVY(__Cmf0pXbIEtR>N-W+(^W@6=xu%uvp@`e4l|Byy3zUH;^+# zr$hKRQN1lEF+;E+G}c5s7y&#IVMr~^oDC^nbtth1uhf$wp7;q&g7a~RnQdd-@)}5* zjAKm-eWLURPuWbDa{B0m2>&{&xRpyxAA?uFoC(s>tq?M5E}YfQGf>Y6v9J@uQj)HZ zF3ID98|hBqY$Y6zX2D?Np2pI*Fbg$uOd6EH4-FYW$Gi73s&syEWi49&8@$73OW_-x z8mSC~XKr29k<&qzei3&lgaBlOG&&QMMX9JRXM%cFzY(;_*Em|+d>s{IFyvd-EnK+* zXM!wAVoWn@!DS8F9*snEwd|E}P0SIPWDJOTGoMm2hhOWDDlNvI<9N~-`oF^r&R9$P zprO<{)ix%yN5gE*dQ5cHygVKgYM>uZZ)_=eHgrRsuF;LeRubbw^;K6rIxR#K4|RsB zL4G(K;RU%EuGdEs*U>1Pani*@S6q|Ma3+RqUfrRoJQnEyp1D@rb`2i2y?XP z_}K_DM?24F_~JD2n8nyLIpWy8az5TQvye^(VM!B{ASMns7>kdKGZbogQut1_y->I? zhBc~i&2U+@GdY~9G7E*TQ#)&glhwGI;Z9}x<5jFWdRetByoN^BdQN>D^=s}}!#O!z zUX@4=C#n8P;rZ%(jc}kgCWl+K;Sh-*ESaHF;@J$5?0|_9ZLotUoXx`xGEcKuoD&Fu z;T4gIXG>w=7H8<}70<*oFlP8K>nez7H>=$a-OG&{@A-~n7NK0`$KGhEO(Nh z5)R`Z(QrdhuIV(q2gJ>CGR8QMq&L_pI&R=dLETt5oN*ZwiVL@lhKV?eFcgL{mjJvC zVb1zOAEv9<3x}^(IrD;|s&-I&u>gX}~R>j1Ih zC^R0oONE)FEN*1 z+{7f7d%W=`KZD^kvk?Yspz$MPCOoWpSfCLkpcNouZ!9@e*3mvg<89)aS{S_Mfzswo zia6Xt@hPZQ+$3p^hVCj-M^LU0L!4zaaa-2BdKjA##^Y7djr4@aIStlO61yfrCZSde zO@5T-`?IY@vlHtM;3f!%8O&r5+VPYl^e~+)%)QOfV$Z7bDEF;ezAJHk8 zW7I}!f5~t$)DiVX$#BggD?mVYkf@TS!jpA_Y#g65;{0p1By*(oi8aTyVhuK4(@+*_ zuGWaP*fa`Oct|Vbc`m(Qh*2?NzInY zs$ejxM4fPYWCbWzV6(K8Zo_U#EV&IQW4l1f5Z8c`$&U|bqiGp=mSzPc7!3>sDH*hc ztf+F9$g&y|bENq3pj#o9XJJIxs!2FGLgu|%tfkqF;i^q2-U3=R?b!}o?X}^c4EFR^ zqQUZL=|~Ze<3T(xV(nXWq-_42X|L=MCAMmimM|-Vs_IKfFw`BQcndXWa&^$F?AmLd zS-$XSo)QBS=ok}IP+$j5&DA*zDq{E(;U>wr++CuLzA)-{MDg#IkP?A0cEQsUmFO5V z5HY4zvw~;=nws?VphV7i5yYj9*L3Dc8O^mkN}(gPbt1+M39v4?8y`Cn&0`{5x0FaS z4mYY;N2UZ5c1!wznP(?8gOO*vqotOi!E8}137IBn_tB^r+^`bMU{o?n8i+j-(=^I& zsf|2hXq^cOK42&=kBh`GM++~=N<1-5u~E!~r~-uZx}7j^G}+r5g-fgQb;8NR32LL+ znCfoHYZ5aw#gpQA+~&vN=pt>fF+m0jWg;dS9$R8>tC`zIshUTbiLr5mvJ@==Z>c#= zvKDTVC6>Wv-C{LRAEGOfG6AE2j%a~oqSaa^HNCT=-iS-4S!5Zcs~7qM1>f_#Lk zPfFv%>(Q80uEfGMjHa+`(OPj$RmnQxa%QGC+Tgy7R7`kTnvDYDaf`E5Jd?*#Se`gt zT;hdPmdD5dT|^7BA}rd7x6I}oV~HjnzfQy(sO7YBdCm21i|Fnw1@F;uRn=nHixkC& zYz(QQI6LJ~jS`xsB$gXbbJF#i{pPt`pvg*!G?6YsB2e|qg)<^y5Z~%lajI&hSzy1k zC~>Ow$a12*s30ne43Vi5h%z{pVpo;%eVPr8ohFDj!=r7ZbaO08A6MGy>`3ST zSK8_9{%1?uKAHWx*=T9ohg(ZqDpT2cW%ei!Z+cCzgz;-DHt|fXO~Sw}Bz|QTG8l`u z3G>>-d2VWwjUSD0BdkMITdc?-xsgG~V~bU%rWs5e3%r>=vn&M(5`-iOGzrAS$1u_4 zWXBlf9;}UhkECLb!x%XYpOq24=F(dxYFG@hA;n5USeQ6s5JrxT^D0WDQ?hZJ8n5HD z7JH9uuXW+|JjuvSzgGnQLO$|-du<)pJ0h4)PO-uVHMQ_hdhPtMPX{St-q#OJIg{AMFqTILiQ zVLsVBg=ea#oikWm?i{e^oqWti39O$8Y0(`@MjPx?;#B`=G$u)t;a|?<038Eq0_BDR zSc@?U7)k>>rN&nZXSDbdUxybYqBgc;!15{R81{mqn5HU*Vd@0ubx~ZX2K(^Ltc17& zZ;-Gzvu}`?-puF_>&>)!<~wYBC*sTm`YvadCd$N--JFB3I%o3~4g16!fWC>nwgutL zZtgAdHoCd}zbpe^-8<#3#!CHD))f3L}} zYk{UFQy{|}b*Or{Ou4z{3dcLJCswh0)Pfq}aKm}gl^Xu3g?Qt?FSpu%l52E=zG{5+ za7YcU5iSu`lmlY@WE~_N5T{}VSEHyukKZk-O|`;dKAs#bGV-d`4A&6iR`qc0aAS3A zt#Fe6CfN3?xwXQh62YoL?Qm5rn`=SNGm|9pXT(+EnG{?v2b~Cy< z&OY7c_B3Ez79dCz6ptG!Bf#>-#OcIIo1$)O77j&ICYq!?#z@uEb;2G0liron3aX=} zm?45qw;+KPZm}j=o3yzi&Z=NAg%gybufB>gI#xW^RB>AJ?ZSc(+S@!3?28Rp3#*+; z;iSlU^Z^%kMwG zLZpqwY(bLP6KbA+N&G&SiAO_$#8>=x5=Yv&JN~D{x4|kG=6t&UZ;Ai6a&9snNf-l| zeEqZ83yc8@rzi(-jxN3vK`qc6~jz8UL8O}}*UJdODe>1n)4&T7fz z(B%xQ5l&C&p$*pLf=niX$UKl5V#Lv=Sl_p~1^d`of&5Fc6KTTw^iCHmIqKOl3;&F<2k|sv{6lpoEvT=G7qk5!@ z#K|pFoYg>VnG$ZwG)@su(!_X7Y?TaUoZenf(PfGvtqq2M>xWHOXvTqaoTBOoMu~1e z{Q2Xirr|QeRExrPfZ1QD!_C5_u{_zs97$!g9e{dl17G$XC=wOJdo&tv`l`W*+aZFf z!WW7w`8RQDQ?qb6F<8CTELu)xH9TPs*PSif0KbyF*LA-EG{{CJ#lX#0zAY2yF2K=|u`LDFM zvbu>c^!y{d$O6W6CW&vYZyzD#Dp&#>q#Vw z>8cL4#Dk?odm5I4_OwC@s+8#L?S0ZP3F|MhBno())jci|=H!=u3@c)PBzK{+nxqo# zVRJ*icv3oX{e5Ufvz$aXVLw)1K}sDcT#b7pNWav!4qRc(V)4ErJ{ujS*G%mr#%M5Q zJmj-wOGUewD!K7YB;%^VCE@h!xC~<0I@)09c|{oqMJm?in3}q1OqUEP6UW%gXLBrxLzs#%g?SHRlEV z&4_e_cZu7;$?_sTM6`5n^KSQg;El8zp~>eQqB9edGbW$+1%Kzwj1# z!r9~H2>ze!80S6Db*j+-;yO?dbB7|<*YN~ix)qJ^PsSzj_%mBLq8*OK#a5_TN(5MK zZ#2?(&^S+UE{}*pXyYAGRv+zUejX_}u;%m50FjDC zVj~U`sU`;E&-w;K%XT8q-Rc&`xt(~`>nnC*F~2&%ju%*PSWLvZFV5{n7k{Am5gfC< zapFCRo*eLOEQGuov<}p10^Y)+n=?^7hebU5foBph6LB6R6e#KlHIXphwZ|W$(QdG(+miY3r!NMIK3EU)60Dia z+g;7K6k>pQ{V6l0)%A-Zm7*wPFhv32N^y5>@>raKy5rmY*#=oE`BT zlAnrmf5>X=k3bO&5ifeBkkSyWK%6AT`pLk&hN9RL@giP75Kl!evavujb8)wqf>m|< zVRgZNSW%SurM5k>O6oEs?1=NCvO53*2Kp{c&-JI9%WC2(KUEtRUqnK13(#FGTB6vJ z#U+s5)^CSm3&a+uA5<*L)t8|9D{f>72+X7V!07>D#qnsQ9Eg&!BJy=Gup=tt&%fG3 zbaiJip2+jLy#9Cr`L2e-D}`dq5qSQN)fAgMr9>&LmP;iY`wrF_Z3gAS*au(@@n29Q z7;B9M|JsYTpn>y7#4Q+WC8J#Dy4PYTdWFDWA%dtha@HMdhXx=@6IJ0%6UAgCcGxY8 zeD`zPi2+z^d9XO>1yH)Z90}8p_Q#;OMuVd)V0}e>QOCU%2%g#nOA~iQxpoG!FB0hs5&e+Yr9OvH8xcayid_VuO5A@*ReLSg7%=?1rjIi;aZ}4G??Q9fRfn9C4GZ3TSyO=KX~XV26X^ ziwM@c4WLyiXwy-A1r=H&_krl(azW-~@iVMbii0)5MSG7(Ppm;++dzRa;w*~iyvPT4 zanTJc%$LGq;2!K$3id)9fMq<3$+1wL_%zYkEd|3TYX!y%=@m!TN{L8CnIU_@oXO%@ zspR!&4F`)iygS^Aq7D|OEaBCMI_02HRh;Qy&17?|5c>gg(-KA;0621iO!R{~9f9wR zOeBjhWo;;54ob45tAP%8I>^KT@sn(hWs^T~i;K_P&)xPBlx#VG2WZDCCn{n^L|@W) z^z3$`D2!MO9zD{fIs?$!jRZVfw-xm08Cc+Zs+%D)uv%QhqsL}1jORxkR=89Op_EoGy=!hFI?r*1Cg7JPI*kTZ}*d7Hy z=PWL!`wLJ|WuaCFR8qA6sc?ovvYa>qju~InxZ&7@M<;ut4I$OI?Kk=h{T>gyG z9fOiihVCo}hmubN1=u*@_wE6eoW z%2rEnn=Q87%DR@F-{*PH962?R(KZ6D4HjS>oS93{?pZj1V*q z!h4f3695-1QaD>-(laC{%47^!#m-Bl&?M^3rY$C4DU=}x4s#@&M;fGdL&`K!2z5eg zUhKU>Y9#kg%)}Z^YovdI+9A?dX_hI1-7S&#%LFYw(7PHA^<^ON3K9*9r-bSr=}prN zsT?Dm$GgN+faE)-cTKaT_n=c3rAqvYK@!xW=_L$I=bxLtFiCJBIm95Kv;u>Yffj(V zRu%(9Dskq-Ik~Dr_;wN+c@ZW>0G;9HJ(3&kD$(X;(@Y4UCy1NHI)L&__NJ-P)Kw|~ zI+=LWysr|k>3`Ss6!7VWhVb^F=p+!yWJ}E50F2JQFeL$jB1k;}dCk8}{n4fj!0qNt z1EJvn_zY<<-mU4BE}1@&h9lU7v0pIAHK~mK4y1C?f0E%_^oxKljF(8irWqzlqkO=! zigkrmP6sHWG7%-@0V{z_dmJgm3=m%vz7yw^K=cHVd~-TllXK~e<0SJUNWB{(06F1} zX5HF5fD8Ge&nh4gV~#-}qr2|Y(33RE$$Uf2!_4EM**SPG>Le)&FYcyHCmjk#2}vfS zj}&LZuntPYFevG5BV>8Z@QgIcoW|UU+*1hBAbM?ozheOj7olDOGf`E0Pt*HDGWi`yPyJYaq^q z8V(9pju%wu;oE@sD<8xwS|bc5Q28RfLn)Lv+VBKIu@m7N{?I&(bu?4>Zj`zrUBQ%C z0ZX1S_curw<_@d~P=JU)=0efk2?69Fuj#~2o9_k{$>uBI6n(AzHnR!n3`VU-_{B`1 zUd=Lqro%iO!=?d(mVOL3XP|wR;LP3Nz!-C>fKb6Y0G&=g;1dEyWU;R1u^3#zOKImD zip?cpHKiZ-A*HB6H^g;wF?8Kyp2ub((+LJ;9oZVZF`0l@z^zVUi_FzPeH#8DaWljM z9SLuPguMt~8p666Nn^-gQtrF~P$cFXV?GR)1~c3-MrU%X;X(s;n~x!}rw&+>68R71 z0#D&h;pDy21U=Kx61g#6daFtP7z|NjC-C~)1rX^XFqoWf2_)YhXy&w1 z@W6~w;N?UEN}~($;RdqjLg+c6Q;D-mwi}?c5WlIOm`y49NT8!dwL)mQ7vRRD%|v*4 zFP^%b#g3tGvOwqN_a+a9apoe9IFX?H!Z9fBx8aX8U?PPV5sJfsP8fg|!NfWO^Uk=w z9p1kb!{3QqM|(mu1CfxzbOEkoaU=r{hY6? z#TPl+VCGPPFQ!L8L4z^7=n7H>i+>#iYBG$v6cBwmc&)G#-N?Ub|LCfSJrDhi0CENl z94@+a!7r2|(4`yxiZEOl%Bz7`H9L=MLW=^+WSr^TDFxIiXx$a%;fy|e5{`a}Vs;UZ zvd(NW#edS;aQq_=j?`0ZB}tqzec8y~^z%o`*XTbM9eI>Y7@du>;2q9cWd=_UhHRZS_W%m)ir)kOR~3AU>$ zUYen5N=dca_H;Ab)6qgz9bzAg{Sa|Ry;XIj*pu&9)qM7t$)~DToE|b#rMBtaonSXv z=@8ZjN~x;JU?Fv{z@MtVX3WP6tX1_**6*k|5@8yd zs;ZGmwd9FaH4me?Kqi%FWUerJ#TAv%rcD^MbJ~9qsMVv5$6UZ+PR_)&Fx9*Iy=5K!4Y-biC>oe zCPp9z5P785(E^r9k}wj9nPByWpu!<2s_%q98cQVoNP#-TS zqI%j$_wq#suU%vB!(W51p%>(edlHaI9ci(!#iZfXBUPq z2EvX+s%>Fx4iabmijG5Q1S}(x%OO8!6-2BEz|>nN;&b-;IUTp4e(No5W&)CCtIaM{ z(^=}!h{l?uqbqWBw5Mev$4HYbDSnF%=nsCW#U; z)EI>70<0x#NJ126TVhLBFAsejhZ1jP}>2Euz{f0!u1N;G~wPFi1M0QKEC;khE2m#Vry&YDYAbJp){;qX>}u83AhPqmgbvP z^_Z~-UcHZ*kuN}7kx2N8n^m6x=@QlgaL=t@JhTN$G1Ta_vyhW)6}z7@X-WKYC+y9 z;OyuE8(EkhGddzZYjUPkC?Csdx?0Q(IL#{470{B4XLWV?J zI@Vim&49WkZ#CtUL5Q4b5SDOT%&)bN(jYXNgpV3dKB@qVDO5_%mdss?G+H~_le4{9 z6s=?NB@@MBe(`QO!8Z}mCJP*=V6Pi(OQfAH>WE!LthQ;9MH6NiQ<|L#)qWhX;jJb; z8tHjhptEWh?E}92UQtSsMcc^vMw)b?4v|c-BD1lDSltJb^X+KVq7jz%p+j0U(&1=% z7}8A>MHVt`7vr-E9Y!aM-+t%VOfv-uqrZ9v*tpUl5R8h|}bc3f_U1lw+NXrpa zLwZ5EFR7-M{p6)`L+;S3pQzF(EL?1g7!GmSftsZ9Dt@F)k7?* z+&X`KRD5s>X!NYYn(&`pN&cL1q*H#Ki0cWwMbJOL;o%yN)Kpi|oj^#V%%SzLZ z1@d{u+s~1MnpQ!N8UJ*Fya|DVtFzIraIu`h*USX)V~gdnykEIYPf76n2O*hl3y39) z!3~d3uI4?L{vUNc!pYb?&;TOZi&SEPoWRdg_q>Pk?t%6`yz$MlQtsOfP3cTMDnt*> zaDthaubv{uG8OfC{y|1RbYYd5xEl;zp)N30DQ+@$baxAxmypKGquC*$=1_|&R9|- zj6kG!ll*Lm8Oxe&L2`1k&O`A>3*g%F z870u#M3f+?Y6Pw@3B$rOhTE|N{O@^44(it*mjmEK)7YJ&!631x1riEgbQeMMp~F#< z!}7WRgxoX7)yk9TGjzA$&kV%$o4o;Hs>_lvZoPpOg`4m~#P$;*CtYH}+*b%zo_!1z zgC7L{pbjC#wXm&t`yNVy=>pTs=nNgM=Iw5tp3?+SbK;$a6Q}%zw8iqsx^ z!5}hC&8W0h5z4~IVECQ8<+PyI z%(Y&8&TcuGgqX4$HV0}I{^@SH6W_c`6ZG+&D1LnxN}@Kw2cvZcAB+YFk%RzGfkWae zcgc?SEu%C;m*H%5rQ(&_WUE5Gh!{QdA$28k`Oe))yQw2>ntD=>MGKjVwY5%YnYNZI zVf>xDWcvi_BL+o(>U(p0s@1X37?}>E3P3;)O`G01Q5%HL zh{T3PlCLo$U z(4e|5lcMN=Z?znq3_^f5G9B%Va*Q7Qhoy3e;9fd#)n!M+Xp+)~5!_C`*&tg>ss*ej z2O+7RSXZ_Y_gbK8r06J7zS<%MYIieCD$(2iUsBK%QSip{1=or`xd;*Yh z#1bLRMFsraLS=kpEtPdcVkzyHnPzR>*8PFQ3T~dY)?OB4>n-EIM5b&BCzHoEH6a4o@N_X}e@3vU! z75+|Z4!_4oE>^4w7ttYh&J1^z4*N0&2clHeikvU_s>MoFho5c+|0{oSu`(^A$m!S( z203hT<8;o2mpUD%9N4I|w7IlgW3jD;#o<+aicd*q3;0T(GCF*S)3M7DKqY)Q|H`Kf z2%prttbq5qPswIVQ}umH7VDf^<1X>klopk`ODbG7uG(@>RnyZ;lp3boQR1oc*4EUO z)Ou=es*YQ#h2;X@N9ZDv~_Xa;Z{U zD%~qB!8g4hl;%h!cu=AaPjufWWlK|~9BHvMO)AF2f3qd8lqJoVrr>7=6QxN~1-|+{ zS{f!5;2Yoz@kQ`4(sZd*njnpm=1FcTY^JnGs**-ZW%w9)VbfpBlu73J1!Ec{6JyKo z@jDtMGh>?y8l)h`*5c5H8I_?8cvjO`&lj#x6t=f%;|gVuv7^Q-=`l!+4CMgkM;jHz z)^`DE$DkBjQfkJc`dyCwF}AyGI|9bpARXYNS1C#C2w%8Li4A)NdJ)i6={0_Em11FU z@mE(Vx!mqoBKdKygd3$F_<63_Vgut{3yc@IyzUf2>$JAs0lazIY9+&FW*yKd2`(Zf zqae;z=qL;rvewGNH>_5oI>qjC>;Q7jy3OMGtE-iJ*dTu2f0b@LZ>`dfXRT2tu(5p0 z8l{YtbLLk{@InW-UnyXmzvPGVJkEdgE5q3{&3$r*zDk-F4E^-Cwk{2*8T&WL zFNTLJcEmeu(Q)2rU0vA+{6A}zVUbtSt63`G;2Gt6N8=u>8pj@=o?aTN) zzqnE9)$SFYJ;qbK{U)U+JA=Dl(2n;oD_3^2>zr|AsL>S4M{p%0Arhl&V08EIwZW?a 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 p`)Ky4G2`hTME0mrlKEnBLDCJGUQ)gerPf81 zSnFGs{Jk!sXOT-{7HG$i87^J{Xf|ZF%5Oxj8FG_?=SV|tF3I1Jmv{>>Hsm0ZZpf`A zr5ln<)@+C z(!|1&f&&0(_u3a9vcv-=m9rD*Lc5sQ-Q!+q zD8%C3g|FURTP)fA>+$a`W2uJ@h1E;i{l|x0%(w?t70r3)`Y_+oXD-)``U6(y<9B=0_U_8Vc8cxb}9y3Kc=I`@qb zkCYU4OWXbBFVEBxkCrU?J6WtODeRrF`{3WVh?0$e$Cj-5+gH-+U$MI<{_74)tlD!@ zj1tCb59R(^E0y}M4vVIVhIlvqaoEEx=9cqcI1>Bt6C}2E9F;c?Po`O>s4vFR{if)L z%muZf$PBNKx_U(qFblonPGsl3Vv=}*##^E!W(^c^C9E({DmB7HZVJ~EhQtBJ!NfzZ z4w5aBA10D5773@yHdX@N7bY^HcT1RP6Uhqsj}@+=Ght$>C=J|JOJszJC#kTRNT8jO z;tBCoAU{gv88j$L#0FMHi+6>w&JMi5-F1ae80$SW`&uKFHrEr6(BgU`wxr`d^=VqH zxSqPkf;!tVI`B)Zh%m!9p(bv^OWi5$rdstWt-cs3o~CU{A~$ereQ|}Lvxy>FY^TaZ zks)?aVUozA{z-s#+R!eBa>Z_0gtjJ$dud!t%NLlIEMlWXAONc~!i{~1rU?;AfrD+t zUxL=Q5%mK*+ljV<2EA6t7x3qaZ<>h1fr@b=*>Ak=q0=4wN&d@W7Ki&Aft)E~f)H;8 zil>UswZst`-(DmeM?G}zc3&gEsl?t2)V)#MSy#MG#S6tibBP+OH zlsKB+MG=>#_uQJUf^g*`K_ME_XzNvVBO)UpoQh;2rBnQ3F+;ph3m1!QI(TP2pGcR3NcwOtTX| zL`tSj#o}gvD}3Zyv#HT?44!s0Z@IWfG^5JpBE$a?7&DPtQ1PsY1nT*a7$VwG!9kJm z^yY_zfY_FY#m(YlN?jpt7oX6|73i8)fj?J>T87A_%11;3GM1+nkBVF7-|4A^|t_hSs z0gSHmYemr6&UGT_6p4q#XH@W*m_f516PbQie+nsr3U7fa<7U;4pq{J5HKLqKSBX(^ zr@`aJg5!o|zd(wh;|oL@r8M_N1lp~JLiqmm#}U@)fj=J?wM@|@P+2M#8EAfKcaav@ zxK{kzA?W1|XlE0GK4cq^3AKh}r{oZXD! z8j}qZxRbs_;-1N(uxH`j>_FkOqF!jJW6xnsW)m2P=%cNOgNt?Df&#B>a~Fu&A+AVw zD)`E&0C__sucFgw-VQ|f*HpGcOrV21L`xd96aP~9-`1U&Bfq29cfudvvqUa6-Ua9f z>b48ek5sS=#-5??c8Ry>%dn_eI=mb6!#`Lwo5b^?W!z7whkb4!@gFy`S)lLp;!Z=H zrLsNf(NlXx7q~Ym03|Q)6%FXvK5ua^W=}ZGA)R zyF4CENk`%ZhMUC^&hF->epgjh#fyL&e;GJqX^NLjTiz5|2*CH>6jvk5IU<%LbjpsP zX^C|52!>b+bvgPZ?;>MU{l;)`UO=(G>;_> zQQhNM1LLUpxM+jymE&;bKdJB?%v*7E<{j}*@mJuhcaa%?d#KL!VX5@@`-pyv`hFk= ziu1IBGmFYO`xg~_gzy;gp?F&fP_qxw-Rfe}5t}o;zK05Zf@EKk~Rq0`kf&i`kT*T6k&@eg-MUqe?3yDV{|49|dozVGR3!PdT z{uOX%+0gNKfRi|7#L~l6q7R)qC45EA{!vxc8tG=FLZksdRaM=Mbj8`KsxqX36~N9_ zRXy=XRh9T>RaGyf4>|o+Rkh)KRaN4@s;csk<{_Oxs`c-xs-KavFH}{HK%z>NMZG@Q zmx9EbnmtHUk#LO@?%@b+g4B?TchpJ_EG`!}nsK#M>zU!q!9I%m3QM{l&Td~TKG5?k zF<*#qD*GA(pf;UE78ikH(I~=k`X|yzq%^8vi8u=X1{(+N5uVWN(135mdaSn<-=Kdt zQKN6MU_}R3ek-07B8J+3kM6EZlfM^fIrX4421Quuqe!fj7h_fv3m(r|>}96o1T9|~ zlN31iz4%ZR#e>WHCSFXLo1kc3z?iPDXxt{ld1qVp9`cZny)CBZm4L#qSF=aG_Mg|cSaQXGXQfd1)V%2-U{sbhj`4udY)e) z*4GxT1Hb+)W|*Q)VEhF!$`oxM-D{A)U9d=BVN9a^!no4tB53wSGru0*4S#0tRA0STH6pnBHdsD?R)6nNx>Eh3K(bHV?XwW?6@>p=j%sq5G!AK~& z1!1XI)dMt(I#o3RU0b7tOa51cwqE{q7fmkuZqU4WZDO$KXnI#_y>PW~NAzY3a*vU!~I;RCDS>YoKqci+8AmSrwO;@*=zc!*|y zUN^qv>?6@M=9b#g)Oe;*pDuh=2V|1b0Q=0_l8m&mOaHX1c8a33r~6A)Rh%=%RkFGR zSR@~NwW^9Sj#>Uoc>@y~(o96p8%UoaO#;sIa5q5{ERkBjCG@)k<16&cR z@A@u^eT(${+f`Mak5yIujTCjfs*0;|yx_Ec4~puZ`<~AK+nYvXKC2rYyXUu1-UQHe zck5V8^T|f$#1xPbQ0eqVl#9ObYgHAGR)_x+Xua<~bJ5E|>!$Rhf(Ay0(fU`K-QLWh zRlV!fr(>yxkG^bRG%T{-tEzhKeKhWas;c)stg6cVsH$qh$5mB>KD8%o_A4i+``Vtc zah||*{D{JHT=bgTUThR!K|LiNhO(-I|2mVYmt`@lFJDv``-Kj90QHMG&slb3nMzRR+0X01Be;!tH zs84*!vVJXTPlmBW^bAbSG_bt%3WPN=Mj8IzkmD+PP`A>sWO}rj(U!(FHGHB6l{GbX z`!BD~_xBBA5NShO^J@75k3g+Nbd!?G(VHOE*KNWaW@SBU;LHXr~jSBQZ&d8HH~ z(b9NE46>no8yeRN&|n)HVnh2|8$UD|iduR63{&}4$a&pvh{T%{<_#Bg=wZz6r`i}1 zLX4m@ZH;VWq$qhOF-eS~*6obmF{4q8_b|K{up54VJL77)wVe@-Hvihr=pHk+nn=76z{AJ!Qr zTuV7!jP7w0!C{YdN8&&B$aPfF+2}4N*%H^+AaMgrWYg9zMq6XDC^?mk?p7H{f!Bc^8h*Hxd(mR z-^fk86A-r@nJhftp{b(3kx+MmLn?NmC|RDAL=y)X^ZiBO*~-5gU|bb*mqQ}w)w>Z@ z)-!N@G|>3mf49T4NAtuhjXu=%N;#UhU1_`_?xEWT8Cf{_DjkHG<36ewgpln)b@Po; zbaoJ2a%;X(A3!k!)AEf>d=4LM{N{fks5oqhk==1INNx?!qwI<$8ht%zj!zB@p2RpH zmIjM=TNsl-kvF2MWkZb2lm{IKa&Al$BwpR}kjByRAx2jEvi~FkvG9_LHObU!D8^MW zR5XMSTQZyxr9=*ffGxO;bAs)RV{mk$toGQ8gtkx^xQ%G!$7M1Ml|pt0ys8t4YSJV z4awH4jZxr%N}#T#7`mHR8w~**T@B}V4>W%q>XkyeuovTR))Ph_8^{QJ^n@{lPd}Z~ zP4Rhhshm}plp=07(Jo}c!I+MUdA?Hyl%gLu1)4u;qzN1h4|oc5#4~jADdTZtv!Lw{ znK*r+)5T^IwxQeB8p+0Ul8mP>*BU#Ft?2ky;ML9RjO!bTZGou6#%>|D2VQyIs2v8i z$KN(S@rxaSO&=Sz>mrzT{eXFQT;Ti<#@AkBCoTsQVw(s26~^yE>H)% zrn%>-;@?IdLL?^@Cm&reAXwGso8;#}@dYEfme>>6;x%tJ#oj=w&zuyGQ|X1NCRY4? zf$}snLm2xpDbA@IPl@T~d~qPKGTodZE_QvB3^UjN0&2Bqi}4v|79!#P470oOqA01F zokU+|n6J^{3^O*cKhu0p7-hKj?;aB$SkT1uvE%R0GWi%dpUe!pkY!$j&tsdKFCdF= zCOOlanOCRqWXON)|CvZU%AM(M6Mfapkwc09!U1rLJadQmh|2TKWb0!H)TZ*UaR~iMAie`!WqgVtS|8OY(5#dBnh+-f z6`f5ojFY%t<)g3^3!AK+-OL+>@fo0=W)gMnVLl~350v*XOQPaVKp}5E)3v@hLH7?f zuTEqZ&#BBBiNvck&#x!w{9v=Q#cY$xNBa`!#|gd$G;4^NDM4RJwaK!M) zb@nl~4aH}p6KL5;^Lb^Hq{odi`@kFPMw!_{oTB5SQBk>l2^DBO#+>gBKaE;>V!XpB zIfPh#d7RnSiu?i~-%?;3c2G{4l|hXsnZskg1nx}bJMeib9dB6&r=v%I_nDw2`qNHhN=c4ZcaW}9Z;*nVF2Myz6K*oO5u=)x+qhWmL!d=U<|8U`93jfK4 z&!EIoufk*@g2|!1ymNoI9KGUq#Wy)^iJ-*8b)y;I#O6 z7tUo^(H}0H{m=NHE}SEc@qYqmBO0N84=Zu*IsN4@6wYT`T;Ok)BED{5{JaZKQ~1AJ zcteH%Tf=$eMe?;EZ+BSP1sXrYOh~HKWZ1S$#je6>-V8H7hWA=d$S}VVm7*9On_>E5 z3>Pnojx+B9^SmxzG*vRM#Z2(RT)euJGZVaV%;S|^uP>IyGjADqiQz6@yt1`6ZJTMf ziHiW6gJuj82NmysBI(bWW@q|irWs3%NBQdGc9+@3sAEvcEOS>3&ldVsOA{JjVCFW@ zf+BWNQ%umGdraNq?&?@&XRLz9%%l|HJ=FFKgWDr z)a?jNZ%ikn4p+lA@Ludaq;JlNL^5WC-u22K65Jv8B~;BCy7?g zHJdi(*_P+PbR;&M8^Qg=uIz@-jP;=J=3>HUU3IANax1}NE{+@?G!u%r03RgwMq;=J zXdX+A6x|avE8)^v$XRYA5>H7S|6HCAkk~TE-@SmbADoSZ+ep^Mo`){FH!UWSzMN+^ z?Z%q8V_6fIcC>T&G3KmwEXSG|eIK zi%A>Gk--+T(tgO%W7T?}BZ2#Zuce(n#Rvd(Aff2@V;E zzt1FrXI!@3kNxrvs=VJ!!^LFi_`#-Uk(r#xdz}8Ly%7>SHn{f*TnDxYpNL{StZ;kr z_6N*gIe4Yz+~AuKLXovn!}#+YgC>;4#m93?ZdPTG$(G%M>36M>ByOdG_X53{rfVOU{>!Z0#&CIB~QNY=UEHp~ehT9h21GtB+ zNm_U>2X$JUZpnQR;acvevWLy=)I}gKW%L6uw7p1*SqvGTbT|^Y=n~eNC6-coFpkT1F(#2Mk5#W*b-6j{qhDa*_Tv}TFvGai;rNh;YG)<8~JD^&eG=)f{F zH@(Cm(Z?pL;@tzsG0z_CuSe|49T7}vN?LF-jeJY+UBHYjYPU22mepT1b?83k>&OO2@Q zi={svGFuv3Yz7WSsOYO&n1vrUFN=H*t#*2ItL@xvvU}*@!)7#%8(Jp^bZcwyrQQi+SE9v&UAv_o9&jyMM(#+j0ACUmdW0 z^@80|v>+@#LiW^)PS?=M5;MbpP$#o-z9!K_L3I2hxcq#H3Li1^y1opQXG!i+_US92 z+3Z&xY1P|2YjIEWpA&4a*;XC4ZG1hD^Qbu^%>RZed1GMR;}{^uoA3@lzHn-dxxs$~ zOgX4%Ua9#t^^Y^60}GxspYi%XRTZD0oDJp-<0KqliFn$%!Ho5O1|IdiKRT99Z7`?$ zKL^P+*QflAn1A?^&lPc$DkFW^+ zI2GzamAhc)iEZXJk>8>y&*3~ZVSRW5PsWYeZnni!QN`QM-WGRG7*#$G`0RG<#FuS1 zdz7r%98D>!_>_Hz*|OCpl;pp3B;Hv`O=wwbg|VSOKn?reuI0cEGpm_D!xf4AAjVs)*kphu$4O%ulGEH+vjcwh05C$Ar3rCO>aZi98!(T;%~PSuP0`bpCmBLgYDcFFGh^Xha4r z-eX>YC#>GzV@`_v1#IV7cL(*_Yj%$LRn^83W7k%^7sp7yDVTSfHe9~fEQ25K5PCak%M0iSgx3q^C}d4u zglh0!GzTJE{UTcUPj>}$=0zNS?VxT4%@RB7PBCSeGXJV3nO|n+#{69kE-u3$+7ZY< zWOf$Dd2BL&jE$$YFPS}zf7wLf@0W1?61NC8*Fs{KIo@1E<6kkeB#XVmEN(70Z4nh$ z`Vtxoe4M1i_*}CnU5LYd|GA|R5#)c>e9rhc_GVw!iKnhN7}0dc1X}!Nei$9U2)E;T zxWpqlQ{J_|Qq_4p_O^eR5z)164FYir<0;rF^b>B7v!ePMhVxRdw~evq7wUe&h^Hf7 zZ-lY_7pjw5D=F}c*Bfj4E!Da=De4n%GBxvg`(U$K;PWm@3ej(iuNQX;(b@pR$p2=6337*-kK%>|Vc z>0NKJlTAD%>YX6!F(Uzw+9F;ZJ;j1;eEXqSrdP64kP*qb)jl{Goq z>w0@%)Ofs})cBuxp|*F6Mcr{UKGvIcv9{7!sgv7c#G8~Bw2AX9lR9O)0+jPA?ryZ%9bQ&E`lG6EE@W!!@y1`N4P)ee=18VD*D*Ln` zQD%~}G0{8Zq8)%nfs*Dl)GA1)@@cXH$!VlL%-tHHbm$g9a7C@MO4C#K=#PKb>{i+LdOrR5RcDz@*Mb>gQUDhH$w`io- z*lh|#=Qe`1!8VmP(ubamwF`EcqzuU^w1>H}x!ZhbSe2nGJ)VJPz>G{?QRO`~IQ(QQ z_|L9c_G}b2Zz;pXJrW~BBA6TPI87r{_rwsBsz#EE1o`T92d>B z5Nu94SHlpf{yScdp;!mS?!$A!!`s_FyH^}ve14Bq%Lu?7=w%f=M%q12ycbRW$Q_6}N$ zQo&fCb(!AZ)xtJ|Qd;N})}dIjp z?4xeE(%d<@HH6*!xw4sR5I1QlYaL)`1uf;=rc5qv=^Y52XIf$lkZsbTme~32PnT^A z4Q~vCOLV&y}R8*F? z4R!6H$F`ip=60~hjJ*iURVYUr==iSLe_1YDYSOJ-D-#@$5y@LjUY&U3-J6O#%O2a+ zQQwb9OZ=VWQhIUv491Oen_6Afg46ACcyHXM2p|2@N$*ueCcN6Y8nieBD(fsqfvQZF zN$*mv%q$zymn-ZAGw4(oxrT&xXOphpejz>LT&a5~ss~oxHC=0n0qn#Q=$EeEw&_3);1QNM@^Ht55lQFrX50fvlNn3qRCcK1eK+D49=8jV=k zFs=p+Dd!M7(Lq4o1CIIYbKh-yYovmt#vPN?+}&F0fBTfcILgj zu^rtC`GO{RA+D73&Xp^xrD%@QMO4wts^uUKU;GBWJx(0aVP_Ln>;EF#<$e+H`ry%=v#ZFVwis zx6=l6d)I*GsR@&HPCt9`?hfWG~`S6%c$4dXa&fE>qizo~ZYp3xjmO>C5B)D;4nWg4ZtBz9T0NcjwQVqBFOMS@bM6p4NcMNMY;LEa-ZXj7y+e@4tE6(dn#h+7f%cBJz`-GU z5LAFe?+x~5l8P7T<4bI0xz2^SGU_-lTs^5GT3T8;6qiDs5x_mEAWkB3!#r-7wbj%r(@ zCjE*L(hlWhwdI;VQeL!&g5@LSXb6pEfVg-WCHE9Hj-h#@z1b8q`qG080^BmC_T*?e zpUE9%<1rztBrjj97JFmqzUugUW4ukFghL-$Xbby}m5m9t`@mSaV+l1`Hm2v*-pp## zI#1n~n%4Q4=;9i}(|Rj?Rp4v=;Iytpc}3v!3+E;?cDGl{Zs16}#4Ipi2^_iX8XSyx zXuwiA4|D(g57JAP1f}5|XIDMBhD|vx*?9vO+VB6zV6{f@$vYphbfIk%uYt%!Vv0c2o*n3m%J{7+7?2c525;AruYrbGN*V zJR1VZqoxts`ajay{wp=XOB1hiX(H#>Q&XLz!HY*ceX&oze44BfSA>|4?9VHwd9!NV zc8t=h9qpWosi4PkAr5Y)OJxJ5V~fTYKD|%YoOUV85~F5X6mC>_WO9*d-y#E+27YfoDG^t$7jm^ z)^%N{>6%oNuIp`GH`ux+D_v7+(lu4nHO-|9O-v&dzIy%BwK6lDo=u(Y?ObDr%!IUa zo;!=i-+@y|c6n_id$X)mLjj)Yo9*r4@?3#d+icplR8BIgOimsw+isJ(Vj~}r=DvTg42;lzRh<+HZh2H*(Nx|iR~*%%@%KwVg!=O2{Zb^fxVi#d zy+}V0kcUYf`{VRqnInPAUyO;Sp%2I_pwPa+;)k;=SYGYE+hPh|EXRx7^AB1q8>ftv zO0nnXD=HoOdvWj(^V0iYzKz3M-)c23p|T~x72-da*EZVC^ij)$pO1QY@Gr&SXPQ?m zrXO?`AZ4+Pu?tIOySBj|N?9yBe!zpW1LxV95>}@kCm)ms>N_5saAeWAW%8b{bK8M$ zx;X`x$+3ZxSez-N0_})AfjSn;+D8`4K;TJ)wibIE*0>fIYxClA*X9WG{3VvKhqO`; zI}W(G@TF1AL%8Z*LCqi1mqcFuXzOxsL+W2&`s9*ZwnsJnE2(*hVE@4b(!m`cmQ7Su z${C)tGLK1{s)fQTdgWm`WD%dqG;Ia^7P&%hFqI;?Y>ZiKm|r~4j;(LX{S_5Zm- zcBJZv|1glNRsVz&`!$ZZ>5s_nLY5mj8G&_iJEW>QZwn|2-P-$NJX{>~ot<0jIV<&T z`aGKot-0HJDWaCa8gGCsA@4mGZ-6v;OrP*ERb1eoPKp z`T3)*(ReJ!zT=OO#fi=;xibH`8wv)k^5XHtyY<=e<5k|?MyW}sd*gb?y)T=*TAqJ| zZkW{ZM&)X``pHVCJzm2hfjSN=e_Wnpt0fP2X0)Z?;t^PNaQqrMjn-HWk$_)TER`!0 z>RxH)Z{7M^CzE@_N!2+MqMR4Zj!D>bAykmgf=~N%>Uo^XwEaTn$RVA+q2lW zu6+hWC+NO%TQ1au8oeKS)?209Nr?#yS{bJ6~- za$3Li{f(z6e_IW^LV15Yi zptnI^x$Ej%A>Q(A#4}i{aE-`C=gkdMZQ*0QmQe|(HtTR(@A zO;MQVU>;aoUGz2=z1^gYSG`ARTB+O*$!9`;c~zc|kgwGCC6dmA+7{&>^n|06E?C`G;P9Yx39@^*3hM1`5`n#i{? zflqwf+avJh+g^O7io5M{J?MhBb)lC7jE|L_wS=RJzu3tE#=ILep1sIk;%asLyEyl$ z!a?0-@lE{lgpf5+&I~!Ft8P*^j%%baamtN*Ed1@V$jDfJYVZZC~TCchxunAV;0=7!vQ;HT)h zD7QF<%D(mDch&Jxet(#v%5nZI5Hk9g;0#**C3RKio71>2A=Je-Il*OeeKvU!#Xy7xeSwRm zB-_$t+tLQMrSbqYMX5XZ6}BAdUwLEwd=Hi@O0$IBPZo6oNnyM(_t+t}2#Q4gfXgq7+W+9qPRRkvEg6sWCz4YePqDdy!XLcP3j7dx^E2KwqZM5I zdw4u;T#U>9xo5mhQ(FIr!fgU&XT12;ueNsKc6#CcXT39x_COvr@vB`u@%zq$DiB0@ zcGP#EIThaS{*FO=4^()wWe@Tl{B$J!n<^GnR$z?at0(8YxhdR1HA(?DDC$>l+J8_~ zdd{2iAJ`|)VN-5D@GBp{HYw+0Jknyjef-ZDw)l;lpQURz{fsL_4^@JSyc`Ax7ZZl2 z;HgHZw+ep2i9SCGX-H-1QW;1m$f~V4RB#S!MR4W{|5aARr}|P&J=sRZmq=Y5L9ds= z2Rgqt75o;8__>6AiXNzbLTqcW*5tZq;G@EH>!NkT~b`RiN}w@2g^LXB6f#A0qKA(#1u01+c`udsM$V_g*IhwN|ME5pochaqSFNHYuAff5(?#FlqDQ*ud>7r{LDMc9n`Szfbkgxm*c;a=ZZps<1T?$T=ZTS{j`gI%tbGD(eqsNj3O5> z)& zwvsNo7;~8}ffN@V@1if@^#yuMKXB2nx#)c^dL7fKKN$2YTmti5^i0s~DZl20VG0Y^ zunr2Vtznr8!%7+Say?*0tdL(2;JDsUf{7aTDPGvXa{QtINA7^au+a!&I~0a5w+68i zh4D)RoU;592-b)91{4LsYZQpJIEeLCSR61ekgj;VS*hYmptzvA3!t_?e0@GVs`F$u|0h%ksg>x`!4l1mug9a{j6};6&-{7JL zyXcNCx|xek1kHwYzgTCH=R>^mhru2fLCIbHKtCDX}8H+RvoMJ~V#nw8>)P*CY_--NdOCl~## zi!OK3Z@TDx8qM+Nc}4@6UJIIyn4}r;n8L2tutlzNH@WDEE_$Gg?)*(vQAnR=y96>_ z^gq82^~5(WdY_Aa#6>^oqGx~Y8vmnR0zF-Hj*Cuq(e+$(gp2+YFC${l&T_oS{(lCb z9@#5g^g427vGR?aNSuzHrgUTy(%i zKMk48rGkKFSQ1@e0YoaO%=h4Ih6J6J$r`~m?7Tc@ylG^|8n1sZm{!XDPJSw#w5 zp@G8`c9Vv+SD4dk{@r^vfLl~g@$^2fJZ-mfrKaPI!ni@~IsWDNB1g%GipikUvR4$g zToqWYcwFhTisxWpc}f)axTa&F!k*BuxxiGw%lPxmQbLbFh%I|k33ElGE((Lf;-O@p z(iG+>Y^{c+D6B}sA{4ehh@t-9%WYRJ41yldCko@&39vzrDjpm3oZ{*I{kX#TEdnf0 zn*5E5_l&}jc}6PiNw$s)Y|#qjDW-#Qfkp~@K*=!{qp)=#SjSeyVKG5v+QJGK{i%z7(?#!-H2R;To&TP42`qBaH-YAs9MW1cMqxWOth1|Ju8WS)X^#J2 zKMQTi=Pvqf&|LBBS|!gbY@dd$bd_78WOUcx;*u$vs)Sz96kYBT%2hHv$_+lXg1`SGUyX! z5Ra0dPS9JiR%+2cys=5Q;W-z*(nT+E(Q{q&Bo}=ZXtv?BsvDW7m%`wvi&vM875J_) z_5+olRQWf^IbL!0>8ZeLsaUDzP0yzadtb?aq;mdIcrM31^}LdCbO}$6$Fp96jv(Yc zOBHrl6=rNIFnT%8iY;RQbygBTXcDay_NIo#DeR1fo&Ur(|3zTjjIR}s^`25Z_80Tc zYP>R=SLFFZF)K9YYE_Us+gZhKSJ;P2p4-hz*=WvxRkG~UZc6qYg(34aQrO2z{yWLT zz-3FT@P05>@}5@UbA@qhnfJTmvHW($b1<+x8x_U|Iz}&6*q<6!pfENhc;Pryf#(2n zWq+#zTv>C)`&3gBr?B%HCKSd|<{0n|UVg^ z(+N1Pc%j0aU}9{h!YrkjvEd5i_YXMU=%O$-*1<9r#>Uwg z`aeQ}{G5Oz`1^ZyYxF+;Tw%2}xz`k?_w92Ei`3*EQJB-sZ1jA_c;iq<6TDstMr+uW z3X9ROwhF7OVGR^kPs6+lbGn!-{{CINadD6fj{l?5GS3y7Ugo81yp(sViezL9t=&g=dm>wfP9kVC@hl4zY}yi_CMQ z;yD<5ZQi{1{JD;uH}Dsah+ zchOh4=+-VeL8E#8@l+lSHR803ehD-iF;+8TyTV#&7%8l^h7~ESjfM?V7>4P^J#!}o zI#JKT)Cia!u@NrXQe|dn%Kv>Nw9L;g`a{s%n8~sX+Rqie>JoZZ3F&>cQeo4y%I;Ix z6kx2>F$AQiK=B-m>$yT=Cb z$@1u8S;u(RGXcCJ9b^mBQ~|EoiPAG~RPX1N2 zST}`@(y%598?9j;V7jqq4u{fTgJ$pC$z{0z*%c=hxJ*;@iozCZ*lw3HQZfaa%tDvU zZA!+86RvNp!iw|?dns^^rmTg+mTOo8g*^z2Tk^2tA@f*@=U`mf>DTNQuh4WH2L>-) zJUHH~gdWj^N)+~}hTU!#l>H3do*6EBf-3WvR;H)IR%uvH{!0=x^m!b$&=n1V* z#jAEp)@azr!1Vq;s$?G5WR|#O<~cO?KmT2?3YBVw@*E*s#FOr#V^o>7D8t>bMU_S7 z`Rf(i&~=LUtj2o}JjY;J|6wJ(K?!l6tyI`^8g`$;wrbccg>BQY(F)tHVZ9Z$L&H*D zQR9E721Y1BwwPPBTk(*2K78436&uC8=QZ92#d9!j#BznPaV)=AlkX>axFgS2GBcnt zV^l#0V`UzN?Nf4$oqNePXupP?q;6SOa?vWqVtZIUzqW%z4VmXU@SGk1>ABKH_i)i2 zU35BV*7>qlZM4F;$5Bs_oL2sID72z;pt;~{TETLK9oDc{6!yA?ZBp3N8g{S3-qf(0 zC5FIa>$tL`iiylKP8E1XE6@^{?u{fD9j?l}rIk5XW;f(*4f_OGP!9+8TT1AdCUihy z$2Dx7!rsxa`3iei!=@=fIsRmt{3e#gSN?|7q z!~s{%FDl{uM^zyoS^W5dZP-c0JEih7noK~+u=lt;dxrCWXfh>A#wo`QT&S>P`UT!B zfWZKT&_pGq$KB-$t56lNvK9){<1R*FKWlRTK43TK7Y!@=MuER-;F}85<7|_{e%It4 zRoFRT-0D9S51FS3JiRfqUGx~6zPP{-bqQP!nw9DmHdELinh{B^a#1eYaM6G6*9}Ae ze-Q$BJcnKMb{G8!Xg17=74CxBE}5w=dZH@xlV*4qmf?BG*FqYYH-~x zkYzr%h}|*?G=F`;p@)IyvJTw?G=E9Mp>sg+;SW<% z8CT+EWy^l4<%8g`c2*v;CGBdEAE3+o+gs5POln_);J_LLx6~wfr7qYk&uWVY`^V>5 zOQHBoo`q+On8G)2J6Ib4HSdUarF66+?9W-qhIO=VM|QNM)g8j&ovb#ku@o=wkIoM||AH`r5$n=^g0K{X(fdq(ghz*$t*ej~_q0l2OQT-a?s%sg8bhAHj=|rE$+y3AV}Iu( z5Z>FWC&XY%?PJ}H!f-{N{Bo1DIPiWSD?x}M%pDkL*Vl>_#!xR6Ex?PeXSKHQQoO#_ zWwf)Obq9(zzXGmUNbg@Eo729(^(w45-`}!-)s6$K5z-{2ioX8k`cackX6r%x{F_rN~Tj^ z;D;r?9cpDp4#Pt1^u-P;`z|gyr7vpX5y-W1lwJi99*JBtUb{5RN}f1ehak(I=dXY8 zfM9Qq(6uUl6X1ZQ>ORP2Logb+cCKb5n2ry2P{n<<(;`O!3az>8XdSAd<}u(q?Wyjz z{Hv^h`h^izA91z)dCW+BzJ@=y!OJcs`^S-1 zQ)sz=lr@2F8inqcpPxn6dbGuZV(e%HKETn|&GJX1oiXpUWnmy{45AX@e%)B>9?@(( zjP3y!{Ds8dfcYAUT`~dqOyrLuvAghsrfaMxVePhStieKtMMJ<&M_n6;8gG3qQYNAp ze+}_nBz`wt8WJF>Vj@LdYu#+Ih)MZdBGPE%wbtksO!FVB;!fn+7=wr9Po#2?I$w2K zM9n9nnGDO7Y^7oE-$>2Vki!=g> zzXKQi-W-*-@F%D9f+4lSb&mJgBi9F2uDA~KWDFg>&f<6XoUya;N!FC2D z^)SY5;U3U2u7`t8$GAQom^#KPd3Dh-_7kr#I)>?lex79Y55EB=xDP&yr_&|1>(hiM zeMym%0Xi{&!G;j0Sx@Yt0TSyg3Fxu5i6oKXNK?=jT=+|CBE|avC81c04y~ z2aP|1!QAc!tB06Qx7}bZ^|L$KPcvxb3@eSAO}1vXn5ndLJ5!OaMdHEgL*l>QNL*$X z*G5qVR&pHoUV*z9Rm{dvxt^k?Slwf0SL2SKf}WU2<-2^@;zlaJ5p(3VRIm}lDY5_~ zZ6Xy;!Rm2rz0c>rM%8$eBi4K>I`dk*vC)_3AE}sg9Hy?Le5#cZcQfkd%?mexzalFe zMe)v8LVUsVp{`IQdMC92>90;c?@#sR&o&09TX;voQ5qq%_ zSoRiJ5tOpY*D%~M@HQ+NTYT}bd;BI}1{zrD=oVW(|4=0|mj>Kq<S%)&ll@=u=#X+o`pA^%(OCtW-MSi{PfH|pD&S3g;X)$N(j#c zR0}D>LxX2xuhQaHtSWc0&Rp5Cbm4Zi;Ota*XVwjtPu$JLvNhJSDPYNN9}P9^goU<6 zM>s6{P`6tUH}_ELtyXvW_QQLr^meN^Etn1NeN=Iq)t!#a#w2?`Ro;wtoVX32@lymh zqmn`8zK9sdZl}EuNFPX5i!X}N!5giHVhPs_|ID-S!rDUE9e0y;S>j-2*HU$Aimiv1wiJl=UkvZKaQ{v531!xVd2HTL)&z6}2;#V)p^X)GZk@!qOARzxH( zv`$@DQ{lrH9$lwc(J{-RiKhc+z>cMYC#{6YK7bhJy00dT1iUU39*=tn;_l%vmWtUy zBj%xv%N|Atd~~zbH0I%Iilc6^a$8-gE5_$cBuILAp5~cgMa{+ffEBa{pWVeu{_l!C zQmvSrS>T{4R)*i{47?tgXBfC9IKy0{`D7)ORQE~6t=L#yLj!KHGOV$%ID_U*vyvkR z;N!)9P(oWE1of4-S#8pJO?HMIJ7iTg6Ism5Vzl-FtD&4fS636_b~NTMg=Zpx8+7pF z)kL@5js^Z2s(YI>0#qA0AY#_kBq@15+Ioi->vzUjspFrMGZ7~j?y#<*F&Luzg!^e`0Q^_z|Q3>`@?=iz0fDTiwN@Pm5RBQbly;COOkY6z`ZXx-i`0GONS zG%+8ad4yyCCfl~}zwq~a>GTm_JpFOd7fm;_61jsJSmfS0WTF#xz}nN(+ebb)r%05j-$f+tOPmH90a6y*OgR!FD9))kZy>? z25|*t)x^SI^kHha*NSbW%bJkom5F=a36Mi5%kk=X@k;8p4||<4_gVE5y8~y-UV;n< z7bh+|fVQ24{*CupZCkypcswsi9`c4rfTeA(;Dg?T0Th0})vr~iV!sNu-dj9LWFYZ{ z4Hx5x;ZaeCIxV-7{T${Ek-W6xek*GXPw%V=N`gJ}+9fpdHqaSg-SC+kb{Miw2FFx-j$WpF%)6*rkFQ?%tyr8Zy=OP57j=6O%i;SPl}(#p_cfri4`L&? zpcvcE59t14ERwC3VYA%{m9b$TQbjS=&yT3?a%@)jFSBB4#ByA^e{AEQ(7NR)GN{;U z>2ITod`jUD@&24;_ZM52i4HV=8T^y@5LUwbfQoKBy3(lUa(wPi$CqLA+KwuMGI7OH zCTTScZbgN~*rRlzq=&5A{jF6M<#sc=*fDVAA;dseuriV0gnA50x6^$|GI>8tN;y&c$*$#n1?g!HLLaMjH5%FU8v6+ga$?RLr*tG>Jj32&uz z|DZ13I?&ih(VeG0_W8t*)M+KU6J5TA6+UXU4d-JC_Q#nT#Q)(IZxF|#Kf!7}mOF4P z<3)`tF^ivd`Kkj&5e|YXoR-K7##Lms6zAL!eir#LD>LS2m;2hY`!ExO=Xcun3spSE zLHr)prag~YEfbrmR{ZL6Xj`g$%o^O4i>w{qaAj`?H!l9yy7;6tjwdf~`kDYf74omaScF4awnnWSPGpqwhC) zoMj@h#eA~FYv12q%KF0Bgj#I08u}e?oVQ)vTEy(+v8TY@h?^C?8Atj z#3!tXcn&?*jVgl!_1{veIoTt%%0C5O*7FRF^NcvSZ9@ zu-xVzF10QTZ>&u8TK17g4iAwu8nF&%9fO|4C974fFl@*WxfHd<$_*9|t5zI-eF|6L zY@)uzI9*hW#y^D_G>2|`3j0zYD$z$)4vxeyyZLLX8*h+Vdx`dkSCb#V*0B}u1|log zsBO{d8?AU$e0;4n*oX*{?blgLWBIk@`V@8#QdJhRRt{Gq^Hs^8Qxm`nu=ql4ev&xwNq>{>) zTN#NdO0+IS^{{J7(>GYNyYk>>P4$!}c06Mo(`+2zpmDJv^uTP&`<1+K-k!0FIOV>k zJkqj-J-TAzs};I87lQ8Z|y~ZpZT=_YXId-Ow1xJ+M+-mO=j)7@w)t;EHFg zjK(!-NUJ8wV=(XyLOMhK<>Z1i6xCK|&wz znRNVFYl_h{*faUhVQ@AJl6#-CrqJT8n3Fng#hu#5l)4r3=SFRv@FUJFyOpyAM0j zv+w$RbYTbfy)7whC(h1aq;5MQ--@o=$wx)s`Fz|W`I~>-4i1{uv~8!=8IosM@_&**p9q0Rl?7a^Xb zCC{V%9cb6{XzO!S_7eth+ec}90zWX)dd5u*pnp7S-QQ+?|CsOvdjgwfNY?dN>0 zah(F;WE$5fEL#5bWN(G{3F1DSjH5M|Q?GsS7_P4N!OVWNYaeb=U%^y@JYMe4AJeGS zeyc;{0kDX}K;D-T_RTV0*!hBz*9wVK@qR0}#XyMGb|59%1T>FD?x-tuK2;t-kwH3C zLy>%)ZxUHtHI;3X!lq7i@2b= z1`yAYHk3LhCLxAL#kdeHd|Nznd&fyl6beo(^{xVG1tZQOO6*)sA zGMHCC@;cxbt;s2~vLhz}3I-Zp=v6C&7MEGWW3C6zn|B_xwxtziRz~CvfG@T_^$;R> zGF^Ab%8Hy4qPzS;1l|L4$ohY1dk^raiY{(EyU8t^WJ4B{Yziq5LQg`k5=to2LKUP1 z5b0Gwsw8$4B?u9ZfJ8w7MTyv0g_l@C0RcflK?s6^f)W)41tt0aes}LpHXD53|MPs` zmxsgLIdkUBnKNh3%$=E?ThBQWcsdW$V#m6$M)V$D<7#+ny|3)I89(b{L17ol%EnwQ zD_a04{;902_Ag~+LjiXIcr{+NU(3pPH{Wu=ML_azWo2Ul=Kw*M%gPP`n*3f?mJhh+ zkFv6-00mdd%Ju_NuYxDwBB1SGWn}{Zn*k%Ql~pgBbgiuH1Qu{h)7TZQw9Cjx{*0sb z0?r{$8VGd<++cE#i;i7^f)GVXE3x7XOJa zLmd7XJ9twiVK+t=eClsE-bCJ(yxmx^cw36SvC6^pJqAhTpmdM&iG8{vqc&7;AoatX zp>pFB<)xq*sIl0>s?{(&3FA8hkw;eMrqeF4V#-fEP=ccGN*$E0JCH@MduEH(mrj*?$CK33ZA z4-1u%pWzTrt{nSJ>5e_igaeS}e(8JwM}Z!YoP$`U7sYo<#c79yK zK8Htm!W%4;?9Y`U_B=&?8KWlHmn%~3PBl%G!`L}~QW6d;JMAkl0~-~ZAlD9~!B$Ga z5iImjJ^3>J2*&)Uh#6&DC8bATQ%_667Z6w!nK4;;M}ACHyy_QxRPb29jtl8DzguZhzlDcpL*smu+McTCB*zu;{(i65)gmXTlK zl-!G6c{fsCe6I6jOlN-k3eB`hCV#EWwr^HeJ!g-yzoba|tM)pwE*^e7LQtKSdeYdxiapzzOd(7fLI0t^8 zFkuKLn&=gA(&xPLk8Q8?{6Xm@UC+U4U;aUvY1=QcKf*11CX;`}r0f92>t#DA!53g} zhor#;^s3Kg`en=`4@=$!IEf=tbOB!F3n{&TgL7ZXzKftdDl0F-T#tEUU&+Ob;DUu# zayd@cm;(QVrPdSVpD25Of^^@Id!o0696zIXos`(0(RoghGvp!FPZ#@kzDYzN@jI=C4)z8YX67-MnWJd{#|6VSa;LO}P$@>MQ=RHNg;3%H`2Sc5) zvhFuj_eWfGj0_iyD%meWTWiB=$=1s#{wLh73^m>V8(uC_ZMfF@#%1L$?r1vDn-Gyh$2wj$qnfl6@6cam{NLb?QMhqOT(h$1-1b zd5AOZZAEt=ChPuEbWe|ezy>$pFDye(|Lq1ke~>gNg&yC&4ij5;6_!7#6jisW9*{J% z*|b%K>JUX&A)yq05#hEwyiBFNO+9G~MrykBu&eLbLOk|B^-Y^SRF%Xplr%XPq}H}O zRT;HgNytwfuS*j}z1J2dg^IdFsRn-GlF?-5pvO?j{M+G{{H2j9&T0~sEE%_`iJl(S)F3$;&Pj zSciy2S=LI0XRNN?Dj$Tw^*O7ngKYJ@Nf-EB-vcJeHd_PFoe^rF&DK!HN1`5Ms;d#6 zb&;ryEmcbI0;2;8Fiy7`VZ$3}!EI`yF<$hERwI;jLzihEJFzgiABRl04y+z3tD@05 zjV0$+)h&<3sLgFnJVi0;Y@4kqKIe)Oo5}Sg)a33s^^Tb4V8GdQ4L}_L7rAJ9E#zz* zTC}A+T?08<$&MOooV_)gUkyu;D>WcX8wrkAhvVIFe7xEhdj;F$)wLNKwY9?O%K1@yoBqd2Cu?p_$WGZKw+;E2-L zJ{XETq9oXcctyO_QN^0_5=E6Z_0_48QWvJTx4!zQZK#B`0^ey3)bDW!A-Ds~BYrIE zx4Si7@uv-d#OoWXJR6(QRdwTlN@+ti*)x+em zWzE&b_Nk^?rco`+ZPR6X3-xi^jB+L5!zoQs=hT*H-I+#Dke6Gc74Ws{R`3V2h^i~A zTd9p~v&%C@%e7YO_pUjnY29OnbETxUnutj)T5gDaKH8~6I0l|aF~51NjXGaWwN_ip z?K9AE`?OUX*%uqm%$UgCWy_&p>C&Vf`c|%_bw{Dg+Nm9R4zC^h+5HlBo7zyO-Kz2z z0qBOgI8ax5tJ=!`kSgDtQeYeH)fzZWH@!Xl$|Gcelc%H6uIn1$^B#huX;?(YQqf70_tCp83PMn~v+cW3B&r4)6B z9Gx=NXKeX$A`{G?lAc}A(Q)o89!7bfi#iiiURt4DRC%u-&x3ST!(GpSzppK>mb|VI zd5vd#SM?T~ZLL?4*SbNG&r%P)?CXr~lVB^LF7c(#E@}-)xfSYqj#_Oed%HnJ%b;4B zbQ^N5XPXbSZSXd?vj+%YsI1VW{7VmESGtE9jkzw=*HDh{!*u094>-w<0>>C9yL-Y$ zH_64GaAcdMpciU1vX`pcUXt;>;CNmpYKnae29@1tyqAMR@GA2?zR1$GHx%*;ZJWzx z)%&0|x3aSh#1z-)bG!PW)YnWWH51M1$WrInws~^0z}EJ<6!b^whx@9x+1`-Yei+N% zl;VES?pu=8U+pW4v(N$?`>XS9+a+Ou`kc)pMFZf6-+?g}E3uL6veYhn`Mc0G*9mIL z)BPcT>Ok1fPEW=_aKlWta1iWem#1Wq`iaf5n<6P5tmfO_Q>EId&{$bEM4f1RU#<>8 zPyRq=-J$lvM7HP-HO_Y0bK(wFv)MlKYU{>OXzOFIX~v&M-|aI@eaNxfEWd_KuMSJP zJ<=H=yPdGvJrX+{zT^{mV7NNa{wb`ZEI2`8zCjy|tVVMmgFcor0-D_GDH;Jy*4hVF zob0n|*3dyCwU$oz!=e{euO-Veq0t`0!Q(~~JdMnTT%XZAn|ZPEU4T8DttMfv3~aIt zb>Y3Z<|uU=X3d7J9zxx(z&#tb`njL29+q08)rOcvXN^V={z49phA;e5mX1*ex{iXD zT0drnUrEUrc$2Rs>`ryK>o~B!z3hZ6yb~(WPI_H7CeU=*#ePMfu5j6r z-y)5JC>J-ln#9rhjD+0rr0Ip;1$owfblTQ z^O83n68<2C<6#OvdSe%GdK`}Sq7+O}>*gQmqI-v@pS*t9{#BA&3t`7LmhQT^_ zA_Jy_uTwH6V`_*2GZeGDwv*Jlj(s>>PN~8r?5j|>O3G(T<@7b(``M?}13KcQZD$LSHsz(2m7ER`!j67BGB;DzsXht!k;dU1aH-1>d`wfq9cnj?I8I+9hfx z9BiN_r%%AauA7N28{{dPscyE}6-}1^qSTRPvsB%#YVzJMpm=>2X78Gun5CxMbxjfv z0GBcwGa-jeo((GxmZh_i6at1=qmlz(WAW+KZ0IjkN@g1)XWAT$UfU#Z4n}1sIMfE& zsX1!2@-|-A0_9*_HMg{wVt>)|_C4y8f%PIFKdZ=9M25)#s)nlIDkN36nZH+YIti@uRtL%Ic7o{gYu2GpuihzJmDjV8Oji9=Dmav>NcpHI@&_ zjLV1&>9`m+0r)fd7z@WtvzS-{WSM!aN;LJ$%SxnT;hA}RnY7+KW3k2NM@&`k#%eW* z`^jfe^^6`c5Cijt9R8i$*hp|WHuhqV+e_ikmunT=P@&e zTvKM)$qcQ!PB!C~PT1{lH?Bewa05wh_qJv`S^W*sDv)asz!%{W>47Q+rZ4qF|h%`|C7`h`|rs{yUh zD$CNtR9d+&BTH^e>35rqEd|mtEnyf^`Rwbgn+xzQ_GQS=s`u@9W}F3D^{->nc+)1} zSBWN()n$g7@!n?WZ&sE$T3w44V+qAVI7l?ah7k+y31HYQzo3>oe|K_tN2~6ZN3cra z_6{irm|=f}zFb2QfB6!c?(TVk5qNDrxL9?k1OYh+NM^LWgXQb2eWRZF*~#u0%Y3cM zSWR|^Opj3AxglV19GhNbWGUaW1gj2~A>IQT()mlM0vBrXuykaFR?AyDwuCh;$R03T zhUKb>k+iN+*nlJdTLBE)%RVIKS~VDBqVF|Bt0rtVUxl$5O0cKr%ZkeOrD1Z|}F8o-QYcLv!L^7lh{zM0U^cH4$Mysw?INUD}8*j6jCkM~uJI;^B7zhoTT<`3W zM6lT^h4(TUS;jl*CN$|LO=qN$&jI0NAsI2# zOf$5Eu<%xVx|wc;mL*xCmH#OzeX)9+u`?TvEVlDr#ahKJG}%}!KLv5$#-L*P9TJLU zb#BWeSk^Q8CV9?&@6E$B8@2IM5*BO~ zaF?0qAv2^#{qx*@!kfoxEK}>b0hao$0`D}L%rnEqK5>g_4d7@_?B9QWU0IkVCcTx< z3aJ$W(>n%uAkQCQ~_7#BeF=>r6Zg^{s%0_=Yda%2urijj-J- z8IQp6{&vL6+seDkt0o34GSgPv zByEhD=5IO_rl*FI4Klc{IhO;u$;#ijzW?I2b(ngqRYw~kyd)*bA>6b%ZZZG4R zBIN)qZYRyOtv5;AYo-;NY4`i&+is@4VW!dZSUk<^eRBhLn~AhuEAdG)<6blEQJ=KM zX4*dBG5}2DABFA#Xbs@o9Q!~mfDX6~5CU)lssUII{q4X*T3J~=JoJ#FCc$pcw8!uY zisg*FrC4sOrWu>Oo&!tO=k0j!p1ur7mnLh!S7PneHDj08vv(PC)Vc+oglwq#7Jvx9 zc%&wM?+Z?-9_5F3Ym$2(KKXm&d?*&OmSdeFS|%^Y%1{gl>HOI;WEd+2%dyb1O?E8D z3P_w>22n~4KcaZVIpMNuN=TnY&36vU0_v zrWw{U!(=n8ZH6gkSVzw1tKUJMeNU;QBCFw05Yl6bVfDbBdf5<-{{m#jYBh@A!hKpD8_$p6 zvQ0S~PX`g{ZYD{S*=FL`c|bb#Amhm zx`-8u^p|eI*@y+z!==w@*i4T#*ax{)3fI6m8q2;lu!>uuu128E1h7xAVHoNF_6Ign z6N3~PTdqZwntEfcB!{tPM$Gv9x*~1YLIKU?;#yc;3nnB=%rlT&k*sGyYv>h9dsYn% zGi=r5-%`tetyh%i-Dk1!<7j1CL`TUez>4HbSy-U%w6`{m@WAtGKUx1A7Vrb4=sA=Y zAjQwAU)bAJq~j}2K1qqPU_DmOTgiv(v8B*TF0MzWRua4cL0f6C0c*DbGI#^lo?A)L z26YN9YH9EScCI4ZK@Q6(7}78T&dwF(kR^PJ4bo$rqCH-*KOZ+7#ev|dG`i>mls75&AO&*z& zw?%y+rptfJ94F&mfqizBrLU-QHM@b7-Ygq%6)+gk89<4;GflF;iEv}Lv>4R39&(*Q zPlJz5Mlhu=cS!8h99R@WLCLuKK1EZwepO^c8lCm}@qcAP&@WbSq>lq(+9qn@@Q zdj1{kh$`~*yKsJrXWGm|6}-$lK)^sNRiIFu<)qJ1G})vqNYp2W#N$7K@jx7JtkeiRS)ZaO8f=54_%il# zK(N=~n6}Tzm9r1WH^5`RQO|pJ7`;krSU8Wy9mT<@nhM z+-h>bsB7T?Y=^=595guWIB4+ee8>=c(;+sMwEW!2y2%?v9md9~BF7FJ$ZkgreV;gj zBM6}U!VvC}FW@Us>o2earpV+k4YMx!(%X7R4U&~dvA?T`ddxr$JBICUMc(kn)UOQI zbH6gu_I;&(gS1Uw8ziM)8;zfF+~AUT9H$x-9FH@Cs1rso?1Yi8&>Oq#4O)IaEl5@&vrhTVS)M<$=hNo3zaIqoV9s~vh zhg4WZ{84xkwE1a6wiBn}A{EK|)`%5{7?N%{V+eKC8*6*kK<0RZ56>ED zQQsNC#JZQ=#+;m>eHAK_PMQd%w^GnuzU_+ z-K3}&OvUKJU4JxeH|Iy}7obO7P^TDVw-{t$7eUtb0ybq7v0pSg1J^aM5; z;*Yy<(*ck5I!e^94f!=$^Dac#YPW}aHvWP+7JL71+)ssdUshWgM0PoN3Ju!kcl9=#4|%mu%2ADZ7p%p_BerL#sc8Nu_UMr$6Pr zqF@{n`&&)25Byy^+_2+x!{2JO{gvOm5ywAjjfkCCDD}-Ih|7wRdW7rCUn-|~B>Nu> zZ}WbU^yO&g_|4e5e)%6YI=+n`VJPBM8`*Zt@A*ocT>D3@H|S!C7tI=RK=Up2sF_A% zw3M{Yhu)f;MfjxOjdbb%q#nU9-vo4$yc=r6+-hc~7$3s#uy*QO*l}|$l_RWG*h_vi z5BkNk%{-iabO&&#WgQa%7LU%C%IX>wCu2+EnkHegNl00-4?Lk%O+fHSsoHnk!JoZ~ zu}C<_F9Ob2=0cMu)nr4O$Ngv)nlx!XG=l8y7tE<8$=jh?gnft?;{j$+Aa133AY3a8 z9*V3KCc!4BFKY=nx2QF@4fPbeG|gros!3TVEml_dy#-f^4ZwdjZ_#?=FxvE6w9N>j zBD8e-Fil=tZ;!PP$Bg%UP?Ri)&_Zzn?U4wrJ1%BC7@;+@XXB;zO9whsq&Cq$3U9t8 z=w0h0wIm0N=etab6n}|}OX4Tur)(D@wXYqcO}WlU#lT9I3G8>jZi z%6PXn1c%UonSn!SY0=t1`*`m=xNMBpp0ZEyPQhhljCL!|qOFP15^)x7M~pTQ$I!xJ zwYrWeD1@p!Eg7-eY}-`N8?oA=K-+3hT7rgKC!h2bCTfAU;Ay5TH$pr+leFooeL6JB zvnxI7YK<{)Ev&1(XP<#B=DH!VqMUby%kd;A{o#7rTlSe=6Oh~MYcJXE_LSDwzOmV7 zVM5%}7Hgl4JgptE9#ezYOf$L~Dj%ZWHL^9nZlg+6#e*&T7G^>}#QYVxOl;x>JkwY;CE9 z+VSI(9j&!Q8Tx2&s9fkB5~|Zz#RBBF%OTMYJ{el^RBxlbXS2`8u6P$E!Sh>NZFG=> zUyEb^s3XPAaB#Pcjx!dEJ3z2g9khCKsdtDTZ?Pkz?f_aWorG7_J-caflG0HNmn#|J z(GEKn07w`sOS?g+Wy4(2;_Qsq=lEs8deA30g&?lmFa=*$2e`#oa7=J$h8F5Mj?!$X zNrQ{k>Pr1i+B;~6f-YL3$A-K%M8Yy*52tN1qZ6!}uN%@Q6C74$YIEdNCKyI`(P~sC zIQ0w0*Y>M|by?6wtBuo6V7LVDDyPH4am*_?+;jJBT4OuxenU@fifw@>te5tuP5P&4 z(VqA|+CTV>M`P$A^?ipfZTe}W?f1g$!<{uG_h?9z=RiNmWnT zHMTCcX_-tfW0BMUwfsZ&57g>JZa_NhzC4Yrw~9JQd(F0Awhz)8#{UBf%hP`DH{9bW z;yPzy&D;IZb^PLPX*nFHbsqaLBHZ<^-wa`?#C{Z!nEIQ!sZS%~aAXa8l=XhU*}^O- zygYSvZp0Qp9l0;vQBy^sz_VzYsg)jx=fEp+Xp=M6 z{@^u9%nEH_&%7q-L$s*e1oOCnB{D})=5JtzPHov@xj;friU5(_EyFZ<;W1NnQ`uhc{u_z#2pO_Lfo!=6pdK9x}KMeJG55a9tT&} z+S20Ph_g0Ue1u=T2jc$Pd(^9)+%%+7aw{*F2K{MY@e|`G9AfYtR*xZ0r(^LbLfn_< z7Bg;XmB#vomuFgerqzB-7a=|ggmg>%8ZZB9;@3Qpak>4F#PTd1P}6NqoF&5<{05Tg zzU!EKfb-SU>xf(FETI5#YqG)kV~AU=$@m<^F~zP~F7p^5*jzLZtKdGs<^T3nM9p3% zlJ*e?q`y|*k%hywbm!+#1bOrWRF{$$1MwT{jp4f7vm`vp!CErWDWzwtx%2z1ik5RD z0&y7glL$S3Yb`9jTnWXQ_)j9jW%q6^BEM5@?|BO>9+i9?>~51~=Fc=kuC2>eQX6$bqFdn1y>c`8_snQ5lZHA8Esbb;jE8`&ZMXzd!cIMwS6;2-DG zoV>IFr@+&Egl($@$lA3zai>YBiisAgw}$!DF=!x!1vhaKZ%3=!xT; zm*GG&B+YODje*Y|06Pci5&#s9wWP@n1}FfEx(vno)-ul&1JjYg<*K5ZmLq`z_}3d~ zgE?EEyv{z&Y6-zKL-kT{m*zIkdawm5Ws`k(X^Amxq?!Ph`Xty_G*0o|TAa(b5H^1u z$$rr0ZsJ?170BgVsg;P6TfRRxcPDl|>W5q#0x0fe%%2QV@yw9J4QbfzEnSk9_;zw} zoYukhlvyHMmug)lZO3bguBZJ35t%$*i>v>PA9^+7ly40}b{Q7rwVgt6ajpfr+_>e$ zc&$Ty9>66<27s-S3}Cs>`jVn9_%%tpAa}fPKbruudVq30${S;~bc2M(QKeD9 z>rBia*)dekP0((O$6#c5Xv)0Kl(~Xk&xu;HK|*Daq`)MpsKe5UsMd2pms^xvc095x`VFoT3iT3zQ0Kvk4EV3L-c`l2t2l}FAxfItA1v(YzQjBdH>T(!{r zjap2SnhATADstr7W@vv3YiPY@?AgD9f-43f0jG_=>CH^S?)qu z!7^07(<7om`57`a!%3dsE4(1Bc zl08RDj*0f6+ylxAm8?Os^An)R%-iBQlOhx4!W=Ea`6=)f{-dNLzBW+*9&I#!+O_l^ zc+^{vg`6nEV1U)Wdy&o84))2xd$h#*`~A?LAxi9oD0ML0_gIVm$Z2(SC_1LS~KUDl~VHNY3}$)v#wML1wRUs3Qc}EPwN{) zzhEUFtCZYeJ|Ds^p@OWb%hzVyQs8kj4pTG=I)QkF$rjGnTFL6USQxlA zU#sUjWfBL1m`(zJdviQe z7xY{P+6-v{jI)WE6@>=8iKz`)vQ|vzGcDv25@{h7wJpujMzv>FYosgziN%f~vs3k! z3;e}oQ8B+-ldHwWlLfi5lwVDfisAi8u2whow}0Wx5}55W(kr?}o%^&z#h4LDR**d| z9FysCxoG_2nyS_4@jLSP`lde+C$B3A%gxef2%zy$EcUFcprP2_<}s!+i|^BP`=6TZ zd_Zep{|mqSSsEDSyaqbT=%ovO5Q~LZ?$i1?uLEDO=q*Cw$sT~h!4ef!tS0_QpSV<={oC;8t)Dfq$=*$4=@PHPDJ^>9S zx-?K#)j%6+fX3Yrz`lVGj2dekY;{(Kc>d)9PZeQt&FC9J()J;YMLM|p>dAq)rKjLZ za$&NQ?AiE`*2o?cf`m$)!BkL^q}}Im*JOTRjNkCE?LtlR3d66pL>uLDn&=8`tX!g{ z$AtM)S7IJdYG3BnKwe?{VUKE4oZ&!~o3I#8as8w4X)fT)H7NTY)n+)W16AJ4((N(0 zrdukZa)^qkgxdZXULPWXVm-|+@N=*mcUfdD#n9&V2GQOi#t59Tl{gqZX4z7$xihX3 zn}bWWcJ>;2{^@1dcuDEQ2$?5-++}KEVHStfDY~+%~%eDJ(gsybC7UygZl8S~lzNOXzsB%5> z+f#5~Pih^}QMWva94#v)8@JiDs)}k|71gE+N^UI2o(X>HxI*jYycNk6lAK?G*Uq2c5k-fZNRaAb(GFeYaJXt%A-pe?O7f@^0bDlAQ7e9G=x=v!2rv! zdn2tL;$+V8tB<6KmaJp}9V=;0*kac`I2*ip7tYV^674=`Uz3@)clUfoi;J>evFji| z{Vn4Nx)(DwdOa5Jv zf;E`mP;&fHMG1GS+Ht`^CTIbd#tk$9`Tr*2!4tpc30X8F7&}L9er?px{(3^EOy97 z&c|0k4uoS%?w+fG;koo06u1F^MR1^@@VmkO24Er9uQjY=q~pDRDc~ExAZ)Rm1z_+k zA3S>CnG*~0V$WrqqB72!FwQ^5X<3XzIo{u=HbjI<427r`0YkO{!&(3eM;guw8(`=| zU@&HS6o6rE0C}-hKLia6;$jN_m|h=1;rL9yR6RiArrK+z@ze!z%$osl0QkqZ!Bha3 zxCcU7I_h26Hs-hM`gYV*Ij~Nvt$Yu$>{8U*l_{5YK*R0(xiD=n(C$!jp`j2tc#9*^ z9%+|fZgJGY>r!cfmR^%7HNlNFV~x52Xy>#S+T$P@@EqJ^uFQQ-YuMx{O7I2hg*kfz zEc|kx=MUt_bJ%F#C3T+1QGt9p_`KE%ywvr07tEEyws3Rp*K1wy{J?sxd;4Bs&#F=o zRd8z_d(&HQ@W|j{0J2b;H&Qjy&W_%Z)}I z2X8cD1sk=#wp>riMz|*=Ms0=!-6Uf(ZaYXuF1wL){AR5~44KkwSTIe*>i)T&qRm>m z4M!bHUeXe4vSw+3t^ht0_(%DulA)6JvewSn*zraOZ-MG#ah4b*4;93QdxK_jZj1J+ z!>}FXt0l#waNTd}!iZ=&{)*PoF&H%?htpE)RV@>F#=nXdJuN$4)kb;xZ`JO#BXaOH ztzis%7satcs)@gpswsItyW$i!RyE1krnys?Vkwd##~Z$zv0bgnC+^gG1C#r8_3-Ms zahn!yShp=d`|)Hsg($DH*rqjfS@y~<&(;l)wAZx`5NZ1Bcm;UYakjvt)gLFB1h4%;D8WADux`##>ZyH{1@&A>Zl(vY#HLqPm z!}Hg@94<|^YtP59C<$nM#f^&(5{@cvoD(Q{A~??Y!Xo<>|1#xZUUi&X zJc|3Ar%JX*n`h}}q{klWmcioc1ZraQFRex9YdV@SDCgpG3Ik}VI;Ki<9*rzO6Z zg*&x|jyuZJ3wLU39Yf2bAjh|L@n^Lg&71AU3?8i0dnv^T4Do>g32wYz%vbo z{h7^Vw0K~CZd|O~*cYVd-~L*X^r?@t+^eUlp^@ZmbsyR{T}iT({)YM9jYKp8h$13s ziv(7>f~fEwdtL9fq9CeaEF4<%#|ol?=Y!nMElVMqe-zZ}HLCQE`p#Cr0yGO7EaR;OhjldKVv%)$bk7zLSyS&6%jwFY_( zEB-;L>>r>dw0Xl1zaH_Hpc{skVK^KiT^^OqymUzOKocwnLxS9O=n*3TR?!?#ll+Pv zS}N|3w1nJKI5r<(7Z@Gp zEB1)%vi4)GjdP8?cbI7&$z|j2m|IsCKy)!&Na#grY%f)1B<0#zLh%X}KhScrBv708xR^uPL ze=>kGh!LnA{l;6Y75->zLotAaAgoCQ{`hR*C1H>Dk?}EOq9*|+0;+kg@9_?0rF+q3 zr^)zFada+M%vi!+?R2GB2idv+_i{eAPrJ7gK3x{<*ZSE$_UzlQy~&X==Kv1)8G+k# z;{Z+}ni1)7NUQBI+K3`Z;qTROcI|IFer0t?iw4oYLt48kLC)veqFh#ue^&LZ>azB< z4OW?bU?kMy8_!0Z?!!tSg*Xk(ijPK|#%jgKAkId#;&&nrxHREZkfZM}xF*^GqE3DRFo+ zn0-u3!=Sj~nAR@0mg%?Wn`9k*vMw-joqTW$O4Ur1#C7q(EjDpoD{%IJ z98dOFm|x-Uyn?Uc0Pd7MUu$2~jE8?>E$DG*q4a-K0YAW}8r{va<2YuG!MR{b&(q5; zeKYJ)U7_CcSv9Sl#SaF!O+4S3Yyet#HlPuJ>DEA656}1=$I6iOPVCLrE7pG{H?y-S z_6I^Pz$Q6&VWI7H8}{{5PinkubNfl{D>-!*ek=7Mn~wQ<@hp7fn;FIejKU-%*y+wd zEsbjWS}Gl`B|0@Y5wHM2**XF!FFR?s04Z|?M&)uY$p&YCBt6-ahU)X>Ytd271S=hn z0o?)6u%Ui`Jmn#OhU9C>$Lb)TjA$E}BI{3UwYi3BxG7576_=S+bB9t;3Ptagzal>( zlH5n5Uvd&gu55TGZeeyM+m_}Rjde?XB^+Om`c8{*v9Krr*|F_#ckg#v2Zd%(O$vU) z#adhQu`#&dJ1ntN7}6vF*v2$btHMnCf2@=`hX1A(SvV&ioP=^9w%j&baiJunMBxjw zBXLC7_EAWLte@$KkoFfeJ;>5e3iZQrhkVNQgJ=Fx5wyM#DP7=j8y~-+_s3_MzJW5v zoY(FU*XR7XVdJRiXf`pmPqSzUps5|hL{QH34v82_R@93n9z~|U8UbtoV~z}J1~H+D42308R3k2V@8MSkJ(!L^O6x^u+Z^}|_C;(+PU`EZoy)ljy`cr1O0mr- zm&F&4h8k-jq-p~eQTT>rA^D#gFELs?_H2+C!gJEL&PgwlR#f^-? zZl_gsR{uFk8y@U729WxQk~7gP(UO2VC>fdR3XOaK(_`Su3w(#u zWhwXoOC+5xX%WWfemE#RDA|{A&_6)(_C+@FF8=IAdJGGt`pNhq2*qZmFxv!cu&~w( z;h~ji9tI87?WM_??TU-HWVhHnQi;v<5=;$R$;uLKEbex_TB6}2V(8n|r6?-OxDxso zh}B9;e!()RH(^JIz;wB^J2KP}jeA7_RI}$_JR!;*`{5_ z>B|5qxU97bUTRW#YVt=ZPsg)A;h)irbP}u~n~Gu&m6gA1`FQ=znyI@z?f=lW*^FN- zr%T!;9Gi4p)j}ibuh@Hxy=2N2_7BeS zKOt@Z(YiY=gJH2~*nhCfFjP+bgP$FIFL&P1%E0x`Qf;2g*P|FBdM=h~KiTXtHtGA6 z5?h~McnV+zpvZi_gpe+{vNT}|eznoWroZo^R@e>|)y@vm6LGbAP7uBid@4}a6}~Un zq%cSy1+kEGi7Z z0NX1H&=tTMkCq};?|>i4l&VnsjSe`FeB&&BYSVs7^)Pu)4^o@71=SY77l3v!k9z=X zX(sq1SGGKd7s~=h$U#kSS4FkoORTOhsn4pjo^(FUK{srje{kTrA%K5dr1a5Xw}aDv z4i~r_zKxn}EYgsQqlh8Bsq4`EtbuX)*k4E`Kcgj)5`<^kCgbIc40xurE|0fsatf1nafs!d*Dtwlx&EF~NEb+=rPHth-ZL1G;0Y29{rVkd12M ztrEIOS|~p{t>G(RLnSsuf8i#2IT)fpcyqK{7KG~0qLrhZdZJ>qu!PNvaQ`c{Q=bp& z%TB$+zmW_L(;I_iY1qG${1&D+$~BaZ+OUm=0I1Ey#{b?41)uq6ncDwat+CpGdH#Pq zSFcJWh1K-B_Z|fP?=;0O>bLLAV}=^}ikAdb*1?Kufc%3t!|2*PD&`zpR9t z=pfIfV@+R*YQWq4=F(fcmO&CK!;<8rw5<*~u^?R?+S(*J)%9MkO|VN=l9lD~kS8aq z>kr}s5ZSlr6C$Yws)rOjwZrP3mJ>*FEC+Yma+LIp&__wlC_TyXBygNQbd!Wd7zf8i z>9uVuWNDN>kK@ccVK^n^)|;c~0dClsf6*&F8{CjD6>BtQN#Mdl>655Umc$no_AClT zATC;pLIQC;!QWxgPG2AKv9TCCjxEpOi_IGdpliDWKpeb)QR93F&3c`L=Vm9Rx|mM( zoYOJQcQBwz>82n9~KdK|Z34F|$sU3_U$&}g~6i2zW` zlrXqVa%1&a?ra;zMu}PC|H^kxa$?c&r{GCj&}lM1%cDDFUhCPCno8{m;GdB$IY&a` zjNf@aB`xFhWQlwtgqQY?kHZ#)D-k~L^*BArzDk!4CE@rGAtIQX1lQ2t^cr2Fi^^h~ zbqBEBLZqaIp4?vkMZdS2WSI!5WBM?%p#CYXp?ArO*VAdM@p|`oUxNXGp%<$@PB|No zQEGjX9&HSk)OU3$ofsPDB%^W3 zu8Dd_+iGc>q$kS8M7>`mdp7?_&0^_FE=zC{1YAS1PaJDO!3GVLyhJoc&6@g4xLbc; zO(d-|lXP#=>$UXHptqc4oj2v=?FnLUyPEYBeeCHH12tgX9Ko(IaeBxY*~SP#6_3f>>(7(X&4sYS8@ zBoxleEg=PZ9W5TgmK&O3Y@Z=yh{_Nm$NA02%q>ne|0vrNR+-3qltq zZ4!V*&}VH#A_cSZ)A(pbjQjRn^4kPjgkb@j@lc_QqDCQc4zM<6&LccM>*%ip!c$(Y zuNzx;sd_VcxPksF=7@6}>a$^x7aQuoBUao9z6~BVRsWL{;xv72S1ur=gA*kf3!oG< z9ZM=i%W=NXtc@l02uVxFP&NxFPT+7+P&%~xlFUulTj8SB{|Rlfu!Y{s*%9;u0pkG+B%vh+zM*m*DG0i? z)O*FyKIosRc~%l!4Ew4f*)8GKv9-&OC0%QYVas@CMgz5?m4$-WZH0kugxFhS*1k^C z9PJhb!ju+Q8*F+UlQz>yfs4cUeCp zBuU}}@qusFbg1Xfc4%-Mxha{aCwq3?icE6gZQOG*G((>+2i~X#9cSoIAa|V(`V2Jc z(;f6)#zY#q4fCdlu$qWgi1s$dda{S*bcDqC++0V@^S_rZ9rX#`tzUd?BG7I8WO{@& z?PPf1J3B#Xn>>Y`blmhpPQhq~h-6uusYlpHU}yhP+@be!rlE*~nXnOX?*a{uz>n#S z*g|ixy^B6iQeO-XRXC5dOW22D?)>Aqp}Fjgl$2p7Kp=op`Yy;Z{-9Zl+IXf(q5+M5 zRu3WbL;<=1I7UwdSkpJlSUEwt3ICAt&i9}$GwNZ8bI!Em0~=@TdJEhLTYf0hn)UKm z^c=t~peX!f71(o9q$t%9m%py1E-!yzk06=1Ix_h-*m6E=`5ZF}K`G*^c8LQla-kzN>|ay^B;bR7J`sfgZ)R(X9uhw6hK z_r09Y(m%oWRAFB|8NrdhAl~FD?W^y%A#q=S7{m8c+TU=Pa|h`8u-f2(dM4~IYamF` zV+ZQ3BHu*wQZf#CY(7diTBZ-udx>k1ep}>QH%s>*eTW@CWY1u@l1&meL|qvHfg)ChgK!f6TaAM2r~+ut#ZOs#_(2^=F0KU-_0 zJ{BT9GScWq+eaD#mNFPE-Lj2XUbg-UNDy?-KX*JrR*k~cW0OoDjY=Q?!5&UTxO5t= zH-bWeT@vW+t-WNmty;MBzf1oX2rkD+k8%3vw(mVyDZw{>;HD>_*N&EiNqQ>>KW$BI zo|f!MkOdYv3DZ31MEH+fSu+vMgTo~g^}b$up6jTfdk-IO%$ls%H5P_w-ZY%S0M1>F zAqtKKALpK|CmYK*4mtQ-IKQkEQcwD^lrbi_@G@l){1I#hN{Fx2AvMMMtHKP>%Y*LP}R*fsdrim`vrR?-8TnW){$wtq^-j3 z9;tWh`T)l9&k&mq!lJQoe7Eq&Mf>6C#_3=<<=BB^n&%>8A=!qz_2i8IGxj)zhzlj( zJ{1@(2Zo2}4$MyicEZf@iITsxL>V_rk3c~SXX&rlu@AlW*YE_Fac3aN=xr$XX&F2l z{TBnkY<&WbL6*+ehbUasvrEDh9Iv>44(9F^Glm^=^tv&eDR6qgcUg}2bWs@qRqXd* z=;W(0T?UH?mxMQ~#W}j;ks1z>;t#92gVw^JysIPYc7)-3X!qdSBx(Y8$vqqv=VF`C zM5tTp8DExbrzJWVC8HoIy+?P~uDuA3{i36m$_9K7vl3hggRd?b zNgwD^?Jj&8*70z)P*0Ef`qy@jY3U{SAmX}AZ1=y*MaLWAI9D`s5o*aFSEz|qi6TJhu1m6o!H&n6^7+3I6*jkd;CD@H$#)AL7dbBYY zVSlO%pyn;394Z&@)i*m?sFfTnIXc!j`?S(@2kXqVC}YXgs2r{}S@SKy4uCDqR-y&DFkw7N@8JTsmQU`|c|3XqfCh;ja{ z@{2D+oPtxgzH|@z(Jexpl>wc!{x#GYIn$3|0^(tE{$V|N&_Fy=UH&|8^UKl!ake_? z$lI!IW3uvz*Fs#*oVq2#K}X3N#>u`+^nPZb7F$ZmBYIrz`Zx?6f~du(CgQA{75@uo zmgN52h=`c$KH6(yQrHm|$*?8x?t>&}iSBNB4Yz%;G+$Xx07pGF0+?nQF!vO`o{l)} zaf+9N-ERiaFKR1eK%HWow{OOUNaF^*50Wb`p4X9r-&wQP#cW}J#* zSry{zn;|FfjJE?=boD`JS#bk1oqR}#l52QY($5oH_Lq}efMUUzDjQC^t<_mw_&f0|l zD1dL_f8f-(Z~Q0o78I82PkY*r_Lxa)8hyE@SymqaHIA0d4cKfFa`nhBF<^n2*4|9( zRgp2EyP3uTj`@1~q*XK1`k6SI$k#XqPdZ=R%0HsLU5yD=7lKp)bN-MH*VU*tgOJHr z18Im`?xHT}%vuDfesrfL_;EeXwFAEi@Xh|Rw0vAo>@x>w%gU%rmY!;ctOn!50OU?* zbs9f4U?*Z{XBvkZrqRE?D;pk1mwQ0=fOAkgP|DpCalP4%$Mw)4oze9tgClY|@LE~E z#IF}Plrv7vv_afg$~eSXOcx&-yNT-s9MeXaX;juL_*De?H3E0a?mAtZ<$`p zHQ6MdWrlMkZ+>8U?t_T3+z&CXUQ3 zx{1J9mT%>!vbx`dwwZxL%lR@$ya{2557X&pVPyIjHaOU2tis<#+$t34072YpAx^_c z$9zkHpM;PaiI7dp^=b{QDCbHw0jvWE(Lc@cDSQ*mVIru}!tNP9TQk z?OA-)hy`2b#GF0ON$!(+OL5|NrD64fATeux&qc{SQ#~s86MUN}1aTI*24Jzj)BI-9 zTrlR?(Ip? z`sSVK7e56zVHy4wGan8AMc^p|nIs{g94w-<6eQU3Ym$7uo{I`4Zl@WpUzHc?j(N?D zy>5mx&2YTTogbK3KJR>A(w@>29W0YPUX_wS?Db813d<^6BbJ?*88)>^v;vIRqlkbYi zhFFsJqTZ^U+gIhJCb!~=N^<1akc0+(j=v}{X{vF=^GW^(4k-nZWH$Dt;&8QMO$Ff6C`_+ zo*YC@tES-xJtH3m;ib<}EtX5IoRrwjXubHu*c^Rq7e2RgYO4}1yB<^Ym?0*~Db$AE zjlc?xm4w%zz{!%eSsxf#j8qP;G)f~CVX_pzgwiL=!OeR2$kYFgqVr4o>~dkgl_KUF zE5}|!w=}Y6N}HGUE)i$IgC$r-!WNUm&ngiyoY1l&XH6+7i&x5`m-S?amHeHd5C`)m z0r0t*S5fT))gtsxq_&Ltdw(uSqcL)v3jxp=&-u$DdtSko^Ib@?>^4}6rYUa69Y9gG z^WN4NE7@D{;o(bLu)1=WT;HN6+kY?{a;${qAgRwQdT7cxUq*OlnLk!3Gv^iE-Q+eT zS&FYzzM1Vpm24C>h zQHow*gP6&3_smBJ*i5IbI5 zrzpDXH{|o}BcqHyBFA@Nak2kv`upOX2CB;@cdN-pN!BbSuDqlDUL`quo1PqO)&CFE zRz?Xt2eu|>DbZNa&shPzUD~E6MP5O6f9EqwO71}mte%5T9Wz}CkEB+vf{-1_^30v{dBK^-Q=|u~aR?cq7V)+20T(@+c?aTMCD*2{Y;(M)1I{h@ujgXNq=;6T}9of>? z%WF#KN`l&ve%_)ovSpf$=RqiY*Bfo zHzkvi6X022UZK=*@nx&BcCA`^wa-DVa(dxBrSDBEVY?Y=Gg&-C33b{3H4T@*Zr7t@ zM?zQ{n$?YN$1{~1=#ckb(xYsnWXob`zx{kgm#y3NsrDcwY%vm=dayS=Mkae;eO5N5 zJX;}BoxVE95&Wr&+oeJx-;rRH#J;1)#SAvf)v6?Cy#xMMvhFa3XU8azCjk`6_)JeU z?3JgsD{HJ|1&q4QBB;E=cq~DKy^K&l7!O?PyYNpTRXF6mi~aex-^6|@=PY~4E81%HDrCd{qqnL;c1snqH~yn%wzozv?r{6}JPxZ#0FH|+i5It4 z7ASi!_bhi|#&RPE?bK!_PMqyJiJz$4ze}&tDGKzyj+=80_A>4Rke~a1q({rrA{@53 zwo6Zv`u8iL4$I@mlqZA+wFM)IxnHRvj$9=?hJ0iF_}&g&vZTGQcX#y0BQ+i;Iq&Pq zt{Q$dx?SqrhwjqpJw2i(Z8iyD={dd%?cDeD^cKEk96Y+4S=j8Bt4lyu_EMT2@wZFH zJDBUoe21H&FFc`y#xN7bN(3Pdgh0Z9#t0L{CYN1#O1<_y@I=BS5c)S4?K25rHCIj0 z_%_!-S;)%Oe?+NwJ3T2?RSPt}P1GN_WI!T-dC7~uh0-?%U@gN~W$`uc0l+5#aHrJ= zdflNE!*bMCgC+kRQre|DUP0FD;W5lZ+7!_G>Z`95 zo2^m?`|Nn59+$8-QoO40zNzLNKn zgpV;r8X!GC)|6%a%EpjPEOj(;$e|sfQMO+A8kjz?3VBaI z@>E~)c99e-4F&sJYA?YA5vL6H=!5L(rt*48(Q(Y&CrL2^Y5yq>&^MN0pQ5M!wnvW+ zqEZcGby;FH0aHV5lKrXfR%mxkC5x`()TeMAD?Y)oe8*lKJ!&Rtd%?Lm6I)3i7`(9y z&8oHoP{0%)@+b{F$oX^pr~!CaDmqw7{m1d3e?ujP8JljtJeg3(*y?w-)d5|Gj-RM zhKJ*2`|t`tqx84FTfxnDfa)rxPbzg??W>@TSL0riv59Yn`!Rjbs6vAIUb>T=)^a=D zjCW;QXBoB!TJBmt!whw%fy$~tH&H*sJ1gr}fol1g-rdy^Mfi^WsLW^jSXU>YeXTyz zYxOAyVD06vX~6&ZThNXFyr5sZ3K-o$#KFy6rlI*N;KEVhW&0U??Wl*JYC3q|l@5Q7Hy{d4o%93^6>TZIgM=N{ z`^GdelY99kx0m9_FfXF*w{K34N=uKu_o;iwm)ikZy|7&*Wj%rk%Gt;N0Y1OtfyC#McW_ztE%GH#O<| zgWlJs*w5K1C^lCuX*mNxhI6Bvl`vU;RB!3J!>_zng4rhsURJ_gL#w1se-2Gv{}`MGYv(Wfu&VS0N<-K1 zDrlpK-33ac;8au25oQ-?C8fup%M3~Q3VIt^CFiiOklI?pwkYZ4d9(fV9()BgP`=h1 z#nPX!Lvp~PQ?%4L$|0kk$MRe&x$|p`(;1TUG$y*EQJn9f(@F}zhL>ou0`Hv%p2vUf zztTfpW2y*cXeD*Ma&xWRS%p4(y^`#$M56Q&ypMhWOXMeR%ZIac%r5IAg{kAf+qZd}N#O}7s4ZUuW;@3twcH^}&J?<_=R?9}!8dxiYl3eg zSf$e?H2eP;`w{>ftM`BRj+wddHfET8%#N|m2q9z)W0$d%ZDOq1vMaKVD1{IcPsk{h zLL|kFinL6nsC-M`l+hwZ8L4lZzRdsgIrn{M?p*r*{+DOYd!DmB=Q+=L&U4Ot-gD&W z7amW$dUp2X5QhR!Ap6+4oKAs>r|J~r|2dyHC!Yy{`S?tzO{_{P@?ll(L>&LBWcoVn zjTId>r5%fA)QO1d-&ZL_4p~lLon#kDRYTGpb5;bv5*LYnuFQ zqPcdrZlF{GBo~&}=R42~*KZGQ9G`+1{yp1~jd^y@ZlHR0>J5mN0YI@zTIXL={;_Y- z#qa&rQ~$cvUvRznxjs^3l%-mT82(BF7mibDfZP=73y+L{2y5sID;mt{v3fO>X4Dz0&0@#_+$s^K?@C5{X+RC(ojQxLvSV=AZT4 z7RNU~3|I_G{3R<{igyKP#NFqI_MgWjt2v$O>+BU|J39*pJgQ69iALMY*O_Uh08gkc z)4#_CZ*0i>0UQ7BmmWWO2D+BWmLIT(^a1$>j;uHb%evxCfb=@&@wgt80q0;>4?Pd= z?A#L^ZgKk63BXz`l|AP$;O#@PB#XZR09KM?@G`l24j*Wpdm%W-wOr<$_YAE55~9ir z3&3wD$2uC-9&>w08vcl)0;pK=BdAy*>lifuMR5LHbKKJU+mGn9D<$M7Pp%wA4C(t5 zzRg%AOMb!v6<(M9gvvcE(HF3Vc&m)LfQqk{l@~nCt8XO%9e$`@TN3|O6ANOab)4>W zqIx)Pko645CFv8&uqk@H6qkAK#DR(nF2Vpg)rk==Lh2t;2+c7U*V5YrpTzCD=xOd2 zO?vMO#z|=x@deDI{+{)=XJ{I3s?B^kIMTgAliZhs+qgGsQuuOkGxuYfy!di(NB1V> zk5=1Ni`8?IOuOW1Tz4}BgDp;d$8$}`!6nPt8swkCW4$W4N#^5-$~O}JQK^fn1K280 z_=n5Y14y#PA7$t6pX5pZa9@(A{886Q^0a@rFUeMa)OC_P;~(xz@~l7VI!U(qhx?Lj z_eWhP$qxT;Uy|qiQP)Yb(?47me6Od=(7SQ4YP(m1>sY%GSlI%T?>B0jRWN*WTeRXM zkG%G3aHO>xVeGBG_9}ffIKg@WC=S{_RMOxG-*uyVs^p^1B!2N))JxZ*_Etfi{LRzI z+6PpH^awBHh>Ayv>~!91f@J>Vx<_4v`tmhl70LEj2|D<@CpY2%P|k$HSC^W9V7crS zpsR?Z92*goF6003)UjTzlFP0i^aR=aho`>v8t|1|I{yduQJ<8oKe2(G+mTraO^3z+ zw3dR)-pPM@40j=o$Vfmb_PoSkTTK%Hw;nadmMR0A$2tOf0X_soV8_}dz;?iSKtC82 z(*SAMe76|zC15wU?R^MXkNturfMjfj+y{6Q@GG{0@|v7hfZl+$f0oCWx5Jj$et;M8 z4(T1h8NN#bq)YVQo<<#`KpW{NgJ}1&|L(>1X5v_5x?Cl2!nW93pXp~^*Z!ARHOEKv zvf~{Dr*6aZY45JTJ#B;VRmZVl0|s@uho`>wD95)Z_~-+N&B(TLOxgODR((_xCk0Qtlf`;I$W&Y2 z?UH)AG=7YPvus|8D1qt8dNCK3gSVkui*dCGEOk7>Su&~k=h9~eX+1qm8i#1IDa1;V zb3s~tRq2z^Xw_gW+AXICA9klN8Lpwbh^mw$ct`gbe(SCK6c-LtfKi!h8 zy7mg3k%l%GPN|{ch+LdNp$VKL;i&g_rgjsalPql%oJE$F4ri;S-Hx{j?lA3E_y&Z* zS15bJRM?3ytqDH!%6kL{DJ9m>a`0SG11QD+R_d#@Ygpmq`)@V0hd|+?aIIW(8nB+^ z{e&jDG6)}1ybz(OQwAfn2asF8nu@>6YHD|al;3M=Jo_*!o?rI#4y_}bb|J-z@i-r9 ze=Y4E1T~A)+QOL}sqsU$m60lSNu<^@(P21E680bV6=ybdNV1}|1SIG|=XDtqrSSu} zl~Ks7M2Ha1Gl+riG+L zz7%FCwR7 zDcZl7)0Q+XUCAu^gd&dy8=qCjk1bTIOX_I&vf&Z%d}=f& zLmP-#$1~u)S@zV|da}IwAm?W3*Z}OiSr#~LS0Y(CpmdVAM~?Pw(4skXaV?lOS-#Jhcf z=B31C4@S3{KS+Ds_e||`Vz4#~G4k@Ei(2z&VlpuoK)&vMhw~q+sV!Mb1y1%9qS~0qE!6H*bg;uQ24niDKf4e-c*k4s zUhN{}TcYn*Rm{F$`%ERE4N^5h!zF4Ud}E3B1sbmS0rUqIlZ(l02sW7-H6%V2HxNcF z)$T&ROO~QH6-v!z+Azi3wsLi;JI1?Wnf5b_U9eKAr44l8-M5M@;yt;FYO_!dtcHkT zqe(F&X7Czx2;kx$(F&n1H$0*xDDCJk?e#$dxag~)_xK|y8bVyKPJ73rNWE67+H6(> z#QDu?81-p6@3P0KNMUMhQRC z*OJl@h(qGD8m-Hb&r+O#1XP;v@Z94{jDBSH@x~d{QfG zvUez=OLk}(?bst6fZ6qt*2LTSh<1+~g9CygwUfL+P6=|o zD@mU~dU0CCCm6GR1CzJur`kA|`#sxA*ndK+O+)Od8Zq7rC$!j5R57F!G#-)TrP>Z8 zT5wuRcfXG%ga)|fX#Z*L6W0gcm0v+$LZ9p3Xg#Zw^s}_xyi3k%z1{AkDsFtyZ?|I4 zRs9H$*E**Sce#$q-ZAm!~)+bmgAg7D7S8!3xrUpa&Gt*qU`=8@@mj&s6yQ}npic#N- zQ9p>%Q5>p^+x?NULXy1wb^RyGJZ%Q=U{ilsbpW33;0n_@&591w55YMRrc*)dHS}5P zDv&myi?$EV&$v0o(w0cmOcg4udJot&c-+&sbgT54N-bqI47cX zjw$YFeVFQ-v{btSXnk;ar{71}f@qanakLJFAh>1&XGO*6wUJ}97=0t0V=;OwbtE0m z`5lW@&<3&K35bc+=OVOaoc;%V;MOZ}&d2Lexl)p#_l6T)TZdpsc5QtaViwod)7{54 zsX<%sRBin!2lp=@&U-jff5`=LoSCeTLfFY5&*qStUquQbdHTBPdrd5%G<{)$B0 zrPWTYjaqQLa`cJfDwGCC7q*2Z$CC7nihCn!7p*w&Q3sVI$kkAM?LGe?y>=>D!mUlO z0@!E-8Z0zi2nn+5_mCKF6;sh@qxJjrSTbUhzt?Q6H$$Pnlj^X>HoNT3k>k#(E zbqPB}HGo2U!fDeMa%~s;C1a<{`j3NZtK%Nz^R}o9I%!+>Rd2_e_2deg=4b!^&~!dq z$A|%Yu%qgjmpkgK;9Hif`^?hNqRFdp>Qk{EDf@2+@0N~2&*_vjFfZVgmF(7y%i!?9$ft1b`+Yq zO$(P(+p)H8jklZ?lmT58tuwo#Vb!6+F)}m@H=DfHRVlU0UG-LeY%5>bk9f3<)~=WP%V?KJQdSDa5X08&#T+Xv`^EIJO;o3-jEKaFz;hx;73(vI3LD4fa9E z)Y4Xmv5M*7C`EhUSoEzD=`v0YuV=^U%T+mXGU4u;2@$k5IKnvU0)z82xH{wTczvN= zh}JZu1F;pqE2cp_w<$sT-f35?8ukzwI7aF&A1kWT=9;KDk~LA$retLP zM4gM0%Ol=`U`)o}Oe=Vf#-_ z(jP_bXHHf^rVg-bH${(B9hGy{G}*Nu)1#yJVO#3`Q>Z{>*A%@goZqJ?kxQDY=PK(0 zkt>Ewa*ISLk&^{e*+Aansd|DNWgVCfGpIz8R$#kp-x)gBYl>&+JFc^qoPQUFeFRUq zTfc}D`7?E|`v({bqeIfv2R***vuDvh^6r@h=|!wAvtjj=$n@Dtrnk;kCe7v9=u4bs z>oZif^sk&FOw5s?XAeQJo5Qmm?^Nh=aK*3E%S7> z?2*3!7GR0Q7sBQ#krRb_Blme&k0ChrCvl+?*)|LH<`F+a)zn9ZoW-!q{Dfmy^nu9d z#6psbx-9~o7re!b^jxyl;gvT2PO4xqqepf$O65TcwomqE*VaR@0)NeQSvoCv0QE>tPJ-Fi=;c zS5=cSt6`Z=l6|XTJ5Q2&YoI7D*&{-Z^jo9PLewK`l$njfIq()2L4r%>SYLHhGXz-f4zZ1aM zgD$UEeI;wdb@RyIpjc77K~?a`2HkhgFH-wy#rTbwf#90MjjF<1H=>GLy=ONf2?pz$ zo51iA!2k(!dlT#*OawL|#&B=xCa^1vXAkm6YH&u=ut%)uK-}pDwUX>NHOn?DP2KQu zy^+$?^(5;qd}x8!nm5?~ypEv>cI4xa>%CRC%0S-eR&#KsboVFp8iDh<6(+2BRAf?GhR;7oJpV-2D_p_#G)N#hnG~pVGUj$~2VH zEovx8dRlL<-i>ismrIYMgUo(fAEF{PkmB_?+|gI$uC27Fx57?_zS{~V1H0xKX5pRl z41^h8^;%>90G!^IxlNVaahv|Uxbk73WY&VR84Rq{-LCghdYyAxmPr;+gZ*lEmD7UT z=rI4e4QFY+uwB1TEps}N$x%lBkKe#AlXmD6-M`sN^0yuOJu+<=%6u&cW6RRIV8qkU zVX}jf>5ae`&ILu$3mCzNimTg9nuel?(Y$ z;_dj7K8&kDTf9)%7(8B9!_}gf(IEJy20n2u)MLF@Ue;6GsehwVtEHm>?~!k=^G=0&}W_Q>uc!^2hlOHM0-&G z-W|3|-Z`Xib%(5yDX;4d-TEro_`05jdrFVIu4h<_R#l#`gj3pHN59-A4G&{p5^NVZ z>8T(yq7JBQ3?L`L0et_y=CEF9HNx9(hxialdIQC7l#nY%a(+j=Bj*G(6F|2oz{$Xk z=aCOrp0Y*R;PjUGhDb*pL_Z5lf}cjM<9GcbU%a8$i`(Fro(uj?`cEYOO+6#_Jc2zy z_xDTsI$qtYTXdsV;0f(oK@c8sA?uO-!7sST zK5WRL5JA-*LR`7htyZj@dP~nq-Df9tN_+d)swYD1mF&0mn5>6@rk(0Un+d-OKf94r zv3%etaFcL4@wBjLIXVP;yQ2g0s|G)rXG*CX_dtF8wjLR~7n?0uGjhZ!APzVgu`)6; zgktdBCHZhqRJ?ofC8;sa9p5+;+cW}O?1pu|Hty$_%Q|fDkf!0$wF@~dVHtyLcbM&t zgzK<}9eFTvfuolF89y5EPw7Z2ZQlfx;s}I)ISgm-n0>K4N>y+kJWd5C;s~O(tBuH^ z%smD`cZBVZvE4bgyBIDLlES_A5kidbgfGOiQ`!=Qvl+Nb3U!2QraMdp%CMub7Y(tq zVCylP4BH)UyH4>FZU1yx`7SQ_A;(+VhZQ;1XyA8vk&}E8;yKiWaKnwA4e>1Q0l)AQ z*px#-BA#tQ_dbA=eka0h-WI9=Mp)_>;XXug5;+aYI!21GAss@8*cowF%lKn$*U5{+ zRvW}2u}&Q7GR9p7XjDxuzN?3{i$xqKygBgQ0W^LY&p*CH3kAReEi}gP>hwK5xp0CV z{UNwcJ-@&PB}ayccappD+}*AUiS+1#F>=vla|@ z@?_Y(cG}r^c52ff#}Kh&K#>+!S=?aaxpqV*u4A89M7%@Td^?ePq!NyS& zImQBM`TZ;8e#z~MjCveC=C}pmkLTQ(oTo+4AxR+sexi z0%~kWEAPNY$(_E|CC5kz)6sq3cAX+WfuD7u)~JD+q6~TcBRw&3yB%@2?S2NA5h?43 zxm8h%D$vFmVvs=qWhI3-2L^=xS|KPo(8 zubt4T?0z1h6;t@3jlKYvRbW1p)Q+e^{XOO7j{wdBrsGop@`GjP09Ym^oagSMeHGqm zyGLyQ>$Xc8neGPw)3Lg%kq)@RYEA=FZXF&n(jXnN8cG^c_My!qqVB!LRQ>$;j@JZ0yHjWA2kY=CgO{DIT$ne6$@H5R@ zw(D^5W7~hycK?LyaFseB7= zyA{nM#~>yWydWyPfVE*ZF0g|Hutu+c?lTPe%&>m8TVlJ8I(pyspRnEk!u2QR%4?E* z0vjqgE(#uvn|EVtz|2T~h zhjB?iTh3wb3dAMOHabF82J=3ZVL#N2mMeF5=_`VEDS+M^a=^dD`v%y!w3#Q$!) zCg`9)3a&#&H2h_LWUxy)WHbR86X9pKWIAe%TtKSN-$qF;101%o`_#NnJyYMp&U(fJ z@Yh4y{2Pm%pGdt0Q5o$VGJit|b7Kq9WpuiUHo5Fnv4D@5+k55ZV*y~p3`eKB*~65PLdWx#WZD$IeAhMeqz(YvROtyB%27g3E(CG zUK^iO@5lz6#C)MCLJeRYt-l7(B;Xa>br^ib_D9=X!j(D|rIJ(c9QAR)#4}4~b6!4P zsb&Yl-yOibr`Rs?E>s97^I&Ak#H{V}c4GEXPA-TiE5G=->M_I=P$w)DVbnPEv+AFJ z(4^Y_bla_GyJPM6j+<%Yo7iqspIcZBchjnjTiEVRw#&;nSzxy9=GZPS z2vqo9w%glw``RvUV^ZP$ZFivU=G*RQ+a06aLQHmT#GSS~$#y5&?o`{IZo9K>cdqTu zx7|Y9z1Mc{v)v_dvr!Rpg1=e-a;-I7O@ki0jSqEvM`iZT2@R3Kr}bEkU&XaYNIfZ7 zj0GljR;G^Flu>pq-;HLzvoa0fDT_WlPPW8#Pp9?KSobaXO8*f~kFT-JzZ+kN;B5si zTKgJ(aNlV zDj;RFE~ozp!PxOFUYf*slg?l>mKBRg6mMVcO1{$vT5&+Jqxw({&+5Icc%UkIvjnK7 z2|%$ss#sv>I6T(@(7e(Bq_sBUP>=X>3i)2|+LXJS{;y<7Rg&QoI=u7)%BaX`^0bHq zv3}G&RtoTy5Z*Az*jbT z(ips3o_`Lx)~ymBx#DZx^SD2vUX`q`p2He>MimqY!#mOQdhNRPfhSA40;nA+0u6v8 zce~jBhPe9)?*|&m*7JIkxW))&tW3D;IHVEJsu54dw!%hJ>|1l)M5 zIr$&Gw|b|?B#g$gDa3`|?BB4t$E9IUDqegK??*?B8 zHEsi^LOg~SSsnBkqg*+1aF~fb-rg?#bj_G?&E_$*mA!fFs%HGEb*zYeSvS&M zxsqfUU#M5rPE)C765TWs61hu{Ebam}D#Ibi0XG-yzaJ)?&fP-_XEt#_>Yibx>rL*9Ug$p$d4^Fl#y~S|ezGn5t+uIie zyT0BV8WAb|!wv3Xm=JCZgM+W~c=u$z2!k7FCP$z)9yu9d+zKbFrqMhMtzTh4{cu%I zmm1N06&$XvyFpmB!&hNd;cAH*2~CINkzzu6$*M*GjyQ3^b1YyO>%h*)IHr`6mp_iS%>d+ZHw4n3B@=2H$*y{`tQI~teLB*pEr)9vkr5oKNg`QB&1c|<6KpaJ zjx}h=E z%^H(#{(K_7Cf;a%om@}Eql2j}t1+Uzf|ubV5{$Q8-ThTYW)IL(p)$}(*kq)Oh4cZi zBW= z>;zQt4G}3F!1fE5Ho*?IWd1Y4q#u{T2H6xA7LO<$>Qn(C0uP#KVHq|2o} z;gMnu3Nl@9N?3pF@_ZrL=p^4Qj|!K2b6l~7lx5ChxbjD8DTvvCTL7a0QvmY;{-Q!D zqfk~z7@l(g{87kf1IRVTLB%Rq;fym5Hz5J?RY+J=|5!wF0hn?EU`jy>q#!i|iYBo+4$&B2KQug*Rk>_e zg$>Re*-#V)RVCSzhE!?;%3tY5j@1jHl~!<xYwJfLWSkqV~SE&J*io0DjNuo=ju z{s3~E9AOj~DuojaY-+7*U|^M9b=k+gN9sZ$M)bC`qXP70ce$SNt)yy3ti**v-(UD8 zG~63k-^g)C^hI1UC%7W+goehbh*cHZ?UoYFuZ_l1Xeqhwrcmni}6z-PWi9gYLCv7y}1;OPU!QX={wU(ZDfdcJ`Hg zD!$RUh|rZS5IW>~p~-Ttg)v+e>U1a;&Vp5|$jFw4H)5!rlu>NDTN%A03T(7P;%-^i z%1DS9c1`Skt&Fx2!voP?_f1BwtL_NkE93{#HV%c<15i4G>;f^Cw>BDOjNY-6;lI~FK*O4fn{{W$oU^LYQL-j;2RAXmf$;3yh!Y!>&p z*?1u0P8(g>q~F|Z+-^;*l0%Pn#;rltB;Xu74Ab)QQOWXNjuC532EL*WQkG+kvWH7G zT;b@3pU~g(J3>k!VjYbPIA=Q=&8uu&>_qBq$~0+~3;Bm7MQ6Bdhht4aAr*}%#gj3` zusRvOkG`XjkkVW+kV<|hbZbrKbTS%QQ~j%g>uF*79PMP7RV)ODd`wt6fld_KuZ!`S zH4RBC8<7XFsAB?dMU%6ED8yv<^eWK~j)j5RAg)HZ+PHVCEa=G+yBe_?)3K>?W!Jcn zWXT+Ccp@kaq}`!luv|?;{J**y&qi?sXMBb`%qfw5-HaLN{tdeu_=rbk-y6I-))U6c zB)QzvXbxZ2Eyh^X|7xDWeX1~CX_$ufQcTI}WyC~XV*{ZIu~KjvM%UfFjGK|uo?g&0 zxIsJ5=;^YsHdOaErXupy-Y9R9Wc5Ko*p%PLSnQf1$NLxq8>pF~T@}^u z{WLXg9kP=We3$g=YZSWg)@9YpFp`J9kL}Py>)<;JS3lzh#XvV=;n>lkp$Y0hCzY8L z^iyKBq#tG?lVp28;~6DgWU3<=o$>68JmFU34{IhWTq#eGidMc_;`_vdp(g5b>^9@p z;E5p9CC4tJMLIW*#?k-%jT;efNq=LNdlq)sRS$}m%mElsFc}+Q#K7JkGXN?_vAj_* z+pe=5%rg=?^O2@CM-FF1qG1Ip)KJ+7E`L1diegM)Tn-fsW33;RT`AE#L7>M#j9n=* zW+3_n<$@78?4`-}fkyLGrX2-fZ->MwyP|5e%L9!a^4%cNt>h<}hk1lci@~_j{5@=6 zt$7c~s*jW)P_@cztaQC(C81t=zR_Ow?%<;A(Kru$bj{kb|0wLa)%iwF14>l^(vat@ znbXov2X%xTXB6Zc@3>TZvW#3QK85>&z8->E)g1YKh>@%WrkR};1%%l#D*M}9c$}eeKz+z_^PO;Wvh%XW%QT;f7fAkdLEecjJo|TPKl~tO1K< z?{5XbcbX%N=@`sGRZJVUV2?YE z=4z8MMUfQJb%a6Tq@Xr5ILs>3d-zV{A$R6t|27516xa-aqZsZ(xRc9nnKRi)uBDRrG2*mpXPX9O2kz4+NGZNxQ8C89c}^i+)=fDGgfVvxiAJm>un$ zVl>7A^2sTN@0#E!Nvg{ubfy~hm2M_aSUYEk7%cfyF=7pt(l!x|u665`l^ zjS&+hso#I_x|ZBT)Egr4;q)}4zV;yKVpVWL$TTC_UHwa$GR=sNXpQ&Q{z(_ex@kt& zW?KT#9|!pV2=FJJk{Z*E0h#I88!!m46YwFn7EthL!#4s@s=we$1YFfxvSzx`q=RGO z_)j9QhjTu~q$oOZDQ!5FXoj&WZap6PBga?*qp_4?***jF=a)c?e?5;#*$ni!Zv)U9 zByNn`yVAJDn^f7n%SKd)GjSyG#MC=Fp51=o0Lp=+)45)z{_+}Y-&{&YIq8hfuy2rV7r{VkPPyL5>p!+yY9dSvh@J+hjH@&4!_!A4>fB; zKU=pU{FFe(bAalP&lFa=)Yo*=apb&u$g~j@PiEu+-1SG*jN8M{ME-?E1jH%-UH<;r zjBoMv?^R!rKLtP2F+D9fx>*30#flC^I4=FT2ZjMjahieZ;4akLCB^sQUCYxC<62pU zF**4}mr_i36u?PGzBRz6JUB{EGaPlTD9+h#%?YT(x9@)QRgWsl!F>!I^P-=>;@`?; z;T)p@-VSuy>1fJ2c63c_qZW%AEo zd`pT9r~fScHpPYTR;%_g5Uehz7fvRx0>_Md0q730-QjSZI;7d@7)~Ocv_E0LH*wQ# z91A@HoB`Jn65_r%SLmyOKe86KsFJV#xY@ulbNA z`q}pT>JQr&2xjVE=>0Y!%*+w<1%8Ds!Cq;9A(;$6<1Vt}u!gtTas2ar68R!XakW8# z9hp?RuM_#-cH|n8^jK(y47~@R{}GQTt}X(ZnBq^D%%IyyR&KFkisrBNtPM6(g;X}Zi z$cj3^Iro*;3^`6EzXIWGEC29%@Uu6Q#Ux|p|B=V4f6k*&74q;uM^NFb|3`QX2q1Cf zQIbv28az9E@y8bdU$HI#UXH6Kix(L+GavaM`I8B2{ljrt22Q(dHxlgqZjsR~bDe*n z%G75lI~)}MaLHc`E&C`?HIQ#EfUcrnwl2oxcd3*y#`^2VXmg*@HEsif*pi(9PK&aV z^(1=~UOMmp6rbe2cAt?FxAA{QR0ps=hA0)SFX{}~P1mA|uSIRX7WH@)6i%g0x1IpX zF*$cj84jwowp59wN__HK)KgVZ6P6fVwWopNgeDkA)8h@w$4iVz^^PUacj>{-sW|8% z>H#AbQ;w_$jOHrr7F`!(#|Mo=bvcD#*Jpch z3PCwyyFY_8j_?nb?7cWvtKCv#h%16tGJAl-|G~0-nVQ!hUuIma2(3(dd^u)*CDQC6 zV{t_&$2~UuU@3WsGZSyp3M^n$1Ur1g5fLl#D#$6(5tqT<-&ew{jB@a7MUwB!vG`$x zp}f_YTn(0ytFcm4;w@Qi;FysT*;<74k`f6k$BV_*j~G9wTVqfmrD|wZvFcPittDv( z4nXL;)|k3>XN^ejrM1TETyfeX#*18iZ4wa`E%P5WK2cM$VMviCWtq?{M@M2Y#Jant z>0P}ZFS=0J)hF;)a{mTnBA)AQH2wfpNsnP#Rw&aSGv0)+Gx?`J-SwMDq+}P28)uu8`1F*$defk}i)9R;<0D^krz}0PA`1a=sgP)|9 zf)wppv@BVrC~Jb_e6qG+U1hk8*`lV5OSa%;v?l$Y#JUjP+dqkh(Y$F-Van*n;W!`e z499}c(?%zRZF!nuII+l>!b5?!8l$WsG>Y+K{zK&0R?Ihh%K5EEa?}Kv+&ck};rw0> zbUq4_o-x`6Zvbkq6g-2~*T3*s3-2A64eQewz}T$c9^gL!5Jv&zFXnGdlmH`S*E2@@ zsE2*nDzn-3l9hxPa&gZZwOtQ;TRw}`25p<&As&?p+l(f`Tai6p23>GxxH?G5HY2$i z2e>JK#Q*{90GtQ30ywiO_NX+ZOop4{lD0dHdafaoz1>JiVib-fDFEt1M&)KTM)g!g zEk;yz++}^BQvgoXU+~PRKTDe(=vqT?!kZBjp*V(&8z3YFP+c1CFj^&&&l?$0 zY<2us!ZHf3k0S@4$5eHfoOm8}+A0VCt{Ec{yRpKMC)vA=-um;%gRP0Xw>JLbj?c`& zGk+X%NiI8M4uC&e`_7Q7Azd%IYGGD%VYlH)WXIhGAZ<*?mLqNhAVf-c>B&XC-m4u) zngUxz9&?o>TvO?Bas3UjIb0Ki9qP)KntY&zs1E8@RDGOeNk_vO2IWHNrqGlo> zkd0#{WUrB~)_)k33UJh;8qAg_#sWnmoZ7MhIsj zn)@)aU;(?M7h?&oL-49~^inT|xkQ~LdCMepQ(bVQt-c>sey7x9Co^g~Gh zhy%vWEtKRTlN11X!4?<|AU|1QR*J?qf8>*5gd97HjB)$oE6_i<8}1b&H!CnBwmOGS z$_={&spOCNXnc+LmKBXV&BA88ViL(@M=EX&lnTskaA?BkuNbd_V>op&U2_I{pI5$n z)p#z|e{&L>lBBX-m^G__cOkDChtvxNCz$Apm(8;4$8ewU4wkJ4mBKo55DIIL6dXbw zUz8<>jJAbOAc+e={qM%Vjc~~{W|;%v?_L0z_z1wMdl8=bbJDHAGl6O8^4AGKYT4h& zWQOJ1&ven!>mH~TC3|yl0>skSjmQ@4Urbd1;Hbw^nTkJhoVk$#$`DekT@~%+*z0Jz z0=fJ;UNYgb#KX{M)1}K{<4MTN`NMeE#=ge>$WDz*1JB@#kq&RbB78|^zJUdQe4YNL z(H`QofQ}{y--NNE;le{BIgah!0T5S ziuAsyN6Y7LV;9qYB&?4_B$>baa0@cb)Klw%Jfgj0#6}!I1lph^kPV0>|L20R8T1|F zW_25k52xlK+ca$H?fb6LsqhsfViVN`I3&J$9o%cz!5s|1k)foJ{ex9K6cA3r*jyyU zR?WJS#+E?5E=lj<-M7EWCi<{K4-G`Wfvm|0PAaL3n004>U)B{}l5!A;S6Uf(7V)OM z@t%=e7+AzxD1u^C2SCw*SJmom8}DS{h!*2ev^ZF>ahY|=b@Fh8I2Pet4a@=HCku}l zi4cS0BSx-zeMwt74N#%Ns)Yql&8$WRSq}tB8^cXfIP~|u|uoh$% znSisfKQwkAmt7yyoRgCu!e+)B>5o*_13ogA!}rZcD$2@_;lrDuYCH9uu$1o8w03a_x(<(KTNf&F`S_cLl@&>H;V#{IS>$0ERUOkjeZp{*3^N zii7K9<0v`~&OiN)xSzRZg4(6lUV40q0k^%(`4ZPETsUWV8X%FA%6~OEL)n6i;VR~ePcXT-E~$DoJC(b zFK5qU=j(Yn_6rPz@!uQuUFW@PzBd|GhkNixV{?$}w71|QOn975eEetB1v9&gMzS~R zk}<^X`p7%|S0g601v$-j9{{1^%x)1t0NVfu0G%+8>jAhOa3`P;a75m?Y%DHh#VOp; zwo6^h#-jq{kACvm5%kw#FZc_346^t4hX?qz0KdDczp&ch=xP2L{3pPFA;5n&z<)Zx z|L*|*#{vE$Rs1k)->ibb>TZC4Z-9SSfd82Q|KkDv^#T4h{(h8SZMi=J{`&&_)J6Ur zni=4q65t;f;2#m-&-e4Q{A#!QA?Uv)z~4E*pB>KQ_#7^!xlu8$Fz=k|W}zEq{^by}r@Z|IPF3q4YNkXvN|R|FjfC6dL(SeT zoMC{)Il};P9E<&TF_Q!*X{3aC%#FC%mB*cV%yF(riPy{*p`wpzW;%7YDOWUes*F#> z(`?n_YF}7u_6-s|pvS!qS{(n784JkP^de4sBhK45t+??lEJ6Z$N>m zQV@YildhQIYVc_#Gfi``tA$)P%~tAGW@k7(Eu|j3ZtZWG-K5taC@XO_&XsHZNe!$( zTV`!nmYlTATQ#b6RWoTBX3j!JyTZ&2S7Rx?y;g#Jo{yc^y)L;u^*LHKbfUU^Z9yGN z{y7?-;d1GR&`4>$KQz2(^|VNd2sdj>=jLXtbPhKki*#mS4%^fi;99CjMmUTnMv>zU zi!gfzV^qkGHd|phSQBl|jlx?jwRf4UcT${}v>3Bhbq2}Tab~Rd?ilmNAoppPY_7>; z#A8j<`*FOP5-hL%h}QWl8FfF;!z7cvEmF)OZnd)oudQ2P2gQ}n7+d$JnK=@b0#j;J zH+Xy1!Jou*^B(yt%^WR%rJFa&+H|vyw|^bebg`UO8$I#f`E`-6t5i1BGt=Q5tY?br z0~wHEwylV=GsApYB{=k;UQetj^9Jv04a`?Dka_1cGTR!h(@`z(wpw$%3+@FN0hj<- z2-pmmgcr~Y0WShF&|#VZ`U2*7e`#sn=?dm3RYwZ`#*X3T<+A)r^`yRDyu|hIce?}p z+XDPs0{j~T{Ex_nFKQ;s=MRR5cPI=9yC=XuEx>q&63-EUh@aF{h zTL<`?1^62U`0G^l7gkHGil`QNdRdKta8H2W72v;I`C=Rmf-?~V{6AIkW4!sU3Ig}n z1^7P;@P8EGe=orQMu7j70RKz=ews2n{SokQ4e)Q43FXz3N3RY*FAMN54)D(l@ZTNa zpB&&H3qJ>eh4|*Womr=PDc-kB#LtnDIFQO`^#ARaVV&La@?NnKnHmgAx!%n;L^Rf@ zRX9xy0Vup2XlHVh*~xZh6Ktd_XoBy3-j}p&sMKXLAlpp0)}gyG8=nSTl8s)}N`7I4 z5#D<3p;+C^JaVzWJ6e`LheOnl=9q)noe#ZaMN7L5W+!(mH{P`1jl=p5<_$=Cqyu{Y zGAZj|HmV3}+RBCiIqSuN)%1P{nY1rgW8WIzK_{8_+!MZA;)yAQ_t^XM!Js6nm(w+zhqw@ zGs9Yn&>-Z&Y4#^_z7GbOPpf2|)z{2T9N>PC9+5`Awwz$V>pvldG zJqDWp!f};JgUl)LtsG?X0z2HYgD=kpn~~l5rh`TTbt^}7PFKibCJ!~=X*w9_;Q+_HahP@natTpU)R78`Hs>UUgmp7w3S;qD z7XY>^0L^M7<`l3Y!11%f4%3*NSvi&GKtrZ54YyGJ|D+*FNE42h3#b+&PAG>7I+^38BFLsoyQ)oDr#fpl>ECs(5Y zOvmzR7jTW5a>%6w#tD~^Bg|GZsf@?$=irdtUN6B6SP>KD@xC|0{KVCO64J*`oWsHB zt|8u%J5Ag!Hbn9!q3=@A6YwG86O+uh;@G{&Am;xCo*n5#mz``jsuKL={|-KNO>jH^ z%uD@)QQ|lhNX^eKz}Dex{xsrHVpuaAe=r3)=qsRT;`va=rkKmC(Db!`t|S>>98WdF ztHk-HN}PfjSj;^-)$~~3R>}ICsV2^_kfdqmoz|HuA?v0=4SfexC22>dnY}UXkDqSd zo_Q7_6cbiLQ5jGnwuNeubY!vi~}+Q(^yj|FN_C&5rMoyj$|`F>}#o#rK#o zsmwhZIXSuiZpW@9^u#@8&rC*(MKovX=M+dBiTVTKjvn4Ed9%$%C}7TPGa->FsVbcU z{)FG*(r!_r{oZUd-1-an%3c#TJtA4_f@CactAx!lV^r6qZgF_c)^f^ZDNY#axeUKQ zb9PJV9CWn#b1?nz%P!@AWaor2yT7lOU2+wH|8Eug^X8gWgRlJW;Hy=FRo~b)*EEy3 zosd$90YphCrQ4BE3~V2U2PNsmkw}*z^$_I#6jdy40qGa|Mj4-OnGpG~1clf4}lU_`fqkZ+|_WzB*$ zw5ia19Gy6OAtY?DELv!Gg>%H`)VxU z{?GuwC&15p3jEXShVOf!*A_v=l*sW#CN~p}SqwX=M1Egv4hyDbW69O~uwuY{Rc?vD zALHN7`^;OwkjwYMXxfS!5-}nTk>dMd>Aow+?>FaW`oEZ=(j<#G4Bi5lETgJ$gnEd~ zSz@+QW*_wwrPz_sad>7@^!O!aQ6_CuwjBkUQ5_y%w=`M#fEfd_wmx7sO5{2}naHy9 z0c3(R?!GH!55U~R$xsiPce+hOS;KPfL35lt>=(IpshOrX#avB**VTxY5v$Gm zXt8ChO>F;?vel+HliVhs908>t^e7y8m3nCA%h7UksU6*+z9&`@1P#TvJm#0+=CtSry{YE^u%N4OGv@Du5$M#EPmia!Q>hw zVAm$|8AQE06j#BW`Yj5pTqkgR|IU#}w7%H95iyPxgH8BKve*oDC2FW!2fNx%L$jZf z=Nfi|nZsn-<7OQsoBTIEEPUZ{nA;Hb$H7y)HG9H*6YsbXYm`fi0=LMZ2q}IRqwx4A zQCPGTKZ(8?BP*Z7y4hb(V#=XO!BdzIossQNfecNKJcWtL8JYRC`JvjGSVO{U;XASs zTg^^Ztequ^iI6>8!CGvvc*YF%T^SezG@FP`U}KeT1JE#`0m5ohoQPvj zP&k>n4ILMUscZ*#u{md#@G z8qfMQ!M=-waKdXNA_KWx$)CJ%$%u?&QW8sGDCH{^E-ov_$NbXnQgu^$?KE$5CmOQq zE3KX+-Uo9z(QA5&hVC`JzwI>pxYQd@4$Tx)X6PtmQ2Kl&@tdAE9|iF(cbj*r{T^X* zU>iO=JG>i9qxfv@1&pbhB<(jF$-OU_!_&wcR*KZn?x(IHpFp5eqDh8ad@?Le>h3Y0 zYv4aOBHx{Ajl;8Q17wzo=X6=n%#BaoUNm!1Sm{fOx~x0G(%=QWWBAzs!^VF~JmG24@LlC`Qh*}B(ERza#%ph18N!ofp(p)qis)jkZ^ zliFfe@}zwx&kX?LS9Fm@UaS#sm6k7?uT)_R-wtozj}c6h%lpk8Rmw%)cDV-*KnH@G zub|;IZ~iNok|M#`SE1U2y^~)vYtg&tAeNRjIe$=fX7%Pe@sK%O9W)Y+tXLIRL*2Q> z9yQ@RTs8UeAv32gx2CW=F-k?1fTP)2nXKjOC>NLD_^$UVeci;FaURCt~LBfPGEIG0g2HmwJgGfX;ku}q3C$Nh}JaLMZy9%I!9+8ISL$$Jw69l60D zYuf<9lxNmX)mSdSVYeOB!i96)XtsC zl8ka{-poI(l#aukbW;iDq|NR4KGuVpm=mD zCF^c%GVE{^MpbqB{iyk-)eW&L#iQhy$$dTtKLqJoK-ZvnvpiT}AA*%5Lqw4`a;7Dpl5T<%~S8M(35sVT;3>JZ=`MO^XzG zDsgK6aR6U|+5duZbw(Eb3)2u#cUL$Kz@(q83>o|h3`^Yi`-#de`cq}DwfPhVF`|EJ zPRV2~qU}tXSzr&N#IjIwuDc|iFgGIQffMGe2wDIPAzx`moso{8nYsLa{`rh>94GY_ zK5X0e8LDlYjMx`-o6oYt&8RqY?^fKDJOAG>3wp@Gf5QaqDW(6$uyuynS%_siL6Q7nq=HlK%yV zXIb_I7P))Fj(GwncE0z8`5-8orA* zTb#x`0Jjr$6aaN9ycL6NiR66^>A)u$ zUvrsW4t{O^sIsW-WO3{pbC$x?aWE(*M(+LAd`Y2GtDvWyG3VhBiLx_F*TjDZs|efm zzXKJwp;(q&0Qem+08ke|?cQIq&q8GkkbF4qfxZcuwD6z-o;YhhocJYY5%^I|oQVa+ zhAf^cdEcY1gJkmeQ1a}>?Ef6V?IBEEHo;N`qj>7t902z{IfH&RIq*G9t1l((2efQH zrdYV$QH`xm?_l|A1e2^B*ndYCxx>S9kpqE3eY+tW&jiO~f%w=DChh>PCS~W%C*4DB zbOCk*V^TIu8vX=nt0p6VGSh<!~WVIzFbNP8-*{pkspsEb(7 z%oF_$eDyQ*qB$twT#Gj@g8UL`_%oyc4GO0&<(LbQR6FDvsc!_}?=9>ZRI=_}_p@2U zzhq*gWHs-J|3Fo0qrgF`%1Pe%-_6hv_h`d+ zF@5X*LPOjk#e>mp&i&VX%o>A;l^U<~irL;8do5~Q6%>a}xnHXpF1@zl`rN@+&HC1O z#Hci~R$fIz<5T0OX*4 zPAg7Cyc>a`p^yq-c9VeftH`TZ9-Uo|$>?O+RSx|%1;L~OjuOV*Yg=0B4Wigd zG&?pMgAK5I?INp5yXiKT;;OJViFM$okTY-o95QDB;aF?C*Opnit?&B(%z-rA?VnmE zxU5`jCQw!D*uW`k7J>pkJrqQ`MK6(h5V`|65%L9wE)xd$F%(cT*&9(%6PGG|0y2V zBb<0q|05p7#fgX4xnWf^l(Hvl;3I)mIKJ>o4VTCJaVKl4D{3p!@Rtgxl&b+=~Q=LtRAjR zj36n!SUtgeDbM<|x_b@miY+x8dZTW$<^{Qn3^|=)#CvxRv?5)uN2u2`^*k7HN`C>QmhmiT3|h^ZLX*@ZXW&K{kT2ISi`N4Tu(^paO+7}qd3So z!MkaM)!60Uf)Tr1Pm>EHtlw)& zV|8^sD@(>$J7o1hE7se6tQG5)!-K5aGJm}Fpfnhar`I~v@^~9euy(teK8J#GP)+`* zSa$~acLn&L7k#3&n0q%SLg$V{3U+y>d_hWq%9`Pa+JnUYL-v^~RX2ZmugLQgt+en3 zeraArnxgf)p<5?eeei`%*(56=z)*;uY>h$>o-^6Pc~pD7N2XY}yS05trxY7iMy}?y zz3<4J>7e&z@73wnayKl*Wp`Vj{hxi&zmNT|z8KKQs&+9{ihX+!pgw?lVwCS$zM5&h zjn-c_9~V_8Msg$1EQ^*_?3J)TFGm&_oS0wa{)>mL{ZiEiJ8_R$9`iUQMy#UQbzBX<^wF z%SzJ}vwO4D!fdeeCVbDc-}gP7gI3@7|MPRZ&%4L9*IIk6wP%m#4F^77_5J9x?(G;} zltv}{ViszTxgy?lVqMGLyf@ajXA!Q@^}OY$Q|=P&anIXM8sEMp+HjY)!}+Fok&5B8 z9M?sJ`$jyXH4nk{yZ&zaj@3=yWk^Z~&c9IMb8t%fR3pgNGw!Tstq;$JS|2g}4q#)dt9+g_67x zh4hj!8x^{CZ`2<2I*dfza8^qb{U6xHJnwm^n9rnOlh(&|5QBDYrVG!XZGw79+N`Cz zK9~H>+AQ~BEPBjGU3)fb(XE&ph*Vf4U60sU46NY=39HaDx-cmbPPXuKE>O$ zhc%3sq6#ew+k^oHrXDM_&a@X_0z}vpc!}!^|8E>@+M->i6yverz$xip0wxMNl94d} zr@{Asq2KR;H2C`qTDS`wwd6(U{`nI75_;ZO()A_nM%Qs4D#apbFWL7pvFX$QsSR;Q ze2tQ>Mv0$Hl)b6g`*{0StwjJNiFi%BQ7sPA&L?&$ z76a8=zSKs*XkU0&Gm|%6;K18!+9Z3qDff&!MFzbN$%}=l*I@%;2Ih5uh;4&!01bBE z{qzm(7Ipt26;K8oXz7=_6QpRn_JNu=GG)mtZrt?W*Ngq&Z)%ZhLB^2<%tIvLrr9^a z$xt(I0;iY^dlQ_D)zGaVamhn44ks4XWVH1z&Z)szZMlJX)eoK2qtsJtAX>e{h zg;hhIGNIG zpJd0ClP7_1k3^k~rBW(SX|wQ^|E)Fv-u!P>lI`CziLdrst*NUO zxy0$X)I&c4Jv^U4n$|OMZjCa8CfBGQv${srxT8kPQysy{PX@doug!(6WO@Xi1o-Zl zX37mA*k>^AOK&8myR^#y*v8Y^HSp|x37D4tSP2x`Qta)V6r`MU=H$UXXS9crq5O=N zrFvC&nLfHPB=lD>^v;~oUIBJC{s5ETBR~A0^;ElC9M*AUA!oZdPe_V{zzu>UU*NRE zk7#VMEd3F!tdec?)=6npIL@8?s5STSx({L}Lu$g%f4cmn-HGZde$qN|X1lHskE@p~ z;T^_5V^Cir$v+ckzAJy$a>xy(zba|7@>j(w+u#K)Njsxt0RAhaLYdq#T2F!8-(Ifw zl+C|s53!EDr=b7T)j;FUq2JmVNZy94F4z1|yGN}%I5hF&40PxxMOW#Rbp^j`Dej*z zX8c{74A}PL(-lgDMB^f4mvy^AFNv+yhR5(0Yod;{;2%*mLGGvpQofe*TE%SDwHW&U ztftx3E!dT^v`)LmeHKeC14ENnc=TSbUxFv$Tgdi~uDBKR^e+?xIwG31Art-zQ0V^# zpA{C$0+&9sL*UfFXar;Ut}HelEFc*Nz%iUN2$m(+#;vDl=TM3>b=62lyY-zKWr<&G z`!Yj-6-eOx#`@!~{|RP!GkoV8>vy``zoQ54$FYIMVftkt#-T7h!+jnT*kO9Ur`85; zmkeubW+40YwpdkBr6g*EzRsVZq6vr?DpgJN3=btG+q6q+t!&BRdZNeW552H3Sre{D zd))pM+ro8LR~@cHUr3lozY*SakDe71f;6nTv6B|f48w{Q*z|3W-h!Dts4Ucp7I%ay zswNk5XJ~|OBE^^p{euo+NZ}XC=pE#DO8jCt0#B(yt{~QlY5)F=Tblx?UZTh8i5Dz? z4MswhS*n`q-GbPjgtwv+BGC>Oe*=Ot;QUp}=t!N4WI-gB{Q|{S;1n&?d8B?5Qnk@^ z8WW>6m1p%KG@D&QRpQ&I=}kF$+^XxBBT<;4b6>{}Lw~kSlRs!V@&*|-Q_e|UL}Y^I zaFH4pLV{s~&K^^L0;Nv#>QrSBQF@M&W)726Clh2xU1NPINJ-}L-iQQGGn{)S>@YuLbjtZdF$(lHvHC16956dmyk4n@)e}Jid&A7}SU*A1 zh_pam=O+llvr%}ORQHDUKQT^!Ol=WhT2j59I(l$L>+Ho zHIj8LRQl=``m;zsKS@8$Y{~lnRL`dEW>q#jMYkRVV-TAHkW^HeoJ&!8%TslTSzm1` zI|9W*nB=EnXU(8={dW-KWPd$Nre^4^8x&lgp)~6PqxW%p@D}0_9fzuNbnF!L zMYRQYV)m&=JDtY|p5l(STREtQem7c)@miuB>7h?RN67DqegW;#Q}>}G=J(QP;_Ibe`T#d} zz6Q`Cwzr-U+(mtZdqY%Y$J+gyQ!w0fOmV^{u<2B~aZbE1stf_ahlnX>JlIhfxedPUt`n8|}WN?b~8>Dyk_bypFNEs#t zv&=+|NT#S`gD^%yj2hdjz9z{$W}h}#=VWi!!OB*?U<)Yn*^IVeFxcKBl}w0{>0qUb zN}s@Xx!yx`PIgob(Pyd|L^g_83$ktsE>#?dfumz1|4CgtE>(4H+zJzvs*!XdpCm}` zP!%(MsNz9*7+DO}n`2jS&9fM$b|0pH8#Jz(f?N(Y9k?9EfH6N@=X-=3hoeoEvU@oC z$^~p7XNRMctiww&dbf5wc)&jv$>02RbR&2;i0|ftV}xZ_{YEbwqN~no_3| z9C14Z&T3`)RZ6~$xk{D7p_3~~rvI+x$lF)xo&QpLy8Q(uUk&S~OtxJO%MFJOMxhg8 ziD8r~7M2WVpL*!wvT&5%x4s`7ABBGKm-cl2Xn+_vR-7f;HE3wDWL^VJm@G@_rAX~H zs4Ug;(kw6C@-i&1rRBAvhZC^ZqI+gqzuOgJ6qjZF9ybNrY;hs_Tx)rz5V9^?&K06H zZ6tpTzH(&c7#MeLW%n3V*Us{C#XS~$nkPkL5!l}HI#^yu%j;x$oh`46<#n~ZZkBh6 z@}%TiAnJy(0HB8z-cu^B!!W3q6pTaZy)7@_^7>d_U(4%fdHpSKfaMLeyg`;X*z$&0 z-lfWuJ!4VjsBx%rm=!);wiTh3mq|?##m9As{<#Rz1(G=)G`n1ejn{{}u8@`E^)lB; zDV>1CS6UvP;o;ZSmN&}sMqA!BmUpe?71F~QvZ*>2{=STec8#$DlCFmqA8Vz-xhj@6 z&hm;ZZ@hFZ*0CBWHN|+DkYZ^1uh~E<-zsgUfRZz1@Dv2zCZ$tgAl@#eH^ZX3!}4ZfVO8%W zM<#>O?+o~Tm()%L%4b{N9Lu}g^5#nIO^7SCO2Ey8Ebks>9`2e)ubWJr0wT_r>JsqN zy_R>MmG1ABx4^3F;B?e`zxBJ-4E%n;ie88lxyZW6it*f{Hhl)N zFD#a`x9I-?BOLmhexMcQurpoL$7LB76iXCElxQ?MqNM!k=(u(R@RI_L(S70gM$$hXMv#}mi$?Iu@d*xNo)rf|7bv^!};4RJ7(#57ab`Ruf(UN6{7Bh z6o15b{hhGdQB}|Hgy=3Lx`d-&k znLJk)*D|S{t9R-^mCZjAfCMKaP=WF{YgFc2;5W_s6nXcfFca&uOG`1*agsPl-6da^ zqSq{!X=NA=*hJ?MD;se+g8!LZBHHEQs|UQ2NJHyF;Ly+cn&-|{mTASmom<~U+)_m@k8I@T9C>hJnRXk&^ch+~r!b9FvYuOX+f8 z=@}_s4t{->9v%r;q5tGcdJbeIzZAipg=-Dxf+NY-N`YW3;J4spdv$c&vJtojYL)2s zsEP8$O%j%!e+MrgKc@c!%cjR4)3GSj$ai)XAb~kt@Hj}dUdrkHLuwvZ)};P~B0%O7 zNTd4lG8@rLp2N|&4r}z(&<%j9pXB}oWd3c98c%OqgCa25SFTX8x?EXpn6!TwHdw)v zkP#bY`;&U7BtAV)_=#`!k#IPN$?%-OQ|N)kz8+73S->U%0$NE;CT2#zuxcQnor2KS zpV9ACM!VC8>t*o%X8;@I>NBdb3D4?1gXU}qoZ@4Yoh{|7LY#}b7d@+6Yb|+FvjuA{ zd!E%(UC(pGf`PQ}`sZN(q1bh6^(>`ooQlb=y`*}r9v3{Q7WX>6PlDn~q+pLG^!^rL zn&=RY2prKhynVAyzYZPa&^rC{AQ8Z^XDpoR5x`9hev?-Qz_AJHDi~PR>!F+*$%6H& z-5b}VA0LpYf9NxU1{ahi>@R-Y;%us(*kKbW?V!UMUDN|+8@iL8zBrZ2HFV8?HACCo>y#D0WWDY z03*Dd1#tQ~f@~mao=3I4WcDVdJd0igqrSKavfh@h@q@!7Mcb@@fiyLnRhozj3~hT! z#|kwxy|qHWs{0?=1d~t=+syV}Y_0+?gI4H?N*Ym0Gb!1Rjbs+iVKj%IF57R4N|aGs zAOSF4xkb-WjEGo2llw6(8@FIK{D7={L5WH#**>ree5vU~||LfzqlbjaBZ--);M!>$Xu9u3y|uJ`2* z{rP?`qhg9kcz$-{Q4LBc@)S)8c6q9Tf7)rO^&HkbELA%pP7lkuoq8R;cK~-I>G3Yn z?wkFtj&rx_1ne?(_?3z>6OM|UMg9v#Itb@>BJv{RL+tpie-clyy2AO82LBY>J7r|y zo1K<*ykeD+7?dEel2;>T{PvjG4otiaiCe>G`}xPdMBUdJKHJO+Uqc#(jTPmAPE2bM#L!mcI?KTh`1P;StPKbs%VJickJ>4QAV;ltn+SgnaLOMPGw*M z$=|KVU2xy}u0N=QaFHbM1r}kG%^?Zn-~WsF-NEtFcefrB?~sQ0{{RX6_!s?3BToBw zU>+W?#-i~D`YUC75RQKru!n<>s*A)^o)ONye-iiMMdH{-r`(UM__9B&c;87 zfASacpQ`w>KW_Q{zbN3qU&McgcoJa%oYQ&nQ+2L`h*O=5EP)Qs)6uK;=)uRz4!h4R?%}u#^I*2_cmYYhEbT zAL()4<2FF>EaXVoK0PIy_+`pKSOdHA*LF5cqx=*am;VhuX*)9u(R2deMCVC6nIE_S z)I-Rsw5KBF*?szK_qUN^eCbMv`mRA)HIXv>WBpcObNk0Y)oDc6ql!G_p^C7Y6!8f* zi4aZ)-`^v3J+tQHc()v^!ZNM8fZ@VR4}L&$Kdja{Cm&Wm-c zpMrqkaWnr#3_l~PzBL7(>UkZ`23BI@i!4Zd@sD`@B`}Rte5xlV{b~mh0G8;m4Y83W ziz;yu!*4;A>HA@OEtJyzF#XRVhUNax_J4<8kGAdmVe~ANll%3Qvh#su*w9h%@-Gk< zEUgx49WWZ|Tc<-3KrfTPT$WbnAi)hg2@$z~3Ro{h6N8otOyh z4I~#CwjtPVWDVqdsQl0L#C{zmmggQ&>=PT*)zHDBDE+)e8RdEt-I#1N~!q}I{?+L-W(b6 zg_;9d`Gr~?-Tnp4?MmPFV|o)FudMtpLNOKeUww!gA;dDf4K2>^ya^>S?klxx12@`m z$K&p=RDJeEHTlQYGTHp&01aETj$@3sOJcu9t3sv6*C;wvuKyb2sZgo;1p7? zo;2**Sok>p+w--41sa_E4Tj&vGVL2R7(e@so_7&Yx}H$=E;)e(6Iy)nlKdFP&5N(Z zR``!jV6vl3emDUfFfLo+pu7z(*&5dY_hr4&5_@*>d}g>zJ!$PL;S}(rC-p0`$+hG} z5}s1wPiHGICOw6k8p+^O_8hl^F0hVG;Mu1XoYSMRtM9}qg}Jk*^f_wqoP|{E;Ixp) zh!#sM`c@GJUW$zKVq?{jZ}mwXJSfsBy)V)_HL!imPa*~OEbLMGPJdEOe%^p6R>fre zBa^bK!;)JA#$*ZPS(d5?{d&V4|S+mRNqFEcp>DrSL^xVF?PpFz_!j*P&P6|{{zcD`pU>*|;X1t8zhG@n1uavzEMQ%= zG&C_O#>SPuP<%T>tD{o!tC}s2_ze@;k+S4B%u<%gy5BGbi;bzjsTuw&&tdt)BL%M* zDXkpDlg#Z=5ZQtxCaoM&DAUQK*Q#M+r$fG!nguQHLCQ zxbZl=jp4=&)R*8v{&mvBV+>J88k$Jel_2#E{hOJ-7d^(cA+BZ;p&2O&(I_v_aP3@?X3PwC`l`IKU2iGpHKVf!z$<$)oNp=O9ar6G?V9MDts7`Co=7x| zYvkweo0y?2{lR4gPsDlV;a4GCH_0?{$YD@il&KN1j0 z`P<8aC}WNVdWzR!2r6IJ=92toMkg;t2NTohU!;^bGX|uw9H*;0sA4YuwT5fzb4MF_ zE@;G#F~&88oVsEKOhPsu3`cNTD)6t6!8B|h(>P%hfGMg+rgg%Y?lOF5z=cT7u~2JK zyQ@?kFycH+O@t*%^&>_c_R*ZYG$KpmEC6GOWm8IHjW{(YNiE9iNdM+2KOa7^%Bl=0 zU&MnVpI|2KSgdiaJ6@Brd$3M1q5wPk3*(H=VB#fl#{KRD&AOwdLvy3^z@hfjLTyn5 ziNU`}9O|V{+0Xfq9Jmm;Fr*C(b0h2|?y6okuXhW1x49ARzWTh(=o->SHpJp0x>2pY zEu>w%(E@Av!{Uvj=0qA^}g`x6;NpJM{4#lK?Y zeWrymN6BZ#Fa?oAOe9LjB!g4V3z7`AMJfqB)#JlCorhi6T~wZ8j7Mbs35^Wtood_? z^e`qXRYKFZBNgBvSHTxe;^2j)8^t&+FfHB4z}J#=!;*TqI$%ExUE-clSn{?Y!j}JqDpkm-BN>T^|r<- z>GwPLUhtBm^K-(v)Ah@CMj5>8bCqYkL+63%;>j~6#c<;@_mmQ04lO1~ZW3G?*MyA2G7&mxoEIhwlTs4a{(zIyR!zR}q2dO}wAHIBN&%4JqRBi9}Bq^$2}z+y)Tei|{~*=hW0? z2L;ST0taLo1`f#7PXPH6nK-~`?)KKmn><6^&Krvb>;c9DBRV`~0Y*TWmVPRn)0pMo zS&d|Pv>i_1FGV;33T$K>nLZGtPnAUjA%x$M3VL_RzJZYWrzLX`sMz$BoL&%~Q1&pM zXliN~$9B)Lzscebey%`R!zv=zThFccw5uk*nSUd~Q#aJrT?z-HsmCE5&=@}g;qX-R zkXODLWW=O@hd?J0BfZaCi5y}yJ1HrHjo4OCod`yL%Ld=SeN$IAMe-kS5?8hYKLhD> zbAxYhgYTQaw$STTc`3dF@e+=2qMkB{eh)YYKkJWMX&FA;3YYH(8=zZOWe z2ncV64H{YLRy&UUz;2^_f2rZ|zVJmbavqn6p+-vDw4)ZQv$LflPnw-C8@}oSGHj@E zIzA7)M1%Pb)Kv_BiXCkYUDPx)1!XLPSpqq4034xaDcHAnV?>I)ILzP%mC9kplTd7v zheMlSbJ%dDY`INWVwxMx<%Tl6jrQ|!gC{)tUxv{G6zpZj<;a*j!q|eLUG)e^T%6N< z495ET0^=1}Rk#*6QQl}A8L3Y6caSeHHR4#M%;{oqwT^OoK9Apym|#d z>MT`P7;)|{+Oj;{A$a}@!}NBw8w|9l^xY(Rq>X}Yc-?t@$KNtna;~ZG$G(0?RYXF zTcU6Z(a+X6nw72UW0yhPGYxFFtvO-I9>VvVMP3H_Pq+7x4rBB7WeX z#Dml1sU4A_())T?&ugzT`j*`UDKiIdG2CXjop9g4or9Z!_Rod8AC906`h%irATWL~ z;)x1A5JirGY4f*0ZkMQ9ov|C}%~ z8Y?HG5V(;j!Wj*`Ajy-xn3x-7M5=`zCqEFVn2_nOM0)yH+5Xk=SvKDmAo4Qc9KZtp&+cKXq_e+_(!DXN)A_Bj^7&R2<8b5M)2Lh{I_jF&&Ob z8~f*w%0oAJJuw6A#MdFQ)9e={|5}W$F)+H;$jk1C6r_179REhcwN<~Y>XA`RSSL!w zwGheUWcRfYu)PZnGcCtXHVMOCLR5sbWD6&Jlw=kfeWsGqAqZxY@kl~{0{n}!xn;Z( z#S@W+FcS$5Nu6@8x63JpU(cacg+|K6Np{o?wm%s@vj;LEg8me@H`;lp*#1=b^|ST` zV~i~CZqL)%DOQ|Mp;8*O|uKS2|n9Ry8IDgZ?-E7Y&ViCyp`DH zOoz`NLUglnj%sL$-#~W{g*YN{1`;+zB7#+6x7daK4Sqcm@d6JLhHIq=4j|Mx!@79dVVg2U2Y%I?9pzh{7uq)HZ?V-n0myuT7V zo?Vc1=iegS(@Kt>k92{|KM&y!r3WFN2qs18a}+>IL7B)~p z%;8g;H-;lc??r01I53XwW88fh!7T|%cKsdi1Hdj>ph?|BA<1%LJjSH=%enFBzz<05 z1mi~Z{?ZAUM!|;Y2}*J$PsH3Si_~#ez$=m<~TkYB0H{!I4l#r*yyIjAu=d|oC4o@1CL=W&Cv&>9=VBlVr_wO45v`1 z&xumT^EVxVeGsVOZ$Agv^h%|W4wvMCo&j16;vITUkROVT|6newG!2vfb4TL7Iqe3+ zy1Uwxs#J`telk=!x1pY3?tJx;*4t(qzAh=(;Stm8#o6iSjxlM zhsnmkG!At6mjOpunUqD)5@8lhuusO!8`k?K8$IEv^PJurjS0O2cS$*18#t%x0Cw>; z#flqYFk|-bMvw)wGEUtz3V%RVTyEjWzi7_LTM+%0>f)dOqFOjV!nEJ#m-_woz|6tv- z;|$pUSgo94q!P7%jmyj>f%zfRU(~MuwVR z#IvDSyApk)W@6eD2VpkeX3TLvf;q~3zK(jkakrvG9-t!@*bkh(rD&ZZXKpv9$lN=O z@SrW_z?_9D!j2o!_M4G%Y>_8gKE1;*8$S)*F2^ow8ZGZ{!9_nOjx@u|))^7ukvYi5 zo?hxt@bp7Q^w1mdNrZ7Wo?Jv0Cn!WbIf}^RH$@)NMBnN1^asE(zNxI9g{ckQx}4|J zS(uJ}RI^TdjJOkPH%sM?JHfYwvh7YI!$a1iP(kukT>rJW4ij-ncNyUzNJIh7H=SP< z8JiuZFyT~t3KwQqvG=Cs5o`+*xWhB&1&kN*h>p4sdf&y;@HO+=&pGQ)8O6j zHYTC7l;3T1axVj&pVc$@GLVGMHMokMITr}P`s7@r8+zt5bBz#}d%2nqPwt>lh_cz{ zzHo$?2IW9F#!*xCgX16DA1Sq)u!6thW4*bDaU{z?DXqii)4S#yZSkP{y7`#)?($&> zCNu_O!gIu}SWZ7b-}n$!SKVvuaWT@+U#W%|Qvx)&KTT9K2flpbr4kz8J%vHW4IQLK}*4;wys6_0>V*7iq5pSHrd#1*;%<*krmD-8+d;eNu7#z^^qa7Ip`Bno?P{rg01KCXe%Cr40D%TOU&X~jRLSJv|24rm9K`pBgMx^^>*w9*|QWKxw#x)ZFG`jQ^KNM zbEVDWz*7qu_Ba-tpR|g^=f1~{;l5Q*7>&8>rF@Oi&Ha?N?C3B|w5&1u0+8Ht@Y_WZ zvb7v6h|LU0FfLGkQzVek3a{Xx5d5a-U^u&0!*H^Vlb_O#U5Px)v?@-fKWSW*6qp2} zMKR?xf0F7a)v{IBr_ditWXw~_5?Jt*f)EpCS+eITm~+_I^OVukOTH$Tu@qOn<3IvGt@pbv<6>0?7$~!S5+u(Os+6y`e_;n zY#?1q6OU27r_0N-15`UVMag0NYRVN z%g9rGDGv6vdkM-BIbOm-Ge$Qr!A_kZ%BRV4&kEFi=zioZbK-uB29NZ33%tBmM!#jG_^(2tX+wUaPqT)l^J)|qe1fgM<(apP4E44_7=nm( zCa0qyU1!r&J*bNJg^FP8Xm1417QDi^IVr997lDWee;9idze>~bY)oFI3o8QjIWuCCIw3&bo?Vy`Auof-^|Y6L^xG2k`W&x z4mUrCge9uOvL|*Lm%0CeC0@K4fcMsn>)abOd9qN$GrzmAp`lPZ?lN*D^c^EwCca~| zkdN-hGRu)Mk*0?Q6F6Ll`HqpL4aZM9mY*SCzGGx`Z;PKqD*qlwQ`jVeL@ESY*3S)|MKn zQdnuUXFUoB1XYc^GSu`M?@>UiyFguP>$Io?YW4S@>}Pq z<}&WNh~`p=3&$k8KQ>vOsK%{zcO7fmT<&@bB3^rsVnLGM125tjW|n$^OYI5S@E&$d zDB}vF$fqy@`3*^>)u*tLLj^Y=#c5MfJKIGFiX~ycGJi+!hl0r7jl3=yv)j1bOFYss zmAXzqmb?Hs2T5(8u(%j5_VCZaQ7V3iO6_ZA;XltT(DDl1^CAhYsId1zYq5*;-|ElM@?o_p@uS zF~R-pd8vyr6TlCpd$H~AMZm{8967Jn+pufCGfwewD48bZL&NiMkTUs0Xg*w*_o4BD z?71E0_|zuhsTjCMMGm?Z`H2EDf@9T?ghUUq9~kCPgdL3GPQBPL{Ruc*Z53YlA8&L! zz@-vUz&PZ@PbGZVQwGA(XPhm1OZFLkCCS?~9Ga)591~)D_Tj#}uSV*onr(1Y8ab*j z96|8nwiVa~y>BtXJp@hFByB!65 zNOc)Dg^p-TC)70(u*e# zLSJ{hC z@ziGA??gpI0G&QNK}ruR%L0lYZ}1+5tgVzohm9Fss97D1kwKVC;TqvYO9tE+xYlqe z*ro%7OR-X=R9B8LQ&Qj5=!E+~yGk@Q;i|-pGMtzez)<2<%5Uo|n9bU720UU`#`1eE5IC+cC1wS=$iE zM~;?YS;G%Y*%w9|jB1mw_9m9yj*C!<0&;{?-LJm{Z$|hE-%P`q04L4P25Cl|4PJ&x z$2arPIeEVOIk?=NKh>25Z6SH;r{DyO@l6520{BuML}oHAA^sfudYo3$&w^td zp?d$g%=nKHJBYo2aSW%UOc`Tuc42t79nL&c?Tsx?7~$FTpSn6jYVUyEo*^ekc{9pb z3h^}gORM%Y{AL(apEwqb6YtwGR^g*f$u4;f{)Lj6P~C z&{n4R#On)lpE6BZlhhn9OM5z zr!kC1A_LR7+NV*`*2IPM|6Ymy$=|E7K>7EEb#owjEFF#_?iF-T1-6_-G+LN^2I3#) z${9@OQ4|M?T$(P9DFiWk#<;N^)h&A?2}4OY5N-+_%jBq;J#>KcEm1!}#S}}?4;cOc z+#eL0>-Sk_$;cm#ZxGYtC&WyUX+LqU%eVU{V;1j9?0*)ULXqt-2A&_CHByHXK5_#q zr_5%hR5sKB4lQ!=oAHF34Sp33ridY6E;y_4J$}I$lRLGTH5HE0PCKyC>KEgh>}?mx zNo~Qd#~SLB>%ab4X};@!<>uBx-~Qi>u^}LFMHeu~(DR%L@hv!yu{bWAu&>^jTxVp& z2U?|+bi^^iwyv}dTBks$)gs@%It;H-c)APswZA5VUFHycEpeH=cj-%)*~#-d+S3>5 z{rs5_^KsOh-`MPCc`3dX zjm_KKu=XRGD3Gpf0s!BTJFKtmO%#Ap;btd1$}>3Jya~*RYlq|H{cv-W`%Ns?hUv+2 zb&ZP6pm zuYrzS4eio26LT>>{BGt}&yuF1@HEMt6q15rK5Xr|hB<+3ZYoyvVtxJsBNbYM`x^3k(IcHGQ1Kc*%i%M~Lz-#jI>8)NfMad)_ z2|0}Ay;YasX^BDCnXM%|%H$z~u2Cj85iW>A!I&?KLX%+R{bI(2u}kf+j)!FXMFTKP zQA@sYFiPyQlUTenrkPo+OyfXNv=fN6q9KZM(x@Mt+>{`xaO{;7_g1p>Xocay(Eu(_ zRz{oSgUak{XRs3MG2lS|p$;q-V=X(zd;*9~h&29Km2k77%6Hy7C4ryV|3A$CsX$nr!v@or=2igJb3^*sM zk>qBXaqhwZO3UlT2mf zCz%i84*JQ-rr}ZsI~6labLg#ZWaH%gwiNSu_d8h6{2??}=B5HudDw1X4v;SIU=Aib z&E#R0f;1KcnONmOml;Gw` zK?XW#o|I;oapb8C^F|a~n*qX9N^(mx%e@P`Uzg+AlW{H0aQ`iYv^7=Q{_*#y&VvVhdJ7zq*}N4W4X5ok1kTaMRI!va zd;KNZVBj&2ZpfXP2UX%%UW@X~o*-Uj9%|_&C-an0A>VXXE;d8WPDDaL;*R?Z}prNz7D7m3F zz`WSSd=Gtgc31Or1r)j45ljRM2gAFW!__7VHa<9NcQ-TVqEXPImzXJPpg+ORrEn%a zE-`a19-Ja8E-|CAT)XiS^M16TV|P>8d^Fy^8;ir^C9R>tk93DlLg_uw0!-!iFcXy? z%EbeGO=yNr?xCbM-f81*tUpY4eNUBabx(6Vdega{isG@olzQmVOJQeBFLQ{59)#pT z?WXVjUQleLO{ISEE3rNXq1c7lPG{p_CVqonsvCdu7xAC|Mg0Eycj#(#+^e_S?}#^3)z+Sc$< zjQV4j|1ZK6>3O+WqV^R&@y`z8p@R{}@%?8E^7UWDe-jvQT`;w{zj;f$6A1SsG5~9o zfrR#CV7#;$01>lLrVW6;Uno@r%oKH4ftRI&)TKHvm1JDu$h;{iulKhenFfc52TtTzsuV`hCse8ltn|#0fm8W zA*%(p#UZ!@yVFSr1f*jgR`sh54Qsd1o_Q%G-8va|DLC~v#MZ;9E^JzOso4TRtV1gA zIm9^@wCep*us5v!x*_6_b^H&>9DL%C%}`jR1T7U&X?Bv|gOd2k>XdLkD0Z4ikw^|va989oEEBm<5yh3wc(`$AA^~?Jn8bE0 zuTl8TZ<03zaZJ+~KK@x*fmO;S$_}yt{}@NaGi@k7f~v{V!UD5P)r6)g^5}50ZxRg` z^5`JA3^*3+@EvY!8IGY=s3crwzSi9XR5}ABhl&hyMiI!UfMZzDz{#hNFvq*yO>}ir zNOxsjBP~h7npiUdCr$$6$X!8kvi)+X$U-@ExjFX#av#~4D`05jO6e=0Vtu~BBcW8O zpRZIpcF~n)7QS}hgO!wzt~6V_!*%~j_2$y^|N81FF+2<0F;N^r2-+GFGK z{csfkYSr+y4y00+5joarSfz9vWoBKFltiNu#iY)l1lt!zp-TjnD(gl83|zSauR~Bw zxP?R(!or5YQRYsCBSO`Jfh-w|!+7U6xWj$DN268X)alotJlu0}jrp<~wG|^R%W!5) zxQCnh)sBf-zynrN@iyeOW@;0SPXxhRod&!t34e0h9K!csosX^gYHj7 z@bG@cb&#e06{gH_usJzbMIFqti{Y%6#}>f`%#-pW7{Yn7uLxZsPil*RxI9T7ufB$j zH#1bnXsC7AfC+Yq_-U2cuw%%&@uqdRv)XcpWE93u@59s#q5&|*Kv=caOmiq_c=)H_ zLunjw5cQ5A{-ati=%TW50^o;jimfpoS~pgUt=EMnLh$0Lo{1*uUNKRbr7GswMA*id z3z%rmPzG;j92^Uei+7-zfO3dIe|u&1^=6hLoYOvPh~{usb%(CUuvGy;SX31widE&) zidENKTC8A*m{bo#?@5>g0#{B__WAKiruB3mF_Qu3@NcS9i7)pCQ*B{AI~gsml=K_b zux2zSGQcaC&ye24+C-!$>;y0tE)b)R&~w@uB-{kTEk)){QNqHa)D-g-K)7J4xi>kG zAS{|$DPgUmWXr!@$!gZyBP*ww85f|67OqO_+c(Y3abql1d$XCSdSDww1+wdf(>(bl zW}NDLWGZrrGl7hsYJ%Ja-vI`<+LxGfI1DKPe>akZ=^#y|44ZBqMO)g;FvqF^lT(yM zzm+r0PX1kH15p}-kIJDLnA)n8Hn*5FtO-4gol2UvmLs>A+$C2tms^kjWOh5fFE#)LQR$VniJ$8*Vkt zbm}ww^Y2Jc#cy_PHk7KdsV=9&%w#CF^qF7*yd^sm%Aisd)E@8iw_zVyq=enB#&($F9fG2`1q93d<|E|HJHWGe4D1ejVviCz6^>Hbv9(kV z){4ah++Q|J@%%=-q{aN#Vz=6fSs3VPa(0&aEP__wSuj^Q)dXOf7$6G-nj|I=NI`1l$e#l=lt>jkd9}ufRK1#*bW{|% z#h(<T+a9RyD{fgf?e<` z=Z?G0WojoNbCM+}m)JDUFhH!&RjHQFRWf78T=ZteOY4E4m8EKuQlYM083+{R>sn@p zxBymPt1=W?IfTJ@$2lE+Em zedZ-<3WOSy)FLv709@REpLvzLnXWGIh=whN3p`q3JycB%agr(8zz zU_1MK*ZD`xw_HBi{wU@QD}DW!lJu1_c$w+Dz~XWw7|mlx&Oj?HhZ!F$lb4%M60UVk zvzG1ghT}wC_296?>{&?5$yWM-j(vb-41iM@m+j9%dQOt*0(o$LcxYrcqnxgJAAa+% z9~{X#5RM{`y`zWJtiYHUYp^RZ-pN1+@#1vPLRGLlz0zzi-!=85iWU|TsiAZFn_#8z zKww%$OHD5`E|mLMTs}Z!xUt?^x(Wg>Ube1+{Sz-s!a`ust;No#?A4~}KI#(njBSO@ zQHnZQt;kq}k-gZlXUSv<4vA1>Hz_#bz1Wj>`&WY=@iOLd^EKB7iG2bDi5FkBjr4HJYm(l7$htl!AB_<1%^7Uqx62|?0Vr)-*j#;;$r8x;$q_dsqY7j+Y`>x|H;a2v=Lb*j$1f)Z9dI ztu=2$a{(l--dt-o&n8QeI4Qsl%Vx7P;P}Vx;h;m4eQUwBm6Ev*>$i3ZuJt%hRdUW1 zt}&a_ir!NF0v=c-X;}hGnNQSNy;`huRIln*5{t^nKw3+q4F&JS;w zRBxj7@w~E2{G4>rlGgsNN>cqUR(fm#N^h`A8Ol;p00j!@35nZdGm5Tnf27@2w{A9v zWD}hvtTP&MP<%m{lpEN2-W%w^A)m<=W}eKe!>`R1W{Xxt`lC2VT@0Uyp#~<-$T<%G z;_15z4CyK*Y>NV_{}zl2s$|+0^BPa8%`v*{-U7qmD4x85MQ~ISUO<{k>HmWHqbCh% ztj?DIqM74Kw?8Z8))&nTt`(l{g6FG~X1cNab0l`Td^ev*rd~Af_GI{zZhr}Ueb-B7 zFHg(BFj~dsFTAcq)$Z7)a8bTZEilw>1A#S3ehsQ_gIxa_22dM(Ctm}C@epxo z2My;U-Y_roa>ih!T?{FkAhX{vb96M`U$U($Bx$}U94O!ahB-uQvhhv85hbO4L-J%XFH~~91tC}|MQ>pMf<@7{prx`T>TR@agDiL( zcD5!pZ<~p3t*Kmoz#S`TJIqNJoC_fHvGcIy?30vM8P2!7w8NZ{)H(pfHi$}vBWajr zgD-z4_y?A?-WQwP=DmYaW`gKPapd&Xcg)K$^5WhWwFw=CD@?#s-GDNTMR0bA-8S9+ zwwA#zm>r<>Wpe79Z1^M>{}|3r!QxfCb(7-T@0wTCPdwp7UZr_6pjlmMrl^JJ5F{^y zgV44Y39Bmc+;ukE%F-zBDF#_$BdM(ftHw+IE(}pN$ktuv<7)2)K}eI*U9f1^eA+lN z-szL%Q+9TTqhM&i2kW~^D&K<+ufo=Ab6M!u5N$3j8e$;x(fj5m@NemEVzP~I;|ECW z&I!=h=l^X!p!P}USW{9P_COyL;*A4L;Ix%}RptR{cLWyl;zz*Zeia_$sPJ}Z6qi-9 z;2MkmAuJqnYq%_V1-sgMe}m^6e||9197=faf?EMcb$t>p%+;t7?At~k!F>zo0)upc zn+kUZj?aGaZvY%Mm!ha_`_Q~f-77E%LF^4NQra^VI^rYjpzHUMc}auF1s_4A=E@w=m(*GSAAkm@x~#F z>NgjNWwLOI`qa$mKmgd6hzka@;&l5rP0Fco%$8?o^UCB;%|2@HB9j}qK_BwEQciwq zzUFRYZOw1N7}lrif$y|EmfQ2yF?60!ch{Yl)890S^`K~#v?))<$9YK-Fq$F_ONf?X z2hfUxH#CV1rJ=H3rXMhK8sCSda#=hQ<7rd29RNxv$e{yRLUkR6sZe+VGQQtuX5Yr_ z8S?5cxPSBM&&k!s0g1$xu)bu;ecglGR;RhlRwOmSTMq<4>IH2ce;J#~yCDqQ0;{o6 z<;QdCyhY5#&4C5g=w8Kg2q`^GK@hR&%!il43U78tOZTIg9Px@hRL*ZWHoH*U6*g#W^%#Hzx7&9ZE24st%Z-N72AAOwbz zg6s*zWTDLeN)fi=E7`d3`FUskB@%UJOMO^|D$oAtg)&n0T59{xWXh;0L zAO&+GQ{pwi%`V31ZWl%`1Rb2*m;8Bj_lrlPTvd3Fpy=AAO|0iYocakCd6f8PrTimI zJ&}!Cis3H^E{ejnyZ5@n)qQHcf{IklVOE5yti6MxS)=SZVMZn~O)Ao)+3E6w()o*V zn%(EZXwIC)*tz@ud33)Eqgg+>h0W{#=g|X#qV-dla1TVzKtwxc5$Ji!41UjLP*Cpq zr_8HjxTHfR%eE8CMC(C0dCE+257y=30^CTF^iW9nAZlKU3w9O4IRr)FpOqeEkYyM* z8jj`gk7Y3*qSfyWGW}aKOPQQbw3@t?f-=~9m+G?jw257Gt=!>C(f5(<;dnxc_qd4X zJF~soxJUDgu=0=PUnd3MnQ>k=BOafOVsJOP<2!R~JZtBl)5lmHp}~Cz%Oc~v1Uk?N ztCXl3Sgk{)s0PZUN=o5*hoPBFMCrq#HL0k9T?Oe{W9F$Lz)(p)jX}w9S^Yhf)cK!q zVsPqd$e~KP<1{4LWwQIUD(>WIOo`x>)Az7^M=&w#*oHi5q#?m4W(!as>!Cbo4`2P3 zs!bt@8pTJk9Rz#q3>F7yhB`)@6UA0jsS_C#w%E*m23B?>S$PKPrI#E(0~NPWVt>GR zp_}CY0K-b*Pin3LzE^x_nz4UFwn8`-LqT-8LV}F%78|P`R^fGv&cKiWGCzB4x)kle zh21B9Fq^AAod{CMbA(JIiTzO_Z}g8)N1BxXr1mgw{Lvilxxz+toaD|7j{|CAf5K=0 zFSY*!L|IAOvAJY$r)fOKJQUvp;I4%u`*naL%vTcciXJ9Nq5q6wIxyQx(hM`_UKVi!@MHXCzFA1hml za{DjlBn)p#KWq{=G>~i_PZNxxym1{cu$ zhG|joY5)I0%WaSy|1;;PJ{!nVjilgr^x125DO-w%JQw~B8%$eK>#ZNQEzZW7*%QB; z%Yl*7^X7wYpz-v1Ppo*>;6<2rwHViEvbq-iMw9Ke%IwkW(D@q6m^u^ZTvl}ST9+k7 za0xzf#qHjJcG{8&a@FIJm;`@+0fuq>3-;odTM2_Emq($42@ zF7HNo%}}*cAxkd9LEaNTLmjZPV1-O>Ll!<3lAW)R}&`apzc5Z%+?7qB&fq z6y2pIrm=%Kd_{gFuQ3-}NS+uY(;~eo@#HNhnvHg%$ExUrz-V@9C;B>FK4_0Kn2SHe z3C5(dQ0$!4y&UE5*1faf^*6j(81GCoyhDJ8mkjTlm`J$Q1OkrAmnH(SuhQ$yOB)9Q zT#a%mYuSa1>~F^&8t9FO&YD6bEARdTgZRyOnIDK*j>kAmR7 zwqwn_?E%8-IB%A(d$hMR3z;6{9bkva!5Htq-4mgMxa3HcXICOeV!d}ezyB8JZH=8J zDC8yw2uX_frlPmx$9wyrZKd&O=>}OxPm`*6?~|-2!OOMBbqU@a#O+H^apw}e_uJ*J zUzO;^5{7Se3-9G_^njDe-q+mM>r&U+$n@<=@xJ3yEwPRpyNjWhaWO#`l9NozKa!Fp zCIdU+#7qVpiNtsnF6rssA?``4>~w5H_qOjxS;1jMDjaF=XL{!VqotYXXg+xcp8Ez}J^7*0E(x*A{#t4>y$4j^h~+RG59MTeuSWhJt-Tzi z7Hok?e6+P<&YITV8Scr}65EZ|5}T~b_C~vl4$78n?`-$9gObz6o9IdGHh#q!)tWY=fU@= z|J>l)dsv<5WYR|0+WA=?|AsX9&Ta7B{MS0UrE5rU8FwdNJ-Qhaokvb$jPQf=N#S|`_IIb1uQd3cV;=%@j{l{E46vvl(HcK$zH^{ zXBI)cvq#dbih)lQ5QJ8645w&_gzto>1%$IlGrSm%W%Y$~;#poSz8TLyl$ES1A?yq! zKQL2o`&*akQ$pg(IQ7TiVQ_2`<^FE_i3oo4?{R!H4aE?{6x}cKjKmJ04AH8*;dWY9 z`%j$J_SoO>8fDj?%^s!-i?st-Ngz2{8O6+T6inpsBNZMS-4u@L3vB-i$-Ng3(WoHV z+QB>ALx$)MH`N!>(c3IUn}+_yQfN8Dn)(_OhW)xgxfe=N7w`R^o1AE==>l!pNGiH| zw|EaCF=1zw%zRL$ck^EEx%vOl_9bvt6<_?miy#kqz}+63>?$gX3+@WymRo9ST5hPh zTWV^!m5_UCVugBg0kcKZ5^b?tmR6Sb%M!~<(-PCv)B?-0#S;JDGxuJ2JVF1T&;Rp( zABLGZXO=T(&YW5Aj1@SY4z`ky#7~B|9>R(=-? zxkYW|e|?eD$#fp37}wL~R!--`R?>rwwms2_Ij5ER=k`K}$J;9JUy&N*M)kyJ!+UCA z|Gu~U5E7ZvTYdpaD}ChANP1=;bUKb|#=d)G>`f2Gt6(x;Y!@*AgQw{t68$V6h+ zl#tt~K_G2=244$?cgI%WjY0AR*KCAh`87kWzfX>I&AAmc_g2uOw}KwK6*TV_P>U>2 z5GrN@a_5H5jhgGJGYl6l8{xRcnUvwO_n2G^s_3=*<>qZ32aY9*B|zYyj^M}Z-T}yA1ny9wD8M5YjqC%*m47n9e94d#n zmQ{eK4VN3!@DVa@IvpxEcP$69tVo1Np%gbv4wF{^j=yqtP|+7y>z9WjqbDmQh&U-? zeQ9L{@WEknqARBYs4V2F3SdxVxSj&2T;>EF;Tdw6>uJDwh-TJ!S_Tq*rb6sWgjjGR zw?Zf+*h&oFZGNw=fKDDE|6T#TrUJU{NV)UywE%hQ4f66o>*ZhP;YR^P2|R0jJ@Dl< zesZMTuFeKekR`tH92Y-3=wNC)N^b1hh@jl+O}@+=C3kk^0aRX<2N{$PP*q}Rw|6&9 z4O9YX{sZ#;P&y|ckO#OnAzE2mpo|%MBn=!bH*`G*I4?1ondXd^XGD3HXfx2v-*UR5 z$H+;p=PRT(XpG#!^+E;E^J75jixoh~GnAZT=8UqcY43bSmhqzxv>NfpHQ^$Mv^nSeg%4Jw!*$H;GbrN0{&Vx!%@Wu;kOW$_c` zZgGYcn)N0#{cW$<@6hsza$k9m7x-PeJW)=P-@7Hzx|6&J-HRaQb&Qv(Qt1I!V6UweOZ-M%M>1;mm#?h%%b3mQojl@+gl9{@@Py5AT5Ae|vm(wU2He zpxVcGz#q5+{@`u#*?3F#wgK=C#2xUT-T{B;c6j7p?X%kj0RHnk;1AycUw9jQHrMfy z+XP_z7k9vac?bN_s`1%E$iAvNfWUu!2mCj8z#pp;5B_rrk5?JM#D9AS{E0i@PgaHJ z`ey>Zt15tn|Naj6Q+L1@Re{&-c7ED302MwY$Hdt?g`Vo*Ood=UlQD$fMai%#4SlXc z=qb}M<~R>fdEZ(vLyoMVcP{{4K6(**VxAr2PZiKX)8$r!FM5J31!j+U!93C3T)Isd zL@65;Uq-lc;_|1<2`zpG$g?~7#R|f`8S72%&58lTpV^l%3A8<@Mx?963Tk$y;@PDu z6+k@frbhP!n7fLv2Plc>S`L0(0F*UA#E5z^fa246ys1Pg%!5~-#rd3!~ zBnNuFvXWBJG*cR3jjBv`t9ypFB*jybL2>@iU}*! zw8Bg)+_WMnYmVF)XPgV>$SG2-U^?9fH=!2aiwjhvKw-If2hD|qMOP@(!Az6wjESv) z@#CVPLKqWY0dtoJrgjC)l5$L=x}KOyc%SHr7uhtb=LxDL3ZED)uY9JgQ3Fpfj~8Ks#gsFElto_I4#b5BquQCfK7 zO#wbXPmUec5^&aWJk00LsFmesMa=%zmfxPex3T;@qi1|u%a1I@n3{EBJHW~n`M4~I zPkUODC8u;s1;%swm*(Z~;N?&E@^=i*jp-0UJKn+Z`A)!<$v`C~?(B)D(mj}XpU9SD zsbC?mOsw&-);H% zJ6KMyx8>(OdG`0Q{JQDyRIRTCuxsWX%Wv0AKg(~Iqrc_1%Q1i&%$H-NdxL4}h3XMH zuS;^}3`DTD$FNZqsujn0I=1p55w{i`s5FcNH z<4v#ySaui+I8?he&q|(!Y1#?Eox=bZQb4a~$@n-7&n8LAHA-42Pg4HD;XN)<5)A*o zE#)V2Bb@B#lKoAG7Rr&n?_r_;Bf7j$PIQhyYFwW?jEF_@c!xAH7%vmxQ17WQ&7YPn z!y3)Hk=Q5R!T(Mz=Bo!6%Q%!h5|6w0xau21*FM1IV)_!fyF3ahu|#qI&V?UrOj#mt zz$Z?a7W3|vtv^Rn#4_}5fQXZ@6JXDw!g2mdl)4B>=Pi@dMI0noCZV_ycbOb2z`Q76 z3+_mAFP9SpnCIi=;GQ;^>#7`_wOkHuW7AUx<{2h_yvi{UCI*Ig7&siSc$9^sLPQst z@p?u%xQsMDXiyH0ULmJoKP!5r97EGq$W5wG#raV4;^TK#$PZD!8fqAIeNvuKNon^z zi4S;~fQqHP{G^@a04l!7pGAzuKGNcq@-N~T1U?h3QzNlHGoMc}B*EtPW0S}%E5I^3>^(c>D-u3P-2OVY*{2v+Uza}#kf$PJX1FL4*8sk+s}YKawaVL3 zI+g5&luYvknIQ|LNTbC*xw*eIv)J|y28J_`sATA_kOp8IOzz(nz< za&21onS8%I+e+Kk5$Pm-F1M2BSm3hsspseNEZ1E4%a}ujpUaJ#KI#eL9PqP8sO)8- zd<1KnKUjz}F^+l0*)Qbde%77I^v!WOUCIg;A9YgdSP2&yek->R$VLjR zEGKlxeZPwvhn3~;rN@KKPcNgS8iBda9wBt#g#4m3KREYv_vqY}-NJJ7y5k13lk!Dh zzWGa`|4x0JZUz^Uom`&5@plwSsKcb`>aBxwz5WS&oi5#^(N0U(uBSN?UZH7@%qxJ-|%>OW1% z(_Nv)${I=+hx6GoAhs1_D39=nxznk95Wy9S4ndH?+_xLR@tU-$$QeyK->5$)03V61 zyN0(E8U-l-HRHKlbBko|=(#0u=|)>H#&a!l(YS@IgT&A9cRNlS(`zat#NJ_c-5L=_ zaiH=LYS$PNq&(^awjGm|M0iVOWq`w%`6E&O95vLKtSa|PyyF-=0>@Gt-HXm?WxWu8 z|HlaUH;!#z%YqCnCZdOk`a_}WG*Nz!H^LeX^M1e(>;(aOip z=gWAU5u-#(;NX?+p!dW|SD=v>qukAcd^uKG;e5dgC_Zc6iU(2Z#w#0~FO@+L#Vb3d zEfBD$ln7drfS8$dsHqZT3I^KfA9!1?er+X0+G+;EnHl9PaBJ?be>Nv{OcstJyWt=H-)4(U}C1Mhj!?(l%Ht@Rry4(E=tVg!xA z*J8bslts>hGFa&=N&?+TQXU5}Sq+uWenKPQ%eKb@FuH4~grNfeY^Z$YaO|W*$x3Hz z2?sS+@bWkHxl7%U%7YL7c7XL0*Dz~+u7q?L{;|01LT2f(x$&^gKZd_%^lzecbI@tG{zV2Y9sy4R+lk~579DauYC z$D6dam9o{jyR3xVYG`VD96n>BA1qNNuCMDw)iVA!mE# z5hR(_UinCJzGbB~n0j`Az+}={wyd|Oo=%6*XB(yIN-H0yQ5G_-i!xq%8)`35i>FV! zC>Nca8~6PQl#{7MI^LmUT_J>-)Zi{9$+5>6bQhQ_y&FuMvT*=!cQ>V$^S!dvPIgo7 zllBJFUrTUEbGKYG#2D3GY2qvGv-IZsRM1=b9q;h4hL5CueUuf_exY-tX<}dHZt0_P zPeZzNJ*1W&H@!9zgC~O?VctztYP2iRJwtJ;UBlE$<;Z z%HGc`@8^axK>1E`95zY@DyMzIS(@BPgw;v8D&h~a(%$yNr;GKJS`;+|wRnUwhA6po ztv(J%_KtIf7~w;e=05m<2PzoHS~HZ9j-$q*3?)}`d_@_fkjK}-xjTEijeZX(?H!J9 zC}%XD0jBz>SSfv-NKgTM$=+KvsQ$l^6$3ZvCEN5IQe7?2b%6I z;A$_LUZH19{1 znNpF}dtG`|dCIvEr11~m$~}f#mDfb5u~ht+@`0m(3g#)j0#4hhJ1F?58bR|MibiAS zE6tJp`uWOuI-I4%N2nD5I@S*Ub#p0luE??PoLu9b;c1eqUBQx+*n@_8WBQ8?BM zTnEE(6E5oD!$nX~7s?{`S*%1le=74%UyQb%NBb9}E{9Xl5~YK55u971)YUI}q-PJl zhtqNna#;k4r{X2b{c*hBjUG+tDbCmaw87rDK1k!1DoNs`W-aQ|8)r^;ELCbtKVy#n zgc2d)j{GZ2l?GC=*$XbJO0w|9Z@(v$T2hG>_KFquSG&i=TRv!-zXj9HrAX>( z88~N|vH^A0U^(>t?>xYY5v<2MLLnGAoL{aq0oJ`jndHouxm)lBblm&cE#RSU^+gz*EpG zq7R_bWf*1d{Q##Aqn=jYME-~uLtQs2VG56bSb_X)M|R|%9_!96o`K=oGs*;fDzW7m zC5cXjpliP|n_ol8RW>4pw{n%C&VTGkG-V@%diVjf+1{%mvsS)+zEVPsyfw<#4yWko zksb5q>*6hGy!QRqpxrD~@XTeA5U(uu* z(B2GJcj-TjvDPa^AR=Rf(n`7!Ote86B$c9uHYhCtuDcP<^`<9nIO`rljSuJ%q~|Fi z3Ufu`ina=mj}`ltI3jXC?HOnc&r|-uYp>LQvvMVh19HE@O7DJ{dN3T3Ip#wd&x5w( zcy9*-fJ`cV9_l2M+%I_ej6N?Ys!ttGhIJ+azB-FVbL5V>97s=VQ>j`1lA{AuH@mz54aPG8$k7zHHB+(B{0a``w| zCaxNQ3}sTrt4j7Qx55mjl23rnJHocB<7z2rJjq4EhC(g zcPibyKnr#%KZ!9mb1oK!H_kwjAVrLz6X>N~N<+|dbQg5VaY}woSp{p~Ys!xjw&71F z;-$>JuPgULBlme!NitI3fZ7)_g_kB00z-{yZz``sF&oiuDL9^;NmJfdIzZ7EybZ+; z?}c}ik6>-zql|YtE!Lz{#Jfti9$EydgJ1H=P-p_SK zxA7cbGap#_aHX<5xI9v3#od$tM@q0==E{J=dQo|7y z?2$wmqI2D)a~}95P)2i{ogVl;CJpEk-d7AKQ-Byejr<5>zj+@hAwcDPpftwo29|*E zR6`6Eal66?$|Hh_G8Nv#OB5o!k^dovD^`Ow)42!3V*MlJ;}G=Mw_bfA&oepxW&Mlqfy5jQW!d+wI`Hzj@oqe zgfiMU?ZcZlpQpAb(JjTI5_}!eH0PvJ8_%cbpH%t=?E#wQpGTf?7C!ttMU&+HM&s|4 zGzXsDoANz6|IxJPdkmvz(y{NAcf(UZx_R?)JmL87ftxp;kiZwx3e6 ztMB|D)>NDN_+llsNO`Z#?>LFgLvdC$Q21iKid9V#49m_*;CT&e7)(PLmSZ;CsO@R! z=?ygGG_oE-GvON;fxtZN;mG{E@N@Z_P@ISc!#J+x{lIyKmEdPWINT^04#!I599=%G zB*>p#t{6O@qJL0A>(2t1`4bP(_DpT81y2B+@wKr~q(s(9!xK+6;pN1+6vr-_nX)>z zGu%h{2#QDC_xzwFcASk6o(XreVlbHxd&G+NfKT;+|3>j=l!P|MPZg8d06&-3CS#gn>TJR68`wkX)lhzE>|Z&y8>)k6Mv^Cqj4M8x+j!x!i1{TH!Rwd}E)fpI*N z?TvsU0{(HqCc|*TT>YD=xW+c zU#v8^!Xf7L*!PM{Ji)~s_LG$)81iZP$15M;D-b4@BijsG1Q;{5p2gJqmfgUzlPtTT zWjBKDDNn7>dcF4+g9JSTe2?!}JpF}U{&(T`tc9&!_;p_XVeoThEP-KrQ8mgvr#w^r z$Pc{Nau$zRajR=foz5#iLtiCdP(nv;K7DI#Eb^+21qj3GJq}~nP-hD^-vf5`RK@bF zho7eT;UU6-_?TY_?bO06KyAzKS**jN!ot0r*Do zl2Xf&LEA4W-Lk*>+Ej5&9203L&yDWroe8 z&&vJmi(Bb20J9YX^Ki4}_oQbYo%}^f$qodH+4X`)j^7=*wQ5#@C7hJa@{bXwriXtm z{GLt!At~e!BTh=V^4`v(Hvot}3lkMF@mUhv6UB-2V-XRdQ3>e-)btnY8bB47S9* z2~_wE_GWtgfpPvpW5^$vn1nNZ%+v%JX66JK&IKPe|EchH^w~d^Sy(F@@|SX-xEi6G z@z!4$s*5+lH0sm72F{cJgE8_Jy6d{q&e;qNj^hue<=4>_Z=o&Mm2PcB?troaVA@g; zDjha+M&yRhnK#4ZVLDqdE~hg$ZDS(!{#WsrnuqY+6%kSkOarjxfcq|UN918k?O(M0 zEwt}nES+Kz{$EVoT2jG($^hx0KkXdm8{x8f#$9q}>hlU#Q99mGz7A*w8h8gGHZpg_ z*=R~FRTf!05fRj5I;Jp}N|kdCN9)~%>PHT}4MOv>5L3u}GRwF{Qa51ztCNq~%7N!^ zeAKDDIp(9{TtwRt`s*Bqw0UP;0d%C38br%{)i?Qe20t~MK0M0n6n^TrCQs@08tQ#L zgE8V93^NmE9nAk=645i?4>J*FF3eh(A{bsP3x%lzGZ1DX%-b+uVcz~n4f=O|Py|i( zS8MyW2jMj-I!MLhmA~pQrDEC;CA;aczZw>o2Batn&-U?SDdqar@52a~1F|Hk>Xy)!&_6E$?Z%5CDc^;kBk}NYY)HW*x#c1H~>i&|+7q zOAVE}S@1?dYKWsdr3I<096gM}AXRlpJ<$tdhZ8q=lm@E_^4&<8RSu5Z>0{1PP{QxS|)Sq#a#U5R4>}W!lb#<$AAVQ@B ziS^^ZrBJymoGCC|d)$`0P|0lEf!8Kft%qwFa4e_zQ{A7Yg{pWiIvi(6J`GiC)4VXK zylbIqEFZ%uyKUQU{@nOj%oAalGzo^2X7akhKr+izg&mevNIDGvScnGMROV&{M2h<- zG5-rwzjNG2Q^FvQ%fi(rbjpEc?*rj#y*Qq?hQZW^;p916=D__(hU*MhLq@2Hl`Mom z>;a32R3pXR2~04@8bfm<)ftX4MoFal7uI%+3sGpYzTEgFoXf*fVqT2;V%d{wW#y;- zv1$jg3dL;jF4|z)9;>p#DQJs=6vwLmA}IF!F9%dlS zR2cin6LPIG+*prrEYVe^H`F5>X35!A2JGh%P`^!rETcAo?%Rapua)g^p=IGP81ybN zw=X+jSXn?0N7>6|cU$Hd^S7!JdLI%i4@XB3U*Y&XHt>L7Sth&1nJ(@b%iy%UuG$&( zR9IJi)U2*Z8k?xLmose9vXwHWZN;PPhZ9xJmoN9h4n`t`^+uvv&pE;lOUd=rD-h1; z`s({oM@99~*KMKa8>roIkH_T(>W}hB1m%v8rH!TUG!-SOZ{Q2yXBtA^`i=rRn6hT# zv$E7=HP-onow6}5S$$AKDhM7)r({Vp98J~ccx==TL1`(h(u^r75WqNI{^EjiJ}jWz z8o(1VTjX{$hDuw4{7;*!Pa@8s7GMI@;rfRU%U2?mI00T%Aw>|99xeZbh9F1{l5pKh5ld1;l z3jyUHw^mf4xUb8f7Nn}#v6z2|IUk>6WE77HI8#=mSQfcSUv|MRd0u)Af0?VTF^sLA zLTI_9;ReYOI07>#4V_aXTArqM7JAdpF^K#+s3|ybU(y)E(*rd_w2nL)W@X6zz#JH^ zC2oUU8ao=-7*oT=oq)2X!)D@npcP1aI)K%Sn@O7ZjNVCoI^xFCZRzNy@_tqQ^?C@z z8L-x$X!D9n($$!#uW+8wW>qZE4ww!w{0pH59nrP=Q%|;Jn$l5C3Sgo*ok`X@?%s}S znDk%>b@)+=aE=ConUYD@JED+HD7ll`%kdD+?WBI^HyQavSECW@Ln0`%v)a%UoCG@1 zSsey8cvSO>ePL)q6AawzT%jLgm37D7*VRqOShf)toZoJD0{M@+o~{$Wo%i4Q=g z0mQW{lBDFjP*C&SMIBZgtXxESAbfTurvt`6u8HXs)J;v0W?;b7LUtQHx~b3cYtNUv zgZP7#+yleb_LScPZRjBF?*UDKhh2LL-0C$2}3IVUgnH>u>59BMq>OKn~qy~e@5 z>Iy#K(|-UoMkcKvz=IoO{{S`E-7vRe8RhTAZYe7UJSN@)*b4Dc8Yfz@VSB_R{6kXe=B!Yo`i z6>ut#)1e2|#vSJ)BsXi;37p3QFaJU>{~|B{Vru)4nq(b}4Jz^p6&o*0LTKt`XS{GP z#oXlEz-SysEPP1q)?*nGcnBHU?T=*^ATe^`rm)uTcp*b&4TV4R;rP{IRHB-D;_G`F-v_BDJ8E` zW9Yyv^~t!W?I<2ikW2oI4X5d|p#!iv`ksmdsI%2Ecs1ULcnsqOq!W;(##ocFc^BwNwGZ1r~}`TFC~w`=g43u3OtFtw59rhfC$ zNt2N?UwxEMHwP@jv2b=!IPFjRbsfmOyxcLgUc}Z zpG;Smp>jsjkmVS4M4y{sgxOgxcdXASUXp_1S<2+aiw0o0!k7Fyl zV~je_sj)sdZO9%P`+|BAmzyE)@qEgVLEpTnE^@qLy63zEhP`URUs9W+uz1#1bb|v2 zp%7rNX!1MYV3osahDWiTVYrY5fb+D5#n$d6dG5!$((b)?B8=UVcbOj*ZQi0jj8zn6 ztGdCt3uulm*uoODuW2`k>=2TEAUw6;aiU%z(&dK(zlEik)oq zfA}`0vs;4zwS7fxC(a48UQCDKA7}G6Q(;b)F)058Bj*FJsAHV(lx2$sgf9qQ6)Oru zUKO1#EIiBps;W8m;1LKA`L1W^1ZuHE-H1Go?oc~eXKx$4jJj-5pw@Q2S25_~0`+d^ zUQbvg^{B4ZqTc>eAVuv|9}#!fb2rB0bh~P@Y0FM^7V?PRh3P#;RlA_4_EDeL)X$vn zTdCnvqSw{YKrVS5nyo#(^}4!Auz>5D6SHLjjqMGLtv;ZGu%r*gwt75ueN%1d%jdN; z%4&b1)8W2W7?0R0uzn zzNv}6cr&q;FMZzsuN?t-CFgB8tbclDVxcQ^XSOj^5J9f4;1 zCtH~`=q)wLwI30;UWsEpHThMFDs zvF&9J;m4)pUmKoI4J(EnhG`*K2TFCZDU{3pbu2TdDKd+6}dkYOLA!+Lf-gMk%stgXh%Ps zEJ;;y(t~;S6-Lfa`b1EhE@%eDA42hcO%3*=cl?I>z=}GCw7B9thgCeI;~@`D)a+Ly zrEhUA>0>oQIuSxw4yX~nCpik`pYsiszJog7udbKA51|bosS$CfDoKqinNuqg(K0Rs zhDxWA5`yEhbgKEW`iyiYgf@Mw#z&v6BzhAo`i~YB=PWADi{u0q7X%gYH1L2r((#i? z^hGQ9B`f&l^58#P!FwE37fHW>KlqS@&L6}WUns8Qu>Sl+9onK8QCMibMWdt=IENE6 z04jAtr|tM3W?UF*e2N7;d|UCU8j4GpD^Km$D&W6W0l!)W{C68}lzyr%b?ASKZ1P`;@vg=W}(o^G_?f=#cPP=3%U{Mjck0NPi*JVYLCd zK2-hDdqIl}?AN~hgd*Mpio^lSc}*d5>k82uPo~R->S*UbHZe5lh?*i@51|!D)SeQ~ zyvJ0>5#L6$a4q#eN7PsC1V8*j9p?P6A_*P8RJ&tVxBN?V_=73vDApivlqK8pC}vF< z)to?|GXJRBI=mDpo~N){VQJ$zx2bUi#l=U}hn>s^57_*#)YeW%McApY)L&7E!mrhK zPN@RQX!MQxkR#j&K+k-tdj`TH&oQjsm@6~l!7I*=<%gGrZ6z(_iSpaw?D+5+_+p^P zarF-~PGiW-lyB8+$ycToiT)8ZT=x%ir6aBcW0IbH0^=aOdv-!7UofDvuPJ!Z$MH3u z>!kXgL-Lcw=Um36@6>O7kmml=*p#S7*H5dB^%_jZKaAO-XGKiE1jG-z|(m@ zsH>aW-AGpi<5oNfrU{Hq%q<0@PG_K52Gh7R>bs5nkx@EAvjE!q-?Q7}MHyy`U=j5> zi!tC}%0DYsoD0vY*{I$=KVn?tv^YGN=Kg3_`j2X4*|Ims=D7my#hz6ohECm$)fC4$ zl|T82IHz8boB>w!(}waBl%=z#?Wax`)xOR^J9T6IMHO%NWm5hn3`1MdU6;{{T2bL; z(3L~cKMO^B*U#$0O0v$HTO-u??Pn-gM-3yn7z1BKSyG}l_T_g(eW;`u_iKGwqNY1? z4CRWt)5qzuv!z2<)t%0uGNKmzj*(F?9r_(TLWt4w4-D5uA`<01i@DI@YZ!`c`&+%6 z_Wpyhc=0v$3CSC80FUP-2Gf%3nCWmOsrY_TPr{RX5YF}%)e!*9tUjhFJw?+ zcjUV$?O*JnWd`NOT#PUd|BKj?B8#u!$oGaiAzVe^bVTAR=Ez!Esg~S8kE~O(QY`hN znU)HfEi4tohs&lf;HJ6(X+QlhPKEvg*3=+yt}(rIx+Xq~DOPK*8LK@d?p$PXs|Uk2 z|7^0k+A&*f>j;hGQZTDI2sbm9H`}=6) zo$fN?_xor&Mb6xdb8v0_~^aAxWdaPiyDEZWz6PGr)Y5H;01!HJ-24_18v2 z3YYt9F-U5=KT?NiI<@=Y%Xexwu}YmEpf!fCFhE=C4719BClqUHiGVJtsXd4suGZ9M zK{lDgBj{6?#=CkaUD_30@X(@**=aJXC`jW+gaU$LSv}9HYx}#HS4jWoxe(cEyP5Xc?pRm0Dq- zu^Ka_ycq2dmWIaU=caA3peV-J9}A&_R20P_n^>bkyw-s?@+Ku{DLl^0ucQ4W#mPJX ziJ%r|A@^;%OU>zgU9CB0uMvsbgHk+5*o;A4UZOS(pHZgO!h`XXx8bO7Ts^HxY695E zoe?ko*;_n(Z3NG5>{i0lLjJ|WumWe6atB$Pa_T`S@WNevjUT3cz_j+&2lwj8bTb6A z^y0QIeA(016+&?hwC7Ne{SCAYw;YM6YgIb84rVJKnczta=V(*Gir?c%M51gSiKu6C z*gO&uVdxDtoCzOEX^jMbGa5m%>r+l6w36YpzY(N9lOmF}B!vs*gXC=)!`S!cuhrc& zIazy5YJf!XLM=HPBef)>Sz|PLi1C6ZC?}d`6Ya;ihPM169VVNbS$yXrGOBjP@S}=g_cOEEwqspW`g##GShgyg%;`q$vV^;63s2Jjh4VV z+1*b242|||JMCS3dz#-~TjgUNPHC2|)pR(1GSWI~BY5{Izq2+TLHxRCSho6!{_LuK z=V)&ny-Vxt>o{k)@74zRIL^_ezFMU3IW7a`_eKLP?u%XXZGE+R9zX-Yza3JtY<^a` zrXLQZUkk$5w)LlIFVcbj+C$~v?$G0fwHY=-FC~(PM=6EU%`YeL&k}aVRIbMr7{Z#-L`jmJUiUkA^DSLVd<) zxlw#}hx`5n7^a>1X3wI}QRx`)Y74!UrFDy9u@)a=!De9^2*Zk0z-h@?2#PpE6H0r> zYWKzoP5{ka7|Y*ym;o?cxm>YZjArAsRVWngp9J=9F&aFm;j)A#lrvddXwA}-n+Jy) zjizX;ofQhXi8GoFZgY?7L;I3yMml*O&Xf!$X%2TR)PD{%^cJIJj)u=Mwou(iHLO+{ z+aJ|d;YJ2(n}tAIXn7X&swf}d%Mg^!gwV`v4Z90+`F-Z}O}6%8?PicvZmub?hr|9F zhP7dH4?lglFCfg9*M(cqp2xKW7jK$|!pkKdOP3$lQUoZh4AfvgT2?h0GGBWiR?Z>4 zDc#)b=SS;QcZjPclC~Qb9`3=F39eS2AY<(UE!g2~4H#!|nhF*owf0oBPzw!j11Qti z7PjZPm0c9H2(^kEouAO~!tNriVN-6wV5L}%V6DW7Er4Nxh=bwiyeDKgDqIY)NXu>1 z2XPq8)yq*>IyBfU9o+A;l6wt?>!lS_@0bQ!0h0*XNH@>BOLc^=OOn3(fM8q;-4OyloWT#n$?Eu@BFuoR> zDQ3}TGI@uK$wOfUxs2zYmP=^&xSlYZY0SiQq{~H2M;wkH3&YLE8cs_%qEWgGT@0vN z4(6VwwB_0-Qb(COJd00B>a5V305)ia)>-dlQQFy)QYu)1Ubh-uUV(<(p6+^5i|Ng~ z4%`y!z;KrJV8CFry}`jFz?%+mw#a zpR5$6YPM4ACUp}{BbwH&)W+b07&njqfvMdBy=wl+zh^thRy8n2GfwD*Fo4) zH$WwJU5DzN$F8yLy1}l+?CQM@t^;u4<icAa9^ zd3FuwBz!k=M0V9-S01~%vTLu%V56qdyk|5VidqN6ndg8=W!I*0!f9d3CW%navhxaKizKEt9m!qsE7_Amxc`BQ_i=e}MGq%*4_Qne`U zIrKF3*I<~^n=;mLLDnGj;x(KWyIx|~DRv!T*9~@^XIIo(xO~^bmCCL<>>AFluI!q} zuCeUOW7lGK?Pb?X>^jA+1MIrNuJi1QVrKagT&e7;1DB&Ur4dM)$AGbn%464JcI{=? zOYAzut^@26Tt3gPRKf3O879IBIT8G3*gU~+cIB~aF}wD%>m_!bV%Gt73HG07R}?ed zms6R?t~%@*&aUBG;L2myScaWq*J5_){f0mAaJ!GpsAaL|u(# zS02OiwxY)OuIB`}I?ppAm0i9a4@_K_=eCsMt=vk|g%J8QlX`3OAXeL7RPCaFcp61J~ zI-H6&LHwd#)oS5I=eDn695zp{?k{k0qVZugoq;xp{PN41;sMd3I8#y1dF(>jIge-# zl*a%R+!B&H>^j9Tu)q?MvE10^JPTT0YK_m{8@+^KlxT563>@6fgcx*$3q>BX8Pl^E zv&fV45ex0AHCj{Fc<>-~H2{lOBf-HN;c~p7-Gg=|3O4Zt?QU)Wv8D(Mi8rY$6X7~# zBHXoHgt6f`dc?TFuEk}d{t~-{fFEGja2D_zA{@JXSp@RfmHILST!{Kuh6!Dl_p+2pz*x0P*j$O^APfYupUz%Cl-64dME85VG24vq+$T?Fbcbwud-w4=nd5*$Nkp z!Bkd4^`>%_u{BOeLtXCTd(IsPQIhLM5n)CTdb8C|uaaMSiFf)MOJir4rOs z6ZLQfFu$EzQdy2qiyV!9J24sLaj}TE*(Bq&UC@kpYHXL* zP3FPm%bum63{W8s%xsrw!)sd0vLttyN&fbl_MB9fw-tl)u|96K-YECs%vOF%kutRgxCM@3~v?cnn^+2+oDiI-WF*r zd0YD~z~->8LOXY0&1n8Rg2)T+Xh}St7A$d@I9CuR0(MibMrnJH3YHgPl@&)dg7#@6 z{BU{j^&vH4sQ1m9&pA3$#Am!P(a#-%6Z=y>(Qt4Z3G<|41f|XP3C-?p*OL&qE6jbkI+H2j$O@Id=xR)vH*3Z^l5jKzM_Y=M z`F6~kHA5V!xg~gds`%r8*xYv>3ULmz;*6l8PXaack>#I3D8HTYcn2-C2V&$Se% zJ*n+M1xad*q$`xPUyTU3g2u-U#H~Z0WRYN&ID1q!3>UultX;lS{G z&U1g4TQkRsU>xOtgp)y-kRUXMAjwCyggTqiu31*?IW1G;hCdyKf86AwDEf#Nqce(& zkq*N@Mn#(_)(&Ctro-@$Q8DGQSnZ_4@Q+ck)c=U~Xvax#GI4R05I)4h#aDuBYvB?o z=nIsjHWhpatBxp8ToOp(nJX;8{JXvU-D&+7TDB+*tGCWDytKphf-CF3L?7Os`h2M+ z;I;%)3HAVnm7!lX8ega-hr?Oz3I2!Q&oEqqx}egkl#v!F(X5numC$cjN`1zemD0eh zlq9oKwj*orN?~1)4#Pj@A!fXGrEm*Qhv6Ti8kM7XaV#B%e~d~NsNP&Qq4x#CL^TFA zyph6D5@9$)Pe#6jIQ+BAJ{oQ=dlR#uO>a}sX5|Gz9ijHfwYa>bTax#C@Vfe=s zwCo4fT-Jm)9fp65YE>TV9(dDX_{XT$*mu<;ai@;CDC1GR1CDA9 z#0qV9D)=TaG_H-s5o-;`lqpVulY&^esHiD!#+v+%7ACdzYNqWF*OG{d2+fRYZ!#+N zHjGLuXH*BlDB67(6Ng4$Yaw-ZLR`I>#r2d9!#^%t$MRxxZ(B^3ogLbQu0Is;k8v7xg)=g*s;f#HGB8rW{9W>_*FBHSJzWVH;W@ zdsKpprotnb7jl8y;LQ3h1@;tmt_CK|Tf6iU6)Y;U59Oe)MPpAu=yVwVG5L3w7dj5! zbQu0IsyAKz7Ak_7&7*7n*?Fn-zzOU~^#SQ#wcFRM-Fqr2l-=I@F;291y7nci^~RIv zkL06V!6&s?L1km)mChOB$E4g_PGu;(=`j3b)Ifm}#jH)oj%wzk;C(6JE6W*AXpo_Of(_#3> znP-$|9zgxSM$mQNYk?wYKcLfL_{Tv<;^q@ArUlnjeR$Jh_{XSGAc9p6FF~^?qn{LG zPP;Suo`OzcyY>MD6WWThPH73@-y0)7sEx zV~{{PLh*(f3%}if;Vg5r+G81E9*tEfyO|V0@(;-ob060MnbvlbVUPj@0>_glNC%_|V)KA(*EcTTCgq8j&lzb6u z;8JGhjD7MFG+w-sP@*NIdShoI?R13VA5*Nua4Jj#GmlfT$@8Ttm-I+!xD_ zE1JK|ou6GY-UbM!qJ20>Ja1;Ozi2qsMnexJw>)-u;Suh7bn|>OiE2|w1NJwBrO(& zbQ^NAUfVZriHEc?flIyoPtc$gux1%8Ptgr&IdtUHIJhvlxxN~#C~2;fbA?rWTsGN4 zAL@_nFQ@7sNw}xGAYBi|MOX*Z^(0tV)Ah!Vl@#9*m9T*pbkrY&Rnk!>SW7zT?R+;N z`)XA3fu2Icp9~4f9iARWah>&g;&2a3ZX%4WItCjVol&_^k7-?zJWd{U)$a@EmcYNq zU|6Twq30MUyXvE*>{Yy71S zE5fU-qf&t5)_Z|Bc=+Mnfa2k<_ezs5P>ftFgD${_tImetzPi> zmpu~Uh}*pU+r1*Rc*QHgt6u&c9)8vLs8K(8NX}x1wdra$H(|XUe_L|l{(|X^uJ}|8h zskD#YnTosXwWxj%y$R_(b&WRn)$2L_M;Z6%F?6Y~-o){#>27n6UfXeq-HG&DPradd zOR&&`MlRYBFaH-_{x7}!N4@-CdHKKg@_$qAuOWDOOre;kaB8o2KfTtd4NTf70@^o@4xXmY=yj5r%tjuHo+iXT6tBhx+LW(kX?m^wT4pMHcup z-!_bEm?Kj6HLb>v>@1qOUl)8801On-{c=b=B2q{*uTH6t!V z|F$|5==BGnw78GpIltXsl(}irXsFEgw0^Xn;OI&FM(Zir2XPe}&*hjI{0qUCho1fn z_>)XjwFdY!n#<~m|I91=kClA6co28n*=gLkQQYsczW905OByk6-e-n*zj16-SYO$#*kj@LDZ>mtzhiqI}R=Bg*TE&;>? z1!l`GTK`B5%uo|+hUh#JgYHqVDg= zE(U_7NrXj#Ccs@6hR32TFeP`uU%3PR*W2T>tNnKS0M)ME0ss3Q@PFJEpIxomwc7^3 zm%w+x|8)oa-?zgf|7!o-E&%Y??|}dJ4*36WgBQB;#%%(y43yph&li^6PKLN?SAjR* zU3F9)KnS692fWW6@YSot4=|M195%%FDZq8dl0k?u` z-U=?bY3O3)=&0CB{oif2SiE!0M7SS|2~lEp$r zn6hf6wh!waTv~;cMB;h{&@B(Gx;-<(h17vD72aVDy%o(*ukeo*U|0oo=`&D}lc(u{ zuJ8(QQSJzUyy_$JR#2^5K~cAYqHhJo+zN`l6%=sAONBq9-@a)~IK29CKN(QCWv0bX924JKpUxQlw4)+EzfZd%(-OWeGX zTpv?K)F$?rI8nd5>3+iCIxIBWR}H%jrllhGgsi`Z!W(&_a-sLNgcY zqhXy~s3-cSAYL@hU8uLCv77XIG;tC7&lJj9#37CRMLHg@Ng-v4-V5H0C786q>t2Sb zYl^XCnVuwxM@Bej9OhY}4CZPnWr_VR&9nn03 zHtLbE8f?@Dz{=XFCx|8$PRSef7;)ie3LV<0Ckd!Vg&VE5A46GN^#t1c5-#rRmxoz) z3Qfwx{2+yL@!E_GcFYT$<;xfPC+&ItJ_`%0;CZYVaqb;=2iiJv6PO`%mL|s-BB(rSMg~6)e9U!b&r(nLG5M z=xdJd&|h%2E{l;>pubV|IwAGkiPS@Ig{xs8$bx_;Wn(H5_Z=x<0&+uM4gqm^;}ZFG*X z3-%y8M>{HfSN{v&A{~4WgMzqJkj{gX446M*2Ej1Tcodq(IO-D{66)wc8T-(?r=x4+ z@9j75!@5vMAl{zlY({Sk+_7O)=W z^ufN$j*s+OSZOr}knzaW-kCo^MIY&rF8=(0e_YTLhTq3JE?MmYD$drxRpWK=P+sZ* zy9nimW0VHU^Yu{0;hCE`R`Y1|Tyo<9ISccsDuV8&fW@Q7o;@g_O zuI?yb#o;YYo{o=0t*>i(-iqD}w6C~ZhDu+>N0J&FU)#k=v)i>qTmh|%w;zS_r^?l|RG%CAW!(7-|%4sfPv*%lVBO25LC(w564`aBz z{A2COG@&Cpp-*+)hlF_0%9*57(06+0`u785b0!^h@sGuc8^&Ny9L@a>t3X3;O<|~K zD6bTTdE(3zhToEcE2BcF`0vpJZ^7FmXzciy?RyBq7CQO8-pzLlXmU`--BM`ojgN8Y z{S^Ad5tMNXdgUCgJ*95|)0-8cXXr*#im=<%jV>4I$DO=1$gGWnl-9(_fYa!B&QZ=9 zG|TWG^a*e;_(AX6l%=N_54KN8fX!~PqFKW_UGh8cLykj_A6vA=urEV6b~ zGiILC@xk^entL9kpQc0SAWdDIW!}8#X7#GR82^l*R*Zi^(p^|4C15 zWTUZLR^cjVo3;svQa-!vGbA`N$~)DG2yz?pCsjaCDXEcw+FWuGgEDNjU&J=>gV3>0 zxZF6^SOhQbzqo!872lqMbhmlJk7ch1jA(?YNnB9yxt1VvYvR(Bp=kXjJxPGMy34`G zF6r(1acC|i^JO3mcdlGFQ$QY9!c^FmwPVITY=xQT8HOIXj7_uYP+l+Ko9k1Tb$^BV z51ABNiPN58AzeS~Bbzb-EEG(@AQ)yD2WED9Hg7*0M)^PMy+q%_bjQIkBSdg2{aKGx zxREK>&EZkS5QBgc ztn7n`OfqLMlhzlb-f#~~F)FG(75u6;n_(uG0dacD&1^`%SK#R^e%pL5HPSBO>Eak!attnN8YTh%7O%`xXw z)>VvRM$wk5=%^R4FJT-HP`ExhfrUsQ9X9{c#s6|SWO?F*?XZjP5Y|%|7J~s}tGgXb zsN{DHlvnxM<5j4NE2$`vm3u0sRc! z_y;6oIbHr+k4&u(gk4SCIrEQ;V#AmYt{aANf-B&+)l+*)yQW9RJ?RO8+ks&5Fm@8{ zY3?<2Af~|Ow{}O;nQMA?*Gi9Q>D2O1y`7YU%3pw?-?Be(Yb4LwF);~kaO z-heExy#-u&Ll14kqQwQXMT@+H!EehF7bMiqkfKZVP}j3S+hrO>ol5l?@;dJnh%<`w zmf`ic1S>7oQ{pywgW-(^bRI6fkg>5Z;7zo>=2{Cpu2-PIJHE zkn&V|KgTE9kxz=`UMh`J>B@X9-qE2mM`zUg{v(c+$1R#@Ev?Rd&38s5}YP#Q$#5p|HBP^l! z!?1Lu!dL|eLJWL69^~fMx**6+xb$;h6L%8bc%)`5jSY4;L}N}~Bh~ zcat!9dq8n-ay|!kbBp$&!uN1Opm;bQTXkK4qP*o+g3Sn7KHw5t752!9mH6{O+r2Bs zW8-TikV|vNqALAeHO z&e_Rw^ex`eZyls=tx!V+7jZ>x?+D!1wKv8cSYa^!G6LG25N6180wcx7`8I&d1t2Ka z9aBj)rN!cbVeX4OJNWHlROY6rCw=@KC+K>tyDv^&_Kb5sh&o7aitmUH$GICyub|~F zRqBS@?6LV@&il6UZnLMWPWx*5;404yoc_(r3=X7s;@#;Gg6r`RiD5J)!Mzog?XK;9 z1p>0awtFe=)$Lga4R9dy-A>pp4Q~-}cbWjhnR9pF95yqWTN@L=KgRI}8^>p+^A&Ck z1CtWnq2YXlfq$%BSiRfT*_N^r(Vm~9yXv`b%FG-N$eD>IYz(UJPH_mh%`{H*1YQ0) zB*wMFgX<^gU;}q6s{#0N8$oBY>4iYI(J={48xMNtH*|M)3^UF)L@*p5iAaXMllC=+ zFb+1dlHFK7u%Kw80!o(~yWiJ67p7S2bLn0)phm{C5Z7(y9$o)+5W<>b46@}P)5sFY zon;Sp+sQVgj27+=Jtm@_P>yP`F!rFT9!iDKWkH+3 z?M(r{tK?ajrZl8E`iAf6XmhCKH|RPn-=82m5=FPIj*r(`xI^Us?=)O!;qEMdk79DY zaLIYxhAW86iAfvgA3A(Apv;HamdtWU<_$LqyID-PaLjUhxWcEe)8Oauo@p>67$$g& zM>U|5dr;d}=uUT22CN9d2rCdQF|=mV-cspEWB30d@4e%!DAIoMN<9o|$fwB+IfD#2 z&oB%sK|m2ya#k`kB-0)RMKFO1wxB42q9_OkK#-sam;;90HD}Da>aGzy_xr6nHRlYg z@4LTy@B7F7{HjlPS3Rkodg`gr;Z(<>OMk)hirt-KGaO&7D6dN_yQZDhCb>wx3l2oB zN{eX4mU1=iT=3IqZI{^C@{a^@Fw0KX$4+LAetoK3t!gw6IU8X2+2>g9u5?oda_>!Ydl&Gx zcd~&aJ40XWRz#H59evI6s9X0~t*-nm2+V8C=bfc3jKFGQop@NfySiD;^|%K!+Ry`2wZiC?9Ynj;{K6 z(!rRmZ;R|d87KaUKfwDsWW{-T^$_>!rnlB4ZQRxYiG3NNkF_qH!^7x#w79p$UC5lF zA$Bi3y%wnG2JBuTmYsR9fUU55o<)^Ofk5G&m`*`rpZOmu6kWd^Hyuv&ij}LzQnAj` z6?`bF+dCGbGwswnR+_=MuLt5UCS@l+Wy{!BA!%Hgyz z&hS~QdHMs0vjMA08t$NLhVw~ub**2KknMyOd=NG+CW@NmqC@h$>G`pVJ(=`{T$q97 zY>3@jFS;l`*fQLVN)y7Fw6i2GQx*SyWaI0~x6cUGmRxXPkti$*2^YMLu>~Bo{k_En*UvCNH|S zPps1E%!rDoA;hF46LD;|#HGVHa;4K-|A@x)L1%(1fIb+F@Ua@CT2O!|P8YztlO=^l z6}pv**>MK{zUmVThmw`u@*fq(M7jqI-@*pOP8;dIfx~pEg8IF zG~#4rqvVK0#y?VroelkhnK@%I|8C5mAwB<=NK*`1;Maes*VF%rUNp}$=|xB8yqVJg zdwL)9Y&uPJ{i(6g))dyFJS`TUdvb|s07`x?ohwZ;)%M*SdDDx-=2mQGE8eyQK#L7Z z@!p{9N&m>0RGwXcr)!!{XA6KPy7shKE&HE5n%q}cx^#9*#nMy7#usr>Y}s~*{{FGvrC)~9 z)Ngx~F(9_k)+2icQjvow4nx&(@?!~Mbct#>v%H>;uo%+3Ur-E-UK|k1x8IEb0JRcC}2pE3TmaO0B5TtcL{j(#lTooTgPpa=xernSL9EW2le(i&yqd0UZ<5bUrVDy&U7L09FV~#D#V*Me~Uf5 zDziGiP|uZwqQ+QNsM6RZ(S+prg6R68vDuY;We!h*&&9gHx@qev$>g-;`9hp|{ho`R zflZ5PnyhLx?aWxy1~>hhNU#d2JPSkPkc??+c(h71yN`;MCY9wZh3r9pDs5oqzPGzL7a^7}RR_dxam6N*8 zsO_e_)OB&nlDff&294)$Hx*@Yao?^(3NM&7Z%Vi93F9YaPn1}6R zFu|pp4bIOSG;rYQeVQiEr5pYU%Y+MNITi?LFmYn(Hc|CuvDP)Rb6U@sIKQxHa#42c z8FS{HUpRUEq|!~NPMjFkUlwZ=&+a^9Qg-XY?AGH8C!U|Zs7t4@ojPP^x1OEdq;UK! zXwhJNVZ+vQrk3spj_lSG=FgfmV{&%uDKo~;8#`NUpE$c{ zQOAih#?P8svUIH{HfS@uL7SomZN@ijQ#8A)D|GAebLPyL+i7yg{k{X=o6ZsIliQu*PI0Ta z4fm2x!IiVyHj0ht`r_hDY?ZLxUA)~cxZR8Gp8sg8iN0`~cmUh|*tWD0Tf}|Xwqtt` z+g5Cwu#Lc0fNdSNhp=t7+rv@i9kGsQKO+9~?H1v;BD{z_vv?~Mg<>hT>e%k$7OmeA z!%J*Ks<(<(4yj(3hnk&tik-LucvQ5;^r5_1gRQRJYUAF)uH=S}BQ0Qz3byRJdS`5v z-qm1FEJsG?JQn)`pMpHPKUTALeT)SR=cySIKGs`k+Y+0Cx%6b_Qsmme;MHM0I{FsICeBi#w#_>hhB-Y_QmSN$E$DTt3V|r zR{&%9$ev$IlZs~s#io$J9Tqw`Clugy5B&XwVuX5B}&@_{!Wf_aP7^&Gn4pnC& zc9t5f*t^;gy|Evi(N9gPXGJgVi)B==XN8Zj$80cPr><8k)Jhe7vM<)6^fhXex<}os zHb>R>$Lfr~Rz0eAt3B#5wbwFup`FzL)gO@4u@6)Q>QvQDbyq!9Pt{BHOH!Vu&akmT zIG&^WCZS#eM*u8Y5Z%5%cB`BebvqF27$03sa|L3*LAg5WhqRJcOX9zl=Ogw{$&uxY zH2gmhuPWx_I8R<8FO?&UP%Tv})h1K5R&CWOs$KN+ zfmpqUPg$z0r2KtkK^Ow)6Y`+!gL7`w?eW;@^`EnZL>Adt7aXzZI6_$*JE@M*U602) zR(`UWjHq$yY!%(`*I0|F+7q!eTFq87)O0lmBr_F9{|Xo~OCc3t|0$`05Z@zK+q!Ml zvSZYQq`-eg+n?=0p5D}SQ;5UEi%9wD|^UM{bcODx4T@@kw9L=&Dw z2CqdoVCl=~jwfS(DYej&KOQwY6f0<$p~@opi>zRQ@5#FMjH?Wse*}MZwKTf+Q0#Qh zAra=QdC{>$xblB7s(d)Mu<2jrOfk-4xHQZOSux3OK{#9|uZ55)(e}f!j?tHgV}0vi zn54K)+-KD!<pAeko|46J}`J)#3zI+#F6D>FrYaFYgs)Bc+6@4X+SBT5S zWg^;fB$k7j{ByFs{JVTxu9p`8_q@zfO3jsXRj0ii(TC& z8mUWluIOhv$c}QGXfAWqMKTWq$JeqCu1Y(ri{)^A9%^;AyhdHAX2{lZsk&EuBfpoo z=-wvB#J^R4SC5-qGeOqWn`EA0OV817=x)J9W}zuEeZ}|YppKc3^ppB6)82G29nDU& z%hU|U1j~afgP+YT^n7>gL1vS_OMj|v#2|C4{9gS-^~2w@P7|k_(?x&rq!=IuibLWB z5vpg!Bsp2mRkd_&eJHL&bF=tC9TrDmrd#k0@W*8l=altSFU-00^;7qvcyL+Eu;sRX8+sPyVY$7;PpV;ln*>}#ZINeN zM{ARCoA2V7^d>YVsnljUfRa~$$tg>fmMkw|Yr8HG9 z8#hIH)BCj17v}EH#p9qZH<=@*gC%@au!CVJ%A;-2igX#xGJgddF^vIXX7DW_|bd-D%b=7?OdkZKFBQ#j3|0pcu*pQl})=ci+&nlle)V zg>0(oY2X@QIXCot3}qMMbDQdnJa#8&@$WmA$sCM|!-MRAb?~2WHvbJhXTT;6^S7BD zW}7+IXPH%JL(gT&)feAWKN)8kS|mH@slU;8qH2Y>EorGc^xvWGCrDAX&N>%3h7(CV zqoC} z)?DZYYw(^O3=X=9tYDz70DA6~gPS0AY~qNOJ(XiX7|&NnyH)5u$oh7s6!k{qV`EhlupfKS1afm4lS`;|YAik~Nvu1W;c(7luvt@ltuL0E-Vz%){wWul;40DZ11{Xfhb60dwNf4`TASN5^H$PT{+34lN4U^!I?4XA4RmzJ;Qk`VKJX$Mx&M zX}ul<(cr}M$oc|{dd@PDXqf6`D0r1PX1#VbY8$UX0rI+Wt$%IM1E#$K92?Y>!SZt;og;>!D!J_iZKS zBK|=@)#;`So0>ZgI|LCg4e8Y)?HEFSAD-PjGpAhlI z=+m99M90ClH2+gf?{vmMSv`YY&=9|p0dcv>f%ZatVj;(H{0uE+VZU|3 zDT!mIR>lbZnEVmtUZ>e7x_}v4{`H@xeNqnWSoj@7@h^Q5EGKA zZT)^y{WC5L76q=0cJ@h_erBJLW<$Bfa$CQ(D07{R^D^>rUf8d;nb;`a8*_76l-F85 z4A`+guJ0J0l9}w z`v%^z!&FF$JSTZBfa$v{)bSPa2`L!xm_Hy&{i39bptEl zGr6$ehH_5Z)B82bC}r!N<*KSDf?}a%_MJ~lK+r>GEaja|grTT{9T>D#?<=9&Gx##| z7WtLR%;o)< z@~i@Ec}9hd>KV6y!iUv1J~)vuoim0&nfIW^I_n_|(WTQx9p#2N9BW^{ef?y{jbNc! zHuO9*gWZe^cY+zykm9ruw-zfw&U-R8C;0{^I8xk>6a!t=PK@zlPpN&S#w5W+t;^?e z5D3SND_|r{!H7qH#uO<7bXCVsaDEgJ|E8fjI z-q7+yVSzU1*OIv^9ZRMAH&BT2u(6#yvZZBWV~!4HF*>Nq_7_8La4YnSs;gQnbWwv zQ=I8<^Bi=SY25w+v~nS)C(glfE!qd33G#rj5v8~)afHv+J~MW{TV+m%85uJ&#%1h~ zt@}8lt<*3)^Xg6?Bz5W1c?F(vJm9c6&M2uz(pQM?Z>@BVHD@t7B7Mc<1?!8i;)b^R?X!DJ=FJrvaXEN+S1A{>^CMzr9AY0-WDqk8~FgYIQTknfO&F} ze4&KK$T34G@mSREjaa?t{r$1bmcH!8GQ?&W?oF|b#)7Q~f7l|QXDQle&&a6R>8=)d zr_pLI#9i&F`FgR;=5$jIsdB0{i&-9f_#DR%VV_etv8^J<+1%qF71!anIiB`wjBgCL zswsT9m<-P9CoB4R`EK<#)T>**XZb_Xx_E_ccmAZXuK3cOdduiCJ z*7{m8yf=D0TwmV_JF~*tN?CODWDSTnvl};AkMwEHt;0_LM?1JwvI_j!u?~S7mkbY~ zQ%!}vNmEw=Xmeu+FV|#t6Hn2(L{&+AbCLIY%1wufZ>8U6bSq{311~DWgk9B~>P%+G zFGPJnDZ3^#WliRxI9!p;m4MpqTig12LS16rk+5~eI{Jo!3xHySzRh#)i(77R z>2q*IohgQJk=eXjq?08F(5G@ zt#Pj8gGt<+yDswxVz~J%TDH9pozDYSVtGDQED@frz+?~HL)>05vjOApw{73zUy$r| zodr%`P)LbxLQR%R*m9o7Qq}LY2~+l0ttGpoG(D4z_DZwC))$?*B{aM(C$}}_GhE!R zaeJ1gm27N9wEVa_ZpqoIVqpfTO&J5!){Lz<;w|qQP_W%iVA~3TwIca$tWF=?BT9NM zuqTB#ZCQu&Iin2|N_aD^fxgk+7Hy)Jw;oD?VSIW6N9>NTq`8`J-V@vGlrj26;APqq{R)bthEVS=<^ZBWHUCp zW8#P3=bK-D%Q=2gqM{j!a=xa|)@_d8o_M=NnV(dp#L?fr`u&>U<%thf;cwyb*2l}2 zpupE7gAqaZ;0iO;S~iLW! zFcco2YrZOG0W zzYRZeXCeWw#s?W7>mL08cZN39?lUgHhk$2)Pp$6&^wMS0CtDA4Ad*puc zl4u}%sU`9m(M}n8P?Ry3sz!2zxKH08Z!|YasWQ}BJ=NTytLrCCJXik3lvdfQjr?3c zt2^UXR1Gyp)>JcPj<{W2Cht(g#Fyr4^Q*}Tl)6eT6cc4@Jr&QPx>^Obx==o7+Nwv) zqlOAMQH#_H*)X_KmosBUYjuZs!aSod(j!&Z;8gvw8LUT`HDVE-;;olI=yT&{5fY=+ z1Uze8DMy;~MRR>V9(}Dvx~;rkj8x<0jS_!46D!5#DE&&{Rtmy;$WiJS{h+*DHB}AG z7)#MWej<;_I{GVFPG6=vn+2+Y`5csMB{Oj=Gkk+#kx*lRQye#-j&Pb zTXKO~qM5-@dX0D+hU}x>k!{rVcxKc^U8u6uNVQ*eP($=)d5$^HoT~3fqaLLe%FgCH zGfF*ZI;c@*q3oa*sA|Dq)n&j?&HJsgE%i*8y@R@6)D3P0Zk{8btmj{ zzqkVGJgss}8#M~{|k@HlOxibwJ> zJfGXEPE)&pisTp_$rsd%>Qo5D8gZhTx?D}u!^F5?oLnoH;||gIV5|B{-=!W_&DB)3 z3eU=JR(A!F(lGdxpt;Er*9W`xL-3oa@TUo~K~Sh>so5$Hio4)F2h{|*IQRw1?GQWT zxQp{B#^hHNo#%kKQ1;Se<*(`=<_%R!-e=mQ1dZi$=CYuPQM!d}DM!QiZ<1f&+(dn- zPC+YpRCSXIu!XSHBC#U)0^WWbRA;Is_VdN`;C!^3^WkYH44w<9m-O4HrX9MEinr3c z0p6+4*IEq+@tg9V;0<-Pc?%9T0d>m~T&doM3od{^3|G18Yn?6bQBBRDptG5(_aK{B z)f#b;I!~^WS3%wS`bE7{c9$2a`wjhRC7SY?L62aR90!><;c3-WeUp4m-6G#r?c%|& zh`fz5JtoRR%o^MSTL43Lg4oq)@xNP_yb>-`27(#{EAhaxt7;o$m@Ycg^ilh9J98R( zpXpcuC|gtwW{PV}rk;gIzZLZ+Jh{CRMOrD|)-ULpxPQDxl12}F0G#t zmzg#Cpje<6>ci?O^^BULSIe8soo1wb7TMorhMW4Tl0KkL)2Hhx@=dv1&V&!V1qVE+ z;1msXBmFoGTt;u#@1U(7REN~9daB;4GSzqLa`X?hi^4PLgK*G;IJOLyBGpk}C{Hst z>L>I)D9K+9`QDV%b!D9i;Rj8B)kFWTLjAIS8+Lr!yd&>6>usj@D0;&p$VB-UL5pwo zKlFFHt)_35QTM@MOJJshY8`~G6yNJZYLI?HJr9;E(JbrfCF**;0+;X!V44Oq^jpZX zjG6@VJ_HH(s!qV&se|BL9ScfB!Xhyb#aLi2G;fj4YKq(0luuRO5+*n8nIuzC~{;4lvU_TDni@62AQ?fM=&WaquR?XQyb=Apem`Y z;@n_~dO*}QOH?-eySjN;9zjNztA#2rs4sdT^(}grchqw6j%+OMHs_&3k6$Q5eN^D4 zy8gQ^trqJn@dZqJL>&Ry5_3KEhRHV}^&;$20WYE*L3+Qaq~@3->T0Z@?swntozte2V}QKRGGwC}@W2h|!>(xY;#3>0ZPiU;L#@tT<; zpBC**FEb8KJWVZ?)72yR8p=0aJ`jEBIt z;i6$SQ=c0eq$Qo7s|8bO!E;6vq)sBx#oIRXqE%M88>!6wyK;1 zC6D1%mhD05;8OFQnjaj*TORQ>;sNuWyee3P=OBy3EY$ZpTt)o=uh<3QH0dueA^XK% z<`VNP?6g|G0QQNX9sqaR1k5`upLk2&hq5jbWrFY29l-qEyn#lyRdo`V>6L1gxLv$! z3W6JyLREAUh3E<1mruo!?OSrAS#ACy=ZV#F6^7nCwH+RMD{i^2!b?yAo?&-FzqnT~ z0?civtEa^xC~zx|YeXNs@4O1P?r+7EdW#{|%P=)8fp0wADz-ujx-EUBng{#d3OZ7* zg2Y9ljfwA&Pv|Sr{8q~?5V!=!egX!5MK48bzX+u{6WM;IK3BcW<*J>T1Us!1SAuFK zgeo}RPv#UDav~I%r#xoxwxF!$G_&0JX(e zFyF0sMWYp-3>KoJ%(1PwnmG{M0%HvmOToSfUFp-}WqDM-A`7v7ZjYNq>!7^&QW~8j zMq}ccq2JUKbaTvpmWmeY640zgpHj`dDl4N3wg&Tp*W_kV&0LA9T#WHw=Blq`6ZuFm zN9ACmQ62A-*A!2S*X3X3-_W^MGfibPykxQ`Scx|f_6GZc991A!h#b`XHuQ93QMSLR zOJxhh2>ZJ{L+7Y{;%f1k`cjQoPl&(BINtDZ+d#=qN1017J7SOfo{ZM*=3HWDTOwMBVTAD%E#UtopIlCyMUu@5gO z)CP2}9xATVg?fm3SYD`Gqm#NsUTZPL-k{g(4SJQn1U~98|!Dgi#f}J$PkrT5-Oyp@DbyDg! zkq^yF=BT;V{LS2EzA#^b@&j`N`iM*9ekihxfEFd(3l;6evCx{U}#2L7ix0yI>M#~alI2s=NR983$m zCp=?j;2HZx!8Mo-T_Uv}tZoc$2v!A)Re7}hCg@~t4X%*ug7rcC3Uenq-n)b8 za!ar+co63u$l!iCT|SEV?f?#l^K>+rVd5j)-uMLLz~`6;4^iJ>c%3enps!e>xE;a1 z-7L288^jHwl;ZIaj&#Zu0yC80N(|^Ps1+E9h|7};;;IkK^E^aUQP;{v5V#OcXbCPj z-$QROU0$LtMf^rze>SAU`aJ!Feu`e+ixg z>A%bhsRI*q)+^-Yda+s%tdJLC|IwTltOahienM14+TF`Y9aqS~0Up31qZABJlWnRK z#vMST*YGmj*{mDtLnM!jf#QBi2}aywl`|pmQaQHx{>fkp!9dCvUHSKZ(ohi`?G5Sp zW4Hx#HJAj3J|YfU20X?AdGm4OSI`7AMugEp71_Ca77E>u8b; zII-Y(@J7>c*6u_-X3A3l6>pZs5B@yd-J|ph2ys6|*3ijU!cgwLNOOk9BSW%IZJZer$2vc3T+LJ6 z!5B51We4Lm=On465~BO~B!CEqUI7uzCKW!FgOxY66U3vvpqYYpHp2#YvPY*8p7&xKAl(T3nDG=2>yFMT_e-i$L$kDN#0K6=rnxu*TX|`R zjTj952<$TDKLtvLb1c^lyh&UoPC+a1yu#Vt2~O38Zyc^f&)ZM-d13S}?-Y#PB=~O0 zP1p`9?j^mCGKupNU4FJK7szQRm1CmK!wE=C-0SC9fM1Mk78(5ZVr+QK} zYp-PSd6jJqt5MRSipTpU%go?tJqK{kFb+WHa&G60;^L0c9i4S4(izVc(5r%n;J6OB z54a789mF*cL%M-s2tY`mG8w9xy#$*TgVWtcZHmxo*xi78KPF}L_F3XRYZmqij@I$9 zAasI*xWmI3(~e>;{%nzQa=bAFxHo-El5DkdKG5^+*|T}^NuapjzRzdQ#EWs!@ZV!i zpgLc@$6xZ$wJ>DaBM+?q`L-H8=my&r`IJ9TvHYP;(q!K3JkyJOt0KWo$;T+JD*}Kw z5K$l8YNS_--;!SBWZVvTU@M+)$_H?_R2&%o(^HS;*OcqPp#kJR8w2zKX58Ufd;Di_x&B zql{J?U^p+qLy2FFlBb@WeS&lm_6N?^ z?6}ecXSF_f*K_HO9*o;13_O;kAZ)dGTC-?X>wG=Q@=)$_$W7ZfgkfKol=YE&M>YRT6JMq{U#R9J1(zL}-t&PC;=s+B!t z$v{Q%MVwQCqwi7Gb?>#F)X%4rz3 z&>ht3Xl%o<{+QKCL1el~yoypW#@!vKA?}>_lVth%41h|!4_ekE!v=Rs9yvlVJSL-2 zzs71eb}77vXA-#B`o)&?7Y{_Wa1&AYW+4_2wTa>I`DBQ;H4AH;@k`Qvv{OU)RVp|+ z?&z5D-oHg#sfamq5$52~>Xl|;tMaVdUy^0}C2IaFmZZh2K3Vm>_C61eZ45y@^5I_jZggE%*mBqU3Spy4@`vbfcKD_ISM*^05VyIa zH4Va+(e{SnXY~19QKRrWDSwU{Hwp8j8BM}#OZ_B1qasnFNq9DLsL%}miks3j98+OL zv4Z~;{{+FSO~aw#&x{Ip#G50Car(TA?85(H(_x8oaMGk;gfn<* zCxH-BlWrPfslgb~I6Cy~z!82fN#Y3I*$H#voGLD!8jUHq$cpxSo|8SqhZKOLm&-I$ zJUU!$2l7dm^62O?8P<&6m0@P|cNvz89zd*2WpI-K27FwGP2d`nqR(a6ysiV5JborW z6rV|M(c_)M>ZM#UKjZAXM)Y&1uqGZ1L{&S7ZKg7p&u}*ye*?mi zXP;&r66(($ODKb*cN`8vSbD5dGG|cQoSQqeKRSV_lxKw)clX5;xN~LPcCW0sIYOox zBh;T$SVATVNAEcZ!`nijo>Uz3Z_;^AVkS9!@$|s5ct$7ErFcvio{GB+Y%Z22rAnwK z;V+5Yh-KVyRZc>9c37Lg6XZa?CY}Bi%zvX1#Y!PoVt((^h_lLZ@){6q@=I zyes5Q{z+2sr%4FU9_uT?K|BYupp0qC;R*i$yMr<{%@ri>IQ)@PrYVQ_Ri2VivdRf} zTBPSqD<8vKPRDHCeBa5-IcBw=rX1GkBBG+sVYSLk`08OSM@4Hphs|PdT6Qnc(HxS| z-+_zIN(wqAKSmZG?rUcdyQ?rzp>(Y(_akiZ| zY?dS;*k|H}`ZHDWamUUh#W~Sl71qxO($&)6Y~0Iru#bWBc()i0#5ji0O2ty5 z&!7WWY3@+|=;V5Gf2Oz(TucQvtl(IMV6EavV3oK_IFvt-HfNaJ=M2S>GZ*tEGrd!lr5Cz^i=Wf)9{4a<_y?G}JL-wul- zD`l`f9>QBz+=xn#yEKnJcx>wIE0^4XQ8H#b02_fshw^8ax=uPlE|pH{#Jem? z!X3urPv-QhbK$)*B5KhiybPBi(QRYGM$yYX!mOxC_wYP*wT`xT3kTxDv;`J8Yb7p{ ztue$r(Ic$ZGj$hYl)Vbi!F}4X4vHS>5uRo*;qb?ukYlaYITTlx!!AIjN_Fcdt4OB-ndoscCYYE zyaF4Y(mTwCMWZu&hqLUhVDhq{7vZ=dY3Yk_rp+CUX9iOFI8#qaa`@oriDxVYXFMg> zQ}cXr^hRztqKEVSi^auBrgT=4-3yFAGEGVz35#arh1Dl;H7RZ`c&wu%72dE<*4QCM ztmC$k;=@!$x~VWt0<`J!rm6(KPuC}mwVw(Daw}%CvhTGV37LW)wi2uyJHEy}Y7AJ@ zMI2OPAdZ)NE_k}sl_=p3Pux_{lgC{)J|zbM`xG*Ea-YIu97p?VY;$w`dkaroKR1j9l^fedl=@&LDdwx>T1}steb-!?a+q)4OWkdGi0hlAAuXxzmIVYexZ4L#1dp4nFn4rf)+WVl z!r5iwsP2Y=oeW|&VRNZNI1{rLc+zjed-o|$(s({%k$<|-%~s52%eE<*0m(PX%}6;$ z##2J@*G<4TWAh56R3W{iU7N&u8vOsssS(GCbwWaPk(S)0$mlS{jj=Qi!y_^0+aob! zu#ujDs(3zP7&<1gp2m01=R5n;2T14yx@J7a3U}Rsi(5%afuwPpgPxqB^C}1BaSVLG z9~}o51cH>fDgeqmq06qfMKKF9^|g3UK_)Jk=-^IOfkmIm>EJ-2CG+U9kPjcAthtC$ zUV+F(ic;cz0d$N+u?ryB1!Cr6BP&Ic)dkYb#ZFESa~RSUSZbyzk93ZjILgC2GnS%I z%%%VPJE%n9FBTv=s0uAB00>UNK}FU>_J4zg#XQ7vtmAmr5wu>GWwZxB5)zvVq+>3& z{dELep%p_Qg*cIPoI>m!lQ^<7BW{Iwwa#Vev-CU;o65>9VeZs(P%jT0aR_H1vmdKcdUqcRcsW8?)bR! z)-%E|>OVNlYVD+WSsjT@TAP%qz<5VHXI|ZEZ6g&kj znXRM9#G|e_l;=%JCC+E;jJk`Hr2=P)J)*bVbQXKweadd)sC5`k|#9y;%5@2yNEOYob z8~eL>11r-A@s@a7yo2+*;yv-c_`u@$aQGv;Dr_=|*L#lnsQ5HG+5~GVeqIdtLVTHw ze`P;Q{Ehfl{6l;P*!RUWSb3~C&i4yk_!m}v#S&$Bci?OJGv2fLRs1HnBEt#syGURm z2nj4HxMPV?dt?gfiU5?szRCk_Z>@o2q(&Xb;@K@rQVcMww_$*Jhhl8t+3kK%;EmBT zxXk=oma|mlF_$dF?F+y9a>>`TD#*o)pqo!SGi<7x?w`tzAT?#l@-rHz>Cq*abdma zn+bR~>5Oq<-y}tJWL(%nei?l?E*y{qRp6igow0C#PaTQkf4Q<>B_4;o zV&?^rc{EooaCCWaoqo(uctALy`JjZup$}|Ocq;Fb$UoJfoNpuVe;*DV^&e+`vu5Tl zl*~N(-^m;W$Gk0lEOw%=61!27lS@7)__NIaw@U7;o}D%k@R^q|JNt|(@sfpgkGB3l zTKZ3G`D^PhuC&Xc!#9fcT%xR;-Cpg~!;#gTUeSME&HMlxJF)-D$!KbCY-ZmW|7<@g zdn``%KbHN8^qT&kH#SS_nuqCo)TrmE-mI`8my(JK z5V6z6BkC?_Lm%MAYy5QoID)50g^pdguRIkYr{HSCQ9|A{4HSR&p?_$7HG0VPV^yke1rV3Fzc=S0cjt zrj;ng@2TC{@uwHi^Rs~QbdxxSKQ18!jIgS#DK6p3|5119rTBe~{R@-XboIQ2kYD`& zsC-;5_rEURe^)$f|HcqASbBf+1XJa=2J>$#7cSn)J_V z=fBh53mYuo#qC4}ul&1d3kY}|@#)HwqcMRDPJ4p9_GEKg0dMeyO`WA(K4f`Ucuyi( zv98gDg}B$3ZcoQj(w-FHLb^)n&fYm7o>_Q*DbB(gEy<3PuQ?BaIeoiY1IKgVRAsuf z%PKu{UmD_5S)C*Aa}34DckQ*FOAf{YfiA2m#xtkr#;Re}hN;CGrU9G!e-lahkA4&^ zs)K(xp2L?yeYi`$uT%Y^!?0g;!C|)A1pmA5F)iU+sSMa-wlb~F>g{3mf;NV4rM5lE z`A#vu>!qwY#e#e`RV}@{y*f=4MfHD;RZ%wwQBC}HG@h<68B+SX7hJto4(CLNvp|<5wQx z%0d;evQU;#*e2lh>+M+CcpBEz46u@JDSR!h2xItNSQu*>ZmC>@wZ3=CCAf4q_$J;Q zd==ZmmX>giZz{`)8h(f}bu&WZMz%EggUCF@1xA@^B45q~R>;|W;aE=KXGA9< zGDXzF3pp_?<8_{Bht-v8fkensxShTP?@;i1JSLZkGI+S$7Xy_*r#Mj7urxQ}PuuI! zzpNFHU|Cloi{x>gi8X9*!zd(V9x|;U`>WBGmZ`CFk9ia&&qMu;67fvjIu{Zvz=D;e zdqihEeIARljFK(z1-%29!_1Tu04c=y{;+;Y3B*SM*4A8R#>p*Mmvt;sMNsKs^9{~3 zxVI|Tp;y^EuwXpEtscM`orQ+sn-2f$Q3cEBB{mt-TG!}&8>+Pdt zJ!l^TT*%`RPwrut&iGPe8QCYuM0to?fDA{&lD8t0bx^S*mipSKZ6nFl$G8HrB>!ls;OGwV_5gXHAl(#d2pr}npGBjwIkNen}8Q9x`K4H z{1xc2a<{4^XF#c0SeqzQa*4Yv+W-e5^%lOh$`$ooX;(ww31rtBr5y#C+jIaW1eQFV zp(?|^Uo)^%Q1N3jt2P?VBe z2b>#0iF_z91L}=M+xY+-OR&>AZ(|+Kch&3quR4bGHz@rlC{!&}(mjY@hHCsej?#V$ z0b@}wRdBo>T`J4{3zRwy)pA1Bgz%|)n0y?RH9_?t`m(bDnWxvFpQ{Y7X^VX(mIIs# z{wz61vp1=MR3==vCu~7PPc+qMRXh z5o|hBPQ@~y=>NCs-B>GemfnkURFDUBZ#b4~*N3rgxJC!EU)Pe4!#aIr9n;b@gsVQK zyPDUa+;jSQ-4d{uu)On3tkzl++0$0}FnfO!lW&2hujwJ*)9*v2=CDB@*;=*%euiA7 zr^&21y4jg1#}M>q)ND?`Z-e$k1F9u+fy={a#?tP^o%~rSGrm{>=7A`|6evMg9R?*T zLq8fW;iZB9OO( zuA-@cMIXnZ(d{?vGbY1_W?})zAIvm#UK0?lRyDQa=nQ5e!SN5veuJ?z z7OAd@0i%ztqkPyQvv|Ph1)2)-3R4T?WWM|dvZT*6zyiQsK-WYJhN)*_&03BZdGMK; zGKK+%_U(Y#Kmo>!Q^9wa87v!MrANUJDCR-r7SxoGJ+Vw{6*Rer&0MTL$-bRd*n@?9 z_nM}`esjPy2L2$*)iD?eC0>D=M_}{`;G`N2(a?^X6=)gnK^=DFG&|(Vx1lCw4Uh|h z4^4r*2x{DAK7+FHI6i97Q+^GT_JLW9{2qg50ZL3gcbMzNslnZ50xmfE!`O}G8K}EF zP~~C$;0z2xnL$HjGZxEO(se5Y*9Mj07xRFx8Pp6W;XD(|=W;Nc4J9_4>>v*Kv1UBF&!9ITGvT)|AkK4Szo0+X z(wqn-#zFO&P~u#yFI>S+Sz?gI!R(yi++ZZm_2GswIStd8NtoCO%nBw4^q~B>oQLe` zTxCEM!2h#kVbDb`g%a&m4=5&NXO#;)JI)^HKB;CIc_nDZ${VplXAe0TLw6sv7Sh}b zug6f0&t|ShwxnJYoP*e4_;2oEMjE})LKAi3J^2nZM;@$3gf6F&qo6b)^(okdQZ*m;xzZ^P?#B7M7p^IP|0a2yZRAj?pw!FOxxWYb_ zn~AG{KA`6}mb=KVz_Pn7vh(5wcK)N0YKqYl^BlZFIs#7C231TSJE6*8Xv%{8EUetg zcWf%lIO;?91ZV_Myb9nHu>e;A{gExmpcIFTnJCF5C{+QI(9y+a%|kizP_E|a3`&NGH3NtDgnk&nvOt4Q39_7G)c|R!TVXmgShU6Q zI0`dNV2*^2{9ITH{x2Y66v#L#l{JspdgN?)H{i4eFW8IBcsU>a{z7CiQ(lBrE!bjo z(iSsei)LmFtk=gnYNow_%Yvi2dGU?rCQRzE01oEGBdw#dnqv5L2--v(`c6PkoDWc3 zPrz|8%;rp+C$|}11<)2nxC+RVTAd~SfpvE2sI*2|MQhxOnP5eAz>L(&R8_fVqZa76 z7h)Z9gATZk?TUH^W$;1e?b^+Yzr;63D&xcF15|vOd|i!~1J!=L55`$4w(5@RdNVNi z7*_#{F$%82lK8pG;5y(%orfW(F9a>YXUhW&SsO6_zXwBh;-pYZmJJe#V>-VCroTjX+Y8U!p)B9UPdiA?OTV^0tLWj6?(E0-$|#iM70x}eLG^(}Qu zPIUQlyoK8y&{5z@Bn12-k2I6f@9Q)xhkPm{iziY2pvz#1fohMZKB4G<9Ux z1kK@;PbP&ul{^=S-kLXhNYmF=7CyCRg|h&O1bwmq7eR@H#3uwaR+IfW$(cy704`KO zfu@N>+^3W0@s^;DEiFOwAf}O;k!0iTo^z*i-GrYlyx4wraK?PsVdT>~NqMvd?DrI41njgB##M&m)~{ zFMBu)vg#_}+eYML)xBk@d2f}~MrZ;b`Eq9-UDXM}Ub>}pBk|&(c9Oys+*jT8kg82t zNOGQ;&svKo=$agfQ$k&=9xiN#*>&$n09OE!zS>fhlPniq^W^XeU|kJW?qRFXd1i`= zR!$`Pn=w4q#r;K|T__I}Z|%6$1l#SoYO9HEkKX1fd9DEqvD(;P9DE)!ybbBoMSl^M z-y1fl1NCtaCy`*y^v3mIB5^DBb=Zf>15vv^cY-~c zkFJ^2TdgxN#!wg7l-m&k*NWpr-(s?k@)lvL5kBpcNOS>{yQ|YU=p~!NBRH_I{k^4K z`$M(a4x}S+tc3ycOkjB#;@cl@>I_J$@(Ji$o#NwV}qYsYIk8bVpDK?#i!{f(Va)}D&yl-s%La?rSiQiiRi*9 zlRLJLY^m6`n2rX$AJ#nwRG_439gRdv<2y7i#WuuPx~sbSca`I)c=R0%{iQta2HAo| z>yCz*Rh$|JOby)mp>upBKaOsH4)3wkG19F@IkbDaHn{JA??LspwMQ>?4p9j=jToEO5ggYQeHLq)^tSDJ*KOQ?mrsV?v+UJ&Kuc%Pv}I^1*oD6 zkEou(PPhhpLK@t4P*?zJ_LE`tFK ziG-`?NwNxRB-M5CiYAeua-X0EMiz76m3`c{{1)HmXbF0JW;_+VhZEv_*yD0ZYD3B@ z{fl7^!%?-aw$q4c^o?QVb7*`|?u(w3f)fXy-k6J}ApH?%^>`y_r`pWcf_#OdwY7fqL(`z zz4wu`xhy)XSYWCP+Nyh5sH>nylf@x}3;S?uD%G8pRB5DqUPtvyRj)a0yj9QDMXDB< zeJ<{wI7vdH8^whQdlEw2|1TJ$Svv+5aW$3vS0HG522uS@VYBG)j*u7L(b!F4gXqML zFcUY(x|-<0-C_2a{URjVa2HRrm$7?!TNA9Vdq6#w}jX3`uc9Xz8#%)81Ku(H-ryGm);kSit5}O zezj}Rrf@-pXxq;4#t1|Wc8%Q?J|v?PyTiXk2X=*7%zHcv5hZrwW#<)eS*vce?%uFX z1llvBFZW{6$=7#=xx_Y!-rEz7A*@p|M~CR^J>igDfc=_5ag`p!l160@g*j2Z9bmoV zwJ;+ZdEnK@3{~?%%QLhIqx`#Ous!GR>asF$s=KHYxt=C z5sY7GP>@tTntfxKb&BgA*@k$Nt_#{#yj$9bxs_t_O0xda9?P z+f0zrgExm&E7F~PU%;Lz+J+*dFT;l{QGToXzxIZ$sO!;3!yeH)H;4VGQN^hIb78OO zjw4Vo4r^9qO-{0+=>JAWPdpo5ox*3Zxle*x&!E6PkAz2}jjx53GpR}=cyP4!Y5dvv zBojhz?Q$o}yo9!^TGG&Uqn6L01`a$GW*{Gq3(?TKP`UTt3424&KGA_^u+$VxOoNtU zmhkVW?o;^t^qtQ^+8xh?Rjc>J?MgR{yB@$@-QZ<|5B^tMR|3$)wY9lqSOjF(%mjh3 z?>OMT00}#ag5tgh2#bUSlb|Rn)z+>qW2@d)pEWLBwMw-%uP$|Y#T|ExTC3Got+v&! z*7{fd&zZ>p_PtRunY)~OmhYTqO&_3lWxP+!uF1M-T}t$~qz(_r$DG%xMU z(XX$=7r@qh15AANs?tNB=2%n@72}{ZfymOKt&k}+1eW0)O1uq)8j#jj9l5R!Ooq(J z(Hhxr?@fz0!S@LF{1SW@Er#wl?`r_%yeq)Qw~!RNIpm_gdm+t|Cr(Mk$v{b-qL3yY zlGtcD18k4ssFLCFKDzV)@1c%#7F)~m$O^(TJpLDDP<9Xy#0|fHlEz^Xuq=J&JUD5~ zIZ)()#SkQWZUn*JX@QE5z6OCv3w+5ISijp+_})sC0XHn+cc)?7$xVbc)YaSo^iF*p z`qiF*=+$ykxfDU2^9vw+_9^%Rw^Oa)RWK*`ol=g%nr*F0wtL64TPjXSdWc4lif=oq z>>e+XfBFn3eid1stgowzSw~}Jc58$tb#_E^JAcra{d{P;Pvz= z1LdyphY<6CKQH*B2TmcZzlA6;_CBB-!WlzL{!&KzWI?TT7oD%MDJJHY1L6Gco5$w0%oN^rXxvX>*ZxPXyix7$agfe*6#z6(X3=s=& zo>xwT??{w%gIJ?y&VcOI7nH@3cqaipQ_ehbhgJ4Mq=G?(E`jC{0`VHbDjgVR@a8BY zN`-OWBN5{aViFsnk9DMiQhMwJ!{A`(jdcB4Wgx7-uzi4|J?M1MZ zZvg8NEo;chp&>c%ba&upD4e}v+H6yHkCgL5910I)4P8mnlO(OUK%_tISGt!XNmPCZ zNl6YQiQO@(jDYRcr%$CV5!{)0b_i)JL>dZT<#-@VBbh~i6^!`9Rq&N>k1M7DK~~ix3JrB>L-1=+e$7@bllgr|U04znIHPZ&o&9*G`B*{n8n2N>&u6 zvwlTkkh`XiXq^VFB`UJrutc7*JLpPwljd-&R{;_+oqd))tickr8-hi)85}m_sN_7+ba2i}WiK;@-;31V@50p%b6Id?UM=CM2ONKRgbd(@x9rlxIJ4z(1 zI7-Kh%VrrgvS?VTf#D_4V2J&nk~uIdDeYM{At0lu{UuS6mUQHF+KQ62B;|<`Ca^?e zkFJN_y(J?`Vt4idyeBM~RW^`JA5sg5&fRg!p8<)#mjnz+8T5m%A#S%ESNelBa9HYd zLK%{bEXoQ%9ZL*J;{4NVz-r6BRI2^t;UEY=Z(xENuPB3P%zmXmFzG?bJMABz%m-vLwMF;M|n+-?}x%|y^fSfs*$o1td(jy_C6t5@^fVa z-7!NEQ!O7?mUS(X-mi6Kdw@15Zsv7Vdh^d+n>-LstyP-(TAbub^f`!&0C&DLtR%#$zj=$-9sZ@=MMjV4^9w#mf| zP2RyOi3iQy!4{AZD(qkf5uTpd!K#}C+m`8ay8+NIB3?77ylu#%1)NkG|SD}6}|IWAwNSN;&CXH6PSBOwgYs>PBx~vwX<69aSPL%6l?B z{VCfm(4jANhYGzb>0h6+$;3(rG_pNtww+D&PDh1181UB87wl|b?-8BLM$sd7Hk4eyYBTu`)B5ET(~(2#-aN zVaCEH+9+l?lgCVe-@2c}6fhM`8EnE8GP9U+rkd%}2v3gbnM!7o{n#FMoJ&ScaWkVJ zWYz>h)6BRK^5Vp1#+8r-aB?Hg?zzqIoSCyw)HBmMyH1~6sw=Cpn&BmEely%JBX8Pu z2if4h!!@9Y@tmpY-Cq}z!ryZFnefo3(Jv%^jHf!EYe{B zrVY&4;fTyvT2a6L%WWFw27T!en;yda0!@-M69=cHPmIz{)=YM|t=Q%fy?KZY^LGJg z0VC}WM%*ZSn4JJSC%*Aqclz`DtQTE*m>o@e(H{=86=Vn zs-|Qe-1y>;vc6;y)gEQ@$tsD0?I=4e_kFP)fD>UNqn>Q-T zC0qs^*+qLDWAl2PgkJ4fB4?qw?DgaV^*RoS+kT8q3nsUpY4<}XZz1=v-7%u1o>5#d z{rxzbN@8iu33ehGOrJl&jv*uHIKvmMW}8Gr2f#T(_lKY%9Bu^CtSZm5uS-ChO68EA4rb4JDsYzgJ=Jwd^EdJ%HSPVU6KBK4olD|#XG(O!ylnR`VVa<8OyXV`{d zm~<2nn>#7JgMO(*zpgWV>wnR&chG;Xoqkh0{rO}A?0T`R`zAC67!^SqNY(FfE?s1S zx6_ofY!ulmHiY}Rb!XYYkfWO;lh9Y?M#nmVNzrQGaF!iHy8pI0KBu8fUuUg08Qb;u z8+AUut(XH{;|lIK#tHW+>K1-1)GrAZgq0YpnHFR=Yc5!Eeb1MNF5 z07l7iI=_t#_l79mJ{2>U=+-tintVeqw6O=tI{M~CHphPBBAY<$eJ-;{2z9=~s)@}W zd4<(6?)@Ml!BboV>5^~Q#G20wn&EjE#ovw1@Bpmhw??(P8J>$#7@Z)P1rS96R0k48 z`q*Zs8&M>TX@&<*ouekHW8>@0`f`0md}MN2ZFMs|P)fK-%}fv>-O8F_L!06yC}9&sIZn{@%o3wwd38m_R717JilNi(@e~Z5?lHiV zJMrkJ7c{_>C-J^N0(-*x=i?#BwD(RkGVS9F0{If3%mP7+y!*0r{u4ITza|rT_8XTe zgheznEb%teZBJMgM6_d1*wm(jba0K|g}9{WH#4ckrTb8kL~p_@ z$%namOW7A1IHIB~5mDvM%s@hxQY_VwZ1J>p^0fYulsm7ZD322kGo!|81ZJ2<@EU|E)Tpxj`5!K$0#n2 zd`!DXa|6hJS{%&R|AY4U;HZ8?2gPt< zp6iHnpQ2{QMx6W6${6ku#9A0Dg@n=-vD|f+!N@vY;Ki}@^*C-G#9Og;Jk5;f-XN9I zm5I71aH|N!P@IYGC2>laT3Qo0eOT`1UZbk?>gw7$gT7W)in?P`SWZh4xev(tj-CM@ z{DV;!@)1o-;#R|~(oR0$;D0qbWM`8>Z}0_ex}ID-*=Aqdle^^?-~?d5OI&7*eM7w* zpn9LUt)Ppv+~}VBCxu5uHZy+^mqLKX1L6`kyqWovxcI`=L*n8Er@x4c3n1(fVg4FU zk7aQ|f$`z$_+}Say)cVQ;7o|(N+H!{a)E&gqF6B$iWs7pTLfnp0%3MqCdUq}oClZi z@srZoaPC4Blkx096qeDjLx{)E8BpLw6t$z_3=e%|V1ID@arW(*+>g%cUBl3Oz$?GY z1qob;TaA-8%Az+^B%v?5-l3o8a3e^6>YK}5caH^Ig6|~IzjC=$Qb-f?04)`COdc27 zZP$>f3Z22CkFM2Qt4x6R0mLJczM97cDVC1wMMsR_0_?lW9Xl>TN0ce_k)SU8Q> ztqwAGXwR7-X1TWISXuDI(N!aO$uV0D%-Z;haZja<*b zD@0L@Nc);7LiBLHN)&N)StF;4`ks*2ra;LZLgvqb^IbyL7Q^`mLf&eG^N)mVX`&Y! zxhSg1;W+xZk@N5%zY&r&0cwA@C(h+og?q*f4UYok!aofa1dioxT8&Mkg^(8+VK&VY zU!Zw1ar&bI&OHfnb;^b}JRx3KkYZP^gOk8*dE(UvCZiPMH6R;fznAl{W~LYMd_afo<_5V_m^20w z&t+8D&86_8OCqeg%2g1Jb4ZuWA~7!KkuH6tcLk)2AIvyINEZf9@VTxh^q1XScIMkK z1&<-_uLI$+#N7a=am0OiLHO{Zi19fkkp;sGMn&do3xJu)#C1!ky#ogZ|_~l|k`Fldj%s zGE^IDBFbtT63TSOr1EM@na*5J4c@9A6XQy&jY&GA(PWJhUt@Ho7Nf3KA661xRu)xO zW~eTWE-N$DSuN0C2Y;sMY9o--M*=xrOqr>+PFH4)6VKM9Ua7I=7OT!|t*;BKqzOK% zV6TK~qqQQ*QeRO~-9YnwRI&6$eEHK`)tgJO=qmI{7OT11SQ%bd7iTn;&qm@k^m89o z7`@@63h&xp7ExE%Ko!0!z@D$FhkpY2y4jjkr?XaBqAUiTrHan*Rb~21?>pDhBfhF6 zzmAa{IseUK!|C)}em-AY9E+dn&YC;Hf!Rw7VFenU0t2ttR-&4PeZFHaX|@JO&V=xRFNZ zZPi!mjauS=oA&Ij>K3yJi(|1E1&7Zr*{~oH3qZ3qx=QRGu$|WQRz=31Q< zK4kE!#1j-++Y3ETBGH&E=&U!+1UAhQ-&jy>&;u*`ut6+d*8-5BMT15ZHOpkIs0JN5 z_Y-@>!L{S%54wfngHlQj-}-dmO=*@s6@u zQ@NISb`^&&FaoaY%Yd5yY>l=lGb=kc4^&WKwDwBXI#oHu!|T4iwN4i76J4mQEiKo< zClBhyp&|=)b7li}-WD|xRj6-3EHFA`H5#tKYoKOKYfDf>B+;A9grXFCZb($|CEuyG&y4Gp3L(G_>IeC zO$DMz#o`b;M3Y-AjuKrgE{|Z)CXwf2b2Z=z*oFoMX&fkm{2jZvR7((v6^rx@0Ce)Y z$hufi0hbz4kMZJlHCh{_ONAy)ngp@T;IO98RMA2bCD0lu?UhblQI7zdE}x6kN9v5_ zrdpuB9(jx(S#Pvf*W#)UJ^<9m;Uy6zdf?DWkd<44S#~wHz~MDPQ6*N09MED7(uggw zmQMw+K$n2C)G$C5oON52Hman)6h(EPBytm7B2H59nMl!DV@qb&T6LwO%j-mamCOd+ z00co!g&#dJKo!#T9gY_}N^h>MHddIx(bKSH!YH%OXfZha#?MUzbG)NabQ|BL;*fDt zndmltNl434Vgm3G-+rRr;xG|((DLpsN+gy5p(ZWq+Oxd`JrxSi_cyxsV_Txcm9o=S5|x%W3#nGQ{ewkXPBlL@^$IT-gRVu z(BB`@L4#F2`p5xR;H_UTta|*b$0YCH(oa{}?%lH49MMwX*Uz*2+za)7c;(5v2~Wn& z{hg9DRb($I*a*BW=-U@&#lJq=;Qr;`#a~%2Ku5_H1wLurzSb2p7HS^kWnNzS?xa@w z&0tjoJ)5Oc(TGe{$dqWw#|8e2Y-T<;WWUdg-_!CU^DE13w$#pZmK2l)KJKZroxI=s z=0`rmcm84R8)UP^wIfd8eV@$tn`GF2@@>W0@AAj(d5%uYRz);*nz{r&@~gba@4pH5 zTG8Dr*X>5_ZJVvrbSLmNqdw5K-DT6){uJ-=)(fM00(~@?h%AAB=ytT|KaY-ozNhip zUoXuc6btGVVFC35U$0&}wROe%O4YRMI-YHxcZ{> zbWNHnB&4$=3jD6bH%I^H{=!ez{J2QlJKFh8nvtpM5!}fy1wOU)&EHQgdfdA#_Vu1e zroMEIHfpg6COTDm10*^EU$<4SX*uzAm;3qi9v1`$yhvZpSA{jj4#V&bSQq$^KUc-B z|K4kB=7`aI3eOaK17xJgBJd|ms)VEWwkBMt%V}U0CuZ7gQm7L6UUcS?uReU|(i8Kh zBZ*gxpFxe7N(ub7xucq5OF;B&%MwHC92)x&=w{jML zm(^ud+pYIrwwBKYw;Ki%OqC8yKfUpLcGLL`*8xpie?9cqxry{Attzw_k`jTx_ec7u z!_})-+)y;{9jucw*rwWMpTGL0)Kt6 zZT0(c+>YdBEo-$QGu>!<2H5*{GlfYKXtwp84N;+87nXFM|NFv?fW=& zsQ3B%adpCi6zJHVUkLnyHpAtQH!eAFZQY?E+Hq-3bSl_@i!QFiEJolDR637;_}+wF zJKg%WWxiEcNgrjZf{NR7eu3ZalcN~FujX+@)|BYEZ)Uv*DwAhlfuENAl5N6gRc}7D zeg6LVYcKOQ8|GF5pK?8Qbz$1S;_`Nc&bB-K{g~d(QuXK$Ax=@gd~_!!SAE#)r@@9bDW?*^quW;o0$-3e(K#_WD9(AT zd3t!)=Pv{2kfTE&GXG0$iApt2_51O$;=TYAf@87J4RUc%*Q(Wjzy3@5qW4ePz2;m! z6-&qFsDg(`*$OyS>E_kX9ltqoMoYi9zWr&zi(n)S)BxD}Nh7Cz(X!y$XO&+c`=ljc z0}KZfy1>u!)tF>&2GPEul%D>dvoO8&3m7t!?RRDN->#+NpHfEmp3Nfb^G^}gJI`_ z1}~s%vQ;5L?Fl^0OFeHGDswZcKi^f;aPp7If6>Y;Rq%*dIkOP>%7+WrbRTaSbIIF( z`tBWf5Yp|*yujBspIqryvU1v@K2A3`Sh_t0oxnm?;NLoMdikE*m|y#T`||tu4mO{m zhjUaRedQ&Sz<*b3c)N7hz}D8(V~v)?^zR@fW*I6Bx=PUVKlrJFKJw^LM85u!{;iZT@;$`sv*az4+sU;8z)&&$;N{_*}kzUT4Sv(I|2wbx#I z?X`cNb6&GxQToG6(sMG}W=}1<@w)75C*M46X6e-IveIjBydk@^Y{tx6ZvK1eEoC>) zESWv+mZ>E-Usqao^Q4^YX)|WN(&F^em~{~m5mzBKMzW~r9XpHWzADu=&~$7 zuy0v<;J#&-i)+@@EL&-`jfPkjl0b?Ig+k4cH%H<;2`QTLrrBw9_6j4N+O#kdX+U#v zL5I#tf=doSN=D)rmrOzGgET&n_jGPl3BN9Y|ZA7D!zlFJ{+SaM|+2VYh>lWOm@!s(8=744k=BoVmK;`nH zggZcSZ5tIjFA(?Kv%pvt8}l&`5-9cPKV z*VMk&)NEOfviyocVqH%lU4T@+ruiF%LfjK5c{8o`y#Vr&P9a@`v>%DhS%6d;DEn7R zf-C}xU-EsR>P??057fMwCjX`cI<8Gz({b%bLM&W!Vjb-J$C_u~Lk0J(seOND)2Kx# z$IdV)`)@{CV4p}_vt-+9Tij3CQE0`)PxH;B2b69ONq%)eiVAG~Jnh*XyG858pt$BR zE@%#~ht|}7p4Lb_yryYQfh`_cGx|VvqzD8;gEQ9*|M7Dn9+kDw$P0}4HN$HU3-MUM zKRIp9$e&+o97z5xF%bJ(WZ;?8iEFz2cB>Fi1kRjF6Hl(GI=#piOCBo}J~95W=^_Vz zD@1|zK8HpMF;t8v5@Ig0=7uO0O9Q?Oee}2?ZV}6ZO-+%}Nc@v)Uqh+UA~E=DlxS~= zieOr_*e}G>LG+q6NLyT#O0!O@tLug8*}%y+p-HB3HajwMimFtfC-Ol@7I)8Gi4c zD5Aw{)HG3K(5ih_WbkaVNQ|Z4*`h_TO9v6%gogLT+mYGgcM+W2Q}hrvyZZg0zn3sG z#rk0RRU$1)Y@mvXsON*=`iY`Mh>gA3`^I7uRrC~TVzcA@2RDmIS~4BAei&Ra zUCeDJwot}AQ7E8*Q^=n@~Stq|uN&#jRmVvty=$ z+Xl%-YDX*X7SqKi)chWi<>3_E1I~6@bB`z&eW~I@krEtvFB&X*2a6Yo3PYsOnSY41 z)@jhggYg&=+r~8a-43Kw%DGR>j5-f*xyl|?d7l_7&ZEYQpfraTErPdqQsp91CVB;Z z_lpz(H1`29Q+!G*9}u&}F3NZiUC|?0{-9`VwCoNgSx7uBy@F+dmkCzfowzWqeMlS- z*;Mhc$V|uvJO+v9eeUbesODkOk5-kS<5C|HiDEZpKLXWVY4IbXLVQly0kM@PKZ>4c z^C)6)51k2!3>hYSY4M|CsrZtz9us2|zJf9y{iag9kGa0!tB;ANg~+1OB(gR!5RM}ZW5w1)jT5>h%Uh?&x);z1n)T* zn$QI`u}5o=xV0TA@H~9eCD?R@XwI^}7vRn=1hR@I{!3i$XzNGE|0S-5Ska4)7;5N8 zPpuR~+qxRRb~PeTN3s;1MU7t)gXqPVL=T$7f113EKYQ>_?5CzLi-M>FkmSX<1yv6g zDG40VJ|v!*+1uYy;Y;X=S6>z_#6jBnGJJA~&b%yUM;!+D2BZ=yS&lBd{v{Dl&#V&5 z;JUm@gv0k-GK(Ip6g`rTKu%7y$oa*M??jb3W=il#rI=*U&1*y}dItlXX1xmAI?;+( z;k_Ry?=?{nT)RfJFrqS0rY%w_EpBh5(0!P#10!#arg?7}2!z++toBs)y2wLT`8tBL zeXwy5}dJ6>pGc}u*SEwd04O$Aqz6#~i%cz5tVYSx518?R zk!g{%Z9S&i?p5NjDSo1q^c<;~AeI||lT==3a@Hs9r10^4((BuwA`(cwn zy0da4yw~HBeI?at_@{_Vw_08Py+F}TDI$vYo)&}rTn7uaI2sDIMVg3oBT}CqLZO?G za(@hkUPkJB3|MU_wCF#f&`-aHLOoB0LhCu53WWlvL!rnsp-@MpX-J!qenqPJJrqj) zBNQ5pbnn?v=s_41iMn_;UzFGPZ97pN{z32ysB++y~$Rl_?%z+DF#0plnb zkHnJ)M-TTtPlt_zGrz*nr*<_WF@`g7yd+Wc^}qOag!9?P0`7U=FKXXPEj;(X_;=J=(dV(sp!^< zPE|AqF3YDWI?162Mzm5uf)Z%0XpR>y&_>ZbhM4v#+VyTat^7{-sqaCtA%>d?wv_80 zJabSiHH>UQ^LvTZ;H%$@g-x-S==UEn-4s28D^7{ArszeXGlJ;(-^JC9SbHBq`6(DB zv44ns(KlH1hsZFa`aviAKaH{ttRiQdi^%7e7|o(My!rJXN?Bz261E_CIQki8E1saG zR~Wty(*d*buJkz2JjPs6p1AKJUvoslEGn6Aq+H`F=!A%Ds!Fm#6SS`B7euX2Z}!kn zdgyY{aa7jNNb7kC-g1b!RXu>gz&+s7b3Jq^oosISj9zB~T?45}jlt#hUpH3 zFzX-{Zw`fCN7{l^3Y^Dre-TK(uuW1gsP}g0S2Q!($njS}`ctIOJ_?1pd>jfLM*0JZ zwYzO}+ZM#UrTgXkU&85l4;?xY&JTL%YfprzLyFPoS|1qEsL*v;@zEfL!LsGPIssj{W9HHs(AK1df*d8$#=Z8_fZt1S{c zyD1W%`!0k&*3k}$U(Q)Dgd*a?U{RV;EX0MhvK91RNV{7xDk+=GHKx6-j6%pg+uBGI zVgOaOF+w6QSmiS?+2;pK+8SdGifwO1GB3j@iW-PgT*Cm$>R{y1@b45k$#sAue&q zk&Z;O?#AH`MW~Ah$|#jzikwe~=}5fGW8P&!U$&7U#Aq7S19n_aWj%~E;|dY@q-8Qa z)5GYRFb1V~=fDfI)3}-*MsdQ}bKt_BMjq|yX~e@F5J{ugdm8N%t~y6f@*4Fry0#t% z9`_cnv>b6)AaOOk6ckfYFBrC*X7(~NkuB|IOc%?8jdP4NGwNy-RF3W~xuczIZf_$a z<{G8d5m?#Vz+DS1$TjkkO2AZkGZ_%qGezZ7k@KD^9f>=E zhd%SC0q2oa@8;2cjNQrC1Lk#=Mcs*Sx(G~oGnHob#ogq9kUXAVI?wTd&p?o8mP7gBPN|+5UuOG5@mZY*lMo~*{ zhr4gM6|g%<2T=CKMs~t&fLMeJu*x}9cCq10nCpRWr;3XWin;@^z|^ z#u++WAlp|_V3b77uVXbHYHSjBQuR>8%w2SHD8_p^6%0d|4WQ}6jIlIexX~W(58=JI zhw_F?PU&#tMAW@?N=gcitb_$1*;bzK*w%%#w9xRy{KJ((ZU*x1_tC*ZqdkorVMMkZ zz!*e%-^yOdMdHAZqOuW2N@t#>_{FiXNLK?otO!jXVf1T#KSbC7*2r<8hx7xqeuOdG zco18!6IN<)%q7Ov0z+WUNTWn74mK|`nhNny&^HRLqj{GaEoj`OX!avP|D{Gh(+G&b zyL~zazrEbJ92cI!+%ZO$5%UdE`%ofJeg3@2K+XQ=0Hb$k0WwhW9w5x(v z-eHVJ7P`YYN*(3+cj zMw|%tT3}q>$e~6z#j}fK5M$f$V_s_SzGik zPg@-B%c)?A(GS*^FEM;VJV(zi#n^tHa+YB=SwYpy;P@8=-PGAk75{R`7X^*#XeLwN ze;TW~lP27aaXPM*5g%;!lyP}G<0ZL|3f}v!@u(0l2h-j+nl?fOnVXH>QDRjvv>k@w z;x}U_LSuC>xD)emy_*Ym8QD>?oECm}sgV#^*GCnfaa7ZNw_k9M_ z#B0F?pR?)9X~h@lqUChv3&W3W?jB;-U#IM^F{!_b_tbHp(TUD}h0cG2{9hYWf)DOP%!oHx zq)4m{0z)*d3kJW12kp1elsKw6Wu?%J1I8$*t~!9#e>v?vfXxEVecu^bHk%X`$m^X& zk9=pO%YHg{ld@Yj^rz#X(3BrnTO z7-z+s{rsN;;zn`3$w(~rg@*C%He-7N?^PK;>cM>q|G|T&EBr?d=Qy^n zz#o(R&CC><*UXG;S*r)NY=KT!o_5`Olu+ffY{-G`zHCp^4ZifayDY;*Abmt-9k&BLDgnL&TDiI2THk*}qh zjjX7pnbo>8q<9a6*2tNs6KH}b7UA5>?V|wV6NRG+|&2|o;rRioaKH%Az4s&}_Sz9wJs#hKJ*|ug* zRE|pqYucLljCd8z&M=FRZOSlx7oP_%TjH*XtI#g)ymTZBiFb$Y){S|?K(|A}+j=~h z)!s}KG^T_3Lu+>UU?_E63o>F568GlCRMgSTz;U%Q(@bktprnw=ZW?OPC(DdfW0*ms z{=hZfj*jL9#&9E$KQXx%mo9{0K5~9BJpwd4;W8wi2|KEsEx5$dB}P&isuD$1-QD!r zTxyi8Jn2#tW)qRg7qc#-8WtW+zAos&%h^~T_3dPKjlBY5?%X!U2*j5pCvkzXfb(T> z$D%8#qLZ1`5jFlgvvU@ zgbC6F<65+$v)PwYyO^zLd`B}r?2>enW9N00*Tw7?H5m$>kSOnBX1ATZBCInik#~dxm^{xLlt?kn>pB+r)2!pw7XdlGav19d*n{( zJL4|R-L1=2`#Yn}{D}_-huikMIT}VM+@n+s28+AvUPsLWgVM9H$L-h!hm1De%oZ(^ z!Q`M?=qd0Ir_b(ltX|~wEWXnq!{-6VUk^IeV%&^iXg;K@8bH+`aaKf@L2Y^>KAiVa zfjWuIo(RH6si3Es+x9V_JTGuhvL%m$W|OH-x}qn#@d>BSC!IQRV(N&`TVs2fmp6)9 zsw8Iwr(a~FqgMZKhId6`b;o70U| z25wA~Y0gDvA~y7kFEagNHN_3Y?DmQhd^I?GAof%-Ye2h4j#YHB%Fdu!gUzA%o=4SS za|))O%!|z&WW^Voo5a5hcc$9A!Z@nTVUqfyr!67N%F2}FA@g|UC$gtoewjq-+?nVr3p7#CwzJfXR&xaiv8;-N50 ztfMu<%*wWJK@-=)G3VZ|a&O>vGo*&ya5<~)9F8TDE9ps#pErE`L9opNt0}k8%!9{f z7n%hLZ$lkVyOBuJaH=ju2d<){h31r)cf!mr8G%5kBL4`pB<5Xk>fLj6ggG6@fU%dD zr7`b=;~uEtxJ%4_3F}oQybX0KX+F}-OW2@bUOpYTbfoEz`2aAt&Vg!2nuFy2ou$|> zt{bbVpa`8;O>>LT7uB?~2!UKpyNk?>y1lkL*icNWtET3oFu7F+`;9W!h@Kmj0eY|L zYYs>FCdlx(b*%AShH|TD=Vdq(tfK7E=$KVBdbBwf*~-yS4c=(85Sj0Cv~aVx0xG-Q z94&igkUV&e{147J#uet}UhMHJ%&rL^o>P416=rtAmUH0dW6Ua?ad(cvi3P`}xGQ1M zN1UYu=Ur)z5-k^^1-vU^2fDsxtPz!r!*1*BRc3S&)9y)#y}&JANWO7q=AX0D0`pR% z>8^3+8{%W?S8SFT+YFj;pXg4pC#-1ttk}HWu7X!7S%9Q1!KDLDZ)%OumWOH|(O|M2y|-b_DI~~NP2b>mMSmIYdOE%d3g`5yw3Es zY)FhFWiK6_gaNXhnqFsS_W2TZuopS;zJ=FUcO%M;)U|L$kw~oND_6@R)P+wAxJq`= zb!HkFlTGKU)cD#6^l#OM+D$fFftfeiENk)&D&(p8KT-7VL^GA%8E!_?zRBj-wCV;k zzKJ_ye`^FcPccu6aCE;B{Ail_Onb3CSoWY<8=qW`k7syZNJh#+!aNdj^>KQ7s@-N7 zk3`1!)uREq1cmWg%Po5VAD*zj78^vz!dI%_q?n`meh;HO!u;LTt$6Xn9*`naqw{*SxDTE z+=qv#WCdEZkSf=p^Xf9+r?B(EL@OFl?FxkBLaKVvOhK0O0tW6vDtkc(7r%%l`N0G! zUb$8(Dyfv>*=wBadko#-|H24bNDXtkQtXQ+SEuU9<`TzVG`rSAs3p6e`g4Ksrohsa zCfB2>JmwB#qw*4N=Ju?V&Q+$MwJDVPlB^4@O~Kc)N?ww7D`OVFBx}yQ&|(8>Uy?4! zt2VRSEre3{%7VLqD>;I$o~GU(#SW*5XcJgf5=jHz)?0JvWpfaeDHG7P6dJe6Y?YvE zWNkmtf>pA1C0V`7OzHL`s&LzM4DUHG+^*%xb23s>BxhpO>lj#xaadPv+^c3vOs!_` zPqehME)d%4wz#ePS(83aXB_F;od|#dt7QkO+A2C*KDukQc>!vx*e$(TSt~QiY4VC5 z3=(?e6)7xjI-%9_3)Q|NZIYb-Xq;c&`q?SetOss%5Ev$SudAC`_}0Zq}q`8AspsZFS|09 z7H^W_@V|}2(^{mQ`Kxi5OKabj6)Rh6-j+kt?Urb2^RgZeWz}X*OljB%lku;lloAd- zba(SAIZ=8diRa5DRSh(DcNMCx^L5&LkQ?(Z4iDZj)L>{qoI|VVJ?Y=Y@5zo@vkyAP zJM9Y(UElk95Y1hWMQ7wI4cN5zeY2n3O7Nn=+cJG~aDcMc*YywD3pH#*<$7s@>kDtV zvPifw=R|4-4f#L@>DUkSfC~@Cy$(+XaQBTe3f*AlS|>8;m@p}AF`HkN*54x&9< zWjxhx)!hnC9>qGtPn8E$hsfk-A{qBgXwqV-GkmuF|bn+8!>tkoE zG|#Fi?U=D$E_7}&CsdRh)f%bBw_KP;?$EtiwiEsF%nrRTCuq>BG?l$B9%Dnq_>yxJ%O3IQ$yZ^dr<387$ z7Tz%!rzy1MbF=+lRUZ498A$*P*rZYGu!DccS*aB3 z|8N?K)P{JJcZk>RC!4wZNi470p@gS^DBg7QaSuNk`b2iRoI=Od=%W}XiVTWf8Mf=F zkt?S@J_mj++aJDtR?)liYjbqHZ{%=3XS}D-9A^rUTbWhgI6KU+-Z=S91B1TwTL~&t zg7uWVUU7#i$BeumAm4u735%V5vMR04PI6(p{yP~r+So@6{+ERppbTEMS~Nd|4x4e0(&a&!wSIri+hY$eK zjzE(aW#d&9e0-H3uEa2xLkJ3a`bC!Q9=+>jb5ivI&9{K;eLf$?n$)9*C6~JPRt|0Z zUWOUwa_stAS#s45+ZK#HBIjmoo-=975h?81v2)`G9F>g^-?k#UGimKnJto6v)QlhG z+}_~4zwR%1qkoh(g>TBLf7B1iYX7zPIE)*2%bmPLO?3!9Li)PjS zr9gpF8>4%BD%F1AjAK5t-S?C9jOv=IpK!pco1uI^%U!RE?{MF&{JDYMlJB@I5I(@s z5)Oo|XwW%RJl_KScT>FYglCH9ZBG3ZUvxscoSX3{gSxV&u1G%7hMx6bEumMhWff0bxWwWsTJpi}$?ZfDN! zsH@n8?mMIJc~sYJJtKo$MX3U7OsvLjO!{Q0kt`=NANl`or3w7v&$d#c+F}`Hhpc!{7J?s&&p)GZa;abIO`pDKSGd3krx(XT6EMf5tR_ zhO@f<;p$_CYRw$R?o6RQpUG(>yb5T@h~h)MiqIxjaf4=b8?KpAi1+%{btKA9LON%+ zCqrw5Nvr2usdTof#lwj){0Jj2+DbDtAbdtw^)auGL^7RPE{ zzVxrW9Ao{7moL+rH`?{GvZp#$4sJ6}zeko=-`B@k=b=e*h+WR6zzIBLuHe9e$K&J~ zGJKnW%i9#{9&b(6{2Y&d9-~<>mil#({d^)`)){xc=gu`dS>Nfn>&cZEb4TiKLZDwY z0Jj%)pY!PVLKRn7X^q(4tIWqgv{PwbH!IS!hn0u7aSnTAYm09*8#lN31cPZ&J3+~V z(Z=RhtCq!R2M59sqY`@&Vf0Qm#1RTV{Eg zIWiT8gab4-RZd|4wFSCSe3lKbb!D1d2$cVm!Xx3CsdRl{b(oc1gjaQZP0zlonD5K7ayBjF8vmB;~$~2nX+2Y$V zRTS$;Nj)W3{2R5}XSgdtahG$Z+jGb6IW^;}j84R#JHAk9XgIp-V3x(7pStf`P~Wc7 zud1s{y6RH`uNbtgtL$tg;2H1fwC%8*;sV{|s;Q)E9O@i1@FWgr%2kV`n!>{`mukCP z<@KMMEXtO?bVHFZM2=-!(Z)@PpO4IBv;_kiPp#-7-CWc|+ApJYsz{5dxuUFbju8Oki9lfN+@I^;8X;6;rZ?*8{ zowKk*|2a^;dW9RsFDI zK0s;x|L;{^C>@>We0wF_dvd!KKK^;lY$$mCt4__$lXZnJ&5QCd6toQ(pJRql*;{f0 z)_^??c0l+@K9rAoc2U!daL}rcsEg!k9A5dEi{RHfk+OmM?3XqOH>PJVvm>d|Yx?CZ z@Y04{zMH%Wei zg71o7Y~{kBaGu<(jvpeYELAISz454x$|16A)DACLAg8nJ0{P*xlH_$XU@?X6TUGECoLNd;|&dlcYO)`8XyN1(|ih|dIS@+m2l6RM)*{GD8ArAP55 zh)>hE>dX8&3*T*2G(uVse)z()!mBNRfhKH!*@OylNem9^;j19kN*ph;JzM0=kxmDM z&p+A$>zskX(WjrfaLt5Ad=+7*@+aR8;ZLI|c9g!z7L987%*DDrXDDYH2oLw7%jC|x zL9ju4|2wd5YEkZTcL%LJACb+z+{$S=2fLbvM_B_Sp~)38{&cq?SnEC-aa?$XJdUDL z9!|TjkVi3mV#Ze?*<)l@>}0x{6=SUIupPO3c%Dl~!9v-zv2x>5~ z1|(;GeVacWk<45A+qFI49eA%_ukiH@NBlhC*CS_MMTaV8?RiyhLL1a^4(R<-SIKzUj&tNVI{teQ zV+h}~D3Rk_xg>jnKD)>$UNS+S^KsTnp(71L&Gfk8n0XSnXEX4bdXw+X=yN8(B~)>( zTsY9H*koUeo1J6VT9fF=M5{kdF2!1Q`dZwn0mFB=Tj8;I+a_AAXih1(>RXh0IB+Kh z*Opo@8AG`Hsy*HLiHF|qp?7%bozA8(?7%w}dgZAaS3U0axf{XTY3XFSA7?*y)BW&g zr3OJ8`{+|TGug^&&0oskUmWtV;m_j2Kbux-jQRk)VTxz?*r|GF%3HN_A^Gc~T_#Py z7nTt(s^=k`MvbQFeU0lCp1A(JI(7A;Pd)m?C*y0@^}0!NQ@s&TSU9j(F;K6^v%hrL z{r?8X-GGMIZS6{QDp+}gRnhHK6`G(G*koea5sB6_MTu<$%s#(zU_-x1= zn+2KgD0CZu*JoQ@X~1kq9HOGxm|*bpS$yzD&);e}kJ~!}gE(Z5N@an2hs1Z|pMw3F z{Xcl@|B>xqK$qRd_1=woYn@N!exe#S@n^@<<5GD7?*~hfcz|)8Cmh*dq%2LI10Auq zLC3ERi=U*uXd|9m$t}azsO4vcL*^j5PdkdvIG_0ZuA20RBe89c^)IA~J4))5hNpKW?Y8+pU!I^)FoUFN}He;FlCko|O_f zb~hf1G|!5UGU`ME5W&H4-8?I+jR};$A<2)i`4wpl64%9XXjwtaZ@nn+<*Um1xQJ^+ z)$^^ftsDPEk;venJ1sovCCVw$gyQbDmKseh=kX=@6=WoBx!a02qAhxN7PjLtbnhcD(LhD^vasigz__k=PIH8(nNWnG2-%vKC+s+fGFbuqBgOCcU`8%8!bxYsv`- zD$A{;VLb8kKD!`s81r-<7pQzHE!c69 zbyy@_`#~tg@!J)Nb51V?Gaj(ki!SkS8JGPOiQ_xLLpKA>cyo*L7hCPR@%t9Q_~QA} zVGggQl1Wv0n#x-ROBP$@js4}G2iVQ_(ARqC%RF>{58cf}cks}y!)bp+QaBJ1p&mM4qq+Ww3p9Y~9v-^Ahi>7aqdjzlhyDf6&gJDRiahUF-%t%kLx>VH~k*Pc1z*v=1+<~FofBD|^Gt9aZl z=5^3`8x+sQz=~L_u#QTOvFEAqDJ#u?w_8Ex@f#h6wk%LiWsc0 zEG5TS4lq5yQp0I~L~J+^@$2{D1-|mo+d;E2J+(@L3hSj|q_9k2EPtNjal>XPUMGHj z7BkP+n1jL8Exter_tuoBdt?%o%mtdvsl(xVe(=zrF|7}kjUIt25B&ycHa17AWQoGu z)`1mqyTaT?F*ZLEh zVq6bMI>JN$gn!z=hFqjox>8~MIA3>&O;#8`&ez4Vf$5EE8AhZ2s4xI$r0>ED?Dx>0 zc<47g^a~#PX%9V5r@8%C>j3D!pt-gDWMH=yksg`j2f~f~)5)0#L;F-2eq66xCRSnB^Zf6E$G>)z^P`Np zlDk#DSQW(aH)5-j@$%Rs|5m&kw2Gcp*bEI@ps*{Nwu)k}V|5#0Us~=EIZqZi7)BE^!g)PyPJfkpf5qoZ#rsICa zb1|?Y<|r&6aBAWLPiX~871PDIK%v4alpJGy7521-^#rB|U;CaJgBheG;Ei`$~A0*!d7V5OA6zMQoCKSSYZzWV}qXbD<)esNip^Q z9<8v4RDq?Md?&?wNnyw$Vim?Mqtpo_7*e~$w1SAq=9Ltu?IcnZg*(s)C_*aM32BI58c;8cLB}DRce(qQrKz@ z`~FKu&JE626^|S9$(MeI>4I$O>nNbN@OcmYkcXb{p>OigS9<6?o#yf1834Cry=HZS z!v3vcC-#OLcF03-@X#-M=tn*D-Jtzk@fNL;8vru)mWGY=6db5zbk}$F$fPToDoxKH z_+J#dXAkWO`DJB1U-2G+(^R+;cM0#}(Q{nic2)0QRWHZSa`5y9E%eYgdFV+VdZdRQ=%IUl0SD<7 zqfj}>-I!(LU`yTDlSA;shFdra}zd(8V;wh4BNa zSs8o5Z3*YUDp_{%ulNTqjO|nyvWPtj;|EnUkDr(f-F`WB2NiRdR^U;EacjB2DaGTK zO;J1-11sVhg|UII(HAM~w1#z57#os>`eo~)6v)p==F0ft#H@rX`xgJQhOsX-B_Av7 ztcJa*Fb+D`fMp7EDs$?(M`2&H9QQx+h^Y#6`|1~fT&V>MSQ!W4c}j+Z$gLnnVc#iv z?glQ`NGrD=|96Km?rOK(MuqvgrOa%s3UG^8C?>a#d663LKE+f0Cyl>FVfx6pN@4DN z0#yw;Bv;x_G5L|%u9Yzg6UqQqau)wdh>eQXupbo0t!7@l;vtLJrFbsJ zIyNXQlE)txXr>id1*SeJJ+6e^5yA@QD2(0i8aq*82Q_TC!rWoWWqT=%8_Ua{i* zNeXgDD2tuMe@$Z3ICeR2%HqiRnb%w;N5tz&=8TewRx+(LnZGL;ZX%a=c_1T3IXr(| zm~q8@RRK4I7;CSvD5aROXoWS=uwS-2MzgW5U%pfr8|Pvh6c!^fH3(l)px(2ODlASb ze7nN*9-XAH1Wj&)!rabfqt8=Vb4{+5UxA4lXelg7!+!Y0X&pbB+-=FH3QN(jw-nYw z!zvWkQp4_2m_JnmuT!Ag&usNjg}HslSeB-c`?bB&febr8$57VGJbtt}8_c|2)eg^A z7whND@>1(=8W+q><*7UnxzLnb}Z#!@wVbk#nWTv zL4^%gI@mim1Jh@d$x5a`lkt!A2n|$1d8*>!N*Gy0C&hCyuB3^l{MnDfE3Ng=he30L zMml=^au%;q;Ki!aQCg)RdK3gb^wS>t0S`ULLthg{!~cE4fQX264=q5m#r&*vcj$e; z)xkz+*dAcIySFKsOEsAXJTiCqJ-`%I=yI)4M~_UhhmP>jN4A6;QthE%*JzHv2+{zi zZw1XQ9l)8`QWVd{xL*J6 zO^!8Ou^ZjbC`|AFX$mXRHXXv@&B9rVrBr3cFI1>!`4+BnJPpWw8nzrwRW0fzyIw4cn)%t2OKmV7jr- zc<807j9)ABh{7J$!8r=NR}-A>QC6g6Zq{V_dStpQ88=S2fz1^5uvYH$26am@O9Q_H z$bl2kuum2C5HRLFrg+FA-c~#p7IDAgu~E!>L*reo zcrL~U7buL4WBIk3eCS=rAU2YD>m-kUdfRH`|4{K9%$XA2P}o~a2kT#|^x+r5z0XVsfL^dt{` zjfcJzv^)fDRZ6*KJsCuPP{Yza1tXP=9-PP5IpuU+Un)!w&W#FVk8nNs7l_WAA612X z!SO#zXrJQoze!->W138vl40*Lk3GYAttL~bWZZJxz`hDoLFpWVIsnvN*-{DV0r|&T zr-jE=1+45lh3NtLp~8OA7~F#L)l0YT$e&s0ZM9g`LvmE>YMCVBG4{iia#B z7d*W&nI1Ypr+NHG=>X_I-gH{3SNM&>e$$ND0ZgxGqlaGWp;vk6CqVmk1$TG^rg-QP zpt-eftZ)}(dSuc)bW2s{C(ZC*-l#J?87eRX)&r8>L31})8Gf!y@3QASVo!PKM?7@7 zho0@Br+erLp!xR}Jk{XUO#X^Mf5>4Rl|5{h(tr=FRuj8IxGALEB_j!Bv|r{9~AM3Vn!Q8Z4*GEi6fkw&3ghn$a%&snwxyzv z@zdY!^z6shBB;pTCVv*cXq&YTR9Ur^7BdNUuq*io8xoTCR9mwl5ci3E?m^Kf^7j+v zpI9rPDr>v^^~c!lk_v5?KZ!`$VO62P?j86kc6l&ur?uY@?I^TMdZqL;>6Haew$jO} zKa)N(cjL#sJU_X9;h*HWVIY0YP519cE6Qo-ZYux_rhIO#kq;{7G98fk7aROzm<;~4 z4Srq{Ec(J~E<}6E{?aO>ReSJTXxa8$irtH!CE=$aUsx$Cy6?4w=n#ZVi4YxW@mE$2 z#LD)eUFDQgBTb)MgC9TOAJ}}Yp3KJ&Q*MV;id1jq%&%nw>1%6rSRXq-f;scGwGb~E)9Pi8b%P>2%-)e55vNMOQ(J`4=^_rp*R)PQjb=b;^=>*8_ zsa4ePdn>J5XC1-}!OqJ>a(|`PB}~iS!>SdmnBy-CY_}DwDDHd97t>YOC@ZyK6mz5XM9$z4u(zY^K(V{$}Q97B|r6S5RMAJ)3ME?#)- zxn3*}j;=*uA!1kjglEKb&OuA^!9Rt>KX%!V#C|#t_zlP(Lt@)^(dgq=h0Tq{|6D(A zr3KowjSQxqfK9TVbl~n7KObeAkpFQrhxVnI=LO&S#ky6r?hTZGKKKdJRY*Q0KvH{e z8vUy^Q}m`yzglyC`k-MF7JSpHLTHl-Kq*WM|3n@mo)6tU{ zYu}LXl;w-MKu7VEs#Ef3@N-Y0FTNo;r$JhfraqAdHKb?Qt8YcRZ|Fl)u zp<0B?bV7xZD8p^(r`j?APew(6bffB!JDbFb*!s1_|O&Tus?zJU5ww~9XVrlx{$T; zh+%E4!L5OJ5sa}9U5vFe#_i;pFrSKk$Dm{;AV$yESmuuXj!y4H<{x-6 z&mb!N1D&onojZ>|r{<2szt^3B-!8BE!|K|TF}IVzlAY{r4(s90WOogwrf03JsEg~2 z$UBQD>qNys@xM(m;il0uXRQ`VT!>r4g$nAVt68iQojGe|8$&IMpJF8&oeWyN1=Ga1 zkkzWQUN;vVri!vl3qiX<(v2$6%L&85=Gmtm5;xK5eA*%GMEUe~*%JZZemn#meQ+rU z0=t*tp~xHRZ0>k=J2cmI1;6K?3&L5lK_iq^10I`e=Onu}^RflSva>F+=%;t>_jtXw@DB3CPY~xake*Y2=U~FU9ojSOkMN zDSH{r;72@2T{PXW(^`%O#A+@_J{379W>-^%0VA#;pK0f$a{IZU+kSqKB8S)*Slz^I z6THu~JBg^V(7~RlqIH(d&mP=u*`>%9+mae<+qw1BO55&dTxrowKjGhpp0(`>{KL;i zHvZplW1IhlT2*5^g;q7Pqm6O+4XR})yV#LN_60_9I40$;4#ysZ9^)Dv%P_|4q>oY~ z?G`Qh*Q+pGK5dfMO@7aPzMTpq?WGCabRKQobRL0GRMf=IstcBGloe(B@IPn^qwEaK zC1spl>rkC2$kara7hutVV(3D{7Bm6p0Ift8D_0a$#JzHz^3R+-B0dn? zB{~?}6po6T3>%$3tjfSYp?@UWP8Sc+nrM5Sm_lVS_5$o6PR78j?UWL0@5KLA1~{F@ z#M%6x`06=6dNs}-%Hu1}&b)|6U<*{r5vKplm>=5Y&M_%}!slR^My2s+&30NGZ%={J zlkxU+w%|6~7rZOMepDn~54+tUa{~>V$>w&Am`+U-?KI;Cizak4I?~8Qduq~+4T^6~ zw2!u#0hZU!WZ1xVlt~@!g1;u&uZg6a8dOr1Vjsmb+E%teoi{u3bfkqnKWS!z;{KNQ zpw_p5#S?<=o6)LHJd>#b?i+{1Q?z!Qd2?E(Z1rP`TrSQTg8 z=n%3F9CqDMWEfH>B%Wn>;nNq*Zo!;1*q=0~L7Pik+vSL!oq>EJ*JjFB2(`Q@CehbeONxsHzZ}Yl4gqC))GZJ{* zuvLSR+9TPNSB$`p&9EbBMjN|7#irxkfVTFP@>k9AgdbOftw8*~ysbS7_NBG6S0dZg z&R&CTZic;7ibqpbdpnDUw6|{oyso{ySR4ozc0ijCeah zMO|dJu8TbzR8E#X8rgy@I}h2WEV~FLQn~^JIlUW`w62>SKvvYu2;#OX3r_tIs3_KfUu$<7+ zddbPq-%FZz)S-%UFv&uBj^yQ>CwUd;$r|I%w+q25K3^KS@_f5Msjj_{EADNd2kxNW zvPFU32py2?a_w9xWzpUV_)o&!FSHY>`vvx31y+oJReLVBqv@#&?Di?^JE^^@i-?kA}e{p<=z2Kq~pP=8r&!G)4{^g`|?nma%iIO=4@d3F`R zw0sFJ%9pEdWp>DUgBuIL^jYj(q1DC<%NB4y`gp3#f;_Fk*Y2C70KXwwn*A^s7R{pH%d}| zCtL4ijW3nFVkfJ-R9atqDO(>LeHoSxHurKTl|x-^Lw2K>9=`|*^wu68eKG1k5e?CE1=l`4@n^<-Jj}6Ch8<6_S7TvoMP=P^ z&|7sKf_w7S_UBNVcMYbHW5sr)NTA9Ni2U)_VK~g-DQL?z_T|CJ*VsJ_G@nZB#@zgh z337+BdxBji`_dqHyu{P7t5Is+wRTs?t-MwSqi>>Y-J*&1Y$aaX3*ptV)V=^hC8d(P zwNyrW<|G;S>n3r-f^pZ`hm3K&t;j;+SC2oO+bQ>$z&Iw@h+lqpZoPQNCAS~QnaBI< zE#PsqFdm8ImZ|uiZ?bw(_gFKrTT{j0t!Q%;&?~+EOgLRg6;ti3c6Xi*ze(#4S}&IM zoBSWU)MT0+-K_XjIJ3n`x_YvaN&~0a=|-0m6#q1yFEwWxqVz8L&vWU;X?CkVkNgx~ zY6fVxDQ;EV{FSxgat~5y8kW3~wSiGLb*JIi+bz1qdqnmhb1qF;%@8E^4y)$n%%;WH z+c}rLr$l%$|7a?nfR#Pn&gygUN5_Dc zn#5XQdM&G!44*~ZTKu$Wspac=zGAfoi*4rE=Qi;5fGgTkD?TWY{X|+5=5S1W@x$Xc z*lolI4RT*fnPKNhh_BLP9=Y{3*{vd_w6tw-r2E4IaU1)+sN&-_iuI};SQAN2Dek(Zsfli+)lLg zW_fDZbhDjlwrSjw7>HlXg=aK$c~KHJ`8`~we+$;6y7@>c9=c2W7Q_MoKuls${W?Ad!O z7E*bpD87*0&!d#x&)vXXzz*dR%T?*8U^a!f(J0~^=&ABHJ1yycRmlTkmDJp3XY|n< z$c^S&xPcEs^sgJ(Z;otP$sD`DSZwjXkf)7v>`BH${2sTPbM5|Uf`6_}Egyz5J~7_| zyOUHUth^g#-)^tRS>VL&=;Cgac?Y(4k5JJac3PB)HgJ>$sNX#xLwL*Nqf`RYe~%&` zgJ#~u>xY#oiuZT}Jog|&4e;_*xhERn@fhXmpLBTiq~DIAHi=krmr(UT>xE=z`VJ`%s!p-ZXgE}T4=#V*K4;uo`)IV?UAw*Z-s#4l$3v%VBNEFXzq z%zBFA{Mbn1A?|k~(k`Zz$Y{VKnDjri)sJ3(rh#_EQ|L}Rt0({e9F8fD7w(vwJT(6g z6P-VV3g+8>X*`GBAS9mM*d$C6^Kk_4MrY>R8S-g!ov94fNBsgOyKK4au`6y>rZLrsEH$AJyez)Ca8oQcj9ZutrSd33{?7SDDtqpP> zP}~alHo|?+OJ=6xL$q$HV4XZy>scK^<|FZoS+C={Xeu^&a?eNN7qf!(r7i`TkHjx#y+NS`c3J{2L_Bk_ zo284X`8^oMZ}Pa!5Nn;@zYa`p=DG%Yk@Yg~tp<1(D&E@-@H$f#>ZchsB2rXI7qzTJ zbh3+hDD#WEle?@r`4(bC@LM)9ABkVwig)W9$ib11#4l#OSI^>gJ0FQ(%z9t4WN*e( z?E>`X>HF;H4pYJ6rfg`yTpnl4`v4DVv(s8{Y(S)!64~VR`(~%#3sj?6x!a)2@ID`j zUu@5ZvIpfO9Q7D<#W~MM;uni=kzFUvFRFJ<1~~ah{9>uC^^I&xjqgJvA75zSK=b^F z+fCqeYd+@w%@Et1@U3>j_Y)_4w>!<)!Oh5#&hLQ|`AGcY8g|xunD;XINc>{fr}eD% zAoG#<#jIWRc6FeWi`1wZMOpVd{g5a=r?^EJIA2f}XM5y)*m`dR9_PU2W_(HhMfOZ- zBVPdLBk_xC`>Ng$o-Oi`_{FS!)bD;ZZrXv&N8%T=YN!mX^Eu*1g3L$a7qh;G9X$8A za|{+mxtP2CyPDSDZ%>K(24dWA11RSKJEJ9kVUJ%tc6lF_i^ST8QrQD`x$MfJ!IKa0 z{m8fETWlBi+7AW!km4OS$1f{uXrAM4XCE9;+mnrp?Kki*Wc&}|&f`03{4i$sgOvHO zO??izCLtoRLeza&bXcp&-Cu^)L?<7{hUR<9c?9+yq2fnySlmUyM{o{3O0|#JE5r{( z0STT6;OJN#EO-=qKluqWFF0+Hr1^B_aXT&e)MNIDKVb&3MO;JJ`Tj`z3Aa={I|(X# z0&m%4ov8W=9F|8uVYi@FPuP(yk7-Tfn%W`N31;KbprI%16t9+URPrR^svFI9GI|oN z+ZEjTBzDinPtIP*SZcpvv^quUrADd|I!T`|weM^4Giu{`;J3!K`caV_yla^~A`T_1 zSK4J3^1RjdRzAgVtw1CXc+-vsR`@3FiD*2I_jGWr-6DqfdmM-y2o{ySi7BxAi?|)A zzcH9shP#3HdmF9j*JXBmJO?!IU*L&|Z$qIF-B)3^qVbK5NNTgrJ|G?@^DTU|^2lRB|iTzHO&;Xb&}PBlqI~B({rRyzk;6$=}O4PFe5Z zR;nAVd`HIHrg!WN`6(3(xeG2gibM8i>+uKdWckp|pUGEcXGEP)!M%zKtL&VpUvv`x z0;S4sasGc)L~^hnbh66MPCC^ftKYkJze|2=hy@Ki z#kE7?7i&MQySPbPPL1EQ=e9lLDZ$#<_Il}O-@`nzoI>y6 z(6^lO-p2*ra$4{{MyRB+16`t{>FoRV?czAiT`z?on?gI*+dUHaIK+|L7Ktmbrsf+k zA1$XT8*uZzJh*9t-CQL7-ca-KPjoR&^V0!18rd%P=O3=Ul(i9aUo|a7MsqgeU@G5_ z?Z$Hg#~ha^MdG^>?pmiy9c|njY)&`wZNhZ?Gv#f<)VZBzZ?YH5&$CmMz;P&Jcd&3@ z@@=*k$tFdDtFWHQ#0zB-xN=VZFjtRJIMDY2jXFo1Gya&&w*< zgN+)L#y5@dt(-x77n=@-TRK7O)n=+!n>$!A`Ev{-kw}3ru;NzJ z`Y-I-q@)J@Q1T^)*uFhjzvPMx{p{IYWbU=+CM7pmB(T>GCZ#mUg0`i&hdlG8J+_P6 zI~w2&2&$@P2lBeX!lP6_mWo6g!!;?>7(ddVx{z$B>5BSjkP1X$i ze&jbZGdK43f7TS)Q_$ra-xlZl@ZpdA8fT@pXc`$uE7w+PK`OTPRLN?G`;KAZF9#r^ zrh@7iQ1!Y1(Tr(p1d}VvSkHiK)(4pCDg z>h>w#&&jUgYo8&{Zo9tw%zvnIMdckt_W%Xnat)RPZcM`}%&slJ`44&-ZCkWyeO9{` ztvj}8b52+o^CwkoGhp1bmJ^HTPb``@bym@sc{66s-}OSwukTH&ICQI4QvKt?t=g07 zN8GejKjY?0^$Tu+RKH!cRY#;cgC*Er-l|JWFTgEBdSyp$)n%kt z4!2C{RT^5i!Gf*WLF>;93%nqw>?4!6Vr!@W?3k_C!sI`<>vAvnRLgt9iD|*%X2-_W zYt*cf{pB>;s_&8MYHU3uluUj=rq|kaaj9UgC%@bEN=7g$qfMt)Q)bPa*s5^S+^O@% zPiZx4eBsO)t;WwPnm2#$g7Ncb&7C)9(bV}<#>|~Ke%9OxZCgz(niu9(53(=n`roE& zHEwE=c?is&KV|O3!U?5Xgx6FLT6AraKx#T;LQadhAefcYaBgAIjH%=5 z7S65LV)o=_CYO0r3g=FoP!Hjhc=$|Ku>QOTGo}_TD6U&LuWrj(bz8zOtk-hhtd7MU zJB;bjuEm0)=|!^^6}2!(EhZN&_*1~H$7=+mbG%i#t9DiB9NaJUs@&XF;gem0#i~xr zUG2ICQBOX$>#@9Gl^4BT+%8t)x)YlS+K9X2*WKc7ahupETI0GWer*<;@%czp48m0& z*L{g=li>9rt_S{0R~BYPTg6{+ZD}L6h(~ZejB6XN?YJJrbw945xO(Ec1J@2*51H$+ z@cW)Y`|!uOO$)PO%fqlhwq%yuwR+1p}hH#Q*(kx7dv-(UaIEQU=$pxN4az zTQpA-PuMFg=p9sqswegi)_S{s>JxO3VWSIz6WA^EOhJ&9U61`G+z8bm9%8JnYN#41 zVpMB;gSrtA4o!3`)J-N-U-7F{42AId&4_dD3XwhuKXg`tpN!CP z&cer`cfw=+f|}8Z>ZJS|KvMBk5IP<QbfGFxe29PxUnmHwhVSf%WQKS44}x-a4C~>>&jD$; zw|~&I)P3rH^?-U%tqi~KAJm+>TRowkR8Of@>S?t{?N$5KenVhc;sHhVQ~X-LFMj=1 zZ*{)vth%VKs+-DH=fyGmsDUOl0RF|QS3K2mIM)QO31eaB@;GiDfppG9L6#6`4Yiju7;GpLDJfeo~v^<4SO>)Dp8h$)a$$tNiLz@&2AmZoj zupWf2lvl`Q@+yOIgItdLb789?LA~(xf;ci~L7H^Jp?yq!UhQ?b={ayIApTqUj)FUwC6>t(WI`g;6A z2GCbODy~vjhr@>jHN)azLEY%WG|Y1@#IF5`VxhP~+$3_;MR)-=Nt}zF?&6F+Wb?QNJQvN7!^LpsBb@T`IzIsvj)Z=AM?*Z9Mv(>lvj(R=) ztMui1iS8l#=oh>i`b+PS_l54L&(Y`VeR{vH=TGt1_&50y?{UAE4|x~qhrI{Auhq>M zdp63S)IU@&>;yPZ4ASR|KH>oOHD4f}7q5!y>LnbaI!Vq`wY=Kii%~CIhxoegpm;&t zg5ls2oW%FMd`_M%JIXHJH{MrXUww|uQ|HRwDor0zw|HNB$GxxR$7(wUw@uz+ai@2I z)_x`bVz0b^saPVGipxY7eYf18Zc`goHC*Lf_Pik35b(46wEWPT^ zXi(VYsJx?Dhh~j4GrAqgN9PeMmMeNRi*Y0CX4wjlmQ1r3|E|u)5BGRZ?(R~i>&SCP zo|A{6qF;xR=a2^9Ux0$x^G$3;k3zonK*}tWj)z^jL%bV&FJ9=$bkjrbKwyxp*rO#f zUeP0?TShm6?lal{t}oL^zD6@3E{`$e=z-@<#W??WtO6Fa9s~3-#ET*eRZVRA zpDs`KXqgw)RYS@a9`Z%$g+7x1*Y3XeNnSl@puxG{c%%HD26d$Q z^p>PY@~Iv4SE_=?Qva$}^k5vXf%xzOH?Hef5U>~M8W~!?ccl9jLhcZYdM@{l~2H!n)d+iYkR#6|K)Joh+ty1HafjadKc=I zf3HMG!fKiguu61|(RMN&=LU+qV(DEny4A#IE2|;b@3K2on1dgB@@^c$@bq9}{lTw= zN2QNE=iOij>Iy9%@&CpZ1u@ya1f{I#FAlr4dPaWKoqUN#|1sQbK*s2*wr#?`mIu*>tEHcYSx3=Lp{EQ)h_<1 z^I!B6x^d=CJr<-_#E$9OtY=Zf_?uz;H+iqtGb<9#DjpSc4y$dBmLy$QjNt4rjmia3+K(zsJ zmv~7RAlx`J>ixC*+H?1)&vd%~P%i1q`wLj|SVp%x@;t?VBqyiVzHcfB(=yzb>P3L# zv*>T+$a5NJ(k^S^b#*15HFqSx7g+B_sV)iLM>+X8jW3~mK9H~WUzES=CEjY&Y>wpf zds8JF0x|_nY=+MD?WF7)Ki#z2Q{LeoOEvAF3D=dxvfj&j5A0pN^x9qnd%vcluPI)g z^lX2&&wD35u=i}AcYdxj+h5zun$T3=Spb>fslN9#|0^}!FApIbXSVm2#zy$%yyZqS ztGzq@Ma zs&QuH%#Gf!YMde5A&ccD2p!4aiMB`{pDVOUv0g9pAA;_xCo!hAf!wY7g&FE&6g+*M8Fn?aBjBc#qv9VVXBNp9@KD*SR zJ?+w}O}pOQ*7joi-w#~gEyVg8Ato@TOnMZ%cW5v1PW?+|TKGB(C<{2#<|gSn+Q>syHH5o5Ev z#NUR{=JYiN`ZxHCy}OLhjOdQ!v-zSLP_PcYhL~ldV?ITPp+?0IEvo7rQ2$Q<37>U* zzki=$wb_^A0smU{o&TNxi~p$qx=CgI9m&6_*YBFzxIA_>m~Jx~BjjuUE;Owp`S-xy z=XN^T?O$;kiu@QV;3?P>ZKkDK;;|5Dyz`-&`LSs+jzM$;{|d70rQgM)iV7}KRReZK zLy-x(eS}#?PIt$NFZ5)T0`DnJ%4hIDM|=69#b*B%R92N>9x7-T%D!B&Z?yg6?|Px3 zv06m=zcIrg7RO=LK9K7p3)fht>-ggma}f_3!Wm+UKH1|-e}Cx{$goWCtNIxCFT5@4 z1%Fara9a87hDm$JbZ%D|(^)TsIAJpar_u6$#Fb#~NoA%Z9=A{w2Qcu&tgN`^UXk z#J92irEfwOlcB@k{Ii0pDDe+1-t@L-e3gsQ0TtWH>?#`AgB|-$*c$mqTgF*4f-yWd zqZ?bQwOFQ{^jimwGruyWt`N6VN$)6A67f+LF}H52Uc7#rRkoD6#KVe3wPvmW?3tG zCEpaojZz&9>n#6!lXA705m=b>DaZqmu~&+kFg0p(b2}?J@rHM|*bBXz+jTK`qhf!F z!G`fe)389X9pbHwP2!s!ynHLz7nxA@@9i4}je_by<5)-*;dhTkst>_@{OrD5D2Kbd zAs`QEKV6F}d8|mRM~nuZly7 z^9g>9p&Mz|H&k`xOcQ9{-c?_pgvxfcu}t^G2Di2$`c~y(;+*kzPS3Mbsoyjskx`#iRx=>rq#L(8;K@l9j|ZsJy~8=T388T?q8s5 zP=9t)TG*wf%rno-g_YD zk;)lOq2;AuJ}_-XnlTS4`E+)UdN+&FoajPS$p-vFW6hWn#P2qTwuyYPK-F$5dSjf- z)^>2hDsD|k=~@Y1f3>x=^!tKhcz0{PphO#Kn4rM4Lrp3jw*&N!y(myt)7q*9Uc=pz zkz{gF8Ks?hc>+f9G$$MfZ7!nT*7Ayg36KZO^Di_C9BhQOH1@r zjEgT38WUGo>)23JXEbT{ARo7#5Fa@Ws__<}e`Bed%SDD&^9!&RH^)>P3stBKgF;;p z6u`$`OTeBvYa0lux(8d6B0K++HcmMHUu#LX-KcSYVm5c5k=o%fy8!M-;`v+zl}-o>O(C(Q7{6Cmzn|4H9=1fb!m2mCqT#0vneu+A zQQTQ0K8X)8PJX6w8=7%7M5TCevbooU#nf*_&_b+Rp!cbmTI*IN&BME%3aW&!j|eJP zngJ2=OIT6+mZqRBI|gk{!O1I&@0o#@FN=aXpjZG^JGy1a7atuVul~`JoJfO_PcCF2 z)eRCS&}fH>-(xFvr$_^FDE6WFRV+r@UnyI3Fge~f)`x{lVTI-D93+wSpntxLV1 zRr^zS#+Jg$l5UJT9^3QVH>ZF2{nt~Ms!6|u zyJM|RpZj~M)3ZxofFjb}66+le-b!EWr-`ny%l$_n)y$wG2xgqh)Ia@RUzat+|Mahk z)$|9VEbIMuQR1uBz*GBv`w`f!O*!s`Kgj!MY-DVR_jK$z9PzLvHtqDazcGuqA^51^ zQBZ9=wc@uf{=>0tr|&?lO}s!+B4Mo^EHXt003h0$&11!6yrH{N?2_BWFdV6JSZt7U zrKf7Bf68n;`z%yfy8RV7W(qrT)RfzSpF0zbQEb7VC z`16NW>V(`Nj>uoU<8l-JXX8t`)jNvSr_ycns9X`UZ%wMy`}& zP=X$+1Ek!9PHMbf1L94hp+6d{{T$ ztG-)pksU;9wNey|z3N}yKJ}PijPQ-#P3j6i=I!+|)GczN9;V8Ax5#V!yM==2yX8O# zyBbry*A)F8{%SD{FS)K%x5<5;QrDo0Zw3}&-Bf$z+gZ-^qtoy;r>{D;28+cv4p?oz&+#=ihx5)GH2=fS7uNE`Ct@1v#59@?e)lRiueed0( zruw(4zo<51y1xNcFhty}A6G}@73zAt^_rt*`vq9ooFF^nY^rkJ4R|_FkBZP=Cza}~ z$I52@kNS2=^LY{q%<~S&1M)ZhyZWoT*1KNaEI&|Bc{j^j{5#G;b!XXQ5w&cc|ZB{kxft z?!&w8DdI_QiparlvD%3j-n;S6dA3-q7pqLMUtF)Ic^{}bVy<{nrOB;+8L)0B=K;4Y zHj6fs&E*eXXBg91xz3v}7GN#^Vp&ymk`Jk&{#)K!ITGbvCm#a-)7~BOR*2sjAHYxZ zT0s0dQ8f6)Dpy{w9u{5X@2UZ0EJTYgrKfvM#3H>M##q|RS1p96^W{6hD#Dsz1+^IL zm+6OLT&4AkqKuv(Mv8O&kL7Hylebts23;;zAFB2urv9eZdryJxO>Z~&KB#K?6}@9< zC5x5t{^3Q7y^Y?(Fs{X_SbTstNQXsBur0!E2%^0>D?=T^nUXG>7@hjpjwBtXVo3vNbfJ| z19_KRtVYTs@QcNxn)J`9qhP#Rd}#WBE73!w!vGJem-IgIzIRCd6}-p!Kcf$*r!pWw zluS3G#N(mRVldEp6J}mf*a8_AqQhvQw?H4oc=a;gKgWAREJgDh<=6E#h{fngR(or_ z=aFF@k?EI)E)J`gk>w|-$PHqG|B5Q`@AKa9hWX9CJFq$90(D3nP}j(QqP$nzf7JUZ z3iV^fLq_$LdWWpwy$V6z@%oDaVvJYGdt3jAcc&Y~IvgH@S{4)ifmpPvs2g~VAV?Sa zC`8?W%^#O}*WnF7F`8%{T|rd#4tjL}t>>*qrDb_F^-b`+|9P<<$0M0hQ-`AC%q&tfsqTO!+tl{mU&iS)b;{xaCa4G7<;)?&$W2|{=I zlcPXd3srTIcX<_62$dHDR4jI*Utg&1_HL8cLb=!LYt<@rDQj_6M0}yg9{w?TOx=y4 zWxKz_Kcv@+eK`B)C|=br#?V5{?eJUa4#@UObrU$XlWoOHy##$Lb-K?#8;9>iN9yJJ zpvpoAb0wJmMgB!EgOyUc$v|BqrvZ9U72(*oOVQ}oV%zClRMh=?gQyNuywP7GH^^=J z0(3tSlzFIk8Ct|)^$>J&t9(lTL-&G>98{0%2Y|i8&p|t*#VwXQ^!YyEk7Zl$ zQV`vRtQN~*-eTESzojpb{bYYRKz^aVR8L?ZL@`zZDavQ^FmQ`SJ2b(4vPkU&hYMkh zyo$wPHD46SL2^DqUwDU*$#33awFUjiYB5A!C@+#j5ZE<=v>>#CDRm)cvrAV%Py26rnFk$LRjXNk4kI_h=9gjI-z^`|A7Grm!n;!+ z!7#E-jrR`f5#IGEC04-E%=)SRcxyILRa1l11n&*`jJM3MBd!w#97V7qc%9!}H$W#< zPhT&l%VLZoZ_2mi+jzar9ae*&^kTd{n&eN$F*S2#v`}TK9U#13?9`X|i~VM8NF{6!MC7}(peZ{$O?m}~IIPQ{ofcGIh|VRsu9Ebc&I za-pR>-9UBM^Kru838bt>JGc{8^E7Dk^@D=OeK-nr33NZ#qn26Ux1*L1qV}KGjWB(b>5TyQ+SiI z5o3Rm%JC1X;qrP=?7|k$xxhLI4*W%loCSN_fPXkE7H#BSkSvnpfzlS+vc5(LM-ZZ> zUqtG+z*r<-z^C0=UU%IM+p-%&fDZZ+)!pw4aSy8d#8MT}zrgy7#Wg5KTX2{rE|Yfp zfjN`-7hZ#M`q56V1J~nG8I_mI%hgah1gE@QpDk9&5q<}~4O#9&>F0>* zdLz=7U@El|a?cZ+pxUbtYNqZ$T61+w&VZ^HVA;D^yaCqti>Uvm-mIp}ujD;yK92AR z)qEN8rpx=0R?0iBzQH{@9Y(N4bSMC3U(T=WXXA~31NhbabNpj+AWqTh>W}qt91_y9MK8ZU-Y*}MgZ()^j+OBj z_!s(14TR7cI9lc^e=QEh+URcr)-j1s)I@evd`0{8@AX&chwxJJLH}{Qw%qUU@t^T` z`|Z%L4}n3|_p-%75M_%ru(H=dz#hR+G#~L&sw}2n*Q1Nh7R&Ltl81KkGA8b;u;F9B zq@QhmD*(^N&{kP3MgzYRLwb}zT6eKp3jcETl6M8}(=h9?ZT2!XQ)K8nG~4XoadKlT z{}uh3UhbdeFY(9t{k<(-cPMz3xY?U6hC-7)yaj5Vnu+m{PYl!bDE)#w*Sp%g)}M#- z{7>t9^ky%n=X(5h0nhvz&1(UdyDCNzhT~vRK^I~*qfqf;+STUHW%i{o2>azn5=sm# zNE&RW)-my1vqD5{yV_+r*;O*jw}m;KaxbvA5jVaPfow@nl(XU@JYq8KYBI22lyE0P zA$lC%>C^Eqfi0aAot!K;Lg&H)`3|&BgjoaaNh#hH17Vh zFtVJ8*h+)l4x44$VP@h4qHvq_TE*iClK7;-k{*7xezD{O{gzdjiOm9mMWjE`uuCO8 zGyI60YnX9c5#2oeh+}^an|(4i4MT{l!I5~@UmDMgDRjmXEhC%Y!gCGLexqJnHu|*< z5`FH(;rA#%Y1$!3(TriM6AKr6r<@=~h8z8%p(E*4#E^ znYzqY$=Zg(+5*Ht1~$A@u9D9hCd9GgQy6R-0fc}kJvztU3c=U`AkYSunmcRD#%PabluGtR5aI*;D5QfX?@J*Zu~y1xTw1^^o13v|$nJGrC2oiG(|}}c zb`@-vIO}1u);cUhwq+|WeTqC+%~kjN4;W!A&Rp{zlMsqSlcn458T~u?t<4f}Kr@4F zGMP;>L?*>rWVinWNFWeCQd33hS`PL{(w+x4@i$1M3S;nlJ-C(%fd0@-Kvoa zg%G$l8=qnRo$R%ywr!mglNicCV|c=R)T1mdp_ z%2g$+UTB8a_+}gAd&IhM`OElLg)&+>?HU8?cQ25wv-V7xQk{*nJ~yFOxyFzR<=z|8 z4~efa&|sZ=U)qar;)j!p%1x@t5;|m>hkIpj)7IeD4&4N^W;S@`1fQ3MyHporI<13z zoMVjX_9x#rukxdo1ATs(^}ZyQ)h20E>E|W#T9ycr_cVMNk=h2=3(ga*n+6URc3-0E z+vs&zS&pkFioh$lI8n5j{Uq0jHE4wN@gB(VaaC{Ipo7KpK&{bCO195+Vj7-^9EPn4 z)@jmN{!^0)G`UoJTZ=XEGur?Np=E9Y2RrF&r(9dAs>$^pzz8SD_2M`x7S46)mc8`{1Az`R zPUBlGGQ^0SU$#yz?Yc;kS?!mM{2>Y=TD>PZfR`-nWkyFIO=zEgx zprU=OflQ>Cg3IxAI9A)nL}tX(l9frT*kcTtpv@pA0}E#hBSY)<%E5S@N4H*l4Bw@j zq(r9HP_j{!DYT=?QKB7()W;<+TVmd=b0G(H>7@C0X%6n_7`J@6k&e!3ZJkJi5LmLo ztQjvA@$?4Yq8^vDdK*Vjh>S74>Ich%-a$?=d`>%5K8B z_D&vbVuC!bZrpwC84ow-0|%W__|9iR?I_0qhe&?xdgyH0?8JPK@ilSi`h+2JcHpEX z72RH}nl7+G_^y@{2?(%en@tJ;Hmky0W~J8htOG9~EFL z#A4t)QmifUf<(H1!Y1wkn7EFvKd5-YMH9lanuxXr0E_5+GPJrUhGW94873Rj#2FF= z=@v%HGevY9h=VN`LT?j|K7*q>a91PNOCYi=w3ZInnatgLFw%qXXTZ6_KRw|}; zP~lg%2DNZ%W7>vbfE3}d4MC%5byW)L<7LFcCtUW9y&Q>@B-G)gQZQ{z0()4T(}za7 zGbt@D{cO+hj~c>nfNW81rVKx9*b>#IePWc)INg>6z7vI55kJi@6`yW9P8OfBWS7sy z0=goB(@L?$%{C~DN&hp?H7IP*GnV8YupG{#Ch)nJY%!he2`<74?e zak(rklO)3=h6^QOq_L@W5_~MZ!=*qr#bKsGq7GaQW@0ag{>Qi#u!9#YsUm%X^l&V{|k@ZL_l2meL97V!Ni_7Su0~ z6X;fL369Hugi9U?zK}nK6CMqkwf;=li}ZBK7(*_eObuf<1)al}3xdq>{FOm1Hu`Yd z%AiiGFXE&mvd)q-Y||XX+{2q54ZhlS>0g2yrS~uKMfmd8pn6zuTfiN_BJ8s*Sb=?D zUn2ZVcywEEVR-iTU^YjfbpJ>3qxd=8xjiVT`Y#0WIk)k#85<#9KZZ?L1+~)%_!pTK ztP1LL&t&#VfXSN+AL(6^9Z1TPWR+7S#lA7;ychD&w? zBe22p7x6QYoKJ$EZEV+x9l_uTj4tf{R8Svh{Y-f(I1BI6!rPt-*5IwYSpPJhDtkX2 zRKtJ1jD0$|IlOj%P$Bg91XU`M%|2ZAkH1XJOwz*cdxC03gqbvWmGHW|lHz64D#cp~ zAqFW9wPE@P4K^u~X%_pSNn!dI@$s5i;aNXpYdUc)1%1aOnU=~e8MYj4KIG--Dq)Yr zLHu|T%CO^ZQ;6Z9fU`#$k4*}xi6q0RZ(uau_>xH~>y$WAsh3rj*$+=x zkF}#u!eP$^vzoAGzQlGxS3_SK{zS1Uyz?3m_ShGgee8SfX0zWMO44Qf}FIE7#(2X#DDpfK}yrdg|iX+TYrot>gViL}( z8DM;_9r7alP&6JP8l6qX&hdE6A-lUZ7swtC=|=vjsN3k!4HK3clG? zUomX^N|22W<~(aJeCBX)6WLS=E4~tRj&eT4@1pEnDfMorQf}TvYUkV}i+7inyfbZa zGFoDWnB*3xjh+E^0yuHV$7Peu%tD=C5QUo1!CS76d?e6eiAWJX3K zqtV7^mP~OFhDLMTtkIsR7Txl4Xa*%tuo(OE$;>hVUU>M`p!WI9+GU#LPejYg5+oTG zGXWbk?A=6+cWK!CHOy>YEeJBg^uixLq?o2IMY{D#M@;&51&?>T%RTafL43iyl}Jy*!`Dut4}I#FAU%3e zlH`zK$IknOc$^HXBh`%*gxHSX3GTXj($iT=yULL?5es!V7E|D}4u(*lQ4U2$0Gr^l zvsG;~v~ZWXiAf7LG;vK@%49lWR*bui;5JL^o2*4Y2!I;u2Wbu^7}~I_d&cgnFnqvljX4lUyvw}uB?}iKPCsCgl8o<- zL->}O5IXCdAiM*1650N*LFbzH0jH!R)j|9~Z;U0%1V*jg2aOJhKzC5ukS)<4!w(wl zRK1m?begc-Y{u5V+vEU0Z2V486|E%9dnagIc0*hYg2C2E7~b$sFxoV*WLrv*Lmy;r zeO3iy*1uP7#>KdWyD(#$<-NEp3<4$EC~=scq>SS*|3k{Mu>O69f%S=$WO!ek2~$(U zHg=z68l4lsQM&Y0sKt3up2Nfk!F+s$vYvu zh-bOG5N81{-KJSy7SH0s4_p5n_)&|P=S-kfKjwCkDezb7D|b6Ezrw^oYY< zs=eFv_AU~?qlT#jR&=T(o1O_aB^mZG*gOQZq#%|)HT_Ic4#;i>$%@|-HGWX_Wc~-$ z0oYoq5Is$qiA{*@Oee#Gsm2H$3W?^%U!@V~(k&^Wbd=o* z$xzY}(mqb_uq{7ADC%5ulDDNW7=2CHvZQ%1RFaekgtW(Hp%$Cz4CP6ij^4Y@&sd_4 zeix)oVp2Cl##|37#vNIE(ajK&fy`I7d6Zr3kSCB9kIP9NaC3%L?vw#(8{hY17(EVRIhOY%POd z=?r{RN0%wfa-gl;xSYW$kJH90ib^;?+`Y!DV$dqcin5ZdEb+eP*a;i~QWe;ji+ZBI zf!hDJs3xl;H48ttTtZ+CnJsI|TC%pxF*(EuM4d#eF20p>uB~W?U8KZk@xhcZcmT z9hA6HCOQNga%cn-lAp+Ih2muoj%J8(V$oS1sd1)S3X97)Q|vwNvzv2h?(WbXs%2sc znC9RP-$ERp?nW@iZo)a{H$i+CCO*S-md6TZ^EU}hwj}f!qf3Tt+@@KKlGqN@rdn*K zCAptM~{;P>w?03Z9#JeW=p7^_XAE6J#5pfjv z55-5~7&>a3bgK9aRPzw#7XhJ_yM7R z#M61>n_TODaseEP^Bp>FzCQg9Z*6}Szu`E%-vK=>Vpy<}IPnqO;y*|k@8rLe-*N9) zNk=sN!DPuq5ZiQ{yrl%xL2L#V)22BH(f{41l~29shY7}(oN~Hh28Y66m^lQDG6t)R znFzlq%O-?Q-OW-?UL_tC94g&z7Q5rc%9KzJ%15@oSn)G-K#1@>PtXuO$Q`*p8t$B2;n=C9DIE{!SJTXC<+GcJPN!3^+TA zMp+=9t5v}y()%wI=>J@K`XsXb^8$UY&MeUX?D9N||D!BsCuHI}!Bwk7WqUoWOIZ%{-Z0L^3CP%CN&u+tbi&K$oi&+EkV;CH6g<1a@NdEjXc z&RP8dPbTuP9N7GDEST{XV9Dl(yrVd+<-eQxtzJr#E0Otz|6b>qEdE^ew)Y@E`=gKiZ3ZNDY|d z-V;;h)Sjll$RQu&l2c_0z_K5NF3O~uoxyWmjfse>#LJ1PtsSJMt}u{)o8KR@qh$Os zJ1cEd%QxXCv$MDsi(s2wbOi{l>Qa5jj)*RuVViE5Bv~aP$&jT=#!GT!Ix%q2jANfF zUy`+jQl)fEXPu@pGf@MvAy=o4hrPR)qaM0y{32HaN@iPjNQ$ zlI>=cwC#o~&Bmo>ZW~T1H#;32_Ww1gj+5T*3P=AI)b2J0&EC1z2#l4f#MtL!;C4na z4q-Q=ur2-!ZWaE>Eu8apP$?3p4_p5hG;?_`s_=}s%QP#SKkGi6`CCvIGpEC0#;KrQ zeI^}Nd~a<-G?LjVjfbh>>X(B`lNrL_2YB6Ok9dLjLD^x|GakcX@?J05TkiJGGbyQt zcfR3IA>2cLAA@6`@%u`5hFZ!qK9L6|SZ_!?;}_tA=8}sR#2hS#BtB?n+`6jr2{U_S zY+2jR=gy=tFT|8n^f_fhCmYie^tKG+Ue)d z%J;u3p3#3(uo)$;z?i`(x$IM?NLp`F8p5|Ectj*+6;J ztbSrMMZ9v3nlt|_+`$-26`t#*4J?YQJ0>~lNoKEJe5q8mk+meESa(!7OCnlA)9Z30 zwWF!(v=k-P>3EcsDAm^U%_1#xaORT8p@h*n(UTmZP1me8B>rCSOk1^CrK-afhK!O~ zxy&v5X}C={2glkE{{~9;b^iv70G~OHOvDi2C$@C1x57zKSCNU&mR?SD26-|Fqcf4FSKCX-E)e<-+8OYwp( zlKe;Anc_|Di3TjZycpP%ya@=66k1}huxx|BY%Y)YxZS0YdGO21-4L+?-syJJGmyVP zpFLOfiOLANej&4rkN>5SXMu@82IIs?Nrsa|6?}t!F+%wu5nwSv&XhNJLiXW*wW9NH zAboKc&X|L2@?Lb8X}I5xZ5JExhroT1@h)UnK~}|~uy|*H90auagcu_;aqww1h;c>~jGot3u|qHqpfNIn zx_ut^7v!D(EY#~5d9}R2AA^jahCaq1O98?HAFtNIWQ44S*j1SCej)kjsBviIJc&b- zp@V83mepkrent2YejScWZj6laH39x!j(USWy-qCuC=(eghvSUVt~iI7rTG%y0+D

2tWqto<7-AMqXXq|9?m|9}>=)ra8ob*2 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 diff --git a/boot/ocamllex b/boot/ocamllex index 3c88f8eba6d695b573e4cd1cdc34fca01d8654c1..0f4e31840e0aa7a8208e8a89ca3a94c1b97866cc 100755 GIT binary patch delta 13594 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 ab%(wk!1tBkV=78f$G2|X`Wah%{Qm%Hd;E+5 From 28afbb4d2334bf0cd9bde9c1ce439b9fec4d3445 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Thu, 4 Sep 2014 16:22:44 +0000 Subject: [PATCH 27/35] Make ocamldoc compile (still need support for inlined records). git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15192 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- ocamldoc/odoc_ast.ml | 10 ++++++++++ ocamldoc/odoc_sig.ml | 21 ++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/ocamldoc/odoc_ast.ml b/ocamldoc/odoc_ast.ml index 358a71a51..346db0245 100644 --- a/ocamldoc/odoc_ast.ml +++ b/ocamldoc/odoc_ast.ml @@ -1316,6 +1316,11 @@ module Analyser = let new_xt = match tt_ext.ext_kind with Text_decl(args, ret_type) -> + let args = + match args with + | Cstr_tuple l -> l + | Cstr_record _ -> assert false + in { xt_name = complete_name; xt_args = @@ -1373,6 +1378,11 @@ module Analyser = Text_decl(tt_args, tt_ret_type) -> let loc_start = loc.Location.loc_start.Lexing.pos_cnum in let loc_end = loc.Location.loc_end.Lexing.pos_cnum in + let tt_args = + match tt_args with + | Cstr_tuple l -> l + | Cstr_record _ -> assert false + in { ex_name = complete_name ; ex_info = comment_opt ; diff --git a/ocamldoc/odoc_sig.ml b/ocamldoc/odoc_sig.ml index e41cf2b8d..8a15841b1 100644 --- a/ocamldoc/odoc_sig.ml +++ b/ocamldoc/odoc_sig.ml @@ -271,12 +271,17 @@ module Analyser = Types.Type_abstract -> Odoc_type.Type_abstract | Types.Type_variant l -> - let f {Types.cd_id=constructor_name;cd_args=type_expr_list;cd_res=ret_type} = + let f {Types.cd_id=constructor_name;cd_args;cd_res=ret_type} = let constructor_name = Ident.name constructor_name in let comment_opt = try List.assoc constructor_name name_comment_list with Not_found -> None in + let type_expr_list = + match cd_args with + | Cstr_tuple l -> l + | Cstr_record _ -> assert false + in { vc_name = constructor_name ; vc_args = List.map (Odoc_env.subst_type env) type_expr_list ; @@ -658,10 +663,15 @@ module Analyser = [] -> (maybe_more, List.rev exts_acc) | (name, types_ext) :: q -> let ext_loc_end = types_ext.Types.ext_loc.Location.loc_end.Lexing.pos_cnum in + let args = + match types_ext.ext_args with + | Cstr_tuple l -> l + | Cstr_record _ -> assert false + in let new_x = { xt_name = Name.concat current_module_name name ; - xt_args = List.map (Odoc_env.subst_type new_env) types_ext.ext_args ; + xt_args = List.map (Odoc_env.subst_type new_env) args; xt_ret = may_map (Odoc_env.subst_type new_env) types_ext.ext_ret_type ; xt_type_extension = new_te; xt_alias = None ; @@ -696,11 +706,16 @@ module Analyser = with Not_found -> raise (Failure (Odoc_messages.exception_not_found current_module_name name.txt)) in + let args = + match types_ext.ext_args with + | Cstr_tuple l -> l + | Cstr_record _ -> assert false + in let e = { ex_name = Name.concat current_module_name name.txt ; ex_info = comment_opt ; - ex_args = List.map (Odoc_env.subst_type env) types_ext.ext_args ; + ex_args = List.map (Odoc_env.subst_type env) args; ex_ret = may_map (Odoc_env.subst_type env) types_ext.ext_ret_type ; ex_alias = None ; ex_loc = { loc_impl = None ; loc_inter = Some sig_item_loc } ; From 1701d2733b19c5227e6168fcaefbb3481e62b437 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Fri, 5 Sep 2014 12:24:31 +0000 Subject: [PATCH 28/35] #5528: factorize the generation of names for inlined records. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15194 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/btype.ml | 4 ++++ typing/btype.mli | 3 +++ typing/datarepr.ml | 3 ++- typing/typedecl.ml | 5 +++-- typing/typemod.ml | 6 +++++- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/typing/btype.ml b/typing/btype.ml index 2df327023..3e49db047 100644 --- a/typing/btype.ml +++ b/typing/btype.ml @@ -686,3 +686,7 @@ let backtrack (changes, old) = changes := Unchanged; last_snapshot := old; Weak.set trail 0 (Some changes) + + +let inlined_record_name typ cstr = + typ ^ "." ^ cstr diff --git a/typing/btype.mli b/typing/btype.mli index af4653ff2..9e4d446c1 100644 --- a/typing/btype.mli +++ b/typing/btype.mli @@ -209,3 +209,6 @@ val iter_type_expr_cstr_args: (type_expr -> unit) -> (constructor_arguments -> unit) val map_type_expr_cstr_args: (type_expr -> type_expr) -> (constructor_arguments -> constructor_arguments) + + +val inlined_record_name: string -> string -> string diff --git a/typing/datarepr.ml b/typing/datarepr.ml index c4d302537..4d89f79ec 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -121,7 +121,8 @@ let constructor_descrs ty_path decl manifest_decl cstrs = let type_manifest () = match decl.type_manifest, manifest_decl with | Some {desc = Tconstr(Path.Pdot (m, name, _), _, _)}, _ -> - Some (Path.Pdot (m, name ^ "." ^ Ident.name cd_id, Path.nopos)) + let s = Btype.inlined_record_name name (Ident.name cd_id) in + Some (Path.Pdot (m, s, Path.nopos)) | Some {desc = Tconstr(Path.Pident _, _, _)}, Some {type_kind = Type_variant cstrs} -> let c = diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 54cce8dcc..6b59cbae2 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -185,7 +185,7 @@ let transl_constructor_arguments loc env closed ty_name c_name = function Cstr_tuple l | Pcstr_record l -> let lbls, lbls' = transl_labels loc env closed l in - let id = Ident.create (ty_name ^ "." ^ c_name) in + let id = Ident.create (Btype.inlined_record_name ty_name c_name) in Types.Cstr_record (id, lbls'), Cstr_record lbls @@ -1217,7 +1217,8 @@ let transl_extension_constructor env check_open type_path type_params | _ -> assert false in let id = - Ident.create (Path.last type_path ^ "." ^ sext.pext_name.txt) + Ident.create (Btype.inlined_record_name (Path.last type_path) + sext.pext_name.txt) in Some p, Types.Cstr_record (id, lbls) else diff --git a/typing/typemod.ml b/typing/typemod.ml index 61295f4d7..0e86b344e 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -441,7 +441,11 @@ let typedecl_subids decl = (fun acc pcd -> match pcd.pcd_args with | Pcstr_record _ -> - {loc = pcd.pcd_name.loc; txt = decl.ptype_name.txt ^ "." ^ pcd.pcd_name.txt} :: acc + { + loc = pcd.pcd_name.loc; + txt = Btype.inlined_record_name decl.ptype_name.txt + pcd.pcd_name.txt + } :: acc | Pcstr_tuple _ -> acc ) From 4aa48476d8ff931e2f83e6428071322c28a75aac Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Tue, 23 Sep 2014 16:06:09 +0000 Subject: [PATCH 29/35] Refer to the inlined record type as !M.Foo for a constructor M.Foo. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15315 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- parsing/parser.mly | 3 ++- typing/btype.ml | 9 ++++++++- typing/btype.mli | 1 + typing/oprint.ml | 19 ++++++++++++++++++- typing/printtyp.ml | 18 ++++++++++++++---- typing/typetexp.ml | 24 ++++++++++++++++++++++++ 6 files changed, 67 insertions(+), 7 deletions(-) diff --git a/parsing/parser.mly b/parsing/parser.mly index c6b3c4de6..f723e5aeb 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -2008,10 +2008,11 @@ label_longident: type_longident: type_ident { Lident $1 } | mod_ext_longident DOT type_ident { Ldot($1, $3) } + | BANG constr_longident { $2 } ; type_ident: LIDENT { $1 } - | LIDENT DOT UIDENT { $1 ^ "." ^ $3 } +/* | LIDENT DOT UIDENT { $1 ^ "." ^ $3 } */ ; mod_longident: UIDENT { Lident $1 } diff --git a/typing/btype.ml b/typing/btype.ml index 3e49db047..6a0359e48 100644 --- a/typing/btype.ml +++ b/typing/btype.ml @@ -689,4 +689,11 @@ let backtrack (changes, old) = let inlined_record_name typ cstr = - typ ^ "." ^ cstr + Printf.sprintf "!%s.%s" typ cstr + +let uninlined_record_name s = + if s.[0] = '!' then + let i = String.index s '.' in + Some (String.sub s 1 (i - 1), String.sub s (i + 1) (String.length s - i - 1)) + else + None diff --git a/typing/btype.mli b/typing/btype.mli index 9e4d446c1..ce886bfa0 100644 --- a/typing/btype.mli +++ b/typing/btype.mli @@ -212,3 +212,4 @@ val map_type_expr_cstr_args: (type_expr -> type_expr) -> val inlined_record_name: string -> string -> string +val uninlined_record_name: string -> (string * string) option diff --git a/typing/oprint.ml b/typing/oprint.ml index 3c2d63708..50908b49b 100644 --- a/typing/oprint.ml +++ b/typing/oprint.ml @@ -27,6 +27,23 @@ let rec print_ident ppf = | Oide_apply (id1, id2) -> fprintf ppf "%a(%a)" print_ident id1 print_ident id2 + +let print_type_ident ppf = function + | Oide_ident s -> + begin match Btype.uninlined_record_name s with + | None -> pp_print_string ppf s + | Some (_typ, cstr) -> + fprintf ppf "!%s" cstr + end + | Oide_dot (m, s) as id -> + begin match Btype.uninlined_record_name s with + | None -> print_ident ppf id + | Some (_typ, cstr) -> + fprintf ppf "!%a.%s" print_ident m cstr + end + | Oide_apply _ as id -> + print_ident ppf id + let parenthesized_ident name = (List.mem name ["or"; "mod"; "land"; "lor"; "lxor"; "lsl"; "lsr"; "asr"]) || @@ -192,7 +209,7 @@ and print_simple_out_type ppf = | Otyp_constr (id, tyl) -> pp_open_box ppf 0; print_typargs ppf tyl; - print_ident ppf id; + print_type_ident ppf id; pp_close_box ppf () | Otyp_object (fields, rest) -> fprintf ppf "@[<2>< %a >@]" (print_fields rest) fields diff --git a/typing/printtyp.ml b/typing/printtyp.ml index c21c2d63c..b19d6ba35 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -69,12 +69,22 @@ let rec path ppf = function | Papply(p1, p2) -> fprintf ppf "%a(%a)" path p1 path p2 +(* Note: this logic is duplicated in Oprint.print_type_ident *) let rec string_of_out_ident = function - | Oide_ident s -> s - | Oide_dot (id, s) -> String.concat "." [string_of_out_ident id; s] + | Oide_ident s -> + begin match Btype.uninlined_record_name s with + | None -> s + | Some (_typ, cstr) -> Printf.sprintf "!%s" cstr + end + | Oide_dot (m, s) -> + begin match Btype.uninlined_record_name s with + | None -> Printf.sprintf "%s.%s" (string_of_out_ident m) s + | Some (_typ, cstr) -> + Printf.sprintf "!%s.%s" (string_of_out_ident m) cstr + end | Oide_apply (id1, id2) -> - String.concat "" - [string_of_out_ident id1; "("; string_of_out_ident id2; ")"] + Printf.sprintf "%s(%s)" (string_of_out_ident id1) + (string_of_out_ident id2) let string_of_path p = string_of_out_ident (tree_of_path p) diff --git a/typing/typetexp.ml b/typing/typetexp.ml index 523d435bc..739c18c1f 100644 --- a/typing/typetexp.ml +++ b/typing/typetexp.ml @@ -224,6 +224,30 @@ let find_type env loc lid = let find_constructor = find_component Env.lookup_constructor (fun lid -> Unbound_constructor lid) + +let find_type env loc lid = + let s = Longident.last lid in + match s.[0] with + | 'A'..'Z' -> + let cstr = find_constructor env loc lid in + if not cstr.cstr_inlined then + failwith (Printf.sprintf + "Constructor %s does not have an inline record argument" + s + ); + begin match cstr.cstr_args with + | [{desc=Tconstr(path, _, _)}] -> + let decl = + try Env.find_type path env + with Not_found -> + assert false + in + (path, decl) + | _ -> assert false + end + | _ -> + find_type env loc lid + let find_all_constructors = find_component Env.lookup_all_constructors (fun lid -> Unbound_constructor lid) From 5dac90505f84fa8ee66feedec91e3d6a6c4bb453 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Thu, 25 Sep 2014 15:16:19 +0000 Subject: [PATCH 30/35] Allow qualified reference to constructors (at least in bang-types). A regular variant type supports qualified constructors of the form: M.t.X. An extensible variant type supports qualified constructors of the form: M.t.N.X. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15332 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- parsing/longident.ml | 23 ++++++++++ parsing/longident.mli | 2 + parsing/parser.mly | 12 ++++- typing/env.ml | 35 +++++++++++++++ typing/typetexp.ml | 102 ++++++++++++++++++++++++++++++++---------- typing/typetexp.mli | 3 ++ 6 files changed, 153 insertions(+), 24 deletions(-) diff --git a/parsing/longident.ml b/parsing/longident.ml index 706881af3..bb7778725 100644 --- a/parsing/longident.ml +++ b/parsing/longident.ml @@ -39,3 +39,26 @@ let parse s = [] -> Lident "" (* should not happen, but don't put assert false so as not to crash the toplevel (see Genprintval) *) | hd :: tl -> List.fold_left (fun p s -> Ldot(p, s)) (Lident hd) tl + + + +let rec concat t = function + | Lident s -> Ldot (t, s) + | Ldot (a, s) -> Ldot (concat t a, s) + | _ -> assert false + +let is_lident s = + match s.[0] with + | 'a'..'z' | '_' -> true + | _ -> false + +let rec split_lident = function + | Ldot(t, s) when is_lident (last t) -> + Some (t, Lident s) + | Ldot(Ldot (t1, s1) as t, s) -> + begin match split_lident t with + | None -> None + | Some (x, y) -> Some (x, Ldot(y, s)) + end + | _ -> + None diff --git a/parsing/longident.mli b/parsing/longident.mli index 9e7958550..132e46901 100644 --- a/parsing/longident.mli +++ b/parsing/longident.mli @@ -20,3 +20,5 @@ type t = val flatten: t -> string list val last: t -> string val parse: string -> t +val concat: t -> t -> t +val split_lident: t -> (t * t) option diff --git a/parsing/parser.mly b/parsing/parser.mly index f723e5aeb..3da50bd15 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -1995,12 +1995,22 @@ val_longident: | mod_longident DOT val_ident { Ldot($1, $3) } ; constr_longident: - mod_longident %prec below_DOT { $1 } + constr_longident2 %prec below_DOT { $1 } | LBRACKET RBRACKET { Lident "[]" } | LPAREN RPAREN { Lident "()" } | FALSE { Lident "false" } | TRUE { Lident "true" } ; +constr_longident2: + mod_longident %prec below_DOT { $1 } + | mod_longident DOT LIDENT DOT mod_longident %prec below_DOT { + Longident.concat (Ldot($1, $3)) $5 + } + + | LIDENT DOT mod_longident %prec below_DOT { + Longident.concat (Lident $1) $3 + } +; label_longident: LIDENT { Lident $1 } | mod_longident DOT LIDENT { Ldot($1, $3) } diff --git a/typing/env.ml b/typing/env.ml index 5b89b0bd9..fe1eee1cd 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -860,6 +860,41 @@ let lookup_constructor lid env = use (); desc +(* +let lookup_constructor lid env = + match Longident.split_lident lid with + | None -> lookup_constructor lid env + | Some (ty_id, cstr_id) -> + let (ty_path, ty_decl) = lookup_type ty_id env in + match ty_decl.type_kind with + | Type_variant _ -> + let (cstrs, _, _) = find_type_descrs ty_path env in + begin match cstr_id with + | Lident s -> + List.find (fun c -> c.cstr_name = s) cstrs + | _ -> + failwith "Type %s is a regular variant type: constructor name must be local" + end + | Type_open -> + let cstrs = lookup_all_constructors cstr_id env in + let (c, use) = + try + List.find + (fun (c, _) -> + match (repr c.cstr_res).desc with + | Tconstr(p, _, _) -> Path.same ty_path p + | _ -> false + ) + cstrs + with Not_found -> + failwith "No constructor with qualified name %s found in type %s" + in + use (); + c + | _ -> + failwith "Type %s is not a variant type" +*) + let is_lident = function Lident _ -> true | _ -> false diff --git a/typing/typetexp.ml b/typing/typetexp.ml index 739c18c1f..6929614ff 100644 --- a/typing/typetexp.ml +++ b/typing/typetexp.ml @@ -49,9 +49,12 @@ type error = | Unbound_class of Longident.t | Unbound_modtype of Longident.t | Unbound_cltype of Longident.t + | Unbound_constructor_in_type of Longident.t * Longident.t | Ill_typed_functor_application of Longident.t | Illegal_reference_to_recursive_module | Access_functor_as_structure of Longident.t + | Constructor_must_be_local of Longident.t + | Not_a_variant_type of Longident.t exception Error of Location.t * Env.t * error exception Error_forward of Location.error @@ -225,29 +228,6 @@ let find_type env loc lid = let find_constructor = find_component Env.lookup_constructor (fun lid -> Unbound_constructor lid) -let find_type env loc lid = - let s = Longident.last lid in - match s.[0] with - | 'A'..'Z' -> - let cstr = find_constructor env loc lid in - if not cstr.cstr_inlined then - failwith (Printf.sprintf - "Constructor %s does not have an inline record argument" - s - ); - begin match cstr.cstr_args with - | [{desc=Tconstr(path, _, _)}] -> - let decl = - try Env.find_type path env - with Not_found -> - assert false - in - (path, decl) - | _ -> assert false - end - | _ -> - find_type env loc lid - let find_all_constructors = find_component Env.lookup_all_constructors (fun lid -> Unbound_constructor lid) @@ -306,6 +286,70 @@ let unbound_label_error env lid = narrow_unbound_lid_error env lid.loc lid.txt (fun lid -> Unbound_label lid) +let find_constructor_in_type env loc ty_id cstr_id = + let err e = raise (Error (loc, env, e)) in + let (ty_path, ty_decl) = find_type env loc ty_id in + match ty_decl.type_kind with + | Type_variant _ -> + let (cstrs, _, _) = + try Env.find_type_descrs ty_path env + with Not_found -> assert false + in + begin match cstr_id with + | Longident.Lident s -> + begin try List.find (fun c -> c.cstr_name = s) cstrs + with Not_found -> + err (Unbound_constructor_in_type (cstr_id, ty_id)) + end + | _ -> + err (Constructor_must_be_local ty_id) + end + | Type_open -> + let cstrs = find_all_constructors env loc cstr_id in + let has_type (c, _) = + match (repr c.cstr_res).desc with + | Tconstr(p, _, _) -> Path.same ty_path p + | _ -> false + in + let (c, use) = + try List.find has_type cstrs + with Not_found -> + err (Unbound_constructor_in_type (cstr_id, ty_id)) + in + use (); + c + | _ -> + err (Not_a_variant_type ty_id) + +let find_constructor env loc lid = + match Longident.split_lident lid with + | None -> find_constructor env loc lid + | Some (ty_id, cstr_id) -> find_constructor_in_type env loc ty_id cstr_id + +let find_type env loc lid = + let s = Longident.last lid in + match s.[0] with + | 'A'..'Z' -> + let cstr = find_constructor env loc lid in + if not cstr.cstr_inlined then + failwith (Printf.sprintf + "Constructor %s does not have an inline record argument" + s + ); + begin match cstr.cstr_args with + | [{desc=Tconstr(path, _, _)}] -> + let decl = + try Env.find_type path env + with Not_found -> + assert false + in + (path, decl) + | _ -> assert false + end + | _ -> + find_type env loc lid + + (* Support for first-class modules. *) let transl_modtype_longident = ref (fun _ -> assert false) @@ -1021,12 +1065,24 @@ let report_error env ppf = function | Unbound_cltype lid -> fprintf ppf "Unbound class type %a" longident lid; spellcheck ppf Env.fold_cltypes env lid; + | Unbound_constructor_in_type (c_lid, t_lid) -> + fprintf ppf "Unbound constructor %a in type %a" longident c_lid + longident t_lid | Ill_typed_functor_application lid -> fprintf ppf "Ill-typed functor application %a" longident lid | Illegal_reference_to_recursive_module -> fprintf ppf "Illegal recursive module reference" | Access_functor_as_structure lid -> fprintf ppf "The module %a is a functor, not a structure" longident lid + | Constructor_must_be_local lid -> + fprintf ppf + "The type %a is a regular variant type (not an extensible one);@ " + longident lid; + fprintf ppf "qualified constructors are not allowed" + | Not_a_variant_type lid -> + fprintf ppf + "The type %a is not a variant type" + longident lid let () = Location.register_error_of_exn diff --git a/typing/typetexp.mli b/typing/typetexp.mli index 7bff403f0..a1ae0d694 100644 --- a/typing/typetexp.mli +++ b/typing/typetexp.mli @@ -61,9 +61,12 @@ type error = | Unbound_class of Longident.t | Unbound_modtype of Longident.t | Unbound_cltype of Longident.t + | Unbound_constructor_in_type of Longident.t * Longident.t | Ill_typed_functor_application of Longident.t | Illegal_reference_to_recursive_module | Access_functor_as_structure of Longident.t + | Constructor_must_be_local of Longident.t + | Not_a_variant_type of Longident.t exception Error of Location.t * Env.t * error From bd9c17c8d551203418169c52bb2de8952ae0bd16 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Thu, 25 Sep 2014 15:22:06 +0000 Subject: [PATCH 31/35] Make it clear that type-qualified constructors are only allowed in bang types. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15333 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- parsing/parser.mly | 17 +++++++---------- typing/typetexp.ml | 4 ++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/parsing/parser.mly b/parsing/parser.mly index 3da50bd15..e3dad0649 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -1995,21 +1995,18 @@ val_longident: | mod_longident DOT val_ident { Ldot($1, $3) } ; constr_longident: - constr_longident2 %prec below_DOT { $1 } + mod_longident %prec below_DOT { $1 } | LBRACKET RBRACKET { Lident "[]" } | LPAREN RPAREN { Lident "()" } | FALSE { Lident "false" } | TRUE { Lident "true" } ; -constr_longident2: +constr_qual_longident: mod_longident %prec below_DOT { $1 } - | mod_longident DOT LIDENT DOT mod_longident %prec below_DOT { - Longident.concat (Ldot($1, $3)) $5 - } - - | LIDENT DOT mod_longident %prec below_DOT { - Longident.concat (Lident $1) $3 - } + | mod_longident DOT LIDENT DOT mod_longident %prec below_DOT + { Longident.concat (Ldot($1, $3)) $5 } + | LIDENT DOT mod_longident %prec below_DOT + { Longident.concat (Lident $1) $3 } ; label_longident: LIDENT { Lident $1 } @@ -2018,7 +2015,7 @@ label_longident: type_longident: type_ident { Lident $1 } | mod_ext_longident DOT type_ident { Ldot($1, $3) } - | BANG constr_longident { $2 } + | BANG constr_qual_longident { $2 } ; type_ident: LIDENT { $1 } diff --git a/typing/typetexp.ml b/typing/typetexp.ml index 6929614ff..64e301a62 100644 --- a/typing/typetexp.ml +++ b/typing/typetexp.ml @@ -321,7 +321,7 @@ let find_constructor_in_type env loc ty_id cstr_id = | _ -> err (Not_a_variant_type ty_id) -let find_constructor env loc lid = +let find_qual_constructor env loc lid = match Longident.split_lident lid with | None -> find_constructor env loc lid | Some (ty_id, cstr_id) -> find_constructor_in_type env loc ty_id cstr_id @@ -330,7 +330,7 @@ let find_type env loc lid = let s = Longident.last lid in match s.[0] with | 'A'..'Z' -> - let cstr = find_constructor env loc lid in + let cstr = find_qual_constructor env loc lid in if not cstr.cstr_inlined then failwith (Printf.sprintf "Constructor %s does not have an inline record argument" From 1fb70280aac32f9013c05459fc7ea009124bb992 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Fri, 26 Sep 2014 11:46:54 +0000 Subject: [PATCH 32/35] Cleanup. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15348 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/typemod.ml | 1 - 1 file changed, 1 deletion(-) diff --git a/typing/typemod.ml b/typing/typemod.ml index 4f9da26de..f057083c8 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -640,7 +640,6 @@ and transl_signature env sg = (get_extension_constructors rem) && Subst.sub_ids_ext ext.ext_type = [] in - if shadowed then print_endline "XXXX" else print_endline "YYYYY"; mksig (Tsig_exception ext) env loc :: trem, (if shadowed then rem else Sig_typext(ext.ext_id, ext.ext_type, Text_exception) :: rem), From 1f203ae8468cda8eb143e6538383e9e7c160011f Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Fri, 26 Sep 2014 15:34:06 +0000 Subject: [PATCH 33/35] Disallow multiple declaration of extension constructors with the same name in the same module. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15353 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/typemod.ml | 206 +++++++++++++++------------------------------- 1 file changed, 67 insertions(+), 139 deletions(-) diff --git a/typing/typemod.ml b/typing/typemod.ml index f057083c8..98509d052 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -431,72 +431,48 @@ let check cl loc set_ref name = then raise(Error(loc, Env.empty, Repeated_name(cl, name))) else set_ref := StringSet.add name !set_ref -let check_name cl set_ref name = - check cl name.loc set_ref name.txt +type names = + { + types: StringSet.t ref; + modules: StringSet.t ref; + modtypes: StringSet.t ref; + typexts: StringSet.t ref; + } -let typedecl_subids decl = - match decl.ptype_kind with - | Ptype_variant cstrs -> - List.fold_left - (fun acc pcd -> - match pcd.pcd_args with - | Pcstr_record _ -> - { - loc = pcd.pcd_name.loc; - txt = Btype.inlined_record_name decl.ptype_name.txt - pcd.pcd_name.txt - } :: acc - | Pcstr_tuple _ -> - acc - ) - [] cstrs - | _ -> - [] +let new_names () = + { + types = ref StringSet.empty; + modules = ref StringSet.empty; + modtypes = ref StringSet.empty; + typexts = ref StringSet.empty; + } -let check_types loc type_names ids = - List.iter - (fun id -> check "type" loc type_names (Ident.name id)) - ids -let check_ext_decl loc type_names decl = - check_types loc type_names (Subst.sub_ids_ext decl) +let check_name check names name = check names name.loc name.txt +let check_type names loc s = check "type" loc names.types s +let check_module names loc s = check "module" loc names.modules s +let check_modtype names loc s = check "type" loc names.modtypes s +let check_typext names loc s = check "extension constructor" loc names.typexts s -let check_sig_item type_names module_names modtype_names loc = function - Sig_type(id, decl, _) -> - check_types loc type_names (id :: Subst.sub_ids decl) - | Sig_module(id, _, _) -> - check "module" loc module_names (Ident.name id) - | Sig_modtype(id, _) -> - check "module type" loc modtype_names (Ident.name id) - | Sig_typext(_, ext, _) -> - check_ext_decl loc type_names ext + +let check_sig_item names loc = function + | Sig_type(id, _, _) -> check_type names loc (Ident.name id) + | Sig_module(id, _, _) -> check_module names loc (Ident.name id) + | Sig_modtype(id, _) -> check_modtype names loc (Ident.name id) + | Sig_typext(id, _, _) -> check_typext names loc (Ident.name id) | _ -> () -let rec remove_duplicates val_ids ext_ids = function +let rec remove_duplicates val_ids = function [] -> [] - | Sig_value (id, _) :: rem - when List.exists (Ident.equal id) val_ids -> - remove_duplicates val_ids ext_ids rem - | Sig_typext (id, decl, Text_first) :: Sig_typext (id2, ext2, Text_next) :: rem - when List.exists (Ident.equal id) ext_ids && Subst.sub_ids_ext decl = [] -> - (* #6510 *) - remove_duplicates val_ids ext_ids - (Sig_typext (id2, ext2, Text_first) :: rem) - | Sig_typext (id, decl, _) :: rem - when List.exists (Ident.equal id) ext_ids && Subst.sub_ids_ext decl = [] -> - remove_duplicates val_ids ext_ids rem - | f :: rem -> f :: remove_duplicates val_ids ext_ids rem + | Sig_value (id, _) :: rem when List.exists (Ident.equal id) val_ids -> + remove_duplicates val_ids rem + | f :: rem -> f :: remove_duplicates val_ids rem let rec get_values = function [] -> [] | Sig_value (id, _) :: rem -> id :: get_values rem | f :: rem -> get_values rem -let rec get_extension_constructors = function - [] -> [] - | Sig_typext (id, _, _) :: rem -> id :: get_extension_constructors rem - | f :: rem -> get_extension_constructors rem - (* Check and translate a module type expression *) let transl_modtype_longident loc env lid = @@ -577,9 +553,7 @@ let rec transl_modtype env smty = raise (Error_forward (Typetexp.error_of_extension ext)) and transl_signature env sg = - let type_names = ref StringSet.empty - and module_names = ref StringSet.empty - and modtype_names = ref StringSet.empty in + let names = new_names () in let rec transl_sig env sg = Ctype.init_def(Ident.current_time()); match sg with @@ -597,10 +571,7 @@ and transl_signature env sg = final_env | Psig_type sdecls -> List.iter - (fun decl -> - List.iter (check_name "type" type_names) - (decl.ptype_name :: typedecl_subids decl) - ) + (fun decl -> check_name check_type names decl.ptype_name) sdecls; let (decls, newenv) = Typedecl.transl_type_decl env sdecls in let (trem, rem, final_env) = transl_sig newenv srem in @@ -608,44 +579,26 @@ and transl_signature env sg = prepend_sig_types decls rem, final_env | Psig_typext styext -> + List.iter + (fun pext -> check_name check_typext names pext.pext_name) + styext.ptyext_constructors; let (tyext, newenv) = Typedecl.transl_type_extension false env item.psig_loc styext in - List.iter - (fun ext -> - check_ext_decl ext.ext_loc type_names ext.ext_type - ) - tyext.tyext_constructors; let (trem, rem, final_env) = transl_sig newenv srem in - let constructors = - List.filter - (fun ext -> not - (List.exists (Ident.equal ext.ext_id) - (get_extension_constructors rem)) - && Subst.sub_ids_ext ext.ext_type = [] - ) - tyext.tyext_constructors - in - mksig (Tsig_typext tyext) env loc :: trem, - map_ext (fun es ext -> - Sig_typext(ext.ext_id, ext.ext_type, es)) constructors rem, - final_env + mksig (Tsig_typext tyext) env loc :: trem, + map_ext (fun es ext ->Sig_typext(ext.ext_id, ext.ext_type, es)) + tyext.tyext_constructors rem, + final_env | Psig_exception sext -> + check_name check_typext names sext.pext_name; let (ext, newenv) = Typedecl.transl_exception env sext in - check_ext_decl ext.ext_loc type_names ext.ext_type; let (trem, rem, final_env) = transl_sig newenv srem in - let shadowed = - List.exists - (Ident.equal ext.ext_id) - (get_extension_constructors rem) - && Subst.sub_ids_ext ext.ext_type = [] - in mksig (Tsig_exception ext) env loc :: trem, - (if shadowed then rem else - Sig_typext(ext.ext_id, ext.ext_type, Text_exception) :: rem), + (Sig_typext(ext.ext_id, ext.ext_type, Text_exception) :: rem), final_env | Psig_module pmd -> - check_name "module" module_names pmd.pmd_name; + check_name check_module names pmd.pmd_name; let tmty = transl_modtype env pmd.pmd_type in let md = { md_type=tmty.mty_type; @@ -664,7 +617,7 @@ and transl_signature env sg = final_env | Psig_recmodule sdecls -> List.iter - (fun pmd -> check_name "module" module_names pmd.pmd_name) + (fun pmd -> check_name check_module names pmd.pmd_name) sdecls; let (decls, newenv) = transl_recmodule_modtypes item.psig_loc env sdecls in @@ -680,7 +633,7 @@ and transl_signature env sg = final_env | Psig_modtype pmtd -> let newenv, mtd, sg = - transl_modtype_decl modtype_names env item.psig_loc pmtd + transl_modtype_decl names env item.psig_loc pmtd in let (trem, rem, final_env) = transl_sig newenv srem in mksig (Tsig_modtype mtd) env loc :: trem, @@ -697,10 +650,7 @@ and transl_signature env sg = let mty = tmty.mty_type in let sg = Subst.signature Subst.identity (extract_sig env smty.pmty_loc mty) in - List.iter - (check_sig_item type_names module_names modtype_names - item.psig_loc) - sg; + List.iter (check_sig_item names item.psig_loc) sg; let newenv = Env.add_signature sg env in let incl = { incl_mod = tmty; @@ -711,12 +661,11 @@ and transl_signature env sg = in let (trem, rem, final_env) = transl_sig newenv srem in mksig (Tsig_include incl) env loc :: trem, - remove_duplicates (get_values rem) - (get_extension_constructors rem) sg @ rem, + remove_duplicates (get_values rem) sg @ rem, final_env | Psig_class cl -> List.iter - (fun {pci_name = name} -> check_name "type" type_names name) + (fun {pci_name} -> check_name check_type names pci_name) cl; let (classes, newenv) = Typeclass.class_descriptions env cl in let (trem, rem, final_env) = transl_sig newenv srem in @@ -738,7 +687,7 @@ and transl_signature env sg = final_env | Psig_class_type cl -> List.iter - (fun {pci_name = name} -> check_name "type" type_names name) + (fun {pci_name} -> check_name check_type names pci_name) cl; let (classes, newenv) = Typeclass.class_type_declarations env cl in let (trem,rem, final_env) = transl_sig newenv srem in @@ -770,9 +719,9 @@ and transl_signature env sg = ((Cmt_format.Partial_signature sg) :: previous_saved_types); sg -and transl_modtype_decl modtype_names env loc +and transl_modtype_decl names env loc {pmtd_name; pmtd_type; pmtd_attributes; pmtd_loc} = - check_name "module type" modtype_names pmtd_name; + check_name check_modtype names pmtd_name; let tmty = Misc.may_map (transl_modtype env) pmtd_type in let decl = { @@ -858,29 +807,17 @@ and transl_recmodule_modtypes loc env sdecls = let simplify_signature sg = let rec aux = function - | [] -> [], StringSet.empty, StringSet.empty + | [] -> [], StringSet.empty | (Sig_value(id, descr) as component) :: sg -> - let (sg, val_names, ext_names) as k = aux sg in + let (sg, val_names) as k = aux sg in let name = Ident.name id in if StringSet.mem name val_names then k - else (component :: sg, StringSet.add name val_names, ext_names) - | (Sig_typext(id, ext, es) as component) :: sg -> - let (sg, val_names, ext_names) as k = aux sg in - let name = Ident.name id in - if StringSet.mem name ext_names && Subst.sub_ids_ext ext = [] then - (* #6510 *) - match es, sg with - | Text_first, Sig_typext(id2, ext2, Text_next) :: rest -> - (Sig_typext(id2, ext2, Text_first) :: rest, - val_names, ext_names) - | _ -> k - else - (component :: sg, val_names, StringSet.add name ext_names) + else (component :: sg, StringSet.add name val_names) | component :: sg -> - let (sg, val_names, ext_names) = aux sg in - (component :: sg, val_names, ext_names) + let (sg, val_names) = aux sg in + (component :: sg, val_names) in - let (sg, _, _) = aux sg in + let (sg, _) = aux sg in sg (* Try to convert a module expression to a module path. *) @@ -1245,10 +1182,7 @@ let rec type_module ?(alias=false) sttn funct_body anchor env smod = raise (Error_forward (Typetexp.error_of_extension ext)) and type_structure ?(toplevel = false) funct_body anchor env sstr scope = - let type_names = ref StringSet.empty - and module_names = ref StringSet.empty - and modtype_names = ref StringSet.empty in - + let names = new_names () in let type_str_item env srem {pstr_loc = loc; pstr_desc = desc} = match desc with | Pstr_eval (sexpr, attrs) -> @@ -1281,39 +1215,34 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = Tstr_primitive desc, [Sig_value(desc.val_id, desc.val_val)], newenv | Pstr_type sdecls -> List.iter - (fun decl -> - List.iter (check_name "type" type_names) - (decl.ptype_name :: typedecl_subids decl) - ) + (fun decl -> check_name check_type names decl.ptype_name) sdecls; let (decls, newenv) = Typedecl.transl_type_decl env sdecls in Tstr_type decls, prepend_sig_types decls [], enrich_type_decls anchor decls env newenv | Pstr_typext styext -> + List.iter + (fun pext -> check_name check_typext names pext.pext_name) + styext.ptyext_constructors; let (tyext, newenv) = Typedecl.transl_type_extension true env loc styext in - List.iter - (fun ext -> - check_ext_decl ext.ext_loc type_names ext.ext_type - ) - tyext.tyext_constructors; (Tstr_typext tyext, map_ext (fun es ext -> Sig_typext(ext.ext_id, ext.ext_type, es)) tyext.tyext_constructors [], newenv) | Pstr_exception sext -> + check_name check_typext names sext.pext_name; let (ext, newenv) = Typedecl.transl_exception env sext in - check_ext_decl ext.ext_loc type_names ext.ext_type; Tstr_exception ext, [Sig_typext(ext.ext_id, ext.ext_type, Text_exception)], newenv | Pstr_module {pmb_name = name; pmb_expr = smodl; pmb_attributes = attrs; pmb_loc; } -> - check_name "module" module_names name; + check_name check_module names name; let modl = type_module ~alias:true true funct_body (anchor_submodule name.txt anchor) env smodl in @@ -1350,7 +1279,7 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = sbind in List.iter - (fun (name, _, _, _, _) -> check_name "module" module_names name) + (fun (name, _, _, _, _) -> check_name check_module names name) sbind; let (decls, newenv) = transl_recmodule_modtypes loc env @@ -1397,7 +1326,7 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = | Pstr_modtype pmtd -> (* check that it is non-abstract *) let newenv, mtd, sg = - transl_modtype_decl modtype_names env loc pmtd + transl_modtype_decl names env loc pmtd in Tstr_modtype mtd, [sg], newenv | Pstr_open sod -> @@ -1405,7 +1334,7 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = Tstr_open od, [], newenv | Pstr_class cl -> List.iter - (fun {pci_name = name} -> check_name "type" type_names name) + (fun {pci_name} -> check_name check_type names pci_name) cl; let (classes, new_env) = Typeclass.class_declarations env cl in Tstr_class @@ -1432,7 +1361,7 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = new_env | Pstr_class_type cl -> List.iter - (fun {pci_name = name} -> check_name "type" type_names name) + (fun {pci_name} -> check_name check_type names pci_name) cl; let (classes, new_env) = Typeclass.class_type_declarations env cl in Tstr_class_type @@ -1478,8 +1407,7 @@ and type_structure ?(toplevel = false) funct_body anchor env sstr scope = sg | _ -> sg in - List.iter - (check_sig_item type_names module_names modtype_names loc) sg; + List.iter (check_sig_item names loc) sg; let new_env = Env.add_signature sg env in let incl = { incl_mod = modl; From e8fd41e2e833bf2d057c1bb6f14fe19d0960f24f Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Fri, 26 Sep 2014 16:25:29 +0000 Subject: [PATCH 34/35] Get rid of type-qualifed constructor paths for extensible types. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15355 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- .depend | 24 ++++++++++++------------ parsing/longident.ml | 19 +++---------------- parsing/longident.mli | 4 ++-- parsing/parser.mly | 8 ++++---- typing/typetexp.ml | 38 ++++++-------------------------------- typing/typetexp.mli | 3 +-- 6 files changed, 28 insertions(+), 68 deletions(-) diff --git a/.depend b/.depend index 9b6b9ffb6..1096a349f 100644 --- a/.depend +++ b/.depend @@ -228,10 +228,10 @@ typing/mtype.cmx : typing/types.cmx typing/subst.cmx typing/path.cmx \ utils/misc.cmx parsing/location.cmx typing/ident.cmx typing/env.cmx \ typing/ctype.cmx utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi \ typing/mtype.cmi -typing/oprint.cmo : typing/outcometree.cmi parsing/asttypes.cmi \ - typing/oprint.cmi -typing/oprint.cmx : typing/outcometree.cmi parsing/asttypes.cmi \ - typing/oprint.cmi +typing/oprint.cmo : typing/outcometree.cmi typing/btype.cmi \ + parsing/asttypes.cmi typing/oprint.cmi +typing/oprint.cmx : typing/outcometree.cmi typing/btype.cmx \ + parsing/asttypes.cmi typing/oprint.cmi typing/parmatch.cmo : utils/warnings.cmi typing/types.cmi \ typing/typedtree.cmi typing/subst.cmi typing/predef.cmi typing/path.cmi \ parsing/parsetree.cmi utils/misc.cmi parsing/longident.cmi \ @@ -503,10 +503,10 @@ bytecomp/printinstr.cmx : bytecomp/printlambda.cmx parsing/location.cmx \ bytecomp/lambda.cmx bytecomp/instruct.cmx typing/ident.cmx \ bytecomp/printinstr.cmi bytecomp/printlambda.cmo : typing/types.cmi typing/primitive.cmi \ - parsing/location.cmi bytecomp/lambda.cmi typing/ident.cmi \ + typing/path.cmi parsing/location.cmi bytecomp/lambda.cmi typing/ident.cmi \ parsing/asttypes.cmi bytecomp/printlambda.cmi bytecomp/printlambda.cmx : typing/types.cmx typing/primitive.cmx \ - parsing/location.cmx bytecomp/lambda.cmx typing/ident.cmx \ + typing/path.cmx parsing/location.cmx bytecomp/lambda.cmx typing/ident.cmx \ parsing/asttypes.cmi bytecomp/printlambda.cmi bytecomp/runtimedef.cmo : bytecomp/runtimedef.cmi bytecomp/runtimedef.cmx : bytecomp/runtimedef.cmi @@ -927,12 +927,12 @@ driver/optmain.cmx : utils/warnings.cmx asmcomp/printmach.cmx \ driver/compenv.cmx utils/clflags.cmx asmcomp/asmpackager.cmx \ asmcomp/asmlink.cmx asmcomp/asmlibrarian.cmx asmcomp/arch.cmx \ driver/optmain.cmi -driver/pparse.cmo : parsing/parsetree.cmi parsing/parse.cmi utils/misc.cmi \ - parsing/location.cmi utils/config.cmi utils/clflags.cmi utils/ccomp.cmi \ - parsing/ast_mapper.cmi parsing/ast_helper.cmi driver/pparse.cmi -driver/pparse.cmx : parsing/parsetree.cmi parsing/parse.cmx utils/misc.cmx \ - parsing/location.cmx utils/config.cmx utils/clflags.cmx utils/ccomp.cmx \ - parsing/ast_mapper.cmx parsing/ast_helper.cmx driver/pparse.cmi +driver/pparse.cmo : parsing/parse.cmi utils/misc.cmi parsing/location.cmi \ + utils/config.cmi utils/clflags.cmi utils/ccomp.cmi parsing/ast_mapper.cmi \ + driver/pparse.cmi +driver/pparse.cmx : parsing/parse.cmx utils/misc.cmx parsing/location.cmx \ + utils/config.cmx utils/clflags.cmx utils/ccomp.cmx parsing/ast_mapper.cmx \ + driver/pparse.cmi toplevel/genprintval.cmi : typing/types.cmi typing/path.cmi \ typing/outcometree.cmi typing/env.cmi toplevel/opttopdirs.cmi : parsing/longident.cmi diff --git a/parsing/longident.ml b/parsing/longident.ml index bb7778725..95030ba51 100644 --- a/parsing/longident.ml +++ b/parsing/longident.ml @@ -41,24 +41,11 @@ let parse s = | hd :: tl -> List.fold_left (fun p s -> Ldot(p, s)) (Lident hd) tl - -let rec concat t = function - | Lident s -> Ldot (t, s) - | Ldot (a, s) -> Ldot (concat t a, s) - | _ -> assert false - let is_lident s = match s.[0] with | 'a'..'z' | '_' -> true | _ -> false -let rec split_lident = function - | Ldot(t, s) when is_lident (last t) -> - Some (t, Lident s) - | Ldot(Ldot (t1, s1) as t, s) -> - begin match split_lident t with - | None -> None - | Some (x, y) -> Some (x, Ldot(y, s)) - end - | _ -> - None +let typqual_constructor = function + | Ldot(t, s) when is_lident (last t) -> Some (t, s) + | _ -> None diff --git a/parsing/longident.mli b/parsing/longident.mli index 132e46901..431c73757 100644 --- a/parsing/longident.mli +++ b/parsing/longident.mli @@ -20,5 +20,5 @@ type t = val flatten: t -> string list val last: t -> string val parse: string -> t -val concat: t -> t -> t -val split_lident: t -> (t * t) option + +val typqual_constructor: t -> (t * string) option diff --git a/parsing/parser.mly b/parsing/parser.mly index e3dad0649..4885802af 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -2003,10 +2003,10 @@ constr_longident: ; constr_qual_longident: mod_longident %prec below_DOT { $1 } - | mod_longident DOT LIDENT DOT mod_longident %prec below_DOT - { Longident.concat (Ldot($1, $3)) $5 } - | LIDENT DOT mod_longident %prec below_DOT - { Longident.concat (Lident $1) $3 } + | mod_longident DOT LIDENT DOT UIDENT %prec below_DOT + { Ldot(Ldot($1, $3), $5) } + | LIDENT DOT UIDENT %prec below_DOT + { Ldot(Lident $1, $3) } ; label_longident: LIDENT { Lident $1 } diff --git a/typing/typetexp.ml b/typing/typetexp.ml index 64e301a62..8e72f79d7 100644 --- a/typing/typetexp.ml +++ b/typing/typetexp.ml @@ -49,11 +49,10 @@ type error = | Unbound_class of Longident.t | Unbound_modtype of Longident.t | Unbound_cltype of Longident.t - | Unbound_constructor_in_type of Longident.t * Longident.t + | Unbound_constructor_in_type of string * Longident.t | Ill_typed_functor_application of Longident.t | Illegal_reference_to_recursive_module | Access_functor_as_structure of Longident.t - | Constructor_must_be_local of Longident.t | Not_a_variant_type of Longident.t exception Error of Location.t * Env.t * error @@ -295,34 +294,14 @@ let find_constructor_in_type env loc ty_id cstr_id = try Env.find_type_descrs ty_path env with Not_found -> assert false in - begin match cstr_id with - | Longident.Lident s -> - begin try List.find (fun c -> c.cstr_name = s) cstrs - with Not_found -> - err (Unbound_constructor_in_type (cstr_id, ty_id)) - end - | _ -> - err (Constructor_must_be_local ty_id) + begin try List.find (fun c -> c.cstr_name = cstr_id) cstrs + with Not_found -> err (Unbound_constructor_in_type (cstr_id, ty_id)) end - | Type_open -> - let cstrs = find_all_constructors env loc cstr_id in - let has_type (c, _) = - match (repr c.cstr_res).desc with - | Tconstr(p, _, _) -> Path.same ty_path p - | _ -> false - in - let (c, use) = - try List.find has_type cstrs - with Not_found -> - err (Unbound_constructor_in_type (cstr_id, ty_id)) - in - use (); - c | _ -> err (Not_a_variant_type ty_id) let find_qual_constructor env loc lid = - match Longident.split_lident lid with + match Longident.typqual_constructor lid with | None -> find_constructor env loc lid | Some (ty_id, cstr_id) -> find_constructor_in_type env loc ty_id cstr_id @@ -1066,7 +1045,7 @@ let report_error env ppf = function fprintf ppf "Unbound class type %a" longident lid; spellcheck ppf Env.fold_cltypes env lid; | Unbound_constructor_in_type (c_lid, t_lid) -> - fprintf ppf "Unbound constructor %a in type %a" longident c_lid + fprintf ppf "Unbound constructor %s in type %a" c_lid longident t_lid | Ill_typed_functor_application lid -> fprintf ppf "Ill-typed functor application %a" longident lid @@ -1074,14 +1053,9 @@ let report_error env ppf = function fprintf ppf "Illegal recursive module reference" | Access_functor_as_structure lid -> fprintf ppf "The module %a is a functor, not a structure" longident lid - | Constructor_must_be_local lid -> - fprintf ppf - "The type %a is a regular variant type (not an extensible one);@ " - longident lid; - fprintf ppf "qualified constructors are not allowed" | Not_a_variant_type lid -> fprintf ppf - "The type %a is not a variant type" + "The type %a is not a regular variant type" longident lid let () = diff --git a/typing/typetexp.mli b/typing/typetexp.mli index a1ae0d694..6d7ec7a88 100644 --- a/typing/typetexp.mli +++ b/typing/typetexp.mli @@ -61,11 +61,10 @@ type error = | Unbound_class of Longident.t | Unbound_modtype of Longident.t | Unbound_cltype of Longident.t - | Unbound_constructor_in_type of Longident.t * Longident.t + | Unbound_constructor_in_type of string * Longident.t | Ill_typed_functor_application of Longident.t | Illegal_reference_to_recursive_module | Access_functor_as_structure of Longident.t - | Constructor_must_be_local of Longident.t | Not_a_variant_type of Longident.t exception Error of Location.t * Env.t * error From 6ca707d0665b2015a5690de8c560e27f6371e443 Mon Sep 17 00:00:00 2001 From: Alain Frisch Date: Mon, 29 Sep 2014 14:06:20 +0000 Subject: [PATCH 35/35] Cleanup. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/constructors_with_record3@15368 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- typing/env.ml | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/typing/env.ml b/typing/env.ml index fe1eee1cd..5b89b0bd9 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -860,41 +860,6 @@ let lookup_constructor lid env = use (); desc -(* -let lookup_constructor lid env = - match Longident.split_lident lid with - | None -> lookup_constructor lid env - | Some (ty_id, cstr_id) -> - let (ty_path, ty_decl) = lookup_type ty_id env in - match ty_decl.type_kind with - | Type_variant _ -> - let (cstrs, _, _) = find_type_descrs ty_path env in - begin match cstr_id with - | Lident s -> - List.find (fun c -> c.cstr_name = s) cstrs - | _ -> - failwith "Type %s is a regular variant type: constructor name must be local" - end - | Type_open -> - let cstrs = lookup_all_constructors cstr_id env in - let (c, use) = - try - List.find - (fun (c, _) -> - match (repr c.cstr_res).desc with - | Tconstr(p, _, _) -> Path.same ty_path p - | _ -> false - ) - cstrs - with Not_found -> - failwith "No constructor with qualified name %s found in type %s" - in - use (); - c - | _ -> - failwith "Type %s is not a variant type" -*) - let is_lident = function Lident _ -> true | _ -> false