From 32f80ba12145a318d6c84047576c4b4cd01a1760 Mon Sep 17 00:00:00 2001 From: T6 Date: Tue, 5 Mar 2024 09:48:13 -0500 Subject: [PATCH] rework expand (#73) --- src/host/readback.rs | 4 +- src/run/net.rs | 86 +++++++++++-------- src/run/parallel.rs | 3 +- src/transform/pre_reduce.rs | 1 - tests/cli.rs | 5 +- tests/lists.rs | 24 +++--- tests/numeric.rs | 4 +- .../tests__run@alloc_big_tree.hvmc.snap | 4 +- .../tests__run@alloc_small_tree.hvmc.snap | 4 +- .../snapshots/tests__run@arithmetic.hvmc.snap | 4 +- .../tests__run@chained_ops.hvmc.snap | 4 +- ...sts__run@church_encoding__church.hvmc.snap | 4 +- .../snapshots/tests__run@church_exp.hvmc.snap | 4 +- .../snapshots/tests__run@church_mul.hvmc.snap | 4 +- tests/snapshots/tests__run@dec_bits.hvmc.snap | 4 +- .../tests__run@dec_bits_tree.hvmc.snap | 4 +- ...tests__run@lambda_calculus__hoas.hvmc.snap | 4 +- .../tests__run@list_put_got.hvmc.snap | 6 +- tests/snapshots/tests__run@log.hvmc.snap | 4 +- .../tests__run@machine_u32__num_add.hvmc.snap | 4 +- ...ests__run@machine_u32__num_match.hvmc.snap | 4 +- .../snapshots/tests__run@neg_fusion.hvmc.snap | 4 +- tests/snapshots/tests__run@queue.hvmc.snap | 4 +- ...@sort__bitonic__bitonic_sort_lam.hvmc.snap | 4 +- ...sts__run@sort__merge__merge_sort.hvmc.snap | 4 +- ..._run@sort__radix__radix_sort_lam.hvmc.snap | 4 +- ...ests__run@stress_tests__all_tree.hvmc.snap | 4 +- ...sts__run@stress_tests__apelacion.hvmc.snap | 4 +- .../tests__run@stress_tests__boom.hvmc.snap | 4 +- .../tests__run@stress_tests__burn.hvmc.snap | 4 +- ...tests__run@stress_tests__fib_rec.hvmc.snap | 4 +- ...tests__run@stress_tests__sum_rec.hvmc.snap | 4 +- ...ests__run@stress_tests__sum_tail.hvmc.snap | 4 +- ...ests__run@stress_tests__sum_tree.hvmc.snap | 4 +- ...ts__run@stress_tests__tuple_rots.hvmc.snap | 4 +- .../snapshots/tests__run@very_large.hvmc.snap | 4 +- tests/tests.rs | 10 +-- 37 files changed, 135 insertions(+), 120 deletions(-) diff --git a/src/host/readback.rs b/src/host/readback.rs index 0e88663f..08a5c6db 100644 --- a/src/host/readback.rs +++ b/src/host/readback.rs @@ -44,7 +44,8 @@ impl<'a> ReadbackState<'a> { /// `vars` map. fn read_port(&mut self, port: Port, wire: Option) -> Tree { maybe_grow(move || match port.tag() { - Tag::Var => { + Tag::Var | Tag::Red => { + // todo: resolve redirects let key = wire.unwrap().addr().min(port.addr()); Tree::Var { nam: create_var(match self.vars.entry(key) { @@ -53,7 +54,6 @@ impl<'a> ReadbackState<'a> { }), } } - Tag::Red => self.read_wire(port.wire()), Tag::Ref if port == Port::ERA => Tree::Era, Tag::Ref => Tree::Ref { nam: self.host.back[&port.addr()].clone() }, Tag::Num => Tree::Num { val: port.num() }, diff --git a/src/run/net.rs b/src/run/net.rs index 7717fe40..5ecbed83 100644 --- a/src/run/net.rs +++ b/src/run/net.rs @@ -25,11 +25,9 @@ impl<'h, M: Mode> Net<'h, M> { Net { linker: Linker::new(heap), tid: 0, tids: 1, trgs: Box::new_uninit_slice(1 << 16), root } } - /// Boots a net from a Ref. + /// Boots a net from a Def. pub fn boot(&mut self, def: &Def) { - let def = Port::new_ref(def); - trace!(self, def); - self.root.set_target(def); + self.call(Port::new_ref(def), self.root.as_var()); } } @@ -49,36 +47,6 @@ impl<'a, M: Mode> Net<'a, M> { count } - /// Expands [`Ref`] nodes in the tree connected to `root`. - #[inline(always)] - pub fn expand(&mut self) { - assert!(!M::LAZY); - fn go(net: &mut Net, wire: Wire, len: usize, key: usize) { - trace!(net.tracer, wire); - let port = wire.load_target(); - trace!(net.tracer, port); - if port == Port::LOCK { - return; - } - if port.tag() == Ctr { - let node = port.traverse_node(); - if len >= net.tids || key % 2 == 0 { - go(net, node.p1, len.saturating_mul(2), key / 2); - } - if len >= net.tids || key % 2 == 1 { - go(net, node.p2, len.saturating_mul(2), key / 2); - } - } else if port.tag() == Ref && port != Port::ERA { - let got = wire.swap_target(Port::LOCK); - if got != Port::LOCK { - trace!(net.tracer, port, wire); - net.call(port, Port::new_var(wire.addr())); - } - } - } - go(self, self.root.clone(), 1, self.tid); - } - // Lazy mode weak head normalizer #[inline(always)] fn weak_normal(&mut self, mut prev: Port, root: Wire) -> Port { @@ -146,7 +114,55 @@ impl<'a, M: Mode> Net<'a, M> { self.expand(); while !self.redexes.is_empty() { self.reduce(usize::MAX); - self.expand(); + } + } + } +} + +impl<'h, M: Mode> Net<'h, M> { + /// Expands [`Tag::Ref`] nodes in the tree connected to `root`. + pub fn expand(&mut self) { + assert!(!M::LAZY); + let (new_root, out_port) = self.create_wire(); + let old_root = std::mem::replace(&mut self.root, new_root); + self.link_wire_port(old_root, ExpandDef::new(out_port)); + } +} + +struct ExpandDef { + out: Port, +} + +impl ExpandDef { + fn new(out: Port) -> Port { + Port::new_ref(Box::leak(Box::new(Def::new(LabSet::ALL, ExpandDef { out })))) + } +} + +impl AsDef for ExpandDef { + unsafe fn call(def: *const Def, net: &mut Net, port: Port) { + if port.tag() == Tag::Ref && port != Port::ERA { + let other: *const Def = port.addr().def() as *const _; + if let Some(other) = Def::downcast_ptr::(other) { + let def = *Box::from_raw(def as *mut Def); + let other = *Box::from_raw(other as *mut Def); + return net.link_port_port(def.data.out, other.data.out); + } else { + return net.call(port, Port::new_ref(Def::upcast(unsafe { &*def }))); + } + } + let def = *Box::from_raw(def as *mut Def); + match port.tag() { + Tag::Red => { + unreachable!() + } + Tag::Ref | Tag::Num | Tag::Var => net.link_port_port(def.data.out, port), + tag @ (Tag::Op | Tag::Mat | Tag::Ctr) => { + let old = port.consume_node(); + let new = net.create_node(tag, old.lab); + net.link_port_port(def.data.out, new.p0); + net.link_wire_port(old.p1, ExpandDef::new(new.p1)); + net.link_wire_port(old.p2, ExpandDef::new(new.p2)); } } } diff --git a/src/run/parallel.rs b/src/run/parallel.rs index 9207a0eb..1fc97fde 100644 --- a/src/run/parallel.rs +++ b/src/run/parallel.rs @@ -24,6 +24,8 @@ impl<'h, M: Mode> Net<'h, M> { pub fn parallel_normal(&mut self) { assert!(!M::LAZY); + self.expand(); + const SHARE_LIMIT: usize = 1 << 12; // max share redexes per split const LOCAL_LIMIT: usize = 1 << 18; // max local rewrites per epoch @@ -77,7 +79,6 @@ impl<'h, M: Mode> Net<'h, M> { fn main(ctx: &mut ThreadContext) { loop { reduce(ctx); - ctx.net.expand(); if count(ctx) == 0 { break; } diff --git a/src/transform/pre_reduce.rs b/src/transform/pre_reduce.rs index 9fa10259..a7835807 100644 --- a/src/transform/pre_reduce.rs +++ b/src/transform/pre_reduce.rs @@ -39,7 +39,6 @@ impl Book { let mut rt = run::Net::::new(&area); rt.boot(host.defs.get(nam).expect("No function.")); - rt.expand(); rt.reduce(max_rwts as usize); // Move interactions with inert defs back into the net redexes array diff --git a/tests/cli.rs b/tests/cli.rs index 88677622..0435285e 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -196,16 +196,15 @@ fn test_cli_errors() { fn test_apply_tree() { use hvmc::run; fn eval_with_args(fun: &str, args: &[&str]) -> Net { - let area = run::Heap::new_words(1 << 10); + let area = run::Heap::new_words(16); let mut fun: Net = fun.parse().unwrap(); for arg in args { let arg: Tree = arg.parse().unwrap(); fun.apply_tree(arg) } - // TODO: When feature/sc-472/argument-passing, use encode_net instead. - let host = Host::default(); + let host = Host::default(); let mut rnet = run::Net::::new(&area); let root_port = run::Trg::port(run::Port::new_var(rnet.root.addr())); host.encode_net(&mut rnet, root_port, &fun); diff --git a/tests/lists.rs b/tests/lists.rs index 4cfe148f..61ed39d4 100644 --- a/tests/lists.rs +++ b/tests/lists.rs @@ -34,12 +34,12 @@ fn test_list_got() { rwts_list.push(rwts.total()) } - assert_debug_snapshot!(rwts_list[0], @"579"); - assert_debug_snapshot!(rwts_list[1], @"601"); - assert_debug_snapshot!(rwts_list[2], @"645"); - assert_debug_snapshot!(rwts_list[3], @"733"); - assert_debug_snapshot!(rwts_list[4], @"909"); - assert_debug_snapshot!(rwts_list[5], @"1261"); + assert_debug_snapshot!(rwts_list[0], @"594"); + assert_debug_snapshot!(rwts_list[1], @"623"); + assert_debug_snapshot!(rwts_list[2], @"681"); + assert_debug_snapshot!(rwts_list[3], @"797"); + assert_debug_snapshot!(rwts_list[4], @"1029"); + assert_debug_snapshot!(rwts_list[5], @"1493"); // Tests the linearity of the function let delta = rwts_list[1] - rwts_list[0]; @@ -59,12 +59,12 @@ fn test_list_put() { rwts_list.push(rwts.total()) } - assert_debug_snapshot!(rwts_list[0], @"570"); - assert_debug_snapshot!(rwts_list[1], @"593"); - assert_debug_snapshot!(rwts_list[2], @"639"); - assert_debug_snapshot!(rwts_list[3], @"731"); - assert_debug_snapshot!(rwts_list[4], @"915"); - assert_debug_snapshot!(rwts_list[5], @"1283"); + assert_debug_snapshot!(rwts_list[0], @"585"); + assert_debug_snapshot!(rwts_list[1], @"615"); + assert_debug_snapshot!(rwts_list[2], @"675"); + assert_debug_snapshot!(rwts_list[3], @"795"); + assert_debug_snapshot!(rwts_list[4], @"1035"); + assert_debug_snapshot!(rwts_list[5], @"1515"); //Tests the linearity of the function let delta = rwts_list[1] - rwts_list[0]; diff --git a/tests/numeric.rs b/tests/numeric.rs index 943d1e5c..a2c0a186 100644 --- a/tests/numeric.rs +++ b/tests/numeric.rs @@ -18,7 +18,7 @@ fn test_add() { let net = op_net(10, Op::Add, 2); let (rwts, net) = normal(net, 16); assert_snapshot!(Net::to_string(&net), @"#12"); - assert_debug_snapshot!(rwts.total(), @"2"); + assert_debug_snapshot!(rwts.total(), @"3"); } #[test] @@ -117,5 +117,5 @@ fn test_div_by_0() { let net = op_net(9, Op::Div, 0); let (rwts, net) = normal(net, 16); assert_snapshot!(Net::to_string(&net), @"#0"); - assert_debug_snapshot!(rwts.total(), @"2"); + assert_debug_snapshot!(rwts.total(), @"3"); } diff --git a/tests/snapshots/tests__run@alloc_big_tree.hvmc.snap b/tests/snapshots/tests__run@alloc_big_tree.hvmc.snap index 34ea29df..29e0266b 100644 --- a/tests/snapshots/tests__run@alloc_big_tree.hvmc.snap +++ b/tests/snapshots/tests__run@alloc_big_tree.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/alloc_big_tree.hvmc --- (((((((((((((((((((((((((a a) ((b b) c)) c) ((((d d) ((e e) f)) f) g)) g) ((((((h h) ((i i) j)) j) ((((k k) ((l l) m)) m) n)) n) o)) o) ((((((((p p) ((q q) r)) r) ((((s s) ((t t) u)) u) v)) v) ((((((w w) ((x x) y)) y) ((((z z) ((aa aa) ab)) ab) ac)) ac) ad)) ad) ae)) ae) ((((((((((af af) ((ag ag) ah)) ah) ((((ai ai) ((aj aj) ak)) ak) al)) al) ((((((am am) ((an an) ao)) ao) ((((ap ap) ((aq aq) ar)) ar) as)) as) at)) at) ((((((((au au) ((av av) aw)) aw) ((((ax ax) ((ay ay) az)) az) ba)) ba) ((((((bb bb) ((bc bc) bd)) bd) ((((be be) ((bf bf) bg)) bg) bh)) bh) bi)) bi) bj)) bj) bk)) bk) ((((((((((((bl bl) ((bm bm) bn)) bn) ((((bo bo) ((bp bp) bq)) bq) br)) br) ((((((bs bs) ((bt bt) bu)) bu) ((((bv bv) ((bw bw) bx)) bx) by)) by) bz)) bz) ((((((((ca ca) ((cb cb) cc)) cc) ((((cd cd) ((ce ce) cf)) cf) cg)) cg) ((((((ch ch) ((ci ci) cj)) cj) ((((ck ck) ((cl cl) cm)) cm) cn)) cn) co)) co) cp)) cp) ((((((((((cq cq) ((cr cr) cs)) cs) ((((ct ct) ((cu cu) cv)) cv) cw)) cw) ((((((cx cx) ((cy cy) cz)) cz) ((((da da) ((db db) dc)) dc) dd)) dd) de)) de) ((((((((df df) ((dg dg) dh)) dh) ((((di di) ((dj dj) dk)) dk) dl)) dl) ((((((dm dm) ((dn dn) do)) do) ((((dp dp) ((dq dq) dr)) dr) ds)) ds) dt)) dt) du)) du) dv)) dv) dw)) dw) ((((((((((((((dx dx) ((dy dy) dz)) dz) ((((ea ea) ((eb eb) ec)) ec) ed)) ed) ((((((ee ee) ((ef ef) eg)) eg) ((((eh eh) ((ei ei) ej)) ej) ek)) ek) el)) el) ((((((((em em) ((en en) eo)) eo) ((((ep ep) ((eq eq) er)) er) es)) es) ((((((et et) ((eu eu) ev)) ev) ((((ew ew) ((ex ex) ey)) ey) ez)) ez) fa)) fa) fb)) fb) ((((((((((fc fc) ((fd fd) fe)) fe) ((((ff ff) ((fg fg) fh)) fh) fi)) fi) ((((((fj fj) ((fk fk) fl)) fl) ((((fm fm) ((fn fn) fo)) fo) fp)) fp) fq)) fq) ((((((((fr fr) ((fs fs) ft)) ft) ((((fu fu) ((fv fv) fw)) fw) fx)) fx) ((((((fy fy) ((fz fz) ga)) ga) ((((gb gb) ((gc gc) gd)) gd) ge)) ge) gf)) gf) gg)) gg) gh)) gh) ((((((((((((gi gi) ((gj gj) gk)) gk) ((((gl gl) ((gm gm) gn)) gn) go)) go) ((((((gp gp) ((gq gq) gr)) gr) ((((gs gs) ((gt gt) gu)) gu) gv)) gv) gw)) gw) ((((((((gx gx) ((gy gy) gz)) gz) ((((ha ha) ((hb hb) hc)) hc) hd)) hd) ((((((he he) ((hf hf) hg)) hg) ((((hh hh) ((hi hi) hj)) hj) hk)) hk) hl)) hl) hm)) hm) ((((((((((hn hn) ((ho ho) hp)) hp) ((((hq hq) ((hr hr) hs)) hs) ht)) ht) ((((((hu hu) ((hv hv) hw)) hw) ((((hx hx) ((hy hy) hz)) hz) ia)) ia) ib)) ib) ((((((((ic ic) ((id id) ie)) ie) ((((if if) ((ig ig) ih)) ih) ii)) ii) ((((((ij ij) ((ik ik) il)) il) ((((im im) ((in in) io)) io) ip)) ip) iq)) iq) ir)) ir) is)) is) it)) it) iu)) iu) ((((((((((((((((iv iv) ((iw iw) ix)) ix) ((((iy iy) ((iz iz) ja)) ja) jb)) jb) ((((((jc jc) ((jd jd) je)) je) ((((jf jf) ((jg jg) jh)) jh) ji)) ji) jj)) jj) ((((((((jk jk) ((jl jl) jm)) jm) ((((jn jn) ((jo jo) jp)) jp) jq)) jq) ((((((jr jr) ((js js) jt)) jt) ((((ju ju) ((jv jv) jw)) jw) jx)) jx) jy)) jy) jz)) jz) ((((((((((ka ka) ((kb kb) kc)) kc) ((((kd kd) ((ke ke) kf)) kf) kg)) kg) ((((((kh kh) ((ki ki) kj)) kj) ((((kk kk) ((kl kl) km)) km) kn)) kn) ko)) ko) ((((((((kp kp) ((kq kq) kr)) kr) ((((ks ks) ((kt kt) ku)) ku) kv)) kv) ((((((kw kw) ((kx kx) ky)) ky) ((((kz kz) ((la la) lb)) lb) lc)) lc) ld)) ld) le)) le) lf)) lf) ((((((((((((lg lg) ((lh lh) li)) li) ((((lj lj) ((lk lk) ll)) ll) lm)) lm) ((((((ln ln) ((lo lo) lp)) lp) ((((lq lq) ((lr lr) ls)) ls) lt)) lt) lu)) lu) ((((((((lv lv) ((lw lw) lx)) lx) ((((ly ly) ((lz lz) ma)) ma) mb)) mb) ((((((mc mc) ((md md) me)) me) ((((mf mf) ((mg mg) mh)) mh) mi)) mi) mj)) mj) mk)) mk) ((((((((((ml ml) ((mm mm) mn)) mn) ((((mo mo) ((mp mp) mq)) mq) mr)) mr) ((((((ms ms) ((mt mt) mu)) mu) ((((mv mv) ((mw mw) mx)) mx) my)) my) mz)) mz) ((((((((na na) ((nb nb) nc)) nc) ((((nd nd) ((ne ne) nf)) nf) ng)) ng) ((((((nh nh) ((ni ni) nj)) nj) ((((nk nk) ((nl nl) nm)) nm) nn)) nn) no)) no) np)) np) nq)) nq) nr)) nr) ((((((((((((((ns ns) ((nt nt) nu)) nu) ((((nv nv) ((nw nw) nx)) nx) ny)) ny) ((((((nz nz) ((oa oa) ob)) ob) ((((oc oc) ((od od) oe)) oe) of)) of) og)) og) ((((((((oh oh) ((oi oi) oj)) oj) ((((ok ok) ((ol ol) om)) om) on)) on) ((((((oo oo) ((op op) oq)) oq) ((((or or) ((os os) ot)) ot) ou)) ou) ov)) ov) ow)) ow) ((((((((((ox ox) ((oy oy) oz)) oz) ((((pa pa) ((pb pb) pc)) pc) pd)) pd) ((((((pe pe) ((pf pf) pg)) pg) ((((ph ph) ((pi pi) pj)) pj) pk)) pk) pl)) pl) ((((((((pm pm) ((pn pn) po)) po) ((((pp pp) ((pq pq) pr)) pr) ps)) ps) ((((((pt pt) ((pu pu) pv)) pv) ((((pw pw) ((px px) py)) py) pz)) pz) qa)) qa) qb)) qb) qc)) qc) ((((((((((((qd qd) ((qe qe) qf)) qf) ((((qg qg) ((qh qh) qi)) qi) qj)) qj) ((((((qk qk) ((ql ql) qm)) qm) ((((qn qn) ((qo qo) qp)) qp) qq)) qq) qr)) qr) ((((((((qs qs) ((qt qt) qu)) qu) ((((qv qv) ((qw qw) qx)) qx) qy)) qy) ((((((qz qz) ((ra ra) rb)) rb) ((((rc rc) ((rd rd) re)) re) rf)) rf) rg)) rg) rh)) rh) ((((((((((ri ri) ((rj rj) rk)) rk) ((((rl rl) ((rm rm) rn)) rn) ro)) ro) ((((((rp rp) ((rq rq) rr)) rr) ((((rs rs) ((rt rt) ru)) ru) rv)) rv) rw)) rw) ((((((((rx rx) ((ry ry) rz)) rz) ((((sa sa) ((sb sb) sc)) sc) sd)) sd) ((((((se se) ((sf sf) sg)) sg) ((((sh sh) ((si si) sj)) sj) sk)) sk) sl)) sl) sm)) sm) sn)) sn) so)) so) sp)) sp) sq)) sq) ((((((((((((((((((sr sr) ((ss ss) st)) st) ((((su su) ((sv sv) sw)) sw) sx)) sx) ((((((sy sy) ((sz sz) ta)) ta) ((((tb tb) ((tc tc) td)) td) te)) te) tf)) tf) ((((((((tg tg) ((th th) ti)) ti) ((((tj tj) ((tk tk) tl)) tl) tm)) tm) ((((((tn tn) ((to to) tp)) tp) ((((tq tq) ((tr tr) ts)) ts) tt)) tt) tu)) tu) tv)) tv) ((((((((((tw tw) ((tx tx) ty)) ty) ((((tz tz) ((ua ua) ub)) ub) uc)) uc) ((((((ud ud) ((ue ue) uf)) uf) ((((ug ug) ((uh uh) ui)) ui) uj)) uj) uk)) uk) ((((((((ul ul) ((um um) un)) un) ((((uo uo) ((up up) uq)) uq) ur)) ur) ((((((us us) ((ut ut) uu)) uu) ((((uv uv) ((uw uw) ux)) ux) uy)) uy) uz)) uz) va)) va) vb)) vb) ((((((((((((vc vc) ((vd vd) ve)) ve) ((((vf vf) ((vg vg) vh)) vh) vi)) vi) ((((((vj vj) ((vk vk) vl)) vl) ((((vm vm) ((vn vn) vo)) vo) vp)) vp) vq)) vq) ((((((((vr vr) ((vs vs) vt)) vt) ((((vu vu) ((vv vv) vw)) vw) vx)) vx) ((((((vy vy) ((vz vz) wa)) wa) ((((wb wb) ((wc wc) wd)) wd) we)) we) wf)) wf) wg)) wg) ((((((((((wh wh) ((wi wi) wj)) wj) ((((wk wk) ((wl wl) wm)) wm) wn)) wn) ((((((wo wo) ((wp wp) wq)) wq) ((((wr wr) ((ws ws) wt)) wt) wu)) wu) wv)) wv) ((((((((ww ww) ((wx wx) wy)) wy) ((((wz wz) ((xa xa) xb)) xb) xc)) xc) ((((((xd xd) ((xe xe) xf)) xf) ((((xg xg) ((xh xh) xi)) xi) xj)) xj) xk)) xk) xl)) xl) xm)) xm) xn)) xn) ((((((((((((((xo xo) ((xp xp) xq)) xq) ((((xr xr) ((xs xs) xt)) xt) xu)) xu) ((((((xv xv) ((xw xw) xx)) xx) ((((xy xy) ((xz xz) ya)) ya) yb)) yb) yc)) yc) ((((((((yd yd) ((ye ye) yf)) yf) ((((yg yg) ((yh yh) yi)) yi) yj)) yj) ((((((yk yk) ((yl yl) ym)) ym) ((((yn yn) ((yo yo) yp)) yp) yq)) yq) yr)) yr) ys)) ys) ((((((((((yt yt) ((yu yu) yv)) yv) ((((yw yw) ((yx yx) yy)) yy) yz)) yz) ((((((za za) ((zb zb) zc)) zc) ((((zd zd) ((ze ze) zf)) zf) zg)) zg) zh)) zh) ((((((((zi zi) ((zj zj) zk)) zk) ((((zl zl) ((zm zm) zn)) zn) zo)) zo) ((((((zp zp) ((zq zq) zr)) zr) ((((zs zs) ((zt zt) zu)) zu) zv)) zv) zw)) zw) zx)) zx) zy)) zy) ((((((((((((zz zz) ((aaa aaa) aab)) aab) ((((aac aac) ((aad aad) aae)) aae) aaf)) aaf) ((((((aag aag) ((aah aah) aai)) aai) ((((aaj aaj) ((aak aak) aal)) aal) aam)) aam) aan)) aan) ((((((((aao aao) ((aap aap) aaq)) aaq) ((((aar aar) ((aas aas) aat)) aat) aau)) aau) ((((((aav aav) ((aaw aaw) aax)) aax) ((((aay aay) ((aaz aaz) aba)) aba) abb)) abb) abc)) abc) abd)) abd) ((((((((((abe abe) ((abf abf) abg)) abg) ((((abh abh) ((abi abi) abj)) abj) abk)) abk) ((((((abl abl) ((abm abm) abn)) abn) ((((abo abo) ((abp abp) abq)) abq) abr)) abr) abs)) abs) ((((((((abt abt) ((abu abu) abv)) abv) ((((abw abw) ((abx abx) aby)) aby) abz)) abz) ((((((aca aca) ((acb acb) acc)) acc) ((((acd acd) ((ace ace) acf)) acf) acg)) acg) ach)) ach) aci)) aci) acj)) acj) ack)) ack) acl)) acl) ((((((((((((((((acm acm) ((acn acn) aco)) aco) ((((acp acp) ((acq acq) acr)) acr) acs)) acs) ((((((act act) ((acu acu) acv)) acv) ((((acw acw) ((acx acx) acy)) acy) acz)) acz) ada)) ada) ((((((((adb adb) ((adc adc) add)) add) ((((ade ade) ((adf adf) adg)) adg) adh)) adh) ((((((adi adi) ((adj adj) adk)) adk) ((((adl adl) ((adm adm) adn)) adn) ado)) ado) adp)) adp) adq)) adq) ((((((((((adr adr) ((ads ads) adt)) adt) ((((adu adu) ((adv adv) adw)) adw) adx)) adx) ((((((ady ady) ((adz adz) aea)) aea) ((((aeb aeb) ((aec aec) aed)) aed) aee)) aee) aef)) aef) ((((((((aeg aeg) ((aeh aeh) aei)) aei) ((((aej aej) ((aek aek) ael)) ael) aem)) aem) ((((((aen aen) ((aeo aeo) aep)) aep) ((((aeq aeq) ((aer aer) aes)) aes) aet)) aet) aeu)) aeu) aev)) aev) aew)) aew) ((((((((((((aex aex) ((aey aey) aez)) aez) ((((afa afa) ((afb afb) afc)) afc) afd)) afd) ((((((afe afe) ((aff aff) afg)) afg) ((((afh afh) ((afi afi) afj)) afj) afk)) afk) afl)) afl) ((((((((afm afm) ((afn afn) afo)) afo) ((((afp afp) ((afq afq) afr)) afr) afs)) afs) ((((((aft aft) ((afu afu) afv)) afv) ((((afw afw) ((afx afx) afy)) afy) afz)) afz) aga)) aga) agb)) agb) ((((((((((agc agc) ((agd agd) age)) age) ((((agf agf) ((agg agg) agh)) agh) agi)) agi) ((((((agj agj) ((agk agk) agl)) agl) ((((agm agm) ((agn agn) ago)) ago) agp)) agp) agq)) agq) ((((((((agr agr) ((ags ags) agt)) agt) ((((agu agu) ((agv agv) agw)) agw) agx)) agx) ((((((agy agy) ((agz agz) aha)) aha) ((((ahb ahb) ((ahc ahc) ahd)) ahd) ahe)) ahe) ahf)) ahf) ahg)) ahg) ahh)) ahh) ahi)) ahi) ((((((((((((((ahj ahj) ((ahk ahk) ahl)) ahl) ((((ahm ahm) ((ahn ahn) aho)) aho) ahp)) ahp) ((((((ahq ahq) ((ahr ahr) ahs)) ahs) ((((aht aht) ((ahu ahu) ahv)) ahv) ahw)) ahw) ahx)) ahx) ((((((((ahy ahy) ((ahz ahz) aia)) aia) ((((aib aib) ((aic aic) aid)) aid) aie)) aie) ((((((aif aif) ((aig aig) aih)) aih) ((((aii aii) ((aij aij) aik)) aik) ail)) ail) aim)) aim) ain)) ain) ((((((((((aio aio) ((aip aip) aiq)) aiq) ((((air air) ((ais ais) ait)) ait) aiu)) aiu) ((((((aiv aiv) ((aiw aiw) aix)) aix) ((((aiy aiy) ((aiz aiz) aja)) aja) ajb)) ajb) ajc)) ajc) ((((((((ajd ajd) ((aje aje) ajf)) ajf) ((((ajg ajg) ((ajh ajh) aji)) aji) ajj)) ajj) ((((((ajk ajk) ((ajl ajl) ajm)) ajm) ((((ajn ajn) ((ajo ajo) ajp)) ajp) ajq)) ajq) ajr)) ajr) ajs)) ajs) ajt)) ajt) ((((((((((((aju aju) ((ajv ajv) ajw)) ajw) ((((ajx ajx) ((ajy ajy) ajz)) ajz) aka)) aka) ((((((akb akb) ((akc akc) akd)) akd) ((((ake ake) ((akf akf) akg)) akg) akh)) akh) aki)) aki) ((((((((akj akj) ((akk akk) akl)) akl) ((((akm akm) ((akn akn) ako)) ako) akp)) akp) ((((((akq akq) ((akr akr) aks)) aks) ((((akt akt) ((aku aku) akv)) akv) akw)) akw) akx)) akx) aky)) aky) ((((((((((akz akz) ((ala ala) alb)) alb) ((((alc alc) ((ald ald) ale)) ale) alf)) alf) ((((((alg alg) ((alh alh) ali)) ali) ((((alj alj) ((alk alk) all)) all) alm)) alm) aln)) aln) ((((((((alo alo) ((alp alp) alq)) alq) ((((alr alr) ((als als) alt)) alt) alu)) alu) ((((((alv alv) ((alw alw) alx)) alx) ((((aly aly) ((alz alz) ama)) ama) amb)) amb) amc)) amc) amd)) amd) ame)) ame) amf)) amf) amg)) amg) amh)) amh) ami)) ami) ((((((((((((((((((((amj amj) ((amk amk) aml)) aml) ((((amm amm) ((amn amn) amo)) amo) amp)) amp) ((((((amq amq) ((amr amr) ams)) ams) ((((amt amt) ((amu amu) amv)) amv) amw)) amw) amx)) amx) ((((((((amy amy) ((amz amz) ana)) ana) ((((anb anb) ((anc anc) and)) and) ane)) ane) ((((((anf anf) ((ang ang) anh)) anh) ((((ani ani) ((anj anj) ank)) ank) anl)) anl) anm)) anm) ann)) ann) ((((((((((ano ano) ((anp anp) anq)) anq) ((((anr anr) ((ans ans) ant)) ant) anu)) anu) ((((((anv anv) ((anw anw) anx)) anx) ((((any any) ((anz anz) aoa)) aoa) aob)) aob) aoc)) aoc) ((((((((aod aod) ((aoe aoe) aof)) aof) ((((aog aog) ((aoh aoh) aoi)) aoi) aoj)) aoj) ((((((aok aok) ((aol aol) aom)) aom) ((((aon aon) ((aoo aoo) aop)) aop) aoq)) aoq) aor)) aor) aos)) aos) aot)) aot) ((((((((((((aou aou) ((aov aov) aow)) aow) ((((aox aox) ((aoy aoy) aoz)) aoz) apa)) apa) ((((((apb apb) ((apc apc) apd)) apd) ((((ape ape) ((apf apf) apg)) apg) aph)) aph) api)) api) ((((((((apj apj) ((apk apk) apl)) apl) ((((apm apm) ((apn apn) apo)) apo) app)) app) ((((((apq apq) ((apr apr) aps)) aps) ((((apt apt) ((apu apu) apv)) apv) apw)) apw) apx)) apx) apy)) apy) ((((((((((apz apz) ((aqa aqa) aqb)) aqb) ((((aqc aqc) ((aqd aqd) aqe)) aqe) aqf)) aqf) ((((((aqg aqg) ((aqh aqh) aqi)) aqi) ((((aqj aqj) ((aqk aqk) aql)) aql) aqm)) aqm) aqn)) aqn) ((((((((aqo aqo) ((aqp aqp) aqq)) aqq) ((((aqr aqr) ((aqs aqs) aqt)) aqt) aqu)) aqu) ((((((aqv aqv) ((aqw aqw) aqx)) aqx) ((((aqy aqy) ((aqz aqz) ara)) ara) arb)) arb) arc)) arc) ard)) ard) are)) are) arf)) arf) ((((((((((((((arg arg) ((arh arh) ari)) ari) ((((arj arj) ((ark ark) arl)) arl) arm)) arm) ((((((arn arn) ((aro aro) arp)) arp) ((((arq arq) ((arr arr) ars)) ars) art)) art) aru)) aru) ((((((((arv arv) ((arw arw) arx)) arx) ((((ary ary) ((arz arz) asa)) asa) asb)) asb) ((((((asc asc) ((asd asd) ase)) ase) ((((asf asf) ((asg asg) ash)) ash) asi)) asi) asj)) asj) ask)) ask) ((((((((((asl asl) ((asm asm) asn)) asn) ((((aso aso) ((asp asp) asq)) asq) asr)) asr) ((((((ass ass) ((ast ast) asu)) asu) ((((asv asv) ((asw asw) asx)) asx) asy)) asy) asz)) asz) ((((((((ata ata) ((atb atb) atc)) atc) ((((atd atd) ((ate ate) atf)) atf) atg)) atg) ((((((ath ath) ((ati ati) atj)) atj) ((((atk atk) ((atl atl) atm)) atm) atn)) atn) ato)) ato) atp)) atp) atq)) atq) ((((((((((((atr atr) ((ats ats) att)) att) ((((atu atu) ((atv atv) atw)) atw) atx)) atx) ((((((aty aty) ((atz atz) aua)) aua) ((((aub aub) ((auc auc) aud)) aud) aue)) aue) auf)) auf) ((((((((aug aug) ((auh auh) aui)) aui) ((((auj auj) ((auk auk) aul)) aul) aum)) aum) ((((((aun aun) ((auo auo) aup)) aup) ((((auq auq) ((aur aur) aus)) aus) aut)) aut) auu)) auu) auv)) auv) ((((((((((auw auw) ((aux aux) auy)) auy) ((((auz auz) ((ava ava) avb)) avb) avc)) avc) ((((((avd avd) ((ave ave) avf)) avf) ((((avg avg) ((avh avh) avi)) avi) avj)) avj) avk)) avk) ((((((((avl avl) ((avm avm) avn)) avn) ((((avo avo) ((avp avp) avq)) avq) avr)) avr) ((((((avs avs) ((avt avt) avu)) avu) ((((avv avv) ((avw avw) avx)) avx) avy)) avy) avz)) avz) awa)) awa) awb)) awb) awc)) awc) awd)) awd) ((((((((((((((((awe awe) ((awf awf) awg)) awg) ((((awh awh) ((awi awi) awj)) awj) awk)) awk) ((((((awl awl) ((awm awm) awn)) awn) ((((awo awo) ((awp awp) awq)) awq) awr)) awr) aws)) aws) ((((((((awt awt) ((awu awu) awv)) awv) ((((aww aww) ((awx awx) awy)) awy) awz)) awz) ((((((axa axa) ((axb axb) axc)) axc) ((((axd axd) ((axe axe) axf)) axf) axg)) axg) axh)) axh) axi)) axi) ((((((((((axj axj) ((axk axk) axl)) axl) ((((axm axm) ((axn axn) axo)) axo) axp)) axp) ((((((axq axq) ((axr axr) axs)) axs) ((((axt axt) ((axu axu) axv)) axv) axw)) axw) axx)) axx) ((((((((axy axy) ((axz axz) aya)) aya) ((((ayb ayb) ((ayc ayc) ayd)) ayd) aye)) aye) ((((((ayf ayf) ((ayg ayg) ayh)) ayh) ((((ayi ayi) ((ayj ayj) ayk)) ayk) ayl)) ayl) aym)) aym) ayn)) ayn) ayo)) ayo) ((((((((((((ayp ayp) ((ayq ayq) ayr)) ayr) ((((ays ays) ((ayt ayt) ayu)) ayu) ayv)) ayv) ((((((ayw ayw) ((ayx ayx) ayy)) ayy) ((((ayz ayz) ((aza aza) azb)) azb) azc)) azc) azd)) azd) ((((((((aze aze) ((azf azf) azg)) azg) ((((azh azh) ((azi azi) azj)) azj) azk)) azk) ((((((azl azl) ((azm azm) azn)) azn) ((((azo azo) ((azp azp) azq)) azq) azr)) azr) azs)) azs) azt)) azt) ((((((((((azu azu) ((azv azv) azw)) azw) ((((azx azx) ((azy azy) azz)) azz) baa)) baa) ((((((bab bab) ((bac bac) bad)) bad) ((((bae bae) ((baf baf) bag)) bag) bah)) bah) bai)) bai) ((((((((baj baj) ((bak bak) bal)) bal) ((((bam bam) ((ban ban) bao)) bao) bap)) bap) ((((((baq baq) ((bar bar) bas)) bas) ((((bat bat) ((bau bau) bav)) bav) baw)) baw) bax)) bax) bay)) bay) baz)) baz) bba)) bba) ((((((((((((((bbb bbb) ((bbc bbc) bbd)) bbd) ((((bbe bbe) ((bbf bbf) bbg)) bbg) bbh)) bbh) ((((((bbi bbi) ((bbj bbj) bbk)) bbk) ((((bbl bbl) ((bbm bbm) bbn)) bbn) bbo)) bbo) bbp)) bbp) ((((((((bbq bbq) ((bbr bbr) bbs)) bbs) ((((bbt bbt) ((bbu bbu) bbv)) bbv) bbw)) bbw) ((((((bbx bbx) ((bby bby) bbz)) bbz) ((((bca bca) ((bcb bcb) bcc)) bcc) bcd)) bcd) bce)) bce) bcf)) bcf) ((((((((((bcg bcg) ((bch bch) bci)) bci) ((((bcj bcj) ((bck bck) bcl)) bcl) bcm)) bcm) ((((((bcn bcn) ((bco bco) bcp)) bcp) ((((bcq bcq) ((bcr bcr) bcs)) bcs) bct)) bct) bcu)) bcu) ((((((((bcv bcv) ((bcw bcw) bcx)) bcx) ((((bcy bcy) ((bcz bcz) bda)) bda) bdb)) bdb) ((((((bdc bdc) ((bdd bdd) bde)) bde) ((((bdf bdf) ((bdg bdg) bdh)) bdh) bdi)) bdi) bdj)) bdj) bdk)) bdk) bdl)) bdl) ((((((((((((bdm bdm) ((bdn bdn) bdo)) bdo) ((((bdp bdp) ((bdq bdq) bdr)) bdr) bds)) bds) ((((((bdt bdt) ((bdu bdu) bdv)) bdv) ((((bdw bdw) ((bdx bdx) bdy)) bdy) bdz)) bdz) bea)) bea) ((((((((beb beb) ((bec bec) bed)) bed) ((((bee bee) ((bef bef) beg)) beg) beh)) beh) ((((((bei bei) ((bej bej) bek)) bek) ((((bel bel) ((bem bem) ben)) ben) beo)) beo) bep)) bep) beq)) beq) ((((((((((ber ber) ((bes bes) bet)) bet) ((((beu beu) ((bev bev) bew)) bew) bex)) bex) ((((((bey bey) ((bez bez) bfa)) bfa) ((((bfb bfb) ((bfc bfc) bfd)) bfd) bfe)) bfe) bff)) bff) ((((((((bfg bfg) ((bfh bfh) bfi)) bfi) ((((bfj bfj) ((bfk bfk) bfl)) bfl) bfm)) bfm) ((((((bfn bfn) ((bfo bfo) bfp)) bfp) ((((bfq bfq) ((bfr bfr) bfs)) bfs) bft)) bft) bfu)) bfu) bfv)) bfv) bfw)) bfw) bfx)) bfx) bfy)) bfy) bfz)) bfz) ((((((((((((((((((bga bga) ((bgb bgb) bgc)) bgc) ((((bgd bgd) ((bge bge) bgf)) bgf) bgg)) bgg) ((((((bgh bgh) ((bgi bgi) bgj)) bgj) ((((bgk bgk) ((bgl bgl) bgm)) bgm) bgn)) bgn) bgo)) bgo) ((((((((bgp bgp) ((bgq bgq) bgr)) bgr) ((((bgs bgs) ((bgt bgt) bgu)) bgu) bgv)) bgv) ((((((bgw bgw) ((bgx bgx) bgy)) bgy) ((((bgz bgz) ((bha bha) bhb)) bhb) bhc)) bhc) bhd)) bhd) bhe)) bhe) ((((((((((bhf bhf) ((bhg bhg) bhh)) bhh) ((((bhi bhi) ((bhj bhj) bhk)) bhk) bhl)) bhl) ((((((bhm bhm) ((bhn bhn) bho)) bho) ((((bhp bhp) ((bhq bhq) bhr)) bhr) bhs)) bhs) bht)) bht) ((((((((bhu bhu) ((bhv bhv) bhw)) bhw) ((((bhx bhx) ((bhy bhy) bhz)) bhz) bia)) bia) ((((((bib bib) ((bic bic) bid)) bid) ((((bie bie) ((bif bif) big)) big) bih)) bih) bii)) bii) bij)) bij) bik)) bik) ((((((((((((bil bil) ((bim bim) bin)) bin) ((((bio bio) ((bip bip) biq)) biq) bir)) bir) ((((((bis bis) ((bit bit) biu)) biu) ((((biv biv) ((biw biw) bix)) bix) biy)) biy) biz)) biz) ((((((((bja bja) ((bjb bjb) bjc)) bjc) ((((bjd bjd) ((bje bje) bjf)) bjf) bjg)) bjg) ((((((bjh bjh) ((bji bji) bjj)) bjj) ((((bjk bjk) ((bjl bjl) bjm)) bjm) bjn)) bjn) bjo)) bjo) bjp)) bjp) ((((((((((bjq bjq) ((bjr bjr) bjs)) bjs) ((((bjt bjt) ((bju bju) bjv)) bjv) bjw)) bjw) ((((((bjx bjx) ((bjy bjy) bjz)) bjz) ((((bka bka) ((bkb bkb) bkc)) bkc) bkd)) bkd) bke)) bke) ((((((((bkf bkf) ((bkg bkg) bkh)) bkh) ((((bki bki) ((bkj bkj) bkk)) bkk) bkl)) bkl) ((((((bkm bkm) ((bkn bkn) bko)) bko) ((((bkp bkp) ((bkq bkq) bkr)) bkr) bks)) bks) bkt)) bkt) bku)) bku) bkv)) bkv) bkw)) bkw) ((((((((((((((bkx bkx) ((bky bky) bkz)) bkz) ((((bla bla) ((blb blb) blc)) blc) bld)) bld) ((((((ble ble) ((blf blf) blg)) blg) ((((blh blh) ((bli bli) blj)) blj) blk)) blk) bll)) bll) ((((((((blm blm) ((bln bln) blo)) blo) ((((blp blp) ((blq blq) blr)) blr) bls)) bls) ((((((blt blt) ((blu blu) blv)) blv) ((((blw blw) ((blx blx) bly)) bly) blz)) blz) bma)) bma) bmb)) bmb) ((((((((((bmc bmc) ((bmd bmd) bme)) bme) ((((bmf bmf) ((bmg bmg) bmh)) bmh) bmi)) bmi) ((((((bmj bmj) ((bmk bmk) bml)) bml) ((((bmm bmm) ((bmn bmn) bmo)) bmo) bmp)) bmp) bmq)) bmq) ((((((((bmr bmr) ((bms bms) bmt)) bmt) ((((bmu bmu) ((bmv bmv) bmw)) bmw) bmx)) bmx) ((((((bmy bmy) ((bmz bmz) bna)) bna) ((((bnb bnb) ((bnc bnc) bnd)) bnd) bne)) bne) bnf)) bnf) bng)) bng) bnh)) bnh) ((((((((((((bni bni) ((bnj bnj) bnk)) bnk) ((((bnl bnl) ((bnm bnm) bnn)) bnn) bno)) bno) ((((((bnp bnp) ((bnq bnq) bnr)) bnr) ((((bns bns) ((bnt bnt) bnu)) bnu) bnv)) bnv) bnw)) bnw) ((((((((bnx bnx) ((bny bny) bnz)) bnz) ((((boa boa) ((bob bob) boc)) boc) bod)) bod) ((((((boe boe) ((bof bof) bog)) bog) ((((boh boh) ((boi boi) boj)) boj) bok)) bok) bol)) bol) bom)) bom) ((((((((((bon bon) ((boo boo) bop)) bop) ((((boq boq) ((bor bor) bos)) bos) bot)) bot) ((((((bou bou) ((bov bov) bow)) bow) ((((box box) ((boy boy) boz)) boz) bpa)) bpa) bpb)) bpb) ((((((((bpc bpc) ((bpd bpd) bpe)) bpe) ((((bpf bpf) ((bpg bpg) bph)) bph) bpi)) bpi) ((((((bpj bpj) ((bpk bpk) bpl)) bpl) ((((bpm bpm) ((bpn bpn) bpo)) bpo) bpp)) bpp) bpq)) bpq) bpr)) bpr) bps)) bps) bpt)) bpt) bpu)) bpu) ((((((((((((((((bpv bpv) ((bpw bpw) bpx)) bpx) ((((bpy bpy) ((bpz bpz) bqa)) bqa) bqb)) bqb) ((((((bqc bqc) ((bqd bqd) bqe)) bqe) ((((bqf bqf) ((bqg bqg) bqh)) bqh) bqi)) bqi) bqj)) bqj) ((((((((bqk bqk) ((bql bql) bqm)) bqm) ((((bqn bqn) ((bqo bqo) bqp)) bqp) bqq)) bqq) ((((((bqr bqr) ((bqs bqs) bqt)) bqt) ((((bqu bqu) ((bqv bqv) bqw)) bqw) bqx)) bqx) bqy)) bqy) bqz)) bqz) ((((((((((bra bra) ((brb brb) brc)) brc) ((((brd brd) ((bre bre) brf)) brf) brg)) brg) ((((((brh brh) ((bri bri) brj)) brj) ((((brk brk) ((brl brl) brm)) brm) brn)) brn) bro)) bro) ((((((((brp brp) ((brq brq) brr)) brr) ((((brs brs) ((brt brt) bru)) bru) brv)) brv) ((((((brw brw) ((brx brx) bry)) bry) ((((brz brz) ((bsa bsa) bsb)) bsb) bsc)) bsc) bsd)) bsd) bse)) bse) bsf)) bsf) ((((((((((((bsg bsg) ((bsh bsh) bsi)) bsi) ((((bsj bsj) ((bsk bsk) bsl)) bsl) bsm)) bsm) ((((((bsn bsn) ((bso bso) bsp)) bsp) ((((bsq bsq) ((bsr bsr) bss)) bss) bst)) bst) bsu)) bsu) ((((((((bsv bsv) ((bsw bsw) bsx)) bsx) ((((bsy bsy) ((bsz bsz) bta)) bta) btb)) btb) ((((((btc btc) ((btd btd) bte)) bte) ((((btf btf) ((btg btg) bth)) bth) bti)) bti) btj)) btj) btk)) btk) ((((((((((btl btl) ((btm btm) btn)) btn) ((((bto bto) ((btp btp) btq)) btq) btr)) btr) ((((((bts bts) ((btt btt) btu)) btu) ((((btv btv) ((btw btw) btx)) btx) bty)) bty) btz)) btz) ((((((((bua bua) ((bub bub) buc)) buc) ((((bud bud) ((bue bue) buf)) buf) bug)) bug) ((((((buh buh) ((bui bui) buj)) buj) ((((buk buk) ((bul bul) bum)) bum) bun)) bun) buo)) buo) bup)) bup) buq)) buq) bur)) bur) ((((((((((((((bus bus) ((but but) buu)) buu) ((((buv buv) ((buw buw) bux)) bux) buy)) buy) ((((((buz buz) ((bva bva) bvb)) bvb) ((((bvc bvc) ((bvd bvd) bve)) bve) bvf)) bvf) bvg)) bvg) ((((((((bvh bvh) ((bvi bvi) bvj)) bvj) ((((bvk bvk) ((bvl bvl) bvm)) bvm) bvn)) bvn) ((((((bvo bvo) ((bvp bvp) bvq)) bvq) ((((bvr bvr) ((bvs bvs) bvt)) bvt) bvu)) bvu) bvv)) bvv) bvw)) bvw) ((((((((((bvx bvx) ((bvy bvy) bvz)) bvz) ((((bwa bwa) ((bwb bwb) bwc)) bwc) bwd)) bwd) ((((((bwe bwe) ((bwf bwf) bwg)) bwg) ((((bwh bwh) ((bwi bwi) bwj)) bwj) bwk)) bwk) bwl)) bwl) ((((((((bwm bwm) ((bwn bwn) bwo)) bwo) ((((bwp bwp) ((bwq bwq) bwr)) bwr) bws)) bws) ((((((bwt bwt) ((bwu bwu) bwv)) bwv) ((((bww bww) ((bwx bwx) bwy)) bwy) bwz)) bwz) bxa)) bxa) bxb)) bxb) bxc)) bxc) ((((((((((((bxd bxd) ((bxe bxe) bxf)) bxf) ((((bxg bxg) ((bxh bxh) bxi)) bxi) bxj)) bxj) ((((((bxk bxk) ((bxl bxl) bxm)) bxm) ((((bxn bxn) ((bxo bxo) bxp)) bxp) bxq)) bxq) bxr)) bxr) ((((((((bxs bxs) ((bxt bxt) bxu)) bxu) ((((bxv bxv) ((bxw bxw) bxx)) bxx) bxy)) bxy) ((((((bxz bxz) ((bya bya) byb)) byb) ((((byc byc) ((byd byd) bye)) bye) byf)) byf) byg)) byg) byh)) byh) ((((((((((byi byi) ((byj byj) byk)) byk) ((((byl byl) ((bym bym) byn)) byn) byo)) byo) ((((((byp byp) ((byq byq) byr)) byr) ((((bys bys) ((byt byt) byu)) byu) byv)) byv) byw)) byw) ((((((((byx byx) ((byy byy) byz)) byz) ((((bza bza) ((bzb bzb) bzc)) bzc) bzd)) bzd) ((((((bze bze) ((bzf bzf) bzg)) bzg) ((((bzh bzh) ((bzi bzi) bzj)) bzj) bzk)) bzk) bzl)) bzl) bzm)) bzm) bzn)) bzn) bzo)) bzo) bzp)) bzp) bzq)) bzq) bzr)) bzr) bzs)) bzs) ((((((((((((((((((((((bzt bzt) ((bzu bzu) bzv)) bzv) ((((bzw bzw) ((bzx bzx) bzy)) bzy) bzz)) bzz) ((((((caa caa) ((cab cab) cac)) cac) ((((cad cad) ((cae cae) caf)) caf) cag)) cag) cah)) cah) ((((((((cai cai) ((caj caj) cak)) cak) ((((cal cal) ((cam cam) can)) can) cao)) cao) ((((((cap cap) ((caq caq) car)) car) ((((cas cas) ((cat cat) cau)) cau) cav)) cav) caw)) caw) cax)) cax) ((((((((((cay cay) ((caz caz) cba)) cba) ((((cbb cbb) ((cbc cbc) cbd)) cbd) cbe)) cbe) ((((((cbf cbf) ((cbg cbg) cbh)) cbh) ((((cbi cbi) ((cbj cbj) cbk)) cbk) cbl)) cbl) cbm)) cbm) ((((((((cbn cbn) ((cbo cbo) cbp)) cbp) ((((cbq cbq) ((cbr cbr) cbs)) cbs) cbt)) cbt) ((((((cbu cbu) ((cbv cbv) cbw)) cbw) ((((cbx cbx) ((cby cby) cbz)) cbz) cca)) cca) ccb)) ccb) ccc)) ccc) ccd)) ccd) ((((((((((((cce cce) ((ccf ccf) ccg)) ccg) ((((cch cch) ((cci cci) ccj)) ccj) cck)) cck) ((((((ccl ccl) ((ccm ccm) ccn)) ccn) ((((cco cco) ((ccp ccp) ccq)) ccq) ccr)) ccr) ccs)) ccs) ((((((((cct cct) ((ccu ccu) ccv)) ccv) ((((ccw ccw) ((ccx ccx) ccy)) ccy) ccz)) ccz) ((((((cda cda) ((cdb cdb) cdc)) cdc) ((((cdd cdd) ((cde cde) cdf)) cdf) cdg)) cdg) cdh)) cdh) cdi)) cdi) ((((((((((cdj cdj) ((cdk cdk) cdl)) cdl) ((((cdm cdm) ((cdn cdn) cdo)) cdo) cdp)) cdp) ((((((cdq cdq) ((cdr cdr) cds)) cds) ((((cdt cdt) ((cdu cdu) cdv)) cdv) cdw)) cdw) cdx)) cdx) ((((((((cdy cdy) ((cdz cdz) cea)) cea) ((((ceb ceb) ((cec cec) ced)) ced) cee)) cee) ((((((cef cef) ((ceg ceg) ceh)) ceh) ((((cei cei) ((cej cej) cek)) cek) cel)) cel) cem)) cem) cen)) cen) ceo)) ceo) cep)) cep) ((((((((((((((ceq ceq) ((cer cer) ces)) ces) ((((cet cet) ((ceu ceu) cev)) cev) cew)) cew) ((((((cex cex) ((cey cey) cez)) cez) ((((cfa cfa) ((cfb cfb) cfc)) cfc) cfd)) cfd) cfe)) cfe) ((((((((cff cff) ((cfg cfg) cfh)) cfh) ((((cfi cfi) ((cfj cfj) cfk)) cfk) cfl)) cfl) ((((((cfm cfm) ((cfn cfn) cfo)) cfo) ((((cfp cfp) ((cfq cfq) cfr)) cfr) cfs)) cfs) cft)) cft) cfu)) cfu) ((((((((((cfv cfv) ((cfw cfw) cfx)) cfx) ((((cfy cfy) ((cfz cfz) cga)) cga) cgb)) cgb) ((((((cgc cgc) ((cgd cgd) cge)) cge) ((((cgf cgf) ((cgg cgg) cgh)) cgh) cgi)) cgi) cgj)) cgj) ((((((((cgk cgk) ((cgl cgl) cgm)) cgm) ((((cgn cgn) ((cgo cgo) cgp)) cgp) cgq)) cgq) ((((((cgr cgr) ((cgs cgs) cgt)) cgt) ((((cgu cgu) ((cgv cgv) cgw)) cgw) cgx)) cgx) cgy)) cgy) cgz)) cgz) cha)) cha) ((((((((((((chb chb) ((chc chc) chd)) chd) ((((che che) ((chf chf) chg)) chg) chh)) chh) ((((((chi chi) ((chj chj) chk)) chk) ((((chl chl) ((chm chm) chn)) chn) cho)) cho) chp)) chp) ((((((((chq chq) ((chr chr) chs)) chs) ((((cht cht) ((chu chu) chv)) chv) chw)) chw) ((((((chx chx) ((chy chy) chz)) chz) ((((cia cia) ((cib cib) cic)) cic) cid)) cid) cie)) cie) cif)) cif) ((((((((((cig cig) ((cih cih) cii)) cii) ((((cij cij) ((cik cik) cil)) cil) cim)) cim) ((((((cin cin) ((cio cio) cip)) cip) ((((ciq ciq) ((cir cir) cis)) cis) cit)) cit) ciu)) ciu) ((((((((civ civ) ((ciw ciw) cix)) cix) ((((ciy ciy) ((ciz ciz) cja)) cja) cjb)) cjb) ((((((cjc cjc) ((cjd cjd) cje)) cje) ((((cjf cjf) ((cjg cjg) cjh)) cjh) cji)) cji) cjj)) cjj) cjk)) cjk) cjl)) cjl) cjm)) cjm) cjn)) cjn) ((((((((((((((((cjo cjo) ((cjp cjp) cjq)) cjq) ((((cjr cjr) ((cjs cjs) cjt)) cjt) cju)) cju) ((((((cjv cjv) ((cjw cjw) cjx)) cjx) ((((cjy cjy) ((cjz cjz) cka)) cka) ckb)) ckb) ckc)) ckc) ((((((((ckd ckd) ((cke cke) ckf)) ckf) ((((ckg ckg) ((ckh ckh) cki)) cki) ckj)) ckj) ((((((ckk ckk) ((ckl ckl) ckm)) ckm) ((((ckn ckn) ((cko cko) ckp)) ckp) ckq)) ckq) ckr)) ckr) cks)) cks) ((((((((((ckt ckt) ((cku cku) ckv)) ckv) ((((ckw ckw) ((ckx ckx) cky)) cky) ckz)) ckz) ((((((cla cla) ((clb clb) clc)) clc) ((((cld cld) ((cle cle) clf)) clf) clg)) clg) clh)) clh) ((((((((cli cli) ((clj clj) clk)) clk) ((((cll cll) ((clm clm) cln)) cln) clo)) clo) ((((((clp clp) ((clq clq) clr)) clr) ((((cls cls) ((clt clt) clu)) clu) clv)) clv) clw)) clw) clx)) clx) cly)) cly) ((((((((((((clz clz) ((cma cma) cmb)) cmb) ((((cmc cmc) ((cmd cmd) cme)) cme) cmf)) cmf) ((((((cmg cmg) ((cmh cmh) cmi)) cmi) ((((cmj cmj) ((cmk cmk) cml)) cml) cmm)) cmm) cmn)) cmn) ((((((((cmo cmo) ((cmp cmp) cmq)) cmq) ((((cmr cmr) ((cms cms) cmt)) cmt) cmu)) cmu) ((((((cmv cmv) ((cmw cmw) cmx)) cmx) ((((cmy cmy) ((cmz cmz) cna)) cna) cnb)) cnb) cnc)) cnc) cnd)) cnd) ((((((((((cne cne) ((cnf cnf) cng)) cng) ((((cnh cnh) ((cni cni) cnj)) cnj) cnk)) cnk) ((((((cnl cnl) ((cnm cnm) cnn)) cnn) ((((cno cno) ((cnp cnp) cnq)) cnq) cnr)) cnr) cns)) cns) ((((((((cnt cnt) ((cnu cnu) cnv)) cnv) ((((cnw cnw) ((cnx cnx) cny)) cny) cnz)) cnz) ((((((coa coa) ((cob cob) coc)) coc) ((((cod cod) ((coe coe) cof)) cof) cog)) cog) coh)) coh) coi)) coi) coj)) coj) cok)) cok) ((((((((((((((col col) ((com com) con)) con) ((((coo coo) ((cop cop) coq)) coq) cor)) cor) ((((((cos cos) ((cot cot) cou)) cou) ((((cov cov) ((cow cow) cox)) cox) coy)) coy) coz)) coz) ((((((((cpa cpa) ((cpb cpb) cpc)) cpc) ((((cpd cpd) ((cpe cpe) cpf)) cpf) cpg)) cpg) ((((((cph cph) ((cpi cpi) cpj)) cpj) ((((cpk cpk) ((cpl cpl) cpm)) cpm) cpn)) cpn) cpo)) cpo) cpp)) cpp) ((((((((((cpq cpq) ((cpr cpr) cps)) cps) ((((cpt cpt) ((cpu cpu) cpv)) cpv) cpw)) cpw) ((((((cpx cpx) ((cpy cpy) cpz)) cpz) ((((cqa cqa) ((cqb cqb) cqc)) cqc) cqd)) cqd) cqe)) cqe) ((((((((cqf cqf) ((cqg cqg) cqh)) cqh) ((((cqi cqi) ((cqj cqj) cqk)) cqk) cql)) cql) ((((((cqm cqm) ((cqn cqn) cqo)) cqo) ((((cqp cqp) ((cqq cqq) cqr)) cqr) cqs)) cqs) cqt)) cqt) cqu)) cqu) cqv)) cqv) ((((((((((((cqw cqw) ((cqx cqx) cqy)) cqy) ((((cqz cqz) ((cra cra) crb)) crb) crc)) crc) ((((((crd crd) ((cre cre) crf)) crf) ((((crg crg) ((crh crh) cri)) cri) crj)) crj) crk)) crk) ((((((((crl crl) ((crm crm) crn)) crn) ((((cro cro) ((crp crp) crq)) crq) crr)) crr) ((((((crs crs) ((crt crt) cru)) cru) ((((crv crv) ((crw crw) crx)) crx) cry)) cry) crz)) crz) csa)) csa) ((((((((((csb csb) ((csc csc) csd)) csd) ((((cse cse) ((csf csf) csg)) csg) csh)) csh) ((((((csi csi) ((csj csj) csk)) csk) ((((csl csl) ((csm csm) csn)) csn) cso)) cso) csp)) csp) ((((((((csq csq) ((csr csr) css)) css) ((((cst cst) ((csu csu) csv)) csv) csw)) csw) ((((((csx csx) ((csy csy) csz)) csz) ((((cta cta) ((ctb ctb) ctc)) ctc) ctd)) ctd) cte)) cte) ctf)) ctf) ctg)) ctg) cth)) cth) cti)) cti) ctj)) ctj) ((((((((((((((((((ctk ctk) ((ctl ctl) ctm)) ctm) ((((ctn ctn) ((cto cto) ctp)) ctp) ctq)) ctq) ((((((ctr ctr) ((cts cts) ctt)) ctt) ((((ctu ctu) ((ctv ctv) ctw)) ctw) ctx)) ctx) cty)) cty) ((((((((ctz ctz) ((cua cua) cub)) cub) ((((cuc cuc) ((cud cud) cue)) cue) cuf)) cuf) ((((((cug cug) ((cuh cuh) cui)) cui) ((((cuj cuj) ((cuk cuk) cul)) cul) cum)) cum) cun)) cun) cuo)) cuo) ((((((((((cup cup) ((cuq cuq) cur)) cur) ((((cus cus) ((cut cut) cuu)) cuu) cuv)) cuv) ((((((cuw cuw) ((cux cux) cuy)) cuy) ((((cuz cuz) ((cva cva) cvb)) cvb) cvc)) cvc) cvd)) cvd) ((((((((cve cve) ((cvf cvf) cvg)) cvg) ((((cvh cvh) ((cvi cvi) cvj)) cvj) cvk)) cvk) ((((((cvl cvl) ((cvm cvm) cvn)) cvn) ((((cvo cvo) ((cvp cvp) cvq)) cvq) cvr)) cvr) cvs)) cvs) cvt)) cvt) cvu)) cvu) ((((((((((((cvv cvv) ((cvw cvw) cvx)) cvx) ((((cvy cvy) ((cvz cvz) cwa)) cwa) cwb)) cwb) ((((((cwc cwc) ((cwd cwd) cwe)) cwe) ((((cwf cwf) ((cwg cwg) cwh)) cwh) cwi)) cwi) cwj)) cwj) ((((((((cwk cwk) ((cwl cwl) cwm)) cwm) ((((cwn cwn) ((cwo cwo) cwp)) cwp) cwq)) cwq) ((((((cwr cwr) ((cws cws) cwt)) cwt) ((((cwu cwu) ((cwv cwv) cww)) cww) cwx)) cwx) cwy)) cwy) cwz)) cwz) ((((((((((cxa cxa) ((cxb cxb) cxc)) cxc) ((((cxd cxd) ((cxe cxe) cxf)) cxf) cxg)) cxg) ((((((cxh cxh) ((cxi cxi) cxj)) cxj) ((((cxk cxk) ((cxl cxl) cxm)) cxm) cxn)) cxn) cxo)) cxo) ((((((((cxp cxp) ((cxq cxq) cxr)) cxr) ((((cxs cxs) ((cxt cxt) cxu)) cxu) cxv)) cxv) ((((((cxw cxw) ((cxx cxx) cxy)) cxy) ((((cxz cxz) ((cya cya) cyb)) cyb) cyc)) cyc) cyd)) cyd) cye)) cye) cyf)) cyf) cyg)) cyg) ((((((((((((((cyh cyh) ((cyi cyi) cyj)) cyj) ((((cyk cyk) ((cyl cyl) cym)) cym) cyn)) cyn) ((((((cyo cyo) ((cyp cyp) cyq)) cyq) ((((cyr cyr) ((cys cys) cyt)) cyt) cyu)) cyu) cyv)) cyv) ((((((((cyw cyw) ((cyx cyx) cyy)) cyy) ((((cyz cyz) ((cza cza) czb)) czb) czc)) czc) ((((((czd czd) ((cze cze) czf)) czf) ((((czg czg) ((czh czh) czi)) czi) czj)) czj) czk)) czk) czl)) czl) ((((((((((czm czm) ((czn czn) czo)) czo) ((((czp czp) ((czq czq) czr)) czr) czs)) czs) ((((((czt czt) ((czu czu) czv)) czv) ((((czw czw) ((czx czx) czy)) czy) czz)) czz) daa)) daa) ((((((((dab dab) ((dac dac) dad)) dad) ((((dae dae) ((daf daf) dag)) dag) dah)) dah) ((((((dai dai) ((daj daj) dak)) dak) ((((dal dal) ((dam dam) dan)) dan) dao)) dao) dap)) dap) daq)) daq) dar)) dar) ((((((((((((das das) ((dat dat) dau)) dau) ((((dav dav) ((daw daw) dax)) dax) day)) day) ((((((daz daz) ((dba dba) dbb)) dbb) ((((dbc dbc) ((dbd dbd) dbe)) dbe) dbf)) dbf) dbg)) dbg) ((((((((dbh dbh) ((dbi dbi) dbj)) dbj) ((((dbk dbk) ((dbl dbl) dbm)) dbm) dbn)) dbn) ((((((dbo dbo) ((dbp dbp) dbq)) dbq) ((((dbr dbr) ((dbs dbs) dbt)) dbt) dbu)) dbu) dbv)) dbv) dbw)) dbw) ((((((((((dbx dbx) ((dby dby) dbz)) dbz) ((((dca dca) ((dcb dcb) dcc)) dcc) dcd)) dcd) ((((((dce dce) ((dcf dcf) dcg)) dcg) ((((dch dch) ((dci dci) dcj)) dcj) dck)) dck) dcl)) dcl) ((((((((dcm dcm) ((dcn dcn) dco)) dco) ((((dcp dcp) ((dcq dcq) dcr)) dcr) dcs)) dcs) ((((((dct dct) ((dcu dcu) dcv)) dcv) ((((dcw dcw) ((dcx dcx) dcy)) dcy) dcz)) dcz) dda)) dda) ddb)) ddb) ddc)) ddc) ddd)) ddd) dde)) dde) ((((((((((((((((ddf ddf) ((ddg ddg) ddh)) ddh) ((((ddi ddi) ((ddj ddj) ddk)) ddk) ddl)) ddl) ((((((ddm ddm) ((ddn ddn) ddo)) ddo) ((((ddp ddp) ((ddq ddq) ddr)) ddr) dds)) dds) ddt)) ddt) ((((((((ddu ddu) ((ddv ddv) ddw)) ddw) ((((ddx ddx) ((ddy ddy) ddz)) ddz) dea)) dea) ((((((deb deb) ((dec dec) ded)) ded) ((((dee dee) ((def def) deg)) deg) deh)) deh) dei)) dei) dej)) dej) ((((((((((dek dek) ((del del) dem)) dem) ((((den den) ((deo deo) dep)) dep) deq)) deq) ((((((der der) ((des des) det)) det) ((((deu deu) ((dev dev) dew)) dew) dex)) dex) dey)) dey) ((((((((dez dez) ((dfa dfa) dfb)) dfb) ((((dfc dfc) ((dfd dfd) dfe)) dfe) dff)) dff) ((((((dfg dfg) ((dfh dfh) dfi)) dfi) ((((dfj dfj) ((dfk dfk) dfl)) dfl) dfm)) dfm) dfn)) dfn) dfo)) dfo) dfp)) dfp) ((((((((((((dfq dfq) ((dfr dfr) dfs)) dfs) ((((dft dft) ((dfu dfu) dfv)) dfv) dfw)) dfw) ((((((dfx dfx) ((dfy dfy) dfz)) dfz) ((((dga dga) ((dgb dgb) dgc)) dgc) dgd)) dgd) dge)) dge) ((((((((dgf dgf) ((dgg dgg) dgh)) dgh) ((((dgi dgi) ((dgj dgj) dgk)) dgk) dgl)) dgl) ((((((dgm dgm) ((dgn dgn) dgo)) dgo) ((((dgp dgp) ((dgq dgq) dgr)) dgr) dgs)) dgs) dgt)) dgt) dgu)) dgu) ((((((((((dgv dgv) ((dgw dgw) dgx)) dgx) ((((dgy dgy) ((dgz dgz) dha)) dha) dhb)) dhb) ((((((dhc dhc) ((dhd dhd) dhe)) dhe) ((((dhf dhf) ((dhg dhg) dhh)) dhh) dhi)) dhi) dhj)) dhj) ((((((((dhk dhk) ((dhl dhl) dhm)) dhm) ((((dhn dhn) ((dho dho) dhp)) dhp) dhq)) dhq) ((((((dhr dhr) ((dhs dhs) dht)) dht) ((((dhu dhu) ((dhv dhv) dhw)) dhw) dhx)) dhx) dhy)) dhy) dhz)) dhz) dia)) dia) dib)) dib) ((((((((((((((dic dic) ((did did) die)) die) ((((dif dif) ((dig dig) dih)) dih) dii)) dii) ((((((dij dij) ((dik dik) dil)) dil) ((((dim dim) ((din din) dio)) dio) dip)) dip) diq)) diq) ((((((((dir dir) ((dis dis) dit)) dit) ((((diu diu) ((div div) diw)) diw) dix)) dix) ((((((diy diy) ((diz diz) dja)) dja) ((((djb djb) ((djc djc) djd)) djd) dje)) dje) djf)) djf) djg)) djg) ((((((((((djh djh) ((dji dji) djj)) djj) ((((djk djk) ((djl djl) djm)) djm) djn)) djn) ((((((djo djo) ((djp djp) djq)) djq) ((((djr djr) ((djs djs) djt)) djt) dju)) dju) djv)) djv) ((((((((djw djw) ((djx djx) djy)) djy) ((((djz djz) ((dka dka) dkb)) dkb) dkc)) dkc) ((((((dkd dkd) ((dke dke) dkf)) dkf) ((((dkg dkg) ((dkh dkh) dki)) dki) dkj)) dkj) dkk)) dkk) dkl)) dkl) dkm)) dkm) ((((((((((((dkn dkn) ((dko dko) dkp)) dkp) ((((dkq dkq) ((dkr dkr) dks)) dks) dkt)) dkt) ((((((dku dku) ((dkv dkv) dkw)) dkw) ((((dkx dkx) ((dky dky) dkz)) dkz) dla)) dla) dlb)) dlb) ((((((((dlc dlc) ((dld dld) dle)) dle) ((((dlf dlf) ((dlg dlg) dlh)) dlh) dli)) dli) ((((((dlj dlj) ((dlk dlk) dll)) dll) ((((dlm dlm) ((dln dln) dlo)) dlo) dlp)) dlp) dlq)) dlq) dlr)) dlr) ((((((((((dls dls) ((dlt dlt) dlu)) dlu) ((((dlv dlv) ((dlw dlw) dlx)) dlx) dly)) dly) ((((((dlz dlz) ((dma dma) dmb)) dmb) ((((dmc dmc) ((dmd dmd) dme)) dme) dmf)) dmf) dmg)) dmg) ((((((((dmh dmh) ((dmi dmi) dmj)) dmj) ((((dmk dmk) ((dml dml) dmm)) dmm) dmn)) dmn) ((((((dmo dmo) ((dmp dmp) dmq)) dmq) ((((dmr dmr) ((dms dms) dmt)) dmt) dmu)) dmu) dmv)) dmv) dmw)) dmw) dmx)) dmx) dmy)) dmy) dmz)) dmz) dna)) dna) dnb)) dnb) ((((((((((((((((((((dnc dnc) ((dnd dnd) dne)) dne) ((((dnf dnf) ((dng dng) dnh)) dnh) dni)) dni) ((((((dnj dnj) ((dnk dnk) dnl)) dnl) ((((dnm dnm) ((dnn dnn) dno)) dno) dnp)) dnp) dnq)) dnq) ((((((((dnr dnr) ((dns dns) dnt)) dnt) ((((dnu dnu) ((dnv dnv) dnw)) dnw) dnx)) dnx) ((((((dny dny) ((dnz dnz) doa)) doa) ((((dob dob) ((doc doc) dod)) dod) doe)) doe) dof)) dof) dog)) dog) ((((((((((doh doh) ((doi doi) doj)) doj) ((((dok dok) ((dol dol) dom)) dom) don)) don) ((((((doo doo) ((dop dop) doq)) doq) ((((dor dor) ((dos dos) dot)) dot) dou)) dou) dov)) dov) ((((((((dow dow) ((dox dox) doy)) doy) ((((doz doz) ((dpa dpa) dpb)) dpb) dpc)) dpc) ((((((dpd dpd) ((dpe dpe) dpf)) dpf) ((((dpg dpg) ((dph dph) dpi)) dpi) dpj)) dpj) dpk)) dpk) dpl)) dpl) dpm)) dpm) ((((((((((((dpn dpn) ((dpo dpo) dpp)) dpp) ((((dpq dpq) ((dpr dpr) dps)) dps) dpt)) dpt) ((((((dpu dpu) ((dpv dpv) dpw)) dpw) ((((dpx dpx) ((dpy dpy) dpz)) dpz) dqa)) dqa) dqb)) dqb) ((((((((dqc dqc) ((dqd dqd) dqe)) dqe) ((((dqf dqf) ((dqg dqg) dqh)) dqh) dqi)) dqi) ((((((dqj dqj) ((dqk dqk) dql)) dql) ((((dqm dqm) ((dqn dqn) dqo)) dqo) dqp)) dqp) dqq)) dqq) dqr)) dqr) ((((((((((dqs dqs) ((dqt dqt) dqu)) dqu) ((((dqv dqv) ((dqw dqw) dqx)) dqx) dqy)) dqy) ((((((dqz dqz) ((dra dra) drb)) drb) ((((drc drc) ((drd drd) dre)) dre) drf)) drf) drg)) drg) ((((((((drh drh) ((dri dri) drj)) drj) ((((drk drk) ((drl drl) drm)) drm) drn)) drn) ((((((dro dro) ((drp drp) drq)) drq) ((((drr drr) ((drs drs) drt)) drt) dru)) dru) drv)) drv) drw)) drw) drx)) drx) dry)) dry) ((((((((((((((drz drz) ((dsa dsa) dsb)) dsb) ((((dsc dsc) ((dsd dsd) dse)) dse) dsf)) dsf) ((((((dsg dsg) ((dsh dsh) dsi)) dsi) ((((dsj dsj) ((dsk dsk) dsl)) dsl) dsm)) dsm) dsn)) dsn) ((((((((dso dso) ((dsp dsp) dsq)) dsq) ((((dsr dsr) ((dss dss) dst)) dst) dsu)) dsu) ((((((dsv dsv) ((dsw dsw) dsx)) dsx) ((((dsy dsy) ((dsz dsz) dta)) dta) dtb)) dtb) dtc)) dtc) dtd)) dtd) ((((((((((dte dte) ((dtf dtf) dtg)) dtg) ((((dth dth) ((dti dti) dtj)) dtj) dtk)) dtk) ((((((dtl dtl) ((dtm dtm) dtn)) dtn) ((((dto dto) ((dtp dtp) dtq)) dtq) dtr)) dtr) dts)) dts) ((((((((dtt dtt) ((dtu dtu) dtv)) dtv) ((((dtw dtw) ((dtx dtx) dty)) dty) dtz)) dtz) ((((((dua dua) ((dub dub) duc)) duc) ((((dud dud) ((due due) duf)) duf) dug)) dug) duh)) duh) dui)) dui) duj)) duj) ((((((((((((duk duk) ((dul dul) dum)) dum) ((((dun dun) ((duo duo) dup)) dup) duq)) duq) ((((((dur dur) ((dus dus) dut)) dut) ((((duu duu) ((duv duv) duw)) duw) dux)) dux) duy)) duy) ((((((((duz duz) ((dva dva) dvb)) dvb) ((((dvc dvc) ((dvd dvd) dve)) dve) dvf)) dvf) ((((((dvg dvg) ((dvh dvh) dvi)) dvi) ((((dvj dvj) ((dvk dvk) dvl)) dvl) dvm)) dvm) dvn)) dvn) dvo)) dvo) ((((((((((dvp dvp) ((dvq dvq) dvr)) dvr) ((((dvs dvs) ((dvt dvt) dvu)) dvu) dvv)) dvv) ((((((dvw dvw) ((dvx dvx) dvy)) dvy) ((((dvz dvz) ((dwa dwa) dwb)) dwb) dwc)) dwc) dwd)) dwd) ((((((((dwe dwe) ((dwf dwf) dwg)) dwg) ((((dwh dwh) ((dwi dwi) dwj)) dwj) dwk)) dwk) ((((((dwl dwl) ((dwm dwm) dwn)) dwn) ((((dwo dwo) ((dwp dwp) dwq)) dwq) dwr)) dwr) dws)) dws) dwt)) dwt) dwu)) dwu) dwv)) dwv) dww)) dww) ((((((((((((((((dwx dwx) ((dwy dwy) dwz)) dwz) ((((dxa dxa) ((dxb dxb) dxc)) dxc) dxd)) dxd) ((((((dxe dxe) ((dxf dxf) dxg)) dxg) ((((dxh dxh) ((dxi dxi) dxj)) dxj) dxk)) dxk) dxl)) dxl) ((((((((dxm dxm) ((dxn dxn) dxo)) dxo) ((((dxp dxp) ((dxq dxq) dxr)) dxr) dxs)) dxs) ((((((dxt dxt) ((dxu dxu) dxv)) dxv) ((((dxw dxw) ((dxx dxx) dxy)) dxy) dxz)) dxz) dya)) dya) dyb)) dyb) ((((((((((dyc dyc) ((dyd dyd) dye)) dye) ((((dyf dyf) ((dyg dyg) dyh)) dyh) dyi)) dyi) ((((((dyj dyj) ((dyk dyk) dyl)) dyl) ((((dym dym) ((dyn dyn) dyo)) dyo) dyp)) dyp) dyq)) dyq) ((((((((dyr dyr) ((dys dys) dyt)) dyt) ((((dyu dyu) ((dyv dyv) dyw)) dyw) dyx)) dyx) ((((((dyy dyy) ((dyz dyz) dza)) dza) ((((dzb dzb) ((dzc dzc) dzd)) dzd) dze)) dze) dzf)) dzf) dzg)) dzg) dzh)) dzh) ((((((((((((dzi dzi) ((dzj dzj) dzk)) dzk) ((((dzl dzl) ((dzm dzm) dzn)) dzn) dzo)) dzo) ((((((dzp dzp) ((dzq dzq) dzr)) dzr) ((((dzs dzs) ((dzt dzt) dzu)) dzu) dzv)) dzv) dzw)) dzw) ((((((((dzx dzx) ((dzy dzy) dzz)) dzz) ((((eaa eaa) ((eab eab) eac)) eac) ead)) ead) ((((((eae eae) ((eaf eaf) eag)) eag) ((((eah eah) ((eai eai) eaj)) eaj) eak)) eak) eal)) eal) eam)) eam) ((((((((((ean ean) ((eao eao) eap)) eap) ((((eaq eaq) ((ear ear) eas)) eas) eat)) eat) ((((((eau eau) ((eav eav) eaw)) eaw) ((((eax eax) ((eay eay) eaz)) eaz) eba)) eba) ebb)) ebb) ((((((((ebc ebc) ((ebd ebd) ebe)) ebe) ((((ebf ebf) ((ebg ebg) ebh)) ebh) ebi)) ebi) ((((((ebj ebj) ((ebk ebk) ebl)) ebl) ((((ebm ebm) ((ebn ebn) ebo)) ebo) ebp)) ebp) ebq)) ebq) ebr)) ebr) ebs)) ebs) ebt)) ebt) ((((((((((((((ebu ebu) ((ebv ebv) ebw)) ebw) ((((ebx ebx) ((eby eby) ebz)) ebz) eca)) eca) ((((((ecb ecb) ((ecc ecc) ecd)) ecd) ((((ece ece) ((ecf ecf) ecg)) ecg) ech)) ech) eci)) eci) ((((((((ecj ecj) ((eck eck) ecl)) ecl) ((((ecm ecm) ((ecn ecn) eco)) eco) ecp)) ecp) ((((((ecq ecq) ((ecr ecr) ecs)) ecs) ((((ect ect) ((ecu ecu) ecv)) ecv) ecw)) ecw) ecx)) ecx) ecy)) ecy) ((((((((((ecz ecz) ((eda eda) edb)) edb) ((((edc edc) ((edd edd) ede)) ede) edf)) edf) ((((((edg edg) ((edh edh) edi)) edi) ((((edj edj) ((edk edk) edl)) edl) edm)) edm) edn)) edn) ((((((((edo edo) ((edp edp) edq)) edq) ((((edr edr) ((eds eds) edt)) edt) edu)) edu) ((((((edv edv) ((edw edw) edx)) edx) ((((edy edy) ((edz edz) eea)) eea) eeb)) eeb) eec)) eec) eed)) eed) eee)) eee) ((((((((((((eef eef) ((eeg eeg) eeh)) eeh) ((((eei eei) ((eej eej) eek)) eek) eel)) eel) ((((((eem eem) ((een een) eeo)) eeo) ((((eep eep) ((eeq eeq) eer)) eer) ees)) ees) eet)) eet) ((((((((eeu eeu) ((eev eev) eew)) eew) ((((eex eex) ((eey eey) eez)) eez) efa)) efa) ((((((efb efb) ((efc efc) efd)) efd) ((((efe efe) ((eff eff) efg)) efg) efh)) efh) efi)) efi) efj)) efj) ((((((((((efk efk) ((efl efl) efm)) efm) ((((efn efn) ((efo efo) efp)) efp) efq)) efq) ((((((efr efr) ((efs efs) eft)) eft) ((((efu efu) ((efv efv) efw)) efw) efx)) efx) efy)) efy) ((((((((efz efz) ((ega ega) egb)) egb) ((((egc egc) ((egd egd) ege)) ege) egf)) egf) ((((((egg egg) ((egh egh) egi)) egi) ((((egj egj) ((egk egk) egl)) egl) egm)) egm) egn)) egn) ego)) ego) egp)) egp) egq)) egq) egr)) egr) egs)) egs) ((((((((((((((((((egt egt) ((egu egu) egv)) egv) ((((egw egw) ((egx egx) egy)) egy) egz)) egz) ((((((eha eha) ((ehb ehb) ehc)) ehc) ((((ehd ehd) ((ehe ehe) ehf)) ehf) ehg)) ehg) ehh)) ehh) ((((((((ehi ehi) ((ehj ehj) ehk)) ehk) ((((ehl ehl) ((ehm ehm) ehn)) ehn) eho)) eho) ((((((ehp ehp) ((ehq ehq) ehr)) ehr) ((((ehs ehs) ((eht eht) ehu)) ehu) ehv)) ehv) ehw)) ehw) ehx)) ehx) ((((((((((ehy ehy) ((ehz ehz) eia)) eia) ((((eib eib) ((eic eic) eid)) eid) eie)) eie) ((((((eif eif) ((eig eig) eih)) eih) ((((eii eii) ((eij eij) eik)) eik) eil)) eil) eim)) eim) ((((((((ein ein) ((eio eio) eip)) eip) ((((eiq eiq) ((eir eir) eis)) eis) eit)) eit) ((((((eiu eiu) ((eiv eiv) eiw)) eiw) ((((eix eix) ((eiy eiy) eiz)) eiz) eja)) eja) ejb)) ejb) ejc)) ejc) ejd)) ejd) ((((((((((((eje eje) ((ejf ejf) ejg)) ejg) ((((ejh ejh) ((eji eji) ejj)) ejj) ejk)) ejk) ((((((ejl ejl) ((ejm ejm) ejn)) ejn) ((((ejo ejo) ((ejp ejp) ejq)) ejq) ejr)) ejr) ejs)) ejs) ((((((((ejt ejt) ((eju eju) ejv)) ejv) ((((ejw ejw) ((ejx ejx) ejy)) ejy) ejz)) ejz) ((((((eka eka) ((ekb ekb) ekc)) ekc) ((((ekd ekd) ((eke eke) ekf)) ekf) ekg)) ekg) ekh)) ekh) eki)) eki) ((((((((((ekj ekj) ((ekk ekk) ekl)) ekl) ((((ekm ekm) ((ekn ekn) eko)) eko) ekp)) ekp) ((((((ekq ekq) ((ekr ekr) eks)) eks) ((((ekt ekt) ((eku eku) ekv)) ekv) ekw)) ekw) ekx)) ekx) ((((((((eky eky) ((ekz ekz) ela)) ela) ((((elb elb) ((elc elc) eld)) eld) ele)) ele) ((((((elf elf) ((elg elg) elh)) elh) ((((eli eli) ((elj elj) elk)) elk) ell)) ell) elm)) elm) eln)) eln) elo)) elo) elp)) elp) ((((((((((((((elq elq) ((elr elr) els)) els) ((((elt elt) ((elu elu) elv)) elv) elw)) elw) ((((((elx elx) ((ely ely) elz)) elz) ((((ema ema) ((emb emb) emc)) emc) emd)) emd) eme)) eme) ((((((((emf emf) ((emg emg) emh)) emh) ((((emi emi) ((emj emj) emk)) emk) eml)) eml) ((((((emm emm) ((emn emn) emo)) emo) ((((emp emp) ((emq emq) emr)) emr) ems)) ems) emt)) emt) emu)) emu) ((((((((((emv emv) ((emw emw) emx)) emx) ((((emy emy) ((emz emz) ena)) ena) enb)) enb) ((((((enc enc) ((end end) ene)) ene) ((((enf enf) ((eng eng) enh)) enh) eni)) eni) enj)) enj) ((((((((enk enk) ((enl enl) enm)) enm) ((((enn enn) ((eno eno) enp)) enp) enq)) enq) ((((((enr enr) ((ens ens) ent)) ent) ((((enu enu) ((env env) enw)) enw) enx)) enx) eny)) eny) enz)) enz) eoa)) eoa) ((((((((((((eob eob) ((eoc eoc) eod)) eod) ((((eoe eoe) ((eof eof) eog)) eog) eoh)) eoh) ((((((eoi eoi) ((eoj eoj) eok)) eok) ((((eol eol) ((eom eom) eon)) eon) eoo)) eoo) eop)) eop) ((((((((eoq eoq) ((eor eor) eos)) eos) ((((eot eot) ((eou eou) eov)) eov) eow)) eow) ((((((eox eox) ((eoy eoy) eoz)) eoz) ((((epa epa) ((epb epb) epc)) epc) epd)) epd) epe)) epe) epf)) epf) ((((((((((epg epg) ((eph eph) epi)) epi) ((((epj epj) ((epk epk) epl)) epl) epm)) epm) ((((((epn epn) ((epo epo) epp)) epp) ((((epq epq) ((epr epr) eps)) eps) ept)) ept) epu)) epu) ((((((((epv epv) ((epw epw) epx)) epx) ((((epy epy) ((epz epz) eqa)) eqa) eqb)) eqb) ((((((eqc eqc) ((eqd eqd) eqe)) eqe) ((((eqf eqf) ((eqg eqg) eqh)) eqh) eqi)) eqi) eqj)) eqj) eqk)) eqk) eql)) eql) eqm)) eqm) eqn)) eqn) ((((((((((((((((eqo eqo) ((eqp eqp) eqq)) eqq) ((((eqr eqr) ((eqs eqs) eqt)) eqt) equ)) equ) ((((((eqv eqv) ((eqw eqw) eqx)) eqx) ((((eqy eqy) ((eqz eqz) era)) era) erb)) erb) erc)) erc) ((((((((erd erd) ((ere ere) erf)) erf) ((((erg erg) ((erh erh) eri)) eri) erj)) erj) ((((((erk erk) ((erl erl) erm)) erm) ((((ern ern) ((ero ero) erp)) erp) erq)) erq) err)) err) ers)) ers) ((((((((((ert ert) ((eru eru) erv)) erv) ((((erw erw) ((erx erx) ery)) ery) erz)) erz) ((((((esa esa) ((esb esb) esc)) esc) ((((esd esd) ((ese ese) esf)) esf) esg)) esg) esh)) esh) ((((((((esi esi) ((esj esj) esk)) esk) ((((esl esl) ((esm esm) esn)) esn) eso)) eso) ((((((esp esp) ((esq esq) esr)) esr) ((((ess ess) ((est est) esu)) esu) esv)) esv) esw)) esw) esx)) esx) esy)) esy) ((((((((((((esz esz) ((eta eta) etb)) etb) ((((etc etc) ((etd etd) ete)) ete) etf)) etf) ((((((etg etg) ((eth eth) eti)) eti) ((((etj etj) ((etk etk) etl)) etl) etm)) etm) etn)) etn) ((((((((eto eto) ((etp etp) etq)) etq) ((((etr etr) ((ets ets) ett)) ett) etu)) etu) ((((((etv etv) ((etw etw) etx)) etx) ((((ety ety) ((etz etz) eua)) eua) eub)) eub) euc)) euc) eud)) eud) ((((((((((eue eue) ((euf euf) eug)) eug) ((((euh euh) ((eui eui) euj)) euj) euk)) euk) ((((((eul eul) ((eum eum) eun)) eun) ((((euo euo) ((eup eup) euq)) euq) eur)) eur) eus)) eus) ((((((((eut eut) ((euu euu) euv)) euv) ((((euw euw) ((eux eux) euy)) euy) euz)) euz) ((((((eva eva) ((evb evb) evc)) evc) ((((evd evd) ((eve eve) evf)) evf) evg)) evg) evh)) evh) evi)) evi) evj)) evj) evk)) evk) ((((((((((((((evl evl) ((evm evm) evn)) evn) ((((evo evo) ((evp evp) evq)) evq) evr)) evr) ((((((evs evs) ((evt evt) evu)) evu) ((((evv evv) ((evw evw) evx)) evx) evy)) evy) evz)) evz) ((((((((ewa ewa) ((ewb ewb) ewc)) ewc) ((((ewd ewd) ((ewe ewe) ewf)) ewf) ewg)) ewg) ((((((ewh ewh) ((ewi ewi) ewj)) ewj) ((((ewk ewk) ((ewl ewl) ewm)) ewm) ewn)) ewn) ewo)) ewo) ewp)) ewp) ((((((((((ewq ewq) ((ewr ewr) ews)) ews) ((((ewt ewt) ((ewu ewu) ewv)) ewv) eww)) eww) ((((((ewx ewx) ((ewy ewy) ewz)) ewz) ((((exa exa) ((exb exb) exc)) exc) exd)) exd) exe)) exe) ((((((((exf exf) ((exg exg) exh)) exh) ((((exi exi) ((exj exj) exk)) exk) exl)) exl) ((((((exm exm) ((exn exn) exo)) exo) ((((exp exp) ((exq exq) exr)) exr) exs)) exs) ext)) ext) exu)) exu) exv)) exv) ((((((((((((exw exw) ((exx exx) exy)) exy) ((((exz exz) ((eya eya) eyb)) eyb) eyc)) eyc) ((((((eyd eyd) ((eye eye) eyf)) eyf) ((((eyg eyg) ((eyh eyh) eyi)) eyi) eyj)) eyj) eyk)) eyk) ((((((((eyl eyl) ((eym eym) eyn)) eyn) ((((eyo eyo) ((eyp eyp) eyq)) eyq) eyr)) eyr) ((((((eys eys) ((eyt eyt) eyu)) eyu) ((((eyv eyv) ((eyw eyw) eyx)) eyx) eyy)) eyy) eyz)) eyz) eza)) eza) ((((((((((ezb ezb) ((ezc ezc) ezd)) ezd) ((((eze eze) ((ezf ezf) ezg)) ezg) ezh)) ezh) ((((((ezi ezi) ((ezj ezj) ezk)) ezk) ((((ezl ezl) ((ezm ezm) ezn)) ezn) ezo)) ezo) ezp)) ezp) ((((((((ezq ezq) ((ezr ezr) ezs)) ezs) ((((ezt ezt) ((ezu ezu) ezv)) ezv) ezw)) ezw) ((((((ezx ezx) ((ezy ezy) ezz)) ezz) ((((faa faa) ((fab fab) fac)) fac) fad)) fad) fae)) fae) faf)) faf) fag)) fag) fah)) fah) fai)) fai) faj)) faj) fak)) fak) fal)) fal) fam)) fam) ((((((((((((((((((((((((fan fan) ((fao fao) fap)) fap) ((((faq faq) ((far far) fas)) fas) fat)) fat) ((((((fau fau) ((fav fav) faw)) faw) ((((fax fax) ((fay fay) faz)) faz) fba)) fba) fbb)) fbb) ((((((((fbc fbc) ((fbd fbd) fbe)) fbe) ((((fbf fbf) ((fbg fbg) fbh)) fbh) fbi)) fbi) ((((((fbj fbj) ((fbk fbk) fbl)) fbl) ((((fbm fbm) ((fbn fbn) fbo)) fbo) fbp)) fbp) fbq)) fbq) fbr)) fbr) ((((((((((fbs fbs) ((fbt fbt) fbu)) fbu) ((((fbv fbv) ((fbw fbw) fbx)) fbx) fby)) fby) ((((((fbz fbz) ((fca fca) fcb)) fcb) ((((fcc fcc) ((fcd fcd) fce)) fce) fcf)) fcf) fcg)) fcg) ((((((((fch fch) ((fci fci) fcj)) fcj) ((((fck fck) ((fcl fcl) fcm)) fcm) fcn)) fcn) ((((((fco fco) ((fcp fcp) fcq)) fcq) ((((fcr fcr) ((fcs fcs) fct)) fct) fcu)) fcu) fcv)) fcv) fcw)) fcw) fcx)) fcx) ((((((((((((fcy fcy) ((fcz fcz) fda)) fda) ((((fdb fdb) ((fdc fdc) fdd)) fdd) fde)) fde) ((((((fdf fdf) ((fdg fdg) fdh)) fdh) ((((fdi fdi) ((fdj fdj) fdk)) fdk) fdl)) fdl) fdm)) fdm) ((((((((fdn fdn) ((fdo fdo) fdp)) fdp) ((((fdq fdq) ((fdr fdr) fds)) fds) fdt)) fdt) ((((((fdu fdu) ((fdv fdv) fdw)) fdw) ((((fdx fdx) ((fdy fdy) fdz)) fdz) fea)) fea) feb)) feb) fec)) fec) ((((((((((fed fed) ((fee fee) fef)) fef) ((((feg feg) ((feh feh) fei)) fei) fej)) fej) ((((((fek fek) ((fel fel) fem)) fem) ((((fen fen) ((feo feo) fep)) fep) feq)) feq) fer)) fer) ((((((((fes fes) ((fet fet) feu)) feu) ((((fev fev) ((few few) fex)) fex) fey)) fey) ((((((fez fez) ((ffa ffa) ffb)) ffb) ((((ffc ffc) ((ffd ffd) ffe)) ffe) fff)) fff) ffg)) ffg) ffh)) ffh) ffi)) ffi) ffj)) ffj) ((((((((((((((ffk ffk) ((ffl ffl) ffm)) ffm) ((((ffn ffn) ((ffo ffo) ffp)) ffp) ffq)) ffq) ((((((ffr ffr) ((ffs ffs) fft)) fft) ((((ffu ffu) ((ffv ffv) ffw)) ffw) ffx)) ffx) ffy)) ffy) ((((((((ffz ffz) ((fga fga) fgb)) fgb) ((((fgc fgc) ((fgd fgd) fge)) fge) fgf)) fgf) ((((((fgg fgg) ((fgh fgh) fgi)) fgi) ((((fgj fgj) ((fgk fgk) fgl)) fgl) fgm)) fgm) fgn)) fgn) fgo)) fgo) ((((((((((fgp fgp) ((fgq fgq) fgr)) fgr) ((((fgs fgs) ((fgt fgt) fgu)) fgu) fgv)) fgv) ((((((fgw fgw) ((fgx fgx) fgy)) fgy) ((((fgz fgz) ((fha fha) fhb)) fhb) fhc)) fhc) fhd)) fhd) ((((((((fhe fhe) ((fhf fhf) fhg)) fhg) ((((fhh fhh) ((fhi fhi) fhj)) fhj) fhk)) fhk) ((((((fhl fhl) ((fhm fhm) fhn)) fhn) ((((fho fho) ((fhp fhp) fhq)) fhq) fhr)) fhr) fhs)) fhs) fht)) fht) fhu)) fhu) ((((((((((((fhv fhv) ((fhw fhw) fhx)) fhx) ((((fhy fhy) ((fhz fhz) fia)) fia) fib)) fib) ((((((fic fic) ((fid fid) fie)) fie) ((((fif fif) ((fig fig) fih)) fih) fii)) fii) fij)) fij) ((((((((fik fik) ((fil fil) fim)) fim) ((((fin fin) ((fio fio) fip)) fip) fiq)) fiq) ((((((fir fir) ((fis fis) fit)) fit) ((((fiu fiu) ((fiv fiv) fiw)) fiw) fix)) fix) fiy)) fiy) fiz)) fiz) ((((((((((fja fja) ((fjb fjb) fjc)) fjc) ((((fjd fjd) ((fje fje) fjf)) fjf) fjg)) fjg) ((((((fjh fjh) ((fji fji) fjj)) fjj) ((((fjk fjk) ((fjl fjl) fjm)) fjm) fjn)) fjn) fjo)) fjo) ((((((((fjp fjp) ((fjq fjq) fjr)) fjr) ((((fjs fjs) ((fjt fjt) fju)) fju) fjv)) fjv) ((((((fjw fjw) ((fjx fjx) fjy)) fjy) ((((fjz fjz) ((fka fka) fkb)) fkb) fkc)) fkc) fkd)) fkd) fke)) fke) fkf)) fkf) fkg)) fkg) fkh)) fkh) ((((((((((((((((fki fki) ((fkj fkj) fkk)) fkk) ((((fkl fkl) ((fkm fkm) fkn)) fkn) fko)) fko) ((((((fkp fkp) ((fkq fkq) fkr)) fkr) ((((fks fks) ((fkt fkt) fku)) fku) fkv)) fkv) fkw)) fkw) ((((((((fkx fkx) ((fky fky) fkz)) fkz) ((((fla fla) ((flb flb) flc)) flc) fld)) fld) ((((((fle fle) ((flf flf) flg)) flg) ((((flh flh) ((fli fli) flj)) flj) flk)) flk) fll)) fll) flm)) flm) ((((((((((fln fln) ((flo flo) flp)) flp) ((((flq flq) ((flr flr) fls)) fls) flt)) flt) ((((((flu flu) ((flv flv) flw)) flw) ((((flx flx) ((fly fly) flz)) flz) fma)) fma) fmb)) fmb) ((((((((fmc fmc) ((fmd fmd) fme)) fme) ((((fmf fmf) ((fmg fmg) fmh)) fmh) fmi)) fmi) ((((((fmj fmj) ((fmk fmk) fml)) fml) ((((fmm fmm) ((fmn fmn) fmo)) fmo) fmp)) fmp) fmq)) fmq) fmr)) fmr) fms)) fms) ((((((((((((fmt fmt) ((fmu fmu) fmv)) fmv) ((((fmw fmw) ((fmx fmx) fmy)) fmy) fmz)) fmz) ((((((fna fna) ((fnb fnb) fnc)) fnc) ((((fnd fnd) ((fne fne) fnf)) fnf) fng)) fng) fnh)) fnh) ((((((((fni fni) ((fnj fnj) fnk)) fnk) ((((fnl fnl) ((fnm fnm) fnn)) fnn) fno)) fno) ((((((fnp fnp) ((fnq fnq) fnr)) fnr) ((((fns fns) ((fnt fnt) fnu)) fnu) fnv)) fnv) fnw)) fnw) fnx)) fnx) ((((((((((fny fny) ((fnz fnz) foa)) foa) ((((fob fob) ((foc foc) fod)) fod) foe)) foe) ((((((fof fof) ((fog fog) foh)) foh) ((((foi foi) ((foj foj) fok)) fok) fol)) fol) fom)) fom) ((((((((fon fon) ((foo foo) fop)) fop) ((((foq foq) ((for for) fos)) fos) fot)) fot) ((((((fou fou) ((fov fov) fow)) fow) ((((fox fox) ((foy foy) foz)) foz) fpa)) fpa) fpb)) fpb) fpc)) fpc) fpd)) fpd) fpe)) fpe) ((((((((((((((fpf fpf) ((fpg fpg) fph)) fph) ((((fpi fpi) ((fpj fpj) fpk)) fpk) fpl)) fpl) ((((((fpm fpm) ((fpn fpn) fpo)) fpo) ((((fpp fpp) ((fpq fpq) fpr)) fpr) fps)) fps) fpt)) fpt) ((((((((fpu fpu) ((fpv fpv) fpw)) fpw) ((((fpx fpx) ((fpy fpy) fpz)) fpz) fqa)) fqa) ((((((fqb fqb) ((fqc fqc) fqd)) fqd) ((((fqe fqe) ((fqf fqf) fqg)) fqg) fqh)) fqh) fqi)) fqi) fqj)) fqj) ((((((((((fqk fqk) ((fql fql) fqm)) fqm) ((((fqn fqn) ((fqo fqo) fqp)) fqp) fqq)) fqq) ((((((fqr fqr) ((fqs fqs) fqt)) fqt) ((((fqu fqu) ((fqv fqv) fqw)) fqw) fqx)) fqx) fqy)) fqy) ((((((((fqz fqz) ((fra fra) frb)) frb) ((((frc frc) ((frd frd) fre)) fre) frf)) frf) ((((((frg frg) ((frh frh) fri)) fri) ((((frj frj) ((frk frk) frl)) frl) frm)) frm) frn)) frn) fro)) fro) frp)) frp) ((((((((((((frq frq) ((frr frr) frs)) frs) ((((frt frt) ((fru fru) frv)) frv) frw)) frw) ((((((frx frx) ((fry fry) frz)) frz) ((((fsa fsa) ((fsb fsb) fsc)) fsc) fsd)) fsd) fse)) fse) ((((((((fsf fsf) ((fsg fsg) fsh)) fsh) ((((fsi fsi) ((fsj fsj) fsk)) fsk) fsl)) fsl) ((((((fsm fsm) ((fsn fsn) fso)) fso) ((((fsp fsp) ((fsq fsq) fsr)) fsr) fss)) fss) fst)) fst) fsu)) fsu) ((((((((((fsv fsv) ((fsw fsw) fsx)) fsx) ((((fsy fsy) ((fsz fsz) fta)) fta) ftb)) ftb) ((((((ftc ftc) ((ftd ftd) fte)) fte) ((((ftf ftf) ((ftg ftg) fth)) fth) fti)) fti) ftj)) ftj) ((((((((ftk ftk) ((ftl ftl) ftm)) ftm) ((((ftn ftn) ((fto fto) ftp)) ftp) ftq)) ftq) ((((((ftr ftr) ((fts fts) ftt)) ftt) ((((ftu ftu) ((ftv ftv) ftw)) ftw) ftx)) ftx) fty)) fty) ftz)) ftz) fua)) fua) fub)) fub) fuc)) fuc) fud)) fud) ((((((((((((((((((fue fue) ((fuf fuf) fug)) fug) ((((fuh fuh) ((fui fui) fuj)) fuj) fuk)) fuk) ((((((ful ful) ((fum fum) fun)) fun) ((((fuo fuo) ((fup fup) fuq)) fuq) fur)) fur) fus)) fus) ((((((((fut fut) ((fuu fuu) fuv)) fuv) ((((fuw fuw) ((fux fux) fuy)) fuy) fuz)) fuz) ((((((fva fva) ((fvb fvb) fvc)) fvc) ((((fvd fvd) ((fve fve) fvf)) fvf) fvg)) fvg) fvh)) fvh) fvi)) fvi) ((((((((((fvj fvj) ((fvk fvk) fvl)) fvl) ((((fvm fvm) ((fvn fvn) fvo)) fvo) fvp)) fvp) ((((((fvq fvq) ((fvr fvr) fvs)) fvs) ((((fvt fvt) ((fvu fvu) fvv)) fvv) fvw)) fvw) fvx)) fvx) ((((((((fvy fvy) ((fvz fvz) fwa)) fwa) ((((fwb fwb) ((fwc fwc) fwd)) fwd) fwe)) fwe) ((((((fwf fwf) ((fwg fwg) fwh)) fwh) ((((fwi fwi) ((fwj fwj) fwk)) fwk) fwl)) fwl) fwm)) fwm) fwn)) fwn) fwo)) fwo) ((((((((((((fwp fwp) ((fwq fwq) fwr)) fwr) ((((fws fws) ((fwt fwt) fwu)) fwu) fwv)) fwv) ((((((fww fww) ((fwx fwx) fwy)) fwy) ((((fwz fwz) ((fxa fxa) fxb)) fxb) fxc)) fxc) fxd)) fxd) ((((((((fxe fxe) ((fxf fxf) fxg)) fxg) ((((fxh fxh) ((fxi fxi) fxj)) fxj) fxk)) fxk) ((((((fxl fxl) ((fxm fxm) fxn)) fxn) ((((fxo fxo) ((fxp fxp) fxq)) fxq) fxr)) fxr) fxs)) fxs) fxt)) fxt) ((((((((((fxu fxu) ((fxv fxv) fxw)) fxw) ((((fxx fxx) ((fxy fxy) fxz)) fxz) fya)) fya) ((((((fyb fyb) ((fyc fyc) fyd)) fyd) ((((fye fye) ((fyf fyf) fyg)) fyg) fyh)) fyh) fyi)) fyi) ((((((((fyj fyj) ((fyk fyk) fyl)) fyl) ((((fym fym) ((fyn fyn) fyo)) fyo) fyp)) fyp) ((((((fyq fyq) ((fyr fyr) fys)) fys) ((((fyt fyt) ((fyu fyu) fyv)) fyv) fyw)) fyw) fyx)) fyx) fyy)) fyy) fyz)) fyz) fza)) fza) ((((((((((((((fzb fzb) ((fzc fzc) fzd)) fzd) ((((fze fze) ((fzf fzf) fzg)) fzg) fzh)) fzh) ((((((fzi fzi) ((fzj fzj) fzk)) fzk) ((((fzl fzl) ((fzm fzm) fzn)) fzn) fzo)) fzo) fzp)) fzp) ((((((((fzq fzq) ((fzr fzr) fzs)) fzs) ((((fzt fzt) ((fzu fzu) fzv)) fzv) fzw)) fzw) ((((((fzx fzx) ((fzy fzy) fzz)) fzz) ((((gaa gaa) ((gab gab) gac)) gac) gad)) gad) gae)) gae) gaf)) gaf) ((((((((((gag gag) ((gah gah) gai)) gai) ((((gaj gaj) ((gak gak) gal)) gal) gam)) gam) ((((((gan gan) ((gao gao) gap)) gap) ((((gaq gaq) ((gar gar) gas)) gas) gat)) gat) gau)) gau) ((((((((gav gav) ((gaw gaw) gax)) gax) ((((gay gay) ((gaz gaz) gba)) gba) gbb)) gbb) ((((((gbc gbc) ((gbd gbd) gbe)) gbe) ((((gbf gbf) ((gbg gbg) gbh)) gbh) gbi)) gbi) gbj)) gbj) gbk)) gbk) gbl)) gbl) ((((((((((((gbm gbm) ((gbn gbn) gbo)) gbo) ((((gbp gbp) ((gbq gbq) gbr)) gbr) gbs)) gbs) ((((((gbt gbt) ((gbu gbu) gbv)) gbv) ((((gbw gbw) ((gbx gbx) gby)) gby) gbz)) gbz) gca)) gca) ((((((((gcb gcb) ((gcc gcc) gcd)) gcd) ((((gce gce) ((gcf gcf) gcg)) gcg) gch)) gch) ((((((gci gci) ((gcj gcj) gck)) gck) ((((gcl gcl) ((gcm gcm) gcn)) gcn) gco)) gco) gcp)) gcp) gcq)) gcq) ((((((((((gcr gcr) ((gcs gcs) gct)) gct) ((((gcu gcu) ((gcv gcv) gcw)) gcw) gcx)) gcx) ((((((gcy gcy) ((gcz gcz) gda)) gda) ((((gdb gdb) ((gdc gdc) gdd)) gdd) gde)) gde) gdf)) gdf) ((((((((gdg gdg) ((gdh gdh) gdi)) gdi) ((((gdj gdj) ((gdk gdk) gdl)) gdl) gdm)) gdm) ((((((gdn gdn) ((gdo gdo) gdp)) gdp) ((((gdq gdq) ((gdr gdr) gds)) gds) gdt)) gdt) gdu)) gdu) gdv)) gdv) gdw)) gdw) gdx)) gdx) gdy)) gdy) ((((((((((((((((gdz gdz) ((gea gea) geb)) geb) ((((gec gec) ((ged ged) gee)) gee) gef)) gef) ((((((geg geg) ((geh geh) gei)) gei) ((((gej gej) ((gek gek) gel)) gel) gem)) gem) gen)) gen) ((((((((geo geo) ((gep gep) geq)) geq) ((((ger ger) ((ges ges) get)) get) geu)) geu) ((((((gev gev) ((gew gew) gex)) gex) ((((gey gey) ((gez gez) gfa)) gfa) gfb)) gfb) gfc)) gfc) gfd)) gfd) ((((((((((gfe gfe) ((gff gff) gfg)) gfg) ((((gfh gfh) ((gfi gfi) gfj)) gfj) gfk)) gfk) ((((((gfl gfl) ((gfm gfm) gfn)) gfn) ((((gfo gfo) ((gfp gfp) gfq)) gfq) gfr)) gfr) gfs)) gfs) ((((((((gft gft) ((gfu gfu) gfv)) gfv) ((((gfw gfw) ((gfx gfx) gfy)) gfy) gfz)) gfz) ((((((gga gga) ((ggb ggb) ggc)) ggc) ((((ggd ggd) ((gge gge) ggf)) ggf) ggg)) ggg) ggh)) ggh) ggi)) ggi) ggj)) ggj) ((((((((((((ggk ggk) ((ggl ggl) ggm)) ggm) ((((ggn ggn) ((ggo ggo) ggp)) ggp) ggq)) ggq) ((((((ggr ggr) ((ggs ggs) ggt)) ggt) ((((ggu ggu) ((ggv ggv) ggw)) ggw) ggx)) ggx) ggy)) ggy) ((((((((ggz ggz) ((gha gha) ghb)) ghb) ((((ghc ghc) ((ghd ghd) ghe)) ghe) ghf)) ghf) ((((((ghg ghg) ((ghh ghh) ghi)) ghi) ((((ghj ghj) ((ghk ghk) ghl)) ghl) ghm)) ghm) ghn)) ghn) gho)) gho) ((((((((((ghp ghp) ((ghq ghq) ghr)) ghr) ((((ghs ghs) ((ght ght) ghu)) ghu) ghv)) ghv) ((((((ghw ghw) ((ghx ghx) ghy)) ghy) ((((ghz ghz) ((gia gia) gib)) gib) gic)) gic) gid)) gid) ((((((((gie gie) ((gif gif) gig)) gig) ((((gih gih) ((gii gii) gij)) gij) gik)) gik) ((((((gil gil) ((gim gim) gin)) gin) ((((gio gio) ((gip gip) giq)) giq) gir)) gir) gis)) gis) git)) git) giu)) giu) giv)) giv) ((((((((((((((giw giw) ((gix gix) giy)) giy) ((((giz giz) ((gja gja) gjb)) gjb) gjc)) gjc) ((((((gjd gjd) ((gje gje) gjf)) gjf) ((((gjg gjg) ((gjh gjh) gji)) gji) gjj)) gjj) gjk)) gjk) ((((((((gjl gjl) ((gjm gjm) gjn)) gjn) ((((gjo gjo) ((gjp gjp) gjq)) gjq) gjr)) gjr) ((((((gjs gjs) ((gjt gjt) gju)) gju) ((((gjv gjv) ((gjw gjw) gjx)) gjx) gjy)) gjy) gjz)) gjz) gka)) gka) ((((((((((gkb gkb) ((gkc gkc) gkd)) gkd) ((((gke gke) ((gkf gkf) gkg)) gkg) gkh)) gkh) ((((((gki gki) ((gkj gkj) gkk)) gkk) ((((gkl gkl) ((gkm gkm) gkn)) gkn) gko)) gko) gkp)) gkp) ((((((((gkq gkq) ((gkr gkr) gks)) gks) ((((gkt gkt) ((gku gku) gkv)) gkv) gkw)) gkw) ((((((gkx gkx) ((gky gky) gkz)) gkz) ((((gla gla) ((glb glb) glc)) glc) gld)) gld) gle)) gle) glf)) glf) glg)) glg) ((((((((((((glh glh) ((gli gli) glj)) glj) ((((glk glk) ((gll gll) glm)) glm) gln)) gln) ((((((glo glo) ((glp glp) glq)) glq) ((((glr glr) ((gls gls) glt)) glt) glu)) glu) glv)) glv) ((((((((glw glw) ((glx glx) gly)) gly) ((((glz glz) ((gma gma) gmb)) gmb) gmc)) gmc) ((((((gmd gmd) ((gme gme) gmf)) gmf) ((((gmg gmg) ((gmh gmh) gmi)) gmi) gmj)) gmj) gmk)) gmk) gml)) gml) ((((((((((gmm gmm) ((gmn gmn) gmo)) gmo) ((((gmp gmp) ((gmq gmq) gmr)) gmr) gms)) gms) ((((((gmt gmt) ((gmu gmu) gmv)) gmv) ((((gmw gmw) ((gmx gmx) gmy)) gmy) gmz)) gmz) gna)) gna) ((((((((gnb gnb) ((gnc gnc) gnd)) gnd) ((((gne gne) ((gnf gnf) gng)) gng) gnh)) gnh) ((((((gni gni) ((gnj gnj) gnk)) gnk) ((((gnl gnl) ((gnm gnm) gnn)) gnn) gno)) gno) gnp)) gnp) gnq)) gnq) gnr)) gnr) gns)) gns) gnt)) gnt) gnu)) gnu) gnv)) gnv) ((((((((((((((((((((gnw gnw) ((gnx gnx) gny)) gny) ((((gnz gnz) ((goa goa) gob)) gob) goc)) goc) ((((((god god) ((goe goe) gof)) gof) ((((gog gog) ((goh goh) goi)) goi) goj)) goj) gok)) gok) ((((((((gol gol) ((gom gom) gon)) gon) ((((goo goo) ((gop gop) goq)) goq) gor)) gor) ((((((gos gos) ((got got) gou)) gou) ((((gov gov) ((gow gow) gox)) gox) goy)) goy) goz)) goz) gpa)) gpa) ((((((((((gpb gpb) ((gpc gpc) gpd)) gpd) ((((gpe gpe) ((gpf gpf) gpg)) gpg) gph)) gph) ((((((gpi gpi) ((gpj gpj) gpk)) gpk) ((((gpl gpl) ((gpm gpm) gpn)) gpn) gpo)) gpo) gpp)) gpp) ((((((((gpq gpq) ((gpr gpr) gps)) gps) ((((gpt gpt) ((gpu gpu) gpv)) gpv) gpw)) gpw) ((((((gpx gpx) ((gpy gpy) gpz)) gpz) ((((gqa gqa) ((gqb gqb) gqc)) gqc) gqd)) gqd) gqe)) gqe) gqf)) gqf) gqg)) gqg) ((((((((((((gqh gqh) ((gqi gqi) gqj)) gqj) ((((gqk gqk) ((gql gql) gqm)) gqm) gqn)) gqn) ((((((gqo gqo) ((gqp gqp) gqq)) gqq) ((((gqr gqr) ((gqs gqs) gqt)) gqt) gqu)) gqu) gqv)) gqv) ((((((((gqw gqw) ((gqx gqx) gqy)) gqy) ((((gqz gqz) ((gra gra) grb)) grb) grc)) grc) ((((((grd grd) ((gre gre) grf)) grf) ((((grg grg) ((grh grh) gri)) gri) grj)) grj) grk)) grk) grl)) grl) ((((((((((grm grm) ((grn grn) gro)) gro) ((((grp grp) ((grq grq) grr)) grr) grs)) grs) ((((((grt grt) ((gru gru) grv)) grv) ((((grw grw) ((grx grx) gry)) gry) grz)) grz) gsa)) gsa) ((((((((gsb gsb) ((gsc gsc) gsd)) gsd) ((((gse gse) ((gsf gsf) gsg)) gsg) gsh)) gsh) ((((((gsi gsi) ((gsj gsj) gsk)) gsk) ((((gsl gsl) ((gsm gsm) gsn)) gsn) gso)) gso) gsp)) gsp) gsq)) gsq) gsr)) gsr) gss)) gss) ((((((((((((((gst gst) ((gsu gsu) gsv)) gsv) ((((gsw gsw) ((gsx gsx) gsy)) gsy) gsz)) gsz) ((((((gta gta) ((gtb gtb) gtc)) gtc) ((((gtd gtd) ((gte gte) gtf)) gtf) gtg)) gtg) gth)) gth) ((((((((gti gti) ((gtj gtj) gtk)) gtk) ((((gtl gtl) ((gtm gtm) gtn)) gtn) gto)) gto) ((((((gtp gtp) ((gtq gtq) gtr)) gtr) ((((gts gts) ((gtt gtt) gtu)) gtu) gtv)) gtv) gtw)) gtw) gtx)) gtx) ((((((((((gty gty) ((gtz gtz) gua)) gua) ((((gub gub) ((guc guc) gud)) gud) gue)) gue) ((((((guf guf) ((gug gug) guh)) guh) ((((gui gui) ((guj guj) guk)) guk) gul)) gul) gum)) gum) ((((((((gun gun) ((guo guo) gup)) gup) ((((guq guq) ((gur gur) gus)) gus) gut)) gut) ((((((guu guu) ((guv guv) guw)) guw) ((((gux gux) ((guy guy) guz)) guz) gva)) gva) gvb)) gvb) gvc)) gvc) gvd)) gvd) ((((((((((((gve gve) ((gvf gvf) gvg)) gvg) ((((gvh gvh) ((gvi gvi) gvj)) gvj) gvk)) gvk) ((((((gvl gvl) ((gvm gvm) gvn)) gvn) ((((gvo gvo) ((gvp gvp) gvq)) gvq) gvr)) gvr) gvs)) gvs) ((((((((gvt gvt) ((gvu gvu) gvv)) gvv) ((((gvw gvw) ((gvx gvx) gvy)) gvy) gvz)) gvz) ((((((gwa gwa) ((gwb gwb) gwc)) gwc) ((((gwd gwd) ((gwe gwe) gwf)) gwf) gwg)) gwg) gwh)) gwh) gwi)) gwi) ((((((((((gwj gwj) ((gwk gwk) gwl)) gwl) ((((gwm gwm) ((gwn gwn) gwo)) gwo) gwp)) gwp) ((((((gwq gwq) ((gwr gwr) gws)) gws) ((((gwt gwt) ((gwu gwu) gwv)) gwv) gww)) gww) gwx)) gwx) ((((((((gwy gwy) ((gwz gwz) gxa)) gxa) ((((gxb gxb) ((gxc gxc) gxd)) gxd) gxe)) gxe) ((((((gxf gxf) ((gxg gxg) gxh)) gxh) ((((gxi gxi) ((gxj gxj) gxk)) gxk) gxl)) gxl) gxm)) gxm) gxn)) gxn) gxo)) gxo) gxp)) gxp) gxq)) gxq) ((((((((((((((((gxr gxr) ((gxs gxs) gxt)) gxt) ((((gxu gxu) ((gxv gxv) gxw)) gxw) gxx)) gxx) ((((((gxy gxy) ((gxz gxz) gya)) gya) ((((gyb gyb) ((gyc gyc) gyd)) gyd) gye)) gye) gyf)) gyf) ((((((((gyg gyg) ((gyh gyh) gyi)) gyi) ((((gyj gyj) ((gyk gyk) gyl)) gyl) gym)) gym) ((((((gyn gyn) ((gyo gyo) gyp)) gyp) ((((gyq gyq) ((gyr gyr) gys)) gys) gyt)) gyt) gyu)) gyu) gyv)) gyv) ((((((((((gyw gyw) ((gyx gyx) gyy)) gyy) ((((gyz gyz) ((gza gza) gzb)) gzb) gzc)) gzc) ((((((gzd gzd) ((gze gze) gzf)) gzf) ((((gzg gzg) ((gzh gzh) gzi)) gzi) gzj)) gzj) gzk)) gzk) ((((((((gzl gzl) ((gzm gzm) gzn)) gzn) ((((gzo gzo) ((gzp gzp) gzq)) gzq) gzr)) gzr) ((((((gzs gzs) ((gzt gzt) gzu)) gzu) ((((gzv gzv) ((gzw gzw) gzx)) gzx) gzy)) gzy) gzz)) gzz) haa)) haa) hab)) hab) ((((((((((((hac hac) ((had had) hae)) hae) ((((haf haf) ((hag hag) hah)) hah) hai)) hai) ((((((haj haj) ((hak hak) hal)) hal) ((((ham ham) ((han han) hao)) hao) hap)) hap) haq)) haq) ((((((((har har) ((has has) hat)) hat) ((((hau hau) ((hav hav) haw)) haw) hax)) hax) ((((((hay hay) ((haz haz) hba)) hba) ((((hbb hbb) ((hbc hbc) hbd)) hbd) hbe)) hbe) hbf)) hbf) hbg)) hbg) ((((((((((hbh hbh) ((hbi hbi) hbj)) hbj) ((((hbk hbk) ((hbl hbl) hbm)) hbm) hbn)) hbn) ((((((hbo hbo) ((hbp hbp) hbq)) hbq) ((((hbr hbr) ((hbs hbs) hbt)) hbt) hbu)) hbu) hbv)) hbv) ((((((((hbw hbw) ((hbx hbx) hby)) hby) ((((hbz hbz) ((hca hca) hcb)) hcb) hcc)) hcc) ((((((hcd hcd) ((hce hce) hcf)) hcf) ((((hcg hcg) ((hch hch) hci)) hci) hcj)) hcj) hck)) hck) hcl)) hcl) hcm)) hcm) hcn)) hcn) ((((((((((((((hco hco) ((hcp hcp) hcq)) hcq) ((((hcr hcr) ((hcs hcs) hct)) hct) hcu)) hcu) ((((((hcv hcv) ((hcw hcw) hcx)) hcx) ((((hcy hcy) ((hcz hcz) hda)) hda) hdb)) hdb) hdc)) hdc) ((((((((hdd hdd) ((hde hde) hdf)) hdf) ((((hdg hdg) ((hdh hdh) hdi)) hdi) hdj)) hdj) ((((((hdk hdk) ((hdl hdl) hdm)) hdm) ((((hdn hdn) ((hdo hdo) hdp)) hdp) hdq)) hdq) hdr)) hdr) hds)) hds) ((((((((((hdt hdt) ((hdu hdu) hdv)) hdv) ((((hdw hdw) ((hdx hdx) hdy)) hdy) hdz)) hdz) ((((((hea hea) ((heb heb) hec)) hec) ((((hed hed) ((hee hee) hef)) hef) heg)) heg) heh)) heh) ((((((((hei hei) ((hej hej) hek)) hek) ((((hel hel) ((hem hem) hen)) hen) heo)) heo) ((((((hep hep) ((heq heq) her)) her) ((((hes hes) ((het het) heu)) heu) hev)) hev) hew)) hew) hex)) hex) hey)) hey) ((((((((((((hez hez) ((hfa hfa) hfb)) hfb) ((((hfc hfc) ((hfd hfd) hfe)) hfe) hff)) hff) ((((((hfg hfg) ((hfh hfh) hfi)) hfi) ((((hfj hfj) ((hfk hfk) hfl)) hfl) hfm)) hfm) hfn)) hfn) ((((((((hfo hfo) ((hfp hfp) hfq)) hfq) ((((hfr hfr) ((hfs hfs) hft)) hft) hfu)) hfu) ((((((hfv hfv) ((hfw hfw) hfx)) hfx) ((((hfy hfy) ((hfz hfz) hga)) hga) hgb)) hgb) hgc)) hgc) hgd)) hgd) ((((((((((hge hge) ((hgf hgf) hgg)) hgg) ((((hgh hgh) ((hgi hgi) hgj)) hgj) hgk)) hgk) ((((((hgl hgl) ((hgm hgm) hgn)) hgn) ((((hgo hgo) ((hgp hgp) hgq)) hgq) hgr)) hgr) hgs)) hgs) ((((((((hgt hgt) ((hgu hgu) hgv)) hgv) ((((hgw hgw) ((hgx hgx) hgy)) hgy) hgz)) hgz) ((((((hha hha) ((hhb hhb) hhc)) hhc) ((((hhd hhd) ((hhe hhe) hhf)) hhf) hhg)) hhg) hhh)) hhh) hhi)) hhi) hhj)) hhj) hhk)) hhk) hhl)) hhl) hhm)) hhm) ((((((((((((((((((hhn hhn) ((hho hho) hhp)) hhp) ((((hhq hhq) ((hhr hhr) hhs)) hhs) hht)) hht) ((((((hhu hhu) ((hhv hhv) hhw)) hhw) ((((hhx hhx) ((hhy hhy) hhz)) hhz) hia)) hia) hib)) hib) ((((((((hic hic) ((hid hid) hie)) hie) ((((hif hif) ((hig hig) hih)) hih) hii)) hii) ((((((hij hij) ((hik hik) hil)) hil) ((((him him) ((hin hin) hio)) hio) hip)) hip) hiq)) hiq) hir)) hir) ((((((((((his his) ((hit hit) hiu)) hiu) ((((hiv hiv) ((hiw hiw) hix)) hix) hiy)) hiy) ((((((hiz hiz) ((hja hja) hjb)) hjb) ((((hjc hjc) ((hjd hjd) hje)) hje) hjf)) hjf) hjg)) hjg) ((((((((hjh hjh) ((hji hji) hjj)) hjj) ((((hjk hjk) ((hjl hjl) hjm)) hjm) hjn)) hjn) ((((((hjo hjo) ((hjp hjp) hjq)) hjq) ((((hjr hjr) ((hjs hjs) hjt)) hjt) hju)) hju) hjv)) hjv) hjw)) hjw) hjx)) hjx) ((((((((((((hjy hjy) ((hjz hjz) hka)) hka) ((((hkb hkb) ((hkc hkc) hkd)) hkd) hke)) hke) ((((((hkf hkf) ((hkg hkg) hkh)) hkh) ((((hki hki) ((hkj hkj) hkk)) hkk) hkl)) hkl) hkm)) hkm) ((((((((hkn hkn) ((hko hko) hkp)) hkp) ((((hkq hkq) ((hkr hkr) hks)) hks) hkt)) hkt) ((((((hku hku) ((hkv hkv) hkw)) hkw) ((((hkx hkx) ((hky hky) hkz)) hkz) hla)) hla) hlb)) hlb) hlc)) hlc) ((((((((((hld hld) ((hle hle) hlf)) hlf) ((((hlg hlg) ((hlh hlh) hli)) hli) hlj)) hlj) ((((((hlk hlk) ((hll hll) hlm)) hlm) ((((hln hln) ((hlo hlo) hlp)) hlp) hlq)) hlq) hlr)) hlr) ((((((((hls hls) ((hlt hlt) hlu)) hlu) ((((hlv hlv) ((hlw hlw) hlx)) hlx) hly)) hly) ((((((hlz hlz) ((hma hma) hmb)) hmb) ((((hmc hmc) ((hmd hmd) hme)) hme) hmf)) hmf) hmg)) hmg) hmh)) hmh) hmi)) hmi) hmj)) hmj) ((((((((((((((hmk hmk) ((hml hml) hmm)) hmm) ((((hmn hmn) ((hmo hmo) hmp)) hmp) hmq)) hmq) ((((((hmr hmr) ((hms hms) hmt)) hmt) ((((hmu hmu) ((hmv hmv) hmw)) hmw) hmx)) hmx) hmy)) hmy) ((((((((hmz hmz) ((hna hna) hnb)) hnb) ((((hnc hnc) ((hnd hnd) hne)) hne) hnf)) hnf) ((((((hng hng) ((hnh hnh) hni)) hni) ((((hnj hnj) ((hnk hnk) hnl)) hnl) hnm)) hnm) hnn)) hnn) hno)) hno) ((((((((((hnp hnp) ((hnq hnq) hnr)) hnr) ((((hns hns) ((hnt hnt) hnu)) hnu) hnv)) hnv) ((((((hnw hnw) ((hnx hnx) hny)) hny) ((((hnz hnz) ((hoa hoa) hob)) hob) hoc)) hoc) hod)) hod) ((((((((hoe hoe) ((hof hof) hog)) hog) ((((hoh hoh) ((hoi hoi) hoj)) hoj) hok)) hok) ((((((hol hol) ((hom hom) hon)) hon) ((((hoo hoo) ((hop hop) hoq)) hoq) hor)) hor) hos)) hos) hot)) hot) hou)) hou) ((((((((((((hov hov) ((how how) hox)) hox) ((((hoy hoy) ((hoz hoz) hpa)) hpa) hpb)) hpb) ((((((hpc hpc) ((hpd hpd) hpe)) hpe) ((((hpf hpf) ((hpg hpg) hph)) hph) hpi)) hpi) hpj)) hpj) ((((((((hpk hpk) ((hpl hpl) hpm)) hpm) ((((hpn hpn) ((hpo hpo) hpp)) hpp) hpq)) hpq) ((((((hpr hpr) ((hps hps) hpt)) hpt) ((((hpu hpu) ((hpv hpv) hpw)) hpw) hpx)) hpx) hpy)) hpy) hpz)) hpz) ((((((((((hqa hqa) ((hqb hqb) hqc)) hqc) ((((hqd hqd) ((hqe hqe) hqf)) hqf) hqg)) hqg) ((((((hqh hqh) ((hqi hqi) hqj)) hqj) ((((hqk hqk) ((hql hql) hqm)) hqm) hqn)) hqn) hqo)) hqo) ((((((((hqp hqp) ((hqq hqq) hqr)) hqr) ((((hqs hqs) ((hqt hqt) hqu)) hqu) hqv)) hqv) ((((((hqw hqw) ((hqx hqx) hqy)) hqy) ((((hqz hqz) ((hra hra) hrb)) hrb) hrc)) hrc) hrd)) hrd) hre)) hre) hrf)) hrf) hrg)) hrg) hrh)) hrh) ((((((((((((((((hri hri) ((hrj hrj) hrk)) hrk) ((((hrl hrl) ((hrm hrm) hrn)) hrn) hro)) hro) ((((((hrp hrp) ((hrq hrq) hrr)) hrr) ((((hrs hrs) ((hrt hrt) hru)) hru) hrv)) hrv) hrw)) hrw) ((((((((hrx hrx) ((hry hry) hrz)) hrz) ((((hsa hsa) ((hsb hsb) hsc)) hsc) hsd)) hsd) ((((((hse hse) ((hsf hsf) hsg)) hsg) ((((hsh hsh) ((hsi hsi) hsj)) hsj) hsk)) hsk) hsl)) hsl) hsm)) hsm) ((((((((((hsn hsn) ((hso hso) hsp)) hsp) ((((hsq hsq) ((hsr hsr) hss)) hss) hst)) hst) ((((((hsu hsu) ((hsv hsv) hsw)) hsw) ((((hsx hsx) ((hsy hsy) hsz)) hsz) hta)) hta) htb)) htb) ((((((((htc htc) ((htd htd) hte)) hte) ((((htf htf) ((htg htg) hth)) hth) hti)) hti) ((((((htj htj) ((htk htk) htl)) htl) ((((htm htm) ((htn htn) hto)) hto) htp)) htp) htq)) htq) htr)) htr) hts)) hts) ((((((((((((htt htt) ((htu htu) htv)) htv) ((((htw htw) ((htx htx) hty)) hty) htz)) htz) ((((((hua hua) ((hub hub) huc)) huc) ((((hud hud) ((hue hue) huf)) huf) hug)) hug) huh)) huh) ((((((((hui hui) ((huj huj) huk)) huk) ((((hul hul) ((hum hum) hun)) hun) huo)) huo) ((((((hup hup) ((huq huq) hur)) hur) ((((hus hus) ((hut hut) huu)) huu) huv)) huv) huw)) huw) hux)) hux) ((((((((((huy huy) ((huz huz) hva)) hva) ((((hvb hvb) ((hvc hvc) hvd)) hvd) hve)) hve) ((((((hvf hvf) ((hvg hvg) hvh)) hvh) ((((hvi hvi) ((hvj hvj) hvk)) hvk) hvl)) hvl) hvm)) hvm) ((((((((hvn hvn) ((hvo hvo) hvp)) hvp) ((((hvq hvq) ((hvr hvr) hvs)) hvs) hvt)) hvt) ((((((hvu hvu) ((hvv hvv) hvw)) hvw) ((((hvx hvx) ((hvy hvy) hvz)) hvz) hwa)) hwa) hwb)) hwb) hwc)) hwc) hwd)) hwd) hwe)) hwe) ((((((((((((((hwf hwf) ((hwg hwg) hwh)) hwh) ((((hwi hwi) ((hwj hwj) hwk)) hwk) hwl)) hwl) ((((((hwm hwm) ((hwn hwn) hwo)) hwo) ((((hwp hwp) ((hwq hwq) hwr)) hwr) hws)) hws) hwt)) hwt) ((((((((hwu hwu) ((hwv hwv) hww)) hww) ((((hwx hwx) ((hwy hwy) hwz)) hwz) hxa)) hxa) ((((((hxb hxb) ((hxc hxc) hxd)) hxd) ((((hxe hxe) ((hxf hxf) hxg)) hxg) hxh)) hxh) hxi)) hxi) hxj)) hxj) ((((((((((hxk hxk) ((hxl hxl) hxm)) hxm) ((((hxn hxn) ((hxo hxo) hxp)) hxp) hxq)) hxq) ((((((hxr hxr) ((hxs hxs) hxt)) hxt) ((((hxu hxu) ((hxv hxv) hxw)) hxw) hxx)) hxx) hxy)) hxy) ((((((((hxz hxz) ((hya hya) hyb)) hyb) ((((hyc hyc) ((hyd hyd) hye)) hye) hyf)) hyf) ((((((hyg hyg) ((hyh hyh) hyi)) hyi) ((((hyj hyj) ((hyk hyk) hyl)) hyl) hym)) hym) hyn)) hyn) hyo)) hyo) hyp)) hyp) ((((((((((((hyq hyq) ((hyr hyr) hys)) hys) ((((hyt hyt) ((hyu hyu) hyv)) hyv) hyw)) hyw) ((((((hyx hyx) ((hyy hyy) hyz)) hyz) ((((hza hza) ((hzb hzb) hzc)) hzc) hzd)) hzd) hze)) hze) ((((((((hzf hzf) ((hzg hzg) hzh)) hzh) ((((hzi hzi) ((hzj hzj) hzk)) hzk) hzl)) hzl) ((((((hzm hzm) ((hzn hzn) hzo)) hzo) ((((hzp hzp) ((hzq hzq) hzr)) hzr) hzs)) hzs) hzt)) hzt) hzu)) hzu) ((((((((((hzv hzv) ((hzw hzw) hzx)) hzx) ((((hzy hzy) ((hzz hzz) iaa)) iaa) iab)) iab) ((((((iac iac) ((iad iad) iae)) iae) ((((iaf iaf) ((iag iag) iah)) iah) iai)) iai) iaj)) iaj) ((((((((iak iak) ((ial ial) iam)) iam) ((((ian ian) ((iao iao) iap)) iap) iaq)) iaq) ((((((iar iar) ((ias ias) iat)) iat) ((((iau iau) ((iav iav) iaw)) iaw) iax)) iax) iay)) iay) iaz)) iaz) iba)) iba) ibb)) ibb) ibc)) ibc) ibd)) ibd) ibe)) ibe) ibf)) ibf) ((((((((((((((((((((((ibg ibg) ((ibh ibh) ibi)) ibi) ((((ibj ibj) ((ibk ibk) ibl)) ibl) ibm)) ibm) ((((((ibn ibn) ((ibo ibo) ibp)) ibp) ((((ibq ibq) ((ibr ibr) ibs)) ibs) ibt)) ibt) ibu)) ibu) ((((((((ibv ibv) ((ibw ibw) ibx)) ibx) ((((iby iby) ((ibz ibz) ica)) ica) icb)) icb) ((((((icc icc) ((icd icd) ice)) ice) ((((icf icf) ((icg icg) ich)) ich) ici)) ici) icj)) icj) ick)) ick) ((((((((((icl icl) ((icm icm) icn)) icn) ((((ico ico) ((icp icp) icq)) icq) icr)) icr) ((((((ics ics) ((ict ict) icu)) icu) ((((icv icv) ((icw icw) icx)) icx) icy)) icy) icz)) icz) ((((((((ida ida) ((idb idb) idc)) idc) ((((idd idd) ((ide ide) idf)) idf) idg)) idg) ((((((idh idh) ((idi idi) idj)) idj) ((((idk idk) ((idl idl) idm)) idm) idn)) idn) ido)) ido) idp)) idp) idq)) idq) ((((((((((((idr idr) ((ids ids) idt)) idt) ((((idu idu) ((idv idv) idw)) idw) idx)) idx) ((((((idy idy) ((idz idz) iea)) iea) ((((ieb ieb) ((iec iec) ied)) ied) iee)) iee) ief)) ief) ((((((((ieg ieg) ((ieh ieh) iei)) iei) ((((iej iej) ((iek iek) iel)) iel) iem)) iem) ((((((ien ien) ((ieo ieo) iep)) iep) ((((ieq ieq) ((ier ier) ies)) ies) iet)) iet) ieu)) ieu) iev)) iev) ((((((((((iew iew) ((iex iex) iey)) iey) ((((iez iez) ((ifa ifa) ifb)) ifb) ifc)) ifc) ((((((ifd ifd) ((ife ife) iff)) iff) ((((ifg ifg) ((ifh ifh) ifi)) ifi) ifj)) ifj) ifk)) ifk) ((((((((ifl ifl) ((ifm ifm) ifn)) ifn) ((((ifo ifo) ((ifp ifp) ifq)) ifq) ifr)) ifr) ((((((ifs ifs) ((ift ift) ifu)) ifu) ((((ifv ifv) ((ifw ifw) ifx)) ifx) ify)) ify) ifz)) ifz) iga)) iga) igb)) igb) igc)) igc) ((((((((((((((igd igd) ((ige ige) igf)) igf) ((((igg igg) ((igh igh) igi)) igi) igj)) igj) ((((((igk igk) ((igl igl) igm)) igm) ((((ign ign) ((igo igo) igp)) igp) igq)) igq) igr)) igr) ((((((((igs igs) ((igt igt) igu)) igu) ((((igv igv) ((igw igw) igx)) igx) igy)) igy) ((((((igz igz) ((iha iha) ihb)) ihb) ((((ihc ihc) ((ihd ihd) ihe)) ihe) ihf)) ihf) ihg)) ihg) ihh)) ihh) ((((((((((ihi ihi) ((ihj ihj) ihk)) ihk) ((((ihl ihl) ((ihm ihm) ihn)) ihn) iho)) iho) ((((((ihp ihp) ((ihq ihq) ihr)) ihr) ((((ihs ihs) ((iht iht) ihu)) ihu) ihv)) ihv) ihw)) ihw) ((((((((ihx ihx) ((ihy ihy) ihz)) ihz) ((((iia iia) ((iib iib) iic)) iic) iid)) iid) ((((((iie iie) ((iif iif) iig)) iig) ((((iih iih) ((iii iii) iij)) iij) iik)) iik) iil)) iil) iim)) iim) iin)) iin) ((((((((((((iio iio) ((iip iip) iiq)) iiq) ((((iir iir) ((iis iis) iit)) iit) iiu)) iiu) ((((((iiv iiv) ((iiw iiw) iix)) iix) ((((iiy iiy) ((iiz iiz) ija)) ija) ijb)) ijb) ijc)) ijc) ((((((((ijd ijd) ((ije ije) ijf)) ijf) ((((ijg ijg) ((ijh ijh) iji)) iji) ijj)) ijj) ((((((ijk ijk) ((ijl ijl) ijm)) ijm) ((((ijn ijn) ((ijo ijo) ijp)) ijp) ijq)) ijq) ijr)) ijr) ijs)) ijs) ((((((((((ijt ijt) ((iju iju) ijv)) ijv) ((((ijw ijw) ((ijx ijx) ijy)) ijy) ijz)) ijz) ((((((ika ika) ((ikb ikb) ikc)) ikc) ((((ikd ikd) ((ike ike) ikf)) ikf) ikg)) ikg) ikh)) ikh) ((((((((iki iki) ((ikj ikj) ikk)) ikk) ((((ikl ikl) ((ikm ikm) ikn)) ikn) iko)) iko) ((((((ikp ikp) ((ikq ikq) ikr)) ikr) ((((iks iks) ((ikt ikt) iku)) iku) ikv)) ikv) ikw)) ikw) ikx)) ikx) iky)) iky) ikz)) ikz) ila)) ila) ((((((((((((((((ilb ilb) ((ilc ilc) ild)) ild) ((((ile ile) ((ilf ilf) ilg)) ilg) ilh)) ilh) ((((((ili ili) ((ilj ilj) ilk)) ilk) ((((ill ill) ((ilm ilm) iln)) iln) ilo)) ilo) ilp)) ilp) ((((((((ilq ilq) ((ilr ilr) ils)) ils) ((((ilt ilt) ((ilu ilu) ilv)) ilv) ilw)) ilw) ((((((ilx ilx) ((ily ily) ilz)) ilz) ((((ima ima) ((imb imb) imc)) imc) imd)) imd) ime)) ime) imf)) imf) ((((((((((img img) ((imh imh) imi)) imi) ((((imj imj) ((imk imk) iml)) iml) imm)) imm) ((((((imn imn) ((imo imo) imp)) imp) ((((imq imq) ((imr imr) ims)) ims) imt)) imt) imu)) imu) ((((((((imv imv) ((imw imw) imx)) imx) ((((imy imy) ((imz imz) ina)) ina) inb)) inb) ((((((inc inc) ((ind ind) ine)) ine) ((((inf inf) ((ing ing) inh)) inh) ini)) ini) inj)) inj) ink)) ink) inl)) inl) ((((((((((((inm inm) ((inn inn) ino)) ino) ((((inp inp) ((inq inq) inr)) inr) ins)) ins) ((((((int int) ((inu inu) inv)) inv) ((((inw inw) ((inx inx) iny)) iny) inz)) inz) ioa)) ioa) ((((((((iob iob) ((ioc ioc) iod)) iod) ((((ioe ioe) ((iof iof) iog)) iog) ioh)) ioh) ((((((ioi ioi) ((ioj ioj) iok)) iok) ((((iol iol) ((iom iom) ion)) ion) ioo)) ioo) iop)) iop) ioq)) ioq) ((((((((((ior ior) ((ios ios) iot)) iot) ((((iou iou) ((iov iov) iow)) iow) iox)) iox) ((((((ioy ioy) ((ioz ioz) ipa)) ipa) ((((ipb ipb) ((ipc ipc) ipd)) ipd) ipe)) ipe) ipf)) ipf) ((((((((ipg ipg) ((iph iph) ipi)) ipi) ((((ipj ipj) ((ipk ipk) ipl)) ipl) ipm)) ipm) ((((((ipn ipn) ((ipo ipo) ipp)) ipp) ((((ipq ipq) ((ipr ipr) ips)) ips) ipt)) ipt) ipu)) ipu) ipv)) ipv) ipw)) ipw) ipx)) ipx) ((((((((((((((ipy ipy) ((ipz ipz) iqa)) iqa) ((((iqb iqb) ((iqc iqc) iqd)) iqd) iqe)) iqe) ((((((iqf iqf) ((iqg iqg) iqh)) iqh) ((((iqi iqi) ((iqj iqj) iqk)) iqk) iql)) iql) iqm)) iqm) ((((((((iqn iqn) ((iqo iqo) iqp)) iqp) ((((iqq iqq) ((iqr iqr) iqs)) iqs) iqt)) iqt) ((((((iqu iqu) ((iqv iqv) iqw)) iqw) ((((iqx iqx) ((iqy iqy) iqz)) iqz) ira)) ira) irb)) irb) irc)) irc) ((((((((((ird ird) ((ire ire) irf)) irf) ((((irg irg) ((irh irh) iri)) iri) irj)) irj) ((((((irk irk) ((irl irl) irm)) irm) ((((irn irn) ((iro iro) irp)) irp) irq)) irq) irr)) irr) ((((((((irs irs) ((irt irt) iru)) iru) ((((irv irv) ((irw irw) irx)) irx) iry)) iry) ((((((irz irz) ((isa isa) isb)) isb) ((((isc isc) ((isd isd) ise)) ise) isf)) isf) isg)) isg) ish)) ish) isi)) isi) ((((((((((((isj isj) ((isk isk) isl)) isl) ((((ism ism) ((isn isn) iso)) iso) isp)) isp) ((((((isq isq) ((isr isr) iss)) iss) ((((ist ist) ((isu isu) isv)) isv) isw)) isw) isx)) isx) ((((((((isy isy) ((isz isz) ita)) ita) ((((itb itb) ((itc itc) itd)) itd) ite)) ite) ((((((itf itf) ((itg itg) ith)) ith) ((((iti iti) ((itj itj) itk)) itk) itl)) itl) itm)) itm) itn)) itn) ((((((((((ito ito) ((itp itp) itq)) itq) ((((itr itr) ((its its) itt)) itt) itu)) itu) ((((((itv itv) ((itw itw) itx)) itx) ((((ity ity) ((itz itz) iua)) iua) iub)) iub) iuc)) iuc) ((((((((iud iud) ((iue iue) iuf)) iuf) ((((iug iug) ((iuh iuh) iui)) iui) iuj)) iuj) ((((((iuk iuk) ((iul iul) ium)) ium) ((((iun iun) ((iuo iuo) iup)) iup) iuq)) iuq) iur)) iur) ius)) ius) iut)) iut) iuu)) iuu) iuv)) iuv) iuw)) iuw) ((((((((((((((((((iux iux) ((iuy iuy) iuz)) iuz) ((((iva iva) ((ivb ivb) ivc)) ivc) ivd)) ivd) ((((((ive ive) ((ivf ivf) ivg)) ivg) ((((ivh ivh) ((ivi ivi) ivj)) ivj) ivk)) ivk) ivl)) ivl) ((((((((ivm ivm) ((ivn ivn) ivo)) ivo) ((((ivp ivp) ((ivq ivq) ivr)) ivr) ivs)) ivs) ((((((ivt ivt) ((ivu ivu) ivv)) ivv) ((((ivw ivw) ((ivx ivx) ivy)) ivy) ivz)) ivz) iwa)) iwa) iwb)) iwb) ((((((((((iwc iwc) ((iwd iwd) iwe)) iwe) ((((iwf iwf) ((iwg iwg) iwh)) iwh) iwi)) iwi) ((((((iwj iwj) ((iwk iwk) iwl)) iwl) ((((iwm iwm) ((iwn iwn) iwo)) iwo) iwp)) iwp) iwq)) iwq) ((((((((iwr iwr) ((iws iws) iwt)) iwt) ((((iwu iwu) ((iwv iwv) iww)) iww) iwx)) iwx) ((((((iwy iwy) ((iwz iwz) ixa)) ixa) ((((ixb ixb) ((ixc ixc) ixd)) ixd) ixe)) ixe) ixf)) ixf) ixg)) ixg) ixh)) ixh) ((((((((((((ixi ixi) ((ixj ixj) ixk)) ixk) ((((ixl ixl) ((ixm ixm) ixn)) ixn) ixo)) ixo) ((((((ixp ixp) ((ixq ixq) ixr)) ixr) ((((ixs ixs) ((ixt ixt) ixu)) ixu) ixv)) ixv) ixw)) ixw) ((((((((ixx ixx) ((ixy ixy) ixz)) ixz) ((((iya iya) ((iyb iyb) iyc)) iyc) iyd)) iyd) ((((((iye iye) ((iyf iyf) iyg)) iyg) ((((iyh iyh) ((iyi iyi) iyj)) iyj) iyk)) iyk) iyl)) iyl) iym)) iym) ((((((((((iyn iyn) ((iyo iyo) iyp)) iyp) ((((iyq iyq) ((iyr iyr) iys)) iys) iyt)) iyt) ((((((iyu iyu) ((iyv iyv) iyw)) iyw) ((((iyx iyx) ((iyy iyy) iyz)) iyz) iza)) iza) izb)) izb) ((((((((izc izc) ((izd izd) ize)) ize) ((((izf izf) ((izg izg) izh)) izh) izi)) izi) ((((((izj izj) ((izk izk) izl)) izl) ((((izm izm) ((izn izn) izo)) izo) izp)) izp) izq)) izq) izr)) izr) izs)) izs) izt)) izt) ((((((((((((((izu izu) ((izv izv) izw)) izw) ((((izx izx) ((izy izy) izz)) izz) jaa)) jaa) ((((((jab jab) ((jac jac) jad)) jad) ((((jae jae) ((jaf jaf) jag)) jag) jah)) jah) jai)) jai) ((((((((jaj jaj) ((jak jak) jal)) jal) ((((jam jam) ((jan jan) jao)) jao) jap)) jap) ((((((jaq jaq) ((jar jar) jas)) jas) ((((jat jat) ((jau jau) jav)) jav) jaw)) jaw) jax)) jax) jay)) jay) ((((((((((jaz jaz) ((jba jba) jbb)) jbb) ((((jbc jbc) ((jbd jbd) jbe)) jbe) jbf)) jbf) ((((((jbg jbg) ((jbh jbh) jbi)) jbi) ((((jbj jbj) ((jbk jbk) jbl)) jbl) jbm)) jbm) jbn)) jbn) ((((((((jbo jbo) ((jbp jbp) jbq)) jbq) ((((jbr jbr) ((jbs jbs) jbt)) jbt) jbu)) jbu) ((((((jbv jbv) ((jbw jbw) jbx)) jbx) ((((jby jby) ((jbz jbz) jca)) jca) jcb)) jcb) jcc)) jcc) jcd)) jcd) jce)) jce) ((((((((((((jcf jcf) ((jcg jcg) jch)) jch) ((((jci jci) ((jcj jcj) jck)) jck) jcl)) jcl) ((((((jcm jcm) ((jcn jcn) jco)) jco) ((((jcp jcp) ((jcq jcq) jcr)) jcr) jcs)) jcs) jct)) jct) ((((((((jcu jcu) ((jcv jcv) jcw)) jcw) ((((jcx jcx) ((jcy jcy) jcz)) jcz) jda)) jda) ((((((jdb jdb) ((jdc jdc) jdd)) jdd) ((((jde jde) ((jdf jdf) jdg)) jdg) jdh)) jdh) jdi)) jdi) jdj)) jdj) ((((((((((jdk jdk) ((jdl jdl) jdm)) jdm) ((((jdn jdn) ((jdo jdo) jdp)) jdp) jdq)) jdq) ((((((jdr jdr) ((jds jds) jdt)) jdt) ((((jdu jdu) ((jdv jdv) jdw)) jdw) jdx)) jdx) jdy)) jdy) ((((((((jdz jdz) ((jea jea) jeb)) jeb) ((((jec jec) ((jed jed) jee)) jee) jef)) jef) ((((((jeg jeg) ((jeh jeh) jei)) jei) ((((jej jej) ((jek jek) jel)) jel) jem)) jem) jen)) jen) jeo)) jeo) jep)) jep) jeq)) jeq) jer)) jer) ((((((((((((((((jes jes) ((jet jet) jeu)) jeu) ((((jev jev) ((jew jew) jex)) jex) jey)) jey) ((((((jez jez) ((jfa jfa) jfb)) jfb) ((((jfc jfc) ((jfd jfd) jfe)) jfe) jff)) jff) jfg)) jfg) ((((((((jfh jfh) ((jfi jfi) jfj)) jfj) ((((jfk jfk) ((jfl jfl) jfm)) jfm) jfn)) jfn) ((((((jfo jfo) ((jfp jfp) jfq)) jfq) ((((jfr jfr) ((jfs jfs) jft)) jft) jfu)) jfu) jfv)) jfv) jfw)) jfw) ((((((((((jfx jfx) ((jfy jfy) jfz)) jfz) ((((jga jga) ((jgb jgb) jgc)) jgc) jgd)) jgd) ((((((jge jge) ((jgf jgf) jgg)) jgg) ((((jgh jgh) ((jgi jgi) jgj)) jgj) jgk)) jgk) jgl)) jgl) ((((((((jgm jgm) ((jgn jgn) jgo)) jgo) ((((jgp jgp) ((jgq jgq) jgr)) jgr) jgs)) jgs) ((((((jgt jgt) ((jgu jgu) jgv)) jgv) ((((jgw jgw) ((jgx jgx) jgy)) jgy) jgz)) jgz) jha)) jha) jhb)) jhb) jhc)) jhc) ((((((((((((jhd jhd) ((jhe jhe) jhf)) jhf) ((((jhg jhg) ((jhh jhh) jhi)) jhi) jhj)) jhj) ((((((jhk jhk) ((jhl jhl) jhm)) jhm) ((((jhn jhn) ((jho jho) jhp)) jhp) jhq)) jhq) jhr)) jhr) ((((((((jhs jhs) ((jht jht) jhu)) jhu) ((((jhv jhv) ((jhw jhw) jhx)) jhx) jhy)) jhy) ((((((jhz jhz) ((jia jia) jib)) jib) ((((jic jic) ((jid jid) jie)) jie) jif)) jif) jig)) jig) jih)) jih) ((((((((((jii jii) ((jij jij) jik)) jik) ((((jil jil) ((jim jim) jin)) jin) jio)) jio) ((((((jip jip) ((jiq jiq) jir)) jir) ((((jis jis) ((jit jit) jiu)) jiu) jiv)) jiv) jiw)) jiw) ((((((((jix jix) ((jiy jiy) jiz)) jiz) ((((jja jja) ((jjb jjb) jjc)) jjc) jjd)) jjd) ((((((jje jje) ((jjf jjf) jjg)) jjg) ((((jjh jjh) ((jji jji) jjj)) jjj) jjk)) jjk) jjl)) jjl) jjm)) jjm) jjn)) jjn) jjo)) jjo) ((((((((((((((jjp jjp) ((jjq jjq) jjr)) jjr) ((((jjs jjs) ((jjt jjt) jju)) jju) jjv)) jjv) ((((((jjw jjw) ((jjx jjx) jjy)) jjy) ((((jjz jjz) ((jka jka) jkb)) jkb) jkc)) jkc) jkd)) jkd) ((((((((jke jke) ((jkf jkf) jkg)) jkg) ((((jkh jkh) ((jki jki) jkj)) jkj) jkk)) jkk) ((((((jkl jkl) ((jkm jkm) jkn)) jkn) ((((jko jko) ((jkp jkp) jkq)) jkq) jkr)) jkr) jks)) jks) jkt)) jkt) ((((((((((jku jku) ((jkv jkv) jkw)) jkw) ((((jkx jkx) ((jky jky) jkz)) jkz) jla)) jla) ((((((jlb jlb) ((jlc jlc) jld)) jld) ((((jle jle) ((jlf jlf) jlg)) jlg) jlh)) jlh) jli)) jli) ((((((((jlj jlj) ((jlk jlk) jll)) jll) ((((jlm jlm) ((jln jln) jlo)) jlo) jlp)) jlp) ((((((jlq jlq) ((jlr jlr) jls)) jls) ((((jlt jlt) ((jlu jlu) jlv)) jlv) jlw)) jlw) jlx)) jlx) jly)) jly) jlz)) jlz) ((((((((((((jma jma) ((jmb jmb) jmc)) jmc) ((((jmd jmd) ((jme jme) jmf)) jmf) jmg)) jmg) ((((((jmh jmh) ((jmi jmi) jmj)) jmj) ((((jmk jmk) ((jml jml) jmm)) jmm) jmn)) jmn) jmo)) jmo) ((((((((jmp jmp) ((jmq jmq) jmr)) jmr) ((((jms jms) ((jmt jmt) jmu)) jmu) jmv)) jmv) ((((((jmw jmw) ((jmx jmx) jmy)) jmy) ((((jmz jmz) ((jna jna) jnb)) jnb) jnc)) jnc) jnd)) jnd) jne)) jne) ((((((((((jnf jnf) ((jng jng) jnh)) jnh) ((((jni jni) ((jnj jnj) jnk)) jnk) jnl)) jnl) ((((((jnm jnm) ((jnn jnn) jno)) jno) ((((jnp jnp) ((jnq jnq) jnr)) jnr) jns)) jns) jnt)) jnt) ((((((((jnu jnu) ((jnv jnv) jnw)) jnw) ((((jnx jnx) ((jny jny) jnz)) jnz) joa)) joa) ((((((job job) ((joc joc) jod)) jod) ((((joe joe) ((jof jof) jog)) jog) joh)) joh) joi)) joi) joj)) joj) jok)) jok) jol)) jol) jom)) jom) jon)) jon) joo)) joo) ((((((((((((((((((((jop jop) ((joq joq) jor)) jor) ((((jos jos) ((jot jot) jou)) jou) jov)) jov) ((((((jow jow) ((jox jox) joy)) joy) ((((joz joz) ((jpa jpa) jpb)) jpb) jpc)) jpc) jpd)) jpd) ((((((((jpe jpe) ((jpf jpf) jpg)) jpg) ((((jph jph) ((jpi jpi) jpj)) jpj) jpk)) jpk) ((((((jpl jpl) ((jpm jpm) jpn)) jpn) ((((jpo jpo) ((jpp jpp) jpq)) jpq) jpr)) jpr) jps)) jps) jpt)) jpt) ((((((((((jpu jpu) ((jpv jpv) jpw)) jpw) ((((jpx jpx) ((jpy jpy) jpz)) jpz) jqa)) jqa) ((((((jqb jqb) ((jqc jqc) jqd)) jqd) ((((jqe jqe) ((jqf jqf) jqg)) jqg) jqh)) jqh) jqi)) jqi) ((((((((jqj jqj) ((jqk jqk) jql)) jql) ((((jqm jqm) ((jqn jqn) jqo)) jqo) jqp)) jqp) ((((((jqq jqq) ((jqr jqr) jqs)) jqs) ((((jqt jqt) ((jqu jqu) jqv)) jqv) jqw)) jqw) jqx)) jqx) jqy)) jqy) jqz)) jqz) ((((((((((((jra jra) ((jrb jrb) jrc)) jrc) ((((jrd jrd) ((jre jre) jrf)) jrf) jrg)) jrg) ((((((jrh jrh) ((jri jri) jrj)) jrj) ((((jrk jrk) ((jrl jrl) jrm)) jrm) jrn)) jrn) jro)) jro) ((((((((jrp jrp) ((jrq jrq) jrr)) jrr) ((((jrs jrs) ((jrt jrt) jru)) jru) jrv)) jrv) ((((((jrw jrw) ((jrx jrx) jry)) jry) ((((jrz jrz) ((jsa jsa) jsb)) jsb) jsc)) jsc) jsd)) jsd) jse)) jse) ((((((((((jsf jsf) ((jsg jsg) jsh)) jsh) ((((jsi jsi) ((jsj jsj) jsk)) jsk) jsl)) jsl) ((((((jsm jsm) ((jsn jsn) jso)) jso) ((((jsp jsp) ((jsq jsq) jsr)) jsr) jss)) jss) jst)) jst) ((((((((jsu jsu) ((jsv jsv) jsw)) jsw) ((((jsx jsx) ((jsy jsy) jsz)) jsz) jta)) jta) ((((((jtb jtb) ((jtc jtc) jtd)) jtd) ((((jte jte) ((jtf jtf) jtg)) jtg) jth)) jth) jti)) jti) jtj)) jtj) jtk)) jtk) jtl)) jtl) ((((((((((((((jtm jtm) ((jtn jtn) jto)) jto) ((((jtp jtp) ((jtq jtq) jtr)) jtr) jts)) jts) ((((((jtt jtt) ((jtu jtu) jtv)) jtv) ((((jtw jtw) ((jtx jtx) jty)) jty) jtz)) jtz) jua)) jua) ((((((((jub jub) ((juc juc) jud)) jud) ((((jue jue) ((juf juf) jug)) jug) juh)) juh) ((((((jui jui) ((juj juj) juk)) juk) ((((jul jul) ((jum jum) jun)) jun) juo)) juo) jup)) jup) juq)) juq) ((((((((((jur jur) ((jus jus) jut)) jut) ((((juu juu) ((juv juv) juw)) juw) jux)) jux) ((((((juy juy) ((juz juz) jva)) jva) ((((jvb jvb) ((jvc jvc) jvd)) jvd) jve)) jve) jvf)) jvf) ((((((((jvg jvg) ((jvh jvh) jvi)) jvi) ((((jvj jvj) ((jvk jvk) jvl)) jvl) jvm)) jvm) ((((((jvn jvn) ((jvo jvo) jvp)) jvp) ((((jvq jvq) ((jvr jvr) jvs)) jvs) jvt)) jvt) jvu)) jvu) jvv)) jvv) jvw)) jvw) ((((((((((((jvx jvx) ((jvy jvy) jvz)) jvz) ((((jwa jwa) ((jwb jwb) jwc)) jwc) jwd)) jwd) ((((((jwe jwe) ((jwf jwf) jwg)) jwg) ((((jwh jwh) ((jwi jwi) jwj)) jwj) jwk)) jwk) jwl)) jwl) ((((((((jwm jwm) ((jwn jwn) jwo)) jwo) ((((jwp jwp) ((jwq jwq) jwr)) jwr) jws)) jws) ((((((jwt jwt) ((jwu jwu) jwv)) jwv) ((((jww jww) ((jwx jwx) jwy)) jwy) jwz)) jwz) jxa)) jxa) jxb)) jxb) ((((((((((jxc jxc) ((jxd jxd) jxe)) jxe) ((((jxf jxf) ((jxg jxg) jxh)) jxh) jxi)) jxi) ((((((jxj jxj) ((jxk jxk) jxl)) jxl) ((((jxm jxm) ((jxn jxn) jxo)) jxo) jxp)) jxp) jxq)) jxq) ((((((((jxr jxr) ((jxs jxs) jxt)) jxt) ((((jxu jxu) ((jxv jxv) jxw)) jxw) jxx)) jxx) ((((((jxy jxy) ((jxz jxz) jya)) jya) ((((jyb jyb) ((jyc jyc) jyd)) jyd) jye)) jye) jyf)) jyf) jyg)) jyg) jyh)) jyh) jyi)) jyi) jyj)) jyj) ((((((((((((((((jyk jyk) ((jyl jyl) jym)) jym) ((((jyn jyn) ((jyo jyo) jyp)) jyp) jyq)) jyq) ((((((jyr jyr) ((jys jys) jyt)) jyt) ((((jyu jyu) ((jyv jyv) jyw)) jyw) jyx)) jyx) jyy)) jyy) ((((((((jyz jyz) ((jza jza) jzb)) jzb) ((((jzc jzc) ((jzd jzd) jze)) jze) jzf)) jzf) ((((((jzg jzg) ((jzh jzh) jzi)) jzi) ((((jzj jzj) ((jzk jzk) jzl)) jzl) jzm)) jzm) jzn)) jzn) jzo)) jzo) ((((((((((jzp jzp) ((jzq jzq) jzr)) jzr) ((((jzs jzs) ((jzt jzt) jzu)) jzu) jzv)) jzv) ((((((jzw jzw) ((jzx jzx) jzy)) jzy) ((((jzz jzz) ((kaa kaa) kab)) kab) kac)) kac) kad)) kad) ((((((((kae kae) ((kaf kaf) kag)) kag) ((((kah kah) ((kai kai) kaj)) kaj) kak)) kak) ((((((kal kal) ((kam kam) kan)) kan) ((((kao kao) ((kap kap) kaq)) kaq) kar)) kar) kas)) kas) kat)) kat) kau)) kau) ((((((((((((kav kav) ((kaw kaw) kax)) kax) ((((kay kay) ((kaz kaz) kba)) kba) kbb)) kbb) ((((((kbc kbc) ((kbd kbd) kbe)) kbe) ((((kbf kbf) ((kbg kbg) kbh)) kbh) kbi)) kbi) kbj)) kbj) ((((((((kbk kbk) ((kbl kbl) kbm)) kbm) ((((kbn kbn) ((kbo kbo) kbp)) kbp) kbq)) kbq) ((((((kbr kbr) ((kbs kbs) kbt)) kbt) ((((kbu kbu) ((kbv kbv) kbw)) kbw) kbx)) kbx) kby)) kby) kbz)) kbz) ((((((((((kca kca) ((kcb kcb) kcc)) kcc) ((((kcd kcd) ((kce kce) kcf)) kcf) kcg)) kcg) ((((((kch kch) ((kci kci) kcj)) kcj) ((((kck kck) ((kcl kcl) kcm)) kcm) kcn)) kcn) kco)) kco) ((((((((kcp kcp) ((kcq kcq) kcr)) kcr) ((((kcs kcs) ((kct kct) kcu)) kcu) kcv)) kcv) ((((((kcw kcw) ((kcx kcx) kcy)) kcy) ((((kcz kcz) ((kda kda) kdb)) kdb) kdc)) kdc) kdd)) kdd) kde)) kde) kdf)) kdf) kdg)) kdg) ((((((((((((((kdh kdh) ((kdi kdi) kdj)) kdj) ((((kdk kdk) ((kdl kdl) kdm)) kdm) kdn)) kdn) ((((((kdo kdo) ((kdp kdp) kdq)) kdq) ((((kdr kdr) ((kds kds) kdt)) kdt) kdu)) kdu) kdv)) kdv) ((((((((kdw kdw) ((kdx kdx) kdy)) kdy) ((((kdz kdz) ((kea kea) keb)) keb) kec)) kec) ((((((ked ked) ((kee kee) kef)) kef) ((((keg keg) ((keh keh) kei)) kei) kej)) kej) kek)) kek) kel)) kel) ((((((((((kem kem) ((ken ken) keo)) keo) ((((kep kep) ((keq keq) ker)) ker) kes)) kes) ((((((ket ket) ((keu keu) kev)) kev) ((((kew kew) ((kex kex) key)) key) kez)) kez) kfa)) kfa) ((((((((kfb kfb) ((kfc kfc) kfd)) kfd) ((((kfe kfe) ((kff kff) kfg)) kfg) kfh)) kfh) ((((((kfi kfi) ((kfj kfj) kfk)) kfk) ((((kfl kfl) ((kfm kfm) kfn)) kfn) kfo)) kfo) kfp)) kfp) kfq)) kfq) kfr)) kfr) ((((((((((((kfs kfs) ((kft kft) kfu)) kfu) ((((kfv kfv) ((kfw kfw) kfx)) kfx) kfy)) kfy) ((((((kfz kfz) ((kga kga) kgb)) kgb) ((((kgc kgc) ((kgd kgd) kge)) kge) kgf)) kgf) kgg)) kgg) ((((((((kgh kgh) ((kgi kgi) kgj)) kgj) ((((kgk kgk) ((kgl kgl) kgm)) kgm) kgn)) kgn) ((((((kgo kgo) ((kgp kgp) kgq)) kgq) ((((kgr kgr) ((kgs kgs) kgt)) kgt) kgu)) kgu) kgv)) kgv) kgw)) kgw) ((((((((((kgx kgx) ((kgy kgy) kgz)) kgz) ((((kha kha) ((khb khb) khc)) khc) khd)) khd) ((((((khe khe) ((khf khf) khg)) khg) ((((khh khh) ((khi khi) khj)) khj) khk)) khk) khl)) khl) ((((((((khm khm) ((khn khn) kho)) kho) ((((khp khp) ((khq khq) khr)) khr) khs)) khs) ((((((kht kht) ((khu khu) khv)) khv) ((((khw khw) ((khx khx) khy)) khy) khz)) khz) kia)) kia) kib)) kib) kic)) kic) kid)) kid) kie)) kie) kif)) kif) ((((((((((((((((((kig kig) ((kih kih) kii)) kii) ((((kij kij) ((kik kik) kil)) kil) kim)) kim) ((((((kin kin) ((kio kio) kip)) kip) ((((kiq kiq) ((kir kir) kis)) kis) kit)) kit) kiu)) kiu) ((((((((kiv kiv) ((kiw kiw) kix)) kix) ((((kiy kiy) ((kiz kiz) kja)) kja) kjb)) kjb) ((((((kjc kjc) ((kjd kjd) kje)) kje) ((((kjf kjf) ((kjg kjg) kjh)) kjh) kji)) kji) kjj)) kjj) kjk)) kjk) ((((((((((kjl kjl) ((kjm kjm) kjn)) kjn) ((((kjo kjo) ((kjp kjp) kjq)) kjq) kjr)) kjr) ((((((kjs kjs) ((kjt kjt) kju)) kju) ((((kjv kjv) ((kjw kjw) kjx)) kjx) kjy)) kjy) kjz)) kjz) ((((((((kka kka) ((kkb kkb) kkc)) kkc) ((((kkd kkd) ((kke kke) kkf)) kkf) kkg)) kkg) ((((((kkh kkh) ((kki kki) kkj)) kkj) ((((kkk kkk) ((kkl kkl) kkm)) kkm) kkn)) kkn) kko)) kko) kkp)) kkp) kkq)) kkq) ((((((((((((kkr kkr) ((kks kks) kkt)) kkt) ((((kku kku) ((kkv kkv) kkw)) kkw) kkx)) kkx) ((((((kky kky) ((kkz kkz) kla)) kla) ((((klb klb) ((klc klc) kld)) kld) kle)) kle) klf)) klf) ((((((((klg klg) ((klh klh) kli)) kli) ((((klj klj) ((klk klk) kll)) kll) klm)) klm) ((((((kln kln) ((klo klo) klp)) klp) ((((klq klq) ((klr klr) kls)) kls) klt)) klt) klu)) klu) klv)) klv) ((((((((((klw klw) ((klx klx) kly)) kly) ((((klz klz) ((kma kma) kmb)) kmb) kmc)) kmc) ((((((kmd kmd) ((kme kme) kmf)) kmf) ((((kmg kmg) ((kmh kmh) kmi)) kmi) kmj)) kmj) kmk)) kmk) ((((((((kml kml) ((kmm kmm) kmn)) kmn) ((((kmo kmo) ((kmp kmp) kmq)) kmq) kmr)) kmr) ((((((kms kms) ((kmt kmt) kmu)) kmu) ((((kmv kmv) ((kmw kmw) kmx)) kmx) kmy)) kmy) kmz)) kmz) kna)) kna) knb)) knb) knc)) knc) ((((((((((((((knd knd) ((kne kne) knf)) knf) ((((kng kng) ((knh knh) kni)) kni) knj)) knj) ((((((knk knk) ((knl knl) knm)) knm) ((((knn knn) ((kno kno) knp)) knp) knq)) knq) knr)) knr) ((((((((kns kns) ((knt knt) knu)) knu) ((((knv knv) ((knw knw) knx)) knx) kny)) kny) ((((((knz knz) ((koa koa) kob)) kob) ((((koc koc) ((kod kod) koe)) koe) kof)) kof) kog)) kog) koh)) koh) ((((((((((koi koi) ((koj koj) kok)) kok) ((((kol kol) ((kom kom) kon)) kon) koo)) koo) ((((((kop kop) ((koq koq) kor)) kor) ((((kos kos) ((kot kot) kou)) kou) kov)) kov) kow)) kow) ((((((((kox kox) ((koy koy) koz)) koz) ((((kpa kpa) ((kpb kpb) kpc)) kpc) kpd)) kpd) ((((((kpe kpe) ((kpf kpf) kpg)) kpg) ((((kph kph) ((kpi kpi) kpj)) kpj) kpk)) kpk) kpl)) kpl) kpm)) kpm) kpn)) kpn) ((((((((((((kpo kpo) ((kpp kpp) kpq)) kpq) ((((kpr kpr) ((kps kps) kpt)) kpt) kpu)) kpu) ((((((kpv kpv) ((kpw kpw) kpx)) kpx) ((((kpy kpy) ((kpz kpz) kqa)) kqa) kqb)) kqb) kqc)) kqc) ((((((((kqd kqd) ((kqe kqe) kqf)) kqf) ((((kqg kqg) ((kqh kqh) kqi)) kqi) kqj)) kqj) ((((((kqk kqk) ((kql kql) kqm)) kqm) ((((kqn kqn) ((kqo kqo) kqp)) kqp) kqq)) kqq) kqr)) kqr) kqs)) kqs) ((((((((((kqt kqt) ((kqu kqu) kqv)) kqv) ((((kqw kqw) ((kqx kqx) kqy)) kqy) kqz)) kqz) ((((((kra kra) ((krb krb) krc)) krc) ((((krd krd) ((kre kre) krf)) krf) krg)) krg) krh)) krh) ((((((((kri kri) ((krj krj) krk)) krk) ((((krl krl) ((krm krm) krn)) krn) kro)) kro) ((((((krp krp) ((krq krq) krr)) krr) ((((krs krs) ((krt krt) kru)) kru) krv)) krv) krw)) krw) krx)) krx) kry)) kry) krz)) krz) ksa)) ksa) ((((((((((((((((ksb ksb) ((ksc ksc) ksd)) ksd) ((((kse kse) ((ksf ksf) ksg)) ksg) ksh)) ksh) ((((((ksi ksi) ((ksj ksj) ksk)) ksk) ((((ksl ksl) ((ksm ksm) ksn)) ksn) kso)) kso) ksp)) ksp) ((((((((ksq ksq) ((ksr ksr) kss)) kss) ((((kst kst) ((ksu ksu) ksv)) ksv) ksw)) ksw) ((((((ksx ksx) ((ksy ksy) ksz)) ksz) ((((kta kta) ((ktb ktb) ktc)) ktc) ktd)) ktd) kte)) kte) ktf)) ktf) ((((((((((ktg ktg) ((kth kth) kti)) kti) ((((ktj ktj) ((ktk ktk) ktl)) ktl) ktm)) ktm) ((((((ktn ktn) ((kto kto) ktp)) ktp) ((((ktq ktq) ((ktr ktr) kts)) kts) ktt)) ktt) ktu)) ktu) ((((((((ktv ktv) ((ktw ktw) ktx)) ktx) ((((kty kty) ((ktz ktz) kua)) kua) kub)) kub) ((((((kuc kuc) ((kud kud) kue)) kue) ((((kuf kuf) ((kug kug) kuh)) kuh) kui)) kui) kuj)) kuj) kuk)) kuk) kul)) kul) ((((((((((((kum kum) ((kun kun) kuo)) kuo) ((((kup kup) ((kuq kuq) kur)) kur) kus)) kus) ((((((kut kut) ((kuu kuu) kuv)) kuv) ((((kuw kuw) ((kux kux) kuy)) kuy) kuz)) kuz) kva)) kva) ((((((((kvb kvb) ((kvc kvc) kvd)) kvd) ((((kve kve) ((kvf kvf) kvg)) kvg) kvh)) kvh) ((((((kvi kvi) ((kvj kvj) kvk)) kvk) ((((kvl kvl) ((kvm kvm) kvn)) kvn) kvo)) kvo) kvp)) kvp) kvq)) kvq) ((((((((((kvr kvr) ((kvs kvs) kvt)) kvt) ((((kvu kvu) ((kvv kvv) kvw)) kvw) kvx)) kvx) ((((((kvy kvy) ((kvz kvz) kwa)) kwa) ((((kwb kwb) ((kwc kwc) kwd)) kwd) kwe)) kwe) kwf)) kwf) ((((((((kwg kwg) ((kwh kwh) kwi)) kwi) ((((kwj kwj) ((kwk kwk) kwl)) kwl) kwm)) kwm) ((((((kwn kwn) ((kwo kwo) kwp)) kwp) ((((kwq kwq) ((kwr kwr) kws)) kws) kwt)) kwt) kwu)) kwu) kwv)) kwv) kww)) kww) kwx)) kwx) ((((((((((((((kwy kwy) ((kwz kwz) kxa)) kxa) ((((kxb kxb) ((kxc kxc) kxd)) kxd) kxe)) kxe) ((((((kxf kxf) ((kxg kxg) kxh)) kxh) ((((kxi kxi) ((kxj kxj) kxk)) kxk) kxl)) kxl) kxm)) kxm) ((((((((kxn kxn) ((kxo kxo) kxp)) kxp) ((((kxq kxq) ((kxr kxr) kxs)) kxs) kxt)) kxt) ((((((kxu kxu) ((kxv kxv) kxw)) kxw) ((((kxx kxx) ((kxy kxy) kxz)) kxz) kya)) kya) kyb)) kyb) kyc)) kyc) ((((((((((kyd kyd) ((kye kye) kyf)) kyf) ((((kyg kyg) ((kyh kyh) kyi)) kyi) kyj)) kyj) ((((((kyk kyk) ((kyl kyl) kym)) kym) ((((kyn kyn) ((kyo kyo) kyp)) kyp) kyq)) kyq) kyr)) kyr) ((((((((kys kys) ((kyt kyt) kyu)) kyu) ((((kyv kyv) ((kyw kyw) kyx)) kyx) kyy)) kyy) ((((((kyz kyz) ((kza kza) kzb)) kzb) ((((kzc kzc) ((kzd kzd) kze)) kze) kzf)) kzf) kzg)) kzg) kzh)) kzh) kzi)) kzi) ((((((((((((kzj kzj) ((kzk kzk) kzl)) kzl) ((((kzm kzm) ((kzn kzn) kzo)) kzo) kzp)) kzp) ((((((kzq kzq) ((kzr kzr) kzs)) kzs) ((((kzt kzt) ((kzu kzu) kzv)) kzv) kzw)) kzw) kzx)) kzx) ((((((((kzy kzy) ((kzz kzz) laa)) laa) ((((lab lab) ((lac lac) lad)) lad) lae)) lae) ((((((laf laf) ((lag lag) lah)) lah) ((((lai lai) ((laj laj) lak)) lak) lal)) lal) lam)) lam) lan)) lan) ((((((((((lao lao) ((lap lap) laq)) laq) ((((lar lar) ((las las) lat)) lat) lau)) lau) ((((((lav lav) ((law law) lax)) lax) ((((lay lay) ((laz laz) lba)) lba) lbb)) lbb) lbc)) lbc) ((((((((lbd lbd) ((lbe lbe) lbf)) lbf) ((((lbg lbg) ((lbh lbh) lbi)) lbi) lbj)) lbj) ((((((lbk lbk) ((lbl lbl) lbm)) lbm) ((((lbn lbn) ((lbo lbo) lbp)) lbp) lbq)) lbq) lbr)) lbr) lbs)) lbs) lbt)) lbt) lbu)) lbu) lbv)) lbv) lbw)) lbw) lbx)) lbx) lby)) lby) lbz)) lbz) lca)) lca) -RWTS : 24_562 +RWTS : 53_230 - ANNI : 4_097 - COMM : 16_355 - ERAS : 0 -- DREF : 4_110 +- DREF : 32_778 - OPER : 0 diff --git a/tests/snapshots/tests__run@alloc_small_tree.hvmc.snap b/tests/snapshots/tests__run@alloc_small_tree.hvmc.snap index b4c4df26..434bb6b6 100644 --- a/tests/snapshots/tests__run@alloc_small_tree.hvmc.snap +++ b/tests/snapshots/tests__run@alloc_small_tree.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/alloc_small_tree.hvmc --- (a (* a)) -RWTS : 99 +RWTS : 104 - ANNI : 43 - COMM : 13 - ERAS : 17 -- DREF : 26 +- DREF : 31 - OPER : 0 diff --git a/tests/snapshots/tests__run@arithmetic.hvmc.snap b/tests/snapshots/tests__run@arithmetic.hvmc.snap index 9e687677..c6ba16ef 100644 --- a/tests/snapshots/tests__run@arithmetic.hvmc.snap +++ b/tests/snapshots/tests__run@arithmetic.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: examples/arithmetic.hvmc --- ({3 <% c d>} ({5 a c} [b d])) -RWTS : 7 +RWTS : 18 - ANNI : 4 - COMM : 0 - ERAS : 0 -- DREF : 3 +- DREF : 14 - OPER : 0 diff --git a/tests/snapshots/tests__run@chained_ops.hvmc.snap b/tests/snapshots/tests__run@chained_ops.hvmc.snap index a61aeb23..76d7b7e4 100644 --- a/tests/snapshots/tests__run@chained_ops.hvmc.snap +++ b/tests/snapshots/tests__run@chained_ops.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/chained_ops.hvmc --- #7184190578800 -RWTS : 27 +RWTS : 28 - ANNI : 2 - COMM : 4 - ERAS : 0 -- DREF : 1 +- DREF : 2 - OPER : 20 diff --git a/tests/snapshots/tests__run@church_encoding__church.hvmc.snap b/tests/snapshots/tests__run@church_encoding__church.hvmc.snap index 64df2954..9ae4b357 100644 --- a/tests/snapshots/tests__run@church_encoding__church.hvmc.snap +++ b/tests/snapshots/tests__run@church_encoding__church.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: examples/church_encoding/church.hvmc --- ({11 {7 (a {5 b c}) {9 (d a) ({5 c e} d)}} {3 (f e) {3 (g f) {3 (h g) {3 (i h) *}}}}} (i b)) -RWTS : 37 +RWTS : 65 - ANNI : 25 - COMM : 1 - ERAS : 0 -- DREF : 11 +- DREF : 39 - OPER : 0 diff --git a/tests/snapshots/tests__run@church_exp.hvmc.snap b/tests/snapshots/tests__run@church_exp.hvmc.snap index f219165c..ea1639c8 100644 --- a/tests/snapshots/tests__run@church_exp.hvmc.snap +++ b/tests/snapshots/tests__run@church_exp.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/church_exp.hvmc --- ({2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 ({2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 a b} c} d} e} f} g} h} i} j} k} l} m} n} o} p} q} r} s} t} u} v} w} x} y} z} aa} ab} ac} ad} ae} af} ag} ah} ai} aj} ak} al} am} an} ao} ap} aq} ar} as} at} au} av} aw} ax} ay} az} ba} bb} bc} bd} be} bf} bg} bh} bi} bj} bk} bl} bm} bn} bo} bp} bq} br} bs} bt} bu} bv} bw} bx} by} bz} ca} cb} cc} cd} ce} cf} cg} ch} ci} cj} ck} cl} cm} cn} co} cp} cq} cr} cs} ct} cu} cv} cw} cx} cy} cz} da} db} dc} dd} de} df} dg} dh} di} dj} dk} dl} dm} dn} do} dp} dq} dr} ds} dt} du} dv} dw} dx} dy} dz} ea} eb} ec} ed} ee} ef} eg} eh} ei} ej} ek} el} em} en} eo} ep} eq} er} es} et} eu} ev} ew} ex} ey} ez} fa} fb} fc} fd} fe} ff} fg} fh} fi} fj} fk} fl} fm} fn} fo} fp} fq} fr} fs} ft} fu} fv} fw} fx} fy} fz} ga} gb} gc} gd} ge} gf} gg} gh} gi} gj} gk} gl} gm} gn} go} gp} gq} gr} gs} gt} gu} gv} gw} gx} gy} gz} ha} hb} hc} hd} he} hf} hg} hh} hi} hj} hk} hl} hm} hn} ho} hp} hq} hr} hs} ht} hu} hv} hw} hx} hy} hz} ia} ib} ic} id} ie} if} ig} ih} ii} ij} ik} il} im} in} io} ip} iq} ir} is} it} iu} iv} iw} ix} iy} iz} ja} jb} jc} jd} je} jf} jg} jh} ji} jj} jk} jl} jm} jn} jo} jp} jq} jr} js} jt} ju} jv} jw} jx} jy} jz} ka} kb} kc} kd} ke} kf} kg} kh} ki} kj} kk} kl} km} kn} ko} kp} kq} kr} ks} kt} ku} kv} kw} kx} ky} kz} la} lb} lc} ld} le} lf} lg} lh} li} lj} lk} ll} lm} ln} lo} lp} lq} lr} ls} lt} lu} lv} lw} lx} ly} lz} ma} mb} mc} md} me} mf} mg} mh} mi} mj} mk} ml} mm} mn} mo} mp} mq} mr} ms} mt} mu} mv} mw} mx} my) (my mz)} (mz na)} (na nb)} (nb nc)} (nc nd)} (nd ne)} (ne nf)} (nf ng)} (ng nh)} (nh ni)} (ni nj)} (nj nk)} (nk nl)} (nl nm)} (nm nn)} (nn no)} (no np)} (np nq)} (nq {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 mf mg} mh} mi} mj} mk} ml} mm} mn} mo} mp} mq} mr} ms} mt} mu} mv} mw} mx} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 lm ln} lo} lp} lq} lr} ls} lt} lu} lv} lw} lx} ly} lz} ma} mb} mc} md} me} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 kt ku} kv} kw} kx} ky} kz} la} lb} lc} ld} le} lf} lg} lh} li} lj} lk} ll} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 ka kb} kc} kd} ke} kf} kg} kh} ki} kj} kk} kl} km} kn} ko} kp} kq} kr} ks} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 jh ji} jj} jk} jl} jm} jn} jo} jp} jq} jr} js} jt} ju} jv} jw} jx} jy} jz} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 io ip} iq} ir} is} it} iu} iv} iw} ix} iy} iz} ja} jb} jc} jd} je} jf} jg} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 hv hw} hx} hy} hz} ia} ib} ic} id} ie} if} ig} ih} ii} ij} ik} il} im} in} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 hc hd} he} hf} hg} hh} hi} hj} hk} hl} hm} hn} ho} hp} hq} hr} hs} ht} hu} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 gj gk} gl} gm} gn} go} gp} gq} gr} gs} gt} gu} gv} gw} gx} gy} gz} ha} hb} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 fq fr} fs} ft} fu} fv} fw} fx} fy} fz} ga} gb} gc} gd} ge} gf} gg} gh} gi} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 ex ey} ez} fa} fb} fc} fd} fe} ff} fg} fh} fi} fj} fk} fl} fm} fn} fo} fp} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 ee ef} eg} eh} ei} ej} ek} el} em} en} eo} ep} eq} er} es} et} eu} ev} ew} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 dl dm} dn} do} dp} dq} dr} ds} dt} du} dv} dw} dx} dy} dz} ea} eb} ec} ed} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 cs ct} cu} cv} cw} cx} cy} cz} da} db} dc} dd} de} df} dg} dh} di} dj} dk} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 bz ca} cb} cc} cd} ce} cf} cg} ch} ci} cj} ck} cl} cm} cn} co} cp} cq} cr} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 bg bh} bi} bj} bk} bl} bm} bn} bo} bp} bq} br} bs} bt} bu} bv} bw} bx} by} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 an ao} ap} aq} ar} as} at} au} av} aw} ax} ay} az} ba} bb} bc} bd} be} bf} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 u v} w} x} y} z} aa} ab} ac} ad} ae} af} ag} ah} ai} aj} ak} al} am} {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 {2 b c} d} e} f} g} h} i} j} k} l} m} n} o} p} q} r} s} t} nr}}}}}}}}}}}}}}}}}}})} (a nr)) -RWTS : 803 +RWTS : 1_948 - ANNI : 401 - COMM : 380 - ERAS : 0 -- DREF : 22 +- DREF : 1_167 - OPER : 0 diff --git a/tests/snapshots/tests__run@church_mul.hvmc.snap b/tests/snapshots/tests__run@church_mul.hvmc.snap index c80dc166..37a8caeb 100644 --- a/tests/snapshots/tests__run@church_mul.hvmc.snap +++ b/tests/snapshots/tests__run@church_mul.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/church_mul.hvmc --- ({3 (a {3 b {5 c {7 d {9 e {11 f {13 g {15 h {17 i {19 j {21 k {23 l {25 m {27 n {29 o {31 p {33 q {35 r {37 s {39 t u}}}}}}}}}}}}}}}}}}}) {5 (v a) {7 (w v) {9 (x w) {11 (y x) {13 (z y) {15 (aa z) {17 (ab aa) {19 (ac ab) {21 (ad ac) {23 (ae ad) {25 (af ae) {27 (ag af) {29 (ah ag) {31 (ai ah) {33 (aj ai) {35 (ak aj) {37 (al ak) {39 (am al) ({3 c {5 d {7 e {9 f {11 g {13 h {15 i {17 j {19 k {21 l {23 m {25 n {27 o {29 p {31 q {33 r {35 s {37 t {39 u an}}}}}}}}}}}}}}}}}}} am)}}}}}}}}}}}}}}}}}}} (an b)) -RWTS : 48 +RWTS : 167 - ANNI : 25 - COMM : 19 - ERAS : 0 -- DREF : 4 +- DREF : 123 - OPER : 0 diff --git a/tests/snapshots/tests__run@dec_bits.hvmc.snap b/tests/snapshots/tests__run@dec_bits.hvmc.snap index fd4c71fd..76b1e02c 100644 --- a/tests/snapshots/tests__run@dec_bits.hvmc.snap +++ b/tests/snapshots/tests__run@dec_bits.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/dec_bits.hvmc --- (* (* (a a))) -RWTS : 180_036 +RWTS : 180_043 - ANNI : 98_190 - COMM : 11 - ERAS : 32_738 -- DREF : 49_097 +- DREF : 49_104 - OPER : 0 diff --git a/tests/snapshots/tests__run@dec_bits_tree.hvmc.snap b/tests/snapshots/tests__run@dec_bits_tree.hvmc.snap index dbf15d93..53da82c8 100644 --- a/tests/snapshots/tests__run@dec_bits_tree.hvmc.snap +++ b/tests/snapshots/tests__run@dec_bits_tree.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/dec_bits_tree.hvmc --- (((((((* (* (a a))) (* (* (b b)))) ((* (* (c c))) (* (* (d d))))) (((* (* (e e))) (* (* (f f)))) ((* (* (g g))) (* (* (h h)))))) ((((* (* (i i))) (* (* (j j)))) ((* (* (k k))) (* (* (l l))))) (((* (* (m m))) (* (* (n n)))) ((* (* (o o))) (* (* (p p))))))) (((((* (* (q q))) (* (* (r r)))) ((* (* (s s))) (* (* (t t))))) (((* (* (u u))) (* (* (v v)))) ((* (* (w w))) (* (* (x x)))))) ((((* (* (y y))) (* (* (z z)))) ((* (* (aa aa))) (* (* (ab ab))))) (((* (* (ac ac))) (* (* (ad ad)))) ((* (* (ae ae))) (* (* (af af)))))))) ((((((* (* (ag ag))) (* (* (ah ah)))) ((* (* (ai ai))) (* (* (aj aj))))) (((* (* (ak ak))) (* (* (al al)))) ((* (* (am am))) (* (* (an an)))))) ((((* (* (ao ao))) (* (* (ap ap)))) ((* (* (aq aq))) (* (* (ar ar))))) (((* (* (as as))) (* (* (at at)))) ((* (* (au au))) (* (* (av av))))))) (((((* (* (aw aw))) (* (* (ax ax)))) ((* (* (ay ay))) (* (* (az az))))) (((* (* (ba ba))) (* (* (bb bb)))) ((* (* (bc bc))) (* (* (bd bd)))))) ((((* (* (be be))) (* (* (bf bf)))) ((* (* (bg bg))) (* (* (bh bh))))) (((* (* (bi bi))) (* (* (bj bj)))) ((* (* (bk bk))) (* (* (bl bl))))))))) -RWTS : 2_874_410 +RWTS : 2_874_985 - ANNI : 1_567_101 - COMM : 872 - ERAS : 522_751 -- DREF : 783_686 +- DREF : 784_261 - OPER : 0 diff --git a/tests/snapshots/tests__run@lambda_calculus__hoas.hvmc.snap b/tests/snapshots/tests__run@lambda_calculus__hoas.hvmc.snap index 59f7895d..5698c6c9 100644 --- a/tests/snapshots/tests__run@lambda_calculus__hoas.hvmc.snap +++ b/tests/snapshots/tests__run@lambda_calculus__hoas.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: examples/lambda_calculus/hoas.hvmc --- (((a (((* a) b) (* (* b)))) c) (* (* c))) -RWTS : 868 +RWTS : 886 - ANNI : 484 - COMM : 11 - ERAS : 141 -- DREF : 232 +- DREF : 250 - OPER : 0 diff --git a/tests/snapshots/tests__run@list_put_got.hvmc.snap b/tests/snapshots/tests__run@list_put_got.hvmc.snap index 89c0f962..572cb2d2 100644 --- a/tests/snapshots/tests__run@list_put_got.hvmc.snap +++ b/tests/snapshots/tests__run@list_put_got.hvmc.snap @@ -3,10 +3,10 @@ source: tests/tests.rs expression: output input_file: tests/programs/list_put_got.hvmc --- -(((* (((* (((* (a a)) b) b)) ((* (((* ((((@S1$S0 c) (* c)) d) d)) ((* (((* ((((@S2$S1 e) (* e)) f) f)) ((* (((* ((((@S3$S2 g) (* g)) h) h)) ((* (((* ((((@S4$S3 i) (* i)) j) j)) ((* (((* ((((@S5$S4 k) (* k)) l) l)) ((* (((* ((((@S6$S5 m) (* m)) n) n)) ((* (((* ((((@S7$S6 o) (* o)) p) p)) ((* (((* ((((@S8$S7 q) (* q)) r) r)) ((* (((* ((((@S9$S8 s) (* s)) t) t)) ((* (((* ((((@S10$S9 u) (* u)) v) v)) ((* (((* ((((@S11$S10 w) (* w)) x) x)) ((* (((* ((((@S12$S11 y) (* y)) z) z)) ((* (((* ((((@S13$S12 aa) (* aa)) ab) ab)) ((* (((* ((((@S14$S13 ac) (* ac)) ad) ad)) ((* (((* ((((@S15$S14 ae) (* ae)) af) af)) ((* (((* ((((@S16$S15 ag) (* ag)) ah) ah)) ((* (((* ((((@S17$S16 ai) (* ai)) aj) aj)) ((* (((* ((((@S18$S17 ak) (* ak)) al) al)) ((* (((* ((((@S19$S18 am) (* am)) an) an)) ((* (((* ((((@S20$S19 ao) (* ao)) ap) ap)) ((* (((* ((((@S21$S20 aq) (* aq)) ar) ar)) ((* (((* ((((@S22$S21 as) (* as)) at) at)) ((* (((* ((((@S23$S22 au) (* au)) av) av)) ((* (((* ((((@S24$S23 aw) (* aw)) ax) ax)) ((* (((* ((((@S25$S24 ay) (* ay)) az) az)) ((* (((* ((((@S26$S25 ba) (* ba)) bb) bb)) ((* (((* ((((@S27$S26 bc) (* bc)) bd) bd)) ((* (((* ((((@S28$S27 be) (* be)) bf) bf)) ((* (((* ((((@S29$S28 bg) (* bg)) bh) bh)) ((* (((* ((((@S30$S29 bi) (* bi)) bj) bj)) ((* (((* ((((@S31$S30 bk) (* bk)) bl) bl)) ((bm (* bm)) bn)) bn)) bo)) bo)) bp)) bp)) bq)) bq)) br)) br)) bs)) bs)) bt)) bt)) bu)) bu)) bv)) bv)) bw)) bw)) bx)) bx)) by)) by)) bz)) bz)) ca)) ca)) cb)) cb)) cc)) cc)) cd)) cd)) ce)) ce)) cf)) cf)) cg)) cg)) ch)) ch)) ci)) ci)) cj)) cj)) ck)) ck)) cl)) cl)) cm)) cm)) cn)) cn)) co)) co)) cp)) cp)) cq)) cq)) cr)) cr)) cs)) cs)) [ct *]) ct) -RWTS : 194 +(((* (((* (((* (a a)) b) b)) ((* (((* (((((* (c c)) d) (* d)) e) e)) ((* (((* (((((((* (f f)) g) (* g)) h) (* h)) i) i)) ((* (((* (((((((((* (j j)) k) (* k)) l) (* l)) m) (* m)) n) n)) ((* (((* (((((((((((* (o o)) p) (* p)) q) (* q)) r) (* r)) s) (* s)) t) t)) ((* (((* (((((((((((((* (u u)) v) (* v)) w) (* w)) x) (* x)) y) (* y)) z) (* z)) aa) aa)) ((* (((* (((((((((((((((* (ab ab)) ac) (* ac)) ad) (* ad)) ae) (* ae)) af) (* af)) ag) (* ag)) ah) (* ah)) ai) ai)) ((* (((* (((((((((((((((((* (aj aj)) ak) (* ak)) al) (* al)) am) (* am)) an) (* an)) ao) (* ao)) ap) (* ap)) aq) (* aq)) ar) ar)) ((* (((* (((((((((((((((((((* (as as)) at) (* at)) au) (* au)) av) (* av)) aw) (* aw)) ax) (* ax)) ay) (* ay)) az) (* az)) ba) (* ba)) bb) bb)) ((* (((* (((((((((((((((((((((* (bc bc)) bd) (* bd)) be) (* be)) bf) (* bf)) bg) (* bg)) bh) (* bh)) bi) (* bi)) bj) (* bj)) bk) (* bk)) bl) (* bl)) bm) bm)) ((* (((* (((((((((((((((((((((((* (bn bn)) bo) (* bo)) bp) (* bp)) bq) (* bq)) br) (* br)) bs) (* bs)) bt) (* bt)) bu) (* bu)) bv) (* bv)) bw) (* bw)) bx) (* bx)) by) by)) ((* (((* (((((((((((((((((((((((((* (bz bz)) ca) (* ca)) cb) (* cb)) cc) (* cc)) cd) (* cd)) ce) (* ce)) cf) (* cf)) cg) (* cg)) ch) (* ch)) ci) (* ci)) cj) (* cj)) ck) (* ck)) cl) cl)) ((* (((* (((((((((((((((((((((((((((* (cm cm)) cn) (* cn)) co) (* co)) cp) (* cp)) cq) (* cq)) cr) (* cr)) cs) (* cs)) ct) (* ct)) cu) (* cu)) cv) (* cv)) cw) (* cw)) cx) (* cx)) cy) (* cy)) cz) cz)) ((* (((* (((((((((((((((((((((((((((((* (da da)) db) (* db)) dc) (* dc)) dd) (* dd)) de) (* de)) df) (* df)) dg) (* dg)) dh) (* dh)) di) (* di)) dj) (* dj)) dk) (* dk)) dl) (* dl)) dm) (* dm)) dn) (* dn)) do) do)) ((* (((* (((((((((((((((((((((((((((((((* (dp dp)) dq) (* dq)) dr) (* dr)) ds) (* ds)) dt) (* dt)) du) (* du)) dv) (* dv)) dw) (* dw)) dx) (* dx)) dy) (* dy)) dz) (* dz)) ea) (* ea)) eb) (* eb)) ec) (* ec)) ed) (* ed)) ee) ee)) ((* (((* (((((((((((((((((((((((((((((((((* (ef ef)) eg) (* eg)) eh) (* eh)) ei) (* ei)) ej) (* ej)) ek) (* ek)) el) (* el)) em) (* em)) en) (* en)) eo) (* eo)) ep) (* ep)) eq) (* eq)) er) (* er)) es) (* es)) et) (* et)) eu) (* eu)) ev) ev)) ((* (((* (((((((((((((((((((((((((((((((((((* (ew ew)) ex) (* ex)) ey) (* ey)) ez) (* ez)) fa) (* fa)) fb) (* fb)) fc) (* fc)) fd) (* fd)) fe) (* fe)) ff) (* ff)) fg) (* fg)) fh) (* fh)) fi) (* fi)) fj) (* fj)) fk) (* fk)) fl) (* fl)) fm) (* fm)) fn) fn)) ((* (((* (((((((((((((((((((((((((((((((((((((* (fo fo)) fp) (* fp)) fq) (* fq)) fr) (* fr)) fs) (* fs)) ft) (* ft)) fu) (* fu)) fv) (* fv)) fw) (* fw)) fx) (* fx)) fy) (* fy)) fz) (* fz)) ga) (* ga)) gb) (* gb)) gc) (* gc)) gd) (* gd)) ge) (* ge)) gf) (* gf)) gg) gg)) ((* (((* (((((((((((((((((((((((((((((((((((((((* (gh gh)) gi) (* gi)) gj) (* gj)) gk) (* gk)) gl) (* gl)) gm) (* gm)) gn) (* gn)) go) (* go)) gp) (* gp)) gq) (* gq)) gr) (* gr)) gs) (* gs)) gt) (* gt)) gu) (* gu)) gv) (* gv)) gw) (* gw)) gx) (* gx)) gy) (* gy)) gz) (* gz)) ha) ha)) ((* (((* (((((((((((((((((((((((((((((((((((((((((* (hb hb)) hc) (* hc)) hd) (* hd)) he) (* he)) hf) (* hf)) hg) (* hg)) hh) (* hh)) hi) (* hi)) hj) (* hj)) hk) (* hk)) hl) (* hl)) hm) (* hm)) hn) (* hn)) ho) (* ho)) hp) (* hp)) hq) (* hq)) hr) (* hr)) hs) (* hs)) ht) (* ht)) hu) (* hu)) hv) hv)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((* (hw hw)) hx) (* hx)) hy) (* hy)) hz) (* hz)) ia) (* ia)) ib) (* ib)) ic) (* ic)) id) (* id)) ie) (* ie)) if) (* if)) ig) (* ig)) ih) (* ih)) ii) (* ii)) ij) (* ij)) ik) (* ik)) il) (* il)) im) (* im)) in) (* in)) io) (* io)) ip) (* ip)) iq) (* iq)) ir) ir)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((* (is is)) it) (* it)) iu) (* iu)) iv) (* iv)) iw) (* iw)) ix) (* ix)) iy) (* iy)) iz) (* iz)) ja) (* ja)) jb) (* jb)) jc) (* jc)) jd) (* jd)) je) (* je)) jf) (* jf)) jg) (* jg)) jh) (* jh)) ji) (* ji)) jj) (* jj)) jk) (* jk)) jl) (* jl)) jm) (* jm)) jn) (* jn)) jo) jo)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((* (jp jp)) jq) (* jq)) jr) (* jr)) js) (* js)) jt) (* jt)) ju) (* ju)) jv) (* jv)) jw) (* jw)) jx) (* jx)) jy) (* jy)) jz) (* jz)) ka) (* ka)) kb) (* kb)) kc) (* kc)) kd) (* kd)) ke) (* ke)) kf) (* kf)) kg) (* kg)) kh) (* kh)) ki) (* ki)) kj) (* kj)) kk) (* kk)) kl) (* kl)) km) km)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((* (kn kn)) ko) (* ko)) kp) (* kp)) kq) (* kq)) kr) (* kr)) ks) (* ks)) kt) (* kt)) ku) (* ku)) kv) (* kv)) kw) (* kw)) kx) (* kx)) ky) (* ky)) kz) (* kz)) la) (* la)) lb) (* lb)) lc) (* lc)) ld) (* ld)) le) (* le)) lf) (* lf)) lg) (* lg)) lh) (* lh)) li) (* li)) lj) (* lj)) lk) (* lk)) ll) ll)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((((* (lm lm)) ln) (* ln)) lo) (* lo)) lp) (* lp)) lq) (* lq)) lr) (* lr)) ls) (* ls)) lt) (* lt)) lu) (* lu)) lv) (* lv)) lw) (* lw)) lx) (* lx)) ly) (* ly)) lz) (* lz)) ma) (* ma)) mb) (* mb)) mc) (* mc)) md) (* md)) me) (* me)) mf) (* mf)) mg) (* mg)) mh) (* mh)) mi) (* mi)) mj) (* mj)) mk) (* mk)) ml) ml)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((((((* (mm mm)) mn) (* mn)) mo) (* mo)) mp) (* mp)) mq) (* mq)) mr) (* mr)) ms) (* ms)) mt) (* mt)) mu) (* mu)) mv) (* mv)) mw) (* mw)) mx) (* mx)) my) (* my)) mz) (* mz)) na) (* na)) nb) (* nb)) nc) (* nc)) nd) (* nd)) ne) (* ne)) nf) (* nf)) ng) (* ng)) nh) (* nh)) ni) (* ni)) nj) (* nj)) nk) (* nk)) nl) (* nl)) nm) nm)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((((((((* (nn nn)) no) (* no)) np) (* np)) nq) (* nq)) nr) (* nr)) ns) (* ns)) nt) (* nt)) nu) (* nu)) nv) (* nv)) nw) (* nw)) nx) (* nx)) ny) (* ny)) nz) (* nz)) oa) (* oa)) ob) (* ob)) oc) (* oc)) od) (* od)) oe) (* oe)) of) (* of)) og) (* og)) oh) (* oh)) oi) (* oi)) oj) (* oj)) ok) (* ok)) ol) (* ol)) om) (* om)) on) (* on)) oo) oo)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((((((((((* (op op)) oq) (* oq)) or) (* or)) os) (* os)) ot) (* ot)) ou) (* ou)) ov) (* ov)) ow) (* ow)) ox) (* ox)) oy) (* oy)) oz) (* oz)) pa) (* pa)) pb) (* pb)) pc) (* pc)) pd) (* pd)) pe) (* pe)) pf) (* pf)) pg) (* pg)) ph) (* ph)) pi) (* pi)) pj) (* pj)) pk) (* pk)) pl) (* pl)) pm) (* pm)) pn) (* pn)) po) (* po)) pp) (* pp)) pq) (* pq)) pr) pr)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* (ps ps)) pt) (* pt)) pu) (* pu)) pv) (* pv)) pw) (* pw)) px) (* px)) py) (* py)) pz) (* pz)) qa) (* qa)) qb) (* qb)) qc) (* qc)) qd) (* qd)) qe) (* qe)) qf) (* qf)) qg) (* qg)) qh) (* qh)) qi) (* qi)) qj) (* qj)) qk) (* qk)) ql) (* ql)) qm) (* qm)) qn) (* qn)) qo) (* qo)) qp) (* qp)) qq) (* qq)) qr) (* qr)) qs) (* qs)) qt) (* qt)) qu) (* qu)) qv) qv)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* (qw qw)) qx) (* qx)) qy) (* qy)) qz) (* qz)) ra) (* ra)) rb) (* rb)) rc) (* rc)) rd) (* rd)) re) (* re)) rf) (* rf)) rg) (* rg)) rh) (* rh)) ri) (* ri)) rj) (* rj)) rk) (* rk)) rl) (* rl)) rm) (* rm)) rn) (* rn)) ro) (* ro)) rp) (* rp)) rq) (* rq)) rr) (* rr)) rs) (* rs)) rt) (* rt)) ru) (* ru)) rv) (* rv)) rw) (* rw)) rx) (* rx)) ry) (* ry)) rz) (* rz)) sa) sa)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* (sb sb)) sc) (* sc)) sd) (* sd)) se) (* se)) sf) (* sf)) sg) (* sg)) sh) (* sh)) si) (* si)) sj) (* sj)) sk) (* sk)) sl) (* sl)) sm) (* sm)) sn) (* sn)) so) (* so)) sp) (* sp)) sq) (* sq)) sr) (* sr)) ss) (* ss)) st) (* st)) su) (* su)) sv) (* sv)) sw) (* sw)) sx) (* sx)) sy) (* sy)) sz) (* sz)) ta) (* ta)) tb) (* tb)) tc) (* tc)) td) (* td)) te) (* te)) tf) (* tf)) tg) tg)) ((* (((* (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* (th th)) ti) (* ti)) tj) (* tj)) tk) (* tk)) tl) (* tl)) tm) (* tm)) tn) (* tn)) to) (* to)) tp) (* tp)) tq) (* tq)) tr) (* tr)) ts) (* ts)) tt) (* tt)) tu) (* tu)) tv) (* tv)) tw) (* tw)) tx) (* tx)) ty) (* ty)) tz) (* tz)) ua) (* ua)) ub) (* ub)) uc) (* uc)) ud) (* ud)) ue) (* ue)) uf) (* uf)) ug) (* ug)) uh) (* uh)) ui) (* ui)) uj) (* uj)) uk) (* uk)) ul) (* ul)) um) (* um)) un) un)) ((uo (* uo)) up)) up)) uq)) uq)) ur)) ur)) us)) us)) ut)) ut)) uu)) uu)) uv)) uv)) uw)) uw)) ux)) ux)) uy)) uy)) uz)) uz)) va)) va)) vb)) vb)) vc)) vc)) vd)) vd)) ve)) ve)) vf)) vf)) vg)) vg)) vh)) vh)) vi)) vi)) vj)) vj)) vk)) vk)) vl)) vl)) vm)) vm)) vn)) vn)) vo)) vo)) vp)) vp)) vq)) vq)) vr)) vr)) vs)) vs)) vt)) vt)) vu)) vu)) [vv *]) vv) +RWTS : 4_188 - ANNI : 96 - COMM : 0 - ERAS : 0 -- DREF : 98 +- DREF : 4_092 - OPER : 0 diff --git a/tests/snapshots/tests__run@log.hvmc.snap b/tests/snapshots/tests__run@log.hvmc.snap index df3f86c8..e1d4ea7b 100644 --- a/tests/snapshots/tests__run@log.hvmc.snap +++ b/tests/snapshots/tests__run@log.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/log.hvmc --- #2 -RWTS : 7 +RWTS : 8 - ANNI : 2 - COMM : 0 - ERAS : 1 -- DREF : 4 +- DREF : 5 - OPER : 0 diff --git a/tests/snapshots/tests__run@machine_u32__num_add.hvmc.snap b/tests/snapshots/tests__run@machine_u32__num_add.hvmc.snap index 4f416b13..d8b3bed8 100644 --- a/tests/snapshots/tests__run@machine_u32__num_add.hvmc.snap +++ b/tests/snapshots/tests__run@machine_u32__num_add.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: examples/machine_u32/num_add.hvmc --- #223 -RWTS : 5 +RWTS : 6 - ANNI : 2 - COMM : 0 - ERAS : 0 -- DREF : 2 +- DREF : 3 - OPER : 1 diff --git a/tests/snapshots/tests__run@machine_u32__num_match.hvmc.snap b/tests/snapshots/tests__run@machine_u32__num_match.hvmc.snap index 1930448c..da9a068e 100644 --- a/tests/snapshots/tests__run@machine_u32__num_match.hvmc.snap +++ b/tests/snapshots/tests__run@machine_u32__num_match.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: examples/machine_u32/num_match.hvmc --- #9 -RWTS : 7 +RWTS : 8 - ANNI : 3 - COMM : 0 - ERAS : 1 -- DREF : 2 +- DREF : 3 - OPER : 1 diff --git a/tests/snapshots/tests__run@neg_fusion.hvmc.snap b/tests/snapshots/tests__run@neg_fusion.hvmc.snap index 4526bb75..9ec136e9 100644 --- a/tests/snapshots/tests__run@neg_fusion.hvmc.snap +++ b/tests/snapshots/tests__run@neg_fusion.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/neg_fusion.hvmc --- (a (* a)) -RWTS : 147 +RWTS : 151 - ANNI : 85 - COMM : 36 - ERAS : 0 -- DREF : 26 +- DREF : 30 - OPER : 0 diff --git a/tests/snapshots/tests__run@queue.hvmc.snap b/tests/snapshots/tests__run@queue.hvmc.snap index b71208d0..fb79aa43 100644 --- a/tests/snapshots/tests__run@queue.hvmc.snap +++ b/tests/snapshots/tests__run@queue.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/queue.hvmc --- (((* (a a)) (((((b c) (b c)) (((({3 (d e) (f d)} (f e)) ((* (g g)) h)) (* h)) i)) (* i)) j)) (* j)) -RWTS : 59 +RWTS : 102 - ANNI : 39 - COMM : 1 - ERAS : 4 -- DREF : 15 +- DREF : 58 - OPER : 0 diff --git a/tests/snapshots/tests__run@sort__bitonic__bitonic_sort_lam.hvmc.snap b/tests/snapshots/tests__run@sort__bitonic__bitonic_sort_lam.hvmc.snap index 1c8fe0b0..cf2b4c81 100644 --- a/tests/snapshots/tests__run@sort__bitonic__bitonic_sort_lam.hvmc.snap +++ b/tests/snapshots/tests__run@sort__bitonic__bitonic_sort_lam.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: examples/sort/bitonic/bitonic_sort_lam.hvmc --- #523776 -RWTS : 2_263_482 +RWTS : 2_263_483 - ANNI : 1_344_981 - COMM : 96_766 - ERAS : 222_714 -- DREF : 508_402 +- DREF : 508_403 - OPER : 90_619 diff --git a/tests/snapshots/tests__run@sort__merge__merge_sort.hvmc.snap b/tests/snapshots/tests__run@sort__merge__merge_sort.hvmc.snap index ea4faffd..af262be4 100644 --- a/tests/snapshots/tests__run@sort__merge__merge_sort.hvmc.snap +++ b/tests/snapshots/tests__run@sort__merge__merge_sort.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: examples/sort/merge/merge_sort.hvmc --- {8 * {8 {14 {8 * {8 {14 {8 {10 #3 a} {8 * a}} {12 {8 {10 #2 b} {8 * b}} c}} c}} {12 {8 * {8 {14 {8 {10 #1 d} {8 * d}} {12 {8 {10 #0 e} {8 * e}} f}} f}} g}} g}} -RWTS : 425 +RWTS : 467 - ANNI : 64 - COMM : 242 - ERAS : 79 -- DREF : 24 +- DREF : 66 - OPER : 16 diff --git a/tests/snapshots/tests__run@sort__radix__radix_sort_lam.hvmc.snap b/tests/snapshots/tests__run@sort__radix__radix_sort_lam.hvmc.snap index 53f8f0b8..ef27fa11 100644 --- a/tests/snapshots/tests__run@sort__radix__radix_sort_lam.hvmc.snap +++ b/tests/snapshots/tests__run@sort__radix__radix_sort_lam.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: examples/sort/radix/radix_sort_lam.hvmc --- #549755289600 -RWTS : 1_473_249_270 +RWTS : 1_473_249_271 - ANNI : 818_937_828 - COMM : 28_311_560 - ERAS : 251_658_239 -- DREF : 314_572_799 +- DREF : 314_572_800 - OPER : 59_768_844 diff --git a/tests/snapshots/tests__run@stress_tests__all_tree.hvmc.snap b/tests/snapshots/tests__run@stress_tests__all_tree.hvmc.snap index 5f3ad0a7..472fcd0f 100644 --- a/tests/snapshots/tests__run@stress_tests__all_tree.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__all_tree.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/all_tree.hvmc --- (a (* a)) -RWTS : 788_529_120 +RWTS : 788_529_125 - ANNI : 369_098_737 - COMM : 83_886_075 - ERAS : 117_440_507 -- DREF : 184_549_370 +- DREF : 184_549_375 - OPER : 33_554_431 diff --git a/tests/snapshots/tests__run@stress_tests__apelacion.hvmc.snap b/tests/snapshots/tests__run@stress_tests__apelacion.hvmc.snap index 3614a9d7..4e5acb9b 100644 --- a/tests/snapshots/tests__run@stress_tests__apelacion.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__apelacion.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/apelacion.hvmc --- #31999968000000 -RWTS : 1_397_001_650 +RWTS : 1_397_001_651 - ANNI : 508_000_698 - COMM : 254_000_063 - ERAS : 127_000_254 -- DREF : 254_000_318 +- DREF : 254_000_319 - OPER : 254_000_317 diff --git a/tests/snapshots/tests__run@stress_tests__boom.hvmc.snap b/tests/snapshots/tests__run@stress_tests__boom.hvmc.snap index ac544810..ced74e67 100644 --- a/tests/snapshots/tests__run@stress_tests__boom.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__boom.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/boom.hvmc --- (a (* a)) -RWTS : 134_217_902 +RWTS : 134_217_907 - ANNI : 33_554_556 - COMM : 67_108_895 - ERAS : 16_777_216 -- DREF : 16_777_235 +- DREF : 16_777_240 - OPER : 0 diff --git a/tests/snapshots/tests__run@stress_tests__burn.hvmc.snap b/tests/snapshots/tests__run@stress_tests__burn.hvmc.snap index adcf1827..15832dae 100644 --- a/tests/snapshots/tests__run@stress_tests__burn.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__burn.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/burn.hvmc --- ((((* (* (* (a a)))) (* (* (* (b b))))) ((* (* (* (c c)))) (* (* (* (d d)))))) (((* (* (* (e e)))) (* (* (* (f f))))) ((* (* (* (g g)))) (* (* (* (h h))))))) -RWTS : 369_096_552 +RWTS : 369_096_639 - ANNI : 201_325_229 - COMM : 177 - ERAS : 67_108_511 -- DREF : 100_662_635 +- DREF : 100_662_722 - OPER : 0 diff --git a/tests/snapshots/tests__run@stress_tests__fib_rec.hvmc.snap b/tests/snapshots/tests__run@stress_tests__fib_rec.hvmc.snap index 5f3349e6..fbc174a9 100644 --- a/tests/snapshots/tests__run@stress_tests__fib_rec.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__fib_rec.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/fib_rec.hvmc --- #1346269 -RWTS : 34_413_726 +RWTS : 34_413_727 - ANNI : 13_266_266 - COMM : 2_178_308 - ERAS : 5_702_885 -- DREF : 7_049_154 +- DREF : 7_049_155 - OPER : 6_217_113 diff --git a/tests/snapshots/tests__run@stress_tests__sum_rec.hvmc.snap b/tests/snapshots/tests__run@stress_tests__sum_rec.hvmc.snap index 49b23c0b..08e2d81e 100644 --- a/tests/snapshots/tests__run@stress_tests__sum_rec.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__sum_rec.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/sum_rec.hvmc --- #67108864 -RWTS : 1_140_850_677 +RWTS : 1_140_850_678 - ANNI : 469_762_043 - COMM : 67_108_863 - ERAS : 134_217_727 -- DREF : 268_435_454 +- DREF : 268_435_455 - OPER : 201_326_590 diff --git a/tests/snapshots/tests__run@stress_tests__sum_tail.hvmc.snap b/tests/snapshots/tests__run@stress_tests__sum_tail.hvmc.snap index 8ba1cfc5..75b78d11 100644 --- a/tests/snapshots/tests__run@stress_tests__sum_tail.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__sum_tail.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/sum_tail.hvmc --- #49999995000000 -RWTS : 110_000_007 +RWTS : 110_000_008 - ANNI : 40_000_003 - COMM : 20_000_000 - ERAS : 10_000_001 -- DREF : 20_000_002 +- DREF : 20_000_003 - OPER : 20_000_001 diff --git a/tests/snapshots/tests__run@stress_tests__sum_tree.hvmc.snap b/tests/snapshots/tests__run@stress_tests__sum_tree.hvmc.snap index 3bdc495b..df3e28cf 100644 --- a/tests/snapshots/tests__run@stress_tests__sum_tree.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__sum_tree.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/sum_tree.hvmc --- #16777216 -RWTS : 738_197_474 +RWTS : 738_197_475 - ANNI : 335_544_307 - COMM : 83_886_075 - ERAS : 100_663_292 -- DREF : 167_772_154 +- DREF : 167_772_155 - OPER : 50_331_646 diff --git a/tests/snapshots/tests__run@stress_tests__tuple_rots.hvmc.snap b/tests/snapshots/tests__run@stress_tests__tuple_rots.hvmc.snap index adcc14d0..9e061352 100644 --- a/tests/snapshots/tests__run@stress_tests__tuple_rots.hvmc.snap +++ b/tests/snapshots/tests__run@stress_tests__tuple_rots.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/stress_tests/tuple_rots.hvmc --- ((#1 (#2 (#3 (#4 (#5 (#6 (#7 (#8 a)))))))) a) -RWTS : 62_000_019 +RWTS : 62_000_037 - ANNI : 46_000_012 - COMM : 2_000_000 - ERAS : 2_000_002 -- DREF : 10_000_004 +- DREF : 10_000_022 - OPER : 2_000_001 diff --git a/tests/snapshots/tests__run@very_large.hvmc.snap b/tests/snapshots/tests__run@very_large.hvmc.snap index a504547a..d9da0e10 100644 --- a/tests/snapshots/tests__run@very_large.hvmc.snap +++ b/tests/snapshots/tests__run@very_large.hvmc.snap @@ -4,9 +4,9 @@ expression: output input_file: tests/programs/very_large.hvmc --- (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* *)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) -RWTS : 1 +RWTS : 32_002 - ANNI : 0 - COMM : 0 - ERAS : 0 -- DREF : 1 +- DREF : 32_002 - OPER : 0 diff --git a/tests/tests.rs b/tests/tests.rs index 6b8f02e7..01b5f2f3 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -25,7 +25,7 @@ fn test_era_era() { let net = parse_core("@main = * & * ~ *"); let (rwts, net) = normal(net, 16); assert_snapshot!(Net::to_string(&net), @"*"); - assert_debug_snapshot!(rwts.total(), @"2"); + assert_debug_snapshot!(rwts.total(), @"3"); } #[test] @@ -33,7 +33,7 @@ fn test_era_era2() { let net = parse_core("@main = (* *) & * ~ *"); let (rwts, net) = normal(net, 16); assert_snapshot!(Net::to_string(&net), @"(* *)"); - assert_debug_snapshot!(rwts.total(), @"2"); + assert_debug_snapshot!(rwts.total(), @"5"); } #[test] @@ -41,7 +41,7 @@ fn test_commutation() { let net = parse_core("@main = root & (x x) ~ [* root]"); let (rwts, net) = normal(net, 16); assert_snapshot!(Net::to_string(&net), @"(a a)"); - assert_debug_snapshot!(rwts.total(), @"5"); + assert_debug_snapshot!(rwts.total(), @"7"); } #[test] @@ -57,13 +57,13 @@ fn test_bool_and() { let (rwts, net) = normal(book, 64); assert_snapshot!(Net::to_string(&net), @"(* (a a))"); - assert_debug_snapshot!(rwts.total(), @"9"); + assert_debug_snapshot!(rwts.total(), @"14"); } fn test_run(name: &str, host: Arc>) { print!("{name}..."); io::stdout().flush().unwrap(); - let heap = run::Heap::new_words(1 << 29); + let heap = run::Heap::new_words(1 << 30); let mut net = run::Net::::new(&heap); // The host is locked inside this block. {