Compare commits

..

21 Commits
a10 ... c10s

Author SHA1 Message Date
Petr Khartskhaev
8ee90cfce8 Added the galera single host tests into gating 2026-01-26 12:27:01 +01:00
Petr Khartskhaev
a3c80686fe Bump release for rebuild 2026-01-20 16:34:20 +01:00
Petr Khartskhaev
ffa5a4cbd6 Add galera recovery environment variable to service file and move temporary 'wsrep' files to '/run'
This commit fixes two issues:

1. A Fedora downstream one, since 11.6
   (https://jira.mariadb.org/browse/MDEV-19210), MariaDB upstream use
   environment files in their systemd service files to load environment
   variables and pass the arguments '--wsrep-new-cluster' and
   '--wsrep_start_position' when starting the daemon. The Fedora downstream
   service file has been missing the variable for '--wsrep_start_position' since
   it was added into MariaDB upstream in 10.1.15
   (a6816995ee).
   And this Fedora downstream commit adds those missing environment
   variables and their arguments into the service files. After I tested
   it, the recovery of failed nodes works.

2. A MariaDB upstream one, where the temporary 'wsrep' files have
   incorrect SELinux policies set ('mysqld-db-t' instead of
   'mysqld-run-t') because of their parent directories. This occurs
   because their location is tied to the location of 'mysql.sock' in the
   CMake files. As RPMs get built to have 'mysql.sock' in
   '/var/lib/mysql' as opposed to inside '/run' like Debian or Arch, the
   temporary files for the service could not actually be read by the
   service during start-up, resulting in failure as no primary node was
   ever created. Discussion with the MariaDB upstream
   (https://jira.mariadb.org/browse/MDEV-37726) resulted in a patch that
   separates the location of the socket file and the temporary
   environment files into two CMake flags and allows for more flexible
   building of the package.

Resolves: RHEL-142554
2026-01-20 16:31:32 +01:00
Petr Khartskhaev
518b7e3144 Rebase to 10.11.15
Release notes: https://mariadb.com/docs/release-notes/community-server/10.11/10.11.15
 Changelog: https://mariadb.com/docs/release-notes/community-server/changelogs/10.11/10.11.15

 Resolves: RHBZ#2417697
 Resolves: RHEL-132430
 Resolves: RHEL-132059
 Resolves: RHEL-132445
2025-12-01 17:19:55 +01:00
Petr Khartskhaev
3141c41b9f Enable bundling pcre2 and bump its version to 10.46
MariaDB upstream bundles pcre2 version 10.45 in 10.11.14 and .15,
which is not in RHEL9 (has pcre2 10.40) or RHEL10 (has pcre2 10.44).
Therefore, we need to bundle it in mariadb. Unfortunately, 10.45 has
CVE-2025-58050 (critical), so I bumped it to 10.46 which should only
contain the fix and no extra features.
2025-11-27 13:20:33 +01:00
Petr Khartskhaev
3a73ef72db Add gating.yaml and required new test files, deleted old tests 2025-11-27 13:20:33 +01:00
Petr Khartskhaev
ce6bf1f438 Add installation of downstream sysusers.d config file
In downstream commit 1926e2685d884ba468783417f77b0c4b57882f84,
we reverted from using unenforced UID/GIDs to enforced ones to 27.
In order to do this, I need to install the sysusers.d config
file instead of the upstream MariaDB one. This was already added
in Fedora commit ee5c679bb34335cab8b9878696f0d8604223f91f
that never got into RHEL.
2025-11-27 13:19:58 +01:00
Nikola Davidova
618f2dde18 [tmpfiles.d] Remove duplicate tmpfiles.d entry 2025-11-27 13:19:58 +01:00
Nikola Davidova
1094151779 Bump release for tmpfiles.d change 2025-11-27 13:19:58 +01:00
Nikola Davidova
8217a7fb02 [tmpfiles.d] Extend tmpfiles.d rules for ImageMode
After switching to a container image with bootc switch, systemd failed to start
MariaDB because required runtime directories were missing or had wrong permissions.

Adding tmpfiles entries with correct ownership ensures systemd creates the
necessary directories at boot and gives them correct permissions, allowing the
MariaDB daemon to start.

"In a container build, you can write to '/var'. However, this will have a semantic
similar to a Dockerfile VOLUME instruction; the content from the container image
is only copied at initial install time. Any subsequent system updates will not
by default see new changes.

It's recommended instead to use e.g. systemd tmpfiles.d as a way to ensure that
newly added state "reconciles" across upgrades as desired."

https://docs.fedoraproject.org/en-US/bootc/filesystem/#_filesystem_bind_mount_var

This covers all the files in /var sicne we only ship these as can be seen here:
find | grep /var/
./mariadb11.8-server-11.8.2-3.fc43.x86_64.rpm/var/lib
./mariadb11.8-server-11.8.2-3.fc43.x86_64.rpm/var/lib/mysql
./mariadb11.8-server-11.8.2-3.fc43.x86_64.rpm/var/log
./mariadb11.8-server-11.8.2-3.fc43.x86_64.rpm/var/log/mariadb

The '/usr' directory is not persistent therefore this change does not affect it
and the '/etc' directory is merged in a different way and also not under the
'mysql:mysql' user.
2025-11-27 13:19:58 +01:00
Lukas Javorsky
b0e9e736d7 Revert to soft static allocation of MariaDB and MySQL sysusers.d files
Resolves: RHEL-119790

Related PR for `setup` RPM: https://src.fedoraproject.org/rpms/setup/pull-request/30

Reverts commit: 3577147

The MariaDB and MySQL sysusers.d files has to use soft static allocation in order to correctly handle the MariaDB PAM v2 plugin which utilizes setuid-to-root binary "/usr/lib64/mariadb/plugin/auth_pam_tool_dir/auth_pam_tool".
2025-11-27 13:19:58 +01:00
Pavol Sloboda
68bc191611 Rebase to 10.11.14
Release notes: https://mariadb.com/docs/release-notes/community-server/mariadb-10-11-series/mariadb-10.11.14-release-notes
Changelog: https://mariadb.com/docs/release-notes/community-server/changelogs/changelogs-mariadb-10-11-series/mariadb-10.11.14-changelog

Resolves: RHBZ#2386961
2025-11-27 13:19:58 +01:00
Michal Schorm
55c454ec7a Fix the 'Conflicts:' with MySQL packages
The package conflicts between MariaDB and MySQL packages are only set against the un-versioned names.
(the un-versioned names are only provided by the distribution default version)

The conflicts has to be extended to cover the '-any' virtually provided names,
which are provided by all versions of the versioned packages.
2025-11-27 13:19:58 +01:00
Michal Schorm
ac4c828b29 [packaging bugfix] Fix undeclared file conflicts with rocksdb-tools
rpmdeplint error:
  mariadb-rocksdb-engine-3:10.11.13-8.fc43.x86_64 provides /usr/bin/sst_dump
  which is also provided by rocksdb-tools-10.1.3-1.fc43.x86_64
2025-11-27 13:19:58 +01:00
Michal Schorm
ac4e188a26 [packaging bugfix] Fix the application of the compilation flags
I discovered that the second call of "cmake -LAH" further changes the cache.
That was definitelly unintended. Applying "-N" to operate in "cache read-only" mode.

That however broke the build, since the compilation flags are set up during the "cmake" call.
Up until now, the code flow was:
  1) %cmake ...
  2) <adjusting compilation flags>
  3) cmake -LAH
And since the "cmake -LAH" without the "-N" argument changed the cache, it actually applied all the
adjustements in the second step. When switched to "-N" mode, the flags failed to be applied, and the build broke.

What we actually need to do is to:
  1) initialize the compilation flags with the distribution default values
  2) adjust the compilation flags
  3) %cmake ...
  3) cmake -N -LAH

This way the compilation flags are correctly applied during the first CMake call,
and the CMake cache remains unchanged during the second CMake call.

--

The '%cmake' macro contains the '%{set_build_flags}' macro at it's beginning
  https://src.fedoraproject.org/rpms/cmake/blob/b3bf0e/f/macros.cmake.in#_20
and the '%{set_build_flags}' macro is constructed with the:
  CFLAGS="${CFLAGS:-...}
syntax, which translates to "Use the content of the $CFLAGS variable. If empty, use the following default value: '...' ".

So we first need to call the '%{set_build_flags}' macro separately, so we apply the default values. Then we append to them.
And then the '%cmake' macro calls the '%{set_build_flags}' macro that finds the existing values, and uses them, instead of the default ones.

Resolves: RHEL-93751
2025-11-27 13:19:58 +01:00
Michal Schorm
69f2e2a9fd [SPECfile bugfix] Fix the control code for the GSSAPI plugin
- we were missing the CMake control variable

- I also discovered that the build of the gssapi client plugin -
  which we remove, since it is shipped as a part of the
  'mariadb-connector-c' package in Fedora,
  is somehow also controlled bz the build of the hashicorp plugin.

  Need further examination.
2025-11-25 11:59:50 +01:00
Michal Schorm
ad10e0311d [bugfix] Fixup of the versioned package layout control code 2025-11-25 11:59:50 +01:00
Michal Schorm
df8c149e1f [packaging enhancement] Pack the symlinks to the mariadb systemd service
so that the user can access it using the 'mysql.service' and 'mysqld.service'
names even before the first call of 'systemctl enable mariadb.service' which
creates the symlinks.

This has been consulted with the systemd team and approved by them.

The update is acutally a mirror of what MariaDB upstream is doing in their RPMs.
2025-11-25 11:59:50 +01:00
Michal Schorm
b703671d0a [packaging enahncement] Remove 'force' from 'rm -rf',
to be be notified of unexpected changes in the removed files
2025-11-25 11:59:50 +01:00
Michal Schorm
a46c31310a [bugfix] Add Requires to 'which' for the server.
The 'wsrep_sst_common' and 'wsrep_sst_rsync_tunnel' scripts requires 'which' utility

https://github.com/MariaDB/server/blob/main/scripts/wsrep_sst_common.sh#L39
https://src.fedoraproject.org/rpms/mariadb10.11/blob/rawhide/f/wsrep_sst_rsync_tunnel#_94
2025-11-25 11:59:50 +01:00
Pavol Sloboda
c836d824a5 Rebase to 10.11.13
Release notes: https://mariadb.com/kb/en/mariadb-10-11-13-release-notes/
Changlelog: https://mariadb.com/kb/en/mariadb-10-11-13-changelog/

Resolves: RHEL-80164
Resolves: https://gitlab.com/redhat/centos-stream/rpms/mariadb10.11/-/merge_requests/11
2025-06-27 15:01:19 +02:00
12 changed files with 199 additions and 43 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

6
.gitignore vendored Normal file → Executable file
View File

@ -1,2 +1,4 @@
fmt-11.0.2.zip
mariadb-10.11.15.tar.gz
/*/
/*.rpm
/*.tar.gz
/*.zip

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# mariadb10.11
The mariadb10.11 package

1
ci.fmf Normal file
View File

@ -0,0 +1 @@
resultsdb-testcase: separate

9
gating.yaml Normal file
View File

@ -0,0 +1,9 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/rhel-gating.functional}
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/centos-stream}
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/centos-stream-galera}

21
mariadb-ssl-cypher.patch Normal file
View File

@ -0,0 +1,21 @@
diff -up mariadb-10.1.19/mysql-test/r/ssl_8k_key.result.sslbak mariadb-10.1.19/mysql-test/r/ssl_8k_key.result
--- mariadb-10.1.19/mysql-test/r/ssl_8k_key.result.sslbak 2016-11-24 08:55:21.637000000 -0500
+++ mariadb-10.1.19/mysql-test/r/ssl_8k_key.result 2016-11-24 08:55:55.853000000 -0500
@@ -1,2 +1,2 @@
-Variable_name Value
-Ssl_cipher DHE-RSA-AES256-SHA
+have_ssl
+1
diff -up mariadb-10.1.19/mysql-test/t/ssl_8k_key.test.sslbak mariadb-10.1.19/mysql-test/t/ssl_8k_key.test
--- mariadb-10.1.19/mysql-test/t/ssl_8k_key.test.sslbak 2016-11-24 08:54:10.485000000 -0500
+++ mariadb-10.1.19/mysql-test/t/ssl_8k_key.test 2016-11-24 08:54:35.724000000 -0500
@@ -5,7 +5,7 @@
#
# Bug#29784 YaSSL assertion failure when reading 8k key.
#
---exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1
+--exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher'" 2>&1
## This test file is for testing encrypted communication only, not other
## encryption routines that the SSL library happens to provide!

79
mariadb.rpmlintrc Normal file
View File

@ -0,0 +1,79 @@
# THIS FILE SERVES FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON
# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors
# (same file in python3 package served as a great example)
# Spelling errors
addFilter(r'spelling-error .* en_US (cnf|mysqld|benchmarking|pam|passwordless|subpackage|libmariadb|mariadbd) ')
# Debugsource
addFilter(r'^mariadb.*debugsource\.[^:]+: (E|W): no-documentation')
# Debuginfo
addFilter(r'^mariadb.*debuginfo\.[^:]+: (E|W): useless-provides debuginfo\(build-id\)')
# Debug symlinks
addFilter(r'dangling-relative-symlink /usr/lib/.build-id')
# Testsuite
# Some expected tests results are zero-length files
addFilter(r'(zero-length|pem-certificate) /usr/share/mysql-test/*')
# Chroot function
# False positive; checked by upstream
addFilter(r'missing-call-to-chdir-with-chroot')
# Missing documentation
# I don't think that's on the upstream priority list
addFilter(r'no-documentation')
addFilter(r'no-manual-page-for-binary')
# Obsoleted not provided
# Obsoleting upstream packages, not providing them is expected to not mix them up
addFilter(r'obsolete-not-provided MySQL')
# Provided by mariadb-connector-c
addFilter(r'obsolete-not-provided mariadb-libs')
# Upstream dropped support
addFilter(r'obsolete-not-provided mariadb-bench')
addFilter(r'obsolete-not-provided mariadb-tokudb-engine')
# Config file without noreplace flag
# Don't replace logs that may contain old entries
addFilter(r'conffile-without-noreplace-flag /var/log/mariadb/mariadb.log')
# Log rotation
# MariaDB log rotation script is commented out, because it is still not ready for big industry usage.
# Let the user decide, if they want to enable it (uncomment it)
addFilter(r'incoherent-logrotate-file /etc/logrotate.d/mariadb')
# Permissions
# wsrep_sst_common
# It contains a parser of arguments for other sst scripts.
# It is meant to be sourced, not to be executed alone.
# So it correctly does not have shebang nor executable bit.
addFilter(r'non-executable-in-bin /usr/bin/wsrep_sst_common 644')
addFilter(r'script-without-shebang /usr/bin/wsrep_sst_common')
addFilter(r'non-executable-script /usr/bin/wsrep_sst_common 644 None')
# mariadb-scripts-common has a similar issue
addFilter(r'non-executable-script /usr/libexec/mariadb-scripts-common 644 /bin/sh')
# Seems pretty standard to me ...
addFilter(r'non-standard-dir-perm /var/log/mariadb 750')
# 640 is IMO also prety OK
addFilter(r'non-readable /etc/sysconfig/clustercheck 640')
# Unversioned bundles
# RocksDB has so rapid developement, it it not compatible through versions.
# That means we need to stick to the exact verison upstream use.
addFilter(r'unversioned-explicit-provides bundled\(rocksdb\)')
# Testsuite errors
addFilter(r'non-executable-script /usr/share/mysql-test')
addFilter(r'arch-dependent-file-in-usr-share /usr/share/mysql-test')
# Comments at the end of RPM %endif tags
addFilter(r'extra tokens at the end of %endif directive')
# PAM plugin specialities - all expected
addFilter(r'non-conffile-in-etc /etc/security/user_map.conf')
addFilter(r'setuid-binary /usr/lib64/mariadb/plugin/auth_pam_tool_dir/auth_pam_tool')
addFilter(r'non-standard-executable-perm /usr/lib64/mariadb/plugin/auth_pam_tool_dir/auth_pam_tool')

View File

@ -153,7 +153,7 @@
Name: %{majorname}%{majorversion}
Version: %{package_version}
Release: 2%{?with_debug:.debug}%{?dist}.alma.1
Release: 2%{?with_debug:.debug}%{?dist}
Epoch: 3
Summary: A very fast and robust SQL database server
@ -222,9 +222,6 @@ Patch14: %{majorname}-mtr.patch
# Patch15: fix bundled pcre version to 10.46 because of CVE-2025-58050
Patch15: pcre_bundling.patch
# AlmaLinux Patch
Patch1001: mark-RISC-V64-as-64-bit-architecture.patch
# This macro is used for package/sub-package names in the entire specfile
%if %?mariadb_default
%global pkgname %{majorname}
@ -866,9 +863,6 @@ rm -r storage/rocksdb/
%patch -P15 -p1
%endif
# Applying AlmaLinux Patch
%patch -P1001 -p1 -b .mark-RISC-V64-as-64-bit-architecture
# generate a list of tests that fail, but are not disabled by upstream
cat %{SOURCE50} | tee -a mysql-test/unstable-tests
@ -1817,9 +1811,6 @@ fi
%endif
%changelog
* Wed Apr 22 2026 Andrew Lukoshko <alukoshko@almalinux.org> - 3:10.11.15-2.alma.1
- Mark RISC-V64 as 64-bit architecture
* Tue Jan 20 2026 Petr Khartskhaev <pkhartsk@redhat.com> - 3:10.11.15-2
- Updated service files to work with environment files

View File

@ -1,30 +0,0 @@
Upstream-status: https://github.com/mariadb-corporation/mariadb-connector-c/pull/295
From d43c1ac8479431281ee524a754fd17126e08f0d5 Mon Sep 17 00:00:00 2001
Message-ID: <d43c1ac8479431281ee524a754fd17126e08f0d5.1764580375.git.mjuszkiewicz@redhat.com>
From: Marcin Juszkiewicz <mjuszkiewicz@redhat.com>
Date: Mon, 1 Dec 2025 10:10:17 +0100
Subject: [PATCH] mark RISC-V64 as 64-bit architecture
Signed-off-by: Marcin Juszkiewicz <mjuszkiewicz@redhat.com>
---
cmake/install.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libmariadb/cmake/install.cmake b/libmariadb/cmake/install.cmake
index 90bae8b5..264e2ace 100644
--- a/libmariadb/cmake/install.cmake
+++ b/libmariadb/cmake/install.cmake
@@ -76,7 +76,7 @@ SET(LIBMARIADB_STATIC_DEFAULT "mariadbclient")
# RPM layout
#
SET(INSTALL_BINDIR_RPM "bin")
-IF((CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "s390x") AND CMAKE_SIZEOF_VOID_P EQUAL 8)
+IF((CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le" OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "s390x" OR CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64") AND CMAKE_SIZEOF_VOID_P EQUAL 8)
SET(INSTALL_LIBDIR_RPM "lib64/mariadb")
SET(INSTALL_PCDIR_RPM "lib64/pkgconfig")
SET(INSTALL_PLUGINDIR_RPM "lib64/mariadb/plugin")
--
2.52.0

28
plans.fmf Normal file
View File

@ -0,0 +1,28 @@
/rhel-gating:
plan:
import:
url: https://pkgs.devel.redhat.com/git/tests/mariadb
name: /plans/versioned/mariadb10.11/gating
/rhel-no-gating:
plan:
import:
url: https://pkgs.devel.redhat.com/git/tests/mariadb
name: /plans/versioned/mariadb10.11/no-gating
/centos-stream:
environment:
BUILD_PACKAGE: mariadb-server
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/mariadb
name: /plans/versioned/base-package
/centos-stream-galera:
environment:
BUILD_PACKAGE: mariadb-server
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/mariadb
name: /plans/versioned/galera-single-host

50
rpminspect.yaml Normal file
View File

@ -0,0 +1,50 @@
# Set up global ignore list
ignore:
# mysql-test/ directory contains an extensive test-suite of about 20.000 files;
# It is very time consuming to be fully analysed and the results aren't useful anyway
# It is expected the tests change during rebases, as the underlying functionality the test evolve
# Some of the tests contain broken or problematic code, however that is on purpose
- /usr/share/mysql-test/
# based on https://lists.launchpad.net/maria-discuss/msg06133.html discussion
# are the invalid xmls (except for Index.xml) present in the sources on purpose
# and they can be removed from xmllint rpminspect check in the CI process.
#
# A bug report [https://jira.mariadb.org/browse/MDEV-26905] was created in the upstream
# for the Index.xml file.
#
# Fedora CI picks up the rpmlimspect.yaml for specific package in the dist-git repo
#[ref: https://rpminspect.readthedocs.io/en/latest/configuration.html#rpminspect-yaml]
#
xml:
ignore:
- /usr/share/mysql-test/std_data/loadxml.dat
- /usr/share/mysql-test/std_data/loaddata/mdev9874.xml
- /usr/share/mysql-test/std_data/ldml/Index.xml
- /usr/share/mysql-test/plugin/sphinx/sphinx/testdata.xml
- /usr/share/mysql-test/plugin/connect/connect/std_data/nocs.xml
- /usr/share/mariadb/charsets/Index.xml
# ignore bad functions in resolveip binary, based on BZ1973194
# all forbidden functions listed in main rpminspect config
# have to be menioned also here, else it would not be checked for them
badfuncs:
- gethostbyname
- gethostbyname2
- gethostbyaddr
- inet_addr
- inet_aton
- inet_nsap_addr
- inet_ntoa
- inet_nsap_ntoa
- inet_makeaddr
- inet_netof
- inet_network
- inet_neta
- inet_net_ntop
- inet_net_pton
- rcmd
- rexec
- rresvport
ignore:
- /usr/bin/resolveip

3
sources Normal file → Executable file
View File

@ -1,2 +1,3 @@
SHA512 (fmt-11.0.2.zip) = 06eba9a2a8d1c2269801e10a00ed26a9344b79bca0391a6b10f35e9716682f8345125fceb96e9ca36ffbd4c0558b0e63e4c45a9dff09a8ee186458ec68e34198
SHA512 (mariadb-10.11.15.tar.gz) = 98d1e54954b69cf87a96be7d76f80333f27832a29279e6b0a9615b830e171713222abcb9ec9b9a545c0fc4a0f9f8e3d4774babcabf534a6fa3cb3dfdaed0dedc
SHA512 (fmt-11.0.2.zip) = 06eba9a2a8d1c2269801e10a00ed26a9344b79bca0391a6b10f35e9716682f8345125fceb96e9ca36ffbd4c0558b0e63e4c45a9dff09a8ee186458ec68e34198
SHA512 (pcre2-10.46.zip) = 1381ba2fe352ba33b90c416c25d2ee057f167fae3ecd9a56743ee2d381fd5793cd65dec07018ed77ce8576eaac993498ad6824cb58bf9fae2f5756881f4a9f9b