spack-0.21.2-150400.15.2<>,ep9|s2X$rL`` ~vNmmY^Ҷ:yOB-L(5_{.8 7dpƬ!*_:-jMo'd٣ '}hҖC􄑥*}HiBMS Β\hVoI\y:Y}(ِڴtK(@>ފ28}P-!۹.cHk Twp?D[mDW#9GdoWӁ|ŭ~Ъt)xF.c>Kg?gd  ;DHTXq cP  # 2p    @--".|"0"(0r)0y*1/+7,8X-:8=(39=3:@3=Z>bDjFÊGàH0IXdYp\](^pb5Mc5d6ve6{f6~l6u6vE$wHxWye zeee f g gggCspack0.21.2150400.15.2Package manager for HPC systemsSpack is a configurable Python-based HPC package manager, automating the installation and fine-tuning of simulations and libraries. It operates on a wide variety of HPC platforms and enables users to build many code configurations. Software installed by Spack runs correctly regardless of environment, and file management is streamlined. Spack can install many variants of the same build using different compilers, options, and MPI implementations. This package provides a module file that must be loaded to use spack.eh01-ch3diV3SUSE Linux Enterprise 15SUSE LLC Apache-2.0 AND MIT AND Python-2.0 AND BSD-3-Clausehttps://www.suse.com/Unspecifiedhttps://spack.iolinuxnoarch/usr/sbin/sysusers2shadow system-group-spack.conf <<"EOF" || [ -f /.buildenv ] g spack - EOF # Replace /etc/spack/compilers.yaml export GCC_VERSION=`gcc -dumpversion` export GCC_FULL_VERSION=`gcc -dumpfullversion` #sed -i "s@GCC_FULL_VERSION@$GCC_FULL_VERSION@" /usr/lib/spack//etc/spack/modules.yaml if [ -e /etc/os-release ] ; then source /etc/os-release if [ "${ID}" = "opensuse-tumbleweed" ] ; then export SPACK_NAME="${ID/-/}" else export SPACK_NAME="${ID/-/_}${VERSION_ID/.*/}" fi sed -i "s@SUSE_VERSION@$SPACK_NAME@" /usr/lib/spack//etc/spack/compilers.yaml sed -i "s@SUSE_VERSION@$SPACK_NAME@g" /etc/profile.d/spack.sh fi sed -i "s@GCC_FULL_VERSION@$GCC_FULL_VERSION@" /usr/lib/spack//etc/spack/compilers.yaml sed -i "s@GCC_VERSION@$GCC_VERSION@" /usr/lib/spack//etc/spack/compilers.yaml sed -i "s@HOSTTYPE@$HOSTTYPE@" /usr/lib/spack//etc/spack/compilers.yaml mkdir -p /opt/spack chgrp spack /opt/spack chmod 0775 /opt/spack&kV r   &8L}"p:e !&Q4 bZB;!e:95}!I{x=A 3UU4FFCCF,=@1~!.7}ź)tX,rW9i[ !'-0-FT I(UHw; !rYA BWjed! "$G- J%/ e9Vx=X d(ai!z V%"x r)<d\!/J *$%,^ EB`E 147k%,^j= ; $;-A yX3\&!C-25 ;<dC eX \v3HO'< i CG' P _ mXW s.9T$ WE; %R tK.{AM` O t4^ $ "7A -F@d* tH1$(*H 4"P!/$i3 , 7h l;5 ;0-T E Z!`-^ T xf) q-e , -,+o,T#  BHFp/?2)WTsO  1Y>#Gic%H - c/8!^ })O,9uz='= L0&tpo/Kע)fHA 3j A!7/^!B 0 D 6f>~,WjC2[j fE4.z  < u5 u0^  >FC`^h"h6_ [ p> ,^S2F%9lH+}HlHDlO)f'w{,Bs.B-J;N= = A. Z0Y)7DM%4f&( Q^x0Z{ .~/]E;;; f$ gk  M) LA큤A큤AAA큤A큤A큤A큤A큤AAAAAAAAAAAAAAAAAAAAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤큤A큤큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAAA큤A큤A큤A큤A큤A큤AAA큤A큤AAA큤A큤A큤A큤A큤AA큤AA큤A큤A큤A큤A큤A큤A큤AA큤AAA큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAA큤A큤A큤AAA큤AA큤A큤A큤A큤A큤A큤AA큤AAA큤Ae\e[eXeXeXe\e]e]eXeXeXeXeXeXeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe[eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe[e[e[eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeXeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeXeWeXeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\e^eWeeWeVe^eVeeeXeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe\eWeWeWeWeWeWeWeWeWeWeWeWeWeWeXeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWeWe]e]eWeWeW80b9d09644c74c6264195573f69430d9e7a079f076b06b6c70cc3e67678a0a605e619bfa4170f2899e34d478bdf0a8a3588ddb1c13b4d27abed60d114f417e83e2ea1c3db45882dd49136c9cbae36fcafa5cf467aaeb50b7fb77611b173b0cb5380c76625bf674c416a7f6e326107a3e869c5e5bd7cd778f50990df4c0838bd630c82058ec9f22b6bf1dd6409e52b28c2a8d909d56d0c6cc324a2ae86086a1b762e5d5a092559b9ad052c5f7339a65d244fd72fa078f1eb4dce3fb90de2c8e99cd443ef27b5eb01a9fc76377ca69fb6474f7d1a9f299d114c8f7ef0ee02bed5d17ceffcff603feea2c5ad564c8ddde9f29d386f064c3cdf87f23fff5f9b9b73658d7228c1208812173205cfc68c17bc225f4da9ffe777b29657e21a599012a343308723582c7f9541c6ef24bcad9d1b459c5074168df4d83be55e828071d461f231b8544c37177276f77639c6177f2ea7bf586c4c5ae525e567ef3b71da32dd56ee5b4bb56d71235b0768817636efb803d0a564f15515f99b89327265997454477337ff167800655bd391b26a80085b245f30a4bc19ab5b348ffc62f3afcf5cd52be6f1e9c73427046bd684e9d83444c09a7aba114c64d42f4c694fdb0cc9c01649fca0901dee7d6d5dbe202608d443c62cd7f3bf79e5af04b76185240599f36c1edbfbe611d18c299a168e3b6d5271306967584360ec83c5995061d018b110252be6f1e9c73427046bd684e9d83444c09a7aba114c64d42f4c694fdb0cc9c012e965c88e8c58f034fe7aacb1c72111ddcff9d0adfb021cc642d6ba139b7aee7ab84ebe03abe7bf35183a16c8fe8b58a1f8606cad6e24b27b0636dd15a1f12eec8b8338ddb249617eec80d3d6691bfa9060a68d137ec5ca9c311e6d3e1a3fb97efeca91bee94c0feb155e00e9ba77cc267b181a383f3de6775ea829bb527a55ffcbd10f7f4dfa0cf2a1ec08413956358b9a980dcd199e60e0a8375c2ed3cb1cbca4731135fb4225bf62a0158342919ef1e09f70f0be4c14114f36d390a86ad2bb4ff5bb17e5d57807286be6c057753f89aa759827429b47fc350e9cb98f420758b01e330c9ed412fb8a9f9c18d3c1cb85c65b6688529fb40578b3e93469feb86f135165f73ab596e9856924f8d4ce95d5148395180ab257e0e8a2236c8fe6a30c4b42a1a3a43a09c3cc21ecb8674a6911fd7e3500015a3b16f21595ee11bb5f61e5fb1af9219c056738c0d5e96a40da8a05512354ddc6dccabfd0fe5e39fc27d18856f98c5da221ffbcf365472f5887514d4c81cbf5c548f91e1edf2196db1897c74be1a8ce97042b25b15b6bf5d7425a14c4baf2221cd286059450ee35080e4e9be9f4872c0e504aa3039d21c83bbfd626705821dab72b906df158a944e0f0852ef5a4e348a5a2dfc890fdef59af00a7cd0688d565850e127a91f9aed23c400be3dd5a823a4ce900a820c5514b13f0253087cf9b558dd7b0d7e2b6d98d7031ed53e0325cd9b267e84214fc2b789b4a222a55d6917bea71713c0862f62bd7a7f6c194d6db0c64d45535d10c95142b9b0cda7b7dcc7f1ddee302b3d536f3dbe46a3b7cf26dc811202525c09148f3be3df907e14e638b8acdf2c6a92bd38adc7c762d63eac77fa5ff95893cf36d1d6b6b95653f82f81f4a1a9197bc1835a19d0572998e3f3cc4277fb47f96e7d1d1d44bc78980148b865dd5dccec71f0fefb8de2b7ed6bf88d559f2c45aea89cfff431224d4751cdda839dcbd9bf25bf4c43653c326aa3fbac3bd60fefc744d32cb914e296e6bf6f2acff1720467146f51d7f591712955bc81f802cd8d9432282e094f11b4ab04c595553a701315430c11faa67f42bf6464ebbde4e83b8e83da4225e83dbe787a92aac4d537f57bb4bb84151992e56f2581178fb88396bb566ea85d7cf7d7b60a65c673de7e8a9c13a45d5c114e5d314a66d779cf1b14bd6a1c070ed502cc13c47fa71479341fc809d89424c43e4abc5b85bf24075ed3ea73fd7bf76071763bdb375af717cbe6e273bdae8b131637419be567411df71f421714b0b01cff6658ce5d09b405f534e1ee0e0be479c17b14aa6f76f913e7cc4ac819025130f5770ba448286cf391099a5c68482500cec7f3372f75ae07baff50b5c05a3c7de7db9d290e072c1f25fa1b1cd450c636f94d609f98203193cb36b604d2627c90bfd3110cf7f5a64f118f5e8a3bf5ea7b57310a3b884ccf355a05a4aa83df4b15c2056974da08792085da7b17be8c4b67e664610c2efd020d8d533ad8f8f4e17ce26c9e8ce9fe2c209700a18829a94a9155cd9abc6c2527280cbd983b41130e366613e1014207a1329e7434089c90fcf3736997a9e7887cfb86585799666770f1da6a9e407e1c331eadb82982ca52cd6c45fd29bcd231b24844d7fc2973764a27e4d1d58d059197763796240a657d5ccd77e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a5b09943ea44e99c630ea65f59652150579f5eda5e908538a92fd80cc2cf439dedd335d2baa94150d6d32fa22549eaf2b69b74ee56c7649ba392f035ad085e5d72938730d4add360296d342d400c014cc79666aa74bbfb31f9edf11fe8d3c91eea781bbe75a715291b7f927674af3aa6adb1a44b6bc3359329f278694bd22259882115c95dfc2af1eeb6714f8ec6d5cbcabf667caff8729f42420da63f714e9f09ecb12c655588010a2ac2ce2da89ff2f177becd5adbcbecad154bbfb78c1203bee17135bba53fd43b85fa4ee8b6f903eff499b1093a2c18c9e7e3cd732a55fb7c2044765616726237b029e9524da9cf6d8662d5f3a93929e8d78ea5d23ae0f64a50e58ba018efb7fa9f2f87ee8cbdf0e9108ecaf0f83fecba912e12b215624175cfdd35ecb6f641fa28b535993d836a4abbb59de405fcc41b0cce983cf0d45fe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a0ac39d42ef61e1e39c13c18bc31c93fd91b89cc62321311e18e46bdda4a7474e1a8354b2543d879b73d82a2346fcd3ad47f7bb7fcd47afa1a2365e18bd7a384cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14d9f1e317e49f80fbe3c8d67588787fc23a96751fd8a393831f0642d232c13e176eef5ddd389fa0a72264572a441bb2815dc64ae4e19d50ff9b620ae1ccfde95bf9e236caa57c5653aa2e9b98da90f2b1c481efd7473e10c8b5d3e32c30e297dae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8553b49dcee4105eb37bac10faf1be260408fe85d252b8e9df2e0979fc1e094437b5772639d357e9f220737aaf08f4dcdd4cd757de8231afbfec1e887310c07d69911d80624a8bb3b5cafaf8c8596fa8f344a95e8cd6a1f242bf06b7c1a655329538c17094a62e841ad8f8c974d70ea70694981c45344f6b64dc0c17b39bddd3fd2bf9aca02563122f7c911ad2e1b3002eb2098492dcab974f912a8be9fdaaf362fbfbccacfe9a04985e67d70fd9919a2d8153407a67ed5119998e5c2aec3cacdcd18ca05c9d045fe476969128fa0ce5c97932f8aab9544b57266d7e9e7ed7a8e0daf424bd2f7ceec73e5c8a64476be9e56583b1e8220d8e406989ed279413201e26e805c4b0efc87e969db461b697489b2a900236b8dfe60ff4ed0b27697aae705573db49e9057e7e4941ff7a0b90bb1ad240312c2c58e1a34a9c1cb74c858de108a81de1eb5b009635a5d7d629c798755b96f73885a3bb017b230a9dc67d6bf1de384a30e3798924c504e9982d817ad393c4414c810e36a7675f4b05e63c5712a8eeb0a4d96ddd1d75931a89b664c4c51528db0eb1a62d3aafc897c226b71e01159e91ec4caa5deee67def0f116c43f8bc1d6d23db802d8d64e3acf04b5ab1f0ca8d110a83430ff33b911a1faac542c111ed0c27d9dbb4a36da9ac1f93475d471d4c8d724e53aa78572c05aada43661b6fb53fef2259879d928c2871f0e12673018d3c4be27e649a53708cc656e17813998de676efb1d384e3d44dfd51929a4a4282265ef532882b0e287f04706eeb1579a7b0abfe3820020bbeb2129383a2f6f8b7e063d10197b15cc4fa6f0b9fe52132bdd992f9b442cbd28c8f03793baa639b4790cc17c5f6646df0352a62dcaa604c49acfb44b22fbc8b6b25c3e85d3c83f9079d4f2ff761b031891faf43156a45aff149527ff9093f1f0b52c8103287fbde3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c1546590498080d53aec02100ea2ef23a52434b9330eaa4b03ecf8322def9778fbccf147a4cef6452472201516c20abbc3aaf82ecf4de604759e53b40e79fa0c026e59e8b99faf65da1ff9e921f249f0c757b56b1b2e33142d926e953023df41b9d43158829aab8403099897377d6780a39a18675a300e5f97424c68cf85e9f866678bb938faea2737e7eb851fed66d042978b0e0e6c30dbfd6b84ea1e6f3c5809202e6b70f51ab012be1940278feb999d0afb16ec5f0964ba74eef2c4e195614f92a015a13c4d1a040bef018aa13430b4f1bc73b41b16bb846c346766de7439f3fc7926b65c8696d1d60df58b4dcf0970ab3187ab9bd8052f1b00cfb927fa448a7e1b6f37e2c4203219edd1841c214156671a4aeeb3335e75c6e6c311b22607bf00f5bfb4bc06626f485e72d28e9d6cf823032cedd3b3d9a723b7a6f35556049187188877d157e690b4842fdaa7bfef52f7405b372e2277bfaf627ed7803781820810adcadfe45468ca181d13a8202789f61501c4cd64b8092f9c9bd6d872a2b769da45186e4ca214201d06311f643a9da56b6695a9e4f6b459550286e776687b3649310d1e538a0fbe44e6662ea0e6fb02b4815185bf2f37863d4b8b90c16f50361ac29c4af1ffeb21e1015d9b70af4b65c62dce1f566dd9c6b4cc0c6335d9034b10af10c15474b243ef2bbb72f5d613177f7abd815b81f71fd88076f847d37f94dd4992add8e0327eee825b8f9d69f008c67d6a624f5b67b3475da6c28c010bf7e219704216ac53dcd1ee23f19a010f29566393a3787514d780fb915db98fdd573ca6d736183ef30f12b617e91a9aa9ab13d7f7e5ad8a543191d69d5a7145dfb81203c326011eb9ce5ab3b12101fb439b664fc8d9317bcf5929f739a4b248ba458813b684112f0a87451a50ff6dbaba54915d99cd710df02c1f44e6f394c03ddb42bb6b34e956b7855f5c5f9039fabbf27b9d12545fff36bbf11b4beecf3d3832fed16de4bfb326a8bded9b718982eb95c4dd5034ed46b41729584de893dfc29dfce9f54835c3a06c03b3c5d5ec0eda77706568f9c4df7cfbc7566a51006d3d5392088261606c559b603f385329c9f1ab45b5d667eb990687453b055d405ee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855ddcf9bf422b471d19f86db94873335023b6a3ed476545bdf70a0ba1b68346bedea5c431ceca325f0a3767f6f7ce2dc5295ed365d2f2c8963ae29d2162d6d4617763c3b643eb39b9ffc160b00afd5f2624e3312b204a0f46cf12cc17b99d87166cf0f5b77f6a5e733b3026f2727422a7b29a2c1e1fa8bc93500ddc207bb7ad7c0a1bd100e8a7f9f047088bb353fab06b1fe992138a4d3409685ed692fc251880df2e8a9960bd0ab9c85bedbd6c5bcaacabec7318442c7a8cd1373a253ebbc0049967b563d9f3a7f0a3f68d29b7c2b9e5f9476c5dc2b61837b668e42d3ea6993ed47fce1b03286e6beba2c4d4e565cdd70fc8a4562a0734edee8d556c5092b4624448653432671856c2cc882111501848cbceadfc2e5cb3cf3758525f63c73574325bd5bf5a4c69edc83d353515236a029cca3aee41e038bf1ac16815c03f9cd4547082ab2bc0184123ec9f10fdf80c70723ee68f07d44382e17615c2a6ba70b0945c1ef0f39df8f05e44db30c59adf550e5370b6e9198854f92298cd8b9e9ad424d1fb9c47ad503f5e56a914644dda12d500df0dd0714396ba41c63ca3b2bddc6e78c4e16ae10726bdb0ab1057ab6804fbc32c5ddc13191f7e706ce8aed55ee165dcf1bdec46774ba29d022c21dfc3d1c8e00378a12d86732a1f117c8bd2b27a6f3414bc0185eccd4ef5206be49baff88b0f643df3252c8aebfc88c57a7fe24a765bc0e71edc8934df832b5f28be02c5346f817f367ed71e0ddefefd17350c4b2c66e3215d69dddf23eaba658fb3372216a9ccf13e6117229221a36da9200d2d12008eaf44ef8b3f5b4885571f278563f01774e65e6262aa2190bea39fdfb25b1a89fa75a5fd3ed2e060de29e945f7f918d8217700ee4a14736b0d116e312f8f9408bddcc8577e00b4243617142dd62ec5cf6791927b610b3b7cc832e95e6f2be206e4c120a7dd7f7799a67fe09eda3fac21d216c3f3ec0a499577ba6d29802121fbcc60794d9bbd63cb192243eff01b462e4720cc74c37c71fba06795ad22ca874a6f14ee7a41a6f736615e574f8687030b72003e327d2951e9323ac291feb0c38819053a0e1276a646a637fbc01ef1a08dd8ed01f463c4cb4e1de0ef4e4af72a1ec85fea7f04ca5c91c4a50c0753ed01c82ea737092001ad55356dc1592cf42ba79930967d689819902314532ac1de06121bc10b3f74d03d9f260f19eea8fdfa1c94bb7f1bcf515d70aa94d2c25759fecad3b72247852e3e986a362e1737dd4489a8e1108509ed98a37bb983e11e0f7e1d31f0bd8f99a79c8448e7ff37d07eaf537b3e1422523b27afec41c5052b574a9e24ff6fff1879fa46232609dd2af6419328457e6d6819b928e496130739844753d9340cc7b04dfe6654465f91bba7b0830edc1a576d43da762dca99cc433c6fbe9669713bc8b3c399e8a0dad60e2ddbdf302b0e81b01744d2d45e4caeca89c6f2e1162985383c3a8db8c68310b018ce3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a72d1c2da9cf1e36f167d2e9ed513171963788fad34339d7073e86a4c8114a5ed5c38d2c20f36f20e867f75e7a4f048bf8aa38b238a0db1e44f2c5df3be61280c6b9727aac244501f1b125d9128211fcf9624014ab322132f13a6ec91a5ede666c48d7dbc51859db7eeef12136381b6cc22159963740be1cc21092c422910ac43e92f1e4c0ab7b782e4402e69bda6d9cdffca868472fa3927d610d88184c6578bc7585061e0569e5d464ce0f7eac35663cf891a3d3fed7773e61be13163792fd379fa09bb9b420c0ccc6df675a27605d20555f29e20c9d1d275fc9f7f8a9f5401b92e0079fde4ffa4e3a4a8b999a861889625688678c19595f3a3fec2f6aa6a4da6ab3e7b3a377b06947b9c92eb6cccf7e60e35e295bf75d9c811fdf13d344ae365b61cbc7c748816ca14b5e19573229aa3df0ea99919928ef1f40c552e1c6f3765b5e48870507893de55147a04c1b074601b0ac2612763624d79aa57f3b870b92286928f19cb9dae3a3a850a6787deb930b5defc33dc133cc9dbe47aa38723173c3537237520dd957482a78d27a0cb0b2be671f2c3c05a5f1d59f6ccbb2cdd0ec42ad0b59211933a7ef4d8f5f9c9abae6aa0f5099bcb9192510c68aa32f43eeb58cf8730a241fd318bb4900c1a7eb971f94d0827222fc4af2b15b45d7bf2008fc5a263cd8468473b887220568e78da5c6c689744b0fd74b7478429cf62889ed085f4a5dfdfae99da197cedad3d33a3408970e9649e220847e175d25b5143575e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855bb3c71ab5d4b1db84072c34f9f10ea39190f8f2e872261ae949276cc505d44bd5a0f3eb3cc9e668f9695173ff938c10a3595d9ddaf6ddaf0e93da85330fb829bcb15c8c04f022e52cc9e676f046643ce5e224367651581e78ad25d5924b3b042ab837b032c5aae84503fc0c733a116a26fd272e90dc4402fa68d3c9e51aed3b0328c17581c5524b9a4001a26ff3a01b8b28cec8b0e254e655ae30de0f52c3d56174d76b7c7645faf65fed700bf67998ff201afbb327c00ee635a5837dd871c6b57422877ced1a5b68987385425aad899e604d729f2e4ed98e3138e225ef5ec83238a2b361de796817c814c67492627d88571a94956c4a83fece8bdfa6cbe18b6be61bccbe3fb6efbb75bb32ce382a1a4b466fb3619a36a11eb207df303756a3b71e197725956c97ba3dd9325c76e74a9cc8ab561101426731efd94d33c466c69432c3d4b02dc1e1bf3fddce2fab00ab175580321052cdce8321bc242f4ba7a8e7b2968e5c90f955940cfd8ff50601f2464e99cdb276f381c5c3e9d643fe590921d038dc8ca755cf2b51f63317edd9b27eec213f23813702b39cb0bf35cd3e44e1be6b1c7e23be41041fe3fe44f2a1e4a6cad42566fb9b38b49ce816807f09f8099afbed31da98fff087f81ff521d71443d599e31fa801c9d2d5fcc9a92fd92ba70914fbfd4ff130236aeef01969679e4eeff08dfa4796be8b872c8cab500b8e27935a1eb280fb2bc136955365da6ca7af6eedbc3ad5f8c262799233ae6749cef2c35c0a6f9c4a8331969963459bbdcf6cc844c434144a4084a7f03dffd7cc4482464429fd69c57cd260e211ebf3a11995d1dc1457103d2c470b947b6a2bc750084e0fe255d455849698824f9be83e313a43c5275f3b25a28e48718e761394925e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8551a4aa5d6e66071789a598306757f9705684d04ef4857cf7a48408d5f286b3180235f245236b45a8e32ce2b13aa803f5e835e319a0c5de336def6da713b66d9f2b3e2da26eee0b08c9841c67863eb16ff2df060144b29a0b55d36f3e32d1707c3658b244244c18c2b87172dab8721f8a723ad508e426b39861cd075c2523f24fa194ae0db41f5c8c15f432ca09ae0c89abd4029b193dc739315bc473f3162c3bc4bbf3146ffd4fcb4faeec0895b235594e79840cf641ef020584ba191db80f7c63e0202d423a2d4ca5fd5739f5d68eeba901107f3c6e6735a780516b945f72512a1b8b306d1f36a1a2824ffabc41509c77e56a1a1ecb0945931d6b17d58fbb1a6e2724393880e71c6874b3ea645c11d868ec5e256255200d6aecf8a347a13e63d7e19b983aceb20cb7f2037052284e19f6988043597cd6ae3e7d4e3339685fbd0a4a2756581ad120694ef50a7641e147c54b673a0d457061fe5b7e7b836d006123d2594c948cdfb7c5eba0e73f0d8f0e67b19c946b6774790500c5165755de4d88bb850c565aa389fdc16f3a46965ad23d82adff60f2393fc2762b63185e8e6c94ce39f422ee71467ccac8bed76beb05f8c321c7f0ceda9279ae2dfa3670106b373348364a59d4dad8d62f218e419dc4bdf9d6ee823bfa6676010e95338f7543b5afa8ead11ed11b8341a984605419c6ff06e1dc0c2d0253822985e102d4f3c15bda51dbc4e2e02ee8c6530d4a4ab81fb2c88c5dd60b29e00862365943774076c9d70c5a837efa62df7ee37df1c70ddffc0bb38e38df29ddfdcfa01462407cdfbcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d309001ad99a662075a0e5a6a9a539fc75040d8063c3f7251d6839ca40b5234054ee4cde689db78d578185bc2449a440ac6045a287b2cf965af7f62c75ef6e5e17954396abd9f54124aa54f2d53005e2cade636a999cc446ed876fd6980d8234f390693b8e0cc2e9cd12ef9d5aa7e08ef6e88e71236620d9ac245c5a9b07d33a8ae710507e3c03b19cb717cba5a6bbced70328fd152f700dd1d6378fcb4b39f26392a04e9259401f2c5cd2a3aa15ef6ae2b44e18681eba2c80c749ea530988452cb1ab24f6965faf85b687a9177cf61bc4708a4681fbfb251d54f9e32150b4e2d4d4dcb78bee65420a7c355fc9f4f97df3164a156d6e7077eceb07b79c984fbfa4f2bab3985ec91d7578a9e76e0d0592ad358771b4eda2219acad625735f972611ac80011c692a8df68ae549776339e8058159c70d6e9baae265d7ccd69a628f8d19d70c5a837efa62df7ee37df1c70ddffc0bb38e38df29ddfdcfa01462407cdfbcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d309001ad99a662075a0e5a6a9a539fc75040d8063c3f7251d6839ca40b5234054ef4247dde07952a5ff866b24e45b5cdd1fce410cdb2e038255a1635867f59c10c3721087fc3c12923face645aa131ac60a72650510f00c920e6451a006a857d229cce34d24e1c99accfbd2afb8e47156b6c8d97c685fb7c52d9dc7700ffc74cab0ab4d74339a40e681fc1e2a32687bc9e4b11ee170ca259143cfb9da6c3895bea88a6108e18cb4ae763e3f28013dc947b67a6e728864b98624313d935a24f140e45389d57129c248f8a594497c0737c073096044e0bfb8affd1d27c76e7e73efec47b2a5b5dc31742c59a58806bb6d6949186d44468584bd3f560249b23e8d3937cfc81465e1015a74cd6645a3ddec5629fc6eaa82514917846f68772b03ef6ad1e566c573000e669a5f3cb09f8da5ac2f037d4326a8630bda661b4e2e3621f8427ba2a61529f7f4fe1191969101a21df33a216221340df85bf7b26e880b60afee7c0df99ca86513b14a9086e61fdfd7c73ee5eed1ffd5ce094978a82475e7a5a7cfc81465e1015a74cd6645a3ddec5629fc6eaa82514917846f68772b03ef6ad9d752ca59e68fba0119bb65f92efa7824e33c35110a6e7f82ef8c5bca9ed8eaf0ffe12290b243e57e4202bee9381b793c095cddd4705048097ae6d39cbdf0642bb46f3d785e48cb87d3df5d15cf24e207173d8a8434f0fe6872594796d9974ef9e22191c26c6161d424453d87b5d6181957e8c6c0842899591c3c137dc8da57e881fb343e1bcac8633044fcadf7d4cd4cbca243fbd4400d3c8c2c2ce5869124da0e7a0b71a50934ef51349e919e8f117f9267f50a2797be70b84d600919278f4defb4b53fd1ed64b7dc732ad24be2680737edb8bef20512b83b0415f694f1aed2f5fddd5a113c72bad4b100d552ea3c92cb329c61f6795a0bae338b65afb8305b79c0e78d50b6363d7450f62d542d11ed9af73a492bdf4a321b5e61ee01b065d746deb8340ef5e78e041be3f7b3db6f91624a877a64362a7214b960bd58afa74de6ea48fcdaecd2f7ecd3259f9662ccbcb590074e49236da190479319c5024eed8a718e1b7c808fbe81fdc9928fe75d1c470b048d7fbdbea869e80b923884b19cda279f70f196f8f6d00394d490e6e8f27b38b7020b7ab293520fd6a82051dc1a2becbe0e62078220ba14f0116e4b322604979993f7ecb5407ebc71b8faba60bce2935ef99a1d835d834d226cd9987b2dffc5b17d6691ac17299a908ceb30fcd6159c7dc4fab5a16f6e8e9d8210bc7b0ba01c264622ab4b3bb3e4eb3b38413d305fcb4a42cd30bf03922d361822436e88fa93a7e41adfceaf80d8164d7121c69c5376dcf73af140a8b133bfd9ee4dea95d76199a588b9cc5f614eaec5bcc7d4e8b242757d66bbd4f380fe52bf01d5a47155a061be5d9f6ac21d3d49224086fe4d3a860bd542c6b7266c80a5744bb00b7927b1db74faba7ccd9204e2666d72cb35602bc0c725e7e0f96119a79c06a60cb4b6593abe3adce021d859256166320b02dbf4ea156e1348669bc2dc80377ff5664231bd36bf8e1ad4cba957f359bb67394574afdeaef4409444a48b9c633dac93d7f806b07090e63d93c13bec238f499b290ba59eea4f779bf22431cc2e1feb58ec5bc1419c2be5e83228c483d2c1e8ddc7efcbf33530b61502cb98a9d633e4849c45b4ed279996590b7f067e7bbd93d7cfc81465e1015a74cd6645a3ddec5629fc6eaa82514917846f68772b03ef6ada88ea3acad78b138add434d6a0ff69b3a31e18a2a028381e819fcd1c95d68216d74d775f1575b84748f031ca054b254b7604ccc10f22d18b60ae93226d56c5a07db12239ca1be5626888ee432b2db329d173cc4187ec771ed4464795b23f1db860562edf00e31e164698ea602d3bd5d0f986457549e15c51e435d85181cdd887a00b3d27cb9216e8f6daca1a022c3a6103e061a91894923fa6bddc4ca6edd217937541e10c6f5f9fc7110d498f94fbc1aa5a72980e58492ec0389f518218e8bf0d80afc886d8520f994480b7a1a4c4dafd65c65a794d40ee107d1edbfd84b8adf51530241cbe1bdc902b689a585dae935fd8c9938c6214021e1e4e360231b7cbb47a82b2b66982eea02cc64083cc0606e1982797a0f2570d0b2564a5f87a26df35e5aff82591298d2ed6f2a9b6e8aab70c0fcd990ae8ac61e24c4eec7fa1996beac4f491345d2a657bfc4f8b74a9f9a932ac0079f1e416b16d08d596ce6fd9d6f79e27e482e02fed7960a339f9e39fdedb787642c11ce9b7ff0a7ae847bf6eb6b5f82f41776bab3ee3b3addd279ef01f074562cfd5d431718626036135c651890dd6aa04bf8014ef19bfa152639c12ea0b2f8a19433353e22d4281e93c6c8a233bc64bddf952e20fca89db88d7a6649a9c64e4cb79cfa2278dbc5c434afa1bf51cc5bcb29d5715e8024e7a41190963a54caa38ff138f5bca85709dffbf3a3382145d063c7051788add263f335b4fea8873d21508ce469d5f8c469bd8d7e38ff31e3142592fd0af4179c49ad256d4be5d15dfe1882b1960da558d9fa5c7091aa31f7c02030b46773b83303e7cc449709111ec42cbe3b013b0d19b3e952db310c67d0469e7661dbd4b717e0db62ac62019ca517fe9f84a8e94bf684bed89eb5076a9c543a84a3eef0b99e47e1d52744e3ec0208fad0a06c10a5c5fb79b6cf74fdf9e66f27a50c99de5ac6568fa789ab29bd3144c27ac6265a5ae69cf390c86b3034866cf7bc0c6d5d01839cff57e730d4d4b76a3ddde32e46989ca5ebc5cba0fdacf0fc95a028b161b7444230f4d8bb31e2141b4bc2ebdc06e67593e55ecf7e36771671c1cef28afd3f81a6604f214666bd5dbec04b712a8a7830bc1a1e7c34b00bc090fdb316029b7766fbab9d7a6e0df9c91a3306c07e6715db4240f5b5f2e18ebc6240688e8b5d07deb8d5ab2776b1c27d9d2e98788623071df23f4708a94d25f0e3d7c08f7579d22366fb7adc6bbfa4264c05c5df491e038fd607c958b09b91b7c85c3a3be43dbe89e011d5826c8081956d703170c010c3543fd96b66f2c102f9d2ac6ce150271ff9b6faba821d586f3baca6d8dcd41d76accc504cd22f5485a12212b2538a588d0e8b4b1662501e076549701a719e44b63a328608b2e358d5964c1d9c0acf4c37d5d05a762eab8a73441a3a3d755fcc8e49b5286d41b1690785eef24220470f32e923148bf3109f01f56a80269b90d7ae798ab63d06fe56955b59d40c945928e8de32bf6febcecd51e9cebac7ae6a32370d39590fe4b118cef682957e1c3e780e5dc52b9b813f3e69d5123381e89674ff93a1ea970d0ec5ece5f12b1f11365217ea5871affac3b274db8d8549e7d415b955e1bbcef7038f814ebd6d7444a36698e91f7d81452a7186dfc7a04f03bf2cdac9256cca1bd25905587070cf076fdaac10cb68d0d18dfa97ba6a81b4563e64b2d1074c3b8ea218b741fcff50f8361d72dc9aac66f2a832ba5147f478453e8e285c44cc28c732e57862889181c930b4f8f37c583a2365b779fe55bfe0296827068dc4e5e6294a8e5673d2a9651efc399ab52a5c4c2c394101eee1487561ab429d65480ee287cf64c4c462e637cf89ddfa5ca8d35429cb9715f7df844745b708eb66237fc33d769ab6a57be2db319bfeb9424125174177c8c5d161355754234948d61d1fc03afaec8a7d052db77317fab13f695e30b214b3a7a99054cf659e921f5cc2ff64d82159b8045c2779c6416451aea0915f395e702866578a70d699509a056eb4aebaa4206dcd7fede511d97d22c8c161eaa54cd5c626fe55a23e27357e2fa0713b950503eb6d1ee0358f0cb40a2c3611f9ff145820cb045fcf42c69da8031412a242791af8bd237f8b37d6e39945af60d8d047b163040b2a46322dae92455f445fe74579ed5f0fc393bf4dcb0e57a10dee58bfbc467c9e0a210a2dcb11606218888c08d6bc5d024f9c436fb2748ade4daf68d0421dbeb318049bd823fd419e6b11991d58523e481d7f4a28485590fdf038abf551dea40a7a81097d87d7e35b884fd5359bd59fa0f5b1421c97d8854ea67a845a57e7fb11f60148617b2beee6c90700e6494a055d4bb2174d79d1bb85aec5d23bd141a01a1b46f1cd085fd81d45e1fae60f697029c7e766bd0d540d52d805f24f54061b109f9f389a9d2b32f99db76c9f876dfd268389d9f6dde89784e7fc64d725438eab8ffac9f03433138ed02c1ce66ccdda71b3d310d430ba8b5a5d2312932a29ad3906ad74285a7f0fe4bf9bb193478f47c1fbc6a90d8133eaa55b6a4ee451718b07e21aa4f15883455eec478ece5110157c68748a8a196d84099dd86460e962684c17b547eeed35c5c4900ea52bc1738948909710631a56f73cb8ddc7a6bf5af393d5571d1decfa336b4ab8d3458381ed469e980fef135f7243c548d90bc4f3c2d122d6727fae512d7cb9b30f22e0b040ee978e14177bfe3b1ed81d18566c52530a7ed53a32602efc39c4453f61edaf903bb708624093c9268c42b1a965daadc7b23ce6f48f032bb0307b9627c32c516cf7adc8d0bed31d9a38ab67c3d1f6b4eed047e5c3433784dd17fede09a71307d68ff831e6f96fb490d1a9c919112775df4d3359121ff6ad78e966743f7eea7cb097cd42916c1aaeee1186df29c5be478a6ef87b2649313eff64b0402f8c2732ad0c7228682b592ab872a2591403bcd5478b02f5445b3aea9ff7650195c3f58d6790b641c72ccca70f08d5ee4424d3ccf1f1ef3bff9536f24693e1daeafaf5358cb9f24ab4871ca30174fb83eee151135bc4f530b7f935a951f90422f9fcd2bd52a990fca6e7033421f2f1876295157c4c0a65341eafc740aa255a545fc8c4c3bc026f25b0667e01762c89724ebf726e2f316c2fe8178e40becc7101d2533a834b651978df7fef3d1d394556002af0456dbdf367f1f9463946719e22129a6f4d9bd53903023a9539d779a9d2f2d9559a8a19c3b4d4fe3cae318540e874733b2caf29fc307bdbab7fa1723b9c5f97fc0c83dec62599ba0cb394c4fc984efb3a087a70959a5b06783427417e964334da31a3c1877c6944164cba07a04ab00976cf0903edfb1bc09af9db2e51ab06dfa494ec69cdbda843c291d594bef6b4566c32e8d80e439d2954a471991d0d1727a76544bfcf14ff83820b68b441d9fcb819b48b8f9db36d557388cc5484d524e994833388c36a2cb0965517611dda6741d5f569176fa109bf13d775289e9b49f30bc94ba0904c2c9ef0b4e28f8fd9b7a7cd2380427281c46c2dc41f9bcb87a4bc9497d909d796ab6b3535f97d82dfa3bfa0591f0b53893db9c1f745f1180f09dffc838e58cc7a4e91e2dec3ca6c6b960877e61eee3f18725724b9a15f0cc8d82929cd49d0905955b8c92eb06f1dd8abf9677c045cd6dc1201a7b3eb00971b46cacf71de73de2e4c3b2cbf3aea159d947fda8ff90fcb2a3cd506bd3c034b9670fc581b7bed90a46054942890d5f2141703eedfbf364226c1b313a70e20fb1e1ea036e7b4a12d16f056dbd41787455fcd8e46b18a85cfb0df9be79329af2962616c7731bf08856e53e73cd04c9541a167a01dac26e4fbd09c4d3537a1eb8d7204fe35c50064981aa51fe46fb25223cb20f9d195ee28af8d1676b62c895662fbb3e910368f24fdda045fb7f1d65baafe2bf4552ef2a6e734b2fb65d44527090fd616f616a34a7d18d1b14e90715b97c849d0ea879a2ff21aca78667455370d8eff4a974dc7d849761b669bbae0ef8e90b7ff031637b784503a7cffb7938be58c97d1f07c05a93b5f073a76fafba17bc5e1e92282d894d084b8f0acb59dc7d95b26f260de4f3db82ea5db6abf98898bce612692a92ab4d613e7247d5d21cd26f118a2e3f84f518464cf0893a9784939ef58fe28df54bab8bd77d166de15c2e87e9ed795bc84040a52470a20f214d88e2a613abbac4abbd79a07fb3559c57dfd6cb77c87bea824ac03aeb74a8a20e9e3379348338bc3bfad9503c4d5b806db74bd000160dca062672522cfd46e90633c3a82b96b82cc4334ea1c64d3b40c5daed920716435fcbaeb475508a911cf427df4804b4847b986b81b7e74badf277e4d25c60863c52f8f7d0d1ba201f29785ed438480df66941081e338a85b0f10edec9d48bbb3fc79021032569b721bc3ec15e42306ea3bfba7f54f3b11656ddffafc4fbb1c5a9fd798e245dbe6e6568b3d0f2f48733c5f5f34591315958bd61a14fe1149e01f8a27d6aa47d4dd441fec7f2c2640aea6c118fb146a8063633135c7c53643e3e361ee39040a3d51dffa81abc05bd8316ac64673a37caf782c080c89d2c4652bab5cc6939c9e50e9d13001121eb5c04b1048a47bc2e4b3c67d8a5fdacd276911e5ebe827099cff9ba99d283df82fdb9128ecea894d747b103f8c6d297cac1370dfe4bb9bd912aff6b158ca608b3b8d68492ae503ac2303a66faf87da3e9dd8d8f541139f6ceaadf9538a7b4b0eec4154f701b53875b373277c8bb282e2807d122385adef289c0b58d249106b7a3b3dc675d16105b5662c133381c59acd3d22e90c64bf477b584bc22a5d418da01aaf4eaed550b91967cfdf56367f9d432e37911b29c57eaecd968d25da345bcdb0da524858235fa26bed714c5dde7210a61b210a093113c6d48eef75992a34dbc8e49992274670caa8c17ca5d44f2349062461f77dc194d0241aa781b0bdbfb630062b38df76243530e7d6afc6e5f1d48ac4b408c700f4b9f70997aeb558fcaf7ade1955cd79e2d6cfcf7f329612f22ce99bed5fcee5080d1a058f7032637d50bea0c1b615d25fc3ff406de17ddebf368d4c1fcdf175452edb4e1825b039e11c1492caa9529a5bcb5483095842d74e8f5f295ac51989ebf1ac70fc71b954d3dc321bc6f7200666c758c3efb76962d942232a0d1e770f4c7c7b6c5db508f4a52b4f32627ef857433d8ad9b17c060525f7c952e9759606834e96cc74dc7921487197d1e779e81e8de25e83b23fddf249349dc83677113e95e9ffc51eb27ac24f161c0f65bf82ce50658690282d542e38e885bc2697705f00d66ef761798af43621a1773c664e37a64158861b6e6d75d44e8ebba463d9b2c4019cbf1b7d124dff2ed5c2693a8a7bbfb0de54e378682ec074ec249387a3477dcee82ac3f74286b7e0b107782767f159ccb141e029cb8173504611bc19abf879ba02c5046c8ddd7c1d8086868eae23ebcc2932d9de68b2a842ea51ab3e12fa5f08764c36095a573a1950eb67b5a28436534001eead178fd57411e679407f96bbb7dacd2a6fce6f6a572a62b31e757b9dbf6394688a3c354d6ab771dc4d99cf915497d0c4363c62182f64eca5f4cba0f64ed5df44ccbf3c152c42bba856b394e51206ab9bf800825f66e6c5185264108647ddf32ffb02f52f46198f5dbb65650a217ae678fb94b83009fd525c5f7a6c894d6eb4345ff522a1a29f223cadd2b87133585d66ef787f595b78f5e30865398d9f6dcd979850e5898492e30d7bb818a343c5b009ce9cb58f9a103a51ffae5ba8c6bd0be07b03e2f729138130acca290799e4d34a03fdc8d43a618a695e5a8451a56953d7c97dec306c9a63ae4718a8945c87349649e22cdc1a57095292ce58f344b3711412331c39a31fd16aef4a2ca6ead851c4dc7b1baecfe1eec74642c98e27359f779b333539bd97027e52f65cc70ab24d17b9a3077be90ed49b930b3294dfda789326f306411a7ea5e6b0097d754500ce769796ad934075bb9e28172bf82f7b3d1b54f8678f459cd875dbb91fc73a095940d93f63b594587d968acfea92e4da4493cf1a4eff05d5fe62ecaa6abf16c38de8bcf8347ee7c0dea895a04c5cb415906122383b90111b671ae4b2805261f88af90a7647f898efa6312f6933c50c3b4740b5f605c51935fb7a2928bec0f9dabb7687154e22932e84fac95bbda3799c7a21e916fd5bfa3c7b8fb46b1a96754685ebc17d6b801e8f30e1a38f707a8a3039681f1fab31ff4779ba27e0c8dc6b8bd688ea5e172c6c786c4a4584a1ad3eee4a1b57f2864a1fa44f909e123967a527e7bdb4a99c5b42735f6b4cbd3fb24b90161b3f6aeb77f4476bc1667c83cdb35f0928f04df03812b4e10e40927650b4478dd7b9c09213641e15fb4bcd54532c6db65152c12c1c7a4538df535e66dfd12250860ca9ac0bdcc82a3c8a0355fcff908fbc1a25625ab0cf6f2ed288f5d7a3350691acd156ee223db9b99acdd5facc3cb889517f899f1bf0ba2093c270183304edc3df7148d7f6556a93cefbe1ae5b48020bbcaf02c7e6933803b6064d6fb74c9bfc55ab3091df3fe8701efe496ed997cf053bf24faee99a3b27ade3c817d47598db68bcfdf3290747ae9dc898f6ec1a029bee0daff20dae3dafd97f6e6d03af6c977ac05e42527d244d919af1bba2f22791e8a2d49ea3932d5f0fae7a43c6f4c0593868c6f0877841a9912fbe0c0ee90d2f443e1c3e30c583bdac1499d548cfd69ab9b62b49a89085e614fd4ceba16b0c761ec5bf7bcd5d1f83a27a254d523a1657b5f35fa8825d651441bbc6b6fd8badb6ea94dc5552cc9fd997216b5be72c92ada3b0aacbb92eeb4b387070a2f70c651518fcce846373ac3bd83dad5f064fce7401e242d0012289c4bd6ddd3a2a57067874b94fa504c4825fe1fd261f99ef82c01250bb68f5e4fcdbe4da53b50187fee3ef7bae7296c3cc6a5f70ad75a683da006cf4654afaa4da5d06061b4fa4928fa83b01ca80cf4fff7c8dc42ab2fe53f815dc124a8c44f636c92cce030506abfe7fc63f47706cb670460ff7c7744d5619acd74c569dffa3b8ab157eb9d64b77b7f4c07e91dd50fce521d915b1d17e090ae70f8ab14b804901fe59b1c2696c72cd19661c9ca22aec5872e9e46e17364b72be37f97b34e642d39063e1eae7cc86cd5a89774e5983edf4a593565e866375fb56b557fc2c0505ff053250bfd0fb185bd3355b63b211c41276aff64980b5ed48db4d7a15515d6702665569ae29f06516691ce565c2d604540ed782471670996835bba49f23d23761a03558add4f3044d6213821d72ba471685ce3836856cab9c89aadfa68a3e8137ebd8ca9ecab2299daa1eaa5c66cd2e628b19b83a78d2786b6f4df28c3e95446de094a967be01f0ec3921d3e6dacd775657141eaa0eadff20bebb7c80ab72ad54ab5bc956553ec0aa17164c62538b6f351296198b45e0a3a89b6453c70eaa4a48898a6050b47b30b359605275282266889b946504ba949e7f23ac176611478c2bd3f047c9bf5ded7b18b05144609f6354395ebb0323ebda4941024be664be77ff3ffa8028e63987a12f49cfdb803dbb3543813259e54d0e4d8cf84b7410be95c8f8b2ae99926f2a439a398532f1d72c9dc4b96009f2ed784af837038effa469374f9e3b7bb97d9838813d94e8903d8c285b723184d9d92db9f0c7e7ee425c903a945d74981895c6a11a7f5264a01a0783fd9d21df2de8e8f5d6ff40f5405efd2e29f437890f0a01e19659a1a697687b24a41b2238151a9f05c1335cdb5e9422630648daaa04b8acad6a400ee5a1def3dffbabb0326dbf245f77a27d076556ef80a4cbf6652b76ecbdf760e8abc401ea7b84b18b872e8022777487570d0e3695a88ede9c145ce17c6bfa0ffee5abf97fe5cb1cdb7fb4168d4a85eb6a36ee651aaf9e195bdbcd66db23f0c1ca4943fa3e1083c570467eb40a0a1f602aa6561af42c2926e9f11f1f47f4cb604b8967c0537dd1b84425135f4dd08d4c183a4be3834c0913b7e92496522420a17a5c05a9c9c9eddc6169a468f0275d5a0615513b4ca619add0f08f19546d264a8283a1b6f18403ae89be330e6507d2f0f025714738c1c7e5475942591fcea76dd1df175ee17e0bddafda5f1417a826176be1b6f50c2f2d7a1f336aba4d2fe67135b410ec951dcbb9417ecb7c1c313fbc870e6f483fe4d21efcc84b5e1c54c9aa2c752167d4713c09edfc710524fcdd47afabf80e75e953c975e06f88ed2405ac24283166a677143b67a5f98ee8fab9bd0d63407f7fcacbee15a3c3de06a37fa42b7a99b2614a4a9dfb3cf8f7ae203cad8167b6548af62afcfd5e31d90bd3a21db696ce21f31bf369f7510c0e2c63a2d6930e22157e06b4c7014ecd90a79cd9c54e90c32dc069db32c33cce75238fe87eda7565d992674049b1b0a6b796f7208028ba0ae364926d07d36400611110a21bd74d6f0ed94fa2525e9c304b7aa5a2018044009ad2064068ca874c45120337d4518cf1f327dc3fbd75c8749b531a61daabf017b1d1b8746b9626061ae79b2506047b2351392310cef66daa4c5109626500eb7956fdf4558fa6d80163afa5a902ba5a3f9743838b06a89b1ad28328708cb789c762d35b5b5b86b9234452f3e0bbfa9d14b9cc2906cb62ee50522a14fbbc205fbddd5a7fd67e31e9932edb38fb170f5393f60dcd59722840b032081f050900456a6213e573d207cfc81465e1015a74cd6645a3ddec5629fc6eaa82514917846f68772b03ef6ad5952d659c9dd7a46a03efdca2622f817f718ff4c8665d336eeb45d65a94cf3015b1c0afaea5ce4836041a59277eec6f48f95de72ce5a8a3ab11f7403e02ca8e29447722577a6b0f8255a8ab580d52d110e8ada1275a370475daf3f43aceb2ed8aa72b28c2fba5f0e7f867761e8c209cdcc57df678afe6160b6b2a689dd01a851618f23dc522ba7cb6f3b58c674c992a6a56d3f19ab02220ed74b1d09459a834f094ec5a2c31b756c021723c574c06d3edb94d654d81bf861926492d48411e1fd6f54ef0402f73b6dbfc76e2bb18cc331c44aa304bd1286fbfecb4d65f463749402f18ec35df750d3343ba24f3cf9a911cbaa98809d767bd5fbab46da3dec6c72264240b09227e7aca4334ee73e87f7ab4bd8429cda7a9d5d578eed581c83566621185c2cb0ab2fa02c57fa4a8085c67840b6b4cd0aa90ad37a88b67c670c921d4d5120e77cd1c270a370779fe50861698501347dd6ca969f2a65853b0464680f57fa65150985bc2744c41146c19218f0538d83ea6181d47cb8b972c6fbd5b5b132f5cf3aa29a1d5730005a495b12793b509153f2573d8e0d6c66245c67453a55d6152cf82d411e1a9d125a1edcbacd231885c3e25e0cde6c74130b109c74f09cb3bff2ef42df8e6415cf880fef79ed17d53c76e35d0fb3b1a621c2cc7f58248a50ff9d0bd3abbf6e4f809c0cc01ea8f7a51d1ec88f55ea6fd2c5471a1116eab4ed663b7a6f3bb8dbbbd63ecb23c12d701d29a0306c10b798841ab6e659d359c3490326e01506b8b6f8e88fdf51df3d968b474537f664c880ab2957783b3196b03445b871b5705a3a01ad26f089566e69788548d5d191055aa7012f29fd6bb8ff7cb2ab16e7086458092be46767184ae6e6455152125e4710ca432facf256341ed706cfca6d93306253e1419812bd7c275224203a7cc98a930652206f6ff80c512546e0c3bf607727fcbfc6f265e41bf818742d67e2e1039715cdb7689b58c7620212ab3ce8da3eaaa9bef777d924b8a5d2d992a4f9a63a4e6af6482aad3b8f0fe058b2e57963e9b703daf41ca4e3bdbecf1802990364089db37874f3b6d84b6d90d2302748a56daeaffbef8fd950c2be397f51b04bcb9fd06853b234fd898250c6f5b6f62d3ca07be4904d8194d0c1a1e40a926e5e2fa782d74537eb254e1f90dbb2b77e78a33b2518d30964aeaeaf6f7d18d8504605cf335c60492a2e0f62d8caac46ffe666b1d2a2b8d34f6b993e9b3222186f7cfbda23c45d1206706fea07393bed453ce9ab3fb302f7767249aab965625c9263ccf05a4a9837f8c4df34597c79269475985996e5b3b0359763dcefd82b301e9cd9a6a4d788c727be6a78a23156254fb05d181ca7481d77dc152f87ea47cfaf65bb91fd58c85e7f1451b7eb31e765602fc5aa9f68e0578627968548a0d38d3fdc7c8a668d4a447cd72caafb16eb034ab5f29a0d81f6d66fd70b980fe4edd081cfba8e4553ed9a719229e6b800eda767a7b7ef5c6fe20c82428dccbabee5c236153b369175d11455e86d7f864398c6aeb3d705bbbb21d61b10063c40f365ee46a15c405f43ea60b468bc89a4076f4ef9d0b0defbf6d804a2b3e9c6edfa3f027548c5e7f328dcb90a254ede98476137dbe6a5e44410ffec4b09e5727bf962c80915a2511450d63bb481b5d31552ab228c85e77fb223febf63c39e40c161ee28190a5f338c98c4ae48bca413592b8ad5b967f1f97f18549e23f4042cfe1da1e9b3fa9bf7eed20604f9ffe704abfa799e4f4c3899f1ab67c6d77421da753606792d5a354a0f485a09d3fb1da39cd1f03fbb1ce46cf5cb69c91c5ff9c7e8c4ee7c1a0ad98a0e79326afb3ff0d400e851918682b98d995aa53ea42f4345648f58079bbdbea7ad0c5c0c3f7e85c9eeab3359dd1e5d3ebca70e8124d60239c8a1b02ece7960f8b68a890be02805ae30e975864ac85f03841fe5a3943eab417c5b1a56c4e09edcfe80c270ab5b1794cfe7b135da44efdac1a25a1f5b83f29908b8bf3b53fbe4cd203f9e23a1cda6b1f0e9b5260e2f0d0b7233b546f0330f994f2ac7c674d63770726c518e9db884cf00d98d29cf210605176c635ed2666ddac06d19030d83b281442c764b27ff2dadef1dc1929fbf58d7cd0511f4d497e9573ff2e4d2403c5b093419ff562c395e79394f0df27555b1880c7b40db65337aedb819ffe289b9403e072361114e308aeede18061de6bc2b3ba27a1c466cb19af1f5bb053da4c9959833d69581503dcfa0632a8259f6b04c944f92b9e2494779030c1db4a64b16a2cd9c131b22bf0f95daaf13c7cd94ab57547679382cd097d34e617d993b51aebc20245f8461e81943a8394d2adb431762f1465c75c873debaf4960303e27e6b71095c0ca6a45e8bc6032001869e11522cbfed885c41151d69d15d816cf6c014be76361998b84529f5a2fe74cd953e8795a937f247d607e1fc13629863a4817a4f34595f23a60d0cbec64af84939865116914060dfd1895f0d8bab43b753add53ae84f6eaab141e904cc9332eac436333f1d2256f8935df6eb4dbf15550fb3e9cb0233713b0b02723419f68f52d69dc811de0c07ba6e4e302002b19805b8532cf6caa19d69ace56e9fe85315501bf18a3c4a12ad0918b51d69bc47e466c77bb0c83f8b7efc2b47bededc1043da414f3c39d6407ccb69ca6bc7c4fa04fdffd894ead9d7228cdc4528f6ddde714af269cda8912b7ce8ed1d029004a2dffb5aecec31b8fd3c85eb83ad9c0b9f7cfc81465e1015a74cd6645a3ddec5629fc6eaa82514917846f68772b03ef6adb0f843b42e95fb025ca452765983eaf8afee1e37f45d348c56bbacbfddb137a48391129619e368dd4401e89e0c1dc67c0cabae905671106f81642d43b37854d51065425c867e072bc56b7192a66815e381b829bbb23f8e61030ef0e6d05bea8d051d3fc6564d77460785c20de9c5acd9c0bf45898cc37a8f80a043210a263dee020c22658956725d8c11abdfc67c44f17710c6fafcb0f28a6449f5f39185909b355ced49305ccc98ebc21bce9beaa9d5228cce33734aeeabe6702a641ebf7077ee5632976e0dbed2c166f9608257276c4feb48080ecb55e0c8a2cdfeb9f0efaf706021f380fcdbdfafd474f1409fb692a15e0e25bb5ea7dfa0625a8e6c1e4b99721c443782b356a367d40cd57d8f5ef383e18b4c016ddae707b0ef4f690082b3bd7674532aa4331b55e0d39ece1abf415f7c7d185d0643074aad8f1b40f103dd3a86fe60c015501a9236338886019581cf370b8a53516d506f8abc600eac998cfa5abcfa8760abde3801d2a4a8313c642421bea9c497ec8162ef7546bbf1b091f0a9a164c9d2b43ab7d5b2145c8d70baea2e69579e55a6b57b3af64ef19b78509cc01ab577b622e129d87120001bf7ca5b4926d9fd0e3d4dc801f5a55dc0cbcff2c777ae0885fdc16069b0c17cfdde0d628345eeedbdbe9deb005c596ce6fef2a70fd2960efb94638403e7f44f5449032486d1efdb5a944492629bcf5317f935587b9e1fbefc15e3a5d91dd3adbbf1da42024c319860d957e57fa48dc6f6b5185adb30d2ee1ea368bac6758aa9a4a940cfbaed5d1af354e4c836cc4deec657dd30c52b0dd5797463b519e7dd697a7ede83c24a7716b5a45ece847d86d90f74ca8ce9461fa7c13cbeb7458fc36f158615c4b2f19af99a4ef45f6b53bfe1f47f577cfc81465e1015a74cd6645a3ddec5629fc6eaa82514917846f68772b03ef6ad60d0f13cb95ee67b49ced6e09847468de5909bcc61f8ce75c209f5ea8454f9bdef5bf8ee9347ff7d878e7fba33dbcbb9bd09234748e6d8aaf62dc535c89e6edefcd76c6ec01a44e6e09dd858a5d4c0b6e9ad90f6379ac061e7ae121689c87a79433e7dc4be2bb44ed1205fa0a78135891508579ccfce9e138c827ae62c2f1d1a78620b16f4470f01d7ed90e714fd5ae75ca10f8b204017802bffac2c900a9bd24e8086b2d48781136eb1fa927bb0a4d7b836d7024412f15391dc951d4261099348a6607e9409d3818fbc95ffe1a3e97304c880c74896f418e30d37948edc3a52bd67787aff17131b65799d779690460096cb9d96ba3c520ffa17e73fbd24d787977bfe639b2ccf44f1f7f3595c38ce72e1433365d59849e9eab5c6037d6dc0f970c69de52ccc6d5d7315e93d133a750b6546f4bdc0a0da9e06c28610f5ae64da7eedea5c25a09ad72c50b00340cc3d202bacdc7aa5df95613b0b8ffef206a4435be3bcaba6a9d5e70c356cba22cbc058bc57921ff05cb3ed3f574ac7b8aa32f1255ebced71a1d952ef17d28b597fa080e59440508a1406d55fa05cfe71164be7a08a452dfc724ae3371f78e06b5e8ba307f0ce465f6960af8c6c50a036ac9ba4f740e76a8f17577530f820015dc3347be185110f826d0a26d8489989ad35405fac73da93dee789e4081c1ccc3db501afca30ed224db5bc0fe1fd5cc990744d23e6634d0d3c40464ec4073a64dcc93f6a038a63cfa0711a803983e469f265f84863e5843fdffcbf24897a36cb89dfa609e941795079b4acca3791b48502f1e13061ca5965b578f8f4dcc5f12d86868bde93ebd02515cfee91fae120228a96ac3ccda43699476d479ffffbb3c486ddfeb14ff26be1682538a6e99bd99e76f5933f484370bda709e6fe98d731e11823d17f7bf3f9b66d6522deb757a5424d191aea732d2da5ce98aad202b8e7fa56506abb742a64d1d15d6999036a3593224b18b9166a705f8c6c2f791ac2408e7eefd94e41ed736e26b0f27b644746028f30c6e1de30025439cf4104e8beb499c9961dd2b44ad7b2be8745b9a98a5c4e998201451b6290c46457ea7f231a2f8c642cb3a2653a8951889c0a663a3c76bbed0d163930a7d8f9404c318d4beac2f326f6c3927cf4421b2cfc5bd9f36d56235a83842d71fe5bcef2a3c2f64a4d85a0c6b7fbc5e35403d3bb16ebc35845f1abc1aaf65fabda8d06c9d9bdd2a8fa70f38a74e0c43ae4354476e62eeb26e6cae08c18c5b57b1899c1f76f32f66e0860dfe8cde1e4b549f75aa86a07e64540ac754f3db18bc2ec6c19bdc6fea9090809f292bcf64a1a6bf589c51817fd3e3fdabc96a479f392fc0e4f4fa9460558eedf3412b988d433a2dcbb3a9c45402a145a4fab8a6ac6794f271e8d05e2f4feaec393987fcf9be7d46261aad32342fa56959b02da45c98af559865a393f1808a8cdc5cb3132e0944f46dda794d453d64dee66814f336e56e5d9757cb1a5860995f8b200a84598a7795b5d302f1bbedc1a3eb502cfc85d9914822140ee207db6416771110147e315bb85b777c9a371d9ecab7a2cab8dc1987a25b532826b21bb44766ef8c5bb8d11fb30c58a52fc06d8fe7050aa5aac2fe95fa9cd2cfabf602ead4f4a197c836489f35e64cdf71945ea9075860880632086f4f7b5be492dbb6df5cd5df6569c4251dffba944ab6f7b6d3a6d5bbdc0744b2f4659c1ef02a08d1a37be6e39287fcb6e062fa4a734afb5cdb94421cd762b4eb032d3ed2bf58043d80426c5bf362385235a2dfa0a32fd1afebb325952e881296b3b4acc0879736c94c14e812e247d122da55bc147c68f085c454d990a65bffd0ac734f771b89154e5c68724e550cd4a74217aa119c1ed507e406877483af84193f1dc8d15a09ab915a17750a668c2aebacba8bef31c7a21985992b0ce987bdee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855330aac72cd0d135d72582ba9e560d9b41f236678aadb5a6e8526ab013dfbc270a6ad7ababae7aea527c546de59a5fb3b7921acb1924fb4aa88bc3d9a861df3d2e67f78ebf4cb1c36ff194335f997be9ef3a8b701f7ee891df0b64b11a51b727af4247dde07952a5ff866b24e45b5cdd1fce410cdb2e038255a1635867f59c10cbcc37d72664fabf900214cdc6c401e61336bcc0724e05d40aaabf3fa4cd83d6d9c2de54e48d3a11bf8704e3f112159310cb780017d3c706f64a07bf51f631e73e3ad9ded0046aa5f6dd9b1f2a036a18e493ca6dd6c879bf832af193f90ff7724cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d307b4793eb53aed16d8fdcd6041bc76f1603cf221fe204291e73aa697f99c6dcdaf314d8b4372cdb1b1df5c090572d419b9bebfcb3647c7676e4e3f82b778aa0dd92878d875ff678c8fe38d4351ffb45212e46788b3577764171e1d481c58cf2f2d38a7040929cae1df802003720e99e804c1a5466f47b4eb22a5a0641b7eb255127d05a8d032f2bec3b8e0a567a5960c36b5559e369c3ecb76ab62c5e0f46d2a2efd3cf1b681c2b59b0053c592df1841c4ed6e02643e827e58655553c1b046879982c42269801364681366607390fe4e32d0c479dac17cf421f8a1bc8a417e6e650f441793237bad066484f48ace22a5e3297740234f7e1be9f9719fa6fce92e9ce9a439f9b083173c6c821119d3be74db57c82b9cdba604015dc3d39bc444758e204a94ce80a6411534c00461124fe2602af7ee81a512ff525f7b182e2dea701f03cff307ecd8ca0bf528a2f6ff2541adcedd356d556f88e0e2376f0d67a7e0c94c80683b7c5f03132d6b67471230646b989592da271f6df68b34e2d7058c6c55af2fe81aef953246235101df180c6a879db0b26afd3485d17c9e022007272dd885bd0972de30533732aa13793faecbad0df05eb88bff5c64891b29f8bc2e0ea0a4405c3d450afa32c08e8f1f88a9e27ef747bf17d85d6096c67a80eea9b900a9117c5219255e88494fa9bfec5b13b7f339bd77c12a2db078e371c124adc473e09f8eade5de414e05fba49a3e86ffd2518d9bb7412f41de6c14409bf7fb504f7b30890fe1eb3d3e6b6a4eb63c63fe61272a59df824bac8a6f5b827a98bce3b8271c723d8a2c2cd738970201a82ba0f153e02ffe13eaf3e1415695bdc110bab486b04f4e99ce2a463278ae564295aa6c50a35788acec26ef6681dc9f96f69ee85a02afaad48177d654c11e6582fb2cd853a36df6886dc66bda5a47b06d1f2a11d77d96fe5c42f989fb1f2060165c18bae1445bcf60d108e936d4f7c95a97f99e0b66a9056f8fc31c1068e87639d6ebf18b16d7bdaf42696f071ac58669f5f92edec0c2a76acd6e931d1c792ea22454439befff0438f3b5a6b9969f26efe81fa0f3e7dc47c3f6e99ac37cb3d384d8211fe339ebf0d7913b95165cc8765ed10bff5e20add8f42aea122228d560d7e6c2af608fdece380278d181bdc48b9de6c8c1ec51bfc1c28d6bdf7bee54ee16ef1a2c39e77c97a496a8b9605a2f851cb0f48d2b76bd8a9c8252e734b3aab9bbd2b03f163a2b144208ff2f4b26e1af5a4834c5f651ce6b50c09889412c1f2a1ca28820897c27f2278348a9eae13ac3444f9e2fbcd381207fd9000f75041ccc0f58ce506ffa5684e0fb760ee9a4d76473462292e890bec7d729d2f949e54e292739943a691881bbbd57edfb30dab59ebfd5a81a77a954a77b0651ac6b548a47e02b5ab78d480e51bbfec1dcbb8d22d5798aadbce452973ad49cfae218acc5d05367423311d1957402274d87c37ca122c840c5f45651ce6b50c09889412c1f2a1ca28820897c27f2278348a9eae13ac3444f9e2fb7fe4271b398f7bfea19d7b98191a3512e56c0a194ba531736219d4a42529b58c1a7f553c509f86dba065991ebe3a6ac5663abe8ba182fff22d66de7b3fcb3c80200edd51ab582509c71904c485514610a45d27679dea6b0f99189864ba128e3fa523ed43d95fbf9d6edb81130d5525aa693bf719bb15d21bfd8716b735cdaac54f788cbf04613f783139c32bed76aa36b7cfe59113fe19c2864292dc27de32474c9bf4f774c5c025d9cf209350536844cee6fe095a6f16fd187e8b29189024bfede0f3b1e500407980a8081f728e6189b18145d92200ac489b0874124a2b69ae689a748102989c9499dcd5f871ce5e8963e3ac556e8bf153803c08faa4dd04f5f9f2982c99376c4b3fb4c3438a0f4a332a50bbb7dbbb8e0a66d62eea76865537fcd8e9a923bd49e6db5faab0975347afa19a59c6fe908d1acaa37dffabdac702121f40ae9662f254c85d478de860ce0dce051119bd97c95aefba8257b507df5f27564e4840d86437f5dee996b8ea597a6f85090833ed5fcdecbf102feeeb8a9571df8f73a43eb3913cf7167e454b862032f8253047c723b20c4ce009bb0e85f7b9013fdb4954ccf0970047d5023a9f2a9bf27be2bf1a129d66ebc3d2060891843d2f34c05dab6373ea430b7ab3be0dcaa2003ca629cdbc7847bbb057063144bc0444c9eb793e2f8929ae312fd78a8e965faf8eba82d9f2381e7ce888cf6822e1286b3f72659c2dbd4e1a1caf012add56c46eb0b2bdfe0254c0a797f67d3ec4fa78a9ca73323ebe823abad457a4d26bd8bce5098ffc0844e2d4c8d8a75341c0be6006803231a10a08ef0e1b2c314bd2cb5ca8343141a32a1bdd9deddea14c91f0f6292ca44fc50f1f79b4da05d7c3559cfed1ea5a479403c8eb26b15bf4384837465d3a7c9aaae8ac60f70a9b553da257bf84df06332d67f7037078b7e0c4ce9efd4097be3e3bf0d70d7cf148d1211835fd45e609fbfba6b938f31528205ce4a2fd4097be3e3bf0d70d7cf148d1211835fd45e609fbfba6b938f31528205ce4a2465d3a7c9aaae8ac60f70a9b553da257bf84df06332d67f7037078b7e0c4ce9ef05f7eae8d0f5b1b385ba2957c380a35cc47d6920db8773a3c754d16ac0e471ec0cdd2fb33196d88a15ce4faf2145709ee06f12d93589ab1a6601a08c4b6a9b570fb3c955692887eedf9067f4ea80d8d5e7bf77e1aeae73e274b6396d08f273a986a48b98473b3b95c90526f70cbebd9d1df54faf6b2daa48fd0db8209ad79a07a6707ffc98a12fc2bcd18c828eec3a447c048001c6680078706c31031f0e5af0516d9653d1466ec59819e21719b14e1b1ff86f199b8b50f942e265948cde61d2c9bfc05211e5148121bb9aefcd646e0f50bbb22f0f003e0848b96c49d197cdc6625103f4adba72c060f3f7a9ef1decb8b599d25c5a2fd562d03cfba6e5699e83231262228c7590861255f425d41769ab5746257436fe81dd216e1657072639c87d296f0890e44711508cf326eaae43155bea4da31338ad6b980212be2bdc035a209de0c7cf71e997dc6df3f5d85162fda0c872c616ad4240d867c56e4426c38f8cbf318bc28aaa8e13de1b1e52e9aa934b4ce0b807c8d997257f42f7328abed9aa44aba7ab1fb6d19b8ed077366da0add5cc897a999c4efb83562e11b5adfd331870292b95b839758fe17e7ceeceab80655c226414ff6a515018581ef4dc68d4fad495fbec7713f8a2ae187c5eae143d8a11346183ca520a905a67ce56d05e2d4f0ee9dab7258862842b54ccf6a286c7119c221691bd4d26265e6c47ab496b19ea88f9ad3671050543a84ba26029493a69841aa3c1eba835748f290f972198e30723b968025b156d992626d2155a66d82f0d22b4c33e72b650b506a396ef88a9693d703fa4d824dafe0c451c78c81bbd5ffb3ab84918bcc6620a2e7d3d942e3c99857b0ceb835a2184ab1b85843747c0049a17281b8f55801c91d618595821de6b951d7df78889b27537f245504b97a6d211a2ae023fe9922a4beb51238a35cf56b5fe11782f3de48e1d8e7c5e55239dd1b255cd9fad8f7641ee5860b59286324ac218f778fa8774e7846737e1ffc95a49459c026170669b2b12244c606a3df1529895709a60362dd8a55e83a17f7933aab3e5cd5818a3c7beac14dd3cfd6382bf8bd5b961b902ef9daac61036835ed7944eff3f72502a5870aa24e173761434eb73c46d5c4a1ce5d89b9c7cb48aa7edcbb837fecf3fae38bd86d4b88dd3e08760506bcf378e7ee75954b44e504cf74ef3c5a2889badf3221e8fd40338a09b618f09c5657d152e87a330fcd17cf3a9878708f96232cd9ca7be0beb8b8945e88d1b15425e46841f628aefe2a4f0fa4e809350c031acbdc1c9d3d6707036f96eae711b3c187cc749cc76cbc572062efd4fd692bf37852282aa1b71ab545760a935aa31c5d7e699791dcb6548b69ce6b27e7f98b77a137f6b15ec0a2bbe359243d6a35158bb66c33a03af2f2eec2edbfb9ba23a20426fb764e58f3cf1abec92a6a591cbf72c70bcfee081dd1c90122b84ccb9efb7bf451fb8aa6e0c94aeb45583df9aa950c45a69a982dcc241b76a30f4bd9f26a896a9bdd0a09f2059c02513cb0b39262457a889e31af12df66be72be83ad07c2ca58f36105bb23c3dffc0ebbdfbb069a1ab7f137ff2438b88d2f0656d067f3c6f994512ea7da5c795be9cdcae677f9996c5da188e2777d82e751d7d94085d140884b3bf3a31913e9a70fa04ee10fe36502202bccafe0b97631dca90d7849cc242d047ce4c6a33d0f9c839f3c949457dd2ef95d8aae35bfccb9fc4b048fe57a1388351c18c7087b7bf599e19e000fe36502202bccafe0b97631dca90d7849cc242d047ce4c6a33d0f9c839f3c94a88d3e2c3dff68835ffbbb7dba295a3cbc3b28733cf1e8cfd19050c80b4ca9673f5c157bc4091a3c7bccd5aa31ffbb94ebeb68ecf2383a9c659182d7f39f3d0afc4e2a7ba530fbd1541366364944411cd629b4b8d4f5e85f2db30b4914a3b2d6a58362b88f5ce36ac0af312e34251d49fe9c57a7bb71eac6db1a59a685fc232b44edc2f0a5e8a37c9dec1f6f672c9f058d8684e14ba9b2788b59811df14892790a9875ed3c44e2eb82ad99d46d48caef421997f1bfd76f2e54881a01ce4eefaf6971216e0a8618f934043d937d4660e2331617b9d0ff6e80a5f7e08b6f34e0a7979fbf50085acad0d987751d9d1978cb9246490d3906d611bf0ddcac6513bdda56463ad83034f4aed5ed5e3d30096a1853605efb7bedd95a12e73c4ed9b4c014045e3b89f4e30eeec9a714abe9eaf3d47efe9b1f59d50e17613d015677cba1d0b55d94c1d7916c38a80cf28dcb93183c2cf9032160794cf7d315f3fb65b92127e2e4bc411e93166a66f9567900af77b1be00161e60c4615fbc254ee1f3e256433ab61f927575f243e8e04017b1440cca1b2cc9dd887c9eadfc50ff746dd36f840499416a9daf9e53e50c2d09a11e4b5f8aedef1f15c4991990b870c7915a59f0d70f092ef408e8b0fc809dc140b8314c55ff6425e23fa022780ff02b2cf5dc9b476a4543772f294bfe2ae516c23566986c93e9e334063d5008e7ee5fe5acc8af951d8fe1ef0618085c4f58be3d633a014aaca55ee6e47a3af1aad37182ed1fb3../cc../cpp../fc../cc../cc../cccccccc../cc../../cc../../cc../cc../cc../cc../cc../cc../cc../cc../cccccccccccc../../cc../cc../cccc../cc../cc../cc../cc../cc../cccccccc../cc../cc../cc../cc../cc../cc../cc../cc../cc../cc../cc../cc../cpp../fc../cc../cc../cc../cc../cc../cc../cc../ccubuntu_2004.dockerfileubuntu_2004.dockerfileubuntu_2004.dockerfile../../cache/spackAArootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootspackrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootspackrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootspackrootrootrootrootspackspack-0.21.2-150400.15.2.src.rpmconfig(spack)group(spack)spack@@@      (hwloc if hwloc-devel)(hwloc-devel if hwloc)/bin/bash/bin/sh/bin/sh/bin/sh/bin/sh/usr/bin/bashawkbzip2config(spack)coreutilscurlgcc-c++gcc-fortrangitgpg2gziplibbz2-develmakepatchpolkitpython3-clingorpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)rpmlib(RichDependencies)spack-recipessudotarunzipxz0.21.2-150400.15.23.0.4-14.6.0-14.0.4-14.0-15.2-14.12.0-10.21.24.14.3/usr/lib/spack/run-find-external.sh packages/usr/lib/spack/run-find-external.sh compilers/usr/lib/spack/run-find-external.sh packages/usr/lib/spack/run-find-external.sh compilersautoconfautoconfbashbashbisonbisonbzip2bzip2ccacheccachecmake-fullcmake-fullcpiocpiocuda-nvcccuda-nvccdiffutilsdiffutilsfindutilsfindutilsfishfishflexflexfzffzfgccgccgcc-c++gcc-c++gcc-fortrangcc-fortrangcc10gcc10gcc10-c++gcc10-c++gcc10-fortrangcc10-fortrangcc11gcc11gcc11-c++gcc11-c++gcc11-fortrangcc11-fortrangcc12gcc12gcc12-c++gcc12-c++gcc12-fortrangcc12-fortrangcc13gcc13gcc13-c++gcc13-c++gcc13-fortrangcc13-fortrangcc7gcc7gcc7-c++gcc7-c++gcc7-fortrangcc7-fortrangcc8gcc8gcc8-c++gcc8-c++gcc8-fortrangcc8-fortrangcc9gcc9gcc9-c++gcc9-c++gcc9-fortrangcc9-fortranghostscriptghostscriptgit-lfsgit-lfsgogohugohugohwloc-develhwloc-develinfoinfojava-11-openjdk-develjava-11-openjdk-develjava-14-openjdk-develjava-14-openjdk-develjava-15-openjdk-develjava-15-openjdk-develjava-16-openjdk-develjava-16-openjdk-develjava-1_8_0-openjdk-develjava-1_8_0-openjdk-devellibcurl-devellibcurl-devellibopenssl-devellibopenssl-devellibtoollibtoollibzip-devellibzip-develm4m4makemakemakeinfomakeinfompich-develmpich-develmpich-gnu-hpc-develmpich-gnu-hpc-develmvapich2-develmvapich2-develncurses-develncurses-developenmpi1-developenmpi1-developenmpi1-gnu-hpc-developenmpi1-gnu-hpc-developenmpi2-developenmpi2-developenmpi2-gnu-hpc-developenmpi2-gnu-hpc-developenmpi3-developenmpi3-developenmpi3-gnu-hpc-developenmpi3-gnu-hpc-developenmpi4-developenmpi4-developenmpi4-gnu-hpc-developenmpi4-gnu-hpc-develpatchelfpatchelfperl-baseperl-basepkg-configpkg-configpkgconfpkgconfpython3-basepython3-baserubyrubysqlite3sqlite3tartarxzxzxz-develxz-devele8@e@eM@eH@eRdd}dx@dkY@d=4d.@d%yd?@dxc>@ccc|b5@bN@b\@b@aaa@a5aLa@aim@aV@aTU@a $@`@`E`r```c`Y@`T@`8`8`__@_j_ǁ_G@__i_@_[feich@suse.comeich@suse.comcgoll@suse.combwiedemann@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comeich@suse.comcgoll@suse.comdmueller@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comeich@suse.comaginies@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comaginies@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comaguerrero@suse.com- Update Spack to version 0.21.2 * Bugfixes + Containerize: accommodate nested or pre-existing `spack-env` paths. + Fix `setup-env` script, when going back and forth between instances. + Fix using fully-qualified namespaces from root specs. + Fix a bug when a required provider is requested for multiple virtuals. + OCI buildcaches: * only push in parallel when forking. * use pickleable errors (#42160) + Fix using sticky variants in externals. + Fix a rare issue with conditional requirements and multi-valued variants. * Package updates + `rust`: add v1.75, rework a few variants. + `py-transformers`: add v4.35.2. - Fix path to setup-env.sh in the Apptainer template (bsc#1221471). - Add libgfortran, libfl2 and libzip5 to the Spack runtime container as the Spack build container has the corresponding devel packages but these libraries are not installed in a BCI-style base container by default (bsc#1221503).- Make python version used configurable. - Filter out more rpmlint errors.- Update Spack to version 0.21.1 * Add support for reading buildcaches created by Spack v0.22 * Bugfixes + `spack graph`: fix coloring with environments + `spack info`: sort variants in --variants-by-name + `Spec.format`: error on old style format strings + ASP-based solver: - fix infinite recursion when computing concretization errors, - don't error for type mismatch on preferences, - don't emit spurious debug output. + Improve the error message for deprecated preferences. + Fix multi-word aliases. + Add a warning for unconfigured compiler. + environment: fix an issue with deconcretization/reconcretization of specs. + buildcache: don't error if a patch is missing, when installing from binaries - From version 0.21.0 * following new features: + Better error messages with condition chaining: In v0.18, we added better error messages that could tell you what problem happened, but they couldn't tell you why it happened. 0.21 adds condition chaining to the solver, and Spack can now trace back through the conditions that led to an error and build a tree of causes potential causes and where they came from. + OCI build caches: You can now use an arbitrary OCI registry as a build cache: - For Dockerhub: `$ spack mirror add my_registry oci://user/image` - For another registry (GHCR): `$ spack mirror add my_registry oci://ghcr.io/haampie/spack-test` Then set the login credentials: `$ spack mirror set --push --oci-username ... --oci-password ... my_registry` and push to it: `$ spack buildcache push my_registry [specs...]` You can optionally add a base image to get runnable images: ``` $ spack buildcache push --base-image leap:15.5 my_registry python` Pushed ... as [image]:python-3.11.2-65txfcpqbmpawclvtasuog4yzmxwaoia.spack $ docker run --rm -it [image]:python-3.11.2-65txfcpqbmpawclvtasuog4yzmxwaoia.spack ``` This creates a container image from the Spack installations on the host system, without the need to run `spack install` from a `Dockerfile` or `sif` file. It also addresses the inconvenience of losing binaries of dependencies when `RUN spack install` fails inside `docker build`. Further, the container image layers and build cache tarballs are the same files. This means that `spack install` and `docker pull` use the exact same underlying binaries. If you previously used `spack install` inside of docker build, this feature helps you save storage by a factor two. + Multiple versions of build dependencies: Increasingly, complex package builds require multiple versions of some build dependencies. For example, Python packages frequently require very specific versions of `setuptools`, `cython`, while different physics packages require different versions of Python to build. The concretizer enforced that every solve was unified, i.e., so that there was only one version of every package. The concretizer now supports "duplicate" nodes for build dependencies, but enforces unification through transitive link and run dependencies. This will allow it to better resolve complex dependency graphs in ecosystems like Python. + Cherry-picking virtual dependencies: You can now select only a subset of virtual dependencies from a spec that may provide more. For example, to make mpich your mpi provider, you can be explicit by writing: `hdf5 ^[virtuals=mpi] mpich`. Or, to use, e.g., `intel-parallel-studio` for blas along with an external `lapack` like `openblas`, you could write: ``` strumpack ^[virtuals=mpi] intel-parallel-studio+mkl ^[virtuals=lapack] openblas` ``` The `virtuals=mpi` is an edge attribute, and dependency edges in Spack graphs now track which virtuals they satisfied. + The `spack deconcretize` command gives you control over what you want to update in an already concrete environment. As an example, with an environment built with meson, and you want to update your meson version, you can run: `$spack deconcretize meson` and have everything that depends on meson rebuilt the next time you run spack concretize. In the future, we'll handle this in a single command, but for now you can use this to drop bits of your lockfile and resolve your dependencies again. + UI Improvements: The `spack info` received a rework to make the output more appealing. It is now on par with the rest of Spack's UI. `spack info` now makes much better use of terminal space and shows variants, their values, and their descriptions more clearly. Conditional variants are grouped separately so you can more easily understand how packages are structured. `spack checksum` now allows you to filter versions from your editor, or by version range. It also notifies you about potential download URL changes. + Environments can include definitions: Spack did not previously support using `include:` with The definitions section of an environment, but now it does. You can use this to curate lists of specs and more easily reuse them across environments. + Aliases: You can now add aliases to Spack commands in `config.yaml`, e.g. this might enshrine your favorite args to `spack find` as `spack f`: ``` config: aliases: f: find -lv ``` + Improved autoloading of modules: In this release, you can start using `hide_implicits: true` instead, which exposes only explicitly installed packages to the user, while still autoloading dependencies. On top of that, you can safely use `hash_length: 0`, as this config now only applies to the modules exposed to the user -- you don't have to worry about file name clashes for hidden dependencies. Note: for Tcl this feature requires Modules 4.7 or higher. * Other new commands and directives: + `spack env activate` without arguments now loads a default environment that you do not have to create. + `spack find -H` / `--hashes`: a new shortcut for piping spack find output to other commands. + Add `spack checksum --verify`, fix `--add`. + New `default_args` context manager factors out common args for directives. + `spack compiler find --[no]-mixed-toolchain` lets you easily mix clang and gfortran on Linux. * Performance improvements: + `spack external find execution` is now much faster. + `spack location -i` is now much faster on success. + Drop redundant rpaths post install. + ASP-based solver: avoid cycles in clingo using hidden directive. + Fix multiple quadratic complexity issues in environments. * Other new features of note: + archspec: update to v0.2.2, support for Sapphire Rapids, Power10, Neoverse V2. + Propagate variants across nodes that don't have that variant + Implement fish shell completion. + Can now distinguish between source/binary mirror; don't ping mirror.spack.io as much. + Improve status reporting on `spack install` (add [n/total] display...).- Update to version 0.20.3 with the following changes: * Bug fixes: + Fix a bug where `spack mirror set-url` would drop configured connection info. + Fix a minor issue with package hash computation for Python 3.12. + Improve escaping in Tcl module files. + Make repo cache work on repositories with zero mtime. + Ignore errors for newer, incompatible buildcache version. + Print an error when git is required, but missing. + Ensure missing build dependencies get installed when using `spack install --overwrite`. + Fix an issue where Spack freezes when the build process unexpectedly exits. + Fix a bug where installation failures cause an unrelated `NameError` to be thrown. + Fix an issue where Spack package versions would be incorrectly derived from git tags. + Fix a bug triggered when file locking fails internally. + Prevent `spack external find` to error out when a directory cannot be accessed. + Fix multiple performance regressions in environments. + Add more ignored modules to `pyproject.toml` for `mypy`. * Features: + Spack now supports Python 3.12.- Update to version 0.20.1 with the following changes: * Bug fixes: + Fix spec removed from an environment where not actually removed if `--force` was not given. + Hotfix for a few recipes that treat CMake as a link dependency. + Fix re-running stand-alone test a second time, which was getting a trailing spurious failure. + Fix reading JSON manifest on Cray, reporting non-concrete specs. + Fix a few bugs when generating Dockerfiles from Spack. + Fix a few long-standing bugs when generating module files. + Fix issues with building Python extensions when using an external Python. + Fix `spack compiler remove`: remove from command line even if they appear in different scopes. * Features: + Speed-up module file generation. + Show external status as `[e]`. + Backport `archspec` fixes. + Improve a few error messages.- Fix SPACK_ROOT setting in /etc/profile.d/spack.[c]sh (bsc#1214222). - Don't source /etc/os-release directly, use a subshell.- Add hwloc-devel and sqlite3 to the packages that trigger a `spack external find`. - Change /usr/bin to %{_bindir}. - Make sure, libhwloc and hwloc are installed together when spack is installed.- Do not attempt to build documentation for 32-bit, s390x and ppc64*. There are build issues on some build targets.- Update to version 0.20.0 with the following features: * Exact versions: Spack did not previously have a way to distinguish a version if it was a prefix of some other version. For example, @3.2 would match 3.2, 3.2.1, 3.2.2, etc. You can now match exactly 3.2 with @=3.2. This is useful, for example, if you need to patch only the 3.2 version of a package * More stable concretization: Now, spack concretize will only concretize the new portions of the environment and will not change existing parts of an environment unless you specify --force. This has always been true for unify:false, but not for unify:true and unify:when_possible environments. * The concretizer has a new --reuse-deps argument that only reuses dependencies. That is, it will always treat the roots of your environment as it would with - -fresh. This allows you to upgrade just the roots of your environment while keeping everything else stable * Specs in buildcaches can be referenced by hash: Previously, you could run spack buildcache list and see the hashes in buildcaches, but referring to them by hash would fail. You can now run commands like spack spec and spack install and refer to buildcache hashes directly, e.g. spack install /abc123 * New package and buildcache index websites Our public websites for searching packages have been completely revamped and updated. You can check them out here: Package Index: https://packages.spack.io Buildcache Index: https://cache.spack.io Both are searchable and more interactive than before. Currently major releases are shown; UI for browsing develop snapshots is coming soon. * Default CMake and Meson build types are now Release: Spack has historically defaulted to building with optimization and debugging, but packages like llvm can be enormous with debug turned on. Our default build type for all Spack packages is now Release. This has a number of benefits: much smaller binaries; higher default optimization level; and defining NDEBUG disables assertions, which may lead to further speedups. You can still get the old behavior back through requirements and package preferences * spack checksum can automatically add new versions to package * new command: spack pkg grep to easily search package files * New maintainers directive * Add spack buildcache push (alias to buildcache create) * Allow using -j to control the parallelism of concretization * Add --exclude option to 'spack external find' requires() directive and enhanced package requirements We've added some more enhancements to requirements in Spack. There is a new requires() directive for packages. requires() is the opposite of conflicts() - removed Add-zypper-to-the-valid-container.os_packages-commands.patch as incoperated upstream- Update to version 0.19.2 with the following bug fixes: * Ignore global variant requirement for packages that do not define it. * Compiler wrapper: improved parsing of linker arguments. * Views: fix support for optional Python extensions. * Views: fix issue where Python executable gets symlinked instead of copied. * Fix a bug where tests were not added when concretizing together. * Increase db timeout from 3s to 60s to improve stability of parallel installs. * Buildcache: improve error handling in downloads. * Module files for packages installed from buildcache have long placeholder paths abbreviated in configure args section. * Ensure file with build environment variables is truncated when writing to it. * spack config update now works on active environments; - Add: Add-zypper-to-the-valid-container.os_packages-commands.patch This adds `zypper` to the valid OS package managers that can be specified in a slack.yaml container description like: spack: ... container: .. os_packages: command: zypper .. - Add: spack_get_libs.sh This scripts obtains library and include paths for spack-build libraries and outputs shell commands which set these as environment variables. Additionally, it generates a command line to prepend these lib directories to LD_LIBRARY_PATH. Thus, the variables can be set in the current shell by running `source $(spack_get_libs.sh foo)`. When using `bash` this script may also be sourced directly. The names of the environment variables are the upper-cased library names with the strings 'LIB_' and 'INC_' prepended. Thus, for a library 'foo', they would be 'INC_FOO' and 'LIB_FOO'. These variables may be used at build time to point the compiler to the include and library files (bsc#1208751). - Drop: Make-sure-spack-environment-is-set-up-in-Dockerfile-template.patch This patch should not be needed. When building using `podman` use: `podman build --format docker ...` to enable the non-OCI compliant instructions in a Dockerfile. - Add info, makeinfo, libcurl-devel, patchelf to the recommended packages to add. Fix: openssl-devel -> libopenssl-devel- Add 'zypper' as valid command to container.os_packages. This allows to build SUSE container using non-default registries. - Add 'awk', 'git', 'gzip' and 'gunzip' to the requires. - Add 'patchelf' to the recommended packages.- Avoid running run-find-external.sh twice during installation/ update. - Stop accidental inclusion of %%pre/post/triggerin/un scripts in doc packages. - Adpot new info file installation sceme for Factory.- run-find-external.sh: Extend the range of versions of MPI flavors to be searched for when asking Spack to look for external packages (bsc#1208751).- Improve run-find-external.sh: * Extend to run 'spack compiler find'. * Separate triggers for packages and compilers. * Better handle when search patterns match multiple directories.- Udpate to 0.19.1 with following bug fixes: * buildcache create: make "file exists" less verbose * spack mirror create: don't change paths to urls * Improve error message for requirements * Fix libtool filter for Fujitsu compilers * FileCache: delete the new cache file on exception - using `--all` flag for `spack external find` in the %triggrin section, as MPI packages were not recognized any more, fixing (bsc#1208751)- Make sure the spack environment is set up correctly in spack-generated Dockerfiles (boo#1207784): Make-sure-spack-environment-is-set-up-in-Dockerfile-template.patch- Fix var_path: this regression was introduced with the update to the 0.19.0 release (boo#1207053). - Move repos to /usr/share/spack: /var is strictly for local data.- updated to version 0.19.0 with the following changes: * Spack's traditional package preferences are soft, but we've added hard requriements to packages.yaml and spack.yaml * spack install in an environment will no longer add to the specs: list; you'll need to either use spack add or spack install --add . * spack uninstall will not remove from your environment's specs: list; you'll need to use spack remove or spack uninstall --remove. * concretizer:unify:true is now the default mode for new environments * include environment configuration from URLs * An increasing number of packages in the ecosystem need the ability to support multiple build systems * package ++variant: enabled variant that will be propagated to dependencies * git. prefix to specify git tags or branches as versions. All of these are valid git versions in * spack ci generate --tests will generate a .gitlab-ci.yml file that not only does builds but also runs tests for built packages * spack test run --explicit will only run tests for packages that are explicitly installed, instead of all packages. * You can add a new shared_linking option to config.yaml to make Spack embed absolute paths to needed shared libraries in ELF executables and shared libraries on Linux * spack spec prints dependencies more legibly. Dependencies in the output now appear at the earliest level of indentation possible (#33406) * You can override package.py attributes like url, directly in packages.yaml * There are a number of new architecture-related format strings you can use in Spack configuration files to specify paths - Improvements from v0.18.0 * spack install --reuse was introduced in v0.17.0, and --reuse is now the default concretization mode. Spack will try hard to resolve dependencies using installed packages or binaries * Spack hashes now include link, run, and build dependencies, as well as a canonical hash of package recipes. Previously, hashes only included link and run dependencies (though build dependencies were stored by environments). We coarsened the hash to reduce churn in user installations, but the new default concretizer behavior mitigates this concern and gets us reuse and provenance. You will be able to see the build dependencies of new installations * concretizer:unify:when_possible will try to resolve a fully unified environment, but if it cannot, it will create multiple configurations of some packages where it has to. with spack find. * Spack now has an updated binary format, with improvements for security. The new format has a detached signature file, and Spack verifies the signature before untarring or decompressing the binary package. The previous format embedded the signature in a tar file, which required the client to run tar before verifying (#30750). Spack can still install from build caches using the old format, but we encourage users to switch to the new format going forward. * The spack bootstrap mirror command can automatically create a mirror for bootstrapping the concretizer and other needed dependencies in an air-gapped environment. * spack env depfile can be used to generate a Makefile from an environment, which can be used to build packages the environment in parallel on a single node * In addition to being conditional themselves, variants can now have conditional values that are only possible for certain configurations of a package. - removed following patches as incorporated upstream: * fix-tumbleweed-naming.patch- avoid bashism in post scripts (bsc#1195391)- Fix: Fix-error-during-documentation-build-due-to-recursive-module-inclusion.patch This is needed to prevent an AttributeError during 'import spack.environment as some_name' when building Sphinx documentation - due to an outdated Python on SLE. The original version caused errors: 'NameError: name 'uenv' is not defined' when using 'spack env activate' et.al. (bsc#1198212).- Remove unneeded build dependency. - Make dependencies of spack and spack-recipes symetrical.- Add openssl-devel, xz-devel and libzip-devel as recommends bsc#1195789.- Fix run-find-external.sh script: RPM macros are not expanded in external scripts. * Rename: run-find-external.sh to run-find-external.sh.in - Fix list of recommended packages. - Add support for container building using a SLE base container. * Add-support-for-container-building-using-a-SLE-base-container.patch- updated to spack 0.17.1 with following chnages: * Allow locks to work under high contention (#27846) * Improve errors messages from clingo (#27707 #27970) * Respect package permissions for sbang (#25764) * Fix --enable-locks behavior (#24675) * Fix log-format reporter ignoring install errors (#25961) * Fix overloaded argparse keys (#27379) * Allow style commands to run with targets other than "develop" (#27472) * Log lock messages to debug level, instead of verbose level (#27408) * Handle invalid unicode while logging (#21447) * spack audit: fix API calls to variants (#27713) * Provide meaningful message for empty environment installs (#28031) * Added opensuse leap containers to spack containerize (#27837) * Revert "patches: make re-applied patches idempotent" (#27625) * MANPATH can use system defaults (#21682) * Add "setdefault" subcommand to `spack module tcl` (#14686) * Regenerate views when specs already installed (#28113) - removed leap-container.patch as incoperated upstream- fixed the configuration files /etc/skel/.spack/{config|modules}.yaml so that spack writes to $HOME if started as user- made objects.inv (Source5) to be static as the online version is changed dynamically- added leap-container.patch which adds leap15 as os to the spack containerize command.- updated to version 0.17.0 (Upstream feature/bug references () are relative to https://github.com/spack/spack/issues/). * New concretizer is now default The new concretizer introduced as an experimental feature in v0.16.0 is now the default (#25502). The new concretizer is based on the clingo logic programming system, and it enables us to do much higher quality and faster dependency solving The old concretizer is still available via the concretizer: original setting, but it is deprecated and will be removed in v0.18.0. * Binary Bootstrapping To make it easier to use the new concretizer and binary packages, Spack now bootstraps clingo and GnuPG from public binaries. If it is not able to bootstrap them from binaries, it installs them from source code. With these changes, you should still be able to clone Spack and start using it almost immediately. * Reuse existing packages (experimental) The most wanted feature from our 2020 user survey and the most wanted Spack feature of all time (#25310). spack install, spack spec, and spack concretize now have a --reuse option, which causes Spack to minimize the number of rebuilds it does. The --reuse option will try to find existing installations and binary packages locally and in registered mirrors, and will prefer to use them over building new versions. This will allow users to build from source far less than in prior versions of Spack. This feature will continue to be improved, with configuration options and better CLI expected in v0.17.1. It will become the default concretization mode in v0.18.0. * Better error messages We have improved the error messages generated by the new concretizer by using unsatisfiable cores. Spack will now print a summary of the types of constraints that were violated to make a spec unsatisfiable (#26719). * Conditional variants Variants can now have a when="" clause, allowing them to be conditional based on the version or other attributes of a package (#24858). * Git commit versions In an environment and on the command-line, you can now provide a full, 40-character git commit as a version for any package with a top-level git URL. e.g., spack install hdf5@45bb27f58240a8da7ebb4efc821a1a964d7712a8. Spack will compare the commit to tags in the git repository to understand what versions it is ahead of or behind. * Override local config and cache directories You can now set SPACK_DISABLE_LOCAL_CONFIG to disable the ~/.spack and /etc/spack configuration scopes. SPACK_USER_CACHE_PATH allows you to move caches out of ~/.spack, as well (#27022, #26735). This addresses common problems where users could not isolate CI environments from local configuration. * Improvements to Spack Containerize For added reproducibility, you can now pin the Spack version used by spack containerize (#21910). The container build will only build with the Spack version pinned at build recipe creation instead of the latest Spack version. * New commands for dealing with tags The spack tags command allows you to list tags on packages (#26136), and you can list tests and filter tags with spack test list (#26842). * Copy and relocate environment views as stand-alone installations (#24832) * spack diff command can diff two installed specs (#22283, #25169) * spack -c can set one-off config parameters on CLI (#22251) * spack load --list is an alias for spack find --loaded (#27184) * spack gpg can export private key with --secret (#22557) * spack style automatically bootstraps dependencies (#24819) * spack style --fix automatically invokes isort (#24071) * build dependencies can be installed from build caches with --include-build-deps (#19955) * spack audit command for checking package constraints (#23053) * spack can now fetch from CVS repositories (yep, really) (#23212) * spack monitor lets you upload analysis about installations to a * spack monitor server (#23804, #24321, #23777, #25928)) * spack python --path shows which python Spack is using (#22006) * spack env activate --temp can create temporary environments (#25388) * --preferred and --latest options for spack checksum (#25830) * SPACK_PYTHON environment variable sets which python spack uses (#21222) * SPACK_SKIP_MODULES lets you source setup-env.sh faster if you don't need modules (#24545) - removed following patches as incomperated upstream: * added-dockerfile-for-opensuse-leap-15.patch - removed as not needed any more: * basic-exclude-pattern-for-external-find.patch * Fix-documentation-so-that-parser-doesn-t-stumble.patch - updated patches: * Adapt-shell-scripts-that-set-up-the-environment-for-different-shells.patch * added-target-and-os-calls-to-output-of-spack-spec-co.patch * Fix-error-during-documentation-build-due-to-recursive-module-inclusion.patch * fix-tumbleweed-naming.patch * Make-spack-paths-compliant-to-distro-installation.patch - added: * Fix-Spinx-configuration-to-avoid-throwing-errors.patch * Set-modules-default-to-lmod.patch - updated requires to actual sphinx version, so that the documentation builds - Included source: objects.inv- Fix sysuser file name.- Utilize sysuser infrastructure to set group spack.- update to version 0.16.3 (JSC#SLE-22137): * clang/llvm: fix version detection * Fix use of quotes in Python build system * Ensure all roots of an installed environment are marked explicit in db * Fix fetching for Python 3.8 and 3.9 * locks: only open lockfiles once instead of for every lock held- added tar and make as requirement- added README-oo-wiki which is the raw version of the opensuse wiki- Fix patch Fix-error-during-documentation-build-due-to-recursive-module-inclusion.patch to actually work correctly. The updated version makes sure modules are not called recursively even if modules are loaded in an out-of-order fashion from python-Sphinx. - Remove duplicates in spec file.- fix typo to export prefix in patch (bsc#1191395): Adapt-shell-scripts-that-set-up-the-environment-for-different-shells.patch- update to version 0.16.1 * Major performance improvement for spack load and other commands. * spack fetch is now environment-aware. (#19166) * Numerous fixes for the new, clingo-based concretizer. * Supoprt for automatically bootstrapping clingo from source. * Python 3.10 support: collections.abc * Fix import issues by using __import__ instead of Spack package import. * Bugfixes and --source-dir argument for spack location. * Better support for externals in shared prefixes. * spack build-env now prefers specs defined in the active environment. * Remove erroneous warnings about quotes in from_sourcing_files. * Fix clearing cache of InternalConfigScope. * Bugfix for active when pkg is already active error. * Make SingleFileScope able to repopulate the cache after clearing it. * Channelflow: Fix the package. * More descriptive error message for bugs in package.py * Use package-supplied autogen.sh * Respect -k/verify-ssl-false in _existing_url method.- Add gcc-c++ to the required packages (bsc#1185519). - Add alternative c++ & fortran compilers to the triggers list.- added run-find-external.sh which calls the command in post `spack external find` as nobody and not as root- added libbz2-devel as dependency as spack requires this, as soon as the bzip2 binary is found and removed warning for this corner case in rpmlinrc- set the right MODULEPATH in /etc/profile.d/spack.[cs]h- Remove BuildRequires for patterns-base-basesystem and distribution-release.- update to version 0.16.1 * intel-oneapi support through new packages * HIP/ROCm support (#19715, #20095) * concretization enhancements * environment install reporting fix (#20004) * avoid import in ABI compatibility info (#20236) * restore ability of dev-build to skip patches (#20351) * spack find -d spec grouping (#20028) * spack smoke test support (#19987, #20298) * abstract spec comparisons (#20341) * performance improvements for binary relocation (#19690, #20768) * additional sanity checks for variants in builtin packages (#20373) * do not pollute auto-generated configuration files with empty lists or dicts - added file: basic-exclude-pattern-for-external-find.patch * adds the functionality to exclude binaries for external search so that the call 'installdbgsymbols' can be prohibited as this leads to an endless loop when drkonqui is installed- Add * Fix-documentation-so-that-parser-doesn-t-stumble.patch: * Fix-error-during-documentation-build-due-to-recursive-module-inclusion.patch Fix documentation building. - Fix texinfo file installation.- added patch for more reproduceable output for the doc package * added file: added-target-and-os-calls-to-output-of-spack-spec-co.patch- added test for /etc/spack/no_rpm_trigger- added %triggerin and %triggerpostun for the packages which can be detected by spack- updated to 0.16.0 - added find for external packages - added dockerfile for leap * added patchfile added-dockerfile-for-opensuse-leap-15.patch- Add documentation (man and info pages, pdf doesn't build currently). * Do not ship documentation sources. - Do not distribute Dockerfiles and other container related material, yet. This needs to be fixed so that the samples work with SUSE. - Fully integrate spack into SUSE directory structure, fix paths where required. * Fix setup scripts to work correctly in above environment.- added profile file for csh - enabled projections - updated README.SUSE- added patches to be more on the traditional file system hierarchy and avoid explicit version in tumbleweed. * added file Make-spack-paths-compliant-to-distro-installation.patch * added file fix-tumbleweed-naming.patch- Initial release. Version 0.15.4 * Make-spack-paths-compliant-to-distro-installation.patch Make spack paths compliant to distro installation./bin/sh/bin/sh/bin/sh/bin/sh/bin/sh/bin/shh01-ch3d 1710919599  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPCDETUVWXYZ[\]^_`ab^defghijklmnopqstuvwxyz{|}~^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP^RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~^^      !"#$%&'()*+,-./0123456789:;<=>?@A@C>EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop0.21.2-150400.15.20.21.2-150400.15.2  !!!!"#$$%%%%&&&&&&&&%''''''''''''''''''''''%(((((((((%)))))%***************************%%++++++++++,,,++++----+.........+%%//////////////////%000000%11111111111111111111%%%233333333333333333333333333333%%%4455$6666666677777688888899$$:$;;;;;<<<<<<<<<=====>>>>>??????>>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>>>>>>AAAAAAAAAAAAAAAABBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCCCCAAAAAAAAAAADDDAAAAAAAAAAAAAAAAAAAAAAAAAA>>EEEEEEEEEEEEEEEEEE>>>FFFFGGG>>>>>>HHHH>>>IIII>>>>>>>JJJJJJJJ>>>>>>KKKK>>LLLL>MMMMMMM>>>>>>>>NNNNNNNN>>>>>>>OOOOO>>>PPPPPPPPPPPPPPPPPPPPPPP>QQQQQQQQQQ>>>>>>>>>>>>RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSRRR>>>TTTTTUUVWXXXXYZZZ[\]\^____^````^a\bb\cccdddd\efggg\h\ijkkkkkklllllmknnnnnokpqpkrsrrtrurvrwrxrykkkjz{j||}~|||||||||||||||||||||||i\\\\\\\\\\spack.cshspack.sh.spackconfig.yamlmodules.yamlspackcompilers.yamlpackages.yamlsbangspackspack-pythonspack-tmpconfigspack.ps1spack_get_libs.shetcspackdefaultsbootstrap.yamlconcretizer.yamlconfig.yamlcraymodules.yamldarwinmodules.yamlpackages.yamllinuxmodules.yamlmirrors.yamlmodules.yamlpackages.yamlrepos.yamlwindowsconfig.yamlpackages.yamlspackenvaoccclangclang++flangarmarmclangarmclang++armflangc++c89c99case-insensitiveCCccccecase-insensitiveCCcrayCCcccraycccrayftnftnclangclangclang++flanggfortrancppf77f90f95fcfjcase-insensitiveFCCfccfrtftngccg++gccgfortraninteliccicpcifortldld.goldld.lldnagnagfornvhpcnvcnvc++nvfortranoneapidpcppicpxicxifxpgipgc++pgccpgfortranrocmccamdclangamdclang++amdflangxlxlcxlc++xlfxlf90xl_rxlc++_rxlc_rxlf90_rxlf_retcspackcompilers.yamlexternal__init__.py_vendoring_pyrsistent_version.py_pyrsistent_version.pyialtgraphaltgraph.pyiDot.pyGraph.pyGraphAlgo.pyGraphStat.pyGraphUtil.pyLICENSEObjectGraph.py__init__.pyattr__init__.py__init__.pyi_cmp.py_cmp.pyi_compat.py_config.py_funcs.py_make.py_next_gen.py_version_info.py_version_info.pyiconverters.pyconverters.pyiexceptions.pyexceptions.pyifilters.pyfilters.pyipy.typedsetters.pysetters.pyivalidators.pyvalidators.pyiattrsLICENSE__init__.py__init__.pyiconverters.pyexceptions.pyfilters.pypy.typedsetters.pyvalidators.pydistroLICENSE__init__.py__main__.pydistro.pypy.typedjinja2LICENSE.rst__init__.py_identifier.pyasync_utils.pybccache.pycompiler.pyconstants.pydebug.pydefaults.pyenvironment.pyexceptions.pyext.pyfilters.pyidtracking.pylexer.pyloaders.pymeta.pynativetypes.pynodes.pyoptimizer.pyparser.pypy.typedruntime.pysandbox.pytests.pyutils.pyvisitor.pyjsonschemajsonschema.pyiCOPYING__init__.py__main__.py_format.py_legacy_validators.py_reflect.py_types.py_utils.py_validators.pybenchmarks__init__.pyissue232.pyjson_schema_test_suite.pycli.pycompat.pyexceptions.pyschemasdraft3.jsondraft4.jsondraft6.jsondraft7.jsontests__init__.py_helpers.py_suite.pytest_cli.pytest_exceptions.pytest_format.pytest_jsonschema_test_suite.pytest_types.pytest_validators.pyvalidators.pymacholibmacholib.pyiLICENSEMachO.pyMachOGraph.pyMachOStandalone.pySymbolTable.py__init__.py__main__.py_cmdline.pydyld.pydylib.pyframework.pyitergraphreport.pymach_o.pymacho_dump.pymacho_find.pymacho_standalone.pyptypes.pyutil.pymarkupsafeLICENSE.rst__init__.py_native.py_speedups.c_speedups.pyipy.typedpyrsistentLICENSE.mit__init__.py__init__.pyi_checked_types.py_field_common.py_helpers.py_immutable.py_pbag.py_pclass.py_pdeque.py_plist.py_pmap.py_precord.py_pset.py_pvector.py_toolz.py_transformations.pypy.typedtyping.pytyping.pyiruamelruamel.pyiruamel.yaml.LICENSEyaml__init__.pyanchor.pycomments.pycompat.pycomposer.pyconfigobjwalker.pyconstructor.pycyaml.pydumper.pyemitter.pyerror.pyevents.pyloader.pymain.pynodes.pyparser.pypy.typedreader.pyrepresenter.pyresolver.pyscalarbool.pyscalarfloat.pyscalarint.pyscalarstring.pyscanner.pyserializer.pytimestamp.pytokens.pyutil.pysixsix.LICENSEsix.py__init__.pyimoves__init__.pyiconfigparser.pyiarchspecCOPYRIGHTLICENSE-APACHELICENSE-MITREADME.md__init__.py__main__.pycli.pycpu__init__.pyalias.pydetect.pymicroarchitecture.pyschema.pyjsonCOPYRIGHTLICENSE-APACHELICENSE-MITNOTICEREADME.mdcpumicroarchitectures.jsonmicroarchitectures_schema.jsonctest_log_parser.pypatchesjsonschema.patchvendor.txtllnl__init__.pypath.pystring.pyurl.pyutil__init__.pyargparsewriter.pyfilesystem.pylang.pylink_tree.pylock.pymultiproc.pysymlink.pytty__init__.pycolify.pycolor.pylog.pypty.pyoptrun-find-external.shspack__init__.pyabi.pyaudit.pybinary_distribution.pybootstrap__init__.py_common.pyconfig.pycore.pyenvironment.pystatus.pybuild_environment.pybuild_systemsREADME-intel.rst__init__.py_checks.pyaspell_dict.pyautotools.pybundle.pycached_cmake.pycmake.pycuda.pygeneric.pygnu.pyintel.pylua.pymakefile.pymaven.pymeson.pymsbuild.pynmake.pyoctave.pyoneapi.pyperl.pypython.pyqmake.pyr.pyracket.pyrocm.pyruby.pyscons.pysip.pysourceforge.pysourceware.pywaf.pyxorg.pybuilder.pycaches.pyci.pyci_needs_workaround.pyci_optimization.pycmd__init__.pyadd.pyarch.pyaudit.pyblame.pybootstrap.pybuild_env.pybuildcache.pycd.pychange.pychecksum.pyci.pyclean.pyclone.pycommands.pycommon__init__.pyarguments.pyconfirmation.pyenv_utility.pycompiler.pycompilers.pyconcretize.pyconfig.pycontainerize.pycreate.pydebug.pydeconcretize.pydependencies.pydependents.pydeprecate.pydev_build.pydevelop.pydiff.pydocs.pyedit.pyenv.pyextensions.pyexternal.pyfetch.pyfind.pygc.pygpg.pygraph.pyhelp.pyinfo.pyinstall.pyinstallerCMakeLists.txtREADME.mdbanner493x58.bmpbundle.wxs.inpatch.xmlspack.wxs.inlicense.pylist.pyload.pylocation.pylog_parse.pymaintainers.pymake_installer.pymark.pymirror.pymodule.pymodules__init__.pylmod.pytcl.pypatch.pypkg.pyproviders.pypydoc.pypython.pyreindex.pyremove.pyrepo.pyresource.pyrestage.pysolve.pyspec.pystage.pystyle.pytags.pytest.pytest_env.pytutorial.pyundevelop.pyuninstall.pyunit_test.pyunload.pyurl.pyverify.pyversions.pyview.pycompiler.pycompilers__init__.pyaocc.pyapple_clang.pyarm.pycce.pyclang.pydpcpp.pyfj.pygcc.pyintel.pymsvc.pynag.pynvhpc.pyoneapi.pypgi.pyrocmcc.pyxl.pyxl_r.pyconcretize.pyconfig.pycontainer__init__.pyimages.jsonimages.pywriters__init__.pydocker.pysingularity.pycontext.pycray_manifest.pydatabase.pydependency.pydeptypes.pydetection__init__.pycommon.pypath.pytest.pydirectives.pydirectory_layout.pyenvironment__init__.pydepfile.pyenvironment.pyshell.pyerror.pyextensions.pyfetch_strategy.pyfilesystem_view.pygraph.pyhash_types.pyhooks__init__.pyabsolutify_elf_sonames.pydrop_redundant_rpaths.pylicensing.pymodule_file_generation.pypermissions_setters.pysbang.pywrite_install_manifest.pyinstall_test.pyinstaller.pymain.pymirror.pymixins.pymodules__init__.pycommon.pylmod.pytcl.pymultimethod.pyoci__init__.pyimage.pyoci.pyopener.pyoperating_systems__init__.py_operating_system.pycray_backend.pycray_frontend.pylinux_distro.pymac_os.pywindows_os.pypackage.pypackage_base.pypackage_prefs.pypackage_test.pyparser.pypatch.pypaths.pyplatforms__init__.py_functions.py_platform.pycray.pydarwin.pylinux.pytest.pywindows.pyprojections.pyprovider_index.pyrelocate.pyrelocate_text.pyrepo.pyreport.pyreporters__init__.pybase.pycdash.pyextract.pyjunit.pyresource.pyrewiring.pyschema__init__.pybootstrap.pybuildcache_spec.pycdash.pyci.pycompilers.pyconcretizer.pyconfig.pycontainer.pycray_manifest.pydatabase_index.pydefinitions.pyenv.pyenvironment.pygitlab_ci.pymerged.pymirrors.pymodules.pypackages.pyprojections.pyrepos.pyspec.pyupstreams.pysolver__init__.pyasp.pyconcretize.lpcounter.pydisplay.lperror_messages.lpheuristic.lpheuristic_separate.lpos_compatibility.lpwhen_possible.lpspec.pyspec_list.pystage.pystore.pysubprocess_context.pytag.pytarget.pytengine.pytraverse.pyurl.pyuser_environment.pyutil__init__.pyclasses.pycompression.pycpus.pycrypto.pydebug.pyeditor.pyelf.pyenvironment.pyexecutable.pyfile_cache.pyfile_permissions.pyformat.pygcs.pygit.pygpg.pyhash.pyld_so_conf.pylock.pylog_parse.pymodule_cmd.pynaming.pypackage_hash.pyparallel.pypath.pypattern.pyprefix.pys3.pyspack_json.pyspack_yaml.pytimer.pyunparseLICENSE__init__.pyunparser.pyurl.pyweb.pywindows_registry.pyvariant.pyverify.pyversion__init__.pycommon.pygit_ref_lookup.pylookup.pyversion_types.pyspack_installable__init__.pymain.pysystem-group-spack.confspackCHANGELOG.mdNOTICEREADME.SUSEREADME.mdspackCOPYRIGHTLICENSE-APACHELICENSE-MITspackbashspack-completion.bashbootstrapgithub-actions-v0.4clingo.jsongnupg.jsonmetadata.yamlpatchelf.jsongithub-actions-v0.5clingo.jsongnupg.jsonmetadata.yamlpatchelf.jsonspack-installmetadata.yamlcshpathadd.cshspack.cshdockerentrypoint.bashmodules.yamlpackage-indexDockerfileREADME.rstcors-header.confsplit.shdocsdockermodule-file-tutorialDockerfilepackages.yamlspack.shfishspack-completion.fishgitlabcloud_pipelinesconfigscdash.yamlci.yamlconcretizer.yamlconfig.yamlcopy-only-protected-mirrors.yaml.incray-rhelci.yamlcompilers.yamlconfig.yamlpackages.yamlzen4ci.yamlcray-slesci.yamlcompilers.yamlconfig.yamlpackages.yamlzen4ci.yamldarwinaarch64config.yamlci.yamllinuxaarch64ci.yamlci.yamlicelakeci.yamlneoverse_n1ci.yamlneoverse_v1ci.yamlppc64leci.yamlskylake_avx512ci.yamlx86_64_v3ci.yamlmulti-src-mirrors.yaml.insingle-src-pr-mirrors.yaml.insingle-src-protected-mirrors.yaml.inscriptscommonaggregate_package_logs.spack.pystacksaws-iscaws-isc-aarch64spack.yamlspack.yamlaws-pcluster-icelakespack.yamlaws-pcluster-neoverse_n1spack.yamlaws-pcluster-neoverse_v1spack.yamlaws-pcluster-skylakespack.yamlbuild_systemsspack.yamldata-vis-sdkspack.yamldeprecatedspack.yamle4se4s-cray-rhelspack.yamle4s-cray-slesspack.yamle4s-neoverse_v1spack.yamle4s-oneapispack.yamle4s-powerspack.yamle4s-rocm-externalspack.yamlspack.yamlgpu-testsspack.yamlml-darwin-aarch64-mpsspack.yamlml-linux-x86_64-cpuspack.yamlml-linux-x86_64-cudaspack.yamlml-linux-x86_64-rocmspack.yamlradiussradiuss-awsradiuss-aws-aarch64spack.yamlspack.yamlspack.yamltutorialspack.yamlnersc_pipeline.ymlkeystutorial.publibspackmodulessetup-env.cshsetup-env.fishsetup-env.ps1setup-env.shspack-completion.bashspack-completion.fishtemplatesbootstrapspack.yamlcontainerDockerfilealmalinux_8.dockerfilealmalinux_9.dockerfilealpine_3.dockerfileamazonlinux_2.dockerfilebootstrap-base.dockerfilecentos_7.dockerfilecentos_stream.dockerfilecuda_11_2_1.dockerfilefedora_37.dockerfilefedora_38.dockerfileleap-15.dockerfilerockylinux_8.dockerfilerockylinux_9.dockerfilesingularity.defubuntu_1804.dockerfileubuntu_2004.dockerfileubuntu_2204.dockerfiledepfileMakefilemiscbuildcache_index.htmlgraph.dotmock-repositorypackage.pytmodulesmodulefile.luamodulefile.tclreportscdashBuild.xmlConfigure.xmlSite.xmlTest.xmlTesting.xmlUpdate.xmljunit.xmlspackspackcachegpgREADME.mdjunit-report/etc/profile.d//etc/skel//etc/skel/.spack//etc//etc/spack//usr/bin//usr//usr/etc//usr/etc/spack//usr/etc/spack/defaults//usr/etc/spack/defaults/cray//usr/etc/spack/defaults/darwin//usr/etc/spack/defaults/linux//usr/etc/spack/defaults/windows//usr/lib//usr/lib/spack//usr/lib/spack/env//usr/lib/spack/env/aocc//usr/lib/spack/env/arm//usr/lib/spack/env/case-insensitive//usr/lib/spack/env/cce//usr/lib/spack/env/cce/case-insensitive//usr/lib/spack/env/clang//usr/lib/spack/env/fj//usr/lib/spack/env/fj/case-insensitive//usr/lib/spack/env/gcc//usr/lib/spack/env/intel//usr/lib/spack/env/nag//usr/lib/spack/env/nvhpc//usr/lib/spack/env/oneapi//usr/lib/spack/env/pgi//usr/lib/spack/env/rocmcc//usr/lib/spack/env/xl//usr/lib/spack/env/xl_r//usr/lib/spack/etc//usr/lib/spack/etc/spack//usr/lib/spack/external//usr/lib/spack/external/_vendoring//usr/lib/spack/external/_vendoring/altgraph//usr/lib/spack/external/_vendoring/attr//usr/lib/spack/external/_vendoring/attrs//usr/lib/spack/external/_vendoring/distro//usr/lib/spack/external/_vendoring/jinja2//usr/lib/spack/external/_vendoring/jsonschema//usr/lib/spack/external/_vendoring/jsonschema/benchmarks//usr/lib/spack/external/_vendoring/jsonschema/schemas//usr/lib/spack/external/_vendoring/jsonschema/tests//usr/lib/spack/external/_vendoring/macholib//usr/lib/spack/external/_vendoring/markupsafe//usr/lib/spack/external/_vendoring/pyrsistent//usr/lib/spack/external/_vendoring/ruamel//usr/lib/spack/external/_vendoring/ruamel/yaml//usr/lib/spack/external/_vendoring/six//usr/lib/spack/external/_vendoring/six/moves//usr/lib/spack/external/archspec//usr/lib/spack/external/archspec/cpu//usr/lib/spack/external/archspec/json//usr/lib/spack/external/archspec/json/cpu//usr/lib/spack/external/patches//usr/lib/spack/llnl//usr/lib/spack/llnl/util//usr/lib/spack/llnl/util/tty//usr/lib/spack/spack//usr/lib/spack/spack/bootstrap//usr/lib/spack/spack/build_systems//usr/lib/spack/spack/cmd//usr/lib/spack/spack/cmd/common//usr/lib/spack/spack/cmd/installer//usr/lib/spack/spack/cmd/modules//usr/lib/spack/spack/compilers//usr/lib/spack/spack/container//usr/lib/spack/spack/container/writers//usr/lib/spack/spack/detection//usr/lib/spack/spack/environment//usr/lib/spack/spack/hooks//usr/lib/spack/spack/modules//usr/lib/spack/spack/oci//usr/lib/spack/spack/operating_systems//usr/lib/spack/spack/platforms//usr/lib/spack/spack/reporters//usr/lib/spack/spack/schema//usr/lib/spack/spack/solver//usr/lib/spack/spack/util//usr/lib/spack/spack/util/unparse//usr/lib/spack/spack/version//usr/lib/spack/spack_installable//usr/lib/sysusers.d//usr/share/doc/packages//usr/share/doc/packages/spack//usr/share/licenses//usr/share/licenses/spack//usr/share//usr/share/spack//usr/share/spack/bash//usr/share/spack/bootstrap//usr/share/spack/bootstrap/github-actions-v0.4//usr/share/spack/bootstrap/github-actions-v0.5//usr/share/spack/bootstrap/spack-install//usr/share/spack/csh//usr/share/spack/docker//usr/share/spack/docker/package-index//usr/share/spack/docs//usr/share/spack/docs/docker//usr/share/spack/docs/docker/module-file-tutorial//usr/share/spack/fish//usr/share/spack/gitlab//usr/share/spack/gitlab/cloud_pipelines//usr/share/spack/gitlab/cloud_pipelines/configs//usr/share/spack/gitlab/cloud_pipelines/configs/cray-rhel//usr/share/spack/gitlab/cloud_pipelines/configs/cray-rhel/zen4//usr/share/spack/gitlab/cloud_pipelines/configs/cray-sles//usr/share/spack/gitlab/cloud_pipelines/configs/cray-sles/zen4//usr/share/spack/gitlab/cloud_pipelines/configs/darwin//usr/share/spack/gitlab/cloud_pipelines/configs/darwin/aarch64//usr/share/spack/gitlab/cloud_pipelines/configs/linux//usr/share/spack/gitlab/cloud_pipelines/configs/linux/aarch64//usr/share/spack/gitlab/cloud_pipelines/configs/linux/icelake//usr/share/spack/gitlab/cloud_pipelines/configs/linux/neoverse_n1//usr/share/spack/gitlab/cloud_pipelines/configs/linux/neoverse_v1//usr/share/spack/gitlab/cloud_pipelines/configs/linux/ppc64le//usr/share/spack/gitlab/cloud_pipelines/configs/linux/skylake_avx512//usr/share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v3//usr/share/spack/gitlab/cloud_pipelines/scripts//usr/share/spack/gitlab/cloud_pipelines/scripts/common//usr/share/spack/gitlab/cloud_pipelines/stacks//usr/share/spack/gitlab/cloud_pipelines/stacks/aws-isc-aarch64//usr/share/spack/gitlab/cloud_pipelines/stacks/aws-isc//usr/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-icelake//usr/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-neoverse_n1//usr/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-neoverse_v1//usr/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-skylake//usr/share/spack/gitlab/cloud_pipelines/stacks/build_systems//usr/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk//usr/share/spack/gitlab/cloud_pipelines/stacks/deprecated//usr/share/spack/gitlab/cloud_pipelines/stacks/e4s-cray-rhel//usr/share/spack/gitlab/cloud_pipelines/stacks/e4s-cray-sles//usr/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1//usr/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi//usr/share/spack/gitlab/cloud_pipelines/stacks/e4s-power//usr/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external//usr/share/spack/gitlab/cloud_pipelines/stacks/e4s//usr/share/spack/gitlab/cloud_pipelines/stacks/gpu-tests//usr/share/spack/gitlab/cloud_pipelines/stacks/ml-darwin-aarch64-mps//usr/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-x86_64-cpu//usr/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-x86_64-cuda//usr/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-x86_64-rocm//usr/share/spack/gitlab/cloud_pipelines/stacks/radiuss-aws-aarch64//usr/share/spack/gitlab/cloud_pipelines/stacks/radiuss-aws//usr/share/spack/gitlab/cloud_pipelines/stacks/radiuss//usr/share/spack/gitlab/cloud_pipelines/stacks/tutorial//usr/share/spack/keys//usr/share/spack/lib//usr/share/spack/templates//usr/share/spack/templates/bootstrap//usr/share/spack/templates/container//usr/share/spack/templates/depfile//usr/share/spack/templates/misc//usr/share/spack/templates/mock-repository//usr/share/spack/templates/modules//usr/share/spack/templates/reports//usr/share/spack/templates/reports/cdash//var/cache//var/lib//var/lib/spack//var/lib/spack/gpg/-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:33007/SUSE_SLE-15-SP4_Update/d0674b39cf8259f5c82d6ea0364193a7-spack.SUSE_SLE-15-SP4_Updatedrpmxz5noarch-suse-linux                  ASCII textdirectorycannot open `/home/abuild/rpmbuild/BUILDROOT/spack-0.21.2-150400.15.2.x86_64/etc/spack/compilers.yaml' (No such file or directory)cannot open `/home/abuild/rpmbuild/BUILDROOT/spack-0.21.2-150400.15.2.x86_64/etc/spack/packages.yaml' (No such file or directory)POSIX shell script, ASCII text executableBourne-Again shell script, ASCII text executablePython script, ASCII text executable, with no line terminatorsPython script, ASCII text executableemptyUTF-8 Unicode text, with very long linesPython script, UTF-8 Unicode text executableC source, ASCII textUTF-8 Unicode textunified diff output, ASCII textUTF-8 Unicode (with BOM) textXML 1.0 document, ASCII textXML 1.0 document, UTF-8 Unicode (with BOM) textASCII text, with very long linesa /usr/bin/env spack-python script, ASCII text executableHTML document, ASCII text RRRRRRRPRRϺ.[`1ڹautoconfbashbisonbzip2ccachecmake-fullcpiodiffutilsfindutilsflexgccgcc-c++gcc-fortrangit-lfsinfolibcurl-devellibopenssl-devellibtoollibzip-devellua-lmodm4makemakeinfoncurses-develpatchelfperl-basepkg-configpkgconfpython3-basetarxzxz-develutf-8507e68b9550dc95844d42db48ae4179ba3d1bf46dc529868e4d44182f293426e?P7zXZ !t/J"]"k%n$9<7 IXDRHgיC0L}| ÿ7̴bw`٭FzZuwD俼{tp0ϦgH8kf kSFu6MPL/CEXJM( ־4bJ5rJؐ\⮷\Jfh8KOnajDtE]+V>tv ;LPpAGq)Q!b nj:v[uKPt )NsZ (Pʱ IGw|.R5k%\*`؄仳`ICA0N&ㆂ~zv1OTt!~y-3EV' .%>^͕0jt:iy⢇ 朎2z҈Ǣ cRSp!2 ~#KVy5H(u@6TshVf`B1Ȋ|}Uf``0IL:O\m"1"B,R7*^/;wU07jF:7$!3寏@{zW9|۽~xaFscԳxr>HrUF>՛!DZ`S9FM4N+3 D`cJno([r'\ԮG'Ia߀21E}4ո_3y6C9j0[tE@0y< "7CX$: K*"a0 Mo(xyu)ƒ d7ݢh()E&cЄR/|Hkʔ/\)7/ ht& ٢¤D]C:|D;\[ϠFU_<]@Bl{ rR+­@j*:w>)mC\?tЈa>nx@1n"SΉyvf\[R^ֳCC K(]o>Px ;{DHrlEjO\#;6l8,v1ӑy6er۬pq'Xkle-VfCZi *"9rcҲalYc=rP[A< `9seQ/1N\pHq@r$Wkе:`}2XbFkPྚ2<\pܯ]+}@vJZAvM-ۺiֺ^:bM`3?ׂ^:wB#!>,%)R1˚m{bj%FaTTZ2 H3]!"Yq"Zohwnrپ̕A/6F+|vj,g@t5EJ MD %LO7#Z_N>oΔNJ#P+ր=/;bm" ׊G-M.wG8S9!+dQYUߪY $hL,BAƕZC -=[AIs$/.nŽ56HhѢ̃;kٮLdiO.!SɌiO9F*V ;}M= ZIT-uulϱ.(~|Ǡpa}SJb'7%}:XT9FJ&9DΫu4t~Ag?NA37~VW۬}9]eGyrs}grL$.A)mں'Z gNL<[mj`-3CO={VV%3;SjU ._7sh9%}`g#1XPyj EgTzڒ+Ȃua{f vtHDy4%N:t;UdMS ? cS-]BW)ܺU<`]a}G&@1F@@+_g>~q jSO7 _Wq>)ss$F;I%ApX+)e;-O|&ҺϛK.<6XDgېQd|9QA-6!TIv2Us:!JWH^RKT WDG1p+qo7כSIM/o9B:̽E<_utLIhQ@wS'L4b}k)v_+BjYAR-Lpu/5i&dz{mKVrCP zβ. U5;06@!A2(-[^rEPcba7J`8V_[,Z 'aԹv񫲉9j[dZB~zypd՘(4Q.@y'fաeoӖ` ыg^ePSihTd3U2t)MNCGUA22 !q:6_pk{%juˀe4X֥@x1R': P!etzCa3sZ'|jSmz=EQrUڮ/7n5"{RѸB jgǗ*Sʸ';6SO,yL4_B1#,46hc'Yp70)Im]BNxʖUoy[v  G() Tis^~M^0TԫiJ>VDNWUKmR'9{%<[/3(C޳l8%wx΋ث?[a8c&=PSVGTK21Nhbǂi/?|z2澸LK]˒7F0ЀXv~8e_cp9B6F-)V:˳I@*`[Ss2,WCZQp`@vSX[FS{o$NH+#N}Ep"TPK'vA&\Np+ʃJh8aDcETՕN}#iF>Kd)>Z!iL?eFWbt:YneƮ;l{MI5}`APMTi`Dclxd٥{pMH{/Xv"lR1g"6(fC ;;+Tc^r`q 05_T@ 6u;N;`4iJ)YNEVrXR (Ծds SXt&/*C2'pkm5ܮ8VsG.y7a#[$nN$1I&;j4tV( e^GYvsXlC0}9qc8i+=) H;Mn#LL{UȏlZ5_H6~I^D #iA?VnFGa/LMHbS';+Xd"-ޕLKA^ IQa@^UBAsÌ3Qe"޷@ux16yɫksL)g]<^$ee zx`3ꡠEQw"e멗@%Ε{}a#†KM$v1uY>f Ci4t .Aa,is4W6Dh"T˾/pAYOzLUېm-UR@zwGx2\4KJOJC8]m:i7 VH{&*!_X =Axr`%s@g`FsBd_~m/:1\KB%q4Rkٍ U[iQՋٰGE'Բ4Hx)P#t*=tJnpgj}K;e{v--j:TMԄG O`IJ8LߒD뫮usLYvmtk}n| /^\C^Ս7^eEG'ﺹ5맪Q{We 3/=*LP__9uF1h0YwR9tgD$)<b]ðFx?8VF3UպgjpiK fM$;Ld }Im[~mxqq;DV_flA)=_w 'n+a"犈q|ԘMPpØgggC꘹ YU}Dl Ww0mmÂrTW/]-L>7 p@=kAkvX|DM~"eFo Q!d.e>kum M=YHD Ey쨊;R4FIiV7 Ƿ|nŵ@OzZ# kFnT#<^_"m ⯕XCoF[Ru֑Y4j7Pˋ>y刕]򏚑  (eP̈́翆KXǻ|b.fV$ɓ+KQ0`X4ak/ήUVF/u B`>[ .*1XY,K&gegRdm`w)ޓ  -mB G !砖K`\<]NıbaW10Lsv 6#q' ڛqO#XP6`|(՛q|DzytuzzHn;W. Z=L!3}RWWGWjXO/@ UYbenGywˎ?$Zm) r-_ɋdj`Y?"l:1< aJ}~^gI,}rjQODf1_}/9BB:5_ $n@BN7^ܸH|CMզýہ^fLF˙V YZ