Merge branch 'f32'

This commit is contained in:
Elliott Sales de Andrade 2020-06-20 04:22:53 -04:00
commit d52452b8de
9 changed files with 69 additions and 63 deletions

2
.gitignore vendored
View File

@ -47,3 +47,5 @@ matplotlib-1.0.0-without-gpc.tar.gz
/matplotlib-3.2.0.tar.gz
/matplotlib-3.2.0-with-freetype-2.10.1.tar.gz
/matplotlib-3.2.1.tar.gz
/matplotlib-3.2.2.tar.gz
/matplotlib-3.2.2-with-freetype-2.10.1.tar.gz

View File

@ -1,4 +1,4 @@
From 0ffab3ff58bee5346b9443a8b769d9786aba3b26 Mon Sep 17 00:00:00 2001
From a3fec73e39558f1a8d41663fe05783889e735af4 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Sat, 2 Mar 2019 18:18:29 -0500
Subject: [PATCH] Use packaged jquery and jquery-ui.
@ -7,8 +7,8 @@ Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
.../backends/web_backend/all_figures.html | 6 +--
.../backends/web_backend/single_figure.html | 6 +--
setup.py | 53 -------------------
3 files changed, 6 insertions(+), 59 deletions(-)
setup.py | 54 -------------------
3 files changed, 6 insertions(+), 60 deletions(-)
diff --git a/lib/matplotlib/backends/web_backend/all_figures.html b/lib/matplotlib/backends/web_backend/all_figures.html
index 41f48dc6d..69097eb4f 100644
@ -45,10 +45,10 @@ index 4d5a366fb..c11c86618 100644
<script src="{{ prefix }}/js/mpl.js"></script>
<script>
diff --git a/setup.py b/setup.py
index 760e84af1..2b184749f 100644
index bf03159fb..81c2f96d7 100644
--- a/setup.py
+++ b/setup.py
@@ -26,8 +26,6 @@ from zipfile import ZipFile
@@ -28,8 +28,6 @@ from zipfile import ZipFile
from setuptools import setup, find_packages, Extension
from setuptools.command.build_ext import build_ext as BuildExtCommand
@ -57,7 +57,7 @@ index 760e84af1..2b184749f 100644
from setuptools.command.test import test as TestCommand
# The setuptools version of sdist adds a setup.cfg file to the tree.
@@ -115,57 +113,6 @@ cmdclass['test'] = NoopTestCommand
@@ -120,58 +118,6 @@ cmdclass['test'] = NoopTestCommand
cmdclass['build_ext'] = BuildExtraLibraries
@ -79,8 +79,9 @@ index 760e84af1..2b184749f 100644
- try:
- buff = download_or_cache(url, sha)
- except Exception:
- raise IOError(f"Failed to download jquery-ui. Please download "
- f"{url} and extract it to {dest}.")
- raise IOError(
- "Failed to download jquery-ui. Please download "
- "{url} and extract it to {dest}.".format(url=url, dest=dest))
- with ZipFile(buff) as zf:
- zf.extractall(dest)
-
@ -116,5 +117,5 @@ index 760e84af1..2b184749f 100644
# however, this is needed on Windows to avoid creating infinite subprocesses
# when using multiprocessing.
--
2.21.0
2.25.4

View File

@ -1,4 +1,4 @@
From 45f0f90c1a4d55f13c6067ef1abaa821d30b9faf Mon Sep 17 00:00:00 2001
From 4431ff98f5f95a65378f4fa4b6e6fe02280911bf Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Wed, 27 Sep 2017 19:35:59 -0400
Subject: [PATCH 1/4] matplotlibrc path search fix
@ -107,5 +107,5 @@ index 87dfbeceb..54885da47 100644
newlines = []
for line in rclines:
--
2.21.1
2.25.4

View File

@ -1,4 +1,4 @@
From cff0aeead7f2e1b570613dbec8c67d0f715fc87e Mon Sep 17 00:00:00 2001
From c61647b9604ce6538fa28b807d094056b005258d Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Fri, 14 Feb 2020 06:05:42 -0500
Subject: [PATCH 2/4] Set FreeType version to 2.10.1 and update tolerances.
@ -26,10 +26,10 @@ index d2bd48800..ff06bf049 100644
from matplotlib import ft2font
if (ft2font.__freetype_version__ != LOCAL_FREETYPE_VERSION or
diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py
index 93548b279..de146a527 100644
index 75636301d..b5bfc32c3 100644
--- a/lib/matplotlib/tests/test_axes.py
+++ b/lib/matplotlib/tests/test_axes.py
@@ -6405,7 +6405,7 @@ def test_normal_axes():
@@ -6425,7 +6425,7 @@ def test_normal_axes():
]
for nn, b in enumerate(bbaxis):
targetbb = mtransforms.Bbox.from_bounds(*target[nn])
@ -38,7 +38,7 @@ index 93548b279..de146a527 100644
target = [
[150.0, 119.999, 930.0, 11.111],
@@ -6423,7 +6423,7 @@ def test_normal_axes():
@@ -6443,7 +6443,7 @@ def test_normal_axes():
target = [85.5138, 75.88888, 1021.11, 1017.11]
targetbb = mtransforms.Bbox.from_bounds(*target)
@ -47,7 +47,7 @@ index 93548b279..de146a527 100644
# test that get_position roundtrips to get_window_extent
axbb = ax.get_position().transformed(fig.transFigure).bounds
@@ -6548,7 +6548,7 @@ def test_get_tightbbox_polar():
@@ -6568,7 +6568,7 @@ def test_get_tightbbox_polar():
fig.canvas.draw()
bb = ax.get_tightbbox(fig.canvas.get_renderer())
assert_allclose(bb.extents,
@ -102,5 +102,5 @@ index 09cd6bbd7..c3c96d4e0 100644
--
2.21.1
2.25.4

View File

@ -1,4 +1,4 @@
From 8652868372a2a227091c457f1c711f2b6dd6af40 Mon Sep 17 00:00:00 2001
From e952bc36999a141a5c026544bae0c52817d4edd9 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Tue, 23 Jan 2018 20:27:17 -0500
Subject: [PATCH 3/4] Increase tolerances for non-x86_64 arches.
@ -38,5 +38,5 @@ index 9ed9a9280..56a3bd14a 100644
fig, ax = plt.subplots()
ax.imshow(np.zeros((10, 10)), interpolation='nearest')
--
2.21.1
2.25.4

View File

@ -1,4 +1,4 @@
From 9e7be0a26644ec35dde39fb332837baab80f91cb Mon Sep 17 00:00:00 2001
From 928df2339ec6f8cc838f2b46c4bef4b10dc66c52 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Sat, 31 Mar 2018 00:15:14 -0400
Subject: [PATCH 4/4] Increase some tolerances for 32-bit systems.
@ -30,7 +30,7 @@ Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
22 files changed, 60 insertions(+), 70 deletions(-)
diff --git a/lib/matplotlib/testing/decorators.py b/lib/matplotlib/testing/decorators.py
index 7d0941233..29df3f284 100644
index cd447976b..545bf2cfe 100644
--- a/lib/matplotlib/testing/decorators.py
+++ b/lib/matplotlib/testing/decorators.py
@@ -269,7 +269,7 @@ def _pytest_image_comparison(baseline_images, extensions, tol,
@ -56,7 +56,7 @@ index a598e822d..becc9b46d 100644
exterior = mpath.Path.unit_rectangle().deepcopy()
exterior.vertices *= 4
diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py
index de146a527..4d7a3ba47 100644
index b5bfc32c3..8bf3afb54 100644
--- a/lib/matplotlib/tests/test_axes.py
+++ b/lib/matplotlib/tests/test_axes.py
@@ -563,7 +563,7 @@ def test_single_point():
@ -68,7 +68,7 @@ index de146a527..4d7a3ba47 100644
def test_single_date():
# use former defaults to match existing baseline image
plt.rcParams['axes.formatter.limits'] = -7, 7
@@ -1093,7 +1093,7 @@ def test_fill_between_interpolate():
@@ -1097,7 +1097,7 @@ def test_fill_between_interpolate():
@image_comparison(['fill_between_interpolate_decreasing'],
@ -77,7 +77,7 @@ index de146a527..4d7a3ba47 100644
def test_fill_between_interpolate_decreasing():
p = np.array([724.3, 700, 655])
t = np.array([9.4, 7, 2.2])
@@ -1208,7 +1208,7 @@ def test_pcolormesh_alpha():
@@ -1212,7 +1212,7 @@ def test_pcolormesh_alpha():
@image_comparison(['pcolormesh_datetime_axis.png'],
@ -86,7 +86,7 @@ index de146a527..4d7a3ba47 100644
def test_pcolormesh_datetime_axis():
fig = plt.figure()
fig.subplots_adjust(hspace=0.4, top=0.98, bottom=.15)
@@ -1234,7 +1234,7 @@ def test_pcolormesh_datetime_axis():
@@ -1238,7 +1238,7 @@ def test_pcolormesh_datetime_axis():
@image_comparison(['pcolor_datetime_axis.png'],
@ -95,7 +95,7 @@ index de146a527..4d7a3ba47 100644
def test_pcolor_datetime_axis():
fig = plt.figure()
fig.subplots_adjust(hspace=0.4, top=0.98, bottom=.15)
@@ -1290,7 +1290,8 @@ def test_canonical():
@@ -1294,7 +1294,8 @@ def test_canonical():
ax.plot([1, 2, 3])
@ -105,7 +105,7 @@ index de146a527..4d7a3ba47 100644
def test_arc_angles():
from matplotlib import patches
# Ellipse parameters
@@ -2749,7 +2750,7 @@ def test_boxplot_mod_artist_after_plotting():
@@ -2769,7 +2770,7 @@ def test_boxplot_mod_artist_after_plotting():
@image_comparison(['violinplot_vert_baseline.png',
@ -114,7 +114,7 @@ index de146a527..4d7a3ba47 100644
def test_vert_violinplot_baseline():
# First 9 digits of frac(sqrt(2))
np.random.seed(414213562)
@@ -2766,7 +2767,7 @@ def test_vert_violinplot_baseline():
@@ -2786,7 +2787,7 @@ def test_vert_violinplot_baseline():
showmedians=0, data=data)
@ -123,7 +123,7 @@ index de146a527..4d7a3ba47 100644
def test_vert_violinplot_showmeans():
ax = plt.axes()
# First 9 digits of frac(sqrt(3))
@@ -2776,7 +2777,7 @@ def test_vert_violinplot_showmeans():
@@ -2796,7 +2797,7 @@ def test_vert_violinplot_showmeans():
showmedians=0)
@ -132,7 +132,7 @@ index de146a527..4d7a3ba47 100644
def test_vert_violinplot_showextrema():
ax = plt.axes()
# First 9 digits of frac(sqrt(5))
@@ -2786,7 +2787,7 @@ def test_vert_violinplot_showextrema():
@@ -2806,7 +2807,7 @@ def test_vert_violinplot_showextrema():
showmedians=0)
@ -141,7 +141,7 @@ index de146a527..4d7a3ba47 100644
def test_vert_violinplot_showmedians():
ax = plt.axes()
# First 9 digits of frac(sqrt(7))
@@ -2796,7 +2797,7 @@ def test_vert_violinplot_showmedians():
@@ -2816,7 +2817,7 @@ def test_vert_violinplot_showmedians():
showmedians=1)
@ -150,7 +150,7 @@ index de146a527..4d7a3ba47 100644
def test_vert_violinplot_showall():
ax = plt.axes()
# First 9 digits of frac(sqrt(11))
@@ -2807,7 +2808,7 @@ def test_vert_violinplot_showall():
@@ -2827,7 +2828,7 @@ def test_vert_violinplot_showall():
quantiles=[[0.1, 0.9], [0.2, 0.8], [0.3, 0.7], [0.4, 0.6]])
@ -159,7 +159,7 @@ index de146a527..4d7a3ba47 100644
def test_vert_violinplot_custompoints_10():
ax = plt.axes()
# First 9 digits of frac(sqrt(13))
@@ -2817,7 +2818,7 @@ def test_vert_violinplot_custompoints_10():
@@ -2837,7 +2838,7 @@ def test_vert_violinplot_custompoints_10():
showmedians=0, points=10)
@ -168,7 +168,7 @@ index de146a527..4d7a3ba47 100644
def test_vert_violinplot_custompoints_200():
ax = plt.axes()
# First 9 digits of frac(sqrt(17))
@@ -2827,7 +2828,7 @@ def test_vert_violinplot_custompoints_200():
@@ -2847,7 +2848,7 @@ def test_vert_violinplot_custompoints_200():
showmedians=0, points=200)
@ -177,7 +177,7 @@ index de146a527..4d7a3ba47 100644
def test_horiz_violinplot_baseline():
ax = plt.axes()
# First 9 digits of frac(sqrt(19))
@@ -2837,7 +2838,7 @@ def test_horiz_violinplot_baseline():
@@ -2857,7 +2858,7 @@ def test_horiz_violinplot_baseline():
showextrema=0, showmedians=0)
@ -186,7 +186,7 @@ index de146a527..4d7a3ba47 100644
def test_horiz_violinplot_showmedians():
ax = plt.axes()
# First 9 digits of frac(sqrt(23))
@@ -2847,7 +2848,7 @@ def test_horiz_violinplot_showmedians():
@@ -2867,7 +2868,7 @@ def test_horiz_violinplot_showmedians():
showextrema=0, showmedians=1)
@ -195,7 +195,7 @@ index de146a527..4d7a3ba47 100644
def test_horiz_violinplot_showmeans():
ax = plt.axes()
# First 9 digits of frac(sqrt(29))
@@ -2857,7 +2858,7 @@ def test_horiz_violinplot_showmeans():
@@ -2877,7 +2878,7 @@ def test_horiz_violinplot_showmeans():
showextrema=0, showmedians=0)
@ -204,7 +204,7 @@ index de146a527..4d7a3ba47 100644
def test_horiz_violinplot_showextrema():
ax = plt.axes()
# First 9 digits of frac(sqrt(31))
@@ -2867,7 +2868,7 @@ def test_horiz_violinplot_showextrema():
@@ -2887,7 +2888,7 @@ def test_horiz_violinplot_showextrema():
showextrema=1, showmedians=0)
@ -213,7 +213,7 @@ index de146a527..4d7a3ba47 100644
def test_horiz_violinplot_showall():
ax = plt.axes()
# First 9 digits of frac(sqrt(37))
@@ -2878,7 +2879,7 @@ def test_horiz_violinplot_showall():
@@ -2898,7 +2899,7 @@ def test_horiz_violinplot_showall():
quantiles=[[0.1, 0.9], [0.2, 0.8], [0.3, 0.7], [0.4, 0.6]])
@ -222,7 +222,7 @@ index de146a527..4d7a3ba47 100644
def test_horiz_violinplot_custompoints_10():
ax = plt.axes()
# First 9 digits of frac(sqrt(41))
@@ -2888,7 +2889,7 @@ def test_horiz_violinplot_custompoints_10():
@@ -2908,7 +2909,7 @@ def test_horiz_violinplot_custompoints_10():
showextrema=0, showmedians=0, points=10)
@ -231,7 +231,7 @@ index de146a527..4d7a3ba47 100644
def test_horiz_violinplot_custompoints_200():
ax = plt.axes()
# First 9 digits of frac(sqrt(43))
@@ -3652,8 +3653,7 @@ def test_vertex_markers():
@@ -3672,8 +3673,7 @@ def test_vertex_markers():
ax.set_ylim([-1, 10])
@ -241,7 +241,7 @@ index de146a527..4d7a3ba47 100644
def test_eb_line_zorder():
x = list(range(10))
@@ -4340,7 +4340,7 @@ def test_psd_noise():
@@ -4360,7 +4360,7 @@ def test_psd_noise():
ax3.set_ylabel('')
@ -250,7 +250,7 @@ index de146a527..4d7a3ba47 100644
def test_csd_freqs():
'''test axes.csd with sinusoidal stimuli'''
n = 10000
@@ -5244,7 +5244,7 @@ def test_rc_spines():
@@ -5264,7 +5264,7 @@ def test_rc_spines():
fig, ax = plt.subplots()
@ -259,7 +259,7 @@ index de146a527..4d7a3ba47 100644
def test_rc_grid():
fig = plt.figure()
rc_dict0 = {
@@ -5786,7 +5786,7 @@ def test_date_timezone_y():
@@ -5806,7 +5806,7 @@ def test_date_timezone_y():
plt.plot_date([3] * 3, time_index, tz='UTC', xdate=False, ydate=True)
@ -269,7 +269,7 @@ index de146a527..4d7a3ba47 100644
# Tests issue 5575
UTC = datetime.timezone.utc
diff --git a/lib/matplotlib/tests/test_collections.py b/lib/matplotlib/tests/test_collections.py
index 0983283ec..c4032f920 100644
index 3f5b3bf1a..773573918 100644
--- a/lib/matplotlib/tests/test_collections.py
+++ b/lib/matplotlib/tests/test_collections.py
@@ -461,7 +461,7 @@ def test_EllipseCollection():
@ -409,7 +409,7 @@ index ee67b4e41..3ae6e4ebc 100644
fig, ax = plt.subplots()
ax.set_prop_cycle(cycler('ls', ['-', '--', ':']))
diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py
index a9e8dfade..98d90eea1 100644
index b5ca0ed5b..272fd6101 100644
--- a/lib/matplotlib/tests/test_figure.py
+++ b/lib/matplotlib/tests/test_figure.py
@@ -13,8 +13,7 @@ import numpy as np
@ -492,7 +492,7 @@ index 508e29fa0..f6862e631 100644
matplotlib.rcParams['mathtext.fontset'] = fontset
fig = plt.figure(figsize=(5.25, 0.75))
diff --git a/lib/matplotlib/tests/test_patches.py b/lib/matplotlib/tests/test_patches.py
index 32ce5db1c..63abc712a 100644
index c0eda5542..62670dbbf 100644
--- a/lib/matplotlib/tests/test_patches.py
+++ b/lib/matplotlib/tests/test_patches.py
@@ -257,8 +257,7 @@ def test_wedge_movement():
@ -661,5 +661,5 @@ index 592096b74..69ac5a2b3 100644
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
--
2.21.1
2.25.4

View File

@ -1,4 +1,4 @@
From 8b585994418d62cde4a525f4e6a14aeba42459f4 Mon Sep 17 00:00:00 2001
From 91ef378043f12f16a9a1f03437d9f51220dff305 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Sat, 31 Mar 2018 00:33:37 -0400
Subject: [PATCH 4/4] Increase some tolerances for non-x86 arches.
@ -43,7 +43,7 @@ index a9409e2c1..9627b3569 100644
def test_fancyarrow_dpi_cor_200dpi():
"""
diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py
index de146a527..8574a95d2 100644
index b5bfc32c3..a956412d1 100644
--- a/lib/matplotlib/tests/test_axes.py
+++ b/lib/matplotlib/tests/test_axes.py
@@ -407,7 +407,7 @@ def test_annotate_default_arrow():
@ -55,7 +55,7 @@ index de146a527..8574a95d2 100644
def test_polar_annotations():
# you can specify the xypoint and the xytext in different
# positions and coordinate systems, and optionally turn on a
@@ -3653,7 +3653,7 @@ def test_vertex_markers():
@@ -3673,7 +3673,7 @@ def test_vertex_markers():
@image_comparison(['vline_hline_zorder', 'errorbar_zorder'],
@ -65,12 +65,12 @@ index de146a527..8574a95d2 100644
x = list(range(10))
diff --git a/lib/matplotlib/tests/test_backends_interactive.py b/lib/matplotlib/tests/test_backends_interactive.py
index ad23abe3f..7b9660f2b 100644
index 7465bb919..8300ab627 100644
--- a/lib/matplotlib/tests/test_backends_interactive.py
+++ b/lib/matplotlib/tests/test_backends_interactive.py
@@ -104,7 +104,7 @@ fig.canvas.mpl_connect("draw_event", lambda event: timer.start())
plt.show()
@@ -126,7 +126,7 @@ if not backend.startswith('qt5') and sys.platform == 'darwin':
# not resize incorrectly.
assert_equal(result.getvalue(), result_after.getvalue())
"""
-_test_timeout = 10 # Empirically, 1s is not enough on Travis.
+_test_timeout = 30 # Empirically, 1s is not enough on Travis.
@ -78,7 +78,7 @@ index ad23abe3f..7b9660f2b 100644
@pytest.mark.parametrize("backend", _get_testable_interactive_backends())
diff --git a/lib/matplotlib/tests/test_collections.py b/lib/matplotlib/tests/test_collections.py
index 0983283ec..1b079aff1 100644
index 3f5b3bf1a..8c5549bad 100644
--- a/lib/matplotlib/tests/test_collections.py
+++ b/lib/matplotlib/tests/test_collections.py
@@ -439,7 +439,7 @@ def test_barb_limits():
@ -136,7 +136,7 @@ index ee67b4e41..c52a5b0f8 100644
fig, ax = plt.subplots()
ax.set_prop_cycle(cycler('ls', ['-', '--', ':']))
diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py
index a9e8dfade..322acd41e 100644
index b5ca0ed5b..284cccb15 100644
--- a/lib/matplotlib/tests/test_figure.py
+++ b/lib/matplotlib/tests/test_figure.py
@@ -14,7 +14,7 @@ import pytest
@ -263,5 +263,5 @@ index 611908063..be11d7c6b 100644
# Remove this line when this test image is regenerated.
plt.rcParams['text.kerning_factor'] = 6
--
2.21.1
2.25.4

View File

@ -37,14 +37,14 @@
#global rctag rc2
# Updated test images for new FreeType.
%global mpl_images_version 3.2.0
%global mpl_images_version 3.2.2
# The version of FreeType in this Fedora branch.
%global ftver 2.10.1
Name: python-matplotlib
Version: 3.2.1
Release: 2%{?rctag:.%{rctag}}%{?dist}
Version: 3.2.2
Release: 1%{?rctag:.%{rctag}}%{?dist}
Summary: Python 2D plotting library
# qt4_editor backend is MIT
License: Python and MIT
@ -448,6 +448,9 @@ PYTHONDONTWRITEBYTECODE=1 \
%changelog
* Sat Jun 20 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 3.2.2-1
- Update to latest version
* Mon Jun 01 2020 Miro Hrončok <mhroncok@redhat.com> - 3.2.1-2
- Only recommend texlive-dvipng (but require it if texlive is installed) (#1509657)

View File

@ -1,2 +1,2 @@
SHA512 (matplotlib-3.2.1.tar.gz) = 2725ebb2e3665f3f110354efab6a6ec20721667acbaf1dc22a9396dbdca096edaabe79b0e602970b1c0769a5eb849cd815774af00a366f3d4e2f336bce06208e
SHA512 (matplotlib-3.2.0-with-freetype-2.10.1.tar.gz) = 5fefa148dae612b431bbf1430f93df20f3cfc06f01db072148893bf067f1fab5c9944575a3d1a587fe7d44b17fb755f4532bf61dfdb7fc64b2fd7821f9fa12ac
SHA512 (matplotlib-3.2.2.tar.gz) = 4c9312e929357a7c73ead51fa1a679c04b2b9735edfe0f1a2d08a07ec4d94d67df4ff6e8c6d594665a3b270cd3033c48ea8f2aa50fb1e2746812f24c27181f59
SHA512 (matplotlib-3.2.2-with-freetype-2.10.1.tar.gz) = 498fb1224f74c5254e3a2620d4d36571ed712a7ac261bcb4b2a548ea57d6b7431634dfad547b529d6fa1a3fab90e6b489150afe815485a3030d1e899edfd9be8