From 97eceb118ed35175167af15fbc2577d360f5351f Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 29 Jan 2019 11:53:57 +0100 Subject: [PATCH 1/5] Move major/minor tick overstrike logic to Axis. The Axis knows what the major and the minor ticker are so it makes sense to let it handle the deduplication logic. Revert some heuristic deduplication logic from the Locators themselves (which effectively tests that the new code works). --- doc/api/next_api_changes/2018-01-30-AL.rst | 10 ++++++ lib/matplotlib/axis.py | 37 ++++++++++++++-------- lib/matplotlib/ticker.py | 14 ++------ 3 files changed, 36 insertions(+), 25 deletions(-) create mode 100644 doc/api/next_api_changes/2018-01-30-AL.rst diff --git a/doc/api/next_api_changes/2018-01-30-AL.rst b/doc/api/next_api_changes/2018-01-30-AL.rst new file mode 100644 index 000000000000..512cdbfbc764 --- /dev/null +++ b/doc/api/next_api_changes/2018-01-30-AL.rst @@ -0,0 +1,10 @@ +Minor Locator no longer try to avoid overstriking major Locators +```````````````````````````````````````````````````````````````` + +Previously, certain locator classes (`LogLocator`, `AutoMinorLocator`) +contained custom logic to avoid emitting tick locations that collided with +major ticks when they were used as minor locators. + +This logic has now moved to the Axis class; thus, for example, +``xaxis.minor.locator()`` now includes positions that collide with +``xaxis.major.locator()``, but ``xaxis.get_minorticklocs()`` does not. diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index e8c60ee99573..66a5a53ffad1 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -1015,15 +1015,13 @@ def iter_ticks(self): """ Iterate through all of the major and minor ticks. """ - major_locs = self.major.locator() - major_ticks = self.get_major_ticks(len(major_locs)) + major_locs = self.get_majorticklocs() major_labels = self.major.formatter.format_ticks(major_locs) - - minor_locs = self.minor.locator() - minor_ticks = self.get_minor_ticks(len(minor_locs)) - minor_labels = self.minor.formatter.format_ticks(minor_locs) - + major_ticks = self.get_major_ticks(len(major_locs)) yield from zip(major_ticks, major_locs, major_labels) + minor_locs = self.get_minorticklocs() + minor_labels = self.minor.formatter.format_ticks(minor_locs) + minor_ticks = self.get_minor_ticks(len(minor_locs)) yield from zip(minor_ticks, minor_locs, minor_labels) def get_ticklabel_extents(self, renderer): @@ -1304,18 +1302,29 @@ def get_ticklines(self, minor=False): return self.get_majorticklines() def get_majorticklocs(self): - "Get the major tick locations in data coordinates as a numpy array" + """Get the array of major tick locations in data coordinates.""" return self.major.locator() def get_minorticklocs(self): - "Get the minor tick locations in data coordinates as a numpy array" - return self.minor.locator() + """Get the array of minor tick locations in data coordinates.""" + # Remove minor ticks duplicating major ticks. + major_locs = self.major.locator() + minor_locs = self.minor.locator() + transform = self._scale.get_transform() + tr_minor_locs = transform.transform(minor_locs) + tr_major_locs = transform.transform(major_locs) + lo, hi = sorted(transform.transform(self.get_view_interval())) + # Use the transformed view limits as scale. 1e-5 is the default rtol + # for np.isclose. + tol = (hi - lo) * 1e-5 + minor_locs = [ + loc for loc, tr_loc in zip(minor_locs, tr_minor_locs) + if not np.isclose(tr_loc, tr_major_locs, atol=tol, rtol=0).any()] + return minor_locs def get_ticklocs(self, minor=False): - "Get the tick locations in data coordinates as a numpy array" - if minor: - return self.minor.locator() - return self.major.locator() + """Get the array of tick locations in data coordinates.""" + return self.get_minorticklocs() if minor else self.get_majorticklocs() def get_ticks_direction(self, minor=False): """ diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 290ce7a5f65c..90030a3415a7 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -2257,13 +2257,9 @@ def tick_values(self, vmin, vmax): # If we're a minor locator *that expects at least two ticks per # decade* and the major locator stride is 1 and there's no more # than one minor tick, switch to AutoLocator. - ticklocs = AutoLocator().tick_values(vmin, vmax) - # Don't overstrike the major labels. Assumes major locs are - # at b = self._base - ticklocs = ticklocs[ - ~is_close_to_int(np.log(ticklocs) / np.log(b))] - return ticklocs - return self.raise_if_exceeds(ticklocs) + return AutoLocator().tick_values(vmin, vmax) + else: + return self.raise_if_exceeds(ticklocs) def view_limits(self, vmin, vmax): 'Try to choose the view limits intelligently' @@ -2644,10 +2640,6 @@ def __call__(self): tmin = ((vmin - t0) // minorstep + 1) * minorstep tmax = ((vmax - t0) // minorstep + 1) * minorstep locs = np.arange(tmin, tmax, minorstep) + t0 - mod = np.abs((locs - t0) % majorstep) - cond1 = mod > minorstep / 10.0 - cond2 = ~np.isclose(mod, majorstep, atol=0) - locs = locs[cond1 & cond2] return self.raise_if_exceeds(locs) From 07ac300e1c3843e3df018ee1714d2318b7654567 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 29 Jan 2019 15:55:25 +0100 Subject: [PATCH 2/5] Update test_log_scales to use check_figures_equal. Its original intent was to check that ax{v,h}line works in (sym)log scales, and the baseline svg changed with the removal of minor tick overstriking. --- .../baseline_images/test_scale/log_scales.pdf | Bin 1551 -> 0 bytes .../baseline_images/test_scale/log_scales.png | Bin 4020 -> 0 bytes .../baseline_images/test_scale/log_scales.svg | 278 ------------------ lib/matplotlib/tests/test_scale.py | 19 +- 4 files changed, 12 insertions(+), 285 deletions(-) delete mode 100644 lib/matplotlib/tests/baseline_images/test_scale/log_scales.pdf delete mode 100644 lib/matplotlib/tests/baseline_images/test_scale/log_scales.png delete mode 100644 lib/matplotlib/tests/baseline_images/test_scale/log_scales.svg diff --git a/lib/matplotlib/tests/baseline_images/test_scale/log_scales.pdf b/lib/matplotlib/tests/baseline_images/test_scale/log_scales.pdf deleted file mode 100644 index 182416404c08cd80e6b428ef16aae31ace340b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1551 zcmZWpdrVVT7$>fa@j8*A$>J8bv$#fdqxVs69}L+>O9{dXX$iwe<1V+SP$>77+fyk- zlMR^>X z-}xTD-={6N+Ok<)4y8SL1DrTVv48<`bsd$L2k44sKLoTzK!Q)M0d%=g0|S7=1`d#) zPeI8|3{5i}s>-VCpooA`wZRSuK}7;QIZ|}FB8yIlz&aetYQy1S2m!jd0f#M!zb)~1 zF>nF8FocSnNI($e!~!^L1-DnK0ftz3n=B!qSHGvzVHpf03Mf+KpdXM@EKWdM;YP0r z9Yy#ue5z0cDc~0rD2dI9Qe*b{`J`6-1I3D^==Y)9D-_5foH_~58x0^w&ygG*FdzpN z5%-1k!I20=T7@sg3F0ULU{?Q4CrQqU9Bp17ZW5qvK3u64in1GfmO`lp)dH4GLv3~d zDNtyjLXji;O6+~i3tK15h4zf6FAjCXEq&=#{yDD}e547V&6mQ%XY8J|Lu=f1|4t0$ zO0AQ>?!Fj(*s(Tgy)8SynWS8!#=o&6?DcxP87FTaix~XyL)e?U2QY8KN?cdxP>A5rD+5hF9 zv?~$AhCe(0YAU!i5T0vo&Ftjt%XVI0^y!rKkGA=Z8FG8;$6Tc+?f7$dZ(V$St*~r7 zy8r0CFPxeORX=u~_&yG8T)AtG1N^Pj6~64qwYN?Xq9( zczmwsy?g7*F5fgBG;DGafyBoamx?-0GWQ(Ll#mbMZ=4F#{2+W!0f~xIKq7?{kjO6u zB)W}*n3zFKZWhobUUvYKS{03h@Hr;=n9`^7VP`pGCL*saS&1^UthpS+>KUFhu{_Um zd^VG_oMD!)Q049pikRA24FdA}WaRT!1Han?ss*tgcLbYQNGN%>1*_w9>|3A~A%8AS zPrK>@9-RcyiW#dXq(BeF09H>i&mLglc|8w2;2Fl^9+3w~35;bJEUeiWV=|}MF=iIG zGRe-Y$4XDec&zAT%!F4(62=(t5R)*y5mO)uz>% diff --git a/lib/matplotlib/tests/baseline_images/test_scale/log_scales.png b/lib/matplotlib/tests/baseline_images/test_scale/log_scales.png deleted file mode 100644 index 404023bce90403a61cd48812340100d3942159c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4020 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzEX7WqAsj$Z!;#Vf4nJ@F#*W;|lxbnLtLEr;B4q#hkadH|8pPGPPa2)jVh83m=A}r)Fn)6OuC4OiEDk zNoweG^t>>2HN&xms=?_x74Ocy;f!yzeee2#*;U{V*HL>rAOKqI@W6gEJJ6#2{ESQt z3@I!e3=9(l6@cPy4M0)JQ9*10BA3R`&~X0K=Kn75a^m&{Aw)IZHI5c8nVPH7HA;7?(pzOfF(9pxcNKL`d2GtAO!9h`_>F<#N6zxgnKFFs8`r%Cy8N3=0{gaHX`strf3>PUbyrw{;mx_9HFBpn zotek@=EPg4$3;7P9)Gl`J{S9$g`1XPN>n`AoRMQ-nE$rKs`v0igKMR-uXmlB$Nc8N zw%p{~+Y0x_rTg!!W@2f$YdQaXa^$p|#tpJNV>4p(rWe}CrJvuKJud;63I=UHhUBC& ztGUM>7D&9_)mIvu4$MXgx3_J~y}cuD{pRI&Y#Esjyqk0W`9_`7ZzK=&-O)4An||6t zu7C6MJEr~{sGrPK)Ur@zsCg@J*Bb7cdgs} zoWXiS?(G}fa%0wCzZv{)9p!>_`TY3}>mRP?toy}5#a7LKyJMFxzY+a2`TF(!j}KQC z`sdA${s%76Y;1cs>TC}Guz8O7pSVAqvIAbrkYA*YCYRBc^1!t12BIz^r-uY-gX+A0 z|310LFfKk`UH@VFoxYQW!1Ca}{&ra7{@%TN$0U+%?CsCX9?~z2xwClt_U#{^&#yl> zuWmdKI;Vst0FNJD?EnA( diff --git a/lib/matplotlib/tests/baseline_images/test_scale/log_scales.svg b/lib/matplotlib/tests/baseline_images/test_scale/log_scales.svg deleted file mode 100644 index 52dd71dc5d8b..000000000000 --- a/lib/matplotlib/tests/baseline_images/test_scale/log_scales.svg +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/test_scale.py b/lib/matplotlib/tests/test_scale.py index 26822a7adc69..75a61c310c1d 100644 --- a/lib/matplotlib/tests/test_scale.py +++ b/lib/matplotlib/tests/test_scale.py @@ -1,4 +1,4 @@ -from matplotlib.testing.decorators import image_comparison +from matplotlib.testing.decorators import check_figures_equal, image_comparison import matplotlib.pyplot as plt from matplotlib.scale import Log10Transform, InvertedLog10Transform @@ -8,12 +8,17 @@ import pytest -@image_comparison(baseline_images=['log_scales'], remove_text=True) -def test_log_scales(): - ax = plt.figure().add_subplot(122, yscale='log', xscale='symlog') - - ax.axvline(24.1) - ax.axhline(24.1) +@check_figures_equal() +def test_log_scales(fig_test, fig_ref): + ax_test = fig_test.add_subplot(122, yscale='log', xscale='symlog') + ax_test.axvline(24.1) + ax_test.axhline(24.1) + xlim = ax_test.get_xlim() + ylim = ax_test.get_ylim() + ax_ref = fig_ref.add_subplot(122, yscale='log', xscale='symlog') + ax_ref.set(xlim=xlim, ylim=ylim) + ax_ref.plot([24.1, 24.1], ylim, 'b') + ax_ref.plot(xlim, [24.1, 24.1], 'b') @image_comparison(baseline_images=['logit_scales'], remove_text=True, From 7c201fd7cb6dbe9ba18387e4d3b7bef61e99df32 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 29 Jan 2019 23:18:54 +0100 Subject: [PATCH 3/5] Update test_outward_ticks to check for axes positions after tightlayout. --- .../test_tightlayout/outward_ticks.pdf | Bin 6530 -> 0 bytes .../test_tightlayout/outward_ticks.png | Bin 25672 -> 0 bytes .../test_tightlayout/outward_ticks.svg | 1345 ----------------- lib/matplotlib/tests/test_tightlayout.py | 13 +- 4 files changed, 9 insertions(+), 1349 deletions(-) delete mode 100644 lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.pdf delete mode 100644 lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.png delete mode 100644 lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.svg diff --git a/lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.pdf b/lib/matplotlib/tests/baseline_images/test_tightlayout/outward_ticks.pdf deleted file mode 100644 index 664c30a7b78e9429b4aaf931e28f61f81299ffea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6530 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
    96h~hFMJ2Ulzz9#qBA1i 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/test_tightlayout.py b/lib/matplotlib/tests/test_tightlayout.py index 5898c1a94aeb..bae8951f8cd3 100644 --- a/lib/matplotlib/tests/test_tightlayout.py +++ b/lib/matplotlib/tests/test_tightlayout.py @@ -1,6 +1,7 @@ import warnings import numpy as np +from numpy.testing import assert_array_equal from matplotlib.testing.decorators import image_comparison import matplotlib.pyplot as plt @@ -161,8 +162,6 @@ def test_tight_layout9(): plt.tight_layout() -# The following test is misleading when the text is removed. -@image_comparison(baseline_images=['outward_ticks'], remove_text=False) def test_outward_ticks(): 'Test automatic use of tight_layout' fig = plt.figure() @@ -173,8 +172,6 @@ def test_outward_ticks(): tickdir='out', length=32, width=3, tick1On=True, which='minor') ax.yaxis.set_tick_params( tickdir='out', length=32, width=3, tick1On=True, which='minor') - # The following minor ticks are not labelled, and they - # are drawn over the major ticks and labels--ugly! ax.xaxis.set_ticks([0], minor=True) ax.yaxis.set_ticks([0], minor=True) ax = fig.add_subplot(222) @@ -187,6 +184,14 @@ def test_outward_ticks(): ax.xaxis.set_tick_params(tickdir='out', length=32, width=3) ax.yaxis.set_tick_params(tickdir='out', length=32, width=3) plt.tight_layout() + assert_array_equal( + np.round([ax.get_position().get_points() for ax in fig.axes], 3), + # These values were obtained after visual checking that they correspond + # to a tight layouting that did take the ticks into account. + [[[0.091, 0.590], [0.437, 0.903]], + [[0.581, 0.590], [0.927, 0.903]], + [[0.091, 0.140], [0.437, 0.454]], + [[0.581, 0.140], [0.927, 0.454]]]) def add_offsetboxes(ax, size=10, margin=.1, color='black'): From dbc693aa3ee03b62df64a5fb6b0de2408f7d769d Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 29 Jan 2019 23:47:25 +0100 Subject: [PATCH 4/5] Remove png/svg versions of test_symlog{,2}. --- .../baseline_images/test_axes/symlog.png | Bin 18102 -> 0 bytes .../baseline_images/test_axes/symlog.svg | 679 ------ .../baseline_images/test_axes/symlog2.png | Bin 26901 -> 0 bytes .../baseline_images/test_axes/symlog2.svg | 2143 ----------------- lib/matplotlib/tests/test_axes.py | 7 +- 5 files changed, 5 insertions(+), 2824 deletions(-) delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/symlog.png delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/symlog.svg delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/symlog2.png delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/symlog2.svg diff --git a/lib/matplotlib/tests/baseline_images/test_axes/symlog.png b/lib/matplotlib/tests/baseline_images/test_axes/symlog.png deleted file mode 100644 index 4c20548006d39174b7fda063e4231b84f2fe0009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18102 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 E1=w+qx&QzG diff --git a/lib/matplotlib/tests/baseline_images/test_axes/symlog.svg b/lib/matplotlib/tests/baseline_images/test_axes/symlog.svg deleted file mode 100644 index 170ec4464325..000000000000 --- a/lib/matplotlib/tests/baseline_images/test_axes/symlog.svg +++ /dev/null @@ -1,679 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/baseline_images/test_axes/symlog2.png b/lib/matplotlib/tests/baseline_images/test_axes/symlog2.png deleted file mode 100644 index 44e5cfa3025e1a775f6edb6e725a10af2fe114c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26901 zcmeFZbySpn+b)a=iiCkkBdJo-(jk%p7E%s1(lAI35<`fHN=bJpB_Iq)w*n4IGl0a< zNDMGEL&N?Jdi!`k_p|qU-|u_BwZ1>LYq64`0m(?mo>WGc!E z_lSs&F%uCT)gd_v{t^d&_5^$!ca&FoKmz`GkUV|~en0g@S=W(>h{Blg|HylpOiLmn zW+D{@xd%@Z=7(H89`x)TEW7kYKt$wpZ!1t<5axJx@@(;G3#+^bId@-0dTXg!2&;C? zY9GZi%P6&wsXG5418Cv)jF@28}?csRm`?PS<4$q1iSrMrEM|fCP}!8{L%VB zcXNaG#tCVTM;!Ij367~7iSF&?DyU1W;G&3L`tZW22|qB~Q_2!P8_pa#4nAaC{_n5< z|6PsSqNSv=g%uUzk|8g4c< zH%EqtPrzxwCVfGs%~6)$Kj^}u$JCBfQmANXL_MaMS)ORD)IURMo}nI}5y_=p0a28H zw>WfjX?l8k`6Dt)!wQ$hw)RN18TXBjjZZc8 zxE1$cl^LRQbxULQL%f%bJ2w{IE*^P$_Q-Kr`S(bqOXc(Dw?-=cYlug09j7EZ_4e)C z&$x5vE+Q5gw;2tL12I&e)JT}Y?&Dtqe(ye3VpkIitA)f}mm4VS#956}-IgbQL&;mU zBwwngtg}|_KI2}NUh=SF2Zr?_PP?OAu_XUW;%Mh{qN7Aa-qmJ-MQ+6p9&t6phcyZ%OlQC3vc3^#g-!5S@MIM8V))p$!@9*C8ta19r zj(+Q30b$q;6k}$Lh>gA4XkS+n7<=H#V3!*75H6{$wCaK7 zI#Rg9)+tV9(GhM_b2V1QGRWm~CkXM7nOs;z^>fNvX>EVUGK%hA2qPY!y|WPh@nf1V zxkIHY8_Q7=5Hu5XYKMoV*INYf#d#XDy_(x&6zPWh_rxd8?3jO22L?|>lsr(P?lwt9 zcO%JFF+2NX=|cwh4{Ke?s^&?Sc7?OULpW6*vqSUN)2BUGAV=_(5E)FV8ec6p55x*- zcIFbZdMwKxz7%cjuRab5PjE)#?KSLgU)V3S3|~X5p#%5^aFN<+ zi#6eH_y`TjyA=!KbT@(}g1P9H_z3sxO-f6b?lKbj5LsdjUAMAqrQLD4`9e9I6T?Lx z&Z!p8(NFck`>8C^5fFJA!KNF-h2ahHCB25FrT5v{Rg@Um)f2Bl+;hq3Q z>o+wujT3Xs_{$6sHnv08YzHlp1#0Y5AL!H3h_GE{|1vD^Tu%mHK&7d02L&|96CHU& zdDMr9(}efXi56pDoW$lJ<9r)lkTL9RS1z*1W; z)>l+~(bUvbH>`d4Zs+W|09RMnYgezH!cd<%2|QwUb{2TV#f#bR-(RsYw6)EpZ@jCn zuHLslK5jyF;lgtqsh_+9y%O*;=uY)dRpZU- z20@1Fp>kv-+P3tBQ|GPn?HN{Vh*weR!$i-DwZdffg{PYZ3_h|()8#sL z%(N^vlfVWIw67%5`R$hX^z`B|lSD+LH0$dOwdV@v=J2@ChHXLn~SVHkX|XQa4OKg3@1CCs-$+FvxMoo+lJXQ z(NPY9{mc}B=QM|u@X~r`$pTl~+xGK+;Y%JCEctOS=iJ^7hVtkqLqbN7hr#j~-DWPA zHY+QGa4L@8K=s|}=+8M9FVeqgo28BXnnUi-IDofR_dVI4b4l_6g)%+CsC_u)2`-el zy}gw3A+Gnkvx_eA@ts#=i~tINH$wCuy@sjgw`B~KCUoCGn#8%9fTmnY6aKRkj-ozf$tk z`GUqlkfw2Yi*$7H$()_BIp=I!!)Gv}l2^_!RO}EQ0SFNbzNpH;2}W<~vxI1CQ0-O@ zkslOP9H=TU?&!!Fy3_ex@)fXvGi3hs=zU*o4CmQk!qx@6FNjUe%$n>I@_ATUZvwA2 zUd(y_{>{XVvm?pT(V1akVfhGPX~7fk^YVCYyo`4&U?rdy_qVPj~lo93L<5 zLpeFQzM4B%*c$C0=<3px$WW485fv4ES290u15%KMKgB?SX~0^)IT~Z9HaU4&Jz-{M zz?w_z0UOVwD-gFVA$t?q`WKT{b;ozQXZJQrwVA@g3nQZ*W>|Kmk@CLrTqebqV6Lr= z`UXqyb{JS*64hvG3L}@`)+{uOoLO#6H&2cnetOewHY-IykO8rxlDNO&^)sMqh_8H= z4`PI*86N2A<;%tiDv9I!^oAS)Qh6a(LQWQrn=eb350hnCSFkK|{^}!ccJ^CYSy@f( z?ID}=P8wnSxl)Z6U?eAfRW&uWwX`D9X!Ia2u`GRG&5(idOiLk~h>eANQo|AA`Tf%h z%?QMfn|so6BBztn*6tzt`QTYRdvyeBF2TR;!$6U-Z=!x@Tn(cBX8oJX z_-qCDx8vT&@HR=$M|OtWXWWSl6bP|WF^F~&ekyEU^3|R9juh$Eah#nUlv}PlxZXpb zcz+jX7_m;7g-7m+Wn9RVZB*D=3iQS zeEyS97}M0H#ef>6#*Pi5s+UAZna6BLcoFMb(@0gDVfrmyVD%svuqvr$Wr35-^oF>e zBl2zlIf4>6h9jf6o7Ow*dJaG|roINBgO(KejGxpN4LPXWM1@L9R~5~4Ei zu+Ggd{3%KxvQEdSKr}!_~9jjSeBF;y#f2Ha`hJy>WhpKch?%P zTm%=DF|8tW!tX3=T51UFfabirpyqgz`$GRJ3X1IbUG6GhNA*psI8D8Eq7xl(J(nw0 zQslDuHRZb5?Hz6QlV@J;NuG*gb*4Bhd=LGK$=WSR!94nzt!GIU>g1`YsQhp_xw(;`PRz%~e18%9^{2~*-hCzUq@D>BOnY@c{U$}E+Zu`G)NNF1G5opw+cFEK^D@P(7fyej1d&GCyNcy%&z;_)&@WFZb@Slj+ONDC~ZR(P>SUm@KmpbJ<#g8z?=5=X8M}bRi4}}=O4;2`=dmk7H=40+(GT{ zBnwS_0I{uC?0N{XJ%DvEW1pW-+ggo3)+k4ORs__7dN+xV=oQ$;SHD}{T}8_rSlT6S zPti$~n$#V)oPB^Duucy=Q~872_!tpU3Y3J|+h+7Bu6XLxUEQm;!#2tG{HCuT+%c*L z1<<{b8klx~)Lm`u%+J2WmA|pu5(~#$*2^@kdpjd&T&bFQf-zH|sOv|k)mFR}DoAty z^FhQm3>2c<$b&EqiJ+x1bH}L``#&(+qa$*4efe_RjWVEq&Uz=mJ#tV?(HSqUrB|dZ zK6ydHKb1~~%HFa7B7TN9ZyPj#j1eQofOL|e6+TcnM!yMch7(w6t!Do|lv9YlZ z^qe-$U%%eb)z$6WxpwW^j~f~d8`G1Mw+1)p{@+xhutJ6r1gF$y3Swn5h98Yiccm51 zRsc|7i^0zi?K0w8%fPecENMaf3)clJ*!^$t8g!8N=)>!m9=N$x0Kj(63WqNp4)ffQ zu%8r8n{Y^*~~dJ&VcCja(>Kx^^{G1Xk4iV;`#-HlaLJSqWhn@88{8 z{mly;)-e3bOjBZB4@Sh$%_CGBtlAphK=Ny}dJuPR^!)FylogIsGM}EEn;YUiA|3j& z@wDy90aU>=1yESMOF5*p{;}~zK7)Dqsijv6k`FBeJ4AvbgRN~M7OL*M?bw!beI5p| z_wJK1Kk5p|Q4f~0Ayflrih`i&P%G>7F3sqb)pW1jdYn~$sm=*faPLWv1B+~80gcs- zOkUflRm)7Af@}5ZKRN==o|o75w@bC%nHR(kI;JP@Dmc))&ryxBN>j>uU-`*oed0W~ ztn;>27IWhv3m`ZEjU(h)wKg7ro(NG3kz`?b;*E*CtVhBud*S*kN`}b4ZuA_im6nj8 z%w@vcWDK+OqC9t@r8)9Np!m2ldbMQc{a-gpH3#UMXGgCJYw6V*Y){Li6EnU!dFDx_ zz&z=pah1J$D+k;h6&&fgqmM<=5z1-}>3&>OKH-sG5fr>1Jn`I?hKA-E7Z<6!;jLSK z^o_4J_p7QTBO@XJ@;>Pcf~Ltw{r_jc;je&4p7``#YEh9m0V~+X5ePLr&aYyQcd>|- zl4M?zT1`deu9a2x%IYesG;w11<3N5G^%1V$mBFL1_1LhmbFGOIy*Por>h zlZh&~OR_S!Bsld#&_BMxw0rCc5E+m(cPY=D{KI;plp9smgPew4@3~d1EjPlQbD|CL z+MBXYPfj%4RPF{0)bK7y;^=hr$|U;bS#%itJ&oY**36LlDG%F4`x6At{_Y0gYx>RA z&T}ZY%h=f!yDdst;%yFIP$&=|a{6~W`>sf>N38iWDbvu1JRy*WpNY}CTWHUna>(T> z@7+@%jaIL$_lj5yx+BTx&U31I?H39;W_0@*x}=^UKgE1nPajTcq0Yj{RYYSEKN1q@ zGF+g^1H408`N_BfDBf^CRvgEy9S0@TS0#2z9iuO7vT^q1Q z=NqG+oj^}Us}VE&fIBZ8J4!-%;xKL>-&FW@3d7(?Ko2k-a1PmOqrS;{oZb?WK;AVPS)L=R6y`nVC-m259hK-aO?8ot#7B?tk-IId3_02as!N zwY#^P+Dgth_2xywD%InJUM=~|0GNK4lH~ZGJE96q0uka{i7u*{$-HEYHb_|2@(ZVa zQ*`Y3; zJIWo>K3&A|Gmz%yLQOFuSrr4ke(qiBXxC{Ke+Dz8QG#3cn&E+|U5@zr147?GbfidI zs;N1>PTq1rsE)WQfD6RE%}JG#Cx$<*5u?JX-b-hvyjX3nouOBVf`K2BMR@zQvV$e> zInZC_X@&VS@jByXVYp98Cg&>ruVHFe4x#V*nA6|4e#8Gtlj;%Rei_`8JDt# z*zCJ~rQDcRV*ABq6A|G%N=HQb-gkF!Usu1Cl|O z8!#~-u@^Y!R0}L8AN1h@`1B683)|=KH^j5CtJJ?xVO1Ki1(b)|*UKUn^ltA#>%$#) zwCWkrQ3W|u)AWqnvEy)>C7;7cJ!lfR)+!2jz`r0PT%kTjTie`FpY}$_FpIEF%uuix zswSAWhyDh+w9ag2s-v*O2j;VcSYI|7rN7BUBF;uw=fGeA#qE7}_hxh+W~x<0S;%(8 zlWu>y1n;$z+ue6*Ytd=W%+7`OM*f!b;EkR26gd$KA-|xvH*vQ26UirD0N2G!tinQ@E|?lAfjdRTJ-v%HGGSr!wzv1Th3(Y67^NjW3`c529?jDVog|Og zUMonRIPq$8^#~!u&Gh6%W7t1&j&JGkqxMV0R@jQ7MeG*(zFEzUEH>t9cS|>OS!=y6)%JPpEY$V2>pKm#@DR~yZzp~;G z9vMlsEVeq;Do7!{Y1CkDZfY94KG*AyGc2+Q)va){?5hEMWbB6z-1i|6hLVGY%0&^< zi`*obQrA^8u(RpITs^81udS6yGyHu2+2Ta6{jDNa@&RB1{P7|*t7~0aQ{DFqTMFCr zL?a_n5z%z_ADXq4PxA^)C)ajME_w5B3_@G%JfSUhese8-1-escwVYNhZJO1>WE#-d z;%{VdDW#Es`-n}`L))Y=F@*M^lw7hS#^+db>;8^;>`ik1sg9dLG=iuS*H7NA zW(_ZiTLCNPIB1We_o@OH3NbxN-Xajri4@IDG;3MIq7qy)_@O9n0VVo^?gYnR{^>;X zmJ`&M1RbZu1x*y9wmL(yThpUy9k(V?E%D|p-B~X2YilQ_;;aL8%Q|8V_t7!d$RQh4 zaI1jhbe@3dh)oMR9X05d!!IV*+?u9R*ebPg$#DdM8uY5=XJ<#T6p51D`M@t|-X_=!*+|i?9*EI4 z;LpfzijhqLPeV0otGD)hyvvC2lrKf#)+Q91SLF~|zQ3J56~Gs$TRR*RL>J^bo#@OV zDA-)JtXSM%(G&CH2!vI zWsQ>2X2S5qi4zs;-}Q%hQ`Iqmcy8L=p8MJxwIgB|JQ&CE3^vSdi}}9nRjEW_S-Uqd z0+RB9XjQ=gtg1lv)~(WoT}PJPhy8OhOgr){B{c3YpkKUxaU%+!-``C&Sy{Bfe6M=+ zSgAxkKJM5p{R(*G_C~3Gm(+K}cHg&n5XGw9OKa9=d$#wJr0RWdu_PF|pk_K#i$*+Q z+Gq6(wzrnT6l?_XXBtnRJF6`#`CK6}hL+A&XLCHDq%_0d(6+B*+k9t~bRUP$difA|{!PnGOzN;b-l9-Y65>chl=N?TLfa&Ns$lhw|0cBFR8SR0&PiNVy6 zLh=r+IF_k$jav0&X2!+*C01m`wDi_mcL6a>cGQ*Fidat8B)Ft0SK~>&Je-Aw;Y1j^kgApg4v}uwMWm+rWx+a zyY0K~Buytrd+u3(v&XA%Ub%Md^}as~FZ+0be7sMI{b3&aFX9X(pcF9PAtfbc-Jj6b z*XIJ=i2L`?m(-S(=>R7&-jRR%2JoVw$I-Vh%bYSeIQVklV`1S&HiMRy+}YgpZ&?9!2YwQ3usrnT(4H5}I5lG5ikD}h- zJ6A4%p5ZuDvT86`VRvikzQj?VPi>9`5fK;CGcvBp$jFR4c8LAL{(zxHcXfe6EWM~m zsI+#@h=Nqf(rS*pEPZzQOX%$C%J$4Im7Ih2J7eV z6O0M8*C8(b`X2zWrBe_PNK0cY%>gW|?1!_m`I;VE=}s71^r9yxXiK*y@$l#{Gr(go zksvmFQok*)^uTuT3dE~AB8&yJbnh7?6~S}KSeC)POOH`msQs)ZfBDhf_w>6%V@YtPmBo>%Gz!OWc z1@fQ&&;$RA@8=s&LK|Jb0@(kgGCdug_wU}l%SRL!7lUrMu&}W4PC!6_)}1>k8za&5 zN^#PV*Ny2i z+Iax+nOky@sxn)z5N=xxF3Po=Cq9E`LeyEG#a>s1kL#{1O`Nmu(Rv;dY*qf8sUzw) zXTrv!!FP7*HCI|s4gj)4c@2hodAj6(cbaF{RaEY6EWotKWNyAVWB(6x2PYyZ_`I)d zu61etK{NbCQh6Wvq@@1le%`#)dC_|l&{^y%Jv}|V+RxesiY&uH7{Qo+BL2PAZYEYT z7h6S^82yt0nd?+y()!=gacOyZ8k3Wgsu~&(+X3azOAM}vr@Ob;8aGfJ#}9pRl7ev_ zE>;6_BKU$*5GY;_KYvk<{}bHeza8rTE2{Agn|i#6I+u2yQ{|bL1xtdcw%SV)i$>g4 zsTCD^Vq#(v?SPa8er8#Lv)bKUCbW^tX_djV8=@f%G2-40C|Kn~wMkqeT^xgNNdY9B z!T_lRyff&d>TFU&rws!WU9Mkz$$6YIg#kgJtN+s%{!E@_7i`o@pqsjqDX*#QvXJFIgb)+ZbNI1XMz2 z!~0H?l4?D8aG?ZQQt}Y=HZw9fY`pC43r?RtU5EFRzbqD<3OJsdTI6NsJJuU5uu&~zF*4Ei%-!_$hi}cygtGZ`z z{Z_}x2KpuQ!@+I4DpiGi$xI$7XG~8=TV|?k3~>h0Ou)5rCw{Vm7E0GIIsMIK8s>Ct zhPiokS%Mg>qk9lP&RR~YE)poh!}1xFU+3hYsUXQa?X9D?*U^#Ms-lC;>x+wU)5^xJ zf#HeM1UAj2?h@9{E1W|kg120u>Fb;9oOFHIvJ#*x4>_8AO&Zq7Xf@6RqvVOs%F?wu zQUamu&o~QrekpuN$Kg*w(=wBzGH!>q-KghHuXIR9eB4su1bw4HAdng89B_E{g!s1! zjFlGjRcN_w8e`w5rnTI*#E1~83Tnd$4H<~4szarG*(+d`&_lY>o8b~E@Bo5ek=F)( zK?T93l~i9x#B;H8svYcRuB|kqW6jS=8aX>w5`AjU&`e(Vn^!EY=v;yxLm@U)ymnJT zjX(KA8MNz^=*Iv-d8qLt6368r(;6AWLEj78DvHwz`4WJO3^_*OR4M+H=8%qL_~@KN zsO@}wy!LVuF`<#{JdkUknaLS@tg_x1xX*_VEq^odu_+xPA?2KhDz2_*(4;p{<{>mL zLDu6;RyH+l<$834;q%+01U9-1auoirpkX3)5mfGzj(n9ZFM_k~r*kGpOtnQ0yQvX+ z|8dsyBS%2hww%(^avMlJOH3a>R@lX-f-K%+y0x;h^5EXRb0vJ2&Jd(FJw1LnK5p&@ zckkZqs~H&31GXF&7ni^H<;$0ASFVs?s89R-xDgCk_pNE3XKC%gL=b-x&WY%Drl^Q6#Y}z;*|j7e@B?+eWS!V2Pk|I@~*Ds7tRdqWo4mTV$ovL%I7)qonUGNzMbPO zNWE;{Jo;%s)obwda~t;khlrXT4O#((I1%-V6;+8)kG|`rT(_!Ny@7c*ysZ$&7Wdk8 z=oB|e=Rlh;X4x4MB*AmYXtS1lZOItfV4d+N$AFpcz5ByV3n~jXr|7Wd(`ov4k!>;~ z(&5mrlsjw7JB!gLDN0sFv$N;Bnvy;BwkP@0ivYuD5&{@TiK^Wn{R;KJW4%z&7d#FG zFxAB>*6Ka@>YV#x|Hk?PPkJV1i@?Y?GH?blwn~yeB@OS8daj}l68%R;JfA;mcw!h2gOz66QJ zSbh2)9#gqJVaZKII9Ma2`yWpD#cDnuTKL zQgU6MCh5Bm3YePF)^NdnMD700E4HiOV33MFTR_k5yJ{Z5YWL>9rz)*lBMs0;h!qwV zzgo8^;fMoa3DrdVW}`F!{V9ggh&#Ri*3@(wqj6*G_-ey>&F9s%RaJwJO-*lkv{kvT zw)j#=Us~=5f&;U??RDcFY977EQM?e^61$-aXFy>#KhW0p$JOpERJJ}lL0X5m9j@vJ zJI89}JoLjE)_9c1O1Z-oY^RgGq;X46Bxq>^uX1sT3YtBR)s*I++S>?n-LZulAbMh$ z_AHXhw`Yl44G*kZCPL^|{bepW){|+O)jj9FuTwTW=oHT1YiQTfqfH0sx`393S8A>7 z(U%-MZ=n)glK8tak%GjGF{T`vc_Nt!CM~ZxX$39A`0M>gY)_Ku8KHuOIoQ9%jMWFx z2s|#t4ofw!&6hW=%^2Ulcdu(PCz{T(#BzVnxeHzsnq*Oc98}iLt#U~UWwa?kS~a@& zmiEHqMS*a z&&!wOCHBR{Pzj!H(%|E7S1zqy^W%jc8qakL1vuzX1Ojt?z)+{(REh9SB#1&LN z^X{7C%v)Wv;i`4BF?ncS_4h-P^XmPJu}r&0S-M4EW4;6gm18-edF5t_G@`uCKc=sT+w4)tUI^*}HJ#&PHEPgx+RSmSQ#T{UDAING2vk)y&~@fA zG_TC0TnwAmZ`LmWjp7sKpuC<@)EyHTxY}Chrx{bb`z7Y10QBL9>t^4=90V=zMY(QU zLYta{vff{xTJ#c~nlGG=JweJS1p1sU*;=UGIYX4>+MUQ)0rutx4?c(@YpiZ-Me-wS zVJ(xb$_RI>{54$=gQMD zl0F!WIoNHC;j0zOD1jG>O$2hUcHhrw={2NV#g(FLhHYBvDfmRG4J9!)Lsl&%w)pAt z0)Ec}_gfMcO56hl9$PDk(0{h(jR6)MS-jh_SjpHa35LCL*js@T->mJe@6+XUi)pnvwrwmXAy3p9alZg z=XJH?1oa^8`pBRgZgD)c*DJU~J# z&ebt_%68SJrNY)Aofl>(8X|;Y)9!$t zBA0n2zW)^ajMS#jVt`!ojeZgs=s8r3!Zz%lPhUSQuZf{PPvwc^>iPl8GR*+$Js{rG zw-X-W?WrtvYB(!mVbhm?XJe#R9@?l1QlRk6Sg;={wbhr`RIq3tsZT#)N#Kcb(5JR< zz2u(L-OQ(ktTHJzx|5A8^^$Qba$4&|SGnTXXHwH6BBn5DR@RGWNkg92OKl8JfWq|V zU-*hSiBgtQyTmSm(*^^N-cdS~7m~~at8=Y7S*}V!Xhm*U{5V(1wm_v#s9=E_ z|Bl1ny2wifE{_XTRJW#m^LzhQkpDEHr8JbHg#9j`R{=(esXx;_*)@Z}p#;*v`!NWf z3#V~AUdI{gepf^U^!w<@pJnWO&?K8j0O=`Ee~j;}{=JkHZv8s^Hb4LRc2lCv!~a3`0xde;`q^~*4Ci+JQ5O>L-4Atj3Of+A*%=>SBE6egPn6=P@;NhR^}iS z^x$Tf8yTFj=i=dkbfU13fdVd>5dY|bg2&&&esdWV z8*DwD;{j@pJ!)yNE|iGllnP(6wcrK-W!#JAMK?vFSKBef#2oC0ibNvN{(e@yGUksi zpH{t}sXBr%x2twrzJ*=unqYleK7_`}cg z{se^gg$iBRu1alS5#7tcUx&*Ew=l{H?r~_KqK7xjz56b@kx32chj@|)HFX_{gNSDLO8p7tdm{p$VKlQ&Mp@uzN8|JG^G3m*N~^b$Osq4L_V(F^H6 zIE;?qsQ<{>c@eACydk%6Fkf})fO0y6gxIqch_P_Y4C33z* z~IJT&3UST!)0MOo%FUM|%O|>U4{tcEJaZ_r>JP*DOW}2cOv8*rhNo^z` z%8Xdzr4beXd_v8j9|alvQBTmQB%=iR3Ml1>6f(v^I2Qbz;u= z8CcpS@;q-@z|}$wHj)n_@@nFi3UZ>jpr8KTEqoSg4c+#f0T=|lth*lX36hO}(NBap zUuq--zx__h)ZxU#pmDpLr)E5nMA%znufk&dC9j z(S@sk)>a}~ev^U8LxnIQLEkJoXSrr!sIp5lQP#_u9zg|JGk5AtW>7M8Cg1B38|1B> zj(JW#LM!b7h}X^2dp-7RTHyQ6TV8N_M32}SwTU0m(UEMz#Pe~(x3%KIHLrQM1;M$4 zQ<38S`|=+sWk>bN$jD&Pqg-p+jh)(HPetmz{ufEsXS2GN@u_T_a5L;+Z{#@zAJk%0|0loukDF|4-*eulR_U zu7*l8eA2|{-yenyUK^U~R8K}AkZX6-A3SP_q>vd^nOWlD@FcAH-xt_(4!Kwx4HVp} zYUzM&xyb#bl7%ov4Q{69qi3}fzMr7__u38z!vHYt=WU}bk^jX}G=Wj<+gy1!w}*srPVY=06M*N4 z4!;3i-HLs;EO!@z;P+=dOIiX=Oh6Q$=N#Z-&e6u?Fh393lqd4BD=z6~8c_T<_X&>Q zGYv$fjBYN&({tXj5O_99x!ud&pGtp5{Tlgy-$8$`*ecSg?iBh2b>F7~vmivan6}h7 zb&ioMNzOHJZ3^ITiJ0Xd;h>p8Xv|*CEQ9nc{8D#-?_*q7)v;BpKwmJ=wyMNbtcKgZ z?7=J!=E1=9#k7H^Zk*VCRrSd1?6i>s10b5kz6(g>O$g<<@Pe)eREksZQ~$W8wwf7a zu0D<`7)TCRB?0~I&lEL`(B8&srZY;t+t;ik1|uuEvdp9ZVP6fQowtP2q?*9N^%TWA_jfEHUVLEfPkzg!}88Qk7G z?cnfHIi$Q_@5AA*+Qijn2b@PrS>q=DQ%l2`ikre%3y3yGIp4lnTkAq6A8_aDT(%wN z26|8-_mZ_#CZP7Igcz?8o?Jya=<^a0?Lxaau(9S~>Sy+9R*eBcPf#(J7Qk0h3ORzi z>cJj19M6m2AtKaqVGgDT`>^pEWR*)FJEC<@g0dPJ|xpP=FyWE zu?d2L?bCa1iP{{T;onyG5-*F%w7IqwxUhTe+5-`SL2GtF=de)zhuhmbwb2^lS7+|B zBwi;zZkbc;DAp-5OC@0y`KVj4{Jr`7do7Q+S?8HIwl_TSf&>*Zz{pe|zNho^Szok zc`S2DfP`Ei*iod(8g4j`oHV#OHwkO*$CBx$qo8=09 zQaZeuZ2|uQ1X17QC|GUpAp7p-{CJo2?UocYTBBIpqt9R%4`eAH%|jsjE74I*Bkp`F z2wmNh*stx;ia}xE78QewLK=f3x7Py@XRr_W(nM(~({ib}9xeq4kau&zyRU(zb-3H! zx22myK$bhHA!#8p!TWt{oAngwK%Ou=%Mzs6_0g-g+v6b^BL|b~w%1RRh1KATzfOGi zwN2$WQCOL>TpE6681pch zmAE?C-j(*$?#qk4;s*QU$1MX4!W+=N92x=s%0ku!W`qNBqxO=V2#B=0O2bF{i# zWJ#VzeD2lvWNdc~->Poh(aS|>?&LO;{+Qm5?`(Je++CRK92C@9OB%;mT9TLBxGcTV z@pk6q_-Z?DJ8FEVIy#XDyk!JZQB?C|vOi;V##zd(FWr5kgvn(Q7GjnrzMoeodh#k1 zQ(_C);_F7_)E+Qch9z4e5Fx17K zSakYS2?iFRS8CnM3pRTUYN^!kNWJ1Ffb?!y4fz}+zJ2#@Xn&QfWA`=~#Esipoi4qE zneQ+BW*GVTU{n{qwfcRXArP65_ti&@l zbV^j;JWvRu93PjPvx%`5@>(cX)Wg^?h@JZu8fhBL%^==K&me9i(BF@*Mi->=Gl)Nk z`S5`yJREvkBbdLu9FFZ6)9Wgj(Cf+y=TDTtq~Fi9&A92$(pA1H9Ug6d+aQS_Qb`NS z)b1ZY2F)s*1vB(Tp%pHo8P>fJ4vEUIPB=YVx3&Dmo+POt?4WBTw%f7*+tVB~T#ZBL z^d1QhzyG+xWyD6~#^)Gm#5}rsN3kob%cH9liD=)LGrxVXk8+w7!T{3z8_+nmcppKX zp(iXFRmS~H7D0BgPyI1WG8r7LT24ppxbzesoT1qjfVKQeY!n#bRdoJ ztT%R``0E+ElKwzO+m>&f7}KTEpbYc&Ewh$OP*iYn^VQ5tU8#*Wf=)9Wj#n@M+H$0AzJH!AM( zO_(4Uf^F$Hrz12F%o7Tl*Rb~=w~6Nr5X=Qgf*(D7%b%H4(G*Bq+}9Fk+VX{(PSCxC zKl+iwr!zG79-FoF*<9ql4%9h;<+InI8R{4dRA8)K%>jZyY?tr5L1AT|V+x?=@d13p zpqElyyGpRyoV@JonTZb{d+s|zzvl{0?e7E;xNzRGQ9Z{YXX{o%OQie$A+?Oyuob+Y zaUpi(z%w~3i{Gq~96IdU7{j#xBulqsUc_<9$n9Y7YecPYRupss6{Lj!q6qqA0JPWv zNxunOtSzRb_^DLGi~ITaNc`8(y<_$G!C~;ymFW!;gpDWflP>hYbh3xZfi~YmU0uA_ zh`3A1L19!p*W?ccFPl00RcA3V{M5bv{zd~6R}Fo&hfxr5rGG^y!8k^yc5$L7XLqb$OVt~1XxijAnU8JmZv0Ix!?AZ8rcH4L? z$*o;Ir7jK+ls-PnZ?#-PIKqoO>BZ3UTyA&kiB ztQ8s5tL|pu-|69Q&gLDyO~0Qj6E+88Bw6gRhoGA)ppb@KSlj11}v< zg*vNZpY?kR8k1>RLUpp&>CKF*+DIY{)d4Chgs;}dZkDZIjB270Bk_5Elo&nJS%SSJ zdBa)557gODXvj$J4F@xzyEN6bv`Vmm-Kwl{S)^4@l2rWi<({06t)yabTBn7Yx_S_J z#n<_@>*%A!s=TwYpuPZkP`aDc6HB>95vETa_@dvauH_{%=IyYk@=xvU5S|!{xUIOQcG&lsBM2vWyK? znqL_YfbU(+RK9f!-CN6xz**lz8g!1h^g>*=Wcq{@|CJ~M8H!(1tUoifkfkJnrakFn z#9rYmRT2W~ZnKs*3zeGU2Obi36FOy&j6B|JgPQ2?rz9isSkIJEp%YOCZ%$Af$1mDx zCWBW4xI1UJCHgX62CF)7o{VH*2$U+|{YSaFthW6oi<$h^QAJjfw&LO|yZ{6~IT_y3 z2^;p*zs3{!f;^J9vW0P|udH+U_!7Xr*sk-|(ouYdNmZZ4z5iZX{j|BXlvqLYrq!zV zrsy=4YkYhmZU&%{E!l3pOb|rqmBJw16;Ez(x350vb*c}n1x-)uWztNb3QC&J0;(XZ zz1f}|E%2J3;=Gy~1Ms)(?Afms)CO5SBjQbHi&^8L~1I-Bwhxsyu+MB0LP&bI47D*Qm9>q`zln6G9=g zd!5x`vp_0%Um~e!=qr;9XnbOy!=f76_Y}I zgo~csy6*X@ffCzzAZhYt)OZva%INi|0w;pqs4W#e(67>olhB?;v(I#bI*(0Bd=Z&` zI@p`p7_iLhacr##R}uKwwfGSNZ3}Q8nxG|RrX?c@#(dAkJCqw9R7f3NX*iG9m@G6? zVR&i|4w6DO&%pw7$M>mBnkU;bMMq;?nYuEz+&NdKrh~@&{-YI`z?V{r9MXl{iXPm( z3|`Sic!$Vp{JsdI`bFMHGY1sv&_8RxU(PLYotdLuh7V%zxAtBCo_zsO(Euy`91PyE zWcrz$x%JQLQz>`+X7wm_u=i-p>>NSd(I%!e+j;Y}KMvCD3zKHEpL})W?jP0a@9k66 z38(NZ2NHbrYpQ!HuObo|*4~3vc++;{=(CGJS^+4Dnr$tDY$Q^9UP{V>z)rupLQAR8 zU#Sg-$hW^~rqS6&h}eOFu2XIga;-hJwdm>AUo-rhFTXwV`K*44GEmi7BUQl5oMa9P zyZQYz(WL(Mauk)T=kFQ7|&N)B*7bmGDXP**p| z0qKl-5_k1p320?uF&;(uT5gN~u(~Q^*7R?s<_E8;Ct5Mt^|J&qGW@VOS7_1s4n)F- z|G_4~ncv{0(|Z3`dsi9{<=*~BIdNo33#Ca3Nj01-+0NLDA+1ERBxH;1YOHZ2$&~%r zLI$bK99wo%$~5pK;nny3)V*Y*q2XcixzYrk8Hrk3?PNR&mS;3DH|u+D?(N-fh!KF3T6)6 z@RG@UK~vwzEdH)pg+IT}q!i@}KOyu-Mo4zgL2bhvq1-qw9EP-oV4i9MHW`AZh!A`g z!LTw2|6E)OLPRLs*!a&7an+8&N1{G*aIn%^fXNKtS2axe@jX62xWo0&&DV2cNR*h8 zq7tqP{b(OGX%)*$i`zJZ0{D-0B>(+BmFYH0SvC}oPrdLai;9~ZaWYp;s1@+}&v*?e zK4k+9i95kpZH7&i`S|f!XygXek|}0f%#1~3E2WyK)Z|134@9=|1HIrXwF0LtwFh26 zd9A4rl&2suC#riV-xpDW|BpZ82`XGDZXh~A*^OEgCio^zJ0>{@md@`oA0JqdW1VZQ0K` zt2Ce{ru_c3_rb|QJv&<`wJh9s<==A5$ zsF2fjbMCbt@m_ipsfw`c@rxHP{4{!#5)#mpmt`eNLJidm&xC03harWB?>y6d7er(v zcGpLZb-v6m)sZz`o;&>Wt{XcgEHtTVAEWH93rmy`;4P;@ycda&N#VC|6DPc?L+k2` zqTBOJHPIZb>sqPQP1Bpa`VCEj>qx0Q+_5Gb&96*3&HXW5YYLgc*rXz9lBGLFd~>y^ z0c&SZ1uVTk*{JqlSi4*E-n~tB*|t%-CSvv-LL6x8R!jUqOX2FR0W%bW#^_I2X49f* z{k^#(509$vYrQmbE;CPeq1rc6tayKpVuWNtWquv0|LFUiJBRlTsXSu~s)+l=%>Su9 zeW1@m45f_6uXtzvaf2`3-a^<}bUllo zcomG%2vmu_eRzvY7!t(g;Sq#m|^6mT=x4egLt*M3xXuQS`?8r2wv{7V?B}HDWuE8qr!Hm+B23{Xj zGih_5Xy$h-efrkd=#G+w34$=XWIekU1p7hmblWzm-Kg+@4Pg7!8sD|__xa31eOy;l~I=SlBj{ZF3d_SPOp1Hern3TF#U zP%L0I{(REE!&e7vy}t!c80X^&vWEqoUlwD3ZL9^bG)k|SD!o%9P+7iq;r-eLVdR4L zFgo}0wvoPwR;chu%Sd`!ukiqRJ@PI8r@niay7=!8TB>u3J{@~4#c*wW-8Y0zIW<&M zZs6ln4#nS4M@xI}wrMxA?)oCq;3I88NK=KYLWa~IRWmAY%N_P8U-sIm;(ngtmJ5)3 z1%+BZ*!eM+W#cWaB62_^dAse*QXiXebSe6{4aT`>Ubht?I^L zf?$?`nRuqc6$1tKBRHeZd!_rJ(rrK3?n5x1LL`%WF?WQ0)dif)ZXYR8Fyr_&mh#wa(*xD?(dUD`c~R zM}Y}rLM1069rA5*e9(xBXf23#LzveOIh9-i-1-fgrt`NEv9I3Wejf7-az?STf!PP0 z!L(NqA}m<;uEH^6J`;!E;@5m-0-WAN64~d|jz4bUE4zk`Lam_pZ zi&yWLy{k>+N%D603RPeJQaejoH81)7p;7G$|OK%4Gzg_F+HV(aC^skF;T=kG( z@npCwuZae0u9R~KR^RyjS8ppTx4&zicOcI&Fcpe#vX5-L9!S+F`@kz z#9;FIupLdM*QJX;JHMJDf{77OJNH=Q?wOfUQA;cOJ^>|)Nk-DR&4=a#5b%R=5Rz>1 z=;WqhXAhmy2`vjhyRu9>Z-px=a&hem><8@|(XHY9p2v%O30jGsq>Q&EW2eIcSkfrV zdU1+n2B0G;4{|KK=pFgsgm31%J)M*{myzV!d8D+yDTXjHnZ@1So+ZO# zUiI=wY_SH{BA<_w(_#Sx@%QAWiU0=mf-_1<-9T$xUSeE!CR6y&Lo#o+>+0fUR-*i_ zm8cl}49I}xNBqHrS~dstfo5Xz+wQ%P2~so&r31Qk^B{?5I@0!<|As7B($7<4I{h8C z2MB|cStyhRm|m2%np(hgkdo#}tT1*dZ!0Ig=>fz?AnOEmD8`RnbZakB6h7od}3d~9&z{ZVH`Twq?Ft*43m zn2ChX4ha}L2V*O3|BUQ=cV0nHB4ge6Pk^eqR^pCRS}7{4Wq3~DKtK-^?WR3^MW8Nk zdI;R#Mh;fLJ9@@nx;(2wp#To#k!ks@S|W*Cr)%JK-UuppA)LB3STw0L1yU}#R@#us zgisDNk#Qv++K_@+mfkJqF!=OT2rI9h%0M0XOd-Ms<{NM(3zlpIl$+@ z&Wh4hWVCLsMsGsdj6thApmg`~JPrBiLt*$?PP{HaE)1aEJ(#gBaZt=FGoJ^IX8?|4 z1x-M?-1`9ZT48Z<@tT8v)mVBx7m@Fxs?p-4X)cX8^Xh#w8bWoIW1T$T&*dJ+jl5#) zt4|YIS{KBL1E>M@aP#v}G(pD=zAC+OF{iLFk*C|8ApJ+fn0N8HKaY95q}7QKG{kT_!US8!P8%5f&Mil5E6^}AGgFmY zp3?wektXww)u!ssPvB{W1}ex17EFcmP|E_1U*(7|yYvGC19ya}X?b~W<>9#uD39^| zZH@r|r1R_O`)kdjbqEbVqSbmNN=1LGEoQKzx&#lpoJyDFIJY-B9XNmS+)+bg)I~FUUT0A9(NX zun_{_HKTp>J+gI=hVZO~h_(t-l8tQ#P3n`biWkHKd}^@&#&Bq&^`C1A80j&IwP&k= zl)lXiX5{+-5)zU%n1Nncv&!8iAme$VD;(6I@E=tWy2a=P$V!z<90S-ioK-*s{uMb@ z>Oe`HL_yo@L#}ht#4KwHg{HGWHaql`NrtT17Z6egxJavegob>01 zCd@BDt-y13eC=?b(W!U9E<6M}RQJ@TY3t8Df1gmq1-gtOFidGlw - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index f9519f8074cc..1c657c4832a0 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -1064,7 +1064,10 @@ def test_fill_between_interpolate_decreasing(): ax.set_ylim(800, 600) -@image_comparison(baseline_images=['symlog']) +# test_symlog and test_symlog2 used to have baseline images in all three +# formats, but the png and svg baselines got invalidated by the removal of +# minor tick overstriking. +@image_comparison(baseline_images=['symlog'], extensions=['pdf']) def test_symlog(): x = np.array([0, 1, 2, 4, 6, 9, 12, 24]) y = np.array([1000000, 500000, 100000, 100, 5, 0, 0, 0]) @@ -1076,7 +1079,7 @@ def test_symlog(): ax.set_ylim(-1, 10000000) -@image_comparison(baseline_images=['symlog2'], +@image_comparison(baseline_images=['symlog2'], extensions=['pdf'], remove_text=True) def test_symlog2(): # Numbers from -50 to 50, with 0.1 as step From a752d46ea3c5973a7340d2085ae298919e9de74d Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Wed, 30 Jan 2019 19:24:05 +0100 Subject: [PATCH 5/5] Clarify a bit iter_ticks. --- lib/matplotlib/axis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 66a5a53ffad1..3fb94e13ae14 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -1013,7 +1013,7 @@ def _set_artist_props(self, a): def iter_ticks(self): """ - Iterate through all of the major and minor ticks. + Yield ``(Tick, location, label)`` tuples for major and minor ticks. """ major_locs = self.get_majorticklocs() major_labels = self.major.formatter.format_ticks(major_locs)