pacemaker-cts-2.1.5+20221208.a3f44794f-150500.6.17.1<>, ؉fp9|a d[h 2.^玱9dh`2Af9K!H=ƒN@szf.PUK7l<7{o&D,=B,?uar/uB5OXR\A5A_sdP;[+bEdn1M{@U"st<$ԕved&Z[-(B}͏;@:𛖼V9+N|y3^(-YpBe>A ? d) 7 g. D_|A a  d  6 _.@@  P  (c8l9:F kG H I X $Y (\ P] ^^ ɰb ~c 'd ͫe Ͱf ͳl ͵u v  w x Oy ;z    , 0 4 : |Cpacemaker-cts2.1.5+20221208.a3f44794f150500.6.17.1Test framework for cluster-related technologiesTest framework for cluster-related technologies like Pacemakerfh01-ch3c RUSUSE Linux Enterprise 15SUSE LLC GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/Productivity/Clustering/HAhttps://www.clusterlabs.org/linuxnoarch :mHu tGu/x\EC9 {nrp/tHp3l--*Gf*J#g9c= ^EaZ64k]/C$ac.O&Z &T'=?& '- }E k ?.g& s\d ee  q6ED t  (c/O"V% e[n g } ( <  NM M?_ o!2'B&$h4AoSS2{$T==  i+:z s g g " ^l uLB8% , 8~KIy 'OK x .pF(i(  3\ ^.!/ _d'MX -p| z[,#^ G 6 <j 1N"?^b ^$V  9"WZ Y %   bzW D&x+)s ! "k-5&Bt* SP   : ^uR Gl9/b\  }zu) oAG z%Ok S #n) +:+` , k1 h z;HԠKf)Rd%-i Y e2 VVP o  `)t*x,M %J' lZ)Tl'.% 1-1)))))))Tr\TSV%l r[( Fm v^gzp61LMIIL= |:dUi%nS{.P0ZX>'T Y Jz5M].4 } C u e . K!  3~^i 3b| @/".XNUN$d(!4M ZF*2@8J 8Y^)/QGO(Td2^LY"9uW'q|@#uuKFs%ԙw8=`y-%$#<pQ 6>#Aw.--:dj C- 3.c kb{:~, sy:6 N) nZ/Y,GO3 |O "{  r"\:"e /UF Go<"V$Xf.? t>q "&p23&J HpB}^":6  )i c,.9U/c))OTQMWAvg)1@"v Y Y J i^g [%) [&s` . MR,c" %&#p]T8F1\b 9k8-  - Ih}~:/nwNT /" O p+dm 44*'o'x P!ZQ-eF G wQs#" #d) '.j+.jA2 W |ow4-< 3f'';h`0OG?sh@G\< E/LhC9uMf p C! p qGi%ls$ |Y*n h^?nBb<d4'U 8J<Z"Z -  G: F[ )JQS Eue\F' g)))))))- r 8 {!= b"Ky"1I f!; i  Gc# >N6eN$1 SS$N$1)8! { O '~ 3 St81- ' SMK$ _# }`4g,4 &%3+w(*w-b},<",D&MV -^''e$$e ' vv[ +#O? uuuy~\m3"U #)^YDBB0h` 6v4!D+|  7F  i 56DT4Vj=Q)$e9R6KB 8j: RY> !cOMtt  $3 1!!1tp ;2 |X(m4oF.yK[w 5csc 1|?K' Fe\}eM M -(5I+ y[ 9  `taTaT R$9:Q9ww9*^"  14U~>UslcB/`4 "$k k;[ g$ 5 $ e ;C{#oA&c**mok=w})e,e,,*=A!  L LDJ?U+]?;[y{o}o'k3ri7 Q0"I9 -;4U}um,/,/,/,/,/,/,/w C};rx +X!/%}|u!!!utQoUeM  7XQ,Y ']51a 1VC` B>1COZn C{( A w   ?  JGF*)wp ^?3\K '1u9 h  rd  -Ol 1J My If) f3  '8w a2"; Q<.'<%} [ 4 !8 g  -wX,q;iz% z{m \n~w E! | ]7l6LMcZ w ?] @B(N V je 9c  J~ Sta D q q S3jt sHbbY#c Bwp5uhGC[SzU" Bqg L jF 9TIx Ij{)d__2UU[$(3 quV cp= 8 ZW\j u7, ]! & R  +  K *a | h6WN68 <#Q"=l/Va 1', !j  R'MXS77Vk-0-0-0-0-0-0-0dKG77%Tq!<6! jsi!eg8"PJ[drmmm?IMKc|#%Ht]#T-dO ; m< 3:( $<X ( = n L 8  Z}j@{999@-H(-.DVDc :N :!l$7$<ud4y.]|$d"#tR&O4#LClD kh !  iywc)| t Q)=ONB0_#3~ C{Ձ^!C 5/>u{< m5c$![^b%'5b!/(8]$7h_g*Gý;~:-g=%1'%]!?KlLT$w+*;@'=?.?>=?0LML}E%DDhD>:=>==r7a7=o>   %EJHb +|c&?0O  P+&԰=   +@^/E[t+G+D&9429|1tJ#,#, V Yj.q,>oP) DSv3tl K OwP)P' Eqqo)wv z <C #%S%S&"b##%j#"b#?:%=.-C%S3I* $[/JJ$gR@s""cAE  i?,(JV=?$Lu "!/#]\? y ~ :_O z2VRzV 2e V$#%&'f&(!#  L*4B& 3_\.&EL  4?1p Y wä]s>LLKKPP::HHGIMMJIE6K x<;0LPN}#*?T/T"""vvvv{{{{ % % % % kk b_ XU ^[ _\e *3(,  _^FX g iJ,W89Y:;XH9Y:;* iJ, hI T`abcabbcR T S ]ijkljkkl[ ] \ W YM >  Y XO8)2K99)8x)2-9l)%8 9t.p|74 DŅE iC"){,}!%iYg(V-1yD}PURA큤AA큤A큤A큤A큤AA큤큤큤큤AA큤A큤A큤A큤A큤A큤ffffwfwfwfwfwfwfwfwfwffffffffffffffffffffffffffffffffwfwfwfwfwfwfcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e318f59ed9fb8a37a620df13243ef30d1e2e0814d7a477e13f7d48ccec53dccdf97768b84bb5ef60388e78f1ab8328891139705aac2ccf015f257e5fcf1eedc6c61ce34d9937268bc84ce8c5f703bb23621fe1f6983954d926e422641903fb83e6d66303c05e26219d8bb25ec930698ca09df4200333d9e4b624018a7dafab7b8d712f54a680aab7604db0ec6537e624957bb9c0965b1693c4b7617e0092a64a005813dd00dfdc6112b38a1de8672b2f3cc9718e93500f50c53c71c09ab3ecc0f4cab36b76845c3cc9d310588bc13598234e8081a612164e97fb375f96e000d72e466d2e1142ca32afed99845af51591be8681923d4b9463b173a8561039ca508da65db54abe41f20a8f05ffa6e719d3647c76a4839b7b9dd58f8c50521957922830d140017c4427ec9060a86eeee308fca6b01c2550afeede506e47db4f24fe69010f44378614f46a385a59b04af64464ab0ff4e238e9883f6924148a9201d9c2775873782a3ddb0d74713052946690c7591dc3079982c1a4b30b9604876c14e946845697c9ccf62555d9e85193ecd3cc85da5e6c3848cc44dc12c7befa1650179910993597edc22f4ef4584da9d42d7906e42e99a82337a48db639b2bd7157d9556eb63644aefb8e9b0c020468fa5e049d84c39776e7ded7deb12eacb11d61c753f39768336633a288d336f9ce20c1ffa1df6f16cf100775a9a2d349fe75382fd15d4d1dd00f27baf01c1a04485bc5e626beb3711dc0a881c0619b1f4e29d79e8960716cc0fc22254791e1c4ec9aa5055946295129fb359589c4f7824cd569aecd2045c6c0c1ed157f8f7eb24135a6b9e623c0df97adcafca9f1c0fbec3758f3523ae08a122d1aab5d2a37baf3226f1430969d02dca242d1cd24150c792406aaadaff6b86bfe48cd0d590491583efea592aa6f197f39041bb7658bcd363335267ba97416dc11576675f11a882c073028d0b522b20032d40701663fb9a47c9829d756bf0ff142c1ea3cc2418e68074129a84f53698cad21bdc07277730eff15e05ce82af8a9e20944523f5f6dc222c416fe458880ccaa538054662cc4f84d4ae4d2e8d2bd8776124d753f6e7d33a679cd3409443dbe1503b21ed96769daca781a753cfe210675f4d93a75863f5b8c16df26af18699c9f727f1468dca2b73d49cd1d5eafc4c625f5811fd34a59acba862a6a5dc08c5901be684ff331e496e104a24c76fb4fcafbaba07b44185801d82c37cced4b41ee64fc94f49aaba2f1710866a8b6121da5dea4cd64d4ce348e7ca34345a8c01239e641d3533da6dd47f6ad1ed3aa7b9cc723ce915f5624bf008973bb0e1cf59c9a19110d295d501f68ce77ee67e64c1b32d54ecb467f2f057e0f5d3f38b6890e113c9d6b370ec0c540770b84e462554942b123a70ee84820671a237a22beee64f70ab87a17646085b863fa077948beda81fbaf082233daadcce64831b753c4a493225733e4592b34cfa50db078900a2638ed169ba600b3a669dd0b2592b6e2419e0f06d8ad1fa0aed070a2743e4042bedfb8e8b5df47d43c0ebd0d662d9be6959a9ebf14c082ac8329b071a6061141933ada3985ec03b5f91443ff74a80a99ac1a55e6b105525fbb744307ec00024dfe6b1a56387838766682ee2bc2fbce3fa7157ce5e8cb7e1c5f7b87538d143e18a0daaa4fa4ad08d8df4133beb98042253b9d05e39d1d6bc78ad2e8825570ae6d9aa69d2c7beee57569887a93636229605a103b6133eb476816332eb48c6b7ea4342c0002f5e7e1833eefb88a165c3459fd5932a84325add5b802ee89fb611a648619b9c3bbaa96b40c273a122b4a9c6ddc1b720e0a1fa8d5c2553edf6fb0a06120316f28562d420442afd644d2b1ddd3e604c2dbc64897c5930e554a5f4503031569c16cc14d0ba43b131ef6127849386cd06e4bd4243c65a2986de4c13fb23c46689ef3294c29250a480f1761db1e3176fda004c29bfdffbc8b473f2afe47ed3d3d29d6976fe761b3f2d087ddab0e898e1980f99a400c1fc029367821a989148729adf4ea5c0c3cc8dd4c0fe979b1c1b77ec44536ad6a57efbf5641c7b8ed4805c09a64976cc6767bd435147bea7ecac49c1fd366a42085dd64748b9191265c8e688dc49b96d4c3bd99662630e2f2e8d03a4bf161dc9d61314bbd7389489c59ef5c69bbb222bb4e6fe1a0247ac73163c4c68971ecdc11b41c438ab21f39c4c01f8820fc3f8e53a340ba6d2d723eecbf632622847102592d557a0e8a60d8de2f080f2ba208fbe74a204f1ba980822c835ada81aa8924cf35b876f7b459ffcb743dba25690a7f17275bd302c2c70d900c207a1b0e9649e8d268f33b8c8858786bd8276e6bea371a8f8ee396fed742b5e660ccd896126fb557e2419c67e4abc185a5f11afd1be1cc103ae81f4b89d9c2abd49ab8c51bc274b7c771f024cbf2bc9049b3df646650a0504a8a3afd51ded35d699eab041b92d9172b3154b35d70520f993d269cac02cc3d4fe547077b1658ffb8ff290a39dd97bf2a1d6eaf1b998472335954b934266245873bd8b9bf61a6eeafbb095bcc9d012499cd82a813a3ddbe230398730b569df7f456858e92dcecf365b4b9c75aa7beb62a70c9132f1329f92e90b2ed56feb6220837836721077689a4820f4241aee35378e63d7180c177374c57ae44873cce3823d18c522c084dd6de2ae62fb9fd3feec4d4be043443a260997928b1b4c922e7c13d6ef40f7bb1f56badc8539c5ec436a6816107801943ba76a7b4dfdf5716d3f709d4e5e9e18ba56ec521df1b63ee6df274e2d59dad20f932e77ccbed9b2e5a78c88eb76fe703959d171006b2b1c04666279809bc6984e72f82ed5f163f2b9bf6ced2753a410a637511b6e3bcf1f425a177982e4112c881484bd61b9debce74de22166ec455537d3f53b2ac1cbe2cd5fcb9fa0cd4078a7616ca881de146a36d39109fb262c369c9defe6a6087b947b0fb3e536d362765adadafebc2b9e8308934331703d31fd9610c7c24a88874abf43d18c15f4add1aaac29bbe4b9214989db5aa9dcd78877974b6eabf79e338dfee008c9bce250fd15f0faa749164db5024830d48f6d47a29e28a6773105a973464d358a8c6c8835868929da20a1933da9491ba32907e535239c76d76fd723a12221ae7413f60c9ad44eccf83dc7cc8e0f5a42351f4ef52734df8dc248a3980ee6fe9d580c336d88255bdf452ea4fc43f9cc2d84aa420b95b4fc0326669d44ac0154734a0b702f3f2f331f318341ade61c4bef8089e78367b08772bb04a45482cd459a421d954f1bde672734b7c980ce09520309b788fc75313885fd02dd3173591e125e4043db0bcc911a3466fe3f9ff5343e765ca3ca7bf77ac9946daa4cbe68e8a8fba544d5b983315a984cef7d78590f4ca622bd8be58401d20bc9cf04ceec81ed99ae865b276d52baad6186c8206c729fc42d5cf5af3ff994e645d5288fb3e618d340516d57ede869e2966173edb933df933c1888c3d917532f5249e12a702ae63771521b36b618572a566b18d1386e68cac7f9812e6631647234d35ca4180d5ee9cbbad1ed92a1244e8c625d25153d9f655253b8a35805d2adad4da45fb8b90d9e7b8b7724ebec88b77e8026d9199e1a5c127ead7976b89d87d9c276aefce3e5466499061f15c67a294abb11a42e07d1e7abd77b8b0582166415553f30964483a0049af61cd1191c5afed6517e0a9a7e76bbe866cdaeef156989e7d376003d1d9332aaf83120920e17a485aea3ae798e91ddffce349b1a4dde1f5b2e9e8aa9e494faf3ab52a0dbd678e87d60e905bb6c9513418862796660bcc7c142971c2798373617b6054cfff657adee0a80a9f7aa9a2ac7947d923a15bc82f0275d8ee06e7d05ad67fec8bd1440c3bb7796216c1f0cd53852971f75df7c9c3d7dc5bfb857242eb226829dcd7be2a7cfe876e993c55525b6d095940cac7f7bea228ed07fb984431ad92bd8382ed034e1f130d0b74f75e0652726bed7d7ec9472b70e19d67f264be62d0742136c84c9ee92d9bdb653b8c5356d213903b463002e3ad59a15dc4904e05ce35fa372f57089f9634fefc142d31986eb2a5e986621aabdbe10c0c33fdd1c1735a22c7986d7a191359607ea0cf7526c8abb21702e03a5b64c895754a9e366925e2b892963e068ea394b765127fffa094af1522e98fe86be3fc421269423c888591a5ce7f39112dc1c5c08d361b5eb6eb00c973a70844e9b4eebc98a5e245b181b80d4795f17d2386f93e69b0d05288ae4ab9e25e4eaf1401f185d15f2a949eaa1d3512a949a474deb897c9656c1b8be10079cce29ba3324a5679aa0f5d8549a944ff6cda2f6ff15ebf806029b85ca093aef54d7ab2bbfe1a2c953546b3c8778f801b7fe5357ad5db5230e773cbb2985350c7b1b27fb38e9f89f20a2da05d04aaba34d9beba242959f7323d62c7e475d4e8eeb7a79afbbd716d61d52449ab8dc174ca175815364f4f6212d9cd6b82f19901d11c94462f611bc0e743f0651d27bc2c1b16235b25f4c17c7c054840a50758c6d9e951efed96ffd6b33f84e0d62263b539459a8e359c7ef2a433233bdc0b96eef2f5999b3420f95c2a416162aec1f490de41ad755748cfc9281009b980aec05bf233d8fc91a998e183615b808b6edf792fa5ea4291a99a90609c2e00c041145115742bb12493a065597924858b7d7c57645e9991e498f0894a8f6f6d68979bbe173652a6eadb79a37324985294eb724843d7bb9518962490d87b93de9e83d68a294dafa70ad3ff548be9076d66431a76f1d48355294d333cb6fe7c340fa5c7400e2d79fdb6185ba46db795be7e8a5c4ce88143ec72336e5343d41f1f699cdb5484d8188efd284788ae59d77ab29ec09468c97fb419efac60003663540f84594344430f5173302da7b2e04f333efedafdd648ffce53178ad4a7adc389b97b6cc4719f69b8418ece121f3ad37bd717aaec93c5e8de0541d7ef6399c76899602e861a6b343ae06c55e67ba6d31c144113d76ed03eaa4258a1f09c0887614264b54617ba8983ca7e339dab806fbcd17ea4ffac4719d33a240fc2465af5870cb62f63d53f5535d9da76d7ad5bd86d429f120dd9acb9212c135ad164894083d0fdf08a8789188d6c42c3bc524878b66818cea37075179089c3c49c3b1e8456ea5123ff6cfe8ed6cbfbf32d5ac76722e199b0e50295bfc9497b8ec2dff8d07645bd99fd7090d581cadd7a420a959f48e5cd94770266214c4bf91e85983bdf26a2ba3324aea0968ae6d834212fca6f80c8b7d1fd1c83921585535f82e45821ac3aba11d91de680ec392204b84a2539382ab9d6d107b37a2e9e4c7d71f44056f1591b65df34f898979ddc143c8b30324d8dd9751735f55eb9802d0e245ca0ea13c57d98e26459fefbde3b4e160ed1e95ede3cff6efa35d0877a5df71dd0e17da1ce952c1718a910116c81515f9a6863c8dbc7a934a98d58e88bd07dcb5a96b45fd11f1e7bde8615bf4166ed746a0464540c310e36fe638b02c6edb6f12b7e679cbf66dd49165610676f746c38b8a0e5a4fad04770179b0862ca32d047e42e7247c672550e77f0b65c04683477f7aa8d7bc8cf3f2f8b5144ae1e85cae6b0fb254943b13833b54f98c87a71255e998c9a1203362f7f08fe2d58646bc8c7aa98fbdbc19bea3c60616d39e5047b7d6d8fe8f3f288ce9948742570d7dc5faa10cbe5840512f3cb50cb5d8d6ae0c1ca4876bd8c7907f44e68315fa604b3c5b45b0785d0d4df1de441077f1dd7498f0b9917f5267ade7ea97bf97d1c3c8d5c0842b1aea9aa2d8a5178e3493221a9ac748d3ff30de3fbe8793f08a3d1fa0ae849b234002c28b0a3eb079e7e5dd7359a37e07cda1bf4d5dbc8ffc73a0c53498a9696afdc57b745911adb6d9cd08ee1d5854189daff97519cbc8462bf190a8acb1131d369b0aa57f503677a2c1fd7c3cefeaa668d62ee22af43397a773ea6a4550c2c8cb2c6da9a94971f7ec54391f1c13af0a8a50f5e63ddb8888124fe9caa306bab422bf9dd7248fc9831fb6bf88e093a456d90162eb9283d80c4daf84341442513e18ecfd51e26a698ef91cb25851042695cb10d14b0fa5c40c3da02ebe3cefc03a70ed3a91fd59cc987fba133cab59dddd9596d9daeab328184747920b2af991c87bcdd066c582882f1463a6d4114f3648282de8fab836d642798ea6a3e740b40da05dca35bed270f4d3b8b9a5531d9db7ea7b57a792443692f74911fefa22d72dbacb28a29426862bd40a926ec15bea7cbfbc0b72f361823a77257d16d45faf887aa7fadd9479cab7e8b0a41f72b8ff1f2821250a80b356971bcc15167c7c8bac8a59029e5657acc520a644a658cc603337c3f6ee60825d26d42132a632248f540020b5cdae4189277ea938d42431a0dba95e8e5ed2d7ca88ef539ed7bc71e315f54f04a4fa63e3ea0f3ec64e973e2e851f04d8f42845ff433c64ceba95a8d498e8c34105e5f4c353a5044c9b6b8c920c5da0a285f806cf7800974658861189a650871f1b247f2df7c655e76b0b5b1f4b6bbefe4168114fdc51648e85eb31da1b836a9b2bfb3e822895aaa50715d3303517ee40e920dcc78008aad071e2b17dcadef0c08f2c53bb02de629c735225b6cb252eeeef3d972bac4425493dd485aa6e4c9964aa269f793e2c881b38d27ed393d7cb0985aee9d8fe31090cea805032a8312673947f2180059a72b8afa88fe4c0f7a8f213d0bcb6c6cc31c2de9123b2ebb9bcc5ca9c4c77a5cff9ea10d40951df053aaf17367da3441f46264582e9e05637a4c0e15a17c078708ea6f5d6363ca32e79df79090529c19a319f2c25a11867c368bd942a42b790b5f41ccae61ecc8fa2021817fba40faf2215dc91b7f46f9a9618716e264957579c328243724942a582b7589ab4f15d9dc9bd12435bc114500990c8875eb28f03ff2b3857cb3fe27ff235b51997703556eedcedb0e4c5d09066177f3ea4bc24f970ffc5fb70c7fe189d49a53b06b34d99a91203e560c1435aac5bc0aeeb9d8374bba3e005c94c61991767bcc84ae4f55ac934721fed2fc5fc71f900d7d84303e82d56b1e2ad6e5bca00ca71a26e5abc36ba8e9c0cbb99a64eea53032b1eb883c27e2d17b2b5beeb306175a248bc888181e6ca9a1fcbeec89bee53b32df9be4dfb6ac90433f52f440ace0e3b8c19391d6d4b218b96647462789c4e76a2a7467c368acfdc98cb9178a3e773f50f37b83885cbce18d4d633af083f78b732da99ec086f4aeded8ef72e2f951e5ea29656273b3d5de872e629954cab8def682fc98923791b2e9222bfa2fd0fe3924974865ea12c0edc93cc5c3f5c44076f890d3f3ca74776951b16c3f7add4414d5e80478cfd2235d944d10e7ff714b55ac9b3ce5d2cac0873858abee3d01cca8f34f5e67191276eca5322077701b0796b2a3e55fbbc87534d6af1c40396a338b513d5fb9540a042c8958a464a092edcbee7187c43534743f90446ac4c279d176796991c2f7cfbae3c4844a25adaed51049a7c627d553b54a76a185f99131dda6590f4ba6dedb41616eb0aedc40fe8f2c075db333c8d195e675d2d8e3a02b6beb1609cbf280ea2e29c0ad301c5f752ddca62ad209821a91d50f741f3b8fd3b637491164c33503472fdc6bb6df7229f6c45014ff31de18479aa181b3370be88e39bfa101e3e79f3bbca7c985796f5deb74138876b3ffe89d4a67469f97fa099523ccd73e8c8ba4f2055f3f2d1ae475e8c70fe9dcb51bd262a51d30b6f8ff467e3db0126b94b850d41e137830995cffd97b80644399e589dfc05ccaeec167f991b32b3850029ac27d73f964602edbb06a83028043243b6f4ef29fe67f73ec6d6a5f02f285cfb8c141a180b835c75b140d3b039bcd7a182aaa1629e043ae3a0c8825a6968db6d3674b5ed9b12d81ae489ae612be24c963924e86ec9ddc97a9a0e185166528f6ae5cc69c00db1928f2d9e94228eb26786bd3e6515811df9f83f9b8965f5e2d8fba0fec60600a30dce161372da30c5671093f97731a862a4eb9224049c833bc07c690681502039ea2e7612e2773f103c29a8c3950b2c051225bda209bf6cc1e71dd63a397f65a99bc2b644459bb1e7a23be8eabffa879780c6901551921cef52d93b7192ff2dc575e36e1fcb8bec638b58730ee46ec03d5ddd1d8c52236cf0b7fc1df214b91df138472b376873ff06137924aeef7012313bd74baeb126c676b06a8f0ac18b7d0c0a36ee1877a168e0518df95161a3dbc862b69378052097fd8af13ca0f8f5921797673024c551f99faf505c23a71643b2288e95101c60a492780b5b7438bcbb4677bf8c25ab98dbcfbf63f7f1b2f02d11fbda2b3459fca658a9faa279f63a0e36209a96afba3be3628e32dad365f9873a1f7bd1ba8e60ad5e47a8fdcd875a4e33adfa422eb384293a863718449d793c6a82ce79eb6f3111426b6eb4e9eb86786b74a92f725524a97dae924a316be88d91ba75a9ba9c9cfa17a9a0f9c0a25ae2ceee7119742d407268574758c1e75c611cbab732fa9e42b0cbad911d27eec8ef8d5cb77448323353e3601825059ebe7c84af52721bfdc4e85735dffad4de76b3c3368058b5db33d8f2a0fc238d9799edd323b5e3c5400e13e88e23843ed0972a3c2a1519a87c1d7ba6bb56d8684d2a70e4f7c7b422ab1c7ef3d5ef4ae84713497c066e117a1bf09addcc2324c562096660f955c7c6412f9955da410cf203d060e4f001d06a496ebcdd37c6fd1ad75fb4896025b9fcb80bc0f55e4135df97507372a8186825dc3b5671b23d6593362f2062c52a6ce6579230080fbb9fc58b8d119ea43521cdf0ff61ffe40f58eba270ce14bda9355f069200d10ceea271326e045f5c4f8f12a1d7135f6f719817dd421a4359cf54c72fc8bccc1a9c54c5767af5749edb0a7ceb2fc2600f11c20d592cad7ea4436eacefb8faa3d9a0712b1cf14b572e012e8903bc02c6d9c059bb58f8561d87c16309bc07d6bcfb8bf957f6706181a639155701de5b4cc8112a141fe4f850446221e7165e4b1819738cdf94b95003b143f92cfdea0850dcc99a421831aff8499c89aba39cee589e967d4d1a5b7a47137c5ae9ab3a2ec2226ba90f33c0e169048b40abcc748e049154cc287acb01e48a39c6d0b49ae00071ff9621c6f7fdbdb9417fc3de940ff56a8996a8a58a99bf278809e4f4c8bb28651b797500f0fa0efbccb22fae4deb1673dca856ecbd2f8b13450c70b3818a647d5e496a27c144e45132d1530e07b966b4f4295aa0cdef748cfa725eb7ca4853c0168c8436066390e688ce4e8629060a99510ece5b2df7b9dde8bc936bf8c9029b0745ba8fe231ffbb3c2ae359bbf75ff3e703cee14ce95418b70ffe99cac624ab595a9cd1918932311c2640216367372e3a9e29fbd98e70e4d3517d9ee3c0308c7777b2bfa6764e643d910d9555003d1410bb7c971ba52c738b30163595d41d9bb8c56227cca6f1c6bbee94d03f07558c8850a882430ceecf0d66b0e07e39f44fbc75a7e4a0e666a66f2eae27fb85d08b80c12ac43ecdd12281da00591e5b2a648f6c201a7dd01ab91fd5658886ef7076e5269d1c3d93065dfd54ededb8615061cd72e8d513311e831826bf1ccaf08ffc26e2dd9bad70fcdf795c3e6f6a98404edd5395649493fbe156644c801ec5d58a435105d35191d64c871f739b898c4fdf79bee25059dfd005c3712bfb97b3ff22cac4d80a07ce82d5d2de5089f402fed057406196f47cc4ad35efabb4464947a5de6143dc84bd0d372ce11cdaef7a1fabdedd015329cd05963ed31af3df0e26ea63f8173bef23ef5efe473525e7902ca169041f2edcac71bdaf466c882f6939bd13ab02d7d259f5b8a97d41aa64d055e051262f5a80a9fefa3b9e184d1006cc53037f94f653d94ed23cffd41c5c32db1f2507101074a94330e204b6493b3b7d6e64cb9c73984bb9ab572ad1fec08fda70d2babb0279f339ad373d57babf3bf25b991cea5dad3ece92a74acfff3fe9d15c2058dcbdf585bcd64152136c4550aabdf1679a8de1ddc7dafab3d21d2a5072d3c0b1c47b9b14f757cf742aa1650b108d32c3227af14740ddcefce19b8a40e621c178c2e6cba683b5d4d73150a81267077059bf4befc1fe079928439c7417c7722cfd1627d09f94b833c166b40f844bd654d26e87be1f20a28b8917bc68effcd95ab258ea2aeb8cb0f0816fb911a9817d6bd882257f07b24df5c39745567f6c94b516f208bcee361b1c6821b91c0b551f0e2c006023d3fc27d8c0983375c0454706aa29bb78aa5114e3ef3582e27205fec57ca7f5b0537bbefb03df7c528725db9eac76eb4fb31d60ab26aacc0189be12cebe323235eb41c871e04e3aff3175c1f2c9fdd1e9021c2f85c4c14d08e78cef4af6e75c13eb10e785a6ab4fb50dceee849a5cce993a677d56a75c4579bcee5241f9e5f1d1d7d17ab23232a9d627c21ae80ed3f8add16546c88d70eb6f80077b8bc7f3055121dfb31cd16641ad085752d8e3204ee64f603ac41bd6bdb235d70e066357d0c35277153af8c43c7ab2acbbcb90be1804dda1e8ad02e885cccf3905ec2d185292ecca390e3279480993f9f70acddc930e3d7ba48e0fabfafd5abd57e04d3461098988cc36a89695becb4a6628000c7443cc6a5cbc633952577fbf5ba0d6170693d28f4ab361f21a978845753d8e684a7e41de0c25ce37078959f2fa3bfd1e0a8a833b89c0b3c6a8f5f9f7a6c498bca85d011f848fd5204e868459d8976be32cf5d3537f79228da491b8e5a0dc5f784a247b003bd5a808bce2135c71509e9c937795cf6e97dd06023f7afa7dd790a6328c2a1e9dc54bc2fb2d2ed4a8d5e8677a2d69a4fb6f2642c46f0afca0c8f0eb00ab0652e3fb9a3376437009955191009461723dec71f1c1978b5cc823b795d0f402c2a93b212ff944e3a38b6a0d6af2325c17fbe3a6bbfcb425efa247b669d46b6c08ee634c176c99506f52f536b9e1930ef087c1c4599637ff943fd13cbaf6e5e1c61253829eabc37d39588cf63c5f5483d3749a5cb3007ecfe20ea8a06382bc15e054b419e36b9682dce1875bd7d71a3cb47961530e5448c3f4edd58a32724c991fb63fa74c92cfe3565f572cc04ea2434ce0e4598ffc6fd8b9b0b548c6e71ab3f53022797cfe0967844a785c51066dfa01000371a36abe7c7c3a471801b6984f8c559782f4e7f067c527d5511be2c5fd7ba4f6b544b049656fb86d3a84ba5e0ced9bffbbbd63a9f65bb1ea62125a35523b477cb3ed2fe62f6472d556d6210535f285336b24f6d777b3b1ab1f7fd2854535d097562d01cfbc185c4a28d22e80fa47ab15cee3fa56b8ba0be79f0ef4c23957e98790c72bf97db64cadeddc3a2668864493daa63ede3d76f8d03950f3b036a9ebb7f55f32a5a3122f5b4a314907e06774e7167e5f6f94ddb81cfd645292d72aa56bc0988f19429398b6b72c05a926e6e94bf057b7c2b64fd700104733cb5405d46b8550c1d1735aedb6071d908ce37e5408a4d1675957fe7091233f86b74e2ba06ec6cb5f426b709e125654b6cb52cb1021eb735d8abb1c5e3845b02b76c1d4693a52b6b8fcc82b860341ea6eee8c9d47e54fcec77f19fe1b2162af4dc37f4a9ec541deed668448e567d1a9912e36c3ad0501a4841b5eb4ea7c5faf0638eb4bbc03a20de66dcf8bcbf2a08041a776f033a8e0ed645b7986ae20b723e30c53579e4428bdda4753592d4a60ef34c2fc83a3ba4797ebc626dbb00af11d0514de3a8ff00b7a93ebc62d668f511c76954f68e99e3445fe10cbc18ac8f9b7c478c99a04c85eb4d748121ef2fe52950b8335f6a9cd542dca4703f52d2b0d29f2f5bb3c3b16741b463833424a580d61f7be6f7621a01307399adc154ceab275acb490593d01f475e4295cc3848dba25b843b6323db56ac9c5dc7a7803a77a6423f1c87c701fde1108007549496c889482f03bb1be77edd83a11e65ff3a351d94f46d740011dc3ae5487f463459e9849d1effbbb26d74a4b81a7cd6a65b16cbefccc0bbe1217935205f507b07e1d8de0c6cd3b151d0a0962755dacce619d939ca85fc6dfc737f569d22ca8028007d3a1665c1cea73d2a45e2c10280093c64ebb4e4c9dcabb162e7d6ad49a08a2774c265466a9c97bd2b76c6f2a782ec15ace4328b72a87f1b4b558f324fab6895d4843f1c47e86989d42912f101fa35a97607ac57aef44dd3229103cc858f634a68c3341ebd1ce66f5f9da9968fbffee91fb5096ff0750f4c479090a0c74063107535fb43b0394c6c1e256367256a67398229fc105eb0414c278bfa154832e1832bee44e9e4ed2dcd3f12d7a47c909f2ea33fcfb013b900926ed7c3be692abf6acd3281a3ea2d514ecca523015de4a2d525fa0b246020e4e15e9211e11280ab468805fe9ebb75c83e5997b8113da859b22dae3a6a44b99a485263de97664e6290b8d55bfea680be38a9d2f84ef60194cf57d7f110cf4fced39f4ba122735fa3ecf81653cd01d4387da180aa65f39d40fef6cd289e96c412f83ba84e6432c14b6928c470cca826c443e214a27c6eb11ecba6abf34c29d408685664a23ee3ceb90724da4500de3d5df7a853ba0620b03b8a41270e20207409a0f8c5663af08d8524edd48354c05d890a98119249d0c796b22a84d1cff74ffd09d0aa1fed06ba4252a700d42b87eb5577d70aed4461acc90bdc5f735bc78994e1b02b2e198706c7e7031b8be60c3a3b3d2cb769dae76537cfb6e31aec565a041c482ab4b853223cf05ecab24e333335569264eb1f30d3689ffc915b9b00321ad00dfa1c1c8ae4eb6cd6b17532f9ac248ab3ddf4966cc1ef08356a5129ae7590edfb8d2b7826bcbb80d72f1cd5d34a898f54371fb5d202c1b1c1021785c23b7f079824b95a9ea9256c55ec485086324b482d03163e60389936c7abd83a4160a61d50b4193432ec290c54a0a232f11e29b50ac9a6d35255c8a98f6d4b8d6e8476ac9f16d353818655b399ac0089a5db5d7eb390081057e93f97725088791c04d5774e5d6319bf4008b1b4df04a0f181fe2a568e96871a912eab234025cdd1a17d45a719d9dfa9ea644c2ded9fd6042f7f6f16726f03cb0021bb33fc86f56d5211d00d216264b4dc3e336efef7f1d82001269637b217a4c84a21d609abe382bee5d054c6e71ff391a5bca6e53ad8ea00d8d55561d0d5ee1ea5008c9588d5e1a4897ffa4565a9b3b8eb9d3b15497b232ac021f1d0fe0079f327d47103c4b983c38f797b6256acba2717a9f43fa8692cda2bdd4ee73ff159cff5bac5f1b5cabb77e44983a6954f5a0ca2f64dbde82256a052eef32ee29d0c3955a0c8f3ffac8f3e64d0630d10590442a2ec19c937e95332b7201db0242cfb712ac47f4e705a9ca64b136a64a9e3fb311561895179964810bddca6caae619f02177f7afe68e412b2c4e66949ba25ea69ebacdedf10b05a2c088634c239e1d12462aa306da5549a96a34c2df761165fb0ac244126bf1094fd9ded8f81e393b07c4e3b454a7314d28a25ecdefe329da01e3aacf5bbcca5c9de9a4d9ea45790f63f31c7df62b67898e2a4b4689d18a094e139a1abc7d7c4e2ea8081542b79bf9e61432e73c71c5e1c6231293e48748787b89cf411bc18d47d53747ed093b84b9c648d27159b1861fb925e7ce69c64f3cbe5c870675777e7ddbf3dcc292d4f706afe2584a7c1fee81547a2468c74ba033656b972ca96049e8747b8f8ad28650ca1a22836c16baa25666d7af36771052583731f71232760fef540856794c1fc815a91bd99be8576241c9f1a12bbebc9a1547c49ffc54d923a5f4f5c717fa076ae4cdbf6e1c4608f756065e440809b79556cb68ef81c76155293b8d8387fe34ca1dd202adc984e47e57688ad1ac563f2fd711dab57daf538d985562e3bce9735a21baf47735f228e1614922808c5430159e5af8746c63f8840ae5f09697f8c55cb5fdc8a240fa6b5fe10eac0eeaebd6d0538fa3a4905a684df1ac12f0a46442f468a2dc0b81ce1aa8b7331ab2e0ecdcbc85b0c9b15abd99885582d45e4a8549d71ce685334428dc745b5b5e93dcb7e9469eb7a69c65b03fde98c06fdbc829f3f63447187c9db25fc095429c5c0895149e9ace38ae006a25fd011b068a4fc6c995d6f022a67807e7480d46d4646422fbe9caa1e3e6646a5fe103816c9626cd651c4b9331320d5e4853f86b4ba17975e91d87e9e865c2d5405d6a33727e9e45b9ff7887622f96731e78bcfc3e59337b97a0cbccf7e8a02d92b05f205ddb45900dbd197dcbf6608692a17540590ee03f46b0d647be27dd53668caf5e55dca35a432c00f45e8ed5a06312abb04e938aae875aabbf69c7f0a2f282e339dc732fdc5f286c55a1e3d2d81f8e00bd0bf6488682e00d39dd1fb490c92101f2d26210b9618e739fbfdd2fe7dc906fb723d53ba47d0be463466bac208b5fe8e948de36213236f45999a27248ca7c6394b101328c92e3ca7d2fb3f4f6c23d8dc0a9af1f1c1ae62b0c665ca79632314b2913c086250687c5680566144d9a1c49c612e2533dc46ad0bb26cc3f0812c34e65600bed6c08aaa7682c9a122fdaadfd640a55146256a87bd9bd9858508a04d5093a33576f32324104514ed01786e43e37490ac06e95e8d4cdc3c65a1f3aa9ca802f1e6c714cf84c1450d516ed70016191c12f820e2dd613a250782e72072f196b5c748e4701f920d3ae45c3bc9a642a07c34a1c410818f10c5673f988bee782cc495cf5f886674d32a2f3247e8a8056e10056a46327fb0c6d402c9dfb0274edc463a75cd1637870b915732318804d385a6c5c150ef83451cf84e85f9d2b2ab57e675cdcfd901d2fd1cd1c590c4150d135bdfbc6d100159752609e7e2e2ba83cb943704cf2ebcf54da28a5bd981a58a5367dd74a75728fe08186ee55effb9b940d237910327705bcb649ba7ee5d2a7e99ce01918ff43d1380847299aa92b1944dda17dd468fae07f7fc796d5d3bdf71ec52c1dbe5290325264b1e8ba80899e81f21263e86a1d93a925763a81c1cb3badf9608bf9f2bc6ee9ad153e6ecc7e6cdae8f6b31b8b7ffc532ea824d76034d2b4ef12744b545de79a5f49a1a5577aec43103c26221ecbe82e4d19792bc6b9c17da908a5d7127206fe2eefe198110c3dfad98986d5fec00881fef957d16dbb217d508915df32b532c46cb472384bbeceddd6f2e00f5c03e8b9c0e35c55933523d20985664a42e3719950292d3e723be8f8cecc508c6c4a4f42578341d319ec7662cb52c083dad75958b9c932ffbb386f6f31c38db173f99c6b596a7f1ad3b4b97c1736cd20a8da1a4f2bd7c23946661769d90e253ede5f12bdaf35f08b9c14db26c359af6cc92395cf1870b7d6162222a2a87b03d6411a7c6986ef739dc54ea287086eeed17f11bd9341caa38a33571d4b8cf20a792bcbe9d537b73c1d84af1b81418f698b934c8d7166450a9b3e570a41a7ade696112518684007d4b98931906dcfa7ee2a7294afc5932b79548660d5d2b1971c5304c21a16dbc4266a364b42aa6c1c22e1d0712e4cd62d7f7f8798b62eed68a68063e08e4b2d46030e07526b007b293c9ae5dca4ea09dcc215feb6a5f59fa7ce416f2748127713aaeb9382054a677f8a47ec4ccdb6660e978c0091a61f93e759f00f4562d39121d5254b26d46331c3df45e8b7df566a9d4fb118a0cf153451ca513386247a166812d404019f3c49e72a5c209caea151e23e9d8592650098d4183f170b3bb282e6e832584f554be66a4c7800096afbbdb035069f296e7b0d581d4f4f912bdf713c7283f78334f2e9190e737e29e5ff2f3aa4f55ad282643e248c82582479cd00f862272e73ad4ca3172664fd967d4afeda0d9de8e36f9adcad44fdd55947b7be36b187306f5f2758dc411c9f44fdcaeb848f308a08da6a9af14cb5edb0268a0fb580a9cbf377d430445949d84b13ff454c15c8ff03df205d1f8e0d4e28e3982677ea296befbc8053d0ac28018431b1d47f52bb098dfbd36d6d26802fbb398083a9a4dc0386a6dd6881d6bc4d7947fd261f5ffa8036d73eb7fbcc25d5332e55dd32edd7e81822060266333c00eaa742385a7775c1dc4c03a38da23c2737174f2be145ac07f6db71946eb2fcc9f82c5a8f12f1bb12aebcdf76ccd92e292917dfc7be7713f8f55b7f10af546d623e79f91489910da574c70fc4e05e605068314197a2461a2da6e28898f63af734a1db487b47e2a7a1953f9024f0e1919552c03d1b013ab5c2638dca0b32405cabe1f98aeaacefc6863ba84625f559c632c3ad5c8aee68f5909c2e0bed26fc228749533ad151616aeb637f388eb2bb05f1eb856e59b5c63af2de9daf89935d097bf934ca2c96bf44fc41b3b8dc59f0dc0cc57713c93b79eaedd1ee059f603ea9d96bb49b7046f50d721ce8f2db4c8af8c4964bceed4512c78de7328640143bfbf1a0108732500c0fefa4651103ae5c1536efccda5047e69713e7522528d2c567fc073df23e5b691e3435b519a6dfcb31ff5f998d87f9e825295fecef6838ea8e6b08ab264edcbb0bdf9090f426f646c4ea0f1791f7b8a1656cd44d4e3087a6bb61ae1ff4899d871771403339217aab49ceb01541b16b49a8e464a2cdeaa4f525f2048d86d665bbd50158f5862080a9cf376d525a4831f4ef76e07e765ede3c2f8afb128c62ffbed6cef93a54d758a5f67ed75f066be90e81edb12621c2c01d46492d74f4da08c9f0857511a9b616336e09ed22b7b2b0e76ae3a6b8ca51bf252aed5819cace9c4fe23ea32ace6cceeb256bdbc26e38b4200f492071532bf88800643454952fafc500cecc6b51cd1c1ae45b0899a61988ab90006a3ff62cd453625467e88fa86b5e49c99597e8f3b52cd3477dba34a40b55b65028ca509bbe2f474acdc4873d6fcc84694b42cc4f408eba8ee05f99fcaf19141e374256e03bf71083a8de8ed13f9522954544c60decb536bad9b269e84d7760158a31b1a07ee7acaededd1f5628c2738755ce75080b3cd298404f13103513b568c84f134b987c417c33e68b3e1fd6e10b168787d2993173f5f7e51b8bbf2d59fa4e61b06a4097d58e7c0de0de482bdc374dd7539581fa43046d160111cc963826cb28413d55677d065df9a6a4a286fd76451742afa612e84faad5a1b630eb1af5c2676b14edbacc9071519e842e4400068aec176264dc1d978d62325c28b9f8cf68ad88c4deac38bc59529f4421d56d59fac1e8f48838050daaf6350d35ceae2cbcc1afa7287e99021e074cb73c230ac2f6e104838a6c71f5016676322defa20968a4c674e35c0685a783af2036e6c9c58a6f0e342f7ee80d7680c320578e5d7bd708908b85aebc448b281b596adf7ad455d186224ac11bf304fb28b07ec8cad897bf0f835c4e83fe539ad57e410722c6f2ab369df659a3afed89b0861072bb66c535a47e7c41b1a6a0466490560ce357af75fb5332a103c27106c6ba2b63bad2cb22804eb86c8c51094c64b6d52091e227dc676e5749923b9e227c440cc5a932ae76d7ef95f7045e4b78a97b0cf1b1dbf16047d256ba7a744f7d1729f78910e1c798cc77d883cc0cad4ade79223eb75193754b27ebcb4c00262f75080a7ae99d9f02df7af29f454b431a27e9a78110cc9277a46c719915bbd7fc6454750a085a2c6cdfa43e24fb399fc1889fc78119545edce87f55f771912163c528750802ab281c6a2bbaa2d2308d9b870d54236b7ce16ba82a4ffb8d5bb6c6bf89c5a498baf0c72856b51a090e8a58160b5d391d9df1b268487ab4dbb44301b8d1780948b4b73b6137dcc19fe00f52ec0636310c5d4851caea8a5c327ce9c3e2340087cad67229e5913938b90f1d8e3ed43b180e4d77566db2fef4eec9d14175602c57d7a8402aa2796712ba1dfedd5dfbf76625a145f23867adacfd61f4a9cc0e2e3a44d0d959e77bc23999a1c9352736b4c18e8d5381e83f04b788d20440cf5a8adb4e722c589eb2b564eb2d85e618c036ebca32bd47f6a2751d03d45410406d0020046fd738176ebb10ea47bd06f8166a3a7a223d30e60ee343d285abf3ded41b203564d1e58efff605970cf45382533fa3e0aedcc19a2334cf5bed012b1e1f0bfc51341e06b4aa3b7ec1fd493213e0e3c07480420c135599f4950d145700ebed5a67bd9bf62c90a6afe4028042220397da6557e236cf0c9a7c1172f0bba17847026074d35d93f8ccd82092deba45773fa44e48ec0665aa14c82b15618144c5586706da3d53313cab796d7ac227917076baf95021d51251188cf0cbd2e4d32bf00b741b1fd1777c2aa47855f578f4f95af3ed07457d177aebe81e9f368567cd43a20179fe9e0bfa5b3ee79b647641e3b36aca03e734a97ac618cdd1bbf77547575b40d20294db3f4fac76f4212fdfa6a0741f379014ec7ef37c0b6c62209a5f76ae859f7a990826f8c58a66111c71a7ff469f8bc30b4d09a864daddff7a9e383100b84e6b2a101d4488fbeb8ccb7720ab7a346a43a398ab886cec9c69b01f79e7d6e26dbc6510f344bb9aae60511b7e451c8b1cb1237f77c9da8cad695edfe68a5463cc512e09d818f6aeddb6d0d94379dbd6d2e63a7e038cf49ff70741041a4001e34fbd029290f67e877687323790034e2a52d8308b875335371a7e7a490d4518707c5114162a698379b43efd8225fed0dd795e4ff78e7741b6c26e4af7501eaec64caafb5e20a3532535d4413c1a5e32726ecd487ea50de636463a36de42f11111bbbc9dbc0b7f452ce66e20122930754ad6e50031bbb47cf93e7403cf291242fa89c41cbc021f9fa0b69c223839ee27c6472553452414367020e2e0879a9ffef2dd37f85bc400d8537f9f7dd98f8acb56752fa53f9daca3bbdefd733d4a4a093e06fa5df8f49b4bf7978d1696aaa14ae3892191e581f7db41a4657cff60029024a143df838f65aec517e5faa84e38b81f781c9fd852fdab7a7b9fec22535ca5141359ee2d6efcd67090885f0b73d02fcc02ed4f6aa9156493bc3bbd1994cbb754f9401cc3c330b4cdd3fb3c8f2b867c58eb83adf50daac53fd32371331c24069e3da3fbad6ec40c937ff5fafb46317338c9aeb27d0238624cbbe5a8a15cd5752261fd802085ef823dc5a5981cfd9d70e66bc7a0ba0a1dcbd045dae0bf07eae8122d044dc36ca41af26255835babf9a0532771eeebc1fcaf6f8c704f11457f4cb324a90014a59c24227b3562249fc12ea6136679a0d089674dd1f312435f577415a4a6e611c47af4b46895f244b76f07a776cca5db2ee1043fd0cc7a59bb14543c021aade280c4f0d1ef8d695d7617d8ffcbfa4a0b850396c5731386f5457c540457053d8c41d80af9cba1367bd43c60bf1531d366a6ac3aedcf1c213359c3a78f5bdd88a5f462d6602ecbd716c760c2eccbf2dcdceeb6e35cf57c07584fa06f0192b16b6a40138796d04f719add2a0c9b6db3a79096ab1a0388a9ace9831f7bd2fb4f1b31aae46bba78912d161ad9e937651c25e452736dd5df21d440d5a3fc51a70d10eb983a5899194e085d5b79e250f38a5253c683024583f53cc379a18e9b9b0c16074d80b69cd556ea6f4d01f558e0f7c48dbd9962946760569f5bc984eb9e7714d24513d09cbb436fc03a2f6e265e58dd7b9aea72f275f5fe1f189b6d1a9d568a3b8c485ef6bfb8fa0dcd14e0d5d46ac5d037751b89f7fce72e3f1f2956d87e7964bc9fb6db9a2e4a4175f66b4d974660bd4cdba7b5d3f9a2bc3613cb0b67c9a795d21feae273d0408b81127c72555b5004d13c940b27794f91eed34dbaf0d16f8413b1c689a95569f94fbc3768d062f5b3a9bfe89511188faff6e2bf8eb505441c527ce7b975b1e8c00e15e2a712b05d19939591aca02eb29a67b3e5afdbecf33cb3bb04a25c52cb4177eb601681ff3af820ed18d0d25f56be7ffe45a90994bbe9a3052cf7ae3963e4b836f7934607908d865ae3414a0f2b0eae40b184fce55618111201ccc665f93f9b1853fc922eb0d23e6d8f58a3e677bdb2ca8d493592572f876adac55cd702b08f07835b71babe1228ce64e5b4a671380d5ab786aca09bbd84a4ab67f647a10bf8895f01646d2f6c0f1e052766fce5d40cdfad6d8e51f619bd5f2a61f31ac046592cfd7d9547da9243eb80e99673856c23951cca1802d816db3dff26f7c4843e26b622324cfed24ada3ebeccda525b55104521b14e444862f3f0ba06e8f4d9d950d7783e0a10b2c005ddc0d5dae86d14b11083c3494953b54f5cd182d339b1e120aef565e8f71e9c9d08525e21771bd1788a9d28af18fdfa60d96625a84dd4593e90dcaedfb646ee432c788b76d1fc3e509bf20906d5f0b93bf3f171e695fd0b691085d8b45cf43c34e5c3f297341de81e97d48805fbf022026a513604bfb81b3bf5fe5c1253e593b4a1391682b4354b170237917774c398cb00c35083987f699dd667c9119b1f40e0f644239b0457b2fde0dd5cf8334c8ffb2ac3dee93bb64ea8eec35964ebb9b22385369dd66f5943938d1310fb0aaccf00dc42ce3e9a8e1fd7d3adda9dbaee80d339e29a7f7fb0af0726705d607d70d8149224e906b81b9f72db2c49aa6972d7c3f7f5c09a584a7dfe27775193bcf399fa0f6eadbe271f97300629ae90f8d787cef505aff2331b53bad6b6bb5437b253b227d08148cb454f2a18590417e2c9da5898e5876635997511c51ef323ebba49f930e7fdbbdcf3c1c63a99b63f071a0f05aeeef7f0bbea1a50a2d7c4c0fd92ab6bba451282e1a36a337fc5579e3b697f97176c517b89aa5ad892dbc9ad1f262bfa29cbff99a410de4eafbef53c4bfbfa63501f0fefc3c177960a2145c7d80ebd7d2eed6e48b94a2662b5c88b601d1eb081316544c4f5e5fd3ce6dcdc4f527d9aa9265055924f3300e360e04cfc6bd366fb12f5e4c2c9ae6c1defc330f4deff354bb9746b6616d4b41c0b8e7dc27a97ac22a91e50b98fd13459bdda5227f79cfb1e0e4332e9a196af7d077ff2e116d70733b1fe7b390fb14227681d6d84470c94c9ddf2a5ed2f504d65fcb44564fdd783bb42806d8234a651507cdcc81e3465e785056182f05d537aff243b26294a6b510c73083af093f62defd4cdd77f3584423bb056bc63fd90a32ac636d3596bcedffed63680a1e2fcc608ee61a66385b98e92f407423b07048803589d6a91754845bdfc2cd9a70acccc0aa7ebe2bf30c19b0903d6fcd9789de6bd7cc9e965e06829a1b9f3c5fab7fd3d8cdcb3d84c1d6e8901d059fed784d28c5a9678d8c57e5f294b46e8783408ac43186b38975411cde7266ce4b2416496cd98d53ee76badd1387a5ecc9cfdd33b6abe2145abe84b6968a2fd478d3d7bb482a3face532a046ec632868e2a57e8a4e804b109ad9f3ce72038a2c9c429c0de0351e34b36169d1f5e5433b9d08dbd7c9345ee6f7950f4d2699a2cca78c9724037d5d1f63fd4d8028d8fd2a2f69f4ebacda88e5437f5a0294be5c286e8463310e1fb09c55fd5f66d9881d4869ce24555beda53370a412da883a5aee5f52e63de8929afcd7d9673f3ea0bf1d62ea3620f3407b9a442197a46222b288cd6d31c513961dd86df648bd81cc3d2a3eb29cee4162ffa7d1f19f330e1773801d6af1c2b00ebda6c90f7bf600e62944721854e9ff944037e6f19750846edb39f00800cff7ee1444bc1e06010e4ee4e45d6e1818c45e697f75f1a08bf9656d90deba5aaa2a64b2dabf5bc8b14fdd558418f0700e0a5a9c0b780b200e292cf3e0e747ec06be25aeb07190f3b06237ff54007abf0770d1bd76681db63567600a3549d79bc6cc92dae6fa5be43e7577ecb4847ff229bda7a5f1a98a2424e43adc9c3c5ee316e4adabe9ca673b5cf2b699842cf5211b2cd98da9394dd2c08868362dc9acf82d688f0e9b240f509e9deae1e8051f11e60a58ddfa0395e31a80651c84261c21eb12ef40fd89d59c6c2784b928fc8613e14de903ff833911d0d3313e52351303a16c9eb9174a2ed5c09d6590e7b487a57bf3f1d564cab753801119f26a17e5e71d863981bb812d0828693a2120554923ebcce977e00b89f8352cd743d90ee4bec407d118cebf829e8f0bfb6c9c30d600a598dda2e46f6e76c3764b92bf39047a8bbc6df4fc03967340635083f36b46d26be6d219fd0a58361b5f4985476bacf97b09a94dffa0b1d2dfa1ab5bd91660183f58bbcb8b619a89185be8580216221c0ec2e906ddb537d428a48303e7b6929ff18ad4a9ac1f9c842a5087eea61c9a482ff4ebb1aba94dfc73fe76cc9b9059fc4191a7d7ee2a1bd6269c7278d802c4e9577d4b57a491d74c8595735b271ea3552025a0ce652f2c725275bd9702fb4a0de84caa09e0822e8d73882cf0d764d3cbe8c16f7fe0cde5f9a1751c9f4f67f66b9ce49a6fc8d03ad267014caefa4e2cd420d70a497a57df9ed6af343d1a20cc9044f1af46646e5ba022af4d294ef9eda7f8205331cd835df58b7148994322bbd15dc3f71152ff952490f761db127b98c221367357bd6641ef8bd158a4662f554d7fa18ddc431627546a6a83a0728626bb04a2d3c76a9ab691398c032105b5753cdb62fe7ae7b49ce3e48d57fa8cf3e63d9b55b1794791c9d2b13611b644a5a2a0f6e9eecdd90ab0efc0ca511d87a032a16d0caf182e19b27e6b8d4f1de90c22e3706c90c18704706d7ca10ac01e0796320096a6610cb2e25833e903a8889e4b1dfd2f56773e284d962b67ebab630b30d8b25df62a373f9d60b769a20504b25580759310f7461345c1dd208f0c5d4eabda5c73d86ba560b981140c472ff89644c61486ec97ee30c36fb82130cf10a4a4ba47e8c571983d4c14fadb4c4d7f7b41f864c2c13def271b33c4bee19997c8ea928f9dcbd3975ffdf99b60368204ec3ac28a44461697cf31c2c1bc98982371051ce48d7f53bd288729d8fe354a63b1063f1bf7ac1ad23d716347a71017b8868e00dd4700c046afc7a982d2e776de925fc08b766827dd677fa3fe3ca7bf99251a966b1a57c304dc82b94a8a8ec74e389ab8d436b416da38764e918b6ad00cb375ff136b370386dc7fc32fd6de1b1367dd684169c4d949a90e53b41222a8c3c3445d0a588ecfc200619deb3dbd5ae05baa4f558a6d6bcc89d45a96c485a3955f8f929876144da39769340e677b40956bbcde05228128647dd7bb1981b08aad6c3a8984f39e8861c8f9580f8b49f5f248cdd306da5da1a045571f9d1421e27b7b73a0a13b4110700e3b82c60cfa0eda3f19e28bf1aa47368792125e220585e35e5466a988acaa525c4b5fdb28d322adbc90ea698b3097eb8629fd112f6334049e2cba074c0de026412afdb7f9a2ca1f91401a745a744d8eddd1e883174058d7058466d24eebad7090b99ff79b8cb4282818e42bf3f675603d1c2848a9b7b27f99fb0b334801d2636d7586a4ba5d8af7e98cc0ce65e35bce96f8489c89b7636211b7688b6bc224ee3884ef02f74f70118cf70512429c9bf619c8ae52007f3df6e0fbe5bd3634cace00674f795217455cad9684c3c7f71af726d3b4faf6d3fa82f9cbf2d6b79ee77dbff422a130292970fbcaff3ab2b52480ace763b17a230c040c62488b4241531273d2981c1fb9bd1033ddb29ff0b03dfff18ae6840a99ca074e5e505bda439ba2659442bbfc60c20d1c151cf59c1f559b6bde0fc52735499b45a7c5a11a496b8d93545d52002c27e66b00aa160973795a4be63afe74132036eb7686c966729eaff44dcc48fcc1658894c73168c7a2c0f065a94ec6c68042da2bbf2ea0aa8122410e13abdbb4a38e55016a112b8a1799a867f5d1860272e6654becbee08e8ee63dfe7d61964f9ce8fc099e065042e04f0f806fc66d6bb20cd3ce09b7fd934d5c7026258e6d2ead11930e41b407214d5cee2b37d63731b89c1d21f540a700b090fab765ab41161ba879d44d7854df5682364319ee165158d0d81290fd9bd3476f03c7ed5ef76aab78c5634783e9fe8abc4e8020339ffa6b5e89f3d233ba0fa1a69aec06975571602e5dd184aacf8d6a117e21b58e848aea569cb6e6eb5db66ff9a320adb9b35cf340d019241e3e52897d31c69e6770b1db281cb57fc20fba5aa55745109aa701a3c369eae05150aab5c670f984a7397f463006ad45bf564c90789c0dbc70b2477d688c0dcf3c0871207b12a6d78ed36936f67ece1094d787497b564ac3ecb17a2c2f68ed768083214cc64a11ba4b380e3641284d65ea9782e3391ac0da5d569bcf335964323eeeea4d84aaa1fed9364241c11219d464e33f70b176445cfec44563e5df498139b16bcadbc3e4ca756e6d3b9b04096f0ab347ccbfd9442b8212f1470eb1ba4604ce7c2fed204fe6e196519778cbac6bd03eb2baa9fe12f7d165216c94def2e1f821d99f15c0c96857ebf91990d67adaffd1f122f2cc780c03c6d66f22833eb6a2c59441fdc171b6015214cebf23d027212920e8929eaeb28cf0e952c4a4339a405f83c907f68078992ca65928b9bf4bb378d46d3110fc67345b150d8eccb4dbd5feb55ae2c7447e452ad5b2805c894ba160aeff85040033abdf5e17e383bb8884e00f336b620601eda4967c83e055ebe661cfd20dc06381d676e0565aba3b5f9ba2ce67a76c15244952953b801fbcfa27f80b87137615a8c767b8d81fb43915f79b1d7bb236b655ab4a00ea19045a6bc52b34872fb7965799acd3f2362dc60ffb5ef6aa4b61f96c38b0e54c5104b07f79fe727ec6ace1da24e3190e23b1d014714619ed416cb087d7eb9d02ac5b2561f78b738430792a58bbd310cf5fe33085e5b57162729ccc21e6ef7a31a58c3d6695ed1f414a9324f08c70353f52aab271f0210ea22598c9b54429e49a7089cc47115d24d7e85ddca439d9bb890ab737c93f6fa20712c9499c22bbae4d5c31eecf8e713c5462fa24d33ecfbcbef6ea6ca671cffe18944bd0a6e1cda4c50b4ff4bd7445846e6b6632f58f54e76aa37f7d2f38f90abc42163ba5007a000d286283e7c82a3eb5f1f6c2ed93664f505dfab04034f104e275b5ea694266735ae5fd7f437475ec6cdbc781fbfaa81aa9aeb112f97b68970512b1a947efd357dd2e223545f1b3c1a202f1b25c35f3cbc931cc33d7fd281d856a19d6e92b8f9d7232aa3698615b7f5ba9202e22582c718d0f01990006728f713ffe42cb266cfc6501621a3481a927284c19f941a65da7b253b251b1d1ab425782bd49a2c7428954712b5e49ad00f3ead30eb7cf62e63cd768500b3ec3adfcc08fdba5a11f2fa1fbf15c3ad60563c9254d7ea4c76c4ee1a7e6711c4c4a46434767743f7f4731a5325cdd48ec645290b03a35ee0b18ecffb8108f00389b04ede74866fa320691ba4671c0036f0b8b2df6144e0cbb056b277b4241874bcba8c37424771f53df74d25370e1b5f203e393b7bcff73fe6791474bbfb28e514aa6445b2c65a3f77c50803d5d10ac145b28b66b70a65f29b168676c8da8d54e29051e4780cc94456793520bbf534e4b3154ec7becc6002ea05026251ccf4a574f8f9a6d2ade3e001d1b604f88f3606421c894fc09792acf3e126930f19dc8b995c5651df5e543a5829338c6819505aec7c3dfa21c710928252e516b51ad727f9e1058e9b89bb0d74bbe6cdcc6887e479726b2e3d501be946ba4206b1efd5abdd4531146995c7b894851fc12392bf43130395966962d586a45ce2094f37c89e1b8ac170f51fa0e50143ef5d00679216e034162b5d9620f9532f89143327ad5564d19561d766fda3400c6a383827748f8729dfff037c695160e3b4f4c0a5b370e057ed15db0d56a9d7c6fac9894d9a00a608a2186a62ec581f5cc3974d2d4d3841830c4e9aa0701fbac1d4521b3f5287920148bb245c64bb353f3768865a7fea73a3ecffcb6e3617ef9c3ac338362ec2b3680868708783eaeeceba678074ed3becb06159842059e2f76fcba7f32cd707487439b830f25f61b67f9ae7e7d23ed5537e69f437ae813bf912bc2a684e6e8eed44e22e84d20af90ec46e6b3acccad7ff1bc6e6d06ac5191c6cc5b88bf6701882419fe6ff3bdca12b4d4aa8fa9a2f5a78c460fa337c45ca199550974e57da110a5dbc94e84d91db0249c6c22c961f229bf55196b789cb6cc7c969f66c528ee82efbc421c04cb1e1d9c3871878a5a9d10086a4025390ca791dfa673896b36058af4dc50b0091de2e35373936946448541dba80be9faa84b8a20f4b7485bb142a1921360b3fc764bf86477160f75c7e77ab9eeb423227d57c52f19530cd4e1f47989c6806435a4b278e9e8499aba770bbc9fc205a32c18b56a8d4d9b2dfab2d009e3241d6db34e41179fb8b3530e57e4fc8246228f874e6210e340aac9cc9b18a1bf570b5e0db83563af643e1d00a0028fcd7b39960d6a9aa13e75a5911b84e8e266457211dbd559654f30c2837f558914001eb3786865c5ccb531ed8cc532f43a080f5cc27b03beeed5bdddfd6b4621aa2f2b6aff7fc69dd45be38a7307b5e6502d2909c0ab8ef818255c35ef0c87aae1a0ac0b51841e1ce7ea618ca73d8be89f1e91d5e841ee1bd26a4b562bb90a2e0f9d1ffcd255f1e6be856a083c5b8e8ab8f801cd9acf9585643b7801644ad1b9344edd472900d517fc9646cd4ae77f211d5ccc101d87ee065f0396858c7d3f1031597f4440e772f0deea0e66acae0aa5a7b0ca544fe055acf9b9d3d0d6237f758ff4abb9b02a30755c07b012f681cbad80923552bbc58ae7ac2a63f945b49b8eb0584e8605d0f83e938cd3afffbd59f7fc2e62ce2765fca20955c5d31d579415f5b8affecb1f577cf91885ec3d367bc7826dde08f65fe2ad0a88f9869545c45e769ed0965437257017ad4f3f71fed6bfd9e2dd38910960c80ee5b884f7ec3ec5aed7f1ba42289aedeadc90d49549504bad85bd8b6b6f19cd5d499227bfbf69fbdd8d4ae69d790ee851db43f37556ac237cdad3391be53dd2ecad9434a5db646bb178ba19c1ae7b3c6797170b2a6a6a2668d91ce05b33af422de182489cb894a2ea80c1fe9e12ca144cd23c8dc18cd8ff8d2eb70ac6cddd51380322b36f5c4e0c2c1b9f43b42755401b8e26e54380a29305b58a0461dca0af7e93106d02baf8a3a83b501868c01b452a7949226c9b8ea7763146218031662eccfee4bb5fedc00e395f2c0b81450682b7199d21179fc2074c0562decfd39fe76a30384b0b1cee006c17172bd6363ae3b3c0ce0bd2af232cdec656aff1e6b4000d9fe0500dc83d80c2805e1e20f73c81698d0a1d19fb19cf09d9f4f30f3d88c912c14c5b4f207f291e93b14ed0d46dc67fad036f3aaa84fcffca4b12f588e1afd25244c1b6cd2acb59c3f9a06fbe9f8ea6a98180cf7a31ffe2fbd0db1210930135a6722479b89f5ebb6e1e481b2260bb77926e74459e2bf90d03b3b8d650de89d078b49447f2ce4dc1f993bfe01a1f1229f35e9c8a4283cd65879fa19fcc08621fc53edf0b3234ccd4b593b1a03c31e79567da876bec18570d696c114a83f19e493727d154b4b2852e6bb1e8aae4a8c0f48c18476939a201c1bff86e86af95385429ce7f492cdba1d8030b410b6b23e628027fdb111f19264bb06b3096c5caa1e418aa36f09f43617183239f7d6da22f6b77b126b51317c913ab65799c32e9e7f42e4e4c274c3486bd104bc199ea3e834049397cff5a2c46f85ed42662b8e85802583b525bf744423382fa60a5b0ab9fcf3dacdcb746bb20913643cf0ad3e012dde4aa377a891cd1a13e01a3a9e3380c0ff54c787891e7b4a507d40f28b4eb5c4aa4919e5bc801386c9203089959050389edf64ee041b354915d3b57803fcd27cf39f330fdcab3807fe1e446532e6f0cda425f01727bf741f53c5e8961ecf916260b2a69e617ba5ed2f447d18292f375b9b665d611f4c782524ee91f682848bfe090f85638db36fb1af85739fd9d1ecfe44abc271a3674417cf93523dc23245664d1615bdb401564fe3cf12b88fb79f32beb69a55be85e83390ac9da2d6c52f4a6c9d343309ec366ebce2b03bfecab952d6aa856840e48da93d700d0ac78b6f18d86b301d3e02f2188abcf282e59f5a63f10641b6ff954b531e93032fc7bb80ac65490ee075568578326e0695bc9a5815b8af18fc17df6b4b16f8ac5fc479afa8acce3e155c059a12bafc660f0d54f7dcd9d4d79d44c5a85475a0ba4e0b7ca588c0a1dbdb928d6d6bd5754a51b3e0d46d6423929932d757f9d19b8852584b59000b91294aa048cd11b67378b2eefac82cf63562a45634c422f5d2c33c4808cd7ff59d2dea2b42e356e2449b3f9fb68c4b0ad108d49aa4c86078a77c6fbdf441934cadb57bd8097eb53b1c1c7fae84d285d7ac48b3a73cbffb99a4e6b83faf226994e7f104955cac1f4b1952d01896391c25d8c4bbe92ccb0865af00ee0eed94d014f958a345fa6fb1add259671cbffc0fea0220758136621addac72f84fcc0e12182698ed95133c7373c4096cdc13d44e867dc5f9d8a172b2135da957181563ebd55843be213ec28e978e29355a7ccde42afb4a38abf6fb281e6715c9639689f3c5bfa99f785fbd68017e449bd2439258369fd6ed06a535ab376e86370c75d0326a190fdc68309aedd1de28a7b9efa6c6546d6f59150b38bbd8d99565fd39365814238d4ed07aa31a635fe282dd631d0429506975f403a4c23929e5d27fa62b6d36c0a92f4630b14d57a24fd8f0ee28d3aaeb9c46af9035cd62a2684c2590f556c04b497bface9c94e6935584b4dfb730474aa1db4dd28aacf0eb777e3266014338f31edc974bdf3179c64a813053a790c9d4bf48b9073f1efd5d2e894f7eeef9cee42426da7986b498e1ea6656d13156a30de28f7b8cd5771f9f840b9c15ed8ad8cfb20498252a3e7252c554d2b27ba024f64a9cb9fce9cf59012ef936515e3b8454e25cc22beea08e94d0cec98c25664be803411e9433ec0a825dd1568c877d1897636611fcd4721c73b49bf442d0bf2ac1578a14b78613b56f6fd388b81b383cec38e9ac07106dbc6cd1e40eb10586a64f0e5b095c5c0ed40d624c9c6e76c8642cb442df25f0c256ffcf8dc0a0a965a2b4f8f4046d65ceec1cb6d36eca46ead08aa839cb2f06b6153af8ce8f4a49c98ae6d7928d3444de5900a32d33502af1769550e5dbf8d4659e4f9f28142e06e083cf32ffa4783d59087ed98a1ced3f32cee4ffd92bbc8ccbc7feace64925c45f5d5b961531715991182b80f638933d97e7fe5725bc5d62c6ee1edc4103bce00f4adb3fe1266f037dc9bf3313147a972e2218ba55b2408154c029a7b46d4d42d60a1e047b792b61a535739c021edd3f3364868c6896196a970a1f7a46fd601d672886bcb025de58aebc6b403e9dd684b74636d745c813f9d1e1598f072aeb3ca69d14776a3889f80746d80c9f93121ea2afc9a571b482f1ca82fc2c896e8722887233b5616cdf2425842b1ead253c029717062dc3ef69e1508311b44e4c71dda188d49a61a9720cc70a1e8e1e01b37469b3cfea9bfcccc27bc27f8ccc49d9762b623a0adf3ab42baa09ae64662921b9037d974ed319298bf9e0f50a25121963a0208c2b601b21af2fc3aa191385e6e857f96a033d7a4d562dc0383da772f464909be209104ed2e140d6fb1fd20459e5fcd9f1f982a1168df77dd1824a67515e962a6a2a6834b5bb2de009ae1637b32d5457fde6646795b7eb308a43196a59871ada3e6ce670d781906b0cb39af413f85d8cbea0defb54925a5e00ded26d71ed6f986493c91c5e28a9d248382bb1a6ec2ad03c26fc20967385c6b125b106350abd3eb7409f7a9550f3e117ad5bb6e30ab6ac8c9d3e5519688c9c2853a39da94d09eb1ed274f1c5ee4816700125a4efc81d484f2d59f04b5f848beff9570f128470f93d62047f30d030bac61550637aa0b4d3bbf07a0ac778457ec8831b045017b39d472b5618578c23531712eaed3d0fe0cf5223ca3c81849a9425966688a135284ed98d85f91dd0720f8ac8978b3f80f44f52670d6777dafddac958ce36cdffce6e35bf11baac2368f1fb4c57689a4e88a01bae9e4e753610801321f819e33b0ebdd5f1fe63ff22890ecbf4807c4d7810c9ec6740b5f74093bdf3afb7eb008fc93ec5c7f4d50390073bcb0808247ffb6d393e22fe3b3c40504d09c43a00a941b1b48809c6c403298b18962dd67fcb55f821ad46a72e17b933f730c64548ce6d58440c1bcd51f5b9e3bdbe5e302d00ad574c83be813571cb3d1008548d69f41b4773069567993f7a9085c846b678d8f9016e9e64abc80e02047995bc6703de153cf54d66bdfbd94ca1d5b688ceb2748d9ee28603287f7ef1c047e333bc594848edc00c24bda1885d5c8e8dc3a2cc8796830c6cb507d9401eaef6a8e1ce64487097cf231b8facf513ea9b98c143c8da03da562fb8696fe4c42754b0d32bf570ae67317b62569a1dbe9fe565c18b4e7af6dbee97f19060eacfe82ceafcfeed71ed5c6a4f7801b2c1e7e0988d6d95180e670c149334780b264ce156b719a270a359ff70a7ee2131e678fa18ee0af5d580155edd85162119223b1967f0802cdc4645664fed0afebcf28f184369e26744895888c5f2d72f2f0a0dce90135a0f2b70b396b08e42790666b691be9cd0e1bbcf12124f6f9fd9a40b029dbab3228a16df8bcd1a9201ec831077248960ebca50d389532152db9d63c7bf6ccb3616e101c4a6f412a67970f8c9b107f82121ab132e67c61dbdd29cb82e583cb903034130bb105102b0ff320b503ccd81fc89411c43042961cb931da591d10cd16212746499a9edcfcb757b9bf33bb18d59ab35dc0d7de358a0a3e83ff9a974bf52f390ddc3ed53cbca960d9f96dbc9bb683dcdadd60253d45ab9c185236893bf05903df95619eb21f25fe5c4aa43a5867060648d4b98faa86f57294c95c801d9bfcf90ba670c06d79f589d00e5fddebf21d5c7863060210f649bea2f3cb30d9ed20a691ab465a7b8f0d42c305c35a96b63e9e6aea254be0d5367dd45431182fb6acdda858912588093c36a6845c53fb4d10a40373993642f3ffe889cbd5973a1763a4ddfc6a2e2cbafcf505140c772d49dbeb5bed5a5524a932d40a28d61228b0c0fa20ffec6929b3f31c7c6612658655afb1b799ae878a43cb855807ac424bd3fddcc547ed0f8baa5d3d151c9c97c58b165a8be10e2f394b1dcd8a72d96a5a587eb2d03faf17f087f9bdb3633a89209ec1edf13e353da0eebbbb526e166a04d970a120f3d5b87525440f0931de4bf0156c5016377e07d6d7da1746c3ed3704ca5012e821720e4d6edcfe8ef149b7ef3c82fd8f99c7e9843a754f6d9b5dd39bf2bb2fb39973828b4c8216d442b4f85a780809e7f61de81397366a8759563cfcbc215ee1ec9067aab56ad8de4c26ba10b3703996cb1842a0a87b3ba5a5aae393ebea4c8610f8a987995b026990a91704f27d81e07d84819d78f2a709ef7625ecac80fcaf1a9a01abaeeceecadf9bea4493ba0c9dba133cf56fae0f86e83c27e376b3fcdec1fc1682fcbaf9dd30f1af68e81bfd9f9ef5ee7a82cbe8e6ab09091c127c252a058ec74c06de71d3f74f22682ed0f741b0d553b5e13ee5fff3073f164db4bf0cf521a161f7a8215ff738b61e8853a1ae2a1b7320bca9065f0e55493e8c34fd67ac28b7302ebf0b188ebf98e22f6b7c114007a8f4b675c6b5eb219162ef870a18bd4de3d8dc07fab846f84be195c8f350a5098add27ebd91ddd015a933bf7307adf52eb5f389f90a331236148031f4886d1320b3cb44d6c9b6a9bda873b645ca3069312ed6017454d6a5560ee12e8c6640ec9bb6b337de0ec1d14826fbe88b839fb934de694133d73927d3e4f8dbbefa56a5b3ac9dca438dad0933eac0f26659aa1d7fa282d6191570e5756eedd0ccc9c31720461701f9afcde5baf38651579b1405de48fd222e36d4f4d1e37141cf2f842554f174f11ab33c27013a8b70390d8cda3e81b8b6b53fc9b1290bdad122d6862388d4bcc6838b53bf538d04796f4a4a69707241a4eec9c988f32c06d39eaa2e44eef38355750da1abaa8312c6294678377b58b8250b6cffec0f52ead3144ef5c006640f1c3b1d48d1b96e58e8150c909806f6a06596dd299259d522bfe7b876575101855117d0f5a94cfa4e330066cd449f48a554197a795a7f585765ac960ba552f1933e0fbdb866531674047ab32154f45d7d51a06025f2c11a6321c9e24a1e2bf972cd85df8f813a2587ad29818430eee7a3e9d089ac14f7956f19ae10139e2a1c999e2ed66b1af437e4bf38f7d85bd1c08d14cd8a59202c3e829cf88f51f088d727c49cbce9e0492f372967302099bd1ca90bf65b99387d79692c5885fcce442c586a8c7e4526b0826b088b3631a6c71524aebc95f5a6e4a3d5a392f64a228c6e81ea83afbd3d5689dbcf402b5a2d06b25684cb17a0408a362f2f1d178b60ab327a038f11ba4b3dc7d498c7eb409a15652ae6d9008046bd57c53b44dddefa97176539331e33d9d58ae459cb236e8bb7f1c56f94901d770ecffaaef6047caa2914d65ec6380d02a1a3e374b23d63e028a23260f1da7e77653958e1659f891a2f420de20085339fc610b65f6505a99555026729fea54bec67c2fb1a00f5a1948035eb276a8496781b8541815a22e6476a3093352a93392195ad88e46d2779e3abdeedf260ab44b18fe0e10548a36f5364809e65e260fbdcf58c73b2ba87c4056cb5853cb2f17d7627fadfbc9438f767a2bee447005864b50930cfd97b78d94ad3d2d94e98377ebe56e3d5bd94f086eeae743c0c151cf1ee0649363cf429e3c64e2dddc09ad6c50c2e1f3125fa2355f23997534a92909a4de9d0e72c3d1d515f96f800acd0fddb82d201a8004f9bc41c8fc85d1c654919768cbfa06e5c645f7cb8b6294f6536bb405d2203c1fdc2d66a7d3f466a5d74e000a46cff83e3062296b1b55290b8038d71fa9a50b088d990772ebcaf172078af0a74028c45a315abd2c1011295e4fdbfc3219ee034fd2a2bdd61ef55d334d529376e9af55380a74b891552c4461dc2462f82c1832cb953586bc1c8c90b7a15cb1b8234f6c52b6ceb19c50b21f8b7a1e5fbb7b5cea204a1a2b61a5fc192cee18af7586cbfee10eb238a7060cd5314c970fb18e4806a463be9a6e7dc369e377e98dc7d2d4d919177414b2b601e4e596fe4b69a776c113b5b27485e5609162a45a4750d21e228c62c6e0f18392a63273f707ff833a5296d08bc3ce9e15c3eb8c1e8699ebe3cceac16083238e08ca5993debff6cd9a0bab69c18a9bb8cb0c3723c08106cdea08aba0fc629cd3eab90b610b2534e767154bc7d2aed629ecae8f5bd639056547beac5b2c2e3694a213f758deefb6a2a1952139ee4c760b5cee2cc535a742c19a3ff1d77819d6e85faa2e60e65395397b1213b8158168bb95467610c29cdf0b2362b435aea66111ff2b9b636f01933f05ae63b78619ebbbe61634d4e93ca657d791c321889e55e36a035788103c3080ed2d3fda61c48fbad2d6213e8d20efc6ec80e908c2e965ecc80fefac4748cd19e12c8fbe4833ce72ab117231807400db37b3c0a4addf0ef9eec329f9671629e56f297d6985d9c456d62948168953570787aeff4490bc60a5a41ca5dc27eae73fb9d3735d8bbce8f283f5f479916126449931461c98dbcd229e06ea2e972f9c08347afc849a42c5e814f166fef371e967183dfd9752252765e8622e55bf00269fe505e788939a567dd8700051fc201116f821771310c7b3c9cbff7cb2601ef93336a57d6143f6f800ffb1b134acdf3315363d5e38ef6caa5dd07f6416f608291a2f0a9990c73b83d9dfddc27f77a633bc538ea3464b113dca153e2ee82b1269fea94c87315928fbe75dfe6753b2f873bfb9f938b2eb94d1290d1ebbef765ef95b01e803031b8c7ec33a16408840d35fbd5eb7511762ee067282d3af0f05cf67fee97265b595afb953861e451fe848b556a38a505d3b69ce02268fcaf1fe7411d26eb586164ea3fa4df7a60d8eed8cfe882873fbbeed103c16be61dde2e9b0cc543554aab07111c23912877cebe2c606b45948b167c4cff746dfd9b1d8c461039251265bbea90c0e8729ee22217c55312139a4294f7f0aeafb8eed0500471a76d89af17b66ecf19941396c2ca0c69972001c47cc255cb6c05dab8ab77fd9c528ac421c98f1f1c69a5fe2856e83746a4a7998ff26586c712f3fbe0e08abd4496b46f433f578554febdd53bb8c23790ff15824a331dad97c793e4477bf147958aa8e702a5e4000fb9e4c6418de1c463f584a797a5acc3de0238a974d2719e7960cd9cb0475087009566b95518eb53a0f234d94e6e189211dd92e5119e2680dec6206d9c330d97a8e90112ca7da4fa001e33e8b042d41bb13465194222cd4ba04d3be9b5816e34b01d110c8ad6f019248c4f65319dd5f020b78b64507f34137988afcb8639f0264f96f5cc4f6d07ddbc523dfbda859494281ad8b6aa4825a68c45abbd0845a2d95ed15795332862ca98f9bb72b38b8f194d83829b193d36495aa7955d31cbbe586bae014c6a37af681354954cbbf9d3b933c09bad4eba4195d28437f7faff04294cadc22775bc96460bfbed3e6a16e9a0c4f789e26c794048aeb964abc6ed89904662503c5ff2de3385301a17e28a93edd534b0b8ba6b4ab864ff2c95d594e03f3cb86bec4cfe740017bca967e1dc3fd6df0f81bf489f2c0b01de8249d837b65f0de5d87ae0d1af4e605e7bd94260d032e4d4aa59b2b113155f8a1a5d273157b821dfe0bf42ebbdfa89fb3776dbde633e4dc325f50dce7ecb2943f7fcb9eb50392472ce527a9d538a1344b8fb5e60165311f3171a336bfc20042c48360aa0ed60f3e5cd28b4e1fb1150746da4a6dc2049d54f672328666d147a61bdef61fdb1b86fae98cdc08fceb2aba6a29bda0c8e49c4e89e533ae56964f07b90d4bb6936707b87d735af5804d121cf28115c92b23342e637c4c8dd9d8e6e754b48d9d40574bee47cd75cb9a8b742d413e44be7495799aeb7d86505e8c08f22dfefbcdb4b7bafef0259593ad5f66daddf0e82a0ed9df69dc7f4d31ffc0514b0c551a2edebc494bcd7e1758c998194e2a498af33e97758f2704797ab1f2c25193cbcbe043c74fac088fd9e553acb9cfbfa8aafbf03a284ada99fdd5be97d932e8ebd189ec91502044af291105b049ff2c1e8deb4e580919597a402a0db8bfab704f3ceaa56eaa8bd50928a481936c208183c799500516c5a5b8ae986ef26658406e73e195951199d0896989b53b249443ffdbe75860f2ea37a2ab199ed608f16663539514174c214913e883bd027926016a3e5db7da481936899ff318f04a7259288b47ac38819a79e9f301abf0bd29fca79707c9ff835c9b491d3b261dd3bed495a07d7944ff90f8d35988872f4c220a14c96087ea30d6c6b9b6ca487adeac86a09b527c9a821e851d24dc5371e21eb21781c3fd6732d45efed20abaaf7a8db92222ba5d65c1b09fdf3940a9cfe7a955907fbf468443f95c2f1915ccb6f0b2b1bff6709c422843c05388d21804b3f2856218088ade9c4fda55be9c34eb77469e4a75fcf0ebbb2685194ebfb38806278a50bc0c45271979e0fc470ea7fb8daea29d448db22d0bd84e1272f21d7b6715d18941e106f4d079ab85798799d5f1fec92dd7f31aceee1b787a47e2b69e4c13af9cf04f74804c80b8fb90a3ca637d9a3496860214981900eb1a5555eb2f2d1ec80015d19f84bdcaf0e15961201a5d84a5ad27e2191d1b644466f9232628df4d2a4d0ca3e21272ef06063f639cfe6232a647fc9899c1912ddb382878d9870a4792f9900d609bd7b92a24a77a683fea7bd97972277f6e0bfc8447600934cd9cceb4180a010689f93065c35e5e1e651a72be75375cd071820a545c3e59cc423d8ff6a64fe204919f3ae76c1fcd69699f4e35b8061f61eafcc76142c3ac00b318fc57a9c06218f41a3a562d511cb1cc5b719d61dcdf899d969b69a40a9a10201383573a79fead7801bbce7691e72aded6cf439788745dc57426de82e13ad0d010a40191620945f78e141b169e9ca93acf5813e10cc1e286622446b107f8b1e74cdc49280707605c684b1f1b8fd48ef6ec23d3f312c921c3ab97c367720466c4bb77705da9d0d47e19bee604d2148d43f283803e1fc924e57d1b5af61081f1c032deecf749a347834c92ea1537caa5c003b1d0b8a3ca91be3be765609aae665e229490f002d714e334aac2a8b3bc9845581e30be8d37343f1389cdc17454ae3474a18760cf32286065ed8ee4fe69754dc6d33b95cf15bd75cf60d84eb40ff991c591115a213b7969792f7fef8b225c29db685c09a59aa461793a8619007488c6452b4240f72fd9a0537617021764f3071bf4c0ad8a809d6df4c48aabe7260b28e9b846b1a98acf429b4d3eb7959361c8494f3ca84d35100287712a1331d123ff56f5955edbc3fc6f491179ef17e49b9ad3003d8758b1e74afbaf6d2970d20068d61d29a1a5ffce52b11ac2bfb6d45c380053cd786360e787de4a41b8119134c562914dcec0b9d00e75445af572232e64ce3b7656436f1d6cbec2951c1ae018bf3ef516877eca0493c95317548c5b88172e5e0e2aa89c73b0a1e91bd70c011c52393d981c7f66fe0bd442604e3e7777e40dc348ba0b10a9125d6bfaf299039a42ed1b15de20a2ee625298721ca9e9238c13ecbec6cabf4823a99db9db6729dcc90c0112a3a9a91ffa4087851cf667a257d6bb10d420b3b6e27fbfdbdf3e9e2918beeafc45054930198b43e1feb2d738d21c3f8b28ebbd91001a7d32097a0c8634ce8eafb76fb6ad37c5bd16683fce5884387ec9a7cf0b2c3a69f3d8768ef6cbe9a6a2090cf66cb696ff30ea895e091c423fa4abca24d6095f77a4569da870390bbfc4e22f9e9766747eb2ab4c7dd0193cd3e6ee0bfb40ddf7edcdbd17a85baebef6633d29939f62876d5bdf83fb99dc65e024681eb6e9ff2895a9701d71d3e9a3c69d213393460ca960781413eb790957ab44982cd4037412983f70ec638bdfad2540e882e0f2f8d3766712ea46c47074132eda59fbd9520578eafcb8780c920bb9c3f9dd3f91939b1bcb05fec990958fdc9cdf9119164b0e3ecee90fdf5158ef382bc1045c52df89b7e2dda10b498770b01fb4705ad06d33ac2f607d9c9dc6b856cc7b106821d6c77332d37c55bf1585cd1e475785dc48f4b8b191d23146da88102c7af4d9ff7cb7cef11b84cbe8cfd8aa289dfa0c3680064c362299fe918af9db52ea598b82cf1ed264e348d8ccb26088fd77f94ed3dd353f2235739d9185c647bf1af993a0c08e2b6f97570a279c458603aeebad5758425d78afc113af6f7c0021fef90e3cc28f1af83a6f94052c29bd02dba8be0281852b573efbdcc72470e7cf9730314c4a279194e74291624daca3105a80df351b4611cb498e967854fc591738652ba461982e78e81d992e0c919080b410c3cd4f259b565ef97a0550f78a25a640cc69624f3699062094d9a53f52436e4102baf7221c03082a8e11dcb1d38504b2944603d6178d8285888daa06001721c621eb1ed515ab98b97cfdbc4eac5e0f757537b3f743139aaf24f6261fe97ff5638aac46303ffbdb375a4b3f77dc221038bde0b4838d0968f79d80d3cd5c3687c26331d8326631802d88fe2be7889e3e3379576f7f4cdfda49ce1df5275c56d5fd29a85df2994d264829bdf71d379e50370a9a1e69aa68a42fc903ee95fa1d4a0f2bc34e9a83a4cd293a13eb391957f01d6a195f35609e6d012f20750a119097441f7f9856076da37c274c36f789df22a1407083175911b2316ba299ebc89196c585e525ae4bcda4fb239d1ede9451a180e3f5af45703252913826349a37078a48880e73bf1692c1f06ce85bc946340757e9e5537c769464bff36bbd046d2c002ec1a278f0bfe04a278d4b0e7e03832bfb097d831f01af1a08b2da7b98577e9dadf13d7ccdaac59ab22798dad4d034fc91d7c499f3f384d885ade0647250ea8110286051b4bdeadc6e6fcb5a1ebf626d5c4ad5d49fa74fdffb95499dd07f14addfa31b636e569a97d3596b61c20a4aae13759adda06b73375fbd141d278bd34b561505b957ad579d6f3c5bef7e912080a68ba7faeb8f41f5c770ee82e3e2dde5eae1114154fefdaa3303340a04ae4b90c3661c937477ee1d8ce18a6a76ab543129b2124a86af32c2b412e371700449ecb7882927a5b08043e5723bbc6af10b7900467c4dccadcc1fbfd33dd5f8925e1c061fad88e448ce79730df55ccf8a9e12701a43bc15cbe7a5e5d7eec63446bd42211dbf8d288913e271409b6d6943be8af22818e2103d1caff75c2f097a83dae5812dbe382ed38115fdb4afbafea7070ab70468f862ee77d5bfc7e1f842c8d3d0383f33590666c803d3e318f53006ae2cca54f5ac33388dcc3a0e52003374533bc797786e166ff8526df3219a11795d0a40a929d2043d063305af38c739e6a3af11801b4ba658a6bc4e187c7fe8e5849af9e4b5532164ab370f03d6e072b7f4e0e3255bf5c28fa3bc9e37d856e1534373a80f1b0838c5195e533b4315e77001716c6213d6166c3b94017859e0a6418636404b6ab621163058198ebdd2e0341bf051ea3c85dc118e3bd4d20214af59737717c5d125cc88e0a8b70a3edc1ce04d410700afd56d5d1006f7723a0f746a4f294f071f1e7561c00444291fcff3780a15d7c57fa3285d145625fce838e2436d895ad636e8d5a4e091bae3be4605a539a2d61a6e37fe353545c395690c0b09b977692397a06488c53703e7060996d08eebc3c7277a736e63803526fad122f13819f5feec213aca9670e411c2fae69334d205a06f68107320d4e8495f5f269c430081079f919289988959d4be612158dde1933797e98afff7ecb382d3234262b9264380b3222189aebd7b0f61ccc5b22017a15e520315e1cd65c331c58066f6fae50003004cb8c20d62234f49cd87ac63ac94ca18b7269095062e8f5f77c14056904c087027e973d9cf70f92f277bf96f04064ee14afb20766d96e901da3d2ac5aa1a3dcc7d31690ab7e70cb2a6fffeb766d339e7361026ab018c22e4e85944d10ad0ad26a72424fe70a9343dd26a7bcfe4f4a489260dd9672659c1ef9160cb8e5edc7772807204cc9c8e370a65b90ff1c2b074e55c5f25edbc18722fc26d42ec3af1da2a33019b066666b9b32a947ce781992d782bd92d8e508ac8d7bc310b295068195f8e1cd6c931fcfd213db1d9e6824082ea373df2bd3a6d77f7d54ec0c0d878343cdd23c3a3573ca527bbeba48ffe6d9214e323604f7e066c4a3e23f7e37eb5be95e3b6ce16a77ca34787d99f535c14d06b79cd5c0a7d087e59d867d2ba9a4eec5552ce8701456588e07573db191179c5d4b7b09e8ca5cff7078740a230b7d9776ea5c52ee933316d850bf9d916b06e59bc7a229c8a351c364c39be05e0d7a49202a2f97691ca28b9515bd3ac9693df28953c85774201e535d9ee83387bcd2ce73b54c18caa1ee045a0c9dce63043c2883d3168e95adf3c5be6a2d10b89da0e944d6fdc6b5642995f2b59190ab0c9b4cb7ba98be271af1fca7f555cc11a51aa70478d0bf983ebf18e9ebba2bde9baf584aa1f343a61642eadbc1ee50656d4f15db55c0584dee30eade4d26ed03ce5e6eba3cf45876a47fb34b9ed3c7bdd278dedc8af46d891ca1e1ca07e8f5b122d92da0db5c98e8b9a1a4293b8de715c418ac58d22b613324c5906f8f88fbb9db40bba02368433134432558b4285449fdb1913c10e97ffc0dbb6803f5c006d8b97f6e6686d3454c1212369c466a2be9e173538a440d684528ea23d62df458a03b60d79840e088d192f2577c4f559848e0311103211b20f13d74fa6c3bc06e2198b5fa0f105beb92e7ec551cdd3e8979165c4bb9b76d0d353b7ca3aa9517374634e738e78915c088e3a995d2080536973ac4a96842dc893ce0453c1670e28d1f10798f15e0e717bffe8c569bc3da59b73b2014e683bf03c6629d4c515cf96c8f66bd34364402f0905833aa0198725ebc0107a44e603a11750ec0201f76294b9ef28ea04a4f4b0b49a2d562ace9b3afb5630b565ca4d9b35c038b5180ec4dc184cf95bdfe9dd217a86d85bd62150ae5cf51d50331a5a5d5f864149a67d947ee4f81f6cc0d240d5f6de69dc9515824358474ad73281d48db2d8bd1eb12bbb3abf9182f62d9e47938dad6cb2e169bd4477b10b009f997a02f5f858e7420e275bf4d391dbd79131d7415ce3add802f4aa7c30a74cc75931641fcbf14c476e7565604b61f01378700f79afa4ef683152282cd000460aba20daf2d59a97e791a45ef3a541f88b55b6dc03f5c33804f7bd4833f378f9aede8475984055f2846765a7f2adb55958e64a63d10bdbf215ce8878b34d2a6b93d9ce9caeba636aa8331063037d256d8b2e9f2ec9da5f97b535cf610361989b96cb6347da3ebd9e1cba8cebe633788babb16f18c03a67b44cb06f7c0b871b32289d91997e9cb1d5e348eb7f6d7b848623ab39132e67f1d916d126ec6ff1748b5de05a74c7ef899102007db6bcf145aae07df55bfa653bb07c2139d30aefd7cf6766781c3483f8d88d434265ae6824f30e17caa4f27b29cb78e657521f8b1752da738c55797d22268c10fd18309797e9f49f9c66203a8bca847aed42dd5fad0e68c6e3126adcd06492a1d40b3676690ec76fafa4d69ee6a4ef6cba9eac93df23ed183a2aa3efc970d8500895b3443c866aa52818f577dedee4a0337fa6087e6d3942ce7e291d279dd4884650e88ff7b5ae8c5fe236169ae68d69080c61d22470fa2e014128eaa47964eefeb5c0fbeb08381aeb50d2a987b6c6a0ec36af9556a2dbff217cb06236156e2693a171a3689d83e1daa0f771b0e722bb4c5c31f947c8d16c6fac3e0d5a93ffc4397e3a5be354541997f19668604318c6d1e23e6af4c27974951590cc133ca2c3af460a41fc9c9e7bf179dbb0b8314d18d878a1fd639863770c39ba80cfdc4b1a8a76a09390341966c727f6b01a6e6f666144d213474ea9cb8265ecda4a7d0e3be2488b5622002cd483b233cac0cf925e271b9cce61a1b51c55f2a9062a04fc9a919b8a6d7e3110c51899dce8fe7c7841511ab1b4c383e51d91e1762955a2cf53e10fe25bf72b84a4524e06dcbb064689485f5c94a12c680e9b16cab1614b78c7a3a43e9dbd1bef2052fd787a584b272824a48d4f0db62990ceceaadd552cb2a8697bf5c443a2b3df9a4f820adcd827c2edfb88637113fb98cf9338d5473e59001626a7a64e0692486f6bf02d5196d1135134fbcf0b1d05a24355a44ad4a9d81908d6c07b1224c36c54df39c9a6496fa2c6eece61ef7c0a283d687ef1fe2d44ee5dcda1bc77925df5a6425647c8242e77959ba5d3bb28a76ef2d47ec07be70be9fecf4048f3f77c6d40c3550a9520851f177f534f2523fb0115ed94ea1fcada7b29164a72d4668b54852f365f4c374b395da977d4eae815aad1e402de4488f8af92ee8e5a8a1438c5ef1ff99f24e75a63d5f5110e9749581e1c165f7096d31c1ea47e75ef98cf43d8586d2789348eacf79c6be7651fdddac32001150499bc423b944dbe4c02ba3e6d4cac6c693afa442fc4583fc744af74e128646d1785f66e2a36f14fcef8f0ddc13b1797172915d0c8a9ec94f8fc4021a99a9934657d1dbdca0dd90b6c4054c5d3d5aa6cb961dbd4515cbd8e727e57d72777f95862d155cc2468ead19ef41985917390fe1d3894edc1eb4a7245c30ba0f8c3fcb3722b388492231de2c420a1a11d629b86dfec70a934d11e55cf34c49bd504908a8be51bf73a22bc718237506578ee2d64df35306a567525a38ecca507e2116dc0787fd729e8424189c751751bfa14f8ba32d88729904627ea257b8e1d54328712bd2d527330049729f49c1fb80252c125b24dbbd18b61364ac612b47cd74fcf08e35785e5565de1a908f707a46630ca6cf287032e8be59f3abd7c73b4cc5cafbb9231267722ec8bb128a6b806ffac2748417eb72c56dcaf139a914cbcd7b6010ae70bd37b599b389d67f5edcb8dda973ec0b0001ef911dc44d9bbb45c2708fc0aba42d949fc151c3a6f4f1c6b5b05725a1b29d789fdee2efc0a921f7dd26453085f6994aea4eb14421d856858e8abac9dcccaed369635155cccfc71192d658285bb93eaefea247dba258fab66ce697a9a613bf531e3645107ba4172e18c7673ad0905db1ca1af169414c3f261951efd32445ec31df1b59926cec6ee9ae22650b4060c60775543419c80e45c23ff7c32e1b2bf817292905c5accd53cd1155fbde30bddc54c19e01d438059fa6dbd9e4849ed1fb53ac286885206186b1a526f28cce347ff1613c047287da1c91efeac7d2eb1d8dcca4934ea5590b22f099035d9191aa04effe206ed4629b843488bf05915a3714b4d2e860e1e5e0aa04324257f8f33e77e5f537087fd85ad23a50d002bd81d7525198b2ab64c7fc472c7ef375a70228e3be892ce44c9c643ffbd1c8d892bee1a929886ca4545b15da7bb79cfb94ca758b21c0031993b43e250d667f63c5f6e91fa41880bd4f9aa618c97910ef61202dbd2e1891126dbcd06f54da272680e4fcc53c60c25035a4ae9c7b0cb0eafff6d04b12449b74d9428261da07adc90235046d893dbcf0fe39f072deed3321402cdddd68b18b67e84010f7254341097dc1684715e6ddb0ae1c83cc6310685f57ea3065c442deacfb6c6dc6db465792aebd6290448771df653a1614013aff52af70b4032802171cf4749e129326e6107bd9fbf6cd141f6f5f0ee710e7fc3a4302926a3b15ba6bfcba14080ffdb02693ad03c85bd9e9c6e51d6d7eda3df42b1e41de30fd76ed1e54db5a03d67b14851d836383d3e81320119b6fca2ece644c75e9433d7bb9c6ff3598f336bd9e28c0b0edc7fa2b51bed98860bc0e9b5fe20b364fc695d9b8b7576d45d796972e7d2e8b1ab853d59cf3d4136c1bd864cd955afc9964b84ce8aec5cd4db73c81416eefac192dd9072c40ef942f39f026ccde887ab7d8a325e92c3b46fa5626cb660004d16b82c43f74fa637948206001f9a10b52214ad861eb3d58b99fdeead25836377de3b4fa1b4a63cc5bcb0d30ad68ea7b3428c23df1e4e54cc9c13b0118b75ed0005f9ad4e694d82c3a71dffd6caabb6afc950f0067fc2ce0c2ff771ccd90cfd091658981eabbc7e029df34175814f973571d78a1d8fc0013850aaabd778be7bc5f9c5255a02eeec88d207967d81d60749913e3cdeac8cebf734d519efa0320e0be16860bb35b018d7483b2a582cf9b3779c25a5f05b18de53cc25e31b6ddeceb5e9937535bebe3a8759570b1e9dd6079fa11871316a84523f1049d2bb1c77a01c2777da33b593814be671fd4bfacacbec565e17cb5f2bccf365505c4c9836a7dab02b61247ab0745e1b2a20fa13d30e5ad489256a0cf29717c011a9aa9804e72dc814897f4a7c0d0a377a461bb999308536f8bc2feb1f5f1609df80968b7f29ef8e63e812d24d24da140a5e2183db1adcc826ebddb6ab8288f46108636e427f5c6ab002a53bd98572084bbd7b1231a5b360c7b6b61399ccd74e9168a656d265a632a3ce9a3288354a942d3443a01679df4fcc26bfc61ac9b09167ba707d5cb67197a2d25c1cbce48c9468df5f0921f4803b360b5834ff6e0289b3808ed639dfb5d23f51f58b9b784ec7046230b0b7149a8efd98650942d887aed765aefa03c2bd66ea7784e3ee2fc2cab619c5541ed7da3c82dcd2cae1520c433508c7d7b1549d2f50355494f8ef6baa0ef4bf02289374eaaa6a5c7b98c169ed945a99cb3c5a9dc7509ce4ad01e00e24bff2e5bc63f0dd49fa3934bc7e7c8199342852e4ab1d2db69424677caa3dac55304823b17a046e7470c6153f0de0a1ffb8fc68e825c6eaef0f266c726417e26d8e3b694d9db84949d19a21fb31fcdbf82ccafa3de051838c2cfaf72e19ca7308de4e3f1b4b57bf437a265e382258d4b2ca80b325710786cf1fa14f6cbc589d505db80771a44a4fe96d7714b097ada306c6bd9af874bf43cd3ad7054b756f3c3ab03ed21c4c79b64f0d0691f732533c7f22aced0141977bea69a27dae406c5880f63fc0214336fc32e492c5aadb4487cdc6763e5754f985a87ee4b7a6ad5b3df4fca7efb5f16faac71c290032698707c77a7c7d0a4b30e2504afde1b7586c29d49d70cd724aebe5ccf2b8b86562dffffc13f0a019f39c3c2234e4d12727552e9ea5247c2c6242b5e41a1123e3eb0f5a5ddc3dabd6e01baead05dddf24381433839a3430c799e5446184ee5b7af4cb82ccbc892bff3227226bf1af10f84553c07585970a550be8b1ba9e331060edc28aca4ec13c8824cb159cc8f66c93d0f769592e0cee3475f56cc51e7008a45b3f3660f6bb009d5306df88c921dec5c04df9f7a4710be4f67c8195fec16d2149b555dd04869ae994362c8af4d7c04b245406408429d29db091a5bd98ebea70f6fbfaba3cd77af41e335dfe8bb48029efa2e65cb059cd7398814475b5b884a87df8c1c24b0ede8c08d5689da4367509581bd92e5a4d3600c7b9bda9fc55ba2fd33963d52b43da3441c27bbaf7aad39346ec42b9fd62d83451f277b57a33cc1234d2ad59fbe7f8f5002daf13fcdc3b6fff185e474a7099f5400e62fdfaafcd20bcf1459bfd3a683394b9ddabac54f6887d1e6679154891be13a79cbb33d7358d66228d3c5897eaaf52e8066e91b778f2e272f99f246fd3014752edbb9d2879ff6976fb05a311aa000c0193723c618cf975fde095e32a96cb519ce42a3488b2cf2c24b01efc134aa60c928bcb7a488f8de383b98dd5c7b7007ee7712e33e4cd54f36aeddc8b755fa523b522f94787d07590d0164ae2fb75981547efb36c17b8355f7fe72e8bb52c85f27177e1aa0e4b91cea6d19fbe9173649c3e9d3f30bea4e93dd2f15864187900b63064926e4532c563059a2c2b00122c349f4816942312013cffc1c7575d1ccd68ccd3315dd3dbb6f241facce8628de4fe729b9c2395dd2620dc4063fe0bb1c32a46b6c740b4d2624f3cf4e8dc574eaefcc2328d967c8ad28c4c36b8f9aa42e924cb1077ae3bfef73097207dcc358935402b88c544ed32afec7ef1f0ab4ac58713f3a1134290662e809de8695ce77face56d959e47bdc1dead9902544697966c4d3f812f9f4d6bbd1a29427f98fab8d195f302759108ef83978fe3794afc3d6d9bbaa3c2d93875a7e6a7a5338d0c14fd641437bf943e7a8a19e183786329d0b277f081298dda043dabe1eb9429fa2d77f39499676cce825a1937f565dd430b11654bf826eb9680ac2fc94ee438ef2619a0dc9eaddce90be8f9a9b255574061d1b688fd838fdddff9e65c2ce3ce30e264a92fbf0e3fb10e93831caff4ef3d0e448b6aedd3726198f39d335b0d54443261fa5dab122449fd880fb4857e5296c0b6705132912ecf7b3c6540f586c44870a9bed72d15f75bf40b802970f36d008ff26e3e93ebaa8c4872861b85cb6d8fc3a909131a32c6109b6d21eb1ae8641c91a61c310b3be30a87b8472e6aacfc090a04475fcff1456388f26338ab86de738e1c0079a92b557c89290f690d088e80b6f9a00811e8f640bd8d6bc8f42b5de66f84eb399afb4b5a5484c0512aa4d31de10e46b36389ff7170b52b44da28a257716ad37056319df80033d4bb46d1ab8b09b658b930b8950ba79258d452338e0eb2933e5322b720ecf12754fd8370551f163a5ba0bf0a1e4409b53c85106d8305f79c5c459aaeebf31043372ce861894dfd5a99d0bfd20db19e2d56c3a2fec3c67f3057098df8e19b8d12b183b5a2b2cffcedd63379d849a486bd0dec40ce4d5768713c6581f613c75ca11834fdd22202ab5be6f29f9e6f6e1b54293696b6181b73ce06efdbe6f477c054852063b86c0c09b2b0f4ad2a378513b8e63aa3fc5ff18e6c0c35814898aaa73ebc4902768110f38d84c4888313edf1eb18c24544f80f8f6437634c37ce7a7aa69f77ec896b32ded700657ba11de8382bbe6287ff66894559e9c22e5c6e809f7986678c30b704a40111eaf970a13b9546079e8d55293afd504df342e22a5deb17f4b538a4099532c91d9f3ec00d99e0d4b80b6ad88c0076a22328653559ce041197be3f652ea147a9c633839efcebccd843babf05f3d61ea03e291e8803904ccef7f58a3744f53bc6d8839d97b8090c373d20b12dc1c669fd7b98df0d2febd0c90989f6048659cecf7edac8669303100fcaa1e8e6053c7d19cdd316605604073104979111c84e0643f600cd022e851c010e9f9fd0c3c027553a85d8f6e469aae919dc39eb0f41b13c93e5b15efb6b8a3e5724ccdc71fdedd1421c5c0ee90e9274c75235f4ac60348c29020ff953e45ab23015e0eb7e982d2c1dcadc70155302b78afb1b1bec30fa26b7d12ee3b2115d794a70eed26125550d5360de016abc8d22d9992a84d92599c779798f1d983768372ce1aa26f22bcb1b4613e14d20214ad73b608a2613866ad63671e957fd22889dae9f6f3013f53c5503cf98e723d5ddfca94b17267800344fd45895154e72919184799d2c1bb4f95f09622df03a2cbeaf347362751f40f08393b7d58cb5bbba8ce4d0425948c557028439ce520793f0b1957d77358fa7ccb794fba1dcb041f61194300c45b3ce9adf1112a814ba92a3f0b179ee30a055ca473336d3e5acf3ba2fa1913dbcd1071a757b1b3c1340915b65ddd8260bbbcb7e8778b58fe43d7313bb3dbd5c467553a4bf852d547a12a95d5692ab6e51b55d73165ae61cb474f140f1d951f4deb13197f339d531e8a3184d0dfbd58480f1a729b1951808b29a85e19e31f30525ef8976c8c9ae6bc723b205885647c17d0069919decc0f772288f943934f92628026b531e259057ce96600b6d5d2d3d1a8c65a68e5eb49d2e2edf33077a790f89f83f0bb5095a41a9bdd5147b3a175e2ba5371c732ff8adefc23a29d882a5dba004df898ea2b5ac013ed507e694c5ff706a9877f26925b8c6b57e4c9329f4b8c99a05995e266afa16b1d0fa2c46521b7439ff8b4dae7b0b660f45dbda71404dde214b86e4cd0cb1da602ea610a50fb77aaaf9d8c18fdb2901c7c647d88dc2c476f05faab55c87e6ec31604e412638481519e7c76d19377becef110ddcb4f41960251eb99a541784f900bdcbc1cf0944ac1497a1258fb8997393801650106b7d546d933a754f166459bb82ad715350663c72f613fd6869354910446d1a68bd1857a249c030dc7c8c84194362e640b91e4b3a0c0930f9cfc51d3dce2e40f051f3b8fe6f62207156344885700a4f57845b9d7441dae633d56c031472b362a7dfafe025ec2143d1e6c3a9811eb731b2dd765275bccefc821bea0b679f6d26891efa4412e7606d2c3fd62f18806c9ff908e3f734796f73edcc23fd49747754e8d2cd1f4a75e0c60f24b2441535419e7d5019e007bf33a925a261b07e9b8bc6e60a974bbe7c43e46489c4206b33bf19f4829c670599e00f14fb9a8ac74b2a7e73dca8198bf0e3d4a20a578004fd433f90232969c71ecd21fcfb8b0e86b0c19c8ac18f66d315231c321e4025f38a967764768533ed6d2d6848c6f2c2498ddadff9ff4bc4cb329ea850100389112c7fb68dadb465c34549ee51d0b39fe632c5ce229c36ebf6dbe1e6a48169e2923a4b856988bd2b1c40c2d2dac1ac9ede89906dc1496d0c60aac02c7730255b5e8133ce7799f50bed913b8bfc156fc800fb39d3f23c7efc17f8f9c4e2719beb09ac6d6e6bb46f1ca0ba5db38ced86e057f46f6aafbd8948d3fd59d0ebb5982cfa2ab55fd4132dd0a3b0c519ead56a1830e4c8b5290da85c85d9a677de9e9b5429469c7c8b766f4718267d375a269f814ed4717535845bd89d3252ee6e67b057e10dc23f06eb1aed80a46ca08b02b3d774ef0ba58f826bfe69ab3f262951514904083c243fe542aec7ecdb4da8833bd22242beb8bcb40a594ca7e617fc3a4683d02f6d6ef6824f1b0c2a6025873c68f95b3fb648ffdb73b31cae9ecdb10f0ed14dff3bd131441c71902b40fcf19ab8c243275646f302a594a384db019ff6fc034b59d49c2995f1a3827f0e0c946a96f9d59afac02b46e99e4ccafbdfd1cbb8dd17fd1cebe9e1bc0ae6fa51b1ec2b3d51a9e22c9726579a85a1704b9c1748398627bd9abce291d5a8406380ec002970169f3be38ebf85f75c1d360f53e8ce5b242e895c412dcc672a14105f2c0d768e1891097a8ee5e5e267c41e213db82ab7eebb2e08112ae5dc5cd7474033309d679df935633f3c6693360044c44622a20048e0915e165cf47309ffcb7be3e004bc2f6cec14425897cd4f9f78779ec5e132d67839ab07ed87bdb7be40a6a868375b1d8579531da2043516d9022ffe0acaabc7c7d150d04e8485bada230650553bf470b2cb2924602b4d51a99d7f4f466727395127546850f8783a9639a7576559be9dcd707b8ff1fb09c52b6de13091fcd3d719b44c5869e32e9f316ab443c11b6329a7f7b84b4d0d0562f7fc9477fc05042221a796ad2fa8c4f74585d2c52a775b52e9923e78c5b2ddf746e75d00d1b53caccace44d769c0c23afc8b8e57facfcd13d2a3618c833af2a63f6dfee8e9eec63ccc6b67620c2d5505deac89ade514126ae91c253aa5133b91fa685c74f0b071b0f45dcc5f9aca3a081002170c36773e2633e7a9ccfa47d6f58805261537f1302f156dfc231695999ac60e78035bd32be7bbe8e1e865bac6e72cbf847ceee3aac99febe2d5207c9de9416adde4c2fe211fbca4a8c1dfe2d8eba77c560dfd8d32255b84acf385463c45e979c4eeaae36cd09b9e0e710608849d6259cd3bbb5f29fc492d42d89f65cfa788fc5a59b9d5ad847188624257b1d71271d38babd223017b953c0f5b43baee000d97703971fc396d2fbcc2e7ad45b122cd0ec253e07d484fd090b1451f76047b32240aa75183697cdfad595e9abaaae5631e8268e4b1d0da0d4994acb4ba55df597592e6a109cfe23cff42e3173da05b9f4e413dfa5ee296f98f8b7988e1a2ac352dae1dabb3cf40f848820b07b2b77b83284f427834a2a902e01934bcfc6de5e2cba8c2a964590a371cfa12dbda073916d6d0e27f95b62267118a5ed3fc45714a92efd73541151e7dd384716a32d437e57a8d61f2a2259eb718ed5998fbf79500ec507e3c31f884290aeeb29575d56136f1cf0b244eb5c659120d76c799f571dcc8e8feb0e9cd0aff47ef6ef4ea96a51e704c51b6096e4b476947deed669b26fde79b251c7a5f3114fe336ba358855b82d62ae9a7de6a187c35d664abf543196e2f02956607a3901686b58bc10ab9e4cc4b7c14964b2af142097da1b881fce20c4af1b9b069fd62cd6895b286a73c60d1a0f0a8a4d47b03539ebfbe8e830bc346eb9939f47928487c7407917d8d12f418cd894e042bf00c8a036b8899acb34fc2af46358a7a91517226eaf07ff3694123dac37bb0cda98f19f5795bddb56351ca03c3fb44023a83a13744345305135f39d5138afeb6faed86f73a49dfed12be6cb1d272a87345b3b17286829d521137741a32bb96d92f206804502bd78b4c1da07d0243d9e4a763133a1c3cac6f8b50e101633801619b0d517e8a07f7d95fd2fd3443315cd1c8f7a5b0f3692279ca552ab13d5ec6c004202917aa4d57f201933db65edfcac580a013566b611f3276189e2d8b95ef5e5f1282019f19f97464484c4752159a5605b007594b5227ea459de6c63d7cea65d0619afa144b2406a1d8520bebfa6e96021ecb2cb54c4f4d0eaded4c11f8b2730cb1ea53465449bde2bc1b06b8390ea5af3b64903d2d9f3c13d4719593fae6ddcc8570eb34ed899bf323de74ec6990ae03cfeb30c29c8c0628da3eb2efb96affc1ef66cac7eb5d744f5c38f57742079672666636f0fc1eceaeec55b49693ab5bcf1c6189024778de8cbebb93c1d9024be66e372689c0f4c15ad477dc36944003338696002940ac607ad22394f1d1bf609a06affd591c7c8f45404ebaacee0c3c5f93f77d3ff8eaf196918d85cfa201398f62c20092b026e03c0ea829b18301a16b344b1e26469bb82aa27fb09f4551115038972b01619f5b72f6a1a32159a0e1a76a6fe507066027b0942629cca944540092af3b71c0dd85a6adf8e55b378b9be6c0f25591c84f283d110d3ead5ee4e495e9fdf56bee0c285350b023e356c76570f7bf895316d28884df5eeb3f742710b03172656f5f86d94a1c1129b08e2842e2bd454202d3bb441cfacd607b08950653e9550633b37c10ce84388c52b0e3396f56969f7db33d7ef58ff3f8e78a2d4149fad062b7ee6d47b74371216108edf5749312513d33aa7813469420af85cee2e94b991792694a08c4725243107ba2db33aae85bb387d521fd0895256cb6aa64d55644a3423d8d25e7c5ddf1affeff33404a3c30a214b020a40ba46d6b0e2d3f32e4811c4cc5102e987be9f3c0a756127a9bf5eed675d67c05347f888454641300e2302d0fc4c58edf46398d54c163e3b19aca49f2f39418fe50285205b766d6c65b53b0dc4c2edaa77ba60e7f4368f8990bc244633fc9c2f6c395b4e7d08d502e922bcc04a3bcf6383a77d9104fe2d9280937d500552e7b44013d03af53a00f44118ac754f3be78cfd987450fc61ea83bd44cf702937c76512a30bd9383a81aae07b4e82f0c19cf72ff90e23ca0b3ed906e955872c4d36aa35d2732b1ad3595e3320ac4f3fc3b96f7c726f5d924c9db4e49e652f68a51eab629290c341e8c376210b4bdc32d014e84e9799e639d9cbc4cc3b052532d1c8d0bdd1bdc1ccd0476b07a9f6e3dd537e8110586ae9e4af21e5f28e71deb30d511fb729dbf45cc04da014bc93fe5c8ed56ec4c4c459bc02cf68a6465ea99f5a25edbf156e8180f45c5bb9894607f8423b0e72574cd7f55fac164a7af89dcf5b0776ef3c336b24ac93d8a8d149e98ea7b687ef506f7fd408092e84595b5e93767c12e9a5c938425e5d9af8e60f0f9113fafd6c9baac7c7595fec0797da85bce46a50f6d6fe4a6c92632a3befb8bdf0c6c09ec67a7947e84838041c259cd9f0a1d8fc6fe14f7d211ddf1f3591d25d7cff2b51d7aebd997c8e60bd0039294035c94dd3ffff1f01ad220c33e1bea0b21dc6827353adf0751797e28410a0da50eeb16b365b38aac72d35e838f6723ce055001f1d4da38bfdf5ca61f4d278b0aff6ea7c55539d1cf8a4b0da683086744ac12bbc5079bf3d87ed46221077e8000a2d78a3858c233e849ad29660919dc3c208005993b5709429750b06d0a3351315094497543ff1e0e2d8d8be61a7a72dab8d7d5a1ead07efdeebab85ca875a8ab0277130e80a9a6ebcb92a7c20ce770d2d2c07a9acd44f657d8f50fa64633471c42bbb247cb73bf95d1aef797d3e98d132c2daf926f337e9bb2ac887a5926c1450edeb8c088b806fc480d4e112f381bee925a43cee27934f87687ff594e3f7795d3cfc3dbd68401d9af7fc07c193883eca9c5957fe79ed52129b23e95bbf9e4ef5d2ea47acde553b6c6a2f347fe4830f397e3abc65a04f7701037d2c87eb4e21a24e02437c1ae4c6cb3e293ca6b2900447a8f8e92e7de7687219a24b77f0c9e658d1554f9dcdd1f8f80f2d73d2572c0ee67e57fac7065b3a3951d71364fb046003c908c66721c0cc6e7b8f6fd423c718da04eebebb94ee939be75388c9894b66e75e0b9e17953d9835045c6dd9804ed90ca9784c74b0121fc3b0556fda3a254b6f456ec983a0c4df5bb953c39c0cdd69b24b000c9233801e6ff8338245713d8d0c96874cdc5e68b507e8d85173ecdd3645f1f72c0c22fb6b2de508d85e6859fe68634c474a85163f386eb98cded61caa7bf74d735f926072d1a06fa92bcb0cf85e1c5a84b5a8b86b46cfd0933e8a5d94558ce831032e2536fe532981625a9e1ed6f4acde9ffc7349a4170f0d44e9c7f98c6353fef3a16930bc2d7943b321369dd5e726831e9cf11d5869158c89cc8b29f050058472b4b030aa0f89c6d16e6fed20023ecc5d570414506cd70c6895e3b116855d3e42067344beb474e68736a131621f183a1855fb871d8ac0a5caf2cb215d665d0e27ab2174db467a647962f79ccd722dc0c34d5b6f3b79acb1cef13b3858e92a0cb91a823d618678d51c9ef20cd75ce5036cd7dc61b8847e3cf9fc522eb960344aa5463dc800003b4f5e9de9e9524a29c1e5a16b979d7e9fbc26cadb2dfc78f277def9fc111c25e9bf4c1fc067804dc782cf888806ea656cc732d43fdade5d99b0eb6a8cec1a942b2e63fe75a99941eb6e041118d97741860077ed0748fa1c88569e65f935422e0c612c28aa31aff142b80a6a4aae2ef8d93d1c409fbe4d1e26be0cbe45aceeca0efb266d6af9675e8fc5b4fc9bd3113f4e5144d94766f11003ddf42ed683a5ccf9225a0331720a96033879d90652756f498d6eb43a515e1ea1d03fc95758d4a0658c645d4382624e642314628860027d06803ae77a6656b60bb299f3a2bf03850169fcf3ae50bfd69e16411d2d813eb330fc98561de22e4378ebafca6587cca6816c9d60c22a663009495adf82ea7310080c0b4e59723b32888faf2e0f851cd07398c5390ff701dd97b6d34b202b98aa2266f0b386d444e9e7d05507218887e497037845889d59e04a4750855b3ae67c375f4cb9e58eb9d67c55727c5f74fe0354154445e8a05e7a73bff8757d4a3d19abbc06adfd7fde276adfb5934bc21a0062f6e313277b333abe389e5811a70b70923414b561186efbcc68e1be22fa41b5a4f7bf9f7ae2a3668760cac316379383d06cbe350de50d558eb848bfdef0c4521a9f7706865c1b4ba73e3b27ec1aa4a5fae625b41f0b3e36b227e18a39f7e10fd496b48edff89f63cbcc04dcbec8f1e0a579632178067da0a52c9586b1806d36c2f47364e878ec3019037268d94e078d56994173369888b4cb59d0d7e548c8b5a8ee5029257213ed18567066117ac2249bc5e871156f76e1136fe9a235bb334586b9c0b8fb6d704bd8742caf1f7cdb2d9cb384762ae3d20932e14f6b79925d9c51f410893116bb8dc008ff6cbcdbe457d6401d00a86e0be13d8d6cb8a08989f754ea51be50f24957dfe1b574ad7529ba68b10d389ccb7d86c6d82fcbee42d8083011893aa5409c24f30cf1b6c4206137ba77074da99f22487e6f4484d5323d71431e5775064e9346cbe71757b22c85a949c4ca857914fde8172a0ad1f9a4c8524a1a4948e4e7becbf4a6b23bbb2dcf578fbba2a3b3b6d3992ed9c9c950c5259e3486a4035422a662b557d1104c0037ddda03d9a12112a7b686f1789045aad78e0eddeca7b39e271903e9e6e11cf352ada3e5e1038ca61f9c216eae5e2ae5f456ab47bafdd1ea3b1ed9289ba3f8e6db4d5897bc6322bd582da7b05c4d2facb35b269c8a2808db4b3971b673172550a1dee1ce34a9044dabc4190263ea936b8082d22146791e4126291a24c84951aa78d2173150f8a401c456c8e577d2c5aa0a18c12e6c23a5174425631706670025675d369f420fce0b66ed3016be3e58a56260ecfc4720f43172ec58e3e349807d881904f6178eb51f4b29394f65ea165b499e2c254aea794b687696955d1957686320b29ed06fa60199c154f1f2cee40e642c5a7775c12911952ad7f48d504909c0a56d398a0a0b14f8be1eff13730193cb81a83393bd5cdba46e6a117d04d489b2439fe5604abba07bb29c30ba26d9b538568ac09638954031f31d0b7b3dc97d464482615a677a6688637a51befa9a061b76246e9cd306786bd8a7f555b045d1f9f97f1dbf0400c320c6ad2729087b3323dc9347e6dacb7baea584c2222ba1a4d00470a44a75b611cb0e2992f4465bf15b7529069ced0de69ac2569b230565f874dad0058dc457cbe9dbc5556fd76a3097e1e0d3d3002ab302fc4c7afa2cc0db44a23e5a79f1410580741939544f71912423485e29071db93cace5c2975362a11b4e25b90fabfd6479c1d1c0009ea32bc633421903d534e97e4c72803adf7feed1f7f594b79962b1cef2d2ff6857e553574b373dcf407d06a23768df4842e98bec949eb1adcdcb98bb0899d3a3ec736eb053c5619486585ce42937dbf76e89d3b8b9146fc9637c581e9d43547cfe8c11e4b7d2c7a84bcef09f7b17448e03464f42ac8b076d9c630f78802d97983b7f3cd67cbb51a342c5646b3bdd99a0554c432d25da96aee3d203384198fea39436f32cb6feb3aee785c09242f7fe9a9e66a5011b32f7f1fe32b09798c0e413388871896ae82710b030067fb9e2e5ea3278b94adf6b16d335651b7379236414d66b5192d91b11b1ccc496b23e26ad27b17b6ef357e3751a2a7bcf43fb34992437e95ef4c8c961b1e933a87754f95a02afc1a29d3bacd8401f4592436d290322ca6b338536b9ee960e8d0c8cd9609618f9132e7c1fb66b316c941a545ebd67e6587e0cc06d48b7943de292dadf88f5fce9a8494200e2411eeddcb82654413d4babeb522ebadd3833c07c4cc08ee05b583b7d3ba63099db9459a672d3d827cc031b2169db3d52005a84410f6a3025e473634d34bf50341e66a57207aa776257d2688fe5d2e8f6a4b2e6ed425041cd37461ecd5e0ec6358b91dcf425b90d62a1b8062b797b615d95052bb1fc97ec72b7d2e9f2ae51d7d1bf49993ecb8cfbfe8677f651e15f362531d8b33e4eedbc1e599eed8e27db4b7d1f856ae94759cdb5f28e8fc150fca74b2b09d0d91a91058a9f75a393fd7610bdd15fe68668c2b1b0a63f20f2a48c1d0fa034ec01077ff88bbfb1d4f084edfe7db716e982ad37549a8e43daff28ca7b38d0638e745d6f98dc01f514e2f431b1117e8d40883fc02f586b1184062269144f3985a6d1c08d85e1f6ce978e86c688a638ad9ede8551b3527da1bd30b36f176ae6418a10fc7842794f7e9453c520874d4372f791f930b36f9784aed9b85e59a6d2b2f396102cce76c76c017b60a8d7b673ed85db8f544098026cc9adac44eaf4fadf6892e9b7963eb8e18b2eb580f4b0a7cda799baec97354eae955a89a6cd4706228e38afc9ce762390fbebd773f93041cb041e4aa8619c718b6a74b322fee54237d5bd3541aa8e32e5e60c8c809f6b33cc854d1768ab26509d67bd16cf5e9912d127fbd4030b8fe266c5b77b1226c918359c2f8f6121cf6240eb1b6a48fb0bc77ad317c881c7f4aa0d7b52344f24e7018c98a0f5f24ca2cd83adca4d6f409684b42b699c90fa5aac7e751d1682679dcf2302beb4865f53eb44cace8a1a17bbac5f92d1de8ac16d5d9a7becdf2b46fc2d798b19d6f2e0762aa475b0a5ef6da4d49183f9031733f57d8fc2f7d99dce52d3e9f8c390ebec59e105bfe2b1d06948e5a84b57241f2f086ae3c41e5d95e7340f4980a1fedbe68eb0a2cc02e1fc397e07d45b6dc015e7258e2148225d55956269ae4eadd27b912113aa6d5a9c9a3b763938ace3516da579511ab9133a5a56be008d9432f79d225bd2654ca2bf912cba76bd270cdc9b6ce0a1075da6a5f936d70aabcf1de058d66905aa9c8845721ec0a77d9eeb7ae0afb9889e00c8d86452eba6d7926e798c2361a1ef1af89f64a58df0028932d437950eac72daf674c7681dd588d0f5fde5883ced23458edc0f943036daf9a839b6862aec11a37c7369926ff2be365d643e073741bf1ac09e4764513fa30b84af780202f486d9ecc500d9f9b30bfcb6d2bd4b95a6c4f26e8f17d02d6956bc7e3dfd2251e34cec9d54ff8566c530e2590bf09c2d150fddfc08d03d5d8fc61872dc90d1bad68ee6f751ea830054c6f406ec40efe90b8ae9ec1cedba9f94cabd647b8835a9e7a9436d99c5a0e08f33b441811e66ad5de15c4ca9281f3fc9fcb2230a6c4e8afef4592151f1f639af030f1b8a46c5cde580434945f8b31cd720c0fa78bbf621570e039b6861462be0a78d64fe58eccbb2b6a28d0f464a4ce4b515624eedbee5aa1a101b4497b6791f87546181ff9242a85f1328e59b7ac3c2d1a174c9673ee64504a828c67ee9da4a9ea3223e6f3bd125afe9962f9d2911796fee9c81f1f8473567cf8f4f53c1fb63925bf44cc30629448d1886d9532d80ee347f4f0c2518a988f26c6c17fe66935ea69a4ad72f549c30844be5cc6062f5f65efb18cff3bb1476039ef39976f269d8f51d7648ea9ba814425d3f8e64f015db436d13cd17afcd8f1860b314fb657ae9970f729600a218c68919718a4c916243824ac895fdac1f07b3336d68423314b2484afb94d1f9262255d16b63be44125bccc6e1cb19a7d7b7da98c106ebb866732cb0c22e255a5bed7e37694c684777cb6e421d5284d7ef60ec5a56620ecaf89c832561c45238019555a6933ad52ce0572e1b9c963dae5571a6dff20dfacd4507036b40828d87e75a3805eed37a661747f2e704477ae70bb4074dc75d71692e8b21e6e92068abe51bccc62f46284568c0bb3bac1a41c8533e6b172d0eac148e7a0f677eff78845fcbdfe785b98d7b9a4ccb47de677232a04938e120ea609b756f158e6075a4111e9640e9f58e1413526020694eec87ee1c37fc01edecc4045087ae232bef45d725a6846bab0b979b3a6a8bcd391fa89c44edbb51970d7eefd333890e87472ff08e2b8311bf73fa73bcdae07a7a4dbe46bab74376fb59b2e0370a9ac4c003029439e00118ebd64d14e764fe506bad3bae053b0f989d3a2335a66b2d3ab81b7853287ae6d785bfaa65dccfa38cfcc929c8ef292f6fb91298a777278e23734a2eea802a9304eebe732cdbb392d21bf95d784307b1316d7f70d9f26e1814c2daaab8c3b8698b36a05aae46efe9043bbb85a475a4981e727639540aee63e0567839e54dc0bf60ddcb661ac81fa3084187892f1c604f260d7ed18767426ff7c5bdda7e546a7aaf7c94773df926530a4d79af0f312d4e73146327f65e8b831a1418ca9e0263b8b201e848072e73ebbd915f2d1d18b6a39156581762179578c09c5768dc70bcfc513eaf9b9d3a8433a8758465323e2d2951ad8ebd2b86a71fe933079d42f10f155f08ca077d668c5201dcfe2b7045cfa0e0aa3926c2e0dfb6cd949fff4272485beaffa583c10f7346ce6f972fb2475fdc6ef703f9e8ac25a6e21198a3951ce04bc3e074f2d9ce02e976d6ad6324fd05a4e418f1bb4e651cf2b53432580c48b7a3fb0b9de65d32e78c756b696fcfa61f0f3063d1ba369b2e769266ad63423e5b60e33cc5ab9a6b50d8361de5ac01ccb44105884240abd8e3f24ba7abc0165955dd1b374a6574beb6a9ab0f6c10a2527a65e80c41b08ce49562870f1f935370fe71bd8ab3a30cb804fc1edc3ab4951db5d8c9f2fe267add08ed6b1c0042bac79812a2323261c4c68811d77407e43d0a8207702feac9f24581fc2ece2a733e3374e2fc9d234da95c52dada0e136d1bce5228b93744d3ee62d84641ae1fd8f0d1732bab474342c2b7665cd6c513b6c8987f6dc9f8b40ad5706c8e18fd3cd01052fbf3b906b5f48aab03046cbbf43b401df1ead21a98b9968d5b91c9c3c706b53ba4e5cec87107bfd27cc58ed69b7f70008057511e3d8a711c3cdf5a19ffd78d67e0eeaf6d57fa1a93a5644e322b4aa77d4f418d7b876ce0042fc5dde41be8b1724a165b02498f5e0d84cc78d47876e589ee8347a6f85499c30a66526c52e26d4ed497733887e51b4fe3d8b3bc514d8805871572ae47ca693d69941cd940723e319e008050c9f591efc9b0df20c5081d95477b65163bdae3b48061170ea617b0e4c29e09515ae64c6c4c0d938517c04b196297dea8b2b401fee87a36a9868471917f3dd5ff108992c142858f6cebf218e2984a773f1d1acb78d0ff48e1227427a6070760e86e3ef6755ab1681bf4c3b7fdf4d10e1878a16ad3141ec7c3c24aa371eeacedba408094443701d5d3bbac210776b3560fd228ed0cc61651a542ca2ef7ce49f41fce175ec40a8cb771cafd2b0588f60f6f951b5ab5b30668c7d56c80e9380a0355452daaef04dbc393ebc3e9f527fb03aa60d9715fca74726f0857602b8aa73490b63a764723854b2c9cc7553fc71ec06ba9990fcfc6bb3687538b7a5dc82dc96293745c1557b7722a0a3c787d07c8489df588544202a96cebd06965e4023960a396c508919b10ddaf0dab5330ad1d225fb3a3b111bf2c1f7ac04ead90d156350cdad631fdce8793aca4ec21989a5004b6d2af11d8958fc7516439c2b96fee501b697ee26a281409e9ab43b8951c7a09ce39f3fae390b950fe3a0f0666bd24f94736a485ef02ec21add4c0bb40928d743e997207deb68faedd07fd23eb3701f1c7bd69e4b1a306860cea40fc0acee51f452866e9f332c9e99dc6e9d5b19c4bca486ebfe9f6baa519d6ccff7c5ac4bec4b1b5fbc5e85034a0be8d3283aaab476a103e731fbee073c53c06be7a082c6ad8ca8aa998c3a8ecc2e06631675df4a05582d967b0ff729942f662a99c49355b47e7bf85e73751edb70750a6ec93a7d7ec3a4ea0c39ebe7cef68d2a03837260c6f9f8ca4039fa52d2a3fb2eb9c4a4b9e0ec6945c1720e466232254ef69a320ee94730c9233210586dc4e3d556dd7c21f6f4e3d8c34f7d6ebb5698281556f5e09afd502485b179fe8186d0ae0cab65bd91ec50e9f09776e0e720c5a9644ff2d6599fb9d200a1805f14ea36a4629f55c79e512c8e8befb341860886feb8af628d2911ec55ca91687b66e0ae2b22d3ad96734ba5cb0925d355b1372df1b13cc72046dce17a8f65ba2565c8bc61535cf5b89b3a2815db0567bb7dded03084f5ee7f8e08d30d0fcc4d29ba7dcb40c3c583786fb98c23981fd861646f2804fdae22866348505f710cfadb6a2fdb10e7a570772c68e79ff5cf6d2262dc24d1f2b6fccd639d89aba001aa653134ef8cab8c2b3f1724ba4f9614a170d99538ae615eaac4a8385230034eefbf7459a9386173efe1cd6e4cea78bcaed624353dbc4075440a21aeb7766647ce0de5ebbecd880660ee0fa141e55252ef91dec0aae8a9cc99a8bac4da7bafa926f0a96f829d3b1fda5221326e2f35dcfb8e67f1ad0ee0f2a7f0746922fc992d43755c7d9958dc2014423034344ed8ea0f7f7c6a6421ee679d39e0e2ae5abb35da22f85fa93693cd70c596b98ef26e5decdb5a548099bb14e4467ffdf0ee8c7bbed7193eb38c27c5b843c56a99df37bf4bc3eb6efa1800f06c75eae8ff81528154c140816cc70da66779d6df8b4e0c4f3cddf3d0550b0606e2628320a8e16efac016bb68450461f3eadcd001d6e9a2aa1be0350a8b813fb6a69ea3fa49f8ba31ef62fc482d70d0fe6014fbc65826c02bc75f4852b190fdca35a47e1e5552b09a3416120b7f1cac4a4ed2f2e5e98dd85570dffe932c84d3ebd6732663597295e7a0472d3f71b1a2cf717015b594acd0bc71ace75412336be47a0841f1a115390fe91d7c61df5d07481b603f125db062e828b9e64143babbdc7b7cb1a1dac26b9761ecc77d6784ccb216a1a28aee70c585231752042eee6c80b6c8ee14d7e0197f18628d3854f4df8a403e974990b5fd69ba655ed584575d6dd59d93a206b6133a0688a8e4c563131d0a2ae51964a8e547696557c940497ef276974edf067f1acdfb2c11646d7240eef8eff20ee30782d110fcbcc62ed9ad86b3febeb717acf21444437eb1cffa45f0539e5efc8b2788aea8be9da808d64f9d171da098f8e27e29bb50242d3cb601457dff0676e2b4342e5d1a7b12f96d72ad59a617015a35b1bd4b76ef9818e5f597b5a32704dcb6cac0a29db2de84bd5f559c6493fe2cbd95add094c662a24334951d754619c5ea7b0f90ff3bfa95e7418905a0a43f1cd9e8574dc1c57e29904e3f60a5e4e3c475172358fb65db192cf877b084cb2ab3f7cc5b4a041597205ba86d12472c339f3037956b12d9151f935aace5bbb7ccb891c265e28442a78d7e2676db333fe8a4dda012664ea4a96f96824bbf4efbb0888455d64547d3e0168ec1058f185f22f521a9e7a551868f0fef151f9e33f18493f823f7b5a6b568fd2bb7ca5467970eb78583175374052a087c51933ad2dc22e87aad4d49989b13119045a4e81bd934a0ce4d1480f33a9a3936228cb4655579c06fa2b936f0c2782b445d4bf8ea9b000456772d2240d4519b586e2bea7cf547e813b46c0c03e9aeddbc3a5acddcbafaebe8b55de81458aa5e33ae5fdac64285ae637b76c855c7cde0c9ecdd882a7e1a089c4e9e713961fd558a4c7461e6904d8cd75f2c163537491b2f0bdbd34fbfbcf28ecccc7e0d975eab8d1b05c2cf06535497dc27a4a1ca0aa9cc05fc4698e81113dff1ae4357d81cc6232131eb20d2726af9aaf1c26483325b86a9fc0c44bfa9fcb105dd0b27a0eab4eb95865a80e14b5087921269571b9a41f4610a9e26b387e0d3a863dac0d6329d25a32e7935efc0068b62020b0f2b43f0961cb9585e3d44e9d96fbfc0883b57283dc1822a9c249a6f47e52bb17f231fb411da8376b8f84e13bc10ea17b76af16c42519b3b61134c116f8169b09a860188c7908e1e28ea8c2742ed6ab0dd499747450756c16b9cba2857dc1139c06e857e0e624a8b4a8d5fae2813d790b944e2acffdb82fd852d0ae963622f046f39b051c4572617ee957381f00c4226d98847ba1723e2db7ec516fd76e8bee17887cfbd29f498268c474f13396c3edda70b8046ccafb12cf2cd1ef1cf106ad88791d0fbbd201db5fa114913c8b48c1627564161bc0b3b2441947f89a055373de6146dd277866d41b04e07c179cf448c265ff96b8da46b36bb6454f18978a58c64ab5580a15fa4c49ec7bf3a548c473d159876990b217fd266d332bb20e04d8ec3a04bfba75628be992401dd08e793f9da3b88dea282f332ed36fb8539f51c30671025ff50ddee0dfba6a53e3f6b88b1fb65aa2bd7d842452a738aafb5d384cb7c8482ddc391a3a587eafdc2519c6ff05fc4f9c6c73e25119eee29837cf03b2482b9054937fbf0afc7fec0646f397980fb775b8aa3340b893f6779cae872a62254af4bfc8796425574e1cd39ea0fca63d68bd423449f877e1d879cf8c7d976147f98d97766cc5ffb0a39a6881295104fce5b754121be84e2c85da607fba3e97cc8a1923537006456041b6e69d7d9a27f648575313415925db2cf9fad706526fe9436958e6f555199c937c1c63ae81158320f2bff924127db431c1aa3ac9b241db5b71107c120b1c2f6772f3656be1004099c0c31aa9be4da6205be8dabfe09dd78ec2c7a34b1046e55c39b7d1aa5caadb13f4192b14adbf7dce85b5d2a1d04f996ab489bceb32ffd1d0b9d7e1a8e0d5d24e25ddf13b8f6bc3755501b5a6a9b59ab83a8cb2fa4c3455199f028fe50122a62191973c67eb0888e733606268b1e4c6a8c7f3f836c0eb813a4da1d1a529cbf04f07ebe4f16cff9da19a972aadf292f6a8dcee6914ea10ad874add10961d315f3e944e9ce0e34ab1f10915be0948c97af3daab57b18eb88b566f255cbb70ad8e1c05a55dd18ddf27f650ca202d4ceed9b3ccac66a04dd319ea90ca2dc2f52cfea5c1827a9252aafee124f60ee220b28a213cf577431d18bc4e2d9516abdd24986303105c5341555e0be263fc8706520d6706fcb566bde9c627e53cc6e6f0d7c1e664c30e4e6ccd6a1d800f62ebaa6e99bfde62e4c1ccdd4544d5dff065115a6e0ba0ab1e39caf30a43aef24680710c76d0c0d4297183df25326970650038b17a8964c08cf465a729a93dfad5b265822acee6019d466e690721d0ae2e0d6ca27c19886419be370c8d210ee167c1f7728b5cc2029a04bef18bf85e480d7174b8f57f69337c524d437fe05c6a178f47c39402df8018f94d8937bb734bb8506073dab17778426f2ac9c7f648d43975baab1a84016dca6043eaefb95e08fd2f5821680a1479c26c9138a00b764b2c97e75b54dc10f15b72ad520c4b7649eef895d617ea5a9307125fed37807d8877c275afcdc509e7872ec33ce1aaafddf0a6ccf05309e82589677e33c4aab8b9c163ad7318fb7dada021b33ddc45f14e78b6efbc68620e2bf6067f5313350ac9c587904917d7e4714363bd1d9e09004fc77920441aa7dd43bcd39d12829dd7d4c5d48388807af895281b0d04e336dbf3a50a878f5e2ba2c146f5375e9efdc21584030ed406d5d25a969e96798390106abf0d5049a69de84b7d1a2f2211e5a20a7451bf1d0958f674d52beac5445baffca6dba6f577287bc9f03c991689d26e2a23586054555b0d4a8eaa860dfb6627f84d1a929a6c01df8c949b18cb5869e60601be8bff89a5c82d83f37450cb28596f3974bc313ee4b8dcdb53ce3500f27309a3f123271bd61862501dbccfe0a195735af0931ce117941429aaefd6a7a1efca6052d919fce9e1a9e3f48f847ca70fb391f03e88ec012496f59cf94748acb18bb48a87f5e97a1b0fd73e97b823242b2148cdd49bccb715c6ca1ae5afafad9ca8471f4ba73570614c3ebf77b5b22793babaf2b424b0d1ca3a5d70d78f205a1270a3e63ca34ef3f68207966fec2393cf90e00271fcee5d2a85694aacde1ffcc199100a0f1f60e7b7fea219732461897e320ba62e9eb2fb7d4b1abf9f10177f1e9a725b12a4d93dcf8c6233ac9028a10fa8c5e6148dd23b66aff0a01b3649166c3d80ca54bb0e2d46d6855ccf6808c24cf8b31af7aa95412e473a89cec1b9f85eecf45d242eecc112403a2e811d93416ce96099912b0aa2185224fbfeed154cb6fdc2ec22aecd517adffb3673f84a3747573c27a8282043ff8245e1f8d2e5c4ef2e3a6119948bb9bbe58dbf14ce30fff19c5c62244be8693fae501ccf9af0b6a12b1bf9833979de82e4366e0103b96a08f3816f55df910c20d319b7c95b496590aeddb841cec9c4887e810578200ccfb770c8c74662ed438e993b15afaad803c62fa1087186261ae0eb874a8049e626d27c9822c5e11dd6bc469854c446b74cbd3f136a377c3a1f4e40d9be02453510525a74892a8bea05b05addbcface2caba46594c9c41863e2284c39635b2480dbf683f134b898dc67db4a45139c3135591a40ae779eec17acec47ccd563bb7556906cd294eb60f1d844e22d2425ed41e589aa8f6f9d7a9599b87cd18907d455cd1d9e85476b1c1a13ec41658aac23f18ee31dcb220065c936fb7c2b9b19b4bb50021d01f57a862860d2581ec861fe0b39f3972abb9622fb6e95cf33afcc267ce2e97ce8fd0c8af67afd93c59d9fa1c698221dbaadbbf8aeff4892b1170df491c424e46e6dbc123a5c9720f30e2de09c33748a955218c11faa9a0dcd8982475d2fdd39e3a6b9d5450b585427af1d2334ebb1cf1ebe556532a868c8ee1f7212e9782b3c31a9161678bd2008bd0f72773aa164bf4afa43bd8f43505636c92a1620fb7eb4073c8831c33c99a72fc0f695d1075e6b60cb604d334c13a01cbb45e1ab2a772e35aaf43f767d76c112005c69b2951233a1839f09219df8b14f185d199cefbace153709439a242661c03c5524c8fc9dcf6c87df0ededa9dcf09c7d2d3a3fc9ee5f60be699abadd3db91120bdab7533b14bfd65b2d9cf5a34a6329d0a28c1a47b25a455017d26ab93dcf0b29fd45b342093044d24f6aa3fa9633270d6c6f4893446ac7dc6b17262211f9e3a1eacf58f63384edca4b734572ee05ebc10d395b6e1f20748f8007a07d38d6388d2b418065deca66730f408ed2173bdfaa71795a21138ac7c927ed63f693882d75322cb8b500b790e2849470b88a14f078d4155c1e0334aa07417b90233fb22d4d966b5031fd57c8aafdb5cbeb6cbd77bac0c9cb66f4f9c0e507d3e34a15205371e7b641c05ea318280ab3650fc630c4333e94d37173748c80ec47dd008956f93dcadd6aff4394a06d19626f4b9821f38e3e5764da69439c0a301b5e4c7634faef0bd2dd930e80d44961f8aae7a14870c3e9278bdd25cbf5b99caeec7a162888163ff39cbda7689b463418dd2bc8a99b6a75473d49b9d6fd365ec6d034458f9214482ae5d5bafbfae29882764996d3671dd32646244251186addc7c7644b2c5b24dca1e16a5846ed2616fa76a42ed49108a34290ff48d27f8b21f787f7e5552c4795f5cc4fd53dcb88bf16b8899fa4656623b1998fa587c23326f143feb45aad77c4682979dedd0dfadb81ab335be6c2fd2a58c2389be852a0efaec9b8190ed3cd2f019a18fce6b4407fec00b8e0534f0fab899f5f2ae93e368e2352e9aaecd86d6482f1f40493e605e27165e4c3ec159258feaddacdb3bffedbcae2ea6bad3d7b095f372c8668c94833f1b19bbcad3081ef05111000ca243d8117db5a6351bbaf9efb738c88d2dca2c1fbf1999c8b9d70ceb61da46471e233fdce5697bf2c8abebbaee8d8ce85c474675583e2cebecf6e332692508492fbbf6aab14a9cd4a7c8c1ba89159f04e745ad5217e6a9c4ac564962f6d12df67049c87624251f280f23f76bb96586b68812d5b6fed99b7f54bed2da7595297bbbf1d0a129e6d8ebaf70b75ce3fe790e6a75da0a2dd69ecbe3b47be521209a11384222fe9388dbccce84cf543a084f68a59481de80e0c475fe915f37adb0e02de0a63dc8d7ee7148f1169e798e64a737d28ed34de26e6f4420d0bc4fd2871c43d2d00e2103014c11e54148d7b82bbaf71c97442a4f421dffdf7b02feb8e84ad3f9bf3262f21f83637a52027f22c23f87484163f94e9c170fa5f359f05027f8f60bea0e256fd092212d06d6598eace48af8d9a9b80bb96c16044824e5bc59cd66764086444ff57043d14d1962441b1dd76b72b9aba27275157c4e7af266cd88e0e488a170d3bad7e635e9cce8932dc418ed73cfe6141bea7ddc2c8071cd974177c5589a0fe2c2648f22a205b84d8216bf5f8df531be86b5c84066ec74389c55dad9042f7b5e7b39828ad19ed6c2ba753e89b048d5c6b4cce8b0b419816e0140422baa7290fe2733087aaee52b7f0f62f9c606142294d7699935f63c6ad7276e0fbfd4e884b9537efa5909146f2fa90b9c9d10053d8790bfe1708990ab701a66bb9e79c5266db95a75eb4930dd91a152848c366b38372b8444336583fa457c81c0ded21904daf9a925ecc805ec920ed5cf4a296e40d9e83589b4b66b158b884af56680a7b820c865860533b8e6e5c03aed298dd77ecd98e97e30a049df8fc42579138f3767b08fcef89326c62b815408060e7187cb6e36435712f70f6b185dbd966c6b172211f41cddadf923a05f3d342bf373107261b8bf39d33787a07aea0fb11de0331ddae060af8e10a533e0fb75f8e15995ad3400fee76c724c53d5e0e80e820c25f5682bbe5c71050f727ba41a6176066e9b1696bd27c7fc7f5542e2bdee23b238b0794561013ce2e4c1a0e5bc00cd1377bdcbcf613b73cf76e5bc355d7e0ce8289ad9f61449d9da89b2e6b7139a0de149deeb53d3dbbb6c5f836d72c5b82fededceac6b1de2b338a8fbb5a627b7e20f4f21712acfa9a02c2abc97ba61e2a05ac098f79542ba5db6541aab12351eec5b7b94920d14183124b712e328b7a976917070770871b2971206671cb5bee9ac7b43cc3449b98a0e9518490f4c51a58857c6e9548fcd45864609d62c73af92c8e4dacc440b25a7f20fd4d073ef342bfa311b1d61561db746c316eed71855b39f0c5d38330c13fc46c801282217d9108821907d3e78c2895190c1a7fbb42557d1c8b70ffc463a980b93ed1d2caa3510de56e74bef922084e30543759a0e84cf84614bcf3fe2882cd44e180cde7e27259f78ff9606de1f26d1a41099d2fe89e7454d2ab7866ab4ed5ffc02c46a002afad8719aaf01bb0acc738886c7152ad94cb81260dd32de74167dc6f5a0928a8feee9ebc2eadc80d5a9ac350a000daa41a72acb1555c8fa43030c24efa64bbb4659934dc5e280374fa0ad0235de5c666d656605e135947f5d40c75e1bda8bacd9eadb24dafad369ae20f1472843ca3d008bad9c9e5513e9d154eeae3b69f8bb9597b3837693f008c4f34c400e1239430a9bfaa85b4dd5b8c1ce28b4ab07e87a01a6354a465214dfa90c559c1d310514616e4e173f5c23122f4e35370909aa1860ba8aeeac3a6d9fe1f3bef960f90ebff171389bf6761ea1e02aa0540f8c9ba72cfb0ca6a6b90a4aca1d7ac9cdcb43c755617028bd92093422d1e012d8280495da4184a05490b82069913ea0f50462c736d9307543df9191c1b43c53fe886bedc3292b9b345b51e1c30bbe1b913b5aff28f86ca50d4e7571f8ef703300ae3abe26cdbde434d4854508e448dc5ca7d64908a1e82d6c900a5704de58194b70a212e47c27f605985d5ab5351e27d3ff15d571804a24b9e8977dcb1410fdaa4e8b77714a0571776b08596d227c3f2ce194280da198f4829d9a493b0b618c6e92700e98c61498bd5681ca49e3d480219b45f5afb7916eb1ecafcd8e0468919214151be17533723946e692080a5f1e203fd87c8a9b78c2860fb1e06fdff60b8c5389e56a43d8d40b56031365be173321f0a54e075e849ca7c21d1ec82c92fdae70dcf927963c12b09cf01cd9b382c359035c4498240e5a44ca52d146137bbeb8eaaef23bcb849b044a2601a369a64e5563d30bc15ddc7e4ed38efc5bb969407c3d963cbe7052843ed343e3e254fb795ae80646328775ad207befd5b01ffe1480acbeb7d66bc0e0eeb689f5c73c4fe3ce0f87fbb9d2b2d5f53820aeb02f633161bdde0f86c55a93b92e4d55ed09e839b10fce31ae1405d37d3c2486148307438862a3f4b1f7e72980295a22f9e0f92142b539f8b6328f1309b956caa0cd7a328788751b2cd640b47c86a85df0cf73ec2509908484d76f02a3191a602ed1e64ac3f0158c77f8430d75053593e4fff1aead81ce1310f6a24d29addb26e5e27d38ac5e0f269e97a99e4d6cd9fe8b0c68d045bf63319cbd57c790b2e1adcf2babba4f4984f5daf2451c1824b049259f4eb6c8aa8d0493a8b34e19ebdc62aa4cbd7176b658750b5019162a628a28f81d0775aa5a9434ca32c3999376f0bf5799ee27dba8cb6f66c572c5e2e4b10b563f4ba6b3556571de0616f273a08b06c992ebf24ce5af7ee15be217d3985f7473e2a679176c74eb454f19828ae71887f1339be8411c8a74bf0cf115f07ae78163b497eec49e9a562adab068141a8269a13af8ebf142c66c5078ab74b24bf68a76c9bcef9500774e5203e4a6483f64d910e34a3c1ee88044a99560ad4c7328db6e08c0a7ecfaf974b041a70db30970efc0ae57f601762d30ff025b5f704e2af02a4abf39cef522cd612f43e778acf06e46ac78dd7a0379043fc18fcac260ee60b25b7ab5b0ac0b122e65a103dbd2e55e1f3e9df58820eaf958c5b6bae3d444400eb5e7aea332af71267779167587d07ecc6d28692152cafe1775f75b240ecba305dbcdb4867113c3ec8369ef2e8c3f80d3cfc8492033529d1668354c54f1d0a5948a1f2922b5780ac5ddd09a635472bcbad225c760f44316ca6697ac4d9188ebc3c25441bb3169abdbaa305b669f0b1cf93fc1227f3d36d502fc2548617bdd55f72d21d43ff022f6223cc211f98e48b6ea5a188184771560ac525f29ff37d888f73d07a721ba0a99da4ee1361dad0d8379a6885ca8c5dbf11cfe201349db6a381a1884d25da153013b783296086ad7b8bd4465c1f12452062b5a0004feaf4ee6596405ca3b296c3122288ccfb2e05103d75d7bf95268452eabe3ebc62da3f92060c494291a7e43a64788dddd0cffed0e3b97e96190010f13a62392ac333eadc2e78413547083ba3f194e7da793b8b561ad6a4a49bbeed378452f12b7dcabf6a4b30bd7e5dd1a9ad0a87aac2ca118d00e3f33a42ce39cc1056809aee520d1ed0926cf0165884a06d9f6ef6986b2fefc70ae1922c6fc5d4d4753726279bbd91efc46b07c7337a6fbdb582cff67f9d4a7383fab5a096c4d24a0a7845f199bdd35991bf2a3765812938810690244aa863a6f613f29f519a75a8fcce498cb5d32471df66492e62448b8ad14e2d68b483e695c5966d9bbd4de3705f3b0860a1852c25ae1efa78ece7dc7c3a27404b2558bae19354661292697778db9b8abd31a7a70d5c53b864b49a76ec8120e904469ee8681d390be51ff089e3e736f73d3eba8cefe6d0e1df229fc0b0bcfa6045b154f865ef904b43589a0fb843bc9f1b1a21a61ecb07d6150e7ed3a2167546cdbae199a18852e5a98a51950fc2e4b527b3401743d7960d4893e2e347da626d88895582969a13f4a31fc56607472bb35e78075e94266ef45549bd15fdad735f811e7e9d5cc81a6ad6d0f683b6803ab7a85969d4628f13ac034f12ba2378bbc3ecb0698fe6b1b12688b63c4071139987ba64b7ede9246107d6674bd33115845a47ebd53e288f5871970a00c5cbffdde2daf09193aed5956b0d288d383aeb1bffdc10155de0c33dd051325c7d9523d885a9b31a130098e032bd9f4c3ced3bd79c3bfde798d8ee16cacf0af4548fc6cd5d6d2f34e839e48e826842abc994b0ea84b5539268de2e85f5929d87c9e6f29c62ea901350c892a72b7516293ed5d2572bdccac5499e96f6d8a75e57ec53a269f1a8ba73ef4607afec1cbd0e616e36af1b1f0dad818a8ae5b07256ae722b5cd118871c7585f93e15d6a58677bcb7d360e8b8e37dcb99193709b79a03928f6d91f6847aa9b05d6c5bc476ce7187b21d9164278637466c4829d3b7862fa8ac6e9bf950d5e68cc135df8a76fec05629ddc65a6c4361038f3772d8f2d2886e7b9dfbaa60bf1aced281d1cc654e76a4d0065643728537e3a217e2baf8a12cc0def1a094341a590d01b56df748bed6e568f3d3a3e355542472cb04bd1dcfbd22492d7753598e22d6944866d7eb4a0369de141c0666660df4f3158245df2259da848ee19fea1f394829f8ba14caf6f2ba42e671684154059199eab170e373c3a856aeef6a75c05db4ed2bbaf46594584904ffa584e1405fcb74e95565b45cb3f8773e448ed6c5a41b2f5a73dba7d993adb55f3f6fb56732f6cceb37b9a16ba8698e069361fc1414d014cf8a73989528ad848938e49b04bdc8b1e2d3f8393b5fb82b98c702ec5b71eb80565cdf3c039775e00ac2cd59db84f2b906657a7a541df14473b262f31cd79cb1cced8588739fd290c9baa7146a722585f2b48e1bd58638a3949f433a599882e7ff72013ede3ff35d55f46a2baab16131f3032850020a1b94089529e1ba3d3c3f365779ccfc463da354ea4cb5486fb49b81c03c832775693c91b4351de2c1489830376c8fd96c78e1f994d07c4dd03adc209f6cb587e7db7207f70b3d7efd72d2f5e80b1be23a4ecb66e09ef64169ab9d8f754502a76c46ffdb379386cd8d9283c83bb99797f946e2bf58184ad3ca7f42afdbaefb6c20cae0e7f2d3312ef1c93fba413334cf46ea2ab1d03e677fe870950f577dffef8c00ac9141f78d529ebb63f833faec2d279eefd0dcd18765efd342e8265a50422cc9728c40bbf9262438c18c4d07bd0084c4a8b549e82c2cc8a5646981ee9425051f90c08c8693624a6d3d1cb5f400710107ee8c4205c1d264980753b522d74c877fcd16c4404e20070c729e09129055c7d91e45897f644afacdb3710aa987eb1eb22ad26316070e65e9cf8f8a7541cdd82c991b80144cb8a63ef282e9ae2d5796660105b148b28bf6ba40ec5a439617a2279427833dd967cb84ba43dedcfe2e087f71ec7500c6d05fc166b40598913c5f99934ae6eb5aae6673b4e4b277f780c4ca2a70e09b8c9e1f29f7bd1530d4316eb7850d4b183ca7d3dad9ce11292874eab6e0866154c7783a66eb7538f9aaa64f5e4d510884b3d3f88104dbba999f6bba34bdd7a38b69e69f99ef148b99915b8b3414f10066916221940aec76f0d338a6cf4f0bda702fa5460cdbc90cd9c8e264a20046320d1537f12349952061b28340fc6603792ac39f82c586544b3512c49724413a2f5711bc0ee0be9225f4a88d8708324537f7bfc5b323b2b9e98e7c8edd9e669f126d8034eeed27ec41ffd73d5e7dd4fe06fd22e2a7641d4342a49f725f0ef9533990c026fe7aeaaf9ebd8b2e18bf30af58a530c343db053611be91a1a4eff415240c9cc0d38cb42c9eab6f8a8b528f4a738a733b3554685404f0d11dc0bd4c9e10a1fe56c5613df3760240ac6fc481f7a520209aa1c4c4ab1b2014c67e044a66d5ede76325c4c5429091768b9dd84e9d205b051ffbc67977ab153eaaab5958c9f4ecc51ed55d74f49f8f7fc1e59ea4d7dabf56af703c49b4ae5bdde141f19539fb9586d7527dbedf621d725472d2acc413606aac257069d6c48845af0998644d5284c3593c8eed2d42eda3e946002f686a0f1534f52e5e9539d19f6b92584345fc777f1ce9fed2e3195a8964247afdc7c9686bb01ca7ed2ed9b17a0f635e9be1ce8e20fff230068108855acfd114efc56fc04a1a671f3da10204e6e5e63738220780f02be75248ea760f1ad4c32eb6d93db0e3b50ded6f4fd8cf394d4e21cedcdc606ad71e4fdc8ab56407bbc05221f057b416a635b63aa1f39beed6cdade97ad1ade2739aa9b548163323044b0bff4dbebfdb5d4678307113cf88390bba66d7a1b11cbcf0fbb0b229aa3f53d1c96a1fd44479ad7135aa96c8a6178190d17aeb8f31c45a9891eb28d3fd49bd63fb6c3a793c1467a5d0df96a7350c40e02e1a9d844bdb8e5c3763e52270e08b298c7ea98e2fcefb283fd1cac629fc371ff2696f7822b54b000026a88c72ca3fe85a4669b79e9430d95f24806d5b0b5e8ff429cbb0abb5ddeb333daec4de7900291d63e41eb2a2e6bbdd48d17ce3a0841e3ed6ea31648cec8f587a79a4a6d358dbd54e0a3c60ad71fb91150f61d5cd87ea8d07fb6e1532be64b18bef5240b231bddbb3e571f3f0f07b40ac0b9df462b940d635c4ade745ddafe61add2fcff1cebfb265b895f95cf5c15128e26cc19c4ebcab8a54477ab58d17599e04703d4f6c249f52b99797328750ed4216836f1dd8b3608c4acda817b06cce9c6af7c280a65e4ce91b3d4f8e3721ca9ae88b34831f4ba2acbe1ed9347372500b700ef8c042a087871c883d2a37967b93df3412a51118957227a6237693697cf087364996cb360f3f96b1ce6617f63cc222f3cc6aa53e7ab66615b04110d7c9598b27e74b51845177856deb3b28c7e9119121aebf5d4515e8d364d7db75ad1efc1739134d05a2b09731ff0faade3c57e6cc5ce905cae7ea68b81bb2543846d93b8e2d7d770d3650dab12eac1ccc55064b76158fb74a2752465c4218678c0ab29c4a6ef989789e6a0bc31ae751414feeecca6e6190a6628c4c178c0a37ff48cb16d0d4214728a91b9144c92322565911ebf6c0482d208ca9924c9e561f96ac1b6a18adcb4d2c02b74ba4091232eb53c0f7cdc65079ac7ae534d0aef58c36f648f98a58b61d332d69974110ea782a1cc0042928ed9b70182ea79873747d8a9599cad9083d9fad3c5ab05c569ff83643ab4f2cad2ce83bc023ab7138813bb27d4a7a38211cd8feb5dd3c7462d47a6a1c176e6460e4aef3685654a7535504c1cb6ed9a9a689b4deb3a6440e9643713ac3d516cb381529ced0b8df6b1c55e5e30dab1e28a4bd0d84a1875dd810c694bbe4fda1321467aa09692492fed40564c566702736d00eff009dd8a06f51c1cfb2289f0ff003b0900f2ddda606d602c0aa4a832d70dd84c05e1a5fae8851587e2b9e326a6d14fa5c7b6f5cacd973872afa315ea0ed33ed526c4a4e3cdac96c8f6c9ff8c75c39ed7f2a16c7c972c68b13bf6f76d3705b3cb7ca4d93715db9d2528353a653d7df54431f0303d960fe663f93aa957fed726088bbb008feb5f27d900be4862d5e3b697d958377d2c68d74fcc999f1d89eda5a1af1755b94b836e9336cb497e2cd543bd2a6bf0d89395be028dd0e3443663462bb96a36839bc9f9da3e3939274bb51a517101f3f16eea1d41af1b5b0029ba5f96135dc1606d3edada27d6522fd2b050cc14a627f08ac0df2734bbe372c6ead9565005072412bd9079ef10f31ba7852bcac340922177276ef5ab86ed53f6c4117752e068e9add97cca65b910d8dca5c79d8304b05f7e1ebae9183609b1d2e4e3a946b1d644130fbb33a02cfdf04c80686b826d5b09d768edaa67438e84b6e27803cf31d2edb75804e9912476ac405f386ed34e9eb409478aa54dcd4d9d1de320ce211663c544bd0addd704e3c073a6e80029594dffd26003e798d7e24cdc94dd5ac11864fa1775279032c667d9b10ded9d68e1f892402dfb4f70b7a314a2ae1e72f7edb77c1dd7f9108e7a284e541644328478bd57449c2e1d3c3b22bf8c9be23af9c47d1b8f08ddef42071235a6a30283de9db94052729936c82c5d4af23945e00c8da8f9378fefaa8e68cd5efd74537c6ad1e2a736185da83979b0a15a5694870f43b9bd5ae2fcdbdebb816251b609dd29db46bf1409f23335155cdff5629f5bc7c71b52b11ad0aa518b84931964dde438dcd6ca359e3039ab265084e470c6fba1fe0a7be0e0d607b6671da9ae8b4bb6ae84ccfd35fecb9514df2253df98d5e8cb7c0527811c8fd270d15448c6bc7c3dbbc24d87b6cc2aa2499a5869c6eabf8675fa28b4719268c5affbd352cf427c407c6e0cdbf9e0e6812fc32e974d06bc9fe64883a842ccba61620a12dfd3e0b20a852b1414f097abfdd3d50831eca00901a2d512e8a458413b3dfd832e27774947e4ce77ce573ffebf1a2e980a30daa6b7888e244417c8fd432f60d5c1a632529cfd15697422902ad04c934f18d645c3a14a7d7d242253af3c574f90a0beeb3c3f54ff228501c43911640064cd2932625c5ab800b4ad7e977424067a86ca24bb6c178e9465a7a125b99e479e0d449ab61d63d06d556ae4afccd5f8de4fabdfc6ac07ec1d05ccea1c237530e08807ef0c383f4f16fbc2fad84afe5224ec7aad5e0487e161709ca1c64993460ac7fbe2a0771b6fdd40e5473c80255f583c85964887a274ec52cb3fa75dc029c9a234d955e26a265b0374149c5da7a713f2cc2c86659826bba2b59ffcd700b4f6531b660c4ff011b56b34f020c5ec2584ebc1dac6e9ecc7b24496e89098028dbf408fea2f8ac122a7779b72e943422c1265c28006795a4e9ad1b91e95b68f6b5795d56b5d13c2f9b7f732356ee34e540fd3070ca89e4cb6061bf689f216266113842845c50c789d42f2ed5bed0ad7c3f347a3f6ca97931b5981c47fe1f20277abb8a0595bbc6c1d7dbda2b2f2b04b2fc6586edaeff4138f948a1efc33519e19f32ca1edbe97bf716ec44b4b2653755bb93820b9411528d0eb4d8dbb7dec63803f91ff65ac988ed68b705dc2c5850a149858c5376265166c1441361587a2da22fce211c8d5d1f14502084e60115c950e930afb47850cc4887ccc0fcb6b3bd24294f56997ba613c1934754ecadf551200175e91222666178d94241558062a0f1b4751d65ced38951792218860aea58010949fb46587b09e1d13ab63a46b9926c7467d53a2a8c9fab38628498292b55acb96e5c2aca275f7f5497d6b5ad95b252e096b976a373c795605630f418a9e9d727483fc3f8a513873ad534286eb11f495dd31b6a367ca5bd219d13b3fb0df8a28f7ac0894738ca55030851b65bd7d38d3b9e75b5abf6b56d364a31acfe985c1b98873d5e22a75b57ca1f6ab0a589e9a7d04c82aa1cb80729c6c93d4a12c7eeeb8f32ae2ee151499b575247ad642777b887f95d1cb1aa7361cf68a3234daeaf0d6cc8e810817c4cdecb5921bad39f4ebe4e5e3172148288559e67a59f4a17e77c835f5a4fa1a669e17eafee4c32b220525ed9aec200dc31b9a770aff0f19615cd474dd4c7c4d05daa9c06187c6ccfafac04dda6addae0338896eea1e04b8b014b09c28e4f7e5c9d4156f90e9faab869bb7c8935c3d995c400c16a373af054f3f8b0290b74ffbece74c0bffa92e14b66f66fc2e35e5fbd6dea02d6700510998e0fa1a16f4c0fb39ec6945f1be7f94728c26f45a8fb96e3a0ecd952f9e1e84225180625e9b2061d51461d1dd59ae23757761c63c384a9ad6ab28d71b620cdddd296a1bc62fb34be84357d159206df43dc28c4588238c232105ac9532b948def0ac399524977683d48509da8f3a9a64b1c94711156b78ff1cea157fed97a4f4e4ac5eb9b68f69fa7ad62fe06fde6981c77f3b9cab7ffe27ca29c93ba76b5c73215716ffe5cfe51088aebc77667abd9bbfccd83cf2413585ff1be0a876cb999c58d9be260cc91407c7d2b66f890033ee586c7d3976743bcb1545b7b4bf2a0954282d289a205989ca95471819093f38f3cf9f1843c1a8249fcfb50782bef451a4fb2722c0d6436a55596398c50668e344eab7337f255f27f61930bd64074944e23185d4269789b4e04dc6af5eb337eb3385fd260ebd893051978a4279dbfdd20d2d1cf650a6bc662de6712e259caa8e9600d89cf871f0362c08e582ad84610da1b7d8dac4390729d6c61c1b09c5518c2b5696caa4a12314b08ad128810e2f48b352a473d192038d485c65993101c49d7e2322f4e8f06985fabc308044fbd02c5a150b8d8f07e551f63e468c0d3b1e7c289183f1b41599bf771dfa179c1cf603296f1d3c498b65c78779399642af2eed1a12af8d94fc85bb97afcbbbd0284165ed8cb65ebd44758b18acf0b6f40964ce24b41a38e19bff7f47ac9d1e6a18d86349a6c740a4ca799eb30cebbc52d9078c3b4aed72e7142c93eca1772903cda2901bf5b074d790e4fdb3b8d29539927f0767fa019027922c45eac3334872c3916cfef6ede4e6399a355957c9c26f6b12da9899426b3f28d7a4834b2928cf1cee9322bbf83e52a08f26e9b7e00da22bb7407cc0878853437742d0776f458f4c8e1b55c0d400aed6a490e49a4e7413afd074473015a0a050ed03944822d1a9e6f5cfd82ebcf8afd67106204bea781b320257c9790d2590b7af8be42a68e15f13d9ccd6f26f3f9d1756ee0e3173d78867dafea03da65c6e6dd6bb6ab839e4b573c773dfde0741a1b6524b9b81e6bff0cc02bd7380c2da6931658b13339f56f715136bba290660c402db54bd00d3387cf1dce51ddfddd2c740cf40e61b8f54e87a3688cb531411fe7f0a50c625a93c20a0c4e1a8f33f9c671dadf1c594be842cb6aa68809e3d613e12d69d85ba05f57aa186f3a589fc8277cf74b0c8472708fe107a595b790148aa02a925ec8bc191d820f39ee72bd8a073c96bd8630c68c0d5fe56fe81188c05120e8556d3570b469b131e5764f4a5bcc090635f88dd16d4569afec7914ab2f5d08523ad92f5c801d6c4ee7c5a435386a55c9e3f6c3ec210d3b72c1c768fa6faa6fdffea338f20767c8735720d37151eaf8991943ced2fa94021e56d22fd7bf7d88baa43363f592e8570033d1f06f99d082910a28a6d57b5f4e55b5f70f32521864b6689602f97b19d281d94d3dd53d12c058696f2b5e56fdb495255c16dad57a3d6b54683d1ba92a7a6a8d89790ada5a9d42ac0c0a61772c6027a568528608a7cd2da7609e4e4a2e22e42bc2bedd2f389ce3f17918684c64b074824274159db9528a619c1fe78d3b5991d2329f59384c220af1dc9e58870c43d888508439d3cc4ddb5ca7a778191e809342cef4bdf12e88f631ad178f507439f5181e906de500e10fbfb186d94986bcc00b74d259159f5b4b6441877961bf15ae4067ab6edf4d0882eb2cbfac5e68462fa08a924d87810d461c7b6f8c34ea30e5367f7d755919a5940a4d402d5439e4177cc7d31bfd174981c7f4a707dec2e63265b648590354c0f0056a8e8070e20280e67d08148b10f85bfa30fe7c447f9ce89e356ee31daec19e588732f337dfc34bee7b9e9617e890eda8fd7eebbbcff576a8cb0f92bc36f2c5e95d7ccfcb50b88cfa302feeb775072f2bc04b49285047460f931185b01445768faa78070218b29d3a56b6c6eff06f1332719bb744e586c86c83274cecb254c562ea9fbb702bb6dca4dde9b7ad5e2fb9b6166afbe8617652175087515adb2d3af482cdb0d8ab7d37b1d913326135dbce2cfecabdef9e734836ae4e063bb5eedeca6e01e867d42df4b544eb47249a8f7f3fb420b053876e49840881ec52aee200ff318577e05c990639d90a9326ef3e34c2de064c2e5d2a2fc215ca6b2fced6519eaee2d63f9b14e63736a51427ca25b74256112ebdf68d12cbf5635600cc19d075488a1172a72f278f84913b32d87003a257ecf82d42b16f78c0670988b4aa3d996af5dd366de014eca880b77118ee2e1a40a8e773b5d5f5ddae219bd82aa13e4ec08b276265e49205b18d118e3ed8625cc8c8dc6c54cb6ac17048b5ccc9d360310f5fd23595dceff48c3c11845940760c12a597e19cbb67380edd7c5545230c889544c009a0130ea238abf486ed21ba82df4d3154d238999f3e03ef8fd11cbca889fc12a1a956f675da21af1a7b43ae7d3428242b2d672eec2b894d88e84089a0bb2d9214a65c12e026815582497360de2f1ccbab552222638b83d892c29360cd2d80d02bb8ac127f8a9e449b1e87827eaee96c1a9978d1c783c8cdf231082976551624287a84a0dda092c8465ae7eb635d81ea2c75a61b34f71199c02f278943afd6650d80921bbcf6100df33832a03aaa845144dd16b83f647cd4babc2a94b77a0ac1a24c9f4e652abe71c11c1229d13fc3b2093678515f5f8e83240a06b617e80bf61cd4019f61a2d08bec3379bf91902e7a98ead1c77fdbf1d4e87b4d42d5c35c5c0a73a79bd633ac45c0c1d468d06e3a251c7006d4ed32470f4da190065555f1197142fd012d7830c234eaa58c765d7be0c3c6de0bf0b06475307e7499371b65d40fbc8760b75d9b00b7780637fd799e1c75715a580445e302dc05bdde275fa4f55334331c9aaee40e617cd70e7f358e593f92c09f625da22813a06b38df2fae00134b51491ffda014fe755aef8138388a2f87f52f95b1eb677bd6b8c4f5d70aa808c54cde417e99d010da06f303606d99772066a47dbd06c5fb60b42d1ef5a63c8d0bde4143fa6470275e19456dbc6101ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546ba973bc7d549b7884e67d24bdbad7abefac62b359a46a949ebec3740a8ef4591248376c3ca74efb4878c4b7aa95a58089b67cf1bab985c0abd81d8a9ef3200305e26fa3d2baba6a0cb643308e1c05b637c20ee7dd837053278a90a15e0fd9d05a4a8572b3401a14d2bc16517d7f704735d30dc152a4d177cf1095f9a43e4e7bf6206d54b4cce248e78b2fc8f1ebdeb3eca0c8ad4565a66df142508ac08e02a415d110c4d22de829d3e15dfa949ee7f74dde82f1e9d8eb1b2da507a05a4c4b4085060f95b056e93f83730d71b71695667666f756feb472635da6e8a6e0224d0c8e6292f419165a93684220b3e0c83c7dc9386105782a1499638d6e54381c42de43769314a8b024ec186a014e13be07fabb2eb14413a8536de5ef4ea81573639b9eda133b88794515bc0eb3a6d81adf5de6304988791b5f107fbd3a35da5bd11cd49f03754243fa0490d98fef352316d5315ac7876c969c0442a2a9824b2c05d6e60ac76db39ee57aa7d2d6889ce519b053a5ed142b6a92bff14d8e047dd9a27e85058db9296d7d8fc8b7ded5ea11a0eb6ae898bb235ef8f415bb0403b92111b5c2acf9699e8fd8c1cfad8852ae94440eb05c2c231fc177d1958c000a9f5cf1e862ea2a5cbb20ca4697d3a79b3b87de3bf29cc6c0d624895fb97621a8479e746c7937355ae465b5f72c6d6a5646efcfe12b98e57196ecdce6e012cba1d4f85833ca5a684e4f35ced2f1efd36c95829930c40e6cacabb007da6e8e610e497d07f6c17326f4d112964bb67d230e71c84f971884c9c2257a07221672ca0dddc890bad0d284017609b5efa2dabfb3c185f43581d5439fc88e8cdf6220aa9212ecae12d49607ba5f47aa97ada64769eb58ebfcfe9a6533811f0d0693082c7dce5e25712d2e852559343aff210b2ecd51652b7a8a850bc5c746b3d34cb734e13ff36227337fcfd0b9aa731a48eb121a452c3d233e89dbd3a52a36494e247b0d4fef18af4d5597afda98c434990deb33df5514be473cf0475990afda34255c7582d664415c1d6db37123c4ded937395e086a6f2dfe496baf307172a9f4235f9e1af5092812e642956e91e4b32f2bc07c1b8286337e1c3cefa20b3ecb10bce3e411c67cf195096662f47dcc55401387413cce8dee03d1b1bf15b545b4949c6f718fa063c8483b0ac4ddad57414c70345a7f5d409f8de23cb0d7ef76c5845ec564b1a423c91855c44b11f2784556241f20006faabd38eae4dfa17295fb4cd52bb18152fbc10297c9eda0df19899eb0d7723626bec218174cad5105b6065724b50d53bcfc368910e89ccf685d2ff2f453f4ee0358a09eae2cd7eb12f30e42c5dd63f19d2df8c5f61c14cd589581c8a0d313c13ddd43afe460a74963c5d53028e03db52d1e3d1661ac25d6d85fe31581e66415b4ea7b3e90a648429ae117a29de88126e0f6453983168e319a5fbc18128f6765ad39fdd77d60659b33cca6d1e218f8afb4938105e0ef0f481b413d017cb99082965f4b35fc1389834af5603f27d4646326c62d45a2016fb460d98268928aec74a90f42ff7c656a55dc589238c59331d3f089b44443f3452fbe40f9316e12e6a6954ed0471dfe97b544e570b1e0dffe8cb3584500234e24ab03ca820a474b0341f72edf0c91c88e5c3bb0aa7e332b6c29ae9da378dbe6231962c82f1bdad16e912a3205e968eac5ebe0c2d3c526b76125517afb068190cbaa1997dd528f3c58107591038d720526d584a7cbabfbad2a296af178e14f00deea0cdd1f59d4f921be61441a64468c404cc627ff3e1ba109073bceb6eee7dccda9340d332f92b6fe902be1bdba7845e0106b022f639444a35bfb28d93e8bec362bdd376d290a923754a0d28d67ee3f939b03a4cbc62051ca0657587bad58221ca368080c105267b7f2f47d48ec6eda9ee28f787351f30cd23842d3c1aef8482a7f595c3bb5ce251f4269aa08afbf8a5f5fa758f2e5778a6167e66e90ff37b32d86248ab7f7998cab40d844057bad48bc7693005cbf4509943d433e037ce6baa8454e1a49b177f29bf7c72c01ab28c7dab58aa0c4f13d43ace7b7919431c9c44fc2f8df118bf4e4ed19e2a7636cffabfd87f6a54850fe7aa6f0eae1fb7ddca5cb0585d8497541d32c92915cdefad70341ffce710b86ab3bcc5c6e229097d4305988ba2726a2756e211fb4c3b61767a8b9daaa75721aa146a19249e8eeb5cfa4ee1d4761d53bbc07981c0c18a0306218c5babcd7758b50a36b34faca727f399a32ff77f509c7d45c1217ab34962a1ca9a3ef5b925412510688813663804351995e5d14e000fdc9cf6242622645e3ba955b512e1fc28667798ba39adce052fb4a0edb161e25d4e7a685359480b39c179932d3e46c730a9363e3fd2550fad07136af3a3c87030f4bbdc81ac88926a48b910d5974edbf2da7e69f8128dbf87589c725f1d592008efc5d5a27c6d5e93ee89671c6726d7c54a11e8c85fe316e4818364fb2051c5cc4c6b57b987eca5431daa44b36c46d1be61b3f999b091155aaafa97535db272b310dc7c17c414f0ab0b6eeb3312fc8aa94de142da7e5cdb41fb13f233fe0d8d7b79852034967dcbaafee776c1d5829ac5b9beff03cb615c36a5b06fdb9c3adc9ca69225d21b5556ebfbe29ccf94b0a2f62930be9e3f146db0baac5564e6a98da98a59cf3d66d221f958f28e7e647d55d41da8e1cfaef4d111fd9c2e96e18ec704d5e0fd31cb8d74b4d392368bfc0a2a9cd0d9775353f3ee49175956d565a7d53f6efa45be7cd10d7a932c0e7552dd9864aea750db9be9ff698008d4add2a0fc91b6f3d96333a888dcb5c99171832e3d517f1978c0bb829aea54e863e468f8c3eccbcc0546873f074cbe0c10b1c0b249286c3fd42aa8af3f21de5cbe987bc9796782b430030033788156bfbdd334e9acdf1c2c324d54eda95f2e6ea351ea0d9f1562bf0301a46db4344eb7e8d6d17402edeb57b5b3868c2a07e4bac31179a68b11a3c119b63989482069675fe58df613f5a9565b33f1da5adfcbc646d802e0d2ead870854037c98685f722a38718854c9745ae2f59467b357af92d4f4844afed7a83e7e49e4fa36b0c0f6893cc0da3b4d842e0810aeeec5e6be0d1d34e1ade137cf624ed584d3458d116f6cfd873ff486c699ee47ffd3068edebf241c3bd1d376f21f59033842432663aedebb52d0d74135f45806b6f18b81206e80e10bb3c84c830381b7898ddaadeadd2c7754b1fd29ec6363aaa49ca32a1d0c750b9316de0f41f40916dae7a5d2b052b00675e8810ac96ad63ef466fc90edb7bdab18c55480a926b5aea13b34a9dec16f9b88743b58b41b8a54a394f72b72a893b6b3084585ae28d48d640d7f00649fb84c29ecded649f3c6b88599df70ebd586e1b91f875e195e9311434268804869e6f4542dee84c1b7d14ed9690f69370b5af1a858ef39e2439e1bca4e180fd43810e40860b6fcd24f517df4f650672306d9879c0769f19700a06fa680ef053a7ddabe60e710dd2ec3b2f4d0ed777ea86b899a89467dc12b3ddfa36501cab633db4cce62804cfacc5304c50ea8f1cc65900018a618a16f4524eb911c05f2a8d82c4df2da98e2df9b8d83adae127b01019c6b86d5851cfa14e1428be75b3b3084e84d7371cf4e5726f93dde90014c89516fea38cad0569a02b19516e6ce1bc757411039ad9ac26c13129fe87fb13f87b34d4785adf06c3b449d8f173e7d32b20f9e2ca30b10c56076d5b3cba02f4e53b226f476219fbd38b6e8a3d49b0c7f367a37a9fc1cbe6f9d2aff1ce03845cf14a558e4a580496c89c3066c3a12f4d3a57572706ba43a535945ecb6ebd52e8af4d4e94076351efec519ef7bdbe589d19c9f60c09a7a843464df0b13c074f8071e6d45c3126136aa0a5d17d5ada9bdfbc8bea8503e59a08f834ebdfb065bc869bffed21463693b105d128640d201b77aacfdb24604c1f9b62b9e1416fc86717e8ee3cf9433f1dc751c6d9553f979d0387de0c504e4f7858219cb0aed637ccb9e293a5fe7e72eacddc11cdad0f11c3ecd96e4703f3348c7c651b9914fb2315902b91984425ad7f70438429301e72a0923c3a8c26bd3ee695d020e78498ad51a170806565318e51ac659a5313d7e7eb1f7402309bae49f46368cac553226559bb497d496707962b95da3e8211ecfc492a425add48f3fe1d078607ec5421e21183f545d87a1f9d6135da78c686280aaf446444e2fc2c1d0138dead7d296163fb2633f0bcfd483d2828e0d91afbd5c7657d4e7d90940d46e821072026c9870e0820c45cee2f2abfa773468eba8009a0eb62b784cf73fe2e6fe96d2e11a291f7951ff59eadb25a75ac94696e41f16cf42f61ad0a03a1eb190a1cb690854ab9238fae61e51e024d567687dc1c8d8ef017f98965d063301d912d1a07028006773648bbdd4a43a561246d03216629eec05599f524c8f7bbb46bda9cdb1ad065b01f3ecbed595ab8be713d02914e7aa9f66c278d3ee32a283ac70c055bbb718c243dd39e8f0780b9ade06b4bb0fb24092ee9a5bd436a595b56c5568158dfb99f1b5b304579bcbd3226c3a0b3d0cc090364b115045aa922841dd3e93b3bb1701ec5ca395a720bf3717b5fffe1d7bb403e351ff41430a297041984ca4ff147aa735ed49d9f5d1594f53c09e9fe11a6f4b3bb5c5d0b97c4c200fdecb93d5f1bacdecc9f41517d3fddd246bf0daeb2f4ab64d14314619235a961e066e58798c9d099fa26001403c4bf7e28b5286a002b14d2c47044d991111383efcc84d609844eed912ecaa3d5b4c4f74a02eed4ed5caf6541a07a4a51554992e3446a60524b9bf840456a63721f37adc2e7c71023f3ad6fd23e5db7563862e2dbb7ecd15d031d511d44074b870943fa092f759af83cac53bd50c8c9176115c7592ab15f2b2fa24d5e07b9ac109d5d8c9a0089b21c02e4246c1ccf5bcb87d96b600cb5c00e6345d82af46def0f16c2863f5ce10941865233370d3e81123fdabfc4c97cbcdce0bca9ecf860f5a6edd382cfcad24429abd1e67553ef6bade9624fb0b0d8466c367985ea475a5bb721763a1f5cfd14e7e721e6d969c78ac5947bc8505e5c811ec9bdf2c3cc79213522a0104f85fc8e4d6dcdb710fea0d16dfe4140a386f79914e627cbce3d580966894d6fb1a6f53c18d38eee4f016a54bd49a592469f3ea7b3b41ef6ab30c04af97f938138143e924fe7f37b24eb9cbeef643707eda8cbe099f7f1233378f4888af3012c06bd7b6661830e1474fe268ea567af92e31b543c4382fcf6585a0b83b8bf85d2d4be90a68fe18cbb50198bd86a7d9d492a97c04230e99b8a44d66f7d5edcbe2160008420f1a1ee71bb6c0a0a54a326c386a753acf3ffef3f86311ae8873ea5c77a6a8242049265285fbdcdf49650dfc9f1a52940e0e000e72903f3233aba7770fdda9c5f26afe0e395a8ca0da0df4cba7214bcb6f718e8e08daefccb12e2c734b7bce32015c1a3db01eb111e2c70b86ffbb71a0f6edbda44fbf4315fa0b55eaa35d6f31551a89110b5a800e64e61b2581fd43c49a02ea4c1402b20751dfacaaa54475eeacae88c27b04e856d4e552aa45537dafaf485b6281261a4da7847e2591a563dbca14524df647c58971568c07269077bf2fe1b5a130f6904b04c4ae4823cfb4bdb786e919f60e9caeaa785662f9bc27d8a02442d7bdfffe4a228cf60e1f90369c07de4adbbbac69ceae03d49dd95835572983497cf6eda0c67e8effb5ab215e6b5fdda53b9b581ce4057cbf95cf579f4285c1992af08f8a1f90721045f0daa451aad01537084e30360a32548dd8236a71d13b346e1cab146d231ad4f71e06e7d7438a12b2fbe6dd1099d43a8eede1e6bb813143d61e84462634f142d137d5b884da911a7f1c1a649a12a26ff96b77d4ee8b469799d8cde7680c39125c73cfe58dfaadbd48b2fd87d1dce90c6d9b32249a470e13e7e13f2289be8e691d993a1b82d71e5e087cb9f4419b07707c5b9d4652f4854971350edc2f3c30c2db84b2f9033b25ae5e6bbce50d8a4ea9a2b6897cb7eeafde9f1a1068a9a5fa170dec47ff62c3e5a27296e1a7848f1265f80c30c8abb0f79234b98ec67b0f015c4bcc4baaa6877e0709dafb37d5916c53ab71bcbb6d452c03dec0b50cf8a14c0cb64ac914f1370bca13b24cfac399704af73a6d539824e248d3369d537a54e501f88fc32dbd0376b1a87e8c8d738457599494f6ce206439f8d77765bde0d303ca2ef67c9e32a4df06c6e9a39492e1dcad8e7d9951a9c719a4601c5fbbc44449c54388ee70978b6ccc063a0596700c29cae7278ed2475e1b6d0829500f0ec239bd5aabbed825fc678bc9b5e834a8446c2406b0ce2062e00f6c1b2a05e0138026d2b9bbffd7f01a8b8a6f69e69c31c7072dc079d45b5347189a71e5bb1632c1d0bef88e8f2b5bb9cda6cb202694f931ccb2cb0045d8507cd9a47f4f69ad2ebf21f32bfb36ab5fadccb40297048a7c50e9a20faa073f61ffac2fe7dc02fca33a367b34bf6252efab4ab7127f52da63931f8a68b5ba5c6667703019591737fa19d6b54e4616cdfa1dcda5b87e01fa4cd62616514dd9640921f4deb22e3df7b247dff72d170db17a05f4f8261e640081308fc0e866f03dc33586ddd43d899e63a633c6bcf26aa7e3ca0e6d07ee19220698a4fb52e26c2134ef90129b9be28a0b80442e5778830deac79f3323c47c64d62e26842310d4adde18c61b139addfd9d3584b212811ac6000eecaaecfaabb72b708631b9332ec14fb463862c25e60c184b2b51d0dd806ce1be713a66624bfec6634c47354bd553334b4a0a5dbfe701f8d18e71af6cd0513291ee338ec93d2a06878b0d217ed502e98d2a249e1c97e41070064873a24e1b4e5c2a393f425c6186ede660234b488135064f32b94b17598235e424dcad24db26a58a9c99edfdce261eea8888d716084dc869680e6dfe8706f57d1a7ccc85f78a0fba2303e3c08d910b7fa47a26cda5fe67befa68516d25930b110014d15b8e00015077f6596ae25ee3e3451aa517d118ac8820fd34d91640aad1ebee6dfe7f52ee22dd33ecc651f2424b3f7d0e27e7bcfeb0ee9d9d714f63daffd79b0890d186ee8adfdb77cb96f52a1dbf2621374b36421a373cbe741716fa0fd214b5022dcc16f695ce1328320619a6bb6df73051ad4eee3c2f423c81203df6883dade06078867f95f1fc33cef0c556a8f0d97a97e615aa7195f9c9e6dadf65c558c6045fdbfeb8024d0da6e3f3073c660bf7f1f4e47456af471b622361ff997b5977b422b4a98a009d7a6ac1d335886fd3e8bcb4848d2d3b542c5c50b2198fdf8ad1f4074481bfcff6636784b7303f8838173207b07ffd29ebb2694db883689f8214dd712b555b7dda54ed3f685ccdfd7e28de39ff9e83e3eed4d692d5cbc376511a5e4b84040d60eb55c02ac8633e528b6cf9e5bb2ef32e8a63336d48147ac50fca5f48fe1908bb0f4db312ba1eef32686de8a7baf1882d28165fb545de94a1729d14584939ce4f1097b81fdd403952a19bfe01280b8305365b1803d9d12e010276e9dff523aa8230bcddae43403d0a6855ded6c8a37f463a7c12295d95ba1e2f3bdb58018fbcab13b8078090cca894e7aa48c483e363f3b720ef96e378e7f8c2e47d1082fe92f491e9fa42ef0aa218a489952f58ff80602238054d4b1fe71be54770b6936b3db2f962280a42390171b0cf23eb2ab265c42757553d7e31b72c025cdc2e05c64e4f9585febfa754f2ba6a45df8b971fb8ba521ddc76a0c9ed28a6543e226f5741eaf741b2c8c82d326e4c71fcb9d569cf26edaca3ec5383957ba01150e0933029f18767fe87920f68ca7850386e0f4e237a8b0bc90b662eec4adca1dd1024c504dfc9d4354aa8fa59bdd73d2d9c184fd1adfc43c34d77dc3a13a81f7390ba97ca1409e86e2e5df3fa8a9474ea653222165945609ae00156cae911a1415df393ee436b94d1071a6b8c55d20ad1c98ec23d485303e50b68ebd759a564f533e53cd0ec2c3864a5b3cc5c44d89db7a40ff3ed8940ef92da16be006cf60e5971903da0e9fccbb66e4b5adb1d1fc494bd3286b1ffef13970d931ac16531bfc9bf656be11deed9a884d6fa8cb4227bed89b28d0c4ad26107470e7844362f221f1a0da5de14107c781c16b507566ae1a285a28ae28c9b9ab9566daf44fb5465b7f124c8e367209e5a42ec75e82d6d860cf1bd074041f8e6c556dbd7e15c08710193df0901ac1bb58f3ac5f9fa8eb469a5df07c86feefa6ba9254044b00a0b1165a2cbb9a0aeae775cae18f7ac5928dbdc0673e5b878e25055b93f9af1393e00bd74098bd1c67a71f9cf4f15bf506672526049e7603e39075f085b1475feebe1437c0d4fad88bb3ffdc5ede071585d5baa03cf968e2b31e8454d66c966fbdbcf423f2e0df90c2694dd6b2d48e5ad243d26c1cb617257107bd999cb0243ed2f670dcf06709c750923f4536815af9335ab0e2eeb8e21423ba756c2ae0536c29e815e19da5ef80ebe5e27eb82aeb4db3452d45b63b357d61471660e55b5429c187a260e08039c6fae5a1340ece2f823d67a5359f387401a0796f02daf3d5d5f78b4af148ca0e9251884dcc95230688f82cb93b9cd5ac326b8dbe63bc241615dae52b40cb1802ca6ed86e585c60c51f2a824978a3eed0ce3d94051ec5bc064604872cd8a3642ddbe210339e4a3cac5fef0ca3459fdb1027d4809ffac5113967ed416acfc7acc30bc218c4fe2b97f58cc30f015cc946b091a27b7824554e8d94812b09a310bf3df217fafe1ef8b222cabea1e4e128f721bd8c5b6a0612c0002c28bf2f228286e7510e17d424804d93308c69fdd4f5dd4ed183d177291f1cea51af3f1033ea9bc4800c0cba77b0a5fcfb3dee282b0abf29e9291bee761166a1f02ace866c2a98aced1dceab5f752b5e235a3aa88aaba0ffdab15099eadbfbaf87fd7a9988b5bf43f51e2efa73f02019188ba7d389058fc4fcee17e2429ce03d5d46899ba43f946f85487f0140cb35f80d9c087bb895abbcee09528800b052d3c186d50f1c1cbeda3921c0b9071ebfb43b1a97943254d350222e69410d828f1f79e6d913c75f289abf36218c5f6c9d071961e5e346d40b74ecaa026b5504e734ba95c0d8d9d28437de8e273511853bd6862172109bf0f9593d9d31f15c78da51e05538b8e70072c18727b043407473c2a06a5911ea8dff35447e8b9f4910e58ed14ec8e61feaa9ca4d8de3ccf3ba01dcc58d05f15935eba32fe713058419e28a8af11de7382b6e27708592e426db77c0feefee5501dbef57f0dd84683aa32ed3bb15e72a6e8fa11dccd7cb81f0e96d5e959010d3b12af5125075dd22456dccdb9be4d2d50d1ff193e62ce94c3ae1198e91ec165aad88a6242cfd604a2d00340d172eb49d5f0da775f469a0339da1aa3a6d4ecfda61bd1c3e754cc3fdd25ef66cb8a9044df6a47bb778d553024ed29ea50573985623bd9b24430eb0ec7798a85bebd505e021e12e25303faf37ae68d39ff3ca1316daa80d8450577702be2a18ce90681bebcb0e748367506cdd6bc95aaf9c934023c084d9ef7e26085ee0b8ee65a9eeaa6badfe540b14baab4573135c86cab7141d96b3e20a0b5fb1f48d76c4b24fe8adec9c19e985371c1b4ba6659a1ae0c1eee218f3639d1180950bb508cda032d3d4ad252a104decbbb10325995d8db587d2baf0d630456b2f5be27a259a318247d6d619483a69ccfc3adc2fe0f697d52d68e791ec1d0f51fcf30a11b1dc22297073ac460452b5d281eb75c4e40efcebdf8db80a80092cc26b093aba8cc434bb640facec3cf9b0b149bc39ad537e7cef20d9630a650a6a7768beb1bd5a934443453a9b334c6e8ae517f39b2d920c617d18ab6e18de34b68c5778fad2b1df248b6203ac6085c571b3a03567480939f0f5183568d9a27308c8bffad9a82e0d0009e42cc156e35d2dc899c11fcf497eeabf413b4af9a475ca04cd585608fd47b3c4f8e20b12fdf4b96b53d3893f7891dd55a3517dde433aa76799a533c0f140020cf098a8cdb7e72e24236ef964a5939b87c0fba1e7eab93aac44ad766159ae2902219a9645308f53cd3e2f73300fe7f6666d67cda7b7a876e63c1cb066ac40b8e1b3ca8b51c95e52264722210789ebc9eef749f36760d67f23375574d5cf393991aea89d2e245db890516d37aae14e5f81e124a72c50de2d6c10ead6c2aa8eda71fbab954ca166c2dd9bb960a5fa7c22988900e4904b05718108e7550cda267f3b97dd1c5bc00f63f292fcc3c36ca8bd8689630b243b11d53a23b5d3431055f08ea845612d86e4dcd737bfeef3b56b1441c66bec1b2912aaff3f6a9431f78d8a2189c117719ea0c1717691b62e9bfbcd7fefcc5e2894b0f179c526cad26d8f6e3b05d03cc29ebb0139cf0b1c9bdda1ffb1579bafb5c5ad5d2dcbba3dc1e8631440c1018dc3f41853fbcafecc976fdc9a7fd78585334a6b290b693fada88045ead69ebd54b497eda5b18f746e00e7aad80714325b932f81a72e45e6bcbad581a9e7a199ee5a22c4834442700303b98d4258e603ec0ff9f4e35bc314ac643ce1682dde6ae5eae0403b7b21f74cb6e37cc6fba3482a9e74688ee46b0c82fdc59c284f9ecae34a20a6016d05323d859f32e51c175edc1c8b26179829c3e7228ea952676390107d8447f02208e368e098f3f4af8a3a1b5781571ab7b6b784a0151f3e847b825a74bf8b54d41ffb1bfbea1503d930bee0bfcab9ce76c455bbd72df2b6e144f9d5d08985c9f54c74d61173ff990c15c9ea930ff74fa84aeddc01b1ae5acc63455d21f61b2b510cc765fdf91493075233c6b4210f7abe2a378ecb680d1992c0b258e5e3838b821da4a6fa3b6eadfdfd33d5a006a9a80d2d7b9208769370f99405159a2f2a2eb55a76eea581e76fb53cc3f9f2e37072b9bf3ffbddfa5b3b28dec7248d48466e8f151575e7e6fe5cd7bb50eb7c6f5265e56606e57223334034a49777ad60b6ea34989a6424c409d51971533b20567da93a55607b880ecd4bb755396160d47a711bfb16557f687709c3957f47398adb6aa7f770166547acadb23b95bf32b7903f1a3143bbd17fd5d0851669551b058651424a97ab02641baddc5ec508a5e25a69c25932d3334b045a12a2d8f9cc5b17e70158497b5372ca3ea30f39c91e6ae2e3d1d0d1ecd50727ca7ff293265a6f484d996b38f99c3f503537b8bb86eeea66a57974931395938f9eb7a35f504f2d51daa6704fc0c7321ae08edc3bb98754961262fcb5db052831000f14246f77a0a6798e8b67ddd9c967486aac1aa38e51c39da09e90178225cb7bd0e8e01a6f7f207ae70d37cf70bef8c8d5bf72d227d1eb93623a448d7f14c6a2022ad5e1c6333b83cd2b7259edbe5d7f47a30fc9e7739404e8b63c61b14ce7d42d193bec5854a24593e5a31c27c2ea59964721b831e25c972b86a6642a9053a731d4e7f5133ed15d67015d48b701475bbd0fd0db9d311fb8d8f826baae4417f639f80a0da6b255bcf845a1ce1b5b3f59457ba45cb323451e7a2e8acb734929e7a94c02b375ce0e91a4aefb2fd3e3ce48460c2b5af32a21eb193ab744522b436151ef53ada9ac714779280fa84f9417186e585f956a0622b0ed5c3f9f7f140920cd3baf2a901eb2b4d3740ef497256d148ce605e00e8cdd10d13d95cb99653dcdeb5ac50b7da3f0d42a958d2748df2997977f01b1514fe0e733e1edf39bfdbb10f29cf440e45f6fd5966788c5feae86de434b1ef9a18bf4f40b36c2e0ecc0dafcd0269c9cd9a439a3f41edc7c72e3fa13c0e4961edf7eff8b94b272ae0dd2b9729b5abf5a3d9b1690590b6f3451c571cb69f569425354c44117dc2de18a5674f0cddd91b198236131897cd2b7048d95f91c32f7e6a18f4d5f62c78e9f52c3340648ab9fe986df2b809b64d1b4f2b779adff5b2ba09b875e989bdbd05b15ff0b71686f41239bcceebe42d294811ad303fed96186285fce6ed73adff073d2c2eba87ee0f68f5a7b89aac11d72e16777315e7f159a695dd676f8e5ccb0e9ef210e898d84bcef1c0c8ebd7c3bf708341e82868a43d7cae2a945797a2689e667ea72a30ddca22de6507e5bfe0643b5b74e289b17fff7150819f8e1dd8b97abfd383ee2748ea0561f07c145cde17ca8aa63686e6f387b76088e58690d04f630cabbaef7aa81a6605762d06617a95ab8cbe6d42b2255a5acdf2af6cde9b775e3bb795d82d85db6c28654493bb76f726499fa7cc37a2574c6e66158c0676829c914335be4cb42d4d4fdc92979221ac000554d67d4da7005fd29d7ca7aa09746dffd48c0fa940bc69c6854bd14f1c8d06051e090c819acf24d638dedd98f5c8019913a1286f1aa5e6dd2a6865e0acf88a85d444d14ff299c88a8f7f5771ccbbd521975811d207b7bcacf09cc06888f9d0d7fd8f89d669e01419c817b449095205254653a5b2a59380a6ba340d4aab4f4dc3cefad43e532d7b9eca4824b3366b6a8e20684d773e8fd4ca630bdc70f79c277ad39e73fd3ca59ce1e325f41df75b2b86df7f5f4d6cae66a5473d9da8fcf53854fc27a0b0a0a42b2133a37b4d95899dc95deabae6feadee31f66e7d85509a76a57091d216f2b18c36203a626e9d88c49175e46a2fc31af8250a750289340993f2fcffc67ef3ccf0e4c91fc8327c123233339a7dcbdf6d8f92bc4858ac60cd3f0c574a10ab917b08bb10cff4b388b0f72db31dab2120ab6684b8bf962f9b5bb1676e946dc369ac97c65e95d5faf6e1b6c53e5ce4eaa6487a5bb32e2811450eff263c92bd079d1a64ff67f866b38afbbf292969e03a0325942a67f13ca767cf3d0d94e028c9ea52780bd81671a00a1cb64b3d4d5058e1bccb82b116049d0c20dce5592dae9c5d224a9dce9b6f65e3d7cfb18944266b0b794357b7f47d5f929d5a4e8cf1f399c7d50a65b802555718f7d4aa730ed09e290f03888c54c322bd66fa07c0dfdc5f9e592067fbc54ee6e572a9171ed13485c2be9ed5ed869294fcc54cdaa322eeadfce4681cadabdc889773103c8e6bf9b252dd4c04b3876caf403461bd3dd2c47b734b0157cc7eeea19d49ffdae2185d9c6a4259ad02ed8d802cdcab11fa62de30080b5a19df217bd9f29a5ea70d0e577ad495cdd7e0e3ea5b341c995f070a105c2320f67c9571eee23b6c10a59e1e3da2fa0511b1bf767e64552e2de1bff1ee7c9893691fabc2427f20be96cdc6ee3053ebb2270adaceabfa3fefec48b93c69256dbd227006edfa0c4b12e385961c2c5eb50f9cf81922543f62ffa739b2e5c2e1eaf119cee3922eb26e38022f99fabc41f12549a277f1b61a2f0f356a8e90fef81a9de1860697c7c31295cc8dccc2452915ce96c5275d8556cacf0c9d8ebb2100ceb4b8ff328214f610cf5f9ebf6728a9d551d809623b2dce274896dcb57e5f82f8f3b634c17cc3edde6b25503c02814fdea2f4f09c0233923e2819145b70d48765640cf41060e571dd41e4706df17acd5f99661125f4b78d7547a96967d97565c2b2d8254539aa8e7db398d79b145ac95719d6583809d4b7e659d030c5417d19fd6c02d4319a6fd240b68c8dc92e12eb89962c8a19f4ccf5a62e7db1aa34d63b0bf26f45a1605d2f919e3a458bf6b06b79adf3346c4ea2850b27bfbf81203a6b66184c9b7584456d03f0b941bfa48b8f43d1c7a8364a3db631196be8d6eb7d50c6089cccce2ab35c8bba3fdbd9ad6ada8c0eb0f96a6c7a34bcf5f9dd71faf04b883edb7bfa212235af35d61fd32b46b782411f5620bffaa48269d79ab5d8c3c340ff94dfd4ad74377f51e53c2cfe3cae1de49b830f5c0c961988443ac57fc2cf3565cce7528253ecbbafcdc98f5cfe4b9e292d1a32043c3d97cc4b703f866bd8651ac621664a27c7724edd98eaa7b15c5eb311cafb55aadf94cd78d36db8a60b692c4b5090e558f5eb84f3909dcae2dd371c65245c2bb66bbf805468f6f4f98d9ea0d914d303bd46db595a15b434d2923abab6915ffc23a5afbe9ae4b492ca02f1b43312ed2702f790bd0ddaf8b3fe46929bf81902f51d4a9626ce3c7384d25a7a3df5827a9282721dcc5a9916c306d68091a818e598ede63dfb9e33b10a757ed1af4a34020f8a09fe389da01e0ded00302179d3bb1ab4138914e545ebbf339d70b830c95b4a392a55695b58bb90d288dc876ccceebb844f4bbe02f1643219d6aaea2adb881544fc709378c5e0354b80e4480443e20b2541316e1608fea16da864952815062e2b933cd41618af7332683d492f3bf37df2115f7838981d8aad0792ad389f4e961b9ddad3efd79973f57bd4845f128c86fe2b0468958335235d35f9ba706f46ac8868cbd49b93930b3610c1fd4f00323ab5812d53c67d31c3783ef5e961e9b345a6a67540dde7a190cb54b18a7ea0435c00ec1f1c12d6a330d6d0ec79f7852f95eb6c449d9754a03900f59ac595698f38250fee0a2e1d7ec4ed757f369fa03597c8c1a2de13a8a2734bf02ec261c35e727c517a33a8a89e728356cdcb2e4f2d008284b179cd342686d9981bb7612216ca8802c993d0de02cfbd0cd6d0101b824186dbe9959bafbc7f3c3c583a4f5097c92a3730417ce6f1b614588ba504916703640ca207e0a6748b774bfd49605335d77c06ab1ddcfd91a145e34ebac65617c27a23eac093858778eadb54b13e64c932cc03da6ab78ff95cccab4432e8b40280cdfa0dafadf5c9c2a2f0d6965e4df77abcee2edb04766bc854800ba41a3f0be7399d6598b5afd1b0a7b2a0d319ba8cedcccc2b91be93e918143a751320ef4946a6d8c45f8f744794ef30c2de89a7e3bec7c7753775f5b2fb2322fcf44ee6ea4cb1d8970cceff5d7ddea381c859f6fb21af85fcb47e27bf3e15a249c8cdb52759ea668c2ac04c4cfb708f302f536dd2ae6d83b0c4a5a142fc3b93b038c5f588acf16a3eef1d8d786973ad4ddf95cb715ed03774da2d172f6bb031d465e1671888d75d43d8140a6c2d5c8d54fa838067bdee56c0ff78fa1f4343d81ba76b31a34bb621adaac6e95a4077b411f6f7efeda119ed25c5a9e4722bf64d41cd8d6416e808748758101748bc1e158b7e8a504b76674b5292a0be944d0aac6b69d1ed48bc1ce810a2800075fead0bfa8525e1220f85bd4db92e08b22e1f9531e1815b13f4d05dde8dea87fbed2aebb9406da7f859efbb80ec4e3cde534d8a85a139a80e7ef4e9424c80c57fd2c7f127a3ef33e2df0b27e347bd05997a682019debd3f0dd9ad9ccac5248d29fa0b40570555b031613c29eb0e7964b0bd5d4dbf79fbcfba35f763880b0928e2820752e638c873a5f26c22064b00b0826567d45e2aabae2aac1d9a0836bfdc0741248a63c8aa41d8d2d63db57207010308c55876c1d3ff55397cc34e05f2bfd9b839ca6f3b51afb04938b1c2fabefa77260ecf0622c0f94ebc2443b0bbb6fb32f907ccf2da3cea5835d499cad4d935ee26e2dc312149e100d2e91e093f3418c91cf697db611f13991ede63a83bb4124788181b8ab92a2a84b5384be8d3001be514454cc03ce74c450530a33ea4208507625f2d08dfb8e5905ebdb77c8ec0fd0dd668fadbbfeed2ad8ef9ee967171e6da027e726534d0477cadecd40d31b22aab0b433f4ef35fffbb09b27710edfb15b3ed531408e7dad9f54a5a866ad3ba08d7b28eedfc9d98cbd455ed94e4f892a088dff9701825ccb7fea97eeccb51d85ec9e37fb3e69d2fba4380676a1b1d7294d60ce3bb2915b4fe2a863f87d2de819c1fe12896565cfad56937fde7f289ae13a95f15c8c31354d5e110021af3b0e3651280cce49b896f0216151d9d39128c404c28b3e3cf8547d90770a9fa842c541a11a707cf35c942df252c947f411867c46c4f692a6ef208244e8cbe5d9d28b5b60d10c08615fd3e088f0a98e7b9ad4718ecc7d9c517bb5daaf8b63138fff62f8d21baef8c890f2e30f0bcf0b6df31e44e0843452e704af920b54a1a72f6c7c6c0a5e01436755ff6e8a7c7f8df70ff8ddf8c4dcea4320316081c46b77ebec65d2c1968d10dbb48a55771eb087b7fce559e680d717d2c319b8422ac480a4794bfb4717303ca26eac3040f264887fd3de49ada21bb977947314df244593cff8086275b3f8a40ccf09bee10b7d8889eedb4f6a52564408b1d7cbcd41402cc213f9141b755568bf4ebf779dbdf78b29619fdb84b3e69a0d024c5edad28903397baa18c529cdd96416194384a60162f3d3fd04ffa7883a5c5d289dfdc9df99a38c91e2a9390be037ccbed05a45da09339e64f2fe5da4aca016f1f385fbfdd9c462cdc72de94e3c9ae2d817f208dc7344c95d6569fe01f1197e278164ce69c700aed67aa22d83d6f0534b6770744dc66d793f1a011b9a5bc1a86b58fbbcf0586a4cca333ddf1a61f3351f1edda0c7265ac36469ca3c6a83b0f283fdb734488ea8fc92e8988ca0a08b3a1cb8ef58705f8c856ebc8bbc72f42bc5fee552a111ff39dc745877e47f130df1a5bc472c43d2b69c0e850a701e057446bed7c7612c36b02c9c149c87f76b8cbf46d7958b6bb5a44d1d5f3f7cf52b597e0c9f3977e2970fc090587b70c41f9287cda539d042f496a52c2bd27259df599ff95c952f19ea70be40a3c2fcb40c0a22e6a048d1d7c5a20beab13646df276dd8b90b882aef5dd69803233a6cb89d56efc5ac97f2c4bfcc4395c61c8ba56725e7f91049a096c5e6bc8371fc46c3f581d195fb68896d7b5b4efe3573d1b7847f7e387be4fb019fae7054f46598826ca8baca2af20b6b4b78e12b7e66bcdbee2a4f105da88523802b5d849988d2d0e3a21f1f79a2caf85ed797bd12d8a283affa85f3311c391f948c3beb00df5178c5b8535dfb23f9d9761880e6d69d0887de58294a91f444dd6a7c37565b75d19f33a6eeafa7d76b315e18138ed26cdb2d331e80f9010f2ca1a2029bd1e746df5c4ac69ea47100c31338eac2361250ab679776eb1ec8ab7c1f55a0788251d3d13fe7d00bf8e4a5d4eb6e05ae466a63d068326c3c1945a214fa6ed79d4724b741c9d3844b1a590bb3ec8b1d342671d4fdfab08fe4e9ca41e35f93fdafff708dec3c38c7b18c631d3401737cad84e09acf8ea2790198387beb8fb8981e53fbfd5798048154a1d584eb9a7de4b00fe504ec0d1c88b13f0e8bd9a2770d7571690b65163732777d2d48adf4b8eba2797a2effecc077c84cb595ea7491afb1cfe26c22304ad1c7489735a2be610dd7546bfbd5b58cefc79d4998e174172ddacdaf5b747d4ff0e7856a17034e4824f0749db9d86c982127c1e86a25ae790e88c7e278ce6aa304cdf47416ae94987e75c2a7f6ab4ae6a830c70a77bf72483e7aab347a9e152ca6063f7263ba87cba6cadf02cf8c7de7f8724723a615e88a5ad89941eb0291ebe03d4b79d4cd16b718d4f3fb695f96ac31d491a0a97e8c7cbbeefe5922d9c619f2b7182cf63fc1fc74afc4e69a4277283814f4b43e3d12783e5bea1b9fb183b9158bc012d301de26d950f9496cb9cc91f83e64b9bfca98f04d749960946c0a63def9760501bbde39a6d03d4cb3af43d2fdc8611ddd6d205d50984dc2460928de4a0bdfe2ac9b3b9c7f2120fb18895e71bf694996291a2e49836dd9c1d307f5f0cb353d4c8d24583f28a600ef7ad940a5241dfcd652f7982aacefc1eb247c693c7dee7f4c76863e47a7eda231bc9529a5b388990fb074ec406df86f4607a8fee7d1432775d12579febb325e9dee791e15f8346e47f59eebfb50fb9d13917b493d929144ec6d2b385d447d7db2d1ee67ff9bc7bded53ff925be14ad87a001c818c9a25f19bc094727682a12a0816a82abd3a2b18e55ee0c060a9331c545c7bae750681cb7cc542b17a0f7ce5c9117759a92f7c00fb2bdeef2fc9f4e9579ba206d72ea4a41834fe2b12f9c5bcc594539b915796eceac1a3f2fc6facbf71727758ea8d67244b39472ab4a7c21bf7f105309c9064ab959fc9e9c4d7059862780346d14262c5c4db67eceb3ffbb66a3098fa198d563423af9286025d1a913ec471a1dd38ea414f9d58da235c6c522f9b35c6dc3eeb569d68d7dfe08bda8a470b7427826f3049d9c2205111da50cec8ee5dde685e8d1ac5e0a8ef74216d8686797fb2724002f1ccd1f80a5570975ff242ec232315b21893896e76ce342034ecc029033e0ebbc3f9db8cee7b6857828b7471a2b40551c87a186ca236ec66eea6e84b4c2c468131dedc10b91f24059582313d8abe14ab88c422a72f16264e08e0e703f8d1c4ef9bc940d0333104ddc1a8e869754f2c5e07f4de310cc8ff3a09e554d63fec821a021c011239bfd7c4b044cac319766b58274e6696349a673c6b262f7351d6978847317db2fd28e90d3ef09d268e37929febb941cc49b093b45b5e6a110da4080233ac532d9d4f79c0b92424ecb9c017ddd8d3dbd2ecc0fc20da260a57749969cf10485a932b1e708e9b97e6d4cc8b7248f73cfcc036401942ccfcb8ae0a25eb53d55bf5443dfb39f90add6b9e8f8208ecd2b67f5f3c508c0a00a4fd9be45fde89c72964b8dd959bf6322b0758902df476366027b0aaa8a70e699496cd9b3e1ec634694c80d7dc81e2bb53f6824526cdc9e2c1cc070ee2c5430f2ba3a0073e25c7b92b6f608c9ef56d800e1f3a502313d0900603d1390d884747bb080d6a36eb57df4859d7e3eea64de826cfc07ef31d5ce80ca994867087e7e2adf12f44165660468ccbf20d3bfbd9fa7e8547a5f3065f9e07d7d3309381e44a0d5ce44e6934b9233e30653b1e4ad263f02557250a54d99fb391beae04ccce999fdd36551ee1f4a1cae94c71fdde60c6c0455dfac62c1093f55d3c38202ad6c9ec35a1cc2aafa70217fb7343e2ca0e4d02e6dabdb8713f88c2159256556b01001610cc40f2023ade585c5b8bd1df780f7333328044497975ba993cb89ef5e51bf90c5fb7436ca4e26109622e4e65a10249163278ec17ead237794239a912a3239403b74cd60fa42750f303d2183bebef3c7ea8bc8f8de26b8b10fa4f4ad4730450a16e1803fbd9bff4ef43cbba177386e7ca4447ce4585b8dadae1bff32e41fa6d84ac8ce953077b281f54cfdd8bbb6c2120ad2d6b1b1ca2d330fed41a9454fb773f5cd3eb09788ddb3d9d39801135aed24073275215439520e0f91e4364d2409447e75f9ee2d29bbe0fce71f131453011806c28c9c74078f8d92068672d7cf979aa28a526b4137055fda29902b177282b6bb62ff3c1dba6e51036a601b688b3ba374fcee1dd02306b6db34262fdab2f350c48b60c8a5b14051772e96010727b9d93e34708635b426b1c3ffd316c844cb35711154fd9d09a6a42722300c56a1e16ac2572e8eba7905df5bc5fb9dfe8aa9844a78682b8f8d59f13a332e8a1a33d507bdcca4f16b6e8637fcf7658b0e790b5b84b505d4f06c4cf2c44e012c9aa44fc3e44b7c5f78d95e6ed6faf8c02e18bd8b2bf7c86827d225a80243bf617ea31dc9e031dd7d1e197887b9faa89e58fbd7253a2abb2589c32dd1f72822d92c1f0410f22c8498d2fd3bb10539df3892639aaae681bf8de88f175f6c18f7cdace40e9238c92942eed94fdbcee35ad075be0bdb0497e34639d058c91aa6f1531cc310d96f36ebd4211ced8b6d57f75bd90c2627b2a14524c383e09667eb0e142b4f0ae716a52a0bf03445fdced86e9b6da2cfd943c5535d0ad275b5e8eb32d741a2185d4e7e3a620f01bb7e12299f6607bd8fe022cb6296c390037a999b9a7854c37bd808801406b91f4c20d99d80da87fb481070c6dee612ceec181b1be39631ee1b8ea1be2dc6e24134fe74af89ce03ea50547b7e9322090655f19d9e4a64088a566916828b4ffbb926dcba837e951293cdcbc172f3ecdc7c4361750c09630cfaf3035751ecc673995da8d3ae6424b98c8e287575f589f346c67f4cf739912e115db034defae2a9b9ccbae8ffa0b6273a2c545616ec15c36997bd2e9ac5e7e15a56be5aa326bd02d2e7f600121bc8977f4001050006a6e52d71d09d693d167e331d27ce1ad9f5e5b4a78430268224bf143441860f1a3a35be56477b99a0b34bf8882f8ece730770cc2a908fd3eb025e366d90d61eba1c14f1b371d912ab2717adc8ddf407c463e9971bfba80b6ecc21049a3b5fc8b86ba22d7bc35f0f54784b931f30aeb98a8947d03b33ae6ade3cdd6a4f8404421fe639b1b5847a2b8e3e2acefd9a596827ee608e3fb66dc2b43d0b1cba51e87002cf529b6a76c78dcc00f3710d2e29b2631488826a60e0089fb093bf1daa063df683309f05afac80b3402313c077a827cc4447fd324fa7ecaf795dea2267a3fb7918627bf9d758240a8d50b38e947bea3cd149637416f6628067b65661dfc5b5f65811f685a311d2342952243c79ed594f5121b46a5cdd9f47052bf0bae3a0a8c488dd9fb5683b08093393be963e8fea46e52405062a94dafb9ac478d88fd5543a3c6302f3e48f46134ff0437f915757d551c831f950fb7ac17b45398a5b662d10a74823f2fa36337665d59b775cee5e513309de7c2497b55f58bd1c539bda21c637833efb3adbfcacbc1bc620d98ca0f23c646759ba9477d765ed7480bfcff302d84a3fe0f0ee962f7dd52283fc5b8d31020fc8a3021a129ea93d39a6a80e5216b22fbdb33bc91407cb305f9b2feaaf730786e6c02a119bb6700d25c1030be74991b6a9c55b5b63f0705a33e88809ed35ad2ccb3fec6c7f205c54de32bb316f094bfa0bc3ca0c39c0d378e1631295b121c96becec0f0013b2a982e2817cab9f35d6a9e8ba6adea69a59c27e0f6c29c8bde014e209e265d27a937a39238bec551c7ffcc56441460db991eeb71c78439f878b339c563507674d69966cf52e76bb213b82fbdf00a69845e88449d6a9793e3bd58abadbc8e7eef012a3b8ea59191e3a896424713a61fdcfab3ebf914283e0666944f62578ec6239a354307dd8ebfbd70a6e85626e4e20f4b09c29597206c0f09d2e4e07b77d208662b7f4798cf2d86f1684f121d5f26794a6c92c98db7b45910df15f7d0e08e94f45d593e486f02d671da1b907806f53c65744222ebbe8ac9f43535899be6f6cb35187558e78de60eebaf078e1b755cc7caef49dbd406e803ad9a71c240296df64f7b3e806884389638607cb14427c1cd93275e31d032c703308f8f16427d71aa5378f6c61682504e6e4e77bc0a01bc88f09c8abcded788c2315129c30b0c0b6e330275e7d98fe88d662fb5201fcca6703d0b42dac6a267007d96d116654ae2c5f3ff0d7e9909783019092d68bf14abd62ca19e7f46e278ad274ddc75da7c441df6d8f03db1caf0710c712d77a914bde2d1a73152e79fe8e7ba5997b3df2e65484297ccca9d654e0833e1610499247d35508fb20bbae10bdbb299d42c79b1418f667af7ccaac7357d543f8a6fec9a362ccb4e012333914eb4e9b9fcb677c4a4502c5e5b0954fbef9bc242bb9aea3af4ce6e16cf09c329cfc1afe1fc072efb3edf365a5bccf6fa0916a4e5a3d7a46cc926cf94d869023df256cd0a03ae80e56d7bb2d3d34723c8bd59360dff2bc9c10e5bd772bdeefc1c828ffa46042af0a616725366312567f3294fd85401a0d49c45135ff8756cf38ef2f59078d6a2da4b75dff9da048c33440c413ffbf4c608b5fbbf9d0e3ddaafc16894033aff28b657751c87b9baa03283a4375df07b856474cb74f9c07a57958ed2156605ad17dc5692c6c727149a651f5f355959fea92765ee45fa98f951613412b4164e7cded79504db82cc119795861b49c184867e929455722a30650bb6e04c0276ed6d2422b5747de046c210abc345a3340b12adf231310c435b19ebc3212bb8dbfdc4221f11a399432f5d863f943db574b814b5907f0dea1e63abd0bd4d015f8d3b6f2ec8948a699c8cafb77922a250c1d807ac4d188c489382e2a6b7d1d43359fa8535a2cf51ad69df4d5bd3003488202fa41001871f545f38cb8c1082ade4a8b89366f2a0605f1b1afdd3b298d727bd46de847d346d24cbb7d3526169695829c2ee2145a3e575c4135431153b5c87bdde777db5f52c6d452a0b040e670eed8ded9c00c7df3336d8acb4a6dd166ec81bbf3a549a38289115b0065f764dae80a8fede412979ec53dab2da596d019d1fbfebcbf43c413083c66ec09da07c1f39e2d1f44f73521a8dafe1a204959e8bc18dcd1ed9aaa2d1227337c02f32dab666c6a6335d2153277fff4ef88a9cc4bca746eb3973d49c622db29b71d054acf14b008e0cf2708d698daa638c1ef7c6f8d2fb630c598c513d479fcbdeeb16bd5754338bcc44e42f0fda8d050e7a6564ae84736a9b08136be97611d544876bb4544c1f2b4ba3019f9727f37bac3087a95b1cf3a4ade4dcbe5d498cb660cb553e46cdf55557b7ad6a556f9a982cecb58b2cea1d9c9944fcebdd5386df7a2293c99dfc714c97d7689546edbcd8a820e58d6c94b6c0b68b5529da4f751ba5340e731ec1651315ff2aad2ce9a140a947fef34ebede92c9be7f86fba21e16d5d93bd328ca0a481d98a0c279a91b3c7b23ef7ded6f0ba07e2bab730ff091dbc48a4446142b66cc315b423bdeeac4b631acd8d9dbd17fbdbe84e6e6a1e565c7521e2d52993fdf54552311b109597462785d125908e8849f64f0f0abb6637c0fe5f52856f5eedf8ce75fc46c928a27342113a16fb22b7cad8509e5fb523a70907dae7dbecc1ed4ad1e45c45b70e3e13b7e7130c49a341298ce770a85c5b968ecaee41cc611aa02cd5e71e4ad22ce58ee2c98634a7cbbe91c179d1340fd9c1ed65f192b1caa58114142ac288526528c67637282227d15fa346ebf6bf9021b33572e2fb9d9039a653696cb987c7028fc2eadc3b18cde8c69f40b9096c055f861c30e88153f1f131f166d8b95e7fc1ef207f45fe19a1ae7c58a001ffde311bdd9aec74f434ea649a1ce1987712d3f64f67a554c8f7c30d5d9548a0fcbce3cb01f77c4698000baaeba87051fa7a2b4d6d0291495bd3093ec08728080129d8a5a376d5e05d51b09993622b1046c5748ebea75b176a849089b7d5fff782f5f4f77e1bcaab582e2d88d38e6b4e398e99da1a49d3468fb690a9af750fe97e20554fbcb856fe6b54f93e8100ab0d6a7a82fd66273aea964aa48a51d147925eb295c2b3a50e59cbb70f3241f82014f4f0b549385945e56ea007929eb2e53f83f3037c21faeff65dc4e227158ca7a2dc7796a99de2384577b7700e581abcc4591a373e9e113796fc7318329edce9437bcf6054c0c8d4345759078c6ffd0580c629cea235de7ecb3ec23c13989abda4c97710892c738bee3fec740647e6fd48c99cf273e2efdf5f8b2a1842a5cfffe994de4add562b3c0a02771bde94e62dfcae9e989ee3752411c3162dbc775405f4e281ab62292fdc4971b50d1fd2abaaa40c4ab34d39c287499289a745c817deeb78dd0fe450beef61413e8b05ff92d22bdc80618c33c3995d70fa932b7127c6e852393ba034582f5c3501454c105df55bddc577691eb5ed61093d993175d5b6e9d08e03ba3a2b8bad18034d43340bf5d7b041b34170605e9480489d4d446187a36d74893d760f8f8870c6cf0061554f5a825d4ecad2197dd6afc2eee5f25c40ca9ded12b7682da195be87a9af53898411a7786c9c881011eff12afc2c74f6f68a4988660ea555b45fe3f20d6be76c053a5858261bc8947ae54aadd4082f3c22a5cc7c2f7b76ac865cad8d1eadb7dcd08af61ce6a725649a3a66304d35003c13ba143b059a8a02cd4fb83d7c9b2e99916ec76906d4025668c8ed42d3503b5edaeb569315141eb0c23639cd3d4e02536dfd9d628a7a2045b21edea7612ba7909819c558cfc7a55ff13dc8dff825f399970fb91c3318c69ad5ca3bc5fffec87f9f1575503bdd621ac7ecb2f634a93a86d4850d38dcdca9533ce020ddb2b1f9b59411735dadcd7be1cd8997b6f05750fc682b9a2f1712ef01688fbc745d578bda0d0126bc985b24b00c295d39ef53fe95a2c684a1a1d75313db423b7f1c0c1e61cbf1ec9f4877722b39a397c5e2ad14910f4bd38d817cbdb814bdc9164592e5b35051b1fae72d3705c0dc6e5bae2e9782aaf603e3f57a86a797607c5e5b1c4ff98c28316ff133208994c0b567e4c2971abf2e1cf6179a36f43e0099236e85e6a023225e2a1864db6ef90487f09134048b6e66cd1ba633a1fe489da373d662f8a6188c6a4e9457ff5e0123f71ad96390a3028b43c593bb020bf1566ea61805fdcff3c420c7ccc8ec36632ab2fca6df4fad927ca478e27af0005a92ca49804594578e8a5e0678fe84aefb649212736072606787de53f609180b086f7e2244ce435ae0f498969c69f98bd63adeeaf8c2b519b9220436d2f144fddf76c27758b0fff4e34441ed0663be9cdab1e3b0062ec05acfc78baa9c5cf8d1fd93db9262e38ffcdfe8c92f458eff7d0777e66f54b3c515c0c85d1620fde69b13a0facfefb640bf1f75bce593b3ae29edaef777df36b84b1f7349220fd015c6a3884ceab83adf69723b08b321d209e6fad7dfe655f89ba4da26eee7c0cbcac2e5e748a34406fb2ccbdd08a71b04b6c6b56d5814ae5ffa377f692a3e1029851660a20157205aba2c36d5157639a88ffd458a217d842811c5521766e27655d15ca2d9386eaada9c325c910adc5e8d1f3873fcf1b00db28f5817f8139e82f56e2a64e986245b1fe2950f5d90a6707fac8dd198145e27d93c28e33dabfc1151cb11575ad80f57a2d3d2b382d69c433f6e813539e6d010cda85c8564362d6fb6f4448f32b3c871388452ffc54f22c832e8af32f5d16251adc0845df72608ff3e3928eec47aa6ea8d6848b8eb8e00d1fbd7b51e8784dc233476fba207f13209281793cc75c759c7b286fb64a9b0257641c907cfc8ec124c51a4691174656ea7690dfc2caf81511e01422471d80e46884157d1c0a12e3da30651c6871f0e6ac272729d52d3e6e8ef221080b6a56483084995d7545fedcd1538ded9cbfaa6a1ef9538c7409d4a0708b0287794bc04eebb82832ad842cf7bfbebb70ce5b23b45764a4dd0159d0634060d8ae1c0383cbb30ef60020c4ac35a219af972b131551726680dc3d84b9f5726383c71cae904f8cce19872b7e6c13cce605b5f2567c7d143bcb941a704699c1039fa8bf109ceae6bd94a56360a09abe119e04a5d02b4417f4f5ed8b46290cd015ef58809c364693baf0db65049ad97c2b47b01c9d499304af677fa1efd214ef8bd65fab9d879519ccb2adc7f7588910e38b0d0a296298cda8896bd9bf2c69885b86986f25691b16a25b917e10e68b73e6ae82cdbda97bc75e83e5411691abbbb732c4cca1859ff9e2a1731220c0c24779c6aaa2956f06683166b9fa2f5029938eaa284d42efb77696d6d43b60ee267bda17b1145869e529a87de31f3b8ad5a83fbb8e07335a05b0a808206b87aa33cbd3dbda2d79c17f8fe1d43a9a85c9ed884c201efb309c6d17958e3e4d6e4c36d3ea0382aca2e91177c3a5387a67f470f700d44af1ebb0ededda0d736e4655a6cb5843a59c7fad6bae654d31ade61a1f6b138a8e09a49a35d164bc2e3004fbd0415259e4affbf4c883f4aef2fb3a9a3ec536957ac7eace051bbd53b85788df2c29fcee49c1acc2489e47fbc78afb1b57ea90e586b053f2b8a394e6314d7738b1fb40e8c2d91a0b5dffe6b97320bdee89362b906a64b2d7f1eb9bc89986f1a7a99cad99926c7d4ab224f3b4dd6232c65b164f98376bd92a7aaa46ea839efe88510daadb162a404f7a67d9956a7095d292b194a4c5e278c525fce2130c4cb338e9cc5fc2a1598b0ea783465135981ece8d2f3b582fe5fd610a136604129dc6bc0ac2e34335aec3050b5387937f9593128b6f94d5db253a43b04a3e92fc2a759c193f35541ac6038ea97da09b33da2abde19357226f65c712670b2ca280cfbd97a64775c710cc069cb129f13f198e8415a6ac057471d46b51f3db84f37c9c9da65b08c73b21838693c5212fd12a587b2ce82f77bf8fd3841c7698127106c9b1a9ea99315cc288e9139f9229a1a439e7fa57fbe8363fb432255d212232c680cafb5a766c2b633d1294082b1945c792186449021e48eb5f58dfc0082c8e87f5b03fa2f9dcac5132a913322e1df9af392b36d630af450f42d3322761e4c55e74b4e613acfb7aea38f834153676fec85f162458132515e44d020a5e35ee7b3094b45df4ab485e4af11ed1773d4175b7da418cf171f0b8502ca23b76a856f7f7ed9bad4fab050dcefe2306a0aec0d73899ae11fb4962e156bb49997d2e39e991e4700593035f4d5a4babd818a33a72f1e272235b9d998cece12d493e0fd03dfe07cf54c1992b7ab0c816ed5dfc704289abbf5c336ab2fb29ee8a6ad70dca65ab6c5bbef3fc220f47ae1109cc19eba10b7a7edb50f6a08778c7384153b07da76d2222b064d413c4a7d2fd5b6e9d205c343302273050399e05a937988ea04f1ebadc7e415b1d0bf325af6b94c92c9ef87e9aa8111851797fa58e6cf2e1929337e1748faf2e110929a30fb6a83160a9594a7847a2270c7ed46d132e3d2f15b5c3449aeb31d2acb019334073d2b53ed3ac11199400ffe276fce83b8c86621f9e269e4254972c63cadb2f2a05500e327d8027e6be9b0103a52d8541705c4b32289cc3fc79c644fdc928d22c17e8c0cea756765d3dead1328e3981571e5546d637c2f65dac659dcd8ee1b835863eca3a0501c7da90a45b497efe3082ca3d7a666fc9d816222641571f008d8375a70755fee563b3f437a0a50cbb992285d4da49990b04c1edfbb95d8d0862530dffa73fbc983ed7873b879b84cbf903a1af3c73278b203de5d380cce21ba399fd5e0ff48e1dc29cdb74dbbc0d3ef52823a86a45975f46762e65d8ad7646f8d57d936d47f35a735030a4d4f7129d2ca954f39e26c7f3b18b322e987926f6fab7886923acce5986627267c7e0cc3ea4f41c3526b9a69740f1544cce519f3d4dd1ca92236a6eb5967dbbd0b5640104a82f1926e1eb07cf615137bca11755d5735adf16ec9d31ffbe59d3db50de83b3b543f6f8a92ace5100c33b87f88de2058bbcca2a150a2d98e364ecd16a57c833b0e333cfef0a9cac010c069e724898963172640b4e2ee095e487f2d21eeceafbb64fbefdbc43b8242d48bb6cae046d7876bb69cbc645a65b5d63988dc101c6a7b62b8270cc1407a65ad216f1a63482e0aa7d3b96f54aa31ec80d71142c1d93a9881a71a523173125bef271a25e924f66150ea841bb3a46f0924d49d2cd48f08baf365c03a96bd5a0817f7b3d7b8fdfb414ee987008a89db48b230773799bf4ceab56b0ab7153ad2395ecc66673b8f7bf3f5f175449e506f150e70765ccddbf1200e54125960095033054f0f9691612821812cbcc4212dfba9ce430b2a4035496e11120146a081f46627fe7c7ea9ec69949657cb6e3665a6d9fb5f2cbaeae9650132438781fb7517c22f202e6fb4b51a898be2f73c04feaf358be21ba3d1c2f71a5f955207dee3e1ddb0417981ac03a97506c3e6ee1be669fa39b5fc67f1b75ccc8b7fee1390887b107e562a948c782a7d9216f4cd9ceb2433fa080a950e14610cc45691abac4ad8a09b3ec529763a7a6e908176ff0071a7a442995872177f995d94fb02641bb8eda6b5c0f5f4ad7c4951addfd74c323e3622aa1b9201a214106d280caf0db10d51f88f836f719d28dc54852c388e71638e01824b3d023f46bf6ccfb7ebb15e29d187a53d800336f341b14705e80da2306b5d14ce47e4a93db483f6cc167a710d95f3947db8a0314a0655f63287ca0ab0a3c758dfc18ad0700898019f003375b8af4725c287ccc774a27d57d659b48f6968c8530e2a16879c14437e7154d8a7d6affe30dbdff77dbe56eb9962f6c4bab37a06e927aedcd95de0668b4ed026eaadd15fc7c95a20246ec40bd388c4f3ac2cf0b0f6c3c17fbb484b109f3d1d3989f85857c9cadabbe803332c0d30203a3b896a8a1311a8512a6412c05e300b5e1b77d2212a2c6afe4b4f85779bd3b43b5ad2b1a2c5894e8246235d7fe82bca03bc1f9036bd00375e2f7df3daa8880e97c5e0bff4bce52efc83f8da89c1b095cf6167b32e5958449eb6555e32c048b38daca07657c716df3b5a05a9aa7cc46626efda35177296bc7d9cf93ba41de44b8ae99fcd54c293874e9f7b0a49cb1e67c6e81d058c6b3e6f160062e6978306607686ae9e65d3a90e9f37c1b7d6f9752aa84d035773259d19323da7749b8bb04db596e611ad6453f66dc7090c37b66b54f322582aa788029cc2fabed1c850b1a708c3759e4f5e34e1937cbf7ddc31d3a7a3a1a7eaec37d125ba44bb8e4a3814332f6fdeeb7cd27c1f5781f6ce9d50e299c12e2f14beb165d808fb69a9611cb58b88575af9a5588f9417822996adb414e6de2e8746aa23f8dc2862b9d4d1cf389ffeb418ec33afec7d35e8a661206b779685fe776f0791170e5b2731fc754a72cecc86ed3e1a6ccba3f08ff20c36862a4edf24859c5f6cc646f625810415f294ffba434826a3a3c6457acf0a378671ab45609075a389dc812d4265aacea4da35d12a1239d0f865dda1500be4d726285513fba01736b88168ae929f0d0a44185529f1b8069c8001a6df9fcc07da1a2470ca3e787b789ceb1d6e031b8aaf75616000ffb947375af4a4a9272189d459cbab90f02d8e42e7589eff95ce49e81d536a930ffc587c8227a8e3a44f220eca77d8bae670f596ab88659590f0157a18c08e25cddc427e542701281c918f7ccbffa34a0c7d865e246c89d815b2971528d3230541d33bc9ddbb5785eb18398275d7354d30569822abbb35979fcbccc459e8800f0751c0e24672915b0ce31093ce60264bc9ccf749ce7d534040beabeb1a6588f3802b2670855ad81d0a5b289b3352cf689819b72c819be5e6838ee438cf29410fca8ef46080fc079586452c880d321884f7d3ba9c1e5ce3d4be80df08ba5bf65827829ce9524cb4843ea793f638881643f64492536e8cffbf9f7e3b137b370329f5b88f885708189e8721f086c41a24a52050ef91452bc9c0576b96f1c3ba3eb139d357638b51b808ca1bea9e4f0c11cb4357cc787b60b3125ebc7183145449937d44ddeb1a911b2e183d7e1df2d68281ffb0a7a000f74a9fa384698b66111b9fca330a5a54523c1277fbc205da7f7a662ecb9482e16008a1efa8f53a85ffde28255b2705794b20a5ad7ecfb1c59fcda588bbd9aa93f7f8f99d2abb0b551561311a7bf758871e911c9cfb7363e40feb81cc0385711189d995e63450a67db7bcf40d2e838073cc12cdf6dbd40b9f97ffe69871259d7a04e3f90952686dfe61d2225c1a6fb30404e81df05e32921f12af39bf5889a86a4c4fd31ecde432a7207a0d032aa503e55044390edd2747bf91c689271e8954284dcc1fb63955d521c662126f68f264b831c8c88eb06c4bcf4c106fa5b3d1d2da3c3c7831946eb9229ac5069e09d6619715fbedbed0225a4a3f0c0fadf5619a10b063f9a5c13547c985d56ca108a127179bded976f7719fa4ebadcd08e06e27121f0f3643c92966ac42391a71e60e1f57a69a99ca1202c95efebe0dbfbbbdbe26961030aa1ddd5b6fd36d9c3b3a776c331171d167f0eddf7acfc5ba2d49c7a9c27f38912b21810fb59ed72dc36b6004f979941736903a4579ea4e1ff30db03c4d65c8e86c55abc2e6b40f16761f66f04f15c175d9aa0748da26517a4c2aba37c58cfdd4321df843ba955691c385d5148bea61b90c149d33177c1e8f90ace27d295c12fb0607deea0b4fd74df282570a23b2d8c101ebba37323352be041f7f9f64070f050266e4982bc80e5cb4a51549d1fc7de34071c2959c8def330a9596a2368c98d0a1691eb4f614b7219f2ff615064ac157f63b6157ec0ab22769b4505aac2139d047d25d49c39ce0fc6bb88371b4e9d3a732fa3e6b67430c52c146990fbe25d0151af2df96f10c08e89ed268c6d63d64849ccf74126665e1ece1b87679a3367f998ca16b5f687972addc6f724aecbac63e6e789a56003c6d6de90a5c0d3f75333c3e09fce97c1b2bb68ddd3236eb52d91913a29c74a04d5130ccfb122d43c7dc5281f6f83255f66435f0370d5d5c94024cf7f16f49285fa2b9e052c4580b53e93931a46d5a26f23e12bd19055dd29c78a9331b965478d5400b89a785ada5464ac6d485fd8a184def044d3ad9fb3db65a385634c2f72eeb237fbe92ec1ef73ab68676954bef6aaec8fdb95bbe22f443e1b88205eacfb6225aaed7417a08b588c207e353d0534d64b0aa7c8d181740b60ff0fe0f05c1ec0a2223673af7b2295132c9a9c59c4aa251dd7000ccc30ff3412b23f448ac0c2e998f7617505ca2e925e154a084d881b8a1421dd1e5454109bc96e3aaf523c1ba33cfa2dcfb10f40afbd492b2ee352477cb382ed4a49e05577868e639a9aebc3ab0a954cff34f896ac6f914c7240736d969c87d40d60dbfdc4da9b36dccee47317a58681739d6e943fc29469f54c6e04fc7f63f37e613947f051f3266faaea6f8bf41aecd5e5e4d1744015c16d6b0345320aca343999ecb4b1e42570f96d4362413af782499a2411d9cf936763c4e8dff2e0294052a69da0f2cd3330c999c27aee524e916679b5103f0fecd9367f0b632f25b7f6821941304b60ee22bc2ce4081e4979ddb57ef0a7fbb43ed2641b3d46b4d9989015204fdbd2acfc3016ff7e959e44cb0159165294ebada77d8057af1eb159f65eea32f9a6d98ad559c1fe7d2aa0c796453b0cad9d1a8cf5ad5514faea0c6eadf003794e6ec520fc97b6c35b9a2b4aef09e3a900f8166a42e3be6b0df73e0a209f49e460ba68805667d814d7c28ee3c654edc9f4305e44ef8a509492f656bdca2b359f3e005a137d91fe7872ca3bc6875b08906723936485ced5b1704d0ad43c26210d46ba8fd11d901cba9b649aa8c14576fc91b0ce03ce832d61e0e7e5cd65f0e9d9362d1302df2648623d2f4d1ef85d672d5e9ec8121bffd2f4913d6679401ce588c0dcb0137db5bab84b87ca00007f9717678d96016beb44c25453f3d62bf0850426afbe47e1988221ff41143e19f4b80bdac77fa33c3782caf0dfda9cdc56c39ab779f1574adfaa48d3e2017e916feaa92cb3fd672e232fe1b1712864cc3078051a43bcfe195f7a44701648ca337d6efe86d7e0810dfc45a03900a7bec4a3f89b1128a6aa230772d13f369584e37c8b8f2481dffb38185f9f6953b610b07cabf57e6fdb68b76fa14a708ef2c2e50397d67c1f06635664c3787fa1dc41a7b86d4dc5a594813f575d63469227cb47a648e8e2ef220c40d9959be2e3e3435251e5f6d73ed67f884f1f984985b1b956f95ab04ec53caaf0d61b9d95c7de1245687903803e422ca5a54c0e9151e8b0596a9954b282eda9263c76bd015f7ec67e8f64d32f9c1e2c972e4c8f18ef9907717b0c08029e852042c95210358f2e13bd4b46d6b6f7482a8a813a328b9a587b1e825389299dc55bea8144c04da0925d9523b26603a4e4aaa61daef2e9cd4eb00e7f902657dabb21ec00e7d1bd3db08806ab60ef2b8da7ce6a051bbf850ca089b89909a76d8a79509d20ef856c5b470b314a013f5c38c33e177af8e658c8ade84dc19ee8f0eb11b52059554e53cb81c67783af4db521e12ac4f8fda278fd81c8666c8d94069c119630818053ce73e3966d1d96ef908d425c40d75b4d9cddbcf848671c30a6f57ac87369297f4ed317ec4ed2d3d5669c1763c1ae9966943e41f87c7030f0b9ae2ddfb76c4894771e51569ab14cc8dce20ea8ea461fb8dbc0e41d94f61559ce9497f417c3d8bd2674b9e6e693ec94352ef73e1c5a29a97be620a4623c1460aec2501ba1c15356c302c23fe2dd955ba624054afe28ebeb61a84dc0b068e45401b8bfe80249b65895e9b9bed392ba14201f45e2303b97127f7e65baee62be688760bc5cf6941503ff553e6c6cb19258bc8eb745a765b49529bb9b3c7a8ccd7cec3e09f851baff30967b67be35b93dd364bf13fef604155c2d26455dee04db65ba2d6f696b22fbc805a0249b9f8764503bd3cf9442931c0a0223d720f2b468586c6ed6c1d2003f0573c1c6f0ea225699f869d38cbc938b562200c78a167e4882125224305f6859eef612560c350f95e0e8c0c49b2981d3fcf1863db6e70a758bd27de3838c5ef4105ac600f07d1742a4193f9f74ba81d86bb1b29e66f45625467dd7257065166dfe0ca3506cda883cecad583c564a0e4a43aecad976e406bd4a03ce06ba2537b06779daf4d35107dd49bd4e07c79ba1a567fa9c1f6062604b046efc8e2c53f57f1a2f570ebc358bf310f9266ad43beaf9b9722d2a10e5e660a9b7c1b5b721074a0eaf38f40513b8d5c1218271cfba6385b96042133282ac50a9be61a65f7abc7eae34bc5601ceb66da63861ff5f3fd4dc82688e4284fee2352bf8e5221040c1abc8f49c991f2fcdf9d07322ee2773f4bc5eb4900d54db530cf2ceb7ecd81d47174575eed2364a70a759c9dc68c9261220d80fa7d439247a0798ef6bc2687b4e23fe62f81188d76b3c1aac36dfca15d0e0c5e7a162b24bd5ffc8e7744dea7211ca260db786e5f94d4410e8b2a435b8c8979fb4fb7e09aa224b607910b4828d8af7e52fb0a5a3e858efb1c6392319317311b1817668d2131b375eaf296902f0e107bf8cd8b5f8b25127c16a6760ad27f69d8103c3cbcfd45bde274446ac98091bec409ae6e8819111a802e5f46fe77f579e8c6c4d26ba0215be5a08fe8c99d981bc8f38aee9b0e68956672d65405c15f4edb8a5b3f6753a76553978c1b6ffed8c3c1c892763fd85c45c33623e6e3b0ddee185fe1104ec820b6ac3ed55d9acdc398cb2715cd443ababd344bb60fe22f0a7f3765474fcbcee2bbe515c6c33dc5b0fcf8fc58b5ba85dee972ea62ec18b86c3f1aaddfbbbd475c6cce365a88b92c141fb367a9d0e67756a8f51431ba76d3b10c64a4c5cafcaf2424419b1793abf3ae20bcf98eb9769fa108e18e5a2f9f7e513080611c6168e2bab5a3636c81407d7c60087ccfe009bbaed91c6c9f2ca9ee8781b6b0bbae62c4e02c7e072ec8a01f76ce8b94e444c0e57736fccd44fd131ac25807a3a7761380194310724d72d6f54f972ec26ae46110cc61ba6609674a1b095d525b4667e83bc1d92d416c5d6d85b111bc28486252be5b4348798daf1b720e51961f2a5ff40fa312226436161ec609be79f250170cba41c9e0e68198ff415f6dbb1d2c85e9db3ebebb0b4725520354410fe80362e40cd50e085bdd1f44d9775fbbdaa0c27280777256d2d6eae3be0a5801bad47e1f396d13d36288694331e1b471b5b01c86e32b8be0905d104a5bdc0e8cee1f4371fab18db873ca912af5facb432973246d1cccf1621c07d08afc310ab8b883a5fb476e5fd8c408e00b030a33b3f4a02334a737c86df26665194c8750ec1025a75e872d39b0947a791329a8fd5be0b1ea8b76397e70394bfbd43c9604fa239a9d8e081a2515429fc24a561c24510bc959526109cd98696b8e435dd257c042ab5e71dccfcc7d87e160f02731a4a3592ddc9bfdbcc0db65ea52ff1b9efbda84466a6b4167a5e71d6df86da8433246d59f3bedb8d495f3bc1a04c625adcb89f5962cca368c1f0229abf89e293c9eb18de8f7eda1b6c328f2e5eb655901deabf9c3729cf0dee822e74b824ed6ed42434f26516ac9f0277726fed0d4777990f6636aa9f254e2376d5becb1498924a99b14261b78c0eeffd7ad7b015bedc3a01df126ad4e02895f8d09608e8d4033855e53034a22cb58eff2e8412305f52c9824c37ddb7da46f8812483ff6b4af04c68e20c9b2aad349a770cc8757b95b3f6d7447577a9745a93b84d20e9b1e0871b06b34e783b9a028a65ef1e7c0c5f5f9c9c79e47748e6d48fcba41b26607f5ea8ec426d3959a61565934fc74d46ef0035bc79759a2e1a0f87c3d0c89e916f49a2c75b63ef8b06d36ae44b9631553880dc88cf2672bf2f38750da2ffdcf6bcbdb9214ebd14a37ad560d9db28232cf0b152d4a21ff9c8cff807a07fd9acadf681d4027e156159438868d889ed15788bced5b0455a18790f66aaf16f24dca552ea91a030d405e51e98e8ff24a7b29f41ee877949678fa87e7697f58dc165f2eff7f202d5d0ee1f029ce6aa28666f9cbfe4da426b2257312c191bd16093cb5ab3607a60cc2971c4c14c3b5442b225096c83ffd6cfe2972ca743ba7766d85e74fb338f6ad67a8e9f58670c7ab5e9ae336b6c9c02c32c6e8479bd7b6250e1f2a337c97eca5de198a25cec06c48e301e85866f82b9f9809d9c78a534a16e6c8ccba770d5bba97f893be0921c6c23e5bddaf911c639c9ab25367c467a237cabc1adb94100e4aed9af74c4a7c28d71d0e4ebd572f42d203ceeade6370281a94a8301c43b90bd65049ca45ac92aaac7c6e8a62ed92cc0db361d12beff150b4e9293930ea8f0a8de461606440c1d5de71b015fdb28bc5480b40fb2f34c672ce81f1c71c6f5c25b73d652bab87c2b45c26150a0b7d2d9c746d6b374795a3ca3110958c31110d705a8a8a739699c5c6e22c4e1927922b85e5ecdc3164036b087ed2fcede9cd7afc5b86a2d7154ebccfff02d747ccf29810dc05713168e1517ff19b715473619fd505ec3d5930b4a6acf4cd794e4a1d9e7e84dfc30fbece3697497fda12aa923c5a2d1de5b5dbc94761a36fd01155f73f44b32997fd445e7256b253243f1f1e9523c126f89f7caf415f33ca459b53955adfb2f5af7a62d47cea3a637f5ef72dd0814be90b446895423d0c6195e9cc8793e3ab68179c8f23761ed453addcea21b3fe7b4f4bf985af0fb4da424f2019a8e6ae6982364f4015171cbef61bcce7735a314cc0a1652c54c4c271583b6a3ed9c68e45f1b8935cd0d699ba687647d2692172353fd0a06b46833fad1ebc6ed394cb499a8779cdc925686829a663f27a7e5137edff003a082379edbb0dfd296ccb9a59d8ea70a8d95f9f2fa2cc58c3a71d7e739f64ca25cc8548b2ae2644d8da88bf04b8eab89a21a3844802b87b4dc0129897502d9299e849121e2d5b3399435da1ef43853be845ddba4ef98b3abe8837e904aecc94a0f58580af89d66c5acf2b223c9f33146a2558cc0e7d20e4b731bbd1ff3b4f968691ad91699312dfd39a7186dfa85b586666e7553f3129782ea2369365675edf031e4d1c64bb5080bf4ec6ac3485025ee0540a07abf2d6c34ee407ff48549868db6bb96a723519ace6e2b29995c3d8082aa0656fdeaaf4e9d4ff982b88a7e6f3c3db153cdc3523a88694763de019f0664e733399a1ef34eb8e1eecd2fdf4e4c24368e1ae985582c7d48fcaa433bb1cf1f387908efdae23f3eb50aed4d98df8d206fc460301aff750f9f23b9bb0c2742c5b931f4389405eeed0aa6e962eef38a0f1b6a62a6d2e988072bc9a0a7a1fcef65eb6fe4c11a5dd3e32b63e67d4b479050bd63cad4a5054a6e97dd0617b716f0322798482b6e16e7a159c372ccb98a6529e1aaa340b68d9aab2f139d86e78ba16fc57e273de993731d66eeb109cf4a137fc2e53e7aa3fbcfabf1f0584c6427d0be8fcb8c9d396f113831b76657ea23e70888661abe54697f235dc8a1ff1351834b2cf7582bda410ef61d8f9d2456acc4232e86b49dcd9d4e148cb1016804125ced947c9e2bf8a9c197c25c3bcf4f69a597dc7bb6db0ad3900b706132412b6fe04aa5832b5c4d6ccedf62e618052467bb2dacbee8468ae00fa81e9f6c24bedf95d19e212867d362a970f0f96101f61c0c090715c30e4730dbe6671de8423c0ff3a01a541ea933d83650a102a250a1fc1056b0002490d98841d28ad65ffbda5a8015d5f3d6729ee655cbe2afa3bb4c3b73d921638018537cafbba787f8f5ddbe2f36e2a39f884a8dbdac4c64e310e5f0bd3303198119f65fc2fc4a7abee2808c55d80a899bf272eb956cfe18d5289bd426821f839ca1dc51acf9b223f61e26193a9e3510b06a8f5efc9f752154e9ec5c4bf4207336fb8db1d0a5a2139019fb98b40e5279b6e923dd56db7a1c2078d672252dae778f7a82577eaf0a001885b0de4b17ecb2a7fc47c82ea4a4f1a39e052e0d5363ba354b7fe5f1bccd1953b8d9808b0a1fbda60b418a4ab17a4b7a9e8437c81ceb06a35ecc66c831ba9945e8b0fdf63d9aad38c10b8bccfe9c88c60f7e91261d08e049957efb455946d03722c3e0870801bdd8804426695ff844055f7e11774f0096bf94003d97b1d41121db8cd29c81ddf9c01c014a472512e2d3caabf4f6fcd61cff800ad8cff84874109e47e73617face19b246e159488fbf776e252742039cb5202247ee635857fffeb41f91c950580ca2c08d817fc4795bf13ac9f09f506d0712dfa4c6a321c6961f319e897f0ebf1c9fbcf6dde2fce59ed3935d14b16147d09bc38b3da9e7038dc0f85252ba6a103dab764dc388e44cdaf40b5e963c5ad9f58537062466207dcb9b59fded60b91298f864c22df74b650012c2748a2113e367ae1505548789c6dcee478106ab6b92d11ec3cf82a7f960efbd1da5fef979c3e1a7b423f551a96a6ca91f3a27c50d969cc138aad1dd170a93d09572caed2c79e645e89160439fb8358ea703d782836e7a154daaade3e2a68c07dc13c5529bdf217e3d09e997d79835b7c28ee9560d9148f5a601a637a7f3330030fdb08f0b73db6cb969fdca81cce5bad6e148eca4017407365d5e78f0908f592720e675a69745d274785bded1c65cb8aa31b4e07257a9ce1a4542c11554b77c251c11caf58e4f5ba2600966db5768c2c033690a2ea4eb923b0ff581ffdcb0091d1a8b1dff386c2b68632d081391e4e340cb70a675d0549711991666e59656402820ddab507464a1f1d4e74fce3cb80fdd71ab49b6ddae5c77a8be180f876392df27556ecd005feb8e2a530d6e22ed29a2aade3e282cc9b1bb29edbfebfebf45658d57867855bc3dabdd8eea59b897ed3d5a723ee87e5e79b001593edc3883a1eb1918495b6b9210b5ad3a03254cce2257d408c3e03920ad7dd7c46e4a8ca100aa0495568eac149c8d36067c39bd71a625140ff190503b0b45c734846e87a409778ff7265c14f1483324845dac6eaa2775836c3f84a7d3cc53778dd2fe223409be4103d17662629086bec81aefbc359064105e4dfce06d809bdb71fcb53ff5887508fb0d0a057ed1aa0ca8be1526ad3652453ffd7405ce924e93cd6b9ff925e5a8053c0dac817344764cc9773a2fbf2da18591e7c4e9efce17024c4bee74d5a0521d0412d6ac0e594f003d18b552977c9fc65f3b8f042969610656544020e9ed00f00ae8b88098e1075bab4e75cac4f58a1a7efb7d483b13f4b81a6201890cbff60197eb6534129ad9446dca10f77ad9151d9fcb2e51cdd5180b3ba0796b5a11f175233e52e766ce2ec86bc82ad11d278205a88b3a6e6e5dedc9e6fb913c865ebce299edb83c206474157b2486b893acf05860d0ef0bd5016945f2fc3d4e5e522fe0f8a81caf13fa1d66d8600e0aac3a0fe664f6971db37eed57cba1cec371827e6fa5370f2f91af40fb1dd04712592efa91f7cbe28f46bec9dd66f1bc20bac5e3aabeec88bfff9521f3007a5e76b5a986717e965e6ea2cb116a7ff5791df1b194bcbe67944e4ef129de91feae29fed04a052b021dadc5b56c3b93290f99e65ef968e889370eaba0fe295c019fe7c6db72b02e636a3a3fb127a49499da6f02b5300e3fc61f787c22de6e3f99b2c2b100396719f3b0e73f4e60f4a971d89fedd0e841a9ae734460eeba06a02421d3f4feb04f452a26ec2c20cdf2acba73d54377edf1dd253a6afc4f8b1d74dbff3987ab75d286d07ccb4a57244c5637ecf2f6d134f85d3c1c43e2a1d5ac090eb819d9d8fd8d832c8aa384f5826b25bb45f1bb128ed48453d015e9b5fbf9236773bec714ed3626878311b565082494574c21b2618fc5d71880ba4adc57f771f211b1e108754dcdb4ee866f7fa52cb5c437de2851853f4b986a5007b566360e1a952f0ded36d1ac50f0e5bb150b4eeb1947f24f19852ca59d9977f102dc365d45207c48332f2ff37087dd81b7284954e1508e2d3aa6cd109945c5041869134b71811593913f0dceecef4c411a70941a0f255203b2e24fcc4479eba2df7d64dddcd3730377a1f6d7a705c111bd23d011ef42326eea53e32334f65aed59b6af508122cd9fe16a8f423b0546ad6f84f1681b38fa072031de22f1a44832a987fc1a55114687d4c88d6d105681992367312d148e652274cd3c58b7369ea5e7db97a6e14f8e07f0d3116d5c9bad9193d519eeee52b380f7095693c64f31cadc7fa2cd64723e26599b61292e01c1e2b0266efa091c7ac7d34c352b8638ba7847ff65fb2a09b8568ec4fd1f320e4bdab33b1856a6088076e9a1b9ef512b11b754211712c15e26ff7d4bad7fea352928e170f92dcd447cb45e2a8a92379d4f36de8667bc1c931c17fe88602b13939c54de966cf2ba1e62bac57a99a5a47d6653a6edccf9bc55e982a1a865d99d63a190644a5c47346b6fec30a97e09c42d323a5cb636d4f39dbe038ec4d3f56c5812fa03f0c7ca5d89e948419061486e74dd6cb90fd5fd1cf1d145f9c5c4ba2ee323a72284457b92dc624e8640a40a6b07e6d458149a2c883cbc5d60a1ed0a51fcf984e266ffa2db868757c3e3552127a34a298f593468a33a2fa67a2fe63cdc413836e8938ee7b56462b372b5ec2dfd490f8c2d9d4c6ce9a1f07dd34a593de8ed427c015cd5f0757e2c28165c77f02247c3da6ac6628609f229542d104616e1d18fa0895ca8a01088f0cbf6eeadef587fc0b5e01a138d17323b18618be5d638b249615fba1c5d271c781783f91554b7882864410df470ecb60b93341d32c1072dc24562161518cb767f44fd872a055599f0a12b2afcc9d125e9c1a34dd9913ee00fc983fb88d449ce710d89b4004cb2471fc43b563662ea1a4ac1ed2177b73ac23fa215bd34b5a186dc6a9e33daa7464ad0875d7e5c4e4107f3b961bd043a942a6de40f6013eef84bb56c10dfd2814e04391a1a3bac0edbadc074899596bd2ade7d28e9faf225231a9f88c372de37e16531b9b385c85e899fac04b0ad2fbc7c80244b87fffdc68755b3b089c977a08f560390a89950e7b8feaf130468debff0bae47de988d956a485d8d11f000cbacb54e32183ad40585ab26bc39ae55e6bf101b5aec43612da83667ee849587b1eccf62d9d59c624072c24665924ceb2fc8eb3e8f40f93204e2e3edef5e288f57737d041e37ba4c98d78133e5dcef63b1661a78e6aec27963f95fd0635ecd8ebbe42ef3f5eee826e1fff77cb726f7c6db18aa02c75743cdb0df1f343665e4fd16ec15186b0519598876daafb526b0ded3ce67c431d0e70dc22759c352af3fa28a7136c710c5353b1cf23b478c89144a2ac6b2cbc564ba94160c830a7d92ff6b28bc448c7ff868d133664d4cf2f9efa32a2b6c186e2143cf5c26f6af988ce6ba674feea51554c55efd3bc738c25e6e675c6681d8e271120672c378f8d6b6d1df3201787fb0416d24da86c8721dd28cfacce9f26e96bcb8371c04ae3e7a8a61397c2ee27efad5dbc381b06eca6474ff54f287ff25041da558a798c65daa4590f3e4bdd30a4aeb9dd2b64dd90f22425dd11d2cc309ca733b47396af8fc798d66dc9524973cb172c739475a76548fff6eda3320b30543b8a67f456f8527a1a59ec5b7aad260b96622eb6e442257a495562885d3846249a9a6644714e022558d6be832baca5c0abca6c69e5f78026211390b37379586aa10407269f0c401fffbee6d60b556c497ca79ca7d10cc33e6ee254ade6a6818c94f6f3167089f9c38e2bd01b9e5c1e309cd36330c10c646cef8bba28b4fff0e2aa9b2750d81a7f3b54eef8e1aa28739fdfc9f8e6d144db913f8e88103b26450204e53a77ca2519e382381e69dcf9f2a317e12453bbc51af005174a363e3e612fa955c00a81565b5799a6f28ebda9977190764c834c4bbabd00f850190cfc7bd31de7ed447401a427055d45c3c8628a0f62cf665ef4a3859dcf46d78996fa807c771eb3e6042b721c2073f446f0b5bd692a76d50e3f72797652d386b004f4bc8dada1e356131b24fde17cf5f69228ef4df88a00e0c841ff8b1f21690213bcf07b814cf1068529d2b29e66e5d4a7697fa123e4407e2e28e0057c4bc13de1a4763a15d2a7dac81b2e27a1f5c228d965c724560c26d5f8c5c232fd93b826277c7ef4cd23dd61ff8a8b68ebf6d4ded4caeb77d26739d53f1510963c66efa89d060d8270eed59643b95e5ffe359581a8e5fbb71a2f199403f84ae2523512e5f46f8b6c08134be9f0bf67ed4067bdc15a25279696ff0da66753c39113a5553a3e25ea666be52ed976d10a022e2cd18a1cfafdebd652f694dd013a2187bc0dc1625c4db6f9226e110c4cc0880823292e89db545d870618b550ad2275a1080a33a9d1ed9bc5631c327904f6b83b64ef83f3f83590d9bad739018e3189042ceee05e5ce639d939969ee1dfa59c17b29ec2fc59391a9da50c538bf8ad3907b2de19e339df120503643e8f1f829e15ad81ad92d253a69b1c2a14c8382c90dca726293125a329e2bacba0cab7c6a971542023280ff151b5b8c30783f24fa6ca02c8c9a23edf049187f09cc13b7b5fa132beaa1a7ac2338d086abf4923256a415ffb04bcb9d24f3ce93e48a46e719dfbc7e9cf110d9586828bdfef95eb180031b815863698151fdc50314ea98374504a24d63a92fe4fd66d2547676c0f68bdb78003959bbef637da0aba875318734d9cc8692e5a7440b0146f56d49ff3da0da169c2c39a8bd9e80878758a01e57716acc4c21f24d225db263ebb2f995cdd20606b81b2cee32a14e3f49b7f5b82f22906892c1966c498d74073d9e1ac8c9c3413a7ae148162ca7d337bb6b9f239ecf475d073419fb9aba3e6d1be050aa37fac876466867c50200f838618b60983a826597c58008b3ebac808225d8f1f921f4ef457c235760b48534a97925808ba2563f7e764df3dd23afda7a93eec6431e7308db391e42cd0ecc3df42c6487c4067ebb8ada2346dbb95717fb6b7a151c409abe265a80482eb40c17309705abdcbd8690ab3e167e4d0351456b6874ac72f80a8b5a611b4547544ac3fbbda8616e84fb561dade7104576e4a2920ed64ba1ab77cc4b596906442e2dc74f5cd32ba75c7b4386bcc708bbdbe055856ca855e2d17d70ecf552fd416bf3aa87118dd1bbf66c91a49b9073b575ff98f7534a9e1a1d5fc976b950fc7befde9abdd76390730a09c722c98cfd25565271f9d89c1ef33f270e7c6d3d41be2ac948b2e9d9b7227eae5f0b018cf0c95ef6cca0cae777dee2c1d164914f409827d1a4313d4952493de6b6ac2b65f6f3b572501de98567f6e5771dbeddf95ab0015fa121b2d65f936dcaab66ac646a24509f2b8fbe56fdf07b0e49c49937f493c12dd45472afeff95fc9446a0932145248b3cf3959d913d65e8fa252fe2b75e05c8df5086d410aa4ac140d0ee1294301400c8abc47cc47c7c794c46c373436c71d23581f8044b3221d4900f04aa8fcea74b9cfd67e44b35ed0c06f3dc91468bd2f0aca629883b51c665dde870aa4ed76a78bb2db3db8f2f4b2dc586954fa4ff7bc6375c6429d56773a2504f63505fc2f37a3adad415aa4e29ebdfdea1272851e2eef8950fa1a9a07d833c51c7df6f952cb76e44fd70cdca91584b5e8f61c711fba7b4a4152e7d25d7b3277a3625cb9e4097f09847f3cc4cb0bbf2939a3196c14b349c7d7e94445d573e0c93e96a48fe83d1812727b00b68fb610c3ef64677886a5c3000c9095b3e3dfdf4d7922ab85746f20705d3c7118d2f0b3baf141df3881378c92455f54c17eb66770430505f2265bb930fdb4fef7cada59239d257590984b7aa8ca2e9f31ec3778aee0a7a2a50e8eff50d6414e44f9660c5ddd678bf59330346918fa18364c875eed53e5f2372c6aed357b6e026ecacbcf6002c8517d5abc2dcb38f92f51c8695875691482a117e17284c6fac05fbc00a5fe09acc453385ae8200853d7b275e47fbb9044bac3e8c149fd88228aa082a18d3aa7d8d57073a4d031d66dc351dd4b612e34861bf56437af98f3137cf185391bcb89d9a0e8cd24dcb1929e1fc9d4b04346ef1faaefef90ac5dd32bab04b676c1c382da8cda9620caf9b4c1f93d60b7d0f480423bd2729b608f302febbd6d31789d7562bcd0e023d6f3092fa5a6413cf553568dcebaf784e63866393ec203657ef479c172f4e9f0aeca0f72828c82301f76f652dcd74eddc34b3eb07c0d929ca3a2f23e739a7c3168d9c4833d04d6f1a55bac5607c8211be91f9b915f17215ee168da93dac8823b460a1bc4d93f5a8deb004ae515d198063aee111b9abea7f349fc68a4a85a089ea8ae38dd7510a686541aca910eae71a81d31082a32a3069063761ef196f41e87fe4bd92bed9ae2c438f51acceea31a818ee08711aba908272e8e8e396b86c075c6c1f0b1ddff4a66394a529e517be0fb065fb6480bcb284a33451620be8df50b6c841da556366d2a217a7703d233a0b5b765528040093c368407e451ea5383fc8c1508340860b4c28accac2d631de0bf839b1d700e65fe6ca891e0c0fade459d28e8686a19414a81b514933d918cc1447e770d940c3882d8626507fee1a4214755ba5e2b5f3d30301c405dfa9c995ac7178b73da3c906942b7a5b6be7c07df801a2de4eb99f1db82dc8cf4baf72b97a99a967e3b090cef58b5b79d01895180f4fec809b2e055d6805b48e9e4346ac1ed27ba483c42d3ef701bb48fd94e9d215a82ecc2131969156dc68f0f79e273520434b66486e1f2f332b1172f072a1bc0f583d8aa3448f6f9927add5e09c0618bed0ced9acce88c405f53ef0ff0e0d87ef51fe0ed5b160ed89da4fa8e7c6c338919bb14f931e3ba80d94680afe9169036522cbd05eaf75147c4165336bcc6bf02ce311f74e04fd5eb1f1d195722e555d2714c9fcc8d45e037745c02f76283bf73de952f2480f9e33ad390a0a7252240419da0381683cccd698bcc218456874758dcbfc36c946c3d4a919a87cd993076e63a77957073a58b45b66aaa618b5f85f73f62fcaeeb3b9a95ca60b451718b80c31639da62dcc07b5f5238928ba5da64e1f9935e325e1972247c103c9f39499a395fa06a461104dee9c5e622702a123301790f2caef3df76885b0998ce72dcc0f5b68bf0ba58360e0fe1d4363f050143ab3080f54145dfe6ce0fd99c0d00ef870c1605ada72157ebe8db80fcaca7bb5962419668b57df82f890574dcbad4bfde52a3e2567c0556f9aed8672a792e03cde393f4918b5244e2a41f92d9b4e4b1b92b0edead28d8a2d5a472839e536e2891d620669967386f52ff5d4d6bffc7a1a8964687dcd1a1c26db7b6f9a8a4a969a4c53295a948ecf0e6950863c6219161c4e24d5c7a40d70267463bcf56e23f4e8c3a496cca6f1327479a0dd8448913e19e66f5cda16e9ecc5f2ee4ecc8f0f998cbe47c0e9a726876f4e6b4c4211e288a3241a2d3cf4d39e15a2f440511d7999d41cfc103fd52ddb084882dbef2926487231bd213eb5c08e43822aae2094175199a9baaa5e4d65c4555583bbfb817c08fffa3c5d98d1a8ca1bcb338d7cb4ccd0f69bbcc6e91c27f14fca90d60602b0b331e880ebf4053448ba1980039076a8767ec560ea7fa667a70ad302383ea32783e8b2402906e94927149512491011826b3eaa20f4f99cff982c62416dbece815d0cd2dd888383bc227df1d70568fd75ec8993b56362b3a2ebc4ede76e74d9ddc101c0a23313cc9f8c754df66bee265a7a3ccee5462786f65d67e3a48b62d1dd9c5c0c153fc04ca0520de342a0f2a6900160fe84a16f45ddb8f65d99a5f286ff18e67a80f2d2a39bda5ef60824e491fae6a617c804ed6a97dabb935bfb2ac5787b1b375ba687b9c254675f159f85e5c1b4a3eb1f4371e8e756d858ea37e75c90f0077a355c118532f1193b99190fc3c19210312d75eb48cddae7779f9c167f47c97b8f9bb1aeb13cbd1eb87b43894f59bd06110cee1bf35c29abd21acdd017ec542a6b94679aa0d6319f67bc7d4b00168b63d89ef66bee67756d4689ad3ae380b5e3140e15c7383a91720d0e7f7624ceec82cb2a696a3e69ea12f681696599da0ec83e47519dc4c0856b3409c8d505c1e324ff419d8f06ed41f3e79c5294b348feafbdfca32fdd8e778129096a330c1c1c6762dd15a30c83a0f444a17b80b1481936e1c75ab219daeb6a1d99a310b074e1337b8e7476c92459bd3809a7da7281a73525bebf8616bcc7d99b025abeea075a47185d670fd2a3ca5d735c7f2e67ae94dddfa3451aa6e56118ebc28f7e62d392aa7b09f74412f356155028ee05a8150b88ed12a42fb6cc64c0abb80373958ec28439384098ae63c67fff134e6d0509b3fc793e05248ffc8fecaae29487b536f120d2dac8013da6a2831eb92cc1118bb05081248d6671af1b75f0736ef4b1e4002cfcdd742803703a64965497528188af9f3fddf0f855dca4ec4ac6a9c339c3b9e982aa752186315b6d657a672b7cc576317bf6135650e82dabf82fcbcab68885aa2c62f42719703cbf99bb79c6a6d553306c4d6ee5be7f7d95d84f09aa5d5503dde535bd3b61505c36764207e881bc0baf0d7cd98bec49769d6a19806bcdfc3ed4e7a6e98e4ce47bd6bb05ab2f374d8bd7c3e59d368ef17d9b1c9f4f0dcf50ce57ee32803d9169d7fc9db85b3c42c0d84b6219af23737af5c4826d75abae08f0af99cdba40f9665ac917efaaddba2d0e7615764b9800ca3d6ea575c9beb5609a2e290d185de13863a6ad69d5d9964061ada2094b3bfc2822c203f9bbf8184f2b8a33eb0e1ae13c5ef13ebaff7b7274a765c0de9e00c48bda5acf39976525f6d29479eec39f2a60dec9cb40bc016fd1bbaebbf54bee818e55b59d1408ab069e92cbf38dad9d6e746511874fc2f4c38eaf5005714c34cfd2ae3751ad20b1ebd3be7046d2efd02b0baca9a40aee4427201616b95f6754b723a254d51eed791a4b36c9e261c04f96c85a687a55e352acc6717330ab9765c902407e822171148ef3833d8332a406c36628d6f993e11ed276264682a69b165535e3737e4c661a887db531702eaea0bfbdbb76af7e079d7200297f1721a48cb1ae55bcbfb16b02b34791ada51df3d7d9efdad713991d3425c535374e5c72e0aecd5f1a83fd896e5d03615aeadad6e0b1d58da9331568e7fb3a59cde4197dafb27d02e9bb5166d606042206496ff74befd2886758aba778d82e7aad029910af585b4519dc3a0f6d29aa05a6962503ca3f82e7edce5b65946e0870a6cbcf5a91e8f004dda501f021a8f8019b716ae43ab8a490bf4e04415381d9b72d4e7fa170365484b9a9cdd6a51791fff020c995b9bceb5b80d10ce966b6f854d0c0e5dc31dbc39b2ace8812de835e6e3c321f9079f8ef553f72205cc8a02d48366be4a3af5ed94d6b22ae35a5727cdfe889019299fbeef7d315b5833c5b83518e67c28b17942c256fcf6bdd276cfa8f149fd948eb421ed26b2e8d8015b063609c8676c13262bebf7acf776b71b1dec7b283e7415a684f97e8fa007757dab0a84c92a7cb5cee554f9f181fee7d6163dd2f999fda9a569a873d4899245b3a6fea8741ee86cc5e5169bad43b45ccfce753d374bf33e71c05f2f735540196435e242549fbff739b2dff43b73d5254da192d0cdaade3158b1e4560d3849ae4675e5a244bea2cba76ca802a2e5cbcf043e835424dac8821c4771d19bb662dd33b6db2282bd741eb1c668ecfd7ce49282ef697391ad628a80a2a810cbbf4bbcbf8a4b7f74e26a5d03f4aa33fb2927d1b25c27d1135f154919c3db79b82535bfbf0650179ca4855fcc249517736418b499c5ae45d4f80d50e65802032c77894e767291edc44193b89985670db3e975f05aeed7f81365e52d9275c3d116049b50e2172cc916c5fd42da23de8ff7e355fdd5645481b6d794bb44f5f4a21aba7e3d62d224e38feee06cd94f719c465c0437bb953d430e55da0124432c76e3a823c78b2d217b6de1c860cb8ab70b4cdc64389e83747af94c78953195011e67657f12360242699185a96d80f75175cec7f1d7bf7eea7fd32d9013d919e0fbde54c2245bbc33b523ac8356482db4da2c46e5cf53fe6917a3c372befdf5021c3defb60f43bd01da839ad2d71103b5bad675918bfb99b34ed4f42d2fb6f825ef6828a13e180c21b4c7631c8111eeccdbae62f0b3d45716fc7c7b03bba9435f60d9c78ed8bf5f0b2b0442158142d7e5561921a7ba1da31ef4a23e3742aae9388187c1fd2905fc56208e3628239d71694537ef1163bfca2500f3f7cc40f456dce59552bc80d61ff2146ec378d31d2dcc2b21c9081c91f2542d71df970beb6e9ec49c122d976d5ce5b31c7ef1085a0e640fd71da80e6a554ee19d4c97d4213f987742402b7e920175497994ac7f2399697d50b87ae95d554b2035b46729e553ed9a233aca801caedb9ed9a8a33678c91fb33e6d9ef7c397dc5e3ed2ac5bdd073bede4c0e32d29995ea9e876c6e7dacc078654733690776661b00e15121bd3a648dac16c66acd075c345b713ce303eb1aa4d76b99747149acfc3ede6702c8134c578a93b4f7d3203ba191f9f4e5b8d46d3dd40381a3b5a7dfaac2c0fd9090e988a335ee5b0ff21147932c714017e50988a20a9d10b65c8301669065627b2382ac9eb5404a132015ee90d75564851f66312d0f4cadcbe81a888f0de556383324337940f90c2f27d304f37fb34ddf28c07f34479d6a28911ffb8ba286cbfa8c599fd7188b4481a394f7c564956bf50d00c76818db0f2ac5174e3b8677139f761eab25601fb1817ba15b97ee8177b6ba82273c2d0783d0a0b342e4f146b365b925494d41c4993f9652f7999fdf2d1c2fab17215fcacc84824fe83dd19220f9c3a19e9c6dd597a06dfe563fe342b139e786d298de79690b546431e9e99782295e7dde1a830ed03c04ba0078ae0591acd010c1c39d888a7a1ef149689c9317bf3867163744875e01b492aa133c1e852537c0058815b28759cb0bea76d39a7aab432f2970fa9949ad681b9680a5561ed2961653e959a1f20dce1c3909822bc7627a5829cd4b93107719ac18bd4dc44eb945e867d84810f8e3106906247ca8ae9f73632430a5d3accd326c83fadf64c18c0944e716fe939a612610b4525596997c664008ef2dcc7d600d2a46fe406661ea1be8a38cbd2adae6859f13daf2189d19a763f6fffe718b93ce8431514eb3a2b23cf3912b4acce9ecdcf69e78815bdaf2ddfb05737ac9fc36f84be8525dbfe6817c30aba0d57b98d5d2fc6025651c98bb206001a4584cbe17486213d855d5ef9ae5f1daf18091d4b79f01d22964d59f9b66c560db74266e7abd830010673e706dcdc76580af75faa7168d9db6b5b02f427778e2272ae31b2f44eeec452ea777380be695da27ec6d17fbce794a6581138f4bb92b525d48dabb0b7608c14c74f97a8d523bc7737d5f9abc915b36698f7537d0b040c9f85cc0eb571943c58f420cb20557bdfed56770fe456f294c85e1f01ec054afd8953259a6947c6d644b79528a560ffab11e770f7d07cc4be1ea4543d168d6e13eefa3b6e30998c4eb2cb408ccdb40a4364e1f174cf1492d95dae326c99c3fa8dafcccf83158ff7a6402e1d688494fe5231af9f5eb1e2636ae8ed4d40208dc60108d01689932363289e285213140ff7253fffb8cf1e54e3209630b183e096dfd7f5ed77c9050bfceb1938ce6a669e1f8d33df3acc0a36d86b6d33269c2fa333324f6786b004223849f1f6c6d381a9eb2e349eddc40d259b3ecdb469fb59c2f41828535fe869ff04c1dad6e77b02f2f3627a0131f4a02e32b5c310f83108f3158eb9a381ed74c21691f3a602211e2b316a41e84904f79e756ac6b0f54312449fb0847ca26d46aff8166e25bc38982ff0f320d7d9ac202ed1447774aea4412e4935ffe26d2072fb03fe34f57193896a211035bf5a58606042d1a13fd665be3ae50ccec073944b1f62bf67f8f98031b82c0572cadcb0a4f97066ee8f99d02539f8aaae3bfd5e9324756ee9d8d79d58fc1d7b4c4284a851cc975ddc862dff8b78c103edbcf7e862b557ddefb1a1905078f5fbc0a025cd84e4e15bfffbbf85072a8fab9527ed3526b67bf434fa8aac1834aa180d46de425e36364af78a70c3143977046942e18e744ef65650f555b939f888ee3bd924b39f19c1702c22647136d8cd3832048074180d20a37705800ec6f19ed1438a38d5eef54eae6cd9adad07b4532af66e2b52a893ffcf9c1194dbb886dec6ce267fc7531f8328e8cc06fd0cb9021058cb7e41c035495a58eed613f343bd57e2ff06e2abb8443eaeb7beb6b06cd6b13897c7915774c1f95da6c05dd3eb31c18c6f9b22a2dbe8c81f074d3bb2aa331937388499b1e6acb2bb82d1f50d4663ba6903e1459c75291ffd33bbe7cfdf4714e6d106938f19996051a105805e70b9dd003eee3cb00300868b99bf5d1cde8916a0b1d83f8c90fa4f3d3e682f6135848749d4ab25a38735445466f5d873756ac9dd7eb5584c07e3c8d489a964a7a9289a2b2de6d492910923c5fe6ad4afd93cc9d978e35d35992b9dd85cb0183a9d810c503cf4cfc52b1ac0fdbd4ea71fa2badfb68db9918c642dcd3801877ad576ba1aeb74ade7e36c528d1a39a7017d62a51afd9650114fed5febfb297d3867ee7beb05dde9d6c9c72f884ca04951627171ff880ecff1d5b8649890b9500ee0090e28dea321883d40d0f06bd9d73de4413b73b914d32eb1fc5595a0842994b12ea84ca06ea7ebd8d03bc59699dd96fd306b7ab70192f3aa37b7666c632871e671a8a1e22bdadd0d569f9ef92da9d57be3eec529ee64f34a3d79db5e4fc077dc763b1cea4f4ae83364077011cd8e1ed3c816a327b343b5a88c84e75bef79509a329f28235ffa0f2f3aa94dfcaadb7e221879d4bfcc84521ffea0b868b352a3b23df5f51d783b88ec5e2452471c14563a76f0ab74b637e4bb433e09267954815c9dc5d4e4e618bf78ffaa443e6116aaa08bc00fade96d00085debb942b1e3cfc57021899e0b47ca6c85e87a1230130674cdaae009fbdef43dc4ee2ab3679d759d473065f5817e1b1c6d5e125c83d3fe641723f6df1bb9c5eedaabcfa5efd275059c96d876a660d42de654907014c0b645950ab9e61a08c33796f8541efde1b639d58662fb0a9a10855149917f2ec370f68bcdec33f3c4bd1620a434653e39b28db3e38459fc25cea43fe5edca2240c2370a4bc908d6e8586c5ba8b1cdfe1a49e7c6fcdeeba45d84d3c25b793fad016bb025ac06bfd8fd7874f33c9c966ee7d7955fb789f95db765a37300b7b378c6464a847275adb9d96fa2a210739e16bef443a2f77004cc5ba060b0554df3235d89742d939216b7a763546e8370cbd4b1ee6a8be006e7fc66b91aa00578cbf4052ea6607b1cedd3b4b746d41bea77176089b7ced6ea1f17357ee344feb890135711c763d9994d0f01820dcad2842b631bfb64525292a0602eabf5f82355968ba15348ef4727ac30555472c42ff5d8d07bdca2de18165408be13f9f54b773738e96b51a173c15d33744e61f77fc1d07e9a0b27aaacee3e84fd8780166d94f911ca1b952caf9e2883d594880a1c7894e339e6de13502116ac997a4a7ac75b0bd4a9b6ceee7e28fd60ddf61131e868cff8747f32a8e0d30dd348c3d33055d58409f9defeb16c8fe079819b087e1e0aa53b5792ea2eeb40565740a94a09ec252d59fe90e7054fa8f6bb4ac1bbf083352c5c6bf6527f475bbd8ccdcc09283471b8f6344f092106a0cab5393de567a26f1b9096150e7e73787fe24afc4cb716757c28d7c10f6bb61964827d583dc091b6bc0321fe7e35df41923cdeee69acd58afe330276cffcc9fb1cd503be7562fd685a744df7c2620ba324dc05608cb559a6f58243c6131dfefd8cc569af8c930879994310dd6a0552a4c7b319ffe4d28e79628031a55086ae9dc27f2d59e6afa959419e7877a80f7abfa90870283982d3f03524b1ef5d8f14554b1146a357821d78ce096529a10b0be41124d382bef52e22553916e135bdfad9cfe9c6051ad872706eb0b211981a802a22799ffb9608a06f7697fa39c37762ea1e55d8f9ed7f32a195bf65e5373bb7ea98f5e59e8a3e262fd3ec723fba8fa655a12d8557a662a1207013101f10dd086816c47b76d6ea0e56ccdb48a004075c0039ec17475229671a1534e42b6b2c80a88b7c941311787c38e31c4608620a3d93db62a7aaea6994359b3b62f514f67e0c763fd4effd6074d3550fb24a95a9bf7dfe71c436c74ff2f42a90e083f01d9e6c35b958eca3c1d511ec8ab2e4ec89472e241ddc1621859443cf4a4dd1341becfb89b7484b03d37d91c101a84abd134283d1d998491e6e8b6eeaa1f83b60658bf5cc1dabeb2344ab6e33ab487760e121c967ae9285df3ec879e801c8c79954b1475eca28bf27447d80c65e740ff1f8fc4f54f148279e63ce30cf04b65218815b3886065b714cfcdc0160099bbf01ed82056ece853d1eff81949e60e0fc79c4d20971ebb035a1d7207faaf2ea0ac19341a81a7e4d484cbeea570e6bd31eed3d07e8ca9f70dbad52481d1ea293f9b8bd713d7b80ddbd1545b63063af9093b37e0815ce0189b7247ac7ec40835c5e34eed0371a6fecc6c97c2821398085b01e0f8b486c750c87e00981f31ed81435166eb8cae40f6e3a6df6ff3836ca82d1e0d55792d217620071b098047fb0370a08306fbbb6b387106e1bce194584c551fd703e281c371b9a81644e7436ce5f180fde2047bd95e26a016cf15cbc47c99af580aec217d8997b4d6e9c1f5d13c71aa4a59e5a751c776546519283fc57f71691ec103302fdc31757550dc52db14b2af5a16d90467efd8ebdbf8f888de096cc9195ed64c795818bf5e9567f8598ead8539dadb5829de49b78fe4c7e6109c602a339757dd4012d97f6b6edd24db23238946506bc9ca0a6507f4a0b3d2068b55d366a34ac2f25a0fdab88481f37ff2a4c0beb13ed352652ee58509d82e00c885a3403948be32a82467bca8218b99d3b59af9d432e9417ebd72f75bd133b3305762bae2ed64a858116143b8afb303094bb5340ab6709da9d43a0b630b81c68f300d1bf74d9c8675a2168620ae7c802f25c8148ab0789a9a69e7b351617aefabe1a7ad8b9670747123bc7675b21055a372cf5ecc500041f50e4f6dbe26af5b9fcb46450dea67f2e80c7da24738bd65b3638d5412aefeaca0c75c675f01361959cf8700a90f50c6b2ae8b70ba504fc912ff1ef8c627e2b221e65b9358cd7ca082fe64c40c101c95ea70f85433c5c5a5a9f44093b8c655af955082e7488aeae0c3b32693a3947ee22a7771d013b039bb3b419600ae05d13dda4fcf3d0c9aff5ce98c50fab192d98dec5e18c090c730071052ea214de84df60e13a9a2960e0d5de9a815b273163d97fce30e1feb68fbb2914477ed8fea73a1cfa2363f87cda6e69744fa9b2138f99325f796cbced046faec07433d3d005368ed48038ea5470db18a0dc18f4ed9a927283d0ba20b0666ca2c975d8ca38210be90c06d4b00251ba89ccdd1e4ef6b5cd6c21289feb466a597e91ee05dd7b433eb8c5ec7b6904c34fada3f11216bcdc2ec2e29773ce5f0181b71ab0c5fed6bdc8dab6be8d9fc7a17b80af63d31426a3c92b5590965a604289f43ea1def0d1b8770773313eac4c294b90d488db8891715f615f8266ca273e12b44adbc9a68a520083e5bc814d8af140ad49bb385ace3d9aac485fd484f28b5ba9b9292df6970e50bc04014c6e5492bcb1a28560e72afe43d9c73aebc62455431659153c8bf050970c9d7e9e38374bd50e9d80eed06edd3f048f46db2551068327a337080089057c57fcc5520c8449385e805b32a1f7a8bcfc096b9a6e087eb0e68ae7b77f1f8192212e6020dd7e71b2157a5d2da6746c181d2da484799c9d2054aaf692e5d068d6ef9e9f7758124463ef5737e6f50af54a81631aefafc4444e2a39b28bf2fb1b55c942143fd73ee272f84e360554d70fe2d31c56d5b61b140fb2ed41572b3f76cd0df831b35a571a7df467b55afaee9a94cdaf4e3d8dcb53d441adb3915d3bc1cd0674d3c282a1d05ef9f0f37d07b94f7077633e440d4d104291eb20cbfc8ebf97063bd73efbac9b28963ce95d88ee8fb39088623ab2f6eaad0ba1472f8d26dbeca4b4828bc7e02c236e65c7a3c93253f3e6d87a71196e26352b66a49787bab28887b08d5e013b23e0f4b685d66a5efe24c75d9b827ae391868c070c0ea7315fbc2d4f0f4ae17f8c901ee3901c730277d2dbc828de0eddaac4cc632c8586658be889cf0bc6b11600ddc260b41d9523b695912c31381c0297c9975044346ae105e9a1150468774d4c140400c99da7f7e012338cd5adce550dc8ee24ab5f0fbda33fe3f6090987ae2d481dd1bc125107dfc9f4b8e9bb17e69d58315ddab5faf294abb13f70603adb336b04c7f19e89a381594a525d999cc478d751a7a9a1a2db0e8fa12f0498f07b1ef662defda374b9d03d7f2782d0639ae76d85705a37d4769a54694a5316582857833450c53d20b139a098ad63d13e77bcd4e90e033b06cc5e0394e3ef39cfecb04a3df93e8566d5f8ad889368534bdf61dfc06a3f451b2d3d4be614d0105977ec59221fb098b4f6f0673e569507a0d1cabb98e6642e196b034a8c5e699d492973f5363e8ae8f412f5c37e026fd35bb95c4e6473af0945606f647549825b3507c615077893fbee969433b0b5e5d99bfff08dbfe61ef625641a8808e096798248f29694bc82d689f1f4fe170e97729fd9b6658ae0a28337a386c883eb22c38ec9d9f6846bfa3aa29e6e9b444c302bc4f4ad4e69a471b656e5f2047a0b206af92f0774fc092874300c17f30d1ce249acc905fa3cd745c88196e41a13e7aa98414c1bb83613fe934c09e1ca6ff43f4108641b8216522833168b0dcfd024329e488b967b045bbd1c09a8784932618cc17eb3242fe1901a859391d5f064214836ed9b24f5ade0f165353c9678ae8e8f130a2c31650142a2d53b309c00ec7f3e4d0d06db8cb277e0ccd32afa2a1507b6c8767308f530e1754f2ff7adb08687fe445506084fa99ed6622a9ec99992e8afa5be5234dce165da1ae3cceee7958493ac9833b01e81420ddc95366a7145aa6ab0944a9e809ee2dbd28b80fb70a9d6d724c46baabcace48331c7516abb2c48e191e10841180c8f795bbc538be30586c0b3b55d3d66cee47a2e7e976f8acfaedefc2afd52a022c40415ebdeab1be0b509ef2169fc9fb9864164874be13b7ba7bd221cdbe6f5119478df4d20d4b30709b782e862eca730038ccc46e8b005cc01c0fce623226333e65bdde61bd81c5e33ad43457d4e66ca306925106e92738c19c7338580c108b7b3e23ce1ddf82484fdcab923a8c9e82a6a4f42b8802f1a7fc12ad055c6b4092e369e485db2af1ed7789cc7356fb65947cd995b25d5af03121a1a3b2a8399932c3ba438639d29bf7ad6de4e69aa979607c58852017e19bbcc2110b011051a548d1823bbeeb828657ef28982036bc401edd009e361dc115126c66b9c39a4ef1ab1d3dd6fb72ba3b839a480ba5274b2b5092cf96ecbae677f93c07a40c44fdfbf6e0019aa9ddc8f8d96b61c292fe7ec1dd7e81eef91d36bb0e179a7d952ac9767ffe7a4fc30d0c240ee7f4728ad2eb80b64dbe3c209b7fc341bc4d3976f518c60413bae1c0d095e82c8822b991c38969d5ab6c02603a15324656115ff57e085032d3602e5d42f3d946ff0948494acf3829fbcd1de82ff4c187dcc87bdc53d3bd9db0f75c0b34d5148be0707d6620320fca0cb15a2ff08cd4050c05aa16b1aba64a0128cfcc2222e7af6284799d2b27f86f826f1dd2235f0acd3bca0f6470b6b61991b5b35bf459a3b44a6f869ca9f3da9f6b46516a06cc4e52963d9d9f2765f4be359a87d8abbd8b02d4c43f5b4e1fe90a94a699b88a0457744b6a39522f4fda9b5eed8d2d28cb6a8b97a7d326d1d9bda8aa06d840735e9ac172504f3fa8e7c6542f13605f74e75449371056d1281f1a8bad89736990e7303910d58307c250944842e47e6f100acff6fb52d4ac0f7d63d7aaf4fc40d87a1840f2ad105d4d62d7ccfd224a86d4ff03b8eebc42aaeaea74ecef66a5ff671160ab4c468915c648410cdb1eb2849634fc163455053a721fe96833c62e82db6ef1dfe4da944cec1ac1770a786fe6dc909717c913351dfc1d61c8b0ad3d4cf9d25f1ea90109d148fead08b37fe216042859c62f737101ff38453b9ac545643a9876bfc7b8081b52b022aaa9d1b46d9570ca0de47e73d0bd07db91667ddfc6cac04d8fe2cfa905f6e95670777ee3f763409ae2b215f88bebb58c50e19f51db5ef96235267485542769d581a7b0846539823c4e9db0d53ead56e19218d2eb20169d8d24e72bb6d9c2c6db3b5883d1c740737746c75751a82843709108701d8a70b1e97e88bfddf58918deddcf298e09ca46f05408ea8945a2505ddf5b371e98487b050e39363356ed013f24108d343d433dae3fc082a6d6f816f232f8fc28cebbc5bd6d541185a8de06977142f748010e073bd963aedd752567190399afd17c91ff802cd7ed33b9d4b4df564b3b0b28e5b365aadec86777bbabb7d9cecac06f962ebab47abf462e327d2b27a14ab0b1c3705b302eb1ceaf521ec6954307157d08db6c53e91a53c2adffa8a7e16a64388a2412e69ac80c9d565b08785392352e6c6146f56aac5fcf3014420704ffa50ffd0771b52904b2eb202f3b2cf799b4e67853963f07ff00edc4a00d7670c1feb46e090fef49a54ddcb8a6ca6398c49d35c04165f6dce95a42d48c6216fe16062b1f8ec309bba920f7bdffda1e88e15a2bfc254e1a72a2ac9baa13e650f3879cb7f1a22c76e675e5f4efa7540ded7cca3f8711f1913a217ae2bfa0042b8fe2410baa530094c50e32876769d2bdb3a1197588468cf97a3c1a4165050a93595ec5bac6feeb5ca044a09b31b753c2aef773985b9bbdb2c1408b434a91c9bba6617d62e1ab6340d49d47919e430d7b0d6280855fdb8510c1b6a66581be0a7b6972e95f5fc14f8036091017fd57880f2d46b18b28372253a74e63b4bda0368b951036579d4d9491bebcd2abdbb6214b00dabf8f2a23f479c9d43d0688a7fe0bcc4c0a8930fd3bb2d85ca02e7a58d76c6747060b832a06edf1efca03aefa0718487bdbf16609a056f289921b6f74f205767e8bca1e9f087ee08b53f9b0bb96bedd0144e0f24c0bc06413af89f021b38ad606ae7af5af7a2c8082bd48ca3361a5600bd4e77da9d60cdf1113134bac905ea9b5901969bb5127d29cc03e37a629c69ad9797487c90e2463638267ff37ed55feadfd521e8c386d4d804e433b9a0a5b80fb7ef20fb4acec2a2a0f6a14c853dbe07c9de01dd82c940782fce0c67d35a90eaadff6c2c5463490e97d24f7fd29b72086fcce01856ef5f176b9ebed4fc1a44a5e85976e31af9bb4004f100defa07c3579fbc07c45b161930d6f01c3602b09b0c8324c98d13ee53c3aa2d0a9c3a6f8f250b312c88b355aab50953e35e7f7a769d98799b6ed092de1db099a394fad5de62c41051b5a3d110e4a434b9b501ddc951680712921198df9fbadd3d49b6e0365515bfbbc60c02ebaaa3212208dd832263762729f8327f0c3b9012a7393a0354fcc3ac905102d75a2cd0486d5a30110545b9b207f9b7ad8aed70d28807a991660e0b0cdd28f3e1d77a538ba4bee05c122704930dc7212fc572a90f1801bffbffb73907bbd3ec34494ab79061a520c82e408b5b81c878ea4ac588c20c03c170d395b64bf6e64e2f2037807c1a2dcf2b9dfdb3bf6291e67900bf0c4c64d69d815fbf7d5b2575e43d4363d9b36f38effaea7a6dd8e211c0eb3ac49b5e2fc77722618847c4091ee050b54db1a60b4a51d44650780e9a13cf5382a5c4188bd63f0ec9dd0fcb46aa5f37350f6d9a7a4c15db56e349db4d71cb6c4051823328b0fb00edefd72a73402601832f0ccfcb29d79fe7c6a60ebd098acfd550e8d28d089e70900dd861e779dd5a0f8931a9f0d70d5fe0d6a4ac0d32082441883b91461883ce3ace5503104c16d198e2020830dceb979e15db1ff94acfabd6794d86f00f997ec48bd99f2c1a3c09d6d2e748fdb6916d45d33f4d92fdb42a73a849a0941aa12fa3a73107172c6f6fa0cffa17596682253477a0119ac77ed402a87aa82a6207be2857324cbf0d468f54b5d315731e2fd0251fdb7313b5d13b7d846bf5f29ed9f0cf4fe1f9131abd8862487d788e529cd58704deccdaf352a539e93da9a8a9b156f3d2d9bcb4104ed630f83121f4587ed3f7bc7a8a07fbf73d32981bc4be8186526d8342f960385e641391c3046bf3fe994be5f60e16e22e6306d87edc501f06b2b70cdcd098af420004784d6cc660c363e98e2b894253bcdbe925ae3bded3a9fd6e372c0a80f10eeacb79d92178f55d823b715cf2cbe99a5387939c7a29ea21fc47cbcd758da48eba7893774cc6ba4488bdb4e8df5ad602ae980d3a2127586707f5474e4bc3842d63fafff5ad95f28417da624aff58cbb95973e627eff15b354f94bfc0d587c359c858d5dc8eb8527b5502e699ee679b79cafd7a960d5765752dccdcfd6d5ad9f64955f6c7abd7e2cd26b606f478179bcba961816a791157ae2aa469756379cb459f2a667d5da8a914554e7d4f213fe150d6f10527a113ad7882d7b0bd5d7a9faa14b0c1ef3f0be1a23131f5517121761bd918f721d038c7cfa64945bedfaa882ebb4ac0add05a31188af99f592eec81827798c15bb2b1e0f592f69ba19741350c7f8d9c6993c48bbd7c1312adfb6744e07a0d53c6386b6ac0c28ca2e38cc6b224004fbffac38738d233e200be6b7b286cf6e63169d20ac3180170c7e9c69fcf410c3b8408a68062c83ad0a8cefb6bcc64a6dc8871959725882a83caabed76eeb428020f75e34fd868b02469dc4391340dfcaf1ded14c32b2aebb76c707423c059d35c566f80be8cc019166a976eb26d26cebc770704d2dfedc596eed7c52a408fa9881970f5bf4d7f2754ec69d31bc4af2fdd2fa482993e45def0360dea852dc281c6ee2777a5ac132ee3f4fa44e3207ebf0beb8e457ef15b0620c530f036ab5e085b08cfca9aabfda95c595f0485e71a3eed5c83b63bfe9c1b62a4b8df237a03b2dcfe0493491e21410f9eaa2e7f514a771de75528562c89550a71588a40b60e0d64d8acc2545398aa77679c72955f72160b16f1541740bd6e813f2a17e719f15c369435e07daba7f352fecf671a3aa5a83dd302520efe7e4469a4c08db691096d1d72b40d7c2e7aba1824879792a210f1fdc774e7448317be52dbdad4ffc7e27845aa3f3e9fb66f20ac21aea0e5de93a23f4fcd9ee6b733cb82f8f22f284fddb121a3918667186c17fcc38098b74f97a7895a6d49f3aebff0bf5e26c2bea5dba2683b77139a9434ccc08b5ca1865ba3bbf1796e4b76298819a0ff74f4f9870ed089ca7780eec7865e4d5692a49b9558688b542eced843fc63465c45c800aa831a98685be4bf806f7182f7c5a5db6b243f94ba9d145ac3807afd20ae7b7af7e24d08fa0bfee288d8c3eb6128583eedd353a799e7194deeb362cde53956d2785899ef548648d926a5878bfa909cbf248b279e5a04d5b0b94b046e1d2ac44ac7b8ef70962f5add773483e3dabc82b1fa1cffd98f2f442ca61b7c732b53926d611c674f86effc71439c6c83e1fbcca680892f09b3a4a7abd47241414acad70fc6628e73a5342b14cc9b96eabc6b47351a825de12be356a4986a1368c11e7ff09d23ff62cf94b0801761077b041b7ad94fbd6625a388ca6cd86e2abce36b603faf0eb0271083b4e09054ebb02fecf34cc6d70b7e4c1dcb93550deefacc875e8dcd321aea01dc3d46c1c5b53fa8fbfd739fd173082594f1f9a8508d4adee3cc1463f60091d7fe0618b9507f51325f5c35c55aeb90ba82d3067610ea326fb14205b2e8ffca906836cc9bae82b25315f821bf82a5e53909043b79f18ffb8767f4387b552669eb20307cd7044f27a0ed4190dfefda0445df85d53855f405e86dc8f99568e5935db7f00613aea911746c10537084b6605a272d9d64bf4adf0ceb47ea80bf46e4a4e5bba1fd0d7c912f117f67422998ce0f43fe6659dce9c54849860330cc7a8ceaf4a613b4b71523d531ee8dc108f645942c953dd5271ecbcba097a47c66c8effeb240cbd12320fa4fee16835028bedd42827fd020f929685eddc64695660e4089121ca478ec8c0bb39e5979702655ace1475b4d8a644fbf461595755d5440284c58500f440c47f4263093dc772b0ba8df693075ca6c4018266bf5f67b83ddfe5d694456d3ccf348c7f3355aebf76eb240550bb4d8d0971d8f225fb65625714e664c221569d8bdebbbeb377c3d6bb629a3619cbfc951f29eb162131c26143c7270da08371611d4b83626f05f3e478b9878fa89f39e753563908237ad85a147230294fca4a67229bdedeb3684cbb1ffd595cd87792f6ff634711077c5897aaa26e4c5347d8b116ebd0b38b745e0c242f7613cabc8931fe87b8e7c9f40f1b7dc48f47f49fa28866e82399ea3baed6af7f4577b9e3612c6ad9ab09deced2ac9e2f61e50eedb0e2e0773139c5df4bfaaaa95ecc0a12c4c2cc36b4fc4ab68e25fd2800cab6f5e05b0b95f7aa7937faea57c49ee4f03bfb0de112c252d8bd37c2919027fe44e1d01fd09dbd4e11e8649684255b8f32bc8cee42e10021c5761994d8aded07eb1a334ff436bc8c45b8feb05ab726096e5c07890cffb08ef30e73be169e4ff47e58a79e792cca9389d58a7c1e25bebf7ff633a412a3c5386c5978f95e36b836b25cb422d865357e2aea5c63cfebaf01e43af708cedd88ee9b2d4a6a0ae34f0991c08eb2c857c57391a15da613c46d866ce4406ffc89506e73807f0761e429871747799fbac7f5fd864a43a8bfe02eccf5708b0620a862d48055be92d7c2b9d11967a028ea143e49aaa3d2d5580fe72d82bb5135f5d1cd31d0c495d58033b2a6b81def30754a0cd329bdbac1a9ea2b7912c0545fc98d02025d153fe281198993511116223aaf63fa68a76c7e16a5f5c8fb1fb5b4886aad8ad9b9ca61a883bc5bbe4b3fb165e90f6158a1749bd2e588bb5e5aedd2959b7ff1c82471fec377c31da22abf79507b923ce1f0c3de19fb6bcf8b8c5b1ff3f1b9d6b5ab4a8d99c1761590e512680993ef178745f677c37900c56aa88bdbb142e02f05123d173bc846178f3c157f7be49e2efadb4403810c3e13dbefc6315655b1d05a445f1ac9b4d49526385119dda2e371316d58194e61e67bca2534762ffdfec9fa5298a1d7626f15de269f05409b521f6229ad75159249075097dbd41695898c0c077b8f81f3a786a4a3cc1826eac8a32a4f08b1106ce33adcc201900c73110bb27e7189fb268f74d638ccf9200910fd33e89ad2e8965cae59837fb7dfcbc63ec13ed8136fbcae7b42957784c97c80d45ca42206bc43a733969050c16ce122d64fbbc361a198c9a6ab0fe325db803a66732b14e2038f83bef28176ecf056ffe29d8436fa4ab67d4a9cd9ae0e071a2300c57c4172de4e9aee9f270a600893e1f8078021660d089c32aeca344ce019ce73f8d384053060863bd5a1822bc7910112c2b4fadef08e540352501d6838f7a2109671a1cec2b0067477eac20a8eb7eb59df773b088125868d027c5cae858bded9583eab6253e22a03de2e36ff14301dea9637dbe51ed7c877176e7d430648a2c3fbf86ec4845cd5e290e6fff2ca66ddef8b352d7f6b0fa76835b4a46c675c1cc4a5bceb5015f29f2f7f44c5c50153aaecae78ac294418e1e2f9c3838982ea3eb11aa97ddb2298f80e5830a8eb1e5902ecaeeb7b664a7156b92c80f9c844c3ebce97efebf0be003fcc2ee221a33b5720d852b85b1755ec437f7d69afc490611858447b788e9b9eee480924a34c60144e31e4056ff11082b0ede52a5471773225e58a86da150dcdda3299cb1c1029fc8f9e5911042630c9fc0d4077158a63fa32e211528f1f3005313045f355d18bdef8f453c7108649903b4da2dae3bde4ec85c45e582657e2424f16a8e56d0cf26195cc6798464faeedc478e081cf3dcb27f3d5e523ad9d0033accbc0b319fbe7a88f10a5ffc9cf0a5457194dcd1146ed25b15188e4869ddbea1fb86f6f46172619ec36df3c17a3708544d3fb47a712b6ac04929f13e7f1697fdfed30bb70ee157ca9217b9c68816c4e177a3a5c2394f806534855868dbda241aed5da08e457eb6216e9f7e346341f8cadeb3eb8127e50079eb6a2232d943a619e92a5c6d001af6a149f7c815906cf81dee8a88d0f6a10088173ba6dac3e3199c0740ec3ff2d51afa23c93a56bdcf26bd70749a5555f27eb0a06f1daa8217bea877303ebce16b91d84f139bca40c73a474c5ca57fd334a49c343d0cbf82a4b16a0fda4ffbe0eb62ce990edbdb85b7ea8cac809cf0c12e3332e3c5e4ad3da9f1f0e08902a61fe5bde91ab7d9410d0122982e999771f459cd40ce744ccf7e5748f76a65addf66a6299845f1787b8f23ddf7836bbf43aaac823c4304d4cfd959fce7fb7e72a601283f1cab471d98b7a933d57e3067007ad88d4714137121c27f73d731fe9da3fc73a0e115a636d45356b0fe8ac71d25f51f93582bda518a956d870785423f2fbb29e83736464304bacd3208de0161d6cbf80cafb2e96538b68e23b4856ecbaf2c85ed5143e6f4043d095336099a256f699d2c5540a5d3df87d0d4717e4d48654637d417a46fb7028d9d5aef4974ace32edc67140b986ee0525d4bd85a850bafbc98bc6a2ad02673d4e151cf4501d65ed12acc63a5142cd1f588e4f6ae0795ebae09445b08972c30ad5c7865eb8d0e5b80544ac244036ed806f77b2bd22e81f4b36f8e316c2de298da54b1abb6f47e95d69f5033fdbea7b10a28ad17fb4fda796ab8fd3786b8b17eecb8d10a534b8a59d66e1b341a858885d75d41424ffd5e492c4bc67bcce5f4de77c37d8df2ae2d59175c96fff1a374cc7233359a6ca71ff10ece8a1cd352fe6d9c9ab359cf956d5916e741e0b6ae9a5e4341bdb5ee98f0958f295380932347009181d3e9e73252c18da142006a553e6ea7d01b61f651bcb997b26177fa80ce24bc41830c35239ad1b77a2eb0bb473e559f4343e6f89ab88ef3c923e11bf3ce0f61289895247c332253c49769f37b5dccdd544b8079c1d81a6c26c0f252bd0e337ce1be5fbefe11c4daa2eaf5413d03d04ad8ee354075af4a143ea298b5b3700556c94079ec7d78e5a579d170bbe23ce7f94e1c0aeceafd0ad678da09f84394385e4302cc967e118ea638683813be634f78e50ddd97cf1f1a07f3deb681025bbd7811ef292a93efd4847b44a9ea9db0a66dab3d858ccb7565109de035726216012984146869cdef08c13c24a6631f91a2008795ccdfada46025abbb9fceb160ffbf300e6d6d2ec32d19ec4d57f23969f4190c2dc98eca47774c528bf46a0c62c42d6d22905dd7a49f7b82d5b1cdad8917ddc356ec5b1cfb9483a7c6184a3c5befdd262809fa519a1fc2db4fff1e78e414c94d916a8484c0d0be8122a5f9b78b8834e764c614e3e0d9e74970f8b69a27c9030791e54281d015eabcf022772e110b36772aea35e4b2b7d7f018b014a3bf2308785b398fb937d3396c4a5f2d5f96692b48e8484bf91953f2cc8607c7ab588ca1125c3652b1486fa91d682cb473626e7f43780ea77f7239d0a87763bf07c7f57b9ab4d3876c46264dfcd38842a027d80e85dc57d2b93fa2526ee5a4bed1f15dc68d627fa50dccc03660d520f3c8d6cb7d5712b83ab02e1271f58a9ad3769e64ccd0461d15646c59958847d3a39695333592775eef2b06a1f2d36c0e0885676d8a7ece0a7993e978174ba37a77db3a50815de751767135e9e5a902e839bfe337641f2d9bf9b58ddf6f9234d22a7aba63e17946a82a02dfef6b29d527488d3f7696dad145229abd6d5c7bb6b42071bf6cd54192df04486e5d56a1eece891338ee80da2f9c19f61cdd0b1432c6333ecd85c387c3b3218c6c9493205fbfb2866b1ae30853be07f4695e6bfa5d4f1deb3d71179c1d6960b3db6559d200981d93d424b5b6e0d51b959c97b79175003fcb32eeccf931debe319ec861d571aebe4c34782188c593820d2e0ac8b274fcb8219d327fa95ff0eea1f5b76b9fd7e616a7f7c0b5e0b8f1f464fb2d881a2116c264cabde78e63f583f6c2f5658871ad3d56323e4d8f367dc968d72648e37cfe6277ab00ef1f346ba1e3f52194a79e474b8929ad4ef5b22cd2382f94d3f22c55770da15625c5eb8b930978db847ac3905622b37391169bb6fe58256fc207af821bc7c36d6d0024ca1990d2a9eab475c00081230582903d24d30bf765745af578393fb2243406f5436b8070dba3b815952dfe8aa3792d7abd2a391afe3b971eecdf1fd71d6cc833befe29b8fe09c3b68bea72eda926298ac7478c84985e268af8aa79995263c9be5342175c3e7bdb913b72d17c1ec744f3241ac0c7eadeb660bf7ddf91c2d2bccd8db5f2c0c9f5803f05ff2f125c84c91aa7937bfa42f6f06b1b746ea8c88121ff5ab5786982807d62244d3c8306a931065b74faaec8207b0546042d7ae46851b9f5a0b9860bd3ece92773362a79dab85a28ccfd1edfcd52c216b646c674f85ee1cdebdfaad66fba3b98c4026072e16e210f2dc4b2410f8d5752df8c87730f3b8a8cc36b906283b7667d1d9521d3781aacf61e9e96e1b0043c13640af04493fcf2a399ddcc5f5dc2852cc8085837bceb615b0cca60855d3ab6bf5dec3b0e020413c7d090b2bc79c166026c127b112e0505974603b0f5423e05d0b66be0226cff4228720f29810f7071fff102b30935c065d240e7925670e9ccf67eaf3493859baea28584d27c6a9d35f68088a9468c9d2d1515cd4954de69cf3980699851cf7df07e7502d82989db305ab6d42f3573df5af01b7f83870c3bb6c3d14284cae55b4e60ffab1fa67c6f9ae07041575f1bff8a5a828a88529766dd6cb8a985606df3c33100d14d20d7b1d4a3a7541c3eed5e64f4ec298cab421397f6ce386b0024b840a7d8531b8e6d72d6fe6b30092b9ae79dd372b81bcb2027a926c1eee5f794e2b216c2b2380437c0a3eddd8b8734bdc19acf2aacd46eba0cd002ed9f041f3ccb173ff9ea9444dc0459fc4de9a3b56293a6b8b3f9d5c6959fc2267ab4189a53bc7124af1282220de8a04b7a4d3af62dc4fb5b2f43283a73f41e2c397531585a4bdefbb263e881eb97c0e04071c49b7fa70106f054cafd2ce0c4e5e7930590cc71c6f622f505f5f47d9526655e21fda3beaea7c60cc6ffb4c9fdf0b6c3a0b4cb6a745895100f7b9146993a127e4619f69fbc6ec42b67f36838db80307a4809df9b8b9cafd7fbfc5eefaba9850de02a11e7b1d1034862b3c4950cd660aa77a6ddb49b79c5557e53474d9085b8b23a66b86a9eb7133afa8ce7b82a9b0f68ce6b8b1dacde241dacdc5ad2dc637e63be36516cf24aad9e27d51042dcb721de53fb6b3bd11e94fa3d7a19f02f629a0d38c465038f73f12d0a2b6e0983b8ddfefa11658fd1ef47641db3e9c4247716b0137855e1d8bd23428109d696d39271c0988b975d82858f8bd0c2c7ba2f229f2cc9f1846f638ae6cd8bc2dd6a6c011c52d4040ba590a11c9c20ee1847cf75a04ed5cee7e880f5295231722a75db0c73065ab9afa474bb778a0d159c906ad8584f4d69b9ba74f2dd023d8e9417950555e8328cf663e9d1502df98620d3be54945bc522a290b08499fedb639be89d8563b0c48261ea15da1cf5605da1ff1f9709fd7b8b2da4dce5908cbe6788418fe6d3c03bf9232f47de143f6e408c9bd08ca2b5a0053bf5041e0f25a4b9355145a7031df6e09e93754ae975d9b5347ccd344e9c9e52587dd1afa6406afcb9d647c2cec81e74c880cde688d6d606c8cb40933cff689c9abc641acb7fabfb247166e8df4f5624f07bc0cb04cacff18b6e5af8152d6c253b5c0756195bca0999f7aaa1f2295237d3c376fb09d635d07c2cb692d3570672457f6bc330344bc1a0085773f58d53bdb838ef359db06984b611fe8e196f9cd832d21a18cf2b72b3b08859c7b0c2e740d9bd63292221ecad9335b1a0ed4d4c489af16c43bea42a7a6083f08b5735de50de80c5f7ec8ed951ca45038ce4df18e4a84d53ce8d5e682855006253ff6f630fcf0abe061bef6e4a364e4460fd3092cc8f30b962d5d6bb519551402b66dea0e1d34050eae8dd22b370f4b7d97fc4ae84a29e583a95c97f92b601c61dc5a9849fbfe8fc8db4ec8f1884da418bc7a651cbb83d41fb5b9a25da503a7bd1f210cd6210d3abece66c5fcd05cd2f603ffff5f96d3421246d176cfd654dd466c0dd209d525df67df55c54ad39f30805b0da537743099d96adb04dfa20181b8ee8eae8fded6e872cf0e35ef99b09a8c3da010361276f02df3e91e7d1e3bfdb468dff45298ba228529e079eb7e2c375e79494dd735b187cc263066fa4c0c4043ca5ee3fe00eb608a1d5f1a556b519f278d307eb94ba80d3faa3fc5eacb4eacbaebf9c248fb1271dd5bdaab3ffce449579de5aaef4dd8de86627b8208675d74e6b0f31932eb91654b20922d5f72d14dc86055e03c9738e1e53f69ee4341c71b530542b5a5e6de768936dad0be1fce3124f0034ecd93297ef360a5778fe9f802866c29e724445032265377e3449361fefa4472745472c7092987650b89024132a837418e57ae78730d693745f32a07442440646b8bf6b5b50eee796ac0a8f632d5b2293b10c5a277d953f17f6494152bb6c27ebf92bb16945babcb2ddcf7c9514c190b68759996e37b7bb9de3bfcda11728818d413ff08dc810f06ef785a8c8a537d14c38a9f6dfbf444164b9a65f0361b2c5ce249d0d009d377049d218324238849f828873a555b8bb4fdbec0ebe4bf37f280f0936ed8c3b12eaf2b7f15f33d6eaf50202d75e7cc45c3a9a354dd376ff3ec62bd2f1cf2f4539ab15d01110af7ba180673d838ae4936b58f43d8e75c680cd752756cdc283688e6e94a848ec3f34d86f1652f005d0b5c64c826ed542d1ad94af80b9495189e096cf1b0266fc9eebf0683e86abf755026340b1c12cacbf582867b6ded2aaac5bff20b541d27f8f233433074a3d7b110907f9f7473893191bd384aded66254a9231295998a82a3ca571d780c0e6165b56dba3ce1561af04d13242c07d29a95f60c2455301ea63dfc08a8e914a63b06d3583102c904c645d016ef7450f9f1459634adfa1428bb23346bc0c4ab7e9291c74b0bc097c82ad49f8b51e51656b673869ae7550f600185cf7af1edb98db8641e3c1f9d02e231042d5f1d1a3197d742137365116dfe11d716ff460905ae39fd0513f16ab2826b358c08ca838aab3d7134941de7a085114c89c59252f166dd8c23423718822a552a5e4e86fd540e6b4fd7a341ac2b800aebc531f3886405bef1953d5a97e2500c12bab0254eea93004278966ed3e3c823610e9759de18db38a83f7bda6f7018ce7507361ab5d4d5103e9471f70ca6a7f05219f33265f57b252e8c8f068cf1b8cb53720b8b38553eec7b461022d8f15a24255cc6d705fbb0ac4e95b8edb919bfc286fdef36983f80094cd09aefb2ff5ec9e26c4fbed3b8e530032071e127c1a3929a254ec41a3b54f043d5f9f0d8ec8eb626c2bf77127bc95f5f11785432228b98e59ca8bbe2585c0a6a0e0da13273e75df413bd90844dc7dc07e9bf443d14dc82bb91bdcd60b85f21df3b81dd58cf5a3944fd01dee72a75d41da7e644bae3b00549d2a9e1cf2f488c59813159b905247ad683372998acf02d92af0cab2f4313e3b887c7e302af761620540fa1ef95b13abceee1a44d202be81847fb7f862bfa1f8fa30a3206387a8a97806dace9231e53c52756a3fd058601bff7a404a30ed67da681050e7631714f8e8eeee2285abd460f9f01a2acc54b32adffb19f82bdf8531d0f4cf3707e2c84e4736027d5ebea951d310b03d02b32462651e3998aee7bcaa5ead782ec6e4c119454bdf151344a71662213c37e0ac8efa6a94fb8f556268238724c7ab755a059aec4b6b2374daa76f45ca8f220e4dc105d744f8a7a30a4ceb3b68a5df836eb40065fb75cd1178d0d0d3c29f2252cea39d4e4399668a51207d875cadd291ac7f8a607efba5393ce35c8d15a2277adcabe4cdc426ba184746ae71743f47b8e91f476abc766d3e878c83c835d5d872a1e9bb00a8926381ee5295993c28c7df8be2f165f190c5c90f133fcb23c670570c566f822aaf2acfa2951006b78c87a7ceb23d83cf9996682501d126b80ff8541202f43a8d0a56160f3fe76324c443a6b1e81d16b56162b724fbb120f80d09715c6b0036b4bb7064eb58c25634b7feba5f54fca1d9a0eec47e83c8b77eed5dccf48dbd200e4c8188a4ea82f0efa343753c5c1cce155e2ed4f2dfca84d511c10ad84ade1340b49278f68831f76ac44a93e027e540def9ba194824a8baace64290bcaa65eb3c8654a4750536292854bb95460d9fccd3540436d4f78baa3b69d9c37daecb55e7d1d74289faf93340d1a58a7df6624f084f58b11623b370e162277d0adebc01ea845cd3bbdefc4e54d344b2f6242536a96e40dc15c68a53e5c66428fd7304225191dcbab5facde305e7f1b491fbb38de58d44554e092dc0fe9c9542fe9417ffc0f5464ed093a8abf6b2410dd33ceed38b229ce618e7fd50b5a08f7c198d3db0416d26786d5257c4a9b16498a429dbd40356bada90a18192dab1789988a13508874cef1b69dd3d2b2728f4c5108b92592b87f423d5496aad97eb2ed7478d69c180b6bd2015b0202a1ab871191c7ec6b2c44e7bb7cdcb8791a8c98bd5e8b6140e161509be817e82d6a8848909f0367e9381ad581ba1ea7d6b9f84ce7cc0b6f93c86a53410e1afb153e571be6c4f39f7a8ca0bdd8f7ddb26cb2a9d8abe844f787474222ad9d0c966694b2b1b1acf1aef83b1bb97c85ff25085c4632ca543a3a5b3a3505600700e30d301ece14f0e33b759397720923cfb6a11c1373790ee7cebdf640d92a5ba39c28e323f46e24683cf4d1d21df8487a3c2ecb256fe78cd5ba7dec4cce4876e452bdf68dd0a06604ff9451ecf96407a55c5fcea88b0afe04cb2d07d8636fb4740627bca6a2aec79def4d4a34a48375d9f7d0fb30754084f283b1ac1f3e40a3c82fb206d1fd27a32c3e14b5ab0a5eae7301b7713ba45adc58aeccc9c56011f529b11bb8cb1242b0ba447e35c5a0a7f08a02276bb9d23fab79447c3aa00fba7ff236a031e7856835bb4c1c507eff746b4aea2e75d6f99c4131b22d1a2570358adba4af2134a1a0aba1b8aff7d7c30e8e177087d60454d1258b68fe0cc903e20cd2d0e340388e719dd244f72dab30af124191f7c292d72f3db709ee908f444577882ad3a1f8d6a852952838d2159f837fa226b528197d4b0ff36351ff395d03e5339cc9cd6eca0333656c9a40606a03c48c5d3c1f399adb97cb057b94c18eeb4fe97dc04d3c4196448373ccb9b7b5bf75b7b02f897d2eb32c53756a9033a1952849aec34a8f5165a7b89d2b3ffe594809e0636c1bc6df1872818f65fa9e3e7785dde57e82eba114397ce0e6a239a598339b84a205870dc89303403ed80bd644d7eb2c3b3ba2d45221e0e329a8ac913bdeecf942b2981cc56ac6abc5e43551f9b509099ae75a790edffafdde898f4f5c4a28d24b42c925c5075b76837b2d5ef0dacebe9c033f2607b842c42967e9d1f937a993089ccf6c02c9edcf781838d7b4d01d0f6f4b66ddb1c5b7e5455a81debc96afd3e40949acd23b820927640858908fb1713c721fbe05b7fc9042c02d330d206c9012e0a915d93a55bdebbbe3b9a5832997b5c909e9e71ae83a474f47460b6a78ce6c8b57ac66b2f7c7a203f791916c9db129ec9c65811e2bd1878c9f9b4d35cf8c630a7812baf4b0d88eb27607bd5d61ff906495365db8683b321ae654aab707448f5c60242d12c637ae3ca8c216de4886c1a4ab6b9ea7077801598febf1fcd74a5455b05f076091c3422264402e049a5a626c21f96d7f3ee0fdd64b367e4e4338d8a71fbf38350027f23085f64c7ae61bdfbd91dac30e94bdffad5a7128f06be0261d4559801c06caa3ccfca4891c2ff10d2deed224fc4a454c9219fd3e935d526854d109e3d90326224e82253a1fcffff19697766f278d1bdaa1343beea34bb907426ce512397378314f341972641b6c013fff6dbcdf81999c407fce4ad6466d4c18a5d6b661d5e9aef5982b605c5633b8dc178a2a08bb7f20424c8b180089d84b352bbd7aae69868f5de6c8c300eb6d03d9e55004807708b0d84b4574e51259e162828eddf8401d7ba9a16afd4b71368e399e178876689f84ba7c8ab51b3f4652a7cc206f834c685f260b033cbcbc165a5b095cbe3402d7c096fa3168d3121f5ca1332c78009275eaf772a56bc8e69e8cf276b19cc95ce1c7c7b2dbf9dec7e86be7a6f2ca9dc0a6d522cbb98f61a88089a6e798e965f8e75fe75db193f723d0a72705491078ede22aa19cabc7728897558294931a3211444246fb7bb5e341a707748f1bbccbcd9207771ee6c606fe5a7c45b8de2331e00793e26e0fd8b850b34e290e353a531402eb3875fc1b6dc18a541d2d58036d5b9d847ec8e1a9d797d460324548d3a10bfc0466a09016fad1aca17717b7a045bd3d1a32e7a37ad23cf1e9adf7f8ebc86398052dd59f2cc720f40ddd1cfeee8eee013ac8aab98248d6ea2d92587b1d0e1aaf3d640bbd485f4cf4038816f07607041180903e1789957c025c5a8b1dd26b0fd46b79d502fd0654de6dd0f5ffedb7a07f9e4a69a0b0eb36d4a53ce1a981b0cf564a785c3ea9fb918e4a191f2c045b290f6b4cc3b944a392db8c1261a6dfdddda50945cdeb5703bd540ea61a48c809dadbf4cc316a815c07a455359f4ed927f601763196f6199b63def50895761b75987e9ef7e1e4d1ba856d7be1aa0f6f4b1b022443d64b243b8686f0f094763be64da726e88fc2d25dfb57982db549170f0e09010637abf4d09052ccaecc86af423a0f42221b4bb90f83356c4f9c129a0a3046500b1000ef085a2a53c51692675e81d21cfb07fa9c6b04c90159c07be707e0587459dd0013d880088bd9301035276d1e5435cf726f01a3b170f36f9d72bb9819399a70da39666f5fe61fa78a3931be94849107a275cc2073921c9b22f75ed44339a96cad16352c43b9b4047ec441b707a3ed87be237982214a9ebe38e13c88f9983ec753259c5503e98bcad3b8fdc2b22ae2f5bffcd79b249ba8d58e9670c94130cb3c8bb67a0001271466300781fe06520f28eaaa7850852b95eb223e92c0eaf5972bfca40986b5fda84e8373fad43f50a4d9780b6a7fde0df7c39625799332bcc7078457bcfefcfffbee347e47c3a561fbc7f43d3f627addf8f2a0eca972869a2ce2081e2a383f2f3dece00c50f00f975b9bc9202a497cb512d39d2fd0d8b40717dad5840192fdc813f58b3a9c718ddfadd08705033e74bc65d42dd5dd4b175229b508c16196f2476116e5f51550f113222cfc74e4ac3fe59600380f8caff67bc15984f18e28c98b6702d99bf11ba42a2385c83e9f86c1670304cfe8457dc9671fc6cd77782e0bba398a790ed91c1cc9ae23ebeb1c0c538402a7998d73b232baab5cc41972739d3762725c7286bcac812ab45aa00b27dcb494293941398ebef4b5691ace8c0ff7c8428a614c3fe951c719d58008393617a42f1a496fc205b2f8524cd75af76a5685623d98e6c2c4d3c69352796425d008a29dfa2cf37c4d8c1705457dd33f6619e81cb7bb952b58d3938e247aa3f7e2ad02f792424d040db732d4a122787472716f00939b5db466bac556bb5e81b178bfe58a7da105d7f9d5905885d0d33fa59ba4dc7af112aec539d10b6153e5d314c110a869d1adb25c4b46f9b500574ac8a26e4b1a9dd0735c890f160ce57aeb55e8ab27ac5f823d2578579cd67106ad639f44f9c3b1ed831b41a3b131f3ab5567a25aa521ba56ea8863377827b5b84c0ab4d8e4697c30f2b654e9d54cb1897ba49744b95f6134440e58e99daf0e940a7caae4e69e280e2864abccdac13a679e64626d7ac538674b36d9b4fc71d9f15e8a82b3c88179232dc30a6de2e825ed7e98dc7b05443664a01a097619629a73290ceff000523e8a7824fca010d5e871f2dc9d2816857a06f121678861b6ed12f116bd0d0d8d0ad1725d6544ed7a0e51ec2ace835e74e8ee20db0129c319e5112766271929d782af5a62bbb89c8bc2a9a631f077552baa514df4e5939e44cd0477542632db6dfb0b493bc292edc95712bcfb48ecce5e23f1d5c78737fbc619daa6fa994b4cb82d2941004bca4476cbd2ca14ca793252290a3d205f1dcd3c543d91f632482447fb3de717ddd64ce2acf76a82af45ead552427e01720dfd3b01f4d4c5cc7e371fb781ce92b23d00d9c8de663e7fcd07c1ad1c4a0688f775e3eba8c7f5dc2861dc955256f0bef5148e4515e83ad12f8b3b31c7e11bfe4a6b825a2755ab90aee8ae098c60b7706f1ddff64e149e054759fac4e76468462cfc89d5317a875d04b9d3d60ef7c38a30ed8db66491ab66325c8124fe4a905b1047b5cfc7b051413aedc7f570b15a807ddd1807ed1e9ecb89ec95562bafeadbe2adbb7bb146c4aabdde9d4a81e45d3112db92b57eacb94c64fa40673293f3891192b42508c0ff12a0d6e1e4e037d67326e468264989767658c8a9b91a7759047b1d6507981f453c485dd3a8eec29ef0405043a4b33f39143bd2636dcac37d46a9b13f69b8d7a89c564b88b402217f3fc782a88de970682f0865182f99b54c8ad4eda39d5651f1016904d2698ee98cdf84ccec8bbec564f388c1ef92f5dbe78ab374974a5eca2122af56993aee727df570318af396d7774dc85c171376abb3227f5bd326d3e71fc535c0049f45f23adf69a61f1885543a5692d29595033faea242324b8d8e9e3df2c17fc4e8fb33df938bfa6ba37a3dc6b847e721abdaa59fbabb1be0ab6d21f12dd8646efd538d82951cd7f077af23830290b82c655c4ad275af9dbe4a55c1ac6f4446519ea2d963d1d1d5f7d879f7e734e67c8640180331bd4ea218b08e429988bd8e2143efcdd987797d57297dec1da404533520be44a6668970cd34a883b8e276cb48ae7b7c191be84333ab0b544da4744061741ac3f32e978bcaf045a921459790fd2b5ad8b57d14ee134717107cb6d58d513db9a2d2c4b45b277701a5d2eb7a2b62b9fc4a80af911fde55d826ba7f198a16bef01bd1e58514e31d9155be1bc8e39efedf0d568748c8abf72e63ace4e42f44c69efec23fb03ffed32dfdd48e7406ecc97899fb5a219f26d6f3f4b5039f8bf81a1855c0c658d3689b4e9bfbde7b245e11e4fcccf1c7a3082378fbc4b2fc23805e04aa48310973f7ceb219427780c1ccd66dee5bdf0e3c73264a36d53d17874927e5c059d8f8d846f31f3f008e42578ba6f4c8c3311ec6977989633cbcb4ee3e43619852bdf4f7323e59c43d31a45fc94a8c70c7abdc55953ac56daabd11a0de11ffbcc8243e746cb670ef12520dcdc2027a008b4064d5252b3076a24b4a4df8ab0671db79d94c09c40eb0c410f39dcb9dc4b57e63019760a413c48d9afff3cc1db3acc9730ef7ab0194344bfd90015bf4387c203a46e6da9cf891e57e69985d9bcd642cb3a9dae880063820776f82b2007d36650504cf42cb90211eca5370c64f271413b51f32287abe7e5016467faf432acb64f5070e222cfcacbda5349fc0cd58ad6aa429a6e854781a3fc9d2f7857dbf6f32fa041d4d018ef5c946bd9dc76525fa472e0a2d91f53bf26d1fdc6eebcfc14397c67b926b43199057e4b6927b290cb6f1d507ffeb703880de86efc159aaaf8ffa07bfd65892273fedf480724a1994085c3cd0fa92d64f4abdedc0f7cfdc877a7d08a0283cb41d6e20fa66572823174c0a8e48d2c65533a52337cfc81314b88579021bdc846ab9075e6e78198b6980584a189b736e0f6f77e55418c9d0e34fdcf1322c14d880df94015bb540200a04cba6e1ab972f136fa4928c00a8f1ad00272bbdb7ca737752c4b5c96c83c8d7a108325bda411410f8773e42bf13cf9e284261e6449672a58a91ae685c2531ec3730bbd951184578e144d8ddf4c282a4f3dea83f9cffac472a85821eac8d038ca093099ec91ba5ba73cbca64b9b799bff0a2fdf5bb3e3e905a22ed2c2b913f3f0189fefdd952bd368bc54edd99288679a262129eab7f2cdde981f99ebdcd432bef898241c8d4a6967efc94ff838310d577c41e841e6ca617d61117909b8d95c82dfde16d8CIB.cpython-36.pycCM_corosync.cpython-36.pycCTS.cpython-36.pycCTSaudits.cpython-36.pycCTSscenarios.cpython-36.pycCTStests.cpython-36.pycCTSvars.cpython-36.pycClusterManager.cpython-36.pyc__init__.cpython-36.pyccib_xml.cpython-36.pycenvironment.cpython-36.pyclogging.cpython-36.pycpatterns.cpython-36.pycremote.cpython-36.pycdate-1.dotdate-1.dotsimple2.dotsimple2.dotticket-primitive-7.dotsimple2.dotdate-1.dotdate-1.dotone-or-more-7.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotbug-cl-5168.dotbundle-order-stop.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotpromoted-0.dotinterleave-3.dotinterleave-3.dotinterleave-3.dottags-location.dotmanaged-1.dotticket-rsc-sets-8.dotmigrate-stop.dotmigrate-fail-6.dotmigrate-fail-8.dotmigrate-fail-9.dotmigrate-fail-9.dotticket-rsc-sets-8.dotmon-rsc-4.dotrec-rsc-6.dotticket-rsc-sets-8.dotnotify-2.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotyear-2038.dotorder-required.dotsimple3.dotsimple3.dotorder4.dotticket-rsc-sets-8.dottarget-0.dotparams-5.dotparams-5.dotplacement-stickiness.dotplacement-stickiness.dotplacement-stickiness.dotwhitebox-imply-stop-on-fence.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotpromoted-3.dotticket-rsc-sets-8.dotrec-node-5.dotsuicide-needed-inquorate.dotrec-node-5.dotrec-node-7.dotrec-node-7.dotrec-rsc-7.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotremote-recovery.dotrsc_dep8.dotsimple11.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotstopped-monitor-21.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotstopped-monitor-27.dotticket-rsc-sets-8.dotstopped-monitor-31.dotsuicide-not-needed-quorate.dotsystemhealthp1.dotsystemhealthn3.dotsystemhealthn3.dotsystemhealthp1.dotsystemhealthn3.dotsystemhealthp3.dotsystemhealthp1.dotsystemhealthn3.dotsystemhealthp1.dotsystemhealthp3.dotsystemhealthp3.dottemplate-coloc-2.dottemplate-rsc-sets-3.dottemplate-ticket.dotticket-promoted-1.dotticket-promoted-1.dotticket-clone-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-clone-6.dotticket-clone-6.dotticket-rsc-sets-8.dotticket-clone-6.dotticket-clone-6.dotticket-rsc-sets-8.dotticket-clone-8.dotticket-clone-6.dotticket-clone-9.dotticket-rsc-sets-8.dotticket-clone-6.dotticket-rsc-sets-8.dotticket-clone-6.dotticket-promoted-1.dotticket-clone-8.dotticket-promoted-1.dotticket-group-7.dotticket-group-7.dotticket-group-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-group-6.dotticket-group-6.dotticket-rsc-sets-8.dotticket-group-6.dotticket-group-6.dotticket-rsc-sets-8.dotticket-group-8.dotticket-group-6.dotticket-group-9.dotticket-rsc-sets-8.dotticket-group-6.dotticket-rsc-sets-8.dotticket-group-6.dotticket-group-7.dotticket-group-8.dotticket-primitive-7.dotticket-primitive-7.dotticket-primitive-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-primitive-6.dotticket-primitive-6.dotticket-rsc-sets-8.dotticket-primitive-6.dotticket-primitive-6.dotticket-rsc-sets-8.dotticket-primitive-8.dotticket-primitive-6.dotticket-primitive-9.dotticket-rsc-sets-8.dotticket-primitive-6.dotticket-rsc-sets-8.dotticket-primitive-6.dotticket-primitive-7.dotticket-primitive-8.dotticket-promoted-7.dotticket-promoted-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-promoted-3.dotticket-promoted-3.dotticket-rsc-sets-8.dotticket-promoted-6.dotticket-promoted-6.dotticket-rsc-sets-8.dotticket-promoted-6.dotticket-promoted-9.dotticket-rsc-sets-8.dotticket-promoted-6.dotticket-rsc-sets-8.dotticket-promoted-7.dotticket-promoted-8.dotticket-rsc-sets-4.dotticket-rsc-sets-9.dotticket-rsc-sets-8.dotticket-rsc-sets-9.dotticket-rsc-sets-9.dotticket-rsc-sets-9.dotticket-rsc-sets-9.dotunmanaged-stop-2.dotunmanaged-stop-4.dotwhitebox-fail2.dotattrs8.expattrs8.expsimple2.expsimple2.expsimple2.expattrs8.expunrunnable-2.expunrunnable-2.expprobe-4.expunrunnable-2.expbundle-order-stop.expunrunnable-2.expprobe-4.expunrunnable-2.expprobe-4.expprobe-4.expinterleave-3.expinterleave-3.expinterleave-3.exptags-location.expmanaged-1.expunrunnable-2.expmigrate-stop.expmigrate-fail-9.expunrunnable-2.exprec-rsc-6.expnotify-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.exporder-required.exporder-optional.exporder4.expunrunnable-2.exptarget-0.expparams-5.expplacement-stickiness.expplacement-stickiness.expprobe-4.expunrunnable-2.expunrunnable-2.exppromoted-3.expunrunnable-2.exprec-node-3.exprec-node-7.exprec-node-7.exprec-rsc-7.expunrunnable-2.expunrunnable-2.expremote-recovery.exprsc_dep8.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expstopped-monitor-27.expunrunnable-2.expsuicide-not-needed-quorate.expsystemhealthp1.expsystemhealthn3.expsystemhealthn3.expsystemhealthp1.expsystemhealthn3.expsystemhealthp3.expsystemhealthp1.expsystemhealthn3.expsystemhealthp1.expsystemhealthp3.expsystemhealthp3.exptemplate-coloc-2.exptemplate-rsc-sets-3.exptemplate-ticket.expticket-clone-7.expticket-clone-7.expticket-clone-8.expunrunnable-2.expunrunnable-2.expticket-clone-6.expticket-clone-6.expunrunnable-2.expticket-clone-6.expticket-clone-6.expunrunnable-2.expticket-clone-8.expticket-clone-6.expticket-clone-9.expunrunnable-2.expticket-clone-6.expunrunnable-2.expticket-clone-6.expticket-clone-7.expticket-clone-8.expticket-group-7.expticket-group-7.expticket-group-8.expunrunnable-2.expunrunnable-2.expticket-group-6.expticket-group-6.expunrunnable-2.expticket-group-6.expticket-group-6.expunrunnable-2.expticket-group-8.expticket-group-6.expticket-group-9.expunrunnable-2.expticket-group-6.expunrunnable-2.expticket-group-6.expticket-group-7.expticket-group-8.expticket-primitive-7.expticket-primitive-7.expticket-primitive-8.expunrunnable-2.expunrunnable-2.expticket-primitive-6.expticket-primitive-6.expunrunnable-2.expticket-primitive-6.expticket-primitive-6.expunrunnable-2.expticket-primitive-8.expticket-primitive-6.expticket-primitive-9.expunrunnable-2.expticket-primitive-6.expunrunnable-2.expticket-primitive-6.expticket-primitive-7.expticket-primitive-8.expticket-promoted-7.expticket-promoted-8.expunrunnable-2.expunrunnable-2.expticket-promoted-3.expticket-promoted-3.expunrunnable-2.expticket-promoted-6.expticket-promoted-6.expunrunnable-2.expticket-promoted-6.expticket-promoted-9.expunrunnable-2.expticket-promoted-6.expunrunnable-2.expticket-promoted-7.expticket-promoted-8.expticket-rsc-sets-4.expticket-rsc-sets-9.expunrunnable-2.expticket-rsc-sets-9.expticket-rsc-sets-9.expticket-rsc-sets-9.expticket-rsc-sets-9.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunmanaged-stop-4.expwhitebox-fail2.exp5-am-then-bm-a-not-migratable.scores5-am-then-bm-a-not-migratable.scores7-migrate-group-one-unmigratable.scoresattrs7.scoresattrs7.scoresattrs4.scoresremote-orphaned2.scoresutilization.scoresbug-5014-A-stopped-B-stopped.scoresbug-5014-GROUP-A-stopped-B-stopped.scoresone-or-more-7.scoresone-or-more-7.scoresbug-5025-3.scoresbug-5069-op-enabled.scoresbundle-order-stop.scoresticket-primitive-8.scorescolocated-utilization-primitive-2.scoresrsc_dep3.scoresrec-node-14.scorescontainer-3.scorescontainer-3.scorescontainer-group-3.scorescontainer-group-3.scoresdate-3.scoresgroup5.scoresinc4.scoresinc6.scoresinterleave-1.scoresinterleave-stop.scorestags-location.scoresmigrate-3.scoresmigrate-4.scoresmigrate-stop.scoresmigrate-partial-2.scoresmigrate-partial-2.scoresmigrate-success.scoresmigrate-partial-2.scoresmigrate-partial-2.scoresmigrate-partial-2.scoresmigrate-success.scoresmigrate-partial-2.scoresmigrate-partial-2.scoresmigrate-success.scoresutilization.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresnotify-3.scoresnotify-3.scoresnotify-3.scoresordered-set-basic-startup.scoresyear-2038.scoresorder-wrong-kind.scoresorder-wrong-kind.scoresorder-wrong-kind.scoresorder-wrong-kind.scoresorder-serialize.scoresquorum-3.scorestemplate-order-2.scoresquorum-3.scoresorder6.scoresorphan-2.scoresorphan-2.scorestarget-0.scorestarget-0.scorestarget-0.scorestarget-0.scorestarget-0.scoresplacement-stickiness.scoresutilization-order3.scoreswhitebox-imply-stop-on-fence.scoresprobe-4.scoresprobe-target-of-failed-migrate_to-2.scoresutilization-order3.scorespromoted-2.scorespromoted-5.scorespromoted-failed-demote.scoresquorum-3.scoresquorum-3.scoresutilization-order3.scoresrec-node-7.scoresutilization-order3.scoresrec-node-7.scoresutilization-order3.scoresrec-node-7.scoresutilization-order3.scoresstopped-monitor-25.scoresstopped-monitor-05.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-25.scoresstopped-monitor-26.scoresremote-probe-disable.scoresremote-move.scoresremote-recover.scoresremote-recovery.scoresremote-recover-unknown.scoresrsc-sets-seq-true.scoresrsc_dep8.scoresrsc_dep8.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoressimple7.scoresstopped-monitor-26.scoressimple7.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-26.scoresstopped-monitor-27.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-26.scoresstopped-monitor-25.scoressuicide-not-needed-quorate.scoressuicide-not-needed-quorate.scoressuicide-not-needed-quorate.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp3.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp3.scoressystemhealthp3.scoresutilization-order3.scoresutilization-order3.scorestemplate-order-3.scorestemplate-order-2.scorestemplate-rsc-sets-3.scorestemplate-rsc-sets-3.scorestemplate-ticket.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-8.scoresticket-clone-24.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-8.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-8.scoresticket-clone-9.scoresticket-clone-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-8.scoresticket-group-8.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-8.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-8.scoresticket-group-9.scoresticket-group-9.scoresticket-group-8.scoresticket-group-9.scoresticket-group-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-8.scoresticket-primitive-8.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-8.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-8.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-8.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-promoted-3.scoresticket-promoted-7.scoresticket-promoted-8.scoresticket-promoted-24.scoresticket-promoted-3.scoresticket-promoted-3.scoresticket-promoted-3.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-9.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-7.scoresticket-promoted-8.scoresticket-rsc-sets-4.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-6.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresunfence-startup.scoresunfence-startup.scoresunmanaged-stop-2.scoresutilization-order3.scoreswhitebox-fail2.scoresdate-1.summarydate-1.summarysimple2.summarysimple2.summarysimple2.summarydate-1.summarydate-1.summaryone-or-more-7.summarybundle-order-stop.summarydate-3.summaryinterleave-3.summaryinterleave-3.summaryinterleave-3.summarytags-location.summarymigrate-stop.summarymigrate-fail-8.summarymigrate-fail-9.summaryrec-rsc-6.summarynotify-2.summaryorder-required.summaryorder-optional.summaryorder4.summaryorder6.summarytarget-0.summaryparams-5.summaryplacement-stickiness.summarypromoted-3.summaryrec-node-3.summaryrec-node-7.summaryremote-recovery.summaryrsc_dep8.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summarysuicide-not-needed-quorate.summarysystemhealthp1.summarysystemhealthn3.summarysystemhealthn3.summarysystemhealthp1.summarysystemhealthp3.summarysystemhealthp1.summarysystemhealthn3.summarysystemhealthp1.summarysystemhealthp3.summarytemplate-coloc-2.summarytemplate-coloc-2.summarytemplate-rsc-sets-3.summarytemplate-rsc-sets-3.summarytemplate-ticket.summaryticket-clone-7.summaryticket-clone-7.summaryticket-clone-8.summaryticket-clone-24.summaryticket-clone-22.summaryticket-clone-6.summaryticket-clone-6.summaryticket-clone-22.summaryticket-clone-6.summaryticket-clone-6.summaryticket-clone-22.summaryticket-clone-8.summaryticket-clone-6.summaryticket-clone-9.summaryticket-clone-6.summaryticket-clone-6.summaryticket-clone-7.summaryticket-clone-8.summaryticket-group-7.summaryticket-group-7.summaryticket-group-8.summaryticket-group-24.summaryticket-group-22.summaryticket-group-6.summaryticket-group-6.summaryticket-group-22.summaryticket-group-6.summaryticket-group-6.summaryticket-group-22.summaryticket-group-8.summaryticket-group-6.summaryticket-group-9.summaryticket-group-6.summaryticket-group-6.summaryticket-group-7.summaryticket-group-8.summaryticket-primitive-7.summaryticket-primitive-7.summaryticket-primitive-8.summaryticket-primitive-24.summaryticket-primitive-22.summaryticket-primitive-6.summaryticket-primitive-6.summaryticket-primitive-22.summaryticket-primitive-6.summaryticket-primitive-6.summaryticket-primitive-22.summaryticket-primitive-8.summaryticket-primitive-6.summaryticket-primitive-9.summaryticket-primitive-6.summaryticket-primitive-6.summaryticket-primitive-7.summaryticket-primitive-8.summaryticket-promoted-7.summaryticket-promoted-8.summaryticket-promoted-24.summaryticket-promoted-3.summaryticket-promoted-3.summaryticket-promoted-22.summaryticket-promoted-6.summaryticket-promoted-6.summaryticket-promoted-22.summaryticket-promoted-6.summaryticket-promoted-9.summaryticket-promoted-6.summaryticket-promoted-7.summaryticket-promoted-8.summaryticket-rsc-sets-4.summaryticket-rsc-sets-9.summaryticket-rsc-sets-8.summaryticket-rsc-sets-9.summaryticket-rsc-sets-9.summaryticket-rsc-sets-9.summaryticket-rsc-sets-9.summaryunmanaged-stop-2.summarybundle-order-stop.xmldate-3.xmlorder-optional.xmlrec-node-7.xmlremote-recovery.xmlrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpacemaker-2.1.5+20221208.a3f44794f-150500.6.17.1.src.rpmpacemaker-cts@@@@    /bin/sh/usr/bin/bash/usr/bin/python3pacemakerprocpspsmiscpython(abi)python3python3-psutilrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)2.1.5+20221208.a3f44794f-150500.6.17.13.63.0.4-14.6.0-14.0-15.2-14.14.3fwfifff]@ffff De,eee@eԔ@eԔ@e@e@e@e@eve]@e]@e\eV@eV@eV@dddC@d@d@d@dNdddd@dad @c1ck@ccFc#@c|c{h@clcb[cb[cGcEZcD @cD @cD @c6@c6@c2c,N@c,N@c,N@c,N@c,N@c,N@c,N@c,N@c)@c)@c)@c)@c)@c)@c)@c)@c)@c)@c)@c)@c)@c(Yc(Yc(Yc(Yc(Yc(Ybc@bc@bc@b?b?b?b?b?b?b?b?b?b@b@b@b@b@bb>b>b>b>b@bbb=b@bkbkbkb|bobobk@bk@bk@bk@bk@b_bMbI@bF@bDF@bBbA@b<]@b<]@b'E@b%b\@b\@b\@b~b8b8b8b8b b[@b[@b[@b[@b[@b[@a@a@a@a@a@a@a@a@a@a@a@a@a@a@aaa@a@a@a@a@a@ap@ap@ap@a@a@a;Ha;Ha;Ha;Ha;Ha;Ha;Ha9@a9@a9@a9@aS@aS@aS@aS@aS@aS@`i@`i@`i@`t`t`t`t`t`#@`#@`#@`#@`#@`W5@`W5@`W5@`W5@`W5@`U`U`U`U`T@`T@`P`P`P`P`P``@`@`______@_@_@_@__D@_D@_D@_D@_C_C_C_C_C_3_c^@@^W@^W@^W@^W@^?@^^^^>@^>@^I^@^^^^^@^@^@^@^@^@^s^^s^^s^^1s^0"@^&^&^g@^g@]@]]M@]@]])]@]z@]z@]x]L]@1@],j](v@];\Q\Q\@\@\Ɋ@\8\f\,@\@\\\\\@\@\~d\w@\R@\N\J@\I\E@Z= 150400 (bsc#1180966) - rpm: build with --enable-legacy-links only for suse_version < 1600 - rpm: build with --enable-compat-2.0 only for suse_version < 1600 (jsc#PED-106, jsc#PED-294) - rpm: build with --with-concurrent-fencing-default=true only for sle_version >= 150400 - rpm: build with --with-resource-stickiness-default=1 only for sle_version >= 150400 - rpm: build with --with-nagios=true only for suse_version < 1600 (jsc#PED-3877, jsc#PED-4446) - agents: create symlink ocf:pacemaker:NodeUtilization only for suse_version < 1600 in favor of ocf:heartbeat:NodeUtilization (bsc#1070347)- rpm: avoid bare wildcards under shared directories in spec- daemons: pacemakerd -S should wait for shutdown before returning (bsc#1210857) * bsc#1210857-0001-Low-daemons-pacemakerd-S-should-wait-for-shutdown-be.patch- fencer: fencing timeout sent to peer takes no delay into account (bsc#1210074) * bsc#1210074-0011-Fix-fencer-fencing-timeout-sent-to-peer-takes-no-del.patch - libpacemaker: initial timeout for fencing callback takes any requested fencing delay into account (bsc#1210074) * bsc#1210074-0010-Fix-libpacemaker-initial-timeout-for-fencing-callbac.patch - controller: use "target" terminology consistently (bsc#1210074) * bsc#1210074-0009-Log-controller-use-target-terminology-consistently.patch - controller: log fencing timeout consistently in seconds as priority fencing delay (bsc#1210074) * bsc#1210074-0008-Log-controller-log-fencing-timeout-consistently-in-s.patch - controller: initial timeout for fencing callback takes any priority fencing delay into account (bsc#1210074) * bsc#1210074-0007-Fix-controller-initial-timeout-for-fencing-callback-.patch - fencer: apply requested fencing delay only for the first device (bsc#1210074) * bsc#1210074-0006-Fix-fencer-apply-requested-fencing-delay-only-for-th.patch - fencer: fencing timeouts take any pcmk_delay_base into account (bsc#1210074) * bsc#1210074-0005-Fix-fencer-fencing-timeouts-take-any-pcmk_delay_base.patch - fencer: add correct values of pcmk_delay_base/max to query rely (bsc#1210074) * bsc#1210074-0004-Fix-fencer-add-correct-values-of-pcmk_delay_base-max.patch - fencer: per-operation fencing timeout takes any requested fencing delay into account (bsc#1210074) * bsc#1210074-0003-Fix-fencer-per-operation-fencing-timeout-takes-any-r.patch - fencer: total fencing timeout takes any requested fencing delay into account (bsc#1210074) * bsc#1210074-0002-Fix-fencer-total-fencing-timeout-takes-any-requested.patch - cts-fencing: regression test for fencing timeouts taking fencing delays into account (bsc#1210074) * bsc#1210074-0001-Test-cts-fencing-regression-test-for-fencing-timeout.patch- controller: avoid use-after-free when disconnecting proxy IPCs during shutdown (bsc#1209640) * bsc#1209640-0001-Fix-controller-avoid-use-after-free-when-disconnecti.patch- controller: Delay join finalization if a transition is in progress * 0001-Fix-controller-Delay-join-finalization-if-a-transiti.patch- extra/resources/SysInfo.in: This calculation of cpu_load returns an incorrect value in Darwin and Linux * 0001-Fix-extra-resources-SysInfo.in-This-calculation-of-c.patch- libcrmcommon: allow crm_attribute to try OCF_RESOURCE_INSTANCE environment variable if -p is specified with an empty string (bsc#1209586) * bsc#1209586-0001-Fix-libcrmcommon-allow-crm_attribute-to-try-OCF_RESO.patch - libcrmcommon: avoid libqb assertion * 0001-Low-libcrmcommon-avoid-libqb-assertion.patch- Revert "Fix: libpacemaker: ensure any pending recurring monitor gets updated if it fails" (bsc#1206263) * Drop obsolete bsc#1206263-0004-Fix-libpacemaker-ensure-any-pending-recurring-monito.patch - cts-regression: reflect any test failures again with the return code * 0001-Test-cts-regression-reflect-any-test-failures-again-.patch - tool: update crm_mon synopsis (bsc#1208868) * bsc#1208868-0001-Fix-tool-update-crm_mon-synopsis.patch- libcrmcommon: Don't parse "-INFINITY" as a list of cmdline options (CLBZ#5509) * CLBZ#5509-0001-Fix-libcrmcommon-Don-t-parse-INFINITY-as-a-list-of-c.patch - tools: crm_shadow --commit now works with CIB_file * 0001-Fix-tools-crm_shadow-commit-now-works-with-CIB_file.patch - watchdog-fencing: correctly derive timeout with topology * 0003-Fix-watchdog-fencing-correctly-derive-timeout-with-t.patch * 0002-Refactor-watchdog-fencing-convenience-function-pcmk_.patch - watchdog-fencing: terminate dangling timer before watchdog-waiting * 0001-Fix-watchdog-fencing-terminate-dangling-timer-before.patch - libcrmcommon: Fix problems with pcmk__output_and_clear_error. * 0001-Low-libcrmcommon-Fix-problems-with-pcmk__output_and_.patch- libcrmcommon: Fix handling node=NULL in pcmk__attrd_api_query. * 0001-High-libcrmcommon-Fix-handling-node-NULL-in-pcmk__at.patch - fencer: Avoid double source remove of op_timer_total (rh#2166967) * rh#2166967-0002-Fix-fencer-Avoid-double-source-remove-of-op_timer_to.patch- fencer: Prevent double g_source_remove of op_timer_one (rh#2166967) * rh#2166967-0001-Fix-fencer-Prevent-double-g_source_remove-of-op_time.patch - scheduler: handle cleaned migrate_from history correctly (bsc#1182313) * bsc#1182313-0005-Test-scheduler-update-expected-output-for-migration-.patch * bsc#1182313-0004-Fix-scheduler-handle-cleaned-migrate_from-history-co.patch * bsc#1182313-0003-Test-scheduler-add-regression-test-for-migration-int.patch - scheduler: unknown_on_node() should ignore pending actions (bsc#1182313) * bsc#1182313-0002-Low-scheduler-unknown_on_node-should-ignore-pending-.patch * bsc#1182313-0001-Refactor-scheduler-improve-xpath-efficiency-when-unp.patch- libpacemaker: avoid assertion failure if a node_state entry doesn't have an uname yet (bsc#1207319) * bsc#1207319-0002-Fix-libpacemaker-avoid-assertion-failure-if-a-node_s.patch - libpacemaker: unify bailing out in pcmk__inject_node() (bsc#1207319) * bsc#1207319-0001-Refactor-libpacemaker-unify-bailing-out-in-pcmk__inj.patch- executor: fix regression in remote node shutdown * 0001-High-executor-fix-regression-in-remote-node-shutdown.patch- cts-scheduler: update test for preventing inactive instances from starting if probe is unrunnable on any nodes (bsc#1206263) * bsc#1206263-0006-Test-cts-scheduler-update-test-for-preventing-inacti.patch - scheduler: prevent inactive instances from starting if probe is unrunnable on any nodes (bsc#1206263) * bsc#1206263-0005-Fix-scheduler-prevent-inactive-instances-from-starti.patch - libpacemaker: ensure any pending recurring monitor gets updated if it fails (bsc#1206263) * bsc#1206263-0004-Fix-libpacemaker-ensure-any-pending-recurring-monito.patch - cts-scheduler: update test for preventing a leftover pending monitor from causing unexpected stop of other instances (bsc#1206263) * bsc#1206263-0003-Test-cts-scheduler-update-test-for-preventing-a-left.patch - scheduler: prevent a leftover pending monitor from causing unexpected stop of other instances (bsc#1206263) * bsc#1206263-0002-Fix-scheduler-prevent-a-leftover-pending-monitor-fro.patch - cts-scheduler: add test for preventing a leftover pending monitor from causing unexpected stop of other instances (bsc#1206263) * bsc#1206263-0001-Test-cts-scheduler-add-test-for-preventing-a-leftove.patch- Update to version 2.1.5+20221208.a3f44794f (Pacemaker-2.1.5): - libs: Check for NULL in various functions. - daemons: Check for NULL in attrd_create_attribute.- Update to version 2.1.4+20221122.631339ca5 (Pacemaker-2.1.5-rc3): - libcrmcommon: Wait for ACKs from the attrd clear failure command. - daemons: Fix expanding ++ and += in multi-update IPC messages. - daemons: Add host attr to the children of multi-update IPC messages. - daemons: Copy all attrs from parent to child in multi-update IPC.- Update to version 2.1.4+20221115.d3699a621 (Pacemaker-2.1.5-rc2): - tools: quote timestamp in operation history output (bsc#1205279, bsc#1204581) - tools: Fix setting utilization attrs with crm_attribute. - cts-cli: add test for text output of crm_resource --list-operations/-O (bsc#1205279, bsc#1204581) - daemons: Set an attribute on the child of a multi-attr message. - scheduler: consider roles when blocking colocation dependents - scheduler: when blocking starts, block children's starts as well- Update to version 2.1.4+20221108.ba419204a: - tools: crm_resource --constraints now accepts --force - tools: crm_resource --constraints --recursive - tools: fix syntax on resetting options in crm_resource (bsc#1198409)- Update to version 2.1.4+20221031.0b3656e85: - scheduler: prioritize group colocations properly - scheduler: ignore empty groups in pcmk__add_colocated_node_scores() - scheduler: properly consider effect of "with group" colocations - scheduler: ensure group methods handle empty groups - scheduler: improve error handling when unpacking resources- Update to version 2.1.4+20221024.844c0640d (Pacemaker-2.1.5-rc1): - fencer: compare fence action names case-sensitively - fencer: check "on" support when checking whether device can fence - fencer: improve eligibility logs - fencer: improve argument validation and variable names- Update to version 2.1.4+20221012.44db4ca5e: - libpacemaker: Correct sys_from default in pacemakerd_health() - tools: crm_mon --one-shot fails while pacemaker is shutting down (CLBZ#5501) - libpacemaker: Fix pacemakerd-health XML output - libpacemaker: HTML formatter for pacemakerd-health message - libpacemaker: Memory leak in pcmk_cluster_queries.c:ipc_connect() - libpacemaker: pacemakerd-health message accepts state - libpacemaker: Correct default for pinged_buf in pacemakerd_event_cb - libcrmcommon: Check invalid time value in pacemakerd API reply - pacemaker-remoted: fix detection of __progname - libcrmcommon: avoid memory leak in crm_time_subtract() - fencer: skip "on" in remapped reboot when agent doesn't support it - fencer: skip "on" in remapped reboot when pcmk_reboot_action="off"- Update to version 2.1.4+20221010.79db170a4: - controller: connect before updating node attribute list - controller: log attribute errors correctly- Update to version 2.1.4+20221006.d82151006: - various: remove support for versioned agent parameters- Update to version 2.1.4+20221006.5cb4f0b94: - extra: skip ifspeed agent's host check at default check level - extra: avoid deprecated command-line option in ifspeed agent - extra: improve messages in ocf:pacemaker:ifspeed agent - resources: ifspeed iface parameter is not required - resources: update ifspeed agent to OCF 1.1 - extra: update ifspeed agent to avoid legacy terminology- Update to version 2.1.4+20221005.8c568f599: - scheduler: improve resource action ordering messages- Update to version 2.1.4+20220929.708e532ba: - fencer: don't try to free NULL GString - scheduler: don't demote on expected node - libcrmcommon: assert on UUID generation failure- Update to version 2.1.4+20220928.4690461db: - fenced: Add automatic_list devices to unfencing timeout when topology is presents. - controld: Add missing option descriptions - libcrmcommon: copy result reason/stdout/stderr correctly - executor: work around flag value mistake - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Rename libraries in accordance to the packaging guidelines to solve potential migration issue on SLE 15 SP5 (bsc#1203744)- Update to version 2.1.4+20220920.4313595c6: - controller: add messages when getting agent metadata - liblrmd: use resource ID for metadata actions when available - liblrmd: consider invalid agent specification a fatal error - libcrmcommon: map ENODEV and ENOENT to CRM_EX_NOSUCH - libstonithd: return CRM_EX_NOSUCH for bad agent namespace - controller: pre-load agent metadata asynchronously - controller: improve messages when metadata cache update fails - controller: add failsafe for no executor connection - libcrmcommon: deprecate CRM_OP_LRM_QUERY - controller: ignore CRM_OP_LRM_REFRESH - fencing: use requested timeout with RHCS metadata actions - fencing: use a default timeout with metadata and validate - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.1.4+20220919.c650a480e: - libcrmcommon: Ignore non-comment/element nodes in pcmk__xml_log() - libcrmcommon: Prevent buffer overflow in pcmk__element_xpath() (rh#1822125) - libpe_status, tools: Show guest node host only with --show-detail (CLBZ#5373) - libpe_status, tools: Show container node in GuestOnline in crm_mon (CLBZ#5373)- Update to version 2.1.4+20220919.9ba3fcd8a: - libpe_status,tools: work with -D_TIME_BITS=64- Update to version 2.1.4+20220915.2e7d3dc92: - tools: Add locked_to= to resources XML output - schemas: Add locked_to= to resources API schema- Update to version 2.1.4+20220913.76eb273f1: - schemas: Add schema for crm_error - libcrmcommon: Bump feature set for crm_error formatted output - tools: Use formatted output in crm_error- Update to version 2.1.4+20220913.9baec5d68: - fenced: Skipping devices that don't support the on action.(Fix:CLBZ#5495)- Update to version 2.1.4+20220912.dab392c41: - libpe_status: Deprecate "collocated" meta attribute for groups - libpe_status: Deprecate "ordered" meta attribute for groups - libpacemaker: Deprecate {with-,}rsc-instance in coloc constraints - libpacemaker: Deprecate {first,then}-instance in order constraints - schemas: Deprecate pacemaker-next and constraints-next- Update to version 2.1.4+20220912.99c8b14fc: - controller: Resource reordering doesn't cause transition abort- Update to version 2.1.4+20220912.7bce48ad0: - libcrmcommon: lower clients-at-exit message to warning - scheduler: Fix types of arguments to formatted output functions. - schemas: Make score[-attribute] optional for rules - schemas: Add missing valid options for duration and date_spec - schemas: Add missing valid date expr rule options - tools: Use dynamic widths in crm_error list - tools: crm_error should use last rc format given - tools: List all RCs if none are specified for crm_error - crm_error: Handle negative return code arguments - scheduler: simplify some messages with node names - Rebase: * bug-943295_pacemaker-lrmd-log-notice.patch- Update to version 2.1.4+20220907.aa8d5599a: - resources, tools: Drop SystemHealth, ipmiservicelogd, ...- Update to version 2.1.4+20220906.71885fb7c: - schemas: crm_resource --validate validation fails (rh#2123727)- Update to version 2.1.4+20220901.df90a631e: - tools: Don't use fprintf in attrd_updater. - daemons: Don't attempt to update the delay of an unknown attr. - tools: If -B/-Y is given to attrd_updater, check for -d as well. - daemons: Initial new server-side IPC support in attrd. - libpacemaker: Standardize rule check error processing - libpacemaker: EOPNOTSUPP for date_spec with moon in rule check - tools: Improve crm_rule invalid date error message - scheduler: disallow recurring reload-agent, migrate_from, and migrate_to- Update to version 2.1.4+20220831.a81e8740b: - SysInfo: Validate that min_disk_free contains an integer optionally followed by a unit - SysInfo: Fix typo - SysInfo: Implement the reload-agent action - SysInfo: Add reloadable to appropriate entries - SysInfo: Enumerate appropriate values - SysInfo: Add unique-group to appropriate entries - SysInfo: Remove unique from all entries - SysInfo: Update OCF version to 1.1- Update to version 2.1.4+20220830.68c64fbe1: - libcrmcommon: Wait for ACKs from the attrd refresh command.- Update to version 2.1.4+20220829.08693870a: - libcib: cib__signon_query(): NULL-check correct pointer - libcrmcommon: Out-of-order pcmk__rc_info array - scheduler: rename pcmk__native_allocate() - pacemaker-based: update primary terminology in messages and comments- Update to version 2.1.4+20220825.c190d0d37: - fencer: improve self-fencing logs - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.1.4+20220825.b676a8701: - libcrmcommon: NULL-check pcmk__numeric_strcasecmp() - libpe_status: Let pe__cmp_node_name() handle NULL values - Rebase: * pacemaker-Wno-format-signedness.patch- Update to version 2.1.4+20220824.ad5b410ae: - controld: Check all crm_is_true cases for globally-unique - controld: Update for OCF 1.1 - resources: Use runstatedir in controld RA - Rebase: * bug-977201_pacemaker-controld-self-fencing.patch- Update to version 2.1.4+20220823.7f07bda79: - fenced: DC node fencing is unconditionally relayed.- Update to version 2.1.4+20220822.367ae2d64: - libcrmcommon: Validate env option strings- Update to version 2.1.4+20220822.0b28d46b2: - cts: Reimplement cts-regression in Python - libcrmcommon: Free the output object if fopen fails. - libcrmcommon: Set formatters to NULL after freeing it. - libcrmcommon: Don't allow registering a format with an empty name. - ClusterMon: Update deprecated -h flag - ClusterMon: Add OCF_CHECK_LEVEL handling in the validate-all action - ClusterMon: Update resource-agent version to 1.2 - ClusterMon: Add unique-group to appropriate entries - ClusterMon: Remove unique from all entries - ClusterMon: Update OCF version to 1.1- Update to version 2.1.4+20220817.ad32bc505: - rpm: Requires python-psutil for cts - pacemakerd: improve core file limit messages - fencer: log target consistently - fencer: improve error-checking of request XML - fencing: rename fence action IDs- Update to version 2.1.4+20220816.71d8af5c0: - daemons: Correct an error message. - libcrmcommon: crm_generate_ra_key should fail if std or key are missing.- Update to version 2.1.4+20220810.b794021e6: - tools: correct minimum execution status shown by crm_resource -O (bsc#1205279, bsc#1204581)- Update to version 2.1.4+20220808.e445c8a8b: - libpacemaker: Free the CIB copy in pcmk__status. - pacemaker: Free the CIB copy in pcmk__output_cluster_status. - libpacemaker: Free the working set in pcmk__output_cluster_status. - libcrmcommon: drop DOCTYPE from daemon option meta-data - pacemakerd: lower level of messages about core file size- Update to version 2.1.4+20220808.799e2c327: - executor: don't finalize a failed monitor initiation twice- Update to version 2.1.4+20220808.986d22dd5: - libcrmcommon: Fix an IPC-related memory leak. (bsc#1208544)- Update to version 2.1.4+20220802.1e2d5eacf: - tools: Restrict ourselves to XML elements in command_query. - tools: Support regexes with crm_attribute --delete and --update. - libcrmservice: fix the trace logging about finishing reading stdout/stderr - scheduler: avoid "left-hand"/"right-hand" terminology in colocation logs- Update to version 2.1.4+20220725.bbb0e1b04: - tools: Add the -q option back to attrd_updater. (rh#2110452)- Update to version 2.1.4+20220725.90ed6fe66: - daemons: Fix a bug processing child XML messages in attrd.- Update to version 2.1.4+20220720.51519cdf8: - HealthCPU: Complete implementation of the reload-agent action - libcrmcommon: Check for NULL input - ACLs: bail out early when creating element that'll be denied anyway- Update to version 2.1.4+20220720.a0a66eefe: - scheduler: calculate digests based on the crm_feature_set version of the cib if there's no corresponding operation history entry - libpacemaker: correctly find the best operation history entry to calculate digests for - scheduler,controller: consistently calculate and record secure digest based on all parameters only except private ones - scheduler: restart a resource configured with extra operation parameters upon changes of any parameters- Update to version 2.1.4+20220720.3b57f9b58: - scheduler: avoid container ping-pong - Rebase: * pacemaker-nagios-plugin-dir.patch * pacemaker-Wno-format-signedness.patch- Update to version 2.1.4+20220719.6bf20e794: - tools: Fix a segfault in error handling in crm_resource. (clbz#5496, bsc#1206761)- Update to version 2.1.4+20220718.f11308913: - do unfencing equally for cluster-nodes & remotes- Update to version 2.1.4+20220714.2ab4412e6: - HealthCPU: Validate that yellow_limit and red_limit are integers - HealthCPU: Update resource-agent version to 1.1 - HealthCPU: Add OCF_CHECK_LEVEL handling in the validate-all action - HealthCPU: Implement the reload-agent action - HealthCPU: Add reloadable to appropriate entries - HealthCPU: Add unique-group to appropriate entries - HealthCPU: Remove unique from all entries - HealthCPU: Update OCF version to 1.1- Update to version 2.1.4+20220714.cbbaf0b40: - daemons: Convert schedulerd's hello message into a handler. - daemons: Convert schedulerd's one message to new IPC handling. - daemons: Use new IPC handling for unknown schedulerd messages.- Update to version 2.1.4+20220713.b162888bf: - scheduler: Resolves an issue where STONITH devices cannot be registered.- Update to version 2.1.4+20220712.37b09e240: - libcrmcommon: Remove double "error:" prefixes from messages. - daemons: Convert pacemakerd's shutdown message to new IPC handling. - daemons: Convert pacemakerd's ping message to new IPC handling. - daemons: Use new IPC handling for some pacemakerd messages. - scheduler: calculate group promotion scores correctly- Update to version 2.1.4+20220707.4d02a795b: - controller: log an info instead of a warning for a stonith/shutdown that is unknown to the new DC (bsc#1198715)- Update to version 2.1.4+20220707.5e75c2173: - schemas: update crm_resource --why schema for new health check - schemas: simplify crm_resource --why schema - tools: correct crm_resource --why schema to match actual output - tools: crm_resource --why now checks node health status - tools: crm_resource is-managed check should use meta-attribute table - tools: crm_resource target-role check should use meta-attribute table- Update to version 2.1.4+20220706.6b53629d2: - libcrmcommon: no need for "Cleaning up memory" message - libcrmservice: fix log message arguments - libcrmcommon: don't try to log NULL - various: improve messages that use pcmk__s() - fencer: improve topology level validation - scheduler: improve validation of resource XML - libcib: validate requests better - libcrmcommon: validate pacemaker-schedulerd messages better - libcrmcommon: validate pacemakerd messages better - libcrmcommon: validate controller IPC messages better - libcrmcommon: validate attribute manager IPC messages better - pacemaker-schedulerd: validate IPC messages better - pacemakerd: validate IPC messages better - controller: improve logs when routing messages - controller: validate transition requests better - controller: validate controller requests better - controller: validate execution requests better- Update to version 2.1.4+20220705.e7507cee6: - libstonithd: Add the "Agent not found..." message to formatted output. (rh#2102292)- Update to version 2.1.4+20220705.c6fdc985f: - attrd: improve dampening logs - tools: improve error message wording in crm_resource- Update to version 2.1.4+20220630.8b0f865f4: - Always null-check result in stonith__rhcs_get_metadata (rh#2102292) - Use failed action result in rhcs_validate and _get_metadata (rh#2102292) - Use correct boolean in stonith__validate_agent_xml (rh#2102292)- Update to version 2.1.4+20220628.c791e26c4: - scheduler: don't prefer greater anti-colocation when ordering instances for assignment - scheduler: compare instance numbers not IDs for assignment order- Update to version 2.1.4+20220628.36c594099: - daemons: Atomically set certain attrs in controld.- Update to version 2.1.4+20220628.2120dad10: - cts-scheduler: add missing last-rc-change attributes to the faked lrm_rsc_op entries (bsc#1182313) - scheduler: a failed migrate_from always matters for the source if the resource has no newer state there (bsc#1182313) - scheduler: a failed migrate_to always matters for the source if there's no newer non-monitor operation there (bsc#1182313) - scheduler: use the consistent way to check whether there's any newer non-monitor operation on the source (bsc#1182313) - cts-scheduler: add missing last-rc-change attributes to the faked lrm_rsc_op entries (bsc#1182313) - cts-scheduler: update expected output for changes of handling a failed migrate_to (bsc#1182313) - scheduler: a failed migrate_to always matters for the target if the resource has no newer state there (bsc#1182313) - scheduler: use the consistent way to check whether resource has newer state on the target (bsc#1182313) - cts-scheduler: prevent resources from running on multiple nodes due to partial live migration (bsc#1182313) - scheduler: prevent resources from running on multiple nodes due to partial live migration (bsc#1182313) - cts-scheduler: update expected output for changes of handling a successful migrate_to (bsc#1182313) - scheduler: a successful migrate_to no longer matters for the target if any newer probe/monitor indicates the resource was not running there (bsc#1182313) - scheduler: a successful migrate_to no longer matters for the target if there's any newer non-monitor operation there (bsc#1182313) - scheduler: a successful migrate_to no longer matters for the source if there's any newer non-monitor operation there (bsc#1182313) - scheduler: add a parameter to pe__is_newer_op() indicating whether the two operations are on the same node by default (bsc#1182313) - libpacemaker: record migrate_to/migrate_from separately from last/last_failure lrm_rsc_op entries (bsc#1182313)- Update to version 2.1.4+20220627.812442e7f: - tools: Don't output "(null)" in crm_attribute's quiet mode. (rh#2099331)- Update to version 2.1.4+20220615.ce53c2c3f: - libcrmcommon: use proper size for snprintf() - Allow acl_target and acl_group elements to take a 'name' attribute to use a name different from 'id' - Add ACL group support - daemons: Allow setting multiple node attributes. - libcrmcommon: finish XML for libpacemaker public API function errors - libcrmcommon: Wait for replies to attrd update messages. - libstonithd: use case-sensitive comparisons where appropriate - daemons: Track the minimum attrd protocol version. - remote: Shutdown if tls goes down while waiting for shutdown all-clear - libcrmcommon: fix a wrong separator in the .warning CSS declaration (bsc#1196673, bsc#1203367, fate#320759) - tools: report CRM feature set of nodes by crm_mon (bsc#1196673, bsc#1203367, fate#320759) - controller: record CRM feature set as a transient attribute (bsc#1196673, bsc#1203367, fate#320759) - schemas: copy API schemas in preparation for changes (bsc#1196673, bsc#1203367, fate#320759) - cts-cli: fix too greedy version filter (bsc#1196673, bsc#1203367, fate#320759) - tools: Support regexes with --query in crm_attribute. - tools: Support querying all attributes on a given node. - nls: format of XML-escaped string - scheduler: do not enforce resource stop if any new probe/monitor indicates the resource was not running on the target of a failed migrate_to (bsc#1196340) - scheduler: do not enforce resource stop on a rejoined node that was the target of a failed migrate_to (bsc#1196340) - scheduler: do not enforce resource stop if any new probe/monitor indicates the resource was not running on the target of a failed migrate_to (bsc#1196340) - scheduler: find_lrm_op() to be able to check against a specified target_rc (bsc#1196340) - cts-scheduler: fix on_node attribute of lrm_rsc_op entries in the tests (bsc#1196340) - scheduler: is_newer_op() to be able to compare lrm_rsc_op entries from different nodes (bsc#1196340) - scheduler: compare ids of lrm_rsc_op entries case-sensitively (bsc#1196340) - scheduler: functionize comparing which lrm_rsc_op is newer (bsc#1196340) - scheduler: do not enforce resource stop on a rejoined node that was the target of a failed migrate_to (bsc#1196340) - tools: Fix deleting by pattern in crm_attribute. - tools: Use new attrd IPC interface in various tools. - daemons: Use new IPC interface in pacemaker-controld... - daemons: Use new IPC interface in pacemaker-attrd... - tools: Convert attrd_updater to using new attrd IPC. - Add pacemaker-controld Chinese translation - fencer: avoid redundant result in XML - fencing: add device/level description to configuration change notifications - fencing: always add notification type to client notification data - fencer: always add device ID to level removal notification - fencer: always add device ID to level addition notification - fencer: always add device ID to device addition notification - fencer: avoid memory leaks when processing topology requests - tools: respect crm_mon --show-detail for fencing actions - fenced: Don't ignore CIB updates if stonith-enabled=false - Fix print spec for unsigned int count - libcrmcommon: Process the cmdline before saving as a request. - tools: add more detail to stonith_admin error messages - daemons: Use formatted output in pacemaker-attrd. - Convert pacemaker-attrd to use glib for command line. - tools: Convert iso8601 to using glib for command line. - libcib: Check for NULL before calling g_ascii_strdown. - fencing: prefer same delegate when checking equivalent fencing - fencing: show delegate for later successful fencing actions - fencer: make completion logs more consistent - fencer: deprecate stand-alone mode - tools: stonith_admin should display device/level errors - executor: improve messages after fencing connection loss - fencing: delegate shouldn't matter when checking equivalent fencing - controller: downgrade successful fencing logs to info - fencer: downgrade topology failure message to info level - fencer: lower eligibility logs to info level - fencer: log raw XML at trace level - fencer: log device only if not null - Rebase: * bug-812269_pacemaker-fencing-device-register-messages.patch- Update to version 2.1.4+20220615.dc6eb4362 (Pacemaker-2.1.4)- Update to version 2.1.3+20220608.d7fce3868: - libstonithd: pull exit reason directly from history replies - fencer: assume unknown status from older fencers' history replies - resources: add SystemHealth parameter to its meta-data - resources: remove no-longer-relevant DTD reference from meta-data - resources: typo in HealthSMART meta-data- Update to version 2.1.3+20220603.ea9bebf6c (Pacemaker-2.1.4-rc1): - fencer: avoid use-after-free with self-fencing and topology - fencer: get target-by-attribute working again - libcrmcommon: fix a wrong separator in the .warning CSS declaration - fencer: avoid memory leaks when processing topology requests - Fix print spec for unsigned int count - fencing: delegate shouldn't matter when checking equivalent fencing- Update to version 2.1.3+20220601.da2fd79c8 (Pacemaker-2.1.3)- Use the project upstream name for the -devel subpackage (rename libpacemaker-devel to pacemaker-devel). - Drop libpacemaker3-cluster separation, since it double-ships a file that is already in libpacemaker3 - Rename libpacemaker3 to pacmekaer-libs following packages like xrootd-libs et al so it does not get picked on by rpmlint [boo#1191752].- Update to version 2.1.2+20220526.b387f8972: - libcrmcommon: avoid memory leak if IPC server fails to run - nls: format of XML-escaped string- Update to version 2.1.2+20220518.dff7c3a72 (Pacemaker-2.1.3-rc2): - schemas: Use fence-event-2.15.rng (rh#2086230) - scheduler: don't support versioned instance attributes in operations - schemas: allow Promoted/Unpromoted in crm_resource output- Update to version 2.1.2+20220511.0bf080da3: - tools: Set options.command when "attrd_updater -Y" is used.- Update to version 2.1.2+20220427.c01a90fd2: - tools: Hook up the verbosity flag in crm_attribute. (gh#ClusterLabs/pacemaker#2696, bsc#1224183) - tools: Honor CIB_file when doing node name lookups in crm_attribute. - tools: Handle a remote node's name differing from its hostname. - libcrmcommon: Fix a bug in processing multiple IPC messages. - libcrmcommon: Add EAGAIN as a return code from crm_ipc_read. - libcrmcommon: Handle IPC ACKs from proxied connections too. - fenced: Correctly log the total fencing timeout. - scheduler: make multiple-active="stop_unexpected" actually work - libcib: Check for NULL before calling g_ascii_strdown.- Update to version 2.1.2+20220421.a988afd4e (Pacemaker-2.1.3-rc1): - libpe_status: deprecate node_ping - fencer: avoid core dump at exit - fix Chinese garbled - fencer: don't use constant within translatable string literal - libcrmcommon: fix NLS issues with option meta-data- Update to version 2.1.2+20220414.8cfa69660: - tools: set command for `crm_resource -q/--query-xml` before changing any options (bsc#1198409) - tools: prevent possible crm_resource segfaults if multiple commands are specified (bsc#1198409) - tools: set commands in crm_resource before changing any options (bsc#1198409)- Update to version 2.1.2+20220412.826f287ac: - schemas: update some API schemas for node health change - tools: add node health to crm_mon output - libpe_status: tweak HTML output for node names - libcrmcommon: tweak HTML CSS - libpe_status: show node status components in separate HTML spans - libpe_status: remove stray space from HTML class name- Update to version 2.1.2+20220412.bd19767c9: - libcib: Fix handling the return value of cib_internal_op.- Update to version 2.1.2+20220408.6321f6534: - libcrmcommon: bump feature set for multiple-active=stop_unexpected - scheduler: implement multiple-active=stop_unexpected - scheduler: log a warning if invalid value is given for multiple-active- Update to version 2.1.2+20220407.844c3972e: - scheduler: allow-unhealthy-nodes resource meta-attribute- Update to version 2.1.2+20220407.56d93678c: - tools: Handle an error case in crm_attribute. - tools: Convert crm_ticket to using glib for command line.- Update to version 2.1.2+20220405.1ec3db01e: - schemas: Add host= to crm_attribute schema. - libpacemaker: Don't output attribute settings for blank strings. - tools: Override the attribute text message in crm_attribute. - tools: Use the new attribute message in attrd_updater. - libpacemaker: Add host to the attribute message. - tools: Add formatted output boilerplate to attrd_updater. - fencer: drop useless logs- Create libltdl/config before autoreconf to fix an incompatibility with autoconf 2.71- Update to version 2.1.2+20220331.1ad8bbddd: - tools: Fix the -v option to attrd_updater.- Update to version 2.1.2+20220329.efdcb0bbf: - resources: Add an OCF_RESKEY_dampen parameter to HealthSMART. - resources: Mark HealthSMART parameters as reloadable. - resources: Also fix HealthSMART_monitor. - resources: Fix a bug in init_smart in HealthSMART. - resources: Fix the stop action in HealthSMART. - resources: Add an OCF_RESKEY_smartctl parameter to HealthSMART. - resources: update HealthSMART agent for OCF 1.1- Update to version 2.1.2+20220328.24d87d0b2: - tools: Do not allow certain operations on clone instances. - tools: Fix one method of restarting a cloned group. - tools: Fix restarting clone instances in crm_resource. (rh#1930578) - tools: If crm_resource is given an invalid node, error. - tools: Fix one way to restart a cloned primitive. - tools: Fix restarting implicit bundled resources without a host. - tools: Fix double free errors in crm_resource. - tools: Compare host names case insensitively...- Update to version 2.1.2+20220328.2dd22a9d7: - tools: Update a couple option help strings in attrd_updater. - Convert attrd_updater to use glib for cmdline handling.- Update to version 2.1.2+20220322.5129e5ca5: - tools: Add XML schema for the crm_attribute output. - tools: Fix indentation on crm_attribute help output. - tools: Finish using formatted output in crm_attribute. - tools: Switch crm_attribute to use formatted output. - schemas: Add a schema for the new crm_rule output. - tools: Allow passing -r to crm_rule more than once. - tools: crm_rule is no longer experimental. - tools: Convert crm_rule to formatted output. - rpm: Remove the coverage support from the spec file.- Update to version 2.1.2+20220309.d007690cb: - cibadmin to be able to "render" access mode for selected user- Update to version 2.1.2+20220307.022ae2d5f: - rpm: depend on gettext-tools instead of gettext - scheduler: Take case into account when finding resources. - scheduler: improve fencing-related messages- Update to version 2.1.2+20220304.b2c456e77: - pacemakerd: override locale earlier in start-up - libcrmcommon: initialize NLS only once - tools: Fix a corner case in crm_mon outputting. - tools: Always output to the HTML dest file. (clbz#5492) - scheduler: shutdown locks apply to group members, not group itself- Update to version 2.1.2+20220301.6981b549a: - libpacemaker: Fix a segfault in crm_mon.- Update to version 2.1.2+20220301.a5db0024f: - scheduler: properly set data set flags when scheduling actions - scheduler: determine cluster status more efficiently- Update to version 2.1.2+20220222.250a6b0d7: - rpm: add nls option- Update to version 2.1.2+20220217.578a0bc42: - libpacemaker: Add a public function for one-shot crm_mon mode.- Update to version 2.1.2+20220216.41a118c10: - NLS: expand translations to all executables - libcrmcommon: match allocation and free functions - executor: improve alert completion messages - libcrmservice: improve exit reasons for timeouts/signals - libcrmservice,tools: add more detail to exit reasons when available - controller: don't retry an invalid remote key - controller,fencer: add more detail to exit reasons when available - scheduler: improve "friendly" failed action output - libcrmservice: improve timeout message for alert agents - fencing: assert that fencing actions are non-recurring - libcrmservice: check parameter for NULL before dereferencing it - scheduler: improve messages for action configuration changes- Update to version 2.1.2+20220215.aa3779ec6: - Add pacemaker(pacemaker-based) resource translatefile- Update to version 2.1.2+20220215.c0ac153b7: - libcrmcommon: Escape option metadata descriptions. (rh#2050259) - libcrmservice: Escape systemd agent descriptions. (rh#2050259)- Update to version 2.1.2+20220215.80e43ec90: - libcrmservice: Additional metadata fix for systemd templates. (rh#2045096)- Update to version 2.1.2+20220214.81e6a29e4: - daemons: Add a longdesc to the pcmk_host_list parameter. - daemons: Put shortdesc after longdesc for parameters, too. (rh#2049722) - resources: Put shortdesc after longdesc in agents. (rh#2049722)- Update to version 2.1.2+20220207.58dccbae0: - libcommon: avoid race when process checked while going away - pkg-config: libpacemaker requires libstonithd and libcrmservice. - scheduler: assert on notification entry memory errors - scheduler: avoid notification problems if node names are unknown- Update to version 2.1.2+20220126.16c1bab10: - controller: correctly match "node down" events - controller: improve meta-data warnings - scheduler: assert on memory allocation error - pacemakerd: improve messages for subdaemon handling- Update to version 2.1.2+20220126.57e783b4b: - libstonithd: avoid controld shutdown hanging - pacemakerd: have signal-handler take care of lost processes - scheduler: avoid memory leak when displaying clones - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.1.2+20220120.3f0398825: - scheduler: implement utilization for bundles - fencer: reset op result before grabbing new one (rh#1470834) - schemas: update fence-event API schema for recent change (rh#1470834) - fencing: display exit reasons with failed fencing events (rh#1470834) - fencing: return exit reason with fencing history (rh#1470834) - fencer: track full result in fencing history (rh#1470834)- Update to version 2.1.2+20220119.2c937a4c0: - ipc_client: use libqb async API for connect - pacemakerd: keep tracking pacemakerd for liveness - pacemakerd: tweak systemd unit respawn settings- Update to version 2.1.2+20220119.eec504705: - libcrmservice: improve exit reason for timeouts (rh#1470834) - fencing: improve exit reason for fencing timeouts (rh#1470834) - controller: improve exit reason for internal timeouts (rh#1470834) - controller,libpacemaker: make history XML creation less chatty (rh#1470834) - fencing: don't warn if cluster has no watchdog device (rh#1470834, bsc#1213125) - libcrmcommon: don't say "Unknown error" (rh#1470834) - libcrmcommon: improve description for "not connected" status (rh#1470834)- Update to version 2.1.2+20220118.de344dc33: - tools: Fix the show detail toggle in crm_mon. - corosync: Repeat corosync_cfg_trackstart - tools: Handle output format arguments before doing daemonize mode. - libpacemaker: avoid unnecessary limit on node names- Update to version 2.1.2+20220117.0fb17de37: - tools: get stonith_admin -T option working again (rh#1470834) - libpacemaker: compare fence action names case-sensitively - libpacemaker: return exit reason for fencer connection failures - tools: display failure reasons for stonith_admin fencing commands - libpacemaker: improve result for high-level fencing API - fencing: Don't set stonith action to pending if fork fails- Update to version 2.1.2+20220114.fb2dcedf1: - controller: compare case-sensitively where appropriate (rh#1470834) - controller,tools: improve description for fencing alerts/traps (rh#1470834) - controller: improve messages when handling fencing notifications (rh#1470834) - controller: compare fencing targets case-insensitively (rh#1470834) - scheduler: Use the old RC code to log maskable probe failures.- Update to version 2.1.2+20220113.7c94f0367: - liblrmd: Avoid double-free during notify operation (rh#2039675)- Update to version 2.1.2+20220112.b496b9826: - low: Remove "formerly called..." text in metadata output. - tools: Free metadata memory in crm_resource. - daemons: Use formatted output for metadata in schedulerd.- Update to version 2.1.2+20220112.c894b0aff: - fencing: add exit reason for results without a callback (rh#1470834) - executor: set exit reason if no fencer connection (rh#1470834) - executor: return an error for unsupported fence device actions (rh#1470834) - executor: don't require a fencer connection for probes (rh#1470834) - executor: improve result for fence device probes (rh#1470834) - executor,scheduler: treat "no secrets" fence results as a hard error (rh#1470834) - executor: use full result from fencer for fence actions (rh#1470834) - controller: improve fencing result messages (rh#1470834)- Update to version 2.1.2+20220112.69a63fb99: - scheduler: Handle masked probes in the scheduler. (rh#1506372) - include: Bump feature set to 3.12.0. - scheduler: Display the reason why a clone rsc probe failed. (rh#1506372) - scheduler: Display the reason why a native rsc probe failed. (rh#1506372) - scheduler: Don't output failed resource probes... (rh#1506372)- Update to version 2.1.2+20220112.08200a00e: - scheduler: use plural correctly for fail count messages - libcrmcommon: avoid file resource leak on decompression errors (clbz#5489) - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.1.2+20211223.94ced1fa9: - fencer: clarify timeout message (rh#1470834) - fencer: free result memory when processing fencing replies (rh#1470834) - fencer: restore check for invalid topology level target (rh#1470834) - fencer: pass full result when sending notifications (rh#1470834) - fencer: add full result to local replies (rh#1470834) - fencer: set exit reasons for fencing timeouts (rh#1470834) - fencer: set exit reason for timeouts waiting for peer replies (rh#1470834) - fencer: grab and log full result when processing peer fencing replies (rh#1470834) - fencer: pass full result in replies to requests (rh#1470834) - fencer: track and log full result when handling requests (rh#1470834) - fencer: handle topology level unregistration errors better (rh#1470834) - fencer: handle topology level registration errors better (rh#1470834) - fencer: pass full result in async command replies (rh#1470834)- Update to version 2.1.2+20211222.90769ae96: - libpacemaker: catch bugs scheduling actions on unclean nodes- Update to version 2.1.2+20211215.5f767500a: - fencer: get current time correctly - Merge: * 0001-Fix-fencer-get-current-time-correctly.patch - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.1.2+20211208.e3c53cabb: - fencer: avoid memory leak when broadcasting history differences- Update to version 2.1.2+20211206.3a6dc7c79: - scheduler: handle memory errors explicitly for friendly failure output - resources: use correct syntax in Stateful meta-data (rh#2027370) - resources: remove DOCTYPE from OCF 1.1-compliant agents - libcib: deprecate get_object_path() (clbz#5488) - various: perform XPath searches for CIB element names case-sensitively - libcib: compare section names case-sensitively for CIB modifications - controller,libcib,tools: handle CIB XPath searches better- Update to version 2.1.2+20211201.c93f6a460: - fencer: handle malformed topology level removal requests better (rh#1470834) - fencer: handle malformed manual confirmation requests better (rh#1470834) - fencer: return -ETIME for peer fencing timeouts (rh#1470834) - fencer: improve broadcasting replies for fenced originators (rh#1470834) - fencer,scheduler: compare fence action names case-sensitively (rh#1470834)- Update to version 2.1.2+20211201.18f4b5d83: - OCF: controld: Give warning when no-quorum-policy not set as freeze while using DLM (bsc#1129707) - libcrmservice: Handle systemd service templates. (rh#2003151)- Update to version 2.1.2+20211124.91f4bad83: - fencing: improve message for callback errors (rh#1470834) - fencing,executor: improve mapping of legacy return code to execution status (rh#1470834) - fencing: improve mapping of execution status to legacy return code - attrd: Change to determine the processing of attrd depending on the section replacement location of CIB. - based controld: Suppresses unnecessary Election execution. - based: Makes the replace notification a comparison base for the hash value of the section. - daemons: Convert schedulerd to the new IPC API. - daemons: Use formatted output for scheduler help, errors, etc. - Add a 'name' attribute to acl_target and acl_group elements (rh#1384420) - libcrmservice: downgrade failed action messages (rh#1470834) - fencer: improve messages for asynchronous results (rh#1470834) - fencer: handle dynamic target query failures better (rh#1470834) - fencing: set exit reason for internal execution errors (rh#1470834) - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- fencer: get current time correctly * 0001-Fix-fencer-get-current-time-correctly.patch- Update to version 2.1.2+20211124.ada5c3b36 (Pacemaker-2.1.2): - fencer: add missing space to topology message - controller: handle remote connection start timeouts correctly- Update to version 2.1.1+20211116.8db4569e4 (Pacemaker-2.1.2-rc2): - fencing: mark state as done if remapped "on" times out - Fix OCF_RA_INSTALL_DIR Autoconf variable name in pkg-config files - daemons: Free memory at the end of fail_pending_op.- Update to version 2.1.1+20211104.62c36e2b1 (Pacemaker-2.1.2-rc1): - Use user_include_exclude_cb in crm_mon more. (clbz#5485) - Only set default sections in crm_mon once. (clbz#5485) - fencer: improve messages for dynamic target queries (rh#1470834) - fencer: consolidate messages for asynchronous results (rh#1470834) - fencer: log a message when out of memory for dynamic target search (rh#1470834) - libcrmservice: distinguish local and global configuration errors (rh#1470834) - libcrmservice: improve messages for pre-execution failures in child (rh#1470834)- Update to version 2.1.1+20211028.70f82d2c0: - attrd: check election status upon loss of a voter to prevent unexpected pending (bsc#1191676)- Update to version 2.1.1+20211028.7ee8b5bdd: - tools: select technical or human-friendly output of failed actions (rh#1470834) - controller,executor: tweak action result messages (rh#1470834) - install init scripts only if not using systemd - executor: log execution status and exit reason with results (rh#1470834) - executor: improve result message (rh#1470834) - controller: log exit reason with action results (rh#1470834) - controller: make executor result messages more consistent (rh#1470834) - daemon metadata: Output OCF-1.1-style metadata for enum options - libcrmservice: avoid memory leak when checking systemd unit existence - fencer: avoid memory leak on async execution failure (rh#1470834) - fencer: report correct code for CIB secret failure (rh#1470834) - libcrmservice: improve exit codes for child execution failures (rh#1470834) - cib,pacemakerd,libcrmcommon,libcrmservice: improve child completion logs (rh#1470834) - executor: map nagios warnings to OCF "degraded" result code (rh#1470834) - schemas: update crm_resource API schema for --force-* changes (rh#1470834) - tools: show exit reason for crm_resource --force-* (rh#1470834) - daemons: Be more careful about restarting subdaemons. (clbz#5225) - daemons: Re-register UID/GID with corosync on restart. - tools: handle crm_resource --force-* failures consistently (rh#1470834) - tools: improve check for supported standards in crm_resource --force-* (rh#1470834) - tools: map LSB status to OCF correctly with crm_resource --force-check (rh#1470834) - tools: show detailed message with crm_resource --force-* failure (rh#1470834) - daemons: Correct which subdaemons need the cluster. - daemons: Keep track of which daemons need corosync. - libcrmservice: improve handling of too many nagios parameters (rh#1470834) - executor,libstonithd,libcrmservice: better error handling for generic actions (rh#1470834) - libcrmservice: set exit reason for some memory errors when creating action (rh#1470834) - executor,libcrmservice: set exit reason for invalid arguments (rh#1470834) - executor: use exit reason from service library when available (rh#1470834) - libcrmservice: set exit reason for internal errors (rh#1470834) - tools: avoid double free with crm_resource --force-* - tools: avoid error message when no stdout - fencing: improve error handling when executing fence actions (rh#1470834) - libcrmservice: check for memory errors when creating an action (rh#1470834) - executor,libcrmservice: don't overwrite execution status from execute_action() (rh#1470834) - executor,controller,libcrmservice: use PCMK_OCF_UNKNOWN_ERROR for timeouts (rh#1470834) - libcrmservice: don't assert for mainloop error (rh#1470834) - libcrmservice: ensure rc/status are set for meta-data failures (rh#1470834) - libcrmservice: ensure synchronous file action always sets rc and status (rh#1470834) - libcrmservice: use NAGIOS_STATE_UNKNOWN for internal nagios errors (rh#1470834) - libcrmservice: use standard-appropriate exit code for signal management failures (rh#1470834) - libcrmservice: properly detect systemd unit existence (rh#1470834) - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch * bug-943295_pacemaker-lrmd-log-notice.patch- Update to version 2.1.1+20210924.be206af22: - fenced: Change query timeout calculation. - resources: update HealthIOWait agent for OCF 1.1 - resources: add integer parameter validation to HealthIOWait - resources: fix HealthIOWait validate action- Update to version 2.1.1+20210923.ce81ff72e: - tools: Properly display supported output formats in crm_mon. - libcrmservice: avoid possible use-of-NULL - libcrmservice: update systemd agent meta-data for OCF 1.1 - libcrmservice: set default execution status for systemd actions to error (rh#1470834) - libcrmservice: ensure status is set when masking systemd errors (rh#1470834) - libcrmservice: ensure rc/status are set when parsing systemd results (rh#1470834) - libcrmservice: ensure execution status is set after parsing status result (rh#1470834) - libcrmservice: ensure rc/status are set after invoking systemd unit paths (rh#1470834) - libcrmservice: ensure rc/status are set after systemd LoadUnit calls (rh#1470834) - libcrmservice: ensure rc/status are set when loading systemd unit (rh#1470834) - libcrmservice: set rc and status appropriately for systemd timeouts (rh#1470834) - libcrmservice: handle corner cases when creating action (rh#1470834) - libcrmservice: always set rc/status when executing files (rh#1470834) - libcrmservice: always set rc/status when executing systemd actions (rh#1470834) - libstonithd: check libcrmservice status rather than exit code for timeouts (rh#1470834) - fencer: avoid assertions in delegate_from_xml() - scheduler: quote execution status in failed action output (rh#1470834) - liblrmd: don't mask errors from sending IPC (rh#1470834) - executor: set exit reason for stonith resource action failures (rh#1470834) - controller: set exit reason for executor communication timeout (rh#1470834) - controller: use OCF timeout exit code for executor communication timeout (rh#1470834) - controller: set exit reason when using synthesize_lrmd_failure() (rh#1470834) - controller: set exit reason when using fake_op_status() (rh#1470834) - controller,libpacemaker: set exit reason for internal errors (rh#1470834)- Update to version 2.1.1+20210910.89c5b06a3: - controller: use "not connected" status for remote execution failure (rh#1470834) - controller: send error reply if can't initiate action via executor (rh#1470834) - controller: improve messages for failed resource agent actions (rh#1470834) - tools: better error message if crm_resource can't create action (rh#1470834) - controller: set exit reason when remote connection start fails (rh#1470834) - tools: better error messages for crm_resource executor failures (rh#1470834) - fenced: add support for mapping pcmk_delay_base pr node - scheduler: use existing epoch-to-string function in failed action display (rh#1470834) - scheduler: add exit reason to failed action string only if present (rh#1470834) - scheduler: add timing details to failed action strings only when available (rh#1470834) - scheduler: ensure failed action display handles NULL values (rh#1470834) - fence_watchdog: fix malformed xml in metadata - fenced: support escaped characters as values in pcmk_host_map - fenced: Added nanosecond field to operation completion data. - controller: use sensible message for poke of disconnected executor (rh#1470834) - controller: improve messages for remote executor connection failure (rh#1470834) - controller: improve message for failed local executor connection (rh#1470834) - scheduler: reword "multiply active" message (rh#1470834) - libcrmcluster: reword initial quorum message (rh#1470834) - libcrmcluster: downgrade message for CPG messages sent (rh#1470834) - scheduler: improve migration threshold message (rh#1470834) - fencer: downgrade reboot remapping to notice - controller: handle malformed CIB diffs better - scheduler: avoid memory leak for invalid ordering constraints - scheduler: improve bad id-ref handling - scheduler: downgrade inverse ordering failure to warning - fence_watchdog: fix version output needed for help2man - rpm: package fence_watchdog in base-package - watchdog-fencing: Silence warning without node restriction - tools: If there are no nodes, don't add an extra blank line. - watchdog-fencing: allow restriction to certain nodes- pacemaker.rpmlintrc: filter out shlib-policy-name-error (bsc#1191776)- Update to version 2.1.1+20210909.77db57872 (Pacemaker-2.1.1): - liblrmd: avoid segfault on TLS connection errors - tools: Fix a segfault when calling "crm_simulate -U". - tools: make exit-code stdout/stderr consistent with --version- Update to version 2.1.0+20210816.c6a4f6e6c (Pacemaker-2.1.1-rc3) : - crm_resource: translate LSB rc to exit code and fix resources_find_service_class() call - controller: ensure newly joining node learns the node names of non-DCs (bsc#1180618) - controller: ensure lost node's transient attributes are cleared without DC (rh#1986998)- Update to version 2.1.0+20210806.a64ad221a (Pacemaker-2.1.1-rc2): - pacemakerd: show correct error message if can't request shutdown - scheduler: Output the clone header if there are no instances. - scheduler: Sort brief output of resources. - scheduler: Fix display of active resources on offline nodes. - tools: avoid memory leaks in crm_mon (bsc#1211678) - tools: avoid (insignificant) memory leaks (bsc#1211678)- Update to version 2.1.0+20210727.9e3a841a3 (Pacemaker-2.1.1-rc1): - scheduler: Fix XML output of cloned groups. - scheduler: Condense group and clone status in output. - scheduler: Only output the clone header if necessary. - scheduler: Mark partially active groups in output. - scheduler: Tweak resource filtering for groups. - libcrmcommon: Also allow string arguments that start with a dash. - tools: Audit command line options.- Update to version 2.1.0+20210721.0bf0e8547: - scheduler: respect runnable argument when creating pseudo op - scheduler: pe_order_implies_first should matter if 'then' is required - scheduler: don't make optional constraints with group members mandatory - scheduler: avoid invalid transition when group member unmanaged (clbz#5423)- Update to version 2.1.0+20210720.202b37962: - libcrmcommon: Allow negative numbers as cmdline options. - tools: The --get-value option does not require an arg.- Update to version 2.1.0+20210716.1ee04e687: - scheduler: add test for probe of unmanaged resource on pending node (bsc#1188653) - scheduler: update existing tests for probe scheduling change (bsc#1188653) - scheduler: don't schedule probes of unmanaged resources on pending nodes (bsc#1188653)- Update to version 2.1.0+20210716.1029946ae: - crm_resource: report not supported for --force-* w/systemd, upstart, nagios and bundled resources - Pacemaker Explained: document how fence agent internal timeouts work (clbz#5473) - Pacemaker Explained: clarify pcmk_host_check default (clbz#5475) - cluster: Use most up-to-date corosync API calls - rpm: assume _rundir macro is present- Update to version 2.1.0+20210701.9df198b18: - libcrmcommon: Correctly handle case-sensitive ids of xml objects when changing a value. (bsc#1187414)- Update to version 2.1.0+20210701.b295080a7: - scheduler: Fix group-by-node resource HTML output. - scheduler: Fix list errors in bundle HTML output. - scheduler: Remove an unnecessary blank line in HTML output. - scheduler: Remove an unnecessary space in HTML output.- Update to version 2.1.0+20210623.2a6d5ae68: - cts: Update test files with crm_mon new xml output. (bsc#1187694) - Increase PCMK__API_VERSION for new crm_mon xml output. (bsc#1187694) - libpe: Added crm_mon xml output cluster timing settings. (bsc#1187694)- Update to version 2.1.0+20210623.34ef9b169: - pacemaker-attrd: avoid repeated unfencing of remote nodes (rh#1961857) - pacemaker-attrd: ensure node ID is only set for attributes when known - pacemaker-attrd: check for remote nodes in peer update callback - controller: check whether unfenced node was remote node- Update to version 2.1.0+20210622.485ce3a4d: - libcrmcommon: Increase PCMK__API_VERSION for new crm_resource output. (rh#1686426) - tools: Add the node-summary to crm_simulate output. (rh#1686426)- Update to version 2.1.0+20210617.8c0c4eff9: - Purge remote node attribute when the node is up. (bsc#1186693) - Merge: * bsc#1186693-clean-attrd-attributes-when-remote-node-is-up.patch- Update to version 2.1.0+20210617.1df5eb2c1: - fenced: Wrong device may be selected when "dynamic-list" is specified. (cl#5474)- Update to version 2.1.0+20210616.dee8cafe5: - attribute: Add OCF_CHECK_LEVEL handling in the validate-all action - attribute: Add unique-group to appropriate entries - attribute: Remove unique from all entries - attribute: Update OCF version to 1.1- Update to version 2.1.0+20210609.40b86522a: - tools: Use the new resource-agent-action message. (rh#1644628) - tools: Add an output message for resource actions. (rh#1644628) - tools: Use simple XML lists for resource actions as well. (rh#1644628) - tools: Add an overridden params output message. (rh#1644628) - tools: Add an agent-status message for crm_resource. (rh#1644628) - libcrmcommon: Increase PCMK__API_VERSION for new crm_resource output. (rh#1644628) - xml: Update the crm_resource schema for XML output. (rh#1644628) - libcrmcommon: Add OCF_OUTPUT_FORMAT to crm_resource environment. (rh#1644628)- Update to version 2.1.0+20210608.3c1bae500: - ping: Add OCF_CHECK_LEVEL handling in the validate-all action - ping: Add a reload-agent action to handle the reloadable parameters - include: Bump feature set to 3.10.2. (rh#1955792) - tools: Add OCF_CHECK_LEVEL to crm_resource environment. (rh#1955792) - ping: Add unique-group to appropriate entries - ping: Remove unique from all entries - ping: Update OCF version to 1.1 - xml: Add schema for pacemakerd. - include: Bump CRM_FEATURE_SET for new pacemakerd args. - daemons: Conditionally enable logging in pacemakerd. - daemons: Output the pacemakerd feature list in XML. - daemons: Convert pacemakerd to formatted output. - pacemaker.service: Don't start pacemakerd with -f. - daemons: Use glib for command line handling in pacemakerd. - Add verbose debug mode which logs ping and fping output when set - daemons: Use the new IPC API in pacemakerd for shutdown. - daemons: Ignore ACK messages in pacemakerd dispatch.- Update to version 2.1.0+20210608.7c3f66070 (Pacemaker-2.1.0): - schemas: Add "digests" and "digest" elements to digests.rng. (rh#1967087)- Update to version 2.0.5+20210601.b7762381d (Pacemaker-2.1.0-rc3): - XML: bump API schema version - tools: get `crm_verify --xml-pipe/-p` working again (bsc#1186576) - rpm: respect prefix when installing resource agents - tools: Return ENXIO from show_metadata. - tools: Return ENOTUNIQ in find_resource_attr. - executor: log OCF resource agent search path at start-up - tools: Fix handling certain error codes in crm_resource. - pcmk__pid_active: Lower the log level when readlink() is EACCES - Drop obsolete: * 0001-Log-libcrmcommon-lower-message-on-reading-proc-file-.patch- Update to version 2.0.5+20210519.4edf50cc9 (Pacemaker-2.1.0-rc2): - rpm: add option for sbd sync default - tools: Return the right error codes in crm_resource. - configure: add --with-sbd-sync-default option - libcrmcommon: warn if sbd sync environment is invalid - libcrmcommon: warn if can't get user information for log file - pacemakerd: don't try to repeat shutdown when disconnecting CFG - executor,fencer: tell user if additional logfile is unusable - libcrmcommon: use return code correctly when getting daemon user ID - rpm: minor clean-up of spec - rpm: add configuration global for bug URL - liblrmd: improve messages when loading Pacemaker Remote key - liblrmd: return sensible value when remote connection fails - liblrmd: improve failure messages when initializing remote key - liblrmd: improve failure messages when cacheing remote key - liblrmd: return sensible code for unsupported executor type - liblrmd: improve messages for remote reply failures - liblrmd: use sensible return code for disconnection in remote send/reply - liblrmd: richer return code when sending remote message - fencing: register/remove the watchdog device - crm_resource: improve help text - libpe_status: Don't output an extraneous header under crm_mon -b.- Update to version 2.0.5+20210427.aa4bdaa2f: - schedulerd: Correctly calculate priority-fencing-delay from Master resource stop failure.(Fix:#CLBZ5467)- Update to version 2.0.5+20210427.529de7174: - tools: avoid exception when pcmk_simtimes is used without --verbose - libcrmcluster: improve CPG validation messages - libcrmcluster: use more efficient payload length check - liblrmd: correctly check for out-of-memory condition - executor: properly initiate quicker fence device monitor - Fix maint-mode output on curses mode.- Update to version 2.0.5+20210422.d469c6340: - controller: check for empty OCF version as well as NULL - libcrmservice: always advertise OCF 1.1 support - controller: always refresh agent meta-data after start - controller: info message when agent supports newer OCF 1.x standard - libcrmcommon: bump feature set for reload-agent support - libcrmservice: advertise OCF 1.1 support to resource agents - scheduler: support OCF 1.1 reload-agent action - controller: support OCF 1.1 reload-agent action - resources: support OCF 1.1 standard in ocf:pacemaker:remote - resources: improve Pacemaker Remote meta-data - controller: log the OCF version supported by a resource agent- Update to version 2.0.5+20210420.e82d2a1bc: - Convert crm_attribute to use glib for cmdline handling. - Support "sync-crash" option with PCMK_panic_action - tools: Don't reference the output object in cmdline processing. - libcib: revert deprecation of cib_apply_patch_event() - CIB: allow resource-stickiness default to be set at build time - rpm: detect when to use --enable-compat-2.0 correctly - Support "sync-reboot" option with PCMK_panic_action - tools: Set the output object when running crm_resource --restart. - pacemakerd,pacemaker-remoted: simplify help URL in systemd unit file - crm_mon: try to connect CIB while pacemakerd shutting down - Rebase: * bug-995365_pacemaker-cts-restart-systemd-journald.patch * pacemaker-cts-StartCmd.patch- Update to version 2.0.5+20210409.6c31efd67: - libcrmcommon: bump feature set to 3.9.0 - scheduler: provide notify_{,un}promoted_{resource,uname} variables - schema: add promoted-only to crm_mon API schema - libpe_status: use "promoted-only" in API schema for bans - tools: deprecate crm_master - tools: crm_attribute -p/--promotion option to operate on promotion score - tools: crm_resource now supports --promoted option - CIB: allow OCF 1.1 role names in configuration - scheduler: accept case-insensitive role names in actions in templates - tools: use OCF 1.1 role names in crm_resource --ban constraints - scheduler: use OCF 1.1 role names in output - scheduler: use OCF 1.1 role names in log messages - scheduler: support OCF 1.1 role names in configuration- Update to version 2.0.5+20210408.c71bd880c: - tools: crm_simulate --pending is deprecated. - tools: Make some small changes to the crm_simulate man page. - controller: correctly handle remote node fencing after Y2038 - controller: correctly handle node shutdowns after Y2038 - libcrmcommon: bump feature set for recent configuration interpretation changes - tools: constrain node IDs to non-negative values for crm_node -N - tools: treat invalid error codes as unknown in crm_error - scheduler: don't treat invalid duration fields as -1 - scheduler: constrain promoted-max and promoted-node-max to non-negative values - scheduler: constrain clone-max to non-negative values - scheduler: constrain clone-min to non-negative values - scheduler: constrain clone-node-max to non-negative values - all: allow full unsigned int range for PCMK_ipc_buffer - scheduler: Use default when series max value is out of bounds - scheduler: handle series max of 0 better - scheduler: handle exit via signal or main loop similarly - fencer: use 1 (default) instead of -1 (unlimited) for invalid pcmk_action_limit - all: constrain minimum when parsing certain internally generated integers - CIB: constrain remote-tls-port and remote-clear-port to port range - scheduler: constrain resource priorities and node-health-base to score range - controller: bound stonith-max-attempts to a minimum of 1 - scheduler: handle last-rc-change values after Y2038 - scheduler: handle ticket last-granted dates after 2038 - all: use default value when a long long integer can't be parsed - tools: Don't print to stderr if crm_simulate -V is used.- Update to version 2.0.5+20210406.6b23b2bb4: - Add schema for new crm_simulate options. (rh#1686426) - tools: Add new options to crm_simulate. (rh#1686426)- Update to version 2.0.5+20210405.43fcdeb35: - xml: Add schema for new crm_simulate output. - include: Bump FEATURE_SET for new crm_simulate args. - scheduler: Use formatted output for node weights. - tools: Log crm_simulate output for certain cmdlines. - Use formatted output for scheduler node actions. - tools: Use formatted output for simulation timings. - tools: Add the beginnings of formatted output to crm_simulate.- Update to version 2.0.5+20210330.7fa194778: - libcrmcommon: Allow setting the formatted output log level. - libcrmcommon: Flush output in text_list_item.- Update to version 2.0.5+20210319.c75f0a34a: - crm/cib tools: implement CIB_file="-" to accept CIB from stdin - tools: Promote a couple info messages to errors.- Update to version 2.0.5+20210310.83e765df6: - controller: re-joined node gets the host names of non-DC nodes (bsc#1180618) - Merge: * bsc#1180618-0001-Fix-crmd-update-crm_peer_cache.patch- Update to version 2.0.5+20210309.90b3e455b: - Allow the none format in other command line tools. - scheduler,tools: stop using last-run in CIB status- Update to version 2.0.5+20210302.64e0c771d: - crm_mon.rng/crm_resource.rng: Change the schema type of 'expected' and 'call' to integer. (rh#1931332) - Merge: * rh#1931332-0003-Med-Change-the-schema-type-of-expected-and-call-to-i.patch * rh#1931332-0002-Med-Copy-crm_mon.rng-and-crm_resource.rng-in-prepara.patch * rh#1931332-0001-Med-Generate-xml-crm_mon.rng-from-the-contents-of-xm.patch * rh#1931332-0000-Feature-xml-Move-resource-related-XML-schema-into-it.patch- Update to version 2.0.5+20210302.f537b60c2: - fenced: retry getting metadata until we get it - require glib 2.42.0 or later- Update to version 2.0.5+20210224.63d2fa7c2: - pacemakerd: downgrade corosync connection loss messages - libcrmcommon: be consistent with IPC server names in messages - CIB: deprecate support for can_fail action meta-attribute - CIB: deprecate remove-after-stop cluster property - pacemakerd,tools: use high-resolution sleep in a couple of places - pacemakerd: use high-resolution sleep functions if available - configure: drop support for --with-acl option - rpm: update for new legacy links default - configure: add --with-concurrent-fencing-default option - scheduler: allow 2.0 compatibility mode for certain output - include: Bump CRM_FEATURE_SET to 3.7.2. - tools: Convert crm_verify to use formatted output. - tools: Use glib for command line handling in crm_verify. - iso8601: prevent sec overrun before adding up as long long - Merge: * 0001-Fix-iso8601-prevent-sec-overrun-before-adding-up-as-.patch - crmadmin: tweaks - scheduler: route monitor cancellations behind moving remote connections correctly - cluster: try to reconnect with corosync if it goes down - Rebase: * pacemaker-nagios-plugin-dir.patch- Update to version 2.0.5+20210223.dbc27b2ac: - fencer: optimize merging of fencing history by removing unneeded entries on creation of history diff (bsc#1181744) - Merge: * bsc#1181744-0004-Refactor-fencer-optimize-merging-of-fencing-history-.patch - fencing: new function stonith_op_state_pending() for checking if a fencing operation is in pending state (bsc#1181744) - Merge: * bsc#1181744-0003-Refactor-fencing-new-function-stonith_op_state_pendi.patch - fencer: update outdated pending operations according to returned ones from remote peer history (bsc#1181744) - Merge: * bsc#1181744-0002-Fix-fencer-update-outdated-pending-operations-accord.patch - fencer: broadcast returned fencing operations to update outdated pending ones in remote peer history (bsc#1181744) - Merge: * bsc#1181744-0001-Fix-fencer-broadcast-returned-fencing-operations-to-.patch- Update to version 2.0.5+20210212.a4892ccb5: - Fix a problem with crm_resource exit code handling. - Correct output of "crm_resource --locate" in case of clones. (rh#1925681) - tools: Add newlines to the description string in crm_simulate. - tools: Straighten out return codes in crm_diff. - libcrmcommon: Set extra_headers to NULL after freeing it. - tools: Mark a couple things as volatile in crm_mon. - tools: Allow other output formats for crm_mon -d. - libcrmcommon: Try to make sure formatted output is always written. - libcib, tools: Use the formatted output password prompt. - libcrmcommon: Add a prompt formatted output message. - tools, libcrmcommon: Add a progress formatted output message.- Update to version 2.0.5+20210205.46cf48d27: - execd: Skips merging of canceled fencing monitors.(Fix:#CLBZ5393) - Merge: * 0001-Mid-execd-Skips-merging-of-canceled-fencing-monitors.patch - crm_mon: detect when run on remote-node - tools: get cibsecret stash working again - Merge: * 0001-Fix-tools-get-cibsecret-stash-working-again.patch - fencing: remove any devices that are not installed - Merge: * 0001-Fix-fencing-remove-any-devices-that-are-not-installe.patch - crm_mon: suppress pacemakerd-status for non-text output - crm_mon: retry fencer connection as not fatal initially - tools: Report pacemakerd in state waiting for sbd - controller,scheduler,CTS: use ":" instead of "::" when displaying provider- Update to version 2.0.5+20210128.7c8114f68: - scheduler: process remote shutdowns correctly (rh#1898457) - scheduler: warn if lrm_resource has no ID - scheduler: warn if node state has no ID or uname- Update to version 2.0.5+20210128.aa41a984d: - cibsecret: use crmadmin -N (which also lists guest and remote nodes) to get nodes to sync to - tools: Free --resource=/--node= memory in crm_mon. (bsc#1211678) - scheduler: Free the result of pe__node_display_name in one place. (bsc#1211678) - tools: Free command-line related memory. (bsc#1211678) - libcrmcommon: Don't leak memory in pcmk__cmdline_preproc. (bsc#1211678) - libcrmcommon: Free the results in various test cases. (bsc#1211678) - libpe_rules, libcrmcommon: Free the whole xml doc, not just the node. (bsc#1211678) - crmadmin: use cluster instead of member term and remove pacemaker_remote node type - crmadmin: list remote/guest nodes and add parameter/variable to choose which node type(s) to list- Update to version 2.0.5+20210121.55598be5e: - tools: The 'm' key in crm_mon is a cycle, not a toggle. - tools: Describe interactive crm_mon use in help and man page. - tools: Attempt to reestablish connections in crm_mon. (rh#1880426, rh#1466875) - tools: A lack of stonith history is not fatal in crm_mon. (rh#1880426) - tools: Report if getting fencing history failed in crm_mon. - tools: Adjust fencing shown indicator in crm_mon. - corosync: Add cfg_trackstart/stop calls- Update to version 2.0.5+20210114.ad074d869: - all: use high-resolution timestamps in detail log when available (bsc#1197668) - CIB: remove cibmon command- Update to version 2.0.5+20210113.a4bbcb033: - scheduler: implement new critical and influence options (rh#1371576) - xml: allow colocation constraints to take "influence" option (rh#1371576)- Update to version 2.0.5+20210112.631bb9c89: - tools: bump feature set for crm_resource --digests (rh#1872376) - tools: add crm_resource --digests option (rh#1872376) - tools: handle required node names better in crm_resource- Update to version 2.0.5+20210111.c600d9092: - Build: tools: make stricter compilers happy - Build: resources: drop ocf:pacemaker:pingd - Build: require libqb 0.17.0 or later - Build: require glib 2.32.0 or later - Build,Doc,Test: all: drop support for Python 2 - Rebase: * pacemaker-Wno-format-signedness.patch- Update to version 2.0.5+20210108.1f1408ca7: - scheduler: multiple issues with value-source in location rules (rh#1872376) - tools: respect rules when showing node attributes in crm_mon (rh#1872376) - scheduler: calculate secure digest properly for node attribute rules (rh#1872376) - scheduler: treat NULL and empty string the same in literal attribute comparisons (rh#1872376) - scheduler: don't include timeout in secure digests (rh#1872376) - scheduler: filter non-private parameters properly for digest (rh#1872376) - libcrmcommon: compare CRM_meta_ properly (rh#1872376) - liblrmd: Limit node name addition to proxied attrd update commands (rh#1907726) - Merge: * rh#1907726-0001-Fix-liblrmd-Limit-node-name-addition-to-proxied-attr.patch- pacemakerd: downgrade the warning about SBD_SYNC_RESOURCE_STARTUP to notice (bsc#1180966) * bsc#1180966-0001-Log-pacemakerd-downgrade-the-warning-about-SBD_SYNC_.patch- Update to version 2.0.5+20210104.8ae19fdf9: - attrd: prevent leftover attributes of shutdown node in cib (bsc#1173668) - Merge: * bsc#1173668-0001-Fix-attrd-prevent-leftover-attributes-of-shutdown-no.patch- Update to version 2.0.5+20201218.c67665496: - books: enable Sphinx build - books: remove Publican - xml: Update XML schema for crm_resource changes. - libpacemaker: Also flatten XML location constraint output. - libpacemaker: Various small fixes to location-list. - libpacemaker: Fix printing out location constraints. - libpacemaker: Correct loop detection in rscs_colocated_with_list. - libpacemaker: Flatten XML output for colocations. - libpacemaker: Pass the correct resource to recursive calls. - tools: Don't display generic lists for colocations and constraints. - libpacemaker: Change the colocation list headings. - libpacemaker: Don't show an empty locations list. - libcrmcluster: properly check CPG payload size - libcrmcluster: correctly return error for invalid payload size - libcrmcommon: set errno properly on IPC connection failure - scheduler: Don't output a resource header with no list. - libcib: Cleanup at signoff.Fix(CLBZ#5457) - scheduler: add class back to multiple recovery message - fencer: standardize fence device references in log messages - fencer: improve wording of various messages - fencer: correct order of arguments to a message - fencer: log operation IDs more consistently - fencer: log operation state as readable string rather than integer enum value - fencer: prefer "fencing" to "stonith" - fencer: use singular or plural correctly in messages - pacemakerd: improve error message when -S can't connect - libcrmcommon: improve messages when adding a log file - libcrmcommon: drop unformatted log message about log permissions (bsc#1190821) - libcrmcommon: drop unnecessary parent check when adding log file - daemons: improve client name used in log messages - ipc_client: Use libqb to get auth data for ipcc connections - Rebase: * bug-806256_pacemaker-log-level-notice.patch * bug-728579_pacemaker-stonith-dev-id.patch * bug-812269_pacemaker-fencing-device-register-messages.patch- Update to version 2.0.5+20201203.dc64a43f9: - libpacemaker: add public API functions for cluster queries - libs: Remove extra whitespace in list_item calls. - schedulerd: Fixed processing to expand meta_attributes. Fix(#CLBZ:5451) - scheduler: Fix output of failed actions without an operation_key. - scheduler: treat missing parameter as NULL in rules with value-source (rh#1872376) - scheduler: correctly skip dangling id-ref(rh#1872376) - controld: Retry connection failure when controld is stopped.(Fix:CLBZ#5445) - travis: run cts-exec with --force-wait option (bsc#1177489) - cts-exec: add --force-wait/-w option (bsc#1177489) - cts-fencing: add --force-wait/-w option (bsc#1177489) - cts-exec: add --timeout/-t option (bsc#1177489) - cts-fencing: add --timeout/-t option (bsc#1177489) - cts-exec: optimize exec regression testing via appropriate synchronization with execd (bsc#1177489) - cts-fencing: optimize fencing regression testing via appropriate synchronization with fenced (bsc#1177489) - Pacemaker Explained: Explain limitations of node attr expressions. (rh#1891929) - include: Bump CRM_FEATURE_SET to 3.6.3. - xml: Add a schema for new crm_resource output. - tools: Use formatted output for stacks and constraints. - tools: Use formatted output for resource searching. - tools: Use formatted output for crm_resource checks. - tools: Use formatted output for CTS printing in crm_resource. - scheduler, tools: Add a new node-and-op output message. - tools: Use formatted output for crm_resource info messages. - tools: Use formatted output for finding resources. - tools: Use formatted output for resource output in crm_resource. - scheduler: Add a message for resource config printing. - tools: Use formatted output for props, attrs, and metadata. - liblrmd: Add output messages for agents, providers, and standards. - tools: Use the existing resource-list message in crm_resource. - tools: Add an output message for a list of resource names. - tools: Add the beginnings of formatted output to crm_resource. - scheduler: filter Pacemaker-supplied stonith parameters from secure hash (rh#1872376) - scheduler: use same default private parameter list as controller - libstonithd: improve filtering of Pacemaker-handled parameters - scheduler: properly compute digest of non-sensitive resource parameters (rh#1872376) - libcrmcommon: Prevent a segfault in pcmk__cmdline_preproc. - tools: Save the optarg parameter for --list-ocf-alternatives. - xml: Add a generic list XML schema file. - xml: Move resource-related XML schema into its own file. - libcrmcommon: Automatically lower case XML list names. - xml: add schema for new crmadmin output - crmadmin: implement formatted output (bsc#1178865) - Drop obsolete: * bsc#1178865-0001-Fix-crmadmin-printing-DC-quietly-if-needed.patch- Update to version 2.0.5+20201202.ba59be712 (Pacemaker-2.0.5): - xml: Revert to correct schema for alerts-3.5 - tools: match calloc() with free() in crm_resource - tools: "Connectivity is lost" may not be displayed even if the ping communication is lost.- Update to version 2.0.4+20201116.ae2c04b54: - tools: make cibsecret use bash - fencer: allow peer configuration requests- Update to version 2.0.4+20201027.31aa4f551: - pacemakerd: handle shutdown requests better - daemons,libcrmcommon: send status code with client acks - fencer: restrict certain IPC requests to privileged users (CVE-2020-25654, bsc#1177916) - pacemakerd: ignore shutdown requests from unprivileged users (CVE-2020-25654, bsc#1177916) - pacemakerd: check client for NULL before using it - executor: restrict certain IPC requests to Pacemaker daemons (CVE-2020-25654, bsc#1177916) - executor: return appropriate error code when no remote support - executor: mark controller connections to pacemaker-remoted as privileged - executor: show CRM_OP_REGISTER rc in debug message- Update to version 2.0.4+20201022.354625c62: - tools: revert some changes in crm_resource NULL checks - xml: Mark new crm_mon attributes as optional. - scheduler: fix build when DEFAULT_CONCURRENT_FENCING_TRUE is set- Update to version 2.0.4+20201019.878658661: - cib: create reply when needed for diff - cib: only build reply when needed- Update to version 2.0.4+20201014.b0ef36d82: - cibsecret: read value to set from input (or stdin) if not specified - libcrmcommon: Don't leak memory in pcmk__cmdline_preproc. - tools: Don't leak options.xml_file in crm_simulate. - tools: Prevent a potential memory problem in crm_resource. - tools: Use glib for cmdline handling in crmadmin. - tools: Apply resource filtering to failed actions in crm_mon. - scheduler: require pre-/post-start notifications correctly - tools: avoid memory leak if crm_mon --include/--exclude have bad syntax - pacemakerd: change one message so CTS recognizes it - libcrmcommon: check controller API object for NULL - fencer: properly deactivate stonith API callbacks - controld: Avoiding Broken pipe when shutdown. - Stateful: add ability to return custom rc saved in state file - Dummy: add ability to return custom rc saved in state file - Use effective OCF rc-code to avoid increasing failcount for DEGRADED statuses (bsc#1205861) - tools: Don't display crm_resource error messages twice. - Accept PCMK_OCF_DEGRADED and PCMK_OCF_DEGRADED_MASTER status codes (bsc#1205861) - libcrmservice: avoid dangling reference after DBus memory allocation error - libcrmservice: avoid double logging an error - libcrmservice: improve DBus log messages - fenced: Avoiding Broken pipe when shutdown. - controld: Avoiding Broken pipe when shutdown. - attrd: Avoiding Broken pipe when shutdown. - Dont add OCF_RESKEY_ prefix to OCF_CHECK_LEVEL - controller: recognize reprobe requests correctly again - tools: allow crm_resource --option to be specified multiple times again - tools: only create validate parameters table when needed - tools: use glib types/free in crm_resource where appropriate to GOption - xml: Add a new schema version for crm_mon. - scheduler: Display stop-all-resources in cluster options. - scheduler: Add management status to group output. (rh#1748139) - scheduler: Change output for disabled clones. (rh#1748139) - scheduler: Change output for disabled groups. (rh#1748139) - scheduler: don't select instance to be promoted on a guest that can't run - fenced: Set the delegate correctly when fencing fails. - scheduler: improve messages when creating actions - libcrmcommon: Warn instead of err in scan_ll() (rh#1874391) - libcrmcommon: Don't always write out a name attribute. - scheduler, tools: Add a resource-list message. - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.0.4+20200820.09f345c49: - controller, Pacemaker Explained: improve the documentation of `stonith-watchdog-timeout` cluster option (bsc#1174696, bsc#1184557) - scheduler: improve the documentation of `have-watchdog` cluster option (bsc#1174696, bsc#1184557) - libpe_status: downgrade the message about the meaning of `have-watchdog=true` to info (bsc#1174696, bsc#1184557)- Update to version 2.0.4+20200820.216d5db57: - tools: properly detect local node name - various: improve client flag handling -Rebase: * bug-806256_pacemaker-log-level-notice.patch * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.0.4+20200819.643f19b71: - scheduler: update migrate-fail-9 test for migration code change (bsc#1177212, bsc#1182607) - scheduler: don't schedule a dangling migration stop if one already occurred (bsc#1177212, bsc#1182607)- Update to version 2.0.4+20200819.114974685: - controld: Log correct timeout for timed-out stonith monitor - libpe_status: Use pcmk_monitor_timeout as stonith start timeout (rh#1856015) - crm_mon: Displays completed failed actions as processed. - libpe_status: Support integer as rule type attribute - libpe_status: Error-check and expand range of type="number" - xml: Support integer as rule type attribute - daemons, lib, tools: Correct comparisons to string functions. - libcrmcommon: Allow default formatted output message handlers. - tools: Apply resource filtering to bans. - tools: Apply resource filtering to --brief option. - libpe_status: Allow filtering bundled resources. - libpe_status: Allow filtering cloned resources. - libpe_status: Allow filtering resource groups. - libpe_status: Allow filtering primitive resources. - tools: Add "No active resources" to one case in crm_mon output. - tools: Allow filtering node history by resource. - tools: Add --resource= to the crm_mon command line. - cluster: Close corosync handles when they disconnect (rh#1614166) - libcrmcommon: Use truly implicit deny for ACLs (rh#1833173) - libpe_status: Destroy hash table after use - controld: improve message indicating the RA execution request - tools: Convert crm_resource to use glib for command line handling. - Allow logfile perms to be set in sysconfig - pacemakerd: improve logging when synced with SBD - pacemakerd: interworking with sbd not using pacemakerd-api - tools: Add -P to crmadmin to ping via pacemakerd-api - sbd-integration: sync pacemakerd with sbd - executor: only send executor notifications to executor clients - ipc-api: avoid infinite loop when disconnected - ipc-api: allow calling connect after disconnection - fencer: don't log assertion if unable to create full request reply - libcrmcommon: avoid assertion on controller protocol errors - tools: Add the http-equiv header to crm_mon at the right time. - tools, libcrmcommon: Reopen the output dest on reset. - libcrmcommon: Make reset and finish work more similarly. (rh#1857728) - libcib: Update known_paths - tools: Update valid scope values for cibadmin --help - controld: Show action timer plus cluster-delay in action_timer cb (rh#1856035) - Rebase: * bug-943295_pacemaker-lrmd-log-notice.patch- Update to version 2.0.4+20200702.813fdbfdc: - libcrmcommon: deprecate create_hello_message() as public API (bsc#1170346, rh#1796824) - pacemakerd: properly conditionalize corosync calls (bsc#1170346, rh#1796824) - pacemakerd: use existing handle for corosync shutdown (bsc#1170346, rh#1796824) - pacemakerd: improve messages (bsc#1170346, rh#1796824) - pacemakerd: functionize removing core file limit (bsc#1170346, rh#1796824) - pacemakerd: remove unneeded IPC and CPG commands (bsc#1170346, rh#1796824) - tools: crm_node -l and -p now work from Pacemaker Remote nodes (bsc#1170346, rh#1796824) - functionize numeric comparisons of strings (bsc#1170346, rh#1796824) - controller: add new IPC API command for getting node list (bsc#1170346, rh#1796824)- Update to version 2.0.4+20200701.556cef416: - tools: convert crmadmin to use new controller IPC model (bsc#1170346, rh#1796824) - tools: remove dead code from crm_node (bsc#1170346, rh#1796824) - tools: convert crm_node to use new controller IPC model (bsc#1170346, rh#1796824) - tools: convert crm_resource to use new controller IPC model (bsc#1170346, rh#1796824) - libcrmcommon: add C API for controller IPC (bsc#1170346, rh#1796824) - libcrmcommon: new model for daemon IPC API (bsc#1170346, rh#1796824)- Update to version 2.0.4+20200630.107af1896: - tools, libs: Use pcmk__str_any_of and pcmk__str_all_of. - libcrmcommon: Add pcmk__str_any_of and pcmk__str_none_of.- Update to version 2.0.4+20200624.67a6a9b31: - lib, tools: Correct types given to PCMK__OUTPUT_ARGS.- Update to version 2.0.4+20200623.e36fe309d: - sysconfig: remove outdated reference to wildcards in PCMK_trace_files - rpm: use https in package URL - resources: don't check host-specific conditions in attribute validate- Update to version 2.0.4+20200622.c7e75c04b: - libpacemaker: Don't allow a potential NULL in a format string.- Update to version 2.0.4+20200622.4bb3b23a2: - libcrmcommon: bump CRM feature set - scheduler: support "demote" choice for no-quorum-policy option (rh#1837747) - scheduler: new on-fail="demote" recovery policy for promoted resources (rh#1837747) - xml: add on-fail="demote" option to resources schema (rh#1837747) - libpacemaker: check for re-promotes specifically - libpacemaker: don't force stop when skipping reload of failed resource - scheduler: disallow on-fail=stop for stop operations- Update to version 2.0.4+20200520.81d4b3976: - xml: Add rsc_expression and op_expression to the XML schema. (rh#1628701) - scheduler: Pass rsc_defaults and op_defaults data. (rh#1628701) - scheduler: Add new rule tests for op_defaults and rsc_defaults. (rh#1628701)- Update to version 2.0.4+20200508.3f6514f01: - tools: functionize listing nodes from CIB in crmadmin (bsc#1170346, rh#1796824) - tools: use proper type for glib timeout value in crmadmin (bsc#1170346, rh#1796824) - tools: handle memory cleanup better in crm_node (bsc#1170346, rh#1796824) - libcrmcommon: new function for draining and quitting a main loop (bsc#1170346, rh#1796824) - libcrmcommon: drop generate_hash_key() (bsc#1170346, rh#1796824) - libcrmcommon: move get_message_xml() and add_message_xml() definition (bsc#1170346, rh#1796824) - libcrmcommon: separate IPC code into multiple files (bsc#1170346, rh#1796824) - libcrmcommon: combine IPC internal headers (bsc#1170346, rh#1796824)- rpm: use the user/group ID 90 for haclient/hacluster to be consistent with cluster-glue (bsc#1167171)- Fixes for %_libexecdir changing to /usr/libexec- Update to version pacemaker-2.0.4+20200616.2deceaa3a (Pacemaker-2.0.4): - cibsecret: don't use pssh -q option unless supported - tools: verify newly created CIB connection is not NULL - tools: check resource separately from managing parameter in cibsecret - tools: improve cibsecret help- Update to version 2.0.3+20200608.44045c027: - scheduler: Add the node name back to bundle instances.- Update to version 2.0.3+20200605.0db37d66f: - rpm: add spec option for enabling CIB secrets - build: avoid resource-agents as build dependency when cibsecrets are enabled- Update to version 2.0.3+20200603.4ff9c412f: - based: use crm_exit to free qb-logging- Update to version 2.0.3+20200602.f7f36e8a8: - libpe_status: Modify filtering of inactive resources.- Update to version 2.0.3+20200527.e67fb5c73: - rpm: put user-configurable items at top of spec - tools: free IPC memory after closing connection - resources: attribute name parameter doesn't have to be unique- Update to version 2.0.3+20200516.b06fc662e: - crm_ticket: avoid unnecessary issues with dynamic allocation - crm_resource: avoid unnecessary issus with dynamic allocation - crm_mon: NULL output-pointer when buffer is freed - crm_error: use g_free for a proper match - libreplace: closedir when bailing out dir traversal - libcrmcommon: return ENOMEM directly instead of errno - libcrmcommon: free basename after setting prgname - silence some false positives static analysis stumbled over - move bcond_with/without up front for e.g. pcmk_release - fencer: avoid infinite loop if device is removed during operation- libcrmcommon: lower message on reading proc file to info * 0001-Log-libcrmcommon-lower-message-on-reading-proc-file-.patch- Update to version 2.0.3+20200511.2b248d828: - tools: get stonith_admin --list-targets working again- Update to version 2.0.3+20200511.e7d7b1aa5: - libpe_status: Apply node filtering to clone resource lists. - tools: Remove an extra space in crm_mon filtered output. - libpe_status: Don't output unnecessary resource headers. - libpe_status: Handle filtering of inactive resources. - tools: Print inactive resources by default with crm_mon xml output.- Update to version 2.0.3+20200511.a9e085d8c: - fencer: avoid possible use-of-NULL when parsing metadata (bsc#1171372) - libstonithd: make the assert message from stonith__device_parameter_flags() more clear (bsc#1171372)- Update to version 2.0.3+20200507.c8529193e: - libstonithd: respect `pcmk_host_argument=none` on `validate` (bsc#1171372) - libstonithd: add `port` or `plug` parameter according to metadata on `validate` if no `pcmk_host_argument` specified (bsc#1171372) - Pacemaker Explained: update the default value and the description of `pcmk_host_argument` (bsc#1171372) - fencer: add `port` or `plug` parameter according to metadata for RHCS-style fence-agents (bsc#1171372) - libstonithd: add function to check supported parameters according to the metadata of a fence agent (bsc#1171372)- Update to version 2.0.3+20200506.a212e4fa3: - fenced: Remove relayed stonith operation.(Fix:CLBZ#5401) (bsc#1181744) - controller: properly detect remote node info requests - cotrold: Notify tengine of completion of CRM_OP_LRM_DELETE.(Fix:CLBZ:#5424)- Update to version 2.0.3+20200429.029571144: - stonith_admin: --delay is an optional option for --fence/--unfence/--reboot commands (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - controller: avoid possible use-of-NULL on logging fencing message (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240)- Update to version 2.0.3+20200428.f0a4d08c9: - cib: populate cib_nodes when 'cibadmin -R -scope=configuration'- Update to version 2.0.3+20200423.01b9bbdbe: - cts: add `plug` parameter for fence_dummy agent (bsc#1171372) - libstonithd: `plug` parameter of RHCS-style fence-agents is shown as non-required in the metadata (bsc#1171372) - libstonithd: `action` parameter of RHCS-style fence-agents is shown as non-required in the metadata (bsc#1171372) - libstonithd: functionize fudging metadata of RHCS-style agent to make specific parameter non-required (bsc#1171372)- Update to version 2.0.3+20200423.5194e4a0d: - libpe_status: Skip summary output of cloned resources. - tools: Remove yet more extra newlines from crm_mon errors. - tools: Quitting crm_mon shouldn't be an error. - tools: Remove an extra log bump in crm_simulate. - tools: Convert crm_error to use glib for command line handling. - tools: Fix --html-title= in crm_mon. - libpe_status: Add space between role and state strings. - tools: Filter fencing actions using --node=. - tools: Filter resources using --node= option. - tools: Filter failed resource actions using --node= option. - tools: Filter node summary and attributes using --node= option. - tools: Filter nodes using --node= option. - tools: Add --node= to the crm_mon command line.- Update to version 2.0.3+20200408.cfb1746ec: - libcrmcluster: use uint64_t type for corosync ringid (membership id) when updating node state (bsc#1168771)- Update to version 2.0.3+20200403.eb73f2237: - fencer: update cpg_topology_delay test to also verify pcmk_delay_base is added (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - controller: requested priority fencing delay defaults to 0 (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - stonith_admin: --delay option defaults to 0 (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - fencer: any delays from pcmk_delay_base/max are added to requested fencing delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: do not differentiate the case where all the nodes have equal priority (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: priority-fencing-delay defaults to 0 meaning disabled (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240)- Update to version 2.0.3+20200402.0a67b34c5: - libpacemaker: don't output "0 events found" for stonith history cleanup - tools: use return codes consistently in stonith_admin - Use glib for cmdline processing in crm_simulate. - tools: Only free things in crm_simulate that aren't NULL.- Update to version 2.0.3+20200326.508402483: - scheduler: don't incorporate dependencies' colocations multiple times - controller: improve shutdown messages - tools: make static analysis happy - xml: Add a new version of the tags schema. - tools: Apply various fixes to the crm_diff man page. - libcib: improve messages for CIB sign-on - libcrmcommon: close logging *after* logging an exit message - tools: be extra safe with freeing API connections when exiting - fencer,libstonithd: fix Y2038 issue in fence history- Update to version 2.0.3+20200321.3e73aefb8: - Pacemaker Explained: document priority-fencing-delay cluster option (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - fencer: add cpg_topology_delay test to verify enforced fencing delay with fencing topology (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - fencer: handle any enforced fencing delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - stonith_admin: add --delay option to support enforced fencing delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - controller: request fencing with any enforced priority fencing delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - libstonithd: introduce fence_with_delay() operation (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: add regression test for priority-fencing-delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: implement priority-fencing-delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: add priority-fencing-delay cluster option (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240)- Update to version 2.0.3+20200320.e16e5121f: - tools: Close the channel created with g_io_channel_unix_new. - libcrmcommon: Don't allocate a ptr array until it's needed. - tools: Free the result of g_option_context_get_help. - various: improve configuration warnings and errors - based: avoid memory leak when reading CIB - xml: Add a new minor version of the crm_mon schema. - libstonithd: Report an error getting history in output. - tools: Use new formatted output return codes in crm_mon. - tools: Eliminate nested execution of bye() processing and clear data_set. - tools: Add clear cib connection pointer. - fix compilation -Werror compilation issue with GCC 10 with s390x - tools: Print errors to stderr for crm_mon's legacy xml. - tools: Rework error reporting and exiting in crm_mon. - tools: Don't automatically show cluster options in crm_mon. - tools: Use glib for command line handling in crm_rule. - tools, lib: Use standard pacemaker return codes in crm_rule. - tools: Allow crm_rule to check some date_specs. - tools: Add better error reporting in crm_rule. - executor: record correct last run and last rc change times - libcrmcommon,libpe: validate interval specs correctly - executor: correctly set first run time - tools: Remove an extra space from last-failed strings in crm_mon. - tools: Properly close ncurses output in crm_mon. - controller: don't ack same request twice - controller: improve message routing messages - tools: Try to remove blank lines from the end of text output. - tools: Don't display an empty "Migration Summary" header. - tools: Handle corner case of printing cluster options. - xml: Add a new schema version for crm_mon. - tools: Add an option for printing failed resource actions. - libcrmcommon, tools: Handle displaying maintenance mode. - tools: Add more fine grained fencing arguments. - tools: Conditionalize more output in crm_mon. - tools: Add a real cluster-options message for text output. - tools: Add --include= and --exclude= to crm_mon. - controller: improve client IPC hello validation - tools: clean up before exiting crm_resource - libcrmcommon: improve messages when sending IPC request - libcrmcommon: improve messages for IPC hello creation - executor: correctly convert nanoseconds to milliseconds - executor: handle systemd execution times under 1 second - executor: improve process completion message - tools: Use formatted output for more errors in crm_mon.- Update to version 2.0.3+20200218.4544c9b82: - rpm: Run "make check" as part of %check and in travis.- Update to version 2.0.3+20200218.a290911ef: - libcrmcommon: correctly check configuration options for positive values- Update to version 2.0.3+20200213.68bd2b4da: - cib_attrs: Fix mismatching deallocation - controller: clear leaving node's transient attributes even if there is no DC- Update to version 2.0.3+20200128.df6c286d9: - scheduler: ensure attenuated scores still have some effect - scheduler: ignore colocation constraints with 0 score- Update to version 2.0.3+20200127.cdf84f849: - libpe_status: Remove extra colons from operations output. - libpe_status: correctly check for implicit resource ID collision - libpe_status: Use the same message for headers and history. - get ready for implicit -fno-common with upcoming GCC 10 (bsc#1160410) - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.0.3+20200116.92a6f7e97: - controller: bump feature set for shutdown-lock - scheduler: clear resource history when appropriate - tools: for down nodes, crm_resource --refresh should clear CIB only - controller: allow CRM_OP_LRM_DELETE to clear CIB only - tools: crm_resource resource checks should show shutdown locks - scheduler: display when a resource is shutdown-locked to a node - controller: don't clear shutdown locks when node rejoins - controller: mark shutdown-locked resources in resource history - scheduler: respect shutdown locks when placing inactive resources - scheduler: respect shutdown locks when placing active resources - scheduler: add shutdown lock cluster options - tools: improve error checking for crm_resource cleanup/fail commands - tools: improve crm_resource "why" messages - controller: improve messages when deleting CIB resource history- Update to version 2.0.3+20200116.ea5b06fae: - rectify thinko possibly behind spurious "process will not die" msg - tools: Adapt stonith_admin to new return codes. - libpacemaker: Fix handling of some operation return values. - tools: Re-enable CGI output from crm_mon. - tools: Correct sec vs. msec discrepancy in stonith_admin. - libpe_status: Update the maint mode message for HTML output. - libpe_status: Use a separate log formatter for cluster options. - tools: Move --watch-fencing to under "Additional Options". - libpacemaker: Convert to new return codes. - libpacemaker: Add higher level stonith functions. - tools: Handle request being NULL. - tools: Be sure to free the GError when done with it.- Update to version 2.0.3+20200106.bc6f54495: - attrd: properly declare global variables as extern in header (bsc#1160410) - libcrmcommon: introduce new set of return codes- Update to version 2.0.3+20200102.1e3b41f65: - controller: improve CIB status deletion messages - controller: improve join messages - fenced: Clearly log merged STONITH operations. - iso8601: Fix crm_time_parse_offset() to parse offset with plus sign. - libcrmcommon: correctly raise detail log line length - libcrmservice: handle child wait errors appropriately - libcrmservice: improve messages when waiting for child process- Update to version 2.0.3+20191203.d671faa22: - scheduler: make sure cluster-wide maintenance-mode=true overrides per-resource settings (bsc#1154881) - tools: Correct the crm_mon man page. - pengine: formatted output for log - libcrmcommon: Add a formatter for logs - tools: Use glib for cmdline handling in crm_diff.- Update to version 2.0.3+20191125.4b1f869f0 (Pacemaker-2.0.3): - libcrmcommon: memory leak when comparing time with invalid specification - scheduler: only add successfully unpacked members as group children - scheduler: include execution time when logging action failure - libcrmservice: use "error" instead of "unknown error" - tools: update blocked description in html output- Update to version 2.0.2+20191108.e39096b5a: - tools: Print nodes_maintenance in crm_mon. - libcrmcommon: Use

when outputting a nested list. - tools: Explain what happens if crm_mon.cgi is run. - libcrmcommon: Update formatted output help. - tools: Add a space to "CLUSTER OK: 5nodes online". (bsc#1158180) - scheduler: count disabled and blocked resources correctly - scheduler: simplify logging resource info - libpengine: Correct display of master resources.- Update to version 2.0.2+20191106.eef56dcd6: - libcrmcommon: Make sure to free the --output-as description. - libcrmcommon: Rename formatted output cmdline options. - libcrmcommon: Group all output options together.- Update to version 2.0.2+20191031.1d695899e: - scheduler: clarify message about when watchdog will be used - scheduler: properly detect whether guest node is fenceable - scheduler: initialize unfencing digests to null - scheduler: improve graph synapse logging- Update to version 2.0.2+20191023.7a12ccbe4: - tools: Explain TIMESPEC in crm_mon help output. - tools: crm_mon --interval should understand more formats. - libcrmservice: don't close descriptors above current limit - rpm: pacemaker-cts requires pacemaker - tools: restore ability to show groups in crm_mon console mode - tools: Deprecated old-style output options in crm_mon. - cts-scheduler: test "year-2038" only runs for 64bit systems - fencer: clarify more messages - tools: don't ignore cib_new() errors in crm_mon - tools: avoid memory leak in crm_mon when displaying nodes - libpe_status: avoid memory leak when outputting resources - libcrmcommon: avoid memory leak when IPC compression fails - Security: introduce restrictive usage libxslt's security framework - libcrmservice: try not to spam close() file descriptors - tools: Support "crm_mon --as-html=". - tools: Don't output nodes if they don't have failures. - tools: Update checks around crm_mon --daemonize. - libpe_status: Use CSS to style messages. - tools: Add formatted output messages for resource history. - tools: Add output messages for operations history. - tools: Add full output to node messages. - xml: Add a schema for new crm_mon output. - tools: Use formatted output for nodes and their attrs. - tools: Enable formatted output in crm_mon. - tools: Use formatted output for failed actions. - tools: Use formatted output for bans and tickets. - tools: Use formatted output for cluster summary. - tools: Use formatted output for stonith messages. - tools: Add cluster summary messages. - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.0.2+20191014.09114c357: - fencer: improved log messages regarding fencing actions (bsc#1151007) - cts: ComponentFail: killed corosync doesn't respawn immediatelly. - fencer: no need to check the length of a non-empty list for pending fencing actions (bsc#1151007) - tools: crm_attribute should skip attrd if CIB is file - controller: improve throttle mode messages - libcrmcommon: improve messages when waiting for child processes - scheduler: greatly improve efficiency of interval-origin - tools: improve crm_resource --cleanup/--refresh help text - fencer: Indicate fencing target in the logs when scheduling and executing fencing command (bsc#1151007) - fencer: Make sure concurrent fencing commands get triggered to execute (bsc#1151007) - fencer: Don't let a fencing command with a long delay block any other commands pending on the device (bsc#1151007) - scheduler: de-duplicate inputs even if not adding to transition graph - scheduler: check for invalid orderings when applying orderings - scheduler: improve messages when adding actions to transition graph - tools: new tool to compare crm_simulate profiling output - tools: add crm_simulate option to repeat profiling tests - tools: Use glib for cmdline handling in crm_node. - fencing: Do not block concurrent fencing actions on a device (bsc#1151007) - fencing: handle fence meta-data errors better - libcrmcommon: avoid buffer overflows when converting date to string - executor: handle remote server socket consistently - tools: improve help text for crm_resource --validate - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.0.2+20190930.7fd98a2c5: - controller: allow more cluster properties to take ISO 8601 specification - scheduler: allow failure-timeout to take ISO 8601 interval - libcrmcommon,tools: handle NULL values better in time handling - libcrmcommon: allow 24:00:00 time as equivalent to next day's 00:00:00 - libcrmcommon: allow ISO 8601 strings of form "T