From f737ead0637ffd4ce4d6103968d5bffc912e8a19 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sun, 23 Aug 2026 22:39:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: harshpreet931/Qwen3-4B-C-Coder-SFT-v1 Source: Original Platform --- .gitattributes | 36 +++ README.md | 112 +++++++++ chat_template.jinja | 86 +++++++ config.json | 75 ++++++ generation_config.json | 13 + images/ceval_priv.png | Bin 0 -> 57382 bytes model-00001-of-00002.safetensors | 3 + model-00002-of-00002.safetensors | 3 + model.safetensors.index.json | 406 +++++++++++++++++++++++++++++++ tokenizer.json | 3 + tokenizer_config.json | 250 +++++++++++++++++++ 11 files changed, 987 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 chat_template.jinja create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 images/ceval_priv.png create mode 100644 model-00001-of-00002.safetensors create mode 100644 model-00002-of-00002.safetensors create mode 100644 model.safetensors.index.json create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..52373fe --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff41480 --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +--- +license: apache-2.0 +base_model: Qwen/Qwen3-4B-Instruct-2507 +pipeline_tag: text-generation +library_name: transformers +language: + - en +tags: + - code + - c + - qlora + - unsloth + - text-generation-inference +--- + +# Qwen3-4B-C-Coder-SFT-v1 + +A C-language coding specialist built on **Qwen3-4B-Instruct-2507**, fine-tuned with QLoRA +(rank 32, all linear layers) on ~23k curated C instruction pairs. This is **SFT v1** — the +first stage of a larger pipeline (synthetic execution-filtered data and GRPO with a +compiler/sanitizer reward are planned follow-ups). + +The headline improvement is **instruction compliance for C**: the model follows exact +function signatures and emits compilable code far more reliably than its base. + +## Results + +All benchmarks are execution-based: generated C is compiled with gcc and run against hidden +tests in a sandboxed container. `safe-pass@1` additionally requires zero ASan/UBSan reports. + +![CEval-priv: base vs SFT v1](images/ceval_priv.png) + +| Benchmark | Metric | Base Qwen3-4B | **This model** | Δ | +|---|---|---|---|---| +| CEval-priv (161 tasks) | pass@1 | 36.6% | **59.0%** | **+22.4** | +| CEval-priv | compile rate | 41% | **80%** | +39 | +| McEval-C (50 tasks) | pass@1 | 52.0% | 48.0% | −4 (within ±14 pt CI) | +| McEval-C | compile rate | 72% | **90%** | +18 | + +- **CEval-priv** is a private, contamination-proof eval set: 161 tasks machine-translated from + HumanEval+/MBPP+ to C with deterministic type mapping, kept only if the reference solution + compiles, passes its own tests, and runs sanitizer-clean. It was never trained on and all + training data was decontaminated against it (10-gram overlap). +- **McEval-C** is the public McEval C-generation split. The pass@1 delta is within noise at + n=50, single-sample; the compile-rate gain is the real signal. +- Sanitizer-clean pass rates equalled pass@1 for both models on both benchmarks. + +**Interpretation:** one epoch of public C data (StackOverflow Q&A, curated instruction sets) +teaches *behavior* — signature compliance, compilable output — not new algorithmic ability. +Exactly what you'd expect, and what the later pipeline stages are for. + +## Training + +| | | +|---|---| +| Base | Qwen/Qwen3-4B-Instruct-2507 (non-thinking) | +| Method | QLoRA via Unsloth: r=32, α=64, dropout 0.05, all linear layers (66M trainable, 1.62%) | +| Data | 22,913 train / 467 valid; max seq 2048; loss on assistant tokens only | +| Schedule | 2,400 steps (≈0.84 epoch), effective batch 8, cosine LR 1e-4, warmup 100 | +| Hardware | Single Kaggle T4 (fp16), 8h33m, total compute cost $0 | +| Dynamics | train loss 1.78 → 0.97; eval loss 1.094 → 1.067, improving monotonically (no overfit) | + +### Data + +~34.7k cleaned pairs, sampled to 22.9k train after mixing: + +| Slice | Count | Source / license | +|---|---|---| +| StackOverflow C Q&A | ~15k (capped) | [Mxode/StackOverflow-QA-C-Language-40k](https://huggingface.co/datasets/Mxode/StackOverflow-QA-C-Language-40k) — **CC BY-SA**; content © original Stack Overflow contributors, attribution per SO terms | +| Glaive code assistant v3 (C, syntax-verified) | ~3.9k | [glaiveai/glaive-code-assistant-v3](https://huggingface.co/datasets/glaiveai/glaive-code-assistant-v3) (Apache 2.0) — kept only samples whose code parses as C | +| McEval-Instruct (C) | ~1k | [Multilingual-Multimodal-NLP/McEval-Instruct](https://huggingface.co/datasets/Multilingual-Multimodal-NLP/McEval-Instruct) | +| General replay (anti-forgetting) | 15% | [allenai/tulu-3-sft-mixture](https://huggingface.co/datasets/allenai/tulu-3-sft-mixture) (ODC-BY) | + +All slices were exact-deduplicated and decontaminated (word-level 10-gram overlap) against +McEval, MdEval, HumanEval(+), MBPP(+), and the private eval set. + +## Usage + +Non-thinking model — use Qwen's recommended sampling: `temperature=0.7, top_p=0.8, top_k=20`. + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer + +model_id = "harshpreet931/Qwen3-4B-C-Coder-SFT-v1" +tok = AutoTokenizer.from_pretrained(model_id) +model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto") + +messages = [{"role": "user", "content": + "Write a C function `int popcount32(unsigned int x)` that counts set bits."}] +inputs = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device) +out = model.generate(inputs, max_new_tokens=512, temperature=0.7, top_p=0.8, top_k=20) +print(tok.decode(out[0][inputs.shape[1]:], skip_special_tokens=True)) +``` + +Apple Silicon (4-bit MLX): see +[harshpreet931/Qwen3-4B-C-Coder-SFT-v1-mlx-4bit](https://huggingface.co/harshpreet931/Qwen3-4B-C-Coder-SFT-v1-mlx-4bit). +LoRA adapters only: [harshpreet931/Qwen3-4B-C-Coder-SFT-v1-LoRA](https://huggingface.co/harshpreet931/Qwen3-4B-C-Coder-SFT-v1-LoRA). + +## Limitations + +- **Algorithmic ability is unchanged from the base model.** This stage improved format/signature + compliance and compile rates, not problem-solving. Don't expect gains on hard competitive tasks. +- English-only instruction data; C17/glibc-flavored; not tuned for embedded/kernel dialects. +- Inherits base-model limitations and possible biases; generated code should be reviewed and + tested — compile-and-run verification (ideally with `-fsanitize=address,undefined`) is cheap, use it. + +## Provenance + +Built as part of an open, $0-compute project (MacBook M4 Pro + Kaggle free T4s): six-agent +research sweep → sandboxed compile/run/sanitizer harness → data pipeline → this SFT run. +Fun fact surfaced by the harness: one of McEval-C's own canonical solutions fails +LeakSanitizer. diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..a18870a --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,86 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0].role == 'system' %} + {{- messages[0].content + '\n\n' }} + {%- endif %} + {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within XML tags:\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\"name\": , \"arguments\": }\n<|im_end|>\n" }} +{%- else %} + {%- if messages[0].role == 'system' %} + {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %} +{%- for message in messages[::-1] %} + {%- set index = (messages|length - 1) - loop.index0 %} + {%- if ns.multi_step_tool and message.role == "user" and message.content is string and not(message.content.startswith('') and message.content.endswith('')) %} + {%- set ns.multi_step_tool = false %} + {%- set ns.last_query_index = index %} + {%- endif %} +{%- endfor %} +{%- for message in messages %} + {%- if message.content is string %} + {%- set content = message.content %} + {%- else %} + {%- set content = '' %} + {%- endif %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) %} + {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {%- set reasoning_content = '' %} + {%- if message.reasoning_content is string %} + {%- set reasoning_content = message.reasoning_content %} + {%- else %} + {%- if '' in content %} + {%- set reasoning_content = content.split('')[0].rstrip('\n').split('')[-1].lstrip('\n') %} + {%- set content = content.split('')[-1].lstrip('\n') %} + {%- endif %} + {%- endif %} + {%- if loop.index0 > ns.last_query_index %} + {%- if loop.last or (not loop.last and reasoning_content) %} + {{- '<|im_start|>' + message.role + '\n\n' + reasoning_content.strip('\n') + '\n\n\n' + content.lstrip('\n') }} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- if message.tool_calls %} + {%- for tool_call in message.tool_calls %} + {%- if (loop.first and content) or (not loop.first) %} + {{- '\n' }} + {%- endif %} + {%- if tool_call.function %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {%- if tool_call.arguments is string %} + {{- tool_call.arguments }} + {%- else %} + {{- tool_call.arguments | tojson }} + {%- endif %} + {{- '}\n' }} + {%- endfor %} + {%- endif %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} +{%- endif %} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..396b992 --- /dev/null +++ b/config.json @@ -0,0 +1,75 @@ +{ + "architectures": [ + "Qwen3ForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": null, + "torch_dtype": "float16", + "eos_token_id": 151645, + "head_dim": 128, + "hidden_act": "silu", + "hidden_size": 2560, + "initializer_range": 0.02, + "intermediate_size": 9728, + "layer_types": [ + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 262144, + "max_window_layers": 36, + "model_type": "qwen3", + "num_attention_heads": 32, + "num_hidden_layers": 36, + "num_key_value_heads": 8, + "pad_token_id": 151669, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 5000000, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "unsloth_fixed": true, + "unsloth_version": "2026.6.9", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 151936, + "rope_scaling": null, + "rope_theta": 5000000, + "transformers_version": "4.51.0" +} \ No newline at end of file diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..7de2e1d --- /dev/null +++ b/generation_config.json @@ -0,0 +1,13 @@ +{ + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "max_length": 262144, + "pad_token_id": 151669, + "temperature": 0.7, + "top_k": 20, + "top_p": 0.8, + "transformers_version": "5.0.0" +} diff --git a/images/ceval_priv.png b/images/ceval_priv.png new file mode 100644 index 0000000000000000000000000000000000000000..df2bc5d0e385b026b3f13a6a51195f49e2729577 GIT binary patch literal 57382 zcmb@ucQ~7I`#wx5)f%1DDB2peH#LF|d$lOFwN}lv_6k)kRYk23yS7?2V~;K)W{il4 zXpJBULV^%)+UNUx-}m?T`^#}S;&$Y??|jB}UFUgT=SSQlV;z?BT<2+MXjt@gADYt8 zFtpInoOykYf%=y|>0oc_n~J~IQ-3p{tAEflUl$sqXZ|m}fc{?Y&-nvgeEr;kK5~*W zGLq8b{4f0dU;3#?NqPV8CnSNsZc^!eB|z$3m|p5y`O(nue*61F>oXRhPD6u9(R+B$ zJUC|q&6sxO2}jS40lt$oA9m@JC_n!>-Q>bsiuC5{_cSkQT@nfW$?&24^}E8o`LKVV z0b*K#kW3>X!SI&m$d)A;4iw^2QFZ}m{=H5FRj{m)Qqkp_=Prb$S zY=@YH6s8H+R8oIas#n+UCnmCGBJ^#oCi|$rSHC6ecv&D@&HAS;JvF^?>5Y{jC)(&3sj{J zK=;3u9+gJ5sf<&DD&zQ6wnwgzst2^eKPG%Ya{IlH?Ie*W%)Zo2-mKuEna zFLZ8}#YTKZIV zF{9efa$3}{>_eRs$es&1St4%x(&s|Gz_{PDa#TL~Bv z&Zp!v$J~Z#+rELd`kw*vgWJQGzkECjsz0V6G<=t4nDX;drSF}ous*yLvW6@x(VqIS z1?vd^xyY{_ETEq$4TsUZagQNnXdFLh&?p)_GO}4F0Au^%*F4qKU5|3!tzg6{-?DydN5912%ljF0&54>`uU6&`?_4;KZuQeq zUp;L)R&XsG9aWC_lNPSHEo}AG`Q5SHao_bF_18u=L4$VLG?u~Lh}Y#`Um!)_*wh_E zCI3H98ymKPF6FYRC-0ceh3ULS?B5X=qvPL|KbY(ygw?-X8$1U%o!!TUGt*q8^;?mu z>$HP)2SyT}h&Z%8EN8abG+0jhcrf!G(?xjZmhg)28XLuEJ{4S=GM?M$zc>^P>JhayKJZwjZmm!(Zy1Bbt=}X=G z$Tm=hxNV!halSJ5XGCPz6Ek<@hF(5zrCipfcIV-g0o&)5cVGR{Z5D?ZrjpMb?&?xH zTAlHf=v@N-_DTJ5oS9p;uTfqi^h^36%xOwgFRG(eQ0s%U@AA5Wa`0-oxK-C|+7z5~ zN9H$(hH@D-s{DQyggsIqGtYeFgolJ1e^?qQHs87R+rE27ye$$(jdT8WYPi3Cy42Hq zdzS!=4C~N%_2=R4c)MNklLlcy`;K5Por zlUj+W85qu161?|@-gU))R=%R-QB;R%+r!5p#a;u~Inu~3Gj|};!<|=MTH%6Ai==s9 zd58RV#|m+)I&I?|H3*Hup&>=nI{&xmpH8IlIy=ywE- zvL=Q2%X+(ZUG#$i9LBlI4h$zpv8c^g0*T>BJV3-&I)9T8xP=r(&*OmYY+bX>P4ezf zl@@SY33-eb)#y7oMW5tFVUz4-Oh8(#KHRAe_1dgRYKR=D$4)~Im0F1bE)9U}4I zm_0w0z~f@&q%wo-S)T6+dF2wVel8iB?+5V4)WGSA)Mr;-k>u0$=nl`Bo2x)qnTo}+lH$N@JBemj;uKc9#bPsS_i8O3E0J zTNyOzK5+?in7374j_(58=zDHxZd)@J|X5J?is{W zqHIe{mHoywc#2G^f#uEJczQDWLz)pGG@9wez`qGzQ~O$KwBQg{nZYT|ob)$S#%AQD zbL4yTI-Rl8Ny`7aiAh!r@F3vJ>r$6fYZ+mO7dX(oa^BP7hv5sO@SSBhBftHFokg94 z09GEATfnXf9YwGC72C&ATH1ewVWpslw(-Za2JnuZE6qt2 z4rMXSe9F_zTWxUDuc_KB>GVwZ`IMkQOtK_E9bBy%h+_Sy6kceNR@Gj{Ke6C&nx=dK zoYiZm8k#TJ{q*;lUE>T^(}vk1pCn`h{`KaoqIJXn;3v7JQZJTB$w*c6K zZwSA{+_eUd{({eugTEwDo$6Z|zl(-~ya>Pcmxo!U-YUEER|UYGT1U$;gVc&jofgme z=W@D~BQft{a`xs=OyT+*cRxt|OLuMHCQ>*IK;JB`5~V5iJD~5uSAj1h++oBUX+i48 z=F?R{4#c6>TN;$zSo2!jdqI2&TI`%RmwUM?DCIKt2=Cz2JA=}XzQ)WmR$7{+{)*S3PF!=sxJ!?^Y04sfn*=$;m4+!U;OY_ z(fmSZ7T7BRt42YW+w)^#o^~42bc9Q7m1kqtEpJW!xVrENgqV;?4%h`t#4{hyNX8=P{_E=gS7W07h zd7B!C?%#pktd}E5RzST}m2?z{tB33EsuC2XaNx)>rw@^R7k>Ivr#Wg#v#Py8HE65< zbuEJ)0qY<~d)cH{!tIFHAGEjA^}&$+pIs)_%U_w82}i0H0-zoEmt8igyts=;wx7#uX>mF4!U})%rZc2NeM!ufuFop z(W7A$;@9KpeW9`L#|mS}WpvW_8+S~FO>&d_;WU)f`899uIZ>;suOB&y(KdRctM-2b zv-4kI*7^UmPLi{3vNXo6BnVu8VUq7#f@T!nV|xZXVVC!FIT0e!R?_b*X4hL$8iSD@ zSJXZXfU9lAx+yZhuzjOB?YioRp^x6WW(0*-W?;xq>Ay!@oCxN6JCrIGD-WtEQbQ91 zQag)~oLK`!(J5SWaDGHlK$Zb!w3|&XOso|C+6WtT)bHRVq`i8WS~{AHXahNN9}MJ( zM2n<5yN%UG4lbz{cQSQfd>1F-bfe>w#!edl$x}^n~0#*B#_Azm6Ow1_#$Ho9#MxW{uZx zJ%~y8`0}ez#~(F%5!HhfcE{>Gnx=;N0FTcoq|Gs~Ljb>rIVj_?6 z)}U5_t--@J{`T5sP3ldahlLdhdt@WaEbT&XQ7bkwjiVkXDE}(!WWidD&1Fs0Qd}6V z(j+IR4H&0&-!z#jf1-Lt^JOU=v$d-h`Nj|DS>R$i)<*yL{lle^&32*h59zD|J2mAe z9>|@E;GMx>msQzRCM&F__BaN?f(=$(;Je(auR_ZyD!(sXBlmv)GwD9sXZ!STHh?sd zG3~Oh2W%;KAHPf!ove4yg1DC5LubjZRwg~zzg=NpQm9N(fc*-Lz{>OLCzF5d3UAPM1 zmmkGvRHsxlti-Aojq=gf7;?g4OXCl2oFd?EfzjD~#NY|yajv{xiY_RLl~a9i@gxhm zw=t0*7*xYksy6rG3C?8(b2KWZpa6Khw#gAic0g zFsITpuv?yw7m*YkusE}8qcn!C(mc^dx8n;?zVhYrTcf=xYF4r+#5l+m z{i}Kxk;$||mb}$yl0&@KfYRA}%Ci^XpqD27dDE}RGnbY|bLbwG9zTzx=5r@{n-%?f zXT6f&SDIY*T11-Vl5)u|g`dUzwC!%~qCi~lywnq1*3SnF(5?<4Y z)iPv#=`IyL-W>^SF4M}cP;!52$p!Thb{n<(D#2G2-6WENV&e+tn&drLV}v(8>wE;& z*a>DibRcsGL>vdp_-X`a9$0G+a;S(MlQd4#5%wX*Z+ctwjPx8>bo=v7M-C%J|OkJ)P9og50w zxF(Z<8f587w?fFZqm!{EB(XWa$aQ3Y4Jl{~+LSFe5L-N@D4So@qx&={*&nd+L$CGa z@04QWT+?I0PuTf#75k!H@|Q=Hjzru*ZWl1O#3*%ekrGPjz^X$6|1N6FvitLg6WaUE z3&MPF&$}YN*jsrZ%5QnA2F7o{1v^rzadY;FMkZ-Ny_^}`TlSMGg_#vW(n6k&*@O z_~!GXS{Dsm*;{Ili0fRUEiMDe67g2kRL$d6yNTP4T1?B&p#$O+p*pLLgr5-$SE=`h&)113)$2+6slvFd6!%zGJ_W(bjnI|y{K!+A+3uOy#lUzycJZcB z$MN2|G?A3B@cE)^gR|hm35sAI!%&mPxDGxL%-gAPA)vkNo?UL8L%HVs3!5My5)j?J z<;Fed%PUU#a!PKFPRW~LsbajcY2c4vj`v%;6hFLk@FHg*N}LyW^P!~Zg9dnHR1k64^fv?k5GDa&4G}twj@vOoHEd) z18*~?E%3}Cw?d`Sfcdav_)ZhFWK(Xq_~H0{A?ZyKZY6j4woAXqLOVJeKO2#>s;n(% z`~7JC{rX=-C&Tua#0&ZdzBG3ZdYDe-Tz^UOFyH>j-l>XB$3b+I)s3fl&T<8Xk*m!w zj*1c5%MRhB29al%A9G0Af&1aK@xwM~7-xv6!IIeK=cVclFstkA*_O$gPR4K77CaEm z>GZgWPYMP?eoTQX*~n~mBd$!xcYbjdt_k^{u=XI>9=e`eZT4$OJLH6C!W+Zc=3L-% zxW2#Z49fthkD5*YD6LlQ=*k1Hz$v_Du0w>QmZJdPR7HvGhq$&d>j)~P4X1bk(i7^h z2&=8x%Zw%3g?R&OZR@Iv^&#JIZr&UVvaq>M1ePYl$8-3_*CIgyK&$U^7N*}=WB)=I^Cx>^wv(7lYF2inX)jMmePjBr2M-ss%FTh)@GO0_v3I9 zRj07i#~NRiH&41F@oq7JA)xUz(XIi1fg@ZhqZp~#>K77O-G6>EVq1Dg(bFLyVp9-` zl5eutqBhhyk#8c<@2q%R>UFS z57|nn`8R!MBt)A(mo4^4HjG)Bha-NaVcMdu_G8Lt@$2I{gPD%y!dc!W_l!G-G8_8m zN@*j8TmFKTXO#JK@evxtjianl0JqaO6*`*NtJmfN?$gky6D$~DX2=pvsy5QOCbIw& ztkSrftyBYiBV8k8lz*GFh4xD`sGn%FTKz>F8J;79b{_PQA3lWAGkue6x~dU%qLyg` z1+mS!!2T##_BfoW<5TnM*ykO0-N<7QYU;=m#(tBL=Cf-w`B-KzbEyOy1Iwrl1r2Rd zi3r%p;UcUFr=&*o{qQA#)O@Tt>_K9G(Hb~RCcgJ+tM>n-aSLn4!W?}5>)d&rxW35> zfLqy2E?xBI9JgJcr+I|KS!;8z2Y_y*-okIC2T!|2cz;pn;iX^D3887Oti^hc(D*p%a6TzXhkF72ofk8PX7g-Y3G5fMWm z#hQ^v_I071hl{~S8)tn;xT;~{^~vqKa?@OyekDjzy3lTkNY+DZp(Nh*mW~52KPE-D zky(=S*B2AsCUo2L`mb8`+0S;e{F@VbZrN6&ZiRGty+7wb5pkD)9>djD7P4-I$aYJS z=0Rk?wKVq#_H%KV%WbehoD?0et->w9W0BSMaj3_1|6`vY$hQ>@h7I2BrT`U~TwSc|BFwV7 zp|jIsUuPN0rvW{2n)9I>FQbu%yN#mAs8v@7xoaQ7;?m`yy)^etT*M_<%y6Z zHH%t8c$azQw9j7K(CR`ho;@-@tmr5hbp327x9dn+uQRg6y8T(hAz)2pW_>g0UAI~l zbq*Jmz8HTD!R==ZYeCUb4Fzjsf zHCP@@uY?QaxZFEltNU_o*fHMIAf$ok=1urwSl4rudl>^#LjyA4o>dR08XJaOQs@sbGp`dIc^R#;s1x3jwgmM54D z$K4-`3SM-!9)B8<@V1cKBvjc5v897bp!B87ZR>K@I-h6A6qh_YafcD@cGnQmXdeWv zLwkxT9pkCc6VY_i3`~3sXWwKRf~@nbMQw7;9Tl7+WVch29D1~%K#l6Y{9d}r3Jth(n)u+!aZq#irx5VBh7P>wJQZpyda1cRr_Wy>Lu zYlHg!+lZj}?$OT2Asy;fQ~(77i%NPbdDZ1!lnMD|>u!7c3g!FqcAqi0{Ne;v`rpgB zmfQV!KaAgIdT7OTEm;;`xR$#6t8&y}s!hT$QVbEt%r#@2E9#O7OW;t-3qRH33;Fy& z355|}6dslD-5x#KdoS}hK|JTxzj{Vf9NyBqC=~xa^(V~2pgLxBaJ2i>+f{8gJp)cV zSQ~L&Gzoy5WxnhM<>X1wpG7RKm94jq>!Op^cZ+i*jTR*I-e214V_gldsuhhbz33xkUYozq!0I9 zd<^x~B7jt%1`bj`Fc&g}ToZlW;5Vus(gm`tb+K`p0HWXL{gu$ZP*|_4x@(scGKD!O z$_NM9x70uj^4UJCZ24J)&$-E`#wkhaoY#w{|6yR~zj|t611DqTgh`efs&|p^d)a7S zD#d~FLUIjWs(5m5FC?SZRw4RI*YtPNQquUM%ZeJwR3Oj)6jS+ES+wVysHg6jMXAVx zNqpzKeJBIs72$b$3A}-qbgAe{G+b12doT&8yuoQ~82D!V-fx2u)ZRGr-S3uh@e$xsm zF=LzPyJe;=p%L)SiA{08n^j61MLt*iVcEc7N(Tl@S@yh-t|9Bij^JUqT6L+><`?1+ z*Nq4xq%&84{F_wBv`s(@+a zh+V3XbH&7eoNKMm#!FZpbs0RVkW#L9Nk3qs;OzGG@If7{5n)Bx$l;cHn0!m%Nt=II zcQ@05%P9CKbBgEd9@Jquj(cyJ-5LUQ~Ficcj?bt8LdLb$I0| zB1OVaC^h{mGB2X{z((mJwyOLf;S07ZNrP<65U!xRK2;;sJ33#NH}Z=aKg*vBI)^*L+AE5Laxtsgut3}k}C_}?V`YS@gm2qd=Fy@SgFj7 zuiIb4I!1PhOH}E3a3dt%1vLU_CgB$H>^my#Ti>jGzLJZ--N6uk&`ebYqfv*3a&ddX zho3f0FS857O7sfem(-p!)-7;0gUT0txc5d%=j6QWZL2HFFo!u)Jp<<_3wn@ z&v({3BrJu5Y2u;7J*{Z|iv6sv4(JM%LCh+sxqYL*LamN;ouhpWQS&jN`7nb#PsGo~ zMTK*`7W~K0DAnBMeir5@+EYCXR1lvT4~K(h8x-{ZJQP|yI2f4VjeZ^AX+f}_olf<4 zpXkqj(3R{u+U;8JVCOzMC=hoAcB;~G(dl3KGN;|4fBjU~O>yM9sv)n4jVUjCb@;iC z$y&nGOaRAhleY_lw%WKxLBKYg>#lCvozIiyrjOqwFjUHW!YoxDZEs>b1)qJRzsyaH zj!h?0u2Tq>LX~%J`NtfX(2)=4wgEycJ#5^2B}{F>g|xgZ$L@!ExxILtX6*=XBz{rK z3m;ZFA@+H&ZmpG6tu)s#WsWytXmbgo3JOoA#UV>cHysS7haf-l$&fNiM4*3UD7-W> zUCLU~n}27KEOniWU84K$9@*sfRHc?2vpSAYqh@#<@=s6YrVr)zIPEg7ZDv8JOhtCY zJS@pPvQd)7R;?Z-e4#x#VPwlb(URL$JNu#W^m!6AT!YjOAF^lhb$1*b;lQvYf4;5V zSN^X@Al0HROhXe<6!|cbs#rr3Y6MNb888aqroRXoJ=YcbNYozJFuiR9Ha2KXI5-p= zfZX=XOd9?qS$(X&dO=4o)3LB2e4jun`5jJe+&WKEJ2{_^Lj+3+2rA2&s5d`l<#Vq8 z8lGEMg*2CHa=&@{@nAgd@_FqN{j14Vi>IF$0z8krOPj$_M;H{ff^@n=x)Ame)V3-D z1pulpd=b2PN(uz(M1Ik%ZI=TyyCw2TN@U5Ovs}qx@DNRtqBg-QU0ICuhQ7Wic(IKD zl{}dc7QFShSq8v_0`%Q5mUk=%nR7fjTeinclkfpyb`j*AhU*$u{B5J1QS(@*XieY) ziO!>G?%KB@BV&fsP>h$9ovIc{ZzPkNGN==pdCdI;W|4T}^vOBN+2Nku$ab%Tetof? z7armJHZlQny#ldK`bUPe;_lPD|LOmz&j!Lbalrk@X|= zk`^rmljYWr^MX6HKORMorKx{8ZCTrK(P>BzKe_F|$X9x*Y8b=JEwU&y{L=G&o|K8P z+?CGn2BTTXRc<92}f;|t~_cOQ2N`?>nPSs=~v1RcU0Z3LcYH$$}L})(G>#DzU8GJE3dLgSia)Lq*aPpJ8+7(F=Rw^NOAUnLvHu*8Pt1Pwu;v-nz0RkSRxUYAN z%z7@@`&`M6dVJ$JVC4QD_VDTGXY7cBbiU3TdM4hz*Ls{=5x$qKgolMDX~R^{?ye-J z=$(%`VkMH)`EoIqVI;oB&4l8UShcgJ9XGgt#$RP7QLdE}Vz#0~KRUGfPUVQnU*Fj2=(#McFVMSZgK+p3HgbLsXl|)uTTCw4l4?slLKk=E|&J1&nqZS{P< z%^Oz!Gl@gWoXIiruSj(6pLHzw{X60RTEpls?AHCSf9(H;nJkA)!ef%Q(y5-Es8<^Y zddeVT4r)`xOdvz8)%Pp%KhL_D_J6q69u;2vUpw0W=}kLN6(;`sqQ7>=_P@W=oD==O zYl8d#|DZTNv=~)}d+zHotWiX1NFAIlr1&6vK4UP zdF-Vev7VDAWu?m-*681okFRy1>Fq~#@gWz<&!EpxypV?AY5~2RNAtm--TiA>Utb?N z%sHARBnVo;1;#t|gLO%%HzSR}R2-|9pkK0-Z2C^{`p+MWf%k}YO-?YecGKI#2j(6)@hmQ&@ioX^r>)Yc%F&!U8p_H!UfW9 z#x;Nkw@!4t^0_r4)bzjtbT|*7A}J8>JUJVoflSFJs!>Te$L61r@l5<*r{d$KNeDsq`G&aP$vgIafd{jbG9IYD zy?wfie(pU#&-+wJsFKK67uo{I&4ziMbM#Mb-7TW+6Z2KXxSO|N*{J*FIS@w5jYeres93w!#3W6Psaw<*;`b8Vf7Q}Thps0`B? z^ZC=8NvAR?S%d=+^@G0YlHc|r)kfy1No^r5q{>&A>XKNi zXRK*xl(K`ilum{8a&&7jE$(M5xHj~_@^y%61@C!%otFl5PhH|U()``cvX*Vz10S&R zX$WQqZ7405zUj@Q(^;mRkW&DD45??Y=?=46-cdR!6?lp)SQwvuqd#C!==1uj5rm~N&2_Bld>7pqn>*i8?>lA8Z zLa**>Nb%ENHP=H6#m9!Oo%zQh^;(CXo?tN8e<)in&UqlyID#91rssxk%wX9Utm`7O znS7`j$i!NyMq&+K%p4F2He4GjF+~>EdkwS4aVYs*?dJX))#tb)EB?N}|5}~6QTBS&&p{QU}-q{%BhP>`YWcM7P$JOn$Gg)SvF7~)ia<&KON9(7{s;5Wi)5rRwHul z1L}k-ZocxeL@aAU&VqUur1n)WUJKZpJ(HZ;MmCVN59 zWUrj=V5^853d6QQR7Z_S$dbOn?P}X@J0g#osAY|PMseH~2*bV#otn4DDBTN+eaw`N zGp^>u_jt*wHE^*sB+}Zo&T)RjwDc*h-lv`uu}21u30d-^w)kz^+h*2cYN-C~d`gb< ze3Hw7h8)^;KFAXTm%=}=>kPD;_L>!BOw5tSMc}spdRg*y#k$~!)RHQ$wTn$@tT1~R zeDbaRxcu_?KK#T6x*zpjcDvXDvE59Xc>DXV@Q ze}|+Ql(ce#yfoAr?;1JP=ZS3kcIX@9i3$lzFhY?a2<5Q(69q*t)NMcZS_Ra40!LQp za3DOwlgeB*qq zJst@fXZAFctem0kDxj@58xwxmO8}o*stHL+zd5vqV7b5H|GW$cQj+R;nwiT<@Ir z{GD$sS-~GNi!~f=XdB|Drkj9iQYH3niq5n{-w7V7JrJ! z1A2k6>+t1DAt&F{-&a<`)U8r}qzLPJ3u{^rNQ4_81rDq;4&4DA=Dm6mtY zJy(1;maLFp1E7d|!N4<}$L~K3g}RGKVWW6phw+v}T8!JCPeh#Fe3*ae-@Vh<1ss1p zS&TGTKB(|Jt^ST~cXia0YN`b9AE?WZDft}TBIM<|O9|Ssb*>&Ml|OlW`3Kt}XGOF} z0&lH&@>gqv8~B6Ehqu;U46!Q`cEB_E5&w&( zbb@UsI14G@8Lt}oi;C_<*#@7HJ%W0mZ)=Vk$lkPs8BJ^PN$+7G3pR)DWs0iF|LlNUv35DN&JCzM#i{-zT`1hDYV{1?=xnwnl7JtWydiF-?5wbIP*W%vVkp?HTv?*gz+iKsHbQu~zYk1J3wiz9JP}i_YhI za_91>wt6|TsRMBR_*%*sZ1=d1`NpS7$QPANP9+~6xu@10FL~us=jl0F`7++Yl(Oy} zGs&^T{D#*vNxaukx^Ar=-H=O8ZjjUNvBErO-E0+p{DTHv{~ms=-D1-sQ;~sW!RP_! zmWV|#lYAyE=DYB%j)+TE5$5lQLf4ob(HQxILMxlB{Svuih3#U2CL}0o7-7!dEHb6CzUu3jXX|syEfN&riCHfmRTOU zqw8+*7Cyf8PQc31FLndlKHc%_WI5< z5o>;^xI_Dszzu-7f>=f!z;Yd1NbX?mkhHEF;PKPCu)-QdG%I||Wc1P~iF^3vl+)AE zB9%{7HUNXO%?rsbTZ~*h zh!a(xoVzPI)mTG7(CW^qK91q@$c--728yb8vT_E_4|Wv>tl#mEoMO5iYOfxC?4P+T zZ^yW-@ZvMd3TpXIR%?i82vLJj;V*3O*#seFz82dBX5qWgG~fFbO|hX^H{{BHt;A*Z z3#ux~;nj>%)JnLJ7ZL{(??F+_?zd2FZLB^BvFaN_RHIU zPlk;376~sMuI%4W*B*}o4ND&S&3O@GYgn(7Rc@QY>ee(1DZjtSE#<<#uJPp#bDL+# zn6YOwZ zpXu&qJt^d^wKm>eJ_0&AL|+IU->h(Hxpiv{#z(;$%AG5uo7>C_ksX}I{bV<3LAwG> z=uA(I?OwdGwZ3oSb|LI?^2skga+jP$_at#G^z$2f>%6)ri~d3|eVDw2b=~7x`N}Kn zAvoxk%ssP`UKuR!eX4)ACv7V-JMeAV+Jvw7NQpjSdBjzp$wTwyz`7AtV^<;A`(Lzk z^Y;8|K^Hkf=gc)X(eoKj3uQN%KKJB|adg~pUb)bstGFVaH&;j4O2up0&IJO669Mg+}ds5`VjRLbKw1EF~n$UG4>R?)|BjFDRS0<-9DI#zjRyF^v_@v&ZSK zm}-l<;=VX0t{yl+XYKjn4QPpRx@}&S-9TE&B%ykX97tOetz!ZqeTlA0mMFuDu{cK_ z5?-Lld*Ow2zpv?Y$OvAsTdNCQ`oZaEyXIKOP`3Cp!IQT#L!5IW%P)ghCvVl!54EyC z=YtqEk>ct(rZU!MFdh{q^-JEqFlq#?HoB*nV9aD+tm8VmNUf4eR?}2{y zlnW*ZIXo;;17lFo+!|rB8u%y+w4tV_Wq@AO8m*-?KR*fdV@2SH!7QFJq9tYdI+ZaB z%e72?Jc7w5CtXFM4m%{7>rcq+RJIY3cWO#cqt+--?y1@8ri=skh3hE=#CJscM=Jb2 z2q)ds;Au!@lzj|1{4r9_?cBAizNOLWKlzv&w`MtHrMa)6?x@`&sLQ`Eh)x@9n#rVo6ko6S1B;sFSZt%@B<3uN_CuC%X6 zD{>p1Ml;UgYoEfIug{RWPN-2oW7U%fd0{bubYsT%W$ue>$#6GqW@@~A1fpI)P? zps5y;e+gu7KE6NElg3nf_1ujfIB1MZo(R5CL{+Xd5wA0+9vB*Y@Zf(MZO1itvNk$U z8lDa{WCWg9zZ(%?r(iZk<+dpX6@^==yn83tBtOAkZOkAE{8Sn;6X(%ZE#H1m?)JtD z_s1-}onz0H!z7M77QmkXZvGt*>%Y(lUPawA|CWH96_{Z+KY$|2XgA>hq65Vkvylf4t2y-j6dGbFnZn?wSLdde_> z9_5%?2npYV_@X8Z)&`cJ@GgxaJmC)P?D3urVIONV>W0;&C;N&m8iVCHb-^2%vIpZv5WxL z@76J55}?vv)5r+PQ2U1ZDBmz;j16X7h4!apIaew)TW;8qHNJcPZzcdUPST|2-EL${ z1CLJOTerdYS=j6x0G4m}bF1?6BP^P+q8gi?BemE1L4p_i91BPif6E^K-?H}!ifpk6 zjA8XU{B}fV?>=x5xEIk*8yYG8AS~f2L=`serNBWoJ~OuQbfSGUC-SLLf4rmKXqfE^ zSS@%%%o&eo9daAVwD5Hub{@2N*Oc4Iw6v>`dix8)fc(HPv*{sK66aj;e7g^c4f=-! z^~3yvZ8UQCt3XnXuR778GiOC}O7t)Jb~D^it9Gj%bm0*s?73E`jo-2GhlzB`=jk|Fn>v zuQ@Id&5?>_GF(%ywX(Gk%7Z#RggGf^^uz0Id2I2MYm(gSpTP98(Mpy9~H_}+=aNr3J3L9iW4Zp4@o`+M^Mxp=!;K$tNekTi? zmXTaN(A^*vBb70D@eu?yE?a1AJbB22t#w-cFhTzg8IQ;^c$%L}I89;+Pcr}X29@3z{sSk(ph*=P^FiiY zVu82(n6-cYB^SJ`e;vW>@L%v}aX${M9XZyYaguU;NC7V&@nJ=JuGyjb`KYM>roE4q z16BXJ6UN4?&{-ib?Ypqe~juj)QSS z)sMK#nX>l!jM!=~0pOW7%t1&jA+6#va%zmG`ibiVS25g+r@f1JWLW@&#wgt7u#Z6c zUP9TjNk}-kjXT}0T6DsVoUF`Tz(!Z-|+LX6pyU& zvR=^}jZO8pyC}=~(xke(uRwOtF&MJ*wER#ha;u6L<3K&uXe4bX^=y1Y4ht{5^rT+b z-fzBPFeLQC%T_pID#C>;e7dL5b;13Yvqc%rJe5-pEi{17O*vL{olc6F=@!1-xq&ri z`LyOt*PWvZvM0Y+zv*>J*{u~koUnr$7TW$DN3Fp8&{o%lW>2(c^M;D!(TKZ-D2u4O zh*a% z{a%k63j033$sBROKX5ziDaBctKXe$MVI=gHfwz%yvR=VP0F;$hTKmAzHsYa{b7$4O z+3dn`osI!YQt8n$@VE}&-sZpjrO!7~rNHg%dw+)p8#ak2E1<)hq_C{b8mn0Ac|(%Z zu)sLYkF-`;$>zlVoUC)Bf7%nS8kg^V;h~YA^G+Q@j`BL0JW-)eoumEX>H~ZoCY5t( zwYQEsG%tv7U-O+i&?jX-&@l;-SX|TlwdX#BEg;u|JA6xNr2q~d40e^;3f_!M`yt5# zAI`(_=qz5t{FrK%^inek@1^pW-x-|l_caW@(thhBhvv+;I2k$hO1x zNxi=AYlG3-)0?xWBQ^9DZR?96Vjc1i45a1-{AL5&(3|?=F_!hkrxFc6Qxy!UKI`{e zn=2-d_w8@B4@<;d7L>;jLdOYFU}p8;y<)GKw!XBlQ<|;Bq6XYMPWur|Qiha6>c=(s zjJh%1JoOard8*`NdkZ^W7vf28GlIDWHgAAV0#O!_mZ zMs1uE6Sa^8!lXl&?_x5Po!TDZp6v(k672(SH1gQ=6DDTGPg|;KHlOan0vm43E|Q`Zj+^SC@v{w91QZxQ)9I5G62#2!5%yZs-fd1#iE{BKnDrk4zZN zM{}U~iRDr3+1aiKeK+nou!siW#|CkN%hB^T7Na%W@RMJIhPtaM?lErOb^~QlIsW;WP4;xWp#SvJ$!jk^6apko`yje_RH0(? zZtVdsC?34nAe0zPri{~Mmo0?x&j$q`?jF+rxgMUGNTpyGga7ujk}U)xCHusQMZ(7I z=vune3zk022eSGc!$1nUmGrXb%;n_YwjP5h$8dg3EYW$~F~;|X`A)#et+wOUCHGGM zPp~#S7!ZkUCcoyXLkge#q|&5@1Qc<`HEymgzy@5)vbI)wZ;~o0zqLy|amb&QdU9->B_Fp1}$f zj$V+LKvq!OlP=m_U2IL{p2w|gR|V$UJiDuG{~z|=JE*DlZ}&w}ic(Y_MUeI=f^_K+ zx*|wddPfCy+MjdC8m1M1Zt##ku?{$4Hq*x!JaPeHl&ph0N;($5yhBxNr9a^7kRe1!|d$A|( zd!~!Bkok?+LkohBN{sSwcosC#(s>MB%*d#${d|*nX+w6wV`tqt=0Sa<@#`t9J`i$q zjT)wIA;Z&(c@*8{He^0et`x9wm3O{?7av9LbGQ3U+k+0AM^p9{(P^=db9yUS?#7cf z{a^EzEyW^>j}L3VuemfjW8fpTL*gMQ;lDY#@zd-ba8pkAe3kR)W^*(Ws? z(dsk8o}u=w$`0vDcV(Y-r+S3FXR!>!|22{+PF*Y?6tbc3@25z@mma0H`e$);jzolU zXO1u9czYpFOHekg!4`?|qa!lt?mn)>xx1hHQt5EZ30!Dw$C6&jqIR|46PHFXL!TYP zHhV^vosN!^Vj_}3Z!0Q3hJ`9PCw zy$9-0`Y6)7Y-KDH|7=^pG*h1I6W7s&;FwN}cW(-3F!`2no!#8JU!b(w|1*xR!r$g` zn#OEYi`U1eAC%*TNQmnx{%UDbF3pT@qfXTeL!?etJV>!_2rT1*z|h;uvskdMAF##5 z2jvU&C)g2LGB9J#)}&UMS2x{<-8iJ3HA(`;(|)zg>7wqr@!lY124u$GAPtiL4_+n=7a2xB=ProP;o2_sS@h-GkjK+*WrhomY337!=|AO<4-=rHXU=6PPe<+F0;$o;4S* zP5Ft7wz58Vy8ah~Bk#zABs1SYTqUj4!=(#;m1sv(LVz8DdEs5=&8}0szkj?F0YxrG z!qM~0R`Ilm-9`6CMY>WwmCH98xm1F+$k{h7z#r{#?^(|n@Pry*x1KVK-BTXyN#iZ6D#=G}b_)UfNMVqu~2vY4Hq;9#aa z@fDqoQI?7XP7WV`o-)9Mk&=B-f;StiKT-`qj)dpV6*kp0xrDHmfu%AI>dR4sCZi@z;+h495_0u zr3}BOY{C!yG;aaaN_7PV^n>Z+ zWx^DFyT^2ld#pz73WG78_Q)1d%MR6C)X<4OtpMSS6D!;yEImhJt^MB<*5NC)=XhG+ zkSi8?O;+#vv+%g_4(9^wOBUtF&2sIQlaN5&i#^M!c3j!}(S19#LQ*)h_D4d}?<;9> zkOz6}E=j$A$xa%Yt1%#U!Ei6Pei1KlSvGh;YMSV7Chqv`L8ZTXsTFBWDsbv58^Z`4 z9_CX>dkA_5%mLH!V>bH9HZx5=1rIm0XOH|`n{P1>t>n&)28$GU?!scoHtC8*IXQHa zdy=s2Z?ZUjvntcx@+vwzncD7N@fy&`@809DmGZoLE2NfM{7<|+RTq}itT006<761Y ze4?YZOS+M1;e~B>ZzyFM3O)+;S0CmbJe%m*$_hD&H9vT0Sr?j{Ogqw<3s*Hae|CpH zOtxgx6CJTB0Xi4!H-c8Ua>pI52a`D0{rX{J5o3_CUhTDAf+l^6QC9N<)!jDMlZ$hs zrRIj48D!^|eMe8N1^b079BT8NP+VwyFB|hIYJI0FcKE`FcQ{iYF7L{iEM<4`xs`*8 zMc=-%DYM@6+&a2dnfK-F%XlW{0k^Gg-INd%*!8$PqsNC8IRY#=OtW+G`MoDdcyH@q?<^a(R}CV zNw~aLVkKg}#mwpW?RVDRy(lLIo4t@4=lm|GnYueCrZHDh7;0_u=U4ws&{OZEQfs!N z->!~yM~h|Oly;K6nMdnAh2Ya3XEHAJkkrokpe}Kno-QEVt`@S#>dQTJbCQpMPy2j| zdjS>ycSX$=m!D`9UeudNE+6?^5>+qKvxRU;i%@0ut$$h*b*)T`ei3wp zJ?sgczvcx(HUYOM{>H;wwN*ISY9Fk%TwUxeX79C|0P#-j#SOEI1Pw%z)b}%~H0fqg zu{^3awtvkc!9eLCji!InFGc^RM8Qiv4K|ujy%N?|?*nCscWM9T{4{R-o|CURh|&QH znVRS#L!lSDi=VRMc!rlxKf9-C8rDx$SS*R|1uUG{u^RrxKK&G>NS)spt zX#G2o_oe5?W#j5Jb2okF5 zyifQX=UBXm9&=x68o}rM1q5e!Efw}VMc6DsnAc702Cg9ugV{)saed^MX(4Pg%HqB`NK z)dg4MM&Zw3EeEzd1`etsOZ{>k2HgO(M8MkZd$<o>iK>zY%le98zhHHhx1&aNoQ?(e^8&c3 zgYla!b%AE@`ULl7Y~?JtoWe_rKUX9y=gI$Tw9Zknd*9rsf@TZwAZcs%ySp!ZF+U^# zyf@r(V{^83r>kUp36=(!R{-G!#CzbFMp2(_uf{sa4@-c&?iS}*l|i`3g~)SY!kXwP zXxRHAI^{axl*LQlhDcwI7`!u2dl|EUZfV9`z~u*-!~wk3Ss8i@7h| zuzCpqLA`PLUH$t&wR#s-WCROcfA(Eu0VqKm2;ZaGjpDEC2`kpRB>lc~M)&u(*T*&R zfvU-mR<{odU-nJTFou)ssmC1@BK_63DliVo5ZN+1j||V5HoK{yO`)L8=S+0ayD8)D z;qD6)JyJmFcQYkJ)b)bvTvG?f+c)bpuXo+$N^GRH=$Zr!v&5DqY!kUAYjrm`lNKM& z;|W24CBmVw5=0g9uTKVb9!Nqi&jEX5Fzy`~VN!#%^DRv7ThgKc?jhYrg8_2#h4xtF z&90)d-is(53Tul_hjOz=P8sdDj>>4i2dOj`eKi0DbVy!)SmQRU)zv(l#&Rt0ef+#_ zxY9F`m8Q#-)bU3nxx!j-I&eKXgfN4$5(H0!wed;;y#FR&vmcao0v0O0VsZGeo1u&1 z@U$omLz7a~RYoW0;EvJCcHd5Ph|I8Q#K-f#B>%n3E|yZpO1EcsQN&g~JGiB~&TVd} zI2WN0pPg9x`73|tuu%=wrx?8eW=CzpHiH~R6`=LZ8p!UIZa?|;3IN5_7bk~ z{7dqVPmwRzm90N`BxYjw2%S_Q)>4I%6E0@fcm7BJJpzI9NeL|K!w0GQAB1B#fX1d$#>$Xt zYzKWCy(53u#k>Ky+LIejbhw7B9o=Fc^!_^w{U<|MDyq%99fJv^!LV~O=>1MC3|QW@ zOL)=nsGp8)g-g;c6Cm@f1&&oTjf-JT^bts2shLn{y_+fg2CXd_jsO&i1SBQxvRinS z|LeS^HlJ;@vlXyvXDT5y-~i2%DX+y!w5KZ9mwaVca?|p&SHdgg-N(I?U8V!%XgvVr zQkFIp_|}pmU&f@9V3WP|XaKR{kUrKYcE-quWdrPWK7M3GO20x`6u1I+lIL2#MW=;Z4 z|K5_Na`4()kGX~sk6Iz=rJlUPGN(UA4m!=~@1zbEsuSchl6>*Q@|q%W^2*+t4V+&R zn?!7VqVn>n976p5;g?fez!w%+fH9Nq0~WaM%z07ZV@yV0f0IVDRsm>}E87V*@Og9T z6>J&SLdyT!V~*_+i+ClAgWQnWiMvP%dwBj!#|tJ!Z&wTTd*0)l%PgvTHrwf)fCY`} zJC|P7L7W9Z2~kc<&*_#@3}&?acK@@30~HxiDB8VZP%C0151?Z{_b;|#u(aj^g@%7_ z0778e&qwk-r)a`I{exfqwX>Yc2<_A^)XCCSeY%VQ7JR#1`j67w-C@91Wl$8wl9+>h zIxIn}`MJC&A)vr++8lb%LGNTU+VcQ7|9pQhxKcgn0<@JLLKGGTxayV*K$GMqir4|~ znLnR|vcEtF%b6DRj#A5}^s=~A;W8b|k%8*kSZOPdiC8vjn|s$_EjX{Xnp?0u) z)+sF@>ppkh=h_~?sGbvXb%>9pWAg7KlU)A9?(CWDd(xK+s~BtjASq77seGW-bQJ7= zKT!_P>RO1ax$YThGcJcC!Y#UT6Uo(hBTjYVeyk*v4xd7T>CQBfMVbq)pF;8sp{gbN zZ0csbQ9r(FgzV^32tkMB=vWVFMVTj~_(-pqzROvRRVs=nUAsTs_dW8s%iGq`-V$}j zONe_2jwD`LYJn=ey{ssHt190r#*bY*pl=0nS(^MT&XE7pGaK2DrisH};h*}^dZ{r=89%WOc(TfL>UC{)t?bqrueo(=KLGUMCI&-U$oO1DNHOFb z9_-55SsD;hY3*40LutE%x?10chjT75NST$I+6$0XG~LWYM&)YlBA2-BVdhH)JRc-lRi7N+nk`OW~Z(u zCS>$5XqhQdyDRTfL`=RU#_zt6)1GT~$q`b?D-7O?Z2+v{^b7oRM?DHk!AIbB^06>% zAT2EexKCxBTl~i>$XIsklXo!lzrUm6uilX|aqHpjN2?veKIP|xLmgk#>x|3Uy;DN$BQ63!K zzkd|KyL%LT$7%ZU>PHcaO5M2`#R6E;o0viCTBSOj5I~OVr?CO{*|1+TcV{_oY}1Rq z8>zt1uqohnrcgXY#ye5TDLvV;wL(V0hrJgW`4I?#Uy7TTMC~6!8*t6HxPg84zFSu_ zuhrS&4rm~*%*wkA<1H1r0BheLd8hw=`CvooADopWjJ!Sm)sPS}OOY-x5;Phw<5(gp zKiPWafvxW<4*?dxes!C;TZjEF>}iDMXb&stXyW-zL;7#BP0rku2(HK6^1)Hp{)~UJ z7n|-H^>~mER6O(&J@Q5t_pYC{Zl1g3|Dw{;#A27=vuyb4U zDC=<7QUSL9TxhHWdDg#G<(KgfG#iQeVeoPFCt`_P@ZI)PXGt4vp^Ff|cEAUYzwW11 z6^p?>o5CBo{@|MorwLc5E-AxJO7p4^mxYmUFMHBuh#kEQoIi@y%OSL++M5JI`>bw! z)sB%4gRFDvy8n2a+!&0UzQTi>cGsz7B_ggxCs#-zR$9?DPng%n6JxOFj1-dL*5xv^D&<_!Rh2itN3>bmN$}^_!F}f4z@YYGl zmwq0(9GglHl`dYhTYcaJ09xse>KLV~ z_`#e^`UkR)IWBQ)j;tFqTf0+unG@M1tndBqB9Mz?lGjF6`E=FTjMx}t=4;#vwVeRa zLqMT~*wjJUx-1QUGfylq^BX*IRx?XY>zy=KWewZ_Rp7{0*!EHo6 ze`po2l25Ns`D5s<`zd5^Xx?Wc$$&1k1(eBp9z7`}#mjllKCJ0oKWS^dVUoXAOQ`DQ(atQM+n$*gg^M^iy$!Zv>pRg!u1giFMgznv=ag_e;}~gPg;8h1 zTb;x(WFqp1zRaX@`W-(oPi6arRtpaR0>FV;fu=|DS4?Yf_`kPufi3l9ePw#%{v#P0 zxgvV6e`ttia4q19^B3%GeQ1I-_f5|uTkWoOC^MhygS)l&>L`(O$S{okq2uV&X_^%B z-*fvUvec#qqdIr$N7Ifvr-8&_QNNy@v7*xb+A9BKyeg%;SfACxoI`MbG&25nN6krF z-Hd*l6XM**LrfQ$GsWyXro=h}mIt`4nxXCUlqniJdWL{jg^}ft@!!v+mA9&UUFl!= z0~Q`VIr1r^!R2o_)UB$ak&Ha99Jyfe*_--M?N6rX@)Ys|B}FY2CuCCee!Txmv|1lP z`D&4sdYGg_$MEep>B-mDY9rJX>7J&`Hn7Uj-O^M`c*PSWTV@syiq*Z}T>bi(f;K1x zC$73w5}i`(<$Z^(pAqq%HzASr5+6+gR+IP;9>cGevEZc+akp`g-97H2(nd5v7a zlTWV+Q3~8hTJ^isE8=OB)@k5`b#U^WYx(Lko1$LI(^|Rr#}!OZkE=*$mr@&R9SQbb z`=4sQ$vh~+(k=zJ9z=_P)$d#2nh^&d(SF0%YLXC#!^Tv-H}v{6)`5@xev}>U{ZlSoN(* z18^d^JxJGr=ie=Y`Rpg~#Sl>H(Pnlg%3j z3uN3+1<1c?rW*H7mx){nE|tfbu03Bl{Me`9_6}icqvtzI?egD*4mY}#s0r*hb7Nsx zrn*4<7&cL#3C~wXmm=z{d+{vBPcP|)M?>_$(P#vn%NS4CH>T&npgzJ>uE?5MHQi)Z z`B+`V^@8->3ee2TRZjxfad7}hlI<8;rRiG_DV;|bfY?1SykTC zp%orIY45O)z@A?*gIH$p(}dliE)1?U6-Mgk9KgH86!IhYb}xzhC0=>cM~oKbo}svW z@%OWf4Q@RFcd@n>N6gI>{Z$U_sUd$UA7%a+aLH8YVHbCi9eVdU8(n_INB=^7tSNG3K&hw6ZGw7GpuJ!hOSAxV*`*L-0p#(tD&zr-|YPV!-gT`mR7pdiB zzuXIogiB~YhqHUaw`NNca_inYm@<6Bt>G8sTd1p?bTQ(HJc;XiP=!F^qU)74v5v(8+(w3u7i>VnqUAZ`TkYp$ufSPtJFCTa`L{rgF`Xu5^X%E= z^1TTo-=)kuF>hgEEWrG&3D!;F^pT2?5v*cUp+EFdBc)xK$igERa6|>O9I-bac=)n3 zHKCm!uU6ZE(qfPrYYIq7Kmpbz%SDD-y1#{!Bpj8xD`h5zi=5e}chuBKm(bdps6mqQ zC*(9Q`e??XgQ)2y7dpNuQ~HO?>IpPDhJ*K&CQizJf%qOiMR(%$i{cj);)NmUy1q~ z^ob;}(n`1Lfow?!jJMsSwM8=VZZPyIj;OohdAwnL5XLIjqcG2tt}TOWsytRXtjCk{ zVbdfIj(a6)q z#(fg-RAT6+h@=jGr%~4`5u>z6*P|~c`yj|pN~J%)m5!jx@D@OGxOfp%T!rQ-N0S>q z17W}Gcyr{1GHcG&DW_NMRYN|1hN!NMecasjJFfr=f&P1%sQAf{CnJXD#mkS+eG5QG z(KVS@Oh10sH9&e*j+g0&tPu}`mS*a_Mw0KfUr#Bw++b*HhK9cbxg|Xc=2;FQJq^5> zP)mUFed!Ol-5jsR@%naxp!85Hc>HTc1?Z3nA$ATan3e-6oC2cfOsvXUxrZP|sz^7I zkCV%L?hoTOW*KTQG4%68<4#4#5I8U}8=0Hi{o(d;Yux_iFW0*|l7%u04X#}~S5>BQ zg~T-K0w}lOKmlM-m25PZEAe4#vcgsFPcu}kAWezmq{7HkQTND=A?JQ z;C=kb?+E#I299+<)N@$%3qcZ#dTx&LrI4Xx(b=^AR{;3-UT?B6^dx2=L7;7T@#(a7 z7V3)j3qjm?;v8*CYfGxPW%_mUYX<7`t^y8@Bn> zz$pFXx$N~>#1PX*9Mk+SM69f|#J=yB-f>05=eTCaYG@`8#CNn$mpRra!3Cnr!X#L|yvr$AcU2U(bbs?P?gw}pF{JHFn>Th2i zW%vpr??=qY9q|C($ZyG4#VTLQ;m!|T?-fV2ZRtyc2|${RrzJ*`W{;r8R%lI17Qo%8 z0n|8`-jA;L=20E^J5TAVrL$g_;XLj9NjYx!x|rUtbyU#mRCP>_6wm39&!r9WOLf_4 zx|WtT49Y~uV>s1HL#HqO-AzBTN6H;*ZoK>cw%pXs~>l}rT=>@Zx`QHiBUpYN*}*bydVXy zI7RHY8l%UWwIEhcF`;@!T=YB5R>P|dXYT1GzdY40I!<_y^k#APz*|I5HZ1wf&&p?pu&joR&3!b%71*2&8XRI2&TTCPZV^#BM?nwC9G*!7;?s<#k{`*&aOjd8zYK;(rfV>|XTL%dtmdCqc{`>}kx zlUUi9EM2uZin)*2bu&^C!<42iCgD^)V;I}TL}5%VoB5R~C1<>>ko8x_5Hq&aAe0TC ziUd@01yc{0ylY1YM>ErezwqV+e*A(bA3|dUwgcA-*Q0b4(O9nM%=4AbX0pb{y933c8V_qZ&5$n&Dg0-m zlNswCZ+)p`Pm`Z=xx31H+){aogoF;RbiTe=UL(aT=QX)Bq1r-9N`5nXL4N$e&nY-b zWJB)hI^NSH&+^y3+HE^4=YhIq6U(W|Q>OK%P(b9=cX;h$4>uu`H>U4N6YCR`%dv59)Q83e#bw>gzb@rOw0 zeOdU;8!kF4byx+$otk;BL`=L_2d9cx&3ub{)Xh92sbZ<+*5cR4P z;v~b`UMA}ZQL)le4r3U37@Z4o&9^BITvAmbxSPk>Y1KgWEjdI0!jbi&fBlueFy#hz z!yFd-viltm%}8%U5IgVQaw^?{v0i@Mi&sp^ z+zXh^(o@oMa`3xoS5?Ml=}$4umdX}Ox5|*wxxhAqZ3+%40XR>4v(@v&pUH)9QZNkP zs(&8apwi5FhI+1M%Y1aOK^HRH8CnZE93P_Omx3mC%y3R$mpqGdmW#xu`&-<98pXaY zDpUFgdnENqd3aDpSoajpWnPS?L}jKNnP4p&g4X|m_RWUGtpjL%6l@(tT`BgKH@J=8 z>~seYbI=l@2^DTGM)0}xrp}#e8ptMAndTH~;|IBFb!4yTquwucXMblp;tw6-{r&To zW6gt}Gk&wZA3wFB8w%6vDPC$`4)rZCs&y+SRf#+4Gzs%Eu~_!(8Xw zyvBw2q;~}r9^W$^S&%RR+Y{nqRnEg|Q(nz(v5e1fbkYIk{!(pD|KFfE=HOer(J_+J*0H(7QHl%!oxskzJu3 z?yfv#GG?O!`o?Td{u?tE8Jpz3hBQO+&)C6z?CX(2mmG<{0A}0R;|(Qk zwNKqc>-T{1&F4XuV5Xu=o;}do;c7DRgz@O^v;(hURT*7+%d-n8?wERQzCxXZ-eGoQ zPn(#Eqwk` z>@q8}vCU`BFxK{?7y1)Vw=tww_Zkk%ldag`BJ1Se@+E&E$ z1E)9TD=@naZP(%KmvfKrX(4fSDU%$<*uDW&_XVvbFnQeJ=jou#gMt9& zCstI56P(@ZgeddTiuW`gel)w+G>Q$Lh3(4|{Vc=y^7Bkv8wsV8f#V$xMNX2tt+vv} z6wnJW4cBWVAQOs|PGn}^sX6wN%5f7V{sDlkH*|8`g4T`3J{q4 zk(}$*bSq&W3M0Q{2uZtqHuejfPu}>|%P<83zpj;7)ZK$O66;x0?$H0K`xa+b)RRu~ zs#H6=+r7Sc(Oo}Wk5UhP4N()nH~k}p#9!loGxztk!v1ypto^bG4Uu_45R+BJ^-j>7 zPeXbgI_U7I61OblwvMpk9}u@YBQz2~`oXNt=Ewclh}P;BD{>Ab(KIR0{uW;r zG_`Dn^UcH$0!+P8RfWnU(LrT{19Sa6jT_v#v&|tntI@@g6OhXrBFpGU=}D`)wY7V# z`beTbWdwW5yrJ66%OZrhqFQx5S{8MCFl(HUogD7BfhwMizr?2OcP1)$zQVNvkxb24|f+2o|0eTOpOD6p_7&_k7FOENkN~4Iw&eFj$-|~Hp61N z62-Nq6_K1t`JN58jUQ#U^{dEde8K8K1s&4DDE!`G7iV zzf{A7CuTRsw?rshQg%MIhL`Zh`mCy)YFu9lsWdLl1Z~~7b?`%j5qAB^u6cpM_lEG5 zI8F}Eg53jEyU1VGl`U9ywN(8UvFV^R#_PI+&gPdss?q^12Nm2yBYk^BMFeFcr#UtH zA<_aYhM&loP+BNN=y+Auyx=Y9dl>Pnh2G=UJ9@+w-gh`TkGK~gMDRCC1$>`-TA5*!ts~d{xJAvoz>sdcU7Px9@g}q z>$RVe@0Zhta{jF8RW$Px7Av8Rggkbhbs?2S$^}Ngy`wqR=gq zKCiAWrf~;iu0ELFTt@pSj`4}>L4qGIU33+WXY49$=CtuKy;Y7brsqn(@IF8P5PT@E z=Q2awp{<~P+I2fD&YMo9e!Y;cQD%N9r+mW^BmZeAvhSYAbZ-Vg#z87=I11+;E7oqC zKo#vZ)wr zZ+HP@U?$N1Wpx6y`?qshfnongfs9c_hNZsX-)|2xMC}X0jc_=wy;m$pq{8bl`yoru z^pH~hr-t=Xc|waL#+cw3C>6=QP)>DLcdw2ZX zEB(Uf6Ircd%{wLEjlgkjZ$}Xzig*-(p-#Jx+HrxVX}Of zZD&$mElsoz#5X}s+ByO%FU9S(t{9eqM%|REItza#R8~Z~qqrzepRlzL-E1uXX5t-)Xo$k>@u3Cxhj=HG0yCR!gqzhZN{Z zkND{mrjrdg{}evY_AAoAAQ2|{C~u1^Ncf&J#b2O#>}!|Jp-el1Fh}CSV@M9fp;gI} zF1=sR4!_j%M8FU+a8LZcH0?O&45#!uJ&61(c5s*nVxbtv9>Vo%(61E*}g?Hj-kDX6lDD^#*rCn zNt~*>riB_Y8Y8$mn80F2UyBDOoygk>kaoU{S8%AbYV5)J$(9r$#S$<6xd*wgDagMX z6rU`4pcN7iyHMWsto9y9{)yvC=D$c>^<6~=wqrfQ?JYr4i`^AE2uNw)p)Ea)I^XFI z0idJQP>-~M&<-a&L{KbPv|X%}^o}2N-lhy4n2PIPv9X!dI)DG8=J}o^=>iYT;n@#* zo>r4`kefyQ*|e)00~_3!)^;pbG933Bn&VG-5S~vl2l1)<6J@z>h3`3VM-!isQHf0= zrhHW#-Je!?Q4sYKGN-f#i`q(tv;5`DW79tz>Rz|XmNkOTize`;d8=j}(Xb zBX0!frOg0_QDTO&W2HZw;3ysb@x++=sm4)|Wfh|AZBx5)MK$$drSwY0I){bzrb(3k&3_V0=2^0rMoIaXH2``r6jMmuwsC{O(>>hFq}_tJ+#0z#wBClG4xxW!4b<% zhz&7a?oUuHfSunPXN_3i3Hp`A|6sUp)V!ZF9cR6{^_A=pA|~P948Vx~D?1$?Q#IGL z+Pt!?$NG@g@dLf@Yj<(H`P`WLy`oww*qLnC;G4Dj%SoHo7j)tFTVf=)Er%{l4LDzJ zA0~MBF!r9uHe=E#(q&t5x&d%avoCxVA}fY z^3So!-;!2NF-l1)Hqb7~%^9|DyyY6|%xwyI+@*f|?{wl}? zm0}Yb1z~RKVI#eHzJ;WG>yC+@xPFp7LB1f>B=C(0j;KfE6|-)U8uh%?|EAg=v4BkA z>hfGO{Xm?xgtYCIGoHZ(mw6JsmXy9;Q3)jQDvL(shIJce9oT9a8e~Fjju89#^M8Vi zf}iZ?5g&Fx(MHw-Wo8qJd^T29r8RXof>So|O&hxOC1WbA=E3%v(&>VVzVt?gFIB5} z%*Ga4Iz}}RMhME#9BX(%G?kDvR6-`w%$tHY>ryW*qozmhvP-0|7XVbMZj}Ejzrk9f?`p5v zNC6x`eV1b4+f2TH~*nbs$ z_xE!~Y7TVG!`;Ay=E9s>*#3+0A_-G{Y3LWzgl*?$3Bn@a(AL0r<+|V>A;^Pxj*@ph zS3_o8JA-=P217e-2D$5b%ho64ru>TT@I!AR|E!Ntb+<)arh}?EsN?Ub{-0}L%5QKk z@N;}p(c8R%a7;~hb|`tf)pucqaq?4e1`~%I`qVm3*?erTZDd`7I~1(GGgeg&@UJwW zNTyNZNW2Lpq_}aWnXM*P20-{Hf55gi=_z)#R(mRHn9695neuy;iB9@Ch9IKDy*I^e zwQ2Hfa;l@fYj6dYKI~VuXbRnBs&WAmfES}@mmHk-mlWa7Fqo(nZj2L%mJ9dgxRV?IE7B=Gl0I4;m3npCl04G_R3GvfPuCx`j zY1oh%9LB3Ld$j|FPZcVV1-eQ|I#{g}NpacN**R!mK2|9u?(S}2<2PCl?q&%LW<)sI zc>&4m!jB3Y-z8AerreE{S7A9qOw8ijH%4>vyE4?HvX}Q2#@0RTUV^aibbB)@H2)NL z-NIUK6%p3=Ge-Pq(#^rh#Tspi7<84Z@p3HG*s7x6dt;jBI7@dl{Ttzp;0LXN_du7N zj@Tz8KucDeEe7#0!*Rbn^V6STe-vG6w3l&faG9Txn>zZU8YbHAG`(Ts!3Q!TLc9#^cY(+1BjdKae|Hf+8p4MzV2?T~UaPl<1j?QG@SvdUHpoCV7(2aT z;}(W@JxG?g9@Ax%Cd8g~wBy?RH2P5G_-Es@dfrBs8XCoak{Polh&s2@FKcGPAh(O`K_^|8 z^2|={H22RHGBm`M%oi;znx5s{pFFPdO?MGBac~hG!7j4F+!G zITy=}UU73D|C8^X>t*ozwJOl8Vu-Tg7*fB5W9UJ$T1+cQf=la6NM7_&p_5S(k~$&I zT<{iv(p|BOVJ2@(h_)-=IZe^}y*zf1ZojII#Q;U?algJT-i0#!%U+Px*vE(E&F`At z4Eg|jcIqc-L+wd7Xdxp>heoM`!65z73lwYSA93rocm>K#jO7{{tnM2M?mqRVY7|d( z%DgY(5HkN!xf{G*tExiPQ9Z1zN~RpSe38-K(jSxGe zZEan*R!LrS(v6~!*SF|LD$38##%>4%uMp;{5N{c!uT37xf8VSA>eQK{)|;5N+qb}M zv?wdPl_;M=K_NaGe~(T_M_+05kY`tdRiZ^>39ZQU?*a9;@WeJN{qw}ky#n+#XZ<1v zO%xksM6}^yB=Y9uLQ9qFO-&;I+IR8rd}NlrH=%91SrOu3F-U|c78AlFpvK_`@BQ|_ z&5sp2RBiIm`fW@#NF{XAh3@CCj_oh6Fn)m7t~yEes~%kX`9`Pf*&W&_pm>$$7{*jO z$alRg-dW(hyh#mZ(>?u}8sBXYjymJzdY#SzK?x&_+>Awb?YGVz5>*V=OsVp6p7Z}W z4*GLGO0bLDCSLe{Cc|DE32@#*Va~EIFd8Sge~w#yFh5i_LMRNT{VDGGI26GnW{}5m z8WK|bsQJAVw?&n`pNvjW*7x#STUis$oHA*PfcIu7{#D+i$y%tS2D@j$#yb}N_U*M@ z^yUlm8t5z(K(k-wC&tUQV)loB5FmHwQGLCiR^&K{T@OsqdZ@xxWXk}crAl)!ndi`R z&+H^YMO_85dgB!n_zgIXA$@5q=YaUskVW~jOr7pII^Sspyx`o*azT#cm*;<9549!4 z_2j=yH%^9>6iCkm@Q!G_U+78DiSe-N%WXHS6cz^U4kHl1?rx9GpayJfvC?|9w8sNy z1YJ$tUl~x2U?ua=#p86Hgs8n|I|P>tlkH|Q{jLGJTb z4la;as)!vdw1ET!;Q9`KsfdHN*;2RlDDH4~L54#+`|*|*eJTa>>$LQr;>e5^UbiRq zv}TYSE{)h1%cR4rh>n>UzuYRGYDNW|OI{cH#n}|6v6gqfdr!No3vfkv9emZjO8*j% zx=)W|E4x0L$A3pzr1daNnP}D?QY{I+#W0j=Kv5dtc2+%zXcM>`n<}C4?9UFU5>Ny6 z`uL;wuQaCj+4s+l%zsa>%lmBX@XY3t%96}&V-<302(LmRn_~I=t-<2O&>NA(xb4|x z-kz5#kPOu@;sLKzR~;QQy4c83iVc+_FDc|_M4mcpF zh)8YysFGxsG0&pCoDx+L z*bB-gkB?$69<`TZ>03N?Q$#tJhTXvK!;WJzt2G-xp(i`9>d*uuK< zymG5NLE^Z5jwbx2UM8`_pW`&mH)|C#M2x-iX#A$)Ib*?SksOufumhDxJR6AJT|6QK z2VuxdyFq4v0ZW_K7)GGG$1j`Mt@%RVHK9BHvjK1cfk@}S-&r?GYdn$7B}}7>ocE}Z zZJO|NZ)L!u5IKT&UDSQqcMFrvG$jq%-VgE%1?Um8gL@B+!&Ct)*{eaKhaSA1&y9NB z(!h%sz39UBt5-eqI*7qdLbqvY)ISZ^q@*_ⅆ<5r^-GOxoN@c&$X|727b7cx7@c_ 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 N_(<(x$%E%_{s+ZaAHV", + "errors": "replace", + "extra_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "is_local": false, + "model_max_length": 262144, + "model_specific_special_tokens": {}, + "pad_token": "<|PAD_TOKEN|>", + "padding_side": "left", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null, + "added_tokens_decoder": { + "151643": { + "content": "<|endoftext|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151644": { + "content": "<|im_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151645": { + "content": "<|im_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151646": { + "content": "<|object_ref_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151647": { + "content": "<|object_ref_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151648": { + "content": "<|box_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151649": { + "content": "<|box_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151650": { + "content": "<|quad_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151651": { + "content": "<|quad_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151652": { + "content": "<|vision_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151653": { + "content": "<|vision_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151654": { + "content": "<|vision_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151655": { + "content": "<|image_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151656": { + "content": "<|video_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151657": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151658": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151659": { + "content": "<|fim_prefix|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151660": { + "content": "<|fim_middle|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151661": { + "content": "<|fim_suffix|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151662": { + "content": "<|fim_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151663": { + "content": "<|repo_name|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151664": { + "content": "<|file_sep|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151665": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151666": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151667": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151668": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151669": { + "content": "<|PAD_TOKEN|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + } + }, + "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within XML tags:\\n\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n\\n\\nFor each function call, return a json object with function name and arguments within XML tags:\\n\\n{\\\"name\\\": , \\\"arguments\\\": }\\n<|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0].content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" and message.content is string and not(message.content.startswith('') and message.content.endswith('')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if message.content is string %}\n {%- set content = message.content %}\n {%- else %}\n {%- set content = '' %}\n {%- endif %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '' in content %}\n {%- set reasoning_content = content.split('')[0].rstrip('\\n').split('')[-1].lstrip('\\n') %}\n {%- set content = content.split('')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- if loop.index0 > ns.last_query_index %}\n {%- if loop.last or (not loop.last and reasoning_content) %}\n {{- '<|im_start|>' + message.role + '\\n\\n' + reasoning_content.strip('\\n') + '\\n\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n\\n' }}\n {{- content }}\n {{- '\\n' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}" +} \ No newline at end of file