From b74238f14ea159da04f95ea5a227dfb23dffa51d Mon Sep 17 00:00:00 2001 From: ton1c Date: Mon, 28 Apr 2025 22:02:51 +0300 Subject: [PATCH] added quick_start.md --- clean.xlsx | Bin 0 -> 9472 bytes docs/quick_start.md | 142 ++++++++++++++++++ modules/tag/__init__.py | 32 +++- modules/task/factory/__init__.py | 2 +- modules/task/factory/default.py | 31 ++++ modules/variant_builder/__init__.py | 5 +- .../__pycache__/__init__.cpython-313.pyc | Bin 5000 -> 5178 bytes .../default_task_selector.cpython-313.pyc | Bin 2986 -> 2743 bytes .../variant_builder/default_task_selector.py | 5 - parserd.xlsx | Bin 0 -> 12925 bytes poetry.lock | 29 +++- pyproject.toml | 3 +- samples/clean.xlsx | Bin 0 -> 9166 bytes samples/Варианты ДКР2 2023 2024 2025.xlsx | Bin 0 -> 44982 bytes test.py | 33 ---- variants.py | 43 ++++++ варианты.xlsx | Bin 0 -> 23006 bytes 17 files changed, 279 insertions(+), 46 deletions(-) create mode 100644 clean.xlsx create mode 100644 docs/quick_start.md create mode 100644 modules/task/factory/default.py create mode 100644 parserd.xlsx create mode 100644 samples/clean.xlsx create mode 100644 samples/Варианты ДКР2 2023 2024 2025.xlsx delete mode 100644 test.py create mode 100644 variants.py create mode 100644 варианты.xlsx diff --git a/clean.xlsx b/clean.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5fab2532b3402e6397141e9717c9b6a94a8efb15 GIT binary patch literal 9472 zcmaKS1yo$ivi9HvcPF^Jd$8aV+(Pid9Rf^n3+}GLouI*8g1fs0he3h`dvNak|Ky(c z?y0?I&#b+=s&`jaSJl+lN^(%pSO9oe@Hp|M~eDxjrK-de_-$L9R5M8TX0J{#^! z&#LY_pSE*CD)gMS>T!`o@hd0z^ z*>T_$Qc(9M^UfT`(+#YFt@IRCN8f!%&G=BZ0 zxizT~15C0NsXanGoh{f;dc`@?GbyOSG6gfesAsR`@lyAzQk`tSwDRMeCpL3eXF z>>3&AIax!-CUTTORT`qitq>vUv?yJymWCVQBuq_U zbt#ppTNWmn82r8It$>~ue{{CHGcW#h>YDv=lCQZjBog(QPu=E%XH!d@`BhYDCYg_v z%6!u>LNZcoIoZP75QE2oIPNFVbuRIcg9odT+T(|YmxwPubHI2_bqxUkSVR4j&tU$` zXPnJ}Hb9oY?rbkRYb8O!ZiyA?Gx!eM@1%6I;ngImA{!&33vH!%-3oq6-HdcKS@H2X zxUgSwvm(2j)nLyfL|Vv0A~d|U=_#8MBxx*Bj7hK}Pb)eyq_!uRz1C*C#zI?#;*3x| zojgvV^Qqmd-Y=g)iR^4+k(n$z&}k-?ZK##-NI^UM%3a$6i`OnSJs(!Dr7YH(KV>)t zGTQ>v&WomPn7z|M^_(VfafTe0iuX$s(_0|jM3zUSKBV;AE~T)Hpu~Kfzg*20*+r@+ zn!A6w&rh@rud;z_l6JTpUa5K1uauZnS{;OWoi+lZcg}8lL2C*dR0^N&1 zVtxZkO*$JjmnYKfm!C=gyJu$P z*kvb@aDa>q6%k8aR)F9yEV>OCys%N83ujJ7bR9NAj{xvH6S&2;*8|62B&zi`W%qb= zdbu2CZPm=vED6O1GX!KkDzl~E%f{HYa^OKUhfAp6P$7pVWh@>*KRCf~Gs+!&mC(cB zk1{JP^&f1v@UVMOQMV8)AEkpxxf_FUrABfBmM!@(9bk3Id<=@WH&4Be^GX{m^X5wi z_OGxAYEFS?$a9;$NlcAXjxUa%_}U-3w07-=U`eiO%pNdb-0Q0H%?IM)%A~(V~4(kAK z`W_mjlWswO4cdy!%F#Xr* zYx2s{Dm>@Q04a0k6J_$Y5BKbHlb$|r?9gRlCdK22du>urypr-vzDZ=KwR8$#p$`!B zWv9hU+&geo1u=JW_^+hyLv?Q-UVQtugr-qGJ{56|+JEUQo(tyU*f2?yBOillCr>GQn3 zJ!_sH6VhqUCONv0OyDl7vrR{QGN!wMsAwdru7vV@M*WXmX$r}e8JTjf=e_k z$I$K8VJpc)llDYtzn83M3eJKVF^r+h3ofqpT{)4-$n7IMb z?(5-@kc|6Pun2JQ@&S@?@H#BhRwln<9fqL7-qy9XU_6s=0wy%c>Frryycq))^q1m6 z;lpZ4RiM!+$g@QZ9|*^OD{I-jX|<~Auzupwx!PG9XMLW@(=w)L!P$y^8}h{{ zJx4v2Y2I`sEXAEyd46;LNwldzbzh-MM0U@aCtGiz{kg z74&>m%P?yU)zW-a+Z%&EmR{(B5Bs0d)@L-giPM*Vy;d&IpcATiFFk;*IM~RG?N#Sn z!ZR1cuVlhIT9nH{WHuUEK9TbOE~oSq^XQX!Oqh5cOr_PL=oUIJU^{XIU*K71n!DO} zd`K0~(daQ!%Q!ey0oU`>mN$~6C?kQnJhdrrq3UE{(sY6p47**X2IfLJvl=4jvwy(! zIEwSY%2xoU_ykp@I_7<5AXWY0@RE~FC}5+FI?$o|t1$hlU3=Utji86!tXRMvHEc@p&IyxMV5Qdj|62uRo%qn1fXSR*t! z#Q9*~4Lox@EuN0D=f}MaNF5zm zI5hD_tZ4qpS0K@1d#~j{IPEoMi%6ow;AC|&ZekM)hj%?cMaf}-etF@j@166K*%f1& z6k|R^X|qrov;0g(?lE9I6Bj)S_++iS4DiXiFJW5v{|`%abNV<@y4gbQo5XbL$U>+1$UaB|mOsQ@XZzg7$# zeIX^3AAXOn#xDNb;f~Yr*0-iyq=Y1&4^l@A%3^%U7U+CmK~)?6V8=@qElhbcc~m`# z1Zzra@ttABKm<0!6hMJVIpl*|4F4-OF|&3;ui>2~Q$ zcN%>;%Dy_q`0IH|s$-D8NJh+Cs~o-tux#v&*Yc#vz8m;v=+gMOzRZmfMXXw|Xly6Q z0C*Dv$cuOrSZI!59v{u82`IPztnKQJ>8I9R_W5_UNc0KFK|li){Ad*%BLm2aM{pl| z@%+c!I$!-ps35Xg9hj!~54!ikThS+u$^|ujG{Vvkw8F8G*w#d!Z9}S8mBt$oy4ugZ z^J6EJ*pp@7IfUoTv`wdQJ5#glb6Te$x6;XhF+=y=W>QpD2VB5kUAVJ5CP%&w&=5D7 zZ7=j1wt%dy{h7>IN>&op+@nckh%zG?Nv`V6795CN>;yAfgfofjdbahV7}IoLB~-a@ z?I-IJFODY8vwL0~ReoeVH_|T#TBI7P###1ms@Fa8)B1=v{Y}|H zB7D8G6P!z?OW9W-^x-5eoOfc4{X0d5TJmq1{M#0`y2CIOY8dMR4l0GlIWq$!DfGK8 ze13JrnJ?T(m)|oHpEt!H$KQd%l$vf{y(H%^)n*MwZ~y>P_&+6Qyx;#9oXmkhXD61w zzWyozThm4ym-^BBz#s%1RQJKqp7kX;i=oY+hp+>cl{Y_#J#<60h}{)1|OAh1cijAHHq0ybeaGKJaKLKHTgz zS1afCAXGO4b#geEWF##W;Rp{kE33x~hAzd`?FUEnt(p^3EmR(ENZitSZXbTE-mLNX zwsc;0!cPYxm@&GUp{ApsS-QK4`xQ2{C%Rlh5XIf2?P{|2%!@ z1Z_k1SOnL%Z6;6p?-ChoFW*?i8GI77e-MhQPWR{-N z94i$kQ0^RaRJLiZxqPJadE25l9AMzxIx9p90{)4xY&3RBD-a2yx{fz#Sn>zJbDdkqqH)hxBv%7o4)IvE!B(`^# zP~JOTmL=KpC)`HC6*o<*uG&)dJc2(;Q~Q2_=9>AjaT{+dTSulm;n?)0nrm%8lQJhI zl|1N$-*_Z*UCB!%fhKf~2B&Hp$2JURD!tJj+(+$C*~aR5N@=k*s=pf_UmspM&o9nj zsQ)Be`(_#=m6rc8Z5NzcP_X8ZtKyCu;Tcw>{n-(#Ta;1<4B|-@X4kaa8zoi~{uav# zcOA?1;qXawlW|doVmh%7&ESuc*B_roxVDwEhhlj&aDx_7?6FEesPDd? znbij8j!S=&RzDxTuecFgQ8F94<|!!@{qLSzNT7XYf@ryNJm0#}QR5j&VqEq!T( z^r|_wF?U~JorOc(S)Be}2NP!_N&1GhJ;DajL=O#q{B}@s$4q25zlF*(gCnf2-O2J! zVEhq#i3E0}(71gx0z?~%ICKgkJ zL4{Y}VV!Ix**Y4BsdC*-2+dow@JO!`Oq|#3puQ!=PM8H8Pm;TR*?sgr6rVqoEEr=a z9Ilod*qa)Low7dI=wq~};edo#92NQ*?d((gJlUY$z}dm;HHbmx9|q1+hx4`MkHtxW z6`TtdVP6CH-%LX|S<~aMw4vD3aggv)!vzZ^t>A5-p}C8)i5xQw;E6#rCcPCtNyZ`L zbx^}1MQ*|=sBpsloC{H1fw(mR0DZ)T&4Y%dP=WL%D<-O7!^4Y*b;E8DGPH0rf)Jw= zk$!IcOraqH#HY~KYT%5g&{F37tLS_?=GF8D3=Hg_XRiMwG+}{>ovG%x<0k^O(Br&z z&- z8P#+--_LpIjyqmTOp^IP1QhHs6L^3Y4%bVDM`B3t-s_opF2|QWFAK6 zfWi=H=!zYljrI1cjVP7LS`*SsMX=ztT-#Loj0Vm6$ z?>f#3k!?3nc%3@D7AOYrRvYoWK5UGgS)_>uU2O4UC_1i^*)aLh(I?nqv(GG3RzsaC zyu9(qF+q;@jD+N!MMve3Zs!q+p}gE8-_U&ITzNd#Y0wJ$IxqoVBA_6l zqU+0wPKu4UQtDTT!E#ii4Af1?8z!eXSC3^c(b{@r_L1}Uar4qHWssnEh%MPQ2}d!l zoDIoc1|GKU;FBa3RszrhL9(3_2FgIDQIZdH#ta*XucnXY!Aa;HDb-w|#$QHAqRBo! z12Xo;lgOBPKc4@LRJ28DfbXNs9L^pWP@v{Ja zcL%5JcvNk7Cn6VDk}^<_;A6a%o2J%wt4jRF2g3~4V%lzs>P-0+{*NWLfm*TA(a<0! z1Tj4Z%5Y@FHm6iEy|BFKIfPdgFhgx}GAUL)CucfG)5QXW6f$aYY*W_B%~M$NtN1ar z@5kXr)%CxZ1p+r<6guxesC=#RGSqEVi$AM%{lxC(vWb*Akks@2;x$eI3;x;Uk}m}N zt4@IShcSDRN=m_`_(p02bvIE}R!I#_PC7iw(oVv|q5Y89g$cDszF3^^@$y0W6jRO@ z-x!hNEf8P_L)jBi$}q;TfwV}7y@*XLc(e?I$#9jrEo$*qrz@EvDH(#LX51RR1xLtG zY?3XALBOpPKY8)4;mkaPZtKxRAhdXn41884+Xy(&) zzw72dmsc*JGIWzyWfd%-!+XszXg^Vz_%eaoedcL$#(g=zQx*M(I5S>TlF$8|Fvcb_ zx1YNz`vnW>@F=FR!eg+3=5P!nauWE=Q{cP)1M`9>B$DPT=7CFO8lJQQv61_K?q3Zdgg))S|Ihr`!;`zApu2BiaSML7NmqB zgC7Z%m~0ly{^j6#KFxTx6~h#e=v827e<=I+z><_(J3Wpz-jzchBn1NY|9#+9`(FM9I(BS)noOU`(GT_&#c>_{YRi_+x=rFab2 z@XHnomV!XZG9xGj{Ms8(xwe=?uF9aKV8p`Xo#?X^63(de>a>ajvkcs06xyWQJK?U3 zm7Qr<&O;>5TZM=S!#yie-Yk>C_? z=YZ}Ryx#q*wr(y=CmLlH?C3m8Cm#GHI3VpLWtFgvf{BBbA;w3CxaqrAe*cE>S{pWo z>;cX-?)OC{re<>A(+(5WSB|7WtxK!inwWE|>K+hj*;qB?79QVkvO2SY3Ai%37I)vQ z&B`ULaz)e2=EMriZ104TRJru~&h8)A4VkGyM6QHB%x$4{y*yJ_;0mwBAD29KaZDAk z6}R2%cOHbmcJKSXt@cbWuU~gt74L+F9}A6jmW_^uS!i;_?G*Y}lHZhW^?AQ}xZG!n zY8QO`bptMJ7kXqjUs|ixj9qyr*#y%w_JGqA_5}G-!_sC$Zh0X90H1mOsfNY+cZ12? z&=F{&>g;G?YxY;4DI!H7a!Ld(@H)NgK0wKGQ=8NQlGi7JGfp~$cybipr2{4! z4TB*-tMUsnhL|4*FHfowjxL5UQ0pbDHZkE(oIfl{mjX@_Ak>V@3(F0-FSEC zNq!}yGq=Z0opBf2KC*fXx2JfIweOHzjNRHQE3V|+Uj#mR4D7?s&T!HHT$I$(!q=Lw z&h^2mm{OL5+oT;HEJ^^Ty0vdfA_oC9syM1p^wuc_YNgT2o`xX>1eEFdtx^p@yh zU6AHf3ALn3djndb&~p#a^_pOZb)+G8QmjnVYVRJVFCYG{{|EavW&#BaRt5UmIU&o1 zPI|5drB6i9nb?>s?sU0*4yRTWQh%^N`4MlVenDqQ>|!dHvy)sakrix(8{v@#R$oUA zAVX@sJJQV%Ij(Sv@NFt86xF*hGqom0zolI{mM5{1(5?`}oWR#(_dhQw(|gIs;u=uE zzUHK-Zia7-Y19H{h!@*1=XWkpSB|yQ(ipy4pgy_>7j!jMSI5L-hS@~R#Lf#e(WZ-86 z&??ZgacB)3kAjcHDy@K?M7DF%k26&tN%jyww4a=e+0?k>Xm9ircBBO(fYr>|U4g<= zTK?nUb zoXuM*RV)~?bCK#$#FWB4V9hyhKS!dhVwkL0Xr#e7d$UY3dD-M?5d+L30&6Bm>}S@5 zoQ!Xw2G;W^vX+pA(UHpC3d~W)=fa!E_#EM z*HDPTSXGJui!7XmT_kCJTLV2B*XuOw!A;i8+l}ccvov$r9GH;qYv`v>YXnyg`8A0` zP`FO4@`%6{WcPEat_{Dz78k@Z=VRek=UBFx%<8P~UsopTA#aW+K)M6S#0iDV?NXs; zlDB*nT*w6zJ2k(pz1s;pj))rPz=bKUlp^-qlZJMG!vqI z2su=}XHnB(Tf=oZUZ8rN%Y>wO0Uy5UKEK%iu@u&TGQsYZr-LFxr?EPOj(bU#Deb~xw- z@uD_(otfU-XQiY+tM0#p&MyGsZ^!=V zfBUx0XpsD!b|u6~=?q0mRDe-t z<%%MLH1%+xQ~|3mv(+zxuxyg=Bdg&lKyx|)Cy;vp57j$W4hb?o`0iZxXH_hEm^`t&&!O`!C2*L%m z-!2eV4S4oT37kH$ZSOg6hF`j2@$t4U+qDKOGGX{4o}bq1F_3@UeH0Vag$`EzcDoFh z%Rf}l+1~5UXY)01g673$v?;L3PS1WQ0sCSz2uLiz@1r7r9*%f9D)OK7-w%%bUCy6? z`O8s?-$eU7^Rt{k4_5r0`A<0XWlQ`f-RBhg%=~wR{qF+)Y}vk`roX8f<}U%iG1R}a z{#hx%^mKod*0ZF4zxe;^@cv!OpXvUks{Tzx&qAN2IQ_lG{=0-fGvP~F@S8FS|D#Cw zJL8`L`Xy2RrXHd{qszb3=HJ=>3{)>s{5P4t{)7GBG5zn{e};qqv|I+sAKb?OKeYW_ lz@NVPp8`IT0s#L<3{jGUd3Iv}0P*?ie9lR9&jl6$@IU{`p56ce literal 0 HcmV?d00001 diff --git a/docs/quick_start.md b/docs/quick_start.md new file mode 100644 index 0000000..fbaa56a --- /dev/null +++ b/docs/quick_start.md @@ -0,0 +1,142 @@ +# Основные понятия + +Для того чтобы составить варианты, вам сперва нужно: 1) написать все задачи/генераторы задач, 2) составить из них пул задач и 3) описать структуру варианта. Разберём по пунктам: + +1.1 Задача - это основной строительный блок варианта. В `QuizGen` задача представляет собой класс с тремя значениями. Одно обязательные - это вопрос задачи `question`. И два опциональных -- ответ к задаче `answer` и теги `tags` (про которые позже) + +```{python} +from modules.task import QTask +from modules.tag import Tags + +task = QTask( + question="Посчитайте дисперсию для следующего ряда: 5, 6, 7, 8, 9", + answer="2", # можно опустить или не давать ответ: answer = None + tags=Tags( + ("тема", "дисперсия"), + ("сложность", "лёгкая"), + ... + ) # теги можно определять любые. Первое значение - это категория, второе - это значение в этой категории. +) +``` + +1.2 Генератор задач - это класс, с функцией generate(), которая при вызове генерирует задачу `QTask`: + +```{python} +from moduels.task.factory.default import QTaskFactoryDefault +from modules.task import QTask +from modules.tag import Tags + +#Сначала определим функцию, которая будет использоваться для генерации задач +def task_generator_function(): + # генерируем два случайных целых числа от 1 до 9 + alpha = random.randint(1, 9) + beta = random.randint(1, 9) + + # Используем сгенерированные числа, чтобы составить задачу + question = f"Чему равна дисперсия величины V({alpha} * X + {beta} * Y), если X и Y подчинены стандартному нормальному закону распределения и независимы друг от друга?" + answer = f"{alpha ** 2 + beta ** 2}" + + return QTask( + question, + answer, + ) + +# С её помощью создадим генератор задач +variance_task_factory = QTaskFactoryDefault(task_generator_function) + +# Получаем генератор, который умеет производит задачи с разными числами, каждый раз, когда мы вызываем фукнцию generate(): + +variance_task_factory.generate() # => Чему равна дисперсия величины V(3 * X + 5 * Y), если X и Y подчинены стандартному нормальному закону распределения и независимы друг от друга? Ответ: 34 + +variance_task_factory.generate() # => Чему равна дисперсия величины V(6 * X + 2 * Y), если X и Y подчинены стандартному нормальному закону распределения и независимы друг от друга? Ответ: 40 +``` + +2. Пул задач. Пул - это массив задач и генераторов задач, из которых составляются варианты. + +```{python} +from modules.variant_builder.task_pool import QTaskPool +from modules.task import QTask + +tasks = [ + QTask( + question="Текст задачи 1" + ), + QTask( + question="Текст задачи 2" + ), + QTask( + question="Текст задачи 3" + ), + variance_task_factory # каждый раз, когда в вариант отбирается генератор, он генерирует для этого варианта новую задачу с уникальными значениями +] + +# Инициируем пул задач +task_pool = QTaskPool(tasks) +``` + +3. Описание структуры варианта. Для описания структуры варианта используется специальный класс `VariantFactory`. Чтобы его создать, из скольки задач будут состоять варианты, пул задач из которых подбираются задачи и (опционально) правило отбора задач. Если последнее не указать, то будет использоваться правило, которые старается минимизировать число пересечений между любыми двумя вариантами и по возможности равномерно распределить задачи. + +Чтобы понять, как определяется структура варианта, рассмотрим простой пример. Допустим, мы хотим сделать вариант, состоящий из трёх задач и у каждой задачи есть две вариации. + +```{python} +from modules.variant_builder import VariantFactory + +# Сначала создадим пул задач +task_pool = QTaskPool([ + # Задача 1 + QTask( + question="1.1" + tags=Tag("order", "first") # Тег, чтобы отличать первую задачу от второй и третий + ), + QTask( + question="1.2" + tags=Tag("order", "first") + ), + + # Задача 2 + QTask( + question="2.1" + tags=Tag("order", "second") + ), + QTask( + question="2.2" + tags=Tag("order", "second") + ), + + # Задача 3 + QTask( + question="3.1" + tags=Tag("order", "third") + ), + QTask( + question="3.2" + tags=Tag("order", "third") + ), +]) + +# Инициируем генератор вариантов +vf = VariantFactory(number_of_tasks=3, task_pool = task_pool) + +# Теперь самое главное - укажем, что первая задача в варианте должна быть задачей один, вторая - задачей два, а третья - задачей три +vf.task[0].must.include_tag("order", "first") # первая задача должна быть задачей с пометкой order = first +vf.task[1].must.include_tag("order", "second") # вторая задача должна быть задачей с пометкой order = second +vf.task[2].must.include_tag("order", "third") # первая задача должна быть задачей с пометкой order = third + +# доступные методы include_all_tags() - должна включать все теги из списка, include_any_tag() - должна включать хотя один тег из списка, be_one_of() - должна быть одной из задач или должна быть сгенерирована определённым генератором, not(lambda b: b.must...) - логическое отрицание, or(lambda b: b.must..., lambda b: b.must...) - логическое или. + +# Сгенерируем 10 вариантов: +variants = vf.generate_variants(number_of_variants=10) # можем указать любое число +``` + +Генератор вариантов сгенерирует 10 вариантов так, чтобы они были максимально уникальны относительно друг друга. Варианты, которые составляет `VariantFactory` представлены классом `QVariant`, который есть просто собрание задач и по сути представляет собой обычный массив: + +```{python} +first_variant = variants[0] # первый вариант +first_task_of_first_variant = first_variant[0] # первая задача первого варианта + +print(first_task_of_first_variant.question) # => 1.2 +``` + + + + diff --git a/modules/tag/__init__.py b/modules/tag/__init__.py index 63e7e17..9ce1cb8 100644 --- a/modules/tag/__init__.py +++ b/modules/tag/__init__.py @@ -1,6 +1,7 @@ from collections.abc import Iterable from dataclasses import dataclass, field from enum import Enum +from itertools import chain from typing import Generic, overload, override from modules.utils.types import C, V @@ -29,12 +30,37 @@ class Tags(Generic[C, V]): _dict: dict[C, set[V]] - def __init__(self, iter: Iterable[Tag[C, V]] | None = None): + @overload + def __init__( + self, iter: Iterable[Tag[C, V] | tuple[C, V]] | None = None + ) -> None: ... + + @overload + def __init__( + self, + iter: Tag[C, V] | tuple[C, V] | None = None, + **kwargs: Tag[C, V] | tuple[C, V], + ) -> None: ... + + def __init__( + self, + iter: Iterable[Tag[C, V] | tuple[C, V]] | Tag[C, V] | tuple[C, V] | None = None, + **kwargs: Tag[C, V] | tuple[C, V], + ) -> None: self._dict = {} - if iter: + if isinstance(iter, Iterable) and not isinstance(iter, tuple): for tag in iter: - self._dict.setdefault(tag.cat, set()).add(tag.val) + if isinstance(tag, Tag): + self._dict.setdefault(tag.cat, set()).add(tag.val) + else: + self._dict.setdefault(tag[0], set()).add(tag[1]) + else: + for tag in chain([iter], kwargs.values()): + if isinstance(iter, Tag): + self._dict.setdefault(tag.cat, set()).add(tag.val) + elif isinstance(iter, tuple): + self._dict.setdefault(tag[0], set()).add(tag[1]) @overload def has_tag(self, category: C, value: V) -> bool: ... diff --git a/modules/task/factory/__init__.py b/modules/task/factory/__init__.py index edd97cf..7b1e6d2 100644 --- a/modules/task/factory/__init__.py +++ b/modules/task/factory/__init__.py @@ -1,6 +1,6 @@ import uuid from abc import ABC, abstractmethod -from typing import Generic, runtime_checkable +from typing import Callable, Generic from option import Option diff --git a/modules/task/factory/default.py b/modules/task/factory/default.py new file mode 100644 index 0000000..4fd7569 --- /dev/null +++ b/modules/task/factory/default.py @@ -0,0 +1,31 @@ +from typing import Callable, override + +from modules.tag import Tags +from modules.task import QTask +from modules.task.factory import QTaskFactory +from modules.utils.types import A, C, Q, V + + +class QTaskFactoryDefault(QTaskFactory[C, V, Q, A]): + _generator: Callable[[], QTask[C, V, Q, A]] + + def __init__(self, generator: Callable[[], QTask[C, V, Q, A]]): + self._generator = generator + + @override + def generate(self) -> QTask[C, V, Q, A]: + return self._generator() + + +def task_generator_function(): + alpha = random.randint(1, 9) + beta = random.randint(1, 9) + + question = f"Чему равна дисперсия величины V({alpha} * X + {beta} * Y), если X и Y подчинены стандартному нормальному закону распределения и независимы друг от друга?" + answer = f"{alpha ** 2 + beta ** 2}" + tags = Tags(("тема", "дисперсия"), ("сложность", "лёгкая")) + + return QTask(question, answer, tags) + + +factory = QTaskFactoryDefault(task_generator_function) diff --git a/modules/variant_builder/__init__.py b/modules/variant_builder/__init__.py index 1b3dce2..a66f18c 100644 --- a/modules/variant_builder/__init__.py +++ b/modules/variant_builder/__init__.py @@ -1,3 +1,4 @@ +from collections.abc import Iterable from typing import Generic from modules.task import QTask @@ -22,12 +23,12 @@ class VariantFactory(Generic[C, V, Q, A]): def __init__( self, number_of_tasks: int, - task_pool: QTaskPool[C, V, Q, A], + task_pool: Iterable[QTask[C, V, Q, A]], task_selector: QTaskSelector[C, V, Q, A] | None = None, ): self.task = [VariantTask() for _ in range(number_of_tasks)] self.number_of_tasks = number_of_tasks - self.task_pool = task_pool + self.task_pool = QTaskPool[C, V, Q, A](task_pool) self.task_selector = ( task_selector if task_selector is not None else LeastUsedTaskSelector() ) diff --git a/modules/variant_builder/__pycache__/__init__.cpython-313.pyc b/modules/variant_builder/__pycache__/__init__.cpython-313.pyc index 13eb2fcea845544638e5a360c5427b6ebea2015f..a578e357fbb533fa73e6ac9307ae433d92244a7e 100644 GIT binary patch delta 1225 zcmZ`&&u`Oa81@%Cj?>tQlQd171e$hbX{ZR|M-fawX|=LZCZ;M1ms&(lWN zoO(jy1XM4Ykl+wdkt)OmaX{)WJM0gjaI>~QpyGnGe_-GHnIM6L504%_@9)>|cc;2L zul=WK69W4Nw-Yxuw={$Ny;ZGdD?&qPNSEcc7>%tdR9TDDEo)60gKZZ z0;Z?fDU}g08^tDRoA1J;!pk_S&&FmO$Dia`+VIJQM= zDm{SGEWB2(kb@w{+hiJg@zZ4P)zi2aNrV~DB?lF?m^sX7EfxlyM)@H8q<%{Z;HeAp zGzwMNR_kOH-l@A}3GQmoNC{3Rzsd7RIgDIJ$0dXnaFgXJT$_j6sql~TMDs989wkk9 zll-~JSIUjJUo z`V?OQ#rHrf2&WJ^x&ZuGR7|X{TlRK85{M!uSzAc;i`Q2w2SXK+}iW^2629 z%xHaw>>L{%-YXy3%hut6{{9A!Lfmv5T`DoJK>fY{ z%T34j>b~Xu#ybtNW9g>fbC_W`u)Xlq`1$e6i^E_W%F@ delta 1068 zcmZ8fOK1~O6rGpMFP}-$Nt$1qezj=~Z7FTFh=!`ALWQawD`E%JX^d%ToP;-1u`6A6 zX}Jhph*ZRlh$7uc5u~{3)`cMB#%*y^5yXw)+!yQb!5r>8=iWQ_^S1lfvdULQ@pJCk zcrPuTTvt-$)p|A?offG$Em3J&rg9gjaTqpFANLb zYvdWc@s`G~bk%q)6wjP@QAV8OYGRY&xC%EPIIzcl8K}cUK6zYn1ZtR-GL5(jO&}x@ zVh9*U<1XX`hqubL8-HnW@CgkOMQaxB2zl>^R1fS3L!@Qvi}2JVr!g!-6Yy9bh~R3P zDcjIW!Y8?##KGgsr+i4Xy5I<W0SBm?(-i=+d-`^HJ{*0A651ezJp zB?d2oX*K7XIjI?R4CxGf4EB)(c$B=@fkYpSD1&4Y7L{#MfK2EKNyFPvZ-PaN&BzIK zEFheMAEEX*PQt(jl-Ru3sBjRJ^_+y=@X;j&?-)$YK6>!wvK(lAOm02)G_uT?FZZNu?aO`CS2f@`Be1l%<3Ltrz_!g3^& zI*WH!p^6p)X0=Rs6j=>rHZE?G&EZXB&Kjl+;_zM_#nbHXDm`2)vsD-idyCSBO~5<=ixbb?3MpRYRMAOHXW diff --git a/modules/variant_builder/__pycache__/default_task_selector.cpython-313.pyc b/modules/variant_builder/__pycache__/default_task_selector.cpython-313.pyc index 7867403720dc87fd4b8669c432185e89b28ec039..40aa3c1ad7bf9469cc1fa3ca772f5cc1132b9495 100644 GIT binary patch delta 839 zcmZuuO-vI(6rSmJxBJs>3$!Vy;YVVcg@Bp>#t0e@V%!Q5s$OieR=U8(cEOoxV!3c2 z+$ED3&mIhVk;Ft#Bpf+HjK-{K@Zy1!MD)bPdD~z@!W_PQ^WOKq_ukCA?5B)*m`LbI zoL{TP{QKCN*^XbV<$9O9Q2`aAdD&Ko5^^~ovsI$n8qsW>=(a(OFs|g|c7h~A9?P3{ zk|aZ}=2LbHY3WAo=sYTDXHY>ewiLCZQPhj-P*fHzhb3r?5NVymmaz|X(!zn{`Lo=_ z*Z4#H703BNCrt0}lwe;NaeC87B&M|s7t(G5WfJVVLTJb0&@Sr3HpaG}=3V;D{NkEWs9Lh?}n{i5v5${Qj zxzusqA`;rBL1!LAoPX3ToZ~;Vj%-fu`ZhYg^=!Lmdur$2)Yj7O==6b<<0(D8EOLhu zQq04MU`-?Nu-eEKXc?`R*gS!M4ir{j^!&Nz%<<|%xmI!MAiPO9d(d_qsxhx367@xw zHa7^j3KxRaP6&0O4E5qSHuVeG;D*uf$Azr9${4W!>jmm)v&nUGOC;bQ=~V#-62|yD zG8!n|KxcoV&OOxk8TB<#Zv%}q(2YOJAntlKvEH*jwShM-ulMbq8~%$#EVTXywDG;& delta 951 zcmYjPO-vI(6n@k0ZoA!|Qu@n}(9#%a2@rynM5;s&nrx9!Dv1eANQDZGrIgtv5iT5z z2}j7pgp&skrWy|<9z1yAs5b~E>SBS52fRp9OuUddvrW}KeDl5cX5P&A?R)2c9aL+I z;sW{&T{spVJGayjdb8CXUDtTbham$QE+uFV?65eWa%v(LEiR;7nuH}y#0!)fst@wIF*BPh%@yWyMxKO);MT_xmzchn(;rPNEfonu zUy(`<(H-O^QQK4GA+Ky2I(mCl8m3BF9`G+rU{tl<%$w3a#Y$K0h~(ZS=q?yYy6` z5L2*Bp7Ud#V!mYZWn3s3rhTnY#$NK14}=4B3vOf3PQjE6s(D7AUBY=CQ}2Kb3r|px zycc4EkA`}l{19G7&O1PMZ|I-hJ^SvS11VNXA4vV*WY1o6_b0jMWGF$NIbH~@tgWA1 zcg_uj7-i2fxne;#u!F@S1L_B0HZ_=ehZP11vgf?yvyL+tF!Rd-l^`*O;-pt>S&#Fb zUy`?Xmp?>4r1vJ$yKDQ&$um36o`~wk@@8Z+y^S{3_Qlp3Pm?t}2x`qn8MgYemaz~{ z(#7N!bH)N@Gh%WEodwLX`Hxuli%WHf$1|NQZkp_E)~?Ox7>CfyZcp z{aJmK!kHZ*bO=%ve8+IL3T@w^;~3%x5U)bC$}+=M7(EvTQRnvEN~DtBK|6z$_ max_intersections: min_max_intersections = max_intersections - if len(ctx.current_variant_tasks) == 6: - print(min_max_intersections) - best_candidates: list[QTask[C, V, Q, A]] = [] for task, score in zip(filtered_tasks, task_scores): diff --git a/parserd.xlsx b/parserd.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..96629ca292e47ca85de5c0a47104fbf62f63d8ab GIT binary patch literal 12925 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.1.0,<3.0.0)", - "pytest (>=8.3.5,<9.0.0)" + "pytest (>=8.3.5,<9.0.0)", + "openpyxl (>=3.1.5,<4.0.0)" ] diff --git a/samples/clean.xlsx b/samples/clean.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..39e2d5b71cc1a849cdabc581f3a0b23b3d4f70c2 GIT binary patch literal 9166 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 R3WS%#_hq@|CVTz&{{WrGRxbbm literal 0 HcmV?d00001 diff --git a/samples/Варианты ДКР2 2023 2024 2025.xlsx b/samples/Варианты ДКР2 2023 2024 2025.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f6d3fadcd583eff5de93de0c9af7f11538bc7d50 GIT binary patch literal 44982 zcmeEt19NUmv~6tLw(acLwr%g&){br4wr$&Xc5LV6oO@r@efkCWt*TyKU)8FwXV0EJ z#+VIxDPRy305AXu0000&0K%QQjU7M$fO$v&0Av6NAT1#~TPG7+Cp~5N-zJVabZ$1* z1o5#%W~A(|EIfZijK(Hb zBtF7P)`6k8CRD&5lsE%Sa;zIrTIS!VNG`InKtbd8-i}U=h$4Oux4}r#FX9|tnm=e* zUPIs8QQ`oof!_ZZckfLOcD&%k5U~JJepUr6L;Xtz=Ta&p@$Vh z#~><&vI4NQM$9)Det{6Sh6&!B!0g+1FVs>46(ciH&+uEZ{sb6^7o)Qux_wsYst*MQ zp?x$6sH)BB+?i93?c$r1axUstrBz|_p+W2Pq!;~ zfrq=!erXdfRALyqAtdMQ879QKHNHFbU2%Y-0ef6KuOC78Bz$GNKD)*j`>166S@GC= z+=1Gn15Q{F{3fCdb(5YcTA{XI=pz)^pYYxk3Y#Y8*11wE zwy@`(C(LB{t|S+q!Sem#l)jixLmhQAG+V3o8nq^Te8o~xGUv3YHOzM4B68O=w(h+b z&gen@^rDr`991M@L3&}D5gQ@Ree~6AWVxNlavx-e9HtqT z!-4<+r2mj7{Euhctm$3t9IOoO?5zGF&Po+6s{>IKANmJA7?0D8e9SGH3VXDPcnbmz z!DSguh@dc*Xb~rSv4d4Ynv170yAGYVWySShk45rO{x)aF?2+FJGo#6lTHzU0ab_&c zCtmki%sV(XztWB{xy(8xC-Mv8U@Hk#2TkJ9N^mdl1@xX-lp!@qSg4_w=jhanc-P)u z3Z^W^W@N|jU;z0QoEzg1jCL5x-3A>rZ4!-Cd&g@JIZ+u7OGH_ZBgvNjFvgjMgwOWpIjH^tg)qZJHGoQe^(#K9qu;@<7vf8w1!%s!Xx+m{nhGW<58u7ZV(r1z1J#NqVxWb=6_#h(dpeQ+ya8M4LajkhLZT zwG@IVJ8~qta;>fg#OxkZHT;rx)E0J9?(fE#?)1XUz9ArQfy&wW)e`b0JXB(qJqLlY3@*;;wtaaK6@4dsg|6=V;>=LfOyxMl*-0T){}}5O?=KeTWEU zuh-#ld+p0q(L zsSX9kiK>dxjKeJ2&Z+E` z;?B)eWdGD*KD4(-bVS=GG?#dGxs*O@W}7?*%trlDOJKCEE1O`bE%#JjR0C(Z;%`y| z)iha|M|fU>^Wr9?O7(0`{u(QLLCN&n9}nAfVA?qVnN(}uZCTIl4r*bK-3fFOC;@17 z@JsJ-sI}r{H5g=x*gG$;Mib4@Z>XYKmA+8UzuH?ajHNR?u!U~1!4*R*oUqDhH`6NK zZV+O2&{V(xjgAk0t9<0UqB_x`=qj=H(gB@8WC1x zdzA?2%ctzF=kcAf$NcA)krmc6{4&c0?-uSwwM7RqY&87)Uo2PGz}k*(Z&%-*_alP0 z{Iz~JJ3(~t>UGUxQR0Lu-ydA~KanG1?MaOP2UCnd0RXT7AOL@m<3AYozv9RLWLv-= z_5JhhfA6O=aYA;00YT(h{6pxFH;sgrHkVAtFSb4S4ltS7y)+EheUjKWMuO0$d{-qg zst9x9IXkVcYt3gV>DfPBlGF(84e(wbDk+&MW^Lo^^*GwyxK-M{h-A1@#Bk&A&GJ3~ zmHi0;)kG*;B@U&bKlK>UPuQQ8T#uFFQnuJ>Dhk#a4i+6en^;(&7RbB0FW$enMarny zwd`@HCCa&bwpuC=wQTZ5a4EOG5{0jP5366F0w#)9PNHJKIhxFLB-Q7>o79-Ww)({v=ddG!bNhA9c?!j0Wbe>igt@<=iOi=~lvr<2VZrDgbidm0D z&Rd{g-%6?%@c%9TbSV$bUQmA`$_@Yk!LF|F>fNhr%)wH=@@W5JIl0 zA8~1R5|}lR5LI!4+7(r*#+$p?ra@@-Ihv*{D!M(%A!{p7K{YAC$)CKwzQ?3PV!$=x zam|U9lN5GtDg47Lw3RC&zueNE!4feh$}^M710wPIW=G~u7AVtn}TnNu=0sI#-jVl^cl*-|#}Hp!y7oUsMH6xc`L2 zYb@F==d+ou6ZS-;ST&2)nDMG1nQcu5pNO%)74B+cs;GxjpSjH2>X6yqO_v-#V^Q@aHQ;|C3)t0&N9*@|S(@!4bW4c@2iWPlpXM-<;n*kwxhZ#%s) z$PFhL?}7&QII&EEF6$nIn^Q1xJuRg82yV^Q(q85OJsn$0(`eD*PnSykR6Xiy?=xX6(oWKZpK6FI@u zuDndOHraw}b*qxMM6Fy^ugXu{X3(v-DZq8wFIN7#^=3J2KHk;Zj+cWwz47I>{FlWsoKM8?u6-7xVYTX%Tj5Yl_v2f>W$PXPC!W5)|9w^JY(!(TBYmP8 zWyb@|v6OX}!g~5e+S0lYFO#gT0E95>f=5IFZ~UG5`i!5Va#G)m%tkCebf85Vnxld4gxa)U8pUK>9u=?^a z*%*qLs8OS*+d(|#^21`61yRAOkBpT%Z|byv z)uP*?8ZK&VE3!6Iv8C+sdO6tYspfkdny&uaxfiVC(PV3I)PBx+1(biiG{15~0BBr( zPV`G+-6?@>t5~LHp_tubfzYO1D#J%r#*%l-YD|8C_mI72OHOxaB7*JLU6a?6qrNV{ zjMzC4tg51^b5B#E|8!JhANHE0Mu9V&;&T6AIHvE3caNn$EjT8*>>9Njn3~cZq7OFb z5$rWYynWU2T|!+cOrAk(Rsx3$Z zY;3e`5}F)t`=~}_!&Pl#8vf?@`m}5oEwtkah+*Rfw62^orgOmd^WZ*1 zGWV@uKfSP7f8et5NMOUASLsobIp^(Iny^u_A^mPu5r3+jQ~!9ot(lws)$i~Eh)a%T zp=sp6gIGDE)aXsC-;iA zOFMDrcH+6g)AwA;V9?bw7zK0%T_}15DW2*n`9A`mY!+E{4 zohETGwJdD=%E-v1Y``W9tcy1o&ZcP{@#A*(Im0Oj&a@E5KG;vn`&q=bHS&`l$G76A(38@INe!y(C$`RFhgA&Ax=ZbIb*>BhjMQv z`MABGeLep~@zqXGXRB4t&QurS*TCyDy8rU!z0mtqqsuvHRY{fX+`3JE8LypLOhJq2!LWC8|tJvI)7K= z8k&HoW;Rlpgfqc$Yo10`E)kQ{frR}?(@_FE7NHGG#-ai=^aynGdb?Pazc!~(@w+s+{GDJ z)$aut9mAb!#E52=#Da$|e}aLUFh&wfJtAF@y4$`S{Z%i=V?Zls5&0Q6;_h6U zMxOlAFAbdIF8^!DXtG9$=noHV9#Or0omBMLm)b7xKKYf-i~;o|38J)EFvjf>|7oeU8$aq)8WyZGnkn_m9tYBL7^5i)3AzXi1~5toQqD-4^3YfZf<^7u zw^NO4hjs?8t^0Y@H5@9Sd;N?B_1JgxGn}^#f|*&3v4pMzSUyVwJC2(dk)1R^^19cR zGgR&Xi-b$Zj}m4MWvI@iYz*loU_*x0#v+5d&5S7VrpTfS)IO(nBRChQDT=HjKXsb~ zp(TLzV}7*f41f7?cR{5Nqu7rr7KZI?{^n7A&Gq=_zRw7l;x7>}YWI*n0bQjnBKrb& zFEx(Ic0O0c-|4)`HOoj^;+5FdNJBE0o?@%}Lf*jCs-&BF9+X z7C>hhMO&7A zu)1yGo1<4 zp;1MPOkb&M6nzj*vR^@}HZRKu56B}}x~T&iKZ-cQej;n~RetxrO&q6J_?4vny=Avw z`Z!)?Lxb-Kc2Z(}^!_|{Dv(iO7%K(MlIlt zNB4q^M_Vg9#FPViBfn6-lfH^NJW`JVlxu8FujvMIs57vPvk+K0(}jbA@57abNgV@u<$D>US`qoPC9a`SF9>NADo_fB&>&2 zA7S1U<4l!k9j5ShA(AL$luq)hi$xDrc0rz?+~9$kF@!-Z?z{uDnnNUOSaXi|-?h|W z)IK1Gfvl32OkL@~sI}l9p3Dy!oId9)B<*^sEV{RW;gIS*?x7vEe-84qQ9ipjpjt7w z$p8*S0Ummpz=<7*9HSjb2umR#tBFALa1g3Vd0`y&irRAhtWt#%N zjqL58*Kh@@uMvt!0jhO>TF(UFG|pBsEzvS3Y(=}>6X)tUib*2`(NbMo?tFC?)2k;C zs(WUd10MXKpF!e`LD{VJ6_n-mQ2ZSMjX3{okrV*V5yO~-+EjwAL>D8oQ=#3F{)S=9 zs8Lra>R=8qVB?CSjFT}S{lH(oxE+Ieh+E@VU!3Z_ zid;UasyR~6>fL(bJOP{t#7HX#%ovXj%y^~OT+Gr34yiS6si8sc$t6%Gd)z3~!P}x> z0QT4TVDxHLwn&hQ=BDP3fhW3yEEUidafU(IhUuZ-F=m5i9Q9*YN;Ks4k_OL(N#c^d ze=)VT?cxNuh)H+$0vD6rKDB@4yoCqA`z`raKSrg0AAv`N zCjlEUSo;zecp53LP4TIX+Mqx(rQ}k18!19$1rbdb^y*P6UhDdPL>`xqX*xhU%FKaS zT0@lQPxsh>=0^xEbc36|_aBC&Kp`>X6nqroVecT+)Ts#x3Caf-qi3K?TTJ;of<~T4 zf_;D@Bq3$_H|qdEGkd}hjqZidEd{AuhsLow+6&s3^%N4<9g}b;N{lPiKor)S?sV3I z#JK?_PHa(1=x{T*7ET?ss;6G~5*-Mh)CS^JZP^~+@k>Z$Cqi{ys=fHmQ{ms=L`E@Q zWiGU7G+9n(R>qaF0|mQgjZniIN*R7qy*?&dz4twMb=K8t*w5$``Z!AzVL z8fwl(`Gv+TEyHhHJT<&+x1(`4jUPlmOARfqCag&Zqqxp`Gj(mE^|KofI^e8@dY#)0 z7*^L)1Xk*u7^vS)6=3~NZFx;IP_+8PfXTQ|OVL3CCC7b598Sf;oVq{_V5~khp(Eb5 zO(x_wafbzfNuL63TLeEN9%!Evb==U-GZ=SziP50aB(=&mWvyasWa??BxGfXkChpGD z$nVPZ?&y&~J|(&7+wl34epsj0dhF2dhsid?>c4&#Fb~UKrWf=l?cu&`a3YS=9WWp50 zTC={4T9;rCD1M|<#RAJF5dS55{P)<4*F<9^chrK^u}%DD51wgSBMw_zL^&C7iLSwV z^8yDiej^wBj2Ku8n$o3KOV+rWT5Io|PSpLSR4wk@RZ8`C5!u_amD$s;B z1x!U24AzD(#c;6+C0E#^RI8Oc78rw9jNsX#@!_p<>+YBpDs)^{nRRQA6XAJ9ae9df z1s?+1Z0uXT*tbvlt%u+_=0FyUTNai)O^a+sh3>Jk{_=&NFm^Nc7|pxUt-sF%ig?|G~_}sLIqUz?SHGmwfA6vfnZqO}A~n zJjPFv_jpM+*z$QeCF1C49csul(Q(f&I$1w>R_+#y!j4emU#_VO3gmzCfnOQo5x|7 z8zV%>9Ucq@C(gc|@Bd?={NH6G>-d?UwO*KEJ<@UDSw5*Ww5FuuC>ieG7{B*0G+QE0 z)A!r44$kZ&pdcI?a6d0*zT&e1tycLL9`b(+Nu@;^rj_iN_{*C(l&E^ts4~4g*ULVv zYsCn5MJLAm!3gV=o|L{YF*G%#Z_qd0GkT(01V?p8xloy;|7BW|+<7uTV4b-A_J_O3 zRf+ed%{UvanwC~$CEfJo#`=%7R>YSL*D>SVNHEd}$^3{hkBb5?3@k*uOYB%c7srEQ z;`LJAkN}keo6o#QAFccbPEJ^$*-T&u7;3$Of6m%*e*(Icx{r>3(x_ z^8?8B15AjBOjH107FMZ@{Z@WkGeo#L|Of^t;{5B3OP1jn?sQtrand$)F; zAe9Db0PGXz4(AT(LPp?drCBjcihE@3B~iqYG8vEF$mz)Qk$xnNjd*sf^f8U7Sn=G{ z#X;zqZh6%oYMfvTr-V29C?{?0LDw%ax@(Zu>>em+CiJ`DMY`c zGPATYK3rOHW_@rWcb|h&0!1<+@Y`budbPnP~*y-=&%1s^3LB{Q}{V@XY~q*%p=JlrG9_E-_uf+NeG z?0fBSX{rK$mR1H88Kjw^&f_rHNq|{)Y z8ab3M^U6(|UyQ`(eAm2HmOgLo5Ll`0(de`PH)VU##Qd>4l-Q z)y{nn2eO-?!Y|93BkcCVcD3M&+E~h>g}Ts_*zzW4&{Yi>Am}=VX=NN03q*T@1y3#( z@f1OLHeY*I$JD4luGjubY=V4mRx3F#_%9IBsACm_-4g#vJ?u3Oi=eUPfjtdS)v|vp z{&f0j062hI6Br?bR%iFL?b}nRUSx`kCIMSGNuJ@HenA!ys$z`#__VQda&mnjx5Ky9 z^LZch?fG~z<2tleVfX!h_H1{oXQz4Dp{Cc9;roc)HN90a^ZoYp8S|aS_x-d}(%+%> zO}C!&tLOER@8HBPC&!n)*R)`(t;6?yO_imd_0vnu9#Cx9f>rY&`FuU-Kz_?3L=O38;;4eT401pkL-t z)01E|--oWGPGjpS0x8yBn2T+XCN~b;dSE*B&nB~^;N(i7kEgEaUP30$>!&sy*Q0t= z!XlcNEI_{sh?-mkU!ubw)*<(Vs1&U&QGOK>Es;@1+KG%`)`&W981`o*F{a*B$qu0W zYG|Y;-c~B_j%H|4F(iZpJsI!1cTz&?uK#qeVd-{IIk*T(@8#Dvw2ygKS|H_yjy?c z(Vgy;_fMCF2tZQG@{#|{^Ih-! zHkfm7xcE4@{7b)Vi@^f6UlSt>@R(IwI)N7XA{KfM%c6BS2FWez_}3XbU4uFmu2LTx z6uES1*H+J zR;8fPL4^f-W=6nQDl{~$zG{UzE8Jj7NQLoZEIeRl+^nBOJMoIrV^3=9iEZVF`hm3U_XH^`{np=315zH*UwzOPszDf-D0mu z7WpuBQN6;!cG;onKyM&?_Nj0Y(?(Rlr&voshB~Kiubr%7m4_d8D)5(|Y6d|9j=>h@ z232Ou!+wTayt6v*t#{6yHh&wonG<;{01P|TP>JJ_^tEs<#Y9 zFT*V1I}fAyBt@-GcizFk|D!xD->TymQ*7-KHVx^+vOH1sI;ZM>EVfB#FW47DD}Rk> z;N?T3nY(QS%FL+yKcXcJ@dFmB2IUdq`DfK|Y{KT`sjGT8EFCqm;*$U?KCG9dk+L zWGN=Q05v_Kz`Vnw0w7r|qzKx=$8Zy~ejL)<;R%jJ6G}JKX8_iZ2ZH=4&Wm@%5nqu3 zf+{o6kOfvOD#FY#{oBH%+vISLAT zDxRFyPUl$`5Ep|0jMje&UB^Wf+$i6y*iX6Fhzy z=M4-TD2x_goiS$duR=bt`(mmTyrl>;qpY(O8RyBevTOPM zq;qXLtOV5KkA}~HN6=>alL^|q=_E2Rf zcct=EgyO`V6`g%wb|OQnZ~gEz6S* zi* z8r7)#;3BrCP)st?gG2cghKE52bY+XLBgPQ`XjlQF5%QD7b|* zlPgPEiy1EV3RFPLX-8vTGUXLjn`vFWsBvyjMb_l?HwLKi@E(Za+~Fo}@q!7{_7}!? zB|_QEo>Z01F1xcq8th@C$x@Xe%rIdbdKP+fpkOeIbBxtOvnUA2FC+?>s^z)(LGxTL z$)6HVVUlR;zjT87k5j-Z!k@o;eK-XL;T38V3TSX=_w$aQ40Lr%zf&jci3JprH8auo z;)!1pw;UNV2&`m_Q^j~mMaC&9&@%jGi$og6$LqIYMH#-kW|7y}l_kh~`&CwO>8c+) zGl(nSVkEi+Lmw|HoOL)Ei>-^oRh0Q*2wQuHg*>I&BsM*i`tsPkt7 z#%?NtPB&Fr_|z{C_PlTk&gFoc1aR3v;_)mXD?5+MKjPp7^?o{{e~8ac5zs7P0SAI5UVs{?$5d`& z9?QjeOkR>S5t|EOP6ELiM3QP@C@J%>8UPC?8jtm)h}3AX(n2PHK0YNd!w@f&LE}fW z3NIczu<&Vvs9igvo%Fi|`m{DI1ZrCBpC(!(!UHte%widcZzk;pN;#kv=|w+{3DrJ+ zinOrXubYI0NBY;#0v{$`UtIWltQQ_}RBk+BD!QgwZe&GMuf0`ywur|JW!f6s&NLisfy$try39BbY(dJbooW$aX3|eph-KR!%;xvDtS#=p zF&LbRXV|bZOEqZXIY^MxJL`*SMIhafZk|i@2U=MH*zGYbykGo`v!Jlt@Hau;zBa|c zy~)cOw+~ml4MnzUD?-3GFdd46$p%9fPwoD5M>MpAQjncAEHb*GCPWi;E5eyol|R@l zFg8$_7rSyb?aCoMD_QCVi~R2I3rN(qb_0B_|G^X*u!wy{AJQ&tHLmg6OQ3AFC{4h?>Hl82%nC zl2}8cne4)LNM4l5cS#m>FdespK(*A6V?iZ3miq@pWu%4l5A?Kwor9H-p1FPMl_LFe z5L%ZK`^z_4g8FYge)3bd^z5J16!0zs?tm1A{QNU?(0WoIbL&p0X`(!~6T{Cuo7keg0)o6O6p()+@Q~e(He+HFG z@G|@bbJI%0Di@BU78?xHcOqgHdRlDrualQD_{VvcCh8lyrywNJpvhA&K@K?dVzrTI zMV+0E;gBaX zqT!wR-k_mcEreVcBQ_Q0Le9+=S<%;sbgyggkOK^iA$w1!OM$jdc z5&^`7npu6W<8S}JG1*8ZMql_x_kCv*OvHM1A6!_6*$;BEQqmCL;x@N7jH!Bp`_ZfV zaB$MvN=QKk&3oluNaww;cdEds81r393aRd$d^4y5p13cAzP`idN8nf5UPp%A)u9XE0iK0S}bE=E{{>{^iV1a&uqG1RyFcgQj z;q`gASPM~afJ}V2_o+qNdx9FC2v%8TzLZA>{Dc!V2ZGP>M0-J0rgVdm$Vkw1FiO`f z%Kl@L*rJe@0S23v1f6NlCCfo8S$cox$rBFI4Pph93Ib)?D8XQ5BJJXM;^JhIEYUdrHr#C7aKsPJNJxp~Br73f zOy+9kO;QMWzmW{A3po#fXPo25K;>515UMdL&btYp;S3a}V14Kh;8$QzJ3>50M*Iv% zr8tDT@4NR$O|AB&+>tf-}WFSm8v9oOu@RNc2gMT%{NMNSo zzUM%7q&tG6WT}n?prQJhrVwiDuq_5DEk6(IocyWY4_?-ycabOFgxEJ6^^TKD^Zz?t zVGtd5hGlxS4Z{`zqo5tbNR@?nGSdMdkz>=vgAs-e&0u`Dw?PUa9L#|BeMW8;Nz(mF zvx!B+E^VCThq0gz(8yro0oif~lzuR5Tv}vr_%TzV{}VQn|Gb#ub&TH&B0G;P(xLP@ zich@F5XAIOoavFiNShJJE>6th$|mPSd&nz+#jQZ@;SUQCft_Bx*SH<5+`#ySryaVO*iO~e)7)F8#TH$7!&C25BbA(Ny znhT6F)ry)rU!QUXvMzpsor9TS%=K;SJxM}Xw+RVS;5$elpyw9CzAXRqQm7ET_AJkz z?ae5o*lf;bmQ3~M?}EN6qCgI(c)wXp&53a^AWH$sfrsgnrjscCM4hN%2H{K@JP}kI z*8bB*vPg#$p-&eU(*I&H{D+qP2D%yME)1bX(}fBmX7j0%P3F55_*oM!DE=eTA9^Ix z1(SL9(U9BYS=!WVN>raNj-xK$dDvs%%!&aVH&$GAOfBP@1HU zZzU{@1Qahf8iQ2O=qA7dRyjy}^cBK~2Sc}xb?KankzSQ;-{yYW)cBTTDsEs4$WefdIM zVRtY()y}~Zsi0CpO)T=M`iHdewxm)$gU_|hTMhRGr8x=f4h285 zYFP6QvzGVr>a4oS)xlA%CurYF;haunfl*W0Ysr=MGEaMLC;a(=bG&a2=HE-j%{c3NSv* zlb07}NRnac!&SZnUv^^C6vHP`SjIz0&26PfL@7(J){BlhT+`l~HOl+LIL* z$ErJ!dC*vihIw00${575EHVITi5T<_$cpTxcbZLEj6e5FSwWD|iUZ*Oh&S~FQI6qs z*-ZT@Z5K(=As8#ubdH&E5UY8q&B1`ix$Tx_0!pwf8gXekMm|S`x0OD6cP7aT)_u|t zDu`>x)Kir{D;X7(>KkU%;16!I#G4vMlQe#NXvL7b0?#a2RJYyrf-7e(g^cl@ohYxnWT+wl5$_ zvn)2dI1wZj39q(sn9ogGXPu2xd`>Wwk|i>C1@i>f{T(%jV9>ev`vXY)SZ}QLjm`Os z8!v*jqR32ckColZ8@@!0CPfJAc$^{Wstgh%y9DSK<@e-xEht!yi!B3B*{2r47#)44 zDFlKUEYLS)7zbjHJWz12d;sRusB* zgF`T1{)eL#1d_0b0|5K?! zZb^m9h*YPhA}}k6Z{E-R4y69VB%u-eNUMe|7+izg2Cg$nB#_>0+_rE|Dh>8j#XTc9 zsDAXz_r5;&gmw}JbU|KO_ND^gPQ`G_BNZwu8#%?=&-UWIv-K!~?%gFyn9 zVP7NvBg(dFl@wb4WvdwbGG23)z1uCu0<91T9s1^1G|W_=rC7i@WVA8>tbgS_VV6)P zWOf`RQ6ZVFU=R`e(8oyyBp$_El$8(S%vXMj8R}0{VMQt!2!tck?|eW(d%i~1l2_#W z1`Q$otE**TRE*5}#cUAV&yHY_4G0IrXq!?BL_rS-r+Ka)UWri5XOu5qy96bU$jNC> z|A=I$nKtkfd>#p_l?BrECRK3kCM(A{7aRJy>MfD=rXJxAIFNuG9>7Zu)5ZyT1I;cN z)ME!F68?gIZClA|$m~RvgDPuOvZRX(f)?_IyDo0@o5UaqS-vkn0NIS-B2e-DTb)ncpMPR$uVJ5iKY@8^3{PJm^e2{>Re(pc}8=pfqh%4d37WorbT@(&9gk1V(7n)ih^R zIYPSB)GO4Y(5DJZ4XGl2-O)TSG?GyBi@r2?}$M@}X zPAgSkid)}+u#my(pfYfh8{vhtP}3fSz(k3z#`)`K5o!bS4YmO||8@wEN zH~Hr1kp-#OP6w|{NepvM-S@x0?6Get#h-xL_wV%;Te9iqs+!7K`*7KU&fm<)+~_*H zgqvK@%a*^8mbehi37%#YnxZk6n0Qj>X%DbUz;|l(H9N}fMY|$-e=_Y8qX1APtf%<~ zqqz8f8gsF)zjis_oF4;MnA=@%u5(`xuTwSOn0&tPA0Hi*R%|dEJ3YLVfBUix(sTq8 zWGoW3xVDMh-Y4rkg0**MbyX~w-z<;x9OHV-{?t)p137n?9T-fA{31-k;CCcQv}X%| zN4QNsxw1$_oP8_&0tpYQ;4`pdV(H3c-elR-sCzxF{)5$jpXVKAD0hp1hRKR%<7}0V zR$z3eYS#^vea?~-cX3lCveW~BKbR>`8vGd?ffb@QdBMBd#-3PTp5Ol^!Dx*BXBLvV zyG)^KawtEH5J%JA1wxE9T+ags&BjEj4<2$BxjD2oxl7R{*5q#CQX|mryO2)@j^b;$ zhSOCda&a_VXJ&B+2gSyOR3Ly@1xVB1K*keZ)hgI3vR%q0aBIA?6C0*|S=?(Vj}w@W zF-2M1YbXx9;=RBpaiSURR_ak0gvZRyu|{o;hAsoFbd*cysgQyYg!Hsz1l@ z)@fH^&u~k+q%t zu3nnZHpc4AXTq|-I_$ib-5)H3#{9*P#NXIM%ZRddoxM&9^qISOe4ENnA*9Uk3M;?Pp9n=-`I*=17SYg^(W{Glc|MZ!On02J>{(5?ReSLpfc$Rzq{<#CC-8qm>c>ZbiW9c!-piM7jtax?!u zgsJw2ZM2z@^khuEqFITV3$RsR)}y2SAfr4R?8t67Z^9cDn&v90T5v0fa5Uxq4OJz@*{Q88<+~#6 zZJ~lTnXslz-oQQ`36%qJmxuLIs9hj4qgi^!Idz?!$+?wTjAg@~&uF$olg}%+1*r^L zsPBVrFWI-h7<=OH3h#ENULt<3`(3C{LFfPgwiGKm&i!|mGOAI|lIhH4DYely(pjFD z!%QcK)VD>++MR|^lyRZ})EhnVW69RJ;1*K%789k+qhpOvnU(}Ml zQv3BMBtV1S|Mdunj-psrdU96}lXn=W)nAMdwN;Ay=gRXZ96E#-a1>3f5 z+qPEQwr$(CZQHhObMaFViL@c$I?f~wR#Y9c@ z^B6PD8HTi-W>Aj3=E^qs)oVj*?Zl;L&Nx0q->NNk;hons|SITTEvPON&b2MQS6Md62V z5xcZG#)-(}5Q!rsx@6x(a=v>T%?S2`I%?t%OhXR@Is79aUQHHx`E`N#(@~u71<9Y& z=5Ff9;&(1@1ycIF+LuCIs+L<3_yrjF-Y|8X7yCgJFkZcfte3OIKm$L2wcMQQpK5#Q zPtvededhTsm2VTTEk7i1|2j2P&~&Q|gR18xH**|qGlbKncPWIKRDywh5>a-lAte5Z z`*KGJsbR|2A9fw3db3dnH(RO4pRL%1hfDjqcISx|XNmox3hwGb7;R#>-C;=o6lUX^ z(*NY=e}=-Bb|Q*0S0!dFnz>FRll2U%1q))ki|qI~*Tv!kcq zJ<03y>-G5As{464Zo{W*jAF0*`FKlHd+Bp~JKdjYySesL3zB--rT6pt`o8#4rsw}r zQ*ysMzR`Glo9fE@X7uy;y1$PCh65iNnfaj4ogGHD9PhYSQ+xlIx&7MOwfo!mg@m9a z)C~*DOp|Uj00fGgz0jFsn3FM|}9}8qfTOJFPI=)AEKLClMSqzQ5Ulkt_?P@p2 zN5|bS94o4X17{$V>;1f#F?w6$_jymM`q-qQ51P7j(S_OSGceDK*fbH!%-(BT?Y)!# zcF;tn4d#_DIoTVgWry8=RHt66rKZJeA{MH}skfbu2tp}Ep4*0wefr>*N#OXkU8b^!3}l`|2#}Eq$k^50Yu? z^ZC9yDvM(8>+$~DE5z%mf@bHfma$YitE5pix?&D(eh} z#Q>cyM7yJw-}m6JI0*3GRnI`6A_WbcSYL=X5kd|+hi)vI^$z6UT`QhF`o`mg-mHo_TO0wW0gH;m`2P5^>!ShIrLb_Sxj)uWx6S+Jdv zc|!;AT)(Kln+K1ay>U{mS6gGMsFSTI8UC>H>KlIlX`7N!(u{ttt|`~Js>yvAvcK2u>^SrbG4q9mkaa0sDA{EP;|Lll=^!7PI8s@eW(_33W2=E5lF z>eY8gK~Kre^Nhx)*cnakVps!m0QJ#Nih^?pbUi#rv=ZQIck5FC0gerd?Cq|7325o= zP)Z3)3uc&Yi;^Z6J1>qzOH={s{JHH!SDAN0RZ#Hlccx}#0C#dgqcxSG=N~-)D$amS zp`n30+nN~&sHx8rx9@cV)>S~b6!+&1baT=IbiBdmfYc65loa z$*jYh5&^dbki}={VcuqeQu2qqqI7&=%Y$NoRQw);_PWd30X><(D>$>fnzwa7euCV2 zkynN_*6|Hs`0bt1t{d*2NVIT47cxUNP5A2+B!Im!Q2xxMO=Kk!_VKd8#{uj`8dA%LA2CU(3~k|b$=j65 z#-hahL0`tXi76 zs0uKA4&|?|*F{m?1;FZ7nKpT^rfBx(G}G`{kw`wijf|=fY+!>?T5=YmM+wsKG?&R> z1R?ljVIcN`nq`zbWw9~~Ho2+;qgBre^$BposmdI}5saMabcF?a#ZqWKOoV`SJ|PrL z5(;FfnSpXZn}$}NFzXPB|zFV0D3FMZzj~OR#xjm0;6gZFiThN6G zFdYW;%}4T;R48HoXr>?_R3w67R4xk|%oNF35sPuQD}50-iUTFb1P zG`o@HN_P7n@eLrY4hjRULRI}ed|M82xxgz#?xa~r8iEc3_VQfEA0eu}u~R$KrgO6OYM2JD|F zHwHZD0fTZt$>m;=%L}htEaTx~*TAI12-Mlg#ZjuiUIQo67Q?+9hwM+GrtBqDX0?D3sm8UdrK1ah#SBOn>Qa9q&mKcw;) z3`#gVo{x)n9E9ScF3Ok1W~Z>qGi)RLD62vzt(*rla)eeKQI1h$Lw1RQ_r*lcim0wi zCX}V(;?tXnI@G|l;eV6<0F}Ulhz=Yk&@5AnM&O(S7PA1fwmKD(2x4|}qq9LJ@!O!B z-bBjt?KQaY8wd%D)+e!sETSbs!vhrtC4gaM76OLG6$FXSY%LZ_-Fo3uTHsv zrcR+#T*i)q$O#@cT86l#Ae|VcId(v&~cWtz7^Eyej(rj zoz>1r;j!$~654)MGpLgu+q4d(Eu>S2On;$$dVTw6>R@tO&eE~h}s9bvcWK>3o+&CoySNocks?QZA$SnI8k3T0GM z7){0^VPV8AtpNSjK_Rjn+%#1+6rS;mv}ub*MuWS z2?a`S6>fNczBfig!UMnLu~WN9&G4n8z?2%-cwsF=wJ z?2;33r2^vRauZmR3}+(|09PY`K15IK?O1Fz9op~dpEsX{=sUf#h2TK?NQYCi_Cw3A z2-Sl+M=!FPiROtK$e%QSfxu&HTgnH4kyE#D!9bi0hiN#t%>xMRp^G4W6=2Vk7OZII zDJ`yrC<)Fr%D{=*cB!lsC+G;{%&=QraT7V@rl1bozYe;v{hZ{<497o;!k9~9Aq}O#=HR$pCHGY&->_^n94J4zYzEqy0#Pc>+Zl+)Mz#4G z7HXl1(ey90qGP~|7j;0E?TIT9w<{&xPVtl#bZFTPbgD~zdAq__$PRRhx%;S@aDQ|8 z05|V{h%%!eg;cA|N_@z3b>YB{%Uud37sHzeXC_WY^L!kbhE$d0*9nac1087QF*5Cm z5NaEWl%M1bmWx%1=2}@a>c%97=OK_NSVMs+xPgeQ`(HiDd8g2`dWuGMv@LeCPP%HB zPIrz!u9)up*`K|dgIwsbw*XO+EcGZ?D_cceU;o{R(uL^ywnc?C(*MdW3?@Tmpq>gJOazDD;v554BDbEhQwQ@6ko6wm1w+OZ4Kuum_7bwUTSO}=WE))2p= zOGUHCzvX(s>xK|y*$gt0PC0M!FM=dr7JmUI{sW?fol6~!qfrh6A1Yrd()c$f%M>OOt zMCX73e$zY$Q9}H@b_!3J{%n4LdIdU=3_E6GWKl>I$5yb+iH46-i6OcVla&C!J)rDM z46y$x27qx7eJ79mq3gz2-U0troOY}yN#7zOY4;yuEY4(XXpIr>wHK>`;?pIVp6)R~ z2^XRmiIWrAohhenP%a_@(gOD8|NyIJBk^A=w9 zlXtL8+{89|6k6FPEvcMjEzV^K3l-#T_ckH%rTkYPS~IeJOPNfGKvXm6QpE z4$QKm63PoI1qfCI0%2ALq^pRPCrIPc--+prFmTo_`?p@M_U~YtyohaVQdCt`?{+H= zNjjjFG(M-Ct+mYu|&9&kM~8Po+)X&TK&6@ZuBa$wn<)5 zUbWkHJRet$#r;Winj z!&IgWot_GA7qF{O@sae``nazdSVtE;DdiDU+Ge(rq~q?`u4;i*Lv{k=a<7 zziU{+J||B-PVX^mfhggvJBHI|q}L;wRzjd~cBv|}twIYCHFYHOZ9GKJHWy${F{CGR z4lIj{@K+fZ-Lfv1__q)vYI|FfKuzO%=F6=>WgbXa84cZz{J{?C)2weYSYr_JLJsxe zPp9yXx-W_Wig-6Jgvw4C1A!@ioe18uqMu`9TZI% zsTpihQP&EoVS~D^xsDjDdGe@I2imAips;Q!{k==|^xb+KlNxQ#N5>HTH6Tjo(=#H7 zl;?^LbJz-jjLOLYTHT!eCl{&$;>`>HSP_@qyoCxwo=G7Mv6ESTTBdD{lHR~uv`hps zqy89qLyjB@*z*S)^x)mNX}VwH)q0R&_Ms?7$cux~U}1@T);3eEi~)6b zLk2m_V(<5h<58BY3p0!(JAnmCP1V2z)wdqXu4a(C>h>>{wpK`s3Pnp8id|zvydpbB zM^k*wA+=VSn8a4+LzqvgiT&Q$H zXN}%kNbdpsm>MKb>~0tcobt>Sm`pDPc~Tb$-0X1D2MF9&TdTt4BOOaNR04VLckz8Zx#bk&lY}C{rQkT z*rCGT$^HRo{96nS`DZ?Xn2DFPEU}WCaC27-jLFX*D1=RY6cWQW)_c8US7Me!Rl+3-27ex(mF;+^8B z_tByMENF_XprhM=mA!@_ONv`yz4K?U6ks-kre-bReb&`V?X@iy{Uu@A z7rWx}04n>%vih`f9lPYmUFt{hx_^G!nwolfJGsfT`^Nu2=G*9m1=&FX1W`W|W_$tY z5RA-L_(C$C@Q7PrD{dQhI_`^0mPoxD#lUp&XgjByp$=xZNM6S<>Sng`OfYg%V|mow zT0?6o_spX%Op?COEsx$zy}O&^x35!jbZ?dALoDLZ>{j?;FIq$GvcWBk293ikYs{jH zXOH^w!+#CITy(8)`I&L9JIM^7M;i#(oY8?ijcEHwG@Nj``E&kX(Fak8f{xcBG3NS!Ian2Y~EsEREAb&@RZSPe2D0NlO|e22xquzf9V z7^ZL~ys?e8zNG8g)JsSr^Tcj72xZGBvvF& zxy1JIq5p*-HmabpC?Yw0g#eQypOZWI#Zy!QRzC!>aMae?G7ZL14ay%?qZMycq@*o( zsq>VPt_n!~B3y{4fCv?lr@NCFf8-6Vq?*;QU03yQCKnMFu9@0h?q)TUsrTX#d@|kg zl#Wpo!J@-jdo7$U9}2grlhAeGl>Yr8Lo$$|DyFjP#>9E#t>r7J zD6}EkS@T0jCLJD%dxPa(QaGjv1&&VLX?Pd3ejDi0CuOFkd;CfsZPsLn0^glR;&YeC zlI|tS64kwC&mlP^iijGtK%W~ebx(zgxYyM5z%U`~YSLVpj zA4OigPZjaR-}$(UyWZD9O-Lt*mpi1h^+-^B*m2Z|{gwCJ-m*yUY)3?+P_`r0JczF_ zkE7K%@4h`aMw#vu1B~T8pF2l-bU(fx0eCWH&eGjp)L%YeIV6(jp^V65n%o+YU(Z`7 zY3OOY+P&@Fug}cw-(cTA)8n$TK(vHujZ+|8Bh^QOYskKABqx)?FjAoKnz?r0-S<6R zCf!+(j4h(A1ndlc8QNqFoRBhkhHRQ{=PyHItm+r+0HtgWU!mVMPnZCBaR!H!X@#@- zsxR0Ep|t*sQeoG}vhodgpkFDlvw}^3A*)h-fhC{R*vB}`pS@V2?F1-$TLbJq49YYb zZo!iGFR))N`+AU{X}bYMqshp#PTysV6z1lw#*>?P$-6b`KDc{ea*GJCRu@XU((grd z*q;qQqoV*J%mqVHW#TnwCs5)D=eL|jNY52G&D_rlIAz;|P5EJfAVw;2qCt@(Y7y;Ou%q-E`|(9`SowYxu6(f_=K)!}Sz z0mVh$62?S`gdM{09y7wsrw<;>iS3&r4M8YL0sYC}D(I{uf_85oo({P{*b0^dHO581 z{oc-6a-%~N-8PDr)A4b0Fyw6SOBa4G zp-b5bS7(XCkVVN&2&O2`yF(VjDf$RjoT>$PrfEM^3gIg#52{!q5$0+HqD0>;Vth3@ zBZ8=HwRXBiap7=^>HH&WLm~}5jdK_ltYO+6hYmGHmm-YQR5WmMJ27Id%^s zgi=IYt9=V>JBQ!{@7q72>c(F(?D&#}Jb)~2FDmKbe@YI$cYEYBc=gt9tR$_iQA%q_ z-PH=}BKF6Ou}R1)4DYXPJ%z2pz0D)O`o^lwfg)cSUgZVrzwNz zrJ`BrIeq#SjSqZ^I>Ia>2_woT6Mo=A^)wblT5OC1zu`^-(OtYiDA?Tr>nH&PH{{>7 z-I6DYfz{RG%OY-_l)>8#mlMqKQB&5eR6HSjYQV6s%@zz}6W2JfX*lJkTZtAz!**WO zsmn?@ZMLJ5*W$6QztBXbn_*^m#VhBq&~4L??A60SC0^UUTZLQeQA!WB$}HRVkG{>) zP}E^~zhh%YyRB5#*5c?#AH7ZM%+Xfhach1Dt+{rcK7MijgcSyb-F*#y6C#S97rwb9 zCbz1T*mKDSRN`$WGp0b%MiUcu#)Z$I2S}Qy_k2M}7NoUt{J(Q@WzjLj+#z2DeOFF1 zCMDh^^I1}B;tbO!P^sEewk(CHSAV(1EBU6~!!oiI^`k3aShm7N*Y#hZrOw_YR!d*% z^U$kl>zP^z^Np-{3TM-#at`s!YOGxWp_}3!d^8#Gs8H2D$CXe@|IJP6TfEqRS3O57 zm6XKm1wolUg2u6CRz5?r`VpbLILep+8p3xS+vS@JRVcoTXTS@c+xZ(dv zVrDUfzQYg>UvUMx+JQ{5&qgS&&6Ve%*D`D5`L3;&)_87%8@Tt5-ryPBNK~9Yrrf5X zu;MzlwFw&3VKZeoErtBU+%wqw(D-rOqNzovhoALUXipTPqFw*!oK0$PCOP$%z|f0(H^J0p%p}87G3TO?S$aQa z9C>=!eH2nV$;hoeTM3v7u({mNFti#tYdMFu9Hm2+DZAccuQ{q)p=Pt!GJKBVN^9MU zrPI9fc0R1Lc3okf?!%VgOB)dSUIYP;1KB+2D-XM6(6)R9`lQHuxgr&lBiXeK zd(l%58|CUV|Gg|+28QG8*)x!jmU^z!ukz(uvwW@GS>jo=3kfdRxA_2=P0N3Bi&o@h zYYN@Y(tZ8)EBXK5Isv{lPpdQ{06^0x008X&=mbvA9@ZvK|4|e#ai?q##_#Y5eh5x& z9}2=qg%=HJwEBUvMhwRQpCzS|XK3(&B<9v3fj~G(!oI=|u^q<=e{0ikij`st*CcDU zjr}66^^R!Lgqg~7Pc;{ZyO}H_c)ko@eUEF$a-FK7fHT{koFhK^us*+S?U~RZ0+#I@ z1FzZ+oZhT~+pHBkzb1%5x2?}t!^}N^RQsT#TT&SKwn!vvJ?Sxs+Mb}ZL3*z_w`c^u z_c=-XTNxwt{45-;1(jdRRp=4i0jh0|O^PVa(9heGealmJ5Td4Bs!hnvg62>_Q_t7) z#*_EK1epA8b3+4ew}p}(e)rpiaG{;koI`cZ4d`FK?obz0yS}zoQ@rgCCbejrPNeGT zwnR1s<(&SnnGepj(Xq#R87JI#%7-X=ZnwRs?`kb;lusizQ>wi;c?i}H6CRbPf zvQ*ZcjhYl=S!z)|C#6==&i&{L_s?c)AD6cCc6XDfjVna22mg``hS;$*jW0HG`5^*; z_4iJ(*X*ZXBjLm5p}}^sdvAQi)~;d48g~zNA5V|bhv5D53ZI-^qI;v-&)WTs2L6iW zkH(>40Q|gJaBlbWqka>{cM%IqPbT`fH{&2b4}9{xE;zxkccI?#p;?CnDt$p-$uvGK z$fnr%RK?L0xDd}>VaVJ&Q0}rsL64H^EZD6^;2=bE@@kPcJi*`fci#ql!O#{**DYK5 z@Z{}oo1gB^So0B`EsTA;mM6w(hdvs}62GS!plgB%9WB?hte}y&((TVSO{>8wrKI%= zbv9cwFt)^8&6+Ne=^5$@O)!7#P0<`nQ*gP+zT&yY5-Tdb9JQrReeJEafBoBxYT}lI z%{scCW=F>P&=}qIWzp^Lo8nwuP#KAAQKxMwM8HsGj*?uWqyBvk=!9Ry@f#kZJ!(I7 zKYod>iEm~W(?NuX2!!A3YLjxz#M@f_m$S)o%R!V{P!$6{&2nhig$`Ho{z z85eoQ9k$0vv1q_2$XFT&zkH3C&?8dbGf022>oHmp!c^RMWdq}T$2;a}cre7sJN)gfc2m-*H) z$KeZuPy4nApbWTYt1kwP-L(<}5`=%jd>-F$lExAmCQN`HQGHsp)=v0=?1x%&^rwCZ za);O+1`saAD~4v6bGcUQ<7-ma6rISH*7CAiaJWupJzV4tvz<{3N`+y{-Gqy1j4Y@( z;q<1$x(=Koxx_A(2ku11L;2)eq&NbMKjQ5zi$HXB+adJw9CFjXs&XjeI%iKFJ&K+l z0jiWe-_kjWQ>hfzHHm#;72FSP^(|)Kxs~lq$?>>o7B`#sp_-;0IO{R$k=4)D<~ze+rG%74BE%`r8Ec*shdRnBa*GwH z6NFR_FNXPY-f(`+Xo2@UB*41tj1>^yMj`gO8^&3!0N$&M#!+HfWagPfY9e*fuAaY|o?jw! zVQ#|RW+9lcl80&sr%aWJg}*l`?3*pS(`(uNo_jR{(>e__Xd;n2d9mX<_g5REXwx2- zYM^^8=T))dj74JwI?2Tjs3h{cDl0RE<{2{4M^_P@Tv?X@5X@xrl)%U^aSgFENUo+-x>HfpS^2mfHA<)X?!? zE!EnJvvglIAWzzZ;o`E2hNUdz&2zYYGGAv$@B<)*XXXFUbVwBaWnq8=|G>>Lh)s>< zA9z12>ndL%|N0zg&D8;ae_5>az3rLbCWG|`2n#eqJqRyiU+F-=>As3$q$PvLSsI;i z>ih_I3^sPI3>3384=9P}>QWWqBXAVqixwz{T@XKIb-(kzh_k2U!ih~DLx{nIsG)uD z1`W)-Q@C#9^?6wkd@9@tGb0}!aAN_a+!)d%z!OYF86Pm)<>1M*TPW}wPBbwN5!?Nq z*n}AFZ`xrLB1QFZ$Skj(47HE0kT_+PT?aT#r-DBXAQSxjUh!c1l3^JK#`UL2 z&oWqWRr!;V6 z6fWSZ5E%;alxpb3xlNH>TV)oluLc#9;EhcJOV;v<$&ssi$~^cI=&8>VJ^-8uV;Hl? z!ggW9I*2A-ASHH`%j-1FVuS_a{kW`tl-KY^11Q$sUGA zzO!DByo`K*1!s9K^Uw*ImOP5)Uq^y6e`RsI@gR)j34y{ zEl(LYLl`lU);>cZ;D;=(wL#nEfmXq13|w?Lp?OkicKt0!!E%UMgKY)FxsDFaD|bVa zx^w4O#c~>7hFn6AxoeuFL-nJ>LJ-w;*Ug8_v4wyFJZRt+l6G?WB0{X{PHZ%?c#@g5 zopoZtTe|(|S2tIY&<^JIA!mg|x;XN2S5B%_UY1(Cb6-yd30>sIA>_IGGxdPBSDs`R zN;Y@c`gC$hcSk~HZBIU(VXi+YNELDJy!7Z-ABjSrE3-ltnbo&1s?<w5-jxF+$Fmp z>l?UuEDQSKYEzo*PYy^af*R$qy(M1!rJc6qtNuhv%7#3~K;4Yv0#(g2G4XtfjM#vR zOekxQ)GpzqfU$Bj&!}j)wfQ7xkuwY{7nqwk+73d?@7F1T5EiPwSx&ffmT6y2R8CKU z7R{UndRa4AsFs*gHH;MfgR3FjR97^{ zxuICmBxTtw1&qH@+cvF>J7Z;<+Q>1YK6O;VUbQs1+^fE_KuDQWT|m*sudD^bmi8C= zKhT1y=lNeU){Vi(kQIXFhg+;#!$Nx!JE*Q7T5Nx6i|UtHSq^4VA`>?zc-^UL?I$@| zi8bS;Hr~0}FjZ=_Ew}-en-~X_NM0))3sediM5&RNfz#yi5d^bqoaZo}1?PlV^#V&i zPFLUsjI@~ikjq2^bi$`R7TEBBZ88y+6+Dun0wG+Y7c$do;DQN7X-hjt5cv_ExN#FD z6l97U!yG01i!xA7rl6qMf2*IA=9#yG=0dWF@`u9LP#7pqw$Abhuo?6QlMe~`U=69Bw;fLH^@S8k{Z*9%U2C70Jz))PXuD~+!oWX{rO zPchw9OEXfza9zCA_nPc*@b>zFGEIhoGTs+!cy`&;LibCJ$}m5~bg8({A0IVolpC&#gXC6JX=&Qe-91AA7}O zqzVS&P)+@deA{Otg2U38y(kpBNA)TnF=hN)CJf^`FwJ(hG{r6$%(WdYhoy-JqkI+9 zwFB*FATE!%o*lLGl4Wp~%W7GS(6*{((&=%89utwybc*Nx*Mo={tjIa%d=To7GI^g; zyhd;dE9MdKeR49Xk682CR2)W2Bi>5{RAW0OX_`Jf4 z3Ylt-`ru;WB*U-EIwYmoGDm0*Rf{a~Ep*O9VFs*;9 zpvSTw37@a}S#g{=Kkwt{f8O7x*82S3Zr1dAKf#SE%G9RdXkWH=95H%EkD9d|5BU4O zkEVWlzptkH_E!56+kh47x5yXHDp9gm3}0IL0a?NF|2ywF`d;zCE1+`FvE*7O8FL~O=5(;@Ufte39yq3de{uik4xo=5r}m}qb3bSv zam4WT!F};Y8VqI#F-H9DZ^rp;)qE4aaQ6icvNA)q34e)1+5sE;;e!s4HSiOpwyO#E z^JwqJ+~>D`s>b|e>&l9kkyQ0|c>Qh3q`SMbYj<2(Tl)j!xVLU=|4|x~Hk8J|vrQ#g z@56{o-0u3n?(ly-WB0FKR#%k+gY2-n{*AB*kEuGV%AV?7FhnQ)TC=RQ0c4_uIVB_Rg7|^^>ZV1j?Fro15Lmx0szzi|fl8KFty98h-WD zbsg{axr>@r-_5htjhpXhQHrnMKZdq7y&7H&nATmb-*5=8`5o7Qk<)SayOz71|Hh}|`iQ_pK8dqI z`Q~^w!nUy^b9etIhoiba^nlF6udadTtePsLP3m}_Gvu#R?X7%?E*HgX?$2*CqQqb7 zL0`|K+<;i3D`HRqj*NLEihkejcPR6UF-K-J!*18s~$Zu(s|iLdwr-;3UxnULMx4(yr)NTGjeUsl4Cm6_Bfh2 zrrdmNG|Ux1B`klKq~9%OUl5qia?=aL)07C1mg{w3`tvS zV;JNxAaJ}{+yp+3R)<@NsK|b!vVn1+0;(idP>4(x_87$iC`?Q=g!Xdi%R5^wA&^@N zoZLu~n!(gt;Gw8;#SR{o+hYt9XW`)a_5zqnq(n&%B26ThY{*Me<2P-66s{^~GCJOj z^*?0t{qF-^M3j_WEWz8!heW`TI+{?A=hmpMw&6vQ$hKG}gU=P>XWpg6!cgLDA-)xz z=~Q1LcoV~(m@z{G1#o^YK`MmAxhCg}gtZ`pAlZ@*q>5Bk)D2AdyhE;_pB${hwShh2 z9NysrJ%h#BVSt1#9V&F_6(q>=$O^Uh)F-CpM2%6C9UYx_Roo$+o_9Xo1weu{Wk8v8 zAE})n>>*^7Bk_LMKj%Nc;H7QfB|n){DI{nXWD05#BxvH&hJa-xs-yxmk1~b4#tgEjv8zf1DX0**SqB;!KwJ4IR5+yD<)y&ak&8zg0>BdL4yj9-02PiOIj8kpe>Ofyw`op}Fe7JcXq36A&nul7TK?+&-# zn~wHuKtMK-**mBwI%fX^&U-tAAM^m?-N97jijG@d27~x3P3r=mi^RYPlfM2M^BcP> zuTziq)78btV2|DHdRtK-RY(92nZozZ{Uc}fCjZ*fkW!_Ko!LuJwc>nNS(^?|4PG!mw=u1WEBV;UGg3guIp5Lnt#i2FCM8$} zi8%)1RLos)1B;P)BzVpeR=@9vRymAeQelKV6xV;5;`D*?5=(g2wSwLH!|9O@4mTAW z>&&_@8sLZdpd$t{uW)H#Hf_N{Gyogju9^?R%g;EwowvL+t(f<(VX6rV&1>g+n|M|x z6J4%j$r(i$=zeeFOb1~c4(`f0dW}bfCEgN$<8Y9K|35zG=9oRNpd$dMIZ=mjoc!0% zIsx&je*$&0`VItw2?*LZt(dW+DhfaMI&m}P1QJn39SxDC z$&V40&~G!_87km4rn3pTC>FA)M|5(m7`+9Mk3_`;LJ%4QAQ4fWwGa?K&w#km)I4i% zWy1A0loP1pw1k>zDfZ(5A-;9Btuy)n@=Fj98zRO3#YG@g_Y=Hw9M4(1HEm8y1!_pX zu#p%K4Bj7Ap%T*KC};{4LsSN1{#jD|J$HbhD>;mAfX52G74?L|+w-)FNsaNu3FrE? zfMlmX^0APy8ZBx7j=La|4&te`N8~|1Xu>^bLDb_OhqM#4GvfQ(w^S#}uTwNe68cGi zhQl2`k3h5#$qw!O#|4{p>1s*T<<9;ocbH1sL>fp&h%>-7{$2)=BUE z3yR|^MuiYHE%Ro4nOs5gJ)zg0*X)nyH`dSgXEiG5k1H>iVGj*aOA)IuBj%7tswzd3OLN?Te-EiwHZ(b0)cYVggY1q{U@)G5Ukj8 z$;6dKcToLsvb=IYQdJpW2{^f;qXCs-qS%1X`D4c;qLEy5V$sPwJ_%oyQ~fsHSy(;a z1Q-UFGNU|zu@lK`|Gn{8jjSA`&r^LfiB%!+Cs>HK9!I4Ctf3rWA?|S))sI2y<3T_J zrr`des<*abC<7(y`xX5|pa4a3404-GY*&o}N?330(DCHY3c$sX&;TZtaFz;=7>G(T zTdUJn%MX5~l=^mk09*Bb-0KX~8uq9^zrc|;T4%sofM>xYyKL!7=so*;T_mv8UE^q7 z1stQ1m-HKQxNseY2Ve*tM8wzpGw6dsQhman2M}o$7&|{)mspafhDe@n99@jfsh`P| zRtO~KE$FB&y-~?YwVi_LHp?^OC^jL`(Ui)`27bwB1M0);$p`(eDFICVE0eUeN}qWs zvlIC@Mf#Zf*isi-7V7Z+{T4>~y%+TvzhsUq9;U8Y; z#sxJqLXy{Ebiib<(D1pDLxzbryW_t1NL?A)w@({-y}wk;pSx0yVh6mh9zTgpkmI@# zF|h;={%rzT!%=UAz?RG(8<9kAVL(Hz@R=~yphzdwO<#$i^zs^svz0=GO0L4tCr_?L|pDNc@qpJ?a42092>Imbbw#4HgyR zh?7Lt$OntoIK|p^$%&jI=yl)+E24 z9uyj`_Q2+#gPc`^Z5_4KVH-}RZM7H97_MGJ01O5OnHEUAm4DY;K-;lzFokzk8PVa*xng0h z|84N1b@HPX8sjt1;EDSZ8Sf!ErEoYGF=f?7Q&iObzp{Az-w)%i&Deu2fB*opK>z@L zL&N`*ZrIq-!0kVZHodEjwaEXp8R>r8(aO7aOAH9UfA;Y%kgV;^?91H97n7o^V{Tu@F*~%znLlzwE4;`q*Id&PLIle5^w1sdlFNs%ABU z!fR!x$Vb(-eqLoUB7dhqZq-n>gpVo7{NS^8(zhIe?j!}=rdT(pfUgr@1Ya|rXky|F z651-$W}zdNl1yfodGiTO>*=FtpcCHBo0}@n+I2(ZA!xNKVcOhd zpxQpc844lgD3gNmIqoiLJK&iE|bipw4ubfX`Ql99%`1%u@vWXHS2dlJQ{ zOud?I&sfnysd}jbqZfl0B2GPfx0a{{FRDkXGFRTbq(V74+sG7(V?Ic}9x)WSh-Sw& zg2fXtNnW%aY#rT1qG{%2w}s9#_UN-RxIy{ok+tQBvW~%o%O?BTHzmk^zU&^wLP;Qe zfgq0rrl^ULUs^K&M+K>k&;^BOWIvJnf7-jsu&TChz3C8;1_7nJL%LhK1nJy#gD9bN zcS<9TbO@_`TsEhnixlsap8PUU9z}8L8GnpO-UutkDPYUZi9Uh${iGKV(j>P@0 z4@04C-}8FcaPJ>fyVFWfS)MHQBU*XUJgRX>6A=HwhrGnNK*yQ%ed&(t`K$IVIo<8$ zw)QLkfXlFpu|&MLRqS=VS=Cbf;LW%pJR#BoCUO@=8SeeALo>goyp;0LgC!lEir|1; zT8!!N{jVx{>*Tm!qP{R<>+FVgallJcLJ$wROfS2lP-#szSl^ufc0NdiD6-}ZFf{ky zGL+*NLse~N0EUw8h#>EhvpzBvu+q{H7q0X*!q%o;L)^d zH*8dC<9Ojk%SBvM1#@nX`zRi;e!}8_+^4Z&YxTMXWB(d#>(Pm%R&O57j#dWa8uomA zC%%l$AIlMY@^)uodwpW3a@^DXLOU@}#ZR6%mZ4#6#_$v;eJDXw#|F2n3zL$qRj_Hg z6OcR20~BrF2Pk@yOnvVcMJEx4$HJ*nFy_;-q$PNQiLApPVwd=RQYSvNE3I|f{60l8 z7r-oNeGKY$pVbvFL*L?d>n=(JLF&phqy1aNpQ=xLa$$l{(h_oD>ft7q zO$(6pvore+gIyh7SeLtVU7i`pBlBLNE9+Rv(DNGZ$pr%qY5H9nThmhJc5z+DW$v$! zlA>qu-IS{4U-jL$P_3@&@Eylh-bb9Uni{ex6^o^C4tD&==QFm0{Lquwtx_B_olEm8 zuFaj79Tt_xtK}1BA*vh8&##H3cwLCd;wV3jsLvQT#ZPxCq_8o^J)>a`8(F6!jIGj3 z*;64LQvG6^f$XQOd6r%+p)b4-K_)(Fepl5_n$`DdXXe~@#2cgh6qVN_a<%ysHscyx z*)TeJF3TI>9g{YXY}i=s$Iac1znPH#IRPxM!&+b~HXLUnKW$+pyx%q84BJejSx9i9$;rCKG5CO45y;%R_sNep&U5vydSAFHX<^<1?0~8jp+jR zK0(DjAi(qtpeyCC&h(jsv&|oCw;MWxZU4N2JIl}GQeZ(PIC9MHeVP`yMV1-!S_gZazk_9}JCh@x`8iLj_$j&D>9KBX zA8&4D#wFyBJ0D>n%$eqt93PmRMdS{ysuC&4=DmAIwGrd;93*Qk%7}9aqp!+OS~i#; zAq4;C3pl#cGF3OkTgXz^JuVWT%l_yg^~?*p_#Y?7`WCq5&F7UH2eDYMo33Kjz9m%k zFwvO?(^v#1b~r_J@v*zP>B*dFyXpCEym_^twO*R8%>K=VBhXT>`_zw*pxi@(6W#ow zg+q6SUlSjURb-g(8A}Z|s={bu@9F)o1=oZz!69n7FVn|L+_=ZbE)U2xiiB-1fKZ#i z$KveLVJ;B;la{?%?dXq|RRor*!VEl-oozpOpp1=4rcro@AFgtvMdGWxo3KaeB*MX89g{=%Xjp(iXAfaMBI- ztgM>DykQBXU1Arq)!~up81!dIK6FT26ddcL=J_t|AqfK`{sag5N63ng=fqF9#b!F< zZSe|?OUmg#-}lPAY^~qsXLed%2^LFJiU4g6M&s5LA`8(d-4oy@PSU1N@3tHYt>Rgx z2^nr$hLu!oMsD@!Ja7+vBTO5AcbW!`HCb(qfro3{NRwwrafZ4#4M8>+>^S-~bXCPD zj73IsUQ9oc6mAStg-#<{-J@&BTqoU7I0&^X*sc|5z`r*wS2jvq2S8SF;NO2s+M6sw zH%%K5-EIvut>nJ%rT>&C6>XrJ->RNC*(dHR&|`xEieov;`uwwtttV;X(VeDW*mgHP zGd~jGM};!&JcUE;D->3%{Q9zS$3V1-cWW*InOQJq@uMBjE~Ao?b!bnr_TxKMfvQxb zk;WoRJ5LHDH2Pxtck;Ti72K}(U{fW=1=9{@VCFjBls5-D@1DH2kJfwj<5{6`$b;cN z?;+WPo`62;I3st7SdW;J=|mqBvF(St>$F!`C<>oayAJn$8|jsUwFY4Vs!sw$d;MHz z3m61B0=7n1u(LYY)%9j91a-{LVq#@~VDZ)btC@`pUw@2-X^8+z&&U zBJFcT&W4kW&bcLm$xD_pfC5f)99&ZJtu_`0jb4g+EwsTPCX+lC44S~ym=}M}X2{0w zGmA9Zjr{#CC0By6wdHzstT_jjq%nINWFeZf6_bENw~ZYsoG0c1GV!zXHP9N>bRa*$ zl%;K*1Vq&81>#6#r5;+p7?a~V*%LByZZb0?Oc?Pkkn`cCX?yHS zS~FeZ1Cf3{fqpokfZ2i<s)|V7^_adlZOg6oI~I0 zDx{r@m3o)62fT3mG_D~M3>6e-&~Q^PZZ zcXp*)-U>G0&$b$6gR{d$twY+Jtw(6)A544~3iZbaO;;{Q)Wjq{lBfDqjO6SFm2!rR z!1*&hl^x8VuDBX^M!d$e@~|`&LVGG0oH(y4(!ZlTq8@hwZ@}gSGseu~3QJRdG3FUt ztXe?f8*k;t2~&A25nWQPF|jvGDd1=UxRjKLfCY2WSgzApM=TIzw z+QPtKmhKm|T`ir##%5qMi9aX~yj1d+A8sh00E{?i*hrARUKs6@xklM)$C5BY=&uQ; ztX}QFMC5V>O<^R_-^(2lIeIHI1uo1OABzxsbdGw!xbx_^=2J%<#}r0&?B%%DflO+; zZTLfe_1dA5v7RU?b~Ugj^TEN#p8Yk>CF8ubw|aTo#TvpdE4YMHT3$X(sjyCD`AAV5 zCY~56jj3TxT9InbS!b6~rV(ph(p%FoHc?$wU0hkR$}yZ!#xtkatX51v$(TR~>oD&MM& zjv%9_S1uz8$$MVgmZ*#)FT0IYHM6}=auZFdn;cvxQrfuST8IFV86{1wd#QYSx_0!& zp~i&wHH<-n@yZNIPf=lwnB*?TwtD{yWmaNosS`V%5srX{eL+M>eePVd7|ae_TBAVu z`hh>LJY|de{2qd_+5U4({)nWu&JCE#eSX#64i;8e*}IMUpR(^BB`OHzT$DRY+i>p) zeYs0nhn6~9Wl+y(K2cg)hq_IiXx+|KMjWX5-VC?Sy7q&dO>To#>Mjqu5ThLnoDtKY z=N8BHx+ukT?OV-8y-``ss<|qzLI3Z&F#3?rqL%fgbEl6nA2u;@o6f}3!=KECO12Pa znTSI&1aUc?C{6SfAk0f=170jyI9U+Mmn!!No(m*Uvd3HG3Aq*pQ^ba3J(q>l3U(gy zcB;PSs0HO;Qy~=L)E=M-%-;z=At=7+ck$PMp?GDgQ(OEk&$eLgrSz3zcj|e* zIa|fL3%tl`s>uV&_24*EB8uoyc&|WwFprrcxi~sn^$I(?rl$A(Oak?<6|(9Q#3jbP z;|QgvQRk}G-VvEgrL zIZ0v%+q-?Q28pd|jL<~jNr72}c-mNrP=~!+?Y1kIsY+an-zBOikObzwEu;UgxS`CC z!&gJfshM^I4;x}48MgX+lEm2KCUS`vB+!JqWY@ldo@|le1LFGm{1QW+yhrxT0dshHC26O-mHgz$EsK{t3*?+Zgtx1 zBewa4EmCnihRB&>9V^LpWa&aFcrHP^B%*=Odr{_o&0rWR(s)+gaJ^)t-ud$+Hl$py zJyYp>vqST}healagUX!LZK)NNkta zygz!|X*34!WlXh+5t0yIbr^SJ(^d;bQ@QmcTd>or#7ZoMc%VcF;CQOc;2_b^NiN3( zP$;1kQuyApph7d{L7nS$X~unZ3+dyJk{JSKw&Yp#>Wn~GU{&pt$zt>Tm|ItzZ z7ajGa^9sKNxD_J6vyAs^tmz1Lc5$$GVg2>_^Gzk&*biYJMKOE!{q{$Wn&TCepN*ji z)I>c(444QHdmfkR3NHMdCy>Xvj6tz6*O_^;z{%9#v6M4Bawu&+g^-x&ms1q&eHF&f zFYG}4Ht>s;jrntINkZQ@rDJQZL58h5*uJsEd4T;7(fm0Q2I(-V2>(|1JsYLB#3OXZ zvuG8;*#jLTk8LdT@95}%pZx5B%rFyFSN;?sd)p(XzYHd*4#kQKYq3%|Pc%}WIk|mN zpn2!gH)ppkqS1P$-r3Q2SDAD}%4tf@?(1ddUHaVy={(?H zP0mYWu>sz7D>=EAyns=^SgA}%UT^MOv-ct4Z!beeyTyLk?yM(N%AiqeeF?t zeWZ1g=XX%pRjq)+I-XpapiXh{TrN&B!Gxh8UHzJ1bAYMlK;fjpYDcprO%SFQWfH^h zWjxr=FKmg5T3r^qL-QdeV=O9c7))^LBcgBK%DTA0{v9G&Sw9eeH{`1i%k=RB?kpP+ z4E5iWWMf-X2}@%u`=2+~EJ-&S$l4t^&-h)0to2#whw5fJv&6EGEA$-Gbq92>HTvC4MCcR1;;nK}-!5@=Om@#eLKuM!r=(RXl^+E2c9MY*G~5gT#0+4_72)xem; z4I(C^13yf*mHKMK)gYQTywD^?A0$eC$Y#^G!^I)r)lM$zBhkmn#~X*6-jtN3=6I-% zJ+EqWCq1tsT^DR0YWl#ZCZ9UWeJY$0#{F@>U_vy#HXXl~_~?7T60`6mZ8~;csl~N0 zDkl2bS)8z5Jon?cjt@d@3X5wGj0zk%?*^tZ{yH#_p5gdNH|vGRrvC0dQZoJQAf>+w zEIUN>pn-4Z8TF8-0>LNWU&{!ceURg^%7fB&?m6P ziEC2Q%5nAip*2#ll3#bZ%HDYk8)f<7H02c|<6U-31;Bd|`(t~Xg_jj>>QoSu~E zhgNGe!qM9NNL%qq{-TuDLrccC=TUiR#!rLXCMV%dJKf0MprlLiIjLJcDihdZE~lRv zXI|h%+pmO|=c~niCffQSbR%HJR&o+a{}?pHmOv(^?Vn55(Q0r*=&wEJXSEeucP4hjVEWaEkjF*s@(+h4=ykTr0?R)d z(4{VgPBB;Kb(hZ#@xY!+cy@VjI$gF5eMNR0Mxc_&s5!_K6vksr=rI;N?0ip3BjqX+ z$Ctv~(tzx}*4Wk=D2Q;Dwc*Gql1eZt6iPr9MhoF2Q~uUP+vg3?=I&BGb@ZaR_s4Y}m9emBi>0`u#DT=`7#wxMz2z(0S|<0r5MaE)Txr%i;A<38BjW51^BZJS5^ekC8mg znB)fcHHVEXn3Za_(**}iOf>+pxeO*T%B@)s?uuZD+--%YmH1>kkp1jQT1t8?BEwLm zq9~Gh2j9~4>%i06C&fNL$THDGb%UbnJ5vhA>m?d8;{(D+)6iQAb4NU? zIPLX?SIsDnfreuUT1pdU;zzWyA}{bAN@`m*k$V_3c)F}hU{_qHuESnP%#Qf_*@@%p zu5!na3b6*Rr8R87B;k8cQb<4_`EUc}<+;?#tw{(5mKg|&Mg;vdtCNGs=SOGe0jiIo z{K{H$dvkw&)0J=lTp0GQh8pgUU>E(L+*gtRD?sgIHp(O5R0W{R21Xfw+6V!&$1jKF zjmHOC5Mp+PgASaM3S9Z8FZ6a30z52$|Kz9N)5O8S=66>O|9mVX3KZKE0R$qtl?1*$ z0}25M|GMy>A%0s31Ns$<)1TvBhhIsZZlO*9C*mK4_`~^n^KoNng|15L!Pm?W&Ne<-xS^u|954GQh`y9J$%xdHu)4-i@!+OcvgT_1lV4dqpF z`K_A;8uedS6eH=MRP@Hm4h;%zJH9Qd_p85D^tW9Jv~})QS~v9{RrI&0|GJ{p>Hnmn zH>Misib5M8Zi`Bp`3v-K<_KsA=vnS91kCGSZT06lFSPVu=Nz}PAW&5f2=uoZ2(n_R@Uh5iZ=`3nq=nSM+x=EyP~V zSAnoyNO3deBE=_$DrQp0PF8}MC?d_!!r}V(R7==7^|X=BJcBz~l#xG$m;B4+Up-^K zM|4F~u1BNwKeik|r5#QyK2S|f@Z1^-*y2ZUeptwYZN%z`Czi>cXw!mbS^CMb?Rx9f zC$rj>E-G5h?)D0!APomU@hE@>4*>u?zyJUW|KEI~{+rMLoyq9L3EMeF;Ltgb=*~0y zh)-dAg;_=YX}N?~8Qtl!Bzbh1v3PS!I}9-dgI`cA2XVi@CxZk$LN@WUm`vvS$GMO8 z5=Neb{O?0730do=lUdRV>5^z4eaA>q!ZgTbGDCNkM=Dv!V%Sy45~U%CTOnm#DDGXb zlypUu^f-R#AHu{0jxERT{u#>T60$fI z?}o#yrc5VeZrOp1Y$6aPu=B@JnCUVuN`rqIQHJwGFH`p@J*C`b)<&XFN=CyiyqFlw z4hZ5C9X{Y#kYmf|?*s9p!W`r>gYYiI^?bLlu!Zn$`i;NUX>pj=PWztB&wWHKGGZuX zOe7kTav=Ozuy;JGP-=Loo4kFLFK1EsC31{~{9`LTLh(U4lit!FTxppQ1Z0oCH?vdV zlDnA@^NqOf77iYPDmG@kf9R@GabsPm2I7DOJ;ao-7-rFG*zlgswR2F1!cQD6gn=YD z$)=L>kAWf5#hU$!HFzwnrEropTWt5q=VNvii@P;f=8qjOih5r-*0JQ?vG$eSJ3JaZ z+CBCYiST0ekW9XX;?VR`b+H3qu|zKH`cq(yrURC2k#>!tJ~j%3e2ty@FzkY4Vv^7? z!l-5xRn>z`d6P5R+I@6U;h-4H7mq-4$2f2OEW25`|J?myz-r}+M_ag-6}72u(>cL0 zd|NwuQnN7E_Ur0ye;N%|e9EfemsFHM+miPEd#+Aj#)Gxle$+pP(K>eMmH)v6=Um*bi#Q$@q zqW?Qnoh(ehnlk+J$@KSozn&y(x5|hda{i1Na8|MP1K}4)j)@k@g|b$-c^x;cd0wKP zxa{=mykuBzt0u3H(cr)|M>hEi~1Oyz(lZ?n^OlYz1h z#R;)~E_Iqz%cIMuC7_5#f%x*z3O#XNu;Y9@(^v=oiL7Scou{TH28UgGW)ZC3&&qfk zuC(zq$UIAQJ0FV9apoR-`Y^hQ@(^6&`P8EB!~XkmouF$?5~)1p z8qEh!bm7+2URhuWFEfr_m!GZ(P9wn;!@cBbTO4iB|^s6HbJFWCl zwW!`luJ7h06@jB&mR@$RN~)GZRg+W@Y0py-uH?v$rj@IHbVnGylFp%t-z?Ja6MQm8 zD}6arO^4SRc+_Xl=Sd3MeTmGB(@w8X-#NQpdo}j$#$bu=8q8nO|4y&F+RFe!@bsF2 z|G)kae)xBKIXb!9m^%KQSf{$$H5nX0pG|##w@n8mvdVZT?exk!Q`N8XMM-MU-3W34 zh#Zh|p1<_F*zf(aLUck$M}&Kkw{d;5aR)>CXIp9vLEfVFTiX`o)^;kILNkb-K8%)#vpYqaviif|ryp6F+-a|Y!ic%&?ASp5@v{<%1%PPjtV+Gq@!JaFK za9Do|wUt8Ij*dSu+VMcZM1&GmSCvN4<&WQ=J@~8>Vo6eUA)PpB(m^8mIFv(JH-R^z zw2>LeYcxtkDO86)jCgHweX+B7XepIv&ZoOws#X%clgXSzzFAabDG-a@}PUN zpT1yw0Qa0(s@!XJJcuAjj6K%4BbzmoizxHLXf7DL5-ukE-`*aOmxVzuc(5w zb406(Y=dWNXIE)LZ;>#yI$K9sdWwD^{3Zo|=wY>KPB&;>l-hPWZ4iepWl?p=v5)(E zrcb)?ozhSQK+m=PiRh#h`-b&7*L?{!fD3i@r##j5;iRlGhPbo?2y-*%j@w9Bq*}-Wl*v~gY8YNqr%D+m4@w|WDF;sHw$#cN3DdS!nva7Zp zBh9)yLGwSNT5LhGq2#Ccc>0{=3Bxe$7VOyCZjIQ{Ab;b(`CoyR#k`NU?9yRL-dLlqBYTCZQut8@B_N*mtHs{%ELn;g#9YGJaQMy~fFVVK=M zJEjo`49kN)H@gT7uMx5aE2?G^5PIH%dX_s2_hA;>GP};}LQ+-sza|IDY8yVNB&>;) zJH`FMDL^vj7|bNl?!_^TVidz6jp7_ije|Ip;`}9`$pUE_jWUAw+%rfyamCB9hwuEd z#MctztLrLjhv$@cDok^PYJfjqdnmia%5IY~85m>SOahJZg_wp)95lwZj>FU-Hon7= zP7mA$Ex^k{fs71#<3HevP(Y#JiZE~!)1RZ@G9=*!`k(lhA(I#hM@WNW1*4=Rp_VNe zW7oOqhibP!f{dbTKS78fyOFcNm|&~okRuNp41E^q2XW!n^a3Dp`w^iyObmWTbtsv! z5jPkJz%nLXM%32{RGJ49FEGlb(UcigJ4wp2qlMjyjAMn}RvP((V2e9B^2ngTzq~dT zDIM)Niw!cnM;Q;lsPBwjW;59~RKximH2#U)L}5=V-3?e!lVEAoJm=ZW3K~D#GCOh3 z8G$enNPf)|a1qia$MTUAu;CdG&haE=fAQS;F7uX8{fwKf>;EIlF!ILpeNk(5f)G$LLCp(n+mXhc!#%!*w+58dcsctmMO))CQX1b z5GQTTnjARZ{eWw(D2yJ7hph|IkABus0}uc~p{JFYuz*tie?kJfqWLKK(H;GI)bPId z$xyu=b=LW--nQH)ujNWPwd|$6V8;kQEnZ<-O)>byJ}LSXI>CJU6k_Yn=Uv@MZ14@H z(0Bfwn)p~?*a)$spD9A^S<1`{#KJ}Hm}~6-`eHWXEy6@lBh}9b9B~b+?xAJxB+qd= z(2Lv02)*1}HarJx?9F*zxNt~kBd>F14N#rT-c3w*E4^+mh+ZxO4n)hwV0c?%Ej8&aS%N}bR;jkn-FH`&m&4*Pb%Z9 z-xG#*@y0>>ad=E$qygVhv-_u`NE@Oi+KlkhuQOjfz1$RyaGEFf6mXkiLVC8REp{B; zuoUp!K9O!B{!HphVy>ZCmW#`2hA+B)hxog;YGbOs5yJrhFroj~+KTf(|718?n3_5{ zGW>J+hu=CfCLFd0(T2|55wTGD21uA5^pu^d9*D`CHrDGG>{V@nOc;ttkcc+F3_>ywZEJPHMTl&yFZ#xF-&rQkV9l;hOLVz@?3*U-EbmUY z;h@6tXz$y{uj``tKGeQ&;h>arjc!p+u=sGkj92_=ncb8nyt*=O+WkowhEjjz@T2N@ zYu-Yos>KUi72Cas#oja_rM(o(H`%qIoYEbm<;&?WH2m)!GxSpRhKqd_S1mVjcI+eR zQ`fgXLk(@mg*%oik%#K5g{3NXIa`}^`Z{8$TZ;2ujZ~BEG@);_aJMbe3#NLz8Ba!8 z=R0#3${_{QZj=)wY5jKbQIQL6Yh#1w*P)u()j>@C zT=NVsX-E}iAd;%cJu4d!e7swxtE) zFfgb-ccfnJGFl_2NAO+e;~EdnHo8y$F<7tl1wy$^e!KWQ<@)8A64R`H(D?Mc<@B_+ ziRmEYz_HWrl%$5;^O${#pIuhAYg?@NjtLJ6Td@Ikmo_9&qH*KemfhE+dSiN>yVS>u z&61vw)w*rrUB9fsMm;)KdqrsJ&k$L4i;>wvuyuR#F`Mylg-|M{-8emc1CqXu#(4$T zX4&ARmwu2`xu{jF>z!}kxjQwNWl32}xMBMcA#Ou_LZ-MgYgXc8pMZo(nIQK8qX;+E zv(UI@MnBUO3U(>gk#S1`T6(dfB0hB#)MSkUiNTN@g=-Jsr~h&pQ69XZncr>L|@1l1wUV)_DjHjQ}EAH>iL>7*f82% zh)imFTir8jh6kuHCV^HP3WDj^bqcE?6y~$Z~OJLy*mlo|m z&rS-gUD<<%TpQ^XOg0tR1-G75Ltx|eSDpWd5NhS&%su*CXnPEH9f_rO%?#Q&@Rq#< z=eHVG{ET7BziwZqk91vSk0mGx<% zzJ~q`Y3T4k*FSli;&2x2WI)hqQ)bQC2?6L-N>1#)K1No0E5}v+K`O4V`9Lf6jE|tU z-zKNe5d>^Oo;5Ub~9E}DCQI>)M)!3OFMT`#g6usGwu|x=9IgbEXPB$@nXS6e- ze2Ded#R-EQE^24|_!)>3@ew{sbk{3-q}zhE+q3<)dA32}lAVBm}^T577YNB!oPq z@!}+g4F4oVmO_ArEpi|W^j9o1ahf{14Jwiqa8pA_hwz834?oPF53DO|liyqp~<}hWP8XaudB+i(+;sMM0Rnv@P(yC%#=N*4AS)WQ!9 zP*4bjcd{wrA1M%pP)3RS1^#{p;IvXma>53GN-Wd~6e5f$ zjQvhRwNpf9s)iMp5ud2|6Yu`9Y}WnWk%lBeqriw0cI<4l7omYIgqQ)LCs#e%Jdt0K zF1grXM_QTjAt}*Xg-KCSO)**U7N(ox`Xc2)^*%{z$a{Mm5B7+blh)gs1GGjAAR|4mMVN!G#X#1zn(Ipreg_!| z)lGhBflgm*@77sUKJq@|aXXDDE=t@j+2KNKgA+}Ed{7YCu%#lO9pcCvEy=Pms2@)jKv~cXP>q{G$R$5d<+n*4;XK0W0X)! ztZO&$cayw_2{aMKrGZHfSC3#;i&#Y`Yhatj_{Raq_b^Sg(Dts$V2}o- z(*tUXFihPvG}!g1MlT}trYfjh_A0YEHPBwFSFe7rQo*EQAV*-DrlY|Qu)+iyr3VPs znmrCpXm!E(AV64*hG?E0Y{mF`Lf|(XzQC zLgJqi13`Du`}ylrDDJF3{4Ell9}j=nhqWB2{T3A6!S^us?~S<9QQEWPtfXSVFulVR z5-sgin9xw%Thywxs3ctdHsGyl?84mV>mQA7ARBf=pc?(zL@Ho(u$(4A$dE}guQs(% zLE{rp5Qmyz*84VifFj`qJC>|J{`dU}GUj(l_}~GIpnM}lAwedXyi|_<5VO*6mDx)V z7u7Z2Y;t5S^nW|fFva(g>-}KSkjEa86dNFeIUWJ$R(xNKV7_(;e`-5Toefi^y{||$3ZrUp>>9xLL&(t5Garcb& z@~)M}PMPOUN{NzcT{J5!9D#J-)BA+y4PVy?zB_d%}gm@cMJ=DxT!>RKUwxfTA$Wk4ixv5?CDRYRWB_$!|i` z%;QOst#(qwjE1_JZPoS(%Uv@?Q7Q7Uc;;#QnD)&+V=mN@Bk)I5BPoM*-U#g`+fYII z-n7(UhW%K%ZA|*l^>f>dnf|5c2nIuzL?b=2=ph^;Hjd`XYZ6P=ul%8>l}$EZS;G=0 z#10bYzrGJymhZXR|NOzvm3m0_ef#X&)J=tjx)+P}`|G^?^Ut?E;ri|Q-*mn>UODIa zC->jq-Ch=Fr{sNoUv3Zghu)oJBDHO%-|lZsoKC6_TQla~7q7SZbKahAQik*ieZ61q zXEzCb4?{dQQ9eKCL^kD;cC_1iiU<7a8 ztGm5y_#u-OLOC4)<0l(4CX3f6Pcn=ne}~uotOv>Zyh^bHf84umEyH#Bzt}rh89yEw zSYI99b6qzprId}9baEU&XO9~v6+Ujyy+0aX8lHF-gW|^UQ~21Moe2Jl`dM0tJA+VuAyy=ia!!RuEf51-tTZu-18y$ zQ(%iOOqXIwyHCAQX=-}}(lU#yJ4~r)q`aT;p{UyW%;nKs(l)hEIpFTS1C&SB{OOEm zty*5h89DEfg2z8Lwy`_n{r(l0`qd~tV%iK%=pTc6VNW<%c}Uovi7__Jl>=Z^j` zUpMN=y-saypXQ#&Mm%sQP3_K@*XWe(2g`m-5Z&d|n|CXi-LX!WUbVV0TYO0I=u}#+ zB0%=cA|!ecUr}8Ba&TjBs{BHovIqPnf_l%KP!~6Hd49%D-jKD{RY|1c0v|hU+Bgy= z-Q!Yn)9G!^lKs?*KQ$hr5`4TRWtPS*zZpsJJTS;l^t4f-bo|UQdO{iQ^M3H0Ge2cn zfj?C<6S<<&SI>P^yb!1)Up+E#%AHi+@NHXL#1`+Y{-R^J+14~`0-K4;w$%4H>0K@U zMft(OT!) zM{%A_PbbigC^+E`e&FE4eEwv&-Or^rcMYx|8dtbGuJ15=1!-arOvrOvmY zG6*0SlK}k<77S49=ZvN?8$FlmHsp@z83VET!8kziKq`Xth8!kf`qu|wIg9}Kl7#Rn zp=h4&dj5s_N#58 zGfG!ETnZ+QoUq~WOQp`tYk&rwWW(TCeF5}lx#82Gq=tMXX=B@l#8LJTMj#dug+RtE z3MPU>Mh_;n$^U6L4DrhVQnV#T2k>1Qo1NJ201pXdGZ6V?^se4K{n`#7Os=jF0@US00@)S)oXuMpx)~KY`i^)w=$h{!slH$)*}k>|7BZ3#fPyxH zQILwNevW4BFpQO@jTe_;hE3TlvdTr;6bycS#fx_EAiX1helsM-ZUsdF^>OZi%tInw zKSOJyY1LWMK3f8Bz&KZjVGtlcm=N?*M$C9T$DQxBR)cV+@nEZ1zaf zs5sRK5}}s8xW$ss=GTHP$$SE+6Jk{TSS2%5_wd7mFtJqneyw$hYmF>gqT*+$B{ z<6I84L}NGZ>ZQLTz0wrTswZVow#T=|J;|cBgbo)n@lRK@#Cb*D7+Y~qmY?Fjvb4kr zET%8&M^TrnKM^I?EehY-tDZi5>y`+s1A4bNq6EB6Z?vRH;d+(2E;ZLv{Uo6-?3C9x zy``3SZ)7T1nXF%31-a;>uHt%41^<{;JrDPo^sO}UF`t^&OXF&y&^Y~){uKO6OuVd4 z(_Hc8hEv|BO387Fc>6OK*GkmKG1_(|>lXVmr)SBl1c)r`vJ9SAaD3L`s&QPVLEP;g zDp>OXH_0}gm6^#2lKEY2_0YX`veu2xiRNXI&ypQ+gLBi=U)L?{l_8FB8n=>`$kr7 z$Xy&5W#q&xIiFXI2k$9Cp#}qU>>NAYBY}0U-*~={O;VZBqmddVi`A|(&ICyzToJP= z*7rmA%O%o_R5Gz*g89nMr=1nOugs5MUy836jmi@3ZTuR4xTFl4c&ag*)^x+rHd!H7I`fEQ}xqc+cc6R+R;2c8_!t9WF@#$x%W4TVuF<}SE%;gErv^*MH#gnD#hH=~qVVk>p%8u?f4K4-%ltIc|X7F3$4PSYdmZcb_nwZGUxq00=m`Z!jyZ*_h4 zo5;l)(-YA23x4QQW%J4p!8xL0?ub)>it}ff6ELC7UyGw8Nx>!YmM;~|52G=bi$zl} zSS-im%^wsf^&c0A>i$5|A)N{%C3XK*p0Z+o!MiKUdc`q!Ar&(qfQq^g{W%qk2ml?2Ke3hl=i35+t>a1wKBk=zJU zNasK&73BeOu!O`aY&L@giUm_}r^6q9?!!k>HG2_(55MAcl!=wpztC%|ZhxG=81Uv5 zg*BrVF_0Anw)TD|7-{o|SF!&ny6_=hdP2r|z8p^-JOW5%69d^`_=gVx!pfZ{Zy>`BJQnB?Eu`GewEu$#fs~~?&MneUxUn!NeK|PXDH>wSYcPnfs zg!U($PAAZi;Hq3HUB7ML_5f^k7NdqXJd`|62EJ>J?*19t@tO3o97qF=1(xuMB(N#? zhn1zG#-~!-Uz8h#aorC{3X7sTrACKJP5CQXNzK!M9;>e`*gm z1f-kO`?S+=HyKJom#{`&h$Q=g4~)9&#zkNqRB8`9vW4GCJcb6J2e*dfr>@G{wO5=U`M`}FULint z1~a;~#8N;ohR1d8^kEPFRrs&`THAd-ZS%_c;l(K^`;VyhBPsF^FD&sVEG#%HBtwIb z)^FJxc8j~u{kvmIyq|#!SXH}7mL->1}Z>7;%#lXh6;4a2weNS=RS#5TqXecV<$sO8yX3FZ%% zY1q)uBi>(jhxbKNM5nkbku2X&5!BiftJh`r$x)4r8{`5mZtq#2TB9Zm^`p^udq%L5 z6+Vwd>m{vbML3{Kd9dfUXzFb6uWw5bY71oz6fw^aem^Z8FNgS+?^ah^kd>~Pi9J+} zGVxu}sfBanTS8q-{^=dQr+ubZGf@j#%S7l@N!D^rXope4J9w8K96Z-NJ1h`P6?Xp# zRj~d`75a`D92f(e_sWbvzp(%AcNwxTkxMr*|0QcaYioWN?e~eLCk$rU^6F6i_xt@P zvnB7}6Un}vZ3iG-0%KXeSFPenElkt=2I)oa!RoF=ZVm`<3#fDEynq@ zHm6OML!b0FcK7)K=~jhN4t4=Gy*4D{tM46pxO8*Ov{O#i%+Dh_*kjX6Ed!1<<4Bl; zw<*b%Q|I>#9%GCnYqCM#MKf?b_~c2Ps|x0oOwG^>6)Y`mo_0w_#&jF??JL~u(K=V8 z*LNKgw{G_mym{;Zm&uYU2TD^DnuRH=a~IS@9hW1{Z`3bftl(}*X_KQadeN;lo!g^M zF}$oFiC@_UtX3aNd^&y|W`RA5975lVmimHbYsz@AopGr*F~L`ekVB|iPExRyU`wb* z-qgX=UFrR z!_|GWNqV{6$tF3p__*$L%~j8Vf6CvkJ^zRLj%w@#wZ zG^1JNA%D4|K-KcbVX+>!#g%5N+LZgjgXQAhs!9nzPwwIem@8U0HY9~sU#f-CR_q8sJw|p-qAF{ zy28w2BKE4hgBW-D8>5wc_>t-gChpGwm4k5XA1ViFF1#!f*PRFyg4;@&ZJIUp&c@ZbU=F&r}~C$9!h8Juyy%1=Qv+WOYd z;C-1fw{x`yS+3>7oQfiA-&jmS9C}E?Xo> zhor8un0)gAK{Si_Zemm2NWGqlY!=}kG1&ImkI z8?YU@%LWbBXN3g0(wK}$^Aus0Qo7}BofLK>1vXpYKmi^)gRwW4o(x3>yLY%=J^|M7 zEin4N?e>z8>8g|U3c8mlKwHCo(2ud-xG#tp+(=LyKJy^!>2Mp{4Wa!_r_&9zkS09T zu?CX7JdTpS){;jua2$K&8qGD@NLw>Z3>_aPH(r87>>>;d{A3#&~JN2Nr`Hc%9;>@w9QL&52HsYH<2kF z4jG)SY(cP6+2g9gkM@-|W{nCAN~xV4+xP9xFMRed{!TB@z3+03Zfa9Fsr19YyC}3c zd={{W17wW<+_yKq@YTKeH@-jzWHB3d_b|eaN@tYZ(Gmkgcv?c8qZnn6HCjS8DMI*T zLvjRu(;^5T`5+B}VSu5(ED-!S4ut3{Ejyi#AH267pbj4pg4%%SD7(R}?i#}@8a~Nr z7(Vf6Hp460K3&>l=jdZZ5@Yfpr3Y;{pI(DMc9$YK(KfL_ z8XlUz;U?E(P2C{`N^9aTPSuArfg@on)}B2_pXHA&&Jj2;9By#e7}HAi8SIu4^D*$N za)>N>39?*EfLTv}^Gkj6XMKeZ;KemGkO#97sH4A#NIyFl<2Uk;_TCgO^OKuBi(G?qQ zHu|c)R?gc&jw&2xMD$6<7qR`@IDd+-Cv=KkI&*MR)W6rR#j>jodVH|cb^*TyKCij(1tC&rM|@UTz9^bExzrxPS@u1k_stnQ(i6-iw&OT9eer?)T3 z=KB;H$I~dnB~NX7giey7*jfhH9iH&G7UN=O8=ueP)MV!qw#{(d7nC9A^vQ1Wa4BQ^ zpvk*6{D{~D8Gr-BMCyM66Kwy&#AZT12XJWfye8LeGcNbq zT6$f}DXX=7Iio6LeYM=v7!)%H`Xe-#^?1zSm+#_Rwsq$Ja3|TJ?a0Gyjq{OB z5&g#`SsnX7tuf;ym=w!n{jZnamwyJG5z)=;Q_E%K*1l-|$SLlMc9rVF0v9`sKbQ>k z>*6N(enO70_`GOnpXZRaOam@<Xg)!5Q zBdrna)@f-gVaZ^WxQ|qg$A+`++LF67A~-v#B7AcE1uk|J)lrCzZ*YY-QqTR;5wYqx z$Lktf?Kxfce*5+I-atlwT4kG{MD=c9L*U#x=3J`(NvoPGf!geVuhUR&* zu|Y5RevXemH+Cf?XkLZIizp5$BAd@-Hj^-OcKj1;$yr0ue5v{ zs2v~6!n!`T{$o%`onkcyX0Xzt+?5Yl7Fq3$?)FJvHGHX*g=5&oSCinpuM8V z&3dq7YTEt)N-1Wt?A@nG8yy~g7@yc4EL<3yU47CliVoJG?~}C}<Jh42j+P_dZAUwk++SQpxJ|^q4!5?_pNC z^c+`PaKREjVYRiPqocd2x2~hlUSJ~Hnz9?aDz~~|p^VeS*EqL*XS>VUcmk(C5A_ae zVQ#`IN6Bv1{C@k2GRf6=zRAP-$Ek9DvTh|Ta2C%>=aWaH)Ru;s?6o_bplf;OKNu17 zeaz`o(&T6y9d+;9kJ_r$GKP@to`pNs6&48d{)?;3G>F0bsWeWbuo{Np#R<*^f$>vL z$55QDW5U}Z>s0^w0xpWDbS?t!g&#|A0XhsL zA0`Z=Fg0Smu-Yt)0rcS%LA`KxlV^7nG}dmpx?;5-Hve!w&294m2(3k_3JYd(G%4Y2%7zASE#Yq6bO$$)}o?Hqmk(SXB zC~SgYCuYzT-YOD8q^q?PFv8a{0uZ3pgGEM#0`_A!(?9Yx_7|g+BThdcw^^f?Y-Z~F z73SRW1At2|3MjJM5YTm$AKHwS;aZJ@r2&^;;aaW3=R~@ey8wq>^0U4G|9FQKNI<|t zZ^&9*Idgsg9*WdO8rQJy>e^uoGDv{H?~D?{&yS1p){F+fUSw9zBD~6G_+tjQ?kEJj z)d$2UI(T>mv|M>F00@ZjH`v7ShNLQKRY04uAVht?5Idkr)mo%02?9b2$|(Z{0DVUQ zxb(v_eX}{sZOkqU1U1(ayUGv%n#yPG!Ug>BAiU+E0RB#J0zA25W!%bef-(fqOwNG* zdxE*kW`5RZI?RV$6#+YD01&AZqEDC|x=sf}D_;;IK*RDwTLA=HkXAE6*QS&|Dm9GL z5gcGk5F#j*3qF4pB|t*~Kzvu?m?8xcpj9F_#Q^0e)f3zC0pMWSTuU6*h3Z%DP%KyS z1+q;A(ICfS7&b52Z{@s2>35(ML>3l=U-uXu{6GB+!x9&x1T2k)fY@CXX7XgSe57Ic zC^4sRDZx+9MWI*L7!vx@)lvb??<=>i-bcT)RF2Zj>5p}fuWE>13RJmJM1U}JZg`_h zR&df6c1y+E9c!fsfkQVA@IeCi zhcQjT2!6!QZ9jPcbaifcMfWy_$4Zm}Ky^65ugWExLjI_TFszzL0O&1C6|Q=DEk!TDwFkoA=gv8 zDbxeRKoo0K0Q|igX37oBC&mw2s%X}whJoK=Sk3Q+RyF_T@C~#mX-0T`R2kb4Z|FW; zW-<7->vj{=%p>W@F;BwuKFQE0|uB=ObCU-N==@rJHC@ z_ktNEEqEAZ6M znH4f~yifbqDkbA6HXQEk=J1Ik-jYlC`07ASk+5`R64oi3Vwd$QhSc3ATqQekR3%j7 zNKsP->UaN$gQYk(OQZ<4xVr4M@h9J9!u@rp%B>%KQYJ((2~&5*U+Zjb`Es}#^fMgo zW_|zJ|C^5M+WiSk7~KEKb_(`?2?PB876%ag{uT}NI(|kXe|)b?UGuhyzl*ZX3SI3N z(R^d#`qCncl93vHskdx*m{QN_iDE)j@lSD??sPGHuR0|gYH1`h%S+hmx|_J8Lrb|Ti0pLP|3Y>S}#^vn}c2E@HrjvjHc0($uLDri>&7X z>XFF6rW|`x&pHJC^(w*_PDlIBc85j^kH3TwMSt^4Pt>EsHF|Sbc7Jb+&lm6Uoi@C) zeg3PGm=s}DRROtcE6T(e`TK91ecQt9c-A_*`47(til*-sV6Vd}=`r6Jd&e{tYgG3i zuj1tXXPa%;VNLa)Z>=o2&UgITQCs~31vld?R-AXf*hJ@n|CB(&J?JL+JO`w@=rjKx zVI=hDB*?U?S+hS6cHJDyl-%1gt~q-6{2|&EJDoO&-%oP9Y|vUMki_TXEmsj$8^B)Y zv9USwaQD*YKfJLZRvY`4u<{FTF^4_$uFBE<#C+GUc(QnMjL(c(b`1ZvqtxX68v(LM z=Y93<6BDBH7n%H3-sd;-e-UHl2V zt&UB9-YkLB$=2@~YOqy7kikFzeWud+L!;PGFOx83gp!(@M!dNc{(if+$(BM1x?pm_ z9q%-a%3P$&b7UOAl9)37X_3cVvy2`%B6=Z#@eSGXeH@V+E56!8i~l z??;Tuuso0;gv|G)G$=F1zh^l-WJq(1vCuHLqJ(~)bBh4D&lYTy5b%iZN5z?FP|Uws zx^ERch%x+fTC(p~beO6>c|G%pOJ z&7+Wug;dnZbTr|kPJ;J(BVHmt5R6yKlNW#Q7KkHPDFcO-jk;@hk(TrDdE08zPo$kz zs|edcv?is+fGtg?05^zm+8HAlL7PqiX;y?lV3m6AHk)dpMQbzMK!?cyZ+XC>5_q}# z3hZ~mfxd(!au#o3vItLl7*?7HAYY-of+@ZFTy+Hj-Izk|%onhv76?*P5z5hUij{Y2 z@n4@OGs|DM()V-F|K&g=;58%&90QYwIy<252Kh~<;rFm6m<%5J=jLcxCCI`FJo_*7tYBi9*8c?AMAiz@)0-Qhu_V3FjEP@k%M*s!}8(?{)T)UP(w3eVi6Xf3<2(lK4 z0mqg>{Trp0`IrJZrD}k@Ht!PMDgnqUP_7n)pIZkMF&MVO)Czz`&tQN-l84X7WeYfB zw)$Uv8JG$K#}Lzha`=G=383o^KvjNKHWE9f8QiBoAm+iWuqT&*4G#hb0zKma zCuCzP90MKz?fmI~Yk12s0q{FErS#@B_Hf(Pix4o*eV2hPd-K(BJo`DWcJ5I{@tJ2>xK^OOM^ld#0)I|5+~-0)j=Yb4UF zTo-2+PF&_ga1IG3cf>Vv$nG?l$>LcN+e`d8D7n+g;-;t+_-ZR;=UfejT*_&xdnaxq zYPcC9FGA+7nS0U}+31V*S_I06dPx-2jCGU8tWkPCQ(Ht8{e<#}?sW)LD7zxmvgRJTgukgr zjoFq5{3fppGsV_tC9<_hvM5YV$_r@Q|ACKz5r;!D?uN*IjFRe@2~>NpcHW8h5s9J8 zGl4iyj!C}u@7$5?d)xchlWU9Hhb<$%f9;JxCi>(rVE7RHPvGOrKk%XbcP}T#B<3|(0^p~fEuip&ruaP_cZsn|NUukN5ruzkU zH)M}a3jc98-g_Mh(nP7{>Py1GrIM?@>Hl#z)c?90zES##KJ*JpcteQ85#jCZDPonoY`QF;BdX<@(M5;>Q7a)tuG-8HJ3i!JYMD%jkpB0rHEN_w$d(fnK%_Y@iN zHC7#LZamYX=IjLiH8)!Snj8Lo;4;bD>ObZN{`X(Z;{Vmhna4x*{eOInZHO^sC&s>H z7}>X&kbU3RY-8WXjHMXaqas<7HCaO0Lq*9>CS*6+B};|0AWMCR@8|JLetkdhdE7tl zWA1t0bI&>Vyx-@Zb6&X7j)PBEpHn}lGv@lKzo>)yh8G(9fb^iAdfGv{cWdJdFaX-JU_LhUTRanQkQ2a<`&Jl^xL;L6SDRyv?}gg z8}BRBW}~RFjh!4xleWZab9M!fEhc2AgY_zO(=+6k>P28ud+`e$`QuVaG3H_UUwhTMvO=Rc4|m_V(ju-b>*DI1qR9CC4COe*+KT?z zm`L-yid5Mk?0AsDIW~uLocC!r zhk*`p9R}l?{Sh4`gj>kC+edYfykeQp|E55#&B<(#1AoVSRTGYm;Zm3au6&6vth~)$ zE11#aS}QRPwOd3skv3iglE1GV&bN)CpmXb&?c%%*3j@Pdzif#@;$*+FI%>|{>EUqt zN}Zx=z7D(FB-4Um!LX(g0wBDxD|>r1aIrd#aIBqrb^kI4Ue|)MHuC{}j0e8CQl7e( z;Vu*}O1SE)VoP;85L2^2xN4HAr8*~S@lATvVx9M;cKzsci%E1YQ4$f32^@~@>Nnw% zCH_>i&B^T6VO&&wLZIPVY$5>#B8inncZn+w5>q`Q{F!AEp;XR&F+flc5#auv6b@sk z*$Bj)QGzfy9Z*HehAu+wBe)=i!VtBOPN0HSjwt3>wZ~po;^Ez|ISf5oOO+N{FoRGn zkyTZQ^LG55$170C4KQ%9gT`&V?el@JP%}+PWj;G+q-7ovH1B{mzUoX-lGLSsu3b>a zmXv#l4W^NA@4Q22R4o>;P|T9j!REXS3Fl3C&kib(k}%cyDB&J5**^yRxJ{(Qn6||O z8BmB<8@>Y2E-+(F>F{&|IpylOoSwu(N@It2riZR_`a2+gC<9QH2`bNpRnoHGpBYJY z@FK^nl~I$_JOq?_oy9l$5bs2ooO(+RfL7OVnfKiRdy>AfW{nbTN5p+iqz+^d?2e3k z0?YN?BRUUVjglsT#QS+K*O5Tui_fTySiOq#c2Xw-)~xJbywtMMAU;PN#Qvrq0NhNW zjfI5c2fXzhe$ce7Fk@|G+=^#*;N-FVNZU9szID*%{_P##wZ0T+JhR3d`1yYWaX+p+E zhXEu7=zc4rq9o413(#Km+w$QP6p_|XOII39pnwdpdkG*i#K^xtlL+L*z~%|8UV(-W z2uqKk^S?``jhGt*PYOXIbja&WB2>cGply9$z$qOC(JCSv`4TkVYtU>#CiVQW+=@y4 zNWgxxfdVOjjhEaYQL>4+jm)CsPf zv19KEOv&7P-UwSPM_SsWg;{5nUtBtWpND3MeOZwGAUG!Sj7^G$nV0KVc`@ z9-F?TQ+ki?k!(d}X$aGMJ4!o^mp`3M?Wa9MOuL#{M!N$8KNgeN?gokP_7 z7TPTPrQ^2K_$7UgC1Yh?zgqbOQ}$`SvdV9ts)Bd+s`?Va<3j3FAGJfv?Q1u@GN&h5 z-Ugcr1VxSJK1#?w>w~$=>_wPp891D1kr(fSaS4pg560$bK3KK&>BZToUoPfXK&@~a z^dc8ugnq&D8ecZP*d^v>5sI{uBh0gm_Fhqtz^O59Jj|NklWm@PQPs3+*@?nt_B0=@ z1hsZjnhHB_?)p+%X7<5RI6{Y0e~k@MyOI9jxIPYaFrjJ*C;Ih}khrwUo{S@AA!j6mX z*M5xalNYTJkC^bcI}Q%srL=TKM;^H!pVf9@SP3;XA5aQ%lgI`<1!4%`ec| zwW=lz<9gezcX~Sv9PO$*Eb9V4;Mt2;>3*gbJ!b7PW1y7G41iaQI5@N?HLxh)kq=`s zL}BXJTHViiIpn))WWTN{^m!mC|LFxto}RrIq%LRvxCtc78r5!pBSMuWQtp8Vi$jt} zP+fkzL!BY7t$8hZZ?RCI`!m_=1)U>~8k6NkD}q6o9lG^foJmi*Z)xqQ>D*4g3osz6 z5KN$|@a+bY8g_v*%+h>64GmEV$xDre_Uf3yku}vpF}`&@)ep?-1ROiNG2W%gGW2J9 zDJ<)at?NRqD0#x2RFzb;=CuSB(-bBK9Hv`G9QoYKHc@Z161c9OThQ9kFT044NnLgcl#SbR{QM``3Rqxc|~9wk!IS8I?M* zcqAL8fVWIi6+-emR?41kzTO0(1etP?lb`TteDWsjTz7Q*ea~XbpoZcnsEOUy%ldQo zSxp^l+Q3=*dxk_YN+Yiwvry{Akx%W-5X)k+qH+@&`WamJJmid3Hd$%KUT&VNYCWH2 z4V=)Fq>&5@MvPJ_^a96uh=&{tK?+Gr8D%wvMYRto8=nl(`(>f0CF|v za6uuC)VU=~Y-%59V0;GAZl;YQQIpFiuwUAp*V_^t3nIw|_P>4Q&FN&{PL&03M3!>F zLmbt71j^aFNm&)(%`^8`{EOQb@2|{ND4Pr8q%X(Oym%@jSvO$BlstE9jG1G%a&wu8 z3JimVWcUm0hMneU!-go%@Q2{ASsg!%1rxYV^R@n%S4?2gNb7Ln)pm-xnc~2yWZsYBKw?<8W~4A!EaUG=LR`1?D-S})Nz~AW` zS>JQI7`PiIRF4O%sk?rU;f%y3?Hks4`?#eeA*R?Y$*grkA@mc(nEtmS9WCJs7e8mi z06%}Un6qC1@^GM*Xl!Q?4X4L$TO>EDM*6r)x6nz21|$r!B>L4))d<7%Y`V5KVDO0% zrJbMwrIO`vDXUNFt7|H3_OIyG5%G%2<-N~DjK9^|@1hr3bddTu?F-kz4sW=dwC{44 z4}C5@OZqkdo+ptK2Tw1ksK4&uJ;6vK6=|ZW;VTR)4K!r3G}=->)q-NScP6^CG-5o( zy6cHi)4=5<-g!8NbW4_?;sYg*%?ZYT*78D}LT@6vbA(8rkdrbM6U#l^j=R=c@;NK6J^mD;rToeqg&9@zK)(ET`2l5a4l zV?H$M>I*;Wy{AJ~xV(rPXt*vKIZYk zWc1gk$!zj;-BZdMS;=tT%|5(lG{VBFJ?Y6+u^UYVJl;*x-@66ileZ*+Og6qcE5oWg z%gU~^heK+eynYcEf@t96zg7|CcojMN`ybX&ZnB=&QFGp7X#JKoL9HX$iNZ50Ff^!| z2c4>{sN+cT@h&O)6|RqantJOPK9LTc6E_YvL9)2#2HN$}5xMGacHGrN)9X}iP?*ea6eR^ng> zZc&Odab4P*B$-WY5W9qrCi`Nh*5b2FL2GzEjzSof{#Ve=h0uw&J%NwN9C*|HD6lB~ zv#rj?F+QU+?cGRH(MJV2*cvm}oW>2a>CpjvyIMy04iPQNET!{fY29m`>zpWw&|rpa z*rO=kCaV2W!RC*>;YZUTAnVc2AA~~5Ar#&JZrO(lcE4M8AR6Q6b5wHuHI!{|`q=sD z5)gjUl>GKk-3?g<)9vJ$1|qaykKPSzC{NUS(lyTW`ol^Gs^t(ot>-hbvqAtEHCO=V zcTg;=)%t4Afg>jWJ();T(6}uRY5Xgq8zN9Ixe|KM;)(t_>I^w&Q66vulc3eOjEf(KgY`| z#=uO2j!ih2vJTXX*9w>$i7}3B(d3sZVZ8J`Mlefvl|-{@cr{gx@>CmHL-{;Sflbd! zdG*XR@X6UrX?rtz=@!2xXpkoV=x)m~&RXmqi+CY=$478$OEcT9juA_ua4`Ags4q4m^Vy?0o zL#JAG(P<*jy%VHJ98xh!CAN$S_UaKjO;834zi6n`l*nS6NgUTDdJ5j{JI-*>X`~Rz z`buvl_xRpzTA`5)t4$VFn?#MxZ7D{AIhmA1^wwH z2wm0GLHc97N@v$IE|r1l8G%0dpG~Ou@x^TS#M0VjW9uq|&qDn^OytgDki+X7k zeY9oi%-QSRNrWaENO4%5L_m7LZ;{pGa-oMJtAE=6mRvo_IWFdSC@%Wj3<-B8aE?oj zo=kjPs_*b^`E9!d_ew~7QvLBH;J6;qp`zb!vm!eJ{MPq7ne_P1@I%3(-&Ri`{gd(k zCtq}ua(q|VpA=WZ>0c;Ed&*Bzj;{j$lTr=+E9GcE*-6Urm&c(`^rD*J7X z+D8=h$uZhV!tqGvFs%D+P5OTXc_$Md_pgV6&Tm^VIPM(&342Z^KkjD^o$zmqH9D63 zAD4VG_3_^P&$sKj@v+p-|L2)b0*?0|e*)4>0D!-^07D&8!fOWr&=P(~5&*#2?C|VA DSFnG& literal 0 HcmV?d00001