í«îÛlibc++-devel-17.0.6-150600.3.2.1Ž­è<>,èêì%ЉfĐËźpŻž9Û|‚K”ƒÂ–v_Y§?»;if:Xóžà?ȘŻù2[ÒQˆĆ¶©DŽOÁșÀȧÔ`dçȚ2‹ß”ƁX·2Üű†ÛŸa?żÂŸS˱š`#g•Țz„;üŰź-dypTωP•>eë©ÍU€_0pžž•;š:œŃÇ —ìÛ_?’YôwÏœęá’„›Eæ-g—ŒË5ÉòÆËŚîxèŃĄ>*lf·PœBdÏuÿ:QÀTj2nčю©ùŚ 8PŒcK=ÂȞŁĐƔŸ¶> +ŁEÀD.‹ (€˜ALWdGĆnÇ`+Fò«ŹáŃX†He19óHçé Ü)!qèŁő~(”›Ę;~€í>ÿÿÿÀŽ­è@ (? dèéêì #í WîÌïĐńÜòàóùöśBű XüxęŽț”œ0\0 Œ0 #0 3Ü0 6Œ0 :Œ0K|0`l0u\u€0†@†p†‡&‡T‡X‡b(‡i8‡pÌ9Š Ì:›KÌ>{Ô@{ăF{òG| 0HŒÌ0IŒ0XĄŒYĄÈ\Ąű0]Čž0^ò9bù]cúdú‡eúŒfúlú‘uú€0v dz ž“ ÈÆ Ìä Òć Clibc++-devel17.0.6150600.3.2.1C++ standard library implementation (devel package)This package contains libc++, a new implementation of the C++ standard library, targeting C++11. (development files)fĐËźh04-armsrv1yđVSUSE Linux Enterprise 15SUSE LLC Apache-2.0 WITH LLVM-exception AND NCSAhttps://www.suse.com/Development/Libraries/C and C++https://www.llvm.org/linuxaarch64vŃÔ Ż }ȚHÂJn}Ć BŽ™ ÍQ &ȚïN6ńc;HâûH 'űyÍ„$ž`(€~ą. ¶u3qj ;q v« h ,û/ “Ű$č òŻ  Żí ° “»!  Àđ w q#* ) –» …ŸÊÉ I \­ ÍB Ő[°„ _‘ T Çăç eÖ»î @ Zú ă ó ă  Ă l țÿ äČĄ ń ; ± ę !Ÿč ‘#4 Ț ©ü ˜ Ă j  Ő L # @ó  ä H^  Ò @ © 2  † Û » l Î =‚Úî ±Đ  Ùa„  R ©  „ Š©3 Ó± ÌQ^"ĘŒĄïžđN X!H1 © Œ#Û =„„Q ‹0{+őî "ûóLž ] ˆAF’+ȘȘÈz˜ŚuŻșoÒXNƒÇ·Ż‡ï Cyê·›Û  łû!éí’ &+ęéJűüg W$ ž žJč+„/j1ˆèìÜ"™ȚÛ’8W0 ^0 ·ßț žB(4 pùâTuÖ>;pUÓÎ:Æm2|îß~§¶„b"‘ű^Íă;ƒ A P Ì — §Âò ÿœ8Ž :™ XŠ“+ ÏCŽ†qž’ ï í`ä ę 9€Ow|/$» Î «Öm3}…Ë y Œ†č @F4Ż ÈȘÀ#3-čIj2%èŻ0Î B7ž‰-ƒc%”NÓ§űđq HqČ- Y Ș—O 3Ê ëĄȘn 5š• ) “áeŁò ïÈ &1$+u$á>YE ,ă Ì & Û q{%O =*1Ił ą q ŽÛ§Ù6 Ï P‰ !_>(iß2†j ?áéZw ó ‚>YVò ëûD' Ù4B’2 @ F]0a(è d3 4±jŒ gMjˆH%„ê ,L? C&żyߊ †ń ÿÂ^• € Ë Ű ÛùžoQ ' êsUŻ/?`íóš2VÈž*ăo-”5vz$ ïź`#ő`‰úöúžÔŹ „7!0țÔhꝾ%8 À:†·BbžŸ-0+0$? }Q#R+2a%ČGƒ0Í ·$PŃî Źk î7O#4«Ôv7§$ŠA8”:ž=ź Óż 4 /M žˆ$* Ÿ_ F(78&h)Á8‘ć"J0dÌ•=Í ' Ć 0( XxI##4çÎlC ąæ'šï1 e$ U™o TÉ è Ç$‚;§—Û ]–5 ÿÂ! uŒkbêŁÛ€¶ŃTnô Č»5ˆüˆÔÿ 3rÉțȚD ±ÓOb@ĐÊï-‘œ9ęíó«ŁŠ4ü 0œ• ąÇ7˜ô»N șÆŽÒźJ ó±8 HŚJŽ#Æ l ïêæÉâ[Ș K,–ČFÌ ÚĐœ ëKô'æ‘E ” Ë%eŒ/<: p—'g$Š‘e!5Ù pĂ„.ÍÚ ê ȘÙŚđș"m 1}ëö»_©§ŰŠ “USDX„_Í.Û $›^· Î’ jˆ ȉÁĄ „ïh6X…‘Úä» ÏhV:Í…ŁG>Ś¶©€'ê ëEŹ+B —6łșF}ț2:ąVPnîôX«Á (ȘX ۙÜcÒsWź!HUÙÙJS™ o`HDg w/Ÿ{<“ Ÿ[q_eŃ}‚Ë°6–›±H 8p[»Û䕦=怟Țî3ÎAtĄïlŁ»O<À c_VÁ':)~]m"‡ E ő,8™ùSÖ­í.¶í Ž+ÄpŻ ț84.ڏXĆ-9È oòüwÓ"ì ÄĆű3ć;%AíAíA큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€A큀€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€A큀€€A큀€€€€A큀€A큀€€€€A큀€€€A큀€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€A큀A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€AíA큀€€€A큀€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€A큀€€€€A큀€€€€€€€€€€€€€€AíA큀€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€€A큀€€AíA큀A큀A큀€€€A큀A큀A큀A큀A큀€€A큀€€€€A큀€€€€€€€A큀€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€A큀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€A큀€fĐĆDfĐĆDfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLfЛ fĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDfĐĆDeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLfĐĆDfĐĆDeeȘLfĐĆDeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLfĐĆDeeȘLfĐĆDeeȘLfĐĆDeeȘLfĐĆDeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆDeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfЛ eeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLeeȘLfĐĆ)fĐĆXfĐ˧eeȘLeeȘL812b6862cd44fc73fba22f9c0847344a3d1d8f1fe8e28a23513544bbb8abe89399bf4307a9726d472f297e77ad69e1f3c3f973d584b393a23b1e8e6ee8fa80950cd912ba5ebd0cfa5214a75d471b41a1ba94014341031172861dab298b670ac375d7dac3e25bd7b4c236104c3a17df6b16b149754640b9a6ae373ae837b28f5e9f6842f7fc95af6f73f54b268b367f3703e8c2738f4d2519e7667f96e928c41d0386eb7e46478ff7e026a9fede73bd53124cda57378c0154fc118b4e832c8b8de23a8dfddf000d88a1fb9b6cc0d5df431168f4fb14933dcd12be0eaad1ed6dff8f118bf3f30f4441645404aa5589a8945a6ab3c200de823355f5c54c70e2f3bae480fd51d24ea979850123130b70015bd0c55065475483c7b5f6695d8ce3c34c3f760c90060a392d5a49cd7399a82ae456da4ed0cc27274c289a1411c2bbc0b1d89c1f6fe32c72313f9d0c3b198239d36ac37c77e12cd4fa8888194ba8d0aaba16d767bcf780b06c24f47b6c93f8e500fd9462d3c8429c022970576b762225ad89a33ea1c238a05d2ef26160f558c65d97b2bc0440bcfe71e5750e159b0aa293ca76b0c989cb9fc01e0bb93836a034bf6c50510bc2f05edb179d725453c3e092c980c13d75532fbe36fd66a1379470f502177c6f2e17554edbceb6954df92180b0e698b0be110ee385ec1fb5e51f27982ce1c0146b0637a337bef2eaa896a92b9bf7dcbf1ccee547d06301f1b1b6fd50d235b3a1ad960b435599262741bfae596b774643290348fc1383586f0a9f3fe21405162d01d04e8ee08c81de59feeb7c6ea8cee6dbf8c201678a1538001f13956e614c82697f84b6af275f003840835c07d0775850fe96ad9baae748bb6d06c24af27e676566311c098b21cfa905697574d471cf85516fd9c24453edcacedc211f42725caaa47e6cb3087101ded9e5bb8d78c57dec899f471765c2cf076e6b840c2b76102d56792648a6ae3587f7a6595d7c04e1558a67a500835d5ac00912bece77f3d11a68876899348352c9b87b89dc8f97010cbcf03234f4ab720d6829d8766bc1d53812bcb6aaf2ffd7952b41df59f03be691d950e92d39be22c63b4823a30926099169a966b29c67fbdea5997d3538977bd3f5318c59086b6001a6046eb019772426e1f70fb0b7f1e27ba5bc4817079b1b9a111a143e61800869e5261523c4de8934e0b67a696769aae42a39ea48ad3297ac696235b530bf6122352df3d43b47aa162ad70fe3bc45b0febd1db5ad639befea9139757539e8a4f183f2aff9f6b1c8b46282931ffeb908f731308a30e7b8183d9fd90861f7e5c18318e615771fd4cb718b866234848fad25d30ffd1a408ad57a28656baf3869bebb798d0d435bde8796b683b5359a49091518a4785eb2c758aae989305600dfc4b9cc1221f8dc5472bd1d7c26fd92e4bb65b5b8c8faec9d2d6ed6a31385e440d42d38b295b28793d9129b94ed39d40f43b78d6c4d4e86c15c46a84be9122dccaae7e0438b8daa9e2321a0f6441b352f2d6b7eb3794ae73f6916eb68d202f67c62f7b75b2e418841676ec96214ead971d16250e11c6d08137a3718db9a1f00a657f0067415c8b49375750277309430194f1e2e89712fda8a4e324e4d3534df2556bbc22521e12a458cc272b8746e7903c2ddd986af99d105e4164004e784eb58d3f9e64cdbbaaae8b3e382d618d635dd07caaa2ad338a86da02b7f7335f1d8ebb56cdb2b4757ec70d8d5ad8d83d22d7062fb3816608bd740ddb7e40cdc84859eee9ce0da1f5d9d04a169a20b755d5e4c7e6ac3dd479fec727ce2fe377ffe28d903e555f2b8d725513c5b609e3fcea90fc8fb3798a3eb4401549d30be6ccc3267c84f7b3446b4d725077c467968a69bc35a7e724617f9899124646fb4811812083330abbdf5f85d164f32bb3093629a87309b3916c5c95c0c30840ff76a9e8b10c65eb2db26a4bbcbca8648ae21d502f178cd9dd309ab245daf40887fc436f97c84aed07bdcb155cf7afbac5856b9d6083a3796cb3b954cf8f3413a2961c4be748d021e81f184ccd52f5083eda9452e2aea57863c2b12eefa53993762b39f228bd0956894b6c6d2838c2096b69c7508c5fc671e30cca0023e0122cbff23bf82d15fc8e50043ea447632534684ecc998d89a6d51d9d8097ac0b6f4e2b4490816dca11af3666fb71a78a11efa4dd9fc13e3f2a0731217adaac933ac10c536e7bea976444b481c5befd3d438b30d892a34131b42ffdcbcd520f57c55e79a82ebcb0cf42ce2bd25f18a42dffc56499a30786621031952a40d92c1273c0334676fe6b23ab748e502a20561718c41dfe3428489214650ed07bccb13a30df3a1b1caae230d0fd1483ab4a59623005203ef9d247ca82163300df4436fad36e170ff4ee4e575893906ceb8c7252dc94aafd16d3ee768bec44ad70bf8c98e10dc8fe36f53b93def5aa7f3adced6cd66ba45e82abcad372006d14611eb73afcc4982156028ebc8ff5f267c26be70334aad1641b77fdf8eaaf375ab9f62857f6e24e9c07f8828fd4c3e7c38f81a77198ebe2ae1cb2c799521b7b6edd3a6a164d9b917c8bd0d0d45c001d1062e18c7916f1f184d7364a2e9fdebb44e3f8dea8e237ed7667cc4a91c7fde9777559b3920741ed2f76df332872e886199d89a483932a6fea299f2188e1bf14789301c47520d60e147a5a5271444b3038acd1a050edb899733cd944d0b86fb018a0187146d5c07e521f1ecd6d419b48af744d153a0b707f12559c732e06274ed0dfed0431f05956440006947e685a6118dd8402e3af5da58d33d3f9cecda713bdd52daf6500ffb9421ba68a8b0c05cd0fb4388ce7e743b3a418196f388468fbf8ee46c25a0a6bb5c0bbc3a86dca170b4b2a545c5a95c1db075591fde50937ccd0d3af20f476123fe2dc1c7d0cf63c2509e6a9f854ec251065099241fe51b2a774a1956fe076639886798d018bd4ea3671c293cc41213fc05059bf0cc49a2f6d9c93932a97dbac07a5fbb84e756376b0caef3d06db696909bf766ddf68c754c8d6b9db5db0a80db4bad1ba5da4b18bef3774cf30e5d041c16ffacea38e279896c60c082083e50a081452e149d59ecab0d3c15d472072afcb3ae9284ed68a84456a7c1bb0106fb7a9395b130a4b232d372151162737411b154259a6ed9fb12474331701856f5e4bf4d3e2c054c1cfacb7d8ab16472bf63c361f0b0a22bc9ee7af90fac2623881e022cef48bc2d275e3db89f5caba32cc596d067f4f09c8066a5135ad4aff0510e52f40b03b3ee686c8b531eb6e28410aeb3d748be85d359113d2dbd0c962950f8e5089059ff675bc9f38b243ae9013796d29d0f02dc9c673c6f2543e5b45ad47e2fa6c3c6bf6dade7c7b37afcb78ac3af61a56b3d4bdd77518607d39c263f598b66f0b449d6fa91577339576bad3c51047f3fe8acd80c57be294da8f15d1d960a88d30ab33c660753b4ed912a126123b96c6bf21518bcd6376bdebe811fd980f857ddbb077a8a8bb8c5a062f17c156f1bb66c664f29396dcfc831834f2aeff8907b897c96145a5808596fdbbade9b0d100c866f9b42c3b61810ea38b7a002c8dcdf57e96f74ad3b006d7bde6ecb746c2f4233aee95b5ec1e7f4e4811ad6d243822dbe7fe348559281a175a08fa8504a8a3f042af6bb3e53feabbe4431bcda22878800dbb79aa6bca831cc49e30fdb3e350280e4d688bf5cd53c72d9866dd59d2dfa929dc4866e2d599a4ea09f04abccf92e4af57be81365f47bb0f46a4d7cf70bf69f7123a6c337f69099d8541accf67b38990f9a05a5a33beccfcdf8e980a60299ddae11f27eb3f0fa297f3ed8ae6db7b167ed1bffc6ab86521309d6c78673ffc1044efbe42c92628fe39e10d825b38c28598592aca806732247a6fd0b0e067f1a4f41b5bcb7c3e6e1b32d9305cd3f5297878ca12bc082e7bceeb30765e0bdb6136df4ae6f7178cc53e3f529888cc7a73a61875ff5b41010bca9a4c525afa15d195f5a9809f28640c34756f639c41853e5ac887c63f796c3b210725535f2b3fec57962f3eec15aa8808bb55b2ff0fbfc1708258c9895b730ab49d3febdc47c884d3fb1d16cd9c72a7b4a28251003ca02d5aaebf6c0406c1c86a087c9b6b14c871813da72769d6fe5cbdc6d9e389337e57c0fbac0d74b529a34de4c43e8679747c1a929bf36d56f57e29017ca1e40fa8d28feae2e1d0bbc5ec2a35671deb397ecbb287619e421b9c466a66052a6502d787fde656b3a43dcc453ee44683d81ef59348b3a6543ce1fca2978cf1ce4b02632ab153bb6b3680f217d840ba26d6f0befbca51d2f4619a0844cbd97af287f451e93b07915e2075fc94db38fad26c7f14658fd9ad5e9a8d89263a9b3696da23e3796117f3d7beb340030d65e0d20ba01f4c9141dbcdaa23f63774e2c32e44f05a824e879b4e5086158e00e191dad3291dd00c9eee15504b5df23c94b5bbcf6c14c4be8c1ef1bf9b7d03065fff0fb49fa4c54b14762df718c5b5d6b7cde76d23a374a4db70600615dc159b930d04ff8a7b15d821b573a0f443c8a945ad0ec99d608dbfdc2090d4c1c5af54f84a21b79188d000bc777291bf50b372ed3128c7b079e5e0c4da2992d5de84e4d2bd34cba06481290fbbad5ae0217e80fc2140d9d2e6a35e93e837143e3198d55958541fe43ce3f2927577bb5ed47092a5d719b06e87e2ff2e3553ebe09d88885ab62781bef847e9c263bedd82554f8769f088db15620756038c9568c643e513c945c5401b884f08f63c5d1dbd8e6481f027c81f82de7f8a0a33e1651ab59442b2194c92e1b2d1ca0bd8f3cf045e51ac7f10dd768c313a50ed33b5edba9ae374dbdf142a8bce71d4c9041a79b7a9a96065adeca514a6f1c9a99835d9cef84b5ed8189f822c3ee934a8a1e4c310aa10802cc8f182a42f120b0f356d5d1f6124344849fe6f67820c45b106ff7044413e1f0396297b448eee2f3eb745b822a88f499343dd9a8781ffd43bd4663b400a964a936660abaa81d832dfdc8a70412c0564104e6647e53454a64863ec7d8e477e1d66b2f95d69053a0bc20160fc6baf2690fa5d41561a93a122f6b69f66a6a4e9ea876e963557917e83eb532ea0015b1ae9cb6b86f1d65ff094acc558a5720616f7ef94b9ff1234dd61240f9333c13f94788fac33600e7d26ea832a9f32f67a81753ef8149a9653745f179ed8b35b92b7d8b92dce49d1d6ff5db2833e1813184100a8ef85943cd4a5a9b8b56c1203faf5787ceb7b76da2bcce8d559c54384f3e9d660d528e3ba28b1f08ffd58fe48452e03add751c8196cdfc6f4e1afb09cb81679565d41e434401fcc25dd1fccef81d182a6871d1823518fc176edfa8ddbd3ad3aa78d4f956142918b7db2315724be5fd1bef56359e69e94bace0197881beb4702bac469588dead877423d403f71c778d2a1fbe0de383091fe126da72598d75efa8aba81996b779a219fb7360916c9391280ecfd9b087a97860e318e321cf718dbed6906d16e5e473926dd390cd70472baa3508bba454712811c172023754307d2a283a0b70216932c647bfe0f9f3c90e65ae3d96d2a8d0cead5dcc24e7b53792771b3a0001a3d50dd6f4245a3272ec9e177b983c04d30c3e51733445a5f03a54b4342b0dc271e3eb11eb73eab9ea1e6db718d1643eaa24c7291d284b97dc32c28900182e720e310b36cc2688bbc193ee8f081172b197e9e6af77236b3494e749ee289846e88f349d17a753c887c99739037eb28ceb4af015e2741741084a256f976bc199e4cf2d1d85b5bd163730bc5330d1eafaf3a458447168af202bd2307cfd80913fecf038108578b388169d2cd9cfd3cc9d5685b4e69825545dd4c9275eaed243fec5d871b87022cd19c8a7ef7ba77a87f388d46119619f5baf399492bdffb0c8c4c4fc6106af8e1ae0595c35d18a302e71c120dcacf76377f6caa94ddbdb9169553abc2934cd0cc8e90baee449992ed4bf967fee60cb5834ff65ec37f375742dab476c8becfe29c81b409ff2ae19c22d8c3d43b2cd91a83d38f3c56352fe9b3f41f03c70d19d6dfd9a0b4cfbde208d3fb9483b770d37f76b7410fbe2251c04c1881376e41e19d5b0f4a7164745af55397940af9ac1d3b94f86a078baeb0530e4a3ba121ea883f398799249d2417243722689b3ea91a29fbac037abf9902c8b03a361731475e7c4327d3be207cc668f0b5741171956e4c3d4e3069daa484afa0df4b121ba4799ca12d1c62765e6fc6acfc36c6cab6256c9abc095b22c426da99e89a1693e671e6521ed4959574c2fd297aaccc6f1b9313a39694ddeb330b377fa24b1e8ec0011d952763991adeda52aaadcb58603403f8c617967bc2a32f67ccb3392e751ff9710b039df0c4bfdf7695023166f0e4ead3160a62b8e140744c6ca108a8e4f8d302d7b7717a6648a4f7fe27cb932a09f2f447443e246433e21f6d655321bb79941f3f31caaa9627b393cf0b5b4a9974e2e03f24d4c43262d401e914ca4063bd14d438bd51dced6a862a279475b661c7d5055a88844cc7b34ba1d91198d700192410458b3d42d1747c16887e88a53a1bfbaefb1fe0be1ab55978dfed5618c4aaeaa37ee00a5aa66f67ba99db15f0bf01e9642733c81bcda42579d8a0b6aa1c038d7a13d2707d0c79c0f46c442cd2e57323362eb33d271363b0a13f9e8713dac1c28c51fc1e42c1547235851d8bd64fa7215d59045ae9589e84d72c87db5f3ce9832243ecf569c30b0e5cbbeb29e4f887dafdd48eea58b013e1d69a83b927b336a85942ce86c065d4dc8d80a250d8faf6a2f4b4d568540bee4b57f3f2dc23731f1f364748e128e62636727fa5417014c2e9d7c3bd3a520901f48340fa16650fe868b39d7dd7c376532cf9a741ee73c9944bb477c481b0f090ac1cfb8e262bc8d23db161627861f3fb89fb5ea8859d969fde9e1d925fc1496311a871217a14571bc17038d5af8c1138c949161f13fe063a2f0ccee689cb2dec1c9dd09bbaaecbd37347f3109a4954ee97e52ba7cf0998e876889dc15cc1a0da7c0853114275afbdf95c2c4a2a409401523b2c708faece39d85cbb86107f5bb5cf9aa27f3101a15c61bc47b28b3fb5d0944c2bb7f7f675acc6a78a5d6a83053f5ab03995f119a1fff2c83f7a281248e4f886b6d09f394fba5c1820406952d00002f4d892d03b054736bc0d862b6581d72a15aa810033559d4cc223876c9d5ee5f7b826825c2dccabbc87e55d0628823fcca10ca4dba3d7a7013b65f724649286739bc761fe4600e0ad7c124cc36649351daeef5134833cf5f84246ef8b81eb4761fc3e37744db733802716cdbb84a0c57f79df4f08d5eb496cd9706e845ef5bea73e619ccda42d096d8973a5fdea1ac5084de107b052c56fc0fced3fdf21898cf0e680e647a0a2419076e5981d053e8437e90b41172ed08871b7cc7eee661e2b405481ff48502cb73c49913a0fe6a5a5bb649fd4363d905e3d27d1c5ab08292dfb0f20e592c7df39ccac43e3e5b61f9ed9c0b72f89b6d58581472730e82eaa5f071dbf4fcd1cb91557a275b7561ab9e10207970536229759506f48a33efb08023d4501afeffe058b7eccd11fb5c0badb217d1e3baf48b8e16c6a47e56dd86d86d43e62f15fc3b62cb4bc6bc8b513b596229bb68756bc380ae6639b1d59ec5e7bc27521ecde16ccac70be1c5c32f72520af87566786208a73f039cb8bee275609fe57770c61c40a78133dd750111fac18ad29dfe16f73e9989e99645a40ab9fd1a7ea27ffa5de6e607772de50e13313ab5de99d2316b2a03dba5712d2eb88bd9b6ef752edad2a13e69273956967199d9b990eb18db7366a3ccad86005e4de7e66152e11a7ba671f7692afe1af5c92a7655fcf3c7bc628bf3d4fe7cf16dd0232985023d6532993d363e468877e28a776d4dc16fee3cf0389e60e76708e3c20ccc2293678674917d01b86453855f3b3997f5e3e844c5153b754129540e286b1f9f1da1947610ea5cf953568724f41e85d9bdd91b1a2948c61628e924847bed8fde8abe5d17199ce07a0efc9334477e4ff81607370f9229b0231e8db2470fd96901b8c974e1d6b8357aaae531dae26aa1a2eee9d352d19eb19a4250b646f370044d4e9e5fbd5a40c25d103d086db5c2032cdb34fd2493dd2496eca5ec72187d26adaed0765cd178ee66731397fe4250a2c43ff613a9d144f71a3cc49435ce32af8b7cc48694e582e05c224d360874034e3d53c6eb0370ceaf2a8c78ed233b2aea2df49b0d5de474f98e5877fbb228f207344a9b5f44f7ed7f0e0b14a947eb5b4ff95e012c704731c77c6a8e67d994e6617cbe35cde6993ae5ea66c092f0955202f540b1bf2c16ce60f985c52fb8779fe309acdd8d7d393075142298cad641eae2c2c3728a3921d5b500f7c4139d972e64bf915b424bbe7041a0fb77e8318df4bd671f46909211db424edfb8e71e474bf3033c1ece15bcfd466930a9757abc0900deef448bea5b7229b74579cfb1529b52a4669d008b4ba30b6f6d0b277123293d6ee34387446d62836400e7b19c2ff36525e13cab0cc773dfe5a6322e87b9e91047d50f40b96cfb2486f99c39b4b2b6809b110c7df108d729399add02e01ac65dca4d5b5708224d0ea100d4c37f084754d543de70900bed8360a7517453ad9ae5ff2b30f5bfe0e23d90712bfd77f3d940de8055ab2595d34fb5d876afd8cdca2062be09a8b4d7bc84c8733093d87f41c9272c35b52e0c91c0bfb627d62b32d04ffffef025406809f51d0bb6707e232d65b6c11f444f4ccc18138739aaa8a8e3af056d6271bb7796d8c8d97bbe9cc67c2d031d4087b0d9ee6616d3a8c42a9df0b3a54851a199c783b5868fe7dbf7edae2b5272bd2dabf8d3af4a1e64f28be2aefc9434a7ed9a79f85ed0dec7738725aeafb08ab6766749c1645f7850371ede68e9768c6b53895c73d9667eda09075779b29abc598fc2f4a7889d88936279e50db17a72732d859baeaf12979229ee3edcf7623381bfb6bfb9fce85b34fb83c210d9a1b854fa9abcff8ad7d1370303d2496cf5173d5ff12ab71ec356ca99e48f01702f2ba5f2bd8b12a8160302294748868f339895052f3ab018b96edb001ba88fbf9088e5bf6f2af5af4d156ae9382aaa7ee1f3ba13bf68b02d8434b4f5ad236a8761043b51d5ab83a22a1f1898264bce27ee3fb41b99d96571b1cc3b19f1d8eeaadfbc0a96e8a7b8a537e835a20fa434237be205a32e23b45393c63573bd1cce1735f6d39b27fbd455847969c015dce037e1dda3c59ff9631b688520684b401eb22ce42395c14c203a8c3c34fcede05f69b61641eda5fc6e3902a8691f85f20ac946db4207c74e4a3addb9430c1b4dabd6264b6d815ae95cff212911aa81ee448d48598aa49d6d015b9a2a7d75a49c611e625a6c2bbd845ac1f9d742a0578a70c4fde097540fa5495c403e787dad1792a2777eb0cc7def1ca20499154a664075a9f3a9f53a71b084bdbf3ead300453f4cf9a3b468f9b734aecc1528e5c60f7eb6a48827a275b4d2b4b8050162ba68f9e65b17e2f01906a63d47d8c19169455b09e75c112442f3ca0b9cfb791403587b4a45811d6ee3d5f5efcf48a0c717f17c8b3fa19573d4bb51a9c07c857a6b8103e854476f03e30c29e31cd4343cd21eadb22553a80ed9419a3d1983d8b7f42d4288e8251d57da0c1868e3d1fd42b41d82df0eadc19b6d6f03c44f03e059138a39fc854be7e4ebad87357e466dd37ac269ef80ec4df9fc8c01a2a62adf875afc942de1572842f23fb5db12effaee70c4c2e590e4af852ad30d8d017876a89cf7241e2869cf49ffffdd5b12de30f6beb189044c06c931aaec7a5fe53df05ff17fce766723eed20a86c95f85db62e395535cf9b83a8c1632e4c80d7799cbafe0d58469fbaf9790b7e657f8486de5e6db481d9f94eddac5ca7e9af9369720de2d7d7c7d140e107582a9d3439a280f281d06c728f3085510e19d3346da9820faa0fcf193d037d8cc24b153dd2150b72c8bdcceefd0a2393014c67e1797af77427dde38780f33edfedf9d747d0668549717552c68837159b717e580ffb45a029a25ca925ecb42695a1538554a35e0f7aee1115b48adc84d5a31db4cbd3773244af052f94ce11e879624f9353420255d285c9b9d73f202c237427bdf382b3ae3f5cc6a0df257ac49d0f13153012d77dcacc20b7c300895c1f64ce87e771ad02c11eac3f17c9a67eae91c07effb657ecf28d3fcf22a42a34bc9cb07c918e637039f60e263718ccd6d9a811213ffb7cfe53524f2ede20f7a35c0467a2196dbbf7aace181088070103fea950bd36592972d089de1cd76d8cdb006f8c9c47fa73dd93b8518413d25e10dfed2be82b98f7ad88b71a2c5bd4684b3dd9202d450ccbf3d43f64d99110c27ec297a8712da236323ac6f80a1df7549837400c3840dc2395cea6c278515cbf64d75b5f1c75828900c670f089a5bd4a0c36cc5edff97a7f834596113d26f2c434f1453e3a8bb835c6a5568ab7f0a7640a9f4fe37105eccb9be54f2dcf7d00e62108361f1bf0037e7354ac2414bf9050bb882b0d509d737d226ba84fae7be49d5428394807cb851f67e29c735b783ae2d8ef9b540f21eaaad62a7a8671140b4118223d4225359bc759772726408d8de50e41ac3f8d508779642ba8f1308da20b5162212facbb6b79850d78cea072edd717e67d5e9767be8169cf3ff274ffa574a8eb8bbb26a820b0d67b3f3fd72a1f7b3adfd3b74f2a89796683f5bc97c4e2380bb7a2c327abff649305125ffc73352819830b53e407ca6f7302c10622f5f2711e23420dad34c7e72c68a1c72a1aeb10228e8a4f08386c3a758c4c87271e6307e83fe60875a3ff9dd1b46f98415ae2dae18a8cfc6072089b214a2484f4da47577626eae5badcdf46dbd23dceec4750df58c52a6ccf7bd7f62ce5b52522bc805dc18191f98b3363c4962c57dbc2ddf7515856311ddff74b0868347796729538be1c5d70999422d3e6bdb0feb40300953f5b29b4e177c9717623f2661f01c73b23156f4e077fd46e1d9d33ee0b5d6d55116b9f2476807c8783dc4963c2ccc81d8c92c5503df1809168dc1416782497b7160f92c02fc8cddf49b7a7783af24a7bf7f8faf66f38933f8c9a929b4469d7728ab606d78a7335edecd6db49eb401c2b9afde37dfb7abf88a92b149ce95ad990f83095a750a3d7dde9ec7cb094cac0c2733c5e25a130ce5414f8846a26641a994ac633599fe47b94d427fbfb92587c472dffd9989bdf21e5a999564b662774bdd75016a0fd30341f517e68a8651d18953ca6126b3a5d2181d8125c984b8b202de4d55331b8233a0686a9c7693cd71359ef8f3e56b89f4448bd9482d67a4e064f75db89dcd7b785bd9fc2b26c8e1b6c3e4300454524e3adc262d12699d24004a26081510d0a4a758f7814676137f33740d2a9e457431411a486f1123f563f9e04c5fa40a5c4dfb7066f597eb60c770a4c70095c80b3481294ed03104a18c0c8cf50be35f01a5a3206118adfd82718c1755730409bddb6ae295915b7a5d1fac45e44667878770bd58e436c3f6aa5fa5103ec135bd0f4b66fcabb6c5336f4d9a94076f704007ac3da6f741b23270cb6c3e51d526aab040d1d5a5d9af7b2cb76c7c23ca8e9867dd989e34667cc132a6cd18a1bade464428a17e6da5f85778c96e60ab33eaaca2817787dffae60cd4c72a119c27471cfad402a4652f782857140eee86e890237dd46888f01b4505e638cea76ec0a6ee0f05a60809dc65aa6b7b057e1ab8e9b9d2c1693019f47b5103b63ea7af1541b93333c6e563305ccdfb2660806a8266acde590e541ced046cbfc403289c8644d8adad67ffcf65d72bb06dfc1517c80ebbdf4e4c143aadf4a516ccd89da67b9e45d538bdefc192e7942d16ad4d5da6d8371caadab3a2377b93e9e90d9281945baa8b1595cb795218c15744fa1826f7d7682156fa2492d2ab0526dc8640331d8bf83250068a67c5381d78a1276cbcd525a5ceaa2f1a235cce94a3ced620fffa278880397cdc62bf368137f196eb4a152479e07d926f10783a5888a1e2c838b9cf90f8afcc00502ac9c1672eca9c0fbb289410c961e0de6d0ed808975a124fce01e6c2fa43fcdf9fb8018f9a6c87e78943dac686428473db43f49992c2d3db482f54368a0949c69f4793297d5aefe0538015f1f6a3f369e60d07a9beac0e271f79278ca115cf14368f3569d28fccf8698e8cd381740a60528623d6f787f3d34adb2bc230432c8ab85e444553a1bb5712d2709a721076390d2508d1d27dcad698920a0249d08d75a71eb662346662fd5b43625aa72375890bfd51c283e06eae9cdd4f742c58299d7e60b7c5cea7b2066646c83c341e24167a69f0d00ca8d4841d554cee838416b64ba91dab44f306856962093395e2e3e94ab550a7b5172318e1c4130d3a36eb8c3910409d87d8326217fc90414bc41cd205f525bb83a86d0eb3f1dc652e183eb4518ce96283f9594135208e0f82e2955607e27d5c3a9f8f67f197237682a4c171714b809255fb5001a96d0ce3815a2612c9db7e92f0d9e48e19450f44d9544b3a2b2eaafc77e7501312a5ddb08d1443c6de300593b6a6597e41bc58583130023103428f3c2ae0c7b4f61fb4469ce1a8d9491a01902087d79dfc9fc9e00770c5a8c3216a9231251c8d855948f26123e48837882dc2b24f4354d105e63f103c6e0ea44c55c58b134cfa72f3e5861e4fd42d10dde047315bc1b2d528abe13d161a15373e6bddbdba4a302efe62e244e81aab318eeaca0e68bf2041350ff22ebab30079c77ecbdca52559f85d65061c046ed17ad174d1b41cff8ba34d191390a9c96de4eaf5d2720608cbb4342666c7fb539834efadb22fd844b06a9c23584af5a284f2a9825e5c00c8d3ed3ffedfa6f96b733fce8ec8a3478c21af741c321e64d545d90f534eeb0f259393d6c74fbdf88faa658d5fc165fd6e0d67924017631131803c2a401bd6ad033f0dc8198c94d458fb9fea2d4c4801615b2f66959d13f8841e01eb074aa9b3a8d6e8c064a1939981f514e4b5bfcb62beada88f02d323c42efddd76c548036baefba7965b272c86bc71793fd55d3d04ac520e42a98ac1e2f4aa1a63ab0627f717cb068d0c8e64370c4890b43eab2736195b33b87dab972f57987a88244e00aecf8677fe0d4ac8d10f4fc2389866dfb217c7ad8d157560f2bc72740811b6a6d898b77c083419a42ed9f4d9bd77cfb6440d1211dc3548a370504fbd973b617547d0581398c2c71968af91dcba82a32e82805fb5b457aaaac72badf0db983095ecbc77815c2bcd082bd051fbc30a603172d6361ec795abdb9d401dd0e77e2831d80d0bf6d24dd990777039a5f2422cd4e47dd34ddef520f127adae725a7ba891b02ed3e3bfb433d9f8c6733bced98fd7f4843d928f0d8b159b1b2537b1887400190bf32b57f443bb3ba08c9757895719d14e99572d5c5587497988d4cf1d730e5dca4d051ef3d1fa7df2f86cebeb0e30c9e679bc734101c155284eda9956d6f3813186e4a688db557cd25485550566b929d2942ca40da341bc19f7377555e363aa475b96f4cb4cbbb189404722c050bcbb83f385f63817827abb7b14a7e0a9154e202637dad1975bbad797dc0fe07f3f101809f073906a8ab183460546d07336553e081ff42b7c516059e9d097399d79c9578e01d32bdcb098322e696abc69c3c3aaf319effdbfa833a47ecb4852671c8911065a2e1c36d07443cec94d6e3a9afcf96d9da36fec8a377ae7fd0ee94e04fd58f33ed1e8881581581145e8f7a120747ddf07e2dad06cf3277d80d983770d00a21f4c7a0fad5fe3f0880b4ebf1b71d8f93ae4087bfb1f147b2dee62ecf8c690da43358fb1c61396d50fadc17e3adb0f8c8506d22dde0130321b4cb81bb7ae90eecad5e75188a2d81e1f8841e15a421e34e1ebc731c6ba6614001023de29de8c27ff0e4694204bba9fe670b677ca539c097e31899525b7fdf0fbda8750b4843cdf5d12f4caddd4e60d80d3d9d3fe02a329ab94f393ec69524a72675f8e0a68327c55e5614f44839a261ff5ec60e8f6c63be54103111862300e1f0e972a02d5cab4f81fcdba2eae92690c42e38cf1c77ffe175f4632da67db93cf701260b793701457364734a93c4c89b35fcb7d9c121081dced2544add3ae522af212722d2c9c9e82dac4895ba2a22038b14ce1038b579651b1544c9ecec2c75a7808747a47c3d84f214977eb7daf6fcf73ed080489a89aacb826bfd10419e38aeec82298650b1f95dcd9ef8762d3bef7288a2ce6368613c29ba4a696be99f051a063943a99ea3678c459c57f4b0adc374c9c9abc838b53f7c8f6f61fb41897540dd1ade5860f573b6e7ee8483b1dd8112dda5df8deaa50d195e8f5594e76a6f662c93d8d0dbe03fa901d79608ad8ea43f7276031c17c75f2aec0563850e0a2dc61eb9cb020eb37cb477b84b31768bae217099a9f334a93f7cf754b1fd15882d48aab3d79e2e7acf4438a04992b7b3a6fe8df0f9ec2f98a180f8e4c1802bb6786faeb2401a6031f14a5d431cee4462a3dc845048d545a684a300ce265b95375bee63b47cdaa7034bc7cd2039f7895719183516306f867e154aad578e8d407e539633eef156a76d801767e28422e55f1a88853a36a56771b23d1a056d53d8e0c21c46e7b33d22f2bb238b8a925b560e8c844e9c691abb92a79862a42e19a09a77d81c9611a4be1fa93fac93d4bd88993e993ada5b2a49ac251aed932587992305a87fc478e8eeea723f6c2d80cdfc73ccb798f0900ee9666818a74e2a18b8c1a150c648cd46e86c5751db2fc4e7a79e008b5f11fde70603e07cac9d7df9d097d74544ecb2a37f61b322c83e279526743b04070545d0fa3b7f5c50964017143f9c5cfec39e2b741b4b319dec733eb3ba859324859f760f4ad87bd1cb09e9ef4900b2110d3acecf64576d6f5f0690c0d442f43331a2319a170cd02671912e9c58ebf6b791f12e629c544e7275b1049ae131bbf5ee2f7564a060444eba763f035414b9deaf6c12051e7f811ad885ea57c5d70c376dd53d3585a9d462c1e411988ac556749a0c0ff70c231cd766f17ed431b309c1e6cd06bcf7d9f749175d6caaa1f197788e1e56b1635253a58ce642c07a0f455371ad6648bd0ce06a624970ca69c05c89b2642e71aabf839ddb116d1e6941f451aa1b34727538d8e81b870f25957847e2693ba8989914e5bcffb5796df1d5f2e505d8e0be3e89ee74a234e063648358fa7ecc2e5389f8d776a25c8a7cb0c18eb04d9400259ea9bd716be70a51fa304dcfecfa26db5e0d33f4ede0a0db81176f5008b8ea9918c971aa1aa5f78b461d4dd156d54b4a3631e4efa58382662fbb5cc7b078c00683b2773e067adbb8afe39d8864793a08803df750dd66256a42f7e2f6988691dc3008d94cc7c36be48962e9798b51b4dc846b113a76df902eb96db7af28e2a3b9b6c150ed62c989b1305bd30aededa0ee54ddf92fe66752ce7a771a173d06b6aa7cb3be74289b2ce538efcf9ae4f4543564c16188ade9173b3e3d85f398696dd43a53abb1b36d59801ebf506929622711eacc414d7c3723e5b43c435970eb6000949c19a4f69943d64bbd5230773a365cc94baeb64b39d58c26341c6fc8639e21450c2dbbde60068780bc18419fe66587dcae5bd993a6fb46b46698207a4a730122a4d78dac2da572bb0bf1ac9813bab45c95b868cf548045267eec97e679764d7b4537ddbc8397d37c99d3d41400a1c12427b113f54ffac710fd48e6b91445de48016e055491ead8edfa5fecb4c89609ed697d5265835aa356d322b5d838bddb4fdddb0403942c86b85f846e44d560e01cf125c1e9cd4d6cefcccc7a70c5c3eb9539d5ccc3be305d5d53bec25cd2a7a499da25c891690a22c3716df2cd6b18bad31701eee343140a3ebac22fe63676b20d2e504a5b7a72d156183e6c3854bcce5963f5cb19aaa41ede7a764cf02fd212525260d6040f1f60a4b48ef64a5d98cc871ca20251b1da8885f803af5e8c91a7c5bd6c4e6e682f47288956b8cd14a1463e34f0c08551d4b7c0745c56ca5d18db697b632cf4fbd25fb7b1e3d80b89d8a9e493d95da728c303f16b83b2584c99a8d78aa7f2328ef793bac25460b87e97e4d3c014a425397b81e8cc592970ac572aef6081fdd7eb026ccf173db194b45c41ad407c7a4651fdd995c77db9f782e94658ad1beb75ffb5ae1bb74525899a4b16c8e7a8d322585062614267e1c8caa605e684e688026ebbf8570561191325ab3730666851ecd4644622daeda88d78ac5b04487ed441fa47b7bc5ab2f90c24518797593a6205cc23aa45aec6eb93eea8db17344d54b10eca47f64f6b0b5f868e5a50965d3007e72ad5887f139184f50d9209863ec2bca50cf7156836e3c123de1653f58dc65b01c13cbecdc54c7c9c5522facb9e3133fa3fc218fef8dfb2f4640b1043f2f745757b78532eb6dfb0c0d20d778f04e1377e44c4d92d4412182f7a03f87674681db40b5c0e7a168265dc71a2ed156b344c51f5c742a3dbb56275167e968a1d39fc7653f4f2c437da88d830d94ff7a3569162a1269411f9e899212ed94264dbfe75a911f89fd3eef5d4294d0ee071763db38adeba44922d9b405b47964e2ece78c179442ab10df1590daa4e4d21d3976a2b32f76721722e6a907ad0de0d6ff3e5c70f02a3576a20f28f0469d646065df3d68702fb1640a03025a37afd6f15387531b1946249b81b3ea1689c4efe0dc8457192db39689e4519860f48da6d339d795f681a7717b72e9e0a471478f70b60c573dc3febc8f99cc49104cc33ed1c0304aac613af4d40f3eb1f19300490b16e55dd804f663a10e8844c627aee66f292927f2a9c86a8f5ba550563169acec6a6d9fd390979cd98ed927bc02589ff2ee934631838d54055c655c7644c6bb246466c6558860268a33e90eeec963ac5ae12648ab3de7abcb36a93a887c6a2a9b779c1f2dd827f0620d6248bb68a80accf8eb56c064239b5b864039686ab39a626d6e95c37b5dec34a03a21aa9a98e39040e764aa0a9413c1c4d9db6b324fe429cbc6ddb01ebceb4bd150ddcbd196fdcd0cb96fad0957dab99a7eb92ca1e39c5e940d39e7096d61a73053ad698a07429f813b4f08ccb82cb73153a5ad226aa009d664bd9ac6587d1107ae199be425f506659c0f489f9a2a9da6010bca4599528dfabc32bf521cadfa1ffd108f73dde008c19599cfd1947d9a619feaf1c99de97efb54dbfd685e978c3e5b1d4f929ccad3083d532c150c6afa8e3a42fab935b4dc37ed977b7e3ee4d937c3d601140aa9b86a68f2dc82b9b781458995cf1bedf9dedccc1eb5e1fb243ff5ed342b87d799de1dd6d5ab21ba4231136e1a84225ef3c14393d67beed212e4a19228507f6edaa40940c24cd0e2aa8d082dea6f009b7d346658fbd3807819e6519a53895b3da4706dbe409b71e6e6a5026ee7771aeea5a110c510bb2057eec0512bebe7c7ed35d7b69bdd322dca60bacc27440746e8315a8a805314f709438db9924d5c9d2e277226323a1fee1332871bf35e2d19ddcd7c4f5a6d710a8b97da27be1cfedd559abeefe91d8a4d864b7bab69399d2ba3325c96d829b322610879859d58ddbeba63991808038d93e53c9eea675f78427eee0166c9fe174971acbab9be62c5a2b293b44a554d20d2544980a9a7ebe89a4e087af354ad407b9ab30df6d557928dbe9d5a23c6fcac4de571c3db19467301e18496ef91dbae2adb62f5fb405b9d7292efdf538196d5eaa227294d7938f135c5862ce4f90280a2677ab4a27047ebdc8f01b663352db4f76ccdab2d28fa28a005b708d9485faf545e420bcf245b507d39d8eff6ef68004db79c0b762df610e33caa813d1567a5db8387b5745a3df4ef76c620f3ffa060903d7ed5954b77ea2ef83ac4553ce5d30e1f31fb511a65a0790813e35d36422b90f158f67a8218a7bd649af02bddb623803d919c48eb12d7294361d6b7bccc83675a344509c4e74a9603b23c9655e2ccc7db56023578764a5585c6369e0a361655561f36bb5ecd21dc86a56af508098b45306f084abdfe9a4a12ae85f3d05ba983ce52470314e0167722cdf14d94937e4ea3bcd8369e375622e581b1c78dee6a3aeb6d88ad8cc25a7c136cddfdeaa1d62ed3567118ff9d92edc55b7510e08a7679453b0a617c04657fda315de633433f3159b2d211ec08e070f677d0af00faf4c8ece77128b38714d8c755ececfdd0552d8f0357712ccd5c28980ad57c1b41a9d0ab46195674819daca2182d6f89ca7abb34caa5c378e9a6c5995a1053302dfabc683748d16b1205e0079ef9115f0034a15349c4808457b8691216d83417f3ff4bc3cc5d2ec8738f4c66c5323312cfb50f071505799350edfad078d79070d4f036ba510360e908730ae87101f2328e4a329400e8ada3a81bf1f8bdcd50ecfe12dfc430338a7fe6382804c08e20b7aa13f2e3ea3f38859c35ad370727b400266eb5ab18012ef543cb5e13efd26839ec7346f55b4b0e86daf29f2534912870aaac7b650d4ce48bc9d309ef3b378ca551693e09ec44f6c7376d07d5f75b3a3d36fc76621eec0708c0266d3dd6701ae2736b07403f9a9c391718bd2ede939cdfb6aa992a4c1b355015e288a2c669db66973b74a0beeb655db336f9066b9bfaaf835ebd05050000f45513650e82b625a33b864cafa9c9f443043f4817fa27a70b5d5d31337eb70bdd690d3795c536022a104375f42382bd510ae6043717993ce864690a98eaafa6a0576f682b0820cb7b43d4958806c39cb33cb837466c26222829a80467dddc23132b2d928b35a4a8b2e10c705824dd6d220cf838fa46f0b919e862e473ce9834e6eda7fd6aa9bd83b51380086fd73b87108063bf7a8552c72c4786cf753eb193669d412ee431929e8c8d2c2fab2c0a16af86624e297a929967a063d27ffdff7264d86470db56c2891741fdfe88e45176086ea5394a2482ffe708a819c9f90dff82d77a6169c373157d8d159c3900b219a07215e760757fbbf500c59e38b29310374e66dd1da7c6bf1888e42a025ed180468cb40b69882d96b939c1e168ca565215899072ba9c0b614b3f54a62ae1cd3dc18448dfa363c283e60b83dc77990743f647be4c75cd5eee78e7fdd6fbeff2e78e7266282ca33176919321dbd232de76bc8cd04bc02eae9a371b11473aae1c9cca0cd5faed040f02428bab3a874ea0e28798c9784b55eb5469cbf0cc0e8a2a1ca7af5bde4d8af8001971d74cf1fdd895d3ea6da1dedf4c4ae0480884b60f5c6f98f671e645ed477494c7b00dbf44acf3aa42d009205d2fd1129d18d089395a21cde5eceecdc6a051118145066f863292210dd7820ee3ec8c1b4c732a6a25a818e7e18653bdc14cfd00360ac0f75f4ae0cbe468f70db610de11606e6da1ac36a6371aa731a67eada3a3c32c6520d04be28adf622936fa2346df59c5f0dc8c976bf527cb3894645555f6833356edb91edb07c5382e542239a68ea7e206502b8cfb75748496e2577702c1e56b47d31c6350b3653cfed406065661e3f9e6c75e67b8ef23f8f4f03cd496264ac25cc509762271fc24d2f17fdc8b412229ab70829e316c19623f04dabc63352c378c5a59a5bf2c08f0cefb6ded2ef66fac2b20be1719c6acf1c78871255ea33c890315ccd8d23ce7d7f01e4ea6c1c70db1bd7cddbc7ec7e9ec6c2755e4ea2b85ff98a68f1d1359a024326539b383e7497a667f4cbbe25bca2eb4566b72b1179f585fb036b39949be304456bcae9565c92203c6e788e4ae15f2cf2bc50c3411846a6fa97955ca43956d3c63877949028cab9a6fa1f1ad1bc6f6ce5207d31db639b37045de1dec880208821d68927186208ef5116d9574a25fe47517b43e4314ca96e5a54346c161843ed5ae8ea7e0d05b4508c6814fd4a862dd059091dbef6943397b3ffab3663cc4e5520e736c5ab4d36c59998da5c56db12d369647eb98353f1f422a3b9bb190da26c340d14c19b8e1024ce81384f07ae8547b4b5fdb2aa1eaa24838a1e78b9a1ce955665abea8bab25754f74fa35931f04ce7619a165b6a399d9bcc9cccf23ae4ff7cbfa843547138f77e3155553d1d9befd8f4de4db8ab5383cd1607a4b38deb44c4b0c0208770efd798e5d93b69212dc8ac6fdfbee1f71b3ec82cf2a18192c22f584d8648f103bda09ea16f8f51db2f5cec8e918c481702140400fd2b8b57004881e44795266924735d0026e856e77a38a183fd9b73243dd0f656c93ce9a9823e009011255dcef5381b4a48090193c76063dbecbc7453d8466e0c17bd957b3a256f54e8df0942c1277d1ed0b177fc4c3c6fd2e9e9f0baec7a736dfb6cf8a7d689fc2cb37827291a578f5daa8bfc15b7b1b0fb238e30bdf14b93caa89a25252f1ad18cb047d032856fa107222dd3a07f78da26b0068d511b1ac3729ad866f0d59a07384b54fac542266fbe4728ed344ffdc9a526e2882643b9ce4f5467610d21a4b21edd7ff95d8054cfdf7f572158c42646511ac61303906c7dd8dd30242bfa58d46702662c160bae5c97681a2c9df3867145390e51e1c5487586dc4bca1d04f1f1233d0612abfeca5e77938cce74aca5e3796bec22bc66e0d5180468b3daba4e17bec22c8be8695b342cacaee58340e8f7e3b2e17e0ee8e48ee445fc5c028905b98b78c32c0bc5fbf941a66337008570eb79da7624b5eb4963b12e6572c103093c3d2e601b09472a34bf38de2fd080cbcfa7e26fdedd809dfc237ed284d545d3af3268994495385b1573abe9e11cd67684d8490a2e406d72b18cf5ac0e5c5b749edce09c3f38b143e97c28393a12eb2208ed9cd17111a567410072fcf4598aeef9f445cf62f600a2fd2db23869322312ea019b12bb5a81fc6a96168f32fc8f7373981da7935be18cee7f1c49fad17347b0ee596772f83c03c28c1be260d9534a2a8f21e11eb125562fd6e011f82e7125bb40c7c21172694e2718584d2e622430d39680942b0909f3e8391479fb2763c33aadaa9c738a4537e569717592a4876cb7783327ff33a8ce75a30d49780c6245b2848e12879b37fdddc365ec9443c5fd2c6d85745d9cf170fe862a3a9a05c357fa146afbf649b2937cd2eacef607df79010c44c91863a7554dee3c4d936e61d83789681acc09077e765eca2c4dadfcd265ee581ee52960f62814329ba1a49505cfbab4bcfdcb2c0b973b584798799bb8f4a344beafc8af1be9cf49701c853b1046ffd746b6d50b348bb27aa47207dfad2edc1a8cf4e412da230d01471d80f54572fe39436e9846c28aa4bb54adc36353cd51755e1856a36f20b99ffc1b1911d88bb5c35307ad4b0665386abb872fab8fdd119220e9a04f250355276fbf8ea9e51151dd6ba4ba6fcf5ae4d1da10d0da1fbf18bb5f6256d20072e91fb59fad11a8abcacc533066c217ac8e764fdc1328ba25819961ed1174ca1fdb8b9f807e219e6c547f260f253b0f3e27f9e2257a926b914cde7c945877240ef050a9bf7bcd8bc6775cf739d91921e30bbcf84f4916913ada12bb8e0afc1c5d4a766f5d0a0bfb9b7c7d9c8031565603eac7e8ad9dc5e1ca2052e08fc90d17ae921b29cb64aea397ec90fea6385f3d33d879a7fb61049268d84c5ae35dbc7f753d1d060d1a0f6e0270772d9d8b1dcd58628cf75d4841aef0ebb729fe7a1901fa8a901110e002090204cb842bab7a15386269079646b3caa1a3a9e90aac8c3a52b33853cd534bcd6b28a169dac6591a1790a75c400ceefe6b87f142baa3c9752f6b3182e5f97e725d5348ae0852657a9d88795d8884eb759861adebaa7cc9e618d4c2b5c865eae46903ebb3b2d6d5c234e6487f16518d9cbd7783ceccfe22443647ba6ff7702d228c6326a1c06888b37c98a53de50948873bd9dd009587a4ed68add37633ef68016a712ef29ffb013ba004add40b214dbac5ca17e445b4a7572591cd6a24f22e5026ec89bd42e79ef531157012978e13d22823bcba30f18706bd1ea544088536a3995e4149d6957cf3ff806f5f810683a8a01ab709b43d8bb3e0bf11dff639f8097f080c4d450c06272570a85eff21632a82b906e597de824e879268d89802a3cecd0b4d01f5a18ac0ededf6effcc0b1c9a876b075aef1f06112c102a247bc84dedd1e666796ede09ac1a38c46e6883ecede7639c2e00756638e06c084f9abda2c3f632932cb385d5078a78643179f6453f3f00b22093c51484c69043e35fae79ec7adbd8685338668f8125a31864eb385ffc62d4ea542587b41d8088dbdbbf326bf6ac31269c3583ef10817acb38cd989fb5679f5aacdb714ef0e5fad6ea6b4872a93f9bf5fccd4861d08a0a2d314bf6d4085d97118ebf8ed5066224fe44d5b66a5ed495e365c57843ec010acb4662b22dcc1b2726811fca1a0b0b1d780a34cd51357034945443f69f2c0100a6e0d60c11fb374a3f01b44a0ea591b166d5c3f61104945074f9e880f7c88a35f25c4336fb2f4b50d61c280831d7595875620943d22a56f6cc106d858330fb3e999a5e7161d1f1e378d7efe7018e6b922f75555e1f7a07aa865182c6596101e32bc7a390e9ea4ef0d49bc56267439516d44dbc3bf05fd25ff183704b06130f48a4193675a06045420b48f90412726ca2941f7e62bd80db653e6076451c01f220a76b8f078663d335800b5b5f5ff497d794cb5725aa0c889e657818dd7e195e3ee176bb6e2f0efe0576b8243e34179f09d984124087e95c897451f27c7017698d57b969b2e8fd89c8ddf51e2587b8698b3cce23f5c60640f7610bb14c38b2c13ab9f8e0590cdd43f73d5ff0de3f36c236754f3e00045d723cdac4ceb0511dcacdb560a6b58d5cdf7f5ef151a0601190ca1e20a379d2c205411fa20bde3ff38e341b42e78a0499680d7ce0e849a61fdda845446e962eb5864b8e62787d121f2156f798d154543d5a09f5e1773eb714f77b5cde5579c7e99c4e777ce994987f2238ca6ed5d497183f24b383273c21783e66d10721ddb91407911b09711f133d4b53c656262a2b1be39495eccd767260b2bce940e9b0ba1699ba5ff9681ec02afed098e40db13d42e74cd954dcd3749a07eb28d8a7972169295cab9b7682d56fdd9865ba99aa69ca7272bf12a58e38270241364d0514ca402a8947833ed696060321044dfeed2e2a963f1bf31eff81a229fd184d96bca0d73c65119934914e7742ea19204f08fa3c855200990b5d734a68fe4ade77ceb755e243f71c1ebba7c8d56031b54d407585acc4d857f855784247077a19b633d82eeac70596fb58f1e2d1a9c34dec6c029ed0b3e6eb5ce295cc6addcf8f75cc4e653b74a54c1260bdfaf46deaf3b04f85a6bac270fb74750e3346c85892b368beb9efd2c536fa9c24e5d8fd2dec08dfc33b6ebab950a99e0bff1b426b26e1dcfb02801a9382557206f8a480e356f715c470946c2f3e894493f3da111119ce6cad2e87f22c41e2d7a2a6bb47f8b315b281623347a63ae90f2f9d9d6eb69ef2fff48f400a6c0de276dcd844c26eba9bdce828f4270a54a50148b76e1a05c9069ad538f213212215b52e807efbcb19d01720f3e5ed281d33cb70c4434da0936f2fc0d6bc3579da4a20f2d6e5fd5823161d5dee90d9c299c449d2696ea479580ef08c9603b376f91f356b368856e2d2a0ea14b565a4ab1c3c7564db77eda6d9b5d1e46eccdf8784bb0e61f10a60a3dd66ca06efbfa1a60d9b0c866795dd2f8f890025775c28e45dda71e6b03d2e8ca1ae583971524a85d2c83a37929ff29be20c345a6b199da5a278c38c298c5183bdc4b2322062c36b579b6afe5617c0c847617188690c8d814513b17d8a69c2ba55445003983364548d6951137fe712de053896b2a24cb7626f666070521a2e908626595a1aa68a6f17f4039d23cc0a91fb7614a55d6be8d4dc7f0a396971f2d32319de36363cf1df7fbf1b82c00d2e297c0bb44260fa291240b58b13db34eb47be82dc9c2f5cfaef3518a59cb8631fa62b85c738b23a510bec9e8d8d8ff3b2c660d193b0b2354f2982f26bcdcd3d77cb72fb9abeb17b96dd0526cfcad89921ea1efd05cb980bc43d01ce99f7b78901348d04e390c6ff880bbafec01b4c2c553d8f17239faca8a13e753c8f9b83f5f9643b97bab30946cd711190f649dbf3230cae15f1afac31708e558d2c5ceaac8279046b5dce7aa193607b9524d85973545df8eb3160bc203219d59a82163bae3ad7cbb32849f00b9498e23d59df7736f647ff9b78db93417786214614234e6e3d6c6c98e7a26f216e30dbed74ae5e3e35d18acabd23f132f4b7d4880a146643d9ee3b4f04b0a2a8c5999ffffbd85589bb699e3fe3149decd482fd3af067c123080b4f4891f903116a16fd69af4742b7509d9599b02121330ae7a5a27c5f73f9a26d3e4caa26f09aa6efe70df48818e1036ca9007b5448272cdcb87c49c38ffeef181c17ef40f71cf02d759710dacb21a056efbb6fcf3d6639ee6e6614cd0c6f8420ca18e55b165f7623d6d741f75b852f5f276f25041d1cfcb0b75e5ab14bc981c896130b672873f7f313c60cab00fe16a569dbdee9cf1cc87f4a0b50baae2324698bb7f9b7ec8f4450876d0ac57400f351739126f645bc7b05efd031bb0fb4df2a397484350e3d28c29c6bb74cfee4b1905060b98f088acb4a5ac4931f6e1b90b2dd51f3c56bd1666eb43a7b78817fd546231d1b8655719b46848266cd4f8e8255ce8a7b123623e1f6e5f58b2746c3f2df44d927f6a9162a9afb05c6bf6ed5b67b12ded7259619f76ee9930a4587eaf93788f4cddc99bbefdfb4bbab945c46e1a1463f7bd0e63f80f8214fb1b48e2eaa9c05ba93447c7eb28771bae6c56c7e69900e2cf60e7ebad32859db3e63ca112fc8cef30b3da2d5b31838e5386c07099b3266617cf2fcfd7bf20d5739056191afaa150ccc422e787b2ed085f3a6fcfef50c59b6d378db9594ad37dcc798f8b0fe8b4e71844b5df3ac70c16408cc360d858f8015f1e55eaa58399e3995fa2484cdfcdb17842176c645c3bf24ae838b4df7cfde32e413fa2b12184eb3cb4155fb37486befbbe9f2f11eef61c6df036b256b3efc96cac696f9d6dfcd770ba58a045c8b579fdf6b7a98441b623be1034090b864719f2cb9a38d0a2302ba4f65ab8a86b8822b70cc677d5ee3fa1b0bfc701a1da3f31fbe8ec4b12e8da73180cc5931d1cd328429aa5166ff700ae1dae7266e02b2632e7bd5aab398f7f4b53f0cf05bb897bdb871bf2ba9e14dc2d8138c7dbf740a7136793aa6466cd2bd0262531388838390d583f4f35a0eb8cc8ba7e95cdc5e92a9727a1a1fdabeaf18c26d77ee5bed9e9b4d6f80bb83a68f833ec718981693f82ca2f202ac3ac6adf13dc08c93ab8c1f0bbb26cfc3c7716cdb6c2ad93bfab5018e20e556578957f0f333e66564eafd0b546b0bf3b82726bbf4355837a6090e43487a5ae88c2b9b5ac74e36d06ed9debef8da0a3f2bce3a3a3666289fe7b64cabdb079057aef75b9957592e37bd92af4a5b1f0d90bd45c2eefc58a06e4c4e1ade63303719302c92d4e9e387444f3ba0ce10b10bba4e5ec25f8cd41d8ee86be4bf669fa5a4992b81e6b081d71fede78aafd86bf0f80cbcca34507dc8b006d6e20a525d285a31c4d14c1ed7dbc631a7b71d58f031af084dd283cb8a3616105e088f5347325d4ccaf86486a8bd8a6306858f3bcc90b3c4782c6cc1fe9a6d3d3d07a5f91fe94aaa03e40e3bfffbf778d67e18d047bb4ada4fcffefde4be0758ba0246e5ead5c472c2862c5648a94f637fd1ff83fc838a2cc7bd5b6ee09b87fbdb8f46c283d1e878d1185907a1be13f971c0ac88fba83cabc6d4d094b4473583759d299b8954e2ebef623c9f7e2bca9afc57c228d897ddd2a5714e39eb94f682b6c8816cba2ecbf087f46094fe15d91fc59857a3cb84ff4b21906a14beb37f0b581e442dfd052da4d93f95c455155fefd68e3bf127a6d7e3e3cb6842c129c9879d5b7d3b5ac5dfd84d8aaf12ed35b63c04c635e6989e6b30fe457111a8685e3534e8c6938f13a40628cd87c9eaea381723b2eff8f001b44b22c7a44e0568cf1c0ee461d3c409b27d76b018cb5252c3d56ab3d87f3d5306f161ce8305442b60336323fcc407e0c14427855a9311b3eb7293f8885804952e8d24b1ddbf98ae6782686ca5239ffbd214e8ad2fb18d26ec873f46006873f1e921fa570aa3b2ac1fcd6fc6aaae33d86eb3e1c0330273bd6cedec62fe7965574d57ab4be0b78715083fdb6dcf6fa9b780534e175aca9de5ef647bdf5e5d13274dfe7954a6f63a6f7abbf59505f1f2c8a0ff9533abb68aa3974558184ab697017f40f873078fff9c1646962c987f14ba3c9cf6c1a20a7e27af2eb4df6e289156f46c369526106b0104aeaf9156d66813a3aee725fed2cd0c018b20e010734d27fdcc97c34960e09a485ed6e9e68883856f3fc3c0f64f0823d512ea466be6a533f8a56f2f1cfc2f786132dcdcfa11b544fb3c82c6f8031b4fbf3534aff7388e0a8688b3ba59ca47c355b8d10f1732c873b50ce3cfd53b580742f77d392a5895c67ddcef0aa3b04d36bb7590850751b8585ea7b43bcc6ad06c8a3403cd305cb4ccbb1f9d908b9e5a66a74d9f313f53a6fbacd3cc00371e4df819e89a77d8a2f943314c94f8f19bb97a4215a310fbf2d119a8ebaadc530c880cf6427eb9be1281ec8191a9c34db414426258b4c9d1b18d84e25085607d522bbe01ab81c4b57559a7902165fc0af5114ff7fdb289d0466e46103ff4c255db2cfcf7cb41ac032361dacda57f28009f0452977214076951b87d472ef61da58e329c97a3dc833f573c8d694bb0c913424a0685108e6eba24781ff405281cd0e9253852bdea44141ac8b497c46e22463b4f6d959f49dedcce2ad45bf26979d06f2a4e717883993d74162adff866ab7a2abacd0fea24c8658e110a7638f69cde33043ceec524dbabff990d40834a6e6bb170cfccfb1cb1d2d0adbf09189d721fc5a674ab24f9103557061f946c8984ee9f3489171d54fd9a6ae8d8fa6c9a95555544a851123eb3f565ba3ca61aedd7cdf4564aabb0825b5e27c928957525a73aa9b63c2f01bc58b46f7bfdf5540e30a430566f5537649993ae7d8d37641a32adc24a8427cfcfa9b45d3f6a2a206a2a6973b28cd74f6489d551c6b5da5d1c8a4d74a16ca8536898879af71c0adfdc99347c221c02f2abaa0e2fa3be7696b17a2439c51b2a68853a8cf258892b8b33a50ddfda831c19e32bef1da7d021e57200f61edf8d3634f4a089cb7598bbc438757dac228728fea8f9d4fc50366e3d8e61e750ec1360e655be6e572a10fb99387b1bb94fb18d976c490e0b8926ad0115f24760956301507f74d212035d9c690226fa05dd09f72d46be9aef95aa4110fbf9e0512b105622b5efe96626d1ac14407f9ef03f7af1a9e9cdd8bacfaaa328c01b63ea0e6a5c73107385cb8fa42070c4650f28d6b60398ad24726cd63792b6f4931ce5eaaab929dc6cee1317f050e96cabf06dd7e221124075e42c9b6620d98bd800650b106755f478858c501be334063dc71c1bd6e769beb602d63ab9ab5e61e1d4cc13a79758845d7d062d19752827e7bff737aea415e7a0e99622149182fe097fe079464709f57e8e4a52df2f66960741a86e887941edcbbca5703868fffee0fa0a5030c4ef0b0ce38216d5df65e9c9b21f99b62b7c8750966c1429d0fb7f33e873d1d1765cfdeb16e5683931fb7728ac77ee8cbf5003077a7be2d2abb1d88e4e53c97f3ed142a446a50a9b0c1cde058c90ce887bd81cb1d10015b19e1139a98e7e4c3a8ff6b9e4a4ab04355900f4195f5371a1f00f3113871fa03037017cbb895d02e818305de05f260e8f889e8bc6e01c245e2b4b43f1ac10b5cb85c1d49b1b5486ca28e76ede621ce8d5a0d1884aecaddb94ce2104a9ac19193be2b091f408f4405f0136f2a2aa0d648e8356fe607a833f8948fb04fbaaa0a6dc83bfe6c2458f3cccfe1e6905e7ac85ff945a9ef05feb69237ca69932cf4db7d32b90a1de4054e39a7e493b52ed7a99a411d29a821bca9bfb6c59a4c4e5655a077624770d09b4f6c5971fb2364a555578e9308f970483670c3b06e88043c45b33f0ed94d3dbd3b079dd61ff85573e4c1dbeff08f6b0cfe22da321a7d622a2b4463baffd67562fe22b71b141698c06802f0ddaee1271879fd55059dd557c883ad4a3b0baeb1834a3deefeba6997425a4ea1fc5d5ff7c14710576452d29400c56518315038325c89af8476aaf3c2eb10f0ad8e7d3afa03a8f3b9fee0af3a6622f1db9cb27495c0d733ce6623ba4c99ef1fb8c8489608dbca7a619089eb100072875315e7faf1d0c7a8fe14caf2f237f0ddf8d1b804ee7ac23b1b6ec97ce407bd6d9df801bd859e7905903a9feef67e68b21d9f40cc99831ca2428ffc1f66cc891512647b81e3dee351a0502252a9d8692e5de1df740bb7526dfa8fe1317f82e53aca4b26d8bc0922541ba66a9cf22298049e8c0618c2632c6f411184a3d67063388d40591b0883e6f7c57c4aebe737d7de04096412d4a3aa8d0407008a405f7b24d41d05ccaf1ddd36761656be7d2cb0b8b235be60c07c43bf55fbfed62f528b9520a9a32d2c607923706a5375afb34750d23c9520815c2bbcc4d0a9683c9a7361403b10c163c62746c63c2ba6c2bb9355bc586d16a9639b683af709bb4ad98b42ee3f2bb3f9e1bc2efd061004285f9c073ba025962039e57bf3aef5351cb4bcd3f39eca4e96a2c9e6f1cf7b13ae5b7f69c648f56b1ad40fe0eed9d014227cb9ce3b4c4a9af15bd10609d31a3efa193403e66d51dc2ee301eff77459a55f6fe3a6c6ef3f9a44cba46198e972e7d9c84f06fa808ff2c2440d51b264699a00e2eb2101ff4d0b3e8e2de141a74fb52af4f36b24661fc9c57875726706d5c206f2befff3993b561fb0c336ac2aa154bc9641ba5717fa3a1a0dd44a5c627e77b7d51f35039c670030900fad590ca15c9b2d41c836dfa24648c253cfa5bf43de0d16c28f35e47802adcdbad0ee4d298d72d2287adaf4b2ea584388fafb24270426a584c8984ed8a8171883181f061e94e1900f1b1643c59b269f462feb6f88f8533079b30a12befafd52cd5f671c9521d321cd9b7f8e6f9e9023eb73fecd6c8ed996b94baf8a5e11991a04fcdb0e08e6b3f85bb464d086faba893a6b03da907d7d73834a61a2a1c66020849d0431de5460cdf55b662e2c275339b3cd82e9253fc86ed13d12174b4b9f228d666d3ed9ee7f2c9322b6b0e7d53961dc452b37cecf9b24567d3cddf89a5d0cbbfcacda2e6cd9ffcc0272306982316991ba411e79b8246e5e45bdf3484bc2cac9477c185b7735f1964556af6e09ad8506819a229b059504ea025ee8b92634a6ee08f7dbfb0643471eca6ebfedaa1ae92f13ca56eaa8c8ffcb2e918292e4dcd67a357e9bdc99c01a80566b5ee3ed62c9b152e5eec096fb95fe5da10bcf5d67be96551484b1b684863992f22adac32df0404e82c328146558fbfc3d97621f4621ced7c8710f2ecb27b659c1a96039cf9ad3b8c5ad0a0ddee35cbff978f97162d4bb237cd259f74c4dfdb80ffaa32d72e9d929660a56617dde6e95a9eca7fa9ea182b396673cffde79ef45d66f4cd9d01553a69c3c4fd5d2ffc4239bad62b547c94c741e02677e8a6fe4469233279818ed7ff9eb5a204faacd0011f6706f3df5a8785df860fa6016db2e7ee22fb9b71ecc79622185bd56da03f368d04358fc0e199e80c049ad2933be0806d9d1a38488a3b54329f09a3daa5861ac93e9b55035ad618f3dcfb133d20f829487fe77873732a10d1497e1c78c01c1e5a5acffc3d8ca7eae9a10a04cc153bcd7835ecded0f613eb5b4165a52ef943bb2625c3f8666e22fb11ec44444eb0964ade904e46934aa5043f081a14bd2715f0db157c28b854b5881730f53df41d2f3285f7c371909bcdfa31b3b7201cb4d180175e48bf51a3b1a3928afd0a1790905cc7119d79e62a0b3b91763cb877540dbd0e0f75a27d0c5e911ed7ea18d8560eb7367d586b878e759cf79c09f1710ca6798cabfad43fbcfb2bd95ade6f15b315a231abbd2536e81e79cdedbaf7a6a24336f155b6906cf179b60155c774273c039a99ae6c284c90186555a14b1f5affebc7dff29dd13db49e7e6a53eb06255dae4c87a52a01a2eeb98bc20688d42288bce9a7d0e32217165cdbc2f405cd58b19f1696f3051c2cf434edc8a5f4f08052ccebd84a212f0444b8aa1b39719c64e0a8881db795348274f03bdc24444d06efc4bf430fb526d72eb2dda9564e7e047ae77ea7b11fa8e0702b0d26993f8db2be921b59f507fa018abf9edb33220a2ebd55e9ac9298095e115720ec10a1b0e36947c4bab047f1d81564ae59e730a0a665fea5523dc8fb31d53a56feba1b18bae12d8e2af675ded342986c16de34e78211f2a6ac3c08ce72a67498c92543d7b021b24ed3832db3a8b09a62200f48e31c5b49e090f43535a77b440f2ab98d57bf2c7a09ca129ef3a94dcb584d2c679a82801b01b4e101876aaeab60d23f34d98e17a10d660fadf25cd0a9be99d6c1a4a1ef7fa9d36fd49dad9d2265f732b7d906c9af6b40224e93991eac30ac867a197cef472cf3aaa768c0b240f5ee6af18fdfaf9efee30c4c325eb53083dc8103895bbf831d4261100b9ec019c17393701972635a214206b79bb1cdeec9df8db25a20afc1ec510a4397a4d22a1878603906647a4856260cead2b170ff7779f138b7f76476df25ac202c44164c48afb2637631e7e48548e2e8c038fcb27ae95e5c0fd4f275bdc1d425bac95c48e52ad447c9d7a6368b66c4bc756f7ad765966f3521521e651a492d4efd138b0b38eccedaf54d8cf54d35613ec02536cef47275a0f72acbb8e0acc4e8b6a5af64d9b552d20cf3b6d53c6d434e4f2c63b5467214986daef09a6db2a0a049d4518002dbf1d39748256bda5501095f82cf875d904009b0531fef99cb24f243606299d4b2b393c48d463ad9b1068ad6aedb4acff79de7ff9e5113af1ce8c4a179f83cc3b9c24bee8c85143099c55d25ba93a8ad82d91e68bde81ed836da492a1162e6ccb6ac52f406fea832f4c12b530b2238c4465104cfc26f76cf52b36e4fb4e279ecc8679c84e038a1e03b000110bd1dbc4f4951385d39d427792bc856f7b26dc2673729506e8ba0c188597c9d322598263a96d346ce8e3a396746da65e36dd0092d5fd020e15bb3bafca98b11f5c0b87502b429ecf0b03c764c1d5a366458c60502bae062e1f4c3e4994e842664164dd608a70629eac5c23f135f53c3430586f0da7740be82a462009df269696c42305e785e67712ac529e9650994a6d223a5a40a16d85f2a135bf10cd979b4fb297e7a330f05fad5b7145a9e2462692f5cff1771c4afc26be951b7818ff7f81606b4d815be9d2eb06b2d4c6fbe67b0d8c594263ac8497612487caa232b6ab75284d1c9b662edb5024d5eb66808c30b5fa811af3a8f4a4c38dfc64b935b60ef5dd1ebd52c00e72df15b43e65ca7a1be8632632c512d3925b0ba17838f49f1f6972eb823f69d8a9eb61b4a0fd011ab85327fff5f8c0b8ea3ea0b29fbfabc5667a868007578fe061ba3130543c77be0e02c54855b9423028710bbf93e95d9793e0a5e43fa2dde2dd1496e9e4ff1882d19bfe40e7b864b574449f2d84bccbf9788420d18c1b74086e7ce69fc37dbb4c2db51df556fd6ce583eac58311d731c438a3e647074fa8aadd845e9bcd4f3d00cac47baecf54c57e575ba7a13d49d9324faf429ebe9a3180a952af694211a8c63630e413ac207bface5f4bf8a0d4416c16765e379c5d7ae30dfa167344843e9d255cab9613c3705b78a84255da32b6a6a1ed8f070c6432051454f94e5fbed5210f60979978198ec2530a3fb7b42a2235b68fb3790859f9c146c03400107b1c98e15531933b1c9d9f83f2204f764522677c59ad26f0699f57deba2f9082f1b79ca99b377ce3e7dac22fd3c819a40a802b6d38f0233d9064ff68a82af2b61bb1acc62ef318c9965041024cf60b0e7df7934cb060592eb24683f209cfd2f62133b9c4387dffc8009d549a5aef8fdfe2c2232bef03954d5a31ae766401ea67f5af388321c517829ed6997f717173a2520015263f6ca708d6c075c39adf0bba5e835f40bf7a2e6d8ff57d7435e94a9fa09a4a5d65163f276275f52b8ddc385b7c969e8deebf523d58e5a4214eae7561c41085db7cb18ba447208b252daf4327e24ab86feb4b734fc16ebb174d5857f4d3dbac267067ead88f6a37ef0bd60d4f80f7e52ccf854baa37c78142e05ba5436b071cce8c10a9d4492580d86a5d12cd1bc3eda6b42e75e902e93679dfcff1e40d2e9adc7fad4816a7b4a0698504e924783c9fba61b25a62587946aa6dbaabb60d7881643d49aa5d7850eb2072c2f27b07ad78f3cc8e961534112487117aef18f92a79b89959523ca98044727fd0eadbbffbdd45668ed82713c4c93c20bce4db0dbca732f341072b36ad76ac0e9a3dbfb762ae0220e4e77f49740925e620c85a41d71e8d09ded6ce815757a76b75318af82496ce9d0a9d401014adacb9dc162664f94bd2f01bcfcd498a53251d3679f2ee4dedd7eec7eeba26dbb7b7633650b2533b64f6c3a50bab6666085ff2dde80d3e78f42b128dcf6b4fe7b1173908e4276a4ef9ac3819c09f668bbb2c4cd379e94ec4bc829149306b89cfd4483d2c374cdcbaa51206c4c77c7b0475cf32c06a10fb453d272a3527dc76c1a852b46deb38674fa4f278d0c6865cae16e6bbe6a3834b731f6748b9a2cc13d9f701334b92ab9a45ca64300cb4ce2b25104698af1a37343d2c273a8db3049f081ca2dd0d7084ac470e3a081f09d2b05d700ca3316e11e13674e66c411230c5973df5bc909fa3f5adcc2091f39bf762b769e0ff1263bd2f8bc87ab99771138cf6c8047ea5f17e06a6b5b8e168db037e703925f126016ffe4cf4853f8ae4a9fca903ce1566ace655baea4e3e4d5c111543518a2ffa4948411644bd213b6e782d2169d8b88d65a951a3c8db8593759028f7950d667bae64088ad0aa5e8bd23d9a3ed156ab72e3c69921757b4dee25a218c8d2140f92d883f43a5753aa8960dd2815dde89aea059d774e9b66784d5fcb26179b1758ca813cce0434050f3b1dea5fcf8fabda6c76d5d14fbd3686c98ccbe43cb03898e8e7fb250817fdd7166d0a63531c3ea2609e0456afefa81dc7841bfc023eb28287c346d567c7b386013489ab488cf9b6af3e641986e15063251201e66deaed45f81b513886916f8cd075a79da4eac993a1c21649c23946284fc4a6178f75a7ea63f25d10e55bcbd85a30f0dad344985364e95aa76dd8e10ea1b6542140a0392f629a5b2900dc30ccc5f06d800dd06b203cd8fead96bab3625ecfe6c35b54bc07295ab7c85e28384e227a32ef97f08be128ab428617900a0c0c9c1c9a88ceb171ca46850caf8fb4a3e3210ca7a423e043648381eb5d1f75110875dfc52a7b6f7001dafb04231f52be886a3728c49319d41980f03cf152ce486a34d0a4879bdde390a52c77eede7118dbad29cf8d4aba441f08290a4409fca9d6339789beeecf826bfab5b788d15b68fddde6ee2015aa9348b6c54f0c2354b5a6d672d3bff3e913ba1477cc199643468fbca0791c1ed389780b07f33ce4ce9d6d14217b23d6c8207be2bfe6f4eb7d8883b189c758a5c42ff7d60cb1562ebd147af7618d85c1c44026e78f0fecff36d90510c3d66715792bfc7a188589217af8df2dd5b7eba84b4f309a59aa12cd852a9bf5a526a2d942458815b6b9bc60728b5b3f8ae517ae75a0c16c46791bcf4fd08678694d3f032397491e2d877efd4cbd608f3bb976aeebf76f3f2ffca47012fa50c985204b4e57495a55b5431f89f70ee1db995cc890c5dfd3e83fccdc77f121150eac2b77c3ecae57f3468329bd8ace028a487bb974943216828927dd2b2bf4e136ec799f9a6ecb0fd926c022b46cfa4e7f4e9d62e6580d95aac982a0b4a2a775acdb23587ed3a1bdc51dab7b63b158dc9352152a38f7868f2ff38782aaedd1c35c207b38863e5f7c2db8e3a15c09f4ca7da7c41a1680552ab80cc3c7e09931f290c6ed583e817e0ab0a2dcdba04d53ab6671ec4f94a4423c2f152d983bfab2f90f78e42e94e54a4e3dd37922876a10e0676a696f7315b1ecbf4e67683cdffb556638c9acb538e71b989584cb8f05df28f40b5feb979fe854b1f620aa3cc7cfcaae462409a31dd668d4f9911a09a227be7e3582016d81238c1699ac4da1d2b64a52f1b15681de49cee36794abf69d1cb304800b488e938561934804fe88628862cdf37e307ddf284b337b185bf61fed7d4179c8178a6fa549316d78db81e768f024331fc4acdd5efeb1ae255db700d0642ba9434622ca6aae90731ab128e7c5b3282d2168b1abfea75439765c7a34f21dfbbd3d94162dd0ffb446870c3931cfb8122b24d72b42c4cc4334b4f873c2752f594bbef09d33892c002623e7c6b454b0d01c96d8649930538fd22a594a59e2780a2e67f7216ef70a1b3708b9a9da5572ba3c624c58b93373902e4b41d79a1af86e44d7734f7200fb1d28d01447fd1bd42a0c8c15ee7f7a061658742a67cd2d3bfcbf780ec35aae08e84172f4966840ac43f8c3cb7aa819031cf9969199db99cc99770c54614750d09ad84cc754982e193ee75c8a696165873739f3b14e9359ad3962362af417dd5f761760402b0c8743ad8c6236bd371c44ff2e580635db63dfb80aaffe4ffe607e7395acdeb7ddee96188f023d0a15e4d9228056611baec40ce8cb43b6d6f1a2ad9d4fd2c6f0b78170551a16fc37d6bb857d327b76a42ce21b99bd1454205b3b2695fa8c1ca2c32338408f461b0084830a0a7fca970df0d7abacb1787b70a54aaa1cebab49c875e3664feec0039bc53b73870a1f17e210c8ba5d78cca0c5a8dfadf42b646bc948cd4da6a8e0299a1b42ac554fdfb49f7262f2d2a7cdc96ce3fb8501cdf6ae108248b5fee66a4244bf8ee6ece71cc0b3b97bcd03234af6b1ca08df64741e6a5e7ac047cfd973f76ec4be9cc6ac9aeca49eb7f2b9db4d083f93fe401db8e785a0c0cf207e8146872858b9002f9f81f20eadde1e9bfb2d5334264947fb8445381c8625e671fce0155c9b53d822e9f10026bc4e0d8945e103fd20b2ff45399b0e8aba37b8dbea4f4ba14b54a7e3520623b18b8c6a712f91c793ba6cf39aa02178c44a871b40dc1e0456787c52f1dc125f64ee4233fe14aeb81641260685456eb0c608be69f34f83a4542be287ee254d795397e122a3706ece59f7e9becdd881c08013e302d914e8c525e1d6bdbdc64aefb4802141c6148706bd5cfdea4b58446a17a9dfc8b4f6e9239ea4fd718ae17ca2bb4b847381d437fb6feecfde04bedcd213fca791909a374dbac6c2fb0d52758bc2b4a6d914d28e5d2a93bf797c7d42f01ce04cdbbd3a72d1b33f6c2f7beefba117b174b822c7298451ac5d1e8603ae6dbef413cd130477cfed956a142d957fba33541e1784b64a672601f70fea6e276c013b710874166cd8ed5b053eac3ab0c3bf1a4fac881c988034577c0305842d6578cd70cc802d26b3a78c389c9045b683cc3bb3b08be81b1ce9762140710f4743c59c5607b6c30fd01fa0f5cf61058c666cfecf8f7041d3a62c474b640fc612752634a70ed15a517182009aafb158a2b43c87369cf448e6d183997aa27b586bc556ca96394689c36fb78e2bc9cfc58863e9b2fa2df1436ef1b626a2530d5c97bb0b9f2eeff70e022629aa0bd74e5c383cc765ed02f03cddd74d9781c5823d57026c290207d19c8a64d702b643549bb000660e13577fff822319fc3a4ca6e3edf86a97e3628dd1d0e09639f274447a7976dae95bcc91d15f3587c40bf035630e20e58e5e66c738025b209546be90bf9b246d68dc65019a3238dad821d1260ffdd7399e244991885515bfe33672a85eab03d7e106698fc290a788f7afc724cb296d51884badfadaeccf886484b4a0ee564a53c9121c33bc9c6c7a017070b3ef8b9739e731a4c71b80a2c7925c0ab7f13cd00a5b8d2089b99582a7f09a7f3d0155793827f7fa57893c47fca36555b0887534d15bc127ccf920a461108319aa106be604ac4aac93d5f20cdd7531f182b219530d3acf5e664cae4881742465c17142e33d319b3b35d137be00f5d6b38dd47ecadeda68111918df3ebb44a4c3c94d6685007219f40161b57cdb2f047d32ff710c0bc7e3dec548b84fd5bb3cb8eb4414246fb97f4b7016225e2ca9a977b245bb8fd67914dc650057498498ea4de86df115c7f8553fbf43546b3dc2b9342c1b1b3c40c10bee7d474b0db1bab578b3fbdb2bf22500acc7a532498d73675756b3212a5b6f1edee5c33b502b3464094bc45de0a8f6adb083cf7c48fdf510bdc389ee93dba9f8b88126ecd30d0e9af0c9b011d05917f3364bae03dd202b15e6abe685e1666dd4307d5a8bc087c401974a19e4d82e459a65817bd10a77d39b3db2ff94b9db302df6eefd7d1361ca0ba5c76688683163a3818b72f29cd802e1698db56f3a1e33189dbaf7c3a52ed175e88dd26e225b06f1e7b9687f5402f17da25d24bdc2cfbefc5928aa71df9e79eb5a7c9691c8212e7cb6ad7208c801146089723b0c74f7b36659ebfc59f6c222c936f87731a4a3971847c54dbb99aae0c77ec5eaa4598bd9b5e7aa6219a74a2661d1825e084ffbc90f726b5f626639592c14d256dc16b25f9911ddbbfb5ef184c005e33f080b5303dda7d1f14a2c00895e6843fafe28447397ad9ced6602482192efdc7abc55d38d89822c7998b1de7313cd0d0b80c6c104852932828dcd10f30a74609a2335c3e3869f56cd13aded9546393adc3d8313ea02afa034d8113ebae401b5f0cd10536e294651923ffe95843fab8f2e810eecf95082c862afad8fdc0a3e7a7d8a0b183cff37090645142ffe5e90b7d31ba6bf3387968f7a58ee954df5e52b47ec3509021d7df51bb02c3ec4d28b3456e650a95161ee608153542e4a036253dab1bb809482b7cf5f7ecae03bdfecde9ba69be987f14cfe854a2091a3d40fece3f7581e6022112e863a83f85fac1f1a2478bf4d3859cd61a7401dcb7374fcd355ab2a41a22d90270890c4216c087d7756684accb024a94aab2264fd5cc6646ba90dce601823310345f79b6859b5cf8caf6553636554c8f6de8b00109a3974b957e18b3f2f5784ea4098c12766ec3a1e1fa698b71d89d60112db17ec4969df001bd69aa5b2341863dbfdba5b2f92e2b6d757755ac813ca63f8a0c21ab0520ffc8ef1769b35e91606d26bc643ff1582b119b001c70a96688fdaa1e129191488531c3fbc27b166f10ca6902c938774b68c498e9b790a660610ff7f9e5db44763753fff880ecf50a9fcfa3bc8d6ea6eabf8f954d85edffb51ab40fb5f91c906ff5888f26c42999ab2773286f4614eb20774c5cbb7aaf4fdafba77839938dc931a9f64376d1cfb37961019496ae40c8a5bed229f2087e8d80737710583e90232d79f1fe556617617479c59710ea989582fb5767a515c61d41a0a6508b230a4aea748758ee1130a9c8d5e265a8820b30397accb00b8caad243d58c2a84e4f24febe25c887d6d85b21337b2f35a65a823addd53f16958ee0314c879242ec21eabf8126d36d5c2bd98ca8ae42b8215826100b66be4761efc5858fae0094f29c500fab804c9b7e9293e2deb3468020ef4bb8f5dc144be221dbabd09e06b2b9aa585ac78ed0193970cab40c506da2a4b78f5a4ceda125c80d47c96f72049808bcbc19000ff49db91f56c8914653afe114d29453f305441e89166a39a35f6352b508d848819a3ec453c94ac1a83a0c34f1f95d4a5daae07627bdb71d26d2c8c845057b527214d119db2f99f32782f1a9953013a4e510691fa86f949a5a09e14140b25cbade833223c6b649dbe9b411456aba1786812bc9092cea031fa42a0f787bd10c542f9493fc3f2ed46e498cda2c8d408ecc578ceef1df9272908143bd22b8f5abfc312f9dd1cabcf3b1be17926cbf9f10232137b3615cf1eec09f0f2e138b003387eccc20273c433c5f1ab17cfa4d5b6ec9cfed096f6b8a2b651e3f3f12b9d36505fd0a729d5a99c6eec7ec9829cd9fcb231892853f1af2ce8e738ce1326779100677014504e06c70124b3ab02a149df229e71653a294f864e77fbd63ed36f8e6650d6f2268a539c5f2b78151fab97e9b30748ef94abfb33607afb99e671c6388d247290bd8a4ec06be63b6a5566b2d640d5053dcd9fa7796dc28e328db9644ad4d35b53ac30f05e37a2e2df9e84d16f14d7da65d32373c9dcfaa0c842328de6e102fccf43394c71319ac98cd4d425e2a03cbf7a7172bfd3e2defe77cc1364f78f8731af078ca5d2659f41e57669c3e05079c6078987fa7b2a831f9525466c13a9b3a5c3f77badf391c5e7124dbeb843af1082b0e54f22277b24ec3af04ab52f7e087f089bc0a871757e5400b2be83dc033c4d11773121dd818d88575f39b2d75b8553da04962d85c5ddea6afd885a5b14860ae867f3668ca15cbb367f0d5141514bebe2fbdc013a0e0abc5e16446a1c724caf687402e724226d9bfe95fd9c1c383a9a7ad581af7964beb122cddb639e59e4bdaa60804ff311801f5a8fc90a764e5f346875dd590ccf4036411088d33731b062ff44ce947f9d1405d476148d26524c121924bdfaca53d66bd06ec7d344b7bae808d1befab607c10703e67b4f82988366926d44b414a5d5b17ad9a994e8a57d015305cc8d107594955b1b88bc03a23d68149ad67b810da98de472d95f7cb38f633cc280c80749d26a3c471117fbe70abaddd876608edc34fd57a7e420ee25ff6948e158638b0dfb5eeeef34020846728901b6ea908361dff61d44d427a1f93eab1a0a8ebc852fc0926e44ff7a4ef0cdf88669a19d3933b4b9d51ffb0b9bc5b87cd702b633f676b370b9f70a8dfb3adfdb6a4d627b0ed8831761e660c0c3696deddb10d1a7938f888aab8204ebfec718b0862b4839a6a979d0f41e5f0064b8e5a571c9621dc0464c2ad389e952358aae17376b786849e40d1f7d29d271defe850617ef8d1c18d04393bb381962d003978b8ebaf27f9e62f46a06f969bb6fa8fcf1fd7409ad4856978820b2da358a48967ab6701a5b823352d49db05cafe16b56eecb20abc06caabc3b16f921e0085b17ad9403e85075ab4da3f329be5be41d87c0e2b6f7ffc2e9a57031d14a72fcd1b6d2653535ab8810afcd3a3cb8c5a74a5fe1f33d01ac4b06e9ccc94d91af9f8f43d3e3716b78e8e3d45935a6c7ca171cca86d0b1c8644911da1ef3a9671247cdeb2df717fc82cd6e31ea535a893b6dcc0e71cae2471626789429f51adb4fbe178c02b11e330e425b4a1ea5945625eb7c9e413b24f81641f3033695a10c77048d9f62219478021663820d47110a15c83f34cfe984e4c6d070ea82e9f3e5897e9aa298546b6dd233c3d0ed313ecbffb0c7ed952b6d257bdecffcd3859a01b5af46248e725460a483d9c961c9604e99f064cf9dc1a02be0b7aa573b9372ecfc20fce8396a78f1df4286cef0ef04a78997748c5e5d1f1f4c5d21c104234fa15bfa6946622f38485bb04179cb3d63847050a18739a07748386abb2959fa5fbc13c1bcde3a790450661589889dc67210d2f5cb7fc230b3de33f25a5738e21e3f8740b30d07be1f6dda14e13f577a392442e36977bbe966d0a3529a55f8cad225faae71affa43a21a7c5e0f616224afc6f602e6850698efb4c01c359b92cbe491f00384194487dab3efab4f6868c418be73ea407d974fa1930727b98db8d45717f5e8be6f78e090b5f55ecab05743a0e30f80c4c4a8778b5180bd1cc7c1f0d4f4801f402b56b9e2bbbc64b77dc78a3db6ad77825c6075b4e84ef82b4ff1a5e0e71eecb3705882de29f5066ee3cbf0f2e78bad16ddcbe340935fb9043073d6f89492d57a4fb9a64bdb5178656cfaadfeb465dcdb9570af9745534402efd204a918442ca74820a08e14af9c628b74cedda894f34724828207f6cd0af7aece293d1ba1e98b911e59d7b1ee381f6fc696deeff76226daf66d0e3dbc46679a15df9f655cf3ef8233dacf74cfac9ab0d953a1fc7152f67f43efccad189c1ee50f7c1945d105f04b583987ad2ddce42f7b583a2f3fc3d7fbf54c1d67af28f39f004ed0af1728c830d5ecb38b5964abf9b8af270698013538a52f29d82febf5ae16a4e1fe98e42b572d5fd62fd7c952cc9dfcf3af35676a4a82c11f460579bba9db1b4e3ac10f33c530052ffb664e12608012c99d0912cb8fe59c7c9f7301f79b38ec0d8f81238f1f21f9384137114f8a49f0cd5ac2883aa0decf2c4202e3426383319172d1c6487cc9c17ca8bdddff4e91d66a7ad2b59b5a02c70a6f27648e8ba0bc6aa6d276400aef0ea8377ad4bc5eb241fe3e29258561d15352e7a847293977f668aa5c707a387b6ce4a1cf30715af42e42c150fc646cf50ba08a8a573c33a102c1721147fcffb6aed3035ff2257fa7484a00413bece28c88d9e21d4592c78859df10b74a563e0d576c465e82d38ae83734522eefc675e41b96536a6bc52c83d105bc0f18880ffd2cffec3bc14ec834e8dbb77bf5f7457831d77cd3c6c58a2ccb0a18567f45657e238d429210d20d93f7c8a8307cde355b8929c08477217fbdbdbe8ed7d79b6c4f8d06c9c380eacc099de1cd763a175a8754d00820f62edc93d4c7b51698bee4fce050f8b99df2038fd9ecafe257e60576aa944259dec7fc2f51e9edef0bc1ede5b2b39bc397f45311f0e95cee17058bca1591d67c6e188b4c4e5aa1b3b8c633ad0d5203bea8aa9ba4ee305c82fdb874989fbd30938e9185bfb3783645b4e2f3e98fc8cae1f4ea7e18d36ff0b8337415a18344af4782631947a9ebe589d60d207b41380bdafc77892a390d99e22675d5ee5a840dd2a04a21912c09021e48acace9b9b577d40c761deb06dc8cc84ccc304ef22e49919f532f57a1411e5be94a5e73b2b77935f8d1347754cc1f7fe0d627c89cf4981a6704f9c9993d74e196fd5506a0c80060a78af086744278f18eeafd20751dbd423dac5f002873bbcc6f9c66ca57f9292451014a12b95d511394957e030a0b568b23bec2562519e961ec9f8c314af6ef7cfa52eaadf3e14da10b361e72ac76983d383e90a70c718c1d96e2edfb81206409fbc2f7e73af87715bf810981c343dc8f427de352e12fa9549513e7b09e62ee7e10b139f07e12a52af8bf4083c159d979d81f7852c9ee606a0d503d5b5681459c673909a0f6b79f90e1d3c184c645e95f1cc1c4ec410e0192726ea8a459fad1e4f4ab406fe58d545fdbde659f1eef92c8f267560b788a37d9a5eb93c22f6a4e059e205edc04813053e76e651be51e79d312f275e7617ba4f5d3f809a991aa377bb263dba27b28adcacbb3d2d9faa843a2eb70eb3fb30543baa81711e7c149c877489f8a9f0ee367622e0f7e31f7ea15b1dededc4902e1fbc4e1e45ad85bf8c504b6bd0eafb01c69251715bbd249891e388c28a6a7bfe56782b06469e11dc1dd0d41614b30719ccb6e51907a6a1a5e11e0d39aa02b7bf6c1e18755e65b4915703523138600d66abaa94e86676c6c76e06faed43a312a84f7846f7161df471ed4ee468a23f5c424f06ac01e6b5d3e12b365ee535e2b8b700bbc453eca7105181ab3dc5739d3a25e68f620cd80c2783aa49b0c7ecbe3f22bc19bbed300737d08d9e82de11a0256b7a46520fe1ccdc0487c7983dd85d07ab8fd90d781b6a2ff6d476d043f793e884aba8ed2a47dcad0172a7c90f5ba522e6bf70683d42616e8b8ee4e85a00079f768e4cca4b38e6ff8522ea7ccd366cb1e7f1463722599b4b781c3f0571892964f429d30bf9d087463cc3a32e893abd10f73c93c8b126bde6445d12b4da9e205325a9174639d9d2e1f174276c1653854f24c09e88ee371782863b5f0041717ce8d18572510a88c6e03ce91e12a8f508e2bf5cfb3f5509823f58e0717c1d3956801f2515167c60a10db19f95ff51a527538c9db75f05665811c0e2a53b07ba0196735c8fe6b59b764ea770f82d5768d19fbc307eb8911d4655f687c80274c0eb7b55e18c3bd98a7dfe15d5add56a733bb321278e45e2d2dbd70c5ac0aff70d438e7bcbcc226739e9fbdec0fd4701a5a62f5b0fdc3fbcb0e3cf07a6119583ea20802555ac7066e66f2531229a7b2a1efbfb74ccf613174dd477d1d934609539d4129639b8883ff1f7a3e8c769415c4b5e56697e908d6f5b22ad9a798d4b5f92ab3711d6175ef5c267be0060f09e6162f75d70f4408baa9ccbf0a4f9c9c60e8f0cfc6c3e99ee7793881660a82d68516cf02734cdb1fb2eeda10ff426a7d946ebe53b3ea09eafea7ae262742c970eee95be17710fd9eef3adb24824db3406739f7181a8f11b67ce2b0b0616354d3b8c10a8a4f72a7acff2ad277f4547114479e1541c89d48d57e549a25f963bb6e74e8a93e24b4ff06471e4c4c39504defaf6a4005e752ed7e7c54a34a3d8d2984b26c9664ebbce5383c8e6f8f52aa9d87d29e599cba573683f85803eb49908bf7c13ff3b06ba948d0755d1d6c3412fe70cb7c7ea0413083a8eb58c82c0dd7db9cd0661588c70f2a6aa79c1bb88bd9759e27b67ca05cfd74dc05d74e21376d6c951b1c474e0864849ef19d4f788528bbac21488ebd0d1fb7e93b850667beaa022488f9b9493dab33b0c06ec032a6bc1398ab79a3e2076d987c65473063241b52e7d87e8664c7154f923acd70c88a719e904cf3acdcb10c88c47815383c3460ed7a098a6e6ef80afc5abb60d7e3c7052917e6f9982c5ca1348a80ea1908e4bade20fddc8f1c44bef3f73f8faa46640c1094017a1a758991120b6d44669dca1daa7268dc1d7154fe1676664e0b398b9f8ccd5d24fbc327816ff801ee24264dc6ec3dfa7da45294128dffbc0840cd2e5e3a6e28320a4738977ea884a1a46ffcf594f7804f0c3596236df61153af23845e37db68c04394d949d5e814439e50f87d41c64c482ecba24003bdaf56d7db36df83168c18701f1efaa0c0267bd41b01815c3825058619b343c83597ae012920bed68c1b302958285d5fb60ff651578c4998f088adcfd37f518cc42d04b2ea9f7bfb66d1e5cf39e965b47af77445f73b8339d4efecfbbdb264278fd406db804d96b038c45186a567bf8bbaa8260e84ef9b34671722916c61c4db2ab352c8c18c0e495152baf40dcc04ef7ae9fac07cadb578cb26397094897e5d49e1a9d09acf8d3b21946172aa67e33c75696e316a63d20b003e182454ad973f0339ddf55d8782d9f3415ff8cb2e806d4677388297e094c19402d557de1a18d2cf711ad27f8cf97ccbb7f2472030651a8d8d7aaf335d3f0cd26be4572626df2fde7a90c6f5258b5136694882865be7d4f3a3283beb22dc1ae84a6cdaa77d274ce2b9511f33e079b8748a79708258a59e828891fd6b122df609645bcb18f2f8f47c10a3796ca4aa6e1d7766fd17616e033b50759d29526af631b023246980c682ea6cd5d1b8100d48ee2a25994e8e05c9694c0f5514af5132cc967d946dcdf734ec73f086bdaca9106de8bae2d209ad8a65f7b6ee285d21d65be3d087b760d88dc187a60098e414b36e07d6f377c60ba3619c27aca91c3eb7325303be0ea63e390b9021320dea16eed94a2f2cf9f5851f73f50b99688125e52741cd2e0067c085b2e4d41785a3e0fae0b5e389e932285bef96fa45b94a4ff65f30b0494e314cc5714cdf4daaefb77e7a1869f8c71edab490a82c662d0b5020c46f1a39592b96a3f062f17167f115c9193b844c013c6314c85e64251f29ca92dd7e23ca878cc4b16e93290dca5a5bbf30fd8a56675a7c216ad378e69e6bda1bdf458d19b553a3c2380fc49d93b54d0262759c13a572f501c6c29c79834046122c833d20e184859bb1f705631a4be76523ef3040b94cf9d26af46a9a277c422d76572f7d6d692ec27fe448141f5f005aa671903e2c7eadfc1b66850331bc4f1ed035b80f05488ecd3e4948f34ccc911c18e5c6acf03a89b639d1d9741d7b36270350fcf11e6ac15df632f89b58be45e3148fd21703bde2257f8a35981129caff00c09b43adfd819a8bad2dfb76ea927db8f842bf54ffb64789488130dfa21eee4d695b8d0ff281101b31e410d1b3e7372b67288024481e47bad2611bbfe55087b4708cfff3e7c298092823f5563d221e05135f1447d78a60316d6b2c0dc4385cd752b1f02c93d23ede936fbaf8aeb0779bb964637044eab167978623811812b3ca761a5917c6388301e9093fad692476e5eac37f56f446a44355590ca17b1d73231554358fab06ee344f3e6cb6766be69328fc1cf8fba54e480c0bafd18b506a7e2c19f056863958c5bb0ba329dc879330d228a02b857b5a630c47c57abedca94ea2c43ac3fe18dd7e3b0ad7111e1bcd6a323d697064fc7d7195a547918e0cfa2847d195bb9b13fc113b3422a1f296ab694eb6f7a99db1cf8ced88ab8c4dd82b9ed33b0f751a06e62443a6b41d07ec3cc05708711b3f5084dc3cec85787be93e9b68b6eb37c47b735a7f0006c43f7405bf2ae6dac11a8f676d7625e633e066e11a913d1d83ba32353819c8be5d5c529e0bb62c4ef84b1212c3bc858d22190eef674b6b3f377c519657b1d8215a815ca483452e74b6d702ef77a1f3bcaf5825a4d66a599999f2e7a83f1d56d92e7db29d2333e9831beb297e2ab396743738e72761c36586297bd2b22585a12e41c438da7baffa0df81fe17354f73b06482b96b96871ad8ff6c7259b3289f01ba7dd7b5e239878c54ed91127c6b2eb3f4da89ea4845e91a61fe5f7cf0ac393940abc9bc5e394e79fb64128c06fb7c261738d0a37320dc0900f1d88b6a6f0ec3d8984e13b83f47924a8b10f75b9e27fc1d1894767c61540f968236ac4e70dce14ca64a982946b08f417086b9782dc9cc619e988db7cb55ac15dd87e4cb38783d41748eeb46faf0ccf95c9e6eaa1dbfe1fa8dde2794b48d1c4e3714083fd9b1c5f88f2fadc6e58b55057a4defc33103bdd33f860d59b5b43645534ec62a7dd037a43075a8b3cd534f0f09c7057dfbe3f5bf755a0a8ee26f02ff9584e2d6a8e4a3b6e6a95fba3ee3ff4e8dc164d1d15c37a5ec1c84f0ed56d88dd29d8d9a235a0dc41dd08b8a20c66d8e40fda3852fa80519d4a7d2698ad73c2977d01ddd6f83fd2a36aecd356d0b833ad7327b07a3bbd744da6486e4e902a524e624267f3ea2531da3143add17eaa02f8475ff62dc9bc2ea66990f3cf8591a0667c178d2a479ad0f5d97de0daf06b75f9db64952595b0a8a65b5c1300aea36250b390e7fe722428f87a043d5bcfd5d566cb1bfe40c0ef1fa7d3836d5dd6cac9b9b381fa7d78acf756c1257512646d3f53ec61b29070b9ad8cf2a0d061e07bc5ec33603cad03a7d51a52f8d2ae796e83c378d8a2852ffa22e1aa9c9e3560a38176176444ad60ab913a8ccfc5adc9fb09502f0630cf8d787f910e9aba1f59401e3bc2b688f4922f061303c92636782fdc27eac8975a948a84d4222e9d5185164dd8532f32fd196337617d02e1dc323b7f1ac19c0032b2fdf8dc6968114ac2f3f44fadf2a5422d5377bc13962ff6a6c1914a4faa94fd54c7adc7083e484aefb8fd3eb2d10934764b51f08df6b4964ebabc2890654f0069886d7f43120856bdd823c623a86bc9813c853f4799051df5ac8009c958ea3b7617ab49bdbebbab4bf2ff6f9e582ab2a4fe876710575d865d6b0c596947c4e5ac156feade9960da408d0a1477b6d1b86b59804adebc2333888ea20fd5ddd3eaff392a2a700bffd225fe17e38ef97b3f269b970db0d51a8b9f7f66bf4254ed82fb634611bc82f6c6402bc3f935655ee1e9c0f8e5ea9cfb6ac02306efa33f62fd1366dab5fb343a7fc6f0fe22d2998b0c8d85c1057d742e597985c7d4e6320b015a9139385cff4cbae06ffc0ebe89afee€€rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootllvm17-17.0.6-150600.3.2.1.src.rpmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlibc++-devellibc++-devel(aarch-64)libc++.so     /sbin/ldconfig/sbin/ldconfiglibc++1libc++abi.sorpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)17.0.617.0.63.0.4-14.6.0-14.0-15.2-1libc++.so17.0.64.14.3e„(Àehy@eX§@eGƒÀe1@e!H@e @dŠę@d{+@ddÁÀdW’ÀdBzÀd>†@d7îÀd.Ž@d§Àd m@d Ê@c™@cŒ‹ÀctĐÀcgĄÀcZrÀc< @c,N@c*üÀc@c6@cAÀc”ÀcÁ@bś’@bóÀbòL@bÂÖ@b«@b’Àbm$Àbe;ÀbIŒ@bIŒ@b$ą@bÛÀb •Àb D@b[@aûĂÀaśÏ@aéNÀaœÍ@aŽW@a(@a(@aXIÀaEÔÀ`é‹À`ȚÿÀ`À`y|@`)À_ùšÀ_őŠ@_ïÀ_ŚSÀ_»€@_ŻÆÀ_”@_À_"¶@_*@_ û@^ńîÀ^yö@^x€À^hÒÀ^cŒÀ^=Q@^;ÿÀ^9\À^8 @^1sÀ^.ĐÀ^țÀ^žÀ^Ä@^!@^,À]ü·À]èń@]èń@]æN@]ÀÀ]č{@]ȘúÀ]€c@]K@]‡b@]‡b@]]2@]VšÀ]3@]@]ŻÀ]Ò@]ĘÀ\Ű À\ÀOÀ\–À\ÙÀ\†MÀ\„ü@\u*@\iLÀ\=Ë@\-suse-linux as implicitly GNU. Without this we would get library calls for fused-multiply-add even if it's available in hardware. - Add openmp-drop-rpath.patch: backport revert of adding RUNPATH to openmp executables. (boo#1206837)- update constraints to exclude workers with very slow CPU- Update to version 15.0.7. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Build stage 2 with -fno-plt on x86_64: since building with - Wl,-z,now the PLT stubs are basically dead code, so eliminating the indirection reduces the number of branches and improves code locality for the quite frequent cross-DSO calls. - Add llvm-workaround-superfluous-branches.patch: hints LLVM to eliminate branches until gh#llvm/llvm-project#28804 is solved.- Update to version 15.0.6. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.5. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Remove obsolete lldb-swig-4.1.0-build-fix.patch. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.4. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.3. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Add llvm-armv7-fix-vector-compare-with-zero-lowering.patch: Fix lowering of non-canonical vector comparison with zero on armv7, preventing a crash (boo#1204267, gh#llvm/llvm-project#58514). - Add lldb-swig-4.1.0-build-fix.patch: Fix build with Swig 4.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.2. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.1. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Always drop -gnu from triple for consistency. Patch a test that was looking for -linux- in clang-test-xfail-gnuless-triple.patch.- Use correct LLVM_HOST_TRIPLE for riscv64- Update to version 15.0.0. * For details, see the release notes: - https://releases.llvm.org/15.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod: Provides debug info to remote hosts. - llvm-dwarfutil: Can copy and manipulate debug info. - llvm-remark-size-diff: Compute diff between remark files. * New Clang tools: - clang-offload-packager: Bundle multiple objects into single fat binaries including offload code. - clang-pseudo: Approximate heuristic parser for C++. - Rebase patches: * check-no-llvm-exegesis.patch * link-clang-tools-extra-shared.patch * lld-default-sha1.patch * llvm-do-not-install-static-libraries.patch * lto-disable-cache.patch - Drop patches that have landed upstream: * clang-repl-private-deps.patch * llvm-glibc-2-36.patch * llvm-scev-fix-isImpliedViaMerge.patch - Drop llvm-lifetime-for-rust.patch: this is now solved via attributes and LLVM doesn't need a hardcoded list of allocation functions anymore. - Add llvm-link-atomic.patch to fix build on ppc. - Add libcxx-test-library-path.patch to fix libc++ tests failing without RUNPATH on libc++.so. - Add libcxxabi-fix-armv7-test.patch to fix tests on armv7l. - Thanks to Andreas Schwab for most of the rebasing!- Make sure we keep -DNDEBUG. At some point %{optflags} must have lost it, perhaps because CMake usually adds it on top. So when overriding CMAKE_{C,CXX}_FLAGS_RELWITHDEBINFO, we make sure to take over the other flags. We drop LLVM_ENABLE_ASSERTIONS=OFF, because that's the default anyway and hasn't helped here. - Add llvm-scev-fix-isImpliedViaMerge.patch: fixes a miscompilation caused by mixing up values of the current and previous iteration. (See gh#llvm/llvm-project#56242.)- Add llvm-lifetime-for-rust.patch to have Rust memory management functions considered as lifetime markers. This should aid dead store elimination to dynamically allocated memory in Rust code.- Don't declare python3-clang as noarch: Python packages are installed into %{_libdir}.- Use black RPM macro magic to deduplicate binary lists. This should have no effect on the generated RPM but shaves ~400 lines off the specfile and hopefully makes future maintenance easier.- Add WebAssembly support for all architectures.- Add llvm-glibc-2-36.patch in order to address boo#1202215.- Update to version 14.0.6. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.5. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.4. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Don't use gold for linking anymore: on s390x we use ld.bfd with LLVMgold.so, on ppc64 we disable ThinLTO for now. - Using ld.bfd on s390x exposed an issue with the existing llvm_build_tablegen_component_as_shared_library.patch: linking llvm-tblgen with libLLVM.so means we also have to link libraries used for that (like LLVMTableGenGlobalISel) with libLLVM.so. - Rewrite summary and description for llvm-gold to point out that it can also be used with ld.bfd, recommend with binutils. - Prefer RPM macros over shell scripting, so that we can better inspect the build script with substitutions in place. - More memory for stage 1 build jobs due to recent OOMs. - Add %_libclang_sonum RPM macro to llvm-devel, since that might now diverge from %_llvm_sonum. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.3. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Use ThinLTO with lld on i586.- Update to version 14.0.1. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch - Don't override default linker flags. (We were losing -Wl,-z,now.)- Update to version 14.0.0. * For details, see the release notes: - https://releases.llvm.org/14.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod-find: Tool to fetch debuginfod artifacts. - llvm-tli-checker: LLVM TargetLibraryInfo versus SDK checker. * New Clang tools: - clang-linker-wrapper: A wrapper utility over the host linker. - clang-nvlink-wrapper: A wrapper tool over nvlink program. - Add clang-repl-private-deps.patch to make link dependencies of clang-repl private, otherwise CMake can't install. - Add PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch to fix build on PowerPC (32-bit). - Drop llvm-exegesis-link-dylib.patch, instead we don't build llvm-exegesis anymore and add check-no-llvm-exegesis.patch to disable the corresponding tests. - Rebase patches: * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch - Drop patches that have landed upstream: * llvm-update-extract-section-script.patch- Split up Clang libraries: libclang.so is no longer so-versioned alongside LLVM but will stay at libclang.so.13 for now. So we put it into a separate package from libclang-cpp.so. Since we can't have multiple LLVM versions generate the same package, we prefix it for the non-default LLVM with a mechanism inspired by the GCC packaging. - Patch exported clang/ClangTargets-relwithdebinfo.cmake to refer to libclang only by soname, because the installed library might be newer than the one originally build with the package. - Use the same mechanism to for libc++ and package Clang scripts only for the default version. This means we'll no longer have to touch the package when a new major version comes out. - Make sure we properly clean up the clang scripts if we're not packaging them. - Let python3-clang use libclang.so.XX, which means we can always build it and makes it depend on libclang instead of clang-devel. - Fix some rpmlint issues: we don't need explicit library dependencies that are detected automatically, and we add proper library dependencies to the *-devel packages. - Merge llvm-LTO-devel into llvm-devel. That's where the header files already are, and they are hard to separate. - Let llvm-polly-devel depend on llvm-devel. - Remove libLTO and *-devel packages from baselibs, they don't seem to be needed. We mostly need libLLVM and maybe libclang-cpp. - Consistently set host triple as *-suse-linux-gnu*. - Only suggest documentation packages.- Fix armv6hl cpu architecture typo.- Let clang-devel accept a newer version of clang-tools: we don't keep multiple versions of the latter.- AND instead of OR in License tag after sr#954337.- More conflicts for addition to Leap: clang-tools conflicts with llvm9 because that doesn't have the move of hmaptool yet, and llvm13-devel with llvm{5,7} as they used to have FileCheck.1.gz.- Add SUSE_Backports_policy-SLE_conflict to rpmlintrc, we're deliberately conflicting with SLE here to offer a newer version than what SUSE wants to support. (https://code.opensuse.org/leap/features/issue/55)- Update to version 13.0.1. * This release contains bug-fixes for the LLVM 13.0.0 release. This release is API and ABI compatible with 13.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * llvm-fix-building-with-GCC-12.patch - Drop RUNPATH from packaged binaries, instead set LD_LIBRARY_PATH for building and testing to simulate behavior of actual package.- Update constraints for riscv64- Add support for experimental targets and enable the M68k backend - Add patch to fix testsuite after enabling the M68k backend + llvm-update-extract-section-script.patch- BuildRequires: python-rpm-macros to fix Leap 15.3 build. - More memory for GCC compile jobs.- Add FileCheck into the devel package, as is required for testing Rust (boo#1192629)- Let clang recommend gcc and glibc-devel as we need both for building executables. No hard requirement because Clang can be used as a frontend only. (boo#1191587) - Set minimal CMake version required.- Backport llvm-fix-building-with-GCC-12.patch in order to fix building with GCC 12.- Update to version 13.0.0. * For details, see the release notes: - https://releases.llvm.org/13.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-otool: Mach-O object file displaying tool. - llvm-sim: LLVM IR Similarity Visualizer. - llvm-tapi-diff: Diff tool for tbd files. - llvm-windres: Tool to manipulate Windows resources. * llvm-elfabi was removed. * New Clang tools: - clang-repl, an interactive interpreter for C/C++. - intercept-build, analyze-build: the former intercepts build commands to build a compilation database, the latter runs the static analyzer over all translation units. - scan-build-py: Python reimplementation of scan-build. - Rebase patches: * link-clang-shared.patch * llvm-do-not-install-static-libraries.patch * llvm-exegesis-link-dylib.patch - Drop patches that have landed upstream: * tablegen-test-link-static.patch - Run tests on more architectures, disable those that seem to hang. Don't run libcxx tests at all anymore because they take so long. - Relax constraints so that we can build on more machines.- Set CMAKE_LINKER to workaround CMake wanting to use lld just because we're using clang as compiler. Fixes build on aarch64. (https://bugs.llvm.org/show_bug.cgi?id=51115)- Update to version 12.0.1. * This release contains bug-fixes for the LLVM 12.0.0 release. This release is API and ABI compatible with 12.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * clangd-cmake-non-standard-layout.patch * compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch * lld-no-version-on-undefined-weak-lazy-symbols.patch- Add compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch: Fix build with linux-glibc-devel 5.13.- Set memory limits for DWZ to 4x.- Update to version 12.0.0. * For details, see the release notes: - https://releases.llvm.org/12.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/lld/docs/ReleaseNotes.html - Rebase patches: * assume-opensuse.patch * lldb-cmake.patch * llvm-better-detect-64bit-atomics-support.patch * llvm-do-not-install-static-libraries.patch * llvm_build_tablegen_component_as_shared_library.patch - Drop patches that have landed upstream: * Fix-missing-include.patch - Always use ld.bfd for stage 1, use lld for stage 2 where we use ThinLTO and where it's supported, gold where lld doesn't work, and ld.bfd where we don't use ThinLTO. (boo#1181621) - Add lld-no-version-on-undefined-weak-lazy-symbols.patch to fix a bug in lld that made libLLVM.so contain a corrupt symbol version. - Add clangd-cmake-non-standard-layout.patch to fix build in our non-monorepo layout.- Don't use gold and ThinLTO on ppc64le because of boo#1181621. - Fix-missing-include.patch: fix build with GCC 11. (boo#1181875) - CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch: Fix target component lookup. (boo#1180748)- Update to version 11.0.1. * This release contains bug-fixes for the LLVM 11.0.0 release. This release is API and ABI compatible with 11.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete compiler-rt-dont-compile-assembly-files-as-c.patch. - Make documentation tarballs more reproducible.- Increase required RAM for aarch64- Move BFD plugins to %{_libdir}- polly-pthread.patch: Remove, std::call_once no longer needs libpthread- Add compiler-rt-dont-compile-assembly-files-as-c.patch to fix build failure with newer CMake versions.- Let CMake files in {llvm,clang}X-devel refer to the versioned binaries that come with the package instead of the symlink managed by update-alternatives. (boo#1178513)- Disable ThinLTO on aarch64 because of hangs. (boo#1178070) - Enable ThinLTO on ppc64 and ppc64le, the internal error is gone.- Update to version 11.0.0. * For details, see the release notes: - https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: llvm-gsymutil, llvm-ml. * clang-import-test was removed. - Drop obsolete patches: * clang-ignore-stack-clash-protector.patch * fix-atomics-test.patch * restore-llvm10-abi.patch - Rebase patches: * clang-resourcedirs.patch * default-to-i586.patch * link-clang-shared.patch * link-clang-tools-extra-shared.patch * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * lto-disable-cache.patch - Add llvm-exegesis-link-dylib.patch: link llvm-exegesis with libLLVM.so, the advanced functionality is not available anyway. - Remove -fstack-clash-protection on architectures where it isn't actually supported, because that prevents feature detection. - Make sure we also build AttributeReference for the documentation. This requires building via CMake. Also shorten the paths.- Add ld.lld as an alternative for ld. (boo#1174656)- Update to version 10.0.1. * This release contains bug-fixes for the LLVM 10.0.0 release. This release is API and ABI compatible with 10.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Replace ValueLattice-Add-new-state-for-undef-constants.patch, which landed upstream in a modified version, by restore-llvm10-abi.patch that resets the ABI to our 10.0.0. - Rewrite lld-default-sha1.patch to be version-independent. - Set flags consistently, so that we don't lose -DNDEBUG on 32-bit architectures. Also we don't need the opt flags twice. This leads to a significant reduction in binary sizes on 32-bit arches. - Make it easier to package release candidates. - Enable most tests on 32-bit ARM, but not for libcxx. - Add fix-atomics-test.patch for architectures where native atomics are not available. - Lower build constraints for riscv64 a bit to allow building on more workers. - Allow more compile jobs in stage 2.- Factor out computation of the number of jobs into a macro. - Choose mem_per_compile_job dependent on build stage, let stage 1 on x86_64 use more memory. - More generous memory allocation on riscv64.- Add lld-default-sha1.patch to make lld generate SHA1 build-ids by default, otherwise our tools cannot process the debuginfo.- Update to version 10.0.0. * For details, see the release notes: - https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: llvm-ifs, llvm-install-name-tool, llvm-reduce. * New Clang tools: clang-move, clang-offload-wrapper, pp-trace. * lldb-mi moved to a separate project and is no longer available. - Dropped obsolete patches: * clang-fix-powerpc-triplet.patch * clang-riscv64-rv64gc.diff * compiler-rt-move-fdp.patch * compiler-rt-sanitizer-ipc-perm.patch * D60657-riscv-pcrel_lo.diff * gwp-asan-lto.patch * libcxx-tests-linux-distribution.patch * link-lldb-shared.patch * llvm-riscv64-fix-cffi.diff * openmp-export-fini.patch * riscv-eh-frame-fixup.patch * riscv64-suse-linux.patch - Rebased patches: * assume-opensuse.patch * link-clang-tools-extra-shared.patch * lldb-cmake.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-remove-clang-only-flags.patch * lto-disable-cache.patch * polly-pthread.patch * tests-use-python3.patch - Add tablegen-test-link-static.patch: fix TableGenTests. - Add ValueLattice-Add-new-state-for-undef-constants.patch: fix miscompilation on ppc64/s390x that was leading to test crashes. - Enable ThinLTO on aarch64. - Disable ThinLTO on ppc64le due to internal error in gold. - Delete object files and static libraries from build tree in %install already, because debuginfo extraction happens after that. If we do it after %check, we run out of disk space. - Run tests "manually", because we've already removed many targets. - Don't build unit tests, because some of them are now statically linked, which is very expensive with LTO. Also unit tests are probably not very interesting on the distribution level, we don't expect them to perform different than in upstream. The relevant upstream change for this is https://reviews.llvm.org/D54439. - Drop %if for openSUSE 13.2.- Remove conflicts of clang-tools with {clang,llvm}{7,8}: the relevant binaries have been removed from those packages. This allows having clang-tools together with older versions of llvm. For a smooth installation we add OrderWithRequires dependencies. - Fix typos in (still inactive) !%{with clang_scripts} part.- Require clang-tools for clangX-devel.- Move all clang-related scripts (including those originally in clangX-checker), hmaptool and clang-doc into a common unversioned subpackage clang-tools, like python3-clang. The scripts reference the unversioned executables, so allowing multiple versions via update-alternatives would be misleading. The clang-doc executable will come with assets in Clang 10, so we have to take it out of update-alternatives as well. This should be the proper solution to boo#1161873. - Include run-find-all-symbols script in clang-tools. - Remove metadata for clangX-include-fixer subpackage that never had any files and thus wasn't released as rpm. There are so many clang binaries that packaging them separately doesn't scale. - Fix lldb version string, adapt lldb-cmake.patch (boo#1165517). - Remove unneccesary libtool dependency. - Don't let clang depend on libc++, we link it with libstdc++. - Recommend gold plugin if clang and gold are installed.- Add vim-plugin-llvm Conflicts to clang subpackage which now contains files formerly in llvmN-vim-plugins, conflicting with packages from older llvm releases.- Add back emacs-llvm Provides and Conflicts to clang subpackage originally in llvm-emacs-plugins to properly conflict with llvm-emacs-plugins from older llvm releases.- Add clang5-devel to clang9-doc conflicts.- Add compiler-rt-sanitizer-ipc-perm.patch: Fix sanitizer-common build with glibc 2.31.- Move clang-{format,include-fixer,rename}.{el,py} files from llvm-*-plugins to clang package. (boo#1161873) - Drop the now empty llvm-emacs-plugins package.- Add polly and lld build conditionals, remove excessive Requires to clang from docs. Fix conditional for libc++ use. [jsc#SLE-7400, jsc#SLE-7614, jsc#SLE-7452, jsc#SLE-8920, jsc#SLE-7390, jsc#SLE-7587]- Undo spec-cleaner changes that we don't want. * Reintroduce blank lines in configuration. * Use packageand syntax that works for older versions of RPM. * Don't use %{_bindir} on left-hand side of sed replacements.- riscv-eh-frame-fixup.patch: Remove changesets that alter the libLLVM ABI- Add upstream patch to export compiler-rt FuzzedDataProvider header, required by Envoy 1.12.2: * compiler-rt-move-fdp.patch- riscv-eh-frame-fixup.patch: Fix handling of .eh_frame on RISC-V - polly-pthread.patch: Add missing -lpthread- Enable support for riscv64 - clang-riscv64-rv64gc.diff, riscv64-suse-linux.patch, llvm-riscv64-fix-cffi.diff, D60657-riscv-pcrel_lo.diff: Backports from master- Update to version 9.0.1. * This release contains bug-fixes for the LLVM 9.0.0 release. This release is API and ABI compatible with 9.0.0. - Drop patches that have landed upstream: * dont-install-example-analyzer-plugins.patch * fix-module-test.patch * llvm-add-missing-include.patch - Drop set-revision.patch, don't provide revision number in clang. The upstream repository has moved from Subversion to git, so the revision number is just a hash, which limits its usefulness. - Rebase llvm-do-not-install-static-libraries.patch.- Modify libcxx-tests-linux-distribution.patch to remove dependency on python-distro again: we don't have expected failures.- Add llvm-add-missing-include.patch in order to fix boo#1158367.- Add gwp-asan-lto.patch: Make sure there are no LLVM IR files in static libraries that we package. - Add libcxx-tests-linux-distribution.patch (boo#1158293): Replace platform.linux_distribution by distro.linux_distribution. - Make documentation packages noarch.- Add openmp-export-fini.patch: Export termination function for libomp.so, solves boo#1155108. - Remove flaky test case in libcxx.- Fix typo, BOLL -> BOOL- Let new {llvm,clang}*-doc packages "Conflict" with older devel packages, which they were split from. - Let doc packages conflict with older versions of themselves.- (Build)Require only python3-base instead of full python3 package, the additional modules are not required. Helps shortening the build dependency chain. - Remove python3-* requires from lldb9 subpackage, and add it to the bindings/pretty-printer subpackage (python3-lldb9). - Add python3-base Requires to python3-clang subpackage- Add dont-install-example-analyzer-plugins.patch: Remove example analyzer plugins from install targets instead of deleting them. - Add fix-module-test.patch: fix test instead of deleting it. - Don't build static libc++ (with ThinLTO that's not useful anyway). - Don't build libc++experimental. - Don't package libc++abi.so with libc++-devel, it's already contained in the (required) libc++abi-devel. - Be more specific about files in libc++-devel.- Update to version 9.0.0. * For details, see the release notes: - https://releases.llvm.org/9.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/lld/docs/ReleaseNotes.html - Change License to "Apache-2.0 WITH LLVM-exception OR NCSA". (https://llvm.org/foundation/relicensing/) - Allow building with ThinLTO and enable it on some architectures. - Disable LTO cache in lto-disable-cache.patch. - Unset MALLOC_CHECK_ for compilation to mitigate lock contention. - No debug info for ppc like for the other 32-bit targets. - Clean up _constraints: same constraints for 32-bit targets. - Don't use BUILD_SHARED_LIBS for Clang anymore, since the newly available libclang-cpp.so should expose the full C++ API. - Link tools with libclang-cpp.so by using CLANG_LINK_CLANG_DYLIB, similar to LLVM_BUILD_LLVM_DYLIB for libLLVM.so. - Remove obsolete n_clang_allow_BUILD_SHARED_LIBRARY.patch. - Add link-clang-shared.patch to link more clang targets with libclang-cpp.so, especially libclang.so. - Add link-clang-tools-extra-shared.patch, link-lldb-shared.patch: link targets in clang-tools-extra and lldb with libclang-cpp.so. - Simplify llvm-do-not-install-static-libraries.patch, also handle Clang, for which we now get static libraries. - Package documentation for llvm and clang separately, recommend them for the main package: they are not required for development, but actually useful for working with the non-devel packages. - Recommend editor plugins not just for llvm-devel. - Recommend libstdc++ for Clang again. - Move diagtool from llvm to clang subpackage. - Properly distinguish between %{_relver} and %{version}. - Drop aarch64-disable-memorytest.patch and reactivate test. - Rebase clang-resourcedirs.patch. - Rebase llvm-normally-versioned-libllvm.patch. - Rebase llvm-remove-clang-only-flags.patch. - Rebase llvm_build_tablegen_component_as_shared_library.patch. - Rebase set-revision.patch. - Increase disk space for build.- Make lldb recommend python3-lldb (it contains pretty printers).- Use python3 shebangs everywhere (boo#1146533). - Drop obsolete opt-viewer-Do-not-require-python-2.patch.- Remove unneccesary dependencies: * groff, bison and flex don't seem to be used. * jsoncpp is no longer used since r338461. * Move some BuildRequires to subpackages. * Don't recommend scan-{build,view} in clang (boo#1145444). * Devel packages are only required in other devel packages, when their headers are included in the installed headers. - Add versions to Provides/Conflicts except for files. - Remove unused (since r268685) CMake flags LLVM_ENABLE_TIMESTAMPS. - Fix installation of opt-viewer files when python3-clang is no longer built.- Update to version 8.0.1. * This release contains bug-fixes for the LLVM 8.0.0 release. This release is API and ABI compatible with 8.0.0. - Don't run LLVM tests on ppc at all because of sporadic hangs.- Increase RAM for armv6/7 to avoid OOM and be scheduled on fast worker- Use the documented LLVM_ENABLE_RTTI to enable RTTI instead of LLVM_REQUIRES_RTTI, which "is an internal flag that individual targets can use to force RTTI". (boo#1139584) - Drop obsolete llvm-build-tests-with-rtti.patch.- Exclude riscv64 for now since it fails to build.- Change some groups: * put libraries in System/Libraries, * devel packages in Development/Libraries, * clang in Development/Languages/C and C++, * the gold plugin in Development/Tools/Building. - Add some URLs, use https:// when possible. - Remove unneeded devel dependencies. - Only suggest a C++ standard library for clang. It's also a C compiler and needs no C++ library when only used as such. - Fix Supplements for editor plugins. - Fix some rpmlint issues: * Reword summary and description for Polly. * Fix /usr/bin/env shebangs. * Remove executable bit where not needed. * Move bash completion to /usr. * Remove hard dependency of libclang8 to libstdc++-devel. - Make rpm macros work properly. - Remove sources from documentation. - Run %fdupes on the right directories. - Enable tests for libcxx. - Reduce memory requirements for compile jobs depending on arch.- Avoid relocation overflow on ppc by not building GPU backends. - Update baselibs.conf.- Disable LTO (boo#1133254).- Fix packaging on ppc: the sanitizers aren't available there, so the directories /usr/lib/clang/*/{lib,share} are missing. - Package LLVMgold even when we don't use gold for linking. It's promised in /usr/lib/cmake/llvm/LLVMExports.cmake. - Unignore test failures on PowerPC64 architectures. The failures in ppc are unrelated to AMDGPU, so we remove that remark. - Fix dependencies: the gold plugin shouldn't depend on llvm-devel. libc++abi-devel should depend on libc++abi. - Fix typo.- Enable libc++ on ARM (Needed for tensorflow)- Update to 8.0.0 * For details, see the release notes: https://llvm.org/releases/8.0.0/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/lld/docs/ReleaseNotes.html - Drop llvm-unittests-Don-t-install-TestPlugin.so.patch, llvm-drop-llvm-optional-clang-specific-optimization.patch, llvm-D51108.patch, llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch, llvm-test-Fix-Assembler-debug-info.ll.patch * Already included upstream - Add 0001-CMake-Add-install-targets-for-utilities-to-LLVM-expo.patch- Remove -fno-strict-aliasing, which upstream doesn't use any more since r245304 in 2015. (http://reviews.llvm.org/D12036) It's probably also not needed for modern versions of GCC. It was enabled in r105644 because of some bugs there. - Add a clang-%{_sonum} symlink, which is referenced by /usr/lib64/cmake/clang/ClangTargets.cmake (boo#1120098) - Package clang builtin headers with libclang. The library is basically unusable without the builtin headers. Currently consumers of libclang have to require clang as well, although only the headers are needed.- llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch, llvm-test-Fix-Assembler-debug-info.ll.patch * Fix crash in rustc (boo#1126907)- Allow use of Gold linker to be conditional - Disable Gold linker on ppc + LLVM currently doesn't build with Gold on ppc- Readd clang-7 and clang++-7 symlinks * Fixes uses of clang-devel (boo#1120098)- Update to llvm 7.0.1 * This release contains bug-fixes for the LLVM 7.0.0 release. This release is API and ABI compatible with 7.0.0.- enable gold unconditionally like with llvm6 and older - reenable openmp support again for aarch64 (like it was already in llvm6)- Use %license macro - Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Remove ppc from Exclude field in spec file - Allow use of Gold linker to be conditional - Disable Gold linker on ppc - Add patch to fix SUSE GNU triplet on ppc * clang-fix-powerpc-triplet.patch - Add patch from upstream to fix ABI issue on ppc * llvm-D51108.patch - Limit list of enabled targets on ppc * PowerPC;AMDGPU;BPF;NVPTX - Ignore testsuite failures on ppc- llvm-drop-llvm-optional-clang-specific-optimization.patch * Fix ABI incompatibility when libLLVM (built with clang) is linked to a program build with gcc. (boo#1119092)- opt-viewer-Find-style-css-in-usr-share.patch * Make sure opt-viewer installed in /usr/bin can find resources from /usr/share/opt-viewer. (boo#1112730)- llvm-unittests-Don-t-install-TestPlugin.so.patch * It is only used for testing and is causing failures when processing LLVMExports.cmake.- Update to llvm 7.0.0 * For details, see the release notes: https://llvm.org/releases/7.0.0/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html - Remove no longer needed patches: * llvm6-fix-gdb-index-crash.patch * lldb-fix-build-with-python-3.7.patch * lldb-add-pthread-dl-libs.patch * polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch - Add tests-use-python3.patch * Prevents tests from failing because of missing python 2. - Add llvm-better-detect-64bit-atomics-support.patch * Fixes build on i586.- Updated llvm-remove-clang-only-flags.patch - Exclude also "-Werror=unguarded-availability-new" (bsc#1106000)- Update to llvm 6.0.1 * This release contains bug-fixes for the LLVM 6.0.0 release. It is API and ABI compatible with 6.0.0. - Remove no longer needed llvm6-fix-InstCombine.patch - Add lldb-fix-build-with-python-3.7.patch * Fix build with python 3.7- llvm6-fix-gdb-index-crash.patch * From upstream, fix lld --gdb-index crash.- Do not requires gcc6 for older sle versions. * llvm6 is not built on <= 12 SP3 and this was preventing build on 12 SP4.- llvm_build_tablegen_component_as_shared_library.patch * Build TableGen component as its own shared library because it is not included in the libLLVM library and is needed for ldc. (bsc#1086445)- Add patch llvm6-fix-InstCombine.patch to fix InstCombine init * Will be fixed in 6.0.1 release- Do not build stage1 with debug info. It was accidentally added with the use of %optflags. This should fix out of memory errors on 32bit architectures and speed up build everywhere else. (bsc#1092697)- llvm-build-tests-with-rtti.patch * Fixes build failure with gcc 8. (bnc#1087136)- Do not export Polly static libraries which we do not distribute. * Updated llvm-do-not-install-static-libraries.patch - Use external jsoncpp instead of the bundled one. * Added polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch - llvm6-devel must require llvm6-polly-devel * Files in llvm6-devel reference Polly.- Update to llvm 6.0.0 * Added polly * Notable changes: - Retpoline Spectre variant 2 mitigation - GlobalISel by default for AArch64 at -O0 - improved scheduling on several x86 micro-architectures - Clang defaults to -std=gnu++14 instead of -std=gnu++98 - support for some upcoming C++2a features - improved optimizations, new compiler warnings, many bug fixes, and more. - Use alternatives for clang's bash autocomplete to prevent conflicts with other versions.- Remove liblldb5 and lldb5-devel from baselibs.conf. They are only build for x86_64, so no point having them in baselibs.conf.- Use %optflags, except for FORTIFY_SOURCE which is not compatible with compiler-rt. - Exclude static libraries differently. * Drop llvm-split-static-library-exports-into-their-own-export-file.diff * Drop clang-split-static-library-exports-into-their-own-export-file.diff * Update llvm-do-not-install-static-libraries.patch to not use EXCLUDE_FROM_ALL which is not available in cmake 3.5. - This fixes build on SLE12. - Do not force gcc6 on OpenSUSE - fixes build. - Reduce the amount of concurent link jobs by increasing their memory requirement - to reduce stalls in OBS.- Cleanup %ifarch conditions, remove targets unintentionally added to s390/s390x. (bnc#1078436)- Limit the amount of parallel link jobs, but no longer limit compile jobs. This should prevent running out of memory during linking while not longer slowing down compilation. - Remove build dependency on procps- Reduce disk size requirement to 30GB in _constraints. We no longer need that much since we stopped building static libraries.- n_clang_allow_BUILD_SHARED_LIBRARY.patch * Allow buildling clang with BUILD_SHARED_LIBRARY while the rest is built with LLVM_LINK_LLVM_DYLIB. (bnc#1065464) - Remove clang-devel-static.- Place gold plugin to the right directory. (bnc#1073210) * It must be in /usr/lib/bfd-plugins on all architectures. * Remove llvm5-gold from baselibs.conf - nothing needs a 32bit version of it and it would now conflict with the 64bit one. - Reduce _constraints requirements on 32bit architectures. * Since we had to disable debuginfo on them, they require much less.- ignore make check error for PowerPC as bypass https://bugs.llvm.org/show_bug.cgi?id=35871- disable debuginfo build for ARM as well- Delete intermediate files during build to reduce total disk usage (bnc#1074625)- Update to llvm 5.0.1 * This release contains bug-fixes for the LLVM 5.0.0 release. * This release is API and ABI compatible with 5.0.0. - llvm-do-not-install-static-libraries.patch * Updated.- Increase minimum memory and disk sizes required for building in _constraints.- Rename python3-lldb to python3-lldb5 so it can work with llvm meta package.- Rename python packages to follow naming conventions. - Remove unnecessary dependencies on python3. - Make opt-viewer not require python2. * opt-viewer-Do-not-require-python-2.patch- Switch to python3. - Fix %check tests when used with python3. * Define LANG=C.UTF-8 when running the tests. - Add explicit Provides/Conflicts to llvm5-devel, clang5-devel-static and lldb5-devel. * These are required to be validated by obs repo-checker.- Use LLVM_OPTIMIZED_TABLEGEN to speed up build. (bnc#1064786) - Fix files of lldb4 to work correctly with update-alternatives. - Remove Conflicts clang(LLDB) from lldb4-devel - it does not exist. It would be provided automatically, but no such cmake file is installed. - llvm-do-not-install-static-libraries.patch * Do not install static libraries instead of installing them and deleting after. * Reduces disk usage during build. (bnc#1064786) - Do not build unnecessary parts during stage1. * Speeds up build a bit. (bnc#1064786)- Updated baselibs.conf to reference version 5 packages. - Deleted rogue llvm5.spec.r29 file. - Deleted arm_suse_support.diff, llvm-add_a_LLVM_USE_LINKER.patch, libsanitizer.patch. - No longer used, applied already in the source.- llvm-normally-versioned-libllvm.patch * Change libLLVM naming scheme to match our naming guidelines. * The reasons for the original naming scheme are no longer valid, more details in the patch.- Disable all thread related tests in libcxx. Many of them use timeouts to detect failure. They can fail randomly if the machine is under heavy load (happens often in OBS).- Drop llvm5-devel-static. llvm5-devel contains shared library with the same content.- Increase disk space requirement in _constraints to 45GB. Otherwise the build gets stuck in random places. - Skip build of lldb5 python on distributions with swig < 3.0.11- Copy from llvm4. - Update to llvm 5.0.0.- Use LLVM_BUILD_LLVM_DYLIB instead of BUILD_SHARED_LIBS to build single libLLVM library. This is the recommended way. The old way was causing various issues. * llvm-split-static-library-exports-into-their-own-export-file.diff * clang-split-static-library-exports-into-their-own-export-file.diff (bnc#1049703) - Add lld, linker for Clang/LLVM (sr#517692) - Include clang++-MAJOR.MINOR symbolic link (bnc#1012260) - Remove unnecessary dependency on flex and bison. - Make sure all binaries are managed by update-alternatives - Add llvm-add_a_LLVM_USE_LINKER.patch and link using gold to prevent memory exhaustion on some build machines. - Reduce debuginfo on x86 architecture. LLVM libraries are so big that they exhaust all memory on 32 bit machine if linked with full debuginfo. - Speed up build by skipping parts that are not required in stage1. - Build lldb in-tree as one of the llvm tools.- clang-ignore-stack-clash-protector.patch: ignore -fstack-clash-protection for now.- xlocale.patch: don't use obsolete - libsanitizer.patch: fix use of undocumented types- build fixes for armv6 (skip testsuite as it requires 64bit, set the list of targets to include ARM and remove triplet hack)- Include provides and conflics in baselibs.conf for llvm4-devel, clang4-devel, llvm4-LTO-devel, and llvm4-gold.- Update to version 4.0.1 * Minor bugfixes- Use gcc6 only for SLE boo#1041469- Package libLLVMFuzzer- readd arm_suse_support.diff which was accidentally removed in the 4.0.0 update- Enable AMDGPU and NVPTX targets everywhere except for S/390. The AMDGPU target is needed for Mesa Clover (sr#485802).- Use gcc6 on SLE12- Package license & credits- Update to version 4.0.0 * See + http://releases.llvm.org/4.0.0/docs/ReleaseNotes.html and + http://releases.llvm.org/4.0.0/tools/clang/docs/ReleaseNotes.html + http://releases.llvm.org/4.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - Drop the following patches, fixed upstream: amdgpu_revert_r280589.patch arm_suse_support.diff clang-fix-substitutions-abi_tag.patch clang-incomplete-field-types.patch glibc-2.24-libcxx.patch llvm-install-CheckAtomic.patch revert-cmake-soname.patch- Enable BPF for all arches bsc#1026191- libc++ must depend on libc++abi- Stop using otherproviders() due to an rpm parser bug, use self-conflicts instead as suggested by mls.- Add amdgpu_revert_r280589.patch to fix an amdgpu regression bsc#1021577- Require LLVMgold and libLTO in llvm-devel, otherwise we get in CMake: The imported target "LLVMgold" references the file "/usr/lib64/LLVMgold.so" but this file does not exist. This happens when requiring llvm3_9-devel directly, not llvm-devel.- Update to version 3.9.1 * See: + http://llvm.org/releases/3.9.1/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.1/tools/clang/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.1/tools/clang/tools/extra/docs/ReleaseNotes.html- Update to version 3.9.0 * Clang now supports the G++ abi_tag attribute. * Clang will no longer pass --build-id by default to the linker. * Improved C++1z support in Clang. * Clang now has support for all OpenCL 2.0 features. * Added support for all non-offloading features from OpenMP 4.5, * The static analyzer now checks for incorrect usage of MPI APIs in C and C++. * LLVM no longer does inter-procedural analysis and optimization (except inlining) on functions with comdat linkage. * LLVM now supports the Intel CPUs Skylake Server with AVX512 (-march=skylake-avx512) and Knights Landing (-march=knl). * More at: + http://llvm.org/releases/3.9.0/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.0/tools/clang/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.0/tools/clang/tools/extra/docs/ReleaseNotes.html * Fix the following patches: + arm_suse_support.diff + assume-opensuse.patch + clang-resourcedirs.patch + default-to-i586.patch + glibc-2.23-libcxx.patch + glibc-2.24-libcxx.patch + lldb-add-pthread-dl-libs.patch + lldb-cmake.patch + llvm-fix-find-gcc5-install.patch + llvm-remove-clang-only-flags.patch + revert-cmake-soname.patch + set-revision.patch * Remove upstream-included patch: + llvm-nonvoid-return.patch * Remove patch for removed files: + glibc-2.23-libcxx.patch - Backport upstream patches: * clang-fix-substitutions-abi_tag.patch * clang-incomplete-field-types.patch * llvm-install-CheckAtomic.patch - Add clang%{_sonum}-include-fixer subpackage and associated libfindAllSymbols%{_sonum} and libfindAllSymbols%{_sonum}-devel subpackages. - Add sanstats to llvm binary list.- Change update-alternatives to use %postun instead of %preun, which is now what Factory maintainers are requesting. - Use the minor version to set the update-alternatives priority so the most recent version of the LLVM, Clang, and LLDB are used by default. - Add LLVM rpm macros so downstream packages can have some idea how LLVM was built.- Rename libomp to make it possible to have multiple versions available.- Split the old llvm package into this version-specific package and a wrapper package. - Implement update-alternatives to allow parallel installation of many of the subpackages. - Rename subpackages that can be parallel-installed to a version-specific name based on the associated shared library's current .so number. - Various fixes to support the above changes.- Sort a bit with spec-cleaner - Remove the latest switch for now, things should be either coinstallable or not, we don't need to bother around with compilation like this- Update to llvm 3.8.1 * See http://llvm.org/releases/3.8.1/docs/ReleaseNotes.html and http://llvm.org/releases/3.8.1/tools/docs/ReleaseNotes.html - Use versioned libLLVM (to libLLVM3_8) and libclang (to libclang3_8) - Change versioning of liblldb3_8 to liblldb-3_8 and use a variable to control the name instead of hard-coding it. - Use bcond_with and bcond_without to enable/disable build options instead of hard-coding them. - Put buildrequires as requires in -devel packages to avoid linker errors when building packages against the -devel packages. - Add ffi support (disabled by default). - Add oprofile support (disabled by default). - Add valgrind support (disabled by default). - Link cmake files to the normal cmake file directory to allow autodetection of cmake interfaces. - Remove unused lldb components from main spec file. - Split llvm python bindings into own subpackage. - Split emacs plugin into own subpackage - Move additional vim plugins into vim plugins package - Split libc++, libLTO, LLVMgold, libomp, clang-chekers into own subpackages - Make python-clang, llvm-vim-plugins, and llvm-emacs-plugins noarch since they aren't architecture-specific. - Make packages besides llvm, llvm-clang, and the shared libraries conflict with other versions. This will be important when multiple LLVM versions are supported. - Various spec file cleanups - Rebase patches: * arm_suse_support.diff * assume-opensuse.patch * clang-resourcedirs.patch * default-to-i586.patch * glibc-2.23-libcxx.patch * glibc-2.24-libcxx.patch * lldb-add-pthread-dl-libs.patch * lldb-cmake.patch * llvm-fix-find-gcc5-install.patch * llvm-nonvoid-return.patch * llvm-remove-clang-only-flags.patch * revert-cmake-soname.patch * set-revision.patch- Start conversion to use cmake macros with now introduced compatibility for ninja - Reduce number of threads if we don't have enough memory - Add patch for the nonvoid returns: * llvm-nonvoid-return.patch- for ppc64le set memory to 4GB in _constraints file (failure in Factory:PowerPC)- glibc-2.24-libcxx.patch: fix libcxx testsuite for glibc 2.24- Build LLDB separated from LLVM. - Re-enable python bindings for the LLDB API.- Disable libcxx/lldb/openmp for SLE fate#319582- Update rpmlintrc to whitelist libLTO.so- Re-enable glibc-2.23 patch for Tumbleweed- fix arm_suse_support.diff for armv6hl - adjust compile flags for llvm on armv6hl (fixes Mesa build)- Update llvm-remove-clang-only-flags.patch to remove - Wcovered-switch-default flag for gcc compatibility.- Use gcc for stage1 bootstrap - Add back libstdc++-devel dependency for clang since libc++ is only available for x86-64 atm.- Comment out glibc-2.23-libcxx.patch until glibc 2.23 actually hits the Factory.- Update to llvm 3.8.0 * See http://llvm.org/releases/3.8.0/docs/ReleaseNotes.html and http://llvm.org/releases/3.8.0/tools/clang/docs/ReleaseNotes.html - Fold lldb build into llvm and disable python support - Drop clang-disable-ada-extension.patch, libcxxabi-exceptions.patch and cmake-host-triple.patch - Add revert-cmake-soname.patch to fix soname handling- Add glibc-2.23-libcxx.patch to fix test failures with glibc 2.23- Remove FFI support because its fragile- Enable OpenMP for x86, x86_64, ppc64 and ppc64le- Enable all targets on x86, x86_64- Update to version 3.7.0 * See http://llvm.org/releases/3.7.0/docs/ReleaseNotes.html - Merge aarch64-suse-support.patch into arm_suse_support.diff - Refresh arm_suse_support.diff, llvm-fix-find-gcc5-install.patch - Remove llvm-fix-parsearmarch.patch, upstream.- fix build on s390x (one typo in ifarch and one change in filelist)- Update to version 3.6.1 * No changelog upstream- Add llvm-fix-parsearmarch.patch to fix parsing armv{6,7}hl archs.- Update to version 3.6.0 * See http://llvm.org/releases/3.6.0/docs/ReleaseNotes.html - Add python-xml dependency for regression tests - Removed the following patches, fixed upstream: * arm-remove-xfails.diff * libcxx-libdir.patch * llvm-config-lib64.patch * llvm-fix-intrusiverefcntptr.patch- Add llvm-fix-intrusiverefcntptr.patch to fix build of LLVM tools with GCC 5. - Add llvm-fix-find-gcc5-install.patch to properly find installed GCC 5.- Add a gcc dependency for clang, this is heavyweight but we need libgcc_s which comes with the gcc package (bnc#893359)- Conditionalize libcxx{abi} build on build_libcxx variable - Turn libc++.so into an ldscript so it links to libc++abi automatically.- fix constraints for armv6l/armv7l (there is no 4GB RAM on 32bit)/sbin/ldconfig/sbin/ldconfigh04-armsrv1 1724959662  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ      !"#$%&'()*+,-./017.0.6-150600.3.2.117.0.6-150600.3.2.117.0.6      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""#######$$$%&%'%((((%)%*%+%,%---.....//////000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222344444444444444444455566788c++v1__algorithmadjacent_find.hall_of.hany_of.hbinary_search.hclamp.hcomp.hcomp_ref_type.hcopy.hcopy_backward.hcopy_if.hcopy_move_common.hcopy_n.hcount.hcount_if.hequal.hequal_range.hfill.hfill_n.hfind.hfind_end.hfind_first_of.hfind_if.hfind_if_not.hfor_each.hfor_each_n.hfor_each_segment.hgenerate.hgenerate_n.hhalf_positive.hin_found_result.hin_fun_result.hin_in_out_result.hin_in_result.hin_out_out_result.hin_out_result.hincludes.hinplace_merge.his_heap.his_heap_until.his_partitioned.his_permutation.his_sorted.his_sorted_until.hiter_swap.hiterator_operations.hlexicographical_compare.hlexicographical_compare_three_way.hlower_bound.hmake_heap.hmake_projected.hmax.hmax_element.hmerge.hmin.hmin_element.hmin_max_result.hminmax.hminmax_element.hmismatch.hmove.hmove_backward.hnext_permutation.hnone_of.hnth_element.hpartial_sort.hpartial_sort_copy.hpartition.hpartition_copy.hpartition_point.hpop_heap.hprev_permutation.hpstl_any_all_none_of.hpstl_backend.hpstl_backendscpu_backend.hcpu_backendsany_of.hbackend.hfill.hfind_if.hfor_each.hlibdispatch.hmerge.hserial.hstable_sort.hthread.htransform.htransform_reduce.hpstl_copy.hpstl_count.hpstl_fill.hpstl_find.hpstl_for_each.hpstl_frontend_dispatch.hpstl_generate.hpstl_is_partitioned.hpstl_merge.hpstl_replace.hpstl_sort.hpstl_stable_sort.hpstl_transform.hpush_heap.hranges_adjacent_find.hranges_all_of.hranges_any_of.hranges_binary_search.hranges_clamp.hranges_copy.hranges_copy_backward.hranges_copy_if.hranges_copy_n.hranges_count.hranges_count_if.hranges_equal.hranges_equal_range.hranges_fill.hranges_fill_n.hranges_find.hranges_find_end.hranges_find_first_of.hranges_find_if.hranges_find_if_not.hranges_for_each.hranges_for_each_n.hranges_generate.hranges_generate_n.hranges_includes.hranges_inplace_merge.hranges_is_heap.hranges_is_heap_until.hranges_is_partitioned.hranges_is_permutation.hranges_is_sorted.hranges_is_sorted_until.hranges_iterator_concept.hranges_lexicographical_compare.hranges_lower_bound.hranges_make_heap.hranges_max.hranges_max_element.hranges_merge.hranges_min.hranges_min_element.hranges_minmax.hranges_minmax_element.hranges_mismatch.hranges_move.hranges_move_backward.hranges_next_permutation.hranges_none_of.hranges_nth_element.hranges_partial_sort.hranges_partial_sort_copy.hranges_partition.hranges_partition_copy.hranges_partition_point.hranges_pop_heap.hranges_prev_permutation.hranges_push_heap.hranges_remove.hranges_remove_copy.hranges_remove_copy_if.hranges_remove_if.hranges_replace.hranges_replace_copy.hranges_replace_copy_if.hranges_replace_if.hranges_reverse.hranges_reverse_copy.hranges_rotate.hranges_rotate_copy.hranges_sample.hranges_search.hranges_search_n.hranges_set_difference.hranges_set_intersection.hranges_set_symmetric_difference.hranges_set_union.hranges_shuffle.hranges_sort.hranges_sort_heap.hranges_stable_partition.hranges_stable_sort.hranges_starts_with.hranges_swap_ranges.hranges_transform.hranges_unique.hranges_unique_copy.hranges_upper_bound.hremove.hremove_copy.hremove_copy_if.hremove_if.hreplace.hreplace_copy.hreplace_copy_if.hreplace_if.hreverse.hreverse_copy.hrotate.hrotate_copy.hsample.hsearch.hsearch_n.hset_difference.hset_intersection.hset_symmetric_difference.hset_union.hshift_left.hshift_right.hshuffle.hsift_down.hsort.hsort_heap.hstable_partition.hstable_sort.hswap_ranges.hthree_way_comp_ref_type.htransform.huniform_random_bit_generator_adaptor.hunique.hunique_copy.hunwrap_iter.hunwrap_range.hupper_bound.h__assert__atomicaliases.hatomic.hatomic_base.hatomic_flag.hatomic_init.hatomic_lock_free.hatomic_sync.hcheck_memory_order.hcontention_t.hcxx_atomic_impl.hfence.his_always_lock_free.hkill_dependency.hmemory_order.h__availability__bitbit_cast.hbit_ceil.hbit_floor.hbit_log2.hbit_width.hblsr.hbyteswap.hcountl.hcountr.hendian.hhas_single_bit.hpopcount.hrotate.h__bit_reference__charconvchars_format.hfrom_chars_integral.hfrom_chars_result.htables.hto_chars.hto_chars_base_10.hto_chars_floating_point.hto_chars_integral.hto_chars_result.htraits.h__chronocalendar.hconcepts.hconvert_to_timespec.hconvert_to_tm.hday.hduration.hfile_clock.hformatter.hhh_mm_ss.hhigh_resolution_clock.hliterals.hmonth.hmonth_weekday.hmonthday.hostream.hparser_std_format_spec.hstatically_widen.hsteady_clock.hsystem_clock.htime_point.hweekday.hyear.hyear_month.hyear_month_day.hyear_month_weekday.h__comparecommon_comparison_category.hcompare_partial_order_fallback.hcompare_strong_order_fallback.hcompare_three_way.hcompare_three_way_result.hcompare_weak_order_fallback.his_eq.hordering.hpartial_order.hstrong_order.hsynth_three_way.hthree_way_comparable.hweak_order.h__conceptsarithmetic.hassignable.hboolean_testable.hclass_or_enum.hcommon_reference_with.hcommon_with.hconstructible.hconvertible_to.hcopyable.hderived_from.hdestructible.hdifferent_from.hequality_comparable.hinvocable.hmovable.hpredicate.hregular.hrelation.hsame_as.hsemiregular.hswappable.htotally_ordered.h__condition_variablecondition_variable.h__config__config_site__coroutinecoroutine_handle.hcoroutine_traits.hnoop_coroutine_handle.htrivial_awaitables.h__cxxabi_config.h__debug_utilsrandomize_range.hstrict_weak_ordering_check.h__exceptionexception.hexception_ptr.hnested_exception.hoperations.hterminate.h__expectedbad_expected_access.hexpected.hunexpect.hunexpected.h__filesystemcopy_options.hdirectory_entry.hdirectory_iterator.hdirectory_options.hfile_status.hfile_time_type.hfile_type.hfilesystem_error.hoperations.hpath.hpath_iterator.hperm_options.hperms.hrecursive_directory_iterator.hspace_info.hu8path.h__formatbuffer.hconcepts.hcontainer_adaptor.henable_insertable.hescaped_output_table.hextended_grapheme_cluster_table.hformat_arg.hformat_arg_store.hformat_args.hformat_context.hformat_error.hformat_functions.hformat_fwd.hformat_parse_context.hformat_string.hformat_to_n_result.hformatter.hformatter_bool.hformatter_char.hformatter_floating_point.hformatter_integer.hformatter_integral.hformatter_output.hformatter_pointer.hformatter_string.hformatter_tuple.hparser_std_format_spec.hrange_default_formatter.hrange_formatter.hunicode.hwidth_estimation_table.hwrite_escaped.h__functionalbinary_function.hbinary_negate.hbind.hbind_back.hbind_front.hbinder1st.hbinder2nd.hboyer_moore_searcher.hcompose.hdefault_searcher.hfunction.hhash.hidentity.hinvoke.his_transparent.hmem_fn.hmem_fun_ref.hnot_fn.hoperations.hperfect_forward.hpointer_to_binary_function.hpointer_to_unary_function.hranges_operations.hreference_wrapper.hunary_function.hunary_negate.hweak_result_type.h__fwdarray.hfstream.hget.hhash.hios.histream.hmdspan.hmemory_resource.hostream.hpair.hspan.hsstream.hstreambuf.hstring.hstring_view.hsubrange.htuple.h__hash_table__iosfpos.h__iteratoraccess.hadvance.hback_insert_iterator.hbounded_iter.hcommon_iterator.hconcepts.hcounted_iterator.hcpp17_iterator_concepts.hdata.hdefault_sentinel.hdistance.hempty.herase_if_container.hfront_insert_iterator.hincrementable_traits.hindirectly_comparable.hinsert_iterator.histream_iterator.histreambuf_iterator.hiter_move.hiter_swap.hiterator.hiterator_traits.hiterator_with_data.hmergeable.hmove_iterator.hmove_sentinel.hnext.hostream_iterator.hostreambuf_iterator.hpermutable.hprev.hprojected.hranges_iterator_traits.hreadable_traits.hreverse_access.hreverse_iterator.hsegmented_iterator.hsize.hsortable.hunreachable_sentinel.hwrap_iter.h__locale__locale_dirlocale_base_apibsd_locale_defaults.hbsd_locale_fallbacks.hlocale_guard.h__mbstate_t.h__mdspandefault_accessor.hextents.hlayout_left.hlayout_right.hmdspan.h__memoryaddressof.halign.haligned_alloc.hallocate_at_least.hallocation_guard.hallocator.hallocator_arg_t.hallocator_destructor.hallocator_traits.hassume_aligned.hauto_ptr.hbuiltin_new_allocator.hcompressed_pair.hconcepts.hconstruct_at.hdestruct_n.hpointer_traits.hranges_construct_at.hranges_uninitialized_algorithms.hraw_storage_iterator.hshared_ptr.hswap_allocator.htemp_value.htemporary_buffer.huninitialized_algorithms.hunique_ptr.huses_allocator.huses_allocator_construction.hvoidify.h__memory_resourcememory_resource.hmonotonic_buffer_resource.hpolymorphic_allocator.hpool_options.hsynchronized_pool_resource.hunsynchronized_pool_resource.h__mutexlock_guard.hmutex.htag_types.hunique_lock.h__node_handle__numericaccumulate.hadjacent_difference.hexclusive_scan.hgcd_lcm.hinclusive_scan.hinner_product.hiota.hmidpoint.hpartial_sum.hpstl_reduce.hpstl_transform_reduce.hreduce.htransform_exclusive_scan.htransform_inclusive_scan.htransform_reduce.h__pstlinternalalgorithm_fwd.halgorithm_impl.hexecution_defs.hexecution_impl.hglue_algorithm_defs.hglue_algorithm_impl.hglue_memory_defs.hglue_memory_impl.hglue_numeric_defs.hglue_numeric_impl.hmemory_impl.hnumeric_fwd.hnumeric_impl.hompparallel_for.hparallel_for_each.hparallel_invoke.hparallel_merge.hparallel_scan.hparallel_stable_partial_sort.hparallel_stable_sort.hparallel_transform_reduce.hparallel_transform_scan.hutil.hparallel_backend.hparallel_backend_omp.hparallel_backend_serial.hparallel_backend_tbb.hparallel_backend_utils.hunseq_backend_simd.hutils.h__pstl_algorithm__pstl_memory__pstl_numeric__randombernoulli_distribution.hbinomial_distribution.hcauchy_distribution.hchi_squared_distribution.hclamp_to_integral.hdefault_random_engine.hdiscard_block_engine.hdiscrete_distribution.hexponential_distribution.hextreme_value_distribution.hfisher_f_distribution.hgamma_distribution.hgenerate_canonical.hgeometric_distribution.hindependent_bits_engine.his_seed_sequence.his_valid.hknuth_b.hlinear_congruential_engine.hlog2.hlognormal_distribution.hmersenne_twister_engine.hnegative_binomial_distribution.hnormal_distribution.hpiecewise_constant_distribution.hpiecewise_linear_distribution.hpoisson_distribution.hrandom_device.hranlux.hseed_seq.hshuffle_order_engine.hstudent_t_distribution.hsubtract_with_carry_engine.huniform_int_distribution.huniform_random_bit_generator.huniform_real_distribution.hweibull_distribution.h__rangesaccess.hall.has_rvalue_view.hcommon_view.hconcepts.hcontainer_compatible_range.hcounted.hdangling.hdata.hdrop_view.hdrop_while_view.helements_view.hempty.hempty_view.henable_borrowed_range.henable_view.hfilter_view.hfrom_range.hiota_view.histream_view.hjoin_view.hlazy_split_view.hmovable_box.hnon_propagating_cache.howning_view.hrange_adaptor.hrbegin.href_view.hrend.hrepeat_view.hreverse_view.hsingle_view.hsize.hsplit_view.hsubrange.htake_view.htake_while_view.hto.htransform_view.hview_interface.hviews.hzip_view.h__split_buffer__std_clang_module__std_mbstate_t.h__stop_tokenatomic_unique_lock.hintrusive_list_view.hintrusive_shared_ptr.hstop_callback.hstop_source.hstop_state.hstop_token.h__stringchar_traits.hconstexpr_c_functions.hextern_template_lists.h__supportandroidlocale_bionic.hfuchsiaxlocale.hibmgettod_zos.hlocale_mgmt_zos.hnanosleep.hxlocale.hmuslxlocale.hnewlibxlocale.hopenbsdxlocale.hwin32locale_win32.hxlocale__nop_locale_mgmt.h__posix_l_fallback.h__strtonum_fallback.h__system_errorerrc.herror_category.herror_code.herror_condition.hsystem_error.h__threadformatter.hid.hpoll_with_backoff.hthis_thread.hthread.htimed_backoff_policy.h__threading_support__tree__tuplemake_tuple_types.hpair_like.hsfinae_helpers.htuple_element.htuple_indices.htuple_like.htuple_like_ext.htuple_size.htuple_types.h__type_traitsadd_const.hadd_cv.hadd_lvalue_reference.hadd_pointer.hadd_rvalue_reference.hadd_volatile.haligned_storage.haligned_union.halignment_of.happly_cv.hcan_extract_key.hcommon_reference.hcommon_type.hconditional.hconjunction.hcopy_cv.hcopy_cvref.hdatasizeof.hdecay.hdependent_type.hdisjunction.henable_if.hextent.hhas_unique_object_representation.hhas_virtual_destructor.hintegral_constant.hinvoke.his_abstract.his_aggregate.his_allocator.his_always_bitcastable.his_arithmetic.his_array.his_assignable.his_base_of.his_bounded_array.his_callable.his_char_like_type.his_class.his_compound.his_const.his_constant_evaluated.his_constructible.his_convertible.his_copy_assignable.his_copy_constructible.his_core_convertible.his_default_constructible.his_destructible.his_empty.his_enum.his_equality_comparable.his_execution_policy.his_final.his_floating_point.his_function.his_fundamental.his_implicitly_default_constructible.his_integral.his_literal_type.his_member_function_pointer.his_member_object_pointer.his_member_pointer.his_move_assignable.his_move_constructible.his_nothrow_assignable.his_nothrow_constructible.his_nothrow_convertible.his_nothrow_copy_assignable.his_nothrow_copy_constructible.his_nothrow_default_constructible.his_nothrow_destructible.his_nothrow_move_assignable.his_nothrow_move_constructible.his_null_pointer.his_object.his_pod.his_pointer.his_polymorphic.his_primary_template.his_reference.his_reference_wrapper.his_referenceable.his_same.his_scalar.his_scoped_enum.his_signed.his_signed_integer.his_specialization.his_standard_layout.his_swappable.his_trivial.his_trivially_assignable.his_trivially_constructible.his_trivially_copy_assignable.his_trivially_copy_constructible.his_trivially_copyable.his_trivially_default_constructible.his_trivially_destructible.his_trivially_lexicographically_comparable.his_trivially_move_assignable.his_trivially_move_constructible.his_unbounded_array.his_union.his_unsigned.his_unsigned_integer.his_valid_expansion.his_void.his_volatile.hlazy.hmake_32_64_or_128_bit.hmake_const_lvalue_ref.hmake_signed.hmake_unsigned.hmaybe_const.hnat.hnegation.hnoexcept_move_assign_container.hoperation_traits.hpredicate_traits.hpromote.hrank.hremove_all_extents.hremove_const.hremove_const_ref.hremove_cv.hremove_cvref.hremove_extent.hremove_pointer.hremove_reference.hremove_volatile.hresult_of.hstrip_signature.htype_identity.htype_list.hunderlying_type.hunwrap_ref.hvoid_t.h__undef_macros__utilityas_const.hauto_cast.hcmp.hconvert_to_integral.hdeclval.hexception_guard.hexchange.hforward.hforward_like.hin_place.hinteger_sequence.his_pointer_in_range.hmove.hpair.hpiecewise_construct.hpriority_tag.hrel_ops.hswap.hterminate_on_exception.hto_underlying.hunreachable.h__variantmonostate.h__verbose_abortalgorithmanyarrayatomicbarrierbitbitsetcassertccomplexcctypecerrnocfenvcfloatcharconvchronocinttypesciso646climitsclocalecmathcodecvtcomparecomplexcomplex.hconceptscondition_variablecoroutinecsetjmpcsignalcstdargcstdboolcstddefcstdintcstdiocstdlibcstringctgmathctimectype.hcucharcwcharcwctypecxxabi.hdequeerrno.hexceptionexecutionexpectedexperimental__config__memorydequeforward_listiteratorlistmapmemory_resourcepropagate_constregexsetsimdstringtype_traitsunordered_mapunordered_setutilityvectorext__hashhash_maphash_setfenv.hfilesystemfloat.hformatforward_listfstreamfunctionalfutureinitializer_listinttypes.hiomanipiosiosfwdiostreamistreamiteratorlatchlibcxx.implimitslimits.hlistlocalelocale.hmapmath.hmdspanmemorymemory_resourcemodule.modulemapmutexnewnumbersnumericoptionalostreamprintqueuerandomrangesratioregexscoped_allocatorsemaphoresetsetjmp.hshared_mutexsource_locationspansstreamstackstdatomic.hstdbool.hstddef.hstdexceptstdint.hstdio.hstdlib.hstop_tokenstreambufstringstring.hstring_viewstrstreamsystem_errortgmath.hthreadtupletype_traitstypeindextypeinfouchar.hunordered_mapunordered_setutilityvalarrayvariantvectorversionwchar.hwctype.hlibc++.solibc++experimental.alibc++-develCREDITS.TXTLICENSE.TXT/usr/include//usr/include/c++//usr/include/c++/v1//usr/include/c++/v1/__algorithm//usr/include/c++/v1/__algorithm/pstl_backends//usr/include/c++/v1/__algorithm/pstl_backends/cpu_backends//usr/include/c++/v1/__atomic//usr/include/c++/v1/__bit//usr/include/c++/v1/__charconv//usr/include/c++/v1/__chrono//usr/include/c++/v1/__compare//usr/include/c++/v1/__concepts//usr/include/c++/v1/__condition_variable//usr/include/c++/v1/__coroutine//usr/include/c++/v1/__debug_utils//usr/include/c++/v1/__exception//usr/include/c++/v1/__expected//usr/include/c++/v1/__filesystem//usr/include/c++/v1/__format//usr/include/c++/v1/__functional//usr/include/c++/v1/__fwd//usr/include/c++/v1/__ios//usr/include/c++/v1/__iterator//usr/include/c++/v1/__locale_dir//usr/include/c++/v1/__locale_dir/locale_base_api//usr/include/c++/v1/__mdspan//usr/include/c++/v1/__memory//usr/include/c++/v1/__memory_resource//usr/include/c++/v1/__mutex//usr/include/c++/v1/__numeric//usr/include/c++/v1/__pstl//usr/include/c++/v1/__pstl/internal//usr/include/c++/v1/__pstl/internal/omp//usr/include/c++/v1/__random//usr/include/c++/v1/__ranges//usr/include/c++/v1/__stop_token//usr/include/c++/v1/__string//usr/include/c++/v1/__support//usr/include/c++/v1/__support/android//usr/include/c++/v1/__support/fuchsia//usr/include/c++/v1/__support/ibm//usr/include/c++/v1/__support/musl//usr/include/c++/v1/__support/newlib//usr/include/c++/v1/__support/openbsd//usr/include/c++/v1/__support/win32//usr/include/c++/v1/__support/xlocale//usr/include/c++/v1/__system_error//usr/include/c++/v1/__thread//usr/include/c++/v1/__tuple//usr/include/c++/v1/__type_traits//usr/include/c++/v1/__utility//usr/include/c++/v1/__variant//usr/include/c++/v1/experimental//usr/include/c++/v1/ext//usr/lib64//usr/share/licenses//usr/share/licenses/libc++-devel/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:35422/SUSE_SLE-15-SP6_Update/5d90d0d45cc9858804a5d7529a7d9123-llvm17.SUSE_SLE-15-SP6_Updatedrpmxz5aarch64-suse-linuxdirectoryC++ source, ASCII textC source, ASCII textASCII textcurrent ar archiveŚ>Dyő‘§țœ1țNJ utf-853b6f0249d96846e6ca769fe4844da41f58b5112a25fd18fc4a92e9f092d8920?ÿÿüę7zXZ áû Ą!t/ćŁà$2?]"ÌkÀ%ŒAKÖÀš)‚8aғ°?tH mdűß>œÁŸZKšŠ?śeô^DNxȚÄț+àOClæâÔŁùÄ€&ّ-zZ-œ•hđÀƒ“ÌÑ éAÔć—űÈÒÓaöÈ(ćR8àš"|‰2h@úÁ`xgĄ>UžĆ0цÜl & ‰ż™ĘH™OȘŻ«ĘŐTł«ÙžËćà˜čÀžgČÈ€?ú«ìïĐš§oÌw~Œbűîé\óEƒ<ÌQAœ†[»”N$‡“š ăŽú‚űæ~wöCïC+i|Űđ€B&Ćă!ìM—šßő^|hmÖ€f°ŠŠë›v\Ù0ëƐŒ«,‚u„Ùöô—_AąÀB1…'ë«Gÿ»IôÈȚè7ądt˜Fì˜ `©qžy%&đȚ'95,ÄÖoŽUM}.ßtź‚l}Éöè',pa™l {ÔÂì ++O‰Êow.*isf„ŒèƒčŚÆcśŠäL}T”HL’+Mńc“+,ü‡ì5RÓTqà5‚ęnZIšV©ĄbÍÿz©]^ßЀŠ]…3»tŸdK~⏠tW ·ž…Rń[ő{hÔ>ÍNáč'­§ƒ@Ú0kß{ Ćòć? 7:À·sŁ„_ŸŚ `QáۀVêŽźËĆ$ÿœè’–&·4îű·“pûoh«}Ì­G"yĄúÊëßíyà4“ˆ.±łÛd Äó‚2źŁá.•@.Zțrm+„*ČČ*4,œŻkźś ±«vŒ™lòàu”źÄÏŹÊȘżWo'ź‹)lÇl’i/ÛBteŒ(à ë|`ű ÎŹ€ÎGJGDz=ˆšù óïjŐűŽb(i{“Óám§Bę†iú7ÖŻNă20}Ë—ú êA\ù±¶•{‚ĄđwÏ$U'ă6žĐòÊLNż‹íO@Vül‚—Á‚>ȚÉie$ˆČsçc2ĘĄühĘĆ·ž.¶ĆmkÍšœ|uèàΘő'|•VŚh—œÓ33Pr`DÿúȚ~hèšöŒUL ^A·Ű̉|=r9ń=3怂}ŚüÔm6ä@črDDG[čš ŽčÁăá#‹,V^jiő“:ńáBï·WaßźŸ±ßä—à€3Bêù2AWÒKČb»Ł)NżȘä&žęæi37ÏÆț|©-áMŸĆÿÒXŠÛ»%‚7!Ł?“œĄP.ăt€+iœ,Nԑƙ–‚XÂÜŒĄ,ê}1I”©űț^TÛ_·g©ŠúŰ«“°`ŃśTDcżK6JÛ?F5n˜úÜ€ŸWń"€ÖĐ}{;”Îzn&ˆ-ÏEjÈ™šm»”á%ń?§5;áăj`ûrêă9ćpÚ4܃‚ŠÉ#†O–ë2WăÁ°šyéÏŹÿç!@‘VžČ—űìbArțšÉ˞g?"T$?J’ÌßÙžHkÚÎtĄ‡ßh•p5śß\î{jÈ^ń^<:±Ê~™°îB'fÌ2đûĘd+ȚuÜXŒá9ÔxÊr6wââíâOô9őŽĐNi5śû>ՑæPŒÁúńk¶đą›öl$žÄŠț<‘łs ˆ{„ÔÓź–`ż"ùuS1-yO]GŠ%%gpô<í9śŃOI CĆg,•cô€ötrïvAÔ_ăŻcdĉêŸS'ٜQéï Ì3y:ç[ŻYÂĆé=3ĘvÛŐČ&ŒŻcÆt*Š¶DŽ Rl-Îșà†Š†‰őœ…X˜ń$tĐÚACN‹sÙ:Ńi88u‘SĘrčŠ4Łç€ç集ŁJJŒĄ#uM”FóŃ Ź•0—u· 1yS‘k5ÛćŒŒ) jűźÉoæÏőŁ&ï>ó^©·FŠ8Ș]±°™^>ö“ÂJ Æß<Æw|ĘèĘÉő˜q3jŹèȘG K‹âLŒ**ȘßÆù9çßfn•2ÊÁ"KÌąž^û]>)(lˆnŐeâĐaÏU&êÁ 8“j@RW`TÊFzc@2‚‘ æ’5‰à=FIˆLŁûU–+Đ~YöÚÙž„‚bÿŐ„—)Œ.ż{ ì‚GdŒô źo †i\ž8Œ:Țvy!3ș1ŒČK5VÜä«jȘ ·š§ž:ՙ!n†g‚ÍŠô*(iìNbìŚš±~ìˆÈ-˜áđ)>Ç_…_ź!]çšUĐÍÇz]ZŻi.Êe› 7Äššêd† RItÊ\…86`r b»èŃ á3ž~m?p^~!Zf”—òÔć^æ ˆ–ŽżAê‰lÒ0—ÓśæÒ+Œź2!`ÙóXœĐm€F°Rw›’ÈŒæšeÇ^~žnńÚÙ8€ôx„ E7ÀŃèÒŸ:4ÂhôŐścńÛ~Ë Űǚ„.ôčëę(,É}IëŰ>țŽÛƒx!•ùîHìœȘ«ÙPpùÿU“æNÍíćÏiæ!0ŽĘhÇqûà+ZXC©Œ‰&4zpÆ$_Ș~ù++öƒMÛ3~éyăđ‡»›/5~xzèé,Î2’ík†`WÎČzp„˜›…Lč3M€żhșo8‚r°„:É)”osz:»/;#ŁŽöę"Ú܈É;»'GY0OäțžCŸ°#Ù2ù#ŐĘđœÎæÓnÙe–ŒsE”ûQò»LĆ?̈́ú™úËλïd_)äI ƒ ?†^ÁÈœ €űbțùË ^ò˜o’DąۂÔB”îƙˆžXż@–Ìć%çŠ GŒG:ĄŰV”ń „Q, ÇçÈ5z"ȘĐÙ3[îò§s>ÀhE<Ï»vŃߔ‡íì)†·Ÿl{UŽŁJìȘ¶•‚šŻÊ 蝯lÙxr·{FíSKÏȄ4j-wYç CzwŃm2*3%L+Ìo«űj:&"űkU’ËùöŚ<ž*=NrÎĐŽnB« žŸƒœ ŽŸÓ0 /&ć‘[ą‘Ò VÔænËČ$Ӎą ËJ˛ÁnŠđ»=1„uÿ[&đŒąÈ –đÌ &áh…4ÀÀ6œU•Œ•ŻČ9ÉJ–-ÚbiŠŻ¶·ÍRżéPٌ@“3ÇPÍÀ¶kU8°ÄmŚù§ŃȘŠ9­Țqoč0Țđ„«fÈ? ’Č:Žô3“”V«!WŁ]ÿ—XQÄÉKđQG—©ˆPò<,ț!ćĂüŻ|&†Í3<;zEŚG•sYù„¶@śBOîUaUśŽ^swôŻ;r”ÖŹŒÀí oÂŽ ú 2/?Ű 2 ÜnËïž–b°ÙLé†ÖŽČKüŽœŰăă{ôƜőnółă¶Ìr<žWÆ~~…‚Vb€æ/Ózqoö¶˜pžÆG†<ôYęC¶]œ ÄžópŠź@Ś’ìJâÚԓ•Ì4}< ĐáÉÏ0B„Ś"ž ș;Œór+/ÒŠŒSą&oœȘNædΞż ”ő)«D gôaž ŃNíÀ‰6úæÇSÓXš"ű­ÈB%b|êĂô™.s°JìÒÿĐ[ócÛ@,§EÍàŠ~:„yKĆ}€çŽÔl“Ę™p›ÿ…DŸß,Ébą@/«ûSú‚ÔDđ€ŽÎí?ÍQƒăźˆö·jΚ~źźO'QFšŒ„Ńđ·â2Á“žoÓ­_EfOłBU”e€äË»±æ·{àŠ‚P Ö8èX8óGĄćoFdĂqƒkS~žš‹Źca!8ĘF ̅Őmț {{I­òçÿÄÍA'Ïü3ȘhHß4îíŁžb;K,«2 *ŐäéHW §so rI‘ŒæI}Čv2 Iʑ·Æcƒ¶źšŒ™Ÿ“ÎK‘0”ŠȚaQŚ–=··QcvGaOaiß`{ïĘsdëIG- Ûß%y”2” iđ»ó„›ùÿ\5słWŒäšŹÚ¶D@7BÜ?Ź>qÊ|銌܌Úiï’îWïwÂ`Pz]$çe"őȚÛœÜ UZxĂu„ÀÌ$oę”á:vn7€ìŽÈ8tbcCOtöß~6ČčcَZ0ƒÁżúő"¶( öAÄČŒ#Ž„iÆb&%·7)IżM&{ĂÄrv^Ê8-†àœG; Ÿőœtq­2-‚H"3m_Ÿt]ÿÎÍ·»ÔȚ†Š–IűwéÔÁˆ¶ÒźLóBâ~Ćó`ç „ßfqA€˜€đâê…z»T‘x„ƒ`YÓŽŸ8©8€tïVO:òڂôžrĐꃷÜÍ{ u•žńüoo[7Ź˜ÜŽ@\îƒÂŻț?!žƒ›=­/ÁÈšT™5uĄć>„'Śż…ŸßLífźwò„ą{‚lL]ék“>pű»Ÿw`Ë«”ö}Á”šìòŰÏH^Ä3űűTąêŸćmű[Ÿś‹!—JčÎàăEnaùj‰ű âĄ45}„u”›ČB—p—oUjî֟úœŽÏ l©À.ˆćOgç3ïDÇ:BŁȚÂÖçĆ~È? ëđçÒ=ôV$ŒçÉHŚžžpòEv»egï;Ą€"Ń€† W3ú_(üëuR>Êă`ębÙ9üąm·m™oŐi‚Žlćê›ip<ț_­’łțșĘ,æ/żL@ŽSĐ_Zwń9ó8<šț êbĂRiF}áȚ'Ö§qčKÊOâ°k,O;c!üœFäNiq2·•F“€Ń‚ÀùÖSR[MßÖÒlœÿ‹GîoÄ5I 6>/­ApˆțŒŹÎf’Ç_RœxÁfÚą±Ÿš#ÊçœŚ— î‹oÔĂyeO{7âSŚHžŽă•a,Ä,†)ï{@Ț!VĆz ìUQZ7ÛĐŽ Ä6‘–cßöˆMź›xlF2 7TșJdŽö*Łüh|fPâŽĆŠ°?±šźúP‘&2aïÓĆú‘X@M•Kç%(Œ?OscwƋćČ^čV\à\ œì>xł_ăÓZ”~ĂŻZ1ԔÙíUKTÜ0üûzï€_ìđ4ŒT“ ·*-’Źx€í•|•ˆWÁ›ŁS2LT‡ìS⧔Š|¶~a;X~îeÙd3pĄ[€@$FŸç{dŹfBȘ”cxoRä Š)P°‘搅 “ ŒTx‚ÚđȘü2«ûùđ“k‡É{^úžźŠ„ż*›SéńìóÀ0§ŁW Ă!Cb|ËőO°KeOèIïHLòÿ‘€}»6AÄkź[r‰5.jŚ5Eç^ìʄ3%GoGBNڈ–” Ÿ\ÍNĄ±Äf"ÔRÜÈ>p pö"vZÇÆ-­=7eZ((ƒ(2A‘oőˆă”ÜÆLűdĐk+ép8čĘăӝ„QÄ…Knÿíû‰ß”ó*łHĂ”lȘ¶éß YZ