python312-base-3.12.4-150600.3.3.1<>, )fzwp9| %$$?)ՠ#Z?#P-è+FlTQyb_luG|]҈sf"5N˓ߌk{8)߫|!Wf72D ? d % J(,<@Yz  *  >  R  z      Q  D'''(8(9:ŬB=`F=hG= He I XYZ[\ ] ^bbcůd8e=f@lBuX v\Lw @ x @D y hH <z 8 H L V ` d j Cpython312-base3.12.4150600.3.3.1Python 3 Interpreter and Stdlib CorePython is an interpreted, object-oriented programming language, and is often compared to Tcl, Perl, Scheme, or Java. You can find an overview of Python in the documentation and tutorials included in the python-doc package. This package contains the interpreter core and most commonly used modules from the standard library. This is sufficient for many usecases, but it excludes components that depend on external libraries, most notably XML, database and UI toolkits support.fzwibs-power9-15SUSE Linux Enterprise 15SUSE LLC Python-2.0https://www.suse.com/Unspecifiedhttps://www.python.org/linuxppc64leO6pbasssoooab gbh<h 9^^7KK/$-/EE;-EEVeGtopjA]q"WY+.!)+.^6P^6 i i---yyq qddfC^KL>_wnD; ;;(;!!K&{&C=C_H3H22$iH$^$$OCO``v^v&Jd&JuE~=E~X< us u&&uG3;F;F9G/9GO:9O:Ma=m=3333 z 9U^RU^&6"&s((Y}l}F&:F&) 3)z"" Y - `-bbck=&-=Y+%+^{GU^{liSm*"!"h6^h6 K 6(69T89~C;;CsQ[{s0sKMK( )5<**M5MepH6HD<Drjs$UJZX$$'0J'0:).c:),,n9)9#5N$jN`a&&$& \ \83.8399  fVvf2s"W2s7T5_7T bboYo}_)$)WJ{\sssvvvooo%%q q׹&؁,(,aa bJGGG45UcQQgcQH?I_tit/~+/~5 GoRzoLGw+Gw7D:#b: `Q!`vEici n n:v::g27:g)I,b'YOn]"|c}VzBmzvf]f.C,q.C&"{&_ET_}R"91i9=V-gwm*& 8`'Ֆ4N 999Q-+RT  " >=>6kV 6B4CjkpOpkp"P"P.$.&&fMbj0f/+./B7z%iw6!69Eo0" p r d7J2|-&q{hk9"+) τKP _.GcJ[0|:)̚wP&}_ }es'%'Y1"k I@G"[S [0A0A 6 6?>?!1!1!10 (>>MTKQ6 Elv0 t) t ZOZG%Gpp;O";0q0q0q++LFrMM?M`J:`xbx  %%\\..&&>2>!]9E:%Y B)\Y N^QSQ |  |TvT?]]) #Sro)v&>0z.,0z G  q \  % % q q ) )5U55U   @ @ = = @ @ M M B B U U ? ? G G E E   C C33o3 % % 5x55x4342C12C4345W45W c c1|1 1|2%12%33X333q344Z433m34 34 33q35553383 $ " "  b &&& $ $ ) )  , , > > ) ) + + $ $ + + $ $ % % Q Q , , K K $ $ X X J J 3 3 Q 3t33t S S I I   9 9 L L J J T T M M-H-rDr @ @ $"$  U  } 44 ~ ~   m hhyyyy**ee[1[,==$3A539%315v4143&4024>4474/3A5vy9:0tyIZ:\13264%%%1%-3x50/35T344\3!4@2*Q2,+3d5355s5A4;B547&45]4464 z##0 t   % #%X&)#&)GGG<< 3(>'=bo@fSH"%a$Y$$$}}X}@;C&B t% %.P=?>SC T#33ߌ.~PѸ.mpm@#ȝ((!!19-!X-J7ppGfMf ],] s s ? ?  e f O6vGi2i%"%!" q'q""" 0"Z5ZS S b*X' 2R656566&6:*8: 0> y 1   X `h40& +p   p h H @  ` H phX X H   ` h p    8   HX!;CZZZ+v%+vSUFMnUF607 $"&kk4a}wF&";f/ n  8G '  QN,mi3xVvdd~B~ , ,R J F F(#D(z2z   44]WW  4 4qEH 2 2d(d D DAA6  h qq#!#`t *@N  # | 4!xH &8 ^; fO b  nE9e . B  .N&G.q|P|Y &""EEIQIB6Q%Qc6RmFks3EtVt]734?$uYh\(B=9B:7;:65q6-    ~~~kkk@;EjGGAHZ6M36M"{ "*)+Z[P\)n()-/+-OOQtHEH-  >/f-j I/k1%((\H%/7 y G,3v*IǤ<n#GiAn7SC^^Zri,TTT- L*,{?E%Fed_gFe*2bL!p4) %ZClƆm3. 2uZH.*,z[&M4 R4111hfhq<<<Xg rF;*  j jjMjFFo\R]44U4}1)1@i=@i=/1P&ȡɈ|8wV:$i_(H9`H:}mPPPe gf}h `b!6pAAAA큤A큤A큤A큤AA큤A큤A큤큤큤큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤큤A큤A큤A큤A큤A큤A큤큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤큤A큤A큤A큤A큤A큤A큤큤큤큤A큤A큤큤A큤A큤AA큤큤큤큤A큤A큤큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤fyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfadfy9361ca4ddc1fdc783d7ec67bbb1cca4336604f3a4ee7b1520ca904bffbd036e88ac7e1d573807a8e4205a6dad1e0c194df6bfce07102f8474420d8ff2fec68af3b2f81fe21d181c499c59a256c8e1968455d6689d269aa85373bfb6af41da3bf981d4c398849f9ebcab72300d9c1fe288fd6d7f28957b3b3fa3a493a5836d95ca8ce70b199497950f0f06def93115a6814daf1f961934457f59046909901487f56f7ed595e767c558ded05def14b682893105daf504500c3443b458ca2431bc69da2720e0005b27eb563231de4d1d1380664c76fe4ee75b5a293b1fd596222c69da2720e0005b27eb563231de4d1d1380664c76fe4ee75b5a293b1fd596222c69da2720e0005b27eb563231de4d1d1380664c76fe4ee75b5a293b1fd596222c63b9689a733e25bad74a64ecb68161e064e580ae6a4de90696e61594fce131f013b9689a733e25bad74a64ecb68161e064e580ae6a4de90696e61594fce131f013b9689a733e25bad74a64ecb68161e064e580ae6a4de90696e61594fce131f0156f7ed595e767c558ded05def14b682893105daf504500c3443b458ca2431bc61138b3a3b540725ac1aadc1efb52a479087a03d9c4fdffa26ce13f00402d0a320cbadf7294aa270363d2b3b5a285a193979e1bc53de11645770a380a885a0f841138b3a3b540725ac1aadc1efb52a479087a03d9c4fdffa26ce13f00402d0a32137adf530163cfbd1f3f450140fe0a948f7c95349c74b6200b42e8d6776333ad860f7ac10d6b37934e5068b372678ebafd2e2a942e91fa0f3bbb72d6d38da45d137adf530163cfbd1f3f450140fe0a948f7c95349c74b6200b42e8d6776333ad3ae5b04782b0176f86e23076194b06403c774948ee6a0d6f69de1eee30b27461053404fb44ae133028cf73d4690d2c0027c5d09d80ee31a2a0c911061783c40c3ae5b04782b0176f86e23076194b06403c774948ee6a0d6f69de1eee30b274617b6afc14a8b8e444b8d8059b253208ccf7eaa1f3ba83d61a2c681b943cd9783930a9c5b0c53510507c3ff78bab0ffeb0cc63e413fcf3b043435a62f1285784387b6afc14a8b8e444b8d8059b253208ccf7eaa1f3ba83d61a2c681b943cd97839b7476f82dc43e99856f6ca5c68b997d7e1cf396e93368b9e49e4fd46cdd6b921b7476f82dc43e99856f6ca5c68b997d7e1cf396e93368b9e49e4fd46cdd6b9218971d46bb009bd5a421f99d6f318316208985cf3614f47a644cb68934b9b84c149ba57611e168164e9cd9f7d3d6195ac126b9a263787f10adb3e1b832ee3a3adf46f71a643cbab436c6fe6e750f750903e7e3f2371d59b2ae6cfc4aac0bdda7249ba57611e168164e9cd9f7d3d6195ac126b9a263787f10adb3e1b832ee3a3adcf85f7aa4190c17946111ee4860c01c779561d06fd2a12567c2381d4772ac83f605635e6193994cedc308898d5e67201fb1b5eb5890d942c639322172040361e2656125e80a13aaa7e633d11b4c65e6ddd49655cdf4b0cba32003ab525c02e93e627d30a71232918eab9ab4c94213cc735fd1ccf3f3c377f8fc2562d7fc18b14c08489f55167e49765bbbbd3874ee4bf76dc50fa7a83adaae5c81b23ce2cce82e627d30a71232918eab9ab4c94213cc735fd1ccf3f3c377f8fc2562d7fc18b143e8193e17f5c1a0f64b41163a6c39921bc64b9bf65ed997181f7dea781f50ef6091f89151e232c516625838aa79ec4811436bfcbf75d6bef7f77da6baf2d164c3612316abbbc54f5d3ee43b76e23ec7bd70263aca4b76805d815c586a540201c47a82cdc300bb31919c2a84982735300c96ef2fb8d110beb8c37fa83aaac1fb53994f5c2b52ffa54626320cedb2a85f340c9da8e8471d2629ef95bda9c0150b368f38ae529b19d75525c6d170d37bfe1ef05c9ef6507a8a1fa5febb3a0aa86dafb41512e0bc0044ea11f42111069345f216d6c8415f615ee3ed4768fa6bc6842c0cbadb5dece762bef7a6af38020cfc93552eed413fdd4599c65693657c6495c066b513cde98b2725d8748e07ee3eaf18092c7e8c080f2aa8b8a3a1ab6b7c3724aad445570fd08374c8833e23d44d946e0d0a1db33062b73c2bc78306a32df76c2a4cbe576ce1a334444a55f0c7bf1c3d1b428ccb4a3a62e27c9fb170154328e7121ec9462529b0f56810858502e5a4348b1d5f27b25df534fb96ebae0e7559cd97802f1039376a33b3016b1079cfb277ff9f1bb749f9ea980f345c7967bef1d9084c0dbb82d707f3efdd67129ce3cd920fa2c3007650a63bee793f5ee5bfb08d97802f1039376a33b3016b1079cfb277ff9f1bb749f9ea980f345c7967bef1d88b7795a2077ccf74626e2a27e17f783c85ab7d3d0b81c5fa7b66eb0ef336daaa5f101b4f4191f8cefe3488be5097314d0129be764111de80f0ffc4a5d9389de88b7795a2077ccf74626e2a27e17f783c85ab7d3d0b81c5fa7b66eb0ef336daad5ebcce9432e8fbdfbfe3248fe28d19b135d88bba7dbf422757086f5c23387b966cfe90e7a834911529305d9c20ba79c4483137c5b6c70cffcffb4c3dc5af81fd5ebcce9432e8fbdfbfe3248fe28d19b135d88bba7dbf422757086f5c23387b9cd41f0611f1b3015ffa8e8fd8c24d0678c644ef7532f41d5b67a4d485c630527cd41f0611f1b3015ffa8e8fd8c24d0678c644ef7532f41d5b67a4d485c630527cd41f0611f1b3015ffa8e8fd8c24d0678c644ef7532f41d5b67a4d485c630527111aeac183f88824ca3b85da053e23b1c912b8114744af71a9f32da60e295624d8336c1828800b570777487fb8737b05fdb809c86e2a4b2ccfac3d75713c2c32111aeac183f88824ca3b85da053e23b1c912b8114744af71a9f32da60e295624092514154186fe9c2ff573113aa9e270763eda0a68d3ba623979234c82518c1a092514154186fe9c2ff573113aa9e270763eda0a68d3ba623979234c82518c1a092514154186fe9c2ff573113aa9e270763eda0a68d3ba623979234c82518c1a705fe12be67e691c17a64ee5cbbe3aebfd170b82db348d69f8698b0076c01213caa9a003bec64eb87f014fc5f60a24f5b9558803eeddcdb6ef1116d0e1bad1f1705fe12be67e691c17a64ee5cbbe3aebfd170b82db348d69f8698b0076c0121397a1f1fc62e9e5ed7e5a0ace85d3fc27641ae613aa516386372f802b09423e7f2770aa315b98d8c3e1e3b63829d13ada0511269632f6b599cc2f257b61a8ce5197a1f1fc62e9e5ed7e5a0ace85d3fc27641ae613aa516386372f802b09423e7f0a8269f117a00c9b8773f6c77b27bb2b7824b3b2da3ab3e7f47245fd471bf886c333894e0a69d893b6b05222cf262e58fa385d60ddbf8d1e714aae725b47bfc10a8269f117a00c9b8773f6c77b27bb2b7824b3b2da3ab3e7f47245fd471bf886dc2d9d67887fe0c05205986d31abfdfa0129594427b9dbeda8756b07c64766360c531d30aac19e349cd0e07414ec4569b2229a5c2b049593120cd40ce9681976dfd84292fc064de941304b7432e4d7cfcff116621fb71327bac1b8b2ff7f9d966170f184616f1fa4243b45e2c185afeaacd9e6b20fae324a4e2143bee02b1bfdb7acb6c6547faadee4b0555987452107e543eb466cedc5279ce6ae5a221d867f058e34ed9db117fbc52222e78a72e50b5fa19c30c8b59827af03ce0cb22477f8ce0aba00ae46aef7e13c0534c52a4bf28921ca1e56af0495fb3be733b7470053862803c8eeda0177284825a321678f61b109f41469e9106d5cfd313dacf3a18d5fdbdb6db99d9c963c042676953b53c6f71b851b1240daa534d7b6d15b1ff1c006541ade3b461cd37372ea069960c376696879d1682162a1f339e98fabeb325960c4824afe65cdf3ddd99907c59c0d9e67f5ea39bb34b0fb2ffa461c422fcdb006541ade3b461cd37372ea069960c376696879d1682162a1f339e98fabeb3259e6e6c4d8c6a122e42a504970ca214d2863a877ffd57aa423df64d69f34e1f624684a1492705bbcf934513b3cd0f97d7e4ea35287bfd85dc888e0056f65012d30e6e6c4d8c6a122e42a504970ca214d2863a877ffd57aa423df64d69f34e1f624eb09339c01432ea3631632ca947fe7a2184ecafee946bfc44d659621a123fce1ed1dd2ed692483d247488205903af3950141365e03e73a34e81d5e69e28afd5beb09339c01432ea3631632ca947fe7a2184ecafee946bfc44d659621a123fce143b7d9b2c10418b2f7f4ad50e71aec3851aa4e494dfeaf7e32b6fc2a42a65bf5740c3ad175b9e9ff89f7d2267f746d490ee61ce9cb0e2205ae94428270ce9a6443b7d9b2c10418b2f7f4ad50e71aec3851aa4e494dfeaf7e32b6fc2a42a65bf51aeb669a026a31e3e3348a745b2f6eb4502f55ac853ed04525e749bf2f1ffdc21abf7848151971793a239c89629d9eb0032a3937514b7e5ae6f11235b91c9ad91aeb669a026a31e3e3348a745b2f6eb4502f55ac853ed04525e749bf2f1ffdc2c0ce1d45559deac61f45e88454b0aa896aef62f7d872813ac2d1c663b36c44a81440c07b220254d73498fd6cd8b4e300ae87699d41dd1da0c3b70bf6e31f13cbc0ce1d45559deac61f45e88454b0aa896aef62f7d872813ac2d1c663b36c44a81df23e7ba30841f4a6c27037acc1ae6951c760cf815f3fc4a4f2b3afbf6bb3cecea8e4620b8cf3d056b5a5e936a5e22dc13cb52dea6383dc0407d430c02a7a4a1df23e7ba30841f4a6c27037acc1ae6951c760cf815f3fc4a4f2b3afbf6bb3ce30ed97480b1d983f868b71a577f52230e8d7dea8beca3b8ba2d1346a45865b29250c7273f97a417e609ac9c5759fc95baa9ea390a845e77039353c1afb47755030ed97480b1d983f868b71a577f52230e8d7dea8beca3b8ba2d1346a45865b29855ea936fc0dd2e39ed8b3464ca72fc3cccf6f98d19795fa713797133e72cd489daeb0f6f57d6d489704e91b9517cb32bf227a78aa14fdc0e845f27ed50a959a855ea936fc0dd2e39ed8b3464ca72fc3cccf6f98d19795fa713797133e72cd48b0a3d45e259bbfc05ebf11b402bd61cf11852845cb62db5de96faa3e1b2017903bb3c52a12df8fa4ac9b348fd6584f3720c84b046c55a65813e8ac83d76bda09b0a3d45e259bbfc05ebf11b402bd61cf11852845cb62db5de96faa3e1b201790ca7ac4608bfa97b091b236e86f8e6b561f5d7d0c85d2cc13ac3650b918db2dcd89b4462f24bba05936977106d92e1a37dd8fc21b1c11089e7408114f90a61dd3ca7ac4608bfa97b091b236e86f8e6b561f5d7d0c85d2cc13ac3650b918db2dcd8032efe32e24173410e9deff8574699858571afc5fc5667d0dd7243323778a2cd792dd5fc4d78dd91932bb3871efdcecbef130f75672dc90a2d5c14b420f67f08032efe32e24173410e9deff8574699858571afc5fc5667d0dd7243323778a2c03fca831f6f02e0e0f89698b6c93bb5cfb910c1cee06ca9ab194d6cdd5e05e02a43a726c51469526f2621f99203885f66c92fb4658fc055cc05c2b0cb37d200203fca831f6f02e0e0f89698b6c93bb5cfb910c1cee06ca9ab194d6cdd5e05e0239cc73e25190e8a195b1b97c31e39fdbb1701ab9f45b3989d488f23c5011b004c20b6e5ed26acae6e70555123c111f7f6f0948ea4c105752e7a3739a30b4e39c39cc73e25190e8a195b1b97c31e39fdbb1701ab9f45b3989d488f23c5011b0044b124586d3552f17f04b009252b5147baa41d3920af8e5340a022487148fe045c9dbf71bb7442fcfc2db52e3fbe91497e352c945b97e2ab06024b1474e8512d64b124586d3552f17f04b009252b5147baa41d3920af8e5340a022487148fe04579c97f186beeff30f045dcf8f549bdd6e14338fbca36a5cf159d590d6bdfbb58e580ea9275606da19d346a6c01af0e518cf45687e522b7442533af4470fa8224ea8991cf5ca84cc7d4f8db8e0126924ac06420fc94d309515eb5020fddf0633ac025d4ddfbea38baa595c209891895be6a953022d175da051400734759c71a68c025d4ddfbea38baa595c209891895be6a953022d175da051400734759c71a68c025d4ddfbea38baa595c209891895be6a953022d175da051400734759c71a68e99b641b9d59d11444da6933544324574c55d689aa34c2aa3b95239d666851986f0a1a6a389ce316dd78d4ca11dc2b01d35cad4ff226ec8901d7a82f8742a6b9e99b641b9d59d11444da6933544324574c55d689aa34c2aa3b95239d66685198125c029bde1f580f2ee586aa98740f65928e2acd6bcf5cc6fde32baea0add6ae8d1a60b10b0d20c554d349206bbd4a7be6696ec3b4b4825ad9d3507cd6a76ce4406a94ce7948c1d7191f97c0e3f6fdf86b4d549e6df12cb609d99b638ced6c03fc1ddf6038256707fdcddb8873a695fd7a64d134128cc0ddf0bdc93ed2bba9fcc75091a5f8ca6d44e5cd146ef7d622e06bc254e86d8f4d73c8799d964f38883bfc1ddf6038256707fdcddb8873a695fd7a64d134128cc0ddf0bdc93ed2bba9fc58a5f3866107339336cc5d5cdd357781a205b0d1a3e607910de31e6072792f2928c93a58865ebdcc2db8d91fbece95e0e48e2149bca1c29d3396c9a9f3da0e6958a5f3866107339336cc5d5cdd357781a205b0d1a3e607910de31e6072792f2974e8b7cd0e716a56f27c0ee4c5e0ca8feaaac318a56b0a9efa23dcacdec9a4fde80fd52baec8ea80c7945ebb5e5b6e4b5950f452c0afccfba374a880e618ad232be29e73db0e7dab61d1f413c653fc4a4bc8954aed7ae89970656d47e17e8cb3623fc827a767883bb0aaa9ed8034f4fbc40fb6f41c28b675b0ca639b558a3fb5623fc827a767883bb0aaa9ed8034f4fbc40fb6f41c28b675b0ca639b558a3fb5623fc827a767883bb0aaa9ed8034f4fbc40fb6f41c28b675b0ca639b558a3fb51ce1ef32def29f153a262a723a0fe9aaa5e1a1d47d0655e45accc07a3c3b4a0c2fff74544e33ab2523e34f7e3568c61c78d0964b194d67ac3974401c3868cd991ce1ef32def29f153a262a723a0fe9aaa5e1a1d47d0655e45accc07a3c3b4a0cd1748c6893edba8420aea96f513301239640f227d53b852380444583eb81101eed970a8c8b9277a5d554c0306167595283a7bc4b79afb78414697db78ea4b29135d6d35c902399f9b9c7d48233b853228f8bdba342c96a4357b0cd2b4f4b165ab55f94071a71a647ae95796e51b79d1b6730ddd6263e925453562be6938409d59b6b6a87af6f27e7f291cff10038490c024eb82d65df95ab58d6c2e9dc3a6fa4330884a971d69883a4488019d08bee678fd70f5238c6d248736b3bd1a6962a15398f6f49882443e6effc7c49a1ed68a33e6d361de4b4d7daf67888edbf3f82c0b11e19c54ded1c69b316b9cfd3d9f117488464092e4f517e71bce4e2efc4b0d4b8881b941c0c74ca7dd1cf4fdcd873a4a3b89612fcfc75162c60977488cb12216ea350ae4469d4af7987a17e1aed0436ef8c9920b8f3fa47c43731b1e67ac9c962c10e3a59d04a6eb3b2f306c262c4fad1d1cc3010fcd9b99757f092113a01146ea350ae4469d4af7987a17e1aed0436ef8c9920b8f3fa47c43731b1e67ac9c927029fa1d06b94b1417508b93a3a57a8e95ef7221392fa7bdf35f0b316601aebf0baa2bf7b2e534836a5e8843097f0145c291d688f2ab059998f38fd152b5f4027029fa1d06b94b1417508b93a3a57a8e95ef7221392fa7bdf35f0b316601aebb57b17304453dc02b89d6c3685a44cac98ade6ba459501d921ecfedae6c322c9656989b59f6d92d8add84d6c9ccd6b6cef45e65b5406ef253ab847c64d413df5b57b17304453dc02b89d6c3685a44cac98ade6ba459501d921ecfedae6c322c93dc891b67ecdb2827bd8f69179e48b477064fa4bf916c0f5cdfad18781a9a74a60e48c8e6c40e15b948ab147d6647cc00bd995acd8a1e0a83e2b42c7fa726e4b37d65392c491dacadc9901a1a4d747aa1fc745f3a9e4f37c8c8b21520f6a0a9977353f2aa5932491ee03b5d8b163caa1d13c304deee4bd64c799cf291208d57850724dd086b6cdeaa6a7865e389cecc435f29bfa2bef91f5c339ff509431eb6e77353f2aa5932491ee03b5d8b163caa1d13c304deee4bd64c799cf291208d578182ac2756ea226a81d2ae6e3d960874ee7e34fd08a71a2b0544ae4974b0b70d7df80add4374b812926757b9c0fb68e0a3b50ce30ba61401eb6aa1749c0a353d9bb3976a1330bdbd9808b76ebdaf9637102c656854d99b2e8b26fedcb147a0c6dd4f4e71191fe7abbeba0297e842cf657bbaa1fc614a2412e555c49b5e61ec29a3d42db9ba52bcd516d61841f2cf173e28a7002ce85cd9be9ce3a7414a14231a1d4f4e71191fe7abbeba0297e842cf657bbaa1fc614a2412e555c49b5e61ec29aa04861038968f0c601c751332120187f142dcafd4563d5c18010ceee48022c1099c510a9e1882e79fe71ce9917a7ff45209aed9dceb47fcbb5eceff24863f9b3a04861038968f0c601c751332120187f142dcafd4563d5c18010ceee48022c10633ab6fa54fededa71e28a4d6c9a4c5b1a5caa7f229c4838a3f40de172ca30b43adf006682af73fef431f80da0f5c270dcdfe263729aeb4ce927d02f2fb41bc48370c46d8b69dd72c3e166880d8f09b59533421313171cd523e0ddefdfffc775b600056da66a4346a4cce4a30e5119213faa6980a3c968b17bdc20de76f1681e06d23d4fd72bd80db726b8289cf087de38b57bd5afddf17dcc619656915b4bfdb600056da66a4346a4cce4a30e5119213faa6980a3c968b17bdc20de76f1681e7221cb0f83a69356d34bd3b1125afd495a4b81d925cdef08a50fc8a222e67ba38adc05b88572634cebcadd049e582eaf332b56b853612f781a90e18eeda2998d7221cb0f83a69356d34bd3b1125afd495a4b81d925cdef08a50fc8a222e67ba3d18d61888ee391ce3c20eb98ab6ddded81b06410b7ef3117bb6093cbc7c5ef7ce52eb1b0c182606cf9d654ab289c4dc0990228d72cff93b7ca7d2189a48bc5efc9084c7041bbb5800605b0eb4a9b27629dbaf2bb0168f37474b962321d86dbade920d2e01072a7c5f75afb0ae0e6e4a6b497772a6667d70d9fa9215af3a832bb88a5b5da2c37bee46d12cdd395e9796a9223924152deca9db9e50af1be929c3ee9de72c34b846b55d932815f6bd1db0c2920d05f8e02c1cdbedd41e4bce04c29153ba469b678f8b00c8fe55926cdcf21354b82830c96f1cd1e21474fc1be356d9b81096de0679f60568bf3ef115a3c471a3293592d2dcd1ebd2d26f57e754d95153ba469b678f8b00c8fe55926cdcf21354b82830c96f1cd1e21474fc1be356d86118df3ae1ac5208ad0bebfcb90ce498dba90d6f57bd28837777256fbc764521f0b17002e6f58b2ab892b3a1d031f48c0f872907c906a73b39dafdf56b425ad86118df3ae1ac5208ad0bebfcb90ce498dba90d6f57bd28837777256fbc76452db58218530290fc7d23ca49145c866f4edc1cd37c3ecd76bfb37d593cd26ded2093f149cc910a88e01fbf71a0813d0088e2848ccf163511796da6bd802a467c1db58218530290fc7d23ca49145c866f4edc1cd37c3ecd76bfb37d593cd26ded2483d044416fa05cfd6ed19fbafa8d710df91e3f38116fdf054b9ef92f86b29a40cbb59eb584eadaf1c85e9e6ff9ce198af92c8e5add38d3eb684bcd8596c0dc8483d044416fa05cfd6ed19fbafa8d710df91e3f38116fdf054b9ef92f86b29a487a6c67a9f6033d7560aba74691423dbef8625f7cc56626133316b23ab7733eca83094d1778a96e67769a1622653220b3892df2760fd6d5dfeb0ddc2e94ee91d5d9324617a1c8daa3852bf9b20ae8b933e7a96caaebbc0142e25c9d5a1de3b00e3e4ed95bb05ce3d3c2b90c4f17d222ec2d48e67800a936908b2d468943ed597baacc4f95e3a9e305b9fc4e6dbc750560d90706e9b655230102050fa91af88f8e3e4ed95bb05ce3d3c2b90c4f17d222ec2d48e67800a936908b2d468943ed5978135d43796b8b6bf275b1cc56b58637f0d1a99e5f5449f6acfa0ad3803d85e36c26263fb0eac043d62989ca9eb9675b3809e9275ebb125c25ee7ac67a1d1c98a117645ca5a4a31bb3bb2cfb0961cb4da469a4a7e7874c26ae1312ace1e4b0d54e95e2ce9fd2744fa918201c00f9333c65b71148ec674e0dd76a9b80cbafb35f7d86f616bd6cd5851091a45752670096049f117a9f7a0c44ebe1f35d9b3371bb3e95e2ce9fd2744fa918201c00f9333c65b71148ec674e0dd76a9b80cbafb35f7a038d51e74b249555804252de769d916e24c167298699d468cf489c1e83aaf44056a8b6de6cb19e9658346b2203e6a173a0b76563a56f9b0766be1999ae6b8caa038d51e74b249555804252de769d916e24c167298699d468cf489c1e83aaf441a6421c02f80ede259fca02271485cb7b3ebaafb0a09a43e492d1c8e949d9daabb1423e3ad5a037b57f3b0b5b09980cac0783293677c23c5f0e20da6d5fbafe41a6421c02f80ede259fca02271485cb7b3ebaafb0a09a43e492d1c8e949d9daa7f5515e3b5c322dee2d66eac7a381db5fbf94ca965c77006890e84cb5d4af6a1e284dc69e4eebe0e5191d64871627632fd1fa304419ecefca2a3c6910463e4747f5515e3b5c322dee2d66eac7a381db5fbf94ca965c77006890e84cb5d4af6a17a06b7946143047558b5b62a70197c9f00d3f060cd202c5a67ca08d07431961575a3cf503fa69c029b23312de3f535d277987f41b9bb5461a4b28c25b33b393c7a06b7946143047558b5b62a70197c9f00d3f060cd202c5a67ca08d074319615b147d374d3385fcb9d7d7a3b84883947ee4e819ed1b804bd5d280bc82a6b7d4e43c2d48251539a3b448e0177bff8cf4914143ff878c76d8319712a9fa2816cdfb147d374d3385fcb9d7d7a3b84883947ee4e819ed1b804bd5d280bc82a6b7d4eea4e6dc665f3b8ce8e33c09903d77c2dbed47695d1a69d390753b0f6679d7d01eef7c22b088cc0c9c356b95357fac15d01209ee0beb027bc596c1d151fa147e96b7356cd4fa862e2f34539d73d8ffc860c7b046b95fe72e59cde5b4822127d37723534eb9a989cbf5761ca58de4932a565f1f74f38a1821e0def92e9bfed03166d653295ed6ef3797d4308416d9536a60a26f782884f8e282f205f7c861d81da723534eb9a989cbf5761ca58de4932a565f1f74f38a1821e0def92e9bfed0316815694b70917fef4830be1dda0880c41acc3dcf87f6496a33c70e24598c4f8619ea68c268518a7228dccc0c4c08876dcf027e067b92fe24a8bc4401c50437e8d815694b70917fef4830be1dda0880c41acc3dcf87f6496a33c70e24598c4f86119f78a1047cacc4ba8de2220a994dadb025ea80845694f56b75478f563d84638b6fa4c238b6c857b91b8549b5fbed09066e800d1025f8a9dde9a41f5d3a7c15bb151f3b2563b00a0dc47b96e7ce0823f102656a04656376859285b50200157eab8131d0056c9fc68a6878574f88d1c0b22e302dd46fa2f13cd7217486949e1ef1047b52c714d0778dc37c9cff9d8310bbfe5cc81989687ddf40aa691b0466522b8131d0056c9fc68a6878574f88d1c0b22e302dd46fa2f13cd7217486949e1ef3b24e5da13969be9a8f3341fec46ed5663e73e6b9a626ef2bf025564404b96fa3922f3425dc3d3399255c93360820548c2d9c804b2b3a8517162a4bedbe175a73b24e5da13969be9a8f3341fec46ed5663e73e6b9a626ef2bf025564404b96fa1c9f5f180d565d95594b3835b65b6d46b99cd652e8e771b517f93be2ae0f7c78aefb1f2dbfd7b8991f7a1a8af8fd991abc61f607f17e20a5dc0284d6aca5693a1c9f5f180d565d95594b3835b65b6d46b99cd652e8e771b517f93be2ae0f7c787633f11603c51c0169909fb131614a0d74a7cdecb1d2bedd75b12fae113ac6c057f5227bc445239567d796e17baa3b3256397b8a2fca522cffec0a7ad0476ddd7633f11603c51c0169909fb131614a0d74a7cdecb1d2bedd75b12fae113ac6c099cb544035d4008787f3874ed25c3d68ce505c5a00fd6b7f242165fc056458db16f3bbf9ec20238ab4077d713f7692374a4bb3d9291e93e3d8e6f894db38f79c99cb544035d4008787f3874ed25c3d68ce505c5a00fd6b7f242165fc056458db0bf1a445c4d1d8a1279c41753b189ee2c9ee976b4cb5be3c8e87dba29c32e48a641762aed59a1221e89cb21aea1dcd8f78ab7e5af0391449c5ba53a64eed0a77db6b1785d27fe4a805089acc44abaaa69f0c7d002c2fcaf1a859007f6750eb003f027ab3b10e46d7537478b1f3e8bffc6d9ec96c6e08ecff97d8daab779e08ed2baeae20d838ada8c814d59854d93c9b85dbc56865bca538883cfecad340f98b3f027ab3b10e46d7537478b1f3e8bffc6d9ec96c6e08ecff97d8daab779e08ed0351754b4c17067f7055bf0041ce710eea65f4b1a8b34e2ba130b744625c62c2da9159584c953b9921d7823e748dcd4ff2516cdf8c0089dabaa6b4d5224d9886732d42d698be541292dd1f32a3fd513053147b94c1403ef02cb6fefab5ee1be94cf067eb57753966e245b2d88d5594992ef0dbb8a16d387a8c6fdb4ccb934cf7e4b9f51f68a78fe57e78a2f8e9417bd556923989d514df29412ed0eeaab5bd671543517acb839a23023afd72c36659eb408b6111e31c724a10537fb27fa4ae4123e64aad5bb50d6003d5dec6dc5cf17e0d3be0b2a48721f057731e27ab3f361c18377072660878b03e63635911108645b5d3b09dbcece38ab1a888bbcb232a3a23e64aad5bb50d6003d5dec6dc5cf17e0d3be0b2a48721f057731e27ab3f361cd52d26270c5ea497933472df97ad331434beed5cdc2a48d66efc795a1d9dbe1a8820830856bc6dfec6587a14634a8fe6a84390babb2459b2784438037058936fe8fed0edcae4171d7e9b6a4f6868c501b6c9868865cc3cdb1d45f4402787c086788416c3190519e6753672a8673bedf0c25f971b5dc7ecc9b234a274741f3aca3d2ec44fa6538e86d5b0d1585c0a495d1af8b958bb3fb362fc7b17bb91c2af03f0d89f9249bea988915c4d7717c709f8e6a6ca9ddddd1078f0a4e5de57a77f11bd9e18b0f5f89098c2bad170530c93e0319567b74bef349840c1f8b39028276ce39c0448d65fe227c59e82a12c30f842f06328c4aadd81338a8f1dfacd88c9f7084381dbeaede2a2e5087f284f8674f8e2324bab2c57d3a1d9faa4b8c96a5582228c66ced6bffd92a160af3708de87c3b6a3170f0664fe73f8355a22e316b1dde6984f73ba5302fe41c5e9d9dc86e5be83aefb5f57692afc09a0b9afa948a688228c66ced6bffd92a160af3708de87c3b6a3170f0664fe73f8355a22e316b1dd00afa1a9c61d033a984073b4e831db559b2370dde018e67621ff6913f4748ba08e2ccdbcc575bfd5423b64493312a0e8f7f8a53397241f0e0f4de71af08fe0d200afa1a9c61d033a984073b4e831db559b2370dde018e67621ff6913f4748ba01c232b269d0b1cd82853a00e9203cb62c640d40f78bb005499d808bdc6ff68f5ee9c3d0bc578a7d73dd0dcc046d7df9c54c6028e38942c5c7ac3e44f78c2295a1c232b269d0b1cd82853a00e9203cb62c640d40f78bb005499d808bdc6ff68f5005d7a65f680d61cfff12ff0ec30704fe35baf7e4c147576736057841d960981e13773709f659ffd4fdcffa633891566322de51d56a550e69b14c37263947a148161c67011a5bf25f2f3c3f67606ba4ed8ba06494143ee2118b784566bbde6fbab8d35b54ada8dacb88a36d05fccd8c74272229b3e4a71fa56517d4d5bab9c6659688ca22175dd133f5547554d808e690a8d1958b1612d5c5b34f59c9bc511dfab8d35b54ada8dacb88a36d05fccd8c74272229b3e4a71fa56517d4d5bab9c66e859b096d39451d3946cefb260c769f40867b25357e5f0f4400035ac1ac9e74e80d5cb529b2f415692eb8aaad6eb3ab5c8094d79d05f4a16b3d5eb05130e56d2e859b096d39451d3946cefb260c769f40867b25357e5f0f4400035ac1ac9e74e63df45daf841f74830779f472023f1962e70dd6c5b31434738b5acffd1fb19e6566223b8d704c85622a2ec5204a8329eb9abb05be58589351c55fb3de26f49e04638aa2189d6e0091e6b8ef73fa95e165324324c3ab72e9c56cc3f0e484aa36618f491abf23bc6113a116fbe0b5910605278dad17814486ca0821f9720551254e8cd0fbc4520ee32304ab2606bdfb57de1c04e67213956762bd884bda2e5beefd7244f9c10e61d50f1b59e506eb02ce9244ab454be66587c0892375c19fb64c51f189d510d4bce4625b8fe624705c12900f2b903bfd597e58ad8fd76c4e157bdf7e0da69e61e5fc88a0ebe7456dc14d0823555b50a8643342cb939a94671cc891f189d510d4bce4625b8fe624705c12900f2b903bfd597e58ad8fd76c4e157bd4483e66775ef48d8a2e019bfd867294d94100d4a04a870f37bbceae2736f03ec9d92d29abd7149ae2b455e351ea0f0f4b99744f901c54426ead9cae5aae00a714483e66775ef48d8a2e019bfd867294d94100d4a04a870f37bbceae2736f03ec81abbea0d9d4d381d968bb11c817c698ff8517def056e924546b4568e705e4df756baa9547009831805531158a7ba1ba25d04c01f887384584943a1096a0706181abbea0d9d4d381d968bb11c817c698ff8517def056e924546b4568e705e4dfe18d05bb81af85149440914fb190522fa3d16dcb98418f011a371c02aa5ff47e3f11c3f4b5b584385f6164eede8c8d7c65aa6007ebce272a8c891cb51092de06e18d05bb81af85149440914fb190522fa3d16dcb98418f011a371c02aa5ff47e63a3eb100b45c5261b9c35c66344ceeaf2c2df0269038d9e47257eca93e8195c56cda79d80374c2ae3fa86adb02223e04fb69c04cc52b13e2b323cc57c1486bdb05767d3dac88e0167172ac9732c9ca13d14368b4d9a01f44bf3133e203bcf22bfaba769ad74d0bd00a5d667326fb14ef0b0ebb05d44c137e59b38b10408ddc7bff2897d0aad93f8dea2265d4c7aaf638f51d4ab931c6edecd7891f05f43de4bbfaba769ad74d0bd00a5d667326fb14ef0b0ebb05d44c137e59b38b10408ddc79b0fb140bdd1bfea3248c77ac40f4350141c7013b161a461ce209c359e9027e0ae7f8824546638210c8dfd1cdcdbae8a18a1d4df6dbd15cba99c5843947151b415ee1ef282edf4bbefe90110d9b943a5aab8dbf4f7c492969936e3e129db76aba831351d043fcda15077f5e4a04c482f9dd44d960b0e911888de419c601db3fb05b252d05194f8c39a0b80c773bba9e7794a1bf294590898243da295375a6d538a964c8ee3ebfae384e12548e8ad6ea70fa10625760fccfdcd496d9de5de95dbc8ab0ad8257ec1a8466d69069a5326ea190f13afcddda72c785870c142ffd23fdcaa034db7f1de294b6760b7638e49f9d2c3c033d130ccdd80c6e1210f4e5e55c8ab0ad8257ec1a8466d69069a5326ea190f13afcddda72c785870c142ffd23f0692f411b30a15feed7db87668e7749ce51360b2ffc678a16a5dc7687a3f34d910f0aa9c21cebc022e6335ab04f606a47f628292869e2dabbb4fbd6683ac16670692f411b30a15feed7db87668e7749ce51360b2ffc678a16a5dc7687a3f34d91cdba116838bcb0ca8e6caacc8ebd214c88842599e210827e1dd60f32a55b7c937da1466ab2962d091b1b5c024979df4c34459d57a571a8bd73bd3223f65054f1cdba116838bcb0ca8e6caacc8ebd214c88842599e210827e1dd60f32a55b7c9e7d78c4cce62edc4671bdd58c6814e9f13472b7c7b18dd41b56bcdd58b3d494a6494050189e8a29e948fc26fa6012fa78cb020ccb04af086b64d06e646a73cdee7d78c4cce62edc4671bdd58c6814e9f13472b7c7b18dd41b56bcdd58b3d494a94097f47a4ee95261e35210cb240ad3f584f80c4f569b5c8b2a1e1c6696f4e4f771ca966321ce79464b2985623ade7ea5acc367f7a8ab8d69f1d26e5c656305c94097f47a4ee95261e35210cb240ad3f584f80c4f569b5c8b2a1e1c6696f4e4f6e87c8b535c53c5513be55d88910bab5f56e2a1bf14f87248e5a31ba777effbdeb61f0e6f25a205bea97ecb86ddac3eec5b6ed25eed1c9c655d44d01ea320d3e6e87c8b535c53c5513be55d88910bab5f56e2a1bf14f87248e5a31ba777effbd94dbfabd8ceab507a7f0c9e9a312213ab428038fc0376e1425c3d3bc627fb11ac885095301bbae0bff8260eac21fdd732ec44a5c32ae7072a9182746bccb6b0394dbfabd8ceab507a7f0c9e9a312213ab428038fc0376e1425c3d3bc627fb11a224e8ddf021a95f286c2962316784a9ce67adc10b903e3e7156314ef13046d59e97d7a2cadb03f72c8b82f0b0ffc7382b0d81786341fad080554d4d35e1aebe2224e8ddf021a95f286c2962316784a9ce67adc10b903e3e7156314ef13046d597f38822301abe8d3e32e4b20f1cec760181768928dabbe4808bf06d2f70bfac1af3ec1222a66a10986ff105c9c8b4a5ab4599cbb61fa35edb12830d2661fb15afd1945af918ea1fef5d3b8d2a6feb3131ab5c6d4934e7a07a977ef04954605aff9f7c59b7345ce79117b7d31a9a203527c487814d553e8785eeaa39bb32a903fac99341490f2d1c4792e40100687631e6592011515d0872ae00ac7ec3f0e33a8f9f7c59b7345ce79117b7d31a9a203527c487814d553e8785eeaa39bb32a903f982282ff97db03461ce4403cf70f6b181b6b5b2fe90651504fb80235a3b467486343ed5d6a04ab1ba13c0762ad4344c4f7ff1edca0099b4298c7a897b373b546982282ff97db03461ce4403cf70f6b181b6b5b2fe90651504fb80235a3b4674863a8a83d0b3ce4e8cd226675b8a65b5903f97ec0974ef3262aedce4d8044f1206252f2fc835536ffa30d591c2dfbc2ae22197544b55f5e991484d5b07902a8700155188018e623d53327c1856c82485a556838fa334924c3e881d5e72e035eb02a16aac669d64d188ce931e9c25e4adb4558b3e5512cf3c5e9f412c84d93507f8595100b756916287081e51642ccffea050745c6a28779c4fd7d74e1154872672a16aac669d64d188ce931e9c25e4adb4558b3e5512cf3c5e9f412c84d93507fdf31c85b1c320055fbe8aec9cdb8803c4208c29d647d1aa89eb83e63b75684b4c52e080ce3ffc8fbf54b1c38e0eac088a957b349102f8a613bde27c0b942a04d814841f80a63cedd5628840f85f34d85ae1dfc44504229e82e02d5a96aca2933cd44d14dd52c796944a9c1c9fb12bf2e666409a764e5ecde0d48e747987fed343dc79a0c6c8354271bc2da5b63b91154a4bbc32606a23f813927e455637715accd44d14dd52c796944a9c1c9fb12bf2e666409a764e5ecde0d48e747987fed34893a66f97d79dfd2af141b834db6fd184a90497d6f58978f5a945bace5a3b34e893a66f97d79dfd2af141b834db6fd184a90497d6f58978f5a945bace5a3b34e893a66f97d79dfd2af141b834db6fd184a90497d6f58978f5a945bace5a3b34e17092df754a25de89e1e4b115eeda7fa87256e93545d5889a4a2dc933531d24817092df754a25de89e1e4b115eeda7fa87256e93545d5889a4a2dc933531d24817092df754a25de89e1e4b115eeda7fa87256e93545d5889a4a2dc933531d248734f70192cebbf14a8484e958501b8312beef48b8b086475155cba63dddb5ef0734f70192cebbf14a8484e958501b8312beef48b8b086475155cba63dddb5ef0734f70192cebbf14a8484e958501b8312beef48b8b086475155cba63dddb5ef0aab5a9e642e72b97b8a71371f51420f17df5145c7ae959099b011042794242382096eabda30e87c0afdaff3eeb5ef6227cb5fac404974d3a0046c31e80837d10aab5a9e642e72b97b8a71371f51420f17df5145c7ae959099b011042794242387e4fed6dfe12338882baef8a9fee1cd2cb49f11b79dac23bc4aa9d16b82aba0c5c0f3d6384b9ffb8c4751727a2d4939554e2af9b86a593938b8d4d1f9a33f2237e4fed6dfe12338882baef8a9fee1cd2cb49f11b79dac23bc4aa9d16b82aba0c65e18acec6761c93b1a11d8ba15019b1f08efd5f22c52a18246ae3100556f09467cfcc9cfbc5cd320751d510aaaf82a18570d287a8aedd73c0c18adf36507c484990cd49a05e0ef1332d5f3581844a7f0157a98ca2f6c628d6292347cb50265242adb870e2a984196eefbb152cf1c2b7f05cde7c0aa89ff7aa0d7c234f0fbeb8a8f5a2a99accfef4af76c9ef1f3cbdd530e32adbe49788b16e29260e6bf5e73442adb870e2a984196eefbb152cf1c2b7f05cde7c0aa89ff7aa0d7c234f0fbeb8d67bf676e35f034f1064c065ca15e1524b0bbcdf5f93337e5bcc6a6cff9e33df38844ac13e2a25b79db603d420c2e3c51f443ac3846a2dcb8c6866badfefd68ef12a71f2e14be2b417e821cf93eae0fcfe2ea3add276506787125b1763b56b5b242cfdffd922a51c0e72533b045288689d611a2b8448041aad06e924d89e3500242cfdffd922a51c0e72533b045288689d611a2b8448041aad06e924d89e3500242cfdffd922a51c0e72533b045288689d611a2b8448041aad06e924d89e350064a471b1770d5044cb7d525288e0d1eae34afb21d2c2ef406799dbc953374f13ebebc65a9a18cd0b29b19debe95c180baa3672e98d13f575108915db9712e0b432f58c6d7044696b58fbe368d6a9a07a78a5f446c60fc1367a24dfd98ac7195b7bc037750c910babfd64992ff66dc94187165b67eb654de83ad71d68cb89171153be262adeeec3fb4d5687044a037b8338d3c669bb782e06c963fc0e7dec7ca67bc037750c910babfd64992ff66dc94187165b67eb654de83ad71d68cb8917116820101eb5feb1d45060c0389f96335d94adc556209e35c7e10f3db805f563df7ffaec62dcd7d4614ef0b2bc88702c8e28938cc8fe06d0af17a412c8864ca21742d0b83191f3f6ca0964523ae979f5a76f7ab2594a2c685ca770d340f63cd1afbeea2016e0525087070edefb6cc704281d54e7f70ba80768e16c62a4da796510b9a3d76332a91427dc2b2a94d3207a5e4bf572b7383f4f515326d5a83396f0b5beea2016e0525087070edefb6cc704281d54e7f70ba80768e16c62a4da796510dff8e34120b844d248b091c6b469836098d12bd10656d81106e7b22dc1d2a968ae1e145ce4360aad46d38d25d0960b8ccab97879a058edc1573fe6700c814ae9dff8e34120b844d248b091c6b469836098d12bd10656d81106e7b22dc1d2a9681b8ace955932bc856788c1969b568ac11710124ea79c253c3a0b0585dadd7bad9f17e85eb2762e390bf6fae8d660fe0c45a87560352158a57728d7b7ca85df8fba9107448fad52f68b516347212467961948dc28cb7cb91771cc67e70f7cac439fb856cc560b21310f3c67c88ed731c2e47b8c20c67c06a911dcc95dc45c681e797d89bcfcf374a4da6a54a7e7db3b4cc8da01d511a6d60d6ccbbad5a025c7ce9fb856cc560b21310f3c67c88ed731c2e47b8c20c67c06a911dcc95dc45c681e4355c34ea0c37cccc35adf9695e12c1a526bf8a7dab19155f7472512234f23340b1fb5ed34d9ff758e10bb2faa5fbff3242d805eb7364c64335fa21f45345c614355c34ea0c37cccc35adf9695e12c1a526bf8a7dab19155f7472512234f2334408abcffa6fa8f4904eb5b281d9b23757597d556b324e101202ff890fcb893f7ceabb2fbe1de83e0b71c12ef3ad9a6dc3acf48538c673d8e54aad059b2834750408abcffa6fa8f4904eb5b281d9b23757597d556b324e101202ff890fcb893f7617c1bcaa7df88eb81d12b2e63fd2000c14904d5454f63818a632c487448c450617c1bcaa7df88eb81d12b2e63fd2000c14904d5454f63818a632c487448c450617c1bcaa7df88eb81d12b2e63fd2000c14904d5454f63818a632c487448c450c04b0a5dfb0615436c9cdc00a7df7dd5b3bd31d36e01ed6ad28897d02b10292baf7ce755787ecc250af56ecd0311239644cd2316ff6b47a859d20f0101acf5fcd514e556e0297d86244e3b22135fd64d10b9215cd1d81b49e2537ad4f4a47c40abf2795aebce162163619e908c1397bb592956e4a559d0f713e702419d1f9dbe5ae9454c704eeeb8940f2a2f1ceec907b872e382b2ea53ac0053a7d8a131b6faabf2795aebce162163619e908c1397bb592956e4a559d0f713e702419d1f9dbebec04c13a99ec0205dc0965fd8d2ef058a836cb5b07cdf4d6b68997d8a3945c5f7f42137b7101681398c497445db0e3103e10b48c77008291f8f338a413c5e53bec04c13a99ec0205dc0965fd8d2ef058a836cb5b07cdf4d6b68997d8a3945c5f83c1f7acf7c86bc3ca62796d80c464005606671468db5d6652d26077902ad6ec906deac643cbf740da695accc616230568ac4afc0ea3243ffb2c64db9f2f9a1f83c1f7acf7c86bc3ca62796d80c464005606671468db5d6652d26077902ad6ef5b5d252400dcccb2bea9e1de06a8f9e22c04d439c4b7be32691de6d9505814169b4aa2ba34afaba8b731d55efd57e49e3581ee3525644afeaafb724e3ee82dcf5b5d252400dcccb2bea9e1de06a8f9e22c04d439c4b7be32691de6d950581418aecfa33d350d5e41a3990e83d5293270dff637cde4d29ce070b404d3de2134086a678fffea3825bed5387191275f060cea5a4f3788ca0d9b0e7fbc565bf50be08cdb326009d959ed670ce7a40d6559190b43a75df379fe9d730400a734c43221f8bfae4dc2fa662c25a5f2261a473a2aada32c9d21d573cd0b5109afde385cd45feef46815554467ccd0a1a477047b4ba012a6e4e7910d9c8d90e27a5af42031f8bfae4dc2fa662c25a5f2261a473a2aada32c9d21d573cd0b5109afde385cdc8318d18e7d38f84cd89db0219a6a3e1fb2cb00bae516db052c6e62e0b15b860f46d647c1f51979fd4d40d011c956ed140e6ecee1c533545289f2e20ee381a85c8318d18e7d38f84cd89db0219a6a3e1fb2cb00bae516db052c6e62e0b15b86039bb7da5a3f24de38689be87b4664919b1def10548790a8f5e05508cf57f88fa1f890618ff9999fa2f0b6077aae83813f4df88469caa40df66788a978034bd2f39bb7da5a3f24de38689be87b4664919b1def10548790a8f5e05508cf57f88faa2f5994c4b61713062bcabcd03a93c916723895ce21bc6536d425c0480fd32de9793cf89fc4a4aec9bd1571627cfa8d0f28f74fedf83ad62a5125d8aa38d42a5a2f5994c4b61713062bcabcd03a93c916723895ce21bc6536d425c0480fd32dead49028aaa09facce164c9b789fd7fc7dd152e571de54735b796ebaa35f4c00b01b9d80c3c26cc8ef114c4caa180d94da0687fc693852d9d9a1820a962c873d3a97a44ef74e68b870378686d3557909dddb52b3e9f28671f3618bbe029fa83aff34dbae4175d94844abb8ae31ea85d348539d119841dbed2e891031ab4e29089af1b89c63b528694d9a617e892e2ba32c1127a1c7092958980d9603ab3b07092f34dbae4175d94844abb8ae31ea85d348539d119841dbed2e891031ab4e290895002648f5e09c7c5f521c7837864f9eeb02370a2c67c5b9d84b1191e8644e81bcccb238f1dd6ee21d6a6b2012f1048f496a59806a5bd0c1eb0747d1679b267a650cb98bf5f8b657087dc37b4f90a9fba20a95d1b129b5d2e95330bb96699d70c658c436abe476363371e07f75791ea13df1979c7963c7eb1a2f6b18a2b127590813b2111071ac10de1d3a0754d7359307a341bcfe3cc60b2ddd02738f5308648a85cded319c8fa3bd239844b92228ffade023c67358379a33e14ca8fec8ec205b9eee3cc371305925c93ab31e3d621129f994cb83ef7b5b4210fec1c90207e03f64cfa947213b3ff06cce318f2fdca4f7a02aa26aac57c82df8a4eb7dfd6460752be67c60225b3641adc4b1efb619142b6caba3f5d73973f71b87b013d98454cbbbec11b48be9a8f6e71b22375ba419a613affe75f903ea4decec6268e5b95ef2e1b0f6f4f808af8f8d0e659f07ec24abc4f013d2058ea6e884b7b1c175d7621f98c93101a806f834c38d1993085ad33041891ccf6239849e04a1662d9ec20cd2642de3432d5e8e82b3acea9a4fb6996410104f0eac6ffaaf18bb8ea41701fad87ed687717eeb2f36bb5320be59d6917e0302ba1a19cac69a87b3c86b79d2db489f80993a8aebdbefd0f4d6eb713cfbe00f091c9ed1626f5b8dcfb41a1f57badcc332a789fa85f4fe59ff0acf3ec8e513ef257cafdc97f096b4832636f69cbaf07239c1614ac470f77abd11078209113907b0906625489326eaa17142e4e7802cc332a789fa85f4fe59ff0acf3ec8e513ef257cafdc97f096b4832636f69cbaf6fdff8a04ac3150ef8b495b4754f5b32544e22467be1a99bbe28e3f6e0f116aa96f397c0a0eb109102e9d214b4aacefa5441b369bae23003bfea7bc1763c22446fdff8a04ac3150ef8b495b4754f5b32544e22467be1a99bbe28e3f6e0f116aa7b21d7036baef70cd6a43667d6327b80bd6aa56447d405bac821b1dce211d30cd46662996041e9d06dd486f9fca9323c537faa47639333d8a46cbcc6cdaec75078e63a55d08d2c883c73f332d64bc8940c56f633ac21b87ab9eae4745cb490840982f187c62fbfc1e8d368c8eb4104b56df71009a6b2823565a699e7b4cd945c90324ee3e1c4ca5319f7242d4b7c1e90eb8418b3f999d07c853aa488356282e612c8356a3d40bd0a336f13d7c6e2bed50d5c1a876563766a3175a6b328b5855e3ad5d60627477a60939ee44fc1bb3a05dbe8fb52f0f75039b8f5d8f1a278b98114a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e14a21a841915f0456de388aba7684d6980579320e956331f872f5a3d9f8fcf8e3dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e9001724db0b1daf85c9f18bdafda985a740f7881db4bed1c3c70cdd6aebcc45788aac3dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e900173dab1fc749b5e285769da5611aebe18789a1a78cd91c40561f768ba9f8e90017cb14dd6f2e2439eb70b806cd49d19911363d424c2b6b9f4b73c9c08022d47030363d3240acbba18a270bd3161f1ddb478f8492dc14fc451b2dc314db5c5ee09cf9c6fe3dd9b51bd7d93f867356e9d362600c924febfd903ee1c6e298860dca928d5c6bb703d9b47f87bc20cb8003aaeee2dae7562a381e1623735f1ff8abccd32cfd9574b6df411c5685db44233e18b009761a065c9d7d6064a2f8a170daf29a22a2730be3230802593c75c930387e635809c6d82420e5234ef8d9cd1166ac8d05da132ba902633430bf12b5007fa1983630de423e29402998e9edc349bdf591b9388bc1d6d12ed6be12da420ab1feca40f99c0e33ec315d92b1e01cb69b25bc302a4b9cf8fa7511c9142b110601f069fe195fec8217a49de46b340df2eafc32fc424fdf48a66349692e80ba9bcc32cc3d56d76b0f2baa51dafe149e959dffbae1bf3dae66d0bfa63c8bb8a1d10c611203c35c636f7f5191fd56105788ef29cb91895a451d06e9f521a1171b31b9b19bc9740f35af00d4fa106338ab7167c9ace558702a95cdce3febd289da021715d2b92bc43995b8a1bc58dfa1c3d8010287e027e8a33567890ad7f84fea3be423cc0f6e49a33a31bbf279c2d0f64b6f83458a5ee63e1b79ba2733e7ff4290b6eefea60e7f3a1ccb6bb519535aaf92b449672acf90321c8d7cc2fb3e1b0a248ec8df8431c4c095e99604aa71faec48455100d16626aa5c054bcc45221e56f84e55051b046caf0f8be1fe4902ea71534fb73561102f2b5f8fb832f0558cb66391f227970b3dd34ea2a621455587b4295e89a1532294b8446df0459c9052014435f5ad00adbe3482099b261c21a1eecd3b34d13ac4e2edd7e42b638a4d5b9d0ae602ce5f2a6e9310210eb0679870ca8e9df82ebaecdeb7c9d2b1e7c127efc0b5f131faa1e3e2834ddb28595505e3b670abda783ac4e2edd7e42b638a4d5b9d0ae602ce5f2a6e9310210eb0679870ca8e9df82e6ad750b8ed8456f56b73e7d33b51ace8b45353374541cd50f5eb1779dfe0abb06ad750b8ed8456f56b73e7d33b51ace8b45353374541cd50f5eb1779dfe0abb06ad750b8ed8456f56b73e7d33b51ace8b45353374541cd50f5eb1779dfe0abb05b429cb496c54a64079d7ce17d728859b6d31f4c1285a67e3e3e192215be498180b9861d92767a441b12110a45b39ee04d0e8a5a31b4825ae6230ece593340108f2bf2675a178128401b0a313445c26e1bd104d65c402cc5e5d5a5ec6e567e3ae8ab4ae1213aaf7a4a5212ce7eb8f26adc8926b3373f563dfae492978842e6ea18aa76efb0c75e909e002895723aec6bac29247ffef566bb6da243c16f74879de8ab4ae1213aaf7a4a5212ce7eb8f26adc8926b3373f563dfae492978842e6ea5496751b3bd0448f7b21f89f1760374c72268d650766cca0fd6cae9225a0501112accc105c759146432bc8aa0297efc2e2d99df6172098f3960dd3d21c16e8a7e0ec9757abc156d54ec50b170388dd3bb9329f0f74138d62a28031aee58768a45a07d86134e2eca43a4e4cdcec2fa05cc4f954491716b7d89d5c22ae77af87185a07d86134e2eca43a4e4cdcec2fa05cc4f954491716b7d89d5c22ae77af87185a07d86134e2eca43a4e4cdcec2fa05cc4f954491716b7d89d5c22ae77af871834956b77195d74f042944003d0913cd12a15f3c33d00e6f3a27594fd9282f0a534956b77195d74f042944003d0913cd12a15f3c33d00e6f3a27594fd9282f0a534956b77195d74f042944003d0913cd12a15f3c33d00e6f3a27594fd9282f0a5e9647d0f5bd9bcf5d6ed7114407f57bfb61e20e86dbc8d9b960f685248f170e877abb761794b57d798f6822acf842580b6cd62c6c0c6b2e0ef60651705941c31b21ee65dfe6624bfcb5261a1cbb9b41f4a35513f9e17523ceca2cf15fd45a068758b0cd3c363ab8a19c93181251ae6a67537a839f8ffdf5dad312e3ccfff771e8916c859a0d13fe18c5f8468b325e52dcbb7aade3d6dd640e520ddea74854925758b0cd3c363ab8a19c93181251ae6a67537a839f8ffdf5dad312e3ccfff771e84ec563deb64c6e30947ae6bb28ba9f0e8e23153fd94184b5173649ea5fdb226a545d29268f5e010fd9d33c6a633777969bec19c1c7cf596e1e48780977598e984ec563deb64c6e30947ae6bb28ba9f0e8e23153fd94184b5173649ea5fdb2262d99767938be22731fb8f8ad3df03e16c31772cd471f0ee5d6fb8d56edfb782572d8ffc46a5c1db141d92272c3f60f6323d74c379c004369000adda0f7dabfe92d99767938be22731fb8f8ad3df03e16c31772cd471f0ee5d6fb8d56edfb782577f06fdad57f248025bc9848fe54278fb3e475cd8a3ba1084ed2c85d1c159409a90fe6902d1ca966420c305fba2b4357cf8299cdcd804237cbe9b70d937e9f4527e857f147d56465e0092a1219dba2dda40c38f851951df5e64410ced1402956b5b86ca6379caa13ac0617f9ecf3a5a1b5ed1a176881fe36391e7ec7930def096c8cb524726e331a2d00af513083e91c4647398cfa6220927530fc8c0fb42864b5b86ca6379caa13ac0617f9ecf3a5a1b5ed1a176881fe36391e7ec7930def094942a4a94be52b4a8dd73cba0c397d790b515525d221816db78b16abcebb9acdcb2adc00257e1830090ae0752666900a7a7ee652c65cb63a65f896da64967ca64942a4a94be52b4a8dd73cba0c397d790b515525d221816db78b16abcebb9acdedbd0c48a311e31b63a11df0c58415c3240e894fcbe77fb5c113790ec9483152e0dae95b3fe39ceb43b81704bf0af42b87a461af8ee5ee61767e448c183bc69dedbd0c48a311e31b63a11df0c58415c3240e894fcbe77fb5c113790ec9483152644c75d1a819f687ee858797fda7f126f8b0f0bfa729c0f0de2429ae729fc3fd8f17a3d4333d37fcfc7199d10eb5ade224750cf3df8efbafa7409e47a76b71477ca8a5508dcec1aadfb7e7c336cc2764c48ac93d25a6f39add6bcd4d567f6b829b856894f18871a6bdd69643fd5be36647e13a23be571d2c91e91a57a17953e753d82e14e04da1358a8588633fa9ee2ecbf472b02bd725ed0ab0d7124f389e549b856894f18871a6bdd69643fd5be36647e13a23be571d2c91e91a57a17953e7b3c22a4065f798b43d0180e125641ecbc5ee6279d6d7c44c540daff0b7b1fb39f8e0abfdd50ce39761e724bca9f4ad8e2d824c0a522216e2e20d21cd06b99906b3c22a4065f798b43d0180e125641ecbc5ee6279d6d7c44c540daff0b7b1fb39bc75d1cbd35792cba134e8bcf28f798c6aad07a3cf48fd79d1b6ffee3d6e64d0f0ff2be9edeadc64bf1211ddb98e5c5e2cd8da45d41a7a3fd6cd4044cfb4f37abc75d1cbd35792cba134e8bcf28f798c6aad07a3cf48fd79d1b6ffee3d6e64d03683a74e981909aa64eaf50cc6bc571c3a999125fed8c8367aa8b8e67ef628b4a2d3ba383eeda2a3bd6c1615069051fc2c5e7990ca4824e5a254746e27bfe34947c0ebc8a556651eb49caf72a28f060e6f6ddb6f242e1c33e03d2d6288785f930da33a1c59551642c0c5f67d0553caf5f51b84c1c1d5077c34e54cf7dba41e18d8bad4bb3a6b0f20c32b20cc0bd76468a48db5d90f117b16ba3465583e1b134d05b05ef93548f244ba5d17637d46679502d1666245469e32184568c05e098b6deabdff2a5e67ae629335bf13af44a8f9afe8ac434f57105550857eb5fc9401a4ff81b27e181f17434a75940ffe783562c2bc63984b3b1a6469a8d4da7151cc550010c5dd74c9d7507274d0a2eacdaacf56e0364d9dc3e8d051f8311abe488bf3d8bd209e3039ac8b016f6c2c5920357a5f3954a0f2161cf620b499567a27bc0bfe9ff1f60016a1bbb5c4153e6fcd1269e3b78d7fd23433ca89c35cbfae11459624933de7e8d1abd0dbb07581d4bce214747e3c381ba3477bad72215c38e7ca493242d213b24248c0af6cabf0732c1f7c9f54eea77304a0c5e26b357ba3f9136a21d2c35858be33823a0709cb30a4079e7347d58f42c03a789bb50037c90b02e7b2655a837abe8c451adbb50da982b15795ead1e3970f1a0c92f915b9f293da99b1ed5c744ac0e0869215f5ab51af501b346669cd3e1ce67269448dd30cd58b6909e599c896bc880ccab3c9979255a4215194b0662cad6ce6bf687395ad78f14a739256e46265d92229fcace274b76cab17f3f892a29101a7bf211258e002c2465b94dbe69ae637212f3aad521727e7c1c47be645a2f5edd7c5a9b30d0d137d0877158e7bc01389adb94bc1999867e7bb18bb55a78438a23485fc4f495499c3a94d990c8bb1b2ad6e64d7349b78cf24bdec9888e27ef47848c12eb0928f1c6cf8dc8130a3a9959497379a193e2d42f70853167adf0aceda062ff76570983177e85ac12946f142cf6ee7a66c9a1391e4fad23601bf0dc103b00cff5c1322c840d0dc8130a3a9959497379a193e2d42f70853167adf0aceda062ff76570983177e80d367ab4579d094e6893bc1e8c1074566bb2806334cf04de30061f2be81535c444e413ff69f4aa34e1bc2c9f2c07e4f2b69beb643007c8715de104354699ec13191280c4f185fb2e2f734e1d0cd0579e6d2024341a73dd5ae24ef43aac80df4bf91a01b7330761164bcffa6e7e8c413bd2c1ebb485db01ab7cb6ea748bb0bd7757dc8e53f95765130a3e67368fdfb5de5d2b626fbb22385e136c5c64629ca70a1e574e3795c175b1b1c63c1cc3b694a3e52bbc1cd770eb65b7e465e8552e6b500e28831c83d501eea48993ca64195520a1d28d756d9a39befabfc8443b6b5867fedf3a7103058a6971d4ae85caa5efc474c5190872cececc88aa67ca61767a1a0e28831c83d501eea48993ca64195520a1d28d756d9a39befabfc8443b6b5867df39d5a55721eecb3c5fcc30107a8196c724a15a1c250cd5629f28a722f7958d4ba6fd2d3265a44a7fe99038d7b1c345d3d48dbbc831ac810eaa197cfe3bb35f1f4971e60844ddf944bc46ff2946d4f21f25053a3d18e3b68ce77c617517eeaa2a00e991c87cf0a7fc77afe6eeb750317870fbc646cff1f18f906b31b69431eaa94dbc5eaa4c7b5465bc90bdff6f094999e5496ca1a33de1334dbe873e4ff2ce79a05f25ee5f202e328239b4747c72caa2578e1d9b1e3a69e63dd43093b38ba2ec6d9d2adca49dd3fa8b2b8c872f1e40e2275dc2095285883ed2503b88e36592796612e822591b56a2072a7f0c0da2416647534e998420c963fd24aff4ef815c8b716496efd3637e170c25f572fa496248b78d1d2f6be9d2c77b35c0e3660bd04bf27730499a68f6a5b726204670590cb3425c9331941dd2036a0ad101af39cb2f3798c4b82f5ac77647908b157c924f734f36871d98970e72849ea9a9a07856d69ba8f97bf8c89564cadce49427574ddb98103a5db6f04b98798240332e7adf56efac65b63db927af336fa55eb5bda93c97a2defa4734ea8d695ed20fd6712a873fc2f9e66313c3c19c337269e704f204b59f9e91d6ecbec59f68335484d3382feec17557c230a80cc2a6391bbb1c44b9f3341820b05667e36a4eb12b7494366a18b7eee5926622c146e61a7eb39726b4656e07ca41d36b06936ffb2354f0eda5971f88be14cd1417d59adf539ae48c5d818f95362a4e0eb00017e3690ab37b6377b672b3f4ba8b6f0f7a5f0ea00cde24c8cddc0ca764e3329f302763477f597308533f98987fd96acb2cef27d16e2b05ff3efad406db4b0d4d39a2a8f6971d808bece72e0a4c6ab34299ffe555c927a8db475066ce8dc4ba614588fff720db80e4cc3ded4b138baba486519e7444801a23d6ac35f229d336a407a96af7e8d28f4a3e16eca845ebfba422550cbcee7340ec8166d2bff6b750a8ed0de6b9ae3c62d15e99315cae52e8548f487391ae6c46827bf8e5b4bcf3382c777a494a759b1d1b49988c338b4ef06e30f9e92d9db2e00080c341f0a3f573bb8312deb8aff68f020744ebd1f557dcb051a1530b504447660df906c2127a94bbcc8450ea7ef9005535b70acf976133dda890b7c7f9076401fd7b532afeb27a1a68e863219072a32d9cc6afcc03d3004ce07379cc1875f749111d2e3478e59260a3b82256b9b6c747273038c3d27d0447f84eace19faf6c0e2730a0aa89639f9a40af41b5d180ff289bdc20a50ad9620393479d785bc653e71c2e3298f53ab27907cd136498e96ec5c70fd95b0d51cc1e81cd21e8abe8c1b69650148d6bb75ab4aa4797319bd47b70605716334f63cc482123b2aaa3b7c5bb7138eeab63a037bd8068d43307c104895039b4870219ba5b94d42f3dccf996b4bf26108a54c47f30326eae4af0cc6f6aad82d597fea1800004075b9a2481604da0035f1143af1eb267823ec460e339d37295383641565f0c08bd992e2f661dc8051eb17e890b834fce96bde0910e3e40ca0dca3e54776579797837cd4936d73d04aae09fe0cf83ce1e5449d00163940108bc133de399f38928cad3274f463096168d8a3ee5148f2478d3cb636f1cc0eac37debcc51b702b808f6b7ed3e417343f5ff5f57125dad600a27eb0823281fff06cce78763800f05f4d2bebfcdbc07ebf9564ca7e7222e0d91e39dee08c9163927e5834c10c6c106d81cf3cfd568fd1ced7fa34d857836447d3c4cc7a9d3e6fcffefa2521666bc2aed0f5caf8e862c1c1014ad12d2ab5fbce09c2df9c6f0a56315442342f6835ebf4edb0ab1ba1451d711ef624c9548a74ed6efe2a4a52449a9ff991f55461c6c3ad437f7ef33019af7de410f8795672575d00e98c6d922f1cf7b85fc36b5da249813fc5ab97d9464f8cc1bc817f7146206fa2713e3599976ab3252924e71e859d7d90e8d3db13b6554975cfcac0fdadced4de7f8779330054232c0c6b750199140a2fd07e13a3173cdddda569a31d47ce3938cf4d3c99cfb3fbcc0a0c8f33941153c425e5c39aedae687c86fcb001bf3a9526a9584459c5c20a15fa2b4702a9c4349de7b90364ac347386ae9436f395443aa53e9e66ae208bbcca13a431551da73a2144c13f21e68cb79ac82223fbe5e60fcf89ce10f9c4817eb94eeb8835c3325433f68f17e0ebbf7c96065ecf6aba3af7852f9a5314bfb82a8c4e44e5b559c88d516d79051534cec69a463df97defe05ac8a261f0a0db191c6d6190382bcbb2826d7faf5521479abd733deb25d3cf3fba879b65b69537b7839e53a77961153240aecfe11edc8054d05b1dedd83894450dae21ec057853fb545862a1f9030c0d8f1ae6c72457d14a26d67a9b45de455e49900ff84a3a90af967cd58036507b3d0fbc33b7a996c61dbb52a94b0b738c8bef12cd4cc7dd4be19808e6609ca17d36f9a41ef5a332d81d373c1d713df971bb23e9829b4fa011a28c64933d90ac2dfeb9968394278f33f4fe4b250b14303b3958a2e56ff84fcbe19808e6609ca17d36f9a41ef5a332d81d373c1d713df971bb23e9829b4fa0122c7a3d1371b03ec02c71b42ba6dd7835d084bcbfb059b56100063eb14182f0022c7a3d1371b03ec02c71b42ba6dd7835d084bcbfb059b56100063eb14182f0022c7a3d1371b03ec02c71b42ba6dd7835d084bcbfb059b56100063eb14182f009cb4208f99128a0489b6c8e6c61637617dd7d4250c59e065491957eda084dd10d9800f8e81d46e63ca6f2e7d6ac5f344d85afb92c3cf6d103b5f977f1ad66ac2588f003bb5088ce380f3c335febaec1318811d275e5554b106655c4ceebabcfb87ad5c8954dd56fbbca04517bf87477ff4dce575170c7dd1281d7ef1f4214ac83780cfdc9db6be7ca862aa9a78366836399ec1703bca66a002366869a59f9c353780cfdc9db6be7ca862aa9a78366836399ec1703bca66a002366869a59f9c353780cfdc9db6be7ca862aa9a78366836399ec1703bca66a002366869a59f9c359bcec785db3eddc6d462883957ba6d3ff4370501fece505101444bae542883e82cce22f3ddd56e64c1ff4c6bdc3bb464d46088be2c9be32c6a384b56efc4af874444d3458d830740a96361c537c4a12b153b30466f851a8b16b522538aca63b72cce22f3ddd56e64c1ff4c6bdc3bb464d46088be2c9be32c6a384b56efc4af874c5c5f2afd63abba6a94aa29c01d3d47feed0b4bf3de8a28f561ba6110484b092bca86531a569bf23e6759531e16ff9e9e0ce6d09c9a65653198385bc4521f924c5c5f2afd63abba6a94aa29c01d3d47feed0b4bf3de8a28f561ba6110484b09fbe02de39660b95b6bb9e45d8b4afbc1b672038b8bc4a2a9d889437beb9c767497053551499156aaf7e39ba0c13ca7360a404a6295c074ba17477d1495d03502f2d94b62aab05635a7a22fa0470c4d1069ea044294f6f44f54a8f4b33fa98fd542815c4502d2e281195fd5fc5b999670bf4d2bca48fd4e35fc3fb58003036e42457c4b027787cb2c49a690a1e698af68bad1bdc507b18b4f41541dae19458ffd42815c4502d2e281195fd5fc5b999670bf4d2bca48fd4e35fc3fb58003036e428c6d5f09f7c535d40fa1c30ebfcb35e0601c2abf32286a82cf151af7ddf72473d902a4365e8380d839b2dda00419e286b6d292ca17a00a56bee7b7dac8ad5aa733f69dd18c908992bce91ad3aa6bd809a42684e2b66caaa09ad4934ca0a29f588d822edd41d1085e0c697f1926f3f98e5c7889b4072361ae88726464b37f64608b7a477f978a8532852fd81e241c78182516bc4975d672d580a5848a76e11eb65ed260be8d1f4fe92261b7810b4bb1e8539c42093d7493f677d076e1a87f459acbd25547933176fcf6bb05c2adc9f4796d15ac20b9b82dcf890daea7203daeabc8eda41f05c6bf95a4da4726a530409d2485ae060b8d019b3a8034389a15d3e9208df2ff33c19056345dcf5474abef1a58da799e2f3bab09d1d28b77ad3c623d46004923196e98a67f87d30da64d070027c81f144f5ac91242fbfae33507dda8e0db1242e78267cba0124ee9fe5963b72d1c8a1832bb51a88abcf012a9cbce76af810d68e72463b26184556034e30ae2ed17b36cdf98f606525fd67c2f823d03dcf9ddf6da1d9ffeb20e647a99e2c521eaa6d4c479f7ea8e0c15f4962664cd55af810d68e72463b26184556034e30ae2ed17b36cdf98f606525fd67c2f823d037816691a799400f3e56138ff9dfc0feda5d36a3397e17f328fa8a4a997045c5f35bf083e6cc5052557a4e9ed8ba326a4c482654d2358b5bf88a880e4d34aba3b7816691a799400f3e56138ff9dfc0feda5d36a3397e17f328fa8a4a997045c5fbcf0c5c5365c872d6097776119d26f29ed38160da8729d989ae8f2be50e457ddc369931513e271d3c80a97a17e4c279f5632e775838fc3bf80c11b4203476161bcf0c5c5365c872d6097776119d26f29ed38160da8729d989ae8f2be50e457dd77f608067f916fe7a9724d29d876c8d86dd13b1c76acb7a44b5f17de5de37e3a948176ce412f1540c58e4cc4d09c04f5bc64a88e0b1ea597c8a16a883833d35c77f608067f916fe7a9724d29d876c8d86dd13b1c76acb7a44b5f17de5de37e3a58c157f519f78db5369c0a008ea23f4788943602289674290438822f7bf0fa9758c157f519f78db5369c0a008ea23f4788943602289674290438822f7bf0fa9758c157f519f78db5369c0a008ea23f4788943602289674290438822f7bf0fa97540e2821fa36981bde5c6ffb8f972474b06db4a37c1854c0e0e379b75d2b0fa3c5d692bdce10dfee242752620061bab684633bc72445a3def484961ef1bdbf3adc29d1da83b6a0a09a41647e4111eee878ed079c2d6b54a98fd6d8b88dd581f21e77c01eec8f167ed10b754f153c0c743c8e5196ae9c81dffc08f129ab56dbfd2fb00959e7d3f997894b2e61934998264d3192bba6f7b1b0a9a69e47a94e10621d92209fcfa8e6c38822a02f8fd0160ec1144241673da165aac1bef9b4c2a9c12fb00959e7d3f997894b2e61934998264d3192bba6f7b1b0a9a69e47a94e1062f79f0910c177becb3fe8d1626abdc1301ea043924695eb2f58af442961920de578a7ab716a58543ff9542940d066677b320c120e1d3ce33f9d26337b6e8cd580f79f0910c177becb3fe8d1626abdc1301ea043924695eb2f58af442961920de59cf903e9f51a2ceac0705dc916fd5698ce770b8aabbd3beff5f312ff8f48d3821bacc93a6ed40459992f43a17b04bb9a881a83063bb9a4956f1ec9afe9e23def9cf903e9f51a2ceac0705dc916fd5698ce770b8aabbd3beff5f312ff8f48d382dff9959af04498226ae7ecc9723192b0266c91274603b4cefbb5b85adfd051a753d7561708cfeb7a46a4397d1828ed97c4ae58b0296ff8be8df6710a94e04d89dff9959af04498226ae7ecc9723192b0266c91274603b4cefbb5b85adfd051a7eb8e7b17f1533bc3e86e23e8695f7a5e4b7a99ef1b1575d10af54f389161b655f19ee056b18165cc6735efab0b4ca3508be9405b9646c38113316c15e8278a6fa9f6faacdb1aa00ac2f68043cd445171de9639a732b861bd5e64090a2865ab237497fbdbb98afca4ac455e3a057c59bcdebaf1280e25c94741dc301f05cb53e5302439e40d9cbdd61b8b7cffd0b7e1278a6811b635044ee366a36e0d991f62daa54310b64a080b0103f3de5df86b21d884bc2985760f3596ab85d458eae8cba55c4d9ba1a21683838ed1d1f007b6038304e42aacf34c576e820311d26cb243f3690d02d50b2030869b3b030207ba78b23987145a9a5fcfeb26ac32039a41fda1ef20dc6b3554cd585dddffdc573f1f9a7a54c522f2a3fb4576c44edbb1e142386cb648bf8c466ed08eaa46fb94d18b3e2f5e939946d4efe75bf6fd7ceb58a6960c6afc23568d55b3e9ac914f9c5361e3033e778aa5b58d3cc82835fc5c638679f6f02f5966fed0b1ce95768dc59d7905c64f60f454d79eed67fbeaa7240690318fb954ef7e775270461f1baf1331749cab6765a4006d0183cb8a0dfede1bbdc8e4f46e3414c4602c9abb8b404a45e84412fc49dbe38a3d163f9575132dc7c93e28a1d32480446d3bb758ce87a8fb20e3c2f1d9e674996287f44d6d9754b080ea1535325a5a411eb921e7b5fdc478e1a1ab3b0c74a5ce58a6d3afff36e5f921f328a1d32480446d3bb758ce87a8fb20e3c2f1d9e674996287f44d6d9754b080ead42fbafa3c0b3011599b33f0f615a10e2de213a29eab6570345eede2c408119eeb036336b6771253ac2a9b06559360c64a0aa92fd50db622732ba7f02995b5eed42fbafa3c0b3011599b33f0f615a10e2de213a29eab6570345eede2c408119ed8d506a383d448036a0858a7f8c0c2146f32b6653c1d4b3f129febc99d580451f0b1f830f737df61794632bef46678a12ae7452679e4f9546451b1d9a2c2f315238b70722d392aecde94af7aaf637fe377a1b3f262b002f861552a28e60060d0b9595f761d81d6337d40f8cff72c731fff107888143929164ff03358705ee90999c90d53e67ce832d79711c4bcb80794acedbaa79053787c3a5fbf6d5b7fc46ab9595f761d81d6337d40f8cff72c731fff107888143929164ff03358705ee909ff5c2ddf0fc6973357e49465f0181bf7600606c5fba36708a155978e4386dc7cd239a3dab312444508b1db4aa3d0a25b439ea06c902e5d4a07c440fbc9ca3e44ff5c2ddf0fc6973357e49465f0181bf7600606c5fba36708a155978e4386dc7c35e76514ab56bdf7e101af9ad54a5688ee5d2e7774370e29c82933fafcf135364326e3ffac2012a4a668d679a41780feb4816dad8ce45ef4a5a12bcb25087e4a35e76514ab56bdf7e101af9ad54a5688ee5d2e7774370e29c82933fafcf13536417816d65cfac3623a928786d0ddbfc061e8fb96da91203908e08db1517edba458f547e234776bee529d909422e2441faa81b4d7718f77cd2a221ef22c52b1070297864361fd8fc9e36805e2cbe4c0eb4a1934145ef3e4cc867888b5d3307709415afaef5fe7dbffbe0fb3871a6fe9e8a68f2688118999a456501c31c4a3c6e6415afaef5fe7dbffbe0fb3871a6fe9e8a68f2688118999a456501c31c4a3c6e6415afaef5fe7dbffbe0fb3871a6fe9e8a68f2688118999a456501c31c4a3c6e6f9214196ddd652d82b8c494d354d105814a0aa6c4c143fc1aff1212fcf266d41106af301e0dc6776c38953407752a217367442e844262fe81d60b565aa7a28c7f9214196ddd652d82b8c494d354d105814a0aa6c4c143fc1aff1212fcf266d4170fa55759136ae7c2214a32ea0a72dee0f4bd0be42df87948a52559b90e097dea44e5b52aeddc81ef363931c3628da93c3bd63934ea3c7509ec9186dea944b1d70fa55759136ae7c2214a32ea0a72dee0f4bd0be42df87948a52559b90e097de4f0e43fd02fc177999d43396cafcf3e3ae322c7f4b87a29c35057b06ecc5f3b69c16d85e57382b33ec572e1fd9ff9d0f6c97dc230047fb53fc876329291b696e26d7f6e92f55319a302d43ebe25d576741711f955f96117528e5e7278c66f0ebaf03b8c3e2bbd2f7551ef9a38d5a5e937bd3174088d92d98014d41207ac4f11908dfbe59a650a7e035bb44d6b92067f74b03e1457227d19d32f092139864e78aaf03b8c3e2bbd2f7551ef9a38d5a5e937bd3174088d92d98014d41207ac4f1193f0f66ba14a3339dcf2a4b6f2eb8248c2b3bd14859e2e9475f25b6117f99d41395805afd1e32c9ed68cf5a5c9f1bda77ac854f800d0d103efaf2f6502aaec6353f0f66ba14a3339dcf2a4b6f2eb8248c2b3bd14859e2e9475f25b6117f99d4135026a1b202b27163d0537d993e4b84fd7270c0ce6dca29ecefcea4bd1dba4972db0a2fbfba817f3384f957ecc11c116b6aa0337bab97becc28cbc8b1fbebf2ef40e7abad894e2b0bd4f576db7c1a8fb67af7cff62b0a7be50c1cc99e1dff2133ff352ab9daf04e5af0321a276156cc12de64e57fb0713fa972d4704c4b53abc304d744782f44ec96c4c003c93c04099e6c5c0cec967b9c314faabd6b3287b0c1ff352ab9daf04e5af0321a276156cc12de64e57fb0713fa972d4704c4b53abc3b3bca9c116b87cca097081792530d68bf405f69d2f619802846c95719d4b4e188551d8c7794221ecb76358ac4d777e86565245a92680cdf8221117b5c23ce3fdb3bca9c116b87cca097081792530d68bf405f69d2f619802846c95719d4b4e188b06ace098d8fa819c0487a80bee34b08aab993aa32a16a46382c746bc967cee2a58e551f5b97128e6c9b726d51ae27c490dca24cf8c7cd561c9597429bc67f38b06ace098d8fa819c0487a80bee34b08aab993aa32a16a46382c746bc967ceec789acfe17bd4f7882449a53cec4c8efb3fb7cb62af2fc4858dc6e806a840c258265cf4bd2e94717ba0878c1d4eef38195be041664ca43bff78282039a46da35c789acfe17bd4f7882449a53cec4c8efb3fb7cb62af2fc4858dc6e806a840c25e0c15a129f5fd7172497726129e00895d561646bdbb2d1371c707d7bf676dd6924b2fb579f59c1cc662f2dc2811050f4cc33aa7d8b55157656761d1907198700e0c15a129f5fd7172497726129e00895d561646bdbb2d1371c707d7bf676dd6967fa09292fe467f28f5091d076379f6ec2593af3bd7f59157a7954a0cdba0bde990c5bf2e6ba9604cc32a198b80440db50588b082fde07b78ec7bcc68df2cc0567fa09292fe467f28f5091d076379f6ec2593af3bd7f59157a7954a0cdba0bde4178321600c0a19ca04cfe8542ce44487f339d15d89a473b58cea63c0b2302178697e01774d2e7a9b6b8912baddbe06d5906075d41ade126af11d8033df85af94308932872acbf4a674312a45a49b870e48026e3dfedc878ee2f512ddf2f30ba4cbd79f98464145a916ce5ee6ee93f96872dce11a7e37934c3a4f596a6ffc8c2f2b2ba7497fd02d13abcfc2a98099283a94b09e8b4f2c1c822ecacde3bec3eaee2b4b87a5f42a8c5780e343f675513bbcc6abdd23fa14f8f1a7d4f7d72304770a90653f13a4dc5eb3205079dda1d62561a8bf9a7b45585f5dbf90aa31a9666802d81026aef17e4786b15d9ec0629304987e3f275a0fd0a421a81b4ed87234b2c690b275529788cc48e8f541a2aef321dc31e92f75764ac7924896db72d8a955533fc889cbff57bb78c913bb6c24c5d52bd02f3cba0f4b1cb2913340294a6ec1a6046239fcdd6977d1c25841581cabedaeec8046cc5fedcb8ff2d6450a36442bd96b0ef100b03b7d04b71c859923a5e9ee27dd3426a9dcc1b20c17f4e4a97f3154d9baa908ad5288dd8fad8cf20b3802ffac77ba1642727804a633b201c56e5cafada56c25b6a457c6a62af43f9f929bbc29424103ce65f40f114adb4fdf3d39f1080a2d03779176d6d45f6ecd976dbe69f5579f7e4e83b75224c3f92fd25810270db4f3ef586530f1ea7de6b5e1308279af82fa2cb173be75bdac80ede6296b1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8551e6df6b577dcf03af4fc6eeb241f3fbbf7bcdfad043ecb945cf2d3080c452b2f1e6df6b577dcf03af4fc6eeb241f3fbbf7bcdfad043ecb945cf2d3080c452b2f1e6df6b577dcf03af4fc6eeb241f3fbbf7bcdfad043ecb945cf2d3080c452b2f2e0bca865f4441a85afb55c7a5ea19ee2c8ce70665307438fdbce674e3a0d055fe74ad31d50be5a1e0d62bfb02db906c39810ffcc6fa1a71108ae0f8939583582e0bca865f4441a85afb55c7a5ea19ee2c8ce70665307438fdbce674e3a0d055e67950ab87ee7e9fe59390928b2b515f7a7ec7b59592183f2bb5c32395f31a8820bef7f96c31b8580281585a238d5d72ff3cd0fd9baacc0a85bab103bc95e288e67950ab87ee7e9fe59390928b2b515f7a7ec7b59592183f2bb5c32395f31a88db1ec4af43275cd9de559eeb0425041bd8a3a8c5233cf957221c3c40e42aba079a7588cc21b23c31ede3dd04feec14288a3bf9d12ac105d1d0ec2b5a2bdca100db1ec4af43275cd9de559eeb0425041bd8a3a8c5233cf957221c3c40e42aba07180026698b7c2fb4d00eec5f7662fc655044151ba1ad17e6094fafaea5b8b93fca60589cf33ef361302538630ad1d5316dada4702f1ee5374cfa59efdcf8ddb6180026698b7c2fb4d00eec5f7662fc655044151ba1ad17e6094fafaea5b8b93f5069d3b28757c7cb669fce2dd98d556b3c8a23e553153dc1f9bf808fc80ee1fd8f6a92364897c52ec340c48c8584a1f2c3751c9a78ae1b4bcf764c3448a2d3d65069d3b28757c7cb669fce2dd98d556b3c8a23e553153dc1f9bf808fc80ee1fd1a5371bb5f0e57826b4c386a1b1ec088f84f3dd021e5c9b36a5d4464e01cc2f951b0156723bda5d6be9a11f95018ddeee60bdb88e37a7d911a7f1a5d2cb651221a5371bb5f0e57826b4c386a1b1ec088f84f3dd021e5c9b36a5d4464e01cc2f99d79a128d962743e57daeeaf66b2a3ae86e97c6a2ca288587730ed2538d3d83d4e32e2f6b89c2aed59cb85ae6e9ed900d7a378c348f9024bc16b42c915a484f99d79a128d962743e57daeeaf66b2a3ae86e97c6a2ca288587730ed2538d3d83d894716c8b0b74e2a07f8ef764985ba23e8fdd0c86eb46eee03f48c0ce4c517881af15be17cb3876e30f853d76f460715d1d795ea8bc98c1045b5361926d373de894716c8b0b74e2a07f8ef764985ba23e8fdd0c86eb46eee03f48c0ce4c51788b82a944ccba03e7e7eec46232e50ffe4ce2c32f4b0e26662e6bde30d533584ae856263b25a3384a7450a1a0b9869fb897b84f893b2e7147c7e045ae50d132cd39a7b36653b5657525a0aeeaa72d4a0b09f598e6edc29c139c2dc2612b7d29fb8460be5b50cfcaab8e72a73f24f14ab062cedf1a40a775b8b0d80c13aed44bb5e30fccea73b874b5ddaccbd3c64936833749ff039f08d40524c1b0b25b8e8e2b88bf2beca6de95d66f12968380a428d3bb0a28a8a6ea2078da521511e1ed80a384eb9ad32603d66fc9d55aebcc4d3cf759edd9e95a591d38690659afb2e57b05071c56a41675a36801259c9946f7b7bf838e6c29c453ba8c34d89401f2b972d6c88890ea9994c55ff7d6c1fd570fece2785f51ed407ee95df4aff946e250bcd66a183dd9d170a9c381eb22a4cb2af6409a93096702706ecb15a9748ac549e601f77b454bd3ba3b5e3776be28ae3a0fd8de5d1e50d5b8ee10dd539c37c2bd680823952883e261b8d7b6873001047f838c88cee6dfbba10df537a9c07eb2e7d66ad78c4744d407690f321565488710b5aaf6486b5afa8d185637aa1e7633ab59cd8550e19254081c51bbd19eb6eb6bf5d3916fca54a38318d35978e4dc8d29e69f24b5568c47396b343496a4fbbfc8c1d408db506b528fed6dc9b15560ed461cb58550e19254081c51bbd19eb6eb6bf5d3916fca54a38318d35978e4dc8d29e69f2148b5bc833d2a87ffbc623b7fbe41fdd4c3d4750956db04f12c3e40b19cddbb9216aed6bad6bbc6de8c09ec2d9751c8c302bdbbad7952913d61499a8d1842929148b5bc833d2a87ffbc623b7fbe41fdd4c3d4750956db04f12c3e40b19cddbb931bf72f52385cf87f5598d13b5b5df97d4087881ae8a58236ebd25e4f2686aa68928edc6cd1fc024726e0833516fadf804e015cb47111c877750b5d11b954c5c31bf72f52385cf87f5598d13b5b5df97d4087881ae8a58236ebd25e4f2686aa64b67fcb7e2c40b4c09b8ddd86f2d28ea7d19cf426f6f3cd316e504211b966b614558caaf9e07ec1f18b90d43778ae2ad542cdab52caceb724252768d0782e8fe03d331c2ad4efaf38f86ac1168e6f59c00e49f7bad84519835d514386f400897f2dd8790a4e11abbf36d6db47a884aa61cd2be8a1865ff622ca64b2d923041b4f2dd8790a4e11abbf36d6db47a884aa61cd2be8a1865ff622ca64b2d923041b4f2dd8790a4e11abbf36d6db47a884aa61cd2be8a1865ff622ca64b2d923041b42877c092586cd21c781aa1282dc0dad742267590284fc6800c2c3b351d83bc282877c092586cd21c781aa1282dc0dad742267590284fc6800c2c3b351d83bc282877c092586cd21c781aa1282dc0dad742267590284fc6800c2c3b351d83bc28bf465756e327657f1f592c8f036be0d1a862404ba5360d560306942a94d7b5a748e8001687d4bb5f167d2b2d88650e7ed947809912406aa016ec4205de64e830dcfb85a227b5852701dae601c2e3ad689aa8c0bfb98dfdf3ea361d737133ece03f22c86eb40af0a2add0664581e75db34e74a8dcd63bd2331a46fecbdd7f2ce70cee89a5eb00f2ea0b1e18feed752e3ae7981d66dd17cc5cb4e7484791981c943f22c86eb40af0a2add0664581e75db34e74a8dcd63bd2331a46fecbdd7f2ce7112793fd07699502b20c1ba93c3340f49454d23e952239f31c5a164e95bfe7e48fd39d4f0e29ac541f1f265a42feda28553fd7c67a1aa0a6ee5706619b84a686112793fd07699502b20c1ba93c3340f49454d23e952239f31c5a164e95bfe7e44c5c7ff83c0d16dd1673c0f79a732bf5dd44c42efa51f697b49fc3e3c20e430080df240564c58a9e1e7cbafe6eed9bb85a70a1aae402ea67bd1e88e001d23eb04c5c7ff83c0d16dd1673c0f79a732bf5dd44c42efa51f697b49fc3e3c20e43005d9c7c804818cfee5cc3efb1c58cf2d8b93cadf4094907f9f971ba370bf45b75c6911537c2fea9f13e86a33b5c69d3dac14617c8c002c5dc8c282bad92700e425d9c7c804818cfee5cc3efb1c58cf2d8b93cadf4094907f9f971ba370bf45b75ff407ebeb56559a31d1a7f95331bb5af8e1b76246bffc26b5f63ddfe712b5a42e9e612241a264ec20213f7501f79b4d7fffffc5f17503448289c3d18b4e9da55ff407ebeb56559a31d1a7f95331bb5af8e1b76246bffc26b5f63ddfe712b5a42b6b7fae416b5ac0d67e7f5f158e6ae2c6ac984863bc9cd1d44fe7f26db70d86875eb4b041f156b4d944b064ffcf0743f4f1000b22a581c11044ad86b34502ee8b6b7fae416b5ac0d67e7f5f158e6ae2c6ac984863bc9cd1d44fe7f26db70d8681d8bd16525f7a573ec7ae43f0b586f76e6b8cb102ee3492bf73d5062c767dee08747f977493c3a3e8a5d51265dccea642f2a10b45103b4026c6cd42b20b006c01d8bd16525f7a573ec7ae43f0b586f76e6b8cb102ee3492bf73d5062c767dee0cfce6cb0692a6f0137f86a5f64ca099a695513bcf15dba7bbf2dc03a509099e4693f10fd74ce62ce72e9966139caf40b661c7eabe58262b7d15a0835031587b5cfce6cb0692a6f0137f86a5f64ca099a695513bcf15dba7bbf2dc03a509099e4212ae6e6ef62ff26be351c0c8965b5d34bb738e3c679bed0a4090aee8c2f251918133770e8e689428d5a3fe776fac061b06419ccfff58f42704c9e865c1408fe212ae6e6ef62ff26be351c0c8965b5d34bb738e3c679bed0a4090aee8c2f25194a00179cba8ac30613ec9f19dcd2e3d8ea9022a8e9d859043f3526d9357e9e097d048878bebc9fe392a41b678036cd5d43c033d79962e6caa7fdc9b9c08030e74a00179cba8ac30613ec9f19dcd2e3d8ea9022a8e9d859043f3526d9357e9e09ebbf12ec5cb4a84849098b72ab8afa5ff27e303c22a61a48ea282cd3fb0d0800065946b01e81ee059820a23ba0ae3fe663335bae66473cd6835281e76976ac37ebbf12ec5cb4a84849098b72ab8afa5ff27e303c22a61a48ea282cd3fb0d08007aae99b82613de079ecf60d364742ed5af82e2c5546fe1de9427af41477569b5562fcb9335ee1dc728b87ead3baf092614dfe539f93eac0e0e5434f92e449b7d7aae99b82613de079ecf60d364742ed5af82e2c5546fe1de9427af41477569b59a4c08db34f748904f9c9df52d45ad0a98e60aece60482d9cd0572f41e3672a52e5fad92f57990f6f92491d0b7aa6733a7cefdcf6f8c89a37b9ae959bcb866789a4c08db34f748904f9c9df52d45ad0a98e60aece60482d9cd0572f41e3672a5b4920f084991cd0a7248912ad0441c57ed77848ab33a27470236287e13c702f6a453f0529f1d7b66af25e4007db86d590486794f7257bf37f23a1511fa499d99b4920f084991cd0a7248912ad0441c57ed77848ab33a27470236287e13c702f6a0d967c19d6966635e15a4cb7081450a8d283016e3c7941758e5c2e7c2ba3c5ba5ef4237b20f753c1394fc4b8d866c7c1c33a1beecd826bcdc26a7df9776a5eda0d967c19d6966635e15a4cb7081450a8d283016e3c7941758e5c2e7c2ba3c5b39b4d5aa7a66a3c0975d2e51d81b463f76ff8fc1e5be2d8ef5ab1eaf417b380fa6cce97448f1d38a0102429ebac4ac253e1de570dbf8c02c3ef59c6ae4bb858c39b4d5aa7a66a3c0975d2e51d81b463f76ff8fc1e5be2d8ef5ab1eaf417b380f719c0855fc7a5eba6f476fbbe667fbf5edd0e7a44b6e273206ae33a5db4192b32245a74afc1e7c197e7e382d15bd11bc3b71391a24a023c12349ee1d7be096d7719c0855fc7a5eba6f476fbbe667fbf5edd0e7a44b6e273206ae33a5db4192b36dfcac77de12d142d8efda818a0aeca6b2410f4a1ee22e664969c5b98e7a8be1f501af7a646bd2e65eb74187b2340045b78ffdfcf2b04e5d8c316be259cb639e6dfcac77de12d142d8efda818a0aeca6b2410f4a1ee22e664969c5b98e7a8be1123c60a0e22ccf3789e6fd52a03c1c7f1d039e35d077bd0c5da49e5493c2096e6edf71499f1e408b96f40f9780363af3edf8675acfb82537203a4d7f53345a54123c60a0e22ccf3789e6fd52a03c1c7f1d039e35d077bd0c5da49e5493c2096e21760d5ff0e650c7f5e18b07625bda9855c8bc84de3a8593d1ebb070d1036545cee69592b02d5a8265e57ee34350c8ce5ea9db5a1549644edfdcc8e07467a78d21760d5ff0e650c7f5e18b07625bda9855c8bc84de3a8593d1ebb070d103654552d84da1db5637f01957179f145d5302b1896e30ec7f98f2b47373471c8b741ddc73917e5f2ccae308608c863215f8feeb5b710a8812068d3b564dda92a501e052d84da1db5637f01957179f145d5302b1896e30ec7f98f2b47373471c8b741dd47af03bf9d1e5703dc0d77b8842afc8c9ca262c9686fcd863743a329611a2a24ceee37a5a7ffcaed4ace49dafb2338cce9c6c2356ef76fc7d9879ed4e6c08b7d47af03bf9d1e5703dc0d77b8842afc8c9ca262c9686fcd863743a329611a2a29e01085d6c7c2f94698324ae79891fbfb07b038170b8a258abeb492b9e72b1335b8644282fa1e5ff93e1ca2f4822790dc190c2d0308c501141cbe1783de12c5b9e01085d6c7c2f94698324ae79891fbfb07b038170b8a258abeb492b9e72b1339678e303b57d854c7e059dcc6304d433c372cc259e443a49cff42dbcb1bac53bfd8748e9c1a742535773c2c765af291913c35e2eb8900194ec2823d1fcb95de29678e303b57d854c7e059dcc6304d433c372cc259e443a49cff42dbcb1bac53bf7f96294dd932a74fdeca7cb7b44fc04377d8a01ca1e3278fce72ae76d749989e84458db54f770eb6a95feb550347713787a698b8de858edc910a3d9ff557926f7f96294dd932a74fdeca7cb7b44fc04377d8a01ca1e3278fce72ae76d7499898a80b4f4d7e305ae5be96d54f49d917cbee9f0c6b39a300f04e9b6914a77d30aa67e65306b8e86580c31390b475308b343c4b2186c8144bc780a8230c77bd87b8a80b4f4d7e305ae5be96d54f49d917cbee9f0c6b39a300f04e9b6914a77d30ad6a9899d7408a399d5736dbe8891cc864469da6b15db96ebfb8c74aa72303008e7a33d23fab44e008887d584a0aa3ad26a2312ad37891ccdf51a42664e7a766dd6a9899d7408a399d5736dbe8891cc864469da6b15db96ebfb8c74aa723030083c7ce47bf8cde7d500cbe3a85ccfbf3961336d6aa82d5725d7e6364b35f20ab1e7f8f03d151e3d6e3636554d8cc2f0e6c5f9ee7998e9f98cb90b4b0a5d8f6e8d3c7ce47bf8cde7d500cbe3a85ccfbf3961336d6aa82d5725d7e6364b35f20ab1657e80af30aeddd7291e9cf0533fe4d29a02558148c838b90698e6eab6e648b0dc156ac5b730a7a04eed00f5b10fd94f08ba34c7b23e169f965c43b4d04449e4657e80af30aeddd7291e9cf0533fe4d29a02558148c838b90698e6eab6e648b08f807d775198efea897bf58ac604d0b58b3f762fc2a31616a48cf49a3510e85701e5d21c5531472be4e2a306156595eed2befaf557b2ee049d85ea2ebbb9437b8f807d775198efea897bf58ac604d0b58b3f762fc2a31616a48cf49a3510e857cedde633b955255ccb5647e908937393ccf2aed6548160b9f92118c41a269888b8999707ab8fd41595b4c272da1d969652db470218348e522143d29822854146cedde633b955255ccb5647e908937393ccf2aed6548160b9f92118c41a26988889ff2be0d03e9f320d55ded35554397f880ac8c491a180d1dbdb7252d748799430ccdfb8e33dd02a96a193926d6c96fe1ba1411ddc78f4ed57d5f8147b40665e89ff2be0d03e9f320d55ded35554397f880ac8c491a180d1dbdb7252d7487994485bcd9826a05269e11279e2c62050b30471b03747ac5188a48e37e3fc64683e906502b8c9b22ca2a670f2378b4498914fdca598ee682a757d31f3cb3a764292485bcd9826a05269e11279e2c62050b30471b03747ac5188a48e37e3fc64683edf9b63d3e1cf4489fd216b9c08dca2ab4b59e38de07745a1caf2334b457712cd31f8d80d5543bc0a422972fcee57f200f3bf574bc532a8c4913ea58c3d91fb09df9b63d3e1cf4489fd216b9c08dca2ab4b59e38de07745a1caf2334b457712cd81a88300baba0cb4578d05b51b868f291e11f2e0c17eb26bcb75b5bcec1a54655f614772705b87c5572fb924ef734b2ef74890930d0e0e34b1f626e9822c7dad81a88300baba0cb4578d05b51b868f291e11f2e0c17eb26bcb75b5bcec1a5465277fa21c62cbc57c710cb547343ee95de171af9eca2d8aaaae9774b310183dfe7f7783126fc957f8450ba9d106eac3a69e7270d8a3c3a8cfa2edefad6e7abbed277fa21c62cbc57c710cb547343ee95de171af9eca2d8aaaae9774b310183dfe69a3f9bcc09b268646c18d85332e0317a6eec5d224bed0010e39bb98595ca38bd0432171381d155c2822fefc2ce1358d6594cd0ccb874d82da11dc8a00202a1a69a3f9bcc09b268646c18d85332e0317a6eec5d224bed0010e39bb98595ca38b489e0e42d8760d73347d3a78c156cddef7f930db2acdb1f332aa2f46eeb54a14afccf9696a36a2e14f90c446b5e14f46d389268f0001e4d454445450f87c5641489e0e42d8760d73347d3a78c156cddef7f930db2acdb1f332aa2f46eeb54a14af47d6e7097fb990ac3523d7dbadb261eb3dee78f0b3873691532d2130ac2697af47d6e7097fb990ac3523d7dbadb261eb3dee78f0b3873691532d2130ac2697af47d6e7097fb990ac3523d7dbadb261eb3dee78f0b3873691532d2130ac26976750afa1b16ceb9b2fb5677f6c02e546cc7f473b7cdd7c5d2d898e9bf68114856750afa1b16ceb9b2fb5677f6c02e546cc7f473b7cdd7c5d2d898e9bf68114856750afa1b16ceb9b2fb5677f6c02e546cc7f473b7cdd7c5d2d898e9bf6811485a865ca83c15e1aca7e8977514ff01749e24f30cf8742c40a00129f04b04ec49aa865ca83c15e1aca7e8977514ff01749e24f30cf8742c40a00129f04b04ec49aa865ca83c15e1aca7e8977514ff01749e24f30cf8742c40a00129f04b04ec49a930e9944ec2bf44f1b76618f8a3c56003ebf086c2e7035f934a68fd26e298be9930e9944ec2bf44f1b76618f8a3c56003ebf086c2e7035f934a68fd26e298be9930e9944ec2bf44f1b76618f8a3c56003ebf086c2e7035f934a68fd26e298be935c92ca6b7b5b69b32ed0b4133d511b994fc9dd7c0ccf7041ee166d7dc8c15a535c92ca6b7b5b69b32ed0b4133d511b994fc9dd7c0ccf7041ee166d7dc8c15a535c92ca6b7b5b69b32ed0b4133d511b994fc9dd7c0ccf7041ee166d7dc8c15a52c05b05430a9deaed8c7f1363b0d6cd555e8b5c3cc2a70c3b9de7a7933b44d162c05b05430a9deaed8c7f1363b0d6cd555e8b5c3cc2a70c3b9de7a7933b44d162c05b05430a9deaed8c7f1363b0d6cd555e8b5c3cc2a70c3b9de7a7933b44d16a865bc4fbd60ab132d35c0e62a1d31cb84157231061d861be4def6991d936b90a865bc4fbd60ab132d35c0e62a1d31cb84157231061d861be4def6991d936b90a865bc4fbd60ab132d35c0e62a1d31cb84157231061d861be4def6991d936b904c7a2326aed1717e920772da665e4969e1667f8eb25eb4e5fbd343e910c1a20b4c7a2326aed1717e920772da665e4969e1667f8eb25eb4e5fbd343e910c1a20b4c7a2326aed1717e920772da665e4969e1667f8eb25eb4e5fbd343e910c1a20bea88e26eb21f4934b7b66f85c7108d917670354e7ce5d6a297b04111ccde7873ea88e26eb21f4934b7b66f85c7108d917670354e7ce5d6a297b04111ccde7873ea88e26eb21f4934b7b66f85c7108d917670354e7ce5d6a297b04111ccde78731003d5fce5161a1b1f9d1a17bbd75c432a3481b8606763f7a4fa4647c24dff6e1003d5fce5161a1b1f9d1a17bbd75c432a3481b8606763f7a4fa4647c24dff6e1003d5fce5161a1b1f9d1a17bbd75c432a3481b8606763f7a4fa4647c24dff6e9b614dce6725d3a4a87052763ccfca4048ef1a947c415ff9baa633ebffcd32826bd5d0ee18829b12c65a0b0e4d5fb4dd6e5668ae47d1868b7095314e53f233c32c54813643dc9dbe413ff48bfda81072a530f79cdef932735476e1919515076bd28e16966593c96283d12b188e5841a3142dd1795b7544efcc1cb28bfcbc7d6d806374f01b2d68eb5a1bf7d27ea668b8f89f3e1a52b26009a16730b562d604f0d28e16966593c96283d12b188e5841a3142dd1795b7544efcc1cb28bfcbc7d6db833e8efd51e6a15fcffbfa1ab6b532cdecdc60af962fc5b095fcfe4a16ce55bb833e8efd51e6a15fcffbfa1ab6b532cdecdc60af962fc5b095fcfe4a16ce55bb833e8efd51e6a15fcffbfa1ab6b532cdecdc60af962fc5b095fcfe4a16ce55bfbee5ccbceae0fd213c4e1f32164148b3c7c39f3e33f4c21c42963d05b5ee40afbee5ccbceae0fd213c4e1f32164148b3c7c39f3e33f4c21c42963d05b5ee40afbee5ccbceae0fd213c4e1f32164148b3c7c39f3e33f4c21c42963d05b5ee40a4a9f3cff97831c1bd7154983f3904efc52b8b51705a928130591fbac5b13a53d4a9f3cff97831c1bd7154983f3904efc52b8b51705a928130591fbac5b13a53d4a9f3cff97831c1bd7154983f3904efc52b8b51705a928130591fbac5b13a53d9a89defd327362280c7d535f99e39ba7e95161a21e01ebe291a2a4b7d5e589399a89defd327362280c7d535f99e39ba7e95161a21e01ebe291a2a4b7d5e589399a89defd327362280c7d535f99e39ba7e95161a21e01ebe291a2a4b7d5e5893995134fd60459639b3439ba08eb05426dbeedd6a74d686b7922cf18f79a3121b095134fd60459639b3439ba08eb05426dbeedd6a74d686b7922cf18f79a3121b095134fd60459639b3439ba08eb05426dbeedd6a74d686b7922cf18f79a3121b0b1426fcaacb26d30dab38f5880a4c85c44dfce3db1e90c239cd9acb87bd4c650b1426fcaacb26d30dab38f5880a4c85c44dfce3db1e90c239cd9acb87bd4c650b1426fcaacb26d30dab38f5880a4c85c44dfce3db1e90c239cd9acb87bd4c6500239559dac23605c632a8d0bf87cdda3db7082311cf621ec7024fbc01e165b660239559dac23605c632a8d0bf87cdda3db7082311cf621ec7024fbc01e165b660239559dac23605c632a8d0bf87cdda3db7082311cf621ec7024fbc01e165b66be43bdcf05f4949118162e0b9178918846159514cdc7c24a1a76081f48429249be43bdcf05f4949118162e0b9178918846159514cdc7c24a1a76081f48429249be43bdcf05f4949118162e0b9178918846159514cdc7c24a1a76081f48429249ba388817177b83e51d5d3dc47e4bd4e1db7e7c92e77294a7907be16a758cfeb6ba388817177b83e51d5d3dc47e4bd4e1db7e7c92e77294a7907be16a758cfeb6ba388817177b83e51d5d3dc47e4bd4e1db7e7c92e77294a7907be16a758cfeb6eb4a831301cc09e9899b34bbff45582e281f4cb982967d82a7164ddb97da20e384f6f1ba6b37d59e9b58d1f97fe549d56d34484672718cac7745713a7fcd9544eb4a831301cc09e9899b34bbff45582e281f4cb982967d82a7164ddb97da20e380d0bc3af6af4d14df3b708916e753a4b520f6963529d84e341ea8e1c2701a461c354c64f390772f9656716890a1ae4c01e2f37aa91121697691f113e7e791a780d0bc3af6af4d14df3b708916e753a4b520f6963529d84e341ea8e1c2701a46c64c931940e2919a5aaf9d3f4fd8c1e2639c105745330bb56b84ae2652cbf077bfd65c8652525edec29decf50e43a6312875c235ba9eb03a46882790c57af17ac64c931940e2919a5aaf9d3f4fd8c1e2639c105745330bb56b84ae2652cbf077f48884f6b6015da6e417fdc3983739af9e5b77969ff6ae392453d2f76370161b3d2126bf3bb1803c70f92566f7afb53ca90c5dec684acf553e6d2a8df3d254d3f48884f6b6015da6e417fdc3983739af9e5b77969ff6ae392453d2f76370161bf192460d893b0d18bcbb4d9969f0c18f84453b03a710c942c7420d17fa3e68cab3a25ba113a5cc0137d401710ebdf3d167419ece68ae4c383256b0a17b5c00b3f192460d893b0d18bcbb4d9969f0c18f84453b03a710c942c7420d17fa3e68caa77d8730e5fa898902973ac441add4c4d8aa20ba3353a9ca189566df1d14ebaed195be2a31a5b0e56b591d2793f5072d49787a02412a1c55c52228e363e11346a77d8730e5fa898902973ac441add4c4d8aa20ba3353a9ca189566df1d14ebae5ec46c0b89f790bec62236bdf21bb4f4856ca5b4ee2838d1e698baa96162699f62d4e29e7230275374dab0bf8812ab013953007a6174ca721e02aaf3b58512ba5ec46c0b89f790bec62236bdf21bb4f4856ca5b4ee2838d1e698baa96162699f4adfae03a963b59722aefdca16b517659b5aa18426c8560c0713c6753ad4430a3db9dfcad8c2e9c92d4938d596ad1eb05bd7d2935323d2bc22c04b5be505d5be4adfae03a963b59722aefdca16b517659b5aa18426c8560c0713c6753ad4430ae2b3e606e6ffb9c0e926e7d4558f8ab9bdbae5c9dacae7706e89e6cd41a0873cb5debb1adc8e974871ea17ca409e472bf274a0baececcacc3ff11fe98514b2e3e2b3e606e6ffb9c0e926e7d4558f8ab9bdbae5c9dacae7706e89e6cd41a0873c1651799fb4f6f6821a09767e44908c621c4483af31fecc314a125bfee3f795693b2f4fc4eaef8feee6ad928ec777c8cf02ec79922ed4d4662e8bed0b89b1e3591651799fb4f6f6821a09767e44908c621c4483af31fecc314a125bfee3f79569ef99ced680c89e0a20c77d094cc73266c0afabdb48b645f373f76c84b5b3c2cfe91d74266a8af0a5ab4b0a5f1237ec39131221008bb0ab12d92068842cdf343fef99ced680c89e0a20c77d094cc73266c0afabdb48b645f373f76c84b5b3c2cf074095c429bd9a2cbbc72c80fcda135841a64a7a506970823fe124f3cfb104a1f69f6277defc13bb06bceee9dcdc5f7f67b46642b049651aad3785bf790ccfc7074095c429bd9a2cbbc72c80fcda135841a64a7a506970823fe124f3cfb104a1ccee2574ececb6caeb522838dd01a18124883063035f5a30615c786f276515a477839e9a2f558b7190f5d0a6f38393626c024e98a086a7a58958a9bdaf18cd81ccee2574ececb6caeb522838dd01a18124883063035f5a30615c786f276515a4f712f18732f90f8bf7cca0b255658c013c5b22a45cebde275c04c0b1ec6418d3376719965eb2687fbf2edb573e0167ed7c57bd3caa1753a06facf32b0147d480f712f18732f90f8bf7cca0b255658c013c5b22a45cebde275c04c0b1ec6418d3536134009cffa62e27baaca41d841ad3212e662863aa3ced380d67e7f796d5ee9157c507ebdf582f1720a279412905bda4cf90925b8cc099ab6a82d7339c043d536134009cffa62e27baaca41d841ad3212e662863aa3ced380d67e7f796d5ee9c1a37a9ab1e9216ac6307f93abf8214db44501a26259495179aa2e97c42013b9c1a37a9ab1e9216ac6307f93abf8214db44501a26259495179aa2e97c42013b9c1a37a9ab1e9216ac6307f93abf8214db44501a26259495179aa2e97c42013b9a8594cb3c1623c145064a59d31c7e73e77f9cc088d415169225eff63f46dc2d5cdbb12314fa02e26eeb7500086f68746c76df20b0822132a7371253155650b89a8594cb3c1623c145064a59d31c7e73e77f9cc088d415169225eff63f46dc2d09a93142801cd0706b3c39a6ec10b415e2ce4890f2119573911ececa9b0d39925b109b7ba83b441d72c542eb8e8fe7bcc35f8c81c26afe572b64486d693a495909a93142801cd0706b3c39a6ec10b415e2ce4890f2119573911ececa9b0d39924e35c5d39c6b66811c7e9675c616e6e8552f3a8ca4df4c942cdae6a2481c4fe449ca4142f7c691a13e92de0fd8f40577e16ff0f902eecd4fa8b916d4867f14314e35c5d39c6b66811c7e9675c616e6e8552f3a8ca4df4c942cdae6a2481c4fe4840d9b7e6712189a3bb2504f741d6083f1490b0d5d5a6e510f350ebf09eb64682c39299da5d3b353b0a64a077717804e8d2aeb3d4170f32b090408da07bc7af7840d9b7e6712189a3bb2504f741d6083f1490b0d5d5a6e510f350ebf09eb6468caa50e542b8e7b53af88b322589a5b35b9cabd5d49b0c570ef954f6200895c58cc3ae7fc45149989c4cf20f91ca711546ebf0c6a6bd384e086241704e258fd8bcaa50e542b8e7b53af88b322589a5b35b9cabd5d49b0c570ef954f6200895c58b18ad7fc3cab22199451cb99494ed33ee2f060c9b90c5a31faed6f44bfa4b2cafb4b7c19bc13a5a03078b58b0f269443fabb08de638031b2d5f982c863f005e8b18ad7fc3cab22199451cb99494ed33ee2f060c9b90c5a31faed6f44bfa4b2ca6378d88db9aaccd37c685120541a57babe59d1d71632f49485c45c47d376c08cce85db2702e9e8daf327f13f49107d6e79a54c1ca8890cbcf5dc51c8bc8feea96378d88db9aaccd37c685120541a57babe59d1d71632f49485c45c47d376c08cf042c6190680b8a394582fa19a889eb4a2a3c74e27963336af39036d4d7b2baa22ce46421142d971a6dc969bb27821d32dfa8c15a88164ff4dc664d9e171ce65f042c6190680b8a394582fa19a889eb4a2a3c74e27963336af39036d4d7b2baaa6ba2939384c4a67df98b97d16c090c91a87cfdd62291fa1a12ce2d9681504def4c6792ce6da118063009eb30c4953e661016ffdf013d2d96454b38cacabef2ba6ba2939384c4a67df98b97d16c090c91a87cfdd62291fa1a12ce2d9681504de0d3d55aa4ece8bf856609163157716fbb394567be93566c9eae84dec77e0da049c149c96ef4e10ecd76243ba5352c11afd843903b03942227540e8fd3fccb4f50d3d55aa4ece8bf856609163157716fbb394567be93566c9eae84dec77e0da04c5f14813035ff5d104a39ab6bac7a1af05f269757a69a85d57191f3ffb98554ad59bd336b628c0ccccae03b9f19b933a6b8a4adc595ff2b0f80d25ef404bc8bbc5f14813035ff5d104a39ab6bac7a1af05f269757a69a85d57191f3ffb98554a4625a56c86847266ff178eada0c7b30abe9592ae674eff237df0cdfa82f5d5c96313d1ce7f70d074ca36732a17c148174aba41f90277c59ddd0cb1bf22838a904625a56c86847266ff178eada0c7b30abe9592ae674eff237df0cdfa82f5d5c9bf7048f077fb49802de134d8c46ebfa4c2bb7de5bd9633b1d69d57b74c010c8c6bab218845282c0023f3213b7f08f1aca560dc40af1e5374fba1418e682b8e2dbf7048f077fb49802de134d8c46ebfa4c2bb7de5bd9633b1d69d57b74c010c8c91dfbcac51fb0a26d518cff5adcb98873746aab29a18f1c120dfac5ea012b0c806de0792ed27ccb7ad8315619983389e04a56bcc990b041871004e683f8f803991dfbcac51fb0a26d518cff5adcb98873746aab29a18f1c120dfac5ea012b0c853567b6ddb124ecf72097d5b4584c9bcefa7c2bb55178922db4c80fbc637e38ff30436015ffc1cf6ba39864f32f64eed533c69422e600bb39bee2c643ca4332553567b6ddb124ecf72097d5b4584c9bcefa7c2bb55178922db4c80fbc637e38f296d88103ede6e0cd08ed273e0365c124c88e0f69149fabbd27b306635d512ba87b151d55a8b773b9b21f9a59128cb5af3d589fb6124f37dde24a31ed5848d69296d88103ede6e0cd08ed273e0365c124c88e0f69149fabbd27b306635d512ba252cc0af54324240e7e1412eaec960b9221b772def22d0163dac5321b285dc5dd160646e34e0083be3047b4c867b215812b4797073018541942e6fdcc9a3d555252cc0af54324240e7e1412eaec960b9221b772def22d0163dac5321b285dc5df84a94253e97e4e2de5bcb66592072be64e6c4f0098bba3df960892cc88dee54e57ee944c53f4b8599695ec85ca98a3d5a162b013daa4285e075d229dfb9e3fdf84a94253e97e4e2de5bcb66592072be64e6c4f0098bba3df960892cc88dee547bc2220e59c200975b7501cc18dcc078bafb2f714babbff3f640991bf391a6193f32aeacb6099be6e2ce338bf949ee55e69d111dd3d004a5085f9431380946c57bc2220e59c200975b7501cc18dcc078bafb2f714babbff3f640991bf391a619fec603ddbaa0ddec12da667b2c736f7d02660972d01dd01bca80a58505efb4d1d5ff4b09a39078c5fedc5338f57a09859063255209dce0e0934b2c04f21d90effec603ddbaa0ddec12da667b2c736f7d02660972d01dd01bca80a58505efb4d195cf8a9dd5578f2444045acdec83dc8ed99820ca716aeb0bc0c6788db2d6e3019b2e6ffbd03629faa0a3ce3720c0c5e344dbc06199dc67a97c39a2c83644654213ff629a41ddea62e545125a721461764742152d2ad85fa7116552d6ce8bf7f0df999e85ba997241defef7abb92e07aa49a393123e71cb2481578ede557806534b3248eafd1d8cfb5a585122bf4282c644344730ce05d511195180d068a3fc1fdf999e85ba997241defef7abb92e07aa49a393123e71cb2481578ede5578065384847e059c7e7b6b5e535a8f0434da5f0822bdb175753aec2746eacd15ec1b2b326022554133b5b1c098652cd6e0f17f2186f4d9f32d5622c5044bd5d729a66384847e059c7e7b6b5e535a8f0434da5f0822bdb175753aec2746eacd15ec1b2ba1b73261d4057c423b91ee9a2e60c21172c7ec0981a7f54202fe3d0e34dbb585a1b73261d4057c423b91ee9a2e60c21172c7ec0981a7f54202fe3d0e34dbb585a1b73261d4057c423b91ee9a2e60c21172c7ec0981a7f54202fe3d0e34dbb58585ca719737ab1dcd88ecb6bbfb895b7758fa223dcfe011783dbe1a13b0be498c85ca719737ab1dcd88ecb6bbfb895b7758fa223dcfe011783dbe1a13b0be498c85ca719737ab1dcd88ecb6bbfb895b7758fa223dcfe011783dbe1a13b0be498cd430ef98d3dddd1e60af927e3b087aaa45471f69fdbf8e8ad921e0376dbf76bed430ef98d3dddd1e60af927e3b087aaa45471f69fdbf8e8ad921e0376dbf76bed430ef98d3dddd1e60af927e3b087aaa45471f69fdbf8e8ad921e0376dbf76beca8d1332da393fd66f0ee4c5f38ec06b50c1fcad76a5e6045dfdd30f7702dc21ebb4bd510a9b7cf60a517a1d62a52239b4b8e16b4671d213b98cfc9cafcb0455ca8d1332da393fd66f0ee4c5f38ec06b50c1fcad76a5e6045dfdd30f7702dc21690798df746eca9f4b4dc086bacb2f6a522ab5b9d4cc9fa89a2721dbe0c9ef6110befbcae35f941d532a271b12d6bd80e352afc3a1750a8ab6f5132983e789cf690798df746eca9f4b4dc086bacb2f6a522ab5b9d4cc9fa89a2721dbe0c9ef61da3e256eb20624021367eac93f6fa9be6c201fb4612e1926e344ebc564005a5be5e165963e4387ce6885539e6289638e0b6b46fe462d3a7883af51ebd84216b7da3e256eb20624021367eac93f6fa9be6c201fb4612e1926e344ebc564005a5bbb6cfa2bde8978243c434b04d5a4721c1ff2166490efd777338d6bd910b22de109af1adde143452c094c66918a2305d3658ca84ca427c4ab5a9db0c60b329ac8bb6cfa2bde8978243c434b04d5a4721c1ff2166490efd777338d6bd910b22de17745b82b26680f7099bc13e67a1776a67cb2fb75f4eac0d1f550303b7b7c0a64714089adbbcb2775b6bc38dc3a6e833515fba6a76045b8884da3152de500c2f77745b82b26680f7099bc13e67a1776a67cb2fb75f4eac0d1f550303b7b7c0a6468c1ca73be5a3c401beb46f4269b11c39a7ab7fefb49197b97417c7c620f1d296b4208a0cf67bfb75fdfa90adcb954c03d5192129f5a66806a966f7fb6558bcd68c1ca73be5a3c401beb46f4269b11c39a7ab7fefb49197b97417c7c620f1d29726a0fa0d8380e0d918186b3e2a401135075a5acfacaf4cdbfe5db8e4711e0f1017919bb5f9d33356e053f08dda931e96b5d0054adf207b3f72d092a84e33e9c726a0fa0d8380e0d918186b3e2a401135075a5acfacaf4cdbfe5db8e4711e0f1e6fafd8dc1ef13c691c38453e083391c8450637e5a6fbaf67a0c4ea0161d3e6680e88c556bf1e337ebacb2796c9f31f09420e12c9a6626201dd079b2ff2ff123e6fafd8dc1ef13c691c38453e083391c8450637e5a6fbaf67a0c4ea0161d3e6669fbdcafb1337c435c47ecf63495d9dd82143f330c4f78b811a1ff2a21085158c41326c88acd7566fcf51bc6c58bbab41213c6f2aa739b40a74635df52b5660b69fbdcafb1337c435c47ecf63495d9dd82143f330c4f78b811a1ff2a21085158f23f605ec6476e76e0207d26f80c8f3deccdbda47ffa680f98bf7b00045e5de6568ffef96b669dd81bfc6bfc8a6e6af28f6cfe28d24be2846906ac3015e298ccf23f605ec6476e76e0207d26f80c8f3deccdbda47ffa680f98bf7b00045e5de6de11c6da67fb1af846c46a599791ffde6551fd2e9cb777bade3a9bb6c82401211dcae14e915fba0b9051ff463663f204a4fa4ecb34a31b39558e79eb7f2a5356de11c6da67fb1af846c46a599791ffde6551fd2e9cb777bade3a9bb6c8240121b6e066233ff0abdfc602149b465593e99e8b549ae3101a67c0b48aebc272600f7b1edb5c8aedaec30bee2bb1c4021d131d19808513f569db9d6a6a0a4bd5d2f9b6e066233ff0abdfc602149b465593e99e8b549ae3101a67c0b48aebc272600f7a95c3482d427c2b944505df0cdf3a7519aac203df08138e37901ab3f7c5d8e4f9b623a6ddb2996f46f2f9f6458c945df4456dabe1c231dd2eec454e33e2005f9a0cabd2d2524ddf90719e05d4cef312473d249b080f3e9f06e53ec6011b3a32f6fc21b20f6e852d2249d39896fbcbaf76c9477075bbe4c6e53ed5cacc7996371a2661c6e54ef662467cf873974fd1ed0e1f97f8bba1eeeb09e23c50fb425d66e63e95ea68d48fdd3f9831afb24b4a5e9ddd03a17950df13e840a5d58120f1c66fdcc49ba23a0203ae6cf28e608f8e6297d7c4d77d52e651db3cb49b9564c6d2578aa1173f7cc60dad2895071287fe6182bd14787b3fbf47a6c7983dfe3675e3cf9ac7a464f541492486241d1b4bf33e37b45c6499275cc4d69c5a8e564e597698fac6f86a20dd05da197e2058176ebfd47edee7074c3248f5f48fe0fb672d7c21d051a00fb5c6a86ba187e0c50e811d659ce00991fd5f5b408f71ebb2ef0f161181a2a89102a2b1d2b2f1f4473236d5d1ececdd0be8fdaa498a3dbe21a185ab1b8b5fdb36ce3becc62a6115ed904a17083949ec8aaef5a80f7078cec232f43bfda6ca994d710e4e0c760e0204c29a4273fc0f14ebe3169306d2eb54c9953f58eaded38b427841bdf280e878f1e26da506e743eaa9429075332af60cce429473f5227237dd7ce5005b16a8e4d8342f0d193193c878e3cf35b9305d22b3b1aaf9f84c7d30ce222e6a50cff1a4c9737173411da108cbd2c9bb57c854480103c4703379d78b244aa905ffe1171a968caaf41b9a0154d1ddc76c05a2abaca2b289fdebcec1adf9167863fb0bab29708c546300c80a77ef07838c9e0437a59e265970d57f8cfa34494c5acb6692ddb31f616ae2dd89a075d2af6d36b0b7ec2ffe7af119aa5bee667f5fb387924a813aec9fa1dda47769d09e8483a748bdb202be6a848c27696dcfb6894b378869bc89f113703fbd1e9b13a83934463d5999b055d1e806517ec2f74f1c6562d0a1a500c48ba43f2e6e9d0c3d28356d747f274f1a4c8d54a1b5087578fa78e5bdd0afa6a9e80e8c5467c1e4226cf6e586cfe7a674a653ad3768ac2fef2a646b3301c20af705f4d4a1544f22fa8a84241bada27ab84133d9149d2925b3f719809ef2297e541461079f15c658af207a3e498be314ab2c6b672e05b51952a82c8dbd5603769195fcedf565e457bb86c0d5bae04955d046306c6aec3b213ea3aebc2c526dd4d121c95d4a25a2fc928a87cd80f8448988185f30414c2186ea0802bbf3db034122ddec1f8a10061b97c50871e14b74ee36d0ca5c2a5015cd36cf7f561269f33dec4c323093d3d88b0673969accdabdcb9ce2cb630f503f9110d98ea3e1529f2f965ebc275a2f78d3de47f8e9b69d35589d764b395496001271b92efe5df07fc0ae7c3410d1dd2bdfebbd3e4d8e806c8166beb0be3ca1785a3970ec62310710eaf7de82932181b04d06fe4528f8adaba9fb8c4be0dba85b99329d7f16907e620adada06be5216abcb964406c827b569b2cf1aeb257e29f235e2a8790dd68cee45668776648bab809ce8584f893cdd8fd007993ccc6faaa9dc4a933127da0aaacd1dc7a44c09266051af56bfe3215ff228636b6b7b25c61c9e8c47b218d3fbb801541a2861926ac712843d2113fff90e2074f5ba2e52ec5cb1eafa6739b5569b0b98ee89df5f7358b84ccdc8da64e86f017d359f8d1b769058bfccdb3c6c70c49a104f5081a2fcc9fad68f7b5eb3e4f67f0b33daa24930c4a6ad0ff66dde9a69f2027e4b92c2c9c61dcda2992e940654c606577b2dfae7e31d3d9aa3013cff44a4d7ad842f257ac63765a9998436701b629cd86a701930d77a2177497586e99bc3fe60f2d4beffb645608f167c76874a72ff405e15a2844b6ed9544c6400cf7299b42d0c2bef93c9bee70a9e89f66b8610ad6d6da3d57f61fce1b98fc81ea8e4ebebaf402fae40bbcdd35d4b8297b9bb49a79aa215ad8f1fdfdd842c7522241372e7eddda7df687e815692a89157c5f256f21a08bdbaded987242ed2a8de7133ec2f61ddcc1c2e9de27816ab7cd0a4c678a3a9079efcc8e85bbd1687272a0991f6d0429a4c06679db2d114b2ac95db27a70f9d1352582d9fb769b24eac7154f18d7dae856588297d6da98f37fb5efd8da883826dfe4752fa2e65741e08a563a31ff914fe71068942ce9c6f4070b1dfd7b25e5e7f2fe72632015db2cba2bb4367055551da6fe22051b96d170c7b96fa271c46b25799748e28113d2d49f5d666b49b78accd2c6e10a7852f7dd6dece9b5b71aa83c4950a7d29467ce0590b4a1137830d43d88d8f20e4035dcaaa8b2a5c3c3f1de96227811178b450731fc955b1247656a605d04e5ee98e0d585e4596b94b703a27f69fa426cd9f17629f6320700ed18baa94839304cf1bcabbee7edb501747dc055de28315910da20218dae8b7d5becd81de1e283dfd8b0415a4980d67065de73a0bb453a439787b0efa031e43416a7d852a6be705c985e1200693eb96d87ea79cdc633a1a5504bfad04b1ec9c96d44d4ebb3bb99066a218318e7d67d866e20887a66c10b4dc49bc63724e539137ede6936304fcca1c97c28d16d89f381e108495213d2d567d8d079b78f3f3b566ed52ad2f38af61bf832b7dc28858b0039a032d6beff9b8cbc9ad2ef2e10e96afa83d3db1f775ea044aed275b7a35574ae0d8645bfc5f0a31b59efe990b86efb98936769f33dd91d912ce55b49a5a4cfc516cd047c43cce763d12e8f71a63dbc16641bd87147eaf5f9d9054ea856864b216b2735b025a9531e3046e52d3e039c0be04f9a5a74651d7683a13c7c7ebd4c7dfb5996a9ca58e82d12b171f25d57239ad237dae5c44214a70f2f4f39358c2759b8b9013461a0e7f72eccb8b29f351c4e7926cfbda58e0edd6d0770bd82e0b36c5febe7763bacad13a979a5519fcaa4f1e1e07b2c7415005167fac3a689408c7d886fabd5d4248181548b0fc89a9f5ee9cf52ebecb235708ba87d47896ad14130884ef9fb4d1468bcd608b46f38cb0c6ef115510dcf9aa0f71e590792f407efc6e1651643aceaa5661909de14e2861d864443b8472460ce39b99cce5c6965346d47aa5acf4c9ed8f3031995faa224bcb10153d2b6144944477d1f27d1a6cc4a879fac34c1c86362e17944f0bcf68db02f4995bdeea605867795fff7ab4079073f96705e4b5cebd515e057d670bf54e10b8a6f162ef3daa7f21b146aee3249160caf3c32d54c886b41819ebb7f4fb34b8dbae1c45f4fc0864f019ecd772676ccfac5fae7bed5a964470a241b4da7a6cfb718e4149d09644933af38f0497602baab6e563ef7312237e8e5d201d920b4130f057cfdf1b0be9baafaa246826e6d93204fcc20682778b995a0ee87c5f1180fcc52900359eee15bd9a6e3a0e25f0d963e0b2a34301976a81811873dc9a0c79db9fc00d1c30103487f3c6bc3a6d81b4043cd48e02b5ac8f5a5d8f84c0f903b2b7c342184758d590d8bcf810d561f942fe5b372d662b57cab6111cae9021505e3ae1b2adbbfc344ec48165fda322f6b069fbb18adc4ffdf89004bf0c5230caa7079f7ca3142fc112f8b923ddb2c7358369d2d3c24287bd130daa0eaef3e4cb465e10cffb2bcd194ff74097e0c186b4b8eb7be41ac59961d96cc7b9fdf011ebcaaeaeca7b50b8670fadbd7b75fde66192f8c1f68f304840e68014346517680f593ca22f67133c39ba7e46f34b9be62c980a728448c6b352eca3b819488f64fb3338fd93f39c1e30f32bb13f2f9c577925e58f2960e44cf9e8a8bbe04accb1c1a80853efb19ae0772d18f81e270adefc1b2386cb368e84d9b15263e81685f7513c5ab45caf80b2f73c301c68e659f7162c1b1882d3599586615917afd3d848c1c4328656603b2834af6115f2aec932fccc935e1a60fb4d4e353aee8039bb71e2145a6e68fe1e6833a1b4250b70ee0ac5ec70bbb8c51d9c9043814abdbe7dc39ff98f3857d5d110a84c978ad2304158d810a4e9eacef1d449f9858e357fa8c2edbd4b9fe739337e9f201cac3ded20f99bfcecd4970ff776beb30e98a911f72f97609a2373782573c17c88a5fb3537db338aa382979ffcb75503e532a27c636477396c855209ff5f3036536d2a4bede0a576c89382b60c5eafd9a3136abfbd8ed52df9c90203c7a283e7429ed60502a87a02511e0fb777a880cd05c82a8d11a29c65ee86a396def3344465dd71441b0bb4a7382602495383616786a1c6308b03a0dc82536908d24d0974b2248d67393d613fe558cea4bdf5763c38fb4ab0423fafe2fdca34d6f9932ac7f1a74c0cd8109d60234c7dc62463016a323ddf98cb3aa9cfa78f3bab4768bedbfe9a5262a36a5aecb13d291f6e753cc1ac635caa7e1b4630fbcebef8db8db332c098154a5b11f652912bf64f3731670da18ce8b5394cd53fe6bf216268e7e8eae4c0247532e420e2e103727d50230367d96aef8e8d7f185b4acfb84923714f39ddbcbf9cf38a06bf6f5d621c2249630cf035c19e896a123ed6e5fee18b5e485123daf2f15da38bf727ff387bee99758a5cad2825cb3be3fa5d031e0821e4eba910a46f417fd890207b9b6be77bf6ed445ed537c9f856d8defe8b56505727737d0dc9348d0a877abedab4bdd864481656d3a35f792d0e5109e3f821e6dbfcf097163a19b0cdfcbff3b3db99292feccf7418adefcc2a59e9a07fc4e34363bd62f7e878d48c8a02730a8ed1c584c80eabcb2c287d335e86b71b0abe5718bd6ddc9aaee234f0f0f2363845d2926d8d34edc8fb1c50e4d1cbaa1e008bb491cd7c12116c316e51974f333fe7b628eb7c502a213c34c05a94ed063ee03f47680bd6efbb35036e06fb4dc809bf398cfa64fa6328486b8f5a5cbd10e377e80adb8cf94acbbe19c38b4e1bf708d831a80a3a1f6e7c70371ad6782a4131badd2c407f7019ee2ee80d22945021eb668aaea2aead4ac50ebf58294304e412cc0f1b12980988dd6edc414e4110029c0a1abbe966d21c5930f21063ea78fea3b0f76dfb8fd92858d2a4a200064a52126a43dd1a992c8d0b93bb36edf31c1236b1b4d1c0008553868bd2fc9137570115b96b834f2e647c4719e2c1a7375105e15a89b377c66f6b699977dcabbb71d923a4607b790285bba5c5e1007cd8c1ade5c0214bcc825396d2bbd02054e62a9f162104748b64507e7ca8f18df639fd823d7cc23ce4028a3550ceefdfa40b3c76f81d1a94531d6c36257f7b8d214473560d195e71bccef0c69a53e1e52d2800b7a7890aad7e583357196f3fa52433326a6626880e34964e00c5570aee50e9a0a0a7c6d86f6e4f3aedaf3eb49769282daef1eaedfd4fa1c31fe5eebeff67fe2307c89dc2e2fd802072eece5f6026ad2d3549ab193a9e38894ea15ca9d5b3cd408fd6b116acc0c2cbba20e1f6d0879c7c4293446c371a9f79e7c90bf3c78a77a9b8fc72b18915dd9134b91047d85b442898d59effe23e7e0cf4167ca341ae31119a731dbf880a7b9ff32314f4f1fa074f206bbf7fdb851504e5313128636d73b4bf75b886e4a87dba0cac060269583523ca9506473a755203037c57d466a11aa89a30a5f6756f3d1ef3da8d8aa08149e7f274dc64dbfce2155da812e5258ca8e8f832428d3b5c2d45ba92000718abf85f158563c755205e100356ce1b4ab9444b4d0a3d21f061a36ef01e8d3a5fe1cc52f7b5ae008df12f1dbce7304111bf8d4758f1bfc0115759a49894d98cf0c1a8ad01f0d5813a726cb3cae76b0deb521d5fc7fec3f9652e9bee735f518d0fc4dfec81f7aa3da1e052372ed4202c0da4eddd2587840beaecd7a8f953807fde1aa18c7d8e32994281ef14f9b118b9bfb7acd4858b3cfc2e2094024cc364a907408d54310af98733ae071af23c6202691502dd2ea4f516c851c4a8f953807fde1aa18c7d8e32994281ef14f9b118b9bfb7acd4858b3cfc2e2094f83d85d2c918b6c8a773238bd04b468f0e1a5147ca1d6de71a8b8add5a1bc61ff83d85d2c918b6c8a773238bd04b468f0e1a5147ca1d6de71a8b8add5a1bc61ff83d85d2c918b6c8a773238bd04b468f0e1a5147ca1d6de71a8b8add5a1bc61f77ea72a9ab96b369cb97ad70855f35162d78b857f241a115ec4699da3bc739ce9e018613591fd599e1d8060f51af0f7e8d80c77925d1ff09d38494c0b172666b77ea72a9ab96b369cb97ad70855f35162d78b857f241a115ec4699da3bc739ceba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc3a6e95d01c45e2e47c05df3c81073b895c97c1eb0e5b90ab175d6d9263fc81f2c8ead615c159598370295649eb296819ad4b40d50b200c4fec2d4269bf7af9ae7ecc32ce8f6f3c19a2dd21bbefe48e9054d01ca9d6ae6e30832a65f530b1223ab0cd2a3f01c96f594b6038e52bd83d489bfa081cc757103c70aab4e5b2c4fe1f6683da36e47af523f3f41e18ad244d837783e19e98911cc0b7415dea81494ebccf33568f7b767f66896995a7a81cc662e8be226f2e58efb61d2028f64eb5d231d46af0c591299d304747c661da2fd4fe417cb7e057eee56a1789c54e2ce083bd08ed26ac718fb68b44727a29e770c6c6817ac11c02edf86652923243046928de6a271770c5e0c0a594075cc0063c807421fac3474df05d91a01c91d12c36eb5f0ce875700c8798193b8e2748f7a27fc542cc4d525a1e6fc403767450ec92be99e74fd445337ff503223dd8aa4bdd7d04917067d00c796a10bedb7a1381a4960aa5c249a522b6b8e3aa6f1b12a8bcc09508b99ad612b58d2fc973db27ea3b7cc3c9e5f9ae0752660ede63328a456f58f87c29500b31f58c1b813458b00fceb6d57bd338c5a475d1101064603d3baa5507446d3c5e73f741f6d6e77c6204c1eb6531e7275c5c20d1b414063c28088b68e7a3e657af60c9c23435bf92e77a1fd1e56dbdebf270868b391080e21dc9687eddfaf321c965ad979f68d3f5c423c613ab6d43277e5c76fc0f073cd388fcff852d14d068f6bb6d4886c340f8b75a1229a97facd1330e5487ed995eda5c8619df0d3e32f69cb619f97662372fb76325746e923d82d821e75e8d235392c10c145ab8587927b3faf9c952bbd48081eebd85229c318f57e732f46aa3506307295165afc7d2ebc8356777060e42d570c7e63eb7dbdad0898ba1c4e48fa67c40560a8fca02667ffe4d33ea2cc84b4874c74d3c249c318f57e732f46aa3506307295165afc7d2ebc8356777060e42d570c7e63eb7ac8f38b8e8ca3ea8243d35585fb5d6f878ce707b9b95687a347420998c362d6b7e85dca8e1fd05eef6039c27a1a862e8042b915474756477365913a25d812ea5ac8f38b8e8ca3ea8243d35585fb5d6f878ce707b9b95687a347420998c362d6bb3d7dabe868d5992b9dba556a4c1a3623e35cb2caace476b6b3de0532a724145d1030e0707ded12dfd2e74b9b35888afd2291e5efa9e0e632bae7add30607f65905758251c6b7df1f47ef4d577cd03a6362b57febb747206c08c2e29bb450b3dd9c65fb2828dbc1f3e399058a341d51e9375ec5bca95a8e92599c41bd5b78bdeab5a0a2fce2bec75d969dbe057b490ef574f9ac57cce9e0eaaf7a220b301e83817f4f6832cfc84b5b9600414bab80b77e67ccb611bdfed10a3f2beca9d0d568b20fa0966aa37625635392c3df97dcef0caf183a1c61adad356fac62746ed7fee7eab9d7b50265a5ef7ef132ece47470644301a9039b97a7cc80564f9c76d85a920fa0966aa37625635392c3df97dcef0caf183a1c61adad356fac62746ed7feea6a5655176c249ab1448648ebc29c501cde72de044b031a13938046f97aa9e49f467c3404ae4f9a000ca1bb8587a872771931a94e1b00ea5a147c48427b505a23a731126f71c1e23dcd3439e3b8d147620bf37d9af2b94c3aba602ed49b896c8b78cedfdf6bb33275075ab3a39432e9c72c514789955376c4b34c929b7ebafb91e73ed1d2450f87899c82114c9ccdf2e22d08da173732cb57c78d5e28167f39799ae8b8ec3204f30cec42c0f7715089cd5fd70969dacae6e935d84d5d3fd21f7fac7594d36bba8187a2b45d4f1429a5992a97dc052bf11cf7a36a9f032f1ca60d6a9bb4874d50d27654f7b44ebd3970fe56b552a8eb586a5e9c7ef32b05c31d4143eb18e28f707b6d89d405d41298896a137360678dabf9bf6434596e030f0b452aaa8750f32f75e789f20be0da59b9646867390d5255bedce40eac862808279cfdb08cc9b7f485dc915edc76ad8a33d2743c244bced97f405711317d58922ef52aaa8750f32f75e789f20be0da59b9646867390d5255bedce40eac862808279d78f92c3b6e5aa778d2ec8ef7faa14d6005a2ba7784d9e69fd872ecc812877742a64dbc46edd0173600f32d195531741de562522da28bc76c2f97dccceb37ddba4712e985f8d892e290e8317d0d4d692313a39d5b0bd22fc640b885a79043ff76ef28116c245a8e5e7f2d57f17607b7df706fd86110cf1c5a2b8416151b4124881a8a1705087119d7ba1eba17bac27fdb49ed9127a28c6f7678f6013257ce0ddc1bb52ea0816db4c5f3420655ab4a476fb3829709141e91f1a56b9c6fe286d56c9e1b3dbc619ac31e7017ac43668a20200872c1c0e79ae379c0dab6ed399b7304bff3afb4c44fdae26e3dfc2562e7802170fe8e99403fd681038e1577619a137af2f012df837a77f1017b8430c16cb2cde5048b45ec929928a60315aa2dfd9924bff3afb4c44fdae26e3dfc2562e7802170fe8e99403fd681038e1577619a137d070de1a399a53d89de99a63040e9028adee1cfe92434480c81091412f769d17f22a60a9937a9d5a3e53fd630b5d0ac39053fe74864fd176198f5c1192b7cca5d070de1a399a53d89de99a63040e9028adee1cfe92434480c81091412f769d17ca4f45724eaa9c5b5589900896e5e40f6c0684c1fa5ba31ab913b48004149962f4de446747cc7354c4b5748ff3915bff276d1785e19982111d09b1cded3a9cc9236b121eecd3f9a4c9c328b7d332eb8120f1d9eb047bf8a709a33ca9c9a139c0e22ba32c69ce1a1bb4b6e73fad5a5711406b8bdc5e41941a6d14bcf13ad7283b6cee290b30e23fc1bba1ce084e16ea68134f62154c672ce4d13202e92466e45b6cc739f0b3babb29a034da695e8ca546c64610a2226f70b7610e3bc0858972e3a1760ba21bea34228bdabb8edc1f28761d0f979b4a99d9e71f90fd06e61458f793bbe6f9c2150b585e00f980b8a72e67bbddf10152bccc9a557197e73f4cea93a1760ba21bea34228bdabb8edc1f28761d0f979b4a99d9e71f90fd06e61458f7b93f27d4ee2a0e2c0c51eb8af847ce2d70a6b007b1446a9d93d05ab80b41b37e3a88b651114527b45e6317a3d0b2669d4790392288db41aaab5a527cb7401128b93f27d4ee2a0e2c0c51eb8af847ce2d70a6b007b1446a9d93d05ab80b41b37e00a036fece98de25ba75aa822f64598da48da3069784a723ca844d01e102b3997f51b03ef65c4f48ffc6037ec6a83362d532ddbd7720675f23e87bbe4bf5328000a036fece98de25ba75aa822f64598da48da3069784a723ca844d01e102b39908b8d2087e1db9c158b3cd8098b91a99b80bfc20c94d8eaa208da8e57f27f66efc243c5ec89d5f45cd42464439714ba3cec582406409b584b7c95386c13142ab08b8d2087e1db9c158b3cd8098b91a99b80bfc20c94d8eaa208da8e57f27f66e20538289147ce0d09e7d6c923b1fc5165885412657d3768f49fc381622eb2bb6710edfcaa94b6f58a18bf9f860054d184bf0f344751ea0e6be775d8bb13b4a4220538289147ce0d09e7d6c923b1fc5165885412657d3768f49fc381622eb2bb680aab7931dc999dee581c8b8b56fcd973fe156335a96ceeaf6acfc03cebf10e89653944363a4773cc32bbb34426024597a9d2ee4cd42e7912b4daf8cadfb53ed949e115a77dd6b25280195c30b6f5146a303212816b3221430ad82467d4f31335f9cb36ca1bce9d5df00bc8d4d7f46b7ea2353dfa99292ad7f099affddfb5d03d045cd7ecf2a12b6ecbfbef79eb114e87ef2ebd756f5b705f73e6f3266e3dede873ff461b8e216bc55ad9956d13dabfe35ff2ba13701ede97837884994dbc9fa0f698b3d85aacba637dfba592258ea375029decbb997021c7848c8ff5d90f69e86093cf63a2d666264412b631589644ff7792143156abfaf34f5960b407c09f20f698b3d85aacba637dfba592258ea375029decbb997021c7848c8ff5d90f69e40eddd9f731ce14da601a0097ddff32d5deb3a3c64514d27f05c03323d75ad507a4a770b1c4fcc4b87b456aeaa2ac84defd00ce7f57913063628669ffd72decd40eddd9f731ce14da601a0097ddff32d5deb3a3c64514d27f05c03323d75ad50031c7b48253be4edce74786f9335224ca7ea88c214690342892c4383700709c186d7a7d2a7e5df720c96b5560a878a734506040050ca668019876eb02f2d1a19031c7b48253be4edce74786f9335224ca7ea88c214690342892c4383700709c15e1882f8c1f6319c3215cf50b38d26a7448a2e018f2116699a917167109bea19e2ca1ef291f7a900193ff02a04a24ad3d762a07084fb36ef4ca7afcc5e8728c15e1882f8c1f6319c3215cf50b38d26a7448a2e018f2116699a917167109bea192c7b13a28a189a55c63825ed649dc87de7b5d2d3fa47c2f7bab3ec50e0ab20c212c860aaa104576af70863b7f6d8cdeafde23383ebdbdd827ba4b9f9edfe5bc02c7b13a28a189a55c63825ed649dc87de7b5d2d3fa47c2f7bab3ec50e0ab20c27f6835ea67af0c01b6b87bfb0bb8008491ed32198ef0c9031897741e590262e460095dc6d90676591732a9937dd7a1d27993db2b680a2a0ef19ea2baa71910d57f6835ea67af0c01b6b87bfb0bb8008491ed32198ef0c9031897741e590262e426a2f4be5fcaddb4e5b54b61ba05ba0543c9a007952a1d1cb07d0a8359c56a2d56d55cabfa792f73b1adbdb23b46b3c29d8f484b63ac0174790eca2fb3651dc026a2f4be5fcaddb4e5b54b61ba05ba0543c9a007952a1d1cb07d0a8359c56a2dde9a880abc4513af1b69ce150cd5a5093201c39131717cdc2ba6b19f4364c163089d0e4c21c88d6034648552e2fa0e440b27d91e11d9c40112d3ec64426901263ec636fb8aeb297e1155e442d681a9d65075a660bd78a37cf3f7fe6c3f6e3a8072faffdaff0145bc5c225e71e6575fa9d1e3848f188bcb3cca4e741bf9e6ea34bd3504040497cd049e6b529bde0b461f63cd2be3070f2d0815d4dd7609b266c81c2b0592c66924b7933f734493f9e0ac079755146d4ebb7287d78e001a113f80d0d57d118d64916f7e6edb04f8bd1a760a1abb879125899ef50a36d09ef54df47af3e6d7690b818a939bea5bce6eb46cebae9ae993f08a41356169d2e332af31af24399bb8684dc955a6cbad67b33b540b02e487c67a952489ef937287bb22223003b2c4b1607510dedd797ab152612c2c7c118cc681de482cc51485ed74a73aaf24399bb8684dc955a6cbad67b33b540b02e487c67a952489ef937287bb22225aa30074d0399f541cb2dcc598b81d1f1bf3081efe2f2562e8de5ef5f8a13681c8f479fef1775e80e2e8f905bc6685328474e980dcb4bcfc2304ed7be8127eb35aa30074d0399f541cb2dcc598b81d1f1bf3081efe2f2562e8de5ef5f8a1368187140e1d69fe349606213114be5d38f9460f26a5a1682b0384fc426764d78c9c55efa53102ebb1fc82f57e88699af677f211fda7e1498eb44f68fe2218a2bf1a4cadc2f1a1ab8e9a5ba5676f70e5930d43d57f107a09bbf63030aac02a5a0479ef21944cafba867d405c3071a5eaa3542598f73617926092d3d7195435497a8d20426100b9fc080e974f600cf01220c7655fb69b4fb11bba4ef223bfba5cc5a1ef21944cafba867d405c3071a5eaa3542598f73617926092d3d7195435497a8dc99892a83b9e035de36063187122626eab31474d0f10f00e0adca0b26d9137e483ebbedee099114c601fbbe6ae5c1f452df98296390e9871c5391ac4fda675c1c99892a83b9e035de36063187122626eab31474d0f10f00e0adca0b26d9137e4a4d3932b3b51ccb2fd20a6194e642c0c1025d1dee2722bf0c0a247072fe1e8cf9d1b394254fb0638db8074c29e709d545fa4541ecb44a901ad455ac787c5420fa4d3932b3b51ccb2fd20a6194e642c0c1025d1dee2722bf0c0a247072fe1e8cfefdca80dad6036798f825d3efca6b2aa3d03d2c2b7fccca3b9238f88542b80746c80a4de93eb8e90d635bc8e9ab2c881e98e35c28814ad82293159fb29956912efdca80dad6036798f825d3efca6b2aa3d03d2c2b7fccca3b9238f88542b8074c3aba77832566c66fb14d3c17b4b5fa4ad313d179e8f06f70cd81a1bc210ccc17a46b4f16a5f24be341aed0e6f1d12b529a243f1e5a0dbbee66c6d1dc9a8c269c3aba77832566c66fb14d3c17b4b5fa4ad313d179e8f06f70cd81a1bc210ccc1be9ac919b51e1db6a35fa5c2b8c3fa27794caea0a2f8ffcc4e5ce225447b8df99bfef8de14579936e96c0e921e934a3f4f56b4e32d3cfacc12f3e24436fc37b47838ac57a46a88d64ea202d25dfe8b3861ce61cefd14680faca34bcc52e60ab5d1329d662c712d603ec70b40670e07729a899a3e17a6bc7566472dcb48134596a726c48590b21ba5532f0c654735991571bc0ecafe88145cb8891d82cd364e5e231e0c485123729f26b706e54b1810d4294d3bd7182a2355b14b8318bd4ecf8e090dd3888305889b3ff34a3eef124bd44a5b5145676b8f8d183ad24d0dc75b668e687aeeb1db537d2717cb0352c5f126ff7d4095c6de6dc7f00d5103f3009c40ca54e6458dbe521d591e5b8d9bb651ef929bfae946706c98470cdd569041a64f78627648f791c9e6b909ac3f52aa0255d54d99f1d66b3a704fb7fd0d3043a9317cec3cb8ac004058dd0a5af246e6d950fb59c7ddd0058fda48bcb3fcb98d88225009d4809896dc5e2906b13708c13be7a97ee736d0323634ef6befd0cbe1588ad5d41e2c29049515d295d81a6d40b4890fbec8d8482cfb401630f8ef2f77e4d571b3469b4d6dd0d8c74f86b17ec9d2b56f4449a09048f70876f9ac5ccc836ccb87d948c0a6690f8cac3df85eab497244eed9ac23baaa6936389687671ace724771b3469b4d6dd0d8c74f86b17ec9d2b56f4449a09048f70876f9ac5ccc836ccb6e58cfb14c986977b372fc0d943c4be46a321d523a3957dd096ee6c030e6d9cfce78f3927d4e0c350a24e44f5c6666e859a6fba19f5b45d3b5c2a4a0eac9649c6e58cfb14c986977b372fc0d943c4be46a321d523a3957dd096ee6c030e6d9cf97203a24d115a59f9c00d58b09295305d6eb6d9f37f2d185208f3eb986e6e082f0304a086257ae74dd94cf34c09d379781ef097dd1069be541a11f3d215e1a5c97203a24d115a59f9c00d58b09295305d6eb6d9f37f2d185208f3eb986e6e0825d814b42f4221cc138d793dba33b0178ae11dd7e9f5fc4ace15271668b81391b1563318d81f3f362d9fca1b82e727b1bf8ed0ce9ae9948b649e6cd7faf1488085d814b42f4221cc138d793dba33b0178ae11dd7e9f5fc4ace15271668b81391b45fda050964c13ef30d44af3d4923f96faaa32402cf3aaf3db2f0f0ed918e9703473ff09616e621baad470fe7302bc3837252769ebfdb0ceca12b5e1f70d4ffa45fda050964c13ef30d44af3d4923f96faaa32402cf3aaf3db2f0f0ed918e9709f02654649816145bc76f8c210a5fe3ba1de142d4d97a1c93105732e747c285baf7bd40a0d0d0a3e726a9b4b3a2a543019f6ab97a340d0162a9c29ca9da978698604d9d03786d0d509abb49e9f069337278ea988c244069ae8ca2c89acc2cb08d5174b728b376a12cff3f17472d6b9b609c1d3926f7ee02d74d60c80afd60c7718c2be738c04ad20ad375f6a71db34b3823c7f40b0340f5294d0e89f3c9b093bb0b882a608fb1a8ec1e21423cd2a1193da63e1b81b5ed4fbb9faf4c626ee10a04963fcac450d3999b057e6e53ccea3ac987b306c23a2dd8bfb7b02cba8de2dcdd4258f2dc9bcebd803d0a599f10bab9b095baea00084d2d035010159ac9150c2acb76399ddc50a242d237e785950130127d0b9606202083f6ce107b873b567eb849a04a895e5ba6d0409e690d368fb1412f2309fe3f8f0f089a624a16eaf74c850aefccf74b0a529373c552995987ecfed0fa846661a6c440660c06069487c1fd4c6c429b387f95788f2f788659bdcc024e2980af42ed5631bb4b5f1aaa44f386fcd6a99c1285733bfb4044aa0a0551cde45d233be1d154c759a19c255096449fbd75ba5c9f4365cfb6246e58192caa3f5ba67bb10102d13540cb921ef294b730770d7bb7c6879ecef41c0777fc786b635d6e967bc1d86586b04fa1224069b7096f856b72ee23041565235b4c00adcf409698efb9ed2345101e8da400903124df4d93cff78b16cdeb74a74cbebb3fb3ec48fae318417cdf9634bbd21b8963cafd7265a1477602e2f84dddcbddd074c1cc7336213148f7f878bacf80c3c794c09e84739793e2f86fbb741e2b9182787abd93d8839f694fc02be269f7b706a2c5603af0484818bfdf15583c6792d1a22d9632f7c7b4161febb8fc02a1009f7e80fbe3ce2433e9d5d10f954d52ba3f01ae8363fdbecc8ee98932589da7137dd3a3b777cfda118d57ca479c2a304a3a34644f78abd137e126e4887bb6423b7743bec4f80ad876a658a322fc5dbbeb78218569d4f14deadbc65e53c6d59de8c0a060e2d19f142c9b034c3460bdf4b158893ce57e16cd0eb3d87a4fb23d019548d2ad26947f8f8f4bf363c568370559ed97c7dd475f36e46ff017c5eaea6a71a07035c70cd83729af0a1116c70e53e276ddcbc99c55b5e1afdf9b601f01254582ad1cfccc6ae77adbe24bcdc85e2c51e33414b85b1d6a2ac42a6c34e7b936af7c02368b45c1136f4d7ec7b868190f6c66defa63fed71c3373992a40d06e77cb2f452010317f275340c511e16cd57c8acbe7979100b5f08b803a326c46a76869270253b020f4c1fedd9fdcc03e64afb93a00d1eec15ce5b2cbe56421d3b7379c3b0dc883705964eeb11b58d2603fc8c04b5897c73653eaefcc72fc3be02a26b04ea0039a88f22de3c66d7757c0335c54d0ff8b7d7f70383400657091f3e7cb971600c9a673936037827c69d1432e2fee6b96d9e2422e416425da32ddf746310a79c836ac7f2ec0e5c784a84ec4429e3e471bead56f291781a8036842cbd508c2375f5b7686d96ee1ca53cb8a8c86470fbfa790cb4ce83ba751c46b37e2a94125208b4746319d1efb75f6d90cc5f26651bc94becfb36b39e4cda17b670260ce9b48f1e351e3738b0aa7f4995ae0065002498bd468d5095254030a80642f13320877fa1a173c577cd9737e5d8348d677536d6ac4c4fefca71819e6ce742475e11cfa61090fd1b1c4fd993069587266da3076e4da67c813f6775d7a9399b45eb9652678244618079ac288deff32c5b497335085a7a261c9f6c65f269d4aa571c0d925d3ddae079316e1504ad619e3b63a2a7d8a0f4c688a7f747b29fa17acd18b1f393225a50999bbe73a6dec844e3029fc95f5a1bc138a928ffa1ff3533e052caf8e3db8cfa39065d7db91be33e4ac79932a478a3b0cef37d656d73074e93b30d67a32fcfb2665aa1b93d9e15657ca87c2145cf64e0b5038fdcb1dead739e35abfcccb0de0802dffb94240419902e34458318250772e5d07d89648a4c5da3dada11088e3826c02a1251920df0d67478498a186516b0de76141f0f3ff11c93a21e6ded307c2258c887496d14680a0d8abe4e0ee9c1871900c8ee55fd4d29bf20fa190d87bfb7c2fa04df1d401f794bc1e1de14ca91e546cabc3961d1df10953df6758719ddd5194471b80978eaa8d0147931b975b9a7d918e57dc77b23991b2cec948a7a4ac7ce2bb45967d32bf16baf7495229c7e3854341edd6cf6d63ae8553370fbcf4fd52ef6fbef45276a7d200cda7b63281e503657b24e7290a22311b23467258c593da4dec894776b0f29894bef46d98751eef03e65ed3289dd2514e49571ead493abeb305342cf7971070e04bb78c9df840bcfebe887d8072d5a5727da75df08445d52a635c38cb0c119a380aa2ba05f3993225acc6ddf967afe92a12a262bb3041738031fbdce6308420fbc36d444969a9f29c8dd22839a1daf1730703e790468b41f8365349a4fbdec63fbc15b0145f3ebeee581d524a1b6f6bedf1c95a88c33b1f8ac24d8b52c4b0d8b1af0413eca7d900b11f2c67fb3d15370c5ad9dd700d94dc4ae58e24a343224aae6a6cd49013f8531b0f24f5b0f110e7d78475a9c7a5b468c3454914ae75b8a82d5467968b028b0e2e4a4e65774529d8118adf04cac094afc13b5427a1c713346413f233008e3dc98bc6fa38c04bafb14ca82dd1577618de06d242f4bd67421d043f0441ea8960f82e38e481d235a030c63ad94f253fce530777442dc87cb248f6884b76fe098b600cc83cb7d135028ce3074a4ff82e48a11ee372599f9fcbfe9c5f07d2f503ba5bb6305cb385570ceda0b87d91ef8e6fd526cdcc47fa5488a160d6d8566a9b36b6e39c9d58c1df59b2b628b6895cab4ea243743ee019d4c081771390f4b362c3dae2536e99de0cd6ef9260890fe6394236903f3072cb4f4a4d6e732e9e71fb64423997044fb1a2d3aa5ac8ade2b1d40508e62e787dd756eb0a4eb1b8d128320ca02cd246ab14cc8ce0a476dc88cc5b697c8ed74d091fcfd23498029bb819c29d096c3dcb1326edee5dfb0591ade2e4bee5ba5db3b6722a0e2fbe2560ebc1c883e72328ef9c3b4da1c7c5d1cc649bce336ee934395b9209737b13893ddaff05fad8e239c2fdfac29d401d3fceeb307685373a81ab198cda8e95652dff46ecfee197a0b8901e8432ab448d97b8bc37f87c7b09f90e66dea194ad63dc02c6425dff977d16f1f21a157b7475905c219a70799637264ac15ab5ab75eabdbdbce46faaa1b9990eedcbb113d142b129f3a508e99637264ac15ab5ab75eabdbdbce46faaa1b9990eedcbb113d142b129f3a508e99637264ac15ab5ab75eabdbdbce46faaa1b9990eedcbb113d142b129f3a508e0b095c924275a9325810e161584420ea9808f76567859aa946905fa7bc1b76860b095c924275a9325810e161584420ea9808f76567859aa946905fa7bc1b76860b095c924275a9325810e161584420ea9808f76567859aa946905fa7bc1b768662c367594bacade3cee1673606cbc98c4f60724fc706b76b7cc239f5803a937c8650b999cd36c85c85abb55957b31a165ea0ad58d66d2ecfd27735a639cd2b1a62c367594bacade3cee1673606cbc98c4f60724fc706b76b7cc239f5803a937cc5abacbf09ca84e5d094d0f0c74066270e379741cb338700a12e349bab9ff9e9db76a8c99c9cb75790336ab47554a9241e9d05e462ccf538c2eaa9ec7130b878c5abacbf09ca84e5d094d0f0c74066270e379741cb338700a12e349bab9ff9e9f7f769fa325675564d83ad6ab335672e76a0d776cc905105fbe8c333e82e51846e13e6dfaf63c365277ce49b6abbe00858ac34c760967d501d38705897a58635f7f769fa325675564d83ad6ab335672e76a0d776cc905105fbe8c333e82e5184b7f47d5a336e44c4017fee7e1757ea024811a190264b38b9e3f494d684f9a2f200b7d85bd97cb817f1ba91c1fef40239e511deff6a73b8c76d3eeed6e110c21eb7f47d5a336e44c4017fee7e1757ea024811a190264b38b9e3f494d684f9a2f24e97a87c08bc9e2ffb110797cdbcecde6a06e9742b8651ac27062546baff2ae6972d54088d0da527c0aecd7d5bddfdac74a3156f043e77e4088b01a763cc6e5507594ce175e390685f2c36706657cdc4f965209ce417c65bc522d8950ab466efa4e6fd06a112b5da81c94072013dd870024b6d88b7c75e68a83cce621383185282d6d15309dff5b7cf4cd36ac3746482169c9fe75f3d4f0b070a89e60b1f77ab6221b24632fdbd15d6aaa175d35743753966ff61337ba58c00125b52d735099306d1650ec56d3c67fd3a67772da58e9f7c3ad8db9df199672e8ecc29a83ee28395ca20f240765fcd2382fa600641e4d85b79e32ea599407407b9cb516d57258306d1650ec56d3c67fd3a67772da58e9f7c3ad8db9df199672e8ecc29a83ee283efd6cf231286182abbbcf28545eca3a360aa9a4c9a91990e51c7bf7fc7c23d5dd26b2302143c33d57a54e557d9fa2b1e4ad25f81a2dfd80974e8a9c9f9e80a1f8ddbb571ff8d72fe739c6b7bfc56e886807aad3dd86418b943c55ee3677a65c1e756318101ccbe0b81ef92b50a68ae1398ac8ffbff74b9dffa863c11cc7b2da5ad1fe5d8ae650ccb6396f534b5d1916e588c0ae09b469b047088a29628b7cb584f44d8299ae8fc7f2caadcb2c385905cc65bc785c1dab657c2c6d0a320a47ec3a1aa5d35558acf4b6016054963285cb145f97a764926bea07cbd674563f3248dc0653eb497a1a48195dd9c4ecbbf87e4eab31188be29ab1640e353209741588cc795a53ca849c42212c8ec33a74284e0377df852eb4ea599aba62d5af1df282a306d0b2ea8169bdca711c6a31c0b1a3ce710d38ae2b6568ef519aa38451af608836cdb388117cf81e78d9fa2a141cca1b14b0179733322e710067749a1b16fe9b0b7aa82deef26222e232a08b417829fbc0e5a0c25ba29af511cf5cec397b115b0b7aa82deef26222e232a08b417829fbc0e5a0c25ba29af511cf5cec397b115b0b7aa82deef26222e232a08b417829fbc0e5a0c25ba29af511cf5cec397b115abfce8dd1dda045618016a8882a16976e49234a68b7766ced54b8e19cc1d8724b8adef8b2961826a73beea7e7a8962a24805684e2770adf34b0018074819a36bf332246fd8e94c65987099ee2e3420e2ba16742c34046768022ab5d3d900c7b3bb18da698d85f6f0e7a0169f426aed4ed18b932a6a571d17a185877864bb5da9e5b6129d8f3a9c406edf61ca06658676de0a6bc6a619f4b84625b5344ad52bbbbb18da698d85f6f0e7a0169f426aed4ed18b932a6a571d17a185877864bb5da9fbebca1871847e23bd340c58ef50aa3958c07ae5566169ea4b44a26c25dd559acc199ee9255c34eb62146284daef9f0e59681772815154b77c568ce36b73cb45fbebca1871847e23bd340c58ef50aa3958c07ae5566169ea4b44a26c25dd559a9aa7acc8638c99e07d9ddff924f28ce10203784f2d1c7490c17e3f05ecacdfdc52a73d5936181c53dacaea5cbba11a0ab7be64a4234017ee63352146ec7dc0a79aa7acc8638c99e07d9ddff924f28ce10203784f2d1c7490c17e3f05ecacdfdc406e7f5560423420cf0247fcd8b425c2da423b211c3458d6b86827a4bb89d780f11757b6f2a8224fef89f01f80fe80620791e2eca461c248d8beb0db514026243a4b9903baffe5b016ab0f8080c02c5d778dae07cecb78bdacab2d8e8e65f81189fb23c6dc035b64df09d4f7a090840e1155860c3cf2063448bf9208cf0b93ce207ce84a6757cd806170ec98c1929bf74c0d8b76489032b875e6955a42ce7c0e89fb23c6dc035b64df09d4f7a090840e1155860c3cf2063448bf9208cf0b93cec78ebd4377c31adc744508e37d227c45ac606ca448ca29d28134237aa1af0ffd797136719ca7c408d44fc8c82ba847a17ac8b1036eafdc22ff63798562c58f168ed94f08c95b9cfa20366ce9bd7504bfc14d1d460c1601f12f569c0e4eaea2ceff32c88bccdfb11337292f66457547ceecac64f26d43bffd4b00783941a30855ad103f6f90fcb69ae3f6cda8db0c921406514c40170dd780d23c0d0771406167b7cc31db2658b8359a0d76a13a6e8a69ff6bf03b5341e9f999a6098853c079fcd1203e0b8fdc0c91c54e771fe78fbf6f363f04538a5ec47dfd9728cd33a2aca6a0cfb00825151f06ddca075176c8cc4ca79ae1c50e350df60649785ea2d59f42d1203e0b8fdc0c91c54e771fe78fbf6f363f04538a5ec47dfd9728cd33a2aca6baeb8e711fe01381acc02cae31cfb3355c9eb620c740ab1dc228c6a0ee4e298031aa6438ee834014eb25c2183bb93d767389e2d7b107d9f1cdfa8766b96613f5baeb8e711fe01381acc02cae31cfb3355c9eb620c740ab1dc228c6a0ee4e2980c40b27049bb7093ede060c5a3161620e30db17f8d781869f783470c6751337bbe9e9d8c98171151df17dd4b657fd87aa7679622f658d23614d9b78146d98bf90c40b27049bb7093ede060c5a3161620e30db17f8d781869f783470c6751337bb6bfc3c493e0d1340e629423a1dc062c5e8f4717b6d889e36e91afa23d3dcf69a64abda079db8021a862e4f4414c56a4f931d3773895a39a76280764d712e89806bfc3c493e0d1340e629423a1dc062c5e8f4717b6d889e36e91afa23d3dcf69aacc5373b4cdb480fc6dfa2ec51fe694d5a6f64396e7af8103931cd4506b16821573fe6ef9e4f6f3b88dbedc1de4bf2abb6f8c98d1c5b6e9df9d26e5664477a01acc5373b4cdb480fc6dfa2ec51fe694d5a6f64396e7af8103931cd4506b16821c481616d455ae206f5fc2f65b47497d355d2e9d65b0bcaac7ca42bb4f002ca3ff5c6ea77a63c14ca043767aa9324673d1b42aba04a05eb027ee3bb9c97dc1cb994154426277898964b728e3355c7c6f1ea0b4009fd10ca9bce1a36a82867874f49d4511f2068375415c6c5f6dc99cbfe1a18b1bacd6435d6ac0e84526653e9d5926bcb3238dd68cc5be413984fb28a2b665567fa955379d008b74dafa44e01e84060682b04212f2bf007716ebd2433bce7c8e35087b0ce20d61e619ddae18a4a6ad59baf3f9369c18bcd455f6ba1ac7b9eb1ec0e96c324ed2649dc4e0980833c185d36a526f88c246d8f742b7465821a5591fe0b93e610a12ce8e88c25c73c6a6ad59baf3f9369c18bcd455f6ba1ac7b9eb1ec0e96c324ed2649dc4e0980833c7d6ed5303844dca7188ffd2c909dca424bba8a1e010575406a22a2a69a6afa050b63154f3a04668c90fdb858609310942ec961985f6b307bf1fe03845f2c846a7d6ed5303844dca7188ffd2c909dca424bba8a1e010575406a22a2a69a6afa0587ca3d384f9399b76ed9b6ad92aaaf2b1a4ddb70904b6006de642b8b9b4d3f029f414b94d4f6709a263329eefe6e574f49d20107593f201d9368e3564a37613f87ca3d384f9399b76ed9b6ad92aaaf2b1a4ddb70904b6006de642b8b9b4d3f024e6ad25eb23912b8200149f6a2368bc758079928b8152ef0266d3b3d09a825294b0131d61629a297616604d23cb7dbc08698e747f1a9bff846f9d470680224544e6ad25eb23912b8200149f6a2368bc758079928b8152ef0266d3b3d09a825298f00326ffca7d6554a8c3068a6631b9e7d34556379d4f0082a3d1d728506e14ad569e75f97481bd7c3af3ead1c6c82f956a7754a79b59af763a9f6cadbdbac088f00326ffca7d6554a8c3068a6631b9e7d34556379d4f0082a3d1d728506e14a1a9225dc03a071830b24cb1cabc119ac557a8e781e1c1e3b2ead1b1326dcafb342dc4cd905c03dfce2fa648c4e5d55c3658adf309f40697c9087e9d0c70e51351a9225dc03a071830b24cb1cabc119ac557a8e781e1c1e3b2ead1b1326dcafb3af5b30147fe652b55b7c701a6916d76810b3b796e53706ee8d25873c41b937077d840534dc775c6ee2e01283d4be11adce8b7bf8dd2b394471de0d8ca0a88cadaf5b30147fe652b55b7c701a6916d76810b3b796e53706ee8d25873c41b937077d1621fe3fd305ac1d346e0dce0a512f8fec855a884d228d71ad032cda1dc65ae6175ddac3bd0ac74424218393f11947dd276611de2db7009205ffd32f2d26806da19c270a4a0e4848c937ab4f6b377f5127ef62eddd10519f869ae403dc30b2fab26a13e68fd39a74551dd58a1a7e8120613db573f10a212cdb6133763f60241f637de37aa61686e1dd15d1664c25c04da43f01f7dc78c02cd01dd660290a3bfab26a13e68fd39a74551dd58a1a7e8120613db573f10a212cdb6133763f60244fc66e231282f764f361a14abb469b041c11bdd2e4531e36e93c6110ad7b7123ca57ba4f111348447bcb834e1a4c0f8d5bd423d8cef3124971e7d0a2d88bc8764fc66e231282f764f361a14abb469b041c11bdd2e4531e36e93c6110ad7b7123491215595f98b294daf8078b6dca29e3898c7dd2527f8fb440eb8c8167cc5bf5c3580e952711d4dc61d3b32a58b1df18555b152750309033fcfa7793005a96cc6f6bb093066cc1fdfb0d807e65d7fd5712b9f1a618521abb620d4a9135a4507a94490ffc47285a2095cc94f808f68f28cb1291f8cc620aa3bd3039c7ecda5e91f1ae5089c9ec4ecb68f78963172672de8c76c121cafc58e49427b25bf62209d394490ffc47285a2095cc94f808f68f28cb1291f8cc620aa3bd3039c7ecda5e91bf93fb61fac23980f5b1f1225d5536efb65d75620b5ab5941a8d7da4b82016722cc5b863f5b4a95d3ba2a0ff5eb77da247c4b9fe5e08bb50f846a652762135efbf93fb61fac23980f5b1f1225d5536efb65d75620b5ab5941a8d7da4b8201672d28e4b9425f3420e3be077f1ef8401cc170c8948d223d00c114446666c0a7d935b1f63feee0c4d9e14103ae34f1a0a7f468d3fe9f0e24237ae24f145faf6bc6372ac414d9744fd0a34bc2cf1f40bb28d54db0dc0f3e7f572a6b2503d9c18d5461339f520c6dfe07cc94ddd8e7e6a5e71c579abc935265e349afd78fabf240b7441a09b5c861979d73ebb69340c6c60eb8d3300e87231434c6b6a474bb0c07c801339f520c6dfe07cc94ddd8e7e6a5e71c579abc935265e349afd78fabf240b74c74378bce302af554a7f977cdedaca338606cc8ab206e0eb28d11723d1a1810bc9b56f8baa5617f9f9fe3d94a33d9df73930aee4ef51c12b9f8c005a78e86f92c74378bce302af554a7f977cdedaca338606cc8ab206e0eb28d11723d1a1810bbc53677fdf71787072407da3c6e92a993ccdcb4886afc7578e1422141fd5613f1bd28fdaa89ae86f78254b88154766304014b5f713c6b94d6a69e8fa5ea3443ebc53677fdf71787072407da3c6e92a993ccdcb4886afc7578e1422141fd5613fd99b6061fb5e3ddc9100730c80a35929081f17b687cc4c5b0173f94b96a2e6e3fb802b176e430bcf94b2819b8951ce173e82cd09a751346cc129495750d32d2ed99b6061fb5e3ddc9100730c80a35929081f17b687cc4c5b0173f94b96a2e6e321a2b2602f0fb1e43f381c371dcce1b9c6b29339b1875422895a726fa65a13c6ee8015ed3435d7db12a04ee1d3e928481b3f29ed11c21a52409507401289ab1e6a08295755e31e37cf9770a57251cce0a565986f5f559a93ece0dc538e4b93c3cdfde07ecf2473beaf480b31fea2ac77678882487e694714870d4c2ca87069f66f74a23fbd68514a6125ba4e618a935889ff3e4fbd82b1fe7d2206f3e997ba02cdfde07ecf2473beaf480b31fea2ac77678882487e694714870d4c2ca87069f6d00c70a9e1738e0ffda889bb95369ee0238459ecea74348b2be5d99dd94d035b1a8ea6d0d7971808a1a283ae86e81366576761d492dbf581543e6cb104b791f6d00c70a9e1738e0ffda889bb95369ee0238459ecea74348b2be5d99dd94d035b96e1a286bab24bbbbc7b9175606352471a45b5eebb0a38b46d71db4fd3c2aa8435e3923ea5fb51e845c7e025c8a3093744467d552ceb1b6bbf495eb48495428396e1a286bab24bbbbc7b9175606352471a45b5eebb0a38b46d71db4fd3c2aa841ea1adc7ae809af82646683023e006e674f1769150b498ae564e2482e99e87221a943f52e5139adc8468a52620f2b7e9c7850a7108e6a86ba02f239945bf8f571ea1adc7ae809af82646683023e006e674f1769150b498ae564e2482e99e87227799d7d2d4bc528622359a28e4dcd4c293a0f31ca48e43baf0d744599f88e6fb10e1ebed4cb7d85bff01389d428ad8e84c85ef403fb0f19eaf7888466e36369b7799d7d2d4bc528622359a28e4dcd4c293a0f31ca48e43baf0d744599f88e6fb7aa282f4822916c960f37143a2cce3e92c116c93a7cd378c8b8aa7b2964ebdf54a0b83b65c64e1a650fe1d801e25adab82fb495745e445ae8f4b61159386e12b7aa282f4822916c960f37143a2cce3e92c116c93a7cd378c8b8aa7b2964ebdf55e2ab87830efd301767bbc6d7812adb8cdfab99609800f412ac7f86bcc76b8237b25c2a388c36a1f5c5129472bf0eb0161157b45db53b7ff6b923fcb60ff446e5e2ab87830efd301767bbc6d7812adb8cdfab99609800f412ac7f86bcc76b8232370dce92b6e3be15676f160b6cdae48268ea1b28d529bc13838e178d82f9f44a70871ff10d458507b7b60c5a7733c2a72796c517b5d02c5ca88e3ad4c6270942370dce92b6e3be15676f160b6cdae48268ea1b28d529bc13838e178d82f9f445488fdbf2e740674b31b761d10ba1daeb6b525ca7297e038a469a71d422a11dc0985325191ea9a871bb599bde7abb5f42dbcea4037e441d4448ccff7235539575488fdbf2e740674b31b761d10ba1daeb6b525ca7297e038a469a71d422a11dc38d80c3d35504746f06b7ee828f70eb28e12a3617d78708ffd146719b13e55b12807fe8a5a3e8e188aed6bbdd8a698c1d4b74e2a8d441d535bd5508e25071edf38d80c3d35504746f06b7ee828f70eb28e12a3617d78708ffd146719b13e55b177f2fef8c270e10bcd1aa2734252ef2433217c8dcab0bdeaf091a1e9d9eb9c2dee32a5f30a789f02c3fb232dad4fd0f2e9d24188cd454e67ff4dc700047768a077f2fef8c270e10bcd1aa2734252ef2433217c8dcab0bdeaf091a1e9d9eb9c2d773df99caf495e818de5ccc569a8b40f5285e0e74fd0dd335a472e6eb53c59563b78abd3df2bfb78bdd8b5408d276598110f7704aff5ac7d80d3aaf34e80e31e773df99caf495e818de5ccc569a8b40f5285e0e74fd0dd335a472e6eb53c5956496bd3f915ff66ffd15286571d4c3bea54b24808e47632e3a148ecd32ebb312690882a3ce9b614928fb1b7aecb605d4f9f2aeb9bba1e971231b63eaa8388966f496bd3f915ff66ffd15286571d4c3bea54b24808e47632e3a148ecd32ebb3126a802c58f8ccc61bfd0a9a2d8e3a54df59d95d110f7f9006c3acfe1208530a3d8ddeec2da09e43d1cf07b5ecc14f63b74d83fd52b21bffb0c921ca8032b84a945a802c58f8ccc61bfd0a9a2d8e3a54df59d95d110f7f9006c3acfe1208530a3d8c2ca62bb8a8a79d1e26a8ea1d8b07d5b33cbd9a57b48dc01b3d592c7518d5498074115f1d7e41b08cc8a18266ec61ba13ebe1fe4673208a36df9395bd565e6a6c2ca62bb8a8a79d1e26a8ea1d8b07d5b33cbd9a57b48dc01b3d592c7518d5498ea107698deb746f70600cdeff361a8d1b597a79e6d9edfad4f2aa490a1b03c5e900d3ab1b1a6581726d5fbebd66a00985574b1b2f0cc128c9bb2f6ec3f11eae2ea107698deb746f70600cdeff361a8d1b597a79e6d9edfad4f2aa490a1b03c5edd3c6b93dd5d999667bf773b5715f5383ec486bd1f1c37e7974cc10a801725fbaa6cfdbcf054cf410e444c4c788e86e2fb3aa3128073387e22039132af8939e4dd3c6b93dd5d999667bf773b5715f5383ec486bd1f1c37e7974cc10a801725fbd091b83821ed77f9572a469ed0b5f8c123f42cac150f1cb1390ad2e6dfe745e124e6de9ef0c686e898e834d74b09ea0bdeff8ede333d787238dd972cd5717ea1d091b83821ed77f9572a469ed0b5f8c123f42cac150f1cb1390ad2e6dfe745e1b5171e32758a78450854f40867775d4aca58665bc920ebece04fcfcc153af02a4c77972812cb5ec0a72afbce3e1d618c27ef7b239329c5c952c2bcbe77dba5ddd041443d6499a735bb78fec9da1bf33b3d034b5192c98bc273b16a44692fc88f2da37b49c30d6a0b4db43146ebb4ac8e5ffcb9814816b4742e464cb85697788338f460596ebfb64046aab3d9a65935bd4c76a470118fb7d10a088dc0ecdc53ea7ff6f560c3c3d7a5d9ceef5ba31c556341f7ce1bc1b52d96b063f6c2c47656519e0893327205dea12004e88d18c580286e7977e081b5eda7baf5b7bc93bc6c526ff65db1192099457cb3d9f2618a893c6ac430028550284f3a34d5c08042b0ebef4f18f651d32410c43644c27590903d41e38e763b0e108e6c685a3412a7d29c2c7f0121193395750eab2b2abf5059d9a3b1a61f81763f52511265d7bca5cb21111df53fac6a121d61abe33883a68e731820ddc4864b0a4c1000cf2ac5f019cdbaba8cafb48dd9181a0e1f7b0f20b585ce2925e8f347e00b87407a256bb166635bc5252f683a401e7d81c5911617c4af1a1bcdf99a51c4bf1cfccb00446ff22032943d3b921c1c3f0d3776d19e5120806990b817bc99a7e22799847abfda1f63600e34faf36e14307e59d55088e3979881d497b8fc9d77659e77709f9e8bafd7803baf96f9603c957eb974f252b0ad9829c889a293e0ce6829db1bce3da6dd4ecdf7ee6d85e2b148230984cfc4ea3f193be458958ea42ef290854a9672a64370b6f3c628839ffe7fd72569dd6ca2210e18edae3e180002747ea011b76b7ec0ef10c5ef3b45a4ee7e88af8852181916a788aae2bea52b08f3473815c1c43598d18d29a162536b99c91bd2f9259dda7f39fec751949d6354d2c1f2e5d070c87d668408c92b99f50d8c4978b47a2b2155588e315f2ebbe58c160dcdcdcb89e19914578a51b9935020b03a510de15ece55fcd02c9474f37a54c158fb97ba5fd15af12e419cfbd7f2a326ae7fa10873aa377112ebec32545238fdf988acb088c3cdb7306b80e0a72c0d16dd934b7d51ab0c9a4224f83be5d6cbad8a7158a0a5d73551b82c0762c44adf2af7745c030afe291e2badfe360925046c8e58d8534071769645a30c866aa2ff69e089da147ed09986aad4516b5e5dd943f8dfcb7d3946a3e18d60082f98ce52ee4955099bfd447cbadfa0e9b24ccb8d135cecc833168d44e84f9cb1388ba86f29422d20979d3423fdf3541ba35a17ed44d6f4a517ff784ecd5c7d86d9f81b2498486d626c7feced1b92f23171cf9e42881abb78de1a93bccdc2cd7e3ba44508643a20eec4ea4c19f2f1adfd36f6b974d7c143e449571ae7361c4dd0f7881999abde6cf4d232836fa3e55fc41a7d5aa2b9866092f65707db7f023872fe9f03a25387cf2c17fc950cf0f990353df66e603c3a1cd3199dbccd8653734f1d7778ad28a4ec3ab4415923e2da8f230de4cd527589829f570e9f254dcf2690f1b502249289f52cd544190db0b94d59df5eca139829cd2bf0742e9dbac38ffec5862597ee8f9dac50385af943ee312bfc394366be08b2fc12563ca1a5ce04cbaa76d414949afc230360dd9a29ff579bd868cc7f8805230d126ac9ce9b9a03910a6c183586e1db01863fcde6417d06745fb3e63032333d71c5e82e791917570148167e43b2155b6e1c814a3cca9e3ef53750c504932a9c7d62a8b68a3f8b71472317bf3adabf819e665c725d03e3064baa45f6ffbfd78cca83eaa46e8dd16930b7ef8577747cfef602aba854c64ce85d4ae1e54a18a456eaa202643e3d33f2c0b6e16357e083c3a98877e7317abe1578a44c288e5979c9d96fb5aa6727ce7eb37bc7fb29aa138b1cec6656ae8b4886cbfa700e119a1bb8484284cb717a0143830586d09d702ca3eeaa8f86698e5fd18af69fd28147e71a1a77600d356afec731ed523d5cdfa21893833b52b2844eabfd1549792c1c9f8ceac2d0e8e901f3307d4750d0657d9c42b857d5f37bdb5824f9358939da7d16d13f61eb8abc72a0a133cfc78e82e1f71ce628408e7d10a38552ba3e3228ebd113838c1ce4448401b2a9b1084b6a0424f27eec488c761f75f053a409608ec36a9ee0ede0d380973d1c04d976ff4d2841025a785aaab0cc4ee06c9c9b4e09d1e2456949fa2738565e7a16daec0b2619110516804bf90cac459a4d0315198fd4eff69c36c54378dd60d8ce92db6f399606d2e40a3c631ba566127e8cd637ebbf35b822672139cab2e8c2f19f7047bfc7539fd78839929004d8fe0efba1fbcbd9d712d285e43834ba55ce115556c7513dd967364dc6a40c39210c874e8168cf090ddd6dc606df34cb8f5dfa77b8c8b375daba8bb88aaa195395674311e2513b29575a70821e3aa0b8a033a3eb91a39f96747d4300aa3394965e529c71896cd6503dd27e6b685eede5858eb0f50533bd3bd16fe32815f77fabfed92ede885070b6cb15827ec66ea5001c8f49bf5f820a92e670267ea1d725538179de089b6c721a4b51ed58b87c1bff63c7658ae807980af74356da8397f0b131f49544bd998a87fada50b1607f4bf61c8f49bf5f820a92e670267ea1d725538179de089b6c721a4b51ed58b87c1bff3ba51714ce0cbba5004340abfaa8d419254088be816c7f85e7271308c9af308c91ded09f9128143e8225fa8d368f9371fcae95021c5482a1c08a278b8f81479736497dd399b01d4cc2cebdb8ae22dc77e82b388723f8e2f145aa2204bb819e08fd4be20893596b75b1b7c9368abe8ee4b85dc2ff14516da2dcc94227bca537a5a73f7d00723e4eaabca04b87dfdfc469a29abeae4be73f1d20da42e63064c8af8898e9b156156167bd2cd869f2f3ce03b604f838c8b8eda8d3c2421e2922e5e84e15d67f50b412b5318068be29e0d3c80cb37aab4121029f2c41d37a02fe43c3b85b272683360f9b7b1312905228b5d04f8d488363745517fd6538f1c3d84ee64e15d67f50b412b5318068be29e0d3c80cb37aab4121029f2c41d37a02fe43c3ed62b41442a42310396d65f0ef482c9d66b195260ebcdf8e327410b9435b51e96e77f9485658275dc7fe825cf684f2dff680c647be477e69c0923334340479f843803ceb233c42a12ab43f966115ef6c6daeddfa1ff21158fe96d7f9a46aa63feca13516deb2f50c7db2aea2bfecc527d6c6afd00dc43dfa00c21c9109535ff0f43a570ef0581ef34b0b175af34b0ecb9f2fdcf3901ca07765e303f74361e5f393d91534bcfe669f71995c5bafc41acbefb0a857cd6da367648ff375f02825765d5b5d48cd847d051868931235b0974c0c385a4dc471470ef47480af6b66a18b5d5b5d48cd847d051868931235b0974c0c385a4dc471470ef47480af6b66a18bce3c57b3ce07b5fabc24ff4782f20dcd562ded18ec1f5cfc56ce244d3ff3940c6f6457973d00b977057abe9ce8b9ff81dfef05524e6fa569ae23df5312427e97ed4a5c814ee6c51331861d7615b51de8e7e2e9bc479fae310dccdb7516ca8c196f6457973d00b977057abe9ce8b9ff81dfef05524e6fa569ae23df5312427e970ae829d1e1807664f593469f5d07a6edcaaf340e304212f49700028d10ebddb9a627dfa413a55acba427cbeaef1ce8e1e340d0335cb013199b477cf81ed52642f4ce6630128cb0be43c9d7b8076f8aede8f9e232a790b13bbff002943a9443e8e2946a686c12e02248fafb1a57e7514e0c22bdb2b4a66e644215c86fedc37bff57af5e220cd6c6b75e8dead2cea395ead2297dd98e398ad705ca2bce0e9e65944898d446d6ae73f7259a3f91839eca1a3380670a9f378b80780707f714fad17c84bc9d5387a2e20fab844e530358571afa39fa3fc0e8024270b5f7d8ac5a595ae245e005e524ab445a570df31f70c6fd7b901ee3b0b68bd3bcf4b41b37fa7bb68fe2ac7e0303f0110d75832d746e6661fcd5373fa498d929163f557fd1027434b94ab0dd6474ba38967ed24dcc5349c6563af37fc05ceb1cd5026b10403a1ea6aaa0b98f6a65e08e9f8e34358198e329d29554a0d4b5f5059924a252eeb0f5c4b49d77876a9d1822ff6be04daf464341a8e4c0c3414240abf519254de2a97a48e53689352fb4fc83d85a09369650389ee01db802ad872a8abfc0bf6603ec38b96e9a4262fb65cd4d277f009df73ffa5748f5fe3b963d3c5395c160d5f88b089bc985113d9219c02950916e75090158bccf44cacac09014741b1c59b07968d1113988c5419552d5b9f0bef3695102376f79357f0f440e9cd1f32c501f966e6ef343f86bbc08fdd5c7b6e697abffe1381f534a92bb32e1f1aee8360d6a142592a15f5ca8b81511447e4bfc08ce3e290755777655f298082ee8a329511231843a24949969e110ece2886a549cca2577b61dc86cd3845b5d255c2d4c594499a6d5e3eaf82ca03a66ccb4b016d6e02650692b6583b23bde6d128d6cebf99adb8e91c7257ceee96d87527b4156b1100a968a4413cfab75fb363d850abf95c9bdf59e54b57e3e00517f943d0248c10566db2245bb9b4ca82db3e635a6618538fc68915d14b4cce4a9ffea0ca539ac34fb052c4f25452f0726ef07342021b8794aef7fa1563bd7c72155a3967a2feea846cafa6a70116120a64ce4a04c1d52c0dce814b24a786bd682b354e5eeb49fa316be7f03962d6755e2e21d122bac4fef8b28aaf8563bd7c72155a3967a2feea846cafa6a70116120a64ce4a04c1d52c0dce814b23ab356b5d10404f34711dc97aa88e0bfec33c70add7bb125c6ec6439c7bc3a0a9bee4f9ee58c3a8858ef8a5f5ba597600667eddaa404e2653dfd1079b219e6bc58fb9d2fdc8a8af7b25e218f17ea3b51bdfa53bdf40f440ab33c605974ca5c2e1c356f03e8df0b99d9d40a08ac7f3f5f71e9626c3ee1149cbed7307968ba0a4fd3242c92bfedb13c7cf5e7aa116e9a38c07e9c6de58f53d03f72a469e9448ca663e4e00b6004bfe60fcca6ab1cce7a90b6e676cf049d1f33445d2720790d8e06e07ab000c3698a7530af2c52955ac8bb7647140d22dca1c30f83443faa191e0fa5a42976033c7d63ee2740acceef949a3582dcb0e0442845f9717e1be771c68baa38583b981b09a5490920cb398c85d80f1228619ecb8448d75b603eb1011542aa38583b981b09a5490920cb398c85d80f1228619ecb8448d75b603eb1011542aa38583b981b09a5490920cb398c85d80f1228619ecb8448d75b603eb10115426685c7893c6d384f9db470cd8a308f0c51c399d32cb55346016f16d1347d52d29e6d3e5474f6d437b10e2c40c0472d883c883821cc2fb54e56619afc1699f41b41b3e7d1d70b6877352d54f9be14859a8e618415ae3f12c088c2c462b4d325179280f405bfc8bbd035910aee5c5b69e86609b61c6b10362a8732a4b52f5b1933d888bdd9ce20fa173e900fdddea12c58eb900cc1a1a646fd1da5f2c9b03753fa9280f405bfc8bbd035910aee5c5b69e86609b61c6b10362a8732a4b52f5b193389dd034b0e34cb0d9c3a8204fb895f69b3603e5c9bb2dba0533e05e060c9438164f9ff8f65d234d0d5285c7ee5c44325b1293e1d8b7fb3fa5825fdbb49e26f98fd3ec9882279717b5cb955ca7ea9bc51117edd13f24d4bf94a6179fa949a0a4a8cf525f0f276216a16d80a0848efadcfdd8ab5ad30eeed1f340069b7f72532571d1ca223be922ad15d18e7070a45686e9c9be4fc569a421853fe621a4fdf2babd48a818084f51e61e71b6fb785ca3d39d55933d1429ff42923c3c74d2c3b5b7a85014586e00e4bad0631c75cf8a0ae20effa5808c3bebaab80823557729797e851a580c120ff16e66b7dd948ae89e1f49a5ca5d8a246044c29f462e2642b0e30c0f140b6eb1461c7fccdabb292e85727a176dcdc27c8fc5856d18f766de7b86335a2c2166c7ab7f8756bacfe878bdcadc4e65137ee7ff3b1a608e016ec18495f217bc4e1ced8a4cbb7e4549b8bb5a61421c1c08a5079dca2b8edd84e18d49c65c93c2463f8aafc1daef639d2e3d41b080630de6db2df48d9f1215873cf2fd929140f20e6c189585ba002ef1470a628ca7b3fa25eeaae2a41f26e02872b83d1e7140f20e6c189585ba002ef1470a628ca7b3fa25eeaae2a41f26e02872b83d1e7140f20e6c189585ba002ef1470a628ca7b3fa25eeaae2a41f26e02872b83d1e72088174242ebf629414cc4d5a466d43c2b52a9c43e6c820f6e4cb393e5823c952088174242ebf629414cc4d5a466d43c2b52a9c43e6c820f6e4cb393e5823c952088174242ebf629414cc4d5a466d43c2b52a9c43e6c820f6e4cb393e5823c9522bf65f03f1cdc928cabff12771887387fa447417a75ecfe5ae5ea5b0549ded122bf65f03f1cdc928cabff12771887387fa447417a75ecfe5ae5ea5b0549ded122bf65f03f1cdc928cabff12771887387fa447417a75ecfe5ae5ea5b0549ded146672738df137aed99a4a0d76024c961500c45f2356b8448644acff3669d7bd6dcd4eaca00e11afbc816fae71bc5988aa4fc3fce3afdb00839bafa690e47d4d5bbec7606ab305122f5f99e73b383e0bbdcbdfd50090ce8a1662c8d927171f4dbf7edbe5bafacbca7d328d58e03a2e291496608c151fe6207fde17eb15ccbb890b204eefbe6fe09d545b20fc24fee604e17800eab2f432b580f075ce74ea00fed84cf4d5c1873deb6de574e47587507fe451381a10abaa6298ae2d67c656e1974197ae4eb3546389ac06f3cfdfe42f9ec5e97d38d1b65726c9f8d1804af262949fd5a975eca3d0ddfdac08e429826d36ad40128bc2efd333ec64746aed8d6bf164572f9f1b7b54f896131edfa7e619d4a686909a15316eba00ae152cea8cde39cee67714237167adca6cf8efe0d852a8d1219b839c2060d0bb0d972f3a0d84352cf47d69cf4404deb74fada543c8d3be12591ce5b4d1c3a48542ab3416daee5fdee67714237167adca6cf8efe0d852a8d1219b839c2060d0bb0d972f3a0d84352957e361957f2fcc454fdbc2702777b683dded711bc0817e1532be6b5496d4d7bde5e1b43e160b7c04e0af6bd9cd9d4a12bedea8cd51df5e31803b01791fccd949dee3235fd0286563a9dd2efd69d021331476db759f9bcc85f95eb016b4a37e3f02a2f24a11b01d56a30cf985004fc212557def4bd8e559a5fec2530e26dbe83f7db600788102ac68763b485c0742f6cce1f6156533c5f35d843495d3478edec22dff627d80486c7d5926feb6e868f78a0b1dc2632a0b662610f6b4942fcaec2a636c1ae7c9afcb045dbf51aa3964fbfcafe19bcaa6cf86601914d7504c572d62759f53f968ca7adb2942806dff7db30b57f3173089351bc449465939d8a3417c300d2c0d363f6ca35a9f2b48d0e38f1ffc26a28dd64b9e8cc2288fdd56920c789c36ba8ac54d5d3d05024e2cab5e01efe9671c9c213e7316feacde890ab8d7c60c1748e52fcb3638744a3731bdb46f766c2ffae5fc7dd1c9405b86afc5223c9198798866a287d8be383a05703b2d94ad0f1732031a82133f91c3c4fc846799505177d167184ed075163d40bcc041825f464b822eed1ad78e320d1bb7c72a59b6f5ae19d6d8b996855b43400def1c0c7421ced94c9500537dc82f287f7277551a44f7651753b246c6abb6db2ac71a2c8e479c11c89074491bd56af302bfc3b8c7987aae8370f13e32b75ad4645f5cf7c704c164b090d5cb92ca1e9f968145b1b7987aae8370f13e32b75ad4645f5cf7c704c164b090d5cb92ca1e9f968145b1b6e86895b12e1f60c9af5d953830b1827deb8408c9fc38503196395b05d633d6c0098b7459c05e5f8087ad057fa9ee5d494bd880ebe82db73540458f120d3e200d9e413a4aa8c948c91416d18a5befd3b09f8e142fbe5866b558369ac97090a96f41e3648098be2426273b5f5f301049f4416e1e95ba83a715056fc2eade498173b1591b340a6e8f68eab4af6a6ed158d51c9c35bb5b500827b677bf97e8afd5163f15d3169f4453eb80af4ce673a193a0670941206673ab5192ea16a17e8419f9127a40ea0ff342cb414383b5e7c594a05be2dd835fe246bd3bb0dc036a32a90eb2e9c0a88619f01171210939af5ad05234e906a9ab8f1b4134f4b2f2ad8a9dfeb2e9c0a88619f01171210939af5ad05234e906a9ab8f1b4134f4b2f2ad8a9dfeb2e9c0a88619f01171210939af5ad05234e906a9ab8f1b4134f4b2f2ad8a9df0c3c88c9334504643f42f3725cae16604e89fdc564b37d95779abde184471e730c3c88c9334504643f42f3725cae16604e89fdc564b37d95779abde184471e730c3c88c9334504643f42f3725cae16604e89fdc564b37d95779abde184471e73d63dd1979fde9c133efe430ee870e6ba6de43c0a0513866ce3ce475791fe57abe99f0aa2e4dc41af9d259f220c5eb2632e2ace89b6851e712223bf2682016f29f6bb79bb99b9ae484935f0d68822e9603a1622dd0b6c4966c79db232a93ba6147c5431f44b7f966ada442a8524e2df857e6319447001094e78fc4fb041a58f4e418cd41ea5c341e66c6979a38070f6f552cbbdf0539073022b6d15c67e53f4800a09db57e7fab7061c01a61778feea6e2b6bb02ccbc150332f2960b05258ef950588ad0e5a36718b4377dc2a2a97864a10986c25a33dc3bfed12595711b0cdab97b5d25aa479516894489877e6a7921252ee35f51e118c2f1f91f32919e7caa86ef8efd9cd4e99c64a6778f7ad0957e924de9eb4aa167337ed121a2621b1ffaa67f0c2a7a3a83c92dd024705bac18619a2e123c9df77c414beb81035ea4a0e18f4721a323ab2981a172dd2b853d2cfeded696e9716fba340cf6e168f5ed95f834999f8b9ae7b3e8a7f5de302612b4131498dc2e238a2c47f894905c1c63294febba3c7f2b76a9cf4e8ceb642801c405411da95adf91947d81b0043586038290eb0099f5e2285fe2462b77c47bbf29220b57c778741a34f386c10c1e9940884c851301e70710220e1c494ff5383ac94442a38a4a6622f2eb94e40128c45de1aeb77ef522912474652490b7df523112858e51721e63dcf109b8567a35ce9b31b0debf9fa40eb622384c37690d8c78e7208744df031155ab4ceedab0fc791a1669b9afc08f6d99deb0cefcbe2f0302dadf3942114aa5564afa0b41bc69f54d1ecaf6752c4515ec69f82e9df64e017da490c3754e51d818c270ea1ad2d64e09268be229da6d0cbe6a10295be6c64ac3806420ea018124c09e4887410548fc2fc8b5d6a76a94b951b273aa87335d7c9c4d7273e4c59485c784b057f681443b32d9004ffa7f85c0382a6e918dc3499f0d51a58769da24a56704f16bda27f63ff1680d8980982ba66cc403d17874369d2770e09845b3d49f1d4514e1c52e01518114332ac381960a3dc1db0498b0bd43d8ef278d6599713121a186b153ff09d9552e0db192f6008508f28d3273bff42eaea9b01c8394dab1607cd36aea778bdd166c3a6b2af20f67667203c1730e686cc5d0427becc94db4c97f1d3efe3ed2158473f6a07d224301cba312fa0697bff9cd5a4bb4f778a90629632091b3f4ae874d89af58ee68b66c92cae2c1c88c42aed0d47a90fd3a2c5ddbab2a8bf25051a6399a862bb172ea6ff01dfe574b0dab3e1642abc38ca176a308ab1785b014408c0cbe62164913777b7582408308ead402143147ad72d0ddc0842589e86b811b7105bd7b0865b5788a1e35433f89d047187a514057e15ddc2a301b06b5f85da62b4259c041d43b5d94c640f5fc7569a0cda0ecb3b08e97cc1ba9c1907ba72bac610903a3e153f2d249d954b5536c6a049202617ff43ba2f9b109c426e06676c577ddedc6144300bc77f6f52ef2ad74d26e5053309c04f49eaa91c099356eb61426cde504f313526f249f5bd1f370905a14781a1d28a9989fbbbedff5ce85b0f489f767202502ea7953e190f0bb03c6acec41c6ab54eb51bbdbd9d8e1c41e53a2d2191aebf08609dc8298e62bf9232de174f5ae4307f27ebef490bf7996625f88d837f08adb75ea9ed24b7cef9ce3200ceba48c00bda14d3feced74502c91f473c2d471b411585c8d74d7f485590db2af46680ae0a73737ca9fb66022b2bcbbc4c4925e203edc6c8c271ec39943ab6e0de6bfea687401f24d9cda46d186916a7ffbefd7d7e3e89c57f1e9d2501abf2e49701cf7d7f1e9525b1b88aeacdfb1c4cc530f4168eddbb1749387539c2929957c7ec1235fd201d7ec15d285fe5246e88b35c722a4a3464f04938b57a7aafbc5c394ccd4c46823ee607f7fe36b48b91ecbc30ff4e48e8ca09333701ba41244e20b8c2c37b7ed0499b88c4b2ca82cac51ef89ca9e64799d41a3d4534cde4eae546f409d1aa3a71e9c172a945cbbb9c3d4ab911f0a7f7e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855bec24fddb51f536f899d2e6be04bec25c401903c78710a318f8ce5ece8a380abbec24fddb51f536f899d2e6be04bec25c401903c78710a318f8ce5ece8a380abbec24fddb51f536f899d2e6be04bec25c401903c78710a318f8ce5ece8a380aba561cf39174931c180aead17c269476661d577a00d48db3e37e85fbdc646a0c6a561cf39174931c180aead17c269476661d577a00d48db3e37e85fbdc646a0c6a561cf39174931c180aead17c269476661d577a00d48db3e37e85fbdc646a0c6038d4bf51b4d373284640f3658d70eaa856def24d8d02b8e29b289beaabf1cc9502e0a4e3dce4cdb24866fd0b63b89a0662ec9da0cd92925758fccc070806ff6f6c37fc37cd7440979f7d22d40ee818fa3b714c573610c08fa52911d541193f06e9f13598a88fc5616d6715db13b061a699a9b75dc6e232e1608ce21fe6555110693d4ded36916f5b07d6c395cc331dbf1011bb70e90daaa29eaa32490a094258ff3c37c63b917fcf8dc8d50993a502292a3dc159e41de4f4018c72a53d1c07bc1bc7eacd75de4381baed25ddb82d613b8f415d58bbb529423fb4d3c22a40dc68d7720c9e0d5369d4ba5c88b7f93f126e3086979ef38ff55a6b3a4f45e47b49a844c7b40b45b1a0058f499c5ae030c3decced9539d4990492b4f026f17934498838f16b7444bb9de6b801aa67d5781200c7ee510a8fb28b9dcdc4b316eddd077838f16b7444bb9de6b801aa67d5781200c7ee510a8fb28b9dcdc4b316eddd077838f16b7444bb9de6b801aa67d5781200c7ee510a8fb28b9dcdc4b316eddd077b1688092c76ee7e9182b72f25f7334444a6f2a5ff6d3f8220309333f7776148cddc35634f08f0b8658c1bb3e689b70a20a0ccbd89f4e97e96f99d8cd7b6118049c19df3707fc57319c83acb667aa0b7845ec5135c81fe3ca8d56d1c26139d5203fee9e8ae15137e48c491742d68c8b336aab2f68a2f0a6aa2ed542bd47613d5d18eaa77f4043bbd0cd783ae53becbbbc919e978104902511a822c17f071003de3fee9e8ae15137e48c491742d68c8b336aab2f68a2f0a6aa2ed542bd47613d5de0eaca5b1545ac0c0864898132755bee93880f35de8c6eab60ef521a2dd4417ca1362b55fdbee4e3de83f8d60bcf3a42647834c19850b5f0780ebf5e11c0a1ba8c1cb0b49346a4d7cdf26e0348c69e160340414a11405c2bbe806ad2d0fa130241572ac50cf96b04496e676d8a6708898bb8e752e06dad34ed4c50c5d8f1fe40c05067f8bfa4c13cbbf1eedc4d5cafc9b621bcb6ebc5771ba0518a18095af15afa4fdb200f238f9e7817b63892b0d69833d8165134801e775e10cc113348a375a51a85b37cf3f44ba7ff25754da5f31306e4ccfa6eb3c017f9d37bdf4e7708408da31054076803065758311f54b18b8a616824941977d907dc3ee729228e9015fee9ad9c55529be48329b78e982fbba0201bd218326eaf80a87996c9f8c805bbb1f47f717848022b83b511c74e0f862f58d1e11afa768910e87a49fccf0be2ffedfb309483d7cb05e06ad86d1fdeb819629f71402dc6710a1bec36c7afcaac50277000574358a6ecda4bb40e73332ae81a3bc1c8e1fa36f50e5c6a7d4d3f0f171eeb102373e18c96311203f30c516e785bd8642275aa0bd66e43a284c9692385b978c6f0ffa901b041d6518afed03f2938a62168066013ee7d23baac31c356c0f927227de5ba5b1b2bdd75e3d9c8cb72b602b3bba3cc8edbf8fb554de0dc1fd7b43720627b9901a1bcdd22bd9ca290596ecffbcfeae8521a145c113ade12ef410363c964c90ac0b3e515de5749205e6e6454051a1211058375d84d91eab6071ac1e0c95e3e0f18d604e135d3550e8854a04d180b0c39a70181fe53c7832d325ee586abdcf996feb13e0bd90037e0531a2b6452f9ccff9ce38cebb124b35e6ff759d25717260d964dc5d12ed12fa6120f5eb2102a2cc7e19c9a643b69b84b0922d1cb49f6545ef831a69322275ef26f6ca6964953e70d81a8a80fcca8d600ffc0fee029955cee0ce359e7d49a1551bf3e18b75139b0b793a6b1c48fc6e9d3f720177f7e4c71a255eecb94ef404df1682843a416b7c5083ae2b07a38016d7e16d7f7fd87f8ac9dad7d1387e2401761ec05806c5108201a6d1ede6ab2f481f6df5487013dc0b349c2c044100f70a8daa9d713e60a527e26f6ab8ee1fc978a6d3234c4929134532306081918f185c99305c6f55213bc16b32f8c259bc60f7f81e810ca7dd38c7d39af5112b9669abffcef3f1bb374fb8fa0a2cd071aea09fce203da052af0327eae6941b69b05c088b3e748f79995635f80ac4cc7125eb333eb4c77b9ef01a757de37e9fbf13d32beeb9530c8271582cabec4998226dcb7e0613cd024aeae1f0526250f442022022bf98df9a823b1cb330543ee79e70e44907462e960b6c83581093029312efb6670b11c540090b3f78bcf72264467b494f02f21a59c231f9497caf513a22dee8f790b07f969b0e45854a0bdd6dd84b492e08c2856baa9f9138d8d20df6284f67e7d2e790f847f65e2c5370de322d54cccd737f2d97e4f850f6460bcd302439d6d2a9fc1bfc31f88f87ad86c508489f5612b346b7a53801d0f6d9b7702d9537e6a13dfac06b89340f70d9f046aa512f37b3e0ca7a66cac7c330698b8017749b6782a482e44a3e26dd0d3da28716fd1e58e6c5b8448f901303635d52f0bde3974ed28c9b1ffd3ae770aa3451a623b11bb4abdc1795ba8e65cdcd36c71f42c57fa8ac4bb6e5b5bfd26d0c03e770fe31b0897245138e09b0e127e2d0853cc90a596a7b26a2df4ee49dc66c44ac30372aae64d015fd0f90a453fc278fff0b82c0b97e43e5e433b4b66bf849f2fc012e8d7872fecbfd24762867e40cdea6669b361f72af4d7daf0359f207c92cbeddfc7c7506397c1f31c481d0cb3de511eae0b5713dad18542b07eafd9c013bb7690f7497bad49923a718273b4cf5b6f274b4993f5cae08634dd272c6952af9867ff9aa13ed446f1549bf33691bb1105c7f7da4e197378449331c2d39867f65f46fe83be529a3222609ffc76ed1a1cbdb2c961d27cd67acee766abcfcdab06661701db4d9524efb5bd41a39cd5ee895abc085117448fba78ccc18bea3faf073ac18c5365b26e0dd1fe7c71f67036895f4c5acab942618af0cbd3d814451ba61e967f358d0f341a5b8f51585337747dfd1ef9c82799c6d51a6a99a191866669533d03224390962ef8e050585337747dfd1ef9c82799c6d51a6a99a191866669533d03224390962ef8e050585337747dfd1ef9c82799c6d51a6a99a191866669533d03224390962ef8e050f848f58136e438456ec60914c5ebbabba97c2fbf6ae5775b8a19001d34a8c5b1cf4a8ea98826431341076a709877263f105588452a9410a23a6689118cd8ffc1f848f58136e438456ec60914c5ebbabba97c2fbf6ae5775b8a19001d34a8c5b11edf5c44f5b6c7cdc494ea310448b1dc14e0b07d976d20a7b08fc14f72a8d1affdbc250c12ebcafddb94610b2cbeece660c40f074965e49ab22fb679708ef30f1edf5c44f5b6c7cdc494ea310448b1dc14e0b07d976d20a7b08fc14f72a8d1af5faf96888c395db6e77f59ae0147dd36c06aa57b8587e620b36a6061755a4a6d5faf96888c395db6e77f59ae0147dd36c06aa57b8587e620b36a6061755a4a6d5faf96888c395db6e77f59ae0147dd36c06aa57b8587e620b36a6061755a4a6d4579b04a7566452304781ccce37d3ebc1c36e810b058bdb1f33c0e51ddab039775b8e0e428594f6dca6bdcfd0c73977ddb52a4fc147dd80c5e78fc34ea25cbecf864c6d9552a929c7032ace654ee05ef26ca75d21b027b801d77e65907138b74edc0c8a82f166b674d7c1c6cc3b8328abc9649d8563e0ae3a257fc4195192f62a96b7d5bfe46a8be9b90613b1555dbd795d51f46aec6b769af06cec465bee39ec2cc84a05b824df79840c98729a0e94ef8909b11c528a1b2c5a00aa436b97b251ab5e5e047130b310355e907a3306178299b9f2044fb526ac63bd116e9a16d2b1140915f9d17dc0b9ca8ced708d21d75fb38ae395b063a351d85874c7b9fc154345474ef027a1273f353da9bdc1f7c18f65335e72e681bcc0376774cc51f24054354cb44639cc62c30ba2afbea97ffb97421a1b08dc0b0d8f9e5cfde626cb43a32ed48385c0377bc2900a76e9a6acc3705aeef402c72de8554b3c637420506f0ff6b9a100d32001715b40d61bc4d613623b139edb1fdc3566427b83c331caae39a847787cb68bfa91280c451af0d588426be68d695374e2c300cf9c9183c3775ab113e9108896b78bfcc6ea09e112b59d651d413331727059b5b95473a4532029a847787cb68bfa91280c451af0d588426be68d695374e2c300cf9c9183c3775afc2863733ca597e66d370cdd322051df0524c790714b0b13e68dcd73de481a48a9ad43b8d58d728c5975cebb190e88dc2f8aa3e628ade7ddc742e6d12c82473afc2863733ca597e66d370cdd322051df0524c790714b0b13e68dcd73de481a42ca9a3cc87289c9c0d95a3c154c6a8eefaef2a020f7db4c13b71d70cbd56d2e89f47cb0047d00e54af47fd5d75f063b3e28768d413b8d18f9cda2195fe26ba0f2ca9a3cc87289c9c0d95a3c154c6a8eefaef2a020f7db4c13b71d70cbd56d2e80dc800c300de4488c71b1d861a002b4c2698b71d3be6ec6053a15bc2fa33fa2782489e383d41bf7764f291086b51144f31df347d03587289dc7bab28f016ef8efd18a7c0ecb0450d663e4c3817aede8bc235d79939bf305361b14ddb13fa0b7808360a72a385837b6d4f783a92f971a1275c66dee50a6f426de6488f6b995b5737d116f607825d7639a270457453e2715b6f3d3d2b1c95def2ec0cf1f0a24ae1e8f3943bf1b858dc5e5e46811fd0768f8eab1520d1cf443d974cf816f2c909214b9adac2b6dbfeed4377f869878216d182324c8f095a7373bb5bf6d8b7d52ea366e4b05c55434f6ee8e630606694ecb9a38b2f6e1bb3c8750ca0432a129d72a94aa215dce07701613e40b075ee20e23acfaf8369a24c19ee84e98c7f0143ec81af6cc8cc05a6c8f178798417187a4c2f6271aee5808d9ae220ca7757b40cd0817d61fa78cbca4109dea3d80a7abb5b93608a2d02296edfaead91aec33445d25aaf6cc8cc05a6c8f178798417187a4c2f6271aee5808d9ae220ca7757b40cd081390313525c75b6d1a0faeee236b4ff6bb0e3427016d0d65a64680a65845d28b5f3429d59773adb7c821762e0719e2ac1b52893ec8e355c5f87265abaf5887c1d6b433fb9c921922bf3a696cf305c051670935a17e39c865931f7ddeef6dcd8cf3bc6db4e5db1628ce68287a00596c2080ba8516529af932ce6e16f1f445e8163e2f566193e730b05d77fa3cf2e6df16892d24ac5bb626644e6d5e1e269e040a63bc6db4e5db1628ce68287a00596c2080ba8516529af932ce6e16f1f445e81638bcffd2c98c3e87c18d67b79d631aaab1439f3366ad40a2c078758924305ad09eb323aed9e8079cc1567d817a0f8a4063c630d49b314107f34b9b80c54f0876e8bcffd2c98c3e87c18d67b79d631aaab1439f3366ad40a2c078758924305ad09b2e3fac618f0b60783b721bce64b5c35f5717a9acc88f05cbe99b6fbeed31961b2e3fac618f0b60783b721bce64b5c35f5717a9acc88f05cbe99b6fbeed31961b2e3fac618f0b60783b721bce64b5c35f5717a9acc88f05cbe99b6fbeed31961575d38de7623df9cfd23edec259942cb8533466eeb9ac230b484e147704c6317e8a9ac41fa7e902549920fe8dbd46c2dbd020d02747fb62baa555e4360cc9bd4575d38de7623df9cfd23edec259942cb8533466eeb9ac230b484e147704c6317512456d9d57628a6bcc2d14cbafdfc544fb73b66b27d61d2b2acf2fb115a3ec3f16859c98d8037e389d98207b8b50d0b26e5026eaadf3abddedbadf7366107cacae5d5285484729fcccb86a1ce8fa54d019c91c5f3e4dc0fa57f3157b24b111c905672317ab26c656c600defce25d477728068f597f00a7f94e22e8128c323b9b389b976f622c28223105998bf0be011f2b8c48eb33d2f1133e41e562867ee3145bac6d80a4fc3a0dea8340a80681e30b263f017b4a5002cb8f489a632e0f9877f0af414bfa7fe8612a424b14cfcf8a3c34fcac999d976461beb738ef8b211b8db58280574389c0d6cba9559cc51e1787f5b418c4e85d354aa55ca43335c487aca6b413630202843529dfa2346958e72466756666c0e034a56356c1882d4f4275db286bdd3821d64150377e554d7edbdd58db7bb8b950772f977e9ec1d53561776d9beb9c21d0d367a1b040a921ad43f90b7971fcc8cacfccd6f9760bedf1ce2f8286e818ca56e10e03745bc056cdfd31147678f9a1dc8cb6b0fe96ef9a4362aed2da92bc9f97c53403ee2d3d12cc53b16a96e85d596ebc887b5a93458f3f6bcfdcc640c3505d16deab9c32eae7c3f5f67c3b5e81c563dc6698fa7fcf403854de3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8554e9be3c8df7cb46375bb050ac35fb991a0eda21548c6327afef3cfc6740d794c4e9be3c8df7cb46375bb050ac35fb991a0eda21548c6327afef3cfc6740d794c4e9be3c8df7cb46375bb050ac35fb991a0eda21548c6327afef3cfc6740d794cfec832039018ac533e89c21741ba4e81dfe18bf5e015d870cc8544b1e9f08ff56373a91b07f7c747d7fd5aad254a39a05f0bea9cfd523d8b26dc9dabe611a123fec832039018ac533e89c21741ba4e81dfe18bf5e015d870cc8544b1e9f08ff5d77667b77c59e19586e0b2e69c3aa178c828e2224a75a277d543bab1d3b9a2ce90116d66b156e50ac2982980ed8d2fada2231b8dd291d62cbd2ff0d4305fdde3d77667b77c59e19586e0b2e69c3aa178c828e2224a75a277d543bab1d3b9a2cef065e62cd799bf6ae07663fa25dc71a5ea1c7469bd866d5e1b14308a4709fa38354a4974b8579960d5893cf7940de335897a2d3505e2bc216ae5bd702ec7aa2a7fd9b3d026c7c64f9b7f020c7a869c0cab7660eaacd76800e10431c49c74c02e16f87da59963828494fc8c9adb14ff6b8fd6ff541a89d930b46d0f1004db04ea0b7a49d1e3b65e5620e436d8130b9d4fde4333608da53a3a47e8d2844df0a0aa16f87da59963828494fc8c9adb14ff6b8fd6ff541a89d930b46d0f1004db04eaa7da27298e06694530ef27f322b93a07eef9d57b694de432e8f0dadd10b9b0e771634e6218d04b06ee19fb891912bd8963fd95f5b83df78a94158c1973c405c7a7da27298e06694530ef27f322b93a07eef9d57b694de432e8f0dadd10b9b0e7d12b3cc66af3f42a8ebe63e1c91d24f92c6237b6a93a3702938dffabd812d77b623ee06aafa877cd0609f455121981f04be8b52b9e3db9e7db28c3057c36c81b94897f6f53f96839637ec3637318a51176b0076907099de0ade84f93385143187e6c3b6d7a95f0d74f5968f51a87adae8a51bf42390cdfec98c7a99203e7bb76389b811835f9a3ba72b192c3487b0266fa31f6e571b7a83ceb2a34792dc0d9fc66bf2772992027e02c033d219a72016a19e96af866d78d6bed2ae55a97a959dffe357bff7241e9fd6f86ee81567fd20aeec2e17460428ea9b7924bebf57301fc143fc56bc748dcaec9bc55e26988ab932d76cfb468a0a8d475607833bd46d74e722537c68c0622f8293d39bb6ab1288f3637d8dc45d6f9aae96e49af8145ca36293ec290a543641d64fcfa81861c116dbe93afc24dd8931b48327179b54e50775edc19356eded04f8fd8ac33b4a29d1534e6548b76cf6be350e53537bf4e5c3b1042466354762ec41d8f35d953ca04abf5ec8bd53966fbdc37227c0dc2f20ddfc95eba846c1161925100478d81bf977de3377ba5394dd0a8048cf6cc0bb9a830c95eba846c1161925100478d81bf977de3377ba5394dd0a8048cf6cc0bb9a830c95eba846c1161925100478d81bf977de3377ba5394dd0a8048cf6cc0bb9a8303795a060dea7d621320d6d841deb37591fadf7f5592c5cb2286f9867af0e91df76b3d2a782a6b9871ba5b0fe6096a7e315b06c9095be1618ebf5087e9ba1f73bcdd8a01bb9c221836bfa4470d52c9fb5acbce2de6454df71efdae3adc342441ea100a3f99289828886d7a4bfab657751aea2b4313ffcb5b95bc643d63469448dadb02ef44e1e9bf9286afbd4c807c4eabccef5fd07a8b1ec3f7c976dd5827d2f0330428ea9e45fee49acc4ae5bdca4c235f4236c51dab09f30442ccafa25c1f856f8d313fb74019e53eb9287400702fbce788b7fe30e097b0b6e06296f3f080c1d4ac437ea2aeb56358dadeb4e653683febb72b17449c14aab49d1b90e85bdf4c30e144025a63d267778d92f2f066fa592b476e789d888f79b96c059bf0bef60f6e797a8e064fd02dc18771c86ba184051f52bbcfaf591d9999542222d2d3625e80313ae5a829fd8eb1adb3b10e543eaabe37e2d6ab8d6e5ea92ac463dc4ea4bf6e797a8e064fd02dc18771c86ba184051f52bbcfaf591d9999542222d2d36254507902ea9906e22d82ad17390a7ee2ef6186f50c0fdf7024e408c65cc86fef83c6ebe09eccb6525b0175dd586a2b2264a3f0a692deee25d10b44a4f2d532e7b18c15df01df92c84378559f705dc61bc0482e007e032904d0784f52889b0b7defac470b34505a389a1051fbd91fb37ca14afb0950e9882808d5d2e2a048f7a8662160011409ef3cb8fd5ae3c5a41816a25eba05c5383b6a29686e4c12887f8f5cc038ab85c887fa74c349866f5273c4c41e7c7b11fc89a34f657579fd4be7dc00107d4b189b0af4ff8193e7662a71d4dac0d1c43ae0070884515fbda3ae26be1bc54758c8affef1a042922927b303467118a7c0fb20d8bffb03822fd6c2e74c40107d4b189b0af4ff8193e7662a71d4dac0d1c43ae0070884515fbda3ae26be12fc2acebb59a01b47b94743460d4ce97df4539f6e6ff4237f895e7477982340b0217ffe85d3bbfef5a40f761509ba0e4654cce40b9444f103443c05e48cbcaad2fc2acebb59a01b47b94743460d4ce97df4539f6e6ff4237f895e7477982340b5e812ad1072b27f678c72f96f8d2e5ae004c305d1d5e1284604bd6b2a6d8f409ae3795703165a6da5aa674feee8fce09a57b02242f43c298abe9bc9e274273795e812ad1072b27f678c72f96f8d2e5ae004c305d1d5e1284604bd6b2a6d8f4094db965426e422bfe56312c60870663d97b3806f62be04ff323eeb1ce76f63d1fa1cb565fc022f32bc7ae0b6fda4adaba2383c107f3fda5e1e95183a5cf92b4b94db965426e422bfe56312c60870663d97b3806f62be04ff323eeb1ce76f63d1fb4ed08869ab79d7c17065993875cdc6eb1b2a0b3645b74325bc0aab44e97cfc50fbf95a47d8e4c0d831fd52312ec43076cbf503c190269876f170a5cf5585fb9d435cad48b5f63c0356e1ac70755e6e35eb94b02f9844b813e5762199110bc2bba66d30ce511a88eba9b809616c51e12bf89c67972102e7d976b18557f7a638793783cda348368538525f52a5e9a5a43a3de93caec26b6a030ecfb3aedf98b984132f87dcf11a332f6ec5b051e68e59ff493dd6fdcc4f716ea72373734977a0a983c5e8e3090bdbeb94bf4faf841c1f8c916bcbca423863f6870a142d16a4fb834296f728e7fe68cccb97a9f6edbf3bf3a686f44044c744fe85f207a92ed48114fe4266daf3d281444ce3d9fe30e1b61cf31a66c40c589b747b2949568a6445c57db202ff3700ee547875abd53f916df2c4ca25e4d0091dbfcae0a8cea7930994fe4266daf3d281444ce3d9fe30e1b61cf31a66c40c589b747b2949568a6445c9bfacbbb64e239a75591a7260b3ed86748eeb4366e6c40f3542753e79bace9a7b415a6f3d3663c3ac332ee4a0f4213eadad9281508dc97410e258a03633b063a0f8d47b88bb145b5012d870c37b6e27e8f37a9a202c2fb494f34b22006d3561919847707bd845aacd248bef592f3ec2e472f5b9c4e8e2b7aff7bfca63ff9faae0f8d47b88bb145b5012d870c37b6e27e8f37a9a202c2fb494f34b22006d356199b3d9c4511e4a3c013cf6b068575fbd058a3f1fde28832b8f5e522f43dca9fa7977b07b66f3000ea0b351f6506a48d8958a5f37324733e461938cf1d82a9e84c9b3d9c4511e4a3c013cf6b068575fbd058a3f1fde28832b8f5e522f43dca9fa754098f690ddadf982be4df5f8bdba38fda0eeb4c544d1ca5c8a750315b63771acfc28075d661fc7b8e00f8312fa14220809e1a7f92e3f79b849ac7e793918f1954098f690ddadf982be4df5f8bdba38fda0eeb4c544d1ca5c8a750315b63771a5a51dd3dd23ff2cce9519f29d289fd15c989553fb1338ff8afc1c1c67d1d0b58e029346ad8ead58d1d37431171458b9a0716e463e4db1611fc93339bd3cda24200461652d0904952cd6ce8ca0ea269e17a3962cfbaa2eb812b5374114dd38aa794e0e503e6bbb3ee9bdf8b2d5fa9946f628c3790b6eb1f4af89cbe452ee5e3f79667861280d61f7c56829f0911b7dc6929dff4108c9d1551ac9485be0c4db9f23cce665f8282743fabe27aa940c308d78dcbbe20aae623e3413325b3e26868d4b14908ac5d000b1fd35c304ecf29b243ded85a821a194be82b24d51b2cc01a3690e7ba2279f66fcca4bdbcb391845699bfb57407b19a3350c1e967fe5f62b7652f148b30c0e238bb64802700e285d2636417773cf23f7a41b45d7e18aba832e4928a572529423e522c3829e6b3cf7fa879e7bbed5ff09c5c3e2dfd8f6927b4a097626fa5a5b1a5850ea707deeed667f4b5dc598962ae16fce07d95913fe30aa7928a572529423e522c3829e6b3cf7fa879e7bbed5ff09c5c3e2dfd8f6927b4a0a98d3be6ca587697042f5cb2c73bc10c60cbeb85c62531bde96c2097fccd4e79f00a8a33c33f5908a408dde9f203caad6871486ad8bfca6def53add3e8c94666813d60d48bcdd6054437e7f45d1782d5fb127c2fb3b9df831becacf3a4e8f336826b02a803930834b96b1086cbee7db1d21c684f65dd3073706dc7bb5ba1a3e880598dbc5970feaa36ea2b7549e3e76dd018fb80cf79e4a5e27e9e71af60c82c42974c4c67803dfe80b016ff8aeea0d1e5c751703ab3aec5be765f4e534367beaf4ee09b06efc54e7fe58032d8338c4bc8578094946d03a200740deab25d97cb614b88673d496a360e6b10efe8d733c7c0826fb214470ff12f24a1e597699870d4f33a8f018755626b64557953a91c6bba21ff613da46f7558a2874aa5d08ebf8e10c99668216701224831c82f13b36d29cd408554c19e34d290c351595df4ceae8a80a8b51567b4f0965481682705e70c73dd6bfa145283f630d6833f1b4975ec5e469d55df6c219ed11005e00508a19e2068d12889a4cef3ac2e1f88b104bf91950edfb196c105d93886f8af7ea3c0a79e06a6b63be3e5a4ea09804e8672a6fc93549faaaf9eae9eccca86f24cab356b2283917fd9793971ad676b83cab32ffc93549faaaf9eae9eccca86f24cab356b2283917fd9793971ad676b83cab32ffc93549faaaf9eae9eccca86f24cab356b2283917fd9793971ad676b83cab32f795c9ffb25f39b0e5346071b841c9180606c75e767253c17c0aab3819807d3e6795c9ffb25f39b0e5346071b841c9180606c75e767253c17c0aab3819807d3e6795c9ffb25f39b0e5346071b841c9180606c75e767253c17c0aab3819807d3e6cb6da924e138a47e54ae3b3f00b046c4efbf69b56fa92d78a9a6ab0d8312d328eb5a50ab72a38fb7959cb827b70a362523267e7782efaeaa426892c60682f82415720627ac03f84edab8dd9b49757eb8a78477e6eb29a1c8e8ee56e42683a8879a45e42f9cd3e056e95ac835794e920c21c957dab997dde2b87d73758e26c22a9a45e42f9cd3e056e95ac835794e920c21c957dab997dde2b87d73758e26c22a9a45e42f9cd3e056e95ac835794e920c21c957dab997dde2b87d73758e26c22ac6eb7f10ccb6c56da2245fa04f219ecb9c5dafa8f7e653846503f682540c4680c6eb7f10ccb6c56da2245fa04f219ecb9c5dafa8f7e653846503f682540c4680c6eb7f10ccb6c56da2245fa04f219ecb9c5dafa8f7e653846503f682540c4680d0f57acab07fe4f9c116c3392d85946bac8e78608f409cea70005f16ea019b57b88497adc30d5d5eda7789c25a2206ee9270c932d584d7ac42680325651da45ce34db91cfa30bcd8488cfdee2703ada22e3714ef452bf06ba669700d06cd482a128fad23da0498a5bb6e0bb48c2b69979bfb5e47a7ac2bdc626cb39787c9353be34db91cfa30bcd8488cfdee2703ada22e3714ef452bf06ba669700d06cd482a6fdaba338ce8a8dd31e65caab2fa7b9325dc35602b3dd152735db406a44beaec374b61688aa4015d96e1817e2f614115c57ed4e32ce43947a04cdda510a402f56fdaba338ce8a8dd31e65caab2fa7b9325dc35602b3dd152735db406a44beaec64e1947747c2874117a7458bba1f07c86620cc0ed9a4a4116d262878e4a2aa092f949d27b9eda6284482b43f4c202830fb35ea94f4101d70452119d3210bdbe0f07c11fd4baddbd80ad4d69d54ab641b3cc6625dd4bbb19930c85cb4d64b0e31bc9482748306812effa7bdc2f489495a605dc49b9a4b7b437d77eed79d3d3b15f07c11fd4baddbd80ad4d69d54ab641b3cc6625dd4bbb19930c85cb4d64b0e3187d848125f29ff8c2bd126e4adbbfc76f8bd79bcb14c981476f4ddecb830a4815fdc3684d913076923b6c349c29fbededbe1311c92147b30e1d7472aa086f82187d848125f29ff8c2bd126e4adbbfc76f8bd79bcb14c981476f4ddecb830a481c0648df638b12b1f74472ffd274556600380170e2078a56a56e8ce94c5d0bb5438533a20f616fc4c9cbdbfc9f315ede1e66ef06c11c23dcfd414ec608a2778f8c0648df638b12b1f74472ffd274556600380170e2078a56a56e8ce94c5d0bb54f933b5334089dba765aa74bdd90241bb0ce07029932a79278faa06eec71f3533febf5cd9ec64531ee2768be2ad30086a41092922818e831d9537e6cafa8c26b1f933b5334089dba765aa74bdd90241bb0ce07029932a79278faa06eec71f3533c9b728258c9a4d6c5ab349d308eb3bdabce86409a836eb9c2fd38d71a3471a8b19bd2ec93cd6f6fa337e73e2f7e8a687e9e2666ca689b695c1cbb5f601418c6bc9b728258c9a4d6c5ab349d308eb3bdabce86409a836eb9c2fd38d71a3471a8b3c2d93b525bb17d87aeee2eb059e8af84401977e3b2909b40d6349b64ecd24bf209329acb08f74b568b723830e12ce5ab946e56787c2b3771d9521635ad09f4b3c2d93b525bb17d87aeee2eb059e8af84401977e3b2909b40d6349b64ecd24bf26564d5742496196d17a4a0ee135d28f652ec81742cf2fa4bff83e64323578ac5b6750ae591cffa303b20f092b13409a92df5ee1c403adac08dd5320eafee0be64c7aae49f1dd382a7b9012610307bfa1d43a14a5dc09a5c8da30903f6805c3d3fe2cdb6386e0c4d42d37c657bbecb78b69c57aedb1610dbd8bf4043944130ab0962c8d64ac8b03148d4ae62a531f544c4fd1be2116c6f4a53b480cff463dbba87ad5c8954dd56fbbca04517bf87477ff4dce575170c7dd1281d7ef1f4214ac83c9ff2e78f3bcd3b05623ab4d6edba4c0153fe563b46ec77f42e03f05895402b3c9ff2e78f3bcd3b05623ab4d6edba4c0153fe563b46ec77f42e03f05895402b3c9ff2e78f3bcd3b05623ab4d6edba4c0153fe563b46ec77f42e03f05895402b8402b8c612ffa8602a72b81e4f142ab2efb5e2fc738a8dc1683a01adcbb8f73477d8564e38a14a64702c9cbbdb287b0958c9960932d05a712d3ac8ad410c1681f15f4538d855c707934d58b68186135af54f859f60d1afad1093039c96bc32c6e1bd8384baf08441757658c00c8aa440b7b2a9fc46334b0977354a28bd60411a134e11a0d8cc42854244bdd74229303056f8cc884ffb81a4f90e7db815c216bbc35a1167d27af9fa7b863dd6a8e1a3829a087545586fc6f1c7ae008ddcf0bf3dc77e7072ab9aaab6c6f16f89f2e7d528183b816df5d9f80e490f773ab45fe2386781c25a6224b8bafe13050d26456c8a8b480c96e7974bcf60d4deb0c4ad454c56e098b62cef6c39944bb898326dd920b70be461fe644139e2b699977d2997a1eb37f9fb0bb23795bbb6a310530a99e5a99dff5acc78e6f2cc17fbefc8d7a311e418cdbb27adf0063e3cec28179ac6b7bdb6ac743bb49d157f450551fcf38be2e004eff707115d4f60be455c2e58877b4e268877bb185681d80dda9efe428779f15d64c1147ffe291449c873c661f45f809fe93df3e62c9c60e6c51f0c6347073f30efab9eb36e32d86a3a219fdc92bc115e9f34adff7e889e072ff9d5094bda30fd10072bb0e5a9dc9023c186961832b8ff5c26160776a4eb75eac2e719493a30fd10072bb0e5a9dc9023c186961832b8ff5c26160776a4eb75eac2e719493a30fd10072bb0e5a9dc9023c186961832b8ff5c26160776a4eb75eac2e719493a3db24a524a31bbb4ce64f23a931dc47403058bbb90e54c4869a17b1245474165d71e0bb8118d0737df1ede67ca7d0f56a408ea9a59c533c600d3aa930f14528f22ae34d6ca3ab0e76d95a64318f99be603ac6d3b09f6a6939171724d06c6ebdcd71e0bb8118d0737df1ede67ca7d0f56a408ea9a59c533c600d3aa930f14528f0bd5e1a40b48c1b6bc99b5d1c5465c28c2a13d5ac502be4338f0099245d3cd8331a2fd2687f1a6108888f3b8dbf5e6eb4a9129762133eddb3512d80d3f5b5c940bd5e1a40b48c1b6bc99b5d1c5465c28c2a13d5ac502be4338f0099245d3cd837020d375669c257879b5b1278e7649ef51cbfe16e9aef967e5aca51cca11f8934ac94d92219c2e1c0d67ad3fff3753ec3a3756af62a36a2f696f02cd12d518f0ac7fb403e4371d07482ef2fda81dbcf6879484e9fc41d4be42c156d7e54c68a86e5795f5098d51098693fb80122d7e1d8da2a553021d3b1e1805b25d5090edb96e5795f5098d51098693fb80122d7e1d8da2a553021d3b1e1805b25d5090edb96e5795f5098d51098693fb80122d7e1d8da2a553021d3b1e1805b25d5090edb9b346fbdcd196806bb8693faebb123fa3255a66e93ba75bf0830844ea4d52075ff756fee174dda762bbe10a9f41a027da51095ace86b527b9a9eb4293a6a7f49db4f535501bf6169b837d4bf72366114fa05167e0cfb27bddc0952b7a6310baaa5e2f1bee08bda5e56b80938a45ea9eee34fa8abe1fed897e44b76a28cd48f1edb6d3b06973131fd21470d631747dcc92ac9d08df45e1c5806f4f47d3a171327a5e2f1bee08bda5e56b80938a45ea9eee34fa8abe1fed897e44b76a28cd48f1ed5418bbc62902cc4b68b2444ea2b9af0b506e87c8db546cc938889da111f386472c385b6a4a2645b6d67252bb79de420067033d7dd1bb387b4b1a90846ebd135e729bd0c020a308dac7724231ab121df3d70a4dd5375b9f660362f98d08cda0a767deaf0ba41aa4865e007297677207485a89b75629eea0ee5c472be8a3e83bf65dc473af6f6ae35e5531cc9705a1e4923aa07e7d35f6b4c275b90c6a3c2591c4ebb9b679519a23252eb90541003a2fdbb3f2d7bc36713fd70672baa575dcdcb6a6bfbf80938110d83227f0dd1df5dfac476c65d101465a211cacfe8bfb232aed8de1bdbe9e53e05208216a4f670402ab38059c8bed5cece92e33bf720f01431a3b2f81fe21d181c499c59a256c8e1968455d6689d269aa85373bfb6af41da3bf70645a6445b35f4b5850536e7bc36c058a7076dc776c8994b34c1a1b17675462rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython312-core-3.12.4-150600.3.3.1.src.rpmpython(abi)python312-asynciopython312-basepython312-base(ppc-64)python312-typingpython312-xml@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     /bin/sh/usr/bin/python3.12libbz2.so.1()(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.17)(64bit)libc.so.6(GLIBC_2.25)(64bit)libc.so.6(GLIBC_2.28)(64bit)libc.so.6(GLIBC_2.32)(64bit)libc.so.6(GLIBC_2.34)(64bit)libc.so.6(GLIBC_2.38)(64bit)libcrypt.so.1()(64bit)libcrypt.so.1(XCRYPT_2.0)(64bit)libcrypto.so.3()(64bit)libcrypto.so.3(OPENSSL_3.0.0)(64bit)libexpat.so.1()(64bit)libffi.so.7()(64bit)libffi.so.7(LIBFFI_BASE_7.0)(64bit)libffi.so.7(LIBFFI_CLOSURE_7.0)(64bit)liblzma.so.5()(64bit)liblzma.so.5(XZ_5.0)(64bit)libm.so.6()(64bit)libm.so.6(GLIBC_2.17)(64bit)libm.so.6(GLIBC_2.29)(64bit)libm.so.6(GLIBC_2.35)(64bit)libm.so.6(GLIBC_2.38)(64bit)libpython3.12.so.1.0()(64bit)libpython3_12-1_0libssl.so.3()(64bit)libssl.so.3(OPENSSL_3.0.0)(64bit)libuuid.so.1()(64bit)libuuid.so.1(UUID_2.20)(64bit)libz.so.1()(64bit)libz.so.1(ZLIB_1.2.0)(64bit)python(abi)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.12.43.123.0.4-14.6.0-14.0.4-14.0-15.2-14.14.3fff|f|fy_fb@ff@eZe؈eԔ@ee@e@e|?eV@ee d@dd@d˖dD@d dx@dw6dNX@dJcdI@d!@d@d@c>@c@ck@c@cS@cck@cWcRc#cccb@b?b@b@bzSby@bs@b?@b@b a@a@a@a@aX@a@aa@af@a\>@a,@a(a @a` @` @`g@``r```@`N@`/@`"y@`!'`_T__԰_ _v@_u@_P_|\@_m_O@_N7_>e__@__A@___ @_X@_X@_X@_X@_X@_X@_X@_X@_X@^z^z^z^z^)@^^^^@^(@^3^@^'@^H^|@^h^`^>^>^8 @^8 @^ P@^[]f@]f@]]]]W]]c@]]]z@](]]]@]V]w@]i]g@]W@]Ik]6]!]G@\\9\~\@\\@\7\+@\\s\b@\b@\Q\C@\4\4\,\2\\\\&@[[@[^[ @[ͻ[ͻ[$@[ā@[/[[@["@[D[;e@[6@[4ZnZ@Z@ZZԐ@Zx@Z@Z Z Z Zz@ZxG@Zhu@Z`@ZLZ"Z }YYX@Yo@YY@YY@Y@YP@YI@XӸXƉXqX@Xv@W@V@Vm@VVhVCV }@U@U@U@U@UU[%UT@UT@UCjU@TeTBV@T;mcepl@cepl.eudaniel.garcia@suse.commcepl@suse.comschwab@suse.deschwab@suse.demcepl@cepl.eudaniel.garcia@suse.commcepl@cepl.eupmonreal@suse.commcepl@suse.commcepl@cepl.eudaniel.garcia@suse.commcepl@cepl.eudaniel.garcia@suse.comdaniel.garcia@suse.comdaniel.garcia@suse.commcepl@suse.comdaniel.garcia@suse.comdmueller@suse.comdaniel.garcia@suse.comdmueller@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdaniel.garcia@suse.comdaniel.garcia@suse.commcepl@suse.comdaniel.garcia@suse.comdaniel.garcia@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comkukuk@suse.comdmueller@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comschwab@suse.deschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdmueller@suse.comdcermak@suse.commcepl@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.comdimstar@opensuse.orgmcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comschwab@suse.decallumjfarmer13@gmail.commcepl@suse.comcallumjfarmer13@gmail.comcallumjfarmer13@gmail.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comdmueller@suse.comandreas.stieger@gmx.decallumjfarmer13@gmail.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commliska@suse.czmcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comstefan.bruens@rwth-aachen.destefan.bruens@rwth-aachen.demcepl@suse.commcepl@suse.commgorse@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.combwiedemann@suse.comtchvatal@suse.commcepl@suse.comguillaume.gardet@opensuse.orgjayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commliska@suse.czmcepl@suse.commcepl@suse.commcepl@suse.comjayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtoddrme2178@gmail.commcepl@suse.comjengelh@inai.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commimi.vx@gmail.comhpj@urpla.netjengelh@inai.detchvatal@suse.comtchvatal@suse.comtchvatal@suse.commimi.vx@gmail.comadam@mizerski.plschwab@suse.debwiedemann@suse.comtchvatal@suse.comtchvatal@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comdimstar@opensuse.orgmimi.vx@gmail.comjmatejek@suse.comdmueller@suse.comvcizek@suse.comjengelh@inai.deschwab@suse.dejmatejek@suse.comkukuk@suse.dejmatejek@suse.comjmatejek@suse.comasn@cryptomilk.orgjmatejek@suse.comjmatejek@suse.combwiedemann@suse.comjmatejek@suse.comjmatejek@suse.comjmatejek@suse.comschwab@suse.detoddrme2178@gmail.comarichardson.kde@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comjmatejek@suse.comdimstar@opensuse.orgjmatejek@suse.comfisiu@opensuse.orgdimstar@opensuse.orgmeissner@suse.comschwab@suse.dejmatejek@suse.comjmatejek@suse.commailaender@opensuse.orgrguenther@suse.comp.drouand@gmail.comcrrodriguez@opensuse.orgjmatejek@suse.com- Stop using %%defattr, it seems to be breaking proper executable attributes on /usr/bin/ scripts (bsc#1227378).- Add F00251-change-user-install-location.patch to make pip and modern tools install directly in /usr/local when used by the user. bsc#1225660- Add docs-docutils_014-Sphinx_420.patch make building docs compatible with Sphinx 4_2_0 and docutils 0.14.- Update import_failed.map for python 3.12- Reenable test_multiprocessing_forkserver test_multiprocessing_spawn test_subprocess tests in qemu build- Update to 3.12.4: - Security - gh-118486: os.mkdir() on Windows now accepts mode of 0o700 to restrict the new directory to the current user. This fixes CVE-2024-4030 affecting tempfile.mkdtemp() in scenarios where the base temporary directory is more permissive than the default (bsc#1227152). - gh-116741: Update bundled libexpat to 2.6.2 - gh-117233: Detect BLAKE2, SHA3, Shake, & truncated SHA512 support in the OpenSSL-ish libcrypto library at build time. This allows hashlib to be used with libraries that do not to support every algorithm that upstream OpenSSL does. - Core and Builtins - gh-119821: Fix execution of annotation scopes within classes when globals is set to a non-dict. Patch by Jelle Zijlstra. - gh-118263: Speed up os.path.normpath() with a direct C call. - gh-119311: Fix bug where names are unexpectedly mangled in the bases of generic classes. - gh-119395: Fix bug where names appearing after a generic class are mangled as if they are in the generic class. - gh-118507: Fix os.path.isfile() on Windows for pipes. - gh-119213: Non-builtin modules built with argument clinic were crashing if used in a subinterpreter before the main interpreter. The objects that were causing the problem by leaking between interpreters carelessly have been fixed. - gh-119011: Fixes type.__type_params__ to return an empty tuple instead of a descriptor. - gh-118997: Fix _Py_ClearImmortal() assertion: use _Py_IsImmortal() to tolerate reference count lower than _Py_IMMORTAL_REFCNT. Fix the assertion for the stable ABI, when a C extension is built with Python 3.11 or lower. Patch by Victor Stinner. - gh-118513: Fix incorrect UnboundLocalError when two comprehensions in the same function both reference the same name, and in one comprehension the name is bound while in the other it’s an implicit global. - gh-118164: Break a loop between the Python implementation of the decimal module and the Python code for integer to string conversion. Also optimize integer to string conversion for values in the range from 9_000 to 135_000 decimal digits. - gh-118272: Fix bug where generator.close does not free the generator frame’s locals. - gh-116767: Fix crash in compiler on ‘async with’ that has many context managers. - gh-117894: Prevent agen.aclose() objects being re-used after .throw(). - gh-117881: prevent concurrent access to an async generator via athrow().throw() or asend().throw() - gh-115874: Fixed a possible segfault during garbage collection of _asyncio.FutureIter objects - Library - gh-119819: Fix regression to allow logging configuration with multiprocessing queue types. - gh-89727: Fix issue with shutil.rmtree() where a RecursionError is raised on deep directory trees. - gh-89727: Partially fix issue with shutil.rmtree() where a RecursionError is raised on deep directory trees. A recursion error is no longer raised when rmtree.avoids_symlink_attacks is false. - gh-119118: Fix performance regression in the tokenize module by caching the line token attribute and calculating the column offset more efficiently. - gh-89727: Fix issue with os.fwalk() where a RecursionError was raised on deep directory trees by adjusting the implementation to be iterative instead of recursive. - gh-113892: Now, the method sock_connect of asyncio.ProactorEventLoop raises a ValueError if given socket is not in non-blocking mode, as well as in other loop implementations. - gh-119174: Fix high DPI causes turtledemo(turtle-graphics examples) windows blurry Patch by Wulian233 and Terry Jan Reedy - gh-118643: Fix an AttributeError in the email module when re-fold a long address list. Also fix more cases of incorrect encoding of the address separator in the address list. - gh-58933: Make pdb return to caller frame correctly when f_trace of the caller frame is not set - gh-118868: Fixed issue where kwargs were no longer passed to the logging handler QueueHandler - gh-118164: The Python implementation of the decimal module could appear to hang in relatively small power cases (like 2**117) if context precision was set to a very high value. A different method to check for exactly representable results is used now that doesn’t rely on computing 10**precision (which could be effectively too large to compute). - gh-118404: Fix inspect.signature() for non-comparable callables. - gh-118314: Fix an edge case in binascii.a2b_base64() strict mode, where excessive padding is not detected when no padding is necessary. - gh-118042: Fix an unraisable exception in telnetlib.Telnet.__del__() when the __init__() method was not called. - gh-118221: Fix a bug where sqlite3.iterdump() could fail if a custom row factory was used. Patch by Erlend Aasland. - gh-118013: Fix regression introduced in gh-103193 that meant that calling inspect.getattr_static() on an instance would cause a strong reference to that instance’s class to persist in an internal cache in the inspect module. This caused unexpected memory consumption if the class was dynamically created, the class held strong references to other objects which took up a significant amount of memory, and the cache contained the sole strong reference to the class. The fix for the regression leads to a slowdown in getattr_static(), but the function should still be significantly faster than it was in Python 3.11. Patch by Alex Waygood. - gh-90848: Fixed unittest.mock.create_autospec() to configure parent mock with keyword arguments. - gh-118168: Fix incorrect argument substitution when typing.Unpack is used with the builtin tuple. typing.Unpack now raises TypeError when used with certain invalid types. Patch by Jelle Zijlstra. - gh-118033: Fix dataclasses.dataclass() not creating a __weakref__ slot when subclassing typing.Generic. - gh-117535: Do not try to get the source line for made up file name “sys” in warnings. - gh-114053: Fix erroneous NameError when calling typing.get_type_hints() on a class that made use of PEP 695 type parameters in a module that had from __future__ import annotations at the top of the file. Patch by Alex Waygood. - gh-117995: Don’t raise DeprecationWarning when a sequence of parameters is used to bind indexed, nameless placeholders. See also gh-100668. - gh-80361: Fix TypeError in email.message.Message.get_payload() when the charset is RFC 2231 encoded. - gh-86650: Fix IndexError when parse some emails with invalid Message-ID (including one-off addresses generated by Microsoft Outlook). - gh-117691: Improve the error messages emitted by tarfile deprecation warnings relating to PEP 706. If a filter argument is not provided to extract() or extractall, the deprecation warning now points to the line in the user’s code where the relevant function was called. Patch by Alex Waygood. - gh-77102: site module now parses .pth file with UTF-8 first, and locale encoding if UnicodeDecodeError happened. It supported only locale encoding before. - gh-117692: Fixes a bug when doctest.DocTestFinder was failing on wrapped builtin_function_or_method. - gh-117566: ipaddress.IPv6Address.is_loopback() will now return True for IPv4-mapped loopback addresses, i.e. addresses in the ::ffff:127.0.0.0/104 address space. - gh-117503: Fix support of non-ASCII user names in bytes paths in os.path.expanduser() on Posix. - gh-117313: Only treat '\n', '\r' and '\r\n' as line separators in re-folding the email messages. Preserve control characters '\v', '\f', '\x1c', '\x1d' and '\x1e' and Unicode line separators '\x85', '\u2028' and '\u2029' as is. - gh-113171 (bsc#1226448, CVE-2024-4032): Fixed various false positives and false negatives in ipaddress.IPv4Address.is_private (see these docs for details) ipaddress.IPv4Address.is_global ipaddress.IPv6Address.is_private ipaddress.IPv6Address.is_global Also in the corresponding ipaddress.IPv4Network and ipaddress.IPv6Network attributes. - gh-103956: Fix lack of newline characters in trace module output when line tracing is enabled but source code line for current frame is not available. - gh-92081: Fix missing spaces in email headers when the spaces are mixed with encoded 8-bit characters. - gh-103194: Prepare Tkinter for C API changes in Tcl 8.7/9.0 to avoid _tkinter.Tcl_Obj being unexpectedly returned instead of bool, str, bytearray, or int. - gh-87106: Fixed handling in inspect.Signature.bind() of keyword arguments having the same name as positional-only arguments when a variadic keyword argument (e.g. **kwargs) is present. - bpo-45767: Fix integer conversion in os.major(), os.minor(), and os.makedev(). Support device numbers larger than 2**63-1. Support non-existent device number (NODEV). - bpo-40943: Fix several IndexError when parse emails with truncated Message-ID, address, routes, etc, e.g. example@. - bpo-30988: Fix parsing of emails with invalid address headers having a leading or trailing dot. Patch by tsufeki. - gh-67693: Fix urllib.parse.urlunparse() and urllib.parse.urlunsplit() for URIs with path starting with multiple slashes and no authority. Based on patch by Ashwin Ramaswami. - bpo-15010: unittest.TestLoader.discover() now saves the original value of unittest.TestLoader._top_level_dir and restores it at the end of the call. - Documentation - gh-117928: The minimum Sphinx version required for the documentation is now 6.2.1. - gh-91565: Changes to documentation files and config outputs to reflect the new location for reporting bugs - i.e. GitHub rather than bugs.python.org. - Tests - gh-119050: regrtest test runner: Add XML support to the refleak checker (-R option). Patch by Victor Stinner. - IDLE - bpo-34774: Use user-selected color theme for Help => IDLE Doc. - C API - gh-119585: Fix crash when a thread state that was created by PyGILState_Ensure() calls a destructor that during PyThreadState_Clear() that calls back into PyGILState_Ensure() and PyGILState_Release(). This might occur when in the free-threaded build or when using thread-local variables whose destructors call PyGILState_Ensure(). - gh-117534: Improve validation logic in the C implementation of datetime.fromisoformat() to better handle invalid years. Patch by Vlad Efanov. - Updated patches: - CVE-2023-6597-TempDir-cleaning-symlink.patch - bpo-31046_ensurepip_honours_prefix.patch - fix_configure_rst.patch - python-3.3.0b1-fix_date_time_compiler.patch - subprocess-raise-timeout.patch- Add CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch to fix tests with patched libexpat below 2.6.0 that doesn't update the version number, just in 15.6. - Drop libexpat260.patch, not needed anymore. This patch is merged with the CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch to keep working on 15.6. - Add fix-test-recursion-limit-15.6.patch, gh#python/cpython#115083.- Update to 3.12.3: - Security - gh-115398: Allow controlling Expat >=2.6.0 reparse deferral (CVE-2023-52425, bsc#1219559) by adding five new methods: xml.etree.ElementTree.XMLParser.flush() xml.etree.ElementTree.XMLPullParser.flush() xml.parsers.expat.xmlparser.GetReparseDeferralEnabled() xml.parsers.expat.xmlparser.SetReparseDeferralEnabled() xml.sax.expatreader.ExpatParser.flush() - gh-115399: Update bundled libexpat to 2.6.0 (bsc#1222075) - gh-115243: Fix possible crashes in collections.deque.index() when the deque is concurrently modified. - gh-114572: ssl.SSLContext.cert_store_stats() and ssl.SSLContext.get_ca_certs() now correctly lock access to the certificate store, when the ssl.SSLContext is shared across multiple threads (bsc#1226447, CVE-2024-0397). - Core and Builtins - gh-109120: Added handle of incorrect star expressions, e.g f(3, *). Patch by Grigoryev Semyon - gh-99108: Updated the hashlib built-in HACL* project C code from upstream that we use for many implementations when they are not present via OpenSSL in a given build. This also avoids the rare potential for a C symbol name one definition rule linking issue. - gh-116735: For INSTRUMENTED_CALL_FUNCTION_EX, set arg0 to sys.monitoring.MISSING instead of None for CALL event. - gh-113964: Starting new threads and process creation through os.fork() are now only prevented once all non-daemon threads exit. - gh-116604: Respect the status of the garbage collector when indirect calls are made via PyErr_CheckSignals() and the evaluation breaker. Patch by Pablo Galindo - gh-116626: Ensure INSTRUMENTED_CALL_FUNCTION_EX always emits CALL - gh-116296: Fix possible refleak in object.__reduce__() internal error handling. - gh-116034: Fix location of the error on a failed assertion. - gh-115823: Properly calculate error ranges in the parser when raising SyntaxError exceptions caused by invalid byte sequences. Patch by Pablo Galindo - gh-112087: For an empty reverse iterator for list will be reduced to reversed(). Patch by Donghee Na. - gh-115154: Fix a bug that was causing the tokenize.untokenize() function to handle unicode named literals incorrectly. Patch by Pablo Galindo - gh-114828: Fix compilation crashes in uncommon code examples using super() inside a comprehension in a class body. - gh-115011: Setters for members with an unsigned integer type now support the same range of valid values for objects that has a __index__() method as for int. - gh-112215: Change the C recursion limits to more closely reflect the underlying platform limits. - gh-96497: Fix incorrect resolution of mangled class variables used in assignment expressions in comprehensions. - Library - gh-117467: Preserve mailbox ownership when rewriting in mailbox.mbox.flush(). Patch by Tony Mountifield. - gh-117310: Fixed an unlikely early & extra Py_DECREF triggered crash in ssl when creating a new _ssl._SSLContext if CPython was built implausibly such that the default cipher list is empty or the SSL library it was linked against reports a failure from its C SSL_CTX_set_cipher_list() API. - gh-117178: Fix regression in lazy loading of self-referential modules, introduced in gh-114781. - gh-117084: Fix zipfile extraction for directory entries with the name containing backslashes on Windows. - gh-117110: Fix a bug that prevents subclasses of typing.Any to be instantiated with arguments. Patch by Chris Fu. - gh-90872: On Windows, subprocess.Popen.wait() no longer calls WaitForSingleObject() with a negative timeout: pass 0 ms if the timeout is negative. Patch by Victor Stinner. - gh-116957: configparser: Don’t leave ConfigParser values in an invalid state (stored as a list instead of a str) after an earlier read raised DuplicateSectionError or DuplicateOptionError. - gh-90095: Ignore empty lines and comments in .pdbrc - gh-116764: Restore support of None and other false values in urllib.parse functions parse_qs() and parse_qsl(). Also, they now raise a TypeError for non-zero integers and non-empty sequences. - gh-116811: In PathFinder.invalidate_caches, delegate to MetadataPathFinder.invalidate_caches. - gh-116600: Fix repr() for global Flag members. - gh-116484: Change automatically generated tkinter.Checkbutton widget names to avoid collisions with automatically generated tkinter.ttk.Checkbutton widget names within the same parent widget. - gh-116401: Fix blocking os.fwalk() and shutil.rmtree() on opening named pipe. - gh-116143: Fix a race in pydoc _start_server, eliminating a window in which _start_server can return a thread that is “serving” but without a docserver set. - gh-116325: typing: raise SyntaxError instead of AttributeError on forward references as empty strings. - gh-90535: Fix support of interval values > 1 in logging.TimedRotatingFileHandler for when='MIDNIGHT' and when='Wx'. - gh-115978: Disable preadv(), readv(), pwritev(), and writev() on WASI. - Under wasmtime for WASI 0.2, these functions don’t pass test_posix (https://github.com/bytecodealliance/wasmtime/issues/7830). - gh-88352: Fix the computation of the next rollover time in the logging.TimedRotatingFileHandler handler. computeRollover() now always returns a timestamp larger than the specified time and works correctly during the DST change. doRollover() no longer overwrite the already rolled over file, saving from data loss when run at midnight or during repeated time at the DST change. - gh-87115: Set __main__.__spec__ to None when running a script with pdb - gh-76511: Fix UnicodeEncodeError in email.Message.as_string() that results when a message that claims to be in the ascii character set actually has non-ascii characters. Non-ascii characters are now replaced with the U+FFFD replacement character, like in the replace error handler. - gh-116040: [Enum] fix by-value calls when second value is falsey; e.g. Cardinal(1, 0) - gh-75988: Fixed unittest.mock.create_autospec() to pass the call through to the wrapped object to return the real result. - gh-115881: Fix issue where ast.parse() would incorrectly flag conditional context managers (such as with (x() if y else z()): ...) as invalid syntax if feature_version=(3, 8) was passed. This reverts changes to the grammar made as part of gh-94949. - gh-115886: Fix silent truncation of the name with an embedded null character in multiprocessing.shared_memory.SharedMemory. - gh-115809: Improve algorithm for computing which rolled-over log files to delete in logging.TimedRotatingFileHandler. It is now reliable for handlers without namer and with arbitrary deterministic namer that leaves the datetime part in the file name unmodified. - gh-74668: urllib.parse functions parse_qs() and parse_qsl() now support bytes arguments containing raw and percent-encoded non-ASCII data. - gh-67044: csv.writer() now always quotes or escapes '\r' and '\n', regardless of lineterminator value. - gh-115712: csv.writer() now quotes empty fields if delimiter is a space and skipinitialspace is true and raises exception if quoting is not possible. - gh-112364: Fixed ast.unparse() to handle format_spec with ", ' or \\. Patched by Frank Hoffmann. - gh-111358: Fix a bug in asyncio.BaseEventLoop.shutdown_default_executor() to ensure the timeout passed to the coroutine behaves as expected. - gh-115618: Fix improper decreasing the reference count for None argument in property methods getter(), setter() and deleter(). - gh-115570: A DeprecationWarning is no longer omitted on access to the __doc__ attributes of the deprecated typing.io and typing.re pseudo-modules. - gh-112006: Fix inspect.unwrap() for types with the __wrapper__ data descriptor. - gh-101293: Support callables with the __call__() method and types with __new__() and __init__() methods set to class methods, static methods, bound methods, partial functions, and other types of methods and descriptors in inspect.Signature.from_callable(). - gh-115392: Fix a bug in doctest where incorrect line numbers would be reported for decorated functions. - gh-114563: Fix several format() bugs when using the C implementation of Decimal: * memory leak in some rare cases when using the z format option (coerce negative 0) * incorrect output when applying the z format option to type F (fixed-point with capital NAN / INF) * incorrect output when applying the # format option (alternate form) - gh-115197: urllib.request no longer resolves the hostname before checking it against the system’s proxy bypass list on macOS and Windows. - gh-115165: Most exceptions are now ignored when attempting to set the __orig_class__ attribute on objects returned when calling typing generic aliases (including generic aliases created using typing.Annotated). Previously only AttributeError was ignored. Patch by Dave Shawley. - gh-115133: Fix tests for XMLPullParser with Expat 2.6.0. - gh-115059: io.BufferedRandom.read1() now flushes the underlying write buffer. - gh-79382: Trailing ** no longer allows to match files and non-existing paths in recursive glob(). - gh-114071: Support tuple subclasses using auto() for enum member value. - gh-114763: Protect modules loaded with importlib.util.LazyLoader from race conditions when multiple threads try to access attributes before the loading is complete. - gh-97959: Fix rendering class methods, bound methods, method and function aliases in pydoc. Class methods no longer have “method of builtins.type instance” note. Corresponding notes are now added for class and unbound methods. Method and function aliases now have references to the module or the class where the origin was defined if it differs from the current. Bound methods are now listed in the static methods section. Methods of builtin classes are now supported as well as methods of Python classes. - gh-112281: Allow creating union of types for typing.Annotated with unhashable metadata. - gh-111775: Fix importlib.resources.simple.ResourceHandle.open() for text mode, added missed stream argument. - gh-90095: Make .pdbrc and -c work with any valid pdb commands. - gh-107155: Fix incorrect output of help(x) where x is a lambda function, which has an __annotations__ dictionary attribute with a "return" key. - gh-105866: Fixed _get_slots bug which caused error when defining dataclasses with slots and a weakref_slot. - gh-60346: Fix ArgumentParser inconsistent with parse_known_args. - gh-100985: Update HTTPSConnection to consistently wrap IPv6 Addresses when using a proxy. - gh-100884: email: fix misfolding of comma in address-lists over multiple lines in combination with unicode encoding. - gh-95782: Fix io.BufferedReader.tell(), io.BufferedReader.seek(), _pyio.BufferedReader.tell(), io.BufferedRandom.tell(), io.BufferedRandom.seek() and _pyio.BufferedRandom.tell() being able to return negative offsets. - gh-96310: Fix a traceback in argparse when all options in a mutually exclusive group are suppressed. - gh-93205: Fixed a bug in logging.handlers.TimedRotatingFileHandler where multiple rotating handler instances pointing to files with the same name but different extensions would conflict and not delete the correct files. - bpo-44865: Add missing call to localization function in argparse. - bpo-43952: Fix multiprocessing.connection.Listener.accept() to accept empty bytes as authkey. Not accepting empty bytes as key causes it to hang indefinitely. - bpo-42125: linecache: get module name from __spec__ if available. This allows getting source code for the __main__ module when a custom loader is used. - gh-66543: Make mimetypes.guess_type() properly parsing of URLs with only a host name, URLs containing fragment or query, and filenames with only a UNC sharepoint on Windows. Based on patch by Dong-hee Na. - bpo-33775: Add ‘default’ and ‘version’ help text for localization in argparse. - Documentation - gh-115399: Document CVE-2023-52425 of Expat <2.6.0 under “XML vulnerabilities”. - gh-115233: Fix an example for LoggerAdapter in the Logging Cookbook. - Tests - gh-83434: Disable JUnit XML output (--junit-xml=FILE command line option) in regrtest when hunting for reference leaks (-R option). Patch by Victor Stinner. - gh-117187: Fix XML tests for vanilla Expat <2.6.0. - gh-116333: Tests of TLS related things (error codes, etc) were updated to be more lenient about specific error message strings and behaviors as seen in the BoringSSL and AWS-LC forks of OpenSSL. - gh-115979: Update test_importlib so that it passes under WASI SDK 21. - gh-112536: Add –tsan to test.regrtest for running TSAN tests in reasonable execution times. Patch by Donghee Na. - gh-116307: Added import helper isolated_modules as CleanImport does not remove modules imported during the context. Use it in importlib.resources tests to avoid leaving mod around to impede importlib.metadata tests. - gh-115720: Leak tests (-R, --huntrleaks) now show a summary of the number of leaks found in each iteration. - gh-115122: Add --bisect option to regrtest test runner: run failed tests with test.bisect_cmd to identify failing tests. Patch by Victor Stinner. - gh-115596: Fix ProgramPriorityTests in test_os permanently changing the process priority. - Build - gh-116313: Get WASI builds to work under wasmtime 18 w/ WASI 0.2/preview2 primitives. - gh-116117: Backport libb2’s PR #42 to fix compiling CPython on 32-bit Windows with clang-cl. - gh-115167: Avoid vendoring vcruntime140_threads.dll when building with Visual Studio 2022 version 17.8. - gh-112536: Add support for thread sanitizer (TSAN) - Windows - gh-117267: Ensure DirEntry.stat().st_ctime behaves consistently with os.stat() during the deprecation period of st_ctime by containing the same value as st_birthtime. After the deprecation period, st_ctime will be the metadata change time (or unavailable through DirEntry), and only st_birthtime will contain the creation time. - gh-116773: Fix instances of <_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crash. - gh-91227: Fix the asyncio ProactorEventLoop implementation so that sending a datagram to an address that is not listening does not prevent receiving any more datagrams. - gh-115554: The installer now has more strict rules about updating the Python Launcher for Windows. In general, most users only have a single launcher installed and will see no difference. When multiple launchers have been installed, the option to install the launcher is disabled until all but one have been removed. Downgrading the launcher (which was never allowed) is now more obviously blocked. - gh-115543: Python Launcher for Windows can now detect Python 3.13 when installed from the Microsoft Store, and will install Python 3.12 by default when PYLAUNCHER_ALLOW_INSTALL is set. - gh-115049: Fixes py.exe launcher failing when run as users without user profiles. - gh-115009: Update Windows installer to use SQLite 3.45.1. - IDLE - gh-88516: On macOS show a proxy icon in the title bar of editor windows to match platform behaviour. - Tools/Demos - gh-113516: Don’t set LDSHARED when building for WASI. - C API - gh-117021: Fix integer overflow in PyLong_AsPid() on non-Windows 64-bit platforms. - gh-116869: Make the C API compatible with - Werror=declaration-after-statement compiler flag again. Patch by Victor Stinner.- Use the system-wide crypto-policies [bsc#1211301] * Use the system default cipher list instead of hardcoded values * Add the --with-ssl-default-suites=openssl configure option- (bsc#1219666, CVE-2023-6597) Add CVE-2023-6597-TempDir-cleaning-symlink.patch (patch from gh#python/cpython!99930) fixing symlink bug in cleanup of tempfile.TemporaryDirectory.- Switch to %%autopatch. Let’s try it as an experiment, and if we need conditional patch, we should put condition inside of it. - Remove double definition of /usr/bin/idle%%{version} in %%files.- Add upstream patch libexpat260.patch, Fix tests for XMLPullParser with Expat 2.6.0, gh#python/cpython#115288- (bsc#1210638, CVE-2023-27043) Add CVE-2023-27043-email-parsing-errors.patch, which rejects malformed addresses in email.parseaddr() (gh#python/cpython!111116) Detect email address parsing errors and return empty tuple to indicate the parsing error (old API). Add an optional 'strict' parameter to getaddresses() and parseaddr() functions. Patch by Thomas Dwyer.- Update to 3.12.2: - Security - gh-113659: Skip .pth files with names starting with a dot or hidden file attribute. - Core and Builtins - gh-114887: Changed socket type validation in create_datagram_endpoint() to accept all non-stream sockets. This fixes a regression in compatibility with raw sockets. - gh-114388: Fix a RuntimeWarning emitted when assign an integer-like value that is not an instance of int to an attribute that corresponds to a C struct member of type T_UINT and T_ULONG. Fix a double RuntimeWarning emitted when assign a negative integer value to an attribute that corresponds to a C struct member of type T_UINT. - gh-113703: Fix a regression in the codeop module that was causing it to incorrectly identify incomplete f-strings. Patch by Pablo Galindo - gh-89811: Check for a valid tp_version_tag before performing bytecode specializations that rely on this value being usable. - gh-113602: Fix an error that was causing the parser to try to overwrite existing errors and crashing in the process. Patch by Pablo Galindo - gh-113297: Fix segfault in the compiler on with statement with 19 context managers. - gh-106905: Use per AST-parser state rather than global state to track recursion depth within the AST parser to prevent potential race condition due to simultaneous parsing. - The issue primarily showed up in 3.11 by multithreaded users of ast.parse(). In 3.12 a change to when garbage collection can be triggered prevented the race condition from occurring. - gh-112943: Correctly compute end column offsets for multiline tokens in the tokenize module. Patch by Pablo Galindo - gh-112716: Fix SystemError in the import statement and in __reduce__() methods of builtin types when __builtins__ is not a dict. - gh-94606: Fix UnicodeEncodeError when email.message.get_payload() reads a message with a Unicode surrogate character and the message content is not well-formed for surrogateescape encoding. Patch by Sidney Markowitz. - Library - gh-114965: Update bundled pip to 24.0 - gh-114959: tarfile no longer ignores errors when trying to extract a directory on top of a file. - gh-109475: Fix support of explicit option value “–” in argparse (e.g. --option=--). - gh-110190: Fix ctypes structs with array on Windows ARM64 platform by setting MAX_STRUCT_SIZE to 32 in stgdict. Patch by Diego Russo - gh-113280: Fix a leak of open socket in rare cases when error occurred in ssl.SSLSocket creation. - gh-77749: email.policy.EmailPolicy.fold() now always encodes non-ASCII characters in headers if utf8 is false. - gh-114492: Make the result of termios.tcgetattr() reproducible on Alpine Linux. Previously it could leave a random garbage in some fields. - gh-113267: Revert changes in gh-106584 which made calls of TestResult methods startTest() and stopTest() unbalanced. - gh-75128: Ignore an OSError in asyncio.BaseEventLoop.create_server() when IPv6 is available but the interface cannot actually support it. - gh-114257: Dismiss the FileNotFound error in ctypes.util.find_library() and just return None on Linux. - gh-114328: The tty.setcbreak() and new tty.cfmakecbreak() no longer clears the terminal input ICRLF flag. This fixes a regression introduced in 3.12 that no longer matched how OSes define cbreak mode in their stty(1) manual pages. - gh-101438: Avoid reference cycle in ElementTree.iterparse. The iterator returned by ElementTree.iterparse may hold on to a file descriptor. The reference cycle prevented prompt clean-up of the file descriptor if the returned iterator was not exhausted. - gh-104522: OSError raised when run a subprocess now only has filename attribute set to cwd if the error was caused by a failed attempt to change the current directory. - gh-114149: Enum: correctly handle tuple subclasses in custom __new__. - gh-109534: Fix a reference leak in asyncio.selector_events.BaseSelectorEventLoop when SSL handshakes fail. Patch contributed by Jamie Phan. - gh-114077: Fix possible OverflowError in socket.socket.sendfile() when pass count larger than 2 GiB on 32-bit platform. - gh-114014: Fixed a bug in fractions.Fraction where an invalid string using d in the decimals part creates a different error compared to other invalid letters/characters. Patch by Jeremiah Gabriel Pascual. - gh-113951: Fix the behavior of tag_unbind() methods of tkinter.Text and tkinter.Canvas classes with three arguments. Previously, widget.tag_unbind(tag, sequence, funcid) destroyed the current binding for sequence, leaving sequence unbound, and deleted the funcid command. Now it removes only funcid from the binding for sequence, keeping other commands, and deletes the funcid command. It leaves sequence unbound only if funcid was the last bound command. - gh-113877: Fix tkinter method winfo_pathname() on 64-bit Windows. - gh-113661: unittest runner: Don’t exit 5 if tests were skipped. The intention of exiting 5 was to detect issues where the test suite wasn’t discovered at all. If we skipped tests, it was correctly discovered. - gh-113781: Silence unraisable AttributeError when warnings are emitted during Python finalization. - gh-112932: Restore the ability for zipfile to extractall from zip files with a “/” directory entry in them as is commonly added to zips by some wiki or bug tracker data exporters. - gh-113594: Fix UnicodeEncodeError in email when re-fold lines that contain unknown-8bit encoded part followed by non-unknown-8bit encoded part. - gh-113538: In asyncio.StreamReaderProtocol.connection_made(), there is callback that logs an error if the task wrapping the “connected callback” fails. This callback would itself fail if the task was cancelled. Prevent this by checking whether the task was cancelled first. If so, close the transport but don’t log an error. - gh-85567: Fix resource warnings for unclosed files in pickle and pickletools command line interfaces. - gh-101225: Increase the backlog for multiprocessing.connection.Listener objects created by multiprocessing.manager and multiprocessing.resource_sharer to significantly reduce the risk of getting a connection refused error when creating a multiprocessing.connection.Connection to them. - gh-113543: Make sure that webbrowser.MacOSXOSAScript sends webbrowser.open audit event. - gh-113028: When a second reference to a string appears in the input to pickle, and the Python implementation is in use, we are guaranteed that a single copy gets pickled and a single object is shared when reloaded. Previously, in protocol 0, when a string contained certain characters (e.g. newline) it resulted in duplicate objects. - gh-113421: Fix multiprocessing logger for %(filename)s. - gh-111784: Fix segfaults in the _elementtree module. Fix first segfault during deallocation of _elementtree.XMLParser instances by keeping strong reference to pyexpat module in module state for capsule lifetime. Fix second segfault which happens in the same deallocation process by keeping strong reference to _elementtree module in XMLParser structure for _elementtree module lifetime. - gh-113407: Fix import of unittest.mock when CPython is built without docstrings. - gh-113320: Fix regression in Python 3.12 where Protocol classes that were not marked as runtime-checkable would be unnecessarily introspected, potentially causing exceptions to be raised if the protocol had problematic members. Patch by Alex Waygood. - gh-113358: Fix rendering tracebacks for exceptions with a broken __getattr__. - gh-113214: Fix an AttributeError during asyncio SSL protocol aborts in SSL-over-SSL scenarios. - gh-113246: Update bundled pip to 23.3.2. - gh-113199: Make http.client.HTTPResponse.read1 and http.client.HTTPResponse.readline close IO after reading all data when content length is known. Patch by Illia Volochii. - gh-113188: Fix shutil.copymode() and shutil.copystat() on Windows. Previously they worked differenly if dst is a symbolic link: they modified the permission bits of dst itself rather than the file it points to if follow_symlinks is true or src is not a symbolic link, and did not modify the permission bits if follow_symlinks is false and src is a symbolic link. - gh-61648: Detect line numbers of properties in doctests. - gh-112559: signal.signal() and signal.getsignal() no longer call repr on callable handlers. asyncio.run() and asyncio.Runner.run() no longer call repr on the task results. Patch by Yilei Yang. - gh-110190: Fix ctypes structs with array on PPC64LE platform by setting MAX_STRUCT_SIZE to 64 in stgdict. Patch by Diego Russo. - gh-79429: Ignore FileNotFoundError when remove a temporary directory in the multiprocessing finalizer. - gh-81194: Fix a crash in socket.if_indextoname() with specific value (UINT_MAX). Fix an integer overflow in socket.if_indextoname() on 64-bit non-Windows platforms. - gh-112343: Improve handling of pdb convenience variables to avoid replacing string contents. - gh-111615: Fix a regression caused by a fix to gh-93162 whereby you couldn’t configure a QueueHandler without specifying handlers. - gh-111049: Fix crash during garbage collection of the io.BytesIO buffer object. - gh-110345: Show the Tcl/Tk patchlevel (rather than version) in tkinter._test(). - gh-109858: Protect zipfile from “quoted-overlap” zipbomb. It now raises BadZipFile when try to read an entry that overlaps with other entry or central directory. - gh-114440: On Windows, closing the connection writer when cleaning up a broken multiprocessing.Queue queue is now done for all queues, rather than only in concurrent.futures manager thread. This can prevent a deadlock when a multiprocessing worker process terminates without cleaning up. This completes the backport of patches by Victor Stinner and Serhiy Storchaka. - gh-38807: Fix race condition in trace. Instead of checking if a directory exists and creating it, directly call os.makedirs() with the kwarg exist_ok=True. - gh-75705: Set unixfrom envelope in mailbox.mbox and mailbox.MMDF. - gh-106233: Fix stacklevel in InvalidTZPathWarning during zoneinfo module import. - gh-105102: Allow ctypes.Union to be nested in ctypes.Structure when the system endianness is the opposite of the classes. - gh-104282: Fix null pointer dereference in lzma._decode_filter_properties() due to improper handling of BCJ filters with properties of zero length. Patch by Radislav Chugunov. - gh-102512: When os.fork() is called from a foreign thread (aka _DummyThread), the type of the thread in a child process is changed to _MainThread. Also changed its name and daemonic status, it can be now joined. - bpo-35928: io.TextIOWrapper now correctly handles the decoding buffer after read() and write(). - bpo-26791: shutil.move() now moves a symlink into a directory when that directory is the target of the symlink. This provides the same behavior as the mv shell command. The previous behavior raised an exception. Patch by Jeffrey Kintscher. - bpo-36959: Fix some error messages for invalid ISO format string combinations in strptime() that referred to directives not contained in the format string. Patch by Gordon P. Hemsley. - bpo-18060: Fixed a class inheritance issue that can cause segfaults when deriving two or more levels of subclasses from a base class of Structure or Union. - Documentation - gh-110746: Improved markup for valid options/values for methods ttk.treeview.column and ttk.treeview.heading, and for Layouts. - gh-95649: Document that the asyncio module contains code taken from v0.16.0 of the uvloop project, as well as the required MIT licensing information. - Tests - gh-109980: Fix test_tarfile_vs_tar in test_shutil for macOS, where system tar can include more information in the archive than shutil.make_archive. - gh-105089: Fix test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write test in AIX by doing a bitwise AND of 0xFFFF on mode , so that it will be in sync with zinfo.external_attr - bpo-40648: Test modes that file can get with chmod() on Windows. - Build - gh-112305: Fixed the check-clean-src step performed on out of tree builds to detect errant $(srcdir)/Python/frozen_modules/*.h files and recommend appropriate source tree cleanup steps to get a working build again. - gh-112867: Fix the build for the case that WITH_PYMALLOC_RADIX_TREE=0 set. - bpo-11102: The os.major(), os.makedev(), and os.minor() functions are now available on HP-UX v3. - bpo-36351: Do not set ipv6type when cross-compiling. - IDLE - gh-96905: In idlelib code, stop redefining built-ins ‘dict’ and ‘object’. - gh-72284: Improve the lists of features, editor key bindings, and shell key bingings in the IDLE doc. - gh-113903: Fix rare failure of test.test_idle, in test_configdialog. - gh-113729: Fix the “Help -> IDLE Doc” menu bug in 3.11.7 and 3.12.1. - gh-113269: Fix test_editor hang on macOS Catalina. - gh-112898: Fix processing unsaved files when quitting IDLE on macOS. - gh-103820: Revise IDLE bindings so that events from mouse button 4/5 on non-X11 windowing systems (i.e. Win32 and Aqua) are not mistaken for scrolling. - bpo-13586: Enter the selected text when opening the “Replace” dialog. - Tools/Demos - gh-109991: Update GitHub CI workflows to use OpenSSL 3.0.13 and multissltests to use 1.1.1w, 3.0.13, 3.1.5, and 3.2.1. - gh-115015: Fix a bug in Argument Clinic that generated incorrect code for methods with no parameters that use the METH_METHOD | METH_FASTCALL | METH_KEYWORDS calling convention. Only the positional parameter count was checked; any keyword argument passed would be silently accepted. - Refresh patches: - bpo-31046_ensurepip_honours_prefix.patch - fix_configure_rst.patch - no-skipif-doctests.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.3.0b1-localpath.patch - python-3.3.0b1-test-posix_fadvise.patch - skip-test_pyobject_freed_is_freed.patch - subprocess-raise-timeout.patch- Update patch fix_configure_rst.patch - Update to 3.12.1 (CVE-2023-6507, bsc#1217939): - Core and Builtins - gh-112125: Fix None.__ne__(None) returning NotImplemented instead of False - gh-112625: Fixes a bug where a bytearray object could be cleared while iterating over an argument in the bytearray.join() method that could result in reading memory after it was freed. - gh-105967: Workaround a bug in Apple’s macOS platform zlib library where zlib.crc32() and binascii.crc32() could produce incorrect results on multi-gigabyte inputs. Including when using zipfile on zips containing large data. - gh-112356: Stopped erroneously deleting a LOAD_NULL bytecode instruction when optimized twice. - gh-111058: Change coro.cr_frame/gen.gi_frame to return None after the coroutine/generator has been closed. This fixes a bug where getcoroutinestate() and getgeneratorstate() return the wrong state for a closed coroutine/generator. - gh-112388: Fix an error that was causing the parser to try to overwrite tokenizer errors. Patch by pablo Galindo - gh-112387: Fix error positions for decoded strings with backwards tokenize errors. Patch by Pablo Galindo - gh-112367: Avoid undefined behaviour when using the perf trampolines by not freeing the code arenas until shutdown. Patch by Pablo Galindo - gh-112243: Don’t include comments in f-string debug expressions. Patch by Pablo Galindo - gh-112266: Change docstrings of __dict__ and __weakref__. - gh-111654: Fix runtime crash when some error happens in opcode LOAD_FROM_DICT_OR_DEREF. - gh-109181: Speed up Traceback object creation by lazily compute the line number. Patch by Pablo Galindo - gh-102388: Fix a bug where iso2022_jp_3 and iso2022_jp_2004 codecs read out of bounds - gh-111366: Fix an issue in the codeop that was causing SyntaxError exceptions raised in the presence of invalid syntax to not contain precise error messages. Patch by Pablo Galindo - gh-111380: Fix a bug that was causing SyntaxWarning to appear twice when parsing if invalid syntax is encountered later. Patch by Pablo galindo - gh-94438: Fix a regression that prevented jumping across is None and is not None when debugging. Patch by Savannah Ostrowski. - gh-110938: Fix error messages for indented blocks with functions and classes with generic type parameters. Patch by Pablo Galindo - gh-109894: Fixed crash due to improperly initialized static MemoryError in subinterpreter. - gh-110782: Fix crash when typing.TypeVar is constructed with a keyword argument. Patch by Jelle Zijlstra. - gh-110696: Fix incorrect error message for invalid argument unpacking. Patch by Pablo Galindo - gh-110543: Fix regression in Python 3.12 where types.CodeType.replace() would produce a broken code object if called on a module or class code object that contains a comprehension. Patch by Jelle Zijlstra. - gh-110514: Add PY_THROW to sys.setprofile() events - gh-110455: Guard assert(tstate->thread_id > 0) with #ifndef HAVE_PTHREAD_STUBS. This allows for for pydebug builds to work under WASI which (currently) lacks thread support. - gh-110259: Correctly identify the format spec in f-strings (with single or triple quotes) that have multiple lines in the expression part and include a formatting spec. Patch by Pablo Galindo - gh-110237: Fix missing error checks for calls to PyList_Append in _PyEval_MatchClass. - gh-109889: Fix the compiler’s redundant NOP detection algorithm to skip over NOPs with no line number when looking for the next instruction’s lineno. - gh-109853: sys.path[0] is now set correctly for subinterpreters. - gh-105716: Subinterpreters now correctly handle the case where they have threads running in the background. Before, such threads would interfere with cleaning up and destroying them, as well as prevent running another script. - gh-109793: The main thread no longer exits prematurely when a subinterpreter is cleaned up during runtime finalization. The bug was a problem particularly because, when triggered, the Python process would always return with a 0 exitcode, even if it failed. - gh-109596: Fix some tokens in the grammar that were incorrectly marked as soft keywords. Also fix some repeated rule names and ensure that repeated rules are not allowed. Patch by Pablo Galindo - gh-109351: Fix crash when compiling an invalid AST involving a named (walrus) expression. - gh-109216: Fix possible memory leak in BUILD_MAP. - gh-109207: Fix a SystemError in __repr__ of symtable entry object. - gh-109179: Fix bug where the C traceback display drops notes from SyntaxError. - gh-109052: Use the base opcode when comparing code objects to avoid interference from instrumentation - gh-88943: Improve syntax error for non-ASCII character that follows a numerical literal. It now points on the invalid non-ASCII character, not on the valid numerical literal. - gh-106931: Statically allocated string objects are now interned globally instead of per-interpreter. This fixes a situation where such a string would only be interned in a single interpreter. Normal string objects are unaffected. - Library - gh-79325: Fix an infinite recursion error in tempfile.TemporaryDirectory() cleanup on Windows. - gh-112645: Remove deprecation error on passing onerror to shutil.rmtree(). - gh-112618: Fix a caching bug relating to typing.Annotated. Annotated[str, True] is no longer identical to Annotated[str, 1]. - gh-112334: Fixed a performance regression in 3.12’s subprocess on Linux where it would no longer use the fast-path vfork() system call when it should have due to a logic bug, instead always falling back to the safe but slower fork(). - Also fixed a related 3.12 security regression: If a value of extra_groups=[] was passed to subprocess.Popen or related APIs, the underlying setgroups(0, NULL) system call to clear the groups list would not be made in the child process prior to exec(). This has been assigned CVE-2023-6507. - This was identified via code inspection in the process of fixing the first bug. - gh-110190: Fix ctypes structs with array on Arm platform by setting MAX_STRUCT_SIZE to 32 in stgdict. Patch by Diego Russo. - gh-112578: Fix a spurious RuntimeWarning when executing the zipfile module. - gh-112509: Fix edge cases that could cause a key to be present in both the __required_keys__ and __optional_keys__ attributes of a typing.TypedDict. Patch by Jelle Zijlstra. - gh-112414: Fix regression in Python 3.12 where calling repr() on a module that had been imported using a custom loader could fail with AttributeError. Patch by Alex Waygood. - gh-112358: Revert change to struct.Struct initialization that broke some cases of subclassing. - gh-94722: Fix bug where comparison between instances of DocTest fails if one of them has None as its lineno. - gh-112105: Make readline.set_completer_delims() work with libedit - gh-111942: Fix SystemError in the TextIOWrapper constructor with non-encodable “errors” argument in non-debug mode. - gh-109538: Issue warning message instead of having RuntimeError be displayed when event loop has already been closed at StreamWriter.__del__(). - gh-111942: Fix crashes in io.TextIOWrapper.reconfigure() when pass invalid arguments, e.g. non-string encoding. - gh-111460: curses: restore wide character support (including curses.unget_wch() and get_wch()) on macOS, which was unavailable due to a regression in Python 3.12. - gh-103791: contextlib.suppress now supports suppressing exceptions raised as part of a BaseExceptionGroup, in addition to the recent support for ExceptionGroup. - gh-111804: Remove posix.fallocate() under WASI as the underlying posix_fallocate() is not available in WASI preview2. - gh-111841: Fix truncating arguments on an embedded null character in os.putenv() and os.unsetenv() on Windows. - gh-111541: Fix doctest for SyntaxError not-builtin subclasses. - gh-110894: Call loop exception handler for exceptions in client_connected_cb of asyncio.start_server() so that applications can handle it. Patch by Kumar Aditya. - gh-111531: Fix reference leaks in bind_class() and bind_all() methods of tkinter widgets. - gh-111356: Added io.text_encoding(), io.DEFAULT_BUFFER_SIZE, and io.IncrementalNewlineDecoder to io.__all__. - gh-111342: Fixed typo in math.sumprod(). - gh-68166: Remove mention of not supported “vsapi” element type in tkinter.ttk.Style.element_create(). Add tests for element_create() and other ttk.Style methods. Add examples for element_create() in the documentation. - gh-75666: Fix the behavior of tkinter widget’s unbind() method with two arguments. Previously, widget.unbind(sequence, funcid) destroyed the current binding for sequence, leaving sequence unbound, and deleted the funcid command. Now it removes only funcid from the binding for sequence, keeping other commands, and deletes the funcid command. It leaves sequence unbound only if funcid was the last bound command. - gh-79033: Another attempt at fixing asyncio.Server.wait_closed(). It now blocks until both conditions are true: the server is closed, and there are no more active connections. (This means that in some cases where in 3.12.0 this function would incorrectly have returned immediately, it will now block; in particular, when there are no active connections but the server hasn’t been closed yet.) - gh-111295: Fix time not checking for errors when initializing. - gh-111253: Add error checking during _socket module init. - gh-111251: Fix _blake2 not checking for errors when initializing. - gh-111174: Fix crash in io.BytesIO.getbuffer() called repeatedly for empty BytesIO. - gh-111187: Postpone removal version for locale.getdefaultlocale() to Python 3.15. - gh-111159: Fix doctest output comparison for exceptions with notes. - gh-110910: Fix invalid state handling in asyncio.TaskGroup and asyncio.Timeout. They now raise proper RuntimeError if they are improperly used and are left in consistent state after this. - gh-111092: Make turtledemo run without default root enabled. - gh-110488: Fix a couple of issues in pathlib.PurePath.with_name(): a single dot was incorrectly considered a valid name, and in PureWindowsPath, a name with an NTFS alternate data stream, like a:b, was incorrectly considered invalid. - gh-110392: Fix tty.setraw() and tty.setcbreak(): previously they returned partially modified list of the original tty attributes. tty.cfmakeraw() and tty.cfmakecbreak() now make a copy of the list of special characters before modifying it. - gh-110590: Fix a bug in _sre.compile() where TypeError would be overwritten by OverflowError when the code argument was a list of non-ints. - gh-65052: Prevent pdb from crashing when trying to display undisplayable objects - gh-110519: Deprecation warning about non-integer number in gettext now alwais refers to the line in the user code where gettext function or method is used. Previously it could refer to a line in gettext code. - gh-110395: Ensure that select.kqueue() objects correctly appear as closed in forked children, to prevent operations on an invalid file descriptor. - gh-110378: contextmanager() and asynccontextmanager() context managers now close an invalid underlying generator object that yields more then one value. - gh-110365: Fix termios.tcsetattr() bug that was overwritting existing errors during parsing integers from term list. - gh-109653: Fix a Python 3.12 regression in the import time of random. Patch by Alex Waygood. - gh-110196: Add __reduce__ method to IPv6Address in order to keep scope_id - gh-110036: On Windows, multiprocessing Popen.terminate() now catchs PermissionError and get the process exit code. If the process is still running, raise again the PermissionError. Otherwise, the process terminated as expected: store its exit code. Patch by Victor Stinner. - gh-110038: Fixed an issue that caused KqueueSelector.select() to not return all the ready events in some cases when a file descriptor is registered for both read and write. - gh-109631: re functions such as re.findall(), re.split(), re.search() and re.sub() which perform short repeated matches can now be interrupted by user. - gh-109747: Improve errors for unsupported look-behind patterns. Now re.error is raised instead of OverflowError or RuntimeError for too large width of look-behind pattern. - gh-109818: Fix reprlib.recursive_repr() not copying __type_params__ from decorated function. - gh-109047: concurrent.futures: The executor manager thread now catches exceptions when adding an item to the call queue. During Python finalization, creating a new thread can now raise RuntimeError. Catch the exception and call terminate_broken() in this case. Patch by Victor Stinner. - gh-109782: Ensure the signature of os.path.isdir() is identical on all platforms. Patch by Amin Alaee. - gh-109590: shutil.which() will prefer files with an extension in PATHEXT if the given mode includes os.X_OK on win32. If no PATHEXT match is found, a file without an extension in PATHEXT can be returned. This change will have shutil.which() act more similarly to previous behavior in Python 3.11. - gh-109786: Fix possible reference leaks and crash when re-enter the __next__() method of itertools.pairwise. - gh-109593: Avoid deadlocking on a reentrant call to the multiprocessing resource tracker. Such a reentrant call, though unlikely, can happen if a GC pass invokes the finalizer for a multiprocessing object such as SemLock. - gh-109613: Fix os.stat() and os.DirEntry.stat(): check for exceptions. Previously, on Python built in debug mode, these functions could trigger a fatal Python error (and abort the process) when a function succeeded with an exception set. Patch by Victor Stinner. - gh-109375: The pdb alias command now prevents registering aliases without arguments. - gh-107219: Fix a race condition in concurrent.futures. When a process in the process pool was terminated abruptly (while the future was running or pending), close the connection write end. If the call queue is blocked on sending bytes to a worker process, closing the connection write end interrupts the send, so the queue can be closed. Patch by Victor Stinner. - gh-50644: Attempts to pickle or create a shallow or deep copy of codecs streams now raise a TypeError. Previously, copying failed with a RecursionError, while pickling produced wrong results that eventually caused unpickling to fail with a RecursionError. - gh-108987: Fix _thread.start_new_thread() race condition. If a thread is created during Python finalization, the newly spawned thread now exits immediately instead of trying to access freed memory and lead to a crash. Patch by Victor Stinner. - gh-108791: Improved error handling in pdb command line interface, making it produce more concise error messages. - gh-105829: Fix concurrent.futures.ProcessPoolExecutor deadlock - gh-106584: Fix exit code for unittest if all tests are skipped. Patch by Egor Eliseev. - gh-102956: Fix returning of empty byte strings after seek in zipfile module - gh-84867: unittest.TestLoader no longer loads test cases from exact unittest.TestCase and unittest.FunctionTestCase classes. - gh-91133: Fix a bug in tempfile.TemporaryDirectory cleanup, which now no longer dereferences symlinks when working around file system permission errors. - gh-73561: Omit the interface scope from an IPv6 address when used as Host header by http.client. - gh-86826: zipinfo now supports the full range of values in the TZ string determined by RFC 8536 and detects all invalid formats. Both Python and C implementations now raise exceptions of the same type on invalid data. - bpo-43153: On Windows, tempfile.TemporaryDirectory previously masked a PermissionError with NotADirectoryError during directory cleanup. It now correctly raises PermissionError if errors are not ignored. Patch by Andrei Kulakov and Ken Jin. - bpo-35332: The shutil.rmtree() function now ignores errors when calling os.close() when ignore_errors is True, and os.close() no longer retried after error. - bpo-41422: Fixed memory leaks of pickle.Pickler and pickle.Unpickler involving cyclic references via the internal memo mapping. - bpo-40262: The ssl.SSLSocket.recv_into() method no longer requires the buffer argument to implement __len__ and supports buffers with arbitrary item size. - Documentation - gh-111699: Relocate smtpd deprecation notice to its own section rather than under locale in What’s New in Python 3.12 document - gh-108826: dis module command-line interface is now mentioned in documentation. Test- s - gh-112769: The tests now correctly compare zlib version when zlib.ZLIB_RUNTIME_VERSION contains non-integer suffixes. For example zlib-ng defines the version as 1.3.0.zlib-ng. - gh-110367: Make regrtest --verbose3 option compatible with - -huntrleaks -jN options. The ./python -m test -j1 -R 3:3 - -verbose3 command now works as expected. Patch by Victor Stinner. - gh-111165: Remove no longer used functions run_unittest() and run_doctest() from the test.support module. - gh-110932: Fix regrtest if the SOURCE_DATE_EPOCH environment variable is defined: use the variable value as the random seed. Patch by Victor Stinner. - gh-110995: test_gdb: Fix detection of gdb built without Python scripting support. Patch by Victor Stinner. - gh-110918: Test case matching patterns specified by options - -match, --ignore, --matchfile and --ignorefile are now tested in the order of specification, and the last match determines whether the test case be run or ignored. - gh-110647: Fix test_stress_modifying_handlers() of test_signal. Patch by Victor Stinner. - gh-103053: Fix test_tools.test_freeze on FreeBSD: run “make distclean” instead of “make clean” in the copied source directory to remove also the “python” program. Patch by Victor Stinner. - gh-110167: Fix a deadlock in test_socket when server fails with a timeout but the client is still running in its thread. Don’t hold a lock to call cleanup functions in doCleanups(). One of the cleanup function waits until the client completes, whereas the client could deadlock if it called addCleanup() in such situation. Patch by Victor Stinner. - gh-110388: Add tests for tty. - gh-81002: Add tests for termios. - gh-110267: Add tests for pickling and copying PyStructSequence objects. Patched by Xuehai Pan. - gh-110031: Skip test_threading tests using thread+fork if Python is built with Address Sanitizer (ASAN). Patch by Victor Stinner. - gh-110088: Fix test_asyncio timeouts: don’t measure the maximum duration, a test should not measure a CI performance. Only measure the minimum duration when a task has a timeout or delay. Add CLOCK_RES to test_asyncio.utils. Patch by Victor Stinner. - gh-109974: Fix race conditions in test_threading lock tests. Wait until a condition is met rather than using time.sleep() with a hardcoded number of seconds. Patch by Victor Stinner. - gh-110033: Fix test_interprocess_signal() of test_signal. Make sure that the subprocess.Popen object is deleted before the test raising an exception in a signal handler. Otherwise, Popen.__del__() can get the exception which is logged as Exception ignored in: ... and the test fails. Patch by Victor Stinner. - gh-109594: Fix test_timeout() of test_concurrent_futures.test_wait. Remove the future which may or may not complete depending if it takes longer than the timeout ot not. Keep the second future which does not complete before wait() timeout. Patch by Victor Stinner. - gh-109972: Split test_gdb.py file into a test_gdb package made of multiple tests, so tests can now be run in parallel. Patch by Victor Stinner. - gh-103053: Skip test_freeze_simple_script() of test_tools.test_freeze if Python is built with ./configure - -enable-optimizations, which means with Profile Guided Optimization (PGO): it just makes the test too slow. The freeze tool is tested by many other CIs with other (faster) compiler flags. Patch by Victor Stinner. - gh-109580: Skip test_perf_profiler if Python is built with ASAN, MSAN or UBSAN sanitizer. Python does crash randomly in this test on such build. Patch by Victor Stinner. - gh-104736: Fix test_gdb on Python built with LLVM clang 16 on Linux ppc64le (ex: Fedora 38). Search patterns in gdb “bt” command output to detect when gdb fails to retrieve the traceback. For example, skip a test if Backtrace stopped: frame did not save the PC is found. Patch by Victor Stinner. - gh-108927: Fixed order dependence in running tests in the same process when a test that has submodules (e.g. test_importlib) follows a test that imports its submodule (e.g. test_importlib.util) and precedes a test (e.g. test_unittest or test_compileall) that uses that submodule. - Build - gh-112088: Add Tools/build/regen-configure.sh script to regenerate the configure with an Ubuntu container image. The quay.io/tiran/cpython_autoconf:271 container image (tiran/cpython_autoconf) is no longer used. Patch by Victor Stinner. - gh-111046: For wasi-threads, memory is now exported to fix compatibility issues with some wasm runtimes. - gh-103053: “make check-clean-src” now also checks if the “python” program is found in the source directory: fail with an error if it does exist. Patch by Victor Stinner. - gh-109191: Fix compile error when building with recent versions of libedit. - IDLE - bpo-35668: Add docstrings to the IDLE debugger module. Fix two bugs: initialize Idb.botframe (should be in Bdb); in Idb.in_rpc_code, check whether prev_frame is None before trying to use it. Greatly expand test_debugger. - C API - gh-106560: Fix redundant declarations in the public C API. Declare PyBool_Type and PyLong_Type only once. Patch by Victor Stinner. - gh-112438: Fix support of format units “es”, “et”, “es#”, and “et#” in nested tuples in PyArg_ParseTuple()-like functions. - gh-109521: PyImport_GetImporter() now sets RuntimeError if it fails to get sys.path_hooks or sys.path_importer_cache or they are not list and dict correspondingly. Previously it could return NULL without setting error in obscure cases, crash or raise SystemError if these attributes have wrong type.- Remove F00251-change-user-install-location.patch, that patch breaks the python-rpm-macros usage with multibuild- Update to the final release of 3.12.0: Python 3.12 is the latest stable release of the Python programming language, with a mix of changes to the language and the standard library. The library changes focus on cleaning up deprecated APIs, usability, and correctness. Of note, the distutils package has been removed from the standard library. Filesystem support in os and pathlib has seen a number of improvements, and several modules have better performance. The language changes focus on usability, as f-strings have had many limitations removed and ‘Did you mean …’ suggestions continue to improve. The new type parameter syntax and type statement improve ergonomics for using generic types and type aliases with static type checkers. This article doesn’t attempt to provide a complete specification of all new features, but instead gives a convenient overview. For full details, you should refer to the documentation, such as the Library Reference and Language Reference. If you want to understand the complete implementation and design rationale for a change, refer to the PEP for a particular new feature; but note that PEPs usually are not kept up-to-date once a feature has been fully implemented. - New syntax features: - PEP 695, type parameter syntax and the type statement - New grammar features: - PEP 701, f-strings in the grammar - Interpreter improvements: - PEP 684, a unique per-interpreter GIL - PEP 669, low impact monitoring - Improved ‘Did you mean …’ suggestions for NameError, ImportError, and SyntaxError exceptions - Python data model improvements: - PEP 688, using the buffer protocol from Python - Significant improvements in the standard library: - The pathlib.Path class now supports subclassing - The os module received several improvements for Windows support - A command-line interface has been added to the sqlite3 module - isinstance() checks against runtime-checkable protocols enjoy a speed up of between two and 20 times - The asyncio package has had a number of performance improvements, with some benchmarks showing a 75% speed up. - A command-line interface has been added to the uuid module - Due to the changes in PEP 701, producing tokens via the tokenize module is up to up to 64% faster. - Security improvements: - Replace the builtin hashlib implementations of SHA1, SHA3, SHA2-384, SHA2-512, and MD5 with formally verified code from the HACL* project. These builtin implementations remain as fallbacks that are only used when OpenSSL does not provide them. - C API improvements: - PEP 697, unstable C API tier - PEP 683, immortal objects - CPython implementation improvements: - PEP 709, comprehension inlining - CPython support for the Linux perf profiler - Implement stack overflow protection on supported platforms - New typing features: - PEP 692, using TypedDict to annotate **kwargs - PEP 698, typing.override() decorator - Important deprecations, removals or restrictions: - PEP 623: Remove wstr from Unicode objects in Python’s C API, reducing the size of every str object by at least 8 bytes. - PEP 632: Remove the distutils package. See the migration guide for advice replacing the APIs it provided. The third-party Setuptools package continues to provide distutils, if you still require it in Python 3.12 and beyond. - gh-95299: Do not pre-install setuptools in virtual environments created with venv. This means that distutils, setuptools, pkg_resources, and easy_install will no longer available by default; to access these run pip install setuptools in the activated virtual environment. - The asynchat, asyncore, and imp modules have been removed, along with several unittest.TestCase method aliases. - Refresh bluez-devel-vendor.tar.xz from bluez-devel 5.69-1.1.- Update to 3.12.0rc3: - Core and Builtins - gh-109496: On a Python built in debug mode, Py_DECREF() now calls _Py_NegativeRefcount() if the object is a dangling pointer to deallocated memory: memory filled with 0xDD “dead byte” by the debug hook on memory allocators. The fix is to check the reference count before checking for _Py_IsImmortal(). Patch by Victor Stinner. - gh-109371: Deopted instructions correctly for tool initialization and modified the incorrect assertion in instrumentation, when a previous tool already sets INSTRUCTION events - gh-105658: Fix bug where the line trace of an except block ending with a conditional includes an excess event with the line of the conditional expression. - gh-109219: Fix compiling type param scopes that use a name which is also free in an inner scope. - gh-109341: Fix crash when compiling an invalid AST involving a ast.TypeAlias. - gh-109195: Fix source location for the LOAD_* instruction preceding a LOAD_SUPER_ATTR to load the super global (or shadowing variable) so that it encompasses only the name super and not the following parentheses. - gh-109118: Disallow nested scopes (lambdas, generator expressions, and comprehensions) within PEP 695 annotation scopes that are nested within classes. - gh-109114: Relax the detection of the error message for invalid lambdas inside f-strings to not search for arbitrary replacement fields to avoid false positives. Patch by Pablo Galindo - gh-109118: Fix interpreter crash when a NameError is raised inside the type parameters of a generic class. - gh-108976: Fix crash that occurs after de-instrumenting a code object in a monitoring callback. - gh-108732: Make iteration variables of module- and class-scoped comprehensions visible to pdb and other tools that use frame.f_locals again. - gh-108959: Fix caret placement for error locations for subscript and binary operations that involve non-semantic parentheses and spaces. Patch by Pablo Galindo - Library - gh-108682: Enum: require names=() or type=... to create an empty enum using the functional syntax. - gh-108843: Fix an issue in ast.unparse() when unparsing f-strings containing many quote types. - Documentation - gh-102823: Document the return type of x // y when x and y have type float. - Tests - gh-109396: Fix test_socket.test_hmac_sha1() in FIPS mode. Use a longer key: FIPS mode requires at least of at least 112 bits. The previous key was only 32 bits. Patch by Victor Stinner. - gh-104736: Fix test_gdb on Python built with LLVM clang 16 on Linux ppc64le (ex: Fedora 38). Search patterns in gdb “bt” command output to detect when gdb fails to retrieve the traceback. For example, skip a test if Backtrace stopped: frame did not save the PC is found. Patch by Victor Stinner. - gh-109237: Fix test_site.test_underpth_basic() when the working directory contains at least one non-ASCII character: encode the ._pth file to UTF-8 and enable the UTF-8 Mode to use UTF-8 for the child process stdout. Patch by Victor Stinner. - gh-109230: Fix test_pyexpat.test_exception(): it can now be run from a directory different than Python source code directory. Before, the test failed in this case. Skip the test if Modules/pyexpat.c source is not available. Skip also the test on Python implementations other than CPython. Patch by Victor Stinner. - gh-109015: Fix test_asyncio, test_imaplib and test_socket tests on FreeBSD if the TCP blackhole is enabled (sysctl net.inet.tcp.blackhole). Skip the few tests which failed with ETIMEDOUT which such non standard configuration. Currently, the FreeBSD GCP image enables TCP and UDP blackhole (sysctl net.inet.tcp.blackhole=2 and sysctl net.inet.udp.blackhole=1). Patch by Victor Stinner. - gh-91960: Skip test_gdb if gdb is unable to retrieve Python frame objects: if a frame is . When Python is built with “clang -Og”, gdb can fail to retrive the frame parameter of _PyEval_EvalFrameDefault(). In this case, tests like py_bt() are likely to fail. Without getting access to Python frames, python-gdb.py is mostly clueless on retrieving the Python traceback. Moreover, test_gdb is no longer skipped on macOS if Python is built with Clang. Patch by Victor Stinner. - gh-108962: Skip test_tempfile.test_flags() if chflags() fails with “OSError: [Errno 45] Operation not supported” (ex: on FreeBSD 13). Patch by Victor Stinner. - gh-108851: Fix test_tomllib recursion tests for WASI buildbots: reduce the recursion limit and compute the maximum nested array/dict depending on the current available recursion limit. Patch by Victor Stinner. - gh-108851: Add get_recursion_available() and get_recursion_depth() functions to the test.support module. Patch by Victor Stinner. - gh-108834: Add --fail-rerun option option to regrtest: if a test failed when then passed when rerun in verbose mode, exit the process with exit code 2 (error), instead of exit code 0 (success). Patch by Victor Stinner. - gh-108834: Rename regrtest --verbose2 option (-w) to --rerun. Keep --verbose2 as a deprecated alias. Patch by Victor Stinner. - gh-108834: When regrtest reruns failed tests in verbose mode (./python -m test --rerun), tests are now rerun in fresh worker processes rather than being executed in the main process. If a test does crash or is killed by a timeout, the main process can detect and handle the killed worker process. Tests are rerun in parallel if the -jN option is used to run tests in parallel. Patch by Victor Stinner. - gh-103186: Suppress and assert expected RuntimeWarnings in test_sys_settrace.py - Build - gh-108740: Fix a race condition in make regen-all. The deepfreeze.c source and files generated by Argument Clinic are now generated or updated before generating “global objects”. Previously, some identifiers may miss depending on the order in which these files were generated. Patch by Victor Stinner. - Python 3.12.0 release candidate 2: - Security - gh-108310: Fixed an issue where instances of ssl.SSLSocket were vulnerable to a bypass of the TLS handshake and included protections (like certificate verification) and treating sent unencrypted data as if it were post-handshake TLS encrypted data. Security issue reported as CVE-2023-40217 by Aapo Oksman. Patch by Gregory P. Smith. - gh-107774: PEP 669 specifies that sys.monitoring.register_callback will generate an audit event. Pre-releases of Python 3.12 did not generate the audit event. This is now fixed. - Core and Builtins - gh-108520: Fix multiprocessing.synchronize.SemLock.__setstate__() to properly initialize multiprocessing.synchronize.SemLock._is_fork_ctx. This fixes a regression when passing a SemLock accross nested processes. - Rename multiprocessing.synchronize.SemLock.is_fork_ctx to multiprocessing.synchronize.SemLock._is_fork_ctx to avoid exposing it as public API. - gh-108654: Restore locals shadowed by an inlined comprehension if the comprehension raises an exception. - gh-108487: Change an assert that would cause a spurious crash in a devious case that should only trigger deoptimization. - gh-106176: Use a WeakValueDictionary to track the lists containing the modules each thread is currently importing. This helps avoid a reference leak from keeping the list around longer than necessary. Weakrefs are used as GC can’t interrupt the cleanup. - gh-107901: Fix missing line number on JUMP_BACKWARD at the end of a for loop. - gh-108390: Raise an exception when setting a non-local event (RAISE, EXCEPTION_HANDLED, etc.) in sys.monitoring.set_local_events. - Fixes crash when tracing in recursive calls to Python classes. - gh-91051: Fix abort / segfault when using all eight type watcher slots, on platforms where char is signed by default. - gh-107724: In pre-release versions of 3.12, up to rc1, the sys.monitoring callback function for the PY_THROW event was missing the third, exception argument. That is now fixed. - gh-107080: Trace refs builds (--with-trace-refs) were crashing when used with isolated subinterpreters. The problematic global state has been isolated to each interpreter. Other fixing the crashes, this change does not affect users. - gh-77377: Ensure that multiprocessing synchronization objects created in a fork context are not sent to a different process created in a spawn context. This changes a segfault into an actionable RuntimeError in the parent process. - Library - gh-108469: ast.unparse() now supports new f-string syntax introduced in Python 3.12. Note that the f-string quotes are reselected for simplicity under the new syntax. (Patch by Steven Sun) - gh-108682: Enum: raise TypeError if super().__new__() is called from a custom __new__. - gh-108295: Fix crashes related to use of weakrefs on typing.TypeVar. - gh-64662: Fix support for virtual tables in sqlite3.Connection.iterdump(). Patch by Aviv Palivoda. - gh-108111: Fix a regression introduced in gh-101251 for 3.12, resulting in an incorrect offset calculation in gzip.GzipFile.seek(). - gh-105736: Harmonized the pure Python version of OrderedDict with the C version. Now, both versions set up their internal state in __new__. Formerly, the pure Python version did the set up in __init__. - gh-108083: Fix bugs in the constructor of sqlite3.Connection and sqlite3.Connection.close() where exceptions could be leaked. Patch by Erlend E. Aasland. - gh-107963: Fix multiprocessing.set_forkserver_preload() to check the given list of modules names. Patch by Dong-hee Na. - gh-106242: Fixes os.path.normpath() to handle embedded null characters without truncating the path. - gh-107913: Fix possible losses of errno and winerror values in OSError exceptions if they were cleared or modified by the cleanup code before creating the exception object. - gh-107845: tarfile.data_filter() now takes the location of symlinks into account when determining their target, so it will no longer reject some valid tarballs with LinkOutsideDestinationError. - gh-107805: Fix signatures of module-level generated functions in turtle. - gh-107715: Fix doctest.DocTestFinder.find() in presence of class names with special characters. Patch by Gertjan van Zwieten. - gh-100814: Passing a callable object as an option value to a Tkinter image now raises the expected TclError instead of an AttributeError. - gh-106684: Close asyncio.StreamWriter when it is not closed by application leading to memory leaks. Patch by Kumar Aditya. - gh-107396: tarfiles; Fixed use before assignment of self.exception for gzip decompression - gh-106052: re module: fix the matching of possessive quantifiers in the case of a subpattern containing backtracking. - gh-100061: Fix a bug that causes wrong matches for regular expressions with possessive qualifier. - gh-99203: Restore following CPython <= 3.10.5 behavior of shutil.make_archive(): do not create an empty archive if root_dir is not a directory, and, in that case, raise FileNotFoundError or NotADirectoryError regardless of format choice. Beyond the brought-back behavior, the function may now also raise these exceptions in dry_run mode. - Documentation - gh-105052: Update timeit doc to specify that time in seconds is just the default. - Tests - gh-89392: Removed support of test_main() function in tests. They now always use normal unittest test runner. - gh-108388: Convert test_concurrent_futures to a package of 7 sub-tests. Patch by Victor Stinner. - gh-108388: Split test_multiprocessing_fork, test_multiprocessing_forkserver and test_multiprocessing_spawn into test packages. Each package is made of 4 sub-tests: processes, threads, manager and misc. It allows running more tests in parallel and so reduce the total test duration. Patch by Victor Stinner. - gh-105776: Fix test_cppext when the C compiler command -std=c11 option: remove -std= options from the compiler command. Patch by Victor Stinner. - gh-107178: Add the C API test for functions in the Mapping Protocol, the Sequence Protocol and some functions in the Object Protocol. - Build - gh-63760: Fix Solaris build: no longer redefine the gethostname() function. Solaris defines the function since 2005. Patch by Victor Stinner, original patch by Jakub Kulík. - gh-107814: When calling find_python.bat with -q it did not properly silence the output of nuget. That is now fixed. - Windows - gh-107565: Update Windows build to use OpenSSL 3.0.10. - gh-106242: Fixes realpath() to behave consistently when passed a path containing an embedded null character on Windows. In strict mode, it now raises OSError instead of the unexpected ValueError, and in non-strict mode will make the path absolute. - gh-106844: Fix integer overflow and truncating by the null character in _winapi.LCMapStringEx() which affects ntpath.normcase(). - macOS - gh-107565: Update macOS installer to use OpenSSL 3.0.10. - Tools/Demos - gh-107565: Update multissltests and GitHub CI workflows to use OpenSSL 1.1.1v, 3.0.10, and 3.1.2. - gh-95065: Argument Clinic now supports overriding automatically generated signature by using directive @text_signature. - C API - gh-107916: C API functions PyErr_SetFromErrnoWithFilename(), PyErr_SetExcFromWindowsErrWithFilename() and PyErr_SetFromWindowsErrWithFilename() save now the error code before calling PyUnicode_DecodeFSDefault(). - gh-107915: Such C API functions as PyErr_SetString(), PyErr_Format(), PyErr_SetFromErrnoWithFilename() and many others no longer crash or ignore errors if it failed to format the error message or decode the filename. Instead, they keep a corresponding error. - gh-107810: Improve DeprecationWarning for uses of PyType_Spec with metaclasses that have custom tp_new.- restrict PEP668 to ALP/Tumbleweed- Refresh all patches - Drop Revert-gh105127-left-tests.patch, in upstream now - Update to 3.12.0rc1: - Reverted the :mod:`email.utils` security improvement change released in 3.12beta4 that unintentionally caused :mod:`email.utils.getaddresses` to fail to parse email addresses with a comma in the quoted name field. See :gh:`106669`. - Start initializing ob_digit during creation of :c:type:`PyLongObject` objects. Patch by Illia Volochii. - Increase C recursion limit for functions other than the main interpreter from 800 to 1500. This should allow functions like list.__repr__ and json.dumps to handle all the inputs that they could prior to 3.12 - Fix potential unaligned memory access on C APIs involving returned sequences of char * pointers within the :mod:`grp` and :mod:`socket` modules. These were revealed using a - fsaniziter=alignment build on ARM macOS. Patch by Christopher Chavez. - Add the exception as the third argument to PY_UNIND callbacks in sys.monitoring. This makes the PY_UNWIND callback consistent with the other exception hanlding callbacks. - Raise a ValueError when a monitoring callback funtion returns DISABLE for events that cannot be disabled locally. - Add a RERAISE event to sys.monitoring, which occurs when an exception is reraised, either explicitly by a plain raise statement, or implicitly in an except or finally block. - Unsupported modules now always fail to be imported. - Fix classmethod-style :func:`super` method calls (i.e., where the second argument to :func:`super`, or the implied second argument drawn from self/cls in the case of zero-arg super, is a type) when the target of the call is not a classmethod. - Python no longer crashes due an infrequent race when initialzing per-interpreter interned strings. The crash would manifest when the interpreter was finalized. - Python no longer crashes due to an infrequent race in setting Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors (both deprecated), when simultaneously initializing two isolated subinterpreters. Now they are only set during runtime initialization. - Fix a segmentation fault caused by a use-after-free bug in frame_dealloc when the trashcan delays the deallocation of a PyFrameObject. - No longer suppress arbitrary errors in the __annotations__ getter and setter in the type and module types. - Propagate frozen_modules to multiprocessing spawned process interpreters. - Prevent out-of-bounds memory access during mmap.find() calls. - Seems that in some conditions, OpenSSL will return SSL_ERROR_SYSCALL instead of SSL_ERROR_SSL when a certification verification has failed, but the error parameters will still contain ERR_LIB_SSL and SSL_R_CERTIFICATE_VERIFY_FAILED. We are now detecting this situation and raising the appropiate ssl.SSLCertVerificationError. Patch by Pablo Galindo - Fix :func:`types.get_original_bases` to only return :attr:`!__orig_bases__` if it is present on cls directly. Patch by James Hilton-Balfe. - Prevent memory leak and use-after-free when using pointers to pointers with ctypes - Make :func:`gettext.pgettext` search plural definitions when translation is not found. - Document behavior of :func:`shutil.disk_usage` for non-mounted filesystems on Unix. - Do not report MultipartInvariantViolationDefect defect when the :class:`email.parser.Parser` class is used to parse emails with headersonly=True. - Fix invalid result from :meth:`PurePath.relative_to` method when attempting to walk a ".." segment in other with walk_up enabled. A :exc:`ValueError` exception is now raised in this case. - Fix potential missing NULL check of d2i_SSL_SESSION result in _ssl.c. - Update the bundled copy of pip to version 23.2.1. - Fixed several bugs in zipfile.Path, including: in Path.match`, Windows separators are no longer honored (and never were meant to be); Fixed ``name/suffix/suffixes/stem operations when no filename is present and the Path is not at the root of the zipfile; Reworked glob for performance and more correct matching behavior. - Add __copy__ and __deepcopy__ in :mod:`enum` - Revert a change to :func:`colorsys.rgb_to_hls` that caused division by zero for certain almost-white inputs. Patch by Terry Jan Reedy. - Instances of :class:`typing.TypeVar`, :class:`typing.ParamSpec`, :class:`typing.ParamSpecArgs`, :class:`typing.ParamSpecKwargs`, and :class:`typing.TypeVarTuple` once again support weak references, fixing a regression introduced in Python 3.12.0 beta 1. Patch by Jelle Zijlstra. - Detect possible memory allocation failure in the libtommath function :c:func:`mp_init` used by the _tkinter module. - Fix crash when calling repr with a manually constructed SignalDict object. Patch by Charlie Zhao. - Change the default return value of :meth:`http.client.HTTPConnection.get_proxy_response_headers` to be None and not {}. - Ensure gettext(msg) retrieve translations even if a plural form exists. In other words: gettext(msg) == ngettext(msg, '', 1). - Add documentation for :c:type:`PyInterpreterConfig` and :c:func:`Py_NewInterpreterFromConfig`. Also clarify some of the nearby docs relative to per-interpreter GIL. - Document the :mod:`curses` module variables :const:`~curses.LINES` and :const:`~curses.COLS`. - Add a number of standard external names to nitpick_ignore. - Add documentation on how to localize the :mod:`argparse` module. - test_logging: Fix test_udp_reconnection() by increasing the timeout from 100 ms to 5 minutes (LONG_TIMEOUT). Patch by Victor Stinner. - test_capi: Fix test_no_FatalError_infinite_loop() to no longer write a coredump, by using test.support.SuppressCrashReport. Patch by Victor Stinner. - Avoid creating a reference to the test object in :meth:`~unittest.TestResult.collectedDurations`. - Moved tests for zipfile.Path into Lib/test/test_zipfile/_path. Made zipfile._path a package. - Check for linux/limits.h before including it in Modules/posixmodule.c. - Detect MPI compilers in :file:`configure`. - Add experimental wasi-threads support. Patch by Takashi Yamamoto. - Update Windows build to use OpenSSL 3.0.9 - Update macOS installer to use OpenSSL 3.0.9. - Fix bugs in the Argument Clinic destination clear command; the destination buffers would never be cleared, and the destination directive parser would simply continue to the fault handler after processing the command. Patch by Erlend E. Aasland. - freeze now fetches CONFIG_ARGS from the original CPython instance the Makefile uses to call utility scripts. Patch by Ijtaba Hussain. - :c:func:`PyModule_AddObjectRef` is now only available in the limited API version 3.10 or later.- add externally_managed.in to label this build as PEP-668 managed- IT MEANS THAT bsc#1210638 STILL HAS NOT BEEN FIXED! - Add Revert-gh105127-left-tests.patch (gh#python/cpython!106941) partially reverting CVE-2023-27043-email-parsing-errors.patch, because of the regression in gh#python/cpython#106669.- Update to 3.12.0b4: - gh-issue-102988: CVE-2023-27043 (bsc#1210638): Prevent :func:`email.utils.parseaddr` and :func:`email.utils.getaddresses` from returning the realname portion of an invalid RFC2822 email header in the email address portion of the 2-tuple returned after being parsed by :class:`email._parseaddr.AddressList`. - gh-issue-106396: When the format specification of an f-string expression is empty, the parser now generates an empty :class:`ast.JoinedStr` node for it instead of an one-element :class:`ast.JoinedStr` with an empty string :class:`ast.Constant`. - gh-issue-106145: Make ``end_lineno`` and ``end_col_offset`` required on ``type_param`` ast nodes. - gh-issue-105979: Fix crash in :func:`!_imp.get_frozen_object` due to improper exception handling. - gh-issue-98931: Ensure custom :exc:`SyntaxError` error messages are raised for invalid imports with multiple targets. Patch by Pablo Galindo - gh-issue-105908: Fixed bug where :gh:`99111` breaks future import ``barry_as_FLUFL`` in the Python REPL. - gh-issue-105340: Include the comprehension iteration variable in ``locals()`` inside a module- or class-scope comprehension. - gh-issue-105486: Change the repr of ``ParamSpec`` list of args in ``types.GenericAlias``. - gh-issue-101006: Improve error handling when read :mod:`marshal` data. - gh-issue-106524: Fix crash in :func:`!_sre.template` with templates containing invalid group indices. - gh-issue-106510: Improve debug output for atomic groups in regular expressions. - gh-issue-106503: Fix ref cycle in :class:`!asyncio._SelectorSocketTransport` by removing ``_write_ready`` in ``close``. - gh-issue-105497: Fix flag mask inversion when unnamed flags exist. - gh-issue-90876: Prevent :mod:`multiprocessing.spawn` from failing to *import* in environments where ``sys.executable`` is ``None``. This regressed in 3.11 with the addition of support for path-like objects in multiprocessing. - gh-issue-106292: Check for an instance-dict cached value in the :meth:`__get__` method of :func:`functools.cached_property`. This better matches the pre-3.12 behavior and improves compatibility for users subclassing :func:`functools.cached_property` and adding a :meth:`__set__` method. - gh-issue-106330: Fix incorrect matching of empty paths in :meth:`pathlib.PurePath.match`. This bug was introduced in Python 3.12.0 beta 1. - gh-issue-102541: Make pydoc.doc catch bad module ImportError when output stream is not None. - gh-issue-106152: Added PY_THROW event hook for :mod:`cProfile` for generators - gh-issue-106075: Added `asyncio.taskgroups.__all__` to `asyncio.__all__` for export in star imports. - gh-issue-105987: Fix crash due to improper reference counting in :mod:`asyncio` eager task factory internal routines. - gh-issue-105974: Fix bug where a :class:`typing.Protocol` class that had one or more non-callable members would raise :exc:`TypeError` when :func:`issubclass` was called against it, even if it defined a custom ``__subclasshook__`` method. The behaviour in Python 3.11 and lower -- which has now been restored -- was not to raise :exc:`TypeError` in these situations if a custom ``__subclasshook__`` method was defined. Patch by Alex Waygood. - gh-issue-96145: Reverted addition of ``json.AttrDict``. - gh-issue-105497: Fix flag inversion when alias/mask members exist. - gh-issue-104554: Add RTSPS scheme support in urllib.parse - gh-issue-94777: Fix hanging :mod:`multiprocessing` ``ProcessPoolExecutor`` when a child process crashes while data is being written in the call queue. - gh-issue-106232: Make timeit doc command lines compatible with Windows by using double quotes for arguments. This works on linux and macOS also. - gh-issue-101634: When running the Python test suite with ``-jN`` option, if a worker stdout cannot be decoded from the locale encoding report a failed testn so the exitcode is non-zero. Patch by Victor Stinner. - gh-issue-106118: Fix compilation for platforms without :data:`!O_CLOEXEC`. The issue was introduced with Python 3.12b1 in :gh:`103295`. Patch by Erlend Aasland. - gh-issue-104692: Include ``commoninstall`` as a prerequisite for ``bininstall`` This ensures that ``commoninstall`` is completed before ``bininstall`` is started when parallel builds are used (``make - j install``), and so the ``python3`` symlink is only installed after all standard library modules are installed. - gh-issue-106359: Argument Clinic now explicitly forbids "kwarg splats" in function calls used as annotations. - gh-issue-105227: The new :c:func:`PyType_GetDict` provides the dictionary for the given type object that is normally exposed by ``cls.__dict__``. Normally it's sufficient to use :c:member:`~PyTypeObject.tp_dict`, but for the static builtin types :c:member:`!tp_dict` is now always ``NULL``. :c:func:`!PyType_GetDict()` provides the correct dict object instead.- Update to 3.12.0b3: - gh-103142: The version of OpenSSL used in Windows and Mac installers has been upgraded to 1.1.1u to address CVE-2023-2650, CVE-2023-0465, CVE-2023-0466, CVE-2023-0464, as well as CVE-2023-0286, CVE-2022-4303, and CVE-2022-4303 fixed previously in 1.1.1t (gh-101727). - gh-102153: urllib.parse.urlsplit() now strips leading C0 control and space characters following the specification for URLs defined by WHATWG in response to CVE-2023-24329. - gh-99889: Fixed a security in flaw in uu.decode() that could allow for directory traversal based on the input if no out_file was specified. - gh-104049: Do not expose the local on-disk location in directory indexes produced by http.client.SimpleHTTPRequestHandler. - gh-103935: trace.__main__ now uses io.open_code() for files to be executed instead of raw open(). - gh-102953: The extraction methods in tarfile, and shutil.unpack_archive(), have a new filter argument that allows limiting tar features than may be surprising or dangerous, such as creating files outside the destination directory. See Extraction filters for details. - Remove upstreamed patches: - 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch- Add 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch gh#python/cpython#104811- Refresh all patches - Update to 3.12.0b1: Full changelog can be found here https://docs.python.org/dev/whatsnew/changelog.html#python-3-12-0-beta-1- Why in the world we download from HTTP?- Ignore failing test test_freeze_simple_script, it fails because it cannot import _sysconfigdata__linux_x86_64-linux-gnu that's not present in the test environment, it fails without bundled libs. - Remove non existing paths: * %{sitedir}/tkinter/test * %{sitedir}/sqlite3/test * %{dynlib _curses_panel}- Update to 3.12.0a7: Full changelog can be found here https://docs.python.org/dev/whatsnew/changelog.html#python-3-12-0-alpha-7- Switch off obsoleting previous interpreters.- Update to 3.12.0a6: - Many new features for Python 3.12 are still being planned and written. Among the new major new features and changes so far: - Even more improved error messages. More exceptions potentially caused by typos now make suggestions to the user. - Support for the Linux perf profiler to report Python function names in traces. - The deprecated wstr and wstr_length members of the C implementation of unicode objects were removed, per PEP 623. - In the unittest module, a number of long deprecated methods and classes were removed. (They had been deprecated since Python 3.1 or 3.2). - The deprecated smtpd and distutils modules have been removed (see PEP 594 and PEP 632. The setuptools package (installed by default in virtualenvs and many other places) continues to provide the distutils module. - A number of other old, broken and deprecated functions, classes and methods have been removed. - Invalid backslash escape sequences in strings now warn with SyntaxWarning instead of DeprecationWarning, making them more visible. (They will become syntax errors in the future.) - The internal representation of integers has changed in preparation for performance enhancements. (This should not affect most users as it is an internal detail, but it may cause problems for Cython-generated code.) - Add the refreshed version of F00251-change-user-install-location.patch (updated from Fedora), which works together with the installation schemes in sysconfig. - Remove distutils-reproducible-compile.patch, which is not applicable anymore (because distutils was removed from the standard library). - Remove upstreamed support-expat-CVE-2022-25236-patched.patch- Update to 3.11.2: Bug fixes, no changes in API and no security bugs.- Add python310 Obsoletes line to obsolete_python_versioned macro.- Add provides for readline and sqlite3 to the main Python package.- Disable NIS for new products, it's deprecated and gets removed- build GLIBC hwcaps optimized versions of the interpreter- Don't fail on Sphinx build warnings. - For jsc#PED-1570, providing Python 3.11 for SLE-15-SP5.- Update to 3.11.1: - python -m http.server no longer allows terminal control characters sent within a garbage request to be printed to the stderr server lo This is done by changing the http.server BaseHTTPRequestHandler .log_message method to replace control characters with a \xHH hex escape before printin - Avoid publishing list of active per-interpreter audit hooks via the gc module - The IDNA codec decoder used on DNS hostnames by socket or asyncio related name resolution functions no longer involves a quadratic algorithm. This prevents a potential CPU denial of service if an out-of-spec excessive length hostname involving bidirectional characters were decoded. Some protocols such as urllib http 3xx redirects potentially allow for an attacker to supply such a name (CVE-2022-45061). - Update bundled libexpat to 2.5.0 - Fix a shell code injection vulnerability in the get-remote-certificate.py example script. The script no longer uses a shell to run openssl commands. Issue reported and initial fix by Caleb Shortt. Patch by Victor Stinner. - Fix a crash when an object which does not have a dictionary frees its instance values. - Fix a bug in the tokenizer that could cause infinite recursion when showing syntax warnings that happen in the first line of the source. Patch by Pablo Galindo - Fix an issue that could cause frames to be visible to Python code as they are being torn down, possibly leading to memory corruption or hard crashes of the interpreter. - Fix a reference bug in _imp.create_builtin() after the creation of the first sub-interpreter for modules builtins and sys. Patch by Victor Stinner. - Fixed a bug that was causing a buffer overflow if the tokenizer copies a line missing the newline caracter from a file that is as long as the available tokenizer buffer. Patch by Pablo galindo - Fix bug where an ExceptionGroup subclass can wrap a BaseException. - Fix zip path for venv created from a non-installed python on POSIX platforms. - Fix an issue that could potentially cause incorrect error handling for some bytecode instructions. - Fix an issue that prevented PyThreadState and PyInterpreterState memory from being freed properly. - Fix failure in except* with unhashable exceptions. - Fix calculation of sys._base_executable when inside a POSIX virtual environment using copies of the python binary when the base installation does not provide the executable name used by the venv. Calculation will fall back to alternative names (“python”, “python.”). - Update faulthandler to emit an error message with the proper unexpected signal number. Patch by Dong-hee Na. - Fix location of SyntaxError for a try block with both except and except*. - Fix the error reporting positions of specialized traceback anchors when the source line contains Unicode characters. - Fix subscription of type aliases containing bare generic types or types like TypeVar: for example tuple[A, T][int] and tuple[TypeVar, T][int], where A is a generic type, and T is a type variable. - Lower the recursion depth for marshal on WASI to support wasmtime 2.0/main. - Fix multiple crashes in debug mode when str subclasses are used instead of str itself. - Fix an issue where member descriptors (such as those for __slots__) could behave incorrectly or crash instead of raising a TypeError when accessed via an instance of an invalid type. - Suppress ImportError for invalid query for help() command. Patch by Dong-hee Na. - Fix detection of MAC addresses for uuid on certain OSs. Patch by Chaim Sanders - Print exception class name instead of its string representation when raising errors from ctypes calls. - os.sched_yield() now release the GIL while calling sched_yield(2). Patch by Dong-hee Na. - Fix an issue that could delay the specialization of PRECALL instructions. - Bugfix: PyFunction_GetAnnotations() should return a borrowed reference. It was returning a new reference. - Ensure that all Python frame objects are backed by “complete” frames. - Fixed a missing incref/decref pair in Exception.__setstate__(). Patch by Ofey Chan. - Fix the Python path configuration used to initialized sys.path at Python startup. Paths are no longer encoded to UTF-8/strict to avoid encoding errors if it contains surrogate characters (bytes paths are decoded with the surrogateescape error handler). Patch by Victor Stinner. - Fix overly-broad source position information for chained comparisons used as branching conditions. - At Python exit, sometimes a thread holding the GIL can wait forever for a thread (usually a daemon thread) which requested to drop the GIL, whereas the thread already exited. To fix the race condition, the thread which requested the GIL drop now resets its request before exiting. Issue discovered and analyzed by Mingliang ZHAO. Patch by Victor Stinner. - Fix a possible assertion failure, fatal error, or SystemError if a line tracing event raises an exception while opcode tracing is enabled. - Fix undefined behaviour in C code of null pointer arithmetic. - Make sure that all frame objects created are created from valid interpreter frames. Prevents the possibility of invalid frames in backtraces and signal handlers. - Disable incorrect pickling of the C implemented classmethod descriptors. - On WASI ENOTCAPABLE is now mapped to PermissionError. The errno modules exposes the new error number. getpath.py now ignores PermissionError when it cannot open landmark files pybuilddir.txt and pyenv.cfg. - Allow pdb to locate source for frozen modules in the standard library. - Raise ValueError instead of SystemError when methods of uninitialized io.IncrementalNewlineDecoder objects are called. Patch by Oren Milman. - Fix a possible assertion failure in io.FileIO when the opener returns an invalid file descriptor. - Also escape s in the http.server BaseHTTPRequestHandler.log_message so that it is technically possible to parse the line and reconstruct what the original data was. Without this a xHH is ambiguious as to if it is a hex replacement we put in or the characters r”x” came through in the original request line. - asyncio.get_event_loop() now only emits a deprecation warning when a new event loop was created implicitly. It no longer emits a deprecation warning if the current event loop was set. - Fix bug when calling trace.CoverageResults with valid infile. - Fix a bug in handling class cleanups in unittest.TestCase. Now addClassCleanup() uses separate lists for different TestCase subclasses, and doClassCleanups() only cleans up the particular class. - Release the GIL when calling termios APIs to avoid blocking threads. - Fix ast.increment_lineno() to also cover ast.TypeIgnore when changing line numbers. - Fix bug in urllib.parse.urlparse() that causes URL schemes that begin with a digit, a plus sign, or a minus sign to be parsed incorrectly. - Check the number of arguments in substitution in user generics containing a TypeVarTuple and one or more TypeVar. - Fix substitution of ParamSpec followed by TypeVarTuple in generic aliases. - Fix substitution of TypeVarTuple and ParamSpec together in user generics. - Fixed bug where inspect.signature() reported incorrect arguments for decorated methods. - Fix SystemError in ctypes when exception was not set during __initsubclass__. - Remove older version of _SSLProtocolTransport.get_write_buffer_limits in asyncio.sslproto - fix negative numbers failing in verify() - Fix statistics.NormalDist pickle with 0 and 1 protocols. - enum.auto() is now correctly activated when combined with other assignment values. E.g. ONE = auto(), 'some text' will now evaluate as (1, 'some text'). - Update the bundled copy of pip to version 22.3.1. - Clean up refleak on failed module initialisation in _zoneinfo - Clean up refleaks on failed module initialisation in in _pickle - Clean up refleak on failed module initialisation in _io. - Fix memory leak in math.dist() when both points don’t have the same dimension. Patch by Kumar Aditya. - [3.11] Applied changes from importlib_metadata 4.11.4 through 4.13, including compatibility and robustness fixes for Distribution objects without _normalized_name, disallowing invalid inputs to Distribution.from_name, and refined behaviors in PathDistribution._name_from_stem and PathDistribution._normalized_name. - Fix argument typechecks in _overlapped.WSAConnect() and _overlapped.Overlapped.WSASendTo() functions. - Prevent crashing in traceback when retrieving the byte-offset for some source files that contain certain unicode characters. - Fix internal error in the re module which in very rare circumstances prevented compilation of a regular expression containing a conditional expression without the “else” branch. - Fix asyncio.StreamWriter.drain() to call protocol.connection_lost callback only once on Windows. - Add a mutex to unittest.mock.NonCallableMock to protect concurrent access to mock attributes. - Fix hang on Windows in subprocess.wait_closed() in asyncio with ProactorEventLoop. Patch by Kumar Aditya. - Fix infinite loop in unittest when a self-referencing chained exception is raised - tkinter.Text.count() raises now an exception for options starting with “-” instead of silently ignoring them. - On uname_result, restored expectation that _fields and _asdict would include all six properties including processor. - A createSocket() method was added to SysLogHandler. - Fix bug in urllib.parse.urlparse() that causes certain port numbers containing whitespace, underscores, plus and minus signs, or non-ASCII digits to be incorrectly accepted. - Allow venv to pass along PYTHON* variables to ensurepip and pip when they do not impact path resolution - On macOS, fix a crash in syslog.syslog() in multi-threaded applications. On macOS, the libc syslog() function is not thread-safe, so syslog.syslog() no longer releases the GIL to call it. Patch by Victor Stinner. - Allow BUILTINS to be a valid field name for frozen dataclasses. - Wrap network errors consistently in urllib FTP support, so the test suite doesn’t fail when a network is available but the public internet is not reachable. - Make sure patch.dict() can be applied on async functions. - Earlier in 3.11 we deprecated asyncio.Task.cancel("message"). We realized we were too harsh, and have undeprecated it. - Change deprecate warning message in unittest from It is deprecated to return a value!=None to It is deprecated to return a value that is not None from a test case - Fixes AttributeError when subprocess.check_output() is used with argument input=None and either of the arguments encoding or errors are used. - Fix is_private properties in the ipaddress module. Previously non-private networks (0.0.0.0/0) would return True from this method; now they correctly return False. - Avoid spurious tracebacks from asyncio when default executor cleanup is delayed until after the event loop is closed (e.g. as the result of a keyboard interrupt). - Avoid a crash in the C version of asyncio.Future.remove_done_callback() when an evil argument is passed. - Remove tokenize.NL check from tabnanny. - Fix generation of the default name of tkinter.Checkbutton. Previously, checkbuttons in different parent widgets could have the same short name and share the same state if arguments “name” and “variable” are not specified. Now they are globally unique. - Update bundled libexpat to 2.4.9 - Fix race condition in asyncio where process_exited() called before the pipe_data_received() leading to inconsistent output. Patch by Kumar Aditya. - Fixed check in multiprocessing.resource_tracker that guarantees that the length of a write to a pipe is not greater than PIPE_BUF. - Corrected type annotation for dataclass attribute pstats.FunctionProfile.ncalls to be str. - Fix repr of Any subclasses. - Work around missing socket functions in socket’s __repr__. - In inspect, fix overeager replacement of “typing.” in formatting annotations. - Fix handling of bytes path-like objects in os.ismount(). - Fix handling compiler warnings (SyntaxWarning and DeprecationWarning) in codeop.compile_command() when checking for incomplete input. Previously it emitted warnings and raised a SyntaxError. Now it always returns None for incomplete input without emitting any warnings. - To avoid apparent memory leaks when asyncio.open_connection() raises, break reference cycles generated by local exception and future instances (which has exception instance as its member var). Patch by Dong Uk, Kang. - Fixed flickering of the turtle window when the tracer is turned off. Patch by Shin-myoung-serp. - Fix asyncio subprocess transport to kill process cleanly when process is blocked and avoid RuntimeError when loop is closed. Patch by Kumar Aditya. - Prevent error when activating venv in nested fish instances. - TarFile.next() now returns None when called on an empty tarfile. - Document the optional callback parameter of WeakMethod. Patch by Géry Ogam. - Restrict use of sockets instead of pipes for stdin of subprocesses created by asyncio to AIX platform only. - shutil.copytree() now applies the ignore_dangling_symlinks argument recursively. - Fix IndexError in argparse.ArgumentParser when a store_true action is given an explicit argument. - Document that calling variadic functions with ctypes requires special care on macOS/arm64 (and possibly other platforms). - Remove extra row - Clarified the conflicting advice given in the ast documentation about ast.literal_eval() being “safe” for use on untrusted input while at the same time warning that it can crash the process. The latter statement is true and is deemed unfixable without a large amount of work unsuitable for a bugfix. So we keep the warning and no longer claim that literal_eval is safe. - Restructured the documentation for the os.wait* family of functions, and improved the docs for os.waitid() with more explanation of the possible argument constants. - Skip test_normalization() of test_unicodedata if it fails to download NormalizationTest.txt file from pythontest.net. Patch by Victor Stinner. - Correct test_marsh on (32 bit) x86: test_deterministic sets was failing. - Optional big memory tests in test_sqlite3 now catch the correct sqlite.DataError exception type in case of too large strings and/or blobs passed. - Fix a bug in the typing tests where a test relying on CPython-specific implementation details was not decorated with @cpython_only and was not skipped on other implementations. - Add tests for star-unpacking with PEP 646, and some other miscellaneous PEP 646 tests. - Added explicit coverage of Py_Initialize (and hence Py_InitializeEx) back to the embedding tests (all other embedding tests migrated to Py_InitializeFromConfig in Python 3.11) - Some C API tests were moved into the new Lib/test/test_capi/ directory. - Fix -Wimplicit-int, -Wstrict-prototypes, and - Wimplicit-function-declaration compiler warnings in configure checks. - Fix a compilation issue with GCC 12 on macOS. - Fix -Wimplicit-int compiler warning in configure check for PTHREAD_SCOPE_SYSTEM. - Fix a possible fd leak in Programs/_freeze_module.c introduced in Python 3.11. - Fix build with PYTHON_FOR_REGEN=python3.8. - Specify the full path to the source location for make docclean (needed for cross-builds). - Don’t use vendored libmpdec headers if --with-system-libmpdec is passed to configure. Don’t use vendored libexpat headers if --with-system-expat is passed to !configure. - Fix the build process of clang compiler for _bootstrap_python if LTO optimization is applied. Patch by Matthias Görgens and Dong-hee Na. - wasm32-emscripten builds for browsers now include concurrent.futures for asyncio and unittest.mock. - wasm32-emscripten platform no longer builds resource module, getresuid(), getresgid(), and their setters. The APIs are stubs and not functional. - Updated pegen regeneration script on Windows to find and use Python 3.9 or higher. Prior to this, pegen regeneration already required 3.9 or higher, but the script may have used lower versions of Python. - Fix a bug in the previous bugfix that caused IDLE to not start when run with 3.10.8, 3.12.0a1, and at least Microsoft Python 3.10.2288.0 installed without the Lib/test package. 3.11.0 was never affected. - The wasm_build.py script now pre-builds Emscripten ports, checks for broken EMSDK versions, and warns about pkg-config env vars. - The new tool Tools/wasm/wasm_builder.py automates configure, compile, and test steps for building CPython on WebAssembly platforms. - Fix handling of module docstrings in Tools/i18n/pygettext.py. - PyBUF_* constants were marked as part of Limited API of Python 3.11+. These were available in 3.11.0 with Py_LIMITED_API defined for 3.11, and are necessary to use the buffer API. - Fix use-after-free in Py_SetPythonHome(NULL), Py_SetProgramName(NULL) and _Py_SetProgramFullPath(NULL) function calls. Issue reported by Benedikt Reinartz. Patch by Victor Stinner. - Py_InitializeEx now correctly calls PyConfig_Clear after initializing the interpreter (the omission didn’t cause a memory leak only because none of the dynamically allocated config fields are populated by the wrapper function) - Removed upstreamed patches: - 98437-sphinx.locale._-as-gettext-in-pyspecific.patch - CVE-2022-45061-DoS-by-IDNA-decode.patch- Add CVE-2022-45061-DoS-by-IDNA-decode.patch to avoid CVE-2022-45061 (bsc#1205244) allowing DoS by IDNA decoding extremely long domain names.- Update to 3.11.0 (overall changes from 3.10.*): - General changes - PEP 657 -- Include Fine-Grained Error Locations in Tracebacks - PEP 654 -- Exception Groups and except* - PEP 680 -- tomllib: Support for Parsing TOML in the Standard Library - gh-90908 -- Introduce task groups to asyncio - gh-34627 -- Atomic grouping ((?>...)) and possessive quantifiers (*+, ++, ?+, {m,n}+) are now supported in regular expressions. - The Faster CPython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See Faster CPython for details. - Typing and typing language changes - PEP 673 -- Self Type - PEP 646 -- Variadic Generics - PEP 675 -- Arbitrary Literal String Type - PEP 655 -- Marking individual TypedDict items as required or potentially-missing - PEP 681 -- Data Class Transforms - (just changes from 3.11.0rc2): - Fix multiplying a list by an integer (list *= int): detect the integer overflow when the new allocated length is close to the maximum size. Issue reported by Jordan Limor. Patch by Victor Stinner. - On Linux the multiprocessing module returns to using filesystem backed unix domain sockets for communication with the forkserver process instead of the Linux abstract socket namespace. Only code that chooses to use the “forkserver” start method is affected. Abstract sockets have no permissions and could allow any user on the system in the same network namespace (often the whole system) to inject code into the multiprocessing forkserver process. This was a potential privilege escalation. Filesystem based socket permissions restrict this to the forkserver process user as was the default in Python 3.8 and earlier. This prevents Linux CVE-2022-42919. - Fix an issue where several frame objects could be backed by the same interpreter frame, possibly leading to corrupted memory and hard crashes of the interpreter. - Fix possible data corruption or crashes when accessing the f_back member of newly-created generator or coroutine frames. - Fix a crash occurring when PyEval_GetFrame() is called while the topmost Python frame is in a partially-initialized state. - Fix command line parsing: reject -X int_max_str_digits option with no value (invalid) when the PYTHONINTMAXSTRDIGITS environment variable is set to a valid limit. Patch by Victor Stinner. - Fix undefined behaviour in _testcapimodule.c. - When ValueError is raised if an integer is larger than the limit, mention the sys.set_int_max_str_digits() function in the error message. Patch by Victor Stinner. - Correctly raise SyntaxError on exception groups (PEP 654) on python versions prior to 3.11 - Document some places where an assignment expression needs parentheses. - Update the bundled copies of pip and setuptools to versions 22.3 and 65.5.0 respectively. - fix Flag to use boundary CONFORM - This restores previous Flag behavior of allowing flags with non-sequential values to be combined; e.g. - class Skip(Flag): TWO = 2 EIGHT = 8 - Skip.TWO | Skip.EIGHT -> - Fix ! in c domain ref target syntax via a conf.py patch, so it works as intended to disable ref target resolution. - Update tutorial introduction output to use 3.10+ SyntaxError invalid range.- Add 98437-sphinx.locale._-as-gettext-in-pyspecific.patch to allow building of documentation with the latest Sphinx 5.3.0 (gh#python/cpython#98366).- Update to 3.11.0rc2: - Converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity. This is a mitigation for CVE-2020-10735. This new limit can be configured or disabled by environment variable, command line flag, or sys APIs. See the integer string conversion length limitation documentation. The default limit is 4300 digits in string form. - Fix case of undefined behavior in ceval.c - Do not expose KeyWrapper in _functools. - Ensure that tracing, sys.setrace(), is turned on immediately. In pre-release versions of 3.11, some tracing events might have been lost when turning on tracing in a __del__ method or interrupt. - Fix use after free in trace refs build mode. Patch by Kumar Aditya. - When loading a file with invalid UTF-8 inside a multi-line string, a correct SyntaxError is emitted. - Make sure that incomplete frames do not show up in tracemalloc traces. - Remove two cases of undefined behavior, by adding NULL checks. - Fix possible NULL pointer dereference in _PyThread_CurrentFrames. Patch by Kumar Aditya. - Fix AttributeError missing name and obj attributes in object.__getattribute__(). Patch by Philip Georgi. - Loading a file with invalid UTF-8 will now report the broken character at the correct location. - Fixed a bug that caused _PyCode_GetExtra to return garbage for negative indexes. Patch by Pablo Galindo - Fix a deadlock in PyGILState_Ensure() when allocating new thread state. Patch by Kumar Aditya. - PyType_Ready() now initializes ht_cached_keys and performs additional checks to ensure that type objects are properly configured. This avoids crashes in 3rd party packages that don’t use regular API to create new types. - Skip over incomplete frames in PyThreadState_GetFrame(). - Fix format string in _PyPegen_raise_error_known_location that can lead to memory corruption on some 64bit systems. The function was building a tuple with i (int) instead of n (Py_ssize_t) for Py_ssize_t arguments. - Fix misleading contents of error message when converting an all-whitespace string to float. - ast.parse() will no longer parse function definitions with positional-only params when passed feature_version less than (3, 8). Patch by Shantanu Jain. - Fix incorrect error message in the io module. - Fix the faulthandler implementation of faulthandler.register(signal, chain=True) if the sigaction() function is not available: don’t call the previous signal handler if it’s NULL. Patch by Victor Stinner. - Correct conversion of numbers.Rational’s to float. - Fix TypeVarTuple.__typing_prepare_subst__. TypeError was not raised when using more than one TypeVarTuple, like [*T, *V] in type alias substitutions. - Fix asyncio.streams.StreamReaderProtocol to keep a strong reference to the created task, so that it’s not garbage collected - Fix a performance regression in logging TimedRotatingFileHandler. Only check for special files when the rollover time has passed. - Fix unused localName parameter in the Attr class in xml.dom.minidom. - Fix incorrect condition that causes sys.thread_info.name to be wrong on pthread platforms. - Remove an incompatible change from bpo-28080 that caused a regression that ignored the utf8 in ZipInfo.flag_bits. Patch by Pablo Galindo. - Fix asyncio.Runner to call asyncio.set_event_loop() only once to avoid calling attach_loop() multiple times on child watchers. Patch by Kumar Aditya. - Fix unittest.IsolatedAsyncioTestCase to set event loop before calling setup functions. Patch by Kumar Aditya. - When a task catches asyncio.CancelledError and raises some other error, the other error should generally not silently be suppressed. - Fail gracefully if EPERM or ENOSYS is raised when loading crypt methods. This may happen when trying to load MD5 on a Linux kernel with FIPS enabled. - Allow asyncio.StreamWriter.drain() to be awaited concurrently by multiple tasks. Patch by Kumar Aditya. - Fix ast.unparse() when ImportFrom.level is None - Improve discoverability of the higher level concurrent.futures module by providing clearer links from the lower level threading and multiprocessing modules. - What’s New 3.11 now has instructions for how to provide compiler and linker flags for Tcl/Tk and OpenSSL on RHEL 7 and CentOS 7. - Mitigate the inherent race condition from using find_unused_port() in testSockName() by trying to find an unused port a few times before failing. Patch by Ross Burton. - Build and test with OpenSSL 1.1.1q - Use support-expat-CVE-2022-25236-patched.patch from the current version of gh#python/cpython#93900 instead of the old support-expat-245.patch. - Reapply fix_configure_rst.patch.- Increase testsuite timeout for test_freeze_simple_script- fix import_failed.map to refer to the python 3.11 package versions- Update to 3.11.0rc1: - Core and Builtins - Update code object hashing and equality to consider all debugging and exception handling tables. This fixes an issue where certain non-identical code objects could be “deduplicated” during compilation. - _PyPegen_Parser_New now properly detects token memory allocation errors. Patch by Honglin Zhu. - Run Python code in tracer/profiler function at full speed. Fixes slowdown in earlier versions of 3.11. - Emit a warning in debug mode if an object does not call PyObject_GC_UnTrack() before deallocation. Patch by Pablo Galindo. - Prevented crashes in the AST constructor when compiling some absurdly long expressions like "+0"*1000000. RecursionError is now raised instead. Patch by Pablo Galindo - ast.AST node positions are now validated when provided to compile() and other related functions. If invalid positions are detected, a ValueError will be raised. - Fix error detection in some builtin functions when keyword argument name is an instance of a str subclass with overloaded __eq__ and __hash__. Previously it could cause SystemError or other undesired behavior. - Library - Update bundled pip to 22.2.2. - Fix asyncio.TaskGroup to propagate exception when asyncio.CancelledError was replaced with another exception by a context manger. Patch by Kumar Aditya and Guido van Rossum. - Update bundled pip to 22.2.1. - Fix GC crash when deallocating _lsprof.Profiler by untracking it before calling any callbacks. Patch by Kumar Aditya. - Fix asyncio.run() for asyncio.Task implementations without uncancel() method. Patch by Kumar Aditya. - Fix check for existence of os.EFD_CLOEXEC, os.EFD_NONBLOCK and os.EFD_SEMAPHORE flags on older kernel versions where these flags are not present. Patch by Kumar Aditya. - Fix concurrent.futures.Executor.map() to cancel the currently waiting on future on an error - e.g. TimeoutError or KeyboardInterrupt. - Ensure that timeouts scheduled with asyncio.Timeout that have already expired are delivered promptly. - Suppress writing an XML declaration in open files in ElementTree.write() with encoding='unicode' and xml_declaration=None. - Fix findtext in the xml module to only give an empty string when the text attribute is set to None. - Documentation - Fix stylesheet not working in Windows CHM htmlhelp docs and add warning that they are deprecated. Contributed by C.A.M. Gerlach. - Update library documentation with availability information on WebAssembly platforms wasm32-emscripten and wasm32-wasi. - Use consistent syntax for platform availability. The directive now supports a content body and emits a warning when it encounters an unknown platform. - Document a limitation in ThreadPoolExecutor where its exit handler is executed before any handlers in atexit. - Tests - Lib/test/test_asyncio/test_ssl.py exposed a bug in the macOS kernel where intense concurrent load on non-blocking sockets occasionally causes errno.ENOBUFS (“No buffer space available”) to be emitted. FB11063974 filed with Apple, in the mean time as a workaround buffer size used in tests on macOS is decreased to avoid intermittent failures. Patch by Fantix King. - Fix problem with test_ssl test_get_ciphers on systems that require perfect forward secrecy (PFS) ciphers. - Add a regression test for re exponentional slowdown when using rjsmin. - Build - Fix a regression in configure script that caused some header checks to ignore custom CPPFLAGS. The regression was introduced in gh-94802. - wasm32-wasi builds no longer depend on WASIX’s pthread stubs. Python now has its own stubbed pthread API. - Python now detects missing dup function in WASI and works around some missing errno, select, and socket constants. - Python now skips missing socket functions and methods on WASI. WASI can only create sockets from existing fd / accept and has no netdb. - Platforms wasm32-unknown-emscripten and wasm32-unknown-wasi have been promoted to PEP 11 tier 3 platform support. - IDLE - Document handling of extensions in Save As dialogs. - Include prompts when saving Shell (interactive input and output). - Fix the Shell context menu copy-with-prompts bug of copying an extra line when one selects whole lines. - In the Edit menu, move Select All and add a new separator. - Enable using IDLE’s module browser with .pyw files. - Add .pyi as a recognized extension for IDLE on macOS. This allows opening stub files by double clicking on them in the Finder. - C API - Restore the 3.10 behavior for multiple inheritance of C extension classes that store their dictionary at the end of the struct. - Added PyCode_GetVarnames(), PyCode_GetCellvars() and PyCode_GetFreevars() for accessing co_varnames, co_cellvars and co_freevars respectively via the C API.- Update to 3.11.0b5: - Core and Builtins - gh-93351: ast.AST node positions are now validated when provided to compile() and other related functions. If invalid positions are detected, a ValueError will be raised. - gh-94438: Fix an issue that caused extended opcode arguments and some conditional pops to be ignored when calculating valid jump targets for assignments to the f_lineno attribute of frame objects. In some cases, this could cause inconsistent internal state, resulting in a hard crash of the interpreter. - gh-95060: Undocumented PyCode_Addr2Location function now properly returns when addrq argument is less than zero. - gh-95113: Replace all EXTENDED_ARG_QUICK instructions with basic EXTENDED_ARG instructions in unquickened code. Consumers of non-adaptive bytecode should be able to handle extended arguments the same way they were handled in CPython 3.10 and older. - gh-91409: Fix incorrect source location info caused by certain optimizations in the bytecode compiler. - gh-94036: Fix incorrect source location info for some multi-line attribute accesses and method calls. - gh-94739: Allow jumping within, out of, and across exception handlers in the debugger. - gh-94949: ast.parse() will no longer parse parenthesized context managers when passed feature_version less than (3, 9). Patch by Shantanu Jain. - gh-94947: ast.parse() will no longer parse assignment expressions when passed feature_version less than (3, 8). Patch by Shantanu Jain. - gh-91256: Ensures the program name is known for help text during interpreter startup. - gh-94869: Fix the column offsets for some expressions in multi-line f-strings ast nodes. Patch by Pablo Galindo. - gh-94822: Fix an issue where lookups of metaclass descriptors may be ignored when an identically-named attribute also exists on the class itself. - gh-91153: Fix an issue where a bytearray item assignment could crash if it’s resized by the new value’s __index__() method. - gh-90699: Fix reference counting bug in bool.__repr__(). Patch by Kumar Aditya. - Library - gh-95087: Fix IndexError in parsing invalid date in the email module. - gh-95199: Upgrade bundled setuptools to 63.2.0. - gh-95194: Upgrade bundled pip to 22.2. - gh-95132: Fix a sqlite3 regression where *args and **kwds were incorrectly relayed from connect() to the Connection factory. The regression was introduced in 3.11a1 with PR 24421 (gh-85128). Patch by Erlend E. Aasland.` - gh-93157: Fix fileinput module didn’t support errors option when inplace is true. - gh-95105: wsgiref.types.InputStream.__iter__() should return Iterator[bytes], not Iterable[bytes]. Patch by Shantanu Jain. - gh-94857: Fix refleak in _io.TextIOWrapper.reconfigure. Patch by Kumar Aditya. - gh-94821: Fix binding of unix socket to empty address on Linux to use an available address from the abstract namespace, instead of “0”. - gh-89988: Fix memory leak in pickle.Pickler when looking up dispatch_table. Patch by Kumar Aditya. - bpo-47025: Drop support for bytes on sys.path. - Tests - gh-95212: Make multiprocessing test case test_shared_memory_recreate parallel-safe. - Build - gh-94847: Fixed _decimal module build issue on GCC when compiling with LTO and pydebug. Debug builds no longer force inlining of functions. - gh-94841: Fix the possible performance regression of PyObject_Free() compiled with MSVC version 1932. - gh-94801: configure now uses custom flags like ZLIB_CFLAGS and ZLIB_LIBS when searching for headers and libraries. - gh-94773: deepfreeze.py now supports code object with frozensets that contain incompatible, unsortable types. - C API - gh-94930: Fix SystemError raised when PyArg_ParseTupleAndKeywords() is used with # in (...) but without PY_SSIZE_T_CLEAN defined. - gh-94864: Fix PyArg_Parse* with deprecated format units “u” and “Z”. It returned 1 (success) when warnings are turned into exceptions. - gh-94731: Python again uses C-style casts for most casting operations when compiled with C++. This may trigger compiler warnings, if they are enabled with e.g. -Wold-style-cast `` or ``-Wzero-as-null-pointer-constant options for g++.- Switch from %primary_interpreter to prjconf-defined %primary_python (gh#openSUSE/python-rpm-macros#127).- Update to 3.11.0b4: - Fixes many bugs and adds following more significant changes - Security - gh-68966: The deprecated mailcap module now refuses to inject Coreunsafe text (filenames, MIME types, parameters) into shell Corecommands. Instead of using such text, it will warn and act Coreas if a match was not found (or for test commands, as if the Coretest failed). and Builtins - gh-93516: Lazily create a table mapping bytecode offsets to line numbers to speed up calculation of line numbers when tracing. - gh-93461: importlib.invalidate_caches() now drops entries from sys.path_importer_cache with a relative path as name. This solves a caching issue when a process changes its current working directory. - FileFinder no longer inserts a dot in the path, e.g. /egg/./spam is now /egg/spam. Library - gh-93896: Fix asyncio.run() and unittest.IsolatedAsyncioTestCase to always the set event loop as it was done in Python 3.10 and earlier. Patch by Kumar Aditya. - gh-94101: Manual instantiation of ssl.SSLSession objects is no longer allowed as it lead to misconfigured instances that crashed the interpreter when attributes where accessed on them. - gh-83658: Make multiprocessing.Pool raise an exception if maxtasksperchild is not None or a positive int. - gh-61162: Clarify sqlite3 behavior when Using the connection as a context manager. Tools/Demos - gh-94538: Fix Argument Clinic output to custom file destinations. Patch by Erlend E. Aasland. C API - gh-93937: The following frame functions and type are now directly available with #include , it’s no longer needed to add #include : PyFrame_Check() PyFrame_GetBack() PyFrame_GetBuiltins() PyFrame_GetGenerator() PyFrame_GetGlobals() PyFrame_GetLasti() PyFrame_GetLocals() PyFrame_Type- Update to 3.11.0b2: - many small updates - Add patch support-expat-245.patch: * Support Expat >= 2.4.4 (jsc#SLE-21253)- Refresh bluez-devel-vendor.tar.xz - Fix building with system-expat (gh#python/cpython#92875). Nope, it didn't work, worked around it.- Update to pre-release version 3.11.0b1: - PEP 657 – Include Fine-Grained Error Locations in Tracebacks - PEP 654 – Exception Groups and except* - PEP 673 – Self Type - PEP 646 – Variadic Generics - PEP 680– tomllib: Support for Parsing TOML in the Standard Library - PEP 675– Arbitrary Literal String Type - PEP 655– Marking individual TypedDict items as required or potentially-missing - bpo-46752– Introduce task groups to asyncio - The Faster Cpython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython for details.- Switch primary_interpreter from python38 to python310- Update to 3.10.4: - bpo-46968: Check for the existence of the “sys/auxv.h” header in faulthandler to avoid compilation problems in systems where this header doesn’t exist. Patch by Pablo Galindo - bpo-23691: Protect the re.finditer() iterator from re-entering. - bpo-42369: Fix thread safety of zipfile._SharedFile.tell() to avoid a “zipfile.BadZipFile: Bad CRC-32 for file” exception when reading a ZipFile from multiple threads. - bpo-38256: Fix binascii.crc32() when it is compiled to use zlib’c crc32 to work properly on inputs 4+GiB in length instead of returning the wrong result. The workaround prior to this was to always feed the function data in increments smaller than 4GiB or to just call the zlib module function. - bpo-39394: A warning about inline flags not at the start of the regular expression now contains the position of the flag. - bpo-47061: Deprecate the various modules listed by PEP 594: - aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib - bpo-2604: Fix bug where doctests using globals would fail when run multiple times. - bpo-45997: Fix asyncio.Semaphore re-aquiring FIFO order. - bpo-47022: The asynchat, asyncore and smtpd modules have been deprecated since at least Python 3.6. Their documentation and deprecation warnings and have now been updated to note they will removed in Python 3.12 (PEP 594). - bpo-46421: Fix a unittest issue where if the command was invoked as python -m unittest and the filename(s) began with a dot (.), a ValueError is returned. - bpo-40296: Fix supporting generic aliases in pydoc. - Update to 3.10.3: - bpo-46940: Avoid overriding AttributeError metadata information for nested attribute access calls. Patch by Pablo Galindo. - bpo-46852: Rename the private undocumented float.__set_format__() method to float.__setformat__() to fix a typo introduced in Python 3.7. The method is only used by test_float. Patch by Victor Stinner. - bpo-46794: Bump up the libexpat version into 2.4.6 - bpo-46820: Fix parsing a numeric literal immediately (without spaces) followed by “not in” keywords, like in 1not in x. Now the parser only emits a warning, not a syntax error. - bpo-46762: Fix an assert failure in debug builds when a ‘<’, ‘>’, or ‘=’ is the last character in an f-string that’s missing a closing right brace. - bpo-46724: Make sure that all backwards jumps use the JUMP_ABSOLUTE instruction, rather than JUMP_FORWARD with an argument of (2**32)+offset. - bpo-46732: Correct the docstring for the __bool__() method. Patch by Jelle Zijlstra. - bpo-46707: Avoid potential exponential backtracking when producing some syntax errors involving lots of brackets. Patch by Pablo Galindo. - bpo-40479: Add a missing call to va_end() in Modules/_hashopenssl.c. - bpo-46615: When iterating over sets internally in setobject.c, acquire strong references to the resulting items from the set. This prevents crashes in corner-cases of various set operations where the set gets mutated. - bpo-45773: Remove two invalid “peephole” optimizations from the bytecode compiler. - bpo-43721: Fix docstrings of getter, setter, and deleter to clarify that they create a new copy of the property. - bpo-46503: Fix an assert when parsing some invalid N escape sequences in f-strings. - bpo-46417: Fix a race condition on setting a type __bases__ attribute: the internal function add_subclass() now gets the PyTypeObject.tp_subclasses member after calling PyWeakref_NewRef() which can trigger a garbage collection which can indirectly modify PyTypeObject.tp_subclasses. Patch by Victor Stinner. - bpo-46383: Fix invalid signature of _zoneinfo’s module_free function to resolve a crash on wasm32-emscripten platform. - bpo-46070: Py_EndInterpreter() now explicitly untracks all objects currently tracked by the GC. Previously, if an object was used later by another interpreter, calling PyObject_GC_UnTrack() on the object crashed if the previous or the next object of the PyGC_Head structure became a dangling pointer. Patch by Victor Stinner. - bpo-46339: Fix a crash in the parser when retrieving the error text for multi-line f-strings expressions that do not start in the first line of the string. Patch by Pablo Galindo - bpo-46240: Correct the error message for unclosed parentheses when the tokenizer doesn’t reach the end of the source when the error is reported. Patch by Pablo Galindo - bpo-46091: Correctly calculate indentation levels for lines with whitespace character that are ended by line continuation characters. Patch by Pablo Galindo - bpo-43253: Fix a crash when closing transports where the underlying socket handle is already invalid on the Proactor event loop. - bpo-47004: Apply bugfixes from importlib_metadata 4.11.3, including bugfix for EntryPoint.extras, which was returning match objects and not the extras strings. - bpo-46985: Upgrade pip wheel bundled with ensurepip (pip 22.0.4) - bpo-46968: faulthandler: On Linux 5.14 and newer, dynamically determine size of signal handler stack size CPython allocates using getauxval(AT_MINSIGSTKSZ). This changes allows for Python extension’s request to Linux kernel to use AMX_TILE instruction set on Sapphire Rapids Xeon processor to succeed, unblocking use of the ISA in frameworks. - bpo-46955: Expose asyncio.base_events.Server as asyncio.Server. Patch by Stefan Zabka. - bpo-23325: The signal module no longer assumes that SIG_IGN and SIG_DFL are small int singletons. - bpo-46932: Update bundled libexpat to 2.4.7 - bpo-25707: Fixed a file leak in xml.etree.ElementTree.iterparse() when the iterator is not exhausted. Patch by Jacob Walls. - bpo-44886: Inherit asyncio proactor datagram transport from asyncio.DatagramTransport. - bpo-46827: Support UDP sockets in asyncio.loop.sock_connect() for selector-based event loops. Patch by Thomas Grainger. - bpo-46811: Make test suite support Expat >=2.4.5 - bpo-46252: Raise TypeError if ssl.SSLSocket is passed to transport-based APIs. - bpo-46784: Fix libexpat symbols collisions with user dynamically loaded or statically linked libexpat in embedded Python. - bpo-39327: shutil.rmtree() can now work with VirtualBox shared folders when running from the guest operating-system. - bpo-46756: Fix a bug in urllib.request.HTTPPasswordMgr.find_user_password() and urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated() which allowed to bypass authorization. For example, access to URI example.org/foobar was allowed if the user was authorized for URI example.org/foo. - bpo-46643: In typing.get_type_hints(), support evaluating stringified ParamSpecArgs and ParamSpecKwargs annotations. Patch by Gregory Beauregard. - bpo-45863: When the tarfile module creates a pax format archive, it will put an integer representation of timestamps in the ustar header (if possible) for the benefit of older unarchivers, in addition to the existing full-precision timestamps in the pax extended header. - bpo-46676: Make typing.ParamSpec args and kwargs equal to themselves. Patch by Gregory Beauregard. - bpo-46672: Fix NameError in asyncio.gather() when initial type check fails. - bpo-46655: In typing.get_type_hints(), support evaluating bare stringified TypeAlias annotations. Patch by Gregory Beauregard. - bpo-45948: Fixed a discrepancy in the C implementation of the xml.etree.ElementTree module. Now, instantiating an xml.etree.ElementTree.XMLParser with a target=None keyword provides a default xml.etree.ElementTree.TreeBuilder target as the Python implementation does. - bpo-46521: Fix a bug in the codeop module that was incorrectly identifying invalid code involving string quotes as valid code. - bpo-46581: Brings ParamSpec propagation for GenericAlias in line with Concatenate (and others). - bpo-46591: Make the IDLE doc URL on the About IDLE dialog clickable. - bpo-46400: expat: Update libexpat from 2.4.1 to 2.4.4 - bpo-46487: Add the get_write_buffer_limits method to asyncio.transports.WriteTransport and to the SSL transport. - bpo-45173: Note the configparser deprecations will be removed in Python 3.12. - bpo-46539: In typing.get_type_hints(), support evaluating stringified ClassVar and Final annotations inside Annotated. Patch by Gregory Beauregard. - bpo-46491: Allow typing.Annotated to wrap typing.Final and typing.ClassVar. Patch by Gregory Beauregard. - bpo-46436: Fix command-line option -d/--directory in module http.server which is ignored when combined with command-line option --cgi. Patch by Géry Ogam. - bpo-41403: Make mock.patch() raise a TypeError with a relevant error message on invalid arg. Previously it allowed a cryptic AttributeError to escape. - bpo-46474: In importlib.metadata.EntryPoint.pattern, avoid potential REDoS by limiting ambiguity in consecutive whitespace. - bpo-46469: asyncio generic classes now return types.GenericAlias in __class_getitem__ instead of the same class. - bpo-46434: pdb now gracefully handles help when __doc__ is missing, for example when run with pregenerated optimized .pyc files. - bpo-46333: The __eq__() and __hash__() methods of typing.ForwardRef now honor the module parameter of typing.ForwardRef. Forward references from different modules are now differentiated. - bpo-46246: Add missing __slots__ to importlib.metadata.DeprecatedList. Patch by Arie Bovenberg. - bpo-46266: Improve day constants in calendar. - Now all constants (MONDAY … SUNDAY) are documented, tested, and added to __all__. - bpo-46232: The ssl module now handles certificates with bit strings in DN correctly. - bpo-43118: Fix a bug in inspect.signature() that was causing it to fail on some subclasses of classes with a __text_signature__ referencing module globals. Patch by Weipeng Hong. - bpo-26552: Fixed case where failing asyncio.ensure_future() did not close the coroutine. Patch by Kumar Aditya. - bpo-21987: Fix an issue with tarfile.TarFile.getmember() getting a directory name with a trailing slash. - bpo-20392: Fix inconsistency with uppercase file extensions in MimeTypes.guess_type(). Patch by Kumar Aditya. - bpo-46080: Fix exception in argparse help text generation if a argparse.BooleanOptionalAction argument’s default is argparse.SUPPRESS and it has help specified. Patch by Felix Fontein. - bpo-44439: Fix .write() method of a member file in ZipFile, when the input data is an object that supports the buffer protocol, the file length may be wrong. - bpo-45703: When a namespace package is imported before another module from the same namespace is created/installed in a different sys.path location while the program is running, calling the importlib.invalidate_caches() function will now also guarantee the new module is noticed. - bpo-24959: Fix bug where unittest sometimes drops frames from tracebacks of exceptions raised in tests. - bpo-44791: Fix substitution of ParamSpec in Concatenate with different parameter expressions. Substitution with a list of types returns now a tuple of types. Substitution with Concatenate returns now a Concatenate with concatenated lists of arguments. - bpo-14156: argparse.FileType now supports an argument of ‘-’ in binary mode, returning the .buffer attribute of sys.stdin/sys.stdout as appropriate. Modes including ‘x’ and ‘a’ are treated equivalently to ‘w’ when argument is ‘-’. Patch contributed by Josh Rosenberg - bpo-46463: Fixes escape4chm.py script used when building the CHM documentation file - bpo-46913: Fix test_faulthandler.test_sigfpe() if Python is built with undefined behavior sanitizer (UBSAN): disable UBSAN on the faulthandler_sigfpe() function. Patch by Victor Stinner. - bpo-46708: Prevent default asyncio event loop policy modification warning after test_asyncio execution. - bpo-46678: The function make_legacy_pyc in Lib/test/support/import_helper.py no longer fails when PYTHONPYCACHEPREFIX is set to a directory on a different device from where tempfiles are stored. - bpo-46616: Ensures test_importlib.test_windows cleans up registry keys after completion. - bpo-44359: test_ftplib now silently ignores socket errors to prevent logging unhandled threading exceptions. Patch by Victor Stinner. - bpo-46542: Fix a Python crash in test_lib2to3 when using Python built in debug mode: limit the recursion limit. Patch by Victor Stinner. - bpo-46576: test_peg_generator now disables compiler optimization when testing compilation of its own C extensions to significantly speed up the testing on non-debug builds of CPython. - bpo-46542: Fix test_json tests checking for RecursionError: modify these tests to use support.infinite_recursion(). Patch by Victor Stinner. - bpo-13886: Skip test_builtin PTY tests on non-ASCII characters if the readline module is loaded. The readline module changes input() behavior, but test_builtin is not intented to test the readline module. Patch by Victor Stinner. - bpo-38472: Fix GCC detection in setup.py when cross-compiling. The C compiler is now run with LC_ALL=C. Previously, the detection failed with a German locale. - bpo-46513: configure no longer uses AC_C_CHAR_UNSIGNED macro and pyconfig.h no longer defines reserved symbol __CHAR_UNSIGNED__. - bpo-45296: Clarify close, quit, and exit in IDLE. In the File menu, ‘Close’ and ‘Exit’ are now ‘Close Window’ (the current one) and ‘Exit’ is now ‘Exit IDLE’ (by closing all windows). In Shell, ‘quit()’ and ‘exit()’ mean ‘close Shell’. If there are no other windows, this also exits IDLE. - bpo-45447: Apply IDLE syntax highlighting to pyi files. Patch by Alex Waygood and Terry Jan Reedy. - bpo-46433: The internal function _PyType_GetModuleByDef now correctly handles inheritance patterns involving static types. - bpo-14916: Fixed bug in the tokenizer that prevented PyRun_InteractiveOne from parsing from the provided FD. - Remove upstreamed patches: - support-expat-245.patch- Add patch support-expat-245.patch: * Support Expat >= 2.4.5- bsc#1195831 Obsolete older "most modern" versions of python packages (python39 for python310 and so forth). For next versions it is necessary just to edit the macro.- Remove second superfluous BR rpm-build-python- Remove second superfluous BR rpm-build-python - Add fix_configure_rst.patch, which removes duplicate link targets and make documentation with old Sphinx in SLE - Skip test_capi (bsc#1195140 and bpo#37169)- Update to 3.10.2: Bugfix only - bpo#46347 memory leak in PyEval_EvalCodeEx (especially visible with Cython code) - and many others- Upgrade to 3.10.1 (jsc#SLE-18038): - PEP 623 – Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 – Allow writing union types as X | Y - PEP 612 – Parameter Specification Variables - PEP 626 – Precise line numbers for debugging and other tools. - PEP 618 – Add Optional Length-Checking To zip. - bpo-12782: Parenthesized context managers are now officially allowed. - PEP 632 – Deprecate distutils module. - PEP 613 – Explicit Type Aliases - PEP 634 – Structural Pattern Matching: Specification - PEP 635 – Structural Pattern Matching: Motivation and Rationale - PEP 636 – Structural Pattern Matching: Tutorial - PEP 644 – Require OpenSSL 1.1.1 or newer - PEP 624 – Remove Py_UNICODE encoder APIs - PEP 597 – Add optional EncodingWarning - Patches readjusted: - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch- Remove pdb_adjust_breakpoints.patch and instead just adjust location of the test breakpoint in Lib/test/test_pdb.py via sed, because we have shortened Lib/pdb.py by removing the shebang (bpo#45964).- Add pdb_adjust_breakpoints.patch fixing expectd results in test_pdb_breakpoints_preserved_across_interactive_sessions (bpo#45964).- Remove shebangs from from python-base libraries in _libdir (bsc#1193179). - Readjust patches: - bpo-31046_ensurepip_honours_prefix.patch - decimal.patch - python-3.3.0b1-fix_date_time_compiler.patch- Move rpm-build-python construct to correct place.- BuildRequire rpm-build-python: The provider to inject python(abi) has been moved there. rpm-build pulls rpm-build-python automatically in when building anything against python3-base, but this implies that the initial build of python3-base does not trigger the automatic installation.- Final release of 3.10.0: Complete list on https://www.python.org/downloads/release/python-3100/, but highlights are: - PEP 623 – Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 – Allow writing union types as X | Y - PEP 612 – Parameter Specification Variables - PEP 626 – Precise line numbers for debugging and other tools. - PEP 618 – Add Optional Length-Checking To zip. - PEP 632 – Deprecate distutils module. - PEP 613 – Explicit Type Aliases - PEP 634 – Structural Pattern Matching: Specification - PEP 635 – Structural Pattern Matching: Motivation and Rationale - PEP 636 – Structural Pattern Matching: Tutorial - PEP 644 – Require OpenSSL 1.1.1 or newer - PEP 624 – Remove Py_UNICODE encoder APIs - PEP 597 – Add optional EncodingWarning - bpo-12782: Parenthesized context managers are now officially allowed.- Switch on option --with-system-libmpdec (bsc#1189356).- Reenable profileopt with qemu emulation, test_faulthandler is no longer run during profiling- test_faulthandler is still problematic under qemu linux-user emulation, disable it there- Update to 3.10.0rc1 (the penultimate prerelease), which contains plenty of small bugfixes among others: - bpo#38605: from __future__ import annotations (PEP 563) used to be on this list in previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. - bpo-44600: Fix incorrect line numbers while tracing some failed patterns in match statements. Patch by Charles Burkland. - plenty of modifications in types.Union- Update to 3.10.0b4: https://docs.python.org/3.10/whatsnew/changelog.html#python-3-10-0-beta-4 - Remove python3-imp-returntype.patch which has been upstreamed.- Update to 3.10.0b2: - PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 -- Allow writing union types as X | Y - PEP 612 -- Parameter Specification Variables - PEP 626 -- Precise line numbers for debugging and other tools. - PEP 618 -- Add Optional Length-Checking To zip. - bpo-12782: Parenthesized context managers are now officially allowed. - PEP 632 -- Deprecate distutils module. - PEP 613 -- Explicit Type Aliases - PEP 634 -- Structural Pattern Matching: Specification - PEP 635 -- Structural Pattern Matching: Motivation and Rationale - PEP 636 -- Structural Pattern Matching: Tutorial - PEP 644 -- Require OpenSSL 1.1.1 or newer - PEP 624 -- Remove Py_UNICODE encoder APIs - PEP 597 -- Add optional EncodingWarning - Removed patches (assumed upstream): - sphinx-update-removed-function.patch- Revert previous skip over test_capi - Add skip-test_pyobject_freed_is_freed.patch to skip failing test on SLE-15.- allow build with Sphinx >= 3.x- Exclude test_capi on Leap (test fails there)- Stop providing "python" symbol (bsc#1185588), which means python2 currently.- Update to 3.9.5: * Security - bpo-43434: Creating a sqlite3.Connection object now also produces a sqlite3.connect auditing event. Previously this event was only produced by sqlite3.connect() calls. Patch by Erlend E. Aasland. - bpo-43882: The presence of newline or tab characters in parts of a URL could allow some forms of attacks. - Following the controlling specification for URLs defined by WHATWG urllib.parse() now removes ASCII newlines and tabs from URLs, preventing such attacks. - bpo-43472: Ensures interpreter-level audit hooks receive the cpython.PyInterpreterState_New event when called through the _xxsubinterpreters module. - bpo-36384: ipaddress module no longer accepts any leading zeros in IPv4 address strings. Leading zeros are ambiguous and interpreted as octal notation by some libraries. For example the legacy function socket.inet_aton() treats leading zeros as octal notatation. glibc implementation of modern inet_pton() does not accept any leading zeros. For a while the ipaddress module used to accept ambiguous leading zeros. - bpo-43075: Fix Regular Expression Denial of Service (ReDoS) vulnerability in urllib.request.AbstractBasicAuthHandler. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server. - bpo-42800: Audit hooks are now fired for frame.f_code, traceback.tb_frame, and generator code/frame attribute access. * Core and Builtins - bpo-43105: Importlib now resolves relative paths when creating module spec objects from file locations. - bpo-42924: Fix bytearray repetition incorrectly copying data from the start of the buffer, even if the data is offset within the buffer (e.g. after reassigning a slice at the start of the bytearray to a shorter byte string). * Library - bpo-43993: Update bundled pip to 21.1.1. - bpo-43937: Fixed the turtle module working with non-default root window. - bpo-43930: Update bundled pip to 21.1 and setuptools to 56.0.0 - bpo-43920: OpenSSL 3.0.0: load_verify_locations() now returns a consistent error message when cadata contains no valid certificate. - bpo-43607: urllib can now convert Windows paths with \\?\ prefixes into URL paths. - bpo-43284: platform.win32_ver derives the windows version from sys.getwindowsversion().platform_version which in turn derives the version from kernel32.dll (which can be of a different version than Windows itself). Therefore change the platform.win32_ver to determine the version using the platform module’s _syscmd_ver private function to return an accurate version. - bpo-42248: [Enum] ensure exceptions raised in _missing__ are released - bpo-43799: OpenSSL 3.0.0: define OPENSSL_API_COMPAT 1.1.1 to suppress deprecation warnings. Python requires OpenSSL 1.1.1 APIs. - bpo-43794: Add ssl.OP_IGNORE_UNEXPECTED_EOF constants (OpenSSL 3.0.0) - bpo-43789: OpenSSL 3.0.0: Don’t call the password callback function a second time when first call has signaled an error condition. - bpo-43788: The header files for ssl error codes are now OpenSSL version-specific. Exceptions will now show correct reason and library codes. The make_ssl_data.py script has been rewritten to use OpenSSL’s text file with error codes. - bpo-43655: tkinter dialog windows are now recognized as dialogs by window managers on macOS and X Window. - bpo-43534: turtle.textinput() and turtle.numinput() create now a transient window working on behalf of the canvas window. - bpo-43522: Fix problem with hostname_checks_common_name. OpenSSL does not copy hostflags from struct SSL_CTX to struct SSL. - bpo-42967: Allow bytes separator argument in urllib.parse.parse_qs and urllib.parse.parse_qsl when parsing str query strings. Previously, this raised a TypeError. - bpo-43176: Fixed processing of a dataclass that inherits from a frozen dataclass with no fields. It is now correctly detected as an error. - bpo-41735: Fix thread locks in zlib module may go wrong in rare case. Patch by Ma Lin. - bpo-36470: Fix dataclasses with InitVars and replace(). Patch by Claudiu Popa. - bpo-32745: Fix a regression in the handling of ctypes’ ctypes.c_wchar_p type: embedded null characters would cause a ValueError to be raised. Patch by Zackery Spytz. * Documentation - bpo-43959: The documentation on the PyContextVar C-API was clarified. - bpo-43938: Update dataclasses documentation to express that FrozenInstanceError is derived from AttributeError. - bpo-43755: Update documentation to reflect that unparenthesized lambda expressions can no longer be the expression part in an if clause in comprehensions and generator expressions since Python 3.9. - bpo-43739: Fixing the example code in Doc/extending/extending.rst to declare and initialize the pmodule variable to be of the right type. * Tests - bpo-43961: Fix test_logging.test_namer_rotator_inheritance() on Windows: use os.replace() rather than os.rename(). Patch by Victor Stinner. - bpo-43842: Fix a race condition in the SMTP test of test_logging. Don’t close a file descriptor (socket) from a different thread while asyncore.loop() is polling the file descriptor. Patch by Victor Stinner. - bpo-43811: Tests multiple OpenSSL versions on GitHub Actions. Use ccache to speed up testing. - bpo-43791: OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and 1.1. Tests are failing with TLSV1_ALERT_INTERNAL_ERROR. - Refreshed patches: - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch - Add vendorized files from bluez-devel to enable building support for Bluetooth.- Make sure to close the import_failed.map file after the exception has been raised in order to avoid ResourceWarnings when the failing import is part of a try...except block.- Update to 3.9.4: - bpo#43710: Reverted the fix for https://bugs.python.org/issue42500 as it changed the PyThreadState struct size and broke the 3.9.x ABI in the 3.9.3 release (visible on 32-bit platforms using binaries compiled using an earlier version of Python 3.9.x headers). - bpo#26053: Fixed bug where the pdb interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. - bpo#42988 (bsc#1183374) CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schwörer. - bpo#43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it. - bpo#43439: Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo. - bpo#43660: Fix crash that happens when replacing sys.stderr with a callable that can remove the object while an exception is being printed. Patch by Pablo Galindo. - bpo#43555: Report the column offset for SyntaxError for invalid line continuation characters. Patch by Pablo Galindo. - bpo#43517: Fix misdetection of circular imports when using from pkg.mod import attr, which caused false positives in non-trivial multi-threaded code. - bpo#35883: Python no longer fails at startup with a fatal error if a command line argument contains an invalid Unicode character. The Py_DecodeLocale() function now escapes byte sequences which would be decoded as Unicode characters outside the [U+0000; U+10ffff] range. - bpo#43406: Fix a possible race condition where PyErr_CheckSignals tries to execute a non-Python signal handler. - bpo#42500: Improve handling of exceptions near recursion limit. Converts a number of Fatal Errors in RecursionErrors. - bpo#43433: xmlrpc.client.ServerProxy no longer ignores query and fragment in the URL of the server. - bpo#35930: Raising an exception raised in a “future” instance will create reference cycles. - bpo#43577: Fix deadlock when using ssl.SSLContext debug callback with ssl.SSLContext.sni_callback(). - bpo#43521: ast.unparse can now render NaNs and empty sets. - bpo#43423: subprocess.communicate() no longer raises an IndexError when there is an empty stdout or stderr IO buffer during a timeout on Windows. - bpo#27820: Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with initial_response_ok=False will fail. The cause is that SMTP.auth_login _always_ returns a password if provided with a challenge string, thus non-compliant with the standard for AUTH LOGIN. Also fixes bug with the test for smtpd. - bpo#43332: Improves the networking efficiency of http.client when using a proxy via set_tunnel(). Fewer small send calls are made during connection setup. - bpo#43399: Fix ElementTree.extend not working on iterators when using the Python implementation - bpo#43316: The python -m gzip command line application now properly fails when detecting an unsupported extension. It exits with a non-zero exit code and prints an error message to stderr. - bpo#43260: Fix TextIOWrapper can not flush internal buffer forever after very large text is written. - bpo#42782: Fail fast in shutil.move() to avoid creating destination directories on failure. - bpo#37193: Fixed memory leak in socketserver.ThreadingMixIn introduced in Python 3.7. - bpo#43199: Answer “Why is there no goto?” in the Design and History FAQ. - bpo#43407: Clarified that a result from time.monotonic(), time.perf_counter(), time.process_time(), or time.thread_time() can be compared with the result from any following call to the same function - not just the next immediate call. - bpo#27646: Clarify that ‘yield from ’ works with any iterable, not just iterators. - bpo#36346: Update some deprecated unicode APIs which are documented as “will be removed in 4.0” to “3.12”. See PEP 623 for detail. - bpo#37945: Fix test_getsetlocale_issue1813() of test_locale: skip the test if setlocale() fails. Patch by Victor Stinner. - bpo#41561: Add workaround for Ubuntu’s custom OpenSSL security level policy. - bpo#43288: Fix test_importlib to correctly skip Unicode file tests if the fileystem does not support them. - bpo#43617: Improve configure.ac: Check for presence of autoconf-archive package and remove our copies of M4 macros. - bpo#42225: Document that IDLE can fail on Unix either from misconfigured IP masquerage rules or failure displaying complex colored (non-ascii) characters. - bpo#43283: Document why printing to IDLE’s Shell is often slower than printing to a system terminal and that it can be made faster by pre-formatting a single string before printing.- Update to 3.9.2: - bpo#42938 (bsc#1181126): Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values. This issue was assigned CVE-2021-3177. - bpo#42967 (bsc#1182379): Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator. This issue was assigned CVE-2021-23336. - Upstreamed patches were removed: - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch - bsc1167501-invalid-alignment.patch - skip_random_failing_tests.patch - CVE-2019-5010-null-defer-x509-cert-DOS.patch- Add Obsoletes for python3-base when primary interpreter is set to properly replace it during upgrades. (bsc#1181324)- Update to 3.9.1: Security bugs: - Prevented potential DoS attack via CPU and RAM exhaustion when processing malformed Apple Property List files in binary format. - The plistlib module no longer accepts entity declarations in XML plist files to avoid XML vulnerabilities. This should not affect users as entity declarations are not used in regular plist files. - Add volatile to the accumulator variable in hmac.compare_digest, making constant-time-defeating optimizations less likely. Core and Builtins - Allow assignment expressions in set literals and set comprehensions as per PEP 572. Patch by Pablo Galindo. - Fix a regression introduced by the new parser, where an unparenthesized walrus operator was not allowed within generator expressions. - types.GenericAlias objects can now be the targets of weakrefs. - Fixed a bug in the PEG parser that was causing crashes in debug mode. Now errors are checked in left-recursive rules to avoid cases where such errors do not get handled in time and appear as long-distance crashes in other places. - Fixed a possible crash in the PEG parser when checking for the ‘!=’ token in the barry_as_flufl rule. Patch by Pablo Galindo. - Fix handling of errors during creation of PyFunctionObject, which resulted in operations on uninitialized memory. Patch by Yonatan Goldschmidt. - Fix a bug in the parser, where a curly brace following a primary didn’t fail immediately. This led to invalid expressions like a {b} to throw a SyntaxError with a wrong offset, or invalid expressions ending with a curly brace like a { to not fail immediately in the REPL. - Fix possible buffer overflow in the new parser when checking for continuation lines. Patch by Pablo Galindo. - Run the parser two times. On the first run, disable all the rules that only generate better error messages to gain performance. If there’s a parse failure, run the parser a second time with those enabled. - Document the default implementation of object.__eq__. - Fix peephole optimizer misoptimize conditional jump + JUMP_IF_NOT_EXC_MATCH pair. - The garbage collector now tracks all user-defined classes. Patch by Brandt Bucher. - Fixed potential issues with removing not completely initialized module from sys.modules when import fails. - Star-unpacking is now allowed for with item’s targets in the PEG parser. - Fixed stack overflow in issubclass() and isinstance() when getting the __bases__ attribute leads to infinite recursion. - When loading a native module and a load failure occurs, prevent a possible UnicodeDecodeError when not running in a UTF-8 locale by decoding the load error message using the current locale’s encoding. - Correctly count control blocks in ‘except’ in compiler. Ensures that a syntax error, rather a fatal error, occurs for deeply nested, named exception handlers. Library - types.GenericAlias will now raise a TypeError when attempting to initialize with a keyword argument. Previously, this would cause the interpreter to crash if the interpreter was compiled with debug symbols. This does not affect interpreters compiled for release. Patch by Ken Jin. - CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the special purpose getallmatchingheaders with generic get_all method and add relevant tests. - inspect.findsource() now raises OSError instead of IndexError when co_lineno of a code object is greater than the file length. This can happen, for example, when a file is edited after it was imported. PR by Irit Katriel. - Fix handling of trailing comments by inspect.getsource(). - ChainMap.__iter__ no longer calls __getitem__ on underlying maps - TracebackException no longer holds a reference to the exception’s traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal. - We fixed an issue in pickle.whichmodule in which importing multiprocessing could change the how pickle identifies which module an object belongs to, potentially breaking the unpickling of those objects. - Clarify the error message for asyncio.IncompleteReadError when expected is None. - Extracting a symlink from a tarball should succeed and overwrite the symlink if it already exists. The fix is to remove the existing file or symlink before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and Senthil Kumaran. - Fixed tkinter.ttk.Style.map(). The function accepts now the representation of the default state as empty sequence (as returned by Style.map()). The structure of the result is now the same on all platform and does not depend on the value of wantobjects. - Fix various issues with typing.Literal parameter handling (flatten, deduplicate, use type to cache key). Patch provided by Yurii Karabas. - Fix the threading.Thread class at fork: do nothing if the thread is already stopped (ex: fork called at Python exit). Previously, an error was logged in the child process. - The onerror callback from shutil.rmtree now receives correct function when os.open fails. - Fix os.sendfile() on illumos. - Fixed writing binary Plist files larger than 4 GiB. - The repr() of typing types containing Generic Alias Types previously did not show the parameterized types in the GenericAlias. They have now been changed to do so. - webbrowser: Ignore NotADirectoryError when calling xdg-settings. - binhex.binhex() consisently writes macOS 9 line endings. - Fix a stack overflow error for asyncio Task or Future repr(). - The overflow occurs under some circumstances when a Task or Future recursively returns itself. - Fix memory leak in subprocess.Popen() in case an uid (gid) specified in user (group, extra_groups) overflows uid_t (gid_t). - Improve asyncio.wait function to create the futures set just one time. - InvalidFileException and RecursionError are now the only errors caused by loading malformed binary Plist file (previously ValueError and TypeError could be raised in some specific cases). - Pickling heap types implemented in C with protocols 0 and 1 raises now an error instead of producing incorrect data. - plistlib: fix parsing XML plists with hexadecimal integer values - Fix an incorrectly formatted error from _codecs.charmap_decode() when called with a mapped value outside the range of valid Unicode code points. PR by Max Bernstein. - Fix pickling pure Python datetime.time subclasses. Patch by Dean Inwood. - Fixed a bug that was causing ctypes.util.find_library() to return None when triying to locate a library in an environment when gcc>=9 is available and ldconfig is not. Patch by Pablo Galindo - C14N 2.0 serialisation in xml.etree.ElementTree failed for unprefixed attributes when a default namespace was defined. - Fix a bug in the symtable module that was causing module-scope global variables to not be reported as both local and global. Patch by Pablo Galindo. - str() for the type attribute of the tkinter.Event object always returns now the numeric code returned by Tk instead of the name of the event type. - fix tkinter.EventType Enum so all members are strings, and none are tuples - Fix SQLite3 segfault when backing up closed database. Patch contributed by Peter David McCormick. - Fix the tarfile module to write only basename of TAR file to GZIP compression header. - Allow ctypes.wintypes to be imported on non-Windows systems. - shutil.which() now ignores empty entries in PATHEXT instead of treating them as a match. - Fix time-of-check/time-of-action issue in subprocess.Popen.send_signal. - Fix --outfile for cProfile / profile not writing the output file in the original directory when the program being profiled changes the working directory. PR by Anthony Sottile. - ZipFile truncates files to avoid corruption when a shorter comment is provided in append (“a”) mode. Patch by Jan Mazur. - Fixed KeyError exception when flattening an email to a string attempts to replace a non-existent Content-Transfer-Encoding header. Documentation - Fix the URL for the IMAP protocol documents. - Document __format__ functionality for IP addresses. - Clarify that subscription expressions are also valid for certain classes and types in the standard library, and for user-defined classes and types if the classmethod __class_getitem__() is provided. - Documented generic alias type and types.GenericAlias. Also added an entry in glossary for generic types. - In Programming FAQ “Sequences (Tuples/Lists)” section, add “How do you remove multiple items from a list”. - Fix RemovedInSphinx40Warning when building the documentation. Patch by Dong-hee Na. - Update the refcounts info of PyType_FromModuleAndSpec. - Fix tarfile’s extractfile documentation - Document some restrictions on the default string representations of numeric classes. Tests - Reenable test_gdb on gdb 9.2 and newer: https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb 10.1. - Fix test_asyncio.test_call_later() race condition: don’t measure asyncio performance in the call_later() unit test. The test failed randomly on the CI. - Include _testinternalcapi module in Windows installer for test suite - Fix test_logging.test_race_between_set_target_and_flush(): the test now waits until all threads complete to avoid leaking running threads. - Avoid a test failure in test_lib2to3 if the module has already imported at the time the test executes. Patch by Pablo Galindo. - Tests for CJK codecs no longer call eval() on content received via HTTP. - Fix test_site.test_license_exists_at_url(): call urllib.request.urlcleanup() to reset the global urllib.request._opener. Patch by Victor Stinner. - test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available - Add tests for SIGINT handling in the runpy module. - Fixed a failure in test_tk.test_widgets.ScaleTest happening when executing the test with Tk 8.6.10. Build - Fix a race condition in “make regen-all” when make -jN option is used to run jobs in parallel. The clinic.py script now only use atomic write to write files. Moveover, generated files are now left unchanged if the content does not change, to not change the file modification time. - Update Py_UNREACHABLE to use __builtin_unreachable() if only the compiler is able to use it. Patch by Dong-hee Na. - Addressed three compiler warnings found by undefined behavior sanitizer (ubsan). IDLE - Fix reporting offset of the RE error in searchengine. - Get docstrings for IDLE calltips more often by using inspect.getdoc. - Mostly finish using ttk widgets, mainly for editor, settings, and searches. Some patches by Mark Roseman. - Use ‘IDLE Shell’ as shell title - Rewrite the Calltips doc section. - In calltips, stop reminding that ‘/’ marks the end of positional-only arguments. - Typing opening and closing parentheses inside the parentheses of a function call will no longer cause unnecessary “flashing” off and on of an existing open call-tip, e.g. when typed in a string literal. C API - Fix potential crash in deallocating method objects when dynamically allocated PyMethodDef’s lifetime is managed through the self argument of a PyCFunction. - Py_FileSystemDefaultEncodeErrors and Py_UTF8Mode are available again in limited API. - Readjustet and reapplied patches: - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch - skip_random_failing_tests.patch - sphinx-update-removed-function.patch- Add CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch fixing bsc#1181126 (CVE-2021-3177) buffer overflow in PyCArg_repr in _ctypes/callproc.c, which may lead to remote code execution.- (bsc#1180125) We really don't Require python-rpm-macros package. Unnecessary dependency.- Make python39-doc building again - Add no-skipif-doctests.patch, because SLE-15 version of Sphinx doesn't know about skipif directive in doctests.- Update sphinx-update-removed-function.patch patch to the latest version in python36.- Last try before this results in an editwar: * remove importlib_resources and importlib-metadata provides/obsoletes * import importlib_resources is not the same as import importlib.resources, same for metadata * The backport packages from PyPI needed for older flavors are specified as such for setuptools or in pyproject.toml. If a package requires them they typically add them with a python version qualifier and the packages have their own version numbers.- Add patch sphinx-update-removed-function.patch to no longer call a now removed function and to make documentation build independent of the Sphinx version (bsc#1179630, gh#python/cpython#13236).- Don't require packages which break build on SLE-15 although we really don't need them (python3-python-docs-theme and python3-sphinxcontrib-qthelp).- Fix build with RPM 4.16: error: bare words are no longer supported, please use "...": x86 == ppc.- Update to the final version 3.9.0: Complete changelog with all (many) changes from previous version is on https://docs.python.org/release/3.9.0/whatsnew/3.9.html Changes from the previous RC versions (not that many) are on https://docs.python.org/release/3.9.0/whatsnew/changelog.html#changelog- Buildrequire timezone only for general flavor. It's used in this flavor for the test suite.- Update to 3.9.0rc1: * Core and Builtins - bpo-38156: Handle interrupts that come after EOF correctly in PyOS_StdioReadline. * Library - bpo-41497: Fix potential UnicodeDecodeError in dis module. - bpo-41490: Update ensurepip to install pip 20.2.1 and setuptools 49.2.1. - bpo-41467: On Windows, fix asyncio recv_into() return value when the socket/pipe is closed (BrokenPipeError): return 0 rather than an empty byte string (b''). - bpo-41425: Make tkinter doc example runnable. - bpo-41384: Raise TclError instead of TypeError when an unknown option is passed to tkinter.OptionMenu. - bpo-38731: Fix NameError in command-line interface of py_compile. - bpo-41317: Use add_done_callback() in asyncio.loop.sock_accept() to unsubscribe reader early on cancellation. - bpo-41364: Reduce import overhead of uuid. - bpo-41341: Recursive evaluation of typing.ForwardRef in get_type_hints. - bpo-41182: selector: use DefaultSelector based upon implementation - bpo-40726: Handle cases where the end_lineno is None on ast.increment_lineno(). * Documentation - bpo-41045: Add documentation for debug feature of f-strings. - bpo-41314: Changed the release when from __future__ import annotations becomes the default from 4.0 to 3.10 (following a change in PEP 563). * Windows - bpo-41492: Fixes the description that appears in UAC prompts. - bpo-40948: Improve post-install message to direct people to the “py” command. - bpo-41412: The installer will now fail to install on Windows 7 and Windows 8. Further, the UCRT dependency is now always downloaded on demand. - bpo-40741: Update Windows release to include SQLite 3.32.3. * IDLE - bpo-41468: Improve IDLE run crash error message (which users should never see). - bpo-41373: Save files loaded with no line ending, as when blank, or different line endings, by setting its line ending to the system default. Fix regression in 3.8.4 and 3.9.0b4.- Synchronize formatting and fixes with python38.- Increase testsuite timeout to account for super long running test_peg_generator- Removed CVE-2019-20907_tarfile-inf-loop.patch: fixed in upstream - Removed recursion.tar: contained in upstream - Update to 3.9.0b5: - bpo-41304: Fixes python3x._pth being ignored on Windows, caused by the fix for bpo-29778 (CVE-2020-15801). - bpo-41162: Audit hooks are now cleared later during finalization to avoid missing events. - bpo-29778: Ensure python3.dll is loaded from correct locations when Python is embedded (CVE-2020-15523). - bpo-39603: Prevent http header injection by rejecting control characters in http.client.putrequest(…). - bpo-41295: Resolve a regression in CPython 3.8.4 where defining “__setattr__” in a multi-inheritance setup and calling up the hierarchy chain could fail if builtins/extension types were involved in the base types. - bpo-41247: Always cache the running loop holder when running asyncio.set_running_loop. - bpo-41252: Fix incorrect refcounting in _ssl.c’s _servername_callback(). - bpo-41215: Use non-NULL default values in the PEG parser keyword list to overcome a bug that was ' preventing Python from being properly compiled when using the XLC compiler. Patch by Pablo Galindo. - bpo-41218: Python 3.8.3 had a regression where compiling with ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would aggressively mark list comprehension with CO_COROUTINE. Now only list comprehension making use of async/await will tagged as so. - bpo-41175: Guard against a NULL pointer dereference within bytearrayobject triggered by the bytearray() + bytearray() operation. - bpo-39960: The “hackcheck” that prevents sneaking around a type’s __setattr__() by calling the superclass method was rewritten to allow C implemented heap types. - bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the C implementation raises now UnpicklingError instead of crashing. - bpo-39017: Avoid infinite loop when reading specially crafted TAR files using the tarfile module (CVE-2019-20907, bsc#1174091). - bpo-41235: Fix the error handling in ssl.SSLContext.load_dh_params(). - bpo-41207: In distutils.spawn, restore expectation that DistutilsExecError is raised when the command is not found. - bpo-39168: Remove the __new__ method of typing.Generic. - bpo-41194: Fix a crash in the _ast module: it can no longer be loaded more than once. It now uses a global state rather than a module state. - bpo-39384: Fixed email.contentmanager to allow set_content() to set a null string. - bpo-41300: Save files with non-ascii chars. Fix regression released in 3.9.0b4 and 3.8.4. - bpo-37765: Add keywords to module name completion list. Rewrite Completions section of IDLE doc. - bpo-40170: Revert PyType_HasFeature() change: it reads again directly the PyTypeObject.tp_flags member when the limited C API is not used, rather than always calling PyType_GetFlags() which hides implementation details.- Add CVE-2019-20907_tarfile-inf-loop.patch fixing bsc#1174091 (CVE-2019-20907, bpo#39017) avoiding possible infinite loop in specifically crafted tarball. Add recursion.tar as a testing tarball for the patch.- Changed bpo-31046_ensurepip_honours_prefix.patch to include fix from py3.8- Spec file fixes - Re-added subprocess-raise-timeout.patch: now compatible - Removed bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch: contained in upstream- Fix minor issues found in the staging.- Do not set ourselves as primary interpreter- Update to 3.9.0b4: - PEP 584, Union Operators in dict - PEP 585, Type Hinting Generics In Standard Collections - PEP 593, Flexible function and variable annotations - PEP 602, Python adopts a stable annual release cadence - PEP 615, Support for the IANA Time Zone Database in the Standard Library - PEP 616, String methods to remove prefixes and suffixes - PEP 617, New PEG parser for CPython - bpo#38379, garbage collection does not block on resurrected objects; - bpo#38692, os.pidfd_open added that allows process management without races and signals; - bpo#39926, Unicode support updated to version 13.0.0; - bpo#1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore; - A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall; - A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489; - A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384. - Remove upstreamed patches: - F00102-lib64.patch - SUSE-FEDORA-multilib.patch - OBS_dev-shm.patch - subprocess-raise-timeout.patch - bpo36302-sort-module-sources.patch - bpo40784-Fix-sqlite3-deterministic-test.patch- Update pre_checkin.sh and regenerate- Convert few dependencies to their pkgconfig counterparts- Remove release requirement on libpython, it is not really needed to be equal as the abi changes with versions- Add provides python3-bla on all the subpkgs in case we are primary provider of the functionality- Remove unversioned files from devel subpkg too - Remove main python3 files from -base based whether we are primary interpreter or not - Fix idle to be co-installable - Add condition to be primary to provide/obsolete python3-* - Fix doc to build in versioned folder so the pythons can be installed next to each other- Revert the full versioning of calls on the macros. These are generic so they should really just call python3 X- For the doc package we can build with generic flavor, we don't need the our-interpreter based one- Add provides for pytohn3X-typing/etc to allow BR on those still to work when needed- Change macros.python3 to use full versioned 3.8 instead of just 3 for python interpreter- Reduce some now unused conditionals- Redux the -base dependencies to match up pre-merge layout- Generate baselibs in pre-checkin too- Generate the importlib-failed using pre_checking again - Add back the information about skipped tests on the pre_checkin output- Use %python_pkg_name instead of hardcoding python3 where applicable - Sort out preamble with spec-cleaner- Calculate required variables instead of relying on their continuous manual update- Fix the -base module build again to generate only the deps we need- Replace OBS_dev-shm.patch with the upstream PR#20944- Use the %{python_pkg_name} on more places to allow easier multiversioning - Switch to _multibuild approach for easier maintenance of this package. All is now in one spec file with 3 conditionals: * bcond_with base * bcond_with doc * bcond_with general- add requires python3-base on libpython subpackage (bsc#1167008)- build against Sphinx 2.x until python is compatible with Sphinx 3.x (see gh#python/cpython#19397, bpo#40204)- Fix build with SQLite 3.32 (bpo#40783) add bpo40784-Fix-sqlite3-deterministic-test.patch- Update to version 3.8.3: - Complete list of changes is available at https://docs.python.org/release/3.8.3/whatsnew/changelog.html#python-3-8-3-final, but most of them are just bugfixes. - Removed patch CVE-2020-8492-urllib-ReDoS.patch: contained in upstream- Add #!BuildIgnore: gdk-pixbuf-loader-rsvg to python3 SPEC- Add patch bsc1167501-invalid-alignment.patch (bsc#1167501, bpo#40052) to fix alignment in abstract.h header file.- Update list of skipped tests for qemu linux-user build, test_setegid (test.test_os.PosixUidGidTests) is confusing it- Update to 3.8.2: - Complete list of changes is available at https://docs.python.org/release/3.8.2/whatsnew/changelog.html#python-3-8-2-final, but most of them are just bugfixes. - Updated patches: - F00102-lib64.patch - OBS_dev-shm.patch - SUSE-FEDORA-multilib.patch - subprocess-raise-timeout.patch- Add CVE-2020-8492-urllib-ReDoS.patch fixing the security bug "Python urrlib allowed an HTTP server to conduct Regular Expression Denial of Service (ReDoS)" (bsc#1162367)- Add Requires: libpython%{so_version} == %{version}-%{release} to python3-base to keep both packages always synchronized (bsc#1162224).- Do not pull in bluez in base again, explain the cycle, it needs to be solved by bluez maintainer for us by providing just the headers separately- Reame idle icons to idle3 in order to not conflict with python2 variant of the package * renamed the icons * renamed icon load in desktop file- Add importlib_resources provide/obsolete as it is integral part of the lang since 3.7 release- Add -fno-semantic-interposition as it brings speed up: https://fedoraproject.org/wiki/Changes/PythonNoSemanticInterpositionSpeedup- Update to 3.8.1: - This is mainly bugfix release and no significant changes to API are expected. The full changelog is available on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-1 - Remove bpo-38688_shutil.copytree_prevent-infinite-recursion.patch, which is included in the upstream tarball.- Add bpo-31046_ensurepip_honours_prefix.patch which makes ensurepip to honour the value of $(prefix). Proposed fix for bpo#31046..- Move bluez-devel dependency to base as it is needed for socket.AF_BLUETOOTH and otherwise does not work- Reintroduce QtHelp with the help of the new BR python-sphinxcontrib-qthelp.- Fix SUSE-FEDORA-multilib.patch, the platform agnostic infix for library installation is "lib", not "dir".- Move idle subpackage build from python3-base to python3. appstream-glib required for packaging introduces considerable extra dependencies and a build loop via rust/librsvg. - Correct installation of idle IDE icons: + idle.png is not the target directory + non-GNOME-specific icons belong into icons/hicolor - Add required Name key to idle3 desktop file- Update to the final release 3.8.0. . - New Features: - Assignment expressions - Positional-only parameters - Parallel filesystem cache for compiled bytecode files - Debug build uses the same ABI as release build - f-strings support = for self-documenting expressions and debugging - PEP 578: Python Runtime Audit Hooks - PEP 587: Python Initialization Configuration - Vectorcall: a fast calling protocol for CPython - Pickle protocol 5 with out-of-band data buffers - New modules: - importlib.metadata - Improved modules: - ast asyncio, builtins, collections, curses, ctypes, datetime, functools, gc, gettext, gzip, idelib and IDLE, inspect, io, json.tool, math, mmap, multiprocessing, os, os.path, pathlib, pickle, plistlib, py_compile, shlex, shutil, socket, ssl, statistics, sys, tarfile, threading, tokenize, tkinter, time, typing, unicodedata, unittest, venv, weakref, xml - C API improvements - bdist_winnst command has been deprecated (use bdist_wheel) - https://docs.python.org/3.8/whatsnew/3.8.html remains rest of changes including documentation on how to port your programs to the current version of Python.- Add idle3.appdata.xml and idle3.desktop (originally from Fedora) to make Idle3 full GUI desktop application. (bsc#1153830)- Drop intltool from BuildRequires. Doesn't appear to be used.- Add folder version to allow tarball downloads even for beta/rc releases- Revert patches from Fedora (F00102-lib64.patch and F00251-change-user-install-location.patch) into their original prisitine Fedora versions, SUSE-FEDORA-multilib.patch refreshed accordingly.- Correct quotation of platsubdir in Lib/distutils/command/install.py- Replace python-3.6.0-multilib.patch with two patches from Fedora (F00102-lib64.patch and F00251-change-user-install-location.patch), and our own SUSE-FEDORA-multilib.patch to allow better cooperation with Fedora and better upstreaming. - Add OBS_dev-shm.patch fixing bpo#38377- Pull in just gettext and let solver to sort out between: gettext-runtime-mini and gettext-runtime- Update to 3.8.0rc1. Overall changes from 3.7: - PEP 572, Assignment expressions - PEP 570, Positional-only arguments - PEP 587, Python Initialization Configuration (improved embedding) - PEP 590, Vectorcall: a fast calling protocol for CPython - PEP 578, Runtime audit hooks - PEP 574, Pickle protocol 5 with out-of-band data - Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict) - Parallel filesystem cache for compiled bytecode - Debug builds share ABI as release builds, also the 'm' ABI tag was removed (irrelevant since 3.4), bpo#36707 - f-strings support a handy = specifier for debugging - continue is now legal in finally: blocks - on Windows, the default asyncio event loop is now ProactorEventLoop - on macOS, the spawn start method is now used by default in multiprocessing - multiprocessing can now use shared memory segments to avoid pickling costs between processes - typed_ast is merged back to CPython - LOAD_GLOBAL is now 40% faster - pickle now uses Protocol 4 by default, improving performance - Refreshed patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.6.0-multilib.patch - subprocess-raise-timeout.patch- Add bpo36302-sort-module-sources.patch (boo#1041090)- Try harder obsoleting importlib-metadata- Update to 3.8.0b4: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-4- Re-enable test_threading on aarch64- Remove xrpm from subpackage tk description- Update to 3.8.0b3: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-3 - Patches reapplied: - python-3.3.0b1-fix_date_time_compiler.patch - python-3.3.0b1-test-posix_fadvise.patch - python-3.6.0-multilib.patch - subprocess-raise-timeout.patch- Add Provides: python3-importlib-metadata- Update to 3.8.0b2: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-2 - Patches included in upstream: - bpo-37169_PyObject_IsFreed.patch - Patches reapplied: - 00251-change-user-install-location.patch - distutils-reproducible-compile.patch - python-3.3.0b1-localpath.patch - python-3.6.0-multilib.patch- Update list of skipped tests for qemu linux-user build - Don't do profiling in qemu linux-user build- Update to 3.8.0b1 (changes since 3.7.*): - PEP 572, Assignment expressions - PEP 570, Positional-only arguments - PEP 587, Python Initialization Configuration (improved embedding) - PEP 590, Vectorcall: a fast calling protocol for CPython - PEP 578, Runtime audit hooks - PEP 574, Pickle protocol 5 with out-of-band data - Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict) - Parallel filesystem cache for compiled bytecode - Debug builds share ABI as release builds - f-strings support a handy = specifier for debugging - continue is now legal in finally: blocks - multiprocessing can now use shared memory segments to avoid pickling costs between processes - typed_ast is merged back to CPython - LOAD_GLOBAL is now 40% faster - pickle now uses Protocol 4 by default, improving performance - Remove patches which were included in the upstream: - 00251-change-user-install-location.patch - 00316-mark-bdist_wininst-unsupported.patch - CVE-2019-9947-no-ctrl-char-http.patch - raise_SIGING_not_handled.patch- Set _lto_cflags to nil as the package is using LTO via --enable-lto. That will prevent to propage LTO for Python modules that are built in a separate package.- Update to 3.8.0.a3: - PEP 572: Assignment Expressions. - Other (mostly small) changes are on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-3- bsc#1130840 (CVE-2019-9947): add CVE-2019-9947-no-ctrl-char-http.patch Address the issue by disallowing URL paths with embedded whitespace or control characters through into the underlying http client request. Such potentially malicious header injection URLs now cause a ValueError to be raised.- Fix metadata of patches. - Rename boo1071941-make-install-in-sep-loc.patch to 00251-change-user-install-location.patch which is the original name, so it can be looked up in the Fedora VCS.- Mark distutils bdist_wininst command unsupported with 00316-mark-bdist_wininst-unsupported.patch - Remove Windows bdist_wininst executables from runtime package- Update to 3.7.3, which is the maintenance release without any significant changes in API. - Updated patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - distutils-reproducible-compile.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.6.0-multilib.patch - raise_SIGING_not_handled.patch- Remove building of Qt Develop help files.- Return distutils-reproducible-compile.patch which is still missing (still unfinished bpo#29708).- Update to 3.8.0a2: * List of all (mostly small) changes are on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-2- Build nis module again.- Update to 3.8.0a1: * The most visible change so far is probably the implementation of PEP 572: Assignment Expressions. For a detailed list of changes, see: https://docs.python.org/3.8/whatsnew/changelog.html * Recover building of nis module properly in python3 package - Update patches: * CVE-2019-5010-null-defer-x509-cert-DOS.patch * python-3.3.0b1-fix_date_time_compiler.patch * python-3.3.0b1-test-posix_fadvise.patch * python-3.6.0-multilib.patch * raise_SIGING_not_handled.patch- Put LICENSE file where it belongs (bsc#1121852)- bsc#1122191: add CVE-2019-5010-null-defer-x509-cert-DOS.patch fixing bpo-35746. An exploitable denial-of-service vulnerability exists in the X509 certificate parser of Python.org Python 2.7.11 / 3.7.2. A specially crafted X509 certificate can cause a NULL pointer dereference, resulting in a denial of service. An attacker can initiate or accept TLS connections using crafted certificates to trigger this vulnerability.- Do not require full gettext in order to avoid pulling in the glib2 as a dependency- Update to 3.7.2: * bugfix release: https://docs.python.org/3.7/whatsnew/changelog.html#changelog- Stop applying python-3.6.0-multilib-new.patch (which is still WIP), and apply the old proven python-3.6.0-multilib.patch instead.- Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Upgrade to 3.7.2rc1: * bugfix release, for the full list of all changes see https://docs.python.org/3.7/whatsnew/changelog.html#changelog - Make run of the test suite more verbose- Write summaries without em dashes.- Remove python-3.3.0b1-curses-panel.patch it is unnecessary anymore. - Add boo1071941-make-install-in-sep-loc.patch to make pip and distutils in user environment install into separate location (boo#1071941) Set values of prefix and exec_prefix in distutils install command to /usr/local if executable is /usr/bin/python* and RPM build is not detected to make pip and distutils install into separate location - Remove finally python-3.3.3-skip-distutils-test_sysconfig_module.patch - Remove distutils-reproducible-compile.patch which doesn't make really much difference in reproducibility (see gh#python/cpython#8057 and discussion there).- Rename Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch to bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch- Add dependency on bluez-devel to build support for Bluetooth (boo#1109998)- Add devhelp subpackage and split qthelp into another subpackage.- Remove python-3.0b1-record-rpm.patch and Python-3.0b1-record-rpm.patch, as they are not needed anymore- Switch off test_threading for optimization builds.- Update to python-3.7.1. This is just a brief overview, complete changelog available at https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-1-final: Library bpo-34970: Protect tasks weak set manipulation in asyncio.all_tasks() - Patches already accepted upstream are removed: * 00307-allow-to-call-Py_Main-after-Py_Initialize.patch * 00308-tls-1.3.patch - New patches added: * Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch * raise_SIGING_not_handled.patch - All other patches refreshed via quilt.- Add raise_SIGING_not_handled.patch to fix bsc#1094814- Add patch to fix importlib return types: * python3-imp-returntype.patch- bpo-34022 still not completely fixed, so we have to keep excluding test_cmd_line_script, test_multiprocessing_main_handling, and test_runpy from the test suite.- Update to python 3.7.1~rc2: Core and Builtins bpo-34879: Fix a possible null pointer dereference in bytesobject.c. Patch by Zackery Spytz. bpo-34854: Fixed a crash in compiling string annotations containing a lambda with a keyword-only argument that doesn’t have a default value. bpo-34320: Fix dict(od) didn’t copy iteration order of OrderedDict. Library bpo-34769: Fix for async generators not finalizing when event loop is in debug mode and garbage collector runs in another thread. bpo-34922: Fixed integer overflow in the digest() and hexdigest() methods for the SHAKE algorithm in the hashlib module. bpo-34900: Fixed unittest.TestCase.debug() when used to call test methods with subtests. Patch by Bruno Oliveira. bpo-34871: Fix inspect module polluted sys.modules when parsing __text_signature__ of callable. bpo-34872: Fix self-cancellation in C implementation of asyncio.Task bpo-34819: Use a monotonic clock to compute timeouts in Executor.map() and as_completed(), in order to prevent timeouts from deviating when the system clock is adjusted. bpo-34334: In QueueHandler, clear exc_text from LogRecord to prevent traceback from being written twice. bpo-6721: Acquire the logging module’s commonly used internal locks while fork()ing to avoid deadlocks in the child process. bpo-34172: Fix a reference issue inside multiprocessing.Pool that caused the pool to remain alive if it was deleted without being closed or terminated explicitly. Documentation bpo-32174: chm document displays non-ASCII charaters properly on some MBCS Windows systems. Tests bpo-32962: Fixed test_gdb when Python is compiled with flags - mcet -fcf-protection -O0. C API bpo-34910: Ensure that PyObject_Print() always returns -1 on error. Patch by Zackery Spytz.- Add Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch to fix problems with SOURCE_DATE_EPOCH variable (bpo-34022)- Add patch to fix build with tls1.3 supported openssl * 00308-tls-1.3.patch - Add patch to fix Py_Main calls after Py_initialize * 00307-allow-to-call-Py_Main-after-Py_Initialize.patch- Add -fwrapv to OPTS, which is default for python3 anyway See for example https://github.com/zopefoundation/persistent/issues/86 for bugs which are caused by avoiding it.- Fix ownership of _contextvars, _queue, and _xxtestfuzz- Switch off LTO for distros with older GCC - Fix %files- Add dependency over libuuid-devel- update to python 3.7.0 Complete overview of changes is available on https://docs.python.org/3/whatsnew/3.7.html, these are just highlights: * PEP 563, postponed evaluation of type annotations. * async and await are now reserved keywords. * New library modules: contextvars: PEP 567 – Context Variables dataclasses: PEP 557 – Data Classes importlib.resources * New built-in features: PEP 553, the new breakpoint() function. * Python data model improvements: PEP 562, customization of access to module attributes. PEP 560, core support for typing module and generic types. the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec. * Significant improvements in the standard library: The asyncio module has received new features, significant usability and performance improvements. The time module gained support for functions with nanosecond resolution. * CPython implementation improvements: Avoiding the use of ASCII as a default text encoding: PEP 538, legacy C locale coercion PEP 540, forced UTF-8 runtime mode PEP 552, deterministic .pycs the new development runtime mode PEP 565, improved DeprecationWarning handling * C API improvements: PEP 539, new C API for thread-local storage * Documentation improvements: PEP 545, Python documentation translations New documentation translations: Japanese, French, and Korean. - drop python3-sorted_tar.patch - drop 0001-allow-for-reproducible-builds-of-python-packages.patch - refresh python-3.6.0-multilib-new.patch - refresh subprocess-raise-timeout.patch * new C API for thread-local storage * Deterministic pyc files * Built-in breakpoint() * Data Classes * Core support for typing module and generic types * Customization of access to module attributes * Postponed evaluation of annotations * Time functions with nanosecond resolution * Improved DeprecationWarning handling * Context Variables * Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion and PEP 540, forced UTF-8 runtime mode) * The insertion-order preservation nature of dict objects is now an official part of the Python language spec. * Notable performance improvements in many areas.- disable lto with gcc versions below 7 (results in link failures)- Use faster find subcommand execution strategies.- Do not mention the testsuite disabling in opts as it was moved to main pkg so base is test-free- As we run in main python package do not generate the pre_checkin from both now- Move the tests from base to generic package wrt bsc#1088573 * We still fail the whole distro if python3 is not build * The other archs than x86_64 took couple of hours to unblock build of other software, this way we work around the issue - Some tests are still run in -base for the LTO tweaking, but at least it is not run twice- update to 3.6.5 * bugfix release * see Misc/NEWS for details - drop ctypes-pass-by-value.patch - drop fix-localeconv-encoding-for-LC_NUMERIC.patch - refresh python-3.6.0-multilib-new.patch- Created %so_major and %so_minor macros - Put Tools/gdb/libpython.py script into proper place and ship it with devel subpackage.- ctypes-pass-by-value.patch: Fix pass by value for structs on aarch64- Add python3-sorted_tar.patch (boo#1081750)- Drop python3-tk and python3-idle recommends to reduce python3 always pulling X stack bsc#1081751- Add patch to fix glibc 2.27 fail bsc#1079761: * fix-localeconv-encoding-for-LC_NUMERIC.patch- Update skip_random_failing_tests.patch (for PowerPC) to avoid test_call_later failure- move XML modules and python3-xml provide to python3-base (fixes bsc#1077230) - move ensurepip to base- Add skip_random_failing_tests.patch only for PowerPC- update to 3.6.4 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed python3-ncurses-6.0-accessors.patch - drop PYTHONSTARTUP hooks that cause spurious startup errors * fixes bsc#1070738 * the relevant feature (REPL history) is now built into Python itself- Install 2to3-%{python_version} executable (override defattr of the -tools package). 2to3 (unversioned) is a symlink and does not carry permissions (bsc#1070853).- move 2to3 to python3-tools package- update to 3.6.3 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- drop python-2.7-libffi-aarch64.patch: this patches the intree copy of libffi which is unused/deleted in the line afterwards - fix build against system libffi: include flags weren't set so it actually used the in-tree libffi headers.- Fix test broken with OpenSSL 1.1 (bsc#1042670) * add 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- Update RPM group for python documentation.- fix missing %{?armsuffix}- distutils-reproducible-compile.patch: ensure distutils order files before compiling, which works around bsc#1049186- Add libnsl-devel build requires for glibc obsoleting libnsl- update to 3.6.2 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed test-socket-aead-kernel49.patch - add Provides: python3-typing (fixes bsc#1050653) - drop duplicate Provides: python3- drop db-devel from requirements- Add missing link to python library in config dir (bsc#1040164)- update to 3.6.1 * bugfix release, over a hundred bugs fixed * never add import location's parent directory to sys.path * switch to git for version control, build changes related to that * fix "failed to get random numbers" on old kernels (bsc#1029902) * several crashes and memory leaks corrected * f-string are no longer accepted as docstrings- prevent regenerating AST at build-time more robustly - add "--without profileopt" and "--without testsuite" options to python3-base to allow short circuiting when working on the package- Add 0001-allow-for-reproducible-builds-of-python-packages.patch upstream https://github.com/python/cpython/pull/296- reenable test_socket with AEAD patch (test-socket-aead-kernel49.patch) - reintroduce %py3_soflags macro (and better named %cpython3_soabi equivalent)- update to 3.6.0 * PEP 498 Formated string literals * PEP 515 Underscores in numeric literals * PEP 526 Syntax for variable annotations * PEP 525 Asynchronous generators * PEP 530 Asynchronous comprehensions * PEP 506 New "secrets" module for safe key generation * less memory consumed by dicts * dtrace and systemtap support * improved asyncio module * better defaults for ssl * new hashing algorithms in hashlib * bytecode format changed to allow more optimizations * "async" and "await" are on track to be reserved words * StopIteration from generators is deprecated * support for openssl < 1.0.2 is deprecated * os.urandom now blocks when getrandom() blocks * huge number of new features, bugfixes and optimizations * see https://docs.python.org/3.6/whatsnew/3.6.html for details - rework multilib patch: drop Python-3.5.0-multilib.patch, implement upstreamable python-3.6.0-multilib-new.patch - refresh python-3.3.0b1-localpath.patch, subprocess-raise-timeout.patch - drop upstreamed Python-3.5.1-fix_lru_cache_copying.patch - finally drop python-2.6b1-canonicalize2.patch that was not applied in source and only kept around in case we needed it in the future. (which we don't, as it seems) - update import_failed map and baselibs - build ctypes against system libffi (buildrequire libffi-devel in python3-base) - add new key to keyring (signed by keys already in keyring) - introduced common configure section between python3 and python3-base - moved pyconfig.h and Makefile to devel subpackage as distutils no longer need it at runtime - added python-rpm-macros dependency, regenerated macros file, drop macros.python3.py because it is not used now - improve summaries and descriptions (fixes bsc#917607) - enabled Link-Time Optimization, see what happens - including skipped_tests.py in pre_checkin.sh run - run specs through spec-cleaner, rearrange sections- move _hashlib and _ssl modules and tests to python3-base - recommend python3- Skip test_asyncio under qemu_user_space_build- Add Python-3.5.1-fix_lru_cache_copying.patch Fix copying the lru_cache() wrapper object. Fixes deep-copying lru_cache regression, which worked on previous versions of python but fails on python 3.5. This fixes a bunch of packages in devel:languages:python3. See: https://bugs.python.org/issue25447- Build the docs in .qch format as well- update to 3.5.1 * bugfix-only release, dozens of bugs fixed - Drop upstreamed Python-3.5.0-_Py_atomic_xxx-symbols.patch - "Python3" to "Python 3" in summary * This seems cleaner and fixes and rpmlint warning- Add Python-3.5.0-_Py_atomic_xxx-symbols.patch This fixes a build error for many packages that use the Python, C-API. This patch is already accepted upstream and is slated to appear in python 3.5.1.- update to 3.5.0 * coroutines with async/await syntax * matrix multiplication operator `@` * unpacking generalizations * new modules `typing` and `zipapp` * type annotations * .pyo files replaced by custom suffixes for optimization levels in __pycache__ * support for memory BIO in ssl module * performance improvements in several modules * and many more - removals and behavior changes * deprecated `__version__` is removed * support for .pyo files was removed * system calls are auto-retried on EINTR * bare generator expressions in function calls now cause SyntaxError (change "f(x for x in i)" to "f((x for x in i))" to fix) * removed undocumented `format` member of private `PyMemoryViewObject` struct * renamed `PyMemAllocator` to `PyMemAllocatorEx` - redefine %dynlib macro to reflect that modules now have arch+os as part of name - module `time` is now built-in - dropped upstreamed patches: python-3.4.1-fix-faulthandler.patch python-3.4.3-test-conditional-ssl.patch python-fix-short-dh.patch (also dropped dh2048.pem required for this patch) - updated patch Python-3.3.0b2-multilib.patch to Python-3.5.0-multilib.patch - python-ncurses-6.0-accessors.patch taken from python 2 to fix build failure with new gcc + ncurses- Add python3-ncurses-6.0-accessors.patch: Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1.- improve import_failed hook to do the right thing when invoking missing modules with "python3 -m modulename" (boo#942751)- Build with --enable-loadable-sqlite-extensions to make it works as geospatial database.- Fix source list for previous change (add dh2048.pem).- dh2048.pem: added generated 2048 dh parameter set to fix ssl test (bsc#935856) - python-fix-short-dh.patch: replace the 512 bits dh parameter set by 2048 bits to fix build with new openssl 1.0.2c (bsc#935856)- ctypes-libffi-aarch64.patch: remove upstreamed patch - python-2.7-libffi-aarch64.patch: Fix argument passing in libffi for aarch64- drop the PDF subpackage (removes the massive texlive dependency, and most likely nobody is using the PDFs anyway)- python-3.4.3-test-conditional-ssl.patch - restore tests failing because test_urllib was unconditionally importing ssl (without really needing it) - restore functionality of multilib patch - drop libffi-ppc64le.diff because upstream completely changed everything yet again (sorry ppc64 folks :| )- Update to version 3.4.3 - Drop upstreamed CVE-2014-4650-CGIHTTPServer-traversal.patch (bpo#21766)- Add python-3.4.1-fix-faulthandler.patch, upstream patch for bogus faulthandler which fails with GCC 5.- asyncio has been merged in python3 main package; provide and obsolete it - Remove obsolete AUTHORS section - Remove redundant %clean section- Only pkgconfig(x11) is required for build, not the whole set of packages provided by xorg-x11-devel metapackage.- add %python3_version rpm macro for Fedora compatibility - add missing argument in import_failed, rename Novell Bugzilla to SUSE Bugzillapython3ibs-power9-15 1720613495  !!#$%$'()*+*-./0123456789:9<=<?@?BBBEFEHHHKLKNONQRQTUVWXYZ[\]^]`a`cdcfgfijilmloporsruvuxyx{|{~~     !"#$#&'()*+,-./0/23256589:;<;>?>ABCDEFGHGJKJMNMPQPSTUVWVYZ[\]^_`_bcbefehihklknonqrqtutwxyz{z}~}999999999999999999K9999999STUVWXYZ[\]^_`abcdefghihkkknopqrqtuvwwwzzz}~       !"#$%&%()(+,+./.111456789:;:=>=@A@CDCFGHIJKLMNOPQRSTUVWVYZY\]^_`_bcbefehijkkknonqrqtuvwxwz{z}~     ! #$#&'&)*),-,/0/232565898;<;>?>ABADEDGHGJKJMNMPQPSTSVVVYYY\\\___bbbeeehhhkkknnnqqqtuvwxwzzz}}}       "#"%&%()(+,+./.121454789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$#&'&)*),-,/0/23256589:;<=>?@ABCBEFEHIJKLKNONQRQTUTWXWZ[\]^_`abcdefghijilmloporsruvuxyz{|}~      !"!$%$'('*+*-.-0123436769:;<=<?@?BCDEFEHIHKLKNONQRSTUTWXWZ[Z]^]`a`cdcfgfijilmloporsruvuxyx{|{~~     !"#$%&'()(+,-./0123456789::<=>?@ABCDEEEHHHKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{{{~~~                         ! " # $ # & ' & ) * + , - . / 0 1 2 3 4 5 6 7 7 7 : ; < = > ? @ A B C D E F G H I H K L M N O P Q R Q T U T W X W Z [ Z ] ^ _ ` a b c d e f g h g j k l m n o n q r q t u t w x y z { | } ~   3.123.12.43.12.4-150600.3.3.13.12.4-150600.3.3.13.12.43.12.43.2     !!!!!!!!! ""###############""""$$%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$&&'''''''''''''''''''''&&&&&&$$(())))))))))))))))))))))))((((((($$**+++++++++++++++****,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-------.................................-----//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000////////////////////////////////////////////////////---1122222222222222222222222222211111111---33444444444335566666666666666666666666666666666666666666666666666666666666666655577888888755555555555555555599::::::99;;<<<<<<<<<<<<<<<;;;;==>>????????????>>>@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@@@@BBCCCCCCCCCCCCCCCCCCBBBBBDDDEEEEEEDFGGFHHIIJJJJJJJJJJJJJJJJJJJJJIIIIIIKKLLLKMMMNNNNNNNNNNNNNNNNNNNNNNNNMMMMMMKOOOOOPPPPPPPPPPPPPPPOKQQRRRRRRQKSSTTTTTTTTTTTTTTTTTTSSSSSUUVVVVVVVVVUUWWWXXXXXXWYYZZZZZZY[[\\\\\\\\\\\\[[[]^^_`apydoc3.12python3.12python3.12site-packages__pycache__python3.12LICENSE.txt__future__.py__hello__.py__phello____init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycspam.cpython-312.opt-1.pycspam.cpython-312.opt-2.pycspam.cpython-312.pycspam.py__pycache____future__.cpython-312.opt-1.pyc__future__.cpython-312.opt-2.pyc__future__.cpython-312.pyc__hello__.cpython-312.opt-1.pyc__hello__.cpython-312.opt-2.pyc__hello__.cpython-312.pyc_aix_support.cpython-312.opt-1.pyc_aix_support.cpython-312.opt-2.pyc_aix_support.cpython-312.pyc_collections_abc.cpython-312.opt-1.pyc_collections_abc.cpython-312.opt-2.pyc_collections_abc.cpython-312.pyc_compat_pickle.cpython-312.opt-1.pyc_compat_pickle.cpython-312.opt-2.pyc_compat_pickle.cpython-312.pyc_compression.cpython-312.opt-1.pyc_compression.cpython-312.opt-2.pyc_compression.cpython-312.pyc_markupbase.cpython-312.opt-1.pyc_markupbase.cpython-312.opt-2.pyc_markupbase.cpython-312.pyc_osx_support.cpython-312.opt-1.pyc_osx_support.cpython-312.opt-2.pyc_osx_support.cpython-312.pyc_py_abc.cpython-312.opt-1.pyc_py_abc.cpython-312.opt-2.pyc_py_abc.cpython-312.pyc_pydatetime.cpython-312.opt-1.pyc_pydatetime.cpython-312.opt-2.pyc_pydatetime.cpython-312.pyc_pydecimal.cpython-312.opt-1.pyc_pydecimal.cpython-312.opt-2.pyc_pydecimal.cpython-312.pyc_pyio.cpython-312.opt-1.pyc_pyio.cpython-312.opt-2.pyc_pyio.cpython-312.pyc_pylong.cpython-312.opt-1.pyc_pylong.cpython-312.opt-2.pyc_pylong.cpython-312.pyc_sitebuiltins.cpython-312.opt-1.pyc_sitebuiltins.cpython-312.opt-2.pyc_sitebuiltins.cpython-312.pyc_strptime.cpython-312.opt-1.pyc_strptime.cpython-312.opt-2.pyc_strptime.cpython-312.pyc_sysconfigdata__linux_powerpc64le-linux-gnu.cpython-312.opt-1.pyc_sysconfigdata__linux_powerpc64le-linux-gnu.cpython-312.opt-2.pyc_sysconfigdata__linux_powerpc64le-linux-gnu.cpython-312.pyc_threading_local.cpython-312.opt-1.pyc_threading_local.cpython-312.opt-2.pyc_threading_local.cpython-312.pyc_weakrefset.cpython-312.opt-1.pyc_weakrefset.cpython-312.opt-2.pyc_weakrefset.cpython-312.pycabc.cpython-312.opt-1.pycabc.cpython-312.opt-2.pycabc.cpython-312.pycaifc.cpython-312.opt-1.pycaifc.cpython-312.opt-2.pycaifc.cpython-312.pycantigravity.cpython-312.opt-1.pycantigravity.cpython-312.opt-2.pycantigravity.cpython-312.pycargparse.cpython-312.opt-1.pycargparse.cpython-312.opt-2.pycargparse.cpython-312.pycast.cpython-312.opt-1.pycast.cpython-312.opt-2.pycast.cpython-312.pycbase64.cpython-312.opt-1.pycbase64.cpython-312.opt-2.pycbase64.cpython-312.pycbdb.cpython-312.opt-1.pycbdb.cpython-312.opt-2.pycbdb.cpython-312.pycbisect.cpython-312.opt-1.pycbisect.cpython-312.opt-2.pycbisect.cpython-312.pycbz2.cpython-312.opt-1.pycbz2.cpython-312.opt-2.pycbz2.cpython-312.pyccProfile.cpython-312.opt-1.pyccProfile.cpython-312.opt-2.pyccProfile.cpython-312.pyccalendar.cpython-312.opt-1.pyccalendar.cpython-312.opt-2.pyccalendar.cpython-312.pyccgi.cpython-312.opt-1.pyccgi.cpython-312.opt-2.pyccgi.cpython-312.pyccgitb.cpython-312.opt-1.pyccgitb.cpython-312.opt-2.pyccgitb.cpython-312.pycchunk.cpython-312.opt-1.pycchunk.cpython-312.opt-2.pycchunk.cpython-312.pyccmd.cpython-312.opt-1.pyccmd.cpython-312.opt-2.pyccmd.cpython-312.pyccode.cpython-312.opt-1.pyccode.cpython-312.opt-2.pyccode.cpython-312.pyccodecs.cpython-312.opt-1.pyccodecs.cpython-312.opt-2.pyccodecs.cpython-312.pyccodeop.cpython-312.opt-1.pyccodeop.cpython-312.opt-2.pyccodeop.cpython-312.pyccolorsys.cpython-312.opt-1.pyccolorsys.cpython-312.opt-2.pyccolorsys.cpython-312.pyccompileall.cpython-312.opt-1.pyccompileall.cpython-312.opt-2.pyccompileall.cpython-312.pycconfigparser.cpython-312.opt-1.pycconfigparser.cpython-312.opt-2.pycconfigparser.cpython-312.pyccontextlib.cpython-312.opt-1.pyccontextlib.cpython-312.opt-2.pyccontextlib.cpython-312.pyccontextvars.cpython-312.opt-1.pyccontextvars.cpython-312.opt-2.pyccontextvars.cpython-312.pyccopy.cpython-312.opt-1.pyccopy.cpython-312.opt-2.pyccopy.cpython-312.pyccopyreg.cpython-312.opt-1.pyccopyreg.cpython-312.opt-2.pyccopyreg.cpython-312.pyccrypt.cpython-312.opt-1.pyccrypt.cpython-312.opt-2.pyccrypt.cpython-312.pyccsv.cpython-312.opt-1.pyccsv.cpython-312.opt-2.pyccsv.cpython-312.pycdataclasses.cpython-312.opt-1.pycdataclasses.cpython-312.opt-2.pycdataclasses.cpython-312.pycdatetime.cpython-312.opt-1.pycdatetime.cpython-312.opt-2.pycdatetime.cpython-312.pycdecimal.cpython-312.opt-1.pycdecimal.cpython-312.opt-2.pycdecimal.cpython-312.pycdifflib.cpython-312.opt-1.pycdifflib.cpython-312.opt-2.pycdifflib.cpython-312.pycdis.cpython-312.opt-1.pycdis.cpython-312.opt-2.pycdis.cpython-312.pycdoctest.cpython-312.opt-1.pycdoctest.cpython-312.opt-2.pycdoctest.cpython-312.pycenum.cpython-312.opt-1.pycenum.cpython-312.opt-2.pycenum.cpython-312.pycfilecmp.cpython-312.opt-1.pycfilecmp.cpython-312.opt-2.pycfilecmp.cpython-312.pycfileinput.cpython-312.opt-1.pycfileinput.cpython-312.opt-2.pycfileinput.cpython-312.pycfnmatch.cpython-312.opt-1.pycfnmatch.cpython-312.opt-2.pycfnmatch.cpython-312.pycfractions.cpython-312.opt-1.pycfractions.cpython-312.opt-2.pycfractions.cpython-312.pycftplib.cpython-312.opt-1.pycftplib.cpython-312.opt-2.pycftplib.cpython-312.pycfunctools.cpython-312.opt-1.pycfunctools.cpython-312.opt-2.pycfunctools.cpython-312.pycgenericpath.cpython-312.opt-1.pycgenericpath.cpython-312.opt-2.pycgenericpath.cpython-312.pycgetopt.cpython-312.opt-1.pycgetopt.cpython-312.opt-2.pycgetopt.cpython-312.pycgetpass.cpython-312.opt-1.pycgetpass.cpython-312.opt-2.pycgetpass.cpython-312.pycgettext.cpython-312.opt-1.pycgettext.cpython-312.opt-2.pycgettext.cpython-312.pycglob.cpython-312.opt-1.pycglob.cpython-312.opt-2.pycglob.cpython-312.pycgraphlib.cpython-312.opt-1.pycgraphlib.cpython-312.opt-2.pycgraphlib.cpython-312.pycgzip.cpython-312.opt-1.pycgzip.cpython-312.opt-2.pycgzip.cpython-312.pychashlib.cpython-312.opt-1.pychashlib.cpython-312.opt-2.pychashlib.cpython-312.pycheapq.cpython-312.opt-1.pycheapq.cpython-312.opt-2.pycheapq.cpython-312.pychmac.cpython-312.opt-1.pychmac.cpython-312.opt-2.pychmac.cpython-312.pycimaplib.cpython-312.opt-1.pycimaplib.cpython-312.opt-2.pycimaplib.cpython-312.pycimghdr.cpython-312.opt-1.pycimghdr.cpython-312.opt-2.pycimghdr.cpython-312.pycinspect.cpython-312.opt-1.pycinspect.cpython-312.opt-2.pycinspect.cpython-312.pycio.cpython-312.opt-1.pycio.cpython-312.opt-2.pycio.cpython-312.pycipaddress.cpython-312.opt-1.pycipaddress.cpython-312.opt-2.pycipaddress.cpython-312.pyckeyword.cpython-312.opt-1.pyckeyword.cpython-312.opt-2.pyckeyword.cpython-312.pyclinecache.cpython-312.opt-1.pyclinecache.cpython-312.opt-2.pyclinecache.cpython-312.pyclocale.cpython-312.opt-1.pyclocale.cpython-312.opt-2.pyclocale.cpython-312.pyclzma.cpython-312.opt-1.pyclzma.cpython-312.opt-2.pyclzma.cpython-312.pycmailbox.cpython-312.opt-1.pycmailbox.cpython-312.opt-2.pycmailbox.cpython-312.pycmailcap.cpython-312.opt-1.pycmailcap.cpython-312.opt-2.pycmailcap.cpython-312.pycmimetypes.cpython-312.opt-1.pycmimetypes.cpython-312.opt-2.pycmimetypes.cpython-312.pycmodulefinder.cpython-312.opt-1.pycmodulefinder.cpython-312.opt-2.pycmodulefinder.cpython-312.pycnetrc.cpython-312.opt-1.pycnetrc.cpython-312.opt-2.pycnetrc.cpython-312.pycnntplib.cpython-312.opt-1.pycnntplib.cpython-312.opt-2.pycnntplib.cpython-312.pycntpath.cpython-312.opt-1.pycntpath.cpython-312.opt-2.pycntpath.cpython-312.pycnturl2path.cpython-312.opt-1.pycnturl2path.cpython-312.opt-2.pycnturl2path.cpython-312.pycnumbers.cpython-312.opt-1.pycnumbers.cpython-312.opt-2.pycnumbers.cpython-312.pycopcode.cpython-312.opt-1.pycopcode.cpython-312.opt-2.pycopcode.cpython-312.pycoperator.cpython-312.opt-1.pycoperator.cpython-312.opt-2.pycoperator.cpython-312.pycoptparse.cpython-312.opt-1.pycoptparse.cpython-312.opt-2.pycoptparse.cpython-312.pycos.cpython-312.opt-1.pycos.cpython-312.opt-2.pycos.cpython-312.pycpathlib.cpython-312.opt-1.pycpathlib.cpython-312.opt-2.pycpathlib.cpython-312.pycpdb.cpython-312.opt-1.pycpdb.cpython-312.opt-2.pycpdb.cpython-312.pycpickle.cpython-312.opt-1.pycpickle.cpython-312.opt-2.pycpickle.cpython-312.pycpickletools.cpython-312.opt-1.pycpickletools.cpython-312.opt-2.pycpickletools.cpython-312.pycpipes.cpython-312.opt-1.pycpipes.cpython-312.opt-2.pycpipes.cpython-312.pycpkgutil.cpython-312.opt-1.pycpkgutil.cpython-312.opt-2.pycpkgutil.cpython-312.pycplatform.cpython-312.opt-1.pycplatform.cpython-312.opt-2.pycplatform.cpython-312.pycplistlib.cpython-312.opt-1.pycplistlib.cpython-312.opt-2.pycplistlib.cpython-312.pycpoplib.cpython-312.opt-1.pycpoplib.cpython-312.opt-2.pycpoplib.cpython-312.pycposixpath.cpython-312.opt-1.pycposixpath.cpython-312.opt-2.pycposixpath.cpython-312.pycpprint.cpython-312.opt-1.pycpprint.cpython-312.opt-2.pycpprint.cpython-312.pycprofile.cpython-312.opt-1.pycprofile.cpython-312.opt-2.pycprofile.cpython-312.pycpstats.cpython-312.opt-1.pycpstats.cpython-312.opt-2.pycpstats.cpython-312.pycpty.cpython-312.opt-1.pycpty.cpython-312.opt-2.pycpty.cpython-312.pycpy_compile.cpython-312.opt-1.pycpy_compile.cpython-312.opt-2.pycpy_compile.cpython-312.pycpyclbr.cpython-312.opt-1.pycpyclbr.cpython-312.opt-2.pycpyclbr.cpython-312.pycpydoc.cpython-312.opt-1.pycpydoc.cpython-312.opt-2.pycpydoc.cpython-312.pycqueue.cpython-312.opt-1.pycqueue.cpython-312.opt-2.pycqueue.cpython-312.pycquopri.cpython-312.opt-1.pycquopri.cpython-312.opt-2.pycquopri.cpython-312.pycrandom.cpython-312.opt-1.pycrandom.cpython-312.opt-2.pycrandom.cpython-312.pycreprlib.cpython-312.opt-1.pycreprlib.cpython-312.opt-2.pycreprlib.cpython-312.pycrlcompleter.cpython-312.opt-1.pycrlcompleter.cpython-312.opt-2.pycrlcompleter.cpython-312.pycrunpy.cpython-312.opt-1.pycrunpy.cpython-312.opt-2.pycrunpy.cpython-312.pycsched.cpython-312.opt-1.pycsched.cpython-312.opt-2.pycsched.cpython-312.pycsecrets.cpython-312.opt-1.pycsecrets.cpython-312.opt-2.pycsecrets.cpython-312.pycselectors.cpython-312.opt-1.pycselectors.cpython-312.opt-2.pycselectors.cpython-312.pycshelve.cpython-312.opt-1.pycshelve.cpython-312.opt-2.pycshelve.cpython-312.pycshlex.cpython-312.opt-1.pycshlex.cpython-312.opt-2.pycshlex.cpython-312.pycshutil.cpython-312.opt-1.pycshutil.cpython-312.opt-2.pycshutil.cpython-312.pycsignal.cpython-312.opt-1.pycsignal.cpython-312.opt-2.pycsignal.cpython-312.pycsite.cpython-312.opt-1.pycsite.cpython-312.opt-2.pycsite.cpython-312.pycsmtplib.cpython-312.opt-1.pycsmtplib.cpython-312.opt-2.pycsmtplib.cpython-312.pycsndhdr.cpython-312.opt-1.pycsndhdr.cpython-312.opt-2.pycsndhdr.cpython-312.pycsocket.cpython-312.opt-1.pycsocket.cpython-312.opt-2.pycsocket.cpython-312.pycsocketserver.cpython-312.opt-1.pycsocketserver.cpython-312.opt-2.pycsocketserver.cpython-312.pycsre_compile.cpython-312.opt-1.pycsre_compile.cpython-312.opt-2.pycsre_compile.cpython-312.pycsre_constants.cpython-312.opt-1.pycsre_constants.cpython-312.opt-2.pycsre_constants.cpython-312.pycsre_parse.cpython-312.opt-1.pycsre_parse.cpython-312.opt-2.pycsre_parse.cpython-312.pycssl.cpython-312.opt-1.pycssl.cpython-312.opt-2.pycssl.cpython-312.pycstat.cpython-312.opt-1.pycstat.cpython-312.opt-2.pycstat.cpython-312.pycstatistics.cpython-312.opt-1.pycstatistics.cpython-312.opt-2.pycstatistics.cpython-312.pycstring.cpython-312.opt-1.pycstring.cpython-312.opt-2.pycstring.cpython-312.pycstringprep.cpython-312.opt-1.pycstringprep.cpython-312.opt-2.pycstringprep.cpython-312.pycstruct.cpython-312.opt-1.pycstruct.cpython-312.opt-2.pycstruct.cpython-312.pycsubprocess.cpython-312.opt-1.pycsubprocess.cpython-312.opt-2.pycsubprocess.cpython-312.pycsunau.cpython-312.opt-1.pycsunau.cpython-312.opt-2.pycsunau.cpython-312.pycsymtable.cpython-312.opt-1.pycsymtable.cpython-312.opt-2.pycsymtable.cpython-312.pycsysconfig.cpython-312.opt-1.pycsysconfig.cpython-312.opt-2.pycsysconfig.cpython-312.pyctabnanny.cpython-312.opt-1.pyctabnanny.cpython-312.opt-2.pyctabnanny.cpython-312.pyctarfile.cpython-312.opt-1.pyctarfile.cpython-312.opt-2.pyctarfile.cpython-312.pyctelnetlib.cpython-312.opt-1.pyctelnetlib.cpython-312.opt-2.pyctelnetlib.cpython-312.pyctempfile.cpython-312.opt-1.pyctempfile.cpython-312.opt-2.pyctempfile.cpython-312.pyctextwrap.cpython-312.opt-1.pyctextwrap.cpython-312.opt-2.pyctextwrap.cpython-312.pycthis.cpython-312.opt-1.pycthis.cpython-312.opt-2.pycthis.cpython-312.pycthreading.cpython-312.opt-1.pycthreading.cpython-312.opt-2.pycthreading.cpython-312.pyctimeit.cpython-312.opt-1.pyctimeit.cpython-312.opt-2.pyctimeit.cpython-312.pyctoken.cpython-312.opt-1.pyctoken.cpython-312.opt-2.pyctoken.cpython-312.pyctokenize.cpython-312.opt-1.pyctokenize.cpython-312.opt-2.pyctokenize.cpython-312.pyctrace.cpython-312.opt-1.pyctrace.cpython-312.opt-2.pyctrace.cpython-312.pyctraceback.cpython-312.opt-1.pyctraceback.cpython-312.opt-2.pyctraceback.cpython-312.pyctracemalloc.cpython-312.opt-1.pyctracemalloc.cpython-312.opt-2.pyctracemalloc.cpython-312.pyctty.cpython-312.opt-1.pyctty.cpython-312.opt-2.pyctty.cpython-312.pycturtle.cpython-312.opt-1.pycturtle.cpython-312.opt-2.pycturtle.cpython-312.pyctypes.cpython-312.opt-1.pyctypes.cpython-312.opt-2.pyctypes.cpython-312.pyctyping.cpython-312.opt-1.pyctyping.cpython-312.opt-2.pyctyping.cpython-312.pycuu.cpython-312.opt-1.pycuu.cpython-312.opt-2.pycuu.cpython-312.pycuuid.cpython-312.opt-1.pycuuid.cpython-312.opt-2.pycuuid.cpython-312.pycwarnings.cpython-312.opt-1.pycwarnings.cpython-312.opt-2.pycwarnings.cpython-312.pycwave.cpython-312.opt-1.pycwave.cpython-312.opt-2.pycwave.cpython-312.pycweakref.cpython-312.opt-1.pycweakref.cpython-312.opt-2.pycweakref.cpython-312.pycwebbrowser.cpython-312.opt-1.pycwebbrowser.cpython-312.opt-2.pycwebbrowser.cpython-312.pycxdrlib.cpython-312.opt-1.pycxdrlib.cpython-312.opt-2.pycxdrlib.cpython-312.pyczipapp.cpython-312.opt-1.pyczipapp.cpython-312.opt-2.pyczipapp.cpython-312.pyczipimport.cpython-312.opt-1.pyczipimport.cpython-312.opt-2.pyczipimport.cpython-312.pyc_aix_support.py_collections_abc.py_compat_pickle.py_compression.py_import_failed__pycache___ctypes_test.cpython-312.opt-1.pyc_ctypes_test.cpython-312.pyc_curses.cpython-312.opt-1.pyc_curses.cpython-312.pyc_dbm.cpython-312.opt-1.pyc_dbm.cpython-312.pyc_gdbm.cpython-312.opt-1.pyc_gdbm.cpython-312.pyc_sqlite3.cpython-312.opt-1.pyc_sqlite3.cpython-312.pyc_testbuffer.cpython-312.opt-1.pyc_testbuffer.cpython-312.pyc_testcapi.cpython-312.opt-1.pyc_testcapi.cpython-312.pyc_testclinic.cpython-312.opt-1.pyc_testclinic.cpython-312.pyc_testimportmultiple.cpython-312.opt-1.pyc_testimportmultiple.cpython-312.pyc_testinternalcapi.cpython-312.opt-1.pyc_testinternalcapi.cpython-312.pyc_testmultiphase.cpython-312.opt-1.pyc_testmultiphase.cpython-312.pyc_testsinglephase.cpython-312.opt-1.pyc_testsinglephase.cpython-312.pyc_tkinter.cpython-312.opt-1.pyc_tkinter.cpython-312.pyc_xxinterpchannels.cpython-312.opt-1.pyc_xxinterpchannels.cpython-312.pyc_xxtestfuzz.cpython-312.opt-1.pyc_xxtestfuzz.cpython-312.pyccurses.cpython-312.opt-1.pyccurses.cpython-312.pycdbm.cpython-312.opt-1.pycdbm.cpython-312.pycidlelib.cpython-312.opt-1.pycidlelib.cpython-312.pycimport_failed.cpython-312.opt-1.pycimport_failed.cpython-312.pycnis.cpython-312.opt-1.pycnis.cpython-312.pycreadline.cpython-312.opt-1.pycreadline.cpython-312.pycsqlite3.cpython-312.opt-1.pycsqlite3.cpython-312.pyctest.cpython-312.opt-1.pyctest.cpython-312.pyctkinter.cpython-312.opt-1.pyctkinter.cpython-312.pycturtledemo.cpython-312.opt-1.pycturtledemo.cpython-312.pyc_ctypes_test.py_curses.py_dbm.py_gdbm.py_sqlite3.py_testbuffer.py_testcapi.py_testclinic.py_testimportmultiple.py_testinternalcapi.py_testmultiphase.py_testsinglephase.py_tkinter.py_xxinterpchannels.py_xxtestfuzz.pycurses.pydbm.pyidlelib.pyimport_failed.mapimport_failed.pynis.pyreadline.pysqlite3.pytest.pytkinter.pyturtledemo.py_markupbase.py_osx_support.py_py_abc.py_pydatetime.py_pydecimal.py_pyio.py_pylong.py_sitebuiltins.py_strptime.py_sysconfigdata__linux_powerpc64le-linux-gnu.py_threading_local.py_weakrefset.pyabc.pyaifc.pyantigravity.pyargparse.pyast.pyasyncio__init__.py__main__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc__main__.cpython-312.opt-1.pyc__main__.cpython-312.opt-2.pyc__main__.cpython-312.pycbase_events.cpython-312.opt-1.pycbase_events.cpython-312.opt-2.pycbase_events.cpython-312.pycbase_futures.cpython-312.opt-1.pycbase_futures.cpython-312.opt-2.pycbase_futures.cpython-312.pycbase_subprocess.cpython-312.opt-1.pycbase_subprocess.cpython-312.opt-2.pycbase_subprocess.cpython-312.pycbase_tasks.cpython-312.opt-1.pycbase_tasks.cpython-312.opt-2.pycbase_tasks.cpython-312.pycconstants.cpython-312.opt-1.pycconstants.cpython-312.opt-2.pycconstants.cpython-312.pyccoroutines.cpython-312.opt-1.pyccoroutines.cpython-312.opt-2.pyccoroutines.cpython-312.pycevents.cpython-312.opt-1.pycevents.cpython-312.opt-2.pycevents.cpython-312.pycexceptions.cpython-312.opt-1.pycexceptions.cpython-312.opt-2.pycexceptions.cpython-312.pycformat_helpers.cpython-312.opt-1.pycformat_helpers.cpython-312.opt-2.pycformat_helpers.cpython-312.pycfutures.cpython-312.opt-1.pycfutures.cpython-312.opt-2.pycfutures.cpython-312.pyclocks.cpython-312.opt-1.pyclocks.cpython-312.opt-2.pyclocks.cpython-312.pyclog.cpython-312.opt-1.pyclog.cpython-312.opt-2.pyclog.cpython-312.pycmixins.cpython-312.opt-1.pycmixins.cpython-312.opt-2.pycmixins.cpython-312.pycproactor_events.cpython-312.opt-1.pycproactor_events.cpython-312.opt-2.pycproactor_events.cpython-312.pycprotocols.cpython-312.opt-1.pycprotocols.cpython-312.opt-2.pycprotocols.cpython-312.pycqueues.cpython-312.opt-1.pycqueues.cpython-312.opt-2.pycqueues.cpython-312.pycrunners.cpython-312.opt-1.pycrunners.cpython-312.opt-2.pycrunners.cpython-312.pycselector_events.cpython-312.opt-1.pycselector_events.cpython-312.opt-2.pycselector_events.cpython-312.pycsslproto.cpython-312.opt-1.pycsslproto.cpython-312.opt-2.pycsslproto.cpython-312.pycstaggered.cpython-312.opt-1.pycstaggered.cpython-312.opt-2.pycstaggered.cpython-312.pycstreams.cpython-312.opt-1.pycstreams.cpython-312.opt-2.pycstreams.cpython-312.pycsubprocess.cpython-312.opt-1.pycsubprocess.cpython-312.opt-2.pycsubprocess.cpython-312.pyctaskgroups.cpython-312.opt-1.pyctaskgroups.cpython-312.opt-2.pyctaskgroups.cpython-312.pyctasks.cpython-312.opt-1.pyctasks.cpython-312.opt-2.pyctasks.cpython-312.pycthreads.cpython-312.opt-1.pycthreads.cpython-312.opt-2.pycthreads.cpython-312.pyctimeouts.cpython-312.opt-1.pyctimeouts.cpython-312.opt-2.pyctimeouts.cpython-312.pyctransports.cpython-312.opt-1.pyctransports.cpython-312.opt-2.pyctransports.cpython-312.pyctrsock.cpython-312.opt-1.pyctrsock.cpython-312.opt-2.pyctrsock.cpython-312.pycunix_events.cpython-312.opt-1.pycunix_events.cpython-312.opt-2.pycunix_events.cpython-312.pycwindows_events.cpython-312.opt-1.pycwindows_events.cpython-312.opt-2.pycwindows_events.cpython-312.pycwindows_utils.cpython-312.opt-1.pycwindows_utils.cpython-312.opt-2.pycwindows_utils.cpython-312.pycbase_events.pybase_futures.pybase_subprocess.pybase_tasks.pyconstants.pycoroutines.pyevents.pyexceptions.pyformat_helpers.pyfutures.pylocks.pylog.pymixins.pyproactor_events.pyprotocols.pyqueues.pyrunners.pyselector_events.pysslproto.pystaggered.pystreams.pysubprocess.pytaskgroups.pytasks.pythreads.pytimeouts.pytransports.pytrsock.pyunix_events.pywindows_events.pywindows_utils.pybase64.pybdb.pybisect.pybz2.pycProfile.pycalendar.pycgi.pycgitb.pychunk.pycmd.pycode.pycodecs.pycodeop.pycollections__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycabc.cpython-312.opt-1.pycabc.cpython-312.opt-2.pycabc.cpython-312.pycabc.pycolorsys.pycompileall.pyconcurrent__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycfutures__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_base.cpython-312.opt-1.pyc_base.cpython-312.opt-2.pyc_base.cpython-312.pycprocess.cpython-312.opt-1.pycprocess.cpython-312.opt-2.pycprocess.cpython-312.pycthread.cpython-312.opt-1.pycthread.cpython-312.opt-2.pycthread.cpython-312.pyc_base.pyprocess.pythread.pyconfigparser.pycontextlib.pycontextvars.pycopy.pycopyreg.pycrypt.pycsv.pyctypes__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_aix.cpython-312.opt-1.pyc_aix.cpython-312.opt-2.pyc_aix.cpython-312.pyc_endian.cpython-312.opt-1.pyc_endian.cpython-312.opt-2.pyc_endian.cpython-312.pycutil.cpython-312.opt-1.pycutil.cpython-312.opt-2.pycutil.cpython-312.pycwintypes.cpython-312.opt-1.pycwintypes.cpython-312.opt-2.pycwintypes.cpython-312.pyc_aix.py_endian.pymacholibREADME.ctypes__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycdyld.cpython-312.opt-1.pycdyld.cpython-312.opt-2.pycdyld.cpython-312.pycdylib.cpython-312.opt-1.pycdylib.cpython-312.opt-2.pycdylib.cpython-312.pycframework.cpython-312.opt-1.pycframework.cpython-312.opt-2.pycframework.cpython-312.pycdyld.pydylib.pyfetch_macholibfetch_macholib.batframework.pyutil.pywintypes.pydataclasses.pydatetime.pydecimal.pydifflib.pydis.pydoctest.pyemail__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_encoded_words.cpython-312.opt-1.pyc_encoded_words.cpython-312.opt-2.pyc_encoded_words.cpython-312.pyc_header_value_parser.cpython-312.opt-1.pyc_header_value_parser.cpython-312.opt-2.pyc_header_value_parser.cpython-312.pyc_parseaddr.cpython-312.opt-1.pyc_parseaddr.cpython-312.opt-2.pyc_parseaddr.cpython-312.pyc_policybase.cpython-312.opt-1.pyc_policybase.cpython-312.opt-2.pyc_policybase.cpython-312.pycbase64mime.cpython-312.opt-1.pycbase64mime.cpython-312.opt-2.pycbase64mime.cpython-312.pyccharset.cpython-312.opt-1.pyccharset.cpython-312.opt-2.pyccharset.cpython-312.pyccontentmanager.cpython-312.opt-1.pyccontentmanager.cpython-312.opt-2.pyccontentmanager.cpython-312.pycencoders.cpython-312.opt-1.pycencoders.cpython-312.opt-2.pycencoders.cpython-312.pycerrors.cpython-312.opt-1.pycerrors.cpython-312.opt-2.pycerrors.cpython-312.pycfeedparser.cpython-312.opt-1.pycfeedparser.cpython-312.opt-2.pycfeedparser.cpython-312.pycgenerator.cpython-312.opt-1.pycgenerator.cpython-312.opt-2.pycgenerator.cpython-312.pycheader.cpython-312.opt-1.pycheader.cpython-312.opt-2.pycheader.cpython-312.pycheaderregistry.cpython-312.opt-1.pycheaderregistry.cpython-312.opt-2.pycheaderregistry.cpython-312.pyciterators.cpython-312.opt-1.pyciterators.cpython-312.opt-2.pyciterators.cpython-312.pycmessage.cpython-312.opt-1.pycmessage.cpython-312.opt-2.pycmessage.cpython-312.pycparser.cpython-312.opt-1.pycparser.cpython-312.opt-2.pycparser.cpython-312.pycpolicy.cpython-312.opt-1.pycpolicy.cpython-312.opt-2.pycpolicy.cpython-312.pycquoprimime.cpython-312.opt-1.pycquoprimime.cpython-312.opt-2.pycquoprimime.cpython-312.pycutils.cpython-312.opt-1.pycutils.cpython-312.opt-2.pycutils.cpython-312.pyc_encoded_words.py_header_value_parser.py_parseaddr.py_policybase.pyarchitecture.rstbase64mime.pycharset.pycontentmanager.pyencoders.pyerrors.pyfeedparser.pygenerator.pyheader.pyheaderregistry.pyiterators.pymessage.pymime__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycapplication.cpython-312.opt-1.pycapplication.cpython-312.opt-2.pycapplication.cpython-312.pycaudio.cpython-312.opt-1.pycaudio.cpython-312.opt-2.pycaudio.cpython-312.pycbase.cpython-312.opt-1.pycbase.cpython-312.opt-2.pycbase.cpython-312.pycimage.cpython-312.opt-1.pycimage.cpython-312.opt-2.pycimage.cpython-312.pycmessage.cpython-312.opt-1.pycmessage.cpython-312.opt-2.pycmessage.cpython-312.pycmultipart.cpython-312.opt-1.pycmultipart.cpython-312.opt-2.pycmultipart.cpython-312.pycnonmultipart.cpython-312.opt-1.pycnonmultipart.cpython-312.opt-2.pycnonmultipart.cpython-312.pyctext.cpython-312.opt-1.pyctext.cpython-312.opt-2.pyctext.cpython-312.pycapplication.pyaudio.pybase.pyimage.pymessage.pymultipart.pynonmultipart.pytext.pyparser.pypolicy.pyquoprimime.pyutils.pyencodings__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycaliases.cpython-312.opt-1.pycaliases.cpython-312.opt-2.pycaliases.cpython-312.pycascii.cpython-312.opt-1.pycascii.cpython-312.opt-2.pycascii.cpython-312.pycbase64_codec.cpython-312.opt-1.pycbase64_codec.cpython-312.opt-2.pycbase64_codec.cpython-312.pycbig5.cpython-312.opt-1.pycbig5.cpython-312.opt-2.pycbig5.cpython-312.pycbig5hkscs.cpython-312.opt-1.pycbig5hkscs.cpython-312.opt-2.pycbig5hkscs.cpython-312.pycbz2_codec.cpython-312.opt-1.pycbz2_codec.cpython-312.opt-2.pycbz2_codec.cpython-312.pyccharmap.cpython-312.opt-1.pyccharmap.cpython-312.opt-2.pyccharmap.cpython-312.pyccp037.cpython-312.opt-1.pyccp037.cpython-312.opt-2.pyccp037.cpython-312.pyccp1006.cpython-312.opt-1.pyccp1006.cpython-312.opt-2.pyccp1006.cpython-312.pyccp1026.cpython-312.opt-1.pyccp1026.cpython-312.opt-2.pyccp1026.cpython-312.pyccp1125.cpython-312.opt-1.pyccp1125.cpython-312.opt-2.pyccp1125.cpython-312.pyccp1140.cpython-312.opt-1.pyccp1140.cpython-312.opt-2.pyccp1140.cpython-312.pyccp1250.cpython-312.opt-1.pyccp1250.cpython-312.opt-2.pyccp1250.cpython-312.pyccp1251.cpython-312.opt-1.pyccp1251.cpython-312.opt-2.pyccp1251.cpython-312.pyccp1252.cpython-312.opt-1.pyccp1252.cpython-312.opt-2.pyccp1252.cpython-312.pyccp1253.cpython-312.opt-1.pyccp1253.cpython-312.opt-2.pyccp1253.cpython-312.pyccp1254.cpython-312.opt-1.pyccp1254.cpython-312.opt-2.pyccp1254.cpython-312.pyccp1255.cpython-312.opt-1.pyccp1255.cpython-312.opt-2.pyccp1255.cpython-312.pyccp1256.cpython-312.opt-1.pyccp1256.cpython-312.opt-2.pyccp1256.cpython-312.pyccp1257.cpython-312.opt-1.pyccp1257.cpython-312.opt-2.pyccp1257.cpython-312.pyccp1258.cpython-312.opt-1.pyccp1258.cpython-312.opt-2.pyccp1258.cpython-312.pyccp273.cpython-312.opt-1.pyccp273.cpython-312.opt-2.pyccp273.cpython-312.pyccp424.cpython-312.opt-1.pyccp424.cpython-312.opt-2.pyccp424.cpython-312.pyccp437.cpython-312.opt-1.pyccp437.cpython-312.opt-2.pyccp437.cpython-312.pyccp500.cpython-312.opt-1.pyccp500.cpython-312.opt-2.pyccp500.cpython-312.pyccp720.cpython-312.opt-1.pyccp720.cpython-312.opt-2.pyccp720.cpython-312.pyccp737.cpython-312.opt-1.pyccp737.cpython-312.opt-2.pyccp737.cpython-312.pyccp775.cpython-312.opt-1.pyccp775.cpython-312.opt-2.pyccp775.cpython-312.pyccp850.cpython-312.opt-1.pyccp850.cpython-312.opt-2.pyccp850.cpython-312.pyccp852.cpython-312.opt-1.pyccp852.cpython-312.opt-2.pyccp852.cpython-312.pyccp855.cpython-312.opt-1.pyccp855.cpython-312.opt-2.pyccp855.cpython-312.pyccp856.cpython-312.opt-1.pyccp856.cpython-312.opt-2.pyccp856.cpython-312.pyccp857.cpython-312.opt-1.pyccp857.cpython-312.opt-2.pyccp857.cpython-312.pyccp858.cpython-312.opt-1.pyccp858.cpython-312.opt-2.pyccp858.cpython-312.pyccp860.cpython-312.opt-1.pyccp860.cpython-312.opt-2.pyccp860.cpython-312.pyccp861.cpython-312.opt-1.pyccp861.cpython-312.opt-2.pyccp861.cpython-312.pyccp862.cpython-312.opt-1.pyccp862.cpython-312.opt-2.pyccp862.cpython-312.pyccp863.cpython-312.opt-1.pyccp863.cpython-312.opt-2.pyccp863.cpython-312.pyccp864.cpython-312.opt-1.pyccp864.cpython-312.opt-2.pyccp864.cpython-312.pyccp865.cpython-312.opt-1.pyccp865.cpython-312.opt-2.pyccp865.cpython-312.pyccp866.cpython-312.opt-1.pyccp866.cpython-312.opt-2.pyccp866.cpython-312.pyccp869.cpython-312.opt-1.pyccp869.cpython-312.opt-2.pyccp869.cpython-312.pyccp874.cpython-312.opt-1.pyccp874.cpython-312.opt-2.pyccp874.cpython-312.pyccp875.cpython-312.opt-1.pyccp875.cpython-312.opt-2.pyccp875.cpython-312.pyccp932.cpython-312.opt-1.pyccp932.cpython-312.opt-2.pyccp932.cpython-312.pyccp949.cpython-312.opt-1.pyccp949.cpython-312.opt-2.pyccp949.cpython-312.pyccp950.cpython-312.opt-1.pyccp950.cpython-312.opt-2.pyccp950.cpython-312.pyceuc_jis_2004.cpython-312.opt-1.pyceuc_jis_2004.cpython-312.opt-2.pyceuc_jis_2004.cpython-312.pyceuc_jisx0213.cpython-312.opt-1.pyceuc_jisx0213.cpython-312.opt-2.pyceuc_jisx0213.cpython-312.pyceuc_jp.cpython-312.opt-1.pyceuc_jp.cpython-312.opt-2.pyceuc_jp.cpython-312.pyceuc_kr.cpython-312.opt-1.pyceuc_kr.cpython-312.opt-2.pyceuc_kr.cpython-312.pycgb18030.cpython-312.opt-1.pycgb18030.cpython-312.opt-2.pycgb18030.cpython-312.pycgb2312.cpython-312.opt-1.pycgb2312.cpython-312.opt-2.pycgb2312.cpython-312.pycgbk.cpython-312.opt-1.pycgbk.cpython-312.opt-2.pycgbk.cpython-312.pychex_codec.cpython-312.opt-1.pychex_codec.cpython-312.opt-2.pychex_codec.cpython-312.pychp_roman8.cpython-312.opt-1.pychp_roman8.cpython-312.opt-2.pychp_roman8.cpython-312.pychz.cpython-312.opt-1.pychz.cpython-312.opt-2.pychz.cpython-312.pycidna.cpython-312.opt-1.pycidna.cpython-312.opt-2.pycidna.cpython-312.pyciso2022_jp.cpython-312.opt-1.pyciso2022_jp.cpython-312.opt-2.pyciso2022_jp.cpython-312.pyciso2022_jp_1.cpython-312.opt-1.pyciso2022_jp_1.cpython-312.opt-2.pyciso2022_jp_1.cpython-312.pyciso2022_jp_2.cpython-312.opt-1.pyciso2022_jp_2.cpython-312.opt-2.pyciso2022_jp_2.cpython-312.pyciso2022_jp_2004.cpython-312.opt-1.pyciso2022_jp_2004.cpython-312.opt-2.pyciso2022_jp_2004.cpython-312.pyciso2022_jp_3.cpython-312.opt-1.pyciso2022_jp_3.cpython-312.opt-2.pyciso2022_jp_3.cpython-312.pyciso2022_jp_ext.cpython-312.opt-1.pyciso2022_jp_ext.cpython-312.opt-2.pyciso2022_jp_ext.cpython-312.pyciso2022_kr.cpython-312.opt-1.pyciso2022_kr.cpython-312.opt-2.pyciso2022_kr.cpython-312.pyciso8859_1.cpython-312.opt-1.pyciso8859_1.cpython-312.opt-2.pyciso8859_1.cpython-312.pyciso8859_10.cpython-312.opt-1.pyciso8859_10.cpython-312.opt-2.pyciso8859_10.cpython-312.pyciso8859_11.cpython-312.opt-1.pyciso8859_11.cpython-312.opt-2.pyciso8859_11.cpython-312.pyciso8859_13.cpython-312.opt-1.pyciso8859_13.cpython-312.opt-2.pyciso8859_13.cpython-312.pyciso8859_14.cpython-312.opt-1.pyciso8859_14.cpython-312.opt-2.pyciso8859_14.cpython-312.pyciso8859_15.cpython-312.opt-1.pyciso8859_15.cpython-312.opt-2.pyciso8859_15.cpython-312.pyciso8859_16.cpython-312.opt-1.pyciso8859_16.cpython-312.opt-2.pyciso8859_16.cpython-312.pyciso8859_2.cpython-312.opt-1.pyciso8859_2.cpython-312.opt-2.pyciso8859_2.cpython-312.pyciso8859_3.cpython-312.opt-1.pyciso8859_3.cpython-312.opt-2.pyciso8859_3.cpython-312.pyciso8859_4.cpython-312.opt-1.pyciso8859_4.cpython-312.opt-2.pyciso8859_4.cpython-312.pyciso8859_5.cpython-312.opt-1.pyciso8859_5.cpython-312.opt-2.pyciso8859_5.cpython-312.pyciso8859_6.cpython-312.opt-1.pyciso8859_6.cpython-312.opt-2.pyciso8859_6.cpython-312.pyciso8859_7.cpython-312.opt-1.pyciso8859_7.cpython-312.opt-2.pyciso8859_7.cpython-312.pyciso8859_8.cpython-312.opt-1.pyciso8859_8.cpython-312.opt-2.pyciso8859_8.cpython-312.pyciso8859_9.cpython-312.opt-1.pyciso8859_9.cpython-312.opt-2.pyciso8859_9.cpython-312.pycjohab.cpython-312.opt-1.pycjohab.cpython-312.opt-2.pycjohab.cpython-312.pyckoi8_r.cpython-312.opt-1.pyckoi8_r.cpython-312.opt-2.pyckoi8_r.cpython-312.pyckoi8_t.cpython-312.opt-1.pyckoi8_t.cpython-312.opt-2.pyckoi8_t.cpython-312.pyckoi8_u.cpython-312.opt-1.pyckoi8_u.cpython-312.opt-2.pyckoi8_u.cpython-312.pyckz1048.cpython-312.opt-1.pyckz1048.cpython-312.opt-2.pyckz1048.cpython-312.pyclatin_1.cpython-312.opt-1.pyclatin_1.cpython-312.opt-2.pyclatin_1.cpython-312.pycmac_arabic.cpython-312.opt-1.pycmac_arabic.cpython-312.opt-2.pycmac_arabic.cpython-312.pycmac_croatian.cpython-312.opt-1.pycmac_croatian.cpython-312.opt-2.pycmac_croatian.cpython-312.pycmac_cyrillic.cpython-312.opt-1.pycmac_cyrillic.cpython-312.opt-2.pycmac_cyrillic.cpython-312.pycmac_farsi.cpython-312.opt-1.pycmac_farsi.cpython-312.opt-2.pycmac_farsi.cpython-312.pycmac_greek.cpython-312.opt-1.pycmac_greek.cpython-312.opt-2.pycmac_greek.cpython-312.pycmac_iceland.cpython-312.opt-1.pycmac_iceland.cpython-312.opt-2.pycmac_iceland.cpython-312.pycmac_latin2.cpython-312.opt-1.pycmac_latin2.cpython-312.opt-2.pycmac_latin2.cpython-312.pycmac_roman.cpython-312.opt-1.pycmac_roman.cpython-312.opt-2.pycmac_roman.cpython-312.pycmac_romanian.cpython-312.opt-1.pycmac_romanian.cpython-312.opt-2.pycmac_romanian.cpython-312.pycmac_turkish.cpython-312.opt-1.pycmac_turkish.cpython-312.opt-2.pycmac_turkish.cpython-312.pycmbcs.cpython-312.opt-1.pycmbcs.cpython-312.opt-2.pycmbcs.cpython-312.pycoem.cpython-312.opt-1.pycoem.cpython-312.opt-2.pycoem.cpython-312.pycpalmos.cpython-312.opt-1.pycpalmos.cpython-312.opt-2.pycpalmos.cpython-312.pycptcp154.cpython-312.opt-1.pycptcp154.cpython-312.opt-2.pycptcp154.cpython-312.pycpunycode.cpython-312.opt-1.pycpunycode.cpython-312.opt-2.pycpunycode.cpython-312.pycquopri_codec.cpython-312.opt-1.pycquopri_codec.cpython-312.opt-2.pycquopri_codec.cpython-312.pycraw_unicode_escape.cpython-312.opt-1.pycraw_unicode_escape.cpython-312.opt-2.pycraw_unicode_escape.cpython-312.pycrot_13.cpython-312.opt-1.pycrot_13.cpython-312.opt-2.pycrot_13.cpython-312.pycshift_jis.cpython-312.opt-1.pycshift_jis.cpython-312.opt-2.pycshift_jis.cpython-312.pycshift_jis_2004.cpython-312.opt-1.pycshift_jis_2004.cpython-312.opt-2.pycshift_jis_2004.cpython-312.pycshift_jisx0213.cpython-312.opt-1.pycshift_jisx0213.cpython-312.opt-2.pycshift_jisx0213.cpython-312.pyctis_620.cpython-312.opt-1.pyctis_620.cpython-312.opt-2.pyctis_620.cpython-312.pycundefined.cpython-312.opt-1.pycundefined.cpython-312.opt-2.pycundefined.cpython-312.pycunicode_escape.cpython-312.opt-1.pycunicode_escape.cpython-312.opt-2.pycunicode_escape.cpython-312.pycutf_16.cpython-312.opt-1.pycutf_16.cpython-312.opt-2.pycutf_16.cpython-312.pycutf_16_be.cpython-312.opt-1.pycutf_16_be.cpython-312.opt-2.pycutf_16_be.cpython-312.pycutf_16_le.cpython-312.opt-1.pycutf_16_le.cpython-312.opt-2.pycutf_16_le.cpython-312.pycutf_32.cpython-312.opt-1.pycutf_32.cpython-312.opt-2.pycutf_32.cpython-312.pycutf_32_be.cpython-312.opt-1.pycutf_32_be.cpython-312.opt-2.pycutf_32_be.cpython-312.pycutf_32_le.cpython-312.opt-1.pycutf_32_le.cpython-312.opt-2.pycutf_32_le.cpython-312.pycutf_7.cpython-312.opt-1.pycutf_7.cpython-312.opt-2.pycutf_7.cpython-312.pycutf_8.cpython-312.opt-1.pycutf_8.cpython-312.opt-2.pycutf_8.cpython-312.pycutf_8_sig.cpython-312.opt-1.pycutf_8_sig.cpython-312.opt-2.pycutf_8_sig.cpython-312.pycuu_codec.cpython-312.opt-1.pycuu_codec.cpython-312.opt-2.pycuu_codec.cpython-312.pyczlib_codec.cpython-312.opt-1.pyczlib_codec.cpython-312.opt-2.pyczlib_codec.cpython-312.pycaliases.pyascii.pybase64_codec.pybig5.pybig5hkscs.pybz2_codec.pycharmap.pycp037.pycp1006.pycp1026.pycp1125.pycp1140.pycp1250.pycp1251.pycp1252.pycp1253.pycp1254.pycp1255.pycp1256.pycp1257.pycp1258.pycp273.pycp424.pycp437.pycp500.pycp720.pycp737.pycp775.pycp850.pycp852.pycp855.pycp856.pycp857.pycp858.pycp860.pycp861.pycp862.pycp863.pycp864.pycp865.pycp866.pycp869.pycp874.pycp875.pycp932.pycp949.pycp950.pyeuc_jis_2004.pyeuc_jisx0213.pyeuc_jp.pyeuc_kr.pygb18030.pygb2312.pygbk.pyhex_codec.pyhp_roman8.pyhz.pyidna.pyiso2022_jp.pyiso2022_jp_1.pyiso2022_jp_2.pyiso2022_jp_2004.pyiso2022_jp_3.pyiso2022_jp_ext.pyiso2022_kr.pyiso8859_1.pyiso8859_10.pyiso8859_11.pyiso8859_13.pyiso8859_14.pyiso8859_15.pyiso8859_16.pyiso8859_2.pyiso8859_3.pyiso8859_4.pyiso8859_5.pyiso8859_6.pyiso8859_7.pyiso8859_8.pyiso8859_9.pyjohab.pykoi8_r.pykoi8_t.pykoi8_u.pykz1048.pylatin_1.pymac_arabic.pymac_croatian.pymac_cyrillic.pymac_farsi.pymac_greek.pymac_iceland.pymac_latin2.pymac_roman.pymac_romanian.pymac_turkish.pymbcs.pyoem.pypalmos.pyptcp154.pypunycode.pyquopri_codec.pyraw_unicode_escape.pyrot_13.pyshift_jis.pyshift_jis_2004.pyshift_jisx0213.pytis_620.pyundefined.pyunicode_escape.pyutf_16.pyutf_16_be.pyutf_16_le.pyutf_32.pyutf_32_be.pyutf_32_le.pyutf_7.pyutf_8.pyutf_8_sig.pyuu_codec.pyzlib_codec.pyensurepip__init__.py__main__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc__main__.cpython-312.opt-1.pyc__main__.cpython-312.opt-2.pyc__main__.cpython-312.pyc_uninstall.cpython-312.opt-1.pyc_uninstall.cpython-312.opt-2.pyc_uninstall.cpython-312.pyc_bundledpip-24.0-py3-none-any.whl_uninstall.pyenum.pyfilecmp.pyfileinput.pyfnmatch.pyfractions.pyftplib.pyfunctools.pygenericpath.pygetopt.pygetpass.pygettext.pyglob.pygraphlib.pygzip.pyhashlib.pyheapq.pyhmac.pyhtml__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycentities.cpython-312.opt-1.pycentities.cpython-312.opt-2.pycentities.cpython-312.pycparser.cpython-312.opt-1.pycparser.cpython-312.opt-2.pycparser.cpython-312.pycentities.pyparser.pyhttp__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycclient.cpython-312.opt-1.pycclient.cpython-312.opt-2.pycclient.cpython-312.pyccookiejar.cpython-312.opt-1.pyccookiejar.cpython-312.opt-2.pyccookiejar.cpython-312.pyccookies.cpython-312.opt-1.pyccookies.cpython-312.opt-2.pyccookies.cpython-312.pycserver.cpython-312.opt-1.pycserver.cpython-312.opt-2.pycserver.cpython-312.pycclient.pycookiejar.pycookies.pyserver.pyimaplib.pyimghdr.pyimportlib__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_abc.cpython-312.opt-1.pyc_abc.cpython-312.opt-2.pyc_abc.cpython-312.pyc_bootstrap.cpython-312.opt-1.pyc_bootstrap.cpython-312.opt-2.pyc_bootstrap.cpython-312.pyc_bootstrap_external.cpython-312.opt-1.pyc_bootstrap_external.cpython-312.opt-2.pyc_bootstrap_external.cpython-312.pycabc.cpython-312.opt-1.pycabc.cpython-312.opt-2.pycabc.cpython-312.pycmachinery.cpython-312.opt-1.pycmachinery.cpython-312.opt-2.pycmachinery.cpython-312.pycreaders.cpython-312.opt-1.pycreaders.cpython-312.opt-2.pycreaders.cpython-312.pycsimple.cpython-312.opt-1.pycsimple.cpython-312.opt-2.pycsimple.cpython-312.pycutil.cpython-312.opt-1.pycutil.cpython-312.opt-2.pycutil.cpython-312.pyc_abc.py_bootstrap.py_bootstrap_external.pyabc.pymachinery.pymetadata__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_adapters.cpython-312.opt-1.pyc_adapters.cpython-312.opt-2.pyc_adapters.cpython-312.pyc_collections.cpython-312.opt-1.pyc_collections.cpython-312.opt-2.pyc_collections.cpython-312.pyc_functools.cpython-312.opt-1.pyc_functools.cpython-312.opt-2.pyc_functools.cpython-312.pyc_itertools.cpython-312.opt-1.pyc_itertools.cpython-312.opt-2.pyc_itertools.cpython-312.pyc_meta.cpython-312.opt-1.pyc_meta.cpython-312.opt-2.pyc_meta.cpython-312.pyc_text.cpython-312.opt-1.pyc_text.cpython-312.opt-2.pyc_text.cpython-312.pyc_adapters.py_collections.py_functools.py_itertools.py_meta.py_text.pyreaders.pyresources__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_adapters.cpython-312.opt-1.pyc_adapters.cpython-312.opt-2.pyc_adapters.cpython-312.pyc_common.cpython-312.opt-1.pyc_common.cpython-312.opt-2.pyc_common.cpython-312.pyc_itertools.cpython-312.opt-1.pyc_itertools.cpython-312.opt-2.pyc_itertools.cpython-312.pyc_legacy.cpython-312.opt-1.pyc_legacy.cpython-312.opt-2.pyc_legacy.cpython-312.pycabc.cpython-312.opt-1.pycabc.cpython-312.opt-2.pycabc.cpython-312.pycreaders.cpython-312.opt-1.pycreaders.cpython-312.opt-2.pycreaders.cpython-312.pycsimple.cpython-312.opt-1.pycsimple.cpython-312.opt-2.pycsimple.cpython-312.pyc_adapters.py_common.py_itertools.py_legacy.pyabc.pyreaders.pysimple.pysimple.pyutil.pyinspect.pyio.pyipaddress.pyjson__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycdecoder.cpython-312.opt-1.pycdecoder.cpython-312.opt-2.pycdecoder.cpython-312.pycencoder.cpython-312.opt-1.pycencoder.cpython-312.opt-2.pycencoder.cpython-312.pycscanner.cpython-312.opt-1.pycscanner.cpython-312.opt-2.pycscanner.cpython-312.pyctool.cpython-312.opt-1.pyctool.cpython-312.opt-2.pyctool.cpython-312.pycdecoder.pyencoder.pyscanner.pytool.pykeyword.pylib-dynload_asyncio.cpython-312-powerpc64le-linux-gnu.so_bisect.cpython-312-powerpc64le-linux-gnu.so_blake2.cpython-312-powerpc64le-linux-gnu.so_bz2.cpython-312-powerpc64le-linux-gnu.so_codecs_cn.cpython-312-powerpc64le-linux-gnu.so_codecs_hk.cpython-312-powerpc64le-linux-gnu.so_codecs_iso2022.cpython-312-powerpc64le-linux-gnu.so_codecs_jp.cpython-312-powerpc64le-linux-gnu.so_codecs_kr.cpython-312-powerpc64le-linux-gnu.so_codecs_tw.cpython-312-powerpc64le-linux-gnu.so_contextvars.cpython-312-powerpc64le-linux-gnu.so_crypt.cpython-312-powerpc64le-linux-gnu.so_csv.cpython-312-powerpc64le-linux-gnu.so_ctypes.cpython-312-powerpc64le-linux-gnu.so_datetime.cpython-312-powerpc64le-linux-gnu.so_decimal.cpython-312-powerpc64le-linux-gnu.so_elementtree.cpython-312-powerpc64le-linux-gnu.so_hashlib.cpython-312-powerpc64le-linux-gnu.so_heapq.cpython-312-powerpc64le-linux-gnu.so_json.cpython-312-powerpc64le-linux-gnu.so_lsprof.cpython-312-powerpc64le-linux-gnu.so_lzma.cpython-312-powerpc64le-linux-gnu.so_md5.cpython-312-powerpc64le-linux-gnu.so_multibytecodec.cpython-312-powerpc64le-linux-gnu.so_multiprocessing.cpython-312-powerpc64le-linux-gnu.so_opcode.cpython-312-powerpc64le-linux-gnu.so_pickle.cpython-312-powerpc64le-linux-gnu.so_posixshmem.cpython-312-powerpc64le-linux-gnu.so_posixsubprocess.cpython-312-powerpc64le-linux-gnu.so_queue.cpython-312-powerpc64le-linux-gnu.so_random.cpython-312-powerpc64le-linux-gnu.so_sha1.cpython-312-powerpc64le-linux-gnu.so_sha2.cpython-312-powerpc64le-linux-gnu.so_sha3.cpython-312-powerpc64le-linux-gnu.so_socket.cpython-312-powerpc64le-linux-gnu.so_ssl.cpython-312-powerpc64le-linux-gnu.so_statistics.cpython-312-powerpc64le-linux-gnu.so_struct.cpython-312-powerpc64le-linux-gnu.so_uuid.cpython-312-powerpc64le-linux-gnu.so_xxsubinterpreters.cpython-312-powerpc64le-linux-gnu.so_zoneinfo.cpython-312-powerpc64le-linux-gnu.soarray.cpython-312-powerpc64le-linux-gnu.soaudioop.cpython-312-powerpc64le-linux-gnu.sobinascii.cpython-312-powerpc64le-linux-gnu.socmath.cpython-312-powerpc64le-linux-gnu.sofcntl.cpython-312-powerpc64le-linux-gnu.sogrp.cpython-312-powerpc64le-linux-gnu.somath.cpython-312-powerpc64le-linux-gnu.sommap.cpython-312-powerpc64le-linux-gnu.soossaudiodev.cpython-312-powerpc64le-linux-gnu.sopyexpat.cpython-312-powerpc64le-linux-gnu.soresource.cpython-312-powerpc64le-linux-gnu.soselect.cpython-312-powerpc64le-linux-gnu.sospwd.cpython-312-powerpc64le-linux-gnu.sosyslog.cpython-312-powerpc64le-linux-gnu.sotermios.cpython-312-powerpc64le-linux-gnu.sounicodedata.cpython-312-powerpc64le-linux-gnu.soxxlimited.cpython-312-powerpc64le-linux-gnu.soxxlimited_35.cpython-312-powerpc64le-linux-gnu.soxxsubtype.cpython-312-powerpc64le-linux-gnu.sozlib.cpython-312-powerpc64le-linux-gnu.solib2to3Grammar.txtGrammar3.12.4.final.0.picklePatternGrammar.txtPatternGrammar3.12.4.final.0.pickle__init__.py__main__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc__main__.cpython-312.opt-1.pyc__main__.cpython-312.opt-2.pyc__main__.cpython-312.pycbtm_matcher.cpython-312.opt-1.pycbtm_matcher.cpython-312.opt-2.pycbtm_matcher.cpython-312.pycbtm_utils.cpython-312.opt-1.pycbtm_utils.cpython-312.opt-2.pycbtm_utils.cpython-312.pycfixer_base.cpython-312.opt-1.pycfixer_base.cpython-312.opt-2.pycfixer_base.cpython-312.pycfixer_util.cpython-312.opt-1.pycfixer_util.cpython-312.opt-2.pycfixer_util.cpython-312.pycmain.cpython-312.opt-1.pycmain.cpython-312.opt-2.pycmain.cpython-312.pycpatcomp.cpython-312.opt-1.pycpatcomp.cpython-312.opt-2.pycpatcomp.cpython-312.pycpygram.cpython-312.opt-1.pycpygram.cpython-312.opt-2.pycpygram.cpython-312.pycpytree.cpython-312.opt-1.pycpytree.cpython-312.opt-2.pycpytree.cpython-312.pycrefactor.cpython-312.opt-1.pycrefactor.cpython-312.opt-2.pycrefactor.cpython-312.pycbtm_matcher.pybtm_utils.pyfixer_base.pyfixer_util.pyfixes__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycfix_apply.cpython-312.opt-1.pycfix_apply.cpython-312.opt-2.pycfix_apply.cpython-312.pycfix_asserts.cpython-312.opt-1.pycfix_asserts.cpython-312.opt-2.pycfix_asserts.cpython-312.pycfix_basestring.cpython-312.opt-1.pycfix_basestring.cpython-312.opt-2.pycfix_basestring.cpython-312.pycfix_buffer.cpython-312.opt-1.pycfix_buffer.cpython-312.opt-2.pycfix_buffer.cpython-312.pycfix_dict.cpython-312.opt-1.pycfix_dict.cpython-312.opt-2.pycfix_dict.cpython-312.pycfix_except.cpython-312.opt-1.pycfix_except.cpython-312.opt-2.pycfix_except.cpython-312.pycfix_exec.cpython-312.opt-1.pycfix_exec.cpython-312.opt-2.pycfix_exec.cpython-312.pycfix_execfile.cpython-312.opt-1.pycfix_execfile.cpython-312.opt-2.pycfix_execfile.cpython-312.pycfix_exitfunc.cpython-312.opt-1.pycfix_exitfunc.cpython-312.opt-2.pycfix_exitfunc.cpython-312.pycfix_filter.cpython-312.opt-1.pycfix_filter.cpython-312.opt-2.pycfix_filter.cpython-312.pycfix_funcattrs.cpython-312.opt-1.pycfix_funcattrs.cpython-312.opt-2.pycfix_funcattrs.cpython-312.pycfix_future.cpython-312.opt-1.pycfix_future.cpython-312.opt-2.pycfix_future.cpython-312.pycfix_getcwdu.cpython-312.opt-1.pycfix_getcwdu.cpython-312.opt-2.pycfix_getcwdu.cpython-312.pycfix_has_key.cpython-312.opt-1.pycfix_has_key.cpython-312.opt-2.pycfix_has_key.cpython-312.pycfix_idioms.cpython-312.opt-1.pycfix_idioms.cpython-312.opt-2.pycfix_idioms.cpython-312.pycfix_import.cpython-312.opt-1.pycfix_import.cpython-312.opt-2.pycfix_import.cpython-312.pycfix_imports.cpython-312.opt-1.pycfix_imports.cpython-312.opt-2.pycfix_imports.cpython-312.pycfix_imports2.cpython-312.opt-1.pycfix_imports2.cpython-312.opt-2.pycfix_imports2.cpython-312.pycfix_input.cpython-312.opt-1.pycfix_input.cpython-312.opt-2.pycfix_input.cpython-312.pycfix_intern.cpython-312.opt-1.pycfix_intern.cpython-312.opt-2.pycfix_intern.cpython-312.pycfix_isinstance.cpython-312.opt-1.pycfix_isinstance.cpython-312.opt-2.pycfix_isinstance.cpython-312.pycfix_itertools.cpython-312.opt-1.pycfix_itertools.cpython-312.opt-2.pycfix_itertools.cpython-312.pycfix_itertools_imports.cpython-312.opt-1.pycfix_itertools_imports.cpython-312.opt-2.pycfix_itertools_imports.cpython-312.pycfix_long.cpython-312.opt-1.pycfix_long.cpython-312.opt-2.pycfix_long.cpython-312.pycfix_map.cpython-312.opt-1.pycfix_map.cpython-312.opt-2.pycfix_map.cpython-312.pycfix_metaclass.cpython-312.opt-1.pycfix_metaclass.cpython-312.opt-2.pycfix_metaclass.cpython-312.pycfix_methodattrs.cpython-312.opt-1.pycfix_methodattrs.cpython-312.opt-2.pycfix_methodattrs.cpython-312.pycfix_ne.cpython-312.opt-1.pycfix_ne.cpython-312.opt-2.pycfix_ne.cpython-312.pycfix_next.cpython-312.opt-1.pycfix_next.cpython-312.opt-2.pycfix_next.cpython-312.pycfix_nonzero.cpython-312.opt-1.pycfix_nonzero.cpython-312.opt-2.pycfix_nonzero.cpython-312.pycfix_numliterals.cpython-312.opt-1.pycfix_numliterals.cpython-312.opt-2.pycfix_numliterals.cpython-312.pycfix_operator.cpython-312.opt-1.pycfix_operator.cpython-312.opt-2.pycfix_operator.cpython-312.pycfix_paren.cpython-312.opt-1.pycfix_paren.cpython-312.opt-2.pycfix_paren.cpython-312.pycfix_print.cpython-312.opt-1.pycfix_print.cpython-312.opt-2.pycfix_print.cpython-312.pycfix_raise.cpython-312.opt-1.pycfix_raise.cpython-312.opt-2.pycfix_raise.cpython-312.pycfix_raw_input.cpython-312.opt-1.pycfix_raw_input.cpython-312.opt-2.pycfix_raw_input.cpython-312.pycfix_reduce.cpython-312.opt-1.pycfix_reduce.cpython-312.opt-2.pycfix_reduce.cpython-312.pycfix_reload.cpython-312.opt-1.pycfix_reload.cpython-312.opt-2.pycfix_reload.cpython-312.pycfix_renames.cpython-312.opt-1.pycfix_renames.cpython-312.opt-2.pycfix_renames.cpython-312.pycfix_repr.cpython-312.opt-1.pycfix_repr.cpython-312.opt-2.pycfix_repr.cpython-312.pycfix_set_literal.cpython-312.opt-1.pycfix_set_literal.cpython-312.opt-2.pycfix_set_literal.cpython-312.pycfix_standarderror.cpython-312.opt-1.pycfix_standarderror.cpython-312.opt-2.pycfix_standarderror.cpython-312.pycfix_sys_exc.cpython-312.opt-1.pycfix_sys_exc.cpython-312.opt-2.pycfix_sys_exc.cpython-312.pycfix_throw.cpython-312.opt-1.pycfix_throw.cpython-312.opt-2.pycfix_throw.cpython-312.pycfix_tuple_params.cpython-312.opt-1.pycfix_tuple_params.cpython-312.opt-2.pycfix_tuple_params.cpython-312.pycfix_types.cpython-312.opt-1.pycfix_types.cpython-312.opt-2.pycfix_types.cpython-312.pycfix_unicode.cpython-312.opt-1.pycfix_unicode.cpython-312.opt-2.pycfix_unicode.cpython-312.pycfix_urllib.cpython-312.opt-1.pycfix_urllib.cpython-312.opt-2.pycfix_urllib.cpython-312.pycfix_ws_comma.cpython-312.opt-1.pycfix_ws_comma.cpython-312.opt-2.pycfix_ws_comma.cpython-312.pycfix_xrange.cpython-312.opt-1.pycfix_xrange.cpython-312.opt-2.pycfix_xrange.cpython-312.pycfix_xreadlines.cpython-312.opt-1.pycfix_xreadlines.cpython-312.opt-2.pycfix_xreadlines.cpython-312.pycfix_zip.cpython-312.opt-1.pycfix_zip.cpython-312.opt-2.pycfix_zip.cpython-312.pycfix_apply.pyfix_asserts.pyfix_basestring.pyfix_buffer.pyfix_dict.pyfix_except.pyfix_exec.pyfix_execfile.pyfix_exitfunc.pyfix_filter.pyfix_funcattrs.pyfix_future.pyfix_getcwdu.pyfix_has_key.pyfix_idioms.pyfix_import.pyfix_imports.pyfix_imports2.pyfix_input.pyfix_intern.pyfix_isinstance.pyfix_itertools.pyfix_itertools_imports.pyfix_long.pyfix_map.pyfix_metaclass.pyfix_methodattrs.pyfix_ne.pyfix_next.pyfix_nonzero.pyfix_numliterals.pyfix_operator.pyfix_paren.pyfix_print.pyfix_raise.pyfix_raw_input.pyfix_reduce.pyfix_reload.pyfix_renames.pyfix_repr.pyfix_set_literal.pyfix_standarderror.pyfix_sys_exc.pyfix_throw.pyfix_tuple_params.pyfix_types.pyfix_unicode.pyfix_urllib.pyfix_ws_comma.pyfix_xrange.pyfix_xreadlines.pyfix_zip.pymain.pypatcomp.pypgen2__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycconv.cpython-312.opt-1.pycconv.cpython-312.opt-2.pycconv.cpython-312.pycdriver.cpython-312.opt-1.pycdriver.cpython-312.opt-2.pycdriver.cpython-312.pycgrammar.cpython-312.opt-1.pycgrammar.cpython-312.opt-2.pycgrammar.cpython-312.pycliterals.cpython-312.opt-1.pycliterals.cpython-312.opt-2.pycliterals.cpython-312.pycparse.cpython-312.opt-1.pycparse.cpython-312.opt-2.pycparse.cpython-312.pycpgen.cpython-312.opt-1.pycpgen.cpython-312.opt-2.pycpgen.cpython-312.pyctoken.cpython-312.opt-1.pyctoken.cpython-312.opt-2.pyctoken.cpython-312.pyctokenize.cpython-312.opt-1.pyctokenize.cpython-312.opt-2.pyctokenize.cpython-312.pycconv.pydriver.pygrammar.pyliterals.pyparse.pypgen.pytoken.pytokenize.pypygram.pypytree.pyrefactor.pylinecache.pylocale.pylogging__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycconfig.cpython-312.opt-1.pycconfig.cpython-312.opt-2.pycconfig.cpython-312.pychandlers.cpython-312.opt-1.pychandlers.cpython-312.opt-2.pychandlers.cpython-312.pycconfig.pyhandlers.pylzma.pymailbox.pymailcap.pymimetypes.pymodulefinder.pymultiprocessing__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycconnection.cpython-312.opt-1.pycconnection.cpython-312.opt-2.pycconnection.cpython-312.pyccontext.cpython-312.opt-1.pyccontext.cpython-312.opt-2.pyccontext.cpython-312.pycforkserver.cpython-312.opt-1.pycforkserver.cpython-312.opt-2.pycforkserver.cpython-312.pycheap.cpython-312.opt-1.pycheap.cpython-312.opt-2.pycheap.cpython-312.pycmanagers.cpython-312.opt-1.pycmanagers.cpython-312.opt-2.pycmanagers.cpython-312.pycpool.cpython-312.opt-1.pycpool.cpython-312.opt-2.pycpool.cpython-312.pycpopen_fork.cpython-312.opt-1.pycpopen_fork.cpython-312.opt-2.pycpopen_fork.cpython-312.pycpopen_forkserver.cpython-312.opt-1.pycpopen_forkserver.cpython-312.opt-2.pycpopen_forkserver.cpython-312.pycpopen_spawn_posix.cpython-312.opt-1.pycpopen_spawn_posix.cpython-312.opt-2.pycpopen_spawn_posix.cpython-312.pycpopen_spawn_win32.cpython-312.opt-1.pycpopen_spawn_win32.cpython-312.opt-2.pycpopen_spawn_win32.cpython-312.pycprocess.cpython-312.opt-1.pycprocess.cpython-312.opt-2.pycprocess.cpython-312.pycqueues.cpython-312.opt-1.pycqueues.cpython-312.opt-2.pycqueues.cpython-312.pycreduction.cpython-312.opt-1.pycreduction.cpython-312.opt-2.pycreduction.cpython-312.pycresource_sharer.cpython-312.opt-1.pycresource_sharer.cpython-312.opt-2.pycresource_sharer.cpython-312.pycresource_tracker.cpython-312.opt-1.pycresource_tracker.cpython-312.opt-2.pycresource_tracker.cpython-312.pycshared_memory.cpython-312.opt-1.pycshared_memory.cpython-312.opt-2.pycshared_memory.cpython-312.pycsharedctypes.cpython-312.opt-1.pycsharedctypes.cpython-312.opt-2.pycsharedctypes.cpython-312.pycspawn.cpython-312.opt-1.pycspawn.cpython-312.opt-2.pycspawn.cpython-312.pycsynchronize.cpython-312.opt-1.pycsynchronize.cpython-312.opt-2.pycsynchronize.cpython-312.pycutil.cpython-312.opt-1.pycutil.cpython-312.opt-2.pycutil.cpython-312.pycconnection.pycontext.pydummy__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycconnection.cpython-312.opt-1.pycconnection.cpython-312.opt-2.pycconnection.cpython-312.pycconnection.pyforkserver.pyheap.pymanagers.pypool.pypopen_fork.pypopen_forkserver.pypopen_spawn_posix.pypopen_spawn_win32.pyprocess.pyqueues.pyreduction.pyresource_sharer.pyresource_tracker.pyshared_memory.pysharedctypes.pyspawn.pysynchronize.pyutil.pynetrc.pynntplib.pyntpath.pynturl2path.pynumbers.pyopcode.pyoperator.pyoptparse.pyos.pypathlib.pypdb.pypickle.pypickletools.pypipes.pypkgutil.pyplatform.pyplistlib.pypoplib.pyposixpath.pypprint.pyprofile.pypstats.pypty.pypy_compile.pypyclbr.pypydoc.pypydoc_data__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyctopics.cpython-312.opt-1.pyctopics.cpython-312.opt-2.pyctopics.cpython-312.pyc_pydoc.csstopics.pyqueue.pyquopri.pyrandom.pyre__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_casefix.cpython-312.opt-1.pyc_casefix.cpython-312.opt-2.pyc_casefix.cpython-312.pyc_compiler.cpython-312.opt-1.pyc_compiler.cpython-312.opt-2.pyc_compiler.cpython-312.pyc_constants.cpython-312.opt-1.pyc_constants.cpython-312.opt-2.pyc_constants.cpython-312.pyc_parser.cpython-312.opt-1.pyc_parser.cpython-312.opt-2.pyc_parser.cpython-312.pyc_casefix.py_compiler.py_constants.py_parser.pyreprlib.pyrlcompleter.pyrunpy.pysched.pysecrets.pyselectors.pyshelve.pyshlex.pyshutil.pysignal.pysite-packages__pycache__zzzz-import-failed-hooks.pthsite.pysmtplib.pysndhdr.pysocket.pysocketserver.pysre_compile.pysre_constants.pysre_parse.pyssl.pystat.pystatistics.pystring.pystringprep.pystruct.pysubprocess.pysunau.pysymtable.pysysconfig.pytabnanny.pytarfile.pytelnetlib.pytempfile.pytextwrap.pythis.pythreading.pytimeit.pytoken.pytokenize.pytomllib__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_parser.cpython-312.opt-1.pyc_parser.cpython-312.opt-2.pyc_parser.cpython-312.pyc_re.cpython-312.opt-1.pyc_re.cpython-312.opt-2.pyc_re.cpython-312.pyc_types.cpython-312.opt-1.pyc_types.cpython-312.opt-2.pyc_types.cpython-312.pyc_parser.py_re.py_types.pytrace.pytraceback.pytracemalloc.pytty.pyturtle.pytypes.pytyping.pyunittest__init__.py__main__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc__main__.cpython-312.opt-1.pyc__main__.cpython-312.opt-2.pyc__main__.cpython-312.pyc_log.cpython-312.opt-1.pyc_log.cpython-312.opt-2.pyc_log.cpython-312.pycasync_case.cpython-312.opt-1.pycasync_case.cpython-312.opt-2.pycasync_case.cpython-312.pyccase.cpython-312.opt-1.pyccase.cpython-312.opt-2.pyccase.cpython-312.pycloader.cpython-312.opt-1.pycloader.cpython-312.opt-2.pycloader.cpython-312.pycmain.cpython-312.opt-1.pycmain.cpython-312.opt-2.pycmain.cpython-312.pycmock.cpython-312.opt-1.pycmock.cpython-312.opt-2.pycmock.cpython-312.pycresult.cpython-312.opt-1.pycresult.cpython-312.opt-2.pycresult.cpython-312.pycrunner.cpython-312.opt-1.pycrunner.cpython-312.opt-2.pycrunner.cpython-312.pycsignals.cpython-312.opt-1.pycsignals.cpython-312.opt-2.pycsignals.cpython-312.pycsuite.cpython-312.opt-1.pycsuite.cpython-312.opt-2.pycsuite.cpython-312.pycutil.cpython-312.opt-1.pycutil.cpython-312.opt-2.pycutil.cpython-312.pyc_log.pyasync_case.pycase.pyloader.pymain.pymock.pyresult.pyrunner.pysignals.pysuite.pyutil.pyurllib__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycerror.cpython-312.opt-1.pycerror.cpython-312.opt-2.pycerror.cpython-312.pycparse.cpython-312.opt-1.pycparse.cpython-312.opt-2.pycparse.cpython-312.pycrequest.cpython-312.opt-1.pycrequest.cpython-312.opt-2.pycrequest.cpython-312.pycresponse.cpython-312.opt-1.pycresponse.cpython-312.opt-2.pycresponse.cpython-312.pycrobotparser.cpython-312.opt-1.pycrobotparser.cpython-312.opt-2.pycrobotparser.cpython-312.pycerror.pyparse.pyrequest.pyresponse.pyrobotparser.pyuu.pyuuid.pyvenv__init__.py__main__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc__main__.cpython-312.opt-1.pyc__main__.cpython-312.opt-2.pyc__main__.cpython-312.pycscriptscommonActivate.ps1activateposixactivate.cshactivate.fishwarnings.pywave.pyweakref.pywebbrowser.pywsgiref__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pychandlers.cpython-312.opt-1.pychandlers.cpython-312.opt-2.pychandlers.cpython-312.pycheaders.cpython-312.opt-1.pycheaders.cpython-312.opt-2.pycheaders.cpython-312.pycsimple_server.cpython-312.opt-1.pycsimple_server.cpython-312.opt-2.pycsimple_server.cpython-312.pyctypes.cpython-312.opt-1.pyctypes.cpython-312.opt-2.pyctypes.cpython-312.pycutil.cpython-312.opt-1.pycutil.cpython-312.opt-2.pycutil.cpython-312.pycvalidate.cpython-312.opt-1.pycvalidate.cpython-312.opt-2.pycvalidate.cpython-312.pychandlers.pyheaders.pysimple_server.pytypes.pyutil.pyvalidate.pyxdrlib.pyxml__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycdomNodeFilter.py__init__.py__pycache__NodeFilter.cpython-312.opt-1.pycNodeFilter.cpython-312.opt-2.pycNodeFilter.cpython-312.pyc__init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycdomreg.cpython-312.opt-1.pycdomreg.cpython-312.opt-2.pycdomreg.cpython-312.pycexpatbuilder.cpython-312.opt-1.pycexpatbuilder.cpython-312.opt-2.pycexpatbuilder.cpython-312.pycminicompat.cpython-312.opt-1.pycminicompat.cpython-312.opt-2.pycminicompat.cpython-312.pycminidom.cpython-312.opt-1.pycminidom.cpython-312.opt-2.pycminidom.cpython-312.pycpulldom.cpython-312.opt-1.pycpulldom.cpython-312.opt-2.pycpulldom.cpython-312.pycxmlbuilder.cpython-312.opt-1.pycxmlbuilder.cpython-312.opt-2.pycxmlbuilder.cpython-312.pycdomreg.pyexpatbuilder.pyminicompat.pyminidom.pypulldom.pyxmlbuilder.pyetreeElementInclude.pyElementPath.pyElementTree.py__init__.py__pycache__ElementInclude.cpython-312.opt-1.pycElementInclude.cpython-312.opt-2.pycElementInclude.cpython-312.pycElementPath.cpython-312.opt-1.pycElementPath.cpython-312.opt-2.pycElementPath.cpython-312.pycElementTree.cpython-312.opt-1.pycElementTree.cpython-312.opt-2.pycElementTree.cpython-312.pyc__init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyccElementTree.cpython-312.opt-1.pyccElementTree.cpython-312.opt-2.pyccElementTree.cpython-312.pyccElementTree.pyparsers__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycexpat.cpython-312.opt-1.pycexpat.cpython-312.opt-2.pycexpat.cpython-312.pycexpat.pysax__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_exceptions.cpython-312.opt-1.pyc_exceptions.cpython-312.opt-2.pyc_exceptions.cpython-312.pycexpatreader.cpython-312.opt-1.pycexpatreader.cpython-312.opt-2.pycexpatreader.cpython-312.pychandler.cpython-312.opt-1.pychandler.cpython-312.opt-2.pychandler.cpython-312.pycsaxutils.cpython-312.opt-1.pycsaxutils.cpython-312.opt-2.pycsaxutils.cpython-312.pycxmlreader.cpython-312.opt-1.pycxmlreader.cpython-312.opt-2.pycxmlreader.cpython-312.pyc_exceptions.pyexpatreader.pyhandler.pysaxutils.pyxmlreader.pyxmlrpc__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycclient.cpython-312.opt-1.pycclient.cpython-312.opt-2.pycclient.cpython-312.pycserver.cpython-312.opt-1.pycserver.cpython-312.opt-2.pycserver.cpython-312.pycclient.pyserver.pyzipapp.pyzipfile__init__.py__main__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc__main__.cpython-312.opt-1.pyc__main__.cpython-312.opt-2.pyc__main__.cpython-312.pyc_path__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pycglob.cpython-312.opt-1.pycglob.cpython-312.opt-2.pycglob.cpython-312.pycglob.pyzipimport.pyzoneinfo__init__.py__pycache____init__.cpython-312.opt-1.pyc__init__.cpython-312.opt-2.pyc__init__.cpython-312.pyc_common.cpython-312.opt-1.pyc_common.cpython-312.opt-2.pyc_common.cpython-312.pyc_tzpath.cpython-312.opt-1.pyc_tzpath.cpython-312.opt-2.pyc_tzpath.cpython-312.pyc_zoneinfo.cpython-312.opt-1.pyc_zoneinfo.cpython-312.opt-2.pyc_zoneinfo.cpython-312.pyc_common.py_tzpath.py_zoneinfo.pypython312-coreREADME.SUSEREADME.rstpython312-baseLICENSEpython3.12.1.gz/usr/bin//usr/lib//usr/lib/python3.12//usr/lib/python3.12/site-packages//usr/lib64//usr/lib64/python3.12//usr/lib64/python3.12/__phello__//usr/lib64/python3.12/__phello__/__pycache__//usr/lib64/python3.12/__pycache__//usr/lib64/python3.12/_import_failed//usr/lib64/python3.12/_import_failed/__pycache__//usr/lib64/python3.12/asyncio//usr/lib64/python3.12/asyncio/__pycache__//usr/lib64/python3.12/collections//usr/lib64/python3.12/collections/__pycache__//usr/lib64/python3.12/concurrent//usr/lib64/python3.12/concurrent/__pycache__//usr/lib64/python3.12/concurrent/futures//usr/lib64/python3.12/concurrent/futures/__pycache__//usr/lib64/python3.12/ctypes//usr/lib64/python3.12/ctypes/__pycache__//usr/lib64/python3.12/ctypes/macholib//usr/lib64/python3.12/ctypes/macholib/__pycache__//usr/lib64/python3.12/email//usr/lib64/python3.12/email/__pycache__//usr/lib64/python3.12/email/mime//usr/lib64/python3.12/email/mime/__pycache__//usr/lib64/python3.12/encodings//usr/lib64/python3.12/encodings/__pycache__//usr/lib64/python3.12/ensurepip//usr/lib64/python3.12/ensurepip/__pycache__//usr/lib64/python3.12/ensurepip/_bundled//usr/lib64/python3.12/html//usr/lib64/python3.12/html/__pycache__//usr/lib64/python3.12/http//usr/lib64/python3.12/http/__pycache__//usr/lib64/python3.12/importlib//usr/lib64/python3.12/importlib/__pycache__//usr/lib64/python3.12/importlib/metadata//usr/lib64/python3.12/importlib/metadata/__pycache__//usr/lib64/python3.12/importlib/resources//usr/lib64/python3.12/importlib/resources/__pycache__//usr/lib64/python3.12/json//usr/lib64/python3.12/json/__pycache__//usr/lib64/python3.12/lib-dynload//usr/lib64/python3.12/lib2to3//usr/lib64/python3.12/lib2to3/__pycache__//usr/lib64/python3.12/lib2to3/fixes//usr/lib64/python3.12/lib2to3/fixes/__pycache__//usr/lib64/python3.12/lib2to3/pgen2//usr/lib64/python3.12/lib2to3/pgen2/__pycache__//usr/lib64/python3.12/logging//usr/lib64/python3.12/logging/__pycache__//usr/lib64/python3.12/multiprocessing//usr/lib64/python3.12/multiprocessing/__pycache__//usr/lib64/python3.12/multiprocessing/dummy//usr/lib64/python3.12/multiprocessing/dummy/__pycache__//usr/lib64/python3.12/pydoc_data//usr/lib64/python3.12/pydoc_data/__pycache__//usr/lib64/python3.12/re//usr/lib64/python3.12/re/__pycache__//usr/lib64/python3.12/site-packages//usr/lib64/python3.12/tomllib//usr/lib64/python3.12/tomllib/__pycache__//usr/lib64/python3.12/unittest//usr/lib64/python3.12/unittest/__pycache__//usr/lib64/python3.12/urllib//usr/lib64/python3.12/urllib/__pycache__//usr/lib64/python3.12/venv//usr/lib64/python3.12/venv/__pycache__//usr/lib64/python3.12/venv/scripts//usr/lib64/python3.12/venv/scripts/common//usr/lib64/python3.12/venv/scripts/posix//usr/lib64/python3.12/wsgiref//usr/lib64/python3.12/wsgiref/__pycache__//usr/lib64/python3.12/xml//usr/lib64/python3.12/xml/__pycache__//usr/lib64/python3.12/xml/dom//usr/lib64/python3.12/xml/dom/__pycache__//usr/lib64/python3.12/xml/etree//usr/lib64/python3.12/xml/etree/__pycache__//usr/lib64/python3.12/xml/parsers//usr/lib64/python3.12/xml/parsers/__pycache__//usr/lib64/python3.12/xml/sax//usr/lib64/python3.12/xml/sax/__pycache__//usr/lib64/python3.12/xmlrpc//usr/lib64/python3.12/xmlrpc/__pycache__//usr/lib64/python3.12/zipfile//usr/lib64/python3.12/zipfile/__pycache__//usr/lib64/python3.12/zipfile/_path//usr/lib64/python3.12/zipfile/_path/__pycache__//usr/lib64/python3.12/zoneinfo//usr/lib64/python3.12/zoneinfo/__pycache__//usr/share/doc/packages//usr/share/doc/packages/python312-core//usr/share/licenses//usr/share/licenses/python312-base//usr/share/man/man1/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:34718/SUSE_SLE-15-SP6_Update/39a47e99c42b0faf6e465bd5384482c8-python312.SUSE_SLE-15-SP6_Update:basedrpmxz5ppc64le-suse-linux    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH II JIKPython script, ASCII text executableELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=2dd12c8388ea05d7f51b9efb5ed5112f516fab22, for GNU/Linux 3.10.0, strippeddirectoryASCII textPOSIX shell script, ASCII text executableASCII text, with CRLF line terminatorsPython script text executable Python script, ASCII text executablePython script, UTF-8 Unicode text executableemptyPython script, ASCII text executable (Zip archive data, at least v2.0 to extract Zip archive data, at least v2.0 to extract)ELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=91bdc9c4359d146b3cc9f178edd5817728765eb4, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=1001afe6d5962af79b0e2f8dbaf9ee1cf1b81351, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=100288abb7de3964df2c9e95c521d8de1a7ba928, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=d9f1775a40e742d15e2e0e8a1eda168bd2893a07, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=24830e7d388b144a0911aee64795740adefe9bd0, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=3a1bdfe2f08e932d6fda025e8ce51cdc53399eea, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=88e1ac99f56189ce2d8ef2d774f9c808249b5022, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=d5302afdf7e4f5967f110016c8f58a7368d78864, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=28cbc48bf9941ac65381d1a85068f21488a80713, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=3e21af6ad5f2b4a0cbe02ffb67256432f9dab819, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=8a4b36bfe78ef35e2e01bcb5732e445f18b9a163, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=c29c5d27f1c7a7af9b18805d1ac41ffe1411ac5c, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=a23386de762127a4937470584f202b701f24072f, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=ea2dff087e724e4497257af32d59c0149687a8dd, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=66488e52cdfe75935b99a0f07063a56c2fa92ca0, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=01e3aa82a9f2806a28caadfafc98f8e77b6a9e2a, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=97e3c2fc4de3bd82c14bb4d6c3cdc5446933975a, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=e75c39a24e6b33183c0edbe186404281c439be95, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=2ec4c64c586f6514d382d26ba285939a1706dedf, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=776f9efa3a7de9ab836568a77adff8736ea0fa5d, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=94aadc4f1c19d857623c13fc09472a032895b3d3, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=b913bcf9216c6bfd4e0e644dc280cbff848aad36, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=b8b4df92bb5f267c650a3d021f2ee52b5392dcb0, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=d09ea037924f567d26f89003a57321ae396be7d3, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=405b58f880faaa5479af40e4f6691acb9dfe8c27, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=5ff50bf950142de508c4c9d3a3e6248b0d89ab58, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=e0951fc08941ed8151875d126ea4248f30b38095, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=e969686c3ac43b4d2c16fa4f61a130e6e4b784c9, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=8974d6b810becd721849d105e899263a22cd8c8b, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=14f793de7cf7d3fd85e43ba35198130969cb56c6, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=b0bf9224bd4360674fac0df2dbd04fdfc0dc9e9a, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=b40492f3d68971d6163fd31b2d23df15362491e9, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=f2893022403c94cfcc9467367faa66beeb7d433d, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=04eab71f27d53da7ccfa08ad708fca86c1da43cf, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=1c51d240c90dc3980dd649050012e2c0b93ce730, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=6bb4d9cbd66d85c0723eb467ded96679d2d33af1, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=2624157465a0197cf72e79a06a3e47d2301fbc31, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=c79d2ce7f8edf62d5fffd79f5e93a7a3c0b69006, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=cc7a6c85084052615c00a5b8eea388653de327d6, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=52d7f7371db0386d461c12aa2924236d654ae0ed, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=a1f82c9f541081b31ffa1585ede95743e90f8a61, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=e06717e0603bdd48ef9df8856b286763bca94978, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=22d7e217c2e60c42602b649f6aa10885470128e2, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=33d0bb91c49caa7d5282443cd22f69781cca706c, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=e237f35aa63bac568f8ccb5da94a298dd7711513, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=b2bd09ed3627dc05638c7873ceecc272bea2900f, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=7d2c22dde9ea8b37db7b23a58c05c065a47e68be, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=d295874c55115912a0f1a557bc3219454b7ad713, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=68f13fa8e3e473855673bba6b230cf4c9517353f, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=8faaf16bef06b489a1607092c74fc86c5861bcf9, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=da1056e5140616e0eb5c6da275e2f8e1c68f20be, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=1ad26a589bd75a2c1e2c0ed446bcad5936cfe4e9, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=5cd8a41ae2e74f4cd47cadda696d5de4f79706df, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=41c1bda6f6fb478842ac745b01eace7d4d0195ef, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=e7822c516e2dabbd7c9dd031903ce077c52ab792, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=a2e267045b315f18a7624872dc21c60272de8b9a, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=2db73a35ae6923fc5bf32d3530f256c6bbdc407c, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=6416c41b50ff070c3e83778e5251adb0f3a09ebf, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=4cbf51c47c6f4bcc48e909f368dbd3ca5647849c, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=51c9156ac4a874328e426b15674f627be9d0f3ba, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=e613bf1a6c73e61cb786470dc4e698f5e4367dc0, strippedtroff or preprocessor input, ASCII textUTF-8 Unicode textASCII text, with very long linestroff or preprocessor input, ASCII text (gzip compressed data, max compression, from Unix)  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQTW[_behknqty| "%(+.16789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ;RPRRRRR!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!RR!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!RRR!RRR!RRRR!RRRR!RRR!RRR!RRR!RRR!RRR!RRR!RRR!R RR RR!RRR!RRRRRRR!RRR!RR RRRR!RRR!RR R RR!RRR!RRR!RRR!RRRRR!RRR!RRR!RRRR!RRR!R RRR!RRRR!RRRRR!RRR!RRR!RRR!RRR!RRR!R RRR!RR RRR RR!RRRRRR!RRR!RRRRR!RRR!RRR!RRR!RRRRR!RRRR!RRRRRRR!RRRR!RRR!RRRRRRR!RRR!RRRR!RRRR!RRR!RRR!RRR!RRR!RRR!RRR!RRR!RRR!RRR!R RRRR!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!/ZV).j5ُpython3123.12.4utf-8f2a0e1b0af4a41bd80a069bd8eba318d434c1f3cbc74a259f87cb0788eb0a171?7zXZ !t/^R]"k%pa 8]&.f ^/"){"4~VY kխxFk4Z{˯~ݗ4M9Mexl2j'X=EYӎ3?df!%~)<*-ΛBRhmhTtr{%y٩{lF7/G€XC \ܢ _˕fG1e,ץ&Z2՞ĩe2W<'X_Lkf`7n\g2M#D ݁\/Ǚ^0(ԥGKQ!1~61J˘FVc(nN#n+'Ih3/TaU{(_fl &Z vW_v *8 ynr8loi Zg׌@o6CA&ݵ5)UC !uu^Z{4si-mrDhZV)ׂ> >ajL{=&^N3_e>^u&IUK nٍ,qZ3!?+t|MɊť&f h+rac03__Lև4R&{ӂEEʬCg`R_2yjkVrDC~Fׯ诿Q v$'OP=SGk<:L}Q+7{YJ09j1D40EHFMq0R h)uۍHUKWn|1'b))IWːv ɍw;K(RGO.psϒ`gvk-ώ<rA%[ncq&Φ~wF)i F0].;xp?bʋZ.+Щ}"O6\&$ِ\Ά\+tƱ-&^&|n< B ߴh('<'|`'5 Vo𷦘PƱKНiY<]bG؇Hڰ o;dLaԜEòZ4]k ?w҂H6A*3ǻovQ̀H8]iTmʵ>7,Aos YfSK!|Wghk-JcuT(30nn(fC&ky*jl:,(Ȗ=Ut^haOzl+{fl} +8l{ƓzH_Qt aʰLѱpiGTQ\=.;h>V0@אn "ZKyl52C'[7 BJQWdS 'M72BI8* cV|aZ[,U#-F$4X*׎!^5F&3tg.ң#ԝdOF9=KC:^{x a2h˜ ܼ4ꦪ- sEZQQ5IEVtG18(lٍ+`VE"e"TG8BMrqTIuZ#lHa#yQ祃AϚGJOm'Y 1PtF+F U|@@4m}]ufbW>}VoRN/I:{44Q#5S]E8'^DyXlr8呧qvvpc!a%=t}Y%Ax .=Fs뉐D/|ПǏEqk5!GW\00j`(wF/g.F @Țo~7LޏՌ!CdMM-uw8T hWyڬ#ɋ11LB.цO|Q˧A8tAYJt Abښ,Z0x GrͰ &l:ށ}CQ?%uf_ʸ)٬؄yB82.eae'ZCf;h//l@i<Sd10 EL߫d3]\Eu!mb s$!yLT\[W6?=CEG^͓@k ՇF9J4~ܺ fv_Fwý s Z2)z̙IFy Kjp -E{7\)Fw*-O|, *[P$m.E)*qE{5unK$j23jo.FU,gI8o!ԟ"'H"VOC!AL-!Xw=`\)S@$HlI| pkM'tCJC"n[ePYƆ .q!OСP;(K h.6Ys8z7P ; _P® *q4qlD߽ *RWdҳݸӑIxZ숚y}\xfB:kh~bB27 oNC7.˗zEag F߱ qXh \ t7VLlX W"> ~ޑ D+ ,W@iqAuZ~yjN>:Ak|֋pᅙ)`w3EneZ]Ì]18v&EƜ`}j@toJH /;JtUT'#C N/#3}pߥHVMF>GD 1G[xgB[7 ( "maؙ6ɴڥQI@Gh; m1x(1"Bw؀R9v Ws<Ԝa<#w᳽Z;ޖ;CzV=TgYǀ669Tsya}7 RLR]9{}0~~eIN&NR9G4%fqL٭/?[uiّ蹫R0EJ̅ 2MD7m1~(a)@4Yɾ1č3/=2i‰)y`&@%RksÖZ.^ 5ƶD3iUEMEIXΦ 1eDhFv A)3v;?5XyՖj}-c<] nŦVgYu ! ¹!؃.sCeGU]bBG @ECB@u@`M^Km.5⤌:MrȂnC,: ~!IpR :WRaoNg2\NlD/9v3k`r\7oT{e(jZ&L+ HIBe9;KPLZ2VvS텯^D:/%'.B7I1cIuL{d)]nWZ k !Je t)?m{bAlsL}r9]k!"h kY'-dtt )!R2ce3۶QgZF!0k_1DPD܉[Os!= *0b2hI%[h Byja:D>@{̄b͂y46+^~Qca};$ Ym##]!TϠj[꥔1"R̰2H.OEi׸pN19QDwFk]:LU@eIoTwh->Owxcʸ%>%0Uf i xFS_l=ay8r)_?1cqDDpe=_*R^#B$5AT9Fz9Mm/m2& t/')\ES٠YۉDžyuGgr)y6KFu& VȓXgЍDx|%Kj#!ޔ$_ NL(eM#D^%3TUģ> AJ'O;;<*f%@Waxx b5lZM⌟` znqU; -HZq;Bk~N|ͺ卵َB\c(!$E8#X>FP*Z {i&m-,9ғpFez`pf)xH87~raWȠwO7> r*43 }{bc+EuYG+RS,`_)Pb&Y pĽyɂa@' #۾,;ڣ1PB;dYN7=]5܄MAL^df/2YEˏOO |: .;9;N |yn׸hƸoB=8Iױg1'7Uy֚ d!WC%Ί>`/I$[^9}1>GJ~eWc\Ot6 )fek]v9W<)+ljnWg&wVΘaҜoLM_HoxnNg.`C(KjH/(' 76Uξ`KXϗqndQFlWd"ҳ[aoӾMoFr:cgHMTA+Qb|=&΢AEb-*"*q8SK " .R&$7!nFtPǠcÖfH^hi!8Us}Z7fN>i?R=/6lvL Ϊc̜T! 2A:/^ AĘmjZmDŽ;NRIa*z_#q۶cq bcJl .)T)vR}kpݢ XSR &4LGRLaEX\- j~SdK=#}@quJB;EdV,SЀhmT;ٸ8vOw)9>"#t gM;jU3cJck.cSJ&6گy1->s3 72=j$IAYhVE\c[@t\cVVx9ǐ V#ƒ f[t:B[Bh؞bCާ7fg|F~ç]tRB3ke"[Ȏ<[հ׽gd7/΀15SD 26"rivNT]5@!CXLKovq8>c YXKf [FBX>߭vPT7kޒ/z\vaפ‚7}Z'@OGAd(ⶍ_ۿRw缘EW&؏Wc`7s͈2Rq1R||H}G/nCLfz sy)DxT#Ev/i$|6q3)|)~HH!NguշP<'XB tz2ٞB쵺] ONN?0!,WB)M#epiYt^ IqCGlfFv$JV0~E{jXmŭrp3~EHr ǟdǭL<9ԥ2$XRUA/t%80MK ȹf 6zl)cuZ4 RY,#vݶi ,G@s3u& Ta'"ܲ\)S쐬73쎦5ڜ./\J-C}yxYoA #a]T*j\/g'b_:,૭)xk<C|2?6YF⧻ 0î=L4gCUt: Gxm˼8-ո)3X2FF[EηW>M:J t4lҺT ʆ*mN[ZP OG;[1.Od )`R]R ]fQ Pf”w,>7%Af& jb,fko$vk;ʾd.<oFZ A꼔HA1-jGb3luq2epj`` ">2CD#m[U!)@4g{{C5ۘ+9)Q9E#C@8ʰP䂹@{ փP8b/hQwV v^c*7hp OH+!}~[)e3z#AbRXUۥHmRez|%4c ZB=q#T+ӎv_Ѣl\h|fY(5݅i"8WYm Xp.@$g |;łtUYb1wɘ eDx[B&fR.MWk;p\}f>,!+@j#ZZuW8lFL~%^JXS{Q{'6{ Dlcy钽HV^3P+Mm" xڝwJ,5$-)4\qJuqi0|ɋtZyEjCU-+ ]/`A1a^z3_]Jŭ4K#XFWBl$D(px#s9#oB%.{\B͈(O顲)__BJ'l96oUs*u6H!r\!zS g\Va<\ͽ-aK 9Hj3/1Oẍpb}3҈K @^rssOVG?U&vNHuD%`7.D\pJ&Bd$zjx9VQ4g&CЛ5"㻭?FaLP :+TYRKB%3=QQ3( 25-w]9hEqzS(Xҩиϴ, j$Ouz-XLi=W#>JG,U6j9Jq}o(&AqԆ6bnvdH@?$hΜ N?i?=1 -4d+$=!ׁX Z!S69y3צVMq憝&Fî lOmB?8A4OܜS5o1We[4ĸf:(gjXFmW<94"ۥm{:,u ']4>uae|Hۿ~1IBZ$#2e#pWX϶t[8m뵻DGd /cQ"٤P~kigObK5y-r@Vi<[+)iwd+թ-LC< DhlpTwBM_Sw>] 3TV()#҈q^j??mH#lзM%}i!.ê~^ti Riž@8IYGz%Vs]@Rz0%oH0jG慼o06#}U56NaGOdC`h-XL(%*~JTb1K::]`t4;3 #ZzimT췯Q_ /2> ըyOԷau#C bcKb6 E<- H"ɶ Ea)KqO.ýz&41f($e㰤 V\^ܫ><2aFoڔPt$s0֍ iq"Ƞ@p >c~8 dX^+Y…9J^RSQKau|z\QipƜq^pW]niyQ]6H9}|YKq[>̾p5}kQ Ku` +sUH&WqBcUHQ?ek|Þ>[]xz]#]ūkݪOㄽ٧OĄ lSJ |˕,{Dc%H5F(͑^g4]IK(gG ]EtMmյ!|r]J5OZ5 8k/ΒhQ^,K85 |ltI,=SaXAg wQICwsV !Lz]{qRr05M?\3>٩ڌن6\_yK&2&1tM5A#Ghn|RՁO|G@޶W9=R1%^ ^Vo_fЎ.KU:~o׌ 9jki>L1~ksSI6aJJ`@+VVu J]/E&'TvPc/Xգ0Pb$ND-8f%=o;SEA( 3q;ΏތֳGX;fxyy K2 pxmip։a0c=ܘt}/1CS A˫/Mrˮ/P,AQfV,Nz JH?p`8=W5^N2>j(26D'ɘ-}4W.V߿RѦqbŘT zɣ+O=墖x/$ \r:E ۲णG܀G[O W|p"#vQAd[V7Zg?iO B>>n)VH9[Q! |9fl&z-:* UM=s7,)Šh8^f$,ĕՔ[w+eǏ &z%Pd3 @",Gxfrב1 tD}IB%/' ؀YOkA&Qdb^8-Ӭͤ*8@X\=ٳ[w}f06d_ QYpٍ޵|^:P~sCtCTԮٽI*2yFx6:0Ud.rI|ZIGDHF@Xin} 0'iui): }V\h(26h WLoh(堺5L֜ h ;J*~%.p_9/̙Ge х p!DC"NHü!YA`^7К 1W}ߡ9nQoܮ,0;HN^#L$D;΂$b !?˝Mf5A)O \ܖ$Y,~30O f$4F2ox'^1 ܧx7sF~Yz(^-ݓڄO;ZYɚƥ޴fgHS{![WУQWQU%컚^8;J !>HAW5M#b~ DmeGf{ElBGF gI5QT*;x# Urh t-}H;QȾ~ qvBP嚌o6@P@DJlVK}k^Κǯ1- ڳg wat.D8.?&8?  =Q%(h.hmHV%۴hiۋi[+ݍfGyX|ƓoչUW[3P!F/GHb Ysޚot@&6oـ{ܓ/aM/pVV7?mBtT;4nrdH5۳hNg?ˁ+lX&8qSrI*C~]};,kqCCDi/a S<%d'vrF7EJmjہ22%>husHV]^nJJ5,HFy/ [ d]:|=)V*W)hPFFiD,Pwqi Uzaxїf#)Z[QT5i4H} Ю=+`^p0m<7tK:On5ʴ򔱌ě <0(4{$"EĹǭjٙ ce`8T;i޹ҝ&h?\s^wI? DxJ:!.۹:H!gbq_ .K{7jݯ} ^uyQj٧tGum['40{`;'rQ|̨X qSm7nںQR8mO[*]I: & v+@vc N]o#27S^3RmlmB'fU"aQv[mJ9b˸v91ryv=co~g!%" 8)E+q -h-ξj1`3D ҟ:4\3jE^&dPPPǒ[ :r_]ʷp d.mSd_0V7[;kI &vaS@s]<_ꊞ+°Z+v{ݲRϥIw-1UMfmh]2vP=J([iz^!+щ:}JdǢ1=U@;Rڃ25y5@LZv kW9Bګ^xaˍ!W>22R-OD ~|Ә}ѠعˏA;Jb2gEMiEPº6b _Ӟ$m&EZF|cVΈu~.Wbz)P@UP ]mFikD@IHUuҭ2.8Zc׮5G"SƳ=I -\;{Oơ%tOwn{[KBүL+,JüS8YF7iĽ#N1`,ыr}DW5 ŷiW? % DUw59O,OqKP͗ RF$SMolV2\>jzeٸ 2OaBJx }մ76"@E:1ife@$gXw{@f!893Oڋ"LGDߒO^D+gӻoDOC6~6rkY2Dz)qTt _uJUƲt twM1KTun߬Q,ZNhy{RYЬ?T^ONG52Puvp(`G?ո2%a/fGR%}:64]@&N86^-N DDJ)RUx$\-.zNg`_ ޫ0R.߇36);m<B7yV8DֿgpChEOt Йd*BξSoV\?>I01*ˮQxF`VbeȽ,` ?0o&!Q¾—i 7{1EoCdhIώm 2j-hݶe[sjeeIՈo^TtG 4E=R980OnCs!|yܢ 3&Y.F-/{C5<:~UVdf0xE.C }hޔL@d$c3kFחnڣk] ׍, l{,oP´aG{O:2F¯}{&oT*t`gaѾLVNuɗB*<cg}l)vFkg9-\n mc xϚڷ5 ^W:Y( ˄7TZxz;h7}Cqm6ш)i;F-!Vv޲] AKUWN G(H1e≽s̽H^Ĉy.GՏâUȶj<#3^fyTNuBP<)H}>`?\yGzDK.Ķ%6HOESM$SP[ BjuVm%,oVC`@D<&7aIz H{u%/dߢᢇy4^L?9`])+PET@q҅>$Ga9ɶ !<{{0O=wU LoQEsf`Y3w] C02%Zݹ/VTP1, uOR {V|11h(B7^ [4T{}qtc(vZN@.5do tDQM@LqۍR8X3#GI^4RU'3h;OdnTx -޲=W|D@)GG$(6>bU@F)BNRa܃DQ]f%1TDisl7pS< ?li<ٶ.ƛ$Xqc=Qc8 w eJʼBC#j4И5MjE[n{w(u;s4,9E)Sw&I>D5;9U*h|D PvK-I8 RV˔ ̾UGŢ\WԒprto36PPxp{z]W\o bDU͌p v`_%JegF/xxѝ?U7(3GPwS`ug YtSX^+MOX`M_LwIֿÇ ,,yݠ^FHAZalX2!3E 75Z{+"[rMȬM 4`u!*2n$cHIH|up _Zbf?bm۝c}%3bN6~/L'V)%/ۀYOE*)p6$Nϐ+T5 }2;96z#Aftȕ MT{]g𐊄S,OylUC0L#𒀗~#*-8h0FrQips*}aF $psQ,9+ ˄>EʓV#<ZU9 ,Cί0h|YULةPWw傚Du5CV3 ؁,./S;rW: 53[n{puLE5q 1ЍE{Z pɐ5@>īcXP?ioTizS"ٷ$!T]vw#zB!`ٯ@*&w'%&Oh*Vxq"> 6k#%.PB~>w.b iN!#5Fz*GH]DȂՋȇ;UZ Ltpo+"JQ ,jk:HRS#AvQ^oiKWJ%v}Be+Q$h X ZDȩ K7x2醜e{w[Htضk@c@%+JGۼ +H#ˡ495(GU<MNwS7gwU((m" :lRř*Ӕ34ul.p_C iR7 >ƅ!hmr` 9 V80 ZQ|݅qXr1u.TXGFD{TenW|39ǞFܟ ut/LbDy@ɏ"ơ)ׄScXa <;@~,_vwKi2fyJn~3<#H7qH48I}M%Cp]B6猸 T'ڮ~xUθWHOoLݟQg9:̇m\ `s}DG(lT9Dvi<VdxSPLŮyELRZeO3Os׾9P9x; {?Mӽ]#BRri6i~ ) u59vC-\yw9,=6=;==RM>`7A1n%TџxW}s 7U9$ꌦ˝llB {>?| XI˩JYP:+LM²ۦ}f+]uȯ4]id?k3k`d3Eť;҅5eK%rKB\+HmMK}¶.SqO^ꆈZtNgC !|"~dy "#'4]+_x\ !QuG5-ӂ+G,$HE8=8Y0NFn (^)އתQP"5QNA _űՍfAwRF~Vnɿ#JPkb g8rGJRYpq:EiYeh#?l.Epm?#knt y E29H@+]ֺ(-qܗI\R鹺6FO*sԩZ81V|m0-/Kl'@c t=^9a1V`ZvOf"/Zgfg\!_b J.nt\{Kec'R^_FJ*x'.(hAd@OxT977g+5S]y%7Xu."_ƏQx'#YHG`?t ~]-ȦgL@!!o9q]ѻ\$ &Nj-ȗjY*PD^0w,0zQ\*ed 2ģ&V?42l14Y vHFpxA=St>'i.P9V3K a-~/~Zk",}`J EHozjE+UNIq<\HIY2P/FEUnz^iDTٖǫMj _+ Q[" ٺ)g4Ne~\yxo F2oMow@#?8Y3(W۔7{G YePL0*`Ҩ]PLZWෘ+$YXOAISS2:dE/Кf/,xR 1G/1y*_/.`Z^[ބnJ`Y(CMW+[$phP F`"7=CymHh'Qu\mvG_@0RX\8!{(ž|mt$Bj Qzh>OOWZL=Xu(߬ƫ6d?L9¤/@PqsH乁8ȗnZKn `uj ıHn}t{e?NEӀ=%?&lrvW$2d1x`|ԍ_k\59b(%4m527ǫjV;L1 bOL,؋InYȀ~Co2]\]87=UhoVKa`,xcX[Qik%fI"Un~~y~iXmF&JkoTn_I1 51V-HJCqmc13\Ҭ {46׀eö`+#M61Qoze|.P^+ `*xPk \"L$[zڌHOj]o(4HOؽTË!T]|JaGT0#$aIiZeZ<}w$-eh[A>sfji9k+Վ cdCq)q?)L]i29F b ~?AFŠ.k?~/n ) U *,?Qa K;ijI*`&tu  g3E 5`ԛ 0!^cѵFF}p|[3$P؆!͡ u0Eݣ;4`i77^( My?׳72V(%vcmlݖƒ"^q!n8s硬d o;Ohc%/D]H+sKW槌#h,Xnb69yhTxs2LCm-1+hG9mP3eyR)~SR+<}7&=߿͋3j[{ggl-1a5xt&HSE\Wmdb\C 0W(ƷSQ ?.H˾"^-?hK6qPjjM~2Ae]%~-6A[.-P'dL"fP}QPRAgh̜Lp!Z}j|^s) shQf֊(X^,1䠊6E<}Ge|t>p1m8|~AVU+Z: II~1u@bT(C.~|6yYH% 08⬗b)ywcwPwQD b59$`eEΞDxL{.,M1QIV38&fO YaRe^uّ,ƲB8IOkr`ʞHD G7⯴tW%/AnFo_Xl+q᯷{'pXbXi#yfrٻߐ;m؊B vC"T5?Ů{hylP=XWz.;DjTRmM27Dfܚ]٣Y0*}+\05i[2k@}G "h 7q`](lݨ!N8؂Y ?=[PඹBO&P1e/RۓKxW[赌}CU%gEPbYi 6=OVuFon =F_HE?+6gŋA;M`-)t&w3qx"q"^CMh&mp/\֓hrʰ/b {pWKy=NwxpbT@Ӡ"MHkPF0|bYпN v}ŹV#ɊJZy* xhL#ľ۴FRe1f|"~,M+?6AF `rslp71H4*^$MAٜu2ٍđ*iuh}qA86h;ksPR3dUHU;S MFs +lyHÕ9$.9K,N& ?k3sy O~=snw*A} L@ fN5=e<Ȝu!:=h@n)v&A@^S 10 n->4AH=U]|׮ 0gYk&1󡇛U {{}veZ$BYV4-iߤbD3rȖ/ n[^2izD (; 5˅gz>PByv _^1,\ܑn6)[71Q&zQ r\scp509b"D>!SA,#FB2Twz-^}_("rjzi_*,B և-u:J۷E !`݀~Z-oHI0F~A:v$u9ir_h 3C\LZH.R33i&C[@G7 $tUq P]gj`u9-,P_3> {@ەCxc8@SQ)`lQުc~7BNF0Lء璶Q1 vK'dGh<Θ;IeV f8n 6Xx v? P5~aԸV6E]^4w!0''j[V  ϔj@d$ u5ċLAd" {T1gݡ9bQcpkjB64ez / R,Rm&#1^W^࠺[wmT}D؉Q)SaM qUurҙ;ءLGK~Ճ<\㈭Xpk=RnwI똸}cQdPn噅˖_rYk5h|`pA%fגDŃD]uWX&RE1́@WMoN>Z( ^e '.Sn: .U^_>J袏{memkS&mQA"5M\;Z:IY#9<+>ι]"!SaO_ՖKBv5@Gۼe[6{ @Aru293'ngZ@̢gWX'jP c^[ckx;@O;Wcnh%ʆ?۩?$+oż%4 /d@BAS̖37:̜Yܝla KJI jHmJ:@ OXj|T=&cFI\g ͟E()Aځmz]DQW쬒<ݞtWaMUlc)7V uC̿FRU;9mA|}ۅa9 FlDM`8[i]2# _@zMϓLq o'}mBb;cwl +/f۾^xہ-(L#j;vU365JKOP)o0SNؕ9QFW8%Ѱ*g"Т=tp s`kg-ϼҴ("ˌSrF_z].uRpt#gy-KOV`> V7F&֙vSD˴V2ٻqӏtC_9P ɔ4ix8M՚hGWkKHmZ "VMCbC = x LNyFQU7kS*6RlXKh85lF&?K,꥘O؛%m7X+EcBfAdސI_3'.Mx(mE/gCF|[!a1؄N[#j- iDO4Ϡ2hNܙ$_%u:sP5O@ դƈ%pWדT0ZI>(qphujɄ8f)D {I}(+)sgG]7_R:.RHhilff) u92]uer֖ـzʰ.wD~VnPah1ʹ0~ͱX3B^j;D!ɖ5.}2(G UNXu5KyTL6"Z5C_ykXL͗q1HV J!ZN5Lܙl`$ >_u=7yRdՒ /{f $+NuFMU3j˞=̘>,4Op3V?W`_w kq?UzG!7X_b'M圦3n~ruW ɇz^嬓Fw6؛&', V R/u0K;\k!U=':'s)'ǻKoNҡj#۬-*;DM&;0jw휞Kfc⪅/Be P۴KEy*n z Ng1-,J$\VB@DKFTQiI?ChBwS"jZLǏjjʤSexYe>اם.EǾ)ܞ J_,Ћ3mN̸PdtvEg\ :"1t0Y#j#:3m4껗Eò@0ejoN?5U `4!(wҨXOy}uoߔ 71ޕp+rXE (|,jFae]sn'/iC/1BMZx90ԾYbHbfŏCF3;?p7..3R~sS,oGgO0z˰{KdO-+!dKѳ8jAkDzV3e oWvl{I&UTjԞj׽9i!K ӹDVF$"9^cfX54IKY^-epյ_!'`B~M.'O\Pe[.mmӺux<~姴-t=i| [Cp5׻Om< ϘH'~R"Bf<!UOqVa+^ Ӛ\~AwbBѧ82Mؙ<wvp&FeT m'M@ύ>g._M 7՘H=Nǎ&KoP5M?Zn;_KC Q "n* ^+cEQM-=Ӓyk`qҫv(Pj0D Za=I(]Kd%r,  @O="PQ[K>1) ?3J18V w]- ,Wԑ4fͪœ J%x{/Nܑ/`AUT|J3;o[,s#*dɓ(~֜F3}0cg:J;rFs^gE$+:>ﴨ}=l\Dz7OEkbwd6L#+PG&S \Oy$:kfO=ΫvPLy<)\^κp6`n-Vb }@A05XŘHF\{/Q>TN&ֽ[*'5:&@UU9eTπ3B _'Ճ1e ɧkbXPܬyyNt!'A0^:vPP wK v7MR1|vONgNh*_o}:A"EE@7=hL L:n<[ĶM:>ԙ&BT )fl%v+鐭nu X,k /@j->R?ךIwq0mEuЇ5pQD#]xQt6,ɎJXV0L>Yw:y>Q i|4a2-/.IDJ78!OFwS2SJ|| >G_Nf{ƆUl=a6%qvL8!-dƒTdcb ST8OQ9:iVt=M!QD;[}f{~Ggo_ȿ:ErzjN-_Io.u`RF!Ͷ}Ď^8BP׮L6F $!@br:Fpg;Dai !zƉ)(SՍ)i d&Mxkiۀ%'ʮx~(B9m g'(&hQl01EJ>BowcB* ڌ~!tx UK|)̒0~EpGk7gb0͡'%gR(FL1c/"/hg$wtS*=v &zϟЙR;5"^DSb ,؝ n%b% @TJC_T ${v:i>G6$vّ~y[ZMhftsi4=&-guG!A^(dBF|װ;vnU 3X"3fD.y.vp>N6$MTG(U4gn*B &ITi[)ûSA\cCiʊamB]{rBk8b+! I˗02ͅgט ִc2yfW3,Rht/臇^ ,"AoSԄx ;Gk ` k#Tvsr5@-6 -u>R!oG֖:8g!m-"}ǒd'C!0>Bľ:W|sXKlOr`uಗޯ- vxr2g}59D$@9ZD(c(AHг:a{iFgnb8 ť!|ھ_.?[ԫIaW9+; bAugd=qqJ)O|ǭ"W'ϓ")m=GB'̳7ـP -=QRb)J;h(e%Ю'aG]6/H}*z]gN/fyCZ\9ݯs+/[R)Po&Wۓ,lMZJQ.+K ݂**n{r\%dEn]son8'!3d^_t0ZOy̋v*/S>n3<τ9ǥ7Ngke]B슔IǹE!F`ŨC3Uv>d׏pCk,@oє _l 9KS"NWφ5}us ]t z[gmmx/ .**$] gw`7XB#VyC *2lf=S澅85y@ uo&( ڨ(;ހ`j'c7-F݇H;LPCAIozN .$˃bP)Wui  B~OzX4,]zxj{<u5ˆtnVv/)hsE%568=r$SѾ[;hwoz^٦V&Uwo02\Wh?oXpGblώzJA {xy,V3^6Ig"plw^Z.R&I/1tZw>*v`{^|j椨!s%~c`uӲI״(~@m D6%ov~VX%b{mb8mហ9ʛ=BG08$z t\=̫x)RX#(w29<xniipJ_Мo.lkrSnZCBwu| #1'&S3^oIǦ$(&[%v0}ߑ9%A𚒸hg$Gzu.8S-zjh'bV>7UyD%3 BS䓫HINgq.o.D#YQĐ 􁯪2iv:YaKQ: M""5x Ԣ*YA6Y<8asݖ>%x57Z_[ ©;Iץ~!~ KV*^R!w` UrQF5@'^9BamI4s&a]܆. _jenӸlCu0"xO23[mSwnג4p"_O.cDڴ!bI'8Xr .|F 9p Hk^F$bw)p򶜊*s$RiFrfG 欿k}-Elz sܒ [0(P>{t~lb4VJbe>{e>䏥ja>G_H^7+3!A&̡H=hjRp ͣ O|;"o:%%,<>/*.XSJzMɒx _qdp|N{ .v}}ɦeX @F8`V?EAʶ8yK3{ҝC&T-7%ƜSlhD{|N1Jo5C81RXb#??hB0H>ǜ^cѨ&h^vMc,<'\Ddcܾ@#3zTo"i; qIq<½lD%qld2^MJZ:vDFhMZ jF1z㾾 q! l}WYC EjGbGa"kB0b6Gޠg'lS--X"T|o{K C0`1GR[n)ur1̦ǝ,&* qVW*=J%.ȡpqC2M٘D68 C̩nX9s$uimy>2giLPK N y =+5܋qYk$89”963CV~nӆ+kn*Z<;S }drrx/f'*\ԍ7> /khF< ,A)W͋@GCau5r3)]9EaiʹGwp049F%G(Y(B#}VN&eBya1*|=JP lg-Ƴ %-¯Kq3"GD, R퍌kS# #*Y=׳RБT6+M=T`v,jf8Jma3l?={~gyjXơ:e1Ů`mx73`pD3f"L_'O 鞳"`E [BJsQYQNHbG[ijiIx!4)^iXvn[t}|c78*o,&A`?u;5q-cC&F&4Ⱦa 0O.[%QiR3+=&YGxilaDp\YJq%e5^RWx\EO! l$]Pqb;ag14ZiԈҔ葉W

Dj%6dr,z=V2uWw1s8 ]GNCJHZS(=7=TI.qPʥu]Ƈ;ϖ*0t04PZu3H׼kXδUܠS{qSH8,SсGxr,.}?/iRe dUljl}^myQ:M9, xL:ө:,K BMo=SA2 y K3{augwV@BGf4dOqiys?≑W]!3\>GpO5]b~I-{c Q(_9>R3?ޙEt}<,@xԽSM:@$]WD5 TpBxq†yX^ {{>rQZ=߼ Db.#ř9 aIR0µM5x^)DcBPI"sdYa_ 8?x9Hz]_gKѨ˒ً|A?{+"]46T:M([6wl=[ [F TzC>̿/*m+kxk|!k4@rD.k>N*q0%KMsnOА[*N2JH5q"GX+8eeW^mv 2fЊ <;`e휢gSes' G8cىE}m8Si_ysI'1C6+=kls V '%CE9G>p5+}j;6-4x]*x@|SdPIʖE{F2͇xhV{C:$cN{\nz2nGɴM_\HK]J۩:ޚ0mV!<$(J: ?`q|'){zIh]F*蓮& yBpcw1`KZ'ݭi|$8hɓ/r@%!ƧG*`emR 4 B鑆$"mI/f~,M߁ٶv? DG|ucD[j2IXaICV .bP閪x恌ish9&&)GmkPmx12:xӪ T_G o˹WQ25*ۀFo~vhKlm ]s9 s$Nb-8=T&A!X磉4` ; :L .7B(c+ts&!_U=TRE"w [;we>:sBl 'fx$ #??XwuiqoyQqI#{w8(Mk߱;_|ǻl=7#5m'!8B?39XN`jjp'bnfrgOpq4n|uP2.IɏVby8B|M UB=(OnDGz2O)vZ__ҙ-iqGnfk1$rD^nW~K;:S؁黥yOKF;!C"grn I &\($Fcj 䬶k{G'uo@TF L7"⏐4,grB5m-a'^PtC"ģ(0d43Mo yi:sױd ϑƗ+,dƖr ƶ[.=^NN3Fftp+a@ Oytjն?VW@,Lꅢ aV7*?r?=8&+$dIUˡμpwfsѕ!ߡ1cR% *&ص(Ϣ G<}{'$b]B]!8U`=.NXR$-YC3-MMD/=S {چg&HZ)[E귔&*nE;\ :dz0~x/d7? >$ /6GVJu|ʟe$fC Maa )#BIUQa OP- 1ĆLXV͡RFMzxc{GlJ\8 C=S:Gxz< =K[z]ϷX=v*nEKXI-OB\+#ʂ4џcDI>1T{ߩj8|of^i9(9 )RCqx _,ӀT~T|`U\t׻y_])?Y&9K2a:ѓ;] >yݞ%Ou 4G 2W X?-3KOS {;{dzCbGkk\d[g|;955O\ʗ-Vo] 5ā1t4q'3gKb'w6u Khqw +\OXg SѲ kS1 Gv4!.*k89Ǵ"GJSѬ +i3t }#OBC )*5jG TrX~&}x!b7g*ly~lnzLi9\RP?FX[@ =͡(QXT4]TprY^輴zV{Try g>%šD Lv_Q;Ɍ ɛ)pq#.J?}TE?.dp|1faHұwMנrI;JM}BLM[5]\V17t)ܺч{#VF a1)!|p ̌M]w)مN܌:,qwB T*u.혈J X^.1JYIԿחؓHd|i3bgœ)5K4I'NY[٫z|͘4^4aaM:I 2Z 4:6A+'Y{ Nuܷ?%6Q`S{߿EE(!IT(`w O?z6($_O#ݢEO>d.q#~I6PG(4vL6P`INwHm` i0}E!܅(CbZҼ[ ʵ .8W49|߬|㙣&r5:Q5۟ pK`#*>% ) lQϹFp6*n76m0҅,ܨE!}gwHt9J}Ob SCQ幒빲LIΘ6r乛a3>:׈Q&xmNM sDS X-̆L tyD֐6szGu糴pC硕V {x ҥ(\RjK6Ci.-5֋AY!YEή:Fg(/"QnL$˞ ~u1bLP[kΥRu??ǀG\N<81gN2J(rJrbPC 2:gmȂ @ )XMoG>:_#1zI;6 qv}\*d،.֢ږҝXڮ7ACm]O,՘QSp(T qGFKen*2y M >,ͅ-Ck J6 jEbrg 'ZyK2$'7SŕzUvUׅRr@Ȉt :)C;+|Fs  1 Yyf37FM^Yf@ & NxJèM }=Sd'u 5x<><>%oaPzof>Jg6Y \U[< /F@Q$~~.*t3\^FrzzbՎiٙ2/N~H 3/!0:&M gVF@ I Xpc-²,?9CT:EG}53Dc-ftIcY 9=b7CjlsvQG~~a.B̀DŽ׫8Ɣ%wX[&v\(5W{TcVi+As d`P!DU~&E*Eg):H&R! ߣ\' 7)5Kҹ,)yjս]5>vl|7- n \o"y'Dҽ8&>MpI]=[+ Bog뚎a@KCa.+A.r8W(n.{ox!~bWҁQtEBfZgy˙A S`:faX)vg`qS/w`Y`_H*'urxk9U?=[ gi8 vB?&!9m R)^B1DZ7 ,qإ:\`Y7Fݎ`Qߗ1 E6RG9^{68/0J"g$;OOp4/)8z0$f78ɘ/UFW`돁ymR-A #J`A!l:5̤NX2]$Ȫ:3տ%7f ﴴId"swk/&˜U֏b$05Q%f> D@ʄXn 9rq2? J|dZ5PIu<4!5(F\yݢ-ƕW,C)´UrH~px{rkp$-}'c5UF;|jz<뼂ĹN 7ҠDfjq2U J;+6qW)/2IS@bD&M*8 ku D"7 %KI+p?j}F2?{IpUzBa6_o~ܺl8[wX+RedX٣ڷXb:ijT.dl*-AN)򀩿2S|!.ez=L%qGs!hCc)vgcI3IPz[-/=E@aנz]CrIJ5\h="~O۬n6Ll.,Yĩ'˭@^0| JǕ1XW^^;9dU~Օ7xmWB.(ȿS0.SKh˗{ yr/'!4bs4&/kiJvfb:mZȜvYT:| θ׽//-'@7 |:FPoA\xWF`| #q"ԖA2K-'J{\|[FNY~iaU7׾yn$+Qg~& 2?9P>jKuY>MNqդ"}֕uJl'jbn#im%ૠ`qmԥ,v#R0[L Wx|/^ u2'mŠм;ǯvTm/(b6!U'o>{ҜS$T2.N:>Mܸ{1RBdz8W4$)y4ݮ%vn@ w`aZ <)_f%6]YŶh(srNy dhrlbNU~KP<vL\՟VWo83?5T[gX:B0P31ކI:Z5iqChB˦4`o9𤝛=> 2 O\} Ƴn lQRwm\_|uɻ퐑@c<.qW-m{ /@35FnJF }_~AIĚvɊ /$L"8=BȀ 鸙ԁ,vӳtks΅i-Po Ib0Pw4c-ѵ5 gڨ9ݺv-hAPUqrU}7[~{y[RUYOU+h8ʱ۶<[c؈PcFjj՘_1?p+ZΥ;odr5n !Q Fjfx՛C!&li]x LeTXgV\tzfJŕ"4T⯲g'U| "URR8e~~918{mRkjY?\&k0xۙRaXyp; GURmTo1w=pÂR+6jUܣC+GLk,|Xif8WÊz AR:؁HTfJ ?7QuzHj%h\h2V T=LDh0Z ~GF<,E~_A$XHaF]NP4OcM߯xAW$F6,ӹ ^=NRaĤ6w6SDpv M$7N3!6&dt 4uL:W.g 4i`>sod?V/prAGפs"cmv+qle$^w| οLf照Uڈh:{w`V`5~&cxCU #X٠ !vY5#@/f q+u1 &knjTD.(yc蛖Q/䕣v,JE 0a d skqQxDm TF`dV[,OVοc-J4Y2c r75"#%i%DnN䳈(%mT8!-|ܥ >gCHiZ=G*;ㄧI$wW2f֜c)uLѵ-.D{, 0rف8/ j\v=s QS{0`(,&N%tb0L-%p-/:2{Up%a *T1#]JeacCֻ]"?/)s>K(Rcqch %X$N,kWudH;I"0=7*~8Ho_//Z.mT!h*c&[pBؔ;/b[.HV$12@jE<(ޭT|nlM&EWy)5cN}8pfF'[~Jy`\d8!R5OqF \ON,_P+4eg&rBL~Vd3_@E$YP"?r@~IC/K;muEwNS2K2ښ'3H|E_0"A#V8;l8Wܪnh!kdC۪vQN/IPFHeΆ2~?*M|c\LDEA8R./aXL D~$Lo<X|,&kͩ*ۡ%ځ&X(%fzw~g7 'HD5]>;.DmGRL ke@AF35 8Lu*,)wV˫#>(qޖV휆ۜJ3p,,){CespЪbd `H8vp_ܿT[kŸ1 C;IqdՉ'}iEF2eWmgjg`CiV. ^y3`R ="(m^:.p|]!s~/' (dc3B:V@“v 褭}RN=ȹ0A5.&5ೞaЄ)={zG;_TPi5$6G '_,/]$͎ u^Q:`)rZ%CF ]iDpt(~= x߸QOx T`Ga1wGpvh*띪Oo;#չӋFW"sPvPTܲJՍId9Vɥ>YOԵEnvUFiG* q "ѧ?d >f#4E oYy%HC[gc覍//B#TQ`G´aͨ kw;w!wZ@Da7Jw6?@F [v^ ޱnFW 2RGrc0 .ҥvT'!:f}t9@ګK.xgG a`8bu+eb7ِpiA@j_Nd͘U&~52?A{oG1,VٻX>#|2LtC_!sL$%~de1 :k@d?^zh \V{ CZ|i {3w"lzk'M8\5tIMt9Uq>Ц k?=5uuc׋ n7J{ 8D|hQy=7/Foӆ 0nA{lKP2E%3a~'a%RyiiK`OagaSG(ۘt ]X\qDG6QMEe]S"~Je~WIĠO Oe'Dm( C0*5kG?kihAh<^NfW*(D!m:C>dK#7ߢZuAޏ 2NY|;ֱ8栨Դ<Gtm dAƦzp* 09Kd(b('?20#tЁQZuQ/=p&/BzFo2Yp"Rџi^Uɦ&{Sk&zV+)a) ece*&-e2s";${<|==P_͓ v7uϸGfhd#e[E(*KaS/WNc0 ]J 1`IEih>`YciC^ XJo2s4Mxf#C`d:# GPCsmDIbEاZEھKB=H~9Ic=ߜA 2e0NHOJ\30VEx GξwgU*KözᖱBS]{rֺ|X̱]\;%Ԋ&f ,rn(2HjolƕS, 웷y2=Е lERri6 I$[CS!ohdp(L=/q1#!~֗#+;B M?+_@v Ҋ1p?1J KyM>GV;Y-:$P,vpf~RC+GB,dU޳Xb8\ֳybLǮ7 FbWF_NtH|%F\b0VPg q?9mE*_(,2*) e;}/ZDA~/^3@e|AlUJq-der~$QiS_{ QGL2  CRJ I?@nE65&4o. =x%Ä/-|>T+W%ƱG*qcrMUO6 D">5zxM%o]n:nгҸdUm<5~ذ֓Y#֟?=4 oV_v&0\=IވfJԸZJn9O.\}8,cuBI&f3!f[60= M~Π`/beT`-yCϱN!Ogqa_1hk7nOQ]Z"j|1\޵S<ؐDMzFqi>bTHzt~􅾤^tf#c9dJN:prMk1|7Ft&W2vTR([H(.uZp SMuϕ}TKn;N`wLYѦ%=$~UFX0pzk/k.sgwhSa=:!ͨ讛:NB#P"eYK7qn(&X8g5/Bv(=!DdjaUd5P H ~P[H{& "3m>#egt%=Re313Ty.e _yVL~g4@b10{X/_$ټ.qg&x0yo?ag/{;xk+^,_T Z!Lcl 8d(VNy؍3I>A2\^`'`cMZv^1 l9,KޣaLJI8%~]&;5#c֊Ρeg`<t1rQi![dv|RÀ$Q7hX)a# |b/;ORU#/@5{6J֝8c WHx{lNEuu)RDHet$3k D8ʅ{T{0PN9s<7T2Cl!/Ѣ)a%6<%Y_En&?Eso"w @˺?q;%ˀ0k'5oqutD4falB6oqۄMųFy8Z 6!hLxo/\" +h NI4 ~ڿ0GC0M0q!Ljcһ6Ro}@^dޚƊf n H7ǟsS EV"D[18</uОey6Btз߰rhy%#o 9t)7=wێV oXП[BDt>;'`}hZ2$3kYJ{BўUBiY90SV,{H HWO~l [Say{VnjԨ\X%Jl'KZMoVpZlRþL>Z4 K||P!W= #M᲎{7 91 R땧@$N΋1 qKkvN?ԍ\t{j=Uge0 5*hn~p'к{s$j`A AnQCHeW`nY)旞G1opyZ5>XXIJY7TJ3tzXPkx@NM25 g~lVOfHjGп=4~Pp9_Z<Ĵahٓ"BM5gMk/rb1NRka`N!IWu_OS[MD/\Da̬><[ե\a0u0^GʱzazORh`{.8Jkg@dT1a-p X=TS~+8LbX *Yo)ۈ030Pr>PY؛.f{[]0mnvֽ09 ٧趃W&[+1Rx#VjHlbYV쯭A Wx# Mf]xIƄN߻e,?,IS 7ŕ \Ut`;[FD=*Q,r.tȮ\Ix;L 2IuxA=[.7`ZKaG=geƽk3UsT߁T"[|d|l_);^I˭S&mSjqs~XCF$t)ΰ]9jj~ +ZD s/d I癗B*b*$}k`z 3_ [' ;=H!B|~o*{-p*p5/ĝ`͹(FN _4n=vHlpV,[qY{b4@D\CLͧ[wgjp"M'|q| $@8M۹tOy)%M*(~YZٮjGcpjnd0D5<]LɇLۅñtq[{Wq;৅Ks&IC-h D}sWq)"P o7QF"0b@ PS֬xaW]2G˅B<Kam@#AE4࠮,OUکbX?7.Na3Syj\3ܫi&;mQcZG  dÛ LDhˆ ʮ=poxu=誰i6 hU*?Q_S>Xѩ}e7~;k&y ] \Ox8ZgG\՜"CbY.pM HW Hqz"B%Iq6j8y-sZָXJּR{R<=d ens|ߨG( )4tp"xa:AfU: U4>e\L t/<%>#)u<&xv(^=i_ ,:SL#OVq^ ImFXGirwc:40BVP/kG -2j6$:[Ϗ&7K7$d-ճjNcuU[XXa8FL&m^+1ձޗcc]/ų/PHӟ(|_+%{Ǧ\?s%UJMjeM[ȱsI*>yE[oY-$cpz,udT\ÌgDu9;q 笓4ruI'"oNyJlT6SXyU.i&)OcQ+<$b9qCS%Eq"989kڅ !ޓg p 6o,ڈIXߊM v34z-BiX18W|_{Ȭ N6jpccqGϋɣDp:1OA~e7 ).\{˅꼩x=Q,`lMT+}`>^.g~I֬-ٯngn? I$w@YIlgig9`Y›?_H1ibQ5'%)<&IH^d)9HS.{?o:Hvt dQPb>6)m_]j;tK܆F2U52@VrLkjo}QR_t![sCu?n(Qet-|]8,`E.0*åtWz̝ X\eZQQ1ײ@K%[Ҡ64"+;+< ,MudUw@1b Е^4O ] H)ӥԆx\U udǗ$e}rs]G7&Ŝbs3 wbP5]"4#oAʚXLeE{_+KJɒA(;]wt]ጝl2xp[opjW/#æ7Hҹ8+cU X>nH2c @ Y۾5ӹtFMX9 :Bkcu"]Y\-)< ^ԚtTZU3Orĭa7l ymF=;-\p4]XU8 }̰KxvՒn"9Ft%ˀzyxUIP;Y< @ {^͚8cnΩr MT(,#8_ͅOq9Rsqsqɰ2$}b2#Ke9iw7m/GZKpe?]mC'}x HZwr$O8Yu^bN $~ t΁xE@AΟ *7jos$#5qY@PՇx-}/sɕe /4%=oz8*cMD3߾ zެƂY.(ycd^e +ƊLJ;yl9}q~Iqp+XEd(o ϥ?2Xc0x2nY[2.dab9\7W+ C&}4)qvt)?Q|nbSZ}ڠ{MM!ay]v |ICX;,VNCЛ~ko'K+??lڹU/jZ"\@,7&(wj40^: R:eAjjD4t+ӀVè27ĭsvH~jW)X}lB/Q1( Ӟc>ˍ|?)V;ei)ƾ È۬{Ny\|ުKE\1HlV|6z>-z'w:aJxz3;wӁF.c;*qh, -bJ=wUTW&x좆$1ӏeyXD\ e]FN]b-*YđrhbIڃ&뼤8RxԆ@l "Hpk|vY etj[9(]֍ ыl,Vok.v k1>h^Pƅ(R!ׯ#Xt:x_5I [!g"ZF=7^@IfLbShqa QMqق璟4ݸ#FQTrUa4ۨ(eI1e`R.F2z+Xt Ϣ= djz(|G6x9UG"Ƽ )O=jZ :]̈́bnw$q3-%~BudOI57I"/y]37#.Im;K;m DhI"$o?OgY{fmn'#ca ga^3 yTye=ͬfi D_[=V7(Z;;/ A駮ڿznL1 ?8 \ Qf1A82cB;%K:]$oc7HuwnWV;d$Bي969Wv>8纪'wkqݙ$Azj˥]/MWh+`^w6gy(lHl60@fV}щčT SLO?oONE<*QÃ!t6+І9Na NPœfNi/SPDQ$O,['zl)͸K\lim\}Pާb)-h76VGO9 ؊'wHu ꨝaˍ[t,es.CKLUY? z_:*J\T˖nnbaV=Uhڢdh͟|-Kgh<1uvD/G>O0i m :24rVzN!U@FP(OЎ|&Z(p4N9֞Ya+(Oʉ  KZ%&M~ `6{kc0Mh_2}tJֿzˋw*7'tX F=ϪZ d`hk5X=OD!GXX-ϊMrDll[|-,'lh}=).7xtk^Ea"cUziۈmZ}`aמM8P5?^KzZhzSu625 +1(;qE2"5-)P#~0r3ja8l :lEĬhؑ{V.hr^}Z)ޤ1G+")&B/*v~٬ԓܑ:|"9PN/i/\͉QHXs7W~7R-.]:qـpzܷxqӶDYx)=W~yYK򏺀5C4ēƏg4~X[|z3G'D{]Wu޳/UxR?e4w PX/K vsyh?S@ꍛ˵vf 2w2q~K0ܳpǖ\r7XCe}jO4[D4WŌ&@ۋ&g}x([\ɖz!xUSt/ߦj\^ Hjn`qL8Cy6PnGRܥ#sfNtu2> S{!U Gb <ϷiEo;g$J3ɐ79܍y!4ɆE~A!RynwVv1w}lwgX<2wظݑ4HYOrlbRRJWWL! zM ũ築 rY`}<Ǧ@)l[BBy?G˺OV$]tN[fJpzۢӫl/϶{Ccȷ{@Pͩح\P(#;~w-KТhIyM6ԡ %k/ꁶvHQ4JXuHX7!Pk`U\cPYaյ/lʊn آ}LvJ)Vn[{"yaxV4Ivc] pQ! ɻ0db㨵!h;[P~ Q7o5T= PEyKE<0:)Z`읳(P4ĉ@UR+RojM2Ⱥ)s*a0GeTnC5;b ^ m⑳9H_@u [5_Y,lq -Qfo$YD+Õ6D oۀ48(Mx4&!6H~mk}}VkqHN>E1lŦUEvV:c=Pu^]k:냕#rd|lDbxt@wWd{>pe. iOgtt &y*v3լ#BӜpM%:Y봌H\^ w8Pfd&_ưO J ȹ+sfw %  qRN_XYfZEl=Y&ၮeT$2"X"<'v/ 1Ңljl@4|]J(,M]FzVLI ܝ-+LR@XJ+Vj nN[eI*ΡyCvc|6Z(s Ii伏-\3pG/6S#Kc~eBC51$o,dkԙ1lB1 ࡨH 2cuQacqܷiUB':z[aJ ΃=q yL=+;nOn/, e"9G`I_p`s .}0JZJXREQU0[͵#+VX!Q$;ٲJG@j'ƼvWqVl鳞R{:svX_$2zقy:,ж˔ 9b#dbn26j^K.rPU ^8BL5ؕ8~u6¶{W0`U%p~>Be߉ePA^rQtD â,͠pxh=QYnHoei4~+恔 0|87F9j?mݍFˢX}`NEǙ v[sH~WwfAy`FЎfX _ z*j=zi (mUOt>/d@` yf^[٬7\mg1VI:}N!uBX`ku/O #d"[}%[eZ&UeݡIeȁ*xb+*=4#sE;iVܾX,Ձv*, y,{MqG=DFR27H~ۖMy"H| 4@8)C8 )< 3j\Ż;㣈RUNMǺσnmX*ޗ\K< uv )>X"-ע,yG+*'jmuv Ud^m_B4Xb±UT[D8W"א֡8r¤[jyI>sF^gT-]}X(31u.fZp]i nϡN`Qd_bլ[ Yf<G9<W- VK Ur^rsCHҊT L -Pt2s#8bh`"&cPp[>JȈݨ $t+JB`*Ũu_ࡲ͵؍L6;0JWx?EёGBuk1\1HrPF?~P36=&(.[F3 TP7UE}aoߞap-@2ֺH 'p &Շ_4W5E 5"^B>M0N\mӚ:αY[ W3 _ӸJ-_%.,Kؾl(~ dp?E "KW|t>i0Rܴ3p*/q{;#/ ̨@6֡9م2>ёIX 5^>v{+S1SEDʧ5nvYU껷s9b^9Z.h#:I,Q۳Ն8*e"׻g}FAӄZZ·3ZcCUU͜{f c}E-n%gQ9t+9/ӊ)E3{(Q,#=fbnW%O߬3]ְ@jq m?Zn[BlMyGSrrP}xAJN?eB] f>C3@RNo@vR߉U_.G)\ ?8;A(G%9P]?-$͂/m>mEJW3dW.:6w]:v!Cmsp,SIi.+=E ћ1PV%M!JWD;2ݨuhhc̙Ю?iL,َ2%0 0PB_SW_LP4jJRFa5mOl)ʦK"}arK -~%y_j_=I?t.:C.#9.q0aWd$] !_lAt_GHX}?g8]X{\{ҵlT%Pj|e i\fa@`E~(d9+A<Bv>"&̱~^V "hk5 %flCa > wK`gvbsTއfd?TBD[aLq_ql^aidmWXը6 3?lƃ]dT-~N"Z$>ŕ4.+8y4b\/)p.!_TV%Y':~BƊO=|D[.4,Nj..j4KEvr'j7{FyZfM<1&w(KˈAW,KXFx1W_d~a+K׬tЏWa9@6ʾP΃wgL>?0@isII1})"A\Z .էNkucy*ahY|rW>-Z'Zch́ kDu@; WIrG5҈Ͻ庰y'%mpUEo٢obTRg'5˜Ŵw$ md)Ϩz`ğd]LmLx*<q bW$$@n3îPpq:Q/>}  ڝ,`Ii<ᑃ`@v "iRצyH$ ;#ﴑ]g )ΈZZ |j#}tQ[/#禇z$T [N3ݧę{hldؗ8lԢz\CA0%6J])XXO)],IɮNr1v)<-;VXCdwg N _#į$D-W6/c*"uX@IASU,?TT@<5 6wn#ْAd į Si&4Vr7YjxU38NY3'2M=8qͪj#E?@(:x'^ Ѡ_~{mlS,Si] [cax+K@:['8D&b @:Wщ Kl7^:(, 0S4^+c+:+ߢQrF}ټ]Iu~Y "= }ːdmSߩ/ep}Rs׵ds+F Y 9j S1)X +Ҝ`* < 0Zj!O1^v7Wo$X.2VDá- &nu].vYj#rFLǓYT*6*4)e(6U/3>M&mm%OPdB+>%m!tZ&GБM֨,nbK4m?Ymظa n|:R@|a6Lqg2ӇzJ,j㘪djhBke]dSUDiߞ~ {&h,vS'sej/#'(`{f"]h }h#+QJ9K) ;)hi`؄3}b˜_~T4 ri;6(=Ĩ=j1fb.C:FZvڌU"*riћ?x6 1cEIg%D`"QlFQ.m:u*CGH5lH6d@Z:gѲ 75>2A ?#MOY*凥ʑRܫL?^|ǂND0)7* )z%8`BjnoA^3ʶ*Ǿ@';uocD.NQzU(BDQ,jEww}2;3*q› Xض ,D"}P RN鶅b덉Ybl] ~5 M>IrXe7Ĝ Ah/;~!`/\L6`Y[}e7iċ[fV FpiۉW9v:BEU$3,>j48Q!~uÝ4=zkr7$)jtWۉ9#y^~1^^&ģĽuEzTRޚ럎g1"0 b&m l 6;NDtlD};Iod9SM~T0gapzXi8/FFq/]Xc a,TىFuZ$$@o=wC(Y:eIb$#8<;"#uѝE߱m{O;־tr;=1 @a_:R`mvlvfe6M V9Adt'Kkq`UL-XI)bf{ckKlK;Uek> ByqןW$D FjKV~xAcp^"+W0 πOݼx 9%zN`G'd_/<`MAh& /@vo>/LW483`e8`'Cƍ %! Xk~@SςYlnv_'L0U& ETM5?T!Uƨ,">kz|>Cew+mVNVQCI'w$ʹ *nGMY,^|%ק6`1!Hs#ݲxy9OI3ΦfNb1W!vʵ١ƝjGE$d,iA ^lT'EfljQō,_RE5;jr)ZAM#éq1IGq{p$΢Ŕ$Q ?1='9s_킭x6rW~P f"`+a)r^竭n;R+a[am:ŬB_/ErerNԸ .; '"8L ;:.";X2'[J>krLRwziopu:y];1-*\`'s'H8c }ݑgi#z[?F-&b%-2eڠo14A ,ee;d Nc6ĂU9z|b.Jj{Ud]^=\CM&.o%-r}Ӯ*C*E7a >o!Y 'leЪ^!u5&lqM*F\aNG3ad8af܏y>qD?,8K^ү*UǑq ɐ}B Jk)KnZ|y~^97*H4 єB|I%e&Y9DuEc)PJd>f+qN|vRfo~èήN~ۈu*񫶣xp$Ȳw'P9FΖ\R<%;pXsT1x&lf_ >G7Ɖ(kphpw϶O*S Z񝪉 WF\<6Tf>V1B,:L?%¯i%E"{}\VmV!mPW⾷\.'yQz*gX]~]N%Dʇ_cY"%uk\IYr=AYËKYI\Q:V0HpbC@=,!}LJZ3zۖq! s#vKkEaS+37:iX]|F3 {^y1:]. /OEU\NLoef(h)̻.>AwtZX,ơB{Y^sA$=1gAk}ʝ0#3x?زx&.VcgN|[mo6)>~,ծi\>k녱ˉ SEO1U춁l[H?~S}WTMBdlj\|bH/ߑqwEJVx}YeoО6β֑ő'"|F5Pb@/^}IW6@48i@7mf)ef`d o⫛$ru2H*7^xN|돕_̨͐JW`_H%OmD6>e@)R??(_{۾#ק9N׶f5XZp,x{%̮8o>m?wcޒ<6x s! 'y*W|6+H-HT  M( )bfm/Ha)vfMJ"0"8(^҇j#8;{ M@\}|`,z݌#ˋ ЕCb9R}yX};(p$Z2CB.˪ e_#i9hRcrRt2XR 6{W7j&s`DY.PǙs:j-kdKXXyAtT$PC/Yă ?2 Ab (H)4ㅑ~鿓P3*$vrEpmfBo-_} |?y?-7:;nG@6 '|K@ſJ!:h+ :DrPVGT;w ѯ}y.!2y)L9;Dj0d*7Zhkj>|b@9zۈ'YĽFAjGGjv)LoH35IGlCkpgi}nTlC "hP&Ѭig͖|<Ć|fA:ƒοŽ?Zf+|(4\Tav煶"j؏䪺Wx^ô_((50FysvzXOn`NⰖDToj*qǵ ((aWcVvEp0HѴ,uN҂sq(zmb{dĠx&. *\j[rA|'*3|)n6՟yZhz.J,'n(ci{@djVUڟ`QDDqK/P`uU#gl_Ƙֈ.#*bs(h ^4r!`G|Vp=GrM~K5Ҁ^ 85'ލFƛ E(1-kWjX\ߎ}= cSng2mcA?RUE }p^I{9N0QL'JYՑS2r'4Y#;\d6QƿFriLjHGWۢN WjH!˜À x\{P$Box??ac~ ,GqБCH-eFێF RwK^h՟D4/ mVr p_ V 2ndՋx|H 2cc]20"x7d*8*P"| n}k.  B5俄i*uTHTl>tX[W!XwЍ`9>SbH9y Sy)sߜ)>Ih}RL;i?1a5\);4kG?6gv50!X?xPwˇ"C#-.KU.9-tPX:g+Oیjҍr)Wx6s!@eH`ɱ-EZQ B"vj̰柛[Ԙ@N=#BЦ2/f߀6Ru3;wRbQM/ ی[9y?>0d'򡵷C/!f~s$c1vgqX`p"5^ QLV|}7m`:ݬѥĖD 3i:h?,f~ıC\&twV`'IC*yg`P)Q;YD`6\$O ?8=0,9wcX{R& <kL<?5c20)J.?퉬E RS>t`jbrJ"[|pjJ t8$HSHuv0{`;Ҡ%5R~ijF꣥ML46xw*nz56hQƌO#M_1qtV suXVqn&YR ᖹ.?XB~JګQĸ m+![i?`cҘJ,=wh-wZ{u j} cKXK5%e6Ry}]fKm1&t-G}Ϟ{x>m(5a-a$\߂ҩ0 F!o[t0;dRLzrrR~O1|8 ;#5-a7wC5jPz%c~``[8U'C_1M?b8xM1#H^2;3QWQo=I_@RN]<4],S=ebO#!]{ 4=fUL!EPq L*>cwW:Zꀀ>:aSJµgWBj6ӼB{M *_2Ēd)y8Mq2rk<m]J.eLq+s"|ʼ %Ed;W3𷿉W[ ~c ."]bC_wNO_TMקXT&G]9TB/}M!siaPROTr̙&$7L~F? 3-[i WB0WM~R((FUc=֛CiZY4Se;2 a~ZXZr]mA~+f{MZ<,HdVd@pҁx>}2Wq}g4.h똩BrbZl #P<̺ٞ^A!z32@ԕM>ͭR tw[ JmGy˼RHFYx ϥWs.tdG[+|H?C۲b)b)6>cil`q+}@cbI&&$%Q+427jtph6!^9κclUsbpDuF-Uh%pzDWu}Ig2-}@L:KxJOn1 ^%Q{(dgF6K{fU(;$j BsG#uؗom>Tny/ğ7oOloyբBB9Y' d˨\/0]m-М߮;8 rcz$T[NUru61,xgg9d~UG?(jf^tFęhvS6EsrÈ6q06<\x dd"Ed@`)G'%4-S l)=uP<;#rf] }xNhvz^o2a``k]ƵU*&SZ$5ֆ*4|5|۾F;w|77 P`7}Ʈcѳȑy&̭{^7%0ńf&eK&3<&ʕI?#E 0pҲ QTB ^:@ $F"6H(j6Axcs䉘 +?_u:]X2J#t 6 N]Xrh1`0c(uWU'ܢ„Q5Qq&8 -k(vk$nz[BWxVM9 7dCqD3ŭZ ) o,z!l܆ֻ&E:z ;rv:D4ZV$wzL(ɟӔ9q?V%vzs^Rk2MT@\J = k2Q$lRڜ(=[4D9vGlWk:j.Hk#đN)*vȸIt(gS:4a"QdV'SKVA% @`w0ژ>Z/C9=Q͚S'GFd#qq,\X4!@+s QWo? LXR4n \\ qC%QXpzLƻp};4>t "쒨3Qe[Lc^ݚL r& 0M̃̚ ;Gs?+oM6ËV:Itc O$&kbOYq 5ST/t2Wxk;'`T婊)Z#4 )cͬ9Tsߖ 4O\oWWRi*NA#+%v99o^O+$p*+;A*i+[jC֠_[,vz-иَń6 Ϟ+`yhNHo-غg?Y1sd)[9gXّ룲47L{ @[qs=|(>Т. b!ZW֎#<;R7Z.+L8,M2?ѿHx]oÞ"G7BT4Q wƷOՉ6uvгv~ԬQ}&ͪmbtjlz@GGrH^E}&9_4Wa   H^~7IW@R_h{(UOh?rd3uvc] ~7 W2:fkhT/j:IA`p7k'‚o؃%p?OC y][t6j(sp]Z%L֤/ݟTC&`a CW3o%+*NF߽;R&f`E g;I@QjmNjڠ["P*fOƃMT#zZEsD1Dȟr ʭPm@ YTZ^#ӊū:YfԙC>S,unB_~YXUb^MoB&$>>)62}Ҏyo"pDVhx؇r1EdhgV$mL$ii 䋶-<楞@ARfȂe+l|z_q'ȸu3R sJ9+FUمOG7+pW'1 zˏ7GhГ#(qĞlMUkvB,rm"PS_:ӽOv໠xR_ȕCThZiGJ!T۔.m1%;Iw?-03>8?;6i5Oά"#|9!: e OL3>&Be2/aP L5㦟*56Eo9k@{p`lfjxhiMK)8pԢTڌf犨.AݳU>{w{Y[ܢ f9g8Ϥʹ4H %IQzv3e2[g],٦O#N |;5f4IőG#xA>/j7p sH[V' B!ːPT#r 6ex`pvE"=O΂l^ ԢG-DsTl贊Vll\.]sBX1و_yHO%y7JnűlN&/Gi/E ʻDd/n0u~f[$s^ȇ" /zkC1=,KRXA dBc!o `lv Qr%_NRp55weYkOK g8 8!Q|i@¿+ q!-UhQ$_<=#gĩ1^ok{1*O5-oN5鮀)lidr+'U#3lHm^π\8\.~H&N.Ly',i<B5P6pf_d?,&Cy)!2\[r*N)qG&D+WƸS$@5Uf-qxVByR&%)gxøTWb?a `*#:|#*Ҟ>7k9RĥÏ>THZŅN♛:8OƨW/`TT ^eϚ!TvYX1$1IQwp""{>ܷ1]-h!xj1k1۷֏ɓo\} &kMNK<}NEAph?;xXt#4#p|BW@oPc˨I hjH5ihns v {>@]]SkMc;\~ţmAн;Ҙxue\@1WJ/e~v7n*n a1=`iX+l"%s=MjelC6vdi*@Xtd&Y!Ff;nd1 Z&G %s4bMw:̂сcP NhIm [Y|vȍ3{foFT\;4z[i0 WM45aL{\9_XMĥV+mEWSt 7vicNvj;Ǧ$" k/!T_ )ޏ_23Xߓv?w^ј&Om5]fb7n9g S{fw$$7O- s m´ĺ}H^E:;|}8+!1]?*1_a8eIzUH.kenD,oVd=N5,G+ҥxt 6iTJW?j>!lsuF`nśi>D;ߥ Q.Nw<* QU,f_="OS~keŽtF`$kAvĎ98MƆgݦ}6-W;ّR ژZF'E:Ҧ^~TL;F EԲg`pwd-GANx˾-:{R\6ccuF_\r.57J=ςIW6Z|:sDlՎAŘ4lgZ´޺57E QltW̠֢>gAtFǞ]a- ӲG+U YuXJ :BJ+e6춨2^XM;dz i1sHQѷU,LnGj`]47Z<'~հ?; ٬ï"!H0D27&BsuptFXX.osuKydbaeXkf1mLgSmtϛ';KqC*x1ĚY. "2;& &f%h#")s[S'y68ͩ 5F[Rjs@J;l}}S &O Ɯz{`"BE#.‹ٍ\dJr*8]Rƒz:q (OrUop;dA|_Vz(ERgh *4^3>ǒztڳ&$kΌ<7!0 `|%EM_ַ2vǻUX}| b( c^JFVR!yuu҉lEVT{Hd9OPBJs]xlk]F",Lz׏*d7%I}A@.q}WR@tc^y)wc˹"ػ쮾}d^׻s^:m w#0TY3W:Dh N\0ڨ&,Vh>`=p̣t$CH =͓4I֫A'rXj ۆ;wWC4=aw(—Lyzc'ؘ֢{ZR '8P"< 둮x*u#MfLccPhGyn-X-[!G;3љ4D]5]= (QHE^S6lGv7(ҡg4v1YNFS_SVGG wQk?OJ]ah2i+b`6R#/ >|o _af%ٰEsERF5uH9e@~"܃=ͭ?Fao1h=w$\-WJ 3 $$%nj$#=LsؔzZB~ܰ5F bzeF_qˬwݺ_Jvz.K?v#P20,><4cR-f"e"j! a[CʯY=KN3WH))2|!BtG ɂK DH W28]m v*InT5 v< S *馣t(%?EpǼ|id~Z'`{,%W 8n2w`RHg ăʓw^ pndjŁb]*VW0:+n`)Ɨ#u&nmD~cSدAޅEO!h pﱤf3"j٩A8}̑x%gT}t-Ä6< c¼{J*xhOPg~cl+-?eA:FZ@ 20iHV9W9kslY=dR )*L=:I dWд?p Wg;,l0  U)R̜ T&SՄwPվ `Y@I׺Y3}WP`Fϧ?!5 STټ+4.:t'Sz 81~ir;Sl5'fë.>sm䍿^Wé#LWn$A4*#F\B:狏l͸[:q\Kw D]h]1QiMg,3_ /٦%:D9Wz|\5rp0,4 kCeA~#+84a9VA-:fw@vOR,A3T m_| e ]6&m ̅N5:& &rrX8Ajg O9a79rϟ,;Fx0-s DzZvA޿I\p{GB4\  &Y-5nլyqȮ/8.9mb'#hchsR= Ca4\N]9Z~F1s޿ jCEBH!}u݇Vv-+m z$T_ xFOP!w!#R캣4x:9$)O677o#k Z`V f5_]CyqrY+[LfiNkQJ͍EԔN!Ke aJnl|/UPAv#AA̯YUs|֗2̷ CY܈#b_Bc{iVQ$xO-I;O!ede9s=]\ȏ?[#L!n>W=E'{@ YFabMuOs} ͊PL~F5I ww\yxJX` >G{J*oJEdILdcZ?u쀇-g#IUfivgP\'[+7 Y婅E 0)X4$>e!ͅ@ҽDYJZxL@_5#R:7oU]]~ xq2)xw W^%7F}2 }?qJ e-Y,4Y0z4%QxRWM=%T-gf&Hv< lE~PȮMX\:W1(9(x7r |;ɂL)TAs 9G6\CR@q`QDuɿvf6& }:6.B`QsspJY!,X)Fl-PRQe THuʫ)'tCƘP+E " 'xOq<<ߗ1M_JF3h/-*z ]>RkсպIġt )od #m$D.۹BܗSWA1+Eij96ѻePgl0? ԡPiG{DP~$@/0o0.@Z~ 1}M\_Ů- vCwstݾs%݃ж *} ːQwqCzUeXBE@ rG4dKCb7^woAbPRnT' igd" %gYhP'{4&@24aβ3Ϻ9 w! ˘$D),.rCu۫Xڝ9%Q;]qDo5jz^ u6gX)1=։i& SFd0hϪ/hq!J*f~4wJ?F:ͲVRډC 4K92Q# ( vĖGW,boӾ | ,5`E08mq;̤*5nݽI~3޽ʸ)x(rZ|$+M :!@uHߐ3 SڳԹ\ubDw.^h^E./b8=ȍl,HM'w֯NqWr-Lfb9+At]ΧEIeLEK$E䇭A/YΘekG؜\Hǻm5hc{ i<*"))?7`N֘)4*$_znՖcpؒ %Io9dXDJSCv|Ou~=*N7W,Pz`G2kgHt1Gn9}d-ϙ\NbaYQ{LhpA(sBa'ב_'Y f!ߛ:DyCeik Ě8Rf_瑪qz=32W4Bo9tV k^*ʳ8yV"KN(Y)*oӫJf>Pz{HJ֔MM+-<3tVbn|0e)ɿq#[]#\UJmx<Vy~fQΓm8hQsV.f:1{…̒팏ZƏ݋:-/_/~}ג1IiiuSQ_R:ͼiA`UY pKJHTHI_u߿'T]/aR[̫]5l(~sUȮcypcHcYfp>ڬE"vԄ0ya"Ѿ_[ ]>A)䞪n,)KZ0'_j49Cy|wchm-jakRb[܉8"9K*ENNfT% TI cŦ9=+bweN*CXmǽΗٹrҀRpZyHU4,vIJ,0Zw3_7ɇ ZLg+/J +X$=$Ogӓ0i{ٗ?B"-}4tv":l0<ЌNyhuu7 @%@ ,bP0 Pgiy 6;'T‰BiЋ&D̕g(>MI~|DrK;uUԆQOc琵 0+bxoSuޖm[d] ]?y~י5]y4Uxlӆ&s[>:; :ҚQUe>*٤&,x(ϐi;vƅ(̌Ww+yx wTջAso\ v<#*\L0So^e|z=U ѓs>Kږ;~ vk@_ 3U.谭0oOdasD=5:\GAԹu7,+abJ_|+~P4HK<ӭ%OeH߃sO Z$õX!C3exunp-AW=*@/RO )GCLcuoHh)zU,hIB2YCZi01BǕRr3bxG{k|F d8  WV|$@.I >QFgA擯0 **ÛҢF}5V56ƚE) M;04#2`H 8GHC¾ϻҬÈ r\/Q]?M&lQs:er]6<>dҙ.uZ7 -]ì؈7be uEz+Zȵ%x)gm.4Z E<#P>ۯj1(u:{v¼qz7|!K>{pcvK1s<8Љ 0e]_ߩyJZ8fm?՛𫱍Fb}#r7{+[Vu s9s bC.z/^%=E=r#Wqwn5ڂ>1ɭW j ͓󴐪O)u`8ҁۃ;? IBێnr^ ^ڛ hJS0sA|G5.pqh.~USnϷJ{v^)\$ߛ#YOB4mZ< Fmg3de&dd,y;& \UJ*f|+myB]c}i7(8R9!yՉ?I -d;g XD@C]Z5u+Tqd7"JI;YmYWGKp<:W ] iG.9pX}d,rG[zLgk`Β&h&ʟV2CL+Rmp?-5 ak '/ H<aܬ˚`&긜BK [_yYTk[5bՈJnWu︻n2{F= pfuD>J|\û^/tnݩN`6M嬷c]Tx=_}}$G1_)Z=pl>C@0ۙy#D leujCpz8"[8U*`X/_ h>b5 O*ޗ ETsBc_9C$N[]8bF!ЈA B9| 0+qW _ eXYϋ7>5·:0~\w=hxGc_XK)4fTcn+xJI0gq(|-nR{һ46IþwW}_;͕p/HuuysZSxDH95F;%#WA+^-''Y%>y7c xz v ?1PT]iW)hy#6џ6[rS~I͆pxmpOp8ʔAFCAe'qr C:3̣(8BTFE'{ئHCz?-0 gKp$ m37!~_B cr>HS3dReMdMzr׸wP`_^wݝԭѳM&O3umGu&!qPL'}p\~}2cI'2,֦e%Ԟ@FPKvͧRƛǛǠ0/(B}x-4v}f2#]2]N !aBV&l2p^&S~?< We%$/8mC ;Ï.QY쥞~ U.{u)CZ\kwC"-QьQCh ڞsUnzpΐoݧkm+tG!pëxi{ ĭgng']uB8W2<Ϡ1ƶFtg0yBGhgaXx*іњWwst.zQ3Q=0kai߁9ֲ \wzVWL6KddNOԿ%>̳'+h&WǡX.*wD,Ȫ~D[L߯aHT^蘾-mf8̬{|Sޛ ke6zb[R&#zݯ_-$@"N||ϥ토qvfV;`JpndJ$<"m8+^wηL'\&1q!)jH kn$QU~CN 8.⭑Fb6HG?08.h\k0<Ċ/'""фCEpYS o6)oVS 'QG/]2УcTwZ*S=U=0m󶋈Nt2h dcG`mpM>GE~CfK@CY='y1g;RtFS,qa64{b1X^ӊtk{DiȸddB6};m0tb2,LqUϯjC\ a1Udw!euA?TX>I$̬slQ*Gֺ5I&]PZeQ'.#z?o05L0fA3a!5u.[e0 nO˧ 0kF )'P$,rހ(*HXsE_@|Y0RoINCF>mBO|(C>KIy*m0\aھb&"@?-Fi4g8a^)=c1P1r=4]'=_ɶI #1N1$+3`n$%}<I7'71d<3cq||uη_N#p17iŖ, v*9*9Ll4eoX8"2!n.BU![K9n zak`"gXx!3CHcV|KSG8hf h-T*|D5^ؘ6of;SGdRwӛ+i+%1pap[P6U#}މ]pB.X~(kt cv#l~vDH9áW2h8D.`q}=Z8+n|܈Dj[TFZTA9ELݘ8]O @'$DlǩUQꐶ?k`Íǎ%Ƭu?TNӡH^@_L5. T5׳ι>d lT`  :%dNW8̞s1Pz0 MrU9}*'/2e!OQHKDm~VqRm#lﬨ#wHwRS&܊nB&)˅j!Z1j9̎6Y(˕+v8]6 J"C{9D_scxpګr(%vhyscaѕ.@砖x6% = 69.1_'H :99,@4lK'V ;.TeHl EGJ Q/"fo32r';6)wRf̒`aӜ|+&ֳ:KK%u] _JfJ}``[PwJsZZ+" ׄp6;瓂v?SIja*ȐlCŐNOh\lYw?upJ"5$=XBÓOvG|LuןkZg;4GgW1vrtE +Z@{Yb7nܮzOT(VmV}e#Ɩ(?zKJGEpbc ~gKc_*)N 6XY.G}q J !bgmja?OJG&ДQtK!wJz9$$Z>qTݑv5y#Ou3>Db P-,nbLY ?FJz=B::&|X~:t֥u:g!JYG4H Z6 OeK[kCR8v? 2`#"2frʓ`%~ "MA 34׹Dų|:Hd*M4ӿ\Ex^ZA  |.S@?iy(lmLa$[O[8z ǔNRsaS`߂+ق/<(˲ҜNty(aFG ^l5It* n?hLz6$hLkDޮr)wV#X$-TC NZeou6kC4Y]43ogဒ*4hA~J-2`i RS?W$ռ_G 6Μ˚?46Ô( u(BYOsk ~~{s%ͲKu 0zw=.x ^|=G+}&|̍N~d_8X;zׇ>8E՚u(Z/w=q~sAqoԅc  zj+Z6t)SNkQfzWw}a.hC"f hTP~'>߅}u-> ԁvx ĒF >Vh;ekX>1hY mG]%MQ-Zn9 ARmu'jUM¡ZIxTeLX? SȿʲXYeeAqCQ=d屒J˻#Ҳ:n_d".$'AF7 GEcP}l9e ։@)0CJM .wwg;f$9yEyC=* 00藈KW+W!UuY¼-S'g8|)7;@bKQV[xTVS R"\{qP)詰NV{xPL6)0 $$q>'^-|0]]p򌒴c_=ZlBmń$֠-aaܙ!&s( ?]f9H5և]lQxU$$^OBC; Jn7 l / z_moa>x7q(סu}[;ʲfu "3G0BZXDgMėU:]}AfHc$=z|MyۜŌE<^u"N9fUwR}PkW``oeZY"`] x 2\gj0|]~5I0ue(΅C.Ry[2F nX@+%(+]sji|:'{!l :pgX*@7p˱?/w z2Y\X/h FjSr+I +@8zD#k\$~u=²c//W8`oz8J U,v5+5"7WA>yeuѽ-8O- ='zz7rԷ}<t 10O]ѧKW9r}*ӧ75^_2C__GS7ryRR=WV2ۻ+$\\a̽$]1.uM.B]uKt_֡FL{b}~_i(>DU37ދjJc[x=$/uarց_{!b' &vړ/t Vqdx}l&dJ {2QUk$Y,/NuE lGӁۄ~,Cn$@ҵ>Wą6\}fѫJ='7 c4~n3]L\oz~(H8WQ:jm16 QU':uaVMG?YD<(I$?w4uP9ƌ0/G< ,KK@Ђ-+k5+78ýɀ~LKsJD@/dk2[>u[k+? ,ӘOQj;Y,%ӵL$V,÷6(y套Y;Qk|ak{'ŁR X;~WԪҚ] B~:uGvk! ab8dncE(5]|(@-cR. 18Lp@+N[ͬ9* ; U;Mz zT_z' &LnDG3%0j8l|_`y \׺D:P]թ Uڅ-#e+ eeOz 54^s\k3}cukI:eA1̲fykRTq%yWDA.=R2*FYJ{³ϣk#<9%PԟlK,%A-qq]W AT(0%$yݝ@&[V"bΥCnV6lHpJu< L5\] jZ~, H>爻ӴM]>1YO2R21C9 Zk}IJnDm_9$rSCVJj ^.2 {inl{:F >Θ&B|9FPv{=9.MI_jr~!Tw4g>Aʪܺ6|N"V0/mnTnW{+3NgQG>N\A]5Oߌ$, >{}(kXZq:Yw%p{_ES:NsptCjrBv$vt Bn$ơ9`qzl u-IMY7 B>YVb_#`zgbE`m#~]8~qzkȔދ]jFaM|*g!L[&8o(+2OYF{秊 - PR$Zๆ n{ʄ lL;]߾fn0OҸ \vA΋Fk ȇy&W8WK=Cr0 2~W5|z5Yen@PB4^<0|~LOwF*dc욘ƘT]?ijXH58i($|NtɌ .tbdVgaV362汰&kIA+iRivdFF#YO[q: oO `V+ݧ >ptWW@ޫf_$Pߞ}M^&aBP9G&ճZalbo-Z-, q0`*+`e9L}ﺿ&BW2čBIh"L'lРO `W P I|H^&Xz[5TѮYp&'9UI4VLܴ4HcOhwW(Kw͖hB>6ʭ<.Nմ'|zf0O8^{'S@hKşk}1s}6DLwy!NzF@%m[;4YAH)eY9xW$lא6p7|ĪSrL) E$o;=fO{ML68.U mYn=(h(?&#UX.!/Y jSJ*ĞS/u [% fz[^B_n?&X^JW4M;KFg_7E%yZ慅~Yl_dՓqjZp9ت;½ReC7 X́LBDOl)cv5pp>R\`ln bߚ"L\lxf;?]t񉋿s czZbup!YCGp|tN'K~/ N7% ?uu6+v H%\){feXl]ͣ xj\]n?5[3|!NY'd"CflDG`Kle"KwD3 R/) ]LpR f,1v07\ wcbl}[Tf mj: (61f(X< +=4Dux,e@@R3 8sX8F=+dBU$sy]d+^KDH+mͭ6{ЈQ6;v+2/@t#u6pbE lfv( 2Cy~ ư" 8`(ђUjZɟ/$IFIA?so}D˳/,΁Cس( b4;pAa* qp**GB(oᅛiO3ɚ꽊$ O>s{S$0WGk?Me46R?#$ ^Vb s@m[w(}e`Y\>sU[=_w+wv#FO0`GqsG jHYĚǰ>YZl/uw~f"HJ+D2cl92mɴ~ikBsVT\-F@HBfUh1@ Y33]Eۢ|%E 8|Дwダݣ S?ˎg0@p?:V~7>Ź !Ӝ~yAl;;s(uNJ',s JTFKA([6ԫ#DW8w~8ymWpZ <ɕs#‚ gZHaw͊SR؈!0FR fG:Yr&sp-r̺Dk^m!2|_kkL B{!!*#D":0J=u.Ow3SuM3C_"Tߞ*Ѿa-k$4q).IuNRRd$Cnϯɶu/yTS`:_ĵ2֦c]H9h_)`sO)!qYȰDvN1ID4̶V݌ۦDAF.qV'e>, )X3z$XZAOc<Ne *cİҍ͏kRP.NWnfȢ,As@7 P%W&[$£cFQ8)ȹ =+JY9Hj {A9?yE5RDy,IYѐS{DNĘHM !#j$mwy]L<8kU@LJYoGSW-a:;o{JO .%+ә~Qb=-.2LfT@?׃%E)BQ.kۍ z֊; iHZuJOJM MP zD4c/+ gc11#Dkp_÷Wkw;-"GrPn[LLǦb E!amQTjCO6-dX G<,"m\PD*Smm Hl5Ar}y#Qé1?C"d8@i{,_mBA'Y.6~,jh8o?W*OM1=cȼ;c Dau-<@ڱV$!}!+Jb!Y챴:RuI;,ݕtEYBږ@p{X0if[FS9r9Zo9!BQ%  6µHŲӠz/Y^Xn| m jΣ@ >>~nCP"? 6W%@7TFKc+XӽEI٩ xG)Ef0o;|̍*%С8׌^ qmh#(h4챦Kt#IvC st0U,iDšfA9O]`^ ߣP +cP\ë;̳=bUK-yIZ {lN?4&sW,O~kh=2_EtRϒ0zNfU%$NsTz@Sv*%Eȧw~3A >͝{lWb&v 0_0o=5xa+Tfpto֪ym7dBLF O ; ?)3$^z{^)eB1fBs]. hgff* [p8|ӯ`^Dw!Va+l{P4c8F'Iv RqP4iJ[골ʡVI6m[ҵ$?IY)|%P.g(m5#J"F%g ƭQM{~DDWpì0NLEʗq O|I$ ǰǚ^p@)F!cD]*)ݪOFe:R1$>3,@JgFn{i&|vUoBT1"5ҡ℄7՛I._KBpz>˪94 iNU]tWY*7t;Ꙝ4iFGwW띀iVN6CJSOٯXHx\^$"jA~Kwhjcd~uݥr饴ו'+.դk]l6|ΥqwJ[1iÊjOhx9IM~fQHױbHۭ[RMhPx\&N]YNJ㤧! kD|ӓ8TfvW/]J1H4D6%~jq&b]z*-'3V}L/tR!sIhC@!VRvc tr N2&r)"Gr1^/~?z6Wͮy uvv#&dYÁlo9!^+ƒ8\[C(ta;( HwS@>$ۨo骍"4'T|RS=.\3ICT7]}\%OУe@ht#Φԫ9 &eZ9ڄ_*e_E/9PEudЄxC-͉WlabD(~@=po5@7N2yW/ɬ4()GxtT)M>QbT&g0@I}e =\>Iw>;LP-q4 AQY3}9~Ub n8,"H4 8uڋҥep_KF,>P#j#Л+i[YWM`%} ?ϠS\!(\.OvO8Lr0gTyD;md֩Xr|) %"sj~)ġM)L6էHw@taZ|\Ȃ1;.'g{oĻə0X8$rd023`i00Oٗ"c|F -BŪga$G'~Jͭl[tAWThա@G-NjphW,p%F}#Y-%W Rϐ,WaNʌ볇is/KACۢ`#IOuax VʸwP.3{߳`IEly9E"VkW>wi Oԧ]6\ɜ }tSy{hn 'K K<ڶ+sxcJXgat"*d{׆+uK?EfGMWx "eWjߐ!5iyz挵oh `;K4\^? fO,QRϦHMCGV(]0P'y!w%HWML)K#+ B<'p;\g[A k?dD %=ˡY].93ּmR)] F1UK)d9/ʓb=dzgۛk m[m'яЌ$$1x=D+OaQCWfe5EbČVb·ĸ $,SME6 >eզ rDD):kT"X $Cv۵i8(-MoՉ X?qߎꛂtI~f!9(_P,^ S[e9Cc>[Wg"AtsY2-񒯼[ygMMD'ժE(>wxJe)@"LL@Z냌^9UyM a[0}_?),}N%#agtHYGZi+^ZQC|b5Hv$4I xE0+dž܁1PHy\pi,tW.do;y# 4}JjUKcƧw\Y׊r9qI+*.cpvs"OxF{&An7@_zGV*P5y؛ߍyQvtiSrRa&KI1sBnf%/BEλ'J=:j[o42lV]yf_S%Fd!'*W(mx[eHN:$i:P6J_*!9CQS-.⣄Dg>g4į|`]ARKH?$ Ȓo!eF4bOUZZ6̣ Yo&Wf{ZΆ^p3.6j6X8^AaMwL7d%eBzFk6cbddm:\N:H\\㋱|,} ~Yz,}k4/m 0 ^:mD<3˴g@!).e.!BWeddyĎ6ӟ=SfD"fUǠۼvM@1Haݐe8A$@)bO8[cFR;O@{<"$PjN3kB^[b.أe޸,$eb#3f'@(FO$н1T;Fl4/g]T>31:Mh/^v!m6&;3ܴk.s %+ ԔPDd[Ђ :>ӁJ08$dt;$ݫ^O,4jp4$-;3;$) ha.ȲY$ PS(5.pQ{]0E#x$ lK$2Xjm Ob7pƙʓ1v3ImЦ񑸽 ج5Wĥ˶}tyM#H K7&Tz] 7%79m 'TqC#Wju쇋vAgTJ)Ѷ 6gn9xsg1aBlV,wibI);橥T Rݖ\"';,O]S֋̐CPm%a 1p.*u{*s-"uodyX=u@BY-MEICGC 551 -sds!иqKSךnvqܻ8rZZVl!+8EJmiy݌(v)wfxrN7e6F+mq-1+: TwaBg>#k]pz4ޣÔě.x/1Qpu8C τ%^s @xV=ӡ`Hƿ!|*8lq-z LQTډU , -r@2K!ʕG`d27-@Igv+ [:L+~NVr<l JˆDM{e #v~u)7_){BU7`\v _3w}T3Eiۂ4$#lhUR޶X *N NUu^F.zBy$%_s"H.izq0|=-'-:a[{̧u ]s2By=' \+[8.QH'R< L Sm]S0[*J%|q p~_[Y')~d66&>X@b4 lnֽ[Cx6lܭD22h KZ&F@asnTgizu9)3̈́6)VcH)}n1I'N 3 AI㋩ pDGŽ'G?Wd6 Lmʄk5[HI KQ E} ;~%D {h9 Z["PiY#|\]aFfAf(ERm&d;-rq6xMbg$sX)s>cPE,"GG j 1rd߭=Wí(E=*gD玅5u5q`sM ?yuw,vy8=q9LrȯOA`[o̘J"}!@i"e%&?Lt pk2Z@1OMO lHwٻ B"w¢cYJUU\LӸ<$e`tt*‰W_m}nuAҍWN#|K;C-fE ;?n3'Z_}ɀG0LJM{pPc7aO@ŵl jAYs[Ç6f?&5th1Y7R.DiCM)A.f I?F9bkCytA8G;\#IV8B Ԟ&})Lcf e M3yq dө,dDu%*3B&UcDԏ2Ttc´^ tgp)C)~ >k7w {Z=cA o]n>#{ң\nH׾K2~T efX.[˖s+jH^=Er&U;]g'@$rD0 8Yt:rԒl7 ]$grE^k:.8W?Q ݛRIb^H~R| (j3UziJL:'o %E/7\(_OXo+E Wv2_5kJFw=qiěR=1[()ʹv=eqrY~:>;iÓ# rMo+Sķβbƥnx0 q]-JMK1L( /l"VE췘}Z_rI)aZ=ҾÇeri#" )8KhR z2hZH`+eOuu1,V3%65&avrLz1ZOrfR݇֜ ᥎W澹$}݆d'H025FE@pF9 D5XA2H?\Ǒ^F.}GDF2=^{\a]a1v5} Z |*p&X+k=6 VoD0C'SsLBE*嗀4j%Y/veFvip$BB. |iS%h}\ \t5¾CCj5O!(p. 6&Wݗ]XźpI\ҟ%s.LQrCGȞT/A#@tӢ,C.nFhxGfHEz+qDv@w-#lnp40ԖRTs!z`WHûiY@ U^%IZG>5,*v/( -y;#h{ n+phՊDl5ma< !-v*,$/S$X*'X0R=O2w걈B8Et1dTV{ƾ_q׬Xf+XZ7!3x'J䮬7kXbb!`.9T׿+rVdeCNڥy$KS85|l/Yӻ/^v}sկ 謊f!]%_7+[ٺXQe&wo){؄AJȹHZ::Kryx[h"񐘹xfDbذ>Zԯi<>{堞Fp佌.ka9V1څ {-UT:IJD-T*ʗ:#.x - !v13aH#"zA'K+ObJvZG PR&~7#W=h$.)7:$}h^\Gytg\!f-+ʦK1 + kATh g${𻇌 [FGH㗪eԐFI#[ķpK5t_؄(/} QUuCrzş`HS($mO+dzm4,XROC2x bľg _Ϭ2W4kFvrК8G"iD%uh%Woiok(8OtPɱA.[rYQ|+5pTqG2s$U?4ny>z_'H+@1W})$a۹)7uf_sR"n\YA)(7f4՚ #=aC8qP[~\˫%= 1wɔY晦`Ҟ8eo[l/&BD=ĆDb 0Q NMNEM0Li ql4}<( tr]P,L}Dɓ ?Y4!nt*e!|*@K*S6 ixZiu : @&1h/C圚aŌ+.i6Ji\$AdP Va90ɫP~?<:3δQ(fnd5gKb^U=Mc| ]u:(ʪ 'BWi ҴVoLhjv4B7Zt(YQJ29?5WJ tƐ<@yjgَk.kO 4m&,}{(]֚bT\]w,J㪁PGiN*EK [8nam@\(5?ȔZbZ:Ƕ]7i w[["{>)f,d"z/LhOi`V^'W=$T>iDK\Õ(lەTV.K,LDla.<%S8Ɇ4kq~K;s(AbH*b47KB*u3<bh-rzrj_ZBi/esߥKΙ)HI[*r@cL]H4{k"lg xnKUcu:Tͫ'PT^gTM$e*ᅊ](r~F|rtLqHf5,@H~:Tp]92>Syj[םxfAB:1]4ˣh J5`xv%}`_MT0ȉ^37tivChcB-Ӱ"5ꮃ~g)+*c/ e}C7d W^_ _KJXYS̹ Y6ƹ*4U"b= $4uz6JW" 6~`S3\ ħ˂K n*n= io Gr.Z[Qx\Hb#9ZYL\:DqY0+'H!+ 8T!H҈ #s\߀"ӟ2oqg{>L4M*abR5q%qmA2'ig*-ŵPڻF ? HQq!* PUk=hk1o( FDhuwO(>>w4wB ^mOh?t]7<2;KbG1~!\Y /]"!e4"}}Ymj2憝B=cxx]2aJq\!Ex%4دY[,UK|a7h&{V̞ R9rbѵ_޺@v΋n, Cd@ z`z13t[?xgSd߷<,8\$44G|)X/[\]4˶x(l2wY.AWB_"WXd٣)*:|Ku6+򦃅҃E[&_- fpK6]C ?@hNC\Ckn'2 rPM[Ji4}/؋@;t,s!faOTN{olMfA=PpX?%\jy]E Esfua2Bz!=KpR9Ǚ&a SXpY^?yyWk;Hw2L- Pjc˿G,VA!$$N!8Vj밴NhX*9gJ7vuNF >ZdL,J\O`rE5&I0Ʉ~T=-bb^ ZXA ]Ϳm pogV^ɧ~)V 9%%fj>أ`,Ya@eW=f9* Ӓ /;i}ѕV&/ۿm0󝨤Hr1]v8,asaοh=k f.2ľhui]Ak;h}𖎟--A!7-hw\,}Uge Z;g&F%H)෭:V`s<F [0},*V ł7j@ȕx8rA_ʨh^9 G-ޮh!. WDMjb}`+$4 @9HEJh{ U&5U5m{ [|h(L9'A#l tbE3@U3#yW()vHO8Pz&;Zt[$%$An\vJsw h8X%"H'4y\wbsj gfZ;^=[Q oY6ڊ#wkܺܜf7t\ }\P40)|*QTg8;e_Pïf Xe=^p+@V~+Z2tܻCm뉇aDvٝkQ;G7D&ONG/D)A&ؒ3y.MK>n7OA"Y[<6_/39ϜդQ^kJz dkÅNDF'8} 3IvS[י'F'Isg3R{8=<7:Eօ!:Y]&u,X2D}D:Dzws.'S;; ,0yQYn30͏j| ;#2KpanM\1v-^ݓ; {H]57 BɧNWj`u&A} !hiH7Z%OʄA`U}BWgߔBώ ׬~ZkQSPl/oWoY,"Ӡ68ԕԂ>Oϖ֖*$SbvS֠tHKc&}YxIKhӃCca1Y%.`ertqHbkyk 5=ȩHNЪ;#nl3U RS*4M`!jCP68#iA}e;Hci֙t3[ |dž5z ~spxn@\"< |*j5yqFg,n HA%?#[C˥wͭ!5k*p*ǓfN7l!0"XXe_XZ~; Jb0"(tP|H]71B1z"ܓF{x&Fq)GzSX<~Hb^ė^bj2vα83 w |AWWl4Eq/R`~.eEa?.FSrk^ a.1H}qu[;Sܷ3߻PƄ>d4(n% En=W=k=KjKFݲ\d8=Ȭ(vBJG65D?p%m & Vm~ۯ2MUL'bM0Zcc&LU6Z|d7s(N ) "|!69yZvzd;^!H@6p2.hQ QΟwŦgǽm.tk60?W:w\\%ex^Fu"{D9=* U, c}\pt'cIVc)B֚ y~jFJ>hwƴ@dK @|!ЪߚėD+LLTU-ǹ\+g\_'t^Kn14e\79uZ 0z0_DbH|QթpoGGKZӉ;tI2{x b2,LZ$ 3 AѝR{A߫v,_սg BK`$p5ĺ*&.)]e 4"HEIO?RJ1!< fv0*<.STAyHfN37d7hQ!gvTɜ(L^3]H9dhh;H_D[峁PS P]*s_(3u4IB=D}66J} "̕l5Q'b@6[}9m6n "}3iKLߕۉnȌhT!"vT%|wVZ݅I߄_`?[aQ#bi+#[#W1X;G!Dvm$& Ņ  GNl.x!g0)PWhHRZ-QDf?:q2f^T#{4CR xT:!v.nf!48u!QA9M7X>|op(oJ4gKCO*a3(TGLSzgx aiK&Nʙ!>HkNqMإ7ocoX-2P\ių˜ pMjgMU1S`\m\Bw~G:O0$JZV3`S E|&cOQ=VJimd`GVۙY l:Ԟq~"X8o -9/^9%q 7=bz;XkDro:B^+"+;LٟEΨKf3BAABȗXr^5`%0Yf| .iΖD7?rV{+} /ueI|S⧗bJ~Pj}~hVٛVIY?8F~z2NH`OpQ4][fzH߰*ӎeu%Sp]žC2#" g`"Vv_F01AzvُDyƭoM0/2 %W ~flK..5.ӼZfz>H/Dd9mE3% ̈́mh 鎾:.e|& Z`dP5Vj#W2|0Pn׸CP_sP zmzR}=j=6;Ct V0BDPV9x@c~mپ$|b3#|  z k u{.#0n` |Y$e'oG#|Z-Y62Zκ#rS"^LxSD'bE/YQdV̮STF챺 6QD[iG>!cC JOLGV0q&vݢ-X&# PU4c)BW83Ot8bߦ'_kM;u R6@ 3`vJMؗy_3J"ȹ`Ҫ eW N۲DuFصC?gx.NO\mD~=j4R=hOw fE'WRq)`?֚g_ ٝr>.J6]*>Ac'&E9XG!wz#ʐö:F/ i$ onτ4AKB=-߫)v,TSKe=\9yAfYDol ӿF5銐 +~־UdVnCT\WX, "Q}MW:i<uW$Cӂ xfwG1%Gy/pA m[~oqHm Q*gZhyL^;ZA3? H^uh7ycI}S[₹<̈ӻt`_Xw^"ǒ^Md0Z>BV= Ӽ?~ oIk爳XE%zUo1Q'L:yB (B I5%‘O p& [ә@Łxjv_gzrZL M万ώCZ3=Ԕ3_S]sjsy_Gn0Z x )~%:}kٓv̝ /;?XɄc?@%-_VU"]>=KzVy~3ݵOr #w8#X#k#?ǥ \#.宩>)bsr##ƃlyK5qM1 %٬~o0fV^{;c!:ۋݨp#.Qcr޳,҃\QɈnDqQM&|bCjqW$t%*#(l"ނ7o똪 1%DV&;2(H1j=D>_0]2'[ vL!WWqi }'x*@Yз }NϠQ^-IE*b\0E0UII j*&bOb20ͿlVS M^P Oj`W?5+u[\R6!\io'?| .-RjVm "\VWRǁNQ q蟺gu{vb̮% \F1t(^!utĜ3{ܺdm?q 50pa+32EǢ#r k6]R'ЭrNuUc>II>$xڴ([o\V6W],V*q@h϶gi8riYĉL%bħQCRvm4v)JUBCN{]TsÍ 'EfYMByɶO%پ6 X5sUm| @3mKV͞)Rh&jma~nEG/` &4tt}3n Z0íc&)["?ܠb^MD.z s]zw"ЪvcQ[M1փyκ>\0ցҮg5c,[BJ߲@J?mR3!)'1 X4z:UyǩzH,MϭϚ~aD"685:.,.P LFDr^Qy]-[MFy^;[U{EfÄIv$;`C] bw9yI1ewxykR3> T/՗c`')׼gk4ť5BPMj;&+xZVW4Psi, [QQ/;vQMJ'+!]NV2\W֨'n"EBu߽F @’ESlY%u v_iv2ᄯ|_ `m5VB*-z2Ў382/=\wnf9lK,ϋEߟ]-URA0/Pl2:xw 5V2dax(YUj ưo Ɗ2!iV]>f*?{S^`5|~>$LyNR߄ɟVi zhIHI ?5w'-0AIk@h^22uTY`Z;MSIh@sءEʃ iDIi݉s*L$ :atc]O(QN%&;Bc/<:$M-3 b=}7;q`P>gR@rY#is %LP]KMր$}d)hIj*'^|+zNg7󦊣9=rXqD%<_*l#I; Ù؈ 3 u{\ g\~k42u/됰6{9kYB==ssrg@,x1UknifQmXvY<`ƹZ 6;~Q'T~dqM&"5 3 bK.7rb>'‡+WUw8 \j˅*<_]ꈦW36TI!|:ԌW>Ƶq|:6wO]Xa^ *3廟X@:PLMOR,@X8a}G2Ux7P5Nj?OaQ)%¿ x͢PGaJW/Do^Psz%Λ9 h2b$DNF-$tF6hw P }N׏!>-q@(YnG.{Q'P{;܈ |4B1t# 9|rbOS|xRG_l `X0ɭ.WA[7è9yW{"Fu3Vx#ʇ74X(@!1սʧʝ䅯q7=9|64l Gxw<*D;@9`fʽeBQv)Zcs%b 8Q!8h3 z %t$R=Grm!A%`ǭO?!3LYy5 Ko0^#ϊDFbKFHՂ"{0Dc HQtrhd/PΊ`=ӻCwfMAI# & P g} 9 GeLdUj8ת} <)-,<G#?LZ}'‹hn [p ئ[ecZAD*ա {g3]sou64a,E]hC*GI|cA-)1=IL7N$s0A@<@Y(B{) OݝsEJ]7d t/x(0SswS¿|I"Tts7<_] >K/N˱[Дf'miSl~c94.qzI:ï*÷3: ,x&9x;ǼYhh$͈rD2QfM.7 D^!>IX: t-O݈CB2O7t&ҷײ<0' x BB9eQ;4d/[%c vxg"E3T.B:mnkQVL19hezr~)|ɰLJPf@x.ڡYiq݈~*%{R8kSVT]1N.`gCo8#jmG#\ @Á6f4K!RqBڬk#$`Jԟ竇ILʏYo¯=J\ ˲4#48\`=ƅtZ *7lQh{B K;bN$7C3^4lYa{[xDV[^Y̊k.wc,o}0k/u0h͹̶W+ 5sHl]IAJr;@N6 ge w,Sۚ߅3(ˋ=ƻ7;vuq) _%Sʪ'-C-ShXGW;He o(YI* =)[S3&&+'%o:`]<[ O6= ̧;ѝǫE"3"L}tn,YMäF=',S˜Lwj.[zu;RP2QlZEV>V"\ƥv|'L{J1 DF) ~G_VKٝ*ySQ>\hGjW-]D0C].WQئVulDpUvm%lsO6Q,Vܫ,!@z_;0|cYQq F'YJ--A>0*Ů0l$n1m|ÜY˜ і4t+~MbKf̚i)eE'9o*~m6Ӣv7el:11}0GvyKP+q'OI Do2֌OW3IvA vk*ThGF}fQКO< #L })bi;*Gk#P  %ڐX@mAɘ$oeAO=j!RPMz|J<>$k1uhm8;;_c _Hކ&׆&eS9` 8R< f摬fv$Y:,56WJM׿Z"HLV8\KBB+}mb|E]ſ?.fŏH 2ˣ\>Hd ̌6c.EkS2f]PuvL2Sàd{gxSO tb5f|ЋPV儺ՎI!-FН-p/[>[с9Ca[a3^ehjl`XZȲEʲ>tgqJn[]RI]! ^=!&S;;hu ԺZD} 8k{d3H5JU(MW5gm|Oh]gX;kg,Xׂ@Gqu %*IMxZxc&V(3ԬPNҜR/vKan:45ŽK5Uȋr~5gXf%ɢшcltjZ;G[FƇŒ=qm Qg9C{V({BiS6ͅ]±OΚa r_7mx=A#Oا#dDp@?^䬡ģ=Y'py*;$a噴3DM7b,}kpqԊep)2ld(&-2W,[or WbRt1EѐHTCH3^ tj55}^vBU{r *,$ a^"ze߮Eq=iD> +KAʱ9`9EcѤ96p0=gJFH.-2D61,9pȤu"iF6-Ji1#& Һ\TV i7b~!9&8j@=S[%&K< jM[[x"4$'}6)^ubǥ:4zYzm3hu]vlv6,*m{Qa{A@2$S]G=#~/(x@AI` tkGg5A"[\DZ>ޅ/M[~whzM WXY¡Dm”8*pⰃJESJcgkjYLDJ|۟xKpGtF+h ȍ'6G^#zMn/ ˁqaޠ-Ћ\!1^PADC1eR }I-p!Ay XN֞@4IWF>x!Dp!cXII"=x9w?3;qYQm~bpX8: ֤,{ޢmygiHD*ήh/}?. )M5UP2)@v6/󇟷gJy㫑8_pu Hsz.ǦA2SkJXwɊhW;JPm:im+ںl0-? ^mk*Msz9U,K5~mQH>|:7r[cjvDKK_˚Έ7۬ TQkpB(Y#nC[>vЎ|4#}k`j We}Rz8?qAƥ!t#UDVG*m]z+pYoC4vd8]X)&a\uH99c'7M.@V0>A2%z2 =oPU{b2_M67J&#Awo?)AY* 52o_NgO4 F5uhD $Rvɺ\]&3GpGbjR!`[)|Šh{aAi} Z:d|#ȁ 3jߌ)ئQuyu k;"ׯei#Ggf`꠴T˘U$۔B܌)XykS~ů8fd3iSf(,+:2w9^'ń#pٯ%n]j7s6OG)h. & HPZÞyEZyEeji.,$|ZU>#RAKQk -GMlsuXA8w`(hhVƢԷ7MZ9k2ĥ3#ţ\$?n W<67lfxuq VVLrDg]iAK}B5%>{@?-44 [U*^aU7Ml*Fd3U R'>HMZ?\jiFGI!>ZA(lxgPm6< as4~W_fHIuwGC#56M$ m{ r|A} aԂZhlB v< B%pHmaPqX:~~HPH>g`3f컙H2f[Nق*mΉa$4 2R8DCe\ "#8L- v):a$#Gn8 XL[oK mֻS%v6mYe*lI}wdYPc)/]eA2[v1('jr$ Ym!Ҳ1i:<xWXR9H?;sٺuz&pQP:[f!\!$҈^/04T{B3[AᾛpZۍr녷XcȿV @d~tgzG_Q?7Y3!=}kgE}Q+ϜHiل.sCJ6pq/`eC@*_甗|XqDD$p3SR7wvY%)q\t6== hR[p6%c>aCq(]̡<2hjp5luz̳m$+Y޾=CrhFDO"WC{tWKtPahh: ,4xV쾟gۼ9y*#x'0v!v8Uպ;J%/I)> kAЈ)]cE}*'hQGOOg/-b<=N8 _k,2% Umq" ofc`m_{lO5M+]ovo&xdu>#+teeEG[LI,hy`#mf( {M !Aҗ^׵Eb!ׂȎH9GRPvY0&u&Hcr|7fC=]"le[/&û5"<K> 8K?X;iMyb}D=!~O}Z'*[ͬ l#(ѹ)j)cgj` W=/Ó<ɢ#wziQykRSckeYd';?N<`1s2M-4A!|&k!h$ Фq?0O3C u$]|V=] >/`;fG6w0[3r!N@Uǿx nVsTkrEېevHމ_ 2פ n/`v(ZTFVCNRo: BDB3nG Ι[Xi ԞT>NXZ|g.cy?q5ɔA.OR/?] Qhq`re9^3׍F.N&鴞-iU/Ș"TOs=kD*m5#΁C-Gz{-nX"5ǬLx"2t^9R˅U-jk| h=C檾F=uB\yG,P dhq>ٙ+hdKjLɭ?٥-ϋ g>ޯ1hǿsl5d6$Tnhލt4k'mYq8p.]}P{ZO/ODtJKTNp҅yY|eh33)cLbvpo XHFo.Զ~8goWF "w8ʱ=*kSrCҕQR._=Փ*crPdvO#jN`43Թz`rIWwCۇˢ'QM6m?e|$ 50ua;㭕trV/B (gMhPL @#'ilѮF = @4=a0~T# ]˖ʾҪ95_GhtfHKm<[l2]bWGoK{g9\V0%6nRe70}qU3A" `ȡ,%2iMkԇ2-;'F龬eZTGfQCP?B`3؏)Aʥ63l=1IOU U#W1|M'Ns~QQu+"T$(@t(? azҢ Y+ ׬SJnKXd8z/uJd1KI%Nâ+ɼ_%_$ٶ L ;sdRca"6}BX  F6C\dmO9Qbۨ-M`R C ቙66`Wu>B}Gh/Ygܤɵ洌ظdӋxQUbj&I(vq[%rTR~ }h9f[EP3յ}w%T ,,[$[b `lo}I`ւϙ!iD9Ϟ* bPAnq˪j7,`Jk㋻垊d5aȫ2 XaJ]}R1qz]Q0I둪JSQ1fg.LxnHf#?;QIjߡi[":1(T 5ʣ>EIL- {/HM3$ɦ9%^ݗ[vN0a?oZJD9t~8*# ((ŏ=|V/^IdQG6̓{whb~#pkgD]B-%SobUQ)J}.2Gߒř*y1d/t~GJ縮)u|R,07'`vv?j<z䒷S~N\O *"gQ_qg}Ջ[.v e/I (|?>k+?ODUw?Y~ġRJSߑͅ,6iVvN4i")E]W!#Ca wWa;J)Ȫ""%\d& q$ACbUzWi1zbꗋpcүYq gʓHEOLxAB n4q .^N3w_:`]_\kpƆ 8D'F|EQ8[.ɎXF?%YL6AxXWE osng[ԛ$H$^>GrM#203K=yvޠm4Л*B7q["ar7|/lK|)IgzY"8!Tn%BӊW{_ !e=KgEon60ZJo[D;q9pk?$Q\$.-FoH[EJX<0KxNK"Qr{)PwʕcafڸFA2oXfH"RSS-}A !*YO.-(,z~en98 =XZ?F|Of7cCCxE;5fqu}l^DjjެBz,ˀ lvz/ԄMl3\]Ttn>u[ dD"Ҍ\%+0EV4!̻ʲ|Nw1fZ7(aȕ<؍8q [/]DDn9i{ϫ%ZPZ2zY,ڲ׺ksH']Zm|{A,N/0cwŜ/Zm BAҏk%y쬲׳\}[m}o-ޅe .R$uv9oܤt:P0cJC^jM>]oCȞ@D] IH1&} XqvNKUy|`Dqt2")a5Tf %Z۵nUzHO\K=tO`/8W%BA0Mַɹ%H=FٛxvL ;7ii~Qa#hx8nVGnayM~Cf X)Rտ[yg"8%.pf>RYŃX 9|zdo:Ugw~'1KEHюˉ~l.+>+ƪ,{R${RufAt[1FwYfVa@/ aTgܝ3PMtr6(p h SNűJJxR)i35$6s $5aLve #^ Eɍh|4- !lS>.]Qȶk^|A B?m먣0mV)1xzȼr =퓪EQ'נPt́ oXGg(%dHQ6ffQV`ri ux>I(0)! _Aobc ѥή,rD@[׊-2M?k %Iǁu=L]HT["5ĥ.'X#~|R@6tNHkoW<,1 &"nÜ H 3 F-H&dNsPjϼѦ5$,UDxPe%FņV'RE&"6ůO"!%U1wPP-acEyڑa@ jbJY6ђ^ٌbG4װRf}#$/$Tzpoq C3c`bD\%v53,lp~$e̲Awo╌gO7UUPڽҭ#)b"h2P/-u G,,D <|N+JKVXqOeh:9(~!b?݇DQGO] # sQ8"JG=K^SwS7> CR|r7v"!(% =Dꂽk@qKgffVqc3qC{HL%ѱG:@rXf1d 98gɞa [7_)*00Uoi5#7~1٫fμkg>G!+`E t˜>45whg#'h9nQLUk 32PxA07F+:U *)<@\*>+Ali X Ĕn!G*?tf]\z (܌iTr#J p>.L48*rgzCk],OpF\Ḭ}qI&.r9[QRmB;ݽ&݀=wh rs V3(ae4]hޡ F K_YP^<fy/6 SyBP.Yn=;Zq l7&'jT R@_ ]Vlw).߆0VZ cQU8AyM -U IxY0ʤŮX&m6wS1 ?\쬊>~.s?<{Yi'S-sDm_s 1P'$N8[V&H.,J>cr [9ؗ.X{G})um%tïd{^$ٻ#=מIgؔ ģ'cS?eHmqth<*YEBhtP@w7Q`G٨/F.s*|؝ƫ']xh|kCj,qθ 杫P;+"kWq]r%Al8>GF0FZȋ{ dۚc#Ds`KLt, F g)@|FVXvu 0[2K#)W qIdm# K)>XMg0Y-t~]_h)bMә`CȇNc lAc6 q|+R+M*߰;JI56e8u dT..[$p몡]0ϫXpуآ+zf8ZFC5)T4Yp՜_3${k]X]w [K 4d7ljLC t)ϬAMQFFABk^!ߙi1I3i٦ qUzDGJaA3.\ĬIֽO4[aAB6}۾,YA~̦:ZH\|S߲]JӅsǮQ2L`rpM RE!kosaqÈIM@Ѻd*F/Zk yGy{b/f28 rDfXpD᪑ yXg|C;|9N U:}QIձrmJR +LF% hV9Yřcjϋg",*x-̠~3}l\(HH2ցP79n=de.L''meҕhuwzq,ݿM C'0)_ %O"oT >P. suGI!rQDU P$t~p5[i1'+qsAI +Xo/yaԚ^£R&sF4^RުcNj$""Y6'kgRCáZ\1Jl*MxzkmCN GX@m]FjY 背9!-/H12,dhN*N)}jS8dE3@Lnhb^lf;c5C1f10e[7Gڗt5y!{iiFoBCVq Wm,FJȍ$V%ɹ`*?i@_ !_qkUeQ;}v 8-00!ptpi[;fȸ;l\Zj gL epfkĘBqOK!yhFil,7q16^F_N!2G57:AMÔl!eT"y5uB;磅e!2K?Z}-Uu4L,s5<R -_Eųo*ǁY|mRJPB*-[Mͅ2RG؈߳ab^"MXǰBTI*aX dK4j+L;2qHsgq,^l[]1RW"Hh"cLbPs&(z#2Z[]|~쏬1QQVa/C0G(F;EER_ =]E;0sͺ$֝_x0;pr jנ> IƂ@; ιs 3~haݰ>ݪg0`du%{]+/I2zMN/icb٬Y S@ODZP {2g]5[ܠQtš]6l$ɼ7n#Qz]t?5E@֕e}OHilw7١xL*c\9+_t%\qEkmSsr]PHKԘ6_@tƐ!`S)/V$V@$gSˏ$EE0,uh& A/1TMgW\ T cOҪ(]5Rz+Hl4J/b{67*z)4 7+mjTT~>lkϬ#Nd9"3s9N*>A`l4NE)Y+M]8UF[7.-uo.%^o5x꺫mP-Tcu2`<(*0,IFdK0+1՞o-Q3#~io,kȃxi0E֛I`z>@qE&{#ukuj"ޘ6Bgu h.F' 4l<)q`4-1,Ec=r<}.zn$;0J`?XfHFHƪ9"pä̲RAX.֗N$綾qԎCU(=Yܹf]М4u)ƩycCCLR)ե3#I|A6.m?מOGV"b̙ 4Zf 0C 4PWpX &-%K>tɘy&RUg20( Z[8 2](̆@-{~Q83WrI zBe7NzB&~ۿ8*Mhϙl?eyǥ~%BU]RuS5ޝlTnY&5g]`XupN^ UY5@{\˅Ե]7%Ll>yBbi5N4gX"l|.vcE[:f'rAu~ʌҶ_?&VN6C3%l߶`(p¨뾸Sk9Mzۭ- i?yE!\H@tF]7&5O䏎*YmLi<" )Z2=R&  ̀Oԇvz [&hD4K3դ$pۭ@FwJg2+hui|ڔ,+kc7Ū5`M\KK-?7"i{^[-*Kݥ$h(Bz34Ų)k)Yv u2)s' bc7bhp5!|L"Fjz kPآz9U2F8F?([ϫ>&=QA@=ۥET"d?2*~竾3).^e%:+?|xlk8_@ԕVO9ګfe,+c1VAR^ @xٵ%EU8j@rCu']ʹ۳Y!Ci(.m~&@kμQ{&R%qߗ^caj!]uz0pI]d췐j س<N!w r~7OΛ>'0K=t=w4^lGJӿ?%/Lu/ }vɂgzYL6PO<5]F7su/.n70) ~)GRk)-.mbõ%x8koOr# qM&̑H,KB sDz\Ԏ82CkݎQ/vs 24a%G=( mHߘbV^ de4[_}m\LPL8;(M`ݪZF x_*CDHp*f :D"ԂHOcmjdڋUMRB૳KLJx0}jC%U q$\su^Bw.A*iĿ( J"+xIE9$emΙ`=&f>Cl ʞ!5;Xg(52Zr D.i:3O2H6|(6?u.8'n'Qc_.@oiNfiuÒ(Ҧܮogh/;m B f!̟$Y}mm%|ykp[g"&8FHdH$ V.R(v]C:PoiW#^i4 +,XH}g9kfpSxR_w y-tⓐ94Dԃ<8婬ktv1<u5k3%_!޼_oz3F']@:C2\w\Fm Lh7w9ާR<3l9k x.aFaxv _; ۫@uIPQg+@ F%+4k HLLaW Ϩ,P1x.i,:%uHhy{o_Ǣ6]F!XavuR9~,bnu.Q5,(9mx >[ 﨑}SSi2Nhj9Mlz.-rѥI]lG-W#=xLaf79*DKџ2$VRhmH6%e{<ŒN/׆*^ do }AUU4$)T\]Wcv}EyjO\\~}0E-#} .3uWP3-s  'Wsۥ{^^ok3H厸}q+nq ]/?Rwcgd$k]`TWZX\LzA|.6`i͗1;.xh,PZUT4kN7P7$Q?9ړhO@*=t qV@TkOȤ Sg}bX78I15$@4|?Xr0WŠ3\e>G=mX:|>+mqeGo+p逈Uᩤ|'cqWs: /[ Ny8:UƣeΒٖXE_-!dɵbb|`nROH`RX8u+2 ȧS'ZZrC{RpWt9)ؓ ̜97KS<8z iϫĎ=2|k~'̗l6 UD( 6;Fw>bҽ&-ŋA%FJbX,^j^u^#u`1"'U-W נ?5V ]O}Q0JEGR4Qa 2TfryT_n/Y)BЫB`,aa(Y^IOU\L0jD8aIEAo? pL؟c 7PHJ[  7ZK`ڙ6@G cjbNtu.aHO#gMdcW,#$K36_Kh_jBw\h XO uӽ K29MN9bp|Z h8tJxCl@ͩDVI"Z~b܀E҂&5fcw#4?1\7Z_SG4M|Ԑzٹ pAKi|vI_+A'u׵tByqLY?$?۵g:m|MM\)Ű@$ g\E3>MӰXcвH?WzJb)Yz7 ~MNO Nn1='{Ԓ7Ƒx1*fXhw]/Tޗz]3CTAm ":M,V\l7@vmOfO뼤 WK[S+4E0hI^ 3 }uB5_L c:fM;0WwR\z~4bM%@e[YZk}i`L,7%IN"KgH} %/Z3?R//j )02$CTlMǹaeMa eAFё\י?&fİ垴NbʎR78b'8@Old@#5b?"Lq㙅qS<BE R)IrKIT{U 1t\ ]K9d16 $IMſ ȯ7*BiQR4t3V?ӑpJQKGdQS//QjWnl:ʕlӰʢX;z jR#pgkm ADD9Oy45ܭE)ea\SM3IA,KI Z K"Vlhb a&e~> B$N]-UU:h1 o6,ի ]z7P>4G3b]+x8@J2XmCyqmsĿGe7"'J1 s)ϓx9?ޯXәH*j~'|OhKsT-qmfrqD2-΁wttarf#tJˇ+ԝѮG5 Q%qmuKgzK~㴿x<ҫf J(~6^BSQ:e(&V$>t[SC }\5Ca'e1hNTM723vw}jOUT^Ƿ6s& dBO'Ddr!#58'=+#6 B 1wr|Km]y2hTJsEj^xUSUD( kW;: `D+9\ĆԎn%]]JW~k3{1@K"_1PeD:r9GLUpPb_0g`Ѻ]Y@q ~JԈ۴0BC+VN*XLk?@uJ0!L2Ӿeֿ>M'MM0w"L6qN++ HQ#/@2BCyoB ŗr[bg.M7!=aeCs)q? qHU:Is1TdlxF lP|6~H44ѨV/^j=,v%vLeu7{`F]Mv}_ٝ_NU9!1,6K E8rtNv:ImM?XfD@ k$bs}53ySg`.'pDz QY2ӆ6?t@ 2A7 Ͻ*B}`ELǀv*QxN‘ K;HyX].(xSoXBfd(=n0N {.bheu`$ OdHퟗVnN-MUrSxPkNIO\@9~'hjTf*ů!4#*FB.c(ϳ}JC Kj%I`JAm6[`;XݼZOekzjᄃ5_°@0K&"FC]ѿM{WꗱΞ dόSzi;nMxZ:|4bh*u`sЙ&[l.D9j/8]sfx .W[Z`% ^J` n`pjo;GMb:#:I|4!{YJuf@厗#A`,iԻ"rIV]^ڵ/ޙHJ0`9^z3¸ыК`pZhkdTnf֧D_\5^qHz6g\l#B1G oCe /{0w0S.nS8bMa9뫦V)$Z*},ݍo}x}}"vO -Jh] S_ހVQ(!3FMyra V`_%-,­޶j;aڼopL>PȔ98#|,2zpV7*Xw{(JpoW'RI^ }tWf=M? jD&귉6R}ڴw-f 8J! `iaBR_+.sV!@\*A$i7oUn3di<#'1򹐖sf tX~`$x2jǖ:b^Pw-*VSզD 3ʤmk잊._oTW|Ѹx՝n{m9X*)LpxY.]^"];#ݎ Vh͢DGaΣIP!z}W1Jn/74;`I)ZͳRc-}|phdv'v]/hv<Y%wS48;n/-=[yi{2u6 l/@ǎٽDyF "v6 7;T[a !U 12~#\g4 ]!]x٧G0Vu^,5HayHۙ3 guAaյ<-f< B+MۥG1B;3'saʇg*ւd->9 4SSWy Amn =Ie3G{WT mmqb;䅸ВOkHkaxl-7Y0nCPD0sJ:DJ?H\vXOϚ:!< }Ih4%h8v_Q<>K!:0}~Su螣LPjCHXYDQeVf2bI~ bߍeHqGpRi^S 0ւ3&#}$BG&J6m?͇P! rJRW3WR"#869HՈD &,+/J{+!2iƯRI|Gx1p Jyv[wm$+̺ 0J\wFȢa ƺ{Q>K=Fi5c&e@%1ht~-VCLY#C1A4p*b@w}wIaa.ņ xz\`!08 KvQ+T;L;?`ط:3ٓ: +duĠj0Jae1p#(P+8' <N9)SLBbǍj"I?a*fVl6~č?=[U%)nTuVUd4S4mҋ9V^]L^n:⚂HPEA}`pNc{cb3-؄TJ&H\MOVd"07H4ƲE  OvC*~-_ VUvLلnM٣n:"5PzZ =mҴ5"$,y+T2ӫDXn(]Q+'I.xN o8Ű0.̌ɂYhuMwZ~UQt5L|jZ( ኒ_Nk"jLBe1\F`דn)]2TҼ/88.;~#<`h-wt=oT}bjK|ru E }H\^3[NEI& %hYUX<pv14žzsǠ=! &\,vJgUuG8Dΐ:˘O3nl1Ϸ[Gp4X82r-̌\ R9u:t7((L'LjM@]~ےp,.-&n=n!D7)Xd-K"Br%%0 8x;75/_xKZW͑7besHj,zջP.5i!7ߙNݖ>Őb^mjnC`* >kN'?8N^#t*rbu+=ɂ8d7++ `rWe U?C_DKPq m˜SDu-c!VHXB*h>}Ҫ b+OS$3ce Ò4KհK%oj* Gx֘v ʀO+=Yħ|:h߼UH7. oeZύqzb ;=(W(wa<9z-;;Z7Շ=$I5v6`pLPܝ dRQrv WE-ق?qG(M%ApuB60%r%@p* 0I0_YoTʷB;Ű}$D;s>tH$rO: m(TL/&ξ[3@k6v{J7Er6anɯK_r$!j ֟DUt<4&m[3ŌSYC̖EK@B%;>듟ÂL/n.k%.eCپC68۪k8b_ǻ xvYGVN<a";Jݰ+xqTa|4ww$h[, D/WZh#uȇ?lq dmm2ȋd2,͡o8dꨄ6PIr,ynGϯkWR5fZ(A;-˟^4 GrA.l:@ XzDL,uKDXץ/~/EYAߐ*zNc G3 $ qrB6zZNdbzȓHm4f|F돎7)^tU񣸀Q",Cesf:z۾DPp0azSr`w5RYZ9 8{DvqSP&3/2e.)*$;[)U c*k\Gxݾrl|&PNHJ=4+-mgx?IapT*% _A gT3;dޭGfJ]HQUHKGx{SKSbG K7HfBFׅ.{ ~,uXK蠝I4v$D]: f90]y`R7}٦!KU ^:7K$y7C'4jE"xIWQ2p*#CR ſgU-ahuyN9mۮ ˰ř Yl 't 6y p55ltѾ8eJē+Lހl؄5bK9VSi5D3 3GWէFaee`?h1#:D7|%c K Jzr+ v0agP4kpM*^"TW(gGg !{dsϦ8qd ]APa2Ҋi-Two"-T8ki*>DӇ` N$`ꡦ8J 8mLv^_%hVt CÏ}N@Ra3Y-NF|=T+uOi!m <~վ0o>#1g8ScckJ$iJyI Cd=p/7;:9Je`yo}'VUOVP R۵Qy)#3ϒy=o늒NK:=ww{f4A^kGCcl`9Oqi'_ڠ`Sc q*]Iۡ7`cydMp')ɕ^XlTS~EЂ8y;/k\_ A8QyêhU}jX߿OI8(NcUՋ<}Tr 1abGEvd&@&1YtTmľw1͟A-IuA-]JqcI}фl/Aκk㰻1l@dGdKzqy'.wQ STGp>9vi=<}?BE$$݄ԋy}MO 0ĺ^NmUNîot0W݈JhɽDFCPG1{Y 8\USKeE;!͢L5Ҁ۠78<(|'iTG5E--ZE%{:޶o?YbNoqJiU=zz*eIL3t So'!M v-}HZ 4t :-ʺ_Y-|Ӎ>Ϩk?}-k38Uj/eUi/ Mo7jc؟)4˼`,+[f'݇]AJup}ڄ̈́NsK9l0Ny<\B5kS 2C|RrD40NeQԎXjπL/M,euwZ9)ճV~sV_ sꢋvluX7.SQcOBZ]wtD^fqngGhk{5BX؎bpiU*W6 pEf@Bڐ |&zw@ݯ큢pTݤ6vx@d1%P$舮2' <알`%mkk}I+Hjg~!ͲoQ>]'V8u JڙTGp0"Xf[rU©[~p~U%Ib`ŘJ(4?$;UCg}qAm5pGI6La ^`փ$ym@-<c6$tS3>Yȍ.m+0ƛn獣Ƽ:_5:G2K_na{Kpl2  oʘ!6!j .xcm2?7+\ 6+c9ъuq *t ,ZqMNCuMCdt^{_0;kҞ6!fxF@J+cGtԙʹov%ɝ"2{E8ENmEM|b&n=ՇN3'=ra۩x }3OK Wߟܵ8t"V$^f}_ʊOzb< %lŽ-l-)ֳ/;t"m nt,0na${t(ķdb-_qL#~D9'l}M, T+&L;>;G;Z:OH8XgDt Ad4"]Rt%pkOQaPUJ޴뒞!G f%xMA>zbx!l QS Tt~g׬tx$CFSԙv4V}wl<`դؐd%1vOCBZ#[/v${ c׮)}&9䛱Lv wE1F6s)0S!u)mY̤(m 0{gs \f${i|9h4'-wU#FR5螠?g<*-n 1qO:] ˌ|P/5zĭaﳹ8G1I@fdkOdZݭl3(GS?7.E|_%tB!`g^lc0캜 tNT*Đ(+,$u I/M+n *ҽ?0vGSB`ըTrҤX#,B=5dL嘊&=-D[ζ&A\a 3tLG`ЪKJã /5V>,8%p9O9hMnw>-Tx5ݰϷTT8 '܉YA!nM6~.ðQ  R2-Mǭ; .V2lnej_n VJ`h 0rD\XY9/u +V@9R@_,ߺSw|a00( 0H }MK#nK%%0P@O&.9^p(tZ])Ns_aA|8\N`hb#4ԟ+( tm>TedՐK[|9~N q7 21zauΑĺAMW3`+0NV+r Orդ#(ZneJLM nZRRKb|,==(<1*Rm.ӡnDM",˨Q&@%uVJ[BOQSҟ1X3nFA(fPm^QH+ YSv6関SH7-1.bz=Y^(]4IO_2t">tᮾ0)U0nj7e+ZsE_p!7=xrT]W$Q"?OK4V-q/AkCTtVcD iFP3qi˒>#X[Z7@C2ϗ75eyV xÅ[=ΌmK-G :*VxU5'WP{SqX׸w v/RrE!i.'ä OSaf?[* JxP@d"έC R_M~vZ!Q+J Nm\]yRDf dR󪩌~I#M~ f>0,l@2sKqNX6nzqNvZ}6XSpCL;7dٻ)!mnie7`1:-\**kV%,_* +2Ui'RHF]qo9X :; s70&_rfY.UZA"7U!GI<=enO*q$N"R=[S\: ^*O2{&^fE#jruS \I@ {5k9"cPe^NşS؁Fs` 88e>#0[kc=5l [FiĂBHqxsdZϤGLX5W.xOݞ@L[j}jq55bh^l/VrCܚ} hYӃGr/ʬ$66B-b&Uu )+Ǩ?PARă@8Ɏw7f9/k)S8`fh2IيU0HQpH>oO{T x-*vPxU> [xIYa)]1O&A/볐DZҭT@p>9T;s_R.3z)kKR# $?[Ghsn,xyƦAja|AE6HPí }AR2Lx(N=˝&sڎJ|uy] 82too=e\=|>Oed5mZW X4+V2ZrEL&UmwZx8\Jppܭvcy!x+]Q(J&?T n!RbrdU A 7yOd Z̐BWҪf@b?xGWCՐb?/?jmqZ?gS; yKh6X엏Kf-hV ax(>F<}ba*ݭ<5bGj$Je|G`:"d1#d6Emċ]TNuKp[ŬK?w? @߀)Ϟ1 6,՗/JpmXe b s0ÞKa4=LyLJtp@ A.>3nϒhuf-}Rf#< gW ܚAw1[;%u8U7cJ]OS浕D]I+'j20 tȌ*<6+\K4~K1k`B\p^&ד?Vǡ`d?턱sOE y><~s<6P4GZ`8FHARߝ`6Z횏+ :s8ߎᱰ#(!Nx]m_z3*1֪=NQf-.R/$q!.06]D2| khq?F|7{ZCV))ܫ畽!0pnn}@~a&3[ =[Z"/;?is|$Aw h:!kh\qg$>$}݆]k{5D %ePhQY]}di33*{[)O"V(f_ٰ)7MI~R9?zB%YYO@8Pl+ec9*q,^ ;K䖡?3iCG8?j 3ʼnHҞ]2^!4E2jU;Ѿ%dǻ,z:}(ڤzy~G4 (DR{G5=(5D"c bKV2ǧqKׄM5 LkAT|2Fugf;&tDY MZvªF`Zl^3 4lͶ>Ֆ5i'X-Fbfݖ~J76ψ'C̉kbT~Vfyz Rr\Rv/s \y!p6zHaCQPB(-JFRYg]:4dǎK QPPxeImԉe01@dge$潢Kx'-RꜛևB{U;и)>OK/6#oJ/NHЊ ^Ѓ1ǰm싐1p 2{ 4+[::\%=:hQvXLȁPHFk#D"v~lĿMjQz~~[fQ 76pyFEzL(S̞iGa0mK@6T4(;e""88 ӳG'jo`qv.ۅr F²=dH^5\J!/6+m~!^6)5O:? jx~=^xn Fg&(Ppn݅YvCi5tS#Y2ZBf vp׉Xɇi=V;a51@9/v!riZm0ui͐B=wY#~ӋQăc%3 ,<&yHtq 8|ƖřsK:[TjᮾBBwcnxK9fmu[f3+Jʍ+`tէmć.kdpC`u j+a4 ZMV8 9NQͤm MTXKǤmwx6cf~E&>H߬.B\Q;-(U!Z4u QrYc3(g3<2 qކ_J'~%3md?ĭɦo$ Fd;{ 0;ҿ}C|=1"h`+ħmuU6r.⣶%[92_ݙ&tF(w&[*e~Z0)X^Hn2eMu UwCi}Ku-ttLyo?~mk̐Co] a%0SS6 ܡo+oV8aC;ڦ,wlM4T^ᛛW>{.XZizNr:U~7;9R|{y5TF|7<9@L(㥓Er چ_OAj\LX]@rCž21?U j9 ݫ|GQm@*l0g:?Va\&!6O5蜛M%{8紐FתvK/~:Uw~pIT|`KlQÆH䫘#=b'uzkHPOmVgdauKoEE{;\Jm|{Ϲ-#dTLZ κ7bz5wo}mȨ3H{ϡn@koH`ٛT򾷠zK;g_͜ *\h\Ex '.[L•r<5_|`g2ܠ^+j(#f I[\BC]rp vwEժ}V-[vP}Q'ljpe>"%!? ,٠ oIQ7{b\ň O )毭i|`^QbZ&Ox /|$EI(KUtc48w*n}iv vHI.v{ e0 &0[W%Žce~v"vBs5x % Y֬|^+Q8?cډ8n;YvM_[jћsBh]AX7\" 'bnn^Znb}Ϲk&ʏ|~Q %wʷ6vIn(H#W,> dox9FuřS >j06zl0sJUgFAd.>^e/$+i,lOrɭmߦ.iG&^DT7`R)_YńULoh)~Tᬫ, 1N.O C1[f ^uB-(|ke/V]M_}In}'Ox__`WVy@TbPx*:Y7,~0pp}&Us1zk&&Y}-VUghi7ܸbl6c巄r^4wѮL@9^eeiB\z*O)xmϪLNZw@ꂕqq8BO^." Ðk3t-oV* S3A`$J ?cF/Q+ C6E3=1']d5*~‰AwRsh#X52t66g+i&$/F"oBq:h,„ 2+ZC%F7Z% 5GMVRuKmaMsKL8KWX}jz\J`qX/8|eP3JwT.^iy^%&UjYRs!)w]`e{@jN9d6Mg q75Jc*9 Lم=EzPZ>nz#i) pBoȇqm[;Yp U2@ݐ1@"<1:Z!!x 0-5uׇ0yC2W*"#a \7%X hs½GSvz7yt/7(G"8GI DY=;EMFj^ɽpW;!i[)D|j'5qIw{y V˚*4]P#d )C|-A.[D,qy͕#rxo@Wjʆf< WO7\v=RZ_v5RΐzF'P`M93źe96O< n6, {)m`_؍nT9!8i.G>@-g-4tX},v]ᦹf ?[l@`0:h †gL&LtDb+~dO +5ܣH>Tu3-vT0UQis4$Y;4K@:\?!!hB`.Lgu-"e/!SNir$ǭ-ܠIRZf8pyTy{,,B[ _08_2 J+T (nwsB*xTvچu[XprQI⑮=.̱vPe^4tp}S^f $qDUL+FAX#tZ?I T˸j!&/n4]`d_L 'Ka@ S!ɋTCTm5⑟ xP[uI(S4nV$uƁh'S: p4a| #XкRTC2|L@nsgI BBrs ;(t |y:򣬥 dt;bQZ6C.riyAW [1o QĮb<ߣzS9YZì:^ ʘ_.5Rab@$0bH_s%5OHe<4q 0^jKNfew>p445Kes6zSMk,0"x\0Vܯ.惣Q×_-npܩ2l*hDw@ZAxas/5|8mZΟ/LsM Ι+d4 Yi U8Bd.zz!8J ~Wlf@CmYHb)J N{1G*CNE|ҫ¥xt$L3FDDOR#Q H{gx5ÆGM>v)Rg!nU4PU BHJ`j/< SP)bC%sEM{d30^:..[5;R 6+3t˒(W _ݾ^~5> m̅o Ay`V7s|ML3:ĜЛfuK+4|_u_ɉyް&20c}8$wԃ Ll*+5P+`,h){cI ܑOu~.sY<ړR_⾬恔ؤ*y~<}\b+sѵre0=UB2GZ w r ʵ_,7mvE,z2_L hqxzէ? LKpNӶbUؤآԖce$3/lfܣ 5zLI$}DIi:~U+S#0 7 S㸧{Ać*V} SvJ5n.;W,{ 8 ӌg!-=zo& anQгrbXJ9le˯EbɑZ=q~0iT4w!j%yb SwAa{syW4HO Ms9#*'VZLzYי;vX95aCm!3/9TdKrr2Cهqv7jqC{SV؂llawغג&ôV~tz%#=(6H3;+POU0pb;(ًXb!!4j>66/%sxxgG 7L?kX>XEvD(:G$J=?*C &iF&<q߭O&m'SY w'/3z e>>sB ,nجv/(hNĠ3+,ѷn-жD#zo-!&JI>)]M8 t<|4/ ID'ȴNx.I)ͫFu\]3,})mQ1jce|{TRͪ ^yVl+GLd r[\]Ԅ~@Qo*K3A8^4}`F1)WL:ss(Ρ%(pǠ&QUc -DLJB[R}A 6ϛ!Z@Q: t{M?^T;Ѵ~薯9L)w&zuЭ0=В gr:*VĸVc~i򫬚Nc/4ꃉЮϰ^!D~1++2eT\vа/DHêGlw&<Ұ@DYkTI9ЖSߍ ^udI,(d%ARDHɹ[Y'X"_\ٌ\v@?J j$1`!M#ufŠ\[~C4Cj(g @+w-e^ BrH.I\y9{:Ch=ИSXj.R P1 vk|% 3||3-fhx' |bg8e\W;poP`yn:߰u/'#Yzs r0е*tlOCI/>W̏u~":VOڭ;nk$z:pmam: DߩQ2#PRB֬Rqi-u}M27W!_s/5-D Gup@ahDGa2?aӼdx.?_V-#F$zɔ(YNDޟJV>E$LKpV'$4@7pY^W# j[!b.ʞ\sRJUeͺx=BB{wA8oyܠX#6P7#SQNBIsuH0͕9VA3耍|]%SI; }eR :c|0; Y1^5Q,~ZgfG!Xy~xH֓C1T i@R|ˡd>&OF}ma qT>vA˛esU.~pVIw3PN'ˈAS8Qg~}4>{dW%3:,|d3T(*d͆~\ Ȃ1B-#&(~>s_ Q*Bou? Ѝk}88JL0+- 6/b ,t+J.~D'qEmR1~cgC۵o7,~x'26uZdp!_3C&#zlr{` a=~HőL𪮞1&D`hkZ1F,VJǵņ4qT #L9tŋ09N3+XBAWO#}}ZDS~4'<4f{O#aO܃_m|}1Ӕ/ArT(`c(w EA#tB]:lZC`",^\zDw?3Rl}#}VG19w0ՠ낧 Y}u\'ٿ:ʁp7;`n ۆy9sWG !tBk?Jd!ѩ&vIw\'нK,'{p4IMiRQ)l[K'HGh{3^pA5 o"v/jnH%ocb)[,Q/ oڙi.1;B&rñgne"m~"$1׀pH39@%$@ 2"5ߴҗC.@rk#tl>PHyᙶGo064Һ Rv* ?wŧ=/#MݠicK,5"׿#q!^sL9Ӭ-\LmgATt?%];>>s`ka0%HƆ_9)(1(\jPelzL$4ך}B va7DKNȬ素Z8~1|}j#|"-O.VcH(YgumE $w*%Rt\Dijk_A XH%PZe.`[dR*xj_bX&~gЅyGو6xZ[3")@OA*na2'¿_/ɊxpݩoPcǤj^!0M[Ht>:c]SV|}e~j>eZizR fjԏl :t̗16T DCS2;[w8~}_G PBR};HVžs.|Y"qN:bsI[oљͦ: v4 -R~h| KQYq0RٸeF,D e {[H{f|,^BZ#B* ՉW]E"AMcj<j\9 lS\5NP Fo"i zKw_/Hc4!L"MyuUe+v0>8!ɋȲ(([bl+f !-UzfڑFTQKֻ,U?duXя:rE).(hdtNӅz5#ڠ+o(IKg~}>}=uɨ FaE+a6$ Ofje6|dSJG9T@Zls륃/9t7+p]-l#}n1"QaR{?ecN/܆+'xDB~òD#:VK $H7M+ -0yVMp; xoQIXVn9-l$iE "D펍խ&XɃWJS :(|f{]:<G%oqX;LSMpc7ɤ6BկfIG㴐ZX B[Լ&']&sp_.:k/b4pP0X{V F?U MPE6+n փ0Loz)]%HJY6-zz6o5Nxm z9獖=Qm\`f`mStEŮϩ0 {?s-fзόzD \GҳN9Jdb@3(2W&Pjۇ+: M~VE$?I0PdoLr#Vƀ #q7!72ˣIyzR^E 5J=WVwǡ)!SNy0b6X? |#o*Yyٌ:-¢6/s:*#=mbgX v,ncU^ g]@t ?2:]IqQxuxFsp ZHARuAp~px^Yh(=n?~ތ28LzR@4bV8\6"}e\B̨fZf_rY|J[+{5HJ^9r|84wEIxLB9wP\3N,IbP_48N@u1Qq{CRTg$Pi*L/_߶m5^sXQ]5ـe u'`YO@ qpYTtY gKT=%ljK뛙xf t0nmx$Ȕ}.fV}A?lEu4XQj~8ǑT]H(#?40 ?yU,f( "j[_U6Pe 4{+7{QΓ8Ppn֒zF2<{=LHƒP5<ش_|F`˿-*6 Mpa>`V `&&;ڀ"~K퍟> Ya12LT6)Va9"8?0RVy#bDp9K P ?AEFH)Q6eeh?m:#pJiY_Z)II/Гv=9ͣfWƼښBC2q Z (9mS䨞s6ټ4ܸ#Bߜ;6aH dؒs~XZ΄q Wr"O7W+3y*cgT!2 HV"R=-"ȻԤUL--\ IzQ n>i %/ R*i v_JSEt~K]`p&fzMυ(bgZ05fP_mw?5C'hnXg|⥳됗NDGf}[ܟc9}_9E$OQ6OF)YS 6dOB!/  /*G$ ZMPVC WV3:QÊlfkcJV duYDqv5t+ pqDw-ΐ{6ËvhhWfΚa_F)L$zFSZ}0_M-Ԏ47|Я_z"bݘ ^ ڈ?Z!7̷ Ӳke mZZ7[Oe\IF_S,:]e.:w:8JR7TBD8UVQw05HcW(^4L z~ w1 M=}~=+ \8V uR;?J#2yp{ 6D7gD572,}ߒ b|nwq*R tqȄ@w.X!#8'^-? >?u*s"\:t%Zzasdh㩝vL7[Ñ$dzq+#:W*jυA_@OH>?G2H,"@2|q }:yYrђ/ 3\wI`.Q? <јP5:~A;Dzd$\Brݲ?n 9>xtt~~:k MN^:W[>όӣC1'ҫavNC pOͭJkS[v{A/ŤKRxԪ'LT^vmNqT^ H'Nn*WoZ`zXD41By1fl7}@CFM'6|5[W7}]: }ymDޟ\:.{M4(]DN/#[uK׭rVitK;_z Kkr/&ж+{ijaF4-"W@7|`]dNMO# HZ15=2Pu5%Ouͬ b0O/Z c!P6wf|EpU,y*̴I:ELa>vV3xጄd\Đ?_z2m0t5gp81{TJDu }~ WX5L+\AF CNB#X=^TzkݔF.8ZVkl9D_a_猆AԲ\XZ?5iD9v4y~|/\5ˁL-&N-yC%ʍvyLL ֚hWϗ|6d3lN-¾/E+c8q?8q(IF>E.;.Ռ;+L >c+3I5vC:jBfK*O3]vh jlgY+2gK vY d.D`w'}? %uYH4h,}IŸjpPpe~t-G [+!SH젦:,wU/4?"R{|Fu¢^sʸL_>OI:鐯6x$@SŚ o:6Uk@ }i%%r( <р/'!aa]1? pR)֑: QyI.нAz6&@ZMSVyZp70O= ."CX0=x0ؽϚYgq ûSO=SjLeL=lf% E,XLeB25/ `*litSKעc!,mZmT5euWiIkzMe #};h@P0jE߇X[vۤLJ#(@gϴe|1 ùrME/ٺ1\:Hn3YϛBMe"٣FGBŕ$Bf4Gl|~_toMR3Yz։KY/p,.tÇ]Vl՜7te}2ޏHN*3~--[)Aљ7FLa&p@VC0ؚ^V˴.Nл3B2a0章a;p\.%hl' `>lO-y LdYm"ٙ ˥"@H*F.yR.)(7hl<[$$|f"ۮTB} X[#ǜ:CqVF4\@Wڨߌ&ƙkyC(4|r&z!|݄$,ILD0k ="xGOaWjcm(J<(B(D;C6Qn 8`" a1ұq@RƼi/JqhǭzXIph= C'snJ.5?BD%^<r!MmVeU"?ɥTwP̨}XrY0B"D6ؔ={muP~+{Gf$vF/3Q_cDfO2œjh^0 @p9MM,rQnX㬲 _8FI FK&WDgh^U{՞Ku ? 8hLgf {G_Yi;;ћdyz:X $ ~j11ӊW5A-q!f4_/)uR=H-nߪ՚X I;#Z>c"D?JWb6Qv ) [u &z|mkCpu%,]KɼrOʠ[ bMԘ,>npZL$S l/b(h^<;jHobzg?OG@4f94KgM(@HdP*܅V_=H(o9O ډ-1"1Nj haC\E^>ī'o B"6[?۔8Xz l7y VNuS&<^Dx {ߨB[Μ 6 *g80PK|8zi=[w!?1m,|'kSI#\E[ !u!Ol`VO1?K1M> dVr%ZDy>Jv}zF< 6ɍjYplB15&GӇv_R>$\9>/PDQ߰H0\BqO{%og;1] ||$ʊBn/݌ޙͦ;\z7P˻ Z:Kq[>"c =' n%o[ml<2i (y{Pc2=S[fyADLaKI!âZN6rky{2}#cжaR6+0*1X-uA=jqjlnde6Qz^EƘ6R(|_)OM$"Sc!(35[ftb T"qw#Ԥu[=ʲVwu4"dz,X>(;I`C.'wJe:Ȏ$&&hiư/&c^?FP(([o|GյnFP*:+nwsnڄQWn h|}Y sfaL y,#f]x%&Kʫs%@gb1˛ U rbeNbҩ" cZSfKkE_Io8vfݽэ2>ccZXw =~ C5謘=Ct%BF+w4V}~`PNJ;' 2eaV !:n`fNⷘSni͒ZQwй=]G)z'/89UPN#At>^:A]/TzBD%@fXsԀ{nNXe},jd+;QGK(qˮmS6|FԕW#Q{;`BCyœEɧQB&882C'֩*E3B;5x.AQv=Bt]<:cfcaF+b(Aw7YQjR!Yկ|YUljFg:/]L\OnUDm`Bhg3 S{hR};ݠ^66_ݛ X_e2g>V4*|8ֳ4 tsuz@׫_@ڕk p$5?z'eB:Li[.=6- *TQقP+_"ݛXKSHygQ>g[ UnW/EdAvlɯRixc;.cq pBI^-UKg1v@nbnljE6|E'_V#<m n)L$sy Ǐs4cg$eKЉìaĵFo v#=}4HK)z'5 x, l ,U5"Ӳ:jS>ipIl,'Ԣnsio#ML+玒?('7VN]R3ҵZU8J~ 1m]H%h{fq_z% h rV]xHdj *72 Rzo3a՜̑#N M$SK{~*EoEHS!V\T aPKd/pS4x]z-yu1\sĚ%泲ӃăRiTi ;H4'<sj>2O bD Hj.2Ll{|ܭ׺"&)CRڳv{wa{WV(yp!w75H;fn`3a6g6;.D+}w}VKzlwn;ݶ?nx!(,@OIϤl VIx?I%b lLʂ\o9ټ[r X2.,17{#oHTQMH EUm057^u_v!`n =&PmG68k 9V x3q_dFj0bS}`R G n)wj_]!sϮB/#>ػG'w1/(W, &`XEuV @Xztp1<77StOh?Oui1zNU5w9~B7w?e4zI@tAfo~ivj.wB4shWj&/oly IRQ LY6&ؓ׃tk+DV?س2w)WB:Sی£<Đv rY܅bRwSg".N-FM$#$KHpcl⿙YT-썜 ˮڸ*g"Vh:NDtE[D) lAf>0qT5.`1'p6>Q%R O-H$> 02W u҄^ cjn~l<d0$ޟcߘ듮H[ z}g*m}?FINxߘI<}%Qfe`=!? y_ǽS/Y3-kp7P=V- 0 ff}=T-=> d: 7,NtQ% ʍ><; o#1rM\-ֶ׏JP2yG]|}&kR V=xI2-3bk,/z6s?/s}!s EttGaf*VOǣqY\ra^1F $xvJ.t18+̇s ot># $gzXiA|}X] `~eM! r4,)DQ#Rr>kԥ6> VFKjSpmq;UvTJ9N Pzl|y0W*j ky|5n.yS~'KQRAe&ƹa@g^컓^ DfXXEʦN4I ZOo7w_7?0QLK}.;M2Z ";U5=:YqX %:\Ka4i[+XQ5>2 jmCHIv3Tɚch8fPg?\տprAEΊ޹Dkk#{^Nԉ6I ͳS+Oz=wiA\]J 46Vz ґ_Ar+2fvJ5ɠg@o|]ut<0>M%⛛pQwZ~$D&*6_wId*p,o"zh9{ Cn$gg7B,{vEC9d@O .Asr}BZ|4$J lY(rtvPfwb_uABp0n d/40?&b̸F4JMD^GUִpB{FqR`_)փ+dQ{$2fSCJ7 ;4 7lz XRkC"PF:8ȶW 07N;(Ɓ,횳S Wʧv.=(4ם\w+Rt(iU#$kFX,.ݔMYx437i2l+ܰM$s|֮{%t o__i 4匋 Apx&aZ츫4]1'>}W؋̋j;m翯ZZW3a%uCMg*[)O/%w^RJߍl^3Ig٩qY#HK9߼*I%yh t.s6Fw]WVߧ6;ʽHoVK N@mER\*.fbIP85ѻ.Dmd՗ TZ3bsQ3u=~Ji}F[xr)=8eeNV{TWI~dN9WLD?ȃ.ӝ7O[a;nv@Sx\m ZC8b+iꦹxe=_*‚{ޝZ;x=XII̖IF)1Zr7FaBnw΍?'_@H2o Gsw6[9\!EEιP020HEcڍ@_3 *&$3>oՠ Ag~C~$'S)Q1E8`:.=93,$YA_]$GKRUy@N$`ivaB{5kP:{e]wLП{jo;32Y 3Mt=CO{n/𘰞dT Bg'yxSOB P֟U\ԫy W9}_'?M۲q59w3Ʀ'"8⥡%vu%$ ^8P"qnB;~KMY3>$?v1fWp߾9s:=_X+7om+)~I`}0~tĐbVVm]pgP#̓2Kinyxϒ]]0 r./UҹJOʺ.dkG7fdLA‚ EMGՌ|&ر>f;HrUsg$R&ȟ[4R%o+*𠣆*[|Nh[t+\u8{ѱ_*Ջ|r fU!0V ~6̼4DyJxll&~cbP1nJრ506CVk*+MDe!ytvTgCѪ.ci[zNne@Fy@6NNF·br\M)i}̆ @UVodZ7x-jKX %k>-DN-ՏE.Ve $s؇aWvCCn6\Mf,8(\ME>y5ӌ YG)C'&hP5Y鞦~S7c*Ea_dKL $#C{:˭#S0D僚m"Ӕ NFoHlmtcpj4;si>{JP/y-秇l1؇ynG!2tVpSor  h>/!j*Y GڴL2=j3w8F}&i8p;´HAV^GEIjE2#?|`)DJCFm62E9A7f 0Oc8((S3P#!Qے4m8wMt4?!f1PBl)>a?@}q1}_j1M7{Jh!x[U!|:S'3orJr_(o|Ff3)N Y)S4U=5* ǗLj׿_Rb&}@ؘ}f+35iNr&g+<僷% TiDD xQKeUُDlGl]`L)mXӥλDv.B ,/EP{K zrqϨ Xt$ھR{&-4XUsv}"q[U:SJ|d,'RjτpӺɴ=8\ 4V@ӕF(g\]mrSg]W0`w=t+~fV~&o/wޓ9ՍZNɋ* K=qaS{= svB5yE`E"<([63xxo[ nZeDL]Ya&>E^D$,1'0XŸfoY;&ߚ)h嫽 VeڋIf46E(K]=K XoZ6=dw)įi1gr*U]㒥a}YeOq/se$>ОХ.;wN5R'iCGQ$jcM:8F8k߼mFjuiQ ^F0"QɶsY,܂cyeNnw 6dyߴťG2u+,s~G!>&dywBZ9Kd[Ww2?JES|J.kb_ľÕ< k6NXk(Pٱ,Ԩ*d+G,"B~'`Vk뮒7)Z s:_W3]3+O7gfꄁ`ǓV&ZT~"^gW%|wyqY`I7 0ljkpBwMjV  t%fZUӵ./6Bœ/kIl;<J1FsD^9X2Y$G >_=n+{> OWjLn ttaNa;Bfیa$u ,H׋[)TS#12jD Ws*˾jsY,i'b8YƭЅB7u v8>IL/z!''fg2:_SVnAa{&@LxK_!cr90ԧ޳n40Ŕ,BݞxaY^I{aNI ڌ9X~֢(1qh}8*r77nX<ѱ҆R6Vxme?F7Ia&%kXjD~KD돶ob/($;|ޗ%P Vx1^jc2dtS]9 S.d݄ ΞƖ8:3nL*ɨe"c 1b;NgVft5uV*ֻ\ӁDɵ8gT8%6&{,Y.!nXv/9y}&R51c_:2( W0jڱ=>$MvV dw[?Dd Tˡ?c4\厝lZY "98h-CʳSd;(\Ϸlε E.D{2}Y07!N\@MƘ:,xӅKȁ-!|E{')-$V;!QU%̆LّjXmYW톢4.=r$ E9jFLq.!vΕyą>k{Nk_7{h6uhc,CqoW>iڶ0"Ŏ|Cs͞X,MԤ؉<V2,[뽇^Qgb_l\ ʮ#vZV TRE |C^L6#RZR8Z1w9xXLg>hBnNaCL0fZrݜ<϶(lة87>Sy+Fԍe1|I>v +hɦ_V X,o*RNU#Y,g]ĺ_3,t6!)WĹ_9 \aW`nhvH OrmJhŨǙs9ug,[zPdk糨VT@E/!?cBZJNB ۃCXĕJ)2b%DS 1VU" N[8DEߠ?ۗdص.yCz ̭fHq*;) }/K|6gqvli}T{\lAZptXIj;ϞG{Ψ!qђ␎[nwWq L<7lSD("_@-A,_;f`r<'Qݮ2H 7c1cʧe$뒳w`sz+ CBРpJhPPG#<$0.)1c!)Hh׽- :94&t+t:EMYEo4,itӧmSNmyj5cIl؃CSX@*bn+/*6fᩅ4w%] x+e!kQS*>^˂D|}"qUlqf !<'q.WK\jYG_U"T#nk/ѬcĶTvBbNMaC'4w2BɀJk@/ LܒEթR  b5SN6hֽ,W*<7u$vs{A *أ] ,x1|1򗭅Qbօ:U䙿>B4Oxx[۱0n;Q3" t]X M.Ҋ A7*5wR͘*l6tY Mϕ"In[X|- !4ѠɃ;ɬm_ $ /iQ B1#žoPRrRtr|3)AXrn1:yY+@nD\.aT*h"w%mЬQ+>rRV"5rW‘Z]mTPiV;5ԞuZ_x0bi<㷻 «DqϲB$(b>vXm ohjP #0Z樽u00 b@ʾOYDcs v(mJQRJ*ߡwDHmvl2"rBٸxXWwsԂ~r #*kYK:d~F#\lr\R8Ӑ;[I"0$и+#oR)]=%[!iAMg2XЌxeWvfy L(-L)-QaAw@+E[業%/MӦ;u{Ip!4ev}&q=z_&dz8}}#ҐTahT(xgFˤ}BSրd٦  0ɳ$x4S Lڻ{nͻ"kb4r+2f[ ydVnC/*&P[K4#Sw!V}ne: ?; "X&E%2heF'Y{WixÞk,XouRUP~s2江Ho,wj{7g]g[9.Pm~?t[ƹ4:opTIU hX!+ C!>k;ƊpdvvoP33BG{}d 8'1U 1];͂XշW%벙QF@Oˌ6]:<%s!dg̎҇ њxob\J 1sN:tjrǨZψ>.ǢACm8xLO (;}i<⭲%سQ]ZIq"T!(.)X򡀋{5&+pV5܎ r!&m9UhaRb)\ cDP]fG&gX_6z%vK)&I@B\>믎)d 73vizc/dmrZSatB( |{oLF?MdaKȞK[JYgi&s+tզ`2gMa^ t>hɶjZBC1AK, ʞtKafF]K7..*r?mh`zE]an(w ÷]'w(`[)(;Cb([[Cu2oRR SN0Fؒw1SH[yD,vٷBZUu!u ݫ;fHV6덂~#d5K5I(;9h"poe jU2ıOBnoMCU\bٝB5R1QLHS ?Q@tLh-%B=]ځ)Vk2UՒ?r0we Ԭi%QxpTH@h` Z~D@^7%nMT@ǶbݶkCx? (LݧuF| _oC2L'k;(@s(­sm\t0yKl'FTUނcr 7%AM'H:fYڪqXm%Gl}:u"b>TigvBqP;i-l!h[BzL@dw=vM"[Ofk^7J[WT-^CY K q%j)W˭h]VT㉭Ao-i-'z5T̄.5՘cqb\n?} 7dS;ÃX TϭeTKIp?є6.a@Jf y3 W>k3uLP՛-l5K^~:wKDW^8_UUN;ͅLI4F8 FdJ!JkMUfi,$6B9LnR[ν!4":%?髯mvW +3eZ4K ,(_No?JTaE4)3)6Kw'F9!!Qۈlc?l~JC8;ѡAHQ)e!cuHe ǭGh(\fѻWu,$)/X]->ute:=(8XC;om?K³t'yWowH/iqwda!A,sk> Ɠ}@ :hx1/8~HH gWp`%(Tܚ^S`5sP70;tѣT.xp$e=pmCێwS5d`Awa6j{pC/|MohA*IU@2'LQ %90TwҤi# mY> :z!Ѥ/L>Mx t;/ <*+T]WO]kDp (46$Z#,ꐻPg(Ұy>Mt%O,a _/ o_ɳ-Y#p"Ҵm5ljI#܃ՀycgM:{khרּh'*<|z)H=6}6x0-qd7Pʑ~PP\?;o1!sȶI߹ Htigz+O;F\W"lkk\צ2VMΧ"ZgQD3~ ;D ~4V6F]ð~a@0Vm"vv ʎ~@zs;UNm=gV Y4i$ɘRRkO6֕~ViS̜ 1# YF &ŏ9aχ]yEL"4DJ^Kf.<}purTh:J"Ҋƒ6\V gݟnX˧] {=xK|3 %-c9{! ?24SHIs!-L6㖑bVEX_f՝ -lŸJ"-ߕfB(AԪj@43pGS. <TlCN]kERqbwׇ'#(*CY䊻YHOj >Š(=RND'B[X n'cu MAk(U6>f_q\LZ)FC"\[͚}*LoJ`N}!pEI[N1W挚ԗOSLu`W 6VClcO $.|$1> QB7pBe$}Փ>u^g*)>NҳXnf8@3U96==$͡b$nH zzm{e 9}AףXs~X}w29[0Fޞ92b^K_ϧG~RlaeO C#֚1gD!$V8!{y!;Mi;C\'ˀ?B2FO?V%Vظ\?T*5B.g#2(P,ÞPCL|'Sَ(k|6El_o/{on=hoM-}TVfOxsJ--ˍ%MϸN3D ѫP`JE0ޑG |i(@ieaZCkO&<~;zvD]6w'yG"Pn1@T# - LYɆ<;bao9mEܰ;9eNM7fq3a;k{p7NՏjfH[qܾu)\r| ^1oDMT6ͿK~$ 8QoPFNXx#^-sxN24jXyn[N_T9D=Wo7qWxzZGָH$ϺBئլ+ ~+Ap'Q%jw>kֻPEa?i#Ȍpgg'("71OY<;*xJ)%}( V䪝߾YZ׊ӿUT˺P)z! yәO+phnҡs=EdtJNtjR*M ]RI-t $CM)+Kwub߈ɚ5~Rp CX rl65O>9d7jN) 4F{D@= K\ Å!5 ZgyQC`ZX{Un#Ԁ]>JPb̍0 L;!%[# F7%?" {XrJ'Em) 9PYƶe}]S-vAnoGUz/t-h@k!P]ٚ:\ 8t[A]\ x[lrvM*X`>*M)DABWm7~GOvQN5[27^azR9 Ōdc>9yҵJ<NQZ.}Ȅ`ãOKh'{j"Pұs%@ D/ Jh苞?h?kؽ= d $z1ۀ{u'_y&g=P_.] ;L©]lqȓЪ6hFc=d%HH2HR֌ӿidxgE>dXO"]T!Dqb-d[:+m?E*wrN^ēlV`6֩F|#̴ۤ@%⣒zmHhNǶRDBTj9]5:kt4?ӂ>TCH:b2ilCذfOD^,IaӃ+BZ,V^HX̉7(]*Y>0!/ͫccKKnꅏBH ^i#؏?xF+v-}Tv?^e [^Vr=;Qt_(A#8~qs/k=ʌƛg!eAuԔ w1lS}09Mս# ɜZ^N $/o-t(ZiP6h*c\W/dQAmWsJ:?Nޛ`߭Upѷ2|VJ#ff!~'!z6ز;P=:"Z >+X$;WkBD8>!6kx_s_LsV;_|I*+'1B-;KJ|=tce Nr_gPY&u j;MKeS'1{yϸ Zs]6?dOf[ݿ}:X-R%gHh[}v 'h"kz+[.۾],FT T4gx?`];ep[هrvewܷdXUI%#"5NWj.VD)lGL{ l)ǣ ]TY8CCP_?jiy+${w#rߑ^-~AAs JQTIX Ɖ;Z;XD-L"!Q m^˩W Fbu;jTFA;-!y$ 'KH)3I_[/ΖhP.1Ƚx >:BnF|fͥ ?9tt.kȣO EMOq˜eM0Jbv&xeƏEPaQǿ83th{k7(0la\XpfǓ>7 Uۄq46z9jl wܱto#ٽ2+fAb[…Rwa ({TsMWd3UiyyM9Խ?VU5X cʡ.?!"T֮ϕ!c4dS%:;v솂Vޙ+c^j8~i|M<W2k`Xue+jQwVoҶ= 9L,+CpY,N;XSvwLX&a>!-(-Il!Z/9xRv:3RH 1n,Di= ^51uXTimc/Oh|pˣm+29!/Ŭ/Hb5,|'kJ ' ZX k&əuE jai sƹ{T2V?5Idr*] rzKṓ*? d:'"\G֤]q#ggx,beJjgl%^ dY*qw3%(tc=eFoɛ\`b8I Qq7LœƵKpHa!HJ3g)wZ@G t%3 ']sRXMکR ؚvԗF(az W=o8kV+G] >G^tN^P CETs){RȦXm&V &Ce?E%v=u3ГO(o*b%ڰ qY]_?Ȏf!j Huv:Db5MQ |q|ռ'w%')G}c\OI"4>4= cxk5:p5Ǿe1YE3 ~)&+{!t*3hbGk&,d!)K !hgC?0n:c!qSi~U# ,տO( GPr _DݭMq߸2qhL\DuVQ&=D믦04Mo~LyFĖd Rmţ'( *"SqDd%ٙbV46p3COVf`*nKC/iN~~:1LtcZFg|;ꈙAU+\XKp&>* >E+G^\~w/uf?ƛW%/9?& :OB]@ԣWI'۬eeoRE~Rs,ݜH^y:fAtg-Bd/-_ܴ슨;CJYT7BD'[8`y`m%[ۀɔ9}#n!ňdv*봉5`Pa@vٸ[XkO46uv?r0`Ͷ .zC]Ǝ! \OZ]r<@Tt/`_[BZZQ]J^2zTgdEZc2p@bVdPF2X0ވ}a1x6T[W}=¸ nxYr73#R7on<()nަRLox6G$1;KӑG~?j*Sj F~`Kط$Z xt$=-0_$cB {hV/tJ1Яٳ!rLؑE(/`'(dUua-#;]mOGMi10!BJ_c9sX祐~:II_gClf cB~ˠ\x_ӥ~N-ԔĤ 9K3HfzT#?L U6;RXB$'IUd$XTۍpG*w10ۙ 6f.p"mDo#UW5?oĒ|VmVيJ#A#;⬤rgs6(>Bϲeo=,+s˸o/4nj IU%_M_ }u7Z!+' x9I;eD{PC ÅJvf<]9-ckN3Q :0Fj@:].o3(zHsĂ4>Vmg2-t7}8w'-TJ)Iw"aΒGa,~fwSj ˙ *%K2U kbh`戄!gR^DP~WM8sLrH 7/gdsŧKY`~oNV's GŎo"hM$bFbs^dKߖ‚^ , Z pVm&o6]v LkyPo-(g qjWiÅhFڧ0YѠ9Ydeמ v- ڂ-Br2\6DOpxہvѧyf$>SbXIՖX' ["KCA6! mrݲW N As=Zk~$"g}.f ªinyB9^Ϩ5/,78Q׋ Wh8\^v>ܐx"5d6yIH/JM݀)[q+~Ib%QC7"/c6w 4˼T?&ȷ|ӱ@u4wjҢVʋGՁH|o Bjck]ނAu\4o>\;.$vV޶>d7lje[@EW=Qɪn[Iwa l߽&/}%csߖ0IH\6fAbH7 ř[?e vhOA i A}r-ð(}!Q&!> 86LG:Q<c݃wxL_5KjD PPHm IϐzMG[q;$re2~o@`JqЦLO~{83]FsK@Q ۘIv&tn"myj"֠Te߷ێ,c/v ̭2_EL(۞'᛽:Ta'VG ϡ7N#~%,Wp ϠS] 26sVg_iJJC"w /Y%TTu|e-\6!d=-Ж~3.Š)XyӼ_킥ojP ,oKpb(pDٹOk's;0hb4įfOI)׷ /!-Oa,~CS?wԺNy7xØMH{UR1}#^㴐4@/|ywaӻe+xvŸĻ2~BЫ? .c7n|:F@v\)]9Sy즦8 ~)$#ߗlT뚆RN `{\/iʀT~p(*Q{M)1t&{bDg5N@ a-(1/-_MJ鵞b:3Uˢy<_/s*sצ+&a{u$[''(XoϡR3n,ۿgfw~Bz:PMl9iQ[4Otc6&um<|V"c8GgXPѧ+9nmS\ vy[qK%"N1} ]Z@4YFC*fG;HX ߃IYg \QKCR!x+\N=ZUCEhet ]ZGeiQrL }͑ P-MX%lWדmB>R&ԩ樢mCn&Kꏝ]<ϫ[=}qʀ3zSG/iuXbX"Sux/a4WH5IIO2AX,U׳g=fΩa,6%pTlVm=0U1yeNQQƌ؎0YFʪtXȈ@ C35Yb`}' 3gi*8TRwDS+,x1]\NLDmԡ`{p@=5,"AHN_Z9t0x|=5۟B&1凣XT60s@\|q53]SP4VG]e^)T|-l^L%ISɢCh,r^o|h&^AE032r2Sxޚ`fucY?_,sl J2~h"<ڍYd./+h=p<ٍ UӁDz}|v.BWa7P;ؕX.nёJRV?24&A'?7GS"f&D?&0C Ewedu;e)y]QL*aԪ6`m± Y|C @,Rx#o,u2* ^2Ho00{m,^Y `d1J_0SUulCh"Լm7s. {/F/{(Ԗ[9]8Bݧ7|~*/Q3_9V x"fCTsdw@SQ ~QJ3dblucd<1-ئNu<5MȔwnQT1%eQd?_fO{sxq3\mX L LSoZv G4_9Bjkǂ&bl'Oٌ?S;MYqǴJHvlZΖZZa?-vÿbXSqqT>*|1;~T .}Zp9P:h}cJH? C6o=4]R4Ws% ,5:nk/;:-ѥ0X'c@ 9N0f%uJoi݉;lPU ~ Zi΢t} kw:^#1=V~W CAǙOgbQ2&s-uL;t?G( jN&#$K"HWa5\_y:۟>txIfh.b~^q vB,.6R*GC@4 Q;iW _K2{\`&?wk"Ϧ4~I3IH#7Z[ךKX-FL9n.ۡ+jfO3ɶ(2CĜo$HS Xb~p؟zB=ia23ҫH@.x,*~P_! yX+^whTz.3Mt`I T˘@W׫m.\S<yZ}| PTOJK7J^ бݷܮqՍgg,a.WC ᶆ̇|G쐺 5!%?zzt™w̴<m(m4"ζv;XUIqcbɖ8N͘=^j6ğ9J+{T$K묝=ġM(+/e1-_/(D V:q\딗g92BCTiQ %Yᩑ'\Ӱ?vRJ 5Xu ?0q$%8l4JCh!]Nw~Ł~4Z`%^Fyt"j%]@VpvK`F2hE@(QdnZ AkM&w[,^~W-F]6a2S-$HI$_dzdo8Y4ҰN/D4>R6bKf13}Rzllخb?p<ɵ>GвGMq+f)0h^`$Oyu{K0\a88.5eA#@H sZ̲\s=USp|wURͶ @lc3dr1 q~+N~$Kw]A~{ITUϟ38*HPQ2>Ƹ@ks>bk++-bC)Je`ؿ G,3ׄ8"<գNWA!=p OuمOߦ"EMOka/G$]+[9O%-sJnq~E8oJ<}i 1GF3?h*3UFA'8AgϦ/g' ˍcǷyzOb62z(::"~G>5YI6ٷY--K!f(tK -tsd?Ԅ`)\y_q7fKd ԟ>_8^[KPS&)~R,k-v'c /$+\u5ԑfKA}-E4ݐPbK͚A" ((c4UT%=O7 ~4.5QcٌgB2wIS7?NR3½8b)JCH(ٍ ;,}p"7yt]dqgs lY)h&_*ȟv?Q4i2a. > ^{Uaϟ+3yube)ۮyP3Pab>+3fvm`*HR2n.Рڻo-k*~UVd}~ʋ׊V!v@A$e) y:'G]fV>k3?lR~J*c `Y_E/%7˥! #t'~wnuW<Nێ(]izr"RkvyB`=WB= ,Fo^^kf o;V=oR`I dNx]"<|{ac|X,0}3xڳ$N72LqOZ:h+Q}z+ǹ (] _U9NsR }!t#va m%BV<@Bl>Os3 Fi;*u$Kߋ~'<ג G넗gvg<Ȟ3誉p@zbhfCϬѨ˫zMIґlC[ AP6nIRHw.=p~6^;eޢHT_IM$P~, “aL0?=/ʉX/k![Vd2&<%ˠ&H3TTA6"w:x-&͙CUR Z x@/;5Jѻ)EZY1' n%bCsRLrDJ/rZ=tOpȊzy/2s^q,m_B8u=Mx( n`Œ#֛9qy?ָ D3 ;ēe;!a!Hԅb;;QYji5%h裟ɢD$k6cSiOՖq'_ 3;x΀lzR ^8JAjdO|"G3v^TiqLĕ(#L8)M;B-k%5 h~ Uc^(4CRpz1lSW Cn)9`ʔ:gj !ma F 0jN'g76-([W=a#C 0SRqON*Fw]-x> xh40iAw^/Q\L|4h)2j]IBbhsFuۿ~iNl}’Ŗ*Vw6Ջλ2c@CؽES^1v!1~r.VToZsw6&&*ˍw^}G)ކ|1aK.UzP(>/0O\30^|RͳokO #l'BdݘE^*J 5Xݏȍ()([Lud3M4H2qT6 x՝*s<4Ev#"% +Dg%hB[)(|JtS5$s甶5nuly=pozB!G-gM=+9Rf;.NG PP(ٱHO*C%hw _Pd/RLf|ˑCɔq:tn:>Qy/E!,z|Fq Tَ bRZdHUr;.SV.*Ӗ|%x+3%g[P,eCo3?*F(!d#9K) l ϋL9(-V_)&?h !84>5ϖ*L}(Wg_LKHq+e㚨jz3E#$[ U-÷?A8D{(SW9*!yEFMyoWLU|Sn{t,̩du$3i.8n'rpY[qL > en^kj&}($?U owˢEN_cY!ozM dFH9pA/ML:}mFW_tFm SɪY ps\G)򒈡BX%#,+:Q0(ӁlYno4&؂{R2ޔbX{QDf4&۽N66C#g/`%/Pv2 M/C\uq"ͫq 6ST ס(j_hGɼq(v~rR6ޛAx|TUwX ?ڸ>zC| PF3XXbbh7Ip,"av:[DޓGJrNpKLsҙ/Cꆮ7cdkiTE_^.[}=N/;; b%|0'L%^eg#r jk clbR~K[P˨fM#MYTR>$jCDiU4<"2'֖)__Ήbh? \};ą΄uR|f,-;~J4 (؄Wt%bex ,wYKhPG4i&[OFj5֗-4XpZIr H{_W:Uqx%:ZnSg 1\#܃8D$znBLU _Is&'JqKٶ0$8p {>Jmnpb;kaقfM~ަ_wGfrDʔRdq"od_q'd9K;/Һ2(y5Y9 dY7e@Cz[T*+P9>p2#Wə @K^h"ꔤێ|: VU/GƤ~%UA%.FuML7$ g<‹e wcҌ5Zv17k5 H(;thv6ɮjp\-ĥ[=Vzm֣)ieJ%{҉ ZQ&Xhw\( OaM<9#[Tͧnzm)2jPLkOa @ )o(A5 Lag,A輐օ}dnTUʼnB2E}n"P5Uy!]vMw`v' Ԫ9+STNFwIHW{\rZi\7ws|"GK7i $/Xs9d}놏f]g zfM'^1 $|<ؠq,K.'P)dG ({A |FB5ݓ$zn ms~g":ɗe*`['{StoWtx8YY,w)/ٛ\k283-okK=<5$@mMUSa*"M6fvH]屐ː,0@V68@@ ?L.O!pl4u+qD5 {mr35P(q 'EһCI?,sen'R$GCtXeVKNP)+}C[bQe!7˸ާ~ap8lGwZ.BJ=Vb\O,tO.ғ~6 fcɹRy}:ur$fkweKޢ>NJk2`0<( (dx_u)O6#j|p%`}FXۋI\N׏ZNOc@luhT I&u/.Je XtXTp*|aP?|SXmtCcE2c"{Bܰv\KH"QSH<15n" ۪͘or"q'"0cFmw3=)څ<1iTQcm](/ Z4U"5OπyR u/P{W3)c{\th>2])]djr?ԧjd#2Gm"a#Mwq=YϛRO*v7ΟᕃTL  w=6\ RLbŏ@D/*H~RwU2ْunDTe )M#n&OPSLv& cg7F4:= 1, 詭%%xD"پ}$`PۓWQ-A(ʦoe8ҭ4F-0xkT휮q%[,FTJ\!e!dVºh# :UgXzr *]/44!$H<90O4Դ>E %Sc0T(( g$3u%; 8=-hvϯ} V΂g_Pyȳu`D0xJJ oecYO/InQB|0ͼ `KFD4"%"gØטIa-dMlsP tKg&!B2!w1 tW G9=6#ż[G|93xn'2@qq"`)vM>etd=2X[څ&%gZ}v0ܖjJd~Ӿn'RTu;gvnЩz=ae k]'|T+mFT"$Y[x/#4iR'^|0 gB~.x%$"&2Y`L`%L#hr NH "ΑKcm0=r-s`^?q\~1 ,rqKwHbeꑶA|U@53FmLa:Q7yt+T{oBk}όE=پUE B++ m/L\ūIFO*0`;L{+ WDq+u&(SägyR > 8 { FXM/Vy1_kQH-#iW[(U(9oJ=rw2Lx߷ZM {.BZ$6a D,ճpF6c}~Q 0*AswztB)XLsӪ]b/-^raGKns0(%Q/ci_ :d75nW p/#^x( Db:Hե\JiKL,'f莻8FE0X :e"-A[Z gi XF6BZI)ppdH#&f~?&yq81.'NH\U :4^59sUcmswMǛFB=\QK=r†8 S_.~b 1w!t]#4 0t [\'gՈ,j峨 ስϯ{YQBS/oF?yUQp4_0 &P^'Fo RCЬ{]+~T$_`~FO/J3WEC-JcB٘6Ya#͘7ܒb&+,V?@T8h= fSe%` VuuA/* AxT)L.d6~_b12|=X(ϋUTTd؆EVR$L1:=[+ ZZY9u4,J71m*жK]FټwpEA *NqL*PTCvt&zIJϬ|tQ/XR>,{j331rrxS.h @=Eg? >Ձ-/&f?˴&gKf×O&գH M ^`!>ѮZ4S``AKWs9"S}"]ZD٪U4yՉU2R4,[zt7XĎmA+q+Zn^Η5f| )w[}7uY9`Wq#NlQSL[0|G|./rzc2m?=fwbi@N<),YK*)%3FPOm`y4K̅9`GfYWdSٌr#:$(s)r)jxbD!$\8s֠Cfz~;i^=)2+8LA-R3f,o%;36}$_'wK zF﾿(d]DPsnWuad ~jj2Ke1)|'Peߓ'/ruQ2 W͠# 7YMY[ (Z(gbbΟ3'' |΂ğZho7'81jl P`Vh5P{Ͻ2PioM {{1]<6T-:ޭudϰͺ8dځF{(cK-T77 tϾH1 lg,=͒fQq"Qbky$q4n~r .x'bz#6hSYQݻӟH9kK[ЍndW@˒N,rn9BV(HAD4cjb%&0kIs#-T*}?9޼m{~E'b󕓞ߏgȶP2L` t]L}cj̅Cc3em:>V(dgfGl:2cySŲsz:NC(Bs? ,{LK١RH)N/ȭADWxaFв-][ S C -R9y8xMJQdM PMmǿUɶh֪K69;, g_tA꺲G<2 ?xV f /{1-bR}$C [X+A0W ~(8F/]+ G6m YZ