From 66ba125b7ecee9e5e807f1230f68b32b8beae51a Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 02:36:29 +0000 Subject: [PATCH 01/10] =?UTF-8?q?storage=20node=20=E7=B6=B2=E5=9D=80?= =?UTF-8?q?=E4=B8=80=E4=BD=B5=E6=94=B9=E5=AF=AB=E8=B5=B0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=8E=89=20mixed=20content=20=E5=B0=81?= =?UTF-8?q?=E9=8E=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Chrome console 講得很直白: Mixed Content: The page at 'https://conssswars-web.pages.dev/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://34.19.125.196:5678/'. This request has been blocked. indexer 回傳的 storage node 是裸 IP + 明文 http + 非標準埠。上一版的代理只 放行 https://*.0g.ai,這些位址就被原樣留著,瀏覽器連送都不送就擋掉,SDK 只 看得到一句沒有內容的 "Network Error"。所以真正的死因不是 CORS,是 mixed content —— 但兩者的解法一樣:不要讓瀏覽器直接碰那些節點。 改成節點網址一律改寫走代理。沒有網域可以白名單(都是裸 IP),所以改用 HMAC 簽章綁住:只有代理自己從 indexer 回應裡吐出來的網址才轉發得動,外人塞任意 網址進來會拿到 403,不會變成人人可用的開放代理。另外擋掉內網位址,萬一金鑰 外流也打不到內部服務或雲端 metadata 端點。 路由從 /node/ 變成 /node/<簽章>/,舊格式落到 404。 前端錯誤訊息跟著更新:多一條 mixed content 的判讀,網路類的診斷改成先探測 自家代理再下結論,代理通就直說是斷在節點或 Flow 合約那步。 測過(scratchpad/test.mjs,mock fetch 跑完整 onRequest): 改寫後節點 1: /api/og/zg/node/49e32595…/aHR0cDovLzM0LjE5… 節點轉發目標 : http://34.19.125.196:5678/ ← POST zgs_uploadSegment 保留節點路徑 : https://node2.0g.ai/rpc/file 內網節點 : http://10.0.0.5:5678(原樣留著,不轉) 偽造簽章 : 403,且完全沒發出任何 fetch 借用當代理 : 403 另確認 cookie / authorization 不會被轉給第三方主機。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- README.md | 2 +- functions/api/og/zg/[[path]].js | 146 +++++++++++++++++++++++++------- public/js/storage.js | 36 ++++---- 3 files changed, 136 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 956ea4d..88e331b 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ |---|---|---| | **0G Compute Network**
TEE 可驗證推論 | 戰報要永久存檔,寫它的那個 agent 就不能是黑箱。金鑰在 pc.0g.ai 選 **Private(TEE enclave)** 開的,推論實際跑在 enclave 裡,不是只呼叫一個 OpenAI 相容端點。 | [`functions/api/narrate.js#L55-L134`](https://github.com/ConsssLab/web/blob/main/functions/api/narrate.js#L55-L134) | | **0G Compute Network**
Router 設定 | 敵方 agent 與旁白 agent 共用同一份供應商工廠,把 `AI_PROVIDER` 改成 `0g` 就能整支切過去,不用改程式碼。 | [`functions/api/og/_shared.js#L22-L23`](https://github.com/ConsssLab/web/blob/main/functions/api/og/_shared.js#L22-L23) · [`functions/api/og/_shared.js#L82-L90`](https://github.com/ConsssLab/web/blob/main/functions/api/og/_shared.js#L82-L90) | -| **0G Storage**
真實寫入 | 記憶碎片要「永久保存」就必須真的落地。用官方 SDK 走完整協議:切 256-byte chunk 算 merkle root → 對 Flow 合約送 submit(付儲存費)→ 把 segment 傳給 storage node。**全程用玩家自己的錢包簽,伺服器不持有私鑰。** | [`public/js/storage.js#L53-L85`](https://github.com/ConsssLab/web/blob/main/public/js/storage.js#L53-L85) | +| **0G Storage**
真實寫入 | 記憶碎片要「永久保存」就必須真的落地。用官方 SDK 走完整協議:切 256-byte chunk 算 merkle root → 對 Flow 合約送 submit(付儲存費)→ 把 segment 傳給 storage node。**全程用玩家自己的錢包簽,伺服器不持有私鑰。** | [`public/js/storage.js#L65-L108`](https://github.com/ConsssLab/web/blob/main/public/js/storage.js#L65-L108)
節點同源代理:[`functions/api/og/zg/[[path]].js#L206-L241`](https://github.com/ConsssLab/web/blob/main/functions/api/og/zg/%5B%5Bpath%5D%5D.js#L206-L241) | | **0G Storage**
indexer 唯讀查詢 | 「上傳沒報錯」不等於存進去了。拿 root hash 回頭問 indexer,確認 storage node 真的收下並 finalized 才敢標成已存檔。唯讀、不需金鑰,評審可自行查證。 | [`functions/api/og/storage.js#L76-L114`](https://github.com/ConsssLab/web/blob/main/functions/api/og/storage.js#L76-L114) | | **0G Storage**
節點活性探測 | 結果畫面的燈號要照實反映網路狀態,不能寫死成綠燈。 | [`functions/api/og/status.js#L34-L57`](https://github.com/ConsssLab/web/blob/main/functions/api/og/status.js#L34-L57) | | **0G Chain**
錨定寫入 | 戰報需要一個不可竄改、有時間戳的存在證明。40 bytes 結構化 calldata(魔術字 `CSSW` + 版本 + 戰績 + SHA-256),用合約建立交易送出,chainscan 上一眼認得出來。 | [`functions/api/og/shard.js#L62-L84`](https://github.com/ConsssLab/web/blob/main/functions/api/og/shard.js#L62-L84) · [`public/js/og.js#L174-L199`](https://github.com/ConsssLab/web/blob/main/public/js/og.js#L174-L199) | diff --git a/functions/api/og/zg/[[path]].js b/functions/api/og/zg/[[path]].js index 480c00e..afb8f4a 100644 --- a/functions/api/og/zg/[[path]].js +++ b/functions/api/og/zg/[[path]].js @@ -7,42 +7,87 @@ * 1. indexer:問「這個檔案該傳給哪些 storage node」(indexer_getShardedNodes) * 2. 那份清單裡的每一台 storage node:真正把 segment 傳上去(zgs_uploadSegment) * - * 第 1 步從瀏覽器打得通,第 2 步打不通:那些 storage node 是各自獨立的主機, - * 沒有為瀏覽器開 CORS,所以 axios 只會回一句沒有內容的 "Network Error"。 + * 第 1 步從瀏覽器打得通,第 2 步打不通。實測拿到的節點長這樣: * - * 解法是把兩步都繞過這支 Function,讓瀏覽器全程只跟自己的網域講話: + * http://34.19.125.196:5678 + * + * 裸 IP、明文 http、非標準埠 —— 對一個 https 的頁面來說這是 mixed content, + * 瀏覽器連送都不會送就直接擋掉(Chrome console 明講 "This request has been + * blocked; the content must be served over HTTPS")。就算改成 https,那些節點 + * 也沒為瀏覽器開 CORS。兩個問題都只有一個解法:不要讓瀏覽器直接碰它們。 * * 前端 new Indexer('/api/og/zg/indexer') * │ * ├─ 這支轉發到真的 indexer, - * │ 並把回應裡每個節點的 url 改寫成 /api/og/zg/node/<編碼後的原始網址> + * │ 並把回應裡每個節點的 url 改寫成 /api/og/zg/node/<簽章>/<編碼後的原始網址> * │ * └─ 節點請求再由這支轉發到那台真的 storage node * - * Flow 合約那步不經過這裡 —— 它走 MetaMask 簽名,本來就沒有 CORS 問題。 + * 整條鏈路對瀏覽器來說都是同源的 https,mixed content 與 CORS 一起消失。 + * Flow 合約那步不經過這裡 —— 它走 MetaMask 簽名,本來就沒有這兩個問題。 * - * 安全性:只准轉發到 0g.ai 底下的 https 主機,否則就成了任何人都能借用的開放代理。 + * 安全性:節點網址是裸 IP,沒有網域可以白名單,所以改用簽章 —— + * 只有這支代理自己從 indexer 回應裡吐出來的網址才轉發得動(HMAC 綁住), + * 外人塞一個任意網址進來會被擋,不會變成人人可用的開放代理。 + * 另外再擋掉內網位址,避免有人拿它去打 Cloudflare 內部或 metadata 端點。 */ import { json, indexerOf } from '../_shared.js'; -/** 只有這個網域(與其子網域)能被轉發。 */ -const ALLOWED_SUFFIX = '.0g.ai'; -const ALLOWED_EXACT = '0g.ai'; +/** indexer 本身仍然只認 0g.ai 的 https(它是設定值,不是外部資料)。 */ +const INDEXER_SUFFIX = '.0g.ai'; +const INDEXER_EXACT = '0g.ai'; const MAX_BODY = 6 * 1024 * 1024; // 一個 segment 是 256KB,留足餘裕 const TIMEOUT_MS = 30000; -const b64urlEncode = (s) => - btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); +const enc = new TextEncoder(); + +const b64urlEncode = (s) => btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); const b64urlDecode = (s) => { const pad = s.replace(/-/g, '+').replace(/_/g, '/'); return atob(pad + '='.repeat((4 - (pad.length % 4)) % 4)); }; -/** 這個網址可以轉發嗎?只認 https 的 0g.ai。 */ -function allowed(target) { +/** + * 簽章金鑰。設了 OG_PROXY_SECRET 就用它,沒設就退回內建常數 —— + * 這個簽章擋的是「有人拿我們的網域當跳板」,不是機密資料, + * 沒設也不該讓整個上傳功能掛掉。要更嚴就在 Pages 設一個 secret。 + */ +const secretOf = (env) => (env && env.OG_PROXY_SECRET) || 'conssswars/og-zg-proxy/v1'; + +const keyCache = new Map(); +function signingKey(secret) { + if (!keyCache.has(secret)) { + keyCache.set( + secret, + crypto.subtle.importKey('raw', enc.encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, [ + 'sign', + ]), + ); + } + return keyCache.get(secret); +} + +/** 取 HMAC 前 16 bytes 轉十六進位:32 個字,夠短也夠難猜。 */ +async function sign(url, env) { + const mac = await crypto.subtle.sign('HMAC', await signingKey(secretOf(env)), enc.encode(url)); + return Array.from(new Uint8Array(mac).slice(0, 16)) + .map((b) => b.toString(16).padStart(2, '0')) + .join(''); +} + +/** 定時比對,不要因為提早 return 而洩漏正確簽章的前綴。 */ +function sameSig(a, b) { + if (typeof a !== 'string' || typeof b !== 'string' || a.length !== b.length) return false; + let diff = 0; + for (let i = 0; i < a.length; i += 1) diff |= a.charCodeAt(i) ^ b.charCodeAt(i); + return diff === 0; +} + +/** indexer 設定值的檢查:https 而且在 0g.ai 底下。 */ +function allowedIndexer(target) { let u; try { u = new URL(target); @@ -51,28 +96,61 @@ function allowed(target) { } if (u.protocol !== 'https:') return null; const h = u.hostname.toLowerCase(); - if (h !== ALLOWED_EXACT && !h.endsWith(ALLOWED_SUFFIX)) return null; + if (h !== INDEXER_EXACT && !h.endsWith(INDEXER_SUFFIX)) return null; return u; } /** - * 把 JSON 裡所有指向外部主機的 url 欄位改寫成走這支代理。 + * 內網位址一律拒絕。 + * + * 節點網址是 indexer 給的,正常情況都是公網 IP;但簽章金鑰萬一外流, + * 這道防線可以讓這支代理仍然打不到任何內部服務(含雲端 metadata 端點)。 + */ +const PRIVATE_V4 = + /^(0|10|127)\.|^169\.254\.|^172\.(1[6-9]|2\d|3[01])\.|^192\.168\.|^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./; + +function publicTarget(raw) { + let u; + try { + u = new URL(raw); + } catch { + return null; + } + if (u.protocol !== 'http:' && u.protocol !== 'https:') return null; + + const h = u.hostname.toLowerCase().replace(/^\[|\]$/g, ''); + if (h === 'localhost' || h.endsWith('.localhost') || h.endsWith('.local') || h.endsWith('.internal')) { + return null; + } + if (PRIVATE_V4.test(h)) return null; + if (h === '::1' || h === '::' || /^f[cd]/.test(h) || h.startsWith('fe80:')) return null; + return u; +} + +/** + * 把 JSON 裡所有指向 storage node 的 url 欄位改寫成走這支代理。 * * indexer 回傳的節點清單形狀在不同版本之間變過(有時是陣列,有時是 * { trusted: [...] } 這種分片物件),所以不去假設結構,直接走訪整棵樹, - * 看到叫 url 而且是 http(s) 開頭的字串就換掉。轉發不到的主機(非 0g.ai) - * 原樣留著,讓它自己去失敗,不要靜悄悄地吞掉。 + * 看到叫 url 而且是 http(s) 開頭的字串就換掉。打不到的(內網位址)原樣留著, + * 讓它自己去失敗,不要靜悄悄地吞掉。 + * + * 這裡是非同步的,因為每個網址都要簽一次章。 */ -function rewriteUrls(node, origin) { - if (Array.isArray(node)) return node.map((n) => rewriteUrls(n, origin)); +async function rewriteUrls(node, origin, env) { + if (Array.isArray(node)) return Promise.all(node.map((n) => rewriteUrls(n, origin, env))); if (!node || typeof node !== 'object') return node; const out = {}; for (const [k, v] of Object.entries(node)) { if (k === 'url' && typeof v === 'string' && /^https?:\/\//i.test(v)) { - out[k] = allowed(v) ? `${origin}/api/og/zg/node/${b64urlEncode(v)}` : v; + if (publicTarget(v)) { + out[k] = `${origin}/api/og/zg/node/${await sign(v, env)}/${b64urlEncode(v)}`; + } else { + out[k] = v; + } } else { - out[k] = rewriteUrls(v, origin); + out[k] = await rewriteUrls(v, origin, env); } } return out; @@ -115,9 +193,10 @@ async function forward(target, request, { rewrite = null } = {}) { headers: { 'content-type': res.headers.get('content-type') || 'text/plain' }, }); } - return json(rewrite(parsed), res.status); + return json(await rewrite(parsed), res.status); } catch (err) { - const msg = err && err.name === 'AbortError' ? '轉發逾時' : String(err && err.message ? err.message : err); + const msg = + err && err.name === 'AbortError' ? '轉發逾時' : String(err && err.message ? err.message : err); return json({ error: `代理轉發失敗:${msg}`.slice(0, 200) }, 502); } finally { clearTimeout(timer); @@ -131,25 +210,28 @@ export async function onRequest({ request, params, env }) { // ── /api/og/zg/indexer ────────────────────────────── // 轉發到真的 indexer,並把回應裡的節點網址改寫成走這支代理。 if (segments[0] === 'indexer' && segments.length === 1) { - const target = allowed(indexerOf(env)); + const target = allowedIndexer(indexerOf(env)); if (!target) return json({ error: 'indexer 設定不是合法的 0g.ai https 網址' }, 500); - return forward(target, request, { rewrite: (data) => rewriteUrls(data, origin) }); + return forward(target, request, { rewrite: (data) => rewriteUrls(data, origin, env) }); } - // ── /api/og/zg/node/<編碼網址>/<其餘路徑> ───────────── - // 轉發到那台真的 storage node。 - if (segments[0] === 'node' && segments.length >= 2) { + // ── /api/og/zg/node/<簽章>/<編碼網址>/<其餘路徑> ─────── + // 轉發到那台真的 storage node。簽章不對就不轉。 + if (segments[0] === 'node' && segments.length >= 3) { let decoded; try { - decoded = b64urlDecode(segments[1]); + decoded = b64urlDecode(segments[2]); } catch { return json({ error: '節點網址編碼不正確' }, 400); } - const base = allowed(decoded); - if (!base) return json({ error: '只允許轉發到 0g.ai 的 https 主機' }, 403); + if (!sameSig(segments[1], await sign(decoded, env))) { + return json({ error: '節點網址簽章不符:這支代理只轉發自己發出的節點位址' }, 403); + } + const base = publicTarget(decoded); + if (!base) return json({ error: '不允許轉發到這個位址' }, 403); // 保留節點網址本身的路徑,再接上代理路徑剩下的部分 - const rest = segments.slice(2).map(encodeURIComponent).join('/'); + const rest = segments.slice(3).map(encodeURIComponent).join('/'); const target = new URL( [base.pathname.replace(/\/+$/, ''), rest].filter(Boolean).join('/') || '/', base.origin, diff --git a/public/js/storage.js b/public/js/storage.js index ff9eaac..cb3880d 100644 --- a/public/js/storage.js +++ b/public/js/storage.js @@ -21,9 +21,11 @@ const ETHERS_URL = '/vendor/ethers.min.js'; * indexer 走自家的同源代理,不直接打 0g.ai。 * * 直接打的話 indexer 本身通得過,但它回傳的 storage node 是另一批主機, - * 那些主機沒為瀏覽器開 CORS,SDK 傳 segment 時只會拿到一句沒有內容的 - * "Network Error"。代理會把節點網址一併改寫成走同一支 Function, - * 整條上傳鏈路就都是同源的了。見 functions/api/og/zg/[[path]].js。 + * 而且長這樣:http://34.19.125.196:5678 —— 裸 IP、明文 http。 + * 對一個 https 頁面來說那是 mixed content,瀏覽器連送都不送就擋掉, + * SDK 只會拿到一句沒有內容的 "Network Error"。代理會把節點網址一併改寫成 + * 走同一支 Function,整條上傳鏈路就都是同源的 https 了。 + * 見 functions/api/og/zg/[[path]].js。 */ const DEFAULT_INDEXER = '/api/og/zg/indexer'; @@ -114,9 +116,9 @@ export async function upload(shard, { indexer, rpc, onStep } = {}) { * 那就是對方沒開 CORS,而不是玩家網路有問題 —— 這兩件事的處理方式差很多, * 不講清楚玩家只會一直重試。 */ -export async function probeIndexerFromBrowser(indexer) { +export async function probeIndexerFromBrowser(indexer = DEFAULT_INDEXER) { try { - const res = await fetch(indexer, { + const res = await fetch(new URL(indexer, location.origin).toString(), { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'indexer_getShardedNodes', params: [] }), @@ -147,18 +149,22 @@ export async function explainError(err, { indexer, serverSaysLive } = {}) { return '錢包已經有一個待處理的請求。請打開 MetaMask 按下確認,不要重複點這顆按鈕。'; } + if (/mixed content|insecure .*(request|endpoint)|must be served over https/i.test(msg)) { + return `瀏覽器擋掉了對 storage node 的明文連線(mixed content)。這一版應該全程走同源代理才對 —— 請強制重新整理(Shift+Reload)確認拿到的是最新的 js。原始錯誤:${msg.slice(0, 120)}`; + } + if (/failed to fetch|network|fetch|timeout|ECONN|load failed/i.test(msg)) { - if (indexer) { - const probe = await probeIndexerFromBrowser(indexer); - if (!probe.reachable && serverSaysLive) { - return `0G Storage 的 indexer 不允許瀏覽器直接連線(CORS)—— 伺服器端連得到,這個瀏覽器連不到。這是節點端的限制,不是你的網路問題。原始錯誤:${msg.slice(0, 100)}`; - } - if (!probe.reachable) { - return `連不上 0G Storage 節點(伺服器端也連不到,可能是節點在維護)。原始錯誤:${msg.slice(0, 100)}`; - } - return `indexer 連得到,但上傳過程中斷 —— 可能是卡在後面的 storage node 或 Flow 合約那步。原始錯誤:${msg.slice(0, 140)}`; + // 現在 indexer 與 storage node 都走同源代理,所以先確認代理自己活著。 + // 代理通、上傳還是斷,那就是斷在代理後面(節點或 Flow 合約), + // 不是瀏覽器的 CORS / mixed content 問題。 + const probe = await probeIndexerFromBrowser(); + if (!probe.reachable) { + return `連不上自家的 0G 代理(/api/og/zg/indexer)—— 這通常表示 Pages Functions 沒部署上去。原始錯誤:${msg.slice(0, 100)}`; + } + if (indexer && !serverSaysLive) { + return `代理正常,但伺服器端也連不到 0G 的 indexer,可能是節點在維護。原始錯誤:${msg.slice(0, 100)}`; } - return `連線失敗:${msg.slice(0, 160)}`; + return `代理與 indexer 都正常,上傳斷在後面那一步(storage node 傳 segment 或 Flow 合約 submit)。原始錯誤:${msg.slice(0, 140)}`; } return msg.slice(0, 220); From f7424c828ac738403ad45f64fdd5ff69ebf046b0 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 03:25:10 +0000 Subject: [PATCH 02/10] =?UTF-8?q?=E6=8B=BF=E6=8E=89=20SPA=20=E5=BE=8C?= =?UTF-8?q?=E5=82=99=EF=BC=8C=E8=AE=93=E3=80=8C=E6=AA=94=E6=A1=88=E6=B2=92?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E3=80=8D=E7=9B=B4=E6=8E=A5=E7=8F=BE=E5=BD=A2?= =?UTF-8?q?=E6=88=90=20404?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _redirects 最後一行是 `/* /index.html 200`。這個遊戲從頭到尾沒有任何前端 路由(grep pushState / replaceState / popstate / hashchange 全部沒有), 所以這條規則沒有任何用途,卻有一個很貴的副作用:任何不存在的路徑都回 index.html 加狀態 200。 代價是我們今天真的付了。線上檢查 /images/heroes.jpeg 拿到 200,據此判斷 「圖片在、是程式的問題」,於是往 art.js 的方向查。實際上那張圖根本沒被部署, 200 是後備規則給的假象 —— 正式網址停在 PR #4 前後的舊版本。查了好幾輪才靠 「按鈕文案是舊的」這個線索翻案。 改成:刪掉 _redirects,加一個 public/404.html。Pages 對找不到的路徑會原生 回這一頁並帶狀態 404,靜態檔案照樣正常服務。以後 curl 或 fetch 拿到 404 就是真的 404,不會再有「看起來一切正常」的假象。 404.html 裡直接寫明「/js/ /css/ /images/ /vendor/ 底下的檔案變成這一頁, 代表那個檔案沒部署上來」,讓下一個人不用再推理一次。 本地 wrangler pages dev 不套用 _redirects(原版的 SPA 後備在 dev 也是 404), 所以這一項只能靠 Pages 的靜態資源優先規則判斷,無法在容器內實測。已確認的是 實體檔案本身都正常:art.js 20617、main.js 31043、style.css 21808、 heroes.jpeg 915933、ethers.min.js 501359 bytes,全部 200。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- public/404.html | 10 ++++++++++ public/_redirects | 2 -- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 public/404.html delete mode 100644 public/_redirects diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..9cf2469 --- /dev/null +++ b/public/404.html @@ -0,0 +1,10 @@ + + +找不到這個檔案 · ConSSS Wars + +
+

404

+

這個路徑沒有對應的檔案。

+

如果你看到的是 /js/、/css/、/images/ 或 /vendor/ 底下的檔案變成這一頁,代表那個檔案沒有被部署上來 —— 不是程式壞了,是部署少了東西。

+

回遊戲

+
diff --git a/public/_redirects b/public/_redirects deleted file mode 100644 index 53d6dfe..0000000 --- a/public/_redirects +++ /dev/null @@ -1,2 +0,0 @@ -# 單頁遊戲:找不到實體檔案就回 index.html(/api/* 由 Functions 先接手) -/* /index.html 200 From b35acd742054bc1f788414650989f94e2fb0d1da Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 05:45:53 +0000 Subject: [PATCH 03/10] =?UTF-8?q?=E5=BD=A2=E8=B1=A1=E7=85=A7=E6=8E=A2?= =?UTF-8?q?=E6=B8=AC=E6=94=B9=E5=9B=9E=E4=BE=9D=E5=BA=8F=EF=BC=8C=E5=AF=A6?= =?UTF-8?q?=E9=9A=9B=E7=9A=84=E5=89=AF=E6=AA=94=E5=90=8D=E6=8E=92=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E5=80=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit console 上原本會多出三筆紅色 404:heroes.png、heroes.webp、heroes.jpg。 那是四個候選副檔名平行載造成的 —— 命中的是 .jpeg,另外三個必然 404。 平行載當初是為了繞開 SPA fallback:找不到的檔案不會快速 404,而是回一整份 index.html 才失敗,依序試會拖慢開場。那條 fallback 已經在上一個 commit 拿掉, 不存在的檔案現在直接 404,依序試的代價回到正常。 所以改回依序,並把 repo 裡實際存在的 /images/heroes.jpeg 排第一個。正常情況 只發一個請求就命中,console 乾淨。評審會打開 console 看,那三筆紅字會讓人 以為東西壞了。 實測(wrangler pages dev + headless Chromium 監看 network): 形象照請求: 200 /images/heroes.jpeg ← 只有這一筆 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- public/js/art.js | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/public/js/art.js b/public/js/art.js index 060e078..6fce08f 100644 --- a/public/js/art.js +++ b/public/js/art.js @@ -353,9 +353,9 @@ export function heroPortrait(key) { * 所以按順序試,載得起來的那個就是。找不到任何一個就退回 art.js 現畫的 inline SVG。 */ const HERO_SHEET_CANDIDATES = [ - '/images/heroes.png', + '/images/heroes.jpeg', // repo 裡實際放的那一個,永遠第一個試 '/images/heroes.jpg', - '/images/heroes.jpeg', + '/images/heroes.png', '/images/heroes.webp', ]; @@ -375,20 +375,24 @@ function tryLoad(src) { } /** - * 四個候選同時載,不要一個一個等。 + * 依序試,實際存在的那個副檔名排第一個。 + * + * 之前是四個平行載,因為當時線上有 SPA fallback:找不到的檔案不會快速 404, + * 而是回一整份 index.html 才失敗,依序試會拖慢開場。那條 fallback 已經拿掉, + * 不存在的檔案現在直接 404,所以依序試的代價回到正常。 * - * 線上有 SPA fallback(找不到檔案就回 index.html 200),所以不存在的副檔名 - * 不會快速 404,而是回一整份 HTML 才失敗。依序試的話光是前兩個就足以讓 - * 簡報畫面先畫完、退回 SVG。平行跑就只花「最慢的那一個」的時間, - * 再依候選順序挑第一個成功的,結果仍然是確定的。 + * 改回依序還有一個好處:正常情況只發一個請求就命中,console 不會多出三筆 + * 紅色的 404。評審會打開 console 看,那三筆雜訊會讓人以為東西壞了。 */ export async function probeHeroSheet() { if (sheetState !== null) return sheetState; - const results = await Promise.all(HERO_SHEET_CANDIDATES.map(tryLoad)); - const hit = results.findIndex(Boolean); - if (hit === -1) return (sheetState = false); - HERO_SHEET = HERO_SHEET_CANDIDATES[hit]; - return (sheetState = true); + for (const src of HERO_SHEET_CANDIDATES) { + if (await tryLoad(src)) { + HERO_SHEET = src; + return (sheetState = true); + } + } + return (sheetState = false); } export const heroSheetReady = () => sheetState === true; From 68121410d56d818dfa781510d05c3cdb016ea728 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 05:48:41 +0000 Subject: [PATCH 04/10] =?UTF-8?q?=E8=A3=B8=20IP=20=E7=AF=80=E9=BB=9E?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E5=8F=AF=E8=A7=A3=E6=9E=90=E7=9A=84=20DNS=20?= =?UTF-8?q?=E5=90=8D=E7=A8=B1=E8=BD=89=E7=99=BC=EF=BC=8C=E7=B9=9E=E9=96=8B?= =?UTF-8?q?=20Cloudflare=20error=201003?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 代理修掉 mixed content 之後,下一關是 403: POST /api/og/zg/node/835eaa0…/aHR0cDovLzM0LjE5… 403 內容: error code: 1003 1003 是 Cloudflare 的 Direct IP Access Not Allowed —— Worker 不能對裸 IP 發出站請求,連線根本沒送出去。而 0G 的 storage node 清一色是裸 IP (實測 http://34.19.125.196:5678)。這不是簽章或白名單的問題:console 上的 簽章 49e3259… 跟本地算出來的 49e325954b41… 一致,34.19.125.196 也不在擋掉的 內網範圍內,兩道檢查都過了,403 是上游回的被原樣轉回來。 改法:轉發前把裸 IPv4 換成 a.b.c.d.sslip.io。sslip.io 是公開 DNS 服務, 永遠把這種名稱解析回 a.b.c.d,所以連到的是同一台機器同一個埠,只是讓 Cloudflare 有 hostname 可打。只對裸 IPv4 動手 —— indexer 之後若改成回傳 網域名稱,這段就自動不生效。 代價是多一個第三方 DNS 依賴。要拿掉的話得改用自己的主機當代理, Cloudflare Workers 這條路做不到。 前端錯誤訊息補一條 403/502/1003 的判讀,之後再撞到才看得懂是哪一關。 測試(mock fetch 跑完整 onRequest): 裸 IP 節點 : http://34.19.125.196.sslip.io:5678/ ← POST zgs_uploadSegment 網域節點 : https://node2.0g.ai/rpc/file (不加後綴) 內網節點 : 原樣留著,不轉 偽造簽章 / 借用當代理 : 403,且完全沒發出任何 fetch Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- functions/api/og/zg/[[path]].js | 20 +++++++++++++++++++- public/js/storage.js | 9 ++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/functions/api/og/zg/[[path]].js b/functions/api/og/zg/[[path]].js index afb8f4a..a79318b 100644 --- a/functions/api/og/zg/[[path]].js +++ b/functions/api/og/zg/[[path]].js @@ -127,6 +127,24 @@ function publicTarget(raw) { return u; } +/** + * Cloudflare 不讓 Worker 對裸 IP 發出站請求 —— 會直接回 error code 1003 + * (Direct IP Access Not Allowed),連線根本沒發出去。而 0G 的 storage node + * 清一色是裸 IP(實測 http://34.19.125.196:5678)。 + * + * sslip.io 是一個公開的 DNS 服務:a.b.c.d.sslip.io 永遠解析回 a.b.c.d。 + * 換上它之後 Cloudflare 有 hostname 可以打,連到的還是同一台機器同一個埠。 + * + * 只對裸 IPv4 動手。indexer 之後若改成回傳網域名稱,這裡就自動不生效。 + */ +const IPV4 = /^\d{1,3}(?:\.\d{1,3}){3}$/; +const IP_DNS_SUFFIX = '.sslip.io'; + +function dnsResolvable(url) { + if (IPV4.test(url.hostname)) url.hostname = url.hostname + IP_DNS_SUFFIX; + return url; +} + /** * 把 JSON 裡所有指向 storage node 的 url 欄位改寫成走這支代理。 * @@ -237,7 +255,7 @@ export async function onRequest({ request, params, env }) { base.origin, ); target.search = new URL(request.url).search; - return forward(target, request); + return forward(dnsResolvable(target), request); } return json({ error: 'unknown proxy route' }, 404); diff --git a/public/js/storage.js b/public/js/storage.js index cb3880d..2f30fca 100644 --- a/public/js/storage.js +++ b/public/js/storage.js @@ -25,7 +25,10 @@ const ETHERS_URL = '/vendor/ethers.min.js'; * 對一個 https 頁面來說那是 mixed content,瀏覽器連送都不送就擋掉, * SDK 只會拿到一句沒有內容的 "Network Error"。代理會把節點網址一併改寫成 * 走同一支 Function,整條上傳鏈路就都是同源的 https 了。 - * 見 functions/api/og/zg/[[path]].js。 + * + * 代理那端還有第二關:Cloudflare 不讓 Worker 對裸 IP 發出站請求(error 1003), + * 所以轉發前會把 IP 換成解析回同一個 IP 的 DNS 名稱。 + * 兩件事都在 functions/api/og/zg/[[path]].js。 */ const DEFAULT_INDEXER = '/api/og/zg/indexer'; @@ -149,6 +152,10 @@ export async function explainError(err, { indexer, serverSaysLive } = {}) { return '錢包已經有一個待處理的請求。請打開 MetaMask 按下確認,不要重複點這顆按鈕。'; } + if (/status code 403|status code 502|\b1003\b/.test(msg)) { + return `0G storage node 的轉發被拒(403/502)。節點是裸 IP,Cloudflare 不讓 Worker 直接打裸 IP(error 1003),我們改用會解析回同一個 IP 的 DNS 名稱繞過 —— 這個錯誤代表繞法在這個節點上沒生效。原始錯誤:${msg.slice(0, 120)}`; + } + if (/mixed content|insecure .*(request|endpoint)|must be served over https/i.test(msg)) { return `瀏覽器擋掉了對 storage node 的明文連線(mixed content)。這一版應該全程走同源代理才對 —— 請強制重新整理(Shift+Reload)確認拿到的是最新的 js。原始錯誤:${msg.slice(0, 120)}`; } From 4fc0b07f01640c60c497019dac7e0aa4c19f1021 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 05:58:59 +0000 Subject: [PATCH 05/10] =?UTF-8?q?=E7=AF=80=E9=BB=9E=E8=BD=89=E7=99=BC?= =?UTF-8?q?=E6=90=AC=E5=88=B0=20Node=20=E4=BB=A3=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E7=B9=9E=E9=96=8B=20Cloudflare=20=E7=9A=84=E8=A3=B8=20IP=20?= =?UTF-8?q?=E8=88=87=E9=9D=9E=E6=A8=99=E6=BA=96=E5=9F=A0=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cloudflare Pages Functions 這條路走不通,兩道平台牆而 0G 的 storage node 兩道都佔: error 1003 Direct IP Access Not Allowed Worker 不能對裸 IP 發出站請求,節點清一色是裸 IP (實測 http://34.19.125.196:5678)。這道還能繞 —— 改用 a.b.c.d.sslip.io 這種解析回同一個 IP 的名稱,實測 1003 消失。 error 521 Web Server Is Down 節點跑在 5678,Workers 出站只支援固定幾個埠。這道繞不掉。 SDK 也沒有第二條路:Indexer.selectNodes 之後一律 new StorageNode(node.url) 直接打節點,indexer 本身不收上傳。 所以把轉發那一段搬到 Node(proxy/,部署到 Vercel),主站其他部分照舊留在 Cloudflare。邏輯跟原本那支一樣 —— HMAC 簽章綁住只轉發自己發出的節點位址、 擋掉內網與 metadata 位址、不轉 cookie/authorization —— 只是多了 CORS (現在是跨網域)與原樣讀 body(segment 一個 byte 都不能差)。 前端不寫死代理網址:/api/og/status 新增 storage.zgProxy,值來自 OG_ZG_PROXY_BASE,沒設就退回同源的 /api/og/zg。換代理只要改一個環境變數。 Cloudflare 那支 /api/og/zg 保留:indexer 之後若改成回傳網域名稱它就能用, 而且它是這段歷史的現場。 端對端實測(假 storage node 架在 127.0.0.1:5678 —— 正是 Cloudflare 打不到 的那種埠,走真的 HTTP,不是 mock): 真實轉發 : 127.0.0.1:5678 ← POST / zgs_uploadSegment ✅ 大 segment : 340076 bytes 原封不動送達 ✅ 偽造簽章 / 借用當代理 : 403 改寫後節點 : https://…/api/node/49e32595…/aHR0cDovLzM0LjE5… 內網節點 : 原樣留著,不轉 CORS(pages) : 放行 / CORS(陌生來源) : 不給標頭 / OPTIONS 預檢 : 204 另確認 cookie / authorization 不外流,config.shardId 等欄位不受改寫影響。 順手更正 .env.example 裡寫錯的鏈 ID(16601 → 16602)。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- .env.example | 10 +- README.md | 2 +- functions/api/og/status.js | 7 + proxy/README.md | 64 +++++++++ proxy/api/[...path].js | 278 +++++++++++++++++++++++++++++++++++++ proxy/package.json | 8 ++ proxy/vercel.json | 6 + public/js/main.js | 4 +- public/js/storage.js | 22 +-- 9 files changed, 388 insertions(+), 13 deletions(-) create mode 100644 proxy/README.md create mode 100644 proxy/api/[...path].js create mode 100644 proxy/package.json create mode 100644 proxy/vercel.json diff --git a/.env.example b/.env.example index 08e1f95..da11c54 100644 --- a/.env.example +++ b/.env.example @@ -25,11 +25,19 @@ OG_COMPUTE_MODEL=deepseek-chat-v3-0324 # 不需要在這裡設任何東西,伺服器也不碰私鑰。 OG_STORAGE_INDEXER=https://indexer-storage-testnet-turbo.0g.ai +# 上傳要經過的節點代理。 +# +# 0G 的 storage node 是裸 IP + 非標準埠(http://34.19.125.196:5678), +# Cloudflare Workers 兩樣都打不到(error 1003 與 521),所以轉發那一段 +# 必須放在 Node 上 —— 見 proxy/README.md,部署完把網址填在這裡。 +# 不設的話前端走同源的 /api/og/zg,在 Cloudflare 上會失敗。 +OG_ZG_PROXY_BASE= + # 選用:想讓玩家完全不用付儲存費的話,自己架一個 0g-storage-client gateway, # 設了這個端點就改由 Function 轉發上傳(那台 gateway 才需要持有私鑰)。 OG_STORAGE_UPLOAD_URL= OG_STORAGE_TOKEN= -# ══ 賽道三:0G Chain(Galileo 測試網 16601)══════════════════════ +# ══ 賽道三:0G Chain(Galileo 測試網 16602)══════════════════════ # 不設就用公開節點。錨定交易由玩家自己的錢包送出,伺服器不保管任何私鑰。 OG_RPC_URL=https://evmrpc-testnet.0g.ai diff --git a/README.md b/README.md index 88e331b..5f06d97 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ |---|---|---| | **0G Compute Network**
TEE 可驗證推論 | 戰報要永久存檔,寫它的那個 agent 就不能是黑箱。金鑰在 pc.0g.ai 選 **Private(TEE enclave)** 開的,推論實際跑在 enclave 裡,不是只呼叫一個 OpenAI 相容端點。 | [`functions/api/narrate.js#L55-L134`](https://github.com/ConsssLab/web/blob/main/functions/api/narrate.js#L55-L134) | | **0G Compute Network**
Router 設定 | 敵方 agent 與旁白 agent 共用同一份供應商工廠,把 `AI_PROVIDER` 改成 `0g` 就能整支切過去,不用改程式碼。 | [`functions/api/og/_shared.js#L22-L23`](https://github.com/ConsssLab/web/blob/main/functions/api/og/_shared.js#L22-L23) · [`functions/api/og/_shared.js#L82-L90`](https://github.com/ConsssLab/web/blob/main/functions/api/og/_shared.js#L82-L90) | -| **0G Storage**
真實寫入 | 記憶碎片要「永久保存」就必須真的落地。用官方 SDK 走完整協議:切 256-byte chunk 算 merkle root → 對 Flow 合約送 submit(付儲存費)→ 把 segment 傳給 storage node。**全程用玩家自己的錢包簽,伺服器不持有私鑰。** | [`public/js/storage.js#L65-L108`](https://github.com/ConsssLab/web/blob/main/public/js/storage.js#L65-L108)
節點同源代理:[`functions/api/og/zg/[[path]].js#L206-L241`](https://github.com/ConsssLab/web/blob/main/functions/api/og/zg/%5B%5Bpath%5D%5D.js#L206-L241) | +| **0G Storage**
真實寫入 | 記憶碎片要「永久保存」就必須真的落地。用官方 SDK 走完整協議:切 256-byte chunk 算 merkle root → 對 Flow 合約送 submit(付儲存費)→ 把 segment 傳給 storage node。**全程用玩家自己的錢包簽,伺服器不持有私鑰。** | [`public/js/storage.js#L65-L108`](https://github.com/ConsssLab/web/blob/main/public/js/storage.js#L65-L108)
節點代理(Node):[`proxy/api/[...path].js`](https://github.com/ConsssLab/web/blob/main/proxy/api/%5B...path%5D.js) —— 節點是裸 IP + 非標準埠,Cloudflare Workers 打不到(error 1003 / 521),這一段必須跑在 Node 上 | | **0G Storage**
indexer 唯讀查詢 | 「上傳沒報錯」不等於存進去了。拿 root hash 回頭問 indexer,確認 storage node 真的收下並 finalized 才敢標成已存檔。唯讀、不需金鑰,評審可自行查證。 | [`functions/api/og/storage.js#L76-L114`](https://github.com/ConsssLab/web/blob/main/functions/api/og/storage.js#L76-L114) | | **0G Storage**
節點活性探測 | 結果畫面的燈號要照實反映網路狀態,不能寫死成綠燈。 | [`functions/api/og/status.js#L34-L57`](https://github.com/ConsssLab/web/blob/main/functions/api/og/status.js#L34-L57) | | **0G Chain**
錨定寫入 | 戰報需要一個不可竄改、有時間戳的存在證明。40 bytes 結構化 calldata(魔術字 `CSSW` + 版本 + 戰績 + SHA-256),用合約建立交易送出,chainscan 上一眼認得出來。 | [`functions/api/og/shard.js#L62-L84`](https://github.com/ConsssLab/web/blob/main/functions/api/og/shard.js#L62-L84) · [`public/js/og.js#L174-L199`](https://github.com/ConsssLab/web/blob/main/public/js/og.js#L174-L199) | diff --git a/functions/api/og/status.js b/functions/api/og/status.js index cf799ea..9556a5e 100644 --- a/functions/api/og/status.js +++ b/functions/api/og/status.js @@ -92,6 +92,13 @@ export async function onRequestGet({ env }) { role: '記憶碎片永久存檔(前端用玩家錢包上傳)', indexer, network: 'turbo', + // 上傳走哪一支代理。 + // + // 預設是同源的 Pages Function,但那條路在 Cloudflare 上被平台擋死: + // Worker 不能打裸 IP(error 1003),也打不到 5678 這種非標準埠(521), + // 而 0G 的 storage node 兩樣都佔。設 OG_ZG_PROXY_BASE 指向 proxy/ + // 那支 Node 服務,上傳才會真的通。前端照這個值決定要打哪裡。 + zgProxy: env.OG_ZG_PROXY_BASE ? String(env.OG_ZG_PROXY_BASE).replace(/\/+$/, '') : '/api/og/zg', // 預設由前端用玩家錢包上傳(public/js/storage.js); // 設了 OG_STORAGE_UPLOAD_URL 就改由 Function 轉發給自架 gateway。 uploadMode: env.OG_STORAGE_UPLOAD_URL ? 'server-gateway' : 'client-wallet', diff --git a/proxy/README.md b/proxy/README.md new file mode 100644 index 0000000..57cc429 --- /dev/null +++ b/proxy/README.md @@ -0,0 +1,64 @@ +# conssswars-zg-proxy + +0G Storage 節點的轉發代理。主站在 Cloudflare Pages,但**這一段不能跑在 Cloudflare 上**。 + +## 為什麼要有這個服務 + +0G 的 storage node 長這樣:`http://34.19.125.196:5678` —— 裸 IP、明文 http、非標準埠。 +瀏覽器不能直接打(https 頁面上是 mixed content,而且節點沒開 CORS),所以要一支代理。 +但代理放在 Cloudflare Pages Functions 上會連撞兩道平台牆: + +| 錯誤 | 原因 | 能不能繞 | +|---|---|---| +| `error 1003` Direct IP Access Not Allowed | Worker 不能對裸 IP 發出站請求 | 可以:改用 `a.b.c.d.sslip.io` 這種解析回同一個 IP 的名稱 | +| `error 521` Web Server Is Down | 節點在 5678,Workers 出站只支援固定幾個埠 | **不行** | + +Node 沒有這兩個限制。所以把轉發搬到這裡,主站其他部分照舊留在 Cloudflare。 + +## 部署(Vercel) + +```bash +cd proxy +npx vercel --prod +``` + +記下輸出的網址,例如 `https://conssswars-zg-proxy.vercel.app`。 + +## 接回主站 + +在 Cloudflare Pages 專案設一個環境變數,指向剛剛那個網址: + +```bash +npx wrangler pages secret put OG_ZG_PROXY_BASE --project-name conssswars-web +# 貼上:https://conssswars-zg-proxy.vercel.app/api +``` + +(或 Dashboard → Settings → Variables and Secrets 加 `OG_ZG_PROXY_BASE`。) + +`/api/og/status` 會把這個值當成 `storage.zgProxy` 下發,前端就會改打這支服務。 +沒設的話前端仍走同源的 `/api/og/zg`,那條路在 Cloudflare 上會失敗 —— 這是預期的。 + +## 路由 + +| 路徑 | 做什麼 | +|---|---| +| `POST /api/indexer` | 轉發到真的 0G indexer,並把回應裡每個節點的 `url` 改寫成下面那條路徑 | +| `POST /api/node/<簽章>//<其餘路徑>` | 轉發到那台真的 storage node | +| `GET /api/health` | 活著沒 | + +## 環境變數 + +| 變數 | 預設 | 用途 | +|---|---|---| +| `OG_PROXY_SECRET` | 內建常數 | 簽章金鑰。擋的是「有人拿這個網域當跳板」,不是機密資料;沒設也能運作 | +| `OG_STORAGE_INDEXER` | `https://indexer-storage-testnet-turbo.0g.ai` | 上游 indexer,只接受 `0g.ai` 底下的 https | +| `ALLOWED_ORIGINS` | 空 | 額外放行的 CORS 來源,逗號分隔。`*.pages.dev` 與 localhost 內建放行 | +| `PUBLIC_BASE_URL` | 由請求標頭推斷 | 改寫節點網址時用的自身網址 | +| `ZG_ALLOW_LOOPBACK` | 未設 | **只給本機測試**,關掉內網過濾好把假節點架在 127.0.0.1。正式環境不要設 | + +## 安全性 + +節點是裸 IP,沒有網域可以白名單,所以用 **HMAC 簽章**綁住:只有這支服務自己從 +indexer 回應吐出來的網址才轉發得動,外人塞任意網址進來拿 403 —— 不會變成人人可用的 +開放代理。另外擋掉內網 / link-local / 雲端 metadata 位址,並且不把 `cookie`、 +`authorization` 這類標頭轉給第三方主機。 diff --git a/proxy/api/[...path].js b/proxy/api/[...path].js new file mode 100644 index 0000000..e833fe1 --- /dev/null +++ b/proxy/api/[...path].js @@ -0,0 +1,278 @@ +/** + * 0G Storage 節點的轉發代理(Node / Vercel 版)。 + * + * 為什麼需要一個「不是 Cloudflare」的代理: + * + * 主站跑在 Cloudflare Pages。原本的代理寫成 Pages Function,結果連撞兩道 + * 平台牆,而 0G 的 storage node 兩道都踩到: + * + * error 1003 Direct IP Access Not Allowed + * Worker 不能對裸 IP 發出站請求,而節點清一色是裸 IP + * (實測 http://34.19.125.196:5678)。 + * 這道還能繞:改用 a.b.c.d.sslip.io 這種會解析回同一個 IP 的名稱。 + * + * error 521 Web Server Is Down + * 節點跑在 5678,Cloudflare Workers 的出站只支援固定幾個埠。 + * 這道繞不掉。 + * + * Node 沒有這兩個限制,一般的 fetch 就能打 http://IP:5678。所以把這一段搬出來。 + * + * 流程跟原本一樣,只是換了執行環境: + * + * 前端 new Indexer('https://<這個服務>/api/indexer') + * │ + * ├─ /api/indexer 轉發到真的 0G indexer, + * │ 並把回應裡每個節點的 url 改寫成 /api/node/<簽章>/<編碼後的原始網址> + * │ + * └─ /api/node/... 再轉發到那台真的 storage node + * + * 安全性:節點是裸 IP,沒有網域可以白名單,所以用 HMAC 簽章綁住 —— + * 只有這支服務自己從 indexer 回應吐出來的網址才轉發得動,外人塞一個任意網址 + * 進來會被擋,不會變成人人可用的開放代理。另外擋掉內網位址。 + */ + +import { createHmac, timingSafeEqual } from 'node:crypto'; + +/** 上游 indexer。只認 0g.ai 底下的 https。 */ +const DEFAULT_INDEXER = 'https://indexer-storage-testnet-turbo.0g.ai'; +const INDEXER_SUFFIX = '.0g.ai'; +const INDEXER_EXACT = '0g.ai'; + +const MAX_BODY = 6 * 1024 * 1024; // 一個 segment 是 256KB,留足餘裕 +const TIMEOUT_MS = 45000; + +const b64urlEncode = (s) => Buffer.from(s, 'utf8').toString('base64url'); +const b64urlDecode = (s) => Buffer.from(s, 'base64url').toString('utf8'); + +const secretOf = () => process.env.OG_PROXY_SECRET || 'conssswars/og-zg-proxy/v1'; + +/** 取 HMAC 前 16 bytes 轉十六進位:32 個字,夠短也夠難猜。 */ +const sign = (url) => createHmac('sha256', secretOf()).update(url).digest('hex').slice(0, 32); + +/** 定時比對,不要因為提早 return 而洩漏正確簽章的前綴。 */ +function sameSig(a, b) { + if (typeof a !== 'string' || typeof b !== 'string' || a.length !== b.length) return false; + return timingSafeEqual(Buffer.from(a), Buffer.from(b)); +} + +function allowedIndexer(target) { + let u; + try { + u = new URL(target); + } catch { + return null; + } + if (u.protocol !== 'https:') return null; + const h = u.hostname.toLowerCase(); + if (h !== INDEXER_EXACT && !h.endsWith(INDEXER_SUFFIX)) return null; + return u; +} + +/** + * 內網位址一律拒絕。 + * + * 節點網址是 indexer 給的,正常都是公網 IP;但簽章金鑰萬一外流,這道防線 + * 讓這支服務仍然打不到任何內部服務(含雲端 metadata 端點)。 + * + * ZG_ALLOW_LOOPBACK 只給本機測試用 —— 有了它才能把假的 storage node 架在 + * 127.0.0.1 上跑完整條鏈路。正式環境不要設。 + */ +const PRIVATE_V4 = + /^(0|10|127)\.|^169\.254\.|^172\.(1[6-9]|2\d|3[01])\.|^192\.168\.|^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./; + +function publicTarget(raw) { + let u; + try { + u = new URL(raw); + } catch { + return null; + } + if (u.protocol !== 'http:' && u.protocol !== 'https:') return null; + if (process.env.ZG_ALLOW_LOOPBACK === '1') return u; + + const h = u.hostname.toLowerCase().replace(/^\[|\]$/g, ''); + if (h === 'localhost' || h.endsWith('.localhost') || h.endsWith('.local') || h.endsWith('.internal')) { + return null; + } + if (PRIVATE_V4.test(h)) return null; + if (h === '::1' || h === '::' || /^f[cd]/.test(h) || h.startsWith('fe80:')) return null; + return u; +} + +/** + * 把 JSON 裡所有指向 storage node 的 url 欄位改寫成走這支服務。 + * + * indexer 回傳的節點清單形狀在版本之間變過(有時是陣列,有時是 + * { trusted: [...] }),所以不假設結構,直接走訪整棵樹,看到叫 url 而且是 + * http(s) 開頭的字串就換掉。打不到的(內網位址)原樣留著,讓它自己去失敗。 + */ +function rewriteUrls(node, base) { + if (Array.isArray(node)) return node.map((n) => rewriteUrls(n, base)); + if (!node || typeof node !== 'object') return node; + + const out = {}; + for (const [k, v] of Object.entries(node)) { + if (k === 'url' && typeof v === 'string' && /^https?:\/\//i.test(v)) { + out[k] = publicTarget(v) ? `${base}/api/node/${sign(v)}/${b64urlEncode(v)}` : v; + } else { + out[k] = rewriteUrls(v, base); + } + } + return out; +} + +/** + * 誰可以跨網域呼叫這支服務。 + * + * 主站在 *.pages.dev,本機開發在 localhost。要放行別的網域就設 + * ALLOWED_ORIGINS(逗號分隔)。認不出來的來源不給 CORS 標頭, + * 瀏覽器那邊就會被擋下來。 + */ +function corsOrigin(origin) { + if (!origin) return null; + const list = (process.env.ALLOWED_ORIGINS || '') + .split(',') + .map((s) => s.trim()) + .filter(Boolean); + if (list.includes(origin)) return origin; + try { + const u = new URL(origin); + if (u.protocol === 'https:' && u.hostname.endsWith('.pages.dev')) return origin; + if (u.hostname === 'localhost' || u.hostname === '127.0.0.1') return origin; + } catch { + return null; + } + return null; +} + +function setCors(req, res) { + const origin = corsOrigin(req.headers.origin); + if (!origin) return; + res.setHeader('access-control-allow-origin', origin); + res.setHeader('vary', 'origin'); + res.setHeader('access-control-allow-methods', 'GET,POST,OPTIONS'); + res.setHeader('access-control-allow-headers', 'content-type'); + res.setHeader('access-control-max-age', '86400'); +} + +const send = (res, status, data) => { + res.statusCode = status; + res.setHeader('content-type', 'application/json; charset=utf-8'); + res.setHeader('cache-control', 'no-store'); + res.end(JSON.stringify(data)); +}; + +/** 原樣讀 body,不經過 JSON 解析再序列化 —— segment 要一個 byte 都不差。 */ +async function readBody(req) { + const chunks = []; + let size = 0; + for await (const chunk of req) { + size += chunk.length; + if (size > MAX_BODY) throw new Error('payload too large'); + chunks.push(chunk); + } + return Buffer.concat(chunks); +} + +async function forward(target, req, res, { rewrite = null } = {}) { + const ac = new AbortController(); + const timer = setTimeout(() => ac.abort(), TIMEOUT_MS); + try { + const method = req.method || 'GET'; + const body = method === 'GET' || method === 'HEAD' ? undefined : await readBody(req); + + const upstream = await fetch(target.toString(), { + method, + signal: ac.signal, + // 只帶必要的標頭:不要把 cookie、authorization 之類的東西轉給第三方主機 + headers: { 'content-type': req.headers['content-type'] || 'application/json' }, + body, + }); + + const text = await upstream.text(); + if (!rewrite) { + res.statusCode = upstream.status; + res.setHeader('content-type', upstream.headers.get('content-type') || 'application/json'); + res.setHeader('cache-control', 'no-store'); + return res.end(text); + } + + let parsed; + try { + parsed = JSON.parse(text); + } catch { + // 不是 JSON 就原樣回去,改寫本來就只對 JSON 有意義 + res.statusCode = upstream.status; + res.setHeader('content-type', upstream.headers.get('content-type') || 'text/plain'); + return res.end(text); + } + return send(res, upstream.status, rewrite(parsed)); + } catch (err) { + const msg = + err && err.name === 'AbortError' ? '轉發逾時' : String(err && err.message ? err.message : err); + return send(res, 502, { error: `代理轉發失敗:${msg}`.slice(0, 200) }); + } finally { + clearTimeout(timer); + } +} + +/** 這支服務自己的外部網址,節點網址要改寫成指向它。 */ +function selfBase(req) { + if (process.env.PUBLIC_BASE_URL) return process.env.PUBLIC_BASE_URL.replace(/\/+$/, ''); + const proto = String(req.headers['x-forwarded-proto'] || 'https').split(',')[0]; + const host = req.headers['x-forwarded-host'] || req.headers.host; + return `${proto}://${host}`; +} + +export const config = { api: { bodyParser: false } }; + +export default async function handler(req, res) { + setCors(req, res); + if (req.method === 'OPTIONS') { + res.statusCode = 204; + return res.end(); + } + + const raw = req.query?.path ?? []; + const segments = (Array.isArray(raw) ? raw : [raw]).filter(Boolean); + + // ── /api/indexer ──────────────────────────────────── + if (segments[0] === 'indexer' && segments.length === 1) { + const target = allowedIndexer(process.env.OG_STORAGE_INDEXER || DEFAULT_INDEXER); + if (!target) return send(res, 500, { error: 'indexer 設定不是合法的 0g.ai https 網址' }); + const base = selfBase(req); + return forward(target, req, res, { rewrite: (data) => rewriteUrls(data, base) }); + } + + // ── /api/node/<簽章>/<編碼網址>/<其餘路徑> ──────────── + if (segments[0] === 'node' && segments.length >= 3) { + let decoded; + try { + decoded = b64urlDecode(segments[2]); + } catch { + return send(res, 400, { error: '節點網址編碼不正確' }); + } + if (!sameSig(segments[1], sign(decoded))) { + return send(res, 403, { error: '節點網址簽章不符:這支代理只轉發自己發出的節點位址' }); + } + const upstreamBase = publicTarget(decoded); + if (!upstreamBase) return send(res, 403, { error: '不允許轉發到這個位址' }); + + // 保留節點網址本身的路徑,再接上代理路徑剩下的部分 + const rest = segments.slice(3).map(encodeURIComponent).join('/'); + const target = new URL( + [upstreamBase.pathname.replace(/\/+$/, ''), rest].filter(Boolean).join('/') || '/', + upstreamBase.origin, + ); + const qs = req.url.includes('?') ? req.url.slice(req.url.indexOf('?')) : ''; + target.search = qs; + return forward(target, req, res); + } + + // ── /api/health ───────────────────────────────────── + if (segments[0] === 'health') { + return send(res, 200, { ok: true, service: 'conssswars-zg-proxy' }); + } + + return send(res, 404, { error: 'unknown proxy route' }); +} diff --git a/proxy/package.json b/proxy/package.json new file mode 100644 index 0000000..4fd753e --- /dev/null +++ b/proxy/package.json @@ -0,0 +1,8 @@ +{ + "name": "conssswars-zg-proxy", + "private": true, + "version": "1.0.0", + "type": "module", + "description": "0G Storage 節點的同源代理。Cloudflare Workers 打不到裸 IP 與非標準埠,這支跑在 Node 上補這一段。", + "engines": { "node": ">=20" } +} diff --git a/proxy/vercel.json b/proxy/vercel.json new file mode 100644 index 0000000..8cdaf2f --- /dev/null +++ b/proxy/vercel.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "functions": { + "api/**/*.js": { "maxDuration": 60 } + } +} diff --git a/public/js/main.js b/public/js/main.js index 8298f81..b6b9e30 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -767,7 +767,7 @@ async function uploadToStorage() { try { const { root, tx } = await ZGS.upload(game.shard.shard, { - indexer: st && st.indexer, + proxyBase: st && st.zgProxy, rpc: game.ogStatus && game.ogStatus.network && game.ogStatus.network.rpcUrl, onStep: (msg) => { btn.textContent = '上傳中…'; @@ -803,7 +803,7 @@ async function uploadToStorage() { note.textContent = '診斷中…'; // explainError 會再從瀏覽器打一次 indexer,跟伺服器端的結果交叉比對 note.textContent = await ZGS.explainError(err, { - indexer: st && st.indexer, + proxyBase: st && st.zgProxy, serverSaysLive: Boolean(st && st.live), }); } diff --git a/public/js/storage.js b/public/js/storage.js index 2f30fca..21d7219 100644 --- a/public/js/storage.js +++ b/public/js/storage.js @@ -30,7 +30,11 @@ const ETHERS_URL = '/vendor/ethers.min.js'; * 所以轉發前會把 IP 換成解析回同一個 IP 的 DNS 名稱。 * 兩件事都在 functions/api/og/zg/[[path]].js。 */ -const DEFAULT_INDEXER = '/api/og/zg/indexer'; +const DEFAULT_PROXY_BASE = '/api/og/zg'; + +/** 代理的 indexer 端點。proxyBase 由 /api/og/status 下發,見那支的 zgProxy。 */ +const indexerUrl = (proxyBase) => + new URL(`${(proxyBase || DEFAULT_PROXY_BASE).replace(/\/+$/, '')}/indexer`, location.origin).toString(); /** EVM RPC 維持直連:它走 MetaMask 與公開節點,實測瀏覽器打得通。 */ const DEFAULT_RPC = 'https://evmrpc-testnet.0g.ai'; @@ -71,7 +75,7 @@ export async function computeRoot(shard) { * onStep 會在每個階段被呼叫一次,讓畫面可以照實顯示進度 —— * 這段要跟鏈上互動,慢的時候十幾秒跑不掉,不能讓玩家對著沒反應的畫面等。 */ -export async function upload(shard, { indexer, rpc, onStep } = {}) { +export async function upload(shard, { proxyBase, rpc, onStep } = {}) { const step = (msg) => { if (typeof onStep === 'function') onStep(msg); }; @@ -103,7 +107,7 @@ export async function upload(shard, { indexer, rpc, onStep } = {}) { step('送出 Flow 合約 submit 並上傳 segment…'); // 這裡刻意忽略呼叫端傳進來的真實 indexer 網址,一律走代理 —— // 直連的話 segment 那步會被 storage node 的 CORS 擋掉。 - const client = new zg.Indexer(new URL(DEFAULT_INDEXER, location.origin).toString()); + const client = new zg.Indexer(indexerUrl(proxyBase)); const [tx, err] = await client.upload(data, rpc || DEFAULT_RPC, signer); if (err) throw new Error(String(err && err.message ? err.message : err)); @@ -119,9 +123,9 @@ export async function upload(shard, { indexer, rpc, onStep } = {}) { * 那就是對方沒開 CORS,而不是玩家網路有問題 —— 這兩件事的處理方式差很多, * 不講清楚玩家只會一直重試。 */ -export async function probeIndexerFromBrowser(indexer = DEFAULT_INDEXER) { +export async function probeIndexerFromBrowser(proxyBase) { try { - const res = await fetch(new URL(indexer, location.origin).toString(), { + const res = await fetch(indexerUrl(proxyBase), { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'indexer_getShardedNodes', params: [] }), @@ -139,7 +143,7 @@ export async function probeIndexerFromBrowser(indexer = DEFAULT_INDEXER) { * 交叉比對才能給出正確的診斷,光看錯誤字串會把 CORS 誤判成網路問題。 * 不管分到哪一類,原始訊息都保留在後面,否則出事時完全無從查起。 */ -export async function explainError(err, { indexer, serverSaysLive } = {}) { +export async function explainError(err, { proxyBase, serverSaysLive } = {}) { const msg = String((err && (err.message || err.reason)) || err); if (/insufficient|balance|funds/i.test(msg)) { @@ -164,11 +168,11 @@ export async function explainError(err, { indexer, serverSaysLive } = {}) { // 現在 indexer 與 storage node 都走同源代理,所以先確認代理自己活著。 // 代理通、上傳還是斷,那就是斷在代理後面(節點或 Flow 合約), // 不是瀏覽器的 CORS / mixed content 問題。 - const probe = await probeIndexerFromBrowser(); + const probe = await probeIndexerFromBrowser(proxyBase); if (!probe.reachable) { - return `連不上自家的 0G 代理(/api/og/zg/indexer)—— 這通常表示 Pages Functions 沒部署上去。原始錯誤:${msg.slice(0, 100)}`; + return `連不上 0G 代理(${indexerUrl(proxyBase)})—— 代理沒部署,或它沒放行這個網域的 CORS。原始錯誤:${msg.slice(0, 100)}`; } - if (indexer && !serverSaysLive) { + if (!serverSaysLive) { return `代理正常,但伺服器端也連不到 0G 的 indexer,可能是節點在維護。原始錯誤:${msg.slice(0, 100)}`; } return `代理與 indexer 都正常,上傳斷在後面那一步(storage node 傳 segment 或 Flow 合約 submit)。原始錯誤:${msg.slice(0, 140)}`; From af8dbcb360bc2427f72be3c2315532072d5b11f8 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 06:09:07 +0000 Subject: [PATCH 06/10] =?UTF-8?q?proxy=20=E4=B8=8D=E6=94=BE=20vercel.json?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E5=85=8D=E8=B2=BB=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=A4=B1=E6=95=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vercel.json 裡寫了 functions.maxDuration = 60。免費方案的上限比這個低, 設定值超過上限時 Vercel 是直接讓部署失敗,不是默默降級 —— 為了一個 用不到的設定卡住部署不划算。 Vercel 本來就會自動把 api/ 底下的檔案當成 Node 函式,沒有設定檔也能跑。 README 補上第一次執行 npx vercel 時那幾個互動問題該怎麼答。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- proxy/README.md | 16 +++++++++++++++- proxy/vercel.json | 6 ------ 2 files changed, 15 insertions(+), 7 deletions(-) delete mode 100644 proxy/vercel.json diff --git a/proxy/README.md b/proxy/README.md index 57cc429..15a5560 100644 --- a/proxy/README.md +++ b/proxy/README.md @@ -22,7 +22,21 @@ cd proxy npx vercel --prod ``` -記下輸出的網址,例如 `https://conssswars-zg-proxy.vercel.app`。 +沒有 `vercel.json` 是刻意的 —— Vercel 會自動把 `api/` 底下的檔案當成 Node 函式, +不需要設定檔;寫死 `maxDuration` 之類的值反而可能在免費方案上讓部署直接失敗。 + +第一次會問幾個問題,全部照預設走: + +| 問題 | 答 | +|---|---| +| Set up and deploy? | `y` | +| Which scope? | 你的帳號(Enter) | +| Link to existing project? | `n` | +| Project name? | Enter(用 `proxy`)或自己打一個 | +| In which directory is your code located? | Enter(`./`) | +| Want to modify these settings? | `n` | + +記下輸出的 **Production** 網址,例如 `https://conssswars-zg-proxy.vercel.app`。 ## 接回主站 diff --git a/proxy/vercel.json b/proxy/vercel.json deleted file mode 100644 index 8cdaf2f..0000000 --- a/proxy/vercel.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://openapi.vercel.sh/vercel.json", - "functions": { - "api/**/*.js": { "maxDuration": 60 } - } -} From 12238637a4fe7f91447cf3b182161084cf7d258a Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 06:16:24 +0000 Subject: [PATCH 07/10] =?UTF-8?q?=E4=BB=A3=E7=90=86=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E8=87=AA=E5=B7=B1=E8=A7=A3=E6=9E=90=20req.url=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E9=9D=A0=20Vercel=20=E7=9A=84=20catch-all=20=E5=8F=83?= =?UTF-8?q?=E6=95=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 線上實測 /api/health 直接落到 404: $ curl -s https://…vercel.app/api/health {"error":"unknown proxy route"} 回的是我們自己的 JSON,所以函式有跑起來、只是 req.query.path 拿不到東西。 那個參數的形狀綁在檔名慣例與執行環境上;req.url 是 HTTP 本身的東西, 換平台也不會變。改成一律從 req.url 解析路徑,req.query.path 留作備援。 404 分支順便帶上實際看到的 segments 與 url,下次再撞到不用猜。 測試也拿掉了假的 req.query —— 現在的 harness 只給 req.url,證明路由不依賴它: /api/health : 200 ✅(不靠 req.query) /api/nope : 404 {"error":"unknown proxy route","saw":["nope"],"url":"/api/nope"} 其餘照舊全過(真實轉發到 127.0.0.1:5678、340076 bytes segment、簽章 403、 CORS 放行與拒絕、OPTIONS 預檢)。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- proxy/api/[...path].js | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/proxy/api/[...path].js b/proxy/api/[...path].js index e833fe1..5549a84 100644 --- a/proxy/api/[...path].js +++ b/proxy/api/[...path].js @@ -226,6 +226,32 @@ function selfBase(req) { export const config = { api: { bodyParser: false } }; +/** + * 路徑一律自己從 req.url 解析,不靠框架給的 catch-all 參數。 + * + * 實測 Vercel 上 req.query.path 拿不到東西(/api/health 直接落到 404 分支), + * 而那個參數的形狀本來就綁在檔名慣例與執行環境上 —— req.url 是 HTTP 本身的 + * 東西,換平台也不會變。留 req.query.path 當備援,兩邊都空才算沒有路徑。 + */ +function pathSegments(req) { + const pathname = new URL(req.url || '/', 'http://placeholder').pathname; + const fromUrl = pathname + .replace(/^\/+/, '') + .replace(/^api\/?/, '') + .split('/') + .filter(Boolean) + .map((s) => { + try { + return decodeURIComponent(s); + } catch { + return s; + } + }); + if (fromUrl.length) return fromUrl; + const raw = req.query?.path ?? []; + return (Array.isArray(raw) ? raw : [raw]).filter(Boolean); +} + export default async function handler(req, res) { setCors(req, res); if (req.method === 'OPTIONS') { @@ -233,8 +259,7 @@ export default async function handler(req, res) { return res.end(); } - const raw = req.query?.path ?? []; - const segments = (Array.isArray(raw) ? raw : [raw]).filter(Boolean); + const segments = pathSegments(req); // ── /api/indexer ──────────────────────────────────── if (segments[0] === 'indexer' && segments.length === 1) { @@ -274,5 +299,5 @@ export default async function handler(req, res) { return send(res, 200, { ok: true, service: 'conssswars-zg-proxy' }); } - return send(res, 404, { error: 'unknown proxy route' }); + return send(res, 404, { error: 'unknown proxy route', saw: segments, url: req.url }); } From 5e0210dc6d51d9be3326304c0575f8dda4b89d77 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 06:22:30 +0000 Subject: [PATCH 08/10] =?UTF-8?q?Vercel=20=E8=B7=AF=E7=94=B1=E6=94=B9?= =?UTF-8?q?=E6=88=90=E6=98=8E=E5=AF=AB=20rewrite=EF=BC=8C=E6=B7=B1?= =?UTF-8?q?=E5=B1=A4=E8=B7=AF=E5=BE=91=E6=89=8D=E9=80=B2=E5=BE=97=E4=BA=86?= =?UTF-8?q?=E5=87=BD=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一版改成自己解析 req.url 之後,/api/indexer 通了(節點網址確實被改寫成 vercel.app),但 /api/node/<簽章>/<網址> 仍然失敗: Access to XMLHttpRequest at 'https://…/api/node/49e3259…/aHR0cDovLzM0LjE5…' from origin 'https://123360f7.conssswars-web.pages.dev' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present 同一支函式、同一段 CORS 程式碼,一層深的路徑通、三層深的不通 —— 差別不在 CORS,是深層路徑根本沒被路由到函式,瀏覽器只是把「沒有回應」講成 CORS 失敗。 所以不再依賴 catch-all 檔名慣例:api/[...path].js 改名成 api/index.js, vercel.json 明寫一條 rewrite 把 /api/* 全部導過去,原始路徑放在 zgpath 參數裡。 rewrite 之後 req.url 會不會保留原路徑是平台細節,不值得賭,所以路徑改成三個 來源依序試(zgpath → req.url → req.query.path),任一個成立就能正確路由。 轉發時會把 zgpath 從查詢字串拿掉,不讓自己的路由參數漏到 storage node 去。 測試補上這兩條(其餘照舊全過): 原始路徑 : 200 → 節點看到 / ✅ rewrite+zgpath: 200 → 節點看到 / ✅ 深層預檢 : 204 https://123360f7.conssswars-web.pages.dev ✅ Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- proxy/api/{[...path].js => index.js} | 58 +++++++++++++++++++--------- proxy/vercel.json | 6 +++ 2 files changed, 46 insertions(+), 18 deletions(-) rename proxy/api/{[...path].js => index.js} (86%) create mode 100644 proxy/vercel.json diff --git a/proxy/api/[...path].js b/proxy/api/index.js similarity index 86% rename from proxy/api/[...path].js rename to proxy/api/index.js index 5549a84..d44ef81 100644 --- a/proxy/api/[...path].js +++ b/proxy/api/index.js @@ -227,29 +227,49 @@ function selfBase(req) { export const config = { api: { bodyParser: false } }; /** - * 路徑一律自己從 req.url 解析,不靠框架給的 catch-all 參數。 + * 路徑怎麼拿:三個來源依序試,不押寶在任何一個上。 * - * 實測 Vercel 上 req.query.path 拿不到東西(/api/health 直接落到 404 分支), - * 而那個參數的形狀本來就綁在檔名慣例與執行環境上 —— req.url 是 HTTP 本身的 - * 東西,換平台也不會變。留 req.query.path 當備援,兩邊都空才算沒有路徑。 + * 這裡踩過兩次坑。先是靠 Vercel 的 catch-all 參數 req.query.path,結果 + * /api/health 直接落到 404 —— 那個參數在這個執行環境上是空的。改成自己解析 + * req.url 之後 /api/indexer 通了,但 /api/node/<簽章>/<網址> 的預檢仍然沒進到 + * 函式(瀏覽器只看得到「preflight 沒有 Access-Control-Allow-Origin」), + * 也就是深一層的路徑根本沒被路由過來。 + * + * 所以現在改成 vercel.json 明寫一條 rewrite,把 /api/* 全部導到這支函式, + * 並把原始路徑放進 zgpath 查詢參數 —— rewrite 之後 req.url 會不會保留原路徑 + * 是平台細節,不值得賭。zgpath 沒有就退回解析 req.url,再沒有才看 + * req.query.path。三個來源任一個成立就能正確路由。 */ -function pathSegments(req) { - const pathname = new URL(req.url || '/', 'http://placeholder').pathname; - const fromUrl = pathname +const decodeSeg = (s) => { + try { + return decodeURIComponent(s); + } catch { + return s; + } +}; + +const splitPath = (p) => + String(p || '') .replace(/^\/+/, '') .replace(/^api\/?/, '') .split('/') .filter(Boolean) - .map((s) => { - try { - return decodeURIComponent(s); - } catch { - return s; - } - }); - if (fromUrl.length) return fromUrl; + .map(decodeSeg); + +function pathSegments(req) { + const url = new URL(req.url || '/', 'http://placeholder'); + + const zgpath = url.searchParams.get('zgpath'); + if (zgpath) return splitPath(zgpath); + + const fromUrl = splitPath(url.pathname); + if (fromUrl.length && fromUrl[0] !== 'index') return fromUrl; + const raw = req.query?.path ?? []; - return (Array.isArray(raw) ? raw : [raw]).filter(Boolean); + const fromQuery = (Array.isArray(raw) ? raw : [raw]).filter(Boolean); + if (fromQuery.length) return fromQuery; + + return fromUrl; } export default async function handler(req, res) { @@ -289,8 +309,10 @@ export default async function handler(req, res) { [upstreamBase.pathname.replace(/\/+$/, ''), rest].filter(Boolean).join('/') || '/', upstreamBase.origin, ); - const qs = req.url.includes('?') ? req.url.slice(req.url.indexOf('?')) : ''; - target.search = qs; + // 查詢字串照轉,但 zgpath 是我們自己的路由參數,不能漏到 storage node 去 + const incoming = new URL(req.url || '/', 'http://placeholder'); + incoming.searchParams.delete('zgpath'); + target.search = incoming.search; return forward(target, req, res); } diff --git a/proxy/vercel.json b/proxy/vercel.json new file mode 100644 index 0000000..e80b72d --- /dev/null +++ b/proxy/vercel.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "rewrites": [ + { "source": "/api/(.*)", "destination": "/api/index?zgpath=$1" } + ] +} From 121976fe9f6cc0c722c480e495103938fd0ed62d Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 06:34:20 +0000 Subject: [PATCH 09/10] =?UTF-8?q?README=20=E7=9A=84=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E6=AA=94=E6=A1=88=E9=80=A3=E7=B5=90=E8=B7=9F=E4=B8=8A=E6=94=B9?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit api/[...path].js 改名成 api/index.js 時漏掉這個連結,點進去會是 404。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f06d97..1a34a2e 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ |---|---|---| | **0G Compute Network**
TEE 可驗證推論 | 戰報要永久存檔,寫它的那個 agent 就不能是黑箱。金鑰在 pc.0g.ai 選 **Private(TEE enclave)** 開的,推論實際跑在 enclave 裡,不是只呼叫一個 OpenAI 相容端點。 | [`functions/api/narrate.js#L55-L134`](https://github.com/ConsssLab/web/blob/main/functions/api/narrate.js#L55-L134) | | **0G Compute Network**
Router 設定 | 敵方 agent 與旁白 agent 共用同一份供應商工廠,把 `AI_PROVIDER` 改成 `0g` 就能整支切過去,不用改程式碼。 | [`functions/api/og/_shared.js#L22-L23`](https://github.com/ConsssLab/web/blob/main/functions/api/og/_shared.js#L22-L23) · [`functions/api/og/_shared.js#L82-L90`](https://github.com/ConsssLab/web/blob/main/functions/api/og/_shared.js#L82-L90) | -| **0G Storage**
真實寫入 | 記憶碎片要「永久保存」就必須真的落地。用官方 SDK 走完整協議:切 256-byte chunk 算 merkle root → 對 Flow 合約送 submit(付儲存費)→ 把 segment 傳給 storage node。**全程用玩家自己的錢包簽,伺服器不持有私鑰。** | [`public/js/storage.js#L65-L108`](https://github.com/ConsssLab/web/blob/main/public/js/storage.js#L65-L108)
節點代理(Node):[`proxy/api/[...path].js`](https://github.com/ConsssLab/web/blob/main/proxy/api/%5B...path%5D.js) —— 節點是裸 IP + 非標準埠,Cloudflare Workers 打不到(error 1003 / 521),這一段必須跑在 Node 上 | +| **0G Storage**
真實寫入 | 記憶碎片要「永久保存」就必須真的落地。用官方 SDK 走完整協議:切 256-byte chunk 算 merkle root → 對 Flow 合約送 submit(付儲存費)→ 把 segment 傳給 storage node。**全程用玩家自己的錢包簽,伺服器不持有私鑰。** | [`public/js/storage.js#L65-L108`](https://github.com/ConsssLab/web/blob/main/public/js/storage.js#L65-L108)
節點代理(Node):[`proxy/api/index.js`](https://github.com/ConsssLab/web/blob/main/proxy/api/index.js) —— 節點是裸 IP + 非標準埠,Cloudflare Workers 打不到(error 1003 / 521),這一段必須跑在 Node 上 | | **0G Storage**
indexer 唯讀查詢 | 「上傳沒報錯」不等於存進去了。拿 root hash 回頭問 indexer,確認 storage node 真的收下並 finalized 才敢標成已存檔。唯讀、不需金鑰,評審可自行查證。 | [`functions/api/og/storage.js#L76-L114`](https://github.com/ConsssLab/web/blob/main/functions/api/og/storage.js#L76-L114) | | **0G Storage**
節點活性探測 | 結果畫面的燈號要照實反映網路狀態,不能寫死成綠燈。 | [`functions/api/og/status.js#L34-L57`](https://github.com/ConsssLab/web/blob/main/functions/api/og/status.js#L34-L57) | | **0G Chain**
錨定寫入 | 戰報需要一個不可竄改、有時間戳的存在證明。40 bytes 結構化 calldata(魔術字 `CSSW` + 版本 + 戰績 + SHA-256),用合約建立交易送出,chainscan 上一眼認得出來。 | [`functions/api/og/shard.js#L62-L84`](https://github.com/ConsssLab/web/blob/main/functions/api/og/shard.js#L62-L84) · [`public/js/og.js#L174-L199`](https://github.com/ConsssLab/web/blob/main/public/js/og.js#L174-L199) | From 569abfd1bf623dac9e9bd8c74580baf5f5b46097 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 06:41:48 +0000 Subject: [PATCH 10/10] =?UTF-8?q?=E6=94=B9=E5=90=8D=E9=8F=88=E5=B7=9E?= =?UTF-8?q?=E8=8B=B1=E9=9B=84=E5=82=B3=E3=80=81HUD=20=E7=8E=A9=E5=AE=B6?= =?UTF-8?q?=E7=A7=BB=E5=88=B0=E5=B7=A6=E9=82=8A=E3=80=81README=20=E8=88=87?= =?UTF-8?q?=E7=B0=A1=E5=A0=B1=E6=A8=99=E4=B8=8A=E8=B3=BD=E9=81=93=E4=BA=8C?= =?UTF-8?q?=E5=B7=B2=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 鏈之英雄傳 → 鏈州英雄傳 index.html(標題、描述、og:title、h1)、manifest.webmanifest、rules.js、 story.js、README、以及兩支 agent 的 system prompt,共 10 處。簡報那份原本 就寫鏈州,現在全站一致。 2. HUD 改成玩家在左、遺忘者在右 跟棋盤方向一致(劇情裡就寫「你在左、遺忘者在右」),原本 HUD 是反的。 .hud-side--hero / --foe 兩塊在 index.html 裡對調;CSS 的 row-reverse 與 text-align:right 是給「靠外側那一方」用的,所以從 hero 改掛到 foe。 實測(headless Chromium 量座標): 左側: 零界守望者 (x 18–165) 右側: 遺忘者 (x 225–372) ✅ 3. README 加上實測狀態表 三條賽道都標成通,並附這一場的實際證據:0G Storage 檔案 root 0x31dbf573…d7cb25、Flow submit tx 0x9c7377b8…58b2218、儲存費 92200934886 neuron;0G Chain 區塊 #54068232、5 個確認、四項全部相符。 下面補一段說明賽道二為什麼繞這麼久(裸 IP + 5678 埠 vs mixed content 與 Cloudflare 的 1003/521)。 4. 簡報第 5 頁:0G Storage 從「◐ 部分驗證」改成「● 線上實測通過」 內容換成檔案 root、Flow submit、節點回報 Single file upload completed。 標題「交件時三條賽道的真實狀態」的「交件時」拿掉,結語改成三條都通。 順手更正第 3 頁失效的行號(storage.js#L53-L85 → #L65-L108)並補上 proxy/api/index.js —— 舊行號點下去會指到不相干的程式碼。 PDF 用原始 deck 重新算版渲染,五頁都確認沒有溢出(每頁內容 720px = 版面高度)。 依先前的要求 slides/ 仍然只留 PDF。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015NBxaWtzqEX3i8NvoZEeq3 --- README.md | 12 +++++++++- functions/api/agent.js | 2 +- functions/api/narrate.js | 2 +- public/css/style.css | 9 +++++++- public/index.html | 28 ++++++++++++------------ public/js/rules.js | 2 +- public/js/story.js | 2 +- public/manifest.webmanifest | 2 +- slides/conssswars-weightless-memory.pdf | Bin 1775808 -> 1762073 bytes 9 files changed, 38 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 1a34a2e..f6d5881 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ConSSS Wars -# 鏈之英雄傳 ConSSS Wars +# 鏈州英雄傳 ConSSS Wars ### 第 0 章 · 無重之憶 — Weightless Memory @@ -47,6 +47,16 @@ 摘要 ──合約建立交易──▶ 錨定到 0G Chain ──讀回來逐欄比對──▶ ✓ ``` +**三條賽道都已在 Galileo 測試網跑通**,下面是其中一場的實際紀錄(可自行到瀏覽器重現): + +| 賽道 | 狀態 | 實測證據 | +|---|---|---| +| **0G Compute** | ✅ 通 | `deepseek-chat-v3-0324 · TEE 就緒`,戰後旁白由 enclave 產生 | +| **0G Storage** | ✅ 通 | 檔案 root `0x31dbf57395ca6d1b8f401f944453b846ce0c2a0cedddd97c27c4bc8a84d7cb25`
Flow 合約 submit tx `0x9c7377b88930c28412c95dfb452793c500233531264e09fef8537b91358b2218`
儲存費 92200934886 neuron,節點回報 `Single file upload completed` | +| **0G Chain** | ✅ 通 | 區塊 `#54068232`、5 個確認,calldata 讀回後**四項全部相符**(摘要 / 勝負 / 回合數 / 記憶核心) | + +> 賽道二繞了很久才通。0G 的 storage node 是**裸 IP + 明文 http + 5678 埠**,瀏覽器擋 mixed content、Cloudflare Workers 又擋裸 IP(`error 1003`)與非標準埠(`error 521`),所以節點轉發那一小段必須跑在 Node 上([`proxy/`](proxy/))。細節寫在 [proxy/README.md](proxy/README.md)。 + | 用了哪些 0G 技術 | 為什麼要用它 | 在哪一行用到 | |---|---|---| | **0G Compute Network**
TEE 可驗證推論 | 戰報要永久存檔,寫它的那個 agent 就不能是黑箱。金鑰在 pc.0g.ai 選 **Private(TEE enclave)** 開的,推論實際跑在 enclave 裡,不是只呼叫一個 OpenAI 相容端點。 | [`functions/api/narrate.js#L55-L134`](https://github.com/ConsssLab/web/blob/main/functions/api/narrate.js#L55-L134) | diff --git a/functions/api/agent.js b/functions/api/agent.js index afaae1c..1be468e 100644 --- a/functions/api/agent.js +++ b/functions/api/agent.js @@ -50,7 +50,7 @@ function providerConfig(env) { }; } -const SYSTEM = `你是回合制策略遊戲《鏈之英雄傳 ConSSS Wars》裡的反派 AI agent「遺忘者」。 +const SYSTEM = `你是回合制策略遊戲《鏈州英雄傳 ConSSS Wars》裡的反派 AI agent「遺忘者」。 你在鏈國 0G 進攻對方的「記憶核心」。你要贏,也要有角色感。 戰場規則: diff --git a/functions/api/narrate.js b/functions/api/narrate.js index 05a04f4..3204212 100644 --- a/functions/api/narrate.js +++ b/functions/api/narrate.js @@ -19,7 +19,7 @@ const MAX_BODY = 8 * 1024; const TIMEOUT_MS = 9000; const MAX_NARRATION = 120; -const SYSTEM = `你是《鏈之英雄傳 ConSSS Wars》裡的「記憶編纂者」。 +const SYSTEM = `你是《鏈州英雄傳 ConSSS Wars》裡的「記憶編纂者」。 玩家剛在鏈國 0G 打完一場記憶迴廊的攻防,你要把這場戰鬥寫成一段要永久存進 0G Storage 的檔案敘述。 規則: diff --git a/public/css/style.css b/public/css/style.css index 4ff7f97..18aabdf 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -486,7 +486,14 @@ body { min-width: 0; } -.hud-side--hero { +/* + * 靠外側的那一方要把核心圖示推到外緣、文字靠右。 + * + * 這個修飾詞原本掛在 hero 上,因為 HUD 曾經是「遺忘者在左、玩家在右」。 + * 現在改成玩家在左、遺忘者在右(跟棋盤上「你在左、遺忘者在右」一致), + * 所以反轉的是 foe 這一側。 + */ +.hud-side--foe { flex-direction: row-reverse; text-align: right; } diff --git a/public/index.html b/public/index.html index 814b16f..7027c87 100644 --- a/public/index.html +++ b/public/index.html @@ -8,12 +8,12 @@ /> - 鏈之英雄傳 ConSSS Wars — 無重之憶 Weightless Memory + 鏈州英雄傳 ConSSS Wars — 無重之憶 Weightless Memory - + @@ -29,7 +29,7 @@
-

鏈之英雄傳

+

鏈州英雄傳

ConSSS Wars

無重之憶

@@ -72,24 +72,24 @@

一分鐘作戰

-
- +
+
- 遺忘者 -
- 15 + 零界守望者 +
+ 15
1 / 7 回合
-
- +
+
- 零界守望者 -
- 15 + 遺忘者 +
+ 15
diff --git a/public/js/rules.js b/public/js/rules.js index 4649d3d..fb897a5 100644 --- a/public/js/rules.js +++ b/public/js/rules.js @@ -1,5 +1,5 @@ /** - * 鏈之英雄傳 ConSSS Wars — 無重之憶 · Weightless Memory + * 鏈州英雄傳 ConSSS Wars — 無重之憶 · Weightless Memory * 純規則層(deterministic,無 DOM、無網路),前端與 AI agent 提示共用同一份定義。 * * 戰場:3 條「記憶迴廊」,每條 3 格。 diff --git a/public/js/story.js b/public/js/story.js index e92eff3..cfe25a5 100644 --- a/public/js/story.js +++ b/public/js/story.js @@ -4,7 +4,7 @@ */ export const TITLE = { - main: '鏈之英雄傳', + main: '鏈州英雄傳', en: 'ConSSS Wars', sub: '無重之憶', subEn: 'Weightless Memory', diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest index 08b5d69..eb56b4d 100644 --- a/public/manifest.webmanifest +++ b/public/manifest.webmanifest @@ -1,5 +1,5 @@ { - "name": "鏈之英雄傳 ConSSS Wars — 無重之憶", + "name": "鏈州英雄傳 ConSSS Wars — 無重之憶", "short_name": "ConSSS Wars", "description": "一分鐘策略戰,敵人是跑在 0G 上的 AI agent。", "start_url": "/", diff --git a/slides/conssswars-weightless-memory.pdf b/slides/conssswars-weightless-memory.pdf index d85c337fcb9ce900d75640aa30b2bffb227e93b8..ccdebf763d8778a8f1084cd373f60791d6ce0462 100644 GIT binary patch delta 113099 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 UhhY(-j=s3N2?yZE{Cz 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

!TM(WBNU;r8#rHf6COQ)=zNhd0s_e} z4kU_ipMbooe>Dd4r35@7+}EKoHW^p9JdPJb0pT=RA;0ZXc4LZTxg&7?g*ONi^R=rTwF4*n#f{&tCDWx8DUq!B)( zCv-($BJh<=tgBHn0KRX)^q1@_246%lVq>a;vw4283w{jn^{aRZ+!2RI1%3jHY_Zsz zZvvz}^05-Vgq{s|aV#SB#@B;(6Ju^F4(siOXW$wJBOGwgv3%uO#L6@QrO)aG2F(d3b|)S%B-|8^p-|8|WeAAZsGq3x-| z=lJ%WhTU58YS{gGaG|!gLOwpxiU0>NT}J47Swk2@9-!z{vpc_;no@3;Bp0aH9}q^V zP}Ng5^_i-sRrUuqprQSK_}Gcb3Wy>iu`yB-o7eWF7!v+Mn!~&iq0eq#t~actt~FE^ z{8ha z8up)&wm(|sqvkYHng0m~a+z*u$qAf>hK1*nZp^$ndrh66x#)bLjw*%ISC~TB1s+2F z)}&6oyXy)84*Jo5N{J$k;D$g zAPSEoNjfDCmMBR6cHM8de)CTVUCuq)n$)ssi6k);&sBWCRivx@t9E-F`YG3i$w-4ncadcw@EMd`DakB$!%uyLY9Xx@WW%V$zr0(N078|v)∓6nozvzdj*(3co{iG60b})l*MN zGY^jtA7yiN0R8S1(g>@B-w_url?_EX8~pbHmx`3a^0A}dg&aDZ!?p?zCkd+AnXLg| z)n(#%1>x8N%@h*+U(F(hUnXkzoV~2g;DhqtW%0N;h6iIM(@WNUZ!Q0c6H3{{0VXpf zZg>e~xl-QfR7l_Y^4o@8&Ay~i(Ix(lou4tTRsOg2w*po)LZ(kY>9D@`ho)J^eD~L? zftskaw%Vww0kDSC?NubMOJfF0z(3saJ$pQ?nSC=+JmK+i?G^J&>9Z^<7M0e-v`BJ8c^q(@d}^c zTLu26C3o!ncd1!bw4hdOXItNaP23Xy2IEp-Zw0e+SvO5jY1G}o>Oge@4Tnrv|5rd; z8~&E`X?d27skvFJsjGkH;&@WIPj;7?BW34{#dq2wFP3jt(G-88U%%U#@y%Mx_vyA* z_j=*i(f3C~9kptH1P67kll02_ru5y}LPtuGAWKsB4bQ&8TELu(A)9lvI+pCGV;#h}@f7n?mSgmd#NjCkmK9-(?Xod421i=IC;$h=Jipk8Rt_A| zUkdN8M;6A~?Q9(KQobruTDNt#*6IHxhB}5QL9>fwoJX1pl612E-pP8d>ZtXzqK17O zP7n9|Czd!qb!Sh;ZDOI4Ng6Y=pYx3EmHF5_`J3z~AkBW9_SW|{`F82H`S$TP;I<#E z#5Y;cl9(QqNCK90e*oAW*dN#%I3U|4+b@`u)WTE3*1%T5)=8{pw$n0KK2DfhimY<> zEZISTs)4eDx`Kjp&_C#(2+fMCrgc_Zt$j3t+v3=7;)q)p`oNUG*|Jp>uT375k+737b&x$qDZ)mVSHDoY! z9Mh@I<_)dS&0#D39{NXLZ9W2n91_Iu3tR5sKG$mdp)PMVmk4|5ZiC<=CAAxkJ4?x2 zss8?woARU6jq6R~$7$_SsVeDHzdpq>$c@gStB$2e`*8Uru+JTZgkhH5Wu&K-d5^KD?I)&n_3oJL5RtKi&{+;y6;) z!=-j6R#qDaMEuLpRun|uop+BcU)fKW>-73qTm$5uEoL)&M+{LFLxiAZvEQAq8g7(( z!+Ky887V%)nZ0upsmq!_)Ot_ScLy%HZ7LkB9OJX7y`jVus!VL_2lV~fk~ji!(yg_S zCYxrU`^Q5|!k)Co6L9%K(9vLyK7b(R1^L4-_tLfcPr|tI!n(J*&%|9Vg+3Uxi&qBQ zDJfvJWR58b_4xLg{M;vx@g-etDw zRQs~WYQ3>7h!xq1beh4M&~jY-zj#3~u_WnCrA@4)^^^Wi8L{R{C-dA>(lJaKB!Zvx z3vL}({_fAwxE6{r(&4;ywv_dI|D=fU5;i~9QZo6DSZb@v;MgQ+g3*Vm`2ev0kzpP#Nf(;95JJ-VigYIV#VNjGAOM5@Z5=R zcN`R^K^(LcZwkH}qXlsh#A9NyF=i99!fJrtSs#kcx{gZHOYiIAdj5PxSN@8NCD78^ zAamVdo%Q?i4^`J9Xjp&5WPZ67dUa;()UCKEof0vK(p?&$8ERY758{|D+b@AS#!t{F z(T-Kib**S@Y)r(`EQ|HjalAE1+l4?nhA;yJXv%`=2+UHzg}qY~wO-rIQmiN1&jGz( zN<4W#K5dF8 zb>mos3Kflq+580*-&NwS{=DkIRG_0pdk3NU_8!t1xvRGz`>%FcMS>?_WuBCP-xu}` zjU1X=Qk!iR;%CIEOX5Jkfz>as0DAu|MNFzG1zxx5txqRFN^@drW(NOz@%f?4b)K3p zB@7i-Qhri8Gp?P!g}R0MDPcD%b|qFh*2e9h!pEQItGwJt|FBs0$9XIm9iY;~)_dT* z6$XdDwXM=xaAKS6rTTRXYQtNHY- zkB5eP{on;c`pd49B7sGX4KE9cU0ME8uh#Be2XJ- z6;8CJwR@j&`%aoC!XP>NW!|<2A{kK?{Ova7Ya(`wG;w4-x?d%UGXNEp2ZQ!}FYesK z%ms+p#)qH~$92Opy|%8a)z&MSC1ocbmPQg$ro5+Ya-FO0Az1j7siRz|$!pGFQFZzf zfzoGqXNUIz&bLu;bU=Kp{XWfIQgGTdPr?0A#Qh}Y03A(de@}*N<>WhQp4H4ilQHMR zJ8RyVgz2|=N8AT-i|I&H6O@Lug^B5jW%;wBJBM2b?(J`xq_dOiCgMranVp&M^f?&@ zJVONoMP#H!iRJ~7KTS%;Ecio(OY$X=9di-Z4u24QXGG6qOa%stOZaA?^Vi~j$2QVh zX{js!OQ^r}9L{>VnNyQ`UYX*mR-7niU-V)MGFuy*G|~2ssUl?kD!SAFEZ7-8FAi+x{U70X0;6UL|17oc`@+` zX3>H9s^$1h7X?XQToMzm&bFJdDwOx~8qXj3=!%J(l52JZSD@I}YrTnX5kx*rKP=dO zUX(et{u(&I6~)5c=9pljC|1N_spRopepivDK-D+=@&l-A%e-+UfsvuO)U-OQn3@94 z=&tFx#9W%>)@ye5%+)r0G1ErB6!J}VvvHhb+i;Q8ie3z0c@3R z=y$So-}0=6eblpg=sHa6N`vG*+v-GyUOyTff!`1nU$SQuGm&21DKkXF&EV(?#tz-p zWwCC=sDaXP6mRsDYFYh@1;Q=IQsjG?C~&J7+OUk=({;3?!W zX*=litWBmL5VfSzAxV&s-bHtdsa2&@3~zvnESO}jOWj=u*BB;mMQf^|cr=(XxZaV< zHYsoj_TczGbe#oQRLvLgS-L}(T{@&YmhKh=B%~Vw0Z}BSSrC*Ikh*}B(jg(S(p`c| zBOu*Kh=erXg7LoZ_y0b4o@H)4=ggcrb7t=HJ99T#Myn`)R`{P8ts8k~>TF4_T@d)w zTHNFPVSGU5iRMqES%Emdr^fgu>^KI_B&IU-e)6-l)X$0h>V;r8_(h+X{(w$+W&e0J zN6Et!4D=IFd1na<_0m`iu@fXLIY?btB#q?uKvse%K7AHNk#heFg?KU}A+XY?Q5)rC z)H3JErdwpa6R+tr4tEi{wth4!G{SbtDq3Bd=O%GL-$E4E_E{UEey_$}C##PUw-1OWO-(;SS zs@$S{vcUcTdaI$Bx3_hs0Z4nhB06N&?u<=WLgOZuHh`c5i+%-ya+Qflwg ziBhGUjsx@wrX9vn*B9T+#&4Ah8^ARy3pC?(<8o4Qm^i^d;~G~x_+2)sz2zjmqH|sf z>JOY~e{;;y$IoqdC`eZ0;L>F2GRo*z7(;hTBrBqvZRd$~XQ% zrU&~-pHw_^Sjpm41zyJ01M0EUBqb{zbKWY=yLH$|1&SfMoRAffPRsH_cHK;or0h=*?=V8B2 zE?i_wI%5~T?0j4m5bZpR&x*4elv)xqnen zP(D4e9G>MO#&p$)`4T>(9NPQ!wHNg~d9J(O0?kBnc8-L)13^uWN3kpPj@GsdI2P47 z1fwKSQ~Ne`A2k+@_7-O-eC2_-YI0>sZ34k6-vaTisa7fMR>XLztULt~U1;$NIIOAqy<`i$^zy)lku$jk+#@85? zV?v>^97Qu0J8;8^JY$Oo;!#rt9%jSn3#^5Wr0;I%_^Nr|n}5SwI^A!6d5=U&bnvYF zXQUGG()j%8Wwb@;XPe#n&Ic2k$GHQ;e)0-Gg6M9}eF`KILT^jZiiu&zeg0smM+Mg2 z$LA(#maJKg-heBO=L1iXI9ncAoi@=eSk1A!{4BtO=h!L9C^csvSrlOmt>(Ioz_o0( zrGowJ+emz5`&0*?A?1QexZzHZhmg?cMlA!_0d%R%!(+vdZq{)-#y~zn^@I6n{>g~a zhSfoXk2zJgQ~^BQ#fusvIvDx;Iqg+?v*)pC{nuMkkq4?i?U&5ymAx#l9=`kkd|c2{ zh)meTYY1O|oXcdp{=WBwPKC~k5%k63n

#fY9aotOCY*`SB}Llzmk2kkHDGHRwAZ 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 -!DPpMQIwoXpe znI@VfnmSy2XDcB%mJONJI83Y6WFiie zjtHDg0hQYNe%*z9==B~PXVx^c6k*9)Dqhenagneyah zXGyHjNj{*hJ)n|gRm}zK+#G5t5V@YB3Lm`>C-^rn~z-uni~B&5-P>0MKW+K zTd|Z@lRK}gGf>>lxE1d+Z9l60`=K|zt9P&JV1K$`pSqv(D;Um}DAXyBwzV)bF9X^r zf^;n+ek_xBTH{h$%usZ~+R4s))I25(qw^viP-aHrf|yhaHtk&aq-Y4@FPDBLZ*N(%Wycx<6758)BMvGc;I| zo;o?}{uZMHa`sy-vj}9Yb+I?NN5>Po+dKW4hb(%@vMOn==uLR!u#hcDGt}S*>c|hv zX)hkTsyvs>PlcCus^} zGXCI2!(;L9Q{{0{k?K(dZq@5FktZ*{C^n6fd~-i2<&(0fxlBdzmT=&^Ta_9!fgFThIk{DS4~Qr$G@tawvd@bi1c!YRTB57{$jnPRu^t~WP@DoUG|zoWhbE(^Bx z>MDJBxp~ZM$b~Ta__l{F(e2-VP#lU#4sM= z@9wNVtkOC2(K-`VKYI*N3A77208O87Tf6EKO@Y3=v-PUmxyZ>4&sv&KpAuYcl zjiI51-P>%gux#^P*=AMQ=I@SG>CP3c@reHPxVD@OhVjqfk&}?d<{@x^)yWKPGz^e@ zwJH8q$1YtQgX0tWaR%D?Jp4HB$GI2isOqg2c1_>jFwM(02Z5!eEp7fcL6EUJ#@g`1Uu}04Yy?|&gca$3k#7aeC^B}uG;<~hmum`=ditS$F@MhtC z_w>|8k z^xns>_}0uFm0R-LF%{ZeeXrahkBwa7`ON5bv$5s%ix-I&QRzYz@``xg(S9D89%w^9 z`x0ROJsQR3Y!>5j3C=ye+I?%YgO(F1BIa21%)%Ke)RKpOkRGK>DQgzmWFMzXLy zvcx!2%GYBSHANe0nGGI7a8}*IB1?5B`*HP5T{# zn}(I=g5H9Z!_<}`RiRaJU7fQ|B-0m&JDm7a#E6_b+MQJJ!tNn%x_F9?9#pkz1c;Th z4&rWxg-Kx|&bm+FYrx)Eb=DIUfBuFNQgyLiQlT4o<$c0;C}ZhF4S9-;Y$f8cmZw(_ z*)mupiVWbS8cD~XqTG0yA?73*({|rgc)hv4oG^LIaL#;dc;{#lIXq~aYeB9tyUSXo zCFb3ICRHl;k*(%~$Ry{5pSbG@gPKsTP^47J%Tts-lvt||9~EI+VO^TLw8R{Dvk52F zZ36RGic7?W%>${L4DSrRXY6{A^9DA=;cDn38`&~ zI9R5{;@Y#r-{KS|!N!(*Q_CCB6lC_ATWYCTBIn-o5|1e?Y@zSNC4}Tg_)+Kap+vwC z(UA^=d>xfz%_CSx4P7`ATmOT$=;zRtl;^aZBUB+&;YdQyUrvsplB|7rL_mX)xmT_q zps>QqT#c%vZjW)#8<~JV2Q&oI%vdmxg9ON}krAyT=Z$*9RMc$fND9C!uC>Z-L<1M< zT<_b4pOPRa{6Ojs1-VdwnEi-9&{3^KThOY}6Y6j1VGg1QesX3-rB^@T8j#M2;oRue zx>76;%wWz3873kCt74sqWAi9}T*76-R}+R-ELU4lF{c#HUTj}1SS_sjGA8Ri}qCkEDqf08QeJ!l4dnk64cOR8aB0q&J zR5s18_B1}-5B+Q+!_Q!wF3Yd%%r)EZ?yNe;Pvbjko?l+AC_`F~%+dY9%pZaq5-L|w zns;C0fBxyFug1ezl45^wCyzCxh$V3|>!&EKsZvxjHRCwUmzFEuW$5C*B`p7@i97}q z!r^9Kc@2^j8l}awTIO$z#`H;gp`%!~2$GAx|T1B15sNp3Iut^iLXB@t%8CGj^6hYEcQbG_x={FvUwt(nj3z4Z*e8~15{Vmv6ZL1-KYxZB6d&>4ydiO( ziKMraM^IstPHG$ook%5xvgnS*0JMQ`*TNH7eMG>@AR5Ql+}17}clf@kt?HmriQSUQ1LyO66kir3f)w4W zaTVN)!OJdokk&NA#3s(E%H<5-fi0MpYHsyXv-fz`YIuAU893wOqIl;UC+FQAF zd{o$M8qFHz~i<-h93;M>OfVop(nfn}q$O|d?g0lW8I zMB>Uvo9su;mh0B3qb}~%=ZsIq4O%CRGD`e3ilTL3O3n2w<@^fMu3imggf|@x`!6Zg z40P&Q#dh6;01eDN6|rucZ|lQzMdfFRo_H!H5n=2PWpayRU% zlN|a*+`6C>&#`e2bmz7!(IYi1?9dZBxND^UiDy>c7bEn|lN>gq6Sl$OxDZ@6EGJ=A zBIg>I_3D+V%{q2e4$cd0^|3c^_g#iQkC;1TtPKrM(k`YAHeuYT&{Y` z!HUqO!4vzkC*kmz$;`fyX-}D(_5B~rUE!GvF#DxWaWtQ|d0(a*e5Sv*S>!N^e}*qp zEqkE2HNq3$E}iHvsaC!@c6%~KF|WUm`AuKPbw~V*i>=nVW`2fEBu-w2&6R#9rz<{y zt%U5xiSD*V#ZElKWyH*xALe4V%@S!_9HbggHCLGP7)L|h*;hp1aTVj6k*w)g911P2 zJg}}_#AuB+_Hm&Q>7zm}0fkPzd<&O&u{#T?c*%YyN3AbOZ8jJ+mWq+s&XIgnYoRGl zYk`rx&S56eWx|AY-9lRBS{c1&HY-FzOzLV5nHrMg&vK6qF%&_{_){KyYRHLokzv5+ zO_F?n8)WK-dH$9g2jBcd@6^~{RIUkEv zPRW(bSUgwgjSAr*m5B0+%pnn7&#QnB=gr+N#)(D^9NKhUt}ix-lu7Idz@k$3O+f=?S6mSqW$*i*8;h0B5uQpBG{T3 zhgsJRZAj6(S!v6Uhs+ImNjYe1%p!QNv_SX)6Q9$EFOV`U*GU*Bls-KRGmtd6R1en( z*R-wBq*Z3iV!JNfsC)CYDr57lZR}4fb$hQ&d6O$DRW`4lV6Mb@K8>hrx1q`GPUGHf zLFefZv9*N+OB^Nly`r^31u)#BXbd(jMzO@#7@2&*lOaEIqyGi@=vM6u^v3VU>5QLv z9s#)_wxsYdrkP1Y;DSum#O37c#_ zM0aP@2KPePbwA}f-{_#0?MLaK3Of^{^_f%jV?N_7G&cCfHL<)5wb!0iRK)>}hN<+A z&}vdN6BAJ^!`1M3M?0pOpNeU`V@EZ9H{3dCK{HiX&p}z5jv)`*J!`=f`D#yHFh${r z8xksLO1w6(a1gaB>{!13EruM|5^7i{6HaC|c&xs2hHR?5QzL9E+!A(G)t=h zF(yx~5_xhq%5*okk7tW68K3H$`Na=TcSssDRUb>0>5^)E&Jjr02&r}(tK#FEf&r5? z#)d6p;kMZdLHzNqV)LB&M3o&C8jCfx(IVpmg=^A9v_-8b&3#3%Y{Ue{O~h<2X(Iv?UobMLadrjj^aWrUPIAm&-8pl_VA9Gwp7h%POou-?! zEcgpeydMT z;sf)@Ln{joLUS&7ccDK%)oAhLhFdt}dtYyl!8iG2QVbGa6Z zzL|!sKoDenGY7SBj@{C%sEC!5X(0K=L5l+ZiL^|@bi=Ar+y}icT?1og@)ebX62CTX z2!E!s#f+9=9b3d$P&>&&0v>0~iiB~?IGlM@W4w-5&P?NmjQAM!o0wKG2``RT5!1X% z6e{x@TIN|nG({s5Rx6l6tI28H(&r`5ag;D(s*rbLlg#a2@6w#5%$tcT7VT#h7OOW6 za`du$UCOLV%D053#iq6rKjFpg6>hHyk!numoTQktbHDI?)^mMwmL-%aUMQ3oSs++E zR3cQ)uI^&H`0m?wi`CFAv50{JGfA;1-qw^e(4UoCMewQrReuQVik1cKrIEHHeWv{A zcN1sAu*Q{J;t1Uhukb>_LgJ>6K|q}8eQI0nb`O20t0RJ;rV@j_B~Se4N5Mo|_H=?C z!YwWa>5bzKDHoBu$yRpd94DH)mfw1-{S3({(@gfq(NnD@s2kc&gr-8vj!WK)4L)fvXE1W&E2_dM)J7WD zSWjDeJ9a?i_G|)A)}GbCOubP@o`8A!`&+qc!2{?IpNCVyFuADtHSPAp@umP%r*`^p zwI27dLPsiE9@h8sL6~5XB&H-pZf?VJ`=3wbb{s>Nne7i(KpQ%<$%sSCqvlE(|E^p>^R&vV~xTjFVZ zFXRsB8-?V0Ys07>6_03!WIv~I81=@+}g{^Y1@s21#JX1afuCa z`4PbjJx{Dxh;vWX2+h0NYyxF$r+E)X&P^CANNEWUwcyKdD)W z&B{|0X#aMjHP?ZvQ*vD!;2Qq2B~8v=J7YsR6G6`nSO*Z&Mk{*0QBj zW7QTi>d;)!L^_^9;OPXS!iKyaIz0ya(-DjDhFBL^ybu%KPhgo z`8;H7B(OS+26L?6fjEZ0lSKHB&T_kD{ETJN#P)cHsSg)T2pJL)y_ zmo1;^u5YL(z&!O$N9dGn8JQU|*;Pi1_1S(W82X^QzCO1wui zo#KFRE-~0Onp~X9*v0s`$d>`%)D>?)7lNU-^xx9^RpKdf8RBHb^NxngE0xxd1qN#s zU~n@*x;Q3VL;05acgOm1mG9P(;k!>Krs5XP6MZ8Whhs;aDjh55EvUl5nv@P}@ZsTM zhczM1)U1ANS2eb7wG#C!p9hj>71)w@tPV5$Dws37iQ?IkRTl74B}sWjE>uIYZre}D zVg_NzEG?TMVgbY)H62xw4-F1P#0VHgV9k`X(iyf)2=_E5RCQ!zzF zvIR7iX`A;Pcx_O%PZU-w49qE37fr@<3KLWFO!$y^US(=wm*r(yhFEGc=h@_0ZL+_} zX6Ao6Rq|}w@{GAh=e&X-!15`Jx($gtQ0Ty7J8Sn?R5jw3c?ibAQ18=_=qUIDhEYL2 z4iPlux+U zMsv+LH;Ilef**;wbzJo#){kC@2PKhJe@$>ae)X)rO!qrH;e++#vf!8fC-s5E2Ypv* z0Vr33zV-t?*hflU)skZzfGPV=9MrcoM=yXcvrt0#OKNZn2*d?vp#gIsBc2T(fZ-^J zXF_^#7velH!vH=+;}fLe69n2B!8E9xGy0UR=e?*X;U;Kv|t;FcLoi!gAX1*`+& zfxEGQ8=wG}IG7kHhd@XGLoskS8qe<+IZA*@fs{QcE^yxr3_-Wx-w-kZ(X6DDKx6=T^KXz4_{Tu7AqbFSCnZBfMO#k( z4FqrogCD@vo{?RG;G=>htjIueJQ+D1;y3}ACu@e2y^(s1!{|6}jJLgNE6-$5Au zvCW+bW`@UygEO!JsRSq^;M7h|0AwgaaNwSa;CO_^edxay`#}F1JCq|R0Rge8U`n#z zKq5@>a7#%cO#O?YxH!;|_9wXKWr*N*(!gF|K&JxC2xLT%-GdjEA?8Nr=LA+mAf$+I z8UzqRg#kn;Zvl!5Fy#ZmeasaKmh)98$1UA z0$7Pz0F`TS8}v7={wGH05rp&?ks-+ZfF`?*C7c z3H%{h35ysy6mHJn)L{h7bVw-S zqVsBXoQRk?%55A0@43p&2e-7 ztGPcc2oH<$=+aC6JZ&~S78rsVITEFWU{ zM`+yKvO8wSMg&ZN**Yl|yh{t3@oPi$A0-t13S8vZitX{M?pcH2()v(85X0ZnBq;aGfj>a- z3-KU;;QqIWBS^Mj2>rKGi8~@};~7DD2mxOoL}<(Eq!75fBNQDE2#-WWo#O-Dg#NQ) zNr)3e0Ecx_Jorc?H2=?v^{a@v{dEWbZ|}ixvBHaEq2{1}7Q|ocI{)Kej{GL#ub}|f zW5nBGB5Ygj(SOW6s13 zaL-m~=YN3uB|RF@Ux%pv>HU^FV#|>Mf(La&-+}mlbM==qoQS<9H}@Y1c{mZmw?LNh3CJ z+&urOU-Pqn=C#;D#Ed%!)yD@+b`dd0Y(d9Relg}B0s{W+6SgeB6Sv2#dUb;rlBA-v3$)Fvtm* z;PMy*9Z=x)Ljp!P7de3}HZaG6up4zrd>`KU5Ro+y-+$@g+3!H%2pw30eyz|ma8*VE z1C)P6{Y&x!oQSOP{^1+9fGihc_;1bo&w|Fy`wzo^@1E?pZ)^&5@D1Lf(m5F6Ht=N_W#}=a`XM#(EhvRqPrskOy43OBLuX(5H$u7AQUd?PLT7z*y{ZP zvg-LRO!OBvD1ew17mgB5@Zmq;{n7)) zA3Y$@Qv*m62q;DVpvN!Eg-{{iU-bSG<@c`r*E=auQ4XaS4py$#Tr|7_0-RjjfK)lj zeZ+r;!X^0M-z(m2#&D(DxDvlkn0>HUmNUt3bF;rYylbm#U^CzMz1gr*d-3_xS~|u3 zW_L=90sdMhc0u%)VHJ2FC9Gfq;o#$JR7}2L0_i8nOu@k`sm&M3`g|x?o3MSc%_Wz8 zW5$4#+f~Vn~Rex>0QH{G4YW z4@HtZPGuCLy%`@`{*gYyfr3;Ql2~G53hQ%yB)Mt_nwxI)nElbxR;>!-Ksuas1eG+@ z-7O7|YE-s<2;#f^;6Y z`N_D_s~IEp8YhGL_M@o8(LPxp2-yay=POd2e0mZH!ylsweGG)W-rF~l5I{wPhG|CQ zv-bE{MB*?2X~q3Yx19=B^swc}*+e#U1p)hqOL) zSAw$XYc5>;;3?ZR24ik8%ZOO*9XR{ulK)PdnbpVe{{urnyuU8Isqp*oariZm0698= zUIG9d68G?rAOw>DKtPJee@8CED;Y(}^+!PH-ksMj!=TnE)P#E^zznR3vJ_a!4}$@)6if$eKp$8N zW`bcbOE^;p2EZ`r1Os3tSOtc`GO!fbK`zJvQ$P*~g9xY*&aD>qE5QOV0PG+LazHMy zg92dxfhXG&&$cI?F5Z_1@_#@!2!U)61i2s&xb5Y(U$=eM_Eo#QBhb;(In?=H=Wn_^UAbNR zXXMRjm_1|muGt4>AAg^H{p<&3e>VFMv;R0pH7Bq8Z*%kK-ZuAzx!=tFcTZ~1v7Q@x zp6Yp~?}2$~^K$2f=1rZ~HZMLuY5vgs+xuq>L$U${XIp>O`k!wo*!c9u7dL*jiP==Y>DZ=wHa)(D+A?j+;FfE)yt}nz zdu+!SJ7qiny1V#_nR|NnHtlWOJGA$seLMC&y6=;bjFFC!c_Rl$-r8TkfBF9H2W~p> z@PX$J#11Y$_JG)+3=s~`v3p^KmYIMV)5VQ`uP9< z{J-LZfD-^1MCSnpGLUl*1c9Q9G79`Tc#l-_e$hpYz@LNQ9!yS4$mxqRDZEs45t8#E zwL{H@)U*?(efiQ$=zOfxi3W*H)gRvpgJ3#H1wf*eIa!AMuvni8x6csHb?=uj;8rFlwKn~OZIJC}4n0!qZrkygWP8)>vpRTO7tC*&c zMtXe7lEwL%rdppWwH`n;4;JB5xCBT5fDSdScHmR|=QJ$DCf%f6JjFi)4X$n%e3ximd;EX!Q-}vDU;}dvsmp42r6(%J^aYbDRz&zyp9=7J!^V;?hJy zQEt)?`Jhy$PP~Cs#^8tYZ#Waa<bZ{Sc6>kZOW$k3(GtvARR7OH7AY4m6`rj16){(tTB z(J02z=#fBae)|;ZFEaB=ZFE-sbD<+E^numv2wACbDFEB&Vs+cMP;!d zWU*j04O=aEYDKhb5w=upLv z;9uin(sNL6kjflVnH3tOvK+`tC4USX1)M`FW7rZ1H+lSC51bnAE&1gMHf_T@mG|)9 zT0PIh!dCv9ffbhQ9S3lcPTAFP`!zd$I>q42eSFiOcG89pSo-!ItK6#X?~-4e6~7wK zLtlan0Nm=ao+E9d*2<)8l(oVre3|Fu?nwmAJ%_uRH#nV*$TuiE!?%KhtD-_Qn?H<&SG2{S$7QgMCUJg9=?Me4!o+dfub53SCKNGT5mGL5JRbPXz$wC zSG6@1RZ|OZuZX(Raw0R@+qzQ#j$ewe!*63RkN`iKHR1%3L|8qCxhSV413+)k8%SmJ zGExO1n2mDy2Y)Mq^MfTN6;b{{%Hx$hQ(Pn~E`B~`YqXAX`;t}3YU9Y7u-5B6GNkOg|T#;mI<4QFeP{c-qY2&5uYV{Ht1NlEY3(b)Oz6_Dr8Cn$O5^b<}#Te$N(u3 z0#KOolSdjWG=%$yYxo|<`T4v%KcDQs@K)xzSh~Y?Yd-I-;}74OQ+bZ7+Y<)|M_dul2*Js8{TvKof+qEeb{P6$ZEyu zeKP}d2XFqd-hZQnI=+oP0D}Th0@?wP$XE`mIYSDRvC)X2NVGaV7tx1GAg4E^z*ML; zj1I}sZk3X5#jGyG{&0QKA4`^&+;_8`zBUv{!7N+4A}MKZbB4}rnK})jE5&N=vYw$_ zSxHK4N=^C7_2`2X|B0`HVi+7OF?hJ#X|!GMuE;%*3x7HOit7T#lLZksiwf%MDM~Jv zXegNGvN_Bqt7_eJBdL1qNPWEl&Yx$IWBJ{%_PeLw-u+|E03guDufV^;4WM;Y%N0XW zd~i`t#;}R9K13u;lnafiKw*yRMm3?@AT$!WN%+#JxJ5e5u+&XoDjf4JPSKb%b4tQ9 zwa%95>3<9>(bq?HO2q$O)D18LvkZnl@rZvjJzSdMW)y~*W#y6Dtcr$5cGAjCFEnUt z>nN(O_Rn9;^_g93n~d3M^~HTtZK-89u9jDnRJ6J>Ai@?4E-j&`l2TIQzjGGuo~e}N zN7@Fx?bQu6tB-gL9?xBCKtd9|hdm${gh2xUl7ETyA60x2T1RUfYC1yeM!R3A9>eOi z8i&sDBSPs6!{DjUq}tooM%RWz7>B|SZm5CqiJEl}i-#xJE0(&|XM5K1FTf~Y;4Q^2 z7Y-EZnQ+cjhfV9+O#17~`*%Cj!z07UY{mz2VH`l=Yx1{urIQ8pAAHvmYFkKG%R z8faaVV>yG2rN|wnFchI>5n5-^g(BpJA8r`<_!f+Fvf*Ng+%5#e**WAeZ1xN(?3PaD z*OdkH@BLJ%{PcWIHbU7s=Y-py6%U?!Pk*I+w`NIFd1X1v-}Osb+P9V$ba}C za>}>~tzeKP#!#X$M_bhqgpMFbrjQfFb7b ztabS=ucq(W<4kHz4Y~W^9pc@0Kxskj53rxhKe1=!5s%z%L&#>wcM&ywBW8RSpJhrX z!*&m4q}ewfFVcC<*;XsQ5!-F}E`Rt0nt#jb1&~OGviME74>y9SI5#3=y4j%~SJPvK zBFO5w6sVhUQHy&$EQ$pw4~wCVf0FWesBf@`#otgK4~G1c(1uwL?x84#xx2oeqU!6{ z!G$+8kW$0Im*W1*(B^uIsyx=kA6+NjGu%Mh-5uYCN3d43pEXg=AeFfzqkmS!nDNC$ zS+zr_mCA&9jjk&2HT#R8@}q>gz9%PlQ0aEgP^2LKZ*|2RpVo$Vy}TS2t=nqax%q!S zCszBVf7Y4If?<}F7C|?CKKxwssm8n%``J$gls>)^KZt8V3+MyOg!dqVFm$;UGhyb8 z8Z;c4XQNYu)`^7)GcH0)Wq%A5CL||%HahZEEZjeOoYd`gvntyBkR1|m6D25 zXI(8t)z&$&#ez1IO+O#YG8$okl}mB@lYC4R#t>guTZ^f>+86qX!GFFv6t%>ytOKZo|Bvm`Hw%mNAA_Hy{{L(T2JcR(%dYOG&i@z9uL_3(ujwGa-|!7 zQ2!kNi(0)?>OA!h>3>6Wd>eiXSA$*PO0b{U@e?JXRF(o0Ggq9$I=xIvM_Ii=FZ7#U z&=(PPNF5zh8i|sDh{q7=YN3D-UbDQNlRr0@h+lw3=vv~8_ih@ zk{#BW$?K97_Bkyw>n^`kx*Ym~G6f3Iez`F<-Kt!K`;49`u7AI-uW1VeFb)J3>6FU? z0fYvd%jW3vQ3^KDLR$sUAq0#hZJDpaJuA>Q5|?yPjF!@Jm)Q2T&_V!ZNX zeq_<2MgQc#vlF37Q!qL8MVcO3ug|h%oYmWr(`8gDUTVzH1UwQ7rk6v>{KxxkGXLgI z)E|4PVm->tM1MI!lxf5}nUktTD=^M42?y&2bg5IOVPhteQ8+I^ZtBc-som!F^+S!Q z!kZ%T`{DGv@Ba3cSI7*P#5dxjxBwVHFyYJP%5r6*FC$}R5;n+{K(}L5unNxJgfSC= zrYDX-HsUw1yR28!WIi#nJ&aR zbblcZ>l~4U(dy7Sup@{%l}ebSQp9>xDzbk_sf0gMDVN_0W52rSxd zKx~W*txtU5^u>!8FFtbk@ZrO7%KG(Bm`o^^62zSV19f~0egrpwS}+WD5Sw63m=HxI z3=CE(=&6JSrq;@S=-l}CWaN9A2rY=B34hiptLJ2)al=jQA0l~1Whf^#uxc$T@?4>C z+GeYUsw=hLB1e`yI~!wvHiQg|;GNR2D?7>W$Jp-^&pc%DEfwxx1)Iy$pZ;0O$Q&ix zxiPg(#B63zEKB{{lD$~rw9QS9on=^RImXM0z#YMOq_$j==cb@S`>%r8M|0gN)_)2COi_nFvuC=5 zdy--g6BU9KMBfaGDrS% zx*^K)Z=$@M>km9j%O5{+@qbH|E?u9QbJs_uy^8~U?z(qwUR?>x;CV{n_BdENsFYF} zcmC$K9d5JVbMy>jGilYVdUn?B!fx%$cn30{^G-;LkJKEQz@PzI_%{kT6D zC6Y`!2~t&asn8G=EN$U5n(+2|;msup1uVEZ@EpTZ_v}XopWopS{D0MaaV9wHQ7t^& zGl;ZWVsb%XTG@A<*RX45$9Ag=K1(%pr}L5f$Y=WeO=O(*`?GUANP^ZuWVK)c%6vwX ztA1+m+LynA&}zZ_YcC(`SJHD1Z|})aSCtC&p-BOW#(@m>}kwgUkg9ZD=Mjo6hI?aZlM{+obPI5EZpeJFE7l768?{T zo%@D=yuAbR)~e>td}y{>@W~bVg>t7?dE$WF>rC1{V*`Ezc7M0$%;~oUS2U-|mk|r#`s=*9H%Gd?x;n@(mGn4vU-^VOIbR~u=*0n zX&iz~ba7D*5_eoB`blplC%s;WuC9L@DdB=_+cCdPt@f-kj%h*%mq(rZZ`v!kbztZLCFz`%0oL~RiYp=bgMn5MLko?7b zwMH`xu@p={4=?h~ zqbW-tv{(cv7cV%+Us~fc=I(EuJ~JcrQWHfrH9-vdp=n;oy#Zvv7rz3(kGsGWPz=gJ zHK+&EL4OATFv=0#=J>u-G`T?PqZh<97Gy~&bjw&y6OkFXh)l;tXagK;UUdlm%&2lP zG7B8a&BHh^cXg+@@0^*Ni%@Rv%w6K1|0Uywh;d_RvK#4EH-s%^bIMX4g^xV?=wp!I zPz~kPTeoiAik5fJlf&-W$Y?~z$>u0F8Sy=2gMZu%MO9V9^Eo-0(xq$D8kkeer3?3< zJAZQ&Ui0+vWBg9^ax63p)x~}bgar8nMhAyP?ZA@AsAreZ z;SRM!BkCwf>q3yFwKh_4haxl=p|v`=y$Y_a`V#()e-goBH$yR=K83?NRe$L4r zVt=->Xnz_*?XfFh$IJsCmYqi~8s`SFZoy-b_k39x zXZil_Nn@CF_ZzLD1?Cl5)Hi2)uXwwr;5!UGyDwui;oUmqKUPksU66R|;fH~GE4@!O55{4*5QP>&(Jv}`d4o4)?~eROYZYQmRz z3rB&6py=)&j2(V2q7w>ACg6e$s}Dsl8!V&dk5q=WB$`-Qz;6)4Q2TpDsejdrSr4^I zJh$n-g4pdI4>he@?>W#7VOmY=rp-PyPz{8-5AYO$crc_7- z8~^tm1aX3?v#ULt`Kz^BSX)c(8Lml{O>H7~Ebiv7A?Q>5+xXS^Z@2-JfgS)P&VVHFS!T;lk|L2Z!-)k&XDwMmC>H zLb+86howbzk|1c?($#RDCKGGzjF~bUF3o9e3W?Ba2s@p4E5=)w%MMo0O3K0859lr{{g^Ph2*gzv_0jmLk6YwjsEm)x$ zMqxrxlF<55=V+`cCI;Mfq(O9AHbU#*52CDsGc;~M<2r(7S+a)}PFs8WR)(c0mZA7> z7zS^qIx5oH5|@X{4}XU-4u|s>5=e)S z%i?du@;9(GA1;OEA~MY1<}A~al{J67_14&SqX}aZ(K#j~+Cfn}kkN#W0|`ivUxDAm6@S19R)O_kE4YF%I3~gM zno0JzC~jn8qfUUJNprE>q~q@c`(k6KK-uN0Su5CyKB$RujGKsegA6HQzu7k^;8VYW zkVCx{OX#%j>M4yHJ#@M82QD|>7|0=j)5fZt0771GZD2V$TwNw2Pi2C-Y7`F|SCM;Z zmp-IgO^z#BRw;poL zwv40#S^V4h2>t^u5fGjtPz4&mG=lcJwS_P!U^r4AB!4ns%s-E^3AoQe0wpDg6`((Y zT5+sYhC>{Ql@Jh6XV7V7V#FjGf&U9JaNcoID^pvY=A_Jzm}2MoE!vzN4`n{5R4xp- zt&Vgvw5gOAl62XS@ygs~<>i{|_Zan(?Z@Ep%BY&6N?t`L-aR;iV^6kE4d;-i%?Xph z>JE%|tbdXnuI)=w6xkZoRKGXB7^d%ey}+B4{m#)Ro@5IRX?D|-Pke#tO;(jeKh3#` zcG+rjvla0E&6_u?WYW!9br$oE9cBxE%YPIP2-xDA@mqKpWC0EUaUM?`$zzjx5|x4k zM(BuySP%~4z~Hw8Vg7>Ew^HeH%u3_$5v4tBxqp?vKVj8ABDZDS2&09UeqRSqG-ofe z!yD^k0cas&o-w;&kfET`^aT;`^~cDzT&}y?3p0KJx$=gb$F2YfB*!=5w{QW-0-d66 zyDUgH+EW}o@m)hf_`jpw-Xt%6n$(20&rUriR^-_BmlA=WBAHRU<8(pn5bMF!Q!}zQ z&3}L}J-xzrk9hqBXSyd#Yk*6|@9}GEI^nlAJAQApimJ@#vE7E|Zy?&MT#~+_ioZ(K zanni}^}Hd29?h6fs^1dSBnN}!u8~#zQ6a*@#-G5u@DOkkPt2{=Ped#oWVk1Ws0a^I zGE7GtV|@f&+BA4lXT>@@W1*ZGd`?aYp?_xFv2<#+&dh)J_PzD+=AQ5(KfI+OmY;str*Tkvo35D0;C(45e{bP7sv zD+DByzT7L*7s6ly;!J_`WU88b;#;Fzvx}~5bXNOnry5t)hPBC3|81fIKwCHxuYczr zNmoCmkSdVY=62#V<$i(Ea4bPt7|xH~Qwx9678rKI)3vdjB^4ZW|EaD(>riLY29LGW zXgEfA3)p7G{CgRWq%_ke-9rjJx;k+ZJy%@Xob%jaKmm7r1mA>*fErkVONeo~)eZxR zZ4q})^o}Mqc*Nn9>98Z>_!ZLfA%E!e!JBLNW{6k@57)rkTeG(r;Gx=>2F>Gd_W2;Z zlHY(jAkVKt{2kL+hLY6P!hgP3P&&)@-fgk2>(Ozz;kbZquf&hx`5;J;tIL~qTs;Ue z42C5{mxlT zm8G@JYG^M0X@}dOWwL(0R(tA5Mn+JXlMbtTmc3H#vzdBUO`&}B3xD}pc5Pix$RANr zXk9qVQaDHJR6kx^(iC|75KsVjycfTQrvfF=fj|O5s{>778fXVI0N@1Yj27q}oMe<@ z1{3T=$3*$&AW^MJEuzsmB9g?Pp!hgiW{`zAAC!fjS1M75Qn_-^O7G(BY5YCuhRu&5 z-Sj=^b%cDr6%rhKUVkC$@%hM6zXYKorF@a^(r?P)wZ)F5T6m^Bma+%_iq97Ro_;v# zXD!NK$p4{uLKc5edavc|*|TTqmV!oG1+=wc7K4=}CMDo) zV-s>TZZh5=EGJ`ibR>7IIcS4arW1LT14928Yi@vc=v8!c@a8OV@<1~X-O%A4{^$^tj7EjC(i%&rJ)Q_9Lwh5_+CeSLj> zd*{xb3v&W{3%ZUR!JRXG$5JJW4G z|0Ic+{#byI*3p7hq~j6(8k(GId;*%NKS9L3U2q4M)PlnvE3|-5Xxfi~U-L&cTZw{9Yyl_tJjh#(N=WFOcE z4qncl`~hEk0w6i5i4w8t%RU2=znVo-}xT%LwpDwVpw!Gzk;hNupRSf zW1Q_jhFvadir?JX&X%dW8 zUE(cW_197SqZcKbW$R%&xyU~*K5b^%%#w1-<-&!8HkHTPX?taUp5F9$S4*I6&a3cm zD1RdZT~$Fi9u-%Sa_leFnMRoH#87iD%E-Vw$!4$nsG*@hExEb{XJn9&^iHxrnrvV> zkB@;$)SZ!m$c?u;Z*{Jzte~ih$~B37d*l4Hj4@lPHPk9drrVcS`_( zGM0l;9GMuA8*O2Y-XK~fET`vEVG8s?A%AjA>(XQlCu6yULl-ruX;J(VB!L!)BXBb1 zl5iJEZ1Z?YPYJ){1-KTWwS?7vyXaPxK&X-_!U}|-+De-sOiCK8)G65Kj5#I4#s9WC zOZyFU>$wr763$d9MyP-*TWxUAi%#aJ_Y6kc1>A4rRX(;cC*LWOLt!Z8-H7f z$8@fWFq^B+5$}rE8PlY4y9JnKB=z0repDa+TJWc_<#<+A0= zm+|L|H0ppSC5b{08#57kRwS@Hz~8uYC*g+l#1G+Tu!&ec2BBqy29!C*Fn1z$FT+vZ zYs^Tdyj~1ZIQDmu5s$hWVlSm@P=C4EOX(b}h03w5kd>NfcuixIL{e4`&4d`w2RQzy z(G6YZqXzh}%?~he#t-3@xB;+&CQP86qY$SflIRrOWJg@59c2I!SubN)B5)?p8=1}# zf#12^_)X&a!pygnO8ALN^-E~B_!lS~)^6F`Ty?hHWhwrw>J=p=;Vo5vo_|}k!nly! z{wkckf}pn-u4>gXLqLnPNVz7M~G2SElX04<;$%n~BzLIg=~&`%B_!O4E*Q~XP#7K+<#(Lg&!r0fJ-mrkA^~| z7z$yALGVMwFc`+p!0jb@?G9)YZ;Ne5a3nKpgo12IV`rG>e*?cXoAL2stHz$>^d_%f z0=;xvZ`)efN}!cx;pwdeUCHMtip!5gC@K=UFH%s)l9PPouUnk5?tjna1EtkH&=xI- z761wu<9qO1cn~-QoO^bH_ojC1q^Zyf3G*ivCRluIm|;1YS_>yt-yj0vIx(!w2yx|z zI>d6chM-%r5*Xn|fqe88iACtuiuPy)MH}4Hm6?$|r&NwwiWhH*oq}f?b9x*wOAKc4 z#jU2ns&l)Tg7R>g&VSIoAyaX@&2$mMXw;fj9(eoQxpU_>l0HVwI9IJZrJq+g#95^& ztPLe4F|O>=9_5QL_E9x<7Zf)5u+fC)X7ERBPep=(=`$Fb_STgeGLgK;z)#=(vsw$R zy0BK?>mQ1Q0E&MVzYaf!D}kFZ95tf~Hl&y7ZAhwPTw^A`n17SN(i(@1jT-a`7a*Zj zh<4G9=jhxbdaTdfdCDk$P@!EHT-LuQb!gh=eb8g7 zfksgjkeSbq-VfbwU%oIW24*{U!e~KT&kKzX40_(wMu>G(_&_w@RrHak01Qkhw$@n)mjZ-Tco zEWTQFr>^N0-KpN0V$#jbW8(3#M)7(BW*G$EjF5R0d4F?Qyf}Qb_(L~Cc<9ifL+B3T zR`H)abnUe=xjjpY<;FF$%Z;k4p&3h4Tgrx3L36B~qBxFtU^9sK)keP1OAdvSh`j72 z#p~KgYXs)%J|-d{bD0o1!B&`7>qJ%u|zooC8kLv%a^27re|*c zsY8d*j;4x&+Ufkygb1hIhWX#=a>G3p0guXzD01=@ih4!3aNj*)W?D-I>hDigXcbjo z9PhmbNP#rI9>0%sg`9m36oRQ><`~mDGBHlf>VJNWa;*`AV4|}mI$EOyQDO9HM7o6_ zf#CaBVw{@?{XCzWi*ar)T$-1Q@kl4x=H_*pJ&P0$Ye(vzW*7Bal}dPvO39ywX8u!X zf-&B~hD)g|FJ7tltnSZqdTLj*UX6RO*?pD-Jo~W-MdN;Q^t{_h!+?vxW%q6JUkRfZ zE`MCO0GWY-BLf3+L)x@Dex0aZAh*n{9M}U}wW%9=>{eT9)nG2MTP5+u_(_}#vOpoI z2eZKf0N~|>7g}%7hom|oO=dEFpqY?aAe>KyV~Gg{t?WOy5?VsE=0Y(5ywH}nb&1A! z?YhqP9Pglp*=A3bc)V$;)}=dLZfQnCMSoGaAlRB}AEwpadF{D#Rn}=0NiKIf|FxA4 zOd-*P1v+|oRZdqjybgsm?T!+LmKK;HI~@Ca_sfC?J9F?YwzgjRO0TEjX_+j zq`Degy0WXw`=btZ$#wM)tOJXn)Qi zE6XK2Jstz(bZP;r6KoEUlG1EHbfMd59S z`Pa2+FfBtOM>?CwAxTS8@;}S7x}>Xjr@3$0hY5LHG1vQfdvDSF&e*S~$)?L^yq;5C zxg&B#6_WC^_|Il*%}B2^oy|a>o7FNqQ`b}NGfrO%Pm0JQe>;@JLG^D}4u5fr*7AjC z?x&u;2LO5ev-o=aciaW6zzYIk4(J8_U>(>Zpp4_;Dk7`|4_-)r5cr#-F-Wo|M6VT& zx>SyY^*5T;Ng#poIJgJ`jG`kjF^Wf#fAVnQX{aP8k8;sCUGNNf&dkCYQ}~fwSAPW)L|YKb%DPR0F<<@Lx`KJsV9>+=T#SvMs?1xKe4AKq zwmJ-R+m)ZL?KpmDgGP2QfTFVy7>N8sSB#b+BcMEPr5a!LY>T zPf{r~nFqTzol(%ur+?7TqWhw;zEcpwWBe~%Mg|5Ml1TC|{{0)A)QW$@qSq+uHKH5_ zZ=Y85U`RfkbkI;v2&V@I9gg(U6!hK=> zcTk$`4-n?kO@2R=`m=A5m{d77JL9kCIw3N8q$;RYD%aIFEmhmsw-rjWvIXiz10h)q z-+boG&BKIX(SJ}5UmYGE9?I(NMRVb|D^_@)x}I$8xg)v!FDyohTnJ=+nSzX)OE8mdG07wQY@h$jcTr4n=NEXyW zuoSEW>%b;(*C=B_I}yB#1VcZ-SouM&5|*(Xn;<(x5`W*Oodmm@bhZSN(;DIyh<{q0 zIJ*B+CowD5V*@MvDpyNkaPHa=j*HVQ*$0 zmm>9h=eSm;5R9t{X*H+;YP6^W^*a_ilJ$DTKfWN~-n(`e^p+tv$?&hAO89V7>q+iV?CnOgMa&)26vK!4(@$j? zmhLIqy#%26rTB9ETU-oG1YP)k$ZA3wgD|RogeV;446;cS6RC_r5BDY*!pR~jxR>$F zSARGxP07iz@jAKMsvh+PTgF|1=tjdl7t|=x4cw_ZW?1FwiVj#0vl1T4#G&f zL*Oaqii$K>nDr(mQpI1@r&GXu2L&}@I7Mx-g@FX<;|uYxaf84_a)T_eC{feVX%XcN zoEUNuSPK%7o$rXUoP=QsF*OCsq`L31qJM>aE?P(mpAa%0XEe|$kY*_^idyao2H}QX zN%k4%3QMQh47ICP+-#FMr>N)`KBsay(8ZABHZn^J~nu7IzIahq3Qw^-nB z&NBr=a+|Fqjejl?+nMr$Sa<=#~>Qt5n9a9(c3J`vX0_j(n7 z9>Na(9PHwM{%^m3xNS=8!GGBuWdY*F1-qN*FN zUrXGyO-L%UneA$J?SV3Na(e&z94(`@=`+wK;=rxt->Go^dLK%LsA=<3{)zv(Ii*5t zzK`=kWQ@hTd{kfRC+GE&{P6$C>BRzjcTD~1B>x*D@jZdMdlVAtt$&TR`xaaEGOst? z2)jf_cc@cr?9LhD@r+%$H<$L7s%{~l*w?e$OU0%vC5~XCDPdWpP-e9@>$Ccju+fM} z=3{j=JXcd}#y{CUw@*GahcxX`f&5E0XVEG4gy+&P&z}AD(WB2EJ-X|^ZbvH7j@_VG zh^B56SqN0iB=&W5FPq#IY1D6iisN|J4{3niSm@ zwK`}`_>OBONtVpYv;$I#vhTroPhZ7IMTK5N=s*`CiLRhKYfIboP>9R$d1C10LREgJ z`J3!NjEuxeX0{fK46R}kZdi`c^0~5sl5m0CYHieed*nz_J%1-fURf9WVnMcxf+{b3 zMNUz(NI<6JpW*PgsDl(|@daX}2L5daeN6Sb7<54$*^3N3Tz&6U2F+iF8W-k2!Fk$i0m1 zuE$*p+|`jnaLKQ3+ft$PmhZTsCSWc-ap4jOw>L*q}(5s_$2}dO314B(mWEyv3kqdW;kbiKhhrAW~d`bGx35R8sw5)XS z4rlV|CHtOs7St~c%&e?8Tbxe+95>(h#W|7o_?Ox<5GqmwziPH9Q6w)QzfB^MB4+I& z30~Y!7NOYmr{1+bqc>~!ZN^B3Or!U7t-7%!Y{9!XP}C~;5@EpbBSnyZdLx&%Jf|W} z+tdEyaDRIGt7PS=_%i%4E+QE{pcX6?WR94wGDam|9qI^q- zcu&VkNs`r6lLosTtlB`mlb46_KvG-hL7Qq<`+w|HNv6}CP3bl+)8lS)1yGiyh;sGK z%9=ZHXR3VDL8Cmh;wW?x!Mz`8)8{tY6`LN}tW{~I&knTIaWz3igwcK?oA@Ud=C~=C zf*bzJ0R*HVDZUJUg55&)NCXssZZLmhmQ;{aCmME)zCeabf)PqmrgU07DJ|;1ZO}&; zH-CQWghZQ{M`Uqc?rl|fiJ0ZTlT%Xzt)%SF?xb3)o*|zZOCYi{YCZLOZUE!Hr0H$@ ztg3C(XB!~N5U^l1Ddp=1Cua! z2`_EpiW=d`t8av)qaeoj8S2YcYj(pKh2q>%@zQmOrV$(weg2V~6|&+gvwwqD z8GlJG&&jB&S!P%DHg~Pb$in3{@VZ?2HZy;8b~|0LF*n=d%F|ll={|U7csOJ*AcFi9 zSCmr}XIuDpES|t~iM_iR1}Unvq;{%Z>zi8M+8QCZ268DXHz1I5>gtULqN!zbKHDp!s1G2fT^L@~WZOunJLfBknyu#u-(+oi;q6{ud$P^atbZPvGbbm9 zeZJ8FAGA7Cb@*{YKbe_S-?+u3TwOnXzdYkmQ)QYtPft7Q?OxC)5TzP>X z-kx7oQd{INsV|&b4&q224u&bO2fr5zB6%qEDfW0N_$VRUy(+Sq&wrXsvuboInx0Xt zMHz&Nmm!(Ez+YX?zb=yfVfDU)CfVWxdBKu_Zf4%_3vKm*rWp@Rs}9w-^Z#QqNaacI ziH6LpE_pIJcEJb46MU!0Q@j%Y8ZQ7Il4a{wi`k9Q^y0|?fk2v`KySiABcZ4H-x)7# z$jH0;{^t|qhx^4n-+ztZT)Te_S#>V$k^1)N%qA6VJoT3!(6P>jl9pLO0+jJ}_+#86Uv{g8$u%xcf7>(*HPSAS<^D7?O8Lw)t74@|*g zI`0_9T=Z{IVuVDu-08?!oMg9kspla&r#ZJL+Elb^N$JvU)2fT>+iq35yf+U0_8PnF z;)%|g3Y0Z6t26evmCCE=J`TO4M@i=`Hg(;6x+nMb5aWqdO} ziQPai@NbFl9e)JC9dT$yiz9+1-_Q1h5rH1$7l!HA zqmkI!5M1`g>*&J^=-mAud=Pn0$jaV=AH;4@D4@q6k$)BG_};1$^jJWQ(CElPluZ=H zvrd}SOeY~uFH?;+SM%)|#!Lrl&kPMIoVFP$2U?zQnFWpQP3t*l=GAQEx?e)$ua{Ue zSM?v0nvS$*yY&Y6H$FxDgIB?0{BV9sa?sBoa_jvPk`$xNfc`%&^QHJ`g)6_iw4$ou zbf%9sZGUIHgPc1vFu)bRFfT7J)K5J5%ynkN!dbXa>(gQn-qeK#9!mO{P*(oPTt9f4<8Q9+}psplZqoo$xkzf?p7N zX+bC)8Uzwh6yJ(J5aJxoiEK)N_h^`~yqe>CJc1uvP)It#(3OrZl{l7toEU@XCT<7! z8~(2e{3;dmUx>x)7K!^s6vI&a#q$0~#C-(&#e$#nWO)=$TU&bUU^C2|x>fiLg+{_( zLw}0QrSdW|o32GB6G|5aWjacnz-8s+8vjXFNFpUsWK|tWku8MtFI@`7L{`8S{1)bf zn0cu%!wdqxz~Tg={vYxuCJb_Q#9@#`90v3WzZXG?$AgiicdgcQelX3e`-MmWc+;Zt z`qTArpBVDt=USZb4y$*WP&a-Tf}8j~P=B^{VSNK7X{d+u*G%*3mhI0d$|sSX=1`g} z5+Ou@VlMV+wwV#~D^lUs<;!ncuz-wOOMD4_6t@D2kh?yg_-G_};~r0F6ZO^Ph*n}v z5U2}r8d4%F%ZN%ouverUVBYNEjB#1p0@FS%^_UN99W1Xn5@YLJH^aF z{=M?b0l19>`+e=F$w*J=k|*d)Hxy>HCKg(JcZf-`!q8v-63a2>*jvhK){E=6EZR_M zQHAWbAsda&CIn%W5U`@iWX3hQ6#_PVAAWxp*8>&M2)U~Dm#v-_bWdbMMBGA4jOTVR zlNv%;ig!Z0;b#THSX7+j=!I~sS*b+DDkYypGV0;Q*n%Y6xiuD_`g4&W19Ko*>jOeA zu?FFXryun`e3-0slHa&Zo0#jf1?mGmckYp%p1b|VoDKt{CbcUnqNt)GQn&WSrHg+W z>qU*eBp97TBKQA}4+!&JEyVeTgf)V=$%5*#j0AGhz>O}iL2i^q^rZG;Y_9}yKaBMd zYbpT8%qe`bdqML46RGs4tE!6~?xwck9=<6d17?Z)Zw;C08}`s)mxEopwtuC@{p8}` zrX_XL`-=LDVh@>obXQSEwJ0DvDHnfDZN_-Bxj3&l!)T&t7gc+BLAPRLnm1$Rfv&#H z^d&QU7NUno)oWUc;Vh)4R%EEpY+2C2YB%kc zmC3dmS^{TS@Ku{v?$g=#t>ALJAw6B#nd@*HjIf}3*t0$MCx*o77<_HpS(1x(4QUk7?9FqHdHg;inPHtMq4@`EKA@sH4CYsp|Gfprx8wJ5!`RA^Ltrsj4z3eWV0Kd0-k4z?Wew_(F5!RV8X{wxM0Z@a z;^bs9R7giBLff3U*Ny?kkfF)ozieS6f^AOl9q{`YFETOx$u@I~ihqm%n6nU?^?$H- z9q?@x_y66UmNjhcWv!?6G%U%MEXhN%y!VLhI3980EGKsMb`ldin@o~G7zqg^VI(Qg z5_U_=Dw|Sh%PO?Ar7eH6gSHfC8$JI&_nzdH(89kpAHRD;Hu2rP8^7Oolx@AstDr`}pJPf6baTYt~3_Z*QgclkV>A?d`NczU8)kI1aj!{hcfE`7-4w)k>dA zg-fdn8wnwS#zxVvQ6=+kxQQskQej(c*X3_Wcv_xOH7-V|V6M|xJjX<&Vp3Ftr=eKj z0TXn6{@G0I1f5B2& zzVOmbV)2+t6=EqW zjjeN5Q@Ew)J8J31Zi|BKp7RV)sUTFTz)ws{C-mC+Tm*l%YH?&jiyBs~>c?$_+ogZi zs(1VQz5DPN{q3*U4qO6_ji8?)tUT1jsGV#f2uFI^5(k%ysb2OrU`^F2$RIzU(u87^ zngyw^`!ax+*{*#WJ|q^`GX30_Qw(qy2B+E1-^>Q|n;XUA$H7zV#i@>O8M!kL=bEqY z6FNJu&mMmOA^K$yYB){vvpuDSc~>KJ7|X2gL}(}3Q&xn@@EZGOTqk02^yU*AFkPY; zuda&OBW6@=IB|0e{={{vY$|hgd-Jf)qm&HRfZela@0>mR+Z#5}m0z!t2@!$DcB5BN zCBqo9PD9TOrt#YBCWu8-VlLXaq9l_MWfkkG2t$7|QcN9kR2WV3^(y!mHXDMRQhF;u zVlmhx7Si)eK_=!?15tu@g6$^KWL4|QEY~ZEhLT6mo-IB59zIlk0g?edRU8S7LbwNK zNrw>{Hg}XnI1UF=lMFNlWY9x}M)1Jw*|TTgHr!ZR#^FT#gTw6~DvexyqMnm^{Nr;m+wSxqe>z`RHZn6czj<%EG1SE>xd!ZD&h>o z2?$YBy6iOlUnX{=ai*nh718{0EgSy0Kqfnou-)lI$myJUi%58?tJN1PMOG^(IyciW zx2@r2D~YsZoxmVh+OuAz|7s->$ovVA>-G62i7dX*5Oe3RSE?j>YK*Yiz$$R`+H0?+ z&Bu-%J4Wx(*duwKbqH<2h=)}Wt}-?j7kw;Cse8+E1(KhO6ctA$tbA~%d<&vx)C}YWCbiEn<*;!+ShAitT*>V^ahe)rKqX8EUEQPXu6?=Y?^OIJf6&D zaU>p0-2NT?8VeSIqijik{t|og63Bmzb5m#$&|Qz0|Mm1a_-YzKLca|0@iZHw#r*#g z!prRJYl&v88Uw;lw@*1 zp(ts?V=Mj>3JU7wH=fMMD2~*7_;Q(dbCwKplONcsSWb77837BVG?fJwoY#M%6%8Ae z_U54~i(RD$&qe9&H|RfIy6mSi`cmJja8Be&8U6Z+?0@+S!5p&*-4mTvp;vK%&Y#Ia z8Ddx7?{Hr0B`ufxTd>+}LW`GMB$dZEsIxrOlXo9Hc=y)Dm35YT?rEwbAkj89j9x(X zgpE;yx`G1d_$oB@N3s|NnL~fW!yXVe^gQ8Dm8zPxjgV#BZdGs-j8?d!m+E++h_?vv4~&pB%BiFsi}*BO09okRRU5L2+Ta@ zU>@;cTE3FS{==X@Fjr)=bO?q2z#ZuYv)9=^!$8{Ps+*dY$1C0H72hwVGjSJuT5xv6 z>Rx|Rxgid&t859k*JhRJvl*RJfg}g!nJuVtX^&%WuSxAys!!~lndi!Kmi_jyh9uE> z`u9D?tm@w#0HC=tUekY$`(ftTKJ+uj<-kvbn8-sFvtLiKpvJ`j@h-s;X5(ZsbyUfp z#P{NpYE1-h$AChE6nrX?Vl?c>oe9jcZyCPR#67p~`llq>-#gM*CIwr*bnR7G&w9Ol zkZ%fL`OJA4R(hqO@vGr#c>@2u0UK?&K1tGHu-93NWCo_3e8?MT9ThY2j z2f<6%pWJ4YYyfh^4+Y*ZYn>2FPzoL!YVM$)*230T0Z`Gq!F73igO6*!MNBsI8e(?{f}YO=X3pl9GQ?t9Z-j^)1d4zED8VH3!J* zN^_?=cXjSae%x0UrQjJhD3UC#(CI-AiGbpI41WaSRIucwG6_^DVHMoe*aZjyAspL^9z#XrZ0my5_t!7~6;5L198in2Bbhjabb@ zOD;nWrJ6GxX-hp~b|#Fu5F49H6}Ts)sQ6SAM?qAfa5~A8UZOGiy;Ky6hgep}LpYgC zFJLpw4K*b*l^dM_lT{U-?V;;MBG4}u(HGdKyTq+ubf}AX8NnQ_DbOa<4ydz>3S)nB zY_i5e`sGli*|DT-abBlEl=-`4hssmo3}d=Nlg^~bS^z+GJZ7|L%n!LurDl&Im4e=3 zJuWI)C>IB2ejn>K!zz691(FO(9k5lUiMsH4%-tdinfNTWK{t zxN8?(V&Xh}s4M&yw-!cK2={h(OC&S6XLpPeT=f{5#Miy{3 zm66AUX)rAhzb7ciU$o-*u*|#p=piOI8lwm2DCszRYAJIg0aCyiQUYZCoI6 zotlv&Tg2mm2P9(pD9E8-173g+mwwq&w;Q3|1+1~jd3LM_;OJDW8Qy<18shxrBP|Is z4726%sGL(!{87uUP>t0icWtU{IS4cd>5u3S!PxNdxzW+Pwr-^#`%l%uCA4F^&|##X z#5zecO;V#@7)>$F2$L$Mj0}^EED2L`Rj|VG!1QucuTkM_jDUi~i z){TK$wj{3NavSPD9DRSF(uPVO-U0q{iLPN*YaEb~6?y8zdax2}v;6k4#~uSeATkK~ z*nQ{?)WGBd77&Y59F2`QhH|BxfZ~e!e-kH{JxXOwCRQen2`o7oe4439H;Vto`0|*s(*jH;Kieu_XYaS^phu9 zEc6q|;eY^W7P0pi(H{YVJsl&!CNDkrH{iXBp98~h=wJN&=jE@x_S$RNIz7T|86FuO z9RcmB!K@HtIr7I35!}*&0EZI@EW$CYK9G-#!Y4{fN=m#11qI-D`JMfUk|BgT zt;4u5p5LXlt1^mQ^!#(r!4*L>snPoNWM`~5UXOJG@80|(%#Z#$r9PN}Gk+K>a2^E- zZVD}(!YqF(Y~w1oY{+7qTBN$NVMRJ!dw+RzytQ)qZ%TWW*)_jrB)pYaDj$kpf$)_K7)Ni$5G$ zIe)1LcDE%r1}!9`qc6zx0^7g-75*2&XiPrByn%mdmEz)Q>jg9ca&t~G|5Amp3nY_Y z50mL{%~T7>rQlce+w3WDvU#>DcG{r7_qSz{59syaAiV(`NPSDN&NMcET-t@X<-t4- zCzyvR5nag}z$=SGp%eZ6#}_R+iL=bFSTHSE+_mJh~{8pPwh*?e8{v z+SG8~=5<-TXy}(Z9m1cSODb-0pD<|xcpDZ)0sQpNpxb&cM}nIQTu0PJ=S<+QQs56{YrUJ;y-nHlMEsiydTG_18>XcesU%K4m{R{SJ*)5{g#+>yP5ms61 zyKK6nxb^#qIRIE~C|miXxpRMw8V%Ixu-F-}1icnfTbE<@q6G(MghZU;!h;JIch7T- z@bN^v0#Co&@Y$Bzw~gGn1#SY(E0n&RUH_q;IfQa-3wje7m~5R3JF7XS`nGB=i^?jq zQt5DT=(kcH19zkhKz_8H6qO znAk-eWi;@xR{vz5({L7`7^ngokKMDJ18T}W++|V^P&h%%Lk z)i$w++?%f#@#OrleS@8&F-Uy-@@`-=!Z$$Q0XBAY;6|2T`$qB@>{vOfII@&pn58`N zG*7*K^X(PjNE@|T1FkDidV!k5={R2=%#*>2a#4nY7v3ALA1HrlEOZyu7SYcb)}qXR71kHhFMXT6c`jaG*qG0y#Lf1iOt9olF(1kFnR=y6r9w`qRzZWd7)O+f zaNhWL04VZI343mnSznh+s!U<;{@h5lW&Z+#@pgWiQ8UsIM#4KS4-g`wENg-x3$k&` zD_I6l$pe6Ol(T&dB)SpbM9A2Y74yvhvzibJ=_Q>os!Fizi6TvOao!cTRep0>XY zW%2&}*v$5yJ&^PC?_nTyAI+>QXzs%P0$^+#<3buI<`PSYwZs-;FLBNI_@2fVq%HDf zq01FsnROIzN-$D^N0=+v6h_l34(!~Z$;3)*nUL?~V`YC4KcJ!}Ff|v>B9M{VZbwa6 z(XI z1t+$D-{#H=3HdgMPg>Nd$kEs9{cqu!^x-@_wdOq>JW7QsBJN?F(s}!BHnsEio2e8J zbQ<$uiYR}TTS@;&=M>5UP6?l*{^#4}(8uAZRI4h=5h|~!*vtynZLVOimF3B2a!IK2 zxqV*nD-pN$Ssx`9{-*Yivc~J{H4Vo>Gdp}i{_IxgEF4lGbYq(s9b_&+5k*8R&aGd`otOYFGv?I?`bwg-PZ8wTkQS%MAFVj^D~OP_4>`Z_V5 zRz?>)9H_iSWE|KRv)DX!pr53~%9M27{-VlwZgsd$Wm`wzWOgXDKW2AyJMwBGSyWk* z#?e(#+|dwi?pguLF>i#0Z!rv#voVbpFY~iHv0%ktqi(A@cyx_IGN*<9aTQu8<_3JY z4Yq$6b}HsJ>V#|WlV;@lF_7S}>NIEBJhfoS9s&{BV_VQ`3^rgM)_91f_otU{RKp?V zbiVTx5%x)-8(c}>urj}!((?NWEliy?z0IDyUGXQjQvL+m*gF@Fu;mdWwNyl!W@gbp z-4xyu0`_lMvp3_pa50_~=i}W|I2sM(a{hn#?I#>M8}Qo@5bN*R8XC=mcVuuKcBoLm z1?mB5LtH7CeMl^D+JRgF*2qRtN28qAwhX(fj18eTP&wgFF`5dA87#VPa$IAQlka6x z8dTWEN2y2;BTxGcyXFt=cJ!HQv_oL6UaftF9R=PQ5Q|~1Sk(0c_WB3qpMWLcZa{yx zgS+XO;O^Pqu==*)mo{FtO5@fDTJmvU>wMtB2OsFfXYq==J3GO#($azQ^1;$lm?`8? z4m>$5(kzoUl_&*sk4glT17{UB$aZkLn&rHiEAfb{7#l&)A{QY_p>8XPImCvk=n4Ln z+>ocf=BfRXN(sVTcF%x4^_=7NGo^ppSPsY3YGla`u)=Of;9wd31)%LVR6ZoP6fcSQ zu|bt(m?Klfo)>9r;st>)%%DF9!t^(2m?^7vgq7BrYKwy-{?zTpHUk@d9xB;jaqvWU zu{Y|A3!3y5=H47}_P*^1m6d}BlP^@-^!W6ZrOS+x;Er|pwZ-Zc#l;u})S-W^YRQR5 zo-7A5*MQY0)~%z~fRAU-(9S6{h!@_L0eoKEgL8cWkRjqY?D(Q9cdfdr&)`tCF#NHt z=vkCUs2Cr*T%tbhnS*P1GB#hP1P&QFRWfi~B+&7d)p>cZOjYMC7~@lFpaw-2W1IB* z$@jo&`ezsX`CUy#lxNvdy{LculTSYR1Kj`rs6y=CsfaQ?kb70TwQRycFN066VHrG_qt`_~!BV!{ZydiOj zuOJw{`BwB06GJf*Hi9C2MEiIgWlFw(e0GUO!s+Z4tCPgAgkS=&x=epu*0ePoj52Kh zOo$=1@V=V%qFMDL^pl@BF8I>ifU3KY0)WFHSSN% zJc_^o?nzHq&_4v=YCK-i@37<6>TTG}BjDeL5lcteG3)5sfPsI03Y5^{#(3k5CV%rS zO$ANQ+1;Lj9`ZtNnhdbfWVPqsg%?~a?nPjz_h zp@ZMYhe~!Du4HaJ|Cmj4yXGC)IoZdG`xP)#omH`MsnuHPJnbytlz0T0EjzegDBg5P zE|&?57SAz(I3a%+`{&qh^eze$B0`tS{uL1=lf0|O>u_SV7o7kIPiVrU|4;3C?G6ME zSI}Pq;K#Lfh^@Rs{s$cL(*r$6HB?csIWDDKd_f>m6{f!c8FX)Lab07BxBkZZNd040 zmupd{>5RW@d6`pBe<4z2HO&1!kO|w0`5e1fS5~MR^)Y{y_ec6riyI_U3pY`gz2~L3 zw^_4-MYGSgNVr<{in4b4t(WBAxB`icv44);h~7mwkBGe$D;Q*BH!+9xHNCv=O{T!2 ziQsXB`ik=@JCY#yhEx8erowBX{|`?3BN_!tJsfx@T;$Q{F^1 zMLBeRoqK;BE?>MXNI9GxE#MU>mI1v!I#`PtbwN5&kp9R>O_P>Oyi}EmoUtfooyJA;;(9rERY&mr*-&@a*M^P@B$gnX zn_V`q&Z#@a6`Bo=ncoqM-B?n67Fs&rU>}HD`3R8U?;fU3*EWkks_tFU@E!;Bl;OZAnD2$patpw8(@Z?`>y2sH!Mbu2+Qv z`h^u)w#dS8^f&WzY#fkj2E%7>qoW!PT=iVcAkABps0Anc`vrUf|3H5~E&axoFB<#j z*aGwmRL4YdlqtL~ekO|`rFnyO&+eHN#4ZmaP|Z@fQl)BQsz&#dmg2&5U!Q69(Y(!_rw ziXqRnm4(H{HM{ky1rbuKtSEfqi6@=_zfdXxP%2>^KGfroMli_X1cUgj9x9cfZf9fT zn&#$p4GjmsaXaw{-Pl3&0cs@7M1q)=LbnoJoXJYrHnDEksp)cji>e;Cb-L1XtbvdU zMR3!a>>7218SYp!N;Z@()5GV?&D`2ww3775?FVgl=AVLJgG|7` zQaE~ig(PDwB__RiGDdbstznCl30*Oep%bA^!~PLkZzPxejIZz63E#mJ#-)GYiDR)` zrHW-6L~?VVIEbequQ!@5U&dUKzHeh~xJB#?wdgw!?S_!D7wtvJq;2QeU}yle%?`x%y}+mCN2wg>f#;yx@gaGfi34tAYK_IpFPO*?g;Q~xbYdLG`b{9jQ~4o7rDc^25+H?*XQ13E zGs~$|268HuL4A@%et3TX7da^eveKlwKjk;%?P@htj&xB8N?pDEg$!T!-P;t+&p%)D zIC$9QLiDe(D&20DpScGxO0U4mmS@?!XTkR|Jmm8jjyJ|W$9RzWF=w8|g8~U}Wn)Xl zR(n9jt6EnPe)7pDp9IxhZYYqKhmXiYGTelCA$vrm1?3TZLOy@CfzcfeFfjy-gI`Xp zVb+Mzd`7w>l}FO>FDH$u(?+JGnhi?hp_$2Uuz8c{Q~*6W6-TdD;DsgWqRSK z!KthjOA9@YK%}LZG=JxCG*r+bvov*+R)g ziZFGPejh+w9%Fx3n#TadOHe&iTx9QE1ZDK!fr$Pch&MMj1xgAN!C?+(UqyvUp_ZQ* zHt}ZMdQjKyS`jR6uQX>B9a@sfbx}iedh^tjOh^AQs0R&oiD*UB3z2P+41{vsI0l;Q z#_P`fd=95Dz#cLD#FzZ?#Pgnb3}>#xe8;Y9W8>8Ps=IN?-Syl)5g%8Hk3l z5$x1d^F-=$+=Pe$E<|~JtTODFB*n|)JE*9}p~6T6D%ESpQ5{UTy;7rurp~=eFzOHX zFVDz)>>2v+A`uYL&tX-L94{yYjEo1UVqIbAM}b-_t{z0-SVW|IZlaQLt%KRZBr6Pr&Pl%yV7?lsY9H0q4U<6s5`<6(b&7q1&jvE=4*IC+6QoM6wzvV$IG zv^dJ}m=+MD#BRKr!Rn<7CBFm&KuE^SozX}*nle44!ZwY1e9J_k)W|w%Jk>byg2kqa zMxsi*5anqmreFLEoKe0Lg>BL4xxn!lGHVcwrEb7y^OwT1^4S3XRi5SJLnu+3l_;xY z9$bF`z{#h66sz7G@cFnt-wKW-BXdh8UuLwJMDpAG zdJ|_h_~0Siay$q>!T!iH{apt45|PE&DSAOH22zRWNBaTzW5#@X!-)l%i(-fAUn{Z! zFH_pB;%t+5eLlZ+N47(4(UbhCzE--~-)MB6v z$b^-KY)g?uN0Rr9&B zD@%o{gVQK{|3Mi2sYg<>_IC2{=EXC{xm8|+6NDTb36iDUb#MK8%J7@eJ1Cb>6Lw+-v4B{K z5$O{hftrYuP5awe>S!wbI8{7matH)lZvOjvK>3^Tn>H6G7Z!N^vxKCnU3MeBRl?>Q zN^mX$c&$l>Ia3}(Bo_R4>=uEI})9L)EPHOJ_ij5dD(j)(LsZA-dxOt!>g zt3yWiR9g^uGp(mjXENyoY!Qn@se9H7IMLAGv(Q}_p;Ogmy>%ri-nF-=4L{n7ow@yf z?+UNzKi4TB)MMMwYp9->LlE5XR6nvSf#s&7d8TWvPQbw!B8Ls*_1UB?@UMR#7FZr# zn(cm_1@i#UMRwl5m@@hMGeDFRfy~tG|JN7T&%FRjQ|O=f?Y{O#ovC7Q={+{db#KHq z(c(vyj@t`J3HeHgJI54VpwGcbpye0`vXVk=$A~yY=E71@41SNm|ca(lb=dNPw!--W;@RZ-rNCpR_u9UJ9uW#o{znC(NKO~ z6svI*lpCBc^;{hcLKqCbM|Br^O*5jKBiTAV#Ix(YI4pMVSHJqzug-trvwPuH*o543 z>#et1nuFsatCWGuBNf~N6=(d!U~@^30`J9bzvzwY#d?{L&lUbl8rH1K482tWCq zNl*VxEPm(dlwiYowtRo_jZ6`}SuTr$NAl^nK1%d-7IBWeehqy6$dT7?xB*ZG1Dw-X z)L?b?l?8t>08OOrEY_V~Z8(ogCiV z&B5n9rI?8yYOIb$LW{9SP?aZJYIA3q-L7J5$H`8E_cvUnNURl9VCVVZFj+Y2i~QgAuPC1j2)RSJ_P#X|}I)d-4xMMKSvIpo7Z+neJP^!^YFU^Y|(q zq&BVxO23wO@@)w>*IxjIoyniilygAy`t|GA--3UaA3z>1AoxV)*e3KB)Jhl`ZGozk zwgAgBAjg*?h#dDE3GsQhiRijbIX$}m)mIcFRjmra)&3}m(J8=T1)!giX91p3AU8P- z8MaH$x;-4Qpy4GTfG`-^9Ky)U(B@DWph}FdUv~xpvT%7c>W!eNd0s~G!7Qk*`Q8rWvCRLc?n^)K)jM*PE zp`72FO6)IVuTQ_omMJvanYNgH|{!#w!15vXBR2^T5fl{?)v?zQd%=g${`=jg%)@cYi$8Z@wHlT27umh39k zYMIokAj=QxhQSv1PWq*9P(;#j*x%Hy@>6@ zi`=+Jy9eDKwqSbn?d-GLJvHt%?)~S^tys`)n>YAL#B)Cjm%3l30|J$9yNH`-Ub^ht&rU19QtPa(4TnUAP74y>^`y_^sG#9Te_b^F6CaAwQYi{Ega7lp0ms zsVq(>v5;6pj4~~D{l7uNsYrj>G}PO84NvGIGb;CtJ|nL6^c-hP1@!)lcKgI`=QLt` zMmt8fm4P2{yf(ie+il~`&cWE*-57$KU!bK{4hL+`tg;)1?W)FaC(5hvBQSe*Sz}o{ zeT1|ipenu<{1`&Y)#swv!i|fC?A1b79YQYGNtcT)Dyikvu3K*%#z24F)vK|aZh86Y zWo!xBxb)5fh1~Cy2)M?pSC>N*R&~*6Dx;)$@guwCBFn~OZDKNb@8HO6NdMpj^F{ys z>o=E>X|1=JInlEEgxu!HGoG zfYB!TZ<-7}j_dP=3=V&XexLO-Uey;FbgnJ+nn*)zy^D^CL|~;@xHiyQwa_N7j9RVV zr(7Vv(rjN_xq|99h+EkoJ1Xe|>V;%MhFIhFsj@>Ia&;`KriVWT$u^4_0ZHM_-~|Ys z)Ep=NymJoa!dLStCtFnG;yC;4I92W(bZ)!(=BQc)g@ig?kO?bmo*o<+ z7zFR-``RNC(iwx0!>x^Kgsoc|3#uyXFd+8Z*Y0{ukmr>--P!73k2so7{D#Lw_c(i~q|P_=7ybu4Xs`d8vp%uP)9EcSCJ!=S;Sd zX3n*RcTgg+LYKP(S*_^cdf$c|oC|bP`vjI;h0SiOqzaJ5E)em>ntA2b?F#z>K;jmq zOITf}A8uk>c+-9Cubk5!8r1CM^WENTv%)`zz4_Qx?1z7^deV9639}gjap4K@Jbu#4 zZfAPgzB7-#n#cB?8`&Sekt%l%I7d&M@HVfg*O8`eQMm$mtQ;UT&Qwt@D_`3SRVr94 zh>5dgVv9k-E4_!qSy~`koIeo6Pg-Ne)zXaaia>TaUkWNKg#smyYzb?uk_0PPpbqvZ3J6>b|<9TT(^JpZ6iLy~qRcLDdWL(HhMWx)Z$NTLBw`@|tgQ1zKHR=Sw z3lSclkyoK?noz{Su1)w)3;DqUk?V%`8!{?x0k^O_np14HNxu3%Em=#jgv6 zZc*oyxR(|wdC|r0hJ5nQZgblyt#zlXTx!mbsjLnGUD;TWP%jSXZVL^E=5v2k>*kP_ zm0~emArUX=C@paeZCBBcN)=lr-~(F6e7_IhD}aIyZ*hK|CtEGFQar6bud1w_<1z9o z3R+`%W~ps%wS+^_PX%MO)&rFkfccy9FPZEbRgqHt1N{$;mU8z5&21gPL z%#a$UA5I8PLLskX9bexvT6Gl*j=6Ckg!@_?POQ_}a(^kTy&G(y_khhH!=!(s|Hjp41NmF{ zOLk~SSstl2_f$cp5)V{LfDf>){}5SHKppC@vnN362`sABtL^%_BZmW#;>xH)nz_hF z>N5*{z!i(lD=l3Vi~Z4T<=FK7iNvBrVqsk!&I;JZM$zL4XI=?~I?7XGWSH!73jK88 z=;e6lt{o}rg-N-4nq1ZiDvlFO}4kd(n2rzGy05{>BGZ{<8jah z4qUZO$LW0JfP{Zr5~p)rdX^xO*>xjGz8Wwi4nQms=u2J(`1rc(u08f$sMP}SH>sM6 zhEV*+KgPRC1+%LR67}ONjCsr+1#3T@$4c9ws3ye5_|?%ct56vZU9R-Uq}HdhYp42F zC%}}9dphv%n98=$T;^;#p@=zo>0$(v98U4?0Y~?6IUj!k`1~nB*2dAN#p0(w`UpU) z4c*Do@$USASR|~7Th@|R2&&k7RoTu3LbIV&{7h|VHF~e4R~CG9WF)cchg-o9cI~1+ z5Q~n?Vna2vupLu3l97ZGDX(t{45Rle5#OABpscK{%vM@jdiu88 z`*GrTW+iUP%9%J3+<)8cbvV9@#ZqwoxbE8>;E#*f6wijkYwYGua0AZF(f2Ofl3S0H zcZ+LlIGmc=#W-m_GH| zk2l>W)83t5xV8wamq9MJT!SuTIS2udV^dFI}P+!rFi2BLpIhV|SvbQ8Du`@4Z4xO{#iu`7#~{ zZ9-EweLQO7P2%yROk<|TF=sef$Zj7l za~M5cJG0EKJ8GZ;dmYe{Lfl34{_UHs#szS1culxEt%L5T{A)_P463d+IT%QM(lVFVv1MHc`wKc&=Dl|YoIZ2rOfMQ*VKcRZ9Spg$ zDNim&dLMi_uqQWpNUw*IOa_11&>bzx&Zs*(oXKl#n&aCf#~&VIpb+>lJUo2Y)~)vp z4Y4(JC;B0ZGc{C^ik|-a8j4Vp_b=?bmYBj#9ju#^^sYTFcst|C=ts0(LU^0Ghv z2;AP+halL$V8Ow8^Y9wlGg$kH@sApEvD~QdEbN#=oi^)h%=C4iH1oq6D-bt{e zMs%`pBaR1X(#F>;-Ufd-RHRJJciKuoSV4wKJUHE%rM{<)Rb#lWr7E%>Y_h@R?1Hrg zu*7CZJ6Ueu&SgG>RqC;ttrAIlSucCDcRO2df6;P_S)lMZtQ?zDHYbyJ*09U)cG==G zo}ptsvfCh_?}BRD3z`j7z)}W|(aXEx@EVJ;2b{rFJ~|XpNRWTd3qQ*_oO9`2j2p$b zd)rhXyQfAWGU*!{u$V(HW&p;(>O@OiFBc-dMZ#<415i;`Q2t?K$m6kOgfPp!Fdulq zdHSc{8^{h`)eUBL5(2_Fb{;*2$_XPu5^cm1Mn8i=&s|pk6JGVHR!I9~VdRqLE2P1v zD7GkY@+PE8p%8ykKy?sR*)+;2&^jj;6w+WdD<#%dh7F%=JeQ^Zc01b^$8z#peR^}z zVB!E6vcY6;;o5>P*+(r9%iObI$AbXk3NB@Vhoy7aPt0$w%ByO20)O!H2j!UyM7%76 z#gLJe{N&4rfQ-2|;_CzcAm}&+02}aQZ2cF=WsmrJ18%Uw^8E6GFbLrozS zuEb&BXe57}@1ztqnetJm1A*;TUx2fWGR|gpQmM;{md0~EgAFA87JFx3RbjXBc6{z~ zN!sTHH-GU3P-Ep}Tb7`)sC*@rsZ5mAl+3wh3xnRV(KFW;L6Dsd@pLk;$F+QYV{j&4 z&~J>5ZQHi9v2EM7o@BGJZEIs~Z0kv~v2EMB`B&Y#Rrmey_O~-QXS(}z*Gy0MudOl) zkD&Yn$s8jH%`L&}tmldx1;aO5cd(pGE|OoLg1nO^m>7@F+%R1f^Lz9ziw?8=|6^PBaHi z;w1rL`cZ+4VbeUC`-C6c_0;?J{)p@)@EMoTB=zY5FKmxtg5U%%_y6)f)jpt+-^ua; z_hCY2#Q>mI`!#OSMe|z4%@AoqF)B!|9*vW#Fnb`8`j&?--W`uqXJca{8@ufyeJ5IK z%tl<*81i;y#b=eKWGty_-%)$;CRq{#^{b&UMZLQ$c9n_>Fhk-&81u=|vuwqHUy4tnIW;W%GmIN+Tz^tn ze6)RMIz}^9!1M;LyQzAh_o7&byr#JN)0Cx9QdZLConPZ}NA*hX@aS3jxEB_K4;X8;nNGl^1t5 z3{bOuX!BGi3H{lFDDQ66X&-WoE>_VRE$A);HYoHq+v}YId0aZYJ!&bahoJtzdgSRE zX%-M8#{B8PpU7fKg!NDm%(Sksz|p$3dq6)$7^*pIfu6y_X(fF+2ii8|C@TCBzr6zX z-v-iZh4h5#S)ej*XFZtycIz1wR-ftVGlv<)yBN}pBt7XR31fo{j|>8x@4(zORoQQ^ zW>{5R34Wnd_@deu=XY&!@^MYJuoDLK4@aHwjQkxm*{Xq1kzVcM$(ju1MPU6Z8-U#J zBlfd;4gIrmqG-Hz1e^yNSplMm3TkL%=$$o_ohIU&!! zGA>FqhwIci?43vIlV+d+Vwox<765ak^7a{*L$dM@?As7y83ZQgvDigQq8^i~tO1AKqHXrkJ2;a(}T2;Nio1GV3oGxYKPBr(G@c3M2`;ziC`44nWK4E3K9q zIOu_Sl{U)-j@-1uvqYSg(}>rql)GOl|(LWN7GfPxUOErE}`4^-me`0AfWV zrMhJ{+rHuMd7-{vX%KJi3W@mdB2h0)dmz!uJXB($XpKCD7$irwsqU|J`FbAbMd-cD zeOneb`U5AAi(MxVl(SiiLl*KDI|2jq$q-y2` zu|199l9CpYXex_NVv;K?k{5@26Ar$t-v;eC)qb4HoG|rWL{HsPBWl^}NB&bWYbnTb zLbLzvWZK`Dx|0R~Wi8~QAaZcLZ-fE{q`_g!(MlS|41K3czBEOAw&CrKvlxUmC>TmR~_LKA>1@mzRHB6(9(fBNO@{%eM5(dEFV7MJ0Mx&IApO}whvx- z#C~q1GQ=`$&$u30ZGG(vj1#w-`p&ri2~gJr&^838h z998zmSB;E4A4+l}Km$I72&_c-L>)9G9c%@JHJ;ZFQO-z19Q?T#v7ztmHPnWO*(VSq zhQd(Ky}@MDCWnVL9G1?5QD;6m=`{{LnmB%yip}*wIpvqr@YK@om%3<|EaQe+psm|a)x~9Y35M0LP_Nrb)lD_(i^Ik?_-i#o>I(n} zeO!MPt_(qV+VS~7i^JI9-uc99N%PC``#^T0qrt-mvg>o%caCDCP;=~2XCrT6<}%mI zQ^Ym&LYT+|lK{9m)v0Ado;hVOWI*tRzP7q&)9Ng6F{SW8q6>Zm(#EbOQ2nDVN({L^ zEQG0BiCaDIy)=k$NRfu`IK9P}fMa@E=8X~~|5b*`82vB^1*&xfb=4;Ph2!Ki2>FwU zD};Z{vQn0&c|u8p?%(nLAr4Cy-pbdSacT6|0xTBCGYoaA z+1%jL$Vpjt9VE6eG&vC3V=DD7W}wZMQlwq(0(3l_!V!7^S)Vv#W&BY z&CLS-l;FK<9Bfg_YV`{*{ ztr=Mj3m6QS6+LOp50X$BumZK^?!dK*gbI!dd-X84d9_C zjOO-vOU~v81T`#C&>M4_UN!9v_Ca&MLy@vtCqO&3*927-0#!PhuF*3M$Si9=!xh@& z$pHabkll^2Bbsrp9Mde$sJQsP21WL4Dn0xqpztSRUHbI`;xd%EI6p`Lw8Y1)_$=6gg4phLOPpO0}-mj7{MuYc@u_Pu#PXdFh(eJd0Ez)S5 zGxNIZvT(LRf8(j-sOKY$vp25mG z}GCtr4lzXH`8VFBAp6fS*XF!mdN-ho1QSDrf{i-mFyFYeATD zVn~BH}tLC`UatI8+W>@$b`1igGXJHb1msplBrZ-^@uD|Y!@7JS5GobLeiFplQKh|J`J!48ZN-Prw4|j4 zZ!W3qZNCZXy&8b>(H&FK=ky2`gy4PhNY-xI`6`>KU0pdj;@2ZxmTlbyF|hz^Bh6*i z+G3Cidyk+u?z^y0HHSn$D%Ro43$wduJ>y)sfASKX#v0^Y04Nt4{chqM{eA=%{)JJU zLE{Qo;Yu_0=!5LSJuq=huEnN}Y*J54wFCQ!yDo^^DyUwgY8nQ~v7Su}=-u1VsU=to z4+wP$hnNuqQbI+L?9M-*CR!Gig5Q=a!RD8qa8*(T%at16Gu6%lbT{a&RLv)l!qf~G z24%c*Hey3r0nhl+V?Cfmy=69V?>&!~kh~SQ!rRYJ8&?XHW|VOxOsJ!-sJCFEFw(^F zSfKkTV%MOwwK1@c3@XBYBz22(uN7L;6-^xuO=aD-w(fCOw*GEN_SLH%`jv|sYZo5k zEvsQ`I(U@6mp}+npfBOmX2#bQfE^arRmg&M4488T2v~YD*=FhX;J;pcqVR9%v~dyl zR59N4u7S>FrgUdQk{i@FNUc@V_SW4lYIfP;iczeAk$X2#wg3W|bTOZ;v{#m7JI6f@ zb+h=tj)F9y_I-nhQiPJA*Zijar_zgEYE{3MdfifdgB=as77p+{k@jE*fH+-+z1%&@ z^@-8|8lg_lpj5Q?3wQPFiU zehVmXa(n-j9Rb`St2@O;##SKc$fNJ8ld$%vpj`E#M_v7`n`k+r+8^EPtV5tf`_t|w zBC5pisSg?pFA7_rTL1XTPYx|N}xW!=p1a)|GWK&rDOZa5Z~p$bt=Kz zuUx&NfEs^#7qMJww5Z@|onXlgpLgiBXDX5$J-iJefxUeiS#U#3{!nSD3C0RVy2=ZH zTMM9^`s=;#yc;&iH)hNEVQ%T9r&VrRz|~!U8*7`ZqA6Iuh2u>ySM6W3>xtM^=mOyO z=U&Nm2Ybd{Hd|jy-$`d7y>e0>QnzTp3H_G4OTU0aOYZeY_Xo`C+VG5lPese_`mnWu zX7eG-W7*@o*sMC?AkY7rz;bRH9D20t`y1A8L2dxHWpNj17IRr!&pNmlPyLocEH}vfCsV zf$@+-NBl?Qe2$(91uf^Lcc?C!_Dh>NfHObC>EicA0!z938bgXWypFVqFW>9k%GqufEITwxndGZT@892c(}4q$n7ZSXu8g(xOLvEf;RkTwipZx z+s#Btetyl{Gyz5>5+7Ci((SLenYgbK8x}_-6wuimC8^uD_1lEh-9mN8&X*I5R8tvmCy& zgCdiM#K%)o6B>GTd3(e@txkY*u?=d-y4YvbaS~mV_SWRTWdr&1_idRF|@JHz%F=az9lh#)ljU5_HWZAKLw1&Vw6E z)wvFnxhVN)$5*44er9Jw~vdJNazQZ8K1Cf^bPEu$g6O}Rp`9|rNeJ(B@N z8rl3sJKCQs3&XBMIlG}rlBN%Q9mYm6%WjrVH~m$i-FFBOL^RNZY=Bp^a@JND^JX@u zXL0MTu|A3JtNX7VRb9{57_GHsmfE(qa%=U8^Hi=VwzUQs2fyKzY%OljvbBtv8mtuZ z`P6b8Rn;GWNVeK8>W-$rR-Yx8gV95=q>laPKdPJgIeNIq+&`M7Cnp)&;&^q4T-)|d zFUhxJTw?DDl3f3m&w0qb*V{$p^kHKSbjXeoXb{aaNelMA}HEoBJ z2NRz3hMRX`^;?^ln@GM-6`pEIQW(QL8?Oc()eXOXBRM z(4~2Rb%LWW<>l?Xi@j(<$3Pf zvzyV67xj`77oSNaeQ6<&HkC%1=BqqytwdhH-FWp-Ty;wKn}+OGa10#ohCEx@UwLbJ zt5Y|H-1Qv?tDL!A->au#v~0Q#j_Qs=(ei~BHTlfufS22Y2_hvQ_l5P;3hf0t%LDHQ zr0N-UYw4eJ_Zf4%NBd=#DU7@gXS1@N(ktFqhioM*PkM(_mEHThIeaQV*6|42eG2IS zSN#*Zi5(6-0z0E9hK^$-S7@q;{K@Z94VIBtl}+9C0d6?!Z&CN61 zW)>}1t`sR#xs5j8F>0DrjWMN*VB=dHh$phn{R+{G~e2oE+ zcJ4DFM7L*M?xzW@iD{*!;_O>UpR=%M*!;}Wra<|zt5srm^FiC{G|n^Y>2B>1k*!@Q z+u}E{9K(=?jl}(d#8auuyFrzEnV4s{NuNzx_Qd5GBC$4RtIB?q;lU|Pd*DK|TUhddyH=hx;gwDTGdn(V2g}!b_Wb8A0$2sA z^G8n-O2%qr8(mc@rWNh&9O(h?v8jijMlPbK$-ne0ji)#DVQw-Hts8(@sM+!!A9~v(-K3-rJ}8$0MZI(hQu3lC1$W5j;GadI^c_ z)&?pbCsTXal*NBZu>RpN=PmpHw7j{ykD) zSTox+w`x*~39m|f0;h_HrDdiE8Ah@u`E&`c6*$@%r z>Wo;IExJGI2X6utuk>;44odHJ;=ZId8lX%OO3$Ixb&q=XtPSsd7SxAV3XvcYsrc`$ z&fadjp0=Ls|5Vs!vwe)0!e!p+OxyW)t#&xs#P}^=_*f|$t$r0wfIIrfK@kpZI!kX~ zP$;(RRlhxHPT4d0xu{I-gSELz7SYl0EO?Ezt7DFm*$)FmLhQM4dzLqE-93`W8vOu5 zo|72|l}jf>p1yhGJxpIiH96WH%@q@bK3*j^9S%8|eh?i~&wO-5KFd#RLJ(rR|K)q8l8m zMV?=l2~U9PBmGM(!Dl6@n}bbtm#D{RDGX5yY$~DZ+V6tKrYcT4K3RvAJ?UCLKj9>I zuGZr0>(`>T6(;}Zz9;sJW2V{P@wZx6>N-)&RH)I7>fU&r?oB$fBY#WV^)Gd6HooDy zPV`IKo6vN-U7?7op`v_K0u2MoMxISxYi#)cLi8(fVsY7wWfS_QmoZASvvQ6BFapRq$-e&> zr`W7%+gT#(Mu5jg?F(tTk5F!0N5>FlU^tU(QMEta~B^`d@0^34q_X) zM90)^>T3wZYY~B6^ZstFi8*;TH|ZTw)OscRVavva^~sq8Sk(`nQ4cb%NXH6%huXqB zHifvZPiQD8IjKw^!eXyGy{ws`$4bKm(Oa>#z-ftQ`kkwUD#-?{u+8EKYbgn>3TIf|#6Gi%O4L#$O>8~#Wj`N1L80S@*hqc0YwZU66My4;y zj1xyGl9gig)12^~MradOxJlECFR7}kceZDG`0G;V&R;?}MTW2OS(zB-fGci-g zl>@P$)D~1__(!WR-YFvYt3h2l#)A0Q-s~wqV!vvB?CL2Q_Uf`Qn}wGIEBERJUOpPe zSL*B>T^7Hi66BD7n>T+c0pWyE00Y~O-9pWa%@@4z-7+{#Rcv3%e<4X>=iNIxOQ@j% zs5WQQuq6mMA3jvgYs=y+vp2$7&DuqPbUAjd9QBXWlP&Suf6J$@C?SoPE#ac}cc`r8 zW!1~6YyBIGY{Og4Aw^YBbM}CZ&kO1@=6n01oQeL$yrQikrkqWRF9orBj9E*<@Fx%R zLCZAWi16^;inTDCC)PC3KrBXj)w5Oq<*n+^OPs$WA@Ofw^&tP3h!u`S-A+W^;@;hL z${58g-6SB>jFFIO0n2%eVg-zYVtYN?->o|ATuq8wSb)t*ldH|@$D(>hvmUOK%MQiI zg)N@&hQ6c?MIzkTEhkzIntZb%qs+eW^|XsUo*-;aJ)%`JAyQnv@O47^;fulV5Uy+cWv=keC^0JN=#(905_7=en0PACxcDw7J;oQ z`!$i)N1C|9&q}z2LO5m2e$LdmU0c%bI6W*xP zzrz>@F+MiA%mYF;qW=X31`$j%wNbs7)dG=jW%LEs6al&>;U4QSxuTNaBQ8q8NRI(1G62Aid3QGjBrQ z@PCBqADyFKG1XgdG|H=o`L2oDJqR9!a0wjawQ~S6AzXOM&DuAwucv{{=TFGO+Alp$ z{cs%0Sku3TTqJU96HTjre|8L@!)G6(Uc07kHH`D&W&}s`#2+|x^~1B74KQsjL4&s~ zDbFRaNT<(PqL-|mCXCJ6k3TwAOnXnXvTy=7jzy^(M~o!N^d0qT>x0*3H(Nh|rcED@ z*qZ>OmNdpe8&`?ozGdqV1iq-nb=m)fC4A4q1mn>cK)gI@H3b?qYEq-}ZgL?E!kotV zoBdnup~17DS~-k^*9iX$bbgE=G^as;2>`^;*N1Err2;D zF<3h#a0$kb*dQQ_9P2k78ou4Q6SYx*P*?kDr4v!P?+xOCUVX-pd^eNj|A`Ay_hU+v zg)>3Na6a}db=4U-)9-G|uuk~>XyI5It1XB|X6?vJS#^`=R*q=B%UbpZU?5r;LQJ4y za6*nC@PpHkARy<)tq*E$B={)H1{$qQXp8;XzUefZxnakm$yoxSeOlhtH8+6Bk-Prb zqfRLg-n7J=VH-?+n6wpBVK1$hW_WkI^)%3QajZh}$h8Xmy(KIO2lm66kaUwrY-GZA zWP`>L_QA)|3eEbvViN)Ec|iddv$=PV%H z=JBp}-ax#VhrwNbD3AoU`Ds8j%Hi6rD-;Sw1kZ+W>-7h0?+-VU%t=CUWchaFJ0M}O z{;??VTjFFh;I0|~{=%D3n zDII%;*Dt`s?QKF=$b?(11j;rwS1e)&1=TiS@+|XI=9!s(XcVs&*2R>LI)Z<*8|YtN zy^|q}!eAro)ooE%tC_QhH|JG8IkREVS{@s49M7o^rA^j5gPgwo=ybYq13q!h(QcBQ?e$L||D6K_3fI zap>HshP`sJ31ND$uD;dipq?ZcQF~}hl6*tIuaJQZD^|1lLI}Srmwfv;XMHIS$7DlI z)Y1zaTeLi!T)@N+thqe0$1E<(rnBK1sJ8%wrKjsZBT6X46T3}vMoJZ%=O`eiY?&Od zRgoX|I|EnlXZ3R|${@tg`m7EW0)M9m1X~#{V%DblX(!K7jOd|s(PBqn7EMw(&`fe} z+R6S?J~5}WgYYt>E20rs_S=Nt`BJoDXDT?z;jUf=V5jT{kPs9EUhyDZ0PIX@;=chO z-UzYe(x+KK7I|BGY8>K4IFLJ@^GJhoeTGHnW0)mL|%KhM87}j68+L%E3d-Ospa( z_`}@6%+bW=2Pc{T^9YG4Z0^LX^Tq$``TfP`#pk_1u&Z+mz`y?PeH1rBwE6Hx zgv9k^XkhrYDs*vlHiPfr7^nCaHX#4?vh$D@rucRfYA>`Q@O|p;;Y{)B^+N~~;OD;) zhuEAsxi>NQ`SP&i+{2$ObQzY!GQ3Wx=sM-?yF9H3_|k0|KJI=ZBK-1e#aEb$aq;C3 znT%c&pA%8Q^tLTPF8E`sy_6Va6KE4Cp^^FT5DRjH%iZwLU{-++Q$s4h$uXJ}OMEvgd3ny;@Q z2bgeDu!oEPEJ+eSHrs+nAxADKFD#C1*I>4W^lkhn;SO!6(-3e%GEa|X)10y(pu)S+ zX#ZT*OpP!)BcKYe2F9LmfeE=c+8z=1L%T(=pduAqwzAF51(vh$Pg)5zgbxjl56vLG zlCD4IVC|HQ2C5p^{7oXgEhD+ZVGCaCGvLc$l%$M;@uht*1o)7`zobcx|A@|WUhoPr zMk`}w>|aA({&Pkcho_oulIw?zmp0X{mrNxcQW-PpjSJQ_9Z3vh%y6PUaL=x0IeKOztQbJ^^Vg^(mEAPZ=comQ0Zvcsy zle6g1&y=bWEp181e=RR1OvBxo^tEqCPLZ>z=FNDitQr<8IIObv!b!kLW5et7N(Y*8 zmcl=6B?7W~t9x~4mHYVZv%k4tot-*e54}c|BjUM8?LcX@Y0zrfckTIW+par@?FVF= zyfUUlS!nH%!vv-xpyYsQ{tnIT9c~H>KnV~6*a{Od7C?I&YV$4b~3v%^nhGCWtSNa zMlc$+LWpXy5?$G1-IAFl@nc(ScusL_yJF|vNT=Om^}-2>`{6y!-y@1TBeJYsCvGCr zZb5Dm`H46|#cYYmKq*rHLIJ+NNQ{k%Z9uc<(%*$AT9pY+W6zqjdxosh3MDMO6tx)Z ze~fP7naoYS${Eo^)#p;$X92&l4G#Z4Y%Q68dgumZd6HdqM)+&{UcjNX(aDKbaJ72I zrj52GxNS2;7x7OrE|06>x`pmpwd&!Zz5jED8rtN}2}QoN)e7=M;5TD|T&M?A#}Yf( z=K{^V#T{RY3%f%5+Dn@-7czVa=}Yc8d^@`P{E!?yn>br-`uv3I*#i6LmbPPng_f4a ziRMDd@}K9{|G}i@sP15G>S$(8%*x67KfO6y8WR^91{gDQnn)ccA%KUSQI*)m>`t?Pv|2oT6H$qF|uOlwb`J%EYMbnZhtpa3W?ga!QQ9K@`xXmCPdG zNx@9SpwI^Gqe-)3!JR|t?y^ymMaWoPoipOIJ2f|83q21vGoIeMe78P6PQOYzDmp3@ za_({fjzT$LU?7ZIP%z>xa>r@Tj`vu+AlgVEFLRf4j1w!zT0eyIAOcIR;Rx>ss+RFV zauJ2atXHDn4j&Df@dE#X^j_i&-Hi)F;eb?4$KpIOGU|Vj1i);2p%UX*C@?WfGhlnd zfwZB4GUO*FrgA#im`Xe!-S}TtLKqbOTPUPd1Rz6A(X2 z5GAER4>u4nP#9kvDp96%Sj2pzUe$aMW+DV=NNi$=nH#>!t{zY@;w>r@P`%xbI2}iT zJBHSlUQ}IL@YcT$T&PE0)^mract>IbSi+Z|XJI`0Ygd9cct^BK(;!*`XEs@Fqo%!} zUX*|zfrBB<&$`qlgdi2N;XjI!K|!EE-u0h=bOg#^px1^ZiJD$x5-)--%`j3UR0NAN znr0Df#SlJkF+Q2B?ZtvlXJ%i%kg)y$pRfI*t@w|Jc+D%lbI0T3(JWx0w}?Po`3QPR zZVCCv%@x7BY2K#k9p&5Enk4*{ox9k~wP4qXLb{%!YL(&u94hMTJs}If7qH!0K(YLY zrYP$4W6t7L6R$D}s+zMD=@h)L?bkNF*Uv^s10y9Q5P@DKc=YR^Ovi91@t`XJW_XDK ztyW0N{tIRT3lSXpAWhUoeG-Dj(Q39gi0N~rf$ib#jF!F&C3v=NLa+QYU~JJyq(w#9F`oIS>(ycKsKgb=x2oo6e)`x`i4~x|pWWOIj9sKG2824+T(&0Cc5>(U< zXgVaD5hXuNz%l3?F~hPbZ}CscXJcA=D53p+dN1U|zTj&RxiFJfB%fd+iSKz4UVjmV z_H{WiJ?}JE+E2m-WFp@E^4A5KD}Z?Y^@z02@ph_DCCWk{_-5qcq{jyM^+6q)@wHC? z;D5DdX5;?E>0|p)!pBb_vVi2#gt{}PU59Hl!hJ4)IPCRT!sjndptlPAj;?I}(yxm+ z4}_wI3~Y0PKRp)I0=+8$-J~3m!ngn*F@o0nl~e~uyMujcB0MZii4Pt)m)&p9it;!> znfSAlTrw5A?#522BZdP|cXti}Z*;c|t1)<(Ah$kz_kx%^?Rrgc8bpSSgs_j64h?++ zX0c1cnccRH#vjzN&9**7U+Dy2Va%8O6WnVI|4;tGJ?Ed$fp-YI-!aV4v3;-&A=$rW zo#N@kEWA*02q1N(*g7Fcwso~)(X1gsEM`@>VZ)61vIA|FVeYU2*A|6A`CUdG3%(%f zxPEa%f}K24Y58E|#-w&>xa76jVhT_^&B2}WI>l7^hzh$o+*m@CbXuruV-h0n;ow>j z3!NEue`^wC#!NKOi(M+++v713^qqn*##9UNH|r%JK;BO5-yxFwNvK0Y5<#g(jT*oz z^Kq++>YYRh2VVOCl$DU)G(gZmo^*`lB9~>jw|t~UQ4R*A7){*Xo)DYm!A~jKf=qsy zo)9!{{Mr0u{omfHFF`tiQ0?^poW+eQvA!~YZCP%6Ha%Cv^`LlZZ}*gJ8|pnD>2xOl zGOQ&W?!ok`$Ly&XO4WF8!018tGDiNS!J3A9=LZ+!;|c-*G@_0)koJx!w^zR3K^v=| zt%cr;dWB%#$-%$UumFZpmJk8o&A{~|%M6FMVBf7Cm_KJ!>;&D>91SAN9Qu=bA`Yn_ zKPhpA(4TFCh+zB-w%q@@V?n7Y4la85}TL%^QOqQCe4mvT|bq`&lyACoxa}UQ{mJ=j2euAL~kI z`*;wGy!93j%m%7aXL(LH4+7V)ST(joBSgL_LX6k-r=p+BmCwtp8XtG)2KwO(ppSRx zernsR9R4plLAI~Erztdk56o3MC3mz;HM8|D=09rb`%>uSx>+GL)1R5Z(u7QI55S06 zZj6Hf6A&6O@NVyRCn}$8L9%JPKPj{XXGSJeog#XNz_8k!3c#_fxDB_1tGR12h^&U% zsv`C#Yd&|M1ppBL3HV=A5gFIof zN$ZRnhT(La8$w&cByZQ)m<_j!BLoF$u&7=EPGBt0za6}?up9}{h8;1|%k~(+Mz-v( zZ@?Tmow9rDP5YmW8H6OpkiHi<-sHucf)n?8LuT)!?uamfz z)wU6qe4h~vIs?M946ph~f^+<&@&{sqbGW69Vta$YJN=C45Jx$mL6|HoPx#k*=?UHd zBgUm@Y&CP;nz}xB+S{^{QRi?U|nDX5I#VF-X)6Ftl&CO+?1wW_8-N+6PP1~AVd=|;raf8mox6D8OS|t>SAgMjE}R@b|kdMiwq;*rTsJOcM@+k^1pl z+MV!^EB~eTntY7&h;cMid)CaN%L?vY+XTb#kXxdZ{6JF14huqNCTJ zp?nsX8q0Xyi#|iJ#<+3P3bE@se~&LW-y{0P5|Zg(V#j z&QQZ&*vqI=G0~C34lIF_yrGDc-9+_)}_ZTnZhz-$5!>Gn~!e;VC=+=Rv;V zMPI5-mNt~Sy~!X*`7)hNzq$K;E%3?Kb(b~@|MTBt4ShX{FPg=I!^~tZKTxHKO;IPl z8`+~a|7HrWiB86;lfoP-1b733>x46jIGA4h(j|?|_sNvw#Dq{A(L5xwLX^@Iw`E7i zLqWOXt3Ef9P$_uMpb|6s{0yX11J!0)R);6a;w&(?-q*)F6d83~Y;N8fjLFz6#aj3a>c7*Aj0flJDIc>JxohM8j8CyR6UXG5T!qf5I}Y|e`yhGF=-{z1~J#W zgvSmqnKfe_{xHw9)^!-SnKqf4Vw|7bTnzKH*1$H9_UR8VS_k6PHi z6BRXiny=zc%t+Yaf$bR?eQe)M@@+{pbC&V*Us_`;>-3(614zboJDstidEYVCPhDVQ z^*lE|4_^s+=)VTZXCab%LjPDGu++9!x=k{6A?A?-JCcE(50Q0e*_p<5kF6LSF zMqNlBZLPzW3y)J^S=G^DY{`bB9cXKI9TtzOLWJrZ*~aD(QQU_0h$c$fzi@urwIZP* zk4T)xBRr+M0X$GhN1%5=CGNMNQ<0EmI~X>(pH-;qwxGJN&+TpUoe*|jfS zn`e{cE?{%fpjeb29^%kF`=IE>WwpPP5(b9;iGQw+J5065Umt@0M49A`U zC+85zYPDq`w{;a88&_J)%q^7TnkdkF)c#76U6z^)CmRRuo0r;RPaf9`qd9zU)iEafV+02JY#}p|2 z1SdQJ24bgp|H51Zj*Y?UR8KIRyhZlI(2!eL`~jzd?X$-vQPiWpHoeBW1&RCuzg~e z)0OXpYNrFoL4cdMP^a6|yi-iZUD6eO*tA5{w2I$U=?~&IwTl}7YeGV`4NWL-!`v=$ z!*6=|u+U1Vxj3vG&hpj>bVz7NvHaWg7m#CX+s>P{J1@>gMI}ISEJ?A*0ifSq%`kV2 z0-t9y^fRDpj(9OcXtO0qI7)7+M!_1=B#-vGTv?GL+?p|9F-G-{T$jA0QjEcUS?h=z zeB1qbgLe}kW3}(+6kpo~Zcq~1-MeippU4u5q$Z7}yQahXD>7+jF|nJ8X>>u34bTVt zOJAAcwomhsGMR+iIk!2-q%M>+$Y?H;`mjzmIMR!fwlxdpU!bZ;ro0FsJ;JLU0gw+WByM{rz_uD9DjBaJ`F=o??@6bZvrfl4K( zQiXR?zysHwM8bfBqCd5di(#1>381qof97SPh^~;~zUcF%2Djq8s$Cb8yv0kAc7xIv z#=1Rl!>H9*oGVMYo2M!mSEs=xGp{M2^c*1UOq*AovRL8Q9Z#Gi7+~&|xDG^*2ahe+ z8nn2@xfL}y)C#tJo-VOzTdhaolFd2*f0lhA@RR&x2q6E0WvUapVJg152KatzmV55# zQD@_&S|>tGxInaZhSWV;MWb#tTk3Sy6vC}ZHszEM{WY{)k(J$4Fhu*B_sXY4{}O9w zW0|$ox=~zfx{0HZ$mkoT;viS)^OO@HTZPT#`5Au9{Szud+$6*%gK~LmHMM?ebFU@2!)*`filoGyjQhYOGe882>{V|-*5jBNRafM=~yJ<_8Q&olbvTOaU)tlG1}*jh`uw088P= z2FSVZ)gO8Nx9^E&-#&Z>N7aQoz6zcl{5RJ>F550aiiIp`k2(NHJhjw1 zG@~r#7pZcDDgygIejTLTs+T6bV}#D0)S8$gt~))3d;rG3m3uQYBnt3`~M-^;6Rl~WMQ{T^QuXvJE8@p$VXgq@PN<*T{6q8Md!ZND{+IuY%K4T zqD_oSMg=s9(am7>gQ+NB?T9`S8`3kRV$qt9lS+mZ^*1GI?9yrsY5u8vuvvm?UU(=x zixs7YpHPcViNY=bLH}tiorP z3i=r|Kk6kQ>fU#UqEa+*UmGoiJ(oUjR1@PQ3<2DeyXR{*D zoYHsbSU2gkg>2+0HKzr8DjO*sDH$nyn?svL3oC^(0e2314it((_|&Qd?5>-Y+4 z5{;-GaoK6=eJhy8fP>Syx-FMHXA7TqB1|bnVX?7$2TTYycEumDIYNN*<(Iqr=0p=` zDLU^ZIaJqi4U3Rs)Y$t%%urM|yl#~nkDH3%)DZl_ z0_Fr%(ZXsi9oNmvPke%-72k4%elH1U`1Hk8qz=k~0jdfj(KGpc$Ruh) zh!R*|dQEgBQrDV1SMX%{He%ujyS&3=$|%~^iZ(H^F{DCT4f*LN$Yo~3l44GdpiTX$ z+iu{c%aD02o9XuoPzPP`Dv%?nSWdR`NS_dIr@l4*R{U-^~x&CtUG{c3Z^(R?Ns~^oa4ohN> zzaBDeh(Fn~Y(TOV8#+Jky=41ibZsu(yhuH|5&gVA%MrMQ&?YwBz`Q7wI#;&a)B9Co zFQqI6cn}tK3~HvJ6L?P+9l92K48?3#3^S53KUyx8wV|(0f=VmsA`On{u<45Fi;0v0 zD_>K3ZbbH#zjU|haI$4syCZEzMqi9rb}F~>H-jAWX zOI;bMw2V9UR^zuFLr%eD5z0MPW7MmWPw>)jv~jjCBT?yPahdBdni;rkw@EN@8G5^4 z`f)*(QDThR6U43|ohW%b2)kap@w;c|*a0J~b@WWw&CuIQsnl3pho)4@_x1j4T?de$ zlo?y&jm~!JS?>;~ZF(ge<#|&42*<1Dz^z*m3Mie+uui#9G(zS$sS1N1dt6RaF&V3? zB*8XQ$nV%y?`V^VO7)K$*AwG?OCH5-$qxD+^=2<4N{H=q7B&wj1HorVp2AN@?owgd z9VE==`oWlpimKC!tcn55ZLDpq_p!UGNkU258U&4v+uaU(I|vdNp|CVggIV#NcfLC? zmla;zqP6F9q_MG5$M|e3vDz3ccl(-(j=3wAk!auRPY(G4=1j(-Zl=>8X0^+#_Ao*4 zE08TlQXoV784vlBmp7XTq7RyF*Uxlr6Hzw?=EU`ummvn^01Id{jUoghQZ${@ZP(2x zvdxIRMH3i#DXNJAqw)l%6yzq!irEQL+-YRp(2o8u>=Pm$iQqR=UW+3!Lyy)1Ul%n#R#2AtRZC9Zdfie(iZZsk=yt!4PD341;$Xn$S2mdeU~KJ@}=ZgjU?eg7f5 zq_Ro+?Rl4cgYElF*y+if#gD<>pRl?!rRBV&atgj8Och&8bv_KIyP2}hzaks<-JqbJ zQ8uB?bSk%hL=op9B$H?`@))Z#zzm(YGLw?bFY*>M6g6nzG5Q}ApZRg@id4dm5R0bY zReqaO8XxB#lhk0ZpG=z^X$&#xz2VM63#Wn(CY|z`whv7tAtfTTp0^ z5mjl?9BNODvaf~53{|fba;LLPAAVB6vrLrWk0@c%5#=V5ZAko>0#y4=nFlllOlT?; zq(BldI>P5M;4)l-wk0&;_8djuy{QVsEk>@;!+po_Rgz^zobN~SFZphX)v>(fqg1|B z)fDu-ue z@^Q7zJ7U7}p@F*V&rMOgbsPPad?JG~(KVKiT~v)*=Gt4;Ah+8*6-W8}kcIa|(>P7c zPTZtZvi5)zbYFzL;yt_Dg-4&V=5(Feq0V64`O=@sAG@C%$XiObmYxrnMym;jlL#~ z6R5st&tv|q=!#`H4wl26$8M7}DQ4DTT6A*?>Rwd0`}$-=Yzm{Vn%ArR%g*_0M6L$( zvpuPyv5+Zbk=L^0+?*xGCc<{6(=24-{+!hPsiscX2Nd!URuS19JF=qQ%}G96b~w& zXWK232|*Xh^@pm`KQ@oIl8Gz~fR}dPn~qmJR;fKZg!P%e;w8{H20i89(EGjhi*m9e z-t}0uSVjLW?3XCQ^eS1gV9srsU6Dx^Dtf9}bjAH^T5~bCeN!M}cMEFcT{9!W;q)AT zQoP#8Pk>EONkt=+%fY=yPWj43B`R{2WY-= zWNqd5hK}&>JCyiZb3P9sEe-E2x=)!MwWl2~YQwmjMAo!jNrg=u&T1h^xN@~PyDJA` zTXui~(AKUg)})O1rmggt==bBtv&H6QUbNqa4P7c?zn9jSBdnI@N3%)dnh-GPkS0FM zE>xMbc1WGJnx@MpL*v$-Z*Q-B2NdRsxo1DGa9ku{FljGb|iYiZU1g*Y^KAOP>@Vy}_MCr`*GN{2=v zQWaIVV!3tEEpF^{T38 zb@|J)wW}F#HSJ?fcE0^w{kc)?;`Ph(#B(`|JUuU+bpJ|{ewTGV+S1C}5`(4>8OPro z^z;y(+v>GGI0?(aZ|Q8)-D0`(B^77ouKC)#h9@~0aBiUk%jk&ymVs6}D$RdNJ2zbF zPFObqiYjTTiTVWbP})|R&(Rzl$8E)(p}X8vT_$eGmFS>9czQ)EXt3Y@W2wWeabEG_ zcqP54_!zH62DZ(k$V~{3-s@PpI3mp)gvInjGZooCi&Z(3)s~Io)Si5SoN+Vi!L)rf|*dUauTAd(kDBT!Wm3oV|E={%C+q=kKk{m*i!}$;S zb}wV1-?ZN3CX&qx6&@FoN1Na|!J?QJ4Dm4COdREr#=w^7NpkwjJ1P|=5Fa1E^KPpP zSe@FfiH+6ijwf%v9>Ay=>G}Ob(}$}x(I3BZQ-$sYfg63ePfHI9B_BXEY68U>SV{LP zbM}yR#qmtgvEyzOU&ED*X0`B*`^G8a4pLE@3N0DWkow>i&0ZazaUvCCk%UL~du8rY zgiPbmD*TCGS5LR3SV^AS&$y7dvuuIsqH3;FmSMM@{#P0#u!tcJ5y-Lr@GLRIC0Utw z#q!VL>NVzO^>52^;Z^uIln~a(04q%QDX|w*O}n0JM;0hwJcXY`#{#-g!qALDEloLV z*kk}hZ&eRn6aj+OQKT00d&7In~_QWM9V& zPxF>5Vyc2SGMgSdz=&|X&8o%a+$q{G6rBHYwVz3*y-|Gh#<;CRw7xdjvVIx)*5 z239n}AqE>8;UN7zNbov-t2G-K7K5=9n|wVx4M8LR*O{2WOvPq5h+Zoq{@xouMXWnJ85z0wPrKI2s`@UR*;o5HzdNBk!9Sa(U$v1LwBU5F)n#OW zb)~yl(TB&~aTKwqyD)x+53Qt%8DF`FfM6~+D&d9FbH$7=A9_0pUeMN&wa(1y{RMNBRqYJPmk33?n&T5n7avvM}5jXeyakwi@VUCcbeX=QrV zGoba#z@4*+cKxP+f(?HXyy%R> z*m7rqvw;jY^~IrYd2z-uLjfy?;xM#C_~HyBgA0tX>A}7|SePwgp*W2I00($G3=I;!`j(G^laKvhc8ZFEC*p88{$(F`KE#rzI2=JNFj5;1U5jx(P9*`jxeL-{ zZ^P*TKtlF^?1^cC*mDh_`zsrS;PS9bzlGrb4g5b{NJK-r-2WM-p!=U;&KDuW%y;8Z z;DOD*;n0EE5Am?T;$GNjEqq^bQUL(|{~E>e?*oEqzTprP{B`Z0Cyw&Dc68){^#!0|r3m=ihFDp#J)U`U{Xs1|)v-AJ=el zNI^jVy5^6;{}Igdg9{=dR{jkRI5Z$bix&WxfCAPh2GX^#q5+xE!7(&I`j#MKAPO=V zhZ!=em?$nL*!c$`0yv=u3%+HR23QIJ*If}1{3}Q}|AYog%M=|D9+vlSctZTeCHa;I zGW)vki24{G7#aHLBFr@;+O<`Fo z1MZ9hs>ww9f6125ypB2;(7W5K@F~|uWQ)~|QR68J^eb7{fIkxFfS}t zgZcU9$2U@Y7Cg@YlT#^5USFfJ#f3{fl)6u&hs9$ARTd#{fqdisDO;JzTx#Gz*TT;qT`8`V>BX^nKEIO zRk9P*xb#+U3_T#79Iq3$wzSIi5gZkKvxQ1HuQr`r+t~E}3!OZwY#z{D8%s=#O`SH6 zwHZgce>8`x2&gVF5;{EL0E+vZq+eYIO#4N7@XU$x?IZ$0Q#t&&E+{0AuWC~@~ zZmhU8d0PUMDt)Y@VjnVf*3OUH-onUU&weYmkW!17$Z3(>Bm4$NC8mA)n_9@^xY!s;R|eN(*bh`> z7Uy=tRWWDor@W{}ku6Yy(QRnoO4xeS>i7+_b|qmX_ag(T{dDizxhvyw=es>=&HeX1 zcugyUr3the9fs+je3DzveUSS!U?YYui}^~-m^h0n%q1+gS&ohDiUsTUh)oU{2T6&! zNy3V(6)J8s$BS9srw~oiQ*f8s7J8%SQ)E!7#3nQ!kzi<9B8`JOM9PT86S7DJJi|hK z6RDHACyZt+lP$kybDO84wwk2J7Wz;3Th{d!gMuDrj>T#uD57z1upZrKf}gXAgwv#) z%H4+T%K6s9a|TEDl#-{?SMBi2%X7I9Ta=c{bQmS-w2~AV8R^#|jb)(*Co{0=^uH8$ z#A(Rrt|6f?#(RK7kc+f=(`7HRmL=Dfc(ULw!={=sU2x)OeL3h79REdP_5cWL(9Pm5-P`9+cl zSd5L-iy4X^#xGQVo*Ani8xgogyP2|`;86sz~B z8G&M=&tg}u{Pl=t&I5A>QD6#ldK&Js3`f>$(2keTc0v?ybGg@+V;I^BLEw- zh|+p|4~jId^jn?5?X3^aVJgm{DGJPnjyC|eS>^3JN}R0mt`BhZ;ftR96Gc`jb|GZq zxx95GL4@h)p5y0BY669TR!(#+SBytkUmqcib8)+JkS{~R^2&Q^P5VMcE6u3K-xcx%ihHSLCD*KKPJ zjS5w!KcCt#+X^}bPMkO^4!??}^Z+i>F!Z~`L4m&BNdEYm%`Mpz>4)93GZl_W0kIFWcDfy(yFpBH6gS9eGTX^xDn3mPpd<1l;ZBbxfYO8YEDgxFoPPjy4w< z4<<|OF3^C71GHwpNJ^Sk037tVPYYYD2vmGjvew<@7gq3#Pr-%g#Kv!9XLcrXKTr2{ zkO<)OPe*H;RT}|8&--rLQ-7htB%gVDS~EK@E(@x^YDnnqaQ8BwfE3&qAFa|I?aMd0vuF2`a3bVr!B{*dmCp|cR^-C-vkSyMT zjnN~5&{D_9@@iN&7EHXp(fuS&AMu>uHWG2Kf0SeDm1dvY#Lkkp>oC){8%I7sCzh_Gg-<<(HV&rsSp9 zC9uQ?x9gKNRKW) z(wEk0(hrs?IZQ7y<=~Z9D;e6h!59rAf_`XN<^&%a)(zD2GK*>S+eY6a%RzSG>4D{7SCJ(Iw)SgBOCiJS(MeN!l= zHun6@!Qm0w230-R=Qj2YP8W@E6Ss-AP+52*Y`QfBZ0H`R)M=gwQ?la z@lt5Xr>J+s^C0>;$4k-h-%*SMEH+96QDSG}l z95ff6N(vEQJAYfVn1fb?_({;XecXM2>#5fsaD5qefuVkZzXI23^gu@uoBd4TR28@C z2Bi8xKe)z;>%U%a<~9PJeSJ6YVYz#BoNATK)roNsufOf-8FbQx?C9ngJNyjy2n|}v z1HluYV+j>WjlCm;CL0}vwk<`~lBo+iGdo|N&5^4?rs1H_UIJ0E*JOUQ);j}Bi*pAV zaZ6>|u2=ceyFpEhR5Y}dm`~!@WwvqnYp>N2XIf0$l*ojqU+_Sx(yHd4 zo(i=%C?T>#!<&V)o($35=8TM-+PZZ!)SLbAW?OzTka4=SQXM@ZBiunKRU4aZPisN1F#A4i`$w+a5*JGvYUbHL5yFC< zH#b=q;>kgxnisbd4}{Pnssz=uc@+T&^sgep`koUnj{V*@&Aan9b2DCK{xb*8H73~g z3ww`!isdfkX5~?(;My5FPQ`C$JAth;g+n8kn-VLJscHi0-C}E{Vrv|o9r!&(9k>QEf2fW-d>r=as+3 zV?JLRW8W@hrRHD^F9@57J_2!4YJxjNeimVbZ4eR+h= z8q5a@>$r<3+iyUeegtkF-0%T~{Yg7_lBpGkopql~p7s}7Sh~SpqWa0{A3UC(?J>~I z9_JH=K-?##AH7PhG@Jdx{4rXdo^>WR!~E|MhbKVfBb((ts;U9>eddEs)9C8~#F-xh z-cjv+?5an5Sg?8Nd}8Q6AALSN0|!e9G5iT?Ha09OcP7wyT0M~N5hzo?vu z*QCKv#pMHciCyaSi}3OaZ(y9NZHH^DNBZRYz^a=(k*_IoT-_EK$!5FE_RP|_T!F@{ z2z9le==f5@Qv)Z1EyuHU@!?WKWp!@vo9>vwl&taMA#qxXM%|f-EMfIAOO=+P$P#mc z^>J0DrHO|VEp8>~xN3YclTz>6A@k_-G;+v;K&XOxi&jluNckcWzW5!<$WH>$+u`}0 zLGn52Q~ZD-()Wdjn?E{Db1jY0;3joh){EtFxLT@O+7g{U7_KTXW_E3?N;(lLVky}# z9lXb#-$8al*7*ffQ>+ueNfV)O4abn=?)bT*EPce~vn6vbNYPjG!+;2D%9}3gOr?tV zA2E_h5!E?LzWHs$D6dk!uer;nFz;$guk?r!aYC*3GQNGJ8O-l{(FZ1|yUz5ZhkPlBwj#)|)Pt-%mU@T?j1*=3x|MwL*)`2!)Rkn{&yiq?1y>o*UsLa3f&L;UyEw{HpvE#g^-J0Zz3vK@1 zVrRA}#$5C*xXHtxPN3lo+zUDHe6QlP5ujG-Z24#uKxirSgJSJsTes5`o9!veV&v@; zRu-Sr41a6q>JjfA%7U>^*0c20O!VzAOSI7)c^3!^A|29@UI}ut2bb}71`!>e<1#AB z8P+If1)>29RE)OuEhJqSmm&`w6zdwo(4kBx$YFZEVx9(|Ush#{A;`Fr>Wa5M`7)kk zmA;MV0!eoiSBz67(0$V;Bbq%PkDls@0R(L<8W(~tqd_HHAd^?0y#QNec8WF6YLH2r z2dGY|ei@w6Yf+t31pmJ7w?ffAJ+&W$Bl^X6PE~v^LWcXeXsUkYx{7D|)y#6oQ>ur^ zXkR(GT^xL4HGcDIoN!$}`kPQDkO`@>hIVTWFiJ)+zJ6pVHcMImvaMcKUwJj{^cMaO zmhY9P;PGI;XW!F=@Y=69?s#8_44g6OX>XRjvR}U2;!b>GaVr-iYkb9#)Cv`vLmR4P|Iy6MY7b-jYjv^LwzXsi7iQS#yBNIZ@{=1_*sn#w>U#PiA%A@YcYi; z)+(nsDa`Fl7VQ1APfoG|I@`+Pb`B5248gd01jX=s>qgXg0R;ZC-kk;D%KiscG@(bFlMq55W-t7L9*oO=yPJazlIH+$nG?EBwSV#=-k z23ARro#u8=mL`fv`OXeSqd0>DYc>oL>s`Z4pRssWQp5LD&OYm z#frfu>Ixxf7r)YT0aKu4Rdke(al7cwc@HYG7qDnkDptx5_3PrAudJoa_e?fH-Crz^oW-g2gtO=9Uh5Bm?N=H`l?-Be!|mvb>!W?}PQl#;OGGo>CUhp6 zMgH3y$4pp(r*}TCQ}ZZ@>@lT^uw|M8dTo}n$lJy{PMM#jT_xJbcV-pyeTo=c+{Zyj z`;$+>S)J&~;gs!{N@Vl&Ry&Qo8Vsrwv5ZY}!wR*&grB72To2w;VsN^D8I9pwwffku zp`l2;TG#i>!q zU4rnNMnbxDh0q}A_hjtEs0y$FRx_PdO>dMth-5DKP?e?cS8-S`-Dj#VxQa@0q%Z|u z9Lex1f!opv&RO;>AgE4`s9r z13qVxJNfwhf{b1hofCrv{UMRBNi(KvUws-_5o0vIIv%H78zO~4E=L7B{}41eRw7dd#9t8R%txNmAd6N{C9Mmxivm$Fi_MDMk< z%N+J2J9G>En>{KMms18L*@UV@SS%0b6PoEPe;gs$w3E*wck`26X=AGbf%yvD36o@h zg6tL_i-5d&7%0lcwy}RmU&SK-Gbaqz?tzjTF@sZSMUK`?2B~SFw%;OIBhD2Rnn5Ey z48^KEc0r$WqXkvz%q}VneJhsmw|co|?$ZEZ01|CJ^H@`BdV7v8j}-=_+8yInB*9zR zd)8S__-2*meoBNw^#xuhExnA?%VAp*PnSJCxgnGy5GW-xWbUa0N09YWgLWsHGC(8jG1#Vw=@tVia?prst4IeR$zF$Gc+e!lSd;y7{J>bvp?BWTJcEg z3mRGL32|(lkW91QbePn;S^ZtumPh!Te9usXP2F10lNbKeW+idWT0{2fK;g`?t<^Le zKV11x3aA)055s)ILveWKp*67dvUl*R`2v#0>c34b){K^Y@t*;tD(>gpM_ zNP7a!?4HM<$PS|J86Y7~>gUQD&zQn<5%qxXt@~?!kEPidUHLpShoe5Opx%4I^Dd-5 zO&-MAg0GZM&q6;gyuzoLU3+Q29+W&1Yv(NMLiZEQXp1>M)1D5Dz#{rM(fg`!6ZkrL z!QU5Wi9g-S1H4gblVOc3}E~) z!h$_ms-5c%U@BzJKwqfvIbbMf)nJsm8DBpON~VEqv*r_`c~!EqDqmQ;X;oVlFFjq0 z{G>v3GlSh&05hCHo%FB?T(6$tq3V1OhHzUm2tgk~BBXHVnz`rq(okYzG}&ix=bdtT z*3fqzZESJ!kJX%@jAZX`%NB^c=21-gxl;zR@o)XlY?h3A3P`-g|BpvpW(ncI7D_-z za!yVGWHuQWXLm_S7jFtf7A_tN4nBSg4t7p<3Ko6=aDf;;4VcslNCaW}AUxy4AEuAx z&jI((K@80P4%^`m_jm{4gjp~#!R2be02od#KCrqz)_Yh^E`BL6mI~%Fq$R}(#=67A zlNb2Qa{eJyxp+7!I0gPDh56fsP|2JE|FD-340cHOA7b|p5~TZ=*!_Dm1n#>%kP@tv zibe95%7o?=0GqYq)3sn|0(mjPt_t`J-~?uTEO5ReCQ3_`1uzu=u5ZAEP?jx}wS?1v ze_7pvCZ~CVyb_*NlpPt2$L=FA8zuG^ZsNS<6>uTxv~fL<3e+>|H(P_Z|#N3 z14cIvuY5RM z?Ej`~{|iQahT!tgh<`}imZvb_3MyE=8iEq9kGq2dM(qMJfZy%nleAEO0TuwjKf8f{ zSlNH(3ajNb0|OBnd{GG$B>u;HJa0MpDY)4GVQL{=nHJVTASa;Z^aE}RI#_ZIC;)c( zL5K<-3C7(6^L7L4z+~Tngb>$3a4F$X{~`IgdH8u-LU;cBrs)uH2Nw+g8~C;*d<~cm z0B>IYG31Z0_W^(O0~G(`aC&I4$qtYRjpLuW=i}n%Z?U=qasyi0c7e)h;2-d~e`gN^ zod1phtwr%SFa-eaM8y4r2r-?Imv#l`vw7QF)!qyFdFq`BXwA>;m6V1Pl)xM*O< zR)~wh_drE7upbL93izV}J{dTFn*g_k0s%Mszu9axFeIKE!7E6(#Q$RZ|HPZ53^xTA z#A^_7!+&$>T#%0mJH?;i5Ef=rvU0X@w}lY-eBjzvOh|<^?*E;8?!*t}BT%~iO!rya zV@BwEaz-at#uz(NO@h2+;5oaL_ZV>~q#7bBW&%`He!6rp2}OdqW#1fnH7QF_g1RDw>Jzef znG8ni55WgSkVARSWY?RD%25CUeH}9eY%Wk0$K%YPoGb%d*)B^}#}u>0ycwZ_>y;^*X+LFiELpz;Tr1TH@-*U8PRKt-eV1~izCTU_oraT7xY zKtUa>Gr%nrWpROEd)1+K6Ynqagy-D=v``83*AGwOr88$QH&{sGPXO^KI4FQSMPnl* zbrC!4C*D~A87vlTLIJirlq0HoAOH>)jfK3=8>;DsO&qEinhZny7{urds;kRq0;a%FDeVEV$K6W&Cm0AqcK+)4mHrKRsre<;^_s+ zBxWU4u=-+A95OVV+GE?LXBL(9)dUPVfAWAdaZBQq2B1xtaC9gw`snL2b)q^D(cOLA z4{oNnv#a}YSa6f@K;iHX6fITCEO6T&(X~G`eUz4lWnsrm+yWjtk&bs}yKZHBUK&zl zAVr8LIIg5ke12%&Xx`lI{&Rw)L-+iPtp7-x5d-Pt_1EgMs#B}nu1T)f>`(sO<~H>c#yKiC1B}VDN!E8#ai*hdg(y~Fv+H(%)vwFnFzwX zGeNuOX?WV`y=V-x#1DN?1khAXzM5Ox9mh>ZFUo?e{4ymI@1CN7Pk7V>H8+_@fP8o| zTNa%6k~2&7jFCBp6W${}zOoq-z`>?8=?Iv>Zb&+$0U!YyiW#+1P+KijSif*O%B3l{ zQh2x-U~)b#Cjo?>Ljlt+i9Q+PbG~KV1F0|5ba`|3*ejfl5xs2&Nn1ooP6nWB47Hn8 z=>X$*CID2@k)!*N1lUo?g5b^(g;5vGkb&Z|@B78mQ5N!X_zU}wDU;=E3D{)a*c%T1+uIeQ!jSB(AMD_yt5duj|N5z4rWJJZcd<{Att) z(BD){ph1C>UuZ8)%hV9R_CKq^m)eRzWe025BJ=iorX!R#=CaToZ{vK!pqYiu`ozRe zb~8Z9uVUQWhwT``-HWEj_zT+?i7OvAPKwYmY|2uAyB8XH5Q>Dg4!!`!G5om}4(fA1 z-cm1b*^?<+Wsq^m2_zAzPBibB^0e*8H3<_syM7QmzZ9w(V$nI^BO+S@?xHgJ5R)1$ zluFpj`%In)Ui##9HQH&4=tIj`p{yYZ2_od zV(@_mFLKw#DMa1D7#%r1V;902)6EUMzRj?cFdm4kODwO zDgHATk5pH~*RH>07&hn&m$Q<-UAuaJm(5B#?{Lvv@#4E!(|QsbaUkiDAF1GdYA1Pq zhh`cO_i~ix`wr#V9xA|xCf;8^PWSgYN?hJ6OPc@mg-hKX;m9z;1?LDzBnB)RYYl=Z zrb_3$>quV5FL2_>-_!3$B|d@)W`qwc18;LMoPRyq%Y+qJaI9J z0Ph*Lg8*N7a3?yl-~jX#M1Lg-D&_CijiXZ({zX0FC6KEZeD?lh){Y@bybEuGU>u~% z$KD<72$e(ZuLv{;WxdN`Go68p*k#a%72@!V*f$RkW*B}V`0sA#2FQd5FH8k=z}MC_ zuEJ_dS){FzHO{;Z&m`~02K;^Q>fvq;Troz#tu=(NgRXod_*JdZJ19adze3&D?fMS9 z=zrZew@URLG?&&Mq;1^*pQuKhNM3vE>>ao(#s{iq#vL8FMVWSb2;QTN*zkg~R=7y` zvg+J4>2$_iHR&qpkEa;N>z)n=DzkSMh(D|>gkK!KX}@5=SWAy4_IHOF+5BMini5_m z7NhD@TRAu|?z_|8B-1<{<`AoA@WZUcN3UMSjE2mpXv;osh(y=bs7=z0NuXNoJWqi2 z;I24nAeSU^f*(&LOfgTdKg|vF(Hx1@b?b~D&*0oOF5b;(&~=-NwwWCjUkB$rr!+qO zJdw&h2p9kE=Ku-$5B|KJ&Nix*PPc5s*|aIrNH`}~^bv#wSKbl*!*mdi4cRauN$H2l z9e$_s5ak_yTua`sL7Mz3`}~nRgBLQqbHQyscfCUVW}S)3wcFlQaXb8=r7#QrxcxiT zy18F@^RB>=M3S=u?@eryKG#;Xa90uqjc;mkQs_Hd&HT2eK;lJQgqynhAa!q-9(qr< z5rBWCqd3{k8UD}%`EY>xx0d+S>ys#dH{jAplz%x~o~r5x-|#vTxDVxU=ZAJKd7;$UWKOSJ$4iI4j^KCpY<4A)MFa10O+aPog<5@61;Fo=pR8OrB_*VJ@m=0O%Z zq|z%LNT27(F8Rh@VxX3FLeErb!SAWnVW=Y1cw383vUW_R=ZDb@!f9{tBw2G)+D`|D zi&rWf0FvrlixeI8fJ0J;avYW9BrjYD!5zKI~@@5XX#=vC^$ylI{*v6@o zP*J(*S%P9}OKT%Y8rLkXRVA`wwkaCk6C0$GSnqvF0Dj)hC&3%GgxjMy>u09L!wWN$ z*wCMZx8^9I85L>($WQ(YpfWk#Ph#i3?|Q zwv~Z$$T;m(fQ&>SETKHlm|8LFv?G;(OU-2BBff4~WT8*NU z{wbp9T>dHQ<`M2W5^E{%+6Lttw9ZI3Qj%?Fv`%z~R#H3YDHvWcq=ZT^$2r2e=oF>P zut(!v(d$xzx%b@r>2!y6+mD+-rzl=!UY_)U$>*sOM*Y#AtU@UuWCt<*TS{d02+99y zUcEBYJhN$lF`vWBTq0i9<|R+cqCc9bT&_T}Nl|QjoQSDIC4NK4BsFAJldBRsR)qoG zSH4zm5?8kZ;}u=^G!dD5zxCR58r46YpA47_&AwE?`$l~gXQu9@$m3(xV3dxq9yD79 zhlLa3eh8)#W#y%13 zkA)qgNAMNfnxi_RR$QC9W2H$pU#pT(*OZ!hd!}vyls>y}@DL{e5&}@#&@|$E4IZnl zU4vF$iNX?_PhGVig)rUV#P4E?0l^=knvtkYs*Y7dw0gjn^v-THm=tzT+?eU0xg@EM zdU)}O--K}Vp9cZKFlED2+zDAnozx+%uCB^k_ACx}bx@c(jYglPzVWb2QnyC-;fKr| zR^g&+N^7+h)yICvVrr-0<(S-7u%$wHdT9u_wu zR!Y_ID0|S7D(4`smv2spUE$6GSw*jCG_xA!IgRq7hi_Z9vahqR^CQtF%J)+bQ19q` zQ)osubY=QJ-W+9EQq^AdP!(1+EK(c(3+rZ!tUde$>sHRs-S5f|)i0(=P0>Eopt7W? zQl~Q2-lOTkK&q*LLj3yai7CxYg0mz@W~ z5Do7hpI|}Y9@WlbltYD1?I(`z7_l*Os-az^`V=5c5HVDvm;)3H^}VB>L@2TjvqY%L z0Ujx$vw6zQ!!h(~aVcLJsC?U%fq5ah;7h$Z<@b9<%fXIf#jPA;_w9ru2|i-avY7-Y z=zM2Sv>#id?}Q>Q*%PIuM@%g%Wr6x}mBKF7wW*q4FvWQh2e%@WQtFgDNxq=m#gnL4 z>Q_zibRCciyH!#*)TE9wd*Ek?vd-<)cW`!yFZ;<^A5eQ0(pzmvfjH;OzSAn;N#Y^1 z!Qqk7s%Q8-^8uB;ZC)l@N{uLnU46b2d7i9#WV^Q?TtsavF6~|Uu(3Rk6DP+D&p*1@ zgLGSrJ{zy_*g{I+o=|l5JJZjdvFk=4(M*%N;-0$I&A&)?M7$R_Y^0L+G&K)a&YM+1 zU;GO9Wb+(VK3(5a2O6tEK8UUO{gs)`6|*C@9Va=7ioXe(@$77`1Ka1Ceb)`OFuQl^&$OTnc^_#ttT)^X@7$|jd|E=}G?zXY0pC~2GsLXU9AlzKCYgzgb_ zY{1i2mulEKoeA1Q^I9>E8po+!+hT1lTNh;E=2`Y2ShzrWb2+go=KJv*O!#Nv*Q4!& zv$gd+o?kzX_t*oj6~%h?-E$RG*E*`~^G0C$oltP#obtglEHrO*39uP02clC_dIb%z z)LC_Xu}KpwRZ<4|v2(Z7(UkM&$Q!vJpG~g&@{ihMzp+7nbcKw$s}dF8X_m<%g+GYvjd%6i;XQSr&*7OsxUHN_d`vV`0 z-)B9KX`2)%W4^!n^|NM$4`y#p!cATl6#at4kpit1rAM!%x#9z%ed&t?DxsqiDGR8v zu&D*MYBcLXivo_nH#M+5h`|J>^*DU4savP}Y%_@M`$|jf5Br=;68=Z;eI~2~l^WWd z%hq79NF%h zlDgNG49HcXzDzqwGT7@;wmx9pZeeW2k){NF4J*|J0bRT^dpaDSTh5k29Rd3HI@83& zJ`+m?($VB>1_rIIa{MNB*2-4WheygqMvvgriki(9_nwLC=_M~>w!ANb5}!qH265s= zOd6F^pG#Q4b|9y>PWj<%97dm_BJiy~MB3#TCDQ8*rqb#7_DfSEMf!#_Fc{?gkOB3c z_3SBtoQ+az9JoGKgm@al+W$YozB(?-CTd$iMNk@c>F(|h=`QJRkrE{(7X&Ghh6SWM z1SD5Fq`NyL1nKVjZmj2d-uL@{AAhmC?3tM}XU^PQXRd3?EHxN6k}O@Sp7R!M*wRoV zWyaY}ezvvPFOc6*AW_z^yr^x&ykNTZhj6{hRPnaK|ENWBK#2to?)QkmO}tS$@&k2@O@^Erx6NMN)Mz#5C-inF(5v$ZOG3O7#7o@}p_)Qe|GRPo^Dg~q- zrP>2W{Ia7lxZlICn|(6a01eb$entGOZ);&uJDabAFDWT0C%|Stth9dYX)>Yk zl2~K%884}Hn0`2r0q~*Y6tmOga};whtMmGUsf#57qnui+Z*-;yte* zE+16vR|Sb66r6`%?<(WfaSb6#DxpJ2i~PR6Z5YkN%fm=! z$j4}^HtRhI-$eDbmhKc^*kXdXtnnCKd!Ltm@I>c3nnLS=+P_Iz_$G32(-OR@j68AU zUCHXVzyawJcN3U*cRnt!3L4R%8Kce4`p&LsHbIKde{Py#OJ`@+%D>UtSS_u3Y(+- znwn)ZBi#6@Vj?=4!!G@2Q^j-ZhQc?(B5k+53#Z5M@EveJSjX>4y;ysXu2J&1tp@p` z%$LVQpU`B<-E;T-b8PswyA|82E0wDYM|gR%79L*{Yi*u;o%ras>sZ z2x~b#kuX+}oHbZ>YLyaD7^D(3=ymFZYqXBAM~h3XFVHTJ`2=A#ZA)Iypx6>;{BF~@=NChQ9;Rr zv{P#{<%20FoR%K!5R?pm)VLfP)V+t&JIWLH`Gvln23XQEQ;9oEg?JnT8dzP?eQQc( z0jo@6^L?l-GkrQ6Uk2b*j`3t3stQMUE6EYYKTMX?Q9BuJ|K_z->`3$O;wiDsix2AR z3AnArqU=}YCD18KZAd7w^jq;{?up;Y7gd3^0#BAB4fu&4|Dgd{_ZGTY}{?k5V!FuBWbV*$!)&-zieYHMEIkXt%gD~<_3lpn(9-*Y0cxremm31aK4 z*!khJqd=2-Y$IwEEh0qw=4D%~9C$A#x(>l+(z#spm}c5>xgv$j2Z{Oof<1B_#oc-^ zv-t&jkTEB|L^vcXIzEs+SqW2+Hoi$h(72n870#Kq#XGa#ob!isGve6?%&e*$Dc=-l z*d(Yz7sizMX`}@^I9cWWGUln|x(2tBLeu?3V-<=$)Q4PWyU%f1LM_{6%%TQ~g(`$> z3OCbEaibLy#9Vu`=5){uT)iyKz$3J{lI@SpUOyq~qYi>#WnDU(9hrTo&Pk~895L0G z0B?fv=BgtK&08^#{a#YMCSjRze(pN8|GtuDp~wP7`R+Jx!Z0-^X~z{($u}Yf>kS!Hzkz05&MHz>xTn`);w8mQ(<+o z_AdoIIlaFxF((&BNAEU@c=_=U^XM^;lxCoWq9Ym_Da6QzXPaC+^RUoX+~OEAu0#!D z4>nb}eN)|)nnJ9=#|bXVGihg9NQ#_)_d+#34w;H-W=`&59JoZg`gvbBPFo*TK$v5B zj-@yW(p$KtZorh~{pLpO>s0u_Y#FUTas3s~CK zO@+zDWsf3*p2f%?a}@}DPJFsWLcudOckqzi{#oWbBepQunT(L%&3A9&Z{VQ7!Aov5 zf-hvJ%7Li6DRud-nt`ZU1f>`R>*Ec}AM0x&7m%BEKwL@n{Mn>Kg03V%r)UG~=e8JK z+w2-Sc@(#Y6m&r?_u8!Mw7$RRUvxc`0%P6vp7q{1ejQT#Fw5dt&*Ohk@kCmPpVr~>@m}$=v?Fo zq2b{ke}JR$QpL+|oF!Xemio%}&;!X;!Or~o!!V;t+p(ImrR>6j5^rJij?R1yuN3B; zFZpRZJuI86F}a$Lb#e!i1-vd;*3N0*h=bk>4dyRb)z?sAk&w;>OE_g+{@CA4k994@ z-{rr^I0C7sF0p7>D-7TUk+zVQ8*-iiH_E%`<(nu&qCvTC!AqKN4K!xu0^(342Pgf? zNpv-z86;OZHos?igqVnkgh)SLe`0z_KQvzFbx@L~>*bqp`X zH#6gv&k{NX#uPfPZ3N@NRLX~&rvu*{#54J|3^N`GCNQ^20+%DeuMpBb>ZN*cg$a?( zE6#~V$hWYFr#Mmt7k)!0`B3%(frECi4?N(5E9bm&uiH7!axZTuek>2`NDLQ;$vAdw z7FJxWVP4t(mcLE?wTi7NtC1F#i3y{KRB_`0;jP2f*@iWNx8{l3dMSrqT+o1lYV|r| z+9hX?%j|>!IDdjIQZ_Q9^C*(`2RVd_2$}JjIXp5arfTO98{9svpc(p@hN!BtL@CP= zN0*{Eqz3Z{a?`FSDqeUw;>9$ihpK|I=p40iyaRra%q$jUs#>Fv&as)X$M1&NAmQHO4!-?!;8n*QSQPG)r}G5p_T}~^!KdMv6`O9HoOu_ zTl87yB{rsghW}ohC}5%om0xvYwE(RuHapGY@j4RTUP|9&b%eW-)ov>gZU%S|s?EZMce4AEmW6 z=7C~p<|5%@?xODE!R=CS(W+d{R<2R%=cO329XV&D&~yuY2P!xhtR)geoyzF z=}ynj@r!KnY7}`!7tzLkdCFwv`<9bd9Y4*!nS?2bM0m1}-^1rZw{e?=L4K=yZG^f2g5IsGs#oM$ZX^4Ry0YpP@`xeVCJKD9NoBoB3 z$*DDn8FRMbRp}^lHZ>PKWJvGpMaG!7a?JBBd#XX#qID&}ukMEZR zMuyd|5m-`gKQFet3qTvNUnJRse21RlMTw2_!hloTiFg2dPvkIpL;sLHrhgPkaO9hQhx zb&E{{F&+G;<+h|VS_)+7Y8;7fUlN(kQ1fFDp^_vudMo5{$Gm32d@Jg7cA| zD^?jA6%<pCBFBL zaEyrcN2t5+TUtFP*Gp%J+5o>sxkkE{(1iiF6vp!iJI|%oce%iYtl9i7CyXMx}eR3)n&Fy}iaAU=Kk!yMhDri4hUpim@I!gvGq0fq!7 z66xxrN74zMDx{&P{@ziu*!pW$3XL;76**GC!yDD(`wm_p2v_!Kde}4SH}}b)D*={2 z#@dqVbce%_O1`5(6loBp7I#t$0BtA|Md(nM@jH4W5yz}H#x!GAWcTQe!WbC_?eCqe zc%#YWADLD^%e-$(q6qxhoWT+sMi-a47()15^H966pMP+eMPE_zt<4gCYFXK*#_5Hb z&5K0w&F5p|S&+Os8IV&*KR$r5(&$9B)X*Ws`i{ST?w3gPK8jRFW{}NQ!%O{P*e<8B zu4yh8nl0m(U0*oQGd6brC%jSz;PC^J8Z?3`H&Y@a&}5LKx>o~v7INyM`P0uN_kAO@ zeCKbJ<$L;cZ%13Yt~l>m?LRJGx5Q0vDEg4VT>IgMwihyAPvG-NbpyvL;expq-?w&4 zOg%P&y!Uyeh)_MjqaY@hk?14UWA`kreasS>aI{S4z5(mo4}|GDN3I(l1C&DS!Xood={Q}Vd)b_695PFtd>Rz+7Y*b?-zyvV%I zb?RaAR3F6hFhyyo?u~`%$JR$o6oFTIEVefG%QyNU@8hB!BcJhTL0#qIJp0OFcWu$l z#fL?KiWS6~uoMOxAtSL(6TYIr?AtT%Z|TRM#fui)J?orH=53ByHc~DTPgQ5+uPaNh zrLOfnDogB#-Fc-p(?2^4xO8}v6a|V`5MNag7rY=B!mdcs>d+hMj-IL@#@FpAH0-I( zOuky!X}iVCJ3NHc_CeViKtxcH1`rC}*)35;L)ðX~n*$e}lx|K2WK5#oMh4H}t0 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 _s3ZtSth7J1+rFT-u%Dt{ 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