From 84391f734d6b2c24c9334efafe3b37ad7be5a2db55364611542ad8d0b92e2103 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sat, 10 Apr 2021 22:31:50 +0000 Subject: [PATCH 1/2] Accepting request 884350 from home:Andreas_Schwab:Factory - icu-drop-testTemperature.patch: Remove - icu-fix-testTemperature.patch: Backport ICU-21366 (bsc#1182645) - Don't disable testsuite under qemu-linux-user OBS-URL: https://build.opensuse.org/request/show/884350 OBS-URL: https://build.opensuse.org/package/show/X11:common:Factory/icu?expand=0&rev=146 --- icu-drop-testTemperature.patch | 59 ---------------------------------- icu-fix-testTemperature.patch | 30 +++++++++++++++++ icu.changes | 7 ++++ icu.spec | 10 +----- 4 files changed, 38 insertions(+), 68 deletions(-) delete mode 100644 icu-drop-testTemperature.patch create mode 100644 icu-fix-testTemperature.patch diff --git a/icu-drop-testTemperature.patch b/icu-drop-testTemperature.patch deleted file mode 100644 index 7a932bf..0000000 --- a/icu-drop-testTemperature.patch +++ /dev/null @@ -1,59 +0,0 @@ ---- icu/source/test/intltest/units_test.cpp.orig 2021-03-31 18:16:45.625488752 +0200 -+++ icu/source/test/intltest/units_test.cpp 2021-03-31 18:26:44.059315511 +0200 -@@ -50,7 +50,6 @@ class UnitsTest : public IntlTest { - void testPreferences(); - void testSiPrefixes(); - void testMass(); -- void testTemperature(); - void testArea(); - }; - -@@ -69,7 +68,6 @@ void UnitsTest::runIndexedTest(int32_t i - TESTCASE_AUTO(testPreferences); - TESTCASE_AUTO(testSiPrefixes); - TESTCASE_AUTO(testMass); -- TESTCASE_AUTO(testTemperature); - TESTCASE_AUTO(testArea); - TESTCASE_AUTO_END; - } -@@ -224,40 +222,6 @@ void UnitsTest::testMass() { - } - } - --void UnitsTest::testTemperature() { -- IcuTestErrorCode status(*this, "Units testTemperature"); -- // Test Cases -- struct TestCase { -- const char *source; -- const char *target; -- const double inputValue; -- const double expectedValue; -- } testCases[]{ -- {"celsius", "fahrenheit", 0.0, 32.0}, // -- {"celsius", "fahrenheit", 10.0, 50.0}, // -- {"fahrenheit", "celsius", 32.0, 0.0}, // -- {"fahrenheit", "celsius", 89.6, 32}, // -- {"kelvin", "fahrenheit", 0.0, -459.67}, // -- {"kelvin", "fahrenheit", 300, 80.33}, // -- {"kelvin", "celsius", 0.0, -273.15}, // -- {"kelvin", "celsius", 300.0, 26.85} // -- }; -- -- for (const auto &testCase : testCases) { -- UErrorCode status = U_ZERO_ERROR; -- -- MeasureUnitImpl source = MeasureUnitImpl::forIdentifier(testCase.source, status); -- MeasureUnitImpl target = MeasureUnitImpl::forIdentifier(testCase.target, status); -- -- ConversionRates conversionRates(status); -- UnitConverter converter(source, target, conversionRates, status); -- -- assertEqualsNear(UnicodeString("testTemperature: ") + testCase.source + " to " + testCase.target, -- testCase.expectedValue, converter.convert(testCase.inputValue), -- 0.0001 * uprv_fabs(testCase.expectedValue)); -- } --} -- - void UnitsTest::testArea() { - IcuTestErrorCode status(*this, "Units Area"); - diff --git a/icu-fix-testTemperature.patch b/icu-fix-testTemperature.patch new file mode 100644 index 0000000..6ffec9c --- /dev/null +++ b/icu-fix-testTemperature.patch @@ -0,0 +1,30 @@ +From 7c9bad02d26a59466c760a28989f7045c8f133ad Mon Sep 17 00:00:00 2001 +From: Hugo van der Merwe <17109322+hugovdm@users.noreply.github.com> +Date: Fri, 6 Nov 2020 17:55:21 +0000 +Subject: [PATCH] ICU-21366 testConverter: allow some double-precision error + for 0.0 + +See #1443 +--- + icu4c/source/test/intltest/units_test.cpp | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +Index: icu/source/test/intltest/units_test.cpp +=================================================================== +--- icu.orig/source/test/intltest/units_test.cpp ++++ icu/source/test/intltest/units_test.cpp +@@ -252,9 +252,12 @@ void UnitsTest::testTemperature() { + ConversionRates conversionRates(status); + UnitConverter converter(source, target, conversionRates, status); + ++ double maxDelta = 1e-6 * uprv_fabs(testCase.expectedValue); ++ if (testCase.expectedValue == 0) { ++ maxDelta = 1e-12; ++ } + assertEqualsNear(UnicodeString("testTemperature: ") + testCase.source + " to " + testCase.target, +- testCase.expectedValue, converter.convert(testCase.inputValue), +- 0.0001 * uprv_fabs(testCase.expectedValue)); ++ testCase.expectedValue, converter.convert(testCase.inputValue), maxDelta); + } + } + diff --git a/icu.changes b/icu.changes index 5e65bd1..48210fa 100644 --- a/icu.changes +++ b/icu.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sat Apr 10 21:27:58 UTC 2021 - Andreas Schwab + +- icu-drop-testTemperature.patch: Remove +- icu-fix-testTemperature.patch: Backport ICU-21366 (bsc#1182645) +- Don't disable testsuite under qemu-linux-user + ------------------------------------------------------------------- Wed Mar 31 16:19:02 UTC 2021 - Guillaume GARDET diff --git a/icu.spec b/icu.spec index f395d09..aa08a32 100644 --- a/icu.spec +++ b/icu.spec @@ -46,7 +46,7 @@ Patch7: icu-avoid-x87-excess-precision.diff Patch8: locale.diff Patch9: icu-1618.patch # boo#1182645 -Patch10: icu-drop-testTemperature.patch +Patch10: icu-fix-testTemperature.patch BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: pkg-config @@ -135,9 +135,6 @@ This package contains the HTML documentation. %prep %autosetup -p1 -n icu -%ifnarch aarch64 ppc64 ppc64le -%patch -P 10 -R -p1 -%endif # docs are special mkdir html @@ -219,12 +216,7 @@ rm -Rf "%buildroot/%_datadir/icu/%version/unidata/" \ %check # s390x see: https://ssl.icu-project.org/trac/ticket/13095 cd source -%if !0%{?qemu_user_space_build:1} -# Checks disabled in qemu because of races happening when we emulate -# multi-threaded programs, and some check tests atomic instructions in -# multi-threaded icu invocations ICU_DATA="%buildroot/%_datadir/icu/%version" make check %{?_smp_mflags} VERBOSE=1 -%endif %post -n %lname -p /sbin/ldconfig %postun -n %lname -p /sbin/ldconfig From 4c26bb81c3069a6e54f44a6160a7dbc3ee4bb57cc28d7d50b87c69d9fd5dfabb Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sat, 10 Apr 2021 23:27:15 +0000 Subject: [PATCH 2/2] - Update to release 69.1 OBS-URL: https://build.opensuse.org/package/show/X11:common:Factory/icu?expand=0&rev=147 --- baselibs.conf | 4 ++-- icu-1618.patch | 43 ----------------------------------- icu-fix-testTemperature.patch | 30 ------------------------ icu.changes | 15 ++++++++++++ icu.spec | 21 ++++++++--------- icu4c-68_2-docs.zip | 3 --- icu4c-68_2-docs.zip.asc | 14 ------------ icu4c-68_2-src.tgz | 3 --- icu4c-68_2-src.tgz.asc | 14 ------------ icu4c-69_1-docs.zip | 3 +++ icu4c-69_1-docs.zip.asc | 14 ++++++++++++ icu4c-69_1-src.tgz | 3 +++ icu4c-69_1-src.tgz.asc | 14 ++++++++++++ 13 files changed, 60 insertions(+), 121 deletions(-) delete mode 100644 icu-1618.patch delete mode 100644 icu-fix-testTemperature.patch delete mode 100644 icu4c-68_2-docs.zip delete mode 100644 icu4c-68_2-docs.zip.asc delete mode 100644 icu4c-68_2-src.tgz delete mode 100644 icu4c-68_2-src.tgz.asc create mode 100644 icu4c-69_1-docs.zip create mode 100644 icu4c-69_1-docs.zip.asc create mode 100644 icu4c-69_1-src.tgz create mode 100644 icu4c-69_1-src.tgz.asc diff --git a/baselibs.conf b/baselibs.conf index f196aa5..de5d664 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -1,4 +1,4 @@ -libicu68 +libicu69 libicu-devel requires -libicu- - requires "libicu68- = " + requires "libicu69- = " diff --git a/icu-1618.patch b/icu-1618.patch deleted file mode 100644 index 4dfbaaa..0000000 --- a/icu-1618.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 7045a80e08a5f662b9588ad9f0b8a5c1cd558bce Mon Sep 17 00:00:00 2001 -From: Frank Tang -Date: Fri, 5 Mar 2021 02:29:58 +0000 -Subject: [PATCH] ICU-21521 Fix cast of uprv_strcmp - -See #1618 -[Update from guillaume: drop 1st hunk for backporting] ---- - source/common/locid.cpp | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -diff --git a/source/common/locid.cpp b/source/common/locid.cpp -index 448c1de5e44..2d005b23542 100644 ---- a/source/common/locid.cpp -+++ b/source/common/locid.cpp -@@ -1618,8 +1622,12 @@ AliasReplacer::outputToString( - out.append(SEP_CHAR, status); - } - variants.sort([](UElement e1, UElement e2) -> int8_t { -- return uprv_strcmp( -+ // uprv_strcmp return int and in some platform, such as arm64-v8a, -+ // it may return positive values > 127 which cause the casted value -+ // of int8_t negative. -+ int res = uprv_strcmp( - (const char*)e1.pointer, (const char*)e2.pointer); -+ return (res == 0) ? 0 : ((res > 0) ? 1 : -1); - }, status); - int32_t variantsStart = out.length(); - for (int32_t i = 0; i < variants.size(); i++) { -@@ -1680,8 +1688,12 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status - - // Sort the variants - variants.sort([](UElement e1, UElement e2) -> int8_t { -- return uprv_strcmp( -+ // uprv_strcmp return int and in some platform, such as arm64-v8a, -+ // it may return positive values > 127 which cause the casted value -+ // of int8_t negative. -+ int res = uprv_strcmp( - (const char*)e1.pointer, (const char*)e2.pointer); -+ return (res == 0) ? 0 : ((res > 0) ? 1 : -1); - }, status); - - // A changed count to assert when loop too many times. diff --git a/icu-fix-testTemperature.patch b/icu-fix-testTemperature.patch deleted file mode 100644 index 6ffec9c..0000000 --- a/icu-fix-testTemperature.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 7c9bad02d26a59466c760a28989f7045c8f133ad Mon Sep 17 00:00:00 2001 -From: Hugo van der Merwe <17109322+hugovdm@users.noreply.github.com> -Date: Fri, 6 Nov 2020 17:55:21 +0000 -Subject: [PATCH] ICU-21366 testConverter: allow some double-precision error - for 0.0 - -See #1443 ---- - icu4c/source/test/intltest/units_test.cpp | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -Index: icu/source/test/intltest/units_test.cpp -=================================================================== ---- icu.orig/source/test/intltest/units_test.cpp -+++ icu/source/test/intltest/units_test.cpp -@@ -252,9 +252,12 @@ void UnitsTest::testTemperature() { - ConversionRates conversionRates(status); - UnitConverter converter(source, target, conversionRates, status); - -+ double maxDelta = 1e-6 * uprv_fabs(testCase.expectedValue); -+ if (testCase.expectedValue == 0) { -+ maxDelta = 1e-12; -+ } - assertEqualsNear(UnicodeString("testTemperature: ") + testCase.source + " to " + testCase.target, -- testCase.expectedValue, converter.convert(testCase.inputValue), -- 0.0001 * uprv_fabs(testCase.expectedValue)); -+ testCase.expectedValue, converter.convert(testCase.inputValue), maxDelta); - } - } - diff --git a/icu.changes b/icu.changes index 48210fa..0d722c5 100644 --- a/icu.changes +++ b/icu.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Sat Apr 10 22:41:04 UTC 2021 - Jan Engelhardt + +- Update to release 69.1 + * CLDR 39 + * For Norwegian, "no" is back to being the canonical code, with + "nb" treated as equivalent. This aligns handling of Norwegian + with other macro language codes. + * Binary prefixes in measurement units (KiB, MiB, etc.) + * Time zone offsets from local time: New APIs + BasicTimeZone::getOffsetFromLocal() (C++) and + ucal_getTimeZoneOffsetFromLocal() +- Drop icu-1618.patch (merged), + icu-fix-testTemperature.patch (merged) + ------------------------------------------------------------------- Sat Apr 10 21:27:58 UTC 2021 - Andreas Schwab diff --git a/icu.spec b/icu.spec index aa08a32..74ab5b7 100644 --- a/icu.spec +++ b/icu.spec @@ -16,9 +16,9 @@ # -%define lname libicu68 -%define amajor 68 -%define aversion 68 +%define lname libicu69 +%define amajor 69 +%define aversion 69 %ifarch %armb hppa mips mips64 ppc ppc64 %sparc s390 s390x m68k %define be_platform 1 %else @@ -26,7 +26,7 @@ %endif # icu-versioning.diff needs update for new Version too Name: icu -Version: 68.2 +Version: 69.1 Release: 0 Summary: International Components for Unicode License: ICU @@ -34,25 +34,22 @@ Group: Development/Libraries/C and C++ URL: http://icu-project.org/ #Git-Clone: https://github.com/unicode-org/icu.git -Source: https://github.com/unicode-org/icu/releases/download/release-68-2/icu4c-68_2-src.tgz -Source2: https://github.com/unicode-org/icu/releases/download/release-68-2/icu4c-68_2-src.tgz.asc -Source3: https://github.com/unicode-org/icu/releases/download/release-68-2/icu4c-68_2-docs.zip -Source4: https://github.com/unicode-org/icu/releases/download/release-68-2/icu4c-68_2-docs.zip.asc +Source: https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-src.tgz +Source2: https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-src.tgz.asc +Source3: https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-docs.zip +Source4: https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-docs.zip.asc Source99: icu.keyring Source100: baselibs.conf Patch4: icu-fix-install-mode-files.diff Patch6: icu-error-reporting.diff Patch7: icu-avoid-x87-excess-precision.diff Patch8: locale.diff -Patch9: icu-1618.patch -# boo#1182645 -Patch10: icu-fix-testTemperature.patch BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: pkg-config BuildRequires: python3-base BuildRequires: unzip -Provides: bundled(timezone) = 2020d +Provides: bundled(timezone) = 2021a %description ICU is a set of C and C++ libraries that provide extensive Unicode and locale diff --git a/icu4c-68_2-docs.zip b/icu4c-68_2-docs.zip deleted file mode 100644 index f1e72f2..0000000 --- a/icu4c-68_2-docs.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:703a4204c7683d8dad4320cfbbb6209ae6fc7bd8c4f9b0dc36394711067e89d2 -size 8075068 diff --git a/icu4c-68_2-docs.zip.asc b/icu4c-68_2-docs.zip.asc deleted file mode 100644 index 82c287b..0000000 --- a/icu4c-68_2-docs.zip.asc +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQGzBAABCgAdFiEEDlHn8G73GfvQcngqX1blr6Y8zTMFAl/bu3YACgkQX1blr6Y8 -zTPAngv7BxW+rzyUYX2Pa7eFTWS6YHb2Aj1T5zOVP5ccuzGbH+aD1HgPVJrny6GS -twEpJVDfNGcph6hKZ3Xi+alNoAXvUtgmJxpO8Hpoy01wacu57ah/4G/VbfMpw2P+ -H/ublD3BPG8hdc6/O9+2Sb8zpbBeRry7eOlX5j2q0LFOWaQ22D9sSq0N239Y3JUV -6BGDj4PXoh1ToJqNVi8BgE/pjw1qcN6vqLnWl6qM4J137S0k+3ViA1tN9LJxorhP -gM7eb+Gzf6Uez8sgjo+qgoXWieuBT03YH/EoFNcOgSTy6GCuo+UzXl2rCw3TrWCR -GhWKjQ6D3hsqQRkyO7ybEXNyrKke+PVFj9108PmnHl5g+5dXL5T1x/XNFXya6IBi -6MoAavlcWH611+AciMeQ/M4+h56U0gpZuZ4Ehv8pFNPmjXrXSOeaYDUS0IHD+1Oj -15WqerpPfm3Z1ztJ6Kzo4+FO5lzxb7vWKvWRW/OORA8ZUcW2eLSR4o3BNzDAhPAA -SxdeROi1 -=HLFa ------END PGP SIGNATURE----- diff --git a/icu4c-68_2-src.tgz b/icu4c-68_2-src.tgz deleted file mode 100644 index 20d4c96..0000000 --- a/icu4c-68_2-src.tgz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c79193dee3907a2199b8296a93b52c5cb74332c26f3d167269487680d479d625 -size 24737478 diff --git a/icu4c-68_2-src.tgz.asc b/icu4c-68_2-src.tgz.asc deleted file mode 100644 index b81fe68..0000000 --- a/icu4c-68_2-src.tgz.asc +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQGzBAABCgAdFiEEDlHn8G73GfvQcngqX1blr6Y8zTMFAl/bu4IACgkQX1blr6Y8 -zTO2DAv+Nv6JqhhhuWEwYpeNYD0I6gzwT9w8O/MlAhq1ZpH3aviHI+i4FVLwVmPB -fLh1lvi4u3xSaybrKWRcU/zAlSN0atvuLxP1qAHzlZ7KsXPtE9Nio9kgi0UEudeI -+O0IepRm+4x0cYqLuASZl84p6SAoqHn5dmrUtXMzI3ylRNFHEJ8hCSBmyeckHtTE -XqYuBb0loYDxcF0d40y/PPcUDM7zh17qqkBtf/FfpccpoWmRKIExXp12gZbSjIBs -bnFpM7IYteGrgwQvKPE8MG+oxkaX2C77gQxCpPCCy6ldOIeYehDu4dZaGWj/rZDh -zGG2CBA1sHHQ5LJOimef2cqB2+8Bw1N5PrD+w8vl4hZDSCJOP3XbR/lrj1Mg6BI2 -NVFYU+GH22OmXx7PbIYB4wmkG2EUlneOdJ5jLLaZIrEE6l+LgJu5lWdJi6+/MEdj -jHXegEFlZIfB/UTko5FuGHX7l36u3zqKmL3YyeH3j+fCYjybwswam5r4xWErzCQl -mrlKxlIi -=fk3v ------END PGP SIGNATURE----- diff --git a/icu4c-69_1-docs.zip b/icu4c-69_1-docs.zip new file mode 100644 index 0000000..ab87c38 --- /dev/null +++ b/icu4c-69_1-docs.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:670b05fc386b8b855ecd577b8fb15dfffc58a84f01b863321daf81d05b4526ca +size 8109717 diff --git a/icu4c-69_1-docs.zip.asc b/icu4c-69_1-docs.zip.asc new file mode 100644 index 0000000..854ae7b --- /dev/null +++ b/icu4c-69_1-docs.zip.asc @@ -0,0 +1,14 @@ +-----BEGIN PGP SIGNATURE----- + +iQGzBAABCgAdFiEEDlHn8G73GfvQcngqX1blr6Y8zTMFAmBudtkACgkQX1blr6Y8 +zTPfQAv9EG/fgjzHvsIlpMpHSP+ECRl78Uwzi3H3/eFqcYXMZcCF/z86InSDkoIv +JIkbzGSxPeiwv5MW+nZya9zVFCNU9pqOs11blcns1a/lp2jfWvx0aDmQr8LEB0UU +MeFZLjTFuG1fl4aZCzR3TYA+IO3GtvJ4gE1EO25ieGxXj7mkzGV1cpz70yOJ/EKX +3Tfru8bgdwn4kCl7edLcWKN6cs1kXL5M9KHYqlEJ6m0/7HUOa8JmikR60RAhchlM +9RvjgXRXV4YjymzXMjWxCefC1eMuKFsu8DjnjrNENGSBR9WWIMIW34upqQLi+ghI +Zs2nq0x09xyia/oe355R+Y4x3I2OjVm/vPtLnIob2itQ2IdsnJZCV6fCU2sgEukW +Imocgl4HIgBCusDMPGwxV3wNstdNfNfpVIL/bcKtkt3IbC7nQiLwNtS6xq2Rr9T8 +eOT5yeP9wgeKFnUcCJVUbAN8hByyMWU1oSYIBB9FwrwVTo9CmbdlMzcFVBasKAeC +LzTSCzuk +=s09n +-----END PGP SIGNATURE----- diff --git a/icu4c-69_1-src.tgz b/icu4c-69_1-src.tgz new file mode 100644 index 0000000..d1716ea --- /dev/null +++ b/icu4c-69_1-src.tgz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cba7b7acd1d3c42c44bb0c14be6637098c7faf2b330ce876bc5f3b915d09745 +size 24814903 diff --git a/icu4c-69_1-src.tgz.asc b/icu4c-69_1-src.tgz.asc new file mode 100644 index 0000000..bf86cf8 --- /dev/null +++ b/icu4c-69_1-src.tgz.asc @@ -0,0 +1,14 @@ +-----BEGIN PGP SIGNATURE----- + +iQGzBAABCgAdFiEEDlHn8G73GfvQcngqX1blr6Y8zTMFAmBudukACgkQX1blr6Y8 +zTP0QAv+J16FGZmavZI3DLsn2B9g2RqA6q/uAO4/rVwg5YyGcPIa3NB1h304c3vu +Arwv4fuug+weYG/ZgOlIhaTKg+pqEuj2RvazZOdiFZi+Cv6FoIAxBDA0shpXFxcx +nbF88xLN2QCiln6425OQawyFR+a5vOnJQRFScA6Oa4aWhlR4ezNcbnsyuz667bMF +5O14iPhmY5EFvbqrJ7YnVyF7aFGHuK0OZJfRa/6P6IipN+eZEiIquXdLbf8BxQ8/ +wMFG90UiPwPEr4R0lBfkfm3qkMX0b87ic4EUvRG/oHPXIl1mMFSTDaNhoDGYh3x5 +1vHdmjBLzC0ZGIvD+5TV2LwJG1ozqouAaCHGMKvz4xdmKmtiOAtWmrL9/od+BkRl +EORwN2XGpBPlCCNjB0nNJiCat9KHeBcypy3PpLJqU8md76CnLrDj55sZbUC+SPOB +JrNYldo+8/0qHjrQydHC8INH2Z/W5H+9RfMl48Nx4mSNUnLLIkrRWRqlda6LpvwJ ++FJTx0fx +=IpSz +-----END PGP SIGNATURE-----