summaryrefslogtreecommitdiff
path: root/debian
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbaren@google.com>2022-08-22 17:49:57 -0400
committerGravatar Benjamin Barenblat <bbaren@google.com>2022-08-22 22:14:31 -0400
commit170e05ec7974a1b7b5133f638e71881925cc7e68 (patch)
treed8bc02dad030ba3023f771660d5fab1758b9321f /debian
parent104bbd297d624819b37428882c54eade8b6ab74d (diff)
Update patches
Bump SONAME and inline namespace in configuration, update location of SSE2 and SSSE3 configuration, and delete patches that have been applied upstream.
Diffstat (limited to 'debian')
-rw-r--r--debian/patches/DiscreteDistributionTest-irrelevant-destination-buckets.diff63
-rw-r--r--debian/patches/big-endian-hash.diff725
-rw-r--r--debian/patches/big-endian-hash2.diff164
-rw-r--r--debian/patches/big-endian-random.diff698
-rw-r--r--debian/patches/big-endian-random2.diff90
-rw-r--r--debian/patches/big-endian-random3.diff82
-rw-r--r--debian/patches/big-endian-random4.diff71
-rw-r--r--debian/patches/configure.diff54
-rw-r--r--debian/patches/cordrepring-typo.diff20
-rw-r--r--debian/patches/disable-nominalcpufrequency-test.diff46
-rw-r--r--debian/patches/empty-flags-library.diff2
-rw-r--r--debian/patches/float-rounding.diff46
-rw-r--r--debian/patches/float-tests-disable-i386.diff141
-rw-r--r--debian/patches/hppa-symbolize.diff103
-rw-r--r--debian/patches/latomic.diff2
-rw-r--r--debian/patches/missing-rint.diff45
-rw-r--r--debian/patches/pkg-config-libs-generation.diff36
-rw-r--r--debian/patches/series16
-rw-r--r--debian/patches/str-format-convert-test-printf.diff103
-rw-r--r--debian/patches/thumb-function-bounds.diff96
20 files changed, 26 insertions, 2577 deletions
diff --git a/debian/patches/DiscreteDistributionTest-irrelevant-destination-buckets.diff b/debian/patches/DiscreteDistributionTest-irrelevant-destination-buckets.diff
deleted file mode 100644
index f4cae4c7..00000000
--- a/debian/patches/DiscreteDistributionTest-irrelevant-destination-buckets.diff
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Don’t examine irrelevant destination buckets in DiscreteDistributionTest
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/7ba826e50dff1878e6ecc6b9af44097c040c8968
-
-Abseil generates discrete distributions using Walker’s aliasing
-algorithm. This creates uniformly distributed buckets, each with a
-probability of sending traffic to a different bucket. Abseil represents
-a bucket as a pair
-
- (probability of retaining traffic ×
- alternate bucket if traffic is passed)
-
-and a distribution as a vector of such pairs. For example, {(0.3, 1),
-(1.0, 1)} represents a distribution with two buckets, the zeroth of
-which passes 70% of its traffic to bucket 1 and the first of which holds
-on to all its traffic.
-
-This representation is not unique: When a bucket retains traffic with
-probability 1, the alternate bucket is irrelevant. Continuing the
-example above, {(0.3, 1), (1.0, 0)} _also_ represents a two-bucket
-distribution where the zeroth bucket passes 70% of its traffic to the
-first and the first hangs on to all traffic. Exactly what representation
-Abseil generates for a given input is related to how much precision is
-used in intermediate floating-point operations, which is an
-architectural implementation detail. Remove sensitivity to that detail
-by not examining the alternate bucket when the retention probability is
-1.0.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 372993410 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/random/discrete_distribution_test.cc
-+++ b/absl/random/discrete_distribution_test.cc
-@@ -99,6 +99,7 @@
- }
-
- TEST(DiscreteDistributionTest, InitDiscreteDistribution) {
-+ using testing::_;
- using testing::Pair;
-
- {
-@@ -111,8 +112,8 @@ TEST(DiscreteDistributionTest, InitDiscreteDistribution) {
- // Each bucket is p=1/3, so bucket 0 will send half it's traffic
- // to bucket 2, while the rest will retain all of their traffic.
- EXPECT_THAT(q, testing::ElementsAre(Pair(0.5, 2), //
-- Pair(1.0, 1), //
-- Pair(1.0, 2)));
-+ Pair(1.0, _), //
-+ Pair(1.0, _)));
- }
-
- {
-@@ -135,7 +136,7 @@ TEST(DiscreteDistributionTest, InitDiscreteDistribution) {
-
- EXPECT_THAT(q, testing::ElementsAre(Pair(b0, 3), //
- Pair(b1, 3), //
-- Pair(1.0, 2), //
-+ Pair(1.0, _), //
- Pair(b3, 2), //
- Pair(b1, 3)));
- }
diff --git a/debian/patches/big-endian-hash.diff b/debian/patches/big-endian-hash.diff
deleted file mode 100644
index 52888e74..00000000
--- a/debian/patches/big-endian-hash.diff
+++ /dev/null
@@ -1,725 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Restructure wyhash_test.cc to separate golden values
-Forwarded: yes
-Origin: backport, https://github.com/abseil/abseil-cpp/commit/a05366d851c5cb88065272f951e03955197e7c11
-
-This patch is a subset of the referenced commit, which originally also changed
-the mix function on arm64. The original message is as follows:
-
- Alternative bit mixer for LowLevelHash on ARM
-
- LowLevelHash's bit-mixer is inefficient on ARM because it calculates
- a 128-bit product of two 64-bit numbers. On ARM, this requires a
- sequence of two instructions with a high combined latency and poor
- throughput. This change provides alternative bit-mixing code for ARM
- that uses only 64-bit arithmetic (multiplication, xor, and
- left-shifts) and speeds things up considerably.
-
- The bit-mixing code for ARM was inspired by by Woothash[1] and
- xxh3[1]. Once I landed on a sequence of operations that provided
- good mixing, I used a test harness to search for the combination of
- shift / rotate factors that provided the best mixing, as indicated
- by SMHasher hash quality tests. The new mixing code passes 13 out of
- 15 of the hash quality test suites in SMHasher, with the two
- failures being in the noise range: e.g. 1 collision vs. zero
- expected in a keyset of ~8m keys.
-
- [1]: https://github.com/tommyettinger/waterhash/blob/49f5cf0b63b9/woothash.h#L16-L20
- [2]: https://github.com/Cyan4973/xxHash/blob/6853ddc36e46/xxhash.h#L3240-L3265
-
- PiperOrigin-RevId: 391833008
-
-This restructuring is a prerequisite for big-endian-hash2.diff.
-
---- a/absl/hash/internal/wyhash_test.cc
-+++ b/absl/hash/internal/wyhash_test.cc
-@@ -14,473 +14,469 @@
-
- #include "absl/hash/internal/wyhash.h"
-
-+#include <cinttypes>
-+
--#include "absl/strings/escaping.h"
- #include "gmock/gmock.h"
- #include "gtest/gtest.h"
-+#include "absl/strings/escaping.h"
-+
-+#define UPDATE_GOLDEN 0
-
- namespace {
-
--static const uint64_t kCurrentSeed = 0;
- static const uint64_t kSalt[5] = {0xa0761d6478bd642f, 0xe7037ed1a0b428dbl,
- 0x8ebc6af09c88c6e3, 0x589965cc75374cc3l,
- 0x1d8e4e27c47d124f};
-
--// Note: We don't account for endianness, so the values here are only correct if
--// you're also running on a little endian platform.
--
--TEST(WyhashTest, EmptyString) {
-- const std::string s = "";
-- EXPECT_EQ(
-- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt),
-- 4808886099364463827);
--}
--
--TEST(WyhashTest, Spaces) {
-- const std::string s = " ";
-- EXPECT_EQ(
-- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt),
-- 1686201463024549249);
--}
--
--TEST(WyhashTest, RepeatingString) {
-- const std::string s = "aaaa";
-- EXPECT_EQ(
-- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt),
-- 6646112255271966632);
--}
--
--TEST(WyhashTest, HexString) {
-- const std::string small = "\x01\x02\x03";
-- const std::string med = "\x01\x02\x03\x04";
--
-- EXPECT_EQ(absl::hash_internal::Wyhash(small.c_str(), small.length(),
-- kCurrentSeed, kSalt),
-- 11989428023081740911ULL);
-- EXPECT_EQ(absl::hash_internal::Wyhash(med.c_str(), med.length(), kCurrentSeed,
-- kSalt),
-- 9765997711188871556ULL);
--}
--
--TEST(WyhashTest, Words) {
-- const std::string s = "third_party|wyhash|64";
-- EXPECT_EQ(
-- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt),
-- 3702018632387611330);
--}
--
--TEST(WyhashTest, LongString) {
-- const std::string s =
-- "AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEfGhIjKlMnOpQrStUvWxYz"
-- "0123456789AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEfGhIjKlMnOp"
-- "QrStUvWxYz0123456789AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEf"
-- "GhIjKlMnOpQrStUvWxYz0123456789AbCdEfGhIjKlMnOpQrStUvWxYz012345"
-- "6789AbCdEfGhIjKlMnOpQrStUvWxYz0123456789";
--
-- EXPECT_EQ(
-- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt),
-- 9245411362605796064ULL);
--}
--
--TEST(WyhashTest, BigReference) {
-+TEST(WyhashTest, VerifyGolden) {
-+ constexpr size_t kNumGoldenOutputs = 134;
-- struct ExpectedResult {
-+ static struct {
- absl::string_view base64_data;
- uint64_t seed;
-- uint64_t hash;
-- } expected_results[] = {
-+ } cases[] = {
-- {"", uint64_t{0xec42b7ab404b8acb}, uint64_t{0xe5a40d39ab796423}},
-+ {"", uint64_t{0xec42b7ab404b8acb}},
-+ {"ICAg", uint64_t{0}},
-+ {"YWFhYQ==", uint64_t{0}},
-+ {"AQID", uint64_t{0}},
-+ {"AQIDBA==", uint64_t{0}},
-+ {"dGhpcmRfcGFydHl8d3loYXNofDY0", uint64_t{0}},
-- {"Zw==", uint64_t{0xeeee074043a3ee0f}, uint64_t{0xa6564b468248c683}},
-+ {"Zw==", uint64_t{0xeeee074043a3ee0f}},
-- {"xmk=", uint64_t{0x857902089c393de}, uint64_t{0xef192f401b116e1c}},
-+ {"xmk=", uint64_t{0x857902089c393de}},
-- {"c1H/", uint64_t{0x993df040024ca3af}, uint64_t{0xbe8dc0c54617639d}},
-+ {"c1H/", uint64_t{0x993df040024ca3af}},
-- {"SuwpzQ==", uint64_t{0xc4e4c2acea740e96}, uint64_t{0x93d7f665b5521c8e}},
-+ {"SuwpzQ==", uint64_t{0xc4e4c2acea740e96}},
-- {"uqvy++M=", uint64_t{0x6a214b3db872d0cf}, uint64_t{0x646d70bb42445f28}},
-+ {"uqvy++M=", uint64_t{0x6a214b3db872d0cf}},
-- {"RnzCVPgb", uint64_t{0x44343db6a89dba4d}, uint64_t{0x96a7b1e3cc9bd426}},
-+ {"RnzCVPgb", uint64_t{0x44343db6a89dba4d}},
-- {"6OeNdlouYw==", uint64_t{0x77b5d6d1ae1dd483},
-- uint64_t{0x76020289ab0790c4}},
-+ {"6OeNdlouYw==", uint64_t{0x77b5d6d1ae1dd483}},
-- {"M5/JmmYyDbc=", uint64_t{0x89ab8ecb44d221f1},
-- uint64_t{0x39f842e4133b9b44}},
-+ {"M5/JmmYyDbc=", uint64_t{0x89ab8ecb44d221f1}},
-- {"MVijWiVdBRdY", uint64_t{0x60244b17577ca81b},
-- uint64_t{0x2b8d7047be4bcaab}},
-+ {"MVijWiVdBRdY", uint64_t{0x60244b17577ca81b}},
-- {"6V7Uq7LNxpu0VA==", uint64_t{0x59a08dcee0717067},
-- uint64_t{0x99628abef6716a97}},
-+ {"6V7Uq7LNxpu0VA==", uint64_t{0x59a08dcee0717067}},
-- {"EQ6CdEEhPdyHcOk=", uint64_t{0xf5f20db3ade57396},
-- uint64_t{0x4432e02ba42b2740}},
-+ {"EQ6CdEEhPdyHcOk=", uint64_t{0xf5f20db3ade57396}},
-- {"PqFB4fxnPgF+l+rc", uint64_t{0xbf8dee0751ad3efb},
-- uint64_t{0x74d810efcad7918a}},
-+ {"PqFB4fxnPgF+l+rc", uint64_t{0xbf8dee0751ad3efb}},
-- {"a5aPOFwq7LA7+zKvPA==", uint64_t{0x6b7a06b268d63e30},
-- uint64_t{0x88c84e986002507f}},
-+ {"a5aPOFwq7LA7+zKvPA==", uint64_t{0x6b7a06b268d63e30}},
-- {"VOwY21wCGv5D+/qqOvs=", uint64_t{0xb8c37f0ae0f54c82},
-- uint64_t{0x4f99acf193cf39b9}},
-+ {"VOwY21wCGv5D+/qqOvs=", uint64_t{0xb8c37f0ae0f54c82}},
-- {"KdHmBTx8lHXYvmGJ+Vy7", uint64_t{0x9fcbed0c38e50eef},
-- uint64_t{0xd90e7a3655891e37}},
-+ {"KdHmBTx8lHXYvmGJ+Vy7", uint64_t{0x9fcbed0c38e50eef}},
-- {"qJkPlbHr8bMF7/cA6aE65Q==", uint64_t{0x2af4bade1d8e3a1d},
-- uint64_t{0x3bb378b1d4df8fcf}},
-+ {"qJkPlbHr8bMF7/cA6aE65Q==", uint64_t{0x2af4bade1d8e3a1d}},
-- {"ygvL0EhHZL0fIx6oHHtkxRQ=", uint64_t{0x714e3aa912da2f2c},
-- uint64_t{0xf78e94045c052d47}},
-+ {"ygvL0EhHZL0fIx6oHHtkxRQ=", uint64_t{0x714e3aa912da2f2c}},
-- {"c1rFXkt5YztwZCQRngncqtSs", uint64_t{0xf5ee75e3cbb82c1c},
-- uint64_t{0x26da0b2130da6b40}},
-+ {"c1rFXkt5YztwZCQRngncqtSs", uint64_t{0xf5ee75e3cbb82c1c}},
-- {"8hsQrzszzeNQSEcVXLtvIhm6mw==", uint64_t{0x620e7007321b93b9},
-- uint64_t{0x30b4d426af8c6986}},
-+ {"8hsQrzszzeNQSEcVXLtvIhm6mw==", uint64_t{0x620e7007321b93b9}},
-- {"ffUL4RocfyP4KfikGxO1yk7omDI=", uint64_t{0xc08528cac2e551fc},
-- uint64_t{0x5413b4aaf3baaeae}},
-+ {"ffUL4RocfyP4KfikGxO1yk7omDI=", uint64_t{0xc08528cac2e551fc}},
-- {"OOB5TT00vF9Od/rLbAWshiErqhpV", uint64_t{0x6a1debf9cc3ad39},
-- uint64_t{0x756ab265370a1597}},
-+ {"OOB5TT00vF9Od/rLbAWshiErqhpV", uint64_t{0x6a1debf9cc3ad39}},
-- {"or5wtXM7BFzTNpSzr+Lw5J5PMhVJ/Q==", uint64_t{0x7e0a3c88111fc226},
-- uint64_t{0xdaf5f4b7d09814fb}},
-+ {"or5wtXM7BFzTNpSzr+Lw5J5PMhVJ/Q==", uint64_t{0x7e0a3c88111fc226}},
-- {"gk6pCHDUsoopVEiaCrzVDhioRKxb844=", uint64_t{0x1301fef15df39edb},
-- uint64_t{0x8f874ae37742b75e}},
-+ {"gk6pCHDUsoopVEiaCrzVDhioRKxb844=", uint64_t{0x1301fef15df39edb}},
-- {"TNctmwlC5QbEM6/No4R/La3UdkfeMhzs", uint64_t{0x64e181f3d5817ab},
-- uint64_t{0x8fecd03956121ce8}},
-+ {"TNctmwlC5QbEM6/No4R/La3UdkfeMhzs", uint64_t{0x64e181f3d5817ab}},
-- {"SsQw9iAjhWz7sgcE9OwLuSC6hsM+BfHs2Q==", uint64_t{0xafafc44961078ecb},
-- uint64_t{0x229c292ea7a08285}},
-+ {"SsQw9iAjhWz7sgcE9OwLuSC6hsM+BfHs2Q==", uint64_t{0xafafc44961078ecb}},
-- {"ZzO3mVCj4xTT2TT3XqDyEKj2BZQBvrS8RHg=", uint64_t{0x4f7bb45549250094},
-- uint64_t{0xbb4bf0692d14bae}},
-+ {"ZzO3mVCj4xTT2TT3XqDyEKj2BZQBvrS8RHg=", uint64_t{0x4f7bb45549250094}},
-- {"+klp5iPQGtppan5MflEls0iEUzqU+zGZkDJX", uint64_t{0xa30061abaa2818c},
-- uint64_t{0x207b24ca3bdac1db}},
-+ {"+klp5iPQGtppan5MflEls0iEUzqU+zGZkDJX", uint64_t{0xa30061abaa2818c}},
-- {"RO6bvOnlJc8I9eniXlNgqtKy0IX6VNg16NRmgg==", uint64_t{0xd902ee3e44a5705f},
-- uint64_t{0x64f6cd6745d3825b}},
-+ {"RO6bvOnlJc8I9eniXlNgqtKy0IX6VNg16NRmgg==",
-+ uint64_t{0xd902ee3e44a5705f}},
-- {"ZJjZqId1ZXBaij9igClE3nyliU5XWdNRrayGlYA=", uint64_t{0x316d36da516f583},
-- uint64_t{0xa2b2e1656b58df1e}},
-+ {"ZJjZqId1ZXBaij9igClE3nyliU5XWdNRrayGlYA=", uint64_t{0x316d36da516f583}},
-- {"7BfkhfGMDGbxfMB8uyL85GbaYQtjr2K8g7RpLzr/", uint64_t{0x402d83f9f834f616},
-- uint64_t{0xd01d30d9ee7a148}},
-+ {"7BfkhfGMDGbxfMB8uyL85GbaYQtjr2K8g7RpLzr/",
-+ uint64_t{0x402d83f9f834f616}},
- {"rycWk6wHH7htETQtje9PidS2YzXBx+Qkg2fY7ZYS7A==",
-- uint64_t{0x9c604164c016b72c}, uint64_t{0x1cb4cd00ab804e3b}},
-+ uint64_t{0x9c604164c016b72c}},
- {"RTkC2OUK+J13CdGllsH0H5WqgspsSa6QzRZouqx6pvI=",
-- uint64_t{0x3f4507e01f9e73ba}, uint64_t{0x4697f2637fd90999}},
-+ uint64_t{0x3f4507e01f9e73ba}},
- {"tKjKmbLCNyrLCM9hycOAXm4DKNpM12oZ7dLTmUx5iwAi",
-- uint64_t{0xc3fe0d5be8d2c7c7}, uint64_t{0x8383a756b5688c07}},
-+ uint64_t{0xc3fe0d5be8d2c7c7}},
- {"VprUGNH+5NnNRaORxgH/ySrZFQFDL+4VAodhfBNinmn8cg==",
-- uint64_t{0x531858a40bfa7ea1}, uint64_t{0x695c29cb3696a975}},
-+ uint64_t{0x531858a40bfa7ea1}},
- {"gc1xZaY+q0nPcUvOOnWnT3bqfmT/geth/f7Dm2e/DemMfk4=",
-- uint64_t{0x86689478a7a7e8fa}, uint64_t{0xda2e5a5a5e971521}},
-+ uint64_t{0x86689478a7a7e8fa}},
- {"Mr35fIxqx1ukPAL0su1yFuzzAU3wABCLZ8+ZUFsXn47UmAph",
-- uint64_t{0x4ec948b8e7f27288}, uint64_t{0x7935d4befa056b2b}},
-+ uint64_t{0x4ec948b8e7f27288}},
- {"A9G8pw2+m7+rDtWYAdbl8tb2fT7FFo4hLi2vAsa5Y8mKH3CX3g==",
-- uint64_t{0xce46c7213c10032}, uint64_t{0x38dd541ca95420fe}},
-+ uint64_t{0xce46c7213c10032}},
- {"DFaJGishGwEHDdj9ixbCoaTjz9KS0phLNWHVVdFsM93CvPft3hM=",
-- uint64_t{0xf63e96ee6f32a8b6}, uint64_t{0xcc06c7a4963f967f}},
-+ uint64_t{0xf63e96ee6f32a8b6}},
- {"7+Ugx+Kr3aRNgYgcUxru62YkTDt5Hqis+2po81hGBkcrJg4N0uuy",
-- uint64_t{0x1cfe85e65fc5225}, uint64_t{0xbf0f6f66e232fb20}},
-+ uint64_t{0x1cfe85e65fc5225}},
- {"H2w6O8BUKqu6Tvj2xxaecxEI2wRgIgqnTTG1WwOgDSINR13Nm4d4Vg==",
-- uint64_t{0x45c474f1cee1d2e8}, uint64_t{0xf7efb32d373fe71a}},
-+ uint64_t{0x45c474f1cee1d2e8}},
- {"1XBMnIbqD5jy65xTDaf6WtiwtdtQwv1dCVoqpeKj+7cTR1SaMWMyI04=",
-- uint64_t{0x6e024e14015f329c}, uint64_t{0xe2e64634b1c12660}},
-+ uint64_t{0x6e024e14015f329c}},
- {"znZbdXG2TSFrKHEuJc83gPncYpzXGbAebUpP0XxzH0rpe8BaMQ17nDbt",
-- uint64_t{0x760c40502103ae1c}, uint64_t{0x285b8fd1638e306d}},
-+ uint64_t{0x760c40502103ae1c}},
- {"ylu8Atu13j1StlcC1MRMJJXIl7USgDDS22HgVv0WQ8hx/8pNtaiKB17hCQ==",
-- uint64_t{0x17fd05c3c560c320}, uint64_t{0x658e8a4e3b714d6c}},
-+ uint64_t{0x17fd05c3c560c320}},
- {"M6ZVVzsd7vAvbiACSYHioH/440dp4xG2mLlBnxgiqEvI/aIEGpD0Sf4VS0g=",
-- uint64_t{0x8b34200a6f8e90d9}, uint64_t{0xf391fb968e0eb398}},
-+ uint64_t{0x8b34200a6f8e90d9}},
- {"li3oFSXLXI+ubUVGJ4blP6mNinGKLHWkvGruun85AhVn6iuMtocbZPVhqxzn",
-- uint64_t{0x6be89e50818bdf69}, uint64_t{0x744a9ea0cc144bf2}},
-+ uint64_t{0x6be89e50818bdf69}},
- {"kFuQHuUCqBF3Tc3hO4dgdIp223ShaCoog48d5Do5zMqUXOh5XpGK1t5XtxnfGA==",
-- uint64_t{0xfb389773315b47d8}, uint64_t{0x12636f2be11012f1}},
-+ uint64_t{0xfb389773315b47d8}},
- {"jWmOad0v0QhXVJd1OdGuBZtDYYS8wBVHlvOeTQx9ZZnm8wLEItPMeihj72E0nWY=",
-- uint64_t{0x4f2512a23f61efee}, uint64_t{0x29c57de825948f80}},
-+ uint64_t{0x4f2512a23f61efee}},
- {"z+DHU52HaOQdW4JrZwDQAebEA6rm13Zg/9lPYA3txt3NjTBqFZlOMvTRnVzRbl23",
-- uint64_t{0x59ccd92fc16c6fda}, uint64_t{0x58c6f99ab0d1c021}},
-+ uint64_t{0x59ccd92fc16c6fda}},
- {"MmBiGDfYeTayyJa/tVycg+rN7f9mPDFaDc+23j0TlW9094er0ADigsl4QX7V3gG/qw==",
-- uint64_t{0x25c5a7f5bd330919}, uint64_t{0x13e7b5a7b82fe3bb}},
-+ uint64_t{0x25c5a7f5bd330919}},
- {"774RK+9rOL4iFvs1q2qpo/JVc/I39buvNjqEFDtDvyoB0FXxPI2vXqOrk08VPfIHkmU=",
-- uint64_t{0x51df4174d34c97d7}, uint64_t{0x10fbc87901e02b63}},
-+ uint64_t{0x51df4174d34c97d7}},
- {"+slatXiQ7/2lK0BkVUI1qzNxOOLP3I1iK6OfHaoxgqT63FpzbElwEXSwdsryq3UlHK0I",
-- uint64_t{0x80ce6d76f89cb57}, uint64_t{0xa24c9184901b748b}},
-+ uint64_t{0x80ce6d76f89cb57}},
- {"64mVTbQ47dHjHlOHGS/hjJwr/"
- "K2frCNpn87exOqMzNUVYiPKmhCbfS7vBUce5tO6Ec9osQ==",
-- uint64_t{0x20961c911965f684}, uint64_t{0xcac4fd4c5080e581}},
-+ uint64_t{0x20961c911965f684}},
- {"fIsaG1r530SFrBqaDj1kqE0AJnvvK8MNEZbII2Yw1OK77v0V59xabIh0B5axaz/"
- "+a2V5WpA=",
-- uint64_t{0x4e5b926ec83868e7}, uint64_t{0xc38bdb7483ba68e1}},
-+ uint64_t{0x4e5b926ec83868e7}},
- {"PGih0zDEOWCYGxuHGDFu9Ivbff/"
- "iE7BNUq65tycTR2R76TerrXALRosnzaNYO5fjFhTi+CiS",
-- uint64_t{0x3927b30b922eecef}, uint64_t{0xdb2a8069b2ceaffa}},
-+ uint64_t{0x3927b30b922eecef}},
- {"RnpA/"
- "zJnEnnLjmICORByRVb9bCOgxF44p3VMiW10G7PvW7IhwsWajlP9kIwNA9FjAD2GoQHk2Q="
- "=",
-- uint64_t{0xbd0291284a49b61c}, uint64_t{0xdf9fe91d0d1c7887}},
-+ uint64_t{0xbd0291284a49b61c}},
- {"qFklMceaTHqJpy2qavJE+EVBiNFOi6OxjOA3LeIcBop1K7w8xQi3TrDk+"
- "BrWPRIbfprszSaPfrI=",
-- uint64_t{0x73a77c575bcc956}, uint64_t{0xe83f49e96e2e6a08}},
-+ uint64_t{0x73a77c575bcc956}},
- {"cLbfUtLl3EcQmITWoTskUR8da/VafRDYF/ylPYwk7/"
- "zazk6ssyrzxMN3mmSyvrXR2yDGNZ3WDrTT",
-- uint64_t{0x766a0e2ade6d09a6}, uint64_t{0xc69e61b62ca2b62}},
-+ uint64_t{0x766a0e2ade6d09a6}},
- {"s/"
- "Jf1+"
- "FbsbCpXWPTUSeWyMH6e4CvTFvPE5Fs6Z8hvFITGyr0dtukHzkI84oviVLxhM1xMxrMAy1db"
- "w==",
-- uint64_t{0x2599f4f905115869}, uint64_t{0xb4a4f3f85f8298fe}},
-+ uint64_t{0x2599f4f905115869}},
- {"FvyQ00+j7nmYZVQ8hI1Edxd0AWplhTfWuFGiu34AK5X8u2hLX1bE97sZM0CmeLe+"
- "7LgoUT1fJ/axybE=",
-- uint64_t{0xd8256e5444d21e53}, uint64_t{0x167a1b39e1e95f41}},
-+ uint64_t{0xd8256e5444d21e53}},
- {"L8ncxMaYLBH3g9buPu8hfpWZNlOF7nvWLNv9IozH07uQsIBWSKxoPy8+"
- "LW4tTuzC6CIWbRGRRD1sQV/4",
-- uint64_t{0xf664a91333fb8dfd}, uint64_t{0xf8a2a5649855ee41}},
-+ uint64_t{0xf664a91333fb8dfd}},
- {"CDK0meI07yrgV2kQlZZ+"
- "wuVqhc2NmzqeLH7bmcA6kchsRWFPeVF5Wqjjaj556ABeUoUr3yBmfU3kWOakkg==",
-- uint64_t{0x9625b859be372cd1}, uint64_t{0x27992565b595c498}},
-+ uint64_t{0x9625b859be372cd1}},
- {"d23/vc5ONh/"
- "HkMiq+gYk4gaCNYyuFKwUkvn46t+dfVcKfBTYykr4kdvAPNXGYLjM4u1YkAEFpJP+"
- "nX7eOvs=",
-- uint64_t{0x7b99940782e29898}, uint64_t{0x3e08cca5b71f9346}},
-+ uint64_t{0x7b99940782e29898}},
- {"NUR3SRxBkxTSbtQORJpu/GdR6b/h6sSGfsMj/KFd99ahbh+9r7LSgSGmkGVB/"
- "mGoT0pnMTQst7Lv2q6QN6Vm",
-- uint64_t{0x4fe12fa5383b51a8}, uint64_t{0xad406b10c770a6d2}},
-+ uint64_t{0x4fe12fa5383b51a8}},
- {"2BOFlcI3Z0RYDtS9T9Ie9yJoXlOdigpPeeT+CRujb/"
- "O39Ih5LPC9hP6RQk1kYESGyaLZZi3jtabHs7DiVx/VDg==",
-- uint64_t{0xe2ccb09ac0f5b4b6}, uint64_t{0xd1713ce6e552bcf2}},
-+ uint64_t{0xe2ccb09ac0f5b4b6}},
- {"FF2HQE1FxEvWBpg6Z9zAMH+Zlqx8S1JD/"
- "wIlViL6ZDZY63alMDrxB0GJQahmAtjlm26RGLnjW7jmgQ4Ie3I+014=",
-- uint64_t{0x7d0a37adbd7b753b}, uint64_t{0x753b287194c73ad3}},
-+ uint64_t{0x7d0a37adbd7b753b}},
- {"tHmO7mqVL/PX11nZrz50Hc+M17Poj5lpnqHkEN+4bpMx/"
- "YGbkrGOaYjoQjgmt1X2QyypK7xClFrjeWrCMdlVYtbW",
-- uint64_t{0xd3ae96ef9f7185f2}, uint64_t{0x5ae41a95f600af1c}},
-+ uint64_t{0xd3ae96ef9f7185f2}},
- {"/WiHi9IQcxRImsudkA/KOTqGe8/"
- "gXkhKIHkjddv5S9hi02M049dIK3EUyAEjkjpdGLUs+BN0QzPtZqjIYPOgwsYE9g==",
-- uint64_t{0x4fb88ea63f79a0d8}, uint64_t{0x4a61163b86a8bb4c}},
-+ uint64_t{0x4fb88ea63f79a0d8}},
- {"qds+1ExSnU11L4fTSDz/QE90g4Jh6ioqSh3KDOTOAo2pQGL1k/"
- "9CCC7J23YF27dUTzrWsCQA2m4epXoCc3yPHb3xElA=",
-- uint64_t{0xed564e259bb5ebe9}, uint64_t{0x42eeaa79e760c7e4}},
-+ uint64_t{0xed564e259bb5ebe9}},
- {"8FVYHx40lSQPTHheh08Oq0/"
- "pGm2OlG8BEf8ezvAxHuGGdgCkqpXIueJBF2mQJhTfDy5NncO8ntS7vaKs7sCNdDaNGOEi",
-- uint64_t{0x3e3256b60c428000}, uint64_t{0x698df622ef465b0a}},
-+ uint64_t{0x3e3256b60c428000}},
- {"4ZoEIrJtstiCkeew3oRzmyJHVt/pAs2pj0HgHFrBPztbQ10NsQ/"
- "lM6DM439QVxpznnBSiHMgMQJhER+70l72LqFTO1JiIQ==",
-- uint64_t{0xfb05bad59ec8705}, uint64_t{0x157583111e1a6026}},
-+ uint64_t{0xfb05bad59ec8705}},
- {"hQPtaYI+wJyxXgwD5n8jGIKFKaFA/"
- "P83KqCKZfPthnjwdOFysqEOYwAaZuaaiv4cDyi9TyS8hk5cEbNP/jrI7q6pYGBLbsM=",
-- uint64_t{0xafdc251dbf97b5f8}, uint64_t{0xaa1388f078e793e0}},
-+ uint64_t{0xafdc251dbf97b5f8}},
- {"S4gpMSKzMD7CWPsSfLeYyhSpfWOntyuVZdX1xSBjiGvsspwOZcxNKCRIOqAA0moUfOh3I5+"
- "juQV4rsqYElMD/gWfDGpsWZKQ",
-- uint64_t{0x10ec9c92ddb5dcbc}, uint64_t{0xf10d68d0f3309360}},
-+ uint64_t{0x10ec9c92ddb5dcbc}},
- {"oswxop+"
- "bthuDLT4j0PcoSKby4LhF47ZKg8K17xxHf74UsGCzTBbOz0MM8hQEGlyqDT1iUiAYnaPaUp"
- "L2mRK0rcIUYA4qLt5uOw==",
-- uint64_t{0x9a767d5822c7dac4}, uint64_t{0x2af056184457a3de}},
-+ uint64_t{0x9a767d5822c7dac4}},
- {"0II/"
- "697p+"
- "BtLSjxj5989OXI004TogEb94VUnDzOVSgMXie72cuYRvTFNIBgtXlKfkiUjeqVpd4a+"
- "n5bxNOD1TGrjQtzKU5r7obo=",
-- uint64_t{0xee46254080d6e2db}, uint64_t{0x6d0058e1590b2489}},
-+ uint64_t{0xee46254080d6e2db}},
- {"E84YZW2qipAlMPmctrg7TKlwLZ68l4L+c0xRDUfyyFrA4MAti0q9sHq3TDFviH0Y+"
- "Kq3tEE5srWFA8LM9oomtmvm5PYxoaarWPLc",
-- uint64_t{0xbbb669588d8bf398}, uint64_t{0x638f287f68817f12}},
-+ uint64_t{0xbbb669588d8bf398}},
- {"x3pa4HIElyZG0Nj7Vdy9IdJIR4izLmypXw5PCmZB5y68QQ4uRaVVi3UthsoJROvbjDJkP2D"
- "Q6L/eN8pFeLFzNPKBYzcmuMOb5Ull7w==",
-- uint64_t{0xdc2afaa529beef44}, uint64_t{0xc46b71fecefd5467}},
-+ uint64_t{0xdc2afaa529beef44}},
- {"jVDKGYIuWOP/"
- "QKLdd2wi8B2VJA8Wh0c8PwrXJVM8FOGM3voPDVPyDJOU6QsBDPseoR8uuKd19OZ/"
- "zAvSCB+zlf6upAsBlheUKgCfKww=",
-- uint64_t{0xf1f67391d45013a8}, uint64_t{0x2c8e94679d964e0a}},
-+ uint64_t{0xf1f67391d45013a8}},
- {"mkquunhmYe1aR2wmUz4vcvLEcKBoe6H+kjUok9VUn2+eTSkWs4oDDtJvNCWtY5efJwg/"
- "j4PgjRYWtqnrCkhaqJaEvkkOwVfgMIwF3e+d",
-- uint64_t{0x16fce2b8c65a3429}, uint64_t{0x8612b797ce22503a}},
-+ uint64_t{0x16fce2b8c65a3429}},
- {"fRelvKYonTQ+s+rnnvQw+JzGfFoPixtna0vzcSjiDqX5s2Kg2//"
- "UGrK+AVCyMUhO98WoB1DDbrsOYSw2QzrcPe0+3ck9sePvb+Q/IRaHbw==",
-- uint64_t{0xf4b096699f49fe67}, uint64_t{0x59f929babfba7170}},
-+ uint64_t{0xf4b096699f49fe67}},
- {"DUwXFJzagljo44QeJ7/"
- "6ZKw4QXV18lhkYT2jglMr8WB3CHUU4vdsytvw6AKv42ZcG6fRkZkq9fpnmXy6xG0aO3WPT1"
- "eHuyFirAlkW+zKtwg=",
-- uint64_t{0xca584c4bc8198682}, uint64_t{0x9527556923fb49a0}},
-+ uint64_t{0xca584c4bc8198682}},
- {"cYmZCrOOBBongNTr7e4nYn52uQUy2mfe48s50JXx2AZ6cRAt/"
- "xRHJ5QbEoEJOeOHsJyM4nbzwFm++SlT6gFZZHJpkXJ92JkR86uS/eV1hJUR",
-- uint64_t{0xed269fc3818b6aad}, uint64_t{0x1039ab644f5e150b}},
-+ uint64_t{0xed269fc3818b6aad}},
- {"EXeHBDfhwzAKFhsMcH9+2RHwV+mJaN01+9oacF6vgm8mCXRd6jeN9U2oAb0of5c5cO4i+"
- "Vb/LlHZSMI490SnHU0bejhSCC2gsC5d2K30ER3iNA==",
-- uint64_t{0x33f253cbb8fe66a8}, uint64_t{0x7816c83f3aa05e6d}},
-+ uint64_t{0x33f253cbb8fe66a8}},
- {"FzkzRYoNjkxFhZDso94IHRZaJUP61nFYrh5MwDwv9FNoJ5jyNCY/"
- "eazPZk+tbmzDyJIGw2h3GxaWZ9bSlsol/vK98SbkMKCQ/wbfrXRLcDzdd/8=",
-- uint64_t{0xd0b76b2c1523d99c}, uint64_t{0xf51d2f564518c619}},
-+ uint64_t{0xd0b76b2c1523d99c}},
- {"Re4aXISCMlYY/XsX7zkIFR04ta03u4zkL9dVbLXMa/q6hlY/CImVIIYRN3VKP4pnd0AUr/"
- "ugkyt36JcstAInb4h9rpAGQ7GMVOgBniiMBZ/MGU7H",
-- uint64_t{0xfd28f0811a2a237f}, uint64_t{0x67d494cff03ac004}},
-+ uint64_t{0xfd28f0811a2a237f}},
- {"ueLyMcqJXX+MhO4UApylCN9WlTQ+"
- "ltJmItgG7vFUtqs2qNwBMjmAvr5u0sAKd8jpzV0dDPTwchbIeAW5zbtkA2NABJV6hFM48ib"
- "4/J3A5mseA3cS8w==",
-- uint64_t{0x6261fb136482e84}, uint64_t{0x2802d636ced1cfbb}},
-+ uint64_t{0x6261fb136482e84}},
- {"6Si7Yi11L+jZMkwaN+GUuzXMrlvEqviEkGOilNq0h8TdQyYKuFXzkYc/"
- "q74gP3pVCyiwz9KpVGMM9vfnq36riMHRknkmhQutxLZs5fbmOgEO69HglCU=",
-- uint64_t{0x458efc750bca7c3a}, uint64_t{0xf64e20bad771cb12}},
-+ uint64_t{0x458efc750bca7c3a}},
- {"Q6AbOofGuTJOegPh9Clm/"
- "9crtUMQqylKrTc1fhfJo1tqvpXxhU4k08kntL1RG7woRnFrVh2UoMrL1kjin+s9CanT+"
- "y4hHwLqRranl9FjvxfVKm3yvg68",
-- uint64_t{0xa7e69ff84e5e7c27}, uint64_t{0xb9a6cf84a83e15e}},
-+ uint64_t{0xa7e69ff84e5e7c27}},
- {"ieQEbIPvqY2YfIjHnqfJiO1/MIVRk0RoaG/WWi3kFrfIGiNLCczYoklgaecHMm/"
- "1sZ96AjO+a5stQfZbJQwS7Sc1ODABEdJKcTsxeW2hbh9A6CFzpowP1A==",
-- uint64_t{0x3c59bfd0c29efe9e}, uint64_t{0x8da6630319609301}},
-+ uint64_t{0x3c59bfd0c29efe9e}},
- {"zQUv8hFB3zh2GGl3KTvCmnfzE+"
- "SUgQPVaSVIELFX5H9cE3FuVFGmymkPQZJLAyzC90Cmi8GqYCvPqTuAAB//"
- "XTJxy4bCcVArgZG9zJXpjowpNBfr3ngWrSE=",
-- uint64_t{0x10befacc6afd298d}, uint64_t{0x40946a86e2a996f3}},
-+ uint64_t{0x10befacc6afd298d}},
- {"US4hcC1+op5JKGC7eIs8CUgInjKWKlvKQkapulxW262E/"
- "B2ye79QxOexf188u2mFwwe3WTISJHRZzS61IwljqAWAWoBAqkUnW8SHmIDwHUP31J0p5sGd"
- "P47L",
-- uint64_t{0x41d5320b0a38efa7}, uint64_t{0xcab7f5997953fa76}},
-+ uint64_t{0x41d5320b0a38efa7}},
- {"9bHUWFna2LNaGF6fQLlkx1Hkt24nrkLE2CmFdWgTQV3FFbUe747SSqYw6ebpTa07MWSpWRP"
- "sHesVo2B9tqHbe7eQmqYebPDFnNqrhSdZwFm9arLQVs+7a3Ic6A==",
-- uint64_t{0x58db1c7450fe17f3}, uint64_t{0x39129ca0e04fc465}},
-+ uint64_t{0x58db1c7450fe17f3}},
- {"Kb3DpHRUPhtyqgs3RuXjzA08jGb59hjKTOeFt1qhoINfYyfTt2buKhD6YVffRCPsgK9SeqZ"
- "qRPJSyaqsa0ovyq1WnWW8jI/NhvAkZTVHUrX2pC+cD3OPYT05Dag=",
-- uint64_t{0x6098c055a335b7a6}, uint64_t{0x5238221fd685e1b8}},
-+ uint64_t{0x6098c055a335b7a6}},
- {"gzxyMJIPlU+bJBwhFUCHSofZ/"
- "319LxqMoqnt3+L6h2U2+ZXJCSsYpE80xmR0Ta77Jq54o92SMH87HV8dGOaCTuAYF+"
- "lDL42SY1P316Cl0sZTS2ow3ZqwGbcPNs/1",
-- uint64_t{0x1bbacec67845a801}, uint64_t{0x175130c407dbcaab}},
-+ uint64_t{0x1bbacec67845a801}},
- {"uR7V0TW+FGVMpsifnaBAQ3IGlr1wx5sKd7TChuqRe6OvUXTlD4hKWy8S+"
- "8yyOw8lQabism19vOQxfmocEOW/"
- "vzY0pEa87qHrAZy4s9fH2Bltu8vaOIe+agYohhYORQ==",
-- uint64_t{0xc419cfc7442190}, uint64_t{0x2f20e7536c0b0df}},
-+ uint64_t{0xc419cfc7442190}},
- {"1UR5eoo2aCwhacjZHaCh9bkOsITp6QunUxHQ2SfeHv0imHetzt/"
- "Z70mhyWZBalv6eAx+YfWKCUib2SHDtz/"
- "A2dc3hqUWX5VfAV7FQsghPUAtu6IiRatq4YSLpDvKZBQ=",
-- uint64_t{0xc95e510d94ba270c}, uint64_t{0x2742cb488a04ad56}},
-+ uint64_t{0xc95e510d94ba270c}},
- {"opubR7H63BH7OtY+Avd7QyQ25UZ8kLBdFDsBTwZlY6gA/"
- "u+x+"
- "czC9AaZMgmQrUy15DH7YMGsvdXnviTtI4eVI4aF1H9Rl3NXMKZgwFOsdTfdcZeeHVRzBBKX"
- "8jUfh1il",
-- uint64_t{0xff1ae05c98089c3f}, uint64_t{0xd6afb593879ff93b}},
-+ uint64_t{0xff1ae05c98089c3f}},
- {"DC0kXcSXtfQ9FbSRwirIn5tgPri0sbzHSa78aDZVDUKCMaBGyFU6BmrulywYX8yzvwprdLs"
- "oOwTWN2wMjHlPDqrvVHNEjnmufRDblW+nSS+xtKNs3N5xsxXdv6JXDrAB/Q==",
-- uint64_t{0x90c02b8dceced493}, uint64_t{0xf50ad64caac0ca7f}},
-+ uint64_t{0x90c02b8dceced493}},
- {"BXRBk+3wEP3Lpm1y75wjoz+PgB0AMzLe8tQ1AYU2/"
- "oqrQB2YMC6W+9QDbcOfkGbeH+b7IBkt/"
- "gwCMw2HaQsRFEsurXtcQ3YwRuPz5XNaw5NAvrNa67Fm7eRzdE1+hWLKtA8=",
-- uint64_t{0x9f8a76697ab1aa36}, uint64_t{0x2ade95c4261364ae}},
-+ uint64_t{0x9f8a76697ab1aa36}},
- {"RRBSvEGYnzR9E45Aps/+WSnpCo/X7gJLO4DRnUqFrJCV/kzWlusLE/"
- "6ZU6RoUf2ROwcgEvUiXTGjLs7ts3t9SXnJHxC1KiOzxHdYLMhVvgNd3hVSAXODpKFSkVXND"
- "55G2L1W",
-- uint64_t{0x6ba1bf3d811a531d}, uint64_t{0x5c4f3299faacd07a}},
-+ uint64_t{0x6ba1bf3d811a531d}},
- {"jeh6Qazxmdi57pa9S3XSnnZFIRrnc6s8QLrah5OX3SB/V2ErSPoEAumavzQPkdKF1/"
- "SfvmdL+qgF1C+Yawy562QaFqwVGq7+tW0yxP8FStb56ZRgNI4IOmI30s1Ei7iops9Uuw==",
-- uint64_t{0x6a418974109c67b4}, uint64_t{0xfffe3bff0ae5e9bc}},
-+ uint64_t{0x6a418974109c67b4}},
- {"6QO5nnDrY2/"
- "wrUXpltlKy2dSBcmK15fOY092CR7KxAjNfaY+"
- "aAmtWbbzQk3MjBg03x39afSUN1fkrWACdyQKRaGxgwq6MGNxI6W+8DLWJBHzIXrntrE/"
- "ml6fnNXEpxplWJ1vEs4=",
-- uint64_t{0x8472f1c2b3d230a3}, uint64_t{0x1db785c0005166e4}},
-+ uint64_t{0x8472f1c2b3d230a3}},
- {"0oPxeEHhqhcFuwonNfLd5jF3RNATGZS6NPoS0WklnzyokbTqcl4BeBkMn07+fDQv83j/"
- "BpGUwcWO05f3+DYzocfnizpFjLJemFGsls3gxcBYxcbqWYev51tG3lN9EvRE+X9+Pwww",
-- uint64_t{0x5e06068f884e73a7}, uint64_t{0xea000d962ad18418}},
-+ uint64_t{0x5e06068f884e73a7}},
- {"naSBSjtOKgAOg8XVbR5cHAW3Y+QL4Pb/JO9/"
- "oy6L08wvVRZqo0BrssMwhzBP401Um7A4ppAupbQeJFdMrysY34AuSSNvtNUy5VxjNECwiNt"
- "gwYHw7yakDUv8WvonctmnoSPKENegQg==",
-- uint64_t{0x55290b1a8f170f59}, uint64_t{0xe42aef38359362d9}},
-+ uint64_t{0x55290b1a8f170f59}},
- {"vPyl8DxVeRe1OpilKb9KNwpGkQRtA94UpAHetNh+"
- "95V7nIW38v7PpzhnTWIml5kw3So1Si0TXtIUPIbsu32BNhoH7QwFvLM+"
- "JACgSpc5e3RjsL6Qwxxi11npwxRmRUqATDeMUfRAjxg=",
-- uint64_t{0x5501cfd83dfe706a}, uint64_t{0xc8e95657348a3891}},
-+ uint64_t{0x5501cfd83dfe706a}},
- {"QC9i2GjdTMuNC1xQJ74ngKfrlA4w3o58FhvNCltdIpuMhHP1YsDA78scQPLbZ3OCUgeQguY"
- "f/vw6zAaVKSgwtaykqg5ka/4vhz4hYqWU5ficdXqClHl+zkWEY26slCNYOM5nnDlly8Cj",
-- uint64_t{0xe43ed13d13a66990}, uint64_t{0xc162eca864f238c6}},
-+ uint64_t{0xe43ed13d13a66990}},
- {"7CNIgQhAHX27nxI0HeB5oUTnTdgKpRDYDKwRcXfSFGP1XeT9nQF6WKCMjL1tBV6x7KuJ91G"
- "Zz11F4c+8s+MfqEAEpd4FHzamrMNjGcjCyrVtU6y+7HscMVzr7Q/"
- "ODLcPEFztFnwjvCjmHw==",
-- uint64_t{0xdf43bc375cf5283f}, uint64_t{0xbe1fb373e20579ad}},
-+ uint64_t{0xdf43bc375cf5283f}},
- {"Qa/hC2RPXhANSospe+gUaPfjdK/yhQvfm4cCV6/pdvCYWPv8p1kMtKOX3h5/"
- "8oZ31fsmx4Axphu5qXJokuhZKkBUJueuMpxRyXpwSWz2wELx5glxF7CM0Fn+"
- "OevnkhUn5jsPlG2r5jYlVn8=",
-- uint64_t{0x8112b806d288d7b5}, uint64_t{0x628a1d4f40aa6ffd}},
-+ uint64_t{0x8112b806d288d7b5}},
- {"kUw/0z4l3a89jTwN5jpG0SHY5km/"
- "IVhTjgM5xCiPRLncg40aqWrJ5vcF891AOq5hEpSq0bUCJUMFXgct7kvnys905HjerV7Vs1G"
- "y84tgVJ70/2+pAZTsB/PzNOE/G6sOj4+GbTzkQu819OLB",
-- uint64_t{0xd52a18abb001cb46}, uint64_t{0xa87bdb7456340f90}},
-+ uint64_t{0xd52a18abb001cb46}},
- {"VDdfSDbO8Tdj3T5W0XM3EI7iHh5xpIutiM6dvcJ/fhe23V/srFEkDy5iZf/"
- "VnA9kfi2C79ENnFnbOReeuZW1b3MUXB9lgC6U4pOTuC+"
- "jHK3Qnpyiqzj7h3ISJSuo2pob7vY6VHZo6Fn7exEqHg==",
-- uint64_t{0xe12b76a2433a1236}, uint64_t{0x5960ef3ba982c801}},
-+ uint64_t{0xe12b76a2433a1236}},
- {"Ldfvy3ORdquM/R2fIkhH/ONi69mcP1AEJ6n/"
- "oropwecAsLJzQSgezSY8bEiEs0VnFTBBsW+RtZY6tDj03fnb3amNUOq1b7jbqyQkL9hpl+"
- "2Z2J8IaVSeownWl+bQcsR5/xRktIMckC5AtF4YHfU=",
-- uint64_t{0x175bf7319cf1fa00}, uint64_t{0x5026586df9a431ec}},
-+ uint64_t{0x175bf7319cf1fa00}},
- {"BrbNpb42+"
- "VzZAjJw6QLirXzhweCVRfwlczzZ0VX2xluskwBqyfnGovz5EuX79JJ31VNXa5hTkAyQat3l"
- "YKRADTdAdwE5PqM1N7YaMqqsqoAAAeuYVXuk5eWCykYmClNdSspegwgCuT+403JigBzi",
-- uint64_t{0xd63d57b3f67525ae}, uint64_t{0xfe4b8a20fdf0840b}},
-+ uint64_t{0xd63d57b3f67525ae}},
- {"gB3NGHJJvVcuPyF0ZSvHwnWSIfmaI7La24VMPQVoIIWF7Z74NltPZZpx2f+cocESM+"
- "ILzQW9p+BC8x5IWz7N4Str2WLGKMdgmaBfNkEhSHQDU0IJEOnpUt0HmjhFaBlx0/"
- "LTmhua+rQ6Wup8ezLwfg==",
-- uint64_t{0x933faea858832b73}, uint64_t{0xdcb761867da7072f}},
-+ uint64_t{0x933faea858832b73}},
- {"hTKHlRxx6Pl4gjG+6ksvvj0CWFicUg3WrPdSJypDpq91LUWRni2KF6+"
- "81ZoHBFhEBrCdogKqeK+hy9bLDnx7g6rAFUjtn1+cWzQ2YjiOpz4+"
- "ROBB7lnwjyTGWzJD1rXtlso1g2qVH8XJVigC5M9AIxM=",
-- uint64_t{0x53d061e5f8e7c04f}, uint64_t{0xc10d4653667275b7}},
-+ uint64_t{0x53d061e5f8e7c04f}},
- {"IWQBelSQnhrr0F3BhUpXUIDauhX6f95Qp+A0diFXiUK7irwPG1oqBiqHyK/SH/"
- "9S+"
- "rln9DlFROAmeFdH0OCJi2tFm4afxYzJTFR4HnR4cG4x12JqHaZLQx6iiu6CE3rtWBVz99oA"
- "wCZUOEXIsLU24o2Y",
-- uint64_t{0xdb4124556dd515e0}, uint64_t{0x727720deec13110b}},
-+ uint64_t{0xdb4124556dd515e0}},
- {"TKo+l+"
- "1dOXdLvIrFqeLaHdm0HZnbcdEgOoLVcGRiCbAMR0j5pIFw8D36tefckAS1RCFOH5IgP8yiF"
- "T0Gd0a2hI3+"
- "fTKA7iK96NekxWeoeqzJyctc6QsoiyBlkZerRxs5RplrxoeNg29kKDTM0K94mnhD9g==",
-- uint64_t{0x4fb31a0dd681ee71}, uint64_t{0x710b009662858dc9}},
-+ uint64_t{0x4fb31a0dd681ee71}},
- {"YU4e7G6EfQYvxCFoCrrT0EFgVLHFfOWRTJQJ5gxM3G2b+"
- "1kJf9YPrpsxF6Xr6nYtS8reEEbDoZJYqnlk9lXSkVArm88Cqn6d25VCx3+"
- "49MqC0trIlXtb7SXUUhwpJK16T0hJUfPH7s5cMZXc6YmmbFuBNPE=",
-- uint64_t{0x27cc72eefa138e4c}, uint64_t{0xfbf8f7a3ecac1eb7}},
-+ uint64_t{0x27cc72eefa138e4c}},
- {"/I/"
- "eImMwPo1U6wekNFD1Jxjk9XQVi1D+"
- "FPdqcHifYXQuP5aScNQfxMAmaPR2XhuOQhADV5tTVbBKwCDCX4E3jcDNHzCiPvViZF1W27t"
- "xaf2BbFQdwKrNCmrtzcluBFYu0XZfc7RU1RmxK/RtnF1qHsq/O4pp",
-- uint64_t{0x44bc2dfba4bd3ced}, uint64_t{0xb6fc4fcd0722e3df}},
-+ uint64_t{0x44bc2dfba4bd3ced}},
- {"CJTT9WGcY2XykTdo8KodRIA29qsqY0iHzWZRjKHb9alwyJ7RZAE3V5Juv4MY3MeYEr1EPCC"
- "MxO7yFXqT8XA8YTjaMp3bafRt17Pw8JC4iKJ1zN+WWKOESrj+"
- "3aluGQqn8z1EzqY4PH7rLG575PYeWsP98BugdA==",
-- uint64_t{0x242da1e3a439bed8}, uint64_t{0x7cb86dcc55104aac}},
-+ uint64_t{0x242da1e3a439bed8}},
- {"ZlhyQwLhXQyIUEnMH/"
- "AEW27vh9xrbNKJxpWGtrEmKhd+nFqAfbeNBQjW0SfG1YI0xQkQMHXjuTt4P/"
- "EpZRtA47ibZDVS8TtaxwyBjuIDwqcN09eCtpC+Ls+"
- "vWDTLmBeDM3u4hmzz4DQAYsLiZYSJcldg9Q3wszw=",
-- uint64_t{0xdc559c746e35c139}, uint64_t{0x19e71e9b45c3a51e}},
-+ uint64_t{0xdc559c746e35c139}},
- {"v2KU8y0sCrBghmnm8lzGJlwo6D6ObccAxCf10heoDtYLosk4ztTpLlpSFEyu23MLA1tJkcg"
- "Rko04h19QMG0mOw/"
- "wc93EXAweriBqXfvdaP85sZABwiKO+6rtS9pacRVpYYhHJeVTQ5NzrvBvi1huxAr+"
- "xswhVMfL",
-- uint64_t{0xd0b0350275b9989}, uint64_t{0x51de38573c2bea48}},
-+ uint64_t{0xd0b0350275b9989}},
- {"QhKlnIS6BuVCTQsnoE67E/"
- "yrgogE8EwO7xLaEGei26m0gEU4OksefJgppDh3X0x0Cs78Dr9IHK5b977CmZlrTRmwhlP8p"
- "M+UzXPNRNIZuN3ntOum/QhUWP8SGpirheXENWsXMQ/"
- "nxtxakyEtrNkKk471Oov9juP8oQ==",
-- uint64_t{0xb04489e41d17730c}, uint64_t{0xa73ab6996d6df158}},
-+ uint64_t{0xb04489e41d17730c}},
- {"/ZRMgnoRt+Uo6fUPr9FqQvKX7syhgVqWu+"
- "WUSsiQ68UlN0efSP6Eced5gJZL6tg9gcYJIkhjuQNITU0Q3TjVAnAcobgbJikCn6qZ6pRxK"
- "BY4MTiAlfGD3T7R7hwJwx554MAy++Zb/YUFlnCaCJiwQMnowF7aQzwYFCo=",
-- uint64_t{0x2217285eb4572156}, uint64_t{0x55ef2b8c930817b2}},
-+ uint64_t{0x2217285eb4572156}},
- {"NB7tU5fNE8nI+SXGfipc7sRkhnSkUF1krjeo6k+8FITaAtdyz+"
- "o7mONgXmGLulBPH9bEwyYhKNVY0L+njNQrZ9YC2aXsFD3PdZsxAFaBT3VXEzh+"
- "NGBTjDASNL3mXyS8Yv1iThGfHoY7T4aR0NYGJ+k+pR6f+KrPC96M",
-- uint64_t{0x12c2e8e68aede73b}, uint64_t{0xb2850bf5fae87157}},
-+ uint64_t{0x12c2e8e68aede73b}},
- {"8T6wrqCtEO6/rwxF6lvMeyuigVOLwPipX/FULvwyu+1wa5sQGav/"
- "2FsLHUVn6cGSi0LlFwLewGHPFJDLR0u4t7ZUyM//"
- "x6da0sWgOa5hzDqjsVGmjxEHXiaXKW3i4iSZNuxoNbMQkIbVML+"
- "DkYu9ND0O2swg4itGeVSzXA==",
-- uint64_t{0x4d612125bdc4fd00}, uint64_t{0xecf3de1acd04651f}},
-+ uint64_t{0x4d612125bdc4fd00}},
- {"Ntf1bMRdondtMv1CYr3G80iDJ4WSAlKy5H34XdGruQiCrnRGDBa+"
- "eUi7vKp4gp3BBcVGl8eYSasVQQjn7MLvb3BjtXx6c/"
- "bCL7JtpzQKaDnPr9GWRxpBXVxKREgMM7d8lm35EODv0w+"
- "hQLfVSh8OGs7fsBb68nNWPLeeSOo=",
-- uint64_t{0x81826b553954464e}, uint64_t{0xcc0a40552559ff32}},
-+ uint64_t{0x81826b553954464e}},
- {"VsSAw72Ro6xks02kaiLuiTEIWBC5bgqr4WDnmP8vglXzAhixk7td926rm9jNimL+"
- "kroPSygZ9gl63aF5DCPOACXmsbmhDrAQuUzoh9ZKhWgElLQsrqo1KIjWoZT5b5QfVUXY9lS"
- "IBg3U75SqORoTPq7HalxxoIT5diWOcJQi",
-- uint64_t{0xc2e5d345dc0ddd2d}, uint64_t{0xc385c374f20315b1}},
-+ uint64_t{0xc2e5d345dc0ddd2d}},
- {"j+loZ+C87+"
- "bJxNVebg94gU0mSLeDulcHs84tQT7BZM2rzDSLiCNxUedHr1ZWJ9ejTiBa0dqy2I2ABc++"
- "xzOLcv+//YfibtjKtYggC6/3rv0XCc7xu6d/"
- "O6xO+XOBhOWAQ+IHJVHf7wZnDxIXB8AUHsnjEISKj7823biqXjyP3g==",
-- uint64_t{0x3da6830a9e32631e}, uint64_t{0xb90208a4c7234183}},
-+ uint64_t{0x3da6830a9e32631e}},
- {"f3LlpcPElMkspNtDq5xXyWU62erEaKn7RWKlo540gR6mZsNpK1czV/"
- "sOmqaq8XAQLEn68LKj6/"
- "cFkJukxRzCa4OF1a7cCAXYFp9+wZDu0bw4y63qbpjhdCl8GO6Z2lkcXy7KOzbPE01ukg7+"
- "gN+7uKpoohgAhIwpAKQXmX5xtd0=",
-- uint64_t{0xc9ae5c8759b4877a}, uint64_t{0x58aa1ca7a4c075d9}},
-+ uint64_t{0xc9ae5c8759b4877a}},
-+ };
-+
-+ constexpr uint64_t kGolden[kNumGoldenOutputs] = {
-+ 0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8,
-+ 0xa6630143a7e6aa6f, 0x8787cb2d04b0c984, 0x33603654ff574ac2,
-+ 0xa6564b468248c683, 0xef192f401b116e1c, 0xbe8dc0c54617639d,
-+ 0x93d7f665b5521c8e, 0x646d70bb42445f28, 0x96a7b1e3cc9bd426,
-+ 0x76020289ab0790c4, 0x39f842e4133b9b44, 0x2b8d7047be4bcaab,
-+ 0x99628abef6716a97, 0x4432e02ba42b2740, 0x74d810efcad7918a,
-+ 0x88c84e986002507f, 0x4f99acf193cf39b9, 0xd90e7a3655891e37,
-+ 0x3bb378b1d4df8fcf, 0xf78e94045c052d47, 0x26da0b2130da6b40,
-+ 0x30b4d426af8c6986, 0x5413b4aaf3baaeae, 0x756ab265370a1597,
-+ 0xdaf5f4b7d09814fb, 0x8f874ae37742b75e, 0x8fecd03956121ce8,
-+ 0x229c292ea7a08285, 0x0bb4bf0692d14bae, 0x207b24ca3bdac1db,
-+ 0x64f6cd6745d3825b, 0xa2b2e1656b58df1e, 0x0d01d30d9ee7a148,
-+ 0x1cb4cd00ab804e3b, 0x4697f2637fd90999, 0x8383a756b5688c07,
-+ 0x695c29cb3696a975, 0xda2e5a5a5e971521, 0x7935d4befa056b2b,
-+ 0x38dd541ca95420fe, 0xcc06c7a4963f967f, 0xbf0f6f66e232fb20,
-+ 0xf7efb32d373fe71a, 0xe2e64634b1c12660, 0x285b8fd1638e306d,
-+ 0x658e8a4e3b714d6c, 0xf391fb968e0eb398, 0x744a9ea0cc144bf2,
-+ 0x12636f2be11012f1, 0x29c57de825948f80, 0x58c6f99ab0d1c021,
-+ 0x13e7b5a7b82fe3bb, 0x10fbc87901e02b63, 0xa24c9184901b748b,
-+ 0xcac4fd4c5080e581, 0xc38bdb7483ba68e1, 0xdb2a8069b2ceaffa,
-+ 0xdf9fe91d0d1c7887, 0xe83f49e96e2e6a08, 0x0c69e61b62ca2b62,
-+ 0xb4a4f3f85f8298fe, 0x167a1b39e1e95f41, 0xf8a2a5649855ee41,
-+ 0x27992565b595c498, 0x3e08cca5b71f9346, 0xad406b10c770a6d2,
-+ 0xd1713ce6e552bcf2, 0x753b287194c73ad3, 0x5ae41a95f600af1c,
-+ 0x4a61163b86a8bb4c, 0x42eeaa79e760c7e4, 0x698df622ef465b0a,
-+ 0x157583111e1a6026, 0xaa1388f078e793e0, 0xf10d68d0f3309360,
-+ 0x2af056184457a3de, 0x6d0058e1590b2489, 0x638f287f68817f12,
-+ 0xc46b71fecefd5467, 0x2c8e94679d964e0a, 0x8612b797ce22503a,
-+ 0x59f929babfba7170, 0x9527556923fb49a0, 0x1039ab644f5e150b,
-+ 0x7816c83f3aa05e6d, 0xf51d2f564518c619, 0x67d494cff03ac004,
-+ 0x2802d636ced1cfbb, 0xf64e20bad771cb12, 0x0b9a6cf84a83e15e,
-+ 0x8da6630319609301, 0x40946a86e2a996f3, 0xcab7f5997953fa76,
-+ 0x39129ca0e04fc465, 0x5238221fd685e1b8, 0x175130c407dbcaab,
-+ 0x02f20e7536c0b0df, 0x2742cb488a04ad56, 0xd6afb593879ff93b,
-+ 0xf50ad64caac0ca7f, 0x2ade95c4261364ae, 0x5c4f3299faacd07a,
-+ 0xfffe3bff0ae5e9bc, 0x1db785c0005166e4, 0xea000d962ad18418,
-+ 0xe42aef38359362d9, 0xc8e95657348a3891, 0xc162eca864f238c6,
-+ 0xbe1fb373e20579ad, 0x628a1d4f40aa6ffd, 0xa87bdb7456340f90,
-+ 0x5960ef3ba982c801, 0x5026586df9a431ec, 0xfe4b8a20fdf0840b,
-+ 0xdcb761867da7072f, 0xc10d4653667275b7, 0x727720deec13110b,
-+ 0x710b009662858dc9, 0xfbf8f7a3ecac1eb7, 0xb6fc4fcd0722e3df,
-+ 0x7cb86dcc55104aac, 0x19e71e9b45c3a51e, 0x51de38573c2bea48,
-+ 0xa73ab6996d6df158, 0x55ef2b8c930817b2, 0xb2850bf5fae87157,
-+ 0xecf3de1acd04651f, 0xcc0a40552559ff32, 0xc385c374f20315b1,
-+ 0xb90208a4c7234183, 0x58aa1ca7a4c075d9,
- };
-
-- for (const auto& expected_result : expected_results) {
-+#if UPDATE_GOLDEN
-+ (void)kGolden; // Silence warning.
-+ for (size_t i = 0; i < kNumGoldenOutputs; ++i) {
-+ std::string str;
-+ ASSERT_TRUE(absl::Base64Unescape(cases[i].base64_data, &str));
-+ uint64_t h = absl::hash_internal::Wyhash(str.data(), str.size(),
-+ cases[i].seed, kSalt);
-+ printf("0x%016" PRIx64 ", ", h);
-+ if (i % 3 == 2) {
-+ printf("\n");
-+ }
-+ }
-+ printf("\n\n\n");
-+ EXPECT_FALSE(true);
-+#else
-+ for (size_t i = 0; i < kNumGoldenOutputs; ++i) {
-+ SCOPED_TRACE(::testing::Message()
-+ << "i = " << i << "; input = " << cases[i].base64_data);
- std::string str;
-- ASSERT_TRUE(absl::Base64Unescape(expected_result.base64_data, &str));
-- EXPECT_EQ(absl::hash_internal::Wyhash(str.data(), str.size(),
-- expected_result.seed, kSalt),
-- expected_result.hash);
-+ ASSERT_TRUE(absl::Base64Unescape(cases[i].base64_data, &str));
-+ EXPECT_EQ(absl::hash_internal::Wyhash(str.data(), str.size(), cases[i].seed,
-+ kSalt),
-+ kGolden[i]);
- }
-+#endif
- }
-
- } // namespace
diff --git a/debian/patches/big-endian-hash2.diff b/debian/patches/big-endian-hash2.diff
deleted file mode 100644
index 69ffa8a5..00000000
--- a/debian/patches/big-endian-hash2.diff
+++ /dev/null
@@ -1,164 +0,0 @@
-From: Milad Fa <46688537+miladfarca@users.noreply.github.com>
-Subject: Fix hashing on big endian platforms (#1028)
-Forwarded: https://github.com/abseil/abseil-cpp/pull/1028
-Origin: backport, https://github.com/abseil/abseil-cpp/commit/ae0f4c266095c9003786cd571bc1fb72544104a1
-Bug-Debian: https://bugs.debian.org/977638
-
-Avoid using libstdc++'s implementation of std::hash<std::bitset> and
-std::hash<std::vector> on big endian platforms in the implementation
-of absl::Hash.
-
-This is a workaround for a buggy implementation that results in many
-collisions.
-
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102531
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98731
-
---- a/absl/hash/internal/hash.h
-+++ b/absl/hash/internal/hash.h
-@@ -21,6 +21,7 @@
-
- #include <algorithm>
- #include <array>
-+#include <bitset>
- #include <cmath>
- #include <cstring>
- #include <deque>
-@@ -489,8 +490,9 @@
-
- // AbslHashValue for hashing std::vector
- //
--// Do not use this for vector<bool>. It does not have a .data(), and a fallback
--// for std::hash<> is most likely faster.
-+// Do not use this for vector<bool> on platforms that have a working
-+// implementation of std::hash. It does not have a .data(), and a fallback for
-+// std::hash<> is most likely faster.
- template <typename H, typename T, typename Allocator>
- typename std::enable_if<is_hashable<T>::value && !std::is_same<T, bool>::value,
- H>::type
-@@ -500,6 +502,27 @@
- vector.size());
- }
-
-+#if defined(ABSL_IS_BIG_ENDIAN) && \
-+ (defined(__GLIBCXX__) || defined(__GLIBCPP__))
-+// AbslHashValue for hashing std::vector<bool>
-+//
-+// std::hash in libstdc++ does not work correctly with vector<bool> on Big
-+// Endian platforms therefore we need to implement a custom AbslHashValue for
-+// it. More details on the bug:
-+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102531
-+template <typename H, typename T, typename Allocator>
-+typename std::enable_if<is_hashable<T>::value && std::is_same<T, bool>::value,
-+ H>::type
-+AbslHashValue(H hash_state, const std::vector<T, Allocator>& vector) {
-+ typename H::AbslInternalPiecewiseCombiner combiner;
-+ for (const auto& i : vector) {
-+ unsigned char c = static_cast<unsigned char>(i);
-+ hash_state = combiner.add_buffer(std::move(hash_state), &c, sizeof(c));
-+ }
-+ return H::combine(combiner.finalize(std::move(hash_state)), vector.size());
-+}
-+#endif
-+
- // -----------------------------------------------------------------------------
- // AbslHashValue for Ordered Associative Containers
- // -----------------------------------------------------------------------------
-@@ -592,9 +615,28 @@
- // AbslHashValue for Other Types
- // -----------------------------------------------------------------------------
-
--// AbslHashValue for hashing std::bitset is not defined, for the same reason as
--// for vector<bool> (see std::vector above): It does not expose the raw bytes,
--// and a fallback to std::hash<> is most likely faster.
-+// AbslHashValue for hashing std::bitset is not defined on Little Endian
-+// platforms, for the same reason as for vector<bool> (see std::vector above):
-+// It does not expose the raw bytes, and a fallback to std::hash<> is most
-+// likely faster.
-+
-+#if defined(ABSL_IS_BIG_ENDIAN) && \
-+ (defined(__GLIBCXX__) || defined(__GLIBCPP__))
-+// AbslHashValue for hashing std::bitset
-+//
-+// std::hash in libstdc++ does not work correctly with std::bitset on Big Endian
-+// platforms therefore we need to implement a custom AbslHashValue for it. More
-+// details on the bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102531
-+template <typename H, size_t N>
-+H AbslHashValue(H hash_state, const std::bitset<N>& set) {
-+ typename H::AbslInternalPiecewiseCombiner combiner;
-+ for (int i = 0; i < N; i++) {
-+ unsigned char c = static_cast<unsigned char>(set[i]);
-+ hash_state = combiner.add_buffer(std::move(hash_state), &c, sizeof(c));
-+ }
-+ return H::combine(combiner.finalize(std::move(hash_state)), N);
-+}
-+#endif
-
- // -----------------------------------------------------------------------------
-
---- a/absl/hash/internal/wyhash_test.cc
-+++ b/absl/hash/internal/wyhash_test.cc
-@@ -404,6 +404,55 @@
- uint64_t{0xc9ae5c8759b4877a}},
- };
-
-+#if defined(ABSL_IS_BIG_ENDIAN)
-+ constexpr uint64_t kGolden[kNumGoldenOutputs] = {
-+ 0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8,
-+ 0xa6630143a7e6aa6f, 0x17645cb7318b86b, 0x218b175f30ba61f8,
-+ 0xa6564b468248c683, 0xef192f401b116e1c, 0xbe8dc0c54617639d,
-+ 0xe7b01610fc22dbb8, 0x99d9f694404af913, 0xf4eecd37464b45c5,
-+ 0x7d2c653d63596d9b, 0x3f15c8544ec5393a, 0x6b9dc0c1704f796c,
-+ 0xf1ded7a7eae5ed5a, 0x2db2fd7c6dd4641b, 0x151ca2d3d4cd33ab,
-+ 0xa5af5994ac2ccd64, 0x2b2a4ca3191d2fce, 0xf89e68c9364e7c05,
-+ 0x71724c70b799c21, 0x70536fabfd157369, 0xdee92794c3c3082b,
-+ 0xac033a6743d3b3eb, 0xed2956b506cd5151, 0xbd669644755264b6,
-+ 0x6ab1ff5d5f549a63, 0xf6bd551a2e3e04e, 0x7b5a8cef6875ea73,
-+ 0x22bccf4d4db0a91c, 0x4f2bc07754c7c7eb, 0xfb6b8342a86725db,
-+ 0x13a1a0d4c5854da, 0x5f6e44655f7dedac, 0x54a9198dff2bdf85,
-+ 0xdb17e6915d4e4042, 0xa69926cf5c3b89f, 0xf77f031bfd74c096,
-+ 0x1d6f916fdd50ec3c, 0x334ac76013ade393, 0x99370f899111de15,
-+ 0x352457a03ada6de, 0x341974d4f42d854d, 0xda89ab02872aeb5,
-+ 0x6ec2b74e143b10d9, 0x6f284c0b5cd60522, 0xf9670de353438f88,
-+ 0xde920913adf0a2b4, 0xb7a07d7c0c17a8ec, 0x879a69f558ba3a98,
-+ 0x360cf6d802df20f9, 0x53530f8046673738, 0xbd8f5f2bcf35e483,
-+ 0x3f171f047144b983, 0x644d04e820823465, 0x50e44773a20b2702,
-+ 0xe584ed4c05c745dd, 0x9a825c85b95ab6c0, 0xbce2931deb74e775,
-+ 0x10468e9e705c7cfe, 0x12e01de3104141e2, 0x5c11ae2ee3713abd,
-+ 0x6ac5ffb0860319e6, 0xc1e6da1849d30fc9, 0xa0e4d247a458b447,
-+ 0x4530d4615c32b89b, 0x116aa09107a76505, 0xf941339d00d9bb73,
-+ 0x573a0fc1615afb33, 0xa975c81dc868b258, 0x3ab2c5250ab54bda,
-+ 0x37f99f208a3e3b11, 0x4b49b0ff706689d, 0x30bafa0b8f0a87fe,
-+ 0xea6787a65cc20cdd, 0x55861729f1fc3ab8, 0xea38e009c5be9b72,
-+ 0xcb8522cba33c3c66, 0x352e77653fe306f3, 0xe0bb760793bac064,
-+ 0xf66ec59322662956, 0x637aa320455d56f8, 0x46ee546be5824a89,
-+ 0x9e6842421e83d8a4, 0xf98ac2bc96b9fb8c, 0xf2c1002fd9a70b99,
-+ 0x4c2b62b1e39e9405, 0x3248555fa3ade9c4, 0xd4d04c37f6417c21,
-+ 0xf40cd506b1bf5653, 0x6c45d6005c760d2f, 0x61d88a7e61ff0d7e,
-+ 0x131591e8a53cc967, 0xdae85cb9bc29bab6, 0xe98835334905e626,
-+ 0x7cce50a2b66b8754, 0x5b0b3d0c5ac498ae, 0xd35a218c974d1756,
-+ 0xfce436ddc1d003c, 0xd183901de90bb741, 0x9378f8f34974a66,
-+ 0x21f11ae0a0402368, 0xf2fbd7c94ef89cb6, 0xc329c69d0f0d080b,
-+ 0xf2841cba16216a61, 0x47aba97b44916df1, 0x724d4e00a8019fcf,
-+ 0x2df9005c2a728d63, 0xc788892a1a5d7515, 0x9e993a65f9df0480,
-+ 0x76876721ff49f969, 0xbe7a796cfba15bf5, 0xa4c8bd54586f5488,
-+ 0xb390a325275501ab, 0x893f11317427ccf1, 0x92f2bb57da5695b9,
-+ 0x30985b90da88269f, 0x2c690e268e086de8, 0x1c02df6097997196,
-+ 0x1f9778f8bbdf6455, 0x7d57378c7bf8416d, 0xba8582a5f8d84d38,
-+ 0xe8ca43b85050be4e, 0x5048cf6bed8a5d9f, 0xfbc5ba80917d0ea4,
-+ 0x8011026525bf1691, 0x26b8dc6aed9fb50d, 0x191f5bfee77c1fe3,
-+ 0xdd497891465a2cc1, 0x6f1fe8c57a33072e, 0x2c9f4ec078c460c0,
-+ 0x9a725bde8f6a1437, 0x6ce545fa3ef61e4d,
-+ };
-+#else
- constexpr uint64_t kGolden[kNumGoldenOutputs] = {
- 0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8,
- 0xa6630143a7e6aa6f, 0x8787cb2d04b0c984, 0x33603654ff574ac2,
-@@ -451,6 +500,7 @@
- 0xecf3de1acd04651f, 0xcc0a40552559ff32, 0xc385c374f20315b1,
- 0xb90208a4c7234183, 0x58aa1ca7a4c075d9,
- };
-+#endif
-
- #if UPDATE_GOLDEN
- (void)kGolden; // Silence warning.
diff --git a/debian/patches/big-endian-random.diff b/debian/patches/big-endian-random.diff
deleted file mode 100644
index a859aca5..00000000
--- a/debian/patches/big-endian-random.diff
+++ /dev/null
@@ -1,698 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Use absl::uint128 for AES random number generator
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/b06e719ee985ecd63e0dffbc68499549216f817f
-
-Replace randen’s internal 128-bit integer struct, u64x2, with
-absl::uint128. This eliminates some code and improves support for
-big-endian platforms.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 383475671 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/random/internal/BUILD.bazel
-+++ b/absl/random/internal/BUILD.bazel
-@@ -296,6 +296,7 @@ cc_library(name = "randen_slow",
- ":platform",
- "//absl/base:config",
- "//absl/base:core_headers",
-+ "//absl/numeric:int128",
- ],
- )
-
-@@ -336,6 +337,7 @@ cc_library(name="randen_hwaes_impl",
- ":platform",
- "//absl/base:config",
- "//absl/base:core_headers",
-+ "//absl/numeric:int128",
- ],
- )
-
---- a/absl/random/internal/randen_hwaes.cc
-+++ b/absl/random/internal/randen_hwaes.cc
-@@ -23,6 +23,7 @@
- #include <cstring>
-
- #include "absl/base/attributes.h"
-+#include "absl/numeric/int128.h"
- #include "absl/random/internal/platform.h"
- #include "absl/random/internal/randen_traits.h"
-
-@@ -120,11 +121,6 @@
-
- using absl::random_internal::RandenTraits;
-
--// Randen operates on 128-bit vectors.
--struct alignas(16) u64x2 {
-- uint64_t data[2];
--};
--
- } // namespace
-
- // TARGET_CRYPTO defines a crypto attribute for each architecture.
-@@ -186,7 +182,7 @@
- }
-
- // Enables native loads in the round loop by pre-swapping.
--inline ABSL_TARGET_CRYPTO void SwapEndian(u64x2* state) {
-+inline ABSL_TARGET_CRYPTO void SwapEndian(absl::uint128* state) {
- for (uint32_t block = 0; block < RandenTraits::kFeistelBlocks; ++block) {
- Vector128Store(ReverseBytes(Vector128Load(state + block)), state + block);
- }
-@@ -327,7 +323,7 @@
-
- // Block shuffles applies a shuffle to the entire state between AES rounds.
- // Improved odd-even shuffle from "New criterion for diffusion property".
--inline ABSL_TARGET_CRYPTO void BlockShuffle(u64x2* state) {
-+inline ABSL_TARGET_CRYPTO void BlockShuffle(absl::uint128* state) {
- static_assert(RandenTraits::kFeistelBlocks == 16,
- "Expecting 16 FeistelBlocks.");
-
-@@ -374,8 +370,9 @@
- // per 16 bytes (vs. 10 for AES-CTR). Computing eight round functions in
- // parallel hides the 7-cycle AESNI latency on HSW. Note that the Feistel
- // XORs are 'free' (included in the second AES instruction).
--inline ABSL_TARGET_CRYPTO const u64x2* FeistelRound(
-- u64x2* state, const u64x2* ABSL_RANDOM_INTERNAL_RESTRICT keys) {
-+inline ABSL_TARGET_CRYPTO const absl::uint128* FeistelRound(
-+ absl::uint128* state,
-+ const absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT keys) {
- static_assert(RandenTraits::kFeistelBlocks == 16,
- "Expecting 16 FeistelBlocks.");
-
-@@ -436,7 +433,8 @@
- // 2^64 queries if the round function is a PRF. This is similar to the b=8 case
- // of Simpira v2, but more efficient than its generic construction for b=16.
- inline ABSL_TARGET_CRYPTO void Permute(
-- u64x2* state, const u64x2* ABSL_RANDOM_INTERNAL_RESTRICT keys) {
-+ absl::uint128* state,
-+ const absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT keys) {
- // (Successfully unrolled; the first iteration jumps into the second half)
- #ifdef __clang__
- #pragma clang loop unroll_count(2)
-@@ -473,10 +471,11 @@ void ABSL_TARGET_CRYPTO RandenHwAes::Absorb(const void* seed_void,
- static_assert(RandenTraits::kStateBytes / sizeof(Vector128) == 16,
- "Unexpected Randen kStateBlocks");
-
-- auto* state =
-- reinterpret_cast<u64x2 * ABSL_RANDOM_INTERNAL_RESTRICT>(state_void);
-+ auto* state = reinterpret_cast<absl::uint128 * ABSL_RANDOM_INTERNAL_RESTRICT>(
-+ state_void);
- const auto* seed =
-- reinterpret_cast<const u64x2 * ABSL_RANDOM_INTERNAL_RESTRICT>(seed_void);
-+ reinterpret_cast<const absl::uint128 * ABSL_RANDOM_INTERNAL_RESTRICT>(
-+ seed_void);
-
- Vector128 b1 = Vector128Load(state + 1);
- b1 ^= Vector128Load(seed + 0);
-@@ -545,8 +544,8 @@ void ABSL_TARGET_CRYPTO RandenHwAes::Generate(const void* keys_void,
- static_assert(RandenTraits::kCapacityBytes == sizeof(Vector128),
- "Capacity mismatch");
-
-- auto* state = reinterpret_cast<u64x2*>(state_void);
-- const auto* keys = reinterpret_cast<const u64x2*>(keys_void);
-+ auto* state = reinterpret_cast<absl::uint128*>(state_void);
-+ const auto* keys = reinterpret_cast<const absl::uint128*>(keys_void);
-
- const Vector128 prev_inner = Vector128Load(state);
-
---- a/absl/random/internal/randen_slow.cc
-+++ b/absl/random/internal/randen_slow.cc
-@@ -19,6 +19,7 @@
- #include <cstring>
-
- #include "absl/base/attributes.h"
-+#include "absl/numeric/int128.h"
- #include "absl/random/internal/platform.h"
- #include "absl/random/internal/randen_traits.h"
-
-@@ -38,192 +39,193 @@
- namespace {
-
- // AES portions based on rijndael-alg-fst.c,
--// https://fastcrypto.org/front/misc/rijndael-alg-fst.c
-+// https://fastcrypto.org/front/misc/rijndael-alg-fst.c, and modified for
-+// little-endianness.
- //
- // Implementation of
- // http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf
- constexpr uint32_t te0[256] = {
-- 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd,
-- 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d,
-- 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d,
-- 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b,
-- 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7,
-- 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a,
-- 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4,
-- 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f,
-- 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1,
-- 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d,
-- 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e,
-- 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb,
-- 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e,
-- 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c,
-- 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46,
-- 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a,
-- 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7,
-- 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81,
-- 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe,
-- 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504,
-- 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a,
-- 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f,
-- 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2,
-- 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395,
-- 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e,
-- 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c,
-- 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256,
-- 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4,
-- 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4,
-- 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7,
-- 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa,
-- 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818,
-- 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1,
-- 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21,
-- 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42,
-- 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12,
-- 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158,
-- 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133,
-- 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22,
-- 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a,
-- 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631,
-- 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11,
-- 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a,
-+ 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0x0df2f2ff, 0xbd6b6bd6,
-+ 0xb16f6fde, 0x54c5c591, 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56,
-+ 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, 0x45caca8f, 0x9d82821f,
-+ 0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb,
-+ 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453,
-+ 0x967272e4, 0x5bc0c09b, 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c,
-+ 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, 0x5c343468, 0xf4a5a551,
-+ 0x34e5e5d1, 0x08f1f1f9, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a,
-+ 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637,
-+ 0x0f05050a, 0xb59a9a2f, 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df,
-+ 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, 0x1b090912, 0x9e83831d,
-+ 0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b,
-+ 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd,
-+ 0x712f2f5e, 0x97848413, 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1,
-+ 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, 0xbe6a6ad4, 0x46cbcb8d,
-+ 0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85,
-+ 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a,
-+ 0x55333366, 0x94858511, 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe,
-+ 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, 0xf35151a2, 0xfea3a35d,
-+ 0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1,
-+ 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5,
-+ 0x0ef3f3fd, 0x6dd2d2bf, 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3,
-+ 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, 0x57c4c493, 0xf2a7a755,
-+ 0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6,
-+ 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54,
-+ 0xab90903b, 0x8388880b, 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428,
-+ 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, 0x3be0e0db, 0x56323264,
-+ 0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8,
-+ 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531,
-+ 0x37e4e4d3, 0x8b7979f2, 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda,
-+ 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, 0xb46c6cd8, 0xfa5656ac,
-+ 0x07f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810,
-+ 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657,
-+ 0xc7b4b473, 0x51c6c697, 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e,
-+ 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, 0x907070e0, 0x423e3e7c,
-+ 0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c,
-+ 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199,
-+ 0x271d1d3a, 0xb99e9e27, 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122,
-+ 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, 0xb69b9b2d, 0x221e1e3c,
-+ 0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5,
-+ 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7,
-+ 0xc6424284, 0xb86868d0, 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e,
-+ 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c,
- };
-
- constexpr uint32_t te1[256] = {
-- 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b,
-- 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b,
-- 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282,
-- 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0,
-- 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4,
-- 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626,
-- 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5,
-- 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515,
-- 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696,
-- 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2,
-- 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383,
-- 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0,
-- 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3,
-- 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded,
-- 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb,
-- 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf,
-- 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d,
-- 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f,
-- 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3,
-- 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5,
-- 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff,
-- 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec,
-- 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7,
-- 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373,
-- 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a,
-- 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414,
-- 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232,
-- 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c,
-- 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595,
-- 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d,
-- 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656,
-- 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808,
-- 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6,
-- 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f,
-- 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e,
-- 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e,
-- 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1,
-- 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111,
-- 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e,
-- 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf,
-- 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6,
-- 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f,
-- 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616,
-+ 0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, 0xf2f2ff0d, 0x6b6bd6bd,
-+ 0x6f6fdeb1, 0xc5c59154, 0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d,
-+ 0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, 0xcaca8f45, 0x82821f9d,
-+ 0xc9c98940, 0x7d7dfa87, 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b,
-+ 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, 0x9c9c23bf, 0xa4a453f7,
-+ 0x7272e496, 0xc0c09b5b, 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a,
-+ 0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, 0x3434685c, 0xa5a551f4,
-+ 0xe5e5d134, 0xf1f1f908, 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f,
-+ 0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, 0x18183028, 0x969637a1,
-+ 0x05050a0f, 0x9a9a2fb5, 0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d,
-+ 0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, 0x0909121b, 0x83831d9e,
-+ 0x2c2c5874, 0x1a1a342e, 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb,
-+ 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, 0x2929527b, 0xe3e3dd3e,
-+ 0x2f2f5e71, 0x84841397, 0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c,
-+ 0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, 0x6a6ad4be, 0xcbcb8d46,
-+ 0xbebe67d9, 0x3939724b, 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a,
-+ 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, 0x434386c5, 0x4d4d9ad7,
-+ 0x33336655, 0x85851194, 0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81,
-+ 0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, 0x5151a2f3, 0xa3a35dfe,
-+ 0x404080c0, 0x8f8f058a, 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104,
-+ 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, 0x10102030, 0xffffe51a,
-+ 0xf3f3fd0e, 0xd2d2bf6d, 0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f,
-+ 0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, 0xc4c49357, 0xa7a755f2,
-+ 0x7e7efc82, 0x3d3d7a47, 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695,
-+ 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, 0x22224466, 0x2a2a547e,
-+ 0x90903bab, 0x88880b83, 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c,
-+ 0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76, 0xe0e0db3b, 0x32326456,
-+ 0x3a3a744e, 0x0a0a141e, 0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4,
-+ 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, 0x919139a8, 0x959531a4,
-+ 0xe4e4d337, 0x7979f28b, 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7,
-+ 0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, 0x6c6cd8b4, 0x5656acfa,
-+ 0xf4f4f307, 0xeaeacf25, 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018,
-+ 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, 0x1c1c3824, 0xa6a657f1,
-+ 0xb4b473c7, 0xc6c69751, 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21,
-+ 0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, 0x7070e090, 0x3e3e7c42,
-+ 0xb5b571c4, 0x6666ccaa, 0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12,
-+ 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, 0x86861791, 0xc1c19958,
-+ 0x1d1d3a27, 0x9e9e27b9, 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233,
-+ 0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, 0x9b9b2db6, 0x1e1e3c22,
-+ 0x87871592, 0xe9e9c920, 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a,
-+ 0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17, 0xbfbf65da, 0xe6e6d731,
-+ 0x424284c6, 0x6868d0b8, 0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11,
-+ 0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a,
- };
-
- constexpr uint32_t te2[256] = {
-- 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b,
-- 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b,
-- 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82,
-- 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0,
-- 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4,
-- 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26,
-- 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5,
-- 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15,
-- 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796,
-- 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2,
-- 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83,
-- 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0,
-- 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3,
-- 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed,
-- 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb,
-- 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf,
-- 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d,
-- 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f,
-- 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3,
-- 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5,
-- 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff,
-- 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec,
-- 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7,
-- 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673,
-- 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a,
-- 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814,
-- 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432,
-- 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c,
-- 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195,
-- 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d,
-- 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56,
-- 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008,
-- 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6,
-- 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f,
-- 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e,
-- 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e,
-- 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1,
-- 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211,
-- 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e,
-- 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df,
-- 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6,
-- 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f,
-- 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16,
-+ 0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, 0xf2ff0df2, 0x6bd6bd6b,
-+ 0x6fdeb16f, 0xc59154c5, 0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b,
-+ 0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, 0xca8f45ca, 0x821f9d82,
-+ 0xc98940c9, 0x7dfa877d, 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0,
-+ 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, 0x9c23bf9c, 0xa453f7a4,
-+ 0x72e49672, 0xc09b5bc0, 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26,
-+ 0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, 0x34685c34, 0xa551f4a5,
-+ 0xe5d134e5, 0xf1f908f1, 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15,
-+ 0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, 0x18302818, 0x9637a196,
-+ 0x050a0f05, 0x9a2fb59a, 0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2,
-+ 0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, 0x09121b09, 0x831d9e83,
-+ 0x2c58742c, 0x1a342e1a, 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0,
-+ 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, 0x29527b29, 0xe3dd3ee3,
-+ 0x2f5e712f, 0x84139784, 0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced,
-+ 0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, 0x6ad4be6a, 0xcb8d46cb,
-+ 0xbe67d9be, 0x39724b39, 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf,
-+ 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, 0x4386c543, 0x4d9ad74d,
-+ 0x33665533, 0x85119485, 0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f,
-+ 0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, 0x51a2f351, 0xa35dfea3,
-+ 0x4080c040, 0x8f058a8f, 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5,
-+ 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, 0x10203010, 0xffe51aff,
-+ 0xf3fd0ef3, 0xd2bf6dd2, 0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec,
-+ 0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, 0xc49357c4, 0xa755f2a7,
-+ 0x7efc827e, 0x3d7a473d, 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573,
-+ 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, 0x22446622, 0x2a547e2a,
-+ 0x903bab90, 0x880b8388, 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14,
-+ 0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db, 0xe0db3be0, 0x32645632,
-+ 0x3a744e3a, 0x0a141e0a, 0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c,
-+ 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, 0x9139a891, 0x9531a495,
-+ 0xe4d337e4, 0x79f28b79, 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d,
-+ 0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, 0x6cd8b46c, 0x56acfa56,
-+ 0xf4f307f4, 0xeacf25ea, 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808,
-+ 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, 0x1c38241c, 0xa657f1a6,
-+ 0xb473c7b4, 0xc69751c6, 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f,
-+ 0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, 0x70e09070, 0x3e7c423e,
-+ 0xb571c4b5, 0x66ccaa66, 0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e,
-+ 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, 0x86179186, 0xc19958c1,
-+ 0x1d3a271d, 0x9e27b99e, 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311,
-+ 0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, 0x9b2db69b, 0x1e3c221e,
-+ 0x87159287, 0xe9c920e9, 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf,
-+ 0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d, 0xbf65dabf, 0xe6d731e6,
-+ 0x4284c642, 0x68d0b868, 0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f,
-+ 0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16,
- };
-
- constexpr uint32_t te3[256] = {
-- 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6,
-- 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56,
-- 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f,
-- 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb,
-- 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753,
-- 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c,
-- 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451,
-- 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a,
-- 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137,
-- 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf,
-- 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d,
-- 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b,
-- 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd,
-- 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1,
-- 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d,
-- 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85,
-- 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a,
-- 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe,
-- 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d,
-- 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1,
-- 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5,
-- 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3,
-- 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255,
-- 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6,
-- 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54,
-- 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28,
-- 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664,
-- 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8,
-- 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431,
-- 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da,
-- 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac,
-- 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810,
-- 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157,
-- 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e,
-- 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c,
-- 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c,
-- 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899,
-- 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322,
-- 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c,
-- 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5,
-- 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7,
-- 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e,
-- 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c,
-+ 0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, 0xff0df2f2, 0xd6bd6b6b,
-+ 0xdeb16f6f, 0x9154c5c5, 0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b,
-+ 0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, 0x8f45caca, 0x1f9d8282,
-+ 0x8940c9c9, 0xfa877d7d, 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0,
-+ 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, 0x23bf9c9c, 0x53f7a4a4,
-+ 0xe4967272, 0x9b5bc0c0, 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626,
-+ 0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, 0x685c3434, 0x51f4a5a5,
-+ 0xd134e5e5, 0xf908f1f1, 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515,
-+ 0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, 0x30281818, 0x37a19696,
-+ 0x0a0f0505, 0x2fb59a9a, 0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2,
-+ 0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, 0x121b0909, 0x1d9e8383,
-+ 0x58742c2c, 0x342e1a1a, 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0,
-+ 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, 0x527b2929, 0xdd3ee3e3,
-+ 0x5e712f2f, 0x13978484, 0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded,
-+ 0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, 0xd4be6a6a, 0x8d46cbcb,
-+ 0x67d9bebe, 0x724b3939, 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf,
-+ 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, 0x86c54343, 0x9ad74d4d,
-+ 0x66553333, 0x11948585, 0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f,
-+ 0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, 0xa2f35151, 0x5dfea3a3,
-+ 0x80c04040, 0x058a8f8f, 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5,
-+ 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, 0x20301010, 0xe51affff,
-+ 0xfd0ef3f3, 0xbf6dd2d2, 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec,
-+ 0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, 0x9357c4c4, 0x55f2a7a7,
-+ 0xfc827e7e, 0x7a473d3d, 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373,
-+ 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, 0x44662222, 0x547e2a2a,
-+ 0x3bab9090, 0x0b838888, 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414,
-+ 0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, 0xdb3be0e0, 0x64563232,
-+ 0x744e3a3a, 0x141e0a0a, 0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c,
-+ 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, 0x39a89191, 0x31a49595,
-+ 0xd337e4e4, 0xf28b7979, 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d,
-+ 0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, 0xd8b46c6c, 0xacfa5656,
-+ 0xf307f4f4, 0xcf25eaea, 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808,
-+ 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, 0x38241c1c, 0x57f1a6a6,
-+ 0x73c7b4b4, 0x9751c6c6, 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f,
-+ 0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a, 0xe0907070, 0x7c423e3e,
-+ 0x71c4b5b5, 0xccaa6666, 0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e,
-+ 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, 0x17918686, 0x9958c1c1,
-+ 0x3a271d1d, 0x27b99e9e, 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111,
-+ 0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494, 0x2db69b9b, 0x3c221e1e,
-+ 0x15928787, 0xc920e9e9, 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf,
-+ 0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d, 0x65dabfbf, 0xd731e6e6,
-+ 0x84c64242, 0xd0b86868, 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f,
-+ 0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616,
- };
-
- // Software implementation of the Vector128 class, using uint32_t
-@@ -235,45 +237,13 @@
- inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE Vector128
- Vector128Load(const void* from) {
- Vector128 result;
-- const uint8_t* src = reinterpret_cast<const uint8_t*>(from);
-- result.s[0] = static_cast<uint32_t>(src[0]) << 24 |
-- static_cast<uint32_t>(src[1]) << 16 |
-- static_cast<uint32_t>(src[2]) << 8 |
-- static_cast<uint32_t>(src[3]);
-- result.s[1] = static_cast<uint32_t>(src[4]) << 24 |
-- static_cast<uint32_t>(src[5]) << 16 |
-- static_cast<uint32_t>(src[6]) << 8 |
-- static_cast<uint32_t>(src[7]);
-- result.s[2] = static_cast<uint32_t>(src[8]) << 24 |
-- static_cast<uint32_t>(src[9]) << 16 |
-- static_cast<uint32_t>(src[10]) << 8 |
-- static_cast<uint32_t>(src[11]);
-- result.s[3] = static_cast<uint32_t>(src[12]) << 24 |
-- static_cast<uint32_t>(src[13]) << 16 |
-- static_cast<uint32_t>(src[14]) << 8 |
-- static_cast<uint32_t>(src[15]);
-+ std::memcpy(result.s, from, sizeof(Vector128));
- return result;
- }
-
- inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void Vector128Store(
- const Vector128& v, void* to) {
-- uint8_t* dst = reinterpret_cast<uint8_t*>(to);
-- dst[0] = static_cast<uint8_t>(v.s[0] >> 24);
-- dst[1] = static_cast<uint8_t>(v.s[0] >> 16);
-- dst[2] = static_cast<uint8_t>(v.s[0] >> 8);
-- dst[3] = static_cast<uint8_t>(v.s[0]);
-- dst[4] = static_cast<uint8_t>(v.s[1] >> 24);
-- dst[5] = static_cast<uint8_t>(v.s[1] >> 16);
-- dst[6] = static_cast<uint8_t>(v.s[1] >> 8);
-- dst[7] = static_cast<uint8_t>(v.s[1]);
-- dst[8] = static_cast<uint8_t>(v.s[2] >> 24);
-- dst[9] = static_cast<uint8_t>(v.s[2] >> 16);
-- dst[10] = static_cast<uint8_t>(v.s[2] >> 8);
-- dst[11] = static_cast<uint8_t>(v.s[2]);
-- dst[12] = static_cast<uint8_t>(v.s[3] >> 24);
-- dst[13] = static_cast<uint8_t>(v.s[3] >> 16);
-- dst[14] = static_cast<uint8_t>(v.s[3] >> 8);
-- dst[15] = static_cast<uint8_t>(v.s[3]);
-+ std::memcpy(to, v.s, sizeof(Vector128));
- }
-
- // One round of AES. "round_key" is a public constant for breaking the
-@@ -282,38 +252,33 @@
- AesRound(const Vector128& state, const Vector128& round_key) {
- Vector128 result;
- result.s[0] = round_key.s[0] ^ //
-- te0[uint8_t(state.s[0] >> 24)] ^ //
-- te1[uint8_t(state.s[1] >> 16)] ^ //
-- te2[uint8_t(state.s[2] >> 8)] ^ //
-- te3[uint8_t(state.s[3])];
-+ te0[uint8_t(state.s[0])] ^ //
-+ te1[uint8_t(state.s[1] >> 8)] ^ //
-+ te2[uint8_t(state.s[2] >> 16)] ^ //
-+ te3[uint8_t(state.s[3] >> 24)];
- result.s[1] = round_key.s[1] ^ //
-- te0[uint8_t(state.s[1] >> 24)] ^ //
-- te1[uint8_t(state.s[2] >> 16)] ^ //
-- te2[uint8_t(state.s[3] >> 8)] ^ //
-- te3[uint8_t(state.s[0])];
-+ te0[uint8_t(state.s[1])] ^ //
-+ te1[uint8_t(state.s[2] >> 8)] ^ //
-+ te2[uint8_t(state.s[3] >> 16)] ^ //
-+ te3[uint8_t(state.s[0] >> 24)];
- result.s[2] = round_key.s[2] ^ //
-- te0[uint8_t(state.s[2] >> 24)] ^ //
-- te1[uint8_t(state.s[3] >> 16)] ^ //
-- te2[uint8_t(state.s[0] >> 8)] ^ //
-- te3[uint8_t(state.s[1])];
-+ te0[uint8_t(state.s[2])] ^ //
-+ te1[uint8_t(state.s[3] >> 8)] ^ //
-+ te2[uint8_t(state.s[0] >> 16)] ^ //
-+ te3[uint8_t(state.s[1] >> 24)];
- result.s[3] = round_key.s[3] ^ //
-- te0[uint8_t(state.s[3] >> 24)] ^ //
-- te1[uint8_t(state.s[0] >> 16)] ^ //
-- te2[uint8_t(state.s[1] >> 8)] ^ //
-- te3[uint8_t(state.s[2])];
-+ te0[uint8_t(state.s[3])] ^ //
-+ te1[uint8_t(state.s[0] >> 8)] ^ //
-+ te2[uint8_t(state.s[1] >> 16)] ^ //
-+ te3[uint8_t(state.s[2] >> 24)];
- return result;
- }
-
- using ::absl::random_internal::RandenTraits;
-
--// Randen operates on 128-bit vectors.
--struct alignas(16) u64x2 {
-- uint64_t data[2];
--};
--
- // The improved Feistel block shuffle function for 16 blocks.
- inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void BlockShuffle(
-- u64x2* state) {
-+ absl::uint128* state) {
- static_assert(RandenTraits::kFeistelBlocks == 16,
- "Feistel block shuffle only works for 16 blocks.");
-
-@@ -323,31 +288,31 @@ inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void BlockShuffle(
- // The fully unrolled loop without the memcpy improves the speed by about
- // 30% over the equivalent:
- #if 0
-- u64x2 source[RandenTraits::kFeistelBlocks];
-+ absl::uint128 source[RandenTraits::kFeistelBlocks];
- std::memcpy(source, state, sizeof(source));
- for (size_t i = 0; i < RandenTraits::kFeistelBlocks; i++) {
-- const u64x2 v0 = source[shuffle[i]];
-+ const absl::uint128 v0 = source[shuffle[i]];
- state[i] = v0;
- }
- return;
- #endif
-
-- const u64x2 v0 = state[shuffle[0]];
-- const u64x2 v1 = state[shuffle[1]];
-- const u64x2 v2 = state[shuffle[2]];
-- const u64x2 v3 = state[shuffle[3]];
-- const u64x2 v4 = state[shuffle[4]];
-- const u64x2 v5 = state[shuffle[5]];
-- const u64x2 v6 = state[shuffle[6]];
-- const u64x2 v7 = state[shuffle[7]];
-- const u64x2 w0 = state[shuffle[8]];
-- const u64x2 w1 = state[shuffle[9]];
-- const u64x2 w2 = state[shuffle[10]];
-- const u64x2 w3 = state[shuffle[11]];
-- const u64x2 w4 = state[shuffle[12]];
-- const u64x2 w5 = state[shuffle[13]];
-- const u64x2 w6 = state[shuffle[14]];
-- const u64x2 w7 = state[shuffle[15]];
-+ const absl::uint128 v0 = state[shuffle[0]];
-+ const absl::uint128 v1 = state[shuffle[1]];
-+ const absl::uint128 v2 = state[shuffle[2]];
-+ const absl::uint128 v3 = state[shuffle[3]];
-+ const absl::uint128 v4 = state[shuffle[4]];
-+ const absl::uint128 v5 = state[shuffle[5]];
-+ const absl::uint128 v6 = state[shuffle[6]];
-+ const absl::uint128 v7 = state[shuffle[7]];
-+ const absl::uint128 w0 = state[shuffle[8]];
-+ const absl::uint128 w1 = state[shuffle[9]];
-+ const absl::uint128 w2 = state[shuffle[10]];
-+ const absl::uint128 w3 = state[shuffle[11]];
-+ const absl::uint128 w4 = state[shuffle[12]];
-+ const absl::uint128 w5 = state[shuffle[13]];
-+ const absl::uint128 w6 = state[shuffle[14]];
-+ const absl::uint128 w7 = state[shuffle[15]];
- state[0] = v0;
- state[1] = v1;
- state[2] = v2;
-@@ -371,9 +336,9 @@
- // per 16 bytes (vs. 10 for AES-CTR). Computing eight round functions in
- // parallel hides the 7-cycle AESNI latency on HSW. Note that the Feistel
- // XORs are 'free' (included in the second AES instruction).
--inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE const u64x2* FeistelRound(
-- u64x2* ABSL_RANDOM_INTERNAL_RESTRICT state,
-- const u64x2* ABSL_RANDOM_INTERNAL_RESTRICT keys) {
-+inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE const absl::uint128*
-+FeistelRound(absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT state,
-+ const absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT keys) {
- for (size_t branch = 0; branch < RandenTraits::kFeistelBlocks; branch += 4) {
- const Vector128 s0 = Vector128Load(state + branch);
- const Vector128 s1 = Vector128Load(state + branch + 1);
-@@ -398,7 +363,8 @@
- // 2^64 queries if the round function is a PRF. This is similar to the b=8 case
- // of Simpira v2, but more efficient than its generic construction for b=16.
- inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void Permute(
-- u64x2* state, const u64x2* ABSL_RANDOM_INTERNAL_RESTRICT keys) {
-+ absl::uint128* state,
-+ const absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT keys) {
- for (size_t round = 0; round < RandenTraits::kFeistelRounds; ++round) {
- keys = FeistelRound(state, keys);
- BlockShuffle(state);
-@@ -437,19 +403,18 @@
- }
-
- void RandenSlow::Generate(const void* keys_void, void* state_void) {
-- static_assert(RandenTraits::kCapacityBytes == sizeof(u64x2),
-+ static_assert(RandenTraits::kCapacityBytes == sizeof(absl::uint128),
- "Capacity mismatch");
-
-- auto* state = reinterpret_cast<u64x2*>(state_void);
-- const auto* keys = reinterpret_cast<const u64x2*>(keys_void);
-+ auto* state = reinterpret_cast<absl::uint128*>(state_void);
-+ const auto* keys = reinterpret_cast<const absl::uint128*>(keys_void);
-
-- const u64x2 prev_inner = state[0];
-+ const absl::uint128 prev_inner = state[0];
-
- Permute(state, keys);
-
- // Ensure backtracking resistance.
-- state[0].data[0] ^= prev_inner.data[0];
-- state[0].data[1] ^= prev_inner.data[1];
-+ *state ^= prev_inner;
- }
-
- } // namespace random_internal
diff --git a/debian/patches/big-endian-random2.diff b/debian/patches/big-endian-random2.diff
deleted file mode 100644
index 12893c9a..00000000
--- a/debian/patches/big-endian-random2.diff
+++ /dev/null
@@ -1,90 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Make randen_slow endian-correct
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/33541e751039a8c4bd3a395dd1a3a0928885814a
-
-Pay attention to the platform endianness when pulling bytes out of each
-AES block, and use platform-endian round keys.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 383878281 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/random/internal/BUILD.bazel
-+++ b/absl/random/internal/BUILD.bazel
-@@ -296,6 +296,7 @@
- ":platform",
- "//absl/base:config",
- "//absl/base:core_headers",
-+ "//absl/base:endian",
- "//absl/numeric:int128",
- ],
- )
---- a/absl/random/internal/randen_slow.cc
-+++ b/absl/random/internal/randen_slow.cc
-@@ -19,6 +19,7 @@
- #include <cstring>
-
- #include "absl/base/attributes.h"
-+#include "absl/base/internal/endian.h"
- #include "absl/numeric/int128.h"
- #include "absl/random/internal/platform.h"
- #include "absl/random/internal/randen_traits.h"
-@@ -40,7 +41,7 @@
-
- // AES portions based on rijndael-alg-fst.c,
- // https://fastcrypto.org/front/misc/rijndael-alg-fst.c, and modified for
--// little-endianness.
-+// platform-endianness.
- //
- // Implementation of
- // http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf
-@@ -251,6 +252,7 @@
- inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE Vector128
- AesRound(const Vector128& state, const Vector128& round_key) {
- Vector128 result;
-+#ifdef ABSL_IS_LITTLE_ENDIAN
- result.s[0] = round_key.s[0] ^ //
- te0[uint8_t(state.s[0])] ^ //
- te1[uint8_t(state.s[1] >> 8)] ^ //
-@@ -271,6 +273,28 @@
- te1[uint8_t(state.s[0] >> 8)] ^ //
- te2[uint8_t(state.s[1] >> 16)] ^ //
- te3[uint8_t(state.s[2] >> 24)];
-+#else
-+ result.s[0] = round_key.s[0] ^ //
-+ te0[uint8_t(state.s[0])] ^ //
-+ te1[uint8_t(state.s[3] >> 8)] ^ //
-+ te2[uint8_t(state.s[2] >> 16)] ^ //
-+ te3[uint8_t(state.s[1] >> 24)];
-+ result.s[1] = round_key.s[1] ^ //
-+ te0[uint8_t(state.s[1])] ^ //
-+ te1[uint8_t(state.s[0] >> 8)] ^ //
-+ te2[uint8_t(state.s[3] >> 16)] ^ //
-+ te3[uint8_t(state.s[2] >> 24)];
-+ result.s[2] = round_key.s[2] ^ //
-+ te0[uint8_t(state.s[2])] ^ //
-+ te1[uint8_t(state.s[1] >> 8)] ^ //
-+ te2[uint8_t(state.s[0] >> 16)] ^ //
-+ te3[uint8_t(state.s[3] >> 24)];
-+ result.s[3] = round_key.s[3] ^ //
-+ te0[uint8_t(state.s[3])] ^ //
-+ te1[uint8_t(state.s[2] >> 8)] ^ //
-+ te2[uint8_t(state.s[1] >> 16)] ^ //
-+ te3[uint8_t(state.s[0] >> 24)];
-+#endif
- return result;
- }
-
-@@ -380,7 +404,11 @@
- const void* RandenSlow::GetKeys() {
- // Round keys for one AES per Feistel round and branch.
- // The canonical implementation uses first digits of Pi.
-+#ifdef ABSL_IS_LITTLE_ENDIAN
- return kRandenRoundKeys;
-+#else
-+ return kRandenRoundKeysBE;
-+#endif
- }
-
- void RandenSlow::Absorb(const void* seed_void, void* state_void) {
diff --git a/debian/patches/big-endian-random3.diff b/debian/patches/big-endian-random3.diff
deleted file mode 100644
index a7847a00..00000000
--- a/debian/patches/big-endian-random3.diff
+++ /dev/null
@@ -1,82 +0,0 @@
-From: Laramie Leavitt <lar@google.com>
-Subject: Also use uint8_t golden values in randen_test.cc
-Forwarded: yes
-Origin: upstream, https://github.com/abseil/abseil-cpp/commit/cc413f8b674d61e3aa948386432e526e051afca0
-
-Also use uint8_t golden values in randen_test.cc
-
-This makes randen_test, randen_slow_test, and randen_hwaes_test essentially
-identical, as is the intent.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 405484423 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/random/internal/randen_test.cc
-+++ b/absl/random/internal/randen_test.cc
-@@ -23,9 +23,6 @@
-
- using absl::random_internal::Randen;
-
--// Local state parameters.
--constexpr size_t kStateSizeT = Randen::kStateBytes / sizeof(uint64_t);
--
- TEST(RandenTest, CopyAndMove) {
- static_assert(std::is_copy_constructible<Randen>::value,
- "Randen must be copy constructible");
-@@ -41,30 +38,38 @@
- }
-
- TEST(RandenTest, Default) {
-- constexpr uint64_t kGolden[] = {
-- 0x6c6534090ee6d3ee, 0x044e2b9b9d5333c6, 0xc3c14f134e433977,
-- 0xdda9f47cd90410ee, 0x887bf3087fd8ca10, 0xf0b780f545c72912,
-- 0x15dbb1d37696599f, 0x30ec63baff3c6d59, 0xb29f73606f7f20a6,
-- 0x02808a316f49a54c, 0x3b8feaf9d5c8e50e, 0x9cbf605e3fd9de8a,
-- 0xc970ae1a78183bbb, 0xd8b2ffd356301ed5, 0xf4b327fe0fc73c37,
-- 0xcdfd8d76eb8f9a19, 0xc3a506eb91420c9d, 0xd5af05dd3eff9556,
-- 0x48db1bb78f83c4a1, 0x7023920e0d6bfe8c, 0x58d3575834956d42,
-- 0xed1ef4c26b87b840, 0x8eef32a23e0b2df3, 0x497cabf3431154fc,
-- 0x4e24370570029a8b, 0xd88b5749f090e5ea, 0xc651a582a970692f,
-- 0x78fcec2cbb6342f5, 0x463cb745612f55db, 0x352ee4ad1816afe3,
-- 0x026ff374c101da7e, 0x811ef0821c3de851,
-+ constexpr uint8_t kGolden[] = {
-+ 0xee, 0xd3, 0xe6, 0x0e, 0x09, 0x34, 0x65, 0x6c, 0xc6, 0x33, 0x53, 0x9d,
-+ 0x9b, 0x2b, 0x4e, 0x04, 0x77, 0x39, 0x43, 0x4e, 0x13, 0x4f, 0xc1, 0xc3,
-+ 0xee, 0x10, 0x04, 0xd9, 0x7c, 0xf4, 0xa9, 0xdd, 0x10, 0xca, 0xd8, 0x7f,
-+ 0x08, 0xf3, 0x7b, 0x88, 0x12, 0x29, 0xc7, 0x45, 0xf5, 0x80, 0xb7, 0xf0,
-+ 0x9f, 0x59, 0x96, 0x76, 0xd3, 0xb1, 0xdb, 0x15, 0x59, 0x6d, 0x3c, 0xff,
-+ 0xba, 0x63, 0xec, 0x30, 0xa6, 0x20, 0x7f, 0x6f, 0x60, 0x73, 0x9f, 0xb2,
-+ 0x4c, 0xa5, 0x49, 0x6f, 0x31, 0x8a, 0x80, 0x02, 0x0e, 0xe5, 0xc8, 0xd5,
-+ 0xf9, 0xea, 0x8f, 0x3b, 0x8a, 0xde, 0xd9, 0x3f, 0x5e, 0x60, 0xbf, 0x9c,
-+ 0xbb, 0x3b, 0x18, 0x78, 0x1a, 0xae, 0x70, 0xc9, 0xd5, 0x1e, 0x30, 0x56,
-+ 0xd3, 0xff, 0xb2, 0xd8, 0x37, 0x3c, 0xc7, 0x0f, 0xfe, 0x27, 0xb3, 0xf4,
-+ 0x19, 0x9a, 0x8f, 0xeb, 0x76, 0x8d, 0xfd, 0xcd, 0x9d, 0x0c, 0x42, 0x91,
-+ 0xeb, 0x06, 0xa5, 0xc3, 0x56, 0x95, 0xff, 0x3e, 0xdd, 0x05, 0xaf, 0xd5,
-+ 0xa1, 0xc4, 0x83, 0x8f, 0xb7, 0x1b, 0xdb, 0x48, 0x8c, 0xfe, 0x6b, 0x0d,
-+ 0x0e, 0x92, 0x23, 0x70, 0x42, 0x6d, 0x95, 0x34, 0x58, 0x57, 0xd3, 0x58,
-+ 0x40, 0xb8, 0x87, 0x6b, 0xc2, 0xf4, 0x1e, 0xed, 0xf3, 0x2d, 0x0b, 0x3e,
-+ 0xa2, 0x32, 0xef, 0x8e, 0xfc, 0x54, 0x11, 0x43, 0xf3, 0xab, 0x7c, 0x49,
-+ 0x8b, 0x9a, 0x02, 0x70, 0x05, 0x37, 0x24, 0x4e, 0xea, 0xe5, 0x90, 0xf0,
-+ 0x49, 0x57, 0x8b, 0xd8, 0x2f, 0x69, 0x70, 0xa9, 0x82, 0xa5, 0x51, 0xc6,
-+ 0xf5, 0x42, 0x63, 0xbb, 0x2c, 0xec, 0xfc, 0x78, 0xdb, 0x55, 0x2f, 0x61,
-+ 0x45, 0xb7, 0x3c, 0x46, 0xe3, 0xaf, 0x16, 0x18, 0xad, 0xe4, 0x2e, 0x35,
-+ 0x7e, 0xda, 0x01, 0xc1, 0x74, 0xf3, 0x6f, 0x02, 0x51, 0xe8, 0x3d, 0x1c,
-+ 0x82, 0xf0, 0x1e, 0x81,
- };
-
-- alignas(16) uint64_t state[kStateSizeT];
-+ alignas(16) uint8_t state[Randen::kStateBytes];
- std::memset(state, 0, sizeof(state));
-
- Randen r;
- r.Generate(state);
-
-- auto id = std::begin(state);
-- for (const auto& elem : kGolden) {
-- EXPECT_EQ(elem, *id++);
-- }
-+ EXPECT_EQ(0, std::memcmp(state, kGolden, sizeof(state)));
- }
-
- } // namespace
diff --git a/debian/patches/big-endian-random4.diff b/debian/patches/big-endian-random4.diff
deleted file mode 100644
index 15110401..00000000
--- a/debian/patches/big-endian-random4.diff
+++ /dev/null
@@ -1,71 +0,0 @@
-From: Milad Fa <46688537+miladfarca@users.noreply.github.com>
-Subject: Fix Randen and PCG on Big Endian platforms (#1031)
-Forwarded: https://github.com/abseil/abseil-cpp/pull/1031
-Origin: upstream, https://github.com/abseil/abseil-cpp/commit/022527c50e0e2bc937f9fa3c516e3e36cbba0845
-
---- a/absl/random/internal/explicit_seed_seq.h
-+++ b/absl/random/internal/explicit_seed_seq.h
-@@ -74,7 +74,7 @@
- template <typename OutIterator>
- void generate(OutIterator begin, OutIterator end) {
- for (size_t index = 0; begin != end; begin++) {
-- *begin = state_.empty() ? 0 : little_endian::FromHost32(state_[index++]);
-+ *begin = state_.empty() ? 0 : state_[index++];
- if (index >= state_.size()) {
- index = 0;
- }
---- a/absl/random/internal/randen_engine.h
-+++ b/absl/random/internal/randen_engine.h
-@@ -121,6 +121,13 @@ void reseed(SeedSequence& seq) {
- const size_t requested_entropy = (entropy_size == 0) ? 8u : entropy_size;
- std::fill(std::begin(buffer) + requested_entropy, std::end(buffer), 0);
- seq.generate(std::begin(buffer), std::begin(buffer) + requested_entropy);
-+#ifdef ABSL_IS_BIG_ENDIAN
-+ // Randen expects the seed buffer to be in Little Endian; reverse it on
-+ // Big Endian platforms.
-+ for (sequence_result_type& e : buffer) {
-+ e = absl::little_endian::FromHost(e);
-+ }
-+#endif
- // The Randen paper suggests preferentially initializing even-numbered
- // 128-bit vectors of the randen state (there are 16 such vectors).
- // The seed data is merged into the state offset by 128-bits, which
---- a/absl/random/internal/randen_slow.cc
-+++ b/absl/random/internal/randen_slow.cc
-@@ -395,6 +395,23 @@
- }
- }
-
-+// Enables native loads in the round loop by pre-swapping.
-+inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void SwapEndian(
-+ absl::uint128* state) {
-+#ifdef ABSL_IS_BIG_ENDIAN
-+ for (uint32_t block = 0; block < RandenTraits::kFeistelBlocks; ++block) {
-+ uint64_t new_lo = absl::little_endian::ToHost64(
-+ static_cast<uint64_t>(state[block] >> 64));
-+ uint64_t new_hi = absl::little_endian::ToHost64(
-+ static_cast<uint64_t>((state[block] << 64) >> 64));
-+ state[block] = (static_cast<absl::uint128>(new_hi) << 64) | new_lo;
-+ }
-+#else
-+ // Avoid warning about unused variable.
-+ (void)state;
-+#endif
-+}
-+
- } // namespace
-
- namespace absl {
-@@ -439,8 +456,12 @@ void RandenSlow::Generate(const void* keys_void, void* state_void) {
-
- const absl::uint128 prev_inner = state[0];
-
-+ SwapEndian(state);
-+
- Permute(state, keys);
-
-+ SwapEndian(state);
-+
- // Ensure backtracking resistance.
- *state ^= prev_inner;
- }
diff --git a/debian/patches/configure.diff b/debian/patches/configure.diff
index 8138899f..15a20382 100644
--- a/debian/patches/configure.diff
+++ b/debian/patches/configure.diff
@@ -22,13 +22,13 @@ Configure Abseil for Debian.
--- a/CMake/AbseilHelpers.cmake
+++ b/CMake/AbseilHelpers.cmake
-@@ -263,7 +263,8 @@
+@@ -281,7 +281,8 @@
if(ABSL_ENABLE_INSTALL)
set_target_properties(${_NAME} PROPERTIES
OUTPUT_NAME "absl_${_NAME}"
-- SOVERSION "2103.0.1"
-+ SOVERSION 20210324
-+ VERSION "20210324.0.0"
+- SOVERSION "2206.0.0"
++ SOVERSION 20220623
++ VERSION "20220623.0.0"
)
endif()
else()
@@ -74,8 +74,8 @@ Configure Abseil for Debian.
// allowed.
#define ABSL_OPTION_USE_INLINE_NAMESPACE 1
--#define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_20210324
-+#define ABSL_OPTION_INLINE_NAMESPACE_NAME debian2
+-#define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_20220623
++#define ABSL_OPTION_INLINE_NAMESPACE_NAME debian3
// ABSL_OPTION_HARDENED
//
@@ -87,29 +87,23 @@ Configure Abseil for Debian.
+#define ABSL_OPTION_HARDENED 1
#endif // ABSL_BASE_OPTIONS_H_
---- a/absl/container/internal/have_sse.h
-+++ b/absl/container/internal/have_sse.h
-@@ -17,22 +17,14 @@
- #define ABSL_CONTAINER_INTERNAL_HAVE_SSE_H_
-
- #ifndef ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2
--#if defined(__SSE2__) || \
-- (defined(_MSC_VER) && \
-- (defined(_M_X64) || (defined(_M_IX86) && _M_IX86_FP >= 2)))
-+#if defined(__x86_64__) || (defined(_MSC_VER) && defined(_M_X64))
- #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 1
- #else
- #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 0
+--- a/absl/base/config.h
++++ b/absl/base/config.h
+@@ -877,7 +877,7 @@
+ // which architectures support the various x86 instruction sets.
+ #ifdef ABSL_INTERNAL_HAVE_SSE2
+ #error ABSL_INTERNAL_HAVE_SSE2 cannot be directly set
+-#elif defined(__SSE2__)
++#elif defined(__x86_64__)
+ #define ABSL_INTERNAL_HAVE_SSE2 1
+ #elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
+ // MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 2
+@@ -898,8 +898,6 @@
+ // by the CPU.
+ #ifdef ABSL_INTERNAL_HAVE_SSSE3
+ #error ABSL_INTERNAL_HAVE_SSSE3 cannot be directly set
+-#elif defined(__SSSE3__)
+-#define ABSL_INTERNAL_HAVE_SSSE3 1
#endif
- #endif
-
--#ifndef ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3
--#ifdef __SSSE3__
--#define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 1
--#else
- #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 0
--#endif
--#endif
- #if ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 && \
- !ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2
+ // ABSL_INTERNAL_HAVE_ARM_NEON is used for compile-time detection of NEON (ARM
diff --git a/debian/patches/cordrepring-typo.diff b/debian/patches/cordrepring-typo.diff
deleted file mode 100644
index 6f21896b..00000000
--- a/debian/patches/cordrepring-typo.diff
+++ /dev/null
@@ -1,20 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Fix typo in CordRepRing error message
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/b97a1ecda869ca8754d467a56c50275cebfeb328
-
-The author works at Google. Upstream applied this patch as Piper
-revision 367481280 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/strings/internal/cord_rep_ring.cc
-+++ b/absl/strings/internal/cord_rep_ring.cc
-@@ -301,7 +301,7 @@
- if (offset >= child->length || entry_length > child->length - offset) {
- output << "entry[" << head << "] has offset " << offset
- << " and entry length " << entry_length
-- << " which are outside of the childs length of " << child->length;
-+ << " which are outside of the child's length of " << child->length;
- return false;
- }
-
diff --git a/debian/patches/disable-nominalcpufrequency-test.diff b/debian/patches/disable-nominalcpufrequency-test.diff
deleted file mode 100644
index dc15dc9e..00000000
--- a/debian/patches/disable-nominalcpufrequency-test.diff
+++ /dev/null
@@ -1,46 +0,0 @@
-From: Derek Mauro <dmauro@google.com>
-Subject: Remove the test for absl::base_internal::NominalCPUFrequency() from OSS code
-Origin: upstream, https://github.com/abseil/abseil-cpp/commit/732b5580f089101ce4b8cdff55bb6461c59a6720
-
-Remove the test for absl::base_internal::NominalCPUFrequency() from OSS code
-
-This is an internal-only function that should never by called by OSS code.
-By its nature fails on unsupported platforms.
-Google code has tests for this function on supported internal platforms.
-
-Fixes #1053
-
-PiperOrigin-RevId: 408692861
-
---- a/absl/base/internal/sysinfo_test.cc
-+++ b/absl/base/internal/sysinfo_test.cc
-@@ -37,29 +37,6 @@
- << "NumCPUs() should not have the default value of 0";
- }
-
--// Ensure that NominalCPUFrequency returns a reasonable value, or 1.00 on
--// platforms where the CPU frequency is not available through sysfs.
--//
--// POWER is particularly problematic here; some Linux kernels expose the CPU
--// frequency, while others do not. Since we can't predict a priori what a given
--// machine is going to do, just disable this test on POWER on Linux.
--#if !(defined(__linux) && (defined(__ppc64__) || defined(__PPC64__)))
--TEST(SysinfoTest, NominalCPUFrequency) {
-- // Linux only exposes the CPU frequency on certain architectures, and
-- // Emscripten doesn't expose it at all.
--#if defined(__linux__) && \
-- (defined(__aarch64__) || defined(__hppa__) || defined(__mips__) || \
-- defined(__riscv) || defined(__s390x__)) || \
-- defined(__EMSCRIPTEN__)
-- EXPECT_EQ(NominalCPUFrequency(), 1.0)
-- << "CPU frequency detection was fixed! Please update unittest.";
--#else
-- EXPECT_GE(NominalCPUFrequency(), 1000.0)
-- << "NominalCPUFrequency() did not return a reasonable value";
--#endif
--}
--#endif
--
- TEST(SysinfoTest, GetTID) {
- EXPECT_EQ(GetTID(), GetTID()); // Basic compile and equality test.
- #ifdef __native_client__
diff --git a/debian/patches/empty-flags-library.diff b/debian/patches/empty-flags-library.diff
index fe1d3962..8c26a6d7 100644
--- a/debian/patches/empty-flags-library.diff
+++ b/debian/patches/empty-flags-library.diff
@@ -8,7 +8,7 @@ library header-only.
--- a/absl/flags/CMakeLists.txt
+++ b/absl/flags/CMakeLists.txt
-@@ -197,8 +197,6 @@
+@@ -199,8 +199,6 @@
absl_cc_library(
NAME
flags
diff --git a/debian/patches/float-rounding.diff b/debian/patches/float-rounding.diff
deleted file mode 100644
index 005e08be..00000000
--- a/debian/patches/float-rounding.diff
+++ /dev/null
@@ -1,46 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Round floats using round(x), not static_cast<int>(x + 0.5)
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/d96e287417766deddbff2d01b96321288c59491e
-
-Adding 0.5 to an IEEE float may cause one bit of precision loss, which
-is enough to change the result in certain cases. For example,
-
- static_cast<int>(std::round(0.49999999999999994)) == 0
- static_cast<int>(0.49999999999999994 + 0.5) == 1
-
-The author works at Google. Upstream applied this patch as Piper
-revision 369926519 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/time/duration_test.cc
-+++ b/absl/time/duration_test.cc
-@@ -1320,7 +1320,7 @@ TEST(Duration, SmallConversions) {
-
- EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(0));
- // TODO(bww): Is the next one OK?
-- EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(0.124999999e-9));
-+ EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(std::nextafter(0.125e-9, 0)));
- EXPECT_EQ(absl::Nanoseconds(1) / 4, absl::Seconds(0.125e-9));
- EXPECT_EQ(absl::Nanoseconds(1) / 4, absl::Seconds(0.250e-9));
- EXPECT_EQ(absl::Nanoseconds(1) / 2, absl::Seconds(0.375e-9));
-@@ -1330,7 +1330,7 @@ TEST(Duration, SmallConversions) {
- EXPECT_EQ(absl::Nanoseconds(1), absl::Seconds(0.875e-9));
- EXPECT_EQ(absl::Nanoseconds(1), absl::Seconds(1.000e-9));
-
-- EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(-0.124999999e-9));
-+ EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(std::nextafter(-0.125e-9, 0)));
- EXPECT_EQ(-absl::Nanoseconds(1) / 4, absl::Seconds(-0.125e-9));
- EXPECT_EQ(-absl::Nanoseconds(1) / 4, absl::Seconds(-0.250e-9));
- EXPECT_EQ(-absl::Nanoseconds(1) / 2, absl::Seconds(-0.375e-9));
---- a/absl/time/time.h
-+++ b/absl/time/time.h
-@@ -1352,7 +1352,7 @@
- inline Duration MakePosDoubleDuration(double n) {
- const int64_t int_secs = static_cast<int64_t>(n);
- const uint32_t ticks = static_cast<uint32_t>(
-- (n - static_cast<double>(int_secs)) * kTicksPerSecond + 0.5);
-+ std::round((n - static_cast<double>(int_secs)) * kTicksPerSecond));
- return ticks < kTicksPerSecond
- ? MakeDuration(int_secs, ticks)
- : MakeDuration(int_secs + 1, ticks - kTicksPerSecond);
diff --git a/debian/patches/float-tests-disable-i386.diff b/debian/patches/float-tests-disable-i386.diff
deleted file mode 100644
index 0aef2805..00000000
--- a/debian/patches/float-tests-disable-i386.diff
+++ /dev/null
@@ -1,141 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Skip floating-point edge-case tests when using an x87
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/311bbd2e50ea35e921a08186840d3b6ca279e880
-
-32-bit Intel CPUs use 80-bit floats for intermediate values, which can
-change the results of floating point computations from what we normally
-expect. Identify tests that are sensitive to the x87, and skip them when
-we’re on 32-bit Intel.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 378722613 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/random/beta_distribution_test.cc
-+++ b/absl/random/beta_distribution_test.cc
-@@ -15,6 +15,7 @@
- #include "absl/random/beta_distribution.h"
-
- #include <algorithm>
-+#include <cfloat>
- #include <cstddef>
- #include <cstdint>
- #include <iterator>
-@@ -558,6 +559,14 @@
- // dependencies of the distribution change, such as RandU64ToDouble, then this
- // is also likely to change.
- TEST(BetaDistributionTest, AlgorithmBounds) {
-+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0
-+ // We're using an x87-compatible FPU, and intermediate operations are
-+ // performed with 80-bit floats. This produces slightly different results from
-+ // what we expect below.
-+ GTEST_SKIP()
-+ << "Skipping the test because we detected x87 floating-point semantics";
-+#endif
-+
- {
- absl::random_internal::sequence_urbg urbg(
- {0x7fbe76c8b4395800ull, 0x8000000000000000ull});
---- a/absl/random/distributions_test.cc
-+++ b/absl/random/distributions_test.cc
-@@ -14,6 +14,7 @@
-
- #include "absl/random/distributions.h"
-
-+#include <cfloat>
- #include <cmath>
- #include <cstdint>
- #include <random>
-@@ -224,6 +225,15 @@
- TEST_F(RandomDistributionsTest, UniformNonsenseRanges) {
- // The ranges used in this test are undefined behavior.
- // The results are arbitrary and subject to future changes.
-+
-+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0
-+ // We're using an x87-compatible FPU, and intermediate operations can be
-+ // performed with 80-bit floats. This produces slightly different results from
-+ // what we expect below.
-+ GTEST_SKIP()
-+ << "Skipping the test because we detected x87 floating-point semantics";
-+#endif
-+
- absl::InsecureBitGen gen;
-
- // <uint>
---- a/absl/random/exponential_distribution_test.cc
-+++ b/absl/random/exponential_distribution_test.cc
-@@ -15,6 +15,7 @@
- #include "absl/random/exponential_distribution.h"
-
- #include <algorithm>
-+#include <cfloat>
- #include <cmath>
- #include <cstddef>
- #include <cstdint>
-@@ -384,6 +385,15 @@
- TEST(ExponentialDistributionTest, AlgorithmBounds) {
- // Relies on absl::uniform_real_distribution, so some of these comments
- // reference that.
-+
-+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0
-+ // We're using an x87-compatible FPU, and intermediate operations can be
-+ // performed with 80-bit floats. This produces slightly different results from
-+ // what we expect below.
-+ GTEST_SKIP()
-+ << "Skipping the test because we detected x87 floating-point semantics";
-+#endif
-+
- absl::exponential_distribution<double> dist;
-
- {
---- a/absl/random/uniform_real_distribution_test.cc
-+++ b/absl/random/uniform_real_distribution_test.cc
-@@ -14,6 +14,7 @@
-
- #include "absl/random/uniform_real_distribution.h"
-
-+#include <cfloat>
- #include <cmath>
- #include <cstdint>
- #include <iterator>
-@@ -70,6 +71,14 @@
- TYPED_TEST_SUITE(UniformRealDistributionTest, RealTypes);
-
- TYPED_TEST(UniformRealDistributionTest, ParamSerializeTest) {
-+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0
-+ // We're using an x87-compatible FPU, and intermediate operations are
-+ // performed with 80-bit floats. This produces slightly different results from
-+ // what we expect below.
-+ GTEST_SKIP()
-+ << "Skipping the test because we detected x87 floating-point semantics";
-+#endif
-+
- using param_type =
- typename absl::uniform_real_distribution<TypeParam>::param_type;
-
---- a/absl/time/duration_test.cc
-+++ b/absl/time/duration_test.cc
-@@ -17,6 +17,7 @@
- #endif
-
- #include <chrono> // NOLINT(build/c++11)
-+#include <cfloat>
- #include <cmath>
- #include <cstdint>
- #include <ctime>
-@@ -1390,6 +1391,14 @@
- // Seconds(point) returns a duration near point * Seconds(1.0). (They may
- // not be exactly equal due to fused multiply/add contraction.)
- TEST(Duration, ToDoubleSecondsCheckEdgeCases) {
-+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0
-+ // We're using an x87-compatible FPU, and intermediate operations can be
-+ // performed with 80-bit floats. This means the edge cases are different than
-+ // what we expect here, so just skip this test.
-+ GTEST_SKIP()
-+ << "Skipping the test because we detected x87 floating-point semantics";
-+#endif
-+
- constexpr uint32_t kTicksPerSecond = absl::time_internal::kTicksPerSecond;
- constexpr auto duration_tick = absl::time_internal::MakeDuration(0, 1u);
- int misses = 0;
diff --git a/debian/patches/hppa-symbolize.diff b/debian/patches/hppa-symbolize.diff
deleted file mode 100644
index 8c039df9..00000000
--- a/debian/patches/hppa-symbolize.diff
+++ /dev/null
@@ -1,103 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Support symbolization on PA-RISC
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/7f850b3167fb38e6b4a9ce1824e6fabd733b5d62
-
-Null out supervisor bits in PA-RISC addresses before symbolizing, and
-handle function descriptor tables correctly.
-
-Change symbolize_test.cc to use 32-bit aligned addresses, allowing that
-test to pass on PA-RISC.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 428590564 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/debugging/symbolize_elf.inc
-+++ b/absl/debugging/symbolize_elf.inc
-@@ -319,6 +319,7 @@
- const ptrdiff_t relocation,
- char *out, int out_size,
- char *tmp_buf, int tmp_buf_size);
-+ const char *GetUncachedSymbol(const void *pc);
-
- enum {
- SYMBOL_BUF_SIZE = 3072,
-@@ -1329,13 +1330,7 @@
- // they are called here as well.
- // To keep stack consumption low, we would like this function to not
- // get inlined.
--const char *Symbolizer::GetSymbol(const void *const pc) {
-- const char *entry = FindSymbolInCache(pc);
-- if (entry != nullptr) {
-- return entry;
-- }
-- symbol_buf_[0] = '\0';
--
-+const char *Symbolizer::GetUncachedSymbol(const void *pc) {
- ObjFile *const obj = FindObjFile(pc, 1);
- ptrdiff_t relocation = 0;
- int fd = -1;
-@@ -1423,6 +1418,42 @@
- return InsertSymbolInCache(pc, symbol_buf_);
- }
-
-+const char *Symbolizer::GetSymbol(const void *pc) {
-+ const char *entry = FindSymbolInCache(pc);
-+ if (entry != nullptr) {
-+ return entry;
-+ }
-+ symbol_buf_[0] = '\0';
-+
-+#ifdef __hppa__
-+ {
-+ // In some contexts (e.g., return addresses), PA-RISC uses the lowest two
-+ // bits of the address to indicate the privilege level. Clear those bits
-+ // before trying to symbolize.
-+ const auto pc_bits = reinterpret_cast<uintptr_t>(pc);
-+ const auto address = pc_bits & ~0x3;
-+ entry = GetUncachedSymbol(reinterpret_cast<const void *>(address));
-+ if (entry != nullptr) {
-+ return entry;
-+ }
-+
-+ // In some contexts, PA-RISC also uses bit 1 of the address to indicate that
-+ // this is a cross-DSO function pointer. Such function pointers actually
-+ // point to a procedure label, a struct whose first 32-bit (pointer) element
-+ // actually points to the function text. With no symbol found for this
-+ // address so far, try interpreting it as a cross-DSO function pointer and
-+ // see how that goes.
-+ if (pc_bits & 0x2) {
-+ return GetUncachedSymbol(*reinterpret_cast<const void *const *>(address));
-+ }
-+
-+ return nullptr;
-+ }
-+#else
-+ return GetUncachedSymbol(pc);
-+#endif
-+}
-+
- bool RemoveAllSymbolDecorators(void) {
- if (!g_decorators_mu.TryLock()) {
- // Someone else is using decorators. Get out.
---- a/absl/debugging/symbolize_test.cc
-+++ b/absl/debugging/symbolize_test.cc
-@@ -378,12 +378,14 @@
- DummySymbolDecorator, &c_message),
- 0);
-
-- char *address = reinterpret_cast<char *>(1);
-- EXPECT_STREQ("abc", TrySymbolize(address++));
-+ // Use addresses 4 and 8 here to ensure that we always use valid addresses
-+ // even on systems that require instructions to be 32-bit aligned.
-+ char *address = reinterpret_cast<char *>(4);
-+ EXPECT_STREQ("abc", TrySymbolize(address));
-
- EXPECT_TRUE(absl::debugging_internal::RemoveSymbolDecorator(ticket_b));
-
-- EXPECT_STREQ("ac", TrySymbolize(address++));
-+ EXPECT_STREQ("ac", TrySymbolize(address + 4));
-
- // Cleanup: remove all remaining decorators so other stack traces don't
- // get mystery "ac" decoration.
diff --git a/debian/patches/latomic.diff b/debian/patches/latomic.diff
index 861f20bf..71cf7959 100644
--- a/debian/patches/latomic.diff
+++ b/debian/patches/latomic.diff
@@ -9,7 +9,7 @@ if anything needs libatomic and add the DT_NEEDED entry where necessary.
--- a/absl/copts/AbseilConfigureCopts.cmake
+++ b/absl/copts/AbseilConfigureCopts.cmake
-@@ -62,4 +62,8 @@
+@@ -94,4 +94,8 @@
set(ABSL_TEST_COPTS "")
endif()
diff --git a/debian/patches/missing-rint.diff b/debian/patches/missing-rint.diff
deleted file mode 100644
index d9865364..00000000
--- a/debian/patches/missing-rint.diff
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Round a double multiplication before casting it to integer
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/60be12ed9822078970f05f3c560324184302df6b
-
-The code
-
- static_cast<int>(x * y)
-
-(for double x and y) performs a double multiplication into a temporary
-that, by standard, may have excess precision. The subsequent cast to int
-discards the excess precision. However, the cast may examine the excess
-precision during conversion, producing surprising results like
-
- static_cast<int>(1.7 * 10) == 16
-
-on certain systems. Correct this case by explicitly rounding 1.7 * 10
-before casting it.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 378922064 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/random/mocking_bit_gen_test.cc
-+++ b/absl/random/mocking_bit_gen_test.cc
-@@ -15,6 +15,7 @@
- //
- #include "absl/random/mocking_bit_gen.h"
-
-+#include <cmath>
- #include <numeric>
- #include <random>
-
-@@ -328,8 +329,9 @@ TEST(BasicMocking, WillByDefaultWithArgs) {
-
- absl::MockingBitGen gen;
- ON_CALL(absl::MockPoisson<int>(), Call(gen, _))
-- .WillByDefault(
-- [](double lambda) { return static_cast<int>(lambda * 10); });
-+ .WillByDefault([](double lambda) {
-+ return static_cast<int>(std::rint(lambda * 10));
-+ });
- EXPECT_EQ(absl::Poisson<int>(gen, 1.7), 17);
- EXPECT_EQ(absl::Poisson<int>(gen, 0.03), 0);
- }
diff --git a/debian/patches/pkg-config-libs-generation.diff b/debian/patches/pkg-config-libs-generation.diff
deleted file mode 100644
index 5f217765..00000000
--- a/debian/patches/pkg-config-libs-generation.diff
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Check printf format strings in str_format_convert_test
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/1963f10ae5cb32a7ea6d96b928f69d3c7fba0139
-Bug-Debian: https://bugs.debian.org/1011294
-
-Don’t use generator expression to build .pc Libs lines
-
-When building pkg-config files, compute linker flags with a string
-substitution rather than the JOIN generator expression. This ensures
-that commas in linker flags don’t get treated as argument separators in
-JOIN.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 450675966 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/CMake/AbseilHelpers.cmake
-+++ b/CMake/AbseilHelpers.cmake
-@@ -167,6 +167,7 @@
- set(PC_CFLAGS "${PC_CFLAGS} ${cflag}")
- endif()
- endforeach()
-+ string(REPLACE ";" " " PC_LINKOPTS "${ABSL_CC_LIB_LINKOPTS}")
- FILE(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/lib/pkgconfig/absl_${_NAME}.pc" CONTENT "\
- prefix=${CMAKE_INSTALL_PREFIX}\n\
- exec_prefix=\${prefix}\n\
-@@ -178,7 +179,7 @@
- URL: https://abseil.io/\n\
- Version: ${PC_VERSION}\n\
- Requires:${PC_DEPS}\n\
--Libs: -L\${libdir} $<JOIN:${ABSL_CC_LIB_LINKOPTS}, > $<$<NOT:$<BOOL:${ABSL_CC_LIB_IS_INTERFACE}>>:-labsl_${_NAME}>\n\
-+Libs: -L\${libdir} ${PC_LINKOPTS} $<$<NOT:$<BOOL:${ABSL_CC_LIB_IS_INTERFACE}>>:-labsl_${_NAME}>\n\
- Cflags: -I\${includedir}${PC_CFLAGS}\n")
- INSTALL(FILES "${CMAKE_BINARY_DIR}/lib/pkgconfig/absl_${_NAME}.pc"
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
diff --git a/debian/patches/series b/debian/patches/series
index f335570e..7134596e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,19 +1,3 @@
configure.diff
latomic.diff
empty-flags-library.diff
-cordrepring-typo.diff
-thumb-function-bounds.diff
-float-rounding.diff
-DiscreteDistributionTest-irrelevant-destination-buckets.diff
-float-tests-disable-i386.diff
-missing-rint.diff
-big-endian-hash.diff
-big-endian-hash2.diff
-big-endian-random.diff
-big-endian-random2.diff
-big-endian-random3.diff
-big-endian-random4.diff
-disable-nominalcpufrequency-test.diff
-hppa-symbolize.diff
-str-format-convert-test-printf.diff
-pkg-config-libs-generation.diff
diff --git a/debian/patches/str-format-convert-test-printf.diff b/debian/patches/str-format-convert-test-printf.diff
deleted file mode 100644
index 1808f2e1..00000000
--- a/debian/patches/str-format-convert-test-printf.diff
+++ /dev/null
@@ -1,103 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Check printf format strings in str_format_convert_test
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/9fed77a6fea29b8c8468bd41c6259c7f67163a65
-
-Add ABSL_PRINTF_ATTRIBUTE to appropriate functions in
-strings/internal/str_format/convert_test. Correct
-TypedFormatConvertTest.Char, which was accidentally passing values of
-types larger than int to StrPrint.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 439388148 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/strings/BUILD.bazel
-+++ b/absl/strings/BUILD.bazel
-@@ -787,6 +787,7 @@
- deps = [
- ":str_format_internal",
- ":strings",
-+ "//absl/base:core_headers",
- "//absl/base:raw_logging_internal",
- "//absl/types:optional",
- "@com_google_googletest//:gtest_main",
---- a/absl/strings/CMakeLists.txt
-+++ b/absl/strings/CMakeLists.txt
-@@ -492,6 +492,7 @@
- DEPS
- absl::strings
- absl::str_format_internal
-+ absl::core_headers
- absl::raw_logging_internal
- absl::int128
- gmock_main
---- a/absl/strings/internal/str_format/convert_test.cc
-+++ b/absl/strings/internal/str_format/convert_test.cc
-@@ -24,6 +24,7 @@
-
- #include "gmock/gmock.h"
- #include "gtest/gtest.h"
-+#include "absl/base/attributes.h"
- #include "absl/base/internal/raw_logging.h"
- #include "absl/strings/internal/str_format/bind.h"
- #include "absl/strings/match.h"
-@@ -124,6 +125,7 @@
- delete[] buf;
- }
-
-+void StrAppend(std::string *, const char *, ...) ABSL_PRINTF_ATTRIBUTE(2, 3);
- void StrAppend(std::string *out, const char *format, ...) {
- va_list ap;
- va_start(ap, format);
-@@ -131,6 +133,7 @@
- va_end(ap);
- }
-
-+std::string StrPrint(const char *, ...) ABSL_PRINTF_ATTRIBUTE(1, 2);
- std::string StrPrint(const char *format, ...) {
- va_list ap;
- va_start(ap, format);
-@@ -452,21 +455,32 @@
- }
-
- TYPED_TEST_P(TypedFormatConvertTest, Char) {
-+ // Pass a bunch of values of type TypeParam to both FormatPack and libc's
-+ // vsnprintf("%c", ...) (wrapped in StrPrint) to make sure we get the same
-+ // value.
- typedef TypeParam T;
- using remove_volatile_t = typename std::remove_volatile<T>::type;
-- static const T kMin = std::numeric_limits<remove_volatile_t>::min();
-- static const T kMax = std::numeric_limits<remove_volatile_t>::max();
-- T kVals[] = {
-- remove_volatile_t(1), remove_volatile_t(2), remove_volatile_t(10),
-- remove_volatile_t(-1), remove_volatile_t(-2), remove_volatile_t(-10),
-- remove_volatile_t(0),
-- kMin + remove_volatile_t(1), kMin,
-- kMax - remove_volatile_t(1), kMax
-+ std::vector<remove_volatile_t> vals = {
-+ remove_volatile_t(1), remove_volatile_t(2), remove_volatile_t(10), //
-+ remove_volatile_t(-1), remove_volatile_t(-2), remove_volatile_t(-10), //
-+ remove_volatile_t(0),
- };
-- for (const T &c : kVals) {
-+
-+ // We'd like to test values near std::numeric_limits::min() and
-+ // std::numeric_limits::max(), too, but vsnprintf("%c", ...) can't handle
-+ // anything larger than an int. Add in the most extreme values we can without
-+ // exceeding that range.
-+ static const T kMin =
-+ static_cast<remove_volatile_t>(std::numeric_limits<int>::min());
-+ static const T kMax =
-+ static_cast<remove_volatile_t>(std::numeric_limits<int>::max());
-+ vals.insert(vals.end(), {kMin + 1, kMin, kMax - 1, kMax});
-+
-+ for (const T c : vals) {
- const FormatArgImpl args[] = {FormatArgImpl(c)};
- UntypedFormatSpecImpl format("%c");
-- EXPECT_EQ(StrPrint("%c", c), FormatPack(format, absl::MakeSpan(args)));
-+ EXPECT_EQ(StrPrint("%c", static_cast<int>(c)),
-+ FormatPack(format, absl::MakeSpan(args)));
- }
- }
-
diff --git a/debian/patches/thumb-function-bounds.diff b/debian/patches/thumb-function-bounds.diff
deleted file mode 100644
index 1fd8c729..00000000
--- a/debian/patches/thumb-function-bounds.diff
+++ /dev/null
@@ -1,96 +0,0 @@
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Correct Thumb function bound computation in the symbolizer
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/1ae9b71c474628d60eb251a3f62967fe64151bb2
-
-On 32-bit ARM, all functions are aligned to multiples of two bytes, and
-the lowest-order bit in a function’s address is ignored by the CPU when
-computing branch targets. That bit is still present in instructions and
-ELF symbol tables, though; it’s repurposed to indicate whether the
-function contains ARM or Thumb code. If the symbolizer doesn’t ignore
-that bit, it will believe Thumb functions have boundaries that are off
-by one byte, so instruct the symbolizer to null out the lowest-order bit
-after retrieving it from the symbol table.
-
-The author works at Google. Upstream applied this patch as Piper
-revision 369254082 and exported it to GitHub; the Applied-Upstream URL
-above points to the exported commit.
-
---- a/absl/debugging/symbolize_elf.inc
-+++ b/absl/debugging/symbolize_elf.inc
-@@ -701,6 +701,16 @@
- const char *start_address =
- ComputeOffset(original_start_address, relocation);
-
-+#ifdef __arm__
-+ // ARM functions are always aligned to multiples of two bytes; the
-+ // lowest-order bit in start_address is ignored by the CPU and indicates
-+ // whether the function contains ARM (0) or Thumb (1) code. We don't care
-+ // about what encoding is being used; we just want the real start address
-+ // of the function.
-+ start_address = reinterpret_cast<const char *>(
-+ reinterpret_cast<uintptr_t>(start_address) & ~1);
-+#endif
-+
- if (deref_function_descriptor_pointer &&
- InSection(original_start_address, opd)) {
- // The opd section is mapped into memory. Just dereference
---- a/absl/debugging/symbolize_test.cc
-+++ b/absl/debugging/symbolize_test.cc
-@@ -477,6 +477,46 @@
- #endif
- }
-
-+#if defined(__arm__) && ABSL_HAVE_ATTRIBUTE(target)
-+// Test that we correctly identify bounds of Thumb functions on ARM.
-+//
-+// Thumb functions have the lowest-order bit set in their addresses in the ELF
-+// symbol table. This requires some extra logic to properly compute function
-+// bounds. To test this logic, nudge a Thumb function right up against an ARM
-+// function and try to symbolize the ARM function.
-+//
-+// A naive implementation will simply use the Thumb function's entry point as
-+// written in the symbol table and will therefore treat the Thumb function as
-+// extending one byte further in the instruction stream than it actually does.
-+// When asked to symbolize the start of the ARM function, it will identify an
-+// overlap between the Thumb and ARM functions, and it will return the name of
-+// the Thumb function.
-+//
-+// A correct implementation, on the other hand, will null out the lowest-order
-+// bit in the Thumb function's entry point. It will correctly compute the end of
-+// the Thumb function, it will find no overlap between the Thumb and ARM
-+// functions, and it will return the name of the ARM function.
-+
-+__attribute__((target("thumb"))) int ArmThumbOverlapThumb(int x) {
-+ return x * x * x;
-+}
-+
-+__attribute__((target("arm"))) int ArmThumbOverlapArm(int x) {
-+ return x * x * x;
-+}
-+
-+void ABSL_ATTRIBUTE_NOINLINE TestArmThumbOverlap() {
-+#if defined(ABSL_HAVE_ATTRIBUTE_NOINLINE)
-+ const char *symbol = TrySymbolize((void *)&ArmThumbOverlapArm);
-+ ABSL_RAW_CHECK(symbol != nullptr, "TestArmThumbOverlap failed");
-+ ABSL_RAW_CHECK(strcmp("ArmThumbOverlapArm()", symbol) == 0,
-+ "TestArmThumbOverlap failed");
-+ std::cout << "TestArmThumbOverlap passed" << std::endl;
-+#endif
-+}
-+
-+#endif // defined(__arm__) && ABSL_HAVE_ATTRIBUTE(target)
-+
- #elif defined(_WIN32)
- #if !defined(ABSL_CONSUME_DLL)
-
-@@ -551,6 +591,9 @@
- TestWithPCInsideInlineFunction();
- TestWithPCInsideNonInlineFunction();
- TestWithReturnAddress();
-+#if defined(__arm__) && ABSL_HAVE_ATTRIBUTE(target)
-+ TestArmThumbOverlap();
-+#endif
- #endif
-
- return RUN_ALL_TESTS();