From ffc51b2927bad0c1efbc92f9700643650c71ae10 Mon Sep 17 00:00:00 2001 From: ntnt Date: Mon, 19 Jan 2026 11:57:19 +0800 Subject: [PATCH] P3: main --- task3/01_distance.py | 119 +++++++++++++ task3/01_distance.xlsx | Bin 0 -> 70783 bytes task3/02_pairing.py | 209 +++++++++++++++++++++++ task3/02_pairing.xlsx | Bin 0 -> 185363 bytes task3/03_allocation.py | 220 +++++++++++++++++++++++++ task3/03_allocation.xlsx | Bin 0 -> 21397 bytes task3/04_reschedule.py | 237 ++++++++++++++++++++++++++ task3/04_reschedule.xlsx | Bin 0 -> 15738 bytes task3/05_calendar.py | 332 +++++++++++++++++++++++++++++++++++++ task3/05_calendar.xlsx | Bin 0 -> 72006 bytes task3/06_evaluate.py | 348 +++++++++++++++++++++++++++++++++++++++ task3/06_evaluate.xlsx | Bin 0 -> 13940 bytes task3/README.md | 77 +++++++++ 13 files changed, 1542 insertions(+) create mode 100644 task3/01_distance.py create mode 100644 task3/01_distance.xlsx create mode 100644 task3/02_pairing.py create mode 100644 task3/02_pairing.xlsx create mode 100644 task3/03_allocation.py create mode 100644 task3/03_allocation.xlsx create mode 100644 task3/04_reschedule.py create mode 100644 task3/04_reschedule.xlsx create mode 100644 task3/05_calendar.py create mode 100644 task3/05_calendar.xlsx create mode 100644 task3/06_evaluate.py create mode 100644 task3/06_evaluate.xlsx diff --git a/task3/01_distance.py b/task3/01_distance.py new file mode 100644 index 0000000..fb8a012 --- /dev/null +++ b/task3/01_distance.py @@ -0,0 +1,119 @@ +""" +Task 3 - Step 1: 距离矩阵计算 +============================= + +输入: task1/03_allocate.xlsx (70个站点的坐标信息) +输出: task3/01_distance.xlsx (70×70距离矩阵 + 站点信息) + +距离计算公式 (Haversine简化): +l_ij = 69.0 * sqrt((lat_i - lat_j)^2 + cos^2(lat_avg * pi/180) * (lon_i - lon_j)^2) + +单位: 英里 +""" + +import pandas as pd +import numpy as np + +# ============================================ +# 参数设置 +# ============================================ +INPUT_FILE = '../task1/03_allocate.xlsx' +OUTPUT_FILE = '01_distance.xlsx' + +# ============================================ +# 读取数据 +# ============================================ +print("=" * 60) +print("Task 3 - Step 1: 距离矩阵计算") +print("=" * 60) + +df = pd.read_excel(INPUT_FILE) +print(f"\n读取站点数据: {len(df)} 个站点") +print(f"列名: {df.columns.tolist()}") + +# 提取关键列 +sites = df[['site_id', 'site_name', 'lat', 'lon', 'mu', 'sigma', 'mu_tilde', 'k']].copy() +print(f"\n站点数据概览:") +print(sites.head()) + +# ============================================ +# 距离计算函数 +# ============================================ +def calc_distance(lat1, lon1, lat2, lon2): + """ + 计算两点间的近似距离(英里) + 使用Haversine公式的简化版本,适用于小范围地域 + """ + lat_avg = (lat1 + lat2) / 2 + lat_avg_rad = np.radians(lat_avg) + + delta_lat = lat1 - lat2 + delta_lon = lon1 - lon2 + + # 69.0 miles per degree of latitude + # cos(lat) correction for longitude + distance = 69.0 * np.sqrt(delta_lat**2 + (np.cos(lat_avg_rad) * delta_lon)**2) + + return distance + +# ============================================ +# 构建距离矩阵 +# ============================================ +n = len(sites) +distance_matrix = np.zeros((n, n)) + +for i in range(n): + for j in range(n): + if i != j: + distance_matrix[i, j] = calc_distance( + sites.iloc[i]['lat'], sites.iloc[i]['lon'], + sites.iloc[j]['lat'], sites.iloc[j]['lon'] + ) + +# 转换为DataFrame +site_ids = sites['site_id'].values +df_distance = pd.DataFrame(distance_matrix, index=site_ids, columns=site_ids) + +# ============================================ +# 统计信息 +# ============================================ +# 提取上三角(排除对角线) +upper_tri = distance_matrix[np.triu_indices(n, k=1)] + +print(f"\n距离矩阵统计:") +print(f" - 站点对总数: {len(upper_tri)}") +print(f" - 最小距离: {upper_tri.min():.2f} 英里") +print(f" - 最大距离: {upper_tri.max():.2f} 英里") +print(f" - 平均距离: {upper_tri.mean():.2f} 英里") +print(f" - 中位数距离: {np.median(upper_tri):.2f} 英里") + +# 按阈值统计 +thresholds = [30, 40, 50, 60, 70] +print(f"\n距离阈值统计:") +for th in thresholds: + count = np.sum(upper_tri <= th) + print(f" - ≤ {th} 英里: {count} 对 ({count/len(upper_tri)*100:.1f}%)") + +# ============================================ +# 保存结果 +# ============================================ +with pd.ExcelWriter(OUTPUT_FILE, engine='openpyxl') as writer: + # Sheet 1: 站点信息 + sites.to_excel(writer, sheet_name='sites', index=False) + + # Sheet 2: 距离矩阵 + df_distance.to_excel(writer, sheet_name='distance_matrix') + + # Sheet 3: 距离统计 + stats = pd.DataFrame({ + 'metric': ['min', 'max', 'mean', 'median', 'std', 'total_pairs'], + 'value': [upper_tri.min(), upper_tri.max(), upper_tri.mean(), + np.median(upper_tri), upper_tri.std(), len(upper_tri)] + }) + stats.to_excel(writer, sheet_name='statistics', index=False) + +print(f"\n结果已保存至: {OUTPUT_FILE}") +print(" - Sheet 'sites': 站点信息") +print(" - Sheet 'distance_matrix': 70×70距离矩阵") +print(" - Sheet 'statistics': 距离统计") +print("\n" + "=" * 60) diff --git a/task3/01_distance.xlsx b/task3/01_distance.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..64afdc6b22d25e56b7d4a98bbf32653250bde925 GIT binary patch literal 70783 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 {CV_MAX} 的站点数: {(sites['cv'] > CV_MAX).sum()}") + +# ============================================ +# 配对筛选 +# ============================================ +print(f"\n" + "-" * 40) +print("配对筛选") +print("-" * 40) + +candidates = [] +n = len(sites) + +for i in range(n): + for j in range(i + 1, n): # 只考虑上三角 + site_i = sites.iloc[i] + site_j = sites.iloc[j] + + # 获取距离 + dist = dist_matrix.iloc[i, j] + + # 约束检查 + # 1. 距离约束 + if dist > L_MAX: + continue + + # 2. 容量约束 + mu_sum = site_i['mu'] + site_j['mu'] + if mu_sum > MU_SUM_MAX: + continue + + # 3. 稳定性约束 + if site_i['cv'] > CV_MAX or site_j['cv'] > CV_MAX: + continue + + # 通过所有约束,计算配对价值 + sigma_sq_sum = site_i['sigma']**2 + site_j['sigma']**2 + + # 价值函数 + value = (ALPHA * mu_sum / Q + - BETA * dist / L_MAX + - GAMMA * sigma_sq_sum / mu_sum**2) + + candidates.append({ + 'site_i_id': site_i['site_id'], + 'site_j_id': site_j['site_id'], + 'site_i_name': site_i['site_name'], + 'site_j_name': site_j['site_name'], + 'distance': dist, + 'mu_i': site_i['mu'], + 'mu_j': site_j['mu'], + 'mu_sum': mu_sum, + 'sigma_i': site_i['sigma'], + 'sigma_j': site_j['sigma'], + 'cv_i': site_i['cv'], + 'cv_j': site_j['cv'], + 'k_i': site_i['k'], + 'k_j': site_j['k'], + 'value': value + }) + +df_candidates = pd.DataFrame(candidates) +print(f"通过约束的候选配对数: {len(df_candidates)}") + +if len(df_candidates) > 0: + print(f"配对价值范围: [{df_candidates['value'].min():.3f}, {df_candidates['value'].max():.3f}]") + print(f"平均距离: {df_candidates['distance'].mean():.2f} 英里") + print(f"平均需求和: {df_candidates['mu_sum'].mean():.1f}") + +# ============================================ +# 贪心配对选择 +# ============================================ +print(f"\n" + "-" * 40) +print("贪心配对选择") +print("-" * 40) + +# 按价值降序排序 +df_candidates_sorted = df_candidates.sort_values('value', ascending=False).reset_index(drop=True) + +# 贪心选择 +selected_pairs = [] +used_sites = set() + +for _, row in df_candidates_sorted.iterrows(): + site_i = row['site_i_id'] + site_j = row['site_j_id'] + + # 检查是否已被使用 + if site_i not in used_sites and site_j not in used_sites: + selected_pairs.append(row.to_dict()) + used_sites.add(site_i) + used_sites.add(site_j) + +df_selected = pd.DataFrame(selected_pairs) +print(f"最终选择配对数: {len(df_selected)}") +print(f"涉及站点数: {len(used_sites)} (占总站点 {len(used_sites)/n*100:.1f}%)") +print(f"未配对站点数: {n - len(used_sites)}") + +if len(df_selected) > 0: + print(f"\n选中配对的价值范围: [{df_selected['value'].min():.3f}, {df_selected['value'].max():.3f}]") + print(f"选中配对的距离范围: [{df_selected['distance'].min():.2f}, {df_selected['distance'].max():.2f}] 英里") + print(f"选中配对的需求和范围: [{df_selected['mu_sum'].min():.1f}, {df_selected['mu_sum'].max():.1f}]") + +# ============================================ +# 显示选中的配对 +# ============================================ +print(f"\n" + "-" * 40) +print("选中的配对列表") +print("-" * 40) + +if len(df_selected) > 0: + display_cols = ['site_i_name', 'site_j_name', 'distance', 'mu_sum', 'k_i', 'k_j', 'value'] + print(df_selected[display_cols].to_string(index=False)) + +# ============================================ +# 保存结果 +# ============================================ +with pd.ExcelWriter(OUTPUT_FILE, engine='openpyxl') as writer: + # Sheet 1: 站点信息(含CV) + sites.to_excel(writer, sheet_name='sites', index=False) + + # Sheet 2: 所有候选配对 + df_candidates_sorted.to_excel(writer, sheet_name='all_candidates', index=False) + + # Sheet 3: 最终选择的配对 + df_selected.to_excel(writer, sheet_name='selected_pairs', index=False) + + # Sheet 4: 参数记录 + params = pd.DataFrame({ + 'parameter': ['L_MAX', 'MU_SUM_MAX', 'CV_MAX', 'Q', 'ALPHA', 'BETA', 'GAMMA'], + 'value': [L_MAX, MU_SUM_MAX, CV_MAX, Q, ALPHA, BETA, GAMMA], + 'description': ['距离阈值(英里)', '需求和上限', 'CV上限', '卡车容量', + '容量利用率权重', '距离惩罚权重', '风险惩罚权重'] + }) + params.to_excel(writer, sheet_name='parameters', index=False) + + # Sheet 5: 汇总统计 + summary = pd.DataFrame({ + 'metric': ['total_sites', 'candidate_pairs', 'selected_pairs', + 'paired_sites', 'unpaired_sites', 'avg_distance', 'avg_mu_sum'], + 'value': [n, len(df_candidates), len(df_selected), + len(used_sites), n - len(used_sites), + df_selected['distance'].mean() if len(df_selected) > 0 else 0, + df_selected['mu_sum'].mean() if len(df_selected) > 0 else 0] + }) + summary.to_excel(writer, sheet_name='summary', index=False) + +print(f"\n结果已保存至: {OUTPUT_FILE}") +print(" - Sheet 'sites': 站点信息(含CV)") +print(" - Sheet 'all_candidates': 所有候选配对") +print(" - Sheet 'selected_pairs': 最终选择的配对") +print(" - Sheet 'parameters': 参数记录") +print(" - Sheet 'summary': 汇总统计") +print("\n" + "=" * 60) diff --git a/task3/02_pairing.xlsx b/task3/02_pairing.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e8bd422023cfbe6dae84da19c07c2f7d0eaeefa9 GIT binary patch literal 185363 zcmZ^|V{|56ur?eglVoCZV%xTD+r}N|j*W@Ui6^!*v2EM7`Q|z2&v$-&YxVBxUTgR6 z+SjVOs%n>_3^)WD2nYxa$bue=uDEs&eBk$6?e{?X9;OZ^ip~y>00tvRM|uxCTe%oH zxL!si(J$$f4STigUrfK|3${nRB{|sROhw#6-hnDTv1`1WjL~iAqniCB?rfp`CBDcb z5+F@*;(a1>rPvZ=I98ejf|H(6s4Euzq&2uh;D+e3ER&h<_~(t>M|d4a@I*q7 zbU!0fsDYTX1BG2`U|wd_u9T3Y&<#ey%7)=wuxa5&bMxSzs(9jQ8k3fTf-Y}Uu*~7S2y|1rcSu=nFH(@aW#MWO*)k9%WH@4 zsP^`ETU!XI+YHUjO8N(m_#{ELNj(ikFL6~+Tm>P-FR>| zjm<_m;z4XHwdeF^-`jQ-3jJs(u$neqeq61JFE0D7qA>U5vvrnfnFae>M`6y!ePb>r zVz6@B<7elMLReo_#9;Zf%b689#YdG*;R%MNu=w7Y7Ycggf#BRP5KTw7#qnA26n&~! z*Cd=3{PqnY-D}NDt_bAM!2yUxt6A(6R&nR-I7kE#j{X^0MPRj1Q{;AU!mMuG;uKY* zA`VQ(aKM8^Akn~j^~XbM`$!>+SGEuLq)n2aRXJ$MMSJE{;yd7YKer@tNltjuv4i%< z%^Qi1Q5c0i52`aao`o=Q>hUqYh>Usa>IL>pp4WmMu1bdmVXqguy$L8>M?Xe!ngYZ)8uz@kTT_f2IM zFFq>DL=qg7P-rSCIZ7#)ubd?6Cr#1nXV#qHbrJ*Vt8{#%CHLh!z z*QiQ0&;>r$M@XHs5s;2KBjEj6HO^A;i{XVIl)Be46Pskg4L~a%feXs{}M36Lf*6z@E>@2z;dJv zb|_W_dV_w=ta9|0KL>Vm`O*7K6M0K^uJXxtuC?BQ<`Wv zPYe&KRwq&|bLDoQe^~P8++4h_kOo(0Xwi{i#K{EI3z4?GM~z-n_y0IH)gk*araEWF z5s8u`jB9_Q@*thObWq(&*}|){e^Q<2!cRN(!fSBUFagIR((EjA+LYAUNX{vJUpww7 zPcR10W5Jt%-{k%WpY82Y&uyQih*2d~qy`v@(Y~6>9ovpr znXA_-4b`H2bknT1M-6{UP3N|z)0(dVU4H6Qt8zFO9$6j(4n@)=3A0!_{|;NF^N2>O zUyZX%jHL-B6{}36tu`1ct|2l=e?_|L~Hlx zrB~VjyI@sj(*?{?k%%5X7H5%VRkFLPRdTqHwO!STcAQRfLzzA=`)oRjuQmO7z6MM_ z@wk;DNx}{7=irpR9QCkorvNP3#5x^02(?pI1L?di!H`E~2_X z|8D@vKg1vx!v4+#96&&@{x^WQJ2=|_EX~YZ01W>l{wIngXWIeRI1&86B1>|sVWqAg zir3P~-6}R4nzNglKRgOZtX7i%DtI% zm7Uo?Ze5r+f9)-lon3zVx;1s_FRWP`u)04WR0ADW?G|=oFD_O-t18Pg`=XjMS;&I< z*3{27%9|Y!y58nHedgBPGasrx=O-VZ*6bGebCxm>j|i*x%eT6oJ394TZ!j$!w${~} zA5z=imNrT-{J6ad4$S{my1%*BXEr`O3F!Yz^z*wyVBnN|Z>;jWg#OAIh;?3I71%|* za`^Nh+r?kVd~J&oQGMbowiaoF7f76%buA17Sjhj#uUW(b}<(3hRa zEbT6^b?QC2bzPqNRXc2Exq49CXjm*MF!1{Iz_~9p5qO@6eHLYw;d;)z4@YHe3`b$S zVA@?t=mR{@gEs8T<5THk|1EU2KOCCN;+uUY3yACA@_!|qLBD3OG`!ZIEPP)(2TsMj z9mx)p1fh#+s3LwH@2uX%3)IIM%CcHS)2BzGV+Uw!ZL z#%(NMud)IBygo`h1BzG_Kq8;7%D?Aio&X&fn;KQNa29E zQLH$1tDo1jG8JG`>H#}?jOBup)QA%g%R!!?svp|im6aB+(D{BEmW;k0^<8KJNnoXL zdwE~Rk%Xf-8vY0f(}nVuBhg)?ebkhN3&QPxf@%Y?OG!_SUOf>-Z!Fo6wnLN+gFyMJ zJU=Qt`8s|UduGqPdoENCqE(mff>tENY~1Ry3@@J1(-~afYC5YV=nP9C zuTP+R2(nwvPz9x3QfFhlKl5r56#Y#Iw-bPzlnwrdNyyTn-ExjDHO`bhxmiysSVWy+ z8p<}MNg_*J_7G3D5F8$CnJGu~7Qu&30_AQT^#^Sm=N6cmZ{?Cu>SRHi+s$s*`PhU!8p3EPUR2 z%2#xGp16FP7k=&zYQh3{N)wnyhwon=-(N8F^GS@QA5Gf|>YYD0Vk<zLdg-`Idjvz23%VUhGVIHcnjF9uu+52KDS=reAYF>NWX!CyeF`F06GG)qR5(0oz zvEv4V7qC5Xi^^h;$T4@oBi+H7fL5Xe?i#TPs7fvDw<1$kjvlWfr&WlWE~wP!4XORW z&UK>)^uMk_UA3#Z>Y1VEGTOp)3moYxhc|{GVCY#evkc=0O-;f7VF53QMx_3O%gQUH zmBZ{P6#~ftOQv z#u9OxR_#Y~hCOX446>dif-%z6q7}VPm4<3@7xjqo zeoqkPf-%{7G{>fB#G?z4F0vM7{siv#<@H$GTmF{kSLUv_5u+UpTHSq(&Dl3eMy9Xg zF|K7-w<~zH(Jz+%NfWUF0i21DG^;@I-;9SYKA-|mRn>HUV?-E?mXfAPh8E@Lsy+YZ zjg-RG$&<>3k)zRGKBPp#csQUVq(>^W?yPYTg0x;hcl=XZRz1{U9Y(}xI;3Y_Hy@65 zvnX*tI6#Jad`^9YQxhk4PE-eV#C99$FR~X>3dAcX>=+*0)LFZE7eP6Ot|U}-w=AQO?o)<{E-}Y{wkjonR*!>a1}H*de5w{8c7t z3I4=KCh6e&1DA&s%&X@H$JwWuD?@EMY#hU=^-&8x-h6G0)YzP3$HR%!J1c0&uzau_ zKaGqCHF#S2LQ$Uon2;`{Nq8E8bJ`v4w=dM$wjTS{zX5#2~}*7AjT5#mH$=3Y%n-voY5w)SV4q1BYt% z*m{Aksgwyhb7M;JHBQ&$qliA;ABT-#@`Qba36TFBCJvX#S}RPA8h_NXVrpEhgy|lJ zQJVdmIC1`XPW(5HsFpCs>#Y`Db)&=#N>bOyMbV$M z34LHBoGcZ{5WG+Dt{Z2 z^SM6aG2OZK)pFBYw&p=uacw+7nEADD}{KhivjuulW zeB4*JqYPEe*v}R*GJ!Su2ZzHusE~t1tAO1?+B;I#XdGf{WO6e6Yr!*YWu}Ge&yn6Q z!(mTM=Z?45sw$28tDjKEYHQV?6ZC6sIketjLHhWN8uFt#ztUvDvX&yxoP->5=61>2 zb(fb}Atm!*6J5*`zHPNNi?tjiNME)s{6%Xza*VRPBcosFT9bWodplDPWv$k23%2?W zi-$Z&ddqRACW1B*k*h3QeE1bengjvU2l5khy)zQNLxnuvoVpt+*=!v(w&Qdq9VG`U7w*53?9Mc0>o4D<4QpgkqN&_j$L&e{%JID%%nGmVW8A`v6Y| zu^K^5EPW^ou8VlK;qBtMOz5mxW65S`$IkT;UWr7EIv#~^up`(bHYxtg5#%uhv9+au zI{RFN!K$kYWU723;8f$zp`myp0t_DSo?DGftvHQv3|u@EKx@pHX-m{#ut^tDTJ~Cx zy?l56ca9sKhLASF4E1f}w-o6%6M5{G!d^U1|K3Jc@ju{AX(mR8{0B{5O;BJ(S(QXX ziw36~IQ45w_3j)TXMFPM3YoAXFYWDR7fr_<;_cf+M)pMiWX?s>abFPU61z3VFzyc_ zcY;}~;*4F0&?be?rZ1&$j~xGl8vXFlh}8bZDf|Hidrh`Dr6-TV3G0@WVKzr3ra$)r zu&Lf$@BnSdNMO>u)B1(yaf405EI!zeRoD`(V*Q+q6$FFnq{ejlz=V|#tRp%74!^`% z{xBhT%SeSLr|@a_;)$}F1tkEiT~bHxFuZI5oxObPD}=m{Wm%(PdN67#s~k}MeDS&k z#zwQ?%`RSMBd}Vfb)_IE*yD+Wg~9(x4${`bk=y&v75bBf@2!o?))b!ltHNr2WG%bK zEJKrfb#zsl6P}$Gzi?UOO>k{kn|MMMa~0##5gW!z_z_pi`hHF;NM+Kr+Wm(qILn$P z)Gd|?d??rNbi~2si0x|cxTS{GF}pvrw2%1kjK2jIQbje}h}|^$ z4I?%=S2q6FLCB(ERkh-YC` zcZ{;B$}&Swk`u18P?yt@Qb9%L!+ht82V?NxD-ZM&ey|BbnB`FZ$FPNj5t(7Tp0v+D z#upiz2l}uFV-fFH=4Xi+-6tQQmVL1?BA-8XY05 z9h4kPSxY~;1LygJyAxl8rRO2@bA|kh0tYD47}887s7Dq^^%V&uz_r5&VU8qpO>!eK z`QmKAhVh0UqWpoiD-}=mbt|?RH+T_3El{Ylls#vgtFYTV+ZdwKC%p&kXV%&c^o$Pk zwT!UrR!;`sDR(IVriv=Cppi*Ng*?ZHdHqZJ=PYUqdEEF9-LCL%295=Lj+xs$RG3tv zw0s!J&h(eY7|!#~OA9;<@q2##1ii5sWimBuMvunp|aY+zKoyx6*XnW3?( z#uI$i4@>~m5`*z|o%Pz#N*D=5mFJ9Z0C-FiK<>vnTF-X0!mCI))?bpIp#0`pEDJtv z>Ll6vHB=~iSA>6THVBAeeH0xS$JRz=l$Kui>=2P$UYVGAPXeb`;n+@WOd>d;GaTFC zxE@Qp>yGb_^1DaVs6**6rw%~-n`~IjNgX^*t?DGXHtcWTVdZ*fhwmcm)N@RmTK348 z4)*kVWfzHN&FY+pI)3Z(a^J9Zo8#LL-Qfu38<5EXB+gG4g=drRMX8H&pZqFu(ELNw z6VSjhxVj&nd;aY>8OJ$H98L zDia5xJ1t3AmR$Q2KZl$S979QQ8zQg_Sr0iaEm=5=op5Z!KQ@W2$hp`xt(*nzvEq1G zgBNNcncWWLwDO^yMG*FO1?}}A_6g6b?2P~I`7Oj_8FR)D-3x#sfdhqMVkdJLBBynl zrG76?!@4^y6VmN167<+mjFFfm-*Y#E7C8fJvXWN^S`h~2`W@#?T8RcsV-60*G(V?` ze+SoEuX;T;zC;L_sD4RRt`E{9RDBhy$COTAGp15}B(9lzuX@5$^w#!B?` zt&XWc(U&qd!}Ivaa?|jJ4z=tJ$lJLv1?>%mf{fVk9vzASeQRVlF3peZ=4@@+Y(p4Z zwB6fZogPcIt_DqDt`vqCEnZTpT6d-iY;70Qj-T^#Wv0cEH!CEAlcTZq&Na}4Av+T~ zc+IwF_m?+n9$n&KO|)b`vT$-V#N?I=+KGmIoLo2WC-di9YK_6pJb)8YdQD4YO+MC$Gm<%SX! z+Dk-m@HYuY+XFx0AmtkmxtNEaW^n@&hOJbGKcV`S^cKqh|Eh@0Xia6AxZz=wULHcceJV?CVvoL3}2F+gW;*|2B= zx!tV)GAL5f1tzu+fLIFZW!k(?%N%q5C^r0AxoP_-ksmCly~Sj=kHp#hqiIc3cY6(i z)=oviZEu=`CRz!rHlA=Awxh?x)3jptFl~d`9B~_>6S5zusSuxkk-mW-HRo*J%wYWJ zAP164`wC1|f4pHPsP zIMY#?%!D8D*og6TN=0~+;Q$~Y=*Gp zYFNW-@UzQ&Yws)WR+4cPU;2|!eA{}!=2GyRui`z1AZA==`t4JD>aIGmT@8I4;k)lBuarG5h=yiMNDo6oT3>Oq-2s@zVia|9{R_#s5}LAaZ_K)%XXCouFhVhPkuvGvP6nB~0OJd{b?!*$$@rz(mzPUG;l zwYLB6wm1qHH=?u(0E&EsS zwBc#@wb{0>coM|$#oZJ$L9;gvXZx~$|6?S_goe6Xk8lbQo^BzN@=?*KwhOLR6ykk6 zI{==Ki_s#pZ)l4HE0^UuIi%D5TIAMfU^rD?s%}7MRSNH*>9CDGZ%RQGYwb{EN|k3ziOp zv2cnlrM?~=9xW^m(gLzO)y2#I@izB1armb_w_lK%l~ohdv|j= zcY0GY0p9q2c5||~!SXRxLilxmQc^Op(S9L9c=d&rMdSDC@wBsp==XB>*!6L7!r$Wa(b-3p9y?kYkYM%_|Rt)t{8uw^&O@vB>D+#r@nmN+-$uI zOm2M)5#mi*0lHpx(s^17{N6jbR@b)x2CRu+FO_QoK>TFFtj{-@tFw!Drf6!h;WqR0x4#JU?QH*|72Q|3H}d&t z>s_j*vGv}*I6mr168JhfIyqvoi$cJS?d_djI_tv6Z1r4RnL-|0q#Kj5mLGeJ^UtnKUu%qF?mi0W!069+dcrk^O|4oH|6UC zC(KcpoLTJZR30-48SO_;TLS#!_M?k{FCY;3^m+I3k>w&sk*M)Ig>T`~TDmlpIv8%V z>^}LdT|ggZ7457XtscfWr7~yIDAY4qrkqdgmC6g<*@Y=2rDYVpfRGMzNwhi@S!^=- z+;s{z8dM6OFh(-h zM9s<1(^DwnI(iQWos*!M8bm{AmgN(4;;nt4^OeU(r==dRV-fNUs4#I1of2Mqab+@G zFf$#}#vFwkjc=-w1l)E`!m9~ncGHynDQl#KbWoVy3UoJDEWZ=QE9UuRjr%r%X< z?T-~7a=L)8+x^0oERwsCWJXV^as5>6k9GO@#!nKG2WT>NHTn3Jzz>o_=Dt)B96^{W ziY4XL%mv7IR^J6lqrWS2QrU_A`n$}c%2YUZwxt|_qZ;kPHL)=WqTFTw%1`Gf#=K{K zHb|w9QzjO&Ja4O%;B!24GbA3A%VIn`hsa{ckdN7z-tK?)eYL;&-o1Zrw|~6=pBi2a zLjCb|_;8%Hwm$%dO4k!_^YdKwImSV8sdIHtvBwRHM>TQvO8Ol`mA)23JBEB zC_k_7uZ;lLh;``vANSAqz-CtyV6*4zOCMt9O6APy#c5w(``bhXjJ$;;6og&Gy^iV7 zYs`A`;x#*eofGjs5)xB|D5AyOW6~(~Fu|k|+eq{u5o%~=IAChVE~Jb2tdzGnh0nhx z-NFGSq3{*~Wy+E5ysdN>Ln0?ISz?JWrd)JZIL`|GzE`OzaGat6rI6_v+yu2b*t0ZW z{o_@QJe#?&fnGd$+^A)Vn2e%vzRfKM-}Pw$saFEu!f(cXe%a}}t7f1B1X{R0$4=$? zws?C1+cHu4fMLlcl_6~I+Th$dA;)sHL^5aKUZ*|lpE%)$tj%3i?BXezy2kFM3U<8= zy)dZf<>D<^I>q=Z+9IiP=az+-p_-8;7vvF$hth^DQuakVT2Hh};cINPLCY=_oIkdBXVfWt)grEa2*vyGD(3`DsO+R*O66H{!CoeAjt>o_8*Hwyp0-9DMu=>27w0 zp41Z^h71(Ck#Ud+_#;9DjlTTVM#EwpqVsplW3X??o5we&!;yNv9R;1Wml&L=e(hM@4bXG1^71<5n44iz<|UuCdRz%#MW}k7Tti*ItN%DlT9y7` zg(OUEwu@)Mx=b4sH!j&_UE~mZflQTdR6U_QOU*R%xu!Ql1^E)9yVv`7f;la-$WYyq zg?z;!VEl=H21=3HeLfPJ!80KN`)4cPEryKq{qwcM>y;m=QU0QWijIX;M$81l6XpYI zny-PYvfVT0rK!WDBt-|!%3$aDXPL6%o?y}xNW8HQS=aIgmz%^J!AU3?r!wh?WwJ1? z0o`^gK`Dkg#yg&>#YLFt;_l}Bhy}?KaoIx6)D$^uy22|#@G&o#h;Uadrjvxt_n-<1& zh}CyIhkrVuA%0r6gpA8qT@vuea|zJIFgmH5QG17b#z(ymEbuwQ2F^M-RnIA|xMJBU4q@!B`@7JFOu?m10 zyP?CNt&NSZcQL8=v$-Jy#L3*Ptq;bt-@zj!tF*QRq^*<*Ie!NXLLZiurqkfeV1C9JRUJ60gR~oJ!wxN<$nG zvI$`AlU)1Z^K4Cshs00%2)pLV_3M0#2&~(`i`XifbfEIY3@OjdVfACW5>qzDU1u_9qA(`~n8-st z1TIGug6aV+b?A{e@$%xN9uqTB(m801SJ_39e6xicgOrgxh~RC8I1sNTh~w!lj{|K3 zB9Y73DoVobKXTh&i+~;8@aF zBs_#)(ySYXbwsS#3SzZSaz2?dke3qNe6@@>A+Uq!A*4xawd)0Fd6$6Ywl4=l*d8Zp znKZ-Kldt_)gg!B;kBRLYSS_q$ra*O+Fx-*U(9ivg&Ik|*v$(Tm0U`-;Jg6RFn5hm? zfsf^j4H0F65`|(r7;3OLDs7FdGeEN*X)sU=y@i>ZRteiYOHqnm;9C96rA<(N_v zI9_K4wB@(JlB8h7-;zqD9eA*ltWPC~VGAr807f#{XYyNs9C{Ff17r9y5APt2<;ISf zVMYg8bE-*K8+@vqYE8$}HQlNFIZ;l^X66t@G7GM_=+an>63)R?gOUUdv6CP&Ug&WV zGU~iqM&_{KjRg+}0R5QQtfVKc(EkXbT0OPliRn{$t7_G9mW)Zc%fU;!OlOtS zH+7MQ@Rd-z^XPx#S}xpL-cT)+{h;k16_bGEATW(g2Dw+CN76f5gf5{sAUf1iM@sLA0*uO|!5v&)wKJ0D1bIuQa%Onx4o#`usl zhLvr2u!IMh7{+Amat^%}2LuG7y5g1Y=GP+wID0D_rOR9p;tqeKw2MlzmLgUn^B&EfG$9cm>>k`5J->H5%{|2l_hiB2aU@tU71d-a zFUwK&2S}n8@pV8cXy-@CoWM9qG>HB}4n`9$fUo{dK2z8KoUVY+zwu9pS=o@@w9wHI zg-SYv#Q-f9Y#Vtbj4!Na_k1f=VAd6t3BR~PyEyytAT~}61d&qUo#-`EUTc&KQtCT=Z8yz7ZfpToA4k>3ypp2ELwn}6CD?vNUP7CQT_T-Ax%TJxx!IC&$_^I{{XMGeSHf%yVjq|x`JZN@ z`L2)nUYIk9T!@cnQ>4`OvdEBdZzNhJ)7Iy8pdAo?QTc$~3;l^$Gd~>_RW490TGRna zipzQ}n<*IbjO!961;&b@tOAvhb`}_6jxx5?653vp+cW|dR7YX%5W0iHq!)5u+q-hl zPmz0ITy^8h_YAJ4ND>Gw4)3q>x14*!uqerR5P`6oo`;zapjHaykB`NqbT||zn5cz@ zLLnt((332fDGpy1f;MAltKDpjHM^!)5rd7XOtdE)X_JLU5H%)3C|sa>RA8w@A(Q-P zJnZw)<>~$XuUZEU$k@{;J;kgBxbwyc&1k>Os2HQ8p3*zm3h`l z>)Ey!V;i9uJ}!m)&H56HN~}_eOB5G`nfM=f-vyRJZ2d|ABi|}vqDhzguL1s(7ABCX z!s}e(ZmzfO!Ff#PjOb|?kTt7!%;%s&wLQbYL!Obs@x#_=Nx-t_y9U^Wl)N_GN+R}t zT~$}%0J3XYFf;oN+w09uH%M3-m*@d6QR8RMX(6J^xeZh2YO?|iI+ z>qm)VO_ur@HdCv%Dp0<4BBoODP^MikSBD4Jm@|%LLL*(4Xr+!1OYfwEk@4@3&HDw* zS*s6Xg>_6uYMl~vqkKjRSCkl$IU%Vc)4GYoW{j1gPDV;u%4_<>2u zzwZMc4-6f^#c@)p-5%FzQ-7$nGK}dHbR%G$P&ymfGQkkrY|CmKu{ttIBhhV|Rs&W^4LAKfe3#$7uA7Gt5dl5?6v*}L>J_mP ztGUM<`3g#r2 z=KY))n3Ki#WMv-N-y0NVArX)6C&M`Y(mt4vXhW01b(fWepceejI#B8!MH^s}2j*72 zhQrx;dRl9^%%!R{Q0i*?j0W8#zr<3N|17CW7f@=m|2_MCj75{$y2n^T5EyOTHn^b3Y;^-@HYTO#o*!;; z2?1Zd17k~bE0paWM<7aErmj3SMWz+^3V2!H;&2z}5O~I1VUoDYbrX|ASX98Rv$(vn zaFt54&~c(fmtb&FF3oodsRXUKL%7a1>xp5pl&|xj;NrJC!U&I74@vG?CTWK)0?md% zG&#bMWKBn^@*Tl0)KelDY56rkaZItZ^wKql!TWEwB9*Jl}H;w8$O?Ms=hQ*n{%4c#=qw4^X?)bO)7lBqUEe2URjFX-A9h zN-)IZWlt6s(JvUt^Bj_a3K5yuCrBlfy^Rh}XAn*B?Msbxa z$WsTvYtMaAL~P4|kQZG9;m~myP|Sw+tTI;=n>3b0cO+3KmHji1%er&cyTA4O@w zkyfq@PS;^V(Q-&0Lr=&`AWOykd)lyPnxGX2ud@*PLI<0Wo=po0lfB)KqE%q!P0pp9 zyFb_|pZ1&&mu=|a_G=p3zd1f;>^uEKgv}<67c+qX(<9#(fC`a^SVe$rlP9MOs+9IY z>wxzTpwXZmzQ5ZKA?<0{GehxMOMVS6C053pSWn|9ja83LkwGyaspdoszFOMFRog%6 z8f>0@B~cetc_lF)`dfg@>~1fgn(viQlsN!%@)8uB0iu_o$^O#_21p>ypQ#qH+;Z-fVE0c9-FJS`nTea%;Ja z$<_V+rUH}`k_Ht(K%MN>Ov?BvK6c`GrddKVl2cOW%Xf=17VhCv!7;%WD~>Nw=5nFA zIL7wP9Q%BX-og*cuyc2U+C4!(7X%QH$XdQ)P|P=LP(`{-YvE`2`N}b3YSk~vx2XBN zsf78WJ`9<_c%hkLsz%-?-l*4E%AEc(zpycsyXkN_%<1*s;mBx$0k@Tb0t1o3qXdP)a#Qj`WTg+`)fL$VeYt)UOmBy z;%A|at`@c!XeD#FFuW+N^Pix0h$}p;b+}BE%^7CwtjpW!P<8b4G&-*V{)P#O-`C=4 zNM9{3!tpP{O-4@gw+zqrK`c1k1&R_NL!0AKJdVg0cQ`yvBKR!K#6fr3f1vYXT3l{B z*uU*qQWqh4tnAvX^&joVdc3==929||G$|6>>{lWkv)LCM%*5rmaxNa3)9 z(BJDhXm@d^5sq z-6b9kWV(kJ5Jpq=V3-O~p+``#gqE;h)K3axC&5S6~z}cP?C1&XWT`bpYBNh7m=fwTGt%K8zflR z^?z=Y1!K<%q8i$fX&45S$a#EPl`2~0$1*UUGrxaO=d|)h#5&r)WLvyI+aJA#h^tO!%m}a3z4({n{gQD00Py@VfDxH zpAFL0aae!D^tn*NX#x{NTldjdmAF>gz(0|6k{PvuuuGYTm$x2{w{-qXw_ zAUSX{;DWZUY864R54z)G>az3B;o6&Fk*z4lO5xf~E$O(n$wb!1f8`CBvc>thisw>9 z9VOOH%e@we8p<;GS9T3C#HPnbn5193b(i1j8YLy|7|2faYOY8E(n3s9??D+$dYVcD zNQ-K(h<=wbt~$%*u0JJ+2Q=BdZqHH~HO$)E4@iQj3G|pC7-EjR zhu30^k1duIuu*$t4^+FRXOAUC1K7x3w_+{BZ$h3+3Y$5xuy|z27a`T`fD#+*qBXQa>&WOrUI~96cbgTGjbfP7fzI~E^HlpF)c7Lm z$aH&>(9-~xvEwgev##|(CKWeTInY@_X)#g z`W>-VRtXRzbtYm$A#K*DQv3oXQ+AY0!3*c5IN}8;QXDNl#kz9Ke9)>ah4Z0PkjzP6 zy=N0fI`7s66J=!9wdl*PD+S<0=cIMh5r7AmZ2@*rSE|U&81u3%iMH!X6)RKbrdU}v zw_+svMN00TGwob2iw5Db;F;P- zF&)R|whIzCZB_d2k5VFG+4-JB5;hM1j$OumUI2E$Z5L!plH=pEaSRR}?9$(KCC~$I z8<);YA+}O=ZpBC>#ICv43KuSjc_BEc>=>K^PI#q7PFqzifnsqnmKJH&LNh7`6wD4; z(fJe;Y2~$6r>d&po6RYaNKeV=NN8rUlkRW?3{*&9WbCp5MRP2c3MsO2?79KP%AmQy zR%NgVM#dK|K<7yZZmum|PFQw~OaWiJlr-Q#WEe%UxRre`wl+I6;wfmJ#J<>#Z1xB-F9@ z-gCZoTe_B}>~)xaB#ZYG~wD~`x2ZdYY8A&<$@JE@dlcs ztSEnu&33+5*(24a2=2wq_bPj3+7yeryD3(tjTndn>qrNoU6Q1IT1E(juXD1 zz=Mi>_JS>` zW`0!7Jevj2kNMCyvW-r}yjNt^aQYt?9ZT{x)(9T>h$_+%rXh4zk-BLnyjHMT&Hq%oS(7)@yuOpYrY zvq^g|eJ*Z^(XKltr&@mdLugg?SE|LztUo+`dOrB;r%#)Y-{1dwaQm-=)5mv4O?_pUiUQM(k#*WYh* zDPEJq7;-O#)VaWxofOD@Zn(Lw7F~0Lt+Mcn7^yqHk0h~n*?RX2j-k3EbEAjDPc5l!B}xp=McYysUy_u`59e zw5>N@<7+De*<@tINF;la{iI~+JGXe(LftVk)y$EBRux52-;yI^K4e8uz+56H{P|WA z?L(#L`0u(;iVVKxAf5ui%8Pzp_ehWd>>z@o?v)@T(1QqyYUamat8{gXkvPDrb5t4a z$#Icn=@wK{;$Y>ZMtU4~NjI9EZ)KQ5N&7&8J@BG;AWhB+=?-SGQLx z$cs%)b~3Pijo<+h-H>Bw ztFMU)^mplK1aR_g^^&Nt{ks%O0NX?~PT8}t2fl)<`k=BEnqXXPB3hy|$8E<#YH97t z>4=LV&1`H{r?@0s=qMu#jMP|CsVAB*3gwP)Y2ZDVF}BdE>Hsv0BYAQ0d?{~c#gdub zSd{^A?p(~dkYYuz0GG~5`Lrmz+a~!J7YgaJwEOdyworwy?f92w zm8&|0Rz(Ol`+k~-f75^e=L?ApK{^?ih^9MTlxBjO^kw0mILZA(Z?+?$Rxt!F!#(GaCRf zxW>K7BpQ;l$kmIO0F)vrlW5Fq+!Z>eR6E&`IVBxvhHou18=943b1O#T{98vljcZ&G zGcO(RI}WE!{qRx`JA_tsXKb_Rm#=rm-aJ0BOgef+~Rh%^QnorXORZjS{pNr7460>Gqk_FUMxPN!m*F>)6;W&1AK zhHMLykFE2~KcrYRsf1h!w0V~-zMd3aSSacJ6vL3{`t6}#nHO(MqPwGjnw69TjjH}i z`<6*LW@p3FEBF>9OVzb6={Y^BD@WQsxj6!C7h-9cn-k1ZlWmXO9Ka3=v9x`1bDCt9 z%sMR1%*`=dZ^cOT<&b(>J$)CshO)pFwH;T~fcTJtYNqBilPp@Y?0;YO4a~^XhUI8i zah?9b(aTaIv6R`sthaM<8ZtWB>gycA14Dj~%$z1Na|VX|Ua2|w{>qZKQgg&WEQ5*c z*_0a%xlnYV@0g+v-SOZ@$v(&aA@%(+rh~x#n|XpGKBxmum#i5|#=g zQ*!{oH#;~*SmL_cgk{G>7_$~j7d(&6SPJy077I>9QkG`xtr)6x+MbhRSAWT^FYJYV zM+s z9oW|$X%;e=9bX{QIetzNI#&X1+SlD+1#hrX+Sg*3M*0AKPKgZ6;+tED;OIN&cB#Slo zl(-xv-`%b)A0R5KllJs!$JCw~oBRwQv86eayT~ojl@Li1i=xvnaGg!_{IVmH;`zr8 zo=Z%V{;UO2wxZaY?{TS*y**eW^hZZRpZj~IGYH-p@=6Y(B&+_6EO zI9FX-Uu*GJcJNTgtR0n2b_M|2Yt5*101pC&0Bfh1U3TO=1_46?ZD*NX<8mn*+sxY$ zBawJIUlUhICKY4p+ONLjVmeR(GH(o8wUKS{DqoH4v%9CKUk|Ph{`%A1)APs8!}I+1 zX!T{;*}%8Zk?eV?>C2=|Qtgg-O%KYE}TvsjTvbc+S=OXN zpNdSU5br&Rwv>I_P9sEf=Fg-OpbP~$7k%5omjZ12jSxHxzf^GBb0k(!x{gG%JpSci zjeU8UtFqI8zAuDedKV^=Yo-8Uv#J~Y()^8*fb8z9deS&g`uP(F1CSz=BeT9rY)5H8 zh|ndav3={(R06q2z7K*2RizO;%J`A!L0M_};z}OPn{eb{ERW5lOgo69H(D^4yo(cg zoVw}tc^{3h<>;k(Df^oxZ}T`WdFGREDEfPXb0wvagBB~_!m#zbE0M&qYkKd*qHB^H z$Mz(RjB{+KlRCQW$y#Xi6Unds0>O5j-%A9OIFkNNTac$Coi*qD$mSIbD6M(X ztOZt*L8M6+S4l6SpTI2y0ehDx0-FtqJjCXi^V}kF#?p3dcVM63n4Pq0tanBdy6R+j z#2Uc^!8=9t++i*+*D-oKN3<<#7vkp_9qfwxF+}Z3!iOh&Hbn16H0zUH5YWDmm??`3=QW?ML^?L&G`xN-It_JSW|A2(%JW1kcn_6-zRc zeufA-QCCg!KVsp`nyH8#WSt>+ST$9`2YF{=dGx_~;a!RUh`i@mV_mP=zV+C6n5 zj#e_pp=g$#`IqLs?dxOv$$j(9aGGE0H^hLv(S3p7K{6VGM<(}`gb&iu#5%~ZOwlY8(&S()shmFG*+(6hZZe@am`EyK=b|JP zC=bb=zceq&+x^d9WbCg`AAkLgOPUv3s~a;;9Vf^)ev`T%w$;VDlY8P?pqn?tI}kk= zv@TY!C;9~z`#YEDRc@*EZ91#UG`v@BMBeHu#36q?G&0N zr!Ge$A*EwIHjWM`bt!t-yFL-pZj65@nq?&WOY`q5e`)u!P{{BEr$%RR({#2daQ5N;{^dViefW9dt`oaQi`ayjl2npikX_qm1F59i zwLo{9ftTn3$%#wKm)(S^j2ob(M$9G_lVn1nmoG~6pM?b znKkBDvOdj$K;>s>}(7%Px~%$F_8hU?gejT-zF~MBVHZXOa^_5X2q+E z!5VvDohyl^$N#@1krU#`C*zAa#AZpX9KAH}S@P9>?C;Dm9sG-n&AflwWndnxpEjGt z)C}<+bov$gg)%2mGJm8b70D*M4y;%NnO=B??WE>fy`2lRUHnxJy(%1P9BF4GML-|w zf&#M3ze>2L?bX#UrWCE7VvKOjw4_>sbSnpIm0h4|>yge=HAzV7gfa3~39v(KR`)`_ zG=Ia}a_ug^)wPl0wL80|T=Ri`DcV?6OdhU+x>i^8Hn=Mi(aAXreU9kCt-A;wTo;Mp z(Y?D8J-9DYEQ#WqOtHI_gONTKTcnRJR~M!w?S))V2q$md5QMEVV(;js`FEqL1Go`_`Neklcs0CFp}HAwLn^`rMRU_qrIOnQ@)yVYZFu6%u#x++yvR7{w#S^ejRRL?;|liii+QWYsp^l|p)X%mae%3TX^)NGXBCyxoyiH~8UdWb-; zat@yTXP$ON7HXp42s23T``5t#l^Qs-38UilURfkex*@ofq#% zC7WU=p8;tXDW3sZ9x0!};*X5W%s!rLyG8Y% ziKQvQLZ6Fuwl6jpU7M``C4z@nn@hOO`(KMSQQ~Pf-^#%nZ5@uuIOag&qB9^&n5lrI zi;_>9nF_CBrjG7@{ruzI!S&|u-QzFwyQkTawR__H-HI!cGCNMHe$iGvphMo4wfOp% z3Wy4O5mJCoA*^zk{891>eWPlif}_Gdj8yPaUMpGmg^tv19epLQ`w&t%YbC5UAtgp4 zVU4YJE>}w*YFdhn3KK#qV3jl_tiV?(T0dB1k{wcNK5Fy$0rP8CbaX_QYT}!xbvV92 z&jpdlYLP5msTQ**8xj^9 z{(yv(>fsy_BWqm@XS?=;AfX1RADw!fxi7VCh;JNe~Z3IeAkw9BDGol&$9x9ozn8BMh;>Ao>w4uky5t|_tS?Bly z!9yie5J{dLYqS`Af3zx(qtLdF2@9gc6 z5JV#2H*S$xc-~Un6>O-|DGA>qJgykEL0?og>=5W%WY*5`#p}AQF3A3)ak01C_5@m!gQTW~acNioR!x(jsD;1#d+xV}EAe+lA=bu2GBNQP$g)gb%9J zid9p(X0&paZslM!{p{E*&uPooFA3y?`iVe>C|whq)v+Ee#^xIZZ64dBSeF*b>911c zvMP;ht2?K3k8mT)h&GfC6-t(d?Pgtgi6pIpOAfc2GDq0MY6*OW#XuF`qj8`?2Nu9W4dTF{G zBcNvjMMQ5iE+{~7l?Ua5!afE8AvmFd3n~guXb=!0;6oP_&PC~|(dLlEXk6^CXU~2p zjxk--Qzsl!wC=V!#AY3_6fH97ZRsIqm#>dy!ikeT#MxwA=$0>SS1c!>XYxOAl}52l zfKG7`%Y-u>{d&x%bxoWV0LA(H-|)&^cTH*io7Dz8+xVS zH5Sfvrw=@EkfxGSD?#nXZoZX+k(Aa{eJiwFA;zWPx;UYpqIFRcw(5-f_&csjvL7~+ z>Ty`ALP~Js%bBk zRV?pT4#r~X97$y*jdZC5Nt{qmamoqkofD`JRUJH<%+uY+pT6JBa+=5XllzvrKf!qh zPNS@KTM{s386~(zF#VV_XFPVNs@b0*BDo}QFFu!u6*HBoc>2pJh6%8CW&2A6bAVlB zKTax+Y_B3qA6;pMYmC!FiZ)ub);}YtBxH>7FD$O)tSe3e`Y{QLgHgpXu-4Ru#(byl41(z*;_SF zMUOg+1ll=ZUiEP<7T3H>^8&%6;E^O~Bl9lJD+wP3kKntjkmO`17$wOvxl*|(ROy-8 zmLi(cgk?&=XDFdWCPfLQMgP1uV&3e;%KJFM>G`d7-fJb@($$!ib&fAH7a1@5)9D>& z2#Kw(~pb-*!A}72eg`N%r?;IDdQQ`4o{)$#VMTCm{Ji~UruR|Fz zfUw!~3(=h!1bT_!5qEy2;Z_*vwS03WdeE$5Kg3{-6So52GFqJX%O~@M&`Fk0{}7vJ zMDI0s6%DH;o4wd_h}HDy$e}&3X5I&t_j)Z}X0Bo~uEvZU;?+h~_Hd4fQC(!5{zwjy zKN;0U7Vx1QT2<(7M6;Gd!R@44Q|4j;Y%94X7kQd+J89}@i2!^ckdSO zKro*)-Q!6l(vh6z<;KbJ*xylprEZ#2Rg?;x`O(Any-PZY` z1Qaea8o0`nAY~GBIHZr&LfT?e_O*l$T;%}Q@|g_ry_I8;e1=|fCxs*AmKT-935Aou z6|dyea?~HaG=HNY4zsttOV8rew?PxEt$TLUN}YX;=wSc{_N}YXLVHZbCLaMk3faJk z4l2?n!P?j%8v;ElNGldWNv>UdP7KD$cbS!sKw3~QOWyM|;dqi+d@k8pL+M)-pEEnL zqc@UZLCCW0*|peXrL9Ow=dj9L8m15df}~~Uh~KB0T-qmvD2WuJk(IM&3Q@9hgl_ES zTR9p@qAz@XjOW{q+>(znO?aGSl>|G)W;y$#m*#I7zhQRynoAK+aMFRRe6an;+*S|r zV_yrjj@`f&vhO@R6ARY5g+3SPLF@)j)V%WW62ZgR4T-kyJiHbwqCz*Y*(sS7Bo8Ue zuJxF=7lSTVp-B^(Cs}tI9g1eHn7;L{qGS8fae@&{jKg{y`-MZ`GG;o#2+%Xz;;BH4 zl8OMGe4(vu5q*wmdyl*jFE&UjN^PGV@=D@ISw%Q;y`kD!MPjhVamA4>C(^B3T-;D6 zq))PLt2q?SRSD;7t~&Y>wr205=4D3@?|#|b-yi%ZZN{5-2iKeD_mA&(^*`oi7ZYB{ zR!X@=<~FM4&haH_%QSQ264GRO&drGlM{$+gVu$C5E~LRG-`D|DX?NGMizNY9oIS?b zL#}jrvFIg&9p7lYCEd!wTB83#TWR3$rt~FKDNh)o432&! zl)zVLp|r@Hy^Vacx4jD=(McDsUnO4Jv8#M@3|VtxNw9>mYEOek(m$R zQ9a}=NF>|L&oU{=E{80ZLCLO_gmfzhBiT)S;AOrID)%KtHBUICY^8o2VzZ3YI(ljT zmd2IYkjOsd2^&-Uc99%Pw1v>5lV;H ztX)z0jjYkJ{p9OBPGagSF7w7;dUIVxhOY&B6f2i86K3Fl0(5e9^+jvk{#_sIucwkO z#Hf|5LVzr5n+#>?AQ(<6`x+KBNFUmlpj`dBQtoph%Sa9-4LGko>9| zb$@+F7C9-9f4jf?VKb^GZ+2YRfaIbOF0eQhkF9f++i+<@p&NfAJ&P*!!y z#wx*ubfFbr$jqT;og`Q83>N}CC@GQ!kwmf)s`t^;iBfgCri7a%MQ}xw*xI$~#7HEz zskK6{(pdps++Qc8Q?{8L&U$L8WbFygB?a1==&bm%FDM3Zjp$Ijm49|B z-qS8qdnRTQ`>NE*A0?Q8X1{7ofi>h7b>SuaIn0W+mk8!v(svG02%M>t<=$~6;dag1 zYq2K!e7ACpZslMknJLk3N&97Nxh=Wy^Mqf@#w9g}*s4n}Wjl?C^L{pu^U`Tve`J(j z!Ws1yt*Yx}z$V%-bmV8ov=?myVZP8z!KIAZKwU?E0)md*NGd2Peywq$wvs&PZct2zA89}0G82v2yjCTluoiDS^mqbVSCP-iAep_L3-rj}i9_2J z<+GrK2L4WwQ8XwhkK&{KotXNh#8(hVTcpR8SaKni34c_8N>M%}Xx2%=#Uy;b zRf#Zj6f=8ROrMTk*VqK+%L?^9g@7KG2*Z^dr4j==`D_KQo+ElxA`B-oNF^>v?u<%= z3HT_L7*|l02*YL-T`C6SOM9L7g(FK#T)d*YOo*ofoQD!-EC1x^rTJ|RQS;$fM)05D z3}an&vH`dlq3^ZoiVXNZbG}hP%tY#+i524@0VRuGikIOV1+X2qe~I9+Z&bkT!2N5n zI?6SQ%~}=(krWz7{`8#KkXww>D-$BA08OD}(V`BHUYfrdGjH~{P+ar`CmBd3Bzuug z%D{iuMd<{3mX*iXw(E$VA(}JgLQBi_7jVG`Y&}laEGc@4;4xb-;C4~bYq2JZtuJ=! zk{GO!_1ZWEfo4bRyC|p=7O4P9pfp%$mgNGEUYft9kIC%vpLf6B-#siG_rQm_Ri`sE zXO0GIPOAQEM9=t`a9x_)R&H7>n}}maZ=uf-J@P*xm{bQku_MO`(J!oG@QWavZ2yx) zcdip&BfV|tMVc$ua!Hh^T1jxXa2iaG=nvcHCJBpL7D@Vq$tJ`o;oi-2P z`I}#{KkX5PcIM~xwZlblLe{;nVmR9iS_FSIxc61U2X0VY9DROU)Z(oijHHt57X(iS zI7#dhvsotmQL*Zd9b)s0R1R)HdTk1b+0PqA6o|1^2;0h8EEQSiO02~yjFLcbQD&sI zi7nLDJjInrW(J5DdLX&T@r*J+1bisD*4;Gei)9odU9a*^l7jQTR+pURX1 zP!%7bRjLz5FU@bL_+UQy7Q6pM%(bpatD)bhI6fkEiFrhiN&8sd{wONpGQ{D zF8+XBo3{QXg2%-l1l+XtuMw?Jeppa#BXudMf!%S*k>XFb(t@Pc3D;DSUy-5;&ALi* zwOF7x+_`aV_h=PPhMAHsN5_5STbwiBim2T5_}cdM8>fgK7ET6q%!xFR{Pm9tE)jiO z_itQ?t_OvatKf;u>o=|xd{8*K+O(1>SGRJo7F^|>Jb5~j+~TF%bwVpupg@!_ADT5u zS}khm=ED!~AMZc?k-bPqPn)}sn+2oZ?8PKOarS9NYMWzbymne}MS@l@wpB%ZVt*sz z6BnnE5@6L(7JaXHU!|{vEGiYEbRob4;`I|8sP~>11$4qSRf{7y#AfXnt*=R1dWH6C_VXGyX~h&I4u`CKH6qD?DhaX{ zFFjILMc)IbX~p!Vx+>GZl+?od4pdhFkDR6z*`1Nfg*!aUU}A)vQa;Ad1h+iK=7?N5=K{S7@^Ct|uQzSztK$9E~PuU`qT%vzcu zODiV#sQCMeB+_gOGcNIf6s>|kGdxcos=zWRcab^0dGnkg|^u88Lq5?{=S!{w)glHCMY9UNuNEitHk#h-ayc>|Cd#GANZX+ko?RX-Dn~w`XGnT{?NKZ~ zph;J>(C1>N1Cn08mKlp*WeSo>(hKw`6d#vFk@VQC;z`6{{0^~_8OH^2r-clKpiT&; z3JijhQ(#_Hrd_r8p}hm5&ED+7;P@7uexusCRzInBUYB~nw;BaLW8bqy!T~}W+=}+H z<=AIHk7A#(Yr9@}71WX)`Yh0+a^biPD)hP9*-T7EZ+4|CrnhGvIa7q z?NBspNi~b!z2t=QJqVvR?|vNSgPPr0`Jgb(m{)~#yFz=Zt3`hNYXti$qdiYWZ=(!Q zK=bW#%{=!3O~OQ0OfSsRWSQrDf#6XFXcfsyi4&0%AOG8IWF@Dv(4Lh63SfQeTeoK2 z%8?pVv#s^Gz5Hz7BXOXeag2>g`<3)VyrI?!!Y>K`ad}o0sqb4^=G&^F}l)9!d<>eCV7j;fjkn zEXI}82@h2*rs)uyXU_d^O(z}OT@DU^$R+YCE|?IxGz%HTx+r-yxusLFGV{khraILb zV!ytgM!FE-!5O~?hjgXTqch$jm2O0{KI6NT%9QxBq;hY*!9?CNc%{nlz zSqzbNC5ZXpAOx=omS$UBoj&{RoqEa(is-pZK^oE{gBUzO^EF;(3?86I*M$Ih6oc20 zwHaL(BH*JSJX{lXT}ZPCr&~D~2l94$>)etf^<>Fm-zJPwGb`jltFGMCzG;O#vp2hx z6U;M`*+D-i{XDI-+@-9n5k0h#5ItAc2@qT5(@GCT^uR>IpJ!0wsR?GuwvhySSm6n$ zqKqVLR>yji)RK3keip}?hx1GNXPZzn?h+haIXj*74AF^e?pwEy0D5#i4uI`!(n|!7ug4K^JD>DgtcfB@ zv03lCf^l-BHFLtC=c~fPl9Jjcj8ns_i8#VQAWis)e!6rkysUC}p@zW!0-30X^JwbiX#3?a(6rVG*YAPA}<#S@v* zVqvbV63CtQO2S7$P-3~2c-r)n7>vY{Yn=2-b1Z#g7YXs4@K4RkTRFsLX(J!KG=Hn& z_Q!UIU)`@ak5A9<559Z<_(W>P<1d@1Ip^z%m^`gcij6j)z|MYsZ!)0gir=4#4n=5+ zKKqe7!czJA?1yABv-uV(Ms{uu^SG7ij5)>zh=BR5Pz{vcjazCtnj21v8_QpA|PYMG{%$ z(mS(8^e`wI`yRza0eb5haFahuN}=yTh%|slF;Pu$QiBj_2_M8nH8VR3*H?u^iLppZ zeIh-rlPZwhV)^kl;iOt!{t6DUReSrJSz&MgkSMdixA6e*28j;TOlK)aRB{@lit)$y zosW`ggPbWGG0yaHE>?XICDr!HnrecX8bnF8{j#Q-l@@hlH{Z&^n#)`&Kb1y1YhU#F zw+T7bEK=bRo8>`v^wPXv0Liia*mrmLKYx+zzdn8Z^|z?ic}awPBd$l2l(tp+HWu$BX%l*?;blllRI$#T5>>OZ-g5N) zvHj%hDwQ`u=J;6Y#H}rM7v)E{M)V*&{}j=~O67ni*<4jJR`@XGzc(eRcuABMpMN31 zgHq*9kWglH{*{8;rOI(hvGAV)9F z3*5lZkF%TMvHjRrYwGy!*H1q^Eme5Nc~|-c=>x6wfwr8aaI6tcYh?Qa09`BWr}8H{ z6Mc75n#oZ3`bUZ>pmSZt)NADYVV9&A<^sWfTdKd)OZwE*H2{|gX1;@zPuh4xh^1$F z9$ra!;Mi;W)E#N8Tm(D8-6tX%Yu{z}3s359t=SOvme)=j}|3x;>9otizg*!{kZeHUG=!*UbWFgar z(i<5F%6P)J>UcYY-eLF3j{9R7q5UT^Lpna?r0M$hLs98=L(SvX+{G~=(!Cn>m1bV0x*cJMqSt|vS z!(t66(&tT|)Z#5WeL`V%ply`ELf((wW-TJhP+iTdpk9RXMbLly55^sj_zq>2dm>#h z(W197bM6B{G*n}!Xz7MJ6P>kgUzrQ&q23BzbIw&HlO%aEBV}UsC4yg}w<0|G&=QG% zYu+VYmlxMptF6hDP)TFC$k8m3lN5bi@&ohSCWv=7d?QE_btZd3%Dl_oC{Ja(f>xLIrRTD-e* zqhhmiO?634IY(+X*Q}w#Z4z51WOBkyb<77+LJ3rga-(*OVtSJ)Wp((?!mZ$~Qd-r_ zDjOY!oEV|^Sy+R4`wG*E2Ju!neB@e_M!XfEhjy0$oAFj%&{HG33*n=9D_k~hcUjkq z-O9l#Db;*S4Rd%LT)QOM6FRE{`Jx0Hm=vwSnsnBnAiw#rc^5g%s*q8^+f3)G96{aW zy+-tG5q?DIo5-O(#v*$-7wa@A!H?Yy?ji4jZyJ=~7x2+NRS><~qd}Qbww};(`HPwcGlX4nLXD@1Yq$4fL>4cl= zzcT$%tNsE?Ji z0;_SY2RHBFR0nAS9f_gQ%{u}<%oD)5sPI5+)-KjAWteNHI>!--Zt14d;C8GP|GVL= z!e)669lbPvLuZxU<=>v}o}afVShJfhPM3259RDFzpNq;$Ppf!2<);#BL%OcC{Ka@Z zOT@WA*#0O4XR=ASet8Zx=Oi=8E)hKPM@clvJK1ZU?3@&HQDmxkb?J{1&5}%&gVk*y z6<4BgWGgJ)Z$=-}L@d26mXH-BRe+b~Zz`6r;;CNkuEICqct1x!M9Pl-StZl47U&sC zowh3n6*fmHcjuygB%~g{G0P=|;IWV*+V)5Z8PPHdoSPC+FGQ3ye9}wEJYubQft(61 zOhgnif0Tp*(;^G_zBIqdMzSB?_uh#UG1bhOqm}G}niCy$GE^1ObA}TlX0Dew6HDjH zN=qd4VVh0}wr`ZUMDWmbl5q1*iEFVq(sGh(r(`k+nWPVpwgmd`zAjZp2`)}V(n^In z6wT62`qKRSlK$*o)*qfeJsEk=Yioz+=&Xnors*Zlx5Q^OQ z*NC1=?h{KO57jelPp-}!=upDWPT><1@~e_^_pUj_hlekJ` z(vydk{UNM4rn2=Jrb@n4I(uoFl^494`cTv|lDEm4@PYCE=s}5*A1LIYqPH zFOw9?Ko)8v^QW+TVM!?SL?|K6MlzqGSzABmg-t^r(Xriuabq4%EHUBOd-b)mpI4vQ zSc}i}9GxP1bbX$fNbD=cE+NGB7hNEDaAzKZN8X|<2_IaVCl^A=rpYeJ!DuJvJj+g2 zxr?nY#FGYBCbDVOQ9BgPl3jXf{=J8}-OJv^`%iG%k@lXzI!+Gs$tHC-DWc~ObXW$v zO8*(6X={S|(9(a8=;2Y1l#NxS{}REkIO;`#KC?{!wOA8<)SK*)9E>HGt+tX|=+jpb zl3OQ|3rvhQji6cjMPHitFQ$8JKWaKVaZ<6;&(|ZDt!b%xRXPgMgEG6Ph@NwHB7zN~ zXcXiV{h7seFXU8BXD5P3rFE|)eB|sDbCE?+M6+~u%F#$L11De8^5-zksT6|QCW2|^ zJz=x_3Xfiz_sn~;AN%{=^ZV}~XCqHfa6T!oG8fek-i1=TDork4ZjkCE-nI1AG}}a8 zvm<6gA{YJSkCM+lQk@W-Gh2A{cCqp0>5_Fv@G#X$!Chg;Rwmo4k^Z4gBs0}XG|TGc zaxl(mbu+H%*}8~6NA&Q7-y_ut!LK;s_epgUOQH{WGu26sRa@l(iJ5QQ_AV~DKK+C= z@_5IP6jW$d<#=A2e_tZ#vE9wEG!ITP)K%fE&Fmb9f61COYeWw+Lr+EDgDO2@HCx1p ze<`wvHd8|{1lTUqgWyqO=#_*I%Jhg8lx2EEv#f(62dgbJ$(gtczngv_LS`q7lK1B3 z>X8CbGW!}vX}GzXy?jSj)HB&qPrn}gee(ltuiLM{Fr{$HY32O(J_e3ntn%nwBYJkD z#T80TWjY}uInq3pboxCuQ~UK;8cB|x>#4+^TUnIO37O=rD}4?{voiMmpj_YP(^6%J@bLA}+M+ThSOS5@Af0P83bu}HF@3AU?R59gwN5GI0yv0WdxS6I^-tj~6lxMW9( zC^X-=TQ>yB=Dq8c+7DV6;o^)^ zS`{|X9ewe!>H;O=^#%n?5k0yTSImT?^d|*NW%@j#?SiFZ9`>EM2p$$JmGHrxxMBfi zM6zgBUQjU@jlq>ANS%%}Gq=Ra`w4sGfd$Z}kXcLbrTJ~9&^ND}hqFy#TWY`1qLWsy zvp~eF4{ag4f}R-Lo4uVQdT0slQA-cOudsyns--8^Oj|-Wrz8d=adn)c%3)eGy+zA? z!YO$mQncm?$x7N6YLP=%cMqTD>oFYL55B_tiT6*f$iysUoV(C{P**l1S_RUdir$9) zPRvb;7W!QDO-g5vr2dk|$s44SOXzy!?-Um`1%js5)0V!JVKi3?KJs^3h4F4gv-Woi zGO6+Vs?XGG*1K ze<{CGz~m%5-&0H^6!V5$F_V>x&d~wxvP)jtSr-T%9xdING_t>hOQ)j zknkzyBBeE0NlUkKESA<#*lMJcFVsb8op4COy0zyJo24pn^wPX<{D}G3vWjpbX6siR zI^sw$X)`O*;kOp(QTPa=rABau?OYSjmPf&4nE@lX%BDhaiQsX-h=AKF!L?WgWy%MO za=ev;kv!7jPI^jb&sSXvv<7P9p%F2APD*E2c;L$l zd{f>gM9k(WMWR7iEUe*yh%FN#I|i~V%xTDTNB&1ZQuUxzw?|Q z-F;5)UA1bhRkcxo3EBg3{~}IDLJ2^3b_BCfAds);6K+5kbrkhV*=8zi@z{|NT$n7m zsGka6NrUlVa%P2pokCFcs62~fd?SA0kO!qA_ncioKatn)loeIITuDYKB&d^ma3De~ z8@TNl=A-KFT46u`B`69Za&y|LC?sbE0DD7@0hQ@v$gr63?zGT`OMx|wXWb6nQ}HMm z6padhrGJxWk8bJG!!y$kwA97@L(vm}eBo&t1v?4?luV@qlL2;%@G#YF#w**~M z%?S*2!Uq^x7)NWadJq7Twc!-wHQxpL=<$H7Wksbrc}kvROF2s%c}IWD>_52S?lQdD z(OKzMpzrscD|w0Cz&w#Vdf$`CAq)X!43vaH8dg#Sxx66dO69ccsH6zPfu>hp0v)|= zF`5bu7)t)Zf}|6-hq=xlt?O*8zCgB|ROk6oa{o4? zu3KcwFLTRZTA%R{nX z=KWlQE-XAd++|BK5dqUXuFG@nmQ)v^gDejXiWc0u08f6V68YN)*xUG)=ZcaX8NWw-DHaiq<`d*Rk zE?J{gBp0gitY|CPaJt|@U6a(u)UyA|VG<)ym3PV?UTtS(3jAY^2AbE=i--Iq9=wZH zUQLKfX!k^=z0;|$LPO*B*$jde8qd>rw4g-@K{{QgXxs-I)f?6B&k^&+gq&J+_+q0n z@$cMIa@4UuYYN!^W!5S&|NaTWA4q~xE_d@=u(=~HG5ae@URm9Hg~V$%FS1WGwuM^o zjaeujAhNTNCf9I^mf`W{F$PsPuEMx5L1HH zQ2?5}aKFfY(VB{Y?^vWqm%uYG3SO3mLd0IWw8!7*Us7d8z(Iz(tR-Sc6(%lVzxnfx zxX>@fgra%S2wlaXD(DeB5Lm`Z56o|OQd#h8z5yqws=^HytKy<|ABzgW0iHLc{S)E* z!cGT;^opd)t8zgd0d?ht$Z*vTZ%@D;pAP&3I*AN@3{y z;T{4^wAbh~7UpoP#~OIOw3Ap<9m;93UharosE>;)uE9K>2>9xN1w5u)UgAbpxXx2x zfL3U^3Fkk@bR^%bpv!(}=P5giw~3ZAYGzEz65v#~5uo6h9FtwPv<&7T1a-~kx&||) z@n3$rT$hV2#xt&cDU&WwvST=_n7|(yQYeg>{VohCOiW%oI4q~$+&!u2CzU=nL~NxW zgjZEA-27%so|Y*J>Eh$XSk=TuLxEpx#KrNf!2*LO)?btnvTMBa(-+oOZ~GOA%9BPZ zKn|Ic4rN&-;CY~c86nO)ENrJqNs+;JK%l^dhu#Hcp|>ckFDgINll^339b>W*Tm^Qd z^WvB^r@F%8v50=w9|c%-4D!nV3aCVg(jXsn>}?3wwO3qx`U^`i-W%J-EZ2_QsZN0u z<9yR{C;-djh$K?;W}1xfuS($$A!%n2B#k3A#@_`=;%xT`BI;YACdNk*vlbFbWh@@Z zQ#d+zMa8hhNf(Lbfli_E(=EkHX~^B#3n8aP|3o36brv+d;+wRV_Oy>3ioux49_^ht z&gc{bE)!UT&iRQR=Y6;p;cOD#MyJyHO+?Nj`ox8PUe9;mFV|uRq*Jgdfy;`(QpGCK zG%}{KEyRObDjtK!uThUK?Sw)pd0FZa$%PM=LkVa~|1PQS?w%bQIlC~ZIOfI~EC)o~ z#v2t{MJe?{bMEiH(FCEVCkfF6mm5*KxY%&1Dr(UoXHj@5fs+7Vi*nsXfs^a$bUlf$ z2bzQEsmRr?Bb{uYsg+&SJ^bB||HL3qeltUQP?1+OI09ob6{s&si%H-ub`nu<;!-Iz zr4y)&<6TK0DII0_6_P&#-TbQGsO8wmK z`U{O@cwvOmzTqiBlTM~yxgWLZMGIXK1W(x{s!^P0BD+#(R4*}8ZkbuMJwTC$+*9@M zw>0MwMgw`KL!ZQO{oWzY?7aePO$~g;uABCw9fJqfF|7OT`diXbqY)B@SA|#%WXFyPhKbVchpCwKLpF;C@7)w z^5`?Xm4=vjFTgKRJp)B^D9yL$$l>QwC@bZmz=iQ2XDVyDCo!iDxp^j`t7vWYg{W?*n^OYouYlhY*+c;Q{Xc4d4hGyHQMp@ppa-pkbz+$R9Cs}@sx>$etu5DRMMeqMZ z{lxInyi4|V8?051TNFJTouI-ph@@-*G zfOSN4<}@E4rl4#v`}CT+gzZZH1s6)35(e*1^>SdB_LqP>aIXql%S4plB=J{zn#Nt* z#Dy`X_l^kro}`vMgZA8FO&jdi{z1XV7yyb}#~&{>>Ynx~R0r9%A9qTvW8f~CNuI*n?~cq9y;}u+ zRXkxX?lZ#dAG0CTN-^xyuTNV(8hW--VKr-Um_#4X%D7T+p)wONYf+wb$f-KxSo3jz zJiQG%;0($&G46a7191cPZcZk773WU?xCfgJivX($c^a1oHsMulY-1rJX@0QAbXzLk zk|#t?tuP5+cz2n7%I<#=Yh*@VwjIJA19Bfs7#-Bd`F(@{YspQ2&apo&lj7R9&tfT@ zJUv8Zo;|ECvZ>CiK@tuBIZQZ!uW>y8-74jROTG08b5d9{b}q6CqTgj?D&>-FA-G5p z-;Sh-X7Os&_1Kt&#%cD~RI_ue#=+doPnFJS{`A)v)3NS^$7#-gKN@pY4Y1t2c#SL^ zs;1;_Z*OPIziqyNyHWR3(&(ppU|E-Qr+Vo$Zn({(HKqr#XRgfvhRM79Ur6r2lKEq`n>}GwgT-Efr zU5Cn~v7%#0(TzL6N3kIo!Q#kdB8cbV5xtT3*3!bQ$RZ&%1;$AfQB9-ZmyX)2t|fbD zU=}I}#s`a_1k*$7%32&B9CmBJK63>HGNuxdzGr;AgnTMY$r)1o@Q6injXEKQMK*hd z{HR6AY{@`&4cS3~)eUuYXxJs7+o0T)r%*GvtwMm+O?623Oa&sNtT!{t2*qnk7NkZ6f_ z;R^;KB!=tzIK^YGts+2%j%?$Bx!zdrwQ`vkuAVY);xnq#=UGoWZ3H4k^~9Ni;-{ek z0)d^{P4+ZyI7QSnK6HXnc>F-1V;>&I4rip%+l0KmW9(E*!p6J17wQD7h4Ao7xx$nI zo5nfJ4DOOVcZ6d9am0}t7P%;5NuVWvZS)v-rUJ37xgLJfJr}tanjry3j$(dD*>x^W z5o*)+rwR2({Z68!1Ah`c-cfD!`2J0c;prx>&!+gcz__*z|5(@eXAS}Xmtn=m&rZQj zjMqt_lpNk;B`Xb<+~u-2A-Wj3MN*F`er4nn6y+GlO~|US-0Cv^-(p_?{}ClXUkTll zQc^}pwvg1vD_~9wK{dv}sF14;Jwz>Et<^o;eak>}+~0;qmS+w!`cBNr9nVL&w$%5q zNBFI$Bl7xdr^)H>Y1r4Y66BeTCAMs5*wv}=(w^uK;_ze{&3?-I<^AO0&r;=2wd(uLbSDLS#wl7ewWF!D0TX03iCvzT zX^;+E^S}lUxJbvWM`5~5-|pjOoP`!Kw&j7gzT4D%*A`7+49(il6~++9m>qiwPycsF zdjfZi$ila(loNfDGG-(9@RPo`H_iC=omjY|DQpRl6pSNAaC%Qj_C|r&F}MicGKNNX-v>%5C1W%ftbd=;|XE8RxAqbj506mY(tv|lY+0h9#K-f z*%|TLNMIf%v&V~o%Lo8eo>7*0HEOsjuJR3G1X`onW&yjCjTvod57P`=g2J8x^VWP1e!`@Q1E@47y8zs=9>b2l;({ zJW!D|JxdxQRc1Tca2(*Ax58zr;VH@tyxEgy&x{$h2|}hR*+1bq@!ziPh0039(3F+Y zUNgC;J!4KVkQ$KYQfyA#ank$a#h!1tCpC12+Xa)8vt1W-4EV=bi+x-5A6(de-sl5%Qyl7X!WzU& zx4YhJO_%SRs2;WK;BLTrRg<8Psyc_{c)9xh^0cZtkIGq4R)tV%=n&C_(MIf}ht<9j z!cap|yK?=hf`vG-zBE}~`%DA6U!1%T+PbGaCn0b^ z6s>B4ut?b3<+9<=Kx5f2x|f2pW3s-RaG{&xOtR>TfUa{Y zdf1tBxF5A737NOq0NrT`5%8No#9WLRVLQS>y>cS``W3&JIML7Z;Ea9^@LQQoE<$oD z5d(%{%v=b3-SM{c_65Grk6ov8x_w!>91(-R1qYr;Y*I)jEbjo&Rj%ZSB`mNevZ1d})<)w1sH#?#)VtFME zhHc@z5nUTSzqv%DQ-AGkh{{o9qh@{SNrE(^txH)M{8VW>wG@*@XWk>ODc$R{r}vl7 zK*t-wG4)Zim6ZOROr;!}=h}1VRwzavZ}`#if^EB?Q>449!seBN;~$TK2kiA>;Jk&Pu1_Z7Td>*j4oL#h+CRpWQ5G-g0I|nFHVU5_ZpsH9!Au&RiAjT zqFQskN(L`PVg$>BFqZeJWt2Xta23+kcytYoX+9g68;bV{adsZ=TmUIw6r4x#uD@N=B_Ef>P1xkPh%c-h&XKeg;JlKMdZiS#<4pZ*s zAd+3eKRwB|-%J#a(|A~y4+o5cMKUjOX1!Bft^Qcgj5kM^&om}XNYJ8tAo^~(z3LWg zT(zt|wJF%x3!ad_5f;2%)mdA|HxMfuiYg`IJiqkYEdWg>;3O?d1<`aCL)2)4l~# zbAjk_h$d}yn-5TYd_kb8`t>QhCQ?SOfI%;p<-X<_o@L+()RgKvY~YZ;h)RUYpvv9s z)^vp-xXS-G+p66{fDPCH;yc{_tm@tbvPzxPjXBFDtlc=%A~n*l6hKA(4f|=WqcL`9 zzapp03wM5a3_74WMUJrNW87NSagIJj#%61O!Z6NSw5vaFTEl;BaP_B$`p!31tGHa- zrKQcu>LkX!rjR9Wrvy6K?2?Bm`ypuiJ*Rs@oZkwR@K}C^SI#Pkf(|BVsc|nPuNx6S z$T&lMU_wldXSA)p!;rl<*e4p*j+K~Xbb}t?P_O=s_IJH%vT4VYl^hiMBsTzu3REc;IQtD@u**AlYkVnylAz-;Sd(?=)(w*wZ5-fCaIDg$2G~<=k#==Zcl@=rF-klkMfoG+vTVbap3*>E zdlD`v#F|6@${eNbg~sQ#b&(N&kH$ErN?;MEb+=1!{% zz$r;O^ECHdUjWbqDj@c&Lq0PPip4Y_Npm(!B0)eccdSG9p4im%oa-8XxRf#L%LMI` zAP0nN`FU}!#(L(Y5(a*oV{h_d9A5jI8B+WzG%Sw7C2^g6){#j68R#Mkv;N#s^xkG~ z4_c(;GtT*O8>Ow#KMBcZer({KZ_3H#n}z{{aS|vT(CLdi$>ZS($_!^YNE39P=0MRI zQ4nMg-KMBJ1<2}ZS}t&;sK27tg++D1&d}C5e@4<3;Q}Mb-qgiI2?jSF=M|H$Q23(T z&X39H0dwi8xgA#tQV&dV+ve#a>ehE#^ZnzpcO672?IZA7JGJDy9V2koN1m;!uLyio zrd#H1!EP%`5ugFsB`LV%ZV&SPbBIEX^O+g`feH9VZVw6fNmnSmvNw7!e^W=CYe`O1 zYR@OgM(dc$h*J*#Y2xvc#e-nnJNboPs@&}V;(kNY2Ch$268}HZ&;9Xp%2_gg->-Fe zhacbPf$_*MOAcz5iC6j+85GU`BT-rk?6N|m>fdPXL@i!A;=N_Hc{43n%r9kRZ8&rNu(3o*=Y9zGRa*mdE6BY3MVo*^Bn;MjC z79)5a^OrKr!b=R9U*^bARQVReXo?xw1AW;%RIK#xz=PQ}C1h`@lQ<5r9YJv&N`CV~ zM5Ybo(E;{4&6;i7GS=_H-6Q3nTApwj*75KDzGnmxc76l2NMJE^YfDg_6LlDc zly%NY4jC3r?O;pwxToL?ild>VwLorn*N&pJX!IXoF%#ZNuwvue_n@ zV@7yq(%eN_OyZmo>7QTBY_+le=?|~bevlPaha(j9BE&Rf6UP_${vlA9%AK@T=&O<< ze;jhuU%mBSW_s@$(%VP=fOaYyCz*`n(y*-KCPytMy3%uK5IhdY;Yhm}fwk(2J>&XH z*!H{@l8(eHu|_gybn`b>9`vEpuS?q=&d?<_w5a0mx8+cZT<9Wau#4-VXBdK%CF0f| zT!FcCwb_T@oELp%qb3;%e*f$tmleKCtU{&dIe7-V)XNCainyjp_Bz}?1V%psWR=hV z!*?lC_aQ}*rfs`1XwJQ3uZk>EussR0E+Y9&^dU6n%10if+$DBX8hQ6~z+2}rZfny+ zX}2lz4=OY{oaoX&Hks`$CBgj%T;5-$UGn~Zb z$VJ&}jun*h)f1v;|Y_x;X&(dYU4NNJ!?-6Gv zNQ~YpyJ~MQi!ghuvkxE7?!EBp9=?^A;?ZHm@*bal8e`Z(S+SJ}*^!?eg8u2MIX4?` zcL#&$_=i=XVydl4I9x8=dhJeNh??FA^8|dVWJG_zMgXZN4_M%PI*R0({mt;O6`$!7 zf?0x>5puHV9|iII<-*+CLD|D(-gLU+6vK+F^15E^rdE%10Gh#51C?Rr1X=bG5Wtzop;o;?iq7b(30#NN;>Z%(#kASEXbe7}tesp!imcpq_w@@MAKGn;{W@_GT7Z&n@%n(NtA1r%pR z7xnqQ;rRn0TR#UV0nSZw*L1qlr%?ei;!2go%36Z-qJQ?44tsxDdo|qp6Jf@~UHMY* z*}Dz3KC9)^_s{oO=&cyabZ??7@nz82>@NN1>Cy6IU*aS$DTe$id>MFvIs5Y~p_i04 zr^>Dobz&8o_4FWTf4b-qv3(wVl1U)Gv9Q)fRD^fKGVM|N%JM$gB3)?w4e zxist2*&#f#=Q1f@{Vs>YA+Iat;Ltig7K}Zf5;u3e+FRB)&yo597K|ZcJUjtRUa=k0 zmcyeiY!jp7AGJJ|kLA=wbRAYO8J_04p%oeXfdgrdnb8B=bT-pHyQ)DuyZa?QUSFpP z@y``LE6;4UtH28EX~l)N{QGbX9%(z0&`k|Lb-2EbT}th05yn!x;Z$dk$F<;Z3OBMrpCQtl|Yh*qi$G zK=-`(?_Q7=>7xj{Tn<*jdZd+y|$)q0x1&pT_L&klAkKHWpO=A&}YF z{E~=8ZP?ppH&mmPJ{lO-(#?|$9Zos(6hr8k=!#%Sqc9XR1bEJ_cwgGaxSttZf^J-G z=q`dj!{x~x%^|EEq+Q|k3!yN$ZXx>`>2<%UwMd{2vCV~iYC-Y(5c@YjOmhJz=aeiS zM~9)FB=x_8BOOHyNBatgt_g4AKq;)Ax50jD5Nqwvmyg{|)`i@G(ZBnc3qkpx5vC`n^Je?uleZ6GVmR+8v0@wvyj$Mc0bw^_JpWO z{OS}PoB#+1I?jUhgmTMuB5t`m{y889#Z{fo+-tvrz4O3S$8z|QU7%vH z;D4cc*S_N~&S-wb`*wpJ$u{@3>TH{wm#CG=lHC*Cc$<}ut8k|d0*h-xWe($Mf65`}4SC3LA^HQ+vALC=qDe@`)iQTR1l2-jU^(x}@E3>K8u|gYuKa9g>C`lpm zgMCiAAAKE;uf{mdcVZB6Q2i#KZ0TP3nz;L&M4=`%-J6hzj&ia4 zH*E|LwBJIMA_oAFti+zbOp9Ag7GmH1bFFo$#ys=>KN~wfiUPpgn_Kq-Z+lwCi+#*a z9Ob9quFu&BX;(|wPG;9b0jMAs-z+S17NiZJ1I@kafP81|xR}0}1^-_mGV;~RxjL5a z8KbD^NIbTcCm3eHntJCFs&nXbqx|{MitFKl*fA>QlQFFybhBhrya6ILD}N1aYPE@d zAAkQhpu!b~5#NHLSw2jME0Wn#I_lmBH@Wl4+4u_~gQ9L^m-XktM#YrPuL#G)`PxYw zSEZ)w)-cTNdH9(8Be1R|hU9Gi(fuq*Vy7O#!VT#*5uI~2h#1mClj6+IrMgD5V4-|= zc7-wYc(2K`)pG|2+eNilS1lOocxF-YJc*dFz0A#x{21R?`wAuymCs3w7<|9n`=WFh zo7RDyY9g>k>cQYn)LY9DK%?I{lXtPk@?#K&bpj|ATuMPi*>w>+jLf6B6sJm#(3kE^ z24#oQCH56);7;j}Tpl>bK&q$c7)s&g1Dst|2QnxI*&&w380bHTM)X>&0j zb==^XxoA6?i|F$b{K*OSN$%%D2$9*FUV36}I~i6o%-_T!PeU+eVhCM*VFz2&v$}P~ z8?rLtH02dmUO}vMPoZ0Ogu9-|>}qb^@h@FGICPaSy=8+nN0zlpg*H1N9!Wgl(P;N4 zq9$UpI(eKDJ9+?iaz@6fzfyY2l{Z=fpW#<@oMH^von-L4YPVoe5x7JCkZRl0WM6lwWgn8_Gx0|%uiG@4T!4PdNxw* z6CQ*Wd*CEUGWiE?>L2wC)zagEgSgI1mS@qmXa7W5mYL$`FMQ$=jGRnQp_-s=lzxvK zqJ1iyo)dZ!s9jgLmbmw_`i-_-R|LYgoDVWm*B21`Qc(lRbX-l)tHMEUD+oOqi)ToN ze2PTs&VbLRz}XccSJ4YLKYz61fo|>yNk6R5vhky<+5+4_DewoDnAQ6QhCbNCpT$Bl zvKE*DX?GD)<%IEtHW6$)iAt}x!kLM}SRW)2ZWlz_4Yn(+!Wo2722p-LG^UHU3wd73 z4zbOJ!YGSyE>>pD1HRM}kX=8wXfx6boVoD~f9Qdx$DahyRiy2_Dck!as`}setRyqMxIh6^()yn?#xn?oHe2d^02oeklVSc2#m>bW)Qy)=YWUr{ar-#P5Vi!>SmSfQ6dwk=!$M8V7&*(ea7SRJ!Df9}%WSr8l4k5)Q%UOC3&xsmJ0U2v zplM@$z|jEGWGtofj24!QOy%@(T1*nm+=PRWNR*0k#2!|$SaQcYFV5$k8{fwrA;;hD zuOlNVzSZzl6FSjPL_PY8b7>l;v*J|wswC$m#mCsLUO*H2wD_$?y?|C8uS`)q%Rcbg z?Dw%->ka~UeP;+&TKaL!s-%*DsuLMjW_@QStGW0Sb&{YpV?kv4xITA9I4mXkhdWV_ zf|ZyifaE*giS(RYvXnXEJ`R=qT{V9~U@#zgLN9ZJ&oC!BH{U zPtZ5;5oHETQnJI>)h@C9S04>YZo2%AzI>MgIdh=di2)`bCfl1d^FMFwW*;G~G z#nz?M8~*V|BHdX1UD34T@wH{liN3b6Ruu|{94o91yc{s*jAp+ITFHxy;vZw>#K{k| z7%7ALMEezjyP(6CCG~v|jT5P>BnY=YJdvGX={G)vbySyG(!T`R-%rnky4kv%6{Om) z%kM)MBrLeR*1yOE!j2|^NPBCnYaXdn<+{)(*ig!6q|8!9Ws}*K$(wT?*;8e@SaIFl zgK*AO)tmLrlWh6!I-fj$ab?j|Cm>j68-OhL8w)sN`A@Q%bp`f)bRso-E09PTU)rGb zVkov*(XG7C;L%WO>bu*-gPc6(=I}pBenJUkCDcFk-uwv2 z=|uS7XJda1LMSCOR?3u}F*g3r&cTFG0$&?w&C^RAKm>V*jyv);;CtHhsFVo48s$I+eAE2-2PpEOteP)T;Y22uGn&9yIY9* zCuR#lg-u5Zc6GZ$B~cCS zcxvX+#Psrc;?adOmFcNeOgcsIrC}J_V=3t@?0fIa>n+GEx9-z$h1SDXIRJU=`J1NMM}YI95^tEB7-1F4^3ZiPRPCGBQM zhZxWS5*K~wBssV-WMoghAJ&*Iw%S;0FR7; z?XE*=@W{g(7sq%3@=<%00vYrl58)Mr!y_c{737pn0o~*ef5CghB7w==lquju4{8Qo zYi@*gE0T1IO8Ky+v)m^1Kd@WCrRV(fC2cs+A~mwvy!Wjro_$K@OJMJ9Tr_aX5;Gf% zIDHd6fwo4RyZH2eaQpcWtDYNklF0R`FBp7q>{%&;iK(-9)C&ic%zd?af6yG2?oyM7 zsujNnOu|ANiOS;F|GAt$Y#-v>9>Kx3uBKMg2f8A5od{A}Epr32J3O@!#TxgJEuF?n}>)wABXYH2S z`PJJW?c-}feIxY&u8^|lNHQKW-AH@HZbEx~_1w}2*HW5h;i@!H=fsP~C3nZvJ#*B{ z)YEEm%R20%GcXtYlO%mq$+1nac0dIU?$AYttEZIa`ZL#efH8pxK`~7R^1Yy^20U(a zOhn((6(S%K0Ndj9No15maKv5)q6N8(a&~Pp*2FZh&~73JR0xf`CD`Jq7+HdUVUQ^o-8o#>;H*c3X!8xz2#M&gb2WmpP=~wX~N&{x;6sd0Rom%F*8J*qqyh zdZl`X;t^~> zVzdosA&JGDLw(2M5(KX)c1io6zyj>6Zj3njjcPxXJRy)h{u)b4;1sU0dd>Vq*xtat z;IcBdHCaW|WC}ek=5L<#I_lI*VTr{aHVWCbkbb(j1?prB(0#gbPM1SqSLPCFH%GFvvGA)I`6r}{PI>+`iN zH=VNt7uz)=LH%Cv*x$}@yHT|oWv1!$mHx|mt*F-AZG(ts%6z$Hwk7n5c4m9F>R$G# zi$ZQjNUm8|LG);-M&P^GPQ514GU~3~fVZ~kP2AEzNYHL&%-EzYk~th_R-wjyH-@N9 zt5)c@qHCnq+t6kG$aQAy>#mNkPZ)3dCBtK8Lo%G%jOZOzt=irc7lXa|Qux~Ly=3ib z_FrscZ!kBde+;BeEMsp(FS)V!xl!NHSX1cr1!ALU6!O+X7P94fR&5OT{*R-*lGxR# z!3pN+shdt@lq>UHH=J`H+xnz`{N1(j{0e8VMT;!gm5TLzJ^@`18atFkR*hPsES1&b zq;wlZ?Flw5yi{KFkb>(6QxjG(gqsp}mo;(iD%uH;`p?Ux`PO!n2)Okj1Vw>KrE?+~ z@1Y897~zRnMsiOpAmXvP$@Z?L*t8l%K5KtK9W#dHm9lGW>GCVj|Fo2g=z|_+kFH7X z=sU&;XgxG_(;4K2h>_elaHPrvd1oXyjAG_q{~Mqf2qmE4@R3$8+tqk)9F;tR+)qf! zcBL(e)i*j^D6r0?SOdALw!3`34zEGdhW1OX<}^d$$|H1`2!bt|Ql#0FgwA{`%(ksN zcGNtmW2g!=9`X%j)@iup1t*kT3R5N#B2_R9if_ehS$z6AAhMECZ1{-&#@EpG1p3po z<2JFzWQEEY-l$C6OL5v;h!c$kkI)a0)oAonSzSN~!B&N7^E|5?;o9Dy>>^%4tuBRZ z9o}&OwA)VNTj6|!gK#wx3HTo9C!KN)_kbHda3Cyjo*MKUr>3Bvv_C37jMl<}1D(R` z;2zbwje0q?g=4&a#}tkUepo^$7J=E}be3+LO5|nCckJ~DrBe~^%-~enk(*s^BAgAg z+R-tz#+-XOl3Z)nrMA5Vo*QgU4zFAI=ARwSzv>tB0b~S1Y}r<`VCO-7Lv9QT9~1dp z_7K~#@_HMINB>vqhWihYsqo4YL}}Rm=D6OvtB`5>K7E}psUqPHLUr{R(;zn;Q~vEp z+N?%4eG|{bK+&=Njy)saklncj>YfBn?ORgURrlT3t6Gq%kTwqfc#XS{WXLBCRbVdD zV7@nb5@%)hyJxaWz3UH*^OCJXuY#aFZ!^A3fz(&Z??E%9<{)h#IKRJiG2rw*J*elo zVaU6z&n!{*!Q-wWCfc=~AL zYoT@EzgsEkbI|-#D7K5We3fnidiIH8>=;KHQTlQ|trT3QdOp{qxoVxsD>(%jbF(#0 z*tDiZ`{g=Xz=z5lJ~71chkE!K>>I4{Jur2{)%}*qCdwAJ=nxGIQLH(+9C~a;$H*GIP zgq5kJjtWCz_gmDuC3sI>(uNTCd2A9Bkts|4f`FUI0P~X0X@1I1E zya6vayX5Z*RZRzC_j0bVu)fRawT+#cBHHPcUX z14(6_ez~fK7T!s5p?aXZghc2`a_!Y_vZfWKBfWpIMFcTf!=L&W(fl!=)R1Sga+U!N zoRnnJ0oh7+$(f4WcEs2<40s^?G}+MPgE=i8GLZ-@~3r|E^(h}E@1Mb z%TgBcI-a>WSN-z|Wa*D2-j}ciQ1dOH%PDn8+aLUbqAgRIh^N#}{>o~gOFAuSbhIN( zEQJaDJ^3NX>X)HX%DOt7R7#0*nwp-jp6+I{Ar6sKp4p&nIsdPvsxOPKY>~8pez zcW!_!w3tRy^N1p018%MYzPcQ|&A?^q>=;!!MudkOeyc0OHf`YJOtt~9@!lr7KE}Z} z1(2^gzje;l1d~$Of?pBc(rMvy<_REeDurq=_ei^b>|7xEt10oo8Ud=O!}Aqsi;@EP zEY5$`!26eZ6pe$F-R1u!LKB|tuB~w-cR94_4mBgwnM(E9TJleQ z+pEYTse|aM_0^C~Fv^4^XNE*27`g9}d6Bc~&_`aJv0G~eK6Y_R8fm1P9P75_k5n8h7yVSyrvFTqUKF@RVF=tu; z)-S163T}Rpev25tv}n*fS$P_R{qLzTn70xguB#{m!OR&f#$!~O#KKD>Yc@c|fr>g< zWu%40U$Rkl9_mpa=?-r)cpY^CvPv<<#x224DXx>r;cThke_ldToBz2)qFMu}N0Z5Q zjW6;_m)(bUpc>1=qSG8e!{R^i8DuTH2T-r+p}Q>Ni6ico)Tpjt_(FRs{uNG09I_@= z*Uz*vpMrFcTUW4_k=7A7{@Vs1f51l%nMTD4lm0!nZY^IE7ji3zmy($ywVWyj?M=i7 zNh3X%Dl=&0CNg5y8>*(2laaHe-uB9~q?^vpV%0r>*Ib-Wke`l3=j2~!vKO_Qz&7kP zl#nU|2|hX6`lOaZc3y{7gzO6V>=J`McG9>-_b-rVN?^@53h{2*@tR*Vdg__0qj8?# zHeX?;jt3xtRqxk;ba>oFF z$|@DCMsB5Qk8-=lMUc3!drVptCb8jU3~H2c2~7pD_&kZt<(jwS&VA2H|2&!N+wqz{ zf0d7{b`sBSc5R1Qqw0;>Q)(uEsMwzg(oU-nHOz{(#or>O>K8zC8s-44A{%UIfV7Dp z*@^WgGy61Gi!?&X-+@}zGK^rB{#kf*;F%8WORoTbXEY3I0VCs3c7dvkHVCXd8F|^e zbP4dVs#3e#>TBCR6ylZ98df+qRue(#E!Jqp_Vdjcwa#?7Zjye0#s0 znVs1=GrQ+L_wORwp9K@M^D1%MM66dSh1)UD=JW>z!H2}{LYACXwm%zNp!#y=6*9sU zDx3z}f&z0}r7JsO4t6r_C|P44LefM6qq~$z{Y!)%>)tKjx0|u4tM1pgsnn(WfKh}7 ze^dWi?_Ohc3Fgj=kyzCkZAQkQ^Il6)Kl{;K)|{L|bb_MVy}oc=%x`6!(!E5cMLvWb zRT1}OV)co|EkMR;qgHogAH2pd4!43|cSVJ4!mUG-q=}DSAsWsJF*cJMf4xI;lU6!!euNyMQ0t> zlArJ*$vFIudOHbeLW+1CHI;wH=aUL328YPZb++cEvBp(hc**<9sxRleol40b{ea?4 zh`HQ@?Oanh+5-5dCIN#meGii_e^Pw=b^gxu%re7hfVQi_ugk7gNF%Jbt4W^nuF>+U z8(>2&{*1yekoi<&+tl9FB4z2U1IV7TTB(f@p=pWZljN@gb^GAfKT=^upQKH|JMA+fz`5@ z)002Dme!ZIF)UXdk{1D5vjdIHDf6zOhsVofmnx>EGUh*O)t6bf>useoIr<>WSB=$Q z2zwCq4o`^Ub6c1x32OREGE%o&^PWNd^j z*|!ZM;x&54^>4AMrW#xi47}aByF$_>R#ytAGLlysm1^VFOhc-UPBMsWFzy|#%$4Y? z!G-X%n|)!n$e5WO~+rqPIMyp-Gyvh`O4GXwQxVFU@_%Z(LQ?4#PRwVxTX zd_u9K3ER~YMM9L^_hSjjpg~wq_D6x~-)4|JGHwe+QV2JTAHv_2H?a8BhjAV07B&<> zrwp+NZr@yL`S_nuEztS$VwToTPfs_~&#ntj7%Hz8bJ zP+?^rM^T0YGl(f;kDp*85-abeOI%%{5rN7Q>Yo{}VpzB?P38eXkad&YO4Wim5*XZ3 z3VKYZ#p5XDJgXx1x@FDrkFux7GLM#YOz9y6rEJcG!kxz{b@g2D5B`9CjYZ(9V#UBYixl>jIg`1 zPxC9}jUyKhG5KXhN>*g&t&zscxa}p}Wktuj+9QkQe-j|A!}+RN>jS1FE#M<%wNb77 zW(1S+!a_;o>7`Iv@#mr^jl@h>u@_PqZPr5`rmA3MJIP%cAjB)Lyj0P+V|va%B=AP& zmu=|g6AzX%~Q zYMDfaow>_DIxM;9{ky2>#4ald4A}x5t~2JCs&&5_^_qD=YE0 zEM5S+%xd|R{Lb$Mc{mxn>Uup1_N9Ib-UY04Rf8MI#UOC!(I7Rq)T|qk_jTGXV>2dF z@}VJH)Y}&8#idX6jH zNTJg3mACInJCBgQP5jim6~MK-iR)a{wyrK*QZDNmx3l5K018%#n) zyAF6eQQ^z%KZhx=JWkn-#7iK)p`G$_XrP||%E^9pO{dX^J6k&^0Y+hs)Vt{ghU5v6 zvk}v`7`Xbjpy0T(A;J%w@ihbi?ODZ9{MLF{-rSe-@LabtQ!ck>fs8U5qk%UR)`v>y z(@*^@OtJtjYwKLR(5cF_BLg>gFSINZ+L+8uCTHX4! zgb}EY{kYD%gaL#`H}LC>AQ7AKpm{DYqq~O#{`E^ z_-vbduV<*`cl&gx5O1j`kAHLXup4y~Bf2`0x z|Jb=X<6L7vv^v2axHwA5Le!i<+Et@4xkaSCwo5)dF!Jbr#!Iq%ba;irM|W+x&A|T| z=GfsiIl1{VI7O2&KW9!~K(x4IY)zKuM4T5lVzNI+Tk8%W>piwf{s(p5qaLaMHVB(- zN;`*7inZh)QRg|59p;w1eZ13!VW>r?$bZZE2STs#9sJAuPo@2AR)}1MK>SL#7SoxG zS;%oCbt3P#LKRX;){^7Lp4kpFT3U|%9MuhCF)4ETOw2l8#ci^WyRwpodxl`>Kh5h6 z_>JR=C(wcSlA$h&%2sP+_D_eP$Ux3asw&vBkEMV?bl0qddOzR$mEcE0y zm5Nq1W-aXx(-CPU@4G@?-@EM9!>kK!+{ug=m6yGN4G?7Flfxw?bzjkq5EsOex?9dc z>U0%HPlrbxA|C@f=a}>Dw10RJN2Ga~h@w2f+aR_D-(+#|e2#Lai7sCpZQ}{5Ld+C> ztuYp1bh13WwuAELfi#%U4 zSnRFJ*?GYd8C>LzpX@l_8WS^c{)X^#YFr1MN-Eh^xj;pZ(_5PTx54r?ANF{z5Szh$9p`zDJ za+AG!1PQ5wk|i2uSK+zj1=Q+2911iAy|&WkI+EsVo1To8^DhzWG~Str6N#4i%qf1F z)rk^`30v}hTgsxPqh5!t8~g>s1hRQd|FKe z0l`IJVM*tJ)013dtp7iAcBrh`EVEykRZh0rEvqkK;-*N%-yrdjtJ{V)PO?N*?yZR0 zn+$pZO)75KP9Q8|BgF%s2QTHnfrtO8$Q1P))a$(8>OySvl~uBxAEvggS?B&(g` zV46Ra-by}rgD6^EDVln3q z3arQ>s)n`tU;P1?uzk-|0GU2GKp5)p;AZhDFmUaeb)f5^{V6|Aq6B@w#g2*6eUmrJ zy5WON5NpXjAXTGG_a zChaI=iRG#UHX67_zjHk*eumY|yJF#Wuyt}Cohk{-UgA9;@wa>x&nu|5m8;eYC!~Yk z+175Ur6)p1^z~zs7XrycNB7&-+H>#qj(y~czPPi6N6UeMWEZB^8o5nsD1DpWZ^iGB7Wd2wvOqSc=FNEq=6hexo)g_^C(dqeUTB9{3 zL|8B2iv4AW5hjD%Dh4CaSREjN<(v1&qAYEyEVW9(d0+H=z2xpb8`S^0n4mw6YU(LWe^n6O@0C%lofkkS5DU znMOmPT9eZ)0P+I8b5Rb^3f?3C=QU&QmM_RAFzD{|Q*V3knflQNNn^EnzsXL?9YMaj zV$nu@eKU)4@FwlQK*E2TxX~9 zzL8c4Tm@B{iY9xO7R(4Z6JTCov}33+wm*uf{!(O4fQ1MrmJA#wunXO71Ju%U9jQGZ zYIiCt#-9_3H8Pfcxn1EOi6!N7);-wP=+gt9e4QQvtHkFD?fE{#HRM(|z-FeKdaUF~ zAaAOHM7|)VeblzRTq>j`9=OdH0@Y?!o4;6a%RCFq%4|=s`<1j>RwY>KaM3TiK9{4| zO;{xuw$gkMBO&4Z&uP6JWynwc=N9gKY8ZJJOg+W(2oiOBgcY{)WztpgVEx;RHvzJ+ z7^h9hrRM$|HGR!v{C6HdLR1K(K!EuZv=kL7Fx*GC5+W^=)wWuC$U3k&!^LVKFN0g8 z0pm4>#Bg?n&n4sox8{Yqw06v&`@pmyYaXvXs1O-dy1*e#)D)STi0+_hvNKDjRz|*0nhf2V zl}^o3i-ys5zH65LZ;(qyQ<-JD&IlB2dV|el7{Q;2-7bv?R^nZa+s$x{gSPg%0xq>4 zRkVQNx&jEoWNVR5H9`KHn{Yz)`tv8187^?ItInb9Nw^&A5O~}aX>1@fYDG>1SF!YC zXbtt9fD)q-E&vq5&RJbBYA~5IZF5IW0_y7$ZZvmjH|G9MF`BP%vX}!82#IBLQP)#< zCG^oSWw1GR6z{4?GF!_uaV-o=8W(y6Cg3Qn#r+1t$W0fq`CT5ciyE?CF0(g{r>FjU z%xn2UUs#sAWymdk7p;A{cOqAh^6V6&T~9p6L?M0T|0xl|+jaieSK&H-Cq{*thN314 zWu}+JThb5ZLYQCfd$7Y?=XSRFw&eLF3?I}|w;Mj(W`c%Kyt~p*vE@RjF0ks^33?d}s5qk_N;iUvrKe;v!uE zOH0tUMVjgCTT^*+d1Ny7a>@GK_m%x38*S9@uY4vq%1w1swwa)b`8iAUHO{xdMrbGn#Bf}MBh!cTEV?@Mw^RbQ4aV&<*`84`D=|dKhPMUV)n;Uo z9_ct4od?h0>_Z9(eaGZ4z3?|FS69K>14`pzZdVAx#mJ($6?>#8|vgq&XKq54sds>-o{7lprY+z#nyhzM%tXXIV{T%gY|zA4fni4fQ8eYJ4I~Hb z(9(gVCYtheTuyalUpk3E=7zLU*I#&z-hU7%HQ;>g=-)3KZhqdqoy>_}$Y(U2`{Cv% ziE>w!-*h)h+%c_xoh}e>e@C*UfT?7{RYqNMLB3=**^OO{n!Tu8J}Z2=Sf*3!S+V=zp?3YR=T00JgY+Gb z+_dlbl)CQh`x&FEjYdf@FTJURVoYDX*>Q3R1j634sPRXmwZC0cG5d-4o1r(2Uke-a z)ntTg|1nC$RzN}vEKOcC<_3`%shDD!PDfd>i<@@z)Olyce1AXD_u4&#RaxS>tgd7r zHL$A);itSK0z;qPn@DC&?>uA)BM|!u?%CRg`hzVDESvkE)$cZUf0v8P!%+w&^n0re zV@qm=SIxqrKaj%csgoemGA3(n5WxJ$VPEM#S9^nY?|xvVmr3~s2*09aKv0U-7Eh5H zPamMo+zgcQIya0_7C?pH|HNl|7QN=G%h?X3$ZaGO4;(VGR~$y7)h;e;(IP-M`?|7f zwHF{A(fbwq2o-)UuGkax%U$Ww(x=zs#@Jb92#JB;$KAl$7}Au%H>DAcj|l}B)BcgG z#<$!z*V`)oHLs3!Qg3;p%qo3-G;j2UpkquA=imPCHdV|*rP&xbosDZ7_*g z3+U8d<@ju$RT&{526I}9C#o`-ZHfR0aXUpc065UFxZkj5GRkcsk=zY%j*uzs2`Boc zl$edhPxBXn$f?%#;rfw_lv`9K)2t`LYj$svsy>WhD3)mTa)>i5?R9?%H*(y=>mMnY zd&{oRV9bC7-TF!tA&R~0S8Zj|cu|sK_rJ39FM_L(AQ=)YI^`fy9Mbr>Ok?M(0v*_^ zMsvasxkNJ+D@R!qAc78^bn&UX6Vr3}Am*r?e{5=xo2{CrP`9vtX*#lS{h?GRyB zWI(HY31)8{G-rboA5B*;CZI&0jl9s-N?s3FPwh=U15hnrs{s1AXH9E+^9ZoaT={!z zwR9W$S#6Fu5U?8)hkDs51gGM2LtSs|jn|QIh9Q5|k(X5vNj;8t0W+w&62&UxZ!B*f zw_X9Zh{<1n&sDP`njLNbO%E+eQdMO*A#VS6LYy98D=7*Ru&~4E9N!>E(YuzLIm$F# zKHM4Ryp_95-W&Hx(~w?G^Ms|Is{iG#<4%dlMX4L4RO2gZU+#6RBmOFj9st$$@Q;rs zV!KfH^;kuT%hp)@*ob^&e3aP0YqJWM083OAqP}mQD$pns4p)!kWQ+Ic;AlyKQ1CsE z<8{mL`A#Xy%L9#{I`*VWRLL{ESw`#pm#XPN1?!T{Dyiq;#$$%MX%bF^hfUvwyu@Qn zhnAka@kS&SE2J;rLo>G|6Op-J;Eu>LbtA%tF@G6TfEUBD77y5XBllLHG5lmZLt$&0 z_&wWd*g*1|`QaQYhXfnuA&i=nalY%OGEV@6IpPoU`p`H3xccx#N%jg{^LL-q=x%eNQ%il7%FZgc~>OF&trj<}$GNO4Vus=_Xb zNbWgbF-lUVP1%SwCmUa4d_fzE?+c_7!EOxRE%5xot!O#%(L>gmIZ1W-RmcI$)86zb z&t5A}Gvpx-<|=wxB!7c2TpppkylcA}L=4&(3{cYy|M^EJslCC6nqj{;p4}z`h zVmhH9szexqO@2sQ*?xuJTV3k(9NFi$72h&NCN>-v;D9;*A!8GZ4ZBJIlG@Kx zZf;fdmRok(hRKOf zVbo>N%-V=^gf~gw%pD&Urw6L6t#Z!=G)W85{STg-2#kX*2cr? zXSJqE`-J`ISwOUOT$)MP!ak)Cd5i8QOet`JkNj0-JkzU3qwUNju_BeheEWruYoiv1 zA6+d?ay~?kS>a&GKY9yx`s3M8VmrQUb-#FG?%fFCLYn60r?~RFDy4T?r`UwEfa(nN zsC$iy_HR`fPYjcXz26Jp*6E7nG~Sc_cTS-E2QR2A5-1*&dFEL;>tU~q^_~E;qTu;X zICq1TTO{Bx+#@6N~e@7QTFuOoo@=ul8p|03Un4i3d z84Z4|fb3)(-{Cx7HA7WeSAbt=c z{;HYssq9AbhH4l>V}$ekXt1%&F(Mg+%%&AazxZ%1DN=^+T?ng8jY2mpe6 z0xDK9f`spuPYaG8C7tc}Gz@`>T`1l-dSibNf3hzNOsJe80l#dKbByq2p<1;;Gj%c? z5A_!eLu)>=@e^ia?z}{OzfIfkR|Y;6)prCIWl|Ci=Zr5ln9QtIeP3(WDiwxES2<(t zEvqa3eiqzhFOZ}j7mR?6`$rTYLl++ue5>pyjz-8JLYkcnj z?aqaZAXWr{JM<04J+p%Ly%8%a50DwLpTySDt0b`g-|U_GeziHM^ksAJys^+Yq5$8T z|6l*zQ;xpb#0es_%k0*+XI1c(V`NzT6u!d|!5e_;y{_Y261>OW9sW6r8KBsWA)p|P zr|^{!aOyNM{>*|ANBME2XA40N zPy~URf1u^c;oBtFPlDk6FP@muVw@89Z;#`%u0W8Lq`ona)GM9`xssSqvnc2Wx)7Sw#R7l{SV zF5k9Dz4!OV(+-pPyt)BE9Q+^7`3qOWh>J7nKNtaLXY){k7a>}6P!@2wph=XKqoshr zSvzga!a7&_2KaWUrZFiv7=5ay%4CCl>I{m>NR=AkR8lZ7g(oWNaBv{SO{(P~h!;r~-Y9g62qF^^as@Ec?WPHjy zzZ(N$W^y(ToIHPk3wHaxJl$M&EFCEbRtDczdil*$F9pxaY4fP@ddAMhXjP(xVGyro zEXSPxS|QbrTop&m>L>}mcKh|+&u@95+%DhYgffobfVXL?-XVArrN{&NLG70hgaWP| zPYZVunM5#Ek-BTSYfdFR-)shUA&t-5f43y6F(J89i-fz9LXm+5p%im@2-C(&fg{*q zC0jT#*WuYQ`{a|AB&n3kcF^z_hVjZCk`=K^eB&Dws8}WE2B%I&8?}YgeTv5TBzwW%@V>G z%8JjGWtc{D+JTgS?`7nVqk>%m{?E>NDT{@IPU>^=-)S+mw(`Wf;aieI*HKB7>&yS* zJd^p@=k^hq8OLeQLR7YmI;B>PxDW)2I<741#IPi088gt1}@ge3CF6{tT6dyj@$cm!ws+3)?*f}`2Qf9b|xCljxhq9{^ zy(Ms7Fr}9~clkf-WXwB&4IytibQJ07Z;~BZhi}Hdse1AZG?j{wUnf*wX~lXni2Qav z6V$I>7sSr-g|O9BTqvD+bhU^-B8RSFonsU$N=d){wIhD&^eTp6WiQE~^QIQ>GUl(z ziGC4%RimKbWld1aC5LL)U2) zVn2GH*`pO<$!!Gr5!hH~xyOk`2B~%f)g|Oj8Hq`A<9`Hs5I}(TZ=J)i1)!h)`k|sA z>g&r#%qQ{*Jy!&K8RD{2}AQPz3Wj6zxr~b)S!Km3{RywKP zqgh~TEuqcOCql#e9GJdjPXDko5k_A}dq$&47({Q2h_uyHub6_<&$=#7Hb5`088hkx zU+t0@o}n#s{{eDIs{U3-=h$Hn;LFjCbU~M;PwNUsmlhRu_^a=(E2%B;+4b9gqvuyi zLhNbqk-PEi1KG13%U2H2bF(Rsr-P9V6jf&52bB(Y-r|5h0Wdt>})_~5!9ij^8?$8yh0qOi^#a* zfVF<&FOjF}fqEsInjFeuZ@Yvx)EsE+KY4lbvm#%S0{Ou@XNP?XWP=J5+8^jM=Vfn( z$l?`Z)4#< zB+E08-Xy8Wd@@kS7j6G5>)2j!b(k6b-OmDvg2 zYd_}k+$zHn%LzrViM<2&Tr#U%8nT4nx99jc=lG3>Q@HzlCFV#c22V3%;`shGH0n7m zq?uRm#Wj;ej|Mza4*|T7<+7#N8$R$Tdn7W!Qv5!rs6#&_`D~laR!iW|=eE4c z_+y9ojp0X2hPm*F%L@{~g(m${qC)t4A@J0Dt@Q0%FT##orMYSC?{mm%CE~5%3Su4o z`}%EH*lW@dSGu%kozO6h>ZUv-d2H0$e&$@=rIfkUgRm9rA_ z$hO|`D*keOwN6aROJ!UXaXNbLK*=Q0TVmUAS5I%1sznEsrh=5@KL+ zL5pAiNL2=y0MS=>K``GgCbR~!%;of3?)U!Lfxf=s&QyLVh&Hy$=+C1tG+DT9&DbF5 z=3~I5{hD|;ye2iEV)!mYCBG0x#V;$$MxL&pouJ;lBCT2r=U!%fMnGE7tAl-|eD9f) z_-fVRfwPn_tP#iRJgXK*s%(o`S)*PgsP1jC_b$G$|Ak)sy2fW=ACNKEta_davp?ek zUB(^O8i#3b);D0BA?P*bJ4`29V%d2=*Se zd>czz)XbKsV_uhP8ys&efN_I#?F;{%_pT_L*a+#m6Gb4C#~T8u7HDIzKtGVb&R=RE znKKJ=+uU>nRs*r5+aLIq911so>BlM<{uZA;a98N({QWO`Ao;`5!C747`#5`wUdl#( zQ5%+>ofYSzQ79?sQHkff06zi`-WP9GQV9P7VICc^Zx*VgLED9{9J*+UlOY2X*9|Nk zNwa)bC8`r`!xPnReGCi5saw`%LPTke`KRt&H=w)AWTdHF4qhD9-ROO_QXaX)OWCa3 zCW*TW4FVLrNThmG}v;BEGnm?v30{Ze`(&m z0Qm6YB}!KYN>o_WJc7_*oE;n5q*dHA+_uuGxEP5=(zDDpaCNWwpDIbgks=*2o>u#? zJOZb~D}Yh5B(-Vt>5Ow|%N14J;OpuBINKN~LsBZ#gyd9Ahd2f6(Ps=Pv3YW8;F@Q4PC#X znC&9+$1r}_$qPJwugBEJFnC3sO7zQX9;E9Hy)Xdl za=-p6^w6UBIJ@Jx0flb>#>ewyg&~e_04>1x^+AW+}Ew*N%v(LDg0_147;oC}DTB5PIJxxNH7513q zpD(p1(qU)ZRJ4&T1g?HIDe5<)qZ}p4>yr)>|K+Wk@XRzcay!8nG+29dH%^C0N@H~@ zXJ+f&f``%zZpj;me(Tst_Wz!n>ySp(kZ8j2O${cogbmv%dn5ZF?w86eJ`(M^O+}$6 zoo)OHf1$ya=PZQlzHJFnkc($NQs=xlrbWsSRc_J?jZV_)nwLxtn`wxG&+C?K4+ z^gL6BEAdxbkl}?{wGl{3!C|olV5B)xp=-qW+_qwcqvTh-5ket6Z5Z>9u}7lm+7h#H zF5+@jvG!@CE(1iYg{(D4ApHg_N*K`gMY%h${4mzv0b7=U-ThcVd2oB;9=m8Ab|WK? z1C@{WRFjZ}P!f~j-akM7XR~BS9H?KDPsXQWOH7>=o%9X)z`-4g2Thl4r=rP`qB?}t zrE`K*Zs@Wyj@~RN(URhM+*x%glfu{j(7zFKV*V%CZ+A3goIhU{gg~SsBBU{Qnvv4w=K7 zD~N?}In1^&vs4BU1;mT;71I~A6)GfKFj_$e27-zjb!Rbnn|gldj?mhTVj0)`Z$A%h zL~GA#{xZrLk1~E>uLPBLD2;pE8I$s-oX$Qok0W6U&YFxp#Jv0}vF6k*C=_A9wa2i* z*f8HrnuNq(`02>hA6^ZLa`YaYUFq!hX{jyvc)B^bzwHowzkBn~l@JB%USlA;V4*B^ zUlI>hHvsFm9=zBaMYk{V`q46$!M*!j{WB1E`uRzpqzAVgecp~|g)ULtOGzMG!BVS4 zn@w3l70%AgA*h8X^9V|tjI=X3m@}!W{1>iu8xFz-pvb(f*961|?*4WJCyggB9<@Ae z_q3C`^8XPHD$36 z`p9`%5$ulc8CpB3=Y~j0mLrp*5t4C%$YOX^%kP`&EjGp0k856)Y)50Q?8J=ms(V(8 zn9U7R?{g$B+A|o7g8RuA2mfl=pHdoM{d>8!6r$5A;sv+It4c#m^Ws%F&&rwAl2u{i z-c?lIj_7Nx4HVTjF8m=1Irh4H+CJlbiZgAtm`BVhI}{ae{;XQZ7KT3r5i|*kG){C5 zA6QQO7efSv5DUgPI&d{8j(|(R42layawLswETD_e9w{rT`8}I48=_O{Z4jq~kLDdE z`hs!YK1`FX__e=lvpN_G4UPm?i`Bo>^O)A;0Cfai$jby3M@~%d8|&ft+d+hZ-7O52Y*fP-m@`9Y|pTp`fYF=*Cr1=<)ZN zFXjMGD3N!#Q|Yd%p2Pxw0Mbrj(|r-FS@0^ngjLCdL`~&s{NP9g>$HP-MtX6ClwXdP zz=%L{aI(;Br(rqIG=X?p-Ao*cd93xzo}hq(Xm)GryZY40^ZgZ+6h6+sY^owYD~i~2 zE~A)E+DjPx1dX+wjG2xRC4C3z?3)_8XKK>AxE-K_WL9XL#yD-c+AnmweooPXo4Z|; zE7|4(fCM+tjpv3rCS2(FSt}oU9WUVNDSxKaO*?=8qZ2`5QbhrDb<~Z^59Ouou8ZxY zy_5_xESDp`1v*Ir!PtM>apXTY{TT&&0G#L~)T~;s49wj&u0?bl(uHBag(-@C4-zwIB`nRNGNaK_+ji zo-|_f{iTbH`Sjk|2|X2!CI^|do6-l!Uki0{nehfhzuV&tVzpLdikul=Z-*7OK0CEX zj`-y%N3It4$r7upE#1EF5f6EMhg5W%OujKgdm>R{L^KnQ^^dj%_eK^P+Fo?YIDoG{ zwPmZ9T2TlDqX~$dB#ICpG3K6B(O0s6-}T-&D&TQZYRIA>$!wxzW^GQ$ehr8`HPd-v zbW9Q)1n`>l5z0$7gU6}=R37&S_eWE?>p3n=!psLl>kA?cZ8rNIFlxegR9}l#V$@vL zKRFxYRKNv)HVqjXL7h->p*)kxM4cip5U%bYdH}aLr-V(gUsB(v7Jt!NpG=})UbKJ$ zP~=Gup6C;5ej!EeXC>6lc_r;jq9*|%)s5XifMj2e;DA3j+iF z58~Ml;*Q>HO9dwGp268PXYKOIxp+;ja>FhIh}K?9{=un z1mG)gCE)Hm=)^#~(}0r|u%%7W_b3K7Fuam%tG5ZQl_>a5Jm2|yDNj~+!Hi=AL`mkqO>Xbv;1Dy1!9*toAu zpTYx^o0?3%Cb`>zA=w)WL8ta4suum!WX$j)b3{AM=>=O@K`M_hlz7dr2bnOGkE6lC zceMt7o_>!{HvsVNZ@(;_HbNeu&96ENUyrPdVibE!d>eGkXPARbPjbwn@Q!x~2j17O(Ek&aF`4#!(Bu_b&2m?obTlG;{p-X zxmU)$2?SZ7DSRY5@T@u2;2zTHsLh_9l}o62LCuhgM=bVb-QJz=Z(gKmESMEN&0MC( zZWEIZUH7HOI;N;7|M#ZabYp0C?`6~_9B_9Y1 z5yd6cHs`^X;_Q|>p@VFIbhQ#v4uu7_MBG(&$nIF^@c}Ml*5Lq3h164XI%y}+&{~^g zQPpW#n%+f=q^3=-0L7FWnUizbi@53bK?2~| zEBQ^`Qz;OCf+4&QZUOE!`#;a?mKOHaXwTG~pn>1h+hxy#zdn{on$arzMy~YS>PtLj zXX(;C?V%o8J7z=qCXuO-#Rkc0ZK8)ni#&;^RwL)cIfpfsv4q$S0XBg*&)v)HAk{{A zbdhATRiTlGHdy<=w2KLEb6;0I>o}1PQBEZ~=K%i6#L}&lu~UBbbVf_7(A#v4d|y z16dPONVKaf90w$@zd!;y)RZ@F^kl1rIR7aI@9;zYKby}sh9j>FVJh~Dr>y^^sM>~G zdav!&M3SW>E6VCh1IA0h$?F`y=S=#B4C>Dr>rDQ>BT;GisH^ZZ=gA0{Or5QTgsPIm z;YsmU6%+N;^`)(M2II>;6}bVsuT3CjRzlj73z8Cg5raV`Ogx~umivDHoo{9?0fSc( z7uTxLg3VLp8s_v^3nAyYtD5K3-4j5sq+XXN3!;kK9PaBURP-dXQ_q76X_X)86SLns zo)aYLlPWHu3+}^SrrH+(pKIK_=vf0v%3o@XEBh8UCBf2g2Y%#P7v~IkZ?Zyrc{Bta z9CB}|%#G1LU&}ex;ponIzNX+fl6<2g^bqdy6Ru7#&z`r=gFgUbv=JfT70W7ZrLjgP z*tF<1X@g6iK<4JC{dEzkLxxIiue(=*`et?h>6*5U@uU8ew?xxT4CC(H2zHEnnqgM6P+jb^X zK)gNPeD^0m zu7aVw6V+dYe4B@=T7bI+e?ZQ1&k#f_#r3OhwAoMhBqwr6$#%k6igl9^8Nw=UKokTuvOl zYlEmWY1;Q8V{e^EdrYFG^T}rLHtGcgz38XD>c-nlXFU200~{YhQdxA*ZYS8SP?Vzy z_OwwODe&~A2k`Vqk!ZdDS_uXbSt}vxTz>o}%IZINDCy0|_VB;u}(j>%~#|FP30{9y6_958jy2$|o-6 zWfYS)w`E838hTz8WXM>sk`84Xg!BsfhT@Gg9ovPziNN9 zCs@ZGmXcDtP_syF{2RAy5WS_PT_GL4T3 zq-qQMPuDiW+!|c@*a(-pi2TeNHM`A0Oeq+W9wX~g0E=z3+;?~<`e#pUZLUCf=c_!& zLhgdoi;eFcX+t|hIpqQ@9(&}V7F6A|n}m{}a+&!18c@Q`T>r&AI!!57vfU&SSLz6w z;o&6Vg7JaRqA7#>%XLhzeXQi5{HZr`+;*UB3A6t{0HckS)Hfq-{cS34&pHBFRtkfp z8dK1l@$`*^)gg%#;j>`}I9?b%vl6j1FATi2(+r3%DcS5aYlbWveunn75 zY(j=1g-KdYKzT6#aL@QgQ|AAs56`iZ@_Co&Z79)<$riL~l{%iYKr%CG7;@PEs9%0B zQ!DVCKI_^;^60`+jKW`bA8ELvb|fHIJX*pDB~S~TtE=wE9A|Q7y1e0D9&?Bc2>vl%Fywkqy32Lg^^d%tV>f*s@3@B;}`Avv?OpE=rdS39?Y`kmVq zKV6fLy-$gA4p3_aHSH*#f5+M2W zZ{bU?V;x(EW(ZWfDx!TQG#9rjq2;q2A1y!ar+;JDi94A@4EY-k=qFGGnwqsV2|SR1K;4HYf_;QV&!JJt0!hK;op6GfqIBC~p#ZViSaQa8k)fTh^zI z3#b{NLFET_IK^Ucf#U^~|KrE6bzJZ#0 z#EP9=lko5)!_wjVUogNA2F`VRf6C70iR1;vI)C|6BU@$YROE4^WvW~xBr;M2U9MS4 zc^I`1tEneHQnXNXy6@&GN0BSQ&~c@3fpobsu0R({TlPDa+eiK_F6I8)jQ*dtoV_QJ zM}aymt>mw*=wV!tFBFoE-iCn&Qac|P6*VZGV<8OuO*!tHN>&IPl22tOxy#>+Bl~~f zNI^=e7EhCSd^u}sYd(}kU@f50EPi)Xg)$1}Onzt(d}#WmE_^G6XEYS-n|=P#h;l5P zFIcBl_?tG1x4FD@*5LDQ!cQn)5F)m}Cg5*jJ>0uhE51jtPeA~rBU;j%bOnt&kEG;6 z47GcYchgi^g<*4k|4voy17~x7yH^Rr%#rvG|7j|9qBixd7hE{QPTb;j1 zgC6?MDql!Wr_14(CCU>!_ZU!EZX~{>b*KhqPt3OhuI^i?qMza)R9}wfu{q>ffPy@! z_czR)Rl;DOLNeug6;rT~?8;oZK6ZcAv>BBzPca2#sFL3fVqty$Nxgo{%v!y@*o%Zs zJ7#mcWXRSrw#d7avqk2I7URY`j<FdTay-t(gCURTZDv98 zog#kT40ete&4h?8`hIr7V3DFA)f<&@HcorJAD>IrkkBDGf*4ikl_q%l*Bo8U7N_$c zMJI;f)|Ad4g1k$|bkcH1%@C~qr@B!{__Dn{MJ$d?7r8=i)L5;>MIiIwlZ3R}*eGiOLpAwymfcn78LO^ql?vQCMu;r- zRV1R+mpi5($ee?dP2I?}#B3Xx1|LZfUkSPXV!@MmjY)QPi(fMtDCS*^pXt<*)8NB} znrXN`{~iy9EA((pbwtWl`(gb@3X;e+3Bp4sfWH3Nb4>SS=H#7`mgZETT=x~as%k>R z{Sij%9kfXGE10uF{@ZOf+@PXlJp5^5Lzs##t-)JN<)#|q^z>zgUsxRMZkWtNod%Hy z&jMyqBOyg`3SKALfVMRG)IP|lwg#?gup2WS*Md(4f<#K1I_mWIsU_yC&&S>#%Ep$& z5fWpONeu z(@>Ugt*&m@Nu1h0V|P(EbQ}#+X$t-g=QwAR=w>GV51 z3y>-VxEM7USC#Qcff%iCLmK)mwL2t-rr=T{qG?r}q$8Yx6`}(&KfI*yoiQW_h>x0b z=sWeY5}97Q5*09df6!dK$!y~7 z>zXqtey$13>GT&A2hDE8<+4Z!g_KL2U@|Z(ybPTb?k-{vFp|T}sS8Y}#O&$jb;oRq zgtC}5P>xaP3wm{}wtDs7=1$%T2|eb|>dUlUmdP0m-CRE)2O!S;= zI1bJWQx9aKW;P`Yg=*$`d>FADsd?uWm76*Q3N9F}kQFIp{sU8QQZ4P$@UHPK z&@LD+GL_AYC8s)~o>5_@t~)#MJwy_VG?H{xoXhHmv;~CocibD&co20GB!IZR@7LvT znLL0Qp3s@eN`ficI%U@zmsE@k_@Mbo!73|f9l;7y?VUwOorAFZuUd$Tw?$0O8l#kn z_cDBQtM6|KLPFlJ*U-{p1NN{|2}}r~4}u*gGNRF?iIjm)0%89MyU5T zW3CoIpzl?9GMEup^E{ZzwMu;JnM&r)e@szPrR-{q<2q0piTepZ{@EQm=a3M6b#lF* zoB4O+eR`%ejHTR&S|bvR<^T=lwjU7LH!1zH3(}VWKd-v{iYUSl3q@~ z2mgfSf=6Auc!wrbV1vo=4-soQ(HhUpE^o5{Z@TRw)VU@#4BfAR9h34jgUV{eNkTr1 zR4K;}min=NPDODw#MMeX5N5>80@IhzI>~)PpSaI^-dTLM3`=wtLCSw0)xcz zl^+r%Wcykke+PyJhU=*=IPK z-OrExcUMljD%GkrB=wz7a=z4E(9f zo_n3FDQ-Xu%HK6AlJ7r65HFt5kCl>;W;hjY1+UDv0#CdI!Y=muk8F;Y6Ic@yrzX@F zP@I497F*?J#g7&8PMD?K^QcaCE){2nl~UzWS@YzQPw1=Hz0jnE6`cUQgq!?pI@ra^duOw5lxS=|pp?MbhtY&7s$ZShRr zDSLr!BTffqU849=6z#M-t`W*y627K@8f4)2&PCtM@M`yvk!ZYklX%JxYL#8z?A z^AvT3S?MBZYob@4OF>JM;302e1i@ZOnI0Y|YyT4bJG&*#ja*8mwEqphjEzyr349`a zp9YJ7AAv=jyIPabyd#X?shLb70K$@zcj_WIFZdZi3D`&Fyg?7tT#*V=DNSfzNJu3G z>??C0j{MtdyK{BqI&ttpShOx48TSMya_?vk%(h+&h!idExyzCQsTGr#klga^-5QR6 z+Z1&DtK%@5I4ljzl|Nae_-ASAo0UBCWgRwNCYgGPcFV~kfgUS2BmG|9KC*-deMCS6 zpQ@)wN_rLw-af;W88D*r$O`A!nt`@p=5K3sa2Pyl&HVaiN|@{e9v$8v5PBD4m}3sz z&q|O*2ls;hH5$CZYnrcCgO+~IFOz7Yl`37c+F3`K2UteXOLUSStCta1Gi-6|#cMqX zNDh|M1-L!^`bKIZ!Nk5u;y?Gf`V|!l*A1B!n1|1IFj_4=FDrp}v(XsfX>o7_9sQ{l z@^DcQPFyw5;ge5nBK){D=g{}8-?VY-z3++#WFy<|29V7g$dyv1!3h-Dkv#k@m^^wh z?*^->zAtS{G1Ro4+PbIvMREVxhqpd>B8ZmPL6g@6bmhnf6PhEev)W(_?1c6t+%E|e z*<*KZe{Px%_Q!c=Oh<{*JG;$IiPzWC-~RX4V^sdd2W%MZHEmAR zBEJ26ci`?X#i5DsXSoB*fNRzeYHgsbx-!C2k6!^H0?9vl#|LcSR>6a73UUuJ|d^62_= zEvcqg=qW8M0i8$1?lXq67TPkkSAwP7cM35tnw&pR$qWCh1Gp{`nuF!wuSdxi>KYDJ zC&0VlR-IhytiEduz&7#SL50h0Ok zN3veJ(u0_wxuy())lWcTz@aP4h5=u|s5^I}$A>5?%dE3Bcoi6(Y)Pd4j$4ZKjI*jg z;l|He+JDgF^)Ho5vubX$;_-*lJ0Eu|?yBEm5ry^MTf;eJX*+PcZ6hKn#x#Kkq7ZC> z8xT8gp7@!UJz(05{ScPsg%_2T5KrUVP@F9!MO&5>kK#oX8J(E7N5robLK|h7khPE! zeA?Eybdq5Vnkp;6f^H;B5QVz^DE+CuFkS21AQZEHflfT!Bq`rg5L}d4vsnb_ki3;T zKVT(HxZTH|!qg2L-{v_Zn+T_HbsMEMw^A$A?Flo?M))BW+W-r2Wu%e~(h>YGizsqy zMQNQlNRTdu+hT-CG7DEx{{sHxU}v@e8|mbhm>k$SV)+3Y7#B`G6?Pz;{v=K@9c&hd zSr-M83L^kmM6-}ipOTKSvMlbB^?va(>^ZlK)2}0vq3x~3h$ESzRo~ANSAnT^EkFw` zf6?rl=BCHz6hg;3({iuUt(Cv9q^IHWhGglS7o6kBd~=by?MsLNeS9PsBKyWHgDfE- z$R3D8cAUCjyGyYB>7_oc6nNkQ!Y6XYTUxWah;Lsv!6WLY7WU38>Y&^9W-^@k6gh|65o zmpuQ-EE;wef>u2IZ~9Q!C8F5)+CUpglls|&tv& zb*}rx0JzC!r6_>=d{UimzB==ohaH5hUo=1{3usDLWc- zETLS&j}nqp(j?8ZTe=S^ej7=P+x>HK zv>n)eWj@u3@1-V8A`~**UW#Fko5Ai2Lv=+ItGWtzVQhD-Mrv=p2u5lb{G0cya4As| z(J+uQ#Y5T}0&tD$)!Y~f+cz|H+fZ`osnhc>8hTd%+P?!*87gbQSk^6kYAJ z?=J^oj$r=Cfu_cuzuBErwq{o8b?So!__0npLn%ZZyc=`fN8N7%>*u_WPDYMq*>T*K zYZ6^W)Fb=}Y~%L-wMlzkJcfrT4?AVtj1>3=Oz~|0A`%kjh>B?hl-x(UxY= z^aiZR*)Vm(kg7DmP1OLwO_CNiw~jhBUxV|m6U3OM93e7`Ijxxoo+-X9dq0B4~?|06AF0Sf@L=BPM_xZtgmueEoKcD?i(1;49V2A_a8kS|Kka2iv zn4k;`6WJkuCBJb*xeyy~>9o%eA;sM@vfjds2>}9?3@I9?<(V86*jj@(sYPz~ije0cl&6kt~>`R zsWx~=lJq+6pQTkhi(qStpwX{5fMWkELn?FBQLHp;J%W_g2zyaXe$XLYB<+VPg<{IO zlaAo^Mi;34yB$mY?(=ql*==*Trg>`&^HV$1q zicfNZwjFI{8c0p%T89RHjI_Z~=RUOMGt2fx=t<6Q5_Q+2o9DK?lImnf>mwG%@wcU4$X6unRRJMKC$_$NEY`vOVvnraqigT zVQ!p?b>S6X7an?jB1un?#ttjC*S5>1zx`~8fN>&!ZvB4$*GuE#|BIAMa`xNSC33^r zHaq>_dYZs*cf%9IXl&mmK=&X$JsEb$7#Anh@J5Qw%E#9-r|i)5M12Ax?ZPw1`ILl& zbu@0Toz2oT-FsNvWp&E zlG2K&n@zBj%&oi{qMa8ZT&NApi}X`Xk=Q1l(Nn2@t`zylG)ZU2S_Ddj{>)%Ev`p3- z#G(Y2eZ&TJHD&NU=nTaA?Ic&=a<~$`y6IBc8#S+PQc+T+PH?)623HjKtUL_}oi5M$ z4x!rbowwruhY$A|ib`C4iL$6Ul4nTbJ}>H9oCMgD0k)8~)RmK&AD9#QwBP6r+x#mN z)n;&Q)Cf^i3&@dLdBD9K%u;!$jA7b)A7P>?^;vjaJ6cYq27C3!rw#}PrvcP7Cbuwpvu3maAMgR%A^ndZ_^d1YO(Cjs4d=dDeHs59JH}{KAZu{9vw~$xWKb(} zFb6IL2Y39;<}-(m$?d}`jUvkBhRRtNEm12s%il|>% ztD8Kk#4z~YTzD4bJ7179nX~cc{q*2*>z_+0Zof&j?jYgo;rAw^Y?!k4RcjPii}Gfm zDTA9))8o#IX&ZH?+qh#&}SZ3^`Y)x8);cxvCmBO6%i`q(}wpHsxDHLs3ViN0_umG`MYMRKAua zT1?*SN(;o@tE$?HjhGB}DVe=7E~ot3Mo_WWGHH{&Yy}4dWV-1%;8%M>KWNDy4HU{NePU?fX@q!(+y1o4 zyn@(IVwF8n$-%_tS#d^g3o~+g%V$H^rUx)U%SuiADNUkCUPt0GjV0i#<<8|C-@s;y z5(G;1Vr4ZsKav=ckrFG}Z>*k}D#}PL5Jet^6a>*jlP8Zt7J~jz zX7Q0nfq9J!Cd8Bj6EbL?T{*HGp%`B<^OS|~i7aD;ng>jdoL*`(=%+XMETFlU5RF~B zb9tR&Es~uMtW#<*bvf_T@9W$5)3ba`7N6F+I-XHA!O@=elD`A^p(nBAWUI#<)3a5D z0gcfGkCofpR1^!{lG(qVYlTMAx3|DJ+vXc z0(VM6)c?`ZwcXd}A=|f7!XeIqDy`et1ZDjAj`iC-N}+VS-k*q7WunCQ!1^V-NM3DV zy&A8h<__4-GAnDp8_AWOaG5N2^Z7<#*^=HJ)TdYBYD*{G;1(_Ho7N2Va94}5_2R`neDWUXh()TtK z>%ggVbxlq{UK0-jqkhFuPhpR-gs(f^A2Os2$|2zL*Uvmx|SKU~9yFLv&e~Idq+U{GC-ZUsPQ#U^( zCOb#;%AY}rwZ*BR2`fEkpuT!HL64BNrb%{KI@_}U(-q%<&SOnUs^`mllpp!E)yMQ2 zjw~DcAxFCPPK>!S^(408uHGU9y}E~PG~PV#Doi>>fj()Qh2N)kqH);AzfQWlyxlte zoeVt#)q{f+vywFg>*N(_omC>S?1P*jiQ(i);;1qz$+`|yy-u{*N#m5Wyi3@{^y+3p z*rVr)9@H-h>@STXXy#VO)gE65nfWrIHi^&z=!~JXHo+-Q<^6Ru)W(8@=|c>&L1Sk% zX7ax}U9SNV?9YsF9Xng#Ej=aeJ?91a)qlgq=l7UU40fxczPiOP)t>=?E zA-dFzY@B&cLpk)*%(?t=Rlk(Q?)C2H(<8WDOcHw};pzAI&;04;rPM@$$fsP?9East z$Z1G^`MWFKbm1P8G@~QW@y=2Bfk&e5uL@fERhkiX1QkM-(u6`w_jQ_NEUFZ8;Fjw* zK^)`#&uOzoVArTi)UkD?Ser!KooffKTP0kZ%3enMUwlmtW1NjB5G-q+HU^E*`<;x} ztIOk-IJq~E*ZVtj89mg&WTC}mH>yYWV#GRp4v}Q7ytJT_^Zyc+{A{#9Hfy5^0e#-e zXPm{xpKa$YNsS$2w!~00U1LVG8#FW&ix>fJp_{aRl2XbUHZzs`cacQKu?;07D#cL(GVMXhzYvaO=OP7{tb4&5d1Z%MCybD7IWF#WFA zi2T^{P}t%B)!$G2F?T{Db#R9Dq(xf=oxLW$d{nt!Z(H8yJo_T8N0Yc98;=`I-#g@u z!=x)?jNwYlBbrovYN|Q^w`L%fdzkK6e#uc-{qsHcq3w9)YA3ifVAYd;ebmZ}F%(Lx zkZM36R*f24 z$T~P?k-rsgA*VFzE2zQE#{z{8`W%Dv*c;O$yra_su`fC8l7!^DWwFN>#2SrXu>mfL z$bJ7zs&iDRAOAenY^AfCw8KrSe?;)8Ge+3)nl?zi)ian3gg_~C^KFD>nGXW5L?<@S zlgk`Rq}>!)g}l~kEJAOroAAtY@f9gRM8HJODy#|ze96;|DUGLKcad%$10s@D;C@)) zCV7}>z(~H=3Lwm3Kg&TICYCTZ~?Jv~IX;@SHC|;BbH00l297@n}Y# z`t90;-j{tLOX{F~u5xHQTKc4ij>(oX)a|!?OKToXYq#{S^e&Ddu*s?aTDGKyaUzz5 zt$fYGN4JmPkAw5_6%kWovpATF?B4s|Mt>$1g z)P3ofnSSea%OUzD z{dL7V;VKmV8&_3ZcGjCN;n@JVB=>24ZsL5s=6vKtNa#ztFuww1Cv5OI`9arbCbL2& zlSi+}k|dgN9k2%DfG$G0_F_EF)qSm`Z7~|Z=xNkjbP#z9m%WeKLZn$iwdO5*&$f*$ zMf6P)zd*1`rU|Uh7D$xz3%$UX&%SL+zQh3!VMwq-sKmj7v-!HMAOMxo!AsTS@h$6=R>h763$*lANz~Ttv3~Sf%JB1!GEaU0 zWy-EhqY6o{<&)Wjd&H4Cq7g#etW5i`aXscG#x0XRih!g@+*zO3j)}opModGGudY^q z&TzpaYvyyeWgnw7p&WGM<@9p5T?cMCP?8wu1=kZ zh6pcdTmq?q-|k&vL1E}L7!HT4bOt$vrb9)wqn76E*PCPlu@)6xgP)lvr@qgF9s1Pw zwY(_&qH6VW;WJJhp|0UvbIOO7+eJqE+5|`W;X7+9WAt}L$>n6AZ%ASUicBSz-dT7* z!*pnUww$C|i4~Ld6X8BuH2E1}Tgk>xqEfsuPC~__kM!%=f>n`8T{!-3Goc#ZC1N&- zJK(lcv6oabgTq=UQmtCaM)qSz_R@yacnnv@{{LAyRvkb40YPYP^6>pI7RNiyUKdU%|)M{+ls( zF}vg6IpbEQK~a0pShH2ky2(IZMvZxaofyP_1$`CUot!~6fXTS@S8AwpR0aK+>yl; z*clXKI!`Tq;FCV3-N!OrM4v#mEp)|JQU4_6kwLK0=ts6WBDbIAy*=%OLuls!b-z(^ z51dvnz-)|gt?R<+mN97}%+N9{Z!P#R98RO)xb}Sk6($jMR97GQGt0F&(lQCv92$n_ zEdYVm{mDHB%Un`cROFS}X*2gVRoLwRPv3L$GK_KMa?Eb-(!#80HJv~YpfL^{ZjKCzMTLS4GkccUy$QI1e#$Z%|;vV#2n$4A&$%m%{) zK&qluI7zv(ZVK*AbX>u2dU5{0mpR<1-toJkyQ&^Angk9h zTc%g}h=y@UZn^k^4DtALhL?Hjsy5wiu7+NKhU5G1JncmRU)1@CrExt6 z4oSNnjlDpfnMW9e7qVHpYRhxAhD&xHl~g)>BlRL!;aW6WZo$G3j*`E4KVM>b?|BgT zvhLwXQ!2@$aN9a^BA5P{KIc4=Z?*Vi+$5w|jr4eW@%_dwD}Wr9j_1qbE}2`b)lw?* zkCR|_Slee$ue`j*Q|Tqz?V4D_F}i;LoI z6ZuunaWl4yT8oGnwY`~c#TpnGR$m+jp7u=_BJqxjr{PoImW{L(fbsGnnQ}?b)4G7- zPp{x{JK1zvcM{GWv2VdOH1)g6BSlu5W^(C~_VM}NraI+?Mg%GeEa<2zDmxd}%1oBu zlh7iisWN*am>Nd($!A(@L~SGn>#IKhU8Bj$)NeW%7LJ$sDDa-Li2`txV2*0_=dS1V zcu`_Mw@e~hGs(+klN$qqkPk-C6BhIb8b={zfqPv1~V2y_~ z%cwCc{VeYAmMXrzHj^CZ%Yr*hOJUKve5@$f76q3jS-;lSiZk2*AOrv9u`T0ndT?;@oHw13 zRXj0pdW8yM*G^AY<`!Q}{yV`|phOQCnxF&f!oZ(<9NnbemRZIv0@Y*R$q!qAPjcy7qY`sl{yRD1{HWY3l z!W*s8!N{Y0oB$UV-N9{MLG^@HGK0q+MCIZ{m`b0rMBh)x<0$g7nPLtv@j)Ht#iL>w zm-G+7${wv_#ZBfh#@xXy$C?P+t7%kqEs83h=21G&0yDr7!FhFk83P^i=Id5q%mdsG z0bOeUrY%43f&xA?N;ayDknFbiZ-guX9-&rL2zKxR7jd6E$~X9e!a)BB99ri8S2Xsi zIO%L&Bqp1dEQI_rY*{#wB$C)I66K^~K0yil`_~~svHyC!^zN`5Iz!=uZmhe1P0sR* zyg?~;^?l>*uk5HR$!v^0hFi)+rRxz z+8jy2hl2FFU{^;e>GJ><^g|t9h|YWC<5o?A81E{in$J2iT4*CyLfivh<_tf==8t}J zerXI!;CG2GeAL7t2ARWFTO|HXOn%W3UuL6kzU7O@Rxc}~IYv2t$sKZuix54D zzPru)EDbR5LoqCQZODFcR+s3Ga+C2e`B3w@Ijqm*I99@w z;&qf7$t7hf?CNUlWooREmAziMEmYdLs50S;UvhHnqZCa6QHNB!hp?`;)Bo@k^)&=` zvmO4D9A2zP3-}mZXE;@{77!p(qqty86U7Q7up9g@FOO*gF%-J>F`g)Gca|*Q%WFqe zS!(z=8VU1b;IRwwd*b~7YGh2n57#kt)O!Bk1k0MzjD(M})x(GDsuZ#ZMB1i0Jm6SddM%74# zt>?8$m0NOjCxMp$L2|l5lG9p6qr|z)6Q^HlBC`OO>M7I?83dYDVP*8tT7!tynRo8D zC=N+=4COp2EFYRyVh77cZP6`C=KW;U&J}PJtpoQ%M?&Q9KbMLm!{~f#Xyb}b^DqXa zRH6{*&;KC}t5$t!Eovmb`PqqwdkY1e$PB0n zuz6F}!MEE_0x-wZ_)eIj`i|}b?!3sqs&RUbbsN|iZsYt?0B2!ikS?+s77Lig=aekq zF531O&9Ze;en;Jw&0u4-4VCUB9w`9H-jc*1Jmf);vkZp`jj4oR1G@%(JOUciwtIbV z^%5Z<3{WLqE%L8c0yF$>C;P%>r~q$;v;|O0nM0t*q7Lua9_)LO;LO?yAB`5(2*Fj& zTx$QIe9@*g+=BcV==ia3A;iOr4w28Mg2s!83GZ%dv0e63P>q^AzRr!MS$YsXtsm~; z2+e1Z=k5UiHWD-9S=ebKFi4>qggAs>z~AsdMD2r8SzyIy8G6a$yRDxr+4LGYZ2w(( z6+SRabHK{_N}u?FbE19g4RloqqRi?5X^eU5K5&m5up%hiDWqSIp(9xVBEe1d#wF8I z68?+S8xZKHj)=%vWve;ZDOj3$SepBGP15-~6m__%6^uHra1YW(jl%IcA6oJ~2VG4; zN7?cUYv_F05B{64lyX%~(pQyhmF8{X`4(~9nA2(oOV)p`fA_bdK)$^KaHYdOPHf6= zQM^k&H;oLpsP}$J^DQ>!BW}jERbx34g0SO>)?w8|_iObY@dHB#C@#$_4@tV0e_7d+ z-X{-fD}@QrL*A7%HJWucEt=gF_&PNnPUtMMTT%cWKK~HLCjem6vWB8@N;IL7phnpc zrgrR#n?IbVjQ(xm?vXjET}N7J2vS@$Iixy%f|!+x2VP&~FHUlxK!-r@DvI>KOb z_%ngy-MEvTynObT7Qn=JmYJb_ADzwXM2nqv&1%iW7vVQ2Oogl&r5RJS*uh%6~*z+XqLkZQud_5sG4EfQpL4nQ!v?fv8)4=^lIrjY5^TZL~K(>_p4?;EZi>TJXEUI za|upcorNYk-n9M?*I82&tXfl3hp3Rx>nX4mQ&s9K+sE*Xg2;;3Vx3$i`I?q!d3;8n z_i{#=s;ZUYt6b}y6q_MqjjU4HY<+~xsq6_OgQj^yg+zf|ow_=`=JH8tUiLfq<$*E$ z5;}B|{bAvxv?!ZE8+9V^lh!Kpe`J=88Yq)8mAUa%MIKL9DgStcGgfm&Yk4a?!pgO@ z72a-KQ`|^d+ThK#zDpn_04(DwfV-(Ejq8;aRgM+{DU?sG_s&v$$b;B4rZauelD1A( z(!?++{b$jRu;`T!6Z}#@Yo-bc3{gMNskbUrcLUt?hqdqwHQj-(nr6Mj%Wq493lKVW ztWohQvW0M5$dk{6fq22r%m|c?Jn-alR%F2H%lP1=)v1+uRYke90ypZPfloNY5=Ac*Eet;l?eJBMa)VV$6 zci^*pWf*r&A~cZ1nT1Ku2S9Kagt5>pQOX?EMZ3a-fk*1Sr4mHCLI$0Nlkt&EAib#c z{%u2CobtuEKBW0V=yA9I=7|HpXsplLy+D}SfruohbVJdt<{i$jg+U^fxK{P8`CqjjhI~fD`341;2(7<7&y{d+ zYG+@f9hv;43N-qxe05xu#LqH_GF=!cfk0VTqQD@(4Dd(s8OYcXXCkBugHgcfUx?(R zN2bpsC^T#}{W4}$(IGCH50qGA##`_;uEjdlRE1yVP%&+5V51~kU6;H(P)~2WQ%+d} zfx;l|;04sQXR64Y_~UV3HM^^IFt`MSz_8DEPJl=u5SIMyo-b%fS%Y4*;{(PNxfto$ zXjUJEW>D0z8Q2l{Mr2@$&7O#}xS+a8`j#9(s6JA`S%q0aAEmHDx4ZKE{K^L%U_REe zyw5LGOg#M#N|)i60p{&IloeozuR<~ZS4V*PRK&{45~Xc^Qy1&?$N``THFkb$T*Y+s zBOg5vjC5o%Ndqc}PNM_CTJB?9IH$~j5!!?WTWBVgNUJPr4VN;FBb7&e3Z3u$qd^D> z<$Q(gEo2bGr+qi{Ot#6UO{+nVFFxDx_(K@Uz%91fZ23!he=+a&Kj{TxIrM}b*xq>q{tpq;JN!A<$cG2G8Cn58vPd!_962hM1eq?-KiccJ!2x| zr>sFSsT1r#I!N3)uw|C9I-Om{<`j2zkpB>_mEKp?;zSh|4$C?C5)rP~Fmu=kTRn=q za$-=20u~6l^@1@1S`*IpOMgUQs(P0?D>)ShBb_R!X=V{E_|jI!{8=r^C{=jK>k(#` z$*r62R6;M^Dx+Qe!05*3NdKo@oo}~{;NX<$80AFT329^}{f?_bDaVFmgG%dYRoeK= zXf`{kaE~h?f;7hmO-}Kh7pEI=y{G?2Tx{kvubwAHv(V6Yu)J2g4XWvtoFMGEKg_+l zGPC>;WrKnYKZnY@-_ea=`xi9F=)!g>Xnk3!Z&KcbLYJWvvj-rzRGQxs*c1?q?AihQ zZm=O0F$`(R=Kxw8DRlG7-p14*2E`1KZz^DN4bkKQ-EH&%bl3C~e z3p)~#dsju-%=3pumy`=mPN6TEsY4m3;#T8M_tnRz{!H{T&>xl%f%i;rVqWN1xB~3k zDkv`Fj)1bnxqqHCs~3m^*w>hYs|s!{X=tl)dnR$0mg(z@Olw>>wC^_ml|@xCjD##J0Zz^iR2Vr>EB$vLnflt$y@)DAyAgp3XwA`y{9U#MKH#*`+T1K8Ph8&nOsjR@4rNx=SJow z9xoQ;kb*>Q6CF9+y-w#MoU$AXmDaFU+HZU_el6LUAyqh}na%hYU231O5&H8Gr4MCQ zjb)4@i*anq%=f0x@&Z}sYR|}Qki;>_dXzPGB3<(m7n%0w1-wvaKX}PEq*>Ga;K^Y@ z{##IB$ekz;He&mAl7h2poU1LWf53P@^=@DveoMT6{kf?zOI<(z@ zo*V9X(DOt%e5?1%95c$X)!s32XZS2z5q?|;{>E-S81f$-2tQd!2mWERHR}hh^ne{* zp=;k1a9o6MmF?@B=$ATYqc>EzcNASG;z?n2^;ztvsF+>c>y`7{Z36I0b@G-^$x)a6 zey6U>`|UN*MfV8n)v2msax=iC$~K=0p3`nm6c~6n6F8=DTmWcg#JM(dwV<9%+mZe? znUUfM>WUdAw>msfp?4wh0rr^9CLpAa0(U!ILyhUuzNfuFdrS9_Uy|t?Ty6gJ7bI% zQPG!&=Z8kHcvghAsdGdekE*e~VffO!+xQTf#*?1V{`{o`odC+2n)f++hZV6AShbM7 zV|b5BbIv@S^Mr@m+(kYV%VL3fukBf1pY96-Ho)XP8F~d4g{}!{Lq(;nD8n|a?N{yhL+oHUsYpMy7mBOfylno5muM*bUN&yMMP_*giXy&frkJF1;HogJrTzGQUimvW5ZK)mh-^?QO?Q7vw z&6;_>*e6$R3;*CFAgWthO30M0a;Z6@X;~3vVhYSWXa1w27%Q9N&kll5JZvnA4v~$_ z1plN}i!%M7irG#Y%adb4+abHx`iJJ}gk9So0OL>~+oaG!^NJK>rRd~jA9@%Xs9=mJ z$t|8TF*{^yM$${iJtYVi2O=WElDVv_3(@9s`KBFvR#92aIu_l=?BXmLqT5?G+00Ii zY#yqcp6m0eg0JhHT(Y35FfJ)YlMSwoB!Ml>9tNK9JXz?n2PBqpO-Q5$qqb1#ls2tG z(f}5K%UvBcp#exLWlk)Od?srn=HBzt)es+xE@fUSS5Tn4)YK!pr-g+ol$YK~KP4Bk zrY-TFOO5~Mo4)3ydz>5Itf4gp^ispIkA> zX&r16_#0AFL2F%k^iN>F%~2=Y6EkFK(yG$5B{#@~qEfF*;R)oDBDSmLl<#>WVfZNGI1 z8qe400OyN}$gtpikyfnIuJdX+IoMdy6a?ojmavGh#_l%%m*}Xym{5gJTlv>w{4E3_ zrIp|&3`(AOb9c_kEizmtwbj6X-33zvCZv7X&CH)W+ zzuzgqsp#hoqjoYGg|n{y;}yPi;u-zW8jYAp~LCr(T7`*T80HD=&J zm#()IFi)<2Oaee0GEDC4)-U z8$l81KeT(`iM&6`G%CeHX$KLDIWvv(#7`BuY@&S@6z{HFZ|0B--+hZ#S9;CeM2F1Bpgm155JXTr4hZzb~m``@e!V=nBQ@CQq$e;>3}r%6entPI;aShm}Z zt%YLs5VTz5N>|U&(@1;grfD{vHpZ{nBXqv6>q6>VQe=(&n8jJZ&nLW zxJuYn9Xu->5BT~e_YS<|IN`BrH2M&neht)77H2Ql}x=>cK z@m9sT@eidN7a4nA6w|c80Tr83`a|1)4L@ZSx+#JI`M>z zUpap?ThS5{p^_x&(N8hoMPk7Y26wqQT9XsdKATy^`O$QE7HN#eWhlt-#E8ApP~|k* zsN!QIlRE0JkLxG%J0V?9FP?Q<8|5!`{e-ul6Uq~Whn6=JGKmB{WxnD~bdCSqP`x0Z zQ9Sk%q=@isTDd{YPY9ei2bwX&hVn`eCJg49Q1azIz)A0oMW6) zsl3xMo&RgQr!6U_>}eF9>c;7ikZZi?<(}ohqmcTD8$e)~XExsY#KPrvSkWuyJh)Rp zh72DELFDFNxFwVnlHOYGa;kV}%R8klvaBE)CEYUnHFDBPb!EclK1aAPgITLsqX4s? zIrN9#_nA#9zvs)jo3STz^mUG9>&?$%29`MlrF%|jpxHlWZa=UKK8-ZfVH{Epo^P*p zD*3*~CF*^2(ZJx(k=N5p9@v0Ou1?-idQqW;Xs?>vIF9x`Y1nTVMGKmv{mE_$s9YIh z6UA5^pk&l8v=II*{H1`I2&Tb}DV?06%Ohqp4IF&Fw5(fi%NH!S=~$vZ!b&~*R-AG4 zj2?mRbG*9t{ubgw1jh<5VOryUv`@c8bsC7&3%`N^%c_H=1L`VSi$(OB7Cg)L8YpW} z_NkrDT`6IDAw6l6#YPnb{Ss+jMf~EiuOtyLNR+LebvC{_;619nnPdY0;I?)Y{N#?K z%v`d|`&#OHiz5e+P?Baz4HldT=}2IqnxW&Tnl@m94X`c1j~Rq{Ac^rg?jw5)9BB7a zV;lTK5;whZQf>6;t2Mo;G|Q55$*CI9Jd#<+M&S8XuCwnY3uKYWbI}SJal@ zy6wkZLE$7N)vL=}e~Lcp^TpSDj@38eN5De1M z_FsP|;&5HS5E_N2z1YZ3LQ889s~~;F0pZEK$QN*Aesjm*+=AiQTM8P-? zP-R?q1FtqNie1AwdtA95*sd{oj$J^4tb&kVsLVX8f%)Qv$c4e*d;AXn392R^{FxAu zO8QJY(=o`zcTll!WG=h6dWJk~t>&@BB3VO*Up9iFXxXa4UoG?N*OqR+sh$P2_R>Ui z4TbZI2(gj&29&Np(^qlD&$7+pcp4)48809wK**!rki@hmojz4tUjDA}|E@Nf4<1yo zY`+*^Yt|&Drya`{o=VjGD_@B&wb5}@!C=L*?JrNCD649P+$25eE7x|3JNXHx$J%|_ zt9bgyH|_#4u>Pdw@R=u~daRiTW4aJeW6gcl!iE;n2G4|f>r-a=GDvMgDUbkn_qt{f z7;BYJHKiwP1c!C8ZF)h+18Y>kY~nax?$Zg}i|i#VmgooynRMP}qx4g?Ay6JkwU;z& zG5>DPtsrOv9Uu9WqBr>W0YiPpy94heURd@D>xQAij*m_;KRh!>FWWxbcCCkX(?~=U z$+J?9*phFK@4+~D)YAFBsNpFtH)DIc^f&DIW^^TzVwd z@EWzSdjsJB9K%`@FAzc)+quJ^P`QtPSox#k2J9vnqjY@2KBiQ;EQsQDR<_toe9qpG ze-2-h8&P-0G!ARu8ElYuM3!@LI=nHs&d}Yo(A4ZFCj+)>;pW531A+M{N?&&g-#e_- zH1}5*m9r9&biek<`5_WAXtZo&b)ONnu(Q(fGZnC|=Nh|0PO&z>7cQ_Gi0Sp%Q{2I0 zX(>92d4J#;XnID}v_H=$$0n8gG^^2pHpDPE4uHAXHArVqX>=6+^8Y8&E5CmiT7C5j zDC?0kh8zc;O3!Xr0zYVEH|9iIODO6g%<5vIs^D!iK3WV<+sD#L{I!mp!)`>7*Xm&z>wC0fkv;lwMO~Fn->og9=Xv(tgAMCVQZ-E7J zS0#dO2ckq?*#jZKB0OU{5Av_fTS~ceG>UqKUs5Y01yEbBMYdx>xn&;23jQne*jrg= z(DE!U#fgG<@NKkNM-Xo9rQ~?Kj82{Wx$ju>X4e;{z1hYdwg9=>1KX{S-hkx|b|`w@ z=b6;u)H&eIf8h>V5A*PEX7@$72XW(XdleX4EV92a3^T44ZxY>W!UI<)MO=J_3EjGD zdm>j_V4o-=V{Kibb8^RR?R7PtlX67!yyp^5*3G~F!-}~W|2N^~c>b<5x0!?7#@sw< zOT_Uu^N^q~rm_7WNoN_>^!v7PKpH{1q+!BFDIEgRU1M}34bt7+ zIT#4i-Q6iM>6QlRl$H<>c=r20ueM`vIN0~zb>H`Sea`dpAy{Ak&J7^{z`cpur}4#{ zpX*T`y=XTY(J{gkNOqcv7pSalb{fow>d@t1N83Tww$;r$iuItM#oVkdG|jA-AOmq! zfcj57*3|Bt4~O`ce}3l7;eCskf8c@d3zjZA2Nh$>qSbX_PQfq0UwIh7Nl}VYOOOMY z&ObVy4y>yYbD{r8Ldx~Huo6$RVi1qs$G9*qCsDmbx1zG#;ehFn7jqx zSo{Y$nXC162&%?tHr#5vbCXcx9-1z@NL898k)eFTY;2;)lMNpu_&5{4g;V}Uw1|Ub z62VsBq~kQ57p;1hEVs|5)%b+C6lRsJ%N2B_An3W`&%LwszYpsx!NQ*_g^EtC>v3-h zI?43i)szum-E5yAt4pRqt-)l(TN}ab@(r}RLVZajvwM4K+Y04}+ac);5|0{GFSooH zsIR4eHllG)Th{kct$INX!ICb^5(dmpEk$dMW_tEc{Vj8-$3bXs-H+@0sX5QmFHgOR z4(B%4J8Qblq&}XuQ*Eu0wCU?|7CXK_k^wL>t`g@rE?Jfw>PJK(WQPF6oQQ6hT&jVg zn8WPiY(*0>yTy!BOq##Xox^V1{rNd6#vq0xZt+w0Y$h4Lkb~f z1y-JW1MS?F2IZJ!pWg7Ii-%TLdjr*g|RPh;IX9)IsB zBS#`%2rggW&i%FU_%qApB}!9AfVH%UiMWKp6ApkynVm|^uM+==B&Zb7|INoqm-FS0 z4}Lz7pmQ2BOxeUoa$!0M+H_CkUgH9^K}WIOR-Mf}?LIs-69yRpP(#^=@(m~ingaYA6BKf1HF`rD8c^5@35+sDJ(Qz4_zsx1%(y}kU+ z5~q4n4bUn*7@iJe9;x7K>idCk-F9(3@KHqvz=JZa}xPle7799fS0bh*&qN zvX5fHTG1K;qQ~|Ox9rl5jzGkmR1LFy4=W%2qMf+4e* zWs8<6`MlEtBA4Y?A4s}V4BaI9Bh73rHMi%iX6={Ks7ZTZ`LLCe5bi z23z^q@(EIFgjl@*)pBaYT4C?k{GJO`_)i`$FS2z_bkNf_s2nmjL=d$_&vGl+k(%Xy z7Pm;sI|KhcJrnsp_xj%NCH8U^q=kFd_6Pa?6dk&Gh$haJ)56xR#(E&?QsB({#_#`V zR_S)>ii*m0*inugb*7aeJnNFqS));ls^u2f5R=RJl^4k)Z~q4{+~7(bt7^ETAvQO* zSdOg1iycrGQsZL4Sa^0!Jni^d(_~J`fKxhuO)ZwevJFlme+{HFs>JfXdF}O<0}C$2;|AHn=;LnqQ+)XDn(3=>hF>n{(yIG z=Ai23bZKKCI`Ve0S~+8qakdM>L03T5`E~3ROi~IbGMw&%n5mvR>|xTRX2@LB>9>ch zT9m+VhaW`DbmVQ5p~s%SVOvH@yi@&KISXuQ#|w@Z^oYKO604gatlc3nQ~$Bbe-o-H40+k z%^?3GyeX+hiqdNYc58f!Xp`#uJ=|J};jmD5b50ouKZ)H95E1?HDA~lelADR2HD4Q) z3BqvjugA5RB@@M05LAJ8UC^J7-|mjVR60AC8czi0>#6!AReM4Xba47?ELC%V4zUpW zDQKCdr&eJ-kKjMFKF6?B%dVK;u8ySfX)W+icH8joJQC+2|7bcO|Ecu5 zU@ld|d~wiSM%de&FSTtlQnPV=am&$4D1#`#g2>1(V^H+xQp(Qu;b_ego!4@L#Bd%K zXTi}}MvSpzf9zqhe>kTl|CaQ{QV-#UIFV63^JveN7Aee+G}?6&^M{NN8||Il_Q##l zF1R4oP93%q;_%7`D?3@nd#%|AJFftxM6}>w{*wO7dIV>1S8)CwPcBtTC)8$MKAev7 zMY}@cf=)=v{2~B78-o( zEt7QiO5^KmboD=+#Iw(~9B#!G``iej*Ie$u96fC$hX^H6tLp?({VyeQhFBMJx&ln% z$1?qq9U;l@Z&XgcE|4&Z@3n(II|-K#vQa9?9meHdk-l+8aLA>8|8dCf|4wy(sioh% zPNydF$MVy$m^D^RFOEedzE$jU?lmq+`r16W zUdmC{+t_1!C!N*%1$aR<1H#p4BRX9x!v%X0URoWRar7qoOud(U2 zyDxw03uVx73Maz&?7`9S3EfLg-Y-h)X=2LR4@fF~q798w41V94X&im?dRw(?IE>3T za|1!KKBJ}=cm=Fc0HUDZ7^-8Rh!Q3*=RrO5Q*A)w#W!1@sbKF85x>Z9ws)(v&up=7 z3(s9H;jdgJ_OYlln&;r~9!fyau+mY%QxuB@{`kQMoR~4x>H87gq7Q*C=&^>FN zmMHfA+(8q}JVQ#ETeiUlB$E`>dmj?zuu9=th@djsl6N^Pv~Ld%w<_c&PKtU<4Uu=w z+y!`g3aSNiaGFMEh=gbV!{c?z%UO-+y^;zeH zNc_rv7@LB{*AME*8WBa1ekUl!Jt7Onrsi9tU(YhRqM}YO*h;;0{SDv*V#?R`eb5Sj0s`OsF({Dly8pc$Cf4}D^3YSqm zAS_;Km%3E@^M{nC14%r`^M5>lNTW3(li*cu_aIU@Ymi|gJ9TZuHH%~k@t9S#FgY<7 z{|B1c2<(}{f?kwtl;xAtv0Uh{S1W4K7OT>M1RotF0hgf#y%GVb*O_0+b{n6GHw<@N zA7-`Y)cfNSvA_FT-yr{`A$dd2_HJZ6jZe(mtJKJ#OqIxAI@{cXjH&?p39D%`E5bQD zION+q_6J2OT7WF$(%Ee6rn5^^(5j&iyoN=YG(vN>+>aReDf_2|=+RM<@mM?__crj; zaSAE?zV0N-^S|!-*@cEL*Dc-J$Cn<%L~MZpc!>lVZ{%;LS!6v;G~dB*tBVhU1xFq& z8VGL3pVv+$N}2EchPB>a=t7* zGg6S&L`Xr0&?~A{j;fVvAr-(B=*% z>~ge2Y-BtyIdGX@Nn&M(sa>OWY2QebsWbe2o-*m0f>z?L zFDW`y_k!Qt4tWoMBy~jN6?+~POGX=9fh!h)49UIgW-mvk(xKK4ee93R!zM*@j~ft@ z0Qr%OxY-8&N{A1E)mLt~zWLnI(iRe8c0GW6J%^C0oWX5`9T_8&&sU|pZh_B73Q8hT zDcBhGs)(%(I~5!K?Tw0k248kX(%eshg&;hlq3q*DRCgIIv^;flPadi?$}vO@iuwGq zb@a63kwNfYtj$p@kK2I8)0aUx#g)#ls8&w;YO9kgF^`GZmb@ZOj0|(rg(W7vA8=ES zYTRk%Agt*Bq7XE}A-0J5%uU(xK5)JO2Sjiw(~sdF;6QM$=_U4`geWi0M3T<#Jt?Ex zx@9#8K|+@R6n?)5K@5shsysqu)c-Q;{k+^A?LV5Wg2lIEq5C`jQ{t5ha<|FED`i+_ zwnxmN_zEy6vZeck)Z!o;`|of|t1gIqfnlXM3W~1OsK!L<)1-bzg~`!r^0-Xh%Lrwpi*Cd(;ZQdxeydON!$!I-tl0FEdL8ly?)jNH zE5?%=?Lb!k^DVTW_`Yj$n6=HT>32Q@mr(_{(Vh*8wJZ$9bWW zHy4hwlu~I!%@u3?Z1AHfL-%LnT?8-YvathB{Vuc9)|oP;KxOyMvpHqW=ci2;fhvJM z6EL_Lbo*aoW&32$`D!1A49q@MHw4M!WtVj zHI#!!g&RXg4+B++@26(|t(e-#>TSFaGU=#uH_E1LCeOyKszJZ0Z4A>481S(XIyjmG)5UWF>?e6HVRpFV@z4wX{iQWr!l4IG9y!OZ9!1$&$YL^f!t7 zaf%J|wa>p&R!QV+iX&DECg%oD$;1C_ow4aY=nU1Uj#$$HXFO18YuwClV&lrhQFDXd zR0rt9v^*&H$bV#Yjs{L;#AX}PR6ZQXImILq6juZDWFe@=Yq3r%thb0qU{BRWCLKZS zf7*jF#rqH1Mb95agDR8D=tJHWdHD5oQ)JDIo9jV=%@@Cm46V@ohx7)^UpkLB=>@wB z@A3u_>hv<1r0o01_5;mgQ<+cFCXl9lG}KfrN;aCK^EYAvIul-eV)xB^z8A#^zwkS} za3!LSC`}EZRAb_Z2Y!?}TW9KsI6j%q(fu^&>62J*#kHLkUy*C`yo!m;a6;P6AUqOmt1 z-|`_edCW}3TkQu=Rd&L6qi#>PqG@NHT|}mxThgyR*AJ@_KX_E8Nx4e)h)uOq>V*lx zHn>L7oR&!+sL|Zv8ISa&4XrMz^SlmBKB@1i*?s`NCb6kYUn5PuqIhXHQl17i83t;$Ub4l4+WRE z*<`CoRYE{{jo&Ew3CDwrSmX)s6oMzf^cdB2AOVOTXLLtHw3LjZ#%Fh^v2E)Le#ygsGaqS9nEiCHr zCK^Bm>CE-rY2*QIj+noI(7LGTze!{ybCPw@k0O5mn!u6$S!a#Afp^bO149SQw-!$V zP1S^8RVK-1KuwN>n6)7)?u?%RD*mb-y!+fF8>%W5 z&N+6*Ts*akLKqr9oM5-eOD5s@WE4O*?Z)cckt^WS>{N{n==-jz3Fx=<1YWX1H^P^8S6#QV83X47>!o!kuC&7O z;qHZatDRSYJ4!H(TmJWO>ueLzDopK5wwgSNSi4^--e0w+mMKQk=739Q1a*~Y|9e6ENP0O99G8-g{smqLHsluSjs}TktQ;36WjY2%Qf)o zHHUC#Gq-&ZH?`MKuLi+cu%%v>F&#q&GvdGLNg<7&E1{dA=)r*~qH)zIT?zj}O-b|t zi!x$59Sa&$862$*w)<0U73M`<2+;2J4-o`tSN`kn;_AAtIQ0Dah>`jHNq70=@pKGP zUmUazz>m#Y9f9}mLyLIL8k>p&_e z_VGJnY0nyBnibHC-4WhBlq`ST&h$x(8|!RmEi7xoFJ{Q=c|MBF+%}_Sp|$}RNw>3D z8E;i7f!UJw_B_n@(TFD1Xx_F%9Hj!|3NB$GVqiyN%%i9^OE&5NPg!EcmZhZ48uuyc zd#rLMta7ClPzGMYi>m&-vQ-!a<%j$TbKG&|21BCEjrzo!z_gkF;ZH87qud5Ls=}Yc zCROn|K@9~zWb)E&i%<%@8ZW2N3IyffPi!fOCf7FD6}{_|@t(4&XkH*K8VNvvB=Hcm z1Egjd44%c{B%?e;xF(4q?!d|n=TX^sru;FCv37d}In&Aw((*M7LC1azxDxWSCQ$L{5#oNOx1VoEw1XGvww&T8DG@Ef0Owhml_(Ks@=wLYh&aF$Z6s=u&Q!}l zg)(VbU;~TGvLLAAXIAZC1I7re?t95(H#LqMe0feA@NygCSa5}X)(W*@)jn5YuZA1x zFQbjO%xaN@P}soeMdUxcysx^S?;;yBXUQ(TCFU!|j>YM$@Xw;3GL?}|SL)NQZ=P|L zdULO7Ag|)_Rv~K@B8$ijcoo2_*f9c@aU}NpUTeucg}tG0S*hEgk(@)^CTV&72ZdS! zVs!#Re~|x;^=GSMsl1D<+0Ex=Xvo-j;UCgI)r((1z{^(a(2#{X{FjV|Q}S&lp8P}l zYxqW#b~#n}{hsOvu&%iga7#)C)bI8{1z&#GGO-MlLT|lQLT($3c8De&HX4VINZwKQ z`Mrmt6C4F4{Bwo%weu79bXF2!JX|^&VDIVZn-(<&`pv=kV%@si-0_9N_vVxOgB}V z3imt9<;j=0pHsu`2wdPGu%)5=*H)d&vz5H!B`5R!NxS73h#h9t1VPu6uB?4ubt8g z-Bei=;dif*5LiD!^m}34J8j84VFHHq=3fQHQU0bNDAS%-MNi&E5wXATYQw1^0h$Ko zghnF<(g|`~gx?I1t>>lRf39&cd~rt9I*w|n^8WFCVxsJw>UrWMtr3kFP4<67BN}$k zq_wGaG|@;W>*tGR=0x9AFXxF-2CYxr`&9U_4HC%$`C-7R@J z{cm57R+x+PCDS36%aVXg2YYx>BI1*8-$vi@!vOpw0_ib7Psk6;4Bg+1x0S~MKPt!s zKg>9=apxXC&qdPaG%Qv*oqBVRq%K|?20q%a$nll`9lK%Ag`jE3D3JVeQV>n& zI9n|wufrR$qV%8fA&FhjGLGe*W>!se#$ffTf%m{<{UbXD9ZMw$a)o?(;rpu3%CXYG zbx|>YhArWhH8IhEf9F%lrA$exxz7R}e^1jNId6#$Zk`_6o?b}N=KV&Wx61xjI2Vku z@;#u4P^8ZSd&HYmsr}?*$UimV$-=G39RJH|k>FFdzut-Iya;s9+AchG`pF=`Fl71h zNky*QsX}`rJ}hxt9sW*EJ;HQP5~gS;>Z~lG`t9h64WJrz71s+Q6?Bao=%ClE$9d^4 z4(Ju!%cm}nk!!ee)(-DtRxwcTKspQO*iZcS;aEJpao+MygJ`NH_WqUE&(I1?BRjQm z<9-a0GNc+3ZA6!_2fA2rJ|sM)VkS3+zb(AejLpTY;1|3I{-Ifq$;?_d`ft;U-lFz+ z==3o+av4~sG-diWfm43vft<%N+?rZ1e8+wE0JLw+8{I~{DioE6;*=@S*Op>*EC|zR z7UE=Jx5XC+Y|=Z^d@_4*O@EzNMDR;V_u;Re0wsWcPyU9kIDG7>rn1CBMvjDWXpdah zVju#6rMwD79#{2G8$9>yLNdORR7X`|S9S9Q4Bc!UMa?8=e0uW=8P#X>%Q~|gJzt8y z#vcWcf*HJHq74Zt1-i|eecO3=vho!KO>fviLCvb1ZB7+H=PWIuu0(4W0@PbBK$5#s zKU*1?=@kHaeV(Sg%2EEs^gIW*fPX;h1&aBNUVPOJEm`Q;gwkvlf$Po_6(@USbp*n7 zPDii!xv^0PmotM{^GVu`Zi^G66+P%o2;|iZ6^*}R1P39g&7-&M<%oR%32xvEqa=}IN z`5;b$Uz|8d>hW{0{Hqzx+mCW;(igiis+|jA-AmIa}7IvcNZ(6BG-d+xEBqe9$PTHjG^UZ1w`OPJXg+QFIb?r(J zLr^ZU6h|>vo$FKQ@mMWnj7WCnQh!RIiNm`{W4%^7M>+(@ti-!lp0DR_!&y;uipx#< zW|ZT{_Akg56t#;;g2?o%7#Wl&lKOCh9m090C=BFJs6=e*6EswtVdU*)KA6%z7l<@d zhkB099L7-J8yI?lN~1*d3}v;vMYJqHRo`m2PCNZ$<57~?+BaL2VKCDhr64UxRrtn?mz4_t*8?ILnx5vcblsw%Mdmc?g!QqWaa96 zL%U?7N`oVrAa_RyIqk~7HoN>4KCwL6ZguDUSKoR^KeBf6R|F;6KieMY_SH4qBXBPs z|62RXy`24_F8m1!RZaSHS;OB5Q?&X*w_LG5&oH9McT!ovndlPm_w?vy(to-MDtvn5 zHinQKK(f(MhQX$ik5WzLYDVQ`++*rmBkw7WcjKkrRH|z+rXX&YWoa7Xa+jG@2oIzA zWDWdbo`P00*iWILl^Ne8`Elysg+e-zRH8MK z)EyU0NU<0UMl9>7a+HfG^s%0UR$U&K2(gci+P@#@!zRq{`v2Pk26Oi$JP^>-o0 z8c-c`MUK$x-`A-fWEjnkvOhI^MY$3C+3{P$nzh;(NU)Sd$>_f=JK!n}^ISWSgs2qa zXDp2}W*hvU1%Xe2q$_bA=|-kNc7&yk5D;Al)FXzE4o8g^&wfzGarK{QH@1p{G*bY{ z7rtm7w^|jA12<;1(TwOzqIGX}+bW~}tXSz`{3CW4mS85y$^#7+`-PoSqFt2vDu~2I z5MHR?rP|J^%@^fY6y>{Y=34F2s_PUYXyfpTPt0WkKV!lY5JV=QkaxgZ01uN3=jhQ% z4%5Goci#UG{Kwi7I%3|c`l;dbnF@K}~c;~JQQlu);`6WF< zb6mRd-HZ%IG>pon$g@0gZU;9=POh(GKvJS=%KaKMNU=TR2lCuyvnu}fjIn?^t7A)#qz0>IuPN!nb2~CwW4GXUp2Tq zIlE>jh_%^sA+Clakdo_y&j(xc0a{mT8IXfM zir4O8%6|gIC3*Aso3u=r)p=t-`IKl~rK=gKVf4ohLEI{0TVF zAtvVjKD$el?Sm60Nw(UW#+P?kYNkO^3mKsIXIBqqcUf71Yf8+aXk^D156VT-f)s2h zXO|C1i|8*dkeLT%E{$mafBD)R54{;z8>HiqMum36&AQ2ZN8e0U|B)g-VU>(OCsQ|$ za(+(w%n#2a4DYf{59) zf|OYhh*D16+~meLliJ3xR*f`Wl~v)n-JSYGUYe@Ww=$ z-h6Nch}tdOL{;Q8#Buw2ez@q!U~U=!VOmpHbq0ckoF8F6D*zD^VKOU6SGrfujXkQy z(;C!Q1`rv#*R@dx&sn8nVB-nDIAHfMRXt?-QfSEy{CZseBwSk?_rN2ZVj4gPED56! z{LooL8DwZmDwV9Et^D246um(M%e5|C*F`5;5_j~zPWMMIj;T?S4mD9!>ibvxMd8Z@ z1xA4nTN`(@Vm*HYMg9NoJ!9NvK3`u9oXaeBES+t)+=jnwt*jEut6RI3Ln}y&`0vB4 zXP>ovbm<3ikWhKj(XuK5JxSess@LfGxw6 zJNvzB(dSlAATqO5XLtyHbxN&imN06j7Wr9+1|=r#7iQx-CZ_qC*G!v6SMIG#Ri21& zsp^j14hGu&g9uI6Z~V;>Xp8f~Sl~;o_f;vio$^ZS$)p$Cw`Z5FWPv>|&zH}!Ym`Nm zBCCB}zd53*8~{cKYnFKC^H3Zql{0984`WNeVmCTZD^8i#G4JFADw<(R)#HS8D>h19 zx(|Cxu!@$73qyG8ZWmba)A#P5c5A#O>nq9+iX7GT1>CY{qcaj~#J|v9=IgC<2#qS| z=Eq96cFGs`G2T#B*M02ZRIIQl`CR<--M7^&{BEdA{0?iRP2T_{ny$gfqlZ^?Tu@ZH z5yZT%*WbOtoMi<2} zU-m`_>;i}{MO)^+WtwKK2|mVTaM9G;8x(2mF8}*p7C#yJDytmj44Z*x9_*r{ESS1R z>}h0MEITR3{>`P0uC!x06I)i(+VQM=lBZLERLj%w-zp80jJQnog|%AOO*}{+J+6<27l8M7lx~m_$OY_eCI#Bl^fws zt)AQO)qQ>8sY?g{~)`gu&1D6Dx2+R zi?oVcQ%i924uaFPzV$%5C6r6qDid9vS9e^-I7=;AD=ze~U*4HlCp0UdpcI@m-TFd< zJvO1lYjrOo{rh=mXzFYR)KF=C&WQ0HMqcm{Q#HzHLP=U`7LH6nM}3hla8{h_VP1h< z-Lat6u2SN)Z{<^F%88YxX}Q~c36;+_Zn-4dVm5xa-Ub=IofJrACdIzj2k0?X zekPnW(l9bd?^2p|+=FrkEe%@a?*MS0?+v(oIUOg*n5FNx{5?`{Qi}c_{a7Z_)KJu4 zr)g$R{hoOJEmY1KG7`wdBxD zvyEEl@XZhR!Q3Tf_r2JoQztQ`)gyMq#x?MSx~AmRE`2?EL^(0Xt3a_w_)=6h1sil@ zwew*kFGW_0?m;A+lGlkqOkpP#`Cls1}xm z-L_Lt%eNjTT!P9A6pwe!a#b#xwJ*6#L|f;%x;6C=F6_`cuKSxmah1AXnn0!y&O2)} z;(cNM2-TD2FXw`yTZ#(K1ChJ6_()23lpvMr0FHT}T(n7P*fBm&vPKg4dpBW48}6uI zzp@%vW^vq)j7bNTkuBqcv^Wl(V)eMWE0jq0oR=kOyi*|pj)=;yj|NJ++-I^M8= zvFC#p=cDQsXWHFBd5Ft!zIjJLJ{&w?HVv*d2}VM2c^D&4F`LSMozNQ{VoXuoD$6NZf@ zemj^hK=Qz4OkUc(C_p)*kWmv?lP{V{Kk4=X?=>V>yD+F3S>sC3knzmc`6~3)#eMa^ z=lK^0X4z*ZgZ@1l*f^)1Fi|%!%kbGjdUqCQ6!{M=d+^amS`8_CHin-#qe8&FGMzZD zyMq}CFH4#KuxpD=1QzceZ_;}f9aP#rK~>N1bNKmCRJ4tlz2IFW4^w2S;@;tJnq|5b zg`aP6@N7Q0BoeCUC0&y^B#V(HdW!vf+PaK%C*W1QL`b9$Q?5ki?)k(Y2^Nj$zQosb zLEO7A^CaU^mIWwh-2D0XamHSrDw!Z2>1NR;9#PNptwKQ<2Xd~%ycF|>T(R1i99Etm zyXn_E+<1QL8*1%-ez7VEt&kBSYa~kSPDYlt>MZTK?#ap%%I%u@)3HQM67 zD;@lccu7fkszn)n36vZeG?iu+!KKyaI#oT}Pa3?^jkIOI6Q|@mdbvWCZd%}Q_6rw> zcFqH~2?-KhqD>;jCF&{-6xxR9qPvq<0Ep~P15vg)&d)UFX>*C3>>0-Nk*4&KpI*uB z5k?ks?(WT9xW;5JM=LSbiU%y81NDN`MISyoB8 z)v*6UYD^ay{f4ZAccegBb3Q|=Y0(H=@a2ov3D4cx-uu|Ud&V}7(ebU{lo^)Ptq4v$ zzNI?JW+SqY;LDT&wF@#88b@woP*UD2hBb*{SEFHWrebSvbUcNQyWEJE0q@z{&q_mL zJ)am{V+VsF!jqt6kH7Nv5h*P3hrGSLpCCfv@k)V$xfxXPCPU|mCj5eW{UW_$+s*qX zBxruM3tED3v1#9f!4I?g3JE^g{q$K;s#p>;5Gqaw0 zFnV&MZI_^yqYq>-54%Us&d{PXUX zJ)wb>gWH@lARPbI-QVd&5v@B`t>P4Zvsf)IMO3r>al+pnL%%c(X4xaZ@AX4@sA}*} zm@??Tets0v&AR?pEG7=TBj3duq^FzR98qpSTSgcd+ zZLOE`m(XB2V02p6BGsWFJ381%W5sPRAzVs73yy|Y39dk_{Pz^!bFMOqA(y<9xNJTa zFE$`ISsMU~ue!~u-KJ?31LolC?nAQ*GeY54pZpX(K4_x)QXmnY{sfb-CQ~47SEsgN zqsIk&%iq&#t5|q&b_ANxT7e8s00hfLDh~mKOEQxOK z16^`4E<0*cTE}Z?&Hm^^In@mrV}_N`f@nMaUpjg*#4-jHskp0{YFxemJ$ zT=B1O5qUV##d3mh&QIBu+qz6;_1Ycpz$%P`>~GoFSQ?Pn5@&5pbvj%6IWq0|u`Wh) zrajF1z=A$7bJ!#GoDJ_-COz}zuNW$?&>+nr5(e|o3`MHe`yf`_76VQ3B!hQv5lON& zmDqPO(M8K~3ZiW3&&9iD4jBvWaF=kjF_NIJX$Bi!Y9GWlAY1uwY?i>Th_{czqXt06L!-{;RET==cxtz^e7L7rx*lrU%80sq4=cGwr+l-brMpw!5l#% zOSh;c(OIo;#xyLa%7C+d3lj1#VyH}z?l?lvFWR`M_+9qrujSE*D{|x>30+9Hq zK1d7{CTHFKT);xk!by(PDm%td_f>(k5ek>`k=lEQ+Wdtk2?rg71ZPSqaQ2d(TZ2=d zUI+Iyl)7Fkna94{pC)QtxMm;G86qmsrYdk8^s9_{N9Xblg4eVpGI!%0Zlb-InhM?f z+m-BOyvQT)pLOgZh?p2+Q$**KN(X$>pQrQHd9Q|SOXOchDBx|s1HQwsrU?r+EX(i-1Xz3;Xjb7`!f z&jUIFFRw12&ki2v$*UIsf=HKf zS(zt|I^b%zvGI!Q5#Ep|onsb_HaWvhfxa0*CAE8bXIkRKHv^K`jRtzAjUS-Ye1yI< zEn(h${L+i$Uc;+}l+q%~uO#c^PkSrZ`w z4+~1S`5E%EyzyjByMKgR5!NX68a3#-fDBXAF7dI#t%duK*$Z~mJ}jq4U0AbZO}?%` z9CcJBvD&D$+*xnMXVhj&@^@DhRH{?BBr(L?G)Nmd^YRO%1rR%V+@=?zZei^Fo6zma zX$=&-yWGPgIt#{GQ_bEU=XZ^En?VW8_swBfV;N57(o_UR&3 zAljZLyE<~^UlNvjn3Sf9>3(csibQuCVfYe9 zRE4!O5t#s6^>(`IKp@24(^;z)fx~Qc_O81ETewFqO34Dd9~Yl?hH&Hg3J-68{bfBg zw30M$$#jseWec9|5`VyqjCaa=9lQa_xyxwG>0s|9-pq`!+h~pt*7{TpM+Zx1dq`SI)@a_r48$1~N9%pYiuUNsF zF$!l5Ho~&^W^FOQE+3r0;smTz*@c^M|JtLhchF_UYGpKXAgFNV5yW>3Rbe$949`a-jUtT3+#u!^n@_0f|75 zQ~C$nFct^G9o&bERj>lHaWCMJC zf;J4eeP3No6QT0E<7iy3m*1R;Ywl)-0=dS-_}b|sD_9wEKc{uu)uoXMCZ5Y`rPU9O z*^^{rP#7MvwtIsrD?UY)xTl~@WM5J)c562HBFAyi?6(G$3r27OBpX z@rs};Q~L$y8Zmj0cKwP%i~%@~7V86+vc%&kxLeyq}{-nXBci1~5%d1z|$Z90W4MYXHM`?1oaT9j+s7@kSlB#WR} zkUf@l1Ih>rRXYGIm=b5xOL)F#uE<;z!JvJ@V%{|W6-MpBIAhe}*1$61X_lUfgfknH zHdViM{fZf_(=l1gMqCeILe_*T*)9SrfwFZRdC}9kcGNQXJ$T(6&1q5LaI~q=H&9C+ z5Jiv244U1}DX`OhO4>H@)pYKeDY2FAewUnOv4Dc&WKsYdLvH>-9S>p83#&@fz>&)v z!7Em*NLl$HSDX>-FMpw=!VnZD9PGb64?Sc0;4Ld0#<(lttxpTs2Z9H=K>S8 zVi}kr5}K-P@GIZay7Zt&`HUnMU}Y_hB$Bi~?4k>j9AI?)LTjcM6ZU z`>CIDx#j)mqSm*v2DL{q^Djz~aD4gJJKjX10(rgaeoIGu>ajW$qz&xrD14+cgR-`f zH8wi9(UC9$5b&zOAJ<%xl^YM5qb~n*pHhUVSM*O_2Lg>0B~se>T1Ed{C%bE0U!$n6=^9sSK=So`PFUlvG zZ_V9*P8x?08hW{MQfi*eWl~PVa5bB+M9?T ziwCf#TGOF!e0}h$!_+^@L6sSDG{H z3mJN8o0u~Lf@igUcBWdUpF{mOfW^F_(8@s-;1uS!ixbVUMHt}4QFb}Es~TrNjDn(e zPbcTr68OpxH>>O5LO|#xbRfudDdkKr4dCZCa6 z3o;VPNq9*G-W7eYsVLky`$7fIQcG5(_G^hO&~*JS5Gw`J&u8TTS}RpM4*pCUzDMjP zABaJ3%2S7(Y%>pju-e{Ko%+S~%R~w3J@g644)H+;N-Vrj-_q_lq*)v8725e|ln!P> zr9n!@L#=hwarnanPe;S=i*4=z7sfNoP~hU1NS zvH3TgZWQ53-lexWCsvC=p#lrj$oeiwoR>- zri<&}x{25Nm9~foeZ5#uyLc(*Sr3;f=AD02xxZXE2{W5$Y!xZr`Zh$x*k5~KOY`^a z_gWDBO*aDvq|NUyER87^E(slUvSxjB6Sm!e9Ar+RHmR!CN
=Du;965arNdktB?g(2Jz< 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 RAaEaVgb%B#%=PE#{{w-7BBTHS literal 0 HcmV?d00001 diff --git a/task3/05_calendar.py b/task3/05_calendar.py new file mode 100644 index 0000000..db3168b --- /dev/null +++ b/task3/05_calendar.py @@ -0,0 +1,332 @@ +""" +Task 3 - Step 5: 日历排程生成 +============================= + +输入: + - 04_reschedule.xlsx (站点访问次数 + 配对访问明细) + +输出: 05_calendar.xlsx (365天的完整排程) + +排程逻辑: +1. 生成所有访问事件(单站点 + 双站点) +2. 为每个事件计算理想日期(均匀分布) +3. 贪心分配到365天,每天2个事件槽位 +4. 优先安排双站点访问(时间较长) + +约束: +- 每天恰好2个访问事件 +- 同一站点的访问尽量均匀分布 +""" + +import pandas as pd +import numpy as np +from collections import defaultdict + +# ============================================ +# 参数设置 +# ============================================ +INPUT_FILE = '04_reschedule.xlsx' +OUTPUT_FILE = '05_calendar.xlsx' + +DAYS_PER_YEAR = 365 +EVENTS_PER_DAY = 2 +TOTAL_EVENTS = DAYS_PER_YEAR * EVENTS_PER_DAY # 730 + +# ============================================ +# 读取数据 +# ============================================ +print("=" * 60) +print("Task 3 - Step 5: 日历排程生成") +print("=" * 60) + +# 读取站点访问次数 +df_sites = pd.read_excel(INPUT_FILE, sheet_name='sites_schedule') +print(f"\n读取站点数据: {len(df_sites)} 个站点") + +# 读取配对访问 +df_pairs = pd.read_excel(INPUT_FILE, sheet_name='pair_visits') +print(f"读取配对数据: {len(df_pairs)} 对") + +# ============================================ +# 生成访问事件 +# ============================================ +print(f"\n" + "-" * 40) +print("生成访问事件") +print("-" * 40) + +events = [] +event_id = 0 + +# 1. 生成单站点访问事件 +for _, row in df_sites.iterrows(): + site_id = row['site_id'] + site_name = row['site_name'] + k_single = int(row['k_single_final']) + + for visit_num in range(k_single): + # 计算理想日期(均匀分布) + ideal_day = (visit_num + 0.5) * DAYS_PER_YEAR / k_single + + events.append({ + 'event_id': event_id, + 'event_type': 'single', + 'site_i_id': site_id, + 'site_j_id': None, + 'site_i_name': site_name, + 'site_j_name': None, + 'visit_num': visit_num + 1, + 'total_visits': k_single, + 'ideal_day': ideal_day, + 'priority': 0 # 单站点优先级较低 + }) + event_id += 1 + +# 2. 生成双站点访问事件 +for _, row in df_pairs.iterrows(): + site_i_id = row['site_i_id'] + site_j_id = row['site_j_id'] + site_i_name = row['site_i_name'] + site_j_name = row['site_j_name'] + k_dual = int(row['k_dual']) + + for visit_num in range(k_dual): + ideal_day = (visit_num + 0.5) * DAYS_PER_YEAR / k_dual + + events.append({ + 'event_id': event_id, + 'event_type': 'dual', + 'site_i_id': site_i_id, + 'site_j_id': site_j_id, + 'site_i_name': site_i_name, + 'site_j_name': site_j_name, + 'visit_num': visit_num + 1, + 'total_visits': k_dual, + 'ideal_day': ideal_day, + 'priority': 1 # 双站点优先级较高 + }) + event_id += 1 + +df_events = pd.DataFrame(events) +print(f"总访问事件数: {len(df_events)}") +print(f" - 单站点: {(df_events['event_type'] == 'single').sum()}") +print(f" - 双站点: {(df_events['event_type'] == 'dual').sum()}") + +# ============================================ +# 贪心排程算法 +# ============================================ +print(f"\n" + "-" * 40) +print("执行贪心排程") +print("-" * 40) + +# 按理想日期和优先级排序 +df_events_sorted = df_events.sort_values( + ['ideal_day', 'priority'], + ascending=[True, False] +).reset_index(drop=True) + +# 初始化日历槽位 +calendar = {day: [] for day in range(1, DAYS_PER_YEAR + 1)} + +# 记录每个站点最后访问的日期 +last_visit = defaultdict(lambda: -float('inf')) + +# 贪心分配 +assigned_day = [] + +for idx, event in df_events_sorted.iterrows(): + ideal = event['ideal_day'] + site_i = event['site_i_id'] + site_j = event['site_j_id'] + + # 寻找最佳可用日期 + best_day = None + best_score = float('inf') + + # 搜索范围:理想日期附近 + search_start = max(1, int(ideal) - 30) + search_end = min(DAYS_PER_YEAR, int(ideal) + 30) + + for day in range(search_start, search_end + 1): + # 检查槽位是否可用 + if len(calendar[day]) >= EVENTS_PER_DAY: + continue + + # 检查同一站点是否已在当天访问 + sites_on_day = set() + for e in calendar[day]: + sites_on_day.add(e['site_i_id']) + if e['site_j_id'] is not None: + sites_on_day.add(e['site_j_id']) + + if site_i in sites_on_day: + continue + if site_j is not None and site_j in sites_on_day: + continue + + # 计算得分(理想日期偏差 + 间隔惩罚) + day_diff = abs(day - ideal) + + # 间隔惩罚:鼓励与上次访问保持距离 + min_gap = min( + day - last_visit[site_i], + day - last_visit[site_j] if site_j is not None else float('inf') + ) + gap_penalty = max(0, 7 - min_gap) * 2 # 7天内再次访问有惩罚 + + score = day_diff + gap_penalty + + if score < best_score: + best_score = score + best_day = day + + # 如果附近没找到,扩大搜索范围 + if best_day is None: + for day in range(1, DAYS_PER_YEAR + 1): + if len(calendar[day]) < EVENTS_PER_DAY: + sites_on_day = set() + for e in calendar[day]: + sites_on_day.add(e['site_i_id']) + if e['site_j_id'] is not None: + sites_on_day.add(e['site_j_id']) + + if site_i not in sites_on_day: + if site_j is None or site_j not in sites_on_day: + best_day = day + break + + if best_day is None: + print(f"警告: 无法分配事件 {event['event_id']}") + best_day = 1 # 强制分配 + + # 分配到日历 + calendar[best_day].append(event.to_dict()) + assigned_day.append(best_day) + + # 更新最后访问日期 + last_visit[site_i] = best_day + if site_j is not None: + last_visit[site_j] = best_day + +df_events_sorted['assigned_day'] = assigned_day + +# ============================================ +# 生成日历视图 +# ============================================ +print(f"\n" + "-" * 40) +print("生成日历视图") +print("-" * 40) + +calendar_rows = [] +for day in range(1, DAYS_PER_YEAR + 1): + events_on_day = calendar[day] + + row = {'day': day} + + for slot in range(EVENTS_PER_DAY): + if slot < len(events_on_day): + e = events_on_day[slot] + row[f'slot_{slot+1}_type'] = e['event_type'] + row[f'slot_{slot+1}_site_i'] = e['site_i_id'] + row[f'slot_{slot+1}_site_j'] = e['site_j_id'] + row[f'slot_{slot+1}_name_i'] = e['site_i_name'] + row[f'slot_{slot+1}_name_j'] = e['site_j_name'] + else: + row[f'slot_{slot+1}_type'] = None + row[f'slot_{slot+1}_site_i'] = None + row[f'slot_{slot+1}_site_j'] = None + row[f'slot_{slot+1}_name_i'] = None + row[f'slot_{slot+1}_name_j'] = None + + calendar_rows.append(row) + +df_calendar = pd.DataFrame(calendar_rows) + +# ============================================ +# 统计和验证 +# ============================================ +print(f"\n排程统计:") + +# 每天事件数 +events_per_day = [len(calendar[d]) for d in range(1, DAYS_PER_YEAR + 1)] +print(f" - 每天事件数: min={min(events_per_day)}, max={max(events_per_day)}, avg={np.mean(events_per_day):.2f}") + +# 理想日期偏差 +df_events_sorted['day_diff'] = abs(df_events_sorted['assigned_day'] - df_events_sorted['ideal_day']) +print(f" - 理想日期偏差: avg={df_events_sorted['day_diff'].mean():.2f}, max={df_events_sorted['day_diff'].max():.0f}") + +# 访问间隔分析 +print(f"\n访问间隔分析:") + +site_visits = defaultdict(list) +for _, event in df_events_sorted.iterrows(): + site_visits[event['site_i_id']].append(event['assigned_day']) + # 只有双站点访问才有site_j_id + if event['site_j_id'] is not None and not (isinstance(event['site_j_id'], float) and np.isnan(event['site_j_id'])): + site_visits[event['site_j_id']].append(event['assigned_day']) + +gaps = [] +for site_id, days in site_visits.items(): + days_sorted = sorted(days) + for i in range(1, len(days_sorted)): + gaps.append(days_sorted[i] - days_sorted[i-1]) + +if gaps: + print(f" - 间隔范围: [{min(gaps)}, {max(gaps)}] 天") + print(f" - 平均间隔: {np.mean(gaps):.1f} 天") + print(f" - 中位数间隔: {np.median(gaps):.1f} 天") + +# ============================================ +# 保存结果 +# ============================================ +with pd.ExcelWriter(OUTPUT_FILE, engine='openpyxl') as writer: + # Sheet 1: 日历视图 + df_calendar.to_excel(writer, sheet_name='calendar', index=False) + + # Sheet 2: 事件详情(含分配日期) + df_events_sorted.to_excel(writer, sheet_name='events', index=False) + + # Sheet 3: 站点访问日期汇总 + site_schedule = [] + for site_id, days in site_visits.items(): + # 跳过None/NaN值 + if site_id is None or (isinstance(site_id, float) and np.isnan(site_id)): + continue + # 处理可能的类型不匹配 + site_row = df_sites[df_sites['site_id'] == int(site_id)] + if len(site_row) > 0: + site_name = site_row['site_name'].values[0] + else: + site_name = f"Site_{site_id}" + days_sorted = sorted(days) + site_schedule.append({ + 'site_id': int(site_id), + 'site_name': site_name, + 'total_visits': len(days), + 'visit_days': ','.join(map(str, days_sorted)), + 'first_visit': days_sorted[0], + 'last_visit': days_sorted[-1] + }) + df_site_schedule = pd.DataFrame(site_schedule) + df_site_schedule.to_excel(writer, sheet_name='site_visits', index=False) + + # Sheet 4: 汇总统计 + summary = pd.DataFrame({ + 'metric': ['total_days', 'total_events', 'single_events', 'dual_events', + 'avg_day_diff', 'max_day_diff', 'avg_gap', 'min_gap', 'max_gap'], + 'value': [DAYS_PER_YEAR, len(df_events), + (df_events['event_type'] == 'single').sum(), + (df_events['event_type'] == 'dual').sum(), + df_events_sorted['day_diff'].mean(), + df_events_sorted['day_diff'].max(), + np.mean(gaps) if gaps else 0, + min(gaps) if gaps else 0, + max(gaps) if gaps else 0] + }) + summary.to_excel(writer, sheet_name='summary', index=False) + +print(f"\n结果已保存至: {OUTPUT_FILE}") +print(" - Sheet 'calendar': 365天日历视图") +print(" - Sheet 'events': 事件详情") +print(" - Sheet 'site_visits': 站点访问日期汇总") +print(" - Sheet 'summary': 汇总统计") +print("\n" + "=" * 60) diff --git a/task3/05_calendar.xlsx b/task3/05_calendar.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ca57067df88f832b9cdfef434d7571826114d353 GIT binary patch literal 72006 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 literal 0 HcmV?d00001 diff --git a/task3/06_evaluate.py b/task3/06_evaluate.py new file mode 100644 index 0000000..1caffb3 --- /dev/null +++ b/task3/06_evaluate.py @@ -0,0 +1,348 @@ +""" +Task 3 - Step 6: 效果评估 +========================= + +输入: + - 04_reschedule.xlsx (访问次数) + - 03_allocation.xlsx (配对分配方案) + - ../task1/03_allocate.xlsx (Task 1结果,用于对比) + - ../task1/04_metrics.xlsx (Task 1指标,用于对比) + +输出: 06_evaluate.xlsx (评估指标对比) + +评估指标: +- E1': 期望总服务量 +- E2': 质量加权服务量(总量计算衰减) +- F1': 满足率Gini系数 +- F2': 最低满足率 +- R1: 服务缺口风险 +- RS: 资源节省率 + +有效性衰减公式(总量计算): +q(μ_i + μ_j) = min(1, 250 / (μ_i + μ_j)) +""" + +import pandas as pd +import numpy as np +from scipy import stats + +# ============================================ +# 参数设置 +# ============================================ +RESCHEDULE_FILE = '04_reschedule.xlsx' +ALLOCATION_FILE = '03_allocation.xlsx' +TASK1_ALLOC_FILE = '../task1/03_allocate.xlsx' +TASK1_METRIC_FILE = '../task1/04_metrics.xlsx' +OUTPUT_FILE = '06_evaluate.xlsx' + +Q = 400 # 卡车容量 +QUALITY_THRESHOLD = 250 # 质量衰减阈值 +SHORTFALL_THRESHOLD = 0.8 # 服务缺口阈值 + +# ============================================ +# 辅助函数 +# ============================================ +def quality_factor(mu_total): + """质量折扣因子(总量计算)""" + return min(1.0, QUALITY_THRESHOLD / mu_total) if mu_total > 0 else 1.0 + + +def expected_service(q, mu, sigma): + """E[min(D, q)]""" + if sigma == 0: + return min(mu, q) + z = (q - mu) / sigma + return mu * stats.norm.cdf(z) - sigma * stats.norm.pdf(z) + q * (1 - stats.norm.cdf(z)) + + +def gini_coefficient(values): + """计算Gini系数""" + values = np.array(values) + values = values[~np.isnan(values)] + if len(values) == 0: + return 0 + values = np.sort(values) + n = len(values) + cumsum = np.cumsum(values) + return (2 * np.sum((np.arange(1, n + 1) * values)) - (n + 1) * cumsum[-1]) / (n * cumsum[-1]) if cumsum[-1] > 0 else 0 + + +def shortfall_probability(q, mu, sigma, threshold=0.8): + """P(S/D < threshold),即服务不足的概率""" + # 简化计算:P(min(D,q) / D < 0.8) ≈ P(D > q/0.8) + if sigma == 0: + return 0 if q >= mu * threshold else 1 + critical_demand = q / threshold + return 1 - stats.norm.cdf((critical_demand - mu) / sigma) + + +# ============================================ +# 读取数据 +# ============================================ +print("=" * 60) +print("Task 3 - Step 6: 效果评估") +print("=" * 60) + +# Task 3 数据 +df_sites = pd.read_excel(RESCHEDULE_FILE, sheet_name='sites_schedule') +df_pairs = pd.read_excel(ALLOCATION_FILE, sheet_name='allocation') +df_pair_visits = pd.read_excel(RESCHEDULE_FILE, sheet_name='pair_visits') + +print(f"\n读取Task 3数据:") +print(f" - 站点数: {len(df_sites)}") +print(f" - 配对数: {len(df_pairs)}") + +# Task 1 数据(用于对比) +df_task1 = pd.read_excel(TASK1_ALLOC_FILE) +try: + df_task1_metrics = pd.read_excel(TASK1_METRIC_FILE) + has_task1_metrics = True +except: + has_task1_metrics = False + print(" - 未找到Task 1指标文件,将重新计算") + +# ============================================ +# 计算 Task 3 指标 +# ============================================ +print(f"\n" + "-" * 40) +print("计算 Task 3 指标") +print("-" * 40) + +# 合并配对访问信息 +pair_k = {(row['site_i_id'], row['site_j_id']): row['k_dual'] + for _, row in df_pair_visits.iterrows()} + +# === E1': 期望总服务量 === +E1_prime = 0 + +# 单站点贡献 +for _, row in df_sites.iterrows(): + k_single = row['k_single_final'] + mu = row['mu'] + E1_prime += k_single * mu + +# 双站点贡献 +for _, row in df_pairs.iterrows(): + pair_key = (row['site_i_id'], row['site_j_id']) + k_dual = pair_k.get(pair_key, 0) + E_total = row['E_total'] + E1_prime += k_dual * E_total + +print(f"E1' (期望总服务量): {E1_prime:.0f}") + +# === E2': 质量加权服务量 === +E2_prime = 0 + +# 单站点贡献 +for _, row in df_sites.iterrows(): + k_single = row['k_single_final'] + mu = row['mu'] + q_factor = quality_factor(mu) + E2_prime += k_single * q_factor * mu + +# 双站点贡献(总量计算衰减) +for _, row in df_pairs.iterrows(): + pair_key = (row['site_i_id'], row['site_j_id']) + k_dual = pair_k.get(pair_key, 0) + mu_sum = row['mu_i'] + row['mu_j'] + E_total = row['E_total'] + q_factor = quality_factor(mu_sum) # 总量计算 + E2_prime += k_dual * q_factor * E_total + +print(f"E2' (质量加权服务量): {E2_prime:.0f}") + +# === 满足率计算 === +# Task 1定义: r_i = k_i * μ_i / μ̃_i (等效服务次数) +# Task 3: 需要分别计算单站点和双站点的贡献 + +site_satisfaction = {} + +for _, row in df_sites.iterrows(): + site_id = row['site_id'] + mu = row['mu'] + mu_tilde = row['mu_tilde'] + k_single = row['k_single_final'] + + # 单站点贡献: k_single * μ / μ̃ + r_single = k_single * mu / mu_tilde if mu_tilde > 0 else 0 + site_satisfaction[site_id] = r_single + +# 加上双站点贡献 +for _, row in df_pairs.iterrows(): + pair_key = (row['site_i_id'], row['site_j_id']) + k_dual = pair_k.get(pair_key, 0) + + # 双站点贡献: k_dual * E[S_i] / μ̃_i + mu_tilde_i = df_sites[df_sites['site_id'] == row['site_i_id']]['mu_tilde'].values[0] + mu_tilde_j = df_sites[df_sites['site_id'] == row['site_j_id']]['mu_tilde'].values[0] + + r_dual_i = k_dual * row['E_Si'] / mu_tilde_i if mu_tilde_i > 0 else 0 + r_dual_j = k_dual * row['E_Sj'] / mu_tilde_j if mu_tilde_j > 0 else 0 + + site_satisfaction[row['site_i_id']] += r_dual_i + site_satisfaction[row['site_j_id']] += r_dual_j + +# 计算满足率列表 +satisfaction_rates = list(site_satisfaction.values()) + +# === F1': Gini系数 === +F1_prime = gini_coefficient(satisfaction_rates) +print(f"F1' (满足率Gini): {F1_prime:.4f}") + +# === F2': 最低满足率 === +F2_prime = min(satisfaction_rates) if satisfaction_rates else 0 +print(f"F2' (最低满足率): {F2_prime:.4f}") + +# === R1: 服务缺口风险 === +# 双站点访问时,任一站点服务不足的概率 +shortfall_probs = [] +for _, row in df_pairs.iterrows(): + q_final = row['q_final'] + mu_i, sigma_i = row['mu_i'], row['sigma_i'] + mu_j, sigma_j = row['mu_j'], row['sigma_j'] + + # 站点i的缺口概率 + p_i = shortfall_probability(q_final, mu_i, sigma_i, SHORTFALL_THRESHOLD) + # 站点j的缺口概率 + p_j = shortfall_probability(Q - q_final, mu_j, sigma_j, SHORTFALL_THRESHOLD) + + # 至少一个站点缺口的概率 + p_either = 1 - (1 - p_i) * (1 - p_j) + shortfall_probs.append(p_either) + +R1 = np.mean(shortfall_probs) if shortfall_probs else 0 +print(f"R1 (平均缺口风险): {R1:.4f}") + +# === RS: 资源节省率 === +total_dual = df_pair_visits['k_dual'].sum() +RS = total_dual / 730 * 100 +print(f"RS (资源节省率): {RS:.2f}%") + +# ============================================ +# 计算 Task 1 指标(用于对比) +# ============================================ +print(f"\n" + "-" * 40) +print("计算 Task 1 指标(对比基准)") +print("-" * 40) + +# E1: 总服务量 +E1_task1 = (df_task1['k'] * df_task1['mu']).sum() +print(f"E1 (Task 1 总服务量): {E1_task1:.0f}") + +# E2: 质量加权 +E2_task1 = 0 +for _, row in df_task1.iterrows(): + q_factor = quality_factor(row['mu']) + E2_task1 += row['k'] * q_factor * row['mu'] +print(f"E2 (Task 1 质量加权): {E2_task1:.0f}") + +# F1: Gini系数 - 使用与Task 3相同的r定义 +# r_i = k_i * μ_i / μ̃_i +task1_rates = [] +for _, row in df_task1.iterrows(): + r = row['k'] * row['mu'] / row['mu_tilde'] if row['mu_tilde'] > 0 else 0 + task1_rates.append(r) +F1_task1 = gini_coefficient(task1_rates) +print(f"F1 (Task 1 Gini): {F1_task1:.4f}") + +# F2: 最低满足率 +F2_task1 = min(task1_rates) if task1_rates else 0 +print(f"F2 (Task 1 最低满足率): {F2_task1:.4f}") + +# ============================================ +# 对比分析 +# ============================================ +print(f"\n" + "-" * 40) +print("Task 3 vs Task 1 对比") +print("-" * 40) + +comparison = pd.DataFrame({ + 'Metric': ['E1 (总服务量)', 'E2 (质量加权)', 'F1 (Gini系数)', 'F2 (最低满足率)'], + 'Task 1': [E1_task1, E2_task1, F1_task1, F2_task1], + 'Task 3': [E1_prime, E2_prime, F1_prime, F2_prime], + 'Change': [E1_prime - E1_task1, E2_prime - E2_task1, + F1_prime - F1_task1, F2_prime - F2_task1], + 'Change %': [(E1_prime - E1_task1) / E1_task1 * 100, + (E2_prime - E2_task1) / E2_task1 * 100, + (F1_prime - F1_task1) / F1_task1 * 100 if F1_task1 != 0 else 0, + (F2_prime - F2_task1) / F2_task1 * 100 if F2_task1 != 0 else 0] +}) + +print(comparison.to_string(index=False)) + +# ============================================ +# 保存结果 +# ============================================ +with pd.ExcelWriter(OUTPUT_FILE, engine='openpyxl') as writer: + # Sheet 1: 指标对比 + comparison.to_excel(writer, sheet_name='comparison', index=False) + + # Sheet 2: Task 3 详细指标 + task3_metrics = pd.DataFrame({ + 'metric': ['E1_prime', 'E2_prime', 'F1_prime', 'F2_prime', + 'R1', 'RS', 'total_pairs', 'total_dual_visits'], + 'value': [E1_prime, E2_prime, F1_prime, F2_prime, + R1, RS/100, len(df_pairs), total_dual], + 'description': ['期望总服务量', '质量加权服务量', '满足率Gini系数', '最低满足率', + '平均缺口风险', '资源节省率', '配对数', '双站点访问次数'] + }) + task3_metrics.to_excel(writer, sheet_name='task3_metrics', index=False) + + # Sheet 3: 站点级别满足率 + site_rates = [] + for site_id, r in site_satisfaction.items(): + site_row = df_sites[df_sites['site_id'] == site_id] + if len(site_row) > 0: + site_name = site_row['site_name'].values[0] + mu = site_row['mu'].values[0] + mu_tilde = site_row['mu_tilde'].values[0] + k_single = site_row['k_single_final'].values[0] + k_dual = site_row['k_dual'].values[0] + else: + site_name = f"Site_{site_id}" + mu, mu_tilde, k_single, k_dual = 0, 0, 0, 0 + + site_rates.append({ + 'site_id': site_id, + 'site_name': site_name, + 'mu': mu, + 'mu_tilde': mu_tilde, + 'k_single': k_single, + 'k_dual': k_dual, + 'satisfaction_rate_r': r + }) + df_site_rates = pd.DataFrame(site_rates) + df_site_rates = df_site_rates.sort_values('satisfaction_rate_r') + df_site_rates.to_excel(writer, sheet_name='site_satisfaction', index=False) + + # Sheet 4: 配对风险分析 + pair_risk = [] + for idx, row in df_pairs.iterrows(): + pair_key = (row['site_i_id'], row['site_j_id']) + k_dual = pair_k.get(pair_key, 0) + q_final = row['q_final'] + mu_i, sigma_i = row['mu_i'], row['sigma_i'] + mu_j, sigma_j = row['mu_j'], row['sigma_j'] + + p_i = shortfall_probability(q_final, mu_i, sigma_i, SHORTFALL_THRESHOLD) + p_j = shortfall_probability(Q - q_final, mu_j, sigma_j, SHORTFALL_THRESHOLD) + + pair_risk.append({ + 'site_i_name': row['site_i_name'], + 'site_j_name': row['site_j_name'], + 'k_dual': k_dual, + 'q_final': q_final, + 'shortfall_prob_i': p_i, + 'shortfall_prob_j': p_j, + 'shortfall_prob_either': 1 - (1 - p_i) * (1 - p_j) + }) + df_pair_risk = pd.DataFrame(pair_risk) + df_pair_risk = df_pair_risk.sort_values('shortfall_prob_either', ascending=False) + df_pair_risk.to_excel(writer, sheet_name='pair_risk', index=False) + +print(f"\n结果已保存至: {OUTPUT_FILE}") +print(" - Sheet 'comparison': Task 1 vs Task 3 对比") +print(" - Sheet 'task3_metrics': Task 3 详细指标") +print(" - Sheet 'site_satisfaction': 站点满足率") +print(" - Sheet 'pair_risk': 配对风险分析") +print("\n" + "=" * 60) diff --git a/task3/06_evaluate.xlsx b/task3/06_evaluate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..95280826c0ff3d84c2e6c481d04745856e7f3847 GIT binary patch literal 13940 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 literal 0 HcmV?d00001 diff --git a/task3/README.md b/task3/README.md index 6f63f7b..89a0351 100644 --- a/task3/README.md +++ b/task3/README.md @@ -663,3 +663,80 @@ flowchart TB | 未满足惩罚 | $\lambda$ | 0.5 | 敏感性分析 | | 最大缺口惩罚 | $\eta$ | 0.3 | 敏感性分析 | | 鲁棒性水平 | $k$ | 1 | 84%保护 | +| **合并比例** | $r_{merge}$ | 1/2 | 保留50%独立访问 | + +--- + +## 附录D:实现决策记录 + +### D.1 关键设计决策 + +| 决策项 | 选择 | 理由 | +|--------|------|------| +| 数据来源 | Task 1结果 (`task1/03_allocate.xlsx`) | 复用已验证的需求修正和频次分配 | +| 有效性衰减计算 | **总量计算** $q(\mu_i + \mu_j)$ | 双站点共享同一卡车,总负载决定服务质量 | +| 合并比例 | $k_{max} = \lfloor \min(k_i, k_j) / 2 \rfloor$ | 保留50%独立访问,平衡效率与风险 | +| 配对策略 | 每站点最多配对一次 | 简化实现,足以说明方法论 | +| 双站点访问计数 | 算1次访问事件 | 释放槽位给其他站点 | + +### D.2 有效性衰减公式(总量计算) + +双站点访问时,质量折扣因子按总服务量计算: + +$$q_{ij} = \min\left(1, \frac{250}{\mu_i + \mu_j}\right)$$ + +**E2'的计算**: +$$E_2' = \sum_{\text{单站点}} k_i \cdot q(\mu_i) \cdot \mu_i + \sum_{\text{双站点}} k_{ij} \cdot q(\mu_i + \mu_j) \cdot E[S_i + S_j]$$ + +### D.3 合并比例详述 + +对于配对 $(i, j)$,原频次为 $k_i, k_j$: + +| 项目 | 公式 | +|------|------| +| 双站点访问次数 | $k_{ij} = \lfloor \min(k_i, k_j) / 2 \rfloor$ | +| 站点i剩余单独访问 | $k_i' = k_i - k_{ij}$ | +| 站点j剩余单独访问 | $k_j' = k_j - k_{ij}$ | +| 释放的访问槽位 | $\Delta N = \sum k_{ij}$ | + +--- + +## 附录E:敏感性分析计划 + +### E.1 待分析参数 + +| 参数 | 基准值 | 扫描范围 | 预期影响 | +|------|--------|---------|---------| +| **合并比例** $r_{merge}$ | 1/2 | [1/3, 1/2, 2/3] | 配对数量、资源节省 | +| 距离阈值 $l_{max}$ | 50 mi | [30, 40, 50, 60, 70] | 可行配对数 | +| 容量上限 $\mu_i + \mu_j$ | 450 | [400, 425, 450, 475, 500] | 配对选择范围 | +| CV阈值 | 0.5 | [0.3, 0.4, 0.5, 0.6] | 配对稳定性 | + +### E.2 敏感性分析输出 + +- 各参数对 E1', E2', F1', R1 的影响曲线 +- 参数交互效应热力图 +- 稳健性结论 + +--- + +## 附录F:程序流水线 + +``` +task3/ +├── 01_distance.py # 距离矩阵计算 +│ └── 01_distance.xlsx +├── 02_pairing.py # 配对筛选与选择 +│ └── 02_pairing.xlsx +├── 03_allocation.py # 最优分配计算 +│ └── 03_allocation.xlsx +├── 04_reschedule.py # 访问次数重分配 +│ └── 04_reschedule.xlsx +├── 05_calendar.py # 日历排程生成 +│ └── 05_calendar.xlsx +├── 06_evaluate.py # 效果评估 +│ └── 06_evaluate.xlsx +├── 07_sensitivity.py # 敏感性分析(待实现) +│ └── 07_sensitivity.xlsx +└── figures/ # 可视化输出 +```

Aul;oj*eV^ArL(J; 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 σ_i时,q* → μ_i(精确分配给站点i) +- 当σ_i >> σ_j时,q* → Q - μ_j(为站点j预留更多) +""" + +import pandas as pd +import numpy as np +from scipy import stats + +# ============================================ +# 参数设置 +# ============================================ +INPUT_FILE = '02_pairing.xlsx' +OUTPUT_FILE = '03_allocation.xlsx' + +Q = 400 # 卡车容量 +K_ROBUST = 1 # 鲁棒性水平 (84%保护) + +# ============================================ +# 读取数据 +# ============================================ +print("=" * 60) +print("Task 3 - Step 3: 第一站点最优分配计算") +print("=" * 60) + +# 读取选中的配对 +df_pairs = pd.read_excel(INPUT_FILE, sheet_name='selected_pairs') +print(f"\n读取配对数据: {len(df_pairs)} 对") + +# ============================================ +# 计算最优分配 +# ============================================ +print(f"\n" + "-" * 40) +print("计算最优分配 q*") +print("-" * 40) + +def optimal_allocation(mu_i, sigma_i, mu_j, sigma_j, Q=400): + """ + 计算双站点访问时第一站点的最优分配量 + + 公式: q* = (σ_j * μ_i + σ_i * (Q - μ_j)) / (σ_i + σ_j) + """ + if sigma_i + sigma_j == 0: + # 边界情况:两站点都无波动 + return mu_i + + q_star = (sigma_j * mu_i + sigma_i * (Q - mu_j)) / (sigma_i + sigma_j) + return q_star + + +def robust_allocation(q_star, mu_i, sigma_i, mu_j, sigma_j, Q=400, k=1): + """ + 应用鲁棒性约束 + + 约束: μ_i - k*σ_i ≤ q ≤ Q - μ_j + k*σ_j + """ + q_lower = max(0, mu_i - k * sigma_i) + q_upper = min(Q, Q - mu_j + k * sigma_j) + + # 确保上下界合理 + if q_lower > q_upper: + # 如果约束冲突,取中点 + q_final = (q_lower + q_upper) / 2 + else: + q_final = np.clip(q_star, q_lower, q_upper) + + return q_final, q_lower, q_upper + + +def expected_service(q, mu, sigma): + """ + 计算截断期望 E[min(D, q)] + + E[min(D, q)] = μ * Φ(z) - σ * φ(z) + q * (1 - Φ(z)) + where z = (q - μ) / σ + + 当q > μ时,大部分时候D < q,期望接近μ + 当q < μ时,经常D > q,期望接近q但略低 + """ + if sigma == 0: + return min(mu, q) + + z = (q - mu) / sigma + phi_z = stats.norm.pdf(z) + Phi_z = stats.norm.cdf(z) + + return mu * Phi_z - sigma * phi_z + q * (1 - Phi_z) + + +# 计算每个配对的分配 +results = [] + +for idx, row in df_pairs.iterrows(): + mu_i = row['mu_i'] + sigma_i = row['sigma_i'] + mu_j = row['mu_j'] + sigma_j = row['sigma_j'] + + # 计算最优分配 + q_star = optimal_allocation(mu_i, sigma_i, mu_j, sigma_j, Q) + + # 应用鲁棒性约束 + q_final, q_lower, q_upper = robust_allocation( + q_star, mu_i, sigma_i, mu_j, sigma_j, Q, K_ROBUST + ) + + # 计算期望服务量 + E_Si = expected_service(q_final, mu_i, sigma_i) + E_Sj = expected_service(Q - q_final, mu_j, sigma_j) + E_total = E_Si + E_Sj + + # 计算分配比例 + alloc_ratio = q_final / Q if Q > 0 else 0 + + results.append({ + **row.to_dict(), + 'q_star': q_star, + 'q_lower': q_lower, + 'q_upper': q_upper, + 'q_final': q_final, + 'q_ratio': alloc_ratio, + 'E_Si': E_Si, + 'E_Sj': E_Sj, + 'E_total': E_total, + 'efficiency': E_total / (mu_i + mu_j) if (mu_i + mu_j) > 0 else 0 + }) + +df_allocation = pd.DataFrame(results) + +# ============================================ +# 统计信息 +# ============================================ +print(f"\n分配统计:") +print(f" - q* 范围: [{df_allocation['q_star'].min():.1f}, {df_allocation['q_star'].max():.1f}]") +print(f" - q_final 范围: [{df_allocation['q_final'].min():.1f}, {df_allocation['q_final'].max():.1f}]") +print(f" - 分配比例范围: [{df_allocation['q_ratio'].min():.2%}, {df_allocation['q_ratio'].max():.2%}]") +print(f" - 平均分配比例: {df_allocation['q_ratio'].mean():.2%}") + +print(f"\n期望服务量统计:") +print(f" - E[S_i] 范围: [{df_allocation['E_Si'].min():.1f}, {df_allocation['E_Si'].max():.1f}]") +print(f" - E[S_j] 范围: [{df_allocation['E_Sj'].min():.1f}, {df_allocation['E_Sj'].max():.1f}]") +print(f" - E[total] 范围: [{df_allocation['E_total'].min():.1f}, {df_allocation['E_total'].max():.1f}]") +print(f" - 平均效率: {df_allocation['efficiency'].mean():.2%}") + +# 检查是否有被约束裁剪的情况 +clipped_lower = (df_allocation['q_final'] <= df_allocation['q_lower'] + 0.01).sum() +clipped_upper = (df_allocation['q_final'] >= df_allocation['q_upper'] - 0.01).sum() +print(f"\n鲁棒性约束影响:") +print(f" - 触及下界: {clipped_lower} 对") +print(f" - 触及上界: {clipped_upper} 对") +print(f" - 未被裁剪: {len(df_allocation) - clipped_lower - clipped_upper} 对") + +# ============================================ +# 显示关键配对的分配 +# ============================================ +print(f"\n" + "-" * 40) +print("高价值配对的分配方案 (Top 10)") +print("-" * 40) + +display_cols = ['site_i_name', 'site_j_name', 'mu_i', 'mu_j', 'q_final', 'E_Si', 'E_Sj', 'E_total'] +df_top = df_allocation.nlargest(10, 'value')[display_cols].copy() +df_top['site_i_name'] = df_top['site_i_name'].str[:25] +df_top['site_j_name'] = df_top['site_j_name'].str[:25] +print(df_top.to_string(index=False)) + +# ============================================ +# 保存结果 +# ============================================ +with pd.ExcelWriter(OUTPUT_FILE, engine='openpyxl') as writer: + # Sheet 1: 完整分配结果 + df_allocation.to_excel(writer, sheet_name='allocation', index=False) + + # Sheet 2: 简化视图 + simple_cols = ['site_i_id', 'site_j_id', 'site_i_name', 'site_j_name', + 'mu_i', 'mu_j', 'sigma_i', 'sigma_j', 'k_i', 'k_j', + 'q_final', 'E_Si', 'E_Sj', 'E_total', 'value'] + df_allocation[simple_cols].to_excel(writer, sheet_name='allocation_simple', index=False) + + # Sheet 3: 参数记录 + params = pd.DataFrame({ + 'parameter': ['Q', 'K_ROBUST'], + 'value': [Q, K_ROBUST], + 'description': ['卡车容量', '鲁棒性水平(k*σ)'] + }) + params.to_excel(writer, sheet_name='parameters', index=False) + + # Sheet 4: 汇总统计 + summary = pd.DataFrame({ + 'metric': ['total_pairs', 'avg_q_ratio', 'avg_E_total', 'avg_efficiency', + 'min_E_total', 'max_E_total', 'clipped_lower', 'clipped_upper'], + 'value': [len(df_allocation), + df_allocation['q_ratio'].mean(), + df_allocation['E_total'].mean(), + df_allocation['efficiency'].mean(), + df_allocation['E_total'].min(), + df_allocation['E_total'].max(), + clipped_lower, clipped_upper] + }) + summary.to_excel(writer, sheet_name='summary', index=False) + +print(f"\n结果已保存至: {OUTPUT_FILE}") +print(" - Sheet 'allocation': 完整分配结果") +print(" - Sheet 'allocation_simple': 简化视图") +print(" - Sheet 'parameters': 参数记录") +print(" - Sheet 'summary': 汇总统计") +print("\n" + "=" * 60) diff --git a/task3/03_allocation.xlsx b/task3/03_allocation.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..216b5eaaf9734a2381dfa7abe1170d5f3199dd5b GIT binary patch literal 21397 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 literal 0 HcmV?d00001 diff --git a/task3/04_reschedule.py b/task3/04_reschedule.py new file mode 100644 index 0000000..1d8e493 --- /dev/null +++ b/task3/04_reschedule.py @@ -0,0 +1,237 @@ +""" +Task 3 - Step 4: 访问次数重分配 +================================ + +输入: + - 03_allocation.xlsx (配对及分配方案) + - ../task1/03_allocate.xlsx (原始频次分配) + +输出: 04_reschedule.xlsx (重分配后的访问次数) + +重分配逻辑: +1. 对于每个配对(i,j),计算双站点访问次数: k_ij = floor(min(k_i, k_j) / 2) +2. 更新单独访问次数: k'_i = k_i - k_ij, k'_j = k_j - k_ij +3. 释放的槽位: ΔN = Σ k_ij +4. 将ΔN按需求比例分配给所有站点 + +约束: +- 双站点访问算1次"访问事件" +- 每天仍然2次访问事件(单站点或双站点) +- 总访问事件数 = 730 +""" + +import pandas as pd +import numpy as np + +# ============================================ +# 参数设置 +# ============================================ +ALLOCATION_FILE = '03_allocation.xlsx' +TASK1_FILE = '../task1/03_allocate.xlsx' +OUTPUT_FILE = '04_reschedule.xlsx' + +MERGE_RATIO = 0.5 # 合并比例: min(k_i, k_j) * ratio +TOTAL_EVENTS = 730 # 年度总访问事件数 + +# ============================================ +# 读取数据 +# ============================================ +print("=" * 60) +print("Task 3 - Step 4: 访问次数重分配") +print("=" * 60) + +# 读取配对数据 +df_pairs = pd.read_excel(ALLOCATION_FILE, sheet_name='allocation') +print(f"\n读取配对数据: {len(df_pairs)} 对") + +# 读取原始分配 +df_original = pd.read_excel(TASK1_FILE) +print(f"读取原始分配: {len(df_original)} 个站点") +print(f"原始总访问次数: {df_original['k'].sum()}") + +# ============================================ +# 计算双站点访问次数 +# ============================================ +print(f"\n" + "-" * 40) +print("计算双站点访问次数") +print("-" * 40) + +# 创建站点访问信息的副本 +sites = df_original[['site_id', 'site_name', 'mu', 'sigma', 'mu_tilde', 'k']].copy() +sites['k_original'] = sites['k'] +sites['k_single'] = sites['k'] # 将被更新 +sites['k_dual'] = 0 # 作为配对中的一员参与双站点访问的次数 +sites['is_paired'] = False +sites['pair_partner'] = None + +# 记录配对信息 +pair_visits = [] +paired_sites = set() + +for idx, row in df_pairs.iterrows(): + site_i = row['site_i_id'] + site_j = row['site_j_id'] + k_i = row['k_i'] + k_j = row['k_j'] + + # 计算双站点访问次数 + k_ij = int(min(k_i, k_j) * MERGE_RATIO) + + # 确保至少保留1次单独访问 + if k_ij >= min(k_i, k_j): + k_ij = min(k_i, k_j) - 1 + + if k_ij < 1: + k_ij = 0 # 如果无法合并,跳过 + + # 更新单独访问次数 + k_i_single = k_i - k_ij + k_j_single = k_j - k_ij + + # 更新sites表 + sites.loc[sites['site_id'] == site_i, 'k_single'] = k_i_single + sites.loc[sites['site_id'] == site_i, 'k_dual'] = k_ij + sites.loc[sites['site_id'] == site_i, 'is_paired'] = True + sites.loc[sites['site_id'] == site_i, 'pair_partner'] = site_j + + sites.loc[sites['site_id'] == site_j, 'k_single'] = k_j_single + sites.loc[sites['site_id'] == site_j, 'k_dual'] = k_ij + sites.loc[sites['site_id'] == site_j, 'is_paired'] = True + sites.loc[sites['site_id'] == site_j, 'pair_partner'] = site_i + + paired_sites.add(site_i) + paired_sites.add(site_j) + + pair_visits.append({ + 'pair_id': idx + 1, + 'site_i_id': site_i, + 'site_j_id': site_j, + 'site_i_name': row['site_i_name'], + 'site_j_name': row['site_j_name'], + 'k_i_original': k_i, + 'k_j_original': k_j, + 'k_dual': k_ij, + 'k_i_single': k_i_single, + 'k_j_single': k_j_single, + 'q_final': row['q_final'], + 'E_total': row['E_total'] + }) + +df_pair_visits = pd.DataFrame(pair_visits) + +# ============================================ +# 计算释放的槽位和重分配 +# ============================================ +print(f"\n" + "-" * 40) +print("计算释放槽位") +print("-" * 40) + +# 当前访问事件统计 +total_single = sites['k_single'].sum() +total_dual = df_pair_visits['k_dual'].sum() +total_events_current = total_single + total_dual + +print(f"单站点访问次数: {total_single}") +print(f"双站点访问次数: {total_dual}") +print(f"当前总访问事件: {total_events_current}") + +# 需要填补的槽位 +delta_N = TOTAL_EVENTS - total_events_current +print(f"需要填补的槽位: {delta_N}") + +# 按需求比例重分配 +if delta_N > 0: + print(f"\n重分配 {delta_N} 次额外访问...") + + # 计算每个站点的需求权重 + total_demand = sites['mu_tilde'].sum() + sites['demand_weight'] = sites['mu_tilde'] / total_demand + + # 按比例分配(使用Hamilton方法) + sites['k_extra_float'] = delta_N * sites['demand_weight'] + sites['k_extra'] = sites['k_extra_float'].apply(np.floor).astype(int) + + # 处理余数 + remainder = delta_N - sites['k_extra'].sum() + if remainder > 0: + # 按小数部分降序分配余数 + fractional = sites['k_extra_float'] - sites['k_extra'] + top_indices = fractional.nlargest(int(remainder)).index + sites.loc[top_indices, 'k_extra'] += 1 + + # 更新最终单站点访问次数 + sites['k_single_final'] = sites['k_single'] + sites['k_extra'] +else: + sites['k_extra'] = 0 + sites['k_single_final'] = sites['k_single'] + +# ============================================ +# 验证和统计 +# ============================================ +print(f"\n" + "-" * 40) +print("验证和统计") +print("-" * 40) + +# 最终统计 +final_single = sites['k_single_final'].sum() +final_dual = df_pair_visits['k_dual'].sum() +final_total = final_single + final_dual + +print(f"最终单站点访问: {final_single}") +print(f"最终双站点访问: {final_dual}") +print(f"最终总访问事件: {final_total}") +print(f"目标访问事件: {TOTAL_EVENTS}") +print(f"差异: {final_total - TOTAL_EVENTS}") + +# 站点级别统计 +print(f"\n站点访问次数变化:") +sites['k_total_final'] = sites['k_single_final'] + sites['k_dual'] +print(f" - 原始k范围: [{sites['k_original'].min()}, {sites['k_original'].max()}]") +print(f" - 最终k范围: [{sites['k_total_final'].min()}, {sites['k_total_final'].max()}]") +print(f" - 额外分配范围: [{sites['k_extra'].min()}, {sites['k_extra'].max()}]") + +# 配对统计 +if len(df_pair_visits) > 0: + print(f"\n配对访问统计:") + print(f" - 配对数: {len(df_pair_visits)}") + print(f" - 双站点访问总次数: {df_pair_visits['k_dual'].sum()}") + print(f" - 每对双站点访问范围: [{df_pair_visits['k_dual'].min()}, {df_pair_visits['k_dual'].max()}]") + +# ============================================ +# 保存结果 +# ============================================ +with pd.ExcelWriter(OUTPUT_FILE, engine='openpyxl') as writer: + # Sheet 1: 站点最终访问次数 + sites_output = sites[['site_id', 'site_name', 'mu', 'sigma', 'mu_tilde', + 'k_original', 'k_single', 'k_extra', 'k_single_final', + 'k_dual', 'k_total_final', 'is_paired', 'pair_partner']] + sites_output.to_excel(writer, sheet_name='sites_schedule', index=False) + + # Sheet 2: 配对访问明细 + df_pair_visits.to_excel(writer, sheet_name='pair_visits', index=False) + + # Sheet 3: 参数记录 + params = pd.DataFrame({ + 'parameter': ['MERGE_RATIO', 'TOTAL_EVENTS', 'delta_N'], + 'value': [MERGE_RATIO, TOTAL_EVENTS, delta_N], + 'description': ['合并比例', '年度总访问事件', '额外分配次数'] + }) + params.to_excel(writer, sheet_name='parameters', index=False) + + # Sheet 4: 汇总统计 + summary = pd.DataFrame({ + 'metric': ['total_sites', 'paired_sites', 'unpaired_sites', + 'total_pairs', 'total_dual_visits', 'total_single_visits', + 'total_events', 'original_total_visits'], + 'value': [len(sites), len(paired_sites), len(sites) - len(paired_sites), + len(df_pair_visits), final_dual, final_single, + final_total, sites['k_original'].sum()] + }) + summary.to_excel(writer, sheet_name='summary', index=False) + +print(f"\n结果已保存至: {OUTPUT_FILE}") +print(" - Sheet 'sites_schedule': 站点最终访问次数") +print(" - Sheet 'pair_visits': 配对访问明细") +print(" - Sheet 'parameters': 参数记录") +print(" - Sheet 'summary': 汇总统计") +print("\n" + "=" * 60) diff --git a/task3/04_reschedule.xlsx b/task3/04_reschedule.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4f15d642d9a3b7a3adbae442e588f29be60df93b GIT binary patch literal 15738 zcmZ|01$0|YvNdXoEkhhLGcz+Yqs+|A%osDXV~&}bIc8>zIWaRcJ?ESC-?@`FS6Zjf zI$El&Qupqv>gp~9X>bS>5D*Xm2$L?ewwPuQT;Ru3?Z<`iaT(hgDLC5MJJB21+taz* zSj)!9!uB#Ch`dW3uG^|y5HJ$V=WmU8NwBlU84J4xzj!P4#IEveFhsSXj;i+)yRnA! z7yBZPh=Vl2iuDQ4m12sMVp*u;2~2uKBL6h&C#k_60@p{CVV=x*!98i@+Q;c&{Y`mT z-W>cb(>c|Wk>VlM>N+NPsRO^s?$O{=cjD70h5yhu)k~k|{6kM_Fc1*L|E;f)oukPg zg(ngerTZ8VhPoqmIy)PZM}$(*2gpD51pL;Lu+>se4B07IZ*Gp(3O#_jV03$bIdikG zgcrI;)HB3qNEmQtZkr^}?F+#T3j~pP@|P=glzJ#_JNPXS(bQkGl!;_c-oeTlY0zMy09P^~Ud4wU_b>9MlaZ<&ut9j5)iVC+pHodOrxgwq-}CBece6Vi*g>{{rUqmu3)j_#w4hTt{9r`&XloDS z_#nS-aW;gpl+ULLvTYeW5HyF+lcM7L2OJ*PXLN=KAz?{Z?)pFJR~Orx={L62m`D%> z88C~hFMhxj%IG#~T7dL%_>3SU^{oX)0;Jth#ul}=w6N%j7mpfN*HwcotaCBMjrDzW zY0L$tl@&GZ^avVu@tGe`$CRT@@m8CxE>V4OLniDm;;>==$ zwY7ce&e1eB8)=UNv8C9a-J5k|-CZCE-H>lFZM=N9QWalR7Of;dcki=#oMD~`6Rjmb zXXUm&7ZW~MIqm+r>ry_nuPS`7eA@Zgf{gsN%BtWH&0I)q``8l+wQ*NqjsQg6-gR+& z7Cc3l^2sF$>nCpex}f%j`Wa_9;@jW=#G=J4W(td#V^-WJco6pf85srdYQd(6t=@!L z?YPA$%0>k&K>BdNt#}~ez*_a|ZEE{S0kdb857(qslAlF6Xz^)###G{q)4@(oapID! z(4>6_4fN$Rv6ew7xh*%cBNvXDkoVNxU3?)a)71GR%&{Dg8NO;tjn356PIi5qD%r6e&D(VSu0wjD%{M#;}i$ozn;kZ+a>IA8_Pj48Px4-JDAh+D`$ z&0T=u&FHZEa=Ub1wOn<{m7oU%F|6O2PJ2!>*3VFdVl#It9c%fi>ZqWp7@I6*tTY3Q z?#VwcD>Hd;k&z~nU?BxVQc1{=N;!RHC6M2!3s>GU=L9a2=t-WW;$to9iHn`dCJvaf zdc>-+T|&)gc|6}fJ!Z1P;KXC&f|+60ixCD{v|r#=lfDj8g9