From b99fac3425a9c903ce7f1303439dab3447c99a03 Mon Sep 17 00:00:00 2001 From: Duncaen Date: Tue, 20 Feb 2024 23:24:44 +0100 Subject: [PATCH 1/2] firefox: update to 123.0. --- srcpkgs/firefox/patches/musl-use-res_query.patch | 11 +++++++++++ srcpkgs/firefox/template | 16 ++-------------- 2 files changed, 13 insertions(+), 14 deletions(-) create mode 100644 srcpkgs/firefox/patches/musl-use-res_query.patch diff --git a/srcpkgs/firefox/patches/musl-use-res_query.patch b/srcpkgs/firefox/patches/musl-use-res_query.patch new file mode 100644 index 00000000000000..77924d4d2abb4a --- /dev/null +++ b/srcpkgs/firefox/patches/musl-use-res_query.patch @@ -0,0 +1,11 @@ +--- a/netwerk/dns/PlatformDNSUnix.cpp ++++ b/netwerk/dns/PlatformDNSUnix.cpp +@@ -32,7 +32,7 @@ + rv = packet.FillBuffer( + [&](unsigned char response[DNSPacket::MAX_SIZE]) -> int { + int len = 0; +-#if defined(XP_LINUX) ++#if defined(XP_LINUX) && defined(__GLIBC__) + len = res_nquery(&_res, host.get(), ns_c_in, + nsIDNSService::RESOLVE_TYPE_HTTPSSVC, response, + DNSPacket::MAX_SIZE); diff --git a/srcpkgs/firefox/template b/srcpkgs/firefox/template index 0cca0ac17ab3f8..200ab3dcf4a77b 100644 --- a/srcpkgs/firefox/template +++ b/srcpkgs/firefox/template @@ -3,7 +3,7 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-i18n". # pkgname=firefox -version=122.0 +version=123.0 revision=1 build_helper="rust" short_desc="Mozilla Firefox web browser" @@ -11,7 +11,7 @@ maintainer="Duncaen " license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later" homepage="https://www.mozilla.org/firefox/" distfiles="${MOZILLA_SITE}/firefox/releases/${version/beta/b}/source/firefox-${version/beta/b}.source.tar.xz" -checksum=b84815a90e147965e4c0b50599c85b1022ab0fce42105e5ef45c630dcca5dec3 +checksum=9e885abdaddb14cd4f313c1575282fec6af5901f445e9744fe24e2ea837d4cb7 lib32disabled=yes @@ -79,11 +79,7 @@ do_build() { #!/bin/sh exec clang \ --target="${XBPS_CROSS_TRIPLET}" \ - --gcc-toolchain=/usr \ --sysroot="${XBPS_CROSS_BASE}" \ - -nostdinc \ - -isystem "${XBPS_CROSS_BASE}/usr/include" \ - -isystem "/usr/lib/clang/${clang_version}/include" \ "\$@" ! @@ -91,15 +87,7 @@ do_build() { #!/bin/sh exec clang++ \ --target="${XBPS_CROSS_TRIPLET}" \ - --gcc-toolchain=/usr \ --sysroot="${XBPS_CROSS_BASE}" \ - -nostdinc++ \ - -isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}" \ - -isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}" \ - -isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward" \ - -nostdinc \ - -isystem "${XBPS_CROSS_BASE}/usr/include" \ - -isystem "/usr/lib/clang/${clang_version}/include" \ "\$@" ! From d0b5261996776fcfe214ebe2b6e49cdf4058ae5e Mon Sep 17 00:00:00 2001 From: Duncaen Date: Wed, 21 Feb 2024 01:50:18 +0100 Subject: [PATCH 2/2] firefox-i18n: update to 124.0. --- srcpkgs/firefox-i18n/template | 194 +++++++++++++++++----------------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/srcpkgs/firefox-i18n/template b/srcpkgs/firefox-i18n/template index 741b3673648302..fab3cbf00bcdaa 100644 --- a/srcpkgs/firefox-i18n/template +++ b/srcpkgs/firefox-i18n/template @@ -1,6 +1,6 @@ # Template file for 'firefox-i18n' pkgname=firefox-i18n -version=122.0 +version=124.0 revision=1 build_style=meta short_desc="Firefox language packs" @@ -140,99 +140,99 @@ _pkgtmpl() { } } -checksum="7a52ddcf9f7844901ce5d7e37b39b88bf0b9c34a634b3a9178050e9223106d7d - 731badd192ca03491c943b139b75776a15446cd2afe4b4de9281069f9e83f9ed - dce591111c48cf51a7e76762dd45fd141d4a10a864c9ff776b2166aebea33730 - 24210b1d7f52d86257f809b6b901353750434ccd6dcb781606e934d6e464257c - 29fedd9730af1a9cd5b7b3b5f1016599cb8909aaa8171cb27a20e020ef9263ad - e56a528f87f2f9a08eed8da511ef55f375175157e20ce3ce5f2835f146d5147c - 6e27804ec2465ad3ede8d9d3af804a5ce9ac9c6ecb9f3aa8aaef20912b88f393 - f918456bb3e63edb2d67692fad9d3bd7132413591e2d015e7cfb00d3ee6f2925 - 6946d2d2bfb5fbd49f58f805d2e26119ede5684db9697e60a34b701c20bca435 - 23a683ca1c9e98cef78a0b7ad3d237b0926b8d242aace28896669ecbb7d0d696 - bba26d0f59a8ba6f5940f195901862d28d7af249ad898639532fe6be40773f0b - ec152ca87745fe4c38f642dd0c918b2543c99189f1fa6688723625bae1174ac1 - 4ceeca21bbff18af20438390f716ec39178dc52e5761621f4e123712f548b0e1 - 228596f4677edaa0547283b9aced056bf9fd87e95acf678a40ec57ab59943081 - df39312fc4a9ad23533d4ef8227ed950361e840bca7dfbc1b6ce84fe1c02008d - ae7150d67cf950286cfbb63d145b125b9faed23e93ac37ffc074b76642253d00 - c3d8e612a21ee5d350b70882f7ed45a03440f5c0efef3b351912f0230e8cd7bb - 56143364b4ed78d0c845029ec7892ba2de7a6e4a62bb12af1c5423de2ab1bf16 - 05c6a971317913b6cc640abf79470f5c8f9077c2013ab8995e1c14d31201ead2 - f31cac5fcca307372694340b83dd3fd5ab208d1797f34ac35f0b301c787706cb - c41b223aea5d3095fa37ac5728f4df501c8e0cc20aaa4cda6c8b7b7a26fd656b - 8ec2c95919963ed1e05be1ec5df06ab426377581972557cf95963f1193dc5550 - ff394b29dd289be386000998afcb5a0ee51eb719d57aedd09b785fd83c57b5ac - a144069ecbfe41de98a94481b028b9979be54444120bbbfe337bab5a06b4a1b2 - 40e6604d033773528d58ee36014cfac563501385a063a2596116c122f13142b5 - cb3ee1f9db495edb8649ad7574bef2c22f31fcae41e05b3fdda05deddee059b6 - fd16a0fb166d3f4a55acbba3e17977303e12ddfe1809d28aa402ea9df6bc8825 - 79a4dc427c79cca32241ba7ff7dce054f5638375ea2e6b40fa7061e5a0cf0232 - daca13add5fe804870ef50e4fdd204f0323406fa5602bab8ad526d8bf0906d37 - 709a1f6d4ad462c538e181dfc5bb9dd6f68fdf657140d2f7e53d56a7d1eabed3 - 0c43f42d259f879ed55a5590d6325e0735f284bbcf94ac63687334f8bd4a22f1 - 064c1405b47cd84236b62968a0fe387cd0581408e9c0e20fdbd28d18938d77af - c8833d38c797e8337db09f2b1974d248adc8b21294f02f3eef7c6c6d43e73a0e - a168b9de05d45c7191e1b0bbe1a8d5f2fc66eafe46b0a36062a0f3b5ff6e2351 - 9a79d3be6b07c631b21e7d461df7a7bd5f5a65b369ae6aae5e2e7e0b9d41caba - 66706affe9976b3e7624d72a6115209a8a02c5d4d0f1b7fa880a575154cf7c32 - a09928565b5206269c921366b62252aab661c147367bfa24a7bdf8e57c25c4f6 - 886261cff47f2ae729dfdd0faef1fb954ee1dba6ba2b40b90fbc852a37fd75c6 - 1bff8d613af78186d38a22eb30807d4b320d2949cb2c45dad64a5dd660b2e8f7 - d6325321e8205e86231201af5dd5fd2dfc4cf8cc6446530d61189dcd44dbad68 - 570362ac385c1363cde53cf3f50b0ba77eb7bcd804934ee53da0c64b8cffc962 - 72aaf0a80a0d213817b27c02df29e872fed4f3a57a34e25d44deff19386479dd - 6599850c9b0f7ce7ad0df271fbda4cc822a6142fea132d4c6c33eafd3655d7f8 - 38d3fa07b6c2926c2d98869c7a552bdf9d64f9469cb753e5c3572b7755006561 - 74bddae4786492a0a2ebbc2e4b64ffbe5700169ecb26451d9c0d2f88d02028de - 9d6d0b17ca70c239f5cccea7f4883331b5602458c27736fc7885a409d3cd404c - d4e9ba09085f34b8613c73b91f80833b5946b34933311125fd8669e31bb86f38 - 4f925e77b29e48504d132b04bd97e12b01bbfa0bd587fb7349a8d002135454b2 - 309277850e076f5cdbeb55d8a0a7e26b8fa376c9e2bb4d9aacbda79de8fa0f57 - b0a5280b814d031d7bf8cc60e59198f04c0ec30c120bc56fea4d6df02e4fdd47 - 9b373a8a7b9f2f701494720c28292e8cf16d40344db4b5dd7709b5bc142c3b79 - 0c50e9c667e67904067a81954d511912002bb2dd5496b44c0beb28055d809217 - 4e1e393e2b9f495256123d9d4214f2e4a7a9a8957acd6e66c916f6ee9388b2d2 - ee658672982805af842a6a3efa769fe4809a77ea1e99c3093f986cf117d86026 - 9d5f7b1c43588a48c9628ad1e1089fd89343a51b8f288a7054b25bf7cdc03bff - 39b93546498cd2c0f84329702747319e03732a7b24ded64e5b9af6202e36b556 - 7619e97fd56791bcc67ac64396fdb4ef46193cacffbe342f164bc835e4af7851 - 03351c06921edc5df7b4ba299949f6146aeabfc93ab2d573c5fe64ed9963f6de - d143b693ab4e226e45f78efeca16ed4c330eff1769143ea12c49478126b11302 - ced332eb16fb363539cffe3779c15d4de1fd6b4769d2c4ec8d7f7ce07d06e09f - 97cb5f8cae2f37a62b0099531c13a79bb4fa364f59f9ebece8b9a89747c4025d - 8bd25447406b43e05aec3e04332ec92fab82afcf0783c9c1d78e4f6bbd01e7f8 - d78469cb961b3fe805e528dc4bfa3f37d942f41fbc1c8920b51ea9f343394981 - a0dfa74bf30a668bf2b7e415e89bcac7b6e90c29da4a51d3b3a4bde0008247dc - 3b0fce1811d387e739c09779c0afd942aa141ca360a540e7e92a3e634a43280c - 1141d87e7fa024e93f24d612136f1eb7c263ff94f74c560a3474f279c4f5181e - b7c511db99ee2c8bb65f444f0dc511f665750850e7bf4ac1d6a220a6e6bd9d3d - c923e81bc688cfc7e342adad4af2d5b1e6564e8b5198078f0ecd237070fbd0cf - 672ff11a03da1b1a3a4f28c33e13eb13c7e77ecf8b25227992c5fb6d4415be9f - 2ce14b314d926d0b402cca18612bbe30965042b360bb296b27d95f20c654132b - e997fa27c70819e7dacc2eb63f6344951f52d52e93c15fbef3c3f5a85575d333 - 2c3ccc7e006f7b08f50ed417d97077b09d996b9c240a4d0ee8ac7d7294df58bf - e1add0ec4d24b29f29b27e022dafe396eba31f289832ec55de4c21514fe77123 - b6f8f47602d1bd53ee5b4a3d52e3fde0bc2987c2428a464bba39a433334c914a - 4feb3ac6a4761f276c84024cebe85e0dfe751e361128a6f669ba5ef1e1f4ba33 - d9ba861d3fae6dd0fb3d8f376ca33588f5b3b89504a500a5a8611e1af47158ee - e5f37a39e77f748ddf23ce936f66a671734f6f8445ba38b27e627ad1024ed31d - 598b5e20bcf031c5c1b722c35b00062da28cd0c7e4cd5d9322664e5fb4037211 - 9004ab70abacba88929739dd17fba3fd5d17061073e41a5dd1f000a90ab3cfa1 - c515afb29689cd65be4c66f290402b50d2690aa0c5415a255e3368def346d9b4 - 9edc26a66e9ea8a691c92d59f8d5a6bab4b2c0076209e0517413e089e379f6eb - 5aa26603bab2e0e10fa16f5f4f592006d221953b4fd3c584bd393a75b171c7fc - 6c18bb613bdf4ae7bdd14a3c9c86c05291361d6ab2f8bc4f34b0038913c4b2b2 - 8219cee932ba22e2ffabdf0eb19a51b8e6c6f88d627efbf3065b6d8c6dcf5f4c - 1c4b7adfa36e61e261bd7d5aa86210e7ba75ffbcbfb550ac9c75b3335c0cf985 - ec1be579658fbd36fdbf162948e3d3e5b5294dcd5b0c6e30f940bbae609e10b8 - c462278e7b9dd328eaa842a2f31d836a95100165cb8ab83fbdf1d2c1d962d48f - cd109fef4a79659eb96abaf33c9631701d3623010f01f8793a228f267768dda6 - d881fcc44d76eb166411cd7147c9f70f677443b83fb4dcfa951aebc2a551dc74 - 494615dabdcb60aca1617f743b1641a9744afb706e99e36ab2f54278a8d559ba - d16646f7043c352ce235099605b7b0facd141ce9832ef1e1f92163e1d934481b - b4ceae7024b0c12f96e38c07d013f8a6cfb52b0680034798b348b6802ae6114b - 5f1642b2d456a3b7eec15308bff44e551daf93e090e30017a4d7bed31c12aeb6 - aee78ab52d607b5381aeef1dbe8a0d6eeaab6f08699330502aa5db42eb64435f - 84a96793392968572f8d962f1a80dc35c70b9751c87c55840ed2577d378ffc9f - aaf02f453474a4055b5be10f53463007fc392499af131539efddefce39255d81" +checksum="b0be6e70bcce5301b6e8e0c411f484084363629cccd3218f1ee93ebfc16c9d2e + 9f059b90ed93c6a62ea03f0cd4081ee7b7f62ba24c5d17b7f02dafedb12afc05 + 4a17bc2781265e1aeb96bafad1884ae26ad9578d212f3a707496823a0da5fde2 + 5c6e624d9b2874346e75a19821848023f9a3e7ae4ff8ab8559de8961341fa446 + 2e842a0bad784802190ff1f3cb093a494840a4968599e2d57e5e4a13e01ea59d + 9c8bc2cda53723a8b3b5439b8b9271aa00aa985f3ae76b27f21149953ef1f734 + fdb156eea137104113bb1bb3f7cf2eddae6e914a83a8157ea5e7731783fba173 + 4e66d284ece290e1aae876225a297afe01561c0b150b2db6c5d7efbfbe21ddfd + 2a38998b5d92b6fa0e87938fdeadd066fc34e21ebbb74b9171ee4e3e1afb226f + 5a7d34d4c4010b2164cc214550dc5e259424e035debb1884fcbdb702ce7048dd + d40497e45e1638681b2969b786378bb09a901407298b0c505cb30db586a164ff + 0a4ac9b1860361fb3535b6fc61697ba597656d2c69a326876f4398b5d06e1970 + 74a1f5581725f7cbf20d2e91d6764a541dee267be8de657e049835931dc4029d + 004ed24ac5ef010a5901e6fd909c52a6695b7ca18f148d9acb6748dcfd88764e + bf14ed0ee9e3b888e2a5b0a439617a804612f923e443112f73072deb656efa83 + 6f9ebef63f72d16584486a04e14f26b78c5a824680bbe730be7f9780493891fa + f7fa56c809883bb100f538c1d215d9758a97137f5f51878ab7e721ee46f2c511 + cd238b5ba214c2f24c6c5900d7112bf8c8e725c31832666ce3bb32ab45f3ce89 + c72bcb83fe502fdd686dacfea2e3d335a04b6bb515859fbd46c6f39ae4eb98b7 + 3d5974dde34507482fd3d449c42b67bb97c95ae5461bc1e3e104532e6dbe0b3f + 849da15263c541dddef1ca84fa999fb0d5f5f0757ae3239d88c6f105b1f9e00c + 043d09d036a8eda957265ccd8ea18e7aa611eaef782bd4c7cbf9300670711f7f + 5064be6a8389c216a0d08b879f0db13242bae81831abbefd2166387ff191eae8 + 076f057bedec5b161c98b5a25a05488663e6cb03414219546ea1431d1074eb13 + 79a80bd54aee9024a78be45cb3644d33cf9eadffe0fb56a9f85e402b001d040c + 16e86b6c1942650877334b4e8afab659a20736430746c972ed34f7af905cc1e8 + c99f760aebcf5aa1dbddb0a04e302893d4676261d508b4c0010652616208a4c7 + bf9968dc0fdff891f1890760597b05f127ce20fcab0c6b5829239cf6d81e63ef + 432d5e2bb16c1836cb3772fe5091940a2d9da2da80d9a4ad7a2109ad8982e97f + 8a40539e9e2cbe32952454ca8437f3b673587dda02113e270fc42c5717cf2480 + 0ded781ddb8cfa467a97b2cc5e375f52ca6b2193296850ef6fc4b4e491db791e + e842022d841de0c34219e9904cd19f8487fbdecfcc29ed550303e343f9bdf8d3 + 1044a753fec1da3613ea68fc5e6abf439c9d347789f35ea96209cc9fd971586a + aae46c8bd024d3c02f07866a39183c7be753d5abab6e9a523f74876fa043014d + 8e1975b895019c8081c2835a746b42f8e49c114e0e59d80cac009e0c2dd8397c + 9f28c9e1bb3c30775a9d8c7ea4c470788e0c96d2f055a2a144cb84fb0c8ade8b + 4a3e5bcb7611a0945ec0e340551aba977dead65fbdb08f87a534b5b06d297c45 + 5e16dc1b317b109187cc05ca5864c321439f813f0cdaff7aedce9bd37cdea8af + 377dca9b919987bf14bd1ace28d4b16eb2db9b89a55f1b012dca19507e5e8f1b + 528776de27b40b01e2d46e83c8cceb1b815609fe80ccac44817e712c123fad1e + 3f5bf3da618265baadadc8823759276c0dd88a3f6a5e2ef4d1d2a8533a116e20 + b58f36f83b3f163076ea2aedc98a484d573f59b7640886bee853c2220ca59fef + 9beda22e7f4c02f4006f97f44e3954d4c024725e1783ce35efa0866456bb2c59 + 21c5529fdea09610c45486e97dff85aafca4078432f4c5061dc0c5670a0e53c9 + 2b00bc3b78001cf572d9134067592a875b88524279fc75a35462753f064d296a + 616b86926fdd3758c92ba10173ff9aa57a2d7cee5d14409cb39935332790252d + f58d664a5fc2435b8e673b0c862e4ba61027b31123bcd3e29455ee91c28dfa95 + f203e3393c3fbb2b1fe896de5c638bf49a0580d6eb24a130012f2a531a4ba58b + 86d47d4cb7772fba2a39eac8f32c4e108ecfb0fe63b91c900d68858cd8b92a25 + a000cbc650ee84a862eb6de172c2e984e984ae7a457a1c5f5dd5ce63ced9805f + c893d6e8c34046daf72628f609befa17f5c427d3aab2fe8448a7fa95fac7a2e3 + 3753922a00b7756e73267be570300193ef8e23feb42da4b4045ea11d07f0fb30 + 8da51f87aa7c3358d3368f03d9cf117a53e44d2ad30b3436651a8b0d6f8c9ea4 + 47aa9f5fc8bd9a27b38b5d1c4ec960fed85809c4601bf93698d0f6c2fe51fcee + eedbee5f2600c9e1a43924687286ab8b307b71dfbeb7a10e8e2421febabc828b + a608b9259fe6064e12ef11b4ead4330fdb11729c1a24d7403d237c08383e15d4 + e9755360da9492907f2d2259692e0e63fb23e7eab314adb44076a9a6527cf3b0 + f2e22b7aa0b21ba33a9439689de81859cd9bd87a18d31a41bab183dff589f03b + eefbe3966641779c61100ced4d042f0052d98bfec69feed2425516ac7932b498 + 3862047f0b26ae138f79e8d89c6129f46e9267574bedc94dd53e397047c2caeb + 3af06f45721a2fac06520276f99ed59deb9e892ac9a1a7e33a50538a84aecde5 + 7abdc7154cace37e24009bd4f79dfd332dc64dec5641caa8d6e464736c165f05 + 0adacd984921fe990a9bbc4e1fd45a0dc7dd7f7112da9bb2ea3248b8cdc7e158 + 608b010f1ec55c649bcec55a57e90762cb3d19e5a8a8ea047ca1607f0a862aa0 + 5cd3d4f69938454ee7714dabcdc5b0a36631d47563b35de4c361da8ccead6a5f + 1082a8959b0f28ec4b50b0c8ec287f5af7f9ca053e1ff562a484b1d014815d50 + f252e8781c976d6be964c5844043183e389cbb9696a994c5d72635f70f6af91c + 7bccb853ac1ad40669cb8ea1d93bb08be985e145d3de4687343cfa5c8ab68234 + 31f7af69315be794e8935f7165c06655a5b826dc7dd6ae411488676941e4cc44 + fb0715122ea0530aa3939f51497ce1fa30010d54f87c00f778791a6ce28ef3aa + 934ecf2cb14d3a06c8d27507a8190ace78161d48861629e94a6c82d3d306b916 + ae33d17b4b9f11ccc0dd4cfbcf1eb6bf724a451c587aca56a060ed3be75fb1f7 + 4198c0c42bea68d672acf103a476f85b249d864250e87995bad1112101f8f82f + ffd5af187d92d542d6976f9ece70d9e618dff682871662da223a4e5c0c894a74 + b19b991369e7864bf79d9bcdf6204199fc4e62993f37fb5a698dffdef18b8a92 + b51736f7b493e65f9b9e76b9b34757cecd76a6248525fb6dad76326480b38e5f + 9c45b11350873ac5b7e6c650844d661cd1663160c8978068b27a7af07820f4e9 + 02c162441f393be022a3f75b23268fbaf515864b1eb306af3939ce331a52667f + 5961e261a6bf75f84ef53b7e8c1fd1a5b6e2fa72a333b605b3b2a0c70c837a31 + 780957630e22c54916e3fd7a8f72a1b20b86204506f1cf51a12895e803a8c3ee + fb682e3e4e149880a70c1602469d092c112a6d1d88fd0a4de04718e590ecbf64 + 3eb120493c6b05359ef76f477b5feaebd65cdeed0b105f2185eac8c9657f68a8 + 7a6cf73590016454d3834fcad1603bbe3917096b20cbb3af26ef252ddacb55ab + be05198c719c438c79d91b4cca26925ad477ccb3c423cfe7e6fb407210b60d0c + bd8ac74981d13684b54180725c15672b3391890b6088714f56073ce351614bc3 + 5892983c5fdc5a26388b7c3896706f4e710c6422b6a6ed4ca50c9545e9ef463e + 85af5d4b4845336913b13c875ada2f4047aea44ae9e1212e2b15c4ac6e6b9a12 + 55ff888b2edd4e6b294d81e99769f98aeddef06154b2dc8fa7142b2212834c58 + 38a25c990aa345c43a3c87131646c00f31787e47b96cd8a48c2a300dfc2a57dc + 3605d3c3e65afb2a3e46ab679a34f90818d8ebb16286289d8d9529e01c2513fd + a122e7d2c3032a13071657d9e282dad588e7a1674a168fe810646a4453f5dea0 + 7aeed65253a9b50cce6d82049e30ea977bd82ac126a73789b73ca61e6d73a5d3 + d22a80e883bc5423d006dcdddc04b3f2864c91dca006a1891886d250e316170c + 1b14173bd6aae51127dc665e71042169d9d5335ab4567ca5bc527f6ed2d33898 + e0575d3126b88f41b8a99e172d6195e2068788bcda0d4940f1e776c5f4da2247 + c0d4d8aa7273d02f1a3efeffd0081ebd63d8510e3204e7d71933d8ac6b318a53"