llvm11-doc-11.0.1-150300.3.8.1<>,:4fp9|-[OT0A x_E=W1ȣ8W93348:*@/ *Drx$Rn?Xoaq}ۍRCkPYUǸ<`c6˦:x_&VLU{$v 4Y5%L srɟhɌjIJq7HUf@bN-6|-(iLkbk"4K1nӂ\9tՀTo!jɞ"ik>>%?%d  ! 8| 06@  z 8 #  p&Lf(89: FuGHIńXdYl\Ȉ]^ bcvdefluv+z%%%%%Cllvm11-doc11.0.1150300.3.8.1Documentation for LLVMThis package contains documentation for the LLVM infrastructure.fh03-ch2bgSUSE Linux Enterprise 15SUSE LLC Apache-2.0 WITH LLVM-exception OR NCSAhttps://www.suse.com/Documentation/HTMLhttps://www.llvm.org/linuxnoarchj^ 8z66-oS/3NNq-S@8sP%KKR2)=P`114gpB8<}6)J*9+, p#-*F_DB?71/200%1EJG4*G3?Fa 1DTc1l6b* &# d"!(Z))863+%#&$$ 12!G4*uG3?:@7G|j8sk=DTI%31'#66#}*@;-"&. d)!%!,*Z))863+%#&$$=12M?Vo0{Dr *5z<96:;85Q,[{D8.CE?=65!G4uD'??F| &1DT%%1a'#680I }*1J@;-". d)!%!,*ZJ)863+%#&$$=1M goiT t>`V=.^U./0A<2(/Oc14!-@}P O3@>f J\&w<~̱=+m)>.>Y4 HQU!z5)0YSFE#{)@i+Z{e,5]5Ё.YCP5U^+k`=cG M`Ie[(53Zxp7Y7]>`  |;zmrX!@gX0I+*j[,T5 bMNeU-E-5O$`c]*_["&ZZ+?`/l4"C /!lV.t=510Y,fxbl3N[M<](v|AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤fkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkb4634336e4c51b0c6c897910a0b70c4b7d9e0c6de7e81598c1bf47902bf5e3ee2ab21c7dfdcdec9c4e859f0c6e01c13d3fdb78e0fad7725fdf12aca30efea634ed40b6ebf44eddbcf6903c92e5fb93a4c1bd9008ca46a260a1d24a9364fe13b418c734c8d150580ab87c6efbbfe15d5be5d8bdaaec241115e81e4a1ef7009d006e392e70ff2e22952ac66a0d0161aa875cbd0b04270621bebc7e1e8264f5aef55f542df897e691d1b25c78dc7b4f27555a94e1e984ddc22716488ced1e267d957ed1cbf6e19dbf93dcb694283052d7ffe1847094211fb236fd76c19b5d0c334ee916643194d715f1d0e89b78e2e0f7cf361af5fee7654fa69f2a0fc86ca4f6a9583131d26aa932213334498d31b8f465cae6acea1a6746cafb83b4dc54e9aa18159d56df6b744624e863380a3830040aeaab3f23bc0046670039074b909bec2d3d729442db24180b2754e28330fd160d23594f80dc60e321a2eb08950279dc5fdff035a27993b2255b36ea28cb613da75cdbb80a8750598eefc3d6179075140fa6aee2cd303076b4c1b45e9db0c3b058f72f01c7c0cf37fac6afa98408137fc448ee8765c5087515d0c30b5ad5494db00a1e1eeb79d2e663d49238e27491cdee23c7964529039cb997f05f039478be062191c9b3ad30340552479c52f1d5f452ec161f08b1766ce3444c81201c5a5160db23c3c5bc2c4373a315b1721742ead27f792cff38b1b71cc1fc8f2d6105b5b46865b829c94e4c8e2931ba6618bb17152c15ef863b4e989bb516e502abba1f31dab750a784bce494b73356b2d79ddbf03b1d4cc123fabef3855d63c47f7a2ca4d590094898c43ea5746e72790667871db4f6fa02aaf33d1319bbeba86c58b6cd03ea41d57213f874180794b56d08a580c03d50bda5fad2a4162218093e36a571abb10e6d5338395babadbe38f7e43db4248267306f78abd0a96fd9e48b59e9755852619fd79a2f5388206d84d0d33a0f09e3c2798ad43f4f763a05a1060c29e4974c217f37902fe507f87db42cb3f9468610f381a1e8d23ecb762939baeaa576fa0cb32007f4c7aecfce970a43babe8e1d9806797ccddf35401e278ee59792008fecc9984e29706575885cacf03fab16ef331a7288aab36ec98b71532bff719e2f6819782f409d500eb1b34183a1c5ddbff1a1529fed7f608ed0f392eea2ffee97183746b443aa0858ba7173eb079190d3ec62d178b156d6971e5b958b3b8012a5178164491e6bf3c404f3732d54e5f29b29251e2f2941511896031012c04e9d16c151937da0039c6ee74a2c7d52196f571d7623c00527a2f6956125188f31a81afb049e7a55650606d97428691bb939a118ab8dea5904e67362dcf3021a0f0121e8cacd18edcb2bfe5f089756d94392451d9e38be996491e00180fa07fb7dc3fb6e549aa48b197d869e0c461bacdc3be830f27820c6c145aa18f70f545d33692c639535c5ace60c35888adacabb8546eca692adc777ba8265e7471957cdd32fd66b31b38714bef76d5100a4762b0c21ceae8e63bccce7c3aaf6bf0c766291b59bce9b849a3f4c39717f199a831b8b382b9327ccc51b0707c7488dd3562b046cd6724df7373e24054c8fc20442d22eaeca75973f55d2179ddd5bb9273ed3801b28484a249e25e56531d46073d72c8912f8d57552073a9abf4b76d1ddac14be711f7082c71eec66595e6560499ed150f9155c0e26a72b6e2ddf6548bf51cbd4c7654d39d6ff61e0e9c65e8e4495e53f2d9f594ec5ee97fe4d759660150887b310d2bbbf8b7ec82346a738569195d45de9ebe02d9faf9aeed071a65e60fa56206680a7632211ec6c38ed672c9aaf1e1c72fd399efaee0b9e6fda496b8bdbe6983078ad7ccc6c11224c503e86aa833c2ec05033931e7a2f131f9bdfb257f8ee72a59a2596fa9094ae2d3a6de37d5ebcc8fa359354bd644134da2dae86b3dde7a4bc523ae791d664129918c6a35a145197ca4c965c75c479a10b09c7466caddc0808c3dabbeaf750aeb8a438bda18fd58bb4f7f6a93d6c70c2ca00b920aa0c72410fe26a2ad6ee6dba260446469f2b684187a5e75998ed219d00284395df3574d19baf9ef5c8a30282baeb44d579ea291d8b4a6c1a41bc6abc0e46724940cda41cdccba2fbeb4a4e12954b3d8ae9b6034a9759f40d1312d5cb483cc89806068c02c122d7225e591b2fc3c59473d9aed86f66085d47b21b7874c66ea9e8dccfb42840a28b0b4d81ec002829f73c4462a2201daeaf276385b8d71a9b6f37f47ea6a38ae559b3f13210887cb7d6235359b5dd3534642e66a9ba6bcf9552e46f278f907778280e1b304b7968f7330804bbcddcf07bfaf1749f9af9713fa3f1903737eae1e636ae392d0ec9916d93adba07f11b92cd66b9d05d4534622a5b4319761bfc5604e65e69bacf6a29ca10945a1b0c2ff22e798be60826d8ab831321e34a5c68b3d003ea6a5ece8a362d2ab6276bdc55f75ef1ed22cb012a52311ab5bd187c8116e71f7690a90a14aeccef7c21bdda4bdcfe7a8794f181904051bf5ac09e4915ec31105f9e5af5dd1fff07c4e8366cd691f046cbed3fce3e3ca0dc2843b890e6d06989db547c194e9525a943e8bc64f1d10c78cac0e79dc8d0def4ee67b4dfbdc2e6628e832f57cdf13a7be0bea8b9b7983e8ed5161156e28b0c25a092ec615bc09071024dddd8845a8a4f2f750dbc69b4b70fdf29980f329b2e300b2f2fdc276addb1ee1061142f5fa1b8d121ddd8ff031b27d08b7c2250d157805b75323e454d6bc15b4db86c9a6706caa3952060089580d20292b52dc9d5baec44dec7f9c7dbea6065e6082e2097bedd1be1dd7941ef76b1085ae3b30c85794beadafa9ce996fbb62315b8c947dfe84310b985b61f5deb572c124f44c67faac54a08c76fc6d8ad1a5a9fa4b55cc0b7a635531922ca6fdd25213161aee89990dfd8cf47ca538209f8fd7176ef19c16c966a302fa20580018d03c2bd96f0926bb0cb9076307b653a67ab54147eba31d82a3a9c63fc6ea2b8d8dfbad7779e1f31599af3db55a31cbb4b8eca3b61ac3b956048017ae42524c625c9a439874cb5fecc278e02167fed977c737e86fa91e2e4c64cbe73b437ee10329f0e76082e5f1ccd1fd412d98c4f8c2cb2f39fa9845318b233a57a0fb3138ebfbd38b9491b14b3804a66ecdd9db9d56f2c7ff46d1b5c7f48c15306a1a2eae3ecaf1588a33051436277cdfb890bc837b45a2ca24c66d65ea9045b39a310340fe445c5b7afe42899fad0339a98fcb231db40f1fe74b763b825513bc9dba79efbe86566a1acbac09503e2ca2798455e9bbf9045d2fc99194e0b6e72200bd1ae2945e34d29ef92d6cb95b0dca283e745e76bda583b69c36f7671078a3a0c8b7496e8de0b08d86a8cb926b78119ebd905455c98bc067b407b73c8ef21110645953ece256a9bcfe5871c2e7b591164ca0c3484afb6d0028fd0cc676cc6f7ed98b8387929fcfd501929b83c31fcc3d783094c76beefb1c0221d799ca5547a321ce78cc45f4d2f4f8f7e077dba617bd73ac46e56fa73ef4f69ce632288b737d6110b6c3baf6550d2ded8186dddaafda567c147893394f85ca23c8987f0bf440d29fbfc164ddb6fc1a034ee54faef7c40400c2139afac26f6d6c1cdb07636208f695df014907739fa571c2ae4d41c1860dde5ae1ad045f67f204e1ecc9512887bbafe13cb366b15094b5f515e51f2cf98448903a016901bc4c3175e3a621db71f6b9536942dbd9d094220f6ddd29d744fe8799e01827e32d34d29f0d92eab2e66f9131fc539be886680a6d251d0b93809aabf3a94ded1ece8ffb7a8d54b584d1c623192ca317b16ca9a44957e29c93f345cad52a20c9b90782813c03fe767b931b65b5ea491cea7342bfce23d54cb817e84ea911143a80190f41b25b13c8835a58ec5b6d1d5212433379ff1cd4f780eef853aa7c4cf221e317f1e292f52ff64983917c5bb37510ffc25e2a600dd17de66268aeee59e0cbd238ff24281fdb5833fa808a5a30b4b9a88ffcbe01e8a9a42e59c0f58b059f3df11bdb17c3c9b8b2ba989190601e6f465cb2d382dc1a1f701e3977f67e65c8abcace5d68bf74446c095630bc51887a9027b31d1651d43a2825af1dad92306a312446f42813b094ba959878a88a24e98531625b961e191288bae3b3e2d9dd66062f9578699a32bb9474bd385c07388119e06868bf00b4f4364ba8fb001fb71f9a4458f07206076bdaee62f513d2d0cd84753bb5a0ea906180b081df0985a060e0a29b071bd987ac9b525b166efd2df87461d3055614a767479d08cf5be61a6cbca5dfc40ba61fa07cb6d6cf3afafb79489add11000e26d38fcebeb3488289ed06b96c2065f305b87e5000eace0df09bb49ee97028e86c1fbbd4a6de0afbcbec05b08c5df4028782480159d6484348f233cf49f0adb3d312165285095f80e4421292d71acdad1a3e57f57aa2f7a2f6ce4fadb571c0d1d219725d53261114ee006e36341d0b0d8abfb8d34948453bedb04f3102519977d99c4567263639e5e08ead8ea5bc707e876825b3d16bd4a209b072c57d8235c49d16cb9334911934b690de9558a9de6ceb44c8d8fc82703988f683d50739197ab8538989b4020069f15a1bcc7ba3ea5eb815c1f34fbe6cb4188a4f7e597bcde0cab038872a3ee6179881e524c8f1d02ffd763f30d1ce047c8ee1136ede194020d021398aa27f0d7da312c77ed9f3917d4f9e82754667a69d75d5c63851a55f9594879c1d35e9ac647eb8ac4ba794dec70c82199d37e8f760a8d35b52bb2f35dae60c74ce442c8b5d4ce39415172df787ddcd24efe0b2e2810af4a54562654bd71187ac0489b20f246a823bb334064bd990a0ec3c1655913180fa2152e213bbfbea6e83a3954b1d17e901f609484feb6026e472763d52d43a1c12ec10fdf1f69e1f22b3fe2e9c29f1f3adbd143d00d1071b49d4ebfc76394292d358a622d2440d22331b4aa2885038f860bf85ac8f3a457bb71c4b6f1d9e16bcabb91f883f638635b451d0b635d170cff86ee2c9e08e01c17f64bc040d04a60dbd0ec6a9aa3e4e25a3e48c7e7f0b6ca2236aef296dfa37c5437601674d645dc0cf4fd684985ff5551dc381df410284b01a1d2aed24a05489520c491f1c85d5e88c39f4b9e249a8d07371bf368c691c0ca31b9ef577a176f220cfedfbb988ea1f05b8c7768ebc3f3574f6b07b901036e69d2f29613aadafdd6133e4aab7a641b96f6457e0b74a753e9fc0f25549dec825891545f4e703321f50a250dc72a1f1cb61aaac32595a73403fea46dac6b7e60c67facf032385f49621e27fc409f988a3eba9fd2cebb7140133d9821570e971fea3e04c38e238cb9fc73c1e701b1e36551cf71be7efb20fc4e89deb2097554db6d72afa0094522b0c26e9cab0385155792f1e6886e6d376ae39db2d3ed5c15697d80be57f5b4a841b544be0bf776a850d0ebe020762fc530895650461be0a133e9c87c0f54aebac0627fe5d851c65c66e0455bb8192ab9be6395c9effe6a18f02cfe6f4675077ffe6b9ea0745c0d316ff460571aeea7620df9aa84ace5db4f7886a5821f65692d479d7368346e6ab9adc913acf989e99bb4570e422442d26819a2e14896bb1b78ba7eb8f1030c76099e1b6e8a275df5929971714cd4b1d421645c72c13bd20e3e55c0c9f0668bef97c7c32ef531277a80a7e83910178b3f16b7746a0ceab9b0d4ce3eb00e36dc277b2f234d65e488d91d1e4dbeec33300fed69ff8c9a2c39903a7f6cd662a0fd32cd4b955f6745d2b5f7e298e38892531e35fcd88a6e4c6ee24fa72630a3eb85c7c10fde534a2885e75047cad7af6cebfe55ca0d2dc508734d8e156b66e3ed32a6924b718a31b57512291d5428e8edcc3f0395ebcc8b3c12e7ffa731bc99b3c30ab118fb4a811a0623853e7c6d20dca4dfd8fbf743278d533dba933f8db0173a9877d03f703e52dc08342ac9ed56740bf9ca7ac2610c000aaf1be9162690705f162435b940f136cd36c1f672fc6c1006782904499632deb7cfaf6c0748b8ca1096123e35161248401a4d1b82717a207c4d0e01553dc256a391422b87248d1cc1acecc0c01a4b6463dffc4e13f66d5ed65b5cf5e0f8ab49729363dd7bf89ccc5d95e6dd101bd3c44d4a85e095967e83ee7beecf5637595b524d1b3c354f830cbf5e0072c07537452ef194c9d2b93e7ff495b31af7136d19ce667c45725e47ca25c5e342d2500f3aa785c55a03e2a91c453097a0b2faeb6bc3dc6f5d09e09c386e90d8a92349ea1e2d939c0c40121e246de07a808e90ba67b915db0c2d8539980a5396a7c25e81dbec4bb77e6273fb20ba2c46921b18c5115360681b4592b5bec61619d9a2dc2dbcf56632b5cf2741747cd3db89b49b3f04a919dddbd74313dded39296e0500c6080b31b9a904a0aa162391254ff1df7403bbcc92466e2a27e64b39937e889c61d3444faafef7e34310e7252d68e69c6ed7aed7d3569649eab43eedd20f8fa5f24d85161150a26f14efd3c73a0896b2d24929ace9a0e63a9960c6efab90bcda8675083d3dddad3562d96fc84fb0445378e2f32bcf9a8ed829a60af3fdaa07dbe4a226ef970a5a6bb2ceb0e35ab0bfb0bb78e5ebd8b5e90242e64bdd8c4f6eaa635b927b09965d3840b8ec1b2fa4eb615ea3d69134f0304bdd7576a27670ffa4bade1107c7ae69db5407dcd860446f5d222b9f4e8ce9c7b11f82c56186df602040507a6d2d559725b18bd311b2f8ba2d87222445c0349f6589b723782c54ecfd6d814c4d964cf03f25087b9d5679ea673e0a065e62ccfe742fac5d3bdf636941d673af74ea3bf3f8ab47e90379d518a880f7b2d1a17ac847cad9b9650c929a5d3b78548c67e0896d1e4e2dc9c36bd874e3f3162776e9e22b96f96d8353e5e5680f82b4c3baacfdf0a0a2dd24fb45bf05a67b122771bdafe4ac6efb9fc834c82d3052c723b7aabb288b6af131d769c2497762fe8a66d18b325472256b2aafb6b34c22cb36d510a25e2e0fd3d63a9cf59523891a4334c3fb3964439475234d143e7b75b576a1c497c6eafffd54be823957a028ba4004bcf0c389edcc4f3bc39ea516a6e9ba309c806a2565b368228477e3155939ccfb688b3a7bcea62318110b497887bed9b43df592bc2d1e5b5e82fdb056c20cfacfcfa5d2ef82e34631575872337c047a291212c1a39587ea535f97fe54b89b998618b54442dfe609fe26a49bfd92f7dd99f12fb92dceaf33aad8c92a3a0926c1718074fca4e624564395c83ddcab2b39d3e75138327e6444f6354fe1ab5eed1481ee0172f9ac2a9fc9b800dfa0c27b5539d1a6d2862bb174421717ef555da7804ec6e1e69795688eb822697bf733afe2eeedee0c98f782163bef85e8e98c308c16d40714947930104b7f0cf5183a89afa5058cfd86353e6e031a78ab144248760beeec2722905d0ecaf502771104f46e581ba510eebfde5f3874a2c36df4113a20d43ade496d18ba7c038fc2aeafcbffe68c5314654d39ef6f1f968df3582d13cf2d2b04bbd9e1cdbdf1fbb1d78d3acb702bace2819b84c549e9f5515cce14290f0ad95bbe8814db5fec56a31c4356e7c07e96786c4900b059850af350c7b246d259328fc239a44b65eeb915149e3b2876b736d8e946a92e1697a22e8e48088c3daa33a4005f2ab4d591424f3dc5a41bd2a9bdade58d86fc3c255c0913e0f6d4f678ab8a05c0e85f3291fea590f0194debf0cdba4b79974dfdfbfff98fb7f7b4d241dcf9f66e9955d8b3abd1924b02cc38e7e527cd5ff8f95e47d213661d8f025e766ddfbe8354218666875653c3a8bb2271fd0a4dce28b08e423831bd82e4fb0ab84adcf21945f8053a42d254ab5e3aa2ccdadab260c1a9540d4996a7b1ae5993eb43844e4918377288f5f16dabaa36cf9d3cf511287ae953b4534636e684e7e69a921786528a3e5de31ed648a4d497448e75dbd0769b92ab275e88ef8a55f532d649dc6c1f914d0f0ae629bcf7502275a4b829eaa014a9647b690b1d9ec23338b981c8da1efed7b91857f4b5a8c0ee19501b68a5a3b164ae23159bbcea26f4459765f3624f550671a812ab1cc0f903e90c5076e7264fabcd23e381f910f74f619878eef24e6b8eecdda83a4eb2cc6b4521f8e6c7298b293a39fc2e74ec163b8ea399fe853b27168d6a4f6dcf0c4b91c4310e594d4a69494245d3f3ae604399fc2365125e7292a7adfde4897225a23a4b98a08da72c9f706dff06b5820df576ccc40e11df6a08b036b33671522dad9bf7a332d4331a0f70691cc7b56f32d7ac9eb9c109e5c9c5956b12d74bf62a26ad8808a6e22e4c256cf5318b0085224889530b903c98297aff6e4f3a837d4f500e1ab0549370ec9cc8aca8118a5b9fb24da5bff70a6c755022e00dd9faa51c982256ea96c82241e26a607ed6a932627e05f45b52c83fd7d75f9172300311046dab8ed5caa2181d9923e5751401a76abd8e50ee39c26e8f9816beb2d3fde29028ecd302ddb1385cb2f93af9bee66d586588f1b046a62afc3c043e0228930c20aeaef3f60bb34a024768af0ec367e870be4c628592bd0993a67401f812bb6d0c8173b689ae3d02ac2809247e58b32686017247d4174213244b2395bfe61877f9d4153a36d8c971fca2231bd4a0ef42e7b59d0150dd45fbb8a280151b8daf61dbdeb1cd1a0dc45b289bf847c6b2dcde8f30b7fcc6307c8724aa80b1e0e5ada8baaa7ac60882a417d2bcc7e6b046602c5fea13b1cee50b838cb08792841f9fe91f93a2232576f05a4c14ae2de33cab0636256f99c17e1553154d692f7328b7776df04c52e6745915a8b2bf65fd9b75efb798bce42827326c850da8b3cae97fbe4f816e050fbc3bea048ac35b6428299c5cf69f50f4c9b32273c2e468998d2826f2c075b94f64194a39bcd37076dea57a5eb77029f8ebc427dba5bed4e2b6adbd94cad055027c7fb108ed51bc2115b64fed3f89327bb6414561d6ad27ebb20732add8c894e143a018d8cb531484957a5ec6ea26c20a1226bcd330ae2e92ca679a053aa62e10248197f37f33d2e34f8fc58ccadc33ad895f12eebb581375e515abcb246505b39fba679469c7ec677872e8504a938c3525e866356558db0cebf5c6eef459bda1d0159a2465570ddf69e0e3674f97efc6e42047f9061a1b0f7dcfc254e29ec3a77d8e35f989acd0baaf1da2c4aec24d95fdd3e353fd3ebb6f12a70b1d98ff804fbb8636ca9005a86178d5fb22fa92cdd8f8db3998e6ba7b78941ee385b9cd533bc2d0e323229d79f9b9421f667954e17682b9be1af83d0bed20f43bb0af7d2333abbbe780487f53ebf0c2bf5eba0e591a497a6d1a2fe0d0dc203ebb79a0ca17515fc4dbb06acd63cdc514930e74533ff3b5aa16ef5757c9e110e4730521d81bc17ed4a94facf8313c76d5cf343bfbc4df0dc9e212a9e45a4a8d3f4f3ca8960eddecbb9a2297b256b2e8f1c9b5fa420f7ade99bbdbc47cff56988f0b93df57ff8f44ea53330ea25d027ecb4be7b37f4726f60de214085cca9a7de4223a40824b240bcaddda911acaed8b3d06d5a7428bce2c22ed7d4343d56fc0b38d7deaf3b7f823ef4fba363e0fa11343611661483d363251db16803c8ad35ead86e167891ed113be87ecf50ebd7dea02ec64bc2e4ca89230ed66d51f804c3019a8da578b1f48c1e4fad874444532195890dcabc8a62774552f46102e9b682259e0499c8f17dd613398d732de2d198c624b6fea0cb3308310e07ee665583b0acbd8732c8afdb02703613764c0709871ecc30ede1940e7f1e58086d73d6e2c82a3c3795b30d716b46d6dca76372dc780084e7a7bad77ffd7cdc7d1f97c78ddda58d2e96dcd629f21e2f431955622b24a812c9bdcc384f4fdb2b278fb65bdad2abb7b320f15f9cc02f9881adb71e02f7191288cf674b9623767352b04b915a32f202ec7f4355d6e5e3a0225327e9fbb9a246cba90af906e125af5e0707fe38d7fd3b8c4fc8aae2f9a61ef95522cd0840cc7ead88c7918b8d200d55ea3a47434114ec792bce095f2f673c755b1eeed8b99f2e9939ea6f01d734fde06ddabcd23874441ddc624d451e591ad0af7eaff38e7e2dfade0862074753da00ea12a3eeff6f2bf15e959f3358e17af5ccffd3175c2a98c2846fa316c889906251ec83f39eb679f05f04eaa3ec655772056f8eee29f4bc29fe161a0c8fd2a6c7d2a7a2330decdea4a556c377cd1d331d4f2e3ad6b94a09c44809a5e5b556af1f05d7fc5c84f3ef6360a915fdc6d2e757d9a0ecc7ca42a0761d80b2f4c8cd6dbaa30f5e99a6db68caebb0310c5ceba558f1a68fb074e8a62f9c79eaaea10d15ca9707daafad6874eff4ca04de27d7af465cb6b254adf8b0d739c41253ccc508cb8aaabb1f56710bc29c47fd2337eb223b990db80293246f9bf41014f08de34c0daf80e1c30dcd8b0596a4925c631dfe5b47334c658820b236c4e9b43ae6de7d93805fb8c9d47d16abf2e39240326cf7e1eab411f67d27bc5b93e2dac4fd87f478a4a5505c63a9546f12f17bdc8799feaea5ca2ab4edede5ad720dcfbcab76959dc43d83966ce2b26df57028811ca58530bc8461f84ca8b13d846139268bbfccda5bf93bb0f7ff120fa0c8c7b90ac1b5613bad13f0dd14b282920c78a8c127189a7cdb8a7027e9b0eba56034cac3eb1f5fb4818b36b0925fe2f0256739df61ae9585bc5429b915020ee4f6f82bc04404305fd9d1e6065b9c47dc9f4fad96fcc7a30bfa84242a3bcbf998dfee4e77501b25806c8ad35f371314edd3fbbbd457c7d68f9565ed825d4927ba8d60e7ad689e3db18ccfaf8d339c5798215d8cb06e6c2ac4a72c3cf6fe5669a13407d68e270f70f57853a6662e847554f325119beed74cd5530742bb2c39b6da6882b5b702faf08e172ad2e9663f16c56f454408263c648cda112ae0e1abb1f30d38589e9beec15f0dd61dec8280266f62ce14a621ea25125ca5bbffaf6aae897e22827591e28cd07d84da7cee1a008436f51fd8dba6ccc58dac7f72573bd1eb9579eeff60715adb733028934049309d1ba97a1855a2ace2c0dabff0d7eceace28522f37a0f348e2f35dc8db29b6da203d4b815e4a84ce0040bbe5c0bb6e8b0335bebe68b424ea2ed87ede06f8250e503a49a7f4aa0cd59040a5974404615160a8556623532cb26c05d4eb8d20ade8df6d4fdf939432f8b9e178c5ec935e8e3d30e29bda00d544f30dde76e391fae1768622c8ee03e089127a3d7fef1d6ae5b2e7d10aeb745a4dddf3396d86cdf1b69be6f98da82e52134a7679bb38478c02a9f9dd71bbb3d935d840914758931e03624371772fbf3332600d0264f387e5ea1a63d5a2cfbcce675f2254056149a6d0130056331383a1cd976e42239eaf01631d1cfb6ac2759d9c0da58a0432818afb588120793ccc569a0cd1a145a576b3ccaeb499814f26413578e3300d78fd2d3357e3d413fefde72892eff9b1aa3467e86bc4262870df88c286c1e4cfb9b9006ea670aa1021fceaf394e4105d6c75fcba770fe13df7f53f6a927c6d841f96b159415764eba153dfdd00cf391c9f57be7f77309ee017763672e984c62ac2e27fa61639e1a2362aea5e4ebcb5b2cacaff6fdd8f73a4d5b7b03d45aabff5553aca432ff1eb73d9382b14927f816fcc2b347dfcaa4b96c703e5b3890db05db3a50d732293a8a72c48741a0946c21e7f297f23eb9dc6d9acf1997d8eec06144a25c4f87e73c09385f742530c7a123aef07a5aabc9cfba6d243d0edecb32890f47a9d371b5663a13223afcfb8b7d0c5702d13afabfe62efd478555a22336b04acbb5bb78384715ab4b22641d3d05fba3da02f05f1d74b52b6e09d61808310653f9dd73394bbc4d5d14225cca39c1ee8e952a224af71b9df47a75c6192fe1db0281ef650352103f2737a98fcdaab43171d82d782d7968c0cee8bf7c06bac98a235f5fe0341e84076f327385e54e4f5e01496538c579af1cb8bbf54050c329a744ba610b95993b58ec713ac40d663fc2d7d4355f9384391653b6db7973fdf4c87037f93c481c6c7669bbfaaac6dc8338c01792c4c26a93602155959982b17edd1028bebab0bb0d523980a06e0a2bac05d0001bb0ea5359e691d22bc12826516060c25b88e5503407c606ae8c2396d146bc62d619969874b0b94163c6b22c2d00a7a23002c7d429ed458f10d4f08b82b395910ededff18afd268d7790fcc79e9dac997dae0990b1e84897ffc285a722150db17b492df94136e9154ee6a4b6932517fb8e9c8209c0a1ce50b47ebdc24349bc4aefd4fc4659281192905cadb608fb79c8289b359c0d004e5e249e1eeeb6fff6e23f66fab03b3cc7496930a8c5ea373545a269be83785db9db214b3a348f14e7dd558c4a6ef276515b39ade53ef7c41fe63ec454ea078d71cbad302b75ca0032bf86d339646ff3037890fcea44400b902c2b383130c965b9ec3e34a40145653374d95a46d79a8c76fb495cd1574d2066ca2b33648d90bb06dc5e2f8748542d172954cca27756c777f519db48aceec57100e3990bbe4f0e63ae5e7c352ef5904372dab5b0881ad3643ecc57d4deac6f9ba9ea45bd7f467e7bc971b62e0d4b0dde393b188a62b68e821a20085afbd62586007d45edc924dd059d85bdfd01e32de311105f601fee5e01ba050dea939767eacaaca7f0079592740c5bf1b2c73ff3e75fca738875abaeda165c0d867b59a09f8b5ef77d6d3460b64edb7dfe8997a3ca6c8b76716d1e441f01f3795c98a352e22dc16feee63f2b7b23dba19f2273f142cbd55aab76422cf65878d7ad41015a981594952c9bce431db372aeaac8b6395db007fb58f5277e14eb40b5deb2c398205e14a5dc2c76dd23042dff3c8f72e5e76d88b498875076c34964332f67e21f5430c54b55a24763bbf8b8cfc1055b2fd7f941c9d75f64db27a4ef1b58fd3d51501ede41a88f68ed6e79a85e6927e85c56c99e20193b9a1e3e43eaeac2e6781ff8a9152e28b037bf02e2adc5bf1e88b6126b8fc595ab5873e71fd29f1ad33d824337a4b624d5d73e8c0429f0a2e6491b16b3d83656f92b288696d94846beb1da5ba669054cd69b232c3ad6c36166d89aaa737ee835f97ef3d68f7a8eb267a1e92e942e4594cb692cb3991dcbf51ebcf11061ddf7e1d9254216a04f9e1a38606f00a5ce17f8b4a8f43483a294e42fde7fbcb516f6de7eb4aea109bf74bdd70283234cdd85f23400bfafa76b9748a2342e444daf68ac37c5a3a8c81a4490e00de8d2f50476c48d440a21226caa5752232d55c6d0266522c60f2dbf42a4866439e328bfc3fa9c7cff854d3aa3257d363bbed50f7bb005a33a7c5f2ea2e039966e69ea79be04e61b3d45d3c187fc507558155a654bb4846776519008c299937aaf0ca491f78a0984271c34326d147816a4acd3cd6e3389fa0b11674cd7f98723522f90d0b9bcb7d6ee7c9d7f19a56160c8af55caabc94a5b484460db5f442aa173ac79ec6553fc66ad994227730d187153fb2cd68c02d6b0fffa3b22a58c04eb15f1696ec15300c7d308bee33886dcf59f06009ef88a113fd0c103c09ccb196a3004465dcdcd75e6102d53b0e484d4d6b830a6fa8afbb17455f4d59d9c26f818197637de658fd32325dc0d8743bb33e911e6279081882c016f03dedce1acc8901c5e713ee3a5e6c22a475937c29b21f7bc8b48f99a25addcac40f99b11aefcca7ebb070a5d38e6f39ba504287ea6110fc6325f4043b58909073e1dda44f0d480924d33b64fb57292192dcab5a8197ff8480915493683516e41102fbb1f005c1ceda6f3248d78306ad0e158a79d5466330c821e597972c3d491404d0da18a0332e9c5980d74454f76e2b2539a3234a30f7a17a46491b60d7c8b9c89f19d03402938e9abd053efc669a3b6887fb0316135408bee63531759e309ea75ba9b7957c8b95945af406bdb6b1e9c5ad259d17f3731e5e84e9dde1dc3bbbfeee390bb1455ea8ee739e1f372b086f9fed3659f07df09afb67d37f327881098628907e79a3a2229f8450ec84530a31dd0e2cedbc75a52311252ed0dc589d450742ad15377aec6f55f1b933082208769373d238f43f55fd58d1306ffb3e16dcb64f7df78cca464a1e023ad7ced1c0c6f97e15a11e63db99f534d2cb43ff965acb4541fd70e30d33ec2627593a35a623251b621e2d3f6012e862ccb56e0f0f29c09398ba7362eed6f19fec6072a19332cc5fc8b0c786990a3de2b9d6055e99cfbcd92baa4ad1919ba876f26d844ce19c2671b0ced49f8f52e48242212d9e82494ba312aeafbfa56ab1f7dfb4d7c8a0162e1767d016db1bb0df8d936b08587715c48bb886aa95e9fdfedca24b98acd8e1924d4f88cecf4d0a914c6c380c1edeb6d345b4ffd9f99d0abf9610ef91d6085cea342888ee91dae24c1fbc8448f74eed46bed1bd399b74c15903fa2510b93d4d573ee5d6f02b85cb727e16eb5ab9a99cb05abf5998b67ad700d68843e0bcacba0d7c6b8d02a855576f6709e7ad974a4074885daae643eab00ec1baa92dfc7ede097528293d6575fdb5ee415a0c6e206211ebe9082801ea9db113d75e71ab4a075c4e51d3ac15dc012ee4f07deb302fb51a327e0767178531d7568d4b94e26636577611340a86960173f56c2821a78d4200db644775e2fef91f9fd6ba5408ae660832363d1bf83d607294f104e632a58cb5f3e875d41645260b56d418615e824291daa43011d83dbbfafedadb6d0eabb6d759e149f7cd61aa5f6ed7f20f876624d4f2462c85a85560f054891820bfa531ec8a13007f0c75fdf0a079245f63f5b41a6c73c731c0bf4446e318c943b0e9a5b4d67dc560c422b6c1b1ef986b0f9ebffa031ada1853cc3fa03949c2ee6d396c112658c6be8ef987ba79a3beda9354e7647294626bdc2fcd088bb3acf5a1eeeead9e9181872ad8694beef27e1454339719de71a8ffeda1cbaf5b0c5078c3af0199429e8617c9bf44806fdef4b7da4a99d2475efa4925c351da9fa0e06811f0b16053f925463a6b7cb9395e3bd67db6417e6c251cc12f349c820ef77f8e53d1de5c9d34b859379594363350b81ad19cba9383b097db1124407d0939a7d22136887a838198d42e050fd6cdbd5d0ffc5c55b28a9f58804fe43de57f960e1476632cd93b7472c0bebade5e20460e57d672949f5414fe29ee458d09b8950dee4b1e8918fa17c904570cacf7f19590c3f9d21c99ab2d70e48a1799c57d845afacd9dfc3653f9cef3fdcb51292e8965cc5dc6011223549963d08119a5479f49c9bab7af6191837d553b2cb71a04ec4733a43a2ba2823a92c9e5aa2bb408ca0a0a9de7eb428e69478d22b3c20e69e01ed46991c0e80e02f817b6da770666ad5d105359451a86fc66001758a49578f8adcd97a544c9bb89a8fe7b8b61dd15b74008ebaaad605cc8c8c253c1c787d7c558afa113b0d7008024851cb7bcc66a9685eb52f3000071e3361af26dc2ff0642da27ebbbdf3d6c9400c75fea8a401c32b69c9775dc97f691e89baf6a29d3cf49eae687b638b0ea5f78edf6be4e4c70ebe6ed80ee5c81d1c4e442a25cc603ac663a6242ac1dd07c6b4ea8b28622b49e1c17286805ca0ff1f5180df28e10cf36d4c248605c743bb226600c9281dc6b211f0da74930d01a83d415b71973bdef2ba20f76a947f0a72f57e008cabaa9786862d0c57da14245160fbea319d7fb5b692f6351a76b8a56fc7f4a56a05ea36ab4300e8a151583e5409af17a9f749339ffe7fbf4a525090060ec985adcb4182d6f88febf10dee475748ae6bcac8fa220c89b69d14024995b5eb49f67a62221a479cb55cef5e0e6aeeb985bf8be77188830d195e120cf767ebe5a8b6f7805bfac746b7ebbbaa368081e49b526f5764175b62b2f623de15359b3fbddae28260d28cbb101177e2f3c0c9fbba7ebd3d1296ab56c3b10d4fd4a82502b4c8e46cbdea855f334a72de6fbca77fd149ff2f192288ba7275f04b15630b6c35f01b1748194bbe96f42a967284e16d34439a5fc1a896a20b8eb6a73101b23acbbc6945adf52a879a3ebf63605d089645f46d67d9885a5539f02fa697af13c746f4ee56851d2cae76d3337482e73ae02b3d0b623975d27d44677a0f05f4798c434b270128d0e86605963d494cba80731226291666cfbc6763fe999245ac9706ddf1427572a71eef8aa2281c9639bb03bbfe79025ad563337e8c8cf2811f90778e898c7aa7bffd7c84e41b91c82b46b71190dcc3b5ffe7a5ec544ff6cbfc255fbc22c83beba18858a0b82695753e44dcc45ad31db6f971d16723fa09133cdbd9a4af61b80c1885dc4fbd830cfc699956f5a8f4d0746af5d450ed812bc2b3293be3cec83464c8684ab0ed2bfe0534995dd4f3022caa2cc44bd303bd6ccc3373fae10a6d4a8027cbc9f5cf58116717d24dc56509ccdd9ed0dcff61da664253f0cbf9e186797a7b1616f7df593d4d6fb2d991708119b3426614d57ffc2780f3392645f21284c5f44a4bfdb1f4bf85638fa806902a799142c88e3f259223319803fe4332fb894031dbe5c838253c56b310931132fd62e0ff08e6712f2da46a53f32f0ea7618265ea122d8340752f465195a28306e5755fd3682c1afe992861b983fb21103685c2e5423b3c979c7dc59474835c9a6d3e4e677045b9483080852c61e379feaaa4579fb31068b7f3e55ed7fa4cb37717465796bce0da9a5aee6aa42827d0a98878001d093862e35035475423051b7e561fbfe2528e89c6ff1ee676b7227aea6605e811405e065288a48f059c73e3ce2db2c1f406b109ae07328265e2a7a1125044c9da532adfaf5db4f3a83a707aa52ea6c16bedb3959d5df53559823f12b66a3cd15ac56b9c8ee8f592d6c9b014e09143473d610dd82b9a32cb29d0a3195b87e7de59a5b5ab93bcc25233b387efc62b65e529ff161cecbdc9a042d4b4df75a0d15d53f2e5e7fba4f4ce6ed8f334d5e77a34fb8caf44f77d23848cacb6c40aa5f98afd2c2c385c44701c2a539a93876f1252a47796f00bb51efc1fc3cf5f0741c3f67b651de405b921b46c33d136cfc090bdac9fcb0465740b074b0acf3c20493c861f6920380d98a8f3cb2b8a6ff50701b03be122e19dfe0869aed8ec18e02a2e3e7b5a2070e0b89dd4ed4e73e8a0b1798a917fd7354c1f3e2c257ff95a498bb3d71651e4bfeb295f46c7ae402fc45dbe8e2b27a54852149bb39163055127cbdd660b6b03f3ec942ea06e36358389ed53040066703935ca181fbacac6c7ff142ddaf4bad9dc0e001234de8322d259ceb15ca32fbfed31b0e8f5cc28506323ecb963baacc843316f0709b8cad6831ca989d0ca0defa21b8bdd23da164d7159ca773e650c1a83f82d2c2ab04ad2699c53ce7427720683d6228895a21206fa1824aced1deb6a9f628f1f34ef294e38b46ac018641346718ff80bfc731db9e41fff53802281722375eb25763dcfaa112b6c5a4227ba1c3dda09b402136c276868acc27c77a735a3b3b1bb15919c3489a718f2f5586629bf787e4d86914a10e2cece38a1fcb46ce16e0a517ba9eec8dde8b2b0a272bfdd78fbf75569728bc04a279505c979918ef715c13d65352592873a1e5f57a4bd11466767343ce769441ca2b471a4f981548f01e1ad595bbf29cd3889c63e2bf05e38cf025b4828a991c50852e569a2efb6b7a0be651fc6d90cb08998ad40131ee2435edf8a96fa9d3af912243961fa63d200d7ad9181148410f197d85ab278c3fb815b48241e5fea441f8c6bc03293d9a63595e69a0c19d0909fa593f4a116991f0fd01a892aa79983d53c7e2795d31acaaf6917619af9913f46bea018cee5800a14a7fee777eab396e68dd2d69304749934dc4f4cb849770baaf3506361b5d87eadf246edd41102d3b878cb81f28284e0074259bf3459adb37458e03b8f9d12047ea7daaeb8b158857aa98b01e696a277fef0d571d5b020fabf3ddabd02f1842484065af11247e0b217c10a9bacfc0f880a2bb94ffa0e4bd8e138eb46afd24d935454e3d3182f2c23aa5ab53d3ac33ad10d40675c9ff1c5ed082605d1c52bcd5f513bd24bfcce54948946d2bd222863daeb5edbec9e986f16ce43dffc71bea7d037faff26532fbe8283230b5c6497ee5f477ce93477f9a55c4b017c65b27facfd73a6085014286c79e36e3ca36f426d5931343bdba188b9e40eed65d726385aee0cef689870200367dd0846a341d91bd9099187bfd3c78374036ada7ce40586f2969e0c62c905228e7846c81ee74e2712aa727076af988d185857c32a5f6c7608db6df5b255f3c0d04ed105bc1c6cbe85f7e59ab49251fee607203889ff5d960896099c54784de465a4741da44e667bcd9d3e0ba164f7847e12fa57b0daa7cf74b25a36b0264f557da14f4f0a04036b823d51a94a3ca5a9d07757b5dbe96a0a278b980078887b9416cb539870ae4b36780cdf22b4593e7ba775399564836ec035300e8cbba95012779dd19d61f5e5436650f52ddc32ea03c823f2809d521023df10b9f10d17f3091fc0d02dbef29da3adc6f025f15e775431a46ccfc876aefc7ecefcf6963648a80edd62a7d007d7887f576d745b59b7e2d2ec2687e20bde4660e151a935d96594029fcf5685ec3036bed4f4618e85f6143345e57f1781434505c1c82dbd317485c71ec9ca9485c62a369a7752515ecd84fd32988885987e905708704cc72ce7f2d521f9198ca16521f31d33d13c459d71f582b24aff3962124ddefdb41de018bdc0c2726b8ced47eabda02cec207c5ac48458b5a71811529720621d3624c8ac99adae8a0401108cf768e8a4e310c6e38dee1898601684be9d443b5e1a8e018cd86b5995e65e59db0a1589ece00efbb9aead77764cf84e87077620547e9e2de33172a7d950f68c108e12365936bcffe4fe5d856d34e1c96da0f22602776fb97428647f71b6049732f82f0ce80c4d128f50d18b97d1776f9796d6f29984fa2c5a2a4114cbbd194790336e16fb0106d6d4eb59fa3f7ec45b5e63b95b6e9a8fa92586da47940a03cc8829b972dcd126d60fb874dd131f50c4b84b7fc5cad12705c473163a200c47e2869a5c1bbd4267fd01cf9fc5cc6504747b96e961bcd151674abeb95eb880a544956da378537db23155ce155ca06d70e4e5b6a28e1fdbcd76a7d331dd1ae42b864d189e5ddcc06a58694fe89c3a9cf7346b0104c808d343e68b13279531426f9acf11a0d32e8ba02f1a70498a6153fa169db39f0117e9c931661184788100bc4f192bd644651c8c846f1bca79a0dd176bfc639c63f67c5873d4f2b5af7204c9962bbd52d70a97631bbf896f6319e0f57d1d5d1ac8ad669ce224dfecb602652b429b34a10f1ed9896160b57ab899c381a81eb8d8b0756b2c9711015b982e5b3491ca0e2121f85f19aa3bba4d40381052d0d7102e351c591f7c559bd26ed0423daeece20a0e238db3566293a6b2385d46c891e744547266c7df25278ef52f923062154a8fb5ec9ccb74f94605ff61a04f815353c2cd4af7d3a1410a19085f267efbe3b88d37e042be24b8516c969b0e9f1c8d9d1bfa491e776a0dd3228c065c9e150a4b5fb5ee97265c11d04b0f72866f00ddc1924a1ce412fd453f73aae667b0f47d06d8f8d89a0ae26665549e8db55dd4fddb49e59ced69abb3ec561444934795e7d0b911fb5cfea38081f7afc0a5f670bef040963eb3b854aef808cfe81f02346375bc2c0c27c8ba45bee82dedd8a0330315d9b7fe908c4c64a487e019a0d830a2db4896478af0ec6c021b235e20caaff080e82938d6c9d1342ff1ea2256761d4e2dd2ba0337364e2506358569460e338dbcbbfb49b6b4b3f8e74f6827cd615115890e2147aadae24eb5fa3178d3e00d020e220b3b667d13123f9601903b7f3ea39f77823d2828a8c99d192ac5c0f67d924f716b83614890323901f001d3182efdff4dd1e1dfe38375937d9dea33cfa94b216851ce51f2eb7d01170e5028aed3a344d11a24445d6da4c0afe25f831d124f6f1500f61e9f7ec00b6e8e51ec1cc0f8befb32c99f5973232ae9029a630e7964c40d92e2cbd62418f7c23d2cbfb15a9820eb54ce64739a15e6d6ee638c69fdbfbd713eedcbd86b00cba80f80db607b0f939f805a413fd68980d6d38c01e144bacb30b45466e34c47694c3b7cb97abf72f52dc81b93b6ff19f4d44110b89c1ee2425c2e81c9d3977d3ac483f5f14ab94698d173e63c5d6339ce7e1d9812d40dbc4ba6635bbc59f8bdbe571ca5e7541ac0cb550d791807258656cf710910003fce559788f6b8e9a36c2c7d798a341349b3c5ec3f7ccfc634bafc36dead8c011b9fbd293a92c725e311a465f8575dce72cfc32bb5a93a09e665c5f53b6ccff7f787f93ba93e147ddce31343814c7b8fc3d789f2f110d80eeaae2d3ab7f49b01de4a481b32b1a3d1926cc64b10cced42082cb117aefbb0c207e4cd03f9dcb123480cdee9cca1c378b6c465220369e06b838f454e1afa55f5fc13ac5e87634e56d99333696ec795ab6b6a20d7ef1b98de9bb6ca376a6f7c03859ccf246f7d1e0897eccd8f96a3242502a433a89cfeb3d04007553486f7762ad432a83611e6b230fb82693bfe001aadedf4e5b3e49819d8bd432f067201a8ff39be8900671a878d8b06a958d1c90dba94d38c8c5e29e0eff9fdb72014612857cda0434d23a111a1d99473689be21c9716e638fa1f79282d924e2366218369e2eb0591c83f059abbb7f2634f6be2573b8d03494aa5a7fff85afa1d2b39f28b1448a32409458944e115c30f9004d6fe3e7a5f9f8926c534dc4d226a4c9112649dfe9306e21457886f055f49b697a36a4052430207efab6293bdfaa89170b5964ef69554b678130972e402fbd66406a94de02ceaaff4da01eb112b0fea82f2a585f0cde1fa3b98780478f8dfe1459e3ed48d980331817c0a76a9d54e7c77cda35cb6b69d95aa4fa67d60478f911b2fe83d738e820abd944ac078c02714a21109a60ac5e4de117058af92df98785927dd5e7221afcca2e0ea11c39d9244c9dbc2481e3c701976bafec193d06eec8947827f0acf2bc100d953751457a2e6cf14d177f5150c09b7c8001f3a2894fa3baa0ca8cc9bb9749d9e09b2443372f28b697eee9f987b37c1519c089f5ab81155038b96c539e5e0266a3023d539702d84283ab07b0ed8dd654a052320c4c1f59e40f89b5e96b3b67a74a8b991a52236d6a7926ec0bc7fb407a2a784796ad31db0cbc492d82b1a3e4bb2614343b9150b56444df78bee9ec4a362e842e1d3b1009ab75f38074d457ef93da44896bdf69ff03dcc9c357c451e02e8a59c6ee21fdfbac803f219225a5835d581f412139e93add25c5eda96a0ea43e2accdd13441457d7b2175b400d66047aa4767fc95514e885af2335920f0495c0f1d020cadfc96d1f7ca1bfd955ecf8ba470348b6754790ed38c3007ba45bcfbddf90b5080dbb1680c0bd8d18248d82d987c83338f752fe524a6885a95d153f2a659df96ba02d177b87fb481b2187e98181e8be04d4fb05e2b774a2d389a9aeab94b99cb61e398f00f31f69912dcaf3d7def10935b71ad4aceec6f6f916f4ea502ce6c18bf4a30296db6b31f765aabd4127e389c7f3f20222a60d21d4becd26b8a4920b0097d2e8213c760b510233fa0ce11f2283ca1b9e1d130b2208d3bafe1f66c8b0718acd8844f0763ca5177d985652ad3bff9bb4cbb09993be587249816d69331049f0b90af2c633075e88135940a7a72ab6e41331f3f0053913e2e6073294afac3dbf393b164ed110d771b1cd8465b6f9101e7974f1e23d45952de6fa08f3f2a0395f9aed478a3731d309a3bbc8386622fa0b3fa1aafa6402155f08866d0497d75c819ae71e91bfb6b465e46efe47cdf5d9f8995ed1ab1cee6081d7c073ef3ad02a268c3f11b8ff9001bf64d7ebf85fe1697f1709b0a5276205591f2245b0cd0cca6aa8aa7b5373f09b99e2715ffac117bc7a2f286566d4fea5b7acca8b7e0e01a3e01db5cebdb4fb73af3aea56ccf5813b600b098242ba62a53a883b35db7c8c5ae6e8432ba41b41813b46d28bef8fe9e0a9e630036e9fd89d0c7d3f20bdd5313e471ac7c9e7e345d52fb14be93aacf6bfd0ee0564469ff38734b84ee143668da164f20c60c7ab12e9ba1a2c87a9901e1361bced21734107e95cf1857823124f292fa4baec87623bf39af423e49176502484d2d4623a77b570a6f6dc9598b319fe537f03892f71028cf07d3458b1e6e853c62b0721e68b642f5e5a4c6faf6efe1316ff88f6dc8718f34bea2cf37dc2c3b326e212886b536a5e5c0911b0cc31b103f4250ffc163fe6c517d41c19faa7022d8d979be4dda21c067ebf731157ad5b30a396096fc5cd192748c2839f129322cf0a3fd1e66833c68f9a4e5c033a486fcbd5e036afdeaf9873ce1ae148ed81f9998bd469c2967ef361c9ee795eb0b3862ba31b2134014707234e21175903277e6d4d7e98c5cb8369a5420f33eb4f6dc75a010379d8df3cca5fa1f296b91443a386e85674d495e352fa8fb9c162656f59658b79a187b6c1e6612d3e415074833312fd9d1ac1aa99a18edb0f0a218f4b9cd4d0e65697e4499ba9ac2c51d9e9eafd3245268a527adffd6ab6731676fb05a364f1746698eab432e1aedbff41b701f2f222cafc3220255f18fa398ce40c9c24c43660d8a6f9c41ad9ab5d7dcb395c230f2afa7fe76f9213c1db06aadd60414be4ba4f8864071c201efce02365535ead8b58c15ba189aaa5dbb4fcb04464a1c957e5f236445efa2a9973696f5dea22082fc4b09bd46a271ce51b5cefeb901a3bd30f31a6e123eb366f161b22768bf5a17b61dbcdbbb3e3715dd82184271fc6e3f8a583dfa1b181b48a85a4177d44ec9658689e0f12576f073c639298240fff7db091bfcb77a4a89ff57d459723bb3b431d9ea5b9daee948beb0964a8abdaf6f0fe9506cc63f2f498fc8387f0ad500716c835eb34c50a087c436fe69657ad2becade090d5fbb769732bf7ded4b1d43ba45620f24e824a9cda4bc46d18cec77abdf790e11f9e400eaea7f39199afa73e311056603e30d9864eecb028ff328ff8cd8be3ea385f8ffea00407bfb90c25d8339d6f176b0561e1d93b12d860697c56ed5b29a370da41ca4fe052a00d587613e49aef540fe002ca008a686b099edcf55ebd4775ecbdf88fb233a52e3c6332db6292d4c00f64eef714ddba79760ffb3fe10dec2e2e8c7cc16d2783b905382ed89f4cac60ccaf0725f6027aad0f62734695b6eb793feea9b7386a15129e1e9eaa3ebd7a4b26461c265660f755a1d217cab34993c32c229906460d94dbf9adf8c23fbc7fa92e55e84b6c71d75d31ec95871dd37a80df7da055fd0e3159e98ede33fa7c21aad1710cfe700a2b622b3dc4d278a253fce19a0f7d0d022bc1a184da12b1bfb9aea7ae89dfd8dae5b7cbe383feffbae9e00272af86f4b895888e4c66cd3c452bed9ff61dce94928b8a12af14accc518023f2df87423d09093edd0a8a0ef3069ed0d9502a5e08327178cda85bfd6dc211399a12824f0c041491e8eed8c8ddb231e39f4f6929e4a63c0a55604e84906bafc5dc191c3b3a17061de044a1f175954184a2db6987f25195f5f32d8f07b5e121f9450e5e054d9acf74668f5da986ab02361157822f932fe803bc92029d865dc4190d537ac19439a0563653f463fdb9ef951f0f714543cbf5fdd09e1f0ffb1b677c602355966f39b869adb8dfa8d0a6af59819cf1ecb9b1d73e65d6b0a0d68c327bb2d4c051a428af904a131ef1489927412be56c740f1964eb2a32e1635fdc00099e49323a59a541ad5770ef70fc6b2872e5ef5af15f78b2ecb61ebc2ad10e61fb5c549007c9a8a2d90ab5764566fa6be7acfe303551f4a17422af61c93da5301079868506722c581e3a08ac399e7e33b65659bb99d15ad04edb7e53441c43e156e4eab52e6ebaf8aeb8855536b83fbde1a8074d9c4065144379aa4d4a2f6c5b804911176b73019d3a344040b8febd1bde9e0daba8836b8f3c50edbac32b046ee9f53abab2f0a984870a50dcb827172df53fcec66cadf4fe69c34ce1dcc4de8222e630ce0888a8aed2d48087ff0af96c1fb699faba50ab48118d460bec2dc76a0fcadf81d7e425384d28e0a690527be4204b82ddad26e3e4e401f2f9ac1f524b1f7c038d05a2ef5a59c48debb69252752a442b9a83d66a6c706f841b860d962c5ec013b423a125cfc039a541010fe26e678d16ca3a2d238c7c6b301eb1d6f714359f028a9c8a5e28b098ec6565e4ce046935dc713f5e3c5a1a9908ab808259a3305d3cf09f49827710c8022e7cff00537a97b20958624a3c25ac483127721ac7d45bb6929cb0a083075f85cb65c790ebf90db2377b6d0f689cd2f4f362bd6a7affaca10f5a043df750e1f55f7247005b35c9662f21f34da77071edd9bddc5ac465f54d4a43bb67e7f6bec14a48e86d291942aa47936c1ae782d19beeaf262d9898f9bbb05fd4546435b2e572714b9af6353da48dcc17aba6dfaeb8235174fefce1630bb798975b03b47c8f00af4cf88a250e1d0f6be8d29521d9df2f765b821d37bd9d9e63a1e048269d24e5543ee0421dca1535b705dbed6cb9fe5ddcd1a69f9bb8300e225b6a13fa89dbcc6e2d216f6b176f86fc28529b99e8da927cd686428300ab929c5e329b93d0549cbe0fa85a6643ed206902bc66ed76b50f943a91c6cf747f5a5aff3ed2220a7fe7ca72115d00ac64ea5f6ddb63f1fa0a5e7c9f2b9a5060b5d568f98b35de73745066c9fa073e373c105a753cb0a28c14475ac69632b5569fd60ebce8188ed7888637b3ac5057a7ab5b9c912fca1e22caa860a4766d41821f5af375f9749ffa4fee0ecbb2eb27f5b9511a58c9431ad5478bfb8f721e6a7fca70984fef75e44e92917e21415f3adddab7b7382b597d1913ff14a4d5ced3d669d11d4957915b50cd34c78a8259004937ba04541a764f8a6166b27f65bf68f98430deb74c8b8009ba74a0322bf83b09c8a4cd09882e4884bea1b67defd7e521aa1e526be786c25bb614c89f3fa4be165353d7a1e861cf47f7368913b5d346a57676ce163d99c705bf66caa4f73dcb7b12602490ef1481c06aadb10a1bdb13e1a2cc73ca55c5ddf8bd3254d91f3b2c3d19ff2ae7f53ff4f919350ffff700ad5f5270ccd2366e7b12d081f209367362b79b83f7889de88fb0d30b34056c5f9954ef69905f143a5ba3e8a8911e5b244dc6c6c0d7d84eea554423086fef158ef6d682d68bccdc1787a2822aecdea1ce91c36ef6ef854e48aeaaeb46319c3ccc70463db185c96ea1caf4b008e36ef8873f16ae8e788570e1670b809b5edc390519fd8f5f797046bd8c3560bfdab6768cf3d6ae1e3d5dcdc687e4db921359163e84be6d6a3bf9257da82bb6ed43c4948373e8e5b9eb4f2b90c6f1f5baed42ab9c2e4ecc2844b5ce0aab2dece96f200510f3d453874711215bee04754b1b2807c45dc0cf01a53c81f61f9cbf102f304b06e01e30759a58f5d1019346999dab7f4da32e1c67a7df3b4c5f81afa1a99e8997649ed64af115a67bc938f5f8c428e940b26e3fc956f4dcb051046391ac36048f3176397566c05ca85b96aeae885a175df9098d67fe86979a6b2ff58be0b6d8628091c419182ecacf1cb361f983b876bb17e6ff3557bd9aabe1f5aea200009fef4ae3d24bfe998c1a87a149de177616c679cea9d9c00ba4168231d966c9c1ad69e2711133a62acee37d30a8b1d3a681b97a0ecb8b5cf2f5de12e261cd20509a25355e33f7314787369972e306ec035c66f8d5766c9e10d24b336e60e6403fb382526a5ce508e8d1e2a3de3ea1b76e41d3c3c4d5755b2e4e5ec043145d481eead30cf86eb4bbf7689703aff498ffaf499bfd9ad74885f7bba2baf97d8073d10e7482ebbb9dbdb4e5a626f7c0a6b85c91ce9bca613e7df5aa6c20b05344d453102bc3abb5f5d812870e1b9a20f54be21ffa305a2eb437101f376d0abda7565e337a684cd50da0d6b376482347269b06ca60a7d45c24105b0034e172b084f6c0931d7623491ec7aa5d883b65de6fc07861b4092ac730eee29e11fd9e7edf7e720e4796a38b5c672e1e40e02e3dc27f4e76ec0c562e119741ca94613ed1ff2c13b5891b3ae123816d143a43504cab12f1f3cfae1fd792a116c78e4e2244711c202e7468e7d5b9b7f31e2f73efe444518a025edb3c50060301f5fd9bb786c693dfd8c0d5b44055842c9377abaa1632ed3f076e752333acda6e219dc67f51c510123b61c09a8f7512337340e38bd4cbc437d503ff00f2fa3e621d573ac41d6b63bae4c6fa5b047effb0ce10dd415319087c7e8d34be3a00af8bc6b00e66caf51caa0e9096a5bf2e4926fcce4a6334f54ca29430b13d971263538c34db3be62eda02d977c02a3519f20595b2e07de63f73514699b4dbc3f97984cdf27ef14c0bc5a0260458213089664e259c6ce9a5225cbb934878d6f3b6eb5f0f883cf68c858b6de103bf988c04ac7b8e70f4e1df2fd65ed6aa15aa7d46a47b4df8f646af6adb08a6e93053eed06d29cdf571e86bb7790918d2b80ae78fb60f653feccad592deff29d2b321fa3472103212f7091044a0a2744b48bc0d47fe1651ad28ccdf98e21b77ad709fa20e2c1dab020648b689976143c2d615bdda528a9235c85cfd8c06a89a9fcc151f4a6a55bdaf2e5775a9210377ace5967911c809126accafed1c6d5b018e01e173a140113663f1af559da69213e1efc5f94bace3b4ee069e004268c43c69a1dcf93bc361a112afca79e9e34288107c4ed6d99bb3bb86d542c4f38b64d16ae3b62a2c0c73267b6ea5b4d5d05f70942ef3a1b6d884b763793334b832dbcd953de337d425d658d2214e930ad060eb23f729841ca7f0b66b07b6e4f8b3eab7471a20f9a736d1dcfecf5910bb60319ca17d43088616ade4c2d692a25e13e4f2a2881901fffdb5e05f26098aff943e636910cf321c87a97f6eb0a42648db46185bcbc7cbfa8879d3c93717e490905851bf889b82ba61c606f07845c7098b329e4d228f6a240d925cd0f0b58fca188b3da2ee65326db9cec8dac62237b35a233a523ebe98390452125fcfd668173a03df30a181171f30d471225315e69d276757f2c9f211bc6d3cae6dd35cbddcdf4b6c3303a24863a533760a91e21257e7796a227ca7f582c3856ea67706d68abcd2d6befe94187f6e2806339916b55cff84b921c30af898c5d8471d6bd2c27457833627ddeaebced7c8342a9230e168936162e5cc75b3c0d34016bd97ef154db295fcb23e78854eab006596cfcc8c1a7e2a8356ba34cd34339a52cba373dbfd486d335c7a11f69b37ee110ac9973f87cb8e47e9d5a5fe8a0fcf60acb98658c813f9bf699e52165224ca5be69865536b88c932d64abb56d95099928fe01040117670e1b81df4ada8eee2fa34d650c2978c2c8e964f1924d9812a8c86bce84b68abf2ffa096be1972042ef0f8aaf468a4c418ba8e9f388b238ac246ac8a10bbb9a48c3d8a52724eae4c39c5cb3f4dadd0188882c7f415eb9d3f2b8981fda0bc254138219028feaccf4c956ffa3ef7f119572cd546a3c2351c24b67f729b6a80260c8a23d7e55bcd58335863300ba4042e18158a22911f6799169b297f81a31fa506423c1dcfbb656d7548032037df5549133bbacf7714092bdb8624635979dbe15f6a432b005ecae40d903d1d1d4f92d80067b396a8331c31d271746a943c50ce4af18433696ef98948ba09ded9c5507f5dd0cc57a1773f39aa2b2b7bae602f2ea430f17e83b9ca9bb6659a465d39a08b6890bb5d75d70ce714b4a72e66dd55616cd8efe29930796c5ab9ca601ed31d23af9c883160bee3601da09ce5a7fe208459119a666657f7e27bb2357f77c38cf5f0743fc056392af6e674bce20c7eb3dea239aece83c542416c4e0dc104171122310806e6fd1b9763d5c0c8180e92578ccf754dd03dbb972d8e0ff37b6a01584c2c5cf9afba87d3b0ee618c93e2379668d723ef8e57d3f5ecf0637f4c7d470d32ee1c68f366f5f46767de9c3f27956d6a8a39725fc0efe5757a8cf771fa68fd9765e048458b35a2e93085d8806bea3bbd7b06f0d0be1d89855a38dcf2cd725ad04812b3e57a87611855f8dda24268e06cdb1f37802ebc3220c45be3dc388712b4f7475ad8887594c30b29c43aee2d969f821da85302df93c118922f3fd946f3a71bff1ff1d764bedda0b6b4d578bd163da51a5545f9400f4d79003cf8fecf3b583d997dac25776935573e8d249cae7ad01bfb2c7b5f7868f63ff1f7cf06c8e0027c982a88c72c2ce19878f2e8117ba52564c4d618f4ba130678dc05f262f9b57221f0dd6619b3b1014c56ae1de7f14d350b95fb664382bd552f25b6951639962cc098ceb7f293340eee61ca5ce833a9e16e3f931291ca65427e31dfbd28593728a9cf3c27bab6a7b6fce216d40250abbf8ff36e3b5d0966ec6f1752ef2cf8d1d7ac0c7cf34a05cdac8fbe2205697b979b09fa837c48bc9b10cbd36f6798990e8929ad1705eb677c395baee6b68d7c34156ffbeedeaed89179a60d8f58e1b004613b83eb727ee14b8d4b185238f0208ca2b712f946c6c058b440b9fddd2308b4578616cf2b5afd38e3a5c7dcd8ae43c125ae89fe271bc539f52942f008301c3b2c2418c3fdc2cf9b12fdec2192e518cda6d5041c9bc80c1a84a49bb4c1fcee75bba8fb0562df0c83c72dafd56d54bc8c9ce30df5e0e5d0af1a90de19a41b53fd6412223bb3f5f7bc17e0c8f1e885a2de633a9c88318387d72db6b7def693931f4964268f5cce67d22d475377a09274586552228e1a00342b2ac8d7dff09b5d81b1b32553d92c8c3a6429e4e36e34ceddf73884a7d68ffd16bf3a28c13d88cef8c618c74b2206d5349f385de1567fb0673d3bed7f817f77ac86f50bc636bc99c32c852ad4c40f669a6771753b01d83dc52229af1e7143bb2f7fec51683b0bf6484b7b802c00ff94af966a2a79fef1d555167c91b01e3d3a0905af03759354c190d1e884b8de1d71cbc6bc90e13ad97088e894039258f7350e719eb1fe1c44a6e9ae13133dd8058ed26713f8f28065ebe70be2577bec5d1a28f108a011fab925c28fe468dfb5d2b9683f60d2cebdfa86c4a0f8674352f973d84066932d73babad9f6054d11afa268b02f2fe66fe5c6d6b0ac363016236e4bee752c9051258c237ee7c687a004be2e806ad3ba0118ae9d7066b0124e427f04fe6256bedb89497eba5f8c0ef8cc34bdb5fb6f8c7251b62749af591fd02a446ad7aac76de40ede6c641dfd155812df4e8f55cb69e770a524dde9fc0a6e6332a1013f6924c12f133be272571a70ad1f0eaab52e14ff43a1f45e32ab077bffa551d76108b8823e5e19475e28cb31891722b0d52bbd8b809a0518556a6b0e3f667ae586078bf6742a07edc99295dbeb3af78e08b8e7ebdd9c7b0b03b3424edd354d0f204cb48697a4ae7397d5d01adc69acda12fdcf30005ab12dda61d5e9339940752bf6e6b557332b6243b5894dba8d5bf56f204746340a89817a2841c8f548eea899bed49be11c415e454297b0fa7d3b1ef355184b4e5cdd241dbb862b49f970c8fd8c41f2c8e6a0cc3044b809c197f6697eac949be7a1f468e3b9a0a227791e3d284ef8d667a93dd5dd40e4c9011a7798630286ac3a7b7e0459deb5d32af99f72dc1ba07c379a7037402cfa5cad4ea91ed1a891316238f69373a7dba21b8cc576809d17edd9beaa4c2bf64768f1703f445c8eb2e4ef18acfe8b15febdfc6b7cc409b8131086bb0ad4db79d2ec80b4c6df7d7a4139cd2af88da2190b7c499582ab6ec5a57a224e6deb010076bba4ebabcb573c682aa3b44858e01c88b441cf9d3ae64219d42b0fc8e1976649abc99646bce0332f8692f1394bb3164f7d13cf6adb004e59ca9b478314ff9af270f208fdbc7ebef24ddab7d10dedd3616fc962f2319d41f8a9aaf3873656b98bda7c2bec3ee81ba68b2b0774cca68183c38d02f893dc03f6168782e46ac73cae869334f27e19de964fc9146c002265cd5b2ddf683be39cebc7b1ed1401e6be12a46beb396f7be4ba27ce75bb9bcb4b72ca306f7a6809e3b9a4a65ebb77aebee8f5c4bc9a16aebf38c4b950f59b8e501ca36495328cb9eb622218bce9064a35e3e416a3b2c3bf16d64f6b5b6d0f7b079df2267614dd6847fc2f3271b4409233c37f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d7b7a86c597ae4b68b34681ba872921f0265bd757d8a1f456ea2e376c23447962a8d56e53787d13dcd36716358b832e296eac07b2c93853afd5af19ae48b24de14860e3e6795909de87869b1a1f6543ac3281a57869ef0185f2f9f392ea74cbfa695cb6cdfd208a68a6318a952201574427d10637518ee3a1d1353cd4d2e4d70fe230e979f14ddda1cf6b43aa4997f416f9aa32d6f4bfebb80e9901d08ba3e58047e7fc50db3699f1ca41ce9a2ffa202c00c5d1d5180c55f62ba859b1bd6cc0082db4a1a2ac01f08c512dc0eb7fb96f15b4992d8e3810701b9ea322d005529a8b54115199b96a130cba02147c47c0deb43dcc9b9f08b5162bba8642b34980ac639c64fe27854993de85c10e737c5484969183c83e74f6479d57f12a1b0900549e8ab6d38993ec9ae145b6c71a9baa9a9f1afbde52ad0a2d42d31121453efc4c37f808f0aa32fbe90fb9c9c846917faff3fdd4e236c284b76c02dd33753dc9017742d8fad13bc28fc726775196ec9ab953febf9bde175c5845128361c953fa17f48a36dad71a9dfd5f838ae569278e5154dc7eecdf87c1a4056eb7ed45c519b7e1da546012a16078135ece9d9838ffa8135b577a607e33f0dfb5184ee3c43f61d366a28ebc02eb305416187da66c6f3de2c27d7a2478cf8e4186b25e01e82369f9c6ccc874b139ad34f31882aedcee7ab0aa62061aab060aed822d3ad3db36c77030f323741a2370c5cd6766f1cb581c7df0abb6dc34b877a571289927067e02e72faa1ae30444442bbe0a1d02ffa3d4bc60d76124937b09657df152d49dd102991f4305c4aa82edcb57b82042f99626a29eb00570cf5858c411a82273e472b6c3b6582def4fba9dbe726ec70e4c61e6d677757530bf1abfdae21514a0307dc33e6825757b267433e2760b83b99cffd4c59515595b006cff50615ea741a509bd57edd799a1cefccb33bc55a01e238b01298cc10c025fe667f9ff8184cd896796beef1b68b54a0d03138c6f7ce19d85f140fac70fd688271d9a7a93e9bb90d8ae92c644802d2430fc2633f99c0d6f0457338f035fbbc88a5e2228f9f953dbdfd97c8794765bcbe6037c5d0c8e98d7db8d9b586e56f8179ca35a5897fff77c7a7ba5bf4092d22f0eb719cbf84b6071bb366b8a049b241032a6c183101308b37dea1f45f2583cf01b75512d5a1788fa67b861d027ad4d2659b82d9d62e4d843993adc867fd750401f10c9753e023ab292cb8267d962108ad059d9e330624de572ac7508423e9e1ce599c1a5e2964a0d7525ffc904cd3dc2584194e2510bf47b2b960901e3ead38ed098ec2892275aae779b1aa4f37061e0f1bbb5faa33c65a204c3b5c293ab776dac81d90b0894192ecccf531794f7e6db660921eb20a2d8a6ebc7292e26ad1c9fed40ef94553d07d889a496010925895c6f4a707af2e1104d1281f4c6864782e62f1335d1492cc763f053997c94a0d89d90dc13422bd9daee77b8dd3c7c7ba38177f891962e087072e5db4a1c6317b810b85eaa8a9df7f293cedc018ea80c304100cff7fe7efe45b545340f960a075fed362c6f717b2f77b3e827e1edbcfcbbb311ee5a62bcc254efbbf9fbade5469a88f34081f4f4811d2639646dda448e600aef63a0bd8f97895ff523322ba366b2eafc52aec629733b73973831f4864c36167b32032a85b6dac7800d1b724e28c46cb3f1555a4f79a8a01b2837f8f82e1a1794fbc09972e273e04277bc15c36b1882bf80df972134117eefbf09597aa5a26ffee028ee65bae2e56bd3d9d4bdb19af1c05404d4cb76273b361103c6f42a226a6b9e7c466bd4ee45f40dfecfad28542662a6684d0e069c73e786c04e08b92ebea359fcaadd3966fa6ae7e79b9a611404ba9ad81963e5177d2baf659329d161d72cf54feed0f660b9660dbda82c60914cd4656cd474dc5e3cfc196c7e5c6a1b8387ef20a30ada8a1bd969e9ccb613cf140748ce6ac0b07bbcf544ee673ae3a85644d8cc391e3b32fdfe401a4102362feaf37c067595feed016e9e1d964839295cbb256be16002a2f0e8501f0696b0a9ba6fc4abcc76c8ec5f629c4aaeca326187da0fb75aeee663612e45022a2de2ea359954e59700e67bd583dcdd563b2049199599b3af0c8317b9fa716bebf75bcb8a492fb8d3a697b70171f5adf8249fe0130fab35c2d8009103758a0918f09a25f9fd8d28f4a08cff7854cd1496f4aa4336847389a9f123c5ad7fa91d08fa59e744af5e8ad845d2644cad639cf4ce3ac9d354319a86f4a462c6897f17a5df4b3284f9b2302a410a9de1d4b6083905ee597e8c0fe134fd15194f4676d4eac8be2bca475cbd1e236330e9f546f0d1426d47a3dab49ab050fc973ba41c026392f18faea74af8c6f1aca070a907fbrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootllvm11-11.0.1-150300.3.8.1.src.rpmllvm-doc-providerllvm11-doc    llvm11rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)11.0.13.0.4-14.6.0-14.0-15.2-1llvm-devel-providerllvm-doc-provider9.0.011.0.14.14.3cEc2__@__S_@__@__"@_*@_ @^^y@^x^h^c^=Q@^;^9\^8 @^1s^.^^^@^!@^,]]@]@]N@]]{@]]c@]K@]b@]b@]]2@]V]3@]@]]@]\ \O\\\M\@\u*@\iL\=@\ 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)h03-ch2b 1722592696  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~11.0.111.0.1-150300.3.8.1    llvmAMDGPUAMDGPUAsmGFX10.htmlAMDGPUAsmGFX1011.htmlAMDGPUAsmGFX7.htmlAMDGPUAsmGFX8.htmlAMDGPUAsmGFX9.htmlAMDGPUAsmGFX900.htmlAMDGPUAsmGFX904.htmlAMDGPUAsmGFX906.htmlAMDGPUAsmGFX908.htmlgfx1011_src32_0.htmlgfx1011_src32_1.htmlgfx1011_type_dev.htmlgfx1011_vdst32_0.htmlgfx1011_vsrc32_0.htmlgfx10_addr_buf.htmlgfx10_addr_ds.htmlgfx10_addr_flat.htmlgfx10_addr_mimg.htmlgfx10_attr.htmlgfx10_base_smem_addr.htmlgfx10_base_smem_buf.htmlgfx10_base_smem_scratch.htmlgfx10_bimm16.htmlgfx10_bimm32.htmlgfx10_data_buf_atomic128.htmlgfx10_data_buf_atomic32.htmlgfx10_data_buf_atomic64.htmlgfx10_data_mimg_atomic_cmp.htmlgfx10_data_mimg_atomic_reg.htmlgfx10_data_mimg_store.htmlgfx10_data_mimg_store_d16.htmlgfx10_data_smem_atomic128.htmlgfx10_data_smem_atomic32.htmlgfx10_data_smem_atomic64.htmlgfx10_dst_buf_128.htmlgfx10_dst_buf_32.htmlgfx10_dst_buf_64.htmlgfx10_dst_buf_96.htmlgfx10_dst_buf_lds.htmlgfx10_dst_flat_atomic32.htmlgfx10_dst_flat_atomic64.htmlgfx10_dst_mimg_gather4.htmlgfx10_dst_mimg_regular.htmlgfx10_dst_mimg_regular_d16.htmlgfx10_fimm16.htmlgfx10_fimm32.htmlgfx10_hwreg.htmlgfx10_label.htmlgfx10_mad_type_dev.htmlgfx10_mod_dpp_sdwa_abs_neg.htmlgfx10_mod_sdwa_sext.htmlgfx10_mod_vop3_abs_neg.htmlgfx10_msg.htmlgfx10_offset_buf.htmlgfx10_offset_smem_buf.htmlgfx10_offset_smem_plain.htmlgfx10_opt.htmlgfx10_param.htmlgfx10_perm_smem.htmlgfx10_ret.htmlgfx10_rsrc_buf.htmlgfx10_rsrc_mimg.htmlgfx10_saddr_flat_global.htmlgfx10_saddr_flat_scratch.htmlgfx10_samp_mimg.htmlgfx10_sdata128_0.htmlgfx10_sdata32_0.htmlgfx10_sdata64_0.htmlgfx10_sdst128_0.htmlgfx10_sdst256_0.htmlgfx10_sdst32_0.htmlgfx10_sdst32_1.htmlgfx10_sdst32_2.htmlgfx10_sdst512_0.htmlgfx10_sdst64_0.htmlgfx10_sdst64_1.htmlgfx10_simm16.htmlgfx10_src32_0.htmlgfx10_src32_1.htmlgfx10_src32_2.htmlgfx10_src32_3.htmlgfx10_src64_0.htmlgfx10_src_exp.htmlgfx10_ssrc32_0.htmlgfx10_ssrc32_1.htmlgfx10_ssrc32_2.htmlgfx10_ssrc32_3.htmlgfx10_ssrc32_4.htmlgfx10_ssrc32_5.htmlgfx10_ssrc64_0.htmlgfx10_ssrc64_1.htmlgfx10_tgt.htmlgfx10_type_dev.htmlgfx10_uimm16.htmlgfx10_vaddr_flat_global.htmlgfx10_vaddr_flat_scratch.htmlgfx10_vcc_32.htmlgfx10_vdata128_0.htmlgfx10_vdata32_0.htmlgfx10_vdata64_0.htmlgfx10_vdata96_0.htmlgfx10_vdst128_0.htmlgfx10_vdst32_0.htmlgfx10_vdst64_0.htmlgfx10_vdst96_0.htmlgfx10_vsrc128_0.htmlgfx10_vsrc32_0.htmlgfx10_vsrc32_1.htmlgfx10_vsrc64_0.htmlgfx10_waitcnt.htmlgfx10_wsdst.htmlgfx10_wssrc.htmlgfx7_addr_buf.htmlgfx7_addr_ds.htmlgfx7_addr_flat.htmlgfx7_addr_mimg.htmlgfx7_attr.htmlgfx7_base_smem_addr.htmlgfx7_base_smem_buf.htmlgfx7_bimm16.htmlgfx7_bimm32.htmlgfx7_data_buf_atomic128.htmlgfx7_data_buf_atomic32.htmlgfx7_data_buf_atomic64.htmlgfx7_data_mimg_atomic_cmp.htmlgfx7_data_mimg_atomic_reg.htmlgfx7_data_mimg_store.htmlgfx7_dst_buf_128.htmlgfx7_dst_buf_64.htmlgfx7_dst_buf_96.htmlgfx7_dst_buf_lds.htmlgfx7_dst_flat_atomic32.htmlgfx7_dst_flat_atomic64.htmlgfx7_dst_mimg_gather4.htmlgfx7_dst_mimg_regular.htmlgfx7_fimm32.htmlgfx7_hwreg.htmlgfx7_label.htmlgfx7_mod.htmlgfx7_msg.htmlgfx7_offset_buf.htmlgfx7_offset_smem.htmlgfx7_opt.htmlgfx7_param.htmlgfx7_ret.htmlgfx7_rsrc_buf.htmlgfx7_rsrc_mimg.htmlgfx7_samp_mimg.htmlgfx7_sdst128_0.htmlgfx7_sdst256_0.htmlgfx7_sdst32_0.htmlgfx7_sdst32_1.htmlgfx7_sdst32_2.htmlgfx7_sdst512_0.htmlgfx7_sdst64_0.htmlgfx7_sdst64_1.htmlgfx7_simm16.htmlgfx7_src32_0.htmlgfx7_src32_1.htmlgfx7_src32_2.htmlgfx7_src32_3.htmlgfx7_src32_4.htmlgfx7_src32_5.htmlgfx7_src32_6.htmlgfx7_src64_0.htmlgfx7_src64_1.htmlgfx7_src64_2.htmlgfx7_src_exp.htmlgfx7_ssrc32_0.htmlgfx7_ssrc32_1.htmlgfx7_ssrc32_2.htmlgfx7_ssrc32_3.htmlgfx7_ssrc32_4.htmlgfx7_ssrc32_5.htmlgfx7_ssrc32_6.htmlgfx7_ssrc64_0.htmlgfx7_ssrc64_1.htmlgfx7_ssrc64_2.htmlgfx7_ssrc64_3.htmlgfx7_tgt.htmlgfx7_type_dev.htmlgfx7_uimm16.htmlgfx7_vcc_64.htmlgfx7_vdata128_0.htmlgfx7_vdata32_0.htmlgfx7_vdata64_0.htmlgfx7_vdata96_0.htmlgfx7_vdst128_0.htmlgfx7_vdst32_0.htmlgfx7_vdst64_0.htmlgfx7_vdst96_0.htmlgfx7_vsrc128_0.htmlgfx7_vsrc32_0.htmlgfx7_vsrc32_1.htmlgfx7_vsrc64_0.htmlgfx7_waitcnt.htmlgfx8_addr_buf.htmlgfx8_addr_ds.htmlgfx8_addr_flat.htmlgfx8_addr_mimg.htmlgfx8_attr.htmlgfx8_base_smem_addr.htmlgfx8_base_smem_buf.htmlgfx8_bimm16.htmlgfx8_bimm32.htmlgfx8_data_buf_atomic128.htmlgfx8_data_buf_atomic32.htmlgfx8_data_buf_atomic64.htmlgfx8_data_buf_d16_128.htmlgfx8_data_buf_d16_32.htmlgfx8_data_buf_d16_64.htmlgfx8_data_buf_d16_96.htmlgfx8_data_mimg_atomic_cmp.htmlgfx8_data_mimg_atomic_reg.htmlgfx8_data_mimg_store.htmlgfx8_data_mimg_store_d16.htmlgfx8_dst_buf_128.htmlgfx8_dst_buf_64.htmlgfx8_dst_buf_96.htmlgfx8_dst_buf_d16_128.htmlgfx8_dst_buf_d16_32.htmlgfx8_dst_buf_d16_64.htmlgfx8_dst_buf_d16_96.htmlgfx8_dst_buf_lds.htmlgfx8_dst_flat_atomic32.htmlgfx8_dst_flat_atomic64.htmlgfx8_dst_mimg_gather4.htmlgfx8_dst_mimg_regular.htmlgfx8_dst_mimg_regular_d16.htmlgfx8_fimm16.htmlgfx8_fimm32.htmlgfx8_hwreg.htmlgfx8_imask.htmlgfx8_label.htmlgfx8_mod_dpp_sdwa_abs_neg.htmlgfx8_mod_sdwa_sext.htmlgfx8_mod_vop3_abs_neg.htmlgfx8_msg.htmlgfx8_offset_buf.htmlgfx8_offset_smem_load.htmlgfx8_offset_smem_store.htmlgfx8_opt.htmlgfx8_param.htmlgfx8_perm_smem.htmlgfx8_ret.htmlgfx8_rsrc_buf.htmlgfx8_rsrc_mimg.htmlgfx8_samp_mimg.htmlgfx8_sdata128_0.htmlgfx8_sdata32_0.htmlgfx8_sdata64_0.htmlgfx8_sdst128_0.htmlgfx8_sdst256_0.htmlgfx8_sdst32_0.htmlgfx8_sdst32_1.htmlgfx8_sdst32_2.htmlgfx8_sdst512_0.htmlgfx8_sdst64_0.htmlgfx8_sdst64_1.htmlgfx8_simm16.htmlgfx8_src32_0.htmlgfx8_src32_1.htmlgfx8_src32_2.htmlgfx8_src32_3.htmlgfx8_src64_0.htmlgfx8_src64_1.htmlgfx8_src_exp.htmlgfx8_ssrc32_0.htmlgfx8_ssrc32_1.htmlgfx8_ssrc32_2.htmlgfx8_ssrc32_3.htmlgfx8_ssrc32_4.htmlgfx8_ssrc64_0.htmlgfx8_ssrc64_1.htmlgfx8_ssrc64_2.htmlgfx8_ssrc64_3.htmlgfx8_tgt.htmlgfx8_type_dev.htmlgfx8_uimm16.htmlgfx8_vcc_64.htmlgfx8_vdata128_0.htmlgfx8_vdata32_0.htmlgfx8_vdata64_0.htmlgfx8_vdata96_0.htmlgfx8_vdst128_0.htmlgfx8_vdst32_0.htmlgfx8_vdst64_0.htmlgfx8_vdst96_0.htmlgfx8_vsrc128_0.htmlgfx8_vsrc32_0.htmlgfx8_vsrc32_1.htmlgfx8_vsrc64_0.htmlgfx8_waitcnt.htmlgfx900_mad_type_dev.htmlgfx900_mod_vop3_abs_neg.htmlgfx900_src32_0.htmlgfx900_src32_1.htmlgfx900_vdst32_0.htmlgfx904_mad_type_dev.htmlgfx904_mod_vop3_abs_neg.htmlgfx904_src32_0.htmlgfx904_src32_1.htmlgfx904_vdst32_0.htmlgfx906_mad_type_dev.htmlgfx906_mod_dpp_sdwa_abs_neg.htmlgfx906_mod_sdwa_sext.htmlgfx906_mod_vop3_abs_neg.htmlgfx906_src32_0.htmlgfx906_src32_1.htmlgfx906_src32_2.htmlgfx906_type_dev.htmlgfx906_vdst32_0.htmlgfx906_vsrc32_0.htmlgfx908_addr_buf.htmlgfx908_adst1024_0.htmlgfx908_adst128_0.htmlgfx908_adst32_0.htmlgfx908_adst512_0.htmlgfx908_asrc1024_0.htmlgfx908_asrc128_0.htmlgfx908_asrc32_0.htmlgfx908_asrc512_0.htmlgfx908_data_buf_atomic32.htmlgfx908_dst_flat_atomic32.htmlgfx908_mad_type_dev.htmlgfx908_mod_dpp_sdwa_abs_neg.htmlgfx908_mod_sdwa_sext.htmlgfx908_mod_vop3_abs_neg.htmlgfx908_offset_buf.htmlgfx908_opt.htmlgfx908_ret.htmlgfx908_rsrc_buf.htmlgfx908_saddr_flat_global.htmlgfx908_src32_0.htmlgfx908_src32_1.htmlgfx908_src32_2.htmlgfx908_src32_3.htmlgfx908_type_dev.htmlgfx908_vaddr_flat_global.htmlgfx908_vasrc32_0.htmlgfx908_vasrc64_0.htmlgfx908_vdata32_0.htmlgfx908_vdst32_0.htmlgfx908_vsrc32_0.htmlgfx9_addr_buf.htmlgfx9_addr_ds.htmlgfx9_addr_flat.htmlgfx9_addr_mimg.htmlgfx9_attr.htmlgfx9_base_smem_addr.htmlgfx9_base_smem_buf.htmlgfx9_base_smem_scratch.htmlgfx9_bimm16.htmlgfx9_bimm32.htmlgfx9_data_buf_atomic128.htmlgfx9_data_buf_atomic32.htmlgfx9_data_buf_atomic64.htmlgfx9_data_mimg_atomic_cmp.htmlgfx9_data_mimg_atomic_reg.htmlgfx9_data_mimg_store.htmlgfx9_data_mimg_store_d16.htmlgfx9_data_smem_atomic128.htmlgfx9_data_smem_atomic32.htmlgfx9_data_smem_atomic64.htmlgfx9_dst_buf_128.htmlgfx9_dst_buf_32.htmlgfx9_dst_buf_64.htmlgfx9_dst_buf_96.htmlgfx9_dst_buf_lds.htmlgfx9_dst_flat_atomic32.htmlgfx9_dst_flat_atomic64.htmlgfx9_dst_mimg_gather4.htmlgfx9_dst_mimg_regular.htmlgfx9_dst_mimg_regular_d16.htmlgfx9_fimm16.htmlgfx9_fimm32.htmlgfx9_hwreg.htmlgfx9_imask.htmlgfx9_label.htmlgfx9_mod_dpp_sdwa_abs_neg.htmlgfx9_mod_sdwa_sext.htmlgfx9_mod_vop3_abs_neg.htmlgfx9_msg.htmlgfx9_offset_buf.htmlgfx9_offset_smem_buf.htmlgfx9_offset_smem_plain.htmlgfx9_opt.htmlgfx9_param.htmlgfx9_perm_smem.htmlgfx9_ret.htmlgfx9_rsrc_buf.htmlgfx9_rsrc_mimg.htmlgfx9_saddr_flat_global.htmlgfx9_saddr_flat_scratch.htmlgfx9_samp_mimg.htmlgfx9_sdata128_0.htmlgfx9_sdata32_0.htmlgfx9_sdata64_0.htmlgfx9_sdst128_0.htmlgfx9_sdst256_0.htmlgfx9_sdst32_0.htmlgfx9_sdst32_1.htmlgfx9_sdst32_2.htmlgfx9_sdst512_0.htmlgfx9_sdst64_0.htmlgfx9_sdst64_1.htmlgfx9_simm16.htmlgfx9_src32_0.htmlgfx9_src32_1.htmlgfx9_src32_2.htmlgfx9_src32_3.htmlgfx9_src64_0.htmlgfx9_src64_1.htmlgfx9_src_exp.htmlgfx9_ssrc32_0.htmlgfx9_ssrc32_1.htmlgfx9_ssrc32_2.htmlgfx9_ssrc32_3.htmlgfx9_ssrc32_4.htmlgfx9_ssrc64_0.htmlgfx9_ssrc64_1.htmlgfx9_ssrc64_2.htmlgfx9_ssrc64_3.htmlgfx9_tgt.htmlgfx9_type_dev.htmlgfx9_uimm16.htmlgfx9_vaddr_flat_global.htmlgfx9_vaddr_flat_scratch.htmlgfx9_vcc_64.htmlgfx9_vdata128_0.htmlgfx9_vdata32_0.htmlgfx9_vdata64_0.htmlgfx9_vdata96_0.htmlgfx9_vdst128_0.htmlgfx9_vdst32_0.htmlgfx9_vdst64_0.htmlgfx9_vdst96_0.htmlgfx9_vsrc128_0.htmlgfx9_vsrc32_0.htmlgfx9_vsrc32_1.htmlgfx9_vsrc64_0.htmlgfx9_waitcnt.htmlAMDGPUDwarfProposalForHeterogeneousDebugging.htmlAMDGPUInstructionNotation.htmlAMDGPUInstructionSyntax.htmlAMDGPUModifierSyntax.htmlAMDGPUOperandSyntax.htmlAMDGPUUsage.htmlAddingConstrainedIntrinsics.htmlAdvancedBuilds.htmlAliasAnalysis.htmlAtomics.htmlBenchmarking.htmlBigEndianNEON.htmlBitCodeFormat.htmlBlockFrequencyTerminology.htmlBranchWeightMetadata.htmlBugLifeCycle.htmlBugpoint.htmlBugpointRedesign.htmlBuildingADistribution.htmlCFIVerify.htmlCMake.htmlCMakePrimer.htmlCodeGenerator.htmlCodeOfConduct.htmlCodeReview.htmlCodingStandards.htmlCommandGuideFileCheck.htmlbugpoint.htmldsymutil.htmlindex.htmllit.htmlllc.htmllli.htmlllvm-addr2line.htmlllvm-ar.htmlllvm-as.htmlllvm-bcanalyzer.htmlllvm-build.htmlllvm-config.htmlllvm-cov.htmlllvm-cxxfilt.htmlllvm-cxxmap.htmlllvm-diff.htmlllvm-dis.htmlllvm-dwarfdump.htmlllvm-exegesis.htmlllvm-extract.htmlllvm-lib.htmlllvm-link.htmlllvm-lipo.htmlllvm-locstats.htmlllvm-mca.htmlllvm-nm.htmlllvm-objcopy.htmlllvm-objdump.htmlllvm-pdbutil.htmlllvm-profdata.htmlllvm-ranlib.htmlllvm-readelf.htmlllvm-readobj.htmlllvm-size.htmlllvm-stress.htmlllvm-strings.htmlllvm-strip.htmlllvm-symbolizer.htmlopt.htmltblgen.htmlCommandLine.htmlCompileCudaWithLLVM.htmlCompilerWriterInfo.htmlContributing.htmlCoroutines.htmlCoverageMappingFormat.htmlDebuggingJITedCode.htmlDependenceGraphsindex.htmlDeveloperPolicy.htmlDocker.htmlExceptionHandling.htmlExtendingLLVM.htmlExtensions.htmlFAQ.htmlFaultMaps.htmlFrontendPerformanceTips.htmlFuzzingLLVM.htmlGarbageCollection.htmlGetElementPtr.htmlGettingInvolved.htmlGettingStarted.htmlGettingStartedTutorials.htmlGettingStartedVS.htmlGitBisecting.htmlGlobalISelGMIR.htmlGenericOpcode.htmlIRTranslator.htmlInstructionSelect.htmlKnownBits.htmlLegalizer.htmlPipeline.htmlPorting.htmlRegBankSelect.htmlResources.htmlindex.htmlGoldPlugin.htmlGwpAsan.htmlHowToAddABuilder.htmlHowToBuildOnARM.htmlHowToBuildWithPGO.htmlHowToCrossCompileBuiltinsOnArm.htmlHowToCrossCompileLLVM.htmlHowToReleaseLLVM.htmlHowToSetUpLLVMStyleRTTI.htmlHowToSubmitABug.htmlHowToUpdateDebugInfo.htmlHowToUseAttributes.htmlHowToUseInstrMappings.htmlInAlloca.htmlLLVMBuild.htmlLangRef.htmlLexicon.htmlLibFuzzer.htmlLinkTimeOptimization.htmlLoopTerminology.htmlMCJITDesignAndImplementation.htmlMIRLangRef.htmlMarkdownQuickstartTemplate.htmlMarkedUpDisassembly.htmlMeetupGuidelines.htmlMemTagSanitizer.htmlMemorySSA.htmlMergeFunctions.htmlNVPTXUsage.htmlORCv2.htmlOptBisect.htmlPDBCodeViewSymbols.htmlCodeViewTypes.htmlDbiStream.htmlGlobalStream.htmlHashTable.htmlModiStream.htmlMsfFile.htmlPdbStream.htmlPublicStream.htmlTpiStream.htmlindex.htmlPackaging.htmlPasses.htmlPhabricator.htmlProgrammersManual.htmlProjects.htmlProposalsGitHubMove.htmlLLVMLibC.htmlTestSuite.htmlVariableNames.htmlVectorPredication.htmlVectorizationPlan.htmlReference.htmlReleaseNotes.htmlReleaseProcess.htmlRemarks.htmlReportingGuide.htmlScudoHardenedAllocator.htmlSecurity.htmlSegmentedStacks.htmlSourceLevelDebugging.htmlSpeculativeLoadHardening.htmlSphinxQuickstartTemplate.htmlStackMaps.htmlStackSafetyAnalysis.htmlStatepoints.htmlSupportLibrary.htmlSystemLibrary.htmlTableGenBackEnds.htmlDeficiencies.htmlLangIntro.htmlLangRef.htmlindex.htmlTableGenFundamentals.htmlTestSuiteGuide.htmlTestSuiteMakefileGuide.htmlTestingGuide.htmlTransformMetadata.htmlTypeMetadata.htmlUserGuides.htmlVectorizers.htmlWritingAnLLVMBackend.htmlWritingAnLLVMPass.htmlXRay.htmlXRayExample.htmlXRayFDRFormat.htmlYamlIO.html_imagesARM-BE-bitcastfail.pngARM-BE-bitcastsuccess.pngARM-BE-ld1.pngARM-BE-ldr.pngLangImpl05-cfg.pngMCJIT-creation.pngMCJIT-dyld-load.pngMCJIT-engine-builder.pngMCJIT-load-object.pngMCJIT-load.pngMCJIT-resolve-relocations.pngblock-extract.pngcycle.pngcycle_pi.pnggcc-loops.pnglinpack-pc.pngllvm-exegesis-analysis.pnglocstats-compare.pnglocstats-draw-plot.pngloop-terminology-guarded-loop.pngloop-terminology-initial-loop.pngloop-terminology-rotated-loop.pngpipeline-overview-customized.pngpipeline-overview-with-combiners.pngpipeline-overview.pngspeculative_load_hardening_microbenchmarks.pngtesting-pass-level.pngtesting-unit-level.pnguml_builder_pattern.pnguml_nodes_and_edges.png_staticbasic.csscontents.pngdoctools.jsdocumentation_options.jsfile.pngjquery-3.5.1.jsjquery.jslanguage_data.jslines.gifllvm-theme.cssllvm.csslogo.pngminus.pngnavigation.pngplus.pngpygments.csssearchtools.jsunderscore-1.3.1.jsunderscore.jsgenindex.htmlindex.htmlobjects.invsearch.htmlsearchindex.jstutorialBuildingAJIT1.htmlBuildingAJIT2.htmlBuildingAJIT3.htmlBuildingAJIT4.htmlBuildingAJIT5.htmlLangImpl01.htmlLangImpl02.htmlLangImpl03.htmlLangImpl04.htmlLangImpl05.htmlLangImpl06.htmlLangImpl07.htmlLangImpl08.htmlLangImpl09.htmlLangImpl10.htmlMyFirstLanguageFrontendLangImpl01.htmlLangImpl02.htmlLangImpl03.htmlLangImpl04.htmlLangImpl05.htmlLangImpl06.htmlLangImpl07.htmlLangImpl08.htmlLangImpl09.htmlLangImpl10.htmlindex.htmlOCamlLangImpl1.htmlOCamlLangImpl2.htmlOCamlLangImpl3.htmlOCamlLangImpl4.htmlOCamlLangImpl5.htmlOCamlLangImpl6.htmlOCamlLangImpl7.htmlOCamlLangImpl8.htmlindex.htmlyaml2obj.html/usr/share/doc/packages//usr/share/doc/packages/llvm//usr/share/doc/packages/llvm/AMDGPU//usr/share/doc/packages/llvm/CommandGuide//usr/share/doc/packages/llvm/DependenceGraphs//usr/share/doc/packages/llvm/Frontend//usr/share/doc/packages/llvm/GlobalISel//usr/share/doc/packages/llvm/PDB//usr/share/doc/packages/llvm/Proposals//usr/share/doc/packages/llvm/TableGen//usr/share/doc/packages/llvm/_images//usr/share/doc/packages/llvm/_static//usr/share/doc/packages/llvm/tutorial//usr/share/doc/packages/llvm/tutorial/MyFirstLanguageFrontend/-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:34968/SUSE_SLE-15-SP3_Update/f6abf84803f7f4e9b52be66e06a82c94-llvm11.SUSE_SLE-15-SP3_Updatedrpmxz5x86_64-suse-linux  ! " # $ %&'& #()(*directoryHTML document, UTF-8 Unicode text, with very long linesHTML document, UTF-8 Unicode textPNG image data, 606 x 326, 8-bit/color RGBA, non-interlacedPNG image data, 626 x 459, 8-bit/color RGBA, non-interlacedPNG image data, 604 x 234, 8-bit/color RGBA, non-interlacedPNG image data, 560 x 234, 8-bit/color RGBA, non-interlacedPNG image data, 423 x 315, 8-bit/color RGB, non-interlacedPNG image data, 495 x 254, 8-bit/color RGBA, non-interlacedPNG image data, 543 x 399, 8-bit/color RGBA, non-interlacedPNG image data, 381 x 315, 8-bit/color RGBA, non-interlacedPNG image data, 531 x 687, 8-bit/color RGBA, non-interlacedPNG image data, 489 x 339, 8-bit/color RGBA, non-interlacedPNG image data, 555 x 495, 8-bit/color RGBA, non-interlacedPNG image data, 605 x 446, 8-bit/color RGBA, non-interlacedPNG image data, 586 x 286, 8-bit/color RGBA, non-interlacedPNG image data, 570 x 461, 8-bit/color RGBA, non-interlacedPNG image data, 713 x 331, 8-bit/color RGBA, non-interlacedPNG image data, 437 x 286, 8-bit/color RGBA, non-interlacedPNG image data, 886 x 259, 8-bit/color RGBA, non-interlacedPNG image data, 1200 x 800, 8-bit/color RGBA, non-interlacedPNG image data, 764 x 855, 8-bit/color RGBA, non-interlacedPNG image data, 467 x 554, 8-bit/color RGBA, non-interlacedPNG image data, 748 x 789, 8-bit/color RGBA, non-interlacedPNG image data, 564 x 354, 8-bit/color RGBA, non-interlacedPNG image data, 1702 x 272, 8-bit/color RGBA, non-interlacedPNG image data, 1704 x 271, 8-bit/color RGBA, non-interlacedPNG image data, 2052 x 1116, 8-bit/color RGBA, non-interlacedPNG image data, 1702 x 720, 8-bit/color RGBA, non-interlacedPNG image data, 1380 x 350, 8-bit/color RGBA, non-interlacedPNG image data, 1015 x 571, 8-bit/color RGBA, non-interlacedPNG image data, 813 x 577, 8-bit/color RGBA, non-interlacedASCII textPNG image data, 1 x 40, 8-bit/color RGBA, non-interlacedPNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedASCII text, with very long linesGIF image data, version 89a, 16 x 30PNG image data, 250 x 88, 8-bit colormap, non-interlacedPNG image data, 11 x 11, 8-bit grayscale, non-interlacedPNG image data, 1 x 60, 8-bit/color RGBA, non-interlacedHTML document, ASCII textASCII text, with very long lines, with no line terminators@*JBPREutf-88d52bc04e04e4c136548f713de16d999d434a4cf227a8d7299b84cf8ad63b099? 7zXZ !t/]"k%"ËDu8ߔ12v/z@+* X2E]!7d"G5}3ΉcnWF}홝:il1`3`̳j:w(%͙ۻ;^xkUlg0w Ft|Xj`m"KdfrWڜ͎?niቀ ~.CUVZWr QDO|!}gkigJ#T/G$`h[yиFK+N=<`Tx-mZ} )I\Y!LVoJ?S=12'/52^Ir?Z`XMYĻ3iܻ;؟Ko[µ(sh'AiP]-';ث[nHt#/r7/OmQ|U,9aTR[8TKq6lS# ;CkN:|g:,=R(#/y¢hq[tb^+)޲OFzyB䲪=[qRj-u'5ó`?w팠)gaaSi ť /20\M =}ԇlT5 G6-e4>qO_0da0y/=z4 9P)R \ZMUlu>5{6R5o#v_[;ifU,h!q R))Qex{2o5^GNcX@?$-t]Bn2݆UQ,C[  ó{W,ȯKkv~(Xi['OJ`MɳS|gya_6 v\ eF-f/J&!}c'E G}P%G.59Nmc,PJ0-Ap m?-C7Ct#"Kl{nHװPL3Bq=xl@U5V'ֺ}x8W0X@Nv)]Gmj!2b[Iu:2s#)n2$cRhg_ 62uubwYal!SCA~KS ' (TLMfd@ޢ'1vFK- B]yz5H7RM 6%< r#u(!⊎7dmǥd$3DleH wjk SNa_I-}Q]5To|DHH~v %7a@l>XyUWquRIF ,7r&&ۯ+-A)cPNinm2]V<8>GWBP悒qeX錩=Y3C#C #%V*#Kuc?f#(FTϣ{;5E;יͰJ~)ŌHc6 !🭇V+Qrg@fvWDF|fw40qQWt:B9~0)YP'(aن!Km]I(2~OTMtW/67ll( %x:|YϯgEMPtǯ"f_bcb0" ˁOf*nUU`C>u^@& fzFxnzDc!P " X\"Slom,[v}YU[8~׿u 8sdKNxOߓ1p|,&m;؄ !ɉME1aL{E:v}5`Cc|1 vMus4ޟ$-RS>_ HC&"S.A_=seI, s[ W#OnX}OȩnnW7 捒~b+C6#,BDzrgQ]aqF$]"RyiqM ѼǪIG͙1.?M;*|qށa^/UkZZQRJ3)'fOssM=C4ۛo &*HӍ.4O%.Zd[QO@_!۱sÌ8 s6e ;_LIʢmJTx;kDŽaC织. qMGH=„5t-QD]OX~*#ؐh-*#;qI;D0/ -"09L)|^Ly=SxHJ7_^x\T")5AtSbuN#Rzhts~ WKmV'sO| kv)S`IBY@Ȁ[gW^WžЊ0l{f2vK+|RjJt=z҉@) y0q\)f_-h w'@M6QkGihB絳 .K,#@USUQ0, 0"e a% "ĥ nIY ޻ɅT'T@h?mtq7w6"@VTHTy P/@m4bl&םmd+fbD bo7tfz-2xa3o鑉Wr '|4 }Nr[WPYh6ː3S]FL,e7d`>_LBg+ּ6)tb^5_LVL؅W Q\IjPGB ˱tƴ(6U3CiDa9n!x| Cwڢ ^7Чۃ\:fE "Z_0 ڗ!QL|U"a? 4 /O_W1<@@ls^οg%}V^׀6ˋHKwa>%̭ك Q K$)[-*,f;Hm"-݇WG/:ChdUp =ʆ6 YZ