From b2191d668047198c69d96d24973d79c0edc8fbd8 Mon Sep 17 00:00:00 2001 From: noembryo Date: Thu, 3 Sep 2026 22:18:09 +0300 Subject: [PATCH] 1.6.6 --- README.md | 20 +++++++ load_image_from_path.py | 8 ++- nodes.py | 9 ++- pyproject.toml | 5 +- stitcher.py | 92 ++++++++++++++++++++++++++++- stuff/H3MotionContextClipPurge.png | Bin 13415 -> 31625 bytes 6 files changed, 125 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 47d87c6..6bd0da4 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ # noEmbryo Nodes A diverse set of nodes for ComfyUI. - [Json Prompt Loader](#json-prompt-loader) +- [Load Image (from path)](#load-image-from-path) - [Resolution Scale](#resolution-scale) - [Regex Text Chopper](#regex-text-chopper) +- [H3 Motion Context Clip Stitcher](#h3-motion-context-clip-stitcher) +- [H3 Motion Context Clip Purge](#h3-motion-context-clip-purge) - [Auto Save Workflow](#auto-save-workflow) - [PromptTermList (1-6)](#prompttermlist-1-6) @@ -142,6 +145,23 @@ No quality loss, like when trying to concatenate encoded videos. - **frame_count**: The total number of frames - **report**: Logging of some of the node's actions +--- +## H3 Motion Context Clip Purge +![H3MotionContextClipPurge.png](https://raw.githubusercontent.com/noembryo/ComfyUI-noEmbryo/refs/heads/master/stuff/H3MotionContextClipPurge.png) +Deletes the numbered `h3_motion_context_av_v1` clip archive files at the root of a folder (default: `h3_context`) +Only files matching the pattern are removed; sub-folders and everything inside them are left untouched. + +- **Controls** + - **mode**: Purge (Enabled): delete the matching files. + Preview (dry run, Disabled): delete nothing; the report just lists the files that would be deleted. + - **folder** is the folder whose root-level clip archives will be deleted. + Absolute paths and paths relative to ComfyUI/output are accepted. + - **pattern** is the filename glob. Only root-level FILES matching this pattern are deleted. + Sub-folders are never touched. +- **Outputs** + - **report**: Shows the actions of the node. + + --- ## Auto Save Workflow diff --git a/load_image_from_path.py b/load_image_from_path.py index e791c8d..a6d683c 100644 --- a/load_image_from_path.py +++ b/load_image_from_path.py @@ -19,12 +19,14 @@ from server import PromptServer def _is_url(s) -> bool: - """Return True if s looks like an HTTP(S) URL.""" + """ Return True if s looks like an HTTP(S) URL. + """ + # noinspection HttpUrlsUsage return isinstance(s, str) and (s.startswith("http://") or s.startswith("https://")) def _fetch_url_bytes(url: str, timeout: float = 30.0) -> bytes: - """Download the bytes of a URL. Raises on any network/HTTP problem. + """ Download the bytes of a URL. Raises on any network/HTTP problem. Embedded Python distributions (StabilityMatrix, ComfyUI portable, ...) often ship with a missing or outdated CA bundle, causing CERTIFICATE_VERIFY_FAILED @@ -46,6 +48,7 @@ def _fetch_url_bytes(url: str, timeout: float = 30.0) -> bytes: # Strategy 2: use certifi's CA bundle if it's installed. try: + # noinspection PyUnresolvedReferences import certifi ctx = ssl.create_default_context(cafile=certifi.where()) opener = build_opener(HTTPSHandler(context=ctx)) @@ -66,6 +69,7 @@ def _fetch_url_bytes(url: str, timeout: float = 30.0) -> bytes: "downloads without certificate validation. Consider installing/" "updating the 'certifi' package for secure downloads.") _ssl_warning_shown = True + # noinspection PyUnresolvedReferences,PyProtectedMember ctx = ssl._create_unverified_context() opener = build_opener(HTTPSHandler(context=ctx)) with opener.open(req, timeout=timeout) as resp: diff --git a/nodes.py b/nodes.py index 05ba14a..39b5504 100644 --- a/nodes.py +++ b/nodes.py @@ -4,17 +4,18 @@ from os.path import realpath, join, dirname, isabs, splitext, basename from datetime import datetime import folder_paths from .load_image_from_path import LoadImageFromPathEnhanced -from .stitcher import H3MotionContextClipStitcher, H3ContextLatentConverter +from .stitcher import (H3MotionContextClipStitcher, H3ContextLatentConverter, + H3MotionContextClipPurge) MANIFEST = {"name": "noEmbryo Nodes", - "version": (1, 6, 5), + "version": (1, 6, 6), "author": "noEmbryo", "project": "https://github.com/noembryo/ComfyUI-noEmbryo", "description": "Nodes for ComfyUI", "license": "MIT", } __author__ = "noEmbryo" -__version__ = "1.6.5" +__version__ = "1.6.6" LISTS_PATH = join(dirname(realpath(__file__)), "TermLists") @@ -481,6 +482,7 @@ NODE_CLASS_MAPPINGS = {f"JsonPromptLoader -{__author__}": JsonPromptLoader, f"Auto Save Workflow -{__author__}": AutoSaveWorkflow, f"Load Image (from path) -{__author__}": LoadImageFromPathEnhanced, f"H3MotionContextClipStitcher -{__author__}": H3MotionContextClipStitcher, + f"H3MotionContextClipPurge -{__author__}": H3MotionContextClipPurge, f"H3ContextLatentConverter -{__author__}": H3ContextLatentConverter, "PromptTermList1": PromptTermList1, "PromptTermList2": PromptTermList2, @@ -496,6 +498,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {f"JsonPromptLoader -{__author__}": f"Json Prompt L f"Auto Save Workflow -{__author__}": f"Auto Save Workflow /{__author__}", f"Load Image (from path) -{__author__}": f"Load Image (from path) /{__author__}", f"H3MotionContextClipStitcher -{__author__}": f"H3 Motion Context Clip Stitcher /{__author__}", + f"H3MotionContextClipPurge -{__author__}": f"H3 Motion Context Clip Purge /{__author__}", f"H3ContextLatentConverter -{__author__}": f"H3 Context Latent Converter /{__author__}", "PromptTermList1": f"PromptTermList 1 /{__author__}", "PromptTermList2": f"PromptTermList 2 /{__author__}", diff --git a/pyproject.toml b/pyproject.toml index 4b4d263..1fc9ac8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,13 +5,14 @@ A collection of nodes for ComyUI. \n * "Load Image (from path)" lets you load an image from any path in your computer or a URL, and use a selection rectangle at the preview to crop it. It can also limit the output's size in megapixels. \n * "H3 Motion Context Clip Stitcher" concatenates H3 Motion Context clip archives. \n +* "H3 Motion Context Clip Purge" clears all H3 Motion Context clip archives. \n * "JsonPromptLoader" enhances a propt using a .json file with `item:prompt` pairs. \n * "Resolution Scale" resizes an image using pixels or scale factor. \n * "Regex Text Chopper" cuts text based on regex. \n * "PromptTermList (1-6)" nodes to help with the creation of Prompts. \n * "Auto Save Workflow" can save the current workflow to a .json file automatically. \n """ -version = "1.6.5" +version = "1.6.6" license = {text = "MIT License"} [project.urls] @@ -20,5 +21,5 @@ Repository = "https://github.com/noembryo/ComfyUI-noEmbryo" [tool.comfy] PublisherId = "noembryo" -DisplayName = "noEmbryo" +DisplayName = "noEmbryoNodes" Icon = "https://iili.io/JmSdmAJ.png" diff --git a/stitcher.py b/stitcher.py index b470184..d513ce3 100644 --- a/stitcher.py +++ b/stitcher.py @@ -9,6 +9,7 @@ into Motion Context. The archive format is the sampler output, and this node is a final-media assembly tool. """ +import fnmatch import glob import logging import os @@ -134,8 +135,7 @@ def _decode_audio(audio_vae, audio_latent): audio = audio_vae.decode(audio_latent) # Current ComfyUI audio VAE returns [B,L,C]. Convert to [B,C,L]. if audio.ndim != 3: - raise RuntimeError("H3 audio VAE returned unexpected shape %s" - % (tuple(audio.shape),)) + raise RuntimeError("H3 audio VAE returned unexpected shape %s" % (tuple(images.shape),)) audio = audio.movedim(-1, 1) sr = int(getattr(audio_vae, "audio_sample_rate_output", getattr(audio_vae, "audio_sample_rate", 32000))) @@ -574,12 +574,100 @@ class H3ContextLatentConverter: return (converted,) +class H3MotionContextClipPurge: + """ Delete the saved H3 Motion Context clip archive files from a folder. + """ + @classmethod + def INPUT_TYPES(cls): + return {"required": {"mode": ("BOOLEAN", {"default": True, + "label_on": "Purge", "label_off": "Preview (dry run)", + "tooltip": "Purge (Enabled): delete the matching files.\n" + "Preview (dry run, Disabled): delete nothing; the report " + "just lists the files that would be deleted."}), + "folder": ("STRING", {"default": "h3_context", + "tooltip": "Folder whose root-level clip archives will be deleted.\n" + "Absolute paths and paths relative to ComfyUI/output are " + "accepted."}), + "pattern": ("STRING", {"default": "clip_*.safetensors", + "tooltip": "Filename glob. Only root-level FILES matching this " + "pattern are deleted.\nSub-folders are never touched."}), }, + "hidden": {"mode": "BOOLEAN"}} + + RETURN_TYPES = ("STRING",) + RETURN_NAMES = ("report",) + FUNCTION = "purge" + CATEGORY = "noEmbryo" + OUTPUT_NODE = True + DESCRIPTION = ("Deletes the numbered h3_motion_context_av_v1 clip archive files " + "at the root of a folder (default: h3_context).\n" + "Purge (Enabled): deletes the files.\n" + "Preview (Disabled): dry run - the report only lists what would " + "be deleted.\nOnly files matching the pattern are removed; " + "sub-folders and everything inside them are left untouched.") + + # noinspection PyUnusedLocal + @classmethod + def IS_CHANGED(cls, mode, folder, pattern): + return float("NaN") + + @staticmethod + def purge(mode, folder, pattern): + d = _resolve_folder(folder) + pattern = (pattern or "clip_*.safetensors").strip() + + doomed = [] + for entry in os.scandir(d): + if entry.is_file(follow_symlinks=False) and not entry.is_dir(): + if fnmatch.fnmatch(entry.name, pattern): + doomed.append((entry.name, entry.stat().st_size)) + + if not mode: # Preview (dry run) + lines = ["H3 clip purge (DRY RUN) in %s - nothing was deleted:" % d] + lines += [" would delete: %s (%s)" % (name, _fmt_size(size)) + for name, size in doomed] or [" no matching files."] + lines.append("TOTAL: %d file(s), %s" % + (len(doomed), _fmt_size(sum(s for _, s in doomed)))) + report = "\n".join(lines) + log_.info(report) + return (report,) + + deleted = 0 + freed = 0 + lines = ["H3 clip purge in %s:" % d] + for name, size in doomed: + try: + os.remove(os.path.join(d, name)) + deleted += 1 + freed += size + lines.append(" deleted: %s (%s)" % (name, _fmt_size(size))) + except OSError as e: + lines.append(" FAILED to delete %s: %s" % (name, e)) + if not deleted and not doomed: + lines.append(" no matching files.") + lines.append("TOTAL: deleted %d file(s), freed %s" % + (deleted, _fmt_size(freed))) + report = "\n".join(lines) + log_.info(report) + return (report,) + + +def _fmt_size(num_bytes): + size = float(num_bytes) + for unit in ("B", "KiB", "MiB", "GiB"): + if size < 1024.0: + return "%.1f %s" % (size, unit) + size /= 1024.0 + return "%.1f TiB" % size + + NODE_CLASS_MAPPINGS = { "H3MotionContextClipStitcher": H3MotionContextClipStitcher, "H3ContextLatentConverter": H3ContextLatentConverter, + "H3MotionContextClipPurge": H3MotionContextClipPurge, } NODE_DISPLAY_NAME_MAPPINGS = { "H3MotionContextClipStitcher": "H3 Motion Context Clip Stitcher", "H3ContextLatentConverter": "H3 Context Latent Converter", + "H3MotionContextClipPurge": "H3 Motion Context Clip Purge", } \ No newline at end of file diff --git a/stuff/H3MotionContextClipPurge.png b/stuff/H3MotionContextClipPurge.png index 25e79913d168fa446e2d2763367f0a371278f0e3..b3f841b7952421f8420f06970d366ec41310bd82 100644 GIT binary patch literal 31625 zcmXtgcOcd8`}f<(-h^bAne6OM6tWUR_DZs|GLw~+B!sN&o$S3sR(9DVd++^ReZIfv z{87qr&VBB2U9WWuQBzUC$DzVO5Cs3>133)@LCu4&SFljw&oGyjWdxx|9?D5;y8T|S zbJx*Ss6IBV+Y(hOKF^R*ryI5U@KBM<7~)^N(5VO-3R;Sn>}^Cr$fS1E#6zE4KKITz%_ftQ?!hjZ zP(VWvcd1Ir$)M#129d1~G)dVK>^%yyREWvRfeXd(;`E>RM%>!LDbmwXZd*(vp1mt; z6k@b7#u&-{4StMp6w2)944-aM;yVrKJ8jYI(TVFYh;EV4{(G581wtOoI4!i40V`(_ z@%@->pCljD2E%8Z6swekdB+ul>)EvAZg?4{F3Cxu4io}EJ3ZLw1U|>K=|GdQ!2OYIUC#-%` zmN_F+Z&jA#hg&sCt0a#E$Bqo6MXQo@>D9GHg`G!P57g1l4tYIzIAd$}W3IPeP^bsr ze^UIZo3&}t@i{-$>86#G)UhuY2foob_7IVhe{fJ{JSSPKs-eJhm|3*>O;%L_+aE2A zBD{$k$H#S%#^1CJJr7zFSg;bV^0?}&YiwN87)$;tKN>yYoa00qLj+YP>K)G{FE=DH zHt`yVQR0SSOGMBJj|>b+f4%Kn!GB)XWcLU~VxX^((rssVr5oSpWu@0*`9srcuSJ)( zOPphug_@D<(MAffoxj*=7!uxFre0a~RhjX%%2FRcWoKYk{$z;lCZrXMi;0Q(^2K|5 zMtW|HcvpF*(GTt9&umsM2UrTKetV=Y)j5MB%-0%jEc;zY`Psh?J)0N5zcX{CqLj&55jJZ)<@B zc$&;t1^V;#S49oG9#>KgLJv7qNMhI7U>OdZ_qfhClcqzWTVLV-`@YEfeGYOZ_D}Dk zTP^c?y^rFzP?6S$bBDc$mXQ)?o#U##T1hnh1U6pIYx4?pf_gs_a0Hru@@ZR^mzNQQ z|dglJxQY{+|kO zJ%{fyx5+Nf7n3FTE-Ve)7Ox$!-;1KZAFttEd>)`}Fji~K$Iv_5Hc?OoLrf5~38V)ELE{&d!y!wX<%+OUKjwl`mhu)YghM z#CKG`T4QErmN?&T$<58}j^)bJWY5w3Jvw@nRV3tf`n|_uZDS)qwsm=VIr-|`^7!$i zNBFA*!LUEeoL{Wq7S+mG`{V0B*FTMXDoYq`W(cKZgrQ!G%b&Aqi!)xoc)V4r zliyq`!#Wca(sgIF@aJ)*sY1l!;=&W^0wR_WN#Qf>+E_}$Gt5&%_=NWd5Ln#6 znb!vQ<9}uzsn!u9lq2|O=3~Ep|N1>reH2wU9zP!79>774n~8_w%y2tz4DC0Hj<4}# zu_j|r@6V}PW2a}b&z`)x{*x|(t+g$8HTTlbTgIlswVcl9?0ES&d)y=t`xNuEQ(&*J z*J}h`);_(-OrWjHw3A|1FYkk9M+CJ$)lbVMiRgD3t)Y!OxDn<@q$N5WL|CV%_22Vd zUcG{UgviOLJbw1fYvmWyaYc_s3-`~yr(AdM_RQMj5fGpvZem|L=69U*rRH03EcXI? ziqGB`p}W-Cd)!#Co_`Xh_TA^m+fi#a;dZAfmb(z6uWal58EvfMR|g&k#21F_b5h}x zlUw*}<&~PSuPIfGV!&hf=3|Nn`C?ieBzH(-5F`%UU98q|;~lU1jrv1LTzub_S>;EM zh_7gF-kje%S(xfJDXBH!D*0r`8_!CH6WMX=v_OZWx2GpOH1vg?9buG&fPerG&rWHd z#OtLb*UhQAgwLN9Gtx-Iv^Yz4b&~r=CHqzN)tPes#^Th&lRk(b*dz}yN?-|D`EG|jvj?Q}1 zsHmv6wl)s(7oMJp{kJof`i!{c7^B8*>R%sm!v0PqzQ78Q@e|?tsyY~3CE_IEE`wd2 zZl>^#cd^tdxu@Yh3@y67GlfF$kFMpS9rc5h1`?jpS$iQhe|2W|B+ezYE1d<}i$x+* z8%YCcX%uJT<&6y{)tycZ1Zk{$eYEUct(BLdk;BBqq*rc}lbbecJH&=wD4z9TZHVaa&FP@&=>%DUax6{CZA@ zNy&t5Me>nELJu=PJ%+#Z7oz2Z)5lpVNkR_IHUbnB6fF)6Rvrafe}4Va(A0E3-kueI zeFz98#iikc-!H1)U8n^vP`IJG+K9eXdeIH%?oYkBD1zwr!6EgMp!;5-y`C2*YZL~B zitIXh%*#7>{%C1w>J0rJfr=ob|5p6)*r(6dvgva2?7ob8|C3HA8eAmr1g_h>K~rc6 z$B6AdkZU7FkmIfV5nc)$frLkIms2!y$Z(jff-gUR{w#U1q6&RDK0f}fXp|0z%EN~Y zcnIQ~n#vF^?{6H}F<<2{j}g=o_29OZr_QW?mCOA)#Ycy)@P8jz#4NE`O7iIa3_7G^ zB>x>eTnA+|M>|KBP)%+W4e{LHR48tUj0lHm^<8uBXFT3{P1mv*Vm!J1)!|!4Sw?Pk zZei+X|D~)*9jE;tV*LhR=0+CwFGQiOY8AdyG8bqU%%#ueBxPs`OZiGevN(z{jQFX{ zd2blohrWCFO}D`8V$!;dH(t4UohwGsf!bAwnlb7@j%M>s2WmP>%9$NEY67UgYDba| zbFG+ko<_X!0(Mhjs8zhS32?8x5=k+bMvM|Po`XxPYNHJYB00=obN_1rJNhQ zthMG%2yQ}kxgWRm^|>Q~LU--{ZzUL0)|AMr)q=YJ$~)YYhax}n!_cT(5-SDa$Sr_1&5=(ao z-yy@ffrlY1BpIXlggvG|ju459i-T_i?B8x!Sy^$ZN#aJ1nJ^GFR3R@v#Q4 zS4?{DTVVwK-A{RDSMIO;LNBk=hH>8_+julF$Ng}*^s{tN7@DTKF)?+D8Oc*<2Z`E4 zi8(pv*}rC;r9x9QIReU0)0)$g>vs6uUO$sf8eGI%MZ;oYx4)sz92NhQ*~;cBvZ02y_C{fYkm z{=vZ(BW^`SMJs;YCr_@2%j15QxOM9m1H*`yX_7eLQ)zLH~Y{c7p}b;pB9!=pQBwg7$bzF@!Vrrpc)7 z!-v>GEmdwiX?;s~*w|1I{aUvum8_+O1w1^wu<&pgnL6vo)m7`P!5lT#a+~qpHVQ+l zGTjm#eJw4Q`F8wDT*MkNH#esYd{*yy15wk_VI>c}bLWnBf$sIoW7uZvE@wDEg+;mI zBo@|yq^|Resx)n>26?CrcpG@_46_i5pZq*ZeySOhw3?0~PUTGQjhLF63ffMLeSiM= z;lq&8wU@TGw6wGs2y0ANc6N4oxj@b2B@6>t0IjfN>(buyvfl}UcBsgA-High3IW@R z%2#Vz$$ggGl(~6%4%8hEVpgXB!`{AqYv(zClQM8t$iUE0^4XERm>K$Yl~6grh{>6D zCm840P89wPU4*Qmy16e#3t#>z-w0v(f*?fV&u)`sWM)?DbJiIcYHMrj>!0`7c}L5n zHX6(24P#ItDRsq#g|>gnU#d!++zyc8p$ezqGT3($gDN4+;o`*PE8%N*ei(js6*0Rm zp;Mb0LvsE4{YxKM>#(Tr!qgGni=R2mS%>&}@NT`vA`$cu`_i~3Jy@#4A(CWUIxa)e zZX=MOoOxq98O!{g3QqjZVpNKnLr=2ggpGPhn#-Om_dPgfb#NxT_d|agcggIi$Mv3k zNpD)(Gv|G}%R0VRtf^mwwgF+E-pQ}-^wSXvAF=1 z<6b{IqSKp)2wihkf42O#@#M3HCmC%!?rC%bi_r|aS5;!=fr%11$kJ|#X`EP}v4d)Er8E4Cl_>|7=Z#?OXMnjFqz7><1 zPzG9H5jOcY+Vdc!Mr1bCkKd4&oq3M?usPAu(GD%kp^yos?#|Fk;i{t9SLt)czNlhF z(aO7iupOjzbae6Tmj0%N&bARns^^!0Q+~?8rv)SCB}7CKK}04ivODUO$M1B|o_!r) zL*H-Qe90SMsm~eRso&*+1RBeyN7*3TC!U7A-(_+g2Q%V#4*RkHx}W{(^Z6pov2*Gt zdDr@c&Spy$9b2ULo(*mPHM8G_7h)(E-sD*5 z{Vyo0`fm|+6D*IIR{Sx}|3Y-DIgy12KuOCicf7JdLO46MpN@zZT?=>3B@ADbSQi|t1QK4#iyM{yCrA0N-tg0TL_J%_LPL zM{fGa@EU#Zp*%eiArl-7#SEF(GZT(d1kEsz+x85NhGOF-6n{oSfn4v6y%6jd$nbB7f#_L!be|130ri7NjwF zvOS{I1b8hv9OOwVK~MbVg?>^?kab-L-jOxfxizPKQ<^wLPMO)s*_kZUwMt(oqQ#EJ zsvpNjxbf!LNxFXw3k!p>?ImKki+$N! z>I+Ktwz6VnV|&O!PRe@^^Z=8R_e(f70gonpl+zK3Pn_umm4&AC$U~15U{7- zT3)uYv1#ST6EN~`BD#5VZSUmwpFe=Kv(|25wZ0ocQZ}5c4ckn1j*s1hED({TP1lqM zMwEj&zIpTJj&|YsB9{-t&Ed}b??OVxi;ZQW0z7_98ZLi_m36GrA-&Bc9`upj z`M*60u+}yLHTn4*f`YEj&O@pPu*YElb_B*1f8eOhPUmSAbp8BkV{KjSx<#AN!^y@r z{>{9*%4uoc<#oRTEMad^BOZn+EUQb+1rP{Vk)#(R`A-|X>pIO=H#S~cS&e-&S28h4 zgJSmMMq*tZ1p>wUVC)qlJA`5<#bj|;4L%_M>0jo+_jhUAUDfJ8`2N(u^}wJDTK zsAwK_2B~Tw?`IFM>Q&eVSP5IrU|rN@?vX&LhrLKZg@|RMw=+!?8>1!kTrQ_a{cfZQFqOmBFJHb4IKd5Q z9?Vj0nG)ycf2)N;bmu-Aec!N!^Y?fj1ESD290j!CkdU10?Clz?8aine6%~1T41S81 zw)qvj?tVP`tts)W!T9&@5rmSO`ZhlT8enX9kzoVD9u%&Ef&!2awp+ihd;|Vhrdt4P zuNg?l&fmX(fy^!}n8k&R+XP-ZxYPhS6c-eXZJB-VWD10eQ#)%gpg8mE*RLSxygu5L zzA0;JI)5utjD&(>baIlW_f`reDHb}M%k5j`6%{NX_pq=)X(YhIv*L$CLd`l962-Yc zg#YDCBFJKBbX1U^A6;?|dcC8g;}5NPsh&vrbZGZVw?BOP^vV9O4~X=B;e4E&;4=XP zKv{jbv9W=TjomLtoF;&}@x)VtZiLUw$VjRP1PtI-$Hzj6&4E_J{dn)AqEHf8(RIx~ z-LL3ypf1EA9%!;yzichyYsbUi@M*Cqot^NKcS@H@_2v8ys|>pzj3y)Q2Y`t5r~3Pm zVTl5*ya6i`5|We>{FY)^?5IETKzChTEA%-ju+aZCi7cROu=5rc7NAEp3oQv={zGiw zzA9!k*Q=(gEx#@ImaM>#cH%ryeEKwgTG$l-zXxx;4e)Ki1i)PfZ+wF83Y#oFJv}HW zC^|a2qobqq!-tmHV^4{12E4+;4^!3N${1te`*zGnwWYSqg4pnOOR%c&O|SDa&e*{f zs5}f7jU42mV#{N&_j{P5J5$U)?-1K(FWL*$xNMvz=wT+=mguDP$vHXg{aY*=8ZR(P z`WdDf$U{NC#yqHqBmPz_7_SU)(rSY8+utR}s@1i%&M(e`(uFusp~@K3EW+e(={piU zyXj4;D3YX7c%D*5leS2Shk;00TCzO#$DTz>(EYw82jf%!zUh0ub}=sbFhc_xyaRQX zMvgKwDd+NxQ17fgbSZW9f%fp5#)?$o7~!(^&i=jr3*~@RQ%JFQNQailaIU51Pheuo zqMNKZdyXBkk#$Wc;c}DlX2dbez1^R8nm(;mVakDU+y7nwg!wYu5hfbZ7Vc&fC&= zCHx8~zqK1@>Cc@|EW*%;J%|8X&wlqT8pYjMJJ+TA|5<=-4)QhVTp?j$wqsw#+&ii%xB zLuC9*r#(M^SjNMDxYZd%carIP@11xyqeXPgV+S-peb_WLWk4Glo0zCvANT2#mX6L3 z*yC|bQ4fMu8<+N~^f&WqjZ4S5@owI@@%-!^?A*&sZ|aV58y9J5Kdro%c6MB>tXQkH zH(0+oP^&5_-7*BIHd*Uls>X`v#WlXC#2$0{D5-@)>FrBX5gyahanOC7o%vJMi6aTr zZ+feSgolHepDiQerQyh|W0kI+UV2*EhYufS6q>ky8gUaDR>7XH zsGwMNhi-ptpvnG(Ia*rjOUtY;CzhGh$6@Pd1{OEbO=elpN)_?N>--5eU24P=)$b+F zw#?cuEG>1kwGFH|$19f`w_sHKq0!|hARsvPl&HMhZ`Ug*EG*2+`wftFl|I2g74F83 z8)#@~_BdD-@gVL?Mhy-Rw=FvE?e5O>rk$UAiX=(osi6SuOG-*w8!ejt{yZ80TWA|- z{<_d}wDN%Dv^mt~<=p{30$@dD5EmDB!{scjS78Bl?Z6|n?Hja?98Da*)6x~iUP<)bl84E_&UWq)DmTm$zH2CWm z)TH2yPq0COE^eQk6LC@*ms7Laq2C6lzgEY%^<8tL$uSCw~PS+~L$89=gnZf};Eh5rT2 z%U4b8?CcEW26X3Ym;w;2kUsEMCUtbpoSU-$xfCl| za~nMrucf{Fj03V;W?+y7&R1%(GbO$@l1mwvk75k-gysnWgojE>F91-`EkYIYqr0C4 z+kaSEDROXS$hz$8Xe+1}c7f4!qddrX} zNKej8+a7gqEk|T@S?b>nm8dz4oX;)1H|C8WtP+9`z(~}S=x6I7&BxGu@UttRxv0^8 zX~DT91eHNz!Wr9$`is4$2rxQ-RzSKxXYV&(5iL;Nx_KyQGe#fV-Fa3nJK7H0REWAa ze}Y)%d!qR}gQ8?$zzK8+Br|Y>sOOY++{CED1^#3=&iar!+9ZGf&QJLS^>^nRZ!S2n zpmm_s|D6Czy7<7=RdAfpXw#yw?ft2lJ$16rTWMZ{B3F@D60Kw3=>x-wa9Sq}28$X& zP1AC8m47Jk2ajU)br0)pBj>lEfCG<=>>#~yBmU#ZuY)T;GVs;i08BfJU}9oY*7{ zYf|*I^xTcFjq<(ageH=ofW}ZVq*Dxk&!N1Du#u)G3U-%asc{b?6(;bL;&8R6?%@8p z1SMXAk==fIQ}tZL)XE-y#*9Hk0&oAsl?O#O4uu%2RkkIq9bJx|Na>S%+rPg-E8BUm zjG=b@zb{KrcaG5CcB5q*5Mjxw_5V|?zEk-QuE;5&VYRmOc=mR+aNCrm`!Ns&pP`W) z{xA1+6G1>xxQ{MFPiy;^G(T1)tK~5fF&6qal>c7SPl^g?0|di@7m;_^!BY7`YRXdR zCgyKUP#KBt(2$W5`RT-`#DN0!?^*BZ{`chni;|(1$Vlm3!MLa2|G16aiH-RBO`#0F z#eRZ?>c{_YPQ*aubSa+{ve=)MNPWQi6$?8mUiZ5 zPkzaOzL2H<6X)2bd*j^hK2x!Z88`tl2|a%+VvT_ybCBnyrlKU7`06k$J9{9k(b1$J zPjoN7YfHOfmx>)Ab4(F2|DP^&>j*x=^JX*N3gC1Iqz9x)j~D7U3vGu@b0>T{!+(Z+ zSJAoW%Kwe>#w z=^EDr6-x)9%imWE3n23QiTZ+@{%_T~F+`GR>F6YRh&?rI%XEV$-bBbzyRAqPB z7hkjaB*d0x4~V9-IltSa~;_BRK$cU&r`zlbLgB$?u;EFT! z>EpHSZLEZziy)ulrdS$DK0yZQSBL8l{hLUM8Sta-GI4SeTrTdo!Ab$L5TQW);%(9qO1(3}7!BF1cXM6;6?c^)n+mvvf{YB%J3z!2QtUCCFP;L_{U9vFM@85?;MnE9rmqdJ_+e3&d0GGmLbK>DJ}f3wdxGgx7@dt%j?$;k@C6(8P}!?q5J(V zF$G0%ZGD}Clk-!jS;N)ER#s-F%lcT!i&0J?Pr%$rqn*#0UQi1J`R=f@+d@wVZq=xu z8llYm@iw}F_J;cNsbBB!A@%R+u9GrFJ^V_nQSaMl)I)^B!FDeMm9-z4ajCwzhv2;b ztAv8ITbN#LouMEqNqkEc!Uz)ahBQvk+4;L}L1Aw0>iW8}k`kDZE6dB!@4$;`nLP(s z0tg3AZ+B16#at*CB&YxmrDCLLvL~rn>goNNnW5)V>@wrU@CSwQhhVb@Gl0^izT{CW zeu!iQ1O$M@`d{|INhoppV$&6R66E)azYqsMB?e{F>+BG$Lr_!OT3gp)nysx@L3s0H zOHyI^c)DJ{B`c5#vE#Gj0uNr1Fcm3|={ z(5NWl|CBkn-hh| zfousB8_>X_<2^w^(Ik~258_fLVc~Jxis|ZC-AjAnVPW4ZDzY*%0_+s%sHv$bDZ#`6 z0R(`C278PXtG^U|u}`8-8?!uF-#7jag0ZqyQ1d!fYO;NV*d5$_j?@N#f#=xTu> z-X_6@!3|iwjdQJ;qzvqF(PIDb&bGll!5)>qU%x*)?THVIf6zgo16oiw&>&@jXq9xk zKXoswHzSR84wi=d)8TwReI%_yE-*y7U>IF$I(Ad?kClx;`+5WlQW_rHte4a3%Jkref>9N2KF(Jv&5J|Kb`ls7CUG!_fNxXIeGGGRu>E>(uZP@FJO znu6~)&F?6ysCXaG1_>lIkO2U47NKEB0Se#s8nQ$sN1eND%5Jt_>hJp;#N;IyOv&k= zryQd(N3RItEC)J+Tp)rbJ0|9`(>s?kF7WKR$W`oKD>*}|8YL)}u@>vUbQVS)P(`*! z7|X(*q%5GuuV&$9VNu|WZMZo6Lmqmq&?C@|t!7d}NT||!m_54FjGGcX2a1KYMv+$jiw58ZTvOIO(wrDML!f z-8Lt#EX)h=y>9(N;PV+So4kA84+5>zYgA_K3bUYZ=uYLA0e@G&a>ye!fA5FHH)6SQJJUS6X$ zob?8r07d};7c;Zl_wGGmC9~$IitP?Cj?>6l-`EI;^9&Bw+8P=%BSa8$kkS?$5do{f zqH@m6Ak7pbZ_O_*D+_v_zDUwL0Bv(9ko4htR;>waQ%C1Ps#?C*TFf2o;A9*eoUZQf z73b59KNWg
r(zT8NUl<-&|nsWX`0twCrto(b@jDlGX-6s@E74hOz5v~@nCt-lA4^YZfk>hD+6(D(+~4Uwd&!NJFd zhJ;Av>!U)A9M8EB77*w+HvMSYnUS)z%i|=0*@JTU$;}PAH<_(SiIP zM7X-O)z{hSemHK)WmrEkF+r_ElB4-^-T_2b)xKvUN%i18*>^>{pfM7KLN*V2j8KGL zfgxvd%S#zL?_)4!oQ0^pnI$-5yN$RZGm$3$ZE)=X@T0UUrUmy6;sIiKei(Vsq% zhLnaTDL$SpMsaO*mAo7Q{Sml+USXk&ND{OLFy)&ZsAVl~{*#p41M$t#XssE#=2cZ0&7{y`hGU%H=GpiIP_j!1ENiu0` z-BN%+nY0m`T&J%zHX?@l1u(h8?mF_)7Z}yQn=5bru?pZJT8z%$t{C3ogh}P2|KnD8 zn<{}j$bXvfY=@{U5Gee#`4%T>3MO`YW#zEGB|s%s#ZvU-=#>0qwt~2p@TO1z938 z4K%+vKFFVu5a0cDAB3;iK^}9SM`0_dPyE1@Oj3zWNB}En-$OiC5XfI6KXUt$IQZmH z7UOXl`z^M+x7c3Ya~N1Dj>OwPbS*!0nZO=GgJ8UqlM@@T19aeVn3*V$-G?zS>_kfa zd~(jW`%bZRx8nGjrBh|@zH$KjBi8WBNws-bUvW)TftSC{%5ypgx0b#rh>UfJsE;GnQMB@fgTT`4OjaXqr?nC)+pt=8}Dz%nGJ!Njr-FgqQh! z@`aBF)vmV`7K=~{4U9Ix8b=KiHwA5>DqNj4T!l(7n4k!I9&ZD(H=ghY-;+1q;PuA8 z1ABLhG+IO3lEOBL=c)Xr{Kb0H#bLI*)r0;~wEl2su!c3ps zm%QQPQ=(IAHx1KW0gH%8J$e+b&l%(+c<J=EZkR=4_0j&n{g=fNZAS3~6bzebY3&cc6$6Y@TWqMi(5>nCv ztvi}h{-`X|kVspAW((zc1C*hwGoPz1=oiWEe{YoO;tx`bx+v2VQA>D^8F8O4D@dL$ z!3Ze~J&9eYqxj#n{eAnCGF6A2=wVOvydPDgO$P6Ol7uojFEf2;+wO^{Q@=C@28KPg zASE97Sq%+z2)D5Ce`Jt3vg0v(%)!Bd{j<`XoQFA@Kwq=7Sxd(~p?e~}T6rM#fjf-& z!rG({V6i-bPX$UcP$JMWe%>h2IUjngih@A*&@J%ZsyjMQ-0rN@F9cySEHW}wF0Hn< z7OE!Lw=~H1N>(yC85x4WRB7ahx$oZA=g7;?KW`%RPSMI+TU$dx?03agKk1G=T8Q$M z5@W3dy*}bRDHa1_P7tf4IJ^c{3nY9Cb?kTjjG-|C`sR!c<-QMzzibpxS|A8D;nYVg z457#r7vDHOPYFprKGNO-LpUpefr0j$CZ*$e7*Lv;t{}xTrUeOr2e(gqUF)5o7pJZK zS}{Bn&1wUz+Ow@vKH!aY( z|6D38OSj;#g-}v%nxupt4p6+bwezLJ1@21+!)7pZBn zT<=^N8D{lSn29qoGyhE$tj!x`j;=V{lR<#A zFfZ@*{(u7H$dgp)XldnDkl<@e(QrOGRlRpNYqms^dLaaqQnRI!Cq@@dXW5mB$*j36!FErEmZBO#6W{n;NNC9x~gUJ8aEl2>b}*G8UyL!j|gb zJtS{I@WHq>81q_;;-X`fy$Il!f1bGZlP6x=O_TA9IzyNnw03g zvG|aj+~6=Tf9$HDpkQv!ls^ox48C7hS4Z>r1}Ukmikg8zuMsx{^>jD{;*|#%>Eb|W z;1m=*+Fuz25?otLji^0+`cz$=M@%g7!v}~`yb__&ya%XuaBy(;1$f4AdjOz0;HJ>F zIU;N530J414ZRknbp~4*O0mJaq$iMcR+YRUOWJ!I$HM1<>f-9kHD-WVVSvc^FW9jC z>{um>Pc0D=QCXx?AXeM5O4Dx=!jJ5O1|kW!v7q)U(0P4qGMcFON;rN6aiL8^{I5mx z1Occ+;{heuxs8TrqFdz^`~=Udv-psS>Q^tuhhsF^AtE(+@U%=fDIr1c$&+hLi_TI} z>lNtld)z03&l%0O73v1JD|I z!(fV0QB&iQE!ZE@S+)3{w3q;HpvOlXlAroU`!TbypdfG_Sjh-YnD&As&zsD6H^xfl zXPW#$0=ha$zPjNpG&^-DdJE0#AFSYgM8dYTdyO;5)U4PwyWw?lQOom+YuB$}jp6x9 zRVtu-Jy2eptv3`33gp{b*;IsxPhuk8-OH@>tSro_?9nxFKg6QJZEP~zHl(CO?Rs81 z&Os6akxUQ-LqhzDpwKgsJUo7r_#=7j;;j@1AAaM83#p8)E zA0OEo)VS_ZB{d-uGY5f=TiVbOVsdM0UWc3^Bw7w8?fS42o<7ad%A@l+-vOdef=(l1Sk=BjIh37S*rCg5;=WjrB%h+DbmPMR8pFs zoBMm~(pb}IOPgrYN90F?35szDMIz+!ax_<$_UM=$tMuUjFYZF?5#qz`IEyMEP1Tz_GKg2sTFvG=|uyo7mnvob@bpI2)av(9o*EnXG&lxsHO> z`UdLXfAIj9D*e6WQ_1Y?MzgE>)6>%xJOuh2s$UBDdinWy@2M}E6Qd+g7NVU+ppD;Z zH9%`HlS%DgJD?SD{$a*@aCoTVN`a^DvE0v4G%Cu?4Wa}J0`OxRfYraae<>671yL|l zu%YJ6$>udIoG^`EI9|%k#MPL7&^2Sb7hP&7y8in39HLJ6UV{L4(r&e4^uKSGsBCAtil7n*n?ndfv3Q1v%cYio#G zwTw#!$N(V{iU{J~iuM7AES1K~BI7hRHa6?)*MDx);q@WwSMKgr^63o8A#inpR7K0L z^UYuRp9erUXUYizWTHNNkjc=fGq8gcXOj^H@D*^cGlETumC|9AuoFG zbou#+q2f&KCagxJ_@R#RzelPLhe6|q?!{eyOhTE#XUiY)FmCO;o5D&hciKk(|11DB z|K+p&wigjUi=@yvQF&C!?XhR-rRCO95M_#;%=&uo(ZXktwB2H%v`{D-ZE-KxEnt3w z-F$Kc`ZORWC^;A8XPtxrkU54v=WcGkIB`hx-jqOv;xjk**mM{!KB%@}-L!MCb8*2; zGtAvOX?y%R;)W@~$jAse1qCFshzJ?AwXJ+Y?Q?mSM{i3q%Ee`#sT#fXeJ-OOfGsvG zuy2Wj7tIu-*x8!}&Z<*w-FrIBpi$W%f~Z%h&2gaHs_E;)DOYyeyVg#P$4+ta<|2wO$WGnRFgYgXS~>=? ziPUY9Ss{YS;+b+(Nq1~MbVORHffwB6S@y8${~3#wb56 zN|S%1HxP3OeBAMC^X(c58y1=zeH-c9=Bs+tO(%dcXWFE9&JMALFCwqHxbUOk0^*@Z z9c3WMh@?fbg+$*-u)85Sd|{mqmu1=5u;o2>AIqnT1>Qwz{|L7fY@R>=pI!r%YgY8cF55g@)b2f=#afavM!o--G< z>OW;A149Ax9pFM6ZptaQ`EUU3kllkSpTdLbuTs;gh2qxMhar_U2>K9y%=I$e9wTlL z^`bl9TFMdMX)8)E)|DqUS_%2R_ahsJZwLD9c z{eO1cKn&piH#$EZyqPK8u{IM^(^--g5^dDrINw%&5&Lr-YKUD3`!_AGt(o%1+kZ^v z^pSKQ85#nn3pd{%WDSNqxRhqd{9sT-VF00Z`zc{=ZX!CmzC}lhex1pIffA1c>+F0p zb8}!pZ5y_4O37R)JG-L3CB0KcsW?pJ6#pfJZ9!RAh@=fj zyI-KCTG1k*_ND0nRmhda=C?N(TTuBbraW+wV#~fSjp!;_gSHi1M&ddgpCFVyoTnWb z8QF3Kr#~5v^@9h&AP5x{1W@_vb3)pN^t*1$jcpU|q#KC9-Ox4?3!copb}8w_QM_iK z9+*VD7A(>CYOEYwTn+Af77#l9j-u=enfLurA?*7(z`S-lSwPmr?g`1pubJFD@bITS z6BdLr)Zb4OMs5yyaRIzn!8a_gTALqXJ#)Y0kW!Ya+>UIOM0Jq#d+`$3oKxiyN;^8d z!9P%cK6gPZdz1PM;BjX(%QT!L!6`RWPfzO4U9vy;K!!cyhkzn!Lc)&{ZxF_X15q3} zi9tFoeTaZn>)VY22!S@z@)84Sn8%n=b_HVyDj>I0Z1=USnAWD;;`iGP-W5T&1kUNv z3tDDj`n6MjFT}cm2GBnv_Kc@FN4}xx#>bSCqoX6pPewgsL=bUtai5cJLr_34Uv4ct z7s-bN=$yS!3OigA=vdlAL4X$-6bV|P0AdFj7P8>ME;2)bZ6*V22hgP!+Mk!`fD!$1 zZW}L{$dB1yK*dk$U*1*byk-8jku5}km!(~OohLL?3h`9a-uFeGZH1^>k~wcY1V5oP zfUZSNMO95W@RH(Y`T!+dD9g~Wyy-b;T?Q1ik_~GUBk>7-i;ml%^w@1U(h!Y#c6=RD z@GbTk8qa-vBuiobo?gA_}s?k?I;jejU2ctgGoUBKv@|yO2~Tw)N9RA z0__tg0M&M_tG9Qm#1zw$I!UF$ein5c;mqc z?TWd>8LL#F1!o-|pm9LH3zD&r==skl` ztvmaQxDz(=oPlbrp1}DOZJe;BGu@vKM8)!EQSahpF-K@Bj>sf?)VF z6jMU)=1^H zCamW+adA9cV+4%&@8zF-{O|#`;DoK~|Eue}1F7u8zt1_2jAUmegiusc$ta^F%0n8G zWTi;55+b{-WEVX)iOQ-ZvW}6J3Yp2KD48c@zMu2_e(xXeAFscPv+nzR@9TSApLGM| zGBxdge(nXF1(jxucg}RpLt2h#h*CLudCifI&dyGt<|Za^n%nuRv2$<`O$Dp-0fJ|o z<}Z5LJnB>_w71uwn%|X9fMrA1XvM_xTqu*&!xQlEELx=y3D}gNMuS8Pj6dUOY^b4( z*UAh{uaD%Ps^Ty;_9vN{71Y*~_GN!M-rwh4Z3@mSoej|tLrHQo-vKQ+ z&;xiS_Kb>E`G377ECN$3+PeGa;}pF=D$;G;# zmAJm;Q^y}YDQ>ud4$8}K*u2hIW8pA>tR#x++OR4#5_9V_!t0R{5j0Lg>oZyan>R|L zq85b*CAMz|`uDMeWxzqUMDvnlp5-YroExU$ z5g>utwkkP8AXnV*l|FA%>M1w4*U?ph4&61O$gywttEQ0K-Gn%u@BbdSz9MmP8x*qr zi?s&<=?x46fr|#bw^i9CtKDYjLmOGXPYH_qR8(}6e%&nohAji7$egdEuP^tM6tY3~ z3v6o3fkP<39B?hv-h2Tt3jBkC#Zrzn@a9krXwkdk{fz}g^xhD~$?=7P_~~jFqXXp%mr>H6~Ozy{#2~}$=kAJ3si8bt6x+xJNh?RLfpPK6YdS2 zAc-)5Y79kt6Oti9LgeB<(jI?HsaMZ?>5M`QjKMQMfSp1$0brLYQftJe1nXoPxX7!5 z0xBRluepy0Q6LMzsaqx8{?6vTcoeS=f#byB`n>%*PZhC;?coVny!>`&?b@>i2zQ+1 z>o>$E>7BAvYsUT!1ApAnZ(&>eFuF7>ylyS`7~}?o#r+;rWnaG^?5GzVsY$v2#%u*3dXlRWk6Tw=jYil-ve`@r>BQU`$ao^N#GwF z8yjf{CdJv(D30}j?-U!jDnKBJvOhF7B7SP`Oh{Om325s`vEw-HB~#^FoHq}6^e-o! z$XFW0ah3G1?uG>l6#!EOS`A#ld1doof8|x|W@ls-I@HzOt%x=0y02nw=~rF2FhG%8 zkd&g!Yi(;Q0QCfj`8)(1Ub?!U_I*Ay2Wjj2uZp$nuC5Ei;i{8!f3ZHIV`2(mQUf|c zJDI>L@c1?C_BbJ1S?gNTkFR#rTZsb&GhjV&QgY`siF3b`&Enu$j-WuFZcX~6shyNN zpVsdQZ326M+N}@Vf| z)6eeSj6qX{k-3f4Kn|G^xw)UL_xF{!=9QGhPZS#H>(8uCd8?w>y?(tfOADF{fGvMl z<~}oQ*znD6!Fzqd+xv%d|I2P$oP4yz@Omi$4e(xh`QBoOjLhA)kO}mcc>uXW2m0Vh zYD8ihk$|BKq8MRMDu?YL^uqWr!AEsvkj*4-0mw85VW4cGFaGl~aJnm7JudE!6;`?9 zX7_yv^X=Gn)=gVvoqmS8KKl+rI6gi|vClWnhi;>?~M_rIzEu z9OnnpP)>1)RjIC2tCoU?$BLV~eOxv1vUaeGsN2SG9J(5f{`w=}jr;@R@9Ce%CT}Pc zFnAS61^`;UWR*?nV{`-{?WF2aU0%8E+qU@%N(2S*6RKGldinJjohtYWYBq}s+T)yo z3dRNBR8d&iv1g~OqRt-Y;k>*&s4-Rmo#nPzW2|BFehCW^pEPgn5s@mXb7#+LiASX{ zNCOhkp>rtdo#XeEWvO;dFf_gUfpg>^V=pG05AHdDk!G?9O1ErOc;JT`TDPD2<{!WF zOPzO=M5=aA0aJ|0wXdXBZVBg$jLI`dE@_6!!L*=7-byjY?8VN@1Vedafwl zSEwhDN|c=VV{hsErb=ZM{cb$QW4)uT^+=DJ&5`JWV#x~Cq&-tpZn~cu-rR^%Nmh+( zEmyq#*<<(AoXQVRRSfSJWq3qAY1uUjKRy9My`$n}0Nq-6-7sy_Ja_?HGU|+DP;Fdl zYAUR6Fv6%!p8$Lbo68_@Lmn9b{UZ(5I{%)27IXdFj1*~>XKWB427V|fHne>_&5a2G zUmrSyN4qaQ|1#bce0c1A_dDZ4x$U^{fpG(d#maW=yDfQGMMU~5-6W~!%*pkCAhFVE zxN4i6CRMmOE-h!;;6*zgV}%RbmyUsFm(f`u9s2sjGhJ$?dKOztZ6gOIo;&W7*%7ul z3>y=qN2vG1wGYyzPNcV>M`-3f0}vE^T~mVM8ARaRtHNThADgFAgWeC#&N>Bcc_eee zX?=BJ_@#zh9DH}^6e#_QaHT>{y*A~&ewnufG6l#5aL5sfiMzO&aShI3Kfw;Tx;Px} z+V8ngaP5m!$PzB+i=$AiCLpElm6!Bi1_%E&c(J}Nk&K&^ZL@=4Qd;zdy-vpBCEa>w^CwmYN~mq zA3gdo=6h9Geaf!6@7^hm3Hahz@tNqk2wLAp31IcH$<>I(aY^dRn3NWkm-qep1L+3v zA|n|dt(Zs>+hJ-mcIHwO`{TzMbb4PI${>Ntq`y+gBZbsxg@6zMGxUcuV7lh zDTgu=g{LN%3jstsO5#5M=z%Z!43Oji}FS`9^w65jHQB`d;t# z)j-y*N+5CYPP7iDwzjr8whI%WDLmo9;ahtrd1Kf=KAZLfcUJ}-MSzM+9FQU$O4#oz zS#q#EDaEQ+ET4p?xwW-5U)1MvU07r?SRR_^5S9I}y{^_!lqI6ztIraCv#U zdt-qj6$ZYp!9VWWDv!#qSlYIBbj;U_g-5KH&wWy!_HVJi1C=7+UUhYKJw3Lj^QIME zhh->YwDvmr&TIqD?m)Nq`SZM%QxI~Sdj4r|YHGqstrAz4!Z)pk9I`R})*BTwwOgpf zZ)ha+9-e?%c_4Bf9R;qYjow&+>l?!`dS*G+d5PrV$#|iDRsNdn@|cika(2 zW=z*c^0s|ay8D9DeaO#``rqv5VuF!sOkq#P6dE@A9Yf6Thc|H|!hG< z#M-}qQ?3zm3^wLH_YZNr^#U#UiHxWkD_O3Hm4GHP%OWkouXUj;BV+VMUb)db=N&5> z`h-pO^&OE=hwc%Q-P?2DF@V4r*wJC|K=WuaZ*c4`&ZBFH#aR9t-odP+e-_0M=CZ$Y zKU!u2MZ_AiFTB&sZxz5awopS7n(?xN=64+a|?ffeBQ{7->0Ixrgt(AQ&Wad6T|Qp@n=rJ*hI3e;?iiP@O}hkROXM zY7_=+p>W9yCF^l4<->K9a1m`G;wf%yk5EILewJ|HI%KPUypPOI5Y#RF&hEUo-4f3r z`BKbe?`9Bn87ZG>>4Yz1tD-dyuio~i){J<1LcyFeV}7U*UQJLTL{~}mZ5{$W>9Vt# zk6}mZUFz)UIL-b3Km*1er%MdU|OZ+ptygF8>5fMjlsj953M41pb z?HA_OYV%hPuNbM{a%(^(xAPZ&pI^NkzvUy*V96kzh`y;;_ajA^o=R0s`aj|*)zP24 zYG;>wc4x+NWKqb=Rb9u;HK(}$tSwJ{@rJQG_5E0%ru)9xx}(ICRfE>oXg|K`4zSL) zrtcFyHk5cbohkWwPR>@}PU-s=<;Q~PrXM{J(K7T*`gm1LbL;HMwJm##J*sk|zr~Cj zTnY%|HQagmveQ-w=TDZP-((pfd>I+#mp9+>bAOqU!@zVYktW2 zSj4u*Rvt-AnlG_vK4Bw)qyw({7wtgo)UHc$hotOz@I>#f_~xrD3&FW@<*Zc}FJ)Py zbu%w3Cv|Tk>3>C+I=GeJA+D=EMOZ`JE*{qM{Qmj(v;9j zZi%{e?L;`e5Ed%ThA5n>swynPv^3E){_UGiCfl5tw`)l|X7fhCuQacG$!2Eg{YV89 z7g2=K@2<+LHtYQ0%?r9GK`)axjXI?JO|bHGXMKkx&@+HZ2Wv_!Q*SO5x4d zPoCd8$4%GEE+!2~{olmI-mWf;WQZ$*W3D?9&Qhn6-cvWD8vw(o+@2l5>~A>Faz70b zTQMiLr}IhWruwwoe1!Dko*-p_ubfqvZ{GLOi41C0 zXa%goNh+TIdT0Lv4rOU>zU_98BvXFZsCn?F+s-hXf>J)WbF(Ia(NA0wj3Ck+j0d0$ z6(v9*V_rq(tDEa@1`HAu6P&Xl&F+`m;BR%=w2xqKKYlE8n-O(>T%%zDZMkiC)%pW; zF=#B#)(rx12oqM-)#tV(@of;7M=c!WD>Rgu(C(P9IOH_sgSrV&w3dZsDJWsm)S^Z@ za;wCPcK2T$yQcR>FYSAd7*m+z!KDl|!%vWLy1TdcAHk+49|B!9AZef35}k5}?d3l> z35bL3yzKT^XM^+)^UNZiFbvVYWhOE_a~>L$o7e|)uphK?@gW@R$rDS%Jrwg`0@QWj z#aF$&-QAV?hS|m46Ld2nCGNJJeme1_zn}ezLTdI`t1&n8BE@$ekg@uGiuzPvZzjb| znm3=YfEZIIb0a^qDy(^$=^O#ew6?8DaX@dIhD#i}zGj>0(mY?{W3gA34V;119HVU? z*d+sjay-`Q=<2H1>SYMcEjl8lxlAd4J-4@d3sK`5{Z)dC2)3l_#54|iQN|+#Hn!3^ zWO+Q+d1^i6!;w!43~IMQR1VHA&;5HWuJ7KxgB0Iig?Qzn2l3sx*qq^ek zo|D%qCnxP7LY4w}U}9v%?6FC2Q;}x1Y*B^NDD!3B6i>6)RA=X_S0y?ZAO4cvEBG0C zu`iSZZ74e!7+5(KjTLW4RVl*qV3KFW_>iAJ#wS>`b}YGf_1B-J9cP|KT#Ji{W<18m z{5L5#clW~+n;Xlo?-y|2gpJ#h^R$qKE&bE*Wn3Ery^>usVp_JyW^uTnozc3ovVv#F zef(ZtUS3})Pcj&2W^h1SLkz{z6>e1;DHwZ*?w^1+yc3YA)66gGqnkE>OElxXj&7mQ zmjA*=wHAp)eeQGMEAsirU;j2+hC~LL8}bulV{vjpOaD ziZ?6#HPcH^&m+=tx<`7Zoq~IzyZbSFVOIUOu5>f{fR=TTFAihjB4Yl%cB;32;;9eS zM1mB!d_qO@O$a^acYTjVrQ4B*7^1ku=B|eDY0%^VSkNWjWd4UD6q`2^b@|G{i9Q?r zeP#CRjS-zW6^P2p%CBF)K3=wchn=K|tlUtZwU`fZBV?6)|9-VpOl%vZ%VIqDA#+(n zv-cz;<3@jZ?~l2Aix+}5PMN?6)E2Qo^ANDYTUUT!)vfm;n&}^#1`U< zlI8%}vXrdY*tTHkK#FS4DJqJyy0NWSUE_hHq#3N8`6|oFdoP1iss$iJS>)F?PP#Lz zZ76&Q#~7?32e$*e>GlIqz+gwUO7?U?31AHr^W)m1s_OmcXM0&$86xBcVYiO!YUyt=r6qH+Q!9MHcV*TwjldoY*ORdW`%; zk*NKAN0wG(0o*^sOFu_kNl%fQ^X5@NS{8ubKq2=rpxihf;G;lN0lE7y2x0zn?Y(v0 z#^!m?Z@X*P{z8}JwNTRkG3ju8S{6DZSTh)t!5ppwwCnmkPrs2z%~)Ihw6XD>&xaQb zb2?Ce{SN-jEt!0Gd+sUL2J<~=d=;F>*qQ!Da-;x`M3$whDk3}*6>na}q=}fam0PPz ze#6BKXaRRHo1 z|8WQIjQO({lLvbvw47x~iU<_;GK9nkNRKpUFbGuJ;_Pf&d_L%PzJSid4uko<&;3_U zUtiy~FHaFT!_CWkhWpmvS;1x@3W2aihIWsDD{hUj(LhY52puFhvxkQVa8GE%E*coj zLoo&?40>Jr^1t6#7y7L_RkKCR+LEtpvM3RYgC267$}zaU|6k0GP7gv`nE3eF-$cCk zu#M_xl8V$4bz9HVk$}6p2j>0$DenPahVP$~A`~S?G-Q!+ z`Y+@jkPp2~Nil1P+V1+zkzscs|6b559l4i0ATR>nsqzMIReBZn&1BQhImpD{k0kIu67!wSmF!1FVzD#@fZfT?; znoVUf<>OUwh;R$hP7#iRM${oMrDEyl3uTuHVC2?bUTc6FfLGBJRFGnJntHE3%S>A8 z>0i^-Z^IX5ifIwu@u5F$XZBrfavQ`l#9(gmJ_J|6r0xbVfU$#H&0vV* zxRcTO>+sF*p)lbT8{K97Z! zSWn(0=>B-y?{!j6bYdy+KoLvl7r3Vp_lwRJfhCz-yS*6>QY$p=S+B5|S28jBACr3y z`7d#qsrL69><2f3iIO7x-Tqt=d!quTEEI?^Fp!>FG1V~fRVMjyvHM*L>0v^0=wQar z8YadIo+01Kmb?J?BLtVRhZVmJ1vSwzgd+rEyfM z-P?Fmf3OwR?iV+3M$0_z`7IvWqRxMejvk(= z;ez4v=j0^VUJoS2Aig3A`uK?n+blw8FMqqVjLZro=3@)4OTm({AFjyJVw)C)H%DLm z3)?;_Suyl3?|LV(UD$ms*s*KZKjNH`*WDZ(a0Jy4l&x2f+FQZLVmE;XKFDY7^F|4F zAJLc>va5M3yhcSSToEk-d!0$Guc^}+6GUkx;-HlSX$@c=_L~Ux+i;`Z<~jWQ?DMs? zwUj^=)9-`WWTH=63AM)_j|JiB9`$Hor?Dh{9|rDh;S}jd6d(R+0hSwOKxKQ zL+Ko_LqMof)Y0$DxDFh&)kp(u-1oy&h9?>tc$w_wSHRF-0+QOQ3`h|Q^v8hm5arr+ zIUEVm7WlnNGMj{8{tH}0CAj!=FK!5RU6|^x0Jm8?Dv)2=VvXb{|5H-g&z~F7tS_6T zLGEA~)*nFDF(~J*vI8Y+G_nDrR6|G4p(IISuLALA>WEk4`UTA*HScj{-_?56nA?Oy z@4MO=7vocO)#k$(vQJ)q6EEwIedrI%#0`N(Y+ z_41SHEr`C&x=CqdFuu;ySUGBMrFq*uvH0650F@OL-bKO}H@<%hD?f*L11Oj3M3Zft z!L*D-T1p4BV{o@&pC|eHuzZ28U#D;!AAP`o#rBO6#5hnkFqM6viLC2{JXrdV^4SAw zXMXAqcM{a+9T)9ybmjZLn0}%iJz2J3!q}AgPy9T{qFMVxyLRP(hQgM>eJsbg*a;94 zNPDzB5H6p0Ee_52`EUuQN!4Mb;v8l9=TCEBZ&BE)_YXqA$QNQQcxqy|$Id z!t3(JXcdjOH%wpDWayxH_L!8yOoF_7cE&KF!#1zG&2|zvCE;JW1=0_nzvI^*(a5ay zbpPY`L8LDYGB0e+ShFyjE~B{wo<8KPgk}Z| zBW^K7FP+B+EdlLy@v)K)+9#co+Rw)VSoF`|JJ|3%$1`H_T)6j9km2Hkr>%)^<>fEo zch9wUKKwp9dhZrdR7}rFffy~p7&IpkHeyM!?q?B?)RNFky7RN`8GFX=h(T4S5iPXJ z@VaK-+zzoRyhZLC6kt#kjl`QbXE@a}ig7ca+u06nkDk$%SJcm{>!l|$Fw;&C+(8S5 zu1~nE3r9?CkW6;CAr4omL^K$a$Y`PgA1z1kxCmqW&63`UVA9?H!G1x(Mk#I@oRlfC zOKnr-eyW!Yw)R~~N%ilDq3Mrm+P3t%Vb>KEvnfV7E^YlADfaXMOw5tj1dlI$RD%xP z!9n)he!?veP0`_4<4?@H&79=sU(L|WW8N3T(qo@SqWKF`4Qbhzq%Uj*XLpV^vikj^$>UdUhmE`??eimKoW6|{zd)t3 z{3`Kdw+vla#r6ygTDy7mj5Ymt2?+x;zB^n;)zq4qn;<5F-Q3~uLBtu!T7?xclWK(< z?CGzPi5QhF<X76Gb!i8kY)Zrfpx;=w3=xxb|*dHquibO){F7x#G2b~a7xcUaY1g}bv$}vk$^14%s z!<2!na&Z4hs7QU5+9SGS`2wkvKYvAi+vS=)|Jx_(%=fOOo9{^@Z=NS+#F zdIHAqgo;M@Hk@<45(n@uz1 zs+gxh-QfqDQY!-lp|HBURP>=(AQ|hw#W^4JOV)R@!kGEc&rhiWZ8xN4wMVA6T&-l* z5%B#d#$W(Xc$H~>!51OiJ-+pCrl1=mXH%#fRed(|g;rwI!!B?nRrc`VOGu7eT{Bel z=OFXH3=@Xy1$#c)p~dT30)!k&YJ?%sx4=?sdQIu+yxmTmWCR~BR!%K=91=>pkC2kt zet|R@_R%_XLF|%6whZYP%NF~~dwzevR;FPu%-1O~GmZ{xZOV_AQLA4snZZXh#hgBe z;z%;`J^G4N?MbxbLN2igyP6K=X6)elbt-+@io&-cdJ^&c&^P6yBuQ#VManlC63)V@^bYtQUBo`N#t5#Ow?k7)w(^WIG?92WjNsw4zWF(2) zqMVCURS7CrixFmX-ze1k^Zoj~zb1jHR|Uy6sw6GHFX4y&=+&gEDiOsTNUg&AHS*$) zNs6356mwQrZB4=FM<0jt4aXSzv~>k<+A*Zrst)ZEZyb-z&J;eh9R4Fg@}4fm+<_F( zI+M=Dp6F8<{ECjkNDw205;SM1_b)axX-O99QrKOY6Me?W8ti0#`evs3V^m$WkThqd zOU;T`#>kfYo+kR>>Q3LNL`-)kMV%${-@f_B3V+x?8|Op{8M9~3To+_tBk6nHAs0?9 zEZ=SvU!6Q&?77xaJn1&MU=>tI>HO7@YQ>(x<cXt)KSQrRWnAeOP2kYWNmRqNU zdJtt=QGM6-BU36yzF22o%hvR|+|mwU2fz@CwW&!vG`FbYG4@3Kp}9A+8Hpoi1*Gu3 z(y|4+JST-ZBY1Nt|9u8cf;D~ZmpzN7EzE*=a2VHr55-aGZ^)sf8|7+8_w>iYg;tF3FsFSh@2_jGjJyTYWw`h@TD zUnx(es(P0Gz4(sBb$w+HQlIsEuOFu7xt9r*-Wn-Z2o3E{pL_L64t`|BcB%%J78V+$ zo|@i64(Iw|MoBV!(LT%8t$oa0M`RGa;GWrTV;*@}FaI=vgG%Pl zHrn`#p?ETS=<`tWxNyyxZMmK(7U~gu)%Eowd+j8LCE+_b*x_?;z@?0~5l%_|KPqxZzNtAg&)G@l8!SZ+kACKOYNZuA{1oovA3^*8h|m_y^cJoQa-N z5KdCm_}6wxN!2$tihf|+${MI6ak;<+a!Am8N3Use=0aFoIS*-9%#Jg(yt7xWyF{q% zQM#GY9|Fzy3xIS2F$ArlS_6g44*(ySCbB!%ei|hjN|uNY-h1`HV;$m2DC$Q>N7Xwq zIgxgbq>1Y$_(LLe_c-6mR4RW*ucb2a_<$v1t`G%a$x<|)vvnw8183mFm>Bj4DToM# zl^lTRU>EmI6!{#MF$yoXz9+gu=I__?=&*>LjSX%c z;#8cFl#z1$8jNJ%WtMzGvo_y0Ql?&gB4vZ1544p}!d1ZmB+#TnlT%ZYy{etvQShx^ zxNuFDugFOjkC2bwRg<|5ievfsP5Z-`BIwklr@Oj63rNG`ysPtKg%A~O7|IcIS9aMO zw^7rz@lkASf9dUgXa&U!jtW+unfWaUmlm3jZ8jBgk_6HuqWfRKVb{^;qpQ}s$LZKL z{i;*aRfq1lTo3FDZE1_vxin($trgvTIo*fGrKKU`5eR@{x!Z(JYRvoE&Jg{kXM|^bzz^x;VqlVIvPC+4u_f z{B_5?&JSPQxs`}@P2++3B7Wk#Q%D+;n7*nHFjs1-MchT#KvuV4^5*1Jk5G7L^pXi5 znw?DhCA&&}wkBDfwsl#u49>XabFhnZ@bmHc2t%PvI|Pj=ItQi1E><+SK!RIWt1I}R zir^Fi%GAY(U%~}nYfpQ+_#v?6)q@llwFvSMpmSL&!+*cF1?JQF>p=WRg>3|N&U-j- zCB4uuBL~%o)yOxpc?QTLV~fXZj0-~C z)I9E!m*sSNgeRBg4)*5TsaoHW4=G8O>JiTQvS;aw|DG~m*WI+W#qa;W3;%NDI)ldf XeJV~`*|@hhfuMa%S0nd`ncx2bfs}p# literal 13415 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