From a170abc093b7b59355ce3c19d4c46016c20acaa3 Mon Sep 17 00:00:00 2001 From: LucaP Date: Sat, 10 Oct 2026 18:25:55 +0300 Subject: [PATCH] feat: Blender-authored roadside districts that rise per chapter --- assets/blender/districts/author-districts.py | 239 +++++++++++++ assets/blender/districts/export-districts.py | 67 ++++ .../districts/nightdrive-districts.asset.json | 20 ++ .../districts/nightdrive-districts.blend | Bin 0 -> 122786 bytes scripts/lib/bundle-budgets.mjs | 2 +- src/assets/nightdrive-districts.glb | Bin 0 -> 83676 bytes src/scene/world/districts.ts | 323 ++++++++++++++++++ src/scene/world/environment.ts | 10 + tests/performance/budgets.test.ts | 1 + tests/unit/districts.test.ts | 32 ++ 10 files changed, 693 insertions(+), 1 deletion(-) create mode 100644 assets/blender/districts/author-districts.py create mode 100644 assets/blender/districts/export-districts.py create mode 100644 assets/blender/districts/nightdrive-districts.asset.json create mode 100644 assets/blender/districts/nightdrive-districts.blend create mode 100644 src/assets/nightdrive-districts.glb create mode 100644 src/scene/world/districts.ts create mode 100644 tests/unit/districts.test.ts diff --git a/assets/blender/districts/author-districts.py b/assets/blender/districts/author-districts.py new file mode 100644 index 0000000..4003e17 --- /dev/null +++ b/assets/blender/districts/author-districts.py @@ -0,0 +1,239 @@ +"""Author the roadside district kit in its own scene and library. + +Run headless only, so no open session is touched: + blender -b --factory-startup --python assets/blender/districts/author-districts.py +It builds the "Roadside Districts" scene from scratch, drops the factory scene and +saves nightdrive-districts.blend. Convention: Blender +X faces the road (three.js +X), +Y runs +down the road (three.js -Z), Z is up; every piece stands on z=0 at its origin. +Each piece is two meshes: _body (graphite) and _light (emissive). +""" +import bpy, bmesh, math +from mathutils import Matrix, Euler, Vector +from pathlib import Path + +if not bpy.app.background: + raise SystemExit('Run author-districts.py headless (blender -b); it saves a new file.') +SCENE = 'Roadside Districts' +LIB = Path(__file__).resolve().parent / 'nightdrive-districts.blend' + +if SCENE in bpy.data.scenes: + old = bpy.data.scenes[SCENE] + for obj in list(old.objects): + mesh = obj.data + bpy.data.objects.remove(obj) + if mesh and mesh.users == 0: + bpy.data.meshes.remove(mesh) + bpy.data.scenes.remove(old) +scene = bpy.data.scenes.new(SCENE) + + +class Part: + def __init__(self): + self.bm = bmesh.new() + + def box(self, c, s, r=(0, 0, 0)): + geom = bmesh.ops.create_cube(self.bm, size=1.0) + m = Matrix.Translation(Vector(c)) @ Euler([math.radians(a) for a in r]).to_matrix().to_4x4() @ Matrix.Diagonal(Vector((*s, 1.0))) + bmesh.ops.transform(self.bm, matrix=m, verts=geom['verts']) + + def beam(self, a, b, t): + """Square beam of thickness t between points a and b.""" + a, b = Vector(a), Vector(b) + d = b - a + geom = bmesh.ops.create_cube(self.bm, size=1.0) + rot = d.to_track_quat('Z', 'Y').to_matrix().to_4x4() + m = Matrix.Translation((a + b) / 2) @ rot @ Matrix.Diagonal(Vector((t, t, d.length, 1.0))) + bmesh.ops.transform(self.bm, matrix=m, verts=geom['verts']) + + +def piece(name, body, light): + for suffix, part in (('body', body), ('light', light)): + bmesh.ops.remove_doubles(part.bm, verts=part.bm.verts, dist=1e-4) + mesh = bpy.data.meshes.new(f'{name}_{suffix}') + part.bm.to_mesh(mesh) + part.bm.free() + obj = bpy.data.objects.new(f'{name}_{suffix}', mesh) + scene.collection.objects.link(obj) + + +# Overhead gantry spanning the carriageway (x -11..11 in three.js units). +b, l = Part(), Part() +for x in (-11.2, 11.2): + b.box((x, 0, 0.2), (1.2, 1.6, 0.4)) + b.box((x, -0.45, 3.9), (0.34, 0.34, 7.4)) + b.box((x, 0.45, 3.9), (0.34, 0.34, 7.4)) + for z in (1.6, 3.4, 5.2): + b.beam((x, -0.45, z), (x, 0.45, z + 1.6), 0.12) +for y in (-0.45, 0.45): + for z in (6.3, 7.5): + b.box((0, y, z), (22.8, 0.22, 0.22)) +for i in range(12): + x = -10.4 + i * 1.9 + b.beam((x, -0.45, 6.3), (x + 1.9, -0.45, 7.5), 0.1) + b.beam((x, 0.45, 6.3), (x + 1.9, 0.45, 7.5), 0.1) + b.box((x, 0, 6.3), (0.1, 0.9, 0.1)) +for cx, w in ((-5.2, 7.0), (4.6, 6.0)): + b.box((cx, -0.62, 5.0), (w, 0.14, 2.6)) + l.box((cx, -0.71, 6.32), (w, 0.04, 0.07)) + l.box((cx, -0.71, 3.68), (w, 0.04, 0.07)) + for k, f in enumerate((0.62, 0.4, 0.5)): + l.box((cx - w * (1 - f) / 2 + 0.4, -0.71, 5.6 - k * 0.55), (w * f - 0.8, 0.04, 0.16)) +l.box((-1.4, -0.71, 4.4), (0.9, 0.04, 0.16), (0, 45, 0)) +l.box((-1.65, -0.71, 4.6), (0.16, 0.04, 0.7)) +for x in range(-10, 11, 4): + l.box((x, 0, 6.15), (0.6, 0.12, 0.05)) +piece('gantry', b, l) + +# Open-air server row with an overhead cable tray (Infrastructure). +b, l = Part(), Part() +for i in range(6): + y = -2.75 + i * 1.1 + b.box((0, y, 1.15), (1.2, 1.0, 2.3)) + b.box((0, y, 2.36), (1.0, 0.9, 0.12)) + for k in range(9): + width = (0.82, 0.62, 0.74, 0.4, 0.82, 0.55, 0.7, 0.3, 0.6)[(k + i * 2) % 9] + l.box((0.61, y - (0.82 - width) / 2, 0.45 + k * 0.2), (0.03, width, 0.045)) + l.box((0.61, y + 0.38, 2.12), (0.03, 0.08, 0.08)) +for y in (-3.4, 3.4): + b.box((-0.3, y, 1.6), (0.18, 0.18, 3.2)) + b.box((0.2, y, 3.15), (1.2, 0.16, 0.12)) +b.box((0.35, 0, 3.05), (0.04, 7.0, 0.16)) +b.box((-0.35, 0, 3.05), (0.04, 7.0, 0.16)) +for k in range(12): + b.box((0, -3.3 + k * 0.6, 3.0), (0.7, 0.05, 0.04)) +l.box((0, 0, 2.94), (0.5, 6.8, 0.03)) +piece('rack-row', b, l) + +# Lattice radio mast with dishes (Toolkit / Infrastructure horizon). +b, l = Part(), Part() +H = 26.0 +corners = [(-1, -1), (1, -1), (1, 1), (-1, 1)] +def half(z): + return 1.6 - z * 0.045 +for cx, cy in corners: + b.beam((cx * half(0), cy * half(0), 0), (cx * half(H), cy * half(H), H), 0.16) +for lv in range(9): + z0, z1 = lv * H / 9, (lv + 1) * H / 9 + for j in range(4): + (ax, ay), (bx, by) = corners[j], corners[(j + 1) % 4] + b.beam((ax * half(z1), ay * half(z1), z1), (bx * half(z1), by * half(z1), z1), 0.09) + b.beam((ax * half(z0), ay * half(z0), z0), (bx * half(z1), by * half(z1), z1), 0.07) +b.box((0, 0, H + 3), (0.12, 0.12, 6)) +for z, ang in ((18, 30), (13, -40), (21, 160)): + d = Vector((math.cos(math.radians(ang)), math.sin(math.radians(ang)), 0)) + b.box(tuple(d * 1.4 + Vector((0, 0, z))), (0.18, 1.4, 1.4), (0, 0, ang)) +for z in (H + 6, H, 17, 9): + l.box((0, 0, z), (0.34, 0.34, 0.34)) +piece('mast', b, l) + +# Workshop with half-open roller door and a lift (Selected builds). +b, l = Part(), Part() +W, D, Hh = 8.0, 6.0, 4.2 +b.box((-D, 0, Hh / 2), (0.2, W, Hh)) +b.box((-D / 2, -W / 2, Hh / 2), (D, 0.2, Hh)) +b.box((-D / 2, W / 2, Hh / 2), (D, 0.2, Hh)) +for s in (-1, 1): + b.box((-D / 2, s * W / 4, Hh + 0.75), (D + 0.4, W / 2 + 0.25, 0.14), (s * 20.5, 0, 0)) +b.box((0, -W / 2 + 0.3, Hh / 2), (0.3, 0.6, Hh)) +b.box((0, W / 2 - 0.3, Hh / 2), (0.3, 0.6, Hh)) +for k in range(5): + b.box((0.05, 0, Hh - 0.25 - k * 0.32), (0.1, W - 1.2, 0.26)) +b.box((-4.8, -2.2, 0.45), (1.6, 1.0, 0.9)) +for y in (0.4, 3.0): + b.box((-2.6, y, 1.1), (0.25, 0.25, 2.2)) +b.box((-2.6, 1.7, 1.15), (2.4, 2.8, 0.08)) +l.box((-D / 2, 0, Hh + 0.1), (D - 0.4, 0.06, 0.05)) +l.box((0.25, 0, Hh + 0.35), (0.04, W - 1.4, 0.32)) +l.box((0.22, -W / 2 + 0.62, Hh / 2), (0.04, 0.05, Hh)) +l.box((0.22, W / 2 - 0.62, Hh / 2), (0.04, 0.05, Hh)) +l.box((-4.0, -2.2, 0.96), (0.9, 0.5, 0.03)) +piece('workshop', b, l) + +# Tower crane (Selected builds / Additional work horizon). +b, l = Part(), Part() +Hc = 30.0 +for cx, cy in corners: + b.box((cx * 0.75, cy * 0.75, Hc / 2), (0.18, 0.18, Hc)) +for lv in range(10): + z = (lv + 1) * Hc / 10 + for j in range(4): + (ax, ay), (bx, by) = corners[j], corners[(j + 1) % 4] + b.beam((ax * 0.75, ay * 0.75, z), (bx * 0.75, by * 0.75, z), 0.08) + b.beam((ax * 0.75, ay * 0.75, z - Hc / 10), (bx * 0.75, by * 0.75, z), 0.06) +b.box((0, 0, Hc + 0.8), (2.2, 2.2, 1.6)) +b.box((0, 0, Hc + 4), (0.3, 0.3, 4.8)) +J = 26.0 +for z in (Hc + 1.6, Hc + 2.8): + b.box((J / 2 - 3, 0.5 if z < Hc + 2 else 0, z), (J, 0.18, 0.18)) +b.box((J / 2 - 3, -0.5, Hc + 1.6), (J, 0.18, 0.18)) +for k in range(9): + x = -3 + k * J / 9 + b.beam((x, 0, Hc + 2.8), (x + J / 9, 0.5, Hc + 1.6), 0.07) + b.beam((x, 0, Hc + 2.8), (x + J / 9, -0.5, Hc + 1.6), 0.07) +b.box((-7, 0, Hc + 1.7), (8, 0.8, 0.3)) +b.box((-9.5, 0, Hc + 1.0), (2.2, 1.6, 1.4)) +b.beam((J - 3, 0, Hc + 6.4), (-9, 0, Hc + 2.0), 0.05) +b.box((15, 0, Hc - 6), (0.05, 0.05, 12)) +b.box((15, 0, Hc - 12.2), (0.8, 0.6, 0.5)) +l.box((0, 0, Hc + 6.5), (0.4, 0.4, 0.4)) +l.box((J - 3, 0, Hc + 2.0), (0.36, 0.36, 0.36)) +l.box((15, 0, Hc - 12.6), (0.5, 0.3, 0.06)) +piece('crane', b, l) + +# Shipping container, stackable (Additional work). +b, l = Part(), Part() +b.box((0, 0, 1.3), (2.44, 6.06, 2.6)) +for k in range(14): + y = -2.7 + k * 0.415 + b.box((1.24, y, 1.3), (0.06, 0.18, 2.36)) + b.box((-1.24, y, 1.3), (0.06, 0.18, 2.36)) +for x in (-1.15, 1.15): + for y in (-3.0, 3.0): + b.box((x, y, 1.3), (0.16, 0.16, 2.62)) +l.box((1.28, 0, 2.56), (0.03, 5.9, 0.05)) +l.box((0.0, -3.06, 1.3), (1.8, 0.03, 0.05)) +piece('container', b, l) + +# Roadside billboard (Profile / Experience). +b, l = Part(), Part() +for y in (-2.5, 2.5): + b.box((0, y, 3.0), (0.3, 0.3, 6.0)) +b.box((0.1, 0, 7.0), (0.24, 8.4, 3.6)) +b.box((0.6, 0, 5.05), (1.0, 8.2, 0.08)) +l.box((0.24, 0, 8.86), (0.04, 8.4, 0.08)) +l.box((0.24, 0, 5.14), (0.04, 8.4, 0.08)) +l.box((0.24, -4.2, 7.0), (0.04, 0.08, 3.8)) +l.box((0.24, 4.2, 7.0), (0.04, 0.08, 3.8)) +for k, f in enumerate((0.7, 0.45, 0.55)): + l.box((0.24, -4.2 + 8.4 * f / 2 + 0.6, 8.0 - k * 0.75), (0.04, 8.4 * f - 1.2, 0.22)) +for y in (-3, 0, 3): + l.box((1.05, y, 5.15), (0.2, 0.5, 0.08)) +piece('billboard', b, l) + +# Destination arch over the road (Contact). +b, l = Part(), Part() +for s in (-1, 1): + b.box((s * 12.5, 0, 7.0), (1.4, 1.4, 14.0)) + b.box((s * 12.5, 0, 0.3), (2.4, 2.4, 0.6)) + l.box((s * 11.78, 0, 7.0), (0.05, 0.12, 12.4)) +b.box((0, 0, 14.6), (27.4, 1.6, 1.4)) +b.box((0, 0, 16.0), (18.0, 1.0, 1.4)) +l.box((0, -0.82, 14.2), (25.0, 0.04, 0.12)) +l.box((0, -0.82, 15.0), (25.0, 0.04, 0.05)) +l.box((0, -0.52, 16.5), (16.0, 0.04, 0.1)) +for k in range(9): + l.box((-8 + k * 2, 0, 13.88), (0.9, 0.5, 0.04)) +piece('arch', b, l) + +tris = 0 +for obj in scene.objects: + obj.data.calc_loop_triangles() + tris += len(obj.data.loop_triangles) +for other in [s for s in bpy.data.scenes if s != scene]: + bpy.data.scenes.remove(other) +for block in (bpy.data.objects, bpy.data.meshes, bpy.data.cameras, bpy.data.lights, bpy.data.materials): + for item in list(block): + if item.users == 0: + block.remove(item) +bpy.ops.wm.save_as_mainfile(filepath=str(LIB), compress=True) +print('pieces', len(scene.objects) // 2, 'triangles', tris, 'library', LIB) diff --git a/assets/blender/districts/export-districts.py b/assets/blender/districts/export-districts.py new file mode 100644 index 0000000..bd02ba4 --- /dev/null +++ b/assets/blender/districts/export-districts.py @@ -0,0 +1,67 @@ +"""Export the district kit to the runtime GLB (positions + indices only). + + blender -b assets/blender/districts/nightdrive-districts.blend --python assets/blender/districts/export-districts.py [-- --preview out.png] + +Normals are derived per fragment at runtime (flat shading from screen-space +derivatives), so the GLB carries no normals, UVs or materials and shared box +corners stay welded. Writes provenance next to this script. +""" +import bpy, json, hashlib, sys, math +from pathlib import Path + +here = Path(__file__).resolve().parent +root = here.parents[2] +scene = bpy.data.scenes['Roadside Districts'] +output = root / 'src/assets/nightdrive-districts.glb' + +for obj in scene.objects: + obj.select_set(True) +bpy.ops.export_scene.gltf( + filepath=str(output), export_format='GLB', use_selection=True, use_active_scene=True, + export_apply=True, export_normals=False, export_texcoords=False, export_materials='NONE', + export_animations=False, export_cameras=False, export_lights=False, export_yup=True, +) +triangles = 0 +for obj in scene.objects: + obj.data.calc_loop_triangles() + triangles += len(obj.data.loop_triangles) +provenance = { + 'asset': 'Nightdrive roadside districts', + 'source': 'nightdrive-districts.blend', + 'authorship': 'Original procedural modelling in Blender for this portfolio (author-districts.py); no external assets.', + 'editable_scene': 'Roadside Districts', + 'pieces': sorted({o.name.rsplit('_', 1)[0] for o in scene.objects}), + 'triangles': triangles, + 'attributes': 'POSITION + indices; flat normals derived at runtime', + 'export': '../../../src/assets/nightdrive-districts.glb', + 'sha256': hashlib.sha256(output.read_bytes()).hexdigest(), +} +(here / 'nightdrive-districts.asset.json').write_text(json.dumps(provenance, indent=2) + '\n') +print(json.dumps(provenance)) + +if '--preview' in sys.argv: + target = sys.argv[sys.argv.index('--preview') + 1] + names = provenance['pieces'] + for i, name in enumerate(names): + for suffix in ('body', 'light'): + obj = scene.objects[f'{name}_{suffix}'] + obj.location = ((i % 4) * 34 - 50, (i // 4) * 40, 0) + mat = bpy.data.materials.new(f'preview-{suffix}') + mat.diffuse_color = (0.05, 0.05, 0.08, 1) if suffix == 'body' else (0.1, 0.9, 1.0, 1) + obj.data.materials.append(mat) + cam = bpy.data.objects.new('preview-cam', bpy.data.cameras.new('preview-cam')) + scene.collection.objects.link(cam) + cam.location = (95, -95, 70) + cam.rotation_euler = (math.radians(58), 0, math.radians(45)) + cam.data.lens = 30 + scene.camera = cam + try: + scene.render.engine = 'BLENDER_WORKBENCH' + except TypeError as e: + print(e) + scene.display.shading.color_type = 'MATERIAL' + scene.display.shading.light = 'STUDIO' + scene.display.shading.show_cavity = True + scene.render.resolution_x, scene.render.resolution_y = 1600, 1000 + scene.render.filepath = target + bpy.ops.render.render(write_still=True) diff --git a/assets/blender/districts/nightdrive-districts.asset.json b/assets/blender/districts/nightdrive-districts.asset.json new file mode 100644 index 0000000..5cff713 --- /dev/null +++ b/assets/blender/districts/nightdrive-districts.asset.json @@ -0,0 +1,20 @@ +{ + "asset": "Nightdrive roadside districts", + "source": "nightdrive-districts.blend", + "authorship": "Original procedural modelling in Blender for this portfolio (author-districts.py); no external assets.", + "editable_scene": "Roadside Districts", + "pieces": [ + "arch", + "billboard", + "container", + "crane", + "gantry", + "mast", + "rack-row", + "workshop" + ], + "triangles": 5424, + "attributes": "POSITION + indices; flat normals derived at runtime", + "export": "../../../src/assets/nightdrive-districts.glb", + "sha256": "428a212792ac4d8dbf86b9224e9788f49cfc22b3d0dd1b72dfaf33c89f08f189" +} diff --git a/assets/blender/districts/nightdrive-districts.blend b/assets/blender/districts/nightdrive-districts.blend new file mode 100644 index 0000000000000000000000000000000000000000..cb307a1af38501340b67e96a56cd1cbe73032a9d GIT binary patch literal 122786 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

1p@n%ddi2^d-A&^Ne0n~7vv z4heWU2N7n9WVudw@p4%e1ZBNtV4vZ%(bXhJ@_ggR?zX!a7=$oU8C;y!qXU4QF3*%r zK}ZqQw4L9MzP8FG#ee)dA`&l?_EA_Jns5gU-n<3`btHst+k*R@XwU7Q2cTG z4Kl+Hh2Eg@kREn7ak_1MmvH2ibF7u2x6;F*BqKrE5c=)SAq*xSv6)bxo8;dARAsp& z`bp=#rLY;B#aX*0g<=CGAN}RQ|NT=i&t4yn3r*i@#~w)jifk_pi778xk&vB=MRK}q zMbZv38dk`yN_SplLgOhlqIM%B_AtCfVb5@GB;c3dDvH2JiiMTHrdCWJcV&NsJ(r#% z5-{A2fJ@a1N{4MsUr#3|4U&E#QWRx#6ap>X0hNXsR$v_V|FJlr} z#U>NzEp$l623pEm$^(W+;WVN!Xw=H{*&KfJg<+uP2$^j5!-YCx&qnx~E@}N5Ws2ZuOT5(PKj8^Ey{%;4m*?Wmn~z1c7BhjfszI7=hD@!MwOUJxgX{nA#&L=O zM_$MAfBK)u+XL1a$U67`UnPvxcJ_PA|5Q@uK1wZp<~=Ww?NPT>|MYj=Reb?X8t>Bh z94*O2b$+U89y9z06D&V2LDNow?e~u|z5o$EK?ld9^2s%y;xd5y_vZ6SiT=2mc90O< z#7LhR0iy7{7FAw`XyvNklKVemV@*QKQqA~F}-#g-OzH64Fi*~*Wx|DZ%gOebQ^ecaBob8`9nYW42nyERcVoqlQk->Z;k;T#L#Sz`_rB~?4HjNH^Ri^1YjZIv$aFP} zm3W0g)}Xk)mb`G$`O`^t5JK@h zG3F7N9bm`{_+cjkgC4L^T`F2TMCT9C{BEf;QT#{(SOIh>W_g?&ZR;v^5`cLnG;aOrQr4SZ)t2ta@KWuy9JoKv-Zx?tj)tr*#FX1w%kz z4%U*$b<7a`-O&=Ux}u>_XUzFPAOexvg8wc#a$A>#N8ssjH8j~5tEv`tNQM!E5rdIH zGfmN$M+S#SM}K(Di9Tj};{j6fjEE5E!6L+OfS^yG!-)&PokUzUF)XeAA%7hBH;up{ zAQn~;2$&uWS%PrXhYhoKqqumN(-l_~6a*Tf^Cw?wlg)Cr zHXO-l7!FGqH1JP<>Cq0v8q5Gu;qM{>()y_kM_A-HHr#5$OjquhY@^3xL1ICUtM1?d zItk;9|3r|3ABz{;C9*a$KNkLAB4{L=oaE1yVk27|$-W7d(QRq8qlXpJcq-4=(N6rV z>w1-BxbmCrege(v*8_{Xa!YY)**_YD1AE(!d{?YxP6Z_U7F7bU^aVfDVN#oX>$x=> zG3pxDO2zulEH87qjZxt|%Q000@sIx^F^O74vFugP2S3a@;JIh@*YcCzs2y#!YCmdU zS!ppX9C-sP5^M;%>aq_G`*V-aQ_r6yd$FhrELBEBD7~S5kuVVLPD%k$XcST?OyGQB zD3D?%n-BqAYHZa&Q39zLIQ>N=w8a?1oNY+~Pt(hW;iVY-EQKn{%1| zf0rNgt2(@AzWUGOiahBd*qE~_yOc875;E};vfnG8Oe>$jF=t&m#ixyj$Lai)UYA|0 zA|md;qlGPRA`W8LJ1jy&@4IUdlERW=cxect+2N5aw4~)M?dUiWZlV=aBL6EV%`T-f z+f~9Q^(_cZ-YrQnT`pvgo2()NYa9rF)-)ZJ{;U4n#xPxMGsd>(PM7nVRrzo=-c~&= zLM61+gygY_=R-LVG&KG~?^TddG&$hbD}{_McsCt#bh3&R4wX7ZD5iKtSmW60)ck0e zxWwyfEVtRL5H`8LJ|$z{{_uW504e&5NZIwWP4#}h$|0(UhXd(1|1)E{h%NeTV#Ew$ zVLwfO?2S4*aB;2n@XD}6pk9J;7fm1X7dnOn$-E6dEx5bIxlvXz!C%@h z+Zzzs$>}XEc)xM`HRL)l!bGZRtc#~@bYvS%mXR!BQLXQavSkpR=5^j$Nj76ScsVn#enJb;|;^#)3W~+7fboPzm$0SU<1y!bI!lY z^7(_lE%NyB9!q?`AKyx*`IjC_{(hr=FL3#+e=2kMjDIe$$xnQq-OG=BmZkE4-It8< z+k7ZD^Z)r!evvQ8{j&HdG4x44l<)g~d@a%Op+1yv`(Au4(ely!T%a|CAu)+dmJlpd zk}vpvJd@9${(8Ha@$&Rpo(THpIi2zS{`6XYIN|mQ256tmOig}1r1O`!>wddW<_vwl zN!uz%_>)5{4-J9sGqH}T4h?|_f~hlStmo8xx=(#IB=M`gJ%IW|&jV?$qf%S=B;TJ< z%6-Ef&B)JwUkcdXpCtQ{nwXlI_?X_Gs9w$(``}C8pOE>O?#@Vk!!--6U?7jJ@gKZCMDf?KRo*xIH323qzs#Oy)YN>c@651$g7^G~6ow;-BFp)4dWkz;og(;4 zFp)&+@_|r&RPRnu$z(p$z{2=rfS7z2AZN++dK9>U1TCedciiiiD**VBU=14G6?qodA4f(}O~V@_0~ z1QQ8{2(o|i%PrB#d*QSMev|MZu4&r9^TD6LSlOf){e83=|;bxdHRmUlEU4 z0OfPz@Vz*_KCEjHe8?(5Ie~YY#$m^-RBRBFi%M%X!D6*XS0M}rflbu!^pgAsy&x(L zW^H4OsNc3NNg%lBq16WP3JW zbP7PB|0;170{R9ho*!Ifu#VmI6iNa}B>f-xqgDEKp=0pVZg=Ji08zMcw|X^m#G(nV?dy701W-yW1n=`$wVfnW4Lq{2V;;pxY9*ibbsuSOp!ta zpdV1_0H!^uL;@ywJx4`lIwUF(9zI&sEMcgE5gY_7P%jYF{LjHph=`y+e3!n8rV^8I zWGTgKpfw*HD4Tj6k=!Wv7(tIv;OD(t{W-H5uT1R6H=J?r{f{YXx9ve_KCZf{aG71Q z4KYAkx8(sc7(maeW_Nktg3X}fYzHD?ChQiPQ%nuUr8bO~S++%T9B$4J(=x!Ny1r?Z z5Gd!U`W}I_!z=`NP>&RheGh2TTfh=MsDmUCgm9PmeXJ2!Mg(KeypuXG%;rQ+3Wu>^ z4JfGo%DUvpU0n+9{XPOyFdEy0I&?i(S*Bw{!ECYv2N5}Ap8 zIj^><C=gYrivbTl!*(j#+6sR4HDP^@Gh*0>`jcU(+4qk+{m=f&) zGENCqm<$EW#vB1$>ZzjdF%;QSvDC@G%1;6>oOXTtGdJHVeDng8Bh=1|fijy|ikejf z%~W$^!8fCe71}M4@8kh<7^OhrYTfYyvLBpCH$%`h;N^}3g46hDm*L1~W(6zgT}e>j zJ{rz7-004a6JE;mey4uKrpSsf2~cohJ$JtCk5lH|x9Sc(-UAXF#6=*ftU?EWrs=$w zI1%JOuIH-KHBt8FZFUzz=}t`it}H9I@=pQ8ISUGD%LK3J)G?X4_@myFMJLUs{FDQL z-R|WoTcHm8T#|Hlb1G9c3Nk%coB}9Tb~fg(>wzUW2BvFPJH9#R_5Vnv+f9MvkK$)M zI;pzqD_YR z8>z~5mTTGP=559^!<;5@qYl@7=eAPZb|ZIb!Uo{O-IG{AFjJgkFNwy5^%t$S-;MSp zb5bYgj6YZJ1_i2QjE{a4>@(I=j2mHNldt#RQMMO4!m^HDMn3D6ngohv&@3*Wde3(N zr1{Fm;~|3JrQ2k|np*Z8@%zaA4bQ`ytxYn!1>Q9$?#}{X7k;Ym&4mC@pSxV@pa!8M z>=L$Dkx=>9u-?-i=%!1@nMlzdC^b=<#rTrdF6=QnR{lRdzUq9+7I8 zHR~u%BbRLd5%c$mjB#p_QSmChbekTESBnm_S>x>We&m5T<|DO@LIo0alXO_INxi!< z(Ke9DcCOj_tv)xrXYxyWnhv+dS=+*R%b~gFK~uWqIbG4-u#Wv8K3`m(O82?{>(_9a zP;Bfdnly}arsO#!CpB+fiNHUSxp}_G-LTz!>~KR&`%4MDWKIxyczG8T?wtZk3>LM# z#YWqW!^G;~EWY$CLdtWPNfoU0dBWcW;3W(CC29@Ij^W)2Xp zYg(=#Fs|&u`Phso_^fY!t(@SQZ|PZ)!CCOiDl;-0Ol%1%#GG_tSu0?^O5nzpTx4x! z5OS@vXT4<=Lvm-R-jQjWfydN-8O;7H9+!a>tDJD6Ec(S?vyC#ytz|>xji=5-Wpg8C znfYg!S?P&K%A0ES@faGyOig{GAlZkmiq{f;n7*B*a9w)aBL^=ZD9~*oLno-@X_2>NJ#*_ zRZr<(*^DMk*0CF~Y(RQ`Hu z_-`HqPwe?A6b^ji#&n{r+qMefMC;?JtP*)%T3@KE@oAa5kV<-zLcj7N1a$W-Rt@_9==xQoZ zA~`-Wpp~!ij^eb_7>&la<5L_I(8koW#jv|wRUTQaU`&P&|CX-Ioh0y7*BPCUqrtHd zCC|DUG>7+p9Wg2?wY=S)K3?Kz9gsThvNj>{nxW(!ICQ}{pgSRHu?Fw-GwG-W>w!cm z`fz-3aH6I{e~T7;IeUW?ZMtH~Fom%o;t1Gf9=IlFO}BOFLE)xS*G(PdWr zuzY|`11=1C`<83^wHQ&lQV`CLWR4sUG3K`;bX@&zb&n$$ZKRe8iX;4|Vck21C_8#% zbsG?C}6&Lk8)6CXjrg zD$wgo385~;pxt7U;>AnnPjHskMO%p_3!NR=Gio;ET)+5=7iN~@{ReXHz7mF%O!pXu zYvokV`aft6%d`;==vTa&WR;x89fA~cihn@MO-%S7v zf2X81%Ykj`f6prOzuGudN41ol@q;t31*A;oNXHOcO@B>78O!~@dxw{C-`!_Q_Ormk zRCA&gegk(vsjnHu1`qW|7I6haZ+3WpRf|H_C&R@KR-SYR6%iFxjffFvE$V#$Zhwk^ zZ}_X7w~8m$ZgA`1A0y0_DfjJi>kjhea%URI)OJ(&ul4?XKR@q{vLWPEuCPunFGh<6*{3c>-DP zYkC})6#wxR%&tX};_D^nNWw;qq;fG66i{5Cx>4{C`Cm)}!JEx`9gfEe#p#(0H^F6L zf=7r-O8X|W9c3<7F5iS3bNj2c=XWk}7Vd?GN3bc;xEaFy<>e{&;Z<7fe9k94kID5y zsS|0m!U7dipXK8!X*SheDauJAh5UwJKKU)tj3RyD7`6OEN1|Fxhd>Kne-=d6+I7y) z-mN+38IFu0gW160Y?tm?sxbK^ucY2-CDm3Vw28?6Hki{Arjy_t1={i|g4VCp7DOP( z_(^EqV-SIyP&P*R^>z-o{Y_k_j4V#zM$2<%KV# z7aj0^F6I}d1es+Kg8Ak9{V=DQkRC>63X9Q*hUeN(j=9lu6{NqwlV{tQe6o5RR^$|o zZwJ9Bk%hfXge%4|dBPZuFcm2w1}J7TSDDNK`NnqH5ZLE5D5I@My>0Vu(4&J1Sl^`1 z3y-^dp}i=l@&n=HH?;`27M8Pfn3mN@a`in(Ri_Bi4;BrjVhctz^RrqGjrEffA!5R; zRQ-tb)r-H#K80*RfEfO6rbAes&7t6}D4W!P_7Ls`RCB2WD$BTg=qH3y9PZ;5m?iXp znZAMhTnMw!=}|E>Q-c{@wuQu0T+^5gD9 z$>9~qT-e?XxRS}i%kN8vs!@0SNEd8&vBMQ1pDAhx+S+EI87tB)*WM=D0ZuLpegN&(Fb)nWs zX1yeQ2)Si2Y;Dl=YhpAJ>9zK)Qqj;EUi**o^DOxH=9jRAnQIFWfu{rgF&K4v&L096_e((oLtH?zyx{(WmVOjZWnU_KnSX)5X^|4+>BWE?IRirShvK;ilK*7{@A+=-z!t*E;S zm0WN9_`fI`tj4&H|anU7jmDs;nXfWtRhY>FP1c%sYY zx7febZnKepHBcv$rQU-e$%gxL7m>a0VOG2{L=r{9_=%_jYK*B!n6N!S?@GcYR8T2V zeqn=F_6qqY|NI}~&STY+oN3b(I~?mPWKz*4vZoFE8Hk*+$`6TvyJ-9HdE&UNMEFO- zC#r=+#=w+}fV=aHYWStmFJ=jW-|(B>5NK8fJ+3Wecv%U>%mOuT&Z0Ofj16qgRo(n{ znStw(Fs(pXdS_X5RS%#l{)OL54ZFY_i(!(;nZB2#1XtQZzz)w;u(U7{OB?LMQ$?)7 zdnDQmXqrjurnII-Tf;@B!Pwi^(^X~C>H_t`iLjeyK|jrHyPTz6xDn5ZULec#_4}QL zRF-EzneWEV`HoQg3TKlQ#8!Gt?{H`mw%IUbsJC2ypZ ze&;;f4igp2eCXj^m82C?G1blG6q&1qhB^Kj84Ktt3lMn0bc|=n0FL0!xb~23vvFY9 z0e3(OdH>B#7?_$#S!UwGAKf_JH4_)@VlOCg%)+~;rImD|=iN=7a~+hK&Y|{IhNn#a z?Ci-JHdaJCy~pX(p?Yr_vvcBJ;+qIBz{-Qbp3HUJ!v=Y2vSR-U#K`+%)lA+cyx4*O z7Vn{st!B5s!hig$&Ov6h;q%y(j!AhI@wruWKAOrJ$6Me-fnb9@j9>oK>s84XFvKO_$W1pUkq!TzStV6Qw z$v#NvG==Twmv@H|g#OX6NbivB+#9!=ELfG6H4ak?wc*`js~ZtW%gMn>3t8Vaje)T< z{r1#f;mB_%6B4|p;zm4zCl%2Pbq<4-q=L%MY+8eYhvnvUoS%H?Zq@~m{i@mwfAQ3M zFhY1e`o;J8X0d&2WvZ4|pw$P(x(}v=^^&aE#97v_mZ0OUycba_fWf?`weln6Qw)p4 ziN8O4>0W9tR-Q1uJFZq)4|6ycjydkK<&&*-h7cKP}*YY?CRywb9k zBi;uK)eteL(*Ndg?0h?Cl`C_4ym7U#ys~gI}F^m;$6LHwo%Odb* zlYHqiy5M4ut|yVZJ&dbQcAr8m^4DJwk)H^1;>g$1E2*wwWBsgmfS>#VOY$}qfK1}H zU+3;&$!aCd_G-D;taB@+N}oJ6#cgwKcLd&`+}>Eyv9z@ozh$aA>~%~tSYPiLq0=vO z+yTB>i6;x%msyDj9TQ>BGwle#&KIQeSg6$B13AwX)|a-633Q#O*Zs-wez`echgLFY z(06*GlO9*_km0Rb!o1wCE6R+@7sG+BT2pdr0zM983<^W!iPJADJ#kvz6<)vBeIuG` znpGU!g5)4wJfZd_7=JVy{(#i&jo^swf_Tmwb6>x|QIp0*%bYn?4EQ~52>fW@BpHH& zM8;2q-`tu&Rk#X?k7*x6eGr~d=_ZBK)d`$Z{N53 zZ!oWw>F<*C7|ywPx?POG46o<71_+5RbzA8Y(5r)b0~GGtdZQ-!?a(SH0n+F~>4$#x8S%J^)U#puFytRYZLeUF;nvf{g{cZmcNI~%v z#CMomYv1bWidP83sf!nT^*!cyHnDlW?k2d>EO0YqGY{YeFM8CEuuU0D+= z?OM{|JM?%{Jj&C)5weJm@FrKG7|J%HUJw_klv$zKCW9qYIvgs#?Hm+w>u-8uXSM_J z7{6sPKYH{{qk6I}BQNe@$v!}zc?g^nwDj|cM6j|F2tJL)QS$pGZQvI0qdwx-7g{>2 zQzH?%$KNa3$+o#O`334R|G01HI~q(W1KZUbo}rgO8xnM!e!}Bf)uD zCngiO#e^7Zi4(6^e*4~b!Vg56875zuER|UI(MoZDvxofdoY?CONPUMakDXDkC)3tr z5kd9}mg<=JiQYt{XUGryk16fNP6yH#kuth(1b%Mhwcj{DiU*O(t=$mEeY0*N3JNl4 zqD+qMN#|N_cX=~Hx0Zzb%LbgkkeNU3x*dVKORs;z8t=GRWa4z1vymZEM z9{6Crv@LGZfPC6^e!=Dk9bKo{5N?%|-?I|kdP1TMi0-ywAGkEu zjJMeoRR0!<#fD+BZS^-#=9g1BK^h{_*IydMj9B>w{;-&#{^5}HwfmvI+BG-s8XmA1 z3daP~Z9#}UWH%~$!fun%nUQ&)3jTmrmdU2f^iqb^Hfhaq_0)@1PW~`y02=Z1wPrIn zXmEsGgs@+^Zg^9jfdW<+XB|L)N5mg5YrLnZ?WyrG+;``aC>At43<#MI`Y7xqzL-F1 z+LSmV;Sb+?6iDO%CRAleVo{i*(wEI4zq@um*JcsCLyb3H71LtUcG8mEibs)VRSJq+ ziYQ)*noZ-${W3osjb~t(aff?a&Bg4S@Sz*uvLj!tJMqWPx`+L|xf}y>WM6QI4G_-R ziWo*Cy+JnQ^WX|@ByI*-@fMaF#%7yLF#^`sh>gc^0m|BSy?p5H=D(xB`sNvAe%Z4w z1ly}h&u1Ce&7TNeHg#t6b=a;_j1M__p122QCh=CDi#eoK2@+#4iu z8e=|@zEG@85Z^C7{h5eKm4V|9qvX{yx?#s}_8d>7BEWS+SJh7t@h1+K}Hg+>h|E%_|7 zQnM2MMWYW~s=j}`+-Z1S%~UJ_OuCi*jpD-FrM)@VoV{sb?PQE5mi82@9(k@;&ur$f z*YA!Rqf_+)^%S4R$)Wb5s|bM!mPfwpG**u=_@lMNLD90DrZr1*m_b&m?)# zQ^39jkxk>rOJvSv?Lu2}AS)=9R$jkTbn#oMd@SU6Lh&ev6>rNcN%Mz;gwFA`?E6*9 zUuH+M#VVr?Wyz3^Atm1Fpp&-_y0YEV=8Bb&7{u=G+|qcNnhO-;#I)fh0``RN%#u_bO|`L;Pm4tIzoy2Hgq1*S8wmeksCfduQxk2#<6+O z;|OsuOW=w$kMu^XQ0nd-7pwt{)-urJId$hkl+s<>@*mtCVZwxN1WBMEET!(!E-dMG z&_BEr2y-ql&(4c&uw$?Xu#lY&&zXXb4zZA{E0{jdYf{h^5$DO3;}=f=;R_La4twHgg4H$<&juwANVPS8e<*N^k2U zq?Hk3a{yVWsx!3h4e5U)C{U~qO12srCQTHYEk;pQ^?0PT$C8AfzS_n?$yZAvDQI$x z`kit~<NyZ%MltvW6@Y_?cfIOuCV{XXA1Z+~vTa^Lj* zzS>1&Tl>HC_ve5bzYE%{Yd$4;!#?OGjJZz*O-KSIer{+uT=WuL~|XzXHP; z*3GjCz*N`f^x#^O09l{Cv-q8#dUg(G1KF;>A@xUXc$Q7ByBPR#|E(W2`L5@9*b`Nzx7QO+y>$<_0!#$S%4BDEb@Chx#~G^ zMduoDkm?#jQqe!;`-Be*?_eTOAb*8vpbcNf_(M>@pb)|6Aj0TGLfSN{c$W>nkeXq) zWAFbdtkKj)=q+qC|Bn*YTdq<_-1Ez*$G?GW*ZLlnImB1~i_&f}6~Y5TP4>4qPt6zY zQPU1Js!YT(z8FXnaUqF7gJH(~vh2ctxzfO6K~%n(!LMwkH*7;w7S}jU)gng*#=Z50 zn7?|AL4+njNkFinNX~ybSoZ@$G$?k>20eEwMOlIpiJSWm{j3d7xPv-e?-mO*rK^*I z)0nJmNfZxNr>*~}jW&Fw`P6AsG3MtaX3B`DMJD9vC_7r1B}|J&3HVXyPSdaZ(##+S zJexp1GG3;0FPpD8P$WPaUqTKeq#7yYP}(6nSXvORxlMqsG(M?90sA<=VFRNKBL#8- zm1?F15sPjb`PXAd@8H13MX?$65EDMdV40db3=` zLkmiTudzqgLwftF-a{-H1ZLqB9Q8vGv41N#f@o?3iYqPrG|;d9FqW9AYD!i=SE0L!WydVj0fF^Dm9!H->}L1-M1Xxp--eWlV~mO)?{+#MutkKiAWPgc$27IcqU ziN&@;PQWIS{!-YEW@2X+3Cy2N$j|B)axj>NQ8=LPgE!-iB-3hC+g#A{_mW7sfUTiS zz*>8SLdgc=(HTpU_saI7!J~mgZpQ_~HnGhlt{NsQEcFT&er=qAy%XZWuIzWfB?Pjm z8~>E-O$bECAO(kk&fQ3k3))4x>Y{O)&24U)4#9G532C?Ar(pFW`-(ceo4V$&^LtgC z)vjm#QOp0LQI{>_g!(flxNw;fx3e)N9=CBr1Mxog4KHEA%tIH~EI7zoAY#?}RdHVg z_D^FFY_7hiU@5_w!)z`+Ox>Uyt?_(>MtN2IrUuxLx~(9xtTpJ&}Vj&$U5+&_I&e?O>5D~B1Cd5TZqrwAPen<4<6Kd?|Lu7h~RfinG& zO>UM^zeaMo_$@ULex1Z%>-L2}QaqCmiu%ChZfOX(XxrsXC&Tf*$%#0Asr8OKgj+1P z>q(>|{9*rS?`H9tCqG$rqQ{Dob5jY8Pt*|)0aA-uS(;mOan$EbcwOxRySZ(eCc5!K zw4K>?7oVp&xlZ5UdrXe&YG8sCB z5{MR0CkOkk8WXedT(y+KM~}bj*k8e(fhHz{Uh5ElzcMbh%)2aZ zTc8lI=(bD?y{aM3FX6GBlyYcY9+xCF7k{>DX*$X2bYY9_Il!TlZUw;2231LbfkWM- zg>148iP6i`OTZvIv6*`*3>I`NMV5EbM4@c!E$Hno`ORZi@Q8h-Z5qKnmLalu`7|aY zX0h9>HAT*6XK;6|LQvyuVcGYoQz@h~*W6H-DmYb%(uMIrYVv~LgvuqWdTGp+@F*ob zJeTFeClHH8VO56m5J~woCQ?W{J#onorpqQ4NjZ_LKOB)sQg*g^$~skQS0ohj+#__! z(K^j!e>ntb49Z|QicWahP@aEa?Y!zv{6D&KQAv;EGtkb1!WvzgTz+DbBN#PyE@MveS827U3*IC!^O)}!psg|e~ zLX3ynd_^hq)GBtun+|4ERQ*y!r`$p!gBZ*v5$|j(9LOfB5Oikc1N%RFF&(*~Mh|(l zloy=zEjqbTite`2Bdbs;5D&w5>kIoP*j4wxwxWU9kHcDjBi@I@sM+9lI)^|Hr&;jO zj};n3-+6NlC5jcAMBOz5B?n}A-~gYakWC~{y%Cp5G+Y@$FaGxbHxm}gl9R9qw8WeK zE(srnF7Ys=F4o!^MEFBwA2Q;?Z(Hy_g$1G%U>Lh$K(I}^FyHsi85I%%vi$aM;k{PV zh>xLxUtxiQ-lAT+u-=9zeXt&evd4Xdxo!OJ{9d~`{458?Q!p$k1AT~JRzgPD#*4Vm z`4h7nz271boB(O9$>qME%fS%T^7k^#!O426;6E!toGkG+!Q=SWnNTx<%l2g`ffITNQ2Vb7U?O-M`WEf0fskU~1 zcEvpe5f=Fi%f=qd4$H#2%lWon3JHf%%RE&!D6I5rH5o7|s-zQ0O{B!3exedp@T+=* zkp|My(IMlr8>?!NZz7aia4zwwYFTnNMA9)-|M=l6A@1UPe|MJ5$RL40j6X72Ip3Gl z^8cD$$V*t&o*Awn56 zyl>uVkEizNe3lh{`0vz00&Cutq`lcogXlFr)nBqX-^P2l8)<;0@3D8^#*C=pe=^bi zXgF|6?ok~1WWLb`ukVrnq`vXIaKc5eql6_*IH&~&4#d1m-95vtY?A{c-1VG$?avUhWwi}4@*1Ro`F>@~X?xBa4uvW&-8qQG&_4XzRDt)?{ zGB6NMSZnfD-px|2nh`v;EdB1~wtkO{6Gd0p!t>JXy0jBs*I{E=+D|Mdar2iaM)>j8 z@GTsl>Svtm__;VyTBp#~kgYvvABKK?v9Z>`txs>?=N6Sb0l%{g(2B6nR``v_bZ#qY z=j1)kv_3z|f!j_WEKz6keOlbqI=|ELL1*rLT1YFwp!a&XQVxtui}Ti4-zty2eYS%> z9ygbh-9o3k@4Cm4LsqNx%2t-Q{?R40(@@}TgC%%obF0}_6#RWla4VLVw?Lmhs}}M& zHZz8sH-Q+G(_)K(oNr(h03lWAjq4K2zu@EE?&I3J4P^(?M7? zVs0o_s>Psza9TPfnp=d3<9;!fLVg>F!{BnoELL6HLUjZN9Rx-2upYU91ZCFUYjjGP zNc`KcsOni__;48Pe#{aXYgJOQ!1wpl#`1U)Az#tD8&d^r9Az=M2qQ7@5`9qUfokh_Qo(Rd_M@iIi1?|ngmp1;tgf@5eiyT7>DwWsZw#i^ zT_buyn&Lx?Ke4Fg0kLSaWKfGRs6=Jl)~XyOex^xtyf!YEw0gu!&5EnuwDv(M{T{M9N3Jm>DVi=4e9=yBV(aU|7c5J0e&2N^R zK{^_XM!tZT?aP7DW03NLu}U2Vg72t9=yFI$ zQN!eb351WSXpw5)NGOZbo37m9?yj~@qatgy;C z8w7mFTgG)|lV9HgoR%vKC3uZE;W5xyey2rc+~65-E#__g|LI{3m?121r9K?Rf+^tC z6+bFb3}S=oA50;1E`ig*poE5cnKk=~2H}QOcZa)EJ$@dpogTwf!$iPg*fbIaZYC9l zsjWk=99RLNMpXm}2G9Ty^U9jYa+#~Dyb)!ItFpM^BOS{9pF+^`G_tRdIS;U-UvG6H zE|qvwt1LRakGEI&-4(!e#ae`Jz0<{BZE&MU-^bZ%|Ju8*_UE%Z%}#B|t}4Ig>1rRtu6z2; zYB$5w`>Ks<=h_DE=F3Hn+J-Lrqea$QA8*Y|O{Q8yZ|uv(gKEoKVeiz@YV+EtF8rse zMD0F9=&z$z?H`@(-Di*V%hmd|wq0j?i@&thI(;5(7pqAOOMTqW7Av&pwVhs1=aus< zUjaAs^7$|U2%yUC@_6CPx0LJoE|v8BJ%9WYjl*((;l=yYT$NMd()-FBl|$jMx0K0p zhy1*kluHe^{P35B@p9XI+n0y2a_f9*5w5p~(Q-v$syD#Je4R?HAHow|f{L$S*8cpX zMy*Pl@a8MvT;p55rGM1ke6>oo@W&0^qRm42X}KrpG$J=3<1`{zo!}N5UlPdVtqaguMvX{Q#@T z!<|GkgNWpt$z6n{h~J$AwFu=~;R@#zG9=;IljTW>2j7MzCnooXqGkJ#~W~|#uRVpjdeMDP;415 z?42@NY#tvag#T2LDAPv_9em{F=D%>R_FJZvc+qEJs8~0?$m`*3wn|1sQ2y~`p;#@x zEPhJ`=<&)ipC1g=dgZuL=@t3-^n0+{&i4aeeYCw}UQdex>Hl5am*>E{ZrMdf4Ey%ZMBnBM*4ewei`WLYLk@B3Bbd=K3?w9JG)ESVk7ja99Y`(zgBC0ssK)h}8IdVIV*mVaB$=l$%ge=Ls`v3r->S7E}@ zWwXRGd#C&AegpP{?xmLUnLf>LkE2A?5-Ru$A3-vXTeA{_p|$EIV}5Bok}sA*W|VO)QP&Uhw0s-aBds>)9}^q)TsbIfVM&u zKCFlC9U1Cf;Pe_ENaauU!L@t6y)6?3B9x-CUJl01GmJfx#;DKQUefPMiwbg##sV!Do!bfRJ?mK3{y7k83x#+j{~&&u+gw z1{x^v#&g<8$n*2)B|75j8Wt!7vO8wU4KY3#(c*5V#9OHf10b^PozO-k78euBCK%jF z(^mN>Njt*yjU;}D|4?j3)T*hjt`zDmU3i81IC+0kWqeE^j~Wtlbn+e>(*lbcDkh?6 z<@x#*w6GZa;u;wRNMc1B83k`_K?p^a66ckP=($9%rKE;=%gXW9{E_;0(5Baw6LuOL zGFznu7m9diuqtQEX6ZmdIT{!5I2`pC8dgA#>F+Pgs3FbEZ7r1UBnCL1R&0&>44M{G zv`C@hL)S{N%w%@+!M~J;O?xlPgPA%Ji&t?qT!o@(8shE8GK$LG^s{4t-z$#>;>?-6LjWttibWWMgY0&Bx8&XIeiap(%YW-N?}|&T54(UaYvuC^_O61 zpw`RQUqAa?l9H`{M6MahvUYHEsD9J`Mpm=L(?njqtnO5!c2rU`#d3~Z^An(-yKM`} z`qdp-Kbma`m|wA90R-MgbKN8WKqW7 zhihDvwsW?SXwi0;_!wNHQ(ztRLwjto(6P9~%xYlEg!4KxKV2>`pq(fGhw1(Q;l?g4 z(=s#)+|R8cgqoFy#>U1l$#-zD)YORbddRP=jI0zj{r`l?R{tku`X3o>s#ThT#k$iM z0$TmybOFZX+J=@fp-?G)Nooue@Tdi1zd}rJbmb2Ae*`&V|0_tL{L@DFvOroxU#MH0 zTn1xPdXQWdY8e}Mr>c{MU!qCHY3DZgzhZ7iocU7X{FKrM`wI{QYM2Qd3QBl8L0aN| zazj(6!t`GRx-aHv#}{W@<4#Uje)@0Pn1qQA!Y1Nh}jS2&gw)Uj1%3V%zvxykk|RVN|2>& z_>F>%BZT2ASukc={x#-%YyNadfjmsgKslAlqTWbt0eL&MG+qh;miB_mu*qPA43>P?vAk8&8BQm!a7q#Ert zY@VsEsH7F^5u(b4A1pt`tQ19~lnFh-3a5}~l;~eCUXy_@!i}Ou-_^zV zmUb|!tx72fiTSn!k!lAJdpA6EHvOOFX=x|he!UqHriV9>9!)Iss1Ni-*UV{Cf1Jl z)3a!Oc*S9)cHYmY!2`_6JkUX;VxH`iWIau|(Ci3iUmn~+q)=YQe&ji3SKi3uU=59} z(CiRqW8TlbNNts0K6?=~>i!9|6>bW|`C-1%vWo)Ks+hhVPigbk8`Z z-ur*f>VJoE*C<+Q>!f?q4Sk;E{cCt;kyXCT1`d=xuPLsUtS4C9%5PCUF$8?B2=%$& z>_l1o*(!xp&RLdr{Cp?jmYZH7_pmN}r}s$90^Z*%TV`&j=VFBZCXo9auU$ZfEvoQz z7QPGMy+p7->krV~CE&OJ$2u%^EJHBgy{jy6$3OTnCF-}*rT6DYqWA9gH?K;Pjw?M} zqdzC-VrOfwBv|%}W=}FzHs;2w=l#IAB=)t&)KBtR4NkppBTjCoV$p~j3z3`8N)rZb zO#|V7m9@=Kd_>|V&7fV;W!g(A403v$Wq_Shw&`z*eyf zZoAlBs|*M`H}!?Jo#5ox;PJ6qGjQmsSoY}HGaE0ETD@aA47q(~qGECtm6ocD(U8f2 z0M19z_0x@qocx=Ch$HHvTL5gnvC{!C!eXjI`m(UrM1i@a6@-k@@Q5p78&fD(q0Ni) zPEGg$deQXSNH1~W?qNf#6Z$}_(_D9#f~{C*_jzy)bQMHren7zKpFn@>$_*JWpCFw# zWms41!`UCqYkpXR;)v5l?5cdeRgm=|Wn((JCq&YQ3HmG(Mu`w^&TF92V)yi2qb_6* z{e+Uc8_^#LY#nm;AW>OxpG4mNguhEqh!!!A1q+eE`=-@+<;M{>&SQNo`flZ_L}3ew zs9y1T1+vF{Qz}zp?Z#JQ1mhC18b4NoFd|EWu>Sp7R|b1=1k?bA`8VN_n1DV&LFXIo zCtJ`32P+~(YNHgd=o>f)O6<`XS8+`@rm7YU<|IN4BS4QpuJI=0BVx6RYbnd%p`^il zpHR$qMoMw4TEynK>4aint`z3LCF2fGPR3b}|67;8VBq=wL zB)m1K#aKE0B%Hev0GVZ<%;*ov3O@CZ9MoWwh4!O%kbVQAw8ne)n(YJi3vp$AZq?=1rr|KtRt#_1f(WXl@BDIu6D9N zV)*zxO^Wsx*_c&#Itx0E=bL1LFn?MvKFhlqnAQCw%Apdf3jdqn78lLRx56hRo(GbL&vagY;$ z7R(SCz*h*+zY~5$(#|1YJuH>{t%N(d@bm?Me#jj z&7G4HR!-8>rHdiPS3+}++hX{)0BHU~TpYcDqwy)*8n^;MylJ zN>UX6v{rVuH%>%&Ha@b1nJgrsO#CK-Oz6+H@Hu06mT;h5S^ohCQW;?^XAfD*9f57T zPSByqj3IpxbW{|^PfJ8BP`Xr){u5zP?5!fl!U+xO1-3foiWVNPIJ}g!%2o0YN;206awPpU@=J53(O~>MHkp!`CTRQwv>7OJ)8{p95|gu#%^T3)-xio>5AV$B9SXj zChY!U39$%&rUybx1o{QJ+JaJ&7_wZxYf>5sqW^sgoF>egv#?a5Jn*kjy8H;*e&#nT zzmYSG&%KdeiLS}6b}CNU%cA{>hwC6-DdtjKuPp?zFZMKGo???xA9UboTRPAq?Oq9K zKT(sj^aDM(xnGKtGE0=I82*zXG%?v`=x*p_uZb=kTOg#zH(_-XrQKgY(e>3xWkIH}FYv`niT<-CqN}(F+ znxTzTnUCl5eK5~I%-G{2%D)3HEtRVktfc*OdmOH>d4}bO4HlT?m656qaNuwx@O#GR zp`f~S7piQU!`iz;-ua(L6B=pLI+0eZAgYTvJyaai(b~&G6k~VXD*lt?zG%d4`wX^eKHiyj8BpJoXU*hlQta!pSO0yDXBRP}&%?@KZkL>|A zd7pGU9ky!i)-^e#<7PK0JI>t=UE4^$Y3@ay!+p!ZLM&2;jN zq2=Jw$!mu7@$b+K7Ix{~5DE#GF4GUD?J+H`65^2a$a>;x9A_53-f;yA*GE)F(}dIw zAlm_^l)d4(7(w7R__<1e(%g*HA%Uwd^b6H@$=4*7lXass5?|9oqfdAfmyZ`qPB$L> zj_P{vgpVZqGV|lFa$XIqnUg#A_EQ0FOOPXk{R0XWeqj^tf|JE-n&wJJ-W;0$5*=iw zC93#Sf4Ky2iI-F`*eYF2j0kRyR78ic<$os$eV z9-naM>rX#v9_M-dOGlAUC;YH_^I571G#VuKxx4;2pnYRi*b%-51)QJAwF2jUyG>OB z8?uKxzJan=^rt@;k8>u&LC+8Y1io*pJ)b%A zm;I?hZ+FG-IoDR3@1o;#WM4Yw5xcWIMATc6{JSO*SoJuW>zEd4R{7HLZM%%8_0bAV z7c1R$INgXpm#CE>fZ0DK|IO!VJ->;T=%{4-$JY`4ij7BjTY=lC+UKuYt8JVWRLtlA z$r=2Y$j{ZS#$tJ5S*z2#c(9fcZ%S7rj!i*jFH6I)+udo^5NFyQ{aRbo zW^1J~_Z$|++@Ab%OH&bM)54$I#GXl)M%^*=sdG^Q@8uuowfpsmO!_?Q4~E?ypEj4= z%XngFZq#Y#@Zue&sGAahv;a-_Ij3gbd0{nDj9Mt(ch~-|SZ}OU&Q>PdOL1?Bloro4 zhpdekpeeo_GMU6i_N|i6txxztV(J~i2SSk(++B)8P*w4zfR_ap+PJ6ec)%^0V+CD!Yb2&QmF;yO zrjk=&h3*SDhHmn+O|Z*Pd_39cuS1QIwcil%LO*{)sa@`ePV6$Ew9ygC#-0$RTIaa&?yHGV4Y6v6-nL6|oiO8|oBrj`EZRITPHYUHNgKsJzIaaS2Et7&r1% zetEVfw(h7QlF-1Ew3j*_mb7!RA?MDDW5puq zp>{zj2I%^A84dMac68jiXhRIqWMTw+B&Q3EKST0w?@W)Nhn*{o8d$_~UjbV9hON<= zE$$f6O%yH)enB#W<&o%74e^oTz&plYgZCR5;)&S&&~g@oOhra>Q9?+SBv@Cfc~r}j zQY1*U89A{?1e&A8(RcPt95_pBHi?aKMFB0Yy7E4}p$=Ee1dK>pD>P(jI%OdWQbzfi zG6!%5N7Wxx0>Zlt<#J0W$P}nHzgt5Ve?rU=ZF-bFQkQ@|egODTP;7E$C+&LVS%8TpltVljCW`gqU&P#-cf-W{S zNbDr(fMi>*af{=?O%#4|PK4?6=<&VNV-6mS0;UcS6e!n(3 z>LDmV;9_tArH*0x+e5q~Sz2a;%Y$}zu=2WE+@&~gg$z5^P|_ve(M{bNOV&a*)n9u$ zTFV`pB-fUZ-0y6+l0}kgWh@3)GefJH2Zq0N<<)O&kIqUmtPVTU5+G9Zs)_GbRYdr* zFsNZAY2jT7QH)Tmsj-rx1$9Gb50@HJl|&n`W4(xtGh2x!xUYet(uJNnq}4uHL2jeD zY>$9koB(HB=kC4+g32QqJ(Ru)dGXkMRX*cSGw3J3SBX&sQJ<>JT7{D_AS5I^NWZHF2+sHD(V{^VPkg;wv~?#YJPHWUA2`>5zCAOF#?I71E{vj*$w> zCR+q<&0vj%Xq829?6a7txR^1d8vda&H{QcT5P-eF))Jr{t2S%1$ijVyR1Sd5pM#(e zim`=frx&Ur|69hni%OkS+1xw-(atj6qT3ke|LsDdyB{LtgdQd%6K z{vPzV=Gn7-B^i}ll0rK3Rks|gI+g;K16fVTmwI6 z&fbq6ToszN%73cDtLY4l`w*%eDJD=wNbpe{0Hc43sefpriQ8DHK{{C85NJzYycQB8 zuTuT9jt-d@y2LLETUE>oP&`sGVy&sk?H;a?BapuazBm|D1%|hnqZPXf7%0=ozLc*} z#MM-?0(k3jg(}ev(3$m?^9ITz6zdJeM5$EcH&&wZ4wbz8w>*{r%>P*)dTz~djZVjb za_+o#F#xf?9EAR;H8vUcY~@#x0SyclE;4$_DqLY7W1Gb=r9uV%FlLp|D7@5OE#gSE z+j;th6)YrWDx7?Nh^p9_sxY>ycrE1qvaH<{fdh?LjTba*YE5=m!LcU!Lr*t)U;8_{ zuyWC#@@5Q(rVNI9VI~@qvC7zOVXFS@^qhYyKuu$4+>21kr$r-7>SK}t`d8GhiE zVVzoacmjAcz4=lt3LU#&i+V`QTQ5~boPW{kWr4iF)B@n2``^oEVt)p&%tw*$1Gb2V zy9i_cd*}#KN1vwTEyj_aT7GmPQxWji(TAqWS~XI&vywt?9pGdQ_|g3VLG_Rk5G8 z>UK197-{Xo2U+fozcC6};d+gP>c!}bWC;D@p>P*Rup+O?!di}WCz?|`Oz!dubePT8P*)1<>t0KkN{}96M^)~ z@1no`{;YIghd=UO$FX4(9f+&>Pd|n+65ox8i-bC@zf?O4eH%h*AD^ zP8auUz&m_9)|)wT1u}m@m52fDyU<1SvuD@4?ZCs1$}gq!kK_i%@c3?q+Cm>8h;r>4 zxxbyHE|8yUzFdLeG>4D@P#-12&3%j%pfx_e`N{Fod``zbMqU>geyJxT^~9k3Pb`;o z(zxvM>D#q~Y`2Twx+4c0W}Jqc#nXFhA{>YFp==y|*ZXNckjz7B1YYYRx)~(Rc^Pew zD|Z;-4g&h!~x~ zyU&b@ZDRIMYwr@F-`g(Ui!-w>K@2=hb!Sf;%wLjE=f%aQzS=Y2fV-Tt`A z2Ubsz<^~061KCKm5mLh;0Sx%mF{@aJLU_ut!WCR<&E12{kGY3nue5b;Gt`ggp(g>P zsFL@Cw_n@n%1?2(^_#5h4u%7R@W;Pla*)8AIo3S;mevWu$+&NHym)H+<9OdAb6Kk` zj*P5d21{xGrgeRX6N%3NqIG%}xv&n^65f6aBF>RKYdClLfXM$;oC{BadRu$j{UH+B z?52Fbie|Dpy!D`p8u4^*<;t&;dh zUiSVWYQJNu!9ODOX5n{(Bl>Ly+$Ioy@MQUMGGU_vkiqA06F$Sv-&Tm{@xBnM%}DOv zF)<&F7P%KO+?y{sjVSE#=kyB`bd(H6wan2AY zm*TseYyic7@MqNb+)RgFPN8^zDc><-+}`kyiu}|E>Yv2QE<-?`1Yl5~c$-xPRgZ*5^A}L(yy!>Luw1 zAG#k+yNfDy$cZFXloQ-Y)%k(0{+R=7*Ai3(CWWPQW^9lK9*4tF#hGOG^4ZaTT%o| z!u_{D-8*NG-QDfzF>iob;o8+(s?qZ>U*I`=-(t1xEB>V6+1X?@lA*tT*UG`rhfi#^ zf{LN-1%_7TP0DM@*7@Pa_YbkCi#C^Ae9vW_cEB}rmoGfA+U>D;?)TmS_w?V6m;E0f z>#6x231!TzZe9P{eRSHxGZjAFMvE1;+V*Bq}?G>Fb zJ?zc3GUKiIKCCB+{2A;?Jz{d+-NV@$;1YI;JYtff^EF#nAJ7s#$KiJ<-2N(o+}y&% zZaZsc$9wy;+zQCV@2F(u!6aat$>s2tfru*mf?s*mf=#C!1_++q%2hwr$(C{on7e{R8yaX{r^8yV)u^EdKsu$9C?<$5ybxC@)Exv_}kHw6G1^FY{`L4DuJK%1JQ zoQZuDequvW?x5vjfoF9fTcmdf1~yR|Uq5G0&Gm8cO|6ylMlo>oKi20_Al6(~jqH;3 zl2WGW(=s-HMQSpWMqR{|zZ;7@5?%;2bx_w)CgC|aO*_-e+&L)clnJ z*hwN(GM$8O$fy|iNPH+a+L=e-O(Kq&4K_#)7NsC0jloZ>C=yVd07X}h8ke@LQpXe0 zgf5{lka%R$1V(vp`Is9l9ov(b6&;v3)YdhML}VG`IGV_zf77ewl_M(0Y?Q6;>AZ3e z$16pdmiY&Y8vLqYA5B~=Gr1@6+LPV#z2V(b;f%a%8Av;H1E`(nEYvXz+2*boF{Yz8ci_kTAl+ zStt>8{y}F{H_BQ8mv-P%hwn@*(LS#5>W0y{%)e79${yqKcc4gul3Ll+0-#z`_OV{; z@X$vYr&4Qx*3<1w=r`qf=<0H_%Du!@GM0?1X1`kWOTVb@LnQ>=kbqXonUb z!MezhK$Uy8YAY<$yW2SM_s|_yo=p+kn?YA$dMeEP%_Fzdle@<{q|(E~o9Z2y?$U&M zK!$TWKZITf=eKr0>0X{_SqL~geV(DU!p~xK=zV|^6m1r?s)9fUczgwWnsdYXb@Y(^ z!t3@)Qq-GrGg_y&N(Gz7*kD9KcqxysI9%c&2Dn^QUa|ZlZw6pSPgOx7+2k zRTAEX6Oz1X1Uy&Q+-YZ_R(#3xskdn}Zgl^>5 zDeDdS3f_X8HWx#}KgPO-!=RcqnRd1qG*3F{Vm^*qy}=lE%&uDFpt#$=K&aNt z&srkPV4`2%e{b+J;J5n9)_;ny(_Py&do<_ z-|L)jiAEdwU?r`%`b*atC>#E^vfD_33kLiA>eg!yJ7;IQs2zn8HdP|Dy@0MhW4(u@NvV0m!b zsp*@-Qjk(ot|Ch{o_<^r&PCuDzUViHifItP14~+?>hw6Agq3{y*tgjOd!P(4Oi_p6 zzLjfYe7wsqi|STb8)GFYsR&>sEU&S-N%Xh7L&3XZ1-_n6DbT5gCff zxaHGKH&`MAyeZ7ixrIiya42KWz-Q!d3B>&s?fjQwdYgfY*ls|)Uox@4lDfNxN43T2 zuYyyvwcEq2z*A^IZD(XCx7|Ftn7Tsr{}iBTmhtIXXRo=1CdBgt8S=l0gM8 zi8I$A-gf9dFXjPFoN?RJEc*XGS1Y3y`68g485xDsLU{e4lWSAr2V2Uq$Ok%BdZ(v* zvK#?_TSRW<;~E;@>9^$@8IEyTHfIAM%#$vE_&W~vV)Uz0f@`V#;Xrn6o}xi_)#0m8 zsX0+AmT+hkxuc%NUK)A2$I;Hr5BmO8n5DEO-w5CSj!;t!n44xH)A$(C!AB;GIA_Db zA+;d5y~gI08}sPX)0}PAIEl-Y(c#f80-)S_AlfmFp41yddFcd}HymiirrIeU0SU)`+KdDPTB zi}H<9X!NALi#N@w4^ClMO`o&{O2;-7J*@~fc_;rTwqrOk1;BeM*rieq-8#A26<%;){hEIa4$o#OX>|=} z4a4*IUhjB9F_`@}>5=7?xlB&Lz%tk*gdWAPz3FzVN=nMRzGYs594D>i^knGYEoU;- zD8(Fc1QWCHw#2wuV!OUJ$3sRH~V%Mc~>eHjDXGH&2m0Q0y*;EixfUe6pVuA1G?E+0LNwrJ?9Nm8@vgI8N9% zdu(w7Jg3muClWxb!X;(8eSk=kEKvO^Mt&9MDbtQ(gGM&&21_eF%wgd;d=XDzq5?V} z|Bv*pQkx7u2*$e~>RLIOkUfM7lbw|?47XQEOyVbth|WI7>{J>|xRflsqaCcLbom+B zfCqXYW1|dFoaOkei&J$ro<`rs9iS5^$_3)3(z3#3^Qj*Em~)0)nUj7-nD!$m$~e4t zVi$fx`cJ>>HQY5sl5Yo?wc&nFbOCO3!ffO{2TrS(jj;izoP1SoO#J z6l)(bd*4wMH1@@_Q-N>?CVKNtE{3dhcLP7)kRC9O;wk(R>#y{r8&xEx#Sw|9)QWM0 zCkn%}9TbBbCN7N2AaGM$)2g6L0QX|~g)ZNX9D@6N|Nai0b%N$~ha8CKJX7M4ejWUqqILh9F9}J z9=m#d)psTO^uTzhvg_uM&oz21OX2LEwML3!(b3)RO~~DF0%i6d)JZ z1PUZ0!D0lMiq&cq(aEUkJbv+T1>nRg&0#P*%f#qNHTjJPk(E00UuvNR2}IvfR*v+k zIujVP+$&0rp{=X{JEsl#m`r=E#O{U3AEMIZu$a93P$Z zCRv__bT$aQae#+*>(MfiO$|6b%aOt*1~CV2nM#p^%Ljc-Mr(pnk*cZw}} z&5vh?zx|>Fqx&H&3v){@I{Q4gcYZoYXn$QmV>uCD?~OTJL75@rxLen_Q0_fG)8xvHKQLK+tzN=&(~ z`J}%`Zi3)AOJ}+>pqDeOA$H}5k*;hOsK$IW#*r?R&6XvFuB!^v_2hkYD*~- zvxBX6Xfn*XyyKxh$-DL$7z*n(;)aG)Oh> zEhFgV6})49VQn;A;vxC6B)kx%zOD^fF9+!Hpu3u(RAr@p2umrLwN_l5$17le^I+VP z4XVvv_e4)6nHI?064q&0tnx1p-G$ANEAcxJ->p(UlmrUHv=OZdJm)^HW-4rtRODvn z_4po{5GV%GAEBth?_iE1-q~e~9$i}U=clEkrUS?pcqpHf2ZmlfS&mdlSPf#7X-6p8 zF%{$<2%_3DVtsd%tAxeIoOTQGd2V=Uu|`o9>$#YliYX<}ZW(*CeatWUg5@~#iIr<) zt!MWO6dxh{*qKbbCNbwJWj%Mp3n9g79rj9~Ow5DSUa*BZPw?m=JHEhd&Wm`INmW+A z2SZRDhEY;D{0WqjDei=0F#G`&EDCJP1^xN<9{vo)>kD{~PaCBTh#i*mk%8&U?+1=7~_u9@4={*Tq)6gl~Z`In~obbtA5 zzRdQ_x{)^H9QU-+?7BeJ!*V06oy|L(wsIknTZd1kUx!<2(*L51SJRNBC<>GH?5(J@ zGC_}GCaJHE?QT&*n8)Z(YReN+)MzB+|6&%L#b~u&dK6c2|F~Z$i3s60ux{Q<{(qWB zu^-aj`Tq(RZg;I3+IjK5lOSbZQKxmlTlh*f55~h=*k(Z;`@m1X_(WY<|E2el!uD9o z^cu#44${{IXZ;DzN&wIO;~@_HlKMjBIf~XtiiaLYVwm2sex8tNA?Q0CLmb;bLvv{7Q=ro+Fd>Cc(v7pX13i!V8{Xls9ejO3GvFK82>;F|&(BjNcb#`& ztEr$_)F~w8m5j$nR4OeLLUq?BGlu32ksx@b})+N zEtWa)rM2KTu3-c9Xh{=s4~8Qt-OH?`gY>&>nz?n68eZ2+(R0DKvz4_K9}ev24EFw#Ic&rCYNMKFdo%@uszO*H!zm?2~2_=R*ODwrmgw z*G&+wD}i*2Nj~M#+Nqn-y3tjuvFx=7$p(Q70dK>u9;;16s*7gD9~0}DWe3)-X32cD za#x8de6nLiSNt<6wh{w@NO(*#giCz2qn>RGF8h0+4#}|^Q~Y^2{-cto<97j5s@2#7 zMTDeqf%bU^#go+K1;E>Td$Z&B*Urm5NzN4W*aGOrj>3e=0X3{y`Fzn37xmAXTBV~%QsM#-Nk+ERgX zpm|#ZprnOMEGj6UV+1dA8NrZ@YOBie>?ISW4Byncb$Bh>Rf$3 zcaq|{TGp80=l-#kzPwgZv*Oa1j*ZB4 zuQn*6aTW1R1Xd5koA@1yLd)nqV)bUkB_HoJ8Af*C5({=DCyL8LDB}}tTls5$imta{ zu8jLn(6tFNVFI1vY#f?ZmyW8IDAmm%^JIMu#(BvB@-EV`fOM<1i<2EM_LmB#B_?J0 zio)R^EY2kiP$*AJYZbC)$;2Z{V_$fM0^#KeX}CNT?jpEM90+z!9z~(h9Pz`en8qf^ z?uhYHpdOx=X~HJEX33eVF4BLh{kvN$peY?WV5A~5T(#V`2@ez0gF01;T61t)$<(yz zDOBn`M?Jjo=_B-Q+2yR!1gcXzDo-k)^?s;Kv7&eA!^KMc8wJDhP928L;pX5)%2@~Y zFFwfuvFLujqyJ{l6tQgOWR`0TrIsb8%Yrvg;gf@uQvJm%QzL{|NvmBs34QxaoM#>9 zwGF9mqYeF3>2EbKUBTkoypmfVuPfi-h1N}PM-rEYPI{a(P>oaDCZ;9tst2D%=Pi84 zroo?kCkO-{pEhS&)7@o>eCK{?af^_Shx1{CiwH?0gLBNt>Zo+x3XB~6xFao3gGNa> z118awT1O`;+0!c7aj3I{LNbJJWTr_Z>{2fv(Al#3+i7VPbcMgV?O0z!ayal}Y>?G8 zqxKP<@+z+Xsgn9BMfgT&f3CGZ@Ph5>>^F>e5E`YLW0}6^nZoxeCI7(l(?*4r5Nq6v zBI+=jHKS{0@V^$IU_}z~A5G$#E#jJVxZ|VHbv%?;4l}%#$ zO-hR)qe>v7sDqG`k+?O8Lne=mkA2*AMBB=ZSjOnRbu?GJDX+X@_w@}6?jESV8`9*= z{MyC;_Qe#c|1Y{tgYa%kt@JHQb;B}hx62&mi^gtIa^dA};8vft2 zUAnXjhH1tE^%yFt*v8w|09Bhy%At50L z7OhG-D7i|+miHH^Tc25tx}QhPZgH`(eTjITwwY4pZ6a})!YHJo!otJJW~Zm0x2}d5 zRSTf%B*HNaK-qpsKmCOBwivl1H`WC6r^SCacY{Nvp^0+LoryuMvMNNWn)kAAv!S#+ zZKB+((7uUf3uH)}8SJ3^nM15)*7@d0=}w?)T1$toF!)Z+KZ9w@zLSb1)0mqzSyE7Q zmG--wUsLz#(z9lK@9c?k%qlp4rQCeCWo~puej|>uRW0@i9uUjV!_+(BaxZ(_zlLSoW ze_m$}7rxypYU(Pgr8Fe5*{@bL%N)E0-nunb6@y|6HVe|ryHS%(-nvlZQQyITWXel^ z4vlWM%atPl-Y+GKmA+@l*$J{dqHBGGOyWYjcYl@08=g1n}py+Clrmy8C+BI<}(5(Ii2P zuJm(B9NdE25J>isfQhx5H~nftv!m;%g76y_P?&$0BM zKKS75l$@-hIIhN{0fMEOKX)gARHf8~#JG6I%E5H)`{h05zo%OITIPYhsx+jr_kvP}cG^(>H>-3$(N6j903 z!=tjYvb($cKWi8q7=T7XC-1*{$|NKpcvV(b*45Rux3_2Db>0OIgFzxqXWd=7eXl4l z2ifrQ@^Y=&NFa~-C>9wC3d#hi3abC!U^K|;s;a7*nwpxMc?J0R_(0EMAP{J;EyvTq zp`j&#aOfNyb+I8K?i~gzVQ6H5xL8>C$#TU>NlD4c$r%|LnVD-zbn5LMH-VM|5!m}v zQ_8BUGjnru3kyHu$tA5aQW6u-+}jL0eb~lEM>Eb&POP~z1w5{|cXuHmA>|V&;c+5A zZVwPQlNq!ExVX6b!64uQU{Q%dP_}f&1wzNKi;HMb4Qt&-yBGadw-Q0HRk!l4LVG_HOG1K(I5svG85O0Vq=bTq!)Rk;BP%Pb zs;asbib`T&U?3es^s-=+439|-g0L4yM@MI8XRS)Tkp!x-r2@$@y`Mi<^^}!S(a~pE z=;^(La=%VaPM(fu`atMyZf^c{er{)Pe=(ZOKmy_|ET6*YrmdX@dbxs`T80a?;$~ zENniS#6m;E^FvLIJOB&=2n5pR1wgQ}R#VBRRM*t-Iq&vQOk7Oez3*&qcWRb>fH>#K zP>v1{Z9<^#Kk#?P`cvc z;^O0Hrs64vpmFuCi;IfN%ga9(7d5rDmseKOGcr~mygtZ)XuXcMwr?wTDVwXSP? zi-Lpg;foN#CeX?xA`}$xL1KZ?GNUnPr9zdEBK4Dj1)#y1gU&pHu|mNiu?Eo6X5%wD zgJCvfvLZkweV=cdoI^r(EX9?x zZwEhvK&TT&^DE^cIM{fv+z*Xl)Sc85oa`PMio*@aon!D)Y3qjZ&v8C(UY8`yh(Fc4 z+R=(SZaprTxknXbOS$Y}iJo&t_fyA<+gnA6x>a~E2;+Er&d5m@Czn5`J`*QC{|Sh} zb(wWDPzXAj^ufu82q9LSJprJ^oaB3}`8T{L_}_&biig@Z*Y^*tLkz2BZ~UzpXT*7Oxt!9tyi(CHdHcTf3QNtVjo~d_-5a+@}w5?Lpvv?hgh-#>$M)o`+EEPoP4mlPoyJS{K0O9SpBqj zf;x0#e}5&1(g>5>51z<`M3xMYeO8~ykW{Wc4Jit2b8~mLj8(?Qe$DS7?XY8B^9ZR; zp=>sfi;NwbAhKWkNyqMq4)FF!5?%7p4UtRRMYv6`qA5%7s;u2dUGMb1quuAl zUjv?JM36|zhW0m;U{7DV2jFK=udKsrY zB93#T)I76BO!V60s^V(yiM}3DU+xPDWKXnaFXs*-uI6(|W(vPI3we~hIQ97#EgpYg zvag+yRA$d-80Y3i?EV~Nq20RxH*Occ-**&H~Z(V@Kx-VWt+r=o=)PILp{v} zXMZ;b0Yv#J8I)xrw%V7p0C31OB>ieROv<5x0%s3ilsTSO)=u7IYxU?yca0BuVbTh1 zulS9v3wQ5Sz?fHDxKT2CW_vbXFLr^}5PL}q+T@b^Hk9cU#(N%)OO(YX0cT^ZzQArE zeNRSP&$dx7#Z6z`5`YpwcyK5&3E7@a?$Bf>PGzkZ80p)8q`X^+$jDozw z9X0Ek!oZFisQVU zMv_FlR&LBvsD2H{9>miRht0viMl0wC&F3lLSdzmKB@i{1trs;aAwd zwkrv&%uDD{NiUFBv30d@ewAJ~m7dsb0_KW`(14~sd=8djVZ>Juo!t^L-&j$1tn?Ld z@#-I}zU5+~d$@Ot?u%~|8$pR@E$HB6Wx~gcnmB9yW#>tLabEG9T9t{V=Snv5mC>sF zfPgi?TRQ#rV100oW+-;v-Li-tFMK`9=f{pWYu$r9bVj9sJr|qMk76h|4nuDgUmoci zSTr~?dGfV_QjlKzZ-LsklrvcUu-YXDxd(|3+J5_4HpH4M9^qs7J<3#l zNF{qWscwUOy@XcgglI!O`zwZy}6xZ_8-r&C%5Xy|>(T<+ii9 zyt8d)aF}&E=U>Y5I({f@b%@#_T3D-YAf4U|i9Bp1qw?ZCVLl#OcUAxV*$y0OL>k+a z26kp@s-ci9QHo9#nwlabrW;uJ8zi{U5i27^4%s6A0sSpkYe<+iyN)!}?Gnc~zqt|? z>BQZ?H4VwJH5xTG5!ZGj2 zL;Xv)F4wXg3wG3ts92!lDq;cr8$(?aFSt7J_XV7!F=4;`E*bsc>BkR>v@=THFNX$g zMqD``#kLsD%ECati$Tvd{ZNQDTj+abRx&px6rCdh7>6b&F8*_-S`@4GfMa1yKcAJy z&F`q1TX1*t<)NE!k$UergZ3om9e8t2e=o5j`7ul#yUO1yacjORH^#IT&szM}E-yGl z&k(!LWYQ->M8qd%eu!bg(`*KG_idVvttn&lUoISBcb)x_J~=p$#2vvlnG1opMt*lc ziFwnPj^ugRiDW6fYbyx@7auGx;3^I_CctC(o1mW@Tnv z7<3AF`^UUx(!6;4Qqdb0=%*W?N;9-2{BN=1VB3tE?%oi~54e9$%F~9790N^0#5XEa zM-uaS@_FlMrywgrbZu7nU2!&-R}iAH#{-r(Ih!K3{=-wjzN4~44r0kG5>U37YhQZy z<|_-Ig5h@bEHjDh17ET+%C>GjQLs1Uvd7|>AWJkBvP7pWX7)pvw_YVB zi@EHbmRu-n>5T~)F4Q!Hkqkzbtm#6El%~>O$(l;O*YhK;PqUVCekqm0kwL!K*SC#S zH32$Us`Eg2<3}Ll4Lt4(!Z{9)G@O?Ea2Qq)nJrgFEf5SzArb3K$1O{*IoF{=SPWI| zD8NOt`DvflLf2>Q@23ke+Es->bc13|N;#@GG` zdZsgfB{E$BUjah+?cF&Sm0Qb?pOUEnwd>#`7e^f9{m(Wc>c#OtLcGv!7w}{PkK*_T9>dUCHJe=i6)K+ww!=08oOX&D#NY z@KHo^y#zxVU9C2%Sk%EP=!_ zn>Hqml>2<^KOBiN)mZKOHbOd;w|m+_Ib#;&rZhjCvLG28^4Jxp@E&`JsEdHZmbZ)g{ z35ySclG#u|o^CguR{kIQ5D$%tIDZF~RJc^}L(l!z;{{)KophL_U^3KOr^vra?g}As z`bNNKOAID)i-r)G!VF4iaJvA=ZZNG~iq%h;7PXt+oNhC+gqY`I>34}?##Zc@LeoJo zrg#L7Xry1H$Z%$Lz1i+FqDh5mU>$cj>ffj5a9GtVlzfO?c4J+cPt@;#Jk}^vmb|mc zE=5;%tSgXFe-tq>=bU?&xjA*>9_5#v@Qka`&`m7h_L3~DwbLLK*8=#W#l1q2OD)K@ z8H`HkcVlez%)v~J=IhCj3*y)gn=5{dB~99#L=%!?z1h9B9gaL=K+yCoVDGn2s-0^Q9B_fp%1XIz&f_ zPtcX=oF|%N9JW>u_1c^{AM(LZv>9{1@s?#u84j53W5H}*-BdVy6a1C<;vHqv*H_bO zPr0Z#a>n(iLvQHRVqQ&(U8oDl5vPQ+tg_={DuGF8?eNXej<^HoOp?65G z@3OZ&XXWL-To}I`Rwy~H>-T>T_I7xjw{o0OV|+?M*D*40S6xFlUGlcnerdHEHEYwdsxFZgpw(v@3l^1L}lIZvAKS=jXFyMD&{`ay1_ z!_E6w`?8@)PyEByTcqrg&tfx4nI(l`tFSE!3E%e<$PIzs6&{E9i;*Dq=I0UWYF(4R zAAczQ)-OI6h%@@qrHwFQ|8_9H?)ZE$_Ff+dz;;Kyw@OQ2M$^872DmX|h;u z1j1GPt?H)UrNxzIJEDfO+qK^fZ%3@8^_C(=rPE+HQNgFu5ixoLTN4qYTZfT7XC>;i z!Vo-p@)4~XnkCex^?r@OK1TjNt7Pm^`0HzjD;QKwl_z7#SJO6nLkm_XM9gcPx~ z%bw$zFyAmIi*91}o2eU~AX*@D8covZZ&@K2Do)3V_%?s%cRrKW_b!*4E%F|>c4Ers zU+0EYAqVDVn5Y@?dKj=amo`U&H;xxVZ|8Q;G;EXJ!C|^9m^Mo2duQdHXEzSC#O>KL zP_}do9}h_WDY&c@(y#tl_EDm;$QmUx0{UdF3Xee9vGx8Q14u1@hs8mS6b{7$YdlrH zOcG$AVvF-5EXyr1KCME9ODTVL$oFy)o?8T(-##W=0u=W`$r-Dz3YXBC$odQ4Yvw4j zg|alSw&M`y_}Yy>o`k(CzbF>G&fQkH5J~mO7^H3-jVWX1vq?}!c$ug^$Yu6j9G}z) z_9l7c*&BoALr}ZmhCO}V14_)!r$V~DXcAO~+k%Ti<)pq{lmur2I`iuEJ4q#UQzmro z0Z^fkmMLicBOAAY)TbE;>Ql!rq)N;w*CGQ3KOWLC^1t z-Wz|uKdX1N=L0cE&9HH@Ed8zFi2WhItYTM1j}m_&jYeJK1f!NTX?`D395bu@5|{xv0J5X0mAAo^Rr<&&955>uTDjYE8SZ|z^CMWRc^ z^dw=e2y7a?7H8aO((HykNPIsp$l0cPHyB&=CIidba|f@5dw|FIX?Na2}OkV!jg8%S~UPf@=1O9qK^*XdGBPL4n3N?m(-~I9}ajj=&wl>d08d z=u{T1_W6FcC;}4ZoK!Be*8W~qg%=L-JNmocqI7oKNhfef3uHXj>gqAHW-)wfcXKXK zT_N;6*TctjvL?Iq6){eeZqBVr zWibw$#ejyX(x@~kjXDVY+$Gj&oXYFl+fxjVJr2UV3l8-dv(a|e2qW!lXYgn|u282a&pC=(P7Qwx&WD10`3pI#?A%t1ulRhkG{OhjLw!7z40 z{9JZm{7&ycBx2RT+Vr`)X$g|4QFFVd`e1YaaC!AnU9Sj9bTDCbur!xrH*+C8ho6-I z8Z9FS(4zeSln|@p#RaK-qkA?KS_htxreodCNPxq@u9?+DfW!C^!(uE&hu7}}9iorR zeDZt%wmsa?fMMNdG-?OYCdXI*@Rnc#!OWmh@Xls)nJysTpv}8V(!ewD#)@X;1(APihVI3fJ9b5%9;q*dsOL!MN zZY{*2aX6049wfx=bWaY_K)cx-5$^s}Ex|aQ#mqv;xHXBJ-OPrUFpb4b4^QkaI4ZTc zK3KF_9yJn<>Jt6QqX8U=0B`=CGYB{RuDXT1VkAnJY(R>qJw%e*0Bih2FWhJ(I5hNHfXN8z7QnMCK)UygpI67cM z!uSNAEN0Gl{D6@^Ah9x9eg!fddi0J5_vs=((fJ2ouv{%A*H= zyFR#zH!7!lyko>ZL%rCJc9fhm@n%)G3_EC0C==2&#UM(29ZV4+wMtW?_P-% zG-yhq4Qac}Amao54U%5=YLpS_)ov5E53p(fXqvguoq^ZKt`XQcpxPc>gtXWvz8Yv} z>=C)*RHdi==Kkg-mL=^yKrM=Hv3C@%roO zm_0KVkQnxx`?Phz+s%qVPt#$JRlPL{HOjH8lsCJ*iqNBw1G(4>;v8L6IAGmIALKoD zo_D|@_^SiiIL_=aDp60aS|lNZpuG(h+-F=3Dy8$m-cxJ1xu@q#E;6ak=ZxI})j0#M zxryhwoQfw?e{x-F+(n(QFn5;LZT-$p%Y*=X6hLbj^&Q}w!!v7C#Rh{|+aZHdG$1iU zJ=mGb3k4A_D$474I3VIwA6_^fVhb6QKP`P{^K7%JjEdU)^x8|3&m+#~V)ZVdD&w;t z!qOhT7cJGdVX$TQZcsN9LQw^v@D&KG-M}`WP zAY;RMGufItLv-FowWHx6H>1 z=j5Vij?DHJJMki(1eVn?oK68<&@P)91)R4h`x2`Q2F~Yt`;vIQE~+w|{U}iy=EnVg ze=1F3M~D?$#fy1Re2~e-*uW@WZtq&I4!XtbolUz}x4q-!0^36L#I469y+SH%~Wlg6g_@>yHH{8}m)Vu*+Wr9f+mV7_`iCK=1_?F(A=*u|wsl zV!g^td85{^bmrvgcuKO1p*fH(iE`>%^+h)cP9Ff82s{`cqt`l} z-I0)-Sy&%=W?VM}Qn86yxg)rksLsbA5FK~5Bh0J_dvtm00N#|=kTRVPT=iB8P1Tpioj6r;Y?0nAaf#(b+)vj9yQ3Xd3;N4*(%gHBtltkk`Fq_TY* zHu;J^cNVlh9QPKqPlpqrj;{-@@-|?Z;f@gIysb;#IU4B4wXcO)e6%xSqBI@SW4#?s zcFDS_2Y1aw)`~dbOp_1s9|WU_n? zFCQklGmeqLJ?pQIq!xQgRT>qJ+Xn2m9IC-O`fmbI;2 z;d%BAgpBGU-%H&Tu9(y;*O=BUS6{&-h--Oy3|<{V1bUJp5&6qhA5zN`{!|3ce3A`0 zM){H>6FG9|J_koVL1Ic@d&esm`m$ue>GsqGix(^01A_Obr;x4Qd-1e0DTO(5(zt5y zb-Y_1JyyHTDv9y%pdf<;@Ocr!c?ixWJBL*%4Y#xjd)7Sad<&081XkErO!2%SDIra* zO$vDB_tbkkafS)YasH7xRxbhZh4FFIqoYva-ln@dRgpaqt%Ynxr=?(EV8R)J;Ev)# zRZC~VhZAVXdWnSq+u5isd=f&uT*oYcj;Y15d|0OMwoKrj3NsGYn*iC((A#5=9v5!( z<4AX!)}&qC@|0PeHsnwma((n0x-F_FUlpa~H7p#=pw-q`9l%knhDZz2oR@Ie9&Bhp zcbq#4$<$E-1Gmt3&50Bl%XB;P(UXl38Hzl#-v!HmLTa7!rw4_7vn|;KqUbgC>~Jm2 za)WF-oSzY#b~_t&U&m%x^(qhHF?0~}Mjyv~U*ert$RU0!4Uh6A8QQU&r!rqGoc(a@ zy%e4Y;!u?)<^bV~%H$h3pdVKo<-o*fTIDhmZ_ujN#26ma ze$J^1UF-52Bw(188Y+Z14p|EmLY#D2WfD4a!=f^QD1SmGVH>p^DR@|0n{Xh`ZAGuh zHua2Z)?oYW=rNk(7G_Y-0L2Yc430AW&7q#~1w&FBB@4^nsIiLDlnOs6n$nI^nicNI zmkRm5bGhts#-b4qzLVMCFP!=M!Lw=#lH7J1&Q)<&PMI;(#lY^^HBmCGKAbC{*0ve_ za6w4b9n;^)du!qmz&g`_#@job6-7NNwx(4V-Wb&WllL>uvJ>j>$c|8YB+mVBSI{^p zX%28>QP_*KEfs4=usS{V2;3$^8rI_~MFDn{r^kM2Blgt@5RKs}VnNvRX(eZsjZz^W z5%gV^;^fc`5aIRhLYSf+$l+=CicBFW6S`piKImS1h87Iu);&&ch&#L$$UKfFXY^@_ z+32+0JL-_Y^+?yPXdf^#LLnj&&mZ&NL^?3p)(-5%;Pg;IyZog*Eg-tqta>T0L>3rCBC>|^HtrgXp_@(2zptl72RFk-%Yr4)jkVa`n zP`#*c8d1mwg;(bhGD6wLnrYt|usQ(&JnK{AFk`_@IageST|Z@7JEKK;mne7{V1u11 zgPn+D7)RKWT57NBoj;Np1O){I_^P4CoZS!PrY^m`g+4d?*Ie)gYCAGA>*K84p}?ObFIyEh~Y0Yb!U{z z0P`la0=L+i4m;TH(jIL(&V9KGogjR`b7w*7fKz{j3=oNQ>|HCutpgN2&6u&TN4oX& z=dIM;K+3Y?toECdX(RTuVYnJQ&zZhC6dc9xXtz>3a%iO$haPF(Z5q)H@NB|i5%%N~ zdR|ycy$Rd~4TQ+yBD;^nq?lUu`@)Qv+)RLXK`=qz#sKA zqJ1+UA1@pM_7l^ivcfteQ;>=?VC;0ERLUOBkEznhS|1gn?t1ky#6MYRW(v734RcCqe^Qh!|-)4T{gMu{#4p ztc))b^;acU#E6k8&3C8S*`)gvBX|fdmuV43a)RqoEg6h+k%01E{p_$Y+Z7?Hcu<|AtT3&9(Y$NIh`!7)Z5sxaK@x;)z(OS(*AAZFCXT;xnJLU7i%~7~;~R z%qUpX?%OcHK8*88J@h z{B*XmN6Lr#x zH{)Wic>E(oSWKik_VHg2u{6=R>rQ_)5xw+HmORoBAsXMCOqRmE*eWuvH`K@q9B3_D z+W!r5RW=n1f3ZP2PK1z5~^Ju*bFL>HuJ9zKLS{}t3I zb9E*NJHdC)U!k*{P6Mu~e`Hm@d{MhgFj&&DR!p#Q0F}>b)@y`dWgpZ1n9c5`E!(T{%zZL|Bh+#gs@ICQJ!5s zn9C$(Y@lEkZWJuS7YcYfM}hU- z`=>cYPWnNBYUz)2ci-LWzWJ~be3LryNN5pO6a7hOlvk`P$0&b%;^O$h7yg|%^?vw@ z$Cy{;W@(7okY#$~I6(_%%1ibOv&`PF&VSWhPCCo&h`?F~GjmJ?_Bx;Bb}wd*51MWr zFAav0&9>ob_J7W|XSrK`x5tg~^D5(vfKwECXfU)U<%2{`nuI3v?TQW7UzxL*v3_s@r%&0#ENqO#!XbKA@Z0-Qp-Q{Z_)hX?-|gFjaW(e-!7WLl0Uo2&>Uo~T*K#?Ek`Ej2sFiMV zF*WIR*I&NMVP#~)8(q?3?CZ}AWf}|>-({u#eiM=;3+7r5>Aqmf%C1(@V}ZPFw-h1O zFY~AMQq1{D@;?Kv`}aQ7hI;yLVst=Ig9ax z37m5CzO3Y+eWG1?*=+Wp*K(pG9zwo%4tWCEk$ncCCpCTG{PuwAqRrbY^-UrAu3RO8 z{cq2eA%6ZZw;2hQlDBJt$}Wzhn<7brLA!T5@j4uqoO&##UzF~Lb-076?DIwk`v%vB zmL3TcLNntUy0j;5ecR0O(zPD|Pu)vZadk*Xz5Dbnm@WECH0 z68l4GpXg;wk^*#c%O=QUX@^QCjJWP{)+8Lh zEPE|XC;9*Ho5<@*Z=aO*9Zi>hBs9M5aBafO>#BY*{~O@feko|m<5-$-cy=|qxwrHj zJlC9EO_#Mfw!wd%v@`TY*l5OE;QV23p7iCDbH#s>2DG@SNnT4om7(Jn9eCn+KLE~b z<8OOQ_EM{zP=BN4VkBXFiO&`=OCAs26T6AhY2#<4tXCx^Yr)m?u+$5=KlMV zZCPE09WKZz)Q`UmbT?+m)jYgC*wK=CB{>EYGJ?AUe!nsLI?v*zSSE_V(jO1|KcV9_ z{uGqe=DZ?q8-a$(BOLFK z<)cy=+%ek1bTmNX!}o7#XpP*V zna~1E=xRo^fMnarjKnvXzIxl#j0DNP_^&-S7$HLys?UoN*pS%TW3%fstQ`*1!hbT<>@Dp3_L*_NV7F4Pm8EVSe&^=@3W?|)5q#QGHW|5V^gn)T(X9<~B zR_Ga-8weXS?IHzhCc`>Uy8vKkLXg74)?ADN2_)sP^&MD(4E=+6FNJ&K(5-lMXWNj(H;UM;+%8+o@Xt!O8$xb{rZ?wR76l%fms*qx3o3nI6_>p)LHA-a?)CmzN!v4Ub4k#T;&u7%l%8tXS#eQHfP&n^nQ&A} zPZPl&xT1=0M$$HVe6LC@&iQpz@$IN$>!@PJhhmj=-D#iPmK7T_qGoh!ps?R643?l? z>GyH&rZbwqT4%zFk94KVv^t`G%yj((Ni23b_t`U|eJ0Z~}XBNh*EzLnDA8?d`s|F!0@(2<6Q7>#J847+2An*EPnN<_Z6J3(yJD3faVj7oO3vi?^)nP?+COUTk64im%>1jp+Z-K zR?#)Oho30AmiEJ@y5$a4orzqZo<&kt3Lc(w5?;|lKWY1mPIb|e$p z*$DQU*y~rikfK<%r)yr3z34bK>#S~G10@CnztPT58furDn-$%gOIQYf>3;6@(~+}9 z)t%sSb44<+YH0Zv>;8+(=>I&IUqrSC-8!4x!j_g~it4|Pt3`h}d8T?Hg@1gj?(+;= zoT(oXw$NGXk-0FxJxzG^66H#_!jRfG=eso^<9hw-8K%6X=Nk4&934EtyuFPuNr%Fv&TIKJyk2J)dtD~MEaLi`2qm_I~gI77NY&H zer!eUE?xMt$rlv8xw5u!+nP32ft`}OaUa)}Vr=t^ocHRAFWPW9B?8ZH9DoC(4a{D!9`joItiCN7xKo#Ul*l6<+mi675rc7C200A5M zJ(EYU#;4L!hjq!A0%8k}(8apC$|Mju^Cf`Va=A%@Osj~b*(iE1#n689n^VZ98evKE#gw?rX3NnjA!s?vC z0qhQv6>hQ_&S7dt#F0 zmJu6pZ=DC1?%uEKDaw%U9_adMy=9t!bsAkEoGz|x+HBeo0{#K~b9#1qyBe!HYNKS~ z1Kq-#c=cLyq6_9tUqDYwiuwuG3erDd0VNVI_v`%KV(@j6nAJJcS&RgoVM=ap) z(YGw)K!Z2=8{Ak_^r|nMOW!8c6+mMXGg44OSY~!J8PWMHMXB9QM>Y>+l=D+I{zJ;= zp=_HhO22RN0dq5B8tXRWb!4JVNO%+aXf-Lel283;uMS<$lT~f!)--G?2L(`!R&mh1 zb(Z0E9u5^FAFZ-Y)fMGrD0EkjoC!TyC^R5gQ&l_0Gk;q#DfFQ zOq`@$2W)>VubNs(YYeR3EH4-4p(9_Y_FFF%zH%^Wi-ea{fsRF2PNySZ0n5uk$K+V9 zukS0b7*9n4 z_sVIfJQ%KUGUPBn{tL3h@|dqO|LYasD}RIOe6$SlCFy_5eyGY6S{{eVPd@v4P|-N4 z^KN0D^iM$w*2#ZKCrD+AXu~Of_N;e$s9xQ`Ox<8!%|un@{LVPuY9%UwVJ{5mKH75d zbD`%GBp?1h;!lB>>Ot?TZ4q7wsGetKb3)aINRyP%c^Q!%B$pk~j3T*N(26ECBT|o@ zQNTpdM{me1DgP`Ojb^xDIOf_2nCQ+r7V;_wAP264S30}@$c^_d$e>xW-oF4pH00eJ z@0=cw43RC@Qt!Si9`8sW{{S0TUCGc#+O-J!gsP_gJMm#hS+Nnh06^JfoMqueSvB9^ zosKPvpz_ntz_@Y~j9hxO5EeG3mJRh|x)8#Z>tbxul+xa7W&PSOe~#&V8$AL$W}L(` zy!X7|Rh#|LII6nnA@|n!F7J5EV|B+7Pyg4=M*DHx^+MI@oLP#9T+(`RZ{zK>9yAcWKrmOjDA+H5iRBtq^MG!)TvKSixa)f; zr07j<#FuY_-oFp{?n`^2C$|W8>Mgl<^6ek7OYuN@!#&_mei`>ET&Y*ggGlTk3N9D^IY zt}k=dPDnP8DEW%<(Z4q#K*8ZCbAmZFR^_N%?V@IOtZ#t|&60Q)x9568V>6@12d!UF zzydUiv(XjTy|X~LAVlzq?4f?!prmi%Ih-%lI3O%GeO@T{+s)RWaG)+l&Vt4LRQN` z{8?t!NCw#AP*vc4C@K0$_)d;lS~xWakUAO6ML=+bzRo#IY`HGz#&jagf>d&%wXpw# zIt-mn-aN;$5a98rasNFB1ia`~ehK~iUvFs7|11hJeK{!5%c0QWZY#uQXE?kEy8JJM2lhHL!)s6>CqzC zBB%pSBOPXdt9aKtW6%=8bOstzelIx;q)ogWZn0>_3k=Hz{S1A4omj zzj=S^ih7UV+pPEbL=nvwo8>$~HI13vDtSGaGP9etP6q}2^QrCtvwFD*`-jf+Wn>X;HOa&0_k z&Cp4f)c4;}f6Co> zd*Mejs<(QC1tyH4%wm!Z*b+-1c|69zrnEsG{xBl-<7M+h>IR;ApYtsDTD(JS{aC!fiNZ}IbF-5Wo zEPb;*{aQd*JYdWh;h$!nZKLHgZKi8DYTc28;QvtUqCTEGhktKQQy5`G^T^9YCi%Nn zv--Fr%0nU-omUvmVd0jB<%ghUNk7c2#*vRmc~zsPXB4x5LQ*IKw72)HBuP#T++g? z6*trTITgN%y{P_^KLP;jBW;&ktXgJ9Yo9R6dr^3&^^HYG!DTn+WaUzdk3K?Xo$QXsw870djb znLH102?US>mZtmW;TJXK^LTeWmu-T5mRkZQz2>;z{x6rON)r60a9qt^&5vC_10%wAfZRL6@3iOVrF2kD|b z@}_f|vsUl?03s50G?`JwjT4-F0lIpz!71=!FVMQ?b!dSNbWXEgrleE7u&&Z+MqRzm z!vGi*q8(w=h>ZJvT>tc4@sAY~rE$%CIFN1G+V@iCkqy|VqpAhci7ME%1azXV7&n^# z=(Yz2F9(8r#Dm>tGQYW`{nOr2s50*FhVygv0hn^l+nRfbcN#^hzJBgRWMeS@E_m>@ zuYqEx@dJLfxWrOr*}H>4%fY^!wRcWx!xB>^BH!WhP>j=&E*tkW;z-(I@Mfz0u)W~L zOD^`!LQ68;tr3pFtYAl?>etd`6j{eR3(&R=u-oFGv@Ah^i(|?v?&;Y1_#`bCPN!_q zBY8|-umMlYRm#Dv^u{%$y2QmOKS7YYL^(sD>g|M#5SKUUiLRG6CYLGV0X-Wwi{OM( zm=(#gUNxo!eEzEA%t8V<{!RUi8HD1x-^O05Q)!e1D5tl$xi0?=;tUP^R z&zWAH<`v4AQh)StOzW|8c74HUIYBQowK?Cydb^1^8p zH}@TjmK>pqaDIBlRJS-I843~6!KvioVR!IyZQpC(!7oEl;!j^fpSw>TYAFPPsn$L} zmk$E>zV_9TcQax#W3Ww{pk!ZoE~l+5SLM%Q7?zFXZNUFXXPT6mqM)E+hr41P*6C_J zSFxlwdgB^iS;Bn7H5|vqy!NI4%MeiM0iC`y7I(>{{ocXsCUGLGh}URj$bi+_hGp`J zwBO7kzkeIQDd#$F6W) zOlRHNPW;d_h#n5ex?sQ0=lqN2KqKL@Vh~w@xq~OJHfG+AjmK``Gy*OwI__B5FHSQ~ zr!zF|mh4m>xh~v7R^$sW5BY4nN|s zU@TS#r@?nwkp;ET$A}7GR~Rph({5SEVo7is{}L+VpcWb!QRR#Dx3^uRvCI1!M}&${ zsD%=yUg;v>MB@mX|2dW>#-jJuc2M+6BYP#Eer4rl40FBccBD8^V+|$h>^Dq(qOlgL zk#cc*tTB(x|3@R?0`RlK{o-`ZF7y|ch5lkX)pnyA)id?OMwVZn`-^4vQ_oa?x74~nEL$l& zGbY=b29V86Q_~I%34Sv!)9=bRW4AJwchZxVxlHR!7h!*B$1x;OVoWX;IxV1@VDm_% zs0=EZ8xKe`0cB?aWp$>yxH)P}QA@r%;`rwk`C z=ei3Ui5J;}{|pogY8-24&WXmEYK)(w1~Oe3b~t2*+$p&TJ3aD$57CWH;oOs z8w+_YGEq!KM!^F(P-6+cN)~p=Co7Y&TOKQ*W)XH+5pu{E+Hjs?Mj4?^^!5T{YD@V0 zN|uE#r{wFjacKdDhS{7;0w6}{(AwdYonAUJGR*)j@<5arls;NSA1x%VCjikoR8ZJc z;JYfJgPEmZL?|#Qatun_EuX&)kh4KX^<$rne&mLde597>*J#17(6Yy%H(;~ZL&X^c zcatGsBqM>#ravkDozi(#lJUEZ$oLKK_zm0mje^P5kr6?ky5ofA&ACCMTN$bIWi&A z#W9cq21QW#7lYzTDfVuojx&?}RqTEvH*n(j>*O|V&>w16F-`xkH`Jz7X697afanM5dkQqQOo@kunB9q(qsymQ7LLr?xLLtFv z^2Ucxx~*~cw@)HhQabJVNFs*~jROmfD@YVi&FDTFLRfy~rwY{+a_$ZS?fS6Jpd*i{paXVwmf)@lV48xxuVGizf+13J}D zk>S`?ZXeIrz*cN+Ny&pt@Xbs##)oa(6X+^ih}DZ(8ARn8%PXu^MEft&e|~JEQ1NNH}V8+KO)WB*~PURnG8%A?v@3r z$-lnVs;@j*U}nmCPGz8wg@8Wsw*oK}u=XLCtLRVkxQacr^di0qif@TOy+Uvk5DZSV zV21*Q-+H>!IV^VB>$NmoR;*7U>BJYht9ll+oaO;J($v;8$t6VhW$6f$zc9k&7-3Cx z-E%~q2{qJ|suywBi#S22z)fO5J1-wNs}h}?P-qp>5bD%@#e~&;>1_1^q;|p@y(#O2 zNj{sB_9DLZK2A8x0h>nt;jJ+VR}XN=NLpa#jYMF35np=|TVE3Mhz5nK7rAJRscB|_ zmYxUB&brw_fb24Z>k~+Zi!dj@L zzLlvZ*wi9UL|7D?SHjF<@olh6&p4e1lz+#}d|Lp&%VWB=)Hcz_=*0!3)oU52r5iJD zFf+cZdt&|KYTr}?)JAsfjPvm971TPpbusWjBA`P^6afA8`a1y_)_48M682~5~BA_0|yVU>*QYq z?wk6f>*O|=X(7{dF5(eVtptQE)YKchjO-D@m)m2lk<7@Rn{}{#c~OVj~HR86>CI5Kyr`JhzrfWl1k# zc1;YABM6F`JdXTql%AB=+%@ddbR|sBSrw$rpVXHoP%AkRPMsv}N)Vh%IyVEnV z9h4t-$#b7!%Uxb561Za~gPbPx2-O`9xhw~`tKRw(N$K|?IC~M{=(_c?0>=nzwou`> z1@`YvntBRiOdEP4V@y#!w*3gBcXa~@gLlG9LbbL}Om`$}^-Qln+?diF<&w=5-b@Ql z=NlV|rsgOE4oNnY|DL{>Y#Yv(hZ)MqxT~W0BcH{4CrAMDB?3qy7_G_On90eWnz>Wx zj2s#lVT4TG^2pG&CTJlObgi*lo{%&kuZT6Fh-}(4=8!y@Ea9H=lvsK?SE4buXl%+f ze8`q4AXo4ypo6_uZ!j@=>V{O|H&TwcmI7@2793?jbjtADC^b&}@G&6b-KhZ66$14* zA{Fqo8b-uSimoNcB&i$ch>`<^iLbc#-WAox7adNTemf8r-ph!O1$7dw)Dt-{KaoC# zi=KzM&a2<_vMdu15=|4i#M{P;9$gBlKTD3B%=-swOa`SS)T*L{R8h4mC?OS8tujhT z8C9!<5>i6dDx!pl$@av3aKjVZ^J?q8Z)+z^bq<8eT^S46{XhzL<>{D9Gn;$c!f51n-C9*D>`4VzgW8|``bD+Z%lL(&skf-DYW&w%wr7CCd6+| z|HRE$Q#wHLljAH|k`RwRNn7og%pCV?+U1}a?O(neLfj%8LXZ&c5|2RbaJf$YX_*iF zq%3Bx zYMI>fsH6eOq8_m2LO`RR39dM=1!T+*GJb*)dSt}+2LWTI6xuM|+7q^e8FOQ5>D-tp zYH0^4^T;ilhG>|{rPF6jOZJ3~33(_?ZFv#vuxa9+um&No7HrG_Hdb}8CY1)v6pjs< z&cKXYi^gJ%n~Q2=j2nxRV~p#Iykm^(0O|6==ce2PLQAGiYO)laG}h6=OG~w$x=Y0w ze-f`A+yNi#zYir76?0-A^P>>?D&uMq84eK{0h9yrtQQ~v7BD_hY$-XK?5Wg;7WtbU zX@!xi>6Nef0z$F4B;1c#?}?XKmJz;_;aM`LKNVqurrXH4k>;RDZ%>K7XTlrh-h3;; zp2C|qWuRc8_lhL%@yr)^n7{nWkB zNU%qvNt&AnW;&0A7zk)$>}%YPI(Gb^j;i;u#~3!uRSj(#f3|%2od`v#Hzcdar}LSK zj8PL9;|af|RKdd^@fbb|9fBR4i#$?0X%7KM4DF{X>GoOi=={j#=cPQN+1nw)9QFod zK1~Ga24I^^Sj~6>*8Q6&J_TU3h@c$V(egnJa$n^bJjagSR`3u1Q?3$w96XQQLtL5~ zxXSyeP1Lg;a8D#lab9=7n1c);<%2ooK7zr~nP-8r!(3C{A;FFDFWE0VFTb;0IA5;c zzht|xzWmO5VR9M5dZD8|`doIWg~cZIrRPFBXpZYuy2_~dW$9Q{Ztr)d4Fz1kKDa3D z^qf)i;*JeRk5hh!r=uPFq=`8j{iJ~@KXFyQxFURKxcEj0VYt8%zSIB4_v>CXpZZ2z z&j@yv?XDUT}Z9$`-dZNdpUtX+Z>jr3VLg+72FaE=*eM0}!zZd1T zkuvZ*<~Ft{^#`_m-&N^v;Gd5l+&?-|V6*pKIeqD7@jDz?*K0KGMH6h}ct`%?BjH)e zSp}>pC3-%%_!KSU%7zub{*H_u#{|WnCKi7$iXI3qQsx11t^+qEiyD1x9Q~}2&tpea zgGNA|!n`wi?FBo)7miZ5?M`U5ktls+2-V8?)%U`)pWq_DkL|oIo%SLnFj#-MvzuH!&eU`Q?g$=ao$Dt3uiGw;AK3}hIJ3A3=XX$zvAj-Fd?OV9gxp=#^T06Zk5RT#_8Aq?1yy!*@nm9^I(Ur-ByiHtU809)8z{8=2%9t9S!BIg!XG`M3rBVsLE~7H)FImwhpn8XXyHh*Rqrs9_V~TtkuZg1DBjOrO=7_6_&de!&boPmO-U zhoV_a;qEItn3|0<{h6=#XnBm_1>byo2)dPP*eEsDKZ0+ZFcP{Lpd;gXooGBy>2|kN z;xIFn(pVEwPM@{ffFc!qe;CMk?wy@o>@<`9Kv zRLRr7_EfL-RKM-(` z@n45*u&WGJn0{H>GfVwa5cjNYe&ZC0gO!Mb6*(T9+IKOhk=Q3dGskAOCq8m0-hU|G zaVVZQB++yzJ)fJF*X+-{WGghSkmvP9Uc$%g)y3TRrGNC8p!zwOYD1CNe#_C;Ol0`D zA&J04HrXp{CY3$?dHu{5LF+>{;j0Wr7!SXyP(c)`S_h2-Bwa03N^-L@J^gDWzS*DH zVTs=%m*2sP--d~Q13)+|*Kq0dSlnpsP)C{R(;zecAb-l%F{UvSG8hRNcfA=u zq53hHYSJ`1LIw>X;|i(|#Z;@gK#UP1lJ-1cYYk&-yv$gJG7-5YPh>7YbGf9&5A?k;{#hL9m(?8;g+-~stx(-&~#hGLDwcDs}GiDt0-1HCZyhkPa2LvwJHr=ew*_Pax zKHJ%j+OZCv_=%Ue>UT6#VKO}1sD5U+wViy*@Q3PSB}(?$`e3~{3wA&#QQ^T%{P1oQblt9gFWx5H{|N&0L_yj8T=Mh@^9 zxr+8$B6*ed^ssBhOb|n#`GTV$Qm8x6OSe2PqWMw5RfAf+KP66K@}s$VEBTMT@js&9zY~-YDUVd9Hjx-x3zz5>nriYoC$>pOTfM2RwBI zZ-bhO7&yWl+IUE?r3wf2;tRA|SE;a#Oj%7#IhIeSHuGwZ=BLBwxjae)b*2Gk5xrP0L3d*dq^8_Dm z1ZL;0JWO^OOcyJdEGU>r6mZv(n`AHlsx=6JSv$3w2R4lx`|Oo}8?tF4RTVG_ByHt- zrlljX(4%;d5ZUb*>H*%{lMm`AK+N`Bka1^u5T`3C>bT}Sh}BiA@u2W@kHEb>*&z9J z&*OV`vcVtm5S6P|gTe8s9$rGL{$Sly5A!{{z;57B55qm;>8|*pOLAN$@view55+x# zf0yRaB|h%#9R#rF@+PkN9YlD~h3by|$?n#HOHAA>(XRMV&($6K|r`-i!w*q&atLjE9fVfGYXk{EsIdX9rT)UR4fH>W=Q|s&R z`j#$IRDsPuv|e`CuG-HgYz3aK+BZKi{l->y((bjH##a00kIpSyfvthfbxp1IO&^^b zwgSron|+#EZ5rsn!yip{1zrdJt?&zR;_|~~r{|;x-=hO#7hC*w=v1-FYcDFDnGZN4 zSy5ix(#!XA+H)#aZzfsPSz{NB8ZXhZ+p%M(&G&P?k~FOlPVlq4k~FDMnC=vU*$XXZ z40ZCu5KZXE1WCh+wW&@{*t)=?^`TR`I&H3>!k*Jx_1PRhwkt`Uit%_qsXeD8b<-R_ z@+(QLiXW4mtOQBTri?X1{l?XXdh$jQdy>FYXB$bfO2;_$pm!{$@BH{GOB~4?>eNw^ z>Zleql;i`EfSgE?9p8{0C&&&wvf~iy6t?O!Y*qBbz!kw0RUdz2E?jP7+@gq?u*;5qs1q0y#k9_DgJ8F@XSZQzw^?ViL9p4_v)Qn-Ne5*V36IZa;CwVL zJIbI=W*A8kw{>P|)AXXku~{9Q58q`+7Su`K+bOTG7VfBrX?f~~V3d|fD=frl~5!(St3!rRDmXI*QFfCKf?i9o=+d#dc0@`mAK;DdFUQf79}a;u^<=`_z4gg`Yp~yY{A5^{5(}cJ8NbH-|Fyn~6k)`SzrX)GUy+ zoQn?uJ!ZuBX9V_rUU~#9CC3cSTy+>URL&-oNHSHhjguY1Y+%5gj1UQ#wPf8;%3u+9(zQjQj5@Mm5wIwayH?!77-^uVdIS{@jUZfJF8}StBU(-VD3u^{eHb?Q5h}F z#b`zt8^?+rsr_4!Ln_E21>}$ncA)D;vxmA;cLcCawGrK~J<+XTq(*&n9J z^cF?}`tEM+@jF$$^<@S3IzzvyZx6*X5~PvIEi?rDrG)w$w&`tISEfBiU38^Hty(LE z)>IkDf{zqc!{co?Db;e)>oOna`rvoqpej`o%H~h&U5378N1^z3_=8T#ocd&4yDue( zxC0Pf8A%~6oy}cjZ@J!a(Ax`z|u1nlYe*{X7Vj-b;vtA)(e`9=pSR5-)20p8UR*Od@g zQb&MQ5bF%!DP0}!bamWyb<~cI6%g<0hlQ28Ied^~c5#?`c;R?s1!p+4b7RHByV{}C zV#K8jz+KnIS~>yDD0eFzW)rI%Ixki@Tvs=A0eGhiz^X0)&yJ1Nn>AKLzm`soRqnYG zdai=5E8KNeUKe?;$agiqD;wU`?OloQ%J!~m?~3-WfZkON?%^E!81HmpEb78oak;Ki=)72=(0TEc4vcp?Fcx)S ztfl*6b;5OJLf6Hrgm*>4d%|S3m6lbO>uQASN`z0V5Z)D*cXcI^chy5;>`R~cMa7))0etSq>$D!8sF zxUQ(Ys|ntf1n+7}=fyjn7oX61vGcAXn6!f6T|F@AQP;&vN~gujfi8=cPKU**k8X=q z1Kkx*>9}~O$aTe9t=^UDU8Sxo)OB^bu1r|0 zO7DtvUF{VrIyx(!T@|ZQC&fzCQL(DiRW~i=(M6%6qnl#ZAjLbK6q7nBR&=_W(^V+1 z0%aZ5C)?gGinVl5s66?k>SP@iC+ny#u#PIuI;u_9QE9S{1*WP@Dlk=1V5*wH6_d`1 zDczfQx;Hz}y_t?~3DqU*s4Q7W0_&(Mc~z8jN~q}Qo_La}B(I8Os*1o=1<6$PhzbIo z6RHPX0hJ?N4ys1F9GZBiYhnnxCRB{P$^jh{cij@IMW!l6rm94yDnyh(NuhJ75Nb@;8hEFss_2L z1SvulNJoSUkgMvCt4aZ{^5d%N4bRI2{CI3;+-yt zyDo^ebU^5F?Z9bpjb!sgvyDhs);VAV&ao(i4LbyVjWcy9SdC=T^bbb67#CUyecrS z>dUM0(ut}ruZqj7O5s(ZU{jr-GT~Jvyo!WZZF!ZJS7mwC2pvr&!mC1fs<6E3$~~%{ zdsIAEm6fRqgsJL-SLMO0>flvz@Ty#|+Tc}Ho|doD;8ht+RTy+Ns4ln=l?AV=;8ju3 zg(@oDk7|NfCBdtja#ih2RS~=jf>%B8Dk-mW;8i-WYT#8-Ud6zxa$ePX73)>2SE*i= zdKKzbr>V;Hs?w`SQ`JsYqp30qfsx>t&j?n^PC zqan3`&Pxr_xk(Aq#ZrNEv1uJp3Xp5+k84T+*OVXAR3BXpsRX$+ z;7u9eO%>oxr)lmU^QD zQ*I0=)y8mA0(esa$fA>_*tlmzCAG$@#;4Nw6aYGK+Hnl_`nryWp%fa!S=4!{Gww;5 zF`QHxZ;FgJHO89~R?z)$0k)orzSt&_?vPP;WJAs621T)1{F(9xBPPED0^kIy@uPb%nBxNE9> zQ{*)@UQ;$)Q@3kMyryi!N!6|?+M5EJrfQg`!k=j;nx@9Q=)6CUQ^vQMX#xOO?^d$az%l1 zMSb$3Jh`GexuQ6^qAqYn#krz3xh_Fx2Bpa-lm%W?CNHW2FNy*$Y633`lNWW#i?ZZJ zN#I3Q@}ektQIotVNnTVWFDe2r3X&J~$cuu&i+aF|a^yuZ@}eB@q852kioB>qUKAoP zssS(RkVhF($UP`R?iqv5%1Mr{%mQB2ATLUg7Zu2h0^~*g@uJe8`ncM1IuH^tMIm5{ z;^RsNwa2T+Tu=wNr-NZtx58RF6}pa0ebbFuODE=p2`Nmf3xhJiI;a9%QF%NHkMFwN zaYfm2MG@eN8o(7*#}!4#byXzq9LWzH32KgYP;yW^Ixz2aU?z27;<$ES-s!$P>b{`h zxRUy&^MZQgMY-{!+UUBV1kiCo1>lNeBi7#uRmi8K^R*C^Dv~ zF)B)oD=LgD3XCi23oovyE?yKDs4b=hC@ta#Ebf2I4B>6gX-amf^$Xj@S=8jQ98V+ z99|R-FY1OD_2xwly{O!a5_(ZVFADdf$`?hxsPRSF@S<)nN_sJDDOqh@S@zHWOz|+UQ`S(3WgWO=0&~mqSm}9 z7haSal+P5E=89_JS{Xs1c~NIx6bmoP%!?}XqE;1qQJbUFE7f= z6xC&l;xa|0fI?x4I$>JlpiG#eN|>TZn4-2!QCg;`EK}476eYqG6~YvSWs17;qI#|< zo+--86a@n6gK0+rQ3IU`C=cF&iS7hc2UipaFKUAqRpmu#@S-w!Q5d|a3tp53FRFqU zML}l*iVA9iD@uYXC`V8cbR&pnCjttBE(FvAod_r?od`3~mGA~5H&YVc=}34x5>O6o zd8gYlsoSFSq8fNnQC<`S*UjXL%IUPAT2~b7iduD9P^v9B2UMyX0fl-|r}uP1Cj!d! zmYKHcLO_)!1KkxAsl$TWsVRml^$FDII;HD*r|VhO^{l1iL5ZdeRl5&R-E@J3Le~L` zzNq=4eovu1PoVtilRtIx6DLmI(*-&!r#Kx5r%l#5X)+f%Szs=wOu7tC73eHDQDB`D z59^#T`O_tTvSfOaz;r{ok}8>=D0xqlyeCP%YyBybKSkgK$@KKd^aO$F=>gM|BY$dS zdUC*Mk@uv?36XcyfcIp`sgP?W5)Z=j6vdr#|jEeR9tU0oM~B*V7)?5d*V(rla%Vq{m!N2bjxUH%|t5o(k|h<+166 zN9Vz`<8(&{Cp+BW;GK?xMI8rU(z)L0T#Gu_i2&Er0Nzs_?}?7n9CJCz(P40k<2}Lg zp5Ev-IJq%BwJ|*jV0sF`^u)&Ww8r$L#`KiN^aOx6xz?y;wCCwK%Q2;p8Ihq8OcMZu z5CE`{0dY7Yl8a^=uLBf-PG~+MSBG*EWC|fOBLDyZ0007@AOPUhv;}@tn~43J%v#np znL$O*m_GHsK`a-Z9r(WXCy%dv*%F?1yEs_ixP+Cl_dus^j^2hv_y*DE^ukxMmgc>J?nf4=yOjqHl(FYf@b)ERj8J0z! zSj_vX|Da%6ec=ru=GoA2y(Yd+mzs#d4E}JoK@;{@>OV~pZCzV7|7H^C8KAfst&9H| zpdUUQ^!)b*IsdohCo6m(Q*Kl*&ixCsmETjA*GqQj^A=~?oO}zHcj-DB=O)&V=HUW| zLC9@%ZpG87pKGUyT?lk@c}n`)p;f$IOpja`kz3?%j@M7aM*P+Lzl!km;{FMpKYs4P zn?GE6KVZYC!k~F+GeV02_gBJK2)?t5(}_LvFB;nn{2 z_|cC4Wovg3E?&l;1sR2#0Qvt$5MH(Nx%9xj3pzvo?$`!HWo{^O>t@JXYx`dZ(l_Qa z{lzalu5EU4oRq?xwe~TF%%k?}7S1@%ek*RmzDFRxEHoi zGkv!5QJDVkxlW)GgmofL9w2JFcv!(Hlk`Ny@JYinhk<0BqUN8nElCwV*F49vAx$Bv`lhn-=+otfMo{aM%1W(&Hm zP`Oo7+~~OWn(;G@xr?_MN})gG+->^oMC9JC()G8vZ>#(O5x<)Mv%KEF(^v4jb`RIg z&-_5IVR;oir2CkI&yPH3Y%ay$;jfOL(Drmd(a2!Oon{YJsmGm>gg09(Gn>8z&a0jA z9gKN?+dBiE`w|e@=O=borDmGtg#x#&pQ(Is^VHuXFTYU6^+V9|)IAYv!umtFX#Xq2 zvpTjF58-~TuLp)*Un;_U-J5JCj{rU{>!s}laODt>x65PKv1Xrl_8sO|GzT_lK=ELN zdzYxa0jIp>omyp1h8T)0p0lr4giGG%XPhl znE~=Z!h;Bd{&KJdu3MmGs8M4J{4BbIsW!9Eo4_0~!{wEWavjSA8rRSQ2 z`f<4NIb`$3JW+m}KEj;){~o)%2oIf3_`vr<{1D3@D`MvVafR>} zRd{0oCc1L3QNu(J8zllWU9oa9Y>P!t+n@?3rhrw!av4qA1KT5g(n>EtwsDU8m_+W! z+=)3|yDrdFU;fUae}Ae!XlyS3fqz`)AGxoy%y8wD-cU_`;8Lz$TqMT#m8y2`YH{5a zgewVOr$wUsu`6uvTf%gL&vUfp)>6gIzd@&;_SEE@%DJX^L4otL=SI^za{Btk-M=un zvWNS0F-(i^UUV6E?v=u=XKnN^p`QZdzwE=Nvfm4&sDV_g;cuCgJg^NYE6m&#FT5V{ z;?LI}vZJFou8##}-0xGedQFx8E1LN7i077CXsY+`s-J8&JZYwL7DvKY>irKAdThA& z;ps6ZBf+QC0H^yEr%vl_`HAbHcfr`F{SlwlW1qPCSbzGr(!cKb_)h3sZuJT-7T-gN zj85=Bl__HQ3-o6S_VU9YuJi6r|4G(b+h48jyZYZu{S*2RAI-bQcD;M?cK3{r%O)NH z{mE?T$1t(^lN(Qiz4WaHHRfs=XOwL5G-aOt*C z@b{mRYk~K}<4KVE8%AbYc+21R6ilrGT`(^1tmy@|rSEz4|J%?n3Szd(#?xYaFdrSs zvn9&oRm){uHOqb%#~w6!pD~+V2fH=S--yqw9sP!w`tidzLJR_K&Dp=rXV=(}uR6V6Q@Mj7y?MrJVN2|_;pM#}=tQFp z^jb51qz;?*-i(3A?g96hnQjkh?3px+ukd9z3Lk&J?$}_~CV=F*&lgepLPfG#ozDxQ zr*w!8^A_>LKJe4`Xv+Xmvn9WxA{r!r0J(t93s07260lTH7`Grr@oVL9B}S6}SGo z@l=*4V}kz1H#K{*rB(H@-%9ItrM;{DcM?6LaTJZ?YVm~&hS{sePX|UO!14MmSM|ZX zDD4zt=t`wN6blvUoq?=e|5SCCp!?PNlcC1v0*4&K(oYhSmAe8GG0+Ta`};Vg?^o(8k`D<7@;zg8r9UIO{%HFw z{e7pC0bdVPIU|oC3@R`C?^g(Z)UkSC-$ygtSdifZVV`ggVMkx$zcQ^@WTwsdc)Bzz z*mAnr;A@`|EAqXcrET+8aJ{9xU`spgi-(+&gYiy8Ycu1^$6pt9ymv zv$qUN;y*+hwLc@ua3qt_r2=?>bE{)KWmv1B?UGNb;>^9THFz-pkA@ZSZv!Lm(WGCM zEp_B#q=`7_%mybDT@nHIh0Mdu0U?h{^DIW5$8AjX5o8XP{XNsE;~U(r{+S>7z5k?6 z9U3AusOjUG9Uj3|sdHuEJ2){9q55*wGn-BR{tjhnEwacXRPW;9fO*aSgW8S#Y}faY z{l5!ox&LR_a^vl&scRqb8g5Pe2QQW|oJyvRinf&+1dVwkP&P zfWFM5-F!n%{p-G;mca}TKpZ6eknK)Ehf@5lR~0i2^cp(?H@E3ZD_~n)M$54HPfV#C zxAeb}PwvOA3+`Cj^0#mVnChHhPpNQwa;_bCK;W`9X(lealk#^Z)cY|!z-rwj0o?mx zK!*>n6o~UXU`u+pVnDx}&sG}lA@(n}v&jsX+_L8r)jE0fn6r$~a}nuy_h!@k(hvWr zbD+u*zZ?16>=c*mR}~$&Iyc6Rc`j@)x^IkWf$k5$YN|}fYs0xyOJAKio=+kV{SpL+ z;Lh=H2P2z_{rgt!6p=oqb57{LZha1S@U9iPWv>Z_*@I~;`)a^02W&rcMu&my>20JM zDQ$#-Tc+k59!=X4k?hPF!dr7_7ez}G{zFD`_|Rp_&+1HilA<>v_+x<{7%|RF9di#^ zI3QZ+Ogba1Z~rCN`ug%JP+MtQbSd;JF~4X40jqho-uj>euio>urGBxg;Bh@0upT^o z9oFs??hZyeK-JkD|G(l2VE{)cZ=4D{@61R$`eD41_o^g5Ojh-FqJt6_bWZW@pdS(r zzTH@Y-`zjOV?B8vhWV@L*I`b7CdoW8xDWJ1eg$JO7IJ`)E9y0XC&d=^5k#_ z#25HE-YyyA$|Jb`|HMHY$9F#K0@WD`=R@43I)=w@dpz1`^AEu>h<*lwcM>w-G8skpJ9|sQeb&L$KSn1R2W1xAv887AT8VTgE z*^e=1jO5{@O1Wru&cxt+DbbnS<~VQ2Zl|{7GrZu>o+%2B#;@l?$GHuJehJohRALP$QXcJ6ji?2<3;rp^w2FzS=ym6@t>)@&Il;ynl9sX)t0wO7Uc z*O~A4DfC7}&vdl}X3vWMDByG9Z`|K2^UpMd{Fn8AUGYzzXGNRyPF8B>HJ#TgB&K_k9JM_0&veo-G2;%TAQl-`CXS2 zZ{2(=>i6#2{l|EJ)_vx4K(&Qsd*~kw9Cx(kWgI#gk-$mnjC^X|^-RQq^kuzt1?gJ? zkH?!v?y3EuLELz6PEgXLJ1E=we`>iz#u{?4MUe@)@@6^0tl^{d>2r11wD4^4^WSkV zcxGB!G!*s(a}O__*l8NO8c2(S17gMai7zsj=ZexBcBEd5oD;*q49L57M=-Mhg!PqV zE)cHoavMyBIoZY^BsUHRyBk~Qa5pBU2Vu|Dd+p;2jApq@aWxcv@n39q z9$&$Px=k6rHFuIu49IfiUcTYezP`(gL$adT#I_q_`+4b^9mD5A%bqJYCn+3L$X&P1 zIEG{jH-d6glMiA)A5iCflX(hh*|_|MtIF-)&tuIQ<(JW&N7sez{EX-?B8+Vq#_Ci>kLuIi6^X-#iHv2s| zbD=%E_D#gaU|y|TAKwv6uY;aX!Z-qD`m%dtD7Z^ZDvbv^|I;07`tSDsC4U(nJmPak zi$nnHn?H#80ANoflS1a}JJ}3R7P}?}rDulbOpG@b%sb}Z#c%>=(>OXDBZ1t%1&i=0 zN$=n@;v(Q&^5@@(ZkjdM@ekOmZa=q}AJ0n$3YHk~o3^+3rMKiden;U?#rR40*<_9n zOVp5dd-5WG9dL#F(es7`8$RBbyORe@f`E&g;O5cDzbnY~UN>>z$pmV}Pz$jCg@XRT zyZ*M}R?i65?WiItd^FN8zekj=XV*23)R#76MDZ{|Wzx`ksQ3GfpyWQiFL#dYgSRl> zf%LG|TLOmkCA{I9gND|)R-3I}$cHeyxO*>$l@{=4_A!5R<2(dgNf)?nDW#FWIaBs4 zW<>0r3Sw5UmX__?elq(_7YaX0dlw%!;uoCW5krM3g3p#lBR&U!7dpdth=;t`P8Z%qJ7R{GI>lC`$84WDWkMm~T@P--*&heQ9Z@jKo zB8B$}c!NXfYY=(kQyG6kKbm!OUf}6K-&nw$q;*{um%wJ}jGXd->Jb>f8G&a#)=Fwd z!Xuo{O;F1+c%#$_fTuQrxg*%O4mMbi)E-;U(kICqu z@_FCECg_AXQT-dS5lZygXse1CdL;gQ?#as-cczUoC*(#@FIqoZ%EqeCj-%+i6Jw?R zm?y0d=0(F@9L^zTT$f>gv>XkR-;|)!kw@i>N_pgA^fTKG;{{<|p0{n&fJq8p9RC`x z2l&4}pq$XZ)agNfXW+hnuWr$g=1`KHcK^xG za4y|#4eF7bP8#khN3@D$IyKwepCR{XBf z+o8B_<}da#4pW|3frzr;|dc2Z%6GV3ovx5J&)o6BkQovaEg64VNEUx7# zJSb56#8)5d^D@~RrK8yL3%F8m=^t|7PVcSQ8}FgxOK@AOcj0fJlEMAyh_~u5_SG?p z>`G_fa9%4L#@+CeC}uWR4@tdK8ZOOA&j9?#k5e5hW%0o}f3XocIekYOT*HZfN+tis zfKSH#pZ4p$XG8%$ld=6a6}?yCZ;GFp0PjRy%l0r7KA9+MOSzY^r>?r~v*~Js)&{EY zHoM%4biuY^!8myJ2l^wec#X_2E4kAG`NIuBctU59#Sa5njL(~1_uGoONF}=oqtAKa z_-j$eiE|?zhe?TO`|dMohAfzAW48NY=deFfoxZ;Nu0ZIf;Vp&tYF{%1=)M5Ib%c!~ zM$!qssYu_ln?&>P}v- z-5w(Bb-+(evylcO?+3f21P>x&p4 zz&7zApY+I!5aUYySTMuk4a+{X-oUHfGk2cMmfu(s>4|IL<#*;jr@?(otKU2_GlJky zTNeF--V9N@A&he}m02f)kz3tiFBeTc4^_P8~@v3a3F z<{+30zV`~Q-2avSAU`$>S3i(`Hw?f2Y;?{PdNQWhljRZ7ui$=yyaNWd5LhSWI_&22 zuVdZQB9MAMoA-v~Fhj|^&fCpDO76PEKBfyc7$6~M6wo7-S)lzjciII_C^k6i;+DAo z4%FV7A0TZ6jOUhArbee&A3~Ww$t7PjmWzpfsh&JN{t@N{6YR#Al|JPL7vt3{`q`13 z7wEL1e-g~RYrpA10qvi5h6nTJ;(7`a@9)?T4Qx>PSmnDh5?#HU#_7Wif9jpP@5o19 zwmty-3tlgC{sY@59;YPp{K=c|65+ z=J55`ay6bE4{}Ihmby2m`_*UPwfAN)T)?&cNQn-xiOu@X%nKI1aF2oi{9d2Gbh&5a zO=v>!y~n@NWA&fO_qXD4jW@mj@St_6*Wz&TkR&T5E>NIfdZ%9-%hLe9sBdx!CjxDv zSr!bP-nJ(=C&N8YgxE_S)+<}K0>#Zqf(ayLvWxFqM{{|m;c&?45L`zXuQ8yAuPS!r z-=p_DdH7AQ!KZ!ntT4s+;ufAf9_8R8rxmzA0sIRV>w)Zd_m_O^ReIUlCbN&a6m%V3X6xKkmk^Q>Bw^yrs?yx$?YtTKT#y(Qd;roNk z8{!^R;v&0)_Ags1ZmEvD^lU`_e%KP(*iIK{&!oBcC%M5~=X>#qi<0lycj7IO^jZmU z9Sq!4shhSUjC$}@^#gpKt$o)^8S%c57#5S~vdD&H+$+&#MskXE$pQs{>i*ly6Tr z1VC`*zH7F8MjtADIQoaf9F@i;i~k&JMHZob(<)E`@;>!~O(RqJ=SHAMUna_*v#Wq+r_C_KfRoKuA{`t%(O1M8Deue_ymHA*r zFc5td%{VAO#4{x13-aU?t{&w^5`n~W{kKS(ueH7m=I*sB$N8rYwHstrN*Ub+Og zWjx58h8%J8ULIQh%QLh8BXI6Km>B>vB(n0a|9>;CS4e062(H(Mq-Sr|ltb^ngFX|Q zd%snN=WZ_f>jBeQs$`uc$^A3?uYs<&FC9$yK9Sx^Df*9T<{bAV?*DNc;FDk(^FubB zph<1wc;0~)uHZ;Mj;52IEd(h&Vvl9y$D&!hbUc+9v`YN#y{OFJ6_Y*SH!hb7;l)v~ zRl$&Rxfo!fe$o0hiuJhuo77CSc2ce-mvXIz^^nuJcud7;Q*}3SP&+v^7qCB+QCbV& zqfdHCB~Lc`AZ`aI;q}`31OUHZnjM7Z-vQUn_1*U6fym$HGPT?x12dHxsS}w;`DQDu zE(8yWO5=vmE&njq+C3yRVarN?Vg0c_yh#b;&2|^j$UO!dAZE+Y`cTa0_bW-ZN$u96 zOEXylVc0t-cJhkXhI<`EB9oocyQ{hF zJ#Ytd0IS(ME8$gjm`18JLea^3tsY?)n}k1yw+$-jEQEhiyV&Tp{>aN?7^eK8%E3ye zb%Ghje8TopJ!_4an$}R3(S4RR+7V;hz)EcYXXnoe>;Qab=lj-3jLne_-9*Sr9j6sR zjsYi;6NoUDB7GP7oLJ)0IHYghf?nxe1GOQ58BdgSgVB}sSKkKM0K z6xN!8A!hl1r3HKT*R99$@|)R+hDrh3w|K}kB&}s zwX3vKat{d~GPupE_u?8z4BAbUgO}^6Sz^;W^K)%0K0H9;t#kiz{RyV28DsX%F&w*w zs`S{e?m;&W!EmRe5Du;JFj?PaRw_8~=dnErlx_|9-(U{(m0ymY@@ai{ITYjI9O7Dz z#8KTFXnnv&9qfC6mIbGAlQv?OU(PJhKOxQ(+E#sV3(|ni@o1p^W;%H3YkMdx0M)-C zAJ3Y?qS{!s2(rOme=9#a!K$RnAy&Ki;Ny$GL2ulWNcn}U9Hn4e!rEg3#p2O4>V=;m z%!zJSDMqe?10IRn1ve;!fc0hP__r1RYtZOkG(aQw-C^ zsco)qR0^y!JJ^%tV`K^jO;Wh02$f_QvRK8iAAJ2@ms${$oz`@zt8tg&8w}(HDaZ3oO_O?2;EmjG#|#xcYw( z7-KYAl`S#Ht8cMpq!L!2Eos52YDir|3*mdHkF~6SX1Q$Kh(VapZBvHSH?W>sBV<{4 z>y;`8YCiEEy_0tnFqH$%_}ByxY}IBaG)4TTdokXTAY*(qB=hq||KiRk0x!HOBEANL zF)vqbQte82g}@|*z&qZUgE6X;%p5GbEFOU&_3BPZi!3k^vBC=!#E$YRM+IDm;p*)B zaS7I}D)@5Vz?ZiL=4)x zKT@l9)@9C6?v)eE-17a+^3GcWMZeZLop^3=@`|14=<5`z>%-gO*P1(LXn zqjhJ*+~otP3Ig8U1Nw_HCWuiy)8`3HOnP7=$YwgYjD#-uD6q|&pCnif7ZLeiY%Eba=vq$hJ2C@N{=F5Vc=eYOsH z(jM8s@ya_?2S@Q?u4$r}1nN2~9^36_+!K{e&QwGB!mb_(i;@I~h9UK=%=Oh70~tAt z-(0EQpaP9nt7^9O3w^h>J#nNtLoUj$CCC%}{DZrTN`+ zlo6t?b>fLB6C$99s1ygc+Pn7^8{R2!@TuvjWpXg@L$7 zD09BrmfMNUFN%{Ejmco>I2RR3eUVO!Tos}PYJkw%ReqT}%1Sf+G=7xg03iG!+#~>I zBsX)cUs;scpPRmJ))PyLZL*?L2JA@0WF{m+|ISFS!iDPKNP`q)?i#BP4@XM@vtTR2 zwJ_e0cz!LMm4OGzOus>kMGPBc1}ZnOO&#eDYeoEPOD4715A1YmG+;-3jb!A|)k>uP z>50w0Mo(T!3j@#;qOa2V7)B?F!g$%tB5`f zH!dl@)6JDR{Yd)#tc7I2voI)n2sFf7Abn)6 z=Y2{K*{D7w`=8L8WL5(;+RTu6DXBApOz``nXCA^H7K~DLf&b!iHUKMZ;Vdzu6qPk@ zoa+^M&NDWOixxD3X>SrB2E~K#5jDX$R2-k6>}$d(t1uYLq@!M4#9s;+(<~I`ad~wI zP=loBljq-2Ns-LwIBaT^vl!rjgvebE@s&kr)u^km+(ZUBGC|7gAerJRZETSppM=#% z0Ie?(wh1pCz1#H~7{PT)c8RX6fig$#hwnh$d8|U>~MYEe>CNBV7TOcGGDCODL4VGzaeV!o-OL-qaV)7Z=UfmDI(| zc{6)Ba=2lrd)z7oCe+Slv%^qmh+gb>Y1gYRJx5T~U!<{!{O6*70k&6kTvHElYU>1I zzEj~kR`wmli+)+2Vpi{FD_!=1CsSlDW(%G{&6^XYR~`2o;1byld1*1buMR=oZOfnD zD$eqbb?MWYxs$n09X^RUI7Mx&rMB-+c9bk4-zL8lyThHv3nb5~ei?yvJlgR^swcyG z%Ndm}?;6@7SfN5qlM@B%Xi~dFbaLz)flT2RgbR5LgpL&Fog@Q}0|R?+N+JHiJ=x-I z3rQC-2gr<2O<`LUYzvX+PgDFBI%-|qm`@F^_vuM8Th>jIF0_t+gN$>QoK6`rDEfa@Oq@9!x5g@v{UeRiFtE060CsHII(&+xKe9E>Cw);wiSgh7E90|;` z{>_5Xk2G^y090u*Qh*xsPQ8GbEdchhE8L8=%1mb}RFb=Z9YkIsxWq=1@`Dd_C zJVz+77%OZjjqFmQLzF4vLm1}3yG_r~GZ0-}lUnN^v_jE215-ZQA&`WdU9roq-8?`e zGLR-y@qZPM6)}wY1?%&q;W|Ogu}`xuX4nY-2MK2fTZTcU!HnWp5>GJ) z$Z;Asc5g!{?&dK!l-8Me(gF z0y3ingz9HGMU2%;u@wlcHz*3Iq}Is;ik2BabEcB2Gc(3j8Sq(*q5ZdaR`%sQaDWp&=g{HG8dpKcbnot0_vHo5x*{LZ!@I8 zvq2;Tqr$S7lBlqzz~&+D30ma@V$$DtelghdMJUnzXNq|^9P~2-1UK}2uQ6cIWO!Gx zHP>j#?g_*&_>Bg{}|UL2ZWkzM9dIeVzx(f2ft!-V{dn2T^LeiTXq9X z;74JH;SxiTglH~jSA3&~3yUR;e7=aV@hliRVu{Hgr0rpOPCSKrL?;eq7?dvbbnxLf zs%t7#^zva2O%EJ>TMoL98ch^9fYy;%K3&L`zU239N+9qiQHqS+7&oPvp>o=~hc@q! zfNR0k<8L{Lu#L0^y}wN!L{zgvv1uK(m#3&ISV`|Oj0xIbm$Bpt(t&Q-XQX;%x#Y>) z;VEL-01?)lR8CHr%Nm+ZAsj@vmNR($2onGW%{lyVJ8Qmr#Oc*4d@U5XaWf0v$J|a# z>w2-5+I|sx9^Zb~07B|Qb=P@FLw|H0_>P@puGtFz7FS8Jk_+*7irwu-^YuWz)*6_- zS_*Tf{{SotvT0q*d8}6L`Qx1mN5dW?R{q_j#olBk=PO)3i6d^AwdmaTw0xgKsBre% z))%|M29jb`oDC)2L_lFLv57*RMq#kRBP;G_#V7mikD}m*;xENLSq88(@->dG9Cfvy zI)9SvAHDgOQy_`*6!*)5B)}NX=rj(|+%?#qnhGU?Mj;TD{GSg2d?>r3JTa1@%y$z7 z#p;1sQQ(&%8kzK_KC*}H8y2h)6Mm4ASs>wm!}Vem$pG^GJozCdzA49@2yj~OS0B@=qx~6W(Z=Ck`@&4 zmMPCMl_cO$oIL12s0VZVYBfBu948;0SqZC|UWQyhu=Emh9keqVir%ilry< zIgj`ftQa9Q{aHuB4Le~B(WWO|4*hf$^|oGd?9y zuC7jz!^LQbUO~39c)3k65okNG5{sxA&xM*#M{lfM zg+$E=5rLCv&p$SUINvD=ZhYxif4Q@_zrizw>k=exRKD3e%$zAuB%ie+~%kwUAzEBn-6O{$-~4@RtRr;>a&H;7*^ zf0%NxcS;+!Dx!H$YNmFV?IJcZc6N%ji$3a?apmH4RO}9W+rD^BMQT6M9Wd_fpXa~UiQpgsZ8&c?tGjhRh3%=4ON&{E? z^@-!N^xtJ&2@92X)x|7nG`mNhX(0Si;qO-u9h5;8IyuB+pRcf z??UK+TmT{mUEG03c#?!4qQ&~91pjrw6O>3&cwQi7e@)Gz_sr*&hV>Fpz=db(U>u?V zzTL&2tX+~es;Y=M)M<(NmNT%QC@|?7cxtgiPXJH%DSd6DF%^R&oeQ0V08K!$zg!)r zgF9Bab-Iz(p_#yl1mDDDOzPLvo;rs4-w(6C=1YJAjlF#ZqDjh2GzdT$;R~g>_sar= zkt3zp#sfO$LF8=cXmE|5$fnu zAGY+Vo{emk>eeYF&)>ic(e_)=xF^2lb(=L0Dv@WF5ndWJM zHxAHM*7zw4BY7GI7gg2jh1&PooQ00!qJc&&pwFTQ?3l@WE%;Ydth><3=U!69Jn85|Mw)V&CmP{igd+gZR~41Im+StZ>D0Y8?J49OWw_84{~Z zh60O+6@&2U!mgQeZcuTXk;!v*drKm2a%h+K*jm^iJoSHFi68)EE$#a3&?aO^z#LY2`rjNJ<3_xMl{0%lSUn{Ec6+n55r$g2rEWDPZT?j5 z1xHKq(Z5rP7$&etKB|TyWCY;hsjX_Sg@36lALp#4+Z1o_OkAIFpabQA1am+f7JTr~ zP_`9dT^TWyv1hzhDM3y_$Q+i1S3d4TV4{W+OV=vTowTaI`38Uv3kP&z@f7M#{2@#w zK>wal;m$XrA+S_wy3Y3n6jg?c*Umd6>4UY>Yye#G_0Tf!k3D^F77%I%r{v%tAOQfl ztj$mW<1(eQ(t-CeoqHlUpOW!qU~jZk2!8pQa8G~hm|f}||1nZpS-M^=IVOu?KqMOS ztEw^i(Xmd%5e62;k`vU6|3p1Mkp3D^!%k`FM3k+Z)lB|nA8#)PA*XP6!&)z&!nI80 zGeHUz%IwCQ-BC(Kg{%8$od;Qp+`SZAi>mM?=7O&zRqxaL3ZE;mOW33naKAQ3Ck`41 z!2n#Guqz8TXi^VzG!D<_w7F1stdT4VwK+G7!oUdSE!<2!`izP1@M54lll=k>#t7zx z9xD-`mM8v1Ocio;njuNgXg+;x7o26s)o@7!{VAkjfMUed^gw&J0T2?Py#t{pxN!|< zmOgaWM`1Nno5)L{>PW8YDjtSV&{W)Yx8c)99U>ck?Lh8x_KnhmPLH;iZ7;%Zb|Hw| z1-}BrF)RrI=z*&ho{nk8b##Sp7!9f}>_2LOLJ-4}?Lh2Bsjrl%IaY)~%)ysk9-+n6 z1^2I{@w89*ifo$hNfYmfkGTWe+hys|>a(-SINST7lxVt@jmR+}2s~PkC!)RS{z&(8 z#&PT>P!s(mwJ9CI@iR}gHD_r*t}^-rK|ZP>-xrsnP(-vPsyIql(Q(!TvR0Z|t%J@b zKK;u-ru+#CntZa$&V77s9H!sln$V>l&`#vdo?R267 zj|jm91$$TN9?S0_cX^q0XSlie1cQn$bsfP?0&8koF$;TL$Q^_c8V&&1_i9$S5YCLC zHbc8dvI`5Hn0e9%AMYfdCO8q90AIIswtuM_poyD8;f6ASAX5CJb(L{ z#GOCOcw2-*b8~>31ca^=CNM{v+%#4S=oytUVuOF?oz$4TNHBC~og3oQDENg+?hg${ zYPU;o6PDZuwQ4kbwMJ*$MV3da1})BLGQo}uwT!Zdfe>oS$?+K89xdQN^}Qj?B+BDG zhGfzrN&-F}ve-38OC_y;@jY<$(ZDZzlW17r6=a?op)@l!LhJpR&MmnGTz9L2?I@r_ z>nz-Ql2b@IkZ%oW*=8X*=wc82Z)3uvN!B!|W z28(JhjhSfRxLojmg`0$~)~>*?qvVOLNyKS3=%pCAZ%ys*0Tu< z`-?bIVkkp+(rlLvNc%SRh!TM4m(Toy+2y=Kxg~_!0>u%Y)gQh^_4CCG=VwnFOh5(& zjLzRJ6JCiUdowgqquBF=zSS7ue{k;~1}731ldS+e(;Y5Gx7d=jf<9;u6MR%&;tcaM zGSXinG#u;R^8cfDSiY3P_Ui!0;U0B7QCg=bbqt?z5`>8_7`9A`&q$K*^Q)^2m*(pQ z{yEht4a|8AbZu@PJt^M==4o~+6d~0$y7wirp!{j>DFh;BG(_05Hcecr&uXdxo|`$f zvX)`AFi(@a7A4UTiU;fz$33UnBeJqfzVn8)T+1Q(IAfcU2EqAWsh#1)FbrkWsiJ9b zWD!?l#Qd~S_aEY=f&{w}?=W#p5tHD)R8rO={{^b!nuJ5oN%GefZ{~MhZ(t+*!$I@3ErghZpwzM%~px1SEbQVB8-!DNhz%^?~p-R~x5_Pz>u_)sAd zdPWCi^pbDIh(lc%1YpS@(TKMCDQrLa9+3ztV(<(Zy4NOiSm8WC<_ZDIA|h8>BOY<= z10NgEH;tiT#ONc1D~Bi{w(&>5Tgq1(3vx)RbjU=!$LWk+E=97U zQi5@>yu+kS+A+yZRvA7Uduc0P5Po`2rnL=d##(vls0k z#yCG}l1WjJ!sY_R;`Af5f#^&oa#SQYh|4ZFV*0Ra9s#`-H%)7*G_M^|}MwmNdL`S1ouN5Q%5m3Q=f7MCn$ zw3Lne8+DYG^P^Tr^-eD^SM6@m<>aIN?Vsgfp18G^>!KJO@>jm(f9SeG4mEYNf)k8u zEL+gO3kqC_3zFxMDP|>pSi0`%bHBH4ECxU2G^}q2w|Y-tAm+>QD7I#7w#I?4a7sf& zq-~a~C!I@&9k6#-vA+7vqc)v<83#6Y7;c($M2Wq5#)N7^wSrr^s|ZVz#rgSo(B-CV zx{bsP zk+Kf~MF7n8Z({L*$EU4)4$UG53$cPq8`rWPY$~_^@n<(OOv1y|fYM^V^2Lm0JA=3* z+$;~wG-ova_NcNm*J-SDAded_c=BXHnP#7yb?$T*DBw=Y1jGig=c+MO*}c!mA}H&% zncn-AGh-Mf>=B}E>>6EGj5xNm2AI?cow*3>fwMu3AH@^kBrA8Iwn%Ve&o?$u1aND+ z0z}VV`O5`cDFql9JXd@dY+qLof=B?VwsCh|_^%q%b+VyUtvEEu3@x)9URj!_10gO_kCU4uw#Fw#8&9Iz7rFd+lwCx_UxNVz5jXCqwIJc}v548NUvA*F{C!82CrKeOFP6Qn=r zr{H+NcG^?u00|WjlRIDdJK&t6eH^r%ZNAjeE1Pc6yza<Wt!1?UcJY;IO{(Tj|i8f_-g0}t9N zQ*;xq46&_p@F&#(qL`}+x0S;~@B?qhS3J@rnPzD8EbHcH{vUf9n1N4B(AFrrNXh-H z=tdp=o(Y6+&nYM-vMun}G)?; zC3eF4Q=y1l3Sk~Wfn!+ev_}n#CwFJ~g!vENybF0G3l08?I7AA_ARz(ceK?GX@&qmN zTFI4RhHDaJg*Qx|kDv8PhKvh7l<-m=FpbEfWE5gqL~5pT6fv@ z|OIYHEld+b2+5s<3qE zjxS%fOq{mXIY1%Q>|ja;l@0QqZXiW5W`ax=iGR1_H?NS2g14akbR))HT^YM{IRe*k z-RmhX3zI~>x6S_{@yhy0wTqOWwzlBobxKLyAHj9!=+M5y=T0jY21B`sWXtN@wIA~m zy#*N~_Z%rBB`_D8xWKJaq5PfOMg$6A4P?Rs>46U4l8?ac7*OlN&z^cmvP0#*p zH-qY~5z*eN*VnsqiPr=+7SyCWoqoP&z%`GP!fD7h|E)$Kg3IF5QTX-P!}DblPCGzn z4Ph!tHR)N|c|GOcDD7>FX zo9`<`w-{&d+s2V``HVgChM>bUvaEC6+mb2C&gg!IXx9hm2tlzX5|6l9w+-P-F#bBb zP~k@i-;_RGVYFIEAxNCMHqpOl$o%|DTOjl^1}GM+K`B2(FXy_(yj^YDZN(-b8W?aJ z(lLxAp9uAz6=r`E4IeVC^sHcfk3syP+b2RBF z2%^>iZm_wz+&(VqfatcWuhzWmUHyHkynUeHW)Lk0(`GvA)J5Rmm2lYxXyy6MLYTeZ zV?$V-${{5z9TL<8E7)_KW>QvRl!2J+$K_slp$h{!^?wBn5gO=3hUfMrCHclkkN>k+nUiY z=4Kg-ahcO~AAO6mB>uNhw--4>+S?c)it|Oo%q&8po83_`<$ji!`T!{#6;-4}L!3zi zx3@j4si$y-X@FZzSnl=lPEEAQq+G$?iI8$-eF~^KcJI-5?GzZZ~--tyW(R(q^Wd^ zeif6czo+jVG;jlb3Ie%7!dYVLAy?!dg8j5H6uQoEU!@@U{(I38XrOgK&<5mcY-7>2 zf{$S@4CU~MX)2AU5R;>Ol|t*Aim?QxWqW+&r7rU#*!~>N?7@fQhXv(t%65u(1Nh#l~llLF*Jyb3lsbSv<;dk2Ax4@9i$ zU}BgI2tiihRRspKZ%tvBBrJgM?=J12>K#b;n+>35z(tI_rO-)F{q^*A^6I2WXNS}^ zWUQhIj_YhuPM>tV9mhb6NVO5mADL!)8p(!j{+6cS*enYNhCpIQxI!#bp|s(>eC;6V z&C)lg`^1$HVKj$HGo{|n0*&`eSCRmIELkOg0mW8i$kOR zJMyd{zYH?KQD4;JWZfk46Fyb-gl)Y|wl|s@Q}QYG$qf;mpdyZ=k{4+OxQIU>!qRw! z@CTCH^Te*hf1aLW4B~{!ZFXo*DA6DuXH+W)MZ(?sSFr$i#rh5)AgSSD6}!GP$Akms z=vWnu{cQ1VvG)rD^*4Dl`$@h5#(l4(7G%dcJ4(^a<$UATVc`-5(yj`VGV`@-0E+ca z%FFcZ_}fH9!@UH$y?%zsT~Qw^&=5o(9zV3Wu~ zMEss=bW>g!-c=U?x$A=jMl+q5GXB>S>L^3>s@e(s;#z@_8P7Ld9) zLy1s+re;ruisk%kn`!T6(5<@mU!EZ-Sk?zl&)k_1{4= ziejUpqd-mFCFmYnnz`g^D&{?$fzu_*hl5xua@(Zb?6e1$d;HB3;W@Udmrj$DggP6I zz>ClK`+G^d9eIJUUPWch@1{%MO(~Xt$s!#_$rNh48~N-#=Rs4(r0e*_s{k&dIqIeK zb{_yZVm&chSo=uHs%2)pzIP1}QE`_q4n5 za5^35ik<|_Fs%eyfcvo*J$vTfQfV?>=BHZ`OUtW`xG2-=)~fr2`YC z@wf&F2kuv!bkrG5yc_V^mOi(@8!y0?O#cz#o#=axDlP^9M(zO705u1tQ9HWBgotwG z_f4pI@b)fT-3{Co0phmrxW{g&QiaS%#sHen#AHfGk4JJ0)0T?BX3h*mBFzf27q?-@ zxl(ZKI0pwjdYI2?e37VeW}C^fps~^O&gT|u1YmbM90PLFuLGsO8a1L75cGt>F0qsD ztpDDJ##Hc~LRToE2F({s(LYVrZ2Ve?S1{_b=G=anP3wq?U#mMdsYou9!9TCu^p-LL zZG9`I3ZdeOBYh+cabSS*RXCaesR4kD~KBsco`MIXN&_R_MD|xwS=6?vUr(NSlqLwX7MZV~L|M6WyS#i|`nt&lRm!3x{Ym$>qg}$OBPE^ zmQNoplXnJBgVj%!HVuTy6y;>gk0`2d@x% zR!nCDjRPC4Ng-e>(QlG_=@X4jrY7~YMvfMUmcABs&XA;pmkw)uV5aa9fl*=N1fG*- z1K@;pB5$BDP^1B2!)1FtoZ0)#Pq&ukC;`Hl8kHjCWdB-Fp-!hx)I2i!3d_jMtj;6T zk)XEKNeo!DkbP__#uk#4@h>blQ_>^N6HlP71^z=ja2-fILbU>}M_{>Onv(z;h{oBa zHyr2Iz$0Gs-n|MKj+sn7-YH!ct;#Ct;%^jRrFDIBw2`KGU7PnCp%{yfq0)v}*bewPvu_53?6+(LU4g#FV=pZsiG2zbxSn zZ)4rUGFV5^5$o>$%lCU@j>Xj^qco+?={w>#7%X25Phh_|HLmSxO%%x)y1eC{3C1J( z(D(N~!zrNfxvr^&h|^>%I&#bx_YIL6&=@sssV)uUosRnyuoxPCH@CHXEIn*a)y1D3vU`m0%@aWw~NFbuDJ5;bI{{!w;&H4#s}s_ zpTIfi#XNwHu$lq^NK&J}@Qlxr;WlMU9djlDAr&@QmID1bEtmy8ahPPvjG*f6`hEbAVc+pFG#nKI_Nb7wZJDe(6rj$ zB$yQw^+(E6c*tx^3Joo-qIJwM#j@BVIKDw#EVP=k2?X-l8M|^8p6&sWcj98Cf*zEe zjG`#`1=eRkpWRa`#h|i2*VkHPzS3U3Bv*aH6QSYt#w58jM@HSsF?1OSrMOGLh@0me z`be|9y=KRIbPo(bgMyu#6QJWSZ$=qjEfxK7u_i$D@_1uMz z5Cqq5mXFGf5=Zj~y&maess+oZh9#88R8MrM92!bVw&ilbvW%b+41S=$Owv!XGN`!= z2xuzwVCAwUI+ZT&d|g#z?AU5nSA$;4d>v^(G139ET=#9e$%g+#89J%h_!e_azTjDY z@D~7hwX9V$rjB+=x_>-Ttb;I^<9EU^GOj0`G0${c0kDz4w+_RV z;!UVm4(=Oc_7~JAy~oRkx2k=H!X)YNOz=2DMR!UQ&*c6uLnzSD$f{1jvF1MIM{&0y zl8wHH4RvVZ9&nOSh>}3N%LO$>Z@0T7=~&v{fR6{sVRMGmiw3VRwflI^oSZ6g_HzUr zL`;GIwBOVqWq$>K6d~7_g z+-!)yvP?M{p|U!V;4UoYdZDSzX@c0~o6;FOTbvzk5nqdSna)Fxog5so&w+N6cxW#| z@2+v&2N^M#uogD9-nV9R=cW-T#JOm|f#Nh`(dq&+G;rMnGA;u^u!;?jDk@zf|>0*QVS>VxET z2B@9KYXD4i;B_Z9JZB@2hkUR-7vL^L&kXv=U`d^UN^eYO&&lSh25>IQE#!s_gZ0N9 zg?Q$P?;$X9TqjN2aCGW0ge;j7UnEH1ENy9slRb6f7iVHJ$)+e!uP20Q;0kc=e$%r2 z7?i@(7Vu#0fD6Li_|-Jy=um~iZy71+&Jl~@izQh|)zd*1Dnu_1cjRi)6}yg$@z`hx zRr(hS;AuxGKpqKcSxYXRm&d5M!pR@p7bc=V@bBR%Rkk>1B&zQ(R=W0s#P}X?U58qO zmCPf$aQUY+^4;b=HvClq?sGOKYbl25GKkEc$|dvYAP+-AVU8&|1Z*Do@r?`r#1N90 z2$GYpSt4Y$IDq9m4_gzx{U!Mhfe- zx+-migG9TB!mty->tH;BozXS!3<2u(KVEtblH^%B$Gf+xbh>HGMrm?S#c>gc;-FR& zDU-Bp%{;!Yz==qNr=|g#;h?2fn+e(c5(M8yyfYiXFpvK$=~OG9LmbTFkjd5%8f#wU zC_H5sDrLomGF+HnS{*a8=WM58PuAV)a`6rs6Vx zBL=JE?&@vj4A<;a;UtR%=xX@r4Ez~_NEGD-xr zzW<_X59TLxQ!=Cfz*16gP1KBvR?oM>bmPt|LhT;NmLz#lf*HuDA_$@a`5$vmpn=di zULfS+$x@(X?s=4`tE?y2h(%f%xIkTA80*@F9>%LU-dxTKpGq*+|A+ply?DnDHIegg`|F@SOV7 z%PqLz9*Tfnc|)2{0^8c>2ZM&>j$N`iJ*8sHYz%!2PEK-tL^S__>TqvweCZ(qIfk}q|n}yK4(pwox~e zOcb6n!#s4LBjmSa$2`Uz-@p0ixaEk*?Y49`WUJ<5w>&H5K8A|0KWLHz4Bhn&wFy0v zfV5Mx5M@(uKdtUpGabMi4@2}5Q;|t8*2>F059;Lvf|5nyDkilXHAe_$RV(=0!?~aw z_om$h(q8W^W<2ntz5dLew-kgvIFQ%L*Egc5=_Zslnv;bV}dZNhF3e z{;%!TEQ+0-7P7NLyQtVArO!DlJ#dN|WAA7W7{E3ni-F_T32W z3iG=FT5dcegb9>gQ8^B<_9F#$Tw+M}IY0vpGW0*y2$)R}XpLcvl2^(_$M-QyG1F~q z#EoAQSv9;o>}}}L1-=%QC75SA-me4o6hE+tKDE2>>kNC#vf^=+$I6Tp*hP~;%5Wiq zg@6p}>{M0p`lvy5%&~KKT{K?J=VxemFhZ(Q%MI~6FsF#_lg0Tcy&7)@L(NuZ(-Y}s z^leg{tjag2&)~X47ytDRs|K%vo;4m;M{TYyCE{X$-K~HI5{S}`Ob45#D0-(TiYuHb zv??cv!Ee&9dH@<`sU+;73eidb8?F%j z##|RU;bK`6mT4tU1QU{V%0hD>^ZYT8wu*(mLzHf2=NF-vRh{i=C&H4VK`Ut=sSF$} zI$zal?jm9N(NP1t#5vq|vD4(yVR>HF>_im*8f`L1dOuab9wpD_`!-kHYE$rzYzo2Xv>F=&KOlcakO-bbm$%hmBYv9T7?w!n z%H2c;2n5inwp>hja~=dVO2#5rf* zX1{1OlDs6y*4frIE1W8UB%*bHcDJ-kkjnyrmPwD+KmuRV7=LujVM44)8ObSOJ#n#Z zL}rKtdgxMm1HG&*N;<4?*rX=mu;v2&jzuppK1Dv`cdN21%o35cm;xhJMXv81bGRBJ zDO7Y*iM*+p!xKh?H;;Cj;^+KS9SM! zHUhrKo1#gWshJzrM$t=`oV(Hy23BCR!RMr%5YmXJQ1O_=n)}xDEELsE#>}r0?;Ty1 zG=T7>hOOD-7Xe=SD^Bv+N9uq{0#+ep+C@cyeXtimickT`B^_%E{|m1 z6%+v?Cb!O>yz4uBRBzljJyDIO!K&qMNhsEA+dSN$Nhx>6%|}7RZ=3WSUbWC2R`CV) z6{8P@gLd|gtLP3{mN#VsWlI7)@k%}q9 zc@S!jpn@H_3F!370Gpyl8xYto(zvNxld;v=4J%88j?{r`2VUb)0h$3epq_5s^_f1=gT=~3~rw_Fa#-Q1A(d70Z!ECt~|LiWk30dtm*W0kFOVN z-Pi*Ip@mwbBTSF5lO@wGz_S~Q>#Wh}qks3iF89%u>9eba?BL(WHw9o8B`JMUD-|gr zwBweqWTfqIU(_@qz6moi0qiQtgpkhJNKKCulvUE*ZyxDBsh%3c(9@_1AqJiX^@^}d zZK{Tbx~9`n`c?? zHXEAu$uM35P6LR-(IyOzY5{iZB@XXHh#4S*0h3o$2t5g$;kJe_p`JEwsJDo!e)1x7 zDk&%3;wzS-8vSu@gp5sqW%S_?n~fRIZ{h$M1-7!ii5{4wmNv{7t_A|>;Hc}-r7oCD@@ zjLHFl!USnAX^D>~k%FZmoGwki(lx~r*C_Z0Of8_Ut_iPVB=&b@w*1O#jZ9jb%HZ>+ zSKYq*g~9D#6VY>%Yi&r6u}mWl;n}z*2;1B zTYp}<41pE6|G|%aL!avr-9n@~$ku}?-LX^(OHr(NBk~%x-GbBLn-M8qB!8NEct)o@ zP~f@QmKWCWGvztPN+p>%21q6S;62Ny{M9U(q)z{0Q|RpY;FS&4IAL(I10b516tPjzG^$1N}Zfc`dzk9~E;;n)(5+L1o0hsY@JtBLW74(%8COm2co)!6l z8htW^5KE)!Rab~EUF~EuiZ1F4PwF8+O`n2YNqR_uKF8&)3rHF>#sYB2O(Z?nRZ#GT zo3@9y_8&;+uqi(?nI}+Q+0_~k2?~iELi>(rtnKdPbtf(cn(qiuLU+-Wcw#MsWkm++ zoZX|-0cyBH1xO=<6_+I+q{!5>gNsESHxCGz+zoQh5u4&Gb)ev>>Uu_G`4QVc1h7

xVmIDMzGJl_`9MtPgY4Ap$^A{sc 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%0A{V5C=wwrWDT!lEIIipd~-(^ge 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 { if (/^assets\/index-[^/]+\.js$/u.test(path) && /import\(/u.test(source)) return 'initial-application-js'; if (/^assets\/(?:environment-high|high-tier)-[^/]+\.(?:js|avif|webp|png|jpe?g)$/u.test(path)) return 'high-tier-extras'; if (/^assets\/environment-[^/]+\.js$/u.test(path)) return 'first-live-scene'; - if (/^assets\/nightdrive-grand-tourer-[^/]+\.glb$/u.test(path)) return 'first-live-scene'; + if (/^assets\/nightdrive-(?:grand-tourer|districts)-[^/]+\.glb$/u.test(path)) return 'first-live-scene'; if (/\.(?:woff2?|ttf|otf)$/u.test(path)) return 'initial-fonts'; if (/^assets\/hero-[^/]+\.(?:avif|webp|png|jpe?g)$/u.test(path)) return 'hero-poster'; if (/^assets\/project-[^/]+\.(?:webm|mp4)$/u.test(path)) return 'project-video'; diff --git a/src/assets/nightdrive-districts.glb b/src/assets/nightdrive-districts.glb new file mode 100644 index 0000000000000000000000000000000000000000..b1f80dcf6386830c66f6929b4543ecfa08e88e1d GIT binary patch literal 83676 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 literal 0 HcmV?d00001 diff --git a/src/scene/world/districts.ts b/src/scene/world/districts.ts new file mode 100644 index 0000000..fe482aa --- /dev/null +++ b/src/scene/world/districts.ts @@ -0,0 +1,323 @@ +import * as THREE from 'three'; + +/* three ships untyped here (see src/scene/three.d.ts). */ +type Mesh = { visible: boolean; geometry?: Geometry }; +type Geometry = { dispose(): void }; +import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'; +import districtsUrl from '@/assets/nightdrive-districts.glb?url'; +import type { SceneResourceBag } from '@/scene/resources'; +import type { RenderQualitySettings } from '@/scene/render-quality'; +import type { SectionId } from '@/content/types'; +import { signAccentFor } from './sign'; +import { WORLD_DEPTH, WORLD_FAR_Z } from './metrics'; + +/** Roadside districts: each chapter raises its own landscape out of the ground + * (server rows for Infrastructure, a workshop and cranes for Builds, a container + * yard, radio masts, a destination arch). The kit is authored in Blender + * (assets/blender/districts) and drawn as instanced, script-wrapped geometry, + * like the expressway furniture. Districts at rest are hidden, so only the + * current chapter's pieces cost draw calls. */ +export type DistrictPiece = + | 'gantry' + | 'billboard' + | 'rack-row' + | 'mast' + | 'workshop' + | 'crane' + | 'container' + | 'arch'; + +interface Placement { + x: number; + z: number; + y?: number; + /** Yaw in radians, applied before mirroring. */ + ry?: number; + s?: number; + /** Extra vertical stretch (gantries clear the chase camera). */ + sy?: number; +} + +/** How strongly each chapter raises a piece (0 = flat and hidden). */ +export const DISTRICT_PRESENCE: Readonly< + Record>> +> = { + gantry: { + profile: 1, + experience: 1, + infrastructure: 1, + 'selected-builds': 1, + 'additional-work': 1, + toolkit: 1, + }, + billboard: { profile: 1, experience: 1 }, + 'rack-row': { infrastructure: 1 }, + mast: { infrastructure: 0.75, toolkit: 1 }, + workshop: { 'selected-builds': 1, 'additional-work': 0.5 }, + crane: { 'selected-builds': 1, 'additional-work': 1 }, + container: { 'additional-work': 1 }, + arch: { contact: 1 }, +}; + +const span = (count: number, from: number, to: number) => + Array.from({ length: count }, (_, i) => from + ((to - from) * i) / count); + +/** Placements in three.js units: negative x is the left verge. Pieces face +x; + * right-side copies are mirrored so they face the carriageway too. */ +function placementsFor(piece: DistrictPiece, dense: boolean): Placement[] { + const n = (full: number) => (dense ? full : Math.ceil(full / 2)); + switch (piece) { + case 'gantry': + return span(n(3), -70, -70 - WORLD_DEPTH).map((z) => ({ x: 0, z, sy: 1.42 })); + case 'billboard': + return span(n(10), -40, -40 - WORLD_DEPTH).map((z, i) => ({ + x: (i % 2 ? 1 : -1) * 16, + z, + ry: (i % 2 ? 1 : -1) * 0.28, + })); + case 'rack-row': + return span(n(18), -26, -26 - WORLD_DEPTH).flatMap((z, i) => { + const side = i % 2 ? 1 : -1; + return [ + { x: side * 14.6, z, s: 1.5 }, + { x: side * 19.2, z: z - 3, s: 1.5 }, + ]; + }); + case 'mast': + return span(n(6), -90, -90 - WORLD_DEPTH).map((z, i) => ({ + x: (i % 2 ? 1 : -1) * (30 + (i % 3) * 7), + z, + ry: i * 0.6, + })); + case 'workshop': + return span(n(6), -48, -48 - WORLD_DEPTH).map((z, i) => ({ + x: (i % 2 ? 1 : -1) * 17, + z, + s: 1.3, + })); + case 'crane': + return span(n(4), -120, -120 - WORLD_DEPTH).map((z, i) => ({ + x: (i % 2 ? 1 : -1) * 34, + z, + ry: (i % 2 ? 1 : -1) * 0.9 + i * 0.4, + })); + case 'container': + return span(n(12), -30, -30 - WORLD_DEPTH).flatMap((z, i) => { + const side = i % 2 ? 1 : -1; + const stack: Placement[] = [ + { x: side * 16, z, ry: Math.PI / 2, s: 1.2 }, + { x: side * 16.3, z: z - 3.2, ry: Math.PI / 2, s: 1.2 }, + ]; + if (i % 3 !== 1) stack.push({ x: side * 16.1, y: 3.14, z: z - 1.5, ry: Math.PI / 2 + 0.06, s: 1.2 }); + return stack; + }); + case 'arch': + return span(2, -60, -60 - WORLD_DEPTH).map((z) => ({ x: 0, z, sy: 1.15 })); + } +} + +const VERTEX = ` + uniform float uDistance; + uniform float uRise; + varying vec3 vWorld; + varying float vDepth; + varying float vRise; + varying float vHeight; + void main() { + vec4 origin = instanceMatrix * vec4(0.0, 0.0, 0.0, 1.0); + float stagger = fract(sin(dot(origin.xz, vec2(12.9898, 78.233))) * 43758.5453); + float rise = clamp(uRise * 1.45 - stagger * 0.45, 0.0, 1.0); + rise = rise * rise * (3.0 - 2.0 * rise); + vRise = rise; + vHeight = position.y; + vec4 p = instanceMatrix * vec4(position.x, position.y * rise - (1.0 - rise) * 0.4, position.z, 1.0); + p.z += mod(origin.z + uDistance - ${WORLD_FAR_Z.toFixed(1)}, ${WORLD_DEPTH.toFixed(1)}) + ${WORLD_FAR_Z.toFixed(1)} - origin.z; + vWorld = p.xyz; + vec4 view = modelViewMatrix * p; + vDepth = -view.z; + gl_Position = projectionMatrix * view; + } +`; + +const FADES = ` + float farFade = 1.0 - smoothstep(360.0, 640.0, vDepth); + float nearFade = smoothstep(1.5, 10.0, vDepth); + float fade = farFade * nearFade; + if (fade < 0.02) discard; +`; + +export interface DistrictsWorld { + group: { name: string; add(...objects: unknown[]): void }; + update( + distance: number, + energy: number, + section: SectionId, + elapsed: number, + dt: number, + ): void; + /** Pieces currently raised (for tests and diagnostics). */ + raised(): DistrictPiece[]; +} + +export function createDistricts( + resources: SceneResourceBag, + quality: RenderQualitySettings, + signal: AbortSignal, +): DistrictsWorld { + const group = new THREE.Group(); + group.name = 'roadside-districts'; + const shared = { + uDistance: { value: 0 }, + uEnergy: { value: 0 }, + uTime: { value: 0 }, + uAccent: { value: new THREE.Color(signAccentFor('start')) }, + }; + const targetAccent = new THREE.Color(signAccentFor('start')); + const state = new Map< + DistrictPiece, + { rise: { value: number }; meshes: Mesh[] } + >(); + const pieces = Object.keys(DISTRICT_PRESENCE) as DistrictPiece[]; + for (const piece of pieces) state.set(piece, { rise: { value: 0 }, meshes: [] }); + + const bodyMaterial = (rise: { value: number }) => + resources.own( + 'material', + new THREE.ShaderMaterial({ + uniforms: { ...shared, uRise: rise }, + vertexShader: VERTEX, + fragmentShader: ` + uniform vec3 uAccent; + varying vec3 vWorld; + varying float vDepth; + varying float vRise; + varying float vHeight; + void main() { + ${FADES} + vec3 n = normalize(cross(dFdx(vWorld), dFdy(vWorld))); + float key = max(0.0, dot(n, normalize(vec3(-0.45, 0.85, 0.35)))); + float rim = pow(1.0 - abs(n.y), 3.0) * 0.5; + vec3 color = vec3(0.03, 0.016, 0.05) + vec3(0.085, 0.06, 0.14) * key; + color += uAccent * rim * 0.06 * (0.4 + 0.6 * smoothstep(0.0, 12.0, vHeight)); + gl_FragColor = vec4(color, fade * smoothstep(0.0, 0.25, vRise)); + #include + #include + } + `, + transparent: true, + depthWrite: true, + side: THREE.DoubleSide, + }), + ); + const lightMaterial = (rise: { value: number }, accentMix: number) => + resources.own( + 'material', + new THREE.ShaderMaterial({ + uniforms: { ...shared, uRise: rise }, + vertexShader: VERTEX, + fragmentShader: ` + uniform vec3 uAccent; + uniform float uEnergy; + uniform float uTime; + varying vec3 vWorld; + varying float vDepth; + varying float vRise; + void main() { + ${FADES} + // Neon tubes catch as the district finishes rising: a brief + // stutter, then steady (no per-instance CPU work). + float on = smoothstep(0.8, 1.0, vRise); + float stutter = step(0.35, fract(sin(floor(uTime * 22.0) + vWorld.z * 0.07) * 43758.5)); + on *= mix(stutter, 1.0, step(0.985, vRise)); + vec3 tone = mix(vec3(0.55, 0.95, 1.0), uAccent, ${accentMix.toFixed(2)}); + // Close passes dim, so overhead neon never floods the bloom pass. + float near = mix(0.3, 1.0, smoothstep(5.0, 32.0, vDepth)); + vec3 color = tone * (1.1 + uEnergy * 0.4) * near; + gl_FragColor = vec4(color * on * fade, 1.0); + #include + #include + } + `, + transparent: true, + depthWrite: false, + blending: THREE.AdditiveBlending, + side: THREE.DoubleSide, + }), + ); + + const dummy = new THREE.Object3D(); + const install = (piece: DistrictPiece, body: Geometry, light: Geometry) => { + const entry = state.get(piece); + if (!entry) return; + const placements = placementsFor(piece, quality.postEffects); + const accentMix = piece === 'gantry' || piece === 'arch' || piece === 'billboard' ? 1 : 0.35; + for (const [geometry, material] of [ + [body, bodyMaterial(entry.rise)], + [light, lightMaterial(entry.rise, accentMix)], + ] as const) { + resources.own('geometry', geometry); + const mesh = resources.own( + 'other', + new THREE.InstancedMesh(geometry, material, placements.length), + ); + mesh.name = `district-${piece}`; + mesh.frustumCulled = false; + mesh.visible = false; + placements.forEach((placement, i) => { + const mirror = placement.x > 0 ? -1 : 1; + dummy.position.set(placement.x, placement.y ?? 0, placement.z); + dummy.rotation.set(0, (placement.ry ?? 0) * mirror, 0); + const s = placement.s ?? 1; + dummy.scale.set(s * mirror, s * (placement.sy ?? 1), s); + dummy.updateMatrix(); + mesh.setMatrixAt(i, dummy.matrix); + }); + mesh.instanceMatrix.needsUpdate = true; + entry.meshes.push(mesh); + group.add(mesh); + } + }; + + // The kit streams in beside the first frame; a failed fetch leaves the road + // exactly as it was before districts existed. + void (async () => { + try { + const response = await fetch(districtsUrl, { signal }); + if (!response.ok) return; + const bytes = await response.arrayBuffer(); + if (signal.aborted) return; + const gltf = await new GLTFLoader().parseAsync(bytes, districtsUrl); + if (signal.aborted) return; + for (const piece of pieces) { + const body = gltf.scene.getObjectByName(`${piece}_body`) as Mesh | undefined; + const light = gltf.scene.getObjectByName(`${piece}_light`) as Mesh | undefined; + if (body?.geometry && light?.geometry) install(piece, body.geometry, light.geometry); + } + } catch { + /* Districts are optional scenery. */ + } + })(); + + let current: SectionId = 'start'; + return { + group, + update(distance, energy, section, elapsed, dt) { + current = section; + shared.uDistance.value = distance; + shared.uEnergy.value = energy; + shared.uTime.value = elapsed; + targetAccent.set(signAccentFor(section)); + shared.uAccent.value.lerp(targetAccent, 1 - Math.exp(-dt * 2.5)); + for (const [piece, entry] of state) { + const target = DISTRICT_PRESENCE[piece][section] ?? 0; + const rate = target > entry.rise.value ? 0.9 : 1.4; + entry.rise.value += (target - entry.rise.value) * (1 - Math.exp(-dt * rate)); + if (Math.abs(target - entry.rise.value) < 0.002) entry.rise.value = target; + const visible = entry.rise.value > 0.002; + for (const mesh of entry.meshes) mesh.visible = visible; + } + }, + raised: () => + pieces.filter((piece) => (DISTRICT_PRESENCE[piece][current] ?? 0) > 0), + }; +} diff --git a/src/scene/world/environment.ts b/src/scene/world/environment.ts index 6488086..8080744 100644 --- a/src/scene/world/environment.ts +++ b/src/scene/world/environment.ts @@ -6,6 +6,7 @@ import type { SceneBuildContext, SceneGeneration } from '@/scene/types'; import { renderQualityFor } from '@/scene/render-quality'; import { createHorizonAir } from '@/scene/world/horizon-air'; import { createExpressway } from '@/scene/world/expressway'; +import { createDistricts } from '@/scene/world/districts'; import { createSignStage } from '@/scene/world/sign-stage'; import { usesRoadsideSign } from '@/scene/world/sign-layout'; import { createSpeedWake } from '@/scene/world/speed-wake'; @@ -116,6 +117,7 @@ export async function createProceduralSceneGeneration( const terrain = createTerrain(context.resources, quality); const speedWake = createSpeedWake(context.resources); const expressway = createExpressway(context.resources, quality); + const districts = createDistricts(context.resources, quality, context.signal); const signStage = createSignStage(context.resources); const sun = createSun(context.resources); const horizonAir = createHorizonAir(context.resources); @@ -132,6 +134,7 @@ export async function createProceduralSceneGeneration( atmosphere.group, road.group, expressway.group, + districts.group, terrain.group, sun.group, horizonAir.group, @@ -306,6 +309,13 @@ export async function createProceduralSceneGeneration( snapshot.activeSectionId, deltaSeconds, ); + districts.update( + driveDistance, + response.roadEnergy, + snapshot.activeSectionId, + atmosphericTime, + deltaSeconds, + ); terrain.update( driveDistance, visualSpeed, diff --git a/tests/performance/budgets.test.ts b/tests/performance/budgets.test.ts index b0afb81..10ebfa4 100644 --- a/tests/performance/budgets.test.ts +++ b/tests/performance/budgets.test.ts @@ -62,6 +62,7 @@ describe('release budgets', () => { expect(classifyArtifact('assets/index-a.js', 'import("./environment-b.js")')).toBe('initial-application-js'); expect(classifyArtifact('assets/environment-b.js', 'three scene')).toBe('first-live-scene'); expect(classifyArtifact('assets/nightdrive-grand-tourer-a.glb', '')).toBe('first-live-scene'); + expect(classifyArtifact('assets/nightdrive-districts-a.glb', '')).toBe('first-live-scene'); expect(classifyArtifact('assets/nightdrive-main.opus', '')).toBe('soundtrack-audio'); expect(classifyArtifact('assets/nightdrive-intro.mp3', '')).toBe('soundtrack-audio'); expect(classifyArtifact('assets/nightdrive-afterglow.opus', '')).toBe('soundtrack-audio'); diff --git a/tests/unit/districts.test.ts b/tests/unit/districts.test.ts new file mode 100644 index 0000000..329620f --- /dev/null +++ b/tests/unit/districts.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from "vitest"; +import { readFileSync } from "node:fs"; +import { DISTRICT_PRESENCE } from "@/scene/world/districts"; + +const provenance = JSON.parse( + readFileSync("assets/blender/districts/nightdrive-districts.asset.json", "utf8"), +) as { pieces: string[]; triangles: number }; + +describe("roadside districts", () => { + it("raises every authored piece in at least one chapter and nothing else", () => { + expect(Object.keys(DISTRICT_PRESENCE).sort()).toEqual(provenance.pieces); + for (const presence of Object.values(DISTRICT_PRESENCE)) { + const strengths = Object.values(presence); + expect(strengths.length).toBeGreaterThan(0); + for (const strength of strengths) { + expect(strength).toBeGreaterThan(0); + expect(strength).toBeLessThanOrEqual(1); + } + } + }); + + it("keeps the opening and the destination clear of mid-route districts", () => { + for (const [piece, presence] of Object.entries(DISTRICT_PRESENCE)) { + expect(presence.start, piece).toBeUndefined(); + if (piece !== "arch") expect(presence.contact, piece).toBeUndefined(); + } + }); + + it("stays a light kit", () => { + expect(provenance.triangles).toBeLessThan(8000); + }); +});