From 6efb97904b8497d697a04b5730e75cc7afd48e88 Mon Sep 17 00:00:00 2001 From: decolua Date: Thu, 3 Sep 2026 09:59:30 +0700 Subject: [PATCH] feat(providers): streamline tokenrouter models and add missing provider icons - Prune tokenrouter seed models from 121 to 22 flagship/newest models - Add z-ai/glm-5.3-free with 0 pricing - Add missing 128x128 icons for alims-intl, alitp-intl, fish-audio, and selfhosted-* providers Co-Authored-By: Claude Code --- open-sse/providers/pricing.js | 1 + open-sse/providers/registry/tokenrouter.js | 120 ++------------------- public/providers/alims-intl.png | Bin 0 -> 3546 bytes public/providers/alitp-intl.png | Bin 0 -> 3546 bytes public/providers/fish-audio.png | Bin 0 -> 5392 bytes public/providers/selfhosted-embedding.png | Bin 0 -> 1261 bytes public/providers/selfhosted-stt.png | Bin 0 -> 1261 bytes public/providers/selfhosted-tts.png | Bin 0 -> 1261 bytes 8 files changed, 12 insertions(+), 109 deletions(-) create mode 100644 public/providers/alims-intl.png create mode 100644 public/providers/alitp-intl.png create mode 100644 public/providers/fish-audio.png create mode 100644 public/providers/selfhosted-embedding.png create mode 100644 public/providers/selfhosted-stt.png create mode 100644 public/providers/selfhosted-tts.png diff --git a/open-sse/providers/pricing.js b/open-sse/providers/pricing.js index 1855964a..7cc302ff 100644 --- a/open-sse/providers/pricing.js +++ b/open-sse/providers/pricing.js @@ -264,6 +264,7 @@ export const PROVIDER_PRICING = { "z-ai/glm-5-turbo": { input: 1.2, output: 4.0, cached: 0.24, reasoning: 4.0 }, "z-ai/glm-5.1": { input: 1.05, output: 3.5, cached: 0.525, reasoning: 3.5 }, "z-ai/glm-5.2": { input: 1.4, output: 4.4, cached: 0.26, reasoning: 4.4 }, + "z-ai/glm-5.3-free": { input: 0, output: 0, cached: 0, reasoning: 0 }, }, }; diff --git a/open-sse/providers/registry/tokenrouter.js b/open-sse/providers/registry/tokenrouter.js index 2e3cd248..4985b3fd 100644 --- a/open-sse/providers/registry/tokenrouter.js +++ b/open-sse/providers/registry/tokenrouter.js @@ -24,129 +24,31 @@ export default { validateUrl: "https://api.tokenrouter.com/v1/models", thinkingFormat: "tokenrouter", }, - // Seed snapshot from live /v1/models (120 entries). Latest catalogue is + // Seed snapshot from live /v1/models. Latest catalogue is // fetched via modelsFetcher; other ids still accepted via passthroughModels. models: [ - { id: "MiniMax-Hailuo-2.3", name: "Minimax Hailuo 2.3", kind: "video" }, - { id: "MiniMax-M3", name: "Minimax M3" }, - { id: "anthropic/claude-fable-5", name: "Claude Fable 5" }, { id: "anthropic/claude-haiku-4.5", name: "Claude Haiku 4.5" }, - { id: "anthropic/claude-opus-4.5", name: "Claude Opus 4.5" }, - { id: "anthropic/claude-opus-4.6", name: "Claude Opus 4.6" }, - { id: "anthropic/claude-opus-4.7", name: "Claude Opus 4.7" }, - { id: "anthropic/claude-opus-4.7-fast", name: "Claude Opus 4.7 Fast" }, + { id: "anthropic/claude-sonnet-4.6", name: "Claude Sonnet 4.6" }, { id: "anthropic/claude-opus-4.8", name: "Claude Opus 4.8" }, { id: "anthropic/claude-opus-4.8-fast", name: "Claude Opus 4.8 Fast" }, - { id: "anthropic/claude-opus-5", name: "Claude Opus 5" }, - { id: "anthropic/claude-opus-5-fast", name: "Claude Opus 5 Fast" }, - { id: "anthropic/claude-sonnet-4", name: "Claude Sonnet 4" }, - { id: "anthropic/claude-sonnet-4.5", name: "Claude Sonnet 4.5" }, - { id: "anthropic/claude-sonnet-4.6", name: "Claude Sonnet 4.6" }, - { id: "anthropic/claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "bytedance-seed/seedream-4.5", name: "Seedream 4.5", kind: "image" }, - { id: "bytedance-seed/seedream-5.0-lite", name: "Seedream 5.0 Lite", kind: "image" }, - { id: "bytedance-seed/seedream-5.0-pro", name: "Seedream 5.0 Pro", kind: "image" }, - { id: "claude-haiku-4-5", name: "Claude Haiku 4 5" }, - { id: "claude-opus-4-8-m-aws", name: "Claude Opus 4 8 M Aws" }, - { id: "deepseek/deepseek-v3.2", name: "Deepseek V3.2" }, - { id: "deepseek/deepseek-v4-flash", name: "Deepseek V4 Flash" }, - { id: "deepseek/deepseek-v4-flash-0731", name: "Deepseek V4 Flash 0731" }, - { id: "deepseek/deepseek-v4-pro", name: "Deepseek V4 Pro" }, - { id: "ex/gpt-5.4", name: "Gpt 5.4" }, - { id: "google/gemini-2.5-flash-image", name: "Gemini 2.5 Flash Image" }, - { id: "google/gemini-3-flash-preview", name: "Gemini 3 Flash Preview" }, - { id: "google/gemini-3-pro-image-preview", name: "Gemini 3 Pro Image Preview" }, - { id: "google/gemini-3.1-flash-image-preview", name: "Gemini 3.1 Flash Image Preview" }, - { id: "google/gemini-3.1-flash-lite-image", name: "Gemini 3.1 Flash Lite Image" }, - { id: "google/gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" }, - { id: "google/gemini-3.5-flash", name: "Gemini 3.5 Flash" }, - { id: "google/gemini-3.5-flash-lite", name: "Gemini 3.5 Flash Lite" }, - { id: "google/gemini-3.6-flash", name: "Gemini 3.6 Flash" }, - { id: "google/gemini-embedding-2", name: "Gemini Embedding 2" }, - { id: "google/gemma-4-26b-a4b-it", name: "Gemma 4 26B A4B It" }, - { id: "happyhorse-1.0-t2v", name: "Happyhorse 1.0 T2V", kind: "video" }, - { id: "kling-3.0-turbo", name: "Kling 3.0 Turbo", kind: "video" }, - { id: "kling-v2-6", name: "Kling V2 6", kind: "video" }, - { id: "kling-v3", name: "Kling V3", kind: "video" }, - { id: "kling-v3-omni", name: "Kling V3 Omni", kind: "video" }, - { id: "microsoft/mai-image-2.5", name: "Mai Image 2.5" }, - { id: "minimax/minimax-m2-her", name: "Minimax M2 Her" }, - { id: "minimax/minimax-m2.1", name: "Minimax M2.1" }, - { id: "minimax/minimax-m2.1-highspeed", name: "Minimax M2.1 Highspeed" }, - { id: "minimax/minimax-m2.5", name: "Minimax M2.5" }, - { id: "minimax/minimax-m2.7", name: "Minimax M2.7" }, - { id: "minimax/minimax-m2.7-highspeed", name: "Minimax M2.7 Highspeed" }, - { id: "miromind/mirothinker-1-7-deepresearch", name: "Mirothinker 1 7 Deepresearch" }, - { id: "miromind/mirothinker-1-7-deepresearch-mini", name: "Mirothinker 1 7 Deepresearch Mini" }, - { id: "mistralai/devstral-2512", name: "Devstral 2512" }, - { id: "mistralai/mistral-medium-3-5", name: "Mistral Medium 3 5" }, - { id: "mistralai/mistral-small-2603", name: "Mistral Small 2603" }, - { id: "mistralai/voxtral-small-24b-2507", name: "Voxtral Small 24B 2507" }, - { id: "moonshotai/kimi-k2.5", name: "Kimi K2.5" }, - { id: "moonshotai/kimi-k2.6", name: "Kimi K2.6" }, - { id: "moonshotai/kimi-k2.7-code", name: "Kimi K2.7 Code" }, - { id: "moonshotai/kimi-k3", name: "Kimi K3" }, - { id: "moonshotai/kimi-k3-free", name: "Kimi K3 Free" }, - { id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", name: "Nemotron 3 Nano Omni 30B A3B Reasoning:Free" }, - { id: "nvidia/nemotron-3-super-120b-a12b", name: "Nemotron 3 Super 120B A12B" }, - { id: "openai/gpt-4o-mini", name: "Gpt 4O Mini" }, - { id: "openai/gpt-5", name: "Gpt 5" }, - { id: "openai/gpt-5-image", name: "Gpt 5 Image" }, - { id: "openai/gpt-5-image-mini", name: "Gpt 5 Image Mini" }, - { id: "openai/gpt-5-mini", name: "Gpt 5 Mini" }, - { id: "openai/gpt-5.2", name: "Gpt 5.2" }, { id: "openai/gpt-5.4", name: "Gpt 5.4" }, - { id: "openai/gpt-5.4-image-2", name: "Gpt 5.4 Image 2", kind: "image" }, { id: "openai/gpt-5.4-mini", name: "Gpt 5.4 Mini" }, - { id: "openai/gpt-5.4-nano", name: "Gpt 5.4 Nano" }, { id: "openai/gpt-5.4-pro", name: "Gpt 5.4 Pro" }, { id: "openai/gpt-5.5", name: "Gpt 5.5" }, - { id: "openai/gpt-5.5-pro", name: "Gpt 5.5 Pro" }, - { id: "openai/gpt-5.6-luna", name: "Gpt 5.6 Luna" }, { id: "openai/gpt-5.6-sol", name: "Gpt 5.6 Sol" }, - { id: "openai/gpt-5.6-terra", name: "Gpt 5.6 Terra" }, - { id: "openai/gpt-audio", name: "Gpt Audio", kind: "audio" }, - { id: "openai/gpt-audio-mini", name: "Gpt Audio Mini", kind: "audio" }, - { id: "openai/gpt-oss-120b", name: "Gpt Oss 120B" }, + { id: "google/gemini-3.5-flash", name: "Gemini 3.5 Flash" }, + { id: "google/gemini-3.6-flash", name: "Gemini 3.6 Flash" }, + { id: "deepseek/deepseek-v4-flash", name: "Deepseek V4 Flash" }, + { id: "deepseek/deepseek-v4-pro", name: "Deepseek V4 Pro" }, { id: "qwen/qwen3-coder-next", name: "Qwen3 Coder Next" }, - { id: "qwen/qwen3.5-122b-a10b", name: "Qwen3.5 122B A10B" }, - { id: "qwen/qwen3.5-35b-a3b", name: "Qwen3.5 35B A3B" }, - { id: "qwen/qwen3.5-397b-a17b", name: "Qwen3.5 397B A17B" }, - { id: "qwen/qwen3.5-9b", name: "Qwen3.5 9B" }, - { id: "qwen/qwen3.5-flash", name: "Qwen3.5 Flash" }, - { id: "qwen/qwen3.5-plus-02-15", name: "Qwen3.5 Plus 02 15" }, - { id: "qwen/qwen3.6-plus", name: "Qwen3.6 Plus" }, { id: "qwen/qwen3.7-max", name: "Qwen3.7 Max" }, - { id: "qwen/qwen3.7-plus", name: "Qwen3.7 Plus" }, { id: "qwen/qwen3.8-max", name: "Qwen3.8 Max" }, - { id: "qwen3.5-omni-plus", name: "Qwen3.5 Omni Plus" }, - { id: "qwen3.6-flash", name: "Qwen3.6 Flash" }, - { id: "sakana/fugu-ultra", name: "Fugu Ultra" }, - { id: "seed-2-0-code-preview-260328", name: "Seed 2 0 Code Preview 260328" }, - { id: "seed-2-0-lite-260428", name: "Seed 2 0 Lite 260428" }, - { id: "seed-2-0-mini-260428", name: "Seed 2 0 Mini 260428" }, - { id: "seed-2-0-pro-260328", name: "Seed 2 0 Pro 260328" }, - { id: "stepfun/step-3.5-flash", name: "Step 3.5 Flash" }, - { id: "stepfun/step-3.7-flash", name: "Step 3.7 Flash" }, - { id: "tencent/hy3-preview", name: "Hy3 Preview" }, - { id: "x-ai/grok-4.1-fast", name: "Grok 4.1 Fast" }, - { id: "x-ai/grok-4.20-beta", name: "Grok 4.20 Beta" }, - { id: "x-ai/grok-4.3", name: "Grok 4.3" }, - { id: "x-ai/grok-4.5", name: "Grok 4.5" }, - { id: "x-ai/grok-build-0.1", name: "Grok Build 0.1" }, - { id: "xiaomi/mimo-v2-flash", name: "Mimo V2 Flash" }, - { id: "xiaomi/mimo-v2-omni", name: "Mimo V2 Omni" }, - { id: "xiaomi/mimo-v2-pro", name: "Mimo V2 Pro" }, - { id: "xiaomi/mimo-v2.5", name: "Mimo V2.5" }, - { id: "xiaomi/mimo-v2.5-pro", name: "Mimo V2.5 Pro" }, - { id: "z-ai/glm-4.5-air", name: "Glm 4.5 Air" }, - { id: "z-ai/glm-4.6", name: "Glm 4.6" }, - { id: "z-ai/glm-4.6v", name: "Glm 4.6V" }, - { id: "z-ai/glm-4.7", name: "Glm 4.7" }, - { id: "z-ai/glm-5", name: "Glm 5" }, - { id: "z-ai/glm-5-turbo", name: "Glm 5 Turbo" }, - { id: "z-ai/glm-5.1", name: "Glm 5.1" }, + { id: "moonshotai/kimi-k2.7-code", name: "Kimi K2.7 Code" }, + { id: "moonshotai/kimi-k3-free", name: "Kimi K3 Free" }, + { id: "z-ai/glm-5.3-free", name: "Glm 5.3 Free" }, { id: "z-ai/glm-5.2", name: "Glm 5.2" }, + { id: "z-ai/glm-5-turbo", name: "Glm 5 Turbo" }, + { id: "x-ai/grok-4.5", name: "Grok 4.5" }, ], serviceKinds: ["llm", "embedding", "image"], embeddingConfig: { diff --git a/public/providers/alims-intl.png b/public/providers/alims-intl.png new file mode 100644 index 0000000000000000000000000000000000000000..9bee7d5b4d42f85a5ff6302b4fb6a9f14a40387c GIT binary patch literal 3546 zcmb`KRag^j8^`=n_zr7!3|3L_!?hF<{c5z-UHEjIM!#APR^`$0Q~=UR9;4?AD(>Q;dk;L{O{kL*K=LZ(S4&V%#2wW`56HK01Nb{f#o@oe??DsZU-SQ z_;Ub*Esga6jT3@j&I1FFdr(hPQ-I95PY(d5_yB1Bww#OqTmS$y1_+=&C-83$L-pS( z5<~qz|8L{XESm81M-89`x>gauuMU3MT*F+yHzDD=iwdkvT>7r5R45ERC&U7yTBKZ} zto>cd*Ogg@`#ws-8kK8h>5)-0L;>Vl;)}GQ)|NOBSPDWV4wM6Xi=}ZVrgi&)>}fh5 zij?pF+*@!Ue`^UK?3v+xih6_h%OTMx8cvm8zI`EHn0!hvMU{pW$NZaE22<$ zt|5CzRN0uvNEPtepfe=BKRa1uaE$sm1~jF`&9R>(oo2qm_WPI3Q(D@N;-LP~OMK8V zAG?Som&#qliHp?ogy&cd- z38?|zvII7|`LVvp(MLYM+#cIkIBzxi-bP)zgOylqHDI5T2Yn%LAVxGhlVVCWDTt6d zz`?Wg*<(uQGil#eb_G;8sH^^PV6N(pRm#U5a!O7ZVZVAGYMQz;HWzmF@pJ}MjrHc> zGw)+&Z^DO@OWv>go+KN4g8 z{Rh${yT**EsSb2+9BfW~KG6Lu4JNod4c9MyXRvI7YkM>jwRt6?OS15vof6dw*R|Ba z?w=;*kISK|gk>9h{0bb_Let?#wacSoxOv%W^&XBV0UF|GfW5qexvU<&EI}7RPvCRfC{qj7$}Q#QmaDOH&8$)1GKYWJ!XhqAhrgQ4d_h#ViMe{Z zS31`PTWj>o-FWR*tgiww*Yunwt3Z?MHF4jgXXjo4{sBJb+MmxXq2MF8~xS{h{vqaIWB`@q6N@;=j_6kU= zvfzr5cWX9p&?`Sivh)FfVAnqH$DOA>lbXJsH~dD@8(ah>hPPj~7A5#9%%?szvq z8kC_|D#}eF@2M@IXvBbypy^I9oBIoayazS>ODyA;Hfz-uCg>h=D8g&h5T>|tK(!w2 z{`6>I=#0^iBT$^UB#`#3^cE>V))&iG#cL`nNm3FM1}4Ul}U+;LiX7iFXcyiT!AN*M3nS^vGbmSyhZPn z6?_FIYNi|gN*?+{xXV_*ABFaEPZIcg!Ppo5t|G5aA84;_MIWd$|6EKA;Ig3VSlNmW z03(kiLK=|lSQhR5U|C>~S`~~I4G5q_R>ByTdl?pFFf@ok!YRoFuy49;0|X-lVivb- zs3HRO+8L#QB=QePJ3ICvN0;^ak0n;&WODA7aeP9!vJI&~>LbsCGT!pxRJAAdH z#9=V>^*-BSWTn6^e}ImVZjdBW4#%jb-M3iQa5)t#v5?kW6-}pvc1ja4Gj0Z%-GAB5 ztIzlpA#gMdA>LlUAD!UUY33NO=95Mb{I&y$@0i&1JpRn~HTcPid?E+~LS?n6YWS;Z zR*b*?O8OC|a@65)S7x=IbPw)N^60M{40dib4HO z-=@cwjay_Xsc^=GFNWYSH*fe`{4Y8O0rO)meTL6Bv8i@)76Vz`;q-nyq1(?aZ=A0+ zBax^aNM`0ydt8%W#N8-Xap0vzdvQ_WYawFftc&0U60y>|&gBa7&Wr@7Kia+351Y3*t+QY!LUti2I!!I#? zqrE%I%*E5#PxhN_-+b(cET6H#Q9`Q8#;V)s?yXw%-{fQc>OY#MP8rmX)(m^a!Vm|bCb&ViZ4N}TDNo-w*z(p(yST|c!y6r@XZllX0KGlfR@s~p~bCdMxrsJ4EU8m~BjRCwW!rSWBi zHFtik&t~uIqP9}<`Ho@N#4nD+gqO1X#fe?dni_}x2|;?SbdRKG7-K-zI;`(lZt%N_ zX9h887lX{>+Ik3c%1`AcDVA;9*+WM9Z+s>0mp#dR*#F&%mo&(Zz?9$neJ);*M+wB|Coh2jZaIhewd{?IWfP*COK^Fc}o^I4A!ve zbQ#Q+{v$j0Bepi!E(N61M_;gdRHN*MNbjas3G0K*ZH3^^w4d|yYngZ$N^GqgM{S)9 zC$}p1erCT$))vkhHKrHkaSv0Gv1aREuRnNhuCvQJ>M}GiTBp%d-MG&a!+n?#94+WH zXYJ!NG$kvuB3XZd{N(PZi@G`Kbr~Q{L?Bp`4PMSH zCXfoUT6)Or=&!y|Crp3~NcLi{XSPTC;t{#(8d3Ste=`W#5Y*^l&frZ-AB}zhhY=0gT zyKwbn;ANh_p6Lw}L*F z)r>7-Idm~gKHTmcWn-|I$rhrwTM14%R@X>PP(ryE*{br|%2ihsxn~+&yse{bzvBG< zLm;VROVp#_hQkDAmZ44}p7Xt`qo2b?ky@4~D4XWo%d-Pt$kfnD^H2*KPN1O<+rNf5 b3L8axIA2ev8@u`F?_C8oG&5+_bB_NHeLQQu literal 0 HcmV?d00001 diff --git a/public/providers/alitp-intl.png b/public/providers/alitp-intl.png new file mode 100644 index 0000000000000000000000000000000000000000..9bee7d5b4d42f85a5ff6302b4fb6a9f14a40387c GIT binary patch literal 3546 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 b3L8axIA2ev8@u`F?_C8oG&5+_bB_NHeLQQu literal 0 HcmV?d00001 diff --git a/public/providers/fish-audio.png b/public/providers/fish-audio.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8f9541861c2284699847856ba849fa4e06deeb GIT binary patch literal 5392 zcmV+r74PbaP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91fS>~a1ONa40RR91fB*mh07#AmcK`qsdPzhbtvC!g(Myk*#B7xH236ugw@rR{W`Par%FoB~QKRjPCqVO9`3pV0)N z=b!_(0$qWQKnI{1Kw&f(T8!-gmEn6}J+K1`L2HsRlo1L5q1OOM+W>=rM}YPK%{NVc5a=2jaR&Gi z_yYI}D1tIvKp1EWv;siz1>oKTzyP2x&=kl7I)+BB1y%x|LJAaLcC;$Xchwd@pA%N4iY$gs59{`J?2y`ARlqysK!ejjJ!GULiY!`gApgFC49eAT6 zeS`{800_P&IzAGZ1at;&Wa7->Rp31+LaE=3@Ld5Q{7&fPpMW7iRlhqN(E6^RT}yzM zp#;19Y@=@q0Kwmcj!gh20xkXQWCqnmM{xl#2a3RjCeO(i1%U7i(UU0v%|54jn&NZd zG9J-M{DU99f#(VU;rB;p{t9r4r^!AC)*$JNP=b~Av!tHVv!zs;eBdcGiQ24%pSo=N zk$2$X7{IfIFi$K18qDohj`uGD^!PQU&jI=ZQ-RlE4Y=RnD!Hxz5I#3)<^#h4&n%3q zTnK()Jb%FDK;CTQF&Uji-(k01e4OJzUvi z!!-HB0S*T>Y>iyJd@2;Ke=7~^DikhTSY@VT@*2B0=- z;e!c26M0VFPYBB*t?JWO0Mzy*@N!zU>P&8O-~|*mI^6=(dUK(1ccH@f0Up2BRPh|( zw+xS9C|I3pQ&Ls{2)`vN;qvYssaB@bd&&VGOCJU$*q=%*DGdP-er*&!1JJ@xh0Fe= z?S*QlKt}Yl=v0U%2vrbQAKg! z5GuYGL%}vX4X|YaApANg?2mvJz8$VsY?>CR{uRi~)-J3q1weuPK;yxR?U$}S1rG4M zC5MBglvDwrNd+i{V}DA{Mbese0xvm0SxtiMIAcpl2^9bZ@cGlgtqDuf4}-{o&S=zV z$S|Rwm+&Dn_dy}cfV?2~P`4>52aY4fP&kBZ69`}MD-v~{7EKxJ# zDgZKd1Gw3sDYH575MJiEhjJ|y02$~+P;;7OcHedD!2up2dj>MCVZ{wg1wg`%zynqp zbX-Pq;6AjPzp4^L@f3ikd-S4D47)NmA|EXuX4U!_1%Rn2L_&SM%Zgi>8^_t+D9Dy; zIuR730C@UapiM+7eUl9w;G$5>upXfR&=9U4^RP!md^Yr6_d)*7(tv1ZFj~;JfKhs{ zKYO+1Hgqk*x<@O(y-2`mgQo1{0H^hX&0RAT0H%RkzAF;>F_9rAx*$moB=a&9nr@DIf0qb#SS0SBk-# zCQhC_DH=C!EE+a!=t`N13i;uOAH=ucek*cva>PCN+#~B{dJ1j(_U+>A*|ReH&Ye4@ z(D3HU`^uHeM^RV;8K?e4->dlOuu7FG5m75wt`t+IOp!yz*I$1vI(P0Yx^<(7T%)!q ziHCgtqgqb~u(oT(J1l6|u3ci(s8Lc7k3asne9IgbnJ_!Y;E59_iU|`Y2$*y+Z{EC! z^h(%_yy+%xlzL0F9Litdwb_!mR5N`&sZsnPC#qjsN50rdzBzmL>=CV6wGzF0^%BwA z9IwF?@@ucXCLJJ*fnw00K|;Mve9Nf$q@zcViXA(4$nxWrxpU&sp+mA5n)ibT z4>~QDP@FAg6*EE+UuAU^x-GjZ2l zTuHt@KGKveUAk1{=H?1GM51L&E=R*7LdW=)&6>qulM!OWh7HopHE-Tr-dC?)U55O_ zH?C$)u24H8*13E4Zb8N4kkX?^525NIlg)~2zIIlt`?;y0n>K9{M~)nk{Or=DOGMjK zsF6c{T`E8>!0p16iBlks)udCWPQ^GflP6D>jpcJXGIXX$v>a+oAYuB!oUTVL7{fsgw zV6#G)uZ=`WE)pq8lB_Y0Sr&&AwJPU_GZ)hc7b3_xA$aKIx@{iOwS+u2agLjT#%vT$pw}>@4VA8t&Wr&XwP+k)?P4!7J&;YvapUB43+vv=veG&PC8sTvw)qbmL_)IMl@!H`_)sPB6AHWmhJe!W9 zoAljx-wCb`o<4m#Yt1}Y9+eVMz~*&{-o1N^{{8z)KZia}n>LO{@O&yje9z5I$)!*h zHJpn~Tm{4~nkXzRG;&k$v;rh9;bIrfc$P^Q>MdrQ=_@IL^PYm`8U=^5yYIeRv~A0! z`|HH(B}x&vS%0Jwp!q1sAC(b%ZNcvT@uGOliHF-1ls#+i|0N3T!dOSUQ z9-L4LU~YZTug$X{u6CMxjwY+|y|}nUY}&k8l$Di<+I8xP-aUK7 zorOi0XK|lH1>gid{<54!F0Z51n@t9C{0r(^P63$(YrZCrXs+oDbMdJ|hYk^fqUjzp zW{f2(Dcpm23C^86FZV6-n>97oGs-TMiL<3=;RuGr6%2>mDU3G_w=6s|vJw@b1ZWT$ zukY+|fX*7Xt$AL6g5c3FGd=(O^KzDQ{``44l-0o-YbK8SR2uVkGoKe@sd~rGUDDhC z1s0-yy}E+Kgd!>){yCiiu(-2S0N0P3sD>sA%}x-RV0MBM?Fz}Yb}i=AZW zIQ}^>V^;k2EslNROvQ?5%8wpBCN5vSA{t{0nhK$a8&cd&W&X0VL!wn-fv6f~Ayis( z$n;>Dv<@5|D^;p&ew^yHv;c>Zt9+i3Y7uFqr{Kqq9V;2fY23hp1ARI6l}1yOW})>u ze*AclRIW2PP z=Lqv`!fqL+bVq0bPM9KmyKK^=i996YTZIlPQo>>p9Jat_czGcUF@ZQ9g0Nkj$UVw4hW z>ABMKjJTrk6`8M9TmZtov;aE;(2&43fn)B}sZ-^yBB!O?dx$(sP%h+v&8F?}w1^78 z|9y%x0msWqc52MTG~CGIY2hp*%KQk20G=u0T0mfk=2ESqsl}j*Y#iHgs-#4m#1``v zTzgIIKZh4Jw0Jap6r&#}XaVR15{`Bikl!`pM-V&{$m8L>=D|=eiDq6goAoH=Q*{>M zoWagryQNTCw<;7}@S%oBLXlO{yDz{r`Ft5x0&%XwqbahKI~9Ny;0Vx3)*gUA`T6ZT_xRr6{En1Z}-B8UcRQ}qvYl-gN zy2^T}oE{OU|HV`Qe)F^g7zhN4+!nt1%{H&w)2W*~cdnQ;X_8a`KQ^9fU^kCS#CC8l zUj=Q5CJ%+rs<1#IN^gQGy9y259$k4R-t$c|zfI z$7Cf)hV%)j1lOP(H{X2y%O+KBA(nSJTwJ<*Ni@f>X0~Wlj{Ihx9mY~kh!^riP5Da? zEv*l%0|HMt4HK$Xts1wmLwGYo%a$#RXft-^Lipw|gfD$VV1C3iePeKdvX&bY(gHw} zPa|R@n95%X2{f5KcD`NF<0SXp2~7z(uo*I!Q-3uCF!c|>vmjmYId;17qOt@4x&hJqLipgN|*xE$b{|7%!) z|1pL6ZRegqM(hjF`J!hYZT{IIO-VVxuVM`c&`mU4QdN+0ZtvJAqKmO;R21P3XSBL&pUb zm$?=C+7AxU`(FtemzgVzP=N4*&k-IpC(_qh!2w$L&!T%0qX5v514#59z|}TQ*~5X4 zAlv=X-HB0vaDq<|a=TDdc5q-Hx?wrPi>Clw4_KNVeb>DJ2RN)7bAK~OEENEzg3jOq zfYSy|nau%C>)(bc~vs z0FV2pgS!Vs*PY!U==U%-1yX;hI*8;FCE+lX$;5TKOg2@4zemZ`( zzxcMT0MIB-CFTGe4m1Um1Mj0*9Q)%=`=Xm|dk9b&F%%TyntKI-KS8Y8e1nAC>mLE( z(`mO&wk?1v5f$vm^(5ekiqm0*bAYmVAywhC)hR0gGohl@2wn!x^IlVha)9Uira>kv z(`iLo3J|Vn5yC&GQ>o75DhH;cw11>qV%iD-jibjo8{lSxZKosMhU$DV93aoh``5#= zh)G~4B5eg=;i#A&l#T=5=Dj9gIq)WG8yA*A+7+if3$UsQGlM3G|2r_k>bZ_{odZ1G zGXcWqUcV!9MFH3XC;@+BhU)~wd9TSc4t$7`DSTHB>o^($%v}sOXguQ5c1X1#_4 zyoK0_ZV8_?xMl%Vb72W`a6J!r7^tG+b?Ar#+|s4l9}D51c2rVSX4fo$Di;kb!Sxv6 z1wgM8D8{58mLcmDV2siCiB7qT7KEtVG;M;2q#{^mBb5!vSu$F9II+ zTKKHla|^&qNU#L85O9|84A2_T6w85wh?)h=_R8c(SLvGqsEVNo?QlIEcnC26Mv+Q# zBZjn$JaYFE1i#Hs2KcT3>>QM!4uVm@b3hm1Mkb!P=1Hr?5I#MAU#UVAK=lxcP=M>F z0Ztnms`wiut*K`!Qm%x36Y$ghR3Bd35)>d>!1EBzl z2~dRYxPBCP0LV5+@h9|Y8L$9?=M*mx6etBCN1z0i5p)I~0l1vp24Gw!(p5D2Aiy*F zp8(q-d`|NMLxEEOGiSm+!h?w8V$$tErVI~9(bn&Q6###h?Eu0+QlJ$;aSV!31J|?! z_X76=oH_89&4XeYxLLzZ8vd{bw`>0m6hZJ85C)nuLIKPigfi5{eFuQY(&;>Q1v&y; zX!4WJqOx7UMqmT5miG`k<1>abP647h3x&u*9Gyoh1(o3zARpkgG8d=@I3bSNCBO-Q zn=?Cr?Z9S$|LFpsWh`a90+=}uW#A5E9iRcw2%r*B8902j3ST!vNGn2%!7v2Sd|w23 u#_=#fVe{=KIBh!#Fpl9F2%RQBE9n2nzpMvMMGv|F0000 z-HqEY5QJqTW!-z!K-@!IK}tvkP7l5YsQ2sZ0s+xMR`f%P+}$B}1~8JB#5CvI;g2Zk z(lxH{KYo7Z{QKek&!uZv&HT7rqrHMr?T^qlyj38oYBZYZEx=GkLu)aKirUXgp>b zs3ZW*$L%w50BAmT--*Qxjjv-!5J>=Wnv> z12|U_0IYs|rFs+%0L`yQDPD01aIPo-SpD@W*0VzZX#T#!^U5&{XWdCLSaP>9 zcbx#%X2hg`^hD4-00H=Hzs5YkJpgFZ-V`DL-D~7)CxZ2okN`Lr?1><41>m`Wq?iEC zMF5X3Q($p4tkV_&aDFu0JpeuMxUX?t;A;K; zde2aVxMOKwmw-#(CpdcVJ^{QZk!t|@olciF1m)U;YXDF*!M3VE-%^8kBkE&b+RyGnqZO6~dOsP5?q+rxJZ%WC$Px`YP4u#pVEnKu;z6 zy67a35Xh@^9~WN*5CS<#^sUG;kPy_e9LK^Q79eo{3JMTcRi$n?3YY%~H8L#2i<)x?jG1Y>B#=q>#P X9;! z-HqEY5QJqTW!-z!K-@!IK}tvkP7l5YsQ2sZ0s+xMR`f%P+}$B}1~8JB#5CvI;g2Zk z(lxH{KYo7Z{QKek&!uZv&HT7rqrHMr?T^qlyj38oYBZYZEx=GkLu)aKirUXgp>b zs3ZW*$L%w50BAmT--*Qxjjv-!5J>=Wnv> z12|U_0IYs|rFs+%0L`yQDPD01aIPo-SpD@W*0VzZX#T#!^U5&{XWdCLSaP>9 zcbx#%X2hg`^hD4-00H=Hzs5YkJpgFZ-V`DL-D~7)CxZ2okN`Lr?1><41>m`Wq?iEC zMF5X3Q($p4tkV_&aDFu0JpeuMxUX?t;A;K; zde2aVxMOKwmw-#(CpdcVJ^{QZk!t|@olciF1m)U;YXDF*!M3VE-%^8kBkE&b+RyGnqZO6~dOsP5?q+rxJZ%WC$Px`YP4u#pVEnKu;z6 zy67a35Xh@^9~WN*5CS<#^sUG;kPy_e9LK^Q79eo{3JMTcRi$n?3YY%~H8L#2i<)x?jG1Y>B#=q>#P X9;! z-HqEY5QJqTW!-z!K-@!IK}tvkP7l5YsQ2sZ0s+xMR`f%P+}$B}1~8JB#5CvI;g2Zk z(lxH{KYo7Z{QKek&!uZv&HT7rqrHMr?T^qlyj38oYBZYZEx=GkLu)aKirUXgp>b zs3ZW*$L%w50BAmT--*Qxjjv-!5J>=Wnv> z12|U_0IYs|rFs+%0L`yQDPD01aIPo-SpD@W*0VzZX#T#!^U5&{XWdCLSaP>9 zcbx#%X2hg`^hD4-00H=Hzs5YkJpgFZ-V`DL-D~7)CxZ2okN`Lr?1><41>m`Wq?iEC zMF5X3Q($p4tkV_&aDFu0JpeuMxUX?t;A;K; zde2aVxMOKwmw-#(CpdcVJ^{QZk!t|@olciF1m)U;YXDF*!M3VE-%^8kBkE&b+RyGnqZO6~dOsP5?q+rxJZ%WC$Px`YP4u#pVEnKu;z6 zy67a35Xh@^9~WN*5CS<#^sUG;kPy_e9LK^Q79eo{3JMTcRi$n?3YY%~H8L#2i<)x?jG1Y>B#=q>#P X9;!