From 2aa869f8c76c0dc7d88701f35066d355f68d49e2 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 15 Apr 2021 20:39:15 -0400 Subject: [PATCH 001/270] Backport PR #19975: CI: remove workflow to push commits to macpython/matplotlib-wheels --- .github/workflows/wheels.yml | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 .github/workflows/wheels.yml diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml deleted file mode 100644 index c8c280e92029..000000000000 --- a/.github/workflows/wheels.yml +++ /dev/null @@ -1,34 +0,0 @@ -on: - push: - tags: - - 'v[0-9]+.[0-9]+.[0-9]+*' -jobs: - trigger_wheel_builds: - runs-on: ubuntu-latest - name: Trigger macOS and manylinux wheel builds - if: github.repository == 'matplotlib/matplotlib' - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - repository: MacPython/matplotlib-wheels - ssh-key: ${{ secrets.WHEEL_DEPLOY_KEY }} - fetch-depth: 0 - - name: Prepare build commit - id: commit - shell: bash - run: | - TAG="${GITHUB_REF#refs/tags/}" - BRANCH="$(echo ${TAG} | sed 's/^v\([0-9]\+\.[0-9]\+\)\.[0-9]\+.*$/build-\1.x/')" - echo "${BRANCH}" - echo "##[set-output name=branch;]${BRANCH}" - git branch ${BRANCH} master || true - git checkout ${BRANCH} - sed -i -e "s/\(- BUILD_COMMIT=\).\+/\1${TAG}/g" .travis.yml - git add .travis.yml - git config --global user.name 'Matplotlib Actions Bot' - git config --global user.email 'matplotlib@users.noreply.github.com' - git commit -m "REL: $TAG" - - name: Push to matplotlib-wheels - run: | - git push origin ${{ steps.commit.outputs.branch }} From 3afd4d01fc2082ca7ec2b38b065b8c59991ce516 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 13 May 2021 23:31:13 -0400 Subject: [PATCH 002/270] Backport PR #19849: FIX DateFormatter for month names when usetex=True --- lib/matplotlib/dates.py | 7 ++++++- lib/matplotlib/tests/test_dates.py | 10 +++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index 8d226c0d73c9..c462758e4850 100644 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -572,8 +572,13 @@ def drange(dstart, dend, delta): def _wrap_in_tex(text): + p = r'([a-zA-Z]+)' + ret_text = re.sub(p, r'}$\1$\\mathdefault{', text) + # Braces ensure dashes are not spaced like binary operators. - return '$\\mathdefault{' + text.replace('-', '{-}') + '}$' + ret_text = '$\\mathdefault{'+ret_text.replace('-', '{-}')+'}$' + ret_text = ret_text.replace('$\\mathdefault{}$', '') + return ret_text ## date tickers and formatters ### diff --git a/lib/matplotlib/tests/test_dates.py b/lib/matplotlib/tests/test_dates.py index 8c821c0da510..e55cb7ec07ba 100644 --- a/lib/matplotlib/tests/test_dates.py +++ b/lib/matplotlib/tests/test_dates.py @@ -270,7 +270,7 @@ def callable_formatting_function(dates, _): (datetime.timedelta(weeks=52 * 200), [r'$\mathdefault{%d}$' % (year,) for year in range(1990, 2171, 20)]), (datetime.timedelta(days=30), - [r'$\mathdefault{Jan %02d 1990}$' % (day,) for day in range(1, 32, 3)]), + [r'Jan$\mathdefault{ %02d 1990}$' % (day,) for day in range(1, 32, 3)]), (datetime.timedelta(hours=20), [r'$\mathdefault{%02d:00:00}$' % (hour,) for hour in range(0, 21, 2)]), ]) @@ -551,15 +551,15 @@ def test_concise_formatter_show_offset(t_delta, expected): (datetime.timedelta(weeks=52 * 200), ['$\\mathdefault{%d}$' % (t, ) for t in range(1980, 2201, 20)]), (datetime.timedelta(days=40), - ['$\\mathdefault{Jan}$', '$\\mathdefault{05}$', '$\\mathdefault{09}$', + ['Jan', '$\\mathdefault{05}$', '$\\mathdefault{09}$', '$\\mathdefault{13}$', '$\\mathdefault{17}$', '$\\mathdefault{21}$', - '$\\mathdefault{25}$', '$\\mathdefault{29}$', '$\\mathdefault{Feb}$', + '$\\mathdefault{25}$', '$\\mathdefault{29}$', 'Feb', '$\\mathdefault{05}$', '$\\mathdefault{09}$']), (datetime.timedelta(hours=40), - ['$\\mathdefault{Jan{-}01}$', '$\\mathdefault{04:00}$', + ['Jan$\\mathdefault{{-}01}$', '$\\mathdefault{04:00}$', '$\\mathdefault{08:00}$', '$\\mathdefault{12:00}$', '$\\mathdefault{16:00}$', '$\\mathdefault{20:00}$', - '$\\mathdefault{Jan{-}02}$', '$\\mathdefault{04:00}$', + 'Jan$\\mathdefault{{-}02}$', '$\\mathdefault{04:00}$', '$\\mathdefault{08:00}$', '$\\mathdefault{12:00}$', '$\\mathdefault{16:00}$']), (datetime.timedelta(seconds=2), From c5e3ac519d8600a3b0e8d07c677cfb850c5df703 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 14 Mar 2021 00:00:15 +0100 Subject: [PATCH 003/270] Backport PR #19636: Correctly check inaxes for multicursor --- lib/matplotlib/tests/test_widgets.py | 42 +++++++++++++++++++++++++++- lib/matplotlib/widgets.py | 2 +- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/tests/test_widgets.py b/lib/matplotlib/tests/test_widgets.py index 958760132075..2b81dbccc219 100644 --- a/lib/matplotlib/tests/test_widgets.py +++ b/lib/matplotlib/tests/test_widgets.py @@ -2,7 +2,7 @@ import matplotlib.widgets as widgets import matplotlib.pyplot as plt from matplotlib.testing.decorators import image_comparison -from matplotlib.testing.widgets import do_event, get_ax +from matplotlib.testing.widgets import do_event, get_ax, mock_event from numpy.testing import assert_allclose @@ -464,3 +464,43 @@ def test_polygon_selector(): + polygon_place_vertex(50, 150) + polygon_place_vertex(50, 50)) check_polygon_selector(event_sequence, expected_result, 1) + + +@pytest.mark.parametrize( + "horizOn, vertOn", + [(True, True), (True, False), (False, True)], +) +def test_MultiCursor(horizOn, vertOn): + fig, (ax1, ax2, ax3) = plt.subplots(3, sharex=True) + + # useblit=false to avoid having to draw the figure to cache the renderer + multi = widgets.MultiCursor( + fig.canvas, (ax1, ax2), useblit=False, horizOn=horizOn, vertOn=vertOn + ) + + # Only two of the axes should have a line drawn on them. + if vertOn: + assert len(multi.vlines) == 2 + if horizOn: + assert len(multi.hlines) == 2 + + # mock a motion_notify_event + # Can't use `do_event` as that helper requires the widget + # to have a single .ax attribute. + event = mock_event(ax1, xdata=.5, ydata=.25) + multi.onmove(event) + + # the lines in the first two ax should both move + for l in multi.vlines: + assert l.get_xdata() == (.5, .5) + for l in multi.hlines: + assert l.get_ydata() == (.25, .25) + + # test a move event in an axes not part of the MultiCursor + # the lines in ax1 and ax2 should not have moved. + event = mock_event(ax3, xdata=.75, ydata=.75) + multi.onmove(event) + for l in multi.vlines: + assert l.get_xdata() == (.5, .5) + for l in multi.hlines: + assert l.get_ydata() == (.25, .25) diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index bd739ac91c4f..7527973b82b1 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -1655,7 +1655,7 @@ def clear(self, event): def onmove(self, event): if self.ignore(event): return - if event.inaxes is None: + if event.inaxes not in self.axes: return if not self.canvas.widgetlock.available(self): return From 46ae61c47123f3f846b8952a9ca69cb023b73c7c Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 14 May 2021 20:50:08 -0400 Subject: [PATCH 004/270] Backport PR #20225: FIX: correctly handle ax.legend(..., legendcolor='none') --- lib/matplotlib/legend.py | 3 +++ lib/matplotlib/tests/test_legend.py | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/legend.py b/lib/matplotlib/legend.py index ff557816a865..05453584f629 100644 --- a/lib/matplotlib/legend.py +++ b/lib/matplotlib/legend.py @@ -534,6 +534,9 @@ def __init__(self, parent, handles, labels, break except AttributeError: pass + elif isinstance(labelcolor, str) and labelcolor == 'none': + for text in self.texts: + text.set_color(labelcolor) elif np.iterable(labelcolor): for text, color in zip(self.texts, itertools.cycle( diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index cebf26ea066e..12356ae15667 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -552,16 +552,17 @@ def test_legend_title_fontsize(): assert leg.get_title().get_fontsize() == 22 -def test_legend_labelcolor_single(): +@pytest.mark.parametrize('color', ('red', 'none', (.5, .5, .5))) +def test_legend_labelcolor_single(color): # test labelcolor for a single color fig, ax = plt.subplots() ax.plot(np.arange(10), np.arange(10)*1, label='#1') ax.plot(np.arange(10), np.arange(10)*2, label='#2') ax.plot(np.arange(10), np.arange(10)*3, label='#3') - leg = ax.legend(labelcolor='red') + leg = ax.legend(labelcolor=color) for text in leg.get_texts(): - assert mpl.colors.same_color(text.get_color(), 'red') + assert mpl.colors.same_color(text.get_color(), color) def test_legend_labelcolor_list(): From 3693d1d8ed38f6d6bd240935451156c99c5020ae Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 16 May 2021 15:23:55 +0200 Subject: [PATCH 005/270] Backport PR #20212: Update span_selector.py --- examples/widgets/span_selector.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/examples/widgets/span_selector.py b/examples/widgets/span_selector.py index de446753382c..8392be667cfd 100644 --- a/examples/widgets/span_selector.py +++ b/examples/widgets/span_selector.py @@ -32,10 +32,12 @@ def onselect(xmin, xmax): region_x = x[indmin:indmax] region_y = y[indmin:indmax] - line2.set_data(region_x, region_y) - ax2.set_xlim(region_x[0], region_x[-1]) - ax2.set_ylim(region_y.min(), region_y.max()) - fig.canvas.draw() + + if len(region_x) >= 2: + line2.set_data(region_x, region_y) + ax2.set_xlim(region_x[0], region_x[-1]) + ax2.set_ylim(region_y.min(), region_y.max()) + fig.canvas.draw() ############################################################################# # .. note:: From 1b8b0602cba5a9a003563bfc21b1ba1c6ebd0cad Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 18 May 2021 16:37:26 -0400 Subject: [PATCH 006/270] Backport PR #20248: Replace pgf image-streaming warning by error. --- lib/matplotlib/backends/backend_pgf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 9d01f603e021..355090608c0c 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -635,9 +635,9 @@ def draw_image(self, gc, x, y, im, transform=None): return if not os.path.exists(getattr(self.fh, "name", "")): - _api.warn_external( + raise ValueError( "streamed pgf-code does not support raster graphics, consider " - "using the pgf-to-pdf option.") + "using the pgf-to-pdf option") # save the images to png files path = pathlib.Path(self.fh.name) From 88da530b056afffd6e2a494264f3689d48eb84e5 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 20 May 2021 00:42:17 -0400 Subject: [PATCH 007/270] Backport PR #20265: Legend edgecolor face --- lib/matplotlib/legend_handler.py | 31 +++++++++++++---------------- lib/matplotlib/tests/test_legend.py | 8 ++++++++ 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/lib/matplotlib/legend_handler.py b/lib/matplotlib/legend_handler.py index 45fb759d7b23..016bf8d3adf8 100644 --- a/lib/matplotlib/legend_handler.py +++ b/lib/matplotlib/legend_handler.py @@ -31,7 +31,6 @@ def legend_artist(self, legend, orig_handle, fontsize, handlebox) from matplotlib.lines import Line2D from matplotlib.patches import Rectangle import matplotlib.collections as mcoll -import matplotlib.colors as mcolors def update_from_first_child(tgt, src): @@ -734,32 +733,30 @@ class HandlerPolyCollection(HandlerBase): """ def _update_prop(self, legend_handle, orig_handle): def first_color(colors): - if colors is None: - return None - colors = mcolors.to_rgba_array(colors) - if len(colors): - return colors[0] - else: - return "none" + if colors.size == 0: + return (0, 0, 0, 0) + return tuple(colors[0]) def get_first(prop_array): if len(prop_array): return prop_array[0] else: return None - edgecolor = getattr(orig_handle, '_original_edgecolor', - orig_handle.get_edgecolor()) - legend_handle.set_edgecolor(first_color(edgecolor)) - facecolor = getattr(orig_handle, '_original_facecolor', - orig_handle.get_facecolor()) - legend_handle.set_facecolor(first_color(facecolor)) - legend_handle.set_fill(orig_handle.get_fill()) - legend_handle.set_hatch(orig_handle.get_hatch()) + + # orig_handle is a PolyCollection and legend_handle is a Patch. + # Directly set Patch color attributes (must be RGBA tuples). + legend_handle._facecolor = first_color(orig_handle.get_facecolor()) + legend_handle._edgecolor = first_color(orig_handle.get_edgecolor()) + legend_handle._fill = orig_handle.get_fill() + legend_handle._hatch = orig_handle.get_hatch() + # Hatch color is anomalous in having no getters and setters. + legend_handle._hatch_color = orig_handle._hatch_color + # Setters are fine for the remaining attributes. legend_handle.set_linewidth(get_first(orig_handle.get_linewidths())) legend_handle.set_linestyle(get_first(orig_handle.get_linestyles())) legend_handle.set_transform(get_first(orig_handle.get_transforms())) legend_handle.set_figure(orig_handle.get_figure()) - legend_handle.set_alpha(orig_handle.get_alpha()) + # Alpha is already taken into account by the color attributes. def create_artists(self, legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans): diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index 12356ae15667..782ef87853fe 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -734,3 +734,11 @@ def test_plot_multiple_label_incorrect_length_exception(): label = ['high', 'low', 'medium'] fig, ax = plt.subplots() ax.plot(x, y, label=label) + + +def test_legend_face_edgecolor(): + # Smoke test for PolyCollection legend handler with 'face' edgecolor. + fig, ax = plt.subplots() + ax.fill_between([0, 1, 2], [1, 2, 3], [2, 3, 4], + facecolor='r', edgecolor='face', label='Fill') + ax.legend() From 71fa50c638e53c539bea760b48ee4d03b42f7bc0 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sat, 22 May 2021 09:03:02 +0200 Subject: [PATCH 008/270] Backport PR #20275: Fix some examples that are skipped in docs build --- examples/event_handling/pipong.py | 7 ++++--- examples/user_interfaces/fourier_demo_wx_sgskip.py | 4 ++-- examples/user_interfaces/svg_histogram_sgskip.py | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/event_handling/pipong.py b/examples/event_handling/pipong.py index 7d0acab617fa..b3064d0c84ee 100644 --- a/examples/event_handling/pipong.py +++ b/examples/event_handling/pipong.py @@ -124,8 +124,10 @@ class Game: def __init__(self, ax): # create the initial line self.ax = ax - ax.set_ylim([-1, 1]) + ax.xaxis.set_visible(False) ax.set_xlim([0, 7]) + ax.yaxis.set_visible(False) + ax.set_ylim([-1, 1]) pad_a_x = 0 pad_b_x = .50 pad_a_y = pad_b_y = .30 @@ -168,7 +170,6 @@ def __init__(self, ax): self.res = 100.0 self.on = False self.inst = True # show instructions from the beginning - self.background = None self.pads = [Pad(pA, pad_a_x, pad_a_y), Pad(pB, pad_b_x, pad_b_y, 'r')] self.pucks = [] @@ -177,7 +178,7 @@ def __init__(self, ax): verticalalignment='center', horizontalalignment='center', multialignment='left', - textcoords='axes fraction', + xycoords='axes fraction', animated=False) self.canvas.mpl_connect('key_press_event', self.on_key_press) diff --git a/examples/user_interfaces/fourier_demo_wx_sgskip.py b/examples/user_interfaces/fourier_demo_wx_sgskip.py index ba67e925dcd8..86441ed0c838 100644 --- a/examples/user_interfaces/fourier_demo_wx_sgskip.py +++ b/examples/user_interfaces/fourier_demo_wx_sgskip.py @@ -70,7 +70,7 @@ def __init__(self, parent, label, param): self.sliderText = wx.TextCtrl(parent, -1, style=wx.TE_PROCESS_ENTER) self.slider = wx.Slider(parent, -1) # self.slider.SetMax(param.maximum*1000) - self.slider.SetRange(0, param.maximum * 1000) + self.slider.SetRange(0, int(param.maximum * 1000)) self.setKnob(param.value) sizer = wx.BoxSizer(wx.HORIZONTAL) @@ -99,7 +99,7 @@ def sliderTextHandler(self, event): def setKnob(self, value): self.sliderText.SetValue('%g' % value) - self.slider.SetValue(value * 1000) + self.slider.SetValue(int(value * 1000)) class FourierDemoFrame(wx.Frame): diff --git a/examples/user_interfaces/svg_histogram_sgskip.py b/examples/user_interfaces/svg_histogram_sgskip.py index 026cb5b1cc03..4311399fcae6 100644 --- a/examples/user_interfaces/svg_histogram_sgskip.py +++ b/examples/user_interfaces/svg_histogram_sgskip.py @@ -149,7 +149,7 @@ """ % json.dumps(hist_patches) # Add a transition effect -css = tree.getchildren()[0][0] +css = tree.find('.//{http://www.w3.org/2000/svg}style') css.text = css.text + "g {-webkit-transition:opacity 0.4s ease-out;" + \ "-moz-transition:opacity 0.4s ease-out;}" From 1ef141eedaf2c91d54e5bda4e3fce37d3f91184f Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Thu, 13 May 2021 07:23:19 -0700 Subject: [PATCH 009/270] Backport PR #20154: ci: Bump Ubuntu to 18.04 LTS. --- .github/workflows/tests.yml | 28 ++++++++++-------- azure-pipelines.yml | 6 ++-- lib/matplotlib/backends/backend_pgf.py | 3 ++ .../test_backend_pgf/pgf_mixedmode.pdf | Bin 10967 -> 9822 bytes lib/matplotlib/tests/test_backend_pgf.py | 6 +++- 5 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e5d7e064f55e..c5e532ec7217 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,18 +22,18 @@ jobs: matrix: include: - name-suffix: "(Minimum Versions)" - os: ubuntu-16.04 + os: ubuntu-18.04 python-version: 3.7 extra-requirements: '-c requirements/testing/minver.txt' pyqt5-ver: '==5.8 sip==4.19.7' # oldest versions with a Py3.7 wheel. delete-font-cache: true XVFB_RUN: xvfb-run -a - - os: ubuntu-16.04 + - os: ubuntu-18.04 python-version: 3.7 extra-requirements: '-r requirements/testing/extra.txt' XVFB_RUN: xvfb-run -a CFLAGS: "-fno-lto" # Ensure that disabling LTO works. - - os: ubuntu-16.04 + - os: ubuntu-18.04 python-version: 3.8 extra-requirements: '-r requirements/testing/extra.txt' XVFB_RUN: xvfb-run -a @@ -128,10 +128,10 @@ jobs: ~/.cache/matplotlib !~/.cache/matplotlib/tex.cache !~/.cache/matplotlib/test_cache - key: ${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-${{ github.sha }} + key: 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-${{ github.sha }} restore-keys: | - ${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}- - ${{ runner.os }}-py${{ matrix.python-version }}-mpl- + 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}- + 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl- - name: Install Python dependencies run: | @@ -156,12 +156,8 @@ jobs: # libraries cannot be loaded at runtime, so an actual import is a # better check). if [[ "${{ runner.os }}" != 'macOS' ]]; then - # PyGObject, pycairo, and cariocffi do not install on OSX 10.12; - # pycairo 1.20+ requires a new version of Cairo, unavailable on - # Ubuntu 16.04, so PyGObject must be installed without build - # isolation in order to pick up the lower pre-installed version. - python -m pip install --upgrade 'pycairo<1.20.0' 'cairocffi>=0.8' && - python -m pip install --upgrade --no-build-isolation PyGObject && + # PyGObject, pycairo, and cariocffi do not install on OSX 10.12. + python -m pip install --upgrade pycairo 'cairocffi>=0.8' PyGObject && python -c 'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk' && echo 'PyGObject is available' || echo 'PyGObject is not available' @@ -180,7 +176,7 @@ jobs: echo 'PySide2 is not available' fi python -m pip install --upgrade \ - -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \ + -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04 \ wxPython && python -c 'import wx' && echo 'wxPython is available' || @@ -226,3 +222,9 @@ jobs: if: ${{ runner.os != 'macOS' }} - name: Upload code coverage uses: codecov/codecov-action@v1 + + - uses: actions/upload-artifact@v2 + if: failure() + with: + name: "${{ matrix.python-version }} ${{ matrix.os }} ${{ matrix.name-suffix }} result images" + path: ./result_images diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2ff87d0c71da..2c25a7786288 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -6,13 +6,13 @@ strategy: matrix: Linux_py37: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.7' Linux_py38: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.8' Linux_py39: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.9' macOS_py37: vmImage: 'macOS-10.15' diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 355090608c0c..3139d0fdf8d6 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -968,6 +968,9 @@ def __init__(self, filename, *, keep_empty=True, metadata=None): 'Creator', 'Producer', 'CreationDate', 'ModDate', and 'Trapped'. Values have been predefined for 'Creator', 'Producer' and 'CreationDate'. They can be removed by setting them to `None`. + + Note that some versions of LaTeX engines may ignore the 'Producer' + key and set it to themselves. """ self._output_name = filename self._n_figures = 0 diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_mixedmode.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_mixedmode.pdf index fdbb20349c42f67ed7c36d2c51ab80ddf9219019..fd7cf7a5c0d1849f2588809771c179c101a99a00 100644 GIT binary patch literal 9822 zcmb_i2UJtrwnZr-O+`RDSU`GB=+y`qYNQKNL+DKiy@P;&fKm;J5L)QHR{;U3Lg-xu z=>Y@;=|Aef|J}m9|NTGS7-x(elCZM&+;h&g_TGmDa$laCp9e_9vap5uP9((4$LwHg zO(Y?~tLfng)@o}Xaa@t-iNtbL179`CLX-^tl-WNm=nms&e6dhW)CM4!F~#LFoQu%oa~&jKlA4= zFpK<(TZfLjs) zh54nVh@9b0FcUi>_esnk{{L<*u>Nk`m5dD-hg2e%z1e@W2z&QK6T<(}#$ULuu5gc6L&e0|hWUqr z)c?=o`LhbJG6CCT8Sd!tgW=3@Czl_p`uB7rc)o6k_<{c<9A=;ZztA6)Gc#2*t?h~r zv5#?iN$c7cg?rTEc*JscrXY(lVHW!QzJz3LICvo{lWAPzE!jh!$gd4D+a>QkR*|gQ zkIs&yLlXSB{QwrHHV3AJ$2+Gg&Wot2u`Z-<(`lpV&Kky{4 zQR1tbUR><;q>CLQwc)FZTZVLvkG^5ohgYeGDrl4+X~wFV_ntP??jaEA$x;kc(48k> zG8d`YWWnMf1g~1+0^BHd7HH8VdWxW5tsmO#Lu^JnBne70`l_hzN7pixNcTQ`8-4>#ozvCk znhdnaBWO<-Q%G!@o($EC)_~_gkI==Pu3Z~-_lvazTpwku&Pjeh-l+7sKDz$oQRo83 zYmH9qt;PLwGQ_4V)&9C5N=YvbjKABM%3}ny@bw5w;BKs~(CIvRA_}xH3?y3i+E=O% z)h=qSiT?d+L2tYUpd zG`ECotCzbIHN0#|-|V>bi50bs`}Bwv=^sIqQue$zvXOgU5*OUvFEYra;r;>*n^FLo zzsx1$yF1dGbAZqoGz3jeTZSGe=Jit|`?i;f6)-zmMXQY2zSQRvnysr0 z=rPzC2d3q(V5XOiS9@tBNsxfF${ zVD0IJI;EEVsyA%8^v0HX?&Oz+RGxgbvw?rH8IbnuVoaDUElkLC-0G)Sgx~N6U2-Qs zAE6Ip&BCF+wG|O^4m`!NJKyvKcV`dL_KIzGOn>`}{8=hQyx|eI6vF+n@ z4movuYA>pYNgb_27a41(0&+=iaH-{5b*W`?(2PvzGF-ozRuBDzOPFo?vlViPVeSrMf&Xqjv<&_SG>4$F_;!_r${qe68MS*5!6rK)6>W<8Sg zlWL7>%BM_~!>=I(iGcgxrWc-qTaKgoJqNDH)*nj9H9F1>TzKb(bG-TM{o1CTFck0^fFbHDWYrcPG9+Tn-wql#66UMj6MT796Lxl#hgb{KN71#}A zZ^VTpWa`GH@E}&lC5iHG0oQBrPBO$S7_!p*;wU0Um+||w2MPz{?`9z@EnEuVGzX4a zSq!pk<56Xa>~$*+sJ#@izK8t1!f^k)HwP~KW(HU?|H{u*0Q;YAvR2D)3TbG0Fh=vy zWA^RoIjzn#WkaL}s{5a^jcgoqeB0BF3#KzhIOdz$(~++Fz7#3k9vg}^r8)Ygmc-$5 z^GKf+6FN35vGygbOfdDa9EKu5f>fm=k$wKdomu>ojOraxPtb`Pt~=TJtf`+uio%;K zl|bJTDg%mS>6X>YK=^0HMLtp2qgW!5(SF7dt~$FG7C97M;vN!h`jC$*KBPBhxBR)o;zJ^aL3x9y@dDZ|iA=&COmH~cD_|2R%5G1@&PV`t_H#$P3H z5{t*u`FI!w&gBR-qU=ay29d!S2dShl%P(xtoN#8)0dFW&y9VJDC{UbUyYR;Y{ z`n)>~S;ppsbRZj_iW}L=k9t^^nMMj+)JH!;l(s?`+qfULY-j93S9X2)XUHjgl_y*- zt&LeG9VSVHEIlh7QRuBpe z87JUSN<~Cl6x8>5*W?|I!WQS5#!-N{pJoe&F1H~MDI%dG!(fUG1Tvp)2`&}Mg&G$2h*K1E%SxOC1yv6bdK#X}9iigh zhAWf?9>Ww2L8bh5;RMhw&svsx4KVR8mJC6HqbxNmk2ES+eR}lj8%e=nfhjy~RGN;& zhx(?qiP@UWX1zsQ2E8q@VbBpo|9c4QxBm4=@U0wp(q*Xi5C#6ZUWpxZ8`ZI)N^Qbx2=hNs*c|9jEhmG;>L?wAzpiECDK zey}F)(yh{C$qOh*F%M}>mKsF1M#@F&aCKLm-p@krLRz9S$qQ%{wXbDe8KIJL_o;LL zN>}GlC1DtM@b^@{+!00*}KZ&xsQ@L z?cDcjGH)7QsNC!;Q1k7mlbl`2ZeH&zh~CGuDAsBwR#QTCHRgS}u!(Y5#!emC?- zW&Xz2k7qp_bP<8vOqKWZWvq+igfD?qj;J)s$8N4VVWDf9*mi%oh;1l$utn{sb^S7rU-efU5z5czfhV{U zeTI?}1ZgIE_~oQk@mc6d?c2!owww)Od$e9>IBGNvK*95Yxc^mLNNWc~g(_rZ5@ScG zdSf#(xz5KMipo}Vtuu3Yyo(c>g{+;UqitB%$2O&=9JaXMh)jMI{m|cv>K}@}L@#D8 z-$C{^a_^|!x0C72LWgmLs>-;4zRa_qHZFv$E43Qtwpy}uTPsGai*_~#^J(^#?WS6V zIomoLLtykKb#L#47o~)|3D(sNLl-I)=LUTFE5BiDElP>QsND40+oki`==D1sR3kaw z6g+Dyg4f^hAGDuRZA4zyBX^1PJvK^AtA9dB7SFxLE-tMhJHtMEwBz2M?n@Ve2C-xz zK_%eTS9VE~;-LwQmg-k5ba;VOt2)^J1Q601JDD%};VF1xnTRP}4-xV^-Y*Ro&Wwy`X_n>gw zGee(Re9q-orn9*a`%t|Y1p14}r|~*iVJz)26GkVIMtlzzcn<>Ji!Ge6uf-JC2l6a` z4h~gxZDoiNf>fIhCQ(L=YHaN>9QM8o?S50w9GJfSkP6n-)OC=9#X$5t48##j(0aad zRwZToiRiN+#nw9cP!8E4R6&=rYu$p|32;hxI3GZ0g zbm$!}42b8tNQd?@nHeR)&H`o_0|6gcN+ztseau@+xyQw;7}A#-@UoD1a()b*@tmds zyFfW`cOc{L#I`SA;wU2mDeu89iz{LfKz6EN{U_EdZc|fd3K^%0RpvPaogDkikoiWR za>Wu~7F&||&M94NWh2_~U}%$*kS%3>G?`yJ9Uz<9i$R4>h?KPer&0{H%T6r`)Hl9xP) z^sJO=%U&Mcgsh3`^41MS*=_#BSP@VK ztlM=VR^-v2_~sg7!P(_o_ObaZeG2y@S>X_t#I)d%QeDlM+`6^S8$7qxvFjtLCOg%= z4mllc`w%r4zt2HhxP+Wq=^vagW67WI$GjGMja`-(f2dwm{-;*vU~Q;=5u(neS7tg$ z^}O&Aou!Hx<53Y!xc=Q19cy^hk(h zNoka%(X9F8${}Z)7@p3E!==8s6TbqDRD@&Sz<9B)W*|&`o;EHTn=2$JO1*jG;V?1h zOt{CHk3TlL>*$-W~gH|-;!aH!j@L7**Y<#NyI32$j8Oks{f8G=I>3p zS^Q*{zU~q*4Avt=h5scoNlT8WYbB8Cy z1cH_<`v$6)s{0Usubp2F_m8a<(0LTSsh zOy?zQ5GUFLa)OWQ1!?oM=5CK*Y`b(Z)qy!l1-35-(4!{ z{C=;aQLK6{l(&Cu0n)WvlL^>8IjCNMOVgiKi^k$rVtbGepmTbVb+gmX=~Itmu{eX` z-223ei)jEj^;D>*xEyzwo9x-L@2gl)VW_K)StI_GVbtJK3`Il?;^sP&UCT;Y2gIYn z^dUxvi?*X+WhfUwK^3uzluW1ykZM47?oGLgR59g_E!p-Bxs=vb*P;7)LwnK{vvj6UD>Mu8>h5yp$5_f8~oze%cc zjKs(JSWtA>4KuxoZ=>mPML_}sdGc7d+XqwlZVtNeWb+F$+K?R{n; zQPJOTQjQ>$9EN1B`fnbGAK)VTp{eBeAcpDH0}tr)82!=A!xZXdCr7=LVHk?UaMp{( zI=(8d79Bg7N%2RzxVVo@o?RrT#Pv3uIMJU+5Q>t4%j| z3*dXXpVkj$zHxEd`@(k|M^d|~Sf}p<*)?&=u&F&)PIrg84<8$@8SZ-O4CM3d>+qSc z=Gm3p{!Zk0na}UN7%)p$`mnUY`*b_FE15Jw+D&465U$~xb~!AFIMQLAFT7_`sn|7h z;YEBb=V!wMjRP_omION-ZH&NYAmMc}BbvSO0qMI%3>^o9qafGhq&1 zPZlEQN@s`EWgINegnt}y(-3AF6xitV)(BCq;j_9{p^WB-8Cl_)lLQPsfm! zXM(S&$$D~SQ~F9wXI6|lZwe@y7G4ECdsVYNUEKCoQ!E}eDf7b0*ff)R^}~rLt+h{t z6A=(yG8SuHB)zj{^$y+q_&pF!_=WxPiHDH_C}+2L;c+mazyV5BdsE>qWGBCXulBoufFSF2+gm*%H7Fk>(hmOK&fyDfUW zIvYPZgzGNZ1URULvqNzM0y2&vnXbNCPVcla;x$Kx%77jrg2d{;Z? zc66qpoouJet72D?8hFSVc{>`f=UpooftUHEzR#&$Uuh$Y*#d8PB_0uYXlbhJ5;i?I z1?pJ_FA!V;(uNEe-@OxN`Y~`Ke!AZ?5BwrE_cTrN9^^Rg%l^s%yea2RH`}yf3Ek$f zt;3jrqCa%4yf{|=nNCr-CoR`rye(xW`vpRC1a$$z*m)tZ1@&cP$PsYQwWRh-Wqqzf z;pTWo#nl)t=P$R;B(p`xk^}&nt`E?TQ6y-msOM=5XS3Ift@ZYl`eGWzdna~EKhQUN zcs{9!mXwQ%$v~x`+|)`l#2onUpFYjOv|8cy@2m1SiL}q>gKEB^u4NTJpa$SdFmK03IBB!KW`DmuG zaMU{fs&_>?W(&>Moe?aOU>!cl1%B|}ROn_$Cm}0ZrRWi9g(c_h`%sr#LAnpm-m_tz zVR8glE!Q%(+MbkXtmaobSMx|GEi0exzD78IcL13c4cw}QxpQLv(G9(3P-!P>-Ok(+IlLJnIBR`d$HELU$2=lQ}b$luH zI^KbMo&=g!wQN@D+cEN~6{kuIQ|`#TBr5o*0|dBcvHeSFWTK zo*1vgJ>((eCBwZ&K-B@Q5*MBEqf0E`@GQTsGqJrv z#ciEtuWcz@EW#W1*}jDv^N4xY0PVe$*~j*o5&JY$IdW(Z40e_w^lV3$f`F3gng>qe?gxmO($o~QF}?5+3w!%p(Fg0 zeA2RvN7B3c&wAN~K;+rurp81nUh+_rcc4O!YOao_HT(gnLlAHY%0q<1VL$7XtKoQ zG_I38(R&HWi%`G+?i4}Z)=VdF*JkzE6RzQ0{N)XX3TWLeZp_LVF0>*vKnChjP^!T9 zayr`1ZMU#L?0<>d3_tNrkn*+LOsSugI|AT4dJJ(`Z&Y<3egOA$etjrC1HUXqKWrGH zGey7__hf5{ciwDY>#QJXS4WGlSu+`-{yOYdZW3ac)Ye216lLxKHGOi)sZs%|Xx%XV zKCeSoOWyRj^7;72`;7-?ZZ>yr9p|XGA3e3a!$H_OyUaLZb9S-E<&5PVFBJK=>dPNI z&&C)h2$zI}h=hcIgbe4Z@rA*2;tKpL?$2jNu#b#r!0mWdnfdv#_UhyeXBHCq2cH%C zV?~S9FmagVyL!@O^vMBNWq9eu0H2nnOcGTg1LeSA*mlbug;n-p47-Xp= zT>~EiGSb+fF3N~PttxAx`!B6)|Wyz@6-%SsYb zU!fr(==)5<*(iKjJI;q;{rRhhS6 zaKN3d7`1EiW$(MB2=Sw_EB&6R8E6pNdZ_LtvA1z^oR6v69ZM4Xss5+%)HEvww1rmo z)J%Y6mBbcK-7R<9>f{;48`nfwF`V_Tt4&!+;lhKPzrr|M(fjxoaBZ-*YmdcuYr^_Ufy&1k-b$}v3?WbC%nqZ!KR~Jz^rN!X4iA9NPu3k4Vbg5V$ zXAd5jCv%x&7~DU2ZF;DhqSg^NmQ#ib5%lg);K(8;@NG_@t!;HX<|&C9L*>s81>AFA zvXQz8(h}e*qo>&tNqp4qnd#O0(zG@7+=2OrM6kE_^(9~?=Atk`Q&ST@n1Fx@(8Nqw z(99GFH3I@g1msDzjd-T4p8#BDkt zuQ)Hl%8^b{5uoSg3IiBwTRFn4Q2<>JE7altS6rZWFaX5C24&AHEe8Z>!W``EQM^(> zIe;p{8R4eu3blp-)L>`_YnX-`)C-{EfO5Y9b5ljQxFX;%IEqddpzh#|g1G_IouMe0 z8q6AD0|Q)x!R^RTloS_NR;F`Dxxt_=beKWnD~Tf%6cqK34sz`10guSb|6hL?cKM3y zZ|Gofo1b5aygE$oh2N6=m!#=vr~q`epzcn*hg+fZf8K@vQ@(++aqbqH=|Knh7Fr*vw8({0KyjsO127>A89n&iUSCF?wzC-ec@u z1ec0fQ^%vbw;Zm#<~>iX`yEFyhfFMb;u4MDslcL5FUn3FK}DmSXFIZn%}J@Qb1YV) zZfw6VVJza)2M|bVVN$y^PI)_uCfMwN$OZC%=_kppM9y&`uY5W_WAg?3R3!d+J*9jN*)3r&q^6SbFVf?|1W?VD~?cZQ;ZY zhH%)L?ScR!?+HkDF!!gaTmpK3&(~py9C3@to&~mmxr#^wCY+?-1Ul{2J@^PD_=qth zZq`cz2hKHdgJ|S1H(S$)SM5fgNx|lasq=9-IsIDjr;rd3&-h`o<89CWIoS~;6vaQw z@vkwvi>@cr&)Itz3Cfo2^N2Bl%Va?1sh>ty@#S|4!}Tk2%ZYhiY)R<7UP|b`~X0Dbz9D=Sqpz;cIN5oPu<6VUlEZGqq1}xEp#ZT%v`zhtHbpYp8iyKStSyF($3zL{ZyyL9oNRdP}U~X`j{x%VCf_PKkHdJL!u* z$88AM))fd7VzvDGqKNYMwe8POOXDfs;YZ+DmCKd$^XNq&P1Co%=N2K&jlvk%k*UQQ z1MKCXEhU-7SNsWJn%ZLNg`e2q3<{_P@7eT>^dHtv9hmyAuAXRVO%@u<^qs&Mx4a4i z>$Qr+y$EG_*cJuRqQ4Ya_|)o1=|%3z-=*sxEPa;%9gIVp?_{!xsQcrJj`Zl+Oj$qv%HcCjn2U`TX1c@R)t`dyqB-ey_|w#w>k}W+*jVT zf&~EXLi@f!Us60pp&f4|V10_en8D|g^|No5Vb6nwb||c<%LP<@b8x$(1>X+oyXtAm z4gs3?f>Wd})xbB>3K)c|I+>Kv8F9yzQJE;r*bpIdp+*|MWi|WJj}1{W5sSm!FrU`j z5u5c)Px%76hwXd7Z`^)sH!>Qb^gQM~eF+UN#>U*G9>~1n{o(SI?B>QPBlk;69zV5$ z2`zaqHO|x;3qgK}S}+nhwGuhv4jqnM%OQ>(PKq<;D*M#OeyIXs8jK@wZ73)K3b4O+ zDu51lv++CUz^|QbKiAD(_qbPOE9p)ql&h}D_@UG6OiyIdB>FIK?zx$TkQc-8=5^T? z&za~2Chx9fY}Lt#oK-y4;Ij}}ccyGAq9>~lUNI4i#oY+F)S|7r-LR3yMoR;LCuxyT z7ukQAZSHyJBEAXI*p#b*i&d?J7MGkH7epRo)%=E@ksxL)q!;QFSrE4gs!$Zkx4(vy zr|%)&9)FR7U;@)>yZHMJ2Nz8qEL@u_%5L6Yg4pKnRc!w})%-c@$@AiTB2U4?;9n}& z>@w$`VBFj!^KYqG$yTX5Ktr1z3X2xB*loQ|esu>roe-+G6|_CXgu!YP+fYHlp-0=fX75zeVt^jF?)a1#^_Q6S^VrgH*c z2zzcmM;_5RiN}>U`T2DNd?ylem3ERrj2GVRd2AA1kxP}#X$DRD_)z%@Prf~;iNh#& z!{55Fk-=XBTy)RY*#gzcF9c>og1NW5bOg;lFjuinj&@oP)hRs}dvq8n$Pa0#vl5jG z;NBe3pg5gfsHqHR~S(TL}|q@{7Un zZl_6QA9jk7H?lT2k!(sw8Q7U|{inQ}>C(aFL>B{~8IO z*&&6^WH*m^T9p)U%?lG^W;F6~OiOi&3${MyrRt?4k9yY<7gr&jcE#RV)9Z@)=V}ra z)U)CFGrvOou;Kq>`SKgU|EU1_-4k{K0G-67B1A{6-0t*3(pQp@JyO~X*C=<{&fFkg zp)(up>rSS~x<0ipeWQcHAnR~DQ6c5!v0}>*MvY>?*qKNR_BB`9tWKQ&g_VuiT zk2_HJk+Z~wv9^iW?69}7KnUr6^ST(6K zw|F=(AAH)A$|Y?2d3g1|0t^c%t-kGrYHXSdaaYaM_U22LA2L0i~ z9T1(Z6hrRPne7%lO`4%td;}!wbfu1bp&hc{*;6wcSObLD_Ik{wI+!B*;5SBl24l0q zDJvI>eQ~QHLk?HiK!iW3tLz)B`XVn`pIUzf0lT^N7Q zq8$WF^l{8Y9dhTX!l6$xUHdpJcMT~I+KjF>B6H5y{sVrjf=(vOaK}RmeXlNE%82_= zqWr!DhG9lOvyiXXfnQ#9O*>?U$DHdzcjUVbnT#*=sYeMAl{7y_^e@vND}WqI6=E{tZ1OrFlc(v+0)Uvmh5QG>|+`D+H9U6mx+o)BRi+D_^1N@#T=v^3^oB2azcNi?X;*!!p1cqp?!EGNz&S{dbG$Wi05 z*{a`-mvO5hj-5&HXDh9a4lOf4*si>xum92;DtiX5e@=42(mum4avQT%{mo=bnSZgY z^EhFC^1!x24-R%QGyTG)W|3Q|*Zd9=d!fvGJ6C64;&8#|*M?+j3ON^Er#9+TMjHFG zp_8>QufRV?ORTru5u0M^1E+j8TmI;5Rc;UHeT(8<+8anBba8i){T~-!J6Qj8u2ZIh zSa{WZ2@*-&TLTCe#!3~YEhd(3pqY8dMp3jX{6VY7cOQ@~jr))sN7ZU@O zQ?wrdE|d?~H#@-=T=Pgm|C?7YcE%?F3GXkBV#SK?Z5z+|v=V^%c?r|Tm%X=gb9@dQ zP34lK_X{CN@&L)a69r%l<2u`|t!j92hs+XI_cFW(YL-6cxx8cn|AdvH#_NbVsudAP_Nu}p*%N#xr_dYn@`uIQrM2jHV zFw&XFH017^S-g~kWLAD*D!-hW38krXwKm+_!F;s;_}cgGUrnP4l}<@|vY^yI%yv92 z-Dkz}^}WJkcjFBd>%TLH=LXf>5K4+?9j%M@K6H#)a|taH_ZDyw5M2fBs3EfZvU~k` z0veSboTCC(IfPcNh46F}P0DkFzwBDfSmuNcKZU=ETVc?Z)kIMPK)(#!mBW zHWXZE9NLOP#Fdf=jZiMq=GEC!o)PwhHUy-p<>500u_vWzTxF9B{zOcy&{1|Dk zyfDPM^MY|;VU0yv-g?IS)GwCYA0uutB-;znZ)(r_@03}b-khjAn8G)ccBZ;UEt1LP zd(1*4-ZS+x+CI-d@<17^lod16@Ke&~Ly^T;X9_38IfTA-(GP06cV6f(9wG|rF7a!l zSRtJX`&JqLjq>c>Az>{08v}M%@hqfOQwOp~+2S`;oWFi&K4(dkd1$-is>318aAWo! zGRculUpeYIKi| z=#RJprlF0swM-WtQ6}LFJ?{}u{4svykPSIYmq(_$4k<@`iG}W)pm`_4gjKB@WaSIu z=$yC7bECOChRIy^Pcp2HdPDCUSciL_q!O6n&QilX7zXQ_8uNd#zKV!s-W@E^W>WaH zlBi>JsbtL#kx)vWgwOZIOu;n)*27ykoyMRogWyvE?*m|?6<>}*sDOT-`I#V1!JkRQ z^xy&OA=&&|en#Rcrvk43^=M8){I|2Y|Nfj3C@cB< z$8WoxsG*N&xZFek=ttV~cN4;Dl~YGh%)P;Q+7}86Z}^aC#SS|s^Z~>0cY*KJkBjub z{5ZaL#&}+(JuK2J0U`|YW;zwvIUOOMA318jbEZhhR==R%nvu5O4^OT0P2Zfm zMeHfnP&nd-RkNg) zoA#d(mi1A+FYXoGo2Ae;=e^(a;C`xEp4d+tjwkRoBF1OwsPAhXyTf%UVe*MhqjmU? zdK5+xC%S11JFc6Tg}gP&9i@N7r6kW0;yE}`vam5~Syfg&Fi~<%6G>%Ga+sSdktl#a z@I8jPL$KGFNGbImkUy!Ua|B}qfpU(~R`X=%n=?6v>D0#r*5o&-*Qb=CX&RcGXG7ne zGV-wQzIb4NIUy^5q+8|jSrg%R$7U;^k5K7Tby{dhn^LAnG)OhiQK}1FRFgJ*V}JIZ zl>1Sq9!icbAJwzx9%r^1GxJ>rc~;7E<4-<5Yg{SM|A1GyJtd#HB<;JCYLtC*4KGh$ zwq=5}es3+HcCi>GS2yYHC1qEcOmY@e0~Mq6HPt{qrShVhXXl`nThLKgqipIWQZ@$P z4t%%tfC)~;xI{FKTvOy--qi4n6(e2hAq+tRh!w|{^m;B}D~*+RsH1mZOZ`o`OaE`m zT~ZGC`*JsnHgO{Gp1d`-ChR+GDaL13#i;VgN$>-dEn$;}UCCCZ`q9z%0icX@W)^^N zvpZ-iT>));RL@_I;7zNk+0KoTQaEaV>*n0!XW!#Qp2xwno{F{*6iRsXjtH$RaBqTo zjxa6fQn9MjL`6_@=dOrU!*k?j2HCP%b&r(@*WIJMI?=5VfCf=xV z^IRxUzBN}Y{?vgksAcH^mU%IBadVi#weGbtHx2*By+tvs@|8~mgU9r)QAR&@iLDZX z)HBc^1SvH(XfLz4^NKoNN0w0AA1npn@{Yc;N(|eaKJVCUH^k@Nz8+_9V)yI>aWfH^ zI4ap2k_u6XvC1FCeFS3>jJ8GYFM_3mdr~rw=ZpgdoffR(J9r$Yq6PjY*}uD7@ymS* z)hlZ12srBSu7$Yjf4CVT@u#a1Fg+(%7X6c>TCvXQFDzB5its+C)Q&&QQjEKOoktU# z&g?)Ch%)?cfX|`J`3)cAk<-Q}=J{|UPkL{6r881NRkBYCE@PSWu#YL*C@5P9n>2)z z%`IT$V#_9$>%mIYOk1+g^ssxa!c3JEPo!Wxd*oyRBq9Hqp^0Sn^XkyNvU2x`0sZjy znL>;Xu5m&S$=P$`+}#jqu^77VpM)R;G7}#b$8t^?Mx(r+3GJEcXc5G#y;Ous>p~@E z5G{#?T2epgAD2czgT5oY5OJ1Nx0b@!;U!F0>iX#N7SywPTFPsf5SFR0>`n1;F0`1_ zz$&&jDbATrtwzNgHWb1lNy*RC+~sdIx=;%x*b0#c2XXRo@U^mcMzvh{G^SG}~Zt+|3k_RG!>piblfj3RXQw%@&5v!HzDm0-nN@ zUbbLFnb_>M5tDT9brDEtp=kXoUg$ZKyH%icBJaRGoSxu|)@@WZ6OXQI=*^xK!PVLy zG*?_Z#En@r$fqMpHc`?|)By&hjHcZsWtGa^!7D6{y|16Ea(G3ZcOD6LL37OQQWG{I&1Bk0kIin_wKX1M&joa`Y{e+VafiXCEz72YC}ijM~M^BN94J z9AV$9lo4t`>+TNu(DW`IdY^AQwzDH{rVK%s*sLg6?L?^^--MaEbJ5(7I*hP~PHiS*; z0W2FwKb+?%8Ml47J?eCYKf1MSt80RK;&`}sPW;qbdMxVulsn7Ia^4GE^-W8!Gm|CJ zol2M(MK9)6rFHs*f((@OBrhlFLpD_;1M{PWSlV~ts~)PbvTVTSD{d!3+#KlF@L(6KjzFaxAEf~;X&uxKV=#8 zUrM>jyphnBki}Z%1U!ji7@SQ_u-OYbz^G;?x%(Sf@8z8w7jU=vFiT$x-$&A)0{O(W z%>`^ObDVysj3ZTO&fF~P!8$%H%cfDye5-M_wKss2qoS^6b{g|sV{W)gC+mq&TOwqH z`EF!tjUSd0OME3BzT7i)hq8w4b#!;wnmuvqywm7~c-@#Q&va#EUWsS39V;mnxU9C9 zCWzdtg7yHD`QR5Xpgc_$2N60M)7AT|g@yJ-&>x5*@EyyLT1!v3g>uREIwQ%*?I&FR zSm)d3{KX1CjXL{+e2N6=yeHG}f@h?-V*faH#w*}($Z$|= zF^-_tcdfl2^yJywTXDd_Pm-2SGA-EqZal87#OKPP7`k z6G&Viv0g8JteN|alDYT^%?$;!MQKBU5oM-b*3>KStDQb*q9ycG{8nS)-*lsyqqx=O zWbb!amkq7jJfk(-z3ysD>-riIsXlWukEJ0N?qd@>@1&)**{!Kjadn`^Z8-jp;<0;9 zosxAre zykx@~cLPOI^}6p#=X!X23}-1x&o9qA@vQJ1G3Z!p>Z~eGTc|a;G)oYZoOElhyyYtE zyK5Oag5@-=sz`)-Nn#fBK<#8>c_d>jHecLeZ7jA{lr_1V+0~CVtNO8sA6#M*x2_Cc zmy#_VyP!e^5r-EPNM%31lwRi|>+v-A%eC(pGXyV15PkoO8Us(M|EhEBg*u2zf& z^!(k6!X$ez$)JskOTj#8$U$8cd_)|{5R(JoKLYMnfp&RPJYymn51d3OJ{D}_W3fvaKdx!?| zQq4pWC}k^YZDnN*l$M3r+K2;fWUZ_v#jR|tWn`?ZZJ;*F|MNG@0J;v|Fgi(b0K`Os z{AfwD|3FwS$o!r%T3cFflhQ&0v4MydNi?694) zrbpFF){e8%XY7G!!(wkraMfGc=?T*ay&Hb@l7a#rP4nchiEu|j-B1`em@S=zI8auc M?)>@7+Uj)w1yE&cQ2+n{ diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index 75f50ecbf0d9..040b2e714655 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -257,13 +257,17 @@ def test_pdf_pages_metadata_check(monkeypatch, system): if '/PTEX.Fullbanner' in info: del info['/PTEX.Fullbanner'] + # Some LaTeX engines ignore this setting, and state themselves as producer. + producer = info.pop('/Producer') + assert producer == f'Matplotlib pgf backend v{mpl.__version__}' or ( + system == 'lualatex' and 'LuaTeX' in producer) + assert info == { '/Author': 'me', '/CreationDate': 'D:19700101000000Z', '/Creator': f'Matplotlib v{mpl.__version__}, https://matplotlib.org', '/Keywords': 'test,pdf,multipage', '/ModDate': 'D:19680801000000Z', - '/Producer': f'Matplotlib pgf backend v{mpl.__version__}', '/Subject': 'Test page', '/Title': 'Multipage PDF with pgf', '/Trapped': '/True', From d314bed61bf588cade4c802ebd8c6be1b161b205 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 7 Jun 2021 17:40:23 -0400 Subject: [PATCH 010/270] Backport PR #20381: Prevent corrections and completions in search field --- doc/_templates/layout.html | 2 +- doc/_templates/search.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/_templates/layout.html b/doc/_templates/layout.html index e7a540e74967..8c77d82351d0 100644 --- a/doc/_templates/layout.html +++ b/doc/_templates/layout.html @@ -61,7 +61,7 @@
  • Contributing
  • diff --git a/doc/_templates/search.html b/doc/_templates/search.html index 6e285090cc40..aacae3dac7c2 100644 --- a/doc/_templates/search.html +++ b/doc/_templates/search.html @@ -17,7 +17,7 @@

    {{ _('Search') }}

    "codex ellipse".

    - +
    From 9df08dbf9d45b31c9fb165599775da534ba432e2 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 7 Jun 2021 17:40:23 -0400 Subject: [PATCH 011/270] Backport PR #20381: Prevent corrections and completions in search field --- doc/_templates/layout.html | 2 +- doc/_templates/search.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/_templates/layout.html b/doc/_templates/layout.html index e7a540e74967..8c77d82351d0 100644 --- a/doc/_templates/layout.html +++ b/doc/_templates/layout.html @@ -61,7 +61,7 @@
  • Contributing
  • diff --git a/doc/_templates/search.html b/doc/_templates/search.html index 6e285090cc40..aacae3dac7c2 100644 --- a/doc/_templates/search.html +++ b/doc/_templates/search.html @@ -17,7 +17,7 @@

    {{ _('Search') }}

    "codex ellipse".

    - +
    From ddf292cc364747b61b153e4118d76f51ed8dc449 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Thu, 13 May 2021 07:23:19 -0700 Subject: [PATCH 012/270] Backport PR #20154: ci: Bump Ubuntu to 18.04 LTS. --- .github/workflows/tests.yml | 28 ++++++++++-------- azure-pipelines.yml | 6 ++-- lib/matplotlib/backends/backend_pgf.py | 3 ++ .../test_backend_pgf/pgf_mixedmode.pdf | Bin 10967 -> 9822 bytes lib/matplotlib/tests/test_backend_pgf.py | 6 +++- 5 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e5d7e064f55e..c5e532ec7217 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,18 +22,18 @@ jobs: matrix: include: - name-suffix: "(Minimum Versions)" - os: ubuntu-16.04 + os: ubuntu-18.04 python-version: 3.7 extra-requirements: '-c requirements/testing/minver.txt' pyqt5-ver: '==5.8 sip==4.19.7' # oldest versions with a Py3.7 wheel. delete-font-cache: true XVFB_RUN: xvfb-run -a - - os: ubuntu-16.04 + - os: ubuntu-18.04 python-version: 3.7 extra-requirements: '-r requirements/testing/extra.txt' XVFB_RUN: xvfb-run -a CFLAGS: "-fno-lto" # Ensure that disabling LTO works. - - os: ubuntu-16.04 + - os: ubuntu-18.04 python-version: 3.8 extra-requirements: '-r requirements/testing/extra.txt' XVFB_RUN: xvfb-run -a @@ -128,10 +128,10 @@ jobs: ~/.cache/matplotlib !~/.cache/matplotlib/tex.cache !~/.cache/matplotlib/test_cache - key: ${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-${{ github.sha }} + key: 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-${{ github.sha }} restore-keys: | - ${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}- - ${{ runner.os }}-py${{ matrix.python-version }}-mpl- + 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}- + 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl- - name: Install Python dependencies run: | @@ -156,12 +156,8 @@ jobs: # libraries cannot be loaded at runtime, so an actual import is a # better check). if [[ "${{ runner.os }}" != 'macOS' ]]; then - # PyGObject, pycairo, and cariocffi do not install on OSX 10.12; - # pycairo 1.20+ requires a new version of Cairo, unavailable on - # Ubuntu 16.04, so PyGObject must be installed without build - # isolation in order to pick up the lower pre-installed version. - python -m pip install --upgrade 'pycairo<1.20.0' 'cairocffi>=0.8' && - python -m pip install --upgrade --no-build-isolation PyGObject && + # PyGObject, pycairo, and cariocffi do not install on OSX 10.12. + python -m pip install --upgrade pycairo 'cairocffi>=0.8' PyGObject && python -c 'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk' && echo 'PyGObject is available' || echo 'PyGObject is not available' @@ -180,7 +176,7 @@ jobs: echo 'PySide2 is not available' fi python -m pip install --upgrade \ - -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \ + -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04 \ wxPython && python -c 'import wx' && echo 'wxPython is available' || @@ -226,3 +222,9 @@ jobs: if: ${{ runner.os != 'macOS' }} - name: Upload code coverage uses: codecov/codecov-action@v1 + + - uses: actions/upload-artifact@v2 + if: failure() + with: + name: "${{ matrix.python-version }} ${{ matrix.os }} ${{ matrix.name-suffix }} result images" + path: ./result_images diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2ff87d0c71da..2c25a7786288 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -6,13 +6,13 @@ strategy: matrix: Linux_py37: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.7' Linux_py38: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.8' Linux_py39: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.9' macOS_py37: vmImage: 'macOS-10.15' diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 9d01f603e021..522418544bd1 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -968,6 +968,9 @@ def __init__(self, filename, *, keep_empty=True, metadata=None): 'Creator', 'Producer', 'CreationDate', 'ModDate', and 'Trapped'. Values have been predefined for 'Creator', 'Producer' and 'CreationDate'. They can be removed by setting them to `None`. + + Note that some versions of LaTeX engines may ignore the 'Producer' + key and set it to themselves. """ self._output_name = filename self._n_figures = 0 diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_mixedmode.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_mixedmode.pdf index fdbb20349c42f67ed7c36d2c51ab80ddf9219019..fd7cf7a5c0d1849f2588809771c179c101a99a00 100644 GIT binary patch literal 9822 zcmb_i2UJtrwnZr-O+`RDSU`GB=+y`qYNQKNL+DKiy@P;&fKm;J5L)QHR{;U3Lg-xu z=>Y@;=|Aef|J}m9|NTGS7-x(elCZM&+;h&g_TGmDa$laCp9e_9vap5uP9((4$LwHg zO(Y?~tLfng)@o}Xaa@t-iNtbL179`CLX-^tl-WNm=nms&e6dhW)CM4!F~#LFoQu%oa~&jKlA4= zFpK<(TZfLjs) zh54nVh@9b0FcUi>_esnk{{L<*u>Nk`m5dD-hg2e%z1e@W2z&QK6T<(}#$ULuu5gc6L&e0|hWUqr z)c?=o`LhbJG6CCT8Sd!tgW=3@Czl_p`uB7rc)o6k_<{c<9A=;ZztA6)Gc#2*t?h~r zv5#?iN$c7cg?rTEc*JscrXY(lVHW!QzJz3LICvo{lWAPzE!jh!$gd4D+a>QkR*|gQ zkIs&yLlXSB{QwrHHV3AJ$2+Gg&Wot2u`Z-<(`lpV&Kky{4 zQR1tbUR><;q>CLQwc)FZTZVLvkG^5ohgYeGDrl4+X~wFV_ntP??jaEA$x;kc(48k> zG8d`YWWnMf1g~1+0^BHd7HH8VdWxW5tsmO#Lu^JnBne70`l_hzN7pixNcTQ`8-4>#ozvCk znhdnaBWO<-Q%G!@o($EC)_~_gkI==Pu3Z~-_lvazTpwku&Pjeh-l+7sKDz$oQRo83 zYmH9qt;PLwGQ_4V)&9C5N=YvbjKABM%3}ny@bw5w;BKs~(CIvRA_}xH3?y3i+E=O% z)h=qSiT?d+L2tYUpd zG`ECotCzbIHN0#|-|V>bi50bs`}Bwv=^sIqQue$zvXOgU5*OUvFEYra;r;>*n^FLo zzsx1$yF1dGbAZqoGz3jeTZSGe=Jit|`?i;f6)-zmMXQY2zSQRvnysr0 z=rPzC2d3q(V5XOiS9@tBNsxfF${ zVD0IJI;EEVsyA%8^v0HX?&Oz+RGxgbvw?rH8IbnuVoaDUElkLC-0G)Sgx~N6U2-Qs zAE6Ip&BCF+wG|O^4m`!NJKyvKcV`dL_KIzGOn>`}{8=hQyx|eI6vF+n@ z4movuYA>pYNgb_27a41(0&+=iaH-{5b*W`?(2PvzGF-ozRuBDzOPFo?vlViPVeSrMf&Xqjv<&_SG>4$F_;!_r${qe68MS*5!6rK)6>W<8Sg zlWL7>%BM_~!>=I(iGcgxrWc-qTaKgoJqNDH)*nj9H9F1>TzKb(bG-TM{o1CTFck0^fFbHDWYrcPG9+Tn-wql#66UMj6MT796Lxl#hgb{KN71#}A zZ^VTpWa`GH@E}&lC5iHG0oQBrPBO$S7_!p*;wU0Um+||w2MPz{?`9z@EnEuVGzX4a zSq!pk<56Xa>~$*+sJ#@izK8t1!f^k)HwP~KW(HU?|H{u*0Q;YAvR2D)3TbG0Fh=vy zWA^RoIjzn#WkaL}s{5a^jcgoqeB0BF3#KzhIOdz$(~++Fz7#3k9vg}^r8)Ygmc-$5 z^GKf+6FN35vGygbOfdDa9EKu5f>fm=k$wKdomu>ojOraxPtb`Pt~=TJtf`+uio%;K zl|bJTDg%mS>6X>YK=^0HMLtp2qgW!5(SF7dt~$FG7C97M;vN!h`jC$*KBPBhxBR)o;zJ^aL3x9y@dDZ|iA=&COmH~cD_|2R%5G1@&PV`t_H#$P3H z5{t*u`FI!w&gBR-qU=ay29d!S2dShl%P(xtoN#8)0dFW&y9VJDC{UbUyYR;Y{ z`n)>~S;ppsbRZj_iW}L=k9t^^nMMj+)JH!;l(s?`+qfULY-j93S9X2)XUHjgl_y*- zt&LeG9VSVHEIlh7QRuBpe z87JUSN<~Cl6x8>5*W?|I!WQS5#!-N{pJoe&F1H~MDI%dG!(fUG1Tvp)2`&}Mg&G$2h*K1E%SxOC1yv6bdK#X}9iigh zhAWf?9>Ww2L8bh5;RMhw&svsx4KVR8mJC6HqbxNmk2ES+eR}lj8%e=nfhjy~RGN;& zhx(?qiP@UWX1zsQ2E8q@VbBpo|9c4QxBm4=@U0wp(q*Xi5C#6ZUWpxZ8`ZI)N^Qbx2=hNs*c|9jEhmG;>L?wAzpiECDK zey}F)(yh{C$qOh*F%M}>mKsF1M#@F&aCKLm-p@krLRz9S$qQ%{wXbDe8KIJL_o;LL zN>}GlC1DtM@b^@{+!00*}KZ&xsQ@L z?cDcjGH)7QsNC!;Q1k7mlbl`2ZeH&zh~CGuDAsBwR#QTCHRgS}u!(Y5#!emC?- zW&Xz2k7qp_bP<8vOqKWZWvq+igfD?qj;J)s$8N4VVWDf9*mi%oh;1l$utn{sb^S7rU-efU5z5czfhV{U zeTI?}1ZgIE_~oQk@mc6d?c2!owww)Od$e9>IBGNvK*95Yxc^mLNNWc~g(_rZ5@ScG zdSf#(xz5KMipo}Vtuu3Yyo(c>g{+;UqitB%$2O&=9JaXMh)jMI{m|cv>K}@}L@#D8 z-$C{^a_^|!x0C72LWgmLs>-;4zRa_qHZFv$E43Qtwpy}uTPsGai*_~#^J(^#?WS6V zIomoLLtykKb#L#47o~)|3D(sNLl-I)=LUTFE5BiDElP>QsND40+oki`==D1sR3kaw z6g+Dyg4f^hAGDuRZA4zyBX^1PJvK^AtA9dB7SFxLE-tMhJHtMEwBz2M?n@Ve2C-xz zK_%eTS9VE~;-LwQmg-k5ba;VOt2)^J1Q601JDD%};VF1xnTRP}4-xV^-Y*Ro&Wwy`X_n>gw zGee(Re9q-orn9*a`%t|Y1p14}r|~*iVJz)26GkVIMtlzzcn<>Ji!Ge6uf-JC2l6a` z4h~gxZDoiNf>fIhCQ(L=YHaN>9QM8o?S50w9GJfSkP6n-)OC=9#X$5t48##j(0aad zRwZToiRiN+#nw9cP!8E4R6&=rYu$p|32;hxI3GZ0g zbm$!}42b8tNQd?@nHeR)&H`o_0|6gcN+ztseau@+xyQw;7}A#-@UoD1a()b*@tmds zyFfW`cOc{L#I`SA;wU2mDeu89iz{LfKz6EN{U_EdZc|fd3K^%0RpvPaogDkikoiWR za>Wu~7F&||&M94NWh2_~U}%$*kS%3>G?`yJ9Uz<9i$R4>h?KPer&0{H%T6r`)Hl9xP) z^sJO=%U&Mcgsh3`^41MS*=_#BSP@VK ztlM=VR^-v2_~sg7!P(_o_ObaZeG2y@S>X_t#I)d%QeDlM+`6^S8$7qxvFjtLCOg%= z4mllc`w%r4zt2HhxP+Wq=^vagW67WI$GjGMja`-(f2dwm{-;*vU~Q;=5u(neS7tg$ z^}O&Aou!Hx<53Y!xc=Q19cy^hk(h zNoka%(X9F8${}Z)7@p3E!==8s6TbqDRD@&Sz<9B)W*|&`o;EHTn=2$JO1*jG;V?1h zOt{CHk3TlL>*$-W~gH|-;!aH!j@L7**Y<#NyI32$j8Oks{f8G=I>3p zS^Q*{zU~q*4Avt=h5scoNlT8WYbB8Cy z1cH_<`v$6)s{0Usubp2F_m8a<(0LTSsh zOy?zQ5GUFLa)OWQ1!?oM=5CK*Y`b(Z)qy!l1-35-(4!{ z{C=;aQLK6{l(&Cu0n)WvlL^>8IjCNMOVgiKi^k$rVtbGepmTbVb+gmX=~Itmu{eX` z-223ei)jEj^;D>*xEyzwo9x-L@2gl)VW_K)StI_GVbtJK3`Il?;^sP&UCT;Y2gIYn z^dUxvi?*X+WhfUwK^3uzluW1ykZM47?oGLgR59g_E!p-Bxs=vb*P;7)LwnK{vvj6UD>Mu8>h5yp$5_f8~oze%cc zjKs(JSWtA>4KuxoZ=>mPML_}sdGc7d+XqwlZVtNeWb+F$+K?R{n; zQPJOTQjQ>$9EN1B`fnbGAK)VTp{eBeAcpDH0}tr)82!=A!xZXdCr7=LVHk?UaMp{( zI=(8d79Bg7N%2RzxVVo@o?RrT#Pv3uIMJU+5Q>t4%j| z3*dXXpVkj$zHxEd`@(k|M^d|~Sf}p<*)?&=u&F&)PIrg84<8$@8SZ-O4CM3d>+qSc z=Gm3p{!Zk0na}UN7%)p$`mnUY`*b_FE15Jw+D&465U$~xb~!AFIMQLAFT7_`sn|7h z;YEBb=V!wMjRP_omION-ZH&NYAmMc}BbvSO0qMI%3>^o9qafGhq&1 zPZlEQN@s`EWgINegnt}y(-3AF6xitV)(BCq;j_9{p^WB-8Cl_)lLQPsfm! zXM(S&$$D~SQ~F9wXI6|lZwe@y7G4ECdsVYNUEKCoQ!E}eDf7b0*ff)R^}~rLt+h{t z6A=(yG8SuHB)zj{^$y+q_&pF!_=WxPiHDH_C}+2L;c+mazyV5BdsE>qWGBCXulBoufFSF2+gm*%H7Fk>(hmOK&fyDfUW zIvYPZgzGNZ1URULvqNzM0y2&vnXbNCPVcla;x$Kx%77jrg2d{;Z? zc66qpoouJet72D?8hFSVc{>`f=UpooftUHEzR#&$Uuh$Y*#d8PB_0uYXlbhJ5;i?I z1?pJ_FA!V;(uNEe-@OxN`Y~`Ke!AZ?5BwrE_cTrN9^^Rg%l^s%yea2RH`}yf3Ek$f zt;3jrqCa%4yf{|=nNCr-CoR`rye(xW`vpRC1a$$z*m)tZ1@&cP$PsYQwWRh-Wqqzf z;pTWo#nl)t=P$R;B(p`xk^}&nt`E?TQ6y-msOM=5XS3Ift@ZYl`eGWzdna~EKhQUN zcs{9!mXwQ%$v~x`+|)`l#2onUpFYjOv|8cy@2m1SiL}q>gKEB^u4NTJpa$SdFmK03IBB!KW`DmuG zaMU{fs&_>?W(&>Moe?aOU>!cl1%B|}ROn_$Cm}0ZrRWi9g(c_h`%sr#LAnpm-m_tz zVR8glE!Q%(+MbkXtmaobSMx|GEi0exzD78IcL13c4cw}QxpQLv(G9(3P-!P>-Ok(+IlLJnIBR`d$HELU$2=lQ}b$luH zI^KbMo&=g!wQN@D+cEN~6{kuIQ|`#TBr5o*0|dBcvHeSFWTK zo*1vgJ>((eCBwZ&K-B@Q5*MBEqf0E`@GQTsGqJrv z#ciEtuWcz@EW#W1*}jDv^N4xY0PVe$*~j*o5&JY$IdW(Z40e_w^lV3$f`F3gng>qe?gxmO($o~QF}?5+3w!%p(Fg0 zeA2RvN7B3c&wAN~K;+rurp81nUh+_rcc4O!YOao_HT(gnLlAHY%0q<1VL$7XtKoQ zG_I38(R&HWi%`G+?i4}Z)=VdF*JkzE6RzQ0{N)XX3TWLeZp_LVF0>*vKnChjP^!T9 zayr`1ZMU#L?0<>d3_tNrkn*+LOsSugI|AT4dJJ(`Z&Y<3egOA$etjrC1HUXqKWrGH zGey7__hf5{ciwDY>#QJXS4WGlSu+`-{yOYdZW3ac)Ye216lLxKHGOi)sZs%|Xx%XV zKCeSoOWyRj^7;72`;7-?ZZ>yr9p|XGA3e3a!$H_OyUaLZb9S-E<&5PVFBJK=>dPNI z&&C)h2$zI}h=hcIgbe4Z@rA*2;tKpL?$2jNu#b#r!0mWdnfdv#_UhyeXBHCq2cH%C zV?~S9FmagVyL!@O^vMBNWq9eu0H2nnOcGTg1LeSA*mlbug;n-p47-Xp= zT>~EiGSb+fF3N~PttxAx`!B6)|Wyz@6-%SsYb zU!fr(==)5<*(iKjJI;q;{rRhhS6 zaKN3d7`1EiW$(MB2=Sw_EB&6R8E6pNdZ_LtvA1z^oR6v69ZM4Xss5+%)HEvww1rmo z)J%Y6mBbcK-7R<9>f{;48`nfwF`V_Tt4&!+;lhKPzrr|M(fjxoaBZ-*YmdcuYr^_Ufy&1k-b$}v3?WbC%nqZ!KR~Jz^rN!X4iA9NPu3k4Vbg5V$ zXAd5jCv%x&7~DU2ZF;DhqSg^NmQ#ib5%lg);K(8;@NG_@t!;HX<|&C9L*>s81>AFA zvXQz8(h}e*qo>&tNqp4qnd#O0(zG@7+=2OrM6kE_^(9~?=Atk`Q&ST@n1Fx@(8Nqw z(99GFH3I@g1msDzjd-T4p8#BDkt zuQ)Hl%8^b{5uoSg3IiBwTRFn4Q2<>JE7altS6rZWFaX5C24&AHEe8Z>!W``EQM^(> zIe;p{8R4eu3blp-)L>`_YnX-`)C-{EfO5Y9b5ljQxFX;%IEqddpzh#|g1G_IouMe0 z8q6AD0|Q)x!R^RTloS_NR;F`Dxxt_=beKWnD~Tf%6cqK34sz`10guSb|6hL?cKM3y zZ|Gofo1b5aygE$oh2N6=m!#=vr~q`epzcn*hg+fZf8K@vQ@(++aqbqH=|Knh7Fr*vw8({0KyjsO127>A89n&iUSCF?wzC-ec@u z1ec0fQ^%vbw;Zm#<~>iX`yEFyhfFMb;u4MDslcL5FUn3FK}DmSXFIZn%}J@Qb1YV) zZfw6VVJza)2M|bVVN$y^PI)_uCfMwN$OZC%=_kppM9y&`uY5W_WAg?3R3!d+J*9jN*)3r&q^6SbFVf?|1W?VD~?cZQ;ZY zhH%)L?ScR!?+HkDF!!gaTmpK3&(~py9C3@to&~mmxr#^wCY+?-1Ul{2J@^PD_=qth zZq`cz2hKHdgJ|S1H(S$)SM5fgNx|lasq=9-IsIDjr;rd3&-h`o<89CWIoS~;6vaQw z@vkwvi>@cr&)Itz3Cfo2^N2Bl%Va?1sh>ty@#S|4!}Tk2%ZYhiY)R<7UP|b`~X0Dbz9D=Sqpz;cIN5oPu<6VUlEZGqq1}xEp#ZT%v`zhtHbpYp8iyKStSyF($3zL{ZyyL9oNRdP}U~X`j{x%VCf_PKkHdJL!u* z$88AM))fd7VzvDGqKNYMwe8POOXDfs;YZ+DmCKd$^XNq&P1Co%=N2K&jlvk%k*UQQ z1MKCXEhU-7SNsWJn%ZLNg`e2q3<{_P@7eT>^dHtv9hmyAuAXRVO%@u<^qs&Mx4a4i z>$Qr+y$EG_*cJuRqQ4Ya_|)o1=|%3z-=*sxEPa;%9gIVp?_{!xsQcrJj`Zl+Oj$qv%HcCjn2U`TX1c@R)t`dyqB-ey_|w#w>k}W+*jVT zf&~EXLi@f!Us60pp&f4|V10_en8D|g^|No5Vb6nwb||c<%LP<@b8x$(1>X+oyXtAm z4gs3?f>Wd})xbB>3K)c|I+>Kv8F9yzQJE;r*bpIdp+*|MWi|WJj}1{W5sSm!FrU`j z5u5c)Px%76hwXd7Z`^)sH!>Qb^gQM~eF+UN#>U*G9>~1n{o(SI?B>QPBlk;69zV5$ z2`zaqHO|x;3qgK}S}+nhwGuhv4jqnM%OQ>(PKq<;D*M#OeyIXs8jK@wZ73)K3b4O+ zDu51lv++CUz^|QbKiAD(_qbPOE9p)ql&h}D_@UG6OiyIdB>FIK?zx$TkQc-8=5^T? z&za~2Chx9fY}Lt#oK-y4;Ij}}ccyGAq9>~lUNI4i#oY+F)S|7r-LR3yMoR;LCuxyT z7ukQAZSHyJBEAXI*p#b*i&d?J7MGkH7epRo)%=E@ksxL)q!;QFSrE4gs!$Zkx4(vy zr|%)&9)FR7U;@)>yZHMJ2Nz8qEL@u_%5L6Yg4pKnRc!w})%-c@$@AiTB2U4?;9n}& z>@w$`VBFj!^KYqG$yTX5Ktr1z3X2xB*loQ|esu>roe-+G6|_CXgu!YP+fYHlp-0=fX75zeVt^jF?)a1#^_Q6S^VrgH*c z2zzcmM;_5RiN}>U`T2DNd?ylem3ERrj2GVRd2AA1kxP}#X$DRD_)z%@Prf~;iNh#& z!{55Fk-=XBTy)RY*#gzcF9c>og1NW5bOg;lFjuinj&@oP)hRs}dvq8n$Pa0#vl5jG z;NBe3pg5gfsHqHR~S(TL}|q@{7Un zZl_6QA9jk7H?lT2k!(sw8Q7U|{inQ}>C(aFL>B{~8IO z*&&6^WH*m^T9p)U%?lG^W;F6~OiOi&3${MyrRt?4k9yY<7gr&jcE#RV)9Z@)=V}ra z)U)CFGrvOou;Kq>`SKgU|EU1_-4k{K0G-67B1A{6-0t*3(pQp@JyO~X*C=<{&fFkg zp)(up>rSS~x<0ipeWQcHAnR~DQ6c5!v0}>*MvY>?*qKNR_BB`9tWKQ&g_VuiT zk2_HJk+Z~wv9^iW?69}7KnUr6^ST(6K zw|F=(AAH)A$|Y?2d3g1|0t^c%t-kGrYHXSdaaYaM_U22LA2L0i~ z9T1(Z6hrRPne7%lO`4%td;}!wbfu1bp&hc{*;6wcSObLD_Ik{wI+!B*;5SBl24l0q zDJvI>eQ~QHLk?HiK!iW3tLz)B`XVn`pIUzf0lT^N7Q zq8$WF^l{8Y9dhTX!l6$xUHdpJcMT~I+KjF>B6H5y{sVrjf=(vOaK}RmeXlNE%82_= zqWr!DhG9lOvyiXXfnQ#9O*>?U$DHdzcjUVbnT#*=sYeMAl{7y_^e@vND}WqI6=E{tZ1OrFlc(v+0)Uvmh5QG>|+`D+H9U6mx+o)BRi+D_^1N@#T=v^3^oB2azcNi?X;*!!p1cqp?!EGNz&S{dbG$Wi05 z*{a`-mvO5hj-5&HXDh9a4lOf4*si>xum92;DtiX5e@=42(mum4avQT%{mo=bnSZgY z^EhFC^1!x24-R%QGyTG)W|3Q|*Zd9=d!fvGJ6C64;&8#|*M?+j3ON^Er#9+TMjHFG zp_8>QufRV?ORTru5u0M^1E+j8TmI;5Rc;UHeT(8<+8anBba8i){T~-!J6Qj8u2ZIh zSa{WZ2@*-&TLTCe#!3~YEhd(3pqY8dMp3jX{6VY7cOQ@~jr))sN7ZU@O zQ?wrdE|d?~H#@-=T=Pgm|C?7YcE%?F3GXkBV#SK?Z5z+|v=V^%c?r|Tm%X=gb9@dQ zP34lK_X{CN@&L)a69r%l<2u`|t!j92hs+XI_cFW(YL-6cxx8cn|AdvH#_NbVsudAP_Nu}p*%N#xr_dYn@`uIQrM2jHV zFw&XFH017^S-g~kWLAD*D!-hW38krXwKm+_!F;s;_}cgGUrnP4l}<@|vY^yI%yv92 z-Dkz}^}WJkcjFBd>%TLH=LXf>5K4+?9j%M@K6H#)a|taH_ZDyw5M2fBs3EfZvU~k` z0veSboTCC(IfPcNh46F}P0DkFzwBDfSmuNcKZU=ETVc?Z)kIMPK)(#!mBW zHWXZE9NLOP#Fdf=jZiMq=GEC!o)PwhHUy-p<>500u_vWzTxF9B{zOcy&{1|Dk zyfDPM^MY|;VU0yv-g?IS)GwCYA0uutB-;znZ)(r_@03}b-khjAn8G)ccBZ;UEt1LP zd(1*4-ZS+x+CI-d@<17^lod16@Ke&~Ly^T;X9_38IfTA-(GP06cV6f(9wG|rF7a!l zSRtJX`&JqLjq>c>Az>{08v}M%@hqfOQwOp~+2S`;oWFi&K4(dkd1$-is>318aAWo! zGRculUpeYIKi| z=#RJprlF0swM-WtQ6}LFJ?{}u{4svykPSIYmq(_$4k<@`iG}W)pm`_4gjKB@WaSIu z=$yC7bECOChRIy^Pcp2HdPDCUSciL_q!O6n&QilX7zXQ_8uNd#zKV!s-W@E^W>WaH zlBi>JsbtL#kx)vWgwOZIOu;n)*27ykoyMRogWyvE?*m|?6<>}*sDOT-`I#V1!JkRQ z^xy&OA=&&|en#Rcrvk43^=M8){I|2Y|Nfj3C@cB< z$8WoxsG*N&xZFek=ttV~cN4;Dl~YGh%)P;Q+7}86Z}^aC#SS|s^Z~>0cY*KJkBjub z{5ZaL#&}+(JuK2J0U`|YW;zwvIUOOMA318jbEZhhR==R%nvu5O4^OT0P2Zfm zMeHfnP&nd-RkNg) zoA#d(mi1A+FYXoGo2Ae;=e^(a;C`xEp4d+tjwkRoBF1OwsPAhXyTf%UVe*MhqjmU? zdK5+xC%S11JFc6Tg}gP&9i@N7r6kW0;yE}`vam5~Syfg&Fi~<%6G>%Ga+sSdktl#a z@I8jPL$KGFNGbImkUy!Ua|B}qfpU(~R`X=%n=?6v>D0#r*5o&-*Qb=CX&RcGXG7ne zGV-wQzIb4NIUy^5q+8|jSrg%R$7U;^k5K7Tby{dhn^LAnG)OhiQK}1FRFgJ*V}JIZ zl>1Sq9!icbAJwzx9%r^1GxJ>rc~;7E<4-<5Yg{SM|A1GyJtd#HB<;JCYLtC*4KGh$ zwq=5}es3+HcCi>GS2yYHC1qEcOmY@e0~Mq6HPt{qrShVhXXl`nThLKgqipIWQZ@$P z4t%%tfC)~;xI{FKTvOy--qi4n6(e2hAq+tRh!w|{^m;B}D~*+RsH1mZOZ`o`OaE`m zT~ZGC`*JsnHgO{Gp1d`-ChR+GDaL13#i;VgN$>-dEn$;}UCCCZ`q9z%0icX@W)^^N zvpZ-iT>));RL@_I;7zNk+0KoTQaEaV>*n0!XW!#Qp2xwno{F{*6iRsXjtH$RaBqTo zjxa6fQn9MjL`6_@=dOrU!*k?j2HCP%b&r(@*WIJMI?=5VfCf=xV z^IRxUzBN}Y{?vgksAcH^mU%IBadVi#weGbtHx2*By+tvs@|8~mgU9r)QAR&@iLDZX z)HBc^1SvH(XfLz4^NKoNN0w0AA1npn@{Yc;N(|eaKJVCUH^k@Nz8+_9V)yI>aWfH^ zI4ap2k_u6XvC1FCeFS3>jJ8GYFM_3mdr~rw=ZpgdoffR(J9r$Yq6PjY*}uD7@ymS* z)hlZ12srBSu7$Yjf4CVT@u#a1Fg+(%7X6c>TCvXQFDzB5its+C)Q&&QQjEKOoktU# z&g?)Ch%)?cfX|`J`3)cAk<-Q}=J{|UPkL{6r881NRkBYCE@PSWu#YL*C@5P9n>2)z z%`IT$V#_9$>%mIYOk1+g^ssxa!c3JEPo!Wxd*oyRBq9Hqp^0Sn^XkyNvU2x`0sZjy znL>;Xu5m&S$=P$`+}#jqu^77VpM)R;G7}#b$8t^?Mx(r+3GJEcXc5G#y;Ous>p~@E z5G{#?T2epgAD2czgT5oY5OJ1Nx0b@!;U!F0>iX#N7SywPTFPsf5SFR0>`n1;F0`1_ zz$&&jDbATrtwzNgHWb1lNy*RC+~sdIx=;%x*b0#c2XXRo@U^mcMzvh{G^SG}~Zt+|3k_RG!>piblfj3RXQw%@&5v!HzDm0-nN@ zUbbLFnb_>M5tDT9brDEtp=kXoUg$ZKyH%icBJaRGoSxu|)@@WZ6OXQI=*^xK!PVLy zG*?_Z#En@r$fqMpHc`?|)By&hjHcZsWtGa^!7D6{y|16Ea(G3ZcOD6LL37OQQWG{I&1Bk0kIin_wKX1M&joa`Y{e+VafiXCEz72YC}ijM~M^BN94J z9AV$9lo4t`>+TNu(DW`IdY^AQwzDH{rVK%s*sLg6?L?^^--MaEbJ5(7I*hP~PHiS*; z0W2FwKb+?%8Ml47J?eCYKf1MSt80RK;&`}sPW;qbdMxVulsn7Ia^4GE^-W8!Gm|CJ zol2M(MK9)6rFHs*f((@OBrhlFLpD_;1M{PWSlV~ts~)PbvTVTSD{d!3+#KlF@L(6KjzFaxAEf~;X&uxKV=#8 zUrM>jyphnBki}Z%1U!ji7@SQ_u-OYbz^G;?x%(Sf@8z8w7jU=vFiT$x-$&A)0{O(W z%>`^ObDVysj3ZTO&fF~P!8$%H%cfDye5-M_wKss2qoS^6b{g|sV{W)gC+mq&TOwqH z`EF!tjUSd0OME3BzT7i)hq8w4b#!;wnmuvqywm7~c-@#Q&va#EUWsS39V;mnxU9C9 zCWzdtg7yHD`QR5Xpgc_$2N60M)7AT|g@yJ-&>x5*@EyyLT1!v3g>uREIwQ%*?I&FR zSm)d3{KX1CjXL{+e2N6=yeHG}f@h?-V*faH#w*}($Z$|= zF^-_tcdfl2^yJywTXDd_Pm-2SGA-EqZal87#OKPP7`k z6G&Viv0g8JteN|alDYT^%?$;!MQKBU5oM-b*3>KStDQb*q9ycG{8nS)-*lsyqqx=O zWbb!amkq7jJfk(-z3ysD>-riIsXlWukEJ0N?qd@>@1&)**{!Kjadn`^Z8-jp;<0;9 zosxAre zykx@~cLPOI^}6p#=X!X23}-1x&o9qA@vQJ1G3Z!p>Z~eGTc|a;G)oYZoOElhyyYtE zyK5Oag5@-=sz`)-Nn#fBK<#8>c_d>jHecLeZ7jA{lr_1V+0~CVtNO8sA6#M*x2_Cc zmy#_VyP!e^5r-EPNM%31lwRi|>+v-A%eC(pGXyV15PkoO8Us(M|EhEBg*u2zf& z^!(k6!X$ez$)JskOTj#8$U$8cd_)|{5R(JoKLYMnfp&RPJYymn51d3OJ{D}_W3fvaKdx!?| zQq4pWC}k^YZDnN*l$M3r+K2;fWUZ_v#jR|tWn`?ZZJ;*F|MNG@0J;v|Fgi(b0K`Os z{AfwD|3FwS$o!r%T3cFflhQ&0v4MydNi?694) zrbpFF){e8%XY7G!!(wkraMfGc=?T*ay&Hb@l7a#rP4nchiEu|j-B1`em@S=zI8auc M?)>@7+Uj)w1yE&cQ2+n{ diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index 75f50ecbf0d9..040b2e714655 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -257,13 +257,17 @@ def test_pdf_pages_metadata_check(monkeypatch, system): if '/PTEX.Fullbanner' in info: del info['/PTEX.Fullbanner'] + # Some LaTeX engines ignore this setting, and state themselves as producer. + producer = info.pop('/Producer') + assert producer == f'Matplotlib pgf backend v{mpl.__version__}' or ( + system == 'lualatex' and 'LuaTeX' in producer) + assert info == { '/Author': 'me', '/CreationDate': 'D:19700101000000Z', '/Creator': f'Matplotlib v{mpl.__version__}, https://matplotlib.org', '/Keywords': 'test,pdf,multipage', '/ModDate': 'D:19680801000000Z', - '/Producer': f'Matplotlib pgf backend v{mpl.__version__}', '/Subject': 'Test page', '/Title': 'Multipage PDF with pgf', '/Trapped': '/True', From e1206cc25427abc0c37df5c5822d76aa85c55f07 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 10 Jun 2021 12:14:00 -0400 Subject: [PATCH 013/270] Backport PR #20403: FIX: if we have already subclassed mixin class just return Merge pull request #20403 from tacaswell/noop_subplot_class_factory FIX: if we have already subclassed mixin class just return Conflicts: lib/matplotlib/cbook/__init__.py - logic is in axes/_subplots.py on this branch --- lib/matplotlib/axes/_subplots.py | 5 +++++ lib/matplotlib/tests/test_subplots.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/lib/matplotlib/axes/_subplots.py b/lib/matplotlib/axes/_subplots.py index 5042e3bbd860..b0a6dddaf355 100644 --- a/lib/matplotlib/axes/_subplots.py +++ b/lib/matplotlib/axes/_subplots.py @@ -175,6 +175,7 @@ def subplot_class_factory(axes_class=None): "is deprecated since %(since)s; explicitly pass the default Axes " "class instead. This will become an error %(removal)s.") axes_class = Axes + try: # Avoid creating two different instances of GeoAxesSubplot... # Only a temporary backcompat fix. This should be removed in @@ -182,6 +183,10 @@ def subplot_class_factory(axes_class=None): return next(cls for cls in SubplotBase.__subclasses__() if cls.__bases__ == (SubplotBase, axes_class)) except StopIteration: + # if we have already wrapped this class, declare victory! + if issubclass(axes_class, SubplotBase): + return axes_class + return type("%sSubplot" % axes_class.__name__, (SubplotBase, axes_class), {'_axes_class': axes_class}) diff --git a/lib/matplotlib/tests/test_subplots.py b/lib/matplotlib/tests/test_subplots.py index 39d48f9340df..7c71067322ae 100644 --- a/lib/matplotlib/tests/test_subplots.py +++ b/lib/matplotlib/tests/test_subplots.py @@ -5,6 +5,7 @@ import matplotlib.pyplot as plt from matplotlib.testing.decorators import image_comparison +import matplotlib.axes as maxes def check_shared(axs, x_shared, y_shared): @@ -195,3 +196,8 @@ def test_dont_mutate_kwargs(): gridspec_kw=gridspec_kw) assert subplot_kw == {'sharex': 'all'} assert gridspec_kw == {'width_ratios': [1, 2]} + + +def test_subplot_factory_reapplication(): + assert maxes.subplot_class_factory(maxes.Axes) is maxes.Subplot + assert maxes.subplot_class_factory(maxes.Subplot) is maxes.Subplot From 2d99eade40597c3ccf59b262544cc87e4d76597a Mon Sep 17 00:00:00 2001 From: Diego Leal Petrola Date: Fri, 11 Jun 2021 11:25:15 -0300 Subject: [PATCH 014/270] Backport PR #20395: Pathing issue --- lib/matplotlib/tests/test_path.py | 10 ++++++++++ src/_path.h | 33 ++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/lib/matplotlib/tests/test_path.py b/lib/matplotlib/tests/test_path.py index 8bd7777eca0d..ed818257bb17 100644 --- a/lib/matplotlib/tests/test_path.py +++ b/lib/matplotlib/tests/test_path.py @@ -410,6 +410,16 @@ def test_path_intersect_path(phi): b = transform.transform_path(Path([(0, 1), (0, 2), (0, 5)])) assert a.intersects_path(b) and b.intersects_path(a) + # a and b are collinear but do not intersect + a = transform.transform_path(Path([(1, -1), (0, -1)])) + b = transform.transform_path(Path([(0, 1), (0.9, 1)])) + assert not a.intersects_path(b) and not b.intersects_path(a) + + # a and b are collinear but do not intersect + a = transform.transform_path(Path([(0., -5.), (1., -5.)])) + b = transform.transform_path(Path([(1., 5.), (0., 5.)])) + assert not a.intersects_path(b) and not b.intersects_path(a) + @pytest.mark.parametrize('offset', range(-720, 361, 45)) def test_full_arc(offset): diff --git a/src/_path.h b/src/_path.h index 784a6457807c..bcdf491ff071 100644 --- a/src/_path.h +++ b/src/_path.h @@ -838,21 +838,27 @@ inline bool segments_intersect(const double &x1, // determinant double den = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1)); - if (isclose(den, 0.0)) { // collinear segments - if (x1 == x2 && x2 == x3) { // segments have infinite slope (vertical lines) - // and lie on the same line - return (fmin(y1, y2) <= fmin(y3, y4) && fmin(y3, y4) <= fmax(y1, y2)) || - (fmin(y3, y4) <= fmin(y1, y2) && fmin(y1, y2) <= fmax(y3, y4)); - } - else { - double intercept = (y1*x2 - y2*x1)*(x4 - x3) - (y3*x4 - y4*x3)*(x1 - x2); - if (isclose(intercept, 0.0)) { // segments lie on the same line + // If den == 0 we have two possibilities: + if (isclose(den, 0.0)) { + float t_area = (x2*y3 - x3*y2) - x1*(y3 - y2) + y1*(x3 - x2); + // 1 - If the area of the triangle made by the 3 first points (2 from the first segment + // plus one from the second) is zero, they are collinear + if (isclose(t_area, 0.0)) { + if (x1 == x2 && x2 == x3) { // segments have infinite slope (vertical lines) + // and lie on the same line + return (fmin(y1, y2) <= fmin(y3, y4) && fmin(y3, y4) <= fmax(y1, y2)) || + (fmin(y3, y4) <= fmin(y1, y2) && fmin(y1, y2) <= fmax(y3, y4)); + } + else { return (fmin(x1, x2) <= fmin(x3, x4) && fmin(x3, x4) <= fmax(x1, x2)) || - (fmin(x3, x4) <= fmin(x1, x2) && fmin(x1, x2) <= fmax(x3, x4)); + (fmin(x3, x4) <= fmin(x1, x2) && fmin(x1, x2) <= fmax(x3, x4)); + } } - - return false; + // 2 - If t_area is not zero, the segments are parallel, but not collinear + else { + return false; + } } const double n1 = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3)); @@ -870,6 +876,7 @@ inline bool segments_intersect(const double &x1, template bool path_intersects_path(PathIterator1 &p1, PathIterator2 &p2) { + typedef PathNanRemover no_nans_t; typedef agg::conv_curve curve_t; @@ -894,12 +901,14 @@ bool path_intersects_path(PathIterator1 &p1, PathIterator2 &p2) } c2.rewind(0); c2.vertex(&x21, &y21); + while (c2.vertex(&x22, &y22) != agg::path_cmd_stop) { // if the segment in path 2 is (almost) 0 length, skip to next vertex if ((isclose((x21 - x22) * (x21 - x22) + (y21 - y22) * (y21 - y22), 0))){ continue; } + if (segments_intersect(x11, y11, x12, y12, x21, y21, x22, y22)) { return true; } From 98477717befd8d3eed693294830ec76ee38d0c31 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Tue, 15 Jun 2021 07:31:17 -0700 Subject: [PATCH 015/270] Backport PR #20416: Fix missing Patch3DCollection._z_markers_idx --- lib/mpl_toolkits/mplot3d/art3d.py | 1 + lib/mpl_toolkits/tests/test_mplot3d.py | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py index a521263a62f2..0d49338fc0e5 100644 --- a/lib/mpl_toolkits/mplot3d/art3d.py +++ b/lib/mpl_toolkits/mplot3d/art3d.py @@ -462,6 +462,7 @@ def set_3d_properties(self, zs, zdir): xs = [] ys = [] self._offsets3d = juggle_axes(xs, ys, np.atleast_1d(zs), zdir) + self._z_markers_idx = slice(-1) self._vzs = None self.stale = True diff --git a/lib/mpl_toolkits/tests/test_mplot3d.py b/lib/mpl_toolkits/tests/test_mplot3d.py index 65049f5f9835..4998386428c8 100644 --- a/lib/mpl_toolkits/tests/test_mplot3d.py +++ b/lib/mpl_toolkits/tests/test_mplot3d.py @@ -601,22 +601,26 @@ def test_patch_modification(): @check_figures_equal(extensions=['png']) def test_patch_collection_modification(fig_test, fig_ref): # Test that modifying Patch3DCollection properties after creation works. - patch = Circle((0, 0), 0.05) - c = art3d.Patch3DCollection([patch], linewidths=3) + patch1 = Circle((0, 0), 0.05) + patch2 = Circle((0.1, 0.1), 0.03) + facecolors = np.array([[0., 0.5, 0., 1.], [0.5, 0., 0., 0.5]]) + c = art3d.Patch3DCollection([patch1, patch2], linewidths=3) ax_test = fig_test.add_subplot(projection='3d') ax_test.add_collection3d(c) c.set_edgecolor('C2') - c.set_facecolor('C3') + c.set_facecolor(facecolors) c.set_alpha(0.7) assert c.get_depthshade() c.set_depthshade(False) assert not c.get_depthshade() - patch = Circle((0, 0), 0.05) - c = art3d.Patch3DCollection([patch], linewidths=3, - edgecolor='C2', facecolor='C3', alpha=0.7, - depthshade=False) + patch1 = Circle((0, 0), 0.05) + patch2 = Circle((0.1, 0.1), 0.03) + facecolors = np.array([[0., 0.5, 0., 1.], [0.5, 0., 0., 0.5]]) + c = art3d.Patch3DCollection([patch1, patch2], linewidths=3, + edgecolor='C2', facecolor=facecolors, + alpha=0.7, depthshade=False) ax_ref = fig_ref.add_subplot(projection='3d') ax_ref.add_collection3d(c) From b74be369af7fcf967d5c6e7b5268250667a9a723 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Thu, 17 Jun 2021 10:34:18 +0200 Subject: [PATCH 016/270] Backport PR #20453: Remove `Tick.apply_tickdir` from 3.4 deprecations. --- doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst b/doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst index 120797270954..3de8959bb3ef 100644 --- a/doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst +++ b/doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst @@ -63,12 +63,6 @@ similar replacements. ``STYLE_FILE_PATTERN``, ``load_base_library``, and ``iter_user_libraries`` are deprecated. -``Tick.apply_tickdir`` is deprecated -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -``apply_tickdir`` didn't actually update the tick markers on the existing -Line2D objects used to draw the ticks; use `.Axis.set_tick_params` instead. - ``dpi_cor`` property of `.FancyArrowPatch` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From db0a179df2d2bb4f6e38b9caacaee331bde70ef4 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Thu, 17 Jun 2021 10:34:18 +0200 Subject: [PATCH 017/270] Backport PR #20453: Remove `Tick.apply_tickdir` from 3.4 deprecations. --- doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst b/doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst index 120797270954..3de8959bb3ef 100644 --- a/doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst +++ b/doc/api/prev_api_changes/api_changes_3.4.0/deprecations.rst @@ -63,12 +63,6 @@ similar replacements. ``STYLE_FILE_PATTERN``, ``load_base_library``, and ``iter_user_libraries`` are deprecated. -``Tick.apply_tickdir`` is deprecated -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -``apply_tickdir`` didn't actually update the tick markers on the existing -Line2D objects used to draw the ticks; use `.Axis.set_tick_params` instead. - ``dpi_cor`` property of `.FancyArrowPatch` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From fd55320ed8b1e3f7e4b55e996942a8b2874c77e9 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 21 Jun 2021 16:55:44 -0400 Subject: [PATCH 018/270] Backport PR #20473: _GSConverter: handle stray 'GS' in output gracefully --- lib/matplotlib/testing/compare.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/matplotlib/testing/compare.py b/lib/matplotlib/testing/compare.py index afb7edb8c828..48feb89f3f51 100644 --- a/lib/matplotlib/testing/compare.py +++ b/lib/matplotlib/testing/compare.py @@ -124,7 +124,7 @@ def _read_until(self, terminator): raise _ConverterError buf.extend(c) if buf.endswith(terminator): - return bytes(buf[:-len(terminator)]) + return bytes(buf) class _GSConverter(_Converter): @@ -154,15 +154,16 @@ def encode_and_escape(name): + b") run flush\n") self._proc.stdin.flush() # GS> if nothing left on the stack; GS if n items left on the stack. - err = self._read_until(b"GS") - stack = self._read_until(b">") + err = self._read_until((b"GS<", b"GS>")) + stack = "" + if err.endswith(b"GS<"): + stack = self._read_until(b">") if stack or not os.path.exists(dest): - stack_size = int(stack[1:]) if stack else 0 + stack_size = int(stack[:-1]) if stack else 0 self._proc.stdin.write(b"pop\n" * stack_size) # Using the systemencoding should at least get the filenames right. raise ImageComparisonFailure( - (err + b"GS" + stack + b">") - .decode(sys.getfilesystemencoding(), "replace")) + (err + stack).decode(sys.getfilesystemencoding(), "replace")) class _SVGConverter(_Converter): From c7f2f42145572e8e708fd2f01ecf4679e6534c54 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 22 Jun 2021 12:24:42 +0200 Subject: [PATCH 019/270] Backport PR #20480: Fix str of empty polygon. --- lib/matplotlib/patches.py | 7 +++++-- lib/matplotlib/tests/test_patches.py | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index a5bb2019db56..07ee830be31d 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -1048,8 +1048,11 @@ class Polygon(Patch): """A general polygon patch.""" def __str__(self): - s = "Polygon%d((%g, %g) ...)" - return s % (len(self._path.vertices), *tuple(self._path.vertices[0])) + if len(self._path.vertices): + s = "Polygon%d((%g, %g) ...)" + return s % (len(self._path.vertices), *self._path.vertices[0]) + else: + return "Polygon0()" @docstring.dedent_interpd def __init__(self, xy, closed=True, **kwargs): diff --git a/lib/matplotlib/tests/test_patches.py b/lib/matplotlib/tests/test_patches.py index 2a908098364e..4eacbac89126 100644 --- a/lib/matplotlib/tests/test_patches.py +++ b/lib/matplotlib/tests/test_patches.py @@ -347,6 +347,9 @@ def test_patch_str(): p = mpatches.PathPatch(path) assert str(p) == "PathPatch3((1, 2) ...)" + p = mpatches.Polygon(np.empty((0, 2))) + assert str(p) == "Polygon0()" + data = [[1, 2], [2, 2], [1, 2]] p = mpatches.Polygon(data) assert str(p) == "Polygon3((1, 2) ...)" From dcb37088718d5dbc200c86a4062c484b3a8c5c4c Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 24 Jun 2021 01:45:04 -0400 Subject: [PATCH 020/270] Backport PR #20488: FIX: Include 0 when checking lognorm vmin --- lib/matplotlib/image.py | 6 +++--- lib/matplotlib/tests/test_image.py | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py index 98e2b5eb790a..efa50758daa1 100644 --- a/lib/matplotlib/image.py +++ b/lib/matplotlib/image.py @@ -534,9 +534,9 @@ def _make_image(self, A, in_bbox, out_bbox, clip_bbox, magnification=1.0, # we have re-set the vmin/vmax to account for small errors # that may have moved input values in/out of range s_vmin, s_vmax = vrange - if isinstance(self.norm, mcolors.LogNorm): - if s_vmin < 0: - s_vmin = max(s_vmin, np.finfo(scaled_dtype).eps) + if isinstance(self.norm, mcolors.LogNorm) and s_vmin <= 0: + # Don't give 0 or negative values to LogNorm + s_vmin = np.finfo(scaled_dtype).eps with cbook._setattr_cm(self.norm, vmin=s_vmin, vmax=s_vmax, diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index 9657968de7eb..38182f5a8a46 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -1213,23 +1213,24 @@ def test_imshow_quantitynd(): fig.canvas.draw() +@pytest.mark.parametrize('x', [-1, 1]) @check_figures_equal(extensions=['png']) -def test_huge_range_log(fig_test, fig_ref): - data = np.full((5, 5), -1, dtype=np.float64) +def test_huge_range_log(fig_test, fig_ref, x): + # parametrize over bad lognorm -1 values and large range 1 -> 1e20 + data = np.full((5, 5), x, dtype=np.float64) data[0:2, :] = 1E20 ax = fig_test.subplots() - im = ax.imshow(data, norm=colors.LogNorm(vmin=100, vmax=data.max()), - interpolation='nearest', cmap='viridis') + ax.imshow(data, norm=colors.LogNorm(vmin=1, vmax=data.max()), + interpolation='nearest', cmap='viridis') - data = np.full((5, 5), -1, dtype=np.float64) + data = np.full((5, 5), x, dtype=np.float64) data[0:2, :] = 1000 - cmap = copy(plt.get_cmap('viridis')) - cmap.set_under('w') ax = fig_ref.subplots() - im = ax.imshow(data, norm=colors.Normalize(vmin=100, vmax=data.max()), - interpolation='nearest', cmap=cmap) + cmap = plt.get_cmap('viridis').with_extremes(under='w') + ax.imshow(data, norm=colors.Normalize(vmin=1, vmax=data.max()), + interpolation='nearest', cmap=cmap) @check_figures_equal() From 4ff782763bc3ab969891ac8e9c403f193b30096a Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Sat, 3 Jul 2021 13:15:49 +0200 Subject: [PATCH 021/270] Backport PR #20565: FIX: PILLOW asarray bug --- lib/matplotlib/image.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py index efa50758daa1..2adb92bdea5c 100644 --- a/lib/matplotlib/image.py +++ b/lib/matplotlib/image.py @@ -1661,7 +1661,7 @@ def _pil_png_to_float_array(pil_png): mode = pil_png.mode rawmode = pil_png.png.im_rawmode if rawmode == "1": # Grayscale. - return np.asarray(pil_png, np.float32) + return np.asarray(pil_png).astype(np.float32) if rawmode == "L;2": # Grayscale. return np.divide(pil_png, 2**2 - 1, dtype=np.float32) if rawmode == "L;4": # Grayscale. From 16262817406b690ef9b0a3dc16da23bc483ea0c3 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 5 Jul 2021 22:17:13 +0100 Subject: [PATCH 022/270] Backport PR #20511: Fix calls to np.ma.masked_where --- lib/matplotlib/colors.py | 4 ++-- lib/matplotlib/quiver.py | 8 +++++--- lib/matplotlib/tests/test_image.py | 28 ++++++++++++++++++++++++++++ lib/matplotlib/tests/test_quiver.py | 11 +++++++++++ 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/colors.py b/lib/matplotlib/colors.py index 0bf1cb7e7ded..9bdae12d6ebf 100644 --- a/lib/matplotlib/colors.py +++ b/lib/matplotlib/colors.py @@ -1535,11 +1535,11 @@ class LogNorm(Normalize): def autoscale(self, A): # docstring inherited. - super().autoscale(np.ma.masked_less_equal(A, 0, copy=False)) + super().autoscale(np.ma.array(A, mask=(A <= 0))) def autoscale_None(self, A): # docstring inherited. - super().autoscale_None(np.ma.masked_less_equal(A, 0, copy=False)) + super().autoscale_None(np.ma.array(A, mask=(A <= 0))) @_make_norm_from_scale( diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py index c2786615220f..ec124c4b1334 100644 --- a/lib/matplotlib/quiver.py +++ b/lib/matplotlib/quiver.py @@ -1147,8 +1147,10 @@ def _make_barbs(self, u, v, nflags, nbarbs, half_barb, empty_flag, length, return barb_list def set_UVC(self, U, V, C=None): - self.u = ma.masked_invalid(U, copy=False).ravel() - self.v = ma.masked_invalid(V, copy=False).ravel() + # We need to ensure we have a copy, not a reference to an array that + # might change before draw(). + self.u = ma.masked_invalid(U, copy=True).ravel() + self.v = ma.masked_invalid(V, copy=True).ravel() # Flip needs to have the same number of entries as everything else. # Use broadcast_to to avoid a bloated array of identical values. @@ -1159,7 +1161,7 @@ def set_UVC(self, U, V, C=None): flip = self.flip if C is not None: - c = ma.masked_invalid(C, copy=False).ravel() + c = ma.masked_invalid(C, copy=True).ravel() x, y, u, v, c, flip = cbook.delete_masked_points( self.x.ravel(), self.y.ravel(), self.u, self.v, c, flip.ravel()) diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index 38182f5a8a46..c635564875de 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -1213,6 +1213,34 @@ def test_imshow_quantitynd(): fig.canvas.draw() +@check_figures_equal(extensions=['png']) +def test_norm_change(fig_test, fig_ref): + # LogNorm should not mask anything invalid permanently. + data = np.full((5, 5), 1, dtype=np.float64) + data[0:2, :] = -1 + + masked_data = np.ma.array(data, mask=False) + masked_data.mask[0:2, 0:2] = True + + cmap = plt.get_cmap('viridis').with_extremes(under='w') + + ax = fig_test.subplots() + im = ax.imshow(data, norm=colors.LogNorm(vmin=0.5, vmax=1), + extent=(0, 5, 0, 5), interpolation='nearest', cmap=cmap) + im.set_norm(colors.Normalize(vmin=-2, vmax=2)) + im = ax.imshow(masked_data, norm=colors.LogNorm(vmin=0.5, vmax=1), + extent=(5, 10, 5, 10), interpolation='nearest', cmap=cmap) + im.set_norm(colors.Normalize(vmin=-2, vmax=2)) + ax.set(xlim=(0, 10), ylim=(0, 10)) + + ax = fig_ref.subplots() + ax.imshow(data, norm=colors.Normalize(vmin=-2, vmax=2), + extent=(0, 5, 0, 5), interpolation='nearest', cmap=cmap) + ax.imshow(masked_data, norm=colors.Normalize(vmin=-2, vmax=2), + extent=(5, 10, 5, 10), interpolation='nearest', cmap=cmap) + ax.set(xlim=(0, 10), ylim=(0, 10)) + + @pytest.mark.parametrize('x', [-1, 1]) @check_figures_equal(extensions=['png']) def test_huge_range_log(fig_test, fig_ref, x): diff --git a/lib/matplotlib/tests/test_quiver.py b/lib/matplotlib/tests/test_quiver.py index 740ad3603a9c..d7a848f61bcc 100644 --- a/lib/matplotlib/tests/test_quiver.py +++ b/lib/matplotlib/tests/test_quiver.py @@ -202,6 +202,17 @@ def test_barbs_flip(): flip_barb=Y < 0) +def test_barb_copy(): + fig, ax = plt.subplots() + u = np.array([1.1]) + v = np.array([2.2]) + b0 = ax.barbs([1], [1], u, v) + u[0] = 0 + assert b0.u[0] == 1.1 + v[0] = 0 + assert b0.v[0] == 2.2 + + def test_bad_masked_sizes(): """Test error handling when given differing sized masked arrays.""" x = np.arange(3) From 3adeb0006860d9395fa5cbd89b95ef493ad50def Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Wed, 7 Jul 2021 00:01:57 +0200 Subject: [PATCH 023/270] Backport PR #20584: FIX: do not simplify path in LineCollection.get_segments Merge pull request #20584 from tacaswell/fix_linecollection_simplified_segments FIX: do not simplify path in LineCollection.get_segments Conflicts: lib/matplotlib/tests/test_collections.py - only backport the new test --- lib/matplotlib/collections.py | 9 ++++++++- lib/matplotlib/tests/test_collections.py | 9 +++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/collections.py b/lib/matplotlib/collections.py index 0e1d225c5209..0213f3cf1633 100644 --- a/lib/matplotlib/collections.py +++ b/lib/matplotlib/collections.py @@ -1494,7 +1494,14 @@ def get_segments(self): segments = [] for path in self._paths: - vertices = [vertex for vertex, _ in path.iter_segments()] + vertices = [ + vertex + for vertex, _ + # Never simplify here, we want to get the data-space values + # back and there in no way to know the "right" simplification + # threshold so never try. + in path.iter_segments(simplify=False) + ] vertices = np.asarray(vertices) segments.append(vertices) diff --git a/lib/matplotlib/tests/test_collections.py b/lib/matplotlib/tests/test_collections.py index d11bab7a022b..536703233978 100644 --- a/lib/matplotlib/tests/test_collections.py +++ b/lib/matplotlib/tests/test_collections.py @@ -868,3 +868,12 @@ def test_array_wrong_dimensions(): pc = plt.pcolormesh(z) pc.set_array(z) # 2D is OK for Quadmesh pc.update_scalarmappable() + + +def test_get_segments(): + segments = np.tile(np.linspace(0, 1, 256), (2, 1)).T + lc = LineCollection([segments]) + + readback, = lc.get_segments() + # these should comeback un-changed! + assert np.all(segments == readback) From 16af382caeca0e3b925f7c0116e13bf0c9f32b00 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 7 Jul 2021 10:15:07 -0400 Subject: [PATCH 024/270] Backport PR #20590: Fix class docstrings for Norms created from Scales. --- lib/matplotlib/colors.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/matplotlib/colors.py b/lib/matplotlib/colors.py index 9bdae12d6ebf..2ce6610fc0c4 100644 --- a/lib/matplotlib/colors.py +++ b/lib/matplotlib/colors.py @@ -1490,6 +1490,7 @@ def inverse(self, value): Norm.__name__ = base_norm_cls.__name__ Norm.__qualname__ = base_norm_cls.__qualname__ Norm.__module__ = base_norm_cls.__module__ + Norm.__doc__ = base_norm_cls.__doc__ Norm.__init__.__signature__ = bound_init_signature.replace(parameters=[ inspect.Parameter("self", inspect.Parameter.POSITIONAL_OR_KEYWORD), *bound_init_signature.parameters.values()]) From 49ad0fc0583f27f88428650a4000d50628f5b98e Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Sat, 10 Jul 2021 04:49:15 -0400 Subject: [PATCH 025/270] Backport PR #20609: FIX: fix figbox deprecation --- lib/matplotlib/axes/_subplots.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/axes/_subplots.py b/lib/matplotlib/axes/_subplots.py index b0a6dddaf355..d8595213e42f 100644 --- a/lib/matplotlib/axes/_subplots.py +++ b/lib/matplotlib/axes/_subplots.py @@ -76,10 +76,10 @@ def get_gridspec(self): return self._subplotspec.get_gridspec() @_api.deprecated( - "3.4", alternative="get_subplotspec().get_position(self.figure)") + "3.4", alternative="get_position()") @property def figbox(self): - return self.get_subplotspec().get_position(self.figure) + return self.get_position() @_api.deprecated("3.4", alternative="get_gridspec().nrows") @property From 649c07df4a5397ef76ff890c8c8baed6c4e3148a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jouni=20K=2E=20Sepp=C3=A4nen?= Date: Tue, 13 Jul 2021 20:20:36 +0300 Subject: [PATCH 026/270] Backport PR #20629: Add protection against out-of-bounds read in ttconv --- extern/ttconv/pprdrv_tt.cpp | 57 +- .../test_backend_ps/type42_without_prep.eps | 21189 ++++++++++++++++ lib/matplotlib/tests/test_backend_ps.py | 9 + 3 files changed, 21228 insertions(+), 27 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_backend_ps/type42_without_prep.eps diff --git a/extern/ttconv/pprdrv_tt.cpp b/extern/ttconv/pprdrv_tt.cpp index 934215470808..ada1994e9f21 100644 --- a/extern/ttconv/pprdrv_tt.cpp +++ b/extern/ttconv/pprdrv_tt.cpp @@ -798,33 +798,36 @@ void ttfont_sfnts(TTStreamWriter& stream, struct TTFONT *font) ** Find the tables we want and store there vital ** statistics in tables[]. */ - for (x=0; x < 9; x++ ) - { - do - { - diff = strncmp( (char*)ptr, table_names[x], 4 ); - - if ( diff > 0 ) /* If we are past it. */ - { - tables[x].length = 0; - diff = 0; - } - else if ( diff < 0 ) /* If we haven't hit it yet. */ - { - ptr += 16; - } - else if ( diff == 0 ) /* Here it is! */ - { - tables[x].newoffset = nextoffset; - tables[x].checksum = getULONG( ptr + 4 ); - tables[x].oldoffset = getULONG( ptr + 8 ); - tables[x].length = getULONG( ptr + 12 ); - nextoffset += ( ((tables[x].length + 3) / 4) * 4 ); - count++; - ptr += 16; - } - } - while (diff != 0); + ULONG num_tables_read = 0; /* Number of tables read from the directory */ + for (x = 0; x < 9; x++) { + do { + if (num_tables_read < font->numTables) { + /* There are still tables to read from ptr */ + diff = strncmp((char*)ptr, table_names[x], 4); + + if (diff > 0) { /* If we are past it. */ + tables[x].length = 0; + diff = 0; + } else if (diff < 0) { /* If we haven't hit it yet. */ + ptr += 16; + num_tables_read++; + } else if (diff == 0) { /* Here it is! */ + tables[x].newoffset = nextoffset; + tables[x].checksum = getULONG( ptr + 4 ); + tables[x].oldoffset = getULONG( ptr + 8 ); + tables[x].length = getULONG( ptr + 12 ); + nextoffset += ( ((tables[x].length + 3) / 4) * 4 ); + count++; + ptr += 16; + num_tables_read++; + } + } else { + /* We've read the whole table directory already */ + /* Some tables couldn't be found */ + tables[x].length = 0; + break; /* Proceed to next tables[x] */ + } + } while (diff != 0); } /* end of for loop which passes over the table directory */ diff --git a/lib/matplotlib/tests/baseline_images/test_backend_ps/type42_without_prep.eps b/lib/matplotlib/tests/baseline_images/test_backend_ps/type42_without_prep.eps new file mode 100644 index 000000000000..435e7b456401 --- /dev/null +++ b/lib/matplotlib/tests/baseline_images/test_backend_ps/type42_without_prep.eps @@ -0,0 +1,21189 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: type42_without_prep.eps +%%Creator: Matplotlib v3.5.0.dev1340+g24f1fb772a.d20210713, https://matplotlib.org/ +%%CreationDate: Tue Jul 13 14:52:53 2021 +%%Orientation: portrait +%%BoundingBox: 75 223 537 569 +%%HiResBoundingBox: 75.600000 223.200000 536.400000 568.800000 +%%EndComments +%%BeginProlog +/mpldict 12 dict def +mpldict begin +/_d { bind def } bind def +/m { moveto } _d +/l { lineto } _d +/r { rlineto } _d +/c { curveto } _d +/cl { closepath } _d +/ce { closepath eofill } _d +/box { + m + 1 index 0 r + 0 exch r + neg 0 r + cl + } _d +/clipbox { + box + clip + newpath + } _d +/sc { setcachedevice } _d +%!PS-TrueTypeFont-1.0-2.22937 +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 42 by PPR +15 dict begin +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[1 0 0 1 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 42 def +/Encoding StandardEncoding def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/sfnts[<0001000000090080000300106376742000691D390000009C000001FE6670676D +7134766A0000029C000000AB676C796668846831000003480008795C68656164085DC287 +00087CA400000036686865610D9F1FBF00087CDC00000024686D7478C535D8FD00087D00 +000061666C6F63616096C68C0008DE68000061886D6178701CCE067100093FF000000020 +707265703B07F1000009401000000568013500B800CB00CB00C100AA009C01A600B80066 +0000007100CB00A002B20085007500B800C301CB0189022D00CB00A600F000D300AA0087 +00CB03AA0400014A003300CB000000D9050200F4015400B4009C01390114013907060400 +044E04B4045204B804E704CD0037047304CD04600473013303A2055605A60556053903C5 +021200C9001F00B801DF007300BA03E9033303BC0444040E00DF03CD03AA00E503AA0404 +000000CB008F00A4007B00B80014016F007F027B0252008F00C705CD009A009A006F00CB +00CD019E01D300F000BA018300D5009803040248009E01D500C100CB00F600830354027F +00000333026600D300C700A400CD008F009A0073040005D5010A00FE022B00A400B4009C +00000062009C0000001D032D05D505D505D505F0007F007B005400A406B80614072301D3 +00B800CB00A601C301EC069300A000D3035C037103DB0185042304A80448008F01390114 +01390360008F05D5019A0614072306660179046004600460047B009C00000277046001AA +00E904600762007B00C5007F027B000000B4025205CD006600BC00660077061000CD013B +01850389008F007B0000001D00CD074A042F009C009C0000077D006F0000006F0335006A +006F007B00AE00B2002D0396008F027B00F600830354063705F6008F009C04E10266008F +018D02F600CD03440029006604EE00730000140000960000B707060504030201002C2010 +B002254964B040515820C859212D2CB002254964B040515820C859212D2C20100720B000 +50B00D7920B8FFFF5058041B0559B0051CB0032508B0042523E120B00050B00D7920B8FF +FF5058041B0559B0051CB0032508E12D2C4B505820B0FD454459212D2CB002254560442D +2C4B5358B00225B0022545445921212D2C45442D2CB00225B0022549B00525B005254960 +B0206368208A108A233A8A10653A2D0000020066FE96046605A400030007001A400C04FB +0006FB0108057F0204002FC4D4EC310010D4ECD4EC301311211125211121660400FC7303 +1BFCE5FE96070EF8F2720629000201350000020005D5000300090035400F070083048102 +08070501030400000A10FC4BB00B5458B90000FFC038593CEC32393931002FE4FCCC3001 +B6000B200B500B035D253315231133110323030135CBCBCB14A215FEFE05D5FD71FE9B01 +65000000000200C503AA02E905D5000300070042400F0501840400810804050600050204 +0810FC4BB012544BB013545B58B90002FFC03859FCDCEC310010F43CEC323001400F3009 +4009500960097009A009BF09075D0111231121112311016FAA0224AA05D5FDD5022BFDD5 +022B00000002009E0000061705BE0003001F006040311B0B008707041D0905190D028717 +130F15111F1E1C1B1A17161514131211100E0D0C090807060504030201001A0A18062010 +FCCC173931002F3CD43C3CFC3C3CD43C3CC432EC32323040110B010B020B0C0B0D14041A +111A12141F08015D012103210B0121133303211521032115210323132103231321352113 +213521130417FEDD5401254468012469A0670138FEA152013EFE9B68A067FEDB67A168FE +C5016054FEBE0169660385FEB20387FE61019FFE619AFEB299FE62019EFE62019E99014E +9A019F00000300AAFED3046D061400210028002F00BD405522020A0B0A27012628020B0B +0A1D011E1C022F292F1B0229292F42131110220A1B29041706092A210502178616068605 +11231A8A168910002A8A0589022D08160A1E07291A1203000922100903010726080D0506 +3010FC4BB0095458B90005FFC038594BB00C544BB010545B4BB00F545B58B90005004038 +593CECF4173CFC173CF4E4EC31002FE4ECC4D4E4EC32C410EE10EE111239113911121739 +111239304B5358071004ED07100EED11173907100EED111739071004ED59220123032E01 +27351E0117112E01353436373533151E0117152E0127111E011514060703110E01151416 +17113E0135342602B4640169D26A66D16FDDC9DACC645DAE5353AF5CE3D6E3D664747A71 +E17F817BFED3012D022D2DB440410101C824AC96A3BC0EEBE8041F1BAF2A2E04FE5523B4 +9CA9C30F0300019A0D6A585660D5FE4F116E5A586800000000050071FFE3072905F0000B +001700230027003300894036240F252625260F2724274200920C1E922E8D18922406920C +8D26128C2824913427211B2509030D150E090D0F210D2B0E1B0D0F310B3410FC4BB00954 +4BB00B545B4BB00C545B4BB014545B4BB00E545B4BB00D545B58B90031FFC03859C4ECF4 +EC10EEF6EE1139111239310010E432F43CE4EC10EEF6EE10EE304B5358071005ED071005 +ED5922012206151416333236353426273216151406232226353436012206151416333236 +3534262533012313321615140623222635343605D157636357556363559EBABB9DA0BABB +FC97566362575763640331A0FC5AA01F9EBCBB9F9FB9BA029194848295958283957FDCBB +BBDBDBBBBCDB026195828494948481967FF9F3060DDBBBBDDADBBCBADC00000000020081 +FFE305FE05F00009003001CD40960D010E0C861112110B860A0B12121109860009151615 +070106088616161502010301861D1E1D008609001E1E1D201F02211E110A130A17161503 +181411130A07080206091113130A0201020300110A130A171602181511130A141113130A +42120B090306000A1E0328150E0628270695182B9527942491188C0E130A2E0B0E09002E +1215270E1E032E1227210E110F132103121B103110FCECC4D4D4EC10C6EE113911123939 +1139391139113931002FC6E4F6E6EE10EE10C6111239111739111739304B5358071005ED +0705ED111739071005ED111739071005ED1117390705ED111739071005ED111739071008 +ED07100EED11173907100EED111739071008ED071008ED07100EED1117395922B20F3201 +015D40B2070B052209291C001C011F02170B2A002A0126123A003412440B5E0059015A0A +55125A1A5A1F5930671E7B009B009A0199029708950B931595169522992D1F090B090C08 +110C270C2818021B09190B190C19111C141C15161D1F3227002701290923122A132A1428 +152F323B09341239133F324A094C144B1546194F3256015A09590C551259135C1F5F326A +0C691160327501790C7A1193009301970295059C079C089F089A099B0B9A0C9032A032B0 +32395D005D010E011514163332363709013E0137330602070123270E0123220035343637 +2E0135343633321617152E0123220615141601F25B55D4A05FA649FE7B01FC3B4206BA0C +685D0117FC8F68E483F1FECE86863032DEB853A555579E4469833B032351A15892C23F40 +028FFDF859CB7284FEFE7EFEE39359570113D780E1633F7D3CA2C52424B62F316F583367 +000100C503AA016F05D500030037400A0184008104000502040410FC4BB012544BB01354 +5B58B90002FFC03859EC310010F4EC3001400D40055005600570059005A005065D011123 +11016FAA05D5FDD5022B0000000100B0FEF2027B0612000D0037400F069800970E0D0700 +03120600130A0E10DC4BB0135458B9000AFFC038594BB00F5458B9000A00403859E432EC +113939310010FCEC300106021514121723260235341237027B86828385A0969594970612 +E6FE3EE7E7FE3BE5EB01C6E0DF01C4EC000100A4FEF2026F0612000D001F400F07980097 +0E0701000B12041308000E10DC3CF4EC113939310010FCEC301333161215140207233612 +353402A4A096959596A08583830612ECFE3CDFE0FE3AEBE501C5E7E701C200000001003D +024A03C305F00011004E402C100D0B00040C090704020408039905110C990A010E911208 +0C0A030906110301030200140F040B09140D061210D43CE432DC3CE43217391112173931 +0010F4D43CEC32C4EC32173912173930010D01072511231105272D0137051133112503C3 +FE9901673AFEB072FEB03A0167FE993A015072015004DFC2C362CBFE870179CB62C3C263 +CB0179FE87CB0000000100D9000005DB0504000B002340110009019C0703050215040017 +0A0615080C10DCFC3CFC3CEC31002FD43CFC3CC43001112115211123112135211103AE02 +2DFDD3A8FDD3022D0504FDD3AAFDD3022DAA022D0001009EFF1201C300FE00050019400C +039E0083060304011900180610FCECD4CC310010FCEC30373315032313F0D3A48152FEAC +FEC001400001006401DF027F028300030011B6009C020401000410DCCC310010D4EC3013 +21152164021BFDE50283A400000100DB000001AE00FE00030011B7008302011900180410 +FCEC31002FEC3037331523DBD3D3FEFE00010000FF4202B205D50003002D4014001A0102 +01021A03000342029F008104020001032FC43939310010F4EC304B5358071005ED071005 +ED5922013301230208AAFDF8AA05D5F96D00000000020087FFE3048F05F0000B00170023 +401306A01200A00C91128C18091C0F1E031C151B1810FCECF4EC310010E4F4EC10EE3001 +2202111012333212111002273200111000232200111000028B9C9D9D9C9D9D9D9DFB0109 +FEF7FBFBFEF701090550FECDFECCFECDFECD0133013301340133A0FE73FE86FE87FE7301 +8D0179017A018D00000100E10000045A05D5000A004040154203A00402A005810700A009 +081F061C03001F010B10D44BB00F5458B9000100403859ECC4FCEC31002FEC32F4ECD4EC +304B5358592201B40F030F04025D3721110535253311211521FE014AFE990165CA014AFC +A4AA047348B848FAD5AA0000000100960000044A05F0001C009E4027191A1B03181C1105 +0400110505044210A111940DA014910400A00200100A02010A1C171003061D10FC4BB015 +544BB016545B4BB014545B58B90003FFC03859C4D4ECC0C011123931002FEC32F4ECF4EC +304B5358071005ED0705ED01B01C1011173959220140325504560556077A047A05761B87 +190704000419041A041B051C74007606751A731B741C82008619821A821B821CA800A81B +115D005D25211521353600373E0135342623220607353E01333204151406070600018902 +C1FC4C73018D33614DA7865FD3787AD458E80114455B19FEF4AAAAAA7701913A6D974977 +964243CC3132E8C25CA5701DFEEB00000001009CFFE3047305F000280070402E0015130A +86091F862013A0150DA00993061CA020932391068C15A329161C13000314191C2620101C +03141F09062910FC4BB016544BB014545B58B90009FFC03859C4C4D4ECF4EC1117393931 +0010ECE4F4E4EC10E6EE10EE10EE10EE11123930014009641E611F6120642104005D011E +0115140421222627351E013332363534262B013533323635342623220607353E01333204 +151406033F91A3FED0FEE85EC76A54C86DBEC7B9A5AEB6959EA39853BE7273C959E6010C +8E03251FC490DDF22525C33132968F8495A67770737B2426B42020D1B27CAB0000020064 +000004A405D50002000D0081401D010D030D0003030D4200030B07A00501038109010C0A +001C0608040C0E10DC4BB00B544BB00D545B58B9000CFFC03859D43CC4EC32113931002F +E4D43CEC321239304B5358071004C9071005C9592201402A0B002A004800590069007700 +8A000716012B0026012B0336014E014F0C4F0D5601660175017A0385010D5D005D090121 +03331133152311231121350306FE0201FE35FED5D5C9FD5E0525FCE303CDFC33A8FEA001 +60C300000001009EFFE3046405D5001D005E4023041A071186101D1AA00714A010890D02 +A000810D8C07A41E171C010A031C000A10061E10FC014BB016544BB014545B58B90010FF +C038594BB00F5458B9001000403859C4D4EC10C4EE310010E4E4F4EC10E6EE10FEC410EE +1112393013211521113E0133320015140021222627351E0133323635342623220607DD03 +19FDA02C582CFA0124FED4FEEF5EC3685AC06BADCACAAD51A15405D5AAFE920F0FFEEEEA +F1FEF52020CB3130B69C9CB6242600000002008FFFE3049605F0000B0024005840241306 +000D860C00A01606A01C16A510A00C8922911C8C250C22091C191E131C03211F1B2510FC +ECECF4ECE4310010E4F4E4FCE410EE10EE10EE111239304014CB00CB01CD02CD03CD04CB +05CB0607A41EB21E025D015D01220615141633323635342601152E01232202033E013332 +0015140023200011100021321602A4889F9F88889F9F01094C9B4CC8D30F3BB26BE10105 +FEF0E2FEFDFEEE0150011B4C9B033BBAA2A1BBBBA1A2BA0279B82426FEF2FEEF575DFEEF +EBE6FEEA018D0179016201A51E000000000100A80000046805D500060063401805110203 +0203110405044205A0008103050301040100060710FCCCC411393931002FF4EC304B5358 +071005ED071005ED5922014BB0165458BD00070040000100070007FFC038113738594012 +58020106031A05390548056703B000B006075D005D13211501230121A803C0FDE2D301FE +FD3305D556FA81052B0000000003008BFFE3048B05F0000B0023002F00434025180C00A0 +2706A01E2DA012911E8C27A330180C242A1C15241C0F091C151B1E031C0F211B3010FCC4 +ECF4C4EC10EE10EE113939310010ECE4F4EC10EE10EE3939300122061514163332363534 +26252E01353424333216151406071E011514042322243534361314163332363534262322 +06028B90A5A59090A6A5FEA5829100FFDEDFFE918192A3FEF7F7F7FEF7A4489183829393 +82839102C59A87879A9B86879A5620B280B3D0D0B380B22022C68FD9E8E8D98FC6016174 +828274748282000000020081FFE3048705F00018002400584023071F1901860019A00AA5 +04A00089161FA01091168C25071C1C21131E0022221C0D1B2510FCECE4F4ECEC310010E4 +F4EC10E6FEF5EE10EE111239304016C419C21AC01BC01CC01DC21EC41F07AA12BC12E912 +035D015D37351E01333212130E0123220035340033200011100021222601323635342623 +2206151416E14C9C4BC8D30F3AB26CE0FEFB0110E201030111FEB1FEE54C9C013E889F9F +88889F9F1FB82426010D0112565C010FEBE60116FE73FE86FE9FFE5B1E0297BAA2A1BBBB +A1A2BA00000200F0000001C3042300030007001C400E068304A600830205010304001808 +10FC3CEC3231002FECF4EC303733152311331523F0D3D3D3D3FEFE0423FE00000002009E +FF1201C304230003000900254013028300079E048300A60A07080501190400180A10FC3C +EC32D4CC310010E4FCEC10EE3013331523113315032313F0D3D3D3A481520423FEFDD9AC +FEC00140000100D9005E05DB04A60006004D402A029C030403019C0001040403019C0201 +050605009C06054205040201000503A806A7070102002404230710FCEC3239310010F4EC +1739304B53580704ED071008ED071008ED071004ED592209021501350105DBFBF80408FA +FE050203F0FE91FE93B601D1A601D100000200D9016005DB03A200030007001C400D009C +02069C040805010400230810FC3CC432310010D4ECD4EC301321152115211521D90502FA +FE0502FAFE03A2A8F0AA0000000100D9005E05DB04A60006004F402B069C000603040305 +9C040403009C010201069C05060202014206050302000504A801A7070602240400230710 +FC3CEC39310010F4EC1739304B5358071008ED071004ED071004ED071008ED5922133501 +15013501D90502FAFE040603F0B6FE2FA6FE2FB6016D000000020093000003B005F00003 +00240065402B241E0906040A1D13040014861388109517910083021D1A0D0905040A1E01 +0D1C1A041C05010300261A132510DC4BB00C5458B90013FFC03859C4FCECD4EC10EE1139 +3911123911123931002FEEF6FEF4EE10CD11393917393001B679097A0A7A20035D253315 +2313233534363F013E0135342623220607353E013332161514060F010E01070E01150187 +CBCBC5BF385A5A3933836C4FB3615EC167B8DF485A582F27080606FEFE01919A65825659 +355E31596E4643BC3938C29F4C8956562F3519153C34000000020087FE9C077105A2000B +004C00954032180C0309A919151B03A94C0F34330FAC30A93715AC24A937434D33341E1A +00281206180C281A2B1E2849122B2A28492C3D4D10DCECFCEC10FEFDFE3CC610EE111239 +39310010D4C4FCEC10FEEDD4C610C5EE3210C4EE11393930004BB009544BB00C545B4BB0 +10545B4BB013545B4BB014545B58BD004DFFC00001004D004D0040381137385940090F4E +1F4E2F4E3F4E04015D011416333236353426232206010E01232226353436333216173533 +113E01353426272624232206070602151412171604333236371706042322242726023534 +12373624333204171E011510000502FA8E7C7B8D907A798F02213C9B67ACD7D8AB679C3B +8F92A53F4068FED5B07BE2609DB1736D6901149D81F9685A7DFED998B9FEB8808086887E +810152BDD4016B7B4B4FFEC2FEE802198FA3A48E8CA5A4FE484D49F9C8C8FA4B4C83FD20 +16DFB16BBC50838B414066FEB5C19FFEEA6A686D57516F6167837D7D0149BDB6014A7D7F +87AEA062E67BFEF9FED00600000200100000056805D50002000A00C24041001101000405 +04021105050401110A030A0011020003030A0711050406110505040911030A08110A030A +4200030795010381090509080706040302010009050A0B10D4C4173931002F3CE4D4EC12 +39304B5358071005ED0705ED071005ED0705ED071008ED071005ED071005ED071008ED59 +22B2200C01015D40420F010F020F070F080F005800760070008C00090701080206030904 +1601190256015802500C67016802780176027C0372047707780887018802800C98029903 +9604175D005D090121013301230321032302BCFEEE0225FE7BE50239D288FD5F88D5050E +FD1903AEFA2B017FFE810000000300C9000004EC05D5000800110020004340231900950A +0995128101950AAD1F110B080213191F05000E1C1605191C2E09001C12042110FCEC32FC +ECD4EC111739393931002FECECF4EC10EE3930B20F2201015D0111213236353426230111 +2132363534262325213216151406071E01151404232101930144A39D9DA3FEBC012B9491 +9194FE0B0204E7FA807C95A5FEF0FBFDE802C9FDDD878B8C850266FE3E6F727170A6C0B1 +89A21420CB98C8DA00010073FFE3052705F000190036401A0DA10EAE0A951101A100AE04 +951791118C1A07190D003014101A10FCEC32EC310010E4F4ECF4EC10EEF6EE30B40F1B1F +1B02015D01152E0123200011100021323637150E01232000111000213216052766E782FF +00FEF00110010082E7666AED84FEADFE7A0186015386ED0562D55F5EFEC7FED8FED9FEC7 +5E5FD34848019F01670168019F470000000200C9000005B005D500080011002E40150095 +09810195100802100A0005190D32001C09041210FCECF4EC113939393931002FECF4EC30 +B2601301015D0111332000111000212521200011100029010193F40135011FFEE1FECBFE +42019F01B20196FE68FE50FE61052FFB770118012E012C0117A6FE97FE80FE7EFE960000 +000100C90000048B05D5000B002E401506950402950081089504AD0A05010907031C0004 +0C10FCEC32D4C4C431002FECECF4EC10EE30B21F0D01015D132115211121152111211521 +C903B0FD1A02C7FD3902F8FC3E05D5AAFE46AAFDE3AA0000000100C90000042305D50009 +002940120695040295008104AD08050107031C00040A10FCEC32D4C431002FECF4EC10EE +30B20F0B01015D13211521112115211123C9035AFD700250FDB0CA05D5AAFE48AAFD3700 +00010073FFE3058B05F0001D0039402000051B0195031B950812A111AE15950E91088C1E +02001C1134043318190B101E10FCECFCE4FCC4310010E4F4ECF4EC10FED4EE1139393025 +1121352111060423200011100021320417152E0123200011100021323604C3FEB6021275 +FEE6A0FEA2FE75018B015E9201076F70FC8BFEEEFEED011301126BA8D50191A6FD7F5355 +0199016D016E01994846D75F60FECEFED1FED2FECE250000000100C90000053B05D5000B +002C4014089502AD0400810A0607031C053809011C00040C10FCEC32FCEC3231002F3CE4 +32FCEC30B2500D01015D133311211133112311211123C9CA02DECACAFD22CA05D5FD9C02 +64FA2B02C7FD3900000100C90000019305D50003002EB700AF02011C00040410FC4BB010 +5458B9000000403859EC31002FEC3001400D30054005500560058F059F05065D13331123 +C9CACA05D5FA2B000001FF96FE66019305D5000B004240130B0200079505B000810C0508 +0639011C00040C10FC4BB0105458B9000000403859ECE43939310010E4FCEC1139393001 +400D300D400D500D600D8F0D9F0D065D13331110062B013533323635C9CACDE34D3F866E +05D5FA93FEF2F4AA96C20000000100C90000056A05D5000A00EF40280811050605071106 +06050311040504021105050442080502030300AF09060501040608011C00040B10FCEC32 +D4C4113931002F3CEC321739304B5358071004ED071005ED071005ED071004ED5922B208 +0301015D4092140201040209081602280528083702360534084702460543085502670276 +027705830288058F0894029B08E702150603090509061B031907050A030A07180328052B +062A073604360536063507300C41034004450540064007400C6203600468056707770570 +0C8B038B058E068F078F0C9A039D069D07B603B507C503C507D703D607E803E904E805EA +06F703F805F9062C5D71005D711333110121090121011123C9CA029E0104FD1B031AFEF6 +FD33CA05D5FD890277FD48FCE302CFFD31000000000100C90000046A05D500050025400C +0295008104011C033A00040610FCECEC31002FE4EC304009300750078003800404015D13 +3311211521C9CA02D7FC5F05D5FAD5AA000100C90000061F05D5000C00BF403403110708 +070211010208080702110302090A0901110A0A09420A070203080300AF080B0509080302 +01050A061C043E0A1C00040D10FCECFCEC11173931002F3CC4EC32111739304B53580710 +05ED071008ED071008ED071005ED5922B2700E01015D405603070F080F09020A15021407 +130A260226072007260A200A3407350A69027C027B07790A80028207820A90021604010B +0313011B0323012C032708280934013C035608590965086A097608790981018D0395019B +03145D005D13210901211123110123011123C9012D017D017F012DC5FE7FCBFE7FC405D5 +FC0803F8FA2B051FFC000400FAE10000000100C90000053305D500090079401E07110102 +0102110607064207020300AF0805060107021C0436071C00040A10FCECFCEC1139393100 +2F3CEC323939304B5358071004ED071004ED5922B21F0B01015D40303602380748024707 +690266078002070601090615011A06460149065701580665016906790685018A0695019A +069F0B105D005D13210111331121011123C901100296C4FEF0FD6AC405D5FB1F04E1FA2B +04E1FB1F00020073FFE305D905F0000B00170023401306951200950C91128C1809190F33 +031915101810FCECFCEC310010E4F4EC10EE300122001110003332001110002720001110 +002120001110000327DCFEFD0103DCDC0101FEFFDC013A0178FE88FEC6FEC5FE87017905 +4CFEB8FEE5FEE6FEB80148011A011B0148A4FE5BFE9EFE9FFE5B01A40162016201A50000 +000200C90000048D05D500080013003A40180195100095098112100A0802040005190D3F +11001C09041410FCEC32FCEC11173931002FF4ECD4EC30400B0F151F153F155F15AF1505 +015D011133323635342623252132041514042B0111230193FE8D9A9A8DFE3801C8FB0101 +FEFFFBFECA052FFDCF92878692A6E3DBDDE2FDA800020073FEF805D905F0000B001D0052 +402A1110020F010C0D0C0E010D0D0C420F1E0C06951200951891128C0D1E0D1B0F0C0309 +191B33031915101E10FCECFCEC1139391139310010C4E4F4EC10EE391239304B53580710 +05ED071005ED17395922012200111000333200111000130123270E012320001110002120 +001110020327DCFEFD0103DCDC0101FEFF3F010AF4DD212310FEC5FE870179013B013A01 +78D1054CFEB8FEE5FEE6FEB80148011A011B0148FACFFEDDEF020201A50161016201A5FE +5BFE9EFEFCFE8E00000200C90000055405D50013001C00B14035090807030A0611030403 +05110404034206040015030415950914950D810B040506031109001C160E050A19190411 +3F140A1C0C041D10FCEC32FCC4EC1117391139393931002F3CF4ECD4EC12391239123930 +4B5358071005ED071005ED1117395922B2401E01015D40427A1301050005010502060307 +041500150114021603170425002501250226032706260726082609201E36013602460146 +02680575047505771388068807980698071F5D005D011E01171323032E012B0111231121 +2016151406011133323635342623038D417B3ECDD9BF4A8B78DCCA01C80100FC83FD89FE +9295959202BC16907EFE68017F9662FD8905D5D6D88DBA024FFDEE878383850000010087 +FFE304A205F00027007E403C0D0C020E0B021E1F1E080902070A021F1F1E420A0B1E1F04 +15010015A11494189511049500942591118C281E0A0B1F1B0700221B190E2D0719142228 +10DCC4ECFCECE4111239393939310010E4F4E4EC10EEF6EE10C6111739304B535807100E +ED11173907100EED1117395922B20F2901015DB61F292F294F29035D01152E0123220615 +14161F011E0115140421222627351E013332363534262F012E01353424333216044873CC +5FA5B377A67AE2D7FEDDFEE76AEF807BEC72ADBC879A7BE2CA0117F569DA05A4C5373680 +7663651F192BD9B6D9E0302FD04546887E6E7C1F182DC0ABC6E426000001FFFA000004E9 +05D50007004A400E0602950081040140031C0040050810D4E4FCE431002FF4EC3230014B +B00A5458BD00080040000100080008FFC03811373859401300091F00100110021F071009 +400970099F09095D03211521112311210604EFFDEECBFDEE05D5AAFAD5052B00000100B2 +FFE3052905D50011004040160802110B0005950E8C09008112081C0A38011C00411210FC +4BB0105458B90000FFC03859ECFCEC310010E432F4EC11393939393001B61F138F139F13 +035D133311141633323635113311100021200011B2CBAEC3C2AECBFEDFFEE6FEE5FEDF05 +D5FC75F0D3D3F0038BFC5CFEDCFED6012A012400000100100000056805D5000600B74027 +04110506050311020306060503110403000100021101010042030401AF00060403020005 +05010710D4C4173931002FEC3239304B5358071005ED071008ED071008ED071005ED5922 +B2500801015D406200032A03470447055A037D038303070600070208040906150114021A +041A052A002601260229042905250620083800330133023C043C05370648004501450249 +0449054706590056066602690469057A0076017602790479057506800898009706295D00 +5D21013309013301024AFDC6D301D901DAD2FDC705D5FB1704E9FA2B00010044000007A6 +05D5000C017B4049051A0605090A09041A0A09031A0A0B0A021A01020B0B0A0611070807 +05110405080807021103020C000C011100000C420A050203060300AF0B080C0B0A090806 +05040302010B07000D10D4CC173931002F3CEC32321739304B5358071005ED071008ED07 +1008ED071005ED071008ED071005ED0705ED071008ED5922B2000E01015D40F206020605 +020A000A000A120A2805240A200A3E023E05340A300A4C024D05420A400A59026A026B05 +670A600A7B027F027C057F05800A960295051D0700090208030004060500050006010704 +08000807090009040A0A0C000E1A0315041508190C100E20042105200620072008230924 +0A250B200E200E3C023A033504330530083609390B3F0C300E460046014A024004450540 +0542064207420840084009440A4D0C400E400E58025608590C500E660267036104620560 +06600760086409640A640B770076017B027803770474057906790777087008780C7F0C7F +0E860287038804890585098A0B8F0E97049F0EAF0E5B5D005D1333090133090133012309 +012344CC013A0139E3013A0139CDFE89FEFEC5FEC2FE05D5FB1204EEFB1204EEFA2B0510 +FAF000000001003D0000053B05D5000B006640060D0406000A0C10D4C4DCC4C431B48000 +7F0A025D0040050300AF09062F3CEC32304BB04250584014071106060509110A0B0A0311 +0405040111000B00050710EC0710EC0710EC0710EC40140B0A0307000809040700050904 +0601020A0306010F0F0F0F5913330901330901230901230181D901730175D9FE200200D9 +FE5CFE59DA021505D5FDD5022BFD33FCF8027BFD85031D000001FFFC000004E705D50008 +0094402803110405040211010205050402110302080008011100000842020300AF060207 +0440051C0040070910D4E4FCE4123931002FEC3239304B5358071005ED071008ED071008 +ED071005ED5922B2000A01015D403C050214023502300230053008460240024005400851 +02510551086502840293021016011A031F0A2601290337013803400A670168037803700A +9F0A0D5D005D03330901330111231104D9019E019BD9FDF0CB05D5FD9A0266FCF2FD3902 +C70000000001005C0000051F05D500090090401B03110708070811020302420895008103 +950508030001420400060A10DC4BB009544BB00A545B58B90006FFC03859C4D4E4113939 +31002FECF4EC304B5358071005ED071005ED592201404005020A07180729022607380748 +02470748080905030B08000B16031A08100B2F0B350339083F0B47034A084F0B55035908 +660369086F0B770378087F0B9F0B165D005D13211501211521350121730495FC5003C7FB +3D03B0FC6705D59AFB6FAA9A04910000000100B0FEF2025806140007003B400F04A906B2 +02A900B10805010343000810DC4BB00C5458B90000004038594BB012544BB013545B58B9 +0000FFC03859FCCC32310010FCECF4EC301321152311331521B001A8F0F0FE5806148FF9 +FC8F000000010000FF4202B205D50003002D4014021A010100001A03030242019F008104 +020001032FC43939310010F4EC304B5358071005ED071005ED592213012301AA0208AAFD +F805D5F96D069300000100C7FEF2026F061400070030401003A901B205A900B108004304 +0602040810FC4BB00F544BB010545B58B90002004038593CDCEC310010FCECF4EC300111 +213533112335026FFE58EFEF0614F8DE8F06048F000100D903A805DB05D500060018400A +0304010081070301050710DCCC39310010F4CC3239300901230901230103BC021FC9FE48 +FE48C9021F05D5FDD3018BFE75022D000001FFECFE1D0414FEAC0003000FB500A9010002 +0410C4C43100D4EC30011521350414FBD8FEAC8F8F000000000100AA04F0028906660003 +0031400901B400B3040344010410DCEC310010F4EC30004BB009544BB00E545B58BD0004 +FFC00001000400040040381137385909012301016F011A99FEBA0666FE8A01760002007B +FFE3042D047B000A002500BC4027191F0B17090E00A91706B90E1120861FBA1CB923B811 +8C170C001703180D09080B1F030814452610FCECCCD4EC323211393931002FC4E4F4FCF4 +EC10C6EE10EE11391139123930406E301D301E301F3020302130223F27401D401E401F40 +2040214022501D501E501F50205021502250277027851D871E871F8720872185229027A0 +27F0271E301E301F30203021401E401F40204021501E501F50205021601E601F60206021 +701E701F70207021801E801F80208021185D015D0122061514163332363D01371123350E +01232226353436332135342623220607353E0133321602BEDFAC816F99B9B8B83FBC88AC +CBFDFB0102A79760B65465BE5AF3F00233667B6273D9B4294CFD81AA6661C1A2BDC0127F +8B2E2EAA2727FC00000200BAFFE304A40614000B001C0038401903B90C0F09B918158C0F +B81B971900121247180C06081A461D10FCEC3232F4EC31002FECE4F4C4EC10C6EE30B660 +1E801EA01E03015D013426232206151416333236013E0133320011100223222627152311 +3303E5A79292A7A79292A7FD8E3AB17BCC00FFFFCC7BB13AB9B9022FCBE7E7CBCBE7E702 +526461FEBCFEF8FEF8FEBC6164A8061400010071FFE303E7047B0019003F401B00860188 +040E860D880AB91104B917B8118C1A07120D004814451A10FCE432EC310010E4F4EC10FE +F4EE10F5EE30400B0F1B101B801B901BA01B05015D01152E012322061514163332363715 +0E0123220011100021321603E74E9D50B3C6C6B3509D4E4DA55DFDFED6012D010655A204 +35AC2B2BE3CDCDE32B2BAA2424013E010E0112013A23000000020071FFE3045A06140010 +001C003840191AB9000E14B905088C0EB801970317040008024711120B451D10FCECF4EC +323231002FECE4F4C4EC10C4EE30B6601E801EA01E03015D0111331123350E0123220211 +100033321601141633323635342623220603A2B8B83AB17CCBFF00FFCB7CB1FDC7A79292 +A8A89292A703B6025EF9ECA86461014401080108014461FE15CBE7E7CBCBE7E700020071 +FFE3047F047B0014001B00704024001501098608880515A90105B90C01BB18B912B80C8C +1C1B1502081508004B02120F451C10FCECF4ECC4111239310010E4F4ECE410EE10EE10F4 +EE1112393040293F1D701DA01DD01DF01D053F003F013F023F153F1B052C072F082F092C +0A6F006F016F026F156F1B095D71015D0115211E0133323637150E012320001110003332 +00072E0123220607047FFCB20CCDB76AC76263D06BFEF4FEC70129FCE20107B802A5889A +B90E025E5ABEC73434AE2A2C0138010A01130143FEDDC497B4AE9E000001002F000002F8 +061400130059401C0510010C08A906018700970E06BC0A02130700070905080D0F0B4C14 +10FC4BB00A5458B9000B004038594BB00E5458B9000BFFC038593CC4FC3CC4C412393931 +002FE432FCEC10EE321239393001B640155015A015035D01152322061D01211521112311 +2335333534363302F8B0634D012FFED1B9B0B0AEBD0614995068638FFC2F03D18F4EBBAB +00020071FE56045A047B000B0028004A4023190C1D0912861316B90F03B92623B827BC09 +B90FBD1A1D261900080C4706121220452910FCC4ECF4EC323231002FC4E4ECE4F4C4EC10 +FED5EE1112393930B6602A802AA02A03015D013426232206151416333236171002212226 +27351E013332363D010E0123220211101233321617353303A2A59594A5A59495A5B8FEFE +FA61AC51519E52B5B439B27CCEFCFCCE7CB239B8023DC8DCDCC8C7DCDCEBFEE2FEE91D1E +B32C2ABDBF5B6362013A01030104013A6263AA00000100BA000004640614001300344019 +030900030E0106870E11B80C970A010208004E0D09080B461410FCEC32F4EC31002F3CEC +F4C4EC1112173930B2601501015D0111231134262322061511231133113E013332160464 +B87C7C95ACB9B942B375C1C602A4FD5C029E9F9EBEA4FD870614FD9E6564EF00000200C1 +00000179061400030007002B400E06BE04B100BC020501080400460810FC3CEC3231002F +E4FCEC30400B1009400950096009700905015D1333112311331523C1B8B8B8B80460FBA0 +0614E9000002FFDBFE5601790614000B000F0044401C0B0207000EBE0C078705BD00BC0C +B110081005064F0D01080C00461010FC3CEC32E4391239310010ECE4F4EC10EE11123939 +30400B1011401150116011701105015D13331114062B01353332363511331523C1B8A3B5 +4631694CB8B80460FB8CD6C09C61990628E90000000100BA0000049C0614000A00BC4029 +0811050605071106060503110405040211050504420805020303BC009709060501040608 +010800460B10FCEC32D4C4113931002F3CECE41739304B5358071004ED071005ED071005 +ED071004ED5922B2100C01015D405F04020A081602270229052B08560266026708730277 +05820289058E08930296059708A3021209050906020B030A072803270428052B062B0740 +0C6803600C8903850489058D068F079A039707AA03A705B607C507D607F703F003F704F0 +041A5D71005D1333110133090123011123BAB90225EBFDAE026BF0FDC7B90614FC6901E3 +FDF4FDAC0223FDDD000100C100000179061400030022B7009702010800460410FCEC3100 +2FEC30400D10054005500560057005F00506015D13331123C1B8B80614F9EC00000100BA +0000071D047B0022005A4026061209180F00061D07150C871D2003B81BBC19100700110F +0808065011080F501C18081A462310FCEC32FCFCFCEC11123931002F3C3CE4F43CC4EC32 +111217393040133024502470249024A024A024BF24DF24FF2409015D013E013332161511 +231134262322061511231134262322061511231133153E01333216042945C082AFBEB972 +758FA6B972778DA6B9B93FB0797AAB03897C76F5E2FD5C029EA19CBEA4FD87029EA29BBF +A3FD870460AE67627C000000000100BA00000464047B001300364019030900030E010687 +0E11B80CBC0A010208004E0D09080B461410FCEC32F4EC31002F3CE4F4C4EC1112173930 +B46015CF1502015D0111231134262322061511231133153E013332160464B87C7C95ACB9 +B942B375C1C602A4FD5C029E9F9EBEA4FD870460AE6564EF00020071FFE30475047B000B +0017004A401306B91200B90CB8128C1809120F51031215451810FCECF4EC310010E4F4EC +10EE3040233F197B007B067F077F087F097F0A7F0B7B0C7F0D7F0E7F0F7F107F117B12A0 +19F01911015D012206151416333236353426273200111000232200111000027394ACAB95 +93ACAC93F00112FEEEF0F1FEEF011103DFE7C9C9E7E8C8C7E99CFEC8FEECFEEDFEC70139 +0113011401380000000200BAFE5604A4047B0010001C003E401B1AB9000E14B90508B80E +8C01BD03BC1D11120B471704000802461D10FCEC3232F4EC310010E4E4E4F4C4EC10C4EE +304009601E801EA01EE01E04015D2511231133153E013332001110022322260134262322 +061514163332360173B9B93AB17BCC00FFFFCC7BB10238A79292A7A79292A7A8FDAE060A +AA6461FEBCFEF8FEF8FEBC6101EBCBE7E7CBCBE7E700000000020071FE56045A047B000B +001C003E401B03B90C0F09B91815B80F8C1BBD19BC1D180C06081A47001212451D10FCEC +F4EC3232310010E4E4E4F4C4EC10C6EE304009601E801EA01EE01E04015D011416333236 +353426232206010E012322021110003332161735331123012FA79292A8A89292A702733A +B17CCBFF00FFCB7CB13AB8B8022FCBE7E7CBCBE7E7FDAE646101440108010801446164AA +F9F60000000100BA0000034A047B001100304014060B0700110B03870EB809BC070A0608 +0008461210FCC4EC3231002FE4F4ECC4D4CC11123930B450139F1302015D012E01232206 +1511231133153E0133321617034A1F492C9CA7B9B93ABA85132E1C03B41211CBBEFDB204 +60AE6663050500000001006FFFE303C7047B002700E7403C0D0C020E0B531F1E08090207 +0A531F1F1E420A0B1E1F041500860189041486158918B91104B925B8118C281E0A0B1F1B +0700521B080E07081422452810FCC4ECD4ECE4111239393939310010E4F4EC10FEF5EE10 +F5EE121739304B535807100EED111739070EED1117395922B2002701015D406D1C0A1C0B +1C0C2E092C0A2C0B2C0C3B093B0A3B0B3B0C0B200020012402280A280B2A132F142F152A +16281E281F292029212427860A860B860C860D12000000010202060A060B030C030D030E +030F03100319031A031B031C041D09272F293F295F297F2980299029A029F029185D005D +7101152E012322061514161F011E0115140623222627351E013332363534262F012E0135 +3436333216038B4EA85A898962943FC4A5F7D85AC36C66C661828C65AB40AB98E0CE66B4 +043FAE282854544049210E2A99899CB62323BE353559514B50250F2495829EAC1E000000 +00010037000002F2059E0013003840190E05080F03A9001101BC08870A0B080902040008 +10120E461410FC3CC4FC3CC432393931002FECF43CC4EC3211393930B2AF1501015D0111 +2115211114163B01152322263511233533110177017BFE854B73BDBDD5A28787059EFEC2 +8FFDA0894E9A9FD202608F013E000000000200AEFFE30458047B00130014003B401C0309 +00030E0106870E118C0A01BC14B80C0D0908140B4E020800461510FCECF439EC3231002F +E4E432F4C4EC1112173930B46F15C01502015D1311331114163332363511331123350E01 +23222601AEB87C7C95ADB8B843B175C1C801CF01BA02A6FD619F9FBEA4027BFBA0AC6663 +F003A8000001003D0000047F0460000600FB402703110405040211010205050402110302 +060006011100000642020300BF0506050302010504000710D44BB00A5458B90000004038 +594BB014544BB015545B58B90000FFC03859C4173931002FEC3239304B5358071005ED07 +1008ED071008ED071005ED592201408E48026A027B027F02860280029102A40208060006 +0109030904150015011A031A0426002601290329042008350035013A033A043008460046 +014903490446054806400856005601590359045008660066016903690467056806600875 +0074017B037B0475057A068500850189038904890586069600960197029A039804980597 +06A805A706B008C008DF08FF083E5D005D133309013301233DC3015E015EC3FE5CFA0460 +FC5403ACFBA0000000010056000006350460000C01EB404905550605090A0904550A0903 +550A0B0A025501020B0B0A061107080705110405080807021103020C000C011100000C42 +0A050203060300BF0B080C0B0A09080605040302010B07000D10D44BB00A544BB011545B +4BB012545B4BB013545B4BB00B545B58B9000000403859014BB00C544BB00D545B4BB010 +545B58B90000FFC03859CC173931002F3CEC32321739304B5358071005ED071008ED0710 +08ED071005ED071008ED071005ED0705ED071008ED59220140FF050216021605220A350A +49024905460A400A5B025B05550A500A6E026E05660A79027F0279057F05870299029805 +940ABC02BC05CE02C703CF051D0502090306040B050A080B09040B050C1502190316041A +051B081B09140B150C2500250123022703210425052206220725082709240A210B230C39 +0336043608390C300E460248034604400442054006400740084409440A440B400E400E56 +0056015602500451055206520750085309540A550B6300640165026A0365046A056A066A +076E09610B670C6F0E7500750179027D0378047D057A067F067A077F07780879097F097B +0A760B7D0C870288058F0E97009701940293039C049B05980698079908402F960C9F0EA6 +00A601A402A403AB04AB05A906A907AB08A40CAF0EB502B103BD04BB05B809BF0EC402C3 +03CC04CA05795D005D13331B01331B013301230B012356B8E6E5D9E6E5B8FEDBD9F1F2D9 +0460FC96036AFC96036AFBA00396FC6A0001003B000004790460000B0143404605110607 +06041103040707060411050401020103110202010B110001000A11090A0101000A110B0A +0708070911080807420A070401040800BF05020A0704010408000208060C10D44BB00A54 +4BB00F545B4BB010545B4BB011545B58B90006004038594BB0145458B90006FFC03859C4 +D4C411173931002F3CEC321739304B5358071005ED071008ED071008ED071005ED071005 +ED071008ED071008ED071005ED59220140980A04040A1A04150A260A3D04310A55045707 +580A660A76017A047607740A8D04820A99049F049707920A900AA601A904AF04A507A30A +A00A1C0A03040505090A0B1A03150515091A0B2903260525092A0B200D3A013903370534 +073609390B300D4903460545094A0B400D59005601590259035705560659075608560959 +0B500D6F0D78017F0D9B019407AB01A407B00DCF0DDF0DFF0D2F5D005D09022309012309 +013309010464FE6B01AAD9FEBAFEBAD901B3FE72D9012901290460FDDFFDC101B8FE4802 +4A0216FE71018F000001003DFE56047F0460000F018B40430708020911000F0A110B0A00 +000F0E110F000F0D110C0D00000F0D110E0D0A0B0A0C110B0B0A420D0B0910000B058703 +BD0E0BBC100E0D0C0A09060300080F040F0B1010D44BB00A544BB008545B58B9000B0040 +38594BB0145458B9000BFFC03859C4C4111739310010E432F4EC113911391239304B5358 +071005ED071008ED071008ED071005ED071008ED0705ED173259220140F0060005080609 +030D160A170D100D230D350D490A4F0A4E0D5A095A0A6A0A870D800D930D120A000A0906 +0B050C0B0E0B0F1701150210041005170A140B140C1A0E1A0F2700240124022004200529 +082809250A240B240C270D2A0E2A0F201137003501350230043005380A360B360C380D39 +0E390F30114100400140024003400440054006400740084209450A470D490E490F401154 +00510151025503500450055606550756085709570A550B550C590E590F50116601660268 +0A690E690F60117B08780E780F89008A09850B850C890D890E890F9909950B950C9A0E9A +0FA40BA40CAB0EAB0FB011CF11DF11FF11655D005D050E012B01353332363F0101330901 +3302934E947C936C4C543321FE3BC3015E015EC368C87A9A488654044EFC94036C000000 +00010058000003DB04600009009D401A081102030203110708074208A900BC03A9050803 +01000401060A10DC4BB00B544BB00C545B58B90006FFC038594BB0135458B90006004038 +59C432C411393931002FECF4EC304B5358071005ED071005ED5922014042050216022602 +47024907050B080F0B18031B082B08200B36033908300B40014002450340044005430857 +0359085F0B6001600266036004600562087F0B800BAF0B1B5D005D132115012115213501 +2171036AFD4C02B4FC7D02B4FD650460A8FCDB93A803250000010100FEB2041706140024 +00774034190F150B0625091A10151D0B05202103000BA90900A901C00915A913B1250C09 +0A05241619001D0A05130214002019430A0F052510D44BB00C5458B90005004038593CC4 +FC3CC43239391112391112393911123939310010FCECC4F4EC10EE121739123911393911 +1239111239393001B20026015D05152322263D0134262B01353332363D0134363B011523 +22061D011406071E011D0114163304173EF9A96C8E3D3D8F6BA9F93E448D565B6E6F5A56 +8DBE9094DDEF97748F7395F0DD938F588DF89D8E191B8E9CF88D580000010104FE1D01AE +061D00030012B70100B1040005020410D4EC310010FCCC300111231101AEAA061DF80008 +0000000000010100FEB2041706140024008740361F251B160C0F081B0B15190F04052003 +0019A91B00A923C01B0FA911B1251C191A150F010400081A15231204001A1F154310000B +042510D44BB00A5458B90004FFC038594BB00E5458B90004004038593CC432FC3CC41112 +39391112391112393911123939310010FCECC4F4EC10EE12173911123939113911393911 +12393001B20026015D053332363D013436372E013D0134262B01353332161D0114163B01 +152322061D0114062B010100468C555A6F6F5A558C463FF9A76C8E3E3E8E6CA7F93FBE56 +8FF89C8E1B198E9DF88E578F93DDF095738F7497EFDD9400000100D901D305DB0331001D +0023401001101B0C0013049C1B139C0C1E000F1E10D4C4310010D4FCD4EC10C011123939 +3001150E01232227262726272623220607353E01333217161716171633323605DB69B361 +6E920B05070F9B5E58AC6269B3616E930A05080E9B5E56A90331B24F443B040203053E4D +53B24F453C040203053E4C0000020135FE8B020004600003000900654011070083048102 +BC0A08070400030501000A10FC3CEC323939310010F4E4FCCC30014BB00B5458BD000A00 +400001000A000AFFC03811373859014BB00F544BB010545B4BB013545B58BD000AFFC000 +01000A000A00403811373859B6000B200B500B035D012335331123111333130200CBCBCB +15A2140362FEFA2B028F0165FE9B0000000200ACFEC704230598000600210051402B1316 +14000F0C010B078608880B10860F880CB914160BB91D1F1CB8168C221C1500091E130B0F +070412192210DCECD43CD43C3CEC3232310010E4F43CC4EC10C4FEF4EE10F5EE12391112 +391112393025110E0115141601152E0127033E0137150E01071123112600111000371133 +131E0102A693A4A402104A88440146894841894D66F1FEF70109F16601498983035812E2 +B8B9E203A1AC292A03FCA0052A27AA1E2307FEE4012014013301010102013216011FFEE1 +04210000000100810000046205F0001B00604021071608018600120AA914080C04A00094 +1991100CA00E000D090B071C130F15111C10DC3CCCCCFC3CC4D4C431002FEC32F4E4EC10 +D43CEE3210EE11393930014BB00C5458BD001CFFC00001001C001C00403811373859B436 +01360202005D01152E012322061D0121152111211521353311233533351036333216044E +4C883D94740187FE79022DFC1FECC7C7D6E83D9705B4B629299BD4D78FFE2FAAAA01D18F +EE0105F31F0000000002005E005204BC04B20023002F0083404903091B15042D1E00271C +02211D0C122D140B0A03130F011D2DB913EB0FEC27B91DEB21301E0C0012042A2414301C +151B2A1D131C180903240B0A0103022428027306742A281C73183010DCE4ECF4E4EC1217 +391239391112393912393911123911121739310010D4E4ECF4E4EC10C011121739123939 +1112393911393912173930013717071E01151406071707270E01232226270727372E0135 +3436372737173E01333216133426232206151416333236037BCF72CE25242628D172CF3B +743D3A783DCF71CF25252626CF73CF3774403C755C9B72709E9D71719C03E1D173CE3B77 +3E3F7339CF71CF28262525CF73CE3E763A407438CE73CF272524FE7C709A9A70729C9D00 +00010052000004C305D5001800C6404610021116110F020E0F1616110F02100F080D080E +020D0D08420F0B090400D31706120BD31409100D81020C090E0305160F03151210030011 +66130065011C0D660A056507031910D43CEC32ECFCEC32EC12173912393911173931002F +E432D43CEC32D43CEC32111239304B5358071005ED071008ED071008ED071005ED592201 +4BB00C5458BD0019FFC0000100190019004038113738594028860F900FA60FA00FB50F05 +270C270D270E291028112812370E3910870C8812A60DA50EAA10A9110E5D005D01211123 +112135213527213521013309013301211521071521048DFE63C9FE6001A054FEB40108FE +C3BE017B0179BFFEC20108FEB554019F01C7FE3901C77B339B7B024AFD4402BCFDB67B9B +3300000000020104FEA201AE059800030007001C400D01F50004F5050804000506020810 +DC3CEC32310010D4ECD4EC30011123111311231101AEAAAAAA0198FD0A02F60400FD0A02 +F60000000002005CFF3D03A205F0000B003E0091403C2F302A0600171D3036040D278A26 +0D8A0C2AC626C52310C60CC53C91233F2F0600173004131D2D0936031357392D57200957 +0C221A3926220357333F10DCECE4C4D4E4ECD4EC10EE113911123911173939310010C4F4 +E4EC10E6EE10EE10EE111739393911123930014BB00A544BB00B545B4BB00C545B4BB00E +545B58BD003F00400001003F003FFFC03811373859010E01151416173E0135342613152E +0123220615141716171E01151406071E0115140623222627351E0133323635342F012E01 +353436372E01353436333216017B3F3E8BFA3F3E8FCC538F38616CCE1A0ED3835C5D3E39 +CCAD499A5857943A6671DD19D6805D5B3B3BC8A6499903A82E5A2E4C85872D5B2E4B8802 +93A4272750475A730F08779A655A8C35346D408EA81D1DA42727544C667B0E7899665B8F +312C7045829F1D00000200D7054603290610000300070092400E0602CE0400CD08016400 +0564040810DCFCD4EC310010FC3CEC3230004BB00A544BB00D545B58BD00080040000100 +080008FFC03811373859014BB00C544BB00D545B4BB00E545B4BB017545B58BD0008FFC0 +00010008000800403811373859014BB00F544BB019545B58BD00080040000100080008FF +C03811373859401160016002600560067001700270057006085D0133152325331523025E +CBCBFE79CBCB0610CACACA000003011B000006E505CD0017002F0049004340263DCB3E3A +CC41CA2431CB3034CC47CA18C900C824C90C3761443D305E2A0906445E1E0906124A10DC +CCFCEC10FEED3210EE31002FEEF6FEFDEED6EE10FDEED6EE300132041716121514020706 +04232224272602353412373624172206070E01151416171E01333236373E01353426272E +0117152E0123220615141633323637150E0123222635343633321604009801076D6D6C6C +6D6DFEF99898FEF96D6D6C6C6D6D01079883E25E5E60605E5EE28384E35E5D5D5E5C5EE3 +A742824295A7AB9B407A42438946D8FBFBD8498805CD6E6D6DFEFA9A98FEFB6D6D6E6E6D +6D0105989A01066D6D6E675E5E5EE58281E35E5E5F5F5E5DE28385E35D5E5EF5812120AF +9D9FAE1F227F1D1CF4D0D1F21C0000000003007301D5033B05F00003001E0029005F4033 +280725041F12181002E3001FDD1000E125DD050A19DF18DE15DD0AE01C912A00180D1F10 +220602012811066B046C18226B0D2A10DCECCCFCEC3232C0C011123939111239310010F4 +E4FCF4EC10C4EEEDD6EE10EE11123912391139393013211521011123350E012322263534 +363B0135342623220607353E013332160522061514163332363D018B02B0FD5002AE952C +905D8098BFBCB675753E8844499145B7B3FEECA17E6252688202507B02B8FE40703F4487 +71878A045B5B22227F1C1CB0F0434F404D90721D0002009E008D042504230006000D0086 +404903E804050402E8010205050402E8030206000601E80000060AE80B0C0B09E808090C +0C0B09E80A090D070D08E807070D4209020B04E70700A60E090C05020703006F050A076F +0C6E0E10FCFC3CD4EC321139111239310010F43CEC323939304B5358071004ED071008ED +071008ED071004ED071004ED071008ED071008ED071004ED592201150901150135131509 +011501350425FED3012DFE2B23FED3012DFE2B0423BFFEF4FEF4BF01A25201A2BFFEF4FE +F4BF01A252000000000100D9011F05DB035E00050017400A049C020006031701000610DC +D4EC310010D4C4EC30132111231121D90502A8FBA6035EFDC10195000001006401DF027F +028300030011B6009C020401000410DCCC310010D4EC301321152164021BFDE50283A400 +0004011B000006E505CD0017002F0038004C006040364542433F32C94830C9394A43CA0C +39CA00C918C80CC924484533300431423C3F39364931604B3660433C5E12091E4B5E0609 +1E5F2A4D10DCE4FCEC10FEFDC4EE10EE32113939123912173931002FEEF6FEED10ED3210 +EED6EE3912393930012206070E01151416171E01333236373E01353426272E0127320417 +161215140207060423222427260235341237362413231133323635342627321615140607 +1E011F0123272E012B01112311040083E25E5E60605E5EE28384E35E5D5D5E5C5EE38498 +01076D6D6C6C6D6DFEF99898FEF96D6D6C6C6D6D01077D7B7B6E575866B0AE696018432E +89AC813B4936429B05665E5E5EE58281E35E5E5F5F5E5DE28385E35D5E5E676E6D6DFEFA +9A98FEFB6D6D6E6E6D6D0105989A01066D6D6EFE62FEEC3E4B4C3F677779567011084D49 +DFD16033FE9C0344000100D50562032B05F60003002FB702EF00EE0401000410D4CC3100 +10FCEC30004BB009544BB00E545B58BD0004FFC000010004000400403811373859132115 +21D50256FDAA05F694000000000200C30375033D05F0000B001A0020401106C315C400C3 +0C911B095A125B035A181B10DCECFCEC310010F4ECFCEC30012206151416333236353426 +273216171E011514062322263534360200506E6E50506E6F4F40762B2E2EB98687B4B805 +6F6F504F6D6D4F4F7081312E2D724284B7B48786BA000000000200D9000005DB0504000B +000F002E401805D007039C00D009010C9C0E0D02150400170C08150A061010D43CEC32FC +3CEC3231002FECD43CECFC3CEC300111211521112311213521110121152103AE022DFDD3 +A8FDD3022DFDD30502FAFE0504FE7DAAFE7D0183AA0183FBA6AA00000001005E029C02B4 +05F00018004A4024007D060400177D060604420402000EDD0F00DD02F70BDD0F12911900 +0E087E01150E031910DCC4D4C4EC1139310010F4C4ECFCEC10EE111239304B5358071005 +ED17320705ED5922012115213536370035342623220607353E0133321615140106010C01 +A8FDAA223F01586855347A484D853991AEFEB538030E726E1F3801315E425123237B1C1C +846C8BFEE430000000010062028D02CD05F00028004840270015130ADD091FDD2013DD15 +0DDD09F806F71CDD20F823912916130014197E26107E03141F092910DCC4C4D4ECD4EC11 +393939310010F4E4ECFCE4ECD4EC10EE10EE11123930011E0115140623222627351E0133 +32363534262B013533323635342623220607353E01333216151406020C5C65BEB1397D46 +3477436D786F6C565E5E61645F28665149803790A95A0460126D527C861514791B1A4F46 +4A4C6C3F3C3A3D1217731112766345600001017304EE0352066600030031400902B400B3 +040344010410D4EC310010F4EC30004BB009544BB00E545B58BD0004FFC0000100040004 +0040381137385901330123028BC7FEBA990666FE88000000000100AEFE5604E504600020 +004D402513191F03160603090C0301120F06871C168C0A01BC00BD2119091209080B4E1F +020800462110FCEC32F4ECC41239310010E4E432F43CECDCC41117391112173930B61F22 +6022CF2203015D13113311141633323635113311141633323637150E01232226270E0123 +22262711AEB88A879495B8232509201C29492345520F329162668F2AFE56060AFD489194 +A8A8028DFCA23C390B0C9417164E504F4F4E4EFDD70000000001009EFF3B043905D5000D +00254012080204C1008106020E00075D05035D010B0E10D4D4FCDCEC39310010C432F4EC +1139300121112311231123112E01353424027901C08DBE8ED7EB010405D5F966061FF9E1 +034E11DDB8BEE800000100DB024801AE034600030012B7028300040119000410D4EC3100 +10D4EC3013331523DBD3D30346FE000000010123FE7502C100000013001F400E09060A0D +F306001300102703091410DCD4ECD4CC31002FD4FCC4123930211E011514062322262735 +1E01333236353426270254373678762E572B224A2F3B3C2B2D3E6930595B0C0C83110F30 +2E1E573D00010089029C02C505DF000A002C40180700DD0903DD0402DD09F705910B087C +065D037C017C000B10DCF4E4FCE4310010F4ECECD4EC10EE323013331107353733113315 +219CCCDFE689CDFDD7030A0263297427FD2B6E000003006001D5036405F00003000F001B +002E401902E300E116DD0AE010DD04911C00130D01196B076C136B0D1C10DCECFCEC3911 +1239310010F4ECF4ECFCEC30132115210132161514062322263534361722061514163332 +363534268B02B0FD500158B3CECEB3B3D0D0B3697E7F68697D7C02507B041BDDBFBFDBDC +BEBFDD73A18885A0A08589A0000200C1008D044804230006000D008640490CE80D0C090A +090BE80A0A090DE80708070CE80B0C08080705E8060502030204E803030206E800010005 +E80405010100420C050A03E70700A60E0C08010500086F0A07016F0300700E10FC3CFCD4 +3CEC1239111239310010F43CEC323939304B5358071008ED071004ED071004ED071008ED +071008ED071004ED071004ED071008ED59221301150135090125011501350901C101D5FE +2B012DFED301B201D5FE2B012DFED30423FE5E52FE5EBF010C010CBFFE5E52FE5EBF010C +010C0000FFFF0089FFE3077F05F01026007B000010270B4F048BFD6410070B2603350000 +FFFF0089FFE3073F05F01026007B000010270074048BFD6410070B2603350000FFFF0062 +FFE3077F05F010260075000010270B4F048BFD6410070B26033500000002008FFE6E03AC +0460002000240086402F201A05020406190010860F880C002183230C9513BD23BC250622 +1916090501001A2209001C01221C21260F091C162510DCECD4FCECD4EC11123911123911 +12391239310010E4F4EC10FECD10F4EE123939173930014BB010544BB012545B4BB01354 +5B58BD0025FFC000010025002500403811373859400B7404740574067407761C055D0133 +1514060F010E0115141633323637150E012322263534363F013E01373E01351323353301 +F4BE375A5A3A33836D4EB4605EC067B8E04959583026080706C4CACA02CF9C6582575835 +5E31596E4643BC3938C29F4C8956562F3519153C36010EFEFFFF001000000568076B1226 +002400001007171904BC0175FFFF001000000568076B1226002400001007171704BC0175 +FFFF001000000568076D1226002400001107171A04BC01750010B4050D110A072B40050F +0D0011025D310000FFFF001000000568075E1226002400001107171804BC01750014B40A +142305072B400940144F2320142F23045D310000FFFF001000000568074E122600240000 +1107171604BC01750014B40A120D05072B400930123F0D00120F0D045D31000000030010 +00000568076D000B000E002100CB40540C110D0C1B1C1B0E111C1B1E111C1B1D111C1C1B +0D11210F210C110E0C0F0F2120110F211F11210F21420C1B0F0D0903C115091E950D098E +201C1E1D1C18201F210D12060E180C061B0056181C0F0656121C212210D4C4D4EC3210D4 +EE32113911391112391139391112393931002F3CE6D6EE10D4EE1112393939304B535807 +1005ED0705ED071008ED071005ED071005ED0705ED0705ED071008ED5922B2202301015D +40201A0C730C9B0C03070F081B5023660D690E750D7B0E791C791D7620762180230C5D00 +5D013426232206151416333236030121012E013534363332161514060701230321032303 +54593F4057583F3F5998FEF00221FE583D3E9F7372A13F3C0214D288FD5F88D5065A3F59 +57413F5858FEF3FD19034E29734973A0A172467629FA8B017FFE81000002000800000748 +05D5000F00130087403911110E0F0E10110F0F0E0D110F0E0C110E0F0E420595030B9511 +01951095008111079503AD0D0911100F0D0C050E0A00040806021C120A0E1410D4D43CEC +32D4C4C41112173931002F3CECECC4F4ECEC10EE10EE304B5358071005ED0705ED071005 +ED071005ED5922B2801501015D4013671177107711860C851096119015A015BF15095D01 +152111211521112115211121032301170121110735FD1B02C7FD3902F8FC3DFDF0A0CD02 +718BFEB601CB05D5AAFE46AAFDE3AA017FFE8105D59EFCF003100000FFFF0073FE750527 +05F01226002600001007007A012D0000FFFF00C90000048B076B12260028000010071719 +049E0175FFFF00C90000048B076B12260028000010071717049E0175FFFF00C90000048B +076D1226002800001107171A049E017500074003400C015D31000000FFFF00C90000048B +074E12260028000011071716049E017500094005400C4010025D3100FFFF003B000001BA +076B1226002C000010071719032F0175FFFF00A20000021F076B1226002C000010071717 +032F0175FFFFFFFE00000260076D1226002C00001107171A032F01750008B401060A0007 +2B310000FFFF000600000258074E1226002C000011071716032F01750008B4000A070107 +2B3100000002000A000005BA05D5000C0019006740201009A90B0D95008112950E0B0707 +011913040F0D161904320A110D1C0800791A10F43CEC32C4F4EC10C4173931002FC632EE +F6EE10EE32304028201B7F1BB01B039F099F0A9F0B9F0C9F0E9F0F9F109F11BF09BF0ABF +0BBF0CBF0EBF0FBF10BF11105D015D132120001110002901112335331311211521113320 +0011100021D301A001B10196FE69FE50FE60C9C9CB0150FEB0F30135011FFEE1FECB05D5 +FE97FE80FE7EFE9602BC9001E3FE1D90FDEA0118012E012C01170000FFFF00C900000533 +075E1226003100001107171804FE01750014B400132204072B400930133F2210131F2204 +5D310000FFFF0073FFE305D9076B1226003200001007171905270175FFFF0073FFE305D9 +076B1226003200001007171705270175FFFF0073FFE305D9076D1226003200001107171A +052701750010B40F1A1E15072B40051F1A101E025D310000FFFF0073FFE305D9075E1226 +0032000011071718052701750018B403213009072B400D30213F3020212F3010211F3006 +5D310000FFFF0073FFE305D9074E12260032000011071716052701750014B4031F1A0907 +2B4009401F4F1A101F1F1A045D31000000010119003F059C04C5000B0085404D0A9C0B0A +070807099C080807049C0304070706059C060706049C0504010201039C0202010B9C0001 +000A9C090A010100420A080706040201000805030B090C0B0A0907050403010802000806 +0C10D43CCC321739310010D43CCC321739304B5358071008ED071005ED071005ED071008 +ED071005ED071008ED071005ED071008ED59220902070901270901370901059CFE3701C9 +77FE35FE357601C8FE387601CB01CB044CFE35FE377901CBFE357901C901CB79FE3501CB +00030066FFBA05E5061700090013002B009E403C1D1F1A0D2B2C130A0100040D29262014 +0D042A261E1A0495260D951A91268C2C2B2C2A141710201E23130A0100041D2910071F07 +192333101917102C10FCECFCECC0111239391739123939111239391139310010E4F4EC10 +EE10C010C011123939123912173912391112393930402A57005A15571955216A1565217B +15761C7521094613590056136A006413641C6A287C007313761C7A280B5D015D09011E01 +333200113426272E01232200111416170726023510002132161737170716121510002122 +2627072704B6FD333EA15FDC010127793DA15FDCFEFD2727864E4F0179013B82DD57A266 +AA4E50FE88FEC680DD5BA2670458FCB240430148011A70B8B84043FEB8FEE570BC449E66 +0108A0016201A54D4BBF59C667FEF69EFE9FFE5B4B4BBF58FFFF00B2FFE30529076B1226 +003800001007171904EE0175FFFF00B2FFE30529076B1226003800001007171704EE0175 +FFFF00B2FFE30529076D1226003800001107171A04EE01750014B40A141800072B40092F +1420181F141018045D310000FFFF00B2FFE30529074E1226003800001107171604EE0175 +001CB401191409072B401150195F1440194F1420192F1410191F14085D310000FFFFFFFC +000004E7076B1226003C00001007171704730175000200C90000048D05D5000C0015003D +401B0E95090D9502F600810B150F090304011219063F0D0A011C00041610FCEC3232FCEC +11173931002FF4FCECD4EC3040090F171F173F175F1704015D1333113332041514042B01 +1123131133323635342623C9CAFEFB0101FEFFFBFECACAFE8D9A998E05D5FEF8E1DCDCE2 +FEAE0427FDD1928686910000000100BAFFE304AC0614002F009A40302D27210C04060D20 +00042A1686171AB9132AB90397138C2E0C090D1D2021270908242708061D082410162D08 +1000463010FCC4FCCC10C6EED4EE10EE1139391239123931002FE4FEEE10FED5EE121739 +17393040400F050F060F070F270F288A0C8A0D070A060A070A0B0A0C0A0D0A1F0D200A21 +0C220426190D191F19203A203A214D1F4D20492149226A1F6A20A506A507A620185D015D +133436333216170E011514161F011E0115140623222627351E013332363534262F012E01 +353436372E01232206151123BAEFDAD0DB0397A83A4139A660E1D3408849508C4174783B +655C6057A7970883718288BB0471C8DBE8E00873602F512A256A8E64ACB71918A41E1D5F +5B3F543E373B875B7FAC1D67708B83FB93000000FFFF007BFFE3042D0666122600440000 +110600435200000B40073F262F261F26035D3100FFFF007BFFE3042D0666122600440000 +110600765200000B40073F262F261F26035D3100FFFF007BFFE3042D0666122600440000 +1106028852000008B40B282C14072B31FFFF007BFFE3042D06371226004400001106029E +52000014B4142E3C0B072B4009202E2F3C102E1F3C045D31FFFF007BFFE3042D06101226 +004400001106006A52000020B4142D280B072B40157F286F28502D5F28402D4F28302D3F +28002D0F280A5D31FFFF007BFFE3042D07061226004400001106029C52000025400E262C +142C260B0732381438320B072B10C42B10C4310040093F353F2F0F350F2F045D30000000 +0003007BFFE3076F047B00060033003E01034043272D253D0E0D0034A925168615881200 +A90E3A12B91C192E862DBA2A03B90EBB07310AB81F198C253F343726060F0025371C0726 +0F1500080D3D26080F2D370822453F10FCECCCD4FC3CD4ECC41112393911391112391112 +39310010C4E432F43CC4E4FC3CF4EC10C4EE3210EE10F4EE10EE11391139111239304081 +302B302C302D302E302F3030402B402C402D402E402F4030502B502C502D502E502F5030 +852B853080409040A040B040C040D040E040E040F0401D3F003F063F0D3F0E3F0F05302C +302D302E302F402C402D402E402F502C502D502E502F6F006F066F0D6F0E6F0F602C602D +602E602F702C702D702E702F802C802D802E802F1D5D71015D012E0123220607033E0133 +32001D01211E0133323637150E01232226270E0123222635343633213534262322060735 +3E013332160322061514163332363D0106B601A58999B90E444AD484E20108FCB20CCCB7 +68C86464D06AA7F84D49D88FBDD2FDFB0102A79760B65465BE5A8ED5EFDFAC816F99B902 +9497B4AE9E01305A5EFEDDFA5ABFC83535AE2A2C79777878BBA8BDC0127F8B2E2EAA2727 +60FE18667B6273D9B4290000FFFF0071FE7503E7047B1226004600001007007A008F0000 +FFFF0071FFE3047F066612260048000010070043008B0000FFFF0071FFE3047F06661226 +0048000010070076008B0000FFFF0071FFE3047F066612260048000011070288008B0000 +0008B4151E221B072B310000FFFF0071FFE3047F06101226004800001107006A008B0000 +000740034020015D31000000FFFFFFC7000001A6066610270043FF1D0000120600F30000 +FFFF00900000026F066610270076FF1D0000120600F30000FFFFFFDE0000025C06661226 +00F3000011070288FF1D00000008B401070B00072B310000FFFFFFF40000024606101226 +00F300001107006AFF1D00000008B4000B0801072B31000000020071FFE304750614000E +00280127405E257B26251E231E247B23231E0F7B231E287B27281E231E26272827252425 +2828272223221F201F2120201F42282726252221201F08231E030F2303B91B09B9158C1B +23B1292627120C212018282523221F051E0F060C121251061218452910FCECF4EC113939 +173912393911123939310010ECC4F4EC10EE12391239121739304B535807100EC9071008 +C9071008C907100EC9071008ED070EED071005ED071008ED5922B23F2A01015D40761625 +2B1F28222F232F2429252D262D272A283625462558205821602060216622752075217522 +132523252426262627272836243625462445255A205A21622062217F007F017F027A037B +097F0A7F0B7F0C7F0D7F0E7F0F7F107F117F127F137F147B157A1B7A1C7F1D7F1E762076 +217822A02AF02A275D005D012E0123220615141633323635342613161215140023220011 +340033321617270527252733172517050346325829A7B9AE9291AE36097E72FEE4E6E7FE +E50114DD12342A9FFEC1210119B5E47F014D21FED903931110D8C3BCDEDEBC7ABC01268F +FEE0ADFFFEC9013700FFFA01370505B46B635CCC916F6162FFFF00BA0000046406371226 +005100001007029E00980000FFFF0071FFE3047506661226005200001006004373000000 +FFFF0071FFE3047506661226005200001006007673000000FFFF0071FFE3047506661226 +005200001106028873000008B40F1A1E15072B31FFFF0071FFE304750637122600520000 +1106029E73000014B415202E0F072B400920202F2E10201F2E045D31FFFF0071FFE30475 +06101226005200001106006A73000014B4031F1A09072B4009401F4F1A301F3F1A045D31 +000300D9009605DB046F00030007000B0029401400EA0206EA0402089C040A0C09050172 +0400080C10DCD43CFC3CC4310010D4C4FCC410EE10EE3001331523113315230121152102 +DFF6F6F6F6FDFA0502FAFE046FF6FE12F50241AA00030048FFA2049C04BC00090013002B +00E4403C2B2C261F1D1A130A0100040D292620140D042A261E1A04B9260DB91AB8268C2C +2B2C2A141710201E23130A01000410071F1D0712235129101217452C10FCEC32F4EC32C0 +11121739123939111239391139310010E4F4EC10EE10C010C01112393912391217391139 +3911123930407028013F2D5914561C551D56206A1566217F007B047F057F067F077F087F +097F0A7F0B7F0C7B0D7A157B1A7F1B7F1C7F1D7F1E7F1F7F207B217F227F237F247F257B +269B199525A819A02DF02D2659005613551D5A2869006613651C6A287A007413761C7A28 +891E95189A24A218AD24115D015D09011E01333236353426272E0123220615141617072E +01351000333216173717071E011510002322262707270389FE1929674193AC145C2A673E +97A913147D36360111F15D9F438B5F923536FEEEF060A13F8B600321FDB02A28E8C84F75 +9A2929EBD3486E2E974DC577011401383334A84FB34DC678FEEDFEC73433A84EFFFF00AE +FFE304580666122600580000100600437B000000FFFF00AEFFE304580666122600580000 +100600767B000000FFFF00AEFFE304580666122600580000110602887B000008B40B171B +01072B31FFFF00AEFFE3045806101226005800001106006A7B000018B4021B180A072B40 +0D401B4F18301B3F18001B0F18065D31FFFF003DFE56047F06661226005C000010060076 +5E000000000200BAFE5604A406140010001C003E401B14B905081AB9000E8C08B801BD03 +971D11120B471704000802461D10FCEC3232F4EC310010ECE4E4F4C4EC10C6EE30400960 +1E801EA01EE01E04015D2511231133113E01333200111002232226013426232206151416 +3332360173B9B93AB17BCC00FFFFCC7BB10238A79292A7A79292A7A8FDAE07BEFDA26461 +FEBCFEF8FEF8FEBC6101EBCBE7E7CBCBE7E70000FFFF003DFE56047F06101226005C0000 +1106006A5E000016B418171219072B400B30173F1220172F121F12055D310000FFFF0010 +0000056807311027007100BC013B1306002400000010B40E030209072B400540034F0202 +5D310000FFFF007BFFE3042D05F6102600714A001306004400000010B41803020F072B40 +056F027F03025D31FFFF00100000056807921027029A00CE014A1306002400000012B418 +000813072B310040056F006F08025D30FFFF007BFFE3042D061F1026029A4FD713060044 +00000008B422000819072B31FFFF0010FE7505A505D51226002400001007029D02E40000 +FFFF007BFE750480047B1226004400001007029D01BF0000FFFF0073FFE30527076B1226 +0026000010071717052D0175FFFF0071FFE303E706661226004600001007007600890000 +FFFF0073FFE30527076D1027171A054C01751306002600000009B204041E103C3D2F3100 +FFFF0071FFE303E706661226004600001007028800A40000FFFF0073FFE3052707501027 +171E054C0175120600260000FFFF0071FFE303E70614102702B804A40000120600460000 +FFFF0073FFE30527076D1226002600001107171B052D0175000740031F1D015D31000000 +FFFF0071FFE303E706661226004600001007028900890000FFFF00C9000005B0076D1027 +171B04EC0175120600270000FFFF0071FFE305DB06141226004700001107171505140000 +000B40075F1D3F1D1F1D035D31000000FFFF000A000005BA05D510060092000000020071 +FFE304F4061400180024004A40240703D30901F922B900161CB90D108C16B805970B021F +0C04030008080A0647191213452510FCECF43CC4FC173CC431002FECE4F4C4EC10C4EEFD +3CEE3230B660268026A02603015D01112135213533153315231123350E01232202111000 +33321601141633323635342623220603A2FEBA0146B89A9AB83AB17CCBFF00FFCB7CB1FD +C7A79292A8A89292A703B6014E7D93937DFAFCA86461014401080108014461FE15CBE7E7 +CBCBE7E7FFFF00C90000048B07331226002800001007007100A1013DFFFF0071FFE3047F +05F61027007100960000130600480000000740037000015D31000000FFFF00C90000048B +076D1027171D04A10175130600280000000740034000015D31000000FFFF0071FFE3047F +06481027029A00960000130600480000000740037000015D31000000FFFF00C90000048B +07501027171E049E0175120600280000FFFF0071FFE3047F0614102702B8049600001206 +00480000FFFF00C9FE75048D05D51226002800001007029D01CC0000FFFF0071FE75047F +047B1226004800001007029D01780000FFFF00C90000048B07671226002800001107171B +04A6016F00074003400C015D31000000FFFF0071FFE3047F066112260048000011070289 +0094FFFB0010B400211D0F072B40050F21001D025D310000FFFF0073FFE3058B076D1027 +171A055C01751306002A00000009B2040415103C3D2F3100FFFF0071FE56045A06661026 +028868001306004A00000009B204040A103C3D2F31000000FFFF0073FFE3058B076D1226 +002A00001007171D051B0175FFFF0071FE56045A06481226004A00001007029A008B0000 +FFFF0073FFE3058B07501027171E055C01751306002A000000080040033F00015D300000 +FFFF0071FE56045A0614102702B8046A00001206004A0000FFFF0073FE01058B05F01027 +02D7055EFFED1206002A0000FFFF0071FE56045A0634102702C303E0010C1206004A0000 +FFFF00C90000053B076D1027171A050201751306002B00000014B40C020607072B40092F +0220061F021006045D310000FFFFFFE500000464076D1027171A031601751306004B0000 +002AB414020613072B31004BB00E5158BB0014FFC00013FFC0383859400D901490138014 +801340144013065D000200C90000068B05D500130017003A401E060212950914110C9515 +AD0400810E0A070C17041C0538120D14011C001810DCEC3232CCFCEC3232CC31002F3CE4 +32FCECDC3232EC3232300133152135331533152311231121112311233533171521350171 +CA02DECAA8A8CAFD22CAA8A8CA02DE05D5E0E0E0A4FBAF02C7FD390451A4A4E0E0000000 +000100780000049F0614001B003E40210309000316010E12870D1506871619B810970A01 +0208004E130E11150908100B1C10DC32EC3232CCCCF4EC31002F3CECF4C4ECDC32EC3211 +1217393001112311342623220615112311233533353315211521113E01333216049FB87C +7C95ACB97D7DB90160FEA042B375C1C602A4FD5C029E9F9EBEA4FD8704F6A47A7AA4FEBC +6564EF00FFFFFFE400000278075E10271718032E01751306002C00000008B41E09181F07 +2B310000FFFFFFD30000026706371027029EFF1D0000130600F300000008B41C08161D07 +2B310000FFFF000300000259073110270071FF2E013B1306002C00000008B40403020507 +2B310000FFFFFFF20000024805F510270071FF1DFFFF130600F300000008B40403020507 +2B310000FFFFFFF500000267076D1027171D032E01751306002C00000008B40E00080F07 +2B310000FFFFFFE40000025606481027029AFF1D0000130600F300000008B40E00080F07 +2B310000FFFF00B0FE75022505D51027029DFF6400001206002C0000FFFF0096FE75020B +06141027029DFF4A00001206004C0000FFFF00C90000019507501226002C00001107171E +032F01750013B306010700103C103C3100B43F073F06025D30000000000200C100000179 +047B00030004002C400B04B800BF0204010800460510FCEC3931002FECE4304011040434 +0444041006400650066006700608015D1333112313C1B8B85C0460FBA0047B00FFFF00C9 +FE6603EF05D51027002D025C00001106002C00000008400311040110EC310000FFFF00C1 +FE5603B106141027004D023800001106004C00000008400319460110EC310000FFFFFF96 +FE66025F076D1027171A032E01751306002D00000008B408020607072B310000FFFFFFDB +FE56025C066610270288FF1D0000130601F900000008B408020607072B310000FFFF00C9 +FE1E056A05D5102702D7051B000A1206002E0000FFFF00BAFE1E049C0614102702D704AC +000A1206004E0000000100BA0000049C0460000A00BB4028081105060507110606050311 +040504021105050442080502030300BC09060501040608010800460B10FCEC32D4C41139 +31002F3CEC321739304B5358071004ED071005ED071005ED071004ED5922B2100C01015D +405F04020A081602270229052B0856026602670873027705820289058E08930296059708 +A3021209050906020B030A072803270428052B062B07400C6803600C8903850489058D06 +8F079A039707AA03A705B607C507D607F703F003F704F0041A5D71005D13331101330901 +23011123BAB90225EBFDAE026BF0FDC7B90460FE1B01E5FDF2FDAE0221FDDF00FFFF00C9 +0000046A076C10271717036E01761206002F0000FFFF00C10000024A076C10271717035A +01761306004F0000001EB10304103C31004BB00E5158B900000040385940079F008F004F +00035D30FFFF00C9FE1E046A05D5102702D7049B000A1206002F0000FFFF0088FE1E01AD +0614102702D7031E000A1306004F0000000740034000015D31000000FFFF00C90000046A +05D510271715029FFFC31206002F0000FFFF00C100000300061410271715023900021106 +004F0000000940058F001F00025D3100FFFF00C90000046A05D510270079023100771206 +002F0000FFFF00C10000028406141027007900D600731106004F000000174BB00D514BB0 +11534BB018515A5B58B9000000403859310000000001FFF20000047505D5000D003F401E +0C0B0A040302060006950081080304010B0E000405011C0C073A0900790E10F43CECC4FC +3CC411123911123931002FE4EC11173930B4300F500F02015D1333112517011121152111 +072737D3CB013950FE7702D7FC5E944DE105D5FD98DB6FFEEEFDE3AA023B6A6E9E000000 +00010002000002480614000B005E401A0A090804030206009706030401090A00047A0501 +080A7A07000C10D43CE4FC3CE411123911123931002FEC173930014BB0105458BD000C00 +400001000C000CFFC038113738594013100D400D500D600D73047A0A700DE00DF00D095D +133311371707112311072737C7B87D4CC9B87B4AC50614FDA65A6A8DFCE3029A586A8D00 +FFFF00C900000533076C1027171704C50176130600310000000740034F00015D31000000 +FFFF00BA00000464066D102600764207130600510000000940053F004F00025D31000000 +FFFF00C9FE1E053305D5102702D70500000A120600310000FFFF00BAFE1E0464047B1027 +02D70490000A120600510000FFFF00C900000533075F1226003100001107171B04F50167 +0014B4040F0B00072B40092F0F200B1F0F100B045D310000FFFF00BA0000046406661226 +0051000011070289008D00000010B40019150C072B40050F190015025D310000FFFF00CD +000005B905D510270051015500001006027E1B00000100C9FE56051905F0001C003B400D +191612181C1C120A051C07411D10FC4BB0105458B90007FFC03859EC32D4FCCC11310040 +0C199516B00702950E910881072FE4F4EC10F4EC30011021220615112311331536373633 +321219011407062B0135333236350450FECDB3D7CACA4E696A99E3E95152B55731664F03 +7F01ACFFDEFCB205D5F1864343FEC1FECCFC6FD561609C5AA0000000000100BAFE560464 +047B001F003B401C0D13000318150787061087181CB816BC15070D08004E131708164620 +10FCEC32F4ECC431002FE4F4C4ECD4EC1112173930B46021CF2102015D01111407062B01 +3533323736351134262322061511231133153637363332171604645251B5FEE96926267C +7C95ACB9B942595A75C1636302A4FD48D660609C30319902B29F9EBEA4FD870460AE6532 +32777800FFFF0073FFE305D90731102700710127013B1306003200000010B40D02030707 +2B40051F021003025D310000FFFF0071FFE3047505F51026007173FF1306005200000008 +B413020319072B31FFFF0073FFE305D9076D1027171D052701751306003200000010B411 +000817072B400510001F08025D310000FFFF0071FFE3047506481026029A730013060052 +00000008B41D080023072B31FFFF0073FFE305D9076B1027171F05270175120600320000 +FFFF0071FFE3047506661027029F00A00000120600520000000200730000080C05D50010 +0019003B401F059503110195008118079503AD091812100A1506021C1100040815190D10 +1A10FCECD4C4C4D4EC32123939393931002FECEC32F4EC3210EE30011521112115211121 +152120001110002117232000111000213307FAFD1A02C7FD3902F8FBD7FE4FFE4101BF01 +B16781FEBFFEC0014001418105D5AAFE46AAFDE3AA017C0170016D017CAAFEE1FEE0FEDF +FEDF000000030071FFE307C3047B0006002700330084403107080010860F880C00A9082E +0CB916132803B908BB22251FB819138C340600162231090F0008074B311209512B121C45 +3410FCECF4FCF4ECC4111239391239310010E432F43CC4E4EC3210C4EE3210EE10F4EE11 +12393040253F355F3570359F35CF35D035F035073F003F063F073F083F09056F006F066F +076F086F09055D71015D012E01232206070515211E0133323637150E01232226270E0123 +2200111000333216173E01333200252206151416333236353426070A02A48999B90E0348 +FCB20CCCB76AC86264D06AA0F25147D18CF1FEEF0111F18CD3424EE88FE20108FAB094AC +AB9593ACAC029498B3AE9E355ABEC73434AE2A2C6E6D6E6D01390113011401386F6C6B70 +FEDD87E7C9C9E7E8C8C7E900FFFF00C900000554076C1027171704950176120600350000 +FFFF00BA00000394066D1026007642071206005500000000FFFF00C9FE1E055405D51027 +02D70510000A120600350000FFFF0082FE1E034A047B102702D70318000A120600550000 +FFFF00C900000554075F1226003500001107171B047D016700080040035F1D015D300000 +FFFF00BA0000035A0666122600550000110602891B000010B411171309072B40050F1700 +13025D31FFFF0087FFE304A2076C1027171704950176120600360000FFFF006FFFE303C7 +066D1026007642071206005600000000FFFF0087FFE304A2076D1027171A049301751306 +00360000000BB404201529291049633A31000000FFFF006FFFE303C70666102602882500 +130600560000000BB404201529291049633A3100FFFF0087FE7504A205F0122600360000 +1007007A008B0000FFFF006FFE7503C7047B1226005600001006007A17000000FFFF0087 +FFE304A2076D1226003600001107171B048B0175000BB42B200E22221049633A31000000 +FFFF006FFFE303C70666122600560000110702BD04270000000BB42B200E22221049633A +31000000FFFFFFFAFE7504E905D51026007A50001206003700000000FFFF0037FE7502F2 +059E1026007AE1001206005700000000FFFFFFFA000004E9075F1226003700001107171B +047301670010B4010D0900072B310040035F08015D300000FFFF0037000002FE06821226 +005700001107171502370070000740038F14015D310000000001FFFA000004E905D5000F +00464018070B95040C09030F9500810905014007031C0C00400A0E1010D43CE4CCFC3CE4 +CC31002FF4EC3210D43CEC323001401300111F00100110021F0F1011401170119F11095D +032115211121152111231121352111210604EFFDEE0109FEF7CBFEF70109FDEE05D5AAFD +C0AAFDBF0241AA024000000000010037000002F2059E001D0043401F0816A90517041AA9 +00011BBC0D8710100D0E020608040008171B15191D461E10FC3C3CC432FC3C3CC4C43239 +3931002FECF43CC4FC3CDC3CEC3230B2AF1F01015D011121152115211521151417163B01 +15232227263D0123353335233533110177017BFE85017BFE85252673BDBDD55151878787 +87059EFEC28FE98EE98927279A504FD2E98EE98F013E0000FFFF00B2FFE30529075E1027 +171804EE01751306003800000010B41F091827072B400510091F18025D310000FFFF00AE +FFE3045806371027029E008300001306005800000008B41E081626072B310000FFFF00B2 +FFE3052907311027007100EE013B1306003800000014B40503020D072B40092F0220031F +021003045D310000FFFF00AEFFE3045805F5102700710083FFFF1306005800000008B406 +03020E072B310000FFFF00B2FFE30529076D1027171D04EE01751306003800000010B40F +000817072B400510001F08025D310000FFFF00AEFFE3045806481027029A008300001306 +005800000008B410000818072B310000FFFF00B2FFE30529076F1226003800001007029C +00F00069FFFF00AEFFE3045806CA1226005800001106029C7CC40009400540154021025D +31000000FFFF00B2FFE30529076B1027171F04EE0175120600380000FFFF00AEFFE3045E +06661027029F00B00000120600580000FFFF00B2FE75052905D51226003800001007029D +00FA0000FFFF00AEFE7504E8047B1226005800001007029D02270000FFFF0044000007A6 +07741027171A05F5017C1306003A00000008B415020614072B310000FFFF005600000635 +066D10270288014500071306005A00000008B415020614072B310000FFFFFFFC000004E7 +07741027171A0472017C1306003C00000008B40B020607072B310000FFFF003DFE56047F +066D102602885E071306005C00000008B418020617072B31FFFFFFFC000004E7074E1226 +003C000011071716047301750008B400100B04072B310000FFFF005C0000051F076C1027 +1717049501761206003D0000FFFF0058000003DB066D1026007642071206005D00000000 +FFFF005C0000051F07501027171E04BE01751206003D0000FFFF0058000003DB06141027 +02B8041700001306005D0000000E0140094F0A5F0AAF0ADF0A045D31FFFF005C0000051F +076D1226003D00001007171B04BE0175FFFF0058000003DB06661226005D000011060289 +1B000010B4010F0B00072B40050F0F000B025D310001002F000002F80614001000234012 +0B870A970102A905BC010A10080406024C1110FC3CCCFCCC31002FF4EC10F4EC30212311 +2335333534363B011523220706150198B9B0B0AEBDAEB063272603D18F4EBBAB99282967 +00020020FFE304A40614000F002C0044402504B910140CB9201C8C14B8222925A92C2427 +97222E45001218472A20062C2808252327462D10FC3CCCEC323232CCF4ECEC31002FF4DC +3CEC3210E4F4C4EC10C6EE30013427262322070615141716333237360136373633321716 +11100706232227262715231123353335331521152103E5535492925453535492925453FD +8E3A59587BCC7F80807FCC7B58593AB99A9AB90145FEBB022FCB74737374CBCB74737374 +0252643031A2A2FEF8FEF8A2A2313064A805047D93937D000003FF970000055005D50008 +00110029004340231900950A0995128101950AAD1F110B080213191F05000E1C1605191C +2E09001C12042A10FCEC32FCECD4EC111739393931002FECECF4EC10EE3930B20F220101 +5D01112132363534262301112132363534262325213216151406071E0115140423211122 +061D012335343601F70144A39D9DA3FEBC012B94919194FE0B0204E7FA807C95A5FEF0FB +FDE884769CC002C9FDDD878B8C850266FE3E6F727170A6C0B189A21420CB98C8DA05305F +693146B5A3000000FFFF00C9000004EC05D5120603A50000000200BAFFE304A406140016 +00260038401F1BB9000423B9100C8C04B81216A913971228451417120847101F16081346 +2710FCEC3232F4ECC4EC31002FF4EC10E4F4C4EC10C6EE30013637363332171611100706 +23222726271523112115250134272623220706151417163332373601733A59587BCC7F80 +807FCC7B58593AB9034EFD6B027253549292545353549292545303B6643031A2A2FEF8FE +F8A2A2313064A80614A601FCC0CB74737374CBCB7473737400020000000004EC05D5000A +00170033400C170B190019102E050B1C15162FDCEC32FCECC410CC31400905950CAD0B81 +069514002FECE4F4ECB315150B141112392F300134272623211121323736011121320415 +1404232111230104174F4EA3FEBC0144A34E4FFD7C014EFB0110FEF0FBFDE8C9013801B7 +8B4443FDDD444304A8FD9ADADEDDDA044401910000020000FFE304A406150012001E003E +400D111220131206470D1912080F102FDCEC3232F4ECC410CC31400E0016B903B80E0C1C +B9098C11970E002FE4F4ECC410F4ECC4B30F0F110E1112392F30013E0133320011100223 +22262715231123013301342623220615141633323601733AB17BCC00FFFFCC7BB13AB9BA +0122510272A79292A7A79292A703B66461FEBCFEF8FEF8FEBC6164A8044401D1FC1ACBE7 +E7CBCBE7E700000000010073FFE3052705F000190030401B19860088169503911A0D860C +881095098C1A1B10131906300D001A10DC3CF4ECEC310010F4ECF4EC10F4ECF4EC30133E +0133200011100021222627351E01332000111000212206077368ED8601530186FE7AFEAD +84ED6A66E78201000110FEF0FF0082E76605624747FE61FE98FE99FE614848D35F5E0139 +0127012801395E5F00010073FFE3065A0764002400444022219520250DA10EAE0A951101 +A100AE04951791118C25200719141B110D003014102510FCFC32EC10ECC4310010E4F4EC +F4EC10EEF6EE10DCEC30B40F261F2602015D01152E0123200011100021323637150E0123 +200011100021321716173637363B0115232206052766E782FF00FEF00110010082E7666A +ED84FEADFE7A01860153609C0D0C105366E34D3F866E0562D55F5EFEC7FED8FED9FEC75E +5FD34848019F01670168019F240304C3627AAA9600010071FFE304CC06140022004E4024 +00860188040E860D880AB91104B917B8118C2301871E972307121419081E0D0048144523 +10FCF432CCEC10EC310010F4EC10E4F4EC10FEF4EE10F5EE30400B0F24102480249024A0 +2405015D01152E0123220615141633323637150E012322001110002132173534363B0115 +23220603E74E9D50B3C6C6B3509D4E4DA55DFDFED6012D01064746A1B54530694C047EF5 +2B2BE3CDCDE32B2BAA2424013E010E0112013A0C0FD6C09C61000000FFFF000A000005BA +05D51006009200000002FF970000061405D50008001A002E401500950981019510080210 +0A0005190D32001C09041B10FCECF4EC113939393931002FECF4EC30B2601301015D0111 +332000111000212521200011100029011122061D012335343601F7F40135011FFEE1FECB +FE42019F01B20196FE68FE50FE6184769CC0052FFB770118012E012C0117A6FE97FE80FE +7EFE9605305F693146B5A300000200C9000004EC05D500070014002E400C160804131C0A +2E00190E101510FCECF4EC32C4C431400C139509810A049512AD03950A002FECF4EC10F4 +EC30011029011121220611211121222435342433211121019E01400144FEBCA39D034EFD +E8FBFEF00110FB014EFD7C01B7FEEF0223870393FA2BDADEDDDA01C000020071FFE3045A +06140012001E003F401D1CB9110E16B905088C0EB8031287019703190411080247001312 +0B451F10FCECC4F4EC323231002FFCEC10E4F4C4EC10C4EE30B660208020A02003015D01 +35211123350E012322021110003332161711011416333236353426232206010D034DB83A +B17CCBFF00FFCB7CB13AFD8DA79292A8A89292A7056EA6F9ECA864610144010801080144 +616401B9FCC0CBE7E7CBCBE7E700000000020071FE560474046300190027005440140D0C +0B202945170B12021A12175106201211452810FCECC4F4B27F17015DECD4EC10EC111239 +3900400E0D0C1D09060709B9041DB914B62810F4ECD4FCD4CC1112393940060025530C0D +0C070E10EC39313025161510212227351633323534252627261110003332000314020336 +262322061514161716173E01036B9DFE47DD7866F6F6FEF8D0758E0112EFF00113019B27 +01AB9494ACBC7E4033636E424F8DFEF0469946755C30257087010F010F0139FEC7FEED9C +FEFC01A0CBE5E8C3C2C70B060E2ADC00000100830000044505D5000B002B40090D05091C +000B07020C10DCC4C4D4EC32C431400C0A950B8102069507AD039502002FECF4EC10F4EC +300111213521112135211121350445FC3E02F8FD3902C7FD1A05D5FA2BAA021DAA01BAAA +00020075FFE305D905F00013001A0044402601140008A107AE04009514179511009514AD +04950B91118C1B01141A1A190F3314190700101B10FCC4ECF4EC111239310010E4F4ECF4 +E410EE10EE10F4EE11123930132110002122060735362433200011100021200037160033 +32003775048FFEEDFEEE8BFC706F010792015E018BFE88FEC6FEB7FE97DC0D00FFCACA00 +FF0D030C010C0132605FD74648FE67FE92FE9FFE5B01B7CCC3FEE4011CC30000000100A4 +FFE3047B05F00028004040240A8609880D9506912900169513AD291F8620881C95238C29 +2A14091F101903191926102910FCECD4ECD4C4C4CC310010F4ECF4EC10F4EC3910F4ECF4 +EC30012E0135342433321617152E012322061514163B011523220615141633323637150E +0123202435343601D8838E010CE659C97372BE5398A39E95B6AEA5B9C7BE6DC8546AC75E +FEE8FED0A3032521AB7CB2D12020B426247B737077A695848F963231C32525F2DD90C400 +0001FF96FE66042305D500110041401F1108120D950CB0120695040295008104AD121108 +00070C050107031C00041210FCEC32D4C4C411123939310010ECF4EC10EE10F4EC103939 +30B20F0B01015D13211521112115211110062B013533323635C9035AFD700250FDB0CDE3 +4D3F866E05D5AAFE48AAFD9FFEF2F4AA96C200000001FF7FFE5602F80614001B00654023 +130A0F870DBD1D0518011408A906018700971606BC1C021B0700070905081517134C1C10 +FC4BB00A5458B90013004038594BB0165458B90013FFC038593CC4FC3CC4C41239393100 +10E432FCEC10EE3212393910F4EC39393001B6401D501DA01D035D01152322061D012115 +211114062B013533323635112335333534363302F8B0634D012FFED1AEBDAEB0634DB0B0 +AEBD0614995068638FFBEBBBAB995068042A8F4EBBAB000000010073FFE3069707640026 +004940101502001C04111C1A34043321190B462710FCECFCF4EC10FCC4C4314018169515 +270005240195032495081BA11AAE1E950E91088C270010E4F4ECF4EC10FED4EE11393910 +DCEC3025112135211106042320001110002132161734363B01152322061D012E01232000 +11100021323604C3FEB6021275FEE6A0FEA2FE75018B015E5BA344C9E34D3F866E70FC8B +FEEEFEED011301126BA8D50191A6FD7F53550199016D016E01991919BCEAAA96C2D75F60 +FECEFED1FED2FECE2500000000020008FE52057605D5000F00250095400D275012011204 +19170C191F242610D4D4ECD4ECD45DC4B510080003040C1112173931400A00951BBD1125 +122481260010E4323232F4ECB31F17081B1112393930400C131111121208232511242408 +070510EC3C0710EC3CB613110812082408070810ECB623110824081208070810ECB41025 +1311230F40101615140317132408222120031F2312080407111217390711121739013237 +363534272627060706151417161301330116171615140706232227263534373637013302 +BF362C1C1F332C2C331F1C2C3601D9DEFDBA68432E4B649B9B644B2E4368FDBADEFEFD20 +14423949795C5C794939421420037A035EFBCFC8AE77428B415757418B4277AEC8043100 +000100BA000007470614002A004F40112C0D120408112A1508264E1F1B081D462B10FCEC +32F4ECC4C4CCD4EC3931004019088709271426008711151B260320111887200923B81E97 +111C2F3CECF43CC4EC1112173910EC12393910EC30253237363534272627351617161114 +002B012226351134262322061511231133113E013332161511141633054C9554574A3E79 +E06D6FFEE0DD46BB9D7C7C95ACB9B942B375C1C64C699C62659BDE705F21941D8F91FEEC +F5FEE6C8CE01089F9EBEA4FD870614FD9E6564EFE8FEF29367000000000100C9000002C6 +05D5000B002E40100B02000695008107050806011C00040C10FC4BB0105458B900000040 +3859ECC4393931002FE4EC113939300113331114163B011523222611C9CA6E863F4DE3CD +05D5FC2DC296AAF4010E00000001000A0000025205D5000B00454011020B95050800AF06 +0305011C0A0800040C10FC3CC44BB0105458BB0008004000000040383859EC32C431002F +ECDC3CF4323001400D300D400D500D600D8F0D9F0D065D133311331523112311233533C9 +CABFBFCABFBF05D5FD16AAFDBF0241AA000100C9000005F705F000170066400E001C0107 +080F07090B0F1C0E041810FCEC32D4C4113910D4EC00310040250B110809080A11090908 +11110708071011080807420B0810030E0C1702059513910EAF0C092F3CECF4EC39391112 +1739304B5358071004ED071005ED071005ED071004ED5922012335342623220709012101 +11231133110136333217161505F7AA49264625FDDD031AFEF6FD33CACA026C5571885555 +044879365023FDF9FCE302CFFD3105D5FD8902434F5C5B6E000100B90000049C06140012 +00CB400B040D090C0E10090800461310FCEC32D4C41139C43100400F42100D0A030B1106 +9503970BBC110E2F3CE4FCE411121739304B5358401410110D0E0D0F110E0E0D0B110C0D +0C0A110D0D0C071004ED071005ED071005ED071004ED59B2101401015D40350B0B0A0F28 +0B270C280D2B0E2B0F4014680B6014890B850C890D8D0E8F0F9A0B970FAA0BA70DB60FC5 +0FD60FF70BF00BF70CF00C1A5DB4090D090E0271004025040A0A10160A270A290D2B1056 +0A660A6710730A770D820A890D8E10930A960D9710A30A125D1334363B01152322061511 +0133090123011123B9A3B5BFA8694C0225EBFDAE026BF0FDC7B9047ED6C09C6199FDFF01 +E3FDF4FDAC0223FDDD0000000001000A0000022A0614000B003240070501080800460C10 +FC3CEC3231004008020BA905080097062FECD43CEC3230400D100D400D500D600D700DF0 +0D06015D133311331523112311233533C1B8B1B1B8B7B70614FD3890FD4402BC90000000 +0001003D0000047F0614000F00A0401308020B05010E070D080C06090406110C06001010 +D4C4B28006015DD4C410C4CC11121739B410094009025D3100400F08020B05010E060600 +040906970D002F3CF4C4C4111217393040320A03A902A90BA90508040C0709040F11000E +11010D060100051102110E110F0E011100010D110C070C0B11081107110D060D070510EC +ECEC071005EC08EC08EC05ECEC070810EC0510EC0708103C3CECEC0EFC3C330127052725 +273317251705012309013D01EB47FED42101294BC834013A21FEC901EDC3FEC6FE7E0432 +BC656363C58A686168FAD7033CFCC400000100B2FFE3072705D50027004A401200121420 +1D1C291F50121C14500A1C08042810FCECFCFCFCCCFC3C1112393100401607140A1C1100 +0621080E18952103248C28121D0881202FF43C3C10F43CC4EC32111217393039250E0123 +2227263511331114171633323635113311141716333237363511331123350E0123222726 +03A645C082AF5F5FCB2739758FA6CB3939777B5353CBCB3FB0797A5655D57C767B7AE204 +1BFBEFBA354EBEA403ECFBEFA24E4D5F60A303ECFA29AE67623E3E000001FF96FE660533 +05D50011008C402907110102010211060706420811000D950CB01207020300AF05060107 +021C04360B0E0C39071C00041210FCECE43939FCEC11393931002FEC32393910FCEC1139 +39304B5358071004ED071004ED5922B21F0B01015D403036023807480247076902660780 +02070601090615011A06460149065701580665016906790685018A0695019A069F13105D +005D13210111331121011110062B013533323635C901100296C4FEF0FD6ACDE3473F866E +05D5FB1F04E1FA2B04E1FB87FEF2F4AA96C20000FFFF00BAFE560464047B1006034B0000 +00030073FFE305D905F0000B001200190031400B19101906330F131900101A10FCEC32F4 +EC323100400F16950913950FAD1A0C950391098C1A10E4F4EC10F4EC10EC301310002120 +0011100021200001220007212602011A0133321213730179013A013B0178FE88FEC5FEC6 +FE8702B5CAFF000C03AC0EFEFD5608FBDCDCF80802E9016201A5FE5BFE9FFE9EFE5B01A4 +03C5FEE4C3C3011CFD7AFEFFFEC2013D01020000FFFF0067FFE3061D061410260032F400 +100702CC05A20134FFFF0076FFE304D304EB102702CC0458000B10060052050000020073 +FFE306CF05F00014001F0033401C049510AF0015950D91001B95078C0021131C001E1C10 +0418190A102010FCECD43CECDCECC431002FF4EC10F4EC10F4EC30211134262311062120 +001110002132172132161901012200111000333237112606056E7ABCFEC5FEC6FE870179 +013B70610127E3CDFC58DCFEFD0103DCAF808A03D3C296FB8BD301A40162016201A51BF4 +FEF2FC2D054CFEB8FEE6FEE5FEB867041846000000020071FE560559047B00160021003A +4020058711BC2217B90EB8221DB9088C16BD22110105231508011F08051A120B452210FC +ECD4ECDCECC4111239310010E4F4EC10F4EC10F4EC300111342726231106232200111000 +333217333217161511012206151416333237112604A126266989F0F1FEEF0111F16452D8 +B55251FD1A94ACAB95814054FE560474993130FCBC9D01390113011401381B6060D6FB8C +0589E7C9C9E73A02F03600000002FF97000004F105D50008001C003A4018019510009509 +8112100A0802040005190D3F11001C09041D10FCEC32FCEC11173931002FF4ECD4EC3040 +0B0F151F153F155F15AF1505015D011133323635342623252132041514042B0111231122 +061D012335343601F7FE8D9A9A8DFE3801C8FB0101FEFFFBFECA84769CC0052FFDCF9287 +8692A6E3DBDDE2FDA805305F693146B5A3000000000200B9FE5604A4061400180024004F +402423B900171DB90E11B8178C01BD25030C09A90697251A12144706090307200C000802 +462510FCEC3232CC113939F4EC310010F4EC393910E4E4F4C4EC10C4EE30400960268026 +A026E02604015D2511231134363B01152322061D013E0133320011100223222601342623 +22061514163332360173BAA3B5FEE7694C3AB17BCC00FFFFCC7BB10238A79292A7A79292 +A7A8FDAE0628D6C09C6199C86461FEBCFEF8FEF8FEBC6101EBCBE7E7CBCBE7E7000200C9 +FEF8055405D50015001D005640170506031300091D1810050A1A1904133F0E160A120C04 +1E10FCEC3232FCC4EC1117391139393931004010001706030417950916950F81040D810B +2FECDCF4ECD4EC123939123930014009201F401F75047C05025D011E01171323032E012B +0111231133113320161514060111333236102623038D417B3ECDD9BF4A8B78DCCACAFE01 +00FC83FD89FE8D9A998E01B416907EFE68017F9662FE9105D5FEF8D6D88DBA024FFDD192 +010C910000010072FFE3048D05F0002100644011071819061D0A0F1D19042D00220A1915 +2210DCECE4FCECC4111239393939310040194219180706040E21000EA10F940C95112095 +00940291118C2210E4F4E4EC10EEF6EE10CE111739304B5358400A180207060719020606 +0707100EED07100EED591336200410060F010E0114163332371504232027263534363F01 +3637363427262007CCE401C60117CAE27B9A87BCADE1F8FEFDD6FEE79291D7E27AA63C3B +595AFEA1E405A44CE4FE8FC02D181F7CEC888BD05F7070D9B6D92B191F3233D940406D00 +00010064FFE303BC047B002700CF40110A1E1D090D21142108060D0800521A452810FCE4 +ECD4ECC41112393939393140191E1D0A09041300862789241486138910B91724B903B817 +8C280010E4F4EC10FEF5EE10F5EE1217393040121B1C021A1D53090A201F02211E530A0A +09424B535807100EED111739070EED1117395922B2000101015D40112F293F295F297F29 +80299029A029F029085D4025200020272426281E281D2A152F142F132A12280A28092908 +29072401861E861D861C861B12005D40171C1E1C1D1C1C2E1F2C1E2C1D2C1C3B1F3B1E3B +1D3B1C0B71133E013332161514060F010E0115141633323637150E012322263534363F01 +3E0135342623220607A04CB466CEE098AB40AB658C8261C6666CC35AD8F7A5C43F946289 +895AA84E043F1E1EAC9E8295240F25504B51593535BE2323B69C89992A0E214940545428 +28000000FFFF00C90000048B05D51006033700000002FEF2FE5602D706140016001F0036 +400C1D0E0A1506140108170A4F2010FC32FC32CCCC10D4CC3100400F141F87000B1B8710 +9720048706BD2010FCEC10F4ECD43CEC3230011114163B01152322263511232035342132 +171617331525262726232207063301774D63B0AEBDAEBEFEF2012FB5523512BFFE860811 +216E7C030377046AFB3D685099ABBB04AED2D860406F9B9A2C1830413300000000010037 +FE5602F2059E001D003F400E0E14080802090400081A1C18461E10FC3CC4FC3CDC3239FC +CC310040121805081903A9001B01BC08871510870EBD152FFCEC10ECF43CCCEC32113939 +3001112115211114163B011514062B0135333237363D0122263511233533110177017BFE +854B73BDA4B446306A2626D5A78787059EFEC28FFDA0894EAED6C09C303199149FD20260 +8F013E0000010018000004E905D5000F005840150D0A0C06029500810400070140031C05 +0B1C0D051010D4D4EC10FCE4393931002FF4EC32C4393930014BB00A5458BD0010004000 +0100100010FFC03811373859401300111F00100110021F071011401170119F11095D0121 +15211123112322061D012335343601AE033BFDEECB5E84769CC005D5AAFAD5052B5A6931 +46B5A30000010037000002F20614001B0049401019160B080417090204000810130E461C +10FC3CC4FC3CC432321739310040131300198716970A0E05080F03A91101BC08870A2FEC +F43CEC3211393910F4EC393930B2AF1501015D01152115211114163B0115232226351123 +35333534363B01152322060177017BFE854B73BDBDD5A28787AEBDAEB0634D04C3638FFD +A0894E9A9FD202608F4EBBAB995100000001FFFAFE6604E905D5000F0054401407950ABD +100E0295008110080140031C00400D1010D4E4FCE4C4310010F4EC3210F4EC30014BB00A +5458BD00100040000100100010FFC03811373859401300111F00100110021F0F10114011 +70119F11095D032115211114163B01152322261901210604EFFDEE6E863F4EE3CDFDEE05 +D5AAFB3DC296AAF4010E04C3FFFF00ADFFF7065F061410260038FB14100702CC05E40134 +FFFF00B0FFE3056904EB102702CC04EE000B1006005802000001004EFFE305CF05CA001F +003A40101D1A1921100004330A1114190D0A102010FCC4FCC410F4C4ECFCC43100400E0D +11011D951E1081201795078C2010F4EC10FC3CEC32323230012116121510002120001134 +123721352115060215140033320035340227352105CFFEC0A18EFE7FFED1FECFFE81919E +FEC10258B2C70109D8D80108C6B1025805188DFED8C2FECBFE77018A013EB8012A8BB2B2 +61FEB4CAEFFEDD0122F0CA014C61B200000100C9FFE1057605D5001B002D400D10150C07 +0803190C181C15041C10FCECD4EC2F3C111239310040090816811C0095108C1C10F4EC10 +ECC4302532003534272627351716121510070621272627261901331114163302C6D80108 +63416EB3A18EC0BFFECF4DE86167CA6E868D0122F0CAA66D5744018DFED8C2FECBC5C402 +06747A010E03F0FC10C296000001FFFC000005F005F000170064400F131C140C040B0700 +40051C0940071810D4E4FCE41239C4392FEC3100400B12151400950E910B09AF062FEC39 +F4ECCC39393040190C110405040B110A0B0505040B110C0B0809080A11090908424B5358 +071005ED071008ED071008ED071005ED5922012207060701112311013309013633321716 +1D012335342604D739152511FE84CBFDF0D9019E014E5AA3885555AA4905470E1819FDBF +FD3902C7030EFD9A01F9885C5B6E8379365000000001003DFE5605D8047B001F016A4017 +120E151B1F1808151F0E0D0C0A09060300081F041F0B2010D44BB00A544BB008545B58B9 +000B004038594BB0145458B9000BFFC03859C4C411173910D4EC11391112393100403A07 +08020911001F0A110B0A00001F0E111D001F0D110C0D00001F0D110E0D0A0B0A0C110B0B +0A420D0B0920000B058703BD201BB912B80BBC172010C4E4F4EC10F4EC11391139123930 +4B5358071005ED071008ED071008ED071005ED071008ED0705ED1732592201408D0A000A +09060B050C1701150210041005170A140B140C2700240124022004200529082809250A24 +0B240C270D37003501350230043005380A360B360C380D41004001400240034004400540 +06400740084209450A470D5400510151025503500450055606550756085709570A550B55 +0C66016602680A7B0889008A09850B850C890D9909950B950CA40BA40C465D0040250600 +05080609030D160A170D100D230D350D490A4F0A4E0D5A095A0A6A0A870D800D930D125D +050E012B01353332363F01013309013637363332161D0123353426232207060702934E94 +7C936C4C543321FE3BC3015E011A1530588783B9B251393929140A68C87A9A488654044E +FC9402C0343360BF8672723A542A14190001005C0000051F05D5001100C0403506030207 +020C0F100B1007110B100B101102070242050D95040E12109500810795090C06030F040E +04080E00100700014208000A1210DC4BB009544BB00A545B58B9000AFFC03859C4D4E411 +393910C410C411173931002FECF4EC10D43CEC32304B5358071005ED071005ED0710053C +3C0710053C3C592201404005020A0B180B2902260B380B4802470B48100905070B100013 +16071A1010132F13350739103F1347074A104F1355075911660769106F13770778107F13 +9F13165D005D132115012115210121152135012135210121730495FE700119FE73FE5403 +C7FB3D01B9FED5019F0183FC6705D59AFE1190FDEEAA9A02229001DF00010058000003DB +0460001100C540310C0F100B100603020702101102070207110B100B4210A900BC09050D +A9040E07A90910070F03060C0601000E0408010A1210DC4BB00B544BB00C545B58B9000A +FFC038594BB0135458B9000A00403859C432C4C4C411173931002FECD43CEC3210F4EC30 +4B5358071005ED071005ED0710053C3C0710053C3C59220140420502160226024702490B +050B100F1318071B102B102013360739103013400140024507400840094310570759105F +136001600266076008600962107F138013AF131B5D005D13211503331521012115213501 +233521012171036AFBC2FEC2FEC302B4FC7D012BD40150010DFD650460A8FEDC90FE8F93 +A8015C9001390000000100A0FFC104F805D500220070400E0B0E0D080A04190E10160A0D +1E2310DCC4C4D439C4EC1239B43F0E4F0E025D111239310040130A0995100F0B950D8123 +1FA11EAE00951A8C2310F4ECF4EC10F4EC39D4EC3930400A10110A0B0A0B110F100F0710 +05EC071005EC400E090A370F0205100B0B15103B0B04015D005D25323736353427262B01 +3501213521150132171617161514070621222726273516171602A8C063645C5DA5AE0181 +FCFC0400FE656A806256519898FEE8777D7E866A7F7E6B4B4B8F86494A9801EAAA9AFE16 +382A6D688ADC7A79131225C3311919000001005CFFC104B405D50022005E400F1816151B +1F130D1916051F19150D2310DCC4B430154015025DECD4C4C41139113911123931004013 +191B951314189516812304A105AE0095098C2310F4ECF4EC10F4EC39D4EC3930400A1311 +1918191811141314071005EC071005EC2532373637150607062320272635343736373633 +01352115210115232207061514171602AC897E7F6A867E7D77FEE89898515662806AFE65 +0400FCFC0181AEA55D5C64636B191931C3251213797ADC8A686D2A3801EA9AAAFE16984A +49868F4B4B00000000010068FE4C043F0460002000A3400B0006020C121B130306022110 +DCCCC4C4D4EC1112393100401A0C1B0018064200A90707032104A9031386149310B918BD +03BC2110E4FCECF4EC10EC1112392FECEC111239393040080611000511010702070510EC +0410EC401B03050500140516002305250037003405460043055B0054057E000D015D401B +040604011406140125062401350137064501460654015C067F060D005D4009061507161A +151A12045D09013521152101152322070615141716333236371506070623202435343736 +3736025BFE65036AFD6501AEAEA55D5C6463BE6DC8546A64635EFEE8FED05156628001DC +01DCA893FE0DA64A4B848F4B4B3231C3251312F2DD8A686D2A38000000010071FE5603E8 +046000200000013237363715060706232011342524353423302101213521150120151005 +061514027F544D4F5157505661FE200196011CEBFEDE01E5FD65036AFE9E016FFE30E2FE +EE15152CB3200D0E0119EE3525627C023893A8FE64E5FEEC3118618B000100960000044A +05F00024000025211521350137213521363736353427262322070607353E013332041514 +07060733152307018902C1FC4C013A73FEA701E25F25275354865F696A787AD458E80114 +221F4A68EC30AAAAAA014075906D484C49774B4B212143CC3132E8C25C52496090310000 +0001005DFFC104F905D500190035400E1B0308110A0B080700081907461A10FCD4EC10EC +D4D4ECCC3100400D169501001A06950D0B9509811A10F4ECD4EC10CCD4EC300110201134 +262321112115211125241716100F010607062024350126030AB9A5FDF703A1FD29017301 +00A2513B1C142D98FDC4FED00190FEDB01258693032CAAFE250101D068FEE056291D2479 +F2DD000000010068FE4C043F0460001A0033400B1C0408120A0C081A08461B10FCC4ECD4 +D4ECCC3100400F0287001A18BD1B07870E0C870ABC1B10F4ECD4EC10FCCC32EC30171633 +201134262321112115211133321E01100F0106070621222768AACE0196B9A5FE9F0319FD +9FDD69E4A63B1C142D98FEE8BBD4A76301258693032CAAFE2663D4FEE056291D24794A00 +00010058FFE303A5059E0024000001071617161514070621222726273516171633323736 +373427262B01132335331133113315022102AA706C6E89FEED5551514C49544E50B36339 +013A56C03E02E5E5CAE703E67D1E7773AABA7D9D121123AC281816724185624C72010FA4 +0114FEECA4000000000200BAFE5604A4047B000E00170040400B1911080D041700080246 +1810FCEC3232D4ECCC3100400C42158705098C03BC0001BD1810ECC4F4F4CCEC304B5358 +B617050F8700000E070410ED0010CC590511231133153637363332171615100100353427 +262322070173B9B9348751D2B84D4EFCCF0272393878DCAD7AFED0060AAA425231707199 +FE57FEE40190F9854241EF00000100C9FE56019305D500030026400A009702BD04010800 +460410FCEC310010ECEC30400D10054005500560057005F00506015D13331123C9CACA05 +D5F88100FFFF00C9FE56032705D5102701820194000010060182000000010014FE56039C +05D50013003A401D0C09A90F061302A91005050A00970ABD14070309050108120D0C1000 +1410D43C3CCC32FC3C3CCC32310010ECEC11392F3CEC32DC3CEC32300133112115211521 +1521112311213521352135210173CA015FFEA1015FFEA1CAFEA1015FFEA1015F05D5FD97 +A8F0AAFD2C02D4AAF0A80000FFFF00C90000019405D5100600049400FFFF00C900000AD0 +076D1027013F05B10000100600270000FFFF00C9000009B006661027014005D500001006 +00270000FFFF0071FFE3089106661027014004B60000100600470000FFFF00C9FE660624 +05D51027002D049100001006002F0000FFFF00C9FE5605DE06141027004D046500001006 +002F0000FFFF00C1FE5602EF06141027004D017600001006004F0000FFFF00C9FE6606F2 +05D51027002D055F0000100600310000FFFF00C9FE5606B706141027004D053E00001006 +00310000FFFF00BAFE5605DE06141027004D04650000100600510000FFFF001000000568 +076D1226002400001107171B04BE01750006B10E00103C31FFFF007BFFE3042D06661226 +00440000110602895A000008B40B2B2714072B31FFFFFFFE00000260076D1226002C0000 +1107171B032F0175000BB407200100001049633A31000000FFFFFFE00000025E06661226 +00F3000011070289FF1F0000000BB408200100001049633A31000000FFFF0073FFE305D9 +076D1226003200001007171B05270175FFFF0071FFE30475066612260052000011060289 +76000006B11B0C103C310000FFFF00B2FFE30529076D1226003800001107171B04F60175 +0006B11505103C31FFFF00AEFFE304580666122600580000110602897600000BB418200B +01011049633A3100FFFF00B2FFE3052908331026174930001206003800000000FFFF00AE +FFE30458073110270071007B013B120600BE0000FFFF00B2FFE30529085A122600380000 +1006174C36000000FFFF00AEFFE3045807221226005800001007174CFFBEFEC8FFFF00B2 +FFE30529085A1226003800001006175130000000FFFF00AEFFE304580722122600580000 +10071751FFC4FEC8FFFF00B2FFE3052908601226003800001006174D30060000FFFF00AE +FFE3045807221226005800001007174DFFBEFEC8FFFF0071FFE3047F047B1206021B0000 +FFFF00100000056808331226002400001006174900000000FFFF007BFFE3042D07311226 +00A60000100700710052013BFFFF00100000056808331226002400001006174B00000000 +FFFF007BFFE3042D06F41226004400001007174BFF93FEC1FFFF00080000074807341027 +007102D7013E120600880000FFFF007BFFE3076F05F21027007101E8FFFC120600A80000 +00010073FFE3060405F00025005440102124221E1C11340200043318190B102610FCECFC +3CCCE4FCC4C431004018041F012200051B2395251B950812A111AE15950E91088C2610E4 +F4ECF4EC10FED4EE113939DCB00B4B5458B1224038593CCC323001113315231506042320 +0011100021320417152E012320001110002132363735233533352135058B797975FEE6A0 +FEA2FE75018B015E9201076F70FC8BFEEEFEED011301126BA843FDFDFEB6030CFED658FF +53550199016D016E01994846D75F60FECEFED1FED2FECE2527B55884A600000000020071 +FE5604FA047B000B00340058400E0F22322500080C470612182C453510FCC4ECF4EC3232 +C4C43100401B20110E23250C29091886191CB91503B9322FB833BC09B915BD26292FC4E4 +ECE4F4C4EC10FED5EE11123939D43CCC3230B660368036A03603015D0134262322061514 +1633323617140733152306070621222627351E013332373637213521363D010E01232202 +11101233321617353303A2A59594A5A59495A5B813B3C61F3A7FFEFA61AC51519E52B55A +1511FD84029A1639B27CCEFCFCCE7CB239B8023DC8DCDCC8C7DCDCEB6E58465D408C1D1E +B32C2A5F171C45475E5B6362013A01030104013A6263AA00FFFF0073FFE3058B076D1226 +002A00001107171B054A01750010B1210E103C4007942154212421035D310000FFFF0071 +FE56045A0663102602894AFD1206004A00000000FFFF00C90000056A076D1027171B04A2 +01751206002E0000FFFFFFE90000049C076D1226004E00001107171B031A0175002AB401 +100C00072B31004BB00E5158BB0001FFC00000FFC0383859400D90019000800180004001 +4000065DFFFF0073FE7505D905F01027029D01340000120600320000FFFF0071FE750475 +047B1027029D00800000120600520000FFFF0073FE7505D90731102700710127013B1206 +01AC0000FFFF0071FE75047505F51026007173FF120601AD00000000FFFF00A0FFC104F8 +076D1027171B04BE0175120601790000FFFF0058FE4C042F0666102602891B0010060254 +00000000FFFFFFDBFE560264066610270289FF250000110601F90000000BB40320080707 +1049633A31000000FFFF00C900000AD005D51027003D05B10000100600270000FFFF00C9 +000009B005D51027005D05D50000100600270000FFFF0071FFE3089106141027005D04B6 +0000100600470000FFFF0073FFE3058B076C10271717051B01761206002A0000FFFF0071 +FE56045A06631226004A0000100600761BFD0000000100C9FFE3082D05D5001D0035400E +0E1C1119031C06381B011C00041E10FCEC32FCEC32D4EC3100400E0F1A9502AD0400811C +0A95158C1C2FE4EC10E432FCECC430133311211133111417161732373635113311140706 +212027263511211123C9CA02DECA3E3D9994423ECA6460FEE6FEED6764FD22CA05D5FD9C +0264FBEC9F504E014F4BA4029FFD5ADF80787876E9010DFD39000000000200C9FE560502 +05F0000E00170040400B19111C0D0417001C02041810FCEC3232D4ECCC3100400C421595 +05098C03810001BD1810ECC4F4F4CCEC304B5358B617050F8700000E070410ED0010CC59 +2511231133153637363332171615100100113427262322030193CACA389157E2C65354FC +9102A13D3C81EDBA9CFDBA077FB9485735787AA4FE37FECE01AE010C8F4746FEFF000000 +FFFF00C900000533076B10271719051E0175120600310000FFFF00BA0000046406641226 +00510000100700430118FFFEFFFF001000000568077312260087000010071717065C017D +FFFF007BFFE304DC0773122600A700001007171705EC017DFFFF000800000748076C1027 +1717065C0176120600880000FFFF007BFFE3076F0663122600A80000100700760165FFFD +FFFF0066FFBA05E5076C1027171704FE01761206009A0000FFFF0048FFA2049C06631226 +00BA0000100600761CFD0000FFFF00100000056807701226002400001007172004E5017A +FFFF007BFFE3042D0664102702C00498FFFE120600440000FFFF00100000056807361226 +002400001007171C04BC013EFFFF007BFFE3042D0648102702C204650000120600440000 +FFFF00C90000048B07701226002800001007172004A5017AFFFF0071FFE3047F06631027 +02C004BAFFFD120600480000FFFF00C90000048B07361226002800001007171C04A6013E +FFFF0071FFE3047F0648102702C204A90000120600480000FFFFFFA70000027307701226 +002C0000100717200359017AFFFFFFC3000002810663102702C00366FFFD120600F30000 +FFFF00050000027707361226002C00001007171C033E013EFFFFFFE30000025506481027 +02C203240000120600F30000FFFF0073FFE305D90770122600320000100717200541017A +FFFF0071FFE304750664102702C0049FFFFE120600520000FFFF0073FFE305D907361226 +003200001007171C051C013EFFFF0071FFE304750648102702C204980000120600520000 +FFFF00C7000005540770122600350000100717200479017AFFFF00820000034A06631027 +02C00425FFFD120600550000FFFF00C90000055407361226003500001007171C0480013E +FFFF00BA0000035E0648102702C2042D0000120600550000FFFF00B2FFE3052907701226 +00380000100717200515017AFFFF00AEFFE304580664102702C004D4FFFE120600580000 +FFFF00B2FFE3052907361226003800001007171C04EC013EFFFF00AEFFE3045806481027 +02C204AB0000120600580000FFFF0087FE1404A205F0102702D704760000120600360000 +FFFF006FFE1403C7047B102702D7042C0000120600560000FFFFFFFAFE1404E905D51027 +02D704530000120600370000FFFF0037FE1402F2059E102702D704000000120600570000 +0001009CFE52047305F0002E0000010411140E010C01073536243E0135342623220F0135 +373E0335342E03232207353633321E0115140E02033F01346FB9FF00FEEA99C80131B95C +7D705F73A3F83C66683D23374B4826B8F3EFCE83CB7C173A6E02A243FEDB70CEA0886022 +A0378C999D4F65843348AB6A1A41638B52375633220CB8BEA456B6803C66717400010047 +FE4F03BC047B00340000011E0315140E0507353E0435342623220F0135373E0435342E03 +23220607352433321E0115140602A746703E21426C989DB3954AA2F59E6328765D3B3FD8 +DF2241573F2D1F3143412345A893010A8670B8746701CD08445A58254B8A6C61463D270F +822E605B625B33587019568B550D203C4566392C462A1B0A3B5A9A854792616E99000000 +FFFF00C90000053B076D1027171B050401751206002B0000FFFFFFF000000464076D1027 +171B032101751306004B0000002AB414050113072B31004BB00E5158BB0014FFC00013FF +C0383859400D901490138014801340144013065D000100C9FE56051905F00013002E4012 +03950E91098112B008131C120B061C08411410FC4BB0105458B90008FFC03859EC32D4FC +31002FECE4F4EC300134262322061511231133153E0117321219012304509A99B3D7CACA +51CC9DE3E9C9037FD7D5FFDEFCB205D5F1878601FEC1FECCFAD9000000030071FF700644 +061400070028003400002516333235342722073633321510212227060723363726350607 +06232227261037363332171617113300101716203736102726200704B61125A03434CA6E +88F4FEAA49352218C41D43303A58597CCB807F7F80CB7C59583AB8FCD553540124545454 +54FEDC548205AF2D0120B8CEFEBF0F483A45933C24643031A2A20210A2A2313064025EFC +E6FE6A74737374019674737300020071FFE3052505F0000C003B0057401C240014330418 +103D450A1C28421D181C21383B101C3742041C2F453C10FCECF4ECCCB2203B015DF4ECCC +F4ECEC11121739310040122433009514AD3C0D3B1C1D913C07082C8C3C10F4EC10F4CCD4 +CC10F4EC39393001220706101716203736353426030E0115141716333237363534272627 +3532171615140607161716151407062027263534373637262726353437362102CBB86A6B +6B6A01706B6BD4F482AA5F3BCCA85F604C6D82E4968BAA98AC5F609C9BFDBA9B9C6061AB +AB43558274010102C54D4DFEF24D4D4D4E86879A0227037C4F45482D4141889E2B4D0864 +6861BA80B2202263638FD974747474D98F6363221F46595882534A0000020071FFE30471 +050F000D00340043401636450A0818420E3432081028292B08264204081F453510FCECF4 +ECCC32D4ECCC32F4ECEC3100400E3429142200B92EAD3507B91C8C3510F4EC10F4EC3939 +CC3230012207061017162037363534272613161514070607161716151407062027263534 +363726272635343733061417163332373635342702719053525253012053535352FE3A34 +48829252518584FE128485A492903B343FA12B49488382494A2C02C54D4DFEF24D4D4D4E +86874D4D024A4062994059202263638FD974747474D98FC62223564B8E594941E8414141 +4174773E0001005CFE56051F05D50015009F400C0F141112420B081506110D1610DC4BB0 +09544BB00A545B58B9000DFFC03859C4C4D4ECE41139393100400C420795050C0F951181 +14950C2FECF4EC10DCEC304B5358400A14110E0F0E0F11131413071005ED071005ED5901 +404005130A0E180E2913260E380E4813470E480F0905140B0F001716141A0F10172F1735 +14390F3F1747144A0F4F175514590F6614690F6F177714780F7F179F17165D005D051007 +062B0135333237363D01213501213521150121051F9E4872FEE9692626FBF503B0FC6704 +95FC5003C714FEDF50259C303199149A0491AA9AFB6F000000010058FE5603DB04600015 +00AC400C0B08150D0F14121112060D1610DC4BB00B544BB00C545B58B9000DFFC038594B +B0135458B9000D00403859C4C4B440126012025DC411393910D4B440156015025DEC3100 +400C4207A9050C0FA911BC14A90C2FECF4EC10DCEC304B5358400A0F1113141314110E0F +0E071005ED071005ED590140320513161326134713490E050B0F0F1718141B0F2B0F2017 +3614390F30174514490F5714590F5F176614680F7F178017AF17135D005D051007062B01 +35333237363D0121350121352115012103DB9E4872FEE9692626FD3502B4FD65036AFD4C +02B414FEDF50259C30319914A8032593A8FCDB00FFFF00100000056807501027171E04BC +0175120600240000FFFF007BFFE3042D0614102702B8044A0000120600440000FFFF00C9 +FE75048B05D51226002800001007007A00A20000FFFF0071FE75047F047B122600480000 +1006007A7B000000FFFF0073FFE305D908331226003200001006174962000000FFFF0071 +FFE304750731122600B80000100700710073013BFFFF0073FFE305D90833122600320000 +1006175069000000FFFF0071FFE3047506E912260052000010071750FFB5FEB6FFFF0073 +FFE305D907501027171E05270175120600320000FFFF0071FFE304750614102702B80473 +0000120600520000FFFF0073FFE305D908331226003200001006174B6A000000FFFF0071 +FFE304750731122601F10000100700710073013BFFFFFFFC000004E70731102700710072 +013B1206003C0000FFFF003DFE56047F05F5102600715EFF1206005C000000000002008A +FF70035C060E000700190000251633323534272207363332151021222706072336372637 +113301CE1125A03434CA6E88F4FEAA49352218C41D433101B88205AF2D0120B8CEFEBF0F +483A45933C5A0530000200BAFF70064E047B0007002B0000251633323534272207363332 +151021222706072336372637113426232206151123113315363736333217161504C01125 +A03434CA6E88F4FEAA49352218C41D4331017C7C95ACB9B942595A75C163638205AF2D01 +20B8CEFEBF0F483A45933C5A01C09F9EBEA4FD870460AE6532327778E800000000020037 +FF700361059E000700210000251633323534272207363332151021222706072336372635 +1123353311331121152101D31125A03434CA6E88F4FEAA49362118C41D43318787B9017B +FE858205AF2D0120B8CEFEBF0F483A45933C5A02F38F013EFEC28F000001FFDBFE560179 +0460000B003840150B020700078705BD00BC0C080C05064F010800460C10FCECE4391239 +310010E4F4EC1112393930400B100D400D500D600D700D05015D13331114062B01353332 +3635C1B8A3B54631694C0460FB8CD6C09C61990000030071FFE3078C061400090023002F +00414013314525121447051B0D082B180E47011221453010FCECF43C3CFC3C3CF4ECEC31 +0040102808B90A2E04B9161D8C110AB80D97192FECE432F432EC3210EC32300010171620 +361026200713321711331136333200100223222715233506232227261037360010272620 +07061017162037012F53540124A8A8FEDC54B9F572B972F4CC00FFFFCCF472B972F5CB80 +7F7F80055D5354FEDC5453535401245402FAFE6A7473E70196E773010DC5025EFDA2C5FE +BCFDF0FEBCC5A8A8C5A2A20210A2A2FCE9019674737374FE6A74737300030071FE56078C +047B000B0025002F004440133145011224472B111D12070E1E47271217453010FCECF43C +3CFC3C3CF4ECEC310040120A2AB913042EB9211AB80C138C0FBD1DBC3010E4E4E432F43C +EC3210EC3230001027262007061017162037032227112311062322272610373633321735 +33153633320010020010171620361026200706CD5354FEDC54535354012454B9F472B972 +F5CB807F7F80CBF572B972F4CC00FFFFFAA253540124A8A8FEDC540164019674737374FE +6A747373FEF3C5FDAE0252C5A2A20210A2A2C5AAAAC5FEBCFDF0FEBC0317FE6A7473E701 +96E773000003FFFDFFBA057C06170012001600190000013313011709012303210F012307 +272337273709013301032103024AE586016166FE70017CD288FDD6CD32463B520201142F +0290FEEE16016FBD015D6A05D5FEA101A159FE27FC1B017FF18E464601113804C4FD1901 +B1FE4F011F0000000002000CFFBA058A06170022002C0000172713261110373621321716 +1737170715262701161716213237363715060706232027130123262320070611147266DC +75C3C3015386763D3A6566632E31FCF4090B880100827473666A777684FEB4C23902D801 +7482FF00888846580105BB01170168CFD024121B785976BB2B21FC660D0C9D2F2F5FD348 +2424C70115035C2F9C9DFED8AD00000000020009FFA2045D04BC0022002B000017273726 +351037362132171617371707152627011617163332373637150607062322271301262322 +070615146960BD559796010655512E2D595F761918FDD3070663B3504E4F4E4D52535DF0 +933701EE4747B363635E4EE68DCC01129D9D110A106C4F8F550E0BFD5E08087115162BAA +2412129001050256117172CD670000000001000A0000046A05D5000D003B40160C050A95 +020C06950081080305011C073A0C0A00040E10FC3CCCECFC3CCC31002FE4ECD43CEC3230 +400D300F500F800780087F047F0306015D1333113315231121152111233533C9CABFBF02 +D7FC5FBFBF05D5FD7790FDEEAA02BC900002FFB2FFBA05310617000F0012000001152301 +11231101270111213521371709012104E934FE22CBFE0D67025AFDEE04993866FDA6012C +FED405693EFDCCFD090207FDB35802C70252AA4259FE0B01620000000001006FFE100419 +047B003D0000013427262F0126272635343633321617152E0123220706151417161F0116 +171615140706071F01163315232227262F012627262726273516171633323736030A3233 +AB40AB4C4CE0CE66B44C4EA85A8944453131943FC650537B57849F932A4C2754724759ED +1E241011616C6663636182464601274B2828250F244A4B829EAC1E1EAE28282A2A544025 +24210E2C4B4C899C5B40139F7E249A3D265BF31E1003021223BE351A1B2D2C0000010058 +FE1004330460001800001321150116170117163B0115232227262F01262B013D01012171 +036AFD4E5C310108932A4C6C9354724759ED3D5A5E02B4FD650460A8FCDD1031FEF87E24 +9A3D265BF33F9C0C03250000000100500000048D05D500180036401112130C0B040F0005 +01081916011C040F1910D4D4ECD4EC1139391117393100400B0095050F95100B95128102 +2FF4ECD4ECD4EC3001231123113332363534262B0122060735363B013204151404029127 +CAF18D9A9A8DFE45AF4F98ABFEF40108FEF7025AFDA603009187888F2A2CB646DCE1D7E7 +000100500000038F047B0018003740100A08060F040C01000412131608000C1910D4D4EC +D4EC12391217393100400D16B901170C860D8808B90FB8172FF4ECF4EE10D4EC30013332 +36353427262322070607353633321716151406231123012F648D9A4C55864956564E98AB +FB7D84D4C2CA01A691878D414815152BB6466E74DBD5E5FEFC0000000003000A000004EC +05D5000C00150028005C401A150F0C06171D230500121C1A0919202E02040D001C262516 +042910FC3CCCEC3232CCFCECD4EC11173939393100401528019525040400051D00950E0D +95168105950EAD232FECECF4EC10EE391112392F3CEC3230B20F2A01015D011521152115 +2132363534262301112132363534262325213216151406071E0115140423211123353301 +93015BFEA50144A39D9DA3FEBC012B94919194FE0B0204E7FA807C95A5FEF0FBFDE8BFBF +02C9C990CA878B8C850266FE3E6F727170A6C0B189A21420CB98C8DA017090000002000C +FFE305CE05D50014001D005F400F15031C0709053816011C131100411E10FC4BB0105458 +B90000FFC038593CCCEC32FC3CCCEC32310040161D17100A000714039511091616001A95 +0D8C0400811E10E432F4EC11392F3C3CEC323211393939393001B61F1F8F1F9F1F035D13 +3311211133113315231510002120001135233533052115141633323635B2CB02E1CBA5A5 +FEDFFEE6FEE5FEDFA6A603ACFD1FAEC3C2AE05D5FD96026AFD96A496FEDCFED6012A0124 +96A4A47DF0D3D3F0FFFF00100000056805D5100603300000000300C9FF42048B06930013 +0017001B00000133073315230321152103211521072337231121011323110113211103B8 +AA41589297010AFEBCB9022EFD9841AA41B002AEFE3CB9D9011397FE560693BEAAFE46AA +FDE3AABEBE05D5FAD5021DFDE302C701BAFE460000040071FF42047F051E00050026002D +00310000012627262703051521031633323637150E012322270723132627261110003332 +17373307161716051326232206071B01231603C702530E106F019AFE2B944A616AC76263 +D06B7B6350AA6D211C9D0129FC383147AA5C392F83FDBC8714169AB90E5A6FCF0B029497 +5A100DFEF2365AFE971C3434AE2A2C21C20109171D9C010A0113014309ACE0223292C501 +4A02AE9EFE63010EAC0000000001FF96FE66025205D500130059401F0B02070C010C9512 +0F14079505B010811400110D0508063901111C0C10041410FC4BB0105458B90010004038 +593CEC32E43939C410C4310010E4FCEC10D43CEC32111239393001400D30154015501560 +158F159F15065D01231110062B01353332363511233533113311330252BFCDE34D3F866E +BFBFCABF0277FDF1FEF2F4AA96C2020FA602B8FD480000000002FFDBFE56021C06140013 +00170053402417BE14B1180F060B000B8709BD180213A9051000BC180C18090A4F150501 +08141000461810FC3C3CEC3232E4391239310010E4DC3CE43210F4EC1112393910F4EC30 +400B1019401950196019701905015D1333113315231114062B0135333236351123353311 +331523C1B8A3A3A3B54631694CB5B5B8B80460FE08A4FE28D6C09C619901D8A403ACE900 +00020073FE6606B005F10018002400434024030C0D069509B025229500161C950D108C16 +9101AF25090608021F0D001C02191913102510FCECD4EC323210CC3939310010ECE4F4C4 +EC10C4EE10E4EC113939300135331114163B011523222611350E01232000111000213216 +01101233321211100223220204B3C46E86454DE3CD4DECA5FEF2FEAC0154010EA5ECFCDF +EACCCDEBEBCDCCEA04EDE8FA93C296AAF4010E7F848001AB015C015C01AB80FD78FEE3FE +BB0145011D011D0145FEBB0000020071FE560540047B0018002400484022188700BD2522 +B9110E1CB905088C0EB812BC25011718131F041108134719120B452510FCECF4EC323210 +CC3939310010ECE4F4C4EC10C4EE10F4EC30B660268026A02603015D012322263D010E01 +2322021110003332161735331114163B01011416333236353426232206054046B5A33AB1 +7CCBFF00FFCB7CB13AB84C6931FBEFA79292A8A89292A7FE56C0D6BC6461014401080108 +01446164AAFB8C9961033DCBE7E7CBCBE7E700000002000A0000055405D50017002000BB +4018050603150900201A12050A1D1904153F180A1C0E110C042110FC3CCCEC32FCC4EC11 +17391139393931004021090807030A06110304030511040403420604001903041019950D +09189511810B042F3CF4ECD432EC32123912391239304B5358071005ED071005ED111739 +5922B2402201015D40427A17010500050105020603070415001501140216031704250025 +012502260327062607260826092022360136024601460268057504750577178806880798 +0698071F5D005D011E01171323032E012B01112311233533112120161514060111333236 +35342623038D417B3ECDD9BF4A8B78DCCABFBF01C80100FC83FD89FE9295959202BC1690 +7EFE68017F9662FD890277A602B8D6D88DBA024FFDEE8783838500000001000E0000034A +047B0018003D400A0A18030806120804461910FC3CC4C4FC3C3C3100401012110B15870E +B8030818A9050209BC032FE4D43CEC3210F4ECC4D4CC30B4501A9F1A02015D0115231123 +112335331133153E013332161F012E0123220615021EABB9ACACB93ABA85132E1C011F49 +2C9CA70268A4FE3C01C4A401F8AE66630505BD1211CEA1000002FFF6000004EC05D50011 +0014000003331721373307331521011123110121353305211704D997020C96D9979CFEF5 +FEF6CBFEF6FEF49D0277FED19805D5E0E0E0A4FE76FD3902C7018AA4A4E200000002000B +FE5604B504600018001B0000050E012B01353332363F0103213533033313211333033315 +212B011302934E947C936C4C543321CDFED6F0BEC3B8014CB8C3B9EFFED7C1DA6D68C87A +9A48865401F28F01CDFE3301CDFE338FFEF00000000200AEFFE30460047B000A002500B2 +40101700030A271F030814180A0D080C462610FCEC3232D4ECCCC41112393931401500A9 +170C0E06B911B82620861FBA1CB9238C0CBC260010E4F4ECFCEC10F4ECC410D4E4B6191F +0B17090E00121139113912393040313F1E3F1F3F203F214F1E4F1F4F204F215F1E5F1F5F +205F216F1E6F1F6F206F217F1E7F1F7F207F218F1E8F1F8F208F21185D40253F1D3F1E3F +1F3F203F213F224F1D4F1E4F1F4F204F214F225F1D5F1E5F1F5F205F215F2215015D0132 +363534262322061D01071133153E01333216151406232115141633323637150E01232226 +021DDFAC816F99B9B8B83FBC88ACCBFDFBFEFEA79760B65465BE5AF3F0022B667B6273D9 +B4294C027FAA6661C1A2BDC0127F8B2E2EAA2727FC00000000020071FFE3045A047B0010 +001C003840191AB9000E14B905088C0EB801BC0317040008024711120B451D10FCECF4EC +323231002FECE4F4C4EC10C4EE30B6601E801EA01E03015D0135331123350E0123220211 +100033321601141633323635342623220603A2B8B83AB17CCBFF00FFCB7CB1FDC7A79292 +A8A89292A703B6AAFBA0A86461014401080108014461FE15CBE7E7CBCBE7E700000200BA +FFE304A3047B000B001C0038401903B90C0F09B918158C0FB81BBC1900121247180C0608 +1A461D10FCEC3232F4EC31002FECE4F4C4EC10C6EE30B6601E801EA01E03015D01342623 +2206151416333236013E01333200111002232226271523113303E5A79292A8A89292A7FD +8D3AB17CCB00FFFFCB7CB13AB8B8022FCBE7E7CBCBE7E702526461FEBCFEF8FEF8FEBC61 +64AA0460000200BAFFE304A40614000B00240043401F03B90C0F09B918158C0FB81921A9 +1E9719001212471E211F180C06081A462510FCEC3232C43939F4EC31002FFCEC10E4F4C4 +EC10C6EE30B660268026A02603015D013426232206151416333236013E01333200111002 +2322262715231134363B01152322061503E5A79292A7A79292A7FD8E3AB17BCC00FFFFCC +7BB13AB9B3A5FEE95A5B022FCBE7E7CBCBE7E702526461FEBCFEF8FEF8FEBC6164A8047E +C3D39C7D7D0000000001007FFFE303F5047B00190030401B1986008816B903B81A0D860C +8810B9098C1A1B45131206480D001A10DC3CF4ECEC310010F4ECF4EC10F4ECF4EC30133E +0133320011100021222627351E01333236353426232206077F4DA55DFD012AFED3FEFA55 +A24C4E9D50B3C6C6B3509D4E04332424FEC2FEF2FEEEFEC62323AC2B2BE3CDCDE32B2B00 +00020071FF7303E7047B0027002F004F400F280B072C2C1213071213004822453010FCE4 +32EC10EC111239393100401300860188040FB92E2AB91704B925B81B178C3010E4CCF4EC +10FCDCEC10F5EE30400B0F31103180319031A03105015D01152E01232206151417161736 +373633321716151407062322270615233437262726111000213216011633323534232203 +E74E9D50B3C6630706273E496AA34A3F5F539B504906990C392F95012D010655A2FE8A3A +4D9284650435AC2B2BE3CDCD720806512C33483D597D2F2911394468512333A1010C0112 +013A23FC3A13394B00020071FE560540061400180024004B40240414120518A900BD2522 +B9110E1CB905088C0EB8129725184F1F041208134719120B452510FCECF4EC3232E43100 +10ECE4F4C4EC10C4EE10FCEC1112393930B6601E801EA01E03015D012322263D010E0123 +22021110003332161711331114163B01011416333236353426232206054046B5A33AB17C +CBFF00FFCB7CB13AB84C6931FBEFA79292A8A89292A7FE56C0D6BC646101440108010801 +446164025EF9D89961033DCBE7E7CBCBE7E7000000020071FFE305B9061400180024003D +401C22B900161CB90D108C16B82506A90597251F0C00080B47191213452510FCECF4EC32 +32310010FCE410E4F4C4EC10C4EE30B6601E801EA01E03015D013534363B011523220615 +1123350E0123220211100033321601141633323635342623220603A2A3B5BFAA694CB83A +B17CCBFF00FFCB7CB1FDC7A79292A8A89292A703B6C8D6C09C6199FB82A8646101440108 +0108014461FE15CBE7E7CBCBE7E7000000020071FFE3047F047B001900220072400D1B18 +1A1812084B1A081019452310FCC4ECF4EC111239314017001A190F861088141AA91914B9 +0C19BB1FB904B80C8C230010E4F4ECE410EC10EC10F4EC1112393040293F247024A024D0 +24F024053F003F193F183F1A3F1B052C112F102F0F2C0E6F006F196F186F1A6F1B095D71 +015D13343736333217161110070621222627351617163332373637213705262726232207 +06718384E2FC94959D9CFEF46BD0636264636AB766670CFCB2B802900E5D5C9A88525302 +5EFA9291A1A2FEEDFEF69C9C2C2AAE341A1A6364BE90019E57575A5A00020071FFE3047F +047B0014001B00414024001501098608880501A91518B91215BB05B90CB8128C1C02151B +1B080F4B15120801451C10FCC4ECF4EC111239310010E4F4ECE410EE10EE10F4EE111239 +301335212E0123220607353E01332000111000232200371E013332363771034E0CCDB76A +C76263D06B010C0139FED7FCE2FEF9B802A5889AB90E02005ABEC73434AE2A2CFEC8FEF6 +FEEDFEBD0123C497B4AE9E000002007CFFE30684047B000A003400774010362E28082734 +02120D4B05121F15453510FCC4ECFCECDC3CFCDCC4B626160B0404020D1112173931400F +2FA92E27221AB922B83509B9118C350010F4EC10F4EC10D4DCECB41F861E881A10F4EC40 +0B05150B0D020426160822111112173930400A340B0405112616152715070E103C3CFC3C +3C043C25362736270116171633320116151007062322272627012627260706070607353E +0133201716173733151417163B01152322272635034E6602010AFD971E205288A801601F +9594FCE4825C1C02FE131B4CD16C61646263D06B010C9C241BCBB82626692B40AF5752D6 +8ACF3E38FE9C45235A02906076FEEDA2A191679C01BB2723640101191A34AE2A2C9C2329 +75949931309C605AC8000000FFFF0085FFE303C8047C120603490000FFFF0085FFE303C8 +047C120603CB000000010085FFE3062A047C003E00694010403630083C2F1E122E131203 +19270B3F10DCC4C4D4ECD4ECDC3CFCDCC43140162686278822B92AB83F18A9193F0B860A +880FB9068C3F0010F4ECFCEC10D4EC10F4ECFCECB63D2E002A00181911123911123939B4 +37A936302A10D4DCEC30B33C3D2E2F0704103C011E011514042322272627351617163332 +3736353427262B013533323736353427262322070607353E013332171617373315141716 +3B01152322272635050602C27C8AFEFEEE5055545A4755555D9755544E4889949B744344 +4645774751506162AA4CC4715F0FECB82626692B40AF5752FEE040025C18926CADB60E0E +1CAB25131238385A583833982C2D46402E2E0D0D1DA718184E426A86949931309C605AC8 +A646000000020071FFE304C5047C001A002F003B400D17121F31120C122604122C453010 +FCECD4ECC4C4D4EC31400E00B91BB83011A9123008B9298C300010F4EC10D4EC10F4ECB2 +23121111123930012207061514171633323736353427262B013533323736353427262732 +171615140706071E011514042320001110373602F1FB60636368D29755544E4889949B74 +4344464568C471723C3C707C8AFEFEEEFEC6FED6979703DC6E72CDD06F7438385A583833 +982C2D46402E2EA04E4F8D5D40411818926CADB6013E010E01129D9E0001FFDBFE56021C +04600013004B401F0F060B000B8709BD140213A9051000BC140C14090A4F020501081310 +00461410FC3C3CEC3232E4391239310010E4DC3CE43210F4EC1112393930400B10154015 +50156015701505015D1333113315231114062B01353332363511233533C1B8A3A3A3B546 +31694CB5B50460FE08A4FE28D6C09C619901D8A400020071FE5605B80614000B00300055 +4029190C1D0912861316B90F03B92623B81D2DA92A9709B90FBD1A1D2A2D2B261900080C +4706121220453110FCC4ECF4EC3232C4393931002FC4E4ECF4EC10F4C4EC10FED5EE1112 +393930B660328032A03203015D01342623220615141633323617100221222627351E0133 +32363D010E01232202111012333216173534363B01152322061503A2A59594A5A59495A5 +B8FEFEFA61AC51519E52B5B439B27CCEFCFCCE7CB239A3B5BEA9694C023DC8DCDCC8C7DC +DCEBFEE2FEE91D1EB32C2ABDBF5B6362013A01030104013A6263C8D6C09C619900020071 +FE56045A0460000A00230043401F180B1C0811861215B90E02B923BC08B90EBD191C1800 +080B470512111F452410FCC4ECF4EC3231002FC4E4ECF4EC10FED5EE1112393930B66025 +8025A02503015D011121220615141633323617100221222627351E013332363D010E0123 +2202113412332103A2FEAA8796A59495A5B8FEFEFA61AC51519E52B5B439B27CCEFCFCCE +021F023D0188CDBBC7DCDCEBFEE2FEE91D1EB32C2ABDBF5B6362013A0103F9012A000000 +00010071FFE3044F047B001D0038401F00051B01A9031BB9081286118815B90EB8088C1E +02000811340418120B451E10FCECDCE4FCC4310010E4F4ECF4EC10FED4EE113939302511 +233521110E0123220011100021321617152E0123220615141633323603A99B014165D77B +FDFED6012D010668C55D5FC063B3C6C6B34F7C9E01118CFDF02424013E010E0112013A37 +37AA3E3EE3CDCDE30F00000000020060FE5204640460001300230079400A250218120720 +120D122410D4D4ECD4ECD4C4B5001C140318201112173931400A14B90ABD01130212BC24 +0010E4323232F4ECB30D071C0A1112393930B4131112121C070510ECB31112021C08103C +B4011102021C070510ECB500010302121C08103C04103CB303001300070E103CB3110001 +00070E103C09013301161716151406232226353437363701330132373635342726270607 +061514171602620142C0FE5F6A263B969696963B266AFE5FC00142431F1C1C283A3A281C +1C1F01E80278FCDCB153806381828281638053B10324FA8E1B182D45496463636449452D +181B000000020060FFE304640460001300230079400A250218120720120D122410D4D4EC +D4ECD4C4B5001C140318201112173931400A14B90A8C01130212BC240010E4323232F4EC +B30D071C0A1112393930B4131112121C070510ECB31112021C08103CB4011102021C0705 +10ECB500010302121C08103C04103CB303001300070E103CB311000100070E103C090133 +011617161514062322263534373637013301323736353427262706070615141716026201 +29D9FE72472C4596969696452C47FE72D90129431F1C271F38381F271C1F02D1018FFDEA +624C783E828181823E784C620216FC1F1B182D21403246463240212D181B0000000100AE +FE560458046000130039401B030900030E0106870E118C0A01BC0CBD140D09080B4E0208 +00461410FCECF4EC32310010E4E432F4C4EC1112173930B46015CF1502015D1311331114 +163332363511331123110E01232226AEB87C7C95ADB8B843B175C1C801BA02A6FD619F9F +BEA4027BF9F602566663F000000100BA000004640614001B004340210309000316010687 +1619B81C0C1512A90F970A010208004E0F12101509080B461C10FCEC32C43939F4EC3100 +2F3CFCEC393910F4C4EC1112173930B2601D01015D011123113426232206151123113436 +3B01152322061D013E013332160464B87C7C95ACB9A3B5FEE7694D42B375C1C602A4FD5C +029E9F9EBEA4FD87047ED6C09C6199CC6564EF00000100BAFE56046406140021004A4025 +030900031D010D871D1FB822131C19A916971207870412060A08004E1619171C10081246 +2210FCEC32C43939F4ECC431002FDCEC10FCEC393910F4C4EC1112173930B2602301015D +011114062B01353332363511102322061511231134363B01152322061D01363332160464 +A3B5FEE9694CF895ACB9A3B5FEE7694D83E7C1C602A4FD48D6C09C619902B2013DBEA4FD +87047ED6C09C6199CCC9EF000002000E0000021E0614000B000F003E40180EBE0CB10602 +0BA9050800BC0605020D0108080B0C00461010FC3C3C3CEC32323231002FE4DC3CEC3210 +FCEC30400B1011401150116011701105015D13331133152311231123353311331523C2B8 +A4A4B8B4B4B8B80460FE08A4FE3C01C4A403ACE9FFFF00A60000026E04601006034D0000 +00010074000002840460000B0027400A03060804080009080A0C10DCEC32FCEC32310040 +09040BA901BC0509A9082FEC32FCEC3230133521152311331521353311740210A8A8FDF0 +B003BCA4A4FCE8A4A40318000001004B000002DF06140023003C400D250B560A12010800 +131C561D2410DCFCDC3CFC3CDCFCD431401214110223040F2106C30F1D0B21C318009713 +002FE42FEC32D43CEC111217393001331116171633323736373306070623222711231126 +2726232207060723363736333217013DB80201110D261212027D0233335B1413B8060511 +0D261212027D0233335B19160614FCED01010925245287494A04FD850302040309252452 +87494A060002004D000003540614001100180035400B1A04050108120007160D1910DCDC +D43C32FC3CDCC431400E110FB9140A05A912020207009707002FE411392F3CEC32D4ECC4 +300133113315231123113427232037363332170726232207143301A2B8FAFAB8013DFEE8 +0101F5352A1017374D015C0614FCFEA0FD8E02540F0FBDF619FA844B39000000000100C1 +FE56025F0614000B002840070D0600080B460C10FCFCD4C43100400C0A0105000B970C05 +8706BD0C10F4EC10E41112393930011114163B0115232226351101793D783146BF990614 +F9CE7C749CCCCA0628000000000100C1FE4C05360614002400B2400E1B23151226060E23 +1D220820462510FCFC3CD4C4D4C4EC10CCB200231B1112393140181B4200A91A1A221F1D +A9220E860D9311B909BD22BC20971F002FE4E4FCECF4EC10EC1112392FECECB315060009 +111239393040081B11001C11241A23070510EC0410EC401B0C1C0A001B1C19002A1C2A00 +38003B1C49004C1C54005B1C71000D015D401B041B0424141B1424251B24243524371B45 +24461B54245C1B7F1B0D005D4009070B060C1A0C1A0F045D013217161716151404212227 +2627351E0133323736353427262B013501211123113311211503436981635551FED0FEE8 +5E63646A54C86DBE63645C5BA7AE01AEFD6AB8B8036501DC382B6C688ADDF2121325C331 +324B4B8F844B4AA601F3FC330614FE4CA8000000000100BAFFE6071D04620026005E4011 +0012141E1B081D50120814500A0808462710FCECFCFCFCFC3C11123931401607140A1A11 +00061F080D17871F04238C271B1208BC270010F43C3C10F43CC4EC321112173930401330 +28502870289028A028A028BF28DF28FF2809015D25060706232226351133111416333237 +363511331114163332363511331123350607062322272603AE43626082AFBEB972758F53 +53B972778DA6B9B93D5A58797A5655D8793D3CF6E202A4FD62A29C605EA4027AFD62A29C +C0A2027AFB9EB06533323E3E000100BAFE56071D04620026006140110012141E1B081D50 +120814500A0808462710FCECFCFCFCFC3C11123931401807140A1A1100061F080D17871F +04238C271B1208BC1DBD270010ECF43C3C10F43CC4EC3211121739304013302850287028 +9028A028A028BF28DF28FF2809015D250607062322263511331114163332373635113311 +14163332363511331123110607062322272603AE43626082AFBEB972758F5353B972778D +A6B9B93D5A58797A5655D8793D3CF6E202A4FD62A29C605EA4027AFD62A29CC0A2027AF9 +F4025A6533323E3E000100BAFE56071D047B0030006340120E00110F130807501C081A50 +29250827463110FCEC32FCFCFCEC111239CC310040180E870D1B071D14251A00062A1B21 +17872A2D03B828BC261B2F3CE4F43CC4EC321112173910D4EC3001401330325032703290 +32A032A032BF32DF32FF32095D013E013332171615111407062B01353332373635033426 +23220615112311342726232207061511231133153E0133321716042945C082AF5F5F5251 +B5FEE96926260172758FA6B93939778D5353B9B93FB0797A555603897C767B7AE2FD48D6 +60609C30319902B2A19CBEA4FD87029EA24E4D5F60A3FD870460AE67623E3E000001FFDB +FE56046B047B001B0051400F0208004E101C0D0E4F0A150814461C10FCEC32E4391239F4 +EC3100400E03090003160106871619B814BC012FE4F4C4EC111217394009130A0F140F87 +0DBD1C10F4EC1112393930B4601DCF1D02015D011123113426232206151114062B013533 +3236351133153E01333216046BB87C7C95ADA3B54631694CB942B375C1C602A4FD5C029E +9F9EBEA4FD73D6C09C61990474AE6564EF000000000100BAFE56054A047B001D003B400C +171A0308154E090D080C461E10FCEC32F4ECDCC431400D06870E11B80CBC0B1AA91BBD0B +002FFCEC10E4F4C4ECB5090314030E0A1112173930012635113426232206151123113315 +3E0133321615111417163B0115232203FE527C7C95ACB9B942B375C1C62626693146B5FE +B660D602B29F9EBEA4FD870460AE6564EFE8FD489931309C000100B30000046404600009 +0079401E071101020102110607064207020300BC08050601070208044E070800460A10FC +ECFCEC11393931002F3CEC323939304B5358071004ED071004ED5922B21F0B01015D4030 +3602380748024707690266078002070601090615011A0646014906570158066501690679 +0685018A0695019A069F0B105D005D13210111331121011123B3011001DDC4FEF0FE23C4 +0460FC790387FBA0036CFC9400030071FFE30475047B0006000D0019002C401804A90B07 +B91400B90EB8148C1A0A041211510B031217451A10FCEC32F4EC32310010E4F4EC10EEDC +EC3001220607212E01033236352114161332001110002322001110000271939512027412 +959295A8FD86A896F00112FEEEF0F1FEEF011103DFC17F7FC1FCA0E89494E803FCFEC8FE +ECFEEDFEC70139011301140138000000000200710000062404600012001D0049400D1F04 +00090602081318120E451E10FCECD4EC32D4C4C4C4B30A1202131112393931400A0213A9 +12BC0A1D07A90A002FFC3C10F4FC3C400803A906060E0E130A11123910D02FEC30011521 +112115211121152120272611103736211723220706151417163B010616FDD40215FDEB02 +3AFCE1FEBBA7A8A8A701452A25F078787878F02504609AFEDD9BFE949C8E8F011401128E +8F826C6BD8D96C6D00020094FFDC053E047C001300240032400D26450712191308000C12 +14452510FCECD4FCD4ECEC3100400D000A8717030F871E238C17B82510E4F43CEC3210EC +C4300115141632373635100220021114171632363D01051000200011140607062226270E +0122260348606B2649D0FE6ECA49266B60FE040142022201463A2E61D7A20C129DD6D702 +94C4A3B5305B9D010F0131FED0FEF09D5B30B5A3C4C80154015CFEA4FE806CB23670A375 +799FED00FFFF0070FE5604D1061412060369000000010000FFE502900460000E002F4009 +0702040A0E080D040F102FDCEC321139393100400D0A000B0504000787028C0CBC0D2FEC +F4ECC4D4CC11123930250621222F0116333236351133112301D772FEF92538013C589CA7 +B9B9AEC90ABD23CBBE024EFBA000000000010000FFE50290060A000E002F40090702040A +0E080D040F102FDCEC321139393100400D0A000B0504000787028C0C970D2FECF4ECC4D4 +CC11123930250621222F0116333236351133112301D772FEF92538013C589FA4B9B9AEC9 +0ABD23CEBB03F8F9F600000000010000FE560376046000160044400C114F0D0702040A16 +080D040F102FDCEC3211393910E431004016160D0B0011A912BD170A000B050400078702 +8C0CBC1710ECF4ECC4D4CC11123910FCEC1112393930250621222F011633323635113311 +14163B01152322263501D772FEF92538013C589CA7B94C693146B5A3AEC90ABD23CBBE02 +4EFB8C99619CC0D6000100BAFE58034A047B001100334016060B0700110B03870EB809BC +07BD120A06080008461210FCC4EC32310010ECE4F4ECC4D4CC11123930B450139F130201 +5D012E012322061511231133153E0133321617034A1F492C9CA7B9B93ABA85132E1C03B4 +1211CBBEFC0A0608AE66630505000000000100BAFE56034A047B0019003A401A0613070B +870CBD1A001913038718B811BC1A0B1206080010461A10FCC4EC32C4310010E4F4ECC4D4 +CC10F4EC11123930B4501B9F1B02015D012E01232206151114163B011523222635113315 +3E0133321617034A1F492C9DA74C69E9FEB5A3B93ABA85132E1C03B41211CBBEFD9E9961 +9CC0D60474AE666305050000000100840000037E047B000F00254007020C000805071010 +DCCCEC32CC3100400A00070C870BBC010687042FEC32FCEC393930011133152135331134 +363B011523220601E0A4FE00A4A3B5FEE9694C02E5FDBFA4A40241D6C09C610000010074 +0000037E047B000F002540070200080C05071010DCCCCCFCCC3100400A00070A870DBC01 +0687042FEC32FCEC393930011133152135331134262B013533321602CAB4FDF0A44C69E9 +FEB5A302E5FDBFA4A4024199619CC000000200BA0000049704600013001C00B040340908 +07030A061103040305110404034206040015030415A90914A90DBC0B040506031109001C +160E050A19120411140A080C461D10FCEC32DCC4EC1117391139393931002F3CF4ECD4EC +123912391239304B5358071005ED071005ED1117395922B2401E01015D40427A13010500 +05010502060307041500150114021603170425002501250226032706260726082609201E +3601360246014602680575047505771388068807980698071F5D005D011E01171323032E +012B011123112132161514060111333236353426230314307332AEC3A24A7B51A9B90184 +DAD670FDF5C6777F7581020D0A745DFECE011F803AFE2704609EA5698C019DFEAF564E4D +60000000000200BA0000049704600013001C004540150907060F030C1C16120502191208 +0F01140800461D10FCEC32DCC4EC111739113939393100400F06080C14090803A91415A9 +0800BC132FE432ECD4EC11391139113930133311333236371333030E01071E0115140623 +21131133323635342623BAB9A9517B4AA2C3AE3273306A70D6DAFE7CB9C681757F770460 +FE273A80011FFECE5D740A1B8C69A59E01ECFEAF604D4E560001006FFE5603C7047B0030 +008040430D0C020E0B532827080902070A532728274219A91ABD310A0B2728041F008601 +89041F8921B91104B92EB8118C311A15081E270A0B282407005224080E07081E2B453110 +FCC4ECD4ECE411123939393910ECCC310010E4F4EC10FEF510F5EE12173910FCEC304B53 +5807100EED111739070EED1117395922B2003001015D01152E012322061514161F011E01 +15140623222F011514163B01152322263D01163332363534262F012E0135343633321603 +8B4EA85A898962943FC4A5F7D86458154C69E9FEB5A3CCC1828C65AB40AB98E0CE66B404 +3FAE282854544049210E2A99899CB611040C99619CC0D6FB6A59514B50250F2495829EAC +1E0000000001FFD9FE5602D7061400130034400D11140E0F4F050B0A080100461410FC3C +EC3232E43912393100400D10870FBD140A0106068705971410FCEC12393910F4EC301711 +34363B0115232206151114062B0135333236BEAEBDAEB0634DA3B54631694B1404C2BBAB +995068FB29D6C09C610000000001FFD9FE5602D706140020004F40120D201C0116211314 +4F05100A08191E01462110FC3C3CEC3232E439123910CC32C4310040171EA900BC210C1C +A90F1B158714BD210A0106068705972110FCEC12393910F4ECD43CEC3210F4EC30133534 +363B01152322061511173315231114062B01353332363511233533112335BEAEBDAEB063 +4D01A2A3A3B54631694BB4B4AF04604EBBAB995068FDA803A4FE28D6C09C619901D8A401 +698F000000010037FE560335046500130022B60F4F0B0801061410D4DCFCEC3100400A0E +8710BD14048706BC1410F4EC10F4EC30051134262B0135333216151114163B0115232226 +01974D63B0AEBDAE4B693146B5A3140328685099ABBBFCED99619CC00002FEF2FE5602D7 +06140016001F0032400C1A090D0211031608170D4F2010FC32FC32CCCC10D4CC3100400C +1C0703188700138711970B002F3CF4EC10EC32D4CC302133152306070623203534213311 +34363B0115232206150323221716333237360177B7BF123552B5FED1010EBEAEBDAEB063 +4DC3B37703037C6E21119B6F4060D8D204AEBBAB995068FAA33341301800000000010037 +FEC002F2045E001300334009080B0E1208050109022F3CD43CEC3239393100400C0E0500 +08A90BBC0F03A912022F3CEC32F4ECC439393001B2AF15015D01112135211134262B0135 +33321615113315231101B2FE85017B4B73BDBDD5A28787FEC0013E8F0260894E9A9FD2FD +A08FFEC200010037FE5602F6059E0013003D401C0E05080F03A9001101BC1408870BBD14 +0B08090204000810120E461410FC3CC4FC3CC4323939310010FCEC10F43CC4EC32113939 +30B2AF1501015D01112115211114163B01152322263511233533110177017BFE854C69CA +E0B5A38787059EFEC28FFC1B99619CC0D603E58F013E000000020000FFE3051204600016 +001E0043401F0D011C8710000704A90A14170D108C0501BC0B170C0408064E1802080046 +1F10FCEC32F4EC323231002FE432F4C4DC3232EC323210FC111230B46020CF2002015D13 +113311211133113315231123350E012322263D0123350521151416333236AEB8023AB8BA +BAB843B175C1C8AE039FFDC77C7C8FB2026801F8FE0801F8FE08A4FE3CAC6663F0E70AA4 +A5029F9FBA00000000010071FFE204840460001F0053400D1D1A122100041114120E0A04 +2010FCC4FCC4D4C4CCFCC43100400E111D0D01A91E10BC2017B9078C2010F4EC10FC3CEC +32323230014019E011E010EF1DEF1ED011D010DF1DDF1E401140104F1D4F1E0C5D01231E +0115140023220035343637233521150E011514163332363534262737210484EC617FFEE4 +E1E1FEE47F61ED01BA6688B09090B088660101B403BC48EB98EBFEDC0124EB98EB48A4DC +42D78B9FC2C29F8BD742DC00000100C10000045C0462001E002C400C200012141905100C +0809461F10FCFCC4C4C4D4EC393100400A11B90418B919B80BBC042FECF4EC10EC300114 +07062B0122272635113311141716373332363534272627351617161716045C8E91DE46B5 +5251B82628673390B04A496E6858A73322020FEE8F926060D602CAFD3699313202C49EE8 +65631E9608305BAB730000000001003D0000047F04600006006840270411030302051106 +0502020305110504010001061100010042050201BF0306050402010503000710D44BB00A +5458B90000004038594BB014544BB015545B58B90000FFC03859C4173931002FEC323930 +4B5358071005ED071008ED071008ED071005ED592201330133012309013D01A4FA01A4C3 +FEA2FEA20460FBA003ACFC5400010056000006350460000C01EF400F08090A0B0C010203 +0405060B00070D10D44BB00A544BB011545B4BB012545B4BB013545B4BB00B545B58B900 +0700403859014BB00C544BB00D545B4BB010545B58B90007FFC03859CC173931400A0A05 +02030C08BF070300002F3C3CEC321739304030025501020B0A0B03550A0B04550A090A05 +55060509090A0111000C00021103020C0C00051104050807080611070708424B53580710 +05ED071008ED071008ED071005ED071008ED071005ED0705ED071008ED59220140FF0A05 +190519022D0A3A0A46054602490A4F0A540554025A0A5F0A61056102690A760570057602 +70028805960597029B0AB305B302C105C804C0021D0505090406030B020A0C0B0B040905 +081505190416031A021B0C1B0B1409150825072506230527042103250222012200250C27 +0B240A2109230839043603360C3908300E4605480446034003420240014000400C440B44 +0A4409400E400E5607560656055003510252015200500C530B540A55096307640665056A +0465036A026A016A006E0B610967086F0E7507750679057D0478037D027A017F017A007F +00780C790B7F0B7B0A76097D08870588028F0E97079706940593049C039B029801980099 +0C402F96089F0EA607A606A405A404AB03AB02A901A900AB0CA408AF0EB505B104BD03BB +02B80BBF0EC405C304CC03CA02795D005D21230B01230B012301331B01330635B8E6E5D9 +E6E5B80125D9F1F2D9036AFC96036AFC960460FC6A0396000001003D0000047F06140011 +0046B413060E001210D4D4C4C431B507A906970E00002F3CF4EC30B7100D0C1111000100 +070510FC3C3C3CB608090A0B04070C011112173940091011110C0F110E0E0D0710EC08EC +33013637363B0115232207060F01012309013D01EC50484A7C936C4C2A2E2F2101C5C3FE +A1FEA304D2C73E3D9A2423875EFBB2036CFC9400000100660000046B046000080038400A +0208050A04050808000910D4DCFCD4C411123931B30400BC07002FE43230400C03110405 +0402110111000800070510EC04EC070510EC13330901330111231166D90125012ED9FE5D +CB0460FE3801C8FD90FE1001F000000000010058FE5604BF0460001300AA402212110203 +0203111112114209A90ABD0F12A900BC03A90F0A4F04120301000401101410DC4BB00B54 +4BB00C545B58B90010FFC038594BB0135458B9001000403859C432C411393910EC31002F +ECF4EC10FCEC304B5358071005ED071005ED592201404205021602260247024911050B12 +0F1518031B122B1220153603391230154001400245034004400F4312570359125F156001 +600266036004600562127F158015AF151B5D005D13211501211514163B01152322263D01 +2135012171036AFD4C02B44C692F46B5A3FD3702B4FD650460A8FCDBA799619CC0D614A8 +0325000000020058FF9103DB0460001A002100B14011160412111B1E120C190301000C01 +01172210DC4B544BB00C545B58B90017FFC038594BB0135458B9001700403859C432C411 +393910ECDC3CEC323100400D19A900BC131708B920031BA9172FFC3CDCEC10CCF4EC3040 +0B19110203020311181918424B5358071005ED071005ED592201403A0502160226024702 +4918050B190F2318031B192B1920233603391930234001400245034319570359195F2360 +016002660362197F238023AF23175D005D132115013336373633321716151607062B0106 +15233437213501210133323534070671036AFD4CAF22544160843A26013E527E69039903 +FE9602B4FD6501FF388A46580460A8FCDBA24737573957602F3D333C3B34A80325FCC636 +5D02020000010058FE4C042F0460002000A9400A1B1F151222061E1F0E2110DCD4C4D4C4 +EC10CCB2001F1B1112393140161B4200A91A1A1E211DA91E0E860D9311B909BD1EBC2100 +10E4FCECF4EC10EC1112392FECECB315060009111239393040081B11001C11201A1F0705 +10EC0410EC401B0C1C0A001B1C19002A1C2A0038003B1C49004C1C54005B1C71000D015D +401B041B0420141B1420251B24203520371B4520461B54205C1B7F1B0D005D4009070B06 +0C1A0C1A0F045D0132171617161514042122272627351E0133323736353427262B013501 +21352115023C6A80625651FED0FEE85E63646A54C86DBE63645C5DA5AE01AEFD65036A01 +DC382A6D688ADDF2121325C331324B4B8F844B4AA601F393A80000000002006DFE4C046C +04600024002D00000120373605161736353427262B013501213521150132171617161514 +07161523342730070637262322071433323701E7FEB10202012AF69E0C5C5EA4AE01AEFD +65036AFE656981645451276499281497097DC583019EBE63FE4CBDFB05043B2A31854A4A +A601F393A8FE24382B6C678B715565A452381179FA2A4B2F4B00000000010058000003A5 +0612001C003440091E0512161A08000D1D10DCDCFCDCECC431400E0D860E0C1209B91297 +1B1AA9001B002FD4E410F4EC104B5058DC1BD459EC300133323736352627262322070607 +35363736332017161514070607112301543FC0563A013963B3504F4E4E4C51515501138A +6D6C70AACA031E724C6285417216152BAC2311129D7DBAAA73771EFD7400000000010058 +000003A50612001C0035400A1E10000803181207451D10FCECDCFCDCC431400E10860F0C +0B14B90B970203A90002002FD4E410F4EC104B5058DC1BD459EC30011123112627263534 +373621321716171526272623220706071417163302A8CAAA706C6E8901135551514C4E4F +4E50B36339013A56C0031EFCE2028C1E7773AABA7D9D121123AC2B1516724185624C7200 +00010058000003A50612001C003740091E181207030800101D10DCDCFCDCECC431401010 +860F0C0B14B90B8C1D03A90001971D0010F4D4E410F4EC104B5058DC1BD459EC30011333 +1116171615140706212227262735161716333237363734272623015401CAAA706C6D8AFE +ED5551514C4E4E4F50B36339013A56C002F4031EFD741E7773AABA7D9D121123AC2B1516 +724185624C72000000010058FE4C03A506140023002DB6251A081212002410DCECDC32CC +310040100987080D870497241A871B16871FBD2410FCECD4EC10F4ECD4EC301334373621 +32171617152627262322070615111417163332373637150607062320272635586E890113 +5551514C49544E50B0663A3A66B0504E4F4E4C515155FEED896E0440BA7D9D121123AC28 +1816724185FBE085417216152BAC2311129D7DBA00030073FFE305D905F0000D00170022 +000001343736333217161514062227260020001110002000111001200011100021200010 +0002B52220302E2220425E2022014EFE48FEFD010301B80101FE23013A0178FE88FEC6FE +C5FE87017902E92E222222222E2F4221210292FEB8FEE5FEE6FEB80148011A011B01ECFE +5BFE9EFE9FFE5B01A402C401A5000000FFFF00BA0000043E0460100603C6000000020071 +FFE304C5047C001A002F003D400E3117121F092504122C0F1225453010FCECD4EC10C4D4 +ECC431400E00B91BB8300AA9093013B9228C300010F4EC10D4EC10F4ECB2280A09111239 +3001220706151417163B0115232207061514171633323736353427262520171611100021 +2224353436372627263534373602457745464443749B9489484E545597D268636360FEF6 +01619797FED6FEC6EEFEFE8A7C703C3C727103DC2E2E40462D2C983338585A3838746FD0 +CD726EA09E9DFEEEFEF2FEC2B6AD6C92181841405D8D4F4E00010071FFE305CB06140027 +00474027121B111C18A915972800052501A90325B908111C881FB90EB8088C280200081B +340422120B452810FCECDCE4FCC4310010E4F4FCEC3910FED4EE11393910FCEC11123939 +302511233521110E01232200111000213216173534363B011523220615112E0123220615 +141633323603A99B014165D77BFDFED6012D0106376931A3B5FEE7694D5FC063B3C6C6B3 +4F7C9E01118CFDF02424013E010E0112013A0F0F21D6C09C6199FEE53E3EE3CDCDE30F00 +FFFF00BA000004810460100603D100000003FEF2FE56022E061400030012001B00394011 +0913050416120F041D070105080004461C10FC3CFC3CDCC410DCEC1112393931400B180D +BD04BC00B109130612002F3CCC32E4E4FCC4301333152315331133152306070623203534 +2133072322171433323736C1B8B8B8B5BD12374BBCFED1010EC108B875017F5F2B1D0614 +E9CBFBA08B784760DDCD8B4241302000000100BAFE4C049C0460000A0000012311012309 +0133011133049CB9FDDBEB0252FD95F00239B9FE4C0397FE1D020C0254FDDD0223000000 +000100BA000003F104600005001B400D00BF03A906050703010800460610FCFCCCC43100 +2F10ECEC30133311211521BAB8027FFCC90460FC3393000000><00020071FE5605F80612 +000B00240043401E03B90C0F09B91815B80F8C23BD251F871C9725180C06082247001212 +452510FCECF4EC3232310010FCEC10E4E4F4C4EC10C6EE30400960268026A026E0260401 +5D011416333236353426232206010E01232202111000333216173534363B011523220615 +1123012FA79292A8A89292A702733AB17CCBFF00FFCB7CB13AA3B5FEE7694DB9022FCBE7 +E7CBCBE7E7FDAE646101440108010801446164C6D6C09C6199F9DA000000000100580000 +03A506120024004C400B260512161F1A0820000E2510DCDC3CFC3CDCECC4B31C1A230010 +CC10CC3140140D860E0C12241BA9211E1F09B912971F1AA9001F002FD4E410F4EC10DC3C +EC32104B5058DC1BD459EC30013332373635262726232207060735363736332017161514 +0706071533152311231123353301543FC0563A013963B3504F4E4E4C51515501138A6D6C +70AAE7E7CAE5E4031E724C6285417216152BAC2311129D7DBAAA73771ED4A4FEEC0114A4 +000000010058000003A506120024004D400C2610221D082303181207452510FCECDC3CFC +3CDCC4B32022002310CC10CC31401410860F0C0B021EA924212314B90B972303A91D2300 +2FD4E410F4EC10DC3CEC32104B5058DC1BD459EC30133533352627263534373621321716 +171526272623220706071417163B0111331523112311F7E7AA706C6E8901135551514C4E +4F4E50B36339013A56C03EE5E5CA0114A4D41E7773AABA7D9D121123AC2B151672418562 +4C72FE9AA4FEEC01140000030071FFE307C30614000B0026002900000010171620373610 +27262007251133112115012115212B01350607062322272610373633321716171101012F +5354012454545454FEDC540220B80369FD4C02B4FC971A9E3A58597CCB807F7F80CB7C59 +58F2029A02FAFE6A74737374019674737348025EFE4CA8FCDB93A8643031A2A20210A2A2 +31304DFCF9030700000000020071FE4C081C061400340040000001112335060706232227 +26103736333217161711331121150132171617161514042122272627351E013332373635 +3427262B013501041017162037361027262007045AB83A58597CCB807F7F80CB7C59583A +B8036AFE656A80625651FED0FEE85E63646A54C86DBE63645C5DA5AE01AEFA3A53540124 +54545454FEDC5403CDFC33A8643031A2A20210A2A2313064025EFE4CA8FE24382A6D688A +DDF2121325C331324B4B8F844B4AA601F3D3FE6A7473737401967473730000040071FF91 +07C20614000B000E0033003A000000101716203736102726200725110125211501331233 +321716212306152334372123350607062322272610373633321716171133013332353423 +06012F5354012454545454FEDC5402D80299FD670368FD4CAF3CDBE30101FEB229039903 +FE969D3A58597CCB807F7F80CB7C59583AB801FD14AE465802FAFE6A7473737401967473 +735FFCFA030693A8FCDB0120F6BD333C3B34A8643031A2A20210A2A2313064025EFA7F36 +5B020001003700000640059E0037000001112115211114171633213237363534262F012E +0135343633321617152E012322061514161F011E01151407062901222726351123353311 +0177017BFE8525267302408246465EB240AB98E0CE66B44C4EA85A898962943FC6A37C4C +FEF9FDC4D551518787059EFEC28FFDA08927272D2C34494D2A0F2495829EAC1E1EAE2828 +54544049210E2C978992653E504FD202608F013E000000020037FE56050806140026002F +000001112130353437363B01152322070615131407062B0135333237363D012322272635 +1123353311010211211114171633017701785751C3AEB0632627025152B54631692626BD +D551518787023302FE88252673059EFEC24EB55B5699282868FB29D660609C3031991450 +4FD202608F013EFAFC01A20195FDA089272700030037FF7005C9059E002D003900440000 +011121153621321716171526272623220706101F01363320171407062322270615073437 +212227263511233533110116333237362726232207060526351037211114171633017701 +7B9500FF5551514C4E4F4E50B3636363084FCE012B01654B9D5449029906FEEBD5515187 +87033B42535F151F010183722805FED6808BFE99252673059EFEC27A95111223AC2B1615 +7172FE667209ABF676291E12324C034F41504FD202608F013EFAF918070B274B560A099D +F801079BFDA0892727000001002FFE56066F06140035000001111407062B013533323736 +351134262322061511231121112311233533353437363B0115232207061D01213B011536 +373633321716066F5251B5FEE96926267C7C95ACB9FED3B9B0B05757BDAEB0632726012D +02B742595A75C1636302A4FD48D660609C30319902B29F9EBEA4FD8703D1FC2F03D18F4E +BB55569928286863AE6532327778000100C1000005410614002700001333112132373635 +34262F012E0135343633321617152E012322061514161F011E01151407062901C1B801FD +8246465EB240AB98E0CE66B44C4EA85A898962943FC6A37C4CFEF9FD4F0614FA862D2C34 +494D2A0F2495829EAC1E1EAE282854544049210E2C978992653E000200C1000004E20614 +000A000D008E400D0D05030B0603090B010800460E10FCFC3CD4C432111239393100400A +420DA902BC05A90097072FECECF4EC304B5358400A05110C0D0C0D11040504071005ED07 +1005ED59014042050416041B0C26044704490C060D0D0F0F18051D0D2B0D300F390D4003 +400440064007400F430D45055705590D6003600460066007600F620D6605AF0FBF0FDF0F +1A5D005D1333112115012115212B01131101C1B80369FD4C02B4FC971A9EB8029A0614FE +4CA8FCDB9303CDFCF9030700000000020036FFE203E9051F000C0019000013331B01331B +013303230B012303331B01331B013303230B01233674919089919074B988989988B97491 +9089919074B9889899880255FE1701E9FE1701E9FD8D0202FDFE053DFE1701E9FE1701E9 +FD8D0202FDFE0002003600AD03E9051F0007000F0033400C110C040809010D0508080010 +10DC3CEC32D43CEC32C431400C0B0E0DA90810030605A900100010D4FCCC3210D4FCCC32 +30132111231121112311211123112111233603B38FFD6B8F03B38FFD6B8F0255FE580105 +FEFB0472FE580105FEFB00010000FE4A0490061400190033400C1B001608174E0F080546 +0A1A10D4FCECF4EC32CC3100400F128700028C1A09870B9716BC18BD1A10ECECF4EC10F4 +CCEC302506232226351134262B0135333216151110333236351133112303D783E7C1C64C +693146B5A3F895ACB9B9ACC9EFE802C499619CC0D6FD42FEC3BEA40279F9EC0000000001 +0000FE56057606140021003A400D1D23001508174E0F0805460A2210D4FCECF4EC32CCCC +31004012128700028C220A870B97221C871EBD16BC2210ECFCEC10F4EC10F4CCEC302506 +232226351134262B01353332161511103332363511331106163B01152322262703D783E7 +C1C64C693146B5A3F895ACB90450683246B69E05ACC9EFE802C499619CC0D6FD42FEC3BE +A40279FB8E94669CB9DD00010075029C02C406030013003040071500030E0A0B1410D4DC +3C2FCCCC4BB00D5158B11540385931B27F15015D00400606110C020B1410D43CC4D4CC30 +0111231134262322061511231133113E0133321602C4744E4E5E6C757529714A797D0417 +FE85017759596B5CFE9E0367FEAB3838860000010075029C02C40603001B003A4BB00E53 +5840081D000310160A0B1C10D4DC3CCC2FCCCC4BB00D5158B11D40385931B27F1D015D00 +40070619110F020B1C10D43CD4CCD4CC30590111231134262322061511231134363B0115 +2322061D013E0133321602C4744E4E5E6C756772A092423029714A797D0417FE85017759 +596B5CFE9E0284786B5736567238388600000002FFE901AD00EE0603000D001100234007 +130F01080E001210DC3CCCDC3CCC310040070E11000807001210D4D4CC10DCCC30133311 +1407062B01353332373635113315237A743433722C1F4218187474050FFD82783636581B +1B560372820000010075029C0212051E0011001F4005110B07081210DCCC00CC31004007 +001107030E09082FC4D4CC10D4CC30012E012322061511231133153E0133321617021213 +2E1C626975752475540C1D1204AF0A09716BFEB60273613937020300000000010048028D +01E4050F0011001BB408060B111210DCDC3CCC3100B50011030E07092FCCD4CCD4CC3013 +1E013332363511331123350E012322262748132E1C626974742475540C1D1202FC0A0971 +6B014AFD8D61393702030001004801AD0275050F001B0027B61D0E090615001C10DCDC3C +DCDC3100400A0D0F14001B03180809142F3CCCD4CCD4CC10DCCC30131E01333236351133 +111514163B01152322263D020E012322262748132E1C62697430421F2C72672475540C1D +1202FC0A09716B014AFD8D0B5636586C780B613937020300000000020020029C028F050F +001600210000011E01151407062B01113311333237363F01330706070601333237363534 +27262B01019B4346434489F4746B3D252528667B6E212122FED77D4B272929274B7D03E9 +0F4E3B5B2D2D0273FEF715143FA1AB351E1EFF0017182F2E181900010036029C03E9050F +000C000013331B01331B013303230B01233674919089919074B988989988050FFE1701E9 +FE1701E9FD8D0202FDFE0001002601AD02D5050F00110000010607062B0135333237363F +0101331B0133019F312F2E4E5D44301A1B2015FEE27BDDDC7B02627022235714144B2F02 +69FE1601EA00FFFF00A00474019F0666100603120000FFFF00A004740313066610260312 +00001007031201740000FFFF00AE03E901D305D510060AFA0000FFFF00B203FE01D705D5 +10060AFB0000000100C404EE01E906DA00050017400A039E000603020019050610DCFCD4 +CC310010D4EC3001151323033501975281A406DAACFEC00140AC0001007503EF01870614 +000E0031B40007040C0F10DCB43F0C4F0C025DCCDCB6000710072007035D3C3100B60104 +000708970F10F4CCDCB20000015D39CC3013353236353426233532171614070675405858 +4073504F4F5003EF7B58403F587B504FE650500000000001007503EF01870614000E0031 +B400080B040F10D4CCDC400D0004000B1004100B2004200B065D3C3100B60E0B00080797 +0F10F4CCD4B20000015D39CC30012227263437363315220615141633018773504F4F5073 +4058584003EF5050E64F507B583F4058000000010075029C02890602001C002B40090105 +0005161A0E001D10D4C4DCDCCC111239310040091A00120D0E09121C1D10D4D4CCD4CC10 +DCCC30013332373635262726232207060735363736333217161514070607112301142779 +372401233F713232313130333335AE574444466B80045B402A374B24400C0C186014090A +5846685F404311FE930000010075029C02890602001C002D400A1C00180F00180700031D +10DCCCDCCC10C41112393100400903000B100F140B021D10D4D4CCD4CC10DCCC30011123 +112627263534373633321716171526272623220706071417163301EA7F6B47444557AD35 +33333031323132713E2401253679045BFE41016D1143405F6846580A091460180C0C4024 +4B372A4000000001010B043202F506B0000600000125150D011525010B01EAFE990167FE +1605BBF58BB4B48BF5000001010B043202F506B0000600000105352D01350502F5FE1601 +67FE9901EA0527F58BB4B48BF500000100C1047C033F06660006003DB4040275060710DC +EC393100B504050200B30710F4CC32B410021005025D3930004BB009544BB00E545B58BD +0007FFC000010007000700403811373859013313230B012301B694F58BB4B48B0666FE16 +0167FE990000000100C1047C033F06660006004CB4030575010710DCEC393100B5030004 +01B30710F43CD4B21000015D3930004BB009544BB00E545B58BD0007FFC0000100070007 +00403811373859400C35003A0635023A04043303015D015D0103331B01330301B6F58BB4 +B48BF5047C01EAFE990167FE1600000100C104EE033F066600060037400C040502B400B3 +07040275060710DCEC39310010F4EC323930004BB009544BB00E545B58BD0007FFC00001 +00070007004038113738590133132327072301B694F58BB4B48B0666FE88F5F500000001 +00C104EE033F066600060037400C0300B40401B307030575010710DCEC39310010F43CEC +3930004BB009544BB00E545B58BD0007FFC0000100070007004038113738590103331737 +330301B6F58BB4B48BF504EE0178F5F5FE88000100D603E7015E06120003001340040500 +030410DCDCCC3100400203022FC43001112311015E880612FDD5022B0000FFFF00D50562 +032B05F61006007100000001017304EE035206660003000001330123028BC7FEBA990666 +FE88000100AA04F0028906660003000009012301016F011A99FEBA0666FE8A0176000001 +00D6FED1015E00FC0003001340040500030410DCDCCC3100400203022FC4302511231101 +5E88FCFDD5022B000000FFFF00D5FEC0032BFF54100700710000F95E0000000100AAFE1C +0289FF920003000005012301016F011A99FEBA6EFE8A0176000000010173FE1C0352FF94 +0003000005330123028BC7FEBA996CFE88000002006F000001D40423000200050045400B +000103050300040205010610D43CC44BB0105058B30740024038385932393931002FC4D4 +C43040090F03000060006F03045D01400D500760076004600264036400065D0103210313 +210121B20165B3B3FE9B02D9014AFD27FEB60001006F02D901D4042300020034B6000103 +0002010310D4C44BB0105058B30440024038385939310010D4C430400500006000025D01 +40095004600460026400045D0103210121B2016502D9014A0000FFFF007501FE01870423 +100702800000FE0F0000FFFF007501FE01870423100702810000FE0F00000001011F01D4 +02E1039600070000011521353311331102E1FE3E9696026A9696012CFED40001011F01D4 +02E10396000700000135211523112311011F01C2969603009696FED4012C0001006400FF +02BA0355000B0000013533153315231523352335014496E0E096E00275E0E096E0E09600 +00000001006401DF0226027500030000012135210226FE3E01C201DF9600000100C70529 +03390648000D0057400E0BF0040700B30E0756080156000E10DCECD4EC310010F43CD4EC +30004BB0095458BD000EFFC00001000E000E00403811373859004BB00F544BB010545B4B +B011545B58BD000E00400001000E000EFFC0381137385913331E0133323637330E012322 +26C7760B615756600D760A9E91919E06484B4B4A4C8F909000000001019A054402660610 +0003004E400902CE00CD040164000410D4EC310010FCEC30004BB00A544BB00D545B58BD +00040040000100040004FFC0381137385901B00D4B54B00E4B545B58BD00040040000100 +040004FFC0381137385901331523019ACCCC0610CC00000200EE04E103120706000B0017 +0020401103C115F209C10FF11800560C780656121810D4ECF4EC310010F4ECF4EC300134 +26232206151416333236371406232226353436333216029858404157574140587A9F7373 +9F9F73739F05F43F5857404157584073A0A073739F9F0001014CFE7502C1000000130020 +400F0B0E0A07F30EF40001000A0427111410D4ECC4D4CC31002FFCFCC412393021330E01 +15141633323637150E0123222635343601B8772D2B3736203E1F26441E7A73353D581F2E +2E0F0F850A0A575D3069000100B6051D034A0637001B006340240012070E0B040112070F +0B0412C3190704C3150BED1C0F010E000715561677075608761C10F4ECFCEC1139393939 +310010FC3CFCD43CEC11123911123911123911123930004BB009544BB00C545B58BD001C +FFC00001001C001C0040381137385901272E0123220607233E013332161F011E01333236 +37330E0123222601FC3916210D2624027D02665B2640253916210D2624027D02665B2640 +055A371413495287931C21371413495287931C000000000200F004EE03AE066600030007 +004240110602B40400B3080407030005010305070810D4DCD4CC1139111239310010F43C +EC3230004BB009544BB00E545B58BD0008FFC00001000800080040381137385901330323 +0333032302FCB2F88781AADF890666FE880178FE88000001FFFF01DE02AD0408000F0000 +032533151417163B0115232227263505010116B82626692B40AF5752FEEB0364A4949931 +309C605AC8A2000100EF04EE03100666000B0000012707233727331737330717025C5C5D +B4B5B5B45D5CB4B6B604EE6161BBBD6060BDBB0000000002007501AB02FD050F000D0015 +0000011615142320353437033317373301061514333235340205B2F2FEF5B5FA89BFB789 +FEBC89888103DCF9B48484BFF2012FE0E0FE8AAE984D4D8900000001007A029C00EE0603 +0003000DB102032FCC3100B100032FC430133311237A74740603FC99000000010075029C +0290052F00320000011526272623220706151417161F0116171615140706232227262735 +161716333236353427262F012627263534373633321716026A31353439572B2B1F1F5D28 +7D32344E4D88393E3D44403F3E3D5258201C6F286C3030474682403939050D61160B0B17 +182F2414151208182A2B4D5733330A0A136B1E0F0F322D2A1714170815292A4958303109 +080000010075029C0321050F000B00000103012327072301033317370314FF010C89CDCD +890112FB89BBBB050FFECFFEBEF6F60148012BDFDF00FFFF0075029C0289060210060283 +0000000100D60000031D055800050015400901A90300000804020610C4D4EC31002FD4EC +302111213521110295FE41024704D088FAA8000100D60000031D05580007002740183F04 +3F012F042F011F041F010601A904050000040806020810C4D4EC3231002FD4DCEC5D3021 +112135211133110295FE4101BF88039C880134FAA800000100D60000031D055800070019 +400B01A904050000040806020810C4D4EC3231002FD4DCEC3021112135211133110295FE +4101BF880268880268FAA8000000000100D60000031D0558000700274018700470013004 +3001100410010604A901050000040806020810C4D4EC3231002FD4DCEC5D302111213521 +1133110295FE4101BF88013488039CFAA800000100D60000031D05580005001540090100 +A904000802040610C4D4EC31002FECC430251133112135029588FDB98804D0FAA888FFFF +00C1FDEC033FFFD6100702870000F9700000FFFF00D504E2032B06761227007100000080 +120600710080FFFF00AE03E9036D05D512060AFF0000FFFF00EEFE14031200391007029C +0000F9330000000100B6FE76034AFF900021005F400E12011100091A561B7709560A7622 +10F4ECFCEC113939393931004015001609110E05011609120E0516C31F0905C31A0E2210 +D43CFCD43CEC11123911123911123911123930004BB0095458BD001CFFC00001001C001C +0040381137385901272627262322070607233637363332161F0116171633323736373306 +070623222601FC391611100D261212027D0233335B264025391611100D261212027D0233 +335B2640FEB337140A0925245287494A1C2137140A0925245287494A1C000002FCA8047B +FE870666000300040036400C01B400B304B805040344010510DCEC39310010E4F4EC3000 +4BB009544BB00E545B58BD0004FFC0000100040004004038113738590901230901FD6D01 +1A99FEBA01580666FE8A0176FE150002FD71047BFF500666000300040036400C02B400B3 +04B805040344010510D4EC39310010E4F4EC30004BB009544BB00E545B58BD0004FFC000 +0100040004004038113738590133012317FE89C7FEBA998F0666FE8873000002FCC1047B +FF3F066600060007003C400F040502B400B307B80807040275060810DCEC3939310010E4 +F4EC323930004BB009544BB00E545B58BD0007FFC0000100070007004038113738590133 +132327072305FDB694F58BB4B48B013F0666FE88F5F573000000FFFFFCB4051DFF480637 +1007029EFBFE00000000FFFFFCD90562FF2F05F610070071FC0400000000FFFFFBEC057C +0014060B10070B20FC0000000000FFFFFCBF0529FF3106481007029AFBF8000000000002 +FDA2047BFE5A0614000300040025400C02BE00B104B805040108000510D4EC39310010E4 +FCEC3000014007040434044404035D0133152317FDA2B8B85E0614E9B0000003FCD7047B +FF290610000300070008004940110602CE0400CD08B809016408000564040910DCFCD439 +EC310010E4FC3CEC32300140230408340844086001600260036000600160026005600660 +0870017002700570067008115D013315232533152305FE5ECBCBFE79CBCB01290610CACA +CACB0001FD3704F2FEF7067B00190022400914564005800C56190D2FCCEC1ADC1AEC3100 +400617C14002C00D2F1ADC1AEC30013633321615140F0106070615233534363F01363534 +26232207FD377069687F582C230407771E332D2E3E475A6406483355433D41201A091020 +0C283625222228152434FFFFFCEC04E1FF1007061007029CFBFE00000000FFFFFCF404EE +FFB206661007029FFC04000000000002FCC5047BFF43066600060007003C400F0300B404 +01B307B80807030575010810DCEC3939310010E4F43CEC3930004BB009544BB00E545B58 +BD0007FFC0000100070007004038113738590103331737330307FDBAF58BB4B48BF54E04 +EE0178F5F5FE887300000001FDBC04ECFE4406A80003000EB2021B002FEC3100B103012F +CC3001112311FE448806A8FE4401BC000000FFFFFCF004ECFF1006A8102702BEFF340000 +100702BE00CC000000000002FC5D04EEFF1B066600030007004240110602B40400B30804 +05010007030107050810D4DCD4CC1139111239310010F43CEC3230004BB009544BB00E54 +5B58BD0008FFC0000100080008004038113738590113230321132303FD0FCD87F80200BE +89DF0666FE880178FE8801780000FFFFFCBF0529FF310756102702B8000001421007029A +FBF8000000000001FCBF0529FF310648000C0018B50756080156002FECD4EC3100B40AF0 +0400072F3CDCEC3003232E0123220607233E012016CF760B615756600D760A9E01229E05 +294B4B4A4C8F909000000001FE1F03E9FF4405280003000A40030201040010D4CC300123 +1333FEF2D3A48103E9013F0000000001FD9004C2FE8206C1000800000110233516352335 +33FE82F27070F205C3FEFF7B0389FE0000000001FD9004C2FE8206C10008000001353315 +2314371522FD90F16F70F205C3FEFE89037B0001FF79049A008706120003000003330323 +40C775990612FE880000FFFFFCA8FDDFFE87FF5510070043FBFEF8EF0000FFFFFD71FDDD +FF50FF5510070076FBFEF8EF00000001FD24FE14FE3CFFCE000700000123353335331123 +FDC4A0A07878FEB578A1FE4600000001FDC4FE14FEDCFFCE000700000533153315231523 +FDC478A0A07832A178A10001FE550586003F07700005000003213521112349FE9E01EA88 +06E888FE16000001FEF0036B007B04E000130031400607560E0411002F4BB00C544BB00D +545B4BB00E545B58B9000000403859DC32DCEC310040050A04C100112FC4FCCC3001351E +0133323635342627331E01151406232226FEF03D581F2E2E0F0F850A0A575D306903D777 +2D2B3736203E1F26441E7A7335000001FD80FE12FE56FFBE000D001C40060D060A56030E +10D4FCCC323100400606C1070DC1002FFCDCEC300122263534363315220615141633FE56 +5A7C7C5A28353528FE127D5A597C78352728350000000001FD0BFE14FEF5FF4D00070000 +0133152135333533FE44B1FE16B188FE9C8888B100000001FD0BFE14FEF5FF4D00070000 +0123352115231523FDBCB101EAB188FEC58888B100000001FD24FE14FEDCFFCE000B0000 +012335333533153315231523FDC4A0A078A0A078FEB578A1A178A10000000001FD0BFE88 +FEF5FF100003000001352115FD0B01EAFE88888800000001FD7AFE56FFD00080000D0000 +27151407062B0135333237363D01305251B5FEE96926268094D660609C30319994000001 +FD77FE56FFCD0080000D00002533151417163B01152322272635FD77B8262669E9FEB551 +5280949931309C6060D60001FDA2FE89FE5AFF730003000005331523FDA2B8B88DEAFFFF +FCD5FE89FF27FF531007006AFBFEF94300000002FD28FE12FED4FFBE000B0017001E4008 +00560C780656121810D4ECF4EC3100400615C10309C10F2FFCDCEC300134262322061514 +16333236371406232226353436333216FE5B3627283535282736797C5A5A7C7C5A5A7CFE +EA26363527283536265A7D7D5A597C7C00000001FD6AFE14FE8FFF540003000A40030300 +040010D4CC3005330323FDBCD3A481ACFEC0FFFFFD23FE75FEC100001007007AFC000000 +0000FFFFFD4CFE75FEC100001007029DFC00000000000001FDBCFE14FE44FFA00003000E +B2021B002FEC3100B101032FCC3005112311FE448860FE74018C0001FCF0FE50FF17FF9A +000700000711233521152311E989FEEB8966FEB6C2C2014A00000001FC63FE39FF98FF58 +00140000010623220334353316333237331617323733020722FDFE3C74DA11750E68650F +760C69660F760FDC74FE8B52011A02039696950196FEE2010000FFFFFCC5FE14FF43FF8C +11070289FC04F9260027004BB009544BB00E544BB00B544BB00C545B5B5B58BD00070040 +000100070007FFC0381137385900FFFFFCBFFE14FF3DFF8C11070288FBFEF9260027004B +B009544BB00E544BB00B544BB00C545B5B5B58BD00070040000100070007FFC038113738 +5900FFFFFCBFFE39FF31FF581007029AFBF8F91000000001FCBFFE36FF31FF55000C0000 +03232E0123220607233E012016CF760B615756600D760A9E01229EFE364B4B4A4C8F9090 +0000FFFFFCB4FE39FF48FF531007029EFBFEF91C0000FFFFFCD9FEC0FF2FFF541007028F +FC0400000000FFFFFBECFE1D0014FEAC10070042FC0000000000FFFFFBECFE1D0014FFEE +10070AF9FC00000000000001FB8C01ECFFAD030C001B000003150E0123222726272E0123 +220607353E0133321617161716333236534B8F4F5A71160B4D67334F8D494E925335644A +0C15745D4689030CAE3B37330A0421183B3FAE3C36161F050A373D0000000001FD7801C4 +FF880268000300000315213578FDF00268A4A40000000001FAED01C4FFFF026800030000 +01352115FAED051201C4A4A400000001FB68FFA2FFBC04BC0003000005270117FBC86003 +F55F5E4E04CC4F0000000001FA12FFBAFF9106170003000005270117FA79670519664658 +0605590000000001FDACFE12FE82FFBE000D001C40060D060A56030E10D4FCCC32310040 +0600C10D07C1062FFCDCEC300532161514062335323635342623FDAC5A7C7C5A28353528 +427D5A597C78352728350001FCF1FE5BFF18FFA5000700000111331521353311FCF18901 +1589FE5B014AC2C2FEB60002FD21FE14FEE3FFD60003000700000511211101352315FEE3 +FE3E014AD22AFE3E01C2FEB6D2D20001FC63FE39FF98FF58001400000536333213141523 +26232207232627220723123732FDFE3B74DA11760D676610760B69660F760FDC74FA52FE +E602039696950196011E010000000001FD2B04F3FEE506AD000B00000107273727371737 +17071707FE087D607D7D607D7D607D7D6005707D607D7D607D7D607D7D600001FE0604C2 +FF2006D2001D0000012E0135343637150E01151417161F011E0115140607353E01353427 +2627FE43211C93875249090C1237211C93875249090C1205C71C301C5051026E021B1C0A +0C0F0E2B1C301C5051026E021B1C0A0C0F0EFFFFFBEC043A0014060B10270B20FC000000 +10070B20FC00FEBE0000FFFFFCA804F0FE87066610070043FBFE00000000FFFFFD7104EE +FF50066610070076FBFE00000000FFFFFCB4051DFF4806371007029EFBFE00000000FFFF +FD9004C2FE8206C1100602C40000FFFFFCE70546FF6207D21007031CFC1000000000FFFF +FDC6FE56FEA2FFA410070316FC10000000000001FCD5051DFF2B06490007000003233521 +15231121D596FED6960256051D9696012C000002FD1FFE32FEE1FFB80003000700000121 +352135213521FEE1FE3E01C2FE3E01C2FE32789678000002FD15FE14FEEBFFA000030007 +00000533112301331123FD1596960140969660FE74018CFE74000001FD1FFE14FEE1FFD6 +00050000052111231121FD1F01C296FED42AFE3E012C0001FCB604EEFF4A066600270000 +013733071617163332373637330607062322272627072337262726232207060723363736 +33321716FDFF426D6B0B16100D261212027D0233335B26201E21426E6B0D14100D261212 +027D0233335B26201E05FF67A9090E0A242552874A490E0D1D67A80B0D0A242552874A49 +0E0D0003FCB60489FF4A06CC001D00210025000001272E012322061D012334363332161F +011E013332363D01330E012322260733152313331523FDFC39191F0C24287D6756243D30 +3917220F20287D026754223BE89696D296960568210E0B322D066576101B1E0D0C332906 +6477102E960243960000FFFFFCB604C5FF4A06901022171800B710031718000000A70001 +FC63FE28FF9DFFC2000D00000137211723273733072127331707FE7084FE19847FAFAF7F +8401E7847EAFAFFE289B9BCDCD9B9BCDCD000001FD33FE14FECDFFA40008000001233507 +3537171527FE32649BCDCD9BFE14E7847EAFAF7E84000001FD7804E1FE88070600100000 +0106070615141716171526272634373637FE88402A2C2C2A40724E50504E72068B012A2C +40412B2B017B014F50E6504E0100FFFFFCBF0460FF3106D8102702C200000090100602B8 +00E5FFFFFD2BFE14FEE5FFCE100702EE0000F92100000001FD7804E1FE88070600120000 +01303516171614070607303536373635342726FD78724E50504E72402A2C2C2A068B7B01 +4E50E6504F017B012B2B41402C2AFFFFFF2E0544FFFA06101007029BFD94000000000003 +FC90FE12FF6FFFBF00070015001D00000016323E01262206373632161406222706222634 +36321236342622061416FD09354F3502374F35F73EB57C7CB63D3EB67C7CB6FE36364F35 +35FEC335354D37356D3F7CB37D41407DB37CFECE364D36354F35FFFFFC70FE1B0390FF85 +10070B21FCC900000000FFFFFC70066B039007D510070B21FCC9085000000001FC7006D7 +0390076B0003000001211521FC700720F8E0076B94000001FC70FEC00390FF5400030000 +05211521FC700720F8E0AC9400000001FD2A060D02D60727002300000327262726232207 +060723363736333217161F011617163332373637330607062322272604901C4F2C246535 +4605A2047170C85B3F395A901C4F2C2461394704A2047170C85B3F39064A370B120A2430 +47874A490E0D22370B120A242C4B874A490E0D000000FFFFFC7006040390076E10070B22 +FCC9000000000001FC77FE280393FFC200080000013521273317072337FC770673847EAF +AF7E84FEC3649BCDCD9BFFFF00C90000047105D5100611F00000FFFF00C1000003D00460 +100611F10000000100C90000061C05D5000B0000132111231121112311211123C90553CA +FE86CBFE86CA05D5FCF40262FAD5052BFD9E000100C90000046505D5000B000013211123 +1123112311231123C9039CB8B9B9B9B905D5FCF40262FAD5052BFD9E0000000100A00474 +019F066600030011400601000402000410D4CC310010D4CC301B013303A041BE6E047401 +F2FE0E000000000100A0FE56019F004800030011400602030400020410D4CC310010D4CC +3025032313019F41BE6E48FE0E01F2000000FFFF00C90000053305D5100603AC0000FFFF +00BA000004790460100603CC0000000101B6FE560292FFA4000D000001232227263D0133 +151417163B010292941A1A14950A0C0E23FE56211A2EE5E50E0C0D000000FFFF007FFFE3 +03F5047B100602160000FFFF0071FFE303E7047B10270079014FFF84100600460000FFFF +007FFFE303F5047B10270079008EFF84100602160000FFFF009EFF1201C304231206001E +00000001017304EE0352066600030031400902B400B3040344010410D4EC310010F4EC30 +004BB009544BB00E545B58BD0004FFC00001000400040040381137385901330123028BC7 +FEBA990666FE88000000FFFF00D70546035207D21226006A00001107031B0000016C0014 +004007AF089F085F08035D40055F080F080271300000FFFF00100000056806661027031B +FEDA0000100603260000FFFF00DB024801AE0346120600790000FFFFFFE7000005750666 +1027031BFE7400001007032A00EA00000000FFFFFFF30000061F06661027031BFE800000 +1007032C00E400000000FFFFFFED0000027D06661027031BFE7A00001007032E00EA0000 +0000FFFFFFF2FFE3060106661027031BFE7F0000100603342800FFFFFFE1000006910666 +1027031BFE6E00001007033901AA00000000FFFFFFDB0000060506661027031BFE680000 +1006033D3600FFFF00050000028007D21027031CFF2E00001206034D0F00FFFF00100000 +056805D5120600240000FFFF00C9000004EC05D5120600250000000100C90000046A05D5 +00050019400C04950181000702041C01040610FCFCCCC431002FF4EC30331121152111C9 +03A1FD2905D5AAFAD500000200100000056805D500020006003D400C4200950481019503 +0806030710D4C4C431002FECF4EC304B5358401200110504030211060605001104011103 +0304050710EC10EC0710EC0810EC590901210501330102BCFE660335FBB9023AE5023905 +0EFB9AA805D5FA2B0000FFFF00C90000048B05D5120600280000FFFF005C0000051F05D5 +1206003D0000FFFF00C90000053B05D51206002B000000030073FFE305D905F000030012 +00210032401C0495139122039500AD220B951A8C222310010F1916330008191E102210FC +ECC4F4ECC4EC310010F4EC10F4EC10F4EC30012115210122070611100033323736111027 +2627200011100706212027261110373601C502C2FD3E0162DC81820103DCDC81808081DC +013A0178BCBCFEC6FEC5BCBDBDBC0370AA0286A4A4FEE5FEE6FEB8A4A4011A011BA4A4A4 +FE5BFE9EFE9FD2D3D2D201620162D3D20000FFFF00C90000019305D51206002C0000FFFF +00C90000056A05D51206002E0000000100100000056805D50006003C400B420695028105 +010804010710D4C4C431002F3CF4EC304B53584012061103020105110404030611020011 +010102050710EC10EC0710EC0810EC5933230133012301E5D5023AE50239D2FE2605D5FA +2B050E000000FFFF00C90000061F05D5120600300000FFFF00C90000053305D512060031 +0000000300C90000046205D500030007000B002A4016079504810B039500AD08950B0D04 +010905000804040C10FC3CC4D43CC4EC31002FECF4EC10F4EC3001211521032115211121 +1521013202C7FD39690399FC670399FC670371AA030EAAFB7FAAFFFF0073FFE305D905F0 +120600320000FFFF00C90000053B05D5120603B30000FFFF00C90000048D05D512060033 +0000000100C90000048B05D5000B00464011420A06950781000495030D01080407040C10 +FC3CD43CCC31002FEC32F4EC32304B535840120B110505040A110606050B110500110405 +04050710EC10EC0710EC0810EC5925211521350901352115210101B102DAFC3E01DFFE21 +03B0FD3801DFAAAAAA02700211AAAAFDF300FFFFFFFA000004E905D5120600370000FFFF +FFFC000004E705D51206003C000000030073000005D905D5000800110027003C4010290D +1921121A001C251D11041916102810FCECD43C3CFC3C3CD4ECC43100400E1100951D1A1B +81270908952512272FD43CFC3C10F4D43CFC3C3001060706151417161733363736353427 +26270326272611103736373533151617161110070607152302C2966282826296CA966280 +806296CAF49EBDBD9DF5CAF49DBCBC9DF4CA048E155773C6C5735715155773C5C6735715 +FC101686A0010F010FA187169F9F1786A1FEF1FEF2A186179D00FFFF003D0000053B05D5 +1206003B000000010073000005DB05D5001D002E4017100D951B02150E0781001F151C16 +020E1C1B0F081C071E10DCECD43CFC3CD4ECCC31002FE43232DC3CEC3230213627222726 +03113311101716171133113637361901331102070623061702C20101D6BCB805D5826E8A +CA8A6E82D505B8BCD6010186B0D2CC01680199FE67FEE6A48C0E03F1FC0F0E8CA4011A01 +99FE67FE98CCD248EE000001004E000005CF05E700260033401B0B951E91260312159502 +1403071928100022331A120E19151A102710FCC4FCC410F4C4ECFCC431002F3CEC323232 +F4EC30251521353637363534272623220015141716171521352126272635103736212017 +16111407060705CFFDA8B163638484D8D8FEF76364B2FDA8013F9E4948C0BF0131012FC1 +C04747A1B2B2B261A6A6CAF09191FEDDEFCAA6A661B2B28B9595B8013EC5C5C5C4FECBC2 +94948D000000FFFF000600000258074E10271716032F01751306032E00000008B4090306 +08072B310000FFFFFFFC000004E7074E10271716047101751306033900000008B40C0207 +08072B310000FFFF0071FFE704E406661226034500001006031B6E000000FFFF0085FFE3 +03C806661026031B50001206034900000000FFFF00BAFE56046406661027031B00C60000 +1206034B0000FFFF00A60000029806661226034D00001007031BFF460000FFFF0095FFE3 +042A07D21226035900001006031C1B00000000020071FFE704E40479000D002A00C8400B +1211072C1017071225452B10FCECD4C4C4123939400A3F102F101F10038F10015D710040 +1112110B03B929B8190BB9218C0FBC1687192FECE4F4EC10F4EC1139390540141D110011 +0E11121111100F110E1100111D11111007103CECECEC0807103CECEC313001400B841286 +118801890D8010055D401349134912491C4A1D4E0D4C004E01490E4B11095D40113A0E39 +123A11381D38113F0D3C003E01085D400B2B0D2B012A00290E2911055D400D190F180E1B +0D1B011A001911065D0040052B1E2B1F025D01272623220706151417163332371B013303 +171617163B0115232227262706070623222726111037363320034E2C2DB2863D4D4B4C79 +8648A463A4CD2809232920586E5E5429112E5E2C8FEB72757F8DC601370209E7ED6E8AB6 +DC696BD501E70125FDA1DB3129309C542A586F5729989D011301268A9A00000200C0FE56 +04880621000E001C0037400F1812071E4513120B16001C0803461D10FCEC32C4D4ECE4D4 +EC3100400E1AB9050915B91611B90D8C02BD1D10ECF4ECD4FC39D4EC3025112311102120 +111007041110212203163320111005352011342320110179B901AA01B2AC0118FE1ED459 +6FC50120FE30016BEAFEFB45FE11060301C8FE7FFEEE645AFEF5FE26014AAD013A011A16 +AA0140DBFEC800010020FE56047F0460000E0040400710030708040C0F10D4D4FCD4C431 +004007020CBF06BD04072F3CECE432300540120111080702110304030E0D011100110708 +070710ECEC39390710EC08EC011301330111231101262B013533320169F5015EC3FE3BB8 +FEDA2C5F3146C503B0FD4C0364FBA0FE5601AA03447E9E00000000020071FFE3047505F0 +001C002D00544014060528042F451C28120A5112041218211212452E10FCECD4EC10F4B2 +7F0A015DECC4EC1112393900400E060525021C0002B91A25B90E8C2E10F4ECD4FCD4CC11 +1239394006161D53050605070E10EC393130012623221514051617161110070623222726 +1134373637263510213217010607061514171633323635342726272603EC66EFFD0108D0 +758E8989F0EF8A8989354B9C01B9DD78FE1844375655569593AC5B617E40051146755C30 +257087FEEBFEF79C9D9D9C0113CCA540244F8D011046FE281D4971CCCB7273E8BEC76067 +0B0600010085FFE303C8047C0032003D40220C860B8810B908B8331BA918332786288823 +B92C8C3334190B271408041F0830453310FCECD4ECD4C4C4C4310010F4ECF4EC10D4EC10 +F4ECF4EC300126272635343736333216171526272623220706151417163B011523220706 +1514171633323736371506070623222726353436018B703C3C7271C44CAA626150514777 +45464443749B9489484E5455975D5555475A545550EE81818A025C1841405D8D4F4E1818 +A71D0D0D2E2E40462D2C983338585A3838121325AB1C0E0E5B5BAD6C92000001006BFE52 +03F80614001D003E400B0A0E121F0419181C12141E10D4ECD4D4D4C4FCCC4BB0105158B9 +0016004038593100400E08B90A00B9128C1E1A178718971E10F4EC3210F4ECDCEC302516 +1716151407062334351637363534272623200310012135211500111002CA844F544A50A3 +452A20201F3AFDA201023BFDEC0366FD2C7F014B4F787350574B4C052C2325352C2A0233 +01EC0159B9B9FE94FE27FE690000000100BAFE560464047B00150031401606870E12B80C +BC02BD0B17460308004E090D080C461610FCEC32F4ECEC31002FECE4F4C4EC304005A017 +801702015D011123113426232206151123113315363736333217160464B87C7C95ACB9B9 +42595A75C1636302A4FBB204489F9EBEA4FD870460AE653232777800000000030071FFE9 +04750624000800110021004F401B0DB91297220195112205B91A8C222345000912165101 +11121E452210FCEC32F4B27F16015DEC32EC310010F4EC10D440073F111F110F11035DEC +10F4EC30400B190616047704A023802305015D0121121716333237361302272623220706 +030132171611100706232227261110373603B1FD830F455695965349091C365693995140 +13013DF089898989F0F18889898802C6FED57F9C9D8A01C9011C649E9C7EFEFC02B4D4D3 +FE8AFE8BD4D5D5D401750176D3D4000100A60000026E0460000D001B40070F0600080D46 +0E10FCFCD4C4310040050DBC0587082FECE43001111417163B0115232227263503016322 +246C596FB45252010460FD2B912E309C6062D402CA00000100BF000004850460000B0049 +40090D06040901080B460C10FCEC32C4D4C4310040050300BC070B2F3CE4323040160811 +0904050711060605080509040311040211090904071004EC1005EC093C3C071005EC1008 +EC133311013309012301071123BFBE01E3E0FE4701FEE1FE6289BE0460FE2F01D1FE5AFD +46024281FE3F0001003D0000047F0614000D004640050F010B050E10D4C4D4C431004006 +0A870B9702052F3CF4EC3040180311010006041105060507110611031101000002110001 +00071005EC1009ECEC05EC071005EC1008EC0901230901230127262B01351716027A0205 +C3FEC6FE7EC301EB4A2F6B6075E20565FA9B033CFCC40432C67E9E020300FFFF00AEFE56 +04E504601006007700000001004A0000041804600015004240071707121100011610D4C4 +D4ECC43140040B01BC00002FE43230401614131203111511060504030703110100000211 +010100071005EC1009EC12173905EC121739210133013637363736272627333116171615 +1407060701A0FEAAC6012178644C0402181C6ABA452E2A88B17B0460FC547CAC81703564 +7783597C724EC4AFE4740001006BFE520401061400260040400F0A0E122804221D1C2012 +182512142710D4ECD4ECD4D4C4D4C4FCCC31401208B90A00B9128C27162387221E1B871C +97270010F4FC3CD4EC3910F4ECDCEC302516171615140706233435163736353427262320 +1110252411343723352115201114051524131202DA844F544A50A3452A20201F3AFD9101 +4DFEE8DCD00315FD8B0210FDC602017F014B4F787350574B4C052C2325352C2A01B5012C +58240104C552B9B9FEDDBF09AA16FEBCFEF1FFFF0071FFE30475047B1206005200000001 +004AFFD9049804600017002F400B190A01120803130800161810DCC4ECD4ECC4C4CC3140 +0C07870E8C150313178700BC15002FF4EC323210F4EC301321152311141633323637150E +01232226351121112311234A04318D31370F2C07234A25785CFE63BC8F0460B8FD50483F +0501850D0C83B0029CFC5803A800000200BAFE5604A4047B0011001D0031401915B904B8 +1E1BB90A8C0FBD1E1F45121207510D08181210461E10FCECECF4B27F07015DECEC310010 +ECF4EC10F4EC300136373633320011100223222627112311340534262322061514163332 +3601143D973BB6CC00FFFFCC7BB13AB9032BA79292A7A79292A70398665A23FEBCFEF8FE +F8FEBC6164FDAE03CFE7DDCBE7E7CBCBE7E700010071FE5203E7047B00240036400C1D21 +1217260948101203452510FCECF4CCD4FCC43140111BB91D13B9008C2509860A880DB906 +B8250010F4FCF4EC10F4ECDCEC3005200011100021321617152E01232206151416333217 +16151407062334351637363534272602A8FEF3FED6012D010655A24C4E9D50B3C6C6AF83 +50544A50A3452A20201F1D013E010E0112013A2323AC2B2BE3CDCDE34C4F787350574B4C +052C2325352C2A00000000020071FFE304D60460000D001E0031400B200F0A1213510412 +1B451F10FCECF4B27F13015DECD4C431400C07B9178C1F118700B90EBC1F0010F4ECEC10 +F4EC30012207061514163332363534272627211523161510070623222726111037360273 +985256AB9593AC564F9A0263CE6D8989F0F18889897103CE6E73BEC9E7E8C8B77A6E92B8 +9CDDFEED9C9D9D9C011301159B81000100640000046D0460001100234008130D030F080C +0A1210D4C4FCC4C4C4310040080F0B870CBC02B9052FECF4EC323025163B011523222726 +35112135211521111402E6246C596FB45252FE5C0409FE57CC309C6062D40212B8B8FDE3 +910000010095FFE3042A0460001C002B400A1E4509121300081C461D10FCECD4ECE44007 +3F1E3F093F13035D310040060D1CBC05B9172FECF43C3001111417163332373637362726 +27333116171615140706272227263503015232376B96693B0F081E1C6ABA462D2A809CFE +B36562010460FD2B874045D076BB668077835A7B739AFDBBE4017876C502CA0000000002 +0070FE5604D10468000A0029003D40102B4507120F1302081E162823121A452A10FCECD4 +3CCCFC3CD4ECEC31004010001FB90B1EB82A03278713168C15BD2A10ECF43CEC3210F43C +EC3230012215113237363534272627321716111007062311231122272611103736371506 +070615141716331110033D415F5F555646368C7F898981CBB7C786888866A6423A56564D +7003CB91FD52685DDFD0705B9D848DFED9FEF1A198FE6E0191999C0113011E926D1CA317 +4E73BECA736702AF012E0001003BFE5504640461001700AE400C0410010D04090F140F03 +091810D43CD43C11121739B1190F10C43140130410010D04150F08A90F09BC1814A91502 +BD180010FC3CEC10FC3CEC1112173930B0254B535840120011110C1105030E00050E110F +021103030E070510EC10EC070810EC10ECB40D0C110E030FB40405000E030FB4100C1102 +0F0FB4010F0200050FB406070505040705111239B417161105040705111239B40B0A0C11 +0C0705111239B4121311110C070511123959050301230103262B01351704171301330113 +163B0115272402DC95FECDD901B2B6319A3146010241940133D9FE4EB6319A3146FEFEFA +017FFDD0031801D77E9E0207A7FE810230FCE8FE297E9E02070000010070FE5604D10460 +001B0036400D1D130814190D08000C0608051C10DCECD43CFC3CD4ECCC3100400E130C05 +BC1C0E0B8719008C1BBD1C10ECF43CEC3210F43C3C300526272635113311141716171133 +11363736351133111407060711230245E76B83BA554A7CB7834355BA8376DCB719256177 +F30289FD7EB74C420E03D5FC2C0E4254AF0281FD78FC6E6323FE6E00000000010087FFE3 +06270460001A003840141212131C451012150B080C07120205120402451B10FCDCEC10EC +D4FCD4ECECDCEC310040090B1204BC0E098717002F3CEC32F43CC4300520113413330215 +103332113310333211340333121510212003020226FE619BC68FDECBAACBDE8FC69BFE61 +FEF021291D0252EB0140FEC0F0FE4F021AFDE601B1F00140FEC0EBFDAE012BFED500FFFF +00050000027D06101226034D0F001007006AFF2E0000FFFF0095FFE3042A06101026006A +1D001206035900000000FFFF0071FFE3047506661026031B7D001206035300000000FFFF +0095FFE3042A06661026031B22001206035900000000FFFF0087FFE3062706661226035D +00001007031B01590000000100C9FE56056A05D5000C0000133311012109022309011123 +C9CA029E0104FD1B031AFE92860110FD0DCA05D5FD890277FD48FCE3FE56018402F5FD31 +0000000300A7FFE9044D0624000A001B00270047400E051C1A2945261C0D001E1C144628 +10FCEC32D4ECECD4B23F1A015DEC310040101C0B00B91E2822B9118C2807B917972810F4 +EC10F4EC10D4B63F1E1F1E0F1E035DEC3939300132363736353623220706011615140706 +202726023736171E0112060706231017163332373E0126016950CB447901CC7A5D3601EE +F63B7EFE0E8B6F027886D2A4DA025DFB59DF3A50AE8F571801AD0370043D6C93DEBA6CFE +C7A7E9825FD5D5A8032CBED50101E2FEE5B69614FEEA80B09C2DD19E000000020071FFE9 +04750624000A001F0037400F0B000821451507080F151A0819452010FCECCCDCEC10ECFC +3C3100400E048712972000870B1D87168C1A2010CCF4ECDCEC10F4EC3001342726232206 +1514171605202726113436333212100020001117151012201203AE3142955378794A0113 +FECC83D3D0AFDAF5FEE4FE23FEF5BCB0012FA50370F67EAA895AAA5A37AA41690136A0DE +FE64FCFCFE6501B601D201A0FEF3FEBD0142000100570000055105DF0020004940092200 +1B14041C0F072110DCCCFC39DCC4B43F00401B025DCC31004011070414050E950F1F0095 +0D9514181191052FF43CCCECECCCD4EC1112393940096F1F7F1F8F1FCF1F045D30010603 +0615112311342702272622073536321704131225363217161514070623220446A0522ACB +2A52A04D77281F6F550143486B011F265F2A5311194B85051148FEF38DA5FD76028AA58D +010D482309AA0A0D30FE72017B430920405B292F4200FFFFFFE1000006A106661027031B +FE6E000010070366015000000000FFFF005700000551074E1027171604C5017512060366 +000000030070FE5604D106140015001E002700414010291A120609011E080C1420241210 +452810FCECD43C3CFC3C3CD4ECC43140121E20870114B828161F87090C8C15970BBD2800 +10ECE4F43CFC3C10F43CFC3C300111321716111007062311231122272611103736331113 +323736373627262303112207061716171602FCC785898985C7B7C786888886C7B7714D54 +0101564D71B7714C570101554C0614FE63999CFEEDFEED9C99FE6F0191999C011301139C +99019DFA776773CAC87567FCB803486775C8CA73670000020041FFE3066D04600010001E +004540160411121004060E2045031D12061808191412010E451F10FCC4ECD4FCD4ECC4EC +111217393100400F181011038701BC1F1B1687080C8C1F10F43CEC3210F4EC3232CC3013 +35211523161510252403022120113437290106151033320333023736113441062C934DFE +61FEF12229FEF8FE614D043AFC9247DECF04AA04CFDE03A8B8B8CFA4FDAD0101012AFED5 +0252A4CFD1A7FE4F021AFDE3030301AEA70000010070FE5B04CD04670039000005262726 +343707020706232235340136353427262322073536333217041114073712373633321514 +01061514171633323702070622273516333203F9F6210A0DBD60C837223701243E0E1A8E +395B405B1A1B011D1DBD60C8372237FEDC3E0E1A8E395B26CD46A25D5F49A40A20F04981 +356CFEF77C224F9A01098A7A3A36686CE0300427FEC35B4D6C01097C224F9AFEF78A7A3A +36686CFDE0662431A03100020073FE5805D905F00011001F0044400E21101D190E0A001C +03161907102010FCECDCB6000310033003035DFC39DCB6000E100E300E035DECEC310040 +0C13950A91201A95000301BD2010ECD43CEC10F4EC300511231126272610373621201716 +1110070602200706111017162037361110270384B8FCA0BDBDBC013B013ABCBCBC9F7BFE +488182828101B881808018FE7001901AB3D202C4D3D2D2D3FE9EFE9FD2B30549A4A4FEE5 +FEE6A4A4A4A4011A011BA400000000020071FE560475047B000D001F003C401021450A12 +1C0019070E1211041215452010FCECDCB23011015DFC393939DCECEC3100400D00B919B8 +2007B90E118C0FBD2010ECF43CEC10F4EC30012207061017163332363534272603112311 +2627261110373633320011100706027394565655569593AC565639AABE6B898988F1F001 +12896A03DF7374FE6E7473E8C8C77475FC09FE6E01921B7D9C011301149C9CFEC8FEECFE +ED9C7B0000000001008BFE5204AB05D50024002E400A121612260C23041C1E2510DCECCC +D4CCFCC43100400D10951208951A8C25009522812510F4EC10F4ECDCEC30012007061110 +171633321716151407062334351637363534272623202726111037362901150346FEF360 +7B5B6DC87A59544A50A3452A20201F3AFEC08E95B98A01780165052B7798FECDFEB57F98 +544F787350574B4C052C2325352C2ACBD60165014EEDB1AA000000010071FE5204510460 +00200034400B191D122213070C1203452110FCECCCD4CCFCC4B20F07015D3100400D17B9 +190FB9008C2109B906B82110F4EC10F4ECDCEC3005220011100029011521220615141633 +32171615140706233435163736353427260267CCFED6012D010601ADFE5BB3C6C56F8350 +544A50A3452A2020201D013E010E0112011F9CC7CECDE34C4F787350574B4C052C232535 +2C2AFFFF00C90000042305D51206002900000001FF40FE560346061400270036B7091416 +131220002810DCCCFC3CCCCC310040141687130A8709130E8705972820871F24871BBD28 +10FCECD4EC10F4ECCCD4EC10EC3033113437363332171617152627262322070615112115 +211114070623222726273516171633323736EE8860A9313231332429292C783A4B0141FE +BF8B62AD3933332E313232305740520482A08E64090912A41C0E0F3E516FFEC98FFD3F92 +A5730A0B16A41F10114B5F000000000100B3FFFC04D405D5001700000103010306171637 +1522272637130113362726073532171602366E030CEA271B4283E6515F139AFD06AC271B +4283E6515F0487FE5B017EFD2C602A6C23BD4652B601DAFE910290602A6C23BD46520001 +00BF00000488061300070042400A0102060503070600040810DCCC17393100B64203A907 +0597012FE4D4EC304B5358401003110002110100010711040611050405070510EC10EC07 +0510EC10EC5909012313210133030488FEE7B8E2FD260119B8E20370FC9002C6034DFD5D +000000010072FE56066005F0002100000111231106073536212013121110032300111027 +0607061511233611343F010221220251AACD68D0018201D9EDD6F6E1010452525F40CD02 +B6BBD0FEA430053AFD8C02494B69C6CFFECEFEECFDC2FE58FE92014C01CA01D17D2F4D34 +D0FDC6210214F78F8D010400000000010077FE9004960478001600000103230126270123 +012627262335201716131211231027036EEFB901640E32FE46B9021F622EBCD3012DF2E0 +AC74A8600134FECC01C0234DFDD002B07F2184A4D8C8FE50FEDFFE89015EF60000000001 +0073FE4B070505D5003D0057401C3C0D0110080039123A3F10351C0D00112B1C2C221C19 +1E121D19103E10FCDCEC10ECD4FC39D439ECECDCEC10DC4B5358B0093C595D3100400F09 +083E2B391D813E0D263195158C3E10F4EC323910F43CCC10CC3930011007060706050607 +2736373637262726270607062322272611341336373306030615101716333237363D0133 +151417163332373611342702273316171207053D44DBB4FEEC768C618A79CDA467446427 +27646592D3797B643B5DF954874348497D724847C7464674864147438754FA5F386402E0 +FEEFCBE6A688642A17851830518017415EADAD5E5EB1B40198C9010E9F7F46FEBF9FB7FE +CD6B6D6968C6F1F1C668696D770127B79F014146829CFEEB000000010087FE5506270460 +002500534019102119161217274514120019020F08100B120609120806452610FCDCEC10 +ECD4FC39D439ECECDCEC10DC4B5358B0223C593100400F2221260F1608BC2600120D8704 +8C2610F4EC323910F43CC410CC3930212403022120113413330215021716033302373611 +34033312151607060706070607273637360488FEED1E23FEF2FE6187DA8F01DFD005AA03 +CEDE8FDA87013969C59AD26B705B518BC701010DFEED023AEB0140FEC0F0FE97010101D4 +FE2B02020168F00140FEC0EBD184F49E7B4925106C0B2B3F000000010073FE56054805F0 +001D002E400A0F1C110C00041C19451E10FCECDCDC3CEC3100400E00951D8C0E811E0895 +158C0FBD1E10ECF4EC10FCF4EC3001060706111417163332373619013311231106070623 +202726111013362502ECB460856E62C3C46263D9D9446868AAFF009CA2BA970128054A12 +84B9FEEEF9AB989899010B02ECF881029084403FD5DD014701360108D50100010071FE56 +048C047B001C002E400A0E08100B1C040818451D10FCECDCDC3CEC3100400E00871C8C0D +BC1D07A0148C0EBD1D10ECF4EC10FCF4EC30010607061514171620373635113311231106 +0706232227263534373633028B9A50725E53014C5454B8B83A585990DA85899E7FFD03FD +0E638DD0BD81747374CB0231F9F60252643031A2A8F8ECC8A200000100C9FE4B05E205D5 +00250039400E100D0C151C2745041D211C20042610FCEC32D4ECECDCC44B5358B10D0C10 +3C593100400B199500B81E0D0CBD20811E2FE4FCCC10F4EC300120171611140706070607 +060727363736373637363534272623220706151123113311363736034C0127B1BE3C43AA +C3F1B94961867DD998882C367E73CDCB7371CACA4E6969047BB3C2FEFDCCA1B280934535 +0C851632577A6D687FC09D9686817EDEFE2705D5FD9A874243000002002DFFE30492049A +0017004D0000012623220706070607061514171617161716333237363736251615140706 +212227262322072736333217163332373635342706070607062726272627262726353437 +363736373633321736371706032C7F8D1F371D251D100E0C0F181A23201E19473B492401 +0B6C7F6FFEF78D634B35415154875F82523F5B9D4F4B311B1F467566472948324030291E +1D1F2E3E50655ED290382A8837034498160B211A201B2120151C111406051914311832C0 +D4B09C882E2341934C2E235E597F8C711917342B2602010A07221A4834423B3B3D2F3F22 +2B9F566850920001004FFE56050B05F60021000005042120010037363534272623220706 +07233637362120171615140700011633203704FAFF00FEEDFEAFFEB902BAB36C6C63A4B4 +5E2318F02C56A301180113A1A2A2FEF7FE189CD50129E8ECBE01A301F1DB849C8D655D92 +363FA166C29091F1D8B6FEF2FE85B5B3000000010064FE56046A047B0020000001062320 +0100373635342726232207060723363736333204151407060116333237045CDAEAFEEEFE +DE0242A75C5C548B99501E14CC25498BEEE801148AAFFE2F91A9FDC5FEEF9901790159C2 +6B7D6F534B752C3281529CE8C2A49CC5FEE0BA90000000020073000005B605EF00020035 +00002521090326272623220F013536373633321716170901363736333217161715272623 +2207060709011617163B011521353332373601DA026EFECDFE140180FEDC131A223F1916 +4521201F1C724B2C2F0102010934274B721D1E20214417183C26131AFED2017406071D45 +47FAC347481A0CAA01CAFE68023D01BB1D1A22040ABB0B0505432846FE81017F4B234305 +050BBB0A04221126FE45FDC3090821AAAA210F00000000020036000004CB047B00020035 +000025210309010326272623220F013536373633321716171B0136373633321716171527 +26232207060703011617163B0115213533323736019A01CCE4FE5B0139EF15111D361513 +3A1C1B1A1883402528C5C528254083181A1B1C3A1315361D1115F6012D0605193A49FB6B +493A19059E0138FEEE01A4013D1C0E1903078D080404331E35FEFA0106351E330404088D +0703190E1CFEB8FE670805199E9E1905000000020073FFE305250610001D002B00000124 +070607363736333200100021202726111037362132373637150607061210262322070615 +141716333237032AFED657381651557B82F50132FECEFEF9FECEA4A38B7C01B07395A04B +5E976C8EC8BABC68696965BFBC62052D02734AA0562231FEBCFDF0FEBC9C9B015001DED2 +BB0A0A27B1240806FC410182E67374C0BD787373000000020071FFE3045B0610001F002F +000001260706073637363332171610070623222726111037362132373637150607061334 +2726232207061514171633323736029BE3492C1429655B78CC7F80807FDBFF8988746701 +4F5F5C53475D455AA8535492955658585497945253053702784AA9463631A2A2FDF0A2A2 +9C9B015001DED2BB0A0A27A7270506FCF8CD72737374CBC77873737400000001002CFE56 +04B705D5000F0034400D0312000F041C0708120B0C071010DC3CDCEC10FC3CDCEC310040 +0D02090407950F0CBC0D8105BD1010ECECF43CEC32CC3230011123352111231121152311 +2111331104B7CBFEEBCBFEEBCB01E0CB0460FEF264FAA0056064010E0175FE8B00000001 +0037FE55041405CF000F0033400D0308000F04080708080B0C071010DC3CDCEC10FC3CDC +EC3100400C02090407870F0CBC0D05BD1010ECCCF43CEC32CC3230011123352311231123 +152311211133110414ADE5B9E5AD0192B9045FFF0070FA86057A7001000170FE90000001 +0070FFF204CD046700330000010207062322353401363534272623220735363332170411 +14073712373633321514010615141716333237150623222724113437022860C837223701 +243E0E1A8E395B405B1A1B011D1DBD60C8372237FEDC3E0E1A8E395B405B1A1BFEE31D01 +99FEF77C224F9A01098A7A3A36686CE0300425FEC15B4D6C01097C224F9AFEF78A7A3A36 +686CE0300425013F5B4D000200BAFE5604A4047B00180024003A400E1426451A120A5111 +081F1200462510FCECECF4B27F0A015DECECC43100400F13B9161CB906B82522B90D8C16 +BD2510ECF4EC10F4EC10EC30133437363736333217161007062322272627122901152120 +11241027262007061017162037BA5A369E3BB6CC7F80807FCC785B593A05012001F4FE1C +FE12032B5354FEDC545353540124540225D0A3625E23A2A2FDF0A2A2313064FE58AA02DA +34019674737374FE6A7473730000FFFF0071FFE303E7047B120600460000FFFFFFDBFE56 +017906141206004D0000FFFF0073FFE305D905F012060161000000010071FFE303D8047B +0021000001262726232207060721152116171633323F0115070623202726103736213217 +161703D82525636AB7665F1202A5FD5B125F66B7804D4A4F686BFEF49C9D9D9C010C656E +282703AE0D0A1A635CA990A95C631A19A712169C9C02289C9C16080C0000000100C4FFE3 +042B047B0021000013353637363320171610070621222F01351716333237363721352126 +272623220706C427286E65010C9C9D9D9CFEF46B684F4A4D80B7665F12FD5B02A5125F66 +B76A632503AEA30C08169C9CFDD89C9C1612A7191A635CA990A95C631A0AFFFF00C90000 +048D05D5120600A00000FFFF00BAFE5604A40614120600C00000FFFF0073FFE3052705F0 +120600260000000100C90000061F05D5000C009440100908030201050A061C043E0A1C00 +040D10FCECFCEC1117393100400C420A070203080300AF080B052F3CC4EC32111739304B +5358401803110708070211010208080702110302090A0901110A0A09071005ED071008ED +071008ED071005ED59B2700E01015D401104020607060A36024907490A5907590A084015 +02010D03160819092601290335013A0345084A090A5D005D132109012111231101230111 +23C9012D017D017F012DC5FE7FCBFE7FC405D5FE2101DFFA2B051FFE1901E7FAE1000001 +007FFE5604B30460000C004F40090E460708040A08000D10DCECDCECEC3100400D420A07 +0203090300BC090CBD062FECC4EC32111739304B535840120211080A0903110708070211 +0901110A0A09050710ED10ED0710ED0810ED59132113012111231101230111237F011BFE +0100011BB9FEEC99FEEBB90460FE7B0185FBA003B2FE6001A0FAA400000000020055FE56 +04A4047B001B002700001711343736373633321716100706232227262711211521152335 +2335001027262007061017162037BA5A3D973BB6CC7F80807FCC7B58593A01E5FE1BB965 +03905354FEDC545353540124549002B5E78C665A23A2A2FDF0A2A2313064FEC8AA7070AA +01F4019674737374FE6A74737300FFFF0073FFE3052705F0120601480000FFFF0073FFE3 +052705F01226038D00001007007902330000FFFF0073FFE3052705F01027007900E40000 +120603910000FFFF00C90000048B076B122603A900001007171904EE0175FFFF00C90000 +048B074E122603A9000011071716049D01750085B1929742B093B09842B1800442B18100 +427CB000B0012349B013B00E234961B0806268B0134661B0004660B09243B001602342B0 +9243B0016043B0005558B00EB09243B001604338B00E11B0013559B1800042B181004218 +B00010B013B00EB0012349683BB01311B0023500B000B0132349B0405058B013B04038B0 +1311B00235B0013559000001FFFAFE6605AC05D5001B0034400B050A1C1B140E161C1311 +1C10D4CCFC3CCCDCFCCC3100400F059504B0100E9517101611951381102FF4EC3210D4EC +10F4EC302510062B01353332363511342623211123112135211521112132161505ACCCE4 +4C3E866F7C7CFE88CBFE52048BFDEE01A1BADE68FEF2F4AA96C201229F9EFD39052BAAAA +FE46E9EE0000FFFF00C90000046A076B122603A700001007171704AE017500010073FFE3 +052705F00018004E40091A120B00111419061910DCEC32D43CCCCC31004017139512AD19 +0CA10BAE0E9509911900A101AE1795038C1910F4ECF4EC10F4ECF4EC10F4ECB1120E49B1 +1713495058B3121340021738593001150621200011100021201715262120020721152116 +1221200527D4FEF5FEB1FE7A0186014F010FD0D3FF00FEF8EE16031EFCE216EE01080100 +0146D390019F01680167019F8ED5BDFEE3EFAAEFFEE4FFFF0087FFE304A205F012060036 +0000FFFF00C90000019305D51206002C0000FFFF000600000258074E100600910000FFFF +FF96FE66019305D51206002D0000000200540000082F05D50014001C0033400C17191000 +1C1B0B011C0A061D10D4D4ECD43CECDCEC3100400E1B950CAD1401950A811C069505142F +3CEC32F4EC10FCEC3001211510020535361211352111333204151404232125201134262B +01110470FE1BC8FE91D9950378EAFB0110FEF0FBFE4C01AA01409DA3E0052BB8FDCAFDFB +38AA2F01A60258FEFD9ADADDDEDAA601118B87FDDD00000200C9000007CC05D50012001B +0035400E13190F08001C170A07021C05041C10FCEC32DC3CEC32DCEC3100400D1701950B +07AD090581189500042F3CECE432FC3CEC32302111211123113311211133113332041514 +04230134262B0111333236040DFD86CACA027ACAEAFB0110FEF0FB01369DA3E0E0A19F02 +C7FD3905D5FD9C0264FD9ADADEDDDA01B78B87FDDD870001FFFA000005AC05D50013002C +400A061C03100A121C0E0D1410D4CCFC3CCCDCEC3100400B0A95130C120D950F81050C2F +3CF4EC3210D4EC3001321615112311342623211123112135211521110414BADEC97C7CFE +88CBFE52048BFDEE0371E9EEFE66018A9F9EFD39052BAAAAFE46FFFF00C900000586076B +122603AE00001007171704EE0175FFFF00C900000533076B122603AC00001007171904E5 +0175FFFF0023000004BD076D1027171D04720175120603B70000000100C9FEBF053B05D5 +000B0029400D0D04061C070B9509031C02040C10FCECD4FCD4ECEC3100B70B0495060281 +09012F3CE432ECCC3029011133112111331121112302ADFE1CCA02DECAFE1CAA05D5FAD5 +052BFA2BFEBFFFFF00100000056805D5120600240000000200C9000004EC05D500080015 +002E400C17090019102E040B1C15041610FCEC32F4ECC4CC3100400C0B9515811404950C +AD0595142FECF4EC10F4EC30013426232111213236131521112132041514042901110417 +9DA3FEBC0144A39D6CFD10014EFB0110FEF9FEFCFDE801B78B87FDDD8704A8A6FE40DADE +DDDA05D50000FFFF00C9000004EC05D5120600250000000100C90000046A05D500050019 +400C04950181000702041C01040610FCFCCCC431002FF4EC30331121152111C903A1FD29 +05D5AAFAD50000020065FEBF05DB05D5000700170034400F021C0E1395191017031C0D14 +95171810DCECD4EC10D4CCFC3CEC3100400B03950D8112160F001795142FEC3232CC32F4 +EC3025211121151003060536371219012111331123112111231101D30294FE1B7017FEB1 +8626610378AAAAFBDEAAAA0481D4FE0DFEB5442B3F7801340226011AFAD5FE150141FEBF +01EBFFFF00C90000048B05D5120600280000000100280000087605D500130098400B0805 +01040609011C0C001410DC3CEC32D4C411393931004011420D0C10130809050208120300 +AF0F0A062F3C3CEC32321739304B53584016071106081105090406050311040211050809 +090409040907103C3C04ED1005ED070810ED0510ED590140130D01080E01070F01061001 +051101041201030010493A493A493A493A493A493A004008130210050D080C09103C103C +103C103C013311013309012309011123110901230901330103EACA02AAF5FDDF0244D3FE +13FEFECAFEFEFE13D30244FDDFF502AA05D5FD1E02E2FDB3FC780301FEE9FE1601EA0117 +FCFF0388024DFD1E000000010087FFE3049A05F00028003F400C1B1F19032A1619092510 +062910FC32D4ECCCD4FCCC310040161A951B0C10A10FAE13950C25A126AE229500910C8C +2910E4F4ECF4EC10ECF4EC10D4EC30013204151406071E0115140423222427351E013332 +363534262B013533323635342623220607353E010249F601388E8391A3FE9DEE7AFEE42C +99A97CBCD0B9C3CCD4B39EA3C6865CCD71EC05F0D1B27CAB211FC490E6E9421CD0592B90 +958495A67770737B184DC5282200000100C90000053305D500090079401E031109090808 +110404034208030906AF0205090407031C0036071C06040A10FCECFCEC11393931002F3C +EC323939304B5358071004ED071004ED5922B21F0B01015D403036083803480847036908 +66038008070604090915041A09460449095704580965046909790985048A0995049A099F +0B105D005D011123110121113311010533C4FD6AFEF0C4029605D5FA2B04E1FB1F05D5FB +1F04E1000000FFFF00C900000533076D122603AC00001107171D04F501750023B4060A12 +00072BB00A4B54B00B4B545BB0104B545B58BB00120040000AFFC0383859310000000001 +00C90000058605D5000B0059400B080501040609011C00040C10FCEC32D4C41139393100 +400B4208090502040300AF0A062F3CEC321739304B535840160711060811050904060503 +11040211050809090409040907103C3C04ED1005ED070810ED0510ED5913331101210901 +2309011123C9CA02D20103FDBF025FDCFDFAFEEFCA05D5FD1E02E2FDB2FC790301FEE9FE +1600000100540000053A05D5000F0025400A11040A1C070B1C06011010D4D4ECD4ECEC31 +0040080B950681019500092F3CECF4EC303335363712113521112311211510030654D93E +570378CAFE1B6662AA2FA401020258FEFA2B052BB8FDCAFEF8FDFFFF00C90000061F05D5 +120600300000FFFF00C90000053B05D51206002B0000FFFF0073FFE305D905F012060032 +0000000100C90000053B05D50007001F40100495078102060904031C00041C07040810FC +ECD4ECEC31002F3CF4EC300111231121112311053BCAFD22CA05D5FA2B052BFAD505D500 +0000FFFF00C90000048D05D5120600330000FFFF0073FFE3052705F0120600260000FFFF +FFFA000004E905D512060037000000010023000004BD05D50011003EB41311060D1210D4 +C4D4C43100B642100D810695052FECEC32304B535840120F11000D0C10111111000F110C +0E110D0D0C050710EC10EC0710EC0810EC59250607062B0135333237363F010133090133 +028F15204FFB4D3F772E1C122DFE21D901730175D9B532265DAA1B112A6A046BFC94036C +0000000300790000066A05D50006000D001F003D401121100A191A0E00151C1D0D160319 +11102010FCECD43C3CFC3C3CD4ECEC3100400E0D0095171415811F0705951D0E1F2FDC3C +EC3210F4DC3CEC3230010E0115141617333E013534262703240011100025353315040011 +1000051523030DD9E6E6D9CBD9E4E4D9CBFEC3FEA90157013DCB013D0155FEABFEC3CB04 +A214CCC5C5CB1414CBC5C5CC14FC1017012B01090109012D178B8B17FED5FEF5FEF7FED5 +17B2FFFF003D0000053B05D51206003B0000000100C9FEBF05E505D5000B0029400C0D09 +9500061C07031C02040C10FCECD4EC3CFCCC310040080602810B080495012FEC32CCF43C +30290111331121113311331123053BFB8ECA02DECAAAAA05D5FAD5052BFAD5FE15000001 +00AF000004B305D5000F0024400A1104010D1C0E071C061010DCECD4EC32EC3100B70295 +0BAD0D0681002FE432F4EC302111212226351133111416332111331103E8FE5FBADEC97C +7C0178CB0264E9EE019AFE769F9E02C7FA2B000100C9000007C505D5000B002A400D0D04 +021C030A1C0B071C06040C10FCECD4FCD4ECEC310040080A020681000895052FEC32F43C +3C3025211133112111331121113304AC024FCAF904CA024FCAAA052BFA2B05D5FAD5052B +0000000100C9FEBF086F05D5000F0032400F110D95000A1C0B061C07031C02041010FCEC +D4FCD4EC3CFCCC3100400A060A02810F0C080495012FEC3232CCF43C3C30290111331121 +1133112111331133112307C5F904CA024FCA024FCAAAAA05D5FAD5052BFAD5052BFAD5FE +15000002003C0000061805D5000C0017002A40160295038100129505AD139500100D1909 +12041C01031810CCDCEC32D4ECCC31002FECF4EC10F4EC30211121352111213204151404 +23013427262321112132373601F5FE470283014EFB0110FEF0FB01364F4EA3FEBC0144A1 +504F052BAAFD9ADADEDDDA01B78B4443FDDD44430000FFFF00C90000064605D5102603C0 +00001007002C04B30000000200C9000004EC05D5000A00150024401305950DAD0B810695 +1517001911050C1C0B041610FCEC32D4ECCC31002FECE4F4EC3001342726232111213237 +36013311213204151404232104174F4EA3FEBC0144A34E4FFCB2CA014EFB0110FEF0FBFD +E801B78B4443FDDD444304A8FD9ADADEDDDA0001006FFFE3052305F00018004E40091A05 +08191307000E1910DC3CCCD4EC32CC31004017069507AD190DA10EAE0B9510911900A118 +AE0295168C1910F4ECF4EC10F4ECF4EC10F4ECB1070B49B10206495058B3070640021738 +5930131621201237213521260221200735362120001110002120276FD301000108EE16FC +E2031E16EEFEF8FF00D3D0010F014F0186FE7AFEB1FEF5D40146BD011CEFAAEF011DBDD5 +8EFE61FE99FE98FE6190000200D3FFE3083005F0000F00260038401F009514912708951C +8C27219526AD248123280C19180419201021251C24042710FCEC32D43CECD4ECCC31002F +E4F4EC10F4EC10F4EC300122070611101716333237361110272601123736212017161110 +07062120272603211123113311057EDC82818182DCDC80818180FC730EB4B4013B013ABC +BCBCBCFEC6FEC5B4B40EFED0CACA054CA4A4FEE5FEE6A4A4A4A4011A011BA4A4FDF30118 +CDCCD2D3FE9EFE9FD2D3CDCD0118FD6B05D5FD6A000000020088000004C605D500080016 +0040400B180414051C110019090D1710D4C4ECD4EC32EC3100400C420695108109159503 +AD13092F3CF4EC10F4EC304B5358B715110A1611090A09050710EC10EC59011416332111 +2122060901262435342429011123112101019B9592013AFEC69295FEED019864FF000104 +01020204CAFEF2FE7604278387021285FB56028D1AA9D7CEE0FA2B0277FD89000000FFFF +007BFFE3042D047B12060044000000020070FFE3047F0637001D0029003A400E13142B45 +271203511C211209452A10FCEC32F4ECECD4C43100401116A911972A24B9061EB9091C00 +B8068C2A10E4F43939EC10EE10F4EC300132001110002322000327263534373624253637 +17060F010607060F0136172206151416333236353426027DF00112FEEEF0F1FEF6070605 +3A5B013B01087A3633312DFA7E4CC7130782D394ACAB9593ACAC047BFEC8FEECFEEDFEC7 +0130011CE57729A076B9A002011192140111092C759938779CE7C9C9E7E8C8C7E9000003 +00BA0000043E0460000800110020002F400D0E12162205121C00090812462110FCEC32D4 +ECCCD4EC3100400B00A90A2009A912BC01A9202FECF4EC10D4EC30011121323635342623 +01113332363534262325213216151406071E011514062321017201067E84847EFEFAF268 +848468FE5601B6C5D46C6A7F8CE7D6FE390204FE8F5F5A5A5E01C9FECA534A4A4F939085 +67790F18987296A40000000100BA000003D0046000050019B60702040801460610FCFCDC +CC3100B404A901BC002FF4EC30331121152111BA0316FDA3046093FC33000002006BFEE5 +051D0460000600160034400F02080D12A9180F1603080C13A9161710DCECD4EC10D4C4FC +3CEC3100400B03A90CBC11150E0016A9132FEC3232CC32F4EC3025211121151007053637 +3611352111331123112111231101BB0216FE7D76FED85B286202F59393FC749393033A8C +FE64DC362855D301A9D4FC33FE52011BFEE501AE0000FFFF0071FFE3047F047B12060048 +000000010046000006EF046000130098400B08050104060901080C001410DC3CEC32D4C4 +11393931004011420D0C10130809050208120300BC0F0A062F3C3CEC32321739304B5358 +4016071106081105090406050311040211050809090409040907103C3C04ED1005ED0708 +10ED0510ED590140130D01080E01070F01061001051101041201030010493A493A493A49 +3A493A493A004008130210050D080C09103C103C103C103C013311013309012301071123 +1127012309013301033FB701E9D6FE6E01CCC5FE87BBB7BBFE87C501CCFE6ED601E90460 +FDF2020EFE51FD4F0236C9FE93016DC9FDCA02B101AFFDF2000000010085FFE303C8047C +0028004E400B1912262A10120315200A2910DCC4C4D4ECCCD4EC3100401620861F881CB9 +23B82914A9152909860A880DB9068C2910F4FCB00C4B5158FC1BF459EC10D4EC10F4FCB0 +0C4B5158FC1BF459EC30011E0115140423222627351E013332363534262B013533323635 +342623220607353E0133321615140602C27C8AFEFEEE50A95A47AA5D97A99689949B7487 +8B7747A16162AA4CC4E378025C18926CADB61C1CAB2525705A586B985946405C1A1DA718 +189D8D5D8100000100BA0000047904600009003F40154208030906BC02050B4609040703 +0800070806460A10FCECD4EC113939EC31002F3CE4323939304B5358400A031109090808 +110404030710EC0710EC59011123110123113311010479B7FDE4ECB7021B0460FBA00383 +FC7D0460FC7F03810000FFFF00BA000004790614122603CC00001107029A009AFFCC0023 +B4070A1203072BB00E4B54B0104B545BB0154B545B58BB00120040000AFFC03838593100 +0000000100BA000004910460000B0059400B080501040609010800460C10FCEC32D4C411 +39393100400B4208090502040300BC0A062F3CEC321739304B5358401607110608110509 +0406050311040211050809090409040907103C3C04ED1005ED070810ED0510ED59133311 +013309012301071123BAB70207E2FE5401E3CEFE73C5B70460FDF2020EFE4FFD510235C8 +FE930001004C000004730460000F0024400A11460A08070B0806011010D4D4ECD4ECEC31 +00B70BA906BC01A900092F3CECF4EC30333536373611352111231121151007064CB63844 +02F5B8FE7B585E991C7EB101C5B7FBA003CD6FFE50C2CF000000000100BA0000054F0460 +000C004D4016420A070203080300BC09060C0E460708040A0800460D10FCECDCECEC3100 +2F3CC4EC32111739304B535840120211080A09031107080702110901110A0A09050710ED +10ED0710ED0810ED5913210901211123110123011123BA010D013E013F010BB9FECBB8FE +CAB90460FD1202EEFBA003B0FD2702D9FC50000100BA000004810460000B0027401409A9 +020400BC070B0D460804080509010800460C10FCEC32DCEC32EC31002F3CE432DCEC3013 +3311211133112311211123BAB90255B9B9FDABB90460FE3701C9FBA00204FDFC0000FFFF +0071FFE30475047B120600520000000100BA0000048104600007001F401004A907BC0206 +0308094600040807460810FCECD4ECEC31002F3CF4EC3001112311211123110481B9FDAB +B90460FBA003CDFC330460000000FFFF00BAFE5604A4047B120600530000FFFF0071FFE3 +03E7047B1206004600000001003C0000046D04600007001CB60901030806000810DCD4FC +DCCC3100B50307A900BC052FF4EC323013211521112311213C0431FE42B5FE42046093FC +3303CD000000FFFF003DFE56047F04601206005C000000030070FE56066705D5000A0028 +00330042401135452912210C061908272E1A001212453410FCECD43C3CFC3C3CD4ECEC31 +0040122C08B91E15B81997343103B9240F8C0BBD3410ECF43CEC3210E4F43CEC32300114 +16333237112623220601110E01232202111012333216171133113E013332121110022322 +2627110134262322071116333236012F917B627272627B9101E0398353A7E9E9A7538339 +B9398353A7E9E9A753833901E0917B627272627B91022FEBC7A80214A8C7FB3C02395E4E +013501130113013D4C5E0204FDFC5E4CFEC3FEEDFEEDFECB4E5EFDC703D9EBC7A8FDECA8 +C700FFFF003B0000047904601206005B0000000100BAFEE505140460000B0028400C0D09 +A906080007030802460C10FCECD43CECFCCC3100B70602BC0B0804A9012FEC32CCF43C30 +2901113311211133113311230481FC39B90255B993930460FC3303CDFC33FE5200000001 +00960000040004600011003B401102A90D0F07BC001346010F08100808071210DCECD4EC +32EC31002FE432D4ECB000B0022349B00DB00F23495258B1020DB8FFC0B0021738593021 +11212227263511331114171633211133110348FEA999665CB83435680129B801D75F56B8 +011CFEF5753B3B01F6FBA0000000000100BA000006980460000B0029400D0D460208030A +080B070806460C10FCECD4FCD4ECEC3100B70A0206BC0008A9052FEC32F43C3C30252111 +331121113311211133040501DAB9FA22B901D9B99303CDFBA00460FC3303CD0000000001 +00BAFEE5072B0460000F0032400F110DA90A08000B060807030802461010FCECD4FCD43C +ECFCCC3100400A060A02BC0F0C0804A9012FEC3232CCF43C3C3029011133112111331121 +1133113311230698FA22B901D9B901DAB993930460FC3303CDFC3303CDFC33FE52000002 +003E0000052E0460000C0015002C400B17451312030E0B08080A1610C4DCEC32D4ECEC31 +00400B08A90BBC070EA90C0FA9072FECD4EC10F4EC300132161514062321112135211105 +21112132363534260371D6E7E7D6FE38FE9502240107FEF901077E83830297A3A8A8A403 +CD93FE3793FE8F5F5A5A5E000000FFFF00BA0000059B047B102700F304220000100603E0 +0000000200BA0000043E0460000800130025400B154500120F050B0809461410FCEC32D4 +ECEC3100B704A90B09BC05A9132FECE4D4EC300134262321112132360133112132161514 +062321037A837EFEFA01067E83FD40B9010ED6E7E7D6FE39014C5A5EFE8F5F036EFE37A3 +A8A8A400000000010071FFE303E7047B0018004D40090508121348070E001910DC3CCCF4 +EC32310040170E860D880B1886008802B91607A906BB0BB910B8168C1910E4F4ECF4EE10 +FEF4EE10F5EEB1070B49B10206495058B307064002173859303716333236372135212E01 +2322073536332000111000212227719E9D93D213FDC802320C9FC79AA19DA60106012DFE +DBFEFFBD93D556ABDA9369DF56AC46FEC3FEF1FEF2FEC2480000000200C1FFE3064C047B +000B001E003A400F20450912120312180C191D081C461F10FCEC32D43CECD4ECEC310040 +1000B90FB81B06B9158C1B19A91E1CBC1B2FE4D4EC10F4EC10F4EC300122061514163332 +3635342601361233320011100023220027231123113311044A94ACAB9593ACACFD7113F9 +F0F00112FEEEF0F1FEF909D0B8B803DFE7C9C9E7E8C8C7E9FEC2BE011CFEC8FEECFEEDFE +C7012EF8FDF70460FE410002007400000422046000080016003C4009140508110012090D +1710D4C4ECD4EC323100400B4206A910BC0915A90313092F3CD4EC10F4EC304B5358B715 +110A1611090A09050710EC10EC590114163B011123220609012E01353436332111231123 +01017A8077F8F87780FEFA0156749AD7D901B6B9E5FEB6031D535E01615CFC8F01EB1A89 +8FA2A1FBA001D9FE2700FFFF0071FFE3047F066B122603C90000100600435A050000FFFF +0071FFE3047F0610122603C900001107006A009600000085B1929742B093B09842B18004 +42B18100427CB00FB0012349B023B01E234961B0806268B0234661B00F4660B09243B001 +602342B09243B0016043B0005558B01EB09243B001604338B01E11B0023559B1800042B1 +81004218B00F10B023B01EB0012349683BB02311B0033500B012B0232349B0405058B023 +B04038B02311B00335B0023559000001002FFE5604900614001F003F400F141708104E08 +1D090508010300462010FC3CCCEC3232CCF4FCCC3100401114A9131F0801A90702041A87 +0A0D04971E2FECD4C4EC10DC3CEC3210D4EC3013233533113311211521113E0133321611 +140007353612353426232206151123DFB0B0B9021DFDE342B276B6D8FEA9D77AF57C7C9A +A7B903D18F01B4FE4C8FFE6D6564E9FEEAE2FE59298C16012ED2D09FC49EFEFB0000FFFF +00BA000003D8066D122603C70000100700760086000700010071FFE303E7047B0018004E +400A0A0B081210024816451910FCE432FC32CC310040170286038805118610880EB91309 +A90ABB05B900B8138C1910E4F4ECF4EE10FEF4EE10F5EEB1090549B10E0A495058B3090A +4002173859300132171526232206072115211E01333237150623200011100002A4A69DA1 +9AC79F0C0232FDC813D2939D9E93BDFEFFFEDB012D047B46AC56DF6993DAAB56AA48013E +010E010F013DFFFF006FFFE303C7047B120600560000FFFF00C10000017906141206004C +0000FFFFFFF4000002460610100600B10000FFFFFFDBFE56017906141206004D00000002 +004C000006BF04600016001F0036400E21451A120C11081E07120806012010D4D4ECD43C +ECD4ECEC3100400E1EA9091FA91012A906BC01A900102F3CECF4EC10ECD4EC3033353637 +361135211133321615140623211121151007062532363534262B01114CB6384402D8ABD6 +E8E7D6FE9BFE9A585E03787E84847EA3991C7EB101C5B7FE37A3A8A8A403CD6FFE50C2CF +765F5A5A5EFE8F000000000200BA000006B704600012001B003840101D451612050A1208 +1A000B0F080D461C10FCEC32DC3CEC32D4EC3100400D13A9091A0BA90110120EBC090D2F +3CE432DC3CEC3210EC30011133321615140623211121112311331121110132363534262B +0111044EABD6E8E7D6FE9BFDDEB9B90222015C7E84847EA30460FE37A3A8A8A40204FDFC +0460FE3701C9FC335F5A5A5EFE8F0001002F000004890614001B003A400F08191308104E +19090508010300461C10FC3CCCEC3232F4EC10CC3100400E0801A907020416870A0D0497 +121A2F3CECD4C4EC10DC3CEC323013233533113311211521113E01333216151123113426 +232206151123DFB0B0B9021DFDE342B375BDCAB87C7C98A9B903D18F01B4FE4C8FFE6D65 +64EAEDFED0012A9F9EC1A1FEFB00FFFF00BA00000491066D122603CE0000100600766F07 +0000FFFF00BA00000479066B122603CC0000100600435D050000FFFF003DFE56047F0614 +122603D700001006029A5ECC0000000100BAFEE504810460000B0029400D0D460608070B +A909030802460C10FCECD4FCD4ECEC3100B70B04A90602BC09012F3CE432ECCC30290111 +3311211133112111230254FE66B90255B9FE66930460FC3303CDFBA0FEE500010073FFE3 +070505D50034003840142412253610201C29161C170D1C0409120804103510FCDCEC10EC +D4FCD4ECECDCEC3100400916240881111C952D002F3CEC32F43CCC300522272611341336 +373306030615101716333237363D01331514171633323736113427022733161712151007 +062322272627060706023AD3797B643B5DF954874348497D724847C74646748641474387 +54FA5F38647B7BD1926564272764651DB1B40198C9010E9F7F46FEBF9FB7FECD6B6D6968 +C6F1F1C668696D770127B79F014146829CFEE7BEFE66B2B15E5EADAD5E5EFFFF0087FFE3 +062704601006035D00000002001E000005B105D50012001D003A400E1F1319050D11190F +001C0B090D1E10DC3CCCFC3C3CCC10D4ECCC3100400F0A12950C100E8109189501AD1995 +092FECF4EC10F4D43CEC3230011521320415140423211121352135331521150134272623 +2111213237360258014EFB0110FEF0FBFDE8FE900170CA017101134F4EA3FEBC0144A34E +4F0451E2DADEDDDA0451A4E0E0A4FD668B4443FDDD44430000000002001E000004E70614 +00070019003A400F1B45001217091105130F1C0B090D1A10DC3CCCFC3C3CCC10D4ECEC31 +00400E0911A90B0F0D04A9130D9705A9082FECE4D4EC10D43CEC32302434262321112132 +0511213521113311211521112132161006230423837EFEFA01067EFDC3FEBB0145B901A9 +FE57010ED6E7E7D6F2B45EFE8F9303CD9301B4FE4C93FECAA3FEB0A40000000100D3FFE3 +071B05F0002B000001112311331133123736213217161715262726232007060721152112 +17162132373637150607062320272603019DCACAD21E9DC301538676776866737482FF00 +88671902B2FD4607818900FF827473666A777684FEADC3BA0902C7FD3905D5FD9C0108A7 +D0242347D55F2F2F9C77C6AAFEF3949D2F2F5FD3482424CFC6014F000000000100C1FFE3 +0581047B0023000001321715262322070607211521161716333237150623202726272311 +2311331133363736043EA69DA19AE65C220C01CCFE2C0D9E55789D9E93BCFEF3947B0A93 +B8B898177A97047B46AC56B441578FF45E3356AA48AD90E4FDFC0460FE33CA809E000002 +0010000006F805D5000B000E000021230121112311210123013313090106F8E1FEEAFEE9 +CAFEE7FEEAE10302E5B1FEDCFEDC021BFDE5021BFDE505D5FCF30237FDC9000200330000 +06110460000B000E0000212303231123112303230133130B010611C3ECE3B8E5ECC3028E +C391F3F30195FE6B0195FE6B0460FDB901A1FE5F0000000200C90000091405D500130016 +000021230121112311210123012111231133112101331309010914E1FEEAFEE9CAFEE7FE +EAE1016FFDF8CACA025F013CE5B1FEDCFEDC021BFDE5021BFDE502C7FD3905D5FD9C0264 +FCF30237FDC9000200C1000007D004600013001600002123032311231123032301211123 +113311210133130B0107D0C3ECE3B8E5ECC3011CFE6BB8B801E9011EC391F3F30195FE6B +0195FE6B01E7FE190460FE1701E9FDB901A1FE5F000000020073000005D905D50017001A +00824014191A0E0D141C0F130E00071C0C080D18001C031B10DCEC39CCDCB40F084F0802 +5D39EC10CCDCB60013400E4013035D39EC111239393100400E420C0F1100031995180D81 +1408022F3C3CF439ECD43CEC32304B5358401418110F1A1819110E0F0E18110C19181A11 +0D0C0D070510ED0810ED070510ED0810ED59B2401C01015D011123110607061123103736 +370121011617161123102726270121038BCA936482D5BD78AAFE510512FE50A474BCD580 +60F8013EFD830259FDA702591C7EA4FEE50162D2863102EAFD133282D2FE9E011EA17ACA +02280002006B0000047B04600002001A007E40140001031A091C0408030D141C19151A02 +0D1C101B10DCEC39CCDCB28015015D39EC10CCDCB23003015D39EC111239393100400E42 +1904110D100095021ABC09150F2F3C3CF439ECD43CEC32304B5358401402110401020011 +030403021119000201111A191A070510ED0810ED070510ED0810ED59B4701C8F1C02015D +0121130901161716112334272627112311060706152310373637010345FE5DD10208FEBB +6B4B89C3563A56B8533856C2894A6CFEBB03B6FE960214FDCC26569CFEECC7744F1AFE5C +01A21A4B74C901149C5527023400000200C9000007C405D5001E00210000090121011617 +1611231027262711231106070611231037363721112311331105012103EFFE9F0512FE50 +A474BCD5806099CA936482D5BD556EFDB5CACA0384013EFD8303710264FD133282D2FE9E +011EA17A20FDA702591C7EA4FEE50162D25F34FD3905D5FD9C6E02280000000200C10000 +062E0460001E002100000901210116171611233427262711231106070615231037363721 +11231133110121130337FEE70410FEBB6B4B89C3563A56B8533856C2891B1FFE92B8B803 +7FFE5DD1027701E9FDCC26569CFEECC7744F1AFE5C01A21A4B74C901149C1F18FE190460 +FE17013FFE9600010073FE560473077A0053000001140706232226232215143332373617 +161715262322062322272635343736332132373635342726233532163332373635342122 +0735363703331337363736373633321715272623220F0116171615100516171604737398 +C644BA2360DC41807420625444743BFC3C7D4AA3353F75015F684641BB58F9125617A352 +75FEC5A5DEA0819F73A06A1E0F171723421A23270B0F22325AA66272FEEF8D525501BECF +67880882720C0B020725A7271B2C61927A515E58526ABD3719A60226368DEE4AB42D0D01 +83FE83DE401827121B0A5705026FCA185764A7FEFD451E5C60000001005BFE7403C80606 +004F00000114070623222623221514171633323633321715262322062322272635103321 +323635342726272223353217323320353427262322073536370333133736373633321715 +2623220F010415140716171603C8766DA244A819506221272CB22D63583B6231D232693F +89C4012C5A6E4E3C7205B20B21201501355E485C91B87E669F73A06A2F152B511A23320F +22325B0130E86F475001529E5E560881611B0924278B2217255297010C60594C382B0898 +01A0512A2137A71F0B0183FE83DE6317320A57076FCA2FF2C43216404900000100100000 +06C105D5001C000001272623220706070123112311230133013311331133133637363332 +1706C13A1920251D423CFEE4FACAFAFE5CC3015E7DCA7DE84E6842813338051407031938 +A1FD0AFECA01360460FC5403EBFC130272D45033100000010032FE5606D0061E001C0000 +012726232207060701231123112301330133113311331336373633321706D03A1920251D +423CFEE4FAB7FAFE5CC3015E7DB77DE84E684281333803DE07031938A1FD0AFE5601AA04 +60FC54056AFA940272D450331000FFFF0073FFE305D905F0120601610000FFFF0071FFE3 +0475047B120602370000000100100000062705F000120000013217152726232207060701 +2301330901123605A93F3F44161949224754FE81E5FDC6D301D9013873AE05F015BB0A04 +2243DDFC1405D5FB17033D013295000100320000051F047B001300000132171527262322 +07060701230133011336373604B433383A1326251D413DFEE4FAFE5CC3015EE850664204 +7B108D07031937A2FD0A0460FC540270D54F33000000FFFF001000000627077010271720 +04E4017A120604080000FFFF00320000051F0666102702C004C200001206040900000003 +0073FE5607B305F00011001E002C000009010607062B013533323736371301331B010110 +0702200326103712201316031027262007061110171620373607B3FE1452464A7C936C4C +2A26377CFEA2C3FDFDFD3F5F7EFE007F60607F02007E5FD51C38FE983A1C1D390168391B +0460FB38CB3A3D9A2421890137036BFD8A0276FE8AFEDDD0FEEC0113D10244D10114FEED +D1FEDE010672EAEA74FEFBFEFC74EAEA720000030071FE5606FF047B0011001F00250000 +09010607062B013533323736371301331B01001007062322272610373633321702102322 +103306FFFE1452464A7C936C4C2A26377CFEA2C3FDFDFD755F73CCCE74606074CECC7364 +DBE0E00460FB38CB3A3D9A2421890137036BFD8A0276FEABFE48A7C9C8A601BCA6C8C9FC +CD0360FCA00000020073FFE3072D05F00029005200002533323736353427262B01060706 +070622272627262723220706151417163B01363736373632171617160723202726103736 +213336373637363217161716173320171611100706212306070607062227262726045D1E +EB72808072EB1E0B0F161B1A3E1A1B16100A2EEB72828272EB2E0A10161B1A3E1A1B1610 +FE2EFEA198BDBD98015F2D0B10161B1A3E1A1F12100B1D015E98BCBC98FEA21D0A11161B +1A3E1A1F1210C291A4F2F3A491140E150C0B0B0C15101291A4F3F2A4911210150C0B0B0C +1510A1AAD20274D3AA150F150C0B0B0E131113AAD3FEC6FEC7D2AB1311150C0B0B0E1311 +000000020071FFE305A1047B0026005000002533323736353427262B0106070E01222627 +262723220706151417163B0136373E013217161716072320272635343736213336373637 +36321716171617332017161514070621230607060706222726272603722DA14856563FAA +2D070A122C342C120A072DA347565548A32D070A122C34161B0D09C92EFEFF7889897401 +052E07090D1B1634161B0D09072E010277898974FEFB2E07090D1B1634161B0D09A46074 +B7A783610B0A111414110A0B5F74B8BC705F0B0A11140A0C0F0A93899CEEE9A2880A0A0F +0C0A0A0C0F0A0A889CEFE8A2890A0A0F0C0A0A0C0F0AFFFF0076FFE308FA0774102612D2 +00001027041A069700001007041806300127FFFF0098FFE307A10610102612D300001027 +041A05FCFE9C100704180595FFC3FFFF0073FFE307050733102717E000630153100603F4 +0000FFFF0087FFE3062705E0102617E00000100603F50000000000010073FE56052705F0 +001D0039400A001C1B0D30161905101E10FCECFCD4B42F1B3F1B025DEC3100400C0EA10D +AE129509911C1A95002FECCCF4ECF4EC30B40F1F1F1F02015D2123202726111037362132 +1716171526272623200706111017163321112303FAAEFEA5BBC3C3C30153867677686673 +7482FF0088888898F0016BC9C6D001530168CFD0242347D55F2F2F9C9DFED8FED38294FD +B00000010071FE5603E7047B001D0039400A1D121A0C48151204451E10FCECF4D4EC3100 +400C0C860D8811B908B81C19A9002FECCCF4FCF5EE30400B0F1F101F801F901FA01F0501 +5D212027263510373621321716171526272623220706151417163B011123110298FEFB8D +95979601065551514C4E4F4E50B363636363B3F5C9969FFA01129D9D111223AC2B161571 +72CDB97271FDC301AA000001003BFFA503CA03A700130000010727071707270727372737 +173727371737170703CA64D869D864D87DAE7DD864D869D864D869AE690211AE7DB57DAE +7DD864D87DAE7DB57DAE7DB564B50001FBDA04DEFF42067A002F00000121140706070607 +062227262726272635343736373637363321343736373637363217161716171615140706 +07060706FEB9FE330A0B1314191838181914130B0A0A0B131419181C01CD0A0B13141918 +38181914140A0A0A0B1314191805671B191B12130B0A0A0B13121B191B1C191B12130B0A +1B191B12130B0A0A0B131518191C1B191B12130B0A000001FD0705290009064D000D0000 +1323262322070607353637363320097617A25D5B93888B4A777D012405299B2F4B178627 +2A430001FDB304C2FEA5066100080000012211353315231437FEA5F2F1858604C2010B94 +9E9D030000000001FDB304C2FEA5066100080000011023351635233533FEA5F28685F105 +CDFEF567039D9E0000000001F9CA04D90009064D000D0000011221320504251524272427 +2607F9CA8701AF72014501320120FE5FEFFED966DD980501014C7B740186175C71070CCF +00000008F7D6FE9003460760000C0019002600330040004D005A0067000001232E012322 +0607233E01201601232E0123220607233E01201605232E0123220607233E01201601232E +0123220607233E01201605232E0123220607233E01201601232E0123220607233E012016 +05232E0123220607233E01201601232E0123220607233E012016FEC7760B615756600D76 +0A9E01229E0338760B615756600D760A9E01229EF9AE760B615756600D760A9E01229E06 +66760B615756600D760A9E01229EF9AE760B615756600D760A9E01229E07B7760B615756 +600D760A9E01229EF70C760B615756600D760A9E01229E0489760B615756600D760A9E01 +229E06414B4B4A4C8F9090FE514B4B4A4C8F90908F4B4B4A4C8F9090FA014B4B4A4C8F90 +908F4B4B4A4C8F909002294B4B4A4C8F90908F4B4B4A4C8F9090FB984B4B4A4C8F909000 +00000008F858FDC302C2082D0005000B00110017001D00230029002F0000273717130703 +01072703371301273725170501170705272501353305152D01152325350501233513330B +0133150323136B96796F5CA9FB7796796F5CA9051F967A01565CFEE3FA4C9579FEA95B01 +1C0660AC0140FEC0F8C2ACFEC00140045FD3A48152D3D3A481525A9679FEA95C011D05B5 +967901575CFEE3FEF1957A6E5BA9FB7796796F5CA80218D4A48252D4D4A4825202DFAC01 +40FEC0F8C2ACFEC00140FFFF00C9FE5605FC076D102617E100001007171D04F50175FFFF +00C1FE5605380614102617E200001007029A00A0FFCC00020021000004EC05D50012001D +003A400E1F1319050D11190F001C0B090D1E10DC3CCCFC3C3CCC10D4ECCC3100400F0A12 +950C100E8109189501AD1995092FECF4EC10F4D43CEC3230011521320415140423211123 +3533353315331501342726232111213237360193014EFB0110FEF0FBFDE8A8A8CAA801DC +4F4EA3FEBC0144A34E4F0451E2DADEDDDA0451A4E0E0A4FD668B4443FDDD444300000002 +002600000445059E000A001E0039400F2045001211161E060C1C1C18161A1F10DC3CCCFC +3C3CCC10D4ECEC3100400D161EA9181C1A05A90C1A06A9152FECC4D4EC10D43CEC323001 +34272623211121323736011121321716100706232111233533113311331503813E4380FE +F9010781423EFDF8010FD079747473D6FE399B9BB89D014C5E2A2EFE972E2B02DFFECA55 +52FEB0525203D18F013EFEC28F00000200C9000004E105D5000F001C000001170727062B +0111231121321716151427363734262B0111333237273704558C6A927ED6FECA01C8FB80 +81E20C019A8DFEFE7247D76A0323757E7B53FDA805D57172DB922D2C398692FDCF2FB47E +0000000200BAFE5604A4047B001000290000252737173635342726200706101716333205 +170727062322272627112311331536373633321716100706032A8C6E8A4F5354FEDC5453 +53549246011B936F95576C7B58593AB9B93A59587BCC7F80800C98A75DA573C5CB747374 +73FE6A747314AE5DB32E303164FDAE060AAA643031A2A2FDF0A20F000000000100C90000 +046A07070007001B400D0306950181000304061C01040810FCFCDCCC31002FF4ECCC3033 +11211133112111C902F7AAFD2905D50132FE24FAD500000100BA000003D0059A0007001D +B7090304060801460810FCFCDCCCCC3100B50306A901BC002FF4ECCC3033112111331121 +11BA028393FDA20460013AFE33FC3300000000010047000004EF05D5000D00294014010C +95090408950581000F060A0C091C0204010E10DC3CCCFC3CCCCCC431002FF4FCDC3CEC32 +302111213521112115211121152111014EFEF9010703A1FD290223FDDD0294AA0297AAFE +13AAFD6C000000010038000004550460000D002B400A0F060A0C09080204010E10DC3CCC +FC3CCCDCCC3100400A010CA9090408A905BC002FF4FCDC3CEC3230211121352111211521 +1121152111013FFEF901070316FDA201A0FE6001F4AA01C29DFEDBAAFE0C000100C9FE66 +04CC05D5001B0033400C12181C041D0C00061C03041C10FCFC3CDCCCC4FCCC3100400E12 +9511B0020095070206950381022FF4EC10D4EC10F4EC3001112311211521112132171615 +1110062B01353332373635113426230193CA03A1FD2901A1BA716DCCE44C3E8638377C7C +02C7FD3905D5AAFE467772EEFECEFEF2F4AA4B4BC201229F9E00000100BAFE56040B0460 +001D0033400C131908041F0C00060803461E10FCFC3CDCCCC4FCCC3100400E13A912BD01 +00A9070106A903BC012FF4EC10D4EC10FCEC300111231121152111332017161511140706 +2B0135333237363511342726230172B80316FDA2FA010746525251B5C1AC6E2126263186 +01E7FE190460AAFEC14751E5FEF2D660609C3037930108AA202900010028FEBF089105D5 +0017000001331101330901331123112309011123110901230901330103EACA02AAF5FDDF +01D788C529FE13FEFECAFEFEFE13D30244FDDFF502AA05D5FD1E02E2FDB3FD22FE150141 +0301FEE9FE1601EA0117FCFF0388024DFD1E00010046FEE5070304600017000001331101 +3309013311231123010711231127012309013301033FB701E9D6FE6E01667AB821FE87BB +B7BBFE87C501CCFE6ED601E90460FDF2020EFE51FDE8FE4C011B0236C9FE93016DC9FDCA +02B101AFFDF2FFFF0087FE75049A05F01026007A3900120603AB00000000FFFF0085FE75 +03C8047C1026007ACE00120603CB00000000000100C9FEBF05B405D5000F000013331101 +210901331123112309011123C9CA02D20103FDBF01EDA0C545FDFAFEEFCA05D5FD1E02E2 +FDB2FD23FE1501410301FEE9FE16000100BAFEE504B30460000F00001333110133090133 +1123112301071123BAB70207E2FE5401778EB838FE73C5B70460FDF2020EFE4FFDEAFE4C +011B0235C8FE93000000000100C90000058605D500120000133311371133150121090123 +01112311071123C9CAAD6401C10103FDBF025FDCFDFA64ADCA05D5FD1EB10154EE01CBFD +B2FC790301FE250175B1FE160000000100BA000004910460001200001333113735331501 +3309012301112335071123BAB760650142E2FE5401E3CEFE736560B70460FDF261DD7601 +46FE4FFD510235FEC5D461FE9300000100210000058605D5001300001333153315231101 +210901230901112311233533C9CAA8A802D20103FDBF025FDCFDFAFEEFCAA8A805D5E090 +FE8E02E2FDB2FC790301FEE9FE16046590000001003D0000049106140013000013331521 +15211101330901230107112311233533BAB70164FE9C0207E2FE5401E3CEFE73C5B77D7D +06147A7DFD35020EFE4FFD510235C8FE93051D7D000000010032000006B205D5000D005F +400B080501040609011C0C000E10D4DCEC32D4C41139393100400E420DA0000809050204 +0300AF0A062F3CEC32173910EC304B535840160711060811050904060503110402110508 +09090409040907103C3C04ED1005ED070810ED0510ED5913211101210901230901112311 +2132028D02D20103FDBF025FDCFDFAFEEFCAFE3D05D5FD1E02E2FDB2FC790301FEE9FE16 +052B0001002A000005820460000D005F400B08050104060901080B000E10D4DCEC32D4C4 +1139393100400E420DA00008090502040300BC0A062F3CEC32173910EC304B5358401607 +1106081105090406050311040211050809090409040907103C3C04ED1005ED070810ED05 +10ED5913211101330901230107112311212A02380207E2FE5401E3CEFE73C5B7FE7F0460 +FDF2020EFE4FFD510235C8FE9303C6000000000100C9FEBF060405D5000F0036401A0C95 +02AD0400810695090E0A07950A0B031C05380D011C00041010FCEC32FCEC323CEC31002F +3CCCECE432FCEC30B2501101015D13331121113311331123112311211123C9CA02DECAC9 +C9CAFD22CA05D5FD9C0264FAD5FE15014102C7FD3900000100C1FEE505400460000F0031 +401A0DA9020400BC06A9090B0F11460C040807A90A050D010800461010FCEC32DC3CECEC +32EC31002F3CCCECE432DCEC3013331121113311331123112311211123C1B80257B8B8B8 +B8FDA9B80460FE3301CDFC39FE4C011B0204FDFC0000000100C90000081205D5000D002D +40180695040A9502AD0400810C080509031C07380B011C00040E10FCEC32FCEC32C43100 +2F3CE432FCEC10EC301333112111211521112311211123C9CA02DE03A1FD29CAFD22CA05 +D5FD9C0264AAFAD502C7FD390000000100C1000006E60460000D002B401606A9040BA902 +0400BC090D050A0408070B010800460E10FCEC32DCEC32C431002F3CE432DCEC10EC3013 +33112111211521112311211123C1B802570316FDA2B8FDA9B80460FE3301CDAAFC4A0204 +FDFC000100C9FE66087405D5001D0038400E1F0F1C131A031C0008041C07041E10FCECD4 +3CECDCCCFCCC3100400F1D950AAD02039507810613951406022F3CDCEC10F4EC10F4EC30 +0111231121112311211121321716151110062B0135333237363511342623053BCAFD22CA +047201A1BA716DCCE44C3E8638377C7C02C7FD39052BFAD505D5FD9C7772EEFECEFEF2F4 +AA4B4BC201229F9E0000000100C1FE5607210460001F0033400E210F08141B0308000804 +0807462010FCECD43CECDCCCFCCC3100400B1F0903A907BC02131502062F3CDCCC10F4EC +DCCC30011123112111231121113320171615111407062B01353332373635113427260704 +88B8FDA9B803C7FA010746525251B5C1AC6E212626318601E7FE1903C6FC3A0460FE1747 +51E5FEF2D660609C3037930108A4262E050000020073FFE306F705F1004100590000252E +0335343E0433321E0415140E02071E0133323637150E0123222E02270E01232224260235 +34123E0137150E0315141E02333236373E0335342E0423220E0415141E02042B396C5232 +132A446181534E7D61462D151A3F6A5126683B3E65332E783D265155572B42C379AAFEF4 +BC635BACF79D73AB70383C7BBE815280B13F5330140B1724303E26314833211207284254 +AE3189AAC46B428A837457323254707B7F3A53B4B2AA4A1A15131AA817120814231B2634 +74CF011DA8A00110CB7D0EA716669ACD7C7DDEA762196D3A868E91452F66635943282B47 +5B605F2662AB8E6E000000020071FFE30578047A003F0050000013343E0237150E031514 +1E02333236372E0335343E0233321E02151406071E0133323E0237150E03232226270E03 +23222E02053E0335342E0223220E021514714B8FD1865D8A5B2D32608A5827561C243F2F +1B2850744D4270502D5C5F23441E1B2D292A1811252D38253782431E4649471F87D4914C +0356222D1A0B162128121A2C2113022883D89C58039B064672985862A0723E0B11256778 +82405D9F7341396892599BF15E130A040A130F9D0A110C071C2C121B12095499D6B8265E +64632B4B69421F26486943F70000FFFF0073FE75052705F01027007A012D0000120603B5 +0000FFFF0071FE7503E7047B1027007A008F0000120603D500000001FFFAFEBF04E905D5 +000B002C400D0D0A40011C040B1C084005080C10C4DCECFC3CECFCC4310040090A069509 +81019503052FCCECF4EC323025331123112311213521152102D7C9C9CBFDEE04EFFDEEAA +FE150141052BAAAA00000001003CFEE5046D0460000B0028400A0D090108040B0806080C +10DCDCFC3CECDCCC310040090B07A908BC00A903052FCCECF4EC32302533112311231121 +3521152102AFB8B8B5FE420431FE4299FE4C011B03B6AAAA0000FFFFFFFC000004E705D5 +1206003C00000001003DFE56047F04600008006F40100408BC0209060300080304000803 +040910D44BB00A544BB008545B58B9000B004038594BB0145458B9000BFFC03859D4FC49 +3A111239310010CCE4323040190711080008061105060008000611060703030405110404 +03424B5358071005ED071008ED071008ED071005ED592225112311013309013302C5C3FE +3BC3015E015EC312FE4401BC044EFC94036C0001FFFC000004E705D50010000001211123 +1121352135013309013301152103DFFEF8CBFEF90107FDF0D9019E019BD9FDF001080173 +FE8D0173AAAA030EFD9A0266FCF2AA0000000001003DFE56047F04600010000009011521 +15211523352135213501330901047FFE460106FEFAC3FEEF0111FE3BC3015E015E0460FB +B258AABABAAA58044EFC94036C000001003DFEBF053B05D5000F00002533112311230901 +230901330901330104CB70C514FE5CFE59DA0215FE2FD901730175D9FE20AAFE15014102 +7BFD85031D02B8FDD5022BFD33000001003BFEE504790460000F00002533112311230901 +2309013309013301040871B821FEBAFEBAD901B3FE72D901290129D9FE6B99FE4C011B01 +B8FE48024A0216FE71018FFDDF000001FFFAFEBF074705D5000F0035401011059508021C +030A0D400F1C0C400A1010D4E4FCE410D4EC3CFCCC3100400B0F0A95020C810704009509 +2FEC32CCF43CEC32302521113311331123112111213521152102D602DECAC9C9FB8EFDEE +04EFFDEEAA052BFAD5FE150141052BAAAA0000010005FEE506420460000F0033400E1105 +A9020808030A0D0F080C0A1010DCC4FCC410D43CECFCCC3100400B0F0BA9020CBC070400 +A9092FEC32CCF43CEC3230252111331133112311211121352115210278025AB8B8B8FC39 +FE420431FE429903C7FC39FE4C011B03B6AAAA000000000100AFFEBF057C05D50014002E +400C01160406131C04140D1C0C1510DCECD43CEC32EC323100400B079511AD130C810095 +03052FCCECE432F4EC3025331123112311212227263511331114163321113304B3C9C9CB +FE5FBA716DC97C7C0178CBAAFE15014102C77772EE0137FED99F9E02640000010096FEE5 +04B8046000150046400C01174606140804150D080C1610DCECD43CEC32EC323100400A07 +A912140CBC00A903052FCCECE432D4ECB005B0072349B012B01423495258B10712B8FFC0 +B0021738593025331123112311212227263D013315141716332111330400B8B8B8FEA999 +665CB83435680129B899FE4C011B02095F56B8EAD3753B3B01BE000100AF000004B305D5 +0018000001232227263511331114163B0111331133113311231123112302823BBA716DC9 +7C7C1290D6CBCBD69002C77772EE0137FED99F9E0139FEC70264FA2B02C7FECF00000001 +0096000004000460001800000135331533113311231123152335232227263D0133151417 +1601F9A0AFB8B8AFA00899665CB8342B02A4C2C401BEFBA00209C4C45F56B8EAD3753B30 +0000000100AF000004B305D5000F0024400A11081C060C001C0F041010FCEC32D4ECCC31 +00B702950BAD0F81070E2F3CF4F4EC3001112132161511231134262321112311017A01A1 +BADEC97C7CFE88CB05D5FD9CE9EEFE66018A9F9EFD3905D50000FFFF00BA000004640614 +1206004B000000020014FFE3071405F00022002A004940112324090F241908330919181E +121D00182B10DC32DCEC10ECF4ECC41112393100401610A10FAE0C1E1808950024AD0C95 +1428950491148C2B10E4F4EC10ECF43CEC32CC10F4EC3001123736212017161321100021 +3236371506070623202726030627263D013315141716252126272620070601B22296BC01 +3A0143B5BB01FB70011201128BFC706F838492FEA2C5BC0AAA767AAA4B42014003AD1862 +82FE488061036D010AA7D2D2DBFE84FEF4FECE605FD7462424CDC2015501676BDF4C3EA0 +413902BF7CA4A47C00000002000FFFE30566047B0025002E006940112E26151D2608134B +0006120515120B002F10DC32ECDC400B000570307F05B030CF30055DEC10F4ECC4111239 +3100401A1326141E861D8819060B26A91419B9220014BB2AB90FB8228C2F10E4F4ECE4B2 +6F14015D3210EC10FC3CCC10F4B22F1D015DEC11123930012227263D0133151417163336 +3736213217161D0121161716333237363715060706232027260126272623220706070158 +9059609C30394A1A749200FFE28384FCB20C6667B76A64636268636E65FEF39C94034E02 +5253889A5D5C0E0204525AAC4631972126C582A19192FA5ABE64631A1A34AE2C14169C94 +0181975A5A57579E000000020014FE87071405F00007002D000001212627262007060712 +37362120171613211000213236371506070607112311242726030627263D013315141716 +028B03AD186282FE488061F12296BC013A0143B5BB01FB70011201128BFC706F836D77B2 +FEFDA0BC0AAA767AAA4B42036DBF7CA4A47CBF010AA7D2D2DBFE84FEF4FECE605FD74624 +1E05FEA3016320A6C3015401676BDF4C3EA0413900000002000FFEB70566047B00080031 +000001262726232207060F012227263D01331514171633363736213217161D0121161716 +3332373637150607060711231126272604AE025253889A5D5C0EC69059609C30394A1A74 +9200FFE28384FCB20C6667B76A64636268634F4AA6C27B940294975A5A57579E8F525AAC +4631972126C582A19192FA5ABE64631A1A34AE2C141004FED201331A7B94FFFF00C90000 +019305D51206002C0000FFFF002800000876076D1027171D065B0175120603AA0000FFFF +0046000006EF06481027029A01A80000120603CA0000000100C9FE66053505D5001C0000 +0133321716151110062B0135333237363511342623211123113311012102A98BBA716DCC +E44C3E8638377C7CFE88CACA029E010403717772EEFECEFEF2F4AA4B4BC201229F9EFD39 +05D5FD890277000100BFFE5604880460001E0000013320171615111407062B0135333237 +363511342726232111231133110133025E14010548525251B5C1AC6E2126262C8BFEFCB9 +B90225EB02774751E5FEF2D660609C3037930108A62429FE190460FE1D01E30000000001 +0036FE56060305D500140000212311211510030605353637121901211133150123053ACA +FE1B8462FE91D443750378C9FE9286052BD4FE18FEAAFD38A72EA801250235011AFAD5AA +FE560001002EFE56052B0460001400002533150123132311211510030605353637361135 +210473B8FEDE7BE5B8FE7B765EFECCB33B6202F59999FE5601AA03C786FE92FEFCCF1D99 +1B7FCF01A7D4000100C9FE66053B05D500140031400E0F08001C16040A3807031C050415 +10FCEC32FCECFC3CCC3100400B0E1004029508AD090681042FE432FCEC10DCCC30251121 +11231133112111331110062B0135333237360471FD22CACA02DECACEE34C3E8638376802 +5FFD3905D5FD9C0264FA93FEF2F4AA4B4B00000100C1FE56048804600015002F400D1008 +000817460A07030805461610FCEC32DCECFC3CCC3100400A0F110402A9080906BC042FF4 +3CDCEC10DCCC300511211123113311211133111407062B01353332373603D0FDA9B8B802 +57B85251B5C1AC6E2126140218FDFC0460FE3301CDFB8CD660609C303700000100C9FE56 +060405D5001000002123112111231133112111331133150123053BCAFD22CACA02DECAC9 +FE928602C7FD3905D5FD9C0264FAD5AAFE56000100C1FE56054004600010000021231121 +112311331121113311331501230488B8FDA9B8B80257B8B8FEDE7B0204FDFC0460FE3301 +CDFC3999FE56000100AFFEBF04B305D50014002F400D141C11010E1C16040F081C071510 +DCECD4ECFC3232EC3100400B02950CAD0E0781009513112FCCECE432F4EC302511212227 +2635113311141633211133112311231103E8FE5FBA716DC97C7C0178CBCBC9AA021D7772 +EE0137FED99F9E0264FA2BFEBF01EB00000000010096FEE50400046000150047400D1508 +12010F081746100808071610DCECD4ECFC3232EC3100400A02A90D0F07BC00A914122FCC +ECE432D4ECB012B0022349B00DB00F23495258B1020DB8FFC0B002173859302511212227 +263D0133151417163321113311231123110348FEA999665CB83435680129B8B8B8990170 +5F56B8EAD3753B3B01BEFBA0FEE501B40000000100C9FE5606E805D50011000025331501 +2301231101230111231121090121061FC9FE9286012BC5FE7FCBFE7FC4012D017D017F01 +2DAAAAFE5601AA051FFC000400FAE105D5FC0803F800000100C1FE560600046000110000 +2533150123132311012301112311210901210548B8FEDE7BE5B2FECBB8FECAB20106013E +013F01049999FE5601AA03B0FD2702D9FC500460FD1202EE0000FFFF00C1000001790614 +1206004F0000FFFF00100000056807921027029A00CE014A130603A400000012B4180008 +13072B310040056F006F08025D30FFFF007BFFE3042D061F1026029A4FD7130603C40000 +0008B422000819072B31FFFF001000000568074E122603A400001107171604BC01750014 +B40A120D05072B400930123F0D00120F0D045D310000FFFF007BFFE3042D0610122603C4 +00001106006A52000020B4142D280B072B40157F286F28502D5F28402D4F28302D3F2800 +2D0F280A5D31FFFF00080000074805D5120600880000FFFF007BFFE3076F047B120600A8 +0000FFFF00C90000048B076D1027171D04A10175130603A90000000740034000015D3100 +0000FFFF0071FFE3047F06481027029A00960000130603C90000000740037000015D3100 +0000FFFF0075FFE305D905F0120601510000FFFF0071FFE3047F047B1206021B0000FFFF +0075FFE305D9074E10271716052001751206046C0000FFFF0071FFE3047F06101026006A +54001206046D00000000FFFF002800000876074E1027171606510175120603AA0000FFFF +0046000006EF06101027006A019E0000120603CA0000FFFF0087FFE3049A074E10271716 +04870175120603AB0000FFFF0085FFE303C806101026006A3A00120603CB00000000FFFF +00A0FFC104F805D5120601790000FFFF0058FE4C042F0460120602540000FFFF00C90000 +053307311027007100F5013B120603AC0000FFFF00BA0000047905F5102700710092FFFF +120603CC0000FFFF00C900000533074E1027171604F50175120603AC0000FFFF00BA0000 +047906101027006A00920000120603CC0000FFFF0073FFE305D9074E122603B200001107 +1716052701750014B4031F1A09072B4009401F4F1A101F1F1A045D310000FFFF0071FFE3 +04750610122603D200001106006A73000014B4031F1A09072B4009401F4F1A301F3F1A04 +5D31FFFF0073FFE305D905F0120601610000FFFF0071FFE30475047B120602370000FFFF +0073FFE305D9074E1226047C00001007171605270175FFFF0071FFE3047506101226047D +00001006006A73000000FFFF006FFFE30523074E1027171604670175120603C10000FFFF +0071FFE303E706101026006AE200120603E100000000FFFF0023000004BD073110270071 +0072013B120603B70000FFFF003DFE56047F05F5102600715EFF120603D700000000FFFF +0023000004BD074E1027171604720175120603B70000FFFF003DFE56047F06101026006A +5E00120603D700000000FFFF0023000004BD076B1027171F04720175120603B70000FFFF +003DFE56047F06661026029F5E00120603D700000000FFFF00AF000004B3074E10271716 +04CC0175120603BB0000FFFF00960000040006101026006A5E00120603DB000000000001 +00C9FEBF046A05D500090023400A0B02069509041C01040A10FCFC3CECCCC43100B60495 +01810608002FCCCCF4EC3033112115211133112311C903A1FD29C9C905D5AAFB7FFE1501 +4100000100BAFEE503D0046000090023400A0B0206A909040801460A10FCFC3CECDCCC31 +00B604A901BC0608002FCCCCF4EC3033112115211133112311BA0316FDA2B8B80460AAFC +E3FE4C011B00FFFF00C900000646074E122603BF00001007171605B70175FFFF00BA0000 +059B0610122603DF00001007006A0108000000010047FE5604EF05D500190039400D190E +1B060A0C091C021504011A10DC3C3CCCFC3CCCCCC4DCCC3100400E14150E00010C950904 +08950581002FF4FCDC3CEC3210CCDCCC3021112135211121152111211521112115140706 +2B013533323635014EFEF9010703A1FD290223FDDD01694752BFFEE9694C0294AA0297AA +FE13AAFDEC94C8606E9C61AD000000010038FE56045504600019003B400E1B0609190E0A +0C0908021504011A10DC3CC4CCFC3CCCDCCC10DCCC3100400E14150E00010CA9090408A9 +05BC002FF4ECDC3CFC3C10CCDCCC30211121352111211521112115211121151407062B01 +3533323635013FFEF901070316FDA201A0FE60016E4652C0FEE96A4B01F4AA01C29DFEDB +AAFE8C94C8606E9C61AD0001003DFE66052A05D5001700002516070607062B0135333237 +363709012309013309013301052A01020F5366E44C3E8737280BFE5EFE59DA0215FE2FD9 +01730175D9FE201A0218BE627AAA4B35730278FD85031D02B8FDD5022BFD330000000001 +003BFE560464046000170000090216151407062B013532373E0135090123090133090104 +64FE6B016B1B4351C4C1C4194F35FEBDFEBAD901B3FE72D9012901290460FDDFFE172639 +CD61739C030A6D9801B4FE48024A0216FE71018F00000001003D0000053B05D500110000 +13330901330121152101230901230121352181D901730175D9FE4E0174FE9001CED9FE5C +FE59DA01D4FE8C019605D5FDD5022BFD7790FD44027BFD8502BC900000000001003B0000 +047904600011000009013309013301211521012309012301213501B7FEA9D901290129D9 +FEAA010DFEE0017ED9FEBAFEBAD9017FFEDF029401CCFE71018FFE3490FDFC01B8FE4802 +049000020091000004B405D5000A00150026400A170405141C0B0019101610DCECD4EC32 +EC31004009069514AD0B8105950C2FECE4F4EC3001141716332111212207060111212224 +35342433211101664F4EA30144FEBCA34E4F034EFDE8FBFEF00110FB014E01B78A434402 +2343440393FA2BDADDDEDA02660000020071000003F50460000A00160025400B18460515 +080B001211451710FCECD4EC32EC3100B706A9150BBC05A90C2FECE4D4EC300114171633 +21112122070601112122272610373633211101353E42810107FEF980433E02C0FE39D673 +747479D0010F014C5A2B2E01692E2A02B6FBA052520150525501C500000000020091FFE3 +074305D5000C00300039400E3204261C290D1B0C1C1D0519173110DCECD4EC3239D4ECEC +310040102208951301951AAD2D138C28BC1D813110ECECE432F4EC10EC32300121220706 +101716333237363513060706070623222726353424332111331114171633323736351133 +111407062322272603EAFEBCA34E4F4F5F81B44B56210C0E336A5E6EEE81880110FB014E +C93F3470693B3FCA6E68D7D9663102C94344FEEA505F6D7D9FFEDD1D1C6036318189CADE +DA0266FBEC8F5B4A4A4F9B029FFD5AE07F787839000000020071FFE306730460000D0030 +0038400F32462608290E0D1B081E051216453110FCECD4EC3239D4ECEC3100400E2209A9 +3101A91A2D128C281DBC3110ECCCE432D4EC10EC32300121220706151417163332373635 +130607062322272635343736332111331114171633323736351133111407062322272603 +3DFEF980433E41406A945C2D31435D5E88AC66657479D0010FB83E3C6A683C3EB86468CE +D3641F02022E2A5E5C3A396D349CFEF66C30316160A6AA525501C5FD619F504F4F529D01 +41FEB8EC737878250000000100C9FFE3070305F000370040400F392E1C2C060B191B2C00 +192312063810FCD4ECCCD4FCCC10ECCC310040131F05950627953212A113AE0F9517912D +328C3810E4CCF4ECF4EC10ECD4EC3930013427262B013533323736353427262322060735 +363736333217161514070607161716151417163332373635113311140706232227262726 +03AA5C5DA5AEB6954F4F51529853BE7273646559E686864747839152513F3470693B3FCA +6E68D7D966301C2101B2844A4BA63B3C70733D3E2426B42010106869B27C5556211F6262 +90805B4A4A4F9B029FFD5AE07F7878385061000100ABFFE30646047C00350047400E372E +122C0B121B2C00122306143610DCC4D4ECCCD4EC10ECCC31004013148613880FB917B836 +05A9063627B9328C2C3610CCF4EC10D4EC10F4FCB00C4B5158FC1BF459EC30013427262B +013533323736353427262322070607353E01333217161514070607161716151417163332 +3736351133111407062322272603134E4889949B7443444645774751506162AA4CC47172 +3C3C708140453E3D69683C3EB86468CEC770620138663833982C2D46402E2E0D0D1DA718 +184E4F8D5D40411819484F485844454F529D0141FEB8EC73787565000000000100C9FE56 +053C05F00029003A400D080D191D271C2B02192514062A10FCD4ECCCECD4FCCC31004012 +210795080014A115AE11951991279528BD002FECECF4ECF4EC10D4EC3930212311342726 +2B0135333237363534272623220607353637363332171615140706071617161511331123 +0473C95C5DA5AEB6954F4F51529853BE7273646559E68686474783915251C9C901B1854A +4BA63B3C70733D3E2426B42010106869B27C5556211F626192FEF9FDAC00000100ABFE56 +0483047C0029003F400C11122101122B0612290C1A2A10DCC4D4ECCCECD4EC310040111A +86198815B91DB8040BA90C00A902BD042FECECD4EC10F4FCB00C4B5158FC1BF459EC3025 +3311231123113427262B013533323736353427262322070607353E013332171615140706 +071617161503C8BBB8B84E4889949B7443444645774751506162AA4CC471723C3C707E43 +4599FDBD01AA0146583833982C2D46402E2E0D0D1DA718184E4F8D5D40411818494B6A00 +000000010036FFE307CA05D500210034400D23040B1C0A151C00161C211C2210D4D4ECD4 +ECD4FCEC3100400E16952181220595108C1C951B0A2210CC3CECF4EC10F4EC3001111417 +163332373635113311140706232227263511211510030605353637121901053A3F347069 +3B3FCA6E68D7D6696EFE1B8462FE91D4437505D5FBEC8F5B4A4A4F9B029FFD5AE07F7878 +7DE20371D4FE18FEAAFD38A72EA801250235011A00000001002EFFE306EE046000200034 +400D22460A08091408001508201B2110D4D4ECD4ECD4FCEC3100400E15A920BC2104A90F +8C1BA91A092110CC3CECF4EC10F4EC300111141633323736351133111407062322272635 +1121151003060535363736113504737A67683C3EB86468CEC77062FE7B765EFECCB33B62 +0460FD04578A4F529D0141FEB8EC737875657B028F86FE92FEFCCF1D991B7FCF01A7D400 +0000FFFF00C9FFE3082D05D5120601B80000000100C1FFE307030460001C0036400F1E46 +0A0809141C080015190818461D10FCEC32DCEC32D4FCEC3100400D15A91A1C18BC1704A9 +0F8C09172FCCF4EC10E432DCEC30011114163332373635113311140706232227263D0121 +1123113311211104887A67683C3EB86468CEC77062FDA9B8B802570460FD04578A4F529D +0141FEB8EC737875657BCCFDFC0460FE3301CD00000000010073FFE3058905F0001B0030 +400B1D0410191C1B141C0A101C10FCECDCECC4EC3100400E1695061A10950F12950D9106 +8C1C10E4F4ECD4FCCC10EC30011407060706232027261037362120171526212011102132 +363511330589642D897C97FE9BC4C0BFC501650127E1E1FEEAFDDB0225D77BCA01BAE07F +39211ED2CC02D0CDD28ED7BFFD9FFDA094A401F0000000010071FFE30446047B001B0030 +400B1D45061212140D1200451C10FCECD4ECC4EC3100400E10B9181307B90609B904B818 +8C1C10E4F4ECD4FCCC10EC30131037362132171526232207061017163332113533151406 +23202726719296010BD0BABEC4BD625A5A62BDE2B8C9E5FEFC958E022F010E9DA16EAA7C +7C72FE7C727C013EBEC5ECE7A69E0001FFFAFFE3056605D50019002F400C091C0B1B1840 +001C1740141A10D4E4FCE4CCDCEC3100400C0595101500951781108C0A1A10CCE4F4EC32 +10EC30011114171633323736351133111407062322272635112135211502D73F346F693B +3FCA6E68D7D6696EFDEE04EF052BFC968F5B4A4A4F9B029FFD5AE07F78787DE20371AAAA +000000010005FFE304F6046000190032400A0A080B1B18000815171A10D4DCFCCCCCDCEC +3100400C05A9108C1A0016A917BC0A1A10CCF4EC3210F4ECB2100A015D30011114171633 +323736351133111407062322272635112135211502783E3D69683C3EB86468CEC77062FE +42043103B6FDAE5646454F529D0141FEB8EC737875657B027EAAAA000000FFFF00A4FFE3 +047B05F0120601520000FFFF0085FFE303C8047C12060349000000010054FE66053A05D5 +0018002F400B0D1A04131C07141C06011910D4D4ECD4ECECCC3100400D0D950CBD191495 +0681019500191032ECF4EC10F4EC3033353637361135211110062B013533323736351121 +1510030654DD3A570378CDE34D3F863737FE1B6662AA30A3F60264FEFA93FEF2F4AA4B4C +C104C3B8FDCAFEF8FD000001004CFE56047304600018002F400B0D1A4613080714080601 +1910D4D4ECD4ECECCC3100400D0DA90CBD1914A906BC01A900191032ECF4EC10F4EC3033 +353637361135211114062B013533323736351121151007064CBB334402F5A3B54631612E +26FE7B585E991D7DA601D0B7FB8CD6C09C3029A103E16FFE50C2CF000000000100540000 +091C05D50017000033353637121135210901330901230901230901211510030654D93E57 +037901730175D9FE200200D9FE5CFE59DA0215FEA0FDB86662AA2FA401020258FEFDD502 +2BFD33FCF8027BFD85031D020EB8FDCAFEF8FD0000000001004C000007B2046000180000 +090223090123090121151007060535363736113521170901079DFE6B01AAD9FEBAFEBAD9 +01B3FEDFFE30585EFECCB6384402F501012701290460FDDFFDC101B8FE48024A01836FFE +50C2CF1D991C7EB101C5B703FE74018F0000000200C9000006E805D50008001A00000111 +333236353426230106212311231121320415140701330901230193FE8D9A9A8D01957FFE +EAFECA01C8FB0101060168D9FE200200D9052FFDCF92878692FDB38AFDA805D5E3DB302A +0218FD33FCF8000200BAFE5606A8047B0018002000000902230106070623222627112311 +33153E0133321716170100102620061016200693FE6B01AAD9FECB1A5C7FCC7BB13AB9B9 +3AB17BCC7F541D0125FE2BA7FEDCA7A701240460FDDFFDC101A1A874A26164FDAE060AAA +6461A26B970189FD040196E7E7FE6AE7000000020088000007BC05D50015001D00003301 +2624353424290115211121152111211521112101121016332111212288019864FF000104 +010204E8FD1C02C5FD3B02F6FC3EFEF4FE763795920138FEC892028D1AA9D7CEE0AAFE46 +AAFDE3AA0277FD8904AAFEFA87021200000000030074FFE30777047B001F0026002F0000 +0115211E0133323637150E012320272627230123012E01353436332136333200072E0123 +2206072514163B01112322060777FCB20CCDB76AC76263D06BFEF49D9804E5FEB6C60156 +749AD7D902655667E20107B802A5889AB90EFD4B8077F8F87780025E5ABEC73434AE2A2C +9C98C2FE2701EB1A898FA2A11BFEDDC497B4AE9E8A535E01615CFFFF0073FEF805D905F0 +100600340000FFFF0071FE56045A047B100600540000FFFF0044000007A605D51006003A +0000FFFF00560000063504601006005A0000000100C90000058605D50014000001331737 +2101172327070123090111231133110127026A8797DD0103FEA3C88E809E025FDCFDFAFE +EFCACA01AFDB058A97E2FE9BC880A1FC790301FEE9FE1605D5FD1E01B8DC000100BA0000 +0491046000130000013317373307172327070123010711231133110102358C4176E2E693 +8E4C7F01E3CEFE73C5B7B7014B04294077E9934C81FD510235C8FE930460FDF201500001 +0054FE66087305D500250039400E0E1C271319201C1D07211C06012610D4D4ECD43CECDC +C4CCEC3100400F1395121D95082195068112BD08001F2F3CCCECF4EC10EC10EC30333536 +37121135211121321716151110062B013533323736351134262321112311211510030654 +D93E57037801A1BA716DCCE44C3E8638377C7CFE88CAFE1B6662AA2FA401020258FEFD9C +7772EEFECEFEF2F4AA4B4BC201229F9EFD39052BB8FDCAFEF8FD0001004CFE56070C0460 +00270039400E0E0829141A22081F07230806012810D4D4ECD43CECDCC4CCEC3100400F14 +A9131FA90823A906BC13BD0800212F3CCCECF4EC10EC10EC303335363736113521113320 +171615111407062B0135333237363511342726232111231121151007064CB6384402F5FA +010746525251B5C1AC6E2126262C8BFEFCB8FE7B585E991C7EB101C5B7FE174751E5FEF2 +D561609C3037930108A62429FE1903CD6FFE50C2CF00000100C9FE66087405D50021003F +4011100C1C23171D031C1B05381F011C00042210FCEC32FC3CEC32D4CCECCC3100401012 +9510BD1C1B1E950602AD040081201C2F3CE432FC3CEC3210FCEC30133311211133112132 +1716151110062B013533323736351134262321112311211123C9CA02DECA01A1BA716DCC +E44C3E8638377C7CFE88CAFD22CA05D5FD9C0264FD9C7772EEFECEFEF2F4AA4B4BC20122 +9F9EFD3902C7FD390000000100BAFE56071A04600023004040100C082512182004081D05 +21010800462410FCEC32DC3CEC32DCC4CCEC3100401112A9111DA90621A9020400BC1F11 +BD06232FCCEC3CE432DCEC10EC10EC30133311211133113320171615111407062B013533 +32373635113427262321112311211123BAB90255B9FA010746525251B5C1AC6E2126262C +8BFEFCB9FDABB90460FE3701C9FE174751E5FEF2D561609C3037930108A62429FE190204 +FDFC000100C9FEBF060405D5000B00002111211123112111331123110471FD22CA0472C9 +C9052BFAD505D5FAD5FE15014100000100BAFEE505390460000B00000111331123112311 +211123110481B8B8B9FDABB90460FC39FE4C011B03CDFC330460000100B2FFC4057005D5 +00230000011E01173635113311140716170726270E0123200019013311141E0233323637 +2E0127038827552E2CCB614F5946716C45AF6BFEEBFED9CB2A598C623F6629365E2601E3 +345A2965B9038BFC5CE59033279E34482E2F0129012503A4FC7578AB6D3312142D603400 +0000000100B20000053305F2001900003311100021200011152335342E0223220E021511 +21152111B20122011801190124CB2B5A8B60628B5A2A03B6FC4A03A401250129FED9FED9 +392079AB6D32326DAB79FEE7AFFE3D0000000002005D000005D505F20013002300000133 +152311231121222E02343E02332000110311342E0223220E02141E023304DBFAFACBFE91 +8BD8944D4D94D88C01170122CB2A5A8A60698F56252C5B8B5F0272AFFE3D01C3508EC4E8 +C58F51FED6FEDCFECE011979AB6D323A64889E845F350001005A000005CB05F200190000 +2111342E0223220E021D012335100021200019013315231104062A5A8C61608B5A2BCB01 +24011901180122FAFA038B79AB6D32326DAB79203901270127FED7FEDBFECEAFFE3D0001 +00B2FFE3053305D500190000011121152111141E0233323E023D01331510002120001901 +017D03B6FC4A2A5A8B62608B5A2BCBFEDCFEE7FEE8FEDE05D5FE8BAFFE9979AB6D32326D +AB792039FED9FED90129012503A4000100B20000058A05F30029000001140E0407211521 +11331533323E0435342E02220E021D012335343E02201E02058A33546D716E2C01E4FB64 +CB563D999D97754730669EDC9C632ECB4C99E50132EB9F52038167B4997C5D3D0DAA014C +A22B537BA2C77567AB794340709756474B79D29A585AA5E70000000100BC000004ED05D5 +0009000025211521113311211521018702DBFC5ACB0366FC9AAFAF05D5FE8BAF00000001 +00B20000053305F2001700003311100021200011152335342E0223220E0215112115B201 +22011801190124CB2B5A8B60628B5A2A03B603A401250129FED9FED9392079AB6D32326D +AB79FD24AF00000200B2FFE306AE05F200290038000000220E0215112311343E02201E02 +1D0133152311140E0223222E02343E023B0135342E0100141E02323E02351123220E0103 +C3F0AF7136CB5BABF60136F6AB5BCECE4274A15E5F9F744144759F5BEA356FFEC8254158 +68563E22EA395A3E054E326DAB79FC7503A493DD944A4A94DD9334AFFED76BA36E393A73 +AFEAA86C33187AAD6DFCE1A870421C1B416B500123193F0000000002005DFFE305D505D5 +00150023000001140E0223222E02343E02332111331133152321220E02141E0233323635 +1104DB4990D58B8CD8944D4D94D88B016FCBFAFAFDC55F8B5B2C25568F69C0AE025792E9 +A2575D9DD1E8D09E5C0175FE8BAF426E909E947345F7F2014100000100BC0000053305D5 +001800001333113E0133321E021D012335342E02220E02151123BCCB3FBC768AD4924BCB +2B5A8BC08B5B2BCB05D5FE094D494893DD964B3279AB6D32326CAC79FDF3000100BC0000 +044405D500050000011121152111018702BDFC7805D5FADAAF05D5000000000100BCFFE3 +06CB05D5001D00000111141E02323E0235113311140E02222E02351121112311331103CA +36546660625133CB4880B0D2B3844BFE88CBCB0460FD314B663E1B1B3E664B02CFFD4977 +AB6F35356FAB770208FC4F05D5FE8B00000000020108FFE6061A05F0002B003E00000133 +15333E0333321E0217152E032322060716041E0115140E0423222E02353436372313141E +0233323E0235342E01242B010E01010CCB4E4299A3A8523C6458542D356A655C2761B34F +9B0111CC76274C6F93B46A9FEFA1504C438BCB2A65A67D7CAC6A2F429FFEF6C81D4C5705 +D5F53F65472509121B12D7232F1C0B39340959A1E899539D8B75542F63AEED8980E765FE +345FAF85504C7FA85C60AE844E61EB000000000100B20000052905D5001800002123110E +0123222E0235113311141E02323E023D01330529CB45B6768AD4924BCB2B5A8BC08B5B2B +CB01E33F434893DD960226FDF379AB6D32326CAB7A9800010046FFCA051A05D500190000 +2515012E033E01373624370333010E03070E021617051AFC163E673F0B3B8B779B0138A4 +CFEE010371CBC1BB60675F0D382F98CE014013394C60758A5068A647012FFE892B58616D +40455C3E260F000200A8FFD0058005F300350043000013343E02333216173E0335342E02 +220E021D012335343E02201E0215140E02071E0117072E01270E0123222E0225220E0215 +1416333236372E01B73B65844878ED7628412F1A2F649FE09D622CCB4E9AE5012CEBA054 +223F5736386D3888366F386EF97E4784663D016C213F311D585856B0515EAF010949724E +28605032737C864667AE7D4640709756474B79D29A5858A3E79056A59C8E3F2D5F338E34 +65305964244B71DC13243320414F4840425000010064000005D505F20017000025331521 +11342E0223220E021D01233510002120001104DBFAFE3B2B5A8C61628B5929CB0120011C +011A0121AFAF038B79AB6D32346DAB77203901270127FED6FEDC00020069000005B905E2 +001A0024000001220E0207011521222E023E01373E01370133133E0333010E011E013321 +010E0105262D707C85430274FBC4426E4B2314514D43A159FEE4F3BC509F968838FC9150 +440E594D02F4FDEA4781052923405B39FC72A420456C99C87E6DC9580197FEEE426B4A28 +FC7E85A9602302FB4AA6000100B2FFE3062305D500170000011110002120001901331114 +1E0233323E02351121150529FEDFFEE6FEE4FEE0CB2A598C62618C592A01C50526FD0BFE +DDFED50127012703A4FC7578AB6D33336DAB78038BAF00010092FFE3055905F100370000 +01140E02202E023533141E0233323E0235342623213521323E0235342620061523343E02 +321E0215140E02071E0305594D99E6FECEE5984CCB2B609B71709B5E2ACAC9FDB0025051 +774D259FFECAA0CB4A88BFEAC0894C2540542E4475573201BC67AD7E474A82AF65417257 +323256703E807FAF27435C357671727B5F9567363566935D3B68533C0F113F5B76000001 +0000FFE3057105D5001700000111141E0233323E023D01331510002120001901233501C5 +295A8C63628B5929CBFEDFFEE5FEE6FEDFFA05D5FC7578AB6D33336EAA782039FEDCFED6 +012D012102F4B0000000000100A0FFE2057905D5002E0000012E012B0135333216170115 +252E0123220E0215141633323E023D013315140E0223222E0235343E02370264388A558D +DB6AA247026BFE961A402A6FBA874BD0D3699B6532CB529CE49192E9A3584E8ABD6F0500 +1912AA181EFEFED4940B0D4886C079F0F83C6D985C474B80D3975356A5F29C7ED7A56B13 +0000000100B20000052905F2001500003311100021200019012311342E0223220E021511 +B20120011C011A0121CB2B5A8B60628B5A2A03A401270127FED6FEDCFC5C038B79AB6D32 +326DAB79FC7500010078FFC6055005F3002500002517150135171E0133323E0235342623 +220E021D012335343E02201E0215140E02034DC3FCFBED1A4A2A72BB8449D2D0689B6632 +CB529CE30124E9A3574B89BDE955CE0145D4670B0D5694C671DFEF3C6D985C474B80D397 +5353A0E99674DEB67D000001005A000005B505F2001C0000011123110E031D012335343E +023332041E0115112311342E020367CB568B6234CB66B6F8939D00FFB563CB38668E0547 +FC94036C0C497095582A3982D99C57579CD982FC5C03954F95764F000000000200A80000 +057D05F30022003B000001222E0435263E0233321E0215140E0207211521113315333236 +37362625342E0223220E02171E0333321E02073E0302125678502E1707034F9CE593A0EC +9C4D4C85B76C01D9FB64CB4E51C35F28A201D530659E6F6B9E652E0603122B4B3B79B16D +27112B48351D029B2339474740156BC294585EA7E58879DDBC9431AA014CA23F3DB2C3E6 +64AA7B453964874D2637251240729C5B2D6A78870000000100B20000062305F200190000 +2111342E0223220E02151123111000212000190133152311045E2A5A8C61608B5A2BCB01 +24011901180122FAFA038B79AB6D32326DAB79FC7503A401270127FED7FEDBFECEAFFE3D +0000FFFF00B2FFE3052905D512060038000000010064000005D505D5001A00002901110E +0123222E023D013315141E02323E02351133113305D5FE3B41BA768AD4924BCB2B5A8BC0 +8B5B2BCBFA01F3484A4893DD96B19879AB6D32326CAB7A020DFADA00000000010096FFE3 +050E05EE003D00001333141E0233323E0235342E02272E0527263E02321E0215232E0323 +220E02171E03171E0315140E02202E0296CB356087525088643836618954437F715F4628 +02024987BFEAC38D4ECB03274E7A564F784F240404264B715088D5944E5296D5FEFCD295 +5001C344745430204469493A553D280D0A1E2D3F58734B5A9A72403D6C91542C54422927 +465F37324935250D174269996E66A4733D4B82AF0000000100B20000052905F200150000 +3311100021200011152335342E0223220E021511B20122011601170128CB2C5C8C60628A +582903A401250129FEDDFED5392079AB6D32326DAB79FC750000000200A0FFE3056705F1 +00310040000001140E02202E023533141E0233323E02353426232135332E0335343E0232 +1E0215140E02071E0301323E02353426200615141E0205674D99E6FECEE5984CCB2B609B +71709B5E2ACAC9FDB0E0203728174A88BFEAC0894C2540542E44755732FD9B51774D259F +FECAA018447C01BC67AD7E474A82AF65417257323256703E807FAF11323F4A295F956736 +3566935D3B68533C0F113F5B76016727435C357673747B26554A30000000000100BC0000 +044D05D5000700000111211521112311018702C6FD3ACB05D5FE8BAFFC4F05D500000003 +00780000060405D50005000F00270000010E01101617333E03342E0227032E03103E0237 +3533151E03100E0207152302D7C1D1D1C1CB5D9568383868955DCB87E0A05858A0E087CB +87E0A15A5AA1E087CB048E07D9FE76D807043B6B98C4996C3B03FC10065496D5010CD698 +54059F9F055498D6FEF4D59854059D000000000200320000056E05F2001B002B00000122 +2E02271121152115233523353311100021321E02140E0200141E02323E02342E02220E01 +032A3E6E5E4B1A0398FC68CBBEBE012201178BD9944D4D94D8FE0624568DD28E55252657 +8ED08C5601D71525341EFEE6AF9A9AAF0265012401204E8BC2E8C18A4D025A9C815C3232 +5B819E85613637610000FFFF0073FFE305D905F01206003200000003006EFFE605F805D5 +001F00290033000000140E010420242E013D013315141E021711222E023534363B011132 +1E012511220E02141E0200342E0223113E0205F864BAFEF9FEBAFEFAB762CB3C6B945777 +AF7338EDEFC085E0A2FD2E4F663C17173C6602AC3869955C5A95690284FEC98C4B4D8EC8 +7C272756875D340402E62A5070479992FE514B8DD8010B1021334632200FFD8AAA896033 +FD1D04345F000001007503EF01870614000E000001222726343736331522061514163301 +8773504F4F50734058584003EF5050E64F507B583F4058000000000100B203FE01D705D5 +000500000133150323130104D3A4815205D598FEC1013F0000000001000004F501DF066D +00030000013301230118C7FEBA99066DFE880001000504F102D9072500150000010E0315 +23343E02373E033533140E02016F3A5A3D1F7A335E8653425B391A7A2E5A8805C3052439 +4828407B623F060425394828477B5E3B0000FFFFFFFF04F001DE066610070043FF550000 +00000001000804E8033506ED002900001323263E0233321E0215140E0223222E0227331E +0333323E0235342E0227260E02756D01477EAE663F7A603C203D5B3C274F433107860313 +1B1E0E1A26190C1C3042264A85653B04F079BE824422466E4C30523E23132B47330F1812 +09131E2512273C2A1803062E63930001005A04F103B20614000500001311331521155A8C +02CC04F10123A97A0000000100AEFFE407110460002A0000250E0123222E023511331114 +1E0233323E0235113311141633323E023511331123350E0123222603A245BF8357885D31 +B91C3A563B4772512BB971784672502BB9B93FB0797CA8D67E743F78B07102A4FD4E5171 +4820315C8352027AFD62A39B325D8251027AFBA0AE69617A0000000100BAFE560464047B +00160000013510232206151121152111231133153E013332161D0103ACF895AC02F1FD0F +B9B942B276C2C501C2DC013DBEA4FE27A0FE56060AAE6663EEE9E200000000020071FE56 +052F047B00100028000000141E02323E0235342E02220E010123110E0123222E02103E02 +33321617353311331523012F2B51749275512B2C51749274510300B83AB07D66A8794343 +79A8667DB03AB8D5D50294CAA1703C3C70A16564A1713C3C70FB2102526461559BD90106 +D99B556164AAFC40A000000100BAFE56053A047B00160000211123111023220615112311 +33153E01333216151133150465B9F895ACB9B942B276C2C6D5FE560448013DBEA4FD8704 +60AE6663EEE9FDFCA000000100AEFFE304620614001A0000131133112115211114171633 +3237363D01331123350E0123222726AEB802FCFD043E3D7D985456B8B843B076C1646401 +BA045AFE4CA0FE019F504F5F62A1EBFD30AC6762787700020071FE56052F047B0015002D +000001331521110E0123222E02103E0233321617353301141E0233323E0435342E022322 +0E04045AD5FE733AB07D66A879434379A8667DB03AB8FCD5214978573C5D46301E0D214B +77573C5D45301E0DFEF6A002526461559BD90106D99B556164AAFDCF4E9C7B4D25415561 +66304E9B7C4D2640566066000000000100BA000003EC0614000900002901113311211521 +11210397FD23B8027AFD8602250614FE4CA0FCE00000000100BAFE560464047B00140000 +21111023220615112115211133153E01333216151103ACF895AC02F1FC56B942B276C2C5 +029E013DBEA4FC7DA0060AAE6663EEE9FD5C000200BAFE5605E8047B002C003C00000121 +342E0223220E021511231133153E0333321E04153315230E0323222E02343E020521220E +0215141E0233323E02036601314876974F528C673BB9B92A636D763D44887E6D512E9296 +1260819446487F6038375A730166FED61A322818172B402919515144022F64A1703D295A +8E65FBEB060AAA3C4C2C11274868839B57A071A1693124496E946F4925A00F2133241D31 +2615173D690000020071FFE3052F06140010002600000121220E0215141E0233323E0235 +1311140E02222E0235343E023321113311331503A2FEC64974512B2B51744951764D26B8 +427FBAF2BB7F42407FBB7B013CB8D503C03566956165A1703C3C71A0650191FE3972C390 +51569BD88371CB9A5B01B4FE4CA0000100BAFE5604640614001200000111231110232206 +1511231133113E013332160464B8F895ACB9B942B276C2C502A4FD5C029E013DBEA4FBDD +07BEFD9E6663EE000000000100BAFE56026C0460000500000133152111330172FAFE4EB8 +FEF6A0060A00000100BAFE56071D0614002A00000115141633323E023511331123350E01 +23222E0235111023220E021511231133113E03333216044871784672502BB9B93FB0793D +816B44F74B6E4824B9B9134157683BC3C402A4E2A39B325D8251027AFBA0AE69612965A9 +810102013D325C8351FBDD07BEFD9E27493722EC000000020071FFE3047406140018002D +000001133307052115231E0115140E02222E0235343E023703141E0233323E0235342E02 +2723220E020106C2D4A4014201377D433D4483C0F6C082443E6F9A5BE1285177504F7850 +28122B4734874E785129050A010AE2D2A04ED7847ACE97555597CE7A78C6945E10FDC053 +956F41416F95534D7763562C45759A000000000100AEFE56045806140013000013113311 +10333237363511331123110E01232226AEB8F8955657B8B843B076C2C701BA045AFBADFE +C25F5EA5027BF9F602566762EF00FFFF00BA0000046406141206004B00000002006AFFE2 +04300614002D0042000001150E01071612151123350E0323222E02373E03372E0335343F +0133070E0107061E02373E0101141E0233323E023D01342E02270E03033C1A341AA9B3B8 +1B485C7043629C6A3703023E6D9A5E445D3B1A2224C72A130F01022E4757281B39FE0A21 +4365444D78522B1E4570513D6C5230052CB110201264FEE5B9FDFFAC2D4A361D4278AA69 +60B7ADA34B0A344753294435393F1D3B172D3F2202111222FCA04573532D375D7B445635 +777568263275879A0000000100BAFE560539047B00140000011521111023220615112311 +33153E0133321615110539FE73F895ACB9B942B276C2C5FEF6A00448013DBEA4FD870460 +AE6663EEE9FC520000000002008CFFE3045A06240028003E00001335333E033332161715 +2623220E020733321E02151123350E0323222E0227261237131E0333323E023D01342E02 +2B010E038CC4378DA7C16B192D163432477F72622A0377D19C5AB818465C744566976635 +0305363856062D4961384673532E2A629F75471D2A1B0A03B6AA60A57A450604BD1D2A4B +683D4C8AC277FDAFAE2C4A361F41729B5A83011D8BFDFD5875461D335B7C496840866D45 +4187847E0000000100AEFFE3052D061400160000131133111033323E0235112115231123 +350E01232226AEB8F84B77532D018DD5B843B076C3C601BA02A6FD61FEC2325C8351042F +A0FA8CAC6762EE0000000001FFD4FE5601720460000B000013331114062B013533323635 +BAB8A3B54631694C0460FB8CD6C09C6199000001FFD9FFE3045806140016000003211110 +33323E023511331123350E0123222635112327018DF84B77532DB8B843B076C3C6D50614 +FBADFEC2325C8351027BFBA0AC6762EEE903BA00000000010000FE56037B047B00310000 +17141E0233211521222E0235343E0635342E0223220607353E0333321E0215140E06C104 +0A14110250FD742A44301A3C627D837D623C2D5273475B9A4E264A4F593573B881453C62 +7E827E623CD908110F09A01B2F3F24316A71767C7F83854348694421262AAE0E170F0835 +6CA26D4B9590877C6F5E4A000000FFFF00BA00000464047B1206005100000001000AFE56 +02F604600031000013211521222E0235343E04372E0335343E0237330E0315141E02373E +0137070E0315141E02FC01FAFDD624463721233C53606A352F6E5F3F0B203B30E73B4D2C +11263F522D1942230166A97942040B11FEF6A0162E462F3A878E90897D330220446B4C1E +3F464D2C2548433E1A3044280E05031512B759CBC8B8450C1A140D000000000100AEFE56 +07110460002A0000250E0123222E0235113311141E0233323E0235113311141633323E02 +3511331123110E0123222603A245BF8357885D31B91C3A563B4772512BB971784672502B +B9B93FB0797CA8D67E743F78B07102A4FD4E51714820315C8352027AFD62A39B325D8251 +027AF9F6025869617A000002006EFE5603F4047C002C0044000001140E06151416332115 +21222E02353436373E03272E0535343E0233321E0225220E0215141E041514073E033534 +2E0203F43C627E837E623C1F150250FD742643311D52481923140406082A363B31204978 +9A506EB07B42FE252B56442A1F2E372E1F323C826C45284B6A02D24E9991897D6E5D4919 +171AA0192B392042904919444C4F242F524B484D54324F8660363A6E9EAA1A344D332142 +44484C532C514F3A7E848A48456948240000000100BA000004E0047B0024000001220E02 +1511231133153E0133321E0215140E0207211521353E0335342E0202C14F7C562DB9B93F +BD7963A2743F213D56350129FDFD3F60422223476C03DB345A7A46FD730460AC6166467D +AE67538B7B7139A084346D798A5049816138FFFF00AEFFE30458047B1206005800000001 +00AEFE56052D061400160000131133111033323E0235113311331521110E01232226AEB8 +F84B77532DB8D5FE7343B076C3C601BA02A6FD61FEC2325C8351042FF8E2A002566762EE +0000000100AEFFE3071C047B00270000011133153E03333216151123111023220E021511 +23350E01232226351133111033323E02038FB8214F575B2CC3C4B8F83C6B502EB843B164 +C3C6B8F83F6F533001E5027BAE334B3219ECEBFD5C029E013D325C8351FD87AC6762EEE9 +02A6FD61FEC22F5B8400000100BAFE560464047B00140000011123111023220E02151123 +1133153E013332160464B8F84B77532CB9B942B276C3C402A4FD5C029E013D325C8351FB +DD060AAE6762EC000000FFFF006FFE560458047B1006004AFE00000100BA000003980460 +0005000025211521113301720226FD22B8A0A0046000000100AEFE56071C061400270000 +011133113E03333216151123111023220E02151123110E01232226351133111033323E02 +038FB8214F575B2CC3C4B8F8396A5131B843B164C3C6B8F83F6F533001E5042FFD9E334B +3219ECEBFD5C029E013D2F5A8455FBDD02566762EEE902A6FD61FEC22F5B840000000002 +0029FE5604A4047B001B002C000025112115211523352335331133153E0133321E02100E +0223222601342E02220E02141E02323E0201730315FCEBB99191B93AB07C66A87A43437A +A8667CB002382B51749274512B2B51749275502BA8FEA89B5F5F9B0510AA6461569BD8FE +FAD89B566101EB64A1703D3C70A1CAA1703C3C71A000FFFF006FFFE30473047B10060052 +FE0000030046FE56062106140027002E0038000000100E0223112311222E043D01331514 +1E023311222E0235343E023B0111321E012511220615141600342E022311323E01062167 +B4F38BB857A491785630B45083A95A629C6F3B3B6F9C62B88EF3B2FD157D747B030A457D +B06A6AB07D02C7FEF8D69752FE5601AA2749678095535D5657987242031A2B4F6E434870 +4D27FE4C4689CF01264F48424DFD80C08F5F2FFCE6396B000000000100AEFFE3067E0614 +0016000025211521350E01232226351133111033323E0237113304580226FD2243B076C3 +C6B8F84975542E02B8A0A0AC6762EEE9045AFBADFEC22F587D4D028C0000000200F00000 +01C303520003000700003733152311331523F0D3D3D3D3FEFE0352FE00000001006401B2 +027F0283000600001304251506242764010F010C88FEF58802835A5AA42D012C00000002 +0244FE4302DAFFD300030007001CB4040305010910DC3CCC323100B60602000402000810 +DCDCDC493A3005331523153315230244969696962D9664960000FFFF00ABFE430382FFD3 +1027051000A8000011070516FEE400000013B0104B5258BB000000040004004038103C31 +5900000300FFFE4303A2FFD300030007000B0025B60003080409050D10DC3CDC3CDCCC31 +0040090A060408060304010C10DC3CDC3CDC493A3005352115373315231533152300FF01 +907D96969696C396969696649600000300FFFE4303A2FFD300030007000F002E40090C0B +080F040005011110DC3CDC3CDCDCDCCC3100400B070200050A02080B000D1010DC3CDC3C +3CCCDC493A3005331523153315232715233523352115030C96969696FA967D01902D9664 +96FAC8C8969600010244FEBB02DAFF5100030010B502000400010510DCCC310010DCCC30 +0533152302449696AF96FFFF01C7FEBB0357FF51102605147D00110605148300000FB200 +0005495358B90000004038593100000301C7FE430357FFD300030007000B004F4009040B +0A0500010B0A0D10D4CCDCCCDC493A31B2000805495358410C000B000A00090008004000 +040007000600050004FFC000041738173859004009030B08000B0708040C10DC3CDC3CDC +493A30013315230333152337331523024496967D9696FA9696FED9960190969696000001 +0163FEBB03BBFF5100030010B502000400020510DCCC310010DCCC300521152101630258 +FDA8AF96000000010163FE7503BBFFA100070019B4050200060910DCDCDCCC3100B40100 +03050810DCDC3CCC30051523352335211502DA96E10258F5969696960000000100000500 +0096059600030010B501030401030410D4CC310010DCCC3011331523969605969600FFFF +0000050000960596100605190000FFFF012FFE1B03B9FFDD1027051400DFFF6010260514 +E5F611070514FEEB008C003DB2000A04495358B9000AFFC03859B300040A0510493A3100 +B200090C495358B90009FFC03859B2000409495358B90004FFC03859B30004090410493A +30000001024E01E502E4027B00030010B501030403010510D4CC310010DCCC3001331523 +024E9696027B9600000000010244FE4302DAFFD300030010B502000400020510DCCC3100 +10DCCC3005331123024496962DFE700000000001006403C6027F046A0003000013211521 +64021BFDE5046AA4000000010163050003BB059600030010B501030403010510D4CC3100 +10DCCC300121152101630258FDA805969600000100D1FF38018B05280003001CB4050208 +000410D4ECCC3100B201020410CCCC30B44005500502015D13331123D1BABA0528FA1000 +000000010519050005AF059600030010B501030401030410D4CC310010DCCC3001331523 +05199696059696000000000100C50500015B059600030010B501030401030410D4CC3100 +10DCCC3013331523C59696059696000200D10000018B0460000300070023B60902060800 +040810D432EC32CC3100B40301BC05072FCCF4CC30B44009500902015D13331523113315 +23D1BABABABA0460CAFD34CA000000010066000002DC0460000D001DB60F050C09080D0E +10D4ECD4CCCC3100B605A904BC0AA90C2FECF4EC301310363B0115232206151121152166 +CDE39294866E01BCFD8A025E010EF48F96C2FE168F0000010163FE4303BBFFD300070019 +B4050200060910DCDCDCCC3100B4010003050810DCDC3CCC30051523352335211502DA96 +E10258C3FAFA96960000000100BA0000049F04600027006FB729461F081E010802B71608 +150A080B462810FCECD4FCDCB77F027F026F025F02B23F02055DECD44BB01D5358B9001E +FFC03859FCFCB74A033A0329037A03B24403055D4BB00A5158B90029FFC038593100B41F +16BC0A012F2FFCC4B73A003A03551D5B09B665176A037909075D30090123010E04151123 +35343E05370133013E0435113315140E050380011DD9FE601C2338211AB8141F322D412C +1FFEE4D901A01B2338221AB8141F322E402C019BFE6502580E1535416E45FEF4B9518A60 +51322C150D019BFDA80D1536416E45010CB952896151312C150000010058000004480460 +00150036B7171311080008151610DCD4DCFCDCDCB4740A6F07025D314BB00A5158B90017 +FFC0385900B708A909BC11A915A9B0142FECECFCEC302511342E0323213521321E031511 +3315213502E80B26457957FEB6014A7BB174451BA6FC108F01CF4B63663A258F2E558BA6 +72FE558F8F0000010058FFF603110460001F003FB7210308040008161BB10D2010DCD4D4 +ECDCECCCB4741D5C10025D4BB00F514BB00D535A587DB0062F18593100B71BA91CBC2010 +A90BB0032F2FEC10FCEC30011412172326270E03232227351633323E0335342E012B0135 +333216027F454DC73A1921465050372E3322242C4556382833655C5A60DDCB025E90FEC0 +8E8770516736130EA90A0D345BAA7597A13B8FF400000001005800000417046000070028 +B60900010804050810DCDCFCDCDC314BB00A5158B90009FFC0385900B50104A906BC032F +FCFCC43001231123112135210417C6BAFDC103BF03D1FC2F03D18F000000000200BA0000 +048004600003000F003CB711460408070B0108B202461010FCECD4D4FCFCB4700D6A0A02 +5D4BB00A5158B90011FFC038593100B70BA90CBC02000302B0062F2FD4C410FCFC300111 +23110511231134262321352120160188B903B1B981BAFE2E01D00115E102ACFD54026026 +FDC60260D8998FFA0000000100BA00000174046000030021B60546010802460410FCFCFC +4BB00A5158B90005FFC038593100B203BC012FE430011123110174BA0460FBA004600001 +00580000026D0460000D0045B60F010508080D0E10DCDCFCDCDC314BB00E534BB010515A +587CB0022F18B36A035A03B46A0B5A0B045D31594BB00A5158B9000FFFC0385900B5020C +A90DBC072FFCFCC4300115232206151123113436372335026D505741BA4D38F804608F9B +BDFD8702797FB2278F00000100BA000004800460000D0037B70F46010802080809B1460E +10FCFCDCFCFCB2700B015D4BB00A5158B9000FFFC038593100B507A90ABC08022F2FFCEC +B27400015D003001112311342623211123112120160480BA82B8FEE7B901D00114E2025E +FDA20279C692FC2F0460F0000000000100B9FFE304BF046B001F005BB72119080A110108 +1EB1462010FCFCDCDCB7741470147F0A2F0AB2A00A055DFCDC314BB00A5158B90021FFC0 +385900B70FA9141FBC2005A9B01C2FEC10FCC4ECB56C0A6E196E1EB55C0A5E195E1EB744 +0A4401340A3401B00A5D300111141E02323E0235342E02232207353633321E0215100220 +02190101722D5974A074592D13305A43425D725766905425FCFDF2FC0460FDB474A25B28 +285BA274719D7D3D1E8F1E519FD28DFED4FEF3010D012C0244000001008801A201420460 +00030023B4050108020410DCFCDC314BB00A5158B90005FFC0385900B4010200BC0410E4 +2FC430011107110142BA0460FD8E4C02BE0000010058FE560392046000100038B6124600 +08030A1110DCDCFCFCB4610C5F09025D4BB00A5158B90012FFC038593100B60AA90BBC01 +BD1110ECFCECB65F034F033F03035D3001112311342E0323213521321E020392BA153258 +7F5DFEFB0101A8D6863501EEFC680398729B75421F8F3D97E80000010058000003CA0460 +00190035B61B0708130E191A10DCD4DCFCDCB74F0F4F183F0F3F18B0045D314BB00A5158 +B9001BFFC0385900B619A900BC0EA90D2FECFCEC301321321E03140E0323213521323E02 +342E02232158015875BB785022225078BB75FEA80158648D4E22224E8D64FEA80460406B +929DAC9D926B408E3E7591BC91753E00000000010058000003F005D500080036B70A0708 +0108080005B208020910DCFCDCFCD4B27F01015DFCDC314BB00A5158B9000AFFC0385900 +B60702A90405BC002FFCCCFCC43021012111331105070101810194FD43BB02DD03FE5703 +D10204FE8B016EFC0F00000200BA0000049504600008000F0034B7114600080B0A0801B1 +461010FCFCDCFCFC314BB00A5158B90011FFC0385900B609A902BC0AA9012FECF4ECB46F +0C7E0C025D3029011121321E0215011121113426230495FC2501E38DC07734FCDF026782 +B904603A81BD8A0173FCBE01EAC69200000000010058000004B5047000250064B727460C +08110E1B08B41C0108002610DCECD4B2701C015DFCDCDCFCFCB74A233A232A231C23B768 +235A234A046804B473040C23085D4BB00A5158B90027FFC038593100B714A90A00BC0FA9 +0EB01B2F2FECFCD4FCB758046C115C117604B27F11055D3013331E01173E043320190121 +3521113426232207060706070323133E0435340258D90442161C4D4C624C330192FDCE01 +787A61B456302A020562BA50030F0507035D04600B9D4E4664361E08FDEEFDA28E01D0C3 +BBA05BCE0E17FE1201A210491B332716400107000000000100BAFE560174046000030024 +B60546010802460410FCFCFC4BB00A5158B90005FFC038593100B402BD03BC0410E4E430 +011123110174BA0460F9F6060A0000010058000002780460000D0031B70F460B0800050D +0E10DCD4DCFCFC4BB00A5158B9000FFFC038593100B605A906BC0DA90C2FECFCECB4100A +000A025D30251134262B01353332161511213501BE646A7E7ECDBBFDE08F02587B6F8FB1 +DDFD2E8F0000000200B9FFE304BF046000090013005DB71504080F0C080946B01410FCFC +DCB27F0F015DFCDCB64A0A3C0A6001035D31B75907540669076406B0045D4BB00A5158B9 +0015FFC0385900B70AA900BC140EA9062FEC10FCFCB7340F340C260F260CB7420F420C52 +036403B0085D3013212004111000200011012111102011342E02B901E7011D0102FF00FD +FAFF0001E7FED202942D5F7F0460FAFED4FED0FED901270130018DFE6BFE4901BF759C58 +240000010058FF42044804600013004BB715460208010F080CB10E1410DCC4FCDCFCFCB6 +3E0D1D0D0F0D035D314BB00A5158B90015FFC0385900B710A90BA90C01BC0EB1BC1510E4 +E4D4ECE4B414100510025D30B4670D470D025D01113311140E04070535250133013E0112 +0388C013315888C282FE800124FED4C201148490460344011CFEE476B2AF887F6A2F8BA9 +68040DFC323996010800000100BAFE56046404600017005EB719460008030D0808B21346 +1810FCFCD4DCFCFC314BB00A5158B90019FFC0385900B710A90B07A914BC02B1BD1810EC +FCFCDCB74A131F0B0F0B2F0BB0045D4BB017504BB012535A58B9000B00403859FCB76A03 +5C034A037F04B0045D300111231134262B01151416333237150623222635112120160464 +BA91A9FD474A29435243869B01B60110E4025EFBF8040AD0A1F049450D981094B00164F5 +0000000100BA0000048E0460001C006AB71E03080C16100807B200461D10FCC4FCD4DCB4 +5F0C3F0C025DFCDCB73D0E3D0A4B0E4B0AB0045D314BB00A5158B9001EFFC0385900B719 +A91410A900BC09B1A9062FECFCFC7DDCB25F14017118B6701450144A1C035D4BB019504B +B012535A58B9001400403859FC301321200010002901352132363534262B010706163332 +37150623222635BA01AA01020128FED7FEFFFE56015EECD1D8E4A50101484A2943524386 +9B0460FEDCFDE8FEDC8EC0EEDBBADE49450D981094B000010058FE5603F9046300160047 +B718080807030E0811B30008161710DCFCD4FCC4DCB27F07015DFCDCB736034403540305 +03B0045D314BB00A5158B90018FFC0385900B50700BC10BD1710ECFCC4B23703015D3001 +1716173E013D013315140E0207112311342E01270301259F663A7568B83D688048BA393D +31D30463E492992EC39784846FBA7E5312FC86032650AB6A490139000000000100580000 +04050460001A006CB71C46170D080C0208B21A011B10DCC4FCDCB00C4B51B0104B535A58 +B9000C004038B10C002F1059FCC4FCB73C163B033F004803B76C0059005F004A16B66916 +7C003D00095D314BB00A5158B9001CFFC0385900B50C01BC1AA9192FECFCC4B754163803 +54037403B0045D302501330136373E0435113315140E05070115213502F4FD64DA018304 +07181A2C1813B8121A2E263D241E0103FC538E03D2FDC90305111634375A37010CB94A7D +584D2E2F1510FE8E478E000200BAFE560511045F0003000A0052B007B70C0808050A0804 +01B4080206460B10FCD4FCDCFCD4B74F055F056F057F05B0045DFCCC314BB00A5158B900 +0CFFC0385900B7020106A907BC00BDB0042FECFCFCDCC4B2AF01015DB440095009027130 +0111071109012135211501018CBA01D30194FC810457FE57FE5604564CFBF601AA03D18E +6EFC0F00000000010058000003CA046000110040B613460108020A1210DCDCFCEC31B00E +4B54B00F4B545B58B00C2F31594BB00A5158B90013FFC0385900B40AA90BBC022FFCEC30 +4BB0105058B103002F2F305901112311342E0323213521321E0303CABA1533507E52FEB0 +014F7EBF7A4D1F023AFDC6023A49766946298F355D8DA100000000010058000005530460 +002800A2B72A20081F0F080E03B60802160801022910DCD4FC10FCDCB4100E000E025DFC +DCB748063B062B06101FB7001F500060007000B0085DFCDC4BB00B5058BB0016FFC00001 +FFC0383831B104152F7D2F1859B72000300057155704B0045D31B76613670477047613B2 +8704055D4BB00A5158B9002AFFC0385900B715A9041F0E02BC16B1A9002FECFCC4C4DCB7 +AF041F042F049F04B0045DECB6431D43224825035D3021230333133E0837330207060706 +0713323E0637330E0701AEBC9AB949304B38281D110F080D06A51218296C5FA72B629792 +6B634538220AB9122A3D4B6981ABCB0460FDF1010F212340355D45792BFEFC67AB453D06 +FECD0F28436992C5FA9DA6FCE4A389573D1A00010014FFF804880460001E0049B7204601 +08030A0817B30818111F10DCD4FCFCDCFCFC31B4D019D018025D4BB00A5158B90020FFC0 +385900B713A90E010AA918A9B219BC012FFCECFC10D4FCB67F036A035B03035D30011123 +11342E032B0111140623222735163332363511233521321E020488BA0A24407050F67B98 +354E4126472EAD025D8FC16C2C025EFDA202604A63653A25FDCDD6D0108F0E72A302338F +438AB4000000FFFF00BA0000030A04601027052B019600001006052B0000FFFF00880000 +02A804601027052B013400001006052F0000FFFF008801A2027F04601027052F013D0000 +1006052F0000000100BA02E40299046000030014400902B400BC040344010410D4EC3100 +10F4EC300133012301D2C7FEBA990460FE84000200BA02E4046E046000030007001D400E +0307B40105BC080344010744050810D4ECDCEC310010F43CEC3230013301230333012303 +A7C7FEBA99BDC7FEBA990460FE84017CFE8400020000FFD704DC07220025003000000116 +171615233427262733161716373637363533141716171637363533140706232227060706 +250901050727012301233502B10F0A1472171F627B1E190D1D2E050471090E1D26090871 +182D61541520211DFDF602040100011B197DFEC142FDAE73061631326AFFEE7BA2CD4045 +230407241C5D7D0D150101181871AB213C221C070569FA8D02C562502DFC8D0646600002 +0000FFD704DC0729002A0035000001150607061514171617152207061514171617323736 +371506070623222726353437363726272635263736050901050727012301233503A84D40 +563A31313855461E252F3E3750362E4E403F5E473F4429372D1C23018E46FD9602040100 +011B197DFEC142FDAE7307295E0A1D262314201B025C2A24402E2229010D13186E14100D +463E5D4B482A0E121A21235448239DFA8D02C562502DFC8D064660000000000400850000 +057A051400030007000B000F00002533152325331523013315232533012304C6B4B4FE3E +B4B4FD8FB4B40294A0FD5EA0FAFAFAFA0514FAFAFAEC000500850000073C051400030007 +000B000F0013000025331523253315232533152301331523253301230688B4B4FE3EB4B4 +FE3EB4B4FD8FB4B40294A0FD5EA0FAFAFAFAFAFA0514FAFAFAEC000100DB0000020001EC +0005000021233513330301AED3A48152AC0140FEC000000200FC04FD030506F1000A001B +00000133323736353427260706172B01353311331136373617161514070601CD374E1635 +1E01473418AF70516624683F4641403605620D21152010011C15A865018FFEBF4928181A +19525B322A00000200DB00000200051100050009000001233513330B0133152301AED3A4 +8152D3D3D30325AC0140FEC0FD2DFE00000000020093000003B005F00003002400002515 +233537353426272E012F012E0135343633321617152E012322061514161F011E011D0102 +BCCB06060608272F585A48DFB867C15E61B34F6C8333395A5A38FEFEFE937B343C151935 +2F5656894C9FC23839BC43466E59315E35595682659A000100A30055031E03DE00220000 +3735363736372627263534373637363332171526070607061714171637363715060706A3 +2F5344348E3335151E6763626E5A644633316001C8393A483A5ACDE755B006191421184C +4F54414B763F3D16B91F02011A307073320E0F1323B93C505A00FFFFFFB5000002850783 +1027057BFF1D01C2100605540000FFFF006C000001C307FD1027057CFF1D018610060554 +0000FFFFFFABFE0C034004B51027057CFFC2FE3E100605700000FFFF006CFE0C01C30614 +1027057DFF1D0000100605540000FFFF0082FEF305C004B51027057CFFF4FE3E10060571 +0000000100C10000017906140003000013331123C1B8B80614F9EC000000FFFF0082FEA2 +06EB029D1026058E0000100717210339FEA2FFFF008BFFC603A0041A1026056F00001007 +172200FA0384FFFF0082FFEC06EB03201026058E00001007172202BC028AFFFF0082FFEC +06EB041A1026058E00001007172302BC028AFFFF009DFE0C052803661026055A00001007 +1721030700190001009DFE0C05280366001E000013243320171520070611141716213237 +1506232027263510373637220706079D0114C30124C4FEDAD7E04A7F014BC1D496FAFE5E +A983D46089659F7E6803273F369AA7AEFEFB8760A476B863C296E00102DF6534130F2D00 +0000FFFF009DFE0C052804B01026055A000010071721023F041A0001007DFFDA031B0352 +0019000025363736353427262733161716151407060506232227351633320187AC23083C +42ADE37142522050FEFA2E2D66677354219731701B2A4E7481925B7C9869634BC2290726 +B82AFFFF007DFFDA031B04B01026055C0000100717210145041A0001FFABFE0C03620226 +0011000025363534273316151407020504213520373602A30A35B832082EFEDDFEE4FEBE +0130CBDA9E3A487E887684523EFEA29B97B8808A0000FFFFFFABFE0C036203B61026055E +0000100717210271032000010082FE0C091A02EE003F0000250607060706232627241134 +3733061716171633323736373627262F0133171617163332373635331417163332190133 +1114070607062322272627060706070604FC185485C15078806DFEED69B86C0101935F51 +625F795E4001011040B824101C3B73522C25B813406E8EB85C4B66252049308A11315F32 +46842CB36BAA3E1A011C470148F6B4CEDCB3261825309E6C8E7D3DEA9C4A3C817A67C2CD +32A901180126FEAAC7715C180919467B9F1E0F030600FFFF0082FE0C091A04B010260560 +00001007172304E2032000020082FE0C091302E50032003F000005060706232627241134 +373306171617163332373637363534273306171617363736373617161716151407062901 +222726351401220706073332373627262726049058EE5078806DFEED69B86C0101935F51 +665BA22B2127AB010E0A28737B7E814F517D61BAB8CAFEE4FEEC26342D02A14C7EA891BB +ED81BB01028925F29B4D1A011C470148F6B4CEDCB3261825448A6C7F938A0F372832926C +6E362201022547E9A96D781E1A10BA02A9516CC23F5B46871305FFFF0082FE0C091303B6 +1026056200001007172104FB032000020090000006DC0614000C001F0000253332373627 +26272623220706132901352111331112253633321716151407060341BBED81BB01028925 +30507AB175FDC1FE91016FB8D901145C447866BAB8CAB83F5D448713055178FE92B8055C +FB0E013F63212745EBA96D78000000><000100AF +FFEC064905AE001F00000121152117161716172115212224023534122433211521060706 +070607211521015704F2FB43114A8C8A9302B9FD47C0FE9DBEBE0163C002B9FD47938A8B +4B0E0C04C6FB0E0273A0228B4E4C019FC60160BBB90160C89F014D4F8A1B1AA000010058 +FFEC07A805AE002100000121152106070604232135213637363736372135212627262726 +272135213204171605EC01BCFE460F4D5EFE9CC0FD4802B9938A8A4B4108FB0C04F20740 +4A8B8A93FD4702B8C001645E480327A0948FB0C89F014D4F8A785DA04A788B4E4C019FC6 +B0850000000100AFFFEC064905AE001B0000012602242721352132041210020423213521 +3624123721112311331105A10789FEEA93FD4702B9C00163BEBEFE9DC0FD4702B9930115 +8B09FBABA0A003274A01039A019FC6FEA0FE8CFEA0C89F019C01025DFEF002C0FEF00000 +000100D9009B04E504670019000001200410042901352132373637211523113315212627 +2623253502930128012AFED6FED8FE4601BAE66B4E1DFD188E8E02E8254672DFFE460467 +F6FE20F68E513A85AC01E6AC913050018E000000000200AFFFEC064906D2001C00200000 +01262726272627213521320412151402042321352136373637363721350121352105A107 +3F4A8C8994FD4702B9C00163BEBEFE9DC0FD4702B994898B4B4009FB0B055BFAA5055B03 +274A788B4E4C019FC6FEA0BBB9FEA0C89F014D4F8A785DA0030BA000000200D9009B04E5 +057D0016001A000001200415140429013525323736372135052627260721352521352102 +930128012AFED6FED8FE4601BAE8694E1DFC8A0376254674DDFE4603E5FC1B03E50467F6 +F1EFF68E01503A858E01913152018E8A8C000000000100D90000061F05C2000B00000121 +11211521112115211121061FFB64049CFABA0546FB64049C0282FE28AA05C2AAFE140000 +0003004AFFDC0489041C0013001B00230000013217371707161514002322270727372635 +3400052623220615141F01163332363534270268BA8F7563766EFEC4DDB88D7663756F01 +3C01C06480A2E94763637EA3E9450417717663768DBADDFEC46F7663768DBADF013CD548 +E9A580636247E9A38062000000010072014C0452038C00070000011101350511011502A2 +FDD001B00230027AFED2014AC2FA012EFEB6C200000200920000048204C4000400090000 +331109011125211109019201F801F8FCB602A4FEAEFEAE02A00224FDDCFD60AA01D50179 +FE870000000101A303DA050F05DC000700000901270133010701032DFEEE78018A5A0188 +78FEF004EAFEF078018AFE7678011000000101A30000050F020200070000253301170123 +0137032D5A011078FE785AFE7678F2011078FE76018A7800FFFF01A30000050F033F1026 +1774000010070D8D0000FC26FFFF01A30000050F041B10271774000000DC1026177400D7 +10070D8D0000FC260001013BFFC502AD064E001900000117061417161407061417161407 +27363427263437363427263401B77A4C4C7C7C4C4C7C7C7A4C4C7C7C4C4C7C064E764F70 +5081F881506F5081F981764F705081F88150705081F80000000100B0FEF2025806140005 +0000132115231123B001A8F0B806148FF96D0000000100C7FEF2026F0614000500000111 +23112335026FB8F00614F8DE06938F00000100B0FEF20258061400050000131133113315 +B0B8F0FEF20722F96D8F0000000100C7FEF2026F061400050000012135331133026FFE58 +F0B8FEF28F069300000202F4FF6206130282000300070000013311231335211502F49090 +C8025701BAFDA8029090900000020064FF62038402820003000700000115213505331123 +02BCFDA80290909002829090C8FDA800000202F401F20613051200030007000001352115 +2523113303BC0257FD71909001F29090C80258000002006401F203840512000300070000 +011521352523113302BCFDA8032090900282909038025800000100D9011F05DB035E0005 +000001152111231105DBFBA6A8035EAAFE6B023F000200060102041505120007000F0000 +132405021304251201120304250213248C018101818989FE7FFE7F89FEF1B8B802070208 +B8B8FDF8018A8989018001828A8AFE7EFDF801F4021CB1B1FE0CFDE5B1000000000600F7 +00010709061300030031003B0046004F00590000012111211115140620263534363B0111 +23222635343620161D01213534363332161514062B01113332161514062322263D010135 +342623220614163313232206151416333236350133323634262206151115141632363534 +2623036C0128FED8B9FEFCB8B87FAAAA7FB8B80104B90128B98283B7B780AAAA80B7B783 +82B9FE44624544626245A6A64562624544620250A74462618A62628A61624402760128FE +44AA80B7B88380BA0128BA8182B8B780AAAA80B7B88281BAFED8BA8083B8B780AA0250A7 +4561618A62FDB062444562624402F7628A616145FD09A7446262454462000000000100D9 +011F05DB035E0005000001211133112105DBFAFEA8045A011F023FFE6B000000000100B0 +0367033A061400050000012111231121033AFE0690028A0584FDE302AD00000000010086 +0367031006140005000013352111231186028A90058490FD53021D00000100B0FF70033A +021D00050000211521113311033AFD76909002ADFDE3000000010086FF700310021D0005 +00003321113311218601FA90FD76021DFD530000000101AFFE0003FA076C001900000111 +34371A0133321615140623222726272E012322030215301101AF030CBECA506440372B1C +180F060910681108FE0005082481020301BC5441363F1310260F48FD95FED302FA980000 +0001002AFE1A0275078900190000011114070A0123222635343633321716171E01333213 +123530110275030CBECA506440372B1C180F0609106811080789FAF52481FDFDFE445441 +363F1310260F48026B012D02056B00000003009C01D0089C049A0007000B000F00000901 +27013301070125213529021521046FFE267802525A025078FE28FE8DFD4602BA028A02BC +FD4403A8FE28780252FDAE7801D848AAAA0000000002009C0000089C049A0007000B0000 +1321012115210121252115219C02BA02E40262FD46FD1CFD9E054402BCFD44049AFC10AA +03F0AAAA0005009C00000B4F061400040009000C000F0015000033112109021133090129 +0109012109033309019C07A9030AFCF6F8EB8D0276FD8A04EDFBE6020DFDF3041AFDF302 +DDFD8A02768E0276FD8A0614FCF6FCF60580FB1402760276FDF3FD21020D02DFFD8AFD8A +027402780005009C0000089C061400030008000B000E0013000033112111011133090129 +01090121090333119C0800F8948D0276FD8A04EDFBE6020DFDF3041AFDF302DDFD8A0276 +8E0614F9EC0580FB1402760276FDF3FD21020D02DFFD8AFD8A04EC00002B007800000B14 +05D5000B00170023002F003B00470053005F006B00770083008F009B00A700B300BF00CB +00D700E300EF00FB01070113011F012B01370143014F015B01670173017F018B019701A3 +01AF01BB01C701D301E401F001FC02080000012132151114232122351134171114332132 +3511342321220115142B01223D01343B01321715142B01223D01343B01322515142B0122 +3D01343B01320515142B01223D01343B01321715142B01223D01343B01320515142B0122 +3D01343B01321715142B01223D01343B01321715142B01223D01343B01321715142B0122 +3D01343B01321715142B01223D01343B01320515142B01223D01343B01322515142B0122 +3D01343B01321715142B01223D01343B01321715142B01223D01343B01321715142B0122 +3D01343B01321715142B01223D01343B01321715142B01223D01343B01321715142B0122 +3D01343B01321715142B01223D01343B01322715142B01223D01343B01320715142B0122 +3D01343B01320715142B01223D01343B01320715142B01223D01343B01320715142B0122 +3D01343B01320715142B01223D01343B01320715142B01223D01343B01320715142B0122 +3D01343B01322715142B01223D01343B01321715142B01223D01343B01321715142B0122 +3D01343B01321715142B01223D01343B01321715142B01223D01343B01321715142B0122 +3D01343B01321715142B01223D01343B01321715142B01223D01343B01321715142B0122 +3D01343B01320515142B01223D01343B013207321511142B01223D013423223D01343313 +15142B01223D01343B01321715142B01223D01343B013205223D01343321321D01142301 +5508E2DDDDF71EDD934A08E24949F71E4A0103254A25254A25DF254B24244B25014A254A +25254A25FE46254A25254A25DD254A25254A2501B9254A25254A25DD254A25254A25DD25 +4A25254A25DD254A25254A25DD254A25254A25018E25FB2525FB25F843254A25254A25DD +254A25254A25DD254A25254A25DC254A25254A25DD254A25254A25DD254A25254A25DD25 +4A25254A25DD254A25254A2524254A25254A25DD254A25254A25DD254A25254A25DD254A +25254A25DC254A25254A25DD254A25254A25DD254A25254A25DD254A25254A2524254A25 +254A25DD254A25254A25DD254A25254A25DD254A25254A25DC254A25254A25DD254A2525 +4A25DD254A25254A25DD254A25254A25DD254A25254A25011E258B25258B25252525F62A +24252594254A25254A25DF254B24244B25F9A525250404252505D5DDFBE5DDDD041BDDDD +FBE54A4A041B4AFC1C4925254926254A25254A25B74A25254A25254A25254A25254A2525 +4A25254A25254A25254A25254A25254A25254A25254A25254A25254A25254A25254A2525 +4A25B74A25254A25254A25254A25254A25254A25254A25254A25254A25254A25254A2525 +4A25254A25254A25254A25254A25B74A25254A25254A25254A25254A25254A25254A2525 +4A25254A25254A25254A25254A25254A25254A25254A25254A25B44A25254A25254A2525 +4A25254A25254A25254A25254A25254A25254A25254A25254A25254A25254A25254A2525 +4A25254A25254A25254A25254A25DB25FEDE25259520254925FD484A25254A25254A2525 +4A2594254A25254A250000000005000100000AB4061400040009000C000F001500002901 +090121072309013309021109010323090133010AB4F857FCF6030A07A9948DFD8A02768D +FA86020D020DFDF3FDF3D08EFD8A02768E0276030A030A94FD8AFD8A04ECFDF3020DFB14 +020DFDF304ECFD88FD8C027600050096FF46066605FC0005000B000F0013001700000902 +110901031109011101033701071117012701331123010802760276FD8AFD8A7202E802E8 +FD18263901DE3939FE2239FE2272720135FE95016B02D8016BFE95FCE6035C01ADFE53FC +A4FE53054163FEEC63FE5C63FEEC6302FAFDD800FFFF00A60000026E04601006034D0000 +FFFF00BAFE5604A4047B100603550000FFFF0087FFE3062704601006035D0000FFFF0071 +FFE704E404791006034500000001001AFE2E05F500D0000B000001211121152311211123 +352101B802A0019DF5FC10F6019EFED801F8AAFE0801F8AA0002009C000008C505FB000D +0011000001212737011501273721012135210535211505E201CBE9780189FE7778E9FE8D +FD1CFD46026202E202BC049AE978FE775AFE7778E9FC10AAAAAAAA0000020023000006D9 +05D00005000B000025210901210903210901021202D8016CFE94FD28FE94012BFE5201AD +035B01AEFE537202760276FD8AFD1802E802E8FD18FD1800000100B0FDFC03500792000B +00000123351013121333000302110173C3A0BAA6A0FEFC5A7FFDFCEA039701E202300103 +FDF3FE86FDEEFCED000100B0FDFC017307890003000013331123B0C3C30789F673000000 +000100B0FE1403500789000B000001151013121323020302113501737F93CBA0D090A007 +89EAFCA5FE57FE14FE65014501EE02260332EA00000100B0FDFC03500792000B00000135 +10030201331213121115028D7F5AFEFCA0A6BAA0FDFCEA031302120179020EFEFDFDD0FE +1EFC69EA0001028DFDFC035007890004000001112311300350C30789F673098D000100B0 +FE1403500789000B0000013315100302032312131211028DC3A090D0A0CB937F0789EAFC +CDFDDBFE12FEBB019B01EC01A9035B00000100B0FDFC0350076D00050000012311211521 +0173C302A0FE23FDFC0971C3000100B0FDFC017307890003000013331123B0C3C30789F6 +73000000000100B0FE140350078900050000011121152111017301DDFD600789F74EC309 +75000000000100B0FDFC0350076D00050000011121352111028DFE2302A0FDFC08AEC3F6 +8F0000000001028DFDFC0350077A0003000001331123028DC3C3077AF6820000000100B0 +FE140350077A00050000013311213521028DC3FD6001DD077AF69AC3000102A3FDEA0558 +076D000D00000123113437363321152122070615035DBA6F79BA0113FEE7654439FDEA07 +75DF919EB0665799000100A8FDFC035D0786001800000116171619012311102726252735 +332037361901331110070602943A2A65BA6E4BFEFB3D3D01034D6EBA652802C1203D93FE +43FDE8020C01B75F410401BB456301B3020CFDE8FE48983C000102A3FE1405580786000D +00000111141716332115212227263511035D3944650119FEEDB87B6F0786F8949A5666B0 +9E8FE10764000000000102A3FDF4035D078C0003000001231133035DBABAFDF409980000 +000100A8FDEA035D076D000D0000011134272623213521321716151102A3394465FEE701 +13BA796FFDEA077D995766B09E91DFF88B000000000102A3FDFC05580786001800000126 +2726190133111017162133150704070619012311103736036C3C2865BA6E4D01033D3DFE +FB4B6EBA652A02C1213C9801B80218FDF4FE4D6345BB0104415FFE49FDF4021801BD933D +000100A8FE14035D0786000D0000013311140706232135213237363502A3BA6F7BB8FEED +01196544390786F89CE18F9EB066569A000101AFFE0002750789000300000111331101AF +C6FE000989F67700000200370086064005D5000800110000250901112111210321033509 +0135211321030233FE0401FC023701D601FBF464FEF6010A040C01FEF2018601FC01FCFE +EF0268FBC2017283FEF6FEF6830376FD98000000000200BA000006D504C4000200060000 +0121090121112106D5F9E5030D030EF9E5061B02A00224FB3C01F80000040096FF460666 +05FC0005000B001F002B0000090211090103110901110100141716171632373637363427 +2627262207060702103E01201E01100E012026010802760276FD8AFD8A7202E802E8FD18 +FE6E36365C5DDA5D5C363636365C5DDA5D5C36A88AEE0118EE8A8AEEFEE8EE0135FE9501 +6B02D8016BFE95FCE6035C01ADFE53FCA4FE5303C8DA5D5C363636365C5DDA5D5C363636 +365CFEAA0118EE8A8AEEFEE8EE8A8A00FFFF0006009A0621038E10060E88000000030059 +FEF704CF025A000D001900200000002207061514171632373635342F0132161514062322 +263534360111073537331103E9CA32333332CA32333397A1AAAAA1A2AAAAFE56DFE68902 +015656ACAD56565656ADAC56AFDED3D4DEDED4D3DEFCAC02D1297427FCBD00000002FF82 +FFE304A406140017001F0000013E01333200100223222627152311052725353315251705 +001026200610162001733AB17BCC00FFFFCC7BB13AB9FEE9210138B9012321FEBC0272A7 +FEDCA7A7012403B66461FEBCFDF0FEBC6164A804E65D6368C08361616DFC400196E7E7FE +6AE7000000010092FE2E048200D0000700000121113311211133013A02A0A8FC10A8FED8 +01F8FD5E02A2000000030098FFEC069405E8000D001B002600DBBA000E000600032BB800 +0E10BA0023001D00032BB8002310BA0000001400032BB8000010411B0016000E0026000E +0036000E0046000E0056000E0066000E0076000E0086000E0096000E00A6000E00B6000E +00C6000E00D6000E000D5D410500E5000E00F5000E00025D410500EA001400FA00140002 +5D411B001900140029001400390014004900140059001400690014007900140089001400 +99001400A9001400B9001400C9001400D90014000D5D00BA0011000300032BB8001110BA +000A001800032BB8000A10BA0024002500032BB8002410B8001CD0303101100021200011 +34122433320412051000212000113402242322040201331107352533113315210694FE3F +FEC2FEC4FE3FCE0171BEC10171CDFA57018F011C011C018FB6FEB8ADADFEB8B6017CD9EC +0101A1DAFD9702EAFEC1FE4101BF013FC60172C6C6FE90C8FEE4FE700190011CB30147B1 +B1FEB9FDFF027E2B982FFCE68E00000000030098FFEC069405E8000D001B0038013FBA00 +0E000600032BB8000E10BA0033002600032BB8003310BA0000001400032BB8000010411B +0016000E0026000E0036000E0046000E0056000E0066000E0076000E0086000E0096000E +00A6000E00B6000E00C6000E00D6000E000D5D410500E5000E00F5000E00025D410500EA +001400FA001400025D411B00190014002900140039001400490014005900140069001400 +790014008900140099001400A9001400B9001400C9001400D90014000D5DB8003310B800 +1DD0B8001D2F410500EA002600FA002600025D411B001900260029002600390026004900 +26005900260069002600790026008900260099002600A9002600B9002600C9002600D900 +26000D5DBA002C0006000011123900BA0011000300032BB8001110BA000A001800032BB8 +000A10BA001D001E00032BB8001D10BA0030002900032BB8003010303101100021200011 +34122433320412051000212000113402242322040201211521353624373E013534262322 +0607353E01333216151406070E010694FE3FFEC2FEC4FE3FCE0171BEC10171CDFA57018F +011C011C018FB6FEB8ADADFEB8B6024F01B4FD5C520106213E2F5F4E3B847361913DA3C5 +303E11B202EAFEC1FE4101BF013FC60172C6C6FE90C8FEE4FE700190011CB30147B1B1FE +B9FDFF8E814DF1223F55283F4E263AAB241F977D3A694612A700000000030098FFEC0694 +05E8000D001B004401B5BA000E000600032BB8000E10BA0042003500032BB8004210BA00 +00001400032BB8000010411B0016000E0026000E0036000E0046000E0056000E0066000E +0076000E0086000E0096000E00A6000E00B6000E00C6000E00D6000E000D5D410500E500 +0E00F5000E00025D410500EA001400FA001400025D411B00190014002900140039001400 +490014005900140069001400790014008900140099001400A9001400B9001400C9001400 +D90014000D5D410500EA003500FA003500025D411B001900350029003500390035004900 +35005900350069003500790035008900350099003500A9003500B9003500C9003500D900 +35000D5DBA001C00350042111239BA002C00350042111239B8002C2F410500EA002C00FA +002C00025D411B0019002C0029002C0039002C0049002C0059002C0069002C0079002C00 +89002C0099002C00A9002C00B9002C00C9002C00D9002C000D5DB8001FDCBA0026000600 +00111239BA003B0006000011123900BA0011000300032BB8001110BA000A001800032BB8 +000A10BA0029002200032BB8002910BA003F003800032BB8003F10BA0032002F00032BB8 +003210BA001C002F00321112393031011000212000113412243332041205100021200011 +34022423220402051E0115140623222627351E013332363534262B013533323635342623 +220607353E013332161514060694FE3FFEC2FEC4FE3FCE0171BEC10171CDFA57018F011C +011C018FB6FEB8ADADFEB8B603B90D76D8C34088585B7D4475736B638C915A585C5B3479 +6B5F883DA1C16802EAFEC1FE4101BF013FC60172C6C6FE90C8FEE4FE700190011CB30147 +B1B1FEB99603815D8D9C171BA8301C4F4C474E8C3C3A3C3F152097181489735172000000 +00040098FFEC069405E8000D001B001E002900F3BA000E000600032BB8000E10BA002000 +1C00032BB8002010BA0000001400032BB8000010411B0016000E0026000E0036000E0046 +000E0056000E0066000E0076000E0086000E0096000E00A6000E00B6000E00C6000E00D6 +000E000D5D410500E5000E00F5000E00025D410500EA001400FA001400025D411B001900 +14002900140039001400490014005900140069001400790014008900140099001400A900 +1400B9001400C9001400D90014000D5DB8002010B80024D0B8001C10B80026D000BA0011 +000300032BB8001110BA000A001800032BB8000A10BA0022002300032BB8002210B8001D +D0B8002310B80027D0303101100021200011341224333204120510002120001134022423 +22040225012103331133152315233521350694FE3FFEC2FEC4FE3FCE0171BEC10171CDFA +57018F011C011C018FB6FEB8ADADFEB8B602BFFEF3010D18CE8D8DB6FE4302EAFEC1FE41 +01BF013FC60172C6C6FE90C8FEE4FE700190011CB30147B1B1FEB94FFE820248FDB88DD3 +D38E000000030098FFEC069405E8000D001B0039014BBA000E000600032BB8000E10BA00 +1F001C00032BB8001F10BA0026003300032BB8002610BA0000001400032BB8000010411B +0016000E0026000E0036000E0046000E0056000E0066000E0076000E0086000E0096000E +00A6000E00B6000E00C6000E00D6000E000D5D410500E5000E00F5000E00025D410500EA +001400FA001400025D411B00190014002900140039001400490014005900140069001400 +790014008900140099001400A9001400B9001400C9001400D90014000D5DBA002D000600 +00111239410500EA003300FA003300025D411B0019003300290033003900330049003300 +5900330069003300790033008900330099003300A9003300B9003300C9003300D9003300 +0D5D00BA0011000300032BB8001110BA000A001800032BB8000A10BA0030002900032BB8 +003010BA001D001E00032BB8001D10BA0023003600032BB8002310303101100021200011 +341224333204120510002120001134022423220402012115211506363332161514062322 +2627351E01333236353426232206070694FE3FFEC2FEC4FE3FCE0171BEC10171CDFA5701 +8F011C011C018FB6FEB8ADADFEB8B60198023DFE6F033F1FB0CFD5BE4085585F77446876 +766832655902EAFEC1FE4101BF013FC60172C6C6FE90C8FEE4FE700190011CB30147B1B1 +FEB901198EAB010AB09598AC1418AC2F1B6155566114250000040098FFEC069405E8000D +001B002700400191BA000E000600032BB8000E10BA001F003B00032BB8001F10BA003500 +2500032BB8003510BA0000001400032BB8000010411B0016000E0026000E0036000E0046 +000E0056000E0066000E0076000E0086000E0096000E00A6000E00B6000E00C6000E00D6 +000E000D5D410500E5000E00F5000E00025D410500EA001400FA001400025D411B001900 +14002900140039001400490014005900140069001400790014008900140099001400A900 +1400B9001400C9001400D90014000D5D411B0016001F0026001F0036001F0046001F0056 +001F0066001F0076001F0086001F0096001F00A6001F00B6001F00C6001F00D6001F000D +5D410500E5001F00F5001F00025D410500EA002500FA002500025D411B00190025002900 +250039002500490025005900250069002500790025008900250099002500A9002500B900 +2500C9002500D90025000D5DBA00290025003511123900BA0011000300032BB8001110BA +000A001800032BB8000A10BA0022003800032BB8002210BA003E002C00032BB8003E10BA +0032001C00032BB800321030310110002120001134122433320412051000212000113402 +242322040205220615141633323635342613152E01232206070636333216151406232226 +3534123332160694FE3FFEC2FEC4FE3FCE0171BEC10171CDFA57018F011C011C018FB6FE +B8ADADFEB8B602A14E5C5C4E4E5C5CD454612F777F0509804EA0BAC2A0B9C0EAC8356A02 +EAFEC1FE4101BF013FC60172C6C6FE90C8FEE4FE700190011CB30147B1B1FEB99F625B5A +62625A5B62019D9C231694500B3DB19491B3FDE7DA010B1300030098FFEC069405E8000D +001B002200EBB800232FB800242FB80000DCB8002310B80006D0B800062FB8000EDC411B +0016000E0026000E0036000E0046000E0056000E0066000E0076000E0086000E0096000E +00A6000E00B6000E00C6000E00D6000E000D5D410500E5000E00F5000E00025DB8000010 +B80014DC410500EA001400FA001400025D411B0019001400290014003900140049001400 +5900140069001400790014008900140099001400A9001400B9001400C9001400D9001400 +0D5DBA002000060000111239BA00210006000011123900BA0011000300032BB8001110BA +000A001800032BB8000A10BA001D002100032BB8001D1030310110002120001134122433 +3204120510002120001134022423220402012115012301210694FE3FFEC2FEC4FE3FCE01 +71BEC10171CDFA57018F011C011C018FB6FEB8ADADFEB8B6016B02ABFE94C10151FE3102 +EAFEC1FE4101BF013FC60172C6C6FE90C8FEE4FE700190011CB30147B1B1FEB901194BFC +A3031A0000050098FFEC069405E8000D001B0027003F004B020DBA000E000600032BB800 +0E10BA001F003D00032BB8001F10BA0031004600032BB8003110BA0000001400032BB800 +0010411B0016000E0026000E0036000E0046000E0056000E0066000E0076000E0086000E +0096000E00A6000E00B6000E00C6000E00D6000E000D5D410500E5000E00F5000E00025D +410500EA001400FA001400025D411B001900140029001400390014004900140059001400 +69001400790014008900140099001400A9001400B9001400C9001400D90014000D5D411B +0016001F0026001F0036001F0046001F0056001F0066001F0076001F0086001F0096001F +00A6001F00B6001F00C6001F00D6001F000D5D410500E5001F00F5001F00025D410500EA +004600FA004600025D411B00190046002900460039004600490046005900460069004600 +790046008900460099004600A9004600B9004600C9004600D90046000D5DBA0025004600 +31111239B800252F410500EA002500FA002500025D411B00190025002900250039002500 +490025005900250069002500790025008900250099002500A9002500B9002500C9002500 +D90025000D5DBA002B003D001F111239B8002B2FBA003400460031111239B8002510B800 +37DCB8002B10B80040DC00BA0011000300032BB8001110BA000A001800032BB8000A10BA +0022003A00032BB8002210BA002E004900032BB8002E10BA0043001C00032BB8004310BA +0034001C0043111239303101100021200011341224333204120510002120001134022423 +220402052206151416333236353426252E01353436333216151406071E01151406232226 +3534363714163332363534262322060694FE3FFEC2FEC4FE3FCE0171BEC10171CDFA5701 +8F011C011C018FB6FEB8ADADFEB8B602AF545F5F54545F5FFEC6046AB79D9DB669040F76 +BEADADBE7657514D4B52524B4D5102EAFEC1FE4101BF013FC60172C6C6FE90C8FEE4FE70 +0190011CB30147B1B1FEB9E65049495051484950490176537488887453760103835C8A97 +978A5C83C13D42423D3E424200040098FFEC069405E8000D001B003400400191BA000E00 +0600032BB8000E10BA003E002900032BB8003E10BA0000001400032BB8000010BA002F00 +3800032BB8002F10411B0016000E0026000E0036000E0046000E0056000E0066000E0076 +000E0086000E0096000E00A6000E00B6000E00C6000E00D6000E000D5D410500E5000E00 +F5000E00025D410500EA001400FA001400025D411B001900140029001400390014004900 +14005900140069001400790014008900140099001400A9001400B9001400C9001400D900 +14000D5D411B0016003E0026003E0036003E0046003E0056003E0066003E0076003E0086 +003E0096003E00A6003E00B6003E00C6003E00D6003E000D5D410500E5003E00F5003E00 +025DBA001D0029003E111239410500EA003800FA003800025D411B001900380029003800 +39003800490038005900380069003800790038008900380099003800A9003800B9003800 +C9003800D90038000D5D00BA0011000300032BB8001110BA000A001800032BB8000A10BA +0020003200032BB8002010BA002C003B00032BB8002C10BA0035002600032BB800351030 +310110002120001134122433320412051000212000113402242322040201351E01333236 +3736062322263534363332161514022322261332363534262322061514160694FE3FFEC2 +FEC4FE3FCE0171BEC10171CDFA57018F011C011C018FB6FEB8ADADFEB8B6019055612E77 +7F050A804F9FBAC2A0B9BFE9C8356BD94E5B5B4E4E5C5C02EAFEC1FE4101BF013FC60172 +C6C6FE90C8FEE4FE700190011CB30147B1B1FEB9FD8B9C2415934F0D3CAF9491B4FDE8DA +FEF61301B4625B5B62625B5B6200000000050098FFEC069405E8000D001B00260032003E +019BBA000E000600032BB8000E10BA0023001D00032BB8002310BA002A003C00032BB800 +2A10BA0036003000032BB8003610BA0000001400032BB8000010411B0016000E0026000E +0036000E0046000E0056000E0066000E0076000E0086000E0096000E00A6000E00B6000E +00C6000E00D6000E000D5D410500E5000E00F5000E00025D410500EA001400FA00140002 +5D411B001900140029001400390014004900140059001400690014007900140089001400 +99001400A9001400B9001400C9001400D90014000D5D410500EA003000FA003000025D41 +1B0019003000290030003900300049003000590030006900300079003000890030009900 +3000A9003000B9003000C9003000D90030000D5D410500EA003C00FA003C00025D411B00 +19003C0029003C0039003C0049003C0059003C0069003C0079003C0089003C0099003C00 +A9003C00B9003C00C9003C00D9003C000D5D00BA0011000300032BB8001110BA000A0018 +00032BB8000A10BA002D003900032BB8002D10BA0024002500032BB8002410BA00330027 +00032BB8003310B8002410B8001CD0303101100021200011341224333204120510002120 +001134022423220402133311073537331133152101220615141633323635342627321615 +14062322263534360694FE3FFEC2FEC4FE3FCE0171BEC10171CDFA57018F011C011C018F +B6FEB8ADADFEB8B6CD9EACBC759FFE3E0304404545403F46463F8288888283888802EAFE +C1FE4101BF013FC60172C6C6FE90C8FEE4FE700190011CB30147B1B1FEB9FE3E023E2789 +2AFD368002DE97A3A29797A2A3977BE4D1D0E4E4D0D1E4000001FFEC026A04E503160003 +0000033521151404F9026AACAC0000000001FFEC021404E5036C00030000031121111404 +F902140158FEA80000010218FE0002B8078100030000011133110218A0FE000981F67F00 +000101C8FE0003080781000300000111211101C80140FE000981F67F0003003C026A0495 +031600030007000B000001352115213521152135211503720123FD420123FD420123026A +ACACACACACAC00000003003C02140495036C00030007000B000001112111211121112111 +211103720123FD420123FD42012302140158FEA80158FEA80158FEA800030218FE6D02B8 +071300030007000B00000111331103113311031133110218A0A0A0A0A0FE6D026AFD9603 +1E026AFD96031E026AFD9600000301C8FE6D0308071300030007000B0000011121110111 +21110111211101C80140FEC00140FEC00140FE6D026AFD96031E026AFD96031E026AFD96 +0004003C026A0495031600030007000B000F000013353315333533153335331533353315 +3CBC78BC78BC78BD026AACACACACACACACAC00000004003C02140495036C00030007000B +000F0000131133113311331133113311331133113CBC78BC78BC78BD02140158FEA80158 +FEA80158FEA80158FEA8000000040218FE6E02B8071200030007000B000F000001113311 +0311331103113311031133110218A0A0A0A0A0A0A0057001A2FE5EF8FE01A2FE5E04AC01 +A2FE5EFDAA01A2FE5E000000000401C8FE6E0308071200030007000B000F000001112111 +01112111011121110111211101C80140FEC00140FEC00140FEC00140057001A2FE5EF8FE +01A2FE5E04AC01A2FE5EFDAA01A2FE5E00010218FE0004E5031600050000011121152111 +021802CDFDD3FE000516ACFB9600000000010218FE0004E5036C00050000011121112111 +021802CDFDD3FE00056CFEA8FBEC0000000101C8FE0004E5031600050000011121152111 +01C8031DFE23FE000516ACFB96000000000101C8FE0004E5036C00050000011121112111 +01C8031DFE23FE00056CFEA8FBEC00000001FFECFE0002B8031600050000011121352111 +0218FDD402CCFE00046AACFAEA0000000001FFECFE0002B8036C00050000011121112111 +0218FDD402CCFE0004140158FA9400000001FFECFE000308031600050000011121352111 +01C8FE24031CFE00046AACFAEA0000000001FFECFE000308036C00050000011121112111 +01C8FE24031CFE0004140158FA94000000010218026A04E5078100050000011133112115 +0218A0022D026A0517FB95AC00010218021404E50781000500000111331121110218A002 +2D0214056DFBEBFEA8000000000101C8026A04E507810005000001112111211501C80140 +01DD026A0517FB95AC000000000101C8021404E507810005000001112111211101C80140 +01DD0214056DFBEBFEA800000001FFEC026A02B807810005000003352111331114022CA0 +026AAC046BFAE9000001FFEC021402B807810005000003112111331114022CA002140158 +0415FA930001FFEC026A03080781000500000335211121111401DC0140026AAC046BFAE9 +0001FFEC021403080781000500000311211121111401DC0140021401580415FA93000000 +00010218FE0004E507810007000001113311211521110218A0022DFDD3FE000981FB95AC +FB96000000010218FE0004E507810007000001113311211121110218A0022DFDD3FE0009 +81FBEBFEA8FBEC00000101C8FE0004E50781000900000111231121112115211102185001 +4001DDFDD3FE00046A0517FB95ACFB96000101C8FE0004E5078100090000011133113311 +2115211101C850A0022DFE23FE000516046BFB95ACFB9600000101C8FE0004E507810007 +0000011121112115211101C8014001DDFE23FE000981FB95ACFB9600000101C8FE0004E5 +07810009000001112311211121112111021850014001DDFDD3FE000414056DFBEBFEA8FB +EC000000000101C8FE0004E50781000900000111331133112111211101C850A0022DFE23 +FE00056C0415FBEBFEA8FBEC000101C8FE0004E5078100070000011121112111211101C8 +014001DDFE23FE000981FBEBFEA8FBEC0001FFECFE0002B8078100070000011121352111 +33110218FDD4022CA0FE00046AAC046BF67F00000001FFECFE0002B80781000700000111 +2111211133110218FDD4022CA0FE00041401580415F67F000001FFECFE00030807810009 +0000011121352111211123110218FDD401DC014050FE00046AAC046BFAE9FB960001FFEC +FE0003080781000900000111213521113311331101C8FE24022CA050FE00046AAC046BFB +95FAEA000001FFECFE000308078100070000011121352111211101C8FE2401DC0140FE00 +046AAC046BF67F000001FFECFE000308078100090000011121112111211123110218FDD4 +01DC014050FE00041401580415FA93FBEC0000000001FFECFE0003080781000900000111 +211121113311331101C8FE24022CA050FE00041401580415FBEBFA940001FFECFE000308 +078100070000011121112111211101C8FE2401DC0140FE00041401580415F67F0001FFEC +FE0004E503160007000001112135211521110218FDD404F9FDD3FE00046AACACFB960000 +0001FFECFE0004E5036C00090000011121112115211521110218FDD402CC022DFDD3FE00 +0414015856ACFB960001FFECFE0004E5036C00090000011121352135211121110218FDD4 +022C02CDFDD3FE00046AAC56FEA8FBEC0001FFECFE0004E5036C00070000011121112111 +21110218FDD404F9FDD3FE0004140158FEA8FBEC0001FFECFE0004E50316000700000111 +21352115211101C8FE2404F9FE23FE00046AACACFB9600000001FFECFE0004E5036C0009 +00000111211121152115211101C8FE24031C01DDFE23FE000414015856ACFB960001FFEC +FE0004E5036C000900000111213521352111211101C8FE2401DC031DFE23FE00046AAC56 +FEA8FBEC0001FFECFE0004E5036C00070000011121112111211101C8FE2404F9FE23FE00 +04140158FEA8FBEC0001FFEC026A04E5078100070000033521113311211514022CA0022D +026AAC046BFB95AC0001FFEC021404E50781000900000311211133112115211514022CA0 +022DFDD3021401580415FB95AC5600000001FFEC021404E5078100090000033521113311 +2111213514022CA0022DFD33026AAC046BFBEBFEA85600000001FFEC021404E507810007 +0000031121113311211114022CA0022D021401580415FBEBFEA800000001FFEC026A04E5 +07810007000003352111211121151401DC014001DD026AAC046BFB95AC0000000001FFEC +021404E5078100090000031121112111211521151401DC014001DDFE23021401580415FB +95AC56000001FFEC021404E5078100090000033521112111211121351401DC014001DDFC +E3026AAC046BFBEBFEA856000001FFEC021404E507810007000003112111211121111401 +DC014001DD021401580415FBEBFEA8000001FFECFE0004E50781000B0000011123112135 +21113311211502B8A0FDD4022CA0022D026AFB96046AAC046BFB95AC0001FFECFE0004E5 +0781000B00000111211121113311211521110218FDD4022CA0022DFDD3FE000414015804 +15FB95ACFB9600000001FFECFE0004E50781000B00000111213521113311211121110218 +FDD4022CA0022DFDD3FE00046AAC046BFBEBFEA8FBEC00000001FFECFE0004E50781000B +00000111211121113311211121110218FDD4022CA0022DFDD3FE00041401580415FBEBFE +A8FBEC000001FFECFE0004E50781000B00000111213521112111211521110218FDD401DC +014001DDFDD3FE00046AAC046BFB95ACFB9600000001FFECFE0004E50781000B00000111 +2135211133112115211101C8FE24022CA0022DFE23FE00046AAC046BFB95ACFB96000000 +0001FFECFE0004E50781000B000001112135211121112115211101C8FE2401DC014001DD +FE23FE00046AAC046BFB95ACFB9600000001FFECFE0004E50781000D0000011121112111 +21112115211523110218FDD401DC014001DDFE2350FE00041401580415FB95AC56FBEC00 +0001FFECFE0004E50781000D00000111233521352111211121112111021850FE2401DC01 +4001DDFDD3FE00041456AC046BFBEBFEA8FBEC000001FFECFE0004E50781000D00000111 +21112111331133152115211101C8FE24022CA05001DDFE23FE00041401580415FBEB56AC +FB9600000001FFECFE0004E50781000D0000011121352135331133112111211101C8FE24 +01DC50A0022DFE23FE00046AAC560415FBEBFEA8FBEC00000001FFECFE0004E50781000B +00000111211121112111211121110218FDD401DC014001DDFDD3FE00041401580415FBEB +FEA8FBEC0001FFECFE0004E50781000B000001112111211133112111211101C8FE24022C +A0022DFE23FE00041401580415FBEBFEA8FBEC000001FFECFE0004E50781000B00000111 +2111211121112115211101C8FE2401DC014001DDFE23FE00041401580415FB95ACFB9600 +0001FFECFE0004E50781000B000001112135211121112111211101C8FE2401DC014001DD +FE23FE00046AAC046BFBEBFEA8FBEC000001FFECFE0004E50781000B0000011121112111 +21112111211101C8FE2401DC014001DDFE23FE00041401580415FBEBFEA8FBEC0002003C +026A0495031600030007000013352115333521153C01F07901F0026AACACACAC0002003C +02140495036C000300070000011121112111211102A501F0FBA701F002140158FEA80158 +FEA8000000020218FEC002B806C100030007000001113311031133110218A0A0A0036C03 +55FCABFB540354FCAC000000000201C8FEC0030806C10003000700000111211101112111 +01C80140FEC00140036C0355FCABFB540354FCAC0002FFEC01BE04E503C2000300070000 +03352115013521151404F9FB0704F90316ACACFEA8ACAC0000020178FE00035807810003 +0007000001113311331133110178A0A0A0FE000981F67F0981F67F0000010218FE0004E5 +03C20009000001112115211521152111021802CDFDD3022DFDD3FE0005C2ACACACFC4200 +00010178FE0004E5031600090000011121152111231123110178036DFE73A0A0FE000516 +ACFB96046AFB960000020178FE0004E503C20005000B0000011121152111331121152111 +0178036DFD33A0022DFE73FE0005C2ACFAEA046AACFC42000001FFECFE0002B803C20009 +0000011121352135213521110218FDD4022CFDD402CCFE0003BEACACACFA3E000001FFEC +FE0003580316000900000335211123112311231114036CA0A0A0026AACFAEA046AFB9604 +6A0000000002FFECFE00035803C20005000B000001112135211121112135211102B8FD34 +036CFE20FE74022CFE000516ACFA3E03BEACFB960001021801BE04E50781000900000111 +33112115211521150218A0022DFDD3022D01BE05C3FC41ACACAC000000010178026A04E5 +078100090000011133113311331121150178A0A0A0018D026A0517FB95046BFB95AC0000 +0002017801BE04E507810005000B000001113311211501113311211502B8A0018DFC93A0 +02CD0316046BFC41ACFEA805C3FAE9AC0001FFEC01BE02B8078100090000033521352135 +2111331114022CFDD4022CA001BEACACAC03BFFA3D0000000001FFEC026A035807810009 +00000335211133113311331114018CA0A0A0026AAC046BFB95046BFAE90000000002FFEC +01BE035807810005000B000003352111331101352111331114018CA0FDD402CCA00316AC +03BFFB95FEA8AC0517FA3D0000010218FE0004E50781000B000001113311211521152115 +21110218A0022DFDD3022DFDD3FE000981FC41ACACACFC4200020178FE0004E507810003 +000B00000111331133113311211521110178A0A0A0018DFE73FE000981F67F0981FB95AC +FB96000000030178FE0004E5078100050009000F00000111331121150111331133112115 +211102B8A0018DFC93A0A0022DFE730316046BFC41ACFAEA0981F67F046AACFC42000000 +0001FFECFE0002B80781000B00000111213521352135211133110218FDD4022CFDD4022C +A0FE0003BEACACAC03BFF67F0002FFECFE00035807810007000B00000111213521113311 +331133110178FE74018CA0A0A0FE00046AAC046BF67F0981F67F00000003FFECFE000358 +07810005000B000F00000335211133110311213521113311331114018CA0A0FE74022CA0 +A00316AC03BFFB95FAEA03BEACFB960981F67F000002FFECFE0004E503C20007000B0000 +0111213521152111013521150218FDD404F9FDD3FD3404F9FE0003BEACACFC420516ACAC +0001FFECFE0004E50316000B00000335211521112311231123111404F9FE73A0A0A0026A +ACACFB96046AFB96046A00000003FFECFE0004E503C200030009000F0000033521150111 +213521113311211521111404F9FC93FE74022CA0022DFE730316ACACFAEA03BEACFB9604 +6AACFC420002FFEC01BE04E507810003000B00000335211501352111331121151404F9FB +07022CA0022D01BEACAC0158AC03BFFC41AC00000001FFEC026A04E50781000B00000335 +2111331133113311211514018CA0A0A0018D026AAC046BFB95046BFB95AC00000003FFEC +01BE04E5078100030009000F0000033521150135211133113311331121151404F9FB0701 +8CA0A0A0018D01BEACAC0158AC03BFFB95046BFC41AC00000001FFECFE0004E507810013 +000001112135213521352111331121152115211521110218FDD4022CFDD4022CA0022DFD +D3022DFDD3FE0003BEACACAC03BFFC41ACACACFC420000000001FFECFE0004E507810013 +0000033521113311331133112115211123112311231114018CA0A0A0018DFE73A0A0A002 +6AAC046BFB95046BFB95ACFB96046AFB96046A000004FFECFE0004E507810005000B0011 +0017000001112115211121112135211101352111331133113311211502B8022DFE73FE20 +FE74022CFDD4018CA0A0A0018DFE00046AACFC4203BEACFB960516AC03BFFB95046BFC41 +AC00000000010218FE0004E50316000B00000111341233211521220615110218AAAA0179 +FE87595BFE000370A50101AC7E7CFC900001FFECFE0002B80316000B0000011134262321 +35213216151102185B59FE880178A8ACFE0003707E7CACFEA8FC90000001FFEC026A02B8 +0781000B0000033521323635113311140623140178595BA0ACA8026AAC7E7C0371FC8FA8 +FE00000000010218026A04E50781000B000001212226351133111416332104E5FE87A8AC +A05B590179026AFEA80371FC8F7C7E000001FFA7FE14052A076D00030000030133015904 +D1B2FB2FFE140959F6A700000001FFA7FE14052A076D0003000001230133052AB2FB2FB2 +FE1409590001FFA7FE14052A076D000B0000012309012309013309013301052AB2FDF0FD +F1B20269FD97B2020F0210B2FD98FE140400FC0004AC04ADFC000400FB5300000001FFEC +026A02680316000300000335211514027C026AACAC0000000001021802C002B807810003 +0000011133110218A002C004C1FB3F0000010268026A04E5031600030000013521150268 +027D026AACAC000000010218FE0002B802C000030000011133110218A0FE0004C0FB4000 +0001FFEC02130268036C000300000311051114027C0214015801FEA8000101C802C00308 +0781000300000111211101C8014002C004C1FB3F00010268021404E5036C000300000111 +21110268027D02140158FEA8000101C8FE00030802C0000300000111211101C80140FE00 +04C0FB400001FFEC021404E5036C0007000003352135211121351402900269FD97026AAC +56FEA856000101C8FE000308078100070000011133113311331101C850A050FE0004C004 +C1FB3FFB400000000001FFEC021404E5036C0007000003112115211521151402900269FD +970214015856AC56000101C8FE0003080781000700000111231121112311021850014050 +FE0004C004C1FB3FFB400000FFFFFFEC0214063B062810070E5B0000041400000001FFEC +FE00063BFF05000300000311211114064FFE000105FEFB000001FFECFE00063BFFF60003 +00000311211114064FFE0001F6FE0A000001FFECFE00063B010F00030000031121111406 +4FFE00030FFCF1000001FFECFE00063B0214000300000311211114064FFE000414FBEC00 +0001FFECFE00063B0319000300000311211114064FFE000519FAE7000001FFECFE00063B +041E000300000311211114064FFE00061EF9E2000001FFECFE00063B0523000300000311 +211114064FFE000723F8DD000001FFECFE00063B0628000300000311211114064FFE0008 +28F7D8000001FFECFE00057106280003000003112111140585FE000828F7D8000001FFEC +FE0004A7062800030000031121111404BBFE000828F7D8000001FFECFE0003DD06280003 +0000031121111403F1FE000828F7D8000001FFECFE000313062800030000031121111403 +27FE000828F7D8000001FFECFE0002490628000300000311211114025DFE000828F7D800 +0001FFECFE00017F06280003000003112111140193FE000828F7D8000001FFECFE0000B5 +0628000300000311331114C9FE000828F7D80000FFFF0313FE00063A062810070E630327 +00000000000CFFECFE000571062800030007000B000F00130017001B001F00230027002B +002F00000111331121113311131133112111331101113311211133111311331121113311 +0111331121113311131133112111331104A7CAFC0ECACACAFC0FC903F2CAFC0ECACACAFC +0FC903F2CAFC0ECACACAFC0FC9FE000105FEFB0105FEFB016D0105FEFB0105FEFB016E01 +05FEFB0105FEFB016D0105FEFB0105FEFB016E0105FEFB0105FEFB016D0105FEFB0105FE +FB0000000020FFECFE00063406280007000F0017001F0027002F0037003F0047004F0057 +005F0067006F0077007F0087008F0097009F00A700AF00B700BF00C700CF00D700DF00E7 +00EF00F700FF000013072327353733170507232735373317050723273537331705072327 +353733170107232735373317050723273537331705072327353733170507232735373317 +010723273537331705072327353733170507232735373317050723273537331701072327 +353733170507232735373317050723273537331705072327353733170107232735373317 +050723273537331705072327353733170507232735373317010723273537331705072327 +353733170507232735373317050723273537331701072327353733170507232735373317 +050723273537331705072327353733170107232735373317050723273537331705072327 +353733170507232735373317B505BF0505BF05019205BF0505BF05019205BF0505BF0501 +9205BF0505BF05FC1305BF0505BF05019205BF0505BF05019205BF0505BF05019205BF05 +05BF05FA8105BF0505BF05019205BF0505BF05019205BF0505BF05019205BF0505BF05FC +1305BF0505BF05019205BF0505BF05019205BF0505BF05019205BF0505BF05FA8105BF05 +05BF05019205BF0505BF05019205BF0505BF05019205BF0505BF05FC1305BF0505BF0501 +9205BF0505BF05019205BF0505BF05019205BF0505BF05FA8105BF0505BF05019205BF05 +05BF05019205BF0505BF05019205BF0505BF05FC1305BF0505BF05019205BF0505BF0501 +9205BF0505BF05019205BF0505BF0505280505FB0505FB0505FB0505FB0505FB0505FB05 +05FB0505FE000505FB0505FB0505FB0505FB0505FB0505FB0505FB0505FE000505FB0505 +FB0505FB0505FB0505FB0505FB0505FB0505FE000505FB0505FB0505FB0505FB0505FB05 +05FB0505FB0505FE000505FB0505FB0505FB0505FB0505FB0505FB0505FB0505FE000505 +FB0505FB0505FB0505FB0505FB0505FB0505FB0505FE000505FB0505FB0505FB0505FB05 +05FB0505FB0505FB0505FE000505FB0505FB0505FB0505FB0505FB0505FB0505FB050500 +0007FFECFE00063B06280019001D002100250029002D0031000003113311231133112311 +331121113311211123112311211123190133112301331123013311230133112301331123 +0133112314C9C9C9C9C9025ECA025ECACAFDA2CACACA0328CACAFE6CCACAFE6CCACA0328 +CACAFE6CCACAFE00016D010501D6010501D60105FEFB0105F7D80105FEFB0105FEFB05B6 +0105FEFB0105FD8D0105FD8E0105FEFB0105FD8D01050000FFFFFFEC0523063B06281007 +0E58000007230000FFFF0571FE00063A062810070E660585000000000001FFECFE000314 +02140003000003112111140328FE000414FBEC0000010313FE00063B0214000300000111 +211103130328FE000414FBEC0001FFEC0214031406280003000003112111140328021404 +14FBEC000001FFECFE00063B062800050000012111211121063BF9B103280327FE000828 +FBEC00000001FFECFE00063B06280007000003112111211121111403280327FCD8021404 +14FBECFBEC0414000001FFECFE00063B062800050000011121112111063BFCD9FCD80628 +FBECFBEC082800000001FFECFE00063B06280005000003211121112114064FFCD8FCD906 +28F7D80414000000000103130214063B062800030000011121110313032802140414FBEC +0001FFECFE00063B06280007000003211121112111211403270328FCD9FCD802140414FB +ECFBEC000001FFECFE00063B0628000500000311211121111403270328FE0004140414F7 +D8000000000100BAFF0406D505240003000017112111BA061BFC0620F9E00000000200BA +FF0406D505240003000700000521112103112111012C0537FAC972061B8A053CFA520620 +F9E00000000200BAFF0406D50524000B0017000025143321323511342321221503111029 +0120190110290120012CE4036FE4E4FC91E4720156036F0156FEAAFC91FEAA5AE4E40374 +E4E4FC8C03740156FEAAFC8CFEAA0000FFFF00BAFF0406D5052410270E81011100001006 +0E780000000600BAFF0406D5052400030007000B000F0013001700001711211125213521 +35213521352135213521352135213521BA061BFA570537FAC90537FAC90537FAC90537FA +C90537FAC9FC0620F9E072B072B272B072B272B0000600BAFF0406D5052400030007000B +000F001300170000171121112533112301331123013311230133112301331123BA061BFE +E1B0B0FEDCB2B2FEDEB0B0FEDCB2B2FEDEB0B0FC0620F9E0740538FAC80538FAC80538FA +C80538FAC8053800001A00BAFF0406D5052400030007000B000F00130017001B001F0023 +0027002B002F00330037003B003F00430047004B004F00530057005B005F006300670000 +053335230533352305333523013335231133352311333523113335231133352301333523 +113335231133352311333523013335231133352311333523113335230133352311333523 +1133352311333523013335231133352311333523113335231133352301112111024CB2B2 +0124B0B00122B2B2FC9AAEAEAEAEAEAEAEAEAEAE0120B2B2B2B2B2B2B2B20124B0B0B0B0 +B0B0B0B00122B2B2B2B2B2B2B2B20124ADADADADADADADADADADFB04061B88AEAEAEAEAE +03DCAEFE2EB2FE2CB0FE2CB2FE2EAE03DCAEFE2EB2FE2CB0FE2CB202B8AEFE2EB2FE2CB0 +FE2CB202B8AEFE2EB2FE2CB0FE2CB202B8AEFE2EB2FE2CB0FE2CB2FE2EAEFEDE0620F9E0 +000800BAFF0406D5052400030006000A000E00140018001C001F00001711211101153303 +150133011501370115013735013301350133013501331735BA061BFA57E2E20184FBFD81 +0321FBFBE404BE79FB42A2041CFCDFA2027FFE7CA2E2FC0620F9E00154E2027FFCFE7D04 +1CFCFCDF01053C7FFB42017F04BDFBE4FC0320FD81FC0183E2E20000000800BAFF0406D5 +052400030006000A000E00140018001C001F000017112111253335053301350117013501 +17013523013501230135012301353723BA061BFEACE2FD81FB0184FBE4FB0321FAC97904 +BE79FB42041CFBFCDF027FFBFE7CE2E2FC0620F9E072E2E20183FCFD81010321FCFBE401 +04BE7FFB43A1041CFCE0A1027FFE7DA1E2000000001A00BAFF0406D5052400040009000E +00120017001C002000240028002D003100350039003D00410046004B004F00530057005C +00610065006A006F00730000011737272311173727070117372723011737270317372707 +011737272301173727011737270117372701173735230117372701173727011737270117 +372701173727013337270701173735270117372701173727011737270117333727011737 +3527011737270117333727051733352701112111012C327C3579327E7E32014F7E7E3592 +FEFE7E7C7EFE327E7E3202EC7E7E3592FEFD7E7D7DFEB57D7D7EFEB57E7E7E03897D3179 +FEFD7C7E7CFEB37C7E7CFEB57D7C7CFEB57C7E7CFEB37D7D7CFF007A347C3204887E3132 +FEB47E7E7EFEB57E7C7EFEB67E7E7EFEB33593347E02BB7D3232FEB57E7D7EFEB5349335 +7E011F347A32FA89061B0433317C34FDE4327E7E31014F7E7E34FEFF7E7C7EFCCC317E7D +3102EC7E7E34FEFD7D7D7EFEB57E7D7DFEB67E7E7E01EC7C317FFEFD7C7E7CFEB47D7E7C +FEB67C7C7CFEB57C7E7CFEB47C7D7DFE81347C3102ED7E329931FEB47E7E7EFEB57E7C7E +FEB57E7E7EFEB434347E011E7E319931FEB57D7C7EFEB534347E7E347F31FEDE0620F9E0 +000100BA001604B204120003000037112111BA03F81603FCFC040000000200BA001604B2 +04120003000700002521112103112111012C0314FCEC7203F8880318FC7603FCFC040000 +000100BA009A06D5038E000300002521112106D5F9E5061B9A02F400000200BA009A06D5 +038E00030007000001112111052111210663FAC905A9F9E5061B010C0210FDF07202F400 +000100BAFF0603AD05220003000017112111BA02F3FA061CF9E40000000200BAFF0603AD +05220003000700000521112103112111012C020FFDF17202F3880538FA56061CF9E40000 +00010006009A0621038E00030000252101210498FB6E018A04919A02F400000000020006 +009A0621038E000300070000090121010521012104620110FC53FEEF03E4FB6E018A0491 +010C0210FDF07202F400000000010006FF04062105240002000017090106030D030EFC06 +20F9E00000020006FF040621052400020005000017210903B104C5FD9DFCF3030D030E8A +04CAFAC40620F9E000010006001603FE0412000200003709010601FC01FC1603FCFC0400 +00020006001603FE041200020005000037210903B102A2FEAFFE0401FC01FC8802A6FCE8 +03FCFC0400010006FF04062105240002000017110106061BFC0620FCF000000000020006 +FF04062105240002000500001709010311017804C5FB3B72061B5202660266FA8A0620FC +F000000000010006001603FE0412000200003711010603F81603FCFE0200000000020006 +001603FE04120002000500003709010311017802A2FD5E7203F8C101530153FCAF03FCFE +02000000000100060016062104120002000037110106061B1603FCFE0200000000020006 +00160621041200020005000037090103110178048CFB7472061BC101530153FCAF03FCFE +0200000000010006FF04062105240002000013210106061BFCF20524F9E0000000020006 +FF0406210524000200050000130901252101B102620263FA90061BFCF204B2FB3604CA72 +F9E0000000010006001603FE0412000200001321010603F8FE040412FC04000000020006 +001603FE0412000200050000130901252101B101510151FCB303F8FE0403A0FD5A02A672 +FC04000000010006FF04062105240002000013011106061B02140310F9E0000000020006 +FF0406210524000200050000130111090111EA04C5FA57061B0214FD9A04CCFD9A0310F9 +E000000000010006001603FE0412000200001301110603F8021401FEFC04000000020006 +001603FE0412000200050000130111090111EA02A2FC7A03F80214FEAD02A6FEAD01FEFC +04000000000100060016062104120002000013011106061B021401FEFC04000000020006 +0016062104120002000500000901110901110123048CFA57061B0214FEAD02A6FEAD01FE +FC04000000010006FF04062105240003000013090206030D030EFCF202140310FCF0FCF0 +00020006FF04062105240003000700001309069E02750276FD8AFCF3030D030EFCF20214 +FD8802780278FD880310FCF0FCF0000000030006FF040621052400030007000B0000090B +013E01D501D5FE2BFD8B02750276FD8AFCF3030D030EFCF2021401D7FE29FE2901D7FD88 +02780278FD880310FCF0FCF000030070FEFF068B0529000D001B00290000241037363332 +171610070623222700100516333237241025262322070010253633321704100506232227 +0182FE7E7F807EFEFE7E807F7EFE65014DA5A6A7A5014DFEB3A5A7A6A5FE3E0187C3C3C4 +C30187FE79C3C4C3C3EF024A924A4A92FDB6924A4A0336FD02C06060C002FEC06060FBFF +0384E27171E2FC7CE271710000020006FE2303EE06750003000700224011020600080406 +080604030201000605070810D4CC1739310010D4CC1139123930090701FAFE7F01810181 +FE7F01F4FE0CFE0C0581FCCFFCC703390425FBDBFBD3042D00020070FEFF068B0529000D +001B000012100516333237241025262322070010253633321704100506232227E5014DA5 +A6A7A5014DFEB3A5A7A6A5FE3E0187C3C3C4C30187FE79C3C4C3C30393FD02C06060C002 +FEC06060FBFF0384E27171E2FC7CE2717100000000080072FF010689052700090013001D +0027002F0037003F00470000251617161707262726270536373637170607060713262726 +273716171617250607060727363736371316323717062227013634273716140701262207 +273632170106141707263437015C2B3B2E383146394B3503DA382E3432643B4539479C2C +3A2E383047394A36FC26382E3B2B64314F3946ED4C9A4C265FC060034A10106E1414FDA1 +4C9A4C2760C05FFCB810106E14148F3C3126206A28303D4A7520262C413D4E3A30280427 +3C3126206A28303D4A752026313C3E45423028FAD416166E1B1B025F49A049275BCA5B03 +4A16166E1B1BFDA149A049275BCA5B0000060070FEFF068B0529000D0017001B0025002F +003300003610253633321704100506232227131116171617110607060706101701111633 +3237112623221711363736371126272617113610700187C3C3C4C30187FE79C3C4C3C30B +1719414141411989ABAB01962C2B2D2C2C2D2BF641401A17171A40E3AA520384E27171E2 +FC7CE2717104C5FBBE0F0F251704F617250F6DB1FDDCB1045BFAD0070705300724FB0A17 +250F100440100F25A2FC7CB10222000000040070FEFF068B0529000D001B002900370000 +001017163332373610272623220702103736333217161007062322270010051633323724 +102526232207001025363332170410050623222702997239393A397272393A3939EDB058 +575858B0B058585758FE17014DA5A6A7A5014DFEB3A5A7A6A5FE3E0187C3C3C4C30187FE +79C3C4C3C30298FEF8422121420108422121FE6F019665333365FE6A65333302AFFD02C0 +6060C002FEC06060FBFF0384E27171E2FC7CE2717100000000010070FF04068B05200017 +00134007061218190C001810DCD4CC310010D4C430133437363736333217161716151407 +060706232227262726706968B6B5D2D1B5B668696968B6B5D1D2B5B668690212D1B6B569 +696969B5B6D1D1B6B569696969B5B60000020070FF04068B0520000D0015000012101224 +33320412100204232224053237241025262370D1016BD2D1016BD1D1FE95D1D2FE95023C +A7A5014DFEB3A5A7014101A2016BD2D2FE95FE5EFE95D2D26160C002FEC0600000020070 +FF04068B0520000D001500001210122433320412100204232224012207041005163370D1 +016BD2D1016BD1D1FE95D1D2FE95023CA6A5FEB3014DA5A6014101A2016BD2D2FE95FE5E +FE95D2D204DD60C0FD02C06000020070FF04068B0520000D001600001210122433320412 +10020423222401102526232207041170D1016BD2D1016BD1D1FE95D1D2FE9504D5FEB3A5 +A7A6A5FEB3014101A2016BD2D2FE95FE5EFE95D2D2023E017FC06060C0FE810000020070 +FF04068B0520000D00160000121012243332041210020423222403100516333237241170 +D1016BD2D1016BD1D1FE95D1D2FE955C014DA5A6A7A5014D014101A2016BD2D2FE95FE5E +FE95D2D2023EFE81C06060C0017F000000020070FF04068B0520000B0018000012101224 +20041210020420240122070410051633323724112170D1016B01A3016BD1D1FE95FE5DFE +95023CA6A5FEB3014DA5A6A7A5014DFD67014101A2016BD2D2FE95FE5EFE95D2D204DD60 +C0FD02C06060C0017F00000000020070FF04068B0520000B001100001210122420041210 +0204202401220704112170D1016B01A3016BD1D1FE95FE5DFE95023CA6A5FEB302980141 +01A2016BD2D2FE95FE5EFE95D2D204DD60C0FE8100010070FEFF037D0529000700003610 +253633112227700187C3C3C3C3520384E271F9D671000000000100BAFEFF03C705290007 +0000001005062311321703C7FE79C3C3C3C303D6FC7CE271062A7100000200BAFFEC059A +0628000A000E00000114163236353426232206011121110201ACFAACAB7C7EADFEB904E0 +02FA7DACAC7D7CABABFC76063CF9C400000300BAFE0007090628000D001B001F00002410 +2536333217041005062322270010051633323724102526232207011121110149014DA5A6 +A7A5014DFEB3A5A7A6A5FE3E0187C3C3C4C30187FE79C3C4C3C3FE5F064F9502FEC06060 +C0FD02C060600401FC7CE27171E20384E27171F9480828F7D8000000000200BA02140709 +0628000C0015000013112111231025262322070411290110253633321704BA064F1AFE79 +C3C4C3C3FE7905A6FACF014DA6A5A6A6014D02140414FBEC01C2E27171E2FE3E017EC160 +60C10000000200BAFE0007090214000C0015000013113310051633323724113311012110 +050623222724BA1A0187C3C3C4C301871AFA400531FEB3A6A6A5A6FEB3FE000414FE3EE2 +7171E201C2FBEC0414FE82C16060C1000001000602140313052900090000131025363315 +22070411060187C3C3A6A5FEB3021401C2E2717660C0FE81000100060214031305290009 +00001332170411231025262306C3C3018775FEB3A5A6052971E2FE3E017FC06000010006 +FEFF03130214000900001335323724113310050606A6A5014D75FE79C3FEFF7660C0017F +FE3EE27100010006FEFF0313021400090000012227241133100516330313C3C3FE797501 +4DA5A6FEFF71E201C2FE81C060000000000100700214068B052900110000131025363332 +170411231025262322070411700187C3C3C4C3018775FEB3A5A7A6A5FEB3021401C2E271 +71E2FE3E017FC06060C0FE8100010070FEFF068B02140012000013303310051633323724 +1133100506232227247075014DA5A6A7A5014D75FE79C3C4C3C3FE790214FE81C06060C0 +017FFE3EE27171E200010006FF04062105240002000017011106061BFC0620F9E0000000 +00010006FF04062105240002000017110106061BFC0620F9E000000000010006FF040621 +05240002000017112106061BFC06200000010006FF04062105240002000013211106061B +0524F9E00002013301D103850421000A0015000001141632363534262322060734363332 +161514062226016E8AC88A8963658B3BAD7E7CABACFAAC02FA648A8A64638989637CABAB +7C7DACAC000200BAFF0406D505240003000700001711211125211121BA061BFCF2029CFD +64FC0620F9E072053C000000000200BAFF0406D505240003000700001711211125211121 +BA061BFA57029BFD65FC0620F9E072053C000000000200BAFF0406D50524000300060000 +17112111252111BA061BFA570537FC0620F9E072053C0000000200BAFF0406D505240003 +0006000017112111250121BA061BFA570537FAC9FC0620F9E072053C000300BAFF0406D5 +052400030007000B0000171121112521112101211121BA061BFD2B0263FD9DFD2C0262FD +9EFC0620F9E072053CFAC4053C00000000030006FF04062105240007000A000D00000034 +36321614062201210903027F577C56567DFDDC04C5FD9DFCF3030D030E012C7C56567C56 +FEA004CAFAC40620F9E0000000020006FF04062105240002000500000521090303130263 +FD9DFCF3030D030E8A04CAFAC40620F9E000000000020006FF0406210524000200050000 +1721110902B10262FCF3030D030E8A04CAFAC40620F9E00000020070FE0008840628000B +00170000121001162037001001262007001001242005001001042025F101C5E201C4E201 +C5FE3BE2FE3CE2FDBA02050103020401030205FDFBFEFDFDFCFEFD041EFBECFEFB838301 +05041401058383FA9D04A8012A9696FED6FB58FED6969600000300BAFF0406D505240005 +0009000D00000521112111210311211101211121012C0537FD9DFD2C72061BFA570262FD +9E8A053CFD29FD290620F9E003490265000300BAFF0406D5052400050009000D00000121 +112111210311211125211121012C02D40263FAC972061BFA570262FD9E024DFD29053CFA +520620F9E0720265000300BAFF0406D5052400050009000D000005211121112103112111 +25211121012C026202D5FAC972061BFD2B0263FD9D8A02D70265FA520620F9E072026500 +000300BAFF0406D5052400050009000D00000521112111210311211101211121012C0537 +FD2BFD9E72061BFD2B0263FD9D8A026502D7FA520620F9E00349026500030070FF04068B +0520000D0013002000001210122433320412100204232224010607040321051205163332 +3724102526271170D1016BD2D1016BD1D1FE95D1D2FE9502038989FECC17025DFDA31701 +34A6A5A6A6014DFEB3898A014101A2016BD2D2FE95FE5EFE95D2D204DA0E4FB2FEAC72FE +ACB26060C102FCC14F0EFD2B00030070FF04068B0520000D001A00200000121012243332 +04121002042322240536372410252623220704032105120516171170D1016BD2D1016BD1 +D1FE95D1D2FE9502758A89014DFEB3A6A6A5A6FECC1702CFFD311701348989014101A201 +6BD2D2FE95FE5EFE95D2D25E0E4FC102FCC16060B2FEAC72FEACB24F0E02630000030070 +FF04068B0520000D001A0020000012101224333204121002042322240210051617112102 +252623220701363724132170D1016BD2D1016BD1D1FE95D1D2FE955C014D898902D017FE +CCA6A6A5A601848A89013417FDA2014101A2016BD2D2FE95FE5EFE95D2D203BCFD04C14F +0E02D50154B26060FB250E4FB201540000030070FF04068B0520000D001A002000001210 +1224333204121002042322240210051633323724132111060701022526271170D1016BD2 +D1016BD1D1FE95D1D2FE955C014DA6A5A6A6013417FD30898903E217FECC898A014101A2 +016BD2D2FE95FE5EFE95D2D203BCFD04C16060B2015402D50E4FFDFA0154B24F0EFD9D00 +00020006FF040621052400020005000037012103112178048CFB7472061B200492FA5206 +2000000000020006FF04062105240002000500000901112521110123048CFA57061B04B2 +FB6E049272F9E00000020006FF040621052400020005000017210103110178048CFB7472 +061B8A0492FAFC0620F9E000000200BAFF7905EA04AF0003000700000521112103112111 +012C044CFBB4720530150452FB3C0536FACA0000000100BAFF7905EA04AF000300001711 +2111BA0530870536FACA0000000200BAFFDD0522044B0003000700002521112103112111 +012C0384FC7C7204684F038AFC04046EFB920000000100BAFFDD0522044B000300001711 +2111BA046823046EFB92000000020006FF04062105240002000500000521110901110123 +048CFA57061B8A0492FAFC0620F9E000000900AB0000068005D50007000C00130022002A +0032003A004100490000013317110723271105171507272517072326273505321F011407 +062322272635343736012117150721273525211715072127350333161715072735253317 +15072735253317110723271103734D06064D0602373AF83DFCFDFC3D03C82D0230D0590D +BE472EAF6223B743FD4B01530606FEAD06047501590707FEA706470386723DF8FDB5033B +F63E021B4D06064D0605D506FEA20606015E9B3F03FE3FEEFE40C73704B5E160BD6417A7 +3F5CB5671BFEED064F06064F06064F06064FFEE88279033EFD042A3C03FE3F047606FEA2 +0606015E00010068FFFB079702E1002200000133321F01363316151407161D0106232135 +3237363B0127343F011727343F0132173604F516D9751527368722671250F93339862E34 +210CA0272A05CC43302E7802E1E856231B6D313417481A6509AE27316C3104040C935A08 +2B64000000010064000006C805D5003F000001331715332001161D01232627262B012207 +15140727262311140F01222F013537331715163B01323F01112207062327353723262723 +220F0123353637362135038B3A060201B801182B02161323392C9670082197886A1E5B25 +02062B050B3E0A371406D356110E07070443C543632214033AC0EF013805D5067DFE1A56 +0D080F2E1865330F02423DFD53651802601C1A06060C65392A02A43D39060C33401B3D12 +0290DADF7D000000001A00AAFFFF0682076B000D0015001D002500430060008C00B700E3 +010E013A0164019001BB01E6020F023B0265026D0275027D02A902D302FD032703530000 +011633323733060726273316333237262736371617060526273637161706032627363716 +170627061514163332363534272627323332373635342623220615141716330613363732 +1F0116140706071617161514042024353437363726272634370117272633320F01373633 +3215140F011716151423222F011716232235370706232235343F01272635343332011727 +26320F013736333215140F011716151423222F011716232235370706232235343F012726 +353433320517272633320F013736333215140F011716151423222F011716232235370706 +232235343F0127263534333213172726320F013736333215140F011716151423222F0117 +16232235370706232235343F012726353433320117272633320F013736333215140F0117 +16151423222F011714232235370706232235343F0127263534333201172726320F013736 +333215140F011716151423222F0117142235370706232235343F01272635343332051727 +34333215073736333215140F011716151423222F011716232235370706232235343F0127 +263534333203172726320F013736333215140F011716151423222F011716232235370706 +232235343F0127263534333205172726320F013736333215140F011716151423222F0117 +16232235370706232235343F012726353433321F012726320F013736333215140F011716 +1423222F0117142322353707062322343F012726353433323717273433320F0137363332 +15140F011716151423222F011716232235370706232235343F0127263534333237172726 +320F013736333215140F011716151423222F0117162235370706232235343F0127263534 +33321326273637161706052627363716170617262736371617060117272633320F013736 +333215140F011716151423222F011716232235370706232235343F012726353433320117 +2726320F013736333215140F011716151423222F0117142235370706232235343F012726 +3534333205172726320F013736333215140F011716151423222F01171622353707062322 +35343F0127263534333201172726320F013736333215140F011716151423222F01171622 +35370706232235343F012726353433320117272633320F013736333215140F0117161514 +23222F011716232235370706232235343F0127263534333203FC080842191905807E0918 +253C077A2A01032B270303FEEB2903032B2803034026020327240202CA7CF7AFAEF87C65 +8B02033C2D417D5D5C8A422D3790151A93843102534C14186F578EFEE4FE6AFEE38F5C76 +15134C4CFDA92906010F1102062804041008302F09100404280601100E052803050E092E +31070F0501282506021E02062504040E072C2A070C05032304010E0D052403040D08292A +080E0403662405020E1002062503050D072B29080C06022405010F0C042304030E082A2B +080F03662506021E02062504040E072C2A070C06022405010E0D052403040D08292A080E +04FBCB130201070801031401020803181704080201130207060213020306041718030801 +031715030112010416020209041A1805080202160410031502020804191A040902FCBB13 +040708041303020805161604070203130301080704130302070416160508025C14040110 +0103130302070417160507020313030108070313020208051616050802011C1302011001 +031301030804171605080301130301080702130201080516170408016F13020210010314 +01020804171704080201130207060213020306041617030603F715030709010316010408 +051A1906080402140201090703150302080518190408025B16030112010416020208031A +180508020216030110021501030805191A040902AE25020229230303FEB7260203272501 +01FC2602022923030301602305010E0F01062403050D072A29080D05032404020E0D0523 +04040E082B2C070E04FC5515030112010415030209051918050802031504100315020208 +04191A040902FE5117040112010315020208031A19040802021502011004170102090618 +1A040902043017040112010315020208031A190408020215020110031601030806181905 +0902FC452505020E1003052503050D072B29080C06022404020F0C042403030E082A2B08 +0F0303890126450507432656022A2C0303292D0402292D03032A2CFE1202252602022526 +9E669391D0D09193665520334868666565666848321E01D9701875135EE85118101C4673 +A5A3E6E6A3A5734B1A0F1651E847FD6821390F0F392104110B031516030C0F0221371010 +3721020F0C031615030B1101D11F340D0D341F03100705141303090E021E320F0F321E02 +0E090313140507104B1F340E0E341F03100703151304090E021E320E0E321E020E090413 +15030710011B1E320E0E321E020E0904131403090F031D310E0E311D030F090314130409 +0E029A101C06061C1001070602090B020408020E190707190E020804020B09020607FEE3 +111D0A0A1D11030A05010D0A03060701111E07071E11010706030A0D01050AA8101C0707 +1C1002070602090B020508020F1A08081A0F020805020B090206070118101C06061C1002 +0804030A0A020507010F190808190F010705020A0A030408180F1B07071B0F020805010A +0B01060701101B08081B10010706010B0A010607A10F1B07071B0F010704010C0A010C01 +0F1B07071B0F010C010A0C01040737121F07071F12010805020C0C02050801121D0A0A1D +12010805020C0C020508D9121F07071F12010805020B0C02050A03101C09091C10030A05 +020C0B020607FAE002252602022526E202252702032526020225270203252601811D320E +0E321D030F09031314030A0E041B2F0F0F2F1B040E0A03141303090F0267121E08081E12 +010A04020B0C02060802111D09091D11020806020C0B02040AFB121F07071F1201080503 +0B0C02050901121C0A0A1C12010905020C0B0305080182111E08081E11020807010B0C02 +050901111C09091C11010905020C0B010708FD7F1F340E0E341F031007041413030A0E03 +1D320E0E321D030E0A03131404071000000F0083000006A9070B0017002D003E004F0060 +00710082009300A400B500C600D700E800F9010A00000116151407060F01062B01262726 +35343F0236333233160506151417161F011633323F013635342F0126232207133217161D +0114070623222F0135343736133217161D0114070623222F0135343736133217161D0114 +070623222F0135343736133217161D0114070623222F0135343736133217161D01140706 +23222F0135343736033217161D0114070623222F0135343736013217161D011407062322 +2F0135343736373217161D0114070623222F0135343736133217161D0114070623222F01 +35343736013217161D0114070623222F0135343736253217161D0114070623222F013534 +3736253217161D0114070623222F0135343736253217161D0114070623222F0135343736 +02442E1A143215607B1634262F3C290C658804033EFEFA4F09050E0E1E2C344833520420 +2030374BF71D0F071A0B0D240D011A0DA81D0F071A0B0D240D011A0D8A1C0F071A0A0E23 +0E011A0D9B1C0F071A0A0E230E011A0D031C0F071A0A0E230E011A0DBD1D0F071A0B0D24 +0D011A0D018A1C0F071A0A0E230E011A0DC21D0F071A0B0D240D011A0DC21D0F071A0B0D +240D011A0DFD551D0F071A0B0D240D011A0D01121C0F071A0A0E230E011A0D01221D0F07 +1A0B0D240D011A0D01031C0F071A0A0E230E011A0D022037513D4B473C1A73072D38505A +79390E7A0C805F652222161012232F3264741A1B302632016A1F0C0F061F12072C0E031F +1408013A1E0C0F071E13082E0C051E140801341F0C0E071E14072E0C051E1408013D1F0C +0F061F12072C0D041F1408FD021F0C0F061F12072C0E03201308FEFC1F0C0E062012072D +0D041F130802071E0C0F071E13072D0C051E1507FA1E0C0F071E13072D0C051E15070104 +200C0E061F12082D0D041F1309FB0C1E0C0F071E13082E0C051E1408D31E0C0E071E1407 +2E0C051E1407E71F0C0E062012072C0E03201308CA1F0C0E062012072D0D032013080000 +00010085FFF706A705C90009000013211B01210113090113850257BABB0256FE1CBAFE19 +FE1AB903900239FDC7FE9FFDC80160FEA002380000020085FFF706A705C9000900130000 +13211B01210113090113370309010301210B0121850257BABB0256FE1CBAFE19FE1AB944 +8C0175018098018FFE1A918EFE1803900239FDC7FE9FFDC80160FEA0023815FE4E010CFE +E601C2011801B7FE49000000000100AA000403EB05D50011000001161714070901371325 +370126353437013603B0390209FD7D01EE5626FE37E0FDDD134102930B05D50236240CFD +85FDF4E6FE38275E023417171B3F02860A000000000100AA0000068105D9001900001321 +321514070901371325370126353437012111060726271136ED0549401BFDC101E75925FE +31E7FDEF0F3401E5FBA8014846010105D953221BFDC5FE1BD5FE3D226C0216102D1C3201 +DFFAFC44010143055B390000000300AA0000068205D8000D001900260000011000212000 +113412243332041205100020001134022420040205140623222635343E01321E010682FE +4AFEC9FECBFE4AC90168BABD0168C8FA71018A0230018AB4FEBCFEACFEBCB4035E6D4E4D +6E325A5E5A3202ECFEC9FE4B01B50137C20169C1C1FE99C4FEE8FE7701890118B10142AE +AEFEBEB14E6D6D4E315A30305A0000000003007D0000069F05D1000A0016004300000022 +061514163332363534252206151416333236353426251617161514062322263534373637 +36353424200415141716171610062322261037363726353400212000151405B19467674A +4968FB9C496868494A6767041719165BB68281B65A516F79FEB1FE20FEB1797D575AB682 +80B75B12137A01C00141014401C001E9674A496767494A67674A496868494A675511165C +8281B7B781825C51097399B4FDFDB4997204575CFEFCB7B701045C110F8EB6F8015EFEA2 +F8B100000003007D0000069F05C9000A0016004100000134262322061514163236253426 +232206151416333236011400212000353437262726103633321610070607061514042024 +35342726272610363332161007060716061868494A67679467FC4D674A496868494A6704 +23FE40FEBCFEBFFE407A13125BB78082B65A577D79014F01E0014F796F515AB68182B65B +1619730491496868494A67674A4A67674A496767FE0CF7FEA3015DF7B48D0F125B0102B6 +B6FEFE5B58037297B4FBFBB4987109515C0102B6B6FEFE5C16118B000002007DFFFD04E2 +05C6000B001B000001220615141633323635342637161716100023220010003332170117 +02868FC9C98F8EC9C7BE131298FECED9D7FECE012FDA6054010E9A035FC8908EC9C98E90 +C83B101399FE50FECF013101B001321D01D359000003007D0001079E05C9000800110031 +000001220614163236342600220614163332363401161514002322003534003332171617 +37263534003332001514002322272627023378A9A9F0A9A803B3F2A8A87978A9FCBE26FE +FFB7B5FEFF00FFB7B9800202DC1C00FFB7B80100FEFFB7B5810B0B02DAA9F0A9A9F0A902 +5AA9F0A9A9F0FDE45464B5FEFF0101B5B70101800302894955B70101FEFFB7B5FEFF810B +0C000000000E008C0000096B05D5002300350041004D0059006500720080008D009A00A7 +00B500C500D9000001330405041506232227252635343736353427210615141716151407 +050623222734252401353315141716190121111037363D01331503141633323635342623 +220605140623222635343633321627140623222635343633321611140623222635343633 +3216021606070626272636373633320116060706232226272636373616011E010E01272E +013534373E01041E011514070E01272E0137362436161716060706262726353425361617 +16151406070626272636013E01171E01070E012322272E013534013E013332171E011514 +070E012322272E01353404F709025B0101010F24670607FE693C0C4422FB9C22440C3DFE +690706662501100100034C90F1E7F957E8F091ABECA5A8EAE9A9A7EA0272835E5D83835D +5E839F20181721211718202018172121171820D11A0613132E0E0E08130F1105019B0F07 +140F11051B0F0D0713132EFE0C18140E2A16161203082902582C110308291616150708FD +AF2C2A0707141618290803027F162908031116162B060715FE150E2E1313080F0D1C0511 +0F1305017D0F1B05110F14040C0D1B05120F130405D5119BA4AA99018C122B1319472017 +030317204718142B128C0199AAA499FE764B984B395FFEE2FE1601EA011E5F394B984BFD +DDA7EAEAA7A6ECECA55D84845D5F8383DE16222216182222FD7318212118172222025726 +2E0D0F0713142D0F0AFDEC132E0F0A0414132D0E0D06016108292C150607220D09091615 +C30E220D080916150807291716060E141618290806151609080DEC07151609080D210807 +15161629FE9412070D0E2F1114040A0F1C0511020C13040A0F1B04121013040C0D1C0511 +001000910000097005D50011001D0025002D00350041004D005900640070007C00880094 +00A600CA00F0000001352315060706151121113427262735231505321615140623222635 +3436042206141632363402220614163236340222061416323634010E01171E01373E0127 +2E01010E01171E01373E01272E0101061617163637362627260605061617163E01262726 +06051E01373E01272E01070E01251E01373E01272E01070E010116363736262726060706 +1601163637362627260607061613353315141716190121111037363D0133152506151417 +16151407052322273637362516323704171617062B012526353437363534273716151407 +06151417051633323726272425271523040506071633323725363534272635343703EC31 +0FCBC3059DC4CA0838FEFAA6E5E6A5A3E7E60100B88181B881BC2E20202E20202E20202E +20FEF212080D0F2D1312060D0D2D015913070D0E2D1313070E0D2DFDFC07161516290707 +14171629024707141615290E14161529FDAB07291716140707291615160255062A151614 +070729151614FE3E132D0D0F0812132D0F0D08017E132D0D0E0713132D0E0D075686E1D8 +F9C9D8E186FEA91A4B1C3BFE8A0A79410DF8F802431830180242F8F80D41780AFE893B1C +4B191927361F1F01460F0F4A3E0AECFEC7FE243036FE23FEC7EB0A3E4A0F0F01461F1F36 +2603C2408E403141F1FE65019BF14131408E4048E7A3A4E6E6A4A3E7AD81B88080B80114 +202E20202EFDB5202E20202E02450D2D1312080D0F2D131107FDFF0E2D1313070F0D2C13 +130701311629070714171629070716D515290707152C2808071439171407072915161607 +0828A91516070729161516070729FE750F0713132D0D0E0713132C01E60D0812132D0D0F +0812132D0120479C373757FEF5FE3601CA010B5737379C47E506122044261A260BA5CBC7 +658B110101118B65C7CBA50B261A26442012061C1222283D161514138806979D70811901 +011981709D970688131415163D282212000200B80000067505D50007000B000013211711 +0721271117112111BE05B00707FA50066E04E005D507FA38060605C868FB0804F8000000 +000300B70000067605D50007000B00220000132117110721271117112111071506070003 +06230623022B0135373217333637363736BD05B30606FA4D066F04E0874C29FEB93E0610 +750D65CD17A2974906333F629B6105D506FA38070705C868FB0804F89E06413AFE46FEBD +3B2F0102074983A674B3BB78000300B70000067605D50007000B001A0000132117110721 +271117112111050901170901150701230123270901BD05B30606FA4D066F04E0FBF7019B +01975FFE6801985BFE6504FE69045B0197FE6905D506FA38070705C868FB0804F886FE69 +01975BFE65FE66035B0197FE6C5B019A019B00000001009A00A003A70540001400001333 +01360132373317090115070123012327010035F10501290B011A04060455FED2012E57FE +D402FED203570131FECF0540FE0B0801DE0F55FE04FE07035301F7FE0B5601F901F50700 +00080064000006F5077600080011001A0023002C0035003E007E00000133062B01263D01 +340133062B01263D01342533062B01263D01341733062B01263D01340133062B01263D01 +340533062B01263D01341733062B01263D013425331715332001161D01232627262B0122 +0715140727262311140F01222F013537331715163B01323F011122070623273537232627 +23220F012335363736213501D6031E5C063A0256021D5C0739021E031E5C063AF7041E5C +063A021E031D5D063A0126021C5D07395B031E5C063AFDAB3A060201B801182B02161323 +392C9670082197886A1E5B2502062B050B3E0A371406D356110E07070443C54363221403 +3AC0EF01380601CF0A2302380164CF08230337E3CF08240336B9CF08240238013BCE0724 +033769CF07240337EBCF092302399A0570FE504C0C070D29165A2E0D023B36FD9F5A1502 +56181706060A5A332502593633050B2E381937100280C2C6700000000009009800000693 +05D9000B0011001C00330044004D0079007F008F00000114151417213637342321061316 +1721363F0106073637363534352623270607333215140706070607333237363736373635 +342301331406071416172326272627343534360116333237363721160536373217151405 +0717140721263D013735242F0135363316172611343321161533321514070607062B0127 +0116172136370106070607233E0135342635331E011501230F04810B031EFBA01C3F0510 +03F40D0949093A57301D0120390201363B452C512032073A26136C361D1878FD30096201 +880408136D210A6FFEDBB8BDAEB1225CFC3E250345FE661206FE997E0210FDF11104FE65 +3203041255D6C936046721368F56237035430711FC2B060A04430B04FE9806133F0B0603 +5039050A4002B40607374834581604FECD1A121616C76D86014D3752060511561C202F82 +4D28013D483A0D1F2C714C55440329388857716BB192652D5005066578FAF30D0B10974E +57180A0A0A103D240A0F08071006020255120D040B0914FE012F300218639B9929164804 +013F1A12131901F5321C405B6E44463854242E4A3F000000000200AC0001068105D90007 +000C000009011307212713090103210301039E028F5403FA3406580297FDCD4B04F347FD +CF05D9FE77FBB40306044C0186FE35FC5F03A1014B000000000100AC0000068105D00009 +000009011317072127130037039B028C570303FA34065A027E1405D0FE77FBBF03030604 +440180060001009F0000068D05D400530000010326353437363332163236333217161514 +070325363332171617161514070E01151416151407060706232227262703161510072336 +1134270306070623222726272635343635342627263534373637363332170378D84A5825 +2658412C423A5C380D5BC701454D48393523234607126C250C0B21394021236A4CCF0970 +5F9207CE4D6923223F38220C0B256C12074623233538484E03080134686F6B4016525272 +2A257F74FEEB651C110C1B4242151539271D11372A1F24251B290C226601165853FEDDE7 +F201354549FEEA66220C291B25231E2C37111D2739151443421B0C111C000000000200AB +011E06810498003E00450000011617140706070413331707230607222734331633323332 +372427232207161506052403343716171507141732371225161D01140736373235363736 +3534260306151417352605A76F144AB0140100371B132E031198621914103902014D0DFE +FA070383448609FEB2FD992C4233080D71590D35012AC42A5D643D484E39258701E52004 +9805735719242C1BFEF04A0DAE095D542D4D4DF16D4065F6100301643A09032C17275A0C +4D01DE1406A00827634D1426542924240D3CFEA50809844903B50000000100AC00E70681 +048D003200002521222635343637363733372326272635343E013B013721222635343637 +3637213721222635343E01332136373633213216150636FD502B3D1C1912133604882F19 +1F1D321AB401FEFF443E1D191416015202FD032B3E1D321A032C08101F2B01762A3EE73E +2B1B320D0A030C021A1E2C1B321C0A3D2C1A320E0B020A3D2C1B331A16111F3E2C000000 +000100AC00E70681048D0032000013343633213217161721321E01151406232117211617 +1E0115140623211733321E01151407060723173316171E011514062321AC3E2A01762B1E +1108032C1A311E3E2BFD030201521614191C3D44FEFF01B31B321C1E1930870436131218 +1D3D2BFD5004232C3E1F11161A331B2C3D0A020B0E321A2C3D0A1C321B2C1E1A020C030A +0D321B2B3E000000000200B200D4067B048D002200440000251334262321220721302322 +1433210721221514332107232215143B0107232215143307262736373337232627363733 +3721222736372137212627363321363721321615030608493021FE9F3617FCD9044F5302 +FF0DFE9E5353013A09DD5353AE133E53531C5D01015D4A04AB5D01015DE402FEC65D0101 +5D016804FD045C01015C032C204201762A3E4BF10315253339924C4B494F4B484C4B491D +016867010E01686701136867010F01686745023F2DFCB300000200930000044C05CA0021 +0044000037053236351134271136232215112711342322151127353423221D0127353423 +221527363716171517353637161715171134371617111711363716151116171114062325 +13B1031524343A024A494C4C484F4B484C4B491D016867010E01686701126967010F0168 +6744023E2DFCB201734A31200162361603275353FD020D01635252FEC409DF5353AE123F +53531C5C01015C4B04AC5C01015CE403013B5C01015CFE960402FD5D01015DFCD42141FE +8A2A3E4B029B0000000200B100D3067B048D002100430000253235342B0127333235342B +0127213235342321272132342B0121262321220615130703343633211617213217060721 +172116170623211733161706072317331617060703C153533F12AE5353DF09013C5252FE +9D0D02FE534F04FCD91636FE9E20314A284B3E2A01764121032C5D01015DFD0304016A5C +01015CFEC503E45C01015CAC044B5C01015CF1494B4C484B4F494B4C92393325FCEB1E03 +4E2D3F02456768010F01676813016768010E01676901000000020093FFF9044C05C20021 +00430000131433323D0137151433323D0137111433323511371114333227113635113426 +230527253216151106071114072627110711060726351107150607262735071506072627 +B1494B4C484B4F484C4C494A023A3424FCEB1E034E2D3E02446768010F01676912016768 +010E0167680102B353533D14AE5353DD09FEC6535301620DFD0153530327173601612130 +4A294B3E2AFE8A4220FCD45C01015C02FC04FE985D01015D013A02E45D01015DAB044A5D +01015D00001D007D000006AF05D8004F0080008B009500A400B300BA00C100D600DC00E3 +00E700EB00EF00F300F700FB00FF01030107010B011A0126012A012E01320136013A013E +0000012017161D01140717151407333635363B013215161D010623270607151737161514 +07142B01222F01062322270615062B0122352635343717373525072227353437363B0132 +1F01352737263536253601141733352635363B011707171507151417161D011733373437 +36352737352737161D010717363D013427262B012007060516151407062B012227342116 +170623222734353413332433173635263526230607061525062306151737161735342726 +352605171507263534371615140727350116333637263534370607062B01262726271615 +143716173335260515323F01220705151735251537350515173533153727071537270715 +333533153335071517351715333507153335052707151615163332373637263506250716 +151417323F0126230725071735071517352715173517153735371537353715373503A701 +31923A65061906A02C24083F461A3F59F83EEA465F4C41063345BE4CACAF48D1332C0E38 +4C594CE4FED06C450746042721303C85190C6B23010767FE9A46071F0B0D0D130D201399 +4565597FC4211A210D1F191F0647E0807026FEAD691401712E02385A064E2401CFCB0625 +604243EB0601181866204607141C34F9FC22110E342E5F3FF165CB1902650E33267B4528 +31FEF52DD6D92B011C241C4B7438BF0C072D16101419060901870F03190D18FE96120124 +1AFED619CC1B0247170373201419A51973194D20FDF9720745060E13469B2213BA030F12 +E332150C3E061F5FFDA3031D19197019CC1B0F19141A05D8C16C544572665E06352E3E3D +397C3522182D076C2912640D122C263E76765D636363195770432D2B0D0D64129507380D +1B4270703E06575D6FD8E6611DFE78767550703832132C8E44A80C5E1E382C180D1A5E42 +244BBB9C122B140B2231AE18525B2BD2652AF13BD00D320B0D9B9B570A51979B030250FE +128205080A49263F09677013EB6F25190B0512770D5E195341240D079F320C39692D356E +300832A2FE86C70EBF0A0C416926AE4916595E505D44139B25885C3F3F5C4F57430D2C05 +2C05310A2F0F32053131082F063D023B06373737373D3305320E31380731317B05051339 +3038684E1D251E625C44682C0F29683F1205CC3106374932063121310732183206320432 +05330A3207310000000100AC0000068105D8002600000132171615140701071417253217 +151423052227263D013437003736353427230522273534373304428F71347CFD6C0B6103 +6E4E0969FCA1A16C1B8B026D140B620BFCB5390B620E05D88D4D4F8A62FDA03E591AD161 +0359C6AE3538188A6C02371B1B165020CC501E400C000000000600AA0000068205D80011 +00240030003C00460058000001200116151005062B012001263D01100136052623200306 +15100516332013363D010225260123222713163B013237130601061D0121351025363713 +062516172126272627131601321716151407062B012227263D013437360389017F010872 +FEC3C2D420FE84FEFA630152B9021EA6A7FED4EB7E0117B2DF0155EA5901FEAD05FED41C +A88DD1303808322ED48DFEE05FFE57011F1213D20702865F03FE56011F222BD27DFE4952 +381944292E07503914482705D8FE8DAFD6FEB0FD930183AEB21C0153010284AC5DFED9B1 +C2FEC4E28A015A96A60F0159E004FB4859016F1F1DFE92580328495F05100120DB0D0CFE +92048F91B03B2E3219016C4FFECF50252E47361F5225260549381C0000060064000006C8 +05D8000F001D0029004E006C008D0000013E013534273637161514060726353403262322 +060726273633321617060114161706072E01353437160106232227262707060706232227 +163332363736353427371633323717061514171E01333201161716151407331617161115 +2E012306072736353427353637363534260126353437363B0127262712250E0115141716 +1F010615141707262B0122232206043844480124240279550A0E3F4C075B3E2115577407 +854A19FE285B460310686F022A03C16DA62E32A45C013D775C607C80555037B83A2F1B45 +22201F1D401A373FA04550FEA6A25D1045046978C30DD270B782460140B6543518FB8604 +796DB412022C02110114B1222665BF0142024071A60E030480B20191288B410C0C0E0513 +125FC32518190E020D23042B161C42053721FEEA4E8F2026222ECB4F100F06FDB2530624 +AA0258452F4B2841615D644C502A18172746436159723D05A043D934346D6F0A4382FEFF +0A9DB60A9328070746194B1F9C57591A8EFC46181995A176026289010E7068B427554498 +27521D3C090A24889300000000170064FFFC04F605D10007001D0023002B003F0056006D +008300A200AD00B200B700BC00C100C900D000D500DA00DF00E500ED00F4012300000106 +151433323726172207062322273727363332171617060726272435340106072326370316 +333235342726131506232227352635363716170615140407232627152735242736371617 +061514041514072736353427360315273524273637161706151417060417060727363534 +072427363716170615140417060726273635342715271315273524353637333217071706 +232227262322151404170607262724273601141E0133263437220E010516173726271617 +372627161737262716073726271415140717353427060717363534051736370607173637 +0607173637061F013534370617372635343506153F012627061514171527352623220720 +273625161716333526272E0135343E01321E011514060706073314231536370417062126 +23220357040B0C190A4F0708423719165B6C233E0B0DCC0D028D469D0112FE885F1F0F01 +56681B0D0A0522EF0B1A2203AE04402E2C3D0136020F1A744AFEE80402803456AE01B670 +31450201514AFE930305714D69CE010A027602059668A3FDFEF30501704849A302150304 +AE213AAFBD4A4A4AFE810DCD083D346D5C1718384208072A02D20607AE3F6F0107020CFE +761221120F0F11221201BA742C1B609773262A5F7E5011313E8135013D2767163D3E3234 +3C2BFD131B2D735B2C2A2673641431115054103E334A403D1627683C343201E54A2D4823 +2AFEF55954015F175902010302141717292A29171614030301015818015E5459FEF52A24 +4404200804090A143F02180517193E02047D3E201109142A30FC74223C482303A60B0805 +0909FC2D381A38291E3631180D06151529366638AD5A0D5C2B48442013091A272A3E4A2E +0E0B111D05051701998C0D892662351614070F1D020234435545201B271A27A42160391E +0C07212C284D5445150F0B1E2A211D850C02047F087D15717E043D18170518022F2B2966 +5B14100F1C341F026612201121422211203C4030263915633F22562B8047136F4D934B08 +7E61110F843F0B0C7D62893919655C0D50263040116B223F632A89134780458908064A8E +588D0B3F840F11657D041939890D0D5CABCE06C2340CA55C06361E011801020A27161527 +1616271516270A020101161E36065CA50D000000000200AA0000054E05D9000800280000 +0126270607161736350326273637161715140733323711262B02111417213635112B0122 +0711163303790279790208737BC5770C03CACA0383A3B5AEA9B306A463FEA663A806B3A9 +AEB504DEB10202B18E71589FFEF165B8F30202F30EB75863FEF736FE0CB5AEAEB501F436 +01096300000300AAFFFD048805D900030020002C00000115333527353315331523153305 +15211117152703230327351711213521352335133311213521352315211521022DCAB7AB +7D7D090194FE638F8801B1018686FE6B019676A447010CFEF447FEF5010B05403C3C3366 +66A25801AFFDE88B9C85FEEE01BC869B820171B058A2FCCF01BB476363470000000200AA +0000059B074A000700200000011133323610262301112132161514062B01113733090123 +0311231103230901330328D1747F7F74FE8A0176CED4D4CED1DADCFE6701AEDBEFA6FEDB +01B7FE6EDC06A7FDD890010890FC04049FDFD8D9DEFECDEDFE42FE280106FEFA0117FEE9 +01E101B5000100AA000003B205D7001F0000013317153317150723152117150721110723 +271121273537213523273537333501D7AB06A50505A501240606FEDC06AB06FEDE050501 +22A30505A305D7059B06940671069805FC820505037E059806710694069B0000000100AA +FFFD068205D5002B00000121171507231121353733171107232735211133171507212735 +37331121150723271137331715211123273502BB01B60606A0023B066A06066A06FDC5A0 +0606FE4A0606AAFDC4067306067306023CAA0605D5067706FDD1A10606FE4906069EFDC8 +066A06066A0602389E060601B70606A1022F0677000200B20000067B05D8001B002C0000 +013332172327200306151005163325150607062B01200326351025360133321733150716 +152707233537273533039C15DDD206EFFEA9D15E0156889C0101A08A51361CFE91EE8401 +86AC027F03063ED1A841B1A90342ACD505D89236FECA9EB9FE92D64732066B1A0B013EC0 +E901AAEE59FE33C9037EBB117C7C03C97E030000000400AA0000068305D90016004F0062 +0073000001163332371633323735331715140F0122270623222734173316173215033324 +113427351611151007060715163B0115062B012207272322273533323735272627263510 +3F011506151005350335373225150607061514171523262726351025363334251617161D +01140706073437363D01102502EA1B402E21252C42150502451E2C23212D5110B2023222 +080A0201246EDEE04C2F50A51A7548811645449038883C7956587D2463C7217501261203 +23FF005F418692029E5D26010C7923027B8482B0A6591F365CFED605D94B303044072805 +3B1B042C2C652287400B05FC20E40170C2CF03D7FEEB24FEF1DD42160528052163631C05 +2A0340724AB1B10101E61F05C0E2FEA7F502032616A92A064563CCEFE9D6024AE96B6701 +0CCD4604021E70B7D82FD4B651060752AFBF02016DF40000000300AA0000050505D9005B +0066006E00000132170F0116171615140717231532373635342737331611100326232215 +1417161514150623062322272627151415141714232235363D010615062B012227343635 +34232207021134373317061514171617352335263534372F013603141733363534270607 +06250615141736353402D84252130F7F3338CD0178798E877D1505EA95784F38781E0D2A +0C092C063B5E50686F509A073906290E962E52749AE405157DD63F7977CCEE181057CE87 +04461D593328017022419005D94B0F7C2E505155C7624B78819DC6B07213A5FEFEFEE0FE +C9AE2D1C93262A02033B0222EE3196030446713B3C744D925DBF233B40A4222BAD012101 +4DE9A61379AEFBA32F12784B5CCCBE677C1248FDFF924A698B537E194A3FA2736389663D +A8980000000100AB0000068105D700320000013217161514071707232706232227150123 +26273601363316333237270723262713041507161735363D013427262B0122073603E8ED +D1967DC28C03B9A5D9AA8FFEFC03CC041A01591807719EBF97D96C06BB09E9011B7EE61D +42FB8977256278AA05D7BD9BD7C98A9483AA6E5803FE318D071901981D5568C673740C01 +020E059FAF0E025A7C24FE6545378F00000500AA0000068205D8000B00120016001A0021 +0000131000212000111000212000131417010306001316171B0136370901363534002711 +AA01B60136013701B5FE4BFEC9FECAFE4A987901AA02C4FEA3ADB0C0025FCDAAFE8901BB +71FEA1D302EA013701B7FE49FEC9FECAFE4C01B40136E57801F501C204FEA3FD62B10602 +68FD9608A401B6FE9770F5F9015D04FE42000000000400AA0000068205D80012001E0028 +0034000001151E01333236351000212000033E0133321605140623222635343633321605 +34262206151416323625100021200011100021200003960AC59092C9FE62FEE4FEDEFE7B +1418B1958FC601CA3D262A3C3C2A283BFD453B523A3A523B03E5FE4BFEC9FECAFE4A01B6 +0136013701B502F81A8EC1CF9A01160198FE7BFEC9ACB2C09E293A3A292A3C3C2A2A3C3C +2A293A3C27FECAFE4C01B40136013701B7FE4900FFFF00AA0000068205D512260F610000 +10270F610000028610070F610000050DFFFF00AA0000068305D412260F61000010270F61 +0001028510070F620000050CFFFF00AA0000068205D512260F61000010270F6200000285 +10070F610000050DFFFF00AA0000068205D512260F61000010270F620000028510070F62 +0000050DFFFF00AA0000068205D512260F62000010270F610000028510070F610000050D +FFFF00AA0000068205D512260F62000010270F610000028510070F620000050DFFFF00AA +0000068205D512260F62000010270F620000028510070F610000050DFFFF00AA00000682 +05D512260F62000010270F620000028510070F620000050D000A0087FFEA06A505E1000C +00400046004C00520058005E0064006A0070000000141716333236342726232207052634 +373336372736371736373536321715161737161707161733161407230607170607270607 +150623273526270726273726270136370306070516173726270136372706072516172526 +2701262705161725060717363705060713363725262707161702F4302F43425E302F4143 +2FFD7F1C1C701B6B540F63527CC2274E28B6894F661155691C701C1C7014715511664F8A +B627274EB58A51611151681B01FB21240C8E620180291DB7648CFEAF0816CB4C1702F718 +0601121351FD6B140AFEF0164B02B40816CC5211FE7421250C8D63FE7F1D27B8648D0326 +842F2F5E84303030C3274E27B77C505F1050661E701C1C70166F510F605179B9274E27B0 +83505C0B51671D701C1C70176D510B5C5079BA012C130A010D164DAA0A13C64E15FE3E26 +1AAB6082371E220A7F62FE4B1E2A118C56F42622AC677B89120BFEF01E4DA50914C24D1E +000500AAFF6A07AD066E000A00150021002D003D00000134363332161406232226253436 +321615140623222605100021200011100021200013100021200011100021200013363736 +2017161707262726200706070282513B3A52523A3B510242527453533A3B51FBE6020E01 +740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE41EC2433B60204 +B63225731D278EFE6C8E281C03FD3B51517652533A3B51513B3A5353D90175020FFDF1FE +8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FD253833B5B53338482C278E8D +282B0000000500AAFF6A07AD066E000A00150021002D003D000001343633321614062322 +262534363216151406232226051000212000111000212000131000212000111000212000 +133716171620373637170607062027260282513B3A52523A3B510242527453533A3B51FB +E6020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE41EC73 +1C288E01948E271D732532B6FDFCB63303FD3B51517652533A3B51513B3A5353D9017502 +0FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FDAA472B278E8E272C +483833B5B5330000000400AAFF6A07AD066E000A00150021003100000114163332363426 +232206051416333236353426220601100021200011100021200025161716203736372706 +0706202726270282513B3A52523A3B510242513B3A53537452FBE6020E01740175020CFD +F4FE8BFE8CFDF201732433B60204B63225731D278EFE6C8E281C03FD3A53527651513B3A +53533A3B5151FEB20175020FFDF1FE8BFE8CFDF4020C5B3833B5B53338482C278E8E272B +000A00AA0000068205D80007000C00130022002A0032003A004100490058000001331711 +0723271105171507272517072326273505321F0114070623222726353437360121171507 +212735252117150721273503331617150727352533171507273525331711072327110306 +1514171633323736352726232203734E06064E06023939F83DFCFBFD3E03C82D0231D75C +0DC44830B56525BD46FD4B01530606FEAD060477015A0707FEA606470386723DF8FDB403 +3BF73D021B4E06064E06248219457C203186093F922705D806FEA10606015F9C3E03FF3F +EEFE40C73704B5E260BD6418A8405CB4681BFEED0650060650060650060650FEE7827903 +3FFD042B3C03FE3E047706FEA10606015F0256477B3F2C72114382419A000000000202DD +0000068305D70017002B000001200116151001062B012227352437361110252627353437 +17150411100507153332373637363D0110012623037E018B01106AFE74B3B0312F510115 +7D9BFEB2885D952801C9FEAF2B06569EE9521DFEA5A39E05D7FE87ADC6FE78FEFF620F06 +4FB1CA010C0190E05010030B0E3E03C5FE14FE6EE818045398F45D5D09013D0105660000 +000200AA0000045005D80017002B000021200126351001363B0132171504070611100516 +1715140727352411102537352322070607061D011001163303AFFE75FEEF69018CB3B131 +2E50FEEC7E9A014E885D9528FE3701502C06569FE8531C015AA49E0179ADC60188010163 +0F074FB1CBFEF5FE70E14F10040A0E3E03C501ED0191E818035396F55C5E09FEC2FEFC66 +000200AFFF30043A05DB0031003E00000116171615140706071537150717232723353327 +26272635343736372627263D01331514171617333637363D013315140706052306070610 +163332361027260369282485846C8FD8DC018101CACA02936D858524282824858E5B5575 +2674555B8E8524FEF72675555BB7827FB75B5504561A2483BDBC7C640ED1026401CACB62 +D10D657CBCBD83241A192583BC080A825A530707535A820A08BC83255F065459FEFCAAAA +01045954000200AFFEFF052D05DA000B0023000001220615141633323635342601263534 +003332001007060711211521112311213521112602EEA4E7E7A4A1EAEAFDC9A90150EFEC +0153A988B40110FEF0B4FEF00110B50527E4A4A3D8D8A3A4E4FCED9DEEEF014CFEB4FE22 +9C7E12FEF87CFEFF01017C0109110000000200AFFFE3052D06BE000B0023000025323635 +342623220615141601161514002322001037363711213521113311211521111602EEA4E7 +E7A4A1EAEA0237A9FEB0EFECFEADA988B4FEF1010FB40110FEF0B596E4A4A3D8D8A3A4E4 +03139DEEEFFEB4014C01DE9C7E1201087C0101FEFF7CFEF711000000000200A2FFE306A5 +05C30009001E000001220610163332361026130623220010001716170121372111071101 +16151402E1A4E7E7A4A1EAEAFBA8F4EBFEAC0159E6E4700169FE8D8C01EE8FFE9A700396 +E4FEB8D8D80148E4FCF1A4013D01DC0155090867015C8EFE148F0175FEA492C1E8000000 +00010153000005D705D8001B00000135323634262322061D012334003332001514073311 +331123112135030D7AAAA97B79AB960102B8BB01026DE39797FC13021301ABF2ABAB7902 +B90104FEFCB9A87B03C5FA28017C9700000101C00000056A05D8001F0000012335333533 +1533152311363332121514061D01233436353426232206151123022A6A6A98B2B26F98B2 +EF8C978D9B6F6E9A98048D97B4B497FE7D6DFEFEBB5AE5790284EE487BA9AA7AFE460000 +000200F80000063205D8000A003100000022061514163332363534271617161406232226 +34373637112111213533112335211121113311211121152311331521112103CD704F4F38 +374F3A3D304C986D6B994C2F3EFEE0FECE9B9B0132012097012001319999FECFFEE0018C +4F37394E4E3937C212304CD89999D84C3111018CFE4B9702D398FE4A01B6FE4A01B698FD +2D9701B5000101040000062705D8003C0000251523352335333526272627350727373317 +152715331523161716171107273733171527113637363D01333507273733171527153315 +0607060715331503E297B0B0A57A9601900191989090020201684E67910192979191654D +6A019001919890900101967AA5AFBBBBBB978B167A96D7548E8C99998C8E540297684F14 +02CA8D8B9A9A8B8DFD37144E6A9601598E8C99998C8E5904D39679178B970000000201EC +0000053F05D80012001D0000012120171615100706232111211715072127111711213237 +36373427262301F40199012E6420FB3B36FEAA027A0808FCFD0891014682481008A22551 +05D8D04D5FFEF65C11FDAD0882080805C783FE24821A50A43C1000000001005D000006CE +05DA00240000211000232206151417232635343633201316173637122132161514072336 +353426232200110356FEE2A9812254865DA3920174830805040884017393A25D86552282 +A8FEE202580305C522808084A184BBFCFB312828310305BB84A184808122C4FCFBFDA800 +000200B70000067505D80008002E00000122061016203610262736373E02331522020706 +071617161514002322003534373637262726022335321E011716039593CECE0126CFCD95 +834C5661A1B97BA78315172E2B92FED9D3D0FED8942930181581AB7AB9BA48554D035CCF +FEDACECE0126CF96053D42B4AE6CFEC86C130F1E2995D2D1FED90127D1D2952A1E0E136C +01386CAEB4423D00000200C00000066A05DA0013001B0000012627350420251506071116 +171524200535363F01363317110623270212A8AA015B02F80157B0A6A6B0FEA9FD08FEA5 +AAA8987475E97475E904FC1634945A5A972F18FBE2172F985B5B9435150C0D0D04070D0D +000400E700400645056F0008001D0026003C0000002206141633323634012C0127351604 +3332272635343633321610070E01013236342622061416010C0117152624232217161514 +062322263534373E010542BE84845F5E85FE5EFEC8FE9499FD016C3B820883CD9395CE68 +49F6FDAB5E8585BC8685011D0139016C99FDFE963A850883CD9395CE6849F502B884BE85 +85BEFE0C02282B7C54161A6CA793CFCFFEDA674D4C02B684BE8484BE84027802292B7B54 +151A6CA694CFCF9492674D4D0002011E0000060D05D80013004D0000013E013534272E01 +2322070E011514171E013332133436333216151400151617323717062322263534003534 +26232206151416171E011514070607062322262726353437363736333217323534260294 +4B320E1D712724234B310E1E6F272330DFB4ACDAFEDE04864764417F6F6390011FA4847F +962E19250920337438383CAD2F161B337537374C4A084D018C1D712723234B320E1E6F27 +23244C3102F0A1C9DDB0BBFE0AB47C03584877796FC701E1C286A59B813C913E62801157 +44732D164B7836383C3C722E15290D1AB80000000002006DFE8F06BE05D8003A00440000 +013216153E013332161D013E01333216111001161723262706073536372711343510270E +010711231110262B0222060711231134273316173E010111241334262B01220602A83F77 +28C64B3E523083443C64FE830192A82E4AA7AFBF7C092E3A853F971F23010129B3139598 +8E762417B702C40102182D1C041E8F05D8C68077CFA7DBCA7D77E8FEEFFE68FEBF5EC129 +A16507741C57D90357121101190101D9C8FC61039A01416AE2D7FC740441BEBF4FB05DBC +FC92FDD0FA0152C18BCE0000000200AB006B068105390003002300001321152101213521 +26353400333200151407211521352336373635342622061514171617AB05D6FA2A022DFD +D30162430101B9BA0103440184FDAF01121156AAF4AA551013010398018F986883B90103 +FEFDB9836898980D1155797AAAAA7A7955110D0000010045FF3C06E805D8003800000114 +161733353317072735232227262703343510270E010711231110262B0222060711231134 +273316173E01333216153E013332161D0113050067595904CBCB0459CB442C08152E3A85 +3F971F23010129B31395988E762417B7453F7728C64B3E5201010F6F7D0176ADAF047678 +4A760316121101190101D9C8FC61039A01416AE2D7FC740441BEBF4FB05DBCC68077CFA7 +DBCAFD84000100A9FFFF068205D800140000011109010709012F0209013F020901213521 +1105EAFD3F013D6CFEC3FE58016A0101A8FEC3016A01013D02C1FE04030002D801FCFD3F +FEC36C013DFE58016A0101A8013D016A01FEC302C198FD00000200C00000066A05D80029 +0031000001321237363332161514062322270E0107233537361326022322021514150734 +02273532161336373E01011633323726272203536B51196DC379998F8E9B7A2C7E8AA89A +7A6932403A249A9E8D8493A1282E2D297A01575D82A109079F9805D8FC9E04DDBE6791AB +85A0D7047601040178100315FE2DC30F0E02FD01F00661DEFEEDC9585B96FC2691C59D13 +000200B00139067B04A20027005100001300333217163236333217163237363332130726 +232207062227262322070623222726232204232711003332171633323736321716333237 +3633321307262322070623222726232207062322272622042327B00145732D0D1870AC38 +36181A72562B297C6D5E3F5F333C5670191C3B375357373819183637FEFE05350144742C +0E18383756576E171B3839562B297D6D5E3F5F333C5737381A1B3B375456383719186EFE +FF0535019D010F28478E47474724FEC433B9354C4B4E43474846D56201D9010D27464648 +48464623FEC532B9364D4C4E44474848D561000000010141000005EA05D8001C00000107 +020107001321352102011700133312013700032107211201270003040EF120FEEAA50133 +1BFED801281CFECDA6011620F21F0117A5FECD1B012701FED81D0133A6FEE91F029903FE +AEFEBF03015F0137AC0136016003FEC0FEAD0153014003FEA0FECAACFEC9FEA103014101 +52000000000500C90000066305D8000F00200024005400640000013637262726220E0115 +141617161721332136373E0135342E012322070607161701112111011126272E0135343E +01333217353436373637352335333533153315231516171E011D013633321E0115140607 +06071101141E0133323E0135342E0123220E010350010223334A9C9354524A161701578D +015618164A5153934F4D4A34220201FE3F02F5FCB92A26456C6EC668504C24200D106C6C +696C6C100D1F254C4F68C66E6C442729FDD6192D17182D18182D18172D1903C703032B1C +295195505192280E08080E289251509551291C2B0303FDB8FED1012FFE81017F0D1636C4 +6B6CC56A1F02243F1207043646575746360407123F24021F6AC56C6BC436160DFE81047D +192B19192B19182D17172D00000800E20000064A05D80048004E00520068007C009000A5 +00BB0000012627343E0133321E0115060713032227343E0133321E011506071B01262734 +3E0133321E011506071B012635343E0133321E0115060703012635343E0133321E011506 +230311211101350721271D02213501170336373E0135342E0123220E0115141E01333237 +01170336373E01342E0123220E01141E013332370137131633323E01342E0123220E0114 +1617161701330332373E0135342E0123220E011514161716170137131633323E0135342E +0123220E01151416171617014D5F0C1D361D1C361C0439EF3453121D351F1C351D022EBD +2B43021E351B1D351E034326B92E1D361B1E361D0B565C01012B1D351C1E351D0D63A0FC +A30324B5FE95B702D7FCFF4DE7070712141423141223151424120709013688BB06051113 +132412132314132413070801AD7360050513251315231312241414120807FE9A64301310 +111516221312251313130E0F012968A60B0B1323141522131423131312040303FB025F1C +331C1C331C4016FE0602BE5D1C321C1C321C2D22FD1403341E301C341A1A341C3618FCCA +02E42F2A1B331C1C331B5510FD4A0203222B1C331B1B331C5EFE31FDD1022FFEDFE14B3D +D330A4A401542A020E03040A231314231414231413231401FDF82002F902030A23262413 +132426231401FD131B02D1011423262413132426230A0502FD0A03420A0A231413231414 +231314230A0802FCDA2A01EA0315221413241313241314220B02020000050155FFFE05D6 +05D6001D00210027002D0032000001211533352115231507111715331521353335373311 +232735233521153301352115013735211517110715213527351137211103080115AB010E +735C5C73FB7F735D01015D730109AA0297FBEE034A52FCDA524903144A01FD7E05D69B9B +A29096FDB7958FA3A38F9802459790A29BFAFB373703EA835F5F83FD7674808074340221 +02FDDD00000401B60000057605D8003700430051005E0000012635343736372627262735 +36373637363726272635343E0133321E0115140706071617161716171506070607161716 +1514070607012109013533352335231523153315133635342E01220E0115141703210014 +1E01323E01342E0123220602CB1F20080B3C24290101292B4E1C1E1A11162D4E2A294E2D +15101A1C1D4D2C2A01012A253A0B081F200202011AFC40010F010CACAC76ACACA23C2D4D +544D2D3FDE028AFE4B1D353A361D1E361C1D34019435393C35110E263F48500450494B2A +0E0A121D27292B4B2A2A4B2B29271D13090E2A4B49500450483E260F11353C3A360304FE +750194014E7C6C7C7C6C7CFEB22D492B4E29294E2B4036FEAC05193A351C1C353A351B1B +00040151000005DB05D800290035003E006F000001363534263534371615140700132126 +3534003D0106070607270726273635342736372E01353437161703363B010615142B0122 +27350317140723223D013613262706151416151407060716151407161737073637363716 +151400151417250201323523363534262706151416151407031E0416467A0801EA2DFC36 +0D018A5A382E9E092C8B1F4E0230481507216836A22560062B451508040607480A1C29D8 +234D191D0B3B2C044A19676123871D69520BFE820C036B27FE1201041F0D4D1F120804E8 +080B152B0E315E68671A1BFEBDFC6F383AA00128400673038E12161E2E50F9C01E1C6D7A +2013051B6E1B78FEEB3F2E23311E0FFE7023340F1E173102A760263E251B2112100F6163 +2C2CC5C04C18484A0A9004AD1E1E78FEEC7D3634010337017C010A2B0C4F4A4A29132113 +110F000000040130FFFF05FB05D7000D001D0050005B000000141E0133323E01342E0123 +220613141E0133323E0135342E0123220E01011521350726353412373637262726353436 +373637262726343E0133321E011407060716171E01151407060716171612151407272627 +2E0123220607060702BF3A6537396538396637366560101C0F101C10101D0F0E1D10025B +FBD9530BA59226281E152A554D1B1D1A0F172C4E29284E2D1511191B1E4B5629161E2626 +93A60C5C044045F58081F543410403C1706438386470673636010E101B0F0F1B100F1C10 +101CFABB010101393AA001254E150F1D264B5253972A0E0A131D27544D2A2A4D54271D14 +090E2A9753524B261D10144EFEDBA03A39847D7179838379717D0000000800C900000663 +05D8000F002000240054006400680079008A0000013637262726220E0115141617161721 +332136373E0135342E012322070607161701112111011126272E0135343E013332173534 +36373637352335333533153315231516171E011D013633321E011514060706071101141E +0133323E0135342E0123220E0101152135372126272E0135343E01333217161706153334 +2736373633321E01151406070607210350010223334A9C9354524A161701578D01561816 +4A5153934F4D4A34220201FE3F02F5FCB92A26456C6EC668504C24200D106C6C696C6C10 +0D1F254C4F68C66E6C442729FDD6192D17182D18182D18172D1901A4FD73CEFEE812113D +424477403E3D291D02F1021D293D3D417744423D1212FEE903C703032B1C295195505192 +280E08080E289251509551291C2B0303FDB8FED1012FFE81017F0D1636C46B6CC56A1F02 +243F1207043646575746360407123F24021F6AC56C6BC436160DFE81047D192B19192B19 +182D17172DFCB6C8C8CE070C217943427B4321172403020203241721437B424379210C07 +000300E20000064A05D80048004C00500000012627343E0133321E011506071303222734 +3E0133321E011506071B012627343E0133321E011506071B012635343E0133321E011506 +0703012635343E0133321E01150623031121110535211501352115014D5F0C1D361D1C36 +1C0439EF3453121D351F1C351D022EBD2B43021E351B1D351E034326B92E1D361B1E361D +0B565C01012B1D351C1E351D0D63A0FCA30324FD2902D7FD2903FB025F1C331C1C331C40 +16FE0602BE5D1C321C1C321C2D22FD1403341E301C341A1A341C3618FCCA02E42F2A1B33 +1C1C331B5510FD4A0203222B1C331B1B331C5EFE31FDD1022FCB4E4EFED64F4F00040155 +FFFE05D605D6000300070025002900000135211501352115132115333521152315071117 +1533152135333537331123273523352115330135211504D6FD8002CAFCECFC0115AB010E +735C5C73FB7F735D01015D730109AA0297FBEE04845E5EFC2F6F6F05239B9BA29096FDB7 +958FA3A38F9802459790A29BFAFB3737000201B60000057605D800340040000001343736 +37262726273536373637363726272635343E0133321E0115140706071617161716171506 +0706071617161514070121012601353335233523152315331502AC20080B3C2429010129 +2B4E1C1E1A11162D4E2A294E2D15101A1C1D4D2C2A01012A253A0B081F200116FC40010F +190125ACAC76ACAC02023C35110E263F48500450494B2A0E0A121D27292B4B2A2A4B2B29 +271D13090E2A4B49500450483E260F11353C3A36FE6E01943501197C6C7C7C6C7C000000 +0004014C000005E005D80033003F0048004E000001363534263534371E01151407331423 +00132126353400353427062B010623222337072627363534273637363534263534371617 +0715163B01323534372322070315143B01363527220117001333020316251E3A550F2204 +0202182DFC360D01950142750A5A670403306B721B58023063032D146838AA040815452B +066025731C0A48073E01C9340177064D2D04E617271939162E1E51590D2F0C01FEACFC6F +383AA0011B710807A79268501C53E5BE1B1A6D680A091C1A2325421B7AFF101E31223040 +FE29181D0F3522024059FEF3FD04035200010130FFFF05FB05D7002E0000052635341237 +3637262726353436373637262726343E0133321E011407060716171E0115140706071617 +1612151407013B0BA59226281E152A554D1B1D1A0F172C4E29284E2D1511191B1E4B5629 +161E262693A60C01393AA001254E150F1D264B5253972A0E0A131D27544D2A2A4D54271D +14090E2A9753524B261D10144EFEDBA03A39000000010143000005E805D4002300000116 +131217161D0114070623222723151017233536112723070623222F01353437003F010398 +5ED8ED0627A235409A5F2A53D75503262F557FBB4C09BB013B590305D4A7FEECFEEA3955 +5028A76016DD0CFEE5960697011D035885D1492EB7CB0182A5030000000200B900010673 +05D10018003200000132131615323712333217161D011007000723012635343736031514 +17013301363D0134272623200306152334272623220706022ADA741C060D70EBD17A26DD +FE3D3C06FDA078C751E5D001DB03023E68BD473AFEF8560A064865BDAE6B2505D1FEED50 +18460135D34E500DFEFEE7FDD94202EDB2B6D27C2DFE8F10DBE4FDBC02BBA19726AC701C +FE41261A4ED1E0B14600000000020158000005D205D40008000D00000901150007260126 +3509040396023CFDE31F0FFE1746023AFE0302010201FE5E05D4FD1A07FD3B220B028056 +0D0296FD67FD64029C021E00000100E40000064705D4003700000132171617140F013336 +3B013217161514070607220323151017152327361135230223222726353437363B013217 +33352627263D013437360397D6650D03783C034A5413EE6017D12847F2650352D0065503 +64F5BF6619F6423309564E03541D3CD74705D4E3343875A03C1CCA423CCD680C06011209 +FEA96D060680014D03FEEBC9443AE9530C1C0347456E510EC968130000030142000105EA +05D50022003C00420000011601161D011407062B01222723151017233536112307062B01 +22272635373534370037060106151617163B013237333217163B013237363D0134270203 +332627220703977E017F56B522301691622A53D7562A38556916A0511903CE01225F7CFE +AE510A941629107760B7071F53671389410ACBE68E3F0D0F061005D5E1FE368B8603D14E +10DA0DFEE89B069701236575AE423F0D03C8D4016749C7FE6F8285BB3509DA4694A7281E +1FB0CF011FFB70175A520000000100B60000067705D40017000001321716173336373633 +32171615140701230126353437360228CB742A0203235C6C87D17E20D0FDEF06FDCEA8C7 +5405D4EB5D31A26B6CE05349FAE3FD8502B1CDDAD37C2D0000010158000005D205D40008 +0000090116150126013437039601F745FDC40CFDCE6F05D4FD73550DFD1B0802DD0E8A00 +000300E40000064805DC00320060006700000132171615140F01363B0132171615140706 +07220323151017152327361135230223222726353437363B01321726273534373603141F +0115262B01220F01141716333213363733161716333237363D01342F0123220735363736 +3534272623220701140733352635039BCB681972161F3D29F85C10D22249F1660352D106 +550364F6C06719F74333263D1F631CD847F0A90C6B7609F33D07883D4ED2721016072553 +5A9EA8550CFD3606766B81201ABB3629B85301071C3C1C05DCCE463984A61706D7383AD3 +640C07011409FEA76D060680014F04FEE8CB453AEB520C0670B126CB6913FEB39BCC0C03 +09D443945D2601271B41788685BE2E2B06DE30030903896E4D2CB65710C8FBCE1C600363 +16000000000400D8FFFE065405D4001000210031004D0000013314060714161723262726 +273035343625331406071416132326272627343534360533140607141617232627262735 +3436131E011514060420242635343637330607061416042024363427262702760D9102CC +070D1DA3300FA501410D9202CD060D1DA2310FA601590D9202CD060D1CA3310FA62CA8BE +B9FEB1FE94FEB1B9BDA803834B56A7012E014A012FA6564C8305393F9B638279C9A67433 +5A0E7288ED60ED97C5BBFECEFBB24E8B0809B1D15B4FC47DA19AFDD09142720E91ADFE1E +31B16160B06262B06061B13129454DA898555598A84D4529000100ACFFF602B705D50011 +000001331711140F0123222F01343F013217331102684807C43023D41C04D321635A0405 +D508FAFDA32D04851F8218054004D400000100ACFFF6046F05D5001D0000013317151617 +161514072327363534272627111407232235343733321711025857081BADF07A041E3DE4 +5C19E039F2D417605905D50727363F468A926020315446472A1AFBD6992DA883174004D6 +00010178FF2F05B305D5001E000001051711140723223D01343F013217112511140F0123 +223D01343F0132171102FD02B303C036D5B1275651FDDC96431AD8AA2B595005D5CA04FA +ED9B2AA4047E16033A040BA9FBDB8938089B077A22044304D3000000000200BCFFF6066F +05D50018001C000001171114052227343732173311211106072320353437321711171521 +35066B04FEFBE912E96D4F03FCA508F204FEFEEC645858035B05D504FB12D515A48A0E3B +0295FD5ACF24B17D104004E1CF9C9C00000200B5FFFA032205D9000C0015000013331711 +333633161302052711131124113635342722BB2D0503AA91E3141DFDB3033801A2019577 +05D906FC3FED03FEFFFE57580305D6FBD4FE9D6301310D0C94080000000200AC00000230 +05D9000D001300001333171125171107232711052311131133251123B12906014E020428 +05FEAF023402011D0205D905FE2FA102FB63050501E5A0048AFD99FE7D90017F000200AD +0000033405D90028002C0000013317113717150607113715060711072327110511072327 +11073534371123073537113733171125110111251102872E05770303777A0179052E05FE +E0052A058181027F81052A050120FEE0012005D905FED03C028D073CFE8B37870443FED7 +040401118CFEA6040401413C8E063C017B388B41011F0404FEFA86014DFD96FE878B0174 +000100AC0000055005D900480000012330232207232227353635342735363733163B0135 +34273536373316323733161715061D01333237331617150615141715062B01262B021114 +171506072326220723262735363502B6A804B35038180B636302203953B5A783031D3A2D +8C2D3A1D0383A3B55338210263630B193750B304A483031D3A2D8C2D3A1D038303115A23 +3B3137462D3A1D0383AFB553382102636302213853B5AF83031D3A2D4637313B235AFE52 +B553392002636302203953B5000600840000059C05D90006000D0014001B003B00470000 +010607161737350515173637262701262706071733032307161736370333371617060727 +23111706072627371123072627363717333527363716170F011523153311331133352335 +013B16302F175F02ED5E172F2F17FE862C2F2C2D442D012D432D2C2E2D07E4D00A7A7A0A +D0E47E6A6968687EE4D00B7A7A0BD0E47E6869686A7E6E747436747403B42D2E2C2D432E +012E432E2C2E2D016E172F2F175FFC525F172F2F1702F77E696A68687EFE4ED00B79790B +D001B27E686969697ED6D10B7A7A0BD1739F2EFE8001802E9F000000000C00AC00000681 +05AC00140023002E00360043004D00680077008C009700A600AF00000121321F01373332 +15032127353637350227263D010733321716150207232427351237360515130715333707 +262F01011713262B01220701161317151407062B01260335171333323F01342F01062533 +32171615072327020F011707232603263D01343F01232735371715173315140715161713 +33173527013317152132373317150603062B01150723023D012717110721222F01353437 +0507173335343B01323F0121263D0105060715141F0121110328018B3A1D4D620805ADFE +A4051252BB102E711770371EB01003FED3049E112C0112CA16CA5F1C711014FD1EF0A03E +4D1C542C039B129505501724920CB4369C85362402305FE4FD1314097533050564B40F03 +05070316AD14551402640580120374019CC8021C5F027D050501732A24020506C41922C3 +0508AC520805FED67430065802585F5F0508E7162F69FE6B08FDB83D065A1E010E05AC47 +863807FED40505112A050146141604050D80310AFEC611AC0802011A082E1702FE9D0F03 +AD0DC50D05FED18A01179066FEF511FEEF29144D43120B013D050FFEEA671A3945A2816B +D74F0D0539FECB211528051B012D1A1F071C83293B050526050D0208C60A1AFE015D0803 +ACFED4057421050215FEB11D790501220D03B307FEA50586260D327C0CACAA081C62B301 +14081D61240A552B060115000004009C0020068F05D9000A00230038004D000001331107 +35373311331521052635343F012737132707061514171633323721152122272625060723 +152737153336373635342703371316151401161F01370327372726232207060703271336 +373602D5ABBACA7FABFE1BFDF32C26543EEB183D630717235D0F100196FE1C4B392E058B +55AFA7D2D2C63A190731CA88F325FCE6A960543F19EA3C63223407073F35CC88F127382F +01EA019A1A611EFE015CB84D4F484B92246BFEFF24AC141323202C019F211B61930A4997 +95460B371113344801604FFE5D424136049E01929124FEFF6B23AC2801096BFEA14E01A4 +41211B000004009C0020068F05D9001C0035004A005F000001211521353E01373E013534 +2623220607353E01333216151406070E01012635343F0127371327070615141716333237 +21152122272625060723152737153336373635342703371316151401161F013703273727 +262322070607032713363736035D0154FDF140CD1931244A3C2F67594C70307F9A26300E +8BFD0A2C26543EEB183D630717235D0F100196FE1C4B392E058B55AFA7D2D2C63A190731 +CA88F325FCE6A960543F19EA3C63223407073F35CC88F127382F01D25D55319E1529381A +283318266E1914635126442D0D6DFEBA4D4F484B92246BFEFF24AC141323202C019F211B +61930A499795460B371113344801604FFE5D424136049E01929124FEFF6B23AC2801096B +FEA14E01A441211B0004009C0020068F05D9002800410056006B0000011E011514062322 +2627351E013332363534262B013533323635342623220607353E01333216151406012635 +343F01273713270706151417163332372115212227262506072315273715333637363534 +2703371316151401161F013703273727262322070607032713363736045A0B5FAD9D336C +464865355E5C564F6F7348474A492960564B6D31819A53FC6A2C26543EEB183D63071723 +5D0F100196FE1C4B392E058B55AFA7D2D2C63A190731CA88F325FCE6A960543F19EA3C63 +223407073F35CC88F127382F02BE02533C5C650E126C1E1232332D325B272627290E1462 +0F0D594B344AFE184D4F484B92246BFEFF24AC141323202C019F211B61930A499795460B +371113344801604FFE5D424136049E01929124FEFF6B23AC2801096BFEA14E01A441211B +0005009C0020068F05D90002000D0026003B005000000103330333113315231523352135 +012635343F01273713270706151417163332372115212227262506072315273715333637 +3635342703371316151401161F01370327372726232207060703271336373603B6E6E614 +B179799DFE82FE902C26543EEB183D630717235D0F100196FE1C4B392E058B55AFA7D2D2 +C63A190731CA88F325FCE6A960543F19EA3C63223407073F35CC88F127382F0352FEFF01 +8AFE765F8E8E60FE844D4F484B92246BFEFF24AC141323202C019F211B61930A49979546 +0B371113344801604FFE5D424136049E01929124FEFF6B23AC2801096BFEA14E01A44121 +1B0000000004009C0020068F05D9001D0036004B00600000012115211506363332161514 +0623222627351E0133323635342623220607012635343F01273713270706151417163332 +3721152122272625060723152737153336373635342703371316151401161F0137032737 +2726232207060703271336373602BB01C3FEC50231188BA2A7963268464C5D35525D5D52 +275046FE0D2C26543EEB183D630717235D0F100196FE1C4B392E058B55AFA7D2D2C63A19 +0731CA88F325FCE6A960543F19EA3C63223407073F35CC88F127382F03D05F7001077463 +64720E0F721F12403839400D19FE534D4F484B92246BFEFF24AC141323202C019F211B61 +930A499795460B371113344801604FFE5D424136049E01929124FEFF6B23AC2801096BFE +A14E01A441211B000005009C0020068F05D900090022003B005000650000012206141633 +3236342613152E01232206070636333216151406232226353436333216012635343F0127 +371327070615141716333237211521222726250607231527371533363736353427033713 +16151401161F0137032737272623220706070327133637360386374444373A4242993D46 +22575C03075D3875878D75858CA992264DFCA52C26543EEB183D630717235D0F100196FE +1C4B392E058B55AFA7D2D2C63A190731CA88F325FCE6A960543F19EA3C63223407073F35 +CC88F127382F02BC417640407641010E66160E6035072873615F74A5968FAE0CFCFD4D4F +484B92246BFEFF24AC141323202C019F211B61930A499795460B371113344801604FFE5D +424136049E01929124FEFF6B23AC2801096BFEA14E01A441211B00000004009C0020068F +05D90006001F00340049000001211501231321012635343F012737132707061514171633 +323721152122272625060723152737153336373635342703371316151401161F01370327 +372726232207060703271336373602A20202FEF093FEFEA3FE262C26543EEB183D630717 +235D0F100196FE1C4B392E058B55AFA7D2D2C63A190731CA88F325FCE6A960543F19EA3C +63223407073F35CC88F127382F03BA32FDB9021AFD7B4D4F484B92246BFEFF24AC141323 +202C019F211B61930A499795460B371113344801604FFE5D424136049E01929124FEFF6B +23AC2801096BFEA14E01A441211B00000003009C0020068F05D90018002D004200003726 +35343F012737132707061514171633323721152122272625060723152737153336373635 +342703371316151401161F013703273727262322070607032713363736C82C26543EEB18 +3D630717235D0F100196FE1C4B392E058B55AFA7D2D2C63A190731CA88F325FCE6A96054 +3F19EA3C63223407073F35CC88F127382FD64D4F484B92246BFEFF24AC141323202C019F +211B61930A499795460B371113344801604FFE5D424136049E01929124FEFF6B23AC2801 +096BFEA14E01A441211B0000000600AC0000067F05A10010001A00270039004800520000 +0121321F0137331502072135363703262307321F01032427123736011215171407062B01 +2603363705121727020F011723032736373635273533013315213237331403062B011523 +032717110721222F013437032A01863A214A63069D10FEA96105C6230D66692A31C1FEF5 +1B951631035AA602610F287D0EAF18C9FC79AB0270C004030505C90804501A64E402D802 +018A211E03C9181FCC05A85E0505FEDE742F055405A1547D3702FEED1505350901621A05 +5C56FEB69A1301041C2FFE56FEEA1727663A080F013A17701BFEE00D3FFEB610291D015C +201F80290B3903FEA5731A09FEA417730125B006FEA9058030308200000700AA00000683 +05D9001300250032003C004A005C0065000001332013161D011005062B012003263D0110 +25361715321F011506071521363723072627262301163336132623262322070607051513 +333237342F012205170607141F0133343F013317270107161733353733323F0135230623 +21273505061D01141F01331103891B018BF361FE6FA3B703FE50E853013CBE892633791B +3A01180A8403534F12151AFD88F209049542171D325F354E0D02819976621A65290EFBCD +504B0B8B1D031B8E094C8B01F98706810306AC243D6A031622FEC406FDEA416A1AFC05D9 +FE92AECF06FE4FEB4C0186A8A335015FF18393036BCE03161F0308F02C89160CFEDF8B0F +01017E12797D1FDE03FEF48A2F9D4D3C347B3116E83B4319F82CF1FEE5FB03EC5B0680B1 +0310065F6569270C5B29040124000000000800AA0000068305D9000F0020002F003A0042 +00520060006A000001201316151005062320032635102536011005163B01201336351025 +26232003060121321F0137150607213537262F0123321F010323262736373601161D0106 +2B0103252117072327230207152603273437270133152132371503072307152327252117 +110723222F013603980197ED67FE84A4D1FE5EE75F0188AAFDF901629DAA300168E55CFE +96A0B8FE7BDF5C025B013A35183A516D1BFEF04D921A1B4D5B1E2D9A03E312771C2C02A3 +89156C649CFCD801149103034E03A6060C9C02564E02FD0601471418AD17A9060687FE8A +012B0606F55127060105D9FE97B2D4FE58E9590174A2DB01A9EB54FD12FE70D8580159A5 +C5018CE053FEA69F016D45622C03CC230334FE270C4656FEFE7F10D51A20FEA7E2211782 +010959F40331FEEA151A0B0112111C8D31FEEC5F1406FEDC090655EE8C05FEEB05672C31 +000500AA0000068305D900070017001F0041005200000116173237262706012013161510 +050623200326351025360106071633363726011523062B012E0135343734353436373217 +36331E01151415161514060723222723251005163B01201336351025262320030601C202 +B7906157A2AF01D40197ED67FE84A4D1FE5EE75F0188AA01E1A2576190B70202FE2B0376 +B20E8C7A019B879D7F809E879B017A8C0EB27702FD3C01629DAA300168E55CFE96A0B8FE +7BDF5C02F4CD02CBC204030226FE97B2D4FE58E9590174A2DB01A9EB54FDDD04C2CB02CD +BFFEF31CBD0FB95007080405749901AAAA0199740504080750B90FBD61FE70D8580159A5 +C5018CE053FEA69F00020131000205FA05D90018002E0000013215060717213217072117 +21161337170605260321220334010623222E013534373637170607141E01323637170602 +9A9901801801130C1004FEED0C01BD0C8D863005FEEE1095FE230C5501F8717B7CE27D40 +212F2819025398A6972A452E05D98EA302E692046506FE72288D08591801AD032485FA68 +3F7DE17D7C723C2ED93C43539853534CA9320000000300960000066005CD0016001A001E +00000134373637363332171617161514070607062227262726011121112521112102EF13 +141F1B2B2A1C1E151313141F1C541C1E1513FDA705CAFADB0480FB8002E92A1C1E151313 +141F1B2B2A1C1E151313141F1BFD4205CDFA33A504830000000400960000066005CD0016 +002D00310035000001343736373632171617161514070607062322272627260134373637 +363332171617161514070607062227262726011121112521112101B913141F1C541C1E15 +1313141F1B2B2A1C1E1513026C13141F1B2B2A1C1E151313141F1C541C1E1513FC7105CA +FADB0480FB8001AE2A1C1E151313141F1B2B2A1C1E151313141F1B029C2A1C1E15131314 +1F1B2B2A1C1E151313141F1BFC0C05CDFA33A50483000000000500960000066005CD0016 +002D00440048004C00000134373637363217161716151407060706232227262726013437 +363736333217161716151407060706222726272601343736373633321716171615140706 +07062227262726011121112521112101B913141F1C541C1E151313141F1B2B2A1C1E1513 +013613141F1B2B2A1C1E151313141F1C541C1E1513013613141F1B2B2A1C1E151313141F +1C541C1E1513FC7105CAFADB0480FB8001AE2A1C1E151313141F1B2B2A1C1E151313141F +1B01662A1C1E151313141F1B2B2A1C1E151313141F1B01612A1C1E151313141F1B2B2A1C +1E151313141F1BFC0C05CDFA33A50483000600960000066005CD0016002D0044005B005F +006300000134373637363217161716151407060706232227262726013437363736333217 +161716151407060706222726272625343736373632171617161514070607062322272627 +260134373637363332171617161514070607062227262726011121112521112101B91314 +1F1C541C1E151313141F1B2B2A1C1E1513026C13141F1B2B2A1C1E151313141F1C541C1E +1513FD9413141F1C541C1E151313141F1B2B2A1C1E1513026C13141F1B2B2A1C1E151313 +141F1C541C1E1513FC7105CAFADB0480FB80041F2A1C1E151313141F1B2B2A1C1E151313 +141F1BFDBA2A1C1E151313141F1B2B2A1C1E151313141F1B2B2A1C1E151313141F1B2B2A +1C1E151313141F1B029C2A1C1E151313141F1B2B2A1C1E151313141F1BFC0C05CDFA33A5 +04830000000700960000066005CD0016002D0044005B00720076007A0000013437363736 +321716171615140706070623222726272601343736373633321716171615140706070622 +272627262534373637363217161716151407060706232227262726013437363736333217 +161716151407060706222726272601343736373633321716171615140706070622272627 +26011121112521112101B913141F1C541C1E151313141F1B2B2A1C1E1513026C13141F1B +2B2A1C1E151313141F1C541C1E1513FD9413141F1C541C1E151313141F1B2B2A1C1E1513 +026C13141F1B2B2A1C1E151313141F1C541C1E1513FECA13141F1B2B2A1C1E151313141F +1C541C1E1513FDA705CAFADB0480FB80041F2A1C1E151313141F1B2B2A1C1E151313141F +1BFDBA2A1C1E151313141F1B2B2A1C1E151313141F1B2B2A1C1E151313141F1B2B2A1C1E +151313141F1B029C2A1C1E151313141F1B2B2A1C1E151313141F1BFEF52A1C1E15131314 +1F1B2B2A1C1E151313141F1BFD4205CDFA33A50483000000000800960000066005CD0017 +002F0046005D0074008B008F009300000134373637363332171617161514070607062322 +272627262534373637363332171617161514070607062322272627261134373637363217 +161716151407060706232227262726013437363736333217161716151407060706222726 +272625343736373632171617161514070607062322272627260134373637363332171617 +1615140706070622272627260111211125211121042413141F1B2B2A1C1E151313141F1B +2B2A1C1E1513FD9513141F1B2B2A1C1E151313141F1B2B2A1C1E151313141F1C541C1E15 +1313141F1B2B2A1C1E1513026C13141F1B2B2A1C1E151313141F1C541C1E1513FD941314 +1F1C541C1E151313141F1B2B2A1C1E1513026C13141F1B2B2A1C1E151313141F1C541C1E +1513FC7105CAFADB0480FB8002E92A1C1E151313141F1B2B2A1C1E151313141F1B2B2A1C +1E151313141F1B2B2A1C1E151313141F1B01932A1C1E151313141F1B2B2A1C1E15131314 +1F1BFD562A1C1E151313141F1B2B2A1C1E151313141F1B2B2A1C1E151313141F1B2B2A1C +1E151313141F1B03002A1C1E151313141F1B2B2A1C1E151313141F1BFBDA05CDFA33A504 +83000000000300AA0001068205D9000C001B002900000132041210020420240210122401 +141204202412353402242322040204343E0133321E01140E012322260396BC0165CBC5FE +9BFE7CFE9BC5C90165FE28AE013C0158013CAEB3FEC4A7A8FEC3B10393223C21203C2223 +3C1F213B05D9C1FE98FE7AFE9DC6C6016301860168C1FD14ADFEC5AEAE013BADAC013FAB +ABFEC1CD423C21213C423D2020000000000400AA0001068205D9000C001B002900360000 +0132041210020420240210122401141204202412353402242322040204343E0133321E01 +140E0123222624321E01140E0123222E0134360396BC0165CBC5FE9BFE7CFE9BC5C90165 +FE28AE013C0158013CAEB3FEC4A7A8FEC3B10393223C21203C22233C1F213BFD3E403C23 +223C21203C222305D9C1FE98FE7AFE9DC6C6016301860168C1FD14ADFEC5AEAE013BADAC +013FABABFEC1CD423C21213C423D2020DC203D423C21213C423D0000000200AA00010682 +05D9000C001A00000132041210020420240210122401323E01342E0123220E01141E0103 +96BC0165CBC5FE9BFE7CFE9BC5C90165023A1F3C23223C20213C22233B05D9C1FE98FE7A +FE9DC6C6016301860168C1FC96203D423C21213C423D2000000300AA0001068205D9000C +001A002700000132041210020420240210122401323E01342E0123220E01141E0124141E +0133323E01342E0122060396BC0165CBC5FE9BFE7CFE9BC5C90165023A1F3C23223C2021 +3C22233BFCA5223C20213C22233C403B05D9C1FE98FE7AFE9DC6C6016301860168C1FC96 +203D423C21213C423D209F423C21213C423D2020000100AA0000068200C8000300003721 +1521AA05D8FA28C8C8000000000200AA0000068200C80003000700003721152125211521 +AA0260FDA003780260FDA0C8C8C8C800FFFF00AA00000682034D12260F61000010070F61 +00000285FFFF00AA00000682034D12260F61000010070F6200000285FFFF00AA00000682 +034E12260F62000010070F6100000286FFFF00AA00000682034E12260F62000010070F62 +0000028600020158000605D205D90011002A000001363332043332371106232227262322 +072F012327211523153633321716333237110623222423220711230207343C80014EBB46 +483435A7B18BBF323614634B01010E4C3533C2ABA9A14E4B6A66ABFEC380504660029F11 +A30C02620A5F7E09025D35351A08785C15FD0D1C9A1EFDC600010158000605D205D90018 +00000123272115231536333217163332371106232224232207112301A44B01010E4C3533 +C2ABA9A14E4B6A66ABFEC38050466005A435351A08785C15FD0D1C9A1EFDC6000001006A +000106C105DA001F00000901072737273717371707090127371737170716130901170107 +0127070127010336FEB3B9C6BA2E8A2BB9C5B8014D014DB8C6B82C882C4523FED3FEB3B2 +013FB9FEF2B3B2FEF2B8013D027E0151BBC7BB2C8A2CBAC8BAFEB0014FBBC8BB2D8A2C71 +FE740135FEAFB3FEF0B90140B4B4FEC0B9011000000200C6FFEC066505DB000F00520000 +01141E0133323E0135342E0123220E011315230623222735231523222427262707030507 +301716171617112135213526272E01343E0133321E011406070607152115211136373637 +36372725032706070607060310274826284728294727254828E308252703030707A9FECB +56100D571D0133570649846D75FE8901771A193E44457D41427C47453D1B1A016DFE9364 +5E844A02035701341E570C11569B7304D62748272748272848272748FAF2010301020260 +58111041014B7C40065831280702D48133080E227C887D44447D887C220E093281FD2F0A +2231580303407CFEB5411011583123000001010D0000061F05D6002F0000090136373306 +071716170E0107262F0106072736370B011617072627070607222627363F012627331617 +09012709010703E201164B1B5B195D9C3E02063C2B47049D675B276642F4F24265265C68 +9C013F284B04013F9C5D1A5C1B4B0116FDE3200288028A2102BDFED03B3C7549B603402A +2201044FA838084211310122FEDE3111420838A8480B1D244C03B649753C3B0130028495 +FD3A02C6950000000005007DFFEC03D505DB0007001A002E004F00600000011633323534 +272613150623222735263534371706151404072326032435342515061514041706052736 +353427112713112711242736373233321707170623222726232215140417060535242736 +35342527032E0135343E0133321E011514060701541C0D0B0524F90C1B2303B5A4014101 +43020F1CC5FEE2010EAB022C0304FEED01B6C54D4D4DFE76040DD504034135705F181A39 +4408072D02EF0607FE9601120201FEE34D051518182A16172A18171504A40C09060A0BFB +94421D40302240521A2F18182F3E774101B7266F632F4426332E5961512F3522312722FE +B4130301FE81100175138A9005451E19061B0236322F758A103D203D0102216D07012D0B +2E18192E18182E19182E0B0000030079FFEC06B205DB0004000900370000250901162025 +090116200133321D01142B010106070E0123222E013D0101210115140E01222627262701 +23263D01343B013717331B013337065FFEECFEEC8B0114FD25FEEDFEEC8A01140309D638 +29C2011402302FAD5F5EAB5E0110FD4D01125EACBCAD312F010113CC2039D73533FC8181 +FC34ED033CFCC42626033CFCC42603D12A1928FCC7443E3F47477A42080336FCCA06437B +47473F3E440339111C0F2F9B9B0143FEBD9B00000002007D000006AE05DB001A00260000 +0136333217161716151407060706232226272E0123220706032712011323032111230321 +03231302D2B89E3632C94B23112B7E4B46309D522139272F4EA3C778E504ED5F7F54FEE2 +8A01FEE3567F5F0587540927A64E51393B8D3A2338B3484C2243FEDF440199FD7CFDA601 +D7FE2901D7FE29025A000000000201290000060105DB000D0035000000141E0133323E01 +342E0123220613153B01323637140407060723263D012624031E01333237333526272E01 +343E01321E011406070602E6325B30325B32345A312F5BBB060396E1ADFE292735022A2B +05FE0F58C7EB810D0E06413C4E57589DA69E5A584E3904C46459323259645B3030FE2D9C +BF26E79A9788F5A89A14848F013102E9019B07232B9CAC9E55559EAC9C2B2000000300C2 +FFDD066A05D0003F0047004F000000321F01161737161707161737161707161407170607 +27060717060727060F0106222F0126270726273726270726273726343727363717363727 +363717363F0100200010002000100414062226343632036A582B1A43407E4C40542F21A5 +2510940404941025A5212F54404C7E40431A2B582B1A43407E4C40542F21A52510940404 +941025A5212F54404C7E40431A010DFE94FEFE0102016C0102FEE35B805B5B8005D005BB +0D1E842D409C323C1F545C45234423465B541F3C339B402E841D0EBA0606BA0E1D842E40 +9B323D1F545B46234423455C541F3C339B402D831D0DBBFEC4FEFDFE95FEFE0102016B75 +805B5B805B000000000F0106FFED062505DD0009000E00130018001D0025002C00310036 +003B00400048004F005B009F000000141E01332634372206051617372627161737262716 +173726271607372627141514071735342706071736353405173637060717363706071736 +37061F0126370617372635343706153F0126270615140522061514163332363534262735 +26272E01343E0133321E0114060706073314231516171617363704170623262207161514 +07060703150623222F0103262726353437262322072227362516173637360356111F120E +0E112001F36E2A1A5B916E25275A784C10303C7B32013B2662153B3C2F323A28FC731A2A +6E572927246F601430104C500F3B0132463C3B160126633A322F01011C374C4C37354D4C +5A03021315152715142616151302030101342903035016014E5055FE28441C0434283401 +0B1719080102332834031F292228FE5550014E155207092805A0221F1220422211763E30 +263814613E21552A7E45136D4C914B087D601110813F0A0C7B6188371A635B0D4F26303E +106A213E61298613457E4388084B91578B0A3D7B1415647B031A37880E0D5B2B4D35374C +4C37354D2D5A01020A272A271515272A270A02010159092803048035065BA30C0C14154A +352809FCD65C161C64031C0928354A1211110CA35B06348C0A092700000F010500000627 +05D3000F001F002F0037004F005F009F00AB00B300BB00CB00D300DB00E300EF00000132 +1E0115140E0123222E0135343E0107262706070615141716333233363726250607161732 +333237363534272627062716151407363726272627262706070607061514171617161736 +3736373635341316171617363736353427262322070605373E0133321617153633323316 +17161514070607171617161514070E012322272306070623222726270623222627263534 +373637262726353437363732333205262726232207060716173617060716171617262506 +073637363726272627262322070615141716173637360706071617263534171617363726 +2726171617363706070607060716171633323736372603961324141424131424141424E1 +4F477F3325081756080963980E01E2060E9963090856170825347F474C02023934346D2F +3132323130322F02022E3330333131322E03190F064F467D3626081756090B65FDB40122 +773F3E7622A470030474200C233888018A37210C1F76066EA401223A3B40413C3A22A26E +06781F0B21368A8836230B207304037002251B2E2F31332F2E1B5556545C3C3E22242121 +05FE950905212223223E6B95630B0956160926367C464F060939333339013905093C3E23 +2223D63E3C09052022245A54551A2E2F34332E2E1A560335132415142314142314152413 +D9353967543B26120E2704395A5E5E5A3904270E12273A546739A727282727262829491E +1C1C1A1A1C1C1E383A39381E1C1D1A1A1D1C1E38393A010C5A5F353965553B27130E2801 +050902B3C0C0B3023A0238141B2E3E65750176633E2D1B1437033AB062636362B03B0437 +141A2D3F637775643F2F1A1438024BA2575A5A57A2202A2A10191D121415144440404414 +1514121D2B380501280F13273A546539355E9D26292826272728D64441191D1214143A1D +1941441514142E2A219E595B5B599E21000701050000062605D6000B00140021002D0078 +008600940000011417363726273637262706053426150615161736250615141736372E01 +270615142534270607161706071617360126232207060726273637161736372635343F01 +15161514071E011736371617060726272623220716171614070607161706232627060706 +0723262735262706072227363726272634373606141E0133323E01342E0123220625321E +01140E0123222E01343E0103CE27372C33090333252F30FEDC292C08371501DF01113D03 +032A0123FED7302A2B33030E2E323227FEF738200E092059660202B7A9542C3127A501A4 +27292E0555A8B80102665920060E1D3E1A14393818202232010D42323B465F1920205842 +3F32430D01332220173839143469BC6867BC696BBE6365BD0122539F5B589F56579F585A +9F0284A3A70F23658DAA6A1C0F70CD4D63014E54764A4B721B195A31566C4C57024D4909 +11A9700D1E6AAA856B250FA7016E410D5602027B7702067719115B3187F40101F487315B +0D1A03770602777B0202560D401E2366DC642D234A4D0C37422F15228989220114304337 +0C4E4B222C64DC662388CEBD6868BDCEBF67675155A0AE9D58589DAEA0550000000300ED +005305E8059E00030007000B00000901070103211521130117010159048F2CFB714004B7 +FB4940048F2CFB71059EFEC8A40137FE54AAFE550137A4FEC8000000000300ED005305E8 +059E00030007000B0000011701270115213501070137057C2CFB712C04FBFB4904772CFB +712C059EA5FEC9A4FEE7AAAAFDABA50138A4000000040064000006C805D40007000D0015 +002500000133011521272300170115213500073215022322033613321E0115140E012322 +2E0135343E01039F070322F9AD0809031B17FD680539FD7C144D34191736193313251514 +2613142415152405D4FA35090905AA9BFB4F1109049DC244FD9B026E3BFD0D1424151424 +1414241415241400000100AA000404F405D8001300000133171501143304151701273500 +353423242F0104D10E15FD8E5B018307FC510E028777FE93100705D81507FDE247530E47 +FD55150702570D474A114700000500AFFEFF075A05DA001E002A0031003D004300000126 +100033321736333200100706071121152111231121112311213521112601220610163332 +3726103726130607112111263716333236102623220716100536102706100158A90150EF +997D7D9BEC0152A888B40110FEF0B4FE86B4FEF00110B5010FA4E7E7A43F398A8B39D758 +65017A6648393FA0EAEAA0413A8CFED775757402149D01DD014C4646FEB4FE229C7E12FE +F87CFEFF0101FEFF01017C0109110391E4FEB9D8119501AE9D12FC942D0AFEF801090AA5 +10D80147E4129DFE50386C01477272FEB9000000000500A2FE5B083005C3000B0024002C +0038003E0000012620061017161736003726011400202726272627261000041701213721 +11211107110116030116171617012103060007161716203610272601323635220603F775 +FEBBE7742E37100137CC1C0285FEB5FE21AA7524866CAA015901CB6F0169FE8D8C01EE01 +8B8FFE9A7095FE9A401B71440169FEEDF70EFED0DE1D34740145EA752EFD8DA1EAA4E303 +2472E4FEB86C2C1ACE01330736FD90E8FEBD9F6C9225659E01DC01551167015C8EFE78FE +148F0175FEA4920376FEA453631B3F015CFE37CCFED70B3D316CD80148722DFEC9D8A4E0 +000400AFFE8308DF06D90005002D00390045000000021736102701140023222706071121 +152111231121352111262726100033321736171617012137211107110116252206101633 +3237261037260116333236102623220716100392017375750357FEB3F39A7E57640110FE +F0B4FEF00110B587A90150EF977C809AE56F016AFE8C8C01EE8EFE9A70FB93A4E7E7A43F +39898B3A0176383FA2EAEAA2413A8D03C8FEB86C6C014772FEEBE7FEBC452C0AFEF87CFE +FF01017C0109117E9D01DD014C444A060867015C8EFE148F0175FEA492C6E4FEB9D81195 +01AC9F12FD0D10D80148E4129DFE4F00000200AFFEFF06B2075500070028000000262006 +101620360526100033321701213721110711011615140706071121152111231121352111 +260479EAFEBBE7E70145EAFCDFA90150EFC0950168FE8D8C01EE8FFE9A70A988B40110FE +F0B4FEF00110B50443E4E4FEB9D8D8E89D01DD014C6E015B8EFE148F0175FEA492C2EF9C +7E12FEF87CFEFF01017C0109110000000002010DFFE305D006F4002B0044000001071617 +16171614070E010706232227262726272634373E01373633321737273717130727251307 +27031707011632373E013736342726272E0122070E010706141716171604284633224422 +2625237D6256605A5A5E3B4422262624835B585D3A3347FE39FE86E13A01CEC08B5D86FE +3AFD463D7E3D3C5A1A1919172F2A7E7A3F3C591B1918182E280400AA212448535CB45B56 +832A2525273E48535DB35E588226250CAB698A6901445E8BBFFE3239E1FEBD698BFCFC1A +19195C3D3C803C39322D311919583F3A843C39312A000000000200CFFEA305EE0712003D +0058000001363217130727251307270316171E0115140607060706071521152115233521 +352135262726272E0135343637363727072737270727130507271737170717220706070E +0115141617161716323736373E013534262726272602EE347036B3E23901CEC08C5DB32E +2845474745405A2D3C0113FEED96FEED0113383156444547464627311FFE39FE545D8CC0 +01CE39E254FE3AFE8A47353E2B2E31312E2F3A398A353E2B2E31312E2F3A3904870C0C01 +9E5C8ABFFE323AE2FE611D2845AB625FAB454028140AB896F0F096B80915254345AB5F62 +A947281E48698A6ACBE23A01CEBF8A5CCB698A6AD3181C2B2E774241772E2F1818181C2B +2E774142772E2F181800000000020180FFE3053406F4002B004600000111211521151617 +16171E011514060706070623222726272E01353436373637363735213521110727090107 +03323736373E0135342627262726220706070E011514161716171603A50113FEED3C2D5A +404547474544565262664E5A404547474544563138FEED0113AC6B016201626AF843393A +2F2E31312E2B3E358A393A2F2E31312E2B3E3505D5FEE796910A14284045AB5F62AB4543 +252323284045AB625FAB454325150991960119AD6B0161FE9F6AFB5018182F2E77424177 +2E2B1C1818182F2E774142772E2B1C1800020009011006A104C4002B0046000001231123 +1123060706070E012322262726272635343736373E013332161716171617331133113327 +3709012725141716171E0133323637363736342726272E01232206070607060582DC9655 +0A14284045AB5F62AB4543252323284045AB625FAB45432515095596DCAD6B0161FE9F6A +FBC918182F2E774241772E2B1C1818182F2E774142772E2B1C18029FFEED01133C2D5A40 +4547474544565262664E5A4045474745445631380113FEEDAC6BFE9EFE9E6AF843393A2F +2E31312E2B3E358A393A2F2E31312E2B3E3500000002017F0110053504C5000B0017001F +400F1512030F120918191212060C12001810DCECD4ECC4310010D4ECD4EC300134003332 +00151400232200371416333236353426232206017F0117C4C40117FEE9C4C4FEE999BD85 +85BDBD8585BD02EBC40116FEEAC4C5FEEA0116C285BDBD8586BDBD000001017F01100535 +04C5000B0013400703090C0D06000C10DCD4CC310010D4C4300134003332001514002322 +00017F0117C4C40117FEE9C4C4FEE902EBC40116FEEAC4C5FEEA0116000201FA018D04BA +044B000B0017002B400F156B030F6B091819126B060C6B001810DCECD44BB0105458B900 +06FFC03859ECC4310010D4ECD4EC30013436333216151406232226371416333236353426 +23220601FACF9191CFCF9191CF98755353757553537502EC92CDCD9291CECE9053757553 +5376760000040164018D0550044B001300210029003700654BB00B5258401F03070D111D +2A192E081B2C0F2622050428240A6B332C6B28246B1B146B003810D4ECD4ECD4ECD4EC11 +12173911121739310040152622171F05031F0F17111F366B070330176B0D113810D43CEC +32D43CEC3211123911123911123939305901343633321736333216151406232227062322 +263714163332332635343726232206250615141736353437161514073233323635342623 +220164CF915244445291CFCF915244445291CF98755306053F3E05055375015E3232325A +3E3F0506537575530502EC92CD2020CD9291CE2121CE90537558717057017632384D4C38 +384C4D7B577071587553537600050054015A0660047A0003001D00380052006D00000133 +112300220706070E0115141617161716323736373E0135342627262F01321716171E0115 +140607060706222726272E013534363736373604220706070E0115141617161716323736 +373E0135342627262F01321716171E0115140607060706222726272E0135343637363736 +030F9696021D522329181D1E1F1C1D24235223241D1D1E201B1D244C4B3A432E32353532 +31403D933A432E3235353231403DFD1F522329181D1E1F1C1D24235223241D1D1E201B1D +244C4B3A432E3235353231403D933A432E3235353231403D047AFCE0025A0F121A1F4629 +284A1B1C100F0F101C1E4728294B1A1C10A51A1E2E327F49467F32311B1A1A1E2E327F46 +497F32311B1A960F121A1F4629284A1B1C100F0F101C1E4728294B1A1C10A51A1E2E327F +49467F32311B1A1A1E2E327F46497F32311B1A000003000A018D06AA044A00370051006B +0000013E013736373633321716171E0115140607060706222726272E0127210E01070607 +06222726272E013534363736373633321716171E011724220706070E0115141617161716 +323736373E0135342627262724220706070E0115141617161716323736373E0135342627 +262703F707233631403D484B3A432E3235353231403D933A432E352506FEC50627323140 +3D933A432E3235353231403D484B3A432E36230702B95223241D1D1E1E1D1D2423522324 +1D1D1E1E1D1D24FBF7522329181D1E1F1C1D24235223241D1D1E201B1D2403351F5B3531 +1B1A1A1E2E327F49467F32311B1A1A1E2E3460181D5D32311B1A1A1E2E327F46497F3231 +1B1A1A1E2E355B1F7F0F101C1F462928471E1C100F0F101C1E472829461F1C100F0F121A +1F4629284A1B1C100F0F101C1E4728294B1A1C10000200D201E6060E04520005000B0000 +0135250715170125051105250578FCCCDCDCFE8E017203CAFC36FE8E02D78A654DBA4D01 +5E8278FE84788200000201B1005605030596001500290000013736353427262735373523 +15171506070615141F022103263534373637273521150716171615140703735F7652244E +3AC83A4E2452765FA3FEECA47B61542C580240582C54617B0111B4DF34625C2931A2253D +3D25A231295C6234DFB4BB013AEA60BE5C4B1944FAFA44194B5CBE60EA000000000200AF +FEFF052D05DA000700150000002620061016203605261000200010070607112311260479 +EAFEBBE7E70145EAFCDFA9015001DB0153A988B4B4B50443E4E4FEB9D8D8E89D01DD014C +FEB4FE229C7E12FD7B02861100010159FEFF052C05DA001A000021112311213521111633 +32361026200727362000100706071121150349B5FEF001102834A1E8E8FEBB7E75A801DB +0150A789B3010FFEFF01017C01B207D80147E46A74A6FEB4FE209A7E12FEF87C000200B0 +FEFF052C05DA00130017000013090211323315222311222311222335323311370902B002 +3E023EFE21878888875B5A8888888856014CFEB4FEB4039F023BFDC5FDE9FEF47CFEFF01 +017C010CA8016F014AFEB600000100B0FEFF052C05DA001F000001371711331137170121 +15210107271121152111231121352111072701213521011D7BFDB3FC7BFEE40189FE7E01 +157AFD0110FEF0B4FEF00110FD7A0115FE7E018904F97AFD0164FE9DFC7AFEE47CFEEB7B +FDFDAE7CFEFF01017C0252FD7B01157C00030078FF0F065405250009000D001700000115 +210901213521090103112311012117372115230901230654FED3FE3FFE3FFED301A2014C +014CF1ACFE770104D6D601048EFEB4FEB48E014A7CFE4101BF7CFEB6014A03DBFDA6025A +FD74D5D57CFEB6014A0000000002018EFF2C04C205AF0007001C00002414163236342622 +02261037363711331125170D010725111617161006022675A67575A63ECF68485DAC0125 +56FE99016756FEDB594668CFDDA67575A676FDD9CE012367471603CEFECEAD94D1D294AE +FED2164567FEDDCE00010144FEFF045805DA001E00002111231121352111262726351025 +36373617060706151017161706271521150348B4FEF001109C664E01295DAE483BCB6274 +FA57554A6E0110FEFF01017C01334C9875A1012EB93A1007173B859DC4FECDA2380F2513 +FF7C0000000300560008065E046D000F001D0033000013151417162037363D0106070620 +27260020070615141716203736353427371E011511140607062120272E01351134363736 +2120BAABCE024ECEAB2E38F0FD6CED3F039DFDB2CEABABCE024ECEABAB2C73707070E6FE +C2FEC7E873707070E6013E0139021D9360566868566092221C787820020B685663605668 +685660635659398851FEA24E8839737339884E015E51883973000000000400560008065E +05CB000D001D002D00450000002007061514171620373635342701151417162037363D01 +06070620272603151417162037363D01060706202726011E01151901140607062120272E +013519013436373621200481FDB2CEABABCE024ECEABABFB6BABCE024ECEAB2E38F0FD6C +ED3F2AABCE024ECEAB2E38F0FD6CED3F049773707070E6FEC2FEC7E873707070E6013E01 +3905676856636056686856606356FE7C9360566868566092221C787820FEC19360566868 +566092221C787820035A398851FEA2FEA24E8839737339884E015E015E51883973000000 +000500560008065E046D000B00210031003F005500000106070621202726271621200020 +171617161506070607062027262726373637363703151417162037363D01060706202726 +0020070615141716203736353427371E011511140607062120272E013511343637362120 +05781F38B8FEF1FEEFB63B1EEC01340131FDC00220B63A1F1C021A1F3AB8FDE0B63B1E1D +01011B2039D9ABCE024ECEAB2E38F0FD6CED3F039DFDB2CEABABCE024ECEABAB2C737070 +70E6FEC2FEC7E873707070E6013E013901641B1C5D5D1E1A6302A35D1D1C190E0E161C1D +5D5D1E1B180C0F181C1DFED59360566868566092221C787820020B685663605668685660 +635659398851FEA24E8839737339884E015E518839730000000700560008065E05CB0015 +0021002D003B004B005B0073000000201716171615060706070620272627263736373637 +010607062120272627162120170607062120272627162120022007061514171620373635 +342701151417162037363D0106070620272603151417162037363D01060706202726011E +01151901140607062120272E01351901343637362120024B0220B63A1F1C021A1F3AB8FD +E0B63B1E1D01011B203903E51F38B8FEF1FEEFB63B1EEC01340131ED1F38B8FEF1FEEFB6 +3B1EEC013401310AFDB2CEABABCE024ECEABABFB6BABCE024ECEAB2E38F0FD6CED3F2AAB +CE024ECEAB2E38F0FD6CED3F049773707070E6FEC2FEC7E873707070E6013E013905035D +1D1C190E0E161C1D5D5D1E1B180C0F181C1DFE1C1B1C5D5D1E1A63FC1B1C5D5D1E1A6304 +656856636056686856606356FE7C9360566868566092221C787820FEC193605668685660 +92221C787820035A398851FEA2FEA24E8839737339884E015E015E5188397300000300AF +FFE3052D06BE000B0020002C000001222635343633321615140613161716151400232200 +103736370301270901150103323635342623220615141602EE40615E43465B5E17B587A9 +FEB0EFECFEADA988B401FEF90101630163FEF75AA4E7E7A4A1EAEA017D5B443E58554142 +5D02BB117E9DEEEFFEB4014C01DE9C7E120167FEFAC7015DFEA3C70105FAF7E4A4A3D8D8 +A3A4E400000300160185066C05140050006A00850000012723222726070614070E010706 +232227262726272634373E01373633321F01163332373E01373626272627262F01262726 +272634373E01373632161716171614070E01070617161F01213217161721172516333237 +3E013736342726272E012322070E01070614171E0101262322070E010706141716171E01 +3332373E013736342726272603CDD673AE1C2A0302090D30241C2B2424241A1517120C0D +31231D2A23095A615A250E16250303070D0C164E543132191C0F130C0D34202348481A1F +0D120C091E030522296D52018BE84F6511FD62D5FC0D15141810151D05050C0A0F112C11 +1414151A07060D0A1E013012171C0C151E04050C0A0F0F2B141711151C05060D0A0F0B01 +85CD06080D082917202E0D0B0F0E1915241D4A1E202E0D0B03252703051C07082E131313 +44221414181B1E26421D20310A0B1E181E1C24431E171D070D161A6D5220294BCF790905 +071810111F17120D101006061711112016121C02B5090507190F112115120E0D12050719 +0E122016120E0900000300560121064504B500150064007A0000123236373E0135342627 +2E012206070E01151416171601050623222725070E011514161514060706070622272627 +2E01353436373637363B0132373E02342E0127262B01222726272E013534363736373632 +1716171E011514061514161F012536333217242206070E01151416171E013236373E0135 +34262726FD2E26101110101110262E261011101011100301026D2C6D51DBFE916A965011 +1C1C1628214E21221C1A1E1C1C162821096156661B261818261B625A35352128161C1C1E +1A1C22214E2128161C1C1150966A016FDB516D2CFAE62E26101110101110262E26101110 +10111001710E0D0E1F13121F0E0D0E0E0D0E1F12131F0E0D016CFC3F57922C3E0E0E0826 +19233C1A15100D0D0E17154123223C1A15100D22091A2810281A09220D10151A3C222341 +15170E0D0D10151A3C231926080E0E3E2C92573F7E0E0D0E1F13121F0E0D0E0E0D0E1F12 +131F0E0D00><0003001600C0066C044F004F006A00850000013307210607062321070607 +061514161716140706070E0122272E01272634373637363F01363736373E01272E012726 +23220F01062322272E01272634373E0137363332171E01171614171637363B0125060706 +070614171E0117163332363736373634272E012726232201363736373634272E01272623 +22060706070614171E011716333203CDD6D5029E11654FE8FE755264321D21090C120D1F +1A48482320370A0C130C1F19095A544E160C0D0703031D1E082B5A613231232B1C24300D +0C1212342424242B1C24300D0902062719B173FDB9150F09100D060717181117152A0F0F +0A0D0607161A1117140106150F09100D06071C131216152A0F0F0A0C05071E1214140E04 +4FCF4B2920526423140F061E17213E261C1E181E0B0A331E22392A1B1E18042422441313 +132E0807160B032714140B0E2D2020442120320E0F0B0D2E20172C050E090654080E0818 +13250F11150806120E0D1216230E12150805FD3A090D081813260F10190505120D0E1213 +280C111905050009004900F4069804E8005A0078009600B400D200FE012D013401480000 +01363726272627262B012227262726272634373637363736333217161716171615140716 +1F012536333217161514070D011615140706232227250706071615140706070607062322 +27262726272635343736373637363B013237360032373637363736353427262726272622 +070607060706151417161716171232373637363736353427262726272622070607060706 +151417161716171222272627262726353437363736373632171617161716151407060706 +070222272627262726353437363736373632171617161716151407060706070527262726 +27263534373635342726272627262207060706070615141716171617163B013217161716 +173736032D012623220705060706070607062B0122070607060706151417161716171632 +373637363736353427263534373625051633323725261407060706222726272634373637 +363217161702490B07070B0919515C432D2D25282213121210281B2F2A302E2C2B22280D +12062F8E58015DE25C8839081EFE0201FE1E083C855CE2FEA3588E2F061213222429302A +332729222A0D121210251C312A3043525B17FEEB1C0B0C090A030303030A090C0B1C0B0C +090A030303030A090C0B1C0B0C090A030303030A090C0B1C0B0C090A030303030A090C32 +321515111309090909131115153215151113090909091311151532151511130909090913 +1115153215151113090909091311150186259527160B100B060D0D1B14261F4A1F201B18 +0F0D0D0D1B14261F25435C641E121707231CBD01ED025F2A5D4FD9FE9194121117141C68 +5843251F26141B0D0D0D0F181B201F4A1F26141B0D0D060B100C0193011FD94F5D2AFDDD +D9050609091609090605050609091609090602D9080D0E07060A20100D221C2926602622 +271A121010101F24222F271D12093C258B5A530D111F0CCFCF0C250D0B535A8B253C0918 +172F272A1D200E1010111C222535222D2824231B13102009FED204050807070408070506 +0807050404050807070407080506080705023B0405080707040708050608070504040508 +07070408070506080705FD8207080E10111216151211100E080707080E10111215161211 +100E08023807080E10111215161211100E080707080E10111216151211100E085C0F3D07 +0406080E0A180E17211C1B1913100C0C0E1613201C21201C1B1913100C220A0E11081811 +FEF2C2F72F5692431E1E0F0E0A220C1013191B1C20211C2013160E0C0C1013191B1C2117 +0D190A1402025B75562FE12B16090906050506090916090906050506090000030056FFE3 +065E05F00061007500870000010E0115141617161716203736373E013534262726272623 +220706070E01151416171526023534123736373633321716171612151402070607062027 +2E0235343637263534371233321716151407062322070607061514171615140706070623 +221736373637363716171607060706070623222726011617161514070607062322273637 +3635340213030C151314186F011B7A776264615F665F7A788A867C776264614D2C6B726E +756C8D8C9C9A8E867370736E756E8B8DFEC78A2A4424201C046CB5A9510610242209362A +1F443F10121622352712104B1828321917032D0612020A131B23201303031B019E3E1610 +150D1E0A1C0A3A111D1E0137061E1B1C3212130B3333316364ED888DE869603433333163 +64ED8D87BC3E986D01109C9D0110776E3C3B3B38726FFEECA198FEF077703A3B3B124256 +302F4D1F100FCDEF01900814383A44402A1F7C736120161B1E092D46281C370C222A3D38 +192608150F3021321D1C0106042016110C312D3524260C0A12363A42340000060056FFE3 +065E05F0000D001A00280042005C00770000012E01272506151416171617161713262726 +22070607133633321713050E010725363736373E01353424321716171E01151406070607 +06222726272E0135343637363713220706070E01151416171E01203736373E0135342627 +26272627321716171612151402070607062027262726023534123736373601A93F270501 +2A08262420311408F3242D2B682B2D24463337383288012A022A3FFE920E0E31202426FE +E73E1A1B1616161616161B1A3E1A1B1616161616161B39867C77626461626360F201117A +776264615F665F7A788A9A8E867370736E756E8B8DFECB8E867370736E756C8D8C017749 +5F0FFD1E22325B242016090101A322141313142201830909FE0BFD076749830406162024 +5B3221760B0C1517351F1E3517150C0B0B0C1517351E1F3517150C021533316364ED8D85 +F163616633316364ED888DE869603433643B38726FFEECA198FEF077703A3B3B38726F01 +149C9D0110776E3C3B0000010078002C064105AA002D0000133537273317362502033317 +331523173315231721321716140706232107331523073315230723121324270723379424 +40649292011E35AB7B739456649A5D980108463020203046FEF8985D9A645694737BAB35 +FEE29292644002D72805DAC90D0A0114016A96508250C61A112C111AC650825096016001 +1E0B0CC9DA000005008400DC063004F9000D001400220029002D00000901210136373637 +363217161716170111011615140501210106070607062227262726270111012635340111 +211103F601B8FB5801B807081D242352232B16082F01AEFE5203FE9FFE4604A8FE460607 +1D24235223241D0731FE5301AD03FDF205AC0368012CFED409081C100F0F131909AAFEDE +028DFEDD1112136BFED3012D08071C100F0F101C07AA0122FD730121131312FDDF041DFB +E300000401B30000047C05EF005000D000E300F30000013437363F013637363317262726 +2726353437363332171617161F0116173637363736373635342726353437363332171617 +16151407031415141F0116151407171607061D012135342726272635342726012623220F +01060F01060F0127262F01262726272623220706151417161F0216171615140706232227 +2627262F0126272623220706071617161716171617140706071514171617161716151407 +26272627263F0136272627062322272627262322171617161F0116150721273437363D01 +273635342726353435133435342701071617161716171633323736353427262726070607 +16171633323736353427262F0101B3251711340E2D0202041A291E1422171B2410123011 +4A4B260F0E1207050A050C0501011F1B29371D0D010A01090202040103011603FDDF0509 +25301B1202870327230405010A2305163619092B112D4C1A14110E1108071D0D135F885F +5E04140504161206032F7334072A1E130C0705030831280D082E3201150F013617183609 +031C7C2F06070E02070207070F1C280E0F1811310904020A07040A5C010101AB010C0D02 +0309050C02FDFE11233A37110401110A0B04020C05066C800F0353260F0B1008040C080B +7802EB3731071F5D181701012F7E5B233C241C1B20050C1A6FBB5F251510402C1F10863A +060B0A060624221E3B1A1276521512FED40709181D162458242B7C1989138D89B6122135 +44582650593B02B639446F1E36C21D060F0B0D62276E95320F0C0B060B1F381A33FE6546 +5D0C08130401140607345426031F160A070C162620120C2F3530243F2D200231401B1126 +1106051009336C0F0A17174B0F0B0A051903050D430422503116D6090B9FB73A30333C08 +443A3558492E290607014404071326FE5B142B2D313A0D0C11100909151709057112142F +413809120A0A12110B06670000000008002B00A9066A056C00060039004C0070007B007F +0089008D00001316373635342701222726232207062B0122270705132635343F01363736 +373637363332173736333217161507171633323733161514072335062536373637012726 +232207060F01161514073601222F01071407363716151407062322071615140732373633 +321716333237363534270637161514071533363534270536370F01061514171617363534 +05073726D81B140F1003702F6C301D26964A2163532559FEF881060E451C195D7B404322 +24343E992D3B251E0DBECC2C283606E1593EF86DFCBC211E0805014E24111F58EC362214 +2F2C2803AB3419F273533F580F2455813E182214734A3F4B28602E2F34892B32194B322E +9E303EFCB0530DA25A70301F2B17FEA0315E0701F003271F1F2010FEC70E0510083B6373 +010C12201A2FE85E227C592F1A0D34AB3238191DDB871D1E83B4CF956C25E9256F1D0F01 +741E0EE9356F413D275924090161109D85A354022A0D161210270127472B2D0D0B0C0625 +5F6B6A7E071D728D7D6A4C60D0867CEF5C67C34B1A402F1E14032E383596632824000007 +00B6009A05CB05AF00130019002000280032004C00530000013E0135342F010623140706 +2314071716333236013F010F021325011325011305013332353427010036353427010701 +1633013E0137363332161514070E01070E0107062322263534373E011707011633322705 +25080C023B171E36364916ED08070A1AFC80990D92990D830109027DB8FD67FD841101BD +020D023F02FDC201A43606FDFB710205110FFD6E0D1F100D0A0E110506130E0E1D110E09 +0E100405142D7F023E0B0A39010140081C0A0508EE174836371C183B020B02F998920D98 +92017A12FD83FD68B8027C010914FDF3380A0C023EFCB636210F11020671FDFA0602EA0D +150504110D0A0E101F0D0E1405040E100B0D101EF40EFDC20242000700350196068E043E +00110017001E0025002B003F0046000000342627262F0114071614071615373637360535 +270715170337210901212701213635342721003427211521243436373E013216171E0114 +06070E01222627261707213635342705A30707050AD215333315D20A0507FBA65E5E5EAF +AF03520258FDA8FCAEAF014902B41923FD06034A32FD5602AAFC6C070807121412070807 +0708071214120708C55002FA231902DE18150907067E211438903814217E0607094BD870 +70D8700168C8FEACFEACC8012C19171B19FEC47018A03C28230F0E10100E0F2328230F0E +10100E0F6964191B1719000700B6009A05CB05AF00130019002000280032004C00530000 +012E0123220F011615321716153217373635342601271F02270727030125030127170136 +35342B012E012322070117013635012E0127263534363332171E01171E01171615140623 +22272E01130136232207010525091A0A0708ED164936361E173B020CFC6F920D99920DA8 +C611027C0299B8FD83120E023E023F022536210F11FDFB71020506FD170E140504100E09 +0E111D0E0E130605110E0A0D101F12020C01390A0BFDC20509090B023B181C37364817EE +08050A1CFD180D92980D92D5C60109027CB8FD68FD83EC7F023E0C0A38883606FDFA7102 +06110FFD6D0E1E100D0B100E0405140E0D1F100E0A0D11040515010F020C4202FDC20002 +0058017B060E045B002500470000121027323320250115252E012726220706070E011416 +1716171632373E013725150124212223121407323332052505060706222726272E013436 +37363736321716170525042322238A32080701250217026BFDBF050E120D1E0D0E0B0A0C +0E080B0E0D1E0D120E050241FD95FDE9FEDB070899170405B1020F01B7FE9C161B1A3E1A +1B1616161616161B1A3E1A1B160164FE49FDF1B1050402490144606EFEED531C08100806 +06060A091D201F070A0606060810081C53FEED6E01478A596EB918150C0B0B0C1517353E +3517150C0B0B0C1518B96E0000000001008A01AD060E0429002800000125150124232223 +363427323332250115252627262726220706070E0115141617161716323736373603E802 +26FD95FDECF8070632320607F80214026BFDDA070F0E12112A11120E0F0F0F0F0E12112A +11120E0F02C51C21FEED6E60E0606EFEED211D110F0E080808080E0F231514230F0E0808 +08080E0F00000001013300C60557050A001C000001321716333237001336333216151407 +0001062322272627263534373601C5271428110D0E0119EF3E87201621FE7EFEB6174748 +0D222E34462B028E40781401C20116480C090E29FE30FDFC24060F8A99272A2718000001 +00ED00B205C5050C001E0000013217163332370037363332171615140700070623222726 +2726353437363301C5271428110D0E0119EF65607F1A0B17FD7D7B2A9832371739484660 +30031A407814019DAF4A080316121BFD1EDE4C1A0C8DB28631202C000000000101030094 +05B10541000B000009010709012709013709011703E701C98EFE38FE378E01C9FE378E01 +C901C98E02EAFE378D01C9FE378D01C901C98DFE3801C98D0000000100AF003F06050596 +000B0000090B04910174FEC9FE8CFE8CFEC90174FE8C013701740174013702EAFE8CFEC9 +0174FE8C0137017401740137FE8C0175FEC9000100F1FFEE059C05DC0042000001321716 +173633321716151407060316171615140F01161514070623222726270603062322272635 +34373637121302272635343736333217363736333217161736373604F80A1011121D110F +1A1016D0C4518F0C1E2004161A0C1A147880ACDE204C2404330B051BCCE47A2809121310 +0F17090D121C200A36588ECC1805DC10101A331B11151B17E2FEF1C6EF140C1719160C14 +1E10121A9AD0E0FE8A362A1C3D501F0E2A013E010A01229D230A0E1A1A1D110C101EA898 +B8CC18000000000100FC0000060805EA0052000001321716173617161716151407060316 +1716151407060706070623222706070623222726270207062B0122272627062322272635 +3437262726353437363726032635343736333217363736333217161712373605541D1B14 +081A0A200E0E10F1EB9494111E1425020E1820241E080E241B171A5979E6581115021211 +0F021412191D241E0909121882C47A63161710161A30010B17112B0D6A96E7F90C05EA1E +163A01050C0E0D152810DBFEC7CCA21218311A110211233A18120B1B1C5FBFFEFB871A24 +1F0D0C1E23111B2D030D1818151FB0D4BD010B3D1C1A3120270E19321AC4BA0108DA0C00 +0000000300700000064405D5000B00170023000001112111211121112111211125211121 +11211121112111210321152111231121352111330436FE48FE5601AA01B801AAFEA601BE +FE42FDA8FE4201BE0258C801BEFE42C8FE4201BEC803C601ABFE55FE48FE5601AA01B850 +FDA8FE4201BE025801BFFD79C8FE4201BEC801BF0000000100700000064405D5000B0000 +01211121112111211121112104220222FDDEFE70FDDE0222019003B2FE70FDDE02220190 +0223000200700000064405D50003000F00000133352337211521112311213521113302E3 +EEEEEF0272FD8EF0FD8E0272F00273EE01F0FD8E0272F0027300000200700000064405D5 +0003000F0000012111212521112111211121112111210293018EFE72018F0222FDDEFE70 +FDDE022201900223018E01FE70FDDE02220190022300000101520000056205D5000B0000 +01211521112311213521113303D20190FE70F0FE700190F00445F0FCAB0355F001900002 +010C0000056C05D5000F001B000001331711211121271123271121112117071123112115 +21113311213504409696FED4FE8E969696012C017296C8DCFED4012CDC012C04A996FE8E +FD5F96020B960172012C96FA012CFED4DCFD5F02A1DC0003013E0000057605D5000B0017 +002300000111211121112111211121112721112111211121112111210321152111231121 +35211133040EFE98FEE8011801680118C80118FEE8FDF8FEE801180208A00118FEE8C8FE +E80118C8046D0118FEE8FE84FD5F02A1017C50FDE4FD5F02A1021C0118FE48DCFD5F02A1 +DC0118000000000100700000064405D5004B000001232206070607061507111716171617 +1E013B013534262726272623272107060706070E011D0133323637363736353711272627 +26272E012B011514161716171633172137363736373E0135030F7B64B349422C24321919 +242A4445B3687B4C47435F521B51047C3636525F43494A7B68B345442A24321919242C42 +46B6647B4C47435F521B51FB843636525F43494A02A04B4942604F1B54047C38374F5C46 +474B7A64B647422B25321919252B4249B4647A4B47465C4F1B54FB8438374F6042484C7B +64B647422B25321919252B4249B464000000000800BBFFE505F905F3000B001100140017 +001A001D0020002300000113210313210B012113032117031321130B0107331F01370307 +33052317012707133723035AE001BFE0E0FE41E0E0FE41E0E001BF3AA6A6014CA6A6A66C +D8AD6D6C6C6DD9FE7AD86CFEE76D6C6C6DD905F3FE7CFE7DFE7DFE7C01840183018364FE +E1FEE00120011F011FBB64BBBBFE7DBC63BC011FBCBC0184BB0000010054FFE3066005F0 +00430000013534272635343736321716151407061D013332373633321716140706232227 +262B011514171615140706222726353437363D0123220706232227263437363332171633 +03284C2C36387838362C4C20BA7A467664303030306476467ABA204C2C36387838362C4C +20BA7A467664303030306476467ABA031C20BA7A467664303030306476467ABA204C2C36 +387838362C4C20BB794676643031313064764679BB204C2C36387838362C4C0000000001 +0056FFE7065E05F00083000001262723060706070E0123222627262726343736373E0133 +32161716171617333637363735262726272E0135343637363736321716171E0115140607 +06070607151617161733363736373E0133321617161716140706070E0123222627262726 +27230607060715161716171E0115140607060706222726272E0135343637363736373526 +0302100AD4020A141D20522E2D52201F121111121F20522D2E5220220F0903D40A101115 +10142A1E212222212028285C282820212222212325170D1511100AD403090F2220522E2D +52201F121111121F20522D2E52201D140A02D40A1011150D172523212222212028285C28 +2820212222211E2A1410150293111510142A1E212222212028285C282820212222212325 +170D1511100AD5020A141D20522E2D52201F121111121F20522D2E5220220F0903D50A10 +11150D172523212222212028285C282820212222211E2A14101511100AD403090F222052 +2E2D52201F121111121F20522D2E52201D140A02D40A00010053FFE3066105F000830000 +01342627262726272E0135343637363736321716171E0115140607060706070E01153236 +37363736373E0133321617161716140706070E0123222627262726272E01231416171617 +16171E0115140607060706222726272E0135343637363736373E0135220607060706070E +0123222627262726343736373E0133321617161716171E0103282C240E10180A28282A26 +203A2E72303624262A2A260A1A081429274465210D0C120A2764383A6226241815151824 +26623A3864270A120C0D2961402F210D10190A27292A2624362F722F3624262A29270A19 +100D27293F63270E0C120A2664383A6226211B1616182426623A3D5F260A120614286203 +1C4363220E0C120A2664383A6226201C1616182426623A3D5F260A12061428613F2F210D +10190A27292A2624362F722F3624262A29270A19100D27294465210D0C120A2764383A62 +2624181515182426623A3864270A120C0D29614029270E10180A28282A26203A2E723036 +24262A2A260A1A0814282800000000010054FFE5066005F2013000000132171617161716 +151407060736373633321716171617161514070E01070623222726272627112126272627 +263534363736373633321716171617161514070607363736333217161716171615140706 +070607062322272627161716151406070607062322272627262726353437363736372111 +363736373633321716171617161514070607060706232227262716171615140706070607 +062227262726272635343736370607062322272627262726353437363736373633321617 +161711211617161716151407060706070623222726272627263534373637060706232227 +262726272634373637363736333217161726272635343736373637363332171617161716 +15140706070607211106070607062322272E012726353437363736373633321716172627 +263534373637363736035A1E171B12140B0A0A0B140B14191C1E181A13140B0A0A0B2819 +191D1E1719140E0A0126110E130B0B1613141A191C1D191A14130B0B0B08091419191C20 +171914130C0A0A0C1316171A1D1C19191409080B1613111D191D181D1A14130B0B0B0B13 +0E11FEDB090E111D171E1D181A13140B0A0A0B14121B171E191C140B130B0B0B0B14121B +173C171B12140B0B0B0B130B14181D1E171B12140B0A0A0B14131A181D1B34140E09FEDB +110D16090A0A0B1416171A1B1E191914130C0A0A080A16171A1C1D191A14120C0A0A0C12 +111D191D1C1A19140A080A0A0C13131A191E1B1A1914140B0A0A0C130D1101250A0E1419 +171E1D181A280A0B0B0A14131B171E1D18140B140B0A0A0B14131A1705F20B0C12141A19 +1D1C191A140A080A0A0C12141A191D1F1719280B0A0A0C130D11FEDB0A0E1419171E1D32 +14140B0A0A0B14131A181E1C19140B140B0A0A0B14121B181D1E181B1216090A0A0B140B +14191C1A3613110D0B0B0A14141A181D1E1719140E0AFEDA120D100E0B0B0B13141A191C +1D191A14120C0B0B0809131A191C1D1A1914130C0A0A0C1314191A1D1C191A1309080B0B +0C12141A191D1C191A14130B0B16130D120125090E1716181E1C191A1316090A0A0B1412 +1B171E1D19130C16090A0A0B14121B173C171B13110D0B0B0A140B14181D1E171B12140B +0B0B0B14131A181D1E171A130E0A0125110D130C0A0A0B28191A1C191D1A14120C0A0A08 +0A141A191C1D191A14120C0B000000010057FFE3065F05F5001B00001332373637361235 +1412171617163322070607060215340227262726579B8D867370736E756C8D8C9C9C8C8D +6C756E737073868D02EC3B38726F0114A19DFEF0776E3C3B3B3C6E77FEF09DA101146F72 +383B00020057FFE3065F05F5001B0037000001321716171E011534363736373633222726 +272E01351406070607062132373637361235141217161716332207060706021534022726 +27260165655C574A494B474D465B5B66665B5B464D474B494A575CFE8D9B8D867370736E +756C8D8C9C9C8C8D6C756E737073868D02EC26254A48B36966B14D4827262627484DB166 +69B3484A25263B38726F0114A19DFEF0776E3C3B3B3C6E77FEF09DA101146F72383B0002 +002FFFEC068505F300090013000013250901050113250513010321010309010301212F02 +0D011E011E020DFEA625FE0AFE0A2501D1BFFD9501F4BF01F501F5BF01F4FD9503A58301 +CBFE3583FE61FDE6CACA021A03ECFDB3FE94FDB4016CFE94024C016C000000020056FFE3 +065E05F00009002400000103210103090103012103321716171612151402070607062027 +2627260235341237363736035AACFDD301C2AC01C301C3AC01C2FDD3AC9A8E867370736E +756E8B8DFECB8E867370736E756C8D8C05EAFDEEFEB8FDEF0148FEB80211014802183B38 +726FFEECA198FEF077703A3B3B38726F01149C9D0110776E3C3B00020030FFED068405F2 +001D00270000002207060706070615141716171617163237363736373635342726272627 +03132101130901130121039D863939303017181817303039398639393030171818173030 +397CBF026BFE0CBFFE0BFE0BBFFE0C026B03E4181A2D32383B42413B38322D1A18181A2D +32383B41423B38322D1A0226FDB3FE94FDB4016BFE95024C016C0003002FFFEC068505F3 +000900270031000013250901050113250513003217161716171615140706070607062227 +262726272635343736373637130321010309010301212F020D011E011E020DFEA625FE0A +FE0A25018E863939303017181817303039398639393030171818173030397CBFFD9501F4 +BF01F501F5BF01F4FD9503A58301CBFE3583FE61FDE6CACA021A01DE181A2D32383B4241 +3B38322D1A18181A2D32383B41423B38322D1A0226FDB3FE94FDB4016BFE95024C016C00 +000000030030FFED068405F200090013001D000001132107132707132721130321010309 +0103012103132101130901130121035A600135FA5FFAFA5FFA0135608FFE2F0178900178 +0178900178FE2F8FBF026BFE0CBFFE0BFE0BBFFE0C026B0449FED9B6FEDAB6B60126B601 +FBFE47FEEFFE470111FEEF01B90111028EFDB3FE94FDB4016CFE94024C016C0000000003 +0030FFED068405F200090013001D0000011733071727073727331B012101130901130121 +37032105032505032521035A267C6426646426647C26BF026BFE0CBFFE0BFE0BBFFE0C02 +6BBF73FE8A012F75012F012F75012FFE8A034976497649497649031FFDB3FE94FDB4016C +FE94024C016CFBFE9DDBFE9DDBDB0163DB0000060030FFED068405F2000200050008000B +000E001800002501352501370103272521070B01171113210113090113012101E10178FD +A00178E8017A90E80260FE2F8F018F8FBF026BFE0CBFFE0BFE0BBFFE0C026B990111F3C7 +FEEF4BFDFB01B94BC7C60280FE47C60353FDB3FE94FDB4016CFE94024C016C0000000002 +00320018068605B7000D0017000009011327250127130121131713210103210503010503 +01210686FE3EACA2FEB2FE6AA2ACFE3E022DACA29B019CFD2786FE4F015E86015F015F86 +015EFE4F0371FEB8FDEF34F3FED93402110148021234FE220168FE64FFFE6400FFFF019C +00FF000100840000063005D5001100000111211125130D01032511211105032D011302BA +01400196A0FE6A0196A0FE6AFEC0FE6AA00195FE6BA0040001D5FE2AEBFEEBEAEBFEEBEB +FE2A01D6EB0115EBEA0115000000000200980000061C05D5000500170000010717333727 +05013701113311011709010701112311012702E37878EE7878FE99FE2E7801D2F001D278 +FE2E01D278FE2EF0FE2E7803B9CED0D0CECE010DD0FEF2021BFDE5010ED0FEF3FEF2D001 +0DFDE6021AFEF3D00000000100700000064405D500170000090107011123110127012135 +21013701113311011701211503D401B947FE4664FE464701BAFD8F0272FE454701BA6401 +BA47FE45027202B8FE464701BBFD8E0271FE464701BA6401BB47FE460271FD8F01BA47FE +456400010040FFE3064C05F0000F0000011309010D0109010B0109012D01090103464F01 +D4FE9D0246FDBA0163FE2C4F4FFE2C0163FDBA0246FE9D01D405F0FDB90164FE2C504FFE +2C0164FDB90247FE9C01D44F5001D4FE9C0000090054FFE3066005F0000200050008000B +000E00110014001700270000010503052505010325031303012513250525011305130313 +111325030D0113250B0105132D01030504F5FEDD770244FEDBFEE1019A7BFEE1017777FE +65012377FDBC0125011FFE667B011F0177779F0184A40187FE79A4FE7C9F9FFE7CA4FE79 +0187A4018404857BFEE0017878FE65012377FDBC0125011FFE667B011F017777019CFEDD +780245FEDBFEE00306FE79A4FE7CA09FFE7CA4FE790187A401849FA00184A40000000001 +00BBFFE305F905F0000B00000113250901250B0105090105035A70022FFE4101BFFDD170 +70FDD101BFFE41022F05F0FDBCC1FE7DFE7DC1FDBB0245C101830183C10000010054FFE3 +066005F0000F0000011309010D0109010B0109012D010901035A7101B2FEEF01F4FE0C01 +11FE4E7171FE4E0111FE0C01F4FEEF01B205F0FE0B0112FE4E7271FE4E0112FE0B01F5FE +EE01B2717201B2FEEE0000010054FFE3066005F0000F0000011325030D0113250B010513 +2D010305035AAA017989016CFE9489FE87AAAAFE8789FE94016C89017905F0FE9489FE87 +ABAAFE8789FE94016C890179AAAB0179890000010054FFE3066005F00017000001132503 +25030D01132513250B01051305132D0103050305035A74010F470163EF0156FEAAEFFE9D +47FEF17474FEF147FE9DEFFEAA0156EF016347010F05F0FEA9EFFE9D47FEF17374FEF147 +FE9DEFFEA90157EF016347010F7473010F470163EF00000100700000064405D5002F0000 +011133111317030117012517052115210507250107011307031123110327130127010527 +252135212537050137010337031E78AA6FAA013A55FEC5019C2EFE6301BEFE4601992EFE +64013B55FEC7A96FAA78AA6FAAFEC655013AFE652E019AFE4501BEFE632E0199FEC85501 +39A96F041701BEFE4501992EFE66013A55FEC5AB6FAB78AA6FACFEC4550139FE672E0198 +FE4601BCFE662E019BFEC555013AAA6FAA78AB6FA9013955FEC701992E00000100A7FFE3 +060D05F0009B0000013534272635343736321716151407061D0117161737363736373633 +32171617161514070607062B012223220F0116151407171633323B013217161716151407 +0607062322272627262F01060F011514171615140706222726353437363D012627262707 +06070607062322272627263534373637363B013233323F0126353437272623222B012227 +2627263534373637363332171617161F0136373603274B2C36387838362C4C101F180A71 +4127433C341615471E14050E573E4C0C0B0A83640C04050C66820B0A0C4C3E570E05141E +471516343C4327436E0E1B19104C2C36387838362C4D09081D170E6E4327433C34161547 +1E14050E573E4C0C0B0A84640C05040C64830A0B0C4C3E570E05141E471516343C432745 +6C0B1A1D0803940C8077464E6430313130644E46797E0C060E1706447A49272307183423 +2C16184732243A0713141514073B24324718162C233418072327497E3F081909060F7F79 +464E6430313130644E46797F0F03030D15083F7E492723071834232C16184732243A0714 +161413073A24324718162C23341807232749823B06190B030000000200A7FFE3060D05F0 +001900B5000000220706070E0115141617161716323736373E0135342627262F01353427 +2635343736321716151407061D011716173736373637363332171617161514070607062B +012223220F0116151407171633323B0132171617161514070607062322272627262F0106 +0F011514171615140706222726353437363D012627262707060706070623222726272635 +34373637363B013233323F0126353437272623222B012227262726353437363736333217 +1617161F01363736036F2A11120E0F0F0F0F0E12112A11120E0F0F0F0F0E12594B2C3638 +7838362C4C101F180A714127433C341615471E14050E573E4C0C0B0A83640C04050C6682 +0B0A0C4C3E570E05141E471516343C4327436E0E1B19104C2C36387838362C4D09081D17 +0E6E4327433C341615471E14050E573E4C0C0B0A84640C05040C64830A0B0C4C3E570E05 +141E471516343C4327456C0B1A1D08035008080E0F231514230F0E080808080E0F231415 +230F0E084C0C8077464E6430313130644E46797E0C060E1706447A492723071834232C16 +184732243A0713141514073B24324718162C233418072327497E3F081909060F7F79464E +6430313130644E46797F0F03030D15083F7E492723071834232C16184732243A07141614 +13073A24324718162C23341807232749823B06190B03000100A1FFE3061205F000680000 +0117323F0127262307222627263437363736321617161F01353427263437363217161407 +061D013736373E013217161514070E012327220F01171633373216171614070607062227 +2627262F01151417161407062227263437363D010706070E012227263534373E0101B59F +51212F2F1F56965AA2120B192A6E144E992B4738306A403652A85236406A302F5031934E +14B10B12A2549E502330301F56965AA2120B192C6C154F40572B4738306A403652AC4E36 +406A30334C2F954E14B20C13A102C40A141C1B12075D482C602C4820065963A2211C3737 +995CCA344F4F34D0568F41371C1CA7675506339A272C485E0A141B1C12075D482C602C4C +1C06263363A2211C3737995CCA344F4F37CD568F41371C1EA5665606349A262C485E0004 +00A1FFE3061205F0000E009900B100C90000013637363534272622070615141716131716 +333237363332171617161514070607062322272627262F01151417161514070623222726 +353437363D010706070607062322272627263534373637363332171633323F0127262322 +07062322272627263534373637363332171617161F013534272635343736321716151407 +061D01373637363736333217161716151407060706232227262322070506232227262322 +070607061514171617163332373637362516171617163332373637363534272627262322 +07062322035A1C38251E3154311E2538A8123565202512105A465C120B192B6D14163842 +532F3F4A125640365254584E3640561247423151423816146E2A190B125C465A10122520 +653512123365212612105A465A140C1A2A6E14163842532F3F4A1256403652A852364056 +1247423151423816146D2B190B125C465A101226216533FE9844411E1D090A353C3B0705 +0D153E0A0C1F2B46192401DC482419462B1F0C0A3E150D05073B3C350A091D1E4103D363 +4A3251441A2B2B1A4451324AFEB40B2003012835482C27392C4A1E0626306689290A1454 +7C5C606A344F4F3767605C7C54140A278B672F260620482C39272C4934280103200B0B1F +030128334A2C26392D48200626306689290A14547C5C606A344F4F346A605C7C54140A27 +8B672F26061E4A2C39272C48352801031F801204012222271815211724150419283A554A +4A553A2819041524172115182722220104000002006E0000064605AD0019007700000022 +0706070E0115141617161716323736373E013534262726273736373633321716171E0115 +140607060706222716171E0115140607060706222726272E01270E010706070622272627 +2E0135343637363706222726272E013534363736373633321716172E0135343637363736 +33321716171E0115140603A2903D3E3334333334333E3D903D3E3334333334333E783E25 +38353637302D292C282D25382F5B1B30212D282C292D3032792F3825301D050525292D30 +32792F38252D282E27262417572F3A232D282C292D30323B3E2F3B29081B2C292D30323B +3E2F38252D281B040B1A1C30367B49467B36301C1A1A1C30367B46497B36301C13351017 +17142B27673E3A632E2619150517222E633B3D67272B1415151926314E252657272B1415 +1519262E633A3E6B23221504151B242E633A3E67272B141515192C0E423A3E67272B1415 +1519262E633B3D3F00000006006E0000064605AD005C0076008D00A600BD00D60000250E +0107060706222726272E0135343637363706222726272E01353436373637363332171617 +2E0135343637363736321716171E011514060736373633321716171E0115140607060706 +222716171E0115140607060706222726272E010232171617373635342627262726220706 +070E0115141F01363713262726272627070E011514161716171632373637363703263534 +36372726272623220706070E01151416171617163301171617161716323736373E013534 +262F0106070607061337363736373E0135342627262726232207060F011E011514035A05 +1D3025382F7932302D292C282D21301B5B2F38252D282C29302D3C313A33253E071B282D +25382F7C2F38252D281B073E2538353637302D292C282D25382F5B1B30212D282C292D30 +32792F3825301D4D903D08070E0D191B19201E481E20191B1903180708432320422F1E1B +67181C191B19201E481E20191804D6032F2A780807231F241E2019181C191B1920150402 +3823231819201E481E20191B191C18671B1E2F4220F550501520191B191C1819201E241F +230708782A2FF8254E3126191515142B27673D3B632E2217051519262E633A3E67272E11 +171710350D3F3D3B632E2619151519262E633B3D3F0D35101717142B27673E3A632E2619 +150517222E633B3D67272B1415151926314E03381A0304474714243E1B180E0D0D0E181B +3E24140C820403FD63060E1E2E1E2C62174224233E1B180E0D0D0E18180901BA16174972 +304304030D0D0E18183E27233E1B180E09FEC24C4D18180E0D0D0E181B3E23244217622C +1E2E1E0E01240A0A090E181B3E23273E18180E0D0D030443307249170000000A0054FFE3 +066005F00029005400BD00E60111013A0165017F01A901D3000001262707062322262726 +2726343736373E0133321F013637272623220607060706141716171E0133323725060717 +1633323637363736342726272E0123220F01161737363332161716171615140706070E01 +232223012E013437363736373633321617343637363736321716171E01153E0133321716 +171617161514060732161716171615140706070E01231E011514070E0107062322262714 +0607060706222726272E01350E012322272E012726343637222627262726343736373E01 +0126270706070E010726272E012726273E0137363F0126270706070E011516171E023332 +363736370116173736373E0135262726272E0123220607060F0116173736373E01371617 +1617161716170E010706070306071716171E011706070E010706072E0127262F01060717 +16171E0133323E0137363734262726270136372726272E01232206070607060714161716 +1F0136372726272E012736373637363736371E0117161704220706070E01151416171617 +16323736373E01353426272627130607171615140607060706222726272E0135343F0126 +27070615141617161716323736373E01353427031617373635342627262726220706070E +0115141F013637272635343637363736321716171E01151407023A0602E411090A1A0A08 +06040406080A180C0911E40206CE24141C3416140C0A0A0C1416341C1424031A02067777 +121E3416140C0A0A0C1416341E1209E5060278790710160A0806040406080C180C0705FB +CA25221110202128292D2B552422212028285C282820212226532B2D2928211C14112027 +374D22230F101012201C5632252011104128292D2E522422212028285C2828202122284F +2D2C2A284110112223325022230F10101220224D01C114108E0B0607190E0D0B0C130504 +01010909060EB40E0BB8210E1515010A0A2A341D2032150E1301EB0F0A6B6B0D1615010A +0A1515341D2032160D057514114B4B050A170E0D0B0C0A09050401010B080503A60B0EB4 +0E06070B01010405130C0B0D0E1709060B8E111369130E1532201D342A0A0A0115150E21 +FD8912133D3D0D1632201D3415150A0A0115160D09CD0B0E605F050A0901010405090A0C +0B0D111608050301775223241D1D1E1E1D1D24235223241D1D1E1E1D1D240316151B020A +090A0B0C1A0C0B0A090A021B1615380A1516151A193C191A1516150A6317152021151615 +1A193C191A151615033E16160E0F0A090A0B0C1A0C0B0A0B0801029A16161C020A0A0A0A +0C1A0C0C0A080A021A1614380A1416161A183C1A1A1416160A64181421211616141A1A3C +181A161614023E17150E0E0A080A0C0C0C0E0C0A0A0C0801222555562A29202110102124 +3352201F121111121F205233261F1010211C2D282D255A2620222325282E322428201E26 +26532B2C292941101021243352201F121111121F205233271E1010412929585424222223 +2528602428202220FE1C0B0DB40D06080A01010405120C0C0D0D1809060A8E111369130E +14331F1D1B192B1415140E21027812133D3D0D15331F1D1B1916151415150D09CD0C0E5F +60050B080101040509090C0C0D1016090502FE1D13118E0A0608190D0D0C0C1205040101 +0909060DB40E0AB9210E1415142B191B1D1F33140E1301EB0F0B6B6B0D1515141516191B +1D1F33150D057513124B4A050B170D0D0C0C0909050401010A090503DF0F101C1F462928 +471E1C100F0F101C1E472829461F1C10FE240602E411080B190A0905050505090A170D08 +11E40206CD25131D3316140C0B0B0C1416331D1325031A02067777121E3316140C0B0B0C +1416331E1209E506027879070F160A0905050505090C170C070500040056FFE3065E05F0 +00190033004E005E000000220706070E0115141617161716323736373E0135342627262F +01321716171E0115140607060706222726272E0134363736373613321716171612151402 +0706070620272627260235341237363736170325130D0103251B0105032D01130503977A +33352B2B2B2B2B2B35337A33352B2B2B2B2B2B357057444D36393F3D3B394A48AA444D36 +393F3D3B394A48539A8E867370736E756E8B8DFECB8E867370736E756C8D8C9C9DFE7FA3 +FE7D0183A301819D9D0181A30183FE7DA3FE7F04131618282E683C3B682E281816161828 +2E683B3C682E2818861F22363896544E963B391F1F1F22363896A2963B391F1F016D3B38 +726FFEECA198FEF077703A3B3B38726F01149C9D0110776E3C3B08FE7DA3FE7F9E9DFE7F +A3FE7D0183A301819D9E0181A300000700A1FFE3061205F000080093009C00A700B200C1 +00D000000111220706151417161317163332373633321716171615140706070623222726 +27262F01151417161514070623222726353437363D010706070607062322272627263534 +373637363332171633323F01272623220706232227262726353437363736333217161716 +1F013534272635343736321716151407061D013736373637363332171617161514070607 +062322272623220F01113237363534272613252627262322070607060105161716333237 +3637361325061514171617163332373633320D0136353427262726232207062322035A2A +311E2538A8123565202512105A465C120B192B6D14163842532F3F4A125640365254584E +3640561247423151423816146E2A190B125C465A10122520653512123365212612105A46 +5A140C1A2A6E14163842532F3F4A1256403652A8523640561247423151423816146D2B19 +0B125C465A1012262165339E2A311E2538AE017E153E0A0C1F2B461924FE24FE82153E0A +0C1F2B46192448FE820D05073B3C350A091D1E4101D8017E0D05073B3C350A091D1E4103 +D301B92B1A4451324AFEB40B2003012835482C27392C4A1E0626306689290A14547C5C60 +6A344F4F3767605C7C54140A278B672F260620482C39272C4934280103200B0B1F030128 +334A2C26392D48200626306689290A14547C5C606A344F4F346A605C7C54140A278B672F +26061E4A2C39272C48352801031FF5FE472B1A4451324A01C1DD24150419283A55FECDDD +24150419283A550133DD172115182722220104FBDD172115182722220104000100B60000 +05FE05D50041000001270727372737173533151711273717353315371707113735331537 +170717072707173717071707271523352711170727152335072737110715233507273727 +371702E2F0C23C86C43CC478F0C23C8678863CC2F078C43CC4863CC2F0F0C23C86C43CC4 +78F0C23C8678863CC2F078C43CC4863CC202EB8A70684D7268729BE08B01166F684DE3E3 +4D686FFEEB8AE09B7268724D68708A8B70684D7268729BE08BFEEA6F684DE3E34D686F01 +168BE09B7268724D68700007009C0000061805D5001D002100250029002D003100350000 +013311251125170D0307251125112311051105272D033705110507151735250715370507 +1737250717370507153F01151735031E78012301093CFEF60124FEDD01093CFEF7FEDD78 +FEDDFEF73C0109FEDD0124FEF63C01090123ABAB0123ABABFDF7ACABAB019AAAABABFDF6 +ABAB78AB05D5FECCA9FEB09A689AA8A899689AFEAFA9FECD0133A901519A6899A8A89A68 +9A0150A927C563C56363C56368636262636362626763C663C6C663C60000000100820004 +063005D50041000001331537170711251133153717071707270D01371707170727152311 +251117072715233507273711051123350727372737172D01072737273717353311051127 +3717031E788C64F0010CC8583C5B8C64F0FEF6010BF0648C593C5CC8FEF9F0648C788C64 +F0FEF7C85B3C588C64F0010BFEF7F0648C5C3C59C8010DF0648C05D56851AD8BFECE9B01 +15A234683551AD8A999B8BAD51346835A1011598FED08BAD51686551AD8B013599FEEBA1 +35683351AE8B9A998BAD51356833A1FEEB9B01368BAD51000000000100A1FFE5061305F0 +008700000116151407060706232227262707173637363332171617161514070607062322 +27262726353437271116171E01140E01222E013436373637110716151407060706232227 +26272635343736373632171617372706070623222E013437363736333217161716151407 +171126272E013436373633321E0114060706071137263534373637363332171605F81B1B +1B2E2F35362E1311F1F111132E36352F2E1B1B1B1C2D2F3533312F1B1A04F115132E3636 +5C6C5C36362E1315F1041A1B2F2F35362E2E1B1B1B1B2E2F6A2F1311F1F110143133365C +361B1B2E2F3533312F1B1A04F115132E36362E2F35365C36362E1315F1041A1A302E3635 +2F33046D362E352F2E1B1B1B0B0F8B8C0F0B1B1B1B2E2F35342F2F1B1B1B1A2F2E361615 +8CFEE9070B1B5C6C5C36365C6C5C1B0B0701178C1516362E2F1A1B1B1A2F2E36352F2E1B +1B1B0B0F8C8B0F0B1B365C6C2E2F1A1B1B1A2F2E3616158C0117070B1B5C6C5C1B1B365C +6C5C1B0B07FEE98C1516362E2D1C1B1B1E0000090061FFE5065305D70007000B000F0013 +0017002E0045005C00730000001406222634363209013709023709022709022701132627 +262726353437363736321716171615140706070603161716171615140706070622272627 +263534373637360306070607062322272627263437363736333217161716053637363736 +333217161716140706070623222726272603F0587C58587C01A7FE7D550183FD0DFE7F55 +0181029EFE7D550183FDB7FE7F550181B9390F17040102030F1772170F03020104170F39 +390F17040102030F1772170F03020104170F9F3C1825441D52451E4120313120411E4552 +1D44251801EC3C1825441D52451E4120313120411E45521D442518032C7C58587C58FD2E +018455FE7C024A018155FE7E012DFE7C550184FD0DFE7E550181012E3C1825441D52451E +4120313120411E45521D442518FE143C1825441D52451E4120313120411E45521D442518 +0114390F17040102030F1772170F03020104170F39390F17040102030F1772170F030201 +04170F00000000090061FFE5065305D70007000B000F00130017002B003F005300670000 +001406222634363209011709021709020709020701021407060706222726272634373637 +363217161712140706070622272627263437363736321716170032171617161407060706 +2227262726343736372432171617161407060706222726272634373637043B84BA8484BA +FD69012955FED702A1012955FED7FD0A012955FED7034B012955FED7081315272E6E2E27 +15131315272E6E2E2715131315272E6E2E2715131315272E6E2E2715FD19703137232828 +2337317031372328282337044D7031372328282337317031372328282337034BBA8484BA +84FD38012955FED7034C012955FED7017EFED7550129FD5EFED755012903497031372328 +282337317031372328282337FBB370313723282823373170313723282823370259131527 +2E6E2E2715131315272E6E2E2715131315272E6E2E2715131315272E6E2E271500000009 +0054FFE5066005F2000C001800250032003F004B0057005F006B0000011407062B012535 +25333217160534363B0105150523222726011615140F0101270137363332012635343F01 +01170107062322033633321F01010701272635340106222F010137011716151400321716 +1D010323033534371214062226343632022227263D0113331315140706601C1C280AFE60 +01A00A261E1CF9F438280A01A0FE600A261E1C052A1D1B07FEB7470102071C292AFBD51D +1B07014947FEFE071C29281F1D2A281D07010247FEB7071B04651E521C07FEFE47014907 +1BFD96521E1D3264321DDD587C58587C15521E1D3264321D02EC2A1E1C3264321E1E2828 +3C3264321C1E024D1D2A271D07FEFE460149071CFB9B1D2A271D07010246FEB7071C0465 +1E1C07FEB7460102071B292AFBD61E1C07014946FEFE071B292A050D1D1C280AFE61019F +0A271DFD557C58587C58FC631D1C280A019FFE610A271D00000000010054FFE5066005F2 +006C00000132171615140703013637363332171615140706070125363332171614070623 +222725011617161514070623222726270113161514070622272635343713010607062322 +272635343736370105062322272634373633321705012627263534373633161716170103 +2635343736035A2B2F23054E011C15023432421F1E340A19FE7B01DF190C4C222E2E244A +0725FE28018A1C02341E1F422B3B0A12FEE94E05232F562F23054EFEE9120A3432421F1E +34021C018AFE2825074A242E2E224C0C1901DFFE7B190A341E1F4224420215011C4E0523 +2E05F22F234A071FFE2201891D01351F1E43372F0912FEE94E04222E582E24064DFEE516 +013531431E1F3509190185FE221F074A232F2F234A0E1E01D8FE7B1909351F1E434C1A01 +16011B4D06242E582E22044E011712093531431E1F1421011DFE7701D81E0E4A232F0002 +0066FFEC06C605E8000D002300E7BA0000001300032BBA001F000600032BB8001F10411B +001600000026000000360000004600000056000000660000007600000086000000960000 +00A6000000B6000000C6000000D60000000D5D410500E5000000F5000000025D410500EA +000600FA000600025D411B00190006002900060039000600490006005900060069000600 +790006008900060099000600A9000600B9000600C9000600D90006000D5DB80025DC00BA +0003001000032BB8000310BA0017000A00032BB8001710B8001010B8000ED0B8000E2FB8 +001710B80019D0B800192FB8001710B8001BD0B8001010B80022D0303113100021200011 +3402242322040201062320001134122433321736333204121510002122B9018F011C011C +018FB6FEB8ADADFEB8B602DC1919FEC4FE3FCE0171BE19191919C10171CDFE3FFEC21902 +EAFEE4FE700190011CB30147B1B1FEB9FC510201BF013FC60172C60202C6FE90C8FEC1FE +41000002007AFF9C06B205D40003000B0037BA0003000500032BB8000310BA000A000000 +032BB8000A10B8000DDC00BA0000000A00032BB8000010BA0007000100032BB800071030 +3125112111172311211533112105FBFAD2116405D464FA2C53052EFAD25305D464FA2C00 +00000002007A000006B206380003000B0037BA0003000600032BB8000310BA000B000000 +032BB8000B10B8000DDC00BA0000000500032BB8000010BA000A000100032BB8000A1030 +3125112111251521113335211105FBFAD20581FA2C6405D453052EFAD2116405D464FA2C +00000002007AFF9C06B205D4000300090037BA0003000400032BB8000310BA0008000000 +032BB8000810B8000BDC00BA0000000800032BB8000010BA0006000100032BB800061030 +312511211107112117112105FBFAD25305D464FA4A53052EFAD25305D482FA4A00000002 +007A000006B20638000300090037BA0003000500032BB8000310BA0009000000032BB800 +0910B8000BDC00BA0000000400032BB8000010BA0008000100032BB80008103031251121 +1105211137211105FBFAD20581FA2C8205B653052EFAD25305D464FA4A00000400AAFFFB +068205D300030007000B000F000B00B800092FB8000F2F303113090EAA01530153FEAD01 +DF01540152FEAEFD1501530153FEADFEAD01530153FEAD02E90153FEADFEAD01530152FE +AEFEAB02EA0155FEABFEAEFE220153FEADFEAD00000000010305FE1403AF061400030000 +0111231103AFAA0614F800080000000102B0FE140404061400030000011121110404FEAC +0614F800080000010206FE1404AE0614000300000111211104AEFD580614F80008000001 +00AE0328021C05D50006001BBA0000000100032B00B800032FBA0006000000032BB80006 +10303101211113330333021CFE92A481529B0328016E013FFEC100010078032801E605D5 +00060027BA0001000000032BB800011000B800032FBA0001000200032BB8000110B80002 +10B80005D030311321110323132378016EA481529B05D5FE92FEC1013F00FFFF00AE0328 +03D605D510260FE4000010070FE401BA0000FFFF0078032803A005D510260FE500001007 +0FE501BA00000002013EFF42062D06CF00440048000001321716171E0115140607060706 +23220706070E01141617161716323736373E013511212226353424332135371521072311 +140607060706222726272E01353436373637360111231102DD1F1A1B1615171715161B1A +1A1C131310111013101410185F3E492D3734FECDDEFD0104D701338D01548CC8503E4350 +4EB144472D322E312F26443901A8BE01D00B0C1514381F1E3814150C0B09081010272E2A +0E1206091B212D388144015FEEB8BEE8C832FA7BFBDB6AB740462725191A2E3372404D64 +372B1D1801340256FDAA0002019EFFDD051605F00015002F000001321716171E01151407 +06072627263534363736373612321716171E0115140607060706222726272E0135343637 +3637035AA0792A2C262788B28286AE88272625315D7E7C34352C2D2B2B2D2C35347C3435 +2C2D2B2B2D2C3505F0280E2B2661347C6483CECE83667A346126241528FC4616182A2E6A +3D3C6A2E2A181616182A2E6A3C3D6A2E2A180002014EFFDD056605F00021003B00000126 +252635343637363736321716171E0115343637363736321716171E011514070402321716 +171E0115140607060706222726272E01353436373637035A7BFEF788272625312D6C2E2F +2625282825262F2E6C2D3125262788FEF6B87C34352C2D2B2B2D2C35347C34352C2D2B2B +2D2C3502ADC4A153833461262415141414252560363660252514141415242661348452A1 +FEC516182A2E6A3D3C6A2E2A181616182A2E6A3C3D6A2E2A18000001006E00AB06460528 +002100002526252635343637363736321716171E0115343637363736321716171E011514 +0704035A89FE5FC237373545419A414436353939353644419A4145353737C2FE5FABEFF2 +71B24B8A36341E1C1C1D3534894E4E8934351D1C1C1E34368A4BB46FF20000010158FFFE +05D405D600230000010603062322262726272635343736373E0133222627262726353437 +36373E013332171205D4EEF272B24A8A36341E1C1C1C3634884E4E8834361C1C1C1E3436 +8A4AB470F202EA8AFE60C236383446404E4C424436343A38363644404E4C4244363638C2 +FE5E0002007E002A05CB059E000D00690000013635342726232207061514171617060736 +333217161514050615143332373633321514212227263510213217363726272623220706 +15141615140706232227263534373633321F013437363332171615140716333237363534 +2726353437363332171615140706232203970A1D18361E16132B4A6F152E5E567C3B2DFE +CB9969741033363FFEC5CCBAC6010566514D1065E6454A533F282A1A241420190E735D76 +68324B292A4E4C3133103C564C2A2D152A151F38412A148F5F78410467302C3F2921120F +1B3A22398C4A4F43513E5EDA763A4D632A845A9C99A3FE01658D974330AA334E33352526 +1D17141C2D194B745C4B2539531F203E42574E3D1121241F3F122415381C284621357B5E +3F00000200A0015A06130484000900510000010607060736373635340120353437262726 +2B0116070607163332371615142322272335333637363726272627263534330615141716 +1732171617263534373633321316333235342726353433321514070601DF3F2D421B4F3E +3D01FEFE8B763036262504024B606419432B2808916B1424271E654D3F0F24233D48620C +8F42043D292B381F3D2E6DD8391865620C0B5042F7B0033E0E2433671D3A383404FE21FE +4542371C145750660F472B1E314BAB488E503C021212120E1146661D2326542719131430 +502B41271DFE939A3C1E12111B3C51AD624600010191FEE4052F06270020000001222726 +2726272635343736373637363315220706020706151417161716171633052FBAA9A18A86 +464444408C84A7A9BA6D6860A628282828534E656372FEE447438985A7A4BBBDA99D8F86 +46472F433EFEFA9B9CB8B19C9B837D44430000010191FEE4052F06270022000001303532 +373637363736353427260227262330353217161716171615140706070607060191726365 +4E5328282828A660686DBAA9A7848C40444446868AA1A9FEE42F43447D839B9CB1B89C9B +01063E432F4746868F9DA9BDBBA4A7858943470000000001021DFEF104980611000C0000 +01060210121721260235341237049886828385FEB0969594970611E6FE3EFE32FE3BE5EB +01C6E0DF01C4EC0000000001021DFEF104980611000D0000013021161215140207213612 +1002021D015097949596FEB08583820611ECFE3CDFE0FE3AEBE501C501CE01C200000001 +01B9FE1404DB06140005000001210901210104DBFEDCFE0201FE0124FE00FE1404000400 +FC00000101DBFE1404FC061400050000090221090101DB01FFFE02012201FEFE02FE1404 +000400FC00FC0000000000010123FE14057B061400050000012109012101057BFE3CFD6C +029401C4FD60FE1404000400FC0000010139FE1405910614000500000902210901013902 +A0FD6001C40294FD6CFE1404000400FC00FC0000000000010155FE14053F061400050000 +012109012101053FFE14FE0201FE01ECFE00FE1404000400FC0000010177FE1405600614 +000500000902210901017701FFFE0201EA01FEFE02FE1404000400FC00FC000000000001 +02C4FE1304480614000700000517070111011707035AEE6AFEE6011A6AEE95EE6A011A05 +CD011A6AEE000001026CFE1303F00614000700000127370111012737035AEE6A011AFEE6 +6AEE04BCEE6AFEE6FA33FEE66AEE00010166FEB2051306140024000005152322263D0134 +262B01353332363D0134363B01152322061D011406071E011D011416330513D4F9A96C8E +3D3D8F6BA9F9D4448D565B6E6F5A568DBE9094DDEF97748F7395F0DD938F588DF89D8E19 +1B8E9CF88D58000101A1FEB2054E061400240000053332363D013436372E013D0134262B +01353332161D0114163B01152322061D0114062B0101A1448D565A6F6E5B568D44D4F9A9 +6B8F3D3D8E6CA9F9D4BE588DF89C8E1B198E9DF88D588F93DDF095738F7497EFDD940002 +0098FFEC069405E8000D0018001B00BA000E000300032BB8000E10BA000A001300032BB8 +000A103031011000212000113412243332041201213523112305153711230694FE3FFEC2 +FEC4FE3FCE0171BEC10171CDFBD30269DAA1FEFFECD902EAFEC1FE4101BF013FC60172C6 +C6FE90FD5C8E031A2F982BFD820000020098FFEC069405E8000D002A001B00BA00250003 +00032BB8002510BA000A001400032BB8000A103031011000212000113412243332041205 +3E0135342623220607153E0133321615140607060407152135213E010694FE3FFEC2FEC4 +FE3FCE0171BEC10171CDFDE63E30C5A33D916173843B4E5F2F3E21FEFA5202A4FE4C7DB2 +02EAFEC1FE4101BF013FC60172C6C6FE90E946693A7D971F24AB3A264E3F28553F22F14D +818E74A7000000020098FFEC069405E8000D00360099BA0000000E00032B410500EA000E +00FA000E00025D411B0019000E0029000E0039000E0049000E0059000E0069000E007900 +0E0089000E0099000E00A9000E00B9000E00C9000E00D9000E000D5DB80031DC00BA002E +000300032BB8002E10BA000A001100032BB8000A10BA0021002700032BB8002110BA0018 +001E00032BB8001810BA0015001E0018111239BA002A0027002111123930310110002120 +00113412243332041225342623220607153E013332161514062B01153332161514062322 +2627151E013332363534262732360694FE3FFEC2FEC4FE3FCE0171BEC10171CDFE7CC1A1 +3D885F6B79345B5C585A918C636B7375447D5B588840C3D8760D046802EAFEC1FE4101BF +013FC60172C6C6FE9018738914189720153F3C3A3C8C4E474C4F1C30A81B179C8D5D8103 +720000030098FFEC069405E8000D0010001B001B00BA0014000300032BB8001410BA000A +001B00032BB8000A10303101100021200011341224333204120121090115211533353335 +2311230694FE3FFEC2FEC4FE3FCE0171BEC10171CDFD16FEF3010DFE4301BDB68D8DCE02 +EAFEC1FE4101BF013FC60172C6C6FE90FEBC017EFE838ED3D38D0248000000020098FFEC +069405E8000D002B008BBA0000002100032B410500EA002100FA002100025D411B001900 +21002900210039002100490021005900210069002100790021008900210099002100A900 +2100B9002100C9002100D90021000D5D00BA001E000300032BB8001E10BA000A002B0003 +2BB8000A10BA0011001700032BB8001110BA0028002400032BB8002810BA001A00170011 +11123930310110002120001134122433320412053E0133321615140623222627151E0133 +323635342623220637352135210694FE3FFEC2FEC4FE3FCE0171BEC10171CDFBEF596532 +6876766844775F588540BED5CFB01F3F030191FDC302EAFEC1FE4101BF013FC60172C6C6 +FE90F32514615655611B2FAC1814AC9895B00A01AB8E00030098FFEC069405E8000D0019 +003200F1B800332FB800342FB8003310B80006D0B800062FB8003410B8000EDCB80014DC +410500EA001400FA001400025D411B001900140029001400390014004900140059001400 +69001400790014008900140099001400A9001400B9001400C9001400D90014000D5DB800 +0610B8001DDC411B0016001D0026001D0036001D0046001D0056001D0066001D0076001D +0086001D0096001D00A6001D00B6001D00C6001D00D6001D000D5D410500E5001D00F500 +1D00025D00BA0020000300032BB8002010BA000A001A00032BB8000A10BA001700110003 +2BB8001710BA002C002600032BB8002C10BA002F0026002C111239303101100021200011 +34122433320412011406232226353436333216032202151416333236353426232206373E +0133321617352E010694FE3FFEC2FEC4FE3FCE0171BEC10171CDFDA25C4E4E5C5C4E4E5C +71C8EAC0B9A0C2BAA04E8009057F772F61544A6A02EAFEC1FE4101BF013FC60172C6C6FE +90FE8F5A62625A5B6262022AFEF5DAE7FDB39194B13D0B509416239C181300020098FFEC +069405E8000D0014001B00BA0011000300032BB8001110BA000A001400032BB8000A1030 +310110002120001134122433320412252101330135210694FE3FFEC2FEC4FE3FCE0171BE +C10171CDFBC201CFFEAFC1016CFD5502EAFEC1FE4101BF013FC60172C6C6FE9076FCE603 +5D4B00040098FFEC069405E8000D00190031003D018BBA001A000600032BB8001A10BA00 +0E001400032BB8000E10BA0000002000032BB8000010410500EA001400FA001400025D41 +1B0019001400290014003900140049001400590014006900140079001400890014009900 +1400A9001400B9001400C9001400D90014000D5D411B0016001A0026001A0036001A0046 +001A0056001A0066001A0076001A0086001A0096001A00A6001A00B6001A00C6001A00D6 +001A000D5D410500E5001A00F5001A00025D410500EA002000FA002000025D411B001900 +20002900200039002000490020005900200069002000790020008900200099002000A900 +2000B9002000C9002000D90020000D5DBA002F00060000111239BA003B0014000E111239 +B8003B2F410500EA003B00FA003B00025D411B0019003B0029003B0039003B0049003B00 +59003B0069003B0079003B0089003B0099003B00A9003B00B9003B00C9003B00D9003B00 +0D5DB80035DC00BA001D000300032BB8001D10BA000A002900032BB8000A10BA00170011 +00032BB8001710BA0032003800032BB80032103031011000212000113412243332041201 +1406232226353436333216051416333236353426273E01353426232206151416170E0101 +32161514062322263534360694FE3FFEC2FEC4FE3FCE0171BEC10171CDFDB95F54545F5F +54545FFDE2BEADADBE760F0469B69D9DB76A040F76016B4B52524B4D515102EAFEC1FE41 +01BF013FC60172C6C6FE90FE6C48515049495050498A97978A5C83030176537488887453 +7601038301C4423E3D42423D3E4200030098FFEC069405E8000D0026003200E9B800332F +B800342FB80000DCB80011DC410500EA001100FA001100025D411B001900110029001100 +39001100490011005900110069001100790011008900110099001100A9001100B9001100 +C9001100D90011000D5DB8003310B80027D0B800272FB8002DDC411B0016002D0026002D +0036002D0046002D0056002D0066002D0076002D0086002D0096002D00A6002D00B6002D +00C6002D00D6002D000D5D410500E5002D00F5002D00025D00BA000E000300032BB8000E +10BA000A001400032BB8000A10BA001A002000032BB8001A10BA002A003000032BB8002A +10BA00230020001A11123930310110002120001134122433320412013212353426232206 +151416333236070E0123222627151E010334363332161514062322260694FE3FFEC2FEC4 +FE3FCE0171BEC10171CDFCD1C8E9BFB9A0C2BA9F4F800A057F772E61554A6B3C5C4E4E5B +5B4E4E5C02EAFEC1FE4101BF013FC60172C6C6FE90FD4B010ADAE8FDB49194AF3C0D4F93 +15249C181302845B62625B5B626200040098FFEC069405E8000D00180024003000D3BA00 +25001100032BB8002510BA0019001F00032BB8001910BA0000002B00032BB80000104105 +00EA001F00FA001F00025D411B0019001F0029001F0039001F0049001F0059001F006900 +1F0079001F0089001F0099001F00A9001F00B9001F00C9001F00D9001F000D5D410500EA +002B00FA002B00025D411B0019002B0029002B0039002B0049002B0059002B0069002B00 +79002B0089002B0099002B00A9002B00B9002B00C9002B00D9002B000D5D00BA000F0003 +00032BB8000F10BA000A002E00032BB8000A10B8000310B80028DC303101100021200011 +341224333204120121352311230715371123011406232226353436333216051416333236 +3534262322060694FE3FFEC2FEC4FE3FCE0171BEC10171CDFB2401C29F75BCAC9E038946 +3F404545403F46FE70888382888882838802EAFEC1FE4101BF013FC60172C6C6FE90FDA9 +8002CA2A8927FDC20124A29797A2A39797A3D0E4E4D0D1E4E40000030009FF9606AB063D +00190024003E000000200706070602151412171617162037363736123534022726270121 +110535253311211521122017161716121514020706070620272627260235341237363703 +F4FECC86846D6F6D6D6F6D8486013486846D6F6D6D6F6D84FDA50108FEE1011EA10108FD +508D015C98967C7E7B7B7E7C9698FEA498967C7E7B7B7E7C9605D939366F6FFEF79C97FE +F76F6F363939366F6F0109979C01096F6F36FB7D038F39933AFBDD8805A8403E7D7EFED4 +B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E0000030009FF9606AB063D00190036 +005000000020070607060215141217161716203736373612353402272627012115213536 +00373E0135342623220607353E01333216151406070E0102201716171612151402070607 +0620272627260235341237363703F4FECC86846D6F6D6D6F6D8486013486846D6F6D6D6F +6D84FE290234FD0A5C013D294E3D856B50A56061AA46BADD374914D7BA015C98967C7E7B +7B7E7C9698FEA498967C7E7B7B7E7C9605D939366F6FFEF79C97FEF76F6F363939366F6F +0109979C01096F6F36FB8088885F01412E58783B5F783535A32728BA9B49845A17DE0456 +403E7D7EFED4B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E00000000030009FF96 +06AB063D00190042005C0000002007060706021514121716171620373637361235340227 +2627031E0115140623222627351E013332363534262B013533323635342623220607353E +01333216151406002017161716121514020706070620272627260235341237363703F4FE +CC86846D6F6D6D6F6D8486013486846D6F6D6D6F6D84747483F3E04C9F5544A057989F94 +848B91787E827A42985C52AB47BAD572FE3D015C98967C7E7B7B7E7C9698FEA498967C7E +7B7B7E7C9605D939366F6FFEF79C97FEF76F6F363939366F6F0109979C01096F6F36FD79 +199C74B0C21E1D9C272878726A77855F5A5C621D1E90171CA78E64880309403E7D7EFED4 +B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E0000040009FF9606AB063D0019001C +002700410000002007060706021514121716171620373637361235340227262707012103 +331133152311231121350020171617161215140207060706202726272602353412373637 +03F4FECC86846D6F6D6D6F6D8486013486846D6F6D6D6F6D84DEFE6801982ACBAAAAA1FD +E5012B015C98967C7E7B7B7E7C9698FEA498967C7E7B7B7E7C9605D939366F6FFEF79C97 +FEF76F6F363939366F6F0109979C01096F6F36EDFD82030BFCF586FEE6011A9C03F2403E +7D7EFED4B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E0000030009FF9606AB063D +001900370051000000200706070602151412171617162037363736123534022726270521 +1521113E0133321615140623222627351E01333236353426232206071220171617161215 +14020706070620272627260235341237363703F4FECC86846D6F6D6D6F6D848601348684 +6D6F6D6D6F6D84FDA3027AFE1A234723C8E9F0DA4B9C534C95568AA2A28A4181438F015C +98967C7E7B7B7E7C9698FEA498967C7E7B7B7E7C9605D939366F6FFEF79C97FEF76F6F36 +3939366F6F0109979C01096F6F366388FEDB0C0CDBBBC1D61A19A32925927D7C921D1E03 +58403E7D7EFED4B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E000000040009FF96 +06AB063D00190025003E0058000000200706070602151412171617162037363736123534 +0227262701220615141633323635342613152E01232206073E0133321615140623220211 +1000333216002017161716121514020706070620272627260235341237363703F4FECC86 +846D6F6D6D6F6D8486013486846D6F6D6D6F6D84FED66C80806C6D7F7FD43D7C3CA0A90C +2F8E56B4D1DAB5CFDB010DE23D7CFE5E015C98967C7E7B7B7E7C9698FEA498967C7E7B7B +7E7C9605D939366F6FFEF79C97FEF76F6F363939366F6F0109979C01096F6F36FD8B9582 +80969680829501FA931D1ED8DA454BDBBCB8DE013E012D011D014F180100403E7D7EFED4 +B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E0000030009FF9606AB063D00190020 +003A00000020070607060215141217161716203736373612353402272627052115012301 +21122017161716121514020706070620272627260235341237363703F4FECC86846D6F6D +6D6F6D8486013486846D6F6D6D6F6D84FD5C0300FE4EA80198FDC2D6015C98967C7E7B7B +7E7C9698FEA498967C7E7B7B7E7C9605D939366F6FFEF79C97FEF76F6F363939366F6F01 +09979C01096F6F366045FB9A04230185403E7D7EFED4B1ACFED47E7D3E40403E7D7E012C +ACB1012C7E7D3E00000000050009FF9606AB063D0019002300390045005F000000200706 +0706021514121716171620373637361235340227262701220614163236353426252E0135 +34362016151406071E011514062026353436131416333236353426232206122017161716 +121514020706070620272627260235341237363703F4FECC86846D6F6D6D6F6D84860134 +86846D6F6D6D6F6D84FEDF738484E68584FEEA6874CC0164CC74687583D4FE74D4843974 +6968767668697430015C98967C7E7B7B7E7C9698FEA498967C7E7B7B7E7C9605D939366F +6FFEF79C97FEF76F6F363939366F6F0109979C01096F6F36FD2C7BD87B7C6B6C7B451A8E +678FA6A68F678E1A1B9E73ADBABAAD739E011A5C68685C5D686801D0403E7D7EFED4B1AC +FED47E7D3E40403E7D7E012CACB1012C7E7D3E00000000040009FF9606AB063D00190032 +003E00580000002007060706021514121716171620373637361235340227262701351E01 +333236370E01232226353436333212111000232226133236353426232206151416022017 +161716121514020706070620272627260235341237363703F4FECC86846D6F6D6D6F6D84 +86013486846D6F6D6D6F6D84FDA73D7C3CA0A90C2E8F56B5CFDAB4D0DAFEF4E23D7DFE6D +7F7F6D6C80804A015C98967C7E7B7B7E7C9698FEA498967C7E7B7B7E7C9605D939366F6F +FEF79C97FEF76F6F363939366F6F0109979C01096F6F36FB0E931D1ED7DB444AD9BCB8DE +FEC3FED1FEE6FEAF18021295828195958182950395403E7D7EFED4B1ACFED47E7D3E4040 +3E7D7E012CACB1012C7E7D3E000000050009FF9606AB063D001D002B0038004300610000 +002007060706070615141716171617162037363736373635342726272627072207061514 +163332363534272E01201716111007062002111037013311073537331133152100201716 +171617161514070607060706202726272627263534373637363703F4FECC86846D6F3538 +38356F6D8486013486846D6F353838356F6D841D542C2B565556562B2BEF013251505051 +FECEA050FE338D96958183FE700105015C98967C7E3C3F3F3C7E7C9698FEA498967C7E3C +3F3F3C7E7C9605D939366F6F83869C9786836F6F363939366F6F8386979C86836F6F36CB +7B7AF7F5F6F6F5F37E7B809F9EFED1FED39F9F013E012D012CA1FC67038F259326FBDD88 +05A8403E7D7E9597B1AC97957E7D3E40403E7D7E9597ACB197957E7D3E0000020009FF96 +06AB063D000A002400000115213521112305152511022017161716121514020706070620 +2726272602353412373637021F02B0FEF8A1FEE2011F7B015C98967C7E7B7B7E7C9698FE +A498967C7E7B7B7E7C96011D888804233A9339FC710520403E7D7EFED4B1ACFED47E7D3E +40403E7D7E012CACB1012C7E7D3E00020009FF9606AB063D001C00360000013E01373E01 +35342623220607153E013332161514060706000715213500201716171612151402070607 +0620272627260235341237363702A3C3D7144937DDBA46AA6160A94C6B853D4E29FEC35C +02F6FDD5015C98967C7E7B7B7E7C9698FEA498967C7E7B7B7E7C960120C7DE175A84499B +BA2827A33535785F3B78582EFEBF5F8888051D403E7D7EFED4B1ACFED47E7D3E40403E7D +7E012CACB1012C7E7D3E00020009FF9606AB063D002800420000013E0135342623220607 +153E013332161514062B011533321615140623222627151E013332363534260020171617 +16121514020706070620272627260235341237363704066972D7B847A15C5C98427A827E +78918B84949F9857A044559F4CE0F383FE32015C98967C7E7B7B7E7C9698FEA498967C7E +7B7B7E7C9603191B88648EA7191A901E1D625C5A5F85776A727828279C1D1EC2B0749C03 +3D403E7D7EFED4B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E000000030009FF96 +06AB063D0002000D00270000011121090115211133113335231124201716171612151402 +07060706202726272602353412373637039CFE68016EFE0F021BA1AAAAFE6F015C98967C +7E7B7B7E7C9698FEA498967C7E7B7B7E7C9604B3FD82030BFD0B9CFEE6011A86030BFD40 +3E7D7EFED4B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E00020009FF9606AB063D +001D0037000001113E0133321615140623222627151E0133323635342623220607112135 +0020171617161215140207060706202726272602353412373637021D4381418AA2A28A56 +9948539C4BDAF0E9C823472301E6FE15015C98967C7E7B7B7E7C9698FEA498967C7E7B7B +7E7C96053DFDA81E1D927C7D922727A3191AD6C1BBDB0C0C0125880100403E7D7EFED4B1 +ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E000000030009FF9606AB063D000B0024 +003E0000013216151406232226353436012E01232200111012333236353426232206073E +0133321617002017161716121514020706070620272627260235341237363703506D7F7F +6D6C808001AD437C3DE2FEF3DBCFB5DAD1B4568E2F0CA9A03C7C3DFE1B015C98967C7E7B +7B7E7C9698FEA498967C7E7B7B7E7C96032B958280969680829501FA1818FEAFFEE5FED3 +FEC2DEB8BCDB4B45DAD81E1D01AB403E7D7EFED4B1ACFED47E7D3E40403E7D7E012CACB1 +012C7E7D3E0000020009FF9606AB063D0006002000000115210133013524201716171612 +1514020706070620272627260235341237363701D6023EFE68A801B2FDD6015C98967C7E +7B7B7E7C9698FEA498967C7E7B7B7E7C96054088FBDD046645FD403E7D7EFED4B1ACFED4 +7E7D3E40403E7D7E012CACB1012C7E7D3E0000040009FF9606AB063D0009001F002B0045 +000001321615140622263436270E011514162036353426273E0135342620061514163734 +363332161514062322261220171617161215140207060706202726272602353412373637 +0359748485E684842F7484D4018CD483756874CCFE9CCC742D746968767668697430015C +98967C7E7B7B7E7C9698FEA498967C7E7B7B7E7C9602CC7B6C6B7C7BD87B451B9E73ADBA +BAAD739E1B1A8E678FA6A68F678EE55D68685D5C68680289403E7D7EFED4B1ACFED47E7D +3E40403E7D7E012CACB1012C7E7D3E00000000030009FF9606AB063D00180024003E0000 +251E01333200111002232206151416333236370E01232226270122263534363332161514 +0600201716171612151402070607062027262726023534123736370221437D3DE2010CDA +D0B4DAD1B3568F2E0CA9A03C7C3D01416C80806C6D7F7FFEDD015C98967C7E7B7B7E7C96 +98FEA498967C7E7B7B7E7C96AE18180151011A012F013DDEB8BCD94A44DBD71E1D016795 +828195958182950395403E7D7EFED4B1ACFED47E7D3E40403E7D7E012CACB1012C7E7D3E +000000040009FF9606AB063D000B00150020003A00000132161514062322263534362420 +021110122012111001152135231123071537111220171617161215140207060706202726 +2726023534123736370499656464656464640105FEBEA9A90142AAFB9101C2A181B3B496 +015C98967C7E7B7B7E7C9698FEA498967C7E7B7B7E7C9604D5F5F7F5F6F6F5F7F580FEC3 +FED1FED3FEC2013E012D012FFD0588880423269325FC710520403E7D7EFED4B1ACFED47E +7D3E40403E7D7E012CACB1012C7E7D3E000000010075009A0650046A0008000009012101 +21352101210650FE18FEC00170FBDD0423FE9001400282FE180170F00170000100FC0070 +057404E900060000090137011B012503F7FD05A902B5D446FD4E018B02B4AAFD050134FD +4E470001007500CC065004380006000001053505030901047AFBFB040544021AFDE6023C +32F0320170FE4AFE4A00000100FC001B0574049400060000090127012D0103045AFD4BA9 +02FBFECB02B2460316FD05AA02B4D447FD4E000100750108065003FC0008000013210304 +05040513217502BBA8015C026CFD94FEA4A8FD4502BE013EFC7E7EFC013E000100750075 +061D048F002B000000140607010607062226272E013534363F0121222E02343E02332127 +2E01353436373E01321716170116061D1411FE70101816342C1212131411BAFC801A2C24 +1313242C1A0380BA11141312122C34161810019013029B322E11FE70100B0A1411132C19 +1A2E11BA14222E322E2214BA112E1A192C1311140A0B10FE70130001007500CC06500438 +0006000001213521110901049AFBDB042501B6FE4A025A50018EFE4AFE4A0001007500CC +065004380006000001213521110901049AFBDB042501B6FE4A0214DC0148FE4AFE4A0004 +007500CC0650043800030007000B00120000012311330123113303231133012111213509 +0102B9F0F0FEC07878C83C3C03E9FE6F019101B6FE4A01BA0190FE700190FE700190FE70 +0190EEFE4AFE4A0000000004007500CC065004380008000C001000140000013512170603 +352111032311330123113303231133049AB8FEFEB8FE6F50F0F0FEC07878C83C3C03AE8A +FECE8484FECE8A0258FDA80258FDA80258FDA8025800000100750086067D047E00060000 +090211211121048101FCFE04FBF4040C047EFE04FE04011101D6000200E400C006500444 +000200060000012101130902031E0236FCBC96FE3E056CFA940282010FFEF101C2FE3EFE +3E00000200E400C0065004440002000600000902210902031EFEF20344FD52FE3E056CFA +940282FEF1010F01C2FE3EFE3E00000100E4FFF80650050C0003000009030242FEA2056C +FA940282028AFD76FD760001007500CC0650046200140000131114161716171633213509 +013521202726272E01752423232B2A0C035A01B6FE4AFE4DFE4D2A2B232324028201E030 +5525211312C6FE4AFE4AC6121321255500000001007500A2065004380014000013343637 +36373633213509013521200706070E0115752423232B2A0C035A01B6FE4AFE4DFE4D2A2B +2323240282305525211312C6FE4AFE4AC6121321255530000000000101ECFFF104D90513 +0006000001211121110901035EFE8E0172017BFE85015602580165FD6FFD6F0000000001 +007500CC065004380008000001351205040335211104049001BCFE4490FC71039A9EFECE +8484FECE9E023000000000020075009A061E046A0008000F000025352111213533090103 +150901152111033CFD3902C7FA01E8FE18AA0198FE68FD399AEE01F4EEFE18FE18013EEE +01980198EEFEAC00000000020075009A061E046A0008000F000025352111213533090103 +150901152111033CFD3902C7FA01E8FE18140198FE68FD399AEE01F4EEFE18FE18013EEE +01980198EEFEAC0000000002002B0018065A04B0000B0012000013012137331315012335 +3721010701030721032B012003498A64D8FD269616FD2B03D18A0284AC8AFCB7C401CE01 +F4EEFDFEC8FE32C8260118EE01980198EEFEAC0000000002002B0018065A04B0000B0012 +0000133521273533011503232721012113211713012B02D5169602DAD8648AFCB702B1FC +B7C403498AACFD7C02FAC826C8FE32C8FDFEEE01A4FEACEE019801980000000201150000 +06320498000A0011000021272127112135330117010315090115211103DC4FFDEC640263 +6E01E864FE18820198FE68FD9D9EC802949EFE18C8FE1801B69E019801989EFE0C000002 +0115000006320498000A0011000001330107012335211137211321112115090103DC6E01 +E864FE186EFD9D6402143BFD9D02630198FE680498FE18C8FE189E0294C8FEE8FE0C9E01 +9801980000000002007F006406640498000C001400000103213533011701232735212713 +07211509011521011596035D6E01E832FE186E32FCD532F272032D0198FE68FCD302B001 +4A9EFE1864FE18633B64014AFA9E019801989E0000000002007F006406640498000C0014 +000001033721353733010701233521130721150901152101159632032B326E01E832FE18 +6EFCA3F272032D0198FE68FCD3024C014A643B63FE1864FE189E014AFA9E019801989E00 +00000001013CFFD805C404AF001E000001363736373633321716171E0115140607060706 +2227262726272115090115013C27435A6D6F7E7974695E5A5C585E56716FF774695E3F29 +025801CAFE36036E47435A2E2F2F2B5D59DD807ADA5F58302F2F2B5D3E499E01CA01CA9E +0000000900820142065003C200030007000B000F001E00220026002A002E000001073337 +230733372307333723073337233503211321111617060711210321013327231733272317 +3327231733272302E1A03CA0B4A03CA0B4A03CA0B4A03CA078BB021CBB0187ADC3C3ADFE +79BBFDE4025F3CA03C283CA03C283CA03C283CA03C025AF0F0F0F0F0F0F0F0500118FEE8 +0116BC8282BC0116FEE80168F0F0F0F0F0F0F0000000000300A500700574053E000C0010 +0014000001370615141726232207372737090121012511011104A2AF072A8EA44246AFFE +38FE1D01A9FEE5FE57015501A8017BB04643A38F2A07B0FE39016FFE5801A83A011BFE57 +FEE6000300750162065003A20008000C0010000001351617060735213505210721132721 +1704FE9AB8B89AFE98FDA70258C8FDA8C8C80258C802AAF8BC6464BCF85052C8011AC8C8 +0000000300A7FFC505740494000C00100014000001271633323706151417270727090111 +01032101210469AF4642A48E2A07AFFF38FE9101A8FE583AFEE501A8011B03C1B0072A90 +A24346B0FF39FE1D01A8FEE5FE58015501A8000100A700700574053E002A000025262322 +073E013727262726220607013E0133321F01372635343637010E011514171617013E0137 +06151405748FA54245488018A6A623264E4B1CFE5824572F2C30150513242201A820190E +0F07014404354807702A07473603A6A60E0F1E1C01A82422120821302C305922FE572146 +2627262307FEBB1781474743A300000100750161065003A3002700000106073436372322 +0706070E011521343637363F012726272E01352114161716171633212E0135160650B79B +350EEBEA23241D1C1FFDA825221F2F15152F1F222502581F1C1D24230A01CB0E359B0282 +65BC6581130F101C1B4A283059211F15091B151F225830284A1B1C100F138165BC000001 +00A7FFC605740494002A000001061514172E01270706070615141617012E0135343F0127 +0623222627011E0132373637012E012716333205742907483504A7A70C0E1D1CFE582224 +130923302C30582201A81C4B4E26230701451880484542A504948EA34347478117A8A81F +2627264B1CFE572259302C30150412242201A81C1E0F0E070145033647070003007300AC +0650045800140027003C000001362506030607060706222726272E013534363736243436 +373637363217040504050622272627260126272E01353436373637363217161716171217 +24042FF6012BE37A0C15161B1A3E1A1B161517171516FC5F201B1D2423522301610366FC +82FEB723522329181D039E1B1615171715161B1A3E1A1B16120F78E5FE9401CE625175FE +FD1D14150C0B0B0C1514381F1E38141597524B1A1C100F0E853638830E0F121A1F01230C +1514381E1F3814150C0B0B0C151120FEFE766300000000020096011F063C03E5001A002A +000013363736373637363332171617160504070E012322272627262726252E0135343637 +161706072E0135343696411E201427272B2F35343C33A20191FE6FA2386E32332739151D +171D04062525252562FCFC622525250282263A3F13241213131620664C4C662326131D19 +232F3A26275832335827F17272F12758333258000000000100A20156063203AE00630000 +0014060F01060706222726272E0135343F013635342627262726232122070607060F0106 +070607062321222E02343F0136342F0126343637363736332132171617161F0116171617 +163321323736373E0135342F0126353436373637363217161F011606320606F004090710 +0707060606031B03060605080807FEE60807070605045A050306080608FD9C080E0C0603 +3B3A01740306060607070802640806090503055A040506070708011A070808050606031B +03060606070710070904F006028B120E06F0040503030405060E09040B630B05070F0605 +03040304050508B40A03050403060C0E120675751402E806120E06050403030306030AB4 +0805050403040305060F07050B630B04090E06050403030504F006000000000100A200F1 +06320413006300000014060701060706222726272E0135343F0136353426272627262B01 +22070607060F0106070607062321222E02343F0136342703263436373637363321321716 +1716171316171617163B01323736373E0135342F01263534363736373632171617011606 +320606FE700508071007070606060357030606050808075C080707060504780503060806 +08FD6A080E0C0603494A019C030606060707080296080609050305820405060707085C07 +0808050606035703060606070710070805019006028B120F05FE98050403030405060E09 +0708DB0808070F060503040304050508F00A03050403060C0E120693931402013806120E +06050403030306030AFEFC0805050403040305060F070808DB0807090E06050403030405 +FE98050000000003007500A60650045E0013001D00270000010607060723373637363726 +27262F013316171601233E01372135210E01031E01172135212E0127065088538C4A6C2E +2EA026474726A015476C488E53FDCC6913372AFCD603E56E4B0D0D4B6EFC1B032A2A3713 +02824F558FA96E6DA427363627A431AAA49455FDD53D8548648EB7038F29B78E6448853D +00000001006EFEB202D0062600190000012A012724032600272623220727363736151400 +07060516363702D0096837FE480201016D04035E3A2D8833D5DEFEB0070C011C524514FE +B20B530152AE03F5514F8931D80101CCA1FC4C8FDC48150102000001004FFEB202B10626 +0019000013351E01372427260035341716170726232207060007020506224F144552011C +0C07FEB0DED533882D3A5E0304016D0102FE483768FEB28F02011548DC8F03B4A1CC0101 +D831894F51FC0BAEFEAE530B000000030006FE2303EE0675000300060009000009052109 +012101F901F5FE0BFE0D01F3FE9802D2FE96016AFD2E0675FBDBFBD3042D0331FD08FC8E +0300000200B0FEF2033006140003000B00000111331125211523113315210114C8FED402 +80F0F0FD8005B0F9A6065A6464F9A6640000000200AFFEF2032F06140003000B00000123 +1133131121353311233502CBC8C864FD80F0F005B0F9A606BEF8DE64065A640000000001 +00B7FEF2027B061200050000130133090123B7011AAAFEE6011AAA02820390FC70FC7000 +0000000100A4FEF202680612000500000901230901330268FEE6AA011AFEE6AA0282FC70 +039003900000FFFF00B7FEF203CF06121026104700001007104701540000FFFF00A4FEF2 +03BC061210261048000010071048015400000001005B0000065B05DC0016000009010727 +11231127112311270711231107112311072701038902D2785C78D2786A6A78D2785C7802 +D205DCFD2C785CFD140365D3FBC804B06868FB500438D3FC9B02EC5C7802D40000000001 +0059FFF9065905D500160000050137171133111711331117371133113711331137170103 +2BFD2E785C78D2786A6A78D2785C78FD2E0702D4785C02ECFC9BD30438FB50686804B0FB +C8D30365FD145C78FD2C0001004F006C06840544003D0000013037161716323736373E01 +353427262726272622070607060706073717012301371736373637363736333217161716 +171615140706070607062322272602657740524EBE4A563C424221234040524EBE4A563C +42211707E878FE785AFE7678E90824305954746785806C71575A2F2E2E2F5A5375678580 +6C6A0121783F232121273B42A25D595153403F232121273B4251393FEA78FE76018A78E9 +6058715953342E2E30575971707B7F70715953342E2E2D0000000001004F007C06840554 +003C00000106070623222726272627263534373637363736333217161716171617371701 +2301371726272627262726220706070607061514161716171632373637046E5E6A6C8085 +67745459302E2E305958706C808567745459302408E978FE765AFE7878E8071721423C56 +4ABE4E524040232142423C564ABE4E524001315A2D2E2E34535971707F7B70715957302E +2E345359715860E978FE76018A78EA3F3951423B272121233F405351595DA2423B272121 +233F00030075FFE308DE052400250039004D0000011501273721060706070E0120262726 +272627233533363736373E01201617161716172127372422070607060706072111331121 +262726272627012111231121161716171617163237363736373608DEFE7778E9FEA00B21 +316362EEFEECEE626331210BBDBD0A22316362EE0114EE626331220A0160E978FCE2D65D +5C4C4D26170901AEAA01AE0917264D4C5C013BFE52AAFE520A16264D4C5C5DD65D5C4C4D +261602AF5AFE7778E95A517663626464626376515AAA5B527763626464626377525BE978 +5627274C4D5C373D0165FE9B3D375C4D4C27FDC6FE9B01653B365C4D4C272727274C4D5C +36000001006400CC0B03043800090081B4020906000A10D4D4CC32400940024009300230 +09045D31400A020509010006059C060A0010D4EC113939CC10CC30400C08090900080708 +079C000900070510FC3C0806103C400C03020201030403049C010201070510FC3C080610 +3CB0104B535800B303020809103C103CB4089C090900070510ECB4039C020201070510EC +591335011707211521170764018978E90987F679E97802555A018978E9AAE97800000001 +007500CC0B14043800090081B4020900060A10D4D4CC3240094F024F095F025F09045D31 +400A090602010005069C050A0010D4EC113939CC10CC30400C08090900080708079C0009 +00070510FC3C0806103C400C03020201030403049C010201070510FC3C0806103CB0104B +535800B303020809103C103CB4089C090900070510ECB4039C020201070510EC59011501 +273721352127370B14FE7778E9F6790987E97802AF5AFE7778E9AAE978000001006400CC +0B140438000F00DAB6070A09020F001010D4CC32D4CC32400D5002500F5F0A5F074F0A4F +07065D3100400F0702040A0F00010809040D049C0D1010D4EC111739CC3210CC3230400C +0E0F0F000E0D0E0D9C000F00070510FC3C0806103C400C03020201030403049C01020107 +0510FC3C0806103C400C0B0A0A090B0C0B0C9C09090A070510FC3C0806103C400C060707 +08060506059C080708070510FC3C0806103CB0104B535800B70B0A060703020E0F103C10 +3C103C103CB40E9C0F0F00070510ECB4039C020201070510ECB40B9C0A0A09070510ECB4 +069C070708070510EC591335011707212737011501273721170764018978E90880E97801 +89FE7778E9F780E97802555A018978E9E978FE775AFE7778E9E9780000000001006400CC +0B030438000E000001211521170701350117072115210701900973F7055D78FE77018978 +5D08FBF68D690219785D7801895A0189785D786900000001007500CC0B140438000E0000 +01372721352127370115012737213509E86969F68D08FB5D780189FE77785DF705021969 +69785D78FE775AFE77785D7800000002006400CC0B140438000500150000012137272107 +05211707013501170721273701150127019008586969F7A8690849F8985D78FE77018978 +5D07685D780189FE77780219696969E15D7801895A0189785D5D78FE775AFE7778000001 +006400CC0B030438000D000001211707013501170721113311230A59F723E978FE770189 +78E908DDAAAA022DE97801895A018978E90159FCA4000001007500CC0B140438000D0000 +0111231133112127370115012737011FAAAA08DDE9780189FE7778E9022DFEA7035CFEA7 +E978FE775AFE7778E9000002006400CC0B030438000D0012000001211707013501170721 +3533112311352107170A59F7AF5D78FE770189785D0851AAAAF737696901A15D7801895A +0189785DCDFCA40145D2696900000002007500CC0B140438000D00120000012127370115 +01273721152311331115213727011F08515D780189FE77785DF7AFAAAA08C9696903635D +78FE775AFE77785DCD035CFEBBD2696900000001007500CC0B1404380025000013173717 +371737173717371737173733273701150127372307270727072707270727072707277546 +B4B4B4B4B4B4B4B4B4B4B4B4468BE9780189FE7778E9636EB4B4B4B4B4B4B4B4B4B4B4B4 +4602D746B4B4B4B4B4B4B4B4B4B4B4B446E978FE775AFE7778E96EB4B4B4B4B4B4B4B4B4 +B4B4B4460000FFFF012C0514025806401007175E012C05140000FFFF012C02DD02580409 +1007175E012C02DD0000FFFF012C02DD025806401027175E012C05141007175E012C02DD +0000FFFF012C00A7025801D31007175E012C00A70000FFFF012C00A7025806401027175E +012C05141007175E012C00A70000FFFF012C00A7025804091027175E012C02DD1007175E +012C00A70000FFFF012C00A7025806401027175E012C05141027175E012C02DD1007175E +012C00A70000FFFF0384051404B006401007175E038405140000FFFF012C051404B00640 +1027175E012C05141007175E038405140000FFFF012C02DD04B006401027175E012C02DD +1007175E038405140000FFFF012C02DD04B006401027175E012C05141027175E012C02DD +1007175E038405140000FFFF012C00A704B006401027175E012C00A71007175E03840514 +0000FFFF012C00A704B006401027175E012C05141027175E012C00A71007175E03840514 +0000FFFF012C00A704B006401027175E012C02DD1027175E012C00A71007175E03840514 +0000FFFF012C00A704B006401027175E012C05141027175E012C02DD1027175E012C00A7 +1007175E038405140000FFFF038402DD04B004091007175E038402DD0000FFFF012C02DD +04B006401027175E012C05141007175E038402DD0000FFFF012C02DD04B004091027175E +012C02DD1007175E038402DD0000FFFF012C02DD04B006401027175E012C05141027175E +012C02DD1007175E038402DD0000FFFF012C00A704B004091027175E012C00A71007175E +038402DD0000FFFF012C00A704B006401027175E012C05141027175E012C00A71007175E +038402DD0000FFFF012C00A704B004091027175E012C02DD1027175E012C00A71007175E +038402DD0000FFFF012C00A704B006401027175E012C05141027175E012C02DD1027175E +012C00A71007175E038402DD0000FFFF038402DD04B006401027175E038405141007175E +038402DD0000FFFF012C02DD04B006401027175E012C05141027175E038405141007175E +038402DD0000FFFF012C02DD04B006401027175E012C02DD1027175E038405141007175E +038402DD0000FFFF012C02DD04B006401027175E012C05141027175E012C02DD1027175E +038405141007175E038402DD0000FFFF012C00A704B006401027175E012C00A71027175E +038405141007175E038402DD0000FFFF012C00A704B006401027175E012C05141027175E +012C00A71027175E038405141007175E038402DD0000FFFF012C00A704B006401027175E +012C02DD1027175E012C00A71027175E038405141007175E038402DD0000FFFF012C00A7 +04B006401027175E012C05141027175E012C02DD1027175E012C00A71027175E03840514 +1007175E038402DD0000FFFF038400A704B001D31007175E038400A70000FFFF012C00A7 +04B006401027175E012C05141007175E038400A70000FFFF012C00A704B004091027175E +012C02DD1007175E038400A70000FFFF012C00A704B006401027175E012C05141027175E +012C02DD1007175E038400A70000FFFF012C00A704B001D31027175E012C00A71007175E +038400A70000FFFF012C00A704B006401027175E012C05141027175E012C00A71007175E +038400A70000FFFF012C00A704B004091027175E012C02DD1027175E012C00A71007175E +038400A70000FFFF012C00A704B006401027175E012C05141027175E012C02DD1027175E +012C00A71007175E038400A70000FFFF038400A704B006401027175E038405141007175E +038400A70000FFFF012C00A704B006401027175E012C05141027175E038405141007175E +038400A70000FFFF012C00A704B006401027175E012C02DD1027175E038405141007175E +038400A70000FFFF012C00A704B006401027175E012C05141027175E012C02DD1027175E +038405141007175E038400A70000FFFF012C00A704B006401027175E012C00A71027175E +038405141007175E038400A70000FFFF012C00A704B006401027175E012C05141027175E +012C00A71027175E038405141007175E038400A70000FFFF012C00A704B006401027175E +012C02DD1027175E012C00A71027175E038405141007175E038400A70000FFFF012C00A7 +04B006401027175E012C05141027175E012C02DD1027175E012C00A71027175E03840514 +1007175E038400A70000FFFF038400A704B004091027175E038402DD1007175E038400A7 +0000FFFF012C00A704B006401027175E012C05141027175E038402DD1007175E038400A7 +0000FFFF012C00A704B004091027175E012C02DD1027175E038402DD1007175E038400A7 +0000FFFF012C00A704B006401027175E012C05141027175E012C02DD1027175E038402DD +1007175E038400A70000FFFF012C00A704B004091027175E012C00A71027175E038402DD +1007175E038400A70000FFFF012C00A704B006401027175E012C05141027175E012C00A7 +1027175E038402DD1007175E038400A70000FFFF012C00A704B004091027175E012C02DD +1027175E012C00A71027175E038402DD1007175E038400A70000FFFF012C00A704B00640 +1027175E012C05141027175E012C02DD1027175E012C00A71027175E038402DD1007175E +038400A70000FFFF038400A704B006401027175E038405141027175E038402DD1007175E +038400A70000FFFF012C00A704B006401027175E012C05141027175E038405141027175E +038402DD1007175E038400A70000FFFF012C00A704B006401027175E012C02DD1027175E +038405141027175E038402DD1007175E038400A70000FFFF012C00A704B006401027175E +012C05141027175E012C02DD1027175E038405141027175E038402DD1007175E038400A7 +0000FFFF012C00A704B006401027175E012C00A71027175E038405141027175E038402DD +1007175E038400A70000FFFF012C00A704B006401027175E012C05141027175E012C00A7 +1027175E038405141027175E038402DD1007175E038400A70000FFFF012C00A704B00640 +1027175E012C02DD1027175E012C00A71027175E038405141027175E038402DD1007175E +038400A70000FFFF012C00A704B006401027175E012C05141027175E012C02DD1027175E +012C00A71027175E038405141027175E038402DD1007175E038400A70000FFFF012CFE70 +0258FF9C1007175E012CFE700000FFFF012CFE70025806401027175E012C05141007175E +012CFE700000FFFF012CFE70025804091027175E012C02DD1007175E012CFE700000FFFF +012CFE70025806401027175E012C05141027175E012C02DD1007175E012CFE700000FFFF +012CFE70025801D31027175E012C00A71007175E012CFE700000FFFF012CFE7002580640 +1027175E012C05141027175E012C00A71007175E012CFE700000FFFF012CFE7002580409 +1027175E012C02DD1027175E012C00A71007175E012CFE700000FFFF012CFE7002580640 +1027175E012C05141027175E012C02DD1027175E012C00A71007175E012CFE700000FFFF +012CFE7004B006401027175E038405141007175E012CFE700000FFFF012CFE7004B00640 +1027175E012C05141027175E038405141007175E012CFE700000FFFF012CFE7004B00640 +1027175E012C02DD1027175E038405141007175E012CFE700000FFFF012CFE7004B00640 +1027175E012C05141027175E012C02DD1027175E038405141007175E012CFE700000FFFF +012CFE7004B006401027175E012C00A71027175E038405141007175E012CFE700000FFFF +012CFE7004B006401027175E012C05141027175E012C00A71027175E038405141007175E +012CFE700000FFFF012CFE7004B006401027175E012C02DD1027175E012C00A71027175E +038405141007175E012CFE700000FFFF012CFE7004B006401027175E012C05141027175E +012C02DD1027175E012C00A71027175E038405141007175E012CFE700000FFFF012CFE70 +04B004091027175E038402DD1007175E012CFE700000FFFF012CFE7004B006401027175E +012C05141027175E038402DD1007175E012CFE700000FFFF012CFE7004B004091027175E +012C02DD1027175E038402DD1007175E012CFE700000FFFF012CFE7004B006401027175E +012C05141027175E012C02DD1027175E038402DD1007175E012CFE700000FFFF012CFE70 +04B004091027175E012C00A71027175E038402DD1007175E012CFE700000FFFF012CFE70 +04B006401027175E012C05141027175E012C00A71027175E038402DD1007175E012CFE70 +0000FFFF012CFE7004B004091027175E012C02DD1027175E012C00A71027175E038402DD +1007175E012CFE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD +1027175E012C00A71027175E038402DD1007175E012CFE700000FFFF012CFE7004B00640 +1027175E038405141027175E038402DD1007175E012CFE700000FFFF012CFE7004B00640 +1027175E012C05141027175E038405141027175E038402DD1007175E012CFE700000FFFF +012CFE7004B006401027175E012C02DD1027175E038405141027175E038402DD1007175E +012CFE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E +038405141027175E038402DD1007175E012CFE700000FFFF012CFE7004B006401027175E +012C00A71027175E038405141027175E038402DD1007175E012CFE700000FFFF012CFE70 +04B006401027175E012C05141027175E012C00A71027175E038405141027175E038402DD +1007175E012CFE700000FFFF012CFE7004B006401027175E012C02DD1027175E012C00A7 +1027175E038405141027175E038402DD1007175E012CFE700000FFFF012CFE7004B00640 +1027175E012C05141027175E012C02DD1027175E012C00A71027175E038405141027175E +038402DD1007175E012CFE700000FFFF012CFE7004B001D31027175E038400A71007175E +012CFE700000FFFF012CFE7004B006401027175E012C05141027175E038400A71007175E +012CFE700000FFFF012CFE7004B004091027175E012C02DD1027175E038400A71007175E +012CFE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E +038400A71007175E012CFE700000FFFF012CFE7004B001D31027175E012C00A71027175E +038400A71007175E012CFE700000FFFF012CFE7004B006401027175E012C05141027175E +012C00A71027175E038400A71007175E012CFE700000FFFF012CFE7004B004091027175E +012C02DD1027175E012C00A71027175E038400A71007175E012CFE700000FFFF012CFE70 +04B006401027175E012C05141027175E012C02DD1027175E012C00A71027175E038400A7 +1007175E012CFE700000FFFF012CFE7004B006401027175E038405141027175E038400A7 +1007175E012CFE700000FFFF012CFE7004B006401027175E012C05141027175E03840514 +1027175E038400A71007175E012CFE700000FFFF012CFE7004B006401027175E012C02DD +1027175E038405141027175E038400A71007175E012CFE700000FFFF012CFE7004B00640 +1027175E012C05141027175E012C02DD1027175E038405141027175E038400A71007175E +012CFE700000FFFF012CFE7004B006401027175E012C00A71027175E038405141027175E +038400A71007175E012CFE700000FFFF012CFE7004B006401027175E012C05141027175E +012C00A71027175E038405141027175E038400A71007175E012CFE700000FFFF012CFE70 +04B006401027175E012C02DD1027175E012C00A71027175E038405141027175E038400A7 +1007175E012CFE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD +1027175E012C00A71027175E038405141027175E038400A71007175E012CFE700000FFFF +012CFE7004B004091027175E038402DD1027175E038400A71007175E012CFE700000FFFF +012CFE7004B006401027175E012C05141027175E038402DD1027175E038400A71007175E +012CFE700000FFFF012CFE7004B004091027175E012C02DD1027175E038402DD1027175E +038400A71007175E012CFE700000FFFF012CFE7004B006401027175E012C05141027175E +012C02DD1027175E038402DD1027175E038400A71007175E012CFE700000FFFF012CFE70 +04B004091027175E012C00A71027175E038402DD1027175E038400A71007175E012CFE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012C00A71027175E038402DD +1027175E038400A71007175E012CFE700000FFFF012CFE7004B004091027175E012C02DD +1027175E012C00A71027175E038402DD1027175E038400A71007175E012CFE700000FFFF +012CFE7004B006401027175E012C05141027175E012C02DD1027175E012C00A71027175E +038402DD1027175E038400A71007175E012CFE700000FFFF012CFE7004B006401027175E +038405141027175E038402DD1027175E038400A71007175E012CFE700000FFFF012CFE70 +04B006401027175E012C05141027175E038405141027175E038402DD1027175E038400A7 +1007175E012CFE700000FFFF012CFE7004B006401027175E012C02DD1027175E03840514 +1027175E038402DD1027175E038400A71007175E012CFE700000FFFF012CFE7004B00640 +1027175E012C05141027175E012C02DD1027175E038405141027175E038402DD1027175E +038400A71007175E012CFE700000FFFF012CFE7004B006401027175E012C00A71027175E +038405141027175E038402DD1027175E038400A71007175E012CFE700000FFFF012CFE70 +04B006401027175E012C05141027175E012C00A71027175E038405141027175E038402DD +1027175E038400A71007175E012CFE700000FFFF012CFE7004B006401027175E012C02DD +1027175E012C00A71027175E038405141027175E038402DD1027175E038400A71007175E +012CFE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E +012C00A71027175E038405141027175E038402DD1027175E038400A71007175E012CFE70 +0000FFFF0384FE7004B0FF9C1007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141007175E0384FE700000FFFF012CFE7004B004091027175E012C02DD1007175E +0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1007175E +0384FE700000FFFF012CFE7004B001D31027175E012C00A71007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E012C00A71007175E0384FE700000FFFF +012CFE7004B004091027175E012C02DD1027175E012C00A71007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E012C02DD1027175E012C00A71007175E +0384FE700000FFFF0384FE7004B006401027175E038405141007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E038405141007175E0384FE700000FFFF +012CFE7004B006401027175E012C02DD1027175E038405141007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E012C02DD1027175E038405141007175E +0384FE700000FFFF012CFE7004B006401027175E012C00A71027175E038405141007175E +0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C00A71027175E +038405141007175E0384FE700000FFFF012CFE7004B006401027175E012C02DD1027175E +012C00A71027175E038405141007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141027175E012C02DD1027175E012C00A71027175E038405141007175E0384FE70 +0000FFFF0384FE7004B004091027175E038402DD1007175E0384FE700000FFFF012CFE70 +04B006401027175E012C05141027175E038402DD1007175E0384FE700000FFFF012CFE70 +04B004091027175E012C02DD1027175E038402DD1007175E0384FE700000FFFF012CFE70 +04B006401027175E012C05141027175E012C02DD1027175E038402DD1007175E0384FE70 +0000FFFF012CFE7004B004091027175E012C00A71027175E038402DD1007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012C00A71027175E038402DD +1007175E0384FE700000FFFF012CFE7004B004091027175E012C02DD1027175E012C00A7 +1027175E038402DD1007175E0384FE700000FFFF012CFE7004B006401027175E012C0514 +1027175E012C02DD1027175E012C00A71027175E038402DD1007175E0384FE700000FFFF +0384FE7004B006401027175E038405141027175E038402DD1007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E038405141027175E038402DD1007175E +0384FE700000FFFF012CFE7004B006401027175E012C02DD1027175E038405141027175E +038402DD1007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E +012C02DD1027175E038405141027175E038402DD1007175E0384FE700000FFFF012CFE70 +04B006401027175E012C00A71027175E038405141027175E038402DD1007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012C00A71027175E03840514 +1027175E038402DD1007175E0384FE700000FFFF012CFE7004B006401027175E012C02DD +1027175E012C00A71027175E038405141027175E038402DD1007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E012C02DD1027175E012C00A71027175E +038405141027175E038402DD1007175E0384FE700000FFFF0384FE7004B001D31027175E +038400A71007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E +038400A71007175E0384FE700000FFFF012CFE7004B004091027175E012C02DD1027175E +038400A71007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E +012C02DD1027175E038400A71007175E0384FE700000FFFF012CFE7004B001D31027175E +012C00A71027175E038400A71007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141027175E012C00A71027175E038400A71007175E0384FE700000FFFF012CFE70 +04B004091027175E012C02DD1027175E012C00A71027175E038400A71007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E012C00A7 +1027175E038400A71007175E0384FE700000FFFF0384FE7004B006401027175E03840514 +1027175E038400A71007175E0384FE700000FFFF012CFE7004B006401027175E012C0514 +1027175E038405141027175E038400A71007175E0384FE700000FFFF012CFE7004B00640 +1027175E012C02DD1027175E038405141027175E038400A71007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E012C02DD1027175E038405141027175E +038400A71007175E0384FE700000FFFF012CFE7004B006401027175E012C00A71027175E +038405141027175E038400A71007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141027175E012C00A71027175E038405141027175E038400A71007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C02DD1027175E012C00A71027175E03840514 +1027175E038400A71007175E0384FE700000FFFF012CFE7004B006401027175E012C0514 +1027175E012C02DD1027175E012C00A71027175E038405141027175E038400A71007175E +0384FE700000FFFF0384FE7004B004091027175E038402DD1027175E038400A71007175E +0384FE700000FFFF012CFE7004B006401027175E012C05141027175E038402DD1027175E +038400A71007175E0384FE700000FFFF012CFE7004B004091027175E012C02DD1027175E +038402DD1027175E038400A71007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141027175E012C02DD1027175E038402DD1027175E038400A71007175E0384FE70 +0000FFFF012CFE7004B004091027175E012C00A71027175E038402DD1027175E038400A7 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C00A7 +1027175E038402DD1027175E038400A71007175E0384FE700000FFFF012CFE7004B00409 +1027175E012C02DD1027175E012C00A71027175E038402DD1027175E038400A71007175E +0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E +012C00A71027175E038402DD1027175E038400A71007175E0384FE700000FFFF0384FE70 +04B006401027175E038405141027175E038402DD1027175E038400A71007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E038405141027175E038402DD +1027175E038400A71007175E0384FE700000FFFF012CFE7004B006401027175E012C02DD +1027175E038405141027175E038402DD1027175E038400A71007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E012C02DD1027175E038405141027175E +038402DD1027175E038400A71007175E0384FE700000FFFF012CFE7004B006401027175E +012C00A71027175E038405141027175E038402DD1027175E038400A71007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012C00A71027175E03840514 +1027175E038402DD1027175E038400A71007175E0384FE700000FFFF012CFE7004B00640 +1027175E012C02DD1027175E012C00A71027175E038405141027175E038402DD1027175E +038400A71007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E +012C02DD1027175E012C00A71027175E038405141027175E038402DD1027175E038400A7 +1007175E0384FE700000FFFF012CFE7004B0FF9C1027175E012CFE701007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012CFE701007175E0384FE70 +0000FFFF012CFE7004B004091027175E012C02DD1027175E012CFE701007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B001D31027175E012C00A71027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C00A7 +1027175E012CFE701007175E0384FE700000FFFF012CFE7004B004091027175E012C02DD +1027175E012C00A71027175E012CFE701007175E0384FE700000FFFF012CFE7004B00640 +1027175E012C05141027175E012C02DD1027175E012C00A71027175E012CFE701007175E +0384FE700000FFFF012CFE7004B006401027175E038405141027175E012CFE701007175E +0384FE700000FFFF012CFE7004B006401027175E012C05141027175E038405141027175E +012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E012C02DD1027175E +038405141027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141027175E012C02DD1027175E038405141027175E012CFE701007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C00A71027175E038405141027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C00A7 +1027175E038405141027175E012CFE701007175E0384FE700000FFFF012CFE7004B00640 +1027175E012C02DD1027175E012C00A71027175E038405141027175E012CFE701007175E +0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E +012C00A71027175E038405141027175E012CFE701007175E0384FE700000FFFF012CFE70 +04B004091027175E038402DD1027175E012CFE701007175E0384FE700000FFFF012CFE70 +04B006401027175E012C05141027175E038402DD1027175E012CFE701007175E0384FE70 +0000FFFF012CFE7004B004091027175E012C02DD1027175E038402DD1027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD +1027175E038402DD1027175E012CFE701007175E0384FE700000FFFF012CFE7004B00409 +1027175E012C00A71027175E038402DD1027175E012CFE701007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E012C00A71027175E038402DD1027175E +012CFE701007175E0384FE700000FFFF012CFE7004B004091027175E012C02DD1027175E +012C00A71027175E038402DD1027175E012CFE701007175E0384FE700000FFFF012CFE70 +04B006401027175E012C05141027175E012C02DD1027175E012C00A71027175E038402DD +1027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E03840514 +1027175E038402DD1027175E012CFE701007175E0384FE700000FFFF012CFE7004B00640 +1027175E012C05141027175E038405141027175E038402DD1027175E012CFE701007175E +0384FE700000FFFF012CFE7004B006401027175E012C02DD1027175E038405141027175E +038402DD1027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141027175E012C02DD1027175E038405141027175E038402DD1027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C00A71027175E03840514 +1027175E038402DD1027175E012CFE701007175E0384FE700000FFFF012CFE7004B00640 +1027175E012C05141027175E012C00A71027175E038405141027175E038402DD1027175E +012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E012C02DD1027175E +012C00A71027175E038405141027175E038402DD1027175E012CFE701007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E012C00A7 +1027175E038405141027175E038402DD1027175E012CFE701007175E0384FE700000FFFF +012CFE7004B001D31027175E038400A71027175E012CFE701007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E038400A71027175E012CFE701007175E +0384FE700000FFFF012CFE7004B004091027175E012C02DD1027175E038400A71027175E +012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E +012C02DD1027175E038400A71027175E012CFE701007175E0384FE700000FFFF012CFE70 +04B001D31027175E012C00A71027175E038400A71027175E012CFE701007175E0384FE70 +0000FFFF012CFE7004B006401027175E012C05141027175E012C00A71027175E038400A7 +1027175E012CFE701007175E0384FE700000FFFF012CFE7004B004091027175E012C02DD +1027175E012C00A71027175E038400A71027175E012CFE701007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E012C02DD1027175E012C00A71027175E +038400A71027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E +038405141027175E038400A71027175E012CFE701007175E0384FE700000FFFF012CFE70 +04B006401027175E012C05141027175E038405141027175E038400A71027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C02DD1027175E03840514 +1027175E038400A71027175E012CFE701007175E0384FE700000FFFF012CFE7004B00640 +1027175E012C05141027175E012C02DD1027175E038405141027175E038400A71027175E +012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E012C00A71027175E +038405141027175E038400A71027175E012CFE701007175E0384FE700000FFFF012CFE70 +04B006401027175E012C05141027175E012C00A71027175E038405141027175E038400A7 +1027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E012C02DD +1027175E012C00A71027175E038405141027175E038400A71027175E012CFE701007175E +0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E +012C00A71027175E038405141027175E038400A71027175E012CFE701007175E0384FE70 +0000FFFF012CFE7004B004091027175E038402DD1027175E038400A71027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E038402DD +1027175E038400A71027175E012CFE701007175E0384FE700000FFFF012CFE7004B00409 +1027175E012C02DD1027175E038402DD1027175E038400A71027175E012CFE701007175E +0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD1027175E +038402DD1027175E038400A71027175E012CFE701007175E0384FE700000FFFF012CFE70 +04B004091027175E012C00A71027175E038402DD1027175E038400A71027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C00A7 +1027175E038402DD1027175E038400A71027175E012CFE701007175E0384FE700000FFFF +012CFE7004B004091027175E012C02DD1027175E012C00A71027175E038402DD1027175E +038400A71027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141027175E012C02DD1027175E012C00A71027175E038402DD1027175E038400A7 +1027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E03840514 +1027175E038402DD1027175E038400A71027175E012CFE701007175E0384FE700000FFFF +012CFE7004B006401027175E012C05141027175E038405141027175E038402DD1027175E +038400A71027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E +012C02DD1027175E038405141027175E038402DD1027175E038400A71027175E012CFE70 +1007175E0384FE700000FFFF012CFE7004B006401027175E012C05141027175E012C02DD +1027175E038405141027175E038402DD1027175E038400A71027175E012CFE701007175E +0384FE700000FFFF012CFE7004B006401027175E012C00A71027175E038405141027175E +038402DD1027175E038400A71027175E012CFE701007175E0384FE700000FFFF012CFE70 +04B006401027175E012C05141027175E012C00A71027175E038405141027175E038402DD +1027175E038400A71027175E012CFE701007175E0384FE700000FFFF012CFE7004B00640 +1027175E012C02DD1027175E012C00A71027175E038405141027175E038402DD1027175E +038400A71027175E012CFE701007175E0384FE700000FFFF012CFE7004B006401027175E +012C05141027175E012C02DD1027175E012C00A71027175E038405141027175E038402DD +1027175E038400A71027175E012CFE701007175E0384FE7000000002006400CC063F0438 +000D00120000012117070135011707213533112311352107170595FC735D78FE77018978 +5D038DAAAAFBFB696901A15D7801895A0189785DCDFCA40145D2696900000002007500CC +06500438000D0012000001212737011501273721152311331115213727011F038D5D7801 +89FE77785DFC73AAAA0405696903635D78FE775AFE77785DCD035CFEBBD2696900000001 +0100000005B405DC001100000901330107271123112711231107112311070100022D5A02 +2D785C78D278D2785C03AE022EFDD2785CFC6E040AD3FB2304DDD3FBF603925C00000001 +0100FFF905B405D5001100000137171133111711331137113311371701230100785C78D2 +78D2785C78FDD35A0227785C0392FBF6D304DDFB23D3040AFC6E5C78FDD20002004F0080 +052706B5001E003D00002522272627262726103736373637011707161716171617161007 +060706070603301707010607060706141716171E01333237363736373634272627262726 +02BD7F706B5F56312E2E31566272018978E960586B5F56312E2E31565F6B7049EA78FEB8 +58453F232121273B42A25D595153403F232121273B425139802E2D5C5A6E6C01006C6E5A +5F2E018978E908242D5C5A6E6CFF006C6E5A5C2D2E0429E8780146214640524EBE4A563C +424221234040524EBE4A563C4221170000000002004F0080052706B5001E003C00002522 +272627262726103736373637363727370116171617161007060706070603060706070607 +061417161716171633323637363736342726272627012702B97B706B5F56312E2E31565F +6B5860E9780189726256312E2E31565F6B70B13F3951423B272121233F405351595DA242 +3B272121233F4558FEB878802E2D5C5A6E6C01006C6E5A5C2D2408E978FE772E5F5A6E6C +FF006C6E5A5C2D2E0429071721423C564ABE4E524040232142423C564ABE4E52404621FE +BA7800020100FEB204DF06140010002E005C40122E1D20131A111B16060D0027240F252B +202F10DCB20020015D4BB00C5458B90020004038593CCC393939CC32DCB40F061F06025D +DCCC3239391139393100400E0F27A925041A1CC025091311B12F10F4CC32C4F4CC3210EC +3930011514161726351134370E011D011007160115232206151114163B01152122263D01 +34262B01353332363D01343633029C4BB03230B049ADAD0243358C55558C35FEF9F9A76C +8E3E3E8E6CA7F90112EF986D07479D04D0A142076B98F0FEEE3E4403F464578EFB308D58 +6494DDEF97748F7395F0DD93000000020100FEB204DF06140010002E0057401212232E1C +19021B162005000A2D262E25292F10DC4BB00A5458B90029FFC03859CC323939CCDCB40F +001F00025D3CDC3CCC3939391139393100400E0219A91B0D2624C01B082D11B12F10F4CC +32C4F4CC3210EC393001103726113534262716151114073E0135012132161D0114163B01 +152322061D011406232135333236351134262B010343ADAD49B03032B04BFDBD0107F9A7 +6C8E3E3E8E6CA7F9FEF9358C55558C350112010E443E0112F0986B0742A1FB309D47076D +9805F193DDF095738F7497EFDD9464588D04D08E5700000400D9FE3205DB05F900020006 +0009000D0000051109023501050901031101150531FCAA0400FAFE0502FBA80356FCAAAA +0502CC0264FECEFDCC01E1A601E10701320132FC9A0468FE1FA6000300D9001E072704E6 +00030006000A0000252311330111090235010727AAAAFE0AFCA20408FAFE05021E04C8FC +3A02C4FE9EFD9C0211A602110000000300D9001E072704E600030006000A000037113311 +090203110115D9AA014C035EFCA2AA05021E04C8FB38010201620162FC3A04C8FDEFA600 +0000000200D9FFC207270542000500080000171109011101370111D903270327FCD99B01 +E23E0580FDB00250FA80024E71FEA202C600000200D9FFC2072705420005000800001711 +09011101270111D903270327FCD99BFE1E3E0580FDB00250FA80024E71015EFD44000001 +00D9FFC20727054200050000171109011101D903270327FCD93E0580FDB00250FA80024E +0000000100D9FFC207270542000800002515090111090115010727FCD9FCD903270327FD +74A2E0024EFDB20580FDB00250DDFE1C0000000100D9FFC2072705420008000013350901 +1109013501D903270327FCD9FCD9028C0462E0FDB2024EFA800250FDB0DD01E400000001 +0006FE2303EE067500030000090301FA01F4FE0CFE0C0675FBDBFBD3042D000100D90000 +05DB0504001300000111331121113311211521112311211123112135020CA8014CA80133 +FECDA8FEB4A8FECD02D7022DFDD3022DFDD3AAFDD3022DFDD3022DAA0000000100D90000 +05DB0504001B000001113311331133113311331133152311231123112311231123112335 +01A8A8B6A8B6A8CFCFA8B6A8B6A8CF02D7022DFDD3022DFDD3022DFDD3AAFDD3022DFDD3 +022DFDD3022DAA0000000003003AFE6B07C605FB0003001D003700000121112100200706 +070602151412171617162037363736123534022726272420041716171615140706070604 +20242726272635343736373603680130FED00138FEC08C89727472727472898C01408C89 +72747272747289FE0D018E01568E8E474646478E8EFEAAFE72FEAA8E8E474646478E8E02 +E8FE9203C83B3A7273FEECA39FFEEC73723A3B3B3A727301149FA3011473723AF4908D8E +ACAAC9C5ACAA8E8D90908D8EAAACC5C9AAAC8E8D00000003003AFE6B07C605FB00190033 +003F00000020070607060215141217161716203736373612353402272627242004171617 +161514070607060420242726272635343736373605112115211123112135211104A0FEC0 +8C89727472727472898C01408C8972747272747289FE0D018E01568E8E474646478E8EFE +AAFE72FEAA8E8E474646478E80027F028DFD73A8FD73028D05423B3A7273FEECA39FFEEC +73723A3B3B3A727301149FA3011473723AF4908D8EACAAC9C5ACAA8E8D90908D8EAAACC5 +C9AAAC8E804BFD73AAFD73028DAA028D00000003003AFE6B07C605FB00190033003F0000 +002007060706021514121716171620373637361235340227262724200417161716151407 +0607060420242726272635343736373617090117090107090127090104A0FEC08C897274 +72727472898C01408C8972747272747289FE0D018E01568E8E474646478E8EFEAAFE72FE +AA8E8E474646478E805D01CD01CE78FE3301CD77FE33FE327801CDFE3305423B3A7273FE +ECA39FFEEC73723A3B3B3A727301149FA3011473723AF4908D8EACAAC9C5ACAA8E8D9090 +8D8EAAACC5C9AAAC8E80E8FE3301CD78FE32FE337701CDFE337801CE01CDFFFF0075FE4D +0A25060E10270CB5066F000010260CB5000010270CB50225000010070CB5044A00000001 +0075FE4D03B6060E001D0000051633323713213521133E01321617072623220703211521 +030E012226270109113B450820FEEE011A19089F98801494103C4508180112FEE621089F +9880149B82AF029AAA020CA5877A8F0F82AFFE0DAAFD4DA5877A8F00000000010075FE4D +03B6060E0025000005163332371321352137213521133E01321617072623220703211521 +07211521030E012226270109113B450816FEF801100CFEE401240F089F98801494113B45 +080E0108FEF00C011CFEDC17089F9880149B82AF01CEAAF0A80140A5877A8F0F82AFFED9 +A8F0AAFE19A5877A8F0000010075FE4D03B6060E001D0000012623220703251505030E01 +222627371633323713053525133E013216170322113B45081A0143FEB51F089F98801494 +113B45081AFEBE014A1F089F98801404F682AFFDE7B6A0BAFD6DA5877A8F0F82AF0219B6 +A0BA0293A5877A8F000000020075FE4D03B6060E002A0033000001262322070316170726 +27033637170607030E012226273716333237132627263534373637133E01321617011306 +0706151417160322113B45080E99497128501620153E36440F089F98801494113B45080F +5D496E6F53750F089F988014FE01163D2C484B2504F682AFFED62988414821FE2B061170 +2409FEBEA5877A8F0F82AF013118496F9B9C735613013CA4887A8FFC4501D6112E4A6768 +482400010075FE4D042D060E003200000126232207033637363D01072737331707271514 +070607030E01222627371633323713262726353314171617133E01321716170322113B45 +082B402F565D48BD36BC485C6E556D1108A097801494113B4409105B3E776650332C2C08 +A09749361504F682AFFC78102F55721E5D48BDBD485D1E9C6C5611FEA1A5877A8F0F82AF +014D193E779A724E330B0399A58746348F0000020075FE4D03B6060E0003002100000133 +15230313211121133E01321617072623220703211121030E012226273716333201B2D3D3 +10110177FEA51408A2977E1494113946090E0139FEA10D08A9917D149411394702A6FEFD +EA0172023001AEA7857D8C0F82AFFEF5FCBCFEFFAD7F7D8C0F8200020075FE4D03B6060E +0003002B000001331523130607133E0132161707262322070316171610070607030E0122 +262737163332371316333236342601B2D3D363291F1608A2977E1494113947080E63426E +6E56730F08A2977E1494113946091628366F879402A6FE017E020501C3A7857C8D0F82AF +FED6184B7CFED26F5513FEBEA7857D8C0F82AF01B61093D87F0000020075FE4D0470060E +0003002E00000133152301163332371316171632363426232207133E0132161707262322 +0703363332161006232227030E01222627028FD3D3FE7A113B45081B2D3870C6968A71D5 +531806A297801494113B45080F3B44A9CEDC9B57491108A097801402AEFEFDB582AF0233 +3E1C3691D18FA1025DA4887A8F0F82AFFECB13E9FED2DB21FEA3A5877A8F00030075FE4D +03B6060E0003000B00310000013315231636342622061416031633323713262726103736 +37133E0132161707262322070316171610070607030E0122262701ADD3D3CB948AD6908F +A2113B45080F5D496E6F53750F089F98801494113B45080E63426E6E56730F089F988014 +02B0FE7A90D18F91CF90FE2D82AF013118496F0137735613013CA4887A8F0F82AFFED618 +4B7CFED26F5513FEBEA5877A8F0000030075FE4D03B6060E001D00210025000037112113 +3E01321617072623220703211121030E0122262737163332371B01033311212311339801 +3B1008A2977E1494113947080F0118FEC40E08A98F7F1494113947080DC518ACFEC5AB93 +9B02FE0149A7857D8C0F82AFFED0FD02FEDEAD7F7B8E0F82AF01090274FE1601EAFE1600 +00000001FFBEFE4D046D060E002D0000012623220703213216140623353637262721030E +01222627371633323713211707013501170721133E01321716170322113B450819010E64 +8B905F60080860FEEB21089F98801494113B440920FEDCBB60FEC5013B60BB012A1B089F +9849361504F682AFFDEF8FC68C8804656206FD49A5877A8F0F82AF029EBA60013A48013A +60BA022AA58746348F0000010075FE4D03B6060E00230000012623220703371707170727 +030E01222627371633323713072737273717133E013216170322113B4508149D78FCFC78 +B119089F98801494113B4508179F7AFEFC78B217089F98801404F682AFFE589D79FCFC78 +B0FDF4A5877A8F0F82AF01E2A079FCFC78B301D8A5877A8F000000010075FE4D03B6060E +002A000005163332371306070615112311343637133E0132161707262322070316171615 +1123113427030E012226270109113B45082D412034799B790E089F98801494113B45080D +5A3E56797C2D089F9880149B82AF03A61032509CFEC80149CFBC11012BA5877A8F0F82AF +FEE6184561D6FEB70138F332FC4AA5877A8F00010075FE4D03B6060E0027000001262322 +070336190133111005030E01222627371633323713262726351133111417133E01321617 +0322113B45082A9279FEEF11089F98801494113B4508105C3F56797E2B089F98801404F6 +82AFFC8D2601070138FEB7FE8C27FEA2A5877A8F0F82AF014C174661D60149FEC8F53103 +85A5877A8F0000020075FE4D03C006F90017001B0000013E01333216170726232207030E +012322262737163332370115213501E308A24B4C7E1494113947084108A24C4B7E149411 +394708021EFCEF04E2A7857D8C0F82AFFAB0A7857D8C0F82AF0767A0A0000002006BFD62 +03B6060E0017001B0000013E01333216170726232207030E012322262737163332370135 +211501E308A24B4C7E1494113947084108A24C4B7E149411394708FEC9031104E2A7857D +8C0F82AFFAB0A7857D8C0F82AFFDD0A0A000FFFF0119003F059C04C5100600990000FFFF +00D901D305DB046A10260CC6000010070D4F02140124FFFF00D9009F05DB046A10260CC6 +000010270D4F00E7FE5710070D4F03400124000200D9FF0405DB04A60003000A00000515 +013509021501350105DBFAFE0502FBF80408FAFE050246B601D1B60265FE91FE93B601D1 +A601D1000000000200D9FF0405DB04A60003000A00001701150111350115013501D90502 +FAFE0502FAFE04084601D1B6FE2F04ECB6FE2FA6FE2FB6016D00FFFF00D9FF0405DD04A6 +10270D4F042FFFBB100611850000FFFF00D9FF0405DB04A610260D4FFEBB100611860000 +0000FFFF00D9FF0405DB052710270D4F010F01E1100611850000FFFF00D9FF0405DB0527 +10270D4F031D01E1100611860000FFFF00D9FF0405DD061210270D4F042F02CC10061185 +0000FFFF00D9FF0405DB060D10270D4FFFFE02C7100611860000000300D9FEF105DC054E +001C003A0041000025150E01232227262726272623220607353E013332171E0117163332 +3613150E01232227262726272623220607353E0133321716171617163332361309011501 +350105DC6AB2626E920A0606109A5E58AC6268B4606E940A0C0E9C5E56A8686AB2626E92 +0A0606109A5E58AC6268B4606E940A04080E9C5E56A867FC4003C0FAFE050250B34E453B +040302063D4C54B34E453B0504063D4B019BB250443A040402063C4C52B24E443A040204 +063C4A035EFEEBFEEEB20170AA016F000000000300D9FEF105DC054E001C003A00410000 +25150E01232227262726272623220607353E013332171E01171633323613150E01232227 +262726272623220607353E0133321716171617163332360135011501350105DC6AB2626E +920A0606109A5E58AC6268B4606E940A0C0E9C5E56A8686AB2626E920A0606109A5E58AC +6268B4606E940A04080E9C5E56A8FB650502FAFE03C050B34E453B040302063D4C54B34E +453B0504063D4B019BB250443A040402063C4C52B24E443A040204063C4A035EB0FE91AA +FE90B2011200000200D9FF0805DB04A8000B001200000117072115210727372135210902 +1501350103AC965A01F3FDB285965AFE0D024E02B4FC4003C0FAFE050201A250A8AAF850 +A8AA034EFEEBFEEEB20170AA016F000200D9FF0805DB04A8000B00120000011707211521 +0727372135210135011501350103AC965A01F3FDB285965AFE0D024EFDB20502FAFE03C0 +01A250A8AAF850A8AA034EB0FE91AAFE90B201120000000200D9FE5F05DC054E0036003D +000001150E01232227071633323637150E0123222F010727372623220607353E01333217 +3726232206073536373617161F01371707163332361309011501350105DC6AB262445334 +8C5756A8686AB2626D93085CA459402F58AC6268B4604553338B5658AC62685A6D4D9270 +075BA459403156A867FC4003C0FAFE05020196B250441783344B55B34E453B03E940E210 +4C54B34E451782344C52B24E222A080E2C03E940E30F4A035EFEEBFEEEB20170AA016F00 +0000000200D9FE5F05DC054E0035003C000001150E01232227071633323637150E012322 +2F010727372623220607353E01333217372623220607353E0133321F0137170716333236 +0135011501350105DC6AB2624453348C5756A8686AB2626D93085CA459402F58AC6268B4 +604553338B5658AC6268B4606E94075BA459403156A8FB650502FAFE03C00196B2504417 +83344B55B34E453B03E940E2104C54B34E451782344C52B24E443A03E940E30F4A035EB0 +FE91AAFE90B201120000000400D9FD8405DB06540006000A001100150000011501350115 +0501213521012D01350115090121352105DBFAFE0502FC8B0375FAFE0502FAFE0375FC8B +0502FAFE0502FAFE050203FBB0012FAA0130B2D2FD5CAAFB5ED5D2B2FED0AAFED1037EAA +0000000400D9FD8405DB06540006000A001100150000132D013501150111352115111501 +3501150501352115D90375FC8B0502FAFE0502FAFE0502FC8BFE73050203FBD5D2B2FED0 +AAFED1FEE1AAAAFC08B0012FAA0130B2D201F9AAAA00000300D9FF0205DC054E001A001E +0025000001150E0123222F0126272623220607353E0133321F0216333236012115210902 +1501350105DC6AB3616E921006109A5E58AC6268B4606E940E169C5E56A8FB660502FAFE +0501FC4003C0FAFE05020196B250443A0802063C4B53B24E443A060A3C4AFE6CAA059CFE +EBFEEEB20170AA016F00000300D9FF0205DC054E001A001E0025000001150E0123222F01 +26272623220607353E0133321F0216333236012115210335011501350105DC6AB3616E92 +1006109A5E58AC6268B4606E940E169C5E56A8FB660502FAFE010502FAFE03C00196B250 +443A0802063C4B53B24E443A060A3C4AFE6CAA059CB0FE91AAFE90B20112000300D9FE12 +05DB060C001A00210028000001150E0123222F0126272623220607353E0133321F021633 +323613150135011505012D013501150105DB69B3616E9211060F9B5E58AC6269B3616E93 +0F169B5E56A967FAFE0502FC8BFE730375FC8B0502FAFE02BEB24F453B0702063D4C53B2 +4E453B06093D4B014AB0012FAA0130B2D2FA3AD5D2B2FED0AAFED1000000000300D9FE12 +05DB060C001A00210028000001150E0123222F0126272623220607353E0133321F021633 +3236012D01350115090115013501150505DB69B3616E9211060F9B5E58AC6269B3616E93 +0F169B5E56A9FB650375FC8B0502FAFE0502FAFE0502FC8B02BEB24F453B0702063D4C53 +B24E453B06093D4B014AD5D2B2FED0AAFED1FBBFB0012FAA0130B2D20000000400D9FE2C +05DB05D70006000A001100150000132D0135011501113521151115013501150501352115 +D90375FC8B0502FAFE0502FAFE0502FC8BFE7305020125D5D2B2FED0AAFED1FEE1AAAA04 +28B0012FAA0130B2D2F9D9AAAA00000400D9FE2C05DB05D70006000A0011001500000115 +013501150501213521012D01350115090121352105DBFAFE0502FC8B0375FAFE0502FAFE +0375FC8B0502FAFE0502FAFE05020125B0012FAA0130B2D2FD5CAA037ED5D2B2FED0AAFE +D1FB5EAA0000000400D9FE3605DB05EE0006000A00110015000001150135011505090135 +09012D01350115011135011505DBFAFE0502FC8B0375FAFE0502FAFE0375FC8B0502FAFE +05020395B0012FAA0130B2D2FD56012FB0FED1FDA6D5D2B2FED0AAFED1FED0B0012FB000 +0000000400D9FE3605DB05EE0006000A001100150000132D013501150111350115111501 +3501150509013501D90375FC8B0502FAFE0502FAFE0502FC8B0375FAFE05020395D5D2B2 +FED0AAFED1FEDBB0012FB0FD27B0012FAA0130B2D2FD4B012FB0FED10000000200D9FF84 +05DB05260003000A0000090135011115013501150105DBFAFE0502FAFE0502FBF80470FE +2FB601D1FB14B601D1A601D1B6FE93000000000200D9FF8405DB05260003000A00001335 +0115090235011501D90502FAFE0408FBF80502FAFE0470B6FE2FB6FD9B016F016DB6FE2F +A6FE2F000000FFFF00D9FF8405DD052610270D4F042FFEEE1006119D0000FFFF00D9FF84 +05DB052610270D4FFFFEFEE41006119E0000000300DAFFB605DC057B0003000A000E0000 +133521151115013501150901352115DA0502FAFE0502FC40FEBE050204D1AAAAFB95B001 +6FAA0170B2FEEE0239AAAA000000000300DAFFB605DC057B0003000A000E000001213521 +0902350115090121352105DCFAFE0502FAFE03C0FC400502FAFE0502FAFE050204D1AAFA +EB01150112B2FE90AAFE9103FEAA000300D9FFC005DB05CD00030007000E000013350115 +0135011511150135011501D90502FAFE0502FAFE0502FC4003ABB20170B2FD4EB20170B2 +FC97B0016FAA0170B2FEEE000000000300D9FFC005DB05CD00030007000E000009013501 +11013509033501150105DBFAFE0502FAFE0502FAFE03C0FC400502FAFE03AB0170B2FE90 +FE0C0170B2FE90FD5501150112B2FE90AAFE91000000000200D9001105DC0528001B0022 +0000012E012322070E01070623222627351E013332373E01373633321617031501350115 +0105DC68A8565E9C0E0C0A946E60B46862AC585E9A100C0A926E62B26A01FAFE0502FC40 +03CA544C3E0604043C464EB2544C3E0604043C464EFC45B0016FAA0170B2FEEE00000002 +00D9003005DC0528001B00220000012E012322070E01070623222627351E013332373E01 +37363332161709023501150105DC68A8565E9C0E0C0A946E60B46862AC585E9A100C0A92 +6E62B26AFAFD03C1FC3F0502FAFE03CA544C3E0604043C464EB2544C3E0604043C464EFC +6401150112B2FE90AAFE91000000000400D9FE9805DC05D4000300070024002B00001735 +211501352115132E012322070E01070623222627351E0133323736373637363332161703 +150135011501D90502FAFE05020168A8565E9C0E0C0A946E60B46862AC585E9A1006060A +926E62B26A01FAFE0502FC403EAAAAFED6AAAA05DC564A3C0604063A444EB4544C3C0602 +04043A444EFC44B0016FAA0170B2FEEE0000000400D9FE9805DC05D4000300070024002B +00001735211501352115132E012322070E01070623222627351E01333237363736373633 +321617090235011501D90502FAFE05020168A8565E9C0E0C0A946E60B46862AC585E9A10 +06060A926E62B26AFAFD03C0FC400502FAFE3EAAAAFED6AAAA05DC564A3C0604063A444E +B4544C3C060204043A444EFC4401150112B2FE90AAFE91000000000300D9006605DB04CE +000300200024000013211521010607060706072135213637363736321716171617211521 +262726272601211521D90502FAFE0282432E381E1B04FE64010A0C1E365759CE5956371C +0E010AFE65041B1E382DFD3B0502FAFE025AAA027B041E2B44445CA839335B323333325B +303CA85B45432C1EFCE9AA000000000200D9FFCF05DB05570003000E0000372115210100 +050401150025352401D90502FAFE0502FE81FE2401DC017FFE81FC7D0383017F79AA04B1 +FEE55D5DFEE5D7017884A67C0180000200D9FFCF05DB05570003000F0000251521351135 +0005301504013500252405DBFAFE017F0383FC7DFE81017F01DCFE2479AAAA0407D7FE80 +7CA684FE88D7011B5D5D000200D9FED705DB0557000B0016000001170721152107273721 +3521010005040115002535240103AC965A01F3FDB285965AFE0D024E02B4FE81FE2401DC +017FFE81FC7D0383017F017150A8AAF850A8AA0407FEE55D5DFEE5D7017884A67C018000 +0000000200D9FED705DB0557000B00160000011707211521072737213521013500051504 +013500252403AC965A01F3FDB285965AFE0D024EFDB2017F0383FC7DFE81017F01DCFE24 +017150A8AAF850A8AA0407D7FE807CA684FE88D7011B5D5D0000000300D9FF0905DB054B +000300070012000037352115013521151100050405150025352401D90502FAFE0502FECD +FDD80221013AFEA3FC5B03A5015D33AAAAFED6AAAA056BFEE52D51F7D7017458A6560176 +0000000300D9FF0905DB054B000300070012000037352115013521150135000515040135 +242524D90502FAFE0502FAFE015D03A5FC5BFEA3013A0221FDD833AAAAFED6AAAA056BD7 +FE8A56A658FE8CD7F7512D000000000200D9FE7105DB054B0013001E0000052135213721 +352137170721152107211521072701000504051500253524010226FEB301DA60FDC602C8 +898A290150FE225F023DFD368A8A03DEFECDFDD80221013AFEA3FC5B03A5015DEAAA73AA +A47331AA73AAA574058FFEE52D51F7D7017458A6560176000000000200D9FE7105DB054B +0013001E0000052135213721352137170721152107211521072701350005150401352425 +240226FEB301DA60FDC602C8898A290150FE225F023DFD368A8AFEDC015D03A5FC5BFEA3 +013A0221FDD8EAAA73AAA47331AA73AAA574058FD7FE8A56A658FE8CD7F7512D00000003 +00D9FE7905DB058B001D003A0045000005150E01232227262726272623220607353E0137 +3617161716171633323613150E01232227262726272623220607353E0133321716171617 +163E01130005040515002535240105DB69B3616E920A07060F9B5E58AC6269B26260A10B +05060F9B5E56A96769B3616E920A07060F9B5E58AC6269B3616E930A05070FAA9EB067FE +CDFDD80221013AFEA3FC5B03A5015D28B34E453B040302063D4C54B34E390C0641050202 +063D4B019AB24F453B040302063D4C53B24E453B04020306430C4503ECFEE52D51F7D701 +7458A6560176000300D9FE7905DB058B001D003A0045000005150E012322272627262726 +23220607353E01373617161716171633323613150E01232227262726272623220607353E +0133321716171617163E01013500051504013524252405DB69B3616E920A07060F9B5E58 +AC6269B26260A10B05060F9B5E56A96769B3616E920A07060F9B5E58AC6269B3616E930A +05070FAA9EB0FB65015D03A5FC5BFEA3013A0221FDD828B34E453B040302063D4C54B34E +390C0641050202063D4B019AB24F453B040302063D4C53B24E453B04020306430C4503EC +D7FE8A56A658FE8CD7F7512D0000000200D9FDED05DC058B00360041000001150E012322 +27071633323637150E0123222F010727372623220607353E013332173726232206073536 +373617161F0137170716333236130005040515002535240105DC6AB2624453348C5756A8 +686AB2626D93085CA459402F58AC6268B4604553338B5658AC62685A6D4D9270075BA459 +403156A867FECDFDD80221013AFEA3FC5B03A5015D0124B250441783344B55B34E453B03 +E940E2104C54B34E451782344C52B24E222A080E2C03E940E30F4A03E6FEE52D51F7D701 +7458A6560176000200D9FDED05DC058B00360041000001150E0123222707163332363715 +0E0123222F010727372623220607353E013332173726232206073536373617161F013717 +0716333236013500051504013524252405DC6AB2624453348C5756A8686AB2626D93085C +A459402F58AC6268B4604553338B5658AC62685A6D4D9270075BA459403156A8FB65015D +03A5FC5BFEA3013A0221FDD80124B250441783344B55B34E453B03E940E2104C54B34E45 +1782344C52B24E222A080E2C03E940E30F4A03E6D7FE8A56A658FE8CD7F7512D00000003 +00D9FEA105DB04AE00030007000E000037011501110115090315013501D90502FAFE0502 +FAFE0502FC4003C0FAFE0502C3FE90B2017001F4FE90B2017002ABFEEBFEEEB20170AA01 +6F00000300D9FEA105DB04AE00030007000E000025150135011501351135011501350105 +DBFAFE0502FAFE0502FAFE03C0C3B2FE90B202B2B2FE90B20369B0FE91AAFE90B2011200 +0000000200B5FFC9059F04B30006000D00000117011701171113270902272103C25DFD23 +BF02DD5C65C1FD23FEB402DDC202CF044E5CFD23BF02DD5D0178FD96C2FD23014C02DDC1 +000000020120FFC9060A04B30006000D00000121113701370901112107090202FDFE885C +02DDBFFD23FE8002CFC202DDFEB4FD23044EFE885DFD23BF02DDFDF202CFC1FD23FEB402 +DD00000200B50034059F051E0006000D000001070107010721053709023711053A5CFD23 +BF02DD5D0178FD96C2FD23014C02DDC102115D02DDBFFD235C65C102DD014CFD23C2FD31 +0000000201200034060A051E0006000D00002527012701271103170902172102FD5D02DD +BFFD235C65C102DD014CFD23C2FD31995C02DDBFFD235DFE88026AC202DDFEB4FD23C100 +00000002003700860650047E000900130000250901112111090111210115213509013521 +15010233FE0401FC022101FCFE04FDDF0285FD17FEF6010A02E9010A8601FC01FCFEEF01 +11FE04FE04011101F58383FEF6FEF68383010A000000000100370086063F047E00060000 +250901112111210233FE0401FC040CFBF48601FC01FCFEEFFE2A0001015E000005560608 +00060000090221112111015E01FC01FCFEEFFE2A040C01FCFE04FBF4040C0001015EFFCD +055605D50006000001211121112101015E011101D60111FE0401C9040CFBF4FE04000001 +00B5FFC9059F04B300060000012709022721059FC1FD23FEB402DDC202CF01E4C2FD2301 +4C02DDC1000000010120FFC9060A04B300060000011121070902012002CFC202DDFEB4FD +2301E402CFC1FD23FEB402DD0000000100B50034059F051E0006000025370902371102D0 +C2FD23014C02DDC134C102DD014CFD23C2FD31000000000101200034060A051E00060000 +0117090217210120C102DD014CFD23C2FD310303C202DDFEB4FD23C10000000100370086 +0650047E00090000250901112111090111210233FE0401FC022101FCFE04FDDF8601FC01 +FCFEEF0111FE04FE0401110000000001015EFFCD05560608000900000121090121112109 +012104450111FE04FE040111FEEF01FC01FCFEEF01C9FE0401FC024301FCFE0400000001 +0075FFF9065202D7000B000005230137171121352111371704C85AFE7878E8FC2F047BEA +7807018A78EA011CAAFE3AEA780000010075022D0652050B000B00000901072711213521 +1107270104C8018A78EAFB8503D1E8780188050BFE7678EAFE3AAA011CEA78018A000001 +0048FFF9062502D7000B000005013717112115211137170101D2FE7678EA047BFC2FE878 +FE7807018A78EA01C6AAFEE4EA78FE76000000010048022D0625050B000B000001330107 +271121152111072701D25A018878E803D1FB85EA78050BFE7678EAFEE4AA01C6EA780002 +00BAFF0406D505240003000700001711211125211121BA061BFA570537FAC9FC0620F9E0 +72029E000000000200BAFF0406D505240003000700001711211101211121BA061BFA5705 +37FAC9FC0620F9E00310029E0000000200BAFF0406D50524000200060000052101031121 +11012C0537FAC972061B8A053CFA520620F9E0000000000200BAFF0406D5052400020006 +0000051121031121110663FAC972061B8A053CFA520620F9E00000020006FF0406210524 +00020006000005090503130276FD8AFCF3030D030EFCF26402780278FD880310FCF0FCF0 +000000020006FF040621052400020006000013011109039E0275FCF3030D030EFCF20214 +FD8804F0FD880310FCF0FCF0000000020006FF0406210524000200060000130901210902 +9E02750276FA7D030D030EFCF20214FD8802780310FCF0FCF00000020006FF0406210524 +000200060000132109049E04EBFD8AFCF3030D030EFCF202140278FD880310FCF0FCF000 +0000000C00BAFF0406D5052400050009000D00110015001B001F00230029002D00310037 +000005152335333513152335131523350115233523152335011523352335231523352315 +2335011533152335131523351315233513152315233506D5E37172727272FEA5CCEACA04 +4D7271EACCEACAFEA472E472727272E4727216E6747201B6CCCC01B4CACAFC2474747474 +05ACE6727474747474FAC67274E601B6CCCC01B4CACA01D07472E600000000010024FFCA +06D0062300040000130902212403560356FEBAFBE003B6026DFD93FC140000020024FFCA +06D00623000400090000130121090521AA0113037A0113FD30FCAA03560356FEBAFBE003 +8BFCB1034F020CFE1F026DFD93FC1400000000020096FF46066605FC0005000B00000902 +110901031109011101010802760276FD8AFD8A7202E802E8FD180135FE95016B02D8016B +FE95FCE6035C01ADFE53FCA4FE5300010096FF46066605FC000500003711090111019602 +E802E8FD18F3035C01ADFE53FCA4FE53000000010022FFB906D905890005000005090121 +090101D0FE5201AE035B01AEFE524702E802E8FD18FD1800000000010070FE0008840628 +000B00001610012420050010010420257002050103020401030205FDFBFEFDFDFCFEFD40 +04A8012A9696FED6FB58FED696960001004DFFA006A7064D00040000090311043A026CFD +94FC14064CFCAAFCAA01460420000002004DFFA006A7064D000400090000090111090511 +040EFCB2034E020CFE20026CFD94FC1405C6FEEEFC86FEEC02D00356FCAAFCAA01460420 +00000001000A0000046A05D5001500001333112115211521152111211521112335333523 +3533C9CA015BFEA5015BFEA502D7FC5FBFBFBFBF05D5FE07909090FE7EAA022C90909000 +00000001000A0000022A0614001300000133152311231123353335233533113311331523 +0179B1B1B8B7B7B7B7B8B1B102BC90FDD4022C9090900238FDC8900000000001FFD70000 +046A05D5002300001333111617163332373637330E012322271121152111262726232207 +0607233E01333217C9CA0201110D261212027D02665B141302D7FC5F0605110D26121202 +7D02665B191605D5FD2C010109252452869404FE2FAA0302040309252452869406000002 +000A0000048D05D50010001D00001321321716151407062B011123112335331715333236 +3534262B01152115C901C8FB80818180FBFECABFBFCAFE8D9A9A8DFE015B05D57172DBDD +7171FDA803CF9090D192878692D090000000000200C9FE66055405D5001B002400C7401A +110E0F0B050603190900241E16050A211904193F1C0A1C14042510FCEC32FCC4EC111739 +1139393910CC393931004026090807030A0611030403051104040342140B0A0E9511B004 +0604001D03041D950924951581042FF4ECD4EC12391239123910F4EC113939304B535807 +1005ED071005ED1117395922B2402601015D40427A1B0105000501050206030704150015 +011402160317042500250125022603270626072608260920263601360246014602680575 +047505771B88068807980698071F5D005D011E01171323032E012B011114163B01152322 +261901212016151406011133323635342623038D417B3ECDD9BF4A8B78DC6E863F4DE3CD +01C80100FC83FD89FE9295959202BC16907EFE68017F9662FDF1C296AAF4010E056DD6D8 +8DBA024FFDEE8783838500040048FFA2049C04BC00230028003000370000011123350E01 +232227072737263534363B013726272623220607353E01333217371707160F0133353407 +01163332363D0101130607061514042DB83FBC88875C67606E3BFDFB299E0B0D549760B6 +5465BE5AE778945FA839BB3538AFFEBC3E6399B9FDC5E5633356027FFD81AA66613C7D4E +85567BBDC0BF0C0C452E2EAA272772B34FCB732B411218BAFE782ED9B429FEE201150C1E +337B200000000001FFE8FF4203120693001C0000011133133303331523031514163B0115 +23222726270323131123353311017731C0AAC0A0D1AA4B73BDBDD5510D0A66AAD6878705 +9EFEC20233FDCD8FFE0F6F894E9A500C10FED60272021D8F013EFFFF00C9FEBF060405D5 +100604360000000100BAFEE5051C06140019000021231134262322061511231133113637 +363332171615113311230464B87C7C95ACB9B942595A75C16363B8B8029E9F9EBEA4FD87 +0614FD9E6532327778E8FDF5FE4C000100C9FEBF056A05D5000E00002533112311230111 +2311331101210104C1A9C545FD33CACA029E0104FD1BAAFE15014102CFFD3105D5FD8902 +77FD48000000000100BAFEE5049C0614000E0000133311013309013311231123011123BA +B90225EBFDAE01CC9FB838FDC7B90614FC6901E3FDF4FE45FE4C011B0223FDDD00000001 +005CFEBF05E805D5000B0000132115012111231121350121730495FC500490C9FB3D03B0 +FC6705D59AFB6FFE1501419A049100010058FEE504930460000B00001321150121112311 +2135012171036AFD4C036CB8FC7D02B4FD650460A8FCDBFE52011BA8032500020073FFE3 +057705F10010001C002D40181A95000E149505088C0E9101AF031704001C0211190B101D +10FCECD4EC323231002FECE4F4C4EC10C4EE300135331123350E01232000111000213216 +01101233321211100223220204B3C4C44DECA5FEF2FEAC0154010EA5ECFCDFEACCCDEBEB +CDCCEA04EDE8FA2BE7848001AB015C015C01AB80FD78FEE3FEBB0145011D011D0145FEBB +0000000100C9FE66061F05D50014000013210901211110062B0135333236351101230111 +23C9012D017D017F012DCDE34D44866EFE7FCBFE7FC405D5FC0803F8FA93FEF2F4AA96C2 +04B7FC000400FAE10000000200100000056805D50002000A000025012101230133132113 +3302BC0112FDDB0185E5FDC7D28802A188D5C702E7FC5205D5FE81017F0000020073FFE3 +057705F1000F001800002515231133153E01332000100021222600100223220210122001 +37C4C44DECA5010E0154FEACFEF2A5EC0321EACCCDEBEB019AE7E805D5E78480FE55FD48 +FE5580016B023A0145FEBBFDC6FEBB0000000001003D000005E0047B0014000001300123 +01330901363332161D01233534262207060424FEB7FAFE5CC3015E011454DE83B9B25172 +2915036DFC930460FC5402E6E1BF8672723A542A1500000100440000090605F0001D0000 +09012309012301330901330901363736333217161D0123353426232207060766FEC9FEFE +C5FEC2FEFE8ACC013A0139E3013A0107123C5689885555AA512E2A281C04E1FB1F0510FA +F005D5FB1204EEFB12042647405C5C5B6E83793650281C00000000010056000007B1047B +001B0000013637363332161D01233534262207060703230B012301331B01331305461739 +5B8483B9B25172291806E5D9F1F2D9FEDBB8E6E5D9E60388563D60BF8672723A542A1914 +FC930396FC6A0460FC96036AFC96000200680000047F04B30013001B0000131025363332 +15140F011301330123030735363F0136352623221514C801541412A8B87FAB015EC3FE5C +FAD1A8313CA5D8012DAF034D01323103F8995D40FE2F03ACFBA0023255C4141C506E3434 +A025000100C90000047105D50007000001211123113311210471FD22CACA02DE02C7FD39 +05D5FD9C0000000100C1000003D0046000070000012111231133112103D0FDA9B8B80257 +0204FDFC0460FE33000000020070FFE704D10468000A0027000001221511323736353427 +262732171611100706230722272611103736371506070615141716331110033D415F5F55 +5646368B80898981CBB7C885888865A7423A56564D7003CB91FD52685DDFD0705B9D848D +FED9FEF1A19801999C0113011E926D1CA3174E73BECA736702AF012E000000010000FFE5 +029006140017000021350621222F0116333236351134262B013533321716151101D772FE +F92538013C589CA74D69E7FEB74F52AEC90ABD23CBBE026C99619C6062D4FB8200000003 +0071FFE30475047B0007000F002000000026220614163236080120001000200801262006 +1514173637363332171617363503165E875D5D885DFD5B011101E10112FEEEFE1FFEEF03 +41ACFED9AC1416375C85885933171201615F5E875C5C02680138FEC8FDD9FEC7013901DA +E9E7C9604D47385D5F3242495B0000010062000003330460000B00000111213521112135 +211121350333FD2F0217FE0D01F3FDF60460FBA093017894012D94000000FFFFFFE9FF11 +00EE0367120702740000FD6400000001000A029C036805E0000600000901330901330101 +71FE9985012A012B84FE99029C0344FD4002C0FCBC0000010087FE1004C805F0003A0000 +01152E01232206151417161F011617161514070607171E013B011523222E022F01262726 +272627351E013332363534262F012E01353424333216044873CC5FA5B33C36AB7AE6676C +9273C9877C9346183F224E677B3CDF310E322777807BEC72ADBC879A7BE2CA0117F569DA +05A4C53736807663332E23192F696CB6D9705912776E49AA10274F38CE2D0A2107182FD0 +4546887E6E7C1F182DC0ABC6E4260001005CFE10051F05D50018000001331523222E0227 +25262B0135012135211501161F011E0104B36C932759768C45FED34E717D03B0FC670495 +FC557275FC889FFEBAAA10274F38F33F9A0491AA9AFB6F0D5FCD6E4900000001007BFF7E +045B0460001F000001233736232205030633323633320307233736230E0123221B013307 +243332070438C013196A90FED6451B7380DC5AB72B12BF12133459F596C02A74BF18017A +92D21902AD81ACACFE04AE9AFEE282828401830131032FB1B1B100010032FE1E0472045F +0020000001061607060423202437330616333E0137362637042322371333030633162513 +3303FA0F681A1BFEF4D2FEFFFEDD16BA0B93D96BC019136A08FE7794D31998BC8418729D +011071BF012D78D19E87A1AB96447C01487660D351B0AF037EFD05AE02B002FB00000001 +0050FE1E0448045F00230000010616151404232224273533151E01333236353426371336 +23220703231333072433320703A81FBFFEBED2B0FED80CBB079F9495B7C7245A196891FC +39BE64BD1701528FD41801998DB6B0BDCB9FAC59505B79818384E8B80166AEAEFDE30350 +B0B0B00000000002007FFFEB049406750009002E00000136070407030633203F01060706 +23201B013625130E0123223F013307063332373633321D012335260F011337240303AA1B +F9FED427451B9E018B20C218DBDBACFE9C3939200185045A852EA4020AC40A0A4942CAD1 +61A1750279A407680124340351B41820CAFE28BCD70CA06463018E017FE15A016514157E +885041343547783D251327FE94091BFE830000010069FE1E044B045F0011000001230313 +36232205032313330724333207030434D15268196987FED146C475BF19017E8FD21875FE +1E026602A8AEAEFD8303B0B0B0B0FCD5000000010050FE1D06E5045F001C000001230313 +362322050323133307243332072433320703231336232205030412CB556C196892FEE251 +BE74C01401788DCA17016C93D5179EC189196F91FEEC6BFE1D026702A8AEAEFCD4045FB0 +B0B0B0B0FC51032CAEAEFD58000000020000FFEF049A0687000B00240000013623220503 +063732373637170605042322371B01232227353315163B013733032433320703C9196990 +FED94F155FD47B6B14BF27FECDFEF888D3186A68B6B011C6096A570FB07A017B90D31903 +2BAEAEFDCE860138427E03F74241AF02D60144E6E9FD6B36FE59B1B100000002006C0000 +0734045F0009002200000136232205030633162501243332070323133623220503233704 +23223713330724333203A91C658FFEBB521A728D013B012701698ED4189BBE87186890FE +EC82B81EFE7BABDA2490BF1B01998FD6032CAEB2FE0AAE02B0027DB0B0FC51032CAEAEFC +D4C8C8AF03B0B4B400000001008E00000457045F000F0000212313362322050323133307 +2433320703BEBF88196893FEDC35BE5EC017018189D820032CAEAEFE9102A2B0B0C00002 +0068FE1E047306870009001A000001362322050306333225171323030423223713033313 +072433320703A11F6F90FEC74E1871AF0116AA6DCD5DFE8AACD3189049D3341D01928DD3 +18032CAEAEFDF5AEBF9DFD890291C0AF03E30206FDEFC7B0B0000002005000000739045F +000900220000013623220503063332251323370423223713362306050323133307243332 +07243336070665196F82FEB44E1A6D88014990C11CFE79BBB7185B196679FEB85FBF88C1 +1901908EC8170196B0C21E032CAE9DFDF5AEAEFECEBFBFAF027DAE02ACFCD4045FB0B0B3 +B301B10000000002006DFFEF04C306870009002900000104070306333237363701030607 +06072437133625032623220623223D0133151433323633321713331503A2FDEF14451DB6 +7379780D011F6318C0BBD2FEB71D561902CF26144A5DD57A81C33753B272AC23315803DB +2D83FE1BF53B3D6D02A4FD3BA040400606FB025DA66B0101728195A2773F7CC0FED38600 +0000000100500000045B0687001B00002123133623220503231327102120171523352623 +221513072433360703B6C093186990FEDA73BF992201A0018502BC02ADFE2011017E8EDB +20032CAEAEFCD40438D3017CA17B6141A3FEB974B001B10000000001006800000719045F +001A0000250423223713330306333225133303063332251333032337042322032CFE929C +D218A6BE931A729D010787C08A155C9D011A69C093C119FE808ABEAFAFAF03B0FCD3AEAE +032DFCD3AEAE032DFBA1AFAF00000001006800000472045F000F00002504232237133303 +0633322513330323032CFE929CD2189AC0891A729D011173C09CC2AFAFAF03B0FCD3AEAE +032DFBA100000001008EFE1E06230687001E000001230337042322371304232237133303 +0633323733030633322513033313030602D24C0FFEBD90CA1C42FEEC7FA9165CCE4E1E74 +32D6BE510D427F0117697ACC687FFE1E02184E84C101BA889701D7FEBA8F73FDE35E7902 +DC02AEFD27FC8E000000000100680000070B0687001D0000011303331307243332070323 +13362322050323370423223713330306333203356D54CD400C01728DD5189CBE87186890 +FEE673C017FE9C9CD21898C38A1A729D013203000255FDA179B0B0FC51032CAEAEFCD4AF +AFAF03B0FCD3AE000000000100680000045D068700110000130333130306333225133303 +233704232237ED4DDC37701A689D01075ECA88CA17FE9C9CD21804610226FDD7FCD4AEAE +032DFBA1AFAFAF00000000020066FE1E044A045F0007001C000001362322050324371706 +05061633323717062120021B0133072433360303881B6A8FFED96501FC17BC21FD441B75 +988ECE63C2FEE0FEFAA5328ABD15017891D62D032BAEAEFD394B9E1BEC469BC6BA85B601 +46013403C7B1B101FECB00010068FE1E0713054A001D0000250423223704232237133303 +06333225133303063332251327331303132305DEFE808AC816FE9C9CD218A4C0931A729D +010787C08A155C9D011A6824CB14786DD0AFAFAFAFAF03B0FCD3AEAE032DFCD3AEAE032C +ECFEE7FC69FD840000000003007BFE1E0722045F00090013002D00000136072605030633 +32250136230605030617322513233704232707132303370421221B013307243332072433 +3203039D0E6F9EFEE7471A70AF010A0315197D59FEAF48188D95010395B71AFED6967409 +55CE401AFEFDFEF1D42C74BF180153D4C0180150D7C32D036D6E0201B0FE07ADAE01FAAF +01AFFE06AE01AFFECFAFAF2D3BFE2C01CCC5AF0131032EB1B1B1B1FECD0000010064FE1E +0645068700170000251323031305072313330325130333130325373303231305036D67CE +5136FE5A1DC47BC74F01A64255C2453301A01CCB7BCC50FE5C6FFDAF025201847BED036F +FDF88601BB0253FD7BFEAB78C0FC9F021C7E000100500000045C045F000F000001243332 +0703231336232205032313330196017B8ED5189BC987185E90FED971C19EBF03AFB0B0FC +51032CAEAEFCD4045F0000010068FE1E0472046000100000250423223713330306333237 +1333031323030EFEAF9BD21894BE811A729DF388C99C83DAAFAFAF03B0FCD3AEAE032EFC +40FD7E00000000010068FE1E0468045F0016000025042322371333030633322513330302 +00212335333224031FFE9C99D21898C2891A729D011169C0723BFE2EFEDB5549E70159A5 +A5AF03B0FCD3AEAE032DFC91FE57FED78BDF00010050FE1E045406870013000001031323 +03130333130724333207032313362322017C6A63DA4B974AC43D0F017B8DD5188BBD7418 +6890032CFD1AFDD802150438021CFDB38BB0B0FC51032CAE000000010056FE1E04410460 +001900000132371706230600371333072433320B01231336232205030616025B77CB58D0 +DAFBFEE22492BD1B0128E6D42B82BE7E19A373FEF7651EA1FE9DAD7AB2020133F6041BB1 +B0FECDFD1A02E6AEAEFD19CEDA000002007AFFEE04C50687000700150000010407030633 +20370123030205201B011225033313330396FDFC18431FCD013819018F69642CFDDBFEA9 +2A3E2702C26AD24B7003F027B5FE32D6B202B7FD5CFEE62D015801BA011B430229FDD900 +000000010050FE1E06F60460001C00002113362322050313230313330724333207243332 +07032313362322050302F4731B5F91FEE0605CDA4488C014017590C916016996D1169BC2 +891B7190FEEB74032CAEAEFCF5FDFD01E20460B1B1B1B1B1FC51032CAEAEFCD400000001 +003CFE1E045C045F00200000012313362322050336172011102506273716332011262122 +0723133307241736030422C029156790FEDC5DEA9701B3FDB4E9EB1EDDE501A007FED8B3 +C5C59DC61D012CDFD02A02230108AEB1FD977301FE8DFE5E020151BE7A0114DF6E0428B1 +B20101FECB0000010060FE1E0461045F000E000001041B01330320371333030205022102 +C8FD386094BE8B02052154C05E24FD393701E7FE1E01024303FFFC25F002EBFCD3FEFF1D +FE8B00010046FE1E04600489001E000001161724130423202F0133171633203733020116 +17072427061323122526270152247701AD01FECBF2FEE81006D80806A1016191A115FDF5 +D6B03BFEFFB9CB22C20201149B2C0283ABD8DC01D264ED526D5194FD72FEBEAE3C897AB0 +BEFE9601D7BFCBF800000001005000000700045F001B00002123370423221B0136232205 +032313330724333207030633322513330678C218FE969FCA2C49176B83FEE066C38EBF16 +0120E4D0195A18676901435EBFAFAF013201F9AEAEFCD6045EB1B1B1FD84AEAE032D0001 +0064FE1E045B068700170000013623220503012301131221331523220703243716070323 +03881B697CFEC65D0202F6FE31B32A0170AEEA911B3201789ACB195EC0032CAEAAFD7FFD +6F026604C001438AB9FE78A30102AFFDE0000001007A0000044E05020018000001022120 +1B013303063320371336043735331506373633320703FF2CFDACFED12A23CB261AC50138 +1B4F16FD7C01D002868586F1240132FECE01320108FEF7ADB902329AC2E7D4A4763B3CFC +00000001007CFE1E046D06870013000025132303370423221B0133030633162513033313 +03E36EDC4F02FE909BCD2C8ABE8C178768012A734ED33B84FD9A02256CAF0131032EFCD2 +AD02AF03210235FDCD0000010068FE1E04D2045F00130000252337071323030623223713 +33030633322513330445BD08D46DCB4AC540BF1890C286148F7F01726FC3465F45FDBE02 +1533AF03B0FCB48F9903420000000002007AFFEF06BB0688000700250000010407030633 +2037052313360705030221201B013625110221041715233526072217112520030395FDFE +1A4218AB01471C0317BD731C65FE9F6629FDB9FED62A491C02C402018D015701CA01A9C0 +02015E01332A03D92BBDFE30B2B2B302BDCA0915FD4AFECE01320219C1390152010202BE +4D3F5B0196FEBA27FEE000020071FFE304BB030B000B00170024400A194509120F031215 +451810FCECD4ECEC3100400800B90C06B9128C1810F4ECD4EC3001220615141633323635 +3426273204151404232224353424029699B7B79999B7B799F9012CFED4F9F9FED4012C02 +677D73737D7D73737DA4D3C1C1D3D3C1C1D300030073FFE306A705F00013001F002B0032 +400D2D102114190A9120151900102C10FCEC32F4EC32EC3100400E159520AD1A950F2695 +05910F8C2C10E4F4EC10ECF4EC3013341236243332041612151402060423222426022521 +16171E01333237363736252126272E01232207060706737ED40126A2A20126D47E7ED4FE +DAA2A2FEDAD47E0559FB811B8A4ED677776BD85D1EFB8C047E1A8A4ED677776BD85D1E02 +EA9D011ED17A7AD1FEE29D9EFEE2D17A7AD1011E49CA9153603061E44AF9C99252603061 +E54900050073FFE306A705F000130018001D00220027004940151A22951824241E232910 +1E19190A9123141900102810FCEC32F4EC32EC1112392F3CEC32310040121A14952223AD +1B17950F21259505910F8C2810E4F4EC3210EC32F43CEC32301334123624333204161215 +1402060423222426023716001711290111360013260027112901110600737ED40126A2A2 +0126D47E7ED4FEDAA2A2FEDAD47EDB1A010BB502A4FE26B5010B1A1AFEF5B5FD5C01DAB5 +FEF502EA9D011ED17A7AD1FEE29D9EFEE2D17A7AD1011E49C9FEE6210204FDFB21011A01 +74C9011A21FDFC020421FEE60000000200400000053505D5000A000D0063400D03000C95 +01810609030500090E10DCC4D4C431002F3CF4EC39393040150D110006000611050D050C +110308030811090A09424B5358071001ED071001ED071001ED071001ED40140B090C0D05 +0A090C000607000608030403080D050F0F0F0F5922133521150901230901230137012176 +0495FE280202F0FE76FE75F00202790154FD57052BAA9AFD7FFD460217FDE902BAA301CE +000000><000200430000053805D5000A000D0063400D03000C9507058102000703050E10 +DCC4D4C431002FE432EC39393040150D110006000611050D050C110308030811090A0942 +4B5358071001ED071001ED071001ED071001ED40140B090C0D050A090C00060700060803 +0403080D050F0F0F0F59222515213509013309013301070121050EFB6B01CCFDFEF0018B +018AF0FDFE78FEAB02A99A9AAA027102BAFDE90217FD46A3FE32000000030040000004D5 +05D500020005000F006A40110C0F01950D810A07039509110F070A0C1010DC3CD43CCC31 +002FEC3939F4EC393930401500110F030F01110C040C041107010703110A000A424B5358 +071001ED071001ED071001ED071001ED40140201070A000601070F0305030F040C0B0C04 +0A000F0F0F0F59220121090121013701152135090135211503D9FD570158FEB402A9FEA8 +7701D1FB6B01D1FE2F0495052BFE57FD2801A996FDC1AAA0024C023FAAA0000000030096 +000003E805D500030007000B002340110307000804910B011C00091C08051C040C10DCFC +DCFCDCEC31002FF43C3CCC3230013315230133152301331123031CCCCCFD7ACCCC0144CA +CA05D5FF00FFFF00FFFA2B00FFFF00100000056805D5100603300000FFFF001000000568 +05D5100600390000FFFF00C90000048B05D5100600280000FFFF00830000044505D51006 +0150000000050096FFE304E005F0000B00170023002F003300484010354531031B12152D +300921120F27453410FC3CEC32C4D43CEC32C4EC3100401633B930302A0C00B90C06B912 +91341EB92A18B9248C3410F4ECD4EC10F4ECD4EC1112392FEC3001323635342623220615 +141617222435342433320415140403323635342623220615141617222435342433320415 +14040121152102BB99B9B99999B9B999F9FED4012CF9F9012CFED4F999B9B99999B9B999 +F9FED4012CF9F9012CFED4FD3703A0FC6004733934343838343439A48E83828E8E82838E +FCB83934343838343439A48E83828E8E82838E035CAA0000000100DB0000067D05D50013 +003A400D05090C031C070D021C0010121410DCCC32EC32DCEC32CC323100401007129500 +0D9502AD0004911108950B0F2F3CEC32E432F4EC10EC3230132111211121152111211521 +1121112135211121DB020B018B020BFEBF0141FDF5FE75FDF50141FEBF05D5FD9C0264AA +FB7FAA02C7FD39AA048100000002005C0000055205D50008000B005440100B9502810700 +0A020406000B1C02040C10F4EC32D4C4113931002F3CF4EC304019051100040807080911 +000400071106050605080A11040004424B5358071005ED3C3C071005ED00071004ED0710 +08ED59222123112115090123010501210126CA04ACFE1E022CEFFE50FE7302E6FD1A05D5 +9AFD76FD4F0217D303E70000000300960000037E05D500030007000B002D40130B9508AF +07039500AD0495070100090508040C10DC3CCC32DCCCB43F0D3F01025D31002FECFCEC10 +FCEC300133152301331523113315230280FEFEFE16FEFEFEFE0351CDFE49CD05D5CD0000 +0002005C0000055205D50008000B005440100006810B95050B060401070A1C06040C10F4 +EC32D4C4113931002FECF43C304019021107030800080911070307001101020102080B11 +030703424B5358071005ED3C3C071005ED00071004ED071008ED59220133090115211133 +012511210463EFFDD401E2FB54CA018DFE7302E605D5FD4FFD769A05D5FDE9D3FC190000 +00030073FFE306A705F00013001F002B0037401120951B1B14262D1026190A9114190010 +2C10FCECF4ECEC1112392FEC3100400C1A21950F1B209505910F8C2C10E4F4EC3210EC32 +301334123624333204161215140206042322242602371417161716171106070E01011136 +373E01353427262726737ED40126A2A20126D47E7ED4FEDAA2A2FEDAD47ED52E5DD83D40 +B5814E5C02AAB5814E5C2E5DD83D02EA9D011ED17A7AD1FEE29D9EFEE2D17A7AD1011E9E +7D71E4611B0C04B3218853E101DDFB4D218952E17D7C70E5611B000000030073FF9506A7 +063F00190023002D006E401E162E1517001A0A080D1C1D27260714061A24092F1024190D +911A1900102E10FCECF4ECECC4111217391239391112393911393100401E0709051F162E +1C1D2726041F14120A171F29150A2995121F950591128C2E10E4F4EC10EC2FC411123939 +123912173912391112393930133412362433321737170716121514020604232227072737 +2602371417012623220E02053427011633323E02737ED40126A2E3C4A0829D6E807ED4FE +DAA2E4C4A0819C6E7FD59102EA8FA777D69C5C048A91FD1590A777D69C5C02EA9D011ED1 +7A76C469C26AFEDE9D9EFEE2D17A77C56BC16A01219EE6AE03985E60A5E17CE5AFFC675E +60A5E100000400960000019405D500030007000B000F002E401707950403950008950B0C +9500AF0F0D0905010C0804001010DC3C3C3CCC32323231002FE4ECDCEC10ECDCEC301333 +152315331523153315231533152396FEFEFEFEFEFEFEFE05D5CDDFCDE1CDE1CD00010029 +000004E105D50007003A400907AF0105090701050810DCDCC4CC31002F3CE43040140311 +000704021101000100030711060411050605070110ED10ED32320710ED0810ED09012309 +0123013302B2022EE8FE5DFEBAE6037FE802BAFD46021EFDE205D500000100C90000053B +05D5000B002D400D0D04031C06021C0B071C0A040C10FCFCDCFCDCFCFC3100400A009105 +0795020BAD09052F3CF43CEC10E430013311211123112111231121029DCA01D4CAFD22CA +01D405D5FD9CFC8F02C7FD39037100000001003E0000053C05D5000E0081400C031C0404 +07000F0709000D0F10D4C4DCC4C41112392FEC31B480007F0D025D004006060300AF0C09 +2F3CEC3232304BB042505840140A110908090C110D0E0D06110708070111000E00050710 +EC0710EC0710EC0710EC400F0801090C070B0C070A000E0D06000A0F0F0F400A05110808 +0702110E000E070010ED070010ED5913330111331101330901230901230182DA0113CA01 +0BD8FE200200D8FE5CFE58DA021605D5FE64019CFE73018DFD33FCF8027BFD85031D0000 +00040096000003A205D500030007000B000F003140140F07950C04AF0800950B03050104 +000D090C081010DC3CCC32DC3CCC32B43F053F01025D31002F3CEC32F43CEC3230253315 +2311331523013315231133152302A4FEFEFEFEFDF2FEFEFEFECDCD05D5CDFBC5CD05D5CD +0002005C0000050805D500020009003740100295058108950401050906001C05040A10F4 +ECD4C4113931002FECF4EC3040090011080111070807424B5358071005ED0410ED592209 +012101211121150121012602E6FD1A03E2FB5404ACFC9C0364014403E7FAD505D59AFB6F +0003009602680492036800030007000B0024401103070B0004080D011C00051C04091C08 +0C10DCECDCECDCECCC31002F3C3CCC32323001331123013311230133112303C6CCCCFE68 +CCCCFE68CCCC0368FF000100FF000100FF000000FFFF00C90000048B05D5100603370000 +0001006F0000039605D5000B002140100B039500AF040895070501031C0008092FCC32FC +CC3231002FEC32F4EC32301321152111211521352111216F0326FED3012EFCDA012DFED2 +05D5AAFB7FAAAA04810000000001006FFFE2073105F0002F002C40160F2195141C910927 +952C048C30311E2A24190C12063010CC32DCECDC32CC310010E432EC32F43CEC32300106 +070621222735163320001110002122073536332017161736373621321715262320001110 +0021323715062320272603D02534C2FEAC80726D7901000110FEF0FF00796D7280014FC7 +34252534C2015480726D79FF00FEF001100100796D7280FEB2C834012A4236D021AF2A01 +3A01270128013829AF20CF36414236CF20AF29FEC8FED8FED9FEC62AAF21D0360002006F +000005CC05D5001B001F005040130B07090D051C101F04111D011C161A1814002010D43C +3CCC32EC3232D43C3CFC3C3CCC3231004014091C189506021B000A1D17950D11140400AF +0F132F3CE432DC3C3CEC323210DC3C3CEC32323001331121113311211521112115211123 +112111231121352111213521171121110191CA0192CA0115FEEB0115FEEBCAFE6ECAFEDE +0122FEDE0122CA019205D5FE780188FE78AAFE8EAAFE790187FE790187AA0172AAAAFE8E +01720000FFFF00C90000053305D5100603AC0000000100CC0000048805D50007001C400E +049501AF0595000602051C00040810FCECC43231002FECFCEC303311211521112115CC03 +BCFD0E02F205D5AAFB7FAA00FFFF00C90000019305D51006002C00000001006F000005CC +05D500130037400C07030509011C120E0C100014102F3C3CCC32FC3C3CCC323100400E10 +0595021300060F95090C00AF0B2FE4DC3CEC3210DC3CEC32300133112115211121152111 +23112135211121352102BFCA0243FDBD0243FDBDCAFDB00250FDB0025005D5FE78AAFE8E +AAFE790187AA0172AA000000000200C90000019505D5000300070037400C070004AF0205 +011C0400040810FC4BB0105458B900000040385932EC3231002FECCCCC3001400D300940 +09500960098F099F09065D3733152313331123C9CCCC02CACACDCD05D5FBA6000001009F +FFE305A405D5001C003E4018150F951A049507911A8C1D141915121907170C190600101D +10FCC4ECD4C4ECD4EC310010E4F4EC10ECC43040060411080908424B5358071001ED5922 +133412370121352115010E0115141633323635342733161514042120249FBEBB0210FCA4 +04ACFD78B7C5DBC9E2D5CBBFE1FEBBFEB9FECEFEB901C39F010477014EAAAAFE6574E477 +96A48888B3CEE0A1CEE6F90000040063FFE304AD05F0000B00170023002F0039400E3145 +031B12152D0921120F27453010FC3CEC32D43CEC32EC3100401000B90C06B91291301EB9 +2A18B9248C3010F4ECD4EC10F4ECD4EC3001323635342623220615141617222435342433 +3204151404033236353426232206151416172224353424333204151404028899B7B79999 +B7B799F9FED4012CF9F9012CFED4F999B7B79999B7B799F9FED4012CF9F9012CFED4041A +5049495050494950A4A59897A6A69798A5FD115049495050494950A4A69798A5A59897A6 +00020073FFE306A705F0001300270028400B29101E190A91141900102810FCECF4ECEC31 +00400A19950F239505910F8C2810E4F4EC10EC3013341236243332041612151402060423 +2224260237141E0233323E0235342E0223220E02737ED40126A2A20126D47E7ED4FEDAA2 +A2FEDAD47ED55C9CD67777D69C5C5C9CD67777D69C5C02EA9D011ED17A7AD1FEE29D9EFE +E2D17A7AD1011E9E7DE1A56060A5E17D7CE1A56060A5E10000020073FF9106A705F00016 +002C005040180F0E0A1F20211E0D100617230E2E1023190A91171900102D10FCECF4ECEC +C411121739123939310040160F12201F211E100D06281C0F1C951228950591128C2D10E4 +F4EC10ECC011121739123930133412362433320416121514020717072706232224260237 +141E023332370137013635342E0223220E02737ED40126A2A20126D47E7F6CA281A7C4E5 +A2FEDAD47ED55C9CD677A790FE9183016A905C9CD67777D69C5C02EA9E011ED07A7AD0FE +E29E9EFEE069C76BCA777AD0011E9E7CE2A4605E01BE6AFE49AEE57CE2A46060A4E20000 +000100C90000053B05D5000B002D400D0D04061C04081C0B021C00040C10FCFCDCFCDCFC +FC3100400A0501910A0B089503AD0A2FF4EC3210E43230131133112111331121112311C9 +CA02DECAFE2CCA02640371FD3902C7FC8FFD9C0264000000000300C9000001C705D50003 +0007000B002840140B9508AF07039500AD0495070D0901050004080C10DC3C3CDC3C3CCC +31002FECFCEC10FCEC30133315231133152311331523C9FEFEFEFEFEFE0351CDFE49CD05 +D5CD0000000500960000056805D500030007000B000F0013003F401B1301950210AF0F0B +9508AD0C0695050F0307020609080D110C101410DC3CCC32DCCCDC3CCC32B63F073F033F +09035D31002F3CEC32FCEC10FC3CEC323001233533112335330133152301331523113315 +230568FEFEFEFEFD18FEFEFE16FEFEFEFE0508CDFA2BCD0284CDFE49CD05D5CD00030073 +FFE306A705F000130027002B003E40102D100A292828141E190A91141900102C10FCECF4 +EC11392FCC10ECB22F29015D3100400E2BCE28AD19950F239505910F8C2C10E4F4EC10EC +F4EC3001133412362433320416121514020604232224260237141E0233323E0235342E02 +23220E0205331523737ED40126A2A20126D47E7ED4FEDAA2A2FEDAD47ED55C9CD67777D6 +9C5C5C9CD67777D69C5C01C6FEFE02EA9D011ED17A7AD1FEE29D9EFEE2D17A7AD1011E9E +7DE1A56060A5E17D7CE1A56060A5E115CD00000000020073FFE406A7063E0016002C0050 +401809080D252423260A07061721082E1021190D91171900102D10FCECF4ECECC4111217 +391239393100401608050A072326242506281C081C951228950591128C2D10E4F4EC10EC +C411121739123930133412362433321737170716121514020604232224260237141E0233 +323E023534270127012623220E02737ED40126A2E4C4A0839E6E7F7ED4FEDAA2A2FEDAD4 +7ED55C9CD67777D69C5C90FE9482017090A777D69C5C02EA9E011ED07A76C469C26BFEE0 +9E9EFEE2D07A7AD0011E9E7CE2A46060A4E27CE5AEFE3F6C01C65E60A4E2000000030073 +FFE3057205EF00250031003D004740103826190E181E08192C3230131900103E10FCECF4 +3CEC32DC3CEC32310040172F951B3B950B350B1B2904161016952310950391238C3E10E4 +F4EC10EC111217392FEC2FEC301310002120171E01151406232226353437200011100021 +263534363332161514060706212000051416333236353426232206133426232206151416 +333236730186015301935F20149985849918FEFEFEFB01050102189984859914205FFE6D +FEADFE7A03992C1C1C2C2C1C1C2C902C1C1C2C2C1C1C2C02E90167019F73274F3B819191 +814836FEBEFEE2FEE2FEBE3648819191813B4F2773019F7A3C31313C3B323203873C3131 +3C3B2F2F00010064000005C005D5000B00234011050895020BAD00AF070305021C0A080B +0C10D43CC4FC3CC431002FE4F43CEC323001331121152111231121352102ADCA0249FDB7 +CAFDB7024905D5FD6AAAFD6B0295AA00FFFF003D0000053B05D51006003B000000030073 +FFE3057205EF0033003F004B0066401919181B95151E1E1F4634190E252B0819363A301F +141900104C10FCEC32F43CEC32DC3CEC3211392F3CFC3CCC3100401F171C1418951E1A3D +952849950B1A430B283705231023953110950391318C4C10E4F4EC10EC111217392FEC2F +EC2F3CEC32CCC4301310002120171E011514062322263534372207061533113315331523 +15231123141716332635343633321615140E010706212000051416333236353426232206 +133426232206151416333236730186015301935F20149985849918EE977FBBCCE9E9CCBB +7F97EE189984859914413B85FEEFFEADFE7A03992C1C1C2C2C1C1C2C902C1C1C2C2C1C1C +2C02E90167019F73274F3B819191814836A28ADF00FFFFAAFF00FFDF8AA2364881919181 +3B4F4F1734019F7A3C31313C3B323203873C31313C3B2F2F000100C90000048B05D50013 +003B401C0E0B95040295008110950804AD12050E950B080901110F031C00041410FCEC32 +D4C4C4DC3CEC3231002FEC32ECF4EC10EE3230B21F1401015D1321152111211133153315 +231523112111211521C903B0FD1A0111CCEAEACCFEEF02F8FC3E05D5AAFE4600FFFFAAFF +00FFFDE3AA000000FFFF00100000056805D5100603290000000100C90000053B05D50007 +001F40100602810495000904051C00041C01040810FCECD4ECEC31002FECF43C30290111 +3311211133053BFB8ECA02DECA05D5FAD5052B00000100C90000047905D50008003D400C +42070395048101050104040910FC3CD431002FF4EC32304B535840120811020201071103 +03020811020011010201050710EC10EC0710EC0810EC5921230901352115210101B1E801 +DFFE2103B0FD3801DF02C0026BAAAAFD9A00000000010073000005DB05D50023004F4016 +2510060F19070E0224102118192019130A021C141D012F3C3CEC3232D43CEC32EC10D43C +EC32EC310040120003951D0A200106810F1512951C0B19140F2F3C3CD43CEC3210F43C3C +D43CEC323001113311323635331000231132001123342623112311220615231000331122 +001133141602C2CA8AF2D3FE87D6D60179D3F28ACA8AF2D30179D6D6FE87D3F2042B01AA +FE56E2C8FEEEFEBAFEDBFEBAFEEEC8E2FE5601AAE2C801120146012501460112C8E20000 +000100C9000003F605D50006002E400B0300AF060103041C00040710FC4BB0105458B900 +0000403859ECC4C431002FECC430B40211030304070110ED13210123011123C9011A0213 +DEFE75C405D5FD2D021DFAE100010073000005DB05D5002B0066401A162D101D10191C11 +0C2C100107261906272018140C1C232B030B2F3C3C3CEC323232D43CEC32C4EC10D43CEC +32ECC43100401A182BB91501012A030D0A951403100B06811D202395192A27221D2F3C3C +D43CEC3210F43C3CD43CEC321112392F3CEC323001352135220011331416331133113236 +35331000231521152115320011233426231123112206152310003335010101C1D6FE87D3 +F28ACA8AF2D3FE87D601BFFE41D60179D3F28ACA8AF2D30179D60295AA3E01460112C8E2 +01AAFE56E2C8FEEEFEBA3EAA3DFEBAFEEEC8E2FE5601AAE2C8011201463D000000010036 +042D03E905D500070017400906020401000504010810DCCCDCCC31002FCCC43230012111 +331121113303E9FC4D8F02958F042D01A8FEFB01050000000003008FFE6E03AC045E0017 +001B0024000001331136373637150E012322263534363F013E01373E0135132335330311 +070E011514171601F3BF202059615EC167B8DF485A582F27080606C5CBCBC52D39334224 +02CDFC53080D2343BC3938C29F4C8956562F3519153C34010EFEFABE01AE2D355E315937 +1F000000FFFF00D9009F05DB033210260CC6000010070D4F0213FE57000100B0033A0258 +061400050000132115231123B001A8F0B806148FFDB50000000100C7033A026F06140005 +000001233521112301B6EF01A8B905858FFD2600000100B0FEF2025801CC000500000533 +152111330168F0FE58B87F8F02DA0000000100C7FEF2026F01CC00050000012135331133 +026FFE58EFB9FEF28F024B00FFFF0093000003B005F01006054D0000FFFF00AAFEBC0682 +05D5102717D80000FC36100617D80000FFFF00AAFEBC068205D5102717DF0000FC361006 +17DF0000FFFF00AAFEBC068205D5102717DB0000FC36100617DD0000FFFF00AAFEBC0682 +05D5102717DD0000FC36100617DE0000FFFF00AAFEBC068205D5102717D80000FC361006 +17DD0000FFFF00AAFEBC068205D5102617D80000100717DD0000FC36FFFF00AAFEBC0682 +05D5102717DD0000FC36100617DF0000FFFF00AAFEBC068205D5102617DD0000100717DF +0000FC36FFFF00AAFEBC068205D5102717D80000FC36100617DC0000FFFF00AAFEBC0683 +05D5102617D80000100717D90000FC36FFFF00AAFEBC068205D5102617DF0000100717D8 +0000FC36FFFF00AAFEBC068205D5102717DF0000FC36100617D80000FFFF00AAFEBC0682 +05D5102617D80000100717DA0000FC36FFFF00AAFEBC068205D5102717D80000FC361006 +17DA0000FFFF00AAFEBC068205D5102617DF0000100717DE0000FC36FFFF00AAFEBC0682 +05D5102617DB0000100717DF0000FC36FFFF00AAFEBC068305D5102717DB0000FC361006 +17D90000FFFF00AAFEBC068205D5102717DC0000FC36100617DE0000FFFF00AAFEBC0683 +05D5102717D90000FC36100617DF0000FFFF00AAFEBC068205D5102617DC0000100717DF +0000FC36FFFF00AAFEBC068205D5102717DB0000FC36100617DA0000FFFF00AAFEBC0682 +05D5102617DE0000100717DA0000FC36FFFF00AAFEBC068205D5102617DE0000100717DF +0000FC36FFFF00AAFEBC068205D5102717DB0000FC36100617DF0000FFFF00AAFEBC0682 +05D5102717DB0000FC36100617D80000FFFF00AAFEBC068205D5102617DE0000100717D8 +0000FC36FFFF00AAFEBC068205D5102617DE0000100717DB0000FC36FFFF00AAFEBC0683 +05D5102617D90000100717DC0000FC36FFFF00AAFEBC068205D5102617DD0000100717DD +0000FC36FFFF00AAFEBC068205D5102617DA0000100717DA0000FC36FFFF00AAFEBC0683 +05D5102617D90000100717DE0000FC36FFFF00AAFEBC068205D5102617DB0000100717DC +0000FC36FFFF00AAFEBC068205D5102717DE0000FC36100617D80000FFFF00AAFEBC0682 +05D5102617DB0000100717D80000FC36FFFF00AAFEBC068205D5102717DF0000FC361006 +17DA0000FFFF00AAFEBC068205D5102617DF0000100717DA0000FC36FFFF00AAFEBC0682 +05D5102617DC0000100717DA0000FC36FFFF00AAFEBC068305D5102617DA0000100717D9 +0000FC36FFFF00AAFEBC068205D5102617DD0000100717DE0000FC36FFFF00AAFEBC0682 +05D5102717DD0000FC36100617DB0000FFFF00AAFEBC068305D5102617DE0000100717D9 +0000FC36FFFF00AAFEBC068205D5102617DC0000100717DB0000FC36FFFF00AAFEBC0683 +05D5102617D90000100717D80000FC36FFFF00AAFEBC068205D5102617D80000100717DC +0000FC36FFFF00AAFEBC068305D5102617D90000100717DF0000FC36FFFF00AAFEBC0682 +05D5102617DF0000100717DC0000FC36FFFF00AAFEBC068305D5102717DD0000FC361006 +17D90000FFFF00AAFEBC068205D5102617DD0000100717DC0000FC36FFFF00AAFEBC0683 +05D5102617D90000100717DA0000FC36FFFF00AAFEBC068205D5102617DA0000100717DC +0000FC36FFFF00AAFEBC068205D5102617DB0000100717DB0000FC36FFFF00AAFEBC0682 +05D5102617DE0000100717DE0000FC36FFFF00AAFEBC068205D5102617DC0000100717DE +0000FC36FFFF00AAFEBC068305D5102617DB0000100717D90000FC36FFFF00AAFEBC0682 +05D5102617DB0000100717DA0000FC36FFFF00AAFEBC068205D5102617DA0000100717DE +0000FC36FFFF00AAFEBC068205D5102617DC0000100717DC0000FC36FFFF00AAFEBC0683 +05D5102617D90000100717D90000FC36FFFF00AAFEBC068205D5102617DC0000100717DD +0000FC36FFFF00AAFEBC068305D5102617DD0000100717D90000FC36FFFF00AAFEBC0683 +05D5102617DC0000100717D90000FC36FFFF00AAFEBC068205D5102617DB0000100717DE +0000FC36FFFF00AAFEBC068205D5102617DD0000100717DA0000FC36FFFF00AAFEBC0682 +05D5102717DD0000FC36100617DA0000FFFF00C9000004EC05D5120600250000FFFF00C9 +0000048D05D5120600330000000200460000040A05D50008001300002511232206151416 +33052122243534243B0111330340FE8D9A9A8D01C8FE38FBFEFF0101FBFECAA602319287 +8692A6E3DBDDE20258000000FFFF00C9000005B005D5120600270000FFFFFFFA000004E9 +05D51206003700000001FFFA000004E905D500070000290135211133112104E9FB110212 +CB0212AA052BFAD5FFFF0073FFE3058B05F01206002A0000FFFF00C90000056A05D51206 +002E00000001FFD50000047605D5000A000021231101210901210111330476CAFD62FEFC +02E5FCE6010A02CDCA0277FD8902B8031DFD3102CF000000FFFF0000FFE3034F05D51206 +175F0000FFFF0073FFE3052705F0120600260000FFFF0073FFE3052705F0120601480000 +FFFF005C0000051F05D51206003D0000FFFF00C90000042305D5120600290000FFFF00C9 +0000042305D512060BC90000FFFF00C90000061F05D5120600300000FFFF00C900000533 +05D5120600310000FFFF00C90000046A05D51206002F0000FFFF0087FFE304A205F01206 +00360000FFFF00C90000055405D51206003500000002003B000004C605D50013001B0000 +012E01270333131E013B0111331121202635343601112322061016330202417B3ECDD9BF +4A8B78DCCAFE38FF00FC830277FE92959592031916907E0198FE8196620277FA2BD6D88D +BAFDB1021287FEFA85000000FFFF00100000056805D5120602070000FFFF001000000568 +05D5120600390000FFFF00C90000053B05D51206002B0000FFFF00A3FFE305BB05F01206 +0BD80000000100C90000041805F2000F000001152E012322061511231110363332160418 +5BC2688F71CAD3F760BE0598EC515195CBFC1203EE011AEA2C000000FFFF0044000007A6 +05D51206003A0000FFFF003D0000053B05D51206003B0000FFFFFFFC000004E705D51206 +003C000000030091000004B405D500080011002000000111212206151416330111212206 +1514163305212226353436372E01353424332103EAFEBCA39D9DA30144FED59491919401 +F5FDFCE7FA807C95A50110FB0218030C0223878B8C85FD9A01C26F727170A6C0B189A214 +20CB98C8DA000000FFFF00100000056805D5120600240000FFFF00100000056805D51206 +11EA0000FFFF00C90000048B05D5120600280000000100830000044505D5000B00002901 +352111213521112135210445FC5002E6FD3902C7FD0803C2AA01BAAA021DAA00FFFF00C9 +0000019305D51206002C0000FFFF0073FFE305D905F0120600320000FFFF00B2FFE30529 +05D5120600380000000100B20000052905F20011002A40090A1C0838111C00411210FC4B +B0105458B90000FFC03859ECFCEC3100B50D95049109002F3CF4EC303311100021200019 +01231134262322061511B20121011B011A0121CBAEC2C3AE03A40124012AFED6FEDCFC5C +038BF0D3D3F0FC75FFFF0008000003A905D512060BD90000000200730000055A05D50008 +0011001F4009001C0A3204190E101210FCECF4EC3100B60095098107950B2FECF4EC3001 +23200011100021331311212000111000210490F4FECBFEE1011F0135F4CAFE61FE50FE68 +019601B2052FFEE9FED4FED2FEE8052FFA2B016A0182018001690000000100AF000001B7 +013E0003000013211121AF0108FEF8013EFEC20000010092FEC001B7013E000600001321 +1103231323AF0108A481A487013EFEC2FEC00140FFFF00AF00000416013E102712C6025F +0000100612C60000FFFF00AFFEC00416013E102712C7025F0000100612C6000000020092 +FEC001B704230006000A00001321110323132311211121AF0108A481A4870108FEF8013E +FEC2FEC001400423FEC20000000200AF000001B704230003000700001321112111211121 +AF0108FEF80108FEF8013EFEC20423FEC2000000000200AF0000040502D6000300070000 +012111210121152102FD0108FEF8FDB20356FCAA013EFEC202D6A800000200AF01600405 +03A20003000700001321152115211521AF0356FCAA0356FCAA03A2A8F0AA0000FFFF0072 +FFE3048D05F0100601690000FFFF0064FFE303BC047B1006016A0000FFFF00C9000002C6 +05D5100601580000FFFF00A60000026E04601006022B000000010076FFE308FA05290034 +003E401530312C1C001817040A0F2A241E0600361C1C13453510FCECCCCC1739D4CC10EC +D4CC3100400C24950A2A1E95040F8C30173510CC32F432EC32DCEC300114070623222726 +272623220F01062322272635343736373306070615102132373637363332171617163320 +11342726273316171608FA6674EA5B6E61607A787A7BC26E5BEA746643476FF97E5B5501 +008A5D4C4B669D9B644B4A5D8A0100555B7EFA6F464301FEF28B9E444040444480449D8B +F2C6E2EC986BF3E2B6FEBA36333336363333360146B6E2F36B98ECE200010098FFE307A1 +03C50021003C401321001F08020E0D04091D1204022310080B452210FCECCCCC1739D4CC +10ECD4CC3100400C17A9071D12A904098C210D2210CC32F432EC32DCEC30011211102122 +2422042320111013330215103332373637363217161716333211340307178AFE7254FED5 +F0FED452FE728AC692D03E49781564FC641479493FD09203C5FEE3FEEBFE50E2E201B101 +14011DFEB9FAFEFB385B0C37370C5B380107F80147000000FFFF003C0000077205D51026 +03BE00001007002C05DF0000FFFF003E0000068A047B102603DE0000100700F305110000 +00020073FFE307D005F00009001C00000020001110002000111017211133112311210200 +2120001110002120000401FE48FEFF010101B80103D20130CACAFED00EFE98FEC5FEC6FE +880178013A013B0168054CFEB8FEE5FEE6FEB80148011A011BC50296FA2B0295FEE8FE66 +01A50161016201A5FE67000000020070FFE305FB047B000A001C00000122061514163332 +361026013311331123112306002322001110002012027293ACAC9395ABAC0168D5B8B8D0 +09FEF9F1F0FEEE011201E0F903DFE9C7C8E8E70192E7FEC201BFFBA00209F8FED2013901 +1301140138FEE400000200D3000007BF05D5000F00120000013301230321032313211123 +1133112109012104A1E50239D288FD5F88D5FCFE3ACACA0207016FFEEE022505D5FA2B01 +7FFE810295FD6B05D5FD6A01CFFD1900000200C1FFE30604047B0022002D000001112335 +0E012322263534372111231133112136332135342623220607353E013332160122061514 +163332363D010604B83FBC88ACCB2FFEF8B8B801D26A950102A79760B65465BE5AF3F0FE +91DFAC816F99B9027FFD81AA6661C1A27350FDF70460FE4122127F8B2E2EAA2727FCFEB4 +667B6273D9B4290000020065FEBF080805D50012001A0000373637121901211521113311 +231123211123110121151003060721AC862661064FFD29AAAACAFCA8AA0402FE1B701728 +0294AA3F7801340226011AAAFB7FFE150141FEBF01EB0481D4FE0DFEB5442B000002006B +FEE506E7046000120019000037363736113521152111331123112321112311012115100F +0121B05B28620552FDA39393B9FD2D930366FE7D761D0216932855D301A9D493FCC6FE52 +011BFEE501AE033A8CFE64DC36000000000100540000081105D500110000333536373611 +35211521112311211510030654DD3A57064FFD29CAFE1B6662AA30A3F60264FEAAFAD505 +2BB8FDCAFEF8FD000001004C000006D104600012000033353637361135211521112B0111 +21151007064CBB33440553FDA301B8FE7B585E991D7DA601D0B793FC3303CD6FFE50C2CF +000100C9000008F605D5000F000013210901211521112B01110123011123C9012D017D01 +7F0404FD29C505FE84CBFE7FC405D5FC0803F8AAFAD50512FC0D0400FAE10000000100BA +000007AC0460000E0000132109012115211123110123011123BA010D013E013F0368FDA3 +B9FECBB8FECAB90460FD1202EE93FC3303B0FD2702D9FC50FFFF0073FFE305D905F01027 +007901E20000100600320000FFFF0071FFE30475047B10260052000010070079012EFF84 +00040073FFE3066505F0000300070013001D000001331523253315231220272610373620 +17161007002000111000200011100231D3D301A4D3D3F1FD4CD0CFCFD002B4D0CFCFFEC8 +FE1AFEE0012001E601200346FEFEFEFD9BD2D202C4D3D2D2D3FD3CD20497FEB8FEE5FEE6 +FEB80148011A011B00040071FFE30543047B000300070012001E00000133152325331523 +032206101633323635342627200011100021200011100001BCD3D30168D3D34AC3E3E1C5 +C2E3E3C201200149FEB7FEE0FEDFFEB8014802CAFEFEFE0213E7FE6EE7E8C8C7E99CFEC8 +FEECFEEDFEC701390113011401380000FFFF0073FFE30A6A05F010261323000010270079 +067200001007007901E20000FFFF0071FFE307B6047B10270079046FFF8410270079012E +FF84100613240000000F003AFE5706CE05F100030007000B000F00130017001F0027002F +0037003F0047004F00800084000025331523253315230133152325331523013315232533 +152300220614163236341222061416323634242206141632363412220614163236342422 +061416323634002206141632363424220614163236341332161514062B01161514062027 +26270607062026353437222322263534363B012635343620171617363736201615140701 +331523044A8686FDEF868602118686FDEF8686FEF8868604228686FC7BB46969B468A0B4 +6969B46801A9B46969B468A1B46969B468FD86B46969B468FE90B46969B46801A9B46969 +B468478DABAB8D0434ABFEE355160F0F1555FEE2A93302018FABAB8F0232A9011E55150F +0F1655011DAB34FDAF8686169C9C9C05499C9C9CFE469C9C9C015D8EF78E8EF702E48FF6 +8E8EF68F8FF68E8EF6FE398EF78E8EF78E8EF78E8EF7FE378EF78E8EF78E8EF78E8EF703 +52CCACA9CC5C85ABCB641B1D1D1966CAAC855CCAABACCC5A85ABCC651A1D1D1A65CCAB85 +5AFED29C0001FFFAFE66061005D5001D0000032115211121321716151110062B01353332 +3736351134262321112311210604EFFDEE01A1BA716DCCE44C3E8638377C7CFE88CBFDEE +05D5AAFE467772EEFECEFEF2F4AA4B4BC201229F9EFD39052B0000000001003CFE560548 +0460001F000013211521113320171615111407062B013533323736351134272623211123 +11213C0431FE42FA010746525251B5C1AC6E2126262C8BFEFCB5FE42046093FEAA4751E5 +FEF2D561609C3037930108A62429FE1903CD00000001FFFA000004E905D5000F00000321 +15211114163B01152322261901210604EFFDEE6D863F4DE3CDFDEE05D5AAFCD7C296AAF4 +010E03290001003C0000046D04600011000013211521111417163B011523222726351121 +3C0431FE4623236D586EB65053FE45046093FDBE912E309C6062D40237000000000100AF +000004B305D50017002A400B19081C06130C001C0F041810FCEC32CCD4ECCC3100400A02 +950BAD15951281070E2F3CF4ECF4EC300115213216151123113426232111231134363321 +15232206017A01A1BADEC97C7CFE88CBA3B50109E0694D043FCEE9EEFE66018A9F9EFD39 +043FD6C09C610000FFFF00BA000004640614100602280000000200D60000031D05580003 +000700001333152301113311D6AAAA01BF88055888FB300558FAA800000200D60000031D +05580003000700001333152301113311D6AAAA01BF88042488FC640558FAA800000200D6 +0000031D05580003000700001333152301113311D6AAAA01BF8802F088FD980558FAA800 +000200D60000031D05580003000700001333152301113311D6AAAA01BF8801BC88FECC05 +58FAA800000200D60000031D05580003000700003733152301331123D6AAAA01BF888888 +880558FAA8000000000200D60000031D055800030007000001331523012311330273AAAA +FEEB8888055888FB30055800000200D60000031D05580003000700000133152301231133 +0273AAAAFEEB8888042488FC64055800000200D60000031D055800030007000001331523 +012311330273AAAAFEEB888802F088FD98055800000200D60000031D0558000300070000 +01331523012311330273AAAAFEEB888801BC88FECC055800000200D60000031D05580003 +0007000025331523212311330273AAAAFEEB888888880558000100D60000031D05580005 +0000212311211521015E880247FE410558880000000100D60000031D0558000700002123 +113311211521015E888801BFFE410558FECC8800000100D60000031D0558000700002123 +113311211521015E888801BFFE410558FD988800000100D60000031D0558000700002123 +113311211521015E888801BFFE410558FC648800000100D60000031D0558000500002521 +15211133015E01BFFDB988888805580000010066029C028E05E400090000013317072711 +23110727015E39F74C926B934C05E4DD4383FD5502AB8343000100660298028E05E00009 +000001232737171133113717019739F84C936B924C0298DD438302ABFD558343000200C3 +029C014305E000030009000013331523113311072327C38080800D660D032A8E0344FE91 +C8C80000000200C3029C014305E00003000900000123353311231137331701438080800C +660E05528EFCBC016FC8C800FFFF00C3000001430344100712FF0000FD64000000010089 +000002CD05D4001000003335200221352002213520131607161312CF014A14FEB6014A1E +FEA2021D0E09AEB8060AA30227A301C5A2FE8CE5636DFEFBFE5A00000001008900000291 +0460001000003335200221352002213520131607161712BB012C14FED4012C1EFED401E1 +0E08848F060A99017C99011A98FEE89E4D59BCFEB80000000001007301CB034A05F00009 +000001101707023510211520012D75A48B02D7FDE303CDFEFED22E0131D40220DB000000 +000100730056034A047B0009000001101707023510211520012D75A48B02D7FDE30258FE +FED22E0131D40220BD000000000100C9FE66053B05D5001300001333112111331110062B +01353332363511211123C9CA02DECACDE34D3F866EFD22CA05D5FD9C0264FA93FEF2F4AA +96C2025FFD390000000100BAFE5604640614001C00000134262322061511231133113E01 +333216151114062B0135333237363503AC7C7C95ACB9B942B375C1C6A3B546316E212602 +9E9F9EBEA4FD870614FD9E6564EFE8FD48D6C09C303892000001FFFAFE4C068D05D5002A +000003211521152115013217161716151407062122272627351617163332373635342726 +2B01350121112311210604EFFDEE035EFE6569816355519898FEE8738182826A7F7E89C0 +63645C5DA5AE0181FD9ECBFDEE05D5AACB9AFE16382B6C688ADC7A79131324C33119194B +4B8F86494A9801EAFC4A052B00010037FE4C0534059E0030000001321716171615140421 +22272627351E0133323736353427262B013501211114163B011523222635112335331133 +11211503416981635551FED0FEE85E63646A54C86DBE63645C5BA7AE01AEFD6A4B73BDBD +D5A28787B9036501DC382B6C688ADDF2121325C331324B4B8F844B4AA601F3FDA4894E9A +9FD202608F013EFEC2A80000FFFF00A4FFE3047B05F010060152000000010085FE6703C8 +047C003100000126272635343736333216171526272623220706151417163B0115232207 +0615141716333237363715060706232224353436018B703C3C7271C44CAA626150514781 +3B464443749B9489484E545597615155475A545550EEFEFE8A01AC2056557BBA68681A26 +B62D14153E486D6D4645984D55858855551C1C38BE251312F0E58FC1000100BA0000037E +04600009000013211521112115211123BA02C4FDF601D5FE2BBA046094FED394FDF50000 +FFFF006FFFE303C7047B10060056000000030010000009EE05D5000F0012001500000133 +09013301230321032B0103210323090121090121024AE501D001D1E50239D288FD5F8803 +D288FD5F88D502ACFEEE02250373FEEE022505D5FB3E04C2FA2B017FFE81017FFE81050E +FD1902E7FD1900000004007BFFE30727047B000A00350040004D00000122061514163332 +363D01251123350E012322271523350E01232226353436332135342623220607353E0133 +32173017353E013332160122061514163332363D010116173633213534262322070602BE +DFAC816F99B903B2B83FBC886E51B83FBC88ACCBFDFB0102A79760B65465BE5AF3781265 +BE5AF3F0FE91DFAC816F99B9FD88350179C70102A797605B410233667B6273D9B4294CFD +81AA6661270AAA6661C1A2BDC0127F8B2E2EAA27277E14442727FCFEB4667B6273D9B429 +01686EA63C127F8B1710000000030010FFE3092D05F00013001600200000013313363736 +212000111000212027262721032309012100200011100020001110024AE5B82D70BC013B +013A0178FE88FEC6FEC5BC502EFD6788D502ACFEEE02250388FE48FEFD010301B8010105 +D5FE1EAE7DD2FE5BFE9EFE9FFE5BD25872FE81050EFD190325FEB8FEE5FEE6FEB8014801 +1A011B000003007BFFE3077B047B0022002D00380000013200111000202726270E022322 +26353436332135342623220607353E01332017360122061514163332363D010122061016 +3332363534260579F00112FEEEFE1F88372112608CB2B1CCFDFB0102A79760B65465BE5A +012A718AFE4FDFAC816F99B9020494ACAB9593ACAC047BFEC8FEECFEEDFEC79D3E524587 +61C1A2BDC0127F8B2E2EAA2727BDBDFDB8667B6273D9B42901ACE7FE6EE7E8C8C7E90000 +00020010FFE3087105D50002001600000901210133011621323635113311100021200327 +21032302BCFEEE0225FE7BE501BC4A0101C2AECBFEDFFEE6FE737625FD5F88D5050EFD19 +03AEFB72C0D3F0038BFC5CFEDCFED6013468FE810002007BFFE3071F047B002800330000 +250E01232226353436332135342623220607353E01333216111514163332363511331123 +350E0123200122061514163332363D01039348A2B2B1CBFDFB0102A79760B65465BE5AF3 +F07C7C95ADB8B843B175FEE5FEDBDFAC816F99B9DF8D6FC1A2BDC0127F8B2E2EAA2727FC +FF00BE9F9FBEA4027BFBA0AC66630250667B6273D9B4290000020010000007B405D50002 +000D0000090121130321032301330901330102BCFEEE0225C788FD5F88D5023AE501DC01 +D7D2FDC7050EFD19FDD9017FFE8105D5FB1F04E1FA2B00000002007BFFE3064E047B000A +002800000122061514163332363D0111350E01232226353436332135342623220607353E +01333216190101330102BEDFAC816F99B93FBC88ACCBFDFB0102A79760B65465BE5AF3F0 +015EC3FE5C0233667B6273D9B429FDCDAA6661C1A2BDC0127F8B2E2EAA2727FCFF00FE35 +03ACFBA000030010000007B405D500020012001500000901290215210323032103230133 +0133013301231702BCFEEE0225027E0167FE5992E588FD5F88D5023AE50167E90163D2FD +8B6935050EFD19A8FE81017FFE8105D5FC5203AEFBAA8B000003007BFFE3064E047B0022 +002D0030000021350E01232226353436332135342623220607353E013332171617331333 +03331523030122061514163332363D0121231103753FBC88ACCBFDFB0102A79760B65465 +BE5AF378670FC69AC39B9BD1D3FE14DFAC816F99B901478FAA6661C1A2BDC0127F8B2E2E +AA27277E6DCD019DFE6390FDCD0233667B6273D9B429FE8100020010FE56079B05D50002 +00180000090121010607062B0135333237363F0103210323013309013302BCFEEE022501 +6C4B4D4A7CD8AB4C2A2B321388FD5F88D5023AE501CF01CBD2050EFD19FD71C63F3DAA24 +258532017FFE8105D5FB4004C00000000002007BFE56064E047B00270032000021350E01 +232226353436332135342623220607353E0133321619010133010E012B01353332363F01 +0122061514163332363D0103753FBC88ACCBFDFB0102A79760B65465BE5AF3F0015EC3FE +144E947C936C4C54331AFEF4DFAC816F99B9AA6661C1A2BDC0127F8B2E2EAA2727FCFF00 +FE77036AFB38C87A9A4886420233667B6273D9B429000000FFFF0073FFE3052705F01006 +03930000FFFF007FFFE303F5047B1006031900000001000A0000056A05D5001200001333 +1533152311012109012101112311233533C9CABFBF029E0104FD1B031AFEF6FD33CABFBF +05D5B9AAFEEC0277FD48FCE302CFFD310472AA000001000E000004A40614001200001333 +1521152111013309012301112311233533C2B90122FEDE0225EBFDAE026BF0FDC7B9B4B4 +0614ACA4FDB901E3FDF4FDAC0223FDDD04C4A400000100C90000056605D5000900001311 +3311371121152111C9CAFC02D7FC5F02AD0328FD5E4DFD2AAA02FA00000100C100000263 +0614000700001311331137112311C1B8EAB8029C0378FD0549FC9E02E500000000010053 +0000049C05D5000D00001333153315231121152111233533FBCAA8A802D7FC5FA8A805D5 +E0A4FC59AA0451A400010078000002F20614000B00000133113315231123112335330159 +B8E1E1B8E1E10614FEE2A4FBAE0452A40003000AFFE3066A05F00015001D002500000120 +171613331523020706212027260323353312373604200706072126271321161716203736 +033B013ABCA117817E0BB0BCFEC6FEC5BCB10B7E8117A2BC0217FE48816A1403B413697F +FC460A778101B8817605F0D2B5FEE390FEBEC4D3D2C4014390011DB5D2A4A486D6D686FE +14FA97A4A49700000003000AFFE3058E047B0015001E0027000001321716173315230607 +06232227262723353336373617220706072126272613211617163332373602CDF0896F15 +C4C00A7E89F0F1887E0AC2C6156F88F194563F110273113F56ABFD83084C569593564D04 +7B9C7ECD90F4909D9D90F490CD7E9C9C735583815575FE25AB6773746700000000030073 +FFE30A6A05F0001A0024002E000001201716173637362120001110002120272627060706 +212000100004200011100020001110002000111000200011100327013ABC2F23232EBD01 +3B013A0178FE88FEC6FEC5BD2E24232EBCFEC6FEC5FE8701790217FE48FEFD010301B801 +010390FE48FEFD010301B8010105F0D2353D3D35D2FE5BFE9EFE9FFE5BD2343D3C34D301 +A402C401A5A4FEB8FEE5FEE6FEB80148011A011B0148FEB8FEE5FEE6FEB80148011A011B +00030071FFE307B6047B000A001500310000012206101633323635342621220610163332 +363534262732171617363736333200111000232227262706070623220011100005B494AC +AB9593ACACFC2C94ACAB9593ACAC93F0891512121589F1F00112FEEEF0F1891512121589 +F0F1FEEF011103DFE7FE6EE7E8C8C7E9E7FE6EE7E8C8C7E99C9C181B1B189CFEC8FEECFE +EDFEC79D181B1B189D01390113011401380000000002000A0000048D05D50008001D0000 +0111333236353426232521321716151407062B01153315231123112335330193FE8D9A9A +8DFE3801C8FB80818180FBFEEDEDCABFBF052FFDCF92878692A67172DBDD7171C490FEFC +010490000002FFFBFE5604A4047B0007001F000000102620061016200135331133153E01 +3332001002232226271133152315233503E5A7FEDCA7A70124FCBDBFB93AB17BCC00FFFF +CC7BB13AFEFEB901640196E7E7FE6AE7FE679004ECAA6461FEBCFDF0FEBC6164FECC908E +8E000000000200320000059905D5001E00270000012132041514042B0111231123220706 +151617161707262726353437363B0332363534262B0101D501C8FB0101FEFFFBFECA2D5C +303A011A173C444F45467F61A221CAFE8D9A9A8DFE05D5E3DBDDE2FDA80258181F3D3527 +20189417494B7D934C3B92878692000000020032FE5605C2047B000C0031000001171633 +323736353426200615032623220706151417161707262726353437363332171133153E01 +3332001002232227112302910A9D928E5853A7FEDCA7B933292C343A1B173C444F45467F +54673537B93AB17BCC00FFFFCAC0A8B901320BAA7370CFCBE7E7CBFEE319181B41342820 +189417494B7D86593B1702A6AA6461FEBCFDF0FEBCA2FDD100020073FE9405D905F00009 +002300000020001110002000111001273727070623200011100021200011100207173717 +071723270403FE48FEFD010301B80101FE8048AA6B33120FFEC5FE870179013B013A0178 +D1C645D748BC62F40E054CFEB8FEE5FEE6FEB80148011A011BFA907D6274030101A50161 +016201A5FE5BFE9EFEFCFE8E584B7C7D6C6B0F0000020071FE560519047B0017001F0000 +250E01232202100033321617353311331523152335233521001016203610262003A23AB1 +7CCBFF00FFCB7CB13AB8BFBFB8FF00FFFD8DA70124A8A8FEDCA864610144021001446164 +AAFB14908E8E900386FE6AE7E70196E70002000A0000048D05D50007001B000001113332 +361026230133153315231533320410042B011123112335330193FE8D9A998EFE38CAEDED +FEFB0101FEFFFBFECABFBF0427FDD192010C9101AE2D904BE1FE48E2FEAE051890000000 +0002FFFBFE5604A406140007001F00000010262006101620251123112335333533153315 +23113E01333200100223222603E5A7FEDCA7A70124FE35B9BFBFB9FEFE3AB17BCC00FFFF +CC7BB101640196E7E7FE6AE72BFDAE069B90939390FEC56461FEBCFDF0FEBC610002000A +0000048D05D50007001B0000011133323610262301331133320410042B01153315231523 +352335330193FE8D9A998EFE38CAFEFB0101FEFFFBFEEDEDCABFBF0427FDD192010C9101 +AEFEF8E1FE48E25E906464900002FFFBFE5604A406140007001F00000010262006101620 +0135331133113E013332001002232226271133152315233503E5A7FEDCA7A70124FCBDBF +B93AB17BCC00FFFFCC7BB13AFEFEB901640196E7E7FE6AE7FE679006A0FDA26461FEBCFD +F0FEBC6164FECC908E8E00000001000B000003AC05D50005000021231121352103ACCAFD +2903A1052BAA0000000200C1FE560179047B0000000400000107331123011D5CB8B8047B +1BF9F600000100C9FE56060E05F0001A0000011114163315222619013426232206151123 +11331536373633321205196F86F1CD9A99B3D7CACA5166659EE3E9037DFE85C296AAF401 +0E017DD7D5FFDEFB08077FF1874342FEC1000000000100BAFE56051A047B001900000111 +141633152226271134262322061511231133153E0133321604644A6CCAA3017C7C95ACB9 +B942B375C1C602A4FEE78E619CC1D501089F9EBEA4FBDD060AAE6564EF000000FFFF00F0 +000001C304231206001D0000000200A001490262030B0003000700000121352135213521 +0262FE3E01C2FE3E01C20149969696000001013501E1020005D50005003A400B03008106 +0403010300000610FC4BB00B5458B90000FFC03859EC3939310010E4CC400920035F03B0 +03EF03045D3001B6000720075007035D0133110323030135CB14A21505D5FD71FE9B0165 +000100C503AA016F05D500030037400A0184008104000502040410FC4BB012544BB01354 +5B58B90002FFC03859EC310010F4EC3001400D40055005600570059005A005065D011123 +11016FAA05D5FDD5022B0000FFFF00AF000004B305D5120603BB00000002004DFE560354 +06140006001F000001262322071433371133113315231114163B01152322263530032320 +37363332019217374D015C50B8FAFA3D783146BF99023CFEE80101F5350312844B39FA02 +08FCFEA0FD707C749CCCCA0286BDF600000100C9FEBF05DD05D5000D0000132101113311 +3311231121011123C901100296C4AAAAFEF0FD6AC405D5FB1F04E1FAD5FE15014104E1FB +1F000000000100BAFEE504F7047B00170000011133112311231134262322061511231133 +153E0133321604649393B87C7C95ACB9B942B375C1C602A4FDEFFE52011B029E9F9EBEA4 +FD870460AE6564EF00010004FFE3063905F0002800002511213521110604232427262707 +27372635100021320417152E01232007060301170116171621323604C3FEB6021275FEE6 +A0FEA2C68D28542B7001018B015E9201076F70FC8BFEEF8A870304C62BFB16196A8A0111 +6BA8D50191A6FD7F535501CC92E21C7F251E1F016E01994846D75F609997FED901957FFE +5FCF77992500000000030004FE560510047B00260030003A000025100221222627351E01 +3332363D010E012322272627072737263510123332161735331137170F01051617163332 +36353427262726232206151417045AFEFEFA61AC51519E52B5B439B27CCE7E431F682174 +07FCCE7CB239B89521B6B9FD9F142E529495A50D1332529694A5028BFEE2FEE91D1EB32C +2ABDBF5B63629D5370236327383E0104013A6263AAFEB132633D3DCB573C6EDCC7157E62 +416EDCC81D1C0000000200040000056A05D5001300160000133311012101172517050121 +0107112311072737252715C9CA029E0104FD1B7902522BFDED0237FEF6FE0BD8CA9A2BC5 +01386E05D5FD890277FD487AC57FB0FDC701F748FE51016C337F41686E93000000020004 +0000049E06140013001600001333110133011725170501230107112335072737252715BA +B90225EBFDAE5E01EE21FE4601B8F0FE85BEB99521B60122690614FC6901E3FDF45BA462 +93FE58016C3FFED3F032633C6165880000030004000005F805D500130016001900001321 +012511331137170711210105112311072737250311251311C90110015E0138C49A2BC5FE +F0FEA6FEC4C49A2BC501C0FC01EAF805D5FD6B67022EFE13337F41FCA5028E69FDDB01E4 +337F419501DBFDD116FE2C02260000000002000400000510047B00170020000001112311 +051123110727371133153E013336171617371707272627262322061D010464B8FDC7B995 +21B6B942B375C1634A139121ACBA09333E7C95AC02A4FD5C026ABEFE54016F32633D0283 +AE6564017859993163393075404FBEA45F000000000300040000058B05D5001D0024002B +0000011E01171323032E012B01112311072737112120171617371707161514062D012627 +26272311153316373637038D417B3ECDD9BF4A8B78DCCA9A2BC501C801007E491FE92BFF +0183FD890219122C4A93FEFE934A3D0B02BC16907EFE68017F9662FD890301337F420246 +6B3E644E7F550D0E8DBAF2B33F284201FE16280144386300000100040000034A047B0019 +0000012E012322061D012517051123110727371133153E0133321617034A1F492C9CA701 +B221FE2DB99521B6B93ABA85132E1C03B41211CBBE3490629CFE54016F32633C0284AE66 +6305050000010004FFE3051005F0002F000001152E012322061514161F01251705161716 +15140421222627351E013332363534262F01052725262726353424333216044873CC5FA5 +B377A65402222BFE9957366CFEDDFEE76AEF807BEC72ADBC879A61FDE22B01654D306501 +17F569DA05A4C53736807663651F11B57F7727386CB6D9E0302FD04546887E6E7C1F13B4 +7F77222E60ABC6E42600000000010004FFE30427047B002F000001152E01232206151416 +1F0125170516171617140623222627351E013332363534262F0105272526272635343633 +3216038B4EA85A898962942D01BA21FED64B2C5201F7D85AC36C66C661828C65AB24FE4F +2101233E264CE0CE66B4043FAE282854544049210A93636320284C899CB62323BE353559 +514B5025089063611B264A839EAC1E000001FF970000059F05D500140000010E011D0123 +3534363B0111211133112311211123012D84769CC0D6CA02DECACAFD22CA0530015E6931 +46B5A3FD9C0264FA2B02C7FD390000000002007F029C041F05E000130017000013331521 +3533153315231123112111231123353317152135E88001CE7F6A6A7FFE328069698001CE +05E07D7D7D5CFD95018EFE72026B5C5C7E7E000000030047028C04E4051E000600270031 +0000012E01232206070515211E0133323637150E01232226270E01232226353436333216 +173E0133321624220614163332363534046F0167576075080211FDEB088073437E3E3F83 +436598332D845898ACAC9858852A31925A8EA7FD04BA6D6C5E5D6C040E556461591E326A +701D1D6118183D3D3E3CAF9A9BAE3E3C3C3EA34C81E28182706F0000FFFF00BA00000698 +0460120603DC000000010077000003D105D5000900000111231121352111213503D1CAFD +B00250FD7005D5FA2B02C9AA01B8AA00000200460000040A05D500080013000001232206 +1514163B0113112311232224353424330340FE8D9A9A8DFECACAFEFBFEFF0101FB052F92 +86879202D7FA2B0258E2DDDBE3000000000100C90000061F05D5000C0000331133110133 +01113311210901C9C40181CB0181C5FED3FE81FE8305D5FAE10400FC00051FFA2B03F8FC +08000000000100C900000193076D0003000013331123C9CACA076DF89300000000010044 +0000095505D5000F00002501330901330123090123090123013303F4013EE3013A0139CD +FE89FEFEC5FEC2E3FEC6FEC7CD0177FEC50510FB1204EEFA2B0510FAF004EEFB1205D500 +000100C204D00295055800030011B601A9020403010410C4D4310010D4EC300121352102 +95FE2D01D304D0880001008D039C02BD0558000400001327013315D649020828039C7301 +498800000001006E026802E405580005000001230127013302E410FE026802274F04D0FD +9857029900010060013402F205580005000001230127013302F20EFDF27602355D04D0FC +644403E00001005A000002F905580005000001230127013302F90BFDE87C023B6404D0FB +303705210001008D039C02BD0558000400001301152301D601E728FDF80558FECC880149 +FFFF00C2039C029504241007134E0000FECC0000FFFF008D026802BD04241007134F0000 +FECC0000FFFF006E013402E40424100713500000FECC0000FFFF0060000002F204241007 +13510000FECC00000001006E026802E405580005000001152301370102E44FFDD96801FE +02F088029957FD98FFFF008D026802BD0424100713530000FECC0000FFFF00C202680295 +02F01007134E0000FD980000FFFF008D013402BD02F01007134F0000FD980000FFFF006E +000002E402F0100713500000FD98000000010060013402F2055800050000011523013701 +02F25DFDCB76020E01BC8803E044FC64FFFF006E013402E40424100713580000FECC0000 +FFFF008D013402BD02F0100713530000FD980000FFFF00C20134029501BC1007134E0000 +FC640000FFFF008D000002BD01BC1007134F0000FC6400000001005A000002F905580005 +000025152301370102F964FDC57C02188888052137FB3000FFFF0060000002F204241007 +135D0000FECC0000FFFF006E000002E402F0100713580000FD980000FFFF008D000002BD +01BC100713530000FC640000FFFF00C20000029500881107134E0000FB300007B1000400 +103C3000000100D60000015E05580003000EB502010008030410D4EC3100C4C433113311 +D6880558FAA80000000E00960000073A05DC00030007000B000F00130017001B001F0023 +0027002B002F0033003701DAB72F243028372C343810DC3CDC3C3C3C3CB61F232B20331C +27DC3C3C3C3CDC3CB6140C1B13081018DC3CDC3C3C3C3CB603070F0417000BDC3C3C3C3C +DC3CB039CCB0584B5258B038104BB00A626620B0005458B133303C3C5920B0405458400A +33302F2C37342B2827243C3C3C3C3C3C3C3C3C3C5920B0805458B323202F2C3C3C3C3C59 +20B0C05458B337342F2C3C3C3C3C5920B801005458B52B28272437343C3C3C3C3C3C5920 +B801405458B337341F1C3C3C3C3C5920B801805458B11F1C3C3C5920B801C05458B72B28 +333037342F2C3C3C3C3C3C3C3C3C59B8100062B80280634B236120B0005458B117143C3C +5920B0015458400A0F0C1B18171413100B083C3C3C3C3C3C3C3C3C3C5920B0025458B307 +0413103C3C3C3C5920B0035458B313101B183C3C3C3C5920B0045458B51B180B080F0C3C +3C3C3C3C3C5920B0055458B303001B183C3C3C3C5920B0065458B103003C3C5920B00754 +58B7131017141B180F0C3C3C3C3C3C3C3C3C59B0095458B11B183C3C591BB60F0C2B2827 +2438103C3C3C3C3C3CB7070403000B0817143C3C3C3C3C3C3C3C593100B7040D18203429 +0C282F3CDC3C3C3C3C3CB5051419213035DC3C3C3C3C3CB50015101C312CDC3C3C3C3C3C +B709250108111D242DDC3C3C3C3C3CDC3C30011133110311331101352115013521150111 +331115352115011133110111331103113311013521150135211501113311153521150111 +331106D6646464FD760226FDDA0226FD76640226FD7664FE70646464FD760226FDDA0226 +FD76640226FD76640325024EFDB2FD44024EFDB2050F6464FA8864640325024EFDB26964 +64FDAD024EFDB202BC024EFDB2FD44024EFDB2050F6464FA8864640325024EFDB2696464 +FDAD024EFDB20000000E00960000073A05DC00030007000B000F00130017001B001F0023 +0027002B002F0033003701E0B72F243028372C343810DC3CDC3C3C3C3CB61F232B20331C +27DC3C3C3C3CDC3CB6140C1B13081018DC3CDC3C3C3C3CB603070F0417000BDC3C3C3C3C +DC3CB039CCB058004B015258B03810004B01B00A626620B0005458B133303C3C5920B040 +5458400A33302F2C37342B2827243C3C3C3C3C3C3C3C3C3C5920B0805458B323202F2C3C +3C3C3C5920B0C05458B337342F2C3C3C3C3C5920B801005458B52B28272437343C3C3C3C +3C3C5920B801405458B337341F1C3C3C3C3C5920B801805458B11F1C3C3C5920B801C054 +58B72B28333037342F2C3C3C3C3C3C3C3C3C59B8100062B8028063004B01236120B00054 +58B117143C3C5920B0015458400A0F0C1B18171413100B083C3C3C3C3C3C3C3C3C3C5920 +B0025458B3070413103C3C3C3C5920B0035458B313101B183C3C3C3C5920B0045458B51B +180B080F0C3C3C3C3C3C3C5920B0055458B303001B183C3C3C3C5920B0065458B103003C +3C5920B0075458B7131017141B180F0C3C3C3C3C3C3C3C3C59B0095458B11B183C3C591B +B60F0C2B28272438103C3C3C3C3C3CB7070403000B0817143C3C3C3C3C3C3C3C593100B7 +040D182034290C282F3CDC3C3C3C3C3CB5051419213035DC3C3C3C3C3CB50015101C312C +DC3C3C3C3C3CB709250108111D242DDC3C3C3C3C3CDC3C30011133110311331101352115 +013521150111331115352115011133110111331103113311013521150135211501113311 +153521150111331106D6646464FD760226FDDA0226FD76640226FD7664FE70646464FD76 +0226FDDA0226FD76640226FD7664031B0258FDA8FD440258FDA805196464FA886464031B +0258FDA85F6464FDA30258FDA802BC0258FDA8FD440258FDA805196464FA886464031B02 +58FDA85F6464FDA30258FDA8000E00960000073A05DC00030007000B000F00130017001B +001F00230027002B002F0033003701DAB72F243028372C343810DC3CDC3C3C3C3CB61F23 +2B20331C27DC3C3C3C3CDC3CB6140C1B13081018DC3CDC3C3C3C3CB603070F0417000BDC +3C3C3C3CDC3CB039CCB0584C5258B038104CB00A626620B0005458B133303C3C5920B040 +5458400A33302F2C37342B2827243C3C3C3C3C3C3C3C3C3C5920B0805458B323202F2C3C +3C3C3C5920B0C05458B337342F2C3C3C3C3C5920B801005458B52B28272437343C3C3C3C +3C3C5920B801405458B337341F1C3C3C3C3C5920B801805458B11F1C3C3C5920B801C054 +58B72B28333037342F2C3C3C3C3C3C3C3C3C59B8100062B80280634C236120B0005458B1 +17143C3C5920B0015458400A0F0C1B18171413100B083C3C3C3C3C3C3C3C3C3C5920B002 +5458B3070413103C3C3C3C5920B0035458B313101B183C3C3C3C5920B0045458B51B180B +080F0C3C3C3C3C3C3C5920B0055458B303001B183C3C3C3C5920B0065458B103003C3C59 +20B0075458B7131017141B180F0C3C3C3C3C3C3C3C3C59B0095458B11B183C3C591BB60F +0C2B28272438103C3C3C3C3C3CB7070403000B0817143C3C3C3C3C3C3C3C593100B7040D +182034290C282F3CDC3C3C3C3C3CB5051419213035DC3C3C3C3C3CB50015101C312CDC3C +3C3C3C3CB709250108111D242DDC3C3C3C3C3CDC3C300111331103113311013521150135 +211501113311153521150111331101113311031133110135211501352115011133111535 +21150111331106D6646464FD760226FDDA0226FD76640226FD7664FE70646464FD760226 +FDDA0226FD76640226FD76640325024EFDB2FD44024EFDB2050F6464FA8864640325024E +FDB2696464FDAD024EFDB202BC024EFDB2FD44024EFDB2050F6464FA8864640325024EFD +B2696464FDAD024EFDB20000000E00960000073A05DC00030007000B000F00130017001B +001F00230027002B002F0033003701E0B72F243028372C343810DC3CDC3C3C3C3CB61F23 +2B20331C27DC3C3C3C3CDC3CB6140C1B13081018DC3CDC3C3C3C3CB603070F0417000BDC +3C3C3C3CDC3CB039CCB058004C015258B03810004C01B00A626620B0005458B133303C3C +5920B0405458400A33302F2C37342B2827243C3C3C3C3C3C3C3C3C3C5920B0805458B323 +202F2C3C3C3C3C5920B0C05458B337342F2C3C3C3C3C5920B801005458B52B2827243734 +3C3C3C3C3C3C5920B801405458B337341F1C3C3C3C3C5920B801805458B11F1C3C3C5920 +B801C05458B72B28333037342F2C3C3C3C3C3C3C3C3C59B8100062B8028063004C012361 +20B0005458B117143C3C5920B0015458400A0F0C1B18171413100B083C3C3C3C3C3C3C3C +3C3C5920B0025458B3070413103C3C3C3C5920B0035458B313101B183C3C3C3C5920B004 +5458B51B180B080F0C3C3C3C3C3C3C5920B0055458B303001B183C3C3C3C5920B0065458 +B103003C3C5920B0075458B7131017141B180F0C3C3C3C3C3C3C3C3C59B0095458B11B18 +3C3C591BB60F0C2B28272438103C3C3C3C3C3CB7070403000B0817143C3C3C3C3C3C3C3C +593100B7040D182034290C282F3CDC3C3C3C3C3CB5051419213035DC3C3C3C3C3CB50015 +101C312CDC3C3C3C3C3CB709250108111D242DDC3C3C3C3C3CDC3C300111331103113311 +013521150135211501113311153521150111331101113311031133110135211501352115 +01113311153521150111331106D6646464FD760226FDDA0226FD76640226FD7664FE7064 +6464FD760226FDDA0226FD76640226FD7664031B0258FDA8FD440258FDA805196464FA88 +6464031B0258FDA85F6464FDA30258FDA802BC0258FDA8FD440258FDA805196464FA8864 +64031B0258FDA85F6464FDA30258FDA80001006EFFE20436069F00150000011510212011 +351333031510212011353400113316000436FE26FE123BC84501300126FE0FB50101EF02 +A19FFDE002258B0109FEDA73FE80018AB8F901CB0117C5FE070000000002006EFFE20436 +069F0009001C000001122504031510212011371510201135102533362726273314160733 +04038201FEC9FEE10101260130B4FC3801931434868502CFDA25140160029D01670B08FE +8255FE4E01AD4B37FD9F02613C01EB3DA35152B26C9EF3450002006EFFE2048F06B30009 +002100000110212011151021201137151021201135102533362736232215231021200306 +070403D2FEB7FEA30158014EBDFDF1FDEE02075E4D0201BEB6A40157015C010C44012602 +7E01A4FE625FFE5D01A36157FDB3023E7801D64E5C619AC40164FEC18B5572000002006E +000006AF06B30024002E0000253637001135102132173621201115100524113534372623 +2011151001170417212627240701102120031502052413010D637FFE7F01B9A99F650102 +01D9FE27FE342754ADFEFB01A8D4018738FEF80DEEFEFEF50485FEE5FEEF01010113011A +01C34E21015601C66D01F8B3A9FDFF95FDD21E1C0230775F8C9AFEB763FE2DFEB11853D6 +524040B4045D018FFE9E9AFE771D1C016C0000000001006FFFE2043606B3001700000110 +21201B013303102104190134212211172303102120110436FE16FE22015AD06E0127013A +FEE4F353BE4501B201B701C8FE1A01E9012FFED1FEB701014F0373D1FEFFF6010D0189FE +8B0000000001006EFFE2043606B300210000010607161D01102011133303102120113534 +27233533360334230407172327102120040E05CDFAFC3835C43C01270130BEAA5BDC02FC +FEFE0325BA1901B301BB051BE67C73FE7DFE1702010117FEE0FEA8014E73CD28A950010A +DA01F59A9E0190000003006EFFE204CB06B3000900130026000001120722151417363733 +011021201115102120113715102120113534372635102120111407330402D102D6D16866 +C012013DFEC8FEB40147013DC2FDFFFDFD65BE018501910C0B014804DE013601DFB45F63 +09FDE50188FE764BFE5D019B584BFDB80252468DBC94CE018EFE2E25407F00000002006E +FFE206A006B3000900220000011021201901102120112502032124131110232203111021 +20190110213617363320130349FEF3FEED0113010D03570ACCFEF7010817F2D713FE2EFE +3C01CEE09573F701830204920182FE7EFD93FE5C01A49BFE46FEFAE501DB01D20179FEED +FD2DFDBD0243026D022102E6DAFDE9000001006E0000040306B300150000011003231219 +0110232019011013230219011021201104039BC6A4F5FEDBAEC8A401E301B202FBFE8AFE +7B014301B8019A017EFE82FE66FE53FEB201790182019A021EFDE2000001006EFFE20436 +06A0001C000001022120111333031005201135102B013533243534272116151007161104 +3601FE1DFE1C2BCE3C01270130D2DCAF00FFC8011864FAFA01C6FE1C01F30124FEDCFEAE +01014478013CA881AF95B9BE6DFEF76463FE9E000001006E000008EB06B3003500002536 +37240335102132173620173633201115140323123D011223201511231110230615112311 +26212211151205361704012126252401015D7391FE3D3001B7E87064019E6D5EF301AEDF +CDFC01FDFF00ACE3DBAD02FEFEF82D01B27A90020E0112FED028FE99FE9BFEC9A67843F3 +01F07B01EBB2BBBBB2FE1F67BAFE6401B1C83F0147E7FE5A01A6010002FEFE5A01A6E7FE +B779FE41E9170B23FE76A55C5BFEC3000002006EFFE2043406B30009001E000001112627 +201115100520131021201135102532173534212206072310212011038B6AB8FEC3013A01 +25A9FE32FE0801E39E9DFEE1997B01B201BA01D401DA01CB3F01FEC1B8FE95010162FDFE +0202AE01EE144AD1F9716C017CFE630000020082FFE2044A06A00009001B000001102122 +071110212011371510212019011029011521221D013633200396FEC9A8810135012BB4FE +15FE2301510203FE02ACA98C01E902AB014F4BFE26FEAD0144FEFAFE1801E803540182A0 +E6C755000001006E0000068606B300200000011001230019011021221901231110212219 +0110012300190110213217363320110686FEC7E0015EFEF2E5B7FEF7EB013ED7FEDA01BE +DE7882B901C902C2FE66FED8016E015501CF0183FECFFD8202870128FE7DFE31FEA7FE96 +0128019B01CF0221F0F0FDDF0001006EFFE20436069F001E000001151021201137330710 +2120113534272335332435342435331404151407040436FE30FE0814C71D01350121B0DA +730103FE5DDC017BEB00FF01D725FE3001DFB3B3FEC1013F43C02DB63FB0A372F4968EDD +B2796E000001006EFFE2043506C100160000011025201133102120190105041510253504 +27362535250435FE18FE21BE01210133FDD70160FDB801A20102FE5D03C601D1FE0F0202 +4AFE56014F043B3278D6FE7D02B202CEB05FA7820001006E000006E106B3002600000115 +100123001135102520031123111021201115100123001135102524211524033720173633 +2006E1FEA2EF0187FEFBFEF501C0FEE6FEFC0194EBFE990114011502CAFCF2B07D010A8A +75DB01DC031E7CFE62FEFC016201498C014B02FED7FEA2015E0128FEB495FEC1FE9D0104 +019E7701A3FCFBA001FED834F4F4000000010082FFE2044A069F00150000011510212019 +01331110212011353402273733071400044AFE15FE23B4012B0135FC032DC84A01080207 +2DFE080252046BFB6DFE7601494BB3012699D9E67CFEFB000001006EFFE2056A06B30024 +0000010E0107111612333212351134022723132313353315330412071116002120003511 +341237020A84580201D1F1EFCDD6921214BB149312012EFA0101FED7FEA9FEBCFEC7C0DC +05A72FF0B3FEBD98FE880177990140B6014402FCED0311E7445CFE75B1FEB6D1FE2601D6 +D50149B0018D520000010032FFE1042706B3001E00000112212003133303102120190126 +2322171123112627233533321736332011042701FE34FE080438CB440142011D01C2A702 +9F149E938C9B4B69A9017101EEFDF301EA012EFED7FEB2013503B4A954FE68014D8C139F +9F9FFE860002006EFFE2068C06B300090037000001102120111510212011010600212322 +24353314163B01323635102B013537363510212207160715102504113510213217363320 +111007160346FEEFFEF701160104033201FEBFFEE964CFFEB5CBDA824AC6E87F7C3BD4FE +F7856F2603FE49FE2B01C3FD6D8CBB01AAECD8049E0176FE8F8BFE790187FDC0D4FEDED9 +813B80CD890101970289DF013580709472FDD7010102298B0210C7C1FE5AFEE5927B0000 +0001006EFFE20435069F0019000001102120113733071021201901022706071323271005 +321311330435FE16FE2337CC450121013FD0B4C40142B33C016DACDDA901CAFE1801E8DD +DCFEB7014E022401B20201A8FEFFF9015E02FEAA01A200000001006EFFE206BB06B3002A +0000373637001135102132131233201315060323123D0110212019012311102013150201 +161704172126272405FC789AFE6001C6D98978E601C60102AFE5D6FEFDFEF1ABFDEC0201 +01B3765301A538FEF803FDFEEFFEDFB16222011C02204B01F7FEF90107FE2061EBFE9401 +60F2540154FE72FEC00140018DFEA86DFE4DFEAD041270E1526345BE0001006EFFE20434 +06A1001D0000011021201113330310212019010607041135343733061D01100536371133 +0434FE19FE211EC2220121013FA590FE3590E1B30103A49BA801C5FE1D01BB0109FEF3FE +E9014401F8630B0201B928A9C9D49428FEDA010A740239000002006EFFE2043406B30008 +0023000001112623201115022013102120113512211617113423221D0123353421352017 +36332011038C73C7FEDB010260A8FE31FE090101E388B2AEB3A4FEE7011C3655D4014B01 +CB01C649FE9072FE8A015DFE03020C9001F9023D01607CB43A3AB49FC0C0FEB300010083 +0000044A06B3001D0000013734232211153617040315100323123D011005260711231102 +21201307028F10A5C4AE9B01CC01C0DCE8FEDA81B9B3010155017F0114050E9275FEE6E1 +680401FE3D5EFEFDFEA70175B0AE0113010162FC7C04F001C3FEED9200010070FFE204C3 +06A00023000001160704111000200019010213330215111A0117321235262B0135332435 +342437331404049102F80128FEE5FE02FEC60272D78601CCABAFAC03C0D25A0109FEE301 +B801240507AE8C7BFEF6FEE2FEB801480170019D012C013DFE8BF4FE63FEF6FEF201010F +ADFBA365C281918C548800000002006EFFE20434069F0009001500000111262320111510 +2120131021201135102136171133038C7ACAFEE4011C0144A8FE1EFE1C01E4A694A80207 +01A350FE7059FE71016CFDF4023E4A023D0152024900000000020083FFE2044906B3001A +002400001310213217362115201D01233534232215113637201315102120133310212011 +351021220783015BC86025011EFEE7A4A7AFA68A01E102FE09FE3002B301170149FECF89 +A60579013ABDBD9FA04444A09BFE9E5501FE1177FDDB021BFE8501718B0152600002006E +FFE2045C06A0001C00230000012313331523131021201137330710212011032320111021 +332733173301143B01032322045BDC3F9E7E57FE16FE233BCC48012001355EE1FE67019C +5E25C822F2FCEEF2D5448EF50569FEB98DFE35FE1801E8DDDCFEB7014E01C5012D0136A8 +A8FECFA50147000000020082FFE2044A069F000900150000011021060711102120113715 +102120190133113633040396FECBA28801390126B4FE26FE12B5A18901E9028D017F0355 +FE58FE7601806E5FFDD102250498FDBC4E01000000010032FFE203EF06B3002100000107 +2503041706042135203635262527132537053736342623073533321716140F0103EF4DFE +A79101500101FEC9FE990117C901FEFA73E9FE795001816A134A40829C844A4B1E7003CC +8AABFEEB6EDCC6E6A07F7AC028450195BE8CC5C21C5338139B4B4AB237C400000001006E +FFE2043506B30026000001102120113310212011342B0135333235342723353332353421 +233533201114073316151607160435FE18FE21BE0121012D9AE7D39A9AE7E783FE6D7676 +02519702A90183960199FE490204FE9C0117C5B3847901B599B89EFEAA9B614E8794476E +00010078FFE2043E06B2002600000520190133111021201134272335333237262B013533 +3635342135201106072316170607161510025CFE1CB50130012783A9A96C050583A6A66F +FED701E7019F02B60101ADC01E01E6044DFBB3FEBA0112E002B1837DB701B4819EFED2A5 +53677E805C56E1FE4E0000000002006EFF5F043606B30009001F00000110052419011021 +201103323723001901102120190110011633152225230427012C0124012AFED7FEDBBED9 +3F02FEEA01E201E4FEE52EEFC3FEE715FEEEC502D2FE687878019801A201A0FE60FBA953 +0104015E01A6023BFDC1FE5EFEA2FEF84FBEE6E7010000000001006EFFE2043406B5001C +000001102120113533151021201135102B01353324110515231125100504110434FE17FE +25BD01250128F2E47B015BFDB5C103C6FEBA01460196FE4C01D4D3DDFED601149B011AA4 +AD017817EC018F15FDBF9E71FED200000001006EFFE2044206B400200000011021201135 +3315102120111021233533240306230411331421323733150205040435FE18FE21BF0120 +012DFEEAC06E016702A783FE21BE0121DE7D9A0BFED5012901C8FE1A01E68E8EFEBA0146 +0160AD1E01BB6F020177C6C5E1FE80A69C0000000003006EFFE204C106B30007000F0025 +000001212411102120350110290111342120011510212011102523241110212011153315 +231133150384FEC7FEE101260132FDA8011F0139FECEFEDA0309FE16FE23010C01FEF501 +E401E38C8C8C02DE02FECEFED4F40362FEBA019FE3FBDA78FE6C01CC01216A60013F01DB +FE7E97BEFECAB8000002006EFFE2073606B4000A002C0000011134262320131110052013 +1021222715102135203511102122061D0110211520033510243720173621041215067C81 +A6FEDE0201200127BAFE18809AFE2F0114FEDA8B990125FE1D010118CB01048976010101 +27BA03B50103C39AFED9FE6BFED4010184FDDD879EFE6CA0F4037801279BC2FDFEAFA501 +F6FD0101FA01D8D801FEC4BF0003007AFE1E06F906870007000F00230000010407030633 +322517243713362322050106051323030423221B01362503331324333203039AFDFC1B42 +177072012EAB02040E481B8F5AFEE3026420FD445DCF5DFEC7A9D32A482402BC4FBE4801 +35C1D42A03FC4EA8FE2CAEAEAE466801FAAE49FDA1E028FDF40291AF013201F9FA3A0228 +FD6A6EFECD00000000020064FE28061306D30030003C0000011600151407041102052403 +343727262706111005041723262506072736372411102526353717071416333236352600 +35011023220706070615120536036B0101561E016F15FE72FE62143C466A55DD0165022B +05DB0BFE7C96747A6B9CFE9E013A2426A01897616F8001FEAC02A5EF1F1B3658430A0101 +E506D3A4FEE6AB664514FE2CFE20141401EB668E0A095C37FEB9FEACADC0DEA85903986C +672FE9014201BF384D75B138798E90898B7A011BD4FB0E015205341A5DA1FE950A0A0000 +00020064FFE203AC061E0003001600001321152101102120113733071033321126243533 +161716D90256FDAA02D3FE5BFE5D27B023F2EF01FE7ABB02BEBF061E94FC20FE3801BED0 +D0FECE013CDDFEDDAD7E7E0000030064FFE203AC063800030007001A0000013315232533 +152301102120113733071033321126243533161716024CCBCBFE79CBCB02E7FE5BFE5D27 +B023F2EF01FE7ABB02BEBF0638CACACAFC3CFE3801BED0D0FECE013CDDFEDDAD7E7E0000 +00040064FFE203AC070000120016001A001E000001102120113733071033321126243533 +16171601211521013315232533152303ACFE5BFE5D27B023F2EF01FE7ABB02BEBFFD0D02 +56FDAA0189CBCBFE79CBCB01AAFE3801BED0D0FECE013CDDFEDDAD7E7E02B6940225CACA +CA00000000020064FFE203AC068C00030016000001330123011021201137330710333211 +262435331617160227EBFEFEAD0249FE5BFE5D27B023F2EF01FE7ABB02BEBF068CFEF8FC +26FE3801BED0D0FECE013CDDFEDDAD7E7E00000000030064FFE203AC071800030007001A +00000133032307211521011021201137330710333211262435331617160227B9E4999602 +56FDAA02DFFE5BFE5D27B023F2EF01FE7ABB02BEBF0718FEF87994FCA7FE3801BED0D0FE +CE013CDDFEDDAD7E7E00000000020064FFE203AC06790008001B00000102200333163332 +3713102120113733071033321126243533161716032813FDB4137619AAAC17FAFE5BFE5D +27B023F2EF01FE7ABB02BEBF0679FEE1011F9696FB31FE3801BED0D0FECE013CDDFEDDAD +7E7E000000020064FE1D0398061E0003001B000001211521011021201137330710333219 +011023221517232710212011010B0256FDAA028DFE74FE5821AC19F4E2E1C837AC31016E +018B061E94FA37FE5C01A6E1E3FEE8011603130102F4E2DC0186FE6F00020064FE1D0398 +06640003001B000001330123011021201137330710333219011023221517232710212011 +026DEBFEFEAD01EFFE74FE5821AC19F4E2E1C837AC31016E018B0664FEF8FA65FE5C01A6 +E1E3FEE8011603130102F4E2DC0186FE6F00000000030064FE1D0398073600030007001F +000001330323072115210110212011373307103332190110232215172327102120110259 +D7E4B7960256FDAA0299FE74FE5821AC19F4E2E1C837AC31016E018B0736FEF87994FAA0 +FE5C01A6E1E3FEE8011603130102F4E2DC0186FE6F00000000020064FE1D039806790008 +002000000102200333163332371310212011373307103332190110232215172327102120 +11035013FDB4137619AAAC17BEFE74FE5821AC19F4E2E1C837AC31016E018B0679FEE101 +1F9696F948FE5C01A6E1E3FEE8011603130102F4E2DC0186FE6F000000020064000003C0 +061E0011001500000110032312111023221110132302111021200121152103C099AD92F6 +FE91AE9701B201AAFD370256FDAA0244FEF4FEC8012101230190FE6DFEE0FEDF013A010D +021901BE9400000000020064000003C00664001100150000011003231211102322111013 +2302111021200133012303C099AD92F6FE91AE9701B201AAFEB7E1FEFEA30244FEF4FEC9 +012001230190FE6DFEE0FEDF013A010D02190204FEF8000000020064000003C006790011 +001A000001100323121110232211101323021110212003022003331633323703C099AD92 +F6FE91AE9701B201AA7013FDB4137619AAAC170244FEF4FEC9012001230190FE6DFEE0FE +DF013A010D02190219FEE1011F96960000020064FFFF05E6061E001C0020000001120123 +001102232211152335102322110201230011102132173633200121152105E601FEEDD101 +2F01D2E7A6E7D3010138D1FEE60188E15762DC0185FC140256FDAA0256FED1FED9011601 +40017EFEA7D2D20159FE82FECDFEDC01240133020AE3E301BE94000000030064FFFF05E6 +0638001C0020002400000112012300110223221115233510232211020123001110213217 +363320013315232533152305E601FEEDD1012F01D2E7A6E7D3010138D1FEE60188E15762 +DC0185FD9BCBCBFE79CBCB0256FED1FED901160140017EFEA7D2D20159FE82FECDFEDC01 +240133020AE3E301D8CACACA00040064FFFF05E60728001C002000240028000001120123 +001102232211152335102322110201230011102132173633200121152101331523253315 +2305E601FEEDD1012F01D2E7A6E7D3010138D1FEE60188E15762DC0185FC120256FDAA01 +89CBCBFE79CBCB0256FED1FED901160140017EFEA7D2D20159FE82FECDFEDC0124013302 +0AE3E30137940225CACACA0000020064FFFF05E60664001C002000000112012300110223 +2211152335102322110201230011102132173633200133012305E601FEEDD1012F01D2E7 +A6E7D3010138D1FEE60188E15762DC0185FD76E1FEFEA30256FED1FED901160140017EFE +A7D2D20159FE82FECDFEDC01240133020AE3E30204FEF80000020064FFFF05E60679001C +002500000112012300110223221115233510232211020123001110213217363320010220 +03331633323705E601FEEDD1012F01D2E7A6E7D3010138D1FEE60188E15762DC0185FE8B +13FDB4137619AAAC170256FED1FED901160140017EFEA7D2D20159FE82FECDFEDC012401 +33020AE3E30219FEE1011F96960000000002003CFE1D03E8061E00030024000013211521 +0110212011373307102132190126232215032303342B0127371733321736332011ED0256 +FDAA02FBFE6EFE4719B2170105E802877B0A8F0A9C526D1457508F4F43A00130061E94FA +36FE5D01A3E3E3FEE901170367B68CFEA5015B7828A132BBBBFEC7000003003CFE1D03E8 +063800030007002800000133152325331523011021201137330710213219012623221503 +2303342B01273717333217363320110274CBCBFE79CBCB02FBFE6EFE4719B2170105E802 +877B0A8F0A9C526D1457508F4F43A001300638CACACAFA52FE5D01A3E3E3FEE901170367 +B68CFEA5015B7828A132BBBBFEC700000004003CFE1D03E8073C00030007000B002C0000 +1321152101331523253315230110212011373307102132190126232215032303342B0127 +371733321736332011EB0256FDAA0189CBCBFE79CBCB02FBFE6EFE4719B2170105E80287 +7B0A8F0A9C526D1457508F4F43A0013005AB940225CACACAF94EFE5D01A3E3E3FEE90117 +0367B68CFEA5015B7828A132BBBBFEC70002003CFE1D03E8066400030024000001330323 +0110212011373307102132190126232215032303342B01273717333217363320110259D7 +F8A30253FE6EFE4719B2170105E802877B0A8F0A9C526D1457508F4F43A001300664FEF8 +FA64FE5D01A3E3E3FEE901170367B68CFEA5015B7828A132BBBBFEC70002003CFE1D03E8 +067900080029000001022003331633323701102120113733071021321901262322150323 +03342B0127371733321736332011034613FDB4137619AAAC170118FE6EFE4719B2170105 +E802877B0A8F0A9C526D1457508F4F43A001300679FEE1011F9696F947FE5D01A3E3E3FE +E901170367B68CFEA5015B7828A132BBBBFEC7000002003CFE1D03E806D1000600270000 +011323270723130110212011373307102132190126232215032303342B01273717333217 +363320110258F58BB4B48BF50224FE6EFE4719B2170105E802877B0A8F0A9C526D145750 +8F4F43A0013006D1FE88F5F50178F8EFFE5D01A3E3E3FEE901170367B68CFEA5015B7828 +A132BBBBFEC7000000020071FFE304750614000900200000012206101620363534260110 +372E01353436332115212215141633320010002000027293ACAB0128ACACFD6BC34F41C2 +9E01FCFE28BC7592ED0115FEEDFE20FEEF03DFE7FE6EE7E8C7C8E9FE50014D9B2F8D317C +9493894934FEC8FDDAFEC601390000000001002F000005AA061400240048401326000709 +05080C21180D1E08110C2110144C2510FC3CC432C4FC3CC4103CFC3CC4C4C43100401109 +0D11A912021A87001897061F12BC0B0F2F3CE63232FE3CEE3210EE32323001152322061D +01211521112311211123112335333534363B0115232207061D01213534363305AAB0634D +012FFED1B9FE07B9B0B0AEBDAEB063272601F9AEBD0614995068638FFC2F03D1FC2F03D1 +8F4EBBAB99282868634EBBAB0002002F0000044A061400150019005240111B4600170816 +0F1404080803160A064C1A10FC3CC432C4FC3CC410FE3CEC310040120803A90010870E18 +BE16B10E970900BC05012F3CE632EEFEEE10EE10EE3230400BFF1BA01B901B801B101B05 +015D01112311211123112335333534363B01152322061D0101331523044AB9FE07B9B0B0 +ADB3B9B0634D01F9B9B90460FBA003D1FC2F03D18F4EB7AF9950686301B2E9000001002F +0000044A061400150037400F17460108040A0C08081004120E4C1610FC3CC4C4FC3CC410 +FEEC3100400D0F0BA909048700971109BC0D022F3CE632FEEE10EE323001211123112122 +061D01211521112311233533353436024A0200B9FEB7634D012FFED1B9B0B0AE0614F9EC +057B5068638FFC2F03D18F4EBBAB00000002002F000006FC06140029002D005A40182F46 +172B082A101B15081A2A09001F0608241E0922264C2E10FC3CC432C4FC3CC410C432FC3C +C410FC3CEC310040171B1F23A924110187002DBE2AB1100097160724BC191D212F3C3CE4 +3232E432F4EC10EC3210EC3232300115232207061D01213534373637363B01152322061D +01211123112111231121112311233533353436330533152302F8B063272601F9571C274E +83AEB0634D02B2B9FE07B9FE07B9B0B0AEBD03F9B9B9061499282868634EBB551C132799 +506863FBA003D1FC2F03D1FC2F03D18F4EBBAB02E90000000001002F000006FC06140026 +004E401628460D0810161814081009001C0608211B091F234C2710FC3CC432C4FC3CC410 +C4FC3CC410FCEC31004012181C20A9211102870C2697150721BC0F1A1E2F3C3CE43232F4 +3CEC3210EC3232300115232207061D012135343633211123112122061D01211521112311 +211123112335333534363302F8B063272601F9AEBD0200B9FEB7634D012FFED1B9FE07B9 +B0B0AEBD061499282868634EBBABF9EC057B5068638FFC2F03D1FC2F03D18F4EBBAB0000 +0001002F0000054C0614002D000001353427262B0122070615112311233533353437363B +013217161D01211521111417163B01152322272635112335031824256522632726B9B0B0 +5757BD1EBD5755017BFE85252673BDBDD5515187046063682828282868FB3D03D18F4EBB +55565653BD4E8FFDA08927279A504FD202608F000001006FFFE306B205F0005900000115 +26272623220706151417161F011E01151407062322272627351617163332373635342726 +2F01262726353437363332172635343736373217161D01211521111417163B0115232227 +26351123353335342726072207061514035156495446753F3B3131943FC3A67B7CD8605C +616C66636361824646322DB140AB4C4C6670B5484D055C5BA28C625E017BFE85252673BD +BDD551518787303644453634043FAE2B11142A2757402524210E2B98899C5B5B111223BE +351A1B2D2C514B28232A0F244A4B82A64E560B1D1F875F5D01605C884C8FFDA08927279A +504FD202608F4E412B32013130403D00000100ABFFE308E30614004B0000011615112335 +0E012322263511331114163332363511342721222726353437363B011523221514332127 +26353437363B0115232215141F01210314163332363511331123350E012322263511044F +09B843B175C1C8B87C7C95AD05FE53985B505A777259598383016C17360937D1ECDE600E +3B01DD017C7C95ADB8B843B175C1C803B62521FC90AC6663F0E70166FEA19F9FBEA40191 +241C5E5391834257AF7B8A38834B1F157AAF2B292091FD61A09EBEA4027BFBA0AC6663F0 +E701FC00000100AEFFE308E30614003A000001212615141F0116151123350E0123222635 +11331114163332363511342F01263736332111211521111416333237363511331123350E +01232226350539FEF3600E4D31B843B175C1C8B87C7C95AD104D4D2037D101D302F2FD0E +7C7C985357B8B843B175C1C80565012C2722BC784DFC90AC6663F0E702A6FD619F9FBEA4 +01913F27BCBB477AFE4CAAFE0B9F9F5F62A1013BFCE0AC6663F0E700000100AEFE5608E3 +06140035000001212615141F0116151123350E012322263511331114163332363511342F +012637363321113E013332161511231134262322061511230539FEF3600E4D31B843B175 +C1C8B87C7C95AD104D4D2037D101D442B375C1C6B87C7C95ACB90565012C2722BC784DFC +90AC6663F0E702A6FD619F9FBEA401913F27BCBB477AFD9E6564EFE8FD5C029E9F9EBEA4 +FBDD0000000200AEFE5608E306140035003C000001212227263736373633211121111416 +3332363511331123350E0123222635112311331521110E01232226351133111416333237 +36351901212215143303A0FEDB955E53030357737601DD01997C7C95ADB8B843B175C1C8 +E1D5FE7343B175C1C8B87C7C955756FEDB838303B65E5391834257FE4CFD619F9FBEA402 +7BFBA0AC6663F0E701FCFB42A202566663F0E70166FEA19F9F5F5FA4027B01057B8A0000 +000100AEFE560B9B06140048000001212615141F0116151123350E012322263511331114 +163332363511342F012637363321113637363332161D011417163332363511331123350E +01232227263D0134262322061511230539FEF3600E4D31B843B175C1C8B87C7C95AD104D +4D2037D101D463255A6BC1C63E386E8CADB8B843B16CAF62647C7C78ACB90565012C2722 +BC784DFC90AC6663F0E702A6FD619F9FBEA401913F27BCBB477AFD9E811632EFE8E39758 +4FBEA4027BFBA0AC6663787BE4E49F9EBEA4FBDDFFFF0088005B014204601226052F0000 +10070514FE4E01A000010156050003C8061F000C000001331E0133323637330E01202601 +56760B615756600D760A9EFEDE9E061F4B4B4A4C8F909000FFFF004A005B02A204601226 +0543000010070517FEE701A00001004E0000047E046000160000011332373637363D0133 +11140E0523213521030163C1FA5C400802BA0E2640658BBE78FE6A0114C10460FC51A371 +F23C76F7FED674B6B0816F4527B103AF000100AE0000062D046000200000090123010E03 +15112311343E02370133013E0335113315140E0304B3017AEDFD4B2D625B3BB849777A3F +FE87ED02B42D625C3BB8324E68600169FE97029706385E9758FEF4010A64AD774E16016A +FD6906385E9758010CF6569A6E5A370000010058000005BD046000070000012311231121 +352105BDCABAFC1F056503D1FC2F03D18F000000000200BA0000061D0460001300170000 +01112311342E0423213521321E0425112311061DB90D273E6E8C69FD2B02D585C4945E3B +18FB6BB901EDFE1301ED6A8B74402C0F8F1A3F5D91B245FD5402600000010058000005BB +0460001B00001321321E03140E0323213521323E03342E0323215802D796E88F5C23235C +8FE796FD2802D871A8663D16163D66A871FD28046041699599B0999569418E2A486E759A +756E482A00010058000005BB06140008000021012111331121150102A0025CFB5CBB04A8 +FDA403D10243FE4C84FC2400000200BA0000061D046000080013000029011121321E0215 +01112111342E0423061DFA9D0335A3D38335FB5703EF0C2133576D4F04603C90D9A701BD +FCBE01855E82683D290F000000010058000005BB0460000F000001112311342E02232135 +21321E0205BBBA1D548C74FCC80337A2D382350214FDEC021486A16D298F3C90D9000000 +00010060FFF805BA0460001E000001112311342E03232111140623222735163332363511 +233521321E0205BABA0A24407050FE247B98354E4126472EAD03438FC16C2C025EFDA202 +604A63653A25FDCDD6D0108F0E72A302338F438AB4000000000100D9022D05DB05040007 +0000012135211133112105DBFAFE022DA8022D022DAA022DFDD30000FFFF005800000553 +059610260521A1001206053F00000000FFFF004E000005530596102605194E001206053F +00000000FFFF0058000005530596102705190258FC0F1026052197001206053F00000000 +FFFF0058000005530596102705190258FC0F10270521FB4C00001206053F0000FFFF00BA +FEBB049F04601026051700001206052600000000FFFF00BAFE75049F0460102605180000 +1206052600000000FFFF00BAFEBB049F04601026051400001206052600000000FFFF0058 +0000044804601027051CFEE10000120605270000FFFF0058FFF6031104601027051CFE21 +0000120605280000FFFF00580000041704601027051CFE810000120605290000FFFF00BA +0000048004601026051C00001206052A00000000FFFF00590000021E04601027051CFE0B +00001007052B00AA00000000FFFF0059000002E704601027051CFE0B00001006052C7A00 +FFFF00B9FFE304BF046B1026051C00001206052E00000000FFFF005901A2021C04601027 +051CFE0B00A01007052F00DA00000000FFFF0058FE56039204601027051CFEB100001206 +05300000FFFF0058000003CA04601027051CFEB10000120605310000FFFF0058000003F0 +05D51027051CFE510000120605320000FFFF0058000004B504701026051C300012060534 +00000000FFFF00580000027804601027051CFE210000100605360000FFFF00B9FFE304BF +04601026051C00001206053700000000FFFF00BAFE56046404601026051C710012060539 +00000000FFFF00BA0000048E04601026051C7C001206053A00000000FFFF005800000405 +04601027051CFE5100001206053C0000FFFF00BAFE560511045F1026051CD1001206053D +00000000FFFF0058000003CA04601027051CFEB100001206053E0000FFFF005800000553 +0460102705190239FC0D1206053F0000FFFF0014FFF8048804601026051C000012060540 +00000000FFFF00BA00000174059610270521FBB400001206052B0000FFFF005800000448 +05961027051FFF710000120605270000FFFF0058000003CA05961027051FFF4100001206 +05310000FFFF00BA0000048E05961026051F00001206053A000000000001005800000491 +0614002C0000090123010E0415112335343E053703231133113307013E0435113315140E +050372011DD9FE601C2338211AB8141F322D412C1FBAB8BB7802019E1B2338221AB8141F +322E402C019BFE6502580E1535416E45FEF4B9518A6051322C150D010D0242FE4C03FDAB +0D1536416E45010CB952896151312C15FFFF0082FE0C06EB029D102717250339FF061006 +058E0000FFFF0082FE0C07EF029D102717250339FF06100617270000FFFFFFECFE0C0187 +02581026172800001007172500E0FF06FFFFFFECFE0C027E02581027172500E0FF061006 +17290000FFFF0082FE0C06EB029D1027172402BCFF061006058E0000FFFF0082FE0C07EF +029D1027172402BCFF06100617270000FFFFFFECFE0C01F3025810261728000010071724 +0063FF06FFFFFFECFE0C027E0258102617290000100717240063FF06FFFF0082FE0C06EB +029D1027172602BCFF061006058E0000FFFF0082FE0C07EF029D1027172602BCFF061006 +17270000FFFFFFECFE0C01F30258102617280000100717260063FF06FFFFFFECFE0C027E +0258102617290000100717260063FF06FFFF0082FFEC06EB041A10271725033903841006 +058E0000FFFF0082FFEC07EF041A1027172503390384100617270000FFFFFFEC00000187 +04E21026172800001007172500E0044CFFFFFFEC0000027E04E210261729000010071725 +00E0044CFFFF0082FFEC06EB041A1027172602BC03841006058E0000FFFF0082FFEC07EF +041A1026172700001007172602BC0384FFFFFFEC000001F304E210261728000010071726 +0063044CFFFFFFEC0000027E04E2102617290000100717260063044CFFFF0082FFEC06EB +04991027054B0184FDA81006058E0000FFFF0082FFEC07EF04991026172700001007054B +0184FDA8FFFFFFEC0000023005611026172800001007054BFF2BFE70FFFFFFEC0000027E +05611026172900001007054BFF2BFE70FFFF0082FFA4079E060E102717230578047E1006 +05BA0000FFFF0082FFA5085C05461026172A000010071723057803B6FFFFFFEC0000033F +060E1026172B000010071723012C047EFFFFFFEC0000042005781026172C000010071723 +013E03E8FFFF0082FFA4079E060E1027172605780578100605BA0000FFFF0082FFA5085C +05461026172A000010071726057804B0FFFFFFEC0000033F060E1026172B000010071726 +012C0578FFFFFFEC0000042005781026172C000010071726013E04E2FFFF009DFE0C0528 +036610271725030700AF1006055A0000FFFF009DFE0C053E03661027172502A3007D1006 +14990000FFFFFFECFE3E045C032F1026149A000010071725020DFF38FFFFFFECFE3E053E +032F1026149B000010071725020DFF38FFFF009DFE0C0528036610271722028A00191006 +055A0000FFFF009DFE0C053E0366102717220226FFE7100614990000FFFFFFECFF38045C +032F1026149A0000100717220190FF38FFFFFFECFF38053E032F1026149B000010071722 +0190FF38FFFF009DFE0C0528036610271724029600961006055A0000FFFF009DFE0C053E +03661027172402190032100614990000FFFFFFECFE3E045C032F1026149A000010071724 +0190FF38FFFFFFECFE3E053E032F1026149B0000100717240190FF38FFFF009DFE0C0528 +036610271726029600AF1006055A0000FFFF009DFE0C053E036610271726021900321006 +14990000FFFFFFECFE3E045C032F1026149A0000100717260190FF38FFFFFFECFE3E053E +032F1026149B0000100717260190FF38FFFF007DFED4031B035210271722012BFED41006 +055C0000FFFF007DFED40447035210271722012BFED4100614A10000FFFF007DFFDA031B +04B01027172200FA041A1006055C0000FFFF007DFFDA044704B01027172200FA041A1006 +14A10000FFFF007DFFDA031B05AA1027172300FA041A1006055C0000FFFF007DFFDA0447 +05AA1027172300FA041A100614A10000FFFF007DFFDA031B05F71027054BFFC2FF061006 +055C0000FFFF007DFFDA044705F71027054BFFC2FF06100614A10000FFFFFFABFE0C0384 +04B01027172301F403201006055E0000FFFFFFABFE0C047E04B0102614A5000010071723 +01F40320FFFFFFABFE0C03C1052F1026055E00001007054B00BCFE3EFFFFFFABFE0C047E +052F102614A500001007054B00BCFE3EFFFF0082FFA707290614100605C2000000010082 +FFA707D90614003700002506070623222724113437330615141716333237363736353427 +01263534373637011505060706151417011617163B0115232227262F0106059C63A9CDB7 +C080FEB63FB841CB6897B8C29E231036FECA320A236402E9FDAD4715061F024716262B40 +5884413A67216119784C3C492662010B8A5C5E887E42225041371A2E4542017C3D512321 +772A0136BAFA1E280B192025FD3F1A0E10B8182B29784000FFFFFFEC000003CF06141006 +14D20000FFFFFFEC0000047F0614100614D30000FFFF0082FFA70729072B1027174503CA +0000100605C20000FFFF0082FFA707D9072B1026142500001007174503CA0000FFFFFFEC +000003CF072B1026142600001006174570000000FFFFFFEC0000047F072B102614270000 +1006174570000000FFFF0082FDA80729072B1027172502D5FEA2100605C80000FFFF0082 +FDA807D9072B1026142900001007172502D5FEA2FFFFFFECFDDA03CF072B1026142A0000 +100717250145FED4FFFFFFECFDDA047F072B1026142B0000100717250145FED4FFFF0082 +FFA70729073A10271722038406A4100605C80000FFFF0082FFA707D9073A102614290000 +10071722038406A4FFFFFFEC000003CF073A1026142A000010071722004B06A4FFFFFFEC +0000047F073A1026142B000010071722004B06A4FFFF0093FEB5054802EE100605D30000 +00010093FE0C062B0245002600000116171617163B011523222706070607062322272411 +343733061514171633323736373635342704E02C1B1632353C4B824722035978EF615C74 +71FEB82FB831C95A4C584FC24B216502456160503C40B8306D93C7421B256B0163AF8D89 +B3EC35181430E36570B8CB00FFFF0093FEB5054805161027054B00C8FE25100605D30000 +FFFF0093FE0C062B041C1026143500001007054B00C8FD2BFFFFFFEC0000023005611026 +172800001007054BFF2BFE70FFFFFFEC0000027E05611026172900001007054BFF2BFE70 +FFFF0090FFBD051B03E5100605D7000000030090FE0D052202AB0009002B00360000253E +013534232207061525343733061514163330333510373620171615060721152116140706 +202635222726051417163332353426270602B13FD0544B4A26FDDF10B80E7C141F8A7401 +04442E155E0128FEA8A32E45FEF4F23A71C1022126504554BF2A139F1BA434708D48751A +4A363E2845263701097F6B6343727962B86CE24263DEDF1F352F69438D7034970C070000 +FFFFFFECFFBD03BD03E5100614E20000FFFFFFECFE0D03C402AB100614E30000FFFF0090 +FFC905C706D610271723027105461006056B0000FFFF0090FFC906D206D6102614D10000 +1007172302710546FFFFFFEC000003CF076C102614D2000010071723004B05DCFFFFFFEC +0000047F076C102614D3000010071723004B05DCFFFFFFABFE0C034004D5102605700000 +10070577FFA4FDD8FFFFFFABFE0C043604D5102614E5000010070577FFA4FDD8FFFFFFAB +FE0C034004721027057FFFF4FE3E100605700000FFFFFFABFE0C043604721027057FFFF4 +FE3E100614E50000FFFFFFABFE0C0340053410260570000010070590FFECFE1BFFFFFFAB +FE0C04360534102614E5000010070590FFECFE1BFFFFFFABFE0C034004B0102605700000 +10071723012C0320FFFFFFABFE0C043604B0102614E5000010071723012C0320FFFF0082 +FCFE05C0034A10260571000010071725028AFDF8FFFF0082FCFE06BF020210271725028A +FDF8100614E70000FFFFFFECFE0C018702581027172500E0FF06100617280000FFFFFFEC +FE0C027E02581026172900001007172500E0FF060001FFEC000001870258000D00002506 +2B0135333237363D01331514012B489D5A23632C31B85656B82C316AD9D9BB000001FFEC +0000027E02580014000025062B0135333237363D0133151417163B01152322012B4D985A +23632C31B8312C63376E965656B82C316AD9D96A312CB800FFFF0082FEF305C0034A1006 +05710000FFFF0082FEF006BF0202100614E70000FFFFFFECFED401F302581026144E0000 +100717220063FED4FFFFFFECFED4027E02581026144F0000100717220063FED40001FC70 +06040000076E000700001122040735362433E7FE3DE6EC01C5DF06D467697E7775000000 +0001000006040390076E000700001135320417152624DF01C5ECE6FE3D06D49A75777E69 +670000000001FD2A060D0000072700130000112F01262726232207060723363736333217 +161704901C4F2C2465354605A2047170C85B3F3857064802370B120A243047874A490E0D +2000000000010000060D02D6072700130000111F01161716333237363733060706232227 +262704901C4F2C2461394704A2047170C85B3F385706EC02370B120A242C4B874A490E0D +20000000FFFF000804BA0250069A10070573FF2C00000000FFFFFFEC0000026C069A1026 +0568000010070573FF2C0000FFFF000804BA025006FD10070574FF2C0000000000010069 +0000022C016B000D0000011417163B0115232227263D01330121312C634B828E5C57B801 +4C37312CB85C578D2B000000FFFF0008FE160250FFF610070575FF2C00000000FFFF0008 +04BA025005AA10070576FF2C00000000FFFFFFEC0000026C05AA10270576FF2C00001006 +05680000FFFF000804B9025006FD10070577FF2C00000000FFFFFFEC0000026C06FD1027 +0577FF2C0000100605680000FFFF0008FEE80250FFD810070578FF2C00000000FFFFFFEC +FEE8026C00B810270578FF2C0000100605680000FFFFFFF404CB026406F410070579FF2C +00000000FFFFFFEC0000026C06F410270579FF2C0000100605680000FFFF001804E1023C +07061007057AFF2C00000000FFFFFFEC0000026C07061026056800001007057AFF2C0000 +FFFF00A30055031E03DE1006054E0000FFFFFFB50000028507831027057BFF1D01C21006 +05540000FFFFFFB50000028507831026148500001007057BFF1D01C2FFFF006C000001C3 +08391027057CFF1D01C2100605540000FFFF006C0000028408391026148500001007057C +FF1D01C2FFFFFFABFE0C034004B51027057CFFC2FE3E100605700000FFFFFFABFE0C0436 +04B5102614E500001007057CFFC2FE3EFFFF006CFE0C01C306141027057DFF1D00001006 +05540000FFFF006CFE0C028406141026148500001007057DFF1D0000FFFF0082FEF305C0 +04B51027057CFFF4FE3E100605710000FFFF0082FEF006BF03BB102614E700001007057C +0058FD44FFFFFFEC000001D104E71026144E00001007057CFF2BFE70FFFFFFEC0000027E +04E71026144F00001007057CFF2BFE70FFFF00C1000001790614100605540000000100C1 +000002840614000D0000131133111417163B011523222726C1B8312C634B829A50570173 +04A1FB6B6A312CB85C650000FFFF0082FEA206EB029D102717210339FEA21006058E0000 +FFFF0082FEA207EF029D102617270000100717210339FEA2FFFFFFECFED4018702581026 +172800001007172100E0FED4FFFFFFECFED4027E02581026172900001007172100E0FED4 +FFFF008BFFC603A0041A1027172200FA03841006056F0000FFFF00910000045E041A1026 +14E1000010071722015E0384FFFF0082FFEC06EB03201027172202BC028A1006058E0000 +FFFF0082FFEC07EF03201026172700001007172202BC028AFFFFFFEC000001F303E81026 +172800001007172200630352FFFFFFEC0000027E03E81026172900001007172200630352 +FFFF0082FFEC06EB041A1027172302BC028A1006058E0000FFFF0082FFEC07EF041A1026 +172700001007172302BC028AFFFFFFEC000001F304E21026172800001007172300630352 +FFFFFFEC0000027E04E21026172900001007172300630352FFFF009DFE0C052803661027 +1721030700191006055A0000FFFF009DFE0C053E03661026149900001007172102BCFFCE +FFFFFFECFED4045C032F1026149A000010071721020DFED4FFFFFFECFED4053E032F1026 +149B000010071721020DFED4FFFF009DFE0C052803661006055A00000001009DFE0C053E +036600300000253315232227262726270607061514171621323715062320272635103736 +3722232207060735243320171522071716171605162831817B523D06497262E04A810149 +C1D496FAFE5EA983D460890C0D5F8C875F0110C10126C86D1F1D33485AB8B896649C0FB2 +1850B7FC895EA476B863C296E00102DF6534131329B83F369A0D5BA05F7700000001FFEC +0000045C032F001E0000012627262726073536373217041715060706070607062B013533 +32373637360353536755B452A1484BA2AC0102DC4C58A64A914BDDA38064E38168745E02 +1D171713100706B807012334629A18346242811B50B8483A6A5600000001FFEC0000053E +032F002900000104171506071617163B0115232227262706070607062B01353332373637 +363726272627260735363732027E0102DC4149321E68724256D17E283B4529914BDDA380 +64E38168745E65536755B452A1484BA2030C34629A14294E2277B8A836612E25811B50B8 +483A6A5623171713100706B807010000FFFF009DFE0C052804B010271721023F041A1006 +055A0000FFFF009DFE0C053E04B010261499000010071721023F041AFFFFFFEC0000045C +044C1026149A000010071721020D03B6FFFFFFEC0000053E044C1026149B000010071721 +020D03B6FFFF007DFFDA031B03521006055C00000001007DFFDA04470352002000000126 +2733161716151417163B011523222706070623222735163332373637363534022239B6E3 +615251532C634B8293615DCF2E2D666773542122AC2308023F7A994E89867549532CB882 +80210726B82A0931701B2A44FFFF007DFFDA031B04B0102717210145041A1006055C0000 +FFFF007DFFDA044704B0102614A10000100717210145041AFFFFFFABFE0C036202261006 +055E00000001FFABFE0C047E022600180000013316171617163B01152322270207042135 +203736373635340278B81E030A492A654B82823244FBFEE4FEBE0130CBDA230A0226701E +674D2CB83EFEEA8597B8808AD03A487EFFFFFFABFE0C036203B610271721027103201006 +055E0000FFFFFFABFE0C047E03B6102614A500001007172102710320FFFF0082FE0C091A +02EE10060560000000010082FE0C0A4702EE004600002516373635331417163332190133 +111417163B01152322270607062322272627060706272627060706070623262724113437 +33061716171633323736373627262F01331716171605B84E3025B813406E8EB8532C634B +829176446D252049308A11315F40388927185485C15078806DFEED69B86C0101935F5162 +5F795E4001011040B824101C3AB5027C5FCACD32A901180126FEAA61532CB8605B190919 +467B9F1E1402023CB36BAA3E1A011C470148F6B4CEDCB3261825309E6C8E7D3DEA9C4A3C +7E0000000001FFECFFE3060A02EE00310000250607062B0135333237363D013315141716 +333237363533141716373619013311140706070623222726270607062322272601802B38 +4C63824B632C50B82C2B686D2C25B813406E8EB85C4B6625233F3789123060444162483C +8A3B212EB82C5064C09C4064637A67C2CD32AA010201160126FEAAC7715C1809193D849C +211831280001FFECFFE3073702EE00380000050623222726270607062322272627060706 +2B0135333237363D0133151417163332373635331417163736190133111417163B011523 +22270604FD25233F3789123060444162483C292B384C63824B632C50B82C2B686D2C25B8 +13406E8EB8532C634B829176441409193D849C21183128493B212EB82C5064C09C406463 +7A67C2CD32AA010201160126FEAA61532CB8605AFFFF0082FE0C091A04B01027172304E2 +0320100605600000FFFF0082FE0C0A4704B0102614A900001007172304E20320FFFFFFEC +FFE3060A04B0102614AA000010071723028A0320FFFFFFECFFE3073704B0102614AB0000 +10071723028A0320FFFF0082FE0C091302E510060562000000020082FE0C09E102E5003C +004900002901222726351407060706232627241134373306171617163332373637363534 +2733061716173637363736171617161514071617163B011523222F010603220706073332 +3736272627260675FEEC26342D4A58EE5078806DFEED69B86C0101935F51665BA22B2127 +AB010E0A28737B6C9348587D61BA2A0E103D524B8283671CCC124C7EA891BBED81BB0102 +89251E1A10BA809B4D1A011C470148F6B4CEDCB3261825448A6C7F938A0F372832926C5E +462201022547E94D460C0B2CB85C1A760237516CC23F5B46871305000002FFEC00000632 +02E5000C002E000001060733323736353427262322032122272627062B0135333237363D +0133151416173637363736333217161514070603D0A891BBED81BA8B25304CBAFEEC4A4E +412766AC824B632C50B8122D655F99904B55736BBAB8CA01E66CC23F5B46871305FDC92A +233D8AB82C5064724E1850328654893F212744ECA96D78000002FFEC0000070402E5002B +00380000290122272627062B0135333237363D0133151416173637363736333217161514 +071617163B011523222F0106030607333237363534272623220398FEE84A4E412766AC82 +4B632C50B8122D655F99904B55716DBE2A0E103D524B8283671CCCE0A891BBED81BA8B25 +304C2A233D8AB82C5064724E1850328654893F212744EC4B480C0B2CB85C1A7601E66CC2 +3F5B468713050000FFFF0082FE0C091303B61027172104FB0320100605620000FFFF0082 +FE0C09E103B6102614B100001007172104FB0320FFFFFFEC0000063203B6102614B20000 +1007172101DB0320FFFFFFEC0000070403B6102614B300001007172101DB0320FFFF0090 +000006DC061410060564000000020090000007AC0614001C002900002902352111331112 +2536333217161514071617163B011523222F0106253332373627262726232207060440FD +BFFE91016FB8D901145C447569BC2A0E103D524B8283671CCCFDE9BBED81BB0102892530 +507AB1B8055CFB0E013F63212745EB4D460C0B2CB85C1A76B83F5D448713055178000000 +0002FFEC000005D40614000C001F00002533323736272627262322070613290135211133 +1112253633321716151407060239BBED81BB0102892530507AB175FDC1FEF5010BB8D901 +145C447569BAB8CAB83F5D448713055178FE92B8055CFB0E013F63212745EBA96D780000 +0002FFEC000006A40614001C002900002902352111331112253633321716151407161716 +3B011523222F0106253332373627262726232207060338FDBFFEF5010BB8D901145C4475 +69BC2A0E103D524B8283671CCCFDE9BBED81BB0102892530507AB1B8055CFB0E013F6321 +2745EB4D460C0B2CB85C1A76B83F5D448713055178000000FFFF0090000006DC06141027 +172103CF0352100605640000FFFF0090000007AC0614102614B900001007172103CF0352 +FFFFFFEC000005D40614102614BA00001007172102C70352FFFFFFEC000006A406141026 +14BB00001007172102C70352FFFF0075FE0C04B2042A10060566000000020075FE0C04B2 +030E0025002B000001062120272610372E013534373632171615140706071E013B011523 +2027061514171621323701363422151404B298FEFFFE5B9D62BB3D447D61EE5F7F5B395E +44B655A090FEF6F89A296B015FC1D4FD3188CEFE6F63BC7A01928C32742A6E4030304070 +5B432B20404DB8E4816B6C3D9E760296386033240001FFEC000003F8042A001A00003732 +372627263510373633152206141716333237251505042B01353CA1CA4B3458CC7DFBDABA +3E5346374A0120FE5CFEA2B258B85D183B648C01087D4DA989FF34462181B8C5A4B80000 +0002FFEC000003F0030E0024002F000025062B0135333237363726272635343736373632 +1716171615140706071617163B01152322022207061514173635342701EEC2CA76606B42 +3B2861441E0D106859EE5968100D1E4D581F443D706076CAA8341E2F67672FB9B9B82824 +27555A272D1F2937342D2D3437291F2D27624D1F2C28B80255070C201D5F5F1D200C0000 +FFFF0075FE0C04B2054610271721017704B0100605660000FFFF0075FE0C04B2044C1026 +14C100001007172101A903B6FFFFFFEC000003F80546102614C2000010071721017704B0 +FFFFFFEC000003F0044C102614C300001007172101A303B6FFFF0082FFA4079E05141027 +172105F5047E100605BA0000FFFF0082FFA5085C044C1026172A00001007172105F503B6 +FFFFFFEC0000033F05141026172B00001007172101A9047EFFFFFFEC00000420047E1026 +172C00001007172101BB03E8FFFF006BFE48059B0514102717220352047E1006058F0000 +FFFF006BFE0C06C004011026172D0000100717220384036BFFFFFFEC0000033F05141026 +172E000010071722012C047EFFFFFFEC00000420047E1026172F000010071722013803E8 +FFFF0090FFC905C706141006056B000000020090FFC906D2061400210044000001150607 +061514171617161514070623222735163332373635342726272637363736130627262724 +353437330615161716333237363736190133111417163B01152322270603D04A26500E0C +446658524E4238442D3C393C4E4A122001024B558A6D91CF65FEDB10B80E02A0797F8C59 +98624CB8312C634B8299719E046F52040E1E211C12100A0F586E2A270B580A1A1A1E2611 +101C2F2E51262BFB701402021E58C34B353A2C5C2E231B2F5E49010103B1FB6B6A312CB8 +7B7E00000001FFEC000003CF0614001F0000290135213237363534270126353437363701 +15050607061514170116151407060136FEB60136942D1036FECA320A1F6802E9FDAD4715 +061F0113663E5FB86824244542017C3D512321762B0136BAFA1E280B192025FEB67B7B71 +659B00000001FFEC0000047F061400290000290135213237363534270126353437363701 +1505060706151417011617163B0115232227262F010607060136FEB60136942D1036FECA +320A1F6802E9FDAD4715061F024716262B405884413A67216115115FB86824244542017C +3D512321762B0136BAFA1E280B192025FD3F1A0E10B8182B29782E1B9B000000FFFF0090 +FEC8051806141006056C000000010090FEC806230614002400002536351133111417163B +01152322270607060506232227240326373306151417163332373604124EB8312C634B82 +704E121B79FEFB86556345FEDC010140B841A62849506DAE497EE3046AFB6B6A312CB833 +2E28B14222165B01128A5C73737E4210223500000001FFEC000001AF0614000D00000114 +07062B01353332373635113301AF57509A824B632C31B80173B2655CB82C316A04950000 +0001FFEC000002BA06140014000025062B013533323736351133111417163B0115232201 +534D98824B632C31B8312C634B82965656B82C316A0495FB6B6A312CB8000000FFFF008C +FE14045E02F31006056D00000002008CFE14056702740011003500002516333237363534 +272627262322070615140506070623222726070615112311343736332635343736333217 +16171617163B0115232202627A4C2C153506153B282E3B1B4401C00F0D854BB58D324B19 +C878415A02A24D5C4854AA280F2826694B82AFA82A16393A181458110C1B444428A90E08 +504E1C4E1A4FFE93016DAD66372A2894843F2447B3432C2CB80000000002FFECFFCD03A6 +026D0015002400002506232227062B013533323637363736333217161514251633323736 +35342726232206070603646193CE6E4068A07434570514875E51B05B61FDF03E9F2F1334 +282A582E5B0F0734666230B84731B550385459B88F4E451235454B26293C61250002FFEC +FFCE04B4026D001D002F00002506232227062B0135333237363736373633321716171617 +163B011523222516333237363534272627262322070607060364618BD66E4068A074342C +2B0514875E5D4842C1110533246B4B82B0FE143E9F2F133405163A27273529320F073466 +6230B8242331B550381D53A7313E2CB8C445123545131258110C1B2161250000FFFF0093 +FEB5054803B610271721023F0320100605D30000FFFF0093FE0C062B02BC102614350000 +10071721023F0226FFFFFFEC0000018703E81027172100E00352100617280000FFFFFFEC +0000027E03E81027172100E00352100617290000FFFF008BFFC603A002DE1006056F0000 +000200910000045E02EE000A002400000126272627060706171E01132627331617161716 +3B0115232227262706232227263534373602A40F0D0D0C78526F0201B4740403B8012415 +381F704B825A492D268A9C383ABDCC6D011A2A3132650C43593E293201D1272BA8AE654F +2CB8331F3B490F309AAD7F440003FFECFFBD03BD03E5000F002D003D0000013637363534 +272623220706151417160732372627263534373617262735161704171615140706232227 +062B01350116151407060716333237363534272601942422270F163A4117160715F9344E +2D0F122D304D2C51DFD80100400E284AAF839A78928902AB06620C1134317D1107211D01 +0D1B40483D2E25342D2B231E2576880B69454E4054535A09270EB944B3D1DE3439673D71 +6C29B80144252793690E132E431E213C4E4500000003FFECFE0D03C402AB000A0024002F +000025333237363534232207060712373633321716151407211521161514070623222726 +03233505141716333235342726230153132A6072544B4A26B809816C818A452EA30158FE +A8A32E458A816C8109AF0167264A4B5472602AB84C5A34708D4875010A7E6B6343726F6C +B86C6F7243636B800108B8B875488D70345A4C00FFFFFFABFE0C03400286100605700000 +0002FFABFE0C04360286000B002C00002534272627260706070617160533152327060706 +07062135203736372627262726272637363736171617161716028D10182E3C3C430D1140 +2F0173F6C24619815369C0FE93016984A83E762D8B336A0A020A1BB03B41574585160DB8 +4C39501E291A1D384B362804B8019C81532F56B84C5F940307182B59871F399B4B190102 +315C8D53FFFF0082FEF305C0034A10060571000000010082FEF006BF0202003700000536 +352627262726353437363736333217163B01152322272623220706151417161716070607 +062322272411343733061514171633323736044C5B012F1D1E2C3450541E2A7557802023 +2372706C1A240F2D414903037180DA5968BC75FEDB3FB841A642B35B4D952133212B0D08 +283B3D413C5E0E0686C4B8ACA5061123301B1E7B6256601F0C29670106995A5A99724E1F +080F0000FFFF0082FE0C05C0034A1027172201F4FE0C100605710000FFFF0082FE0C06BF +02021027172201F4FE0C100614E70000FFFFFFECFED401F302581026144E000010071722 +0063FED4FFFFFFECFED4027E02581026144F0000100717220063FED4FFFFFF2EFFEC03BF +06ED102614F200001007057BFE96012CFFFFFF2EFFEC04DA06ED102614F300001007057B +FE96012CFFFFFFE5FFEC03BF07A3102614F200001007057CFE96012CFFFFFFE5FFEC04DA +07A3102614F300001007057CFE96012CFFFF0017FE0C03BF0614102614F200001007057D +FEC80000FFFF0017FE0C04DA0614102614F300001007057DFEC8000000010054FFEC03BF +061400160000011007060706232227351633323701330136373635113303BF8B374DCD9E +6A4B60557188FE16B301AA1D1425B80342FED4DA5547B420B820980446FC412B3789B802 +AE00000000010054FFEC04DA0614001F0000010607062322273516333237013301363736 +351133111417163B01152322272603343B49CAA16A4B60557188FE16B301AA1D1425B822 +40506981AF6611013C5B41B420B820980446FC412B3789B802AEFC44AE549EB8F3290000 +0003001EFF540816074C00030007002A0000090415333527353436373637363F01363736 +35342623220607153E013332161514060F010E011D01041A03FCFC04FC040396CB060606 +0813172C585C2224DFB867C15E61B34F6C8333395A5A38074CFC04FC0403FCFDAEFEFE93 +7B343C15191A1F2B565A40454C9FC23839BC43466E59315E35595682659A000000020064 +FFE305AA05D50007000A00003701330107032103012103640230E60230A8C1FD8CC10106 +01EAF52305B2FA4E4001F6FE0A02AA027C000000000300C8FFED041405E80009001A0024 +000001113332373635342623013633321716151407161514070621222713113332373635 +342623017C34FB773DC6AFFEDE8864F0A2CED7D675ABFEBD6484B46FEA5E2CECBF027EFE +23723B425995035713617BD0D57A7AE48E70A4130534FE15803D38688E00000000010064 +FFE303EA05F300050000050901170901036BFCF903077FFD7802881D030803087FFD77FD +77000000000200C80000040605D2000C0015000033113320171617161007060421373E02 +10272E0127C85A01849E9F190A2738FEB9FEC25ACEC7410A12BCFE05D2787AF965FE627F +B8ADC00863D4017A5CAC910A000100C80000039C05F2000D000001112311050725110507 +25110507017CB402D41CFDFC02201CFDFC02201C0136FECA05F275B253FEC358B253FEC3 +58B20000000100C80000039C05F20009000001112311050725110507017CB402D41CFDFC +02201C032AFCD605F275B253FEC358B200010096000002EE05D5000B0000132115231133 +152135331123960258D2D2FDA8D2D205D5B4FB93B4B4046D000300C80000043805D50003 +0007000B0000132111210111211105211121C80370FC9002BCFDF80208FDF8020805D5FA +2B034501DCFE24B4FE23000000050096FFE306A405F3000F00140019001E002300000002 +0604202426021012362420041612013600372103112116000121110600011121260006A4 +7AD0FEE0FEC6FEE0D07A7AD00120013A0120D07AFD53C201121EFE0EB4FE0E1E0112FED0 +01F2C2FEEE028801F21EFEEE024EFEE0D07B7BD00120013A0120D07B7BD0FEE0FD161E01 +12C3FE0D01F3C3FEEE028901F31EFEEE0130FE0DC3011200000100C80000017C05D50003 +000013331123C8B4B405D5FA2B000000000100C8FFE3048305F3000A0000212311331101 +1709010701017CB4B4028878FD2E02D978FD7105D5FDE1023D86FD81FD7B860243000000 +000100C8000003FB05D50006000009011701231133017C01FF80FD4D80B40133020080FD +4D05D500000100C800000AD405F3000C0000133309031709031123C87402830238022F02 +2E80FD52FDD2FDD1FDB3B405D5FDE50239FDD1022F80FD53022EFDD201EEFB4C000100C8 +0000067705F300080000133309011709011123C8740283023880FD52FDB3B405D5FDE502 +3980FD5301EEFB4C000500C80000069C05D500030007000B000F00130000011121110121 +1121011121112111211113112111017C01DCFD7005D4FA2C034401DCFB9401DCB401DC02 +90FE2401DC0345FA2B0521FE2401DCFE2401DCFD6FFE2401DC00000000030096FFE306A4 +05F3000F001F002700000036342E02220E02141E02323600020604202426021012362420 +041612040622263436321605925E5E9FDEF0DE9F5E5E9FDEF0DE01B17AD0FEE0FEC6FEE0 +D07A7AD00120013A0120D07AFD855274525274520194DFF0DF9E5F5F9EDFF0DF9E5F5F01 +58FEE0D07B7BD00120013A0120D07B7BD0FEE0D75252745252000000000100C8000004E7 +05E8001100000124353424212207112311363320001110050328010BFED3FEE23537B4A2 +7E0162019DFE81025966D4B6F906FAC405D414FEBFFEECFEB0920000000100C80000062A +05D5000B0000331133090133112311090111C8B401FD01FDB4B4FE03FE0305D5FDA2025E +FA2B04BDFDA1025FFB430000000200960000041A05F2000B001D000000342E01220E0114 +1E01323E010607060711231126272E01343E01321E010366487D927D48487D927DFC7A66 +4048B44741687879CFF4CF7903E7937C48487C937D48484CD13B250EFD8902770E253CD0 +F4CF7979CF000000000200C80000044405E9000C00170000080115140207062311231136 +33032037363534272623220702D8016CC8FF768BB4A27E6C010985868B72BE2B2E05E9FE +E5FC8DFED14E24FE5C05D514FC6F7372969E6C580400000000010096FFF202F205EA0009 +00000903070903170194015EFEA2011F80FE63015EFEA2019D80044CFEA2FEA2FEE28001 +9E015E015E019E8000010064000004FC05F200070000010725112311253704FC38FE32B4 +FE2238048AAC95FB8D04AD99AC000000000100C8000004B405EA00070000011701112311 +3311043480FCC8B4B405EA80FCC9FDCD05D5FD5C00010096FFE304E705F2000B00000901 +370901170901070901270251FE45960192019396FE4501BB96FE6DFE6E9602ED02A362FD +A1025F62FD5DFD58620264FD9C62000000030096000004E205D50013001B002400002123 +352627261037363735331516171610070607190136373610272601110607061514171603 +16B4AA81A1A180ABB4AA81A1A180AB604B6D6D4BFEEC604B6D6D4BCC1A80A101C7A2801A +CBCB1A80A1FE39A2801A0387FD30174C6C01326C4BFD4802D0174C6E98966E4C00010064 +0000061605F2000B00002123110137011133110117010397B4FD818001FFB401FF80FD81 +02F4027E80FE0001E3FE1D020080FD8200030096FFF103A205B90007001D002500000034 +262206141632240620261037363726272610362016100706071617160234262206141632 +02EE7BAE7B7BAE012FE5FEBEE5722F37372F72E50142E5722F37372F72B47BAE7B7BAE01 +20AE7B7BAE7B31E5E50142732F1B1C2E720143E5E5FEBE732F1B1C2E7201C3AE7B7BAE7B +000200C8000003E005E8000A001300003311363332041514042119013236353426232207 +C88481F30120FEA9FEF3CAE6B4A22A3005D513E6BDD0DCFD67034E7F76639C06000200C8 +FFED03E005D5000A00140000133311200415140423222713301116333236353426C8B401 +0D0157FEE0F38184B4302AA2B4E605D5FD67DCD0BDE6130287FE12069C63767F00010064 +000002BC05D50007000013352111331123116401A4B4B40291B40290FA2B029100020064 +000005AA05F20006000E000009012301370901000622263436321605AAFDD0E6FDD0A801 +FB01FBFE9152745252745205B2FA4E05B240FADA0526FDD85252745252000000FFFF00C8 +0000017C05D512061503000000010064FFE305AA05D50006000037013301070901640230 +E60230A8FE05FE052305B2FA4E400526FADA0000FFFF0096FFE304E705F2120615110000 +000100640000062705F3000800001309010701112311016402C802FB7AFDDBB4FE10032C +02C7FD3B8401FEFB58049DFE0F000000000300AA01E0068202A800030007000B00000121 +3521053521152901352101FDFEAD015303320153FDBDFEAE015201E0C8C8C8C8C8000000 +FFFF00AA013D0682040B10270F61000003431007151D0000FF5D0000FFFF00AA01370682 +040E1027151D0000FF5810070F62000003460000FFFF00AA013A0682040A1027151D0000 +016210070F610000013A0000FFFF00AA013B0682040A10270F620000013C1007151D0000 +01620000FFFF00AA013D0682040A1027151D0000FF5D1007151D000001620000FFFF00AA +00000682054810270F610000048010260F61000010270F610000018010070F6100000300 +FFFF00AA00000682054810270F610000048010270F610000018010270F61000003001006 +0F620000FFFF00AA0000068205481027151D0000FE2010270F610000048010270F610000 +018010070F61000003000000FFFF00AA00000682054810270F610000048010260F610000 +10270F610000030010070F6200000180FFFF00AA00000682054810270F62000001801027 +0F610000048010270F610000030010060F620000FFFF00AA00000682054810270F620000 +018010270F610000030010270F61000004801007151D0000FE200000FFFF00AA00000682 +054810260F6100001026151D00A010270F610000048010070F61000003000000FFFF00AA +00000682054810260F6200001026151D00A010270F610000048010070F61000003000000 +FFFF00AA0000068205481027151D0000FE2010270F610000030010270F61000004801006 +151D00A0FFFF00AA00000682054810270F620000030010270F610000018010260F610000 +10070F6100000480FFFF00AA00000682054810270F620000030010270F61000004801027 +0F610000018010060F620000FFFF00AA0000068205481027151D0000FE2010270F610000 +018010270F610000048010070F62000003000000FFFF00AA00000682054810260F610000 +10270F620000018010270F620000030010070F6100000480FFFF00AA0000068205481026 +0F62000010270F610000048010270F620000030010070F6200000180FFFF00AA00000682 +05481027151D0000FE2010270F620000018010270F620000030010070F61000004800000 +FFFF00AA0000068205481026151D00A010270F610000048010270F620000030010060F61 +00000000FFFF00AA0000068205481026151D00A010260F62000010270F61000004801007 +0F62000003000000FFFF00AA0000068205481026151D00A010270F610000048010270F62 +000003001007151D0000FE20FFFF00AA0000068205481027151D0000012010270F610000 +018010260F61000010070F6100000480FFFF00AA00000682054810260F62000010270F61 +0000048010270F61000001801007151D00000120FFFF00AA0000068205481027151D0000 +FE201027151D0000012010270F610000018010070F61000004800000FFFF00AA00000682 +054810270F620000018010270F610000048010260F6100001007151D00000120FFFF00AA +0000068205481027151D0000012010260F62000010270F610000048010070F6200000180 +FFFF00AA0000068205481027151D000001201027151D0000FE2010270F61000004801007 +0F62000001800000FFFF00AA0000068205481027151D0000012010270F61000004801026 +151D00A010060F6100000000FFFF00AA0000068205481027151D0000012010270F610000 +04801026151D00A010060F6200000000FFFF00AA0000068205481027151D000001201026 +151D00A010270F61000004801007151D0000FE20FFFF00AA00000682054810270F620000 +048010270F610000030010270F610000018010060F610000FFFF00AA0000068205481027 +0F620000048010260F62000010270F610000030010070F6100000180FFFF00AA00000682 +054810270F620000048010270F610000030010270F61000001801007151D0000FE200000 +FFFF00AA00000682054810270F620000048010270F620000018010270F61000003001006 +0F610000FFFF00AA00000682054810270F620000048010260F62000010270F6100000300 +10070F6200000180FFFF00AA00000682054810270F62000004801027151D0000FE201027 +0F610000030010070F62000001800000FFFF00AA00000682054810270F62000004801027 +0F61000003001026151D00A010060F6100000000FFFF00AA00000682054810270F620000 +048010270F61000003001026151D00A010060F6200000000FFFF00AA0000068205481027 +0F62000004801026151D00A010270F61000003001007151D0000FE20FFFF00AA00000682 +054810270F620000048010260F61000010270F610000018010070F6200000300FFFF00AA +00000682054810270F620000048010260F62000010270F610000018010070F6200000300 +FFFF00AA00000682054810270F620000048010270F620000030010270F61000001801007 +151D0000FE200000FFFF00AA00000682054810270F620000048010270F62000003001027 +0F620000018010060F610000FFFF00AA00000682054810270F620000048010270F620000 +018010270F620000030010060F620000FFFF00AA00000682054810270F62000004801027 +0F620000030010270F62000001801007151D0000FE200000FFFF00AA0000068205481027 +0F620000048010260F61000010270F62000003001006151D00A00000FFFF00AA00000682 +054810270F620000048010270F620000030010260F6200001006151D00A00000FFFF00AA +00000682054810270F62000004801027151D0000FE2010270F62000003001006151D00A0 +FFFF00AA00000682054810270F620000048010260F61000010270F61000001801007151D +00000120FFFF00AA00000682054810270F62000004801027151D0000012010270F610000 +018010060F620000FFFF00AA00000682054810270F620000048010270F61000001801027 +151D000001201007151D0000FE200000FFFF00AA00000682054810270F62000004801027 +151D0000012010260F61000010070F6200000180FFFF00AA00000682054810270F620000 +048010270F620000018010260F6200001007151D00000120FFFF00AA0000068205481027 +0F620000048010270F62000001801027151D0000FE201007151D000001200000FFFF00AA +00000682054810270F620000048010260F6100001026151D00A01007151D000001200000 +FFFF00AA00000682054810270F620000048010260F6200001026151D00A01007151D0000 +01200000FFFF00AA00000682054810270F62000004801027151D0000FE201026151D00A0 +1007151D00000120FFFF00AA0000068205481027151D000002A010260F61000010270F61 +0000018010070F6100000300FFFF00AA0000068205481027151D000002A010270F610000 +018010270F610000030010060F620000FFFF00AA0000068205481027151D000002A01027 +151D0000FE2010270F610000018010070F61000003000000FFFF00AA0000068205481027 +151D000002A010260F61000010270F610000030010070F6200000180FFFF00AA00000682 +05481027151D000002A010270F620000018010270F610000030010060F620000FFFF00AA +0000068205481027151D000002A010270F620000018010270F61000003001007151D0000 +FE200000FFFF00AA0000068205481027151D000002A010260F6100001026151D00A01007 +0F61000003000000FFFF00AA0000068205481027151D000002A010260F6200001026151D +00A010070F61000003000000FFFF00AA0000068205481027151D000002A01027151D0000 +FE2010270F61000003001006151D00A0FFFF00AA0000068205481027151D000002A01027 +0F620000030010270F610000018010060F610000FFFF00AA0000068205481027151D0000 +02A010270F620000030010270F610000018010060F620000FFFF00AA0000068205481027 +151D000002A01027151D0000FE2010270F610000018010070F62000003000000FFFF00AA +0000068205481027151D000002A010260F61000010270F620000018010070F6200000300 +FFFF00AA0000068205481027151D000002A010260F62000010270F620000030010070F62 +00000180FFFF00AA0000068205481027151D000002A01027151D0000FE2010270F620000 +018010070F62000003000000FFFF00AA0000068205481027151D000002A01026151D00A0 +10270F620000030010060F6100000000FFFF00AA0000068205481027151D000002A01026 +151D00A010260F62000010070F62000003000000FFFF00AA0000068205481027151D0000 +02A01026151D00A010270F62000003001007151D0000FE20FFFF00AA0000068205481027 +151D000002A01027151D0000012010270F610000018010060F610000FFFF00AA00000682 +05481027151D000002A010260F62000010270F61000001801007151D00000120FFFF00AA +0000068205481027151D000002A01027151D0000FE201027151D0000012010070F610000 +01800000FFFF00AA0000068205481027151D000002A010270F620000018010260F610000 +1007151D00000120FFFF00AA0000068205481027151D000002A01027151D000001201026 +0F62000010070F6200000180FFFF00AA0000068205481027151D000002A01027151D0000 +01201027151D0000FE2010070F62000001800000FFFF00AA0000068205481027151D0000 +02A01027151D000001201026151D00A010060F6100000000FFFF00AA0000068205481027 +151D000002A01027151D000001201026151D00A010060F6200000000FFFF00AA00000682 +05481027151D000002A01027151D000001201026151D00A01007151D0000FE2000030010 +000005DC05D50003000B000E0000012301330901210321032301170121035DCD01EECDFE +57023AFE5C98FD809977023918FEE302380571FAF30571FA2B01A1FE5F05D5C7FCF70000 +000600C90000054E05D5000C0014001C00200025002A0000132132161514071611140423 +210111333237112623031133363311262321113311013635342F0136353427C90266E7FA +C0FEFEF0FBFD860190EA3B33333BEAD624202024FDFECA0223D0D03ED0D005D5C0B1E55D +61FEE1C8DA02E9FD7B070277070288FDDC03021F02FAF3050DFB1144DCE5449636CDC436 +000400E80000063305D50008001000140019000013212000111000290101133332371126 +23211133030136111027E8020301B20196FE68FE50FDFD01920163F5A0A0F6FE70CA0102 +C6DFDF05D5FE97FE80FE7EFE960571FAF341048B41FAF3050DFB6B95017B01719C000000 +000200C90000055305D50003000F000001113311252115211121152111211521012DCAFE +D20478FD1A02C7FD3902F8FB760571FAF3050D6464FDE464FD736400000200C9000004EC +05D50009000D00001321152111211521112101231133C90423FD6F0251FDAFFE6E012ECA +CA05D564FDE464FD0F0571FAF300000000020073FFE3058B05F0001D0026000001262423 +220711163332373637112135211106042320001110002132041701110607061110171605 +647FFEFC85BB8787BB917F6556FE52021275FEE6A0FEA2FE75018B015E9201076FFC521C +1AA9A91A04E4614740FB3B40261F3501E764FD7F53550199016D016E01994846FB630449 +161AAFFEBAFEBBAF1A00000000020066000002BE05D50003000F00000111331125211523 +1133152135331123012ECAFE6E02586464FDA864640571FAF3050D6464FAF36464050D00 +0002FF96FE66025905D50008001400000111140736373635112521111006232135333236 +35012D56903F4FFED40190CDE3FEED3F866E0571FAB1F2640A4A5EEA050964FA93FEF2F4 +6496C200000200C90000063005D5000A000E0000132111013309012301112113113311C9 +019003039FFCA3039299FCC2FE7064CA05D5FD890277FD40FCEB02CFFD310571FAF3050D +000200C90000053205D500050009000013211121152113113311C9019202D7FB9764CA05 +D5FA8F64056FFAF3050D0000000300C40000076F05D5000C001000140000211101230103 +21112109012111011133112111331105DDFE5F47FE6201FE6E01D8017D017F01D7FED2CA +FA1DCA0571FBAE0452FA8F05D5FC0803F8FA2B0571FAF3050DFAF3050D00000000050072 +FFE305DA05F0000F0017001F002700280000012017161110070621202726111037361316 +20371126200703110607061017160111363736102726010326013ABCBEBDBDFEC6FEC5BC +BDBDBC476C01106C6CFEF06C6924209B9B2002DE231F9B9B1FFBCC05F0D2D5FEA0FEA1D4 +D3D3D201610162D3D2FA8E323204D73232FB6A04541D25B6FD9CB5250435FBAF1D24B602 +63B624FDF400000000020088FFDC049F05F60011002D0000010610161F011E0110073610 +262F012E0134251526200614161F011E01100420253516203634262F012E011024200150 +6488AC6FA9A826819CAA6EB09E030FCEFEC5A26D946ECAC9FEE0FE13FEFBDF0167A97A8A +6FCAB7011601C6052D5BFECA9A291A27B9FEFF4E580164BB271B279DE3B4707589E96924 +1B32EBFE58EE667C9592FD86201A2FCF018CF4000002FFFA000005B005D50003000B0000 +0111331125211521112111210272C8FCC005B6FDEEFE70FDEC0571FAF3050D6464FA8F05 +71000000000300B1FFE305F305D50006000D001D00000111100724190121111005261311 +2521111416203635112111100020001104C6580121FB8601215901FED301918001208001 +91FEACFD66FEAC0571FC99FEE6826201610340FCC0FE9E607C011F036764FC35F0D3D3F0 +03CBFC5CFEDCFED6012A012400020010000005B705D50003000A00001301330125210901 +3301219A01EEC8FE12FEAE019001D901DA64FDC7FECC0571FAF3050D64FB1704E9FA2B00 +00030044000008AE05D50003000700140000090133012101330125210901210901330121 +09012104C40144C8FEBCFB350144C8FEBCFEBB0190013A01390190013A013964FE89FE7C +FEC5FEC2FE800571FAF3050DFAF3050D64FB1204EEFB1204EEFA2B0510FAF0000002006C +0000060605D50003000F0000090133012521090133090121090123010128035CC6FCA4FE +7E01B80176018462FE4C023AFE48FE8AFE7C6401B60571FAF3050D64FDCE0232FD84FCA7 +0232FDCE027B00000002FFFC000005AC05D50008000E0000090133011121110121090123 +011133036E01DA64FDF0FE70FDF0019401AAFE32C801CCCA031302C2FCF2FD3902C7030E +FCF202AAFD56FD9D0004007BFFE30493047B00070022002C003300000134262716151133 +131121350E012322263534363B0135342623220607353E013320040135232207113E0137 +3605110E01151416042F963D4B8864FEB03FBC56ACCBFDFBD0759760B65477DF38011E01 +1AFEB0D0362F5E623B3AFE6743887A027FD386185D88FD59021BFD81AA6661C1A2BDC048 +7F8B2E2E742727FCFE8B5504FDED044E4847DC01FD12678B7774000000040094FFE30513 +0614000F001A001E002D00001321113E0133320010022322262715210134272627113637 +3637360111331101262322070607061514171633323794014E3AB17CCB00FFFFCB7CB13A +FEB204125E2C3C3C2C39160FFC528601F9191AA54B4D160E5F5DA51A190614FDA26461FE +BCFDF0FEBC6164A802749F823D20FC7A203D4F734B03DAFAAC0554FE64036968744A9E9F +8282030000020071FFE303E7047B001A0023000025150E01232200111000213216171526 +272623220711163332373625110607061514171603E74DA55DFDFED6012D010655A24C45 +6D474A58484351524856FE182C247B7A248F642424013E010E0112013A2323641F180F14 +FC571310131B03531A2580EAE683260000040094FFE305130614000F001A001E002D0000 +0111211121350E0123220210003332160114171617161711060706011133110111163332 +3736353427262726232203C5014EFEB23AB17CCBFF00FFCB7CB1FD760F16392C3C3C2C5E +032886FD81191AA55D5F0E164D4BA51A03B6025EF9ECA8646101440210014461FE5A9E4B +734F3D200386203D82029DFAAC0554FE64FC360382829F9E4A7468690003006FFFE3047D +047B00130018001F000001211316333237150E0123200011100033320015010611121713 +212E01232207047DFD8B014B5FD9C36DC36BFEF4FEC70129FCE50104FD23C601C5690201 +03CCA94A400204FE62155D752D290138010A01130143FEDAF701717AFEDBFEF38E01D3BE +E71100000002002F000003E30614000A0020000001060706151133113437362515232207 +061D0121152111211123353335343736330211672E3987161201F1AE943A390184FE7CFE +B1B0B05758BC05AE0A2D3891FBB6044A5F44388B643937926464FC1A03E66464BC545600 +00040071FE5604F0047B00070023002E003D0000011114071636190101351E013332363D +010E01232202100033321617352111100021222603141716171106070607060116333237 +3637363534272623220704066A05EBFC6C519E52B5B43AB17CCBFF00FFCB7CB13A014EFE +D6FECD72CA795E2C3C3C2C39160F012F191AA54B4D160E5F5DA51A1903FAFC3DCA8C059D +0112036FFA97802C2ABDBF7164610144021001446164A8FC2DFEE2FEE91D03779F823D20 +0386203D4F734BFDC2036968744A9E9F82820300000300BA000005480614000A000E0022 +00000116171615113311342726011133112721113E013332161511211134262322061511 +2104000908478C5335FCC287EB014F49C681D4DBFEAC6B6B8095FEB1040D0B0C68BEFD94 +0240C15B3A01B6FAB4054C64FD9E6564EFE8FD5C02D09F9EBEA4FD55000300E600000235 +061400030007000B0000011133110333152307211121014A87A0B9B94B014FFEB103FCFC +6803980218E9CBFBA00000000003FFD7FE56020C061400080016001A0000051123111407 +36373607233533323736351121111407060333152301A8872547283DF4DD316C2425014F +515261B8B8160412FBD0B5540F3048F46430319904ACFB8CD6606007BEE90000000200BA +000005320614000A000E0000132111013309012301112113113311BA014F02848CFD4802 +D196FD6DFEB164870614FC6901E3FDF6FDAA0223FDDD05B0FAB4054C000200E6000002EA +0614000800140000011417161726351123132227263511211114163315014A3D28472587 +F5B65251014F4C690194A048300F54B50430FA5A6060D6047EFB4A9C5E640000000400BA +00000887047B002200260031003C00001321153E01333216173E01333216151121113426 +232206151121113426232206151121131133112516171615113311342726251617161511 +3311342726BA014F49C681D49D1B54DE81D4DBFEAC6B6B8095FEAC6B6B8095FEB1648702 +5B0908478C533502E30908478C53350460AE6564AC4A8076EFE8FD5C02D09F9EBEABFD5C +02D09F9EBEA4FD5503FCFC680398110B0C68BEFD940240C15B3A130B0C68BEFD940240C1 +5B3A0000000300BA00000548047B000A000E002200000116171615113311342726251133 +112721153E0133321615112111342623220615112104000908478C5335FCC287EB014F49 +C681D4DBFEAC6B6B8095FEB1040D0B0C68BEFD940240C15B3A02FC68039864AE6564EFE8 +FD5C02D09F9EBEA4FD55000000040071FFE30475047B000B0013001B0023000001320011 +10002322001110001316323711262207031106070610171601113637361027260273F001 +12FEEEF0F1FEEF01118233783333783364342770702701DA3328707028047BFEC8FEECFE +EDFEC70139011301140138FBD70B0B03BA0B0BFC6B03701D2D80FE24802D0352FC921C2D +8101DB802D00000000040071FE5604F0047B000F001A001E002D00002511211121153E01 +333200100223222601342726272627113637360111231101112623220706151417161716 +333201BFFEB2014E3AB17CCB00FFFFCB7CB1028A0F16392C3C3C2C5EFCD886027F191AA5 +5D5F0E164D4BA51AA8FDAE0608A86461FEBCFDF0FEBC6101A69E4B734F3D20FC7A203D82 +FD6F0548FAB8019003CA0382829F9E4A7468690000040071FE5604F0047B000F001A001E +002D0000250E012322021000333216173521112101141716171106070607060133112301 +163332373637363534272623220703A23AB17CCBFF00FFCB7CB13A014EFEB2FD3C5E2C3C +3C2C39160F03288686FE07191AA54B4D160E5F5DA51A19A864610144021001446164A8F9 +F803949F823D200386203D4F734BFC320548FC48036968744A9E9F8282030000000200BA +000003DF047B000300150000011133112721153E0133321F01152E01232206151121011E +86EA014E3ABA851B0F341F492C9CA7FEB203FCFC68039864AE66630307851211CBBEFD7A +0002006FFFE303C7047B001D0045000001060706151417161F0116171615140736373635 +3427262F012627263534031E013332363534262F012E0135343633321617152E01232206 +1514161F011E01151406232226270169271C4B26277134A53D4225251D552B2E84339039 +47D353A04F6A714C91348F76E0CE66B44C4A5C5F6F70507833A184F7D85AC36C03F90F17 +3D766630332210333B407B523F101742736C3337270F2A37436F54FCFE37385E554E4F2C +102C9788A6B5201F7A31245958444C230F2F9E90A4C025250002003700000388059E0007 +001B0000252637112311061613112115211114163B011521222635112335331101D02A03 +87015C90017BFE854B73BDFEADD5A287876A557C03FFFC37AD4E0528FEAC64FD55894E64 +9FD2027564015400000300B1FFE505440460000A000E0022000025262726351123111417 +16051123111721350E0123222635112111141633323635112101F90908478C5335034387 +EBFEAC49C681D4DB01546B6B80950154530B0C68BE026CFDC0C15B3A020398FC6864AE65 +64EFE802A4FD309F9EBEA402AB0000000002003D000004B104600003000A000013013301 +25210901330121CD015983FEA3FEF10154015E015E64FE5CFED403FCFC68039864FC5403 +ACFBA00000030056000006F204600003000700140000011333032113330325211B01211B +013301210B012103F1F087F2FC62F087F2FEF90154E6E5014EE6E564FEDBFECAF1F2FEC7 +03FCFC680398FC68039864FC96036AFC96036AFBA00396FC6A0000000002004C0000051C +04600003000F000009013301252109013309012109012301011302AB97FD55FEA2019001 +1D011D7CFEA501E5FE70FEE3FEE37C015B03FCFC68039864FE81017FFE2DFD73017FFE81 +01D300000002003DFE5604C30460000300120000130137012521090133010E012B013533 +323637D201B23EFE95FEE6015E015D015F6CFE1450927C939358512B03FCFBDB99038C64 +FC970369FB38C77B64435900000200580000046204600003000D00000901330125211501 +211521350121035CFD768C028AFC8903F1FD770289FBF60289FD9003FCFC6803986464FC +6864640398000000FFFF00100000056805D5100600240000FFFF00C9000004EC05D51006 +00250000FFFF0073FFE3052705F0100600260000FFFF00C9000005B005D5100600270000 +FFFF00C90000048B05D5100600280000FFFF00C90000042305D5100600290000FFFF0073 +FFE3058B05F01006002A0000FFFF00C90000053B05D51006002B0000FFFF0097000002F6 +05D5100617730000FFFFFF96FE66019305D51006002D0000FFFF00C90000056A05D51006 +002E0000FFFF00C90000046A05D51006002F0000FFFF00C90000061F05D5100600300000 +FFFF00C90000053305D5100600310000FFFF0073FFE305D905F0100600320000FFFF00C9 +0000048D05D5100600330000FFFF0073FEF805D905F0100600340000FFFF00C900000554 +05D5100600350000FFFF0087FFE304A205F0100600360000FFFFFFFA000004E905D51006 +00370000FFFF00B2FFE3052905D5100600380000FFFF00100000056805D5100600390000 +FFFF0044000007A605D51006003A0000FFFF003D0000053B05D51006003B0000FFFFFFFC +000004E705D51006003C0000FFFF005C0000051F05D51006003D0000FFFF007BFFE3042D +047B100600440000FFFF00BAFFE304A40614100600450000FFFF0071FFE303E7047B1006 +00460000FFFF0071FFE3045A0614100600470000FFFF0071FFE3047F047B100600480000 +FFFF002F000002F80614100600490000FFFF0071FE56045A047B1006004A0000FFFF00BA +0000046406141006004B0000FFFF00C10000017906141006004C0000FFFFFFDBFE560179 +06141006004D0000FFFF00BA0000049C06141006004E0000FFFF00C10000023906141006 +17690000FFFF00BA0000071D047B100600500000FFFF00BA00000464047B100600510000 +FFFF0071FFE30475047B100600520000FFFF00BAFE5604A4047B100600530000FFFF0071 +FE56045A047B100600540000FFFF00BA0000034A047B100600550000FFFF006FFFE303C7 +047B100600560000FFFF0037000002F2059E100600570000FFFF00AEFFE30458047B1006 +00580000FFFF003D0000047F0460100600590000FFFF00560000063504601006005A0000 +FFFF003B0000047904601006005B0000FFFF003DFE56047F04601006005C0000FFFF0058 +000003DB04601006005D000000040088FFE3049005F00007000C00140019000000200010 +00200010013611102F01262207111632370106111017019001F6010AFEF6FE0AFEF802D8 +CCCC64337B34347B33FEBACACA05F0FE73FD0DFE73018D02F3FC238F01D401D58F300F0F +FAD90F0F04F790FE2CFE2D900002006B000004AC05D50003000E00000111331137112115 +213521110535250236CA62014AFBDC014AFE9901670571FAF3050D64FA8F6464050D4864 +48000000000200820000049A05F000100028000037210136373610272627171615140E01 +03012433320415140E01070121152137360037361026232207FB0100012960224C6C4462 +035A4582D1FEE70103B5F3011F30515DFEFA0228FBE80102019E3D79876D98C16401CD95 +408F01395C39180470A864BACFFEDD043968F4CC62AC9691FE69646405024162BF0119A8 +950000000003009CFFE3047305F00024002A0030000005222735171633323711262B0135 +333237112623220F013536333204151406071E0115140435363534262719013E01353402 +2BBBD421C4AA654F363FCCD43B323A4C9CD91BE6AFE6010C8D808EA2FED0CC755745641D +4A6A0C441002950A640802200A3C086840D1B27CAA211FC590DDF29255E86C8D240296FE +1A1D7958AC0000000003005A000004B805D5000300060011000001231333090121032111 +331523112111213503A7CB03C8FED4FE5101AF030193ADADFE70FDDF0571FAF304C1FCE3 +03CDFC3364FE5C01A47F000000030094FFE3048C05D500040008001E0000011123113601 +36102703112623220711211521110C0110042122273516333201FFC86701B6CCCC64316A +B4CE034BFE4501110118FED4FEBDB9D0BDDC81039101E0FDFD1BFCE65C01DC60FD4902D7 +0A4B02EF64FE2309F5FE46F93C88640000040071FFE304AA05F000040009001100250000 +2536111027010611101F0116323711262207133217152726200711363332001000232000 +1000037CCACAFE26CDCD643AAB2D28AB3FF4A7A82299FED65E4268F50105FEF0F6FEDFFE +EE01507063010C01185C01CAB3FE91FE239532100803220613028C3C6A0C362DFE6616FE +EFFE2FFEEA018D02DB01A50000020041000004D605D50003000A00000901330125211501 +2101210395FE0DD601F3FBD60495FDE7FE53021AFD170571FAF3050D6464FA8F05710000 +0007008BFFE3048B05F00004000C00240029003100390041000025362726270010171617 +11060713352E01353424201615140607151E011514042024353436131106070605163237 +11262207190116323711262205113637361027260358D10707C3FDBA5F212C2C204C8090 +00FF01BDFE908091A2FEF7FE12FEF7A390C307070135317031317031307230307201062C +20605F21644AEAE44E0227FEF84D1B1201FC121BFDDC0220B180B3D0D0B380B1200123C5 +8FD9E8E8D98FC5FD6C02664EE4EA6106060296070702A2FDD0070702300721FE04121B4D +01084D1B0004006AFFE304A305F0000400090011002500000106111017013611102F0126 +22071116323703222735171620371106232200100033200010000198CACA01DACDCD643A +AB2D28AB3FF4A7A82299012A5E4268F5FEFB0110F601210112FEB0056363FEF4FEE85CFE +36B3016F01DD95321008FCDE0613FD743C6A0C362D019A16011101D10116FE73FD25FE5B +FFFF0087FFE3048F05F0100600130000FFFF00E10000045A05D5100600140000FFFF0096 +0000044A05F0100600150000FFFF009CFFE3047305F0100600160000FFFF0064000004A4 +05D5100600170000FFFF009EFFE3046405D5100600180000FFFF008FFFE3049605F01006 +00190000FFFF00A80000046805D51006001A0000FFFF008BFFE3048B05F01006001B0000 +FFFF0081FFE3048705F01006001C0000FFFF00C1000001790614100605540000FFFF0082 +FEA206EB029D100605550000FFFF009DFE0C05280366100605590000FFFF007DFFDA031B +03521006055C0000FFFFFFABFE0C03400286100605700000FFFFFFABFE0C036203B61006 +055F0000FFFF009DFE0C052803661006055A0000FFFF0090000006DC0614100605640000 +FFFF0082FE0C05C0034A100605720000FFFF0090FFC905C706141006056B0000FFFF0090 +FEC8051806141006056C0000FFFF008CFE14045E02F31006056D0000FFFF0093FEB50548 +03B61006056E0000FFFF0082FE0C091A02EE100605600000FFFF0075FE0C04B2042A1006 +05660000FFFF0082FFA4079E0514100605690000FFFF0082FE0C091302E5100605620000 +FFFF006BFE48059B05141006056A0000FFFFFFABFE0C036202261006055E0000FFFF0082 +FE0C091A04B0100605610000FFFF0082FFEC06EB0320100605570000FFFF0082FFEC06EB +041A100605580000FFFF009DFE0C052804B01006055B0000FFFF007DFFDA031B04B01006 +055D0000FFFF0082FE0C091303B6100605630000FFFF0090000006DC0614100605650000 +FFFF0075FE0C04B20546100605670000FFFF0082FFEC06EB029D1006058E0000FFFF0093 +FEB5054802EE100605D30000FFFF0082FFA4079E03D9100605BA0000FFFF006BFE48059B +03D91006058F0000FFFFFFECFED4028102581226183C00001007172101DAFED4FFFFFFEC +FED404C0032F1226160B0000100717210271FED40003FFECFFBD045303E5000F002D003D +000001363736353427262322070615141716073237262726353437361726273516170417 +16151407062322270623213501161514070607163332373635342726022A2422270F163A +4117160715F9344E2D0F122D304D2C51DBDC01053B0E284AAF839A7892FEE1034106620C +1134317E1007211D010D1B40483D2E25342D2B231E2576880B69454E4054535A09270EB9 +43B4D6D93439673D716C29B8014425278A720E132E431E213C4E45000001FFEC000004C0 +032F001E0000012627262726073536373217041715060706070607062B01353332373637 +3603B7536755B452A1484BA2AC0102DC4C58A64A914BDDA3E4C8E38168745E021D171713 +100706B807012334629A18346242811B50B8483A6A560000FFFFFFECFED402ED02581027 +1722015DFED41206183C00000001FFEC000004C90614001F000029013521323736353427 +012635343736370115050607061514170116151407060230FDBC0230932E1036FECA320A +1F6802E9FDAD4715061F0113663E5FB86824244542017C3D511E26762B0136BAFA1E280B +192025FEB67A7C71659B00000001FFEC000002A90614000D000001140706232135213237 +3635113302A957509AFE840145632C31B80173B2655CB82C316A04950002FFECFFCE043C +026D00150025000025062322270623213521323637363736333217161514251633323736 +3534272623220706070603FA6193CE6E4068FECA010A34570514875E51B05B61FDF03E9F +2F1334282A582D2E2A130734666230B84731B550385459B88F4E451235454B26291E1B64 +25000000FFFFFFEC0000028103E81226183C00001007172101DA03520001FFECFFE3066E +02EE00310000250607062B0135333237363D013315141716333237363533141716373619 +013311140706070623222726270607062322272601E42B384C63E6AF632C50B82C2B686D +2C25B813406E8EB85C4B6625233F3789123060444162483C8A3B212EB82C5064C09C4064 +637A67C2CD32AA010201160126FEAAC7715C1809193D849C21183128FFFFFFEC000003F8 +042A100614C20000FFFFFFEC0000033F05141027172101A9047E1006172B00000002FFEC +0000069602E5000C002E000001060733323736353427262322032122272627062B013533 +3237363D013315141617363736373633321716151407060434A891BBED81BA8B25304CBA +FEEC4A4E412766ACE6AF632C50B8122D655F99904B55736BBAB8CA01E66CC23F5B468713 +05FDC92A233D8AB82C5064724E1850328654893F212744ECA96D7800FFFFFFEC0000033F +0514100614CE0000FFFFFFECFFE3066E04B01226161100001007172302EE0320FFFFFFEC +000002ED03E81226183C000010071722015D0352FFFFFFEC000002ED04E210271723015D +03521206183C0000FFFFFFEC000004C0044C1226160B000010071721027103B6FFFFFFEC +0000069603B610271721023F0320120616140000FFFFFFEC000003F80546100614C60000 +FFFF00C1FED4048D06141027172103E6FED4120616310000FFFF00C1FED406CC06141027 +1721047DFED41206161F0000000300C1FFBD062D06140027003700470000131133111417 +163B0132372627263534373617262735161704171615140706232227062B012227260116 +151407060716333237363534272605363736353427262322070615141716C1B8312C638E +344E2D0F122D304D2C51DFD80100400E284AAF839A7892E39A5057044606620C1134317D +1107211DFEBA2422270F163A4117160715017304A1FB6B6A312C0B69454E4054535A0927 +0EB944B3D1DE3439673D716C295C65013B252793690E132E431E213C4E45A91B40483D2E +25342D2B231E2576000100C1000006CC061400280000131133111417163B013237363736 +372627262726073536373217041715060706070607062B01222726C1B8312C6387E38168 +745E65536755B452A1484BA2AC0102DC4C58A64A914BDDA3DA9A5057017304A1FB6B6A31 +2C483A6A5623171713100706B807012334629A18346242811B505C65000200C100000844 +0614000C0028000025333237362726272623220706251133111417163321113311122536 +3332171615140706290122272604A9BBED81BB01028925305377B1FB90B8312C63012EB8 +D901145C447569BAB8CAFEE4FC5C9A5057B83F5D4487130551780504A1FB6B6A312C055C +FB0E013F63212745EBA96D785C650000FFFF00C1FED404F90614102717220369FED41206 +16310000000100C10000063F061400290000131133111417163321323736353427012635 +343736370115050607061514170116151407062321222726C1B8312C630159932E1036FE +CA320A1F6802E9FDAD4715061F0113663E5FDFFE5C9A5057017304A1FB6B6A312C682424 +4542017C3D511E26762B0136BAFA1E280B192025FEB67A7C71659B5C65000000000200C1 +FFCE06160614000F002F0000251633323736353427262322070607060506232227062B01 +222726351133111417163B0132363736373633321716151404063E9F2F1334282A582D2E +2A130701C46193CE6E4068FA9A5057B8312C639734570514875E51B05B61C7451235454B +26291E1B6425B26662305C65B204A1FB6B6A312C4731B550385459B88F000000FFFF00C1 +0000048D06141027172103E60352120616310000000100C1FFE3087A0614003B00001311 +33111417163B013237363D01331514171633323736353314171637361901331114070607 +06232227262706070623222726270607062B01222726C1B8312C636E632C50B82C2B686D +2C25B813406E8EB85C4B6625233F3789123060444162483C292B384C63DC9A5057017304 +A1FB6B6A312C2C5064C09C4064637A67C2CD32AA010201160126FEAAC7715C1809193D84 +9C21183128493B212E5C6500000100C100000668061400240000131133111417163B0132 +372627263510373633152206141716333237251505042B01222726C1B8312C6373A1CA4B +3458CC7DFBDABA3E5346374A0120FE5CFEA2B2B29A5057017304A1FB6B6A312C5D183B64 +8C01087D4DA989FF34462181B8C5A45C65000000FFFF00C1000005AF0614102717210419 +047E120616320000000200C1000008A20614002B00380000131133111417163B01323736 +3D01331514161736373637363332171615140706290122272627062B0122272601060733 +323736353427262322C1B8312C636E632C50B8122D655F99904B55736BBAB8CAFEE4FEEC +4A4E412766ACDC9A5057057FA891BBED81BA8B25304C017304A1FB6B6A312C2C5064724E +1850328654893F212744ECA96D782A233D8A5C6501256CC23F5B468713050000FFFF00C1 +000005AF061410271722039C047E120616320000FFFF00C1FFE3087A06141027172304FA +0320120616250000FFFF00C1000004F906141027172203690352120616310000FFFF00C1 +000004F906141027172303690352120616310000FFFF00C1000006CC061410271721047D +03B61206161F0000FFFF00C1000008A2061410271721044B0320120616280000FFFF00C1 +0000084406141027172105370352120616200000FFFF00C10000066806141027172103E7 +04B0120616260000000100C10000048D0614001700002506232122272635113311141716 +3B013237363D013315140431489DFEB69A5057B8312C63DC632C31B856565C65B204A1FB +6B6A312C2C316AD9D9BB0000000200C1000005AF0614002A003A00001311331114171633 +213237363736370607062726353437363736333217161716151407060706232122272601 +363534272607060706071417163332C1B8312C63011454974F3C1F0F3F61824E62081796 +4E4C5A42602E174E4A7C6D91FE659A5057040529421F2C3428280137282A48017304A1FB +6B6A312C170C5D30323702024557812D33944524324866338CD08F882C275C6501582B4D +3B331901012A293350261900000200C800460A21053B0003000700000133112301112111 +052E8D8DFB9A0959015F02C3FC2404F5FB0B0000000300C800460A21053B00030007000B +0000371121112711211125113311C809598DF7C103D98D4604F5FB0B8D03DBFC258C02C3 +FD3D0000000400C800460A21053B0016001A001E00220000013437363736333217161716 +1514070607062227262726011121112711211125113311073010111A172624181A111010 +111A184918191210F99809598DF7C103D98D02C324171A121010101C1724251819121010 +111A18FDA804F5FB0B8D03DBFC258C02C3FD3D00000500C800460A21053B0016002C0030 +003400380000012227262726343736373633321716171615140706070601222726272634 +37363736333217161716140706070601112111271121112511331108B124171A12101010 +1C1724251819121010111A18FDC524181A120F0F111B172524181A121010111B17FA0809 +598DF7C103D98D013F10101B18481819131010111B172524181A1110021110111C174818 +1A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D000600C800460A21 +053B0016002B004100450049004D00000122272627263437363736333217161716151407 +060706012227262726343736373632171617161407060706012227262726343736373633 +3217161716140706070601112111271121112511331108B124171A121010101C17242518 +19121010111A18FECE24171A131010111C1748181A121010111B17FED224181A120F0F11 +1B172524181A121010111B17FA0809598DF7C103D98D013F10101B18481819131010111B +172524181A111001090F111B174A171A121010111B1748191A120F010810111C1748181A +121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D00000700C800460A21 +053B0015002B00410057005B005F00630000013437363736321716171614070607062322 +272627260034373637363332171617161514070607062227262724343736373632171617 +161514070607062322272627013437363736333217161716140706070622272627260111 +21112711211125113311062710111A1848181A121010101C17242518191210021210111B +1724251819121010111A1848181A12FDDE10111A1848181A121010101C17242518191202 +0210111B1724251819121010111A1848181A1210F88F09598DF7C103D98D03CC24181A11 +1010101B174A1719131010111B17FDE94A1719131010111B172524181A111010101B174A +1719131010111B172524181A111010101B025324181A111010101B174A1719131010111B +17FC9F04F5FB0B8D03DBFC258C02C3FD3D000000000800C800460A21053B0015002B0041 +0057006E00720076007A0000013437363736321716171614070607062322272627260034 +373637363332171617161514070607062227262724343736373632171617161514070607 +062322272627013437363736333217161716140706070622272627260534373637363332 +171617161514070607062227262726011121112711211125113311062710111A1848181A +121010101C17242518191210021210111B1724251819121010111A1848181A12FDDE1011 +1A1848181A121010101C172425181912020210111B1724251819121010111A1848181A12 +10FEF710111A172624181A111010111A184918191210F99809598DF7C103D98D03CC2418 +1A111010101B174A1719131010111B17FDE94A1719131010111B172524181A111010101B +174A1719131010111B172524181A111010101B025324181A111010101B174A1719131010 +111B17E424171A121010101C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02 +C3FD3D00000900C800460A21053B0014002A004000550069007F00830087008B00000122 +272627263437363736321716171614070607060322272627263534373637363217161716 +140706070620222726272634373637363332171617161714070607002227262726273437 +36373632171617161407060702222726272E013736373632171617161407060700222726 +272635343736373633321716171E0107060701112111271121112511331107A424171A13 +1010111C1748181A121010111B172524171A131010111C1748181A121010111B17FECD4A +1819121010111A172624171A11100111111A02554A161A12100111111B1748181A120F0F +111B174A161A12100111111B1748181A120F0F111BFD7E4A1819121010111A172624171A +11100111111AFA1C09598DF7C103D98D035210111C1748181A120F0F111B174A161A1310 +FDEF10111B172524171A131010111C1748181A121010111B1847181A131010111C172424 +181A12020210111B172524181A111010101B1848181913FDDE10111B1847181A13101011 +1C1748181A12020210111B172524181A111010101B1848181913FCE304F5FB0B8D03DBFC +258C02C3FD3D0000000400C800460A21053B00150019001D002100000134373637363217 +161716151407060706222726272601112111271121112511331102CA10111A174A181912 +1010111A1848191A1110FDFE09598DF7C103D98D02C324171A121010101C172425181912 +1010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D000000000500C800460A21053B0015 +002C00300034003800000134373637363217161716151407060706222726272625343736 +3736333217161716151407060706222726272601112111271121112511331102CC10101B +174A1719131010111B1848181A1110046410111A172624181A111010111A184918191210 +F99809598DF7C103D98D02C324171A121010101C1724251819121010111A182524171A12 +1010101C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D00000600C8 +00460A21053B0015002C00420046004A004E000001343736373632171617161514070607 +062227262726012227262726343736373633321716171615140706070601222726272634 +37363736333217161716140706070601112111271121112511331102CA10111A174A1819 +121010111A1848191A111005E724171A121010101C1724251819121010111A18FDC52418 +1A120F0F111B172524181A121010111B17FA0809598DF7C103D98D02C324171A12101010 +1C1724251819121010111A18FEA110101B18481819131010111B172524181A1110021110 +111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D000000 +000700C800460A21053B0015002C00410057005B005F0063000001343736373632171617 +161514070607062227262726012227262726343736373633321716171615140706070601 +222726272634373637363217161716140706070601222726272634373637363332171617 +16140706070601112111271121112511331102CA10111A174A1819121010111A1848191A +111005E724171A121010101C1724251819121010111A18FECE24171A131010111C174818 +1A121010111B17FED224181A120F0F111B172524181A121010111B17FA0809598DF7C103 +D98D02C324171A121010101C1724251819121010111A18FEA110101B1848181913101011 +1B172524181A111001090F111B174A171A121010111B1748191A120F010810111C174818 +1A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D000800C800460A21 +053B0015002B00410057006D007100750079000001343736373632171617161514070607 +062227262726013437363736321716171614070607062322272627260034373637363332 +171617161514070607062227262724343736373632171617161514070607062322272627 +0134373637363332171617161407060706222726272601112111271121112511331102CA +10111A174A1819121010111A1848191A1110035D10111A1848181A121010101C17242518 +191210021210111B1724251819121010111A1848181A12FDDE10111A1848181A12101010 +1C172425181912020210111B1724251819121010111A1848181A1210F88F09598DF7C103 +D98D02C324171A121010101C1724251819121010111A18012E24181A111010101B174A17 +19131010111B17FDE94A1719131010111B172524181A111010101B174A1719131010111B +172524181A111010101B025324181A111010101B174A1719131010111B17FC9F04F5FB0B +8D03DBFC258C02C3FD3D0000000900C800460A21053B0015002B00410057006D00840088 +008C00900000013437363736321716171615140706070622272627260134373637363217 +161716140706070623222726272600343736373633321716171615140706070622272627 +243437363736321716171615140706070623222726270134373637363332171617161407 +060706222726272605343736373633321716171615140706070622272627260111211127 +1121112511331102CA10111A174A1819121010111A1848191A1110035D10111A1848181A +121010101C17242518191210021210111B1724251819121010111A1848181A12FDDE1011 +1A1848181A121010101C172425181912020210111B1724251819121010111A1848181A12 +10FEF710111A172624181A111010111A184918191210F99809598DF7C103D98D02C32417 +1A121010101C1724251819121010111A18012E24181A111010101B174A1719131010111B +17FDE94A1719131010111B172524181A111010101B174A1719131010111B172524181A11 +1010101B025324181A111010101B174A1719131010111B17E424171A121010101C172425 +1819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D00><000A00C800460A21053B +0015002A00400056006B007F00950099009D00A100000134373637363217161716151407 +060706222726272625222726272634373637363217161716140706070603222726272635 +343736373632171617161407060706202227262726343736373633321716171617140706 +0700222726272627343736373632171617161407060702222726272E0137363736321716 +17161407060700222726272635343736373633321716171E010706070111211127112111 +2511331102CA10111A174A1819121010111A1848191A111004DA24171A131010111C1748 +181A121010111B172524171A131010111C1748181A121010111B17FECD4A181912101011 +1A172624171A11100111111A02554A161A12100111111B1748181A120F0F111B174A161A +12100111111B1748181A120F0F111BFD7E4A1819121010111A172624171A11100111111A +FA1C09598DF7C103D98D02C324171A121010101C1724251819121010111A18B410111C17 +48181A120F0F111B174A161A1310FDEF10111B172524171A131010111C1748181A121010 +111B1847181A131010111C172424181A12020210111B172524181A111010101B18481819 +13FDDE10111B1847181A131010111C1748181A12020210111B172524181A111010101B18 +48181913FCE304F5FB0B8D03DBFC258C02C3FD3D0000000500C800460A21053B0015002B +002F00330037000000222726272634373637363332171617161514070607012227262726 +3534373637363217161716140706070601112111271121112511331104724A1719131010 +111B172524181A111010111AFDAD24181A111010101B174A1719131010111B17FE6D0959 +8DF7C103D98D014010111A1848181A121010111B172425181912020210111B1724251819 +121010111A1848181A1210FCF404F5FB0B8D03DBFC258C02C3FD3D000000000600C80046 +0A21053B0016001A001E00220038004E0000013437363736333217161716151407060706 +222726272601112111271121112511331104222726272634373637363332171617161514 +07060701222726272635343736373632171617161407060706073010111A172624181A11 +1010111A184918191210F99809598DF7C103D98DFEB74A1719131010111B172524181A11 +1010111AFDAD24181A111010101B174A1719131010111B1702C324171A121010101C1724 +251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D1F10111A1848181A121010 +111B172425181912020210111B1724251819121010111A1848181A121000000700C80046 +0A21053B0016002C003000340038004E0064000001222726272634373637363332171617 +161514070607060122272627263437363736333217161716140706070601112111271121 +112511331104222726272634373637363332171617161514070607012227262726353437 +3637363217161716140706070608B124171A121010101C1724251819121010111A18FDC5 +24181A120F0F111B172524181A121010111B17FA0809598DF7C103D98DFEB74A17191310 +10111B172524181A111010111AFDAD24181A111010101B174A1719131010111B17013F10 +101B18481819131010111B172524181A1110021110111C1748181A121010111B1847181A +1310FCF604F5FB0B8D03DBFC258C02C3FD3D1F10111A1848181A121010111B1724251819 +12020210111B1724251819121010111A1848181A1210000800C800460A21053B0016002B +004100450049004D00630079000001222726272634373637363332171617161514070607 +060122272627263437363736321716171614070607060122272627263437363736333217 +161716140706070601112111271121112511331104222726272634373637363332171617 +1615140706070122272627263534373637363217161716140706070608B124171A121010 +101C1724251819121010111A18FECE24171A131010111C1748181A121010111B17FED224 +181A120F0F111B172524181A121010111B17FA0809598DF7C103D98DFEB74A1719131010 +111B172524181A111010111AFDAD24181A111010101B174A1719131010111B17013F1010 +1B18481819131010111B172524181A111001090F111B174A171A121010111B1748191A12 +0F010810111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD +3D1F10111A1848181A121010111B172425181912020210111B1724251819121010111A18 +48181A121000000900C800460A21053B00140029003E00530057005B005F007400890000 +013437363736321716171614070607062227262726003437363736321716171615140706 +070622272627243437363736321716171615140706070622272627013437363736321716 +171614070607062227262726011121112711211125113311042227262726343736373633 +321716171614070607012227262726343736373632171617161407060706062710111A18 +48181A121010101C174918191210021210111B17491819121010111A1848181A12FDDE10 +111A1848181A121010101C1749181912020210111B17491819121010111A1848181A1210 +F88F09598DF7C103D98DFEB7491819131010111B172524181A111010111AFDAD24181A11 +1010101B17491819131010111B1703CC24181A111010101B17491819131010111B17FDE9 +491819131010111B172524181A111010101B17491819131010111B172524181A11101010 +1B025324181A111010101B17491819131010111B17FC9F04F5FB0B8D03DBFC258C02C3FD +3D1F10111A1848181A121010111B1749181912020210111B17491819121010111A184818 +1A1210000000000A00C800460A21053B0015002B00410057006E00720076007A009000A6 +000001343736373632171617161407060706232227262726003437363736333217161716 +151407060706222726272434373637363217161716151407060706232227262701343736 +373633321716171614070607062227262726053437363736333217161716151407060706 +222726272601112111271121112511331104222726272634373637363332171617161514 +07060701222726272635343736373632171617161407060706062710111A1848181A1210 +10101C17242518191210021210111B1724251819121010111A1848181A12FDDE10111A18 +48181A121010101C172425181912020210111B1724251819121010111A1848181A1210FE +F710111A172624181A111010111A184918191210F99809598DF7C103D98DFEB74A171913 +1010111B172524181A111010111AFDAD24181A111010101B174A1719131010111B1703CC +24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A111010 +101B174A1719131010111B172524181A111010101B025324181A111010101B174A171913 +1010111B17E424171A121010101C1724251819121010111A18FDA804F5FB0B8D03DBFC25 +8C02C3FD3D1F10111A1848181A121010111B172425181912020210111B17242518191210 +10111A1848181A121000000B00C800460A21053B0014002A004000550069007F00830087 +008B00A100B7000001222726272634373637363217161716140706070603222726272635 +343736373632171617161407060706202227262726343736373633321716171617140706 +0700222726272627343736373632171617161407060702222726272E0137363736321716 +17161407060700222726272635343736373633321716171E010706070111211127112111 +251133110422272627263437363736333217161716151407060701222726272635343736 +37363217161716140706070607A424171A131010111C1748181A121010111B172524171A +131010111C1748181A121010111B17FECD4A1819121010111A172624171A11100111111A +02554A161A12100111111B1748181A120F0F111B174A161A12100111111B1748181A120F +0F111BFD7E4A1819121010111A172624171A11100111111AFA1C09598DF7C103D98DFEB7 +4A1719131010111B172524181A111010111AFDAD24181A111010101B174A171913101011 +1B17035210111C1748181A120F0F111B174A161A1310FDEF10111B172524171A13101011 +1C1748181A121010111B1847181A131010111C172424181A12020210111B172524181A11 +1010101B1848181913FDDE10111B1847181A131010111C1748181A12020210111B172524 +181A111010101B1848181913FCE304F5FB0B8D03DBFC258C02C3FD3D1F10111A1848181A +121010111B172425181912020210111B1724251819121010111A1848181A121000000006 +00C800460A21053B0015002B004100450049004D00000022272627263437363736333217 +161716151407060725222726272634373637363332171617161407060706012227262726 +3534373637363217161716140706070601112111271121112511331104724A1719131010 +111B172524181A111010111AFEB624171A121010101C1724251819121010111A18FED224 +181A111010101B174A1719131010111B17FE6D09598DF7C103D98D014010111A1848181A +121010111B172425181912F910111A174A181A111010111A184918191210010910111B17 +24251819121010111A1848181A1210FCF404F5FB0B8D03DBFC258C02C3FD3D0000000007 +00C800460A21053B0015002B00410058005C006000640000002227262726343736373633 +321716171615140706072522272627263437363736333217161716140706070601222726 +272635343736373632171617161407060706053437363736333217161716151407060706 +222726272601112111271121112511331104724A1719131010111B172524181A11101011 +1AFEB624171A121010101C1724251819121010111A18FED224181A111010101B174A1719 +131010111B1704D510111A172624181A111010111A184918191210F99809598DF7C103D9 +8D014010111A1848181A121010111B172425181912F910111A174A181A111010111A1849 +18191210010910111B1724251819121010111A1848181A12108F24171A121010101C1724 +251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D00000800C800460A21053B +0015002B00410058006E00720076007A0000002227262726343736373633321716171615 +140706072522272627263437363736333217161716140706070601222726272635343736 +373632171617161407060706012227262726343736373633321716171615140706070601 +22272627263437363736333217161716140706070601112111271121112511331104724A +1719131010111B172524181A111010111AFEB624171A121010101C172425181912101011 +1A18FED224181A111010101B174A1719131010111B17065624171A121010101C17242518 +19121010111A18FDC524181A120F0F111B172524181A121010111B17FA0809598DF7C103 +D98D014010111A1848181A121010111B172425181912F910111A174A181A111010111A18 +4918191210010910111B1724251819121010111A1848181A1210FDED10101B1848181913 +1010111B172524181A1110021110111C1748181A121010111B1847181A1310FCF604F5FB +0B8D03DBFC258C02C3FD3D000000000900C800460A21053B0015002B00410058006D0083 +0087008B008F000000222726272634373637363332171617161514070607252227262726 +343736373633321716171614070607060122272627263534373637363217161716140706 +070601222726272634373637363332171617161514070607060122272627263437363736 +321716171614070607060122272627263437363736333217161716140706070601112111 +271121112511331104724A1719131010111B172524181A111010111AFEB624171A121010 +101C1724251819121010111A18FED224181A111010101B174A1719131010111B17065624 +171A121010101C1724251819121010111A18FECE24171A131010111C1748181A12101011 +1B17FED224181A120F0F111B172524181A121010111B17FA0809598DF7C103D98D014010 +111A1848181A121010111B172425181912F910111A174A181A111010111A184918191210 +010910111B1724251819121010111A1848181A1210FDED10101B18481819131010111B17 +2524181A111001090F111B174A171A121010111B1748191A120F010810111C1748181A12 +1010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D000A00C800460A21053B +0015002B00410057006D00830099009D00A100A500000022272627263437363736333217 +161716151407060725222726272634373637363332171617161407060706012227262726 +353437363736321716171614070607062534373637363217161716140706070623222726 +272600343736373633321716171615140706070622272627243437363736321716171615 +140706070623222726270134373637363332171617161407060706222726272601112111 +271121112511331104724A1719131010111B172524181A111010111AFEB624171A121010 +101C1724251819121010111A18FED224181A111010101B174A1719131010111B1703CC10 +111A1848181A121010101C17242518191210021210111B1724251819121010111A184818 +1A12FDDE10111A1848181A121010101C172425181912020210111B172425181912101011 +1A1848181A1210F88F09598DF7C103D98D014010111A1848181A121010111B1724251819 +12F910111A174A181A111010111A184918191210010910111B1724251819121010111A18 +48181A12107A24181A111010101B174A1719131010111B17FDE94A1719131010111B1725 +24181A111010101B174A1719131010111B172524181A111010101B025324181A11101010 +1B174A1719131010111B17FC9F04F5FB0B8D03DBFC258C02C3FD3D000000000B00C80046 +0A21053B0015002B00410057006D0083009900B000B400B800BC00000022272627263437 +363736333217161716151407060725222726272634373637363332171617161407060706 +012227262726353437363736321716171614070607062534373637363217161716140706 +070623222726272600343736373633321716171615140706070622272627243437363736 +321716171615140706070623222726270134373637363332171617161407060706222726 +272605343736373633321716171615140706070622272627260111211127112111251133 +1104724A1719131010111B172524181A111010111AFEB624171A121010101C1724251819 +121010111A18FED224181A111010101B174A1719131010111B1703CC10111A1848181A12 +1010101C17242518191210021210111B1724251819121010111A1848181A12FDDE10111A +1848181A121010101C172425181912020210111B1724251819121010111A1848181A1210 +FEF710111A172624181A111010111A184918191210F99809598DF7C103D98D014010111A +1848181A121010111B172425181912F910111A174A181A111010111A1849181912100109 +10111B1724251819121010111A1848181A12107A24181A111010101B174A171913101011 +1B17FDE94A1719131010111B172524181A111010101B174A1719131010111B172524181A +111010101B025324181A111010101B174A1719131010111B17E424171A121010101C1724 +251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D00000C00C800460A21053B +0015002B00410056006C0082009700AB00C100C500C900CD000000222726272634373637 +363332171617161514070607252227262726343736373633321716171614070607060122 +272627263534373637363217161716140706070621222726272634373637363217161716 +140706070603222726272635343736373632171617161407060706202227262726343736 +373633321716171617140706070022272627262734373637363217161716140706070222 +2726272E013736373632171617161407060700222726272635343736373633321716171E +0107060701112111271121112511331104724A1719131010111B172524181A111010111A +FEB624171A121010101C1724251819121010111A18FED224181A111010101B174A171913 +1010111B17054924171A131010111C1748181A121010111B172524171A131010111C1748 +181A121010111B17FECD4A1819121010111A172624171A11100111111A02554A161A1210 +0111111B1748181A120F0F111B174A161A12100111111B1748181A120F0F111BFD7E4A18 +19121010111A172624171A11100111111AFA1C09598DF7C103D98D014010111A1848181A +121010111B172425181912F910111A174A181A111010111A184918191210010910111B17 +24251819121010111A1848181A121010111C1748181A120F0F111B174A161A1310FDEF10 +111B172524171A131010111C1748181A121010111B1847181A131010111C172424181A12 +020210111B172524181A111010101B1848181913FDDE10111B1847181A131010111C1748 +181A12020210111B172524181A111010101B1848181913FCE304F5FB0B8D03DBFC258C02 +C3FD3D000000000700C800460A21053B00140029003E00530057005B005F000001343736 +373632171617161407060706222726272600343736373632171617161514070607062227 +262724343736373632171617161514070607062227262701343736373632171617161407 +060706222726272601112111271121112511331101C110111A1848181A121010111B1749 +18191210021210101C17491819121010111A1848181A12FDDE10111A1848181A12101011 +1B1749181912020210101C17491819121010111A1848181A1210FCF509598DF7C103D98D +03CC24181A111010101B17491819131010111B17FDE9491819131010111B172524181A11 +1010101B17491819131010111B172524181A111010101B025324181A111010101B174918 +19131010111B17FC9F04F5FB0B8D03DBFC258C02C3FD3D000000000800C800460A21053B +00150019001D00210036004B006000750000013437363736333217161716140706070622 +272627260111211127112111251133110134373637363217161716140706070622272627 +260034373637363217161716151407060706222726272434373637363217161716151407 +06070622272627013437363736321716171614070607062227262726073010111A172624 +181A111010111A184918191210F99809598DF7C103D98DFC0610111A1848181A12101011 +1B174918191210021210101C17491819121010111A1848181A12FDDE10111A1848181A12 +1010111B1749181912020210101C17491819121010111A1848181A121002C324171A1210 +10101C17491819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D026D24181A1110 +10101B17491819131010111B17FDE9491819131010111B172524181A111010101B174918 +19131010111B172524181A111010101B025324181A111010101B17491819131010111B17 +0000000900C800460A21053B0016002C003000340038004E0064007A0090000001222726 +272634373637363332171617161514070607060122272627263437363736333217161716 +140706070601112111271121112511331101343736373632171617161407060706232227 +262726003437363736333217161716151407060706222726272434373637363217161716 +15140706070623222726270134373637363332171617161407060706222726272608B124 +171A121010101C1724251819121010111A18FDC524181A120F0F111B172524181A121010 +111B17FA0809598DF7C103D98DFC0610111A1848181A121010111B172425181912100212 +10101C1724251819121010111A1848181A12FDDE10111A1848181A121010111B17242518 +1912020210101C1724251819121010111A1848181A1210013F10101B1848181913101011 +1B172524181A1110021110111C1748181A121010111B1847181A1310FCF604F5FB0B8D03 +DBFC258C02C3FD3D026D24181A111010101B174A1719131010111B17FDE94A1719131010 +111B172524181A111010101B174A1719131010111B172524181A111010101B025324181A +111010101B174A1719131010111B17000000000A00C800460A21053B0016002B00410045 +0049004D00630079008F00A5000001222726272634373637363332171617161514070607 +060122272627263437363736321716171614070607060122272627263437363736333217 +161716140706070601112111271121112511331101343736373632171617161407060706 +232227262726003437363736333217161716151407060706222726272434373637363217 +161716151407060706232227262701343736373633321716171614070607062227262726 +08B124171A121010101C1724251819121010111A18FECE24171A131010111C1748181A12 +1010111B17FED224181A120F0F111B172524181A121010111B17FA0809598DF7C103D98D +FC0610111A1848181A121010111B17242518191210021210101C1724251819121010111A +1848181A12FDDE10111A1848181A121010111B172425181912020210101C172425181912 +1010111A1848181A1210013F10101B18481819131010111B172524181A111001090F111B +174A171A121010111B1748191A120F010810111C1748181A121010111B1847181A1310FC +F604F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A1719131010111B17FD +E94A1719131010111B172524181A111010101B174A1719131010111B172524181A111010 +101B025324181A111010101B174A1719131010111B17000B00C800460A21053B0015002B +00410057005B005F00630079008F00A500BB000001343736373632171617161407060706 +232227262726003437363736333217161716151407060706222726272434373637363217 +161716151407060706232227262701343736373633321716171614070607062227262726 +011121112711211125113311013437363736321716171614070607062322272627260034 +373637363332171617161514070607062227262724343736373632171617161514070607 +06232227262701343736373633321716171614070607062227262726062710111A184818 +1A121010101C17242518191210021210111B1724251819121010111A1848181A12FDDE10 +111A1848181A121010101C172425181912020210111B1724251819121010111A1848181A +1210F88F09598DF7C103D98DFC0610111A1848181A121010111B17242518191210021210 +101C1724251819121010111A1848181A12FDDE10111A1848181A121010111B1724251819 +12020210101C1724251819121010111A1848181A121003CC24181A111010101B174A1719 +131010111B17FDE94A1719131010111B172524181A111010101B174A1719131010111B17 +2524181A111010101B025324181A111010101B174A1719131010111B17FC9F04F5FB0B8D +03DBFC258C02C3FD3D026D24181A111010101B174A1719131010111B17FDE94A17191310 +10111B172524181A111010101B174A1719131010111B172524181A111010101B02532418 +1A111010101B174A1719131010111B170000000C00C800460A21053B0015002B00410057 +006E00720076007A009000A600BC00D20000013437363736321716171614070607062322 +272627260034373637363332171617161514070607062227262724343736373632171617 +161514070607062322272627013437363736333217161716140706070622272627260534 +373637363332171617161514070607062227262726011121112711211125113311013437 +363736321716171614070607062322272627260034373637363332171617161514070607 +062227262724343736373632171617161514070607062322272627013437363736333217 +16171614070607062227262726062710111A1848181A121010101C172425181912100212 +10111B1724251819121010111A1848181A12FDDE10111A1848181A121010101C17242518 +1912020210111B1724251819121010111A1848181A1210FEF710111A172624181A111010 +111A184918191210F99809598DF7C103D98DFC0610111A1848181A121010111B17242518 +191210021210101C1724251819121010111A1848181A12FDDE10111A1848181A12101011 +1B172425181912020210101C1724251819121010111A1848181A121003CC24181A111010 +101B174A1719131010111B17FDE94A1719131010111B172524181A111010101B174A1719 +131010111B172524181A111010101B025324181A111010101B174A1719131010111B17E4 +24171A121010101C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D02 +6D24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A1110 +10101B174A1719131010111B172524181A111010101B025324181A111010101B174A1719 +131010111B17000D00C800460A21053B0014002A004000550069007F00830087008B00A1 +00B700CD00E3000001222726272634373637363217161716140706070603222726272635 +343736373632171617161407060706202227262726343736373633321716171617140706 +0700222726272627343736373632171617161407060702222726272E0137363736321716 +17161407060700222726272635343736373633321716171E010706070111211127112111 +251133110134373637363217161716140706070623222726272600343736373633321716 +171615140706070622272627243437363736321716171615140706070623222726270134 +373637363332171617161407060706222726272607A424171A131010111C1748181A1210 +10111B172524171A131010111C1748181A121010111B17FECD4A1819121010111A172624 +171A11100111111A02554A161A12100111111B1748181A120F0F111B174A161A12100111 +111B1748181A120F0F111BFD7E4A1819121010111A172624171A11100111111AFA1C0959 +8DF7C103D98DFC0610111A1848181A121010111B17242518191210021210101C17242518 +19121010111A1848181A12FDDE10111A1848181A121010111B172425181912020210101C +1724251819121010111A1848181A1210035210111C1748181A120F0F111B174A161A1310 +FDEF10111B172524171A131010111C1748181A121010111B1847181A131010111C172424 +181A12020210111B172524181A111010101B1848181913FDDE10111B1847181A13101011 +1C1748181A12020210111B172524181A111010101B1848181913FCE304F5FB0B8D03DBFC +258C02C3FD3D026D24181A111010101B174A1719131010111B17FDE94A1719131010111B +172524181A111010101B174A1719131010111B172524181A111010101B025324181A1110 +10101B174A1719131010111B1700000800C800460A21053B00030007000B00210037004D +006300790000371121112711211125113311013437363736321716171614070607062322 +272627260034373637363332171617161514070607062227262724343736373632171617 +161514070607062322272627013437363736333217161716140706070622272627260534 +3736373632171617161514070607062227262726C809598DF7C103D98DFC0610111A1848 +181A121010111B17242518191210021210101C1724251819121010111A1848181A12FDDE +10111A1848181A121010111B172425181912020210101C1724251819121010111A184818 +1A1210FEF710111A174A1819121010111A1848191A11104604F5FB0B8D03DBFC258C02C3 +FD3D026D24181A111010101B174A1719131010111B17FDE94A1719131010111B17252418 +1A111010101B174A1719131010111B172524181A111010101B025324181A111010101B17 +4A1719131010111B17E424171A121010101C1724251819121010111A1800000900C80046 +0A21053B0016001A001E00220038004E0064007A00900000013437363736333217161716 +151407060706222726272601112111271121112511331101343736373632171617161407 +060706232227262726003437363736333217161716151407060706222726272434373637 +363217161716151407060706232227262701343736373633321716171614070607062227 +26272605343736373632171617161514070607062227262726073010111A172624181A11 +1010111A184918191210F99809598DF7C103D98DFC0610111A1848181A121010111B1724 +2518191210021210101C1724251819121010111A1848181A12FDDE10111A1848181A1210 +10111B172425181912020210101C1724251819121010111A1848181A1210FEF710111A17 +4A1819121010111A1848191A111002C324171A121010101C1724251819121010111A18FD +A804F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A1719131010111B17FD +E94A1719131010111B172524181A111010101B174A1719131010111B172524181A111010 +101B025324181A111010101B174A1719131010111B17E424171A121010101C1724251819 +121010111A18000A00C800460A21053B0016002C003000340038004E0064007A009000A6 +000001222726272634373637363332171617161514070607060122272627263437363736 +333217161716140706070601112111271121112511331101343736373632171617161407 +060706232227262726003437363736333217161716151407060706222726272434373637 +363217161716151407060706232227262701343736373633321716171614070607062227 +2627260534373637363217161716151407060706222726272608B124171A121010101C17 +24251819121010111A18FDC524181A120F0F111B172524181A121010111B17FA0809598D +F7C103D98DFC0610111A1848181A121010111B17242518191210021210101C1724251819 +121010111A1848181A12FDDE10111A1848181A121010111B172425181912020210101C17 +24251819121010111A1848181A1210FEF710111A174A1819121010111A1848191A111001 +3F10101B18481819131010111B172524181A1110021110111C1748181A121010111B1847 +181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A17191310 +10111B17FDE94A1719131010111B172524181A111010101B174A1719131010111B172524 +181A111010101B025324181A111010101B174A1719131010111B17E424171A121010101C +1724251819121010111A18000000000B00C800460A21053B0016002B004100450049004D +00630079008F00A500BB0000012227262726343736373633321716171615140706070601 +222726272634373637363217161716140706070601222726272634373637363332171617 +161407060706011121112711211125113311013437363736321716171614070607062322 +272627260034373637363332171617161514070607062227262724343736373632171617 +161514070607062322272627013437363736333217161716140706070622272627260534 +373637363217161716151407060706222726272608B124171A121010101C172425181912 +1010111A18FECE24171A131010111C1748181A121010111B17FED224181A120F0F111B17 +2524181A121010111B17FA0809598DF7C103D98DFC0610111A1848181A121010111B1724 +2518191210021210101C1724251819121010111A1848181A12FDDE10111A1848181A1210 +10111B172425181912020210101C1724251819121010111A1848181A1210FEF710111A17 +4A1819121010111A1848191A1110013F10101B18481819131010111B172524181A111001 +090F111B174A171A121010111B1748191A120F010810111C1748181A121010111B184718 +1A1310FCF604F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A1719131010 +111B17FDE94A1719131010111B172524181A111010101B174A1719131010111B17252418 +1A111010101B025324181A111010101B174A1719131010111B17E424171A121010101C17 +24251819121010111A18000C00C800460A21053B0015002B00410057005B005F00630079 +008F00A500BB00D100000134373637363217161716140706070623222726272600343736 +373633321716171615140706070622272627243437363736321716171615140706070623 +222726270134373637363332171617161407060706222726272601112111271121112511 +331101343736373632171617161407060706232227262726003437363736333217161716 +151407060706222726272434373637363217161716151407060706232227262701343736 +373633321716171614070607062227262726053437363736321716171615140706070622 +27262726062710111A1848181A121010101C17242518191210021210111B172425181912 +1010111A1848181A12FDDE10111A1848181A121010101C172425181912020210111B1724 +251819121010111A1848181A1210F88F09598DF7C103D98DFC0610111A1848181A121010 +111B17242518191210021210101C1724251819121010111A1848181A12FDDE10111A1848 +181A121010111B172425181912020210101C1724251819121010111A1848181A1210FEF7 +10111A174A1819121010111A1848191A111003CC24181A111010101B174A171913101011 +1B17FDE94A1719131010111B172524181A111010101B174A1719131010111B172524181A +111010101B025324181A111010101B174A1719131010111B17FC9F04F5FB0B8D03DBFC25 +8C02C3FD3D026D24181A111010101B174A1719131010111B17FDE94A1719131010111B17 +2524181A111010101B174A1719131010111B172524181A111010101B025324181A111010 +101B174A1719131010111B17E424171A121010101C1724251819121010111A180000000D +00C800460A21053B0015002B00410057006E00720076007A009000A600BC00D200E80000 +013437363736321716171614070607062322272627260034373637363332171617161514 +070607062227262724343736373632171617161514070607062322272627013437363736 +333217161716140706070622272627260534373637363332171617161514070607062227 +262726011121112711211125113311013437363736321716171614070607062322272627 +260034373637363332171617161514070607062227262724343736373632171617161514 +070607062322272627013437363736333217161716140706070622272627260534373637 +3632171617161514070607062227262726062710111A1848181A121010101C1724251819 +1210021210111B1724251819121010111A1848181A12FDDE10111A1848181A121010101C +172425181912020210111B1724251819121010111A1848181A1210FEF710111A17262418 +1A111010111A184918191210F99809598DF7C103D98DFC0610111A1848181A121010111B +17242518191210021210101C1724251819121010111A1848181A12FDDE10111A1848181A +121010111B172425181912020210101C1724251819121010111A1848181A1210FEF71011 +1A174A1819121010111A1848191A111003CC24181A111010101B174A1719131010111B17 +FDE94A1719131010111B172524181A111010101B174A1719131010111B172524181A1110 +10101B025324181A111010101B174A1719131010111B17E424171A121010101C17242518 +19121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A17 +19131010111B17FDE94A1719131010111B172524181A111010101B174A1719131010111B +172524181A111010101B025324181A111010101B174A1719131010111B17E424171A1210 +10101C1724251819121010111A18000E00C800460A21053B0014002A004000550069007F +00830087008B00A100B700CD00E300F90000012227262726343736373632171617161407 +060706032227262726353437363736321716171614070607062022272627263437363736 +333217161716171407060700222726272627343736373632171617161407060702222726 +272E013736373632171617161407060700222726272635343736373633321716171E0107 +060701112111271121112511331101343736373632171617161407060706232227262726 +003437363736333217161716151407060706222726272434373637363217161716151407 +060706232227262701343736373633321716171614070607062227262726053437363736 +3217161716151407060706222726272607A424171A131010111C1748181A121010111B17 +2524171A131010111C1748181A121010111B17FECD4A1819121010111A172624171A1110 +0111111A02554A161A12100111111B1748181A120F0F111B174A161A12100111111B1748 +181A120F0F111BFD7E4A1819121010111A172624171A11100111111AFA1C09598DF7C103 +D98DFC0610111A1848181A121010111B17242518191210021210101C1724251819121010 +111A1848181A12FDDE10111A1848181A121010111B172425181912020210101C17242518 +19121010111A1848181A1210FEF710111A174A1819121010111A1848191A111003521011 +1C1748181A120F0F111B174A161A1310FDEF10111B172524171A131010111C1748181A12 +1010111B1847181A131010111C172424181A12020210111B172524181A111010101B1848 +181913FDDE10111B1847181A131010111C1748181A12020210111B172524181A11101010 +1B1848181913FCE304F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A1719 +131010111B17FDE94A1719131010111B172524181A111010101B174A1719131010111B17 +2524181A111010101B025324181A111010101B174A1719131010111B17E424171A121010 +101C1724251819121010111A1800000900C800460A21053B00030007000B0022003A0050 +0066007C0092000037112111271121112511331101222726272635343736373633321716 +171614070607060322272627263534373637363332171617161514070607062022272627 +263437363736333217161716171407060701222726272627343736373632171617161407 +06070603222726272E013736373632171617161514070607060022272627263534373637 +3633321716171E01070607C809598DF7C103D98DFD8424171A121010101C172425181912 +1010111A182524171A121010101C1724251819121010111A18FECD4A171A121010111B17 +2524171A11100111101B023024171A12100111111B1748181A121010111B172524171A12 +100111111B1748181A121010111B17FD954A171A121010111B172524171A11100111101B +4604F5FB0B8D03DBFC258C02C3FD3D01F210111B172524181A111010111A174A17191310 +FDEF10111A172624171A121010111B1724251819121010111A1848181A121010111B1724 +25181912020210111B1724251819121010111A1848181A1210FDEE10111A1848181A1210 +10111B17242518191210021210111B1724251819121010111A1848181A12000A00C80046 +0A21053B0016001A001E0022003900510067007D009300A9000001343736373633321716 +171615140706070622272627260111211127112111251133110122272627263534373637 +363332171617161407060706032227262726353437363736333217161716151407060706 +202227262726343736373633321716171617140706070122272627262734373637363217 +161716140706070603222726272E01373637363217161716151407060706002227262726 +35343736373633321716171E01070607073010111A172624181A111010111A1849181912 +10F99809598DF7C103D98DFD8424171A121010101C1724251819121010111A182524171A +121010101C1724251819121010111A18FECD4A171A121010111B172524171A1110011110 +1B023024171A12100111111B1748181A121010111B172524171A12100111111B1748181A +121010111B17FD954A171A121010111B172524171A11100111101B02C324171A12101010 +1C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D01F210111B172524 +181A111010111A174A17191310FDEF10111A172624171A121010111B1724251819121010 +111A1848181A121010111B172425181912020210111B1724251819121010111A1848181A +1210FDEE10111A1848181A121010111B17242518191210021210111B1724251819121010 +111A1848181A12000000000B00C800460A21053B0016002C003000340038004F0067007D +009300A900BF000001222726272634373637363332171617161514070607060122272627 +263437363736333217161716140706070601112111271121112511331101222726272635 +343736373633321716171614070607060322272627263534373637363332171617161514 +070607062022272627263437363736333217161716171407060701222726272627343736 +37363217161716140706070603222726272E013736373632171617161514070607060022 +2726272635343736373633321716171E0107060708B124171A121010101C172425181912 +1010111A18FDC524181A120F0F111B172524181A121010111B17FA0809598DF7C103D98D +FD8424171A121010101C1724251819121010111A182524171A121010101C172425181912 +1010111A18FECD4A171A121010111B172524171A11100111101B023024171A1210011111 +1B1748181A121010111B172524171A12100111111B1748181A121010111B17FD954A171A +121010111B172524171A11100111101B013F10101B18481819131010111B172524181A11 +10021110111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD +3D01F210111B172524181A111010111A174A17191310FDEF10111A172624171A12101011 +1B1724251819121010111A1848181A121010111B172425181912020210111B1724251819 +121010111A1848181A1210FDEE10111A1848181A121010111B1724251819121002121011 +1B1724251819121010111A1848181A120000000C00C800460A21053B0016002B00410045 +0049004D0064007C009200A800BE00D40000012227262726343736373633321716171615 +140706070601222726272634373637363217161716140706070601222726272634373637 +363332171617161407060706011121112711211125113311012227262726353437363736 +333217161716140706070603222726272635343736373633321716171615140706070620 +222726272634373637363332171617161714070607012227262726273437363736321716 +1716140706070603222726272E0137363736321716171615140706070600222726272635 +343736373633321716171E0107060708B124171A121010101C1724251819121010111A18 +FECE24171A131010111C1748181A121010111B17FED224181A120F0F111B172524181A12 +1010111B17FA0809598DF7C103D98DFD8424171A121010101C1724251819121010111A18 +2524171A121010101C1724251819121010111A18FECD4A171A121010111B172524171A11 +100111101B023024171A12100111111B1748181A121010111B172524171A12100111111B +1748181A121010111B17FD954A171A121010111B172524171A11100111101B013F10101B +18481819131010111B172524181A111001090F111B174A171A121010111B1748191A120F +010810111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D +01F210111B172524181A111010111A174A17191310FDEF10111A172624171A121010111B +1724251819121010111A1848181A121010111B172425181912020210111B172425181912 +1010111A1848181A1210FDEE10111A1848181A121010111B17242518191210021210111B +1724251819121010111A1848181A12000000000D00C800460A21053B0015002B00410057 +005B005F0063007A009200A800BE00D400EA000001343736373632171617161407060706 +232227262726003437363736333217161716151407060706222726272434373637363217 +161716151407060706232227262701343736373633321716171614070607062227262726 +011121112711211125113311012227262726353437363736333217161716140706070603 +222726272635343736373633321716171615140706070620222726272634373637363332 +171617161714070607012227262726273437363736321716171614070607060322272627 +2E0137363736321716171615140706070600222726272635343736373633321716171E01 +070607062710111A1848181A121010101C17242518191210021210111B17242518191210 +10111A1848181A12FDDE10111A1848181A121010101C172425181912020210111B172425 +1819121010111A1848181A1210F88F09598DF7C103D98DFD8424171A121010101C172425 +1819121010111A182524171A121010101C1724251819121010111A18FECD4A171A121010 +111B172524171A11100111101B023024171A12100111111B1748181A121010111B172524 +171A12100111111B1748181A121010111B17FD954A171A121010111B172524171A111001 +11101B03CC24181A111010101B174A1719131010111B17FDE94A1719131010111B172524 +181A111010101B174A1719131010111B172524181A111010101B025324181A111010101B +174A1719131010111B17FC9F04F5FB0B8D03DBFC258C02C3FD3D01F210111B172524181A +111010111A174A17191310FDEF10111A172624171A121010111B1724251819121010111A +1848181A121010111B172425181912020210111B1724251819121010111A1848181A1210 +FDEE10111A1848181A121010111B17242518191210021210111B1724251819121010111A +1848181A1200000E00C800460A21053B0015002B00410057006E00720076007A009100A9 +00BF00D500EB010100000134373637363217161716140706070623222726272600343736 +373633321716171615140706070622272627243437363736321716171615140706070623 +222726270134373637363332171617161407060706222726272605343736373633321716 +171615140706070622272627260111211127112111251133110122272627263534373637 +363332171617161407060706032227262726353437363736333217161716151407060706 +202227262726343736373633321716171617140706070122272627262734373637363217 +161716140706070603222726272E01373637363217161716151407060706002227262726 +35343736373633321716171E01070607062710111A1848181A121010101C172425181912 +10021210111B1724251819121010111A1848181A12FDDE10111A1848181A121010101C17 +2425181912020210111B1724251819121010111A1848181A1210FEF710111A172624181A +111010111A184918191210F99809598DF7C103D98DFD8424171A121010101C1724251819 +121010111A182524171A121010101C1724251819121010111A18FECD4A171A121010111B +172524171A11100111101B023024171A12100111111B1748181A121010111B172524171A +12100111111B1748181A121010111B17FD954A171A121010111B172524171A1110011110 +1B03CC24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A +111010101B174A1719131010111B172524181A111010101B025324181A111010101B174A +1719131010111B17E424171A121010101C1724251819121010111A18FDA804F5FB0B8D03 +DBFC258C02C3FD3D01F210111B172524181A111010111A174A17191310FDEF10111A1726 +24171A121010111B1724251819121010111A1848181A121010111B172425181912020210 +111B1724251819121010111A1848181A1210FDEE10111A1848181A121010111B17242518 +191210021210111B1724251819121010111A1848181A12000000000F00C800460A21053B +0014002A004000550069007F00830087008B00A100B700CC00E100F6010B000001222726 +272634373637363217161716140706070603222726272635343736373632171617161407 +060706202227262726343736373633321716171617140706070022272627262734373637 +3632171617161407060702222726272E0137363736321716171614070607002227262726 +35343736373633321716171E010706070111211127112111251133110122272627263534 +373637363217161716140706070603222726272635343736373632171617161407060706 +202227262726343736373633321716171E0107060701222726272E013736373632171617 +16140706070603222726272E013736373632171617161407060706002227262726343736 +373633321716171E0107060707A424171A131010111C1748181A121010111B172524171A +131010111C1748181A121010111B17FECC491819121010111A172624171A11100111111A +025549171A12100111111B1748181A120F0F111B1749171A12100111111B1748181A120F +0F111BFD7D491819121010111A172624171A11100111111AFA1C09598DF7C103D98DFD84 +24171A121010101C17491819121010111A182524171A121010101C17491819121010111A +18FECC49171A121010111B172524171A11100111101B023024171A12100111111B174818 +1A121010111B172524171A12100111111B1748181A121010111B17FD9449171A12101011 +1B172524171A11100111101B035210111C1748181A120F0F111B1749171A1310FDEF1011 +1B172524171A131010111C1748181A121010111B1847181A131010111C172424181A1202 +0210111B172524181A111010101B1848181913FDDE10111B1847181A131010111C174818 +1A12020210111B172524181A111010101B1848181913FCE304F5FB0B8D03DBFC258C02C3 +FD3D01F210111B172524181A111010111A174918191310FDEF10111A172624171A121010 +111B17491819121010111A1848181A121010111B1749181912020210111B174918191210 +10111A1848181A1210FDEE10111A1848181A121010111B174918191210021210111B1749 +1819121010111A1848181A120000000200C8FE1405BD076D000300070000011521350121 +112101E102C3FC2404F5FB0B03078D8D0466F6A70000000300C8FE1405BD076D00030007 +000B0000132111213721112113211521C804F5FB0B8D03DBFC258C02C3FD3D076DF6A78D +083FFC278D00000400C8FE1405BD076D0016001A001E0022000001321716171615140706 +07062322272627263437363736012111213721112113211521034524171A121010101C17 +24251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D010510111A172624181A +111010111A1849181912100668F6A78D083FFC278D00000500C8FE1405BD076D0015002B +002F00330037000005343736373632171617161407060706232227262726013437363736 +3217161716151407060706222726272601211121372111211321152101C110101B184818 +19131010111B172524181A1110021110111C1748181A121010111B1847181A1310FCF604 +F5FB0B8D03DBFC258C02C3FD3D7C24171A121010101C17491819121010111A18023B2418 +1A120F0F111B172524181A121010111B1705F8F6A78D083FFC278D000000000600C8FE14 +05BD076D0016002B004100450049004D0000053437363736321716171615140706070623 +222726272601343736373632171617161407060706222726272601343736373632171617 +16151407060706222726272601211121372111211321152101C110101B18481819131010 +111B172524181A111001090F111B174A171A121010111B1748191A120F010810111C1748 +181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D7C24171A121010 +101C1724251819121010111A18013224171A131010111C1748181A121010111B17012E24 +181A120F0F111B172524181A121010111B1705F8F6A78D083FFC278D0000000700C8FE14 +05BD076D0015002B00410057005B005F0063000001321716171614070607062227262726 +353437363736003217161716151407060706232227262726343736371232171617161407 +060706232227262726353437363701321716171615140706070622272627263437363736 +012111213721112113211521044E24181A111010101B174A1719131010111B17FDE94A17 +19131010111B172524181A111010101B174A1719131010111B172524181A111010101B02 +5324181A111010101B174A1719131010111B17FC9F04F5FB0B8D03DBFC258C02C3FD3D02 +0E10111A1848181A121010101C17242518191210FDEE10111B1724251819121010111A18 +48181A12022210111A1848181A121010101C172425181912FDFE10111B17242518191210 +10111A1848181A12100771F6A78D083FFC278D000000000800C8FE1405BD076D0015002B +00410057006E00720076007A000001321716171614070607062227262726353437363736 +003217161716151407060706232227262726343736371232171617161407060706232227 +262726353437363701321716171615140706070622272627263437363736033217161716 +1514070607062322272627263437363736012111213721112113211521044E24181A1110 +10101B174A1719131010111B17FDE94A1719131010111B172524181A111010101B174A17 +19131010111B172524181A111010101B025324181A111010101B174A1719131010111B17 +E424171A121010101C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D +020E10111A1848181A121010101C17242518191210FDEE10111B1724251819121010111A +1848181A12022210111A1848181A121010101C172425181912FDFE10111B172425181912 +1010111A1848181A1210010910111A172624181A111010111A1849181912100668F6A78D +083FFC278D00000900C8FE1405BD076D0014002A004000550069007F00830087008B0000 +253437363736321716171614070607062227262726253437363736333217161716140706 +070622272627261034373637363217161716151407060706072227262700343736373637 +321716171614070607062227262724343736373E01171617161407060706222726270034 +3736373633321716171615140706070E0127262701211121372111211321152103D41011 +1C1748181A120F0F111B174A161A1310FDEF10111B172524171A131010111C1748181A12 +1010111B1847181A131010111C172424181A12020210111B172524181A111010101B1848 +181913FDDE10111B1847181A131010111C1748181A12020210111B172524181A11101010 +1B1848181913FCE304F5FB0B8D03DBFC258C02C3FD3D9124171A131010111C1748181A12 +1010111B172524171A131010111C1748181A121010111B1701334A1819121010111A1726 +24171A11100111111AFDAB4A161A12100111111B1748181A120F0F111B174A161A121001 +11111B1748181A120F0F111B02824A1819121010111A172624171A11100111111A05E4F6 +A78D083FFC278D000000000400C8FE1405BD076D00150019001D00210000013217161716 +14070607062322272627263437363736012111213721112113211521034524171A121010 +101C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D056B10111A174A +1819121010111A1848191A11100202F6A78D083FFC278D000000000500C8FE1405BD076D +0015002C0030003400380000013217161716140706070623222726272634373637361332 +171617161514070607062322272627263437363736012111213721112113211521034524 +171A121010101C1724251819121010111A182524171A121010101C172425181912101011 +1A18FDA804F5FB0B8D03DBFC258C02C3FD3D056910101B174A1719131010111B1848181A +1110FB9C10111A172624181A111010111A1849181912100668F6A78D083FFC278D000006 +00C8FE1405BD076D0015002C00420046004A004E00000132171617161407060706232227 +262726343736373601343736373632171617161514070607062322272627260134373637 +3632171617161514070607062227262726012111213721112113211521034524171A1210 +10101C1724251819121010111A18FEA110101B18481819131010111B172524181A111002 +1110111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D05 +6B10111A174A1819121010111A1848191A1110FA1924171A121010101C17242518191210 +10111A18023B24181A120F0F111B172524181A121010111B1705F8F6A78D083FFC278D00 +0000000700C8FE1405BD076D0015002C00410057005B005F006300000132171617161407 +060706232227262726343736373601343736373632171617161514070607062322272627 +260134373637363217161716140706070622272627260134373637363217161716151407 +0607062227262726012111213721112113211521034524171A121010101C172425181912 +1010111A18FEA110101B18481819131010111B172524181A111001090F111B174A171A12 +1010111B1748191A120F010810111C1748181A121010111B1847181A1310FCF604F5FB0B +8D03DBFC258C02C3FD3D056B10111A174A1819121010111A1848191A1110FA1924171A12 +1010101C1724251819121010111A18013224171A131010111C1748181A121010111B1701 +2E24181A120F0F111B172524181A121010111B1705F8F6A78D083FFC278D000800C8FE14 +05BD076D0015002B00410057006D00710075007900000132171617161407060706232227 +262726343736373601321716171614070607062227262726353437363736003217161716 +151407060706232227262726343736371232171617161407060706232227262726353437 +363701321716171615140706070622272627263437363736012111213721112113211521 +034524171A121010101C1724251819121010111A18012E24181A111010101B174A171913 +1010111B17FDE94A1719131010111B172524181A111010101B174A1719131010111B1725 +24181A111010101B025324181A111010101B174A1719131010111B17FC9F04F5FB0B8D03 +DBFC258C02C3FD3D056B10111A174A1819121010111A1848191A1110FCA310111A184818 +1A121010101C17242518191210FDEE10111B1724251819121010111A1848181A12022210 +111A1848181A121010101C172425181912FDFE10111B1724251819121010111A1848181A +12100771F6A78D083FFC278D0000000900C8FE1405BD076D0015002B00410057006D0084 +0088008C0090000001321716171614070607062322272627263437363736013217161716 +140706070622272627263534373637360032171617161514070607062322272627263437 +363712321716171614070607062322272627263534373637013217161716151407060706 +222726272634373637360332171617161514070607062322272627263437363736012111 +213721112113211521034524171A121010101C1724251819121010111A18012E24181A11 +1010101B174A1719131010111B17FDE94A1719131010111B172524181A111010101B174A +1719131010111B172524181A111010101B025324181A111010101B174A1719131010111B +17E424171A121010101C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD +3D056B10111A174A1819121010111A1848191A1110FCA310111A1848181A121010101C17 +242518191210FDEE10111B1724251819121010111A1848181A12022210111A1848181A12 +1010101C172425181912FDFE10111B1724251819121010111A1848181A1210010910111A +172624181A111010111A1849181912100668F6A78D083FFC278D000A00C8FE1405BD076D +0015002A00400056006B007F00950099009D00A100000132171617161407060706232227 +262726343736373613343736373632171617161407060706222726272625343736373633 +321716171614070607062227262726103437363736321716171615140706070607222726 +2700343736373637321716171614070607062227262724343736373E0117161716140706 +07062227262700343736373633321716171615140706070E012726270121112137211121 +13211521034524171A121010101C1724251819121010111A18B410111C1748181A120F0F +111B174A161A1310FDEF10111B172524171A131010111C1748181A121010111B1847181A +131010111C172424181A12020210111B172524181A111010101B1848181913FDDE10111B +1847181A131010111C1748181A12020210111B172524181A111010101B1848181913FCE3 +04F5FB0B8D03DBFC258C02C3FD3D056B10111A174A1819121010111A1848191A1110FB26 +24171A131010111C1748181A121010111B172524171A131010111C1748181A121010111B +1701334A1819121010111A172624171A11100111111AFDAB4A161A12100111111B174818 +1A120F0F111B174A161A12100111111B1748181A120F0F111B02824A1819121010111A17 +2624171A11100111111A05E4F6A78D083FFC278D0000000500C8FE1405BD076D0015002B +002F00330037000000343736373632171617161514070607062322272627013437363736 +3332171617161407060706222726272601211121372111211321152101C210111A184818 +1A121010111B172425181912020210111B1724251819121010111A1848181A1210FCF404 +F5FB0B8D03DBFC258C02C3FD3D03C34A1719131010111B172524181A111010111A025324 +181A111010101B174A1719131010111B170193F6A78D083FFC278D000000000600C8FE14 +05BD076D0016001A001E00220038004E0000013217161716151407060706232227262726 +343736373601211121372111211321152102343736373632171617161514070607062322 +27262701343736373633321716171614070607062227262726034524171A121010101C17 +24251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D1F10111A1848181A1210 +10111B172425181912020210111B1724251819121010111A1848181A1210010510111A17 +2624181A111010111A1849181912100668F6A78D083FFC278D01494A1719131010111B17 +2524181A111010111A025324181A111010101B174A1719131010111B1700000700C8FE14 +05BD076D0016002C003000340038004E0064000005343736373632171617161514070607 +062322272627260134373637363217161716151407060706222726272601211121372111 +211321152102343736373632171617161514070607062322272627013437363736333217 +1617161407060706222726272601C110101B18481819131010111B172524181A11100211 +10111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D1F10 +111A1848181A121010111B172425181912020210111B1724251819121010111A1848181A +12107C24171A121010101C1724251819121010111A18023B24181A120F0F111B17252418 +1A121010111B1705F8F6A78D083FFC278D01494A1719131010111B172524181A11101011 +1A025324181A111010101B174A1719131010111B1700000800C8FE1405BD076D0016002B +004100450049004D00630079000005343736373632171617161514070607062322272627 +260134373637363217161716140706070622272627260134373637363217161716151407 +060706222726272601211121372111211321152102343736373632171617161514070607 +0623222726270134373637363332171617161407060706222726272601C110101B184818 +19131010111B172524181A111001090F111B174A171A121010111B1748191A120F010810 +111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D1F1011 +1A1848181A121010111B172425181912020210111B1724251819121010111A1848181A12 +107C24171A121010101C1724251819121010111A18013224171A131010111C1748181A12 +1010111B17012E24181A120F0F111B172524181A121010111B1705F8F6A78D083FFC278D +01494A1719131010111B172524181A111010111A025324181A111010101B174A17191310 +10111B170000000900C8FE1405BD076D0015002B00410057005B005F00630079008F0000 +013217161716140706070622272627263534373637360032171617161514070607062322 +272627263437363712321716171614070607062322272627263534373637013217161716 +151407060706222726272634373637360121112137211121132115210234373637363217 +161716151407060706232227262701343736373633321716171614070607062227262726 +044E24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A11 +1010101B174A1719131010111B172524181A111010101B025324181A111010101B174A17 +19131010111B17FC9F04F5FB0B8D03DBFC258C02C3FD3D1F10111A1848181A121010111B +172425181912020210111B1724251819121010111A1848181A1210020E10111A1848181A +121010101C17242518191210FDEE10111B1724251819121010111A1848181A1202221011 +1A1848181A121010101C172425181912FDFE10111B1724251819121010111A1848181A12 +100771F6A78D083FFC278D01494A1719131010111B172524181A111010111A025324181A +111010101B174A1719131010111B17000000000A00C8FE1405BD076D0015002B00410057 +006E00720076007A009000A6000001321716171614070607062227262726353437363736 +003217161716151407060706232227262726343736371232171617161407060706232227 +262726353437363701321716171615140706070622272627263437363736033217161716 +151407060706232227262726343736373601211121372111211321152102343736373632 +171617161514070607062322272627013437363736333217161716140706070622272627 +26044E24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A +111010101B174A1719131010111B172524181A111010101B025324181A111010101B174A +1719131010111B17E424171A121010101C1724251819121010111A18FDA804F5FB0B8D03 +DBFC258C02C3FD3D1F10111A1848181A121010111B172425181912020210111B17242518 +19121010111A1848181A1210020E10111A1848181A121010101C17242518191210FDEE10 +111B1724251819121010111A1848181A12022210111A1848181A121010101C1724251819 +12FDFE10111B1724251819121010111A1848181A1210010910111A172624181A11101011 +1A1849181912100668F6A78D083FFC278D01494A1719131010111B172524181A11101011 +1A025324181A111010101B174A1719131010111B1700000B00C8FE1405BD076D0014002A +004000550069007F00830087008B00A100B7000025343736373632171617161407060706 +222726272625343736373633321716171614070607062227262726103437363736321716 +171615140706070607222726270034373637363732171617161407060706222726272434 +3736373E011716171614070607062227262700343736373633321716171615140706070E +012726270121112137211121132115210234373637363217161716151407060706232227 +26270134373637363332171617161407060706222726272603D410111C1748181A120F0F +111B174A161A1310FDEF10111B172524171A131010111C1748181A121010111B1847181A +131010111C172424181A12020210111B172524181A111010101B1848181913FDDE10111B +1847181A131010111C1748181A12020210111B172524181A111010101B1848181913FCE3 +04F5FB0B8D03DBFC258C02C3FD3D1F10111A1848181A121010111B172425181912020210 +111B1724251819121010111A1848181A12109124171A131010111C1748181A121010111B +172524171A131010111C1748181A121010111B1701334A1819121010111A172624171A11 +100111111AFDAB4A161A12100111111B1748181A120F0F111B174A161A12100111111B17 +48181A120F0F111B02824A1819121010111A172624171A11100111111A05E4F6A78D083F +FC278D01494A1719131010111B172524181A111010111A025324181A111010101B174A17 +19131010111B17000000000600C8FE1405BD076D0015002B004100450049004D00000034 +373637363217161716151407060706232227262713343736373632171617161514070607 +062227262726013437363736333217161716140706070622272627260121112137211121 +1321152101C210111A1848181A121010111B172425181912F910111A174A181A11101011 +1A184918191210010910111B1724251819121010111A1848181A1210FCF404F5FB0B8D03 +DBFC258C02C3FD3D03C34A1719131010111B172524181A111010111A014A24171A121010 +101C1724251819121010111A18012E24181A111010101B174A1719131010111B170193F6 +A78D083FFC278D000000000700C8FE1405BD076D0015002B00410058005C006000640000 +003437363736321716171615140706070623222726271334373637363217161716151407 +060706222726272601343736373633321716171614070607062227262726033217161716 +151407060706232227262726343736373601211121372111211321152101C210111A1848 +181A121010111B172425181912F910111A174A181A111010111A18491819121001091011 +1B1724251819121010111A1848181A12108F24171A121010101C1724251819121010111A +18FDA804F5FB0B8D03DBFC258C02C3FD3D03C34A1719131010111B172524181A11101011 +1A014A24171A121010101C1724251819121010111A18012E24181A111010101B174A1719 +131010111B17FB2B10111A172624181A111010111A1849181912100668F6A78D083FFC27 +8D00000800C8FE1405BD076D0015002B00410058006E00720076007A0000003437363736 +321716171615140706070623222726271334373637363217161716151407060706222726 +272601343736373633321716171614070607062227262726013437363736321716171615 +140706070623222726272601343736373632171617161514070607062227262726012111 +21372111211321152101C210111A1848181A121010111B172425181912F910111A174A18 +1A111010111A184918191210010910111B1724251819121010111A1848181A1210FDED10 +101B18481819131010111B172524181A1110021110111C1748181A121010111B1847181A +1310FCF604F5FB0B8D03DBFC258C02C3FD3D03C34A1719131010111B172524181A111010 +111A014A24171A121010101C1724251819121010111A18012E24181A111010101B174A17 +19131010111B17F9AA24171A121010101C1724251819121010111A18023B24181A120F0F +111B172524181A121010111B1705F8F6A78D083FFC278D000000000900C8FE1405BD076D +0015002B00410058006D00830087008B008F000000343736373632171617161514070607 +062322272627133437363736321716171615140706070622272627260134373637363332 +171617161407060706222726272601343736373632171617161514070607062322272627 +260134373637363217161716140706070622272627260134373637363217161716151407 +060706222726272601211121372111211321152101C210111A1848181A121010111B1724 +25181912F910111A174A181A111010111A184918191210010910111B1724251819121010 +111A1848181A1210FDED10101B18481819131010111B172524181A111001090F111B174A +171A121010111B1748191A120F010810111C1748181A121010111B1847181A1310FCF604 +F5FB0B8D03DBFC258C02C3FD3D03C34A1719131010111B172524181A111010111A014A24 +171A121010101C1724251819121010111A18012E24181A111010101B174A171913101011 +1B17F9AA24171A121010101C1724251819121010111A18013224171A131010111C174818 +1A121010111B17012E24181A120F0F111B172524181A121010111B1705F8F6A78D083FFC +278D000A00C8FE1405BD076D0015002B00410057006D00830099009D00A100A500000034 +373637363217161716151407060706232227262713343736373632171617161514070607 +062227262726013437363736333217161716140706070622272627261332171617161407 +060706222726272635343736373600321716171615140706070623222726272634373637 +123217161716140706070623222726272635343736370132171617161514070607062227 +262726343736373601211121372111211321152101C210111A1848181A121010111B1724 +25181912F910111A174A181A111010111A184918191210010910111B1724251819121010 +111A1848181A12107A24181A111010101B174A1719131010111B17FDE94A171913101011 +1B172524181A111010101B174A1719131010111B172524181A111010101B025324181A11 +1010101B174A1719131010111B17FC9F04F5FB0B8D03DBFC258C02C3FD3D03C34A171913 +1010111B172524181A111010111A014A24171A121010101C1724251819121010111A1801 +2E24181A111010101B174A1719131010111B17FC3410111A1848181A121010101C172425 +18191210FDEE10111B1724251819121010111A1848181A12022210111A1848181A121010 +101C172425181912FDFE10111B1724251819121010111A1848181A12100771F6A78D083F +FC278D000000000B00C8FE1405BD076D0015002B00410057006D0083009900B000B400B8 +00BC00000034373637363217161716151407060706232227262713343736373632171617 +161514070607062227262726013437363736333217161716140706070622272627261332 +171617161407060706222726272635343736373600321716171615140706070623222726 +272634373637123217161716140706070623222726272635343736370132171617161514 +070607062227262726343736373603321716171615140706070623222726272634373637 +3601211121372111211321152101C210111A1848181A121010111B172425181912F91011 +1A174A181A111010111A184918191210010910111B1724251819121010111A1848181A12 +107A24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A11 +1010101B174A1719131010111B172524181A111010101B025324181A111010101B174A17 +19131010111B17E424171A121010101C1724251819121010111A18FDA804F5FB0B8D03DB +FC258C02C3FD3D03C34A1719131010111B172524181A111010111A014A24171A12101010 +1C1724251819121010111A18012E24181A111010101B174A1719131010111B17FC341011 +1A1848181A121010101C17242518191210FDEE10111B1724251819121010111A1848181A +12022210111A1848181A121010101C172425181912FDFE10111B1724251819121010111A +1848181A1210010910111A172624181A111010111A1849181912100668F6A78D083FFC27 +8D00000C00C8FE1405BD076D0015002B00410056006C0082009700AB00C100C500C900CD +000000343736373632171617161514070607062322272627133437363736321716171615 +140706070622272627260134373637363332171617161407060706222726272611343736 +373632171617161407060706222726272625343736373633321716171614070607062227 +262726103437363736321716171615140706070607222726270034373637363732171617 +1614070607062227262724343736373E0117161716140706070622272627003437363736 +33321716171615140706070E0127262701211121372111211321152101C210111A184818 +1A121010111B172425181912F910111A174A181A111010111A184918191210010910111B +1724251819121010111A1848181A121010111C1748181A120F0F111B174A161A1310FDEF +10111B172524171A131010111C1748181A121010111B1847181A131010111C172424181A +12020210111B172524181A111010101B1848181913FDDE10111B1847181A131010111C17 +48181A12020210111B172524181A111010101B1848181913FCE304F5FB0B8D03DBFC258C +02C3FD3D03C34A1719131010111B172524181A111010111A014A24171A121010101C1724 +251819121010111A18012E24181A111010101B174A1719131010111B17FAB724171A1310 +10111C1748181A121010111B172524171A131010111C1748181A121010111B1701334A18 +19121010111A172624171A11100111111AFDAB4A161A12100111111B1748181A120F0F11 +1B174A161A12100111111B1748181A120F0F111B02824A1819121010111A172624171A11 +100111111A05E4F6A78D083FFC278D000000000700C8FE1405BD076D00140029003E0053 +0057005B005F000001321716171614070607062227262726343736373600321716171614 +070607062322272627263437363712321716171614070607062322272627263437363701 +3217161716140706070622272627263437363736012111213721112113211521044E2418 +1A111010101B17491819131010111B17FDE9491819131010111B172524181A111010101B +17491819131010111B172524181A111010101B025324181A111010101B17491819131010 +111B17FC9F04F5FB0B8D03DBFC258C02C3FD3D067410111A1848181A121010111B174918 +191210FDEE10101C17491819121010111A1848181A12022210111A1848181A121010111B +1749181912FDFE10101C17491819121010111A1848181A1210030BF6A78D083FFC278D00 +0000000800C8FE1405BD076D00150019001D00210036004B006000750000013217161716 +151407060706222726272634373637360121112137211121132115210132171617161407 +060706222726272634373637360032171617161407060706232227262726343736371232 +171617161407060706232227262726343736370132171617161407060706222726272634 +37363736034524171A121010101C17491819121010111A18FDA804F5FB0B8D03DBFC258C +02C3FD3D026D24181A111010101B17491819131010111B17FDE9491819131010111B1725 +24181A111010101B17491819131010111B172524181A111010101B025324181A11101010 +1B17491819131010111B17010510111A172624181A111010111A1849181912100668F6A7 +8D083FFC278D03FA10111A1848181A121010111B174918191210FDEE10101C1749181912 +1010111A1848181A12022210111A1848181A121010111B1749181912FDFE10101C174918 +19121010111A1848181A12100000000900C8FE1405BD076D0016002C003000340038004E +0064007A0090000005343736373632171617161514070607062322272627260134373637 +363217161716151407060706222726272601211121372111211321152101321716171614 +070607062227262726353437363736003217161716151407060706232227262726343736 +371232171617161407060706232227262726353437363701321716171615140706070622 +27262726343736373601C110101B18481819131010111B172524181A1110021110111C17 +48181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D026D24181A11 +1010101B174A1719131010111B17FDE94A1719131010111B172524181A111010101B174A +1719131010111B172524181A111010101B025324181A111010101B174A1719131010111B +177C24171A121010101C1724251819121010111A18023B24181A120F0F111B172524181A +121010111B1705F8F6A78D083FFC278D03FA10111A1848181A121010111B172425181912 +10FDEE10101C1724251819121010111A1848181A12022210111A1848181A121010111B17 +2425181912FDFE10101C1724251819121010111A1848181A1210000A00C8FE1405BD076D +0016002B004100450049004D00630079008F00A500000534373637363217161716151407 +060706232227262726013437363736321716171614070607062227262726013437363736 +321716171615140706070622272627260121112137211121132115210132171617161407 +060706222726272635343736373600321716171615140706070623222726272634373637 +123217161716140706070623222726272635343736370132171617161514070607062227 +262726343736373601C110101B18481819131010111B172524181A111001090F111B174A +171A121010111B1748191A120F010810111C1748181A121010111B1847181A1310FCF604 +F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A1719131010111B17FDE94A +1719131010111B172524181A111010101B174A1719131010111B172524181A111010101B +025324181A111010101B174A1719131010111B177C24171A121010101C17242518191210 +10111A18013224171A131010111C1748181A121010111B17012E24181A120F0F111B1725 +24181A121010111B1705F8F6A78D083FFC278D03FA10111A1848181A121010111B172425 +18191210FDEE10101C1724251819121010111A1848181A12022210111A1848181A121010 +111B172425181912FDFE10101C1724251819121010111A1848181A121000000B00C8FE14 +05BD076D0015002B00410057005B005F00630079008F00A500BB00000132171617161407 +060706222726272635343736373600321716171615140706070623222726272634373637 +123217161716140706070623222726272635343736370132171617161514070607062227 +262726343736373601211121372111211321152101321716171614070607062227262726 +353437363736003217161716151407060706232227262726343736371232171617161407 +060706232227262726353437363701321716171615140706070622272627263437363736 +044E24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A11 +1010101B174A1719131010111B172524181A111010101B025324181A111010101B174A17 +19131010111B17FC9F04F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A17 +19131010111B17FDE94A1719131010111B172524181A111010101B174A1719131010111B +172524181A111010101B025324181A111010101B174A1719131010111B17020E10111A18 +48181A121010101C17242518191210FDEE10111B1724251819121010111A1848181A1202 +2210111A1848181A121010101C172425181912FDFE10111B1724251819121010111A1848 +181A12100771F6A78D083FFC278D03FA10111A1848181A121010111B17242518191210FD +EE10101C1724251819121010111A1848181A12022210111A1848181A121010111B172425 +181912FDFE10101C1724251819121010111A1848181A12100000000C00C8FE1405BD076D +00140029003E00530069006D00710075008A009F00B400C9000001321716171614070607 +062227262726343736373600321716171614070607062322272627263437363712321716 +171614070607062322272627263437363701321716171614070607062227262726343736 +373603321716171615140706070622272627263437363736012111213721112113211521 +013217161716140706070622272627263437363736003217161716140706070623222726 +272634373637123217161716140706070623222726272634373637013217161716140706 +070622272627263437363736044E24181A111010101B17491819131010111B17FDE94918 +19131010111B172524181A111010101B17491819131010111B172524181A111010101B02 +5324181A111010101B17491819131010111B17E424171A121010101C1749181912101011 +1A18FDA804F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B1749181913101011 +1B17FDE9491819131010111B172524181A111010101B17491819131010111B172524181A +111010101B025324181A111010101B17491819131010111B17020E10111A1848181A1210 +10101C174918191210FDEE10111B17491819121010111A1848181A12022210111A184818 +1A121010101C1749181912FDFE10111B17491819121010111A1848181A1210010910111A +172624181A111010111A1849181912100668F6A78D083FFC278D03FA10111A1848181A12 +1010111B174918191210FDEE10101C17491819121010111A1848181A12022210111A1848 +181A121010111B1749181912FDFE10101C17491819121010111A1848181A12100000000D +00C8FE1405BD076D0014002A004000550069007F00830087008B00A100B700CD00E30000 +253437363736321716171614070607062227262726253437363736333217161716140706 +070622272627261034373637363217161716151407060706072227262700343736373637 +321716171614070607062227262724343736373E01171617161407060706222726270034 +3736373633321716171615140706070E0127262701211121372111211321152101321716 +171614070607062227262726353437363736003217161716151407060706232227262726 +343736371232171617161407060706232227262726353437363701321716171615140706 +07062227262726343736373603D410111C1748181A120F0F111B174A161A1310FDEF1011 +1B172524171A131010111C1748181A121010111B1847181A131010111C172424181A1202 +0210111B172524181A111010101B1848181913FDDE10111B1847181A131010111C174818 +1A12020210111B172524181A111010101B1848181913FCE304F5FB0B8D03DBFC258C02C3 +FD3D026D24181A111010101B174A1719131010111B17FDE94A1719131010111B17252418 +1A111010101B174A1719131010111B172524181A111010101B025324181A111010101B17 +4A1719131010111B179124171A131010111C1748181A121010111B172524171A13101011 +1C1748181A121010111B1701334A1819121010111A172624171A11100111111AFDAB4A16 +1A12100111111B1748181A120F0F111B174A161A12100111111B1748181A120F0F111B02 +824A1819121010111A172624171A11100111111A05E4F6A78D083FFC278D03FA10111A18 +48181A121010111B17242518191210FDEE10101C1724251819121010111A1848181A1202 +2210111A1848181A121010111B172425181912FDFE10101C1724251819121010111A1848 +181A12100000000800C8FE1405BD076D00030007000B00210037004D0063007900001321 +112137211121132115210132171617161407060706222726272635343736373600321716 +171615140706070623222726272634373637123217161716140706070623222726272635 +343736370132171617161514070607062227262726343736373603321716171614070607 +062322272627263437363736C804F5FB0B8D03DBFC258C02C3FD3D026D24181A11101010 +1B174A1719131010111B17FDE94A1719131010111B172524181A111010101B174A171913 +1010111B172524181A111010101B025324181A111010101B174A1719131010111B17E424 +171A121010101C1724251819121010111A18076DF6A78D083FFC278D03FA10111A184818 +1A121010111B17242518191210FDEE10101C1724251819121010111A1848181A12022210 +111A1848181A121010111B172425181912FDFE10101C1724251819121010111A1848181A +1210010910111A174A1819121010111A1848191A1110000900C8FE1405BD076D0016001A +001E00220038004E0064007A009000000132171617161514070607062322272627263437 +363736012111213721112113211521013217161716140706070622272627263534373637 +360032171617161514070607062322272627263437363712321716171614070607062322 +272627263534373637013217161716151407060706222726272634373637360332171617 +1614070607062322272627263437363736034524171A121010101C172425181912101011 +1A18FDA804F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A171913101011 +1B17FDE94A1719131010111B172524181A111010101B174A1719131010111B172524181A +111010101B025324181A111010101B174A1719131010111B17E424171A121010101C1724 +251819121010111A18010510111A172624181A111010111A1849181912100668F6A78D08 +3FFC278D03FA10111A1848181A121010111B17242518191210FDEE10101C172425181912 +1010111A1848181A12022210111A1848181A121010111B172425181912FDFE10101C1724 +251819121010111A1848181A1210010910111A174A1819121010111A1848191A1110000A +00C8FE1405BD076D0015002B002F00330037004C00610076008B00A00000053437363736 +321716171614070607062322272627260134373637363217161716151407060706222726 +272601211121372111211321152101321716171614070607062227262726343736373600 +321716171614070607062322272627263437363712321716171614070607062322272627 +263437363701321716171614070607062227262726343736373603321716171614070607 +062227262726343736373601C110101B18481819131010111B172524181A111002111011 +1C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D026D2418 +1A111010101B17491819131010111B17FDE9491819131010111B172524181A111010101B +17491819131010111B172524181A111010101B025324181A111010101B17491819131010 +111B17E424171A121010101C17491819121010111A187C24171A121010101C1749181912 +1010111A18023B24181A120F0F111B172524181A121010111B1705F8F6A78D083FFC278D +03FA10111A1848181A121010111B174918191210FDEE10101C17491819121010111A1848 +181A12022210111A1848181A121010111B1749181912FDFE10101C17491819121010111A +1848181A1210010910111A174A1819121010111A1848191A1110000B00C8FE1405BD076D +0016002B004100450049004D00630079008F00A500BB0000053437363736321716171615 +140706070623222726272601343736373632171617161407060706222726272601343736 +373632171617161514070607062227262726012111213721112113211521013217161716 +140706070622272627263534373637360032171617161514070607062322272627263437 +363712321716171614070607062322272627263534373637013217161716151407060706 +222726272634373637360332171617161407060706232227262726343736373601C11010 +1B18481819131010111B172524181A111001090F111B174A171A121010111B1748191A12 +0F010810111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD +3D026D24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A +111010101B174A1719131010111B172524181A111010101B025324181A111010101B174A +1719131010111B17E424171A121010101C1724251819121010111A187C24171A12101010 +1C1724251819121010111A18013224171A131010111C1748181A121010111B17012E2418 +1A120F0F111B172524181A121010111B1705F8F6A78D083FFC278D03FA10111A1848181A +121010111B17242518191210FDEE10101C1724251819121010111A1848181A1202221011 +1A1848181A121010111B172425181912FDFE10101C1724251819121010111A1848181A12 +10010910111A174A1819121010111A1848191A111000000C00C8FE1405BD076D0015002B +00410057005B005F00630079008F00A500BB00D100000132171617161407060706222726 +272635343736373600321716171615140706070623222726272634373637123217161716 +140706070623222726272635343736370132171617161514070607062227262726343736 +373601211121372111211321152101321716171614070607062227262726353437363736 +003217161716151407060706232227262726343736371232171617161407060706232227 +262726353437363701321716171615140706070622272627263437363736033217161716 +14070607062322272627263437363736044E24181A111010101B174A1719131010111B17 +FDE94A1719131010111B172524181A111010101B174A1719131010111B172524181A1110 +10101B025324181A111010101B174A1719131010111B17FC9F04F5FB0B8D03DBFC258C02 +C3FD3D026D24181A111010101B174A1719131010111B17FDE94A1719131010111B172524 +181A111010101B174A1719131010111B172524181A111010101B025324181A111010101B +174A1719131010111B17E424171A121010101C1724251819121010111A18020E10111A18 +48181A121010101C17242518191210FDEE10111B1724251819121010111A1848181A1202 +2210111A1848181A121010101C172425181912FDFE10111B1724251819121010111A1848 +181A12100771F6A78D083FFC278D03FA10111A1848181A121010111B17242518191210FD +EE10101C1724251819121010111A1848181A12022210111A1848181A121010111B172425 +181912FDFE10101C1724251819121010111A1848181A1210010910111A174A1819121010 +111A1848191A11100000000D00C8FE1405BD076D0015002B00410057006E00720076007A +009000A600BC00D200E80000013217161716140706070622272627263534373637360032 +171617161514070607062322272627263437363712321716171614070607062322272627 +263534373637013217161716151407060706222726272634373637360332171617161514 +070607062322272627263437363736012111213721112113211521013217161716140706 +070622272627263534373637360032171617161514070607062322272627263437363712 +321716171614070607062322272627263534373637013217161716151407060706222726 +2726343736373603321716171614070607062322272627263437363736044E24181A1110 +10101B174A1719131010111B17FDE94A1719131010111B172524181A111010101B174A17 +19131010111B172524181A111010101B025324181A111010101B174A1719131010111B17 +E424171A121010101C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D +026D24181A111010101B174A1719131010111B17FDE94A1719131010111B172524181A11 +1010101B174A1719131010111B172524181A111010101B025324181A111010101B174A17 +19131010111B17E424171A121010101C1724251819121010111A18020E10111A1848181A +121010101C17242518191210FDEE10111B1724251819121010111A1848181A1202221011 +1A1848181A121010101C172425181912FDFE10111B1724251819121010111A1848181A12 +10010910111A172624181A111010111A1849181912100668F6A78D083FFC278D03FA1011 +1A1848181A121010111B17242518191210FDEE10101C1724251819121010111A1848181A +12022210111A1848181A121010111B172425181912FDFE10101C1724251819121010111A +1848181A1210010910111A174A1819121010111A1848191A1110000E00C8FE1405BD076D +0014002A004000550069007F00830087008B00A100B700CD00E300F90000253437363736 +321716171614070607062227262726253437363736333217161716140706070622272627 +261034373637363217161716151407060706072227262700343736373637321716171614 +070607062227262724343736373E01171617161407060706222726270034373637363332 +1716171615140706070E0127262701211121372111211321152101321716171614070607 +062227262726353437363736003217161716151407060706232227262726343736371232 +171617161407060706232227262726353437363701321716171615140706070622272627 +2634373637360332171617161407060706232227262726343736373603D410111C174818 +1A120F0F111B174A161A1310FDEF10111B172524171A131010111C1748181A121010111B +1847181A131010111C172424181A12020210111B172524181A111010101B1848181913FD +DE10111B1847181A131010111C1748181A12020210111B172524181A111010101B184818 +1913FCE304F5FB0B8D03DBFC258C02C3FD3D026D24181A111010101B174A171913101011 +1B17FDE94A1719131010111B172524181A111010101B174A1719131010111B172524181A +111010101B025324181A111010101B174A1719131010111B17E424171A121010101C1724 +251819121010111A189124171A131010111C1748181A121010111B172524171A13101011 +1C1748181A121010111B1701334A1819121010111A172624171A11100111111AFDAB4A16 +1A12100111111B1748181A120F0F111B174A161A12100111111B1748181A120F0F111B02 +824A1819121010111A172624171A11100111111A05E4F6A78D083FFC278D03FA10111A18 +48181A121010111B17242518191210FDEE10101C1724251819121010111A1848181A1202 +2210111A1848181A121010111B172425181912FDFE10101C1724251819121010111A1848 +181A1210010910111A174A1819121010111A1848191A11100000000900C8FE1405BD076D +00030007000B0022003A00500066007C0092000013211121372111211321152101343736 +373633321716171615140706070622272627262534373637363332171617161514070607 +062322272627261034373637363217161716151407060706072227262701343736373637 +32171617161407060706222726272625343736373E011716171614070607062322272627 +2600343736373633321716171615140706070E01272627C804F5FB0B8D03DBFC258C02C3 +FD3D01F210111B172524181A111010111A174A17191310FDEF10111A172624171A121010 +111B1724251819121010111A1848181A121010111B172425181912020210111B17242518 +19121010111A1848181A1210FDEE10111A1848181A121010111B17242518191210021210 +111B1724251819121010111A1848181A12076DF6A78D083FFC278D027C24171A12101010 +1C1724251819121010111A182524171A121010101C1724251819121010111A1801334A17 +1A121010111B172524171A11100111101BFDD024171A12100111111B1748181A12101011 +1B172524171A12100111111B1748181A121010111B17026B4A171A121010111B17252417 +1A11100111101B000000000A00C8FE1405BD076D0016001A001E0022003900510067007D +009300A90000013217161716151407060706232227262726343736373601211121372111 +211321152101343736373633321716171615140706070622272627262534373637363332 +171617161514070607062322272627261034373637363217161716151407060706072227 +26270134373637363732171617161407060706222726272625343736373E011716171614 +0706070623222726272600343736373633321716171615140706070E0127262703452417 +1A121010101C1724251819121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D01F210 +111B172524181A111010111A174A17191310FDEF10111A172624171A121010111B172425 +1819121010111A1848181A121010111B172425181912020210111B172425181912101011 +1A1848181A1210FDEE10111A1848181A121010111B17242518191210021210111B172425 +1819121010111A1848181A12010510111A172624181A111010111A1849181912100668F6 +A78D083FFC278D027C24171A121010101C1724251819121010111A182524171A12101010 +1C1724251819121010111A1801334A171A121010111B172524171A11100111101BFDD024 +171A12100111111B1748181A121010111B172524171A12100111111B1748181A12101011 +1B17026B4A171A121010111B172524171A11100111101B000000000B00C8FE1405BD076D +0016002C003000340038004F0067007D009300A900BF0000053437363736321716171615 +140706070623222726272601343736373632171617161514070607062227262726012111 +213721112113211521013437363736333217161716151407060706222726272625343736 +373633321716171615140706070623222726272610343736373632171617161514070607 +0607222726270134373637363732171617161407060706222726272625343736373E0117 +161716140706070623222726272600343736373633321716171615140706070E01272627 +01C110101B18481819131010111B172524181A1110021110111C1748181A121010111B18 +47181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D01F210111B172524181A111010111A +174A17191310FDEF10111A172624171A121010111B1724251819121010111A1848181A12 +1010111B172425181912020210111B1724251819121010111A1848181A1210FDEE10111A +1848181A121010111B17242518191210021210111B1724251819121010111A1848181A12 +7C24171A121010101C1724251819121010111A18023B24181A120F0F111B172524181A12 +1010111B1705F8F6A78D083FFC278D027C24171A121010101C1724251819121010111A18 +2524171A121010101C1724251819121010111A1801334A171A121010111B172524171A11 +100111101BFDD024171A12100111111B1748181A121010111B172524171A12100111111B +1748181A121010111B17026B4A171A121010111B172524171A11100111101B000000000C +00C8FE1405BD076D0016002B004100450049004D0064007C009200A800BE00D400000534 +373637363217161716151407060706232227262726013437363736321716171614070607 +062227262726013437363736321716171615140706070622272627260121112137211121 +132115210134373637363332171617161514070607062227262726253437363736333217 +161716151407060706232227262726103437363736321716171615140706070607222726 +270134373637363732171617161407060706222726272625343736373E01171617161407 +06070623222726272600343736373633321716171615140706070E0127262701C110101B +18481819131010111B172524181A111001090F111B174A171A121010111B1748191A120F +010810111C1748181A121010111B1847181A1310FCF604F5FB0B8D03DBFC258C02C3FD3D +01F210111B172524181A111010111A174A17191310FDEF10111A172624171A121010111B +1724251819121010111A1848181A121010111B172425181912020210111B172425181912 +1010111A1848181A1210FDEE10111A1848181A121010111B17242518191210021210111B +1724251819121010111A1848181A127C24171A121010101C1724251819121010111A1801 +3224171A131010111C1748181A121010111B17012E24181A120F0F111B172524181A1210 +10111B1705F8F6A78D083FFC278D027C24171A121010101C1724251819121010111A1825 +24171A121010101C1724251819121010111A1801334A171A121010111B172524171A1110 +0111101BFDD024171A12100111111B1748181A121010111B172524171A12100111111B17 +48181A121010111B17026B4A171A121010111B172524171A11100111101B000D00C8FE14 +05BD076D0015002B00410057005B005F0063007A009200A800BE00D400EA000001321716 +171614070607062227262726353437363736003217161716151407060706232227262726 +343736371232171617161407060706232227262726353437363701321716171615140706 +070622272627263437363736012111213721112113211521013437363736333217161716 +151407060706222726272625343736373633321716171615140706070623222726272610 +343736373632171617161514070607060722272627013437363736373217161716140706 +0706222726272625343736373E0117161716140706070623222726272600343736373633 +321716171615140706070E01272627044E24181A111010101B174A1719131010111B17FD +E94A1719131010111B172524181A111010101B174A1719131010111B172524181A111010 +101B025324181A111010101B174A1719131010111B17FC9F04F5FB0B8D03DBFC258C02C3 +FD3D01F210111B172524181A111010111A174A17191310FDEF10111A172624171A121010 +111B1724251819121010111A1848181A121010111B172425181912020210111B17242518 +19121010111A1848181A1210FDEE10111A1848181A121010111B17242518191210021210 +111B1724251819121010111A1848181A12020E10111A1848181A121010101C1724251819 +1210FDEE10111B1724251819121010111A1848181A12022210111A1848181A121010101C +172425181912FDFE10111B1724251819121010111A1848181A12100771F6A78D083FFC27 +8D027C24171A121010101C1724251819121010111A182524171A121010101C1724251819 +121010111A1801334A171A121010111B172524171A11100111101BFDD024171A12100111 +111B1748181A121010111B172524171A12100111111B1748181A121010111B17026B4A17 +1A121010111B172524171A11100111101B00000E00C8FE1405BD076D00140029003E0053 +0069006D00710075008B00A100B600CB00E000F500000132171617161407060706222726 +272634373637360032171617161407060706232227262726343736371232171617161407 +060706232227262726343736370132171617161407060706222726272634373637360332 +171617161514070607062227262726343736373601211121372111211321152101343736 +373633321716171614070607062227262726253437363736333217161716140706070622 +27262726103437363736321716171615140706070E0127262701343736373E0117161716 +1407060706222726272625343736373E0117161716140706070622272627260034373637 +36321716171615140706070E01272627044E24181A111010101B17491819131010111B17 +FDE9491819131010111B172524181A111010101B17491819131010111B172524181A1110 +10101B025324181A111010101B17491819131010111B17E424171A121010101C17491819 +121010111A18FDA804F5FB0B8D03DBFC258C02C3FD3D01F210111B172524181A11101011 +1A174918191310FDEF10111A172624171A121010111B17491819121010111A1848181A12 +1010111B1749181912020210111B17491819121010111A1848181A1210FDEE10111A1848 +181A121010111B174918191210021210111B17491819121010111A1848181A12020E1011 +1A1848181A121010101C174918191210FDEE10111B17491819121010111A1848181A1202 +2210111A1848181A121010101C1749181912FDFE10111B17491819121010111A1848181A +1210010910111A172624181A111010111A1849181912100668F6A78D083FFC278D027C24 +171A121010101C17491819121010111A182524171A121010101C17491819121010111A18 +013449171A121010111B172524171A11100111101BFDD024171A12100111111B1748181A +121010111B172524171A12100111111B1748181A121010111B17026C49171A121010111B +172524171A11100111101B000000000F00C8FE1405BD076D0014002A004000550069007F +00830087008B00A100B700CC00E100F6010B000025343736373632171617161407060706 +222726272625343736373633321716171614070607062227262726103437363736321716 +171615140706070607222726270034373637363732171617161407060706222726272434 +3736373E011716171614070607062227262700343736373633321716171615140706070E +012726270121112137211121132115210134373637363332171617161407060706222726 +272625343736373633321716171614070607062227262726103437363736321716171615 +140706070E0127262701343736373E01171617161407060706222726272625343736373E +011716171614070607062227262726003437363736321716171615140706070E01272627 +03D410111C1748181A120F0F111B1749171A1310FDEF10111B172524171A131010111C17 +48181A121010111B1847181A131010111C172424181A12020210111B172524181A111010 +101B1848181913FDDE10111B1847181A131010111C1748181A12020210111B172524181A +111010101B1848181913FCE304F5FB0B8D03DBFC258C02C3FD3D01F210111B172524181A +111010111A174918191310FDEF10111A172624171A121010111B17491819121010111A18 +48181A121010111B1749181912020210111B17491819121010111A1848181A1210FDEE10 +111A1848181A121010111B174918191210021210111B17491819121010111A1848181A12 +9124171A131010111C1748181A121010111B172524171A131010111C1748181A12101011 +1B170134491819121010111A172624171A11100111111AFDAB49171A12100111111B1748 +181A120F0F111B1749171A12100111111B1748181A120F0F111B0283491819121010111A +172624171A11100111111A05E4F6A78D083FFC278D027C24171A121010101C1749181912 +1010111A182524171A121010101C17491819121010111A18013449171A121010111B1725 +24171A11100111101BFDD024171A12100111111B1748181A121010111B172524171A1210 +0111111B1748181A121010111B17026C49171A121010111B172524171A11100111101B00 +0000000300C8FE140767076D000B0017001B000001221511143321323511342325213215 +11142321223511340111211101B8787804BF7878FB4104BFF0F0FB41F0012C044706F578 +F887787807797878F0F887F0F00779F0F7D30701F8FF000500C8FE140767076D00180024 +00300033003B000001160017161514232227231417233635230623223534373600012215 +111433213235113423252132151114232122351134010321033301232721072304D74101 +3B091BC36C421E3B983B1E426CC31B09013BFD22787804BF7878FB4104BFF0F0FB41F002 +4B86010CD29A01208444FEB64484031879FE7E26254EE49BCC6B6BCC9BE44E2526018204 +5678F887787807797878F0F887F0F00779F0FEACFE55020FFCBCDADA0000000400C8FE14 +0767076D0018002400300049000001160017161514232227231417233635230623223534 +373600012215111433213235113423252132151114232122351134012115213536370035 +342623220607353E013332161514010604D741013B091BC36C421E3B983B1E426CC31B09 +013BFD22787804BF7878FB4104BFF0F0FB41F0019E01A8FDAA223F01586855347A484D85 +3991AEFEB538031879FE7E26254EE49BCC6B6BCC9BE44E25260182045678F88778780779 +7878F0F887F0F00779F0FC3F726E1F3801315E425123237B1C1C846C8BFEE43000000004 +00C8FE140767076D00180024003000590000011600171615142322272314172336352306 +23223534373600012215111433213235113423252132151114232122351134011E011514 +0623222627351E013332363534262B013533323635342623220607353E01333216151406 +04D741013B091BC36C421E3B983B1E426CC31B09013BFD22787804BF7878FB4104BFF0F0 +FB41F0029A5C65BEB1397D463477436D786F6C565E5E61645F28665149803790A95A0318 +79FE7E26254EE49BCC6B6BCC9BE44E25260182045678F887787807797878F0F887F0F007 +79F0FD91126D527C861514791B1A4F464A4C6C3F3C3A3D12177311127663456000000005 +00C8FE140767076D0018002400300033003E000001160017161514232227231417233635 +230623223534373600012215111433213235113423252132151114232122351134090121 +033311331523152335213504D741013B091BC36C421E3B983B1E426CC31B09013BFD2278 +7804BF7878FB4104BFF0F0FB41F0028EFECB013516A6878790FE62031879FE7E26254EE4 +9BCC6B6BCC9BE44E25260182045678F887787807797878F0F887F0F00779F0FE97FE5D02 +1CFDE46DBABA79000000000400C8FE140767076D00180024003000510000011600171615 +142322272314172336352306232235343736000122151114332132351134232521321511 +142321223511340521152115363736333217161514070623222627351617163332363426 +2322060704D741013B091BC36C421E3B983B1E426CC31B09013BFD22787804BF7878FB41 +04BFF0F0FB41F0011801FEFE791C1D1C1CA15E5E6160B03C7E42393E3E456F82826F3468 +36031879FE7E26254EE49BCC6B6BCC9BE44E25260182045678F887787807797878F0F887 +F0F00779F0F05FCC0904044D4C83874B4A1212711B0E0D66AE6614150000000500C8FE14 +0767076D0018002400300040006000000116001716151423222723141723363523062322 +353437360001221511143321323511342325213215111423212235113401220706151417 +163332373635342726131526272623220706073637363332171615140706232226353437 +363332171604D741013B091BC36C421E3B983B1E426CC31B09013BFD22787804BF7878FB +4104BFF0F0FB41F002475833333333585733333333AB313232318044440A26393A449154 +54585791A7B06C6CB6313232031879FE7E26254EE49BCC6B6BCC9BE44E25260182045678 +F887787807797878F0F887F0F00779F0FD9E34355B5A343535345A5B3534016267140A0B +4B4C99311A1A4C4D847F4F4EDED4C675760809000000000400C8FE140767076D00180024 +003000370000011600171615142322272314172336352306232235343736000122151114 +332132351134232521321511142321223511341721150123012104D741013B091BC36C42 +1E3B983B1E426CC31B09013BFD22787804BF7878FB4104BFF0F0FB41F0F00269FEA48801 +48FE33031879FE7E26254EE49BCC6B6BCC9BE44E25260182045678F887787807797878F0 +F887F0F00779F0F030FCED02E400000600C8FE140767076D001800240030003D005B006A +000001160017161514232227231417233635230623223534373600012215111433213235 +113423252132151114232122351134002207061514163332373634272526272635343620 +171615140706071617161514070623222726353437363714171633323736353427262207 +0604D741013B091BC36C421E3B983B1E426CC31B09013BFD22787804BF7878FB4104BFF0 +F0FB41F00297BA35356A5D5C363535FEEC542E2FA4011E52512E2F535A383555569E9F55 +5635362D2F2E55513130302FA6302F031879FE7E26254EE49BCC6B6BCC9BE44E25260182 +045678F887787807797878F0F887F0F00779F0FD5B2C2B4B4C562C2B962B5D1231324864 +743A3A644A303112123A37507941414141794E3938C63F26252524413F26252524000005 +00C8FE140767076D0018002400300050005F000001160017161514232227231417233635 +230623223534373600012215111433213235113423252132151114232122351134013516 +171633323736370607062322263534373633321716151407062322272613323635342726 +232207061514171604D741013B091BC36C421E3B983B1E426CC31B09013BFD22787804BF +7878FB4104BFF0F0FB41F0012E313232308144430A233C394590A8575891A757586B6CB6 +313232CC58663333585535343433031879FE7E26254EE49BCC6B6BCC9BE44E2526018204 +5678F887787807797878F0F887F0F00779F0FBDF67140B0A4B4B9A2F1B1A9884814D4E6F +6FD4C6757608090172685C5A343535345A5C34340000000600C8FE140767076D00180024 +0030003E004A005100000116001716151423222723141723363523062322353437360001 +221511143321323511342325213215111423212235113400220706151417163237363534 +2F0132161514062322263534360111073537331104D741013B091BC36C421E3B983B1E42 +6CC31B09013BFD22787804BF7878FB4104BFF0F0FB41F003EA8E323333328E3233337983 +AAAA83A28C8CFE74858C89031879FE7E26254EE49BCC6B6BCC9BE44E25260182045678F8 +87787807797878F0F887F0F00779F0FEC85656ACAD56565656ADAC56AFDED3D4DEDED4D3 +DEFCAC02D1297427FCBD000400C8FE140767076D001800240030003D0000011600171615 +142322272314172336352306232235343736000122151114332132351134232521321511 +142321223511340533111407062B01353332363504D741013B091BC36C421E3B983B1E42 +6CC31B09013BFD22787804BF7878FB4104BFF0F0FB41F001B27F41408F31285446031879 +FE7E26254EE49BCC6B6BCC9BE44E25260182045678F887787807797878F0F887F0F00779 +F0F0FDDC95464560546C000400C8FE140767076D001800240030004A0000011600171615 +142322272314172336352306232235343736000122151114332132351134232521321511 +14232122351134010E0123222635343633321617152E012322061514163332363704D741 +013B091BC36C421E3B983B1E426CC31B09013BFD22787804BF7878FB4104BFF0F0FB41F0 +033C316539B5C8C9B43966302F6A367C7C7B7D376A2E031879FE7E26254EE49BCC6B6BCC +9BE44E25260182045678F887787807797878F0F887F0F00779F0FBEB1716E3CECDE51717 +742224AAACABAB242200000500C8FE140767076D0011001B00340040004C000001220623 +222635343633321615140607170712102623220610163332051600171615142322272314 +172336352306232235343736000122151114332132351134232521321511142321223511 +3402FB0411059E9B9C9E9F9C56587E5F0A55616055556061019441013B091BC36C421E3B +983B1E426CC31B09013BFD22787804BF7878FB4104BFF0F0FB41F0032C01D7DADBD7D7DB +A5C9286A38018001709E9EFE909E6E79FE7E26254EE49BCC6B6BCC9BE44E252601820456 +78F887787807797878F0F887F0F00779F000000400C8FE140767076D001800240030003B +000001160017161514232227231417233635230623223534373600012215111433213235 +113423252132151114232122351134173311013309012301112304D741013B091BC36C42 +1E3B983B1E426CC31B09013BFD22787804BF7878FB4104BFF0F0FB41F0F07F016AA4FE69 +01B8A7FE787F031879FE7E26254EE49BCC6B6BCC9BE44E25260182045678F88778780779 +7878F0F887F0F00779F0F0FE9F0161FE7AFE420193FE6D000000000500C8FE140767076D +00150021002D003000380000013637363332171615140709012635343736333217160122 +15111433213235113423252132151114232122351134010321033301232721072304CC16 +373E548B3E137DFEC4FEC07D133F8A563C37FD02787804BF7878FB4104BFF0F0FB41F002 +4B86010CD29A01208444FEB6448401B6763E47952D3B9E9FFE6E01929DA03B2D95474104 +CC78F887787807797878F0F887F0F00779F0FEACFE55020FFCBCDADA0000000400C8FE14 +0767076D00150021002D0046000001363736333217161514070901263534373633321716 +012215111433213235113423252132151114232122351134012115213536370035342623 +220607353E013332161514010604CC16373E548B3E137DFEC4FEC07D133F8A563C37FD02 +787804BF7878FB4104BFF0F0FB41F0019E01A8FDAA223F01586855347A484D853991AEFE +B53801B6763E47952D3B9E9FFE6E01929DA03B2D95474104CC78F887787807797878F0F8 +87F0F00779F0FC3F726E1F3801315E425123237B1C1C846C8BFEE4300000000400C8FE14 +0767076D00150021002D0056000001363736333217161514070901263534373633321716 +012215111433213235113423252132151114232122351134011E0115140623222627351E +013332363534262B013533323635342623220607353E0133321615140604CC16373E548B +3E137DFEC4FEC07D133F8A563C37FD02787804BF7878FB4104BFF0F0FB41F0029A5C65BE +B1397D463477436D786F6C565E5E61645F28665149803790A95A01B6763E47952D3B9E9F +FE6E01929DA03B2D95474104CC78F887787807797878F0F887F0F00779F0FD91126D527C +861514791B1A4F464A4C6C3F3C3A3D1217731112766345600000000500C8FE140767076D +00150021002D0030003B0000013637363332171615140709012635343736333217160122 +151114332132351134232521321511142321223511340901210333113315231523352135 +04CC16373E548B3E137DFEC4FEC07D133F8A563C37FD02787804BF7878FB4104BFF0F0FB +41F0028EFECB013516A6878790FE6201B6763E47952D3B9E9FFE6E01929DA03B2D954741 +04CC78F887787807797878F0F887F0F00779F0FE97FE5D021CFDE46DBABA790000000004 +00C8FE140767076D00150021002D004E0000013637363332171615140709012635343736 +333217160122151114332132351134232521321511142321223511340521152115363736 +3332171615140706232226273516171633323634262322060704CC16373E548B3E137DFE +C4FEC07D133F8A563C37FD02787804BF7878FB4104BFF0F0FB41F0011801FEFE791C1D1C +1CA15E5E6160B03C7E42393E3E456F82826F34683601B6763E47952D3B9E9FFE6E01929D +A03B2D95474104CC78F887787807797878F0F887F0F00779F0F05FCC0904044D4C83874B +4A1212711B0E0D66AE6614150000000500C8FE140767076D00150021002D003D005D0000 +013637363332171615140709012635343736333217160122151114332132351134232521 +321511142321223511340122070615141716333237363534272613152627262322070607 +3637363332171615140706232226353437363332171604CC16373E548B3E137DFEC4FEC0 +7D133F8A563C37FD02787804BF7878FB4104BFF0F0FB41F0024758333333335857333333 +33AB313232318044440A26393A44915454585791A7B06C6CB631323201B6763E47952D3B +9E9FFE6E01929DA03B2D95474104CC78F887787807797878F0F887F0F00779F0FD9E3435 +5B5A343535345A5B3534016267140A0B4B4C99311A1A4C4D847F4F4EDED4C67576080900 +0000000400C8FE140767076D00150021002D003400000136373633321716151407090126 +353437363332171601221511143321323511342325213215111423212235113417211501 +23012104CC16373E548B3E137DFEC4FEC07D133F8A563C37FD02787804BF7878FB4104BF +F0F0FB41F0F00269FEA4880148FE3301B6763E47952D3B9E9FFE6E01929DA03B2D954741 +04CC78F887787807797878F0F887F0F00779F0F030FCED02E400000600C8FE140767076D +00150021002D003A00580067000001363736333217161514070901263534373633321716 +012215111433213235113423252132151114232122351134002207061514163332373634 +272526272635343620171615140706071617161514070623222726353437363714171633 +3237363534272622070604CC16373E548B3E137DFEC4FEC07D133F8A563C37FD02787804 +BF7878FB4104BFF0F0FB41F00297BA35356A5D5C363535FEEC542E2FA4011E52512E2F53 +5A383555569E9F555635362D2F2E55513130302FA6302F01B6763E47952D3B9E9FFE6E01 +929DA03B2D95474104CC78F887787807797878F0F887F0F00779F0FD5B2C2B4B4C562C2B +962B5D1231324864743A3A644A303112123A37507941414141794E3938C63F2625252441 +3F2625252400000500C8FE140767076D00150021002D004D005C00000136373633321716 +151407090126353437363332171601221511143321323511342325213215111423212235 +113401351617163332373637060706232226353437363332171615140706232227261332 +3635342726232207061514171604CC16373E548B3E137DFEC4FEC07D133F8A563C37FD02 +787804BF7878FB4104BFF0F0FB41F0012E313232308144430A233C394590A8575891A757 +586B6CB6313232CC5866333358553534343301B6763E47952D3B9E9FFE6E01929DA03B2D +95474104CC78F887787807797878F0F887F0F00779F0FBDF67140B0A4B4B9A2F1B1A9884 +814D4E6F6FD4C6757608090172685C5A343535345A5C34340000000600C8FE140767076D +00150021002D003B0047004E000001363736333217161514070901263534373633321716 +012215111433213235113423252132151114232122351134002207061514171632373635 +342F0132161514062322263534360111073537331104CC16373E548B3E137DFEC4FEC07D +133F8A563C37FD02787804BF7878FB4104BFF0F0FB41F003EA8E323333328E3233337983 +AAAA83A28C8CFE74858C8901B6763E47952D3B9E9FFE6E01929DA03B2D95474104CC78F8 +87787807797878F0F887F0F00779F0FEC85656ACAD56565656ADAC56AFDED3D4DEDED4D3 +DEFCAC02D1297427FCBD000400C8FE140767076D00150021002D003A0000013637363332 +171615140709012635343736333217160122151114332132351134232521321511142321 +223511340533111407062B01353332363504CC16373E548B3E137DFEC4FEC07D133F8A56 +3C37FD02787804BF7878FB4104BFF0F0FB41F001B27F41408F3128544601B6763E47952D +3B9E9FFE6E01929DA03B2D95474104CC78F887787807797878F0F887F0F00779F0F0FDDC +95464560546C000400C8FE140767076D00150021002D0047000001363736333217161514 +070901263534373633321716012215111433213235113423252132151114232122351134 +010E0123222635343633321617152E012322061514163332363704CC16373E548B3E137D +FEC4FEC07D133F8A563C37FD02787804BF7878FB4104BFF0F0FB41F0033C316539B5C8C9 +B43966302F6A367C7C7B7D376A2E01B6763E47952D3B9E9FFE6E01929DA03B2D95474104 +CC78F887787807797878F0F887F0F00779F0FBEB1716E3CECDE51717742224AAACABAB24 +2200000500D9FE140778076D0011001B0031003D00490000012206232226353436333216 +151406071707121026232206101633320136373633321716151407090126353437363332 +171601221511143321323511342325213215111423212235113402FB0411059E9B9C9E9F +9C56587E5F0A55616055556061018916373E548B3E137DFEC4FEC07D133F8A563C37FD13 +787804BF7878FB4104BFF0F0FB41F0032C01D7DADBD7D7DBA5C9286A38018001709E9EFE +909EFE30763E47952D3B9E9FFE6E01929DA03B2D95474104CC78F887787807797878F0F8 +87F0F00779F0000400C8FE140767076D00150021002D0038000001363736333217161514 +070901263534373633321716012215111433213235113423252132151114232122351134 +173311013309012301112304CC16373E548B3E137DFEC4FEC07D133F8A563C37FD027878 +04BF7878FB4104BFF0F0FB41F0F07F016AA4FE6901B8A7FE787F01B6763E47952D3B9E9F +FE6E01929DA03B2D95474104CC78F887787807797878F0F887F0F00779F0F0FE9F0161FE +7AFE420193FE6D000000000500C8FE140767076D00060012001E00210029000001300901 +300130012215111433213235113423252132151114232122351134010321033301232721 +072304CA0198FE68FE66FE88787804BF7878FB4104BFF0F0FB41F0024B86010CD29A0120 +8444FEB6448402F9FDF2FDFA0206060A78F887787807797878F0F887F0F00779F0FEACFE +55020FFCBCDADA000000000400C8FE140767076D00060012001E00370000013009013001 +300122151114332132351134232521321511142321223511340121152135363700353426 +23220607353E013332161514010604CA0198FE68FE66FE88787804BF7878FB4104BFF0F0 +FB41F0019E01A8FDAA223F01586855347A484D853991AEFEB53802F9FDF2FDFA0206060A +78F887787807797878F0F887F0F00779F0FC3F726E1F3801315E425123237B1C1C846C8B +FEE430000000000400C8FE140767076D00060012001E0047000001300901300130012215 +111433213235113423252132151114232122351134011E0115140623222627351E013332 +363534262B013533323635342623220607353E0133321615140604CA0198FE68FE66FE88 +787804BF7878FB4104BFF0F0FB41F0029A5C65BEB1397D463477436D786F6C565E5E6164 +5F28665149803790A95A02F9FDF2FDFA0206060A78F887787807797878F0F887F0F00779 +F0FD91126D527C861514791B1A4F464A4C6C3F3C3A3D1217731112766345600000000005 +00C8FE140767076D00060012001E0021002C000001300901300130012215111433213235 +113423252132151114232122351134090121033311331523152335213504CA0198FE68FE +66FE88787804BF7878FB4104BFF0F0FB41F0028EFECB013516A6878790FE6202F9FDF2FD +FA0206060A78F887787807797878F0F887F0F00779F0FE97FE5D021CFDE46DBABA790004 +00C8FE140767076D00060012001E003F0000013009013001300122151114332132351134 +232521321511142321223511340521152115363736333217161514070623222627351617 +1633323634262322060704CA0198FE68FE66FE88787804BF7878FB4104BFF0F0FB41F001 +1801FEFE791C1D1C1CA15E5E6160B03C7E42393E3E456F82826F34683602F9FDF2FDFA02 +06060A78F887787807797878F0F887F0F00779F0F05FCC0904044D4C83874B4A1212711B +0E0D66AE661415000000000500C8FE140767076D00060012001E002E004E000001300901 +300130012215111433213235113423252132151114232122351134012207061514171633 +323736353427261315262726232207060736373633321716151407062322263534373633 +32171604CA0198FE68FE66FE88787804BF7878FB4104BFF0F0FB41F00247583333333358 +5733333333AB313232318044440A26393A44915454585791A7B06C6CB631323202F9FDF2 +FDFA0206060A78F887787807797878F0F887F0F00779F0FD9E34355B5A343535345A5B35 +34016267140A0B4B4C99311A1A4C4D847F4F4EDED4C675760809000400C8FE140767076D +00060012001E002500000130090130013001221511143321323511342325213215111423 +21223511341721150123012104CA0198FE68FE66FE88787804BF7878FB4104BFF0F0FB41 +F0F00269FEA4880148FE3302F9FDF2FDFA0206060A78F887787807797878F0F887F0F007 +79F0F030FCED02E40000000600C8FE140767076D00060012001E002B0049005800000130 +090130013001221511143321323511342325213215111423212235113400220706151416 +333237363427252627263534362017161514070607161716151407062322272635343736 +37141716333237363534272622070604CA0198FE68FE66FE88787804BF7878FB4104BFF0 +F0FB41F00297BA35356A5D5C363535FEEC542E2FA4011E52512E2F535A383555569E9F55 +5635362D2F2E55513130302FA6302F02F9FDF2FDFA0206060A78F887787807797878F0F8 +87F0F00779F0FD5B2C2B4B4C562C2B962B5D1231324864743A3A644A303112123A375079 +41414141794E3938C63F26252524413F262525240000000500C8FE140767076D00060012 +001E003E004D000001300901300130012215111433213235113423252132151114232122 +351134013516171633323736370607062322263534373633321716151407062322272613 +323635342726232207061514171604CA0198FE68FE66FE88787804BF7878FB4104BFF0F0 +FB41F0012E313232308144430A233C394590A8575891A757586B6CB6313232CC58663333 +58553534343302F9FDF2FDFA0206060A78F887787807797878F0F887F0F00779F0FBDF67 +140B0A4B4B9A2F1B1A9884814D4E6F6FD4C6757608090172685C5A343535345A5C343400 +0000000600C8FE140767076D00060012001E002C0038003F000001300901300130012215 +111433213235113423252132151114232122351134002207061514171632373635342F01 +32161514062322263534360111073537331104CA0198FE68FE66FE88787804BF7878FB41 +04BFF0F0FB41F003EA8E323333328E3233337983AAAA83A28C8CFE74858C8902F9FDF2FD +FA0206060A78F887787807797878F0F887F0F00779F0FEC85656ACAD56565656ADAC56AF +DED3D4DEDED4D3DEFCAC02D1297427FCBD00000400C8FE140767076D00060012001E002B +000001300901300130012215111433213235113423252132151114232122351134053311 +1407062B01353332363504CA0198FE68FE66FE88787804BF7878FB4104BFF0F0FB41F001 +B27F41408F3128544602F9FDF2FDFA0206060A78F887787807797878F0F887F0F00779F0 +F0FDDC95464560546C00000400C8FE140767076D00060012001E00380000013009013001 +30012215111433213235113423252132151114232122351134010E012322263534363332 +1617152E012322061514163332363704CA0198FE68FE66FE88787804BF7878FB4104BFF0 +F0FB41F0033C316539B5C8C9B43966302F6A367C7C7B7D376A2E02F9FDF2FDFA0206060A +78F887787807797878F0F887F0F00779F0FBEB1716E3CECDE51717742224AAACABAB2422 +0000000500C8FE140767076D000600180022002E003A0000013009013001300322062322 +263534363332161514060717071210262322061016333201221511143321323511342325 +213215111423212235113404CA0198FE68FE66350411059E9B9C9E9F9C56587E5F0A5561 +6055556061FE75787804BF7878FB4104BFF0F0FB41F002F9FDF2FDFA0206024101D7DADB +D7D7DBA5C9286A38018001709E9EFE909E036F78F887787807797878F0F887F0F00779F0 +0000000400C8FE140767076D00060012001E002900000130090130013001221511143321 +3235113423252132151114232122351134173311013309012301112304CA0198FE68FE66 +FE88787804BF7878FB4104BFF0F0FB41F0F07F016AA4FE6901B8A7FE787F02F9FDF2FDFA +0206060A78F887787807797878F0F887F0F00779F0F0FE9F0161FE7AFE420193FE6D0003 +00C8FE140767076D00090015002100000113210113090113012101221511143321323511 +342325213215111423212235113404188E01D1FE898FFE89FE8790FE8901D0FE30787804 +BF7878FB4104BFF0F0FB41F00531FE47FEEFFE470111FEEF01B90111037D78F887787807 +797878F0F887F0F00779F0000000000500C8FE140767076D0023002F003B003E00460000 +053635062726272635343736333217263534201514073633321716151407060706271417 +012215111433213235113423252132151114232122351134010321033301232721072304 +553948AA351992103FAB4B317C01D87C314BAB3F10921935A94939FCC9787804BF7878FB +4104BFF0F0FB41F0024B86010CD29A01208444FEB64484FC4CFBC303010C439534248D13 +826AEAEA6A82138D243492460C0105C5FB4C07F178F887787807797878F0F887F0F00779 +F0FEACFE55020FFCBCDADA000000000400C8FE140767076D0023002F003B005400000536 +350627262726353437363332172635342015140736333217161514070607062714170122 +151114332132351134232521321511142321223511340121152135363700353426232206 +07353E013332161514010604553948AA351992103FAB4B317C01D87C314BAB3F10921935 +A94939FCC9787804BF7878FB4104BFF0F0FB41F0019E01A8FDAA223F01586855347A484D +853991AEFEB538FC4CFBC303010C439534248D13826AEAEA6A82138D243492460C0105C5 +FB4C07F178F887787807797878F0F887F0F00779F0FC3F726E1F3801315E425123237B1C +1C846C8BFEE430000000000400C8FE140767076D0023002F003B00640000053635062726 +272635343736333217263534201514073633321716151407060706271417012215111433 +213235113423252132151114232122351134011E0115140623222627351E013332363534 +262B013533323635342623220607353E0133321615140604553948AA351992103FAB4B31 +7C01D87C314BAB3F10921935A94939FCC9787804BF7878FB4104BFF0F0FB41F0029A5C65 +BEB1397D463477436D786F6C565E5E61645F28665149803790A95AFC4CFBC303010C4395 +34248D13826AEAEA6A82138D243492460C0105C5FB4C07F178F887787807797878F0F887 +F0F00779F0FD91126D527C861514791B1A4F464A4C6C3F3C3A3D12177311127663456000 +0000000500C8FE140767076D0023002F003B003E00490000053635062726272635343736 +333217263534201514073633321716151407060706271417012215111433213235113423 +252132151114232122351134090121033311331523152335213504553948AA351992103F +AB4B317C01D87C314BAB3F10921935A94939FCC9787804BF7878FB4104BFF0F0FB41F002 +8EFECB013516A6878790FE62FC4CFBC303010C439534248D13826AEAEA6A82138D243492 +460C0105C5FB4C07F178F887787807797878F0F887F0F00779F0FE97FE5D021CFDE46DBA +BA79000400C8FE140767076D0023002F003B005C00000536350627262726353437363332 +172635342015140736333217161514070607062714170122151114332132351134232521 +321511142321223511340521152115363736333217161514070623222627351617163332 +3634262322060704553948AA351992103FAB4B317C01D87C314BAB3F10921935A94939FC +C9787804BF7878FB4104BFF0F0FB41F0011801FEFE791C1D1C1CA15E5E6160B03C7E4239 +3E3E456F82826F346836FC4CFBC303010C439534248D13826AEAEA6A82138D243492460C +0105C5FB4C07F178F887787807797878F0F887F0F00779F0F05FCC0904044D4C83874B4A +1212711B0E0D66AE661415000000000500C8FE140767076D0023002F003B004B006B0000 +053635062726272635343736333217263534201514073633321716151407060706271417 +012215111433213235113423252132151114232122351134012207061514171633323736 +353427261315262726232207060736373633321716151407062322263534373633321716 +04553948AA351992103FAB4B317C01D87C314BAB3F10921935A94939FCC9787804BF7878 +FB4104BFF0F0FB41F002475833333333585733333333AB313232318044440A26393A4491 +5454585791A7B06C6CB6313232FC4CFBC303010C439534248D13826AEAEA6A82138D2434 +92460C0105C5FB4C07F178F887787807797878F0F887F0F00779F0FD9E34355B5A343535 +345A5B3534016267140A0B4B4C99311A1A4C4D847F4F4EDED4C675760809000400C8FE14 +0767076D0023002F003B0042000005363506272627263534373633321726353420151407 +363332171615140706070627141701221511143321323511342325213215111423212235 +11341721150123012104553948AA351992103FAB4B317C01D87C314BAB3F10921935A949 +39FCC9787804BF7878FB4104BFF0F0FB41F0F00269FEA4880148FE33FC4CFBC303010C43 +9534248D13826AEAEA6A82138D243492460C0105C5FB4C07F178F887787807797878F0F8 +87F0F00779F0F030FCED02E40000000600C8FE140767076D0023002F003B004800660075 +000005363506272627263534373633321726353420151407363332171615140706070627 +141701221511143321323511342325213215111423212235113400220706151416333237 +363427252627263534362017161514070607161716151407062322272635343736371417 +16333237363534272622070604553948AA351992103FAB4B317C01D87C314BAB3F109219 +35A94939FCC9787804BF7878FB4104BFF0F0FB41F00297BA35356A5D5C363535FEEC542E +2FA4011E52512E2F535A383555569E9F555635362D2F2E55513130302FA6302FFC4CFBC3 +03010C439534248D13826AEAEA6A82138D243492460C0105C5FB4C07F178F88778780779 +7878F0F887F0F00779F0FD5B2C2B4B4C562C2B962B5D1231324864743A3A644A30311212 +3A37507941414141794E3938C63F26252524413F262525240000000500C8FE140767076D +0023002F003B005B006A0000053635062726272635343736333217263534201514073633 +321716151407060706271417012215111433213235113423252132151114232122351134 +013516171633323736370607062322263534373633321716151407062322272613323635 +342726232207061514171604553948AA351992103FAB4B317C01D87C314BAB3F10921935 +A94939FCC9787804BF7878FB4104BFF0F0FB41F0012E313232308144430A233C394590A8 +575891A757586B6CB6313232CC58663333585535343433FC4CFBC303010C439534248D13 +826AEAEA6A82138D243492460C0105C5FB4C07F178F887787807797878F0F887F0F00779 +F0FBDF67140B0A4B4B9A2F1B1A9884814D4E6F6FD4C6757608090172685C5A343535345A +5C3434000000000600C8FE140767076D0023002F003B00490055005C0000053635062726 +272635343736333217263534201514073633321716151407060706271417012215111433 +213235113423252132151114232122351134002207061514171632373635342F01321615 +14062322263534360111073537331104553948AA351992103FAB4B317C01D87C314BAB3F +10921935A94939FCC9787804BF7878FB4104BFF0F0FB41F003EA8E323333328E32333379 +83AAAA83A28C8CFE74858C89FC4CFBC303010C439534248D13826AEAEA6A82138D243492 +460C0105C5FB4C07F178F887787807797878F0F887F0F00779F0FEC85656ACAD56565656 +ADAC56AFDED3D4DEDED4D3DEFCAC02D1297427FCBD00000400C8FE140767076D0023002F +003B00480000053635062726272635343736333217263534201514073633321716151407 +060706271417012215111433213235113423252132151114232122351134053311140706 +2B01353332363504553948AA351992103FAB4B317C01D87C314BAB3F10921935A94939FC +C9787804BF7878FB4104BFF0F0FB41F001B27F41408F31285446FC4CFBC303010C439534 +248D13826AEAEA6A82138D243492460C0105C5FB4C07F178F887787807797878F0F887F0 +F00779F0F0FDDC95464560546C00000400C8FE140767076D0023002F003B005500000536 +350627262726353437363332172635342015140736333217161514070607062714170122 +15111433213235113423252132151114232122351134010E012322263534363332161715 +2E012322061514163332363704553948AA351992103FAB4B317C01D87C314BAB3F109219 +35A94939FCC9787804BF7878FB4104BFF0F0FB41F0033C316539B5C8C9B43966302F6A36 +7C7C7B7D376A2EFC4CFBC303010C439534248D13826AEAEA6A82138D243492460C0105C5 +FB4C07F178F887787807797878F0F887F0F00779F0FBEB1716E3CECDE51717742224AAAC +ABAB24220000000500C8FE140767076D0023002F003B004D005700000536350627262726 +353437363332172635342015140736333217161514070607062714170122151114332132 +351134232521321511142321223511340122062322263534363332161514060717071210 +262322061016333204553948AA351992103FAB4B317C01D87C314BAB3F10921935A94939 +FCC9787804BF7878FB4104BFF0F0FB41F002330411059E9B9C9E9F9C56587E5F0A556160 +55556061FC4CFBC303010C439534248D13826AEAEA6A82138D243492460C0105C5FB4C07 +F178F887787807797878F0F887F0F00779F0FBBF01D7DADBD7D7DBA5C9286A3801800170 +9E9EFE909E00000400C8FE140767076D0023002F003B0046000005363506272627263534 +373633321726353420151407363332171615140706070627141701221511143321323511 +3423252132151114232122351134173311013309012301112304553948AA351992103FAB +4B317C01D87C314BAB3F10921935A94939FCC9787804BF7878FB4104BFF0F0FB41F0F07F +016AA4FE6901B8A7FE787FFC4CFBC303010C439534248D13826AEAEA6A82138D24349246 +0C0105C5FB4C07F178F887787807797878F0F887F0F00779F0F0FE9F0161FE7AFE420193 +FE6D000400C8FE140767076D00090013001F002B00000103210503250503252103130501 +132505130125012215111433213235113423252132151114232122351134041864FEBC01 +066501070105630105FEBB62AD01B2FEB860FE89FE8762FEB701B3FE4D787804BF7878FB +4104BFF0F0FB41F0046EFECEBEFECDBEBE0133BE01F5FE6F28FEE2FE54DFDF01A8012228 +035578F887787807797878F0F887F0F00779F000000000080099FF6A07BF075600070011 +00190023002B0033007F00B7000000343632161406223722061514333236353424140622 +26343632172206151433323635340034363216140622361406222634363206323E033713 +17073E043534262726273E0135342623220E011514170726353437262207161514072736 +35342E012322061514161706070E0115141E03172737131E031232173E01333216151407 +1615140E02070507250706070507250E01222627052725262F010527252E033534372635 +34363332161702E6425C42425C74112D0D112E01AF425C42425C17112C0D112DFE6F1620 +161620EC1620161620A16C4E2E1B090210860C3B71735636433730414962624F53824312 +8217012AA82A011782124382534F62624941303743365673713B0C861002091B2E38984C +2BCA8F8BAD5D9C4B839859019F04FDEC01020401FB16FE0D20A9FAA920FE0D1601FB0402 +01FDEC04019F5998834B9C5DAD8B8FCA2B03389067679067823D18123E18117590676790 +67DC3D18123E1811FD2236272736275D3627273627E024395D573E013A06FB1F4C6B7493 +4C4A9837332823835851696BA45C423F2653541B0E03030E1B5453263F425CA46B695158 +8323283337984A4C93746B4C1FFB06FEC63E575D3906020686BEB78C8A72ACC86CC8A17E +331A4423011F1FAE40AC6D8A8A6DAC40AE1F1F0123441A337EA1C86CC8AC728A8CB7BE86 +0000000B004BFF6A092D068A00090014001800220028002C008E0099009F00FD01070000 +012226343633321614062732363534232207061514173315230122263436333216140601 +37170727370115233525170607061514171E0133323736373635342726273716173E0437 +1633323E04373E013534272E0423220E020F0106072624200407262F012E0323220E0307 +06151416171E053332371E04173625323635342322070615140107170727370134372726 +2723222E06272E0135343E01373E0133321E0217161F01363736201716173736373E0333 +3216171E02151406070E072B01060F01161514070607060706070E012226272627262726 +2726010620271617163332360379323E3D33323E3D1E122D0E111716356E6E0249333D3E +32333D3EFB5333C5393F2A03946EFDD2423F11053934B18B694580423905113F42181205 +1E0D140A0152272038252F16360C312E3402261E2B2B121120231013133F593DFEF7FEBE +FEF73D593F131310232011122B2B1E2602342E310C36162F2538202752010A140D1E0512 +0306122D0E11171601EDAA2A3F39C5FACB0D1539100A213B2B351B37133F0A423A292C23 +3387411D333219172511412837A401A4A43728411125171932331D418733232C293A420A +3F13371B352B3B210A1039150D0D2260091620423688C48836422016095F230D033461FE +BA61111F379D6B7E02D16E826E6E826E1B4115111F1D1912D4D2018B6E826E6E826E02B5 +2DDABA1894FD4DD2D29376244411194B3B3722080D443B4B19114424760D0F136835574D +27140B0C2011310A2A4C372E3402281A23130E221119194E83656D6D65834E191911220E +13231A2802342E374C2A0A3111200C0B14274D573568130F4E4115111F1D1912029ABB94 +18BADAFBEF2A2C50DD4909081B0D2C0F39093A6B52345F35223253122718192715521D1B +4E4E1B1D52152719182712533222355F34526B3A09390F2C0D1B080949DD502C2A302873 +424430482E261B1B262E483044427328FEE016162415272600000008003DFF6A081D0714 +00110019002800320041004E007F00B80000013716333237163332371706232227062322 +01170622273716320106070623222726353437363332160722061514173E013726053E01 +33321716151407062322272617163332373635342726232206053635342E022726270607 +26232207262706070E031514172517051617251705161716203736372537053637253705 +2635343E0337363F01171E01173632173E013F011716171E041514071707270607170727 +02070621202726030727372627072702A65C455B3A54543A5B455C6C904A4445499001B8 +3E7AC27A3E5A86FEFC2B512028463615352F4146654E2430052B45121601B8056446422F +35153646282051790C1A302810040C0D2C400193120A0A16041B2AF399749B9D7499F32A +1B05150B0A1201420AFEBF0E17011E1AFEE167A4B501EAB5A467FEE11A011E150FFEC00A +FAC01107130C1F0517260F3C8FFD5D69E2695DFD8F3B102617051F0C1307116C0A6D0F20 +6E1A6D75C3D9FEE0FEDFD9C1766D1A6D1E106D0A018C62402C2C4062641C1C01A8783D3D +782E01064C1C0B23242D47302C612630240E0F073425111D43612C30472D24230B1C0403 +16181C0E0C033BA782742E663E7619A1A73AC41515C43AA7A11B7241652E74822B422C45 +40793E7AE777848477E77A3E79394C2C423D7C8F396A77419318758C3A091689610D0D61 +8916093A8C75189341776A398F7C0F420E51572E3E2EFEF78E9E9E8C010B2E3E2E51570E +4200000B00AAFF6A0896070B00070011001D00250031003B00470068009800AA00BC0000 +003436321614062237220615143332363534032235343736333215140706001406222634 +363201343332171615142322272601220615143332363534013716333236371706212226 +122037363534273E0235342726232206072E012322070615141E01170615141712200417 +16173633321615140706070E012B0106070E01070620272E012726272322262726272635 +343633321736373603262322070E011514171617163B0136372625060716173332373637 +36353426272623220319527452527491163710163810182C251E182C25020D5274525274 +FEFF181F252C181F252C011E1637101638FCE36A82CE60B43B6AA8FEEE80EA8A01C0A57C +541E1D1F565A8247711F1C7047825A561F1D1E547CD0016A0137616910191D6A90080D1C +228659070F3A38AB6D94FEE0946DAB383A0F075986221C0D08906A1D19106961D618200D +15282B0717471F2604083C35057410353C0804261F4717072B28150D2004087452527452 +6831130E31130EFE521520241F1520241F020C7452527452FE05151F2420151F24016B31 +130E31130EFDA854A4584C54D672FEDECB9AB886952C305E318A696F453535456F698A31 +5E302C9586B89A0600A47C889B06A4872C365B3F4B697B706EAD374C4C37AD6E707B694B +3F5B362C87A4069B887CFDCC15070F523A1E33972F15877B576060577B87152F97331E3A +520F07000000000900AAFF6A07AD066E000B00160022002E00340039003E004200460000 +013436333216151406232226253436321615140623222605100021200011100021200003 +100021200011100021200001211000200005363711230311231116253637230535231602 +82513B3A52523A3B510242527453533A3B51FC6D01BF013C013D01BDFE43FEC3FEC4FE41 +87020E01740175020CFDF4FE8BFE8CFDF2011404DBFE95FDFCFE9402B2584CA488A44C02 +0C481C64FD20651C03FF3B51513B3A53533A3B51513B3A5353DBFEC4FE4301BD013C013D +01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C016AFEFEFE96016ADF0B2A0125FEA601 +5AFEDB2A995264B8B866000900AAFF6A07AD066E000B00170023002F0035003A003F0043 +004700000110002120001110002120000310002120001110002120000134363216152334 +262206152134363216152334262206150721100020000536371123031123111625363723 +05352316013101BF013C013D01BDFE43FEC3FEC4FE4187020E01740175020CFDF4FE8BFE +8CFDF203BC8CC48C873D543DFD298CC48C873D543DDF04DBFE95FDFCFE9402B2584CA488 +A44C020C481C64FD20651C02EAFEC4FE4301BD013C013D01C0FE40FEC30175020FFDF1FE +8BFE8CFDF4020C02168BC5C58B537777538BC5C58B53777753ACFEFEFE96016ADF0B2A01 +25FEA6015AFEDB2A995264B8B8660009005FFF6A08F9066E00030007000C001100170023 +002F0059007E000001352316053637230111231116173637112325211000200013343632 +161523342622061521343632161523342622061505100021200011140717161716151406 +2227262F010207002120012603070607062226353437363F012637100021200011342706 +232227262F011716172627262120070607363F0107060706222706033C651C0329481C64 +FE4CA44CE0584CA4FD4E04DBFE95FDFCFE94588CC48C873D543D01C98CC48C873D543DFB +BD020E01740175020C025D3B181E364C1F19120B2AD1FEFAFE8BFE8CFEF9D12B0A12191F +4C361E173C5C028701BF013C013D01BD011B25261F19122D8829182F9ADEFEC2FEC4E09A +2F1829882D12191F4C1B0101A1B866505264FEA6015AFEDB2A0B0B2A012587FEFEFE9601 +6A01AE8BC5C58B537777538BC5C58B53777753A20175020FFDF1FE8B1D1B1F14181F2526 +361F193920FEE9D1FEFA0106D001161E39191F3626251F19131E1C1DFEC4FE4301BD013C +14131A1F1939882D0E0FC79AE0E09BC6100D2D8839191F1B1400000600AAFF6A07AD066E +000B00160022002E0034003C000001343633321615140623222625343632161514062322 +260510002120001110002120001310002120001110002120001321100020002521161716 +2437360282513B3A52523A3B510242527453533A3B51FBE6020E01740175020CFDF4FE8B +FE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE418D04DBFE95FDFCFE940442FC57215C +8E01948E5C03FF3B51513B3A53533A3B51513B3A5353DB0175020FFDF1FE8BFE8CFDF402 +0C0174FEC4FE4301BD013C013D01C0FE40FEB9FEFEFE96016A7B755C8E018E5C00000006 +00AAFF6A07AD066E000B00170023002F0035003E00000134363216152334262206152134 +363216152334262206150510002120001110002120001310002120001110002120001321 +1000200025211617163732373602168CC48C873D543D01C98CC48C873D543DFBBD020E01 +740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE418D04DBFE95FD +FCFE940442FC57215C8ECACA8E5C038C8BC5C58B537777538BC5C58B53777753A2017502 +0FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FEB9FEFEFE96016A7B +755C8E018E5C000700AAFF6A07AD066E000B00170023002F003B0041004A000001171607 +060706222635343705343632161523342622061521343632161523342622061505100021 +200011100021200013100021200011100021200013211000200025211617163732373606 +A8411C01011A1B4C361BFBAF8CC48C873D543D01C98CC48C873D543DFBBD020E01740175 +020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE418D04DBFE95FDFCFE94 +0442FC57215C8ECACA8E5C042C8038222B1A1B362C2335208BC5C58B537777538BC5C58B +53777753A20175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FE +B9FEFEFE96016A7B755C8E018E5C000600AAFF6A07AD066E0006000D00190025002B0033 +000001251707170725271505273727370110002120001110002120001310002120001110 +002120001321100020002521161716243736047C01274DC6C64DFED9A0FED94DC6C64DFD +F5020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE418D04 +DBFE95FDFCFE940442FC57215C8E01948E5C0427CE6E8B8A6ECE5555CE6E8A8B6EFDF501 +75020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FEB9FEFEFE9601 +6A7B755C8E018E5C00000007008FFF6A07C80763000F001F002A003500490057005F0000 +0137161716043736371706070620272601100021200011102F0106212027070605343632 +161514062322262534363332161406232226013424212004151407161110002120001110 +372625363534242120041514173621201726232207163332021D731C288F01938E271D73 +2532B6FDFCB632FEEF01BF013C013D01BDDE0EE5FED7FED8E60EE00394527453533A3B51 +FDBE513B3A52523A3B51FE0D021E017F0180021CFDE2FDF4FE8BFE8CFDF2E3FE05DBBCFE +43FEC3FEC4FE41BDF4014A014B43B0DEDDB0B0DDDE01D1472C268D018E272C483932B5B5 +330151FEC4FE4301BD013C013DE00E39390EE02A3B51513B3A53533A3B5151765253025C +86BEBE86825CFCFEA5FE8CFDF4020C0174015BFC5C02364A517272514A36CFF56E6E1C00 +0000000700AAFF6A07AD07300003000E0019001D002D0039004A00000105072501343632 +161514062322262534363332161406232226011705270137161716203736371706070620 +2726011000212000111000212000013620172511161110002120001110371102D2012F4D +FED1023F527453533A3B51FDBE513B3A52523A3B5103044DFED14DFDC6731C288E01948E +271D732532B6FDFCB632FEEF01BF013C013D01BDFE43FEC3FEC4FE4101E284012A8401BB +ADFDF4FE8BFE8CFDF2AE0567D46FD5FEBC3B51513B3A53533A3B515176525301EC6ED56F +FD3E472C268E8E272C483932B5B5330151FEC4FE4301BD013C013D01C0FE40021D2A2AEC +FDD0E7FED1FE8CFDF4020C0174012FE70230000500AAFF6A07AD066E000F001B00270032 +003900000137161716203736371706070620272601100021200011100021200003100021 +200011100021200001343633321614062322262D011707170725021D731C288E01948E27 +1D732532B6FDFCB632FEEF01BF013C013D01BDFE43FEC3FEC4FE4187020E01740175020C +FDF4FE8BFE8CFDF201D8513B3A52523A3B5101FA01274DC6C64DFED901D1472C268E8E27 +2C483932B5B5330151FEC4FE4301BD013C013D01C0FE40FEC30175020FFDF1FE8BFE8CFD +F4020C02873B515176525364CE6E8B8A6ECE000500AAFF6A07AD066E000F001B00270033 +003F00000137161716203736371706070620272603343632161523342622061521343632 +1615233426220615051000212000111000212000131000212000111000212000021D731C +288E01948E271D732532B6FDFCB6322C8CC48C873D543D01C98CC48C873D543DFBBD020E +01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE4101D1472C26 +8E8E272C483932B5B53301F38BC5C58B537777538BC5C58B53777753A20175020FFDF1FE +8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40000000000500AAFF6A07AD066E +000B00170037004300510000013436321615233426220615213436321615233426220615 +05100021323726270623200011331400200035331407161D013611100021200003100021 +2000111000212000050607161716333237363734272604668CC48C873D543DFD298CC48C +873D543DFE9401BF013C887665412B2DFEFEFE9487011D0194011C877B37D1FE43FEC3FE +C4FE4187020E01740175020CFDF4FE8BFE8CFDF205104F5C1F26241B100D21010102038C +8BC5C58B537777538BC5C58B53777753A2FEC4FE4329306C05016A0102CAFEE5011CC9D5 +A0646304DA0133013D01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C36432428181708 +133905062E00000500AAFF6A07AD066E000F001B00270033003F00000137161716203736 +371706070620272601140622263533141632363521140622263533141632363501100021 +2000111000212000131000212000111000212000021D731C288E01948E271D732532B6FD +FCB63204008CC48C873D543DFE378CC48C873D543DFD3F020E01740175020CFDF4FE8BFE +8CFDF28701BF013C013D01BDFE43FEC3FEC4FE4101D1472C268E8E272C483932B5B53302 +EF8BC5C58B537777538BC5C58B53777753FE620175020FFDF1FE8BFE8CFDF4020C0174FE +C4FE4301BD013C013D01C0FE4000000500AAFF6A07AD066E0017002F003B004700570000 +0132171615060F0123272635263736331617161733343736213217161533363736373217 +1607140F0123272627343736011000212000111000212000131000212000111000212000 +1337161716203736371706070620272605A61A193C0132A8029F3E010A263F29201C0A01 +0D23FD493D230D010A1C20293F260A013E9F02A832013C19FE12020E01740175020CFDF4 +FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE41EC731C288E01948E271D732532 +B6FDFCB63204C00E253F413ECFBE444C151944012020310E1D47471D0E31202001441915 +4C44BECF3E413F250EFE2A0175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C01 +3D01C0FE40FDAA472C268E8E272C483932B5B5330000000400AAFF6A07AD066E00170023 +0033003C000001100021200011342723151406222635140622263D012306071000212000 +11100021200025371617160437363717060706202726032126272621200706013101BF01 +3C013D01BD546EA6ECA6A6ECA66E5587020E01740175020CFDF4FE8BFE8CFDF20173731C +288F01938E271D732532B6FDFCB6326004941618DEFEC2FEC4E01802EAFEC4FE4301BD01 +3CC3A04F648E8E64648E8E644FA0C30175020FFDF1FE8BFE8CFDF4020C5B472C268D018E +272C483932B5B533033B1A19E0E019000000000500AAFF6A07AD066E000300070011001D +002900000135211521352115133237363717060706210110002120001110002120001310 +00212000111000212000049801AAFBD401AA6CCA8E271D732532B6FEFEFC7E020E017401 +75020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE41038C87878787FDAC +8E272C483932B502390175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01 +C0FE40000000000500AAFF6A07AD066E0003000E00190025003100000135211501343633 +321614062322262534363216151406232226051000212000111000212000131000212000 +111000212000024C03C0FC76513B3A52523A3B510242527453533A3B51FBE6020E017401 +75020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE4101718787028C3B51 +517652533A3B51513B3A5353D90175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD01 +3C013D01C0FE40000000000500AAFF6A07AD066E00030007000B00170023000001352115 +2135211501352115011000212000111000212000131000212000111000212000049801AA +FBD401AAFE8C03C0FA9E020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE +43FEC3FEC4FE41038C87878787FDE5878701790175020FFDF1FE8BFE8CFDF4020C0174FE +C4FE4301BD013C013D01C0FE4000000500AAFF6A07AD066E000B0017001B002900370000 +011000212000111000212000031000212000111000212000053521150135213216151406 +2322263534352135213216151406232226353435013101BF013C013D01BDFE43FEC3FEC4 +FE4187020E01740175020CFDF4FE8BFE8CFDF201A203C0FC0201783A52523A3B51015601 +783A53533A3B5102EAFEC4FE4301BD013C013D01C0FE40FEC30175020FFDF1FE8BFE8CFD +F4020C058787022D87513B3A53533A030287513B3A53533A0302000800AAFF6A07AD066E +0008000C00100014001F002A003600420000011716140622263437013521151325370D01 +272517013436333216140623222625343632161514062322260510002120001110002120 +001310002120001110002120000650411B364C361BFC3D03C00BFEA84D0158FBDD4D0158 +4DFEE9513B3A52523A3B510242527453533A3B51FBE6020E01740175020CFDF4FE8BFE8C +FDF28701BF013C013D01BDFE43FEC3FEC4FE4103AC80354F36364F35FE45878702A5F06F +F16E6EF16FFEAF3B51517652533A3B51513B3A5353910175020FFDF1FE8BFE8CFDF4020C +0174FEC4FE4301BD013C013D01C0FE400000000500AAFF6A07AD066E0003000F001B0027 +003300000135211513140622263533141632363521140622263533141632363501100021 +2000111000212000131000212000111000212000024C03C0368CC48C873D543DFE378CC4 +8C873D543DFD3F020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3 +FEC4FE410171878703178BC5C58B537777538BC5C58B53777753FE620175020FFDF1FE8B +FE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40000500AAFF6A07AD066E0003000E +001900250031000025270117013436333216140623222625343632161514062322260510 +00212000111000212000131000212000111000212000029539036739FC86513B3A52523A +3B510242527453533A3B51FBE6020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D +01BDFE43FEC3FEC4FE41AC7B01967B01BB3B51517652533A3B51513B3A5353D90175020F +FDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40000500AAFF6A07AD066E +0003000F001B001F00420000012701170110002120001110002120000310002120001110 +002120000901370103220706070E01272627262322072736373632171617163332373637 +3632171617072602C95F010E5FFD5A01BF013C013D01BDFE43FEC3FEC4FE4187020E0174 +0175020CFDF4FE8BFE8CFDF204E5FEF25F010E9A34290B1846C4461C0C22353820791019 +46C4461C0C223534280C1846C4461810791F035C5F010E5FFE80FEC4FE4301BD013C013D +01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C01E6010E5FFEF2FE57691D2262016328 +215F5F392822626228225F691E2262622228395F0000000500AAFF6A07AD066E000B0016 +0023002F003B000001343633321615140623222625343632161514062322260337273705 +15071715052737270110002120001110002120001310002120001110002120000282513B +3A52523A3B510242527453533A3B51CE50904101033C3CFEFD419050FCB4020E01740175 +020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE4103FF3B51513B3A5353 +3A3B51513B3A5353FE243E4E768D582E2E588D764E3E01230175020FFDF1FE8BFE8CFDF4 +020C0174FEC4FE4301BD013C013D01C0FE40000600AAFF6A07AD066E0017002200290036 +0042004E00000132171615060F0123272635263736331617161733343736013436333216 +14062322262D011707170725033727370515071715052737270110002120001110002120 +00131000212000111000212000066A1A1A3C0232A8029E3E020A264028201C0A020C22FC +56513B3A52523A3B5101FA01274DC6C64DFED98650904101033C3CFEFD419050FCB4020E +01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE4102AF0E253F +413ECFBE444C151944012020310E1D47014E3B515176525364CE6E8B8A6ECEFE173E4E76 +8D582E2E588D764E3E01230175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C01 +3D01C0FE4000000500AAFF6A07AD066E000B001700240030003C00000134363216152334 +262206152134363216152334262206150337273705150717150527372701100021200011 +100021200013100021200011100021200002168CC48C873D543D01C98CC48C873D543DF7 +50904101033C3CFEFD419050FCB4020E01740175020CFDF4FE8BFE8CFDF28701BF013C01 +3D01BDFE43FEC3FEC4FE41038C8BC5C58B537777538BC5C58B53777753FE5D3E4E768D58 +2E2E588D764E3E01230175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01 +C0FE40000000000500AAFF6A07AD066E000C001800240030003C00000137273705150717 +150527372701140622263533141632363521140622263533141632363501100021200011 +100021200013100021200011100021200003F650904101033C3CFEFD419050024C8CC48C +873D543DFE378CC48C873D543DFD3F020E01740175020CFDF4FE8BFE8CFDF28701BF013C +013D01BDFE43FEC3FEC4FE4101E93E4E768D582E2E588D764E3E02C18BC5C58B53777753 +8BC5C58B53777753FE620175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D +01C0FE400000000600AAFF6A07AD066E000B00160022002E0038003E0000013436333216 +151406232226253436321615140623222605100021200011100021200003100021200011 +1000212000253521152314062226352123141632360282513B3A52523A3B510242527453 +533A3B51FC6D01BF013C013D01BDFE43FEC3FEC4FE4187020E01740175020CFDF4FE8BFE +8CFDF201A203C0F28CC48C0155CE3D543D03FF3B51513B3A53533A3B51513B3A5353DBFE +C4FE4301BD013C013D01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C6387878BC5C58B +537777000000000600AAFF6A07AD066E000A0011001D0029003300390000013436333216 +14062322262D011707170725051000212000111000212000031000212000111000212000 +253521152314062226352123141632360282513B3A52523A3B5101FA01274DC6C64DFED9 +FCB501BF013C013D01BDFE43FEC3FEC4FE4187020E01740175020CFDF4FE8BFE8CFDF201 +A203C0F28CC48C0155CE3D543D03FD3B515176525364CE6E8B8A6ECEE8FEC4FE4301BD01 +3C013D01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C6387878BC5C58B537777000006 +00AAFF6A07AD066E000B0017001E0025002F003500000110002120001110002120000310 +002120001110002120000115052737273705251707170725013521152314062226352123 +14163236013101BF013C013D01BDFE43FEC3FEC4FE4187020E01740175020CFDF4FE8BFE +8CFDF20332FED94DC6C64D01C701274DC6C64DFED9FDD003C0F28CC48C0155CE3D543D02 +EAFEC4FE4301BD013C013D01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C02B155CE6E +8A8B6ECECE6E8B8A6ECEFE0787878BC5C58B53777700000700AAFF6A07AD066E00030007 +0012001D00290035004600000125370D0127251701343633321614062322262534363216 +151406232226051000212000111000212000131000212000111000212000133637362017 +16170726272623260706070617FEA84D0158FBDD4D01584DFEE9513B3A52523A3B510242 +527453533A3B51FBE6020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43 +FEC3FEC4FE41EC2532B60204B63324731C288ECACA8E271D0416F06FF16E6EF16FFEAF3B +51517652533A3B51513B3A5353910175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD +013C013D01C0FE40FD253833B5B53338482C278E018E272C0000000800AAFF6A07AD066E +000F001300170022002D0039004500560000252736373632171617072627262207060125 +370D01272517013436333216140623222625343632161514062322260510002120001110 +00212000131000212000111000212000133637362017161707262726232607060703D579 +101846C44618107907081E541E08023BFEA84D0158FBDD4D01584DFEE9513B3A52523A3B +510242527453533A3B51FBE6020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01 +BDFE43FEC3FEC4FE41EC2532B60204B63324731C288ECACA8E271D9F3928226262222839 +13103C3C100364F06FF16E6EF16FFEAF3B51517652533A3B51513B3A5353910175020FFD +F1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FD253833B5B53338482C27 +8E018E272C00000700AAFF6A07AD066E0003000E0019001D002900350046000001170527 +053436333216140623222625343632161514062322260105072501100021200011100021 +2000131000212000111000212000133637362017161707262726232607060705864DFED1 +4DFE2B513B3A52523A3B510242527453533A3B51FE0E012F4DFED1FE25020E0174017502 +0CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE41EC2532B60204B6332473 +1C288ECACA8E271D05676ED56FDE3B51517652533A3B51513B3A535301ECD46FD5FDF101 +75020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FD253833B5B533 +38482C278E018E272C00000800AAFF6A07AD066E0010001C0028002C0037004200460056 +000001363736201716170726272623260706070110002120001110002120000310002120 +001110002120000105072501343632161514062322262534363332161406232226011705 +2703273637363217161707262726220706021D2532B60204B63324731C288ECACA8E271D +FEA101BF013C013D01BDFE43FEC3FEC4FE4187020E01740175020CFDF4FE8BFE8CFDF202 +28012F4DFED1023F527453533A3B51FDBE513B3A52523A3B5103044DFED14D8279101846 +C44618107907081E541E08014C3833B5B53338482C278E018E272C01E5FEC4FE4301BD01 +3C013D01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C03F1D46FD5FEBC3B51513B3A53 +533A3B515176525301EC6ED56FFC0C392822626222283913103C3C100000000500AAFF6A +07AD066E000B001700230034004F00000110002120001110002120000310002120001110 +002120000114062226353314163236350136373620171617072627262326070607011407 +0607171607060706222635343F0126272635331416323635013101BF013C013D01BDFE43 +FEC3FEC4FE4187020E01740175020CFDF4FE8BFE8CFDF203488CC48C873D543DFEB22532 +B60204B63324731C288ECACA8E271D03B2463A4D201C01011A1B4C361B204D3A46873D54 +3D02EAFEC4FE4301BD013C013D01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C03128B +C5C58B53777753FCC43833B5B53338482C278E018E272C03838C62510E3F37232B1A1B36 +2C23353F0D52628C537777530000000500AAFF6A07AD066E00100017001E002A00360000 +013637362017161707262726232607060701251707170725271505273727370110002120 +00111000212000131000212000111000212000021D2532B60204B63324731C288ECACA8E +271D01EC01274DC6C64DFED9A0FED94DC6C64DFDF5020E01740175020CFDF4FE8BFE8CFD +F28701BF013C013D01BDFE43FEC3FEC4FE41014C3833B5B53338482C278E018E272C0322 +CE6E8B8A6ECE5555CE6E8A8B6EFDF50175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301 +BD013C013D01C0FE4000000600AAFF6A07AD066E0003000700180021002D003900000127 +01170901370901363736201716170726272623260706070117160E012226343705100021 +200011100021200003100021200011100021200002C95F010E5F01B8FEF25F010EFC2F25 +32B60204B63324731C288ECACA8E271D03DA421B01364C361CFB0701BF013C013D01BDFE +43FEC3FEC4FE4187020E01740175020CFDF4FE8BFE8CFDF2035C5F010E5FFEF2010E5FFE +F2FD913833B5B53338482C278E018E272C032380354F36364F35BEFEC4FE4301BD013C01 +3D01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C00000600AAFF6A07AD066E000B0016 +0022002E0034003C00000134363332161514062322262534363216151406232226051000 +212000111000212000131000212000111000212000012134002000052126272620070602 +82513B3A52523A3B510242527453533A3B51FBE6020E01740175020CFDF4FE8BFE8CFDF2 +8701BF013C013D01BDFE43FEC3FEC4FE4104F3FC0F012701A30127FCA902BD18456BFED2 +6A4503FF3B51513B3A53533A3B51513B3A5353DB0175020FFDF1FE8BFE8CFDF4020C0174 +FEC4FE4301BD013C013D01C0FE40FCA4E80146FEBA61604C74754C000000000800AAFF6A +07AD066E000300070012001D00290035003B004300000125370D01272517013436333216 +140623222625343632161514062322260510002120001110002120001310002120001110 +0021200001213400200005212627262007060617FEA84D0158FBDD4D01584DFEE9513B3A +52523A3B510242527453533A3B51FBE6020E01740175020CFDF4FE8BFE8CFDF28701BF01 +3C013D01BDFE43FEC3FEC4FE4104F3FC0F012701A30127FCA902BD18456BFED26A450416 +F06FF16E6EF16FFEAF3B51517652533A3B51513B3A5353910175020FFDF1FE8BFE8CFDF4 +020C0174FEC4FE4301BD013C013D01C0FE40FCA4E80146FEBA61604C74754C000000000E +00AAFF6A07AD066E000B00130019004E005A0066006C00780084008A00900096009C00A2 +000001141633323635342623220601212627262007060521340020000110002120001134 +2715231126271123350E0122272335263437112627112311060711161407152306222627 +152311060711233506071000212000111000212000013436333216151406232226253637 +350607013426232206151416333236271406232226353436333216011516173526272627 +1536372526271516172506071536372506071516170496744A55696F4F4C72FE3702BD18 +456BFED26A45033FFC0F012701A30127FB0D01BF013C013D01BD35441E25441E6D8E3844 +2B2B21224422212B2B44388E6E1D44251E443687020E01740175020CFDF4FE8BFE8CFDF2 +0471221718211F1A1623FD9E202323200109724C4F6F69554A748523161A1F2118172202 +1F241F206721221F24010E21222B18FC4F2320192A010E2221241F041A526C75494F6F6F +FCE9604C74754CE6E80146FEBA0137FEC4FE4301BD013C9B85BA013B2E29FE6E59364724 +403C9C3C013D0401FD6A02960104FEC33C9C3C402446375901932A2EFEC5BC869C017502 +0FFDF1FE8BFE8CFDF4020C02A418212118162320FC0A01A20F12FE914F6F6F4F49756C52 +192023161821210179A3010A8C13280A08F21409261E1884212DD2191D9C2D21FD070BC3 +0914000800AAFF6A07AD066E00030007000B000F001B0027002D00350000012701170901 +370901270117090137010510002120001110002120001310002120001110002120000121 +34002000052126272620070602C95F010E5F01B8FEF25F010EFCDB5F010E5F01B8FEF25F +010EFABC020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE +4104F3FC0F012701A30127FCA902BD18456BFED26A4504135F010E5FFEF2010E5FFEF2FE +585F010E5FFEF2010E5FFEF23F0175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD01 +3C013D01C0FE40FCA4E80146FEBA61604C74754C0000000700AAFF6A07AD066E0011001D +0029003500410047004F0000013736373633321716171615140706070623031406222635 +331416323635211406222635331416323635011000212000111000212000131000212000 +111000212000012134002000052126272620070605C455251F19160D0D24120A050C271F +3B128CC48C873D543DFE378CC48C873D543DFD3F020E01740175020CFDF4FE8BFE8CFDF2 +8701BF013C013D01BDFE43FEC3FEC4FE4104F3FC0F012701A30127FCA902BD18456BFED2 +6A4502C874320F0B040C2214150E0F24141001C08BC5C58B537777538BC5C58B53777753 +FE620175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FCA4E801 +46FEBA61604C74754C0000><000600AAFF6A07AD066E0006000D00190025002B00330000 +012517071707252715052737273701100021200011100021200013100021200011100021 +20000121340020000521262726200706047C01274DC6C64DFED9A0FED94DC6C64DFDF502 +0E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE4104F3FC0F +012701A30127FCA902BD18456BFED26A450427CE6E8B8A6ECE5555CE6E8A8B6EFDF50175 +020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40FCA4E80146FEBA61 +604C74754C0000000005005FFF6A08F9066E0005000C0013003D00620000252134002000 +0115052737273705251707170725051000212000111407171617161514062227262F0102 +07002120012603070607062226353437363F012637100021200011342706232227262F01 +1716172627262120070607363F010706070622270606A4FC0F012701A30127FDB8FED94D +C6C64D01C701274DC6C64DFED9FC2E020E01740175020C025D3B181E364C1F19120B2AD1 +FEFAFE8BFE8CFEF9D12B0A12191F4C361E173C5C028701BF013C013D01BD011B25261F19 +122D8829182F9ADEFEC2FEC4E09A2F1829882D12191F4C1B01CBE80146FEBA027455CE6E +8A8B6ECECE6E8B8A6ECEE80175020FFDF1FE8B1D1B1F14181F2526361F193920FEE9D1FE +FA0106D001161E39191F3626251F19131E1C1DFEC4FE4301BD013C14131A1F1939882D0E +0FC79AE0E09BC6100D2D8839191F1B14000500AAFF6A07AD066E00070013001E002A0036 +000000343632161406220134363332161514062322262534363216151406232226051000 +212000111000212000131000212000111000212000032C96D49696D4FEC0513B3A52523A +3B510242527453533A3B51FBE6020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D +01BDFE43FEC3FEC4FE41015AD49696D496033B3B51513B3A53533A3B51513B3A5353DB01 +75020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE40000000000700AA +FF6A07AD066E000300070012001D00250031003D00000125370D01272517013436333216 +140623222625343632161514062322260034363216140622011000212000111000212000 +1310002120001110002120000617FEA84D0158FBDD4D01584DFEE9513B3A52523A3B5102 +42527453533A3B51FEE84B6A4B4B6AFCB3020E01740175020CFDF4FE8BFE8CFDF28701BF +013C013D01BDFE43FEC3FEC4FE410416F06FF16E6EF16FFEAF3B51517652533A3B51513B +3A5353FE146A4B4B6A4B01A60175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C +013D01C0FE400000000800AAFF6A07AD066E00080010001400180023002E003A00460000 +01171614062226343700343632161406220125370D012725170134363332161406232226 +253436321615140623222605100021200011100021200013100021200011100021200006 +50411B364C361BFD1D96D49696D40255FEA84D0158FBDD4D01584DFEE9513B3A52523A3B +510242527453533A3B51FBE6020E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01 +BDFE43FEC3FEC4FE4103AC80354F36364F35FE2ED49696D4960352F06FF16E6EF16FFEAF +3B51517652533A3B51513B3A5353910175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301 +BD013C013D01C0FE4000000000070023FF3C0835066E0007000F00130017001F006B0094 +000000263436321614062026343632161406252725170525370500343632161406220135 +2E01270211343637363700200116171E011510030E010715233534373637361334262206 +070607060F010E011D01233506202715233534262F01262726272E012206151217161716 +1D01251620373534373637363736373E0137363736372627262007060716171E02171617 +16171617161505155152745353FD495151755252FEF94D01584D027EFEA84D0158FCC896 +D49696D4FDA14856188A683D3BAE010702E90106AE3B3D688A1856488726811D7A02273A +25060E6929385E271B886EFEFB79881B275E3829690E06253A27027A1D8126014C770109 +6C1B309138113C1102080C0C330F11328FDEFD86E08F33120F33180802113C113891301B +0328537551517553537551517652EE6EF16FF0F06FF1FCD6D49696D496FE78CB3E5B3101 +170127536B0ADFB00108FEF8AFE00A6B53FED9FEE9315B3ECBE7241F6E39F001121C2823 +6DF3712C25401C3C3FFB4C1E204EFB3F3C1C40252C71F36D23281CFEEEF0396E1F24E7DB +262521593B6556221344780F863836300E0AB590E0E08FB50B0E306E860F784413225665 +3B590000000900AAFF6A07AD066E000B00170023002F003B0047004F005B006700000114 +062322263534363332161734363332161514062322263714163332363534262322061734 +363332161514062322262534262322061514163332362714062322263534363332160234 +36321614062201100021200011100021200013100021200011100021200003F2925C6A84 +8B635F8F748F5F638B846A5C9230744A55696F4F4C7285221718211F1A1623FEA7724C4F +6F69554A748523161A1F211817221196D49696D4FCE8020E01740175020CFDF4FE8BFE8C +FDF28701BF013C013D01BDFE43FEC3FEC4FE41041A6688935B638B8B63638B8B635B9388 +66526C75494F6F6F4F18212118162320194F6F6F4F49756C5219202316182121FD28D496 +96D49602260175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE4000 +000A00AAFF6A07AD066E004A0056005E00620066006B007000740079007E000001100021 +200011342711231126271517071123352315233523152335231523113311331127371735 +262007153717071133113311233523152335231523352315231127373506071123110607 +100021200011100021200024343632161406221311331101333527173335072711151735 +260135071503060715371135072715013101BF013C013D01BD40441E2606064434444444 +444444445B4D96A7FE62A7964D5B4444444444444434440606251F444187020E01740175 +020CFDF4FE8BFE8CFDF203024B6A4B4B6A134401104444883403313419FCF944441B1934 +310302EAFEC4FE4301BD013CAA8FFE8501F32C28670409FE2D8888888888880238FED701 +103F6F697B60607B696F3FFEF00129FDC888888888888801D3090468282CFE0C017D90AB +0175020FFDF1FE8BFE8CFDF4020C196A4B4B6A4B01640238FDC8010FB12FE06304220123 +7F247A16FE6FE02FB101A413177924FEDB81220463000000000800AAFF6A0C71076C0009 +0013001D00250031003D0049005500000121150333152135132325211503331521351323 +252115033315213513230034363216140622011406222635331416323635211406222635 +3314163236350110002120001110002120001310002120001110002120000AF6017BF8F8 +FE7BF8EEFE17017BF8F8FE7BF8EEFE17017BF8F8FE7BF8EEFC884B6A4B4B6A024B8CC48C +873D543DFE378CC48C873D543DFD3F020E01740175020CFDF4FE8BFE8CFDF28701BF013C +013D01BDFE43FEC3FEC4FE41076C68FEF45C68010C5C68FEF45C68010C5C68FEF45C6801 +0CFA7F6A4B4B6A4B03448BC5C58B537777538BC5C58B53777753FE620175020FFDF1FE8B +FE8CFDF4020C0174FEC4FE4301BD013C013D01C0FE400000000500AAFF6A07AD066E000B +00170023002B003700000127372737173717071707270510002120001110002120000310 +00212000111000212000043436321614062201273727371737170717072702955F71715F +71725F71715F72FE2B01BF013C013D01BDFE43FEC3FEC4FE4187020E01740175020CFDF4 +FE8BFE8CFDF2028296D49696D4011E5F71715F71725F71715F7203285F71725F71715F72 +715F71AFFEC4FE4301BD013C013D01C0FE40FEC30175020FFDF1FE8BFE8CFDF4020C1CD4 +9696D49602645F71725F71715F72715F71000000000400AAFF6A07AD066E000A00150021 +002D00000134363332161406232226253436321615140623222605100021200011100021 +20001310002120001110002120000282513B3A52523A3B510242527453533A3B51FBE602 +0E01740175020CFDF4FE8BFE8CFDF28701BF013C013D01BDFE43FEC3FEC4FE4103FD3B51 +517652533A3B51513B3A5353D90175020FFDF1FE8BFE8CFDF4020C0174FEC4FE4301BD01 +3C013D01C0FE4000000A00AAFF6A07AD066E000B000F00130017001B001F00240028002C +003700001310002120001110002120000135211533352115252725170525370501211121 +012116212025361307011127120102272621200706031721AA020E01740175020CFDF4FE +8BFE8CFDF2016C01AAD801AAFBFF4D01584D027EFEA84D0158FC39031EFCE20354FC76C4 +010101020114CB16E1FBD4E21605D71BBEDEFEC2FEC4E0BE1CE0042C02EA0175020FFDF1 +FE8BFE8CFDF4020C01BA87878787E66EF16FF0F06FF1FC870118FE6193D9C901119EFEC4 +013C9EFEEF01B30102BFE0E0BFFEFF9D0009003AFF6A082607140008001D0052008F009D +00AB00B500BB00C100000032371706232227371716333237161514070604202427263534 +371633320114172517051617251705161716171620373637363725370536372537053635 +342E02272627060726232207262706070E03072635343E0337363F01171E01173632173E +013F011716171E0415140717072706071707270607020706212027260326270727372627 +072725342E01220E011523343632161521342E01220E0115233436321615012627060715 +1633323F01153637062305352322271603EC825C3E786365763EA072749E92051D36FEED +FE9CFEEC3B230395A079FD5D07014D05FEB4080E013416FEC8121666A3B501EAB5A1671A +10FECD16012E0E08FEBA050147060A0A16041B2AF399749B9D7499F32A1B05150B0A8005 +07130C1F0517260F3C8FFD5D69E2695DFD8F3B102617051F0C13070569046B0815681664 +131B74C0D9FEE0FEDFD9C0741D105E16621409650403311531423115878CC48C01C91531 +423115878CC48CFE3A24281A322B242920886033483AFE47153F3F3402FC2E783D3D78FC +25422019444781938F7D4B5317174201C724621543164A41693F6C3A31E277848476E338 +356A3F673E4C15431552342E663E7619A1A73AC41515C43AA7A11B724165BD4D45396A77 +419318758C3A091689610D0D618916093A8C75189341776A39444D07440756572440223C +3CFEFD8C9E9E8C010340362040224F600744512B5A4545592C8CC4C48C2B5A4545592C8C +C4C48CFE03070B070A910504846327460A6161094300000000090060FF6A08F80714003F +0048005D00A800B600C400CE00D400DA0000013635342E02272627060726200726270607 +0E03151417363F01070E0123222716172517051617161716203736373637253705363706 +2322262F0117160432371706232227371716333237161514070604202427263534371633 +320522263534363F0134270727372635343E0337363F01171E01173632173E013F011716 +171E041514071707270607171E011514062322262F010607020706202726032627070601 +342E01220E011523343632161521342E01220E0115233436321615012627060715163332 +3F01153637062305352322271607BA020A0A16041A2AF29A74FEC87498F42A1C05150A0A +021850882C11332C301C0810013416FEC8121666A4B501E9B6A2661A10FECC16012E1008 +1C302C34102E8A52FCC8825C3E786266763EA072749E92061E36FEEEFE9CFEEC3C220296 +A078FC7C25373E345A086604640608120C200418260E3C8FFD5E69E16A5DFD8E3C102616 +051F0C14060468046A06045A343C36242C34120E182C74C0D8FDC0DAC0742A1A102402E4 +1630423214888CC48C01CA1630423214888CC48CFE3A24281A322C242820886034483AFE +46143E4034037C282C2E663E7619A1A73AC41515C43AA7A11B7241652E2A272C192C8833 +3C25574C693F6C3A31E277848476E338356A3F674460283C33882C19AF2E783D3D78FC25 +422019444781938F7D4B531717424136252C34111D034A0744064D45396A77419318758C +3A091689610D0D618916093A8C75189341776A39444D07440734191D11342C25363C332A +6862FEFD8C9E9E8C01035D702D6F01C42B5A4545592C8CC4C48C2B5A4545592C8CC4C48C +FE03070B070A910504846327460A6161094300000009003AFF6A082607140008001D002A +005F009C00AA00B400C300D0000000323717062322273717163332371615140706042024 +272635343716333217062322271E01323637062322011417251705161725170516171617 +1620373637363725370536372537053635342E02272627060726232207262706070E0307 +2635343E0337363F01171E01173632173E013F011716171E041514071707270607170727 +060702070621202726032627072737262707272534363332161706070623222726372206 +1514173E0137260514070623222726273637363332160716333237363534272623220603 +EC825C3E786365763EA072749E92051D36FEEDFE9CFEEC3B230395A0797072773F3F35C0 +EABD32483A75FC7D07014D05FEB4080E013416FEC8121666A3B501EAB5A1671A10FECD16 +012E0E08FEBA050147060A0A16041B2AF399749B9D7499F32A1B05150B0A800507130C1F +0517260F3C8FFD5D69E2695DFD8F3B102617051F0C13070569046B0815681664131B74C0 +D9FEE0FEDFD9C0741D105E16621409650401E263433E5D07304C2128433808FD2430052B +45121502FF08384325244D2F08322D3B4363A40C1A2E2A10040C0D2C4002FC2E783D3D78 +FC25422019444781938F7D4B53171742681F09454C4D450A024E24621543164A41693F6C +3A31E277848476E338356A3F673E4C15431552342E663E7619A1A73AC41515C43AA7A11B +724165BD4D45396A77419318758C3A091689610D0D618916093A8C75189341776A39444D +07440756572440223C3CFEFD8C9E9E8C010340362040224F6007449F465F573B45180B21 +17492B200D0D062F210F2D1D17210C1943422A265F7A031415190C0B033500000006003D +FF6A081D071400110019004A0083009800AD000001371633323716333237170623222706 +23220117062227371632253635342E02272627060726232207262706070E031514172517 +0516172517051617162037363725370536372537052635343E0337363F01171E01173632 +173E013F011716171E041514071707270607170727020706212027260307273726270727 +013E0133321615140F012327262734363332171615253216173334373633321615060F01 +23272635343602A65C455B3A54543A5B455C6C904A4445499001B83E7AC27A3E5A8602BA +120A0A16041B2AF399749B9D7499F32A1B05150B0A1201420AFEBF0E17011E1AFEE167A4 +B501EAB5A467FEE11A011E150FFEC00AFAC01107130C1F0517260F3C8FFD5D69E2695DFD +8F3B102617051F0C1307116C0A6D0F206E1A6D75C3D9FEE0FEDFD9C1766D1A6D1E106D0A +02E30A3A2D2E3E3E9F02A83102402F3D230D01A82D3A0A010D233D2F400231A8029F3E3E +018C62402C2C4062641C1C01A8783D3D782E3882742E663E7619A1A73AC41515C43AA7A1 +1B7241652E74822B422C4540793E7AE777848477E77A3E79394C2C423D7C8F396A774193 +18758C3A091689610D0D618916093A8C75189341776A398F7C0F420E51572E3E2EFEF78E +9E9E8C010B2E3E2E51570E42019530423D314A4ABECF3D422A48471B10724230101B4748 +2A423DCFBE4A4A313D000000000A003DFF6A081D071400030007000F001E002800370044 +007500AE00B800000105072D011705271317062227371632010607062322272635343736 +3332160722061514173E013726053E013332171615140706232227261716333237363534 +2726232206053635342E02272627060726232207262706070E0315141725170516172517 +051617162037363725370536372537052635343E0337363F01171E01173632173E013F01 +1716171E0415140717072706071707270207062120272603072737262707270132373637 +170607062102D2012F4DFED103014DFED14D733E7AC27A3E5A86FEFC2B51202846361535 +2F4146654E2430052B45121601B8056446422F35153646282051790C1A302810040C0D2C +400193120A0A16041B2AF399749B9D7499F32A1B05150B0A1201420AFEBF0E17011E1AFE +E167A4B501EAB5A467FEE11A011E150FFEC00AFAC01107130C1F0517260F3C8FFD5D69E2 +695DFD8F3B102617051F0C1307116C0A6D0F206E1A6D75C3D9FEE0FEDFD9C1766D1A6D1E +106D0A03EFCA8E281C732235B5FEFD0567D46FD56E6ED56FFE3D783D3D782E01064C1C0B +23242D47302C612630240E0F073425111D43612C30472D24230B1C040316181C0E0C033B +A782742E663E7619A1A73AC41515C43AA7A11B7241652E74822B422C4540793E7AE77784 +8477E77A3E79394C2C423D7C8F396A77419318758C3A091689610D0D618916093A8C7518 +9341776A398F7C0F420E51572E3E2EFEF78E9E9E8C010B2E3E2E51570E42FE7F8E282B48 +3635B5000008003DFF6A081D0714000E001800270034006900A800B500BE000001060706 +23222726353437363332160722061514173E013726053E01333217161514070623222726 +17163332373635342726232206053635342E02272627060726232207262706070E031514 +1716172517051617251705171617162037363F01253705363725370032173E013F011716 +171E04151406150607170727060717072707020706212027260327072737262707273726 +2735343E0337363F01171E01171337273705150717150527372702323717062322273703 +6C2B512028463615352F4146654E2430052B45121601B8056446422F3515364628205179 +0C1A302810040C0D2C400193120A0A16041B2AF399749B9D7499F32A1B05150B0A020709 +01420AFEBF0E17011E1AFEE10266A3B501EAB5A16703FEE11A011E150FFEC00AFDD3E269 +5DFD8F3B102617051F0C130701030D6C0A6D0F206E1A6D0474C0D9FEE0FEDFD9C074036D +1A6D1E106D0A6C0E0307130C1F0517260F3C8FFD5DA350904101033C3CFEFD4190500B84 +5B3E776465763E03A84C1C0B23242D47302C612630240E0F073425111D43612C30472D24 +230B1C040316181C0E0C033BA783732E663E7619A1A73AC41515C43AA7A11B7241652E0F +2482412B422C4540793E7A05E277848476E3057A3E79394C2C4203130D618916093A8C75 +189341776A39071C078A570F420E51572E3E2E08FEFD8C9E9E8C0103082E3E2E51570E42 +0F60812A396A77419318758C3A09168961FB3A3D4E778D592E2D598D774E3D01DA2E783D +3D780000000B003DFF6A081D0714000E0018002700340065009E00A600AF00B800BC00C0 +00000106070623222726353437363332160722061514173E013726053E01333217161514 +07062322272617163332373635342726232206053635342E022726270607262322072627 +06070E0315141725170516172517051617162037363725370536372537052635343E0337 +363F01171E01173632173E013F011716171E041514071707270607170727020706212027 +260307273726270727013632170726220725362017072623220700323717062322273701 +17052725050725036C2B512028463615352F4146654E2430052B45121601B8056446422F +35153646282051790C1A302810040C0D2C400193120A0A16041B2AF399749B9D7499F32A +1B05150B0A1201420AFEBF0E17011E1AFEE167A4B501EAB5A467FEE11A011E150FFEC00A +FAC01107130C1F0517260F3C8FFD5D69E2695DFD8F3B102617051F0C1307116C0A6D0F20 +6E1A6D75C3D9FEE0FEDFD9C1766D1A6D1E106D0A034746C446601E541EFE90B50206B560 +8ECAC8900117845B3E776465763E01F64DFED14DFE7B012F4DFED103A84C1C0B23242D47 +302C612630240E0F073425111D43612C30472D24230B1C040316181C0E0C033BA782742E +663E7619A1A73AC41515C43AA7A11B7241652E74822B422C4540793E7AE777848477E77A +3E79394C2C423D7C8F396A77419318758C3A091689610D0D618916093A8C75189341776A +398F7C0F420E51572E3E2EFEF78E9E9E8C010B2E3E2E51570E42FE1363635F3C3CF5B5B5 +608E8E01FA2E783D3D78023D6ED56FD4D46FD5000005003DFF6A081D07140020002C0034 +0064008E0000011406071716140622263534350622273716323717363F012E0135331416 +3236352114062226353314163236350336201707262007012610363F01363F01171E0117 +3632173E013F0117161F011E011407170727060717072702002000030727372627072705 +122132243725370536372537053635342F01262706072620072627060F01061514172517 +05161725170642804D201B364C366EC2763E5B845B33070F204D80873D543DFE378CC48C +873D543DF7B50206B5608EFE6E90FDD51120161417260F3C8FFD5D69E2695DFD8F3B1026 +17142B0B116C0A6D0F206E1A6D75FE64FDBFFE66766D1A6D1E106D0A013BD701DEF50159 +67FEE11A011E150FFEC00A0141121A1E102BF39974FEC87499F32A1B10201301420AFEBF +0E17011E1A04888BB40E3F354F36362C0303353D782E2E63181D3F0EB48B537777538BC5 +C58B53777753FCDAB5B5608E8E01C67C0106C46A61758C3A091689610D0D618916093A8C +7561CCA0C87C0F420E51572E3E2EFEF7FED4012A010B2E3E2E51570E42E6FE1EFBE77A3E +79394C2C422B8251888DAE62A73AC41515C43AA7A154A86E6B822B422C4540793E000000 +0006003DFF6A081D071400340073007B00830087008B0000013635342E02272627060726 +232207262706070E0315141716172517051617251705171617162037363F012537053637 +25370032173E013F011716171E0415140615060717072706071707270702070621202726 +03270727372627072737262735343E0337363F01171E0117032126272620070605213437 +363332000301370105270117072A120A0A16041B2AF399749B9D7499F32A1B05150B0A02 +070901420AFEBF0E17011E1AFEE10266A3B501EAB5A16703FEE11A011E150FFEC00AFDD3 +E2695DFD8F3B102617051F0C130701030D6C0A6D0F206E1A6D0474C0D9FEE0FEDFD9C074 +036D1A6D1E106D0A6C0E0307130C1F0517260F3C8FFD5D8602BD18456BFED26A45033FFC +0F9393D2D1012895FEF25F010EFCDB5F010E5F02DA83732E663E7619A1A73AC41515C43A +A7A11B7241652E0F2482412B422C4540793E7A05E277848476E3057A3E79394C2C420313 +0D618916093A8C75189341776A39071C078A570F420E51572E3E2E08FEFD8C9E9E8C0103 +082E3E2E51570E420F60812A396A77419318758C3A09168961FB47614B74754BE7E7A4A3 +FEBA017E010E5FFEF25F5F010E5F00000001FFB9049A00C706120003000A400300030400 +10D4CC3011330323C775990612FE88000002FCD7050EFF2905D90003000700A5400D0400 +CE0602080164000564040810D4FCDCEC310010D43CEC3230004BB00E544BB011545B58BD +00080040000100080008FFC03811373859014BB00E544BB00D545B4BB017545B58BD0008 +FFC000010008000800403811373859014BB011544BB019545B58BD000800400001000800 +08FFC03811373859004BB0185458BD0008FFC00001000800080040381137385940116001 +600260056006700170027005700608015D0133152325331523FE5ECBCBFE79CBCB05D9CB +CBCB00000001FD7304EEFEF005F60003007F40110203000301000003420002FA04010303 +0410C410C0310010F4CC304B5358071005C9071005C95922004BB00C5458BD0004FFC000 +010004000400403811373859004BB00E5458BD00040040000100040004FFC03811373859 +402006021502250125023602460256026A016702090F000F011F001F012F002F01065D01 +5D01330323FE37B9E49905F6FEF800000001FCB6050EFF4A05E9001D0075402116100F03 +130C0701000308170CC30413C31B08FA1E10010F00071656180756091E10D4ECD4EC1139 +393939310010F43CECD4EC321217391112173930004BB00C5458BD001EFFC00001001E00 +1E00403811373859004BB00E5458BD001E00400001001E001EFFC03811373859B4100B1F +1A025D01272E012322061D012334363332161F011E013332363D01330E01232226FDFC39 +191F0C24287D6756243D303917220F20287D026754223B0539210E0B322D066576101B1E +0D0C3329066477100001FD0C04EEFE8B05F60003008940110102030200030302420001FA +040103030410C410C0310010F4CC304B5358071005C9071005C95922004BB00C5458BD00 +04FFC000010004000400403811373859004BB00E5458BD00040040000100040004FFC038 +11373859402A06000601160012012400240135014301550055019F009F01AF00AF010E0F +000F031F001F032F002F03065D015D01132303FDC7C499E605F6FEF8010800000001FCCF +04EEFF3105F800060077400A04000502FA070402060710D4C439310010F43CC43930004B +B00C5458BD0007FFC000010007000700403811373859004BB00E5458BD00070040000100 +070007FFC03811373859014BB00E5458BD0007FFC0000100070007004038113738594013 +0F000F010C041F001F011D042F002F012D0409005D01331323270723FDA2BCD38BA6A68B +05F8FEF6B2B200000001FCCF04EEFF3105F800060086400A03040100FA070305010710D4 +C439310010F4C4323930004BB00C544BB009545B4BB00A545B4BB00B545B58BD0007FFC0 +00010007000700403811373859004BB00E5458BD00070040000100070007FFC038113738 +59014BB00E5458BD0007FFC0000100070007004038113738594013000003030006100012 +03100620002203200609005D01033317373303FDA2D38BA6A68BD304EE010AB2B2FEF600 +0001FCC70506FF3905F8000D000003232E0123220607233E01333216C7760D6353526110 +760AA08F909F050636393738777B7A000001FCC70506FF3905F8000D006A400E070004C3 +0BFA0E0756080156000E10D4ECD4EC310010F4FCCC3230004BB00C5458BD000EFFC00001 +000E000E00403811373859004BB00E5458BD000E00400001000E000EFFC0381137385901 +4BB00E544BB00F545B58BD000EFFC00001000E000E0040381137385901331E0133323637 +330E01232226FCC7760D6353526110760AA08F909F05F836393738777B7A00000001FD9A +050EFE6605DB00030047B700CE02040164000410D4EC310010D4EC30004BB00E544BB011 +545B58BD00040040000100040004FFC03811373859004BB0185458BD0004FFC000010004 +00040040381137385901331523FD9ACCCC05DBCD0002FCE604EEFFB205F6000300070013 +40070004030708000410CC310010D43CCC32300133032303330323FEF9B9E4998BB9E499 +05F6FEF80108FEF80002FC4E04EEFF1A05F60003000700000113230321132303FD07C499 +E40208C499E405F6FEF80108FEF801080001000000000096009600030000353315239696 +96960000000200000000019000960003000700003733152327331523FA9696FA96969696 +969600000003000000000190019000030007000B00001333152317331523273315237D96 +967D9696FA969601909664969696000000030000FF060190009600030007000B00001733 +152313331523273315237D96967D9696FA969664960190969696000000020000FF060096 +0096000300070000153315231133152396969696649601909600000000040000FF060190 +009600030007000B000F000017331523113315230733152311331523FA96969696FA9696 +96966496019096649601909600010082FFEC07EF029D00260000011417163B0115232227 +262706070423222724032637330615141716332437363736353427331606EF463F3F3C66 +744750189BE9FEFDD3C47CFEB7010140B841CB68970104BEC77B3B1DB81301F8D03B35B8 +49534283353A266501088A5C5E887D432202373A6D34773E374B0000FFFFFFEC00000187 +02581006144E0000FFFFFFEC0000027E02581006144F000000020082FFA5085C0311002C +003E00002506070421242724032637330615141716213225372627263534373637363332 +171617161514071633211521222736353427262726232207060706151417160678686EFE +E8FEF0FECF7DFEB7010140B841CB51012BE8011D1C221D520416BC3A3452518912045009 +070107FEF4696F68050E34222818163D13062931242B183C01276701068A5C5E88734D1F +36041B2C7C791F249B4B17325396251E906A01B8DF417A141B4727190A193C131238424E +0002FFEC0000033F03D9000F003000000136353427260706070607141716333201333237 +3637363706070627263534373637363332171617161514070607062321025629421F2C34 +28280137282A48FDAEF154974F3C1F0F3F61824E620817964E4C5A42602E174E4A7C6D91 +FEBF02192B4D3B331901012A2933502619FEB7170C5D3032370202455781342C94452432 +4866338CD08F882C270000000002FFEC0000042003080021003500000116171615140706 +07163B0115232227062B0135333237262726353437363736333207220706070615141716 +173637363534272627260266B71808151D2427937FD988B9B988D97F93271D24150817B9 +1E413F3F0F1238180A181F443F24190B17391302FA5096322A4931433211B83939B81128 +4D2E4C2C308F570EB80A2035151D2B3544161545322E181A34210A000002006BFE0C06C0 +02E4002E0040000025262726272635343736373633321716171617163321152123060706 +070627242726353437330615141716213237361336272627262322070607061514171617 +1604B8422E79399306289329577038633214061A040107FEF4302D3D809EAFCDFE8E5E45 +3EB83E1B3C01068C96D56C0416132F2227221533150A394C642F0A050D232B6DB93D1AA5 +45133258913AD601B87A46914E560102BE8A7DA6606B9B4C3A824462015A7A574B23190A +1B3A1E193C2C3B1409000000FFFFFFEC0000033F03D91006172B0000FFFFFFEC00000420 +03081006172C0000FFFFFFEC0000018703E81026172800001007172100E00352FFFFFFEC +0000027E03E81026172900001007172100E0035200020000000001B601B7000B00170000 +25342726220615141716323E011407062227263437363217013C1C1C52381C1C52387A3F +40B83F40403FB840DC281C1D38292A1C1B3885B840404040B8403F3FFFFF0082FE9007EF +03201027172202BC028A1027173202A9FE90100617270000FFFFFFECFEF4020603E81026 +172800001027172200630352100717320050FEF4FFFFFFECFEF4027E03E8102617290000 +1027172200630352100717320050FEF4FFFF0082FFEC07EF03B61027172402BC03201006 +17270000FFFFFFEC000001F304E2102617280000100717240063044CFFFFFFEC0000027E +04E2102617290000100717240063044CFFFF009DFE0C053E05AF1026149900001007057C +008AFF38FFFFFFEC0000045C054B1026149A00001007057C0058FED4FFFFFFEC0000053E +054B1026149B00001007057C0058FED4FFFF009DFE0C053E05AA10261499000010071725 +023F0514FFFFFFEC0000045C05461026149A000010071725020D04B0FFFFFFEC0000053E +05461026149B000010071725020D04B0FFFF009DFE0C053E05AA10261499000010071723 +01C2041AFFFFFFEC0000045C05461026149A000010071723019003B6FFFFFFEC0000053E +05461026149B000010071723019003B6FFFF009DFE0C053E04B010261499000010271721 +023F041A1007172401E70019FFFFFFECFE3E045C044C1026149A0000102717240190FF38 +10071721020D03B6FFFFFFECFE3E053E044C1026149B000010271724019CFF3810071721 +020D03B6000100000533035F072B0003000009013501035FFCA1035F0695FE9E96016200 +000100D5FE56052705D50013004A402111110102010211101110420B950A11020300AF10 +130B100111021C0436111C001410DCECFCEC113939CC31002F3CEC323939DCEC304B5358 +071004ED071004ED5922B21F1501015D1333011133111407062B01353332373635011123 +D5B802E2B85251B5FEE9692626FD1EB805D5FB83047DFA17D660609C3031AD047DFB8300 +0001000F0000021F0460000B00324011020BA9050800BC0605020108080B00460C10FC3C +3CEC323231002FE4DC3CEC3230400B100D400D500D600D700D05015D1333113315231123 +11233533C3B8A4A4B8B4B40460FE08A4FE3C01C4A40000000002FEF2FE56022E0460000E +0017000013203534213311331133152306070603232217163332373621FED1010EC1B8B5 +BF12355220B57703047B692612FE56DDCD0460FBA09B703F6001103341301700FFFF0192 +066303E808331027007100BD023D1007171604BC01550000FFFF0192066103E808341027 +007100BD00FF1007171604BC025B0000FFFF0192065E03E808331027171E04BC01501007 +007100BD023D0000FFFF0193066303E5085A1027171704F002641007171604BC01550000 +FFFF0193066303E5085A10271719048C02641007171604BC01550000FFFF0192066103E8 +085A1027171704F002641007007100BD00FF0000FFFF0192066103E8085A10271719048C +02641007007100BD00FF0000FFFF0176066A040A08331027171804C0015C1007007100BD +023D0000FFFF018B066303ED085A1027171B04BC02621007171604BC01550000FFFF0176 +066A040A08561027171604BC027D1007171804C0015C0000FFFF018B066303ED08571027 +171B04BC01751007171E04BC027C0000FFFF0176066A0430085A10271717054002641007 +171804C0015C0000FFFF018B06630518083A1027171A04BC017510071717062802440000 +FFFF018B0663046D083A1027171905E202441007171A04BC01750000FFFF01760663040A +08751027171A04BC01751007171804C0028C0000FFFF01760656040A08591027171D04BC +01501007171804C002700000FFFF0183065603F5085A1027171D04BC01501007171704F0 +02640000FFFF0183065603F5085A1027171D04BC015010071719048C02640000FFFF0183 +065603F5088B102702BA04AB02101007171D04BC01500000FFFF018B06630507085B1027 +02BA061001E01007171A04BC01750000FFFFFC9A047BFF50066E102602B20000100702B8 +FEF8005A000100000000012C012C0003000011211121012CFED4012CFED4000000010000 +FFE3034F05D5000F00003D011E013332363511331110062322265BC2688F71CAD3F760BE +3DEC515195CB03EEFC12FEE6EA2C0000FFFFFFABFE0C051302261026176100001007057F +0206F91E0001FFABFE0C04F6022600180000013316171617163B01152322270207042135 +203736373635340278B81E030A492A65C3FA823244FBFEE4FEBE0130CBDA230A0226701E +674D2CB83EFEEA8597B8808AD03A487EFFFF0090FEC8062307C41027057F02BC01901006 +14D50000FFFFFFEC0000026007C41027057FFF530190100614D60000FFFFFFEC000002BA +07C41027057FFF530190100614D70000FFFF0082FEF006BF03461027057F00BCFD121006 +14E70000FFFFFFECFED4023804401027057FFF2BFE0C102717220063FED41006144E0000 +FFFFFFECFED4027E04401027057FFF2BFE0C102717220063FED41006144F0000FFFFFFAB +FE0C047E04721027057F00BCFE3E100614A50000000100C1000002390614000B0039B506 +020800460C10FCECC44BB00E534BB010515A58B90006FFC038593100B400970687072FEC +E430400D100D400D500D600D700DF00D06015D13331114163B011523222635C1B84C690B +20B5A30614FB8299619CC0D6FFFF00910000045E02EE100614E10000FFFF0071FFE30525 +05F0100601E40000FFFF0071FFE30471050F100601E50000FFFF0096FE75020B047B1026 +00F300001007029DFF4A00000002004F0000027704600003000700003733132313211321 +C786B28624FEB2DA014E640398FC0404600000000002FF16FE5602770460000800160000 +05132303060736373605233733323736371321030607060135CA86D0233548324BFEDCDC +143169302F1DE9014EDE296465160412FBD0B5540F3048F46430319904ACFB8CD6606000 +FFFFFFD3FE760267047B102702B0FF1D0000100600F30000FFFF00BFFE890179047B1026 +00F30000100702D4031D0000000200F000D801C304FB0003000700001333152311331523 +F0D3D3D3D301D6FE0423FE0000010097000002F605D5000B002B40160A02950181090495 +0605021C04031C0A080B1C090A0C10D432EC3210FC32EC3231002FEC32F4EC3230132115 +23113315213533112397025ECACBFDA2C9CA05D5AAFB7FAAAA048100000101AD02950509 +033F00030000011521350509FCA4033FAAAA0000FFFF00C804CB033808F2102705730000 +0258100605790000FFFF00C804CB033809551027057400000258100605790000FFFF00C8 +04BA033808E810270579000001F4100605730000FFFF00C804CB03380802102705760000 +0258100605790000FFFF00C804CB033809551027057700000258100605790000FFFF00C8 +04BA03380820102705790000012C100605760000FFFF00DC04BF0324079E102705760000 +01F41006057C0000FFFF00DC04BF032408F110270577000001F41006057C0000000100C1 +0000024E05D50005001A400D045402AF00040704030801040610FCFCFCC431002FECEC30 +331133113315C1B8D505D5FABE9300000001FFEC0000024E05D50007001E400F01045407 +AF0201090400080604040810C4FCFCFCC431002FECEC323025331521353311330179D5FD +9ED5B893939305420001FFEC0000017905D50005001A400D025404AF0007040008040402 +0610C4FCFCEC31002FECEC302901353311330179FE73D5B89305420000020071FFE304A6 +0393000700150038400D151745051C081311011C0D451610F4ECD4B610113011A011035D +3939ECFCC43100400B07A00F0803A00A8C13A0082FECF4EC10D4EC300010162036102620 +0106232200100020001514073315010DB90106B9B9FEFA012A4E59C3FEEB011501860115 +68ED023EFEFAB9B90106B9FD091D011501860115FEEBC3A97F9300000002FFECFFE304A6 +03930007001900414011181B45051C0E0B08170415011C10450D1A10C4F4ECD4B6101530 +15A015035D1739ECFCC43100400D07A0130C03A00A8C0E17A0190C2F3CEC32F4EC10D4EC +300010162036102620010622272135332635340020001514073315010DB90106B9B9FEFA +012A4EB24EFE4AED6801150186011568ED023EFEFAB9B90106B9FD091D1D937FA9C30115 +FEEBC3A97F9300000002FFECFFE304210393000700150038400D1745051C13080F011C0A +45151610C4F4ECD4B6100F300FA00F035D3939ECEC3100400B07A00D1303A0118C08A013 +2FECF4EC10D4EC3000101620361026200326353400200010002322272135010DB90106B9 +B9FEFAED68011501860115FEEBC3594EFE4A023EFEFAB9B90106B9FD9C7FA9C30115FEEB +FE7AFEEB1D9300000001003D0000037805D9000A0034400D0508020A0C0706081C030402 +0B10DCC432FCC432DCC41112393100400C0502080303010603810A87012FECEC32111217 +393029011101331B01330111210378FDDEFEE7C2B3B3C2FEE7016A032A02AFFE5D01A3FD +51FD69000001FFEC0000037805D9000C0036400E080B05000E0A090B1C060705030D10C4 +DCC432FCC432DCC41112393100400C08050B03010906810C0387012FEC32EC3211173930 +25152135211101331B013301110378FC74016AFEE7C2B3B3C2FEE7939393029702AFFE5D +01A3FD51FD6900000001FFEC0000032705D9000A0034400D0609030C0807091C04050301 +0B10C4DCC432FCC432CC1112393100400C06030903040A07048101870A2FECEC32111217 +39302335211101331B0133011114016AFEE7C2B3B3C2FEE793029702AFFE5D01A3FD51FC +D60000000001003D000004D003710008000029010901230133013304D0FEECFEA2FEA2C3 +01A4FA016D8802BDFD430371FD2200000001FFEC000004D00371000A0000290135330133 +01331521010100FEEC88016DFA016D88FEECFEA29302DEFD229302BD0001FFEC0000047F +0371000800002901353301330123010100FEEC88016DFA01A4C3FEA29302DEFC8F02BD00 +000100BA0000054F037100090024400B090B04071C05041C02040A10FCECD4FCFCC43100 +B60603A3080587012FEC32F43C3029011133112111331133054FFB6BB90255B9CE0371FD +2202DEFD220000000001FFEC0000054F0371000B0028400C0B0D040A1C08061C0404020C +10C4FCECD4FCFCC43100B70805A303060A87012FEC3232F43C3029013533113311211133 +1133054FFA9DCEB90255B9CE9302DEFD2202DEFD220000000001FFEC0000048103710009 +0024400B0B04001C08061C0404020A10C4FCECD4FCEC3100B60805A3030687002FEC32F4 +3C30290135331133112111330481FB6BCEB90255B99302DEFD2202DE000100BA0000054F +037100090024400A080B04061C020104040A10FC3CD4FCFCC43100B704A006A30702A000 +2FEC32F4EC3033352111213521113315BA030EFCF203C7CE93024B93FD2293000001FFEC +0000054F037100090024400A080B04061C020404010A10C4FCD4FCFCC43100B704A006A3 +0702A0002FEC32F4EC30233521112135211133151403DCFCF203C7CE93024B93FD229300 +0001FFEC0000048103710007002040090904001C040604030810C4FCD4FCEC3100B606A0 +00A304A0022FECF4EC3001112135211121350481FB6B03DCFCF20371FC8F93024B930000 +00020071000004D405E20013001F003A400E1221451B1C0C101C01151C06452010FCECDC +B24001015DFCDCB2400C015DECFCC43100400B189501101E95099111A0002FECF4ECD43C +EC30211126272E01343E01201E01140607060711211500141E01323E01342E0122060204 +524A728585E4010CE68383734B520218FC395B9CB89D5A5A9DB89C030E0B2031A8C5A962 +62A9C5A831200BFD859304AD7060383860706038380000000002FFEC000004D405E20015 +0021003E400F0123451D1C11151C06171C0B45042210C4FCECDCB24006015DFCDCB24011 +015DECFCC43100400C1A95061520950E910005A0022FEC32F4ECD43CEC30252115213521 +1126272E01343E01201E01140607060700141E01323E01342E01220602BC0218FB180218 +524A728585E4010CE68383734B52FE515B9CB89D5A5A9DB89C939393027B0B2031A8C5A9 +6262A9C5A831200B019F706038386070603838000002FFEC0000044F05E20013001F003A +400E21451B1C0E121C03151C0845012010C4FCECDCB24006015DFCDCB24011015DECEC31 +00400B189503121E950B9102A0132FECF4ECD43CEC302335211126272E01343E01201E01 +14060706071100141E01323E01342E012206140218524A728585E4010CE68383734B52FE +515B9CB89D5A5A9DB89C93027B0B2031A8C5A96262A9C5A831200BFCF204AD7060383860 +70603838000200BA0000054F04A60008000C0026400A020600050B040D0C0E0D10D4C410 +FCDCCCCC323100B6020305070BA0092FECDCDCDCCC300110331522073315230121352102 +11F2840285F1033EFB6B0495039C010A669A9EFCF89300000002FFEC0000054F04A60008 +000C0022B7030600050C0E0B0D10C4D4C4DCCCCC323100B6020305070BA0092FECDCDCDC +CC30011033152207331523012135210211F2840285F1033EFA9D0563039C010A669A9EFC +F89300000002FFEC0000048104A60008000C00244009020600050C040E0B0D10C4DCFCDC +CCCC323100B6020305070BA0092FECDCDCDCCC30011033152207331523012135210211F2 +840285F10270FB6B0495039C010A669A9EFCF89300020071000006B505EE0013001D0037 +400F121F110801041408020E1B0809451E10FCECD43CEC32D4FCDCC43100400D030501A0 +1D0F18A00A9111A0002FECF4ECD43CEC32CC3021112111231123222610362017161D0121 +11331501353427262206141633052EFE439CF8BCB0B101665E8B0276CEFC205D38C66D72 +5E02DEFEC4013CD60155E56698B6C9FD22930371C9835D3898C683000002FFEC000006B5 +05EE0015001F003B40101221110801041608020E1D080945152010C4FCECD43CEC32D4FC +DCC43100400E030501A01F0F1AA00A910011A0132FEC32F4ECD43CEC32CC302511211123 +1123222610362017161D0121113315213501353427262206141633052EFE439CF8BCB0B1 +01665E8B0276CEF93702E95D38C66D725E93024BFEC4013CD60155E56698B6C9FD229393 +02DEC9835D3898C6830000000002FFEC000005E705EE0013001D0037400F1F1108010414 +08020E1B080945131E10C4FCECD43CEC32D4FCCC3100400D030501A01D0F18A00A9100A0 +112FECF4ECD43CEC32CC3025112111231123222610362017161D01211121350135342726 +2206141633052EFE439CF8BCB0B101665E8B0276FA0502E95D38C66D725E93024BFEC401 +3CD60155E56698B6C9FC8F9302DEC9835D3898C683000000000100C10000039505D5000B +002C400B0A0D07031305091C01040C10FCFC3CFC3CDCC43100400B05A0070004A002AF0A +A0002FECF4EC10DCEC30331121152111211521112115C10283FE3501CBFE35021C05D593 +FE2F92FDB49300000001FFEC0000039505D5000D0030400C0C0F090513070B1C0304010E +10C4FCFC3CFC3CDCC43100400C07A0090006A004AF020CA0002FEC32F4EC10DCEC302335 +33112115211121152111211514D50283FE3501CBFE35021C93054293FE2F92FDB4930000 +0001FFEC0000034405D5000B002C400B0D060913070B1C0404020C10C4FCFC3CFC3CCC31 +00400B08A00A0007A005AF02A0002FECF4EC10DCEC302901353311211521112115210179 +FE73D50283FE3501CBFE3593054293FE2F9200000001003D0000039505D5000B002C400B +0A0D04081200041302060C10DC3CFC3CFCFCC43100400B04A0020005A007AF0AA0002FEC +F4EC10DCEC302111213521112135211133150208FE3501CBFE350283D502DF9201D193FA +BE9300000001FFEC0000039505D5000D0030400C0C0F040A120602130408010E10C4DC3C +FC3CFCFCC43100400C05A0030008A00AAF0C02A0002FEC32F4EC10DCEC30233521112135 +211121352111331514021CFE3501CBFE350283D593024C9201D193FABE9300000001FFEC +000002C005D5000B002C400B0D040B120307130509020C10C4DC3CFC3CFCEC3100400B07 +A0050008A00AAF02A0002FECF4EC10DCEC3029013521112135211121352102C0FD2C021C +FE3501CBFE35028393024C9201D19300000200BA0000048C05D5000A0017002A400C1619 +1B071C130E021C0C041810FCFC3CD4ECFCC43100400901A00F0D810316A00B10EC32ECD4 +EC30012111213237363534272601113311213217161514073315029CFED0012C52342C2C +3DFDD9B90155697F584FD302DEFDB55D4F7A7D495FFD2205D5FD9C875FD2A48293000000 +0002FFEC0000048C05D5000E0019002E400D0D1B1B161C0A05111C0304011A10C4FCFC3C +D4ECFCC43100400A10A006048102120DA0002FEC3232ECD4EC3023353311331121321716 +1514073315012111213237363534272614CEB90155697F584FD3FE10FED0012C52342C2C +3D930542FD9C875FD2A4829302DEFDB55D4F7A7D495F00000002FFEC0000040805D5000A +0019002A400C1B1B071C1510021C0E040C1A10C4FCFC3CD4ECEC3100400901A0110F810D +03A00B2FEC32ECD4EC300121112132373635342726013533113311213217161514070623 +029CFED0012C52342C2C3DFD0BCEB90155697F5858586C02DEFDB55D4F7A7D495FFD2293 +0542FD9C875FD2AD87850000000100C1000004F905D500130040400B12150409111C0500 +06041410F4DCB25F00015D39FCD4FCC400400B0B0500060AA0078111A0002FECF4EC3911 +393940070B120A12050605071005ECEC3130213402272627033521150513161716171617 +211502AA1B354D89C30363FD999D883442060201019899015F96DCDC0139569301FEEFEA +B8E69C40399300000001FFEC000004F905D500160044400C1518040C141C080209040117 +10C4F4DCB25F02015D39FCD4FCC400400C0E0800090DA00A811402A0002FEC32F4EC3911 +393940070E120D12080908071005ECEC3130233521262726272627033521150513161716 +17161721151402BB03080D354D89C30363FD999D883442060201019893585DB096DCDC01 +39569301FEEFEAB8E69C4039930000000001FFEC0000042405D500130040400B15040C13 +1C08020904011410C4F4DCB25F02015D39FCD4EC00400B0E0800090DA00A8102A0002FEC +F4EC3911393940070E120D12080908071005ECEC31302335212627262726270335211505 +1316171612071402BB03080D354D89C30363FD999D8834420B0193585DB096DCDC013956 +9301FEEFEAB8E6FEC97100000001003D000002E105D50008003A4009070A0403051C0103 +0910D4DCFC1139DCC43100400D0212011203040303048106A0082FECF4CCB21F03015D07 +1004ECECB48D028D01025D302111013501331133150154FEE90115BAD504DFFEC7F60139 +FABE93000001FFEC000002E105D5000A003E400A090C0605071C0305010B10C4D4DCFC11 +39DCC43100400E041203120506050506810802A00A2FEC32F4CCB21F05015D071004ECEC +B48D048D03025D302335211101350133113315140168FEE90115BAD593044CFEC7F60139 +FABE93000001FFEC0000020C05D50008003A40090A0605071C0305010910C4D4DCFC1139 +CC3100400D0412031205060505068102A0082FECF4CCB21F05015D071004ECECB48D048D +03025D30233521110135013311140168FEE90115BA93044CFEC7F60139FA2B00000300C1 +000007C0041A0011001A00230031400E10251C0E1C12181C1B211C01042410FCECD4ECD4 +FCFCC43100400B15A00A1EA004101A23A0002FEC3232D4ECD4EC3033113412333216173E +0133321716151133150134262322061511210134262322061D0121C1F4C67D78352596D3 +D25E88D5FE71A45A817F01FEFD48A45A6C9401FE01EEA600FF4B2D2DD2588068FDB99302 +7C8280C595FE6E0163837FA7D2F200000003FFEC000007C0041A0013001C00250035400F +122704101C141A1C1D231C0304012610C4FCECD4ECD4FCFCC43100400C17A00C20A00611 +1B2402A0132FEC323232D4ECD4EC30233533113412333216173E01333217161511331501 +34262322061511210134262322061D012114D5F4C67D78352596D3D25E88D5FE71A45A81 +7F01FEFD48A45A6C9401FE93015BA600FF4B2D2DD2588068FDB993027C8280C595FE6E01 +63837FA7D2F200000003FFEC000006EB041A0011001A00230031400E2504101C12181C1B +211C0304012410C4FCECD4ECD4FCEC3100400B15A00C1EA006022219A0112FEC3232D4EC +D4EC30233533113412333216173E01333217161511033426232206151121013426232206 +1D012114D5F4C67D78352596D3D25E88BAA45A817F01FEFD48A45A6C9401FE93015BA600 +FF4B2D2DD2588068FD26027C8280C595FE6E0163837FA7D2F20000000001003D000003DC +05D5000D002D400C0C0F091F0B071C05011F030E10DCFC3CFC3CFCDCC43100400A0901A0 +030706810CA0002FECFCDC3CFC3C3021112135211133112115211121150188FEB5014BB8 +014BFEB5019C03819301C1FE3F93FD12930000000001FFEC000003DC05D5000F0031400D +0E110B1F0D091C07031F05011010C4DCFC3CFC3CFCCCC43100400B0B03A005090881020E +A0002FEC32F4DC3CFC3C302335211121352111331121152111211514019CFEB5014BB801 +4BFEB5019C9302EE9301C1FE3F93FD12930000000001FFEC0000038B05D5000D002D400C +0F0C1F000A1C08041F06020E10C4DCFC3CFC3CFCCC3100400A0C04A0060A088102A0002F +ECF4DC3CFC3C3029013521112135211133112115210240FDAC019CFEB5014BB8014BFEB5 +9302EE9301C1FE3F930000000002003D0000065805D500030015003E40111417101F0E12 +1C000C0A021C04081F061610DCFC3CFC3CDC3CFC3CFCDCC43100400E050111A0070B0F09 +0D810313A0042FEC32F43CDC3C3CEC323230251121110711213521113311211133112115 +211121150404FE3DB9FEB5014BB901C3B8014CFEB4019C9302EEFD129303819301C1FE3F +01C1FE3F93FD12930002FFEC0000065805D5001300170042401212190E1F0C101C140A08 +161C02061F04001810C4DCFC3CFC3CDC3CFC3CFCDCC43100400F0F1503A005090D070B81 +111701A0132FEC3232F43CDC3C3CEC323230233521112135211133112111331121152111 +21152511211114019CFEB5014BB901C3B8014CFEB4019CFDACFE3D9302EE9301C1FE3F01 +C1FE3F93FD12939302EEFD120002FFEC0000060805D500110015003E4011170F1F0D1112 +120B09141C03071F05011610C4DCFC3CFC3CDC3CFC3CFCCC3100400E101304A0060A0E0C +08811502A0002FEC32F43CDC3C3CFC3C3C30290135211121352111331121113311211521 +0311211104BCFB30019CFEB5014BB901C3B8014CFEB4B8FE3D9302EE9301C1FE3F01C1FE +3F93FD1202EEFD12000200BA0000054F0371000500090025400B040B04021C08071C0104 +0A10FCECD4FCFCC43100B706A002A30308A0002FEC32F4EC3033112111331501112111BA +03C7CEFC2402550371FD229302DEFDB5024B00000002FFEC0000054F03710007000B002A +400C060D04041C0A091C0304010C10C4FCECD4FCFCC43100400908A004A3020905A0002F +EC3232F4EC3023353311211133150111211114CE03C7CEFC2402559302DEFD229302DEFD +B5024B000002FFEC000004810371000500090025400B0B04051C08071C0404020A10C4FC +ECD4FCEC3100B709A004A30307A0002FEC32F4EC30290135331121051121110481FB6BCE +03C7FCF202559302DE93FDB5024B00000002003D0000051405D5000200080043B4070A05 +040910D4C4C4C43100400A4201950481029507A0032FECECF4EC304B5358401202110601 +0200110505060211030111040403050710EC10EC0710EC0810EC59012101070121012115 +03C6FD74014673FE300486FE6801E90542FB7EC005D5FABE930000000002FFEC00000514 +05D50002000A0046B5090C0706040B10C4D4C4C43100400B420195068102950409A0032F +EC32ECF4EC304B53584012021108010200110707080211050111060605050710EC10EC07 +10EC0810EC59012101053521012101211503C6FD740146FD6C01E9FE680486FE6801E905 +42FB7EC0930542FABE9300000002FFEC000004C305D5000200080043B40A0706040910C4 +D4C4C43100400A4201950681029504A0032FECECF4EC304B535840120211080102001107 +07080211050111060605050710EC10EC0710EC0810EC5901210105352101210103C6FD74 +0146FD6C01E9FE680486FE300542FB7EC0930542FA2B0000000300C1000005F305D5000A +000E001F003840101E2104051C171D001C120E0C1C10042010FCECD43CFC3CD4ECFCC431 +00400D1C0BA001110AA013810D1EA00F2FEC32F4ECDC3CEC32300133323736353427262B +01011121110111211121321716150607062F01112115036DA85D251F1F1D69A4FE0D013B +FE0C01F401B084404501445C8CD40286037151453D3C645EFD9CFDB5024BFD2203710264 +85907C915B7C0101FDB593000003FFEC000005F305D5000A000E0021003C401120230405 +1C191F001C140E0C1C1204102210C4FCECD43CFC3CD4ECFCC43100400E1E0BA001130AA0 +1581110D20A00F2FEC3232F4ECDC3CEC32300133323736353427262B0101112111013533 +11211121321716150607062F01112115036DA85D251F1F1D69A4FE0D013BFD37D501F401 +B084404501445C8CD40286037151453D3C645EFD9CFDB5024BFD229302DE026485907C91 +5B7C0101FDB593000003FFEC0000056E05D5000A000E001F003840102104051C1A0F001C +150E0C1C1304112010C4FCECD43CFC3CD4ECEC3100400D1F0BA001140AA01681120DA010 +2FEC32F4ECDC3CEC32300133323736353427262B01011121111321353311211121321716 +150607062F01036DA85D251F1F1D69A4FE0D013BB8FC7FD501F401B084404501445C8CD4 +037151453D3C645EFD9CFDB5024BFD229302DE026485907C915B7C0101000000000100C1 +0000045105D5000D002E400D0C0F040B1C090107031C05040E10FCFC3CDC3CFCFCC43100 +400A0402A006080A810CA0002FECF4DCCCFCCC30211121112311331121113311331502C5 +FEB5B9B9014BB8D40381FEFC029BFEFC01C1FABE930000000001FFEC0000045105D5000F +0032400E0E11040D1C0B0309051C0704011010C4FCFC3CDC3CFCFCC43100400B0604A008 +0A0C81020EA0002FEC32F4DCCCFCCC30233521112111231133112111331133151402D9FE +B5B9B9014BB8D49302EEFEFC029BFEFC01C1FABE930000000001FFEC0000037D05D5000D +002E400D0F040C1C0B0309051C0704010E10C4FCFC3CDC3CFCEC3100400A0604A0080A0C +8102A0002FECF4DCCCFCCC3023352111211123113311211133111402D9FEB5B9B9014BB8 +9302EEFEFC029BFEFC01C1FA2B00000000020070000005DF05D5000A001D0033400E1C1F +04181F161A1C0B0107111B1E10FCCCD43CFC3CFCFCC43100400C190CA0001702A015811B +A01D2FECF4ECD43CEC323001211121220706151417160111212227263534373633211121 +152111211501DC0130FED452342C2C3D016EFEAB6B7D5858586C0232014CFEB4022102F7 +024B5D4F7A7D495FFD090264875FD2AD8785FD2293FE2F930002FFEC000005DF05D5000A +001F0037400F1E21041A1F181C1C0D0107131B0C2010C4FCCCD43CFC3CFCFCC43100400D +1B0EA0001902A017811D0DA01F2FEC32F4ECD43CEC323001211121220706151417160135 +2111212227263534373633211121152111211501DC0130FED452342C2C3DFE550319FEAB +6B7D5858586C0232014CFEB4022102F7024B5D4F7A7D495FFD099301D1875FD2AD8785FD +2293FE2F930000000002FFEC0000050A05D5000A001D0033400E1F041A1F181C1C0D0107 +131B0C1E10C4FCCCD43CFC3CFCEC3100400C1B0EA0001902A017810DA01D2FECF4ECD43C +EC323001211121220706151417160135211121222726353437363321112115211101DC01 +30FED452342C2C3DFE550319FEAB6B7D5858586C0232014CFEB402F7024B5D4F7A7D495F +FD099301D1875FD2AD8785FD2293FD9C0001003D000003DC05D500090024400A080B041F +061C001F020A10DCFCFCFCDCC43100B70106A0038107A0092FECF4EC3230211121352115 +211121150188FEB5034EFEB5019C05429393FB51930000000001FFEC000003DC05D5000B +0029400B0A0D061F081C021F04010C10C4DCFCFCFCDCC4310040090803A006810209A000 +2FEC32F4EC323023352111213521152111211514019CFEB5034EFEB5019C9304AF9393FB +519300000001FFEC0000038B05D500090024400A0B071F091C031F05020A10C4DCFCFCFC +CC3100B70904A0068103A0002FECF4EC3230290135211121352115210240FDAC019CFEB5 +034EFEB59304AF93930000000002003D0000051405D5000200080040B3080A030910D4C4 +C43100400942019505810602A0032FEC32F4EC304B535840120111050201001106060501 +11040211030304050710EC10EC0710EC0810EC5925090107013301331503C6FEBAFEBAFD +01D0E6019889930482FB7E9305D5FABE930000000002FFEC0000051405D50002000A0042 +B3090C040B10C4C4C43100400A4201950681080402A0032FEC3232F4EC304B5358401201 +1107020100110808070111060211050506050710EC10EC0710EC0810EC59250901053533 +013301331503C6FEBAFEBAFEB2890198E6019889930482FB7E93930542FABE930002FFEC +000004C305D5000200080040B30A08040910C4C4C43100400942019506810402A0032FEC +32F4EC304B53584012011107020100110808070111060211050506050710EC10EC0710EC +0810EC5925090105353301330103C6FEBAFEBAFEB2890198E601D0930482FB7E93930542 +FA2B000000020071000004D405D5001C00280000211126272E0134373637363735213521 +1116171E01140607060715211500141E01323E01342E0122060204524A728543456F4A52 +FEB502035845728484724A530218FC395B9CB89D5A5A9DB89C01860B1F31A6C653562F1F +0BF393FE7B0D1E32A6C6A631200BF2930322705F38385F70603838000002FFEC000004D4 +05D5001E002A00002335213526272E01343736373637352135211116171E011406070607 +15211500141E01323E01342E012206140218524A728543456F4A52FEB502035845728484 +724A530218FC395B9CB89D5A5A9DB89C93F30B1F31A6C653562F1F0BF393FE7B0D1E32A6 +C6A631200BF2930322705F38385F7060383800000002FFEC0000044F05D5001C00280000 +2335213526272E01343736373637352135211116171E0114060706071100141E01323E01 +342E012206140218524A728543456F4A52FEB502035845728484724A53FE515B9CB89D5A +5A9DB89C93F30B1F31A6C653562F1F0BF393FE7B0D1E32A6C6A631200BFE7B0322705F38 +385F706038380000000100C10000045105D500090025400B080B04011C07031C05040A10 +FCECD4ECFCC43100B70402A0058107A0002FECF4FCCC302111211123112111331502C5FE +B5B902BCD40542FEC501CEFABE9300000001FFEC0000045105D5000B002A400C0A0D0402 +1C08041C0604010C10C4FCECD4ECFCC4310040090504A008810209A0002FEC32F4FCCC30 +2335211121112311211133151402D9FEB5B902BCD49304AFFEC501CEFABE93000001FFEC +0000037D05D500090025400B0B04031C09051C0704010A10C4FCECD4ECEC3100B70604A0 +088102A0002FECF4FCCC30233521112111231121111402D9FEB5B902BC9304AFFEC501CE +FA2B0000000100C10000045104E6000B0028400C0B0D04091C0107031C05040C10FCFC3C +DCFCFCC43100B70608A004020AA0002FECD4CCFCCC3021112111231133112111331502C5 +FEB5B9B90203D4034FFEFC029BFEFCFCB19300000001FFEC0000045104E6000D002D400D +0D0F040B1C0309051C0704010E10C4FCFC3CDCFCFCC431004009080AA00604020CA0002F +EC32D4CCFCCC3023352111211123113311211133151402D9FEB5B9B90203D49302BCFEFC +029BFEFCFCB193000001FFEC0000037D04E6000B0028400C0D040B1C0309051C0704010C +10C4FCFC3CDCFCEC3100B7080AA0060402A0002FECD4CCFCCC3023352111211123113311 +21111402D9FEB5B9B902039302BCFEFC029BFEFCFC1E0000000200C10000044205D50003 +000D002F400D0D0F040B1C0703011C0509040E10FC3CECDC3CFCFCC43100400B00A00608 +A00A81020CA0042FEC32F4ECD4EC300111211101112111213521113315017A013BFE0C01 +F4FE0C02ACD502DEFDB5024BFD22037101D193FABE9300000002FFEC0000044205D50003 +000F0033400E0F11040D1C0903011C070B04051010C4FC3CECDC3CFCFCC43100400C00A0 +080AA00C8106020EA0042FEC3232F4ECD4EC300111211101353311211121352111331501 +7A013BFD37D501F4FE0C02ACD502DEFDB5024BFD229302DE01D193FABE9300000002FFEC +0000036D05D50003000D002F400D0F040D1C0903011C070B04050E10C4FC3CECDC3CFCEC +3100400B00A0080AA00C810602A0042FEC32F4ECD4EC3001112111013533112111213521 +11017A013BFD37D501F4FE0C02AC02DEFDB5024BFD229302DE01D193FA2B000000020071 +000004D405D5000B002600424010252845071C1F1A231C170D011C12452710FCECDCB240 +0D015D3CFC3CDCB2401F015DECFCC43100400D0495230D0A951A17198124A00C2FECECD4 +3CECD43CEC3000141E01323E01342E012206131126272E0134373637363711331116171E +011406070607152115010D5B9CB89D5A5A9DB89C9C524A728543456F4A52B85845728484 +724A5302180322705F38385F70603838FC7E01860B1F31A6C653562F1F0B0186FE7B0D1E +32A6C6A631200BF2930000000002FFEC000004D405D5000B0028004640110C2A45071C23 +1E271C1B11011C16450F2910C4FCECDCB24011015D3CFC3CDCB24023015DECFCC4310040 +0E049527110A951E1B1D812810A00E2FEC32ECD43CECD43CEC3000141E01323E01342E01 +220601152135213526272E0134373637363711331116171E01140607060715010D5B9CB8 +9D5A5A9DB89C036CFB180218524A728543456F4A52B85845728484724A530322705F3838 +5F70603838FD119393F30B1F31A6C653562F1F0B0186FE7B0D1E32A6C6A631200BF20000 +0002FFEC0000044F05D5000B0026004240102845071C1F1A231C170D011C1245262710C4 +FCECDCB2400D015D3CFC3CDCB2401F015DECEC3100400D0495230D0A951A1719810CA025 +2FECECD43CECD43CEC3000141E01323E01342E012206133526272E013437363736371133 +1116171E011406070607112135010D5B9CB89D5A5A9DB89C9C524A728543456F4A52B858 +45728484724A53FD300322705F38385F70603838FD11F30B1F31A6C653562F1F0B0186FE +7B0D1E32A6C6A631200BFE7B9300000000020071000004D405D5001E002A000021112627 +2E013437363736373521352115211516171E01140607060715211500141E01323E01342E +0122060204524A728543456F4A52FEB5034EFEB55845728484724A530218FC395B9CB89D +5A5A9DB89C01860B1F31A6C653562F1F0BF39393F20D1E32A6C6A631200BF2930322705F +38385F70603838000002FFEC000004D405D50020002C000025152135213526272E013437 +363736373521352115211516171E0114060706071500141E01323E01342E01220604D4FB +180218524A728543456F4A52FEB5034EFEB55845728484724A53FE515B9CB89D5A5A9DB8 +9C939393F30B1F31A6C653562F1F0BF39393F20D1E32A6C6A631200BF2028F705F38385F +706038380002FFEC0000044F05D5001E002A0000290135213526272E0134373637363735 +21352115211516171E01140607060700141E01323E01342E01220602BCFD300218524A72 +8543456F4A52FEB5034EFEB55845728484724A53FE515B9CB89D5A5A9DB89C93F30B1F31 +A6C653562F1F0BF39393F20D1E32A6C6A631200B019D705F38385F7060383800FFFFFCEC +03FBFF1006201007029CFBFEFF1A0000FFFF00AA0286068205D512270F61000002861027 +0F61000003CA10070F610000050D0000FFFF00AA0286068305D512270F61000002861027 +0F61000103C910070F620000050D0000FFFF00AA0286068205D512270F61000002861027 +0F62000003C910070F610000050D0000FFFF00AA0286068205D512270F61000002861027 +0F62000003C910070F620000050D0000FFFF00AA0286068205D512270F62000002861027 +0F61000003C910070F610000050D0000FFFF00AA0286068205D512270F62000002861027 +0F61000003C910070F620000050D0000FFFF00AA0286068205D512270F62000002861027 +0F62000003C910070F610000050D0000FFFF00AA0286068205D512270F62000002861027 +0F62000003C910070F620000050D0000000101970518051B05E0000B003A400D02010003 +060504070A09080B0C10D440093F0B6F0B8F0B900B045DDC3939D4DC3939D4CC39393100 +B6050407010A0B0C10D4CC32DC3CCC30010723272307232723072327051B643232AF3232 +32AF32326405E0C864646464C8000000000100C9FE5605FC05D5000E0000212311012111 +3311012111331501230533C4FD6AFEF0C402960110C9FE928604E1FB1F05D5FB1F04E1FA +D5AAFE56000100C1FE5605380460000E00002123110123113311013311331501230480B7 +FDE4ECB7021BEDB8FEDE7B0383FC7D0460FC7F0381FC3999FE560000000200AEFE560458 +047B001F0020000025350E0123222635113311141633323635113311100221222627351E +013332360103A043B175C1C8B87C7C95ADB8FEFEFA61AC51519E52B5B4FEDD6A426663F0 +E702A6FD619F9FBEA4027BFC2BFEE2FEE91D1EB32C2ABD04D0000000FFFF007DFE900447 +0352102717320119FE90100614A10000FFFF007DFEA2044703521027172101A9FEA21006 +14A10000FFFF007DFEA2044705F71027054BFFC2FF061027172101A9FEA2100614A10000 +FFFF007DFFDA044705781027172400FA04E2100614A10000FFFF007DFFDA044705AA1027 +172600FA0514100614A10000FFFFFFABFE0C047E0226102717320258FE0C100614A50000 +FFFFFFABFE0C047E0226102717210334FE48100614A50000FFFFFFABFE0C047E02261027 +172100B40028102717210334FE48100614A50000FFFFFFABFE0C047E03B61027172201F4 +0320100614A50000FFFFFFABFE0C047E04B01027172601F4041A100614A50000FFFF0082 +FE0C0A4703B6102614A9000010271721055F03201007172105F5FEA2FFFFFFECFEA2060A +03E8102614AA0000102717210307035210071721039DFEA2FFFFFFECFEA2073703E81026 +14AB0000102717210307035210071721039DFEA2FFFF0082FE0C0A4702EE102614A90000 +100717240578FF06FFFFFFECFE0C060A02EE102614AA0000100717240320FF06FFFFFFEC +FE0C073702EE102614AB0000100717240320FF06FFFF0082FE0C0A4704B0102614A90000 +1027172304E20320100717240578FF06FFFFFFECFE0C060A04B0102614AA000010271723 +028A0320100717240320FF06FFFFFFECFE0C073704B0102614AB000010271723028A0320 +100717240320FF06FFFF0082FE0C09E102E5102614B10000100717220578FEA2FFFFFFEC +FEA2063202E5102614B20000100717220258FEA2FFFFFFECFEA2070402E5102614B30000 +100717220258FEA2FFFF0082FE0C09E104B0102614B1000010071723047E0320FFFFFFEC +0000063204B0102614B200001007172301900320FFFFFFEC0000070404B0102614B30000 +1007172301900320FFFF0090000007AC0614102614B900001007172303840352FFFFFFEC +000005D40614102614BA000010071723027C0352FFFFFFEC000006A40614102614BB0000 +10071723027C0352FFFF0075FE0C04B20546102614C1000010071723012C03B6FFFFFFEC +000003F80640102614C2000010071723012C04B0FFFFFFEC000003F00546102614C30000 +10071723012C03B6FFFF0082FEA2085C03111026172A000010071721036BFEA2FFFFFFEC +FED4033F03D91026172B00001007172101A8FED4FFFFFFECFED4042003081026172C0000 +1007172101A8FED4FFFF0082FEA2085C044C1026172A00001027172105F503B610071721 +036BFEA2FFFFFFECFED4033F05141026172B00001027172101A9047E1007172101A8FED4 +FFFFFFECFED40420047E1026172C00001027172101BB03E81007172101A8FED4FFFF0082 +FDA8085C03111026172A00001007172402EEFEA2FFFFFFECFDDA033F03D91026172B0000 +10071724012CFED4FFFFFFECFDDA042003081026172C000010071724012CFED4FFFF006B +FE0C06C004011026172D0000100717210401036BFFFFFFEC0000033F05141026172E0000 +1007172101A9047EFFFFFFEC00000420047E1026172F00001007172101BB03E8FFFF006B +FE0C06C004FB1026172D0000100717230384036BFFFFFFEC0000033F060E1026172E0000 +10071723012C047EFFFFFFEC0000042005781026172F000010071723013E03E800010082 +FFA70882061400370000253224363D01342725243D013437363701210106070617161705 +161D011417163B011523222627060423212227241134373306151417163304F6B8016B31 +79FC59FE9D0B13A002B00160FC685F0F090406AE03CAF82F0F162E5A5C390B53FE6CA1FE +0CC080FEB63FB841CB689758966C05096B129137BE07063E6360019BFDE837230A23351B +9626F8455E1105B8323039822662010B8A5C5E887E4222000001FFEC0000068406140020 +000023352132373627262725243D01343736370121010607061716170516151407062314 +0508932E13030D63FC59FE9D0B11A202B00160FC685F0F090406AE03CAF83E5FDFB8682C +1C6E0F9137BE08053E6261019BFDE837230A23351B9626F871659B000001FFEC00000706 +06140029000023352132373635342725243D013437363701210106070617161705161D01 +1417163B011523222627062314050888391070FC59FE9D0B11A202B00160FC685F0F0904 +06AE03CAF82F0F162E5A5A380B60A7B8681D187F119137BE08043F6261019BFDE837230A +23351B9626F8455F1005B82F28570000FFFF0082FFA707D9061410261425000010071732 +05460384FFFFFFEC000003CF0614102614D200001007173201F40384FFFFFFEC0000047F +0614102614D300001007173201F40384FFFF0090FFC906D20614102614D1000010071721 +02EE0546FFFFFFEC000003CF0672102614D200001007172100C805DCFFFFFFEC0000047F +0672102614D300001007172100C805DCFFFF0090FDA806D20614102614D1000010071724 +0258FEA2FFFFFFECFDDA03CF0614102614D200001007172400C8FED4FFFFFFECFDDA047F +0614102614D300001007172400C8FED4FFFF0082FFA707D9072B10261429000010071732 +05460384FFFFFFEC000003CF072B1026142A00001007173201F40384FFFFFFEC0000047F +072B1026142B00001007173201F40384FFFF0082FEA207D9072B10261429000010071722 +0258FEA2FFFFFFECFED403CF072B1026142A00001007172200C8FED4FFFFFFECFED4047F +072B1026142B00001007172200C8FED4FFFF0082FFA707D9083410261429000010071723 +038406A4FFFFFFEC000003CF08341026142A000010071723004B06A4FFFFFFEC0000047F +08341026142B000010071723004B06A4FFFF0090FEC80623079E102614D5000010071721 +046A0708FFFFFFEC000001AF079E102614D600001007172101010708FFFFFFEC000002BA +079E102614D700001007172101010708FFFF0090FEC806230834102614D5000010071723 +03E806A4FFFFFFEC0000020F0834102614D6000010071723007F06A4FFFFFFEC000002BA +0834102614D7000010071723007F06A4FFFF0090FCE006230614102614D5000010071724 +0226FDDAFFFFFFECFE0C01F30614102614D60000100717240063FF06FFFFFFECFE0C02BA +0614102614D70000100717240081FF06FFFF0093FCC7062B02BC10261435000010271721 +023F02261007172102BCFCC7FFFFFFECFED4018703E81027172100E00352102617280000 +1007172100E0FED4FFFFFFECFED4027E03E81027172100E0035210261729000010071721 +00E0FED4FFFF0093FCAE062B02BC10261435000010271721023F0226100717320226FCAE +FFFFFFECFEF4020603E81027172100E00352102617280000100717320050FEF4FFFFFFEC +FEF4027E03E81027172100E00352102617290000100717320050FEF4FFFF0093FE0C062B +03B61026143500001007172301F40226FFFFFFEC000001F304E210261728000010071723 +00630352FFFFFFEC0000027E04E210261729000010071723006303520002013500000200 +05D5000300090062400F07008302810408070400030501000A10FC3CEC32393931002FF4 +FCCC30014BB00B5458BD000A00400001000A000AFFC03811373859014BB00F544BB01054 +5B4BB013545B58BD000AFFC00001000A000A00403811373859B6000B200B500B035D0123 +35331123111333130200CBCBCB15A21404D7FEFA2B028F0165FE9B000002008FFFE303AC +05D5002000240086402F201A05020406190010860F880C002183230C95138C2381250622 +1916090501001A2209001C01221C21260F091C162510DCECD4FCECD4EC11123911123911 +12391239310010E4F4EC10FECD10F4EE123939173930014BB010544BB012545B4BB01354 +5B58BD0025FFC000010025002500403811373859400B7404740574067407761C055D0133 +1514060F010E0115141633323637150E012322263534363F013E01373E01351323353301 +F4BE375A5A3A33836D4EB4605EC067B8E04959583026080706C4CACA04449C6582575835 +5E31596E4643BC3938C29F4C8956562F3519153C36010EFEFFFF008FFFE303AC05D31207 +12570000017500000001FFEC000002810258000D00002506232135213237363D01331514 +0225489DFEAC011D632C31B85656B82C316AD9D9BB000000000100DDFDD407B208230007 +00001321112111211121DD06D5FEADFBD0FEAE0823F5B1092DF6D300000100DDFDD407B2 +0823000700001311211121112111DD015204300153FDD40A4FF6D3092DF5B10000010023 +FDD407660823000B00001321112109012111213509014E06F3FAB403B6FC2B0590F8BD04 +02FC290823FEEFFC0AFBC8FEF0D3046D04150000000100A5FD990540089000160000013E +013216170726232207030E0123222627371633323702AB0CE4D6B31CD21850640C5C0BE6 +6A6BB31CD21850640C06E8ECBCB0C715B8F8F87DECBCB0C715B8F700FFFF00A5FD990848 +08901026184000001007184003080000FFFF00A5FD990B51089010271840061100001027 +184003080000100618400000000300A5FD9905400890002D0036003F0000013637363332 +171617072623220703161716151407060703060706232227262737163332371326272635 +3437363713363736273427262701130607061714171602AB0C7570686D644E1DD2185064 +0C148C5D9C9C7AA2150B7670686D644E1DD21850640C1584669C9D75A6C3563F62016434 +3FFEF51F563F66016A3406E8EC605C634DC715B8F8FE5B226AAFCFDD9C781CFE39EC605C +634DC715B8F701B022679DDBDDA27A1BFC9D1742669296643319FD760298184169929266 +33000000000400A5FD9908480890004D0051005A00630000013637363332171617072623 +220703211336373633321716170726232207031617160714070607030607062322272627 +371633323713210306070623222726273716333237132627263534373637132113210113 +0607061714171601033637362734272602AB0C7570686D644E1DD21850640C14021C150C +7570696D644E1CD11851640C148C5E9C019B7AA2160B7570696D644E1CD11851640C13FD +E4150B7670686D644E1DD21850640C1584669C9D75A6C2021C22FDE4FEF31F563F66016A +34045120563F6201643406E8EC605C634DC715B8F8FE6C01B8EC605C634DC715B8F8FE5B +226AAFCFDD9C781CFE39EC605C634DC715B8F7019DFE40EC605C634DC715B8F701AE2368 +9DDBDDA27A1BFC9002BFFD5B0298184169929266330271FD6917426692966433000500A5 +FD990B500890006D00710075007E00870000013637363332171617072623220703211336 +373633321716170726232207032113363736333217161707262322070316171615140706 +070306070623222726273716333237132103060706232227262737163332371321030607 +062322272627371633323713262726353437363701132103290113210113060706171417 +1601033637363534272602AB0C7570686D644E1DD21850640C14021C150C7570696D644E +1CD11851640C14021D150C7570686D644E1CD11851640B148C5D9C9C7AA2150B7670686D +654E1CD21850640C14FDE4160B7570696D644E1CD11851640C13FDE4150B7670686D644E +1DD21850640C1584669C9D75A605E622FDE422FCF8021C22FDE4FEF31F563F66016A3407 +591F563E62653406E8EC605C634DC715B8F8FE6C01B8EC605C634DC715B8F8FE6C01B8EC +605C634DC715B8F8FE5B226AAFCFDD9C781CFE39EC605C634DC715B8F7019DFE40EC605C +634DC715B8F7019DFE40EC605C634DC715B8F701AE23689DDBDDA27A1BFC9002BFFD4102 +BFFD5B0298184169929266330271FD691742669296643300000100A5FD9905E908900033 +00000126232207031617161D01371701230137173534272627030E012322262737163332 +3713060706152334373637133E0133321617046E1853620B177E59A88566FEF44DFEF666 +8270483E3E0BE26670B51DD21853620B3D5B427A909A7A9A180BE26670B51D0704B8F8FE +292258A7DC2A8365FEF4010C65832AA36D4810FAE9E9BFACCB15B8F704FF174278A2DB9B +7A1701F1E9BFADCA000300A5FD9905D1089000080011003E000001130607061714171601 +3427033E013727371326232207031617161737170706070607030E012322262737163332 +37132627263534373637133E0133321617026D1F563F66016A34021FD71F56730DBF6599 +1853620B147E6B9A016566EC25557AA2150BE16C6BB51DD21853620B1584669C9D75A615 +0BE16C6BB51D01D30298184169919366330145D854FD69178E1BC1650358B8F8FE5B1F6D +9DAF6565ED5F587F1CFE39E9BFACCB15B8F701B022679DDBDDA27A1B01BFE8C0ADCA0000 +000300A5FD9905D4089000080012003D0000011306070617141716012E0127033E013707 +271326232207031E011F010727140007030E012322262737163332371326272635343736 +37133E0133321617026D1F563F66016A340204314D3E1F56950A7666FC1853620B148CC5 +19E8666AFEEEA3150BE16C6BB51DD21853620B1584669C9D75A6150BE16C6BB51D01D302 +981841699193663301B75D4419FD6917B75B77660426B8F8FE5B22DE59E8666AAFFEF01B +FE39E9BFACCB15B8F701B022679DDBDDA27A1B01BFE8C0ADCA0000000001FFF8FDD40950 +082300060000090121090121010541040FFEE1FC73FC73FEE1040C0823F5B10925F6DB0A +4F0000000001FFF8FDD40950082300060000090121090121010407FBF1011F038D038D01 +1FFBF4FDD40A4FF6DC0924F5B1000000000100C6FDD40882082300100000012000190123 +111000200019012311100004A4FECBFE4BF4027502D20275F4FE4F073BFEC0FE9BF93E06 +E501C801A2FE5EFE38F91B06C201620143000000000100C6FDD408820823001000000120 +00190133111000200019013311100004A4013501B5F4FD8BFD2EFD8BF401B1FEBC014101 +6506C1F91BFE38FE5E01A301C706E5F93FFE9EFEBC00000000030052FDC30AFE08750003 +001D00370000012111210020070607060215141217161716203736373612353402272627 +002004171617161110070607060420242726272611103736373604D101AEFE5201B9FE3C +C6C2A1A4A1A1A4A1C2C601C4C6C2A1A4A2A2A4A1C2FD3F023301E3C9C964636364C9C9FE +1DFDCDFE1CC9C964636364C9C9041CFDFB05595452A1A3FE7AE7E1FE7AA2A153535352A2 +A30186E0E70186A3A1520159CBC8C9F3F0FEE3FEE9F2F0CAC7CCCCC7C9F1F30116011CF1 +F3C9C70000030052FDC30AFE087500190033003F00000020070607060215141217161716 +203736373612353402272627002004171617161110070607060420242726272611103736 +3736051121152111231121352111068AFE3CC6C2A1A4A1A1A4A1C2C601C4C6C2A1A4A2A2 +A4A1C2FD3F023301E3C9C964636364C9C9FE1DFDCDFE1CC9C964636364C9B50388039BFC +65EEFC65039B07705452A1A3FE7AE7E1FE7AA2A153535352A2A30186E0E70186A3A15201 +59CBC8C9F3F0FEE3FEE9F2F0CAC7CCCCC7C9F1F30116011CF1F3C9B56AFC65F1FC65039B +F1039B0000030052FDC30AFE087500190033003F00000020070607060215141217161716 +203736373612353402272627002004171617161110070607060420242726272611103736 +3736130901170901070901270901068AFE3CC6C2A1A4A1A1A4A1C2C601C4C6C2A1A4A2A2 +A4A1C2FD3F023301E3C9C964636364C9C9FE1DFDCDFE1CC9C964636364C9B583028D028D +AAFD73028DA8FD73FD73AA028DFD7307705452A1A3FE7AE7E1FE7AA2A153535352A2A301 +86E0E70186A3A1520159CBC8C9F3F0FEE3FEE9F2F0CAC7CCCCC7C9F1F30116011CF1F3C9 +B5FEB8FD73028DAAFD73FD73A8028DFD73AA028D028D0000FFFF00A5FD990E5908901026 +18400000102718400611000010271840091900001007184003080000000100A5FD990540 +0890001F0000051633323713213521133E0133321617072623220703211521030E012322 +262701771853620B2DFE7D018F230BE16C6BB51DD21754620B220183FE722F0BE16C6BB5 +1DDBB8F703AEF102E5E9BFADCA15B8F8FD3FF1FC2FE9BFACCB000000000100A5FD990540 +08900027000005163332371321352113213521133E013332161707262322070321152103 +211521030E012322262701771853620B1FFE8B018111FE6E019D150BE16C6BB51DD21853 +620B140175FE80110191FE63200BE16C6BB51DDBB8F7028EF00154ED01C5E9BFADCA15B8 +F8FE5FEDFEACF0FD4FE9BFACCB000000000100A5FD9905400890001F0000012623220703 +011501030E0123222627371633323713013501133E0133321617046E1853620B2501C9FE +2C2C0BE16C6BB51DD21853620B25FE3901D22C0BE16C6BB51D0704B8F8FD090101E2FEF9 +FC5CE9BFACCB15B8F702F8FEFEE3010703A4E9BFADCA0000000200A5FD9905400890002C +003500000126232207031617072627033637170607030E01232226273716333237132627 +263534373637133E0133321617011306070617141716046E1853620B14D868A039711F2D +1E584C61150BE16C6BB51DD21853620B1584669C9D75A6150BE16C6BB51DFD2D1F563F66 +016A340704B8F8FE5B3AC05C662EFD6908189E330DFE39E9BFACCB15B8F701B022679DDB +DDA27A1B01BFE8C0ADCAFABA029818416991936633000000000100A5FD9905E808900034 +00000126232207033637363D01072701330107271514070607030E012322262737163332 +3713262726353314171617133E013332171617046E1853620B3D5B427A8466010C4C010A +66829C789A180BE36A6BB51DD21853600D178158A89071483F3E0BE36A6B674C1F0704B8 +F8FB02174278A12B8466010CFEF466842BDD987A18FE10E9BFACCB15B8F701D72358A8DA +A16E48100517E9BF634ACA00000200A5FD99054008900003002100000121112103132111 +21133E01321617072623220703211121030E01222627371633320266012AFED617180213 +FE151C0BE5D6B21DD21850630D1401BBFE0F120BEFCEB01DD218506503BFFE99FD0C020C +03180260ECBCB1C615B8F8FE87FB62FE94F5B3B1C615B800000200A5FD99054008900003 +002C000001211121130607133E0132161707262322070316171610070607030E01232226 +273716333237131633323610260266012AFED68C3A2C1F0BE5D6B21DD21850640C148C5D +9C9C7AA2150BE66A6BB21DD21850630D1F394C9DBFD103BFFE99021C0307027EECBCAFC8 +15B8F8FE5B226AAFFE559D781CFE39ECBCB1C615B8F7026C17D00132B3000000000200A5 +FD9906470890000300310000012111210116333237131617163332361026232007133E01 +33321617072623220703363332001000232227030E0123222627039E012BFED5FDD91853 +620B26404F9E8D8CD4C3A0FED3762208E66A6BB51DD21853620B155360EF0124FEC8DB7B +67180BE36A6BB51D03CAFE99FCC2B8F7031D58284CCD0128CAE40358E8C0ADCA15B8F8FE +4B1BFEB7FE54FECB2FFE12E9BFACCB00000300A5FD99054008900003000C003400000121 +112104361026200615141603163332371326272610373637133E01333216170726232207 +0316171610070607030E0123222627025F012AFED6011FD1C3FED2CCCAE51853620B1584 +669C9D75A6150BE16C6BB51DD21853620B148C5D9C9C7AA2150BE16C6BB51D03CDFE99AD +CC0128CACD9392CCFD6CB8F701B022679D01B8A27A1B01BFE8C0ADCA15B8F8FE5B226AAF +FE549C781CFE39E9BFACCB00000300A5FD9905400890001E002200260000371121133E01 +321617072623220703211121030E01232226273716333237130103331121231133D701BD +170BE5D6B21DD21850640C15018CFE41140BEF6665B31DD21850640C13011622F3FE43F2 +D0DB043B01D2ECBCB1C615B8F8FE52FBC5FE66F5B3AEC915B8F701770378FD4B02B5FD4B +0001FFA3FD9906420890002F0000012623220703213216100623353637262721030E0123 +222627371633323713210107013501170121133E013332171617046E1853620B24017E8D +C5CB87880B0B88FE792F0BE16C6BB51DD21853600D2DFE63010988FE4301BD88FEF701A6 +260BE16C6B674C1F0704B8F8FD14CAFEE8C6C0068F8B08FC29E9BFACCB15B8F703B4FEF9 +8801BC6601BC88FEF90310E9BF634ACA000100A5FD990540089000250000012623220703 +371709010727030E0123222627371633323713072709013717133E0133321617046E1853 +620B1CDEA9FE9C0164A9FB230BE16C6BB51DD21853620B21E1AD0167FE9CAAFC200BE16C +6BB51D0704B8F8FDA9DEABFE9BFE9CAAF9FD1BE9BFACCB15B8F702AAE2AB01640165A9FD +029CE9BFADCA0000000100A5FD9905400890002C00000516333237130607061511231110 +1237133E0133321617072623220703161716190123111027030E01232226270177185362 +0B405C2D4AABDBAB140BE16C6BB51DD21853620B137F587AABAF400BE16C6BB51DDBB8F7 +0529174671DDFE4701D10125010A1801A7E9BFADCA15B8F8FE72226289FED1FE2F01B901 +5847FAC0E9BFACCB000100A5FD9905400890002900000126232207033613113311100503 +0E0123222627371633323713262726190133111017133E0133321617046E1853620B3CCE +01ABFE7E180BE16C6BB51DD21853620B1782597AABB23D0BE16C6BB51D0704B8F8FB2036 +017301BAFE2EFDF237FE11E9BFACCB15B8F701D6216289012F01D2FE46FEA64504FAE9BF +ADCA0000000200A5FD99054E09DC0016001A0000013E013216170726232207030E012322 +262737163332370115213502AB0BE5D6B21DD21850640C5C0BE66B6AB21DD21850640C02 +FFFBA906E8ECBCB1C615B8F8F87DECBCB1C615B8F70A78E2E200000000020097FC4C0540 +08900016001A0000013E013216170726232207030E012322262737163332370135211502 +AB0BE5D6B21DD21850640C5C0BE66B6AB21DD21850640CFE48045606E8ECBCB1C615B8F8 +F87DECBCB1C615B8F7FCE8E3E30000000001000000025999F5875B945F0F3CF5001F0800 +00000000D17E0EE400000000D17E0EE4F7D6FC4C0E5909DC000000080000000100000000 +00010000076DFE1D00000EFEF7D6FA510E59000100000000000000000000000000001852 +04CD00660000000002AA0000028B00000335013503AE00C506B4009E051700AA079A0071 +063D0081023300C5031F00B0031F00A40400003D06B400D9028B009E02E30064028B00DB +02B2000005170087051700E1051700960517009C051700640517009E0517008F051700A8 +0517008B0517008102B200F002B2009E06B400D906B400D906B400D9043F009308000087 +05790010057D00C905960073062900C9050E00C9049A00C906330073060400C9025C00C9 +025CFF96053F00C9047500C906E700C905FC00C9064C007304D300C9064C0073058F00C9 +0514008704E3FFFA05DB00B20579001007E90044057B003D04E3FFFC057B005C031F00B0 +02B20000031F00C706B400D90400FFEC040000AA04E7007B051400BA0466007105140071 +04EC007102D1002F05140071051200BA023900C10239FFDB04A200BA023900C107CB00BA +051200BA04E50071051400BA05140071034A00BA042B006F03230037051200AE04BC003D +068B005604BC003B04BC003D043300580517010002B201040517010006B400D9028B0000 +03350135051700AC051700810517005E0517005202B201040400005C040000D70800011B +03C5007304E5009E06B400D902E300640800011B040000D5040000C306B400D90335005E +0335006204000173051700AE0517009E028B00DB040001230335008903C5006004E500C1 +07C1008907C1008907C10062043F008F0579001005790010057900100579001005790010 +0579001007CB000805960073050E00C9050E00C9050E00C9050E00C9025C003B025C00A2 +025CFFFE025C00060633000A05FC00C9064C0073064C0073064C0073064C0073064C0073 +06B40119064C006605DB00B205DB00B205DB00B205DB00B204E3FFFC04D700C9050A00BA +04E7007B04E7007B04E7007B04E7007B04E7007B04E7007B07DB007B0466007104EC0071 +04EC007104EC007104EC00710239FFC7023900900239FFDE0239FFF404E50071051200BA +04E5007104E5007104E5007104E5007104E5007106B400D904E50048051200AE051200AE +051200AE051200AE04BC003D051400BA04BC003D0579001004E7007B0579001004E7007B +0579001004E7007B05960073046600710596007304660071059600730466007105960073 +04660071062900C9051400710633000A05140071050E00C904EC0071050E00C904EC0071 +050E00C904EC0071050E00C904EC0071050E00C904EC0071063300730514007106330073 +0514007106330073051400710633007305140071060400C90512FFE5075400C9058F0078 +025CFFE40239FFD3025C00030239FFF2025CFFF50239FFE4025C00B002390096025C00C9 +023900C104B800C9047200C1025CFF960239FFDB053F00C904A200BA04A200BA047500C9 +023900C1047500C902390088047500C9030000C1047500C902BC00C1047FFFF202460002 +05FC00C9051200BA05FC00C9051200BA05FC00C9051200BA068200CD05FC00C9051200BA +064C007304E50071064C007304E50071064C007304E50071088F0073082F0071058F00C9 +034A00BA058F00C9034A0082058F00C9034A00BA05140087042B006F05140087042B006F +05140087042B006F05140087042B006F04E3FFFA0323003704E3FFFA0323003704E3FFFA +0323003705DB00B2051200AE05DB00B2051200AE05DB00B2051200AE05DB00B2051200AE +05DB00B2051200AE05DB00B2051200AE07E90044068B005604E3FFFC04BC003D04E3FFFC +057B005C04330058057B005C04330058057B005C0433005802D1002F0514002005E1FF97 +057D00C9051400BA057D00000514000005A0007305960073046600710633000A068DFF97 +057D00C90514007104E50071050E0083064C007504EA00A4049AFF9602D1FF7F06330073 +057E000807DF00BA02D400C9025C000A05F700C904A200B90239000A04BC003D07CB00B2 +05FCFF96051200BA064C0073074E006704E5007607970073061300710537FF97051400B9 +058F00C905140072042B0064050E00C902B0FEF20323003704E300180323003704E3FFFA +06DD00AD051200B0061D004E05C400C905F3FFFC05D8003D057B005C04330058055400A0 +0554005C049F006804330071051700960554005D049F006804150058051400BA025C00C9 +03F000C903AC0014025D00C90B6000C90A6400C9093C007106AF00C9064B00C903A700C1 +077300C9076400C9066100BA0579001004E7007B025CFFFE0239FFE0064C007304E50071 +05DB00B2051200AE05DB00B2051200AE05DB00B2051200AE05DB00B2051200AE05DB00B2 +051200AE04EC00710579001004E7007B0579001004E7007B07CB000807DB007B06330073 +051400710633007305140071053F00C904A2FFE9064C007304E50071064C007304E50071 +055400A0049F00580239FFDB0B6000C90A6400C9093C0071063300730514007108E700C9 +057500C905FC00C9051200BA0579001004E7007B07CB000807DB007B064C006604E50048 +0579001004E7007B0579001004E7007B050E00C904EC0071050E00C904EC0071025CFFA7 +0239FFC3025C00050239FFE3064C007304E50071064C007304E50071058F00C7034A0082 +058F00C9034A00BA05DB00B2051200AE05DB00B2051200AE05140087042B006F04E3FFFA +032300370504009C042C0047060400C90512FFF005E200C906B400710596007104E20071 +057B005C043300580579001004E7007B050E00C904EC0071064C007304E50071064C0073 +04E50071064C007304E50071064C007304E5007104E3FFFC04BC003D03CC008A06BE00BA +03D100370239FFDB07FC007107FC00710579FFFD0596000C046600090475000A04E3FFB2 +042B006F0433005804D3005003D50050057D000A05DB000C05790010050E00C904EC0071 +025CFF960239FFDB0640007305140071058F000A034A000E04E3FFF604BC000B04CD00AE +05140071051400BA051400BA0465007F04660071051400710592007104EC007104EC0071 +068E007C045300850441008506340085055000710239FFDB059100710514007105090071 +04C4006004C40060051200AE051200BA051200BA0239000E02B500A602F90074032A004B +03E6004D023A00C105A600C107CB00BA07CB00BA07CB00BA052BFFDB052300BA051200B3 +04E5007106DD007105D30094054700700350000003500000034F0000034A00BA034900BA +043E0084043E007404D400BA04D400BA042B006F02B0FFD902B0FFD903B1003702B0FEF2 +03230037032300370512000004F1007104C900C104BC003D068B005604BC003D04E30066 +0433005804330058049F0058049F006D04150058041500580415005804150058064C0073 +04A300BA0550007105AA0071053B00BA0256FEF2055600BA040E00BA05D1007104150058 +04150058081D007108760071081A007106A4003704E10037063A003706C9002F05A500C1 +053C00C1041F0036041F0036054A0000054F0000033C0075033100750166FFE902120075 +025D0048025E004803080020041F003602FB0026023A00A003AE00A0028B00AE028B00B2 +028B00C4027500750275007502F5007502F500750400010B0400010B040000C1040000C1 +040000C1040000C1023300D6040000D504000173040000AA023300D6040000D5040000AA +0400017302B2006F02B2006F02750075027500750400011F0400011F031E0064028A0064 +040000C70400019A040000EE0400014C040000B6040000F00286FFFF040000EF03680075 +0154007A02FC0075038D007502F5007503F200D603F200D603F200D603F200D603F200D6 +040000C1040000D5042500AE040000EE040000B60000FCA80000FD710000FCC10000FCB4 +0000FCD90000FBEC0000FCBF0000FDA20000FCD70000FD370000FCEC0000FCF40000FCC5 +0000FDBC0000FCF00000FC5D0000FCBF0000FCBF0000FE1F0000FD900000FD900000FF79 +0000FCA80000FD710000FD240000FDC40000FE550000FEF00000FD800000FD0B0000FD0B +0000FD240000FD0B0000FD7A0000FD770000FDA20000FCD50000FD280000FD6A0000FD23 +0000FD4C0000FDBC0000FCF00000FC630000FCC50000FCBF0000FCBF0000FCBF0000FCB4 +0000FCD90000FBEC0000FBEC0000FB8C0000FD780000FAED0000FB680000FA120000FDAC +0000FCF10000FD210000FC630000FD2B0000FE060000FBEC0000FCA80000FD710000FCB4 +0000FD900000FCE70000FDC60000FCD50000FD1F0000FD150000FD1F0000FCB60000FCB6 +0000FCB60000FC630000FD33000000000000FD780000FCBF0000FD2B0000FD780000FF2E +0000FC900000FC700000FC700000FC700000FC700000FD2A0000FC700000FC77053C00C9 +048B00C106E500C9052E00C9023A00A0023A00A005FC00C9053300BA040001B60465007F +046600710465007F02B2009E04000173040000D7058A0010028B00DB05F8FFE706F8FFF3 +0344FFED0680FFF20699FFE1069BFFDB02B5000505790010057D00C9047500C905790010 +050E00C9057B005C060400C9064C0073025C00C9053F00C90579001006E700C905FC00C9 +050E00C9064C0073060400C904D300C9050E00C904E3FFFA04E3FFFC064C0073057B003D +064C0073061D004E025C000604E3FFFC0546007104530085051200BA02B500A604A10095 +05460071051B00C004BC002004E5007104530085045A006B051200BA04E5007102B500A6 +04B700BF04BC003D051700AE0478004A0476006B04E5007104D1004A051400BA04B20071 +0512007104D1006404A1009505470070049F003B0547007006B3008702B5000504A10095 +04E5007104A1009506B30087053F00C904EA00A704F400710597005706BDFFE105970057 +0547007006B30041054F0070064C007304E500710530008B04B20071049A00C903ABFF40 +054700B3054700BF06EC0072050500770778007306B300870611007305460071065500C9 +04EB002D057E004F04DB006406240073050000360598007304E5007104E3002C044A0037 +054F0070051400BA046600710239FFDB064C007304EC007104EC00C404D700C9051400BA +0596007306E700C90535007F0514005505A000730596007305A00073050E00C9050E00C9 +064AFFFA04E100C90596007305140087025C00C9025C0006025CFF9608C00054085C00C9 +064AFFFA05AE00C905FC00C904E00023060400C905790010057D00C9057D00C904E100C9 +06400065050E00C9089E00280521008705FC00C905FC00C905AE00C90604005406E700C9 +060400C9064C0073060400C904D300C90596007304E3FFFA04E0002306E30079057B003D +063600C9057C00AF088E00C908C000C906A9003C070F00C9057D00C90596006F08A300D3 +058F008804E7007B04EF007004B700BA043400BA0588006B04EC00710735004604410085 +053300BA053300BA04D500BA051D004C060900BA053B00BA04E50071053B00BA051400BA +0466007104A9003C04BC003D06D7007004BC003B057200BA04BA0096075200BA078900BA +05A7003E065100BA04B700BA0464007106BC00C104D0007404EC007104EC00710500002F +043400BA04640071042B006F023900C10239FFF40239FFDB0738004C073000BA0537002F +04D500BA053300BA04BC003D053B00BA0778007306B30087062A001E0560001E078A00D3 +05FE00C10709001006440033094700C9080300C1064C007304E5006B083700C9069800C1 +051700730453005B06DA001007030032064C007304E50071064000100552003206400010 +0552003207F00073073C007107A000730611007109700076083900980778007306B30087 +05960073046600710405003B0000FBDA0000FD070000FDB30000FDB30000F9CA0358F7D6 +0358F858062E00C9056A00C1057D002104B7002604D300C9051400BA04E100C9043400BA +0566004704B9003804FE00C9043D00BA089E002807350046052100870441008505AE00C9 +04D500BA05AE00C904D500BA05AE002104D5003D06DA003206A7002A060400C9054900C1 +081D00C9070400C108A600C9075300C107060073058B0071059600730466007104E3FFFA +04A9003C04E3FFFC04BC003D04E3FFFC04BC003D057B003D04BC003B0779FFFA06740005 +057C00AF04BA0096057C00AF04BA0096057C00AF051200BA0787001405D3000F07870014 +05D3000F025C00C9089E002807350046053F00C904D500BF06350036055D002E060400C9 +054900C1063600C9057200C1057C00AF04BA0096071A00C9063200C1023900C105790010 +04E7007B0579001004E7007B07CB000807DB007B050E00C904EC0071064C007504EC0071 +064C007504EC0071089E0028073500460521008704410085055400A0049F005805FC00C9 +053300BA05FC00C9053300BA064C007304E50071064C007304E50071064C007304E50071 +0596006F0464007104E0002304BC003D04E0002304BC003D04E0002304BC003D057C00AF +04BA009604E100C9043400BA070F00C9065100BA0566004704B90038057B003D04BC003B +057B003D04BC003B057D009104B70071080C0091072D007107CC00C906F400AB056E00C9 +04B500AB0893003607A8002E08E700C907BD00C10633007305470071062FFFFA05B00005 +04EA00A40453008506040054051D004C095A005407F3004C072700C906EA00BA08410088 +07E30074064C00730514007107E90044068B005605AE00C904D500BA08A50054073E004C +08A600C9074C00BA065800C9057600BA062100B205DB00B20607005D0607005A05DB00B2 +062D00B2051F00BC05DB00B206E000B20607005D058700BC044400BC076000BC06E80108 +05DB00B205BA0046062000A80607006406230069065500B205D2009205D50000060F00A0 +05DB00B205B400780667005A062500A8065500B205DB00B20607006405A40096058D00B2 +05F300A0044D00BC067C0078060E0032064C00730652006E02750075028B00B201E00000 +02E4000501E7FFFF033E00080400005A07CB00AE051200BA05430071054E00BA051200AE +05140071041E00BA051200BA05E800BA05430071051200BA022C00BA07D700BA04FB0071 +051200AE051200BA04DD006A051300BA0508008C051200AE022CFFD40512FFD903FD0000 +051200BA033C000A07CB00AE047B006E053000BA051200AE051200AE07CA00AE051200BA +0511006F037A00BA07CA00AE0517002904E0006F06710046067E00AE02B200F002E30064 +00000244000000AB000000FF000000FF00000244000001C7000001C70000016300000163 +00000000000000000000012F0000024E0000024402E3006400000163025C00D100000519 +000000C5025C00D10388006600000163055900BA04A00058034C0058045E0058053A00BA +022E00BA02C50058053A00BA053000B901CA0088044C0058043B0058048C0058054F00BA +056F0058022E00BA03340058053100B905020058051E00BA04FF00BA0451005804BF0058 +05AD00BA0484005805AB00580542001403C400BA0362008802A50088035300BA052800BA +0519000005190000060E008507D00085029500DB000000FC028B00DB043F009303C300A3 +0239FFB50239006C03DDFFAB0239006C06430082023900C1078800820431008B07880082 +07880082052A009D052A009D052A009D0390007D0390007D03DDFFAB03DDFFAB09C40082 +09C4008209AC008209AC0082076600900766009004C6007504C600750258FFEC084B0082 +0635006B0698009005D0009004F4008C05E000930431008B03DDFFAB0643008206430082 +000000DC000000DC000000DC000000DC000000DC000000DC000000C8000000EC00000098 +0000014F0000014F000000DC040000F3044C01B8044C0116044C0052044C004C044C00AF +044C0087044C0055044C003C044C003C044C0064044C008502990000028B00B2045C0057 +078800820635006B000001C90256007A0788008207880082078800820788008207880082 +078800820788008207880082052A009D052A009D052A009D052A009D052A009D052A009D +052A009D0390007D0390007D0390007D0390007D0390007D0390007D0390007D0390007D +0390007D03DDFFAB03DDFFAB03FCFFAB043DFFAB04E2FFAB043DFFAB03DDFFAB03DDFFAB +03DDFFAB09C4008209C4008209C4008209AC008209AC00820766009004C60075084B0082 +084B0082084B0082084B0082084B0082084B00820635006B0635006B07290082086E0082 +072900820698009006980090069800900729008207290082072900820729008207290082 +0729008205D0009005D0009005D0009005D0009005E0009305E0009305E0009305E00093 +05E0009305960090052A009D03DDFFAB03DDFFAB03DDFFAB03DDFFAB0643008206430082 +064300820431008B044C01B8044C0116044C0052044C004C044C0052044C006A044C00D0 +044C003C044C003C044C006405170087051700E1051700E1051700E1051700E1051700E1 +051700E1051700D6051700D60517009D023900C1049200710364003D04BC003D053B00BA +053B00BA04C00071053B00BA06A10071038100C10381003D047800BA04E500C102CD003D +07AC00C103C8003D0644003D053B00BA0500003D05DF00C1043D00C105CB007003C8003D +0500003D04C00071043D00C1043D00C1042E00C104C0007104C00071000000D900000042 +000001A4000000BF0000005B000000420000005B0000019A000000D5028200C8028200C8 +047B0064047B006402E3FFEC051700B0055D00820578008B0581008903DC006D0506007F +0578008B05800073055B00BA0522008105290000053E00570545005F0500004905000049 +05F60059062200BA057E0068057E0068059D0040058000730578008B0532004F050F0073 +05A0004F068D007F051000730578008B064D00CB050F006F0000FB600450007B0450FC9A +0000FB400000FB400000FB400000FB400000FCFE0000FCA70000FB600000FB1C054E0081 +0300007A0542007A03AEFFD30461005C03EE00BC056400930000FD120000FB7F0000FB3E +0000FC4E0000FB1C0000FC9A051700870520006305200063055D00160500006305000063 +05A00059055D008205640096056A0069083A007F083A007F06FE007805DE006E056E006F +06AD006E04EC0064062400500607003C0750007903A0003C04F5007806BE003C070F0078 +04FF008206D600640640003205090050074B006E04F7008204F6008206D6006406ED0064 +05CA005A050A008304F7006E0500007804F50082068B007906FD007804EC008204FC0064 +0500008205CC003C06C1003C04C400820582006F04C4003C04C0006E05E8005004100064 +0424006404A6005A068B006404100064041A00640401002906680064042400640415005A +08840064042E0064042E0082064A00640410006404240064065E0064042E0082053C005A +042E000A069A0064041A0064064A0064042400640424003C042E00820492005A042E0064 +0424008304290064042E008203A200140410006404240078041000640410006404240064 +046F0064069F0064046A005A0410006404920050041000640395006E0297006405790010 +057900100579001005790010062700C9062700C9062700C9062700C90627007706270077 +06AE00C906AD001006AE00C906AD001006AE00C906AD001007BC00C9080E00C907BC00C9 +080E00C9062700C907BC00C9080E007707BC00C9080E007706270077020C00C904580089 +0363005E0363005E031D0089031D008903250089031D008903BA004803150089020C00C9 +031D0089031D0089031D008908B800100745001007A000C908EF00770579001005790010 +057900100579001005D5007705D5007705D5007705D5007705D5007705D5007706AE00C9 +0579001006AE00C906AD001006AE00C906AD001007BC00C9080E007707BC00C9080E0077 +07BC00C9080E007707BC00C9080E007705D50077041100890189008905DB00B205DB00B2 +05DB00B205DB00B205D7007705D7007705D7007705D7007705D7007905D70079075E00C9 +071C00B2075E00C9071C00B2075E00C9071C00B2076C00C907340077076C00C907340077 +079400C907340079079400C907340079079400F003790089070500B2070500B206ED0077 +071F007905070046050700C9050700C9050700C9050700460507004605070046050700C9 +050700C906E100C9062A0046068500C9068700C9068500C9068700C906E100C9062A0046 +06E100C9062A0046068500C9068700C9068500C9068700C9068500F00341008903410038 +06010046063300C906010046063300C905070046050700C9050700C9050700C905070046 +0507004605070046050700C9050700C906E100C9062A0046068500C9068700C9068500C9 +068700C906E100C9062A004606E100C9062A0046068500C9068700C9068500C9068700C9 +068500F0037A0089037A008904E10077047500C9047500C9047500C904E1007704E10077 +04E10077047500C9047500C905FE00C90626007705F800C9061C00C905F800C9061C00C9 +05FE00C90626007705FE00C90626007705F800C9061C00C905F800C9061C00C905F800F0 +03160089041100890316008906D0007706D0004606D0004606D0000B06D0007706D00077 +06D0007706D0004606D00046088E00C908470077087900C906D00046087900C906D00046 +06D0004604CD0089039F008904CD008906D0007706D0004606D0004606D0004606D00077 +06D0007706D0007706D0004606D00046088E00C908470077087900C9083D0046087900C9 +083D0046088E00C908470077088E00C90847007708AA00C9083D004608AA00C9083D0046 +04CD008905D5007704D3004604D300C904D300C904D300C904D3004604D3004604D30046 +04D300C904D300C906AD00C906080046065600C9062B00C9065600C9062B00C906AD00C9 +0608004606AD00C906080046065600C9062B00C9065600C9062B00C9065600F003590089 +035D00890359008905B2004605B2004605B2004607220046072200460722004607220046 +074700C906FA0046074700C906FA0046074700C906FA0046091F00C908CC0046091F00C9 +08CC0046091F00C908CC0046091F00C908CC00460520008905040077050400C9050400C9 +050400C9050400770504007705040077050400C9050400C906C100C9063F0077068700C9 +068C00C9068700C9068C00C906C100C9063F007706C100C9063F0077068700C9068C00C9 +068700C9068C00C9068700F003590089031D008903E00089075300C90753007707530077 +075300C9075300C9075300C904D300C904D300C904D300C904D3004604D3004604D30046 +06AD00C9060800460359008905D500770579009605790096057900960579009605CF004D +05CF004D05CF007705CF0077076400C9080E00770411008905DB00B205DB00B205DB00B2 +05DB00B205DB00B205DB00B205D7005305D7005305D7007905D70079079400C907340079 +0411008906A5004606A5007706A5007706A5004606A5004606A5007706A5007704820089 +060400C903E0008908600089086000890860008908600089086000890860008908600089 +069A008906A5004606A5007706A5004606A500770A1300890A1300890A13008908040089 +080400890A1300890A130089059900890895008906D0004606D0004606D0007706D00077 +06D0004606D0004604CD0089052500770525002105250021052500770525007705250021 +052500210359000A050700C9062900C90623007303BF008903BF0089038D007508600089 +0A7A00890D0F00890D0F00890B0000890B0000890D0F00890D0F008903D1FFEC03F1FFEC +05B2FFEC0773FFEC0934FFEC0AF5FFEC03F1FFEC05B2FFEC0773FFEC0933FFEC0AF5FFEC +03FCFFEC05BFFFEC0782FFEC0945FFEC0B08FFEC03F1FFEC05B2FFEC0770FFEC0932FFEC +0AF5FFEC03FCFFEC0605FFEC064FFFEC09A3FFEC0933FFEC0577FFEC040F0071040EFFEC +04BC003D05BD000B07DB007B04B0003E0466007104D700BA04D7002403ED00BA04530082 +023900C10328000004A200BA04AA0002060900BA053300BA04E500710466007F05790071 +0579007105790033082F007104E5007104E500710432009704D0003204D0003204A9003C +049800BA05E500AE079500AE051A002F04BC003D068B0056043300580435007804AA00B3 +04BC003D048300970432009704B9005A051D004C0372000A04E800050375007F03E1007F +032F007F032F005303E7004803CA007F017C007F017CFFBD034E007F02CE007F0459007F +03C5007F03C5007F03F7004803840047030A007F0380007F0314FFFC03B0007004FB002B +0322004D0322004D033E0047052F004D036D0075033E0047035600470356004702E20054 +02E00052033E0047016E007A0368007504FC007503450075034F004702F60047034F0047 +034F0047036D0075025C0023033D006E03C2006E04FC0075035600260337007902FB0014 +031500470353004702E90025016E007A02120075033D006E035600260337007902FB0014 +034B00790353004702E90025051400BA03CA007F02F900740556003202390091033E0047 +02F6004702F60047034F004702E20054025F001E01DDFFE9033E0047033D006E02170049 +01FF007A021600490217004901E0FF5601FF007A01E1005B0303007104FC007504FC0075 +0349FFE903D6007503450071034F0047034F004702E20046024BFFE9025C00230410005E +0359004702E400750340007A0356002602EE0037037E003702EE003703230037034F0047 +0000FC5B0000FC5B0000FC5B0000FC5B0000FC420000FC420579001004E7007B057D00C9 +051400B8057D00C9051400BA057D00C9051400BA0596007304660071062900C905140071 +062900C905140071062900C905140071062900C905140071062900C905140071050E00C9 +04EC0071050E00C904EC0071050E00C904EC0071050E00C904EC0071050E00C904EC0071 +049A00C902D1002F0633007305140071060400C9051200B8060400C9051200BA060400C9 +0512FFED0604001105120002060400C9051200BA025C00000239FFD3025C00070239FFF4 +053F00C904A200BA053F00C904A200BA053F00C904A200BA047500C9024D00C904750003 +024DFFFD047500C90239FFF4047500C90239FFDE06E700C907CB00BA06E700C907CB00BA +06E700C907CB00BA05FC00C9051200BA05FC00C9051200BA05FC00C9051200BA05FC00C9 +051200BA064C007304E50071064C007304E50071064C007304E50071064C007304E50071 +04D300C9051400BA04D300C9051400BA058F00C9034A00BA058F00C9034A00BA058F00C9 +034A00BA058F00C9034A005405140087042B006F05140087042B006F05140087042B006F +05140087042B006F05140087042B006F04E3FFFA0323003704E3FFFA0323003704E3FFFA +0323003704E3FFFA0323003705DB00B2051200AE05DB00B2051200AE05DB00B2051200AE +05DB00B2051200AE05DB00B2051200AE0579001004BC003D0579001004BC003D07E90044 +068B005607E90044068B005607E90044068B005607E90044068B005607E90044068B0056 +057B003D04BC003B057B003D04BC003B04E3FFFC04BC003D057B005C04330058057B005C +04330058057B005C04330058051200BA03230004068B005604BC003D04E7007B02D1002F +02D1000202D1002F062600B204E500710579001004E7007B0579001004E7007B05790010 +04E7007B0579001004E7007B0579001004E7007B0579001004E7007B0579001004E7007B +0579001004E7007B0579001004E7007B0579001004E7007B0579001004E7007B05790010 +04E7007B050E00C904EC0071050E00C904EC0071050E00C904EC0071050E00C904EC0071 +050E00C904EC0071050E00C904EC0071050E00C904EC0071050E00C904EC0071025C005A +02390044025C00C9023900BF064C007304E50071064C007304E50071064C007304E50071 +064C007304E50071064C007304E50071064C007304E50071064C007304E50071074E0067 +04E50076074E006704E50076074E006704E50076074E006704E50076074E006704E50076 +05DB00B2051200AE05DB00B2051200AE06DD00AD051200B006DD00AD051200B006DD00AD +051200B006DD00AD051200B006DD00AD051200B004E3FFFC04BC003D04E3FFFC04BC003D +04E3FFFC04BC003D04E3FFFC04BC003D062700C903D10020054600710546007105460071 +054600710546007105460071054600710546007105790010057900100705000507050006 +062700070669000405AA000705F100040453008504530085045300850453008504530085 +0453008505B0000705B0000707BA000507CC000607300007076C0004051200BA051200BA +051200BA051200BA051200BA051200BA051200BA051200BA06B2000706AF000708B00005 +08B600060837000708680004077800070793000402B5009B02B5009102B5FFB102B5FFBB +02B5000502B5FFD302B5FFCB02B5FFC6030A000702FE0007051400050514000604900007 +04CC000403EA000703F1000404E5007104E5007104E5007104E5007104E5007104E50071 +066F000706C9000708C2000508CC00060782000707C3000404A1009504A1009504A10095 +04A1009504A1009504A1009504A1009504A100950645000707FB000608190004072E0004 +06B3008706B3008706B3008706B3008706B3008706B3008706B3008706B30087066B0007 +06BF000708B7000508C300060791000707C70004075F0007079E00040546007105460071 +0453008504630085051200BA053C00BA02B5FF8D02B500A604E5007104E5007104A10095 +04A1009506B3008706B30087054600710546007105460071054600710546007105460071 +054600710546007105790010057900100705000507050006062700070669000405AA0007 +05F10004051200BA051200BA051200BA051200BA051200BA051200BA051200BA051200BA +06B2000706AF000708B0000508B600060837000708680004077800070793000406B30087 +06B3008706B3008706B3008706B3008706B3008706B3008706B30087066B000706BF0007 +08B7000508C300060791000707C70004075F0007079E0004054600710546007105460071 +05460071054600710546007105460071057900100579001005BBFFFC058A001005790010 +04000186040001B604000186040000B6040000B6051200BA051200BA053C00BA051200BA +051200BA0670FFFC05F8FFE70772FFFC06F8FFF3060400C904000089040000B4040000B6 +02B5FFEB02B5FFE302B5FFD802B5000502B5FFE402B5FFE6025CFFF5025C000303CDFFFC +0344FFED0400007E04000095040000B604A1009504A1009504A1009504A10095051400BA +051400BA04A1009504A1009504E3FFFC04E3FFFC06C3FFFC0699FFE1057B0007040000AA +040000D7040000AA06B3008706B3008706B3008706B3008706B300870787FFFC0680FFF2 +0761FFFC069BFFDB061D004E040001730400018604000000080000000400000008000000 +02A30000020000000156000005170000028B00000199000000CC00000000000000000000 +00000000000000000000000002E3006402E3006405170064040000640800006408000000 +040001040400FFEC028B00AE028B00B2028B00AE028B00B2042500AE042500AE042500AE +042500AE040000390400003904B8013304B8013302AD00EC055700EC080000EC028B00DC +00000000000000000000000000000000000000000000000000000000019900000ABC0071 +0DE2007101D1002802FD00280429002801D1002802FD00280429002802B6000B0333009E +033300C106B400C303E20093043F00930400FFEC066EFFA7066EFFA70200FFAA0800003D +040000DD0156FE89031F00B0031F00B00760004A05DD009305DD009303FA0064051700EC +040000D8040000D80400003D02B2011D066EFFA70400003D0399009108000064066EFFA7 +06B4013804B000FA054E002806B4016606B40166028B00DB0661006406B40070028B00DB +028B00DB01C7000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000003350057016E007A0335003F033500660335005C +0335006C033500590335005304390089043900890439008901F7006F01F7006703300075 +03350057033500890335005E033500620335003F033500660335005C0335006C03350059 +0335005304390089043900890439008901F7006F01F700670322004D03560047034F0047 +038D007503560047033C0075036800750154007A04FC007503300075036D007502FC0075 +025C0023070400560517007305170060051700850517008107CB00BA051700220A2E00C9 +089700C907E9003B0646005F051700710517000005170028051700140A2E00D00517002E +051700440517005D0517001006310075051700A5051700140517006A0517000A05170043 +0000FC130000FC3D0000FC3D0000FC3D0000FC130000FB500000FC3D0826004308260043 +0596007308FC00C30523FFD60826003C0889003C04EA00A40596006F079D00C307E80049 +0609000206CC00C9051200480512005A03C2003B0594006A05C30044034EFFE4068B0020 +066800C6085200360800011B0594006E059C00C8064C00730662004206830053065600C8 +072C00A9057900C9082801030898FFFC080001270579001005F5005C049F0058061D004E +061D004E04EE001802B50044053F00C905790010064A005C05A0008206D6007D04BC0057 +04D800A2064A0054049A00C9088E003903B2006805F600670564FFFB03BA001B05280056 +030A00460768005A098D0097059E002405D20000053C00C806CA00C9067C0019063300A3 +047500080475000704E3FFFC068D005705AA005A04EC005B02CF004F02CFFF16063D003B +0436005107C1008907C100890AF6008907C1008907C1005E07C1008907C1005E07C10062 +07C1003F07C1008907C1006607C1008907C1006207C1006607C1006C048B0089025C00C9 +03F000C9058400C9076200C9057900100761001008F500100A890010075700C9057B003D +0777003D090D003D047500C905960073062900C906E700C9023900C103A900C1051900C1 +067E00C104BC003D067D003D07ED003D095D003D068D00C104BC003B0694003B0804003B +023900C1046600710514007107CB00BA09F60079062900C909F6007905A000730465007F +0596007307C1005706B4006406B401A306B4007506B401A306B4006406B401A306B40120 +06B4012006B4012006B4012006B4006406B4007506B4002C06B4001606B4006406B401A5 +06B4007506B401A506B4006406B4007506B4006406B401A506B4007506B401A506B401A5 +06B4006406B4007606B4006406B4007606B4006406B4006406B4012A06B4015A06B401AC +06B4015A06B401AC06B401DD06B4006406B4002D06B4004F06B400DE06B4007006B400D3 +06B4009D06B4006406B4006406B4030506B401A306B4007506B4007506B4030506B401A3 +06B4006406B4007706B4006406B4006406B4007806B4007606B4007806B4006406B40064 +06B4006406B4006406B4007506B4006406B401A506B4007506B401A506B4006406B401A4 +06B4012006B400BC06B400BC06B4012006B4006406B4007506B4006406B4007506B401A3 +06B401A306B4006406B401A306B4007506B401A306B4006B06B4007506B4003706B4015E +06B4004806B4015E06B4015E06B4015E06B4014006B4015E06B4015E06B4015E06B40075 +06B4007A06B4007A06B4015E06B4007506B4007706B4007506B4006406B4007506B40064 +06B4006406B4007506B4006406B4003706B4007506B4003705790010051700870423005F +050E00C9050E00C906F8009B055AFFFA055AFFFA06F800AF06F800AF05BE00D906F800AF +06F800AF05BE00D90517012C060E009C060E009C0564001906B400D906B400D906B400D9 +02B200000518018A06B4010505020144050201580519003D0519003D0519003D05B700DC +06AA00DC06B4011B072C00AF072C00AF06B400ED040001B0040000660400011004000066 +05DB010805DB010805DB010805DB0108042B00750650007508750075042B007506500075 +08750075042B0075042B0075042B00750517007905170079021500A10517007906B400D9 +06B400D906B400D806B400D906B400D906B400D906B400A206B400D9030000D006B400D9 +06B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400D906B400D906B400D806B400D906B400D906B400D906B400D906B600D906B600D9 +080000CF080000CD06B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400DA06B400DA06B400DA06B400DA086000940860009403B600B006B400D806B400D9 +06B400D906B400D906B400D906B400D906B400DA06B400D906B400D906B400D006B400D0 +06B400D006B400D006B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400D906B400CC06B400CC06B400CC06B400CC06B400BE06B400D906B400BE06B400D9 +06B400BE06B400BE05DB010805DB010805DB010806B400D906B400D906B400D906B400D9 +063E00D9063E00D906B400BB06B400BB06B400BB06B400BB06B400BB06B400BB06B400BB +06B400BB06B400BB06B400BB06B400BB06B400BB06B400BB06F800AF06F800AF06F800AF +06F800AF042A00AF042A00AF06F800AF06F800AF06F800AF06F800AF06F800AF06F800AF +06F800AF06F800AF06B400D906B400D906B400D906B400D906B400D906B400D908000079 +0800007906B4006206B40079042A00EE05DB00C805DB00C805DB00C806B4011B06B4011B +0690FFFA0690FFFA0690008C0690008C05020082028B00DB050200F906B400D9080000D9 +080000D9080000D9080000D9080000D906B400D905DC006305DC006306B400BE06B400D9 +06B400D206B400D206B4017C06B400D906B400D906B400D90B6100940B61009406B400D9 +06B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400D906B400D906B400D906B400D906B400D906B400E106B400D906B400D906B400D9 +06B400D508000396080000EC080000EC080000EC0800005806F800AF05BE00D906F800AF +06F800AF05BE00D906F800AF06F800AF0800005806F800AF05BE00D906F800AF05BE00D9 +06F800D904D1004A04D100720514009206B401A306B401A306B401A306B401A303E8013B +031F00B0031F00C7031F00B0031F00C7067802F406780064067802F40678006406B400D9 +041B0006080000F706B400D903C000B003C0008603C000B003C00086042B01AF042B002A +0938009C0938009C0B50009C0938009C0B8C00780B50000106FC009602B500A6051400BA +06B3008705460071060F001A0938009C06FC0023040000B0040000B0040000B0040000B0 +0400028D040000B0040000B0040000B0040000B0040000B00400028D040000B0060002A3 +060000A8060002A3060002A3060000A8060002A3060000A8042B01AF06B40037078F00BA +06FC009606270006051700590514FF8305140092072C0098072C0098072C0098072C0098 +072C0098072C0098072C0098072C0098072C0098072C009804D1FFEC04D1FFEC04D10218 +04D101C804D1003C04D1003C04D1021804D101C804D1003C04D1003C04D1021804D101C8 +04D1021804D1021804D101C804D101C804D1FFEC04D1FFEC04D1FFEC04D1FFEC04D10218 +04D1021804D101C804D101C804D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1021804D10218 +04D101C804D101C804D101C804D101C804D101C804D101C804D1FFEC04D1FFEC04D1FFEC +04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC +04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC +04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC +04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC +04D1FFEC04D1003C04D1003C04D1021804D101C804D1FFEC04D1017804D1021804D10178 +04D1017804D1FFEC04D1FFEC04D1FFEC04D1021804D1017804D1017804D1FFEC04D1FFEC +04D1FFEC04D1021804D1017804D1017804D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC +04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1FFEC04D1021804D1FFEC +04D1FFEC04D1021804D1FFA704D1FFA704D1FFA704D1FFEC04D1021804D1026804D10218 +04D1FFEC04D101C804D1026804D101C804D1FFEC04D101C804D1FFEC04D101C80627FFEC +0627FFEC0627FFEC0627FFEC0627FFEC0627FFEC0627FFEC0627FFEC0627FFEC0627FFEC +0627FFEC0627FFEC0627FFEC0627FFEC0627FFEC0627FFEC062703130627FFEC0627FFEC +0627FFEC0627FFEC062705710627FFEC062703130627FFEC0627FFEC0627FFEC0627FFEC +0627FFEC062703130627FFEC0627FFEC078F00BA078F00BA078F00BA078F00BA078F00BA +078F00BA078F00BA078F00BA078F00BA078F00BA056C00BA056C00BA078F00BA078F00BA +046700BA046700BA06270006062700060627000606270006040400060404000606270006 +062700060404000604040006062700060627000606270006062700060404000604040006 +062700060627000604040006040400060627000606270006062700060627000606270006 +06FB007003F4000606FB007006FB007206FB007006FB007006FB007006FB007006FB0070 +06FB007006FB007006FB007006FB007004370070043700BA065400BA07C300BA07C300BA +07C300BA0319000603190006031900060319000606FB007006FB00700627000606270006 +062700060627000604B80133078F00BA078F00BA078F00BA078F00BA078F00BA06270006 +062700060627000608F40070078F00BA078F00BA078F00BA078F00BA06FB007006FB0070 +06FB007006FB007006270006062700060627000606A400BA06A400BA05DC00BA05DC00BA +06270006072C00AB08000068072C0064072C00AA072C0083072C0085072C0085049500AA +072B00AA072C00AA071B007D071B007D055F007D081A007D09F7008C0A010091072C00B8 +072C00B7072C00B70442009A072C0064072C0098072C00AC072C00AC072C009F072C00AB +072C00AC072C00AC072C00B204DF0093072C00B104DF0093072C007D072C00AC072C00AA +072C0064055A006405F800AA053200AA064500AA045C00AA072C00AA072C00B2072C00AA +05AF00AA072C00AB072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C0087085700AA085700AA085700AA072C00AA072C02DD +072C00AA04E900AF05DC00AF05DC00AF072C00A2072C0153072C01C0072C00F8072C0104 +072C01EC072C005D072C00B7072C00C0072C00E7072C011E072C006D072C00AB072C0045 +072C00A9072C00C0072C00B0072C0141072C00C9072C00E2072C0155072C01B6072C0151 +072C0130072C00C9072C00E2072C0155072C01B6072C014C072C0130072C0143072C00B9 +072C0158072C00E4072C0142072C00B6072C0158072C00E4072C00D803C600AC051B00AC +072C0178072C00BC03C600B502DC00AC03DF00AD05FC00AC06200084072C00AC072C009C +072C009C072C009C072C009C072C009C072C009C072C009C072C009C072C00AC072C00AA +072C00AA072C00AA072C013106F4009606F4009606F4009606F4009606F4009606F40096 +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C0158072C0158072C006A072C00C6072C010D0454007D072C0079072C007D +072C0129072C00C2072C0106072C0105072C0105072C00ED072C00ED072C0064059E00AA +080900AF08B700A2096600AF073900AF06B4010D06B400CF06B4018006B4000906B4017F +06B4017F06B401FA06B4016406B4005406B4000A06C000D206B401B105DC00AF05DC0159 +05DC00B005DC00B006CC007805DC018E05DC014406B4005606B4005606B4005606B40056 +05DC00AF06B4001606B4005606B4001606B4004906B4005606B4005606B4007806B40084 +06B401B306B4002B06B400B606B4003506B400B606B4005806B4008A06B4013306B400ED +06B4010306B400AF06B400F106B400FC06B4007006B4007006B4007006B4007006B40152 +06B4010C06B4013E06B4007006B400BB06B4005406B4005606B4005306B4005406B40057 +06B4005706B4002F06B4005606B4003006B4002F06B4003006B4003006B4003006B40032 +06B4008406B4009806B4007006B4004006B4005406B400BB06B4005406B4005406B40054 +06B4007006B400A706B400A706B400A106B400A106B4006E06B4006E06B4005406B40056 +06B400A106B400B606B4009C06B4008206B400A106B4006106B4006106B4005406B40054 +072C0066072C007A072C007A072C007A072C007A072C00AA06B4030506B402B006B40206 +029400AE02940078044E00AE044E007806B4013E06B4019E06B4014E06B4006E06B40158 +06B4007E06B400A006B4019106B4019106B4021D06B4021D06B401B906B401DB06B40123 +06B4013906B4015506B4017706B402C406B4026C06B4016606B401A1072C0098072C0098 +072C0098072C0098072C0098072C0098072C0098072C0098072C0098072C009806B40009 +06B4000906B4000906B4000906B4000906B4000906B4000906B4000906B4000906B40009 +06B4000906B4000906B4000906B4000906B4000906B4000906B4000906B4000906B40009 +06B4000906B4007506B400FC06B4007506B400FC06B4007506B4007506B4007506B40075 +06B4007506B4007506B4007506B400E406B400E406B400E406B4007506B4007506B401EC +06B4007506B4007506B4007506B4002B06B4002B06B4011506B4011506B4007F06B4007F +06B4013C06B4008206B400A506B4007506B400A706B400A706B4007506B400A706B40073 +06B4009606B400A206B400A206B40075031F006E031F004F03F4000603F600B003F600AF +031F00B7031F00A4047300B7047300A406B4005B06B4005906B4004F06B4004F09420075 +0B7800640B7800750B7800640B7800640B7800750B7800640B7800640B7800750B780064 +0B7800750B78007505DC000005DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC038405DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC038405DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC0384 +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC038405DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC038405DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC038405DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC038405DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC038405DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC038405DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC038405DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC038405DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC038405DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC0384 +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC038405DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC038405DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C +05DC012C05DC012C05DC012C05DC012C05DC012C05DC012C06B4006406B4007506B40100 +06B401000577004F0577004F05DF010005DF010006B400D9080000D9080000D9080000D9 +080000D9080000D9080000D9080000D903F4000606B400D906B400D90800003A0800003A +0800003A0A9A0075042B0075042B0075042B0075042B0075042B0075042B0075042B0075 +042B0075042B0075042B0075042BFFBE042B0075042B0075042B0075042B0075042B006B +06B4011906B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400D906B400D906B400D906B400D906B400DA06B400DA06B400D906B400D906B400D9 +06B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D906B400D9 +06B400B506B4012006B400B506B4012006B4003706B4003706B4015E06B4015E06B400B5 +06B4012006B400B506B4012006B4003706B4015E06B0007506B0007506B0004806B00048 +078F00BA078F00BA078F00BA078F00BA06270006062700060627000606270006078F00BA +06F4002406F4002406FC009606FC009606FC002208F4007006F4004D06F4004D0475000A +0239000A0475FFD704D3000A058F00C904E700480323FFE8060400C9051200BA053F00C9 +04A200BA057B005C043300580640007306E700C9057900100640007305E0003D09060044 +07B1005604BC0068053C00C9048B00C1054700700350000004E5007103ED00620166FFE9 +0372000A05140087057B005C04BA007B04C200320484005004D0007F04B3006907490050 +05030000079D006C04C3008E04DB006807A1005004F5006D04C300500769006804C20068 +0673008E0773006804AD006804BD006607630068079F007B069F006404C4005004C20068 +04B8006804BC005004BC005604F7007A075D005004B7003C04B1006004A6004607500050 +04C4006404C2007A04BD007C052200680735007A052C0071071A0073071A007305750040 +0578004305150040047E00960579001005790010050E00C9050E00830576009606FF00DB +057B005C03ED0096057B005C071A0073071A00730267009605040029060400C9053F003E +04380096057B005C05280096050E00C90405006F079F006F063A006F05FC00C904F700CC +025C00C9063A006F025C00C90604009F05100063071A0073071A0073060400C9029000C9 +05FE0096071A0073071A00730596007306240064057B003D0596007304FA00C905790010 +060400C9050E00C9064E0073048900C9064E0073041F0036043F008F06B400D9031F00B0 +031F00C7031F00B0031F00C7043F0093072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA057D00C904D300C904D30046062900C9 +04E3FFFA04E3FFFA06330073053F00C9053FFFD5041800000596007305A00073057B005C +049A00C9049A00C906E700C905FC00C9047500C905140087058F00C9058F003B05790010 +05790010060400C9063300A3041800C907E90044057B003D04E3FFFC057D009105790010 +05790010050E00C9050E0083025C00C9064C007305DB00B205DB00B20475000806230073 +026600AF0266009204C500AF04C500AF02660092026600AF04B400AF04B400AF05140072 +042B006402D400C902B500A60970007608390098083B003C0740003E08A3007306BC0070 +07D000D306BE00C1087F0065074B006B088800540735004C096D00C9081000BA064C0073 +04E5007106D8007305B300710ADD0073082600710708003A0642FFFA057A003C04E3FFFA +04A9003C057C00AF051200BA03F200D603F200D603F200D603F200D603F200D603F200D6 +03F200D603F200D603F200D603F200D603F200D603F200D603F200D603F200D603F200D6 +02F4006602F40066020500C3020500C3020500C30315008902D9008903C6007303C60073 +060400C9051200BA0706FFFA05AD003704EA00A40453008503ED00BA042B006F09FF0010 +07E1007B09A0001007EB007B0923001007D9007B07C50010068B007B07C50010068B007B +07AC0010068B007B05A000730465007F053F000A04AA000E057100C9032300C104A70053 +036A00780674000A05A2000A0ADD00730826007104D3000A0514FFFB05DF003206320032 +064C00730514007104D7000A0514FFFB04D7000A0514FFFB0475000B023900C105E200C9 +051200BA02B200F0030200A003350135023300C5057C00AF03E6004D062E00C9055500BA +0633000405140004053F000404A2000405FC000405120004058F0004034A000405140004 +042B00040668FF97049D007F05270047075200BA049A007704D3004606E700C9025C00C9 +0998004401B500C201E7008D020E006E021C00600223005A01E7008D01B500C201E7008D +020E006E021C0060020E006E01E7008D01B500C201E7008D020E006E021C0060020E006E +01E7008D01B500C201E7008D0223005A021C0060020E006E01E7008D01B500C2023300D6 +07D0009607D0009607D0009607D0009604A4006E04A4006E04FD006E071D006E04AE006F +04A4006E0539006E070E006E0471006E04A4006E0959006E04B6006E04B8008206F4006E +04A4006E04B7006E074F006E04B8008205D9006E04AA003206FA006E04B7006E0729006E +04B6006E04B6006E04B900830531007004B6006E04B7008304CA006E04B8008204210032 +04A3006E04AC007804A4006E04A4006E04A5006E051B006E07A4006E0773007A06770064 +041000640410006404100064041000640410006404100064041000640410006404100064 +04100064042400640424006404240064064B0064064B0064064B0064064B0064064B0064 +045F003C045F003C045F003C045F003C045F003C045F003C04E500710583002F050A002F +050A002F07BC002F07BC002F057D002F06E3006F099D00AB099D00AE099100AE097D00AE +0C3C00AE01CA00880000015602A5004A0516004E06D900AE06310058073F00BA062C0058 +06BF005806D700BA067500580701006006B400D905AB005805AB004E05AB005805AB0058 +055900BA055900BA055900BA04A00058034C0058045E0058053A00BA02D80059033F0059 +053000B902A40059044C0058043B0058048C0058056F005803320058053100B9051E00BA +04FF00BA04BF005805AD00BA0484005805AB005805420014022E00BA04A00058043B0058 +04FF00BA050800580788008207DB0082023AFFEC026AFFEC0788008207DB0082023AFFEC +026AFFEC0788008207DB0082023AFFEC026AFFEC0788008207DB0082023AFFEC026AFFEC +0788008207DB0082023AFFEC026AFFEC0788008207DB0082023AFFEC026AFFEC084B0082 +0848008203D3FFEC040CFFEC084B00820848008203D3FFEC040CFFEC052A009D052A009D +04F2FFEC052AFFEC052A009D052A009D04F2FFEC052AFFEC052A009D052A009D04F2FFEC +052AFFEC052A009D052A009D04F2FFEC052AFFEC0390007D0433007D0390007D0433007D +0390007D0433007D0390007D0433007D03DDFFAB046AFFAB03DDFFAB046AFFAB07290082 +0729008203CFFFEC046BFFEC072900820729008203CFFFEC046BFFEC0729008207290082 +03CFFFEC046BFFEC072900820729008203CFFFEC046BFFEC05E000930617009305E00093 +06170093023AFFEC026AFFEC05960090050E00900438FFEC03B0FFEC0698009006BE0090 +03CFFFEC046BFFEC03DDFFAB0422FFAB03DDFFAB0422FFAB03DDFFAB0422FFAB03DDFFAB +0422FFAB0643008206AB0082023AFFEC026AFFEC023AFFEC026AFFEC0643008206AB0082 +023AFFEC026AFFEC00000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000 +0000FC70000000000000FD2A00000000025800080258FFEC025800080218006902580008 +025800080258FFEC025800080258FFEC025800080258FFEC0258FFF40258FFEC02580018 +0258FFEC03C300A30239FFB50270FFB50239006C0270006C03DDFFAB0422FFAB0239006C +0270006C0643008206AB0082023AFFEC026AFFEC023900C1027000C10788008207DB0082 +023AFFEC026AFFEC0431008B044A00910788008207DB0082023AFFEC026AFFEC07880082 +07DB0082023AFFEC026AFFEC052A009D052A009D04F2FFEC052AFFEC052A009D052A009D +04F2FFEC052AFFEC052A009D052A009D04F2FFEC052AFFEC0390007D0433007D0390007D +0433007D03DDFFAB046AFFAB03DDFFAB046AFFAB09C400820A33008206B4FFEC0723FFEC +09C400820A33008206B4FFEC0723FFEC09AC008209CD008206CBFFEC06F0FFEC09AC0082 +09CD008206CBFFEC06F0FFEC0766009007980090065EFFEC0690FFEC0766009007980090 +065EFFEC0690FFEC04C600750442007504C6FFEC03DCFFEC04C6007504420075042FFFEC +03DCFFEC084B00820848008203D3FFEC040CFFEC0635006B06AC006B03D3FFEC040CFFEC +0698009006BE009003CFFFEC046BFFEC05D00090060F00900270FFEC02A6FFEC04F4008C +0553008C0449FFEC04A0FFEC05E0009306170093023AFFEC026AFFEC0431008B044A0091 +0438FFEC03B0FFEC03DDFFAB0422FFAB0643008206AB00820643008206AB0082023AFFEC +026AFFEC0490FF2E04C6FF2E0490FFE504C6FFE50490001704C600170490005404C60054 +00000000000000000000000000000000000000000834001E060E006404DC00C804800064 +04CE00C8046400C8046400C803840096050000C8073A0096024400C8051900C8045F00C8 +0B6A00C8070D00C8076400C8073A0096057D00C806F200C804B0009604DA00C803880096 +05920064051800C8057D009605780096067A006404380096047600C8047600C803840064 +060E0064024400C8060E0064057D0096068B0064072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA072C00AA05ED001005D900C9068D00E805D600C9056300C90633007303240066 +0322FF96060500C9053D00C9083300C4064C00720514008805AAFFFA06A400B105C80010 +08DD00440672006C05A8FFFC054B007B05AA00940466007105AA009404EC006F03B9002F +05AA007105E500BA02CF00E602CFFFD7053500BA02CF00E6092200BA05E500BA04E50071 +05AA007105AA007103DF00BA042B006F03B9003705EA00B104DC003D074800560568004C +04FF003D04B8005805790010057D00C905960073062900C9050E00C9049A00C906330073 +060400C9038C0097025CFF96053F00C9047500C906E700C905FC00C9064C007304D300C9 +064C0073058F00C90514008704E3FFFA05DB00B20579001007E90044057B003D04E3FFFC +057B005C04E7007B051400BA046600710514007104EC007102D1002F05140071051200BA +023900C10239FFDB04A200BA023900C107CB00BA051200BA04E50071051400BA05140071 +034A00BA042B006F03230037051200AE04BC003D068B005604BC003B04BC003D04330058 +051700880517006B051700820517009C0517005A0517009405170071051700410517008B +0514006A05170087051700E1051700960517009C051700640517009E0517008F051700A8 +0517008B05170081023900C107880082052A009D0390007D03DDFFAB03DDFFAB052A009D +07660090064300820698009005D0009004F4008C05E0009309C4008204C60075084B0082 +09AC00820635006B03DDFFAB09C400820788008207880082052A009D0390007D09AC0082 +0766009004C600750788008205E00093084B00820635006B0334FFEC0556FFEC04CEFFEC +0556FFEC0334FFEC04C9FFEC036AFFEC04DFFFEC0334FFEC0718FFEC04C6FFEC03D3FFEC +072FFFEC03D3FFEC0718FFEC0334FFEC0334FFEC0556FFEC072FFFEC042FFFEC054000C1 +076200C106A800C1076200C108CD00C1054000C1063F00C106B900C1054000C1092400C1 +073600C1064300C1093B00C1064300C1092400C1054000C1054000C1076200C1093B00C1 +08CD00C1073600C1054000C1064300C10AE900C80AE900C80AE900C80AE900C80AE900C8 +0AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C8 +0AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C8 +0AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C8 +0AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C8 +0AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C80AE900C8 +068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8 +068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8 +068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8 +068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8 +068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8068500C8 +068500C8068500C8068500C8068500C8068500C8082F00C8082F00C8082F00C8082F00C8 +082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8 +082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8 +082F00C8082F00C8082F00C8082F00C8082F00C8084000D9082F00C8082F00C8082F00C8 +082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8 +082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8 +082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8082F00C8 +082F00C8085800990978004B0857003D094000AA085700AA085700AA0959005F085700AA +085700AA085700AA085700AA0857008F085700AA085700AA085700AA085700AA085700AA +085700AA085700AA085700AA085700AA085700AA085700AA085700AA085700AA085700AA +085700AA085700AA085700AA085700AA085700AA085700AA085700AA085700AA085700AA +085700AA085700AA085700AA085700AA085700AA085700AA085700AA085700AA085700AA +085700AA085700AA085700AA0959005F085700AA085700AA085700AA08570023085700AA +085700AA0CD500AA085700AA085700AA085700AA0857003A095900600857003A0857003D +0857003D0857003D0857003D0857003D0857003D0000FFB90000FCD70000FD730000FCB6 +0000FD0C0000FCCF0000FCCF0000FCC70000FCC70000FD9A0000FCE60000FC4E00960000 +019000000190000001900000009600000190000007DB0082023AFFEC026AFFEC08480082 +03D3FFEC040CFFEC06AC006B03D3FFEC040CFFEC023AFFEC026AFFEC01B6000007DB0082 +023AFFEC026AFFEC07DB0082023AFFEC026AFFEC052A009D04F2FFEC052AFFEC052A009D +04F2FFEC052AFFEC052A009D04F2FFEC052AFFEC052A009D04F2FFEC052AFFEC035F0000 +05FC00D50239000F02EEFEF2057801920578019205780192057801930578019305780192 +05780192057801760578018B057801760578018B057801760578018B0578018B05780176 +057801760578018305780183057801830578018B0000FC9A012C00000418000004E2FFAB +04E2FFAB060F00900270FFEC02A6FFEC06AB0082023AFFEC026AFFEC046AFFAB023900C1 +044A00910596007104E200710239009602CF004F02CFFF160239FFD3023900BF02B200F0 +038C009706B401AD000000C8000000C8000000C8000000C8000000C8000000C8000000DC +000000DC023A00C1023AFFEC023AFFEC049200710492FFEC0492FFEC0364003D0364FFEC +0364FFEC04BC003D04BCFFEC04BCFFEC053B00BA053BFFEC053BFFEC053B00BA053BFFEC +053BFFEC04C0007104C0FFEC04C0FFEC053B00BA053BFFEC053BFFEC06A1007106A1FFEC +06A1FFEC038100C10381FFEC0381FFEC0381003D0381FFEC0381FFEC047800BA0478FFEC +0478FFEC04E500C104E5FFEC04E5FFEC02CD003D02CDFFEC02CDFFEC07AC00C107ACFFEC +07ACFFEC03C8003D03C8FFEC03C8FFEC0644003D0644FFEC0644FFEC053B00BA053BFFEC +053BFFEC0500003D0500FFEC0500FFEC05DF00C105DFFFEC05DFFFEC043D00C1043DFFEC +043DFFEC05CB007005CBFFEC05CBFFEC03C8003D03C8FFEC03C8FFEC0500003D0500FFEC +0500FFEC04C0007104C0FFEC04C0FFEC043D00C1043DFFEC043DFFEC043D00C1043DFFEC +043DFFEC042E00C1042EFFEC042EFFEC04C0007104C0FFEC04C0FFEC04C0007104C0FFEC +04C0FFEC0000FCEC072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA072C00AA +072C00AA06B30197062E00C9056A00C1051200AE0433007D0433007D0433007D0433007D +0433007D046AFFAB046AFFAB046AFFAB046AFFAB046AFFAB0A33008206B4FFEC0723FFEC +0A33008206B4FFEC0723FFEC0A33008206B4FFEC0723FFEC09CD008206CBFFEC06F0FFEC +09CD008206CBFFEC06F0FFEC07980090065EFFEC0690FFEC0442007504C6FFEC03DCFFEC +0848008203D3FFEC040CFFEC0848008203D3FFEC040CFFEC0848008203D3FFEC040CFFEC +06AC006B03D3FFEC040CFFEC06AC006B03D3FFEC040CFFEC086E008206F2FFEC06F2FFEC +0729008203CFFFEC046BFFEC06BE009003CFFFEC046BFFEC06BE009003CFFFEC046BFFEC +0729008203CFFFEC046BFFEC0729008203CFFFEC046BFFEC0729008203CFFFEC046BFFEC +060F00900270FFEC02A6FFEC060F00900270FFEC02A6FFEC060F00900270FFEC02A6FFEC +06170093023AFFEC026AFFEC06170093023AFFEC026AFFEC06170093023AFFEC026AFFEC +03350135043F008F043F008F0334FFEC089000DD089000DD079F002305E400A508ED00A5 +0BF500A505E400A508ED00A50BF500A505E400A505E400A505E400A50947FFF80947FFF8 +094700C6094700C60B5000520B5000520B5000520EFE00A505E400A500A500A500A500A5 +00A500A500A500A500A5FFA300A500A500A500A50097000000><00000000000000440000 +00440000004400000044000000A800000114000001EC000003440000046C000006D40000 +072800000798000007F00000088C000008E000000918000009440000096C000009B80000 +0A3C00000AAC00000BAC00000C9400000D5000000E1000000EE800000F74000010480000 +111C0000115C000011AC0000122400001268000012E0000013B800001538000016340000 +16E40000177C000017FC0000185C000018B000001958000019B4000019FC00001A6C0000 +1B9400001BD800001CD400001D7C00001E0800001E8800001F5400002068000021600000 +21D00000225400002334000024F000002594000026580000271800002778000027C40000 +28180000285C00002888000028D800002A0400002A9C00002B3400002BCC00002CA00000 +2D3800002E0000002E7800002EC800002F44000030340000307000003134000031AC0000 +3250000032F0000033900000340000003560000035DC0000366000003784000039A80000 +3B2C00003CF800003DC400003EA000003ED000003FBC0000404000004040000040D40000 +41A0000042580000437000004494000044DC00004624000046DC00004800000048DC0000 +49A8000049E000004A0C00004B5800004BA400004C1C00004C8C00004D2C00004DE80000 +4E3800004EEC00004F4800004F7400004FD40000502C000050B400005184000051A40000 +51C4000051E4000052DC000052F40000530C000053380000536800005398000054D80000 +55B0000055C8000055E0000055F80000561C000056400000565800005670000056940000 +56B800005784000057B4000057CC000057E40000581000005844000058740000593C0000 +5A7400005A8C00005AA400005AD400005B0C00005B2400005BAC00005CD400005CF80000 +5D1C00005D3C00005D6800005DA000005DE000005F9C00005FB400005FCC00005FE40000 +60080000602C000060440000605C00006080000060A4000062540000626C000062840000 +629C000062BC000062E80000631400006370000064E4000064FC00006514000065340000 +65640000657C0000661C0000664C00006678000066A0000066CC000066EC000067040000 +671C000067340000674C0000677000006788000067A0000067B8000067DC000067F40000 +680C000068340000684400006900000069180000693C00006960000069840000699C0000 +69B4000069CC000069E400006A0800006A3400006A5800006A7C00006A9400006AAC0000 +6AD000006AE800006B0000006B1800006B4800006B8C00006C1400006CA800006CCC0000 +6CF000006D1400006D3800006D5C00006D8000006D9800006DB000006DE000006E2C0000 +6E5000006E7400006E9800006EBC00006ED400006EEC00006FDC00006FF40000702C0000 +70440000706800007080000070A4000070BC000070F00000716C000071FC000072200000 +72440000725C00007274000072A4000072D0000072E8000073800000741C000074480000 +746800007494000074B4000074CC000074E400007584000076AC000076C4000076DC0000 +76F40000770C00007730000077580000777000007788000077B0000077D4000077EC0000 +78040000782C000078540000786C00007884000078B0000078D400007958000079F40000 +7A2000007A4400007A7400007A9800007AC400007AE800007B0000007B2400007B3C0000 +7B5400007B6C00007B8400007BA800007BCC00007BF000007C1000007C3400007C4C0000 +7C6400007C7C00007CA400007CBC00007CE400007D3C00007E0800007ED000007EE00000 +7F9400008020000080C80000815800008218000082D4000082E400008378000083F40000 +849C00008574000085D00000868000008738000087B8000088700000893C00008A500000 +8B2000008B7C00008BEC00008CA800008DBC00008E1C00008F0400008FC4000090940000 +90A400009148000091600000917800009220000092CC0000936400009424000094E00000 +95B4000096FC0000970C000097A800009840000098D00000996C000099F800009A100000 +9A2800009AD400009B6000009C1C00009DEC00009EF40000A0000000A0E00000A1B00000 +A2C00000A32C0000A3A00000A4340000A4C00000A5340000A5C80000A6080000A6200000 +A6A00000A6B00000A6C80000A6E00000A6F80000A7100000A7280000A7400000A7580000 +A7700000A7880000A7A80000A7C80000A7F00000A8180000A8300000A8500000A8700000 +A8940000A8AC0000A8C40000A8DC0000A8F40000A90C0000A9240000A93C0000A9540000 +A9640000A97C0000A9940000A9AC0000A9C40000A9DC0000A9F40000AAC80000ABBC0000 +ABE80000AC000000AC180000AC5C0000AC740000AC8C0000ACA40000ACBC0000ACD40000 +ACEC0000AD140000AD2C0000AD440000AD5C0000AD740000AD8C0000AE240000AEBC0000 +AED40000AEEC0000AF040000AF1C0000AF340000AF4C0000AF640000AF7C0000AF940000 +AFAC0000AFC40000AFDC0000AFF40000B00C0000B0240000B03C0000B0540000B06C0000 +B0840000B09C0000B0B40000B0CC0000B0E40000B0FC0000B1140000B12C0000B1440000 +B15C0000B1740000B18C0000B1A40000B1BC0000B1D40000B1EC0000B2040000B21C0000 +B2A80000B33C0000B3540000B3980000B40C0000B4B00000B5BC0000B6A00000B78C0000 +B8840000B89C0000B8B40000B8CC0000B8E40000B8FC0000B9140000B92C0000B9440000 +B95C0000B9740000B98C0000B9A40000B9BC0000B9D40000BA280000BAAC0000BB140000 +BB780000BC580000BD3C0000BDAC0000BE440000BED40000BF400000BF940000C04C0000 +C0A40000C1280000C1B00000C28C0000C34C0000C35C0000C3C40000C4700000C50C0000 +C5A80000C6680000C7240000C84C0000C8D80000C9280000C9880000CAAC0000CB440000 +CBDC0000CC940000CD1C0000CDFC0000CEBC0000CF6C0000D0500000D0F40000D2140000 +D2240000D2340000D3500000D41C0000D4A40000D5880000D6400000D6DC0000D7D00000 +D8C40000D9400000D9D80000DA840000DAF80000DB080000DB5C0000DC080000DC900000 +DCE80000DE100000DEE00000DFB40000E0A40000E14C0000E1E00000E2880000E31C0000 +E3C80000E4780000E4880000E4F00000E5580000E5E40000E6580000E6E40000E7400000 +E79C0000E8B00000E9540000EA600000EAD40000EB800000EBE00000EC740000ECE80000 +ED680000EE0C0000EEC40000EF540000EFE40000F20C0000F2980000F3000000F3F00000 +F5100000F6240000F6B40000F7480000F7DC0000F8740000F9100000F99C0000F9AC0000 +FA7C0000FB3C0000FB4C0000FBDC0000FC140000FC500000FD080000FDC40000FE800000 +FF100000FFD80001009400010138000101C40001029400010328000103A00001046C0001 +04D000010540000105C400010660000106D400010764000107C4000108240001087C0001 +08F8000109640001099C000109E0000109F000010A0800010A1800010A2800010A600001 +0AC800010B3000010BB800010C4400010C6C00010C9400010CF800010D6C00010DC80001 +0E2400010E5400010E6400010E8000010EA000010ED000010EE400010F0400010F200001 +0F8C00010FDC00010FF000011004000110280001104C0001107800011094000111200001 +1188000111F4000112540001131400011380000113B8000113EC00011438000114600001 +14F8000115300001154000011574000115C0000116000001164C00011680000116940001 +16AC000116BC000116D00001179C000117F800011850000118B8000118CC000118E00001 +18F4000119080001194C000119C000011A3400011A4800011A5C00011AC400011AF00001 +1B0C00011B7C00011B9800011BE400011C0C00011C3400011C5800011C7400011C880001 +1C9C00011CC000011CE000011D0000011D7400011DC400011DE800011E0C00011E380001 +1E5400011E8400011EB400011ECC00011EE000011F4C00011F7000011F8400011F980001 +1FC000011FE40001202C00012068000120A4000120B8000120EC00012100000121140001 +21280001213C00012198000121B4000121D0000121F0000122100001225C000122800001 +22A8000122F00001232400012384000123A0000123B4000123C8000123DC000123EC0001 +240000012414000124380001246000012488000124A80001252400012598000125B00001 +25E8000126100001261000012650000126680001267C000126BC000126D0000127340001 +27480001275C0001277800012794000128080001281C0001284400012854000128640001 +2894000128C4000128F40001292400012934000129440001297800012988000129A00001 +29B8000129C800012A1800012A4800012A6000012A7000012A8C00012AA800012AC40001 +2ADC00012AF800012B1000012B2800012B3800012B4800012B8000012BEC00012BFC0001 +2C0C00012C1C00012CCC00012CDC00012CEC00012D5000012D6000012D7000012DD00001 +2DE000012DF000012E0000012E7C00012E8C00012E9C00012F5C00012F6C000130000001 +30B0000130D4000130F80001311000013128000131400001315800013170000132C00001 +335C000133DC000134C00001359000013634000136B000013778000137C8000138480001 +38CC000138DC0001396C00013A2800013A3800013AB400013B4800013BF400013C880001 +3CE800013D7400013E3400013F4000013FD4000140680001408000014098000140B00001 +40C8000140E000014120000141F000014298000143500001436C000143840001444C0001 +44FC000145A8000146600001470C000147B00001484C0001485C0001490C000149680001 +49D800014A5000014AAC00014BC400014C9C00014D3000014DBC00014E7000014F580001 +4FD000015040000150F4000151A400015238000152D000015340000153AC000154480001 +5500000155100001552000015530000155A00001560C0001561C0001562C0001563C0001 +570C000157980001581800015828000158400001585800015870000159100001599C0001 +59B400015A6000015A7000015A8000015A9000015AA000015B3800015BC800015C380001 +5C5000015C6800015C8000015CD800015CE800015D6800015D7800015DB000015E3C0001 +5E4C00015F4000015FF8000160A4000160E400016178000161D8000161E8000161F80001 +62080001625000016260000162700001628000016304000163B8000163C8000164200001 +647C000164D800016544000165C4000165DC00016650000166FC000167BC000168580001 +686800016930000169CC00016A0400016A8C00016A9C00016B8C00016C5000016CC00001 +6D0000016D9000016DF000016E7800016ED000016EE000016F2800016F3800016F480001 +6F8C00016F9C0001708400017094000170EC00017168000171C400017230000172AC0001 +72C400017334000173D80001747C0001750C00017524000175C400017668000176800001 +7724000177340001774400017754000177640001780000017894000179240001793C0001 +79540001796C000179C400017A9C00017AAC00017B4C00017BE000017C7000017CE00001 +7D2400017D6400017DC000017E1800017F0000017FE400018060000180D8000181C40001 +82A000018304000183680001837800018388000183D4000184240001843C000184540001 +84F80001857C000186740001876000018780000187A0000187B8000187D00001886C0001 +890400018950000189E800018A1C00018A4400018A6C00018AAC00018BF000018CAC0001 +8CC400018CDC00018D7800018E1800018E7800018F0000018F4000018F8400018FE40001 +9044000190D000019160000191C4000192240001923C0001925400019298000192DC0001 +932800019370000193BC00019408000194A800019548000195B800019624000196880001 +96E800019780000198180001990C000199E800019A0000019A1800019A7400019ACC0001 +9ADC00019B7800019BC000019C0400019C4C00019C9400019D0400019D7400019DE80001 +9E7400019EC400019F1000019F7000019F800001A05C0001A1580001A1F40001A28C0001 +A29C0001A2B40001A2CC0001A3280001A38C0001A3D80001A4240001A49C0001A5140001 +A5500001A58C0001A6040001A6940001A6E00001A72C0001A73C0001A7680001A7880001 +A7B80001A7F00001A8000001A8100001A8340001A8580001A8680001A8780001A8900001 +A8A80001A8C00001A8D80001A8F00001A9080001A9180001A9280001A9400001A9580001 +A9700001A9880001A9B80001A9E40001A9F40001AA040001AA1C0001AA340001AA4C0001 +AA640001AA7C0001AA940001AAAC0001AAC40001AADC0001AAF40001AB0C0001AB240001 +AB700001ABBC0001ABD40001ABEC0001AC780001AD040001AD640001ADC40001AE140001 +AE640001AEDC0001AF580001B0280001B0F40001B1D40001B2B80001B36C0001B4280001 +B4CC0001B56C0001B57C0001B6100001B6A00001B7280001B7AC0001B8340001B8440001 +B8540001B8D40001B9540001B9B80001BA200001BA800001BAF80001BB640001BBFC0001 +BC0C0001BC1C0001BC2C0001BC3C0001BC900001BCDC0001BD880001BE380001BEE00001 +BF8C0001BFBC0001BFEC0001C0640001C0BC0001C12C0001C1800001C1D80001C2500001 +C27C0001C2CC0001C3700001C3DC0001C4280001C44C0001C4AC0001C5600001C5AC0001 +C6080001C6C80001C7180001C7980001C7EC0001C8880001C8DC0001C9640001C9B00001 +CA200001CA7C0001CB280001CB800001CB900001CBE40001CC900001CCDC0001CD940001 +CDBC0001CE3C0001CEC40001CED40001CF740001CFAC0001CFD00001CFEC0001D0340001 +D0480001D0C00001D0E00001D15C0001D1A80001D2240001D26C0001D2C00001D3480001 +D3740001D3B80001D4600001D4D40001D5180001D5380001D5B40001D6400001D6840001 +D6940001D7580001D7A00001D8500001D89C0001D8C80001D9140001D99C0001D9AC0001 +DA3C0001DAB80001DB740001DBE00001DBF00001DC3C0001DCB00001DCF80001DD080001 +DD280001DDA00001DE240001DE340001DEDC0001DF280001DF4C0001DF740001DFB40001 +DFE40001E0380001E09C0001E0C40001E0EC0001E16C0001E1980001E1D40001E1FC0001 +E20C0001E26C0001E2980001E2C40001E2E00001E30C0001E3440001E3700001E3980001 +E3E00001E4300001E46C0001E5540001E5D00001E6700001E6C00001E73C0001E7780001 +E7F00001E8600001E9200001E9600001E9D40001EA5C0001EAC00001EB340001EC100001 +EC500001ECB40001ED640001EDFC0001EEA80001EF700001F0080001F0CC0001F1580001 +F1D80001F2F00001F3980001F3B00001F3C80001F3E00001F4100001F4580001F4F80001 +F5A80001F5E80001F6340001F6540001F6B00001F6E00001F7500001F7C00001F7D80001 +F7F00001F8080001F8200001F8380001F8540001F86C0001F8840001F89C0001F8B40001 +F8CC0001F9340001F94C0001F9A00001F9B80001F9FC0001FA140001FAD40001FAEC0001 +FBB00001FBC80001FC340001FC4C0001FCCC0001FCE40001FCFC0001FD140001FD2C0001 +FDE80001FE480001FED40001FEEC0001FF540001FFD40002008000020098000200C40002 +01640002018C000201A80002023400020250000202CC00020310000203580002036C0002 +03800002040C000204340002045000020480000204D800020554000205D8000206400002 +0688000206D800020728000207A0000207D400020814000208380002086C000208D00002 +09800002099C000209F000020A0800020A2000020A3800020A5800020A7000020A880002 +0AA000020AB800020AD000020AE800020B0000020B1800020B3000020B4800020B600002 +0B7800020B9000020BA800020BC800020BE000020BF800020C1000020C2800020C400002 +0C5800020C7000020C8800020CA000020CB800020CD800020CF000020D0800020D200002 +0D4000020D5800020D7800020D9000020DA800020DC000020DD800020E9400020EAC0002 +0ECC00020EE400020EFC00020F1400020F2C00020F4400020FD800021070000210880002 +10A0000210B8000210D0000210E800021100000211180002113000021148000211600002 +117800021190000211A8000211C0000211E0000212400002125800021278000212900002 +13500002137000021388000213A0000213B8000213D0000213E0000213F8000214100002 +142000021430000214400002145000021460000214E000021560000215C4000215D40002 +15E4000215F400021678000216D00002171C00021764000217B0000217F4000218340002 +1884000218E00002197C000219AC00021A2800021A8000021AA800021AEC00021B340002 +1BE400021C4000021CD000021D2400021D7800021DF000021E7000021ECC00021F680002 +1FC0000220400002208C000220F800022194000221EC00022278000222BC000223280002 +23A8000223F000022440000224A40002255C000225E40002261000022658000226800002 +26DC0002274800022790000227F80002282000022860000228A4000228E4000229280002 +2984000229B000022A5000022B1400022BE400022C8C00022D3400022DE800022EC40002 +2F900002301C000230E0000231A4000232640002330C000233A800023444000235140002 +35C4000236880002374C000237C00002388C0002394C00023A2C00023AD400023B9C0002 +3C5800023D1400023DF400023E7C00023E9800023F2800023FA400023FBC000240200002 +4090000241080002418C000241D400024250000242B40002432C000243C80002445C0002 +4474000244F80002459C00024610000246C4000246EC00024774000248100002485C0002 +4870000248BC00024920000249A000024A1800024AA400024B2800024BCC00024C8C0002 +4CFC00024E0000024E6C00024F5400025064000250CC0002511800025168000251DC0002 +522400025278000252DC0002534000025368000253CC0002543C000254B0000255040002 +558C000255D40002562400025680000256CC00025724000257A80002582C0002586C0002 +58B0000258F00002595400025994000259FC00025A6800025AC000025B3000025B780002 +5BC000025C1000025C4C00025CBC00025CFC00025D4C00025DE800025E3000025E940002 +5F1000025F9C00025FEC00026058000260D00002613C00026180000261E0000262800002 +62E800026344000263AC0002640800026464000264E4000265300002659C000266040002 +66B00002670800026784000267E000026860000268BC0002692C00026978000269F40002 +6A6C00026AB800026B3000026BA400026C1800026C7800026CDC00026D5400026DD40002 +6E4C00026EB800026F1400026F9000026FF0000270200002706C000270D8000270F00002 +710000027118000271840002719C000271B4000271CC0002723C000272540002726C0002 +72840002729C000272B4000272CC000272E4000272FC000273140002732C000273440002 +735C000273740002738C000273A4000273BC000273D4000273EC00027418000274380002 +745800027494000274D00002750C0002755000027584000275CC000275E4000276000002 +762C00027650000276680002768000027698000276B0000276C0000276D8000276E80002 +7700000277640002777C00027794000277AC000278100002782800027840000278580002 +787000027888000278A0000278B8000278D0000278E80002790000027918000279300002 +7948000279600002797800027990000279F400027A2400027A3400027A4C00027AB80002 +7AD000027B3800027B5000027B6800027B8000027BE800027C0000027C1800027C300002 +7C4800027C6000027C7800027C9000027CA800027CC000027CD800027CF000027D080002 +7D2000027D3800027D5000027D6800027DC400027DDC00027DF400027E0C00027E240002 +7EA000027EB800027F3400027F4C00027FCC00027FE400027FFC0002807C000280940002 +80AC000280C4000280DC000280F40002810C000281240002813C000281540002816C0002 +81840002819C000281B4000281CC000281E4000281FC00028274000282C8000282E00002 +82F800028310000283280002837C00028394000283EC000284040002845C000284740002 +848C000284E4000284FC000285140002852C000285440002855C000285740002858C0002 +85A4000285BC000285D4000285EC000286040002861C000286340002864C000286640002 +86BC000286F40002872C000287440002877C00028794000287CC000287E4000287FC0002 +880C000288240002883C000288540002886C000288840002889C000288B4000288CC0002 +88E4000288FC000289140002892C000289440002895C000289740002898C000289C80002 +8A2800028A4800028AC400028ADC00028B5C00028B7400028BEC00028C0400028C1C0002 +8C9400028CAC00028CC400028CDC00028CF400028D0C00028D2400028D3C00028D540002 +8DA400028DE400028E3800028E8C00028EA400028EF800028F1000028F6400028F7C0002 +8F9400028FE8000290000002901800029030000290480002906000029078000290900002 +90A8000290C0000290D8000290F000029108000291200002913800029150000291880002 +91C4000292180002923000029288000292A0000292F40002930C000293240002937C0002 +9394000293AC000293C4000293DC000293F40002940C000294240002943C000294540002 +946C000294840002949C000294B4000294CC000294E4000294FC0002954C000295D00002 +96040002965C000296B4000296CC0002974800029760000297E0000297F8000298100002 +982800029840000298580002987000029888000298A0000298B8000298D0000298E80002 +9900000299180002993000029948000299BC00029A1400029A2C00029A8800029AA00002 +9AFC00029B1400029B2C00029B8800029BA000029BB800029BD000029BE800029C000002 +9C1800029C3000029C4800029C6000029C7800029C9000029CA800029CC000029CD80002 +9CF000029D0800029D6800029D7800029DB400029E2000029E8C00029EF000029F080002 +9F6C00029F8400029FEC0002A0040002A06C0002A0D40002A0EC0002A1500002A1680002 +A1800002A1EC0002A2280002A2DC0002A2F40002A3A80002A3C00002A4780002A4900002 +A5440002A55C0002A5740002A58C0002A5F80002A6740002A6F00002A76C0002A7E80002 +A8000002A8180002A8940002A8AC0002A92C0002A9440002A95C0002A9740002A9EC0002 +AA500002AAB80002AAD00002AB340002AB4C0002ABB00002ABC80002AC280002AC380002 +AC480002AC600002AC780002AC900002ACA80002ACC00002ACD80002ACF00002AD080002 +AD880002AE080002AE8C0002AF140002AF2C0002AF440002AF5C0002AF740002AF8C0002 +AFA40002AFBC0002B0300002B0DC0002B15C0002B1740002B1F00002B2080002B2880002 +B2A00002B2E40002B3200002B35C0002B3740002B3B00002B3C80002B4040002B41C0002 +B4580002B4DC0002B4EC0002B55C0002B58C0002B5EC0002B6240002B63C0002B6540002 +B66C0002B6840002B69C0002B6B40002B6CC0002B6E40002B7000002B7280002B7580002 +B7940002B7D80002B8280002B8500002B8800002B8BC0002B9000002B9500002B9840002 +B9D00002BA340002BAB00002BB440002BB740002BBB80002BC100002BC7C0002BCFC0002 +BD440002BD9C0002BDD40002BE6C0002BF440002BF6C0002BFA00002BFD40002C00C0002 +C05C0002C1380002C1A40002C1B40002C1FC0002C2540002C2840002C3140002C3380002 +C3740002C3840002C3BC0002C3CC0002C3DC0002C3EC0002C3FC0002C4540002C4AC0002 +C53C0002C5F80002C6300002C6680002C6AC0002C71C0002C78C0002C79C0002C7D80002 +C81C0002C8780002C8EC0002C8FC0002C90C0002C91C0002C96C0002C98C0002C99C0002 +C9C40002C9D40002CA300002CA400002CA740002CAC00002CB3C0002CB8C0002CBBC0002 +CBEC0002CC5C0002CC8C0002CCA80002CCD80002CD0C0002CD2C0002CD640002CD940002 +CDC40002CE240002CEE00002CF2C0002CF980002CFC00002D0040002D03C0002D0BC0002 +D1440002D1AC0002D2840002D2E80002D3500002D3C40002D46C0002D5000002D5900002 +D6240002D6480002D67C0002D7180002D7AC0002D8300002D8980002D8D40002D90C0002 +D9700002D9B00002D9FC0002DA480002DAC40002DAEC0002DB4C0002DB840002DC0C0002 +DC880002DCE00002DCF40002DD080002DD1C0002DD300002DD440002DD580002DDB40002 +DDC80002DDDC0002DE5C0002DE6C0002DEAC0002DF380002DF740002DFDC0002E03C0002 +E0C00002E1500002E1E00002E2240002E2680002E2F00002E33C0002E3740002E3A40002 +E3D00002E40C0002E4640002E4980002E4D80002E4F80002E5900002E60C0002E66C0002 +E6D00002E7000002E7700002E8000002E8A80002E8F80002E9500002E9B80002EA300002 +EA740002EAD80002EB000002EB300002EB7C0002EBD80002EC440002ECB00002ECD00002 +ECF40002ED180002ED380002ED640002ED940002EDAC0002EDC40002EDDC0002EDF40002 +EE0C0002EE240002EE3C0002EE540002EE6C0002EE840002EE9C0002EEB40002EECC0002 +EEE40002EEFC0002EF140002EF2C0002EF440002EF5C0002EF740002EF8C0002EFA40002 +EFBC0002EFD40002EFEC0002F0040002F01C0002F0340002F0540002F0740002F08C0002 +F0A40002F0BC0002F0D40002F0EC0002F1040002F11C0002F1340002F14C0002F1640002 +F17C0002F1940002F1AC0002F1C40002F1DC0002F1F40002F20C0002F2240002F23C0002 +F2540002F26C0002F2840002F29C0002F2B40002F2CC0002F2E40002F3040002F31C0002 +F3340002F34C0002F3640002F37C0002F3940002F3AC0002F3C40002F3DC0002F3F40002 +F40C0002F4240002F43C0002F4540002F46C0002F4840002F49C0002F4B40002F4CC0002 +F4E40002F4FC0002F5140002F5340002F54C0002F5640002F57C0002F5940002F5AC0002 +F5C40002F5DC0002F5F40002F60C0002F6240002F63C0002F6540002F66C0002F6840002 +F69C0002F6B40002F6CC0002F6E40002F6FC0002F7140002F7340002F7540002F76C0002 +F7840002F79C0002F7B40002F7CC0002F7E40002F7FC0002F8140002F82C0002F8440002 +F85C0002F8740002F88C0002F8A40002F8BC0002F8D40002F8EC0002F9040002F91C0002 +F9340002F94C0002F9640002F97C0002F9940002F9AC0002F9C40002F9DC0002F9F40002 +FA0C0002FA240002FA3C0002FA540002FA6C0002FA840002FA9C0002FAB40002FACC0002 +FAE40002FAFC0002FB140002FB2C0002FB440002FB5C0002FB740002FB8C0002FBA40002 +FBBC0002FBD40002FBEC0002FC040002FC1C0002FC340002FC4C0002FC640002FCB40002 +FCFC0002FD940002FDA40002FDBC0002FDD40002FDEC0002FE040002FE1C0002FE340002 +FE4C0002FE640002FE7C0002FE940002FEAC0002FEC40002FEDC0002FEF40002FF0C0002 +FF240002FF3C0002FF540002FF6C0002FF840002FF9C0002FFB40002FFCC0002FFE40002 +FFFC000300140003002C000300440003005C000300740003008C000300A4000300BC0003 +00D4000300EC000301040003011C000301340003014C0003016C000301840003019C0003 +01B4000301CC000301E4000301FC000302140003022C000302440003025C000302740003 +028C000302A4000302BC000302D4000302EC00030304000303240003033C000303540003 +036C000303840003039C000303B4000303CC000303E4000303FC000304140003042C0003 +04440003045C000304740003048C000304A4000304BC000304D4000304EC000305040003 +051C000305340003054C000305640003057C00030594000305AC000305C4000305DC0003 +05F40003060C00030624000306500003068C000306A4000306BC000306D4000306EC0003 +07040003071C000307340003074C000307640003077C00030798000307B0000307CC0003 +07E800030800000308180003083000030848000308600003087800030890000308A80003 +08C4000308E0000308FC00030914000309300003094C000309640003097C000309940003 +09AC000309C4000309DC000309F400030A0C00030A2800030A4400030A6000030A780003 +0A9400030AB000030ACC00030AE800030B0000030B1800030B3000030B4800030B600003 +0B7800030B9000030BA800030BC400030BE000030BFC00030C1400030C3000030C4C0003 +0C6800030C8400030C9C00030CB400030CCC00030CE400030CFC00030D1400030D2C0003 +0D4400030D6000030D7800030D9400030DB000030DC800030DE000030DF800030E100003 +0E2800030E4000030E5800030E7000030E8C00030EA400030EC000030EDC00030EF40003 +0F0C00030F2400030F3C00030F5400030F6C00030F8400030F9C00030FB400030FD00003 +0FEC00031004000310200003103C00031058000310740003108C0003109C000310B40003 +10C4000310DC000310EC00031104000311140003112C0003113C00031154000311640003 +117C0003118C000311A4000311BC000311D4000311EC000312040003121C000312340003 +124C000312640003127C00031294000312AC000312C4000312DC000312F40003130C0003 +13240003133C000313540003136C000313840003139C000313B4000313CC000313E40003 +13FC000314140003142C000314440003145C000314740003148C000314A4000314BC0003 +14D4000314EC000315040003151C000315340003154C000315640003157C000315940003 +15AC000315C4000315DC000315F40003160C000316240003163C000316540003166C0003 +16840003169C000316B4000316CC000316E4000316FC0003170C00031724000317340003 +1744000317B4000317C4000317DC000317F40003180C000318240003183C000318540003 +1870000318800003189C000318AC000318C4000318E0000318F800031910000319280003 +194000031958000319680003198000031998000319B0000319C8000319E4000319F40003 +1A1000031A2800031A4000031A5800031A7000031A8800031A9800031AB000031AC80003 +1AE000031AF800031B1000031B2800031B4400031B5400031B7000031B8800031B980003 +1BA800031BC000031BD800031BF000031C0800031C2000031C3C00031C4C00031C680003 +1C7800031C9000031CA000031D0C00031D0C00031D0C00031D0C00031D0C00031D0C0003 +1D0C00031D0C00031D0C00031D0C00031D0C00031D0C00031D0C00031D0C00031D0C0003 +1D0C00031D0C00031D3800031D4800031D7400031DA000031DCC00031DF400031E0C0003 +1E2400031E6000031E9C00031ED400031EF800031F5400031FB00003200C000320400003 +20980003211C0003215C00032178000321A0000321E0000322340003224C0003224C0003 +224C0003224C0003224C0003224C0003224C0003224C0003224C000323D8000324E80003 +250800032520000325400003255C0003257400032594000325B8000326280003269C0003 +26CC000326E80003276400032778000327D8000328380003286400032888000328A40003 +28EC0003291C0003294C000329640003297C0003299800032A0400032A3C00032A6C0003 +2A9C00032AB000032AE000032AF800032B1400032B3800032B9800032BAC00032C000003 +2C3400032C5C00032C9C00032CE800032D0C00032D4800032DAC00032DDC00032E180003 +2E1800032E1800032E1800032E1800032E1800032E1800032E1800032E1800032E180003 +2E1800032E1800032E1800032E6C00032EB000032FBC00033020000330B0000330D80003 +31880003321400033248000332640003328C000332C40003330000033374000333880003 +339C000333B0000333C4000333D8000333EC0003340000033414000334280003343C0003 +345000033464000334780003348C000334A0000334B4000334C8000334DC000334F00003 +3504000335180003352C0003354000033554000335680003357C00033590000335A40003 +3618000336C80003375800033798000338000003388400033908000339EC00033ABC0003 +3B6800033BCC00033BE400033D9800033DE000033E3800033FC400034060000340F80003 +418C000341F800034298000343280003435C000343DC00034440000344A0000344C40003 +44E40003450C000345340003456C000345B0000345E8000346A800034780000347F80003 +481000034938000349D400034A6C00034A7C00034A9000034AA800034BE800034CD80003 +4D2800034D8400034DE400034E9000034F24000350040003508400035100000351440003 +53EC0003549400035548000355B800035658000357700003586C0003591C00035A340003 +5ADC00035B7C00035BDC00035C6800035CBC00035CFC00035D6800035D7800035D880003 +5E7C00035EB000035EC000035ED000035FC80003608C0003611400036190000362580003 +633800036364000364A8000364FC000365A000036630000366BC000367340003677C0003 +67F000036874000369080003697C000369AC000369F000036A4400036AB400036AEC0003 +6B2400036B5000036BD400036C8400036D2400036D5C00036DC400036E5C00036EAC0003 +6ECC00036EEC00036F1400036F3400036F5400036F7400036F9400036FB400036FD40003 +6FF40003701400037034000370540003707400037094000370AC000370BC000370D40003 +70F40003710C0003711C00037134000371540003717C00037194000371A4000371BC0003 +71DC000371EC000371FC0003720C0003721C0003722C00037244000372640003727C0003 +728C000372A4000372C4000372EC00037304000373140003732C0003734C0003735C0003 +736C0003737C0003738C000374100003758C0003766C0003767C0003768C000376F80003 +7718000377C80003787800037928000379D800037AF800037C1C00037C4C00037C7C0003 +7CAC00037CDC00037D2800037D7400037E1C00037EC400037F1000037F5C00037FA80003 +7FF40003803C00038088000380C400038100000381C40003820000038254000382D40003 +836000038424000384E8000385FC0003865C000386A4000386DC000387140003874C0003 +8784000387BC000387F400038878000388F800038934000389A000038A4800038AF00003 +8B6000038BD000038BF800038C2000038C9400038D0400038D2800038D4C00038D680003 +8D8400038DA000038DE800038E3000038E7800038EC000038EDC00038EF800038F600003 +8FE00003904800039088000390C80003910800039148000391A400039200000392400003 +9280000392C0000393000003934000039380000393DC0003943800039490000394E80003 +953000039578000395C4000396100003964C00039688000396CC00039710000397500003 +9790000397F400039848000398A80003990800039974000399F400039A4800039A8C0003 +9AD000039B2C00039C0800039C2400039C8400039CC800039D1000039D6C00039DC40003 +9E2000039E9000039EC400039EF800039F4800039F840003A0580003A0F00003A1240003 +A18C0003A24C0003A2B00003A2E00003A3440003A3E80003A43C0003A4A00003A5440003 +A5980003A5C00003A6040003A6480003A6E00003A70C0003A7480003A7DC0003A7EC0003 +A8000003A84C0003A8600003A8700003A8D00003A8E80003A9000003A9980003AA500003 +AA700003AA940003AB400003ABEC0003AC080003AC740003AC9C0003AD600003AD8C0003 +ADB40003ADF40003AE340003AE840003AE9C0003AEBC0003AF880003B0C00003B2680003 +B3080003B3D00003B4980003B4BC0003B4E00003B4FC0003B5280003B5400003B5740003 +B5A40003B5C40003B6240003B6840003B7000003B7480003B7A80003B8080003B8740003 +B8DC0003B95C0003B9D00003BA640003BAF40003BBE80003BC880003BD380003BE200003 +BE940003BEEC0003BFA80003C01C0003C0340003C0540003C0740003C0940003C0B80003 +C0D80003C1340003C1A00003C1E80003C22C0003C26C0003C2B80003C2FC0003C3DC0003 +C4600003C4EC0003C5780003C5D00003C6300003C69C0003C72C0003C7B80003C8000003 +C8400003C8A80003C90C0003C9540003C9980003CA200003CA8C0003CAE00003CB340003 +CBA00003CC0C0003CC8C0003CD040003CDB80003CE6C0003CEB00003CEF80003CF840003 +D00C0003D0480003D0800003D0D40003D1240003D1B40003D2400003D2B00003D3200003 +D3640003D3A80003D4140003D4800003D4D40003D5240003D5A00003D6200003D68C0003 +D6F80003D7580003D7700003D7D00003D8100003D8540003D8880003D8BC0003D8E40003 +D9080003D9D40003DA880003DB580003DC140003DCC80003DDB00003DE940003DF540003 +E0080003E0580003E0940003E0F80003E1300003E16C0003E1900003E1B80003E1DC0003 +E2000003E2300003E2600003E2900003E2D00003E30C0003E3500003E3AC0003E4000003 +E46C0003E4F00003E5780003E5A80003E5D40003E60C0003E6440003E6B00003E71C0003 +E76C0003E7B00003E7D40003E8080003E8400003E8740003E8C80003E8F80003E9240003 +E9500003E9B40003EA140003EA480003EA740003EAA80003EB140003EB580003EB980003 +EBD80003EC040003EC340003EC980003ECD00003ED080003ED8C0003EE100003EE880003 +EF000003EF5C0003EFC00003EFF80003F02C0003F0940003F0F40003F14C0003F1A00003 +F1D80003F2100003F2640003F2B80003F34C0003F3E00003F4480003F4B00003F4FC0003 +F5480003F5C00003F6380003F6C00003F7480003F7A00003F7F80003F86C0003F8DC0003 +F9000003F9200003F9440003F9680003F9DC0003FA440003FA9C0003FAB40003FB280003 +FB880003FBFC0003FC680003FCDC0003FD440003FDA00003FE140003FE780003FEAC0003 +FF240003FF500003FF880003FFB80003FFE40003FFFC0004001C00040074000400940004 +00B4000400D4000400F40004011C000401440004016C00040194000401B4000402080004 +0304000403280004034C0004036C0004038C000403AC000404040004045C000404A80004 +04E00004054C000405AC00040A6400040AD000040B4400040B5400040B6400040B740004 +0B8400040BB400040C0000040C4400040C7C00040C9800040CD000040D0800040D240004 +0D5C00040D7C00040D9800040DBC00040DE000040DFC00040E1C00040E5000040EA80004 +0EE000040EFC00040F3400040F8C00040FC000040FDC000410300004105C000411040004 +111400041180000411F40004121C0004138C0004159000041820000419B000041BBC0004 +1E2000041F9800042294000424FC0004276800042784000427A0000427BC000427D80004 +280C000428440004287C000428B8000428F00004293000042978000429C4000429E80004 +2A0C00042A3000042A5400042A7800042A9C00042AC000042AE400042B0400042B280004 +2B4C00042B7000042B9000042BB000042BD000042BF400042C1C00042C4400042C700004 +2C9C00042CC400042CF400042D2000042D4800042D7000042D9800042DC400042DF00004 +2E1800042E4800042E7400042E9C00042EC400042EF000042F1C00042F4400042F6C0004 +2F9800042FC400042FEC000430100004303C0004306800043090000430B8000430E40004 +311000043138000431680004319C000431D000043204000432380004326C000432A00004 +32D8000433100004334800043380000433B4000433E80004341C00043450000434840004 +34A8000434D4000435000004352C000435540004357C000435A8000435D4000436080004 +36340004366000043694000436C0000436EC000437200004374C00043778000437AC0004 +37DC000438100004385400043884000438B8000438F80004392C0004395C0004399C0004 +39D000043A0000043A4000043A8800043ACC00043B2800043B5800043B8800043BB80004 +3BE800043C0800043C2400043C6400043C8000043C9C00043CB800043CD400043CF00004 +3D0C00043D2800043D4400043D6800043D9000043DB400043DDC00043DF000043E0C0004 +3E2800043E4400043E6000043E7C00043E9800043EB400043ED000043EEC00043F080004 +3F2400043F4000043F5C00043F7800043F9400043FA80004405C00044370000444180004 +442C000444400004445C0004447800044494000444B8000444E000044504000445280004 +45440004456C00044590000445AC000445D80004462C000446440004469C000446FC0004 +4838000448C00004494800044B0800044B2400044B5000044B6C00044B9800044BB40004 +4BE000044C0000044C3400044C5000044C7800044C9400044CBC00044CD800044D040004 +4D2000044D4C00044D6800044D9400044DB000044DDC00044DF800044E2400044E400004 +4E6C00044E8800044EB400044ED000044EFC00044F1C00044F5000044F94000450240004 +5078000450E0000451D80004528C00045348000453AC000454040004545C000454B80004 +55140004557C000455CC000455F40004561C00045658000456D000045724000457780004 +57A4000457D0000457FC0004582C00045870000458B4000458D0000458EC000459040004 +591C0004596400045990000459BC000459E400045A0C00045A4800045A8C00045AB80004 +5AE000045B4C00045B8C00045BCC00045C0C00045C4C00045CCC00045D4C00045DCC0004 +5E4C00045E7400045E9C00045EC400045EF000045F0C00045F3800045F5400045F7C0004 +606C000460D80004619000046A7400046D5800046D9000046DF400046E4400046EA80004 +6F3C00047008000470D400047138000471DC000474600004774000047778000477F00004 +7864000478BC00047A1C00047BC800047C1000047C4400047D3800047E0C00047EA40004 +7F3C00048000000480C80004818C00048250000485D80004865400048778000489180004 +8C8000048D0000048D8800048DFC00048E6000048EE400048F74000490BC000491EC0004 +92880004931C000493D0000493F000049410000494300004945000049470000494900004 +94B0000494D00004964400049720000497FC000498A8000499C400049A5800049AE80004 +9BA000049C1800049C9000049D0400049D5C00049DB800049E4C00049EF800049F600004 +9FD40004A06C0004A0D00004A1900004A2700004A3400004A3B40004A4580004A4B40004 +A5500004A63C0004A6BC0004A7E40004AA100004AAAC0004ABC80004AD100004AE240004 +AFB80004B0B00004B1300004B1F80004B2E00004B3740004B3E80004B48C0004B4D40004 +B5740004B63C0004B6900004B6C00004B7E40004B8D00004B9100004B96C0004B9D00004 +BA300004BA840004BAD00004BB640004BC240004BD0C0004BF180004C00C0004C1300004 +C26C0004C36C0004C4900004C5C40004C6B40004C7880004C8940004C9CC0004CB240004 +CC280004CCC40004CD340004CDE80004CEDC0004D0140004D1900004D3500004D3EC0004 +D4AC0004D5140004D5A00004D5BC0004D5E40004D5FC0004D6140004D62C0004D6440004 +D6C40004D7140004D7980004D8900004D93C0004DA600004DB1C0004DBA40004DC480004 +DD500004DF380004E1FC0004E3BC0004E4000004E4400004E4C40004E5100004E5F00004 +E6D80004E7C00004E8500004E9300004EA440004EB200004EBFC0004EC700004ECB80004 +ED300004EE340004EF800004F0C40004F1000004F1840004F1DC0004F2380004F2900004 +F3000004F3680004F3D00004F4380004F4E00004F5C00004F6D40004F8440004F8DC0004 +FA6C0004FBD00004FD5C0005011C000502A800050420000504AC0005055C000508140005 +09B400050ACC00050BB800050CCC00050DB400050E3C00050EA000050F0800050F4C0005 +0F8C0005105800051150000511D0000512040005124000051284000512B4000513140005 +13940005147800051510000515CC0005174C000518D000051C3000051C9000051D400005 +1DA800051E3400051EC400051F8400052010000520900005210C0005217C000521D00005 +22380005229C000522F4000523B8000523FC00052454000524A400052514000525D00005 +277C0005297000052A9C00052CCC00052E2C000530A4000535F800053730000539800005 +3A4400053B0C00053BE000053D6400053EE400054044000541A4000542F00005445C0005 +44C8000545340005459C000546040005466800054684000546A0000546BC000546FC0005 +4748000547600005477800054854000548EC000549A800054A1800054A8C00054BAC0005 +4C9400054D0000054D7000054DAC00054DE800054E1000054E3C00054E6400054E900005 +4EB800054EE400054F1000054F3C00054FA000055004000550800005512C0005526C0005 +52F40005540C000555A00005561400055860000559EC00055B6000055C3400055D380005 +5E5000055F2C0005602C00056144000562100005633C0005645400056584000566040005 +66B40005677C00056808000568B800056980000569F800056AD000056B9800056C5C0005 +6C8C00056CB800056CE400056D1000056D4000056DCC00056DF400056E1C00056E700005 +6EC400056EEC00056F1C00056F4C00056F6C00056FBC0005700C00057038000570680005 +70B0000570F80005714C0005719C000571E80005723800057290000572E8000573540005 +73F80005745000057498000574F00005757C000575FC0005768800057758000577E80005 +791000057A3C00057AC800057B2800057B8800057BC400057BF800057C2C00057C540005 +7C7C00057C9400057CAC00057D0400057D5800057E1C00057EDC00057FD8000580880005 +81380005825800058298000582D80005833400058370000583AC000583F8000584440005 +84C8000584C8000584DC000584F00005850C000585200005853C000585580005857C0005 +8590000585AC000585C8000585EC000586080005862C000586500005867C000586900005 +86AC000586C8000586EC000587080005872C000587500005877C00058798000587BC0005 +87E00005880C000588300005885C00058888000588BC000588D0000588EC000589080005 +892C000589480005896C00058990000589BC000589D8000589FC00058A2000058A4C0005 +8A7000058A9C00058AC800058AFC00058B1800058B3C00058B6000058B8C00058BB00005 +8BDC00058C0800058C3C00058C6000058C8C00058CB800058CEC00058D1800058D4C0005 +8D8000058DBC00058DD000058DEC00058E0800058E2C00058E4800058E6C00058E900005 +8EBC00058ED800058EFC00058F2000058F4C00058F7000058F9C00058FC800058FFC0005 +90180005903C000590600005908C000590B0000590DC000591080005913C000591600005 +918C000591B8000591EC000592180005924C00059280000592BC000592D8000592FC0005 +93200005934C000593700005939C000593C8000593FC000594200005944C000594780005 +94AC000594D80005950C000595400005957C000595A0000595CC000595F80005962C0005 +96580005968C000596C0000596FC000597280005975C00059790000597CC000598000005 +983C00059878000598BC000598D0000598EC000599080005992C000599480005996C0005 +9990000599BC000599D8000599FC00059A2000059A4C00059A7000059A9C00059AC80005 +9AFC00059B1800059B3C00059B6000059B8C00059BB000059BDC00059C0800059C3C0005 +9C6000059C8C00059CB800059CEC00059D1800059D4C00059D8000059DBC00059DD80005 +9DFC00059E2000059E4C00059E7000059E9C00059EC800059EFC00059F2000059F4C0005 +9F7800059FAC00059FD80005A00C0005A0400005A07C0005A0A00005A0CC0005A0F80005 +A12C0005A1580005A18C0005A1C00005A1FC0005A2280005A25C0005A2900005A2CC0005 +A3000005A33C0005A3780005A3BC0005A3D80005A3FC0005A4200005A44C0005A4700005 +A49C0005A4C80005A4FC0005A5200005A54C0005A5780005A5AC0005A5D80005A60C0005 +A6400005A67C0005A6A00005A6CC0005A6F80005A72C0005A7580005A78C0005A7C00005 +A7FC0005A8280005A85C0005A8900005A8CC0005A9000005A93C0005A9780005A9BC0005 +A9E00005AA0C0005AA380005AA6C0005AA980005AACC0005AB000005AB3C0005AB680005 +AB9C0005ABD00005AC0C0005AC400005AC7C0005ACB80005ACFC0005AD280005AD5C0005 +AD900005ADCC0005AE000005AE3C0005AE780005AEBC0005AEF00005AF2C0005AF680005 +AFAC0005AFE80005B02C0005B0700005B0BC0005B1080005B1540005B19C0005B1E00005 +B2AC0005B3740005B4580005B5380005B5840005B5C00005B5FC0005B6300005B6640005 +B68C0005B6C00005B6F40005B7140005B75C0005B7B40005B8740005B9480005BA2C0005 +BA540005BABC0005BB380005BBA40005BC500005BCF00005BD640005BDF40005BE880005 +BF2C0005BFB00005C0480005C0C40005C14C0005C1D00005C2300005C2900005C2A00005 +C2B80005C2D80005C3140005C34C0005C3640005C37C0005C3940005C3AC0005C3C40005 +C3DC0005C4AC0005C5780005C5C80005C6180005C6DC0005C7980005C7FC0005C8580005 +C8DC0005C95C0005C9EC0005CA7C0005CAD80005CB3C0005CBA40005CC080005CC440005 +CC800005CC980005CCB00005CCF40005CD3C0005CD840005CDD40005CE4C0005CEC80005 +CF5C0005CFF40005D0780005D0C00005D1040005D1680005D1C80005D21C0005D2700005 +D2E80005D35C0005D43C0005D51C0005D5EC0005D6BC0005D7080005D7500005D7980005 +D7E00005D8280005D8700005D8CC0005D8F40005D91C0005D9440005D9700005D99C0005 +D9C80005D9F40005DA2C0005DA640005DA980005DAD00005DB080005DB3C0005DB680005 +DB940005DBC00005DBE80005DC180005DC480005DC780005DCA80005DD540005DD780005 +DDB40005DDF80005DE200005DE4C0005DE880005DEAC0005DEE80005DF300005DF700005 +DFE00005E03C0005E1780005E2280005E2840005E2940005E2E40005E3240005E3640005 +E3980005E3CC0005E4640005E4B40005E4EC0005E54C0005E5980005E6080005E6680005 +E6C80005E6F00005E7180005E7980005E7E40005E8600005E8940005E8A80005E8D40005 +E9800005E9D80005EA400005EAB40005EB280005EBC40005EC0C0005EC740005ECF00005 +ED6C0005EDA80005EE0C0005EE880005EF140005EF740005EFD40005F0140005F0840005 +F0F00005F1380005F1A40005F2100005F2B40005F3140005F3540005F3980005F3EC0005 +F43C0005F49C0005F4FC0005F5640005F5D80005F61C0005F6900005F6F00005F74C0005 +F7A80005F7F80005F8440005F8D00005F9440005FA0C0005FAF00005FB980005FC400005 +FCF80005FD500005FD600005FD700005FD800005FD900005FE7C0005FF000005FF900005 +FFF0000600800006015000060258000602BC00060324000603840006044C000604B80006 +05240006058000060590000605E4000606AC0006076800060778000607B8000607C80006 +0848000608A40006094400060A1000060AB800060B9C00060BFC00060C5400060CDC0006 +0DA800060E8C00060F9000060FE400060FF400061130000611B0000611C0000612040006 +1270000613340006138800061474000614B4000615300006154800061568000615880006 +15A8000615C8000615D8000615F000061608000616200006163800061650000616680006 +168000061698000616B0000616C8000616E0000616F80006171000061728000617400006 +17580006177000061788000617A0000617B8000617D0000617E800061800000618180006 +183000061848000618600006187800061890000618A8000618C0000618D8000618F00006 +1908000619200006193800061950000619680006198000061998000619B0000619C80006 +19E0000619F800061A1000061A2800061A4000061A5800061A7000061A8800061AA00006 +1AB800061AD000061AE800061B0000061B1800061B3000061B4800061B6000061B780006 +1B9000061BA800061BC000061BD800061BE800061BF800061C4000061C5000061C600006 +1C8400061C9400061CA400061CDC00061CEC00061CFC00061D0C00061D1C00061D2C0006 +1D3C00061D4C00061D5C00061D6C00061D7C00061D8C00061DF000061E0000061E100006 +1E2000061E3000061E6C00061E7C00061E8C00061E9C00061F0C00061F1C00061F2C0006 +1F3C00061F6C00061F7C00061F8C00061F9C000620080006201800062088000620A40006 +20C8000620E0000620F80006212C0006215800062184000621AC000621BC000621CC0006 +21DC000621EC000622C80006237800062390000623A80006242000062488000624D80006 +2560000625C00006261C0006265C0006269C000626E00006272000062738000627500006 +27C400062838000628580006287800062A0000062A6000062AC400062AFC00062B3C0006 +2BB400062BC400062BEC00062C1400062C3C00062C6400062C8C00062CB400062CDC0006 +2D0400062D2C00062D5000062D7000062D9400062DB800062DDC00062DFC00062E280006 +2E5400062E8000062EAC00062EC000062F0400062F4800062F7800062FA800062FEC0006 +3044000630C80006315800063168000631F8000632240006323400063298000633740006 +33FC000634AC000635080006359C000635E400063660000636BC0006374C000637B00006 +38480006385800063868000638B0000638F8000639240006394C0006397C000639A80006 +3A3000063AB400063B6C00063C1000063C6C00063CD800063D5000063DE800063E740006 +3EDC00063F3800063FA000063FF80006406400064084000640A4000640FC000641500006 +416000064188000641E40006423800064248000642A8000642E400064330000643C00006 +4474000644D4000645300006459C0006460C000646A0000646F800064790000648240006 +486C000648B800064950000649600006498C000649D400064A1000064A2C00064A780006 +4AA400064AC400064AE800064B0C00064B3000064B5000064B6400064B7800064B8C0006 +4BA000064BC400064BD800064BEC00064C0000064C1400064C3800064C4C00064C600006 +4C7400064C8800064CAC00064CC000064CD400064CE800064D0400064D2C00064FD80006 +528800065534000657E400065838000658A000065914000659BC00065A1800065A880006 +5B0C00065B8C00065BE000065C4400065CF400065D6000065DC000065E3400065E980006 +5EF000065F7C00065FCC0006604C000660B400066164000661C400066258000662C00006 +63340006639C0006641C00066470000664E40006655C000665B000066628000666980006 +671000066788000667EC0006685C000668E00006697400066A0000066AD000066B240006 +6B8400066BF400066C4C00066CB000066D1400066D7400066DD800066E4800066EB80006 +6F1000066F6800066FCC00067044000670C400067154000671CC00067254000672CC0006 +7350000673E000067458000674E000067564000675D8000676880006772C000677AC0006 +788C0006794C000679CC00067AC400067B9000067C3800067CD400067D8400067E4C0006 +7E6400067E9800067EB000067EFC00067F6800067F9000067FE000068034000680600006 +80A8000680E4000681440006816C000681840006819C000681BC000681DC000681F40006 +820C000682240006823C000682540006826C00068284000682A0000682B8000682D00006 +82EC000683040006831C000683340006834C000683640006837C00068394000683AC0006 +83C4000683DC000683F40006840C000684240006843C000684540006846C000684840006 +8508000685200006853800068550000685680006858000068598000685B0000685C80006 +85E0000685F8000686100006862800068640000686580006867000068688000686A00006 +86B8000686D0000686E80006870000068718000687300006874800068760000687780006 +8790000687A8000687C0000687D8000687F0000688080006882000068838000688500006 +88680006888000068898000688B0000688C8000688E0000688F800068910000689280006 +8940000689580006897000068988000689A0000689B8000689D0000689E800068A000006 +8A1800068A3000068A4800068A6000068A7800068A9000068AA800068AB800068B640006 +8B7400068B8400068B9C00068BB400068BCC00068BE400068BFC00068C1400068C2C0006 +8C4400068C5C00068C7400068C8C00068CA400068CB400068D2C00068D4400068D5C0006 +8D7400068D8C00068D9C00068E4000068E5000068E6000068E7800068E9000068EA80006 +8EC000068ED800068EF000068F0800068F2000068F3800068F5000068F6800068F800006 +8F9800068FB000068FC800068FE000069010000690500006906000069070000690880006 +90A0000690A0000690A0000690A0000690A0000690A0000690A0000690A0000690A00006 +90A0000690A0000690A0000690A0000690A0000690A0000690A0000690A0000690C80006 +90F0000691380006918000069194000691AC000691C0000691F4000692080006921C0006 +92340006924800069260000692740006928C000692A0000692B8000692CC000692E40006 +92F40006930C000693240006933C000693540006936C000693840006939C000693B40006 +93CC000693E4000693FC0006941400069424000694580006947000069488000694A00006 +94B8000694D0000694E80006950000069518000695300006954800069560000695780006 +9590000695A8000695C0000695D8000695F00006960800069618000696AC000697140006 +9798000697B0000697C8000697E0000697F8000698080006986C000698840006989C0006 +98AC0006990000069918000699300006994000069A1400069AA400069B4400069B5C0006 +9B7400069B8C00069BA400069BB400069C9000069D1C00069DC000069DD800069DF00006 +9E0800069E2000069E3000069EB400069F2000069FA400069FBC00069FD400069FEC0006 +A0040006A0140006A09C0006A0F40006A1840006A19C0006A1B40006A1CC0006A1E40006 +A1FC0006A2140006A22C0006A2440006A25C0006A2740006A28C0006A2A40006A2B40006 +A3800006A3EC0006A4740006A4840006A4F80006A52C0006A5700006A5800006A6200006 +A6900006A7200006A7380006A7500006A7680006A7800006A7900006A8080006A8C40006 +A9540006A9640006A9F80006AA080006AAAC0006AAC40006AADC0006AAF40006AB0C0006 +AB240006AB3C0006AB540006AB6C0006AB840006AB9C0006ABF00006AC580006AC580006 +AC580006AC580006AC580006AC580006ACE40006AD200006AD980006ADC40006AE140006 +AE540006AE840006AEB00006AEEC0006AF880006AFA40006AFDC0006B0040006B0440006 +B0740006B0D00006B1600006B1A80006B1E00006B2480006B2A00006B2D80006B3040006 +B32C0006B3700006B3EC0006B4240006B4A40006B4E80006B5300006B5540006B59C0006 +B5AC0006B5D80006B5E80006B61C0006B6540006B6700006B68C0006B6A80006B6C40006 +B6E00006B7080006B7300006B75C0006B7840006B7AC0006B7D80006B8000006B8280006 +B8500006B8780006B8A00006B8CC0006B8F40006B91C0006B9480006B9700006B9980006 +B9C00006B9E80006BA100006BA3C0006BA640006BA8C0006BAB80006BAE00006BB080006 +BB300006BB580006BB800006BBAC0006BBD40006BBFC0006BC280006BC500006BC780006 +BCA00006BCC80006BCF00006BD1C0006BD440006BD6C0006BD980006BDC00006BDE80006 +BE100006BE380006BE600006BE8C0006BEB40006BEDC0006BF080006BF300006BF580006 +BF800006BFA80006BFD00006BFFC0006C0240006C04C0006C0780006C0A00006C0C80006 +C0F00006C1180006C1400006C16C0006C1940006C1BC0006C1E80006C2100006C2380006 +C2600006C2880006C2B00006C2DC0006C3040006C32C0006C3580006C3800006C3A80006 +C3D00006C41C0006C4AC0006C5180006C5580006C5940006C6200006C65C0006C6A80006 +C6EC0006C71C0006C7780006C8140006C8B00006C8E80006C95C0006C9980006CA000006 +CA540006CA9C0006CB400006CBDC0006CC540006CCF00006CD680006CDD00006CE980006 +CF0C0006CF440006CFA00006CFE40006D0300006D0EC0006D1600006D1EC0006D2880006 +D3240006D3700006D43C0006D4980006D50C0006D5480006D5A80006D5FC0006D64C0006 +D6900006D6A00006D6B00006D6C00006D6D00006D6E00006D6F00006D7000006D7100006 +D7200006D7300006D7400006D7500006D7600006D7700006D7800006D7900006D7A00006 +D7B00006D7C00006D7D00006D7E00006D7F00006D8000006D8100006D8200006D8300006 +D8400006D8500006D8600006D8700006D8800006D8900006D8A00006D8B00006D8C00006 +D8D00006D8E00006D8F00006D9000006D9100006D9200006D9300006D9400006D9500006 +D9600006D9700006D9800006D9900006D9A00006D9B00006D9C00006D9D00006DA3C0006 +DA7C0006DB0C0006DBA00006DBEC0006DC5C0006DCE80006DD240006DE000006DE8C0006 +DE9C0006DEAC0006DEBC0006DECC0006DEDC0006DEEC0006DEFC0006DF0C0006DF1C0006 +DF2C0006DF3C0006DF4C0006DF5C0006DF6C0006DF7C0006DF8C0006DF9C0006DFAC0006 +DFBC0006DFCC0006DFDC0006DFEC0006DFFC0006E00C0006E01C0006E02C0006E03C0006 +E04C0006E05C0006E06C0006E07C0006E08C0006E09C0006E0AC0006E0BC0006E0CC0006 +E0DC0006E0EC0006E0FC0006E10C0006E11C0006E1340006E14C0006E2080006E2700006 +E2880006E2F40006E3280006E3A00006E3B80006E4480006E4580006E4700006E4FC0006 +E50C0006E5240006E53C0006E5540006E56C0006E5840006E5940006E5AC0006E5C40006 +E6980006E7180006E79C0006E7B40006E83C0006E8CC0006E8E40006E9900006EA040006 +EA1C0006EAC40006EADC0006EAF40006EB0C0006EB240006EB3C0006EB540006EB6C0006 +EB840006EBD00006EC840006ECB00006ECE80006ED640006EE200006EF1C0006F0580006 +F1D40006F3880006F4040006F4C00006F5C00006F6FC0006F8780006FA340006FC280006 +FCE40006FDE00006FF1C0007009800070248000704440007067800070774000708B00007 +0A3000070BEC00070DE80007102400071298000713CC0007154000071700000718FC0007 +1B3800071DB400072068000721E00007239C0007259C000727D800072A5400072D100007 +3004000731C4000733CC000736140007389C00073B6000073E6800074198000741C40007 +41FC0007427800074334000744300007456C000746E80007489C00074918000749D40007 +4AD400074C1000074D8C00074F480007513C000751F8000752F400075430000755AC0007 +57680007596400075B9800075C9400075DD000075F500007610C00076308000765440007 +67B8000768EC00076A6000076C1C00076E1800077054000772C000077574000776EC0007 +78A800077A9800077CD400077F500007820C00078500000786C4000788CC00078B140007 +8D980007905C0007934C0007967C000796D800079794000798700007996C00079A2C0007 +9B1800079C3000079CDC00079E1000079F240007A0140007A0C80007A1A00007A2800007 +A33C0007A3F40007A4CC0007A5C40007A6800007A7680007A87C0007A9240007AA540007 +AB640007AC500007AD000007ADD40007AEB00007AF680007AFF80007B0A80007B1780007 +B2080007B2C80007B3B00007B4300007B5380007B6200007B6E40007B76C0007B8180007 +B8CC0007B9580007B9D40007BAAC0007BBA40007BCBC0007BD940007BE9C0007BFCC0007 +C0940007C1E40007C3140007C4200007C4F00007C5E40007C6E00007C7B40007C8580007 +CA600007CD480007CF700007D1900007D2900007D3900007D5280007D6080007D6E80007 +D7EC0007D8C00007D9FC0007DB080007DBE00007DCC00007DDCC0007DEAC0007DFD40007 +E0A80007E1500007E2080007E29C0007E35C0007E4500007E5080007E5C00007E6B80007 +E78C0007E8A00007E9780007EA500007EB280007EBF80007ECC40007EDC40007EEF40007 +EFF40007F1280007F2380007F30C0007F3F00007F4D00007F5D00007F7CC0007F8B80007 +F9CC0007FAA00007FBEC0007FCB00007FD940007FE9400080060000801A0000803200008 +044000080514000805BC0008069C000808E400080B6800080DD800080FE0000812180008 +1458000816A80008186800081A2800081A4C00081B1800081BB400081C8400081D2C0008 +1DC800081E7400081EA800081F4800081FA800081FE400082010000820280008204C0008 +207C000820AC000820D0000821080008218400082194000821A400082264000823000008 +23A0000824680008247800082488000824A0000824B80008250800082528000825480008 +25680008258000082598000825B0000825C8000825E0000825F800082610000826280008 +2640000826580008267000082688000826A8000826C8000826E800082708000827980008 +27F80008284800082864000828800008289C000828B8000828D4000828F00008290C0008 +292800082944000829600008297C00082998000829B4000829D0000829EC00082A080008 +2A2400082A4000082A5C00082A7800082A9000082AAC00082AE400082AFC00082B500008 +2B6800082B8000082B9800082BB000082BD000082BF000082C0800082C6C00082C7C0008 +2C8C00082C9C00082CB400082CE000082D3800082D5000082D6800082D8C00082DE40008 +2E0000082E1800082E3000082E4800082E6000082E7800082E9000082EA800082EC00008 +2EF800082F3800082F7000083000000830A0000831300008319800083208000832700008 +32A0000832D0000832FC0008334C000833A4000833F00008343C00083488000834D00008 +357800083628000836CC0008372800083780000837D80008387000083914000839B00008 +3A0C00083A7000083ACC00083B2800083B8C00083BE800083C6800083CEC00083D700008 +3DFC00083E9400083F2000083F8400083FF000084054000840F8000841A4000842480008 +42AC000843180008437C000844080008449C000845280008457C000845D80008462C0008 +46A4000847240008479C00084844000848F40008499C00084A0000084A6C00084AD00008 +4B6800084C0C00084CA400084CF400084D4C00084D9C00084E1000084E8800084EFC0008 +4F80000850080008508C000850DC0008513400085184000851DC0008523C000852940008 +530000085374000853E0000854A40008557000085634000856BC00085748000857D00008 +57E4000858080008582C000858500008587400085898000858BC000858E0000859040008 +5970000859AC000859E800085A5400085A6C00085A8400085AA400085ABC00085AD40008 +5AEC00085B0400085B2400085B3C00085B5400085B7400085B9400085BB400085BCC0008 +5BE400085BFC00085C1C00085C3C00085C5C00085C7400085C8C00085CA400085CBC0008 +5CD400085CEC00085D0400085D1C00085D3400085D4C00085D6400085D7C00085D940008 +5DAC00085DC400085DE400085E0400085E2400085E3C00085E5400085E6C00085E840008 +5E9C00085EB400085ECC00085EE400085EFC00085FA8000860180008609C000860B40008 +60CC000860E4000860FC000861140008612C000861440008615C000861740008618C0008 +61A4000861BC000861D4000861EC000862040008621C000862340008624C000862640008 +627C00086294000862AC000862C4000862DC000862F40008630C00086324000863440008 +636400086384000863A4000863C4000863E4000863FC000864140008642C000864BC0008 +65B4000865C8000865FC000866240008664C00086688000866D8000866F0000867100008 +67E00008691C00086AC400086B6800086C3800086D0800086D3800086D6800086DB40008 +6E0000086EC400086F9C00087088000870B00008711C000871A000087214000872C80008 +7370000873E80008748000087524000875D400087658000876F800087780000878100008 +789C000878FC0008795C0001000018610354002B0068000C000200100099000800000415 +021600080004B8028040FFFBFE03FA1403F92503F83203F79603F60E03F5FE03F4FE03F3 +2503F20E03F19603F02503EF8A4105EFFE03EE9603ED9603ECFA03EBFA03EAFE03E93A03 +E84203E7FE03E63203E5E45305E59603E48A4105E45303E3E22F05E3FA03E22F03E1FE03 +E0FE03DF3203DE1403DD9603DCFE03DB1203DA7D03D9BB03D8FE03D68A4105D67D03D5D4 +4705D57D03D44703D3D21B05D3FE03D21B03D1FE03D0FE03CFFE03CEFE03CD9603CCCB1E +05CCFE03CB1E03CA3203C9FE03C6851105C61C03C51603C4FE03C3FE03C2FE03C1FE03C0 +FE03BFFE03BEFE03BDFE03BCFE03BBFE03BA1103B9862505B9FE03B8B7BB05B8FE03B7B6 +5D05B7BB03B78004B6B52505B65D40FF03B64004B52503B4FE03B39603B2FE03B1FE03B0 +FE03AFFE03AE6403AD0E03ACAB2505AC6403ABAA1205AB2503AA1203A98A4105A9FA03A8 +FE03A7FE03A6FE03A51203A4FE03A3A20E05A33203A20E03A16403A08A4105A096039FFE +039E9D0C059EFE039D0C039C9B19059C64039B9A10059B19039A1003990A0398FE039796 +0D0597FE03960D03958A410595960394930E05942803930E0392FA039190BB0591FE0390 +8F5D0590BB039080048F8E25058F5D038F40048E25038DFE038C8B2E058CFE038B2E038A +8625058A410389880B05891403880B03878625058764038685110586250385110384FE03 +8382110583FE0382110381FE0380FE037FFE0340FF7E7D7D057EFE037D7D037C64037B54 +15057B25037AFE0379FE03780E03770C03760A0375FE0374FA0373FA0372FA0371FA0370 +FE036FFE036EFE036C21036BFE036A1142056A530369FE03687D036711420566FE0365FE +0364FE0363FE0362FE03613A0360FA035E0C035DFE035BFE035AFE0359580A0559FA0358 +0A035716190557320356FE035554150555420354150353011005531803521403514A1305 +51FE03500B034FFE034E4D10054EFE034D10034CFE034B4A13054BFE034A4910054A1303 +491D0D05491003480D0347FE0346960345960344FE0343022D0543FA0342BB03414B0340 +FE033FFE033E3D12053E14033D3C0F053D12033C3B0D053C40FF0F033B0D033AFE0339FE +033837140538FA033736100537140336350B05361003350B03341E03330D0332310B0532 +FE03310B03302F0B05300D032F0B032E2D09052E10032D09032C32032B2A25052B64032A +2912052A25032912032827250528410327250326250B05260F03250B0324FE0323FE0322 +0F03210110052112032064031FFA031E1D0D051E64031D0D031C1142051CFE031BFA031A +42031911420519FE031864031716190517FE031601100516190315FE0314FE0313FE0312 +11420512FE0311022D05114203107D030F64030EFE030D0C16050DFE030C0110050C1603 +0BFE030A100309FE0308022D0508FE030714030664030401100504FE03401503022D0503 +FE0302011005022D0301100300FE0301B80164858D012B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B002B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B1D00>]def +/CharStrings 5 dict dup begin +/.notdef 0 def +/space 3 def +/a 68 def +/s 86 def +/M 48 def +end readonly def + +systemdict/resourcestatus known + {42 /FontType resourcestatus + {pop pop false}{true}ifelse} + {true}ifelse +{/TrueDict where{pop}{(%%[ Error: no TrueType rasterizer ]%%)= flush}ifelse +/FontType 3 def + /TrueState 271 string def + TrueDict begin sfnts save + 72 0 matrix defaultmatrix dtransform dup + mul exch dup mul add sqrt cvi 0 72 matrix + defaultmatrix dtransform dup mul exch dup + mul add sqrt cvi 3 -1 roll restore + TrueState initer end + /BuildGlyph{exch begin + CharStrings dup 2 index known + {exch}{exch pop /.notdef}ifelse + get dup xcheck + {currentdict systemdict begin begin exec end end} + {TrueDict begin /bander load cvlit exch TrueState render end} + ifelse + end}bind def + /BuildChar{ + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec + }bind def +}if + +FontName currentdict end definefont pop +%!PS-TrueTypeFont-1.0-1.0 +%%Title: STIXGeneral-Italic +%%Copyright: Copyright (c) 2001-2010 by the STI Pub Companies, consisting of the American Chemical Society, the American Institute of Physics, the American Mathematical Society, the American Physical Society, Elsevier, Inc., and The Institute of Electrical and Electronic Engineers, Inc. Portions copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright (c) 1990 by Elsevier, Inc. All rights reserved. +%%Creator: Converted from TrueType to type 42 by PPR +15 dict begin +/FontName /STIXGeneral-Italic def +/PaintType 0 def +/FontMatrix[1 0 0 1 0 0]def +/FontBBox[-970 -305 1429 1023]def +/FontType 42 def +/Encoding StandardEncoding def +/FontInfo 10 dict dup begin +/FamilyName (STIXGeneral) def +/FullName (STIXGeneral-Italic) def +/Notice (Copyright (c) 2001-2010 by the STI Pub Companies, consisting of the American Chemical Society, the American Institute of Physics, the American Mathematical Society, the American Physical Society, Elsevier, Inc., and The Institute of Electrical and Electronic Engineers, Inc. Portions copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright (c) 1990 by Elsevier, Inc. All rights reserved. STIX Fonts(TM) is a trademark of The Institute of Electrical and Electronics Engineers, Inc.) def +/Weight (Italic) def +/Version (Version 1.0.0) def +/ItalicAngle -17.43909 def +/isFixedPitch false def +/UnderlinePosition -75 def +/UnderlineThickness 50 def +end readonly def +/sfnts[<000100000006004000020020676C79668E0E8F5C0000006C0002228468656164 +F159E6C6000222F00000003668686561060A06A20002232800000024686D74780116464A +0002234C000010A06C6F6361047A369C000233EC000010A46D6178700472008900024490 +0000002000020027FFF50130029B000B00170000372736373E0133321514070603140623 +2226353436333216891131160A1F1C2C2738402117161C2115171DB105E38E4034332853 +78FEB4151F1E18151F2000000002009001A501B0029A000A00150000012336373E013332 +161514052336373E013332161514015A170D09041F130D14FEF7170D09041F140D1301A5 +9E2D1416100C1EBB9E2D1416100C2000000200020000021C02A4001B001F000001072307 +33072307233723072337233733372337333733073337330F01230733021C0B68365E0B68 +4F3E50824F3E50600B6A36610B6A503D5082503D505182368201D0368F36D5D5D5D5368F +36D4D4D4D4368F0000030020FFA701F102DB0026002E003500000107272E0127071E0115 +14070E012307233726273F011E0117132E013534373E013B013733071607232206151416 +1F0103363534262701F11C0F02252E385836432841441523165F361A1004323D454C3B2A +1E463A121122104870103542232D08449F1F3602637202393C11ED414E3F5C331E11595B +12307B034C43130129314B373D2D20163F441105412C23341B70FEE70D832A2E2C000000 +00040050FFED02C102C2000B001900360046000025140623222635343633321607342623 +22070E01151416333236030123010E012322271615140607062322263534363332171633 +3236370534262726270E01070615141633323602C16440334675482E3217231C1D14212D +201834522AFE522F018A1C35282329042C2426303244744D1A222F312E3445FF00091017 +151F1A0F301F1A354FD55B8D503A50833D362730172375331D277F023BFD2C029220190E +1715346822254F3A55801C271E43891610080B170F17194C571F27820003004CFFEE02D3 +029A002F0039004300002517062322270E01232226353437363726353436333216151407 +060716173E01353426273533150E010706071E01333203342322061514173E010326270E +01151416333202C80B2A5A4A3C395B3354624B258F0756492D3A3822521B3C2E21151EBC +25232714421E392325A2272029053D2E5131364A59453B3D3F0B464F2D2251485A3D1E3E +2A34586A362837301E2A8E5F343C1B110D021311041D391E58322C021D3E424026262642 +FE493EBE1D633938460000000001008401A500F1029A0009000013233637363332161514 +9B170D0A092A101301A5A82627120D1D0001002AFF4B013B029D000E0000011706021514 +161707263534373E01012E0D6B61141C12634A1B50029D0F65FED4A8496F4C069FCAA979 +2C53000000010010FF4C0121029D0011000013371E0117161514070607273E0137363534 +AB1323200D134E34820D3E431A310298053F4F37594F948659710F417451989991000000 +0001008000FF01EC029A004F0000011716171615142322272E042F011617161514223534 +37363506070E0107062322263534373E0137272627263534363332171617342726353433 +321615140706153E0137363332161514070E01014825201F4026141A080C10061A031201 +13084A0A12030D191A141B180F143E2324210C2D303D130E161B2A3112082311130B1021 +1A291313111239222701CB131004092325200A0D0E0512020D4035180A28260B1E323E02 +080F171921110F260A060E14071A06072510171F2F1D303B1B0F2A17120A26333516172B +1516112407041000000100560000024E01FA000B0000252315233523353335331533024E +DB42DBDB42DBDCDCDC42DCDC0001FFFBFF7F00870065000E000017273635342726353436 +3332161514050A4C14191D161A20811231290E0F131E121A2B1F58000001003100C0011A +00FF0003000001072337011A0DDC0E00FF3F3F000001001BFFF5008A0064000A00003714 +0623222635343632168A22181520202E212B162020161821220000000001FFBFFFEE0182 +029A00030000090123010182FE8649017A029AFD5402AC0000020020FFF901F102A4000D +001C0000011406070623222635343E01321607342322070E011514163332373E0101F168 +4D3D414C52578E9A524F54433527402C2549382B3601A96EE0372B766973D683821C825F +47F6503F48644CDF000100320000019902A4001D0000013332151407030615143B011521 +353E0137133635342B01220735373E0101910305068F124215FEE93B2D08880823031526 +17305702A4070815FDF9400A200F0F04161D01E81E061F020F050A100001000C000001C4 +02A4001E000013273637363332161514060F011533323637170721353736373635342623 +22651522303749475B3B5ABCB52B2A121132FE9ED26225093E396001FB0753252A614832 +5C5CC0051B26078611E068531422364300010010FFF901D102A4002C0000132736333216 +15140607151E011514070623222635343633321716333237363534262B01353637363534 +262322B210307B3A4A4556322D5D4772353A18131E222423342926554B1877383E30283D +02370568443637441E0313453875523E201913181E202E2D514F4F1015272B3F29320000 +00020001000001DF02A4000A000F00000103330723072337213701072301153301DF7960 +0E652E4F31FEFA1401A14104FED0D402A4FE4D3FB2B24301AF71FEC2040000000001000F +FFF901EB029A001D000001072307161514062322263534363332171E0233323635342726 +27353701EB17E627DCAE7C2F3B171116220F0F140E446B35376F68029A47582AB57BA81C +1D11191C0D09078053522B2D1010DA000002001EFFF9020902AE00140024000001150E01 +0717363332161514062322263436373E010334262322070E011514163332373E0102095A +B43404223A46619569585A615746822941343E24171D372B402F1A2002AE100C875F0215 +644C72A472CABF443732FE803644382373373C47452770000001004BFFF80219029A000B +00000901230127232206072737210219FE7C46016F02D73036250F5201750290FD680256 +031D2C0A880000000003001EFFF901ED02A4001900240030000013352E01353436333216 +15140607151E011514062322263534362534262206151416173E01033426270E01151416 +333236E132256452505D4A5A4132795E54736701243B6036263940323827534451553639 +4B01680138432847514B3D3B481B013C5636536954544567C536453B31213C351E3BFEB3 +2B3C561A68413B4B5600000000020017FFEF01EC02A40019002800000127062322263534 +3637363216151406070E0107353E01373E01133426232207061514163332373E01016004 +48394254322B3FAC5F645C3C75643B56382E454E342F3E2E3534304329151F0110022D64 +4F3B712739756568BF472E2E11130D2C2E265D011A3E463D466943482E16770000020032 +FFF5010501B9000A00150000011406232226353436321602140623222635343633320105 +21181620202E2164211816202117160180171F2016182121FEAA2E1F201617220002001A +FF7F010501B9000A00190000011406232226353436321603273635342726353436333216 +1514010521181620202E21E10A4C14191D161A200180171F2016182121FDE71231290E0F +131E121A2B1F580000010054FFF6025002040006000005253525150D010250FE0401FCFE +5C01A40AE642E648BFBF0000000200560078024E01820003000700000121352111213521 +024EFE0801F8FE0801F8014042FEF64200010054FFF602500204000600002505352D0135 +050250FE0401A4FE5C01FCDCE648BFBF48E6000000020084FFF401D802980020002B0000 +37273E0137363534262322061514171615140623223534363332151406070E0107171406 +2322263534363216D8120E273F542B25212508061911244C3B99305337340B0E2015171D +1E2C1FAE034F4D3F5450232F19170A110D0C0D1731303D7C31493E29452CA4151D1C1618 +1F21000000020076FFEE0326029A0030003D000025170623222635343633321615140623 +22270623222635343E013332173733070615143332363534262322061514163332033423 +2206070615141633323602AE0C7A6696CED39891B46E4A4910344526352F5E3932120A45 +3D07282F51AA757B9B9D80610D281434132F1F1C2B4C441D39C38E91CAAE77608B48473B +2E3675563425EC1B0C287A4F6B9CB08D83A601753E1E193E4A272D880002FFCD00000234 +029C001A001D00002123353E0135342F012307061514171523353E01370133131E011727 +0B010234F52D200214DC3B163EBA222B39011D1A5C0A1C28C32D951002181B0812836F29 +191E03101007326301F0FDD73E2203F60107FEF90003FFF80000024C028D001800240031 +0000133332151407060715161514062321353E0137133635342627133332363534262322 +0E01070307061514333236353426272682FAD040224D7E957EFEF0291D0D790B1E2F7626 +6267383D17110E05492023435869261D22028D96462B1710012670626610061C2E01B427 +19160F04FEEE4E4A3834030F12FF007785072A58522D400A0C00000000010042FFEE02B1 +029A00200000010727262322070E01151433323637170E01232226353436373633321716 +33323702B1251212836D5A3537AF3E67401243814D759066556675453014151B0B0298C8 +03A36138A055CD34430F4F468B7A67BB3C491107160000000002FFF8000002BC028D0013 +0024000013213216151407062321353E013713363534262717030615143332373E013534 +2726232206830115869EA06AB9FEFF2B1B0C7A0B202CB3761644945D343A4E2F54201F02 +8D8C81B17C531008182C01BD271415130135FE5A500F255A329F4F793B230F000001FFFF +0000027A028D00300000010727363534262322060F013332363717072736353427262B01 +070615143332373637170721353E013713363534262735027A1F16034A762A1A05424E42 +2C1D1244140707113D4E20244F814A2638103EFE052B1A0C7B0B1F2E028D9A0219152D1C +0911E9204104E8051F1518070F707F132227144E08A21008172B01BA251B141104100000 +0001000800000285028D003000000107273635342E012322060F0136323E033717072736 +3534262322270706151416171523353E01371336353426273502852015031C505B231C05 +40312D34111C0C0D124C110823281C373B0E222BFB291E0C7B0A1B31028D9A02160B2721 +0E0D13E30109071B171B05EB0529141C1003D5320A121203101003202B01BA2419150F04 +1000000000010034FFEE02D2029A0031000001150E010F01062322272E01353436373633 +3217163332371707272627262322070E011514163332373E01373635342F013502D23125 +0B316F7E894C232764536874483E1A1224180F31120322305D754E32386A604722090E10 +1A2F20013F10031B2ABB3E4C236A3467B63A48180A2205C503402A3B633FA052636E2209 +2339571A1D0403100001FFF800000301028D0033000001150E0107030615141617152135 +3E013F01210706151416171523353E01371336353426273521150E010F01213736353426 +273503012C1C0C84031E31FEEE33290A40FEE34203192DF5291F0E760C1D30010F2D2D0A +36011D2E0E2028028D1008182AFE1F0C0C1510051010042227E9F40A0C16100610100420 +3201AE2E12150F051010032024C6A4340B131403100000000001FFF800000180028D0017 +000001150E01070306151416171523353E01371336353426273501802A1B0D780F192CF4 +2A1F0B780D2028028D10051A2EFE533517140E051010081A2901B92E1014150210000000 +0001FFFAFFEE01EB028D001C000001150E0107030E012322263534363216151406151432 +3713363426273501EB2B1A0D671D5452354019281F0346127F0C1E2F028D1006172DFE91 +686E302818201B13061104274001C62C2811041000010007000002D2028D003500000115 +220705131E0117152135373635342E032F010706151416171523353E0137133635342627 +3521150E010F01373635342F013502D21C31FED6A817222FFEED1D2E030A0610027B410B +1D2AF72B1A0C7C0E222D010E2A2E0B35998F2418028D1025E1FEDB281505101003041C06 +0E130B1C04D7ED260D171104101005182A01BD320C1514021010031F28C26D65240F0403 +100000000001FFF80000022F028D001D0000250721353E01371336353426273521150E01 +070306151416333236373637022F3AFE032A1A0E7A0B1F2E01112E2B0C780A2C3D4D4324 +2929B4B410041A3001B62519161203101003202AFE53261017120E181B5500000001FFEE +00000368028D0028000001150E01070306151416170721353E01371301230B0106151417 +1523353E01371336353427353313010368291D0B7B0E242D01FEF131280D7EFE88113E76 +0946C5282517720C4AB538014F028D10071B28FE45320C141501101005222F01CBFDCF02 +22FE5420162B051010052F520191290B1E0410FE1401EC000001FFECFFF102D7028D0022 +000001150E030703230B0106151416171523353E013713262335331B0136353426273502 +D71B15190D109212E672091F27C62B241B75173FA0CF6A081B2A028D100607232A37FE05 +0226FE5A1F17151303101006335F019F3610FE0D01841C101B1404100002003CFFEE02BB +029A000F001F0000011406070623222635343637363336160734262322070E0115141633 +32373E0102BB735C696D6377624F707D6B7669453C6357353D433F5C4E3B4601A26BC43E +477C6E5BC1456101863447517548B64E52575F4AD6000000000200000000025D028D001C +0027000013333215140607062322270706151416171523353E0137133635342627170716 +333237363534232292F1DA251F45883723350E1E27F42B1B0E74111C2BAE451D17572947 +822C028D94284D1A3908C136091213041010061B31019E3D161411052DF50518285E7B00 +0002003BFF4A02BB029A00270037000017273E01372E0135343637363332161514060706 +0F013332171633323637170607062322272623220134262322070E011514163332373E01 +450A3A3344555B5C516F82657C8E72446036192358561936482A10181C536C425237263B +01D5453C6E542D3D443872542E3DA91029283C117B615DB8465E866775E13C2506391415 +212C0B22194B1A12026A47527D43B9494B5B7C46C00000000002FFF30000024C028D0023 +002E0000133332161514070607171E0133152303270706151416171523353E0137133635 +34272627170716333236353426232284FC616B42275C59112521937B42370D1A29F32821 +0C770C0E0C2DAE3F1F1459643E3A31028D4C414E321E15EB2E2410014405CB2E11171404 +101005222E01AF2E11120A08062CE3055046343C00010011FFEE01FC029B003500000107 +273426232206151416171E0115140623222726232207233717061514163332363534262F +012E01272E013534363332171632363701FC28123245343C2043432E73572642200F210A +12221402513F3A491A2227031C082D1E674B34211D22120A029BC8035350352F26334344 +5232556E170C20E002090E495E47392135252A031F08303D294C580E0B0A10000001003B +00000279028D001A00000107273635342B0103061514161F011521353E01371322060727 +3702792C1103653A890E161F23FEE0342C0B8F775324122A028DA402191551FE16311117 +1103031010051E28020F2B51049B000000010066FFEE02FD028D002C000001150E040703 +060706222635343F0136353426273521150E010F01061514163332363F01363534262735 +02FD1515140F0E0D53223F3CC47B2C3409232D011033270E3F284F3B54662240171E2802 +8D1005090D242A2CFEE37435345C4837A1BD200D1414011010052234E28D2635416C7CE9 +55121614041000000001004CFFEE02B0028D00180000011506070123032E01273533150E +011514171B01363534273502B02018FE8B135211172AF02F1D0141D2313E028D100127FD +9901F7692A05101005141A0A05FE450168541F1B0710000000010047FFEE038A028D002E +000001150E0107012303230323032E012726273533150E011514171B01272E0127353315 +0E01151416151B013635342735038A1D1B15FED3143205DE133D080A0B0A29EB291F012C +AC08041B2CEC271D0228BC1743028D10091A28FDBC01C5FE3B0202462D0B0A0510100414 +1B0D07FE6C015C412616021010041418030B01FE64016D2C182901100001FFE30000028F +028D0031000001150E010F01171E01171521353E0135342F0107061514331523353E013F +01032E01273521150E0115141F01373635342735028F213725A965122433FEF12B220E43 +971742D528486C53670F252B0107291E103B91153D028D100B292BC2FF2D1A0610100111 +131023A5AC1A1621101007437E6100FF251C041010051113112793A718131F0310000000 +0001004E00000279028D0026000001150E01070307061514161F011521353E013F01032E +01273533150E01141F01373635342F0135027915161BDB241E171E24FEDF332B0D3B4C0B +1929EF2C1C241F2795281D028D10071521FEF27B6718131002031010031F2FCD010B2816 +061010040F227F6E2EB02518040310000001FFFA0000025E028D00150000090133323637 +363717072135012322070E0107273721025EFE1DA1474B1B29241336FE0701DFAB662816 +1517132D01E6027FFDA50C141E4A03A90E025B1B0F1F2B059300000000010015FF670187 +0297000E0000010723220607030615143B010723130187073E1515059E06313807BCC502 +971B1214FD6518051C1B03300001FFD7FFEE013F029A0003000005230133013F47FEDF48 +1202AC000001000CFF67017E0297000E00000103233733323637133635342B0137017EC5 +AD073E161405A0043139070297FCD01B1217029E10091A1B00010000012D01A6029A0007 +0000012303230323133301A6448F018E44B53C012D0121FEDF016D0000010000FF8301F4 +FFB5000300000521352101F4FE0C01F47D3200000001007801EC01370298000900000123 +27263534363332170137208C131410161201EC6A0F1110121700000000020011FFF501DC +01B90020002E000025170E0123223534370E0123222635343E013332173F021706070215 +143332370334262322070E0115143332373601CF0D38351E2817385E352C38578641430D +0B033D070105590E0F25471E1A443F212C3C3B444D6F0B442A29195A54493D374C9E663A +300307030411FEBC270D2901171A205C31782E4A626F000000020017FFF501D902AB001A +0028000013333E0133321615140E012322263D0113363534262735363717071334232207 +0E0115143332373E01A30132593634405E974B2E548E09132D4B4E05158D46454420282E +42392E400122534440384D9C63201506020B240B10070211090E0552FEDE567336832E22 +3B3085000001001EFFF501A901B90022000025170E012322263534363736333216151406 +2226353436353423220706151416333236015E102E5738474C44374D5A2E3B1C28130F25 +3F2E5B2E2B27406B0A3A324E4C437D2D3D2E23141C1711091D0A14306089363C26000000 +0002000FFFF3020F02AB00270036000001170F010615143332363717062322263534370E +01232226353436333216173337363534262735360334262322070E0115141633323E0102 +0906273C41120D1D280C4D4613160D2B53343239C1631F1D05012D0E162A4D591D122F2C +32421F1B2D5C3B02AB0698DBEF0714192E0A7218151E3B493B3D3877D81C1EA331161008 +021107FECE1A1F2E35933E22276298000002001FFFF5019C01B90015001F000025170623 +2226353436333216151406070614163332362707363736353423220601660C58743D4ABB +70272B99830A332A213C9811703132232A5B6D0C6C4B3E75C624204268111452321FBB2C +1B2F3031276100000001FF6DFF3101A802A6002E00001333363736333216151406232226 +353436353423220607330723030223222635343633321615140615143332371323295D27 +21364E253119110E170A162A3A166B066C484088222D1610111509143E23585B01AC7E2F +4D231B111A16110A12030D6D7720FEC0FEE5231A1119151007110510A201A40000030008 +FF3201D701B9002800350044000001231615140623222726232206151417161514062322 +26353436372635343726353436333217163B010734262322061514163332373603342627 +262722060706151433323601D731097346120D03040D17478E70624E592D481B4D4F7A4F +3A280B053C771B1D304A201C3223211B3F50180A072F0B147F3B4C016E12213F6503011A +0F1812225D4354373527372B101730241C504A611C08392720644823283B38FE87232F19 +0704260E1921663700010013FFF701DE02AB002D000025170E0123222635343F01363534 +232206070E010723133634262B0135363717033633321615140706151433323601D10D2E +3E2614181437071C1B55281F241D4B920D1A0F1B4C510779826421203021100C1D760D41 +311713114BCF1C0519503C305B6F022A32180D0F091206FE41D3251E2B966518121D0000 +00020031FFF50108028E000A00230000011406232226353436321603170E01232235343F +0136353426273536371703061514333201081D14161A1B281E2A0D2A3A25311630091729 +2E72045E0A0E190257151E1D18171E21FE050B4131371D52B1200C0F080110041503FEA9 +220A0F000002FF84FF310117028C000B002A000001140623222635343633321607030E01 +232226353436333215140615143332363713363534262B0135363701171E14171F201514 +1F21681F5B41232C1811270C121E291A4810151B1A2D7C0256141E1D17161E21B5FE6679 +72221B121A250C0F070C4E680124410F110E1003160000000001000EFFF501CD02AB0029 +000001150E010717163332373637170E012322262726270F0123133637262B0135363717 +03373635342B013501CD24506D25371A1518050A0F232E1E1623181E1E28304B8D0E0403 +30124B5206782B8F250E01AC1002376158812A08120B3F2E232F3A5320B4021032261810 +091206FE38216E1E1210000000010029FFF5011702AB00190000010306151433323F0117 +0E012322353437133635342B0135363701179908111B28190E2D41293104890331124655 +02A6FDB71D0E1239230A473638110D020C0A0916100813000001000CFFF702C001B90042 +0000250706232235343F01363534262322070E01072337363534232206070E0107233736 +35342B0135371707363332161514073E01373633321615140F0106151433323F0102C005 +4D43280D3A070C082F54252A1D4B1B441619522A1923244B2B372919A2033A825A1D1F28 +354724201F1B1F03440A0C162B1569076B2E0F33E31C0A090C753469735DEB24194F4027 +587790B72D16101F02D1D3201C267254551714231C0D0FFB260710351A0000000001000E +FFF701DA01B90031000025170E0123222635343F01363534232206070E01072313363534 +2627353E013717073E0133321615140F010615143332373601CC0E333623141B102C0E18 +1D4532211F244B60021B2627601B04434A6C311F220A380E10132A07750D462B1B1B103B +A236191D4549314E79015E0A070F0B011008110602DA7666211C1923CB320B1235080000 +0002001BFFF501D401B9000F001E00000114060706232226353436373633321607342623 +2207061514163332373E0101D439315369464D654F38403E4F542621433D4A2A243D3C22 +28012D397B31534942539E2A1E4B282D315B71732C2F532E810000000002FFB5FF3301D8 +01B900210031000013073633321615140623222706151416331523353E0137133635342B +012737321506173426232206070E0115141633323736D71D4B60373CBB6E2421281B23CB +201B0973102C16029C0501A61D21274E12162B1B154E434501AC6471423B7BCC11A50110 +0D1010011A2401B03A0D1B0F160405772C29442E399C1911155F600000020019FF2F01E4 +01B9001A0029000001030615143B011523353E0137130E0123222635343E013332173707 +34262322070E0115143332373E0101E4A502390FED2E24095A3B5A3B2F355989433F0E10 +1F221929343342352929335301ACFDBD08031F101003181D01225E463E364D9E653E3145 +192331318C3E4D242CAF00000001002D0000019C01B9001E00003F013637363332161406 +232227262322070E01072313363534232207353717B010223C2B24151A1916131008081B +372229244C51102608179B03DF234B3F2D1C2E1F1A0E5E3A677901243B171A03111B0200 +00010010FFF3016E01BA0029000001072326232206151417161514062322272623220723 +3733163332363534272635343633321716333237016E14100E4B1B203644513F1D1A1517 +140910141014502428383F42371424160E140A01BA8C741E1B26404F393D490A09159F88 +28252D464F34323A0A07120000010026FFF5012802220021000001072303061514333236 +37170E01232235343713232734373E013736333215140F010128055457020F0C20250D2E +3B262E104E4B012119521A060809011C01AC20FEB80806101F30074633250A4001280612 +0706412709080502670000000001002AFFF501DB01B9002A000025170E0123223534370E +012235343F01363534262335363717030615143332373E0137330306151433323601CD0E +303624302D59616A1B230E16274551045903142D612125284A4F130B0C227709492E302D +98926535126E8B3A090C0C0E081303FE9D0907199332536EFED548061120000000010014 +FFEE01AA01B9002D00003F013E013534272635343633321615140706070E0623223D0134 +272E01232207353637363332161716CF1F36531219161018203F3740091A0C13090C0804 +09180A171C140B37390B09060711124620378D230C1116170F1325163A615544091C0E13 +090A031B188A8C3924010D090C041A585B0000000001000FFFEE028801B9003500000113 +3E0135342726353436333216151403070623222703070607062322262F0126272E012B01 +3536373E0233321617161713363332019320634216151710161ED409230A08031D591720 +310F0704020408130711171C4F10050D08030806051907C006070801AAFEA07B69200E15 +14150C1320185BFEFE0B2B23013698263D5E121D5BA44E1B0F0D0D040104020A1878A101 +300A00000001FFE5FFF501BF01B9003F000013173E013332161406232226232207141F01 +163332373E0237170E012322262F01070E012322263534363332171633323F01272E0123 +220F01273736333216F30C3541211217130F091E0D1D4508200A14101F030806040F2B32 +1D181A091D581F2719171B130F0C140F0B1122521C0A11130C1B12030B50251316016339 +513E15201411790D20862928040B090409432F1E2677772A1A16140F150B0931747C2C18 +070510041D2400000001FFE8FF3201AA01B90033000037173E0135342726353436333216 +1514070E012322263534363332163332373E013736353426272E01232207353637363733 +3216F31543371A1A1711161E834E932B171C1710131E0C121E0D33070A3E140E211E100F +160A2942040B3DBA6E6E7320101011161015201757DA819E181311171C210D430B140F1E +FB33251B04110402080ABA000001FFFEFFAF017C01AC0024000009011E01171633323534 +2726353E0133321615140623222726232207270123220607273721017CFEDF2E2D1D2224 +1B050801140C101334292A47442517160901368828240F1020011B01A1FEA80A1E2B320F +050A100C0D1514111F2D2C2A120901741725047400010033FF4F019702AF002200000107 +0E010F010E0107161514070615141617072E0135343736353426273E013F013E01019703 +2F2E102D103131382C16181D0345382022171E302B0F30165202AF0B0C353BA83E360D18 +271F9F54121C1E080B022329216F742516180B0D2E37B24F3D00000000010069FFEE00AB +029A0003000017231133AB42421202AC0001FFF9FF4F015D02AF0021000013371E011514 +0706151416170E010F010E0123373E013F013E013726353437363534DD0345382022171E +302B0F30165354032F2E102D103032382C1602A40B022329236D752416180B0D2E37B24F +3D0B0C353BA83E360D18271F9F5015340001002800B701F601430017000001170E012322 +27262322060727363332171E0333323601D2242139232E393B36192F0D242C4E2F43041D +181E0A1D2301433230262123252332561F020E0B0A1D00000002003BFF33014101DA000A +001600000114062322263534363216071706070E01232235343736014120141620212C1D +61112E1A0A211B28263201A3141F2016151F1F9E04CCA63E363229536C0000000002004D +FF7101D80230002A00320000010716171615140623222635343736353427031633323637 +170E0123222707233726272635343637363F01031306070E011514019E2A2D191E1B1512 +15090623890B0D26402B102D583606052F1F3025153251472A472AB6842F26292D023078 +04121723141C16120C110D051401FE7904252E0A3A33018588081127534D8E2C1A0B78FD +F901780A262A7C3D440000000002000AFFF80205029E002F003A000013333E0137363332 +161514232226232206073307230E01071633323F011706232226270E0123222635343633 +321737231726232206151416333236526D0F2B2639502934271E0C222A2D237C077F1317 +1F5A4627280A0B29652539321C291B1F223028221C197049231A171E191214280169576D +2D442A2229586AAE2A514244261C0709641A27251A221E1C280BCCF61919141015200000 +0002FFEAFFF6020A0216001B002700002507270623222707273726353437273717363332 +1737170716151407273426232206151416333236020A30623B42443B6032622929623260 +3C43453862306027271D553B3E58563E3D5528326229296232603B434539623060272760 +30623944433C7F3E58573E40595800000001001C0000025D028D0037000001150E010F01 +3307230F013307230615141F011521373E013F012337333727233733272E01273533150E +0115141F0136373E0137342F0135025D191B17B5950CA80618B20CB21F3624FEE504362C +0D19A40CA31703A20C8B3F0C1C30ED2E1B271D13095D44012A19028D100B151DE0280852 +285E18290403101005202D5428500A28D82817061010040E101B8164150C6C5D19180403 +1000000000020069FFEE00AB029A0003000700001323113311231133AB42424242018701 +13FD54011300000000020035FF5E01CD029A00450053000013372E013534363332161514 +0623222634373635342623220615141F0116151406232227071E01151406232226353436 +33321514070615141633323635342F012635343633321734262726232206151416333236 +F902261D534039491C18141A150D23192B311A7B294135130E0227185943394F1E1A2F1B +0F2B1C2D39324C473E2C199C192039321C26792C1B26018E032F3C213746382B191E1928 +120C070D122D2628209632403945070332311E3B4E3E2E1A1E2B1E100A070F163228273A +5752473348D919342B4C261C35942A000002006B01FC0195025E000B0017000001140623 +222635343633321607140623222635343633321601951D14151C1D15131DC81D14151C1D +15131D022D141D1D15141C1E13141D1D15141C1E00030029FFEE02CF029A001D00280034 +000025070E010706232226353436333217161D0123262322061514163332363F01140623 +2226103633321607342623220615141633323602210F01080C402F5F7079612E3515100F +5C434749442B3815BEC58C8FC6C68D90C337A57674A9A97473A8F044080604126655596F +12060F45585953545B282C4E8BC5C6011EC8C8937FB2B27B7AB1B0000002002A01960160 +02A4001F002C00000137060F0106151433323F01170E0123223534370E01232226353436 +3332173707342722061514163332373E01012B35300603010407180E072521141F112633 +25242A7B423209071C13285F120B2728141A02A102A8230F030407180F0A291919132B33 +2425214682231E3324027B3710183C1D4500000000020035002501BD01930016002C0000 +373536373633321514070607161716151423222E01272627353637363332151407060716 +17161514222E012726D767185809065B1F22060E3E07061C27092CB967185809065B1928 +060E3E0E1C250A2CD80950154D071D531C270E1A74110721340A32220950154D071D5317 +2C0E1A74110721330B32000000010056006C024E018200050000252335213521024E42FE +4A01F86CD44200000001003100C0011A00FF0003000001072337011A0DDC0E00FF3F3F00 +00040029FFEE02CF029A001F00260031003D00002523222627262723151416171523353E +013D013426273533321615140717161727333235342B0105140623222610363332160734 +2623220615141633323602333F0D1E1A151E2F0C24A0240C0C24AF353D4F392E1DE62A44 +45290182C58C8FC6C68D90C337A57674A9A97473A892222D252D61200D040F0F040D20ED +210C040F312A47204E3E16AA594EAE8BC5C6011EC8C8937FB2B27B7AB1B0000000010063 +0214019B02470003000001072137019B0BFED30B02473333000200650186018302A4000A +00150000011406232226353436321607342622061514163332360183533E3A5353785327 +3D563D3D2A2B3E02153D52543B3C53533C2C41402D2C4140000200560000024E0238000B +000F000001231523352335333533153311213521024EDB42DBDB42DBFE0801F8011AA0A0 +42DCDCFEA442000000010021010F014402A4001C000013273637363332161514060F0117 +3332363717072335373635342623225B0D121927352E41224172026C1B1A0C0B21E7855D +2E2032023C082A15213B2A1A2F3F6E050E14084F12825B301C2700000001002B010C0153 +02A400280000132736333216151406071716171615140623223534363332171633323635 +34262B0135363534262322950A224728372B3A041C0A15685149110D0E181C0F2430352F +0D931D15220260073D2C201D2614020E0A18264558270C10111335282E33091C42161E00 +000100B401EE0193029800080000133736321615140F01B4A20A1E1511AB01EEA00A150F +120A6A000001FFE2FF2F01F101AC002B00000103061514333237070E0123223534370623 +222706151416151406232234373637133303061514163332371301F14E061A172103202E +1D39044D4D4C1B0202272022261A0855584303252044364901ACFEB01B071C1A0920193B +0C135A4C151B19221A414D5A4942220176FEE40A14202546013900000002003CFF85026D +028D0022002C000001070E0107030615141F010723132303233736373637363F01262726 +353436373E0133031306070E0115141716026D06382009A00B31170594C83AC894053A10 +0A0312321E47252D201B22614D684F3E271C24210F028D15041422FDA82A081404021502 +F3FD0D150508060933C27003191F3D2F5F202824FEA30148042D20632E351E0F00010046 +00C700B50136000A00003714062322263534363216B522171620202E21FD162020161821 +220000000001FFE2FF2700B6000000170000330736333216151406232227371633323534 +262322072737772C0F0A262C4334263711291B351A140C14093C4203251F2630151D0F29 +13190708600000000001002B010F011C02A4001800000133321407030615141617152335 +3E0137133635342B013536010E0905045613141DB5231A045A0515222102A40A0BFEEE3A +100B08011010040A0B011D0F06111305000200430196016A02A4000B0018000001140623 +222635343633321607342326061514163332373E01016A7D492C357A4C2B36491F294D15 +111D141B23025045752D2648732F162F01743F1519161D5700020037002501BF01930015 +002B000025070607062322353437363727263534321E011716170F01060706232235343F +012726353433321E0117161701BF242F2C570A065B231E143E0E1B27093112A2242F2C57 +0A065B41143E07061C260A3112D71B23274D071D531F242872130720350A391B091B2327 +4D07135D432872130721330B391B000000040021FFF602E002A4000A000D0011002C0000 +01033307230723372337010F013313012301053536373633321514070306151416171523 +353E0137133635342302E04F37093A1E3F20A80D010F2FBD8138FE393301C7FE34093D34 +0805035613141DB5231A045A05190196FEFD2B68692A010349BA0211FD5202AE2913010B +0A050709FEEE3A100B08011010040A0B011D0F061100000000030022FFF602ED02A4001C +0020003B000001273637363332161514060F011733323637170723353736353426232213 +012301053536373633321514070306151416171523353E0137133635342302040D121928 +352D41224172026C1B1A0C0B21E7855D2E20324FFE393301C7FE43083E34080503561314 +1DB5231A045A0518012D082A15223C2A1A2F3F6E050E14084F12825B301C270142FD5202 +AE2913010B0A050709FEEE3C0E0B08011010040A0B011D0F0710000000040017FFF602E0 +02A4000A000D0011003B000001033307230723372337010F01331301230105273E013332 +1615140607151617161514062322353436333217163332363534262B0135363534262322 +02E04F37093A1E3F20A80D010F2FBD8139FE393301C7FE2A0A0F382228372B3A1B0F1568 +5149110D0E181C0F2430352F0D931D15220196FEFD2B68692A010349BA0211FD5202AE44 +071C212C201D261403071018264558270C10111335282E33091C42161E0000000002001C +FF33016F01D9000A002C0000001406232226353436333207170E01070E01151416333236 +3534263534363216151406232226353436373E0137016F1E16171E1F151634110D243F31 +262A2620260F1624154F3E454E335336330A01BB2C1F1F16151FBC024B4548394627282C +1A16081E0D11151B17303D3D3C2F4A442B422A000003FFCD000002340392001A001D0027 +00002123353E0135342F012307061514171523353E01370133131E0117270B0101232726 +3534363332170234F52D200214DC3B163EBA222B39011D1A5C0A1C28C32D950145208C13 +141016121002181B0812836F29191E03101007326301F0FDD73E2203F60107FEF901E06A +0F111012170000000003FFCD000002340392001A001D002600002123353E0135342F0123 +07061514171523353E01370133131E0117270B01133736321615140F010234F52D200214 +DC3B163EBA222B39011D1A5C0A1C28C32D9575A20A1E1511AB1002181B0812836F29191E +03101007326301F0FDD73E2203F60107FEF901E2A00A150F120A6A000003FFCD00000234 +038F001A001D002400002123353E0135342F012307061514171523353E01370133131E01 +17270B01012327072337330234F52D200214DC3B163EBA222B39011D1A5C0A1C28C32D95 +0175245289279D311002181B0812836F29191E03101007326301F0FDD73E2203F60107FE +F901E06868A900000003FFCD0000023C036A001A001D003100002123353E0135342F0123 +07061514171523353E01370133131E0117270B0101330623222726232207233E01333217 +163332360234F52D200214DC3B163EBA222B39011D1A5C0A1C28C32D9501711C16491227 +4718240F1D0F2E272036291514171002181B0812836F29191E03101007326301F0FDD73E +2203F60107FEF90264680F1D2F3A3018131300000004FFCD000002340358001A001D0029 +003500002123353E0135342F012307061514171523353E01370133131E0117270B010114 +062322263534363332160714062322263534363332160234F52D200214DC3B163EBA222B +39011D1A5C0A1C28C32D95017B1D14151C1D15131DC81D14151C1D15131D1002181B0812 +836F29191E03101007326301F0FDD73E2203F60107FEF90221141D1D15141C1E13141D1D +15141C1E0004FFCD0000023403BD001A001D0028003300002123353E0135342F01230706 +1514171523353E01370133131E0117270B01001406232226353436333216342623220615 +141633320234F52D200214DC3B163EBA222B39011D1A5C0A1C28C32D95014A3B292B393B +282A19271C1A27251C1D1002181B0812836F29191E03101007326301F0FDD73E2203F601 +07FEF9027C523A3A2A283B803826271A1C2600000002FFE50000038F028D004000430000 +010727363534262322060F01323E0337170727363534262B010615143B01323637170721 +353E013F0123060706151416171523353E0137013E0135342F0135170133038F21110145 +7B2316073D36342F19130E124511062D492847331E706F391240FE0E2C1D0731BE140564 +1828BB131D2401711709261A7BFEF4AD028D99020D17351D0D18DE0408191D1F04E80424 +101F13FD0D1D365205A410041319AA190578250F0B051010041B2D01D11D0F091703020F +28FEAA0000010042FF2702B1029A00380000010727262322060706151433323637170E01 +23222707363332161514062322273716333235342623220727372E0135343E0133321716 +33323702B125120C8D31672B6CAF3E65431143814D1A18230F0A262C4334263711291B35 +1A140C140938516171BC6931441D0C1B0B0298C803A3352D72BACD34420E4F4604340325 +1F2630151D0F29131907085A12895E6DC4761107160000000002FFFF0000027A03920030 +003A0000010727363534262322060F013332363717072736353427262B01070615143332 +373637170721353E01371336353426273525232726353436333217027A1F16034A762A1A +05424E422C1D1244140707113D4E20244F814A2638103EFE052B1A0C7B0B1F2E0185208C +1314101612028D9A0219152D1C0911E9204104E8051F1518070F707F132227144E08A210 +08172B01BA251B14110410596A0F1110121700000002FFFF0000027A0392003000390000 +010727363534262322060F013332363717072736353427262B0107061514333237363717 +0721353E0137133635342627353F0136321615140F01027A1F16034A762A1A05424E422C +1D1244140707113D4E20244F814A2638103EFE052B1A0C7B0B1F2EB9A20A1E1511AB028D +9A0219152D1C0911E9204104E8051F1518070F707F132227144E08A21008172B01BA251B +141104105BA00A150F120A6A0002FFFF0000027A038F0030003700000107273635342623 +22060F013332363717072736353427262B01070615143332373637170721353E01371336 +353426273525232707233733027A1F16034A762A1A05424E422C1D1244140707113D4E20 +244F814A2638103EFE052B1A0C7B0B1F2E01B8245289279D31028D9A0219152D1C0911E9 +204104E8051F1518070F707F132227144E08A21008172B01BA251B14110410596868A900 +0003FFFF0000027A03580030003C00480000010727363534262322060F01333236371707 +2736353427262B01070615143332373637170721353E0137133635342627352514062322 +26353436333216071406232226353436333216027A1F16034A762A1A05424E422C1D1244 +140707113D4E20244F814A2638103EFE052B1A0C7B0B1F2E01C01D14151C1D15131DC81D +14151C1D15131D028D9A0219152D1C0911E9204104E8051F1518070F707F132227144E08 +A21008172B01BA251B141104109A141D1D15141C1E13141D1D15141C1E0000000002FFF8 +0000018E039200170021000001150E01070306151416171523353E013713363534262735 +2523272635343633321701802A1B0D780F192CF42A1F0B780D20280105208C1314101612 +028D10051A2EFE533517140E051010081A2901B92E1014150210596A0F11101217000000 +0002FFF80000019E039200170020000001150E01070306151416171523353E0137133635 +342627353F0136321615140F0101802A1B0D780F192CF42A1F0B780D202836A20A1E1511 +AB028D10051A2EFE533517140E051010081A2901B92E10141502105BA00A150F120A6A00 +0002FFF8000001C2038F0017001E000001150E01070306151416171523353E0137133635 +342627352523270723373301802A1B0D780F192CF42A1F0B780D20280139245289279D31 +028D10051A2EFE533517140E051010081A2901B92E1014150210596868A900000003FFF8 +000001C9035800170023002F000001150E01070306151416171523353E01371336353426 +273525140623222635343633321607140623222635343633321601802A1B0D780F192CF4 +2A1F0B780D202801401D14151C1D15131DC81D14151C1D15131D028D10051A2EFE533517 +140E051010081A2901B92E10141502109A141D1D15141C1E13141D1D15141C1E0002FFF8 +000002BC028D0018002C00001321321615140607062B01353E013F012337333736353426 +2713070615143332373E013534262322060F0133078201148B9B564A6EC1F52B1A0C415A +0C5A2E0B1E2F6C2E16459759333B6C6A2019053F990C028D8984579E38531008172BEC2A +A42719141104FEC9A4500F255A3398516C6F0C11E22A00000002FFECFFF102D7036A0022 +0036000001150E030703230B0106151416171523353E013713262335331B013635342627 +3537330623222726232207233E013332171633323602D71B15190D109212E672091F27C6 +2B241B75173FA0CF6A081B2A501C164912274718240F1D0F2E27203629151417028D1006 +07232A37FE050226FE5A1F17151303101006335F019F3610FE0D01841C101B140410DD68 +0F1D2F3A301813130003003CFFEE02BB0392000F001F0029000001140607062322263534 +3637363336160734262322070E011514163332373E010323272635343633321702BB735C +696D6377624F707D6B7669453C6357353D433F5C4E3B4607208C131410161201A26BC43E +477C6E5BC1456101863447517548B64E52575F4AD601586A0F111012170000000003003C +FFEE02BB0392000F001F0028000001140607062322263534363736333616073426232207 +0E011514163332373E01033736321615140F0102BB735C696D6377624F707D6B7669453C +6357353D433F5C4E3B46D3A20A1E1511AB01A26BC43E477C6E5BC1456101863447517548 +B64E52575F4AD6015AA00A150F120A6A0003003CFFEE02BB038F000F001F002600000114 +06070623222635343637363336160734262322070E011514163332373E01132327072337 +3302BB735C696D6377624F707D6B7669453C6357353D433F5C4E3B462C245289279D3101 +A26BC43E477C6E5BC1456101863447517548B64E52575F4AD601586868A900000003003C +FFEE02BB036A000F001F0033000001140607062322263534363736333616073426232207 +0E011514163332373E0113330623222726232207233E013332171633323602BB735C696D +6377624F707D6B7669453C6357353D433F5C4E3B46281C164912274718240F1D0F2E2720 +362915141701A26BC43E477C6E5BC1456101863447517548B64E52575F4AD601DC680F1D +2F3A3018131300000004003CFFEE02BB0358000F001F002B003700000114060706232226 +35343637363336160734262322070E011514163332373E01131406232226353436333216 +07140623222635343633321602BB735C696D6377624F707D6B7669453C6357353D433F5C +4E3B46311D14151C1D15131DC81D14151C1D15131D01A26BC43E477C6E5BC14561018634 +47517548B64E52575F4AD60199141D1D15141C1E13141D1D15141C1E0001005D00080246 +01F1000B0000250727072737273717371707024630C5C430C4C430C4C530C53830C5C530 +C5C430C5C530C4000003003CFF9702BB02D200190023002D0000010716171615140E0223 +2227072337263534363736333217370901262322070E0115140901163332373E01353402 +9D402B141F4874994D29354A2C565F5C527872353434FE4D016422306E532E3C0195FE9D +20306D532E3D02D2602223384653A57C4D156C7F45835BB64665164EFD7802151A7D44BC +4C3701C5FDEE1D7B45C04C3A00020066FFEE02FD0392002C0036000001150E0407030607 +06222635343F0136353426273521150E010F01061514163332363F013635342627353723 +272635343633321702FD1515140F0E0D53223F3CC47B2C3409232D011033270E3F284F3B +54662240171E2815208C1314101612028D1005090D242A2CFEE37435345C4837A1BD200D +1414011010052234E28D2635416C7CE9551216140410596A0F1110121700000000020066 +FFEE02FD0392002C0035000001150E040703060706222635343F0136353426273521150E +010F01061514163332363F01363534262735273736321615140F0102FD1515140F0E0D53 +223F3CC47B2C3409232D011033270E3F284F3B54662240171E28B8A20A1E1511AB028D10 +05090D242A2CFEE37435345C4837A1BD200D1414011010052234E28D2635416C7CE95512 +161404105BA00A150F120A6A00020066FFEE02FD038F002C0033000001150E0407030607 +06222635343F0136353426273521150E010F01061514163332363F013635342627353723 +270723373302FD1515140F0E0D53223F3CC47B2C3409232D011033270E3F284F3B546622 +40171E2844245289279D31028D1005090D242A2CFEE37435345C4837A1BD200D14140110 +10052234E28D2635416C7CE9551216140410596868A9000000030066FFEE02FD0358002C +00380044000001150E040703060706222635343F0136353426273521150E010F01061514 +163332363F01363534262735371406232226353436333216071406232226353436333216 +02FD1515140F0E0D53223F3CC47B2C3409232D011033270E3F284F3B54662240171E284E +1D14151C1D15131DC81D14151C1D15131D028D1005090D242A2CFEE37435345C4837A1BD +200D1414011010052234E28D2635416C7CE95512161404109A141D1D15141C1E13141D1D +15141C1E0002004E0000027903920026002F000001150E01070307061514161F01152135 +3E013F01032E01273533150E01141F01373635342F0135273736321615140F0102791516 +1BDB241E171E24FEDF332B0D3B4C0B1929EF2C1C241F2795281D8FA20A1E1511AB028D10 +071521FEF27B6718131002031010031F2FCD010B2816061010040F227F6E2EB025180403 +105BA00A150F120A6A0000000002000000000239028D0022002C00000133321514060706 +2322270706151416171523353E01371336353426273533150E010F021633323635342322 +012E38D32C2640803A1F110C132FF32B1A0D7611192AEB1F190724471E16616686260206 +902E551B2E0A3C2A0F1A0E07101006172D01A93F11151005101004111984F8054E5A7200 +0001FF58FF3101ED02A7004A000017133E013332161514060F011516171E011514060706 +2322263534363332161514070615143332373635342726353433323634232207030E0123 +222635343633321615140706151433323617482C795E3E4D4853082B181A1F2E26364B24 +2C18141115080412281F2F511A113C4C3E573A6F1B623C232B15121117080411262F0401 +3FC0AC483B374B1F03030511123F22346C2839251D161916120E0D08030D365671680301 +0E0D659EDAFE566774221C131714100C0E0505084E00000000030011FFF501DC02980020 +002E0038000025170E0123223534370E0123222635343E013332173F0217060702151433 +32370334262322070E011514333237363723272635343633321701CF0D38351E2817385E +352C38578641430D0B033D070105590E0F25471E1A443F212C3C3B444D51208C13141016 +126F0B442A29195A54493D374C9E663A300307030411FEBC270D2901171A205C31782E4A +626FF56A0F1110121700000000030011FFF501DC02980020002E0037000025170E012322 +3534370E0123222635343E013332173F021706070215143332370334262322070E011514 +33323736273736321615140F0101CF0D38351E2817385E352C38578641430D0B033D0701 +05590E0F25471E1A443F212C3C3B444D7AA20A1E1511AB6F0B442A29195A54493D374C9E +663A300307030411FEBC270D2901171A205C31782E4A626FF7A00A150F120A6A00030011 +FFF501F102950020002E0035000025170E0123223534370E0123222635343E013332173F +021706070215143332370334262322070E011514333237363723270723373301CF0D3835 +1E2817385E352C38578641430D0B033D070105590E0F25471E1A443F212C3C3B444D8424 +5289279D316F0B442A29195A54493D374C9E663A300307030411FEBC270D2901171A205C +31782E4A626FF56868A9000000030011FFF5020902700020002E0042000025170E012322 +3534370E0123222635343E013332173F021706070215143332370334262322070E011514 +3332373613330623222726232207233E013332171633323601CF0D38351E2817385E352C +38578641430D0B033D070105590E0F25471E1A443F212C3C3B444D801C16491227471824 +0F1D0F2E272036291514176F0B442A29195A54493D374C9E663A300307030411FEBC270D +2901171A205C31782E4A626F0179680F1D2F3A301813130000040011FFF501F7025E0020 +002E003A0046000025170E0123223534370E0123222635343E013332173F021706070215 +143332370334262322070E01151433323736131406232226353436333216071406232226 +35343633321601CF0D38351E2817385E352C38578641430D0B033D070105590E0F25471E +1A443F212C3C3B444D8A1D14151C1D15131DC81D14151C1D15131D6F0B442A29195A5449 +3D374C9E663A300307030411FEBC270D2901171A205C31782E4A626F0136141D1D15141C +1E13141D1D15141C1E00000000040011FFF501DC02C50020002E00390044000025170E01 +23223534370E0123222635343E013332173F021706070215143332370334262322070E01 +1514333237361214062322263534363332163426232206151416333201CF0D38351E2817 +385E352C38578641430D0B033D070105590E0F25471E1A443F212C3C3B444D583B292B39 +3B282A19271C1A27251C1D6F0B442A29195A54493D374C9E663A300307030411FEBC270D +2901171A205C31782E4A626F0193523A3A2A283B803826271A1C260000030017FFF50280 +01B90026003100400000010736333216151407060706151416333237170E012226353437 +0E0123222635343E013332173716342322070E01073E01372734262326070E0115143332 +373E0101CB163B3F252C42348A0821253C520A2A6D5E39063B5731262E59843B360C13BA +2321201C2216444919CE1914353C252E222A26364901B73E4026203A2B2127221A372F4D +0C333D423814145C46332F4FA86B2F2D5F48231E4040142C2132171C01573680363C293A +A70000000001001AFF2701A901B900390000173726353436333216151406232235343736 +35342322070E0115141633323637170E012B010736333216151406232227371633323534 +262322074D3867B2702E3B1B15270906253F2E2A31302B254129102E573908250F0A262C +4334263711291B351A140C14605A197875B92E23141A260C110B0814302B7E40363C252C +0A3A313703251F2630151D0F291319070003001FFFF5019E02980015001F002900002517 +062322263534363332161514060706141633323627073637363534232206372327263534 +3633321701660C58743D4ABB70272B99830A332A213C9811703132232A5BEC208C131410 +16126D0C6C4B3E75C624204268111452321FBB2C1B2F30312761AB6A0F11101217000000 +0003001FFFF501AF02980015001F00280000251706232226353436333216151406070614 +16333236270736373635342322063F0136321615140F0101660C58743D4ABB70272B9983 +0A332A213C9811703132232A5B1EA20A1E1511AB6D0C6C4B3E75C624204268111452321F +BB2C1B2F30312761ADA00A150F120A6A0003001FFFF501D202950015001F002600002517 +062322263534363332161514060706141633323627073637363534232206252327072337 +3301660C58743D4ABB70272B99830A332A213C9811703132232A5B0120245289279D316D +0C6C4B3E75C624204268111452321FBB2C1B2F30312761AB6868A9000004001FFFF501DB +025E0015001F002B00370000251706232226353436333216151406070614163332362707 +363736353423220625140623222635343633321607140623222635343633321601660C58 +743D4ABB70272B99830A332A213C9811703132232A5B01291D14151C1D15131DC81D1415 +1C1D15131D6D0C6C4B3E75C624204268111452321FBB2C1B2F30312761EC141D1D15141C +1E13141D1D15141C1E0000000002002FFFF5012E0298001A0024000037170E0123223534 +3F01363534262735363717030615141633323613232726353436333217DD0E293C253218 +300916292C730560090A060C2472208C1314101612730C3F3339145AAF220B0F08011003 +1603FEAA220B06092301A56A0F111012170000000002002FFFF5013E0298001A00230000 +37170E01232235343F013635342627353637170306151416333236033736321615140F01 +DD0E293C253218300916292C730560090A060C245DA20A1E1511AB730C3F3339145AAF22 +0B0F080110031603FEAA220B06092301A7A00A150F120A6A0002002FFFF5015F0295001A +0021000037170E01232235343F0136353426273536371703061514163332361323270723 +3733DD0E293C253218300916292C730560090A060C24A3245289279D31730C3F3339145A +AF220B0F080110031603FEAA220B06092301A56868A900000003002FFFF50169025E001A +00260032000037170E01232235343F013635342627353637170306151416333236131406 +232226353436333216071406232226353436333216DD0E293C253218300916292C730560 +090A060C24AD1D14151C1D15131DC81D14151C1D15131D730C3F3339145AAF220B0F0801 +10031603FEAA220B06092301E6141D1D15141C1E13141D1D15141C1E0002001BFFF501E2 +02AB001B002A000001071615140E01232226353436333217372627072737262737161737 +033426232207061514163332373E0101E265564C8851464DAD6B3B1C020E3A75217B2F38 +23423863422720453F462B2346362027027D2D628761AA67474573C53101634B331D362C +17110F2E2BFEAD2B3359617F2A37522F840000000002000EFFF701E80270003100450000 +25170E0123222635343F01363534232206070E010723133635342627353E013717073E01 +33321615140F010615143332373613330623222726232207233E013332171633323601CC +0E333623141B102C0E181D4532211F244B60021B2627601B04434A6C311F220A380E1013 +2A070E1C164912274718240F1D0F2E27203629151417750D462B1B1B103BA236191D4549 +314E79015E0A070F0B011008110602DA7666211C1923CB320B123508020D680F1D2F3A30 +181313000003001BFFF501D40298000F001E002800000114060706232226353436373633 +3216073426232207061514163332373E013723272635343633321701D439315369464D65 +4F38403E4F542621433D4A2A243D3C222822208C1314101612012D397B31534942539E2A +1E4B282D315B71732C2F532E81E06A0F111012170003001BFFF501D40298000F001E0027 +000001140607062322263534363736333216073426232207061514163332373E01273736 +321615140F0101D439315369464D654F38403E4F542621433D4A2A243D3C2228A9A20A1E +1511AB012D397B31534942539E2A1E4B282D315B71732C2F532E81E2A00A150F120A6A00 +0003001BFFF501D40295000F001E00250000011406070623222635343637363332160734 +26232207061514163332373E013723270723373301D439315369464D654F38403E4F5426 +21433D4A2A243D3C222854245289279D31012D397B31534942539E2A1E4B282D315B7173 +2C2F532E81E06868A90000000003001BFFF501EE0270000F001E00320000011406070623 +22263534363736333216073426232207061514163332373E011333062322272623220723 +3E013332171633323601D439315369464D654F38403E4F542621433D4A2A243D3C222852 +1C164912274718240F1D0F2E27203629151417012D397B31534942539E2A1E4B282D315B +71732C2F532E810164680F1D2F3A3018131300000004001BFFF501DA025E000F001E002A +0036000001140607062322263534363736333216073426232207061514163332373E0113 +140623222635343633321607140623222635343633321601D439315369464D654F38403E +4F542621433D4A2A243D3C22285A1D14151C1D15131DC81D14151C1D15131D012D397B31 +534942539E2A1E4B282D315B71732C2F532E810121141D1D15141C1E13141D1D15141C1E +00030056FFF5024E0205000A000E00190000011406232226353436321613213521071406 +2322263534363216018A22171620202E21C4FE0801F8C422181520202E2101CC16202016 +182122FEF942F31620201618212200000003001CFF7901D5022A001A0024002E00000107 +1E0117161514060706232227072337262726353436333217370703163332373E01353403 +13263122070E01151401AC3A1F230D1444385356080C3D2340271425BA6C0B063725BE0B +0B4238202AF5BC0A342B313E022A77091A18232B3C823047027E830D15273D73C4017294 +FE78045231823632FEA60185022E3599472800000002002AFFF501DB0298002A00340000 +25170E0123223534370E012235343F01363534262335363717030615143332373E013733 +030615143332360323272635343633321701CD0E303624302D59616A1B230E1627455104 +5903142D612125284A4F130B0C2209208C13141016127709492E302D98926535126E8B3A +090C0C0E081303FE9D0907199332536EFED54806112001A66A0F1110121700000002002A +FFF501DB0298002A0033000025170E0123223534370E012235343F013635342623353637 +17030615143332373E01373303061514333236033736321615140F0101CD0E303624302D +59616A1B230E16274551045903142D612125284A4F130B0C22D6A20A1E1511AB7709492E +302D98926535126E8B3A090C0C0E081303FE9D0907199332536EFED54806112001A8A00A +150F120A6A0000000002002AFFF501DB0295002A0031000025170E0123223534370E0122 +35343F01363534262335363717030615143332373E013733030615143332361323270723 +373301CD0E303624302D59616A1B230E16274551045903142D612125284A4F130B0C2229 +245289279D317709492E302D98926535126E8B3A090C0C0E081303FE9D0907199332536E +FED54806112001A66868A9000003002AFFF501DB025E002A00360042000025170E012322 +3534370E012235343F01363534262335363717030615143332373E013733030615143332 +3613140623222635343633321607140623222635343633321601CD0E303624302D59616A +1B230E16274551045903142D612125284A4F130B0C222D1D14151C1D15131DC81D14151C +1D15131D7709492E302D98926535126E8B3A090C0C0E081303FE9D0907199332536EFED5 +4806112001E7141D1D15141C1E13141D1D15141C1E0000000002FFE8FF3201AA02980033 +003C000037173E01353427263534363332161514070E012322263534363332163332373E +013736353426272E012322073536373637333216273736321615140F01F31543371A1A17 +11161E834E932B171C1710131E0C121E0D33070A3E140E211E100F160A2942040B3D34A2 +0A1E1511ABBA6E6E7320101011161015201757DA819E181311171C210D430B140F1EFB33 +251B04110402080ABAEFA00A150F120A6A0000000002FFB5FF3301D502AB002400340000 +13173633321615140E0123222706151416331523353E0137133F01363534262735363717 +021734232206070E011514163332373E01BD02445E373D588D472121251D23CD201A0972 +440509152C4D4B0547AA3E284B14162B1B15523F1F26014F026C433B4E9860118F16110E +0F1001182201B2FA13230811090111090E05FEED5A553F33389D1A10155F2E720003FFE8 +FF3201BA025E0033003F004B000037173E01353427263534363332161514070E01232226 +3534363332163332373E013736353426272E012322073536373637333216131406232226 +353436333216071406232226353436333216F31543371A1A1711161E834E932B171C1710 +131E0C121E0D33070A3E140E211E100F160A2942040B3DD41D14151C1D15131DC81D1415 +1C1D15131DBA6E6E7320101011161015201757DA819E181311171C210D430B140F1EFB33 +251B04110402080ABA012E141D1D15141C1E13141D1D15141C1E00000003FFCD00000234 +02F50003001E00210000010721370123353E0135342F012307061514171523353E013701 +33131E0117270B0102180BFED30B0149F52D200214DC3B163EBA222B39011D1A5C0A1C28 +C32D9502F53333FD0B1002181B0812836F29191E03101007326301F0FDD73E2203F60107 +FEF9000000030011FFF501E1021F00030024003200000107213701170E0123223534370E +0123222635343E013332173F021706070215143332370334262322070E01151433323736 +01E10BFED30B011B0D38351E2817385E352C38578641430D0B033D070105590E0F25471E +1A443F212C3C3B444D021F3333FE500B442A29195A54493D374C9E663A300307030411FE +BC270D2901171A205C31782E4A626F000003FFCD00000234035E000C0027002A00000133 +0E012322263533163332361323353E0135342F012307061514171523353E01370133131E +0117270B0101F61D0B6240433D1D08632E4A4EF52D200214DC3B163EBA222B39011D1A5C +0A1C28C32D95035E435B4F4F6335FCD01002181B0812836F29191E03101007326301F0FD +D73E2203F60107FEF900000000030011FFF501E1028A000C002D003B000001330E012322 +2635331633323613170E0123223534370E0123222635343E013332173F02170607021514 +3332370334262322070E0115143332373601C41D0B6240433D1D08632E4A1B0D38351E28 +17385E352C38578641430D0B033D070105590E0F25471E1A443F212C3C3B444D028A435B +4F4F6335FE130B442A29195A54493D374C9E663A300307030411FEBC270D2901171A205C +31782E4A626F00000002FFCDFF570272029C002A002D00002123353E0135342F01230706 +1514171523353E01370133131E0117152306151416333237170623222635340B0201B172 +2D200214DC3B163EBA222B39011D1A5C0A1C28570A211A2F241134492837252D95100218 +1B0812836F29191E03101007326301F0FDD73E2203101A1B171E20124D352A2901270107 +FEF9000000020011FF57021101B9002E003C0000051706232226353437263534370E0123 +222635343E013332173F0217060702151433323F01170607061514163332033426232207 +0E0115143332373602001134492837142017385E352C38578641430D0B033D070105590E +0F251B0D411E0B211A2F6F1E1A443F212C3C3B444D4A124D352A251B0425195A54493D37 +4C9E663A300307030411FEBC270D291D0B50121A1D171E01D31A205C31782E4A626F0000 +00020042FFEE02B1036C000800290000013736321615140F01050727262322070E011514 +33323637170E012322263534363736333217163332370185A20A1E1511AB010925121283 +6D5A3537AF3E67401243814D759066556675453014151B0B02C2A00A150F120A6A2AC803 +A36138A055CD34430F4F468B7A67BB3C491107160002001EFFF501AF02980008002B0000 +133736321615140F0113170E012322263534363736333216151406222635343635342322 +0706151416333236D0A20A1E1511AB6B102E5738474C44374D5A2E3B1C28130F253F2E5B +2E2B274001EEA00A150F120A6AFE7D0A3A324E4C437D2D3D2E23141C1711091D0A143060 +89363C2600020042FFEE02B1036B00060027000001232707233733170727262322070E01 +151433323637170E012322263534363736333217163332370287245289279D3182251212 +836D5A3537AF3E67401243814D759066556675453014151B0B02C26868A9D3C803A36138 +A055CD34430F4F468B7A67BB3C491107160000000002001EFFF501AB0295000600290000 +0123270723373313170E0123222635343637363332161514062226353436353423220706 +15141633323601AB245289279D310B102E5738474C44374D5A2E3B1C28130F253F2E5B2E +2B274001EC6868A9FDD60A3A324E4C437D2D3D2E23141C1711091D0A14306089363C2600 +00020042FFEE02B10332000B002C0000011406232226353436333216170727262322070E +01151433323637170E0123222635343637363332171633323702251D14151C1D15131D8C +251212836D5A3537AF3E67401243814D759066556675453014151B0B0301141D1D15141C +1E7CC803A36138A055CD34430F4F468B7A67BB3C491107160002001EFFF501A9025E000B +002E000001140623222635343633321603170E0123222635343637363332161514062226 +35343635342322070615141633323601711D14151C1D15131D13102E5738474C44374D5A +2E3B1C28130F253F2E5B2E2B2740022D141D1D15141C1EFE2B0A3A324E4C437D2D3D2E23 +141C1711091D0A14306089363C26000000020042FFEE02B1036B00060027000001072327 +331737170727262322070E01151433323637170E01232226353436373633321716333237 +0287A2305F26598D4F251212836D5A3537AF3E67401243814D759066556675453014151B +0B036BA9A96969D3C803A36138A055CD34430F4F468B7A67BB3C4911071600000002001E +FFF501D902950006002900000107232733173703170E0123222635343637363332161514 +06222635343635342322070615141633323601D9A2305F26598D56102E5738474C44374D +5A2E3B1C28130F253F2E5B2E2B27400295A9A96969FDD60A3A324E4C437D2D3D2E23141C +1711091D0A14306089363C260003FFF8000002BC036B0006001A002B0000010723273317 +3705213216151407062321353E013713363534262717030615143332373E013534272623 +2206025BA2305F26598DFE4D0115869EA06AB9FEFF2B1B0C7A0B202CB3761644945D343A +4E2F54201F036BA9A96969DE8C81B17C531008182C01BD271415130135FE5A500F255A32 +9F4F793B230F00000003000FFFF302B902B3000E00360045000001273635342726353436 +333216151427170F010615143332363717062322263534370E0123222635343633321617 +3337363534262735360334262322070E0115141633323E010237094B14191D161921B006 +273C41120D1D280C4D4613160D2B53343239C1631F1D05012D0E162A4D591D122F2C3242 +1F1B2D5C3B01CD1132260E131618141A291E56950698DBEF0714192E0A7218151E3B493B +3D3877D81C1EA331161008021107FECE1A1F2E35933E2227629800000002FFF8000002BC +028D0018002C00001321321615140607062B01353E013F01233733373635342627130706 +15143332373E013534262322060F0133078201148B9B564A6EC1F52B1A0C415A0C5A2E0B +1E2F6C2E16459759333B6C6A2019053F990C028D8984579E38531008172BEC2AA4271914 +1104FEC9A4500F255A3398516C6F0C11E22A00000002000FFFF3024402AB002D003C0000 +010723070615143332363717062322263534370E01232226353436333216173337233733 +3635342627353637170F0134262322070E0115141633323E0102440A543A41120D1D280C +4D4613160D2B53343239C1631F1D050125B607BB0A162A4D4C061E8D1D122F2C32421F1B +2D5C3B023027D7EF0714192E0A7218151E3B493B3D3877D81C1E8A272811100802110710 +0675C71A1F2E35933E222762980000000002FFFF0000027A02F500030034000001072137 +050727363534262322060F013332363717072736353427262B0107061514333237363717 +0721353E01371336353426273502540BFED30B01531F16034A762A1A05424E422C1D1244 +140707113D4E20244F814A2638103EFE052B1A0C7B0B1F2E02F53333689A0219152D1C09 +11E9204104E8051F1518070F707F132227144E08A21008172B01BA251B14110410000000 +0003001FFFF501D2021E0003001900230000010721371317062322263534363332161514 +06070614163332362707363736353423220601D20BFED30BC10C58743D4ABB70272B9983 +0A332A213C9811703132232A5B021E3333FE4F0C6C4B3E75C624204268111452321FBB2C +1B2F3031276100000002FFFF0000027A0362000C003D000001330E012322263533163332 +36170727363534262322060F013332363717072736353427262B01070615143332373637 +170721353E013713363534262735023C1D0B6240433D1D08632E4A4E1F16034A762A1A05 +424E422C1D1244140707113D4E20244F814A2638103EFE052B1A0C7B0B1F2E0362435B4F +4F6335A79A0219152D1C0911E9204104E8051F1518070F707F132227144E08A21008172B +01BA251B141104100003001FFFF501D7028A000C0022002C000001330E01232226353316 +333236031706232226353436333216151406070614163332362707363736353423220601 +BA1D0B6240433D1D08632E4A440C58743D4ABB70272B99830A332A213C9811703132232A +5B028A435B4F4F6335FE110C6C4B3E75C624204268111452321FBB2C1B2F303127610000 +0002FFFF0000027A0332000B003C00000114062322263534363332161707273635342623 +22060F013332363717072736353427262B01070615143332373637170721353E01371336 +353426273501F31D14151C1D15131D871F16034A762A1A05424E422C1D1244140707113D +4E20244F814A2638103EFE052B1A0C7B0B1F2E0301141D1D15141C1E879A0219152D1C09 +11E9204104E8051F1518070F707F132227144E08A21008172B01BA251B14110410000000 +0003001FFFF5019C025E000B0021002B0000011406232226353436333216031706232226 +353436333216151406070614163332362707363736353423220601671D14151C1D15131D +010C58743D4ABB70272B99830A332A213C9811703132232A5B022D141D1D15141C1EFE2D +0C6C4B3E75C624204268111452321FBB2C1B2F30312761000001FFFFFF51027A028D0040 +00002901353E013713363534262735210727363534262322060F01333236371707273635 +3427262B010706151433323736371707230615141633323717062322263534012BFED42B +1A0C7B0B1F2E01F11F16034A762A1A05424E422C1D1244140707113D4E20244F814A2638 +103EA50D211A2F2411344928371008172B01BA251B141104109A0219152D1C0911E92041 +04E8051F1518070F707F132227144E08A21D1E171E20124D352A2C000002001FFF51019C +01B90024002E00000517062322263534372E013534363332161514060706141633323637 +1706070615141633320307363736353423220601571134492837173B49BB70272B99830A +332A213C360C47580A211A2F9B11703132232A5B50124D352A271E014B3D75C624204268 +111452321F2C0C58101A1A171E016C2C1B2F3031276100000002FFFF0000027A036B0006 +0037000001072327331737170727363534262322060F013332363717072736353427262B +01070615143332373637170721353E013713363534262735025BA2305F26598D441F1603 +4A762A1A05424E422C1D1244140707113D4E20244F814A2638103EFE052B1A0C7B0B1F2E +036BA9A96969DE9A0219152D1C0911E9204104E8051F1518070F707F132227144E08A210 +08172B01BA251B14110410000003001FFFF501F602950006001C00260000010723273317 +37031706232226353436333216151406070614163332362707363736353423220601F6A2 +305F26598D6B0C58743D4ABB70272B99830A332A213C9811703132232A5B0295A9A96969 +FDD80C6C4B3E75C624204268111452321FBB2C1B2F3031276100000000020034FFEE02D2 +036D0006003800000123270723373313150E010F01062322272E01353436373633321716 +3332371707272627262322070E011514163332373E01373635342F0135028D245289279D +319D31250B316F7E894C232764536874483E1A1224180F31120322305D754E32386A6047 +22090E101A2F2002C46868A9FDD210031B2ABB3E4C236A3467B63A48180A2205C503402A +3B633FA052636E22092339571A1D04031000000000040008FF3201D702950006002F003C +004B00000123270723373313231615140623222726232206151417161514062322263534 +36372635343726353436333217163B010734262322061514163332373603342627262722 +060706151433323601BF245289279D317031097346120D03040D17478E70624E592D481B +4D4F7A4F3A280B053C771B1D304A201C3223211B3F50180A072F0B147F3B4C01EC6868A9 +FED912213F6503011A0F1812225D4354373527372B101730241C504A611C083927206448 +23283B38FE87232F190704260E1921663700000000020034FFEE02D20362000C003E0000 +01330E0123222635331633323613150E010F01062322272E013534363736333217163332 +371707272627262322070E011514163332373E01373635342F013502781D0B6240433D1D +08632E4A6A31250B316F7E894C232764536874483E1A1224180F31120322305D754E3238 +6A604722090E101A2F200362435B4F4F6335FE0B10031B2ABB3E4C236A3467B63A48180A +2205C503402A3B633FA052636E22092339571A1D0403100000040008FF3201DC028A000C +003500420051000001330E01232226353316333236172316151406232227262322061514 +1716151406232226353436372635343726353436333217163B0107342623220615141633 +32373603342627262722060706151433323601BF1D0B6240433D1D08632E4A2831097346 +120D03040D17478E70624E592D481B4D4F7A4F3A280B053C771B1D304A201C3223211B3F +50180A072F0B147F3B4C028A435B4F4F6335EE12213F6503011A0F1812225D4354373527 +372B101730241C504A611C08392720644823283B38FE87232F190704260E192166370000 +00020034FFEE02D20332000B003D000001140623222635343633321613150E010F010623 +22272E013534363736333217163332371707272627262322070E011514163332373E0137 +3635342F0135021B1D14151C1D15131DB731250B316F7E894C232764536874483E1A1224 +180F31120322305D754E32386A604722090E101A2F200301141D1D15141C1EFE2B10031B +2ABB3E4C236A3467B63A48180A2205C503402A3B633FA052636E22092339571A1D040310 +00040008FF3201D7025E000B003400410050000001140623222635343633321617231615 +14062322272623220615141716151406232226353436372635343726353436333217163B +0107342623220615141633323736033426272627220607061514333236015E1D14151C1D +15131D7931097346120D03040D17478E70624E592D481B4D4F7A4F3A280B053C771B1D30 +4A201C3223211B3F50180A072F0B147F3B4C022D141D1D15141C1ED212213F6503011A0F +1812225D4354373527372B101730241C504A611C08392720644823283B38FE87232F1907 +04260E192166370000020034FEF502D2029A00310040000001150E010F01062322272E01 +3534363736333217163332371707272627262322070E011514163332373E01373635342F +013503273635342726353436333216151402D231250B316F7E894C232764536874483E1A +1224180F31120322305D754E32386A604722090E101A2F20C4094B15181D161921013F10 +031B2ABB3E4C236A3467B63A48180A2205C503402A3B633FA052636E22092339571A1D04 +0310FDB61232260B14151A141A291E5700040008FF3201D702D4000E0037004400530000 +011706151417161514062322263534132316151406232227262322061514171615140623 +2226353436372635343726353436333217163B0107342623220615141633323736033426 +2726272206070615143332360182094B14191D161921D731097346120D03040D17478E70 +624E592D481B4D4F7A4F3A280B053C771B1D304A201C3223211B3F50180A072F0B147F3B +4C02D41132270D131617141B281F57FEE212213F6503011A0F1812225D4354373527372B +101730241C504A611C08392720644823283B38FE87232F190704260E192166370002FFF8 +00000301036B0006003A00000123270723373317150E01070306151416171521353E013F +01210706151416171523353E01371336353426273521150E010F01213736353426273502 +73245289279D31E62C1C0C84031E31FEEE33290A40FEE34203192DF5291F0E760C1D3001 +0F2D2D0A36011D2E0E202802C26868A9DE1008182AFE1F0C0C1510051010042227E9F40A +0C161006101004203201AE2E12150F051010032024C6A4340B1314031000000000020013 +FFF701DE036B0006003400000123270723373313170E0123222635343F01363534232206 +070E010723133634262B0135363717033633321615140706151433323601BF245289279D +316A0D2E3E2614181437071C1B55281F241D4B920D1A0F1B4C510779826421203021100C +1D02C26868A9FD0B0D41311713114BCF1C0519503C305B6F022A32180D0F091206FE41D3 +251E2B966518121D0002FFF800000301028D0039003D000001150E010F01330723030615 +1416171521353E013F01210706151416171523353E01371323373336353426273521150E +010F01213635342627351721072103012C1C0C0C580C586C031E31FEEE33290A40FEE342 +03192DF5291F0E66670C67101D30010F2D2C0B0D011E1220282AFEE21D011D028D100818 +2A2B2CFE760C0C1510051010042227E9F40A0C161006101004203201762C3913150F0510 +100320242E3E0D13140310B16C00000000010013FFF701DE02AB0034000025170E012322 +2635343F01363534232206070E010723132337333634262B013536371707330723033633 +321615140706151433323601D10D2E3E2614181437071C1B55281F241D4B843F0F3E0D1A +0F1B4C5107219F0F9F49826421203021100C1D760D41311713114BCF1C0519503C305B6F +01F43632180D0F0912067B36FEF2D3251E2B966518121D000002FFF8000001BC03440013 +002B000001330623222726232207233E013332171633323607150E010703061514161715 +23353E01371336353426273501A01C164912274718240F1D0F2E27203629151417182A1B +0D780F192CF42A1F0B780D20280344680F1D2F3A301813139E10051A2EFE533517140E05 +1010081A2901B92E10141502100000000002001EFFF5016502700013002D000001330623 +222726232207233E013332171633323603170E01232235343F0136353426273536371703 +06151433323601491C164912274718240F1D0F2E27203629151417640E293C2532183009 +16292C73056009100C240270680F1D2F3A30181313FE1C0C3F3339145AAF220B0F080110 +031603FEAA220B0F230000000002FFF8000001B702F50003001B00000107213717150E01 +070306151416171523353E01371336353426273501B70BFED30BF62A1B0D780F192CF42A +1F0B780D202802F533336810051A2EFE533517140E051010081A2901B92E101415021000 +0002001DFFF50155021F0003001D00000107213713170E01232235343F01363534262735 +3637170306151433323601550BFED30BB50E293C253218300916292C73056009100C2402 +1F3333FE540C3F3339145AAF220B0F080110031603FEAA220B0F23000002FFF8000001C0 +0362000C0024000001330E0123222635331633323607150E01070306151416171523353E +01371336353426273501A31D0B6240433D1D08632E4A132A1B0D780F192CF42A1F0B780D +20280362435B4F4F6335A710051A2EFE533517140E051010081A2901B92E101415021000 +0002002EFFF5015B028A000C0026000001330E0123222635331633323603170E01232235 +343F0136353426273536371703061514333236013E1D0B6240433D1D08632E4A510E293C +253218300916292C73056009100C24028A435B4F4F6335FE170C3F3339145AAF220B0F08 +0110031603FEAA220B0F23000001FFF8FF570180028D002700003323353E013713363534 +26273533150E0107030615141617152306151416333237170623222635345E662A1F0B78 +0D2028F72A1B0D780F192C620A211A2F24113449283710081A2901B92E10141502101005 +1A2EFE533517140E05101A1B171E20124D352A2900020031FF57012F028E002700320000 +17232235343F013635342627353637170306151433323717060706151416333237170623 +22263534131406232226353436321666043116300917292E72045E0A0E193B0D2E1E0F21 +1A2F241134492837B51D14161A1B281E0B371D52B1200C0F080110041503FEA9220A0F4E +0B47161E21171E20124D352A23027E151E1D18171E2100000002FFF8000001800332000B +0023000001140623222635343633321617150E01070306151416171523353E0137133635 +3426273501581D14151C1D15131D282A1B0D780F192CF42A1F0B780D20280301141D1D15 +141C1E8710051A2EFE533517140E051010081A2901B92E10141502100001002FFFF500EB +01B90019000037170E01232235343F0136353426273536371703061514333236DD0E293C +253218300916292C73056009100C24730C3F3339145AAF220B0F080110031603FEAA220B +0F2300000002FFF8FFEE030F028D001D0035000001150E0107030E012322263534363216 +151406151432371336353426273523150E01070306151416171523353E01371336353426 +2735030F2B1A0D671D5452354019281F0346127F0C1E2F912A1B0D780F192CF42A1F0B78 +0D2028028D1006172DFE91686E302818201B13061104274001C62B151411041010051A2E +FE533517140E051010081A2901B92E101415021000040031FF3101F4028E000B00160035 +004E0000011406232226353436333216071406232226353436321617030E012322263534 +36333215140615143332363713363534262B0135363703170E01232235343F0136353426 +273536371703061514333201F41E14171F2015141FEC1D14161A1B281ECB681F5B41232C +1811270C121E291A4810151B1A2D7CF10D2A3A253116300917292E72045E0A0E19025614 +1E1D17161E2114151E1D18171E21B7FE667972221B121A250C0F070C4E680124410F110E +100316FEB90B4131371D52B1200C0F080110041503FEA9220A0F00000002FFFAFFEE0218 +036D0006002300000123270723373317150E0107030E0123222635343632161514061514 +32371336342627350218245289279D312B2B1A0D671D5452354019281F0346127F0C1E2F +02C46868A9E01006172DFE91686E302818201B13061104274001C62C281104100002FF84 +FF31016102950006002500000123270723373307030E0123222635343633321514061514 +3332363713363534262B013536370161245289279D3113681F5B41232C1811270C121E29 +1A4810151B1A2D7C01EC6868A9DFFE667972221B121A250C0F070C4E680124410F110E10 +0316000000020007FEF502D2028D0035004400000115220705131E011715213537363534 +2E032F010706151416171523353E01371336353426273521150E010F01373635342F0135 +01273635342726353436333216151402D21C31FED6A817222FFEED1D2E030A0610027B41 +0B1D2AF72B1A0C7C0E222D010E2A2E0B35998F2418FEDE094B15181D161921028D1025E1 +FEDB281505101003041C060E130B1C04D7ED260D171104101005182A01BD320C15140210 +10031F28C26D65240F040310FC681232260B14151A141A291E5700000002000EFEF501CD +02AB00290038000001150E010717163332373637170E012322262726270F012313363726 +2B013536371703373635342B013503273635342726353436333216151401CD24506D2537 +1A1518050A0F232E1E1623181E1E28304B8D0E040330124B5206782B8F250EC5094B1518 +1D16192101AC1002376158812A08120B3F2E232F3A5320B4021032261810091206FE3821 +6E1E1210FD491232260B14151A141A291E570000000100050000025901CB004800001337 +363736373E01333216151406222E01232207060716171E01171E0117072326272E012726 +27062307061514161707233732373637133635342E062337330706070607F32A23222526 +1824281A2E1E26170D0815102A380F0B0A23040D3C22048226130915030F09280E2B0421 +1F05F1052E11140A5004030308060E07130504F1042E10130B01140403191A3E27181C18 +121714131E4A2306100F7A09202B080F192F16520C300602A20D0E140E0110100B0B2701 +310F0D0609070403020101101002090B280000000002FFF80000022F036C000800260000 +013736321615140F01010721353E01371336353426273521150E01070306151416333236 +3736370104A20A1E1511AB01083AFE032A1A0E7A0B1F2E01112E2B0C780A2C3D4D432429 +2902C2A00A150F120A6AFDF2B410041A3001B62519161203101003202AFE53261017120E +181B550000020029FFF5015C036C000800220000133736321615140F0117030615143332 +3F01170E012322353437133635342B013536377DA20A1E1511AB779908111B28190E2D41 +29310489033112465502C2A00A150F120A6A1CFDB71D0E1239230A473638110D020C0A09 +161008130002FFF8FEF5022F028D001D002C0000250721353E0137133635342627352115 +0E01070306151416333236373637012736353427263534363332161514022F3AFE032A1A +0E7A0B1F2E01112E2B0C780A2C3D4D43242929FE85094B15181D161921B4B410041A3001 +B62519161203101003202AFE53261017120E181B55FE3B1232260B14151A141A291E5700 +00020007FEF5011702AB001900280000010306151433323F01170E012322353437133635 +342B0135363701273635342726353436333216151401179908111B28190E2D4129310489 +0331124655FEFF094B15181D16192102A6FDB71D0E1239230A473638110D020C0A091610 +0813FC4A1232260B14151A141A291E570002FFF800000253029A000E002C000001273635 +3427263534363332161514030721353E01371336353426273521150E0107030615141633 +323637363701D1094B14191D161921243AFE032A1A0E7A0B1F2E01112E2B0C780A2C3D4D +4324292901B41132260E131618141A291E56FEB7B410041A3001B6251916120310100320 +2AFE53261017120E181B550000020029FFF501C002B5000E002800000127363534272635 +34363332161514270306151433323F01170E012322353437133635342B01353637013E09 +4B14191D161921A99908111B28190E2D4129310489033112465501CF1132260E13161814 +1A291E568EFDB71D0E1239230A473638110D020C0A091610081300000002FFF80000022F +028D000A002800000114062322263534363216170721353E01371336353426273521150E +0107030615141633323637363701CB22171620202E21643AFE032A1A0E7A0B1F2E01112E +2B0C780A2C3D4D43242929015116202016182122B4B410041A3001B62519161203101003 +202AFE53261017120E181B5500020029FFF5018202AB000A002400000114062322263534 +3632160B0106151433323F01170E012322353437133635342B0135363701822217162020 +2E216B9908111B28190E2D41293104890331124655015116202016182122013EFDB71D0E +1239230A473638110D020C0A09161008130000000001FFF80000022F028D002500002507 +21353E013F01073F02363534262735211522060F01370F0206151416333236373637022F +3BFE04291E0C34630D63380B1F2F01112C2C0A338F0E8E36112E345049232A2AB4B41005 +1C2CBF3B303BC8251916100510102123B5553153C33B0F13110D171B5700000000010025 +FFF5013302AB00200000010F010306151433323F01170E01232235343F01073F01363534 +2B01353637170301330C6248070F1A2B1A0D313F27311034480C484131144953064601CC +2E32FEED180E13392209493438103BC2242E24F20E1810091206FEF50002FFECFFF102D7 +036C0008002B0000013736321615140F0105150E030703230B0106151416171523353E01 +3713262335331B013635342627350169A20A1E1511AB014B1B15190D109212E672091F27 +C62B241B75173FA0CF6A081B2A02C2A00A150F120A6A35100607232A37FE050226FE5A1F +17151303101006335F019F3610FE0D01841C101B140410000002000EFFF701DA02980008 +003A0000133736321615140F0113170E0123222635343F01363534232206070E01072313 +3635342627353E013717073E0133321615140F0106151433323736B4A20A1E1511ABF50E +333623141B102C0E181D4532211F244B60021B2627601B04434A6C311F220A380E10132A +0701EEA00A150F120A6AFE870D462B1B1B103BA236191D4549314E79015E0A070F0B0110 +08110602DA7666211C1923CB320B1235080000000002FFECFEF502D7028D002200310000 +01150E030703230B0106151416171523353E013713262335331B01363534262735012736 +35342726353436333216151402D71B15190D109212E672091F27C62B241B75173FA0CF6A +081B2AFEA5094B15181D161921028D100607232A37FE050226FE5A1F1715130310100633 +5F019F3610FE0D01841C101B140410FC681232260B14151A141A291E570000000002000E +FEF501DA01B900310040000025170E0123222635343F01363534232206070E0107231336 +35342627353E013717073E0133321615140F010615143332373601273635342726353436 +333216151401CC0E333623141B102C0E181D4532211F244B60021B2627601B04434A6C31 +1F220A380E10132A07FEAD094B15181D161921750D462B1B1B103BA236191D4549314E79 +015E0A070F0B011008110602DA7666211C1923CB320B123508FE921232260B14151A141A +291E57000002FFECFFF102D7036B0006002900000107232733173717150E030703230B01 +06151416171523353E013713262335331B01363534262735027BA2305F26598D811B1519 +0D109212E672091F27C62B241B75173FA0CF6A081B2A036BA9A96969DE100607232A37FE +050226FE5A1F17151303101006335F019F3610FE0D01841C101B1404100000000002000E +FFF701DB02950006003800000107232733173713170E0123222635343F01363534232206 +070E010723133635342627353E013717073E0133321615140F010615143332373601DBA2 +305F26598D160E333623141B102C0E181D4532211F244B60021B2627601B04434A6C311F +220A380E10132A070295A9A96969FDE00D462B1B1B103BA236191D4549314E79015E0A07 +0F0B011008110602DA7666211C1923CB320B1235080000000002003AFFF7021C02B3000E +0040000013273635342726353436333216151401170E0123222635343F01363534232206 +070E010723133635342627353E013717073E0133321615140F010615143332373643094B +14191D16192101490E333623141B102C0E181D4532211F244B60021B2627601B04434A6C +311F220A380E10132A0701CD1132260E131618141A291E56FE5F0D462B1B1B103BA23619 +1D4549314E79015E0A070F0B011008110602DA7666211C1923CB320B123508000001FFF8 +FFEE02BC029A0039000001073E0133321615140E03232226353436333216151406151432 +3E043534232207030615143B011523353E013713363534262B01350149223B6F3E545916 +364D7A4A282F2D22161F0E18202E2B27176665765A0B370EF42B1B0C7B0A1E2806028D78 +4A3B7B6039797E623F2A2024312415092204120B1C3A508350D5BBFEBE25112910100818 +2C01BE26151414100001000EFF3001BA01B90033000013073E01333216151407030E0123 +2226353436333215140615143332363713363534232206070E010723133635342627353E +0137D5434A6C311F220A4D205A41222D1811270C121E291A4811181D45322120234B6002 +1B2627601B01B7DA7666211C1923FEDC7B71231B121A250C0F070D4F68012544031D4549 +324F77015E050C0F0B011008110600000003003CFFEE02BB02F500030013002300000107 +2137011406070623222635343637363336160734262322070E011514163332373E01029A +0BFED30B014E735C696D6377624F707D6B7669453C6357353D433F5C4E3B4602F53333FE +AD6BC43E477C6E5BC1456101863447517548B64E52575F4AD60000000003001BFFF501FF +021F00030013002200000107213705140607062322263534363736333216073426232207 +061514163332373E0101FF0BFED30B010239315369464D654F38403E4F542621433D4A2A +243D3C2228021F3333F2397B31534942539E2A1E4B282D315B71732C2F532E810003003C +FFEE02C50362000C001C002C000001330E01232226353316333236131406070623222635 +343637363336160734262322070E011514163332373E0102A81D0B6240433D1D08632E4A +23735C696D6377624F707D6B7669453C6357353D433F5C4E3B460362435B4F4F6335FE6E +6BC43E477C6E5BC1456101863447517548B64E52575F4AD60003001BFFF50215028A000C +001C002B000001330E012322263533163332360314060706232226353436373633321607 +3426232207061514163332373E0101F81D0B6240433D1D08632E4A1439315369464D654F +38403E4F542621433D4A2A243D3C2228028A435B4F4F6335FED1397B31534942539E2A1E +4B282D315B71732C2F532E810004003CFFEE02D0036C0009001300230033000001373633 +321615140F0123373633321615140F010114060706232226353436373633361607342623 +22070E011514163332373E0101F1A00A110F1511ABCDA00A110F1511A9014F735C696D63 +77624F707D6B7669453C6357353D433F5C4E3B4602C2A00A150F140A68A00A150F140A68 +FEE06BC43E477C6E5BC1456101863447517548B64E52575F4AD600000004001BFFF5021D +02980009001300230032000001373633321615140F0123373633321615140F0105140607 +062322263534363736333216073426232207061514163332373E01013EA00A110F1511AB +CDA00A110F1511A9011B39315369464D654F38403E4F542621433D4A2A243D3C222801EE +A00A150F140A68A00A150F140A68C1397B31534942539E2A1E4B282D315B71732C2F532E +8100000000020031FFF803C4029A0033004400000107233427262B01220F01323E013717 +0727372E012F01070615141633323637170721220623220623222635343E013332171633 +0313363534262322070E0115143332373603C41F100C125A601C09405342281512421406 +0125393E380B202B6D733C1041FEA60C433413360862816DB766243E25118949153B2D4A +3E445790441F1F028D9641142020E30B243004E6022A22160303CC2B0C1410385306A605 +03856472CD7A0805FE3A010C4D0B222D363BD56AB227250000030014FFF4028601B90026 +0033004300002517062322270E0123222635343E01333216173E013332161514070E0107 +0607061514163332361334262322070E01073E0137362734262322070E01151416333237 +3E0102510B6B5A4523263D273F5252813F283B0D344229262B461E5F201F050A2A211C3A +2E121022241D2413412F1735ED201B2821303C241F31281D37690B6A44261D524046905C +2B252F2124203D3015250302112224252F1E013E11152720433F141614301B1E2423349D +4A2B303C2BB900000003FFF30000024C036C0008002C00370000013736321615140F0233 +32161514070607171E0133152303270706151416171523353E0137133635342726271707 +1633323635342623220121A20A1E1511ABC0FC616B42275C59112521937B42370D1A29F3 +28210C770C0E0C2DAE3F1F1459643E3A3102C2A00A150F120A6A354C414E321E15EB2E24 +10014405CB2E11171404101005222E01AF2E11120A08062CE3055046343C00000002002D +0000019C0298000800270000133736321615140F01033736373633321614062322272623 +22070E01072313363534232207353717B4A20A1E1511AB2710223C2B24151A1916131008 +081B372229244C51102608179B0301EEA00A150F120A6AFEF1234B3F2D1C2E1F1A0E5E3A +677901243B171A03111B02000003FFF3FEF5024C028D0023002E003D0000133332161514 +070607171E0133152303270706151416171523353E013713363534272627170716333236 +353426232203273635342726353436333216151484FC616B42275C59112521937B42370D +1A29F328210C770C0E0C2DAE3F1F1459643E3A3189094B15181D161921028D4C414E321E +15EB2E2410014405CB2E11171404101005222E01AF2E11120A08062CE3055046343CFC86 +1232260B14151A141A291E570002FFFEFEF5019C01B9001E002D00003F01363736333216 +1406232227262322070E0107231336353423220735371703273635342726353436333216 +1514B010223C2B24151A1916131008081B372229244C51102608179B03E0094B15181D16 +1921DF234B3F2D1C2E1F1A0E5E3A677901243B171A03111B02FD3E1232260B14151A141A +291E57000003FFF30000024C036B0006002A003500000107232733173705333216151407 +0607171E0133152303270706151416171523353E01371336353427262717071633323635 +34262322023EA2305F26598DFE6BFC616B42275C59112521937B42370D1A29F328210C77 +0C0E0C2DAE3F1F1459643E3A31036BA9A96969DE4C414E321E15EB2E2410014405CB2E11 +171404101005222E01AF2E11120A08062CE3055046343C000002002D000001AA02970006 +002500000107232733173703373637363332161406232227262322070E01072313363534 +23220735371701AAA2305F26598DD510223C2B24151A1916131008081B372229244C5110 +2608179B030297A9A96969FE48234B3F2D1C2E1F1A0E5E3A677901243B171A03111B0200 +00020011FFEE01FC036C0008003E0000133736321615140F011707273426232206151416 +171E0115140623222726232207233717061514163332363534262F012E01272E01353436 +33321716323637ECA20A1E1511ABED28123245343C2043432E73572642200F210A122214 +02513F3A491A2227031C082D1E674B34211D22120A02C2A00A150F120A6A27C803535035 +2F263343445232556E170C20E002090E495E47392135252A031F08303D294C580E0B0A10 +00020010FFF301930298000800320000133736321615140F011707232623220615141716 +15140623222726232207233733163332363534272635343633321716333237B4A20A1E15 +11AB9714100E4B1B203644513F1D1A1517140910141014502428383F42371424160E140A +01EEA00A150F120A6A348C741E1B26404F393D490A09159F8828252D464F34323A0A0712 +00020011FFEE01FC036D0006003C0000012327072337331707273426232206151416171E +0115140623222726232207233717061514163332363534262F012E01272E013534363332 +171632363701E4245289279D317028123245343C2043432E73572642200F210A12221402 +513F3A491A2227031C082D1E674B34211D22120A02C46868A9D2C8035350352F26334344 +5232556E170C20E002090E495E47392135252A031F08303D294C580E0B0A100000020010 +FFF301810295000600300000012327072337331707232623220615141716151406232227 +262322072337331633323635342726353436333217163332370181245289279D31451410 +0E4B1B203644513F1D1A1517140910141014502428383F42371424160E140A01EC6868A9 +DB8C741E1B26404F393D490A09159F8828252D464F34323A0A07120000010011FF2701FC +029B004C00001737262726232207233717061514163332363534262F012E01272E013534 +36333217163236373307273426232206151416171E011514060F01363332161514062322 +27371633323534262322079D321D35200F210A12221402513F3A491A2227031C082D1E67 +4B34211D22120A1728123245343C2043432E6A52200F0A262C4334263711291B351A140C +14604F04120C20E002090E495E47392135252A031F08303D294C580E0B0A10C803535035 +2F263343445232516C053103251F2630151D0F291319070000010010FF27016E01BA0040 +000017372627262322072337331633323635342726353436333217163332373307232623 +2206151417161514060F01363332161514062322273716333235342623220750360B1215 +17140910141014502428383F42371424160E140A0E14100E4B1B2036444A3B250F0A262C +4334263711291B351A140C146057010709159F8828252D464F34323A0A07128C741E1B26 +404F393A48043703251F2630151D0F291319070000020011FFEE0214036B0006003C0000 +010723273317371707273426232206151416171E01151406232227262322072337170615 +14163332363534262F012E01272E01353436333217163236370214A2305F26598D0D2812 +3245343C2043432E73572642200F210A12221402513F3A491A2227031C082D1E674B3421 +1D22120A036BA9A96969D0C8035350352F263343445232556E170C20E002090E495E4739 +2135252A031F08303D294C580E0B0A1000020010FFF301AA029700060030000001072327 +3317370F0123262322061514171615140623222726232207233733163332363534272635 +34363332171633323701AAA2305F26598D1714100E4B1B203644513F1D1A151714091014 +1014502428383F42371424160E140A0297A9A96969DD8C741E1B26404F393D490A09159F +8828252D464F34323A0A07120001003BFF270279028D003200003323353E013713220607 +27372107273635342B0103061514161F0115230736333216151406232227371633323534 +2623220727B372342C0B8F775324122A02142C1103653A890E161F23882C0F0A262C4334 +263711291B351A140C140910051E28020F2B51049BA402191551FE163111171103031042 +03251F2630151D0F29131907080000000002FFDAFF270128022200210039000001072303 +06151433323637170E01232235343713232734373E013736333215140F01030736333216 +1514062322273716333235342623220727370128055457020F0C20250D2E3B262E104E4B +012119521A060809011C692C0F0A262C4334263711291B351A140C14093C01AC20FEB808 +06101F30074633250A4001280612070641270908050267FE544203251F2630151D0F2913 +190708600002003B00000279036B000600210000010723273317371707273635342B0103 +061514161F011521353E01371322060727370235A2305F26598D692C1103653A890E161F +23FEE0342C0B8F775324122A036BA9A96969DEA402191551FE163111171103031010051E +28020F2B51049B0000020026FFF501C502B5000E00300000012736353427263534363332 +1615140F01230306151433323637170E01232235343713232734373E013736333215140F +010143094B14191D1619219D055457020F0C20250D2E3B262E104E4B012119521A060809 +011C01CF1132260E131618141A291E566C20FEB80806101F30074633250A400128061207 +06412709080502670001003B00000279028D002200000107273635342B01033307230706 +1514161F011521353E013F0123373313220607273702792C1103653A4C820C82310E161F +23FEE0342C0B39730C734A775324122A028DA402191551FEF12CAF311117110303101005 +1E28D42C010F2B51049B00000001001CFFF5012802220029000001072307330723070615 +1433323637170E01232235343F0123373337232734373E013736333215140F0101280554 +24620C6128020F0C20250D2E3B262E101F390C38244B012119521A060809011C01AC2086 +2C960806101F30074633250A40762C8606120706412709080502670000020066FFEE02FD +034400130040000001330623222726232207233E013332171633323617150E0407030607 +06222635343F0136353426273521150E010F01061514163332363F013635342627350271 +1C164912274718240F1D0F2E27203629151417941515140F0E0D53223F3CC47B2C340923 +2D011033270E3F284F3B54662240171E280344680F1D2F3A301813139E1005090D242A2C +FEE37435345C4837A1BD200D1414011010052234E28D2635416C7CE95512161404100000 +0002002AFFF501DB02700013003E000001330623222726232207233E0133321716333236 +13170E0123223534370E012235343F01363534262335363717030615143332373E013733 +0306151433323601BC1C164912274718240F1D0F2E27203629151417190E303624302D59 +616A1B230E16274551045903142D612125284A4F130B0C220270680F1D2F3A30181313FE +2009492E302D98926535126E8B3A090C0C0E081303FE9D0907199332536EFED548061120 +00020066FFEE02FD02F50003003000000107213705150E040703060706222635343F0136 +353426273521150E010F01061514163332363F01363534262735028B0BFED30B019F1515 +140F0E0D53223F3CC47B2C3409232D011033270E3F284F3B54662240171E2802F5333368 +1005090D242A2CFEE37435345C4837A1BD200D1414011010052234E28D2635416C7CE955 +12161404100000000002002AFFF501DB021F0003002E00000107213701170E0123223534 +370E012235343F01363534262335363717030615143332373E0137330306151433323601 +C80BFED30B01320E303624302D59616A1B230E16274551045903142D612125284A4F130B +0C22021F3333FE5809492E302D98926535126E8B3A090C0C0E081303FE9D090719933253 +6EFED5480611200000020066FFEE02FD0362000C0039000001330E012322263533163332 +3617150E040703060706222635343F0136353426273521150E010F01061514163332363F +0136353426273502811D0B6240433D1D08632E4A8C1515140F0E0D53223F3CC47B2C3409 +232D011033270E3F284F3B54662240171E280362435B4F4F6335A71005090D242A2CFEE3 +7435345C4837A1BD200D1414011010052234E28D2635416C7CE95512161404100002002A +FFF501E0028A000C0037000001330E0123222635331633323613170E0123223534370E01 +2235343F01363534262335363717030615143332373E0137330306151433323601C31D0B +6240433D1D08632E4A1A0E303624302D59616A1B230E16274551045903142D612125284A +4F130B0C22028A435B4F4F6335FE1B09492E302D98926535126E8B3A090C0C0E081303FE +9D0907199332536EFED548061120000000030066FFEE02FD038B000A0015004200000014 +062322263534363332163426232206151416333217150E040703060706222635343F0136 +353426273521150E010F01061514163332363F01363534262735024E3B292B393A292A19 +271C1A27251C1DF71515140F0E0D53223F3CC47B2C3409232D011033270E3F284F3B5466 +2240171E280350523A3A2A283B803826271A1C26591005090D242A2CFEE37435345C4837 +A1BD200D1414011010052234E28D2635416C7CE955121614041000000003002AFFF501DB +02B3000A0015004000000014062322263534363332163426232206151416333213170E01 +23223534370E012235343F01363534262335363717030615143332373E01373303061514 +333236019A3B292B393A292A19271C1A27251C1D7B0E303624302D59616A1B230E162745 +51045903142D612125284A4F130B0C220278523A3A2A283B803826271A1C26FE6909492E +302D98926535126E8B3A090C0C0E081303FE9D0907199332536EFED54806112000030066 +FFEE02FD036C000900130040000001373633321615140F0123373633321615140F010515 +0E040703060706222635343F0136353426273521150E010F01061514163332363F013635 +3426273501CDA00A110F1511ABCDA00A110F1511A901B51515140F0E0D53223F3CC47B2C +3409232D011033270E3F284F3B54662240171E2802C2A00A150F140A68A00A150F140A68 +351005090D242A2CFEE37435345C4837A1BD200D1414011010052234E28D2635416C7CE9 +55121614041000000003002AFFF501FF029800090013003E000001373633321615140F01 +23373633321615140F0101170E0123223534370E012235343F0136353426233536371703 +0615143332373E013733030615143332360120A00A110F1511ABCDA00A110F1511A90132 +0E303624302D59616A1B230E16274551045903142D612125284A4F130B0C2201EEA00A15 +0F140A68A00A150F140A68FE8909492E302D98926535126E8B3A090C0C0E081303FE9D09 +07199332536EFED54806112000010066FF5702FD028D003D000005170623222635343706 +23222635343F0136353426273521150E010F01061514163332363F013635342627353315 +0E040703060706070614163332022411344928370F180D627B2C3409232D011033270E3F +284F3B54662240171E28C61515140F0E0D53223F1F2309211A2F4A124D352A1F1B025C48 +37A1BD200D1414011010052234E28D2635416C7CE95512161404101005090D242A2CFEE3 +74351A0C1A2E1E000001002AFF57021A01B9003900000523223534370E012235343F0136 +3534262335363717030615143332373E0137330306151433323637170607061514163332 +3717062322263534015201302D59616A1B230E16274551045903142D612125284A4F130B +0C22250E331F0E211A2F24113449283709302D98926535126E8B3A090C0C0E081303FE9D +0907199332536EFED54806112031094E181D20171E20124D352A240000020047FFEE038A +036D0006003500000123270723373305150E0107012303230323032E012726273533150E +011514171B01272E01273533150E01151416151B0136353427350283245289279D31015F +1D1B15FED3143205DE133D080A0B0A29EB291F012CAC08041B2CEC271D0228BC174302C4 +6868A9E010091A28FDBC01C5FE3B0202462D0B0A05101004141B0D07FE6C015C41261602 +1010041418030B01FE64016D2C182901100000000002000FFFEE028802950006003C0000 +0123270723373307133E0135342726353436333216151403070623222703070607062322 +262F0126272E012B013536373E02333216171617133633320219245289279D312E206342 +16151710161ED409230A08031D591720310F0704020408130711171C4F10050D08030806 +051907C006070801EC6868A9EBFEA07B69200E1514150C1320185BFEFE0B2B2301369826 +3D5E121D5BA44E1B0F0D0D040104020A1878A101300A00000002004E00000279036D0006 +002D00000123270723373317150E01070307061514161F011521353E013F01032E012735 +33150E01141F01373635342F01350219245289279D31B815161BDB241E171E24FEDF332B +0D3B4C0B1929EF2C1C241F2795281D02C46868A9E010071521FEF27B6718131002031010 +031F2FCD010B2816061010040F227F6E2EB02518040310000002FFE8FF3201AA02950006 +003A00000123270723373303173E01353427263534363332161514070E01232226353436 +3332163332373E013736353426272E012322073536373637333216018E245289279D3143 +1543371A1A1711161E834E932B171C1710131E0C121E0D33070A3E140E211E100F160A29 +42040B3D01EC6868A9FE256E6E7320101011161015201757DA819E181311171C210D430B +140F1EFB33251B04110402080ABA00000003004E000002790332000B0017003E00000114 +0623222635343633321607140623222635343633321605150E01070307061514161F0115 +21353E013F01032E01273533150E01141F01373635342F0135021B1D14151C1D15131DC8 +1D14151C1D15131D012615161BDB241E171E24FEDF332B0D3B4C0B1929EF2C1C241F2795 +281D0301141D1D15141C1E13141D1D15141C1E8710071521FEF27B671813100203101003 +1F2FCD010B2816061010040F227F6E2EB0251804031000000002FFFA0000025E036C0008 +001E0000013736321615140F01050133323637363717072135012322070E010727372101 +29A20A1E1511AB0112FE1DA1474B1B29241336FE0701DFAB6628161517132D01E602C2A0 +0A150F120A6A43FDA50C141E4A03A90E025B1B0F1F2B05930002FFFEFFAF018602980008 +002D0000133736321615140F0117011E011716333235342726353E013332161514062322 +2726232207270123220607273721A7A20A1E1511ABB2FEDF2E2D1D22241B050801140C10 +1334292A47442517160901368828240F1020011B01EEA00A150F120A6A4DFEA80A1E2B32 +0F050A100C0D1514111F2D2C2A12090174172504740000000002FFFA0000025E0332000B +00210000011406232226353436333216170133323637363717072135012322070E010727 +3721018F1D14151C1D15131DCFFE1DA1474B1B29241336FE0701DFAB6628161517132D01 +E60301141D1D15141C1E95FDA50C141E4A03A90E025B1B0F1F2B05930002FFFEFFAF017C +025E000B0030000001140623222635343633321617011E011716333235342726353E0133 +32161514062322272623220727012322060727372101211D14151C1D15131D5BFEDF2E2D +1D22241B050801140C101334292A47442517160901368828240F1020011B022D141D1D15 +141C1E9FFEA80A1E2B320F050A100C0D1514111F2D2C2A1209017417250474000002FFFA +0000025E036B0006001C000001072327331737170133323637363717072135012322070E +01072737210201A2305F26598D82FE1DA1474B1B29241336FE0701DFAB6628161517132D +01E6036BA9A96969ECFDA50C141E4A03A90E025B1B0F1F2B059300000002FFFEFFAF01AA +02970006002B00000107232733173707011E011716333235342726353E01333216151406 +2322272623220727012322060727372101AAA2305F26598D09FEDF2E2D1D22241B050801 +140C101334292A47442517160901368828240F1020011B0297A9A96969F6FEA80A1E2B32 +0F050A100C0D1514111F2D2C2A12090174172504740000000001000D0000020102AB0021 +000013333637363332161514062322272623220703061514171617072137363736371323 +A41B0C103F7F284018101C11181D39136403090D3A03FEFC0332131509451B01C239258B +1F200F19212A5BFE24100D14090D020F0F030D0F2C01480000020017FFF501D902AB0022 +0030000013073E0133321615140E012322263D01132337333736342627353637170E010F +01330717342322070E0115143332373E01DF3C33593634405E974B2E547D7B0D76090913 +2D4B4E05030E0410A2080346454420282E42392E4001FDDB534440384D9C6320150601CD +1F1F1F20070211090E050B3A0D381FCB567336832E223B30850000000001001EFFF50241 +02240033000025170E0123222635343637363332173E01333216151423222E0223220F01 +161514062226353436353423220706151416333236015E102E5738474C44374D5A1C150F +49321B2B190E1006110E29140A0B1C28130F253F2E5B2E2B27406B0A3A324E4C437D2D3D +09353F201A1C131713532B1015141C1711091D0A14306089363C260000010042FFFA029F +02AC003A000025170E0223222E01353436372E0135343E023332171E011514062322272E +0123220615141633323633321615140623222623220615143332360233220F65783E3B63 +4B714A312E3C5F69323634253C1A152D13073E17547A283709530B101F35150842064A6D +A5595EA809364E211841324A840D1A2D263758341C100B3D211725511A1E695825210B0F +0E121805634C5D2B0001FFC2FF6101EE02C2003300001333123332161514062322263436 +353423220706070E010733072306020706232226353436333216151406151433323F0136 +3723646B458D202D1E140E1511131B112317020A037E0680155B1A374D202A1E170E1213 +1244211B131C6701B5010D22191521121819050C12276B09340F1F76FECE2C61211A181F +160E1316010CAE9E636E000000010013FFF6028E02AB003F0000010706151433323E0135 +34272E01353436333216171615140E0223222E0235343F01363534232206070E01072313 +3634262B01353637170336333216151401BC4509113E6D3B05022F160E161E05022A4A72 +411012190C1437071C1B55281F241D4B920D1A0F1B4C510779826421200157F71F071456 +7C3C100D052B1610121B1709153F836C450207130F114BCF1C0519503C305B6F022A3218 +0D0F091206FE41D3251E0F000001000EFFF501EA02AB002F000033133E01333216151406 +2322262322060703373635342B013533150E010717163332373637170E01232226272627 +0F010E7C188E5D2637190F16321126530E4F2B8F250EB324506D25371A1518050A0F232E +1E1623181E1E283001D15B7F1E1A10163C4A36FED4216E1E12101002376158812A08120B +3F2E232F3A5320B400010029FFF5011702AB0021000001033307230706151433323F0117 +0E01232235343713233733373635342B0135363701174F4E084E4208111B28190E2D4129 +3104474A084A3A033112465502A6FED41FFE1D0E1239230A473638110D01101FDD0A0916 +100813000001001E000001DE029C001C0000010713230B01231336373427073537262322 +062322263534363332173701DE663A2C22E85EF5310C01ACA5111C0A2D12141C2620691F +6E023F4BFE0C014DFEB3015543181C0B7F36774314181619217C55000001000EFF1701BA +01B90022000013073E0133321615140703231336353426232206070E0107231336353426 +27353E0137D5434A6C311F220A995195110F0C1D4631211F244B60021B2627601B01B7DA +7666211C1923FDD702033C130D0F4449314E79015E0A070F0B011008110600000002003C +FFEE030F02B3002400340000011407062322271615140607062322263534363736333217 +1633323635342E0134363332160734262322070E011514163332373E01030F4218090B09 +23735C696D6377624F707F693B151A111311121B13151CBD453C6357353D433F5C4E3B46 +027B370D03023D576BC43E477C6E5BC1456143120C09010B161E191EB447517548B64E52 +575F4AD60002001BFFF5024701D300240033000001140706222716151406070623222635 +343637363332161716333235272E01353436333216073426232207061514163332373E01 +02474218140A0539315369464D654F38402D43100F11240909111B13151CC72621433D4A +2A243D3C2228019B370D03021613397B31534942539E2A1E282507160606160E0F191E6F +2D315B71732C2F532E8100000002FFB5FF3301D8029D0028003800001307363332161514 +062322270706151416331523353E0137133E043332161514062322262322133426232206 +070E0115141633323736ED334B60373CBB6E242124041B23CB201B09940B1423293E2526 +37190F16321032781D21274E12162B1B154E43450217CF71423B7BCC1187100F100D1010 +011A24022E283D422A1C1E1A10163CFEBE2C29442E399C1911155F600002001FFF17013F +02AC0020002D000037130623222635343633361615140703061514333236333216151406 +232226353413342322061514163332363736419E2328262F5934393A08B81C2413321610 +183B21434CD82E2840221A172E0E072D01BA1830243455014B392516FDED5227293C1610 +1D1B45393A028635362A19201B1528000001FFCAFF260128022200340000010723030615 +143332363717060F01062322263534363332163332363F01363706232235343713232734 +373E013736333215140F010128055457020F0C20250D230C1D1B552637190F1632110C1B +071E0307222B2E104E4B012119521A060809011C01AC20FEB80806101F3007572E665D1E +1A10163C2117630B2922250A4001280612070641270908050267000000010026FFF501C4 +02AB002A0000132327343736373E0133321615140623222623220E010F01330723030615 +1433323637170E012322353437844B012116241B6257223B180F16321115210D08215005 +5457020F0C20250D2E3B262E10018C061207051B6C741B1D0F173C24231D7920FEB80806 +101F30074633250A4000000000010066FFEE037102FD003B00000133323E0135342E0134 +36333216151406070E01070E010703060706222635343F0136353426273521150E010F01 +061514163332363F0136353426270237C7151A0711111A13151D241F07290C23201A5322 +3F3CC47B2C3409232D011033270E3F284F3B54662240171E28028D090905020A161E191E +191B250601040104325CFEE37435345C4837A1BD200D1414011010052234E28D2635416C +7CE95512161404000001002AFFF5025F021F003B000001333235342E0134363332161514 +0607062B010306151433323637170E0123223534370E012235343F013635342623353637 +17030615143332373E0101874A5211121A13141E241E2129074A130B0C22250E30362430 +2D59616A1B230E16274551045903142D61212501B015020B161E1920191B240506FEE948 +0611203109492E302D98926535126E8B3A090C0C0E081303FE9D09071993325300010008 +FF1601CE01C20031000001073633321615140F0106151433323637363332161406070623 +22263534363F01363534232206072627252322060723372101CEED291D2E345CC536411C +2B050D27161A1B1C363B3043392A96384B2632240B050108A22E2413123D014001ADBA11 +30285D30651C37361E19401A242E0D19352C2E4A164C1D2C32141C0B07D4263096000000 +0001000C000001F402A40024000001072306071533323637170721353736372337213635 +3426232207273E013332161514060701F409941DC7B52B2A121132FE9ED2380AF8090112 +2B3F386032151B6A4D485A232201682E20C9051B26078611E03D0C2E403A384160074B57 +61482942280000000001002FFFF401C5021B002400000107363332161514062322263534 +3633321E023332363534262B0137233733373307330701290C0710444D916C32671B1317 +1A0A221D3354453414254D084D0F2F0C4E0801BF3E0157426F86392E13192830288A342F +36951F3D3D1F00000001000F0000010202E000030000010323130102C033C002E0FD2002 +E00000000002000F0000017B02E00003000700000103231323032313017BC133C145C133 +C102E0FD2002E0FD2002E0000001000F000001AD02E00013000001072307330723032313 +2337333723373313330301AD0D9D169D0D9D4A33499D0D9E169E0D9F47334801D0335A33 +FEF00110335A330110FEF00000020027FFF50130029B000B00170000372736373E013332 +15140706031406232226353436333216891131160A1F1C2C2738402117161C2115171DB1 +05E38E403433285378FEB4151F1E18151F2000000002FF84FF31018D0295000600250000 +0107232733173707030E01232226353436333215140615143332363713363534262B0135 +3637018DA2305F26598D72681F5B41232C1811270C121E291A4810151B1A2D7C0295A9A9 +6969DFFE667972221B121A250C0F070C4E680124410F110E100316000004FFCD00000234 +03B6002500280034003E000001131E01171523353E0135342F012307061514171523353E +0137012E013534363332161514060B0201342623220615141633323627373E0133321514 +0F01018C5A0A1C28F52D200214DC3B163EBA222B390117181F2F22202E28392D9501021C +14111C1B12151B958D0E0D0D19208D0290FDE33E2203101002181B0812836F29191E0310 +1007326301E6082A1B212E2F211D2DFE720107FEF901DA131A1B12141C1C5E790C071A10 +134F000000050011FFF501DC035C00080013001E003F004D0000133736321615140F0116 +14062322263534363332163426232206151416333213170E0123223534370E0123222635 +343E013332173F021706070215143332370334262322070E01151433323736D1A20A1E15 +11ABB03B292B393A292A19271C1A27251C1D730D38351E2817385E352C38578641430D0B +033D070105590E0F25471E1A443F212C3C3B444D02B2A00A150F120A6A3A523A3A2A283B +803826271A1C26FE610B442A29195A54493D374C9E663A300307030411FEBC270D290117 +1A205C31782E4A626F0000000003FFE50000038F036C00080049004C0000013736321615 +140F01050727363534262322060F01323E0337170727363534262B01070615143B013236 +37170721353E013F01230706151416171523353E0137013E0135342F0135170133022FA2 +0A1E1511AB013D211101457B2316073D36342F19130E124511062D49283E09331E706F39 +1240FE0E2C1D0731BE65181828BB131D2401711709261A7BFEF4AD02C2A00A150F120A6A +3599020D17351D0D18DE0408191D1F04E80424101F13D920111D365205A410041319AA83 +20180F0B051010041B2D01D11D0F091901011028FEAA000000040017FFF5028002980008 +002F003A00490000013736321615140F0117073633321615140706070615141633323717 +0E0122263534370E0123222635343E013332173716342322070E01073E01372734262326 +070E0115143332373E010133A20A1E1511AB75163B3F252C42348A0821253C520A2A6D5E +39063B5731262E59843B360C13BA2321201C2216444919CE1914353C252E222A26364901 +EEA00A150F120A6A373E4026203A2B2127221A372F4D0C333D423814145C46332F4FA86B +2F2D5F48231E4040142C2132171C01573680363C293AA7000004003CFF9702BB036C0008 +0020002900330000013736321615140F0125071E0115140E012322270723372635343E02 +3332173709012623220E01151409011633323E0235340163A20A1E1511AB01173D2F2C7E +C0603A2E442C5059446E9A50353331FE4B016522324E8D4D0196FE9A20324377482902C2 +A00A150F120A6A105E24654D6DCB7812697C3C8849A18356144CFD7802151A9ACC554901 +CAFDED1D6593993B3D0000000004001CFF7901D5029800080021002B0035000013373632 +1615140F0137071E01151406070623222707233726272635343633321737070316333237 +3E0135340313263122070E011514B4A20A1E1511ABD53A303344385356080C3D23402714 +25BA6C0B063725BE0B0B4238202AF5BC0A342B313E01EEA00A150F120A6A3C770B4B333C +823047027E830D15273D73C4017294FE78045231823632FEA60185022E35994728000000 +0001FF84FF3100F601B9001E000013030E01232226353436333215140615143332363713 +363534262B01353637F6681F5B41232C1811270C121E291A4810151B1A2D7C01B6FE6679 +72221B121A250C0F070C4E680124410F110E10031600000000020013FFF601A501CC0030 +003A00001333363332161514070607061514333236353426353436333216151407062322 +2635343F013635342322073736333215140F013637363534232206AD015351272C673891 +123C2137061B13111A41354738400C300514151A0731352F1024632E3936274101834926 +23583C20314A0D391C1509160B0F1A1A142E231D2C2C162EBF170D1D121C303010498D20 +222A3E322E00000000020011FFF601E701CC00180027000001030615143332370F012737 +0623222E023534363332173703373635342623220615141633323601E75706290B07049F +040F3E5411263320AF6938274A993A022E22417D3E2C224001CCFEA61A0718011034033D +400A1A3E2D77D02B2BFE9AE6070D262AA0683F3F2200000000020011FFF601E701CC0018 +0027000013073633321E021514062322270723133635342322073F010F01061514163332 +36353426232206DA0F3E5411263320AF6938274A155706290B07049F173A022E22417D3E +2C224001C93D400A1A3E2D77D02B2B015A1A071801103470E6070D262AA0683F3F220000 +00020017FFF501E802AB001F002D000037133E013332161514062322262322060F01333E +0133321615140E012322263501342322070E0115143332373E0117721987652337190F16 +321026520F3E0132593634405E974B2E54016D46454420282E42392E403001A55D791E1A +10163C4C37E4534440384D9C6320150108567336832E223B308500000001001EFFF501A9 +01B90022000013273E013332161514060706232226353436321615140615143332373635 +342623220669102E5738474C44374D5A2E3B1C28130F253F2E5B2E2B274001430A3A324E +4C437D2D3D2E23141C1711091D0A14306089363C260000000002FFFDFF6001A901B90029 +00380000073726353436373633321615140622263534363534232207061514173E023332 +161514062B0122270725342623220E04071633323603775644374D5A2E3B1C28130F253F +2E5B222322341C22324843162A1D76013D20150C150F170B1E07222C3529A09E1F72437D +2D3D2E23141C1711091D0A14306089451A28231E251B31340797F00F150707150B21080C +260000000002000FFF17020F02AB002B003A000001170703061516333236333216151406 +23222635343F010E01232226353436333216173337363534262735360334262322070E01 +15141633323E0102090627A60A022A11321512173C2243480D232B53343239C1631F1D05 +012D0E162A4D591D122F2C32421F1B2D5C3B02AB0698FDA22719363C170F1E1A413B2734 +8B493B3D3877D81C1EA331161008021107FECE1A1F2E35933E222762980000000002000F +FFF302EC02AB002A0039000001373E013332161514062322262322060702151433323637 +17062322263534370E012322263534363332160734262322070E0115141633323E010174 +1D1987612337190F16321025520E7C120D1D280C4D4613160D2B53343239C1631F1D0B1D +122F2C32421F1B2D5C3B017F6557701E1A10163C4936FE390714192E0A7218151E3B493B +3D3877D81C341A1F2E35933E222762980002001FFFF501A001B90014002100003F011E01 +333236372E0135343633321615140623220134262322061514171E0117361F12202C213A +5E0762684A364F5E8B607301072B241F26100F363807610C2C1F5C3D0D493233436A5065 +A50128394C3322171C1B1F10400000000002001FFFF5019C01B90015001F000013273633 +32161514062322263534363736342623220617370607061514333236550C58743D4ABB70 +272B99830A332A213C9811703132232A5B01410C6C4B3E75C624204268111452321FBB2C +1B2F3031276100000002001FFFF5027F01B9002C0038000001170E01232235343F010716 +15140623222635343E023F01262322060727363332161737170706151416333225070E01 +151416333236373602641B10381D410A105B04BB70272B1D342E1E751138213C360C5874 +2D410F86052006161524FEEC622A450F142A591C0F01250C1D2A3A0E2A3D2F0F1375C624 +20243F30201040501F2C0C6C2A25440477180218113139185B4115135F4726000001001F +FFF201D301DB002E000037352634363332171E011514062322272E012322061514163B01 +152322061514163332371706232227263534363736D15D74503B2E161C1A16230E0A1214 +2E482E26060B3F5F2D274F5D095C6C4C2F24312821F902157C4F1A0C2B13121A34241743 +2D21221E4D38242A3E0C562219302849131000000001001FFFF201BF01DB002E00003735 +363736353426232206070E01232226353436373633321615140715161514060706232227 +371633323635342623DF341C38282112120A051912161A18182E3E41528E7135253F4C6D +310F3E4E36542E2CE91E011426351E251B23131E1A12102C0D1B342B621F020E58244714 +22560C3E503723290001001FFFF2029A01DB0043000001170E01232235343F0107060715 +1E01151406070623222737163332363534262B0135363736353426232206070623222635 +343637363332161D01371707061514163332027F1B12371C410B0F551771343D35253F4C +6D310F3E4E36542E2C0B341C3828201312090E25131B1A182E3D40527405240215162201 +250C1E293B0D2E392C42180206342C24471422560C3E503723291E011426351E251A2035 +1911142B0D1A352A093B0485080518100002001EFFF201CA01DB0013002B000025151615 +1406070623222635343E013332161514073532373E0135342623220E0115141633323736 +35342726013C71321F415057564484533958E027181E2B281F3B602D2E2F3626333312FB +020E5923431327544B549660303160311E0B0E371F1E26667E353A51202A3B3910050000 +0001FF9CFF31015401B90027000001150E010F01330723070E0123222635343633321514 +0615143332363F012337333736353426233501542F220C1C4107422D1F5B41232C181127 +0C121E291A338A078B1E041F2401B910021E2D701FB17972221B121A250C0F070C4E68D0 +1F7B12081711100000020008FF2C031F02AB002A00390000013736333216151406232226 +23220607030E01232226353436321E023332363F01062322263534363332033736353426 +23220E01151416333201E40838A02536190F16321022211286179D5D337815201E183220 +3E5C1017514D464EBD72382C3804302A365C2F3C383501B21FDA1F1A10153C404BFDE75A +5F272810151C201C523E5D43664973C7FE7DE10F122938557132405700020008FF2C0243 +01E200220030000001030E01232226353436321E023332363F0106232226353436333217 +3E0437033736353426232206151416333202437F179D5D337815201E1832203E5C101751 +4D464EBD723B30080C0C051003973804302A50713A3A3501E2FE03596027280F161C201C +523E5D43664973C73306090D061503FE76E10F122938A9503E58000000010034FFF50232 +01B90030000025150E010F010E0123222635343637363332171E02333237330723262726 +2322070E0114163332363F0136353426273502321F1B0720039F216278463D5568223A05 +120C02190C101D100E1421424F352E3E4F472348041A05181FE70B02151F820D22525446 +7928370D010403158B35172529227E7E49141268170C100B010B00000002000FFF1601AA +01B90034003E000037173E01353427263534363332161514070607171615140623222635 +343E05372E01272E01232207353E02373633321603270615143332363534F31543371A1A +1711161E2C28450D083E372323030A0A140F200B053D130E211E100F0F27281D080C0B3D +05094B1E1A20BA6E6E73201010111610152017325E566F492B233D43211C060E14101F15 +2D1034F430251B04110309070302BAFEAD2D621B25271E1B00020004FFF601DB01C20032 +0040000013373E0237363332161514072E0123220E040F011E03151406232235343F0127 +2E01232207343633321E02170F010615141633323635342E02E83F07251B0E1813181C0B +06251708110B120612014903110708552F4E2F393B071E112B0F3929131B150B08032E21 +1911182606050D010746092B1E0D1623181D28172006071006160152082E1725112F453E +2B313C881013352B550C1C1514C232251A101128180A180E1F00000000010013FF0E01DE +01C2002E000001030614163B011506072713062322263534373635342623220607273E01 +33321615140F01061514333236373E013701DE920D1A0F1B4C5107798264212030220A07 +0C1D290D2E3E2614181437071C1B55281F241D01B9FDD632180D0F09120601BFD3251E2B +966815070B1D330D41311713114BCF1C0519503C305B6F0000010013FFF701EE02AB0034 +000033133E01333216151406232226232206070336333216151407061514163332363717 +0E0123222635343F01363534232206070E0107137C1987652337190F16321025530E4F82 +64212030220A070C1D290D2E3E2614181437071C1B55281F241D01D65D781E1A10163C49 +36FEDCD3251E2B966815070B1D330D41311713114BCF1C0519503C305B6F00000001FFFA +FF1701EE02AB0033000033133E0133321615140623222623220607033633321615140703 +0E012322263534363332163332363713363534232206070E0107137C1987652337190F16 +321025530E4F82642120095E1987652337190F16321025530E6B071C1B55281F241D01D6 +5D781E1A10163C4936FEDCD3251E0F21FEA65D781E1A10163C493601941C0519503C305B +6F00000000020010FFF50108028E000A002B000001140623222635343632160307230706 +1514333237170E01232235343F01233733373635342627353637170701081D14161A1B28 +1E0B084A250A0E193B0D2A3A253116144B094B130917292E7204310257151E1D18171E21 +FE981F87220A0F4E0B4131371D524B1F47200C0F080110041503B10000010033FFF6010A +01C6001D0000371706232235343F01363534262322073537363332151407030615143332 +FD0D4E41480C38081010110E75200A050654042C20500C4E41172ED11A0B0F0904132409 +0B0515FECC1009280001FFF80000012A01B90017000001150E0107030615141617152335 +3E013713363534262735012A2C1B0B4106171DCD2C1C0A4208181E01B911021C2AFEFD18 +101211011111011D29010D20060E0D021100000000010004FFF5014B02AB002E00000133 +062322270706151433323F01170E0123223534371326232207233E01333217373635342B +013536371703163236012F1C16490F213E08111B28190E2D4129310449160C250E1D0F2E +2709162F0331124655064B1C281701A7680BED1D0E1239230A473638110D0119062E3A30 +04B50A091610081305FEE10C130000000002000CFFF5016E02AB002D003800000117060F +0206151433323F01170E01232235343F0106232226353436333217373635342B01353637 +1703373E0107372623220615141633320166083A5F092A08111B28190E2D412931042B10 +0D252E56320A142803311246550666082152CB2508081E3A1C160D01680D3A2003A11D0E +1239230A473638110DA4022D233451059A0A091610081305FE7A02082C438E03391E1823 +00010008FF17011702AB001C000001030615143332363332161514062322263534371336 +35342B013536370117C10F271132160F193425543A0BA3033112465502A6FD1E3C1D323C +1610191F423F242C026F0A091610081300020029FF17021902AB00340040000001073633 +32161514062322272E013534363332171E0133323635342E0223220F0106232226353437 +133635342B01353637170721072322060F010615143332370219CE0B0D3645AE74392F14 +171A17240D091B263C7A162423130D18581D241717077910370C4853063C013833CA2F27 +0C310D0E080D0190CC03463F85A61F0D2811121A3A261480691E2D150A1B5A1D2015131B +01CE3D051810091206E340282EBB3405100D00000001000CFFF702C001B9004200000103 +0615143B0115072737062322263534370E01070623222635343F0136353423220F012737 +36333215140F01061514163332373E01373303061514333236373E013702C0580A2919A2 +033A825A1D1F28354724201F1B1F03440A0C162B150F054D432A0D3C080D082F54252A1D +4B56081519522A19232401B0FEC2261016101F02D1D3201C267254551714231C0D0FFB25 +0810351A0C076B2E0F33E32006090C75346973FEC21E10194F402758770000000001000C +FF1702C001B9003B000001032313062322263534370E01070623222635343F0136353423 +220F01273736333215140F01061514163332373E01373307061514333236373E013702C0 +B05479825A1D1F28354724201F1B1F03440A0C162B150F054D432A0D3D070D082F54252A +1D4B1B431519522A19232401B0FD6701B3D3201C267254551714231C0D0FFB260710351A +0C076B2E0F33E31C0A090C753469735DE728194F402758770001000CFF1702A001B90043 +00001307363332161514073E013736333216151407030E01232226353436333216333236 +371336353426232206070E01072337363534232206070E010723133635342B013537D13A +825A1D1F28354724201F1B1F03721474512537190F1632132335106A070C08164826252A +1D4B1B431519522A1923244B5A082919A201B7D1D3201C267254551714231C0D0FFE5949 +571E1A10163C463C018F1C0A090C40353469735DE728194F4027587701451E1116101F00 +0001FF92FF17024401B90043000025170E0123222635343F013635342623220607060F01 +0623222635343633321633323E0437133635342627353E013717073E0133321615140F01 +0615143332373602360E333623151D102F110F0C1E4A332D29182D982536190F1632100C +13100A0E060871021B2627601B04434A6C311F220A380E10132A07750D462B1B1B1239A2 +3C130D0F4C4B429558A81F1910163C0716102A141D019D0A070F0B011008110602DA7666 +211C1923CB320B12350800000001000EFF1701E701B90032000001030615143332363332 +1615140623222635343713363534232206070E010723133635342627353E013717073E01 +333216151401B0690D2C1132160F19372545480A5311191E4731211F244B60021B262760 +1B04434A6C311F220140FE85311F3C3C16101A1E4A3C3B2101213C111E4449314E79015E +0A070F0B011008110602DA7666211C190001FFECFFF8025701B900230000011506070607 +0323030706151416171523353E0137132E01233533133736353427262735025725101B0E +540EEA3F08181FB132220D4710161C86CC360705082E01B9110408143BFEAB016AFB220E +140F031111041E34011D160E11FEC1DA1B120B0A0E0411000003001BFFF501D401B9000F +001900230000011406070623222635343637363332160533363534262322070617230615 +14163332373601D439315369464D654F38403E4FFEB6EB0B2621433D1FD3EE102A243D3C +23012D397B31534942539E2A1E4B7E2E282D315B2F4B33372C2F533000020031FFFA02E2 +01B90032003E0000010723363534262B01220F01333236373307233534262B0107061514 +3B0132363733072122062322263534363736333217163303133635342322061514333202 +E21812012B42293506244C3D2F101027101D266527022659274126123CFEF7196511515D +564443570B241C3D9D40043A577F6F4C01B55E060C2013179419289B121B149D05091626 +2F6E04514A508B25240202FEA101040F0D2AA66F780000000002001EFFFC027E01DB0011 +00340000011406232226270623222635343E013332160734262322061514333236373635 +343E03333216151406070615141633323E02027E8C63283006394F424978AB5363875952 +4467AA3D2038070502080E1D14171C3F0402211A263C2111010665A52D2754503F5E9F53 +753B4D4FBF8A582C201A39151C2718111A1223770E070C19203C57530003001EFF170276 +02AB0027002E0035000001071E0115140E010F0106151416171523353E013F012E013534 +3E013F0136353426273533150E0107033E0137362603130E0115141601D82B577261904D +27061C23EC2E270B26576F648C4B2B051C22EC2F253E665D74020237F2665679350257A4 +0852494B7E450592150D130E020F0F031C298F055D494E7B3D05A1160B1411020F0F0219 +EAFE820E9B5E343FFE86017E04965D36490000000001FFD30000014201B9001E00000103 +06151433323715072737070607062322263436333217163332373E013701425110260916 +9B033710223C2B24151A1916131008081B3722292401B9FEDC3B171A03111B02D8234B3F +2D1C2E1F1A0E5E3A677900000001FFD30000018002AB0027000001030615141716171523 +37070607062322263436333217163332373637363F013635342B0135363701809F022309 +1B9E3710223C2B24151A1916131008081B372B16230C1E0D3112445702A6FDA00A081A07 +02020FDA234B3F2D1C2E1F1A0E5E4841672E743006191008130000000001FFD3FF170156 +01B90028000001030615141633323633321615140623222635343F010706070623222634 +36333217163332373E013701427B1E1814113215111838263F4C223010223C2B24151A19 +16131008081B3722292401B9FE456A221C1D3C16111B1C3E3D1C7FAD234B3F2D1C2E1F1A +0E5E3A67790000000001FFECFF17019C01B9001F00003F01363736333216140623222726 +232206070607032313363534232207353717B010223C2B24151A191613100809185A121B +14514992102608179B03DF234B3F2D1C2E1F1A0E932F4743FEEB020D3B171A03111B0200 +00010018FF17019C01B9002F00003F013637363332161406232227262322070607061514 +1633323633321615140623222635343713363534232207353717B010223C2B24151A1916 +131008081A38251D521814113215111838263F4C1551102608179B03DF234B3F2D1C2E1F +1A0E5E3E4EDD3F1C1D3C16111B1C3E3D244A01243B171A03111B02000001002D000001A8 +01D60011000033373E0133321615140623222623220607032D451E615A2637190F163210 +22281451F96A731E1A10163C4348FED7000100420000012501D600140000331336353423 +220623222635343633321615140F0186530D231132160F19372644420E4501292D312D3C +16101A1E463E2932F700000000020019000001F501D0001F002900001333321615140717 +163B01152327230706151416171523353E013713363534271733323635342623220784E3 +424C9A480E1F0A7C5C251A07191CD82A220B41083561113F632B28151D01D0342C652DAA +2212D16A1E0D161301121204202C01011D112805CC44391E230700000002001900000245 +01D0001E002800000123220F01161514062B01353637363713363534273533150E010F01 +3337330507163332363534262302450A1F1F9D5E7853DA2615130C400736D827270B1A25 +C473FE9B2D1915354B403001BE22AA1D424053120414113201011B0D2602121202242F6A +D1F2B7073F31292500010009FF26017801BA003A00000107232623220615141716151406 +2322272623220F0106151433323633321615140623223534371333163332363534272635 +343633321716333237017814100E4B1B203644513F1D1A1517030813011A1132160F1937 +265D02231014502428383F42371424160E140A01BA8C741E1B26404F393D490A09028A08 +0C203C16101A1E410A0A01178828252D464F34323A0A07120001FF92FF17024102AB001D +000017133E01333216151406232226232207030E012322263534363332163332708C187B +592534190F1632103E2488187A592436190F1632103C4802195E7C1F1910163C8CFDF45E +7C1F1811163C00000001FF92FF17025302AB0025000037133E0133321615140623222623 +220607033307230E012322263534363332163332363723378974148B5D2337190F163210 +2847107F5005541F754B2338180F1732101B3E1750071F01D1506B1E1A10163C353FFE0A +1F6E7B1E1911163C6C5B1F000001004FFF17016301D60023000025030615143332363332 +161514062322353437133635342322062322263534363332151401294E171E1132160F19 +3726810D4E12221132160F19372685FCFEC85C101F3C16101A1E8127320138481B283C16 +101A1E86360000000002FFC2FF0D025A02AB002700340000371336373633321615140623 +222623220E0207031615140723363534270E012322263534363332172623220615141633 +323637369F741E473B4E2039180F17321016221B0D0A832C171A141A275549263572401A +0B1718305F2A201B2B090D0E01BA753C321C1D0F163C1E3D2A26FE072C493B2838253624 +5A523324445F1F0652341C26251C250000010026FF9F012801CC0021000013273E013332 +15140703331714070E010706232235343F0123373313363534232206780D2E3B262E104E +4B012119521A060809011C50055457020F0C20014C074633250A40FED806120706412709 +080502672001480806101F0000010006FF17013402220024000001072303061514333236 +33321615140623222635343713232734373E013736333215140F01013405548A07161232 +161018382938430C7E4B012119521A060809011C01AC20FDF81A10213C16111A1D312215 +2E01DF0612070641270908050267000000020009FFF501DF01B9002D0036000001072307 +06151433323637170E0123223534370E01232235343F0123373337363534262335363717 +07333637330F01230706151433323701DF053F19130B0C22250E303624302B586134351B +0F4B074C0C0E16274551042D9D152F4A2E70942403132D6101051F61480611203109492E +302D928E6335126E3C1F303A090C0C0E081303B12A81AB1F930907199300000000010031 +FFF6022801C200280000012322061514161514062322263534373637363534262B013533 +060706151416333236373635342733022826151F27B4644D5F06145512130D2691541B0D +332D465B1411068701AE2013074A2C67A160481A19514910150D11148B6B34262D3B744F +46492E3800010034FFF601DB01B90029000013030615141633323E013534272E01353436 +333216171615140E02232235343F013635342623353637D34B062C203D6D3A05022F160E +161E0502294A73427F0735061627455101B6FEC918081C245D7F39100D052B1610121B17 +09153F816E455A161CD4180A0C0C0E081300000000010014FFEE01AA01B9002D00002515 +060706232226272627070E011514171615140623222635343736373E0633321D0114171E +01333201AA37390B0906071112071F36531219161018203F3740091A0C13090C08040918 +0A171C14140D090C041A585BA620378D230C1116170F1325163A615544091C0E13090A03 +1B188A8C392400000001000FFFEE028801B900350000251506070E022322262726270306 +232235030E0115141716151406232226353413373633321713373637363332161F011617 +1E013302884F10050D08030806051907C006070820634216151710161ED409230A08031D +591720310F070402040813071117130D0D040104020A1878A1FECF0A0E01617B69200E15 +14150C1320185B01020B2B23FECA98263D5E121D5BA44E1B0F0000000001000A000001CC +02870033000013270E01151417161514062322263534373E013332161514062322262322 +070E010706151416171E013332371506070607232226C11543371A1A1711161E834E932B +171C1710131E0C121E0D33070A3E140E211E100F160A2942040B3D00FF6E6E7320101011 +161015201757DA819E181311171C210D430B140F1EFB33251B04110402080ABA0001003E +0000025B01D00026000001150E010F0206151433152335323E023F01272E01273533150E +0115141F01373635342735025B2428339E1B0735D817211308041B4624241FD222140B4E +99162501D012031A329B6A1C112B12120E1A16106E854524021212010A0B071697971612 +0A01120000010011FF2601AD01AC00240000250706151416333236333216151406232226 +35343F01213501232206072737211501333237015C3E09090E1132160F1937262D291019 +FEEE01238828240F1020011BFED4D1191260CE1D0F100E3C16101A1E251C0F365412015E +172504740BFE9B2800020011FFD1017C01AC001A002300000901333633321615142B0106 +07233E013723350123220607273721033332363534262322017CFED47432371F26774212 +07180113059001238828240F1020011B9F4A16191A0F2401A1FE9B54201C54200F012608 +12015E17250474FE90100B0F1500000000010015FF17020501C200280000010736333216 +1514062322272E013534363332171E01333236353426232207270123220E010723372102 +05D710113645AE74392F14171A17240D091B263C7A40370B2E0B0116C7232A100C123D01 +380190CC03463F85A61F0D2811121A3A261480693634130B0103181D2196000000020007 +FECF022001C2002900340000010703323633321615140607172327062322263534363332 +16173E013534262322072701232206072337132E012322061514163332022004F4020804 +345677501925181F2F3A463E312B321A314442360B310B01088A32261212210719211713 +1C341D2301C20FFEF40141445C841B594E062924293337441B6C443D3A130B0125273176 +FD753E292015191C00010037000001FD02AB002500003F013E0135342322060706232226 +35343637363332161514060F01061514161715233536373698444F733B1426051027121C +171A303E554A894A3E091C25ED2D111466FE0189525A2418441A10112C0F1B47365A7F05 +EA2012160D020F0F030C0E0000010037000001EF02AB002800003F012E0135343E023332 +161716151406232226272E01232206151416330706151416171523353E019B3E33451B37 +623F1F4513241A16131B0504241A3258423043081A23ED312566EA0A3C37264B432A150F +1C25121A211B172D87393145FE1C151311020F0F021E00000001FFE7FFF2019D02960028 +000001150E010F011E0115140E022322262726353436333216171E013332363534262337 +363534262735019D31250E3C33451B37623F1F4513241A16131B0504241A325842304108 +1A2302960F021E37E30A3C37264B432A150F1D24121A211B172D87393145F7220F131102 +0F00000000010018FF1201CB01B9002A000017133E013332161514062322263534363534 +2623220607030615141633323637363733070E0123222635341C5C127C47354915130B12 +0E271A26510961032F26364B0D02021909106E4D374C54016F475743321627110B092008 +1D253926FE7D0D0F26324534081026415846341100030016FFEF02C002A7000A00180027 +0000011406232226353436321625140E0123222635343E0133321607342623220E021514 +1633323E0101A5231C1827253425011B72C672738D78C77077845D57543C775A38555550 +995D014C1B25241B1A25244A73CF7F877276CF7A88625E704977A1535C6B81C800030013 +000001F901D00016001F002D000013333215140607161514062B01353236371336353426 +2717333235342B01220F0206151433323635342E02237ED0AB4B3C6D815FEC2C29094604 +1B226F3588701012062E28022B445C152B2C2001D05C383F081548465212212601190F0E +151604BA6C4016B8A20804143C40171D0E04000000020014FFF201D601DB0015002B0000 +373526353436373633321615140623222635343637361723220615141633323E01353426 +2322061514163B01C65D302734355459AA7A3965322923890D3A622E273962322D312D48 +2E2507F902153E273D12175B4C83BF32372D4614110A4B39252A698232394E432E1F2300 +0001001DFFF5028A02030037000025070E0123222635343633321E02173E013332161423 +222E0223220F01232E012322061514163332363F013635342E01273533150E0101D92003 +A21B6676C4791127182E080D3C281623140C0E050D0B220F1A100A413C63894E471D4D05 +1A050E1217BD1F1BA7830E2152547AA405040A022A351A2C0F130F437C3937A166404912 +156A16070C0C03020D0D0213000100190000029F01D00033000001150E01070306151416 +171523353E013F01230706151416171523353E01371336353426273533150E010F013337 +363534262735029F2D1E0A4805191ED82E1C0C20F22006181ED72E1D0C46061820D72B1F +0A1FF21F06172101D012031828FEDF160C1411011212021B2F7E7E170F1312011212031C +30011A170D110C0212120317297E7E180D100B03120000000003FFB0FF17018A028C000B +002800360000011406232226353436333216070306071617232627062322263534363332 +1713363534262B01353637032E0123220615141633323E02018A1E14171F2015141F2168 +0D0F362E28183345792C3C663835264D10151B1A2D7CC4103A0E284E33261A261B0E0256 +141E1D17161E21B5FE663820436A3E4B8935293A51170138410F110E100316FE10080C3D +291F1E142F2600000001001AFF0101D901B70029000001030615143B0115060727130706 +15143B011523353E013727262322070607273E013332161716173F0101D98D1233124B52 +06782B8F250EB324506D25371A1518050A0F232E1E1623181E1E283001ACFDF042161810 +09120601C8216E1E12101002376158812A08120B3F2E232F3A5320B400010019000001D9 +01D0001D0000250721353E01371336353426273533150E010703061514163B0132373637 +01D943FE83261E094907151DC12A1A094C03182232582E0E1D7F7F12011B2501261C0B0F +0D021212021D27FECD09090C072B0F2500020019FF2F029A0246002A0039000001373E01 +333217161514062322272623220607030615143B011523353E0137130E0123222635343E +0133320734262322070E0115143332373E01018B1B12432835202211101F10101613170F +AC02390FED2E24095A3B5A3B2F355989433F012219293433423529293353017B54383F12 +13220C151E1F2037FDA508031F101003181D01225E463E364D9E6552192331318C3E4D24 +2CAF000000010037000001FD02AB002C00003F013E013534232206070623222635343637 +363332161514060F0133072307061416171523353637363F012337B02C4F733B14260510 +27121C171A303E554A894A274D084D10081B25EC2C11150F104E08C1A30189525A241844 +1A10112C0F1B47365A7F058F1F3C1C2C0D020F0F030C0F393C1F000000010037000001EF +02AB003000003F012E0135343E023332161716151406232226272E012322061514163307 +3307230706151416171523353E013F012337B32633451B37623F1F4513241A16131B0504 +241A325842302B4B084B10081A23ED31250E104F08C18F0A3C37264B432A150F1C25121A +211B172D87393145A31F3C1C151311020F0F021E373C1F000003000FFFF302E502AB0027 +0034004300000901333237170721062322263534370E0123222635343633321617373635 +342627353637170F0121072322060727070615143332370334262322070E011514163332 +3E0102E5FED4D11A11101DFED2181A13160D2B53343239C1631F1C072D0E162A4D4C0627 +1B0118488828240F0C3C07120F0A321D122F2C32421F1B2D5C3B01A1FE9B2804600D1815 +1E3B493B3D3877D81A20A331161008021107100697623C172503D81A09140C01351A1F2E +35933E22276298000003000FFF17030C02AB003F004B005A000001073633321615140623 +22272E013534363332171E0133323635342623220F01062322263534370E012322263534 +363332161733373635342627353637170721072322060F01061514333237033426232207 +0E0115141633323E01030CCE0B0D3645AE74392F14171A17240D091B263C7A442C0D1858 +1E2B13160D2B53343239C1631F1D05012D0E162A4D4C063B013833CA2F290D360912080D +2E1D122F2C32421F1B2D5C3B0190CC03463F85A61F0D2811121A3A2614806939311B5A1F +18151E3B493B3D3877D81C1EA3311610080211071006E3402A2EC32407140D01341A1F2E +35933E22276298000004000FFFD102E502AB0031003A0047005600000901333633321615 +142B010607233E013723062322263534370E012322263534363332161737363534262735 +3637170F0121033332363534262322372322060727070615143332370334262322070E01 +15141633323E0102E5FED47432371F267742120718011305901E1413160D2B53343239C1 +631F1E052D0E162A4D4C06271B01189F4A16191A0F242B8828240F0C3C07120E0D341D12 +2F2C32421F1B2D5C3B01A1FE9B54201C54200F0126080D18151E3B493B3D3877D81C1EA3 +3116100802110710069861FE90100B0F15F5172503D7180C140F01321A1F2E35933E2227 +6298000000020026FFF5020B022200310048000001072326232206151417161514062322 +2726270E01232235343713232734373E013736333215140F013336333217163332370117 +060716333236353427263534372303061514333236020B14100E4B1B203644513F1D1A2D +19133E1B2E104E4B012119521A060809011C6B1D231424160E140AFED90D06031A412329 +383F134E57020F0C2001BA8C741E1B26404F393D490A12231D22250A4001280612070641 +2709080502670D0A0712FEBB070A045628252D464F34241BFEB80806101F00000002FFE0 +FF17028F02AB0035003E000001373E01333216151406232226232207030E012322263534 +3633321633323F010E01232235343713232734373E013736333215140F01172303061514 +33323701400A197A592534190F1632103E2488187A592436190F1632103C2226323F1F2E +104E4B012119521A060809011C606957020F155501AC255E7C1F1910163C8CFDF45E7C1F +1811163C7F922E27250A400128061207064127090805026720FEB80806104F0000020026 +FFF002640222004400500000130306151433323726353436373633321615140622263534 +3635342322070615141736333216151406232226270623222635343713232734373E0137 +36333215140F0133071334262322071E02333236CF57021E20340F44374D5A2E3B1C2813 +0F253F2E5B04674B2233444958500F6043111C104E4B012119521A060809011C5005F620 +194A5B093D28122F2F018CFEB808090E192130437D2D3D2E23141C1711091D0A14306089 +1A0E32251C2D371E183111140A400128061207064127090805026720FEC311142D171B04 +2300000000010007014601870346002F000001170E0123222635343F0136353423220607 +0E01072313363534262B0135363717033633321615140F01061514333236017C0B263520 +1014112E06191548211A1E183F780D160D16434106666C541B1C043C050E0A1A01A40931 +24110E0C389A1602133C2C2343530194290B080A0B080C04FEB59C1B160B0CBC12070D16 +000100070146019E0346003A00001B013E0133321615140623222E0427262322060F0136 +33321615140F010615141633323637170E01232235343F01363534232206070E01070770 +115D39354B100C05090509030A021A1C21390B456C541C1B043C0509050A19220B263420 +25112E06181648211A1E18014D017937491F180B10030208040D021F3724E19C1B160B0C +BC0F0A050815260931241F0C389A1602133C2C23435300000002002C00C7015E0353000A +00290000001406232226353436333207030E01232226353436333215140615143332363F +01363534262B01353637015E16101217171110024F1745321A22120D1E090D171F14370C +1015131F61033A201616121017A3FEC95C561A140E141C090C05083A4FDD310C0D0A0D01 +11000000000100020159014002B2001F000013373637363332161406232227262322070E +0107233736353423220735363717740D1A38251F13161613110D0707182F1D232042460E +210E0D1B6C0202071C373523162418140B492D5060E42C1514020D041102000000010000 +0159013E02B2001F00000107061514333237150607273707060706232226343633321716 +3332373E0137013E460E21011A1B6C022F0D1A38251F13161613110D0707182F1D232002 +B2E42C1514020D041102A91C373523162418140B492D50600001000000A3014F02B20028 +000001030615141633323633321615140623222635343F01070607062322263436333217 +163332373E0137013E6B1A15110F2B120F15302138411E290E2031251F131616130F0F07 +0717301E231F02B2FEA5521B16172F100E151630301663871B3D2F23162418140B492D50 +6000000000020006015901CE02AC001D002800000123220F01161514062B01353E013F01 +363534273533150E010F01333733050716333236353427262301CE09191A7F526344B823 +1C0A2F052FB6211F09141FA161FED92114142C3C20152B029F197C15332F3A0D041A25BB +16061C030D0D021A224E99B186052D241E110B000001000F0147020302B2003200000113 +3E01353427263534363332161514070623222F010706070623222726272E012B01353637 +3E023332161716173736333201411A4E341111120D1118A82109060317462B01260C0901 +0A0F050E12162D1E040A070206040513069805050602A6FEEA6153190B1110100A0F1A13 +40D42A1BF6794C024A25CF38160C09080701020208134E90F00800000001001000CA0165 +02B5003100001317363534263534363332161514070E012322263534363332163332373E +013736353426272E012322073536373236333216DA105D28110D1117633C6F211115110C +0E18090E160A2705072F0F0B19160B0D411D010A04082E01F3539B280B1A110C10191143 +A56277120E0D1216190B3308100A17BF261C15030C0D05018D0000000001004F01BB00EC +02AE0017000013170E01151433323633321615140623222E013534373E01E80433330A02 +1106151D30180D1C1B040F6302AE131C41110A0419191D1D081E19140D3754000001001E +0127013302B2001C00001333323635342322060706232226353436373633321514062322 +270723430C44552F111D040C1E1115141426327C794B0D051A2501BE5A424B1E1137150E +0D230B156353840152000000000100170127015702B2001E00001337062322263D013E01 +333217161514062322272E012322061514163B01078D0E050D3141045E6334252215111E +0B041E11294A3B2E0C2501275201403206536F1916210E1534131F692D232E970001005B +01EC0181029500060000012327072337330181245289279D3101EC6868A9000000010079 +01EC01AA0295000600000107232733173701AAA2305F26598D0295A9A969690000010075 +01EC01A2028A000C000001330E0123222635331633323601851D0B6240433D1D08632E4A +028A435B4F4F6335000100CF01FC0131025E000B00000114062322263534363332160131 +1D14151C1D15131D022D141D1D15141C1E0000000002009B01FC016302C3000A00150000 +0014062322263534363332163426232206151416333201633B292B393B282A19271C1A27 +251C1D0288523A3A2A283B803826271A1C2600000001FFECFF5700C80028000F00001F01 +0623222635343733061514163332B71134492837461821211A2F4A124D352A3D352D3017 +1E00000000010064020501AB02700013000001330623222726232207233E013332171633 +3236018F1C164912274718240F1D0F2E272036291514170270680F1D2F3A301813130000 +0002005D01EE01E6029800090013000001373633321615140F0123373633321615140F01 +0107A00A110F1511ABCDA00A110F1511A901EEA00A150F140A68A00A150F140A68000000 +0002001700DA014F02AC0029003500000115220E040F01171615140623222635343F0127 +26272623353315230615141F01373635342335030706151416333236353427014F070D08 +0C040C017D0E042E281A2415381A080B0619850B1A031868111B862C0C0E0C12190502AC +0B07050F051401BF4B160C2C3A1916201C499D3627190B0B031A0D159BA31C0A110BFEC8 +3D18130C101B140D1900000000010029014D00D6034500190000130306151433323F0117 +0E012322353437133635342B01353637D66F060C141D120A20301E23036302230D2C4403 +41FE58150B0D2A19073427290A0B017D0707100B050F000000010010014F012202B30029 +000001072326232206151417161514062322272623220723373316333236353427263534 +36333217163332370122100D0A3B151A2B353F32161511110F080C0F0D103E1C1F2B3234 +2B111B13090F0902B36E5B18151D323F2C30390807107C691F1C24363E29262E08050E00 +00010004014D017B02B3003C000013173E013332161406232226232207141F0116333237 +3E0237170E012322262F01070E0123223534363332171633323F01272E01232207273633 +3216D90A29341A0E130F0C07180A1737061A07100F17030704020C232716131408174619 +1E14270F0C0A0F0E060D1C4117080D0F092402471E0F10026F2D4031101A100E600D176A +2020040A0602073625181E5E5E2214220C100907275C6224120A0D1A1B00000000010008 +014D0159034F00230000133726353436333217161514062322272E012322061514163307 +06151416171523353E0157295D5F5E2D252715111E0A051D11274332252D07141BB8271D +019CA6134D426B1517220E1532151D692D2635B520070F0B020C0C02160000000001000F +FF6D0131004600060000250723273317370131841A84454C4C46D9D9787800000002000A +01FB018B02990003000700000121352115213521018BFE7F0181FE7F01810263369E3600 +000100A001EE014202890009000013373633321615140F01A05E111A0910285801EE8417 +0C0A0F25510000000003004601EE01830289000B00150021000001140623222635343633 +321607373633321615140F0127140623222635343633321601831D14151C1D15131DE35E +111A091028581A1D14151C1D15131D021F141D1D15141C1E4484170C0A0F255131141D1D +15141C1E0003FFCD0000023402A6000900240027000013373633321615140F010123353E +0135342F012307061514171523353E01370133131E0117270B018B5E111A091028580187 +F52D200214DC3B163EBA222B39011D1A5C0A1C28C32D95020B84170C0A0F2551FDF51002 +181B0812836F29191E03101007326301F0FDD73E2203F60107FEF90000010096014A0105 +01B9000A00000114062322263534363216010521181620202E210180171F201618212100 +00020007000002A702A60009003A000013373633321615140F0125072736353426232206 +0F013332363717072736353427262B01070615143332373637170721353E013713363534 +262735075E111A09102858027E1F16034A762A1A05424E422C1D1244140707113D4E2024 +4F814A2638103EFE052B1A0C7B0B1F2E020B84170C0A0F2551829A0219152D1C0911E920 +4104E8051F1518070F707F132227144E08A21008172B01BA251B14110410000000020004 +0000033502A60033003D000001150E01070306151416171521353E013F01210706151416 +171523353E01371336353426273521150E010F0121373635342627350537363332161514 +0F0103352C1C0C84031E31FEEE33290A40FEE34203192DF5291F0E760C1D30010F2D2D0A +36011D2E0E2028FDC75E111A09102858028D1008182AFE1F0C0C1510051010042227E9F4 +0A0C161006101004203201AE2E12150F051010032024C6A4340B131403108284170C0A0F +2551000000020003000001AD02A600090021000013373633321615140F0125150E010703 +06151416171523353E013713363534262735035E111A0910285801882A1B0D780F192CF4 +2A1F0B780D2028020B84170C0A0F25518210051A2EFE533517140E051010081A2901B92E +10141502100000000003003AFFEE02BB02A6000900190029000013373633321615140F01 +051406070623222635343637363336160734262322070E011514163332373E013A5E111A +09102858025F735C696D6377624F707D6B7669453C6357353D433F5C4E3B46020B84170C +0A0F2551696BC43E477C6E5BC1456101863447517548B64E52575F4AD600000000020008 +000002D502A6002D0037000001072623220E020F01061514161F011521353E013F013635 +3426232207273E01333215140733353E013332171605373633321615140F0102D5101117 +2F5B432C0F280A171E24FEDF332B0D380A313C141A072433208F0203257F3A1C1412FD3B +5E111A09102858025C0719517F6F348C221513100203101003202FC5423E69580B0E1A17 +CF1E100165950E0E7384170C0A0F25510002FFFA000002E302A600090039000013373633 +321615140F0113372635343637363332161514060F01333E0437170721373E0135342322 +070615141617072137170615141633325E111A091028589E0593473D6DA4767499810780 +1814221317081238FEE82857778C6C54612A2A18FEF12A1104201E020B84170C0A0F2551 +FE5325309B418032597C6A6BAC1A2502030B101F1605AEA613A962B55766723D590EA6B3 +0514101A1200000000040031FFF501830289000B00150021003A00000114062322263534 +3633321607373633321615140F0127140623222635343633321613170E01232235343F01 +36353426273536371703061514333201831D14151C1D15131DE35E111A091028581A1D14 +151C1D15131D360D2A3A253116300917292E72045E0A0E19021F141D1D15141C1E448417 +0C0A0F255131141D1D15141C1EFE400B4131371D52B1200C0F080110041503FEA9220A0F +0002FFCD00000234029C001A001D00002123353E0135342F012307061514171523353E01 +370133131E0117270B010234F52D200214DC3B163EBA222B39011D1A5C0A1C28C32D9510 +02181B0812836F29191E03101007326301F0FDD73E2203F60107FEF90003FFF80000024C +028D0018002400310000133332151407060715161514062321353E013713363534262713 +33323635342623220E01070307061514333236353426272682FAD040224D7E957EFEF029 +1D0D790B1E2F76266267383D17110E05492023435869261D22028D96462B171001267062 +6610061C2E01B42719160F04FEEE4E4A3834030F12FF007785072A58522D400A0C000000 +0001000800000285028D001E00000107273635342E01232206070306151416171523353E +01371336353426273502852015031C505B231C05840E222BFB291E0C7B0A1B31028D9A02 +160B27210E0D13FE27320A121203101003202B01BA2419150F0410000002FFE00000020E +029C00030006000029010133130B01020EFDD201901A1157FF029CFDC201B0FE50000000 +0001FFFF0000027A028D00300000010727363534262322060F0133323637170727363534 +27262B01070615143332373637170721353E013713363534262735027A1F16034A762A1A +05424E422C1D1244140707113D4E20244F814A2638103EFE052B1A0C7B0B1F2E028D9A02 +19152D1C0911E9204104E8051F1518070F707F132227144E08A21008172B01BA251B1411 +041000000001FFFA0000025E028D00150000090133323637363717072135012322070E01 +07273721025EFE1DA1474B1B29241336FE0701DFAB6628161517132D01E6027FFDA50C14 +1E4A03A90E025B1B0F1F2B05930000000001FFF800000301028D0033000001150E010703 +06151416171521353E013F01210706151416171523353E01371336353426273521150E01 +0F01213736353426273503012C1C0C84031E31FEEE33290A40FEE34203192DF5291F0E76 +0C1D30010F2D2D0A36011D2E0E2028028D1008182AFE1F0C0C1510051010042227E9F40A +0C161006101004203201AE2E12150F051010032024C6A4340B131403100000000003003C +FFEE02BB029A0014002400340000013306152334262B012207233635331E013B01323637 +1406070623222635343637363336160734262322070E011514163332373E01020C133513 +151A693C1813351306141A621D32B6735C69716373624F707D6B7669453C6357353D433F +5C4E3B4601AD8948201A3A815023161E106BC43E477B6F5BC1456101863447517548B64E +52575F4AD60000000001FFF800000180028D0017000001150E0107030615141617152335 +3E01371336353426273501802A1B0D780F192CF42A1F0B780D2028028D10051A2EFE5335 +17140E051010081A2901B92E101415021000000000010007000002D2028D003500000115 +220705131E0117152135373635342E032F010706151416171523353E0137133635342627 +3521150E010F01373635342F013502D21C31FED6A817222FFEED1D2E030A0610027B410B +1D2AF72B1A0C7C0E222D010E2A2E0B35998F2418028D1025E1FEDB281505101003041C06 +0E130B1C04D7ED260D171104101005182A01BD320C1514021010031F28C26D65240F0403 +100000000001FFCD00000234029C001900002123353E013534270B01061514171523353E +01370133131E01170234F52D200246E5163EBA222B39011D1A5C0A1C281002181B081201 +AEFE6629191E03101007326301F0FDD73E22030000><0001FFEE00000368028D00280000 +01150E01070306151416170721353E01371301230B01061514171523353E013713363534 +27353313010368291D0B7B0E242D01FEF131280D7EFE88113E760946C5282517720C4AB5 +38014F028D10071B28FE45320C141501101005222F01CBFDCF0222FE5420162B05101005 +2F520191290B1E0410FE1401EC000001FFECFFF102D7028D0022000001150E030703230B +0106151416171523353E013713262335331B0136353426273502D71B15190D109212E672 +091F27C62B241B75173FA0CF6A081B2A028D100607232A37FE050226FE5A1F1715130310 +1006335F019F3610FE0D01841C101B1404100003FFFA000002A8028D000D002600330000 +0107273635342623212206072737050727363534262B01220607273717061514163B0132 +3E01371307213717061514332132363702A82C11021C2CFEE3292F0F122A01703B110215 +289621290F123813031D218F21250E0D3438FDE72C11043E013F344015028DA40212051C +151D28049BC5DA020C0F1510182504D1040B12160B11161EFEE3AEB30513112C20350002 +003CFFEE02BB029A000F001F000001140607062322263534363736333616073426232207 +0E011514163332373E0102BB735C696D6377624F707D6B7669453C6357353D433F5C4E3B +4601A26BC43E477C6E5BC1456101863447517548B64E52575F4AD60000000001FFF80000 +0301028D0025000001150E01070306151416171521353E01371321030615141617152335 +3E01371336353426273503012C1C0C84031E31FEEE32290B91FEE39303192DF5291F0E76 +0C1D30028D1008182AFE1F0C0C15100510100421280208FDED0A0C161006101004203201 +AE2E12150F0510000000000200000000025D028D001C0027000013333215140607062322 +270706151416171523353E0137133635342627170716333237363534232292F1DA251F45 +883723350E1E27F42B1B0E74111C2BAE451D17572947822C028D94284D1A3908C1360912 +13041010061B31019E3D161411052DF50518285E7B000001FFFA00000293028D00150000 +010727363534262B011301213236371707213501033502931F1603415AB2A0FED4013139 +421B1342FDDA015EC1028D9A020F1C2D1CFEFAFEFB2F3A03C40F0136013A0E0000000001 +003B00000279028D001A00000107273635342B0103061514161F011521353E0137132206 +07273702792C1103653A890E161F23FEE0342C0B8F775324122A028DA402191551FE1631 +11171103031010051E28020F2B51049B00000001004E00000288029C002D000001072623 +220E020F01061514161F011521353E013F0136353426232207273E01333215140733353E +013332171602881011172F5B432C0F280A171E24FEDF332B0D380A313C141A072433208F +0203257F3A1C1412025C0719517F6F348C221513100203101003202FC5423E69580B0E1A +17CF1E100165950E0E0000030032000002DB028D0025002D0035000001071E0115140706 +070615141633152135333236372E01353437363736353426233521152322070332373635 +3426011322070E01151401FE0C65845B55AF0B2A33FED7092E300C62845856AF0E192D01 +1F11582563783B3C47FEF6637143201902462A045659604D48031D1B1712101029380159 +585F4C4A04310F130E10107FFE973F405A3F4BFE9D0169462245318100000001FFE30000 +028F028D0031000001150E010F01171E01171521353E0135342F0107061514331523353E +013F01032E01273521150E0115141F01373635342735028F213725A965122433FEF12B22 +0E43971742D528486C53670F252B0107291E103B91153D028D100B292BC2FF2D1A061010 +0111131023A5AC1A1621101007437E6100FF251C041010051113112793A718131F031000 +00000001004D0000030A029B0043000001150E04070E032307061514163315213532363F +0122353436353423353332161514061514163337363534262B0135211523220F013E0337 +3E0333030A11190F070A021346595C343B062535FEDF312F0B3BC5222A1D2F35153A313B +0A16270B0116114D10430F303E360B0C1529412E029B1004101C132908415D3316D21808 +181610102228D6921E660F361038361152132F33D92509130E101037F101101F3D272B34 +381B0001FFFA000002E3029A002F00003F012635343637363332161514060F01333E0437 +170721373E0135342322070615141617072137170615141633F20593473D6DA476749981 +07801814221317081238FEE82857778C6C54612A2A18FEF12A1104201E5E25309B418032 +597C6A6BAC1A2502030B101F1605AEA613A962B55766723D590EA6B30514101A12000003 +FFF8000001CC0358000B0017002F00000114062322263534363332160714062322263534 +3633321617150E01070306151416171523353E01371336353426273501CC1D14151C1D15 +131DC81D14151C1D15131D7C2A1B0D780F192CF42A1F0B780D20280327141D1D15141C1E +13141D1D15141C1EAD10051A2EFE533517140E051010081A2901B92E1014150210000003 +004E000002880358000B0017004500000114062322263534363332160714062322263534 +3633321605072623220E020F01061514161F011521353E013F0136353426232207273E01 +333215140733353E013332171602401D14151C1D15131DC81D14151C1D15131D01101011 +172F5B432C0F280A171E24FEDF332B0D380A313C141A072433208F0203257F3A1C141203 +27141D1D15141C1E13141D1D15141C1EDE0719517F6F348C221513100203101003202FC5 +423E69580B0E1A17CF1E100165950E0E00000003001BFFF5022502890009002500330000 +01373633321615140F011703151416333237170623222706232226353436373E01333216 +153707342322061514163332373E02012C5E111A09102858D78E1210171C102540310358 +6A4541312A225D2E3C422E684D34792223495C01090601EE84170C0A0F255142FEFB1227 +3C4A077E696B54443D772B222B47306A9C94B86F3043BF061B1A0002001EFFF501A90289 +0009003D000013373633321615140F011317062322353436372E01353E01333216151406 +2322263534363534232206151416333236321615142322262322061514163332F85E111A +091028584E104E79934232191C017B64303C201012150F253558292103241C142D091A0B +2C5534255701EE84170C0A0F2551FE740A636F2D480D0425173C572F24141A16120A1D09 +143C3E1A1B070C091B0938332A270002000EFF3301BA02890009003B0000133736333216 +15140F0103173633321615140703061514172326353437133635342322060F0123133635 +3423220E05072736373633321514E75E111A09102858750285581F280A571E08490B214B +0E1928921D204B520E0E04090A090B070B020C0D1031302801EE84170C0A0F2551FEF601 +D61D1C1827FEBF6D3E0F130D1F327801122F1923BB616A0131320C110409080D090D020A +16133D2D290000020031FFF50120028900090022000013373633321615140F0113170E01 +232235343F013635342627353637170306151433327E5E111A091028583E0D2A3A253116 +300917292E72045E0A0E1901EE84170C0A0F2551FE840B4131371D52B1200C0F08011004 +1503FEA9220A0F00000000040013FFF601BE0289000B0015002100480000011406232226 +35343633321607373633321615140F012714062322263534363332161735321615140E02 +232235343F013635342322072736333215140F0106151433323E0135342601B21D14151C +1D15131DE35E111A091028581A1D14151C1D15131D3D55552B46653586201C080C162F0D +463D2C08320B3932572B28021F141D1D15141C1E4484170C0A0F255131141D1D15141C1E +880F3B4F2F6D5E3F682A685D1D0A0E3C096A2D191BB527234E77903536280002001BFFF5 +022501B9001B002900000103151416333237170623222706232226353436373E01333216 +153707342322061514163332373E0202258E1210171C1025403103586A4541312A225D2E +3C422E684D34792223495C01090601ACFEFB12273C4A077E696B54443D772B222B47306A +9C94B86F3043BF061B1A0002FFD8FF33020202A6001D003A000007133E04333216151406 +07151E011514060706232227070607233601031416333236353423220623222635343332 +1633323635342623220609890D1D2E364E2D2F4A4F3121376A4735471D25260E114E1001 +01721B155288280921080D112C0320081F3B241F32497F01EF304D573B27313439661601 +033B31459D271E1185311D180292FE501015CC693B080D091806702E35266A0000000001 +0013FF3201B601B30020000009010E05232235343E013736353423220607233633321615 +140E01071301B6FEEE0202080C131D132621360A0F300F240D10253E241C060B01B201AC +FE7B222147272F1532184A62168C298126268B3D391C44530B012D00000000020018FFF5 +01CC029C00260033000001140623222E03232206141E01171E0115140623222635343637 +2E0335343E0133321603342623220615141633323E0101CC131412160B0E1F19203E345B +17231E9772474D9860083314163C49242C4C68261D42732B232B522D025C131D0F15150F +2034303B16213D3669AD4A4460A50908301729132D3D1621FE8F3C36B067293260760001 +001EFFF501A901B9003300002517062322353436372E01353E0133321615140623222635 +343635342322061514163332363216151423222623220615141633320168104E79934232 +191C017B64303C201012150F253558292103241C142D091A0B2C55342557620A636F2D48 +0D0425173C572F24141A16120A1D09143C3E1A1B070C091B0938332A27000001001EFF47 +01DB02AB003A000001170E011514173E013332151406070E011514163332363332161514 +070E01232226353436333216333236353423220623223534372722263534360122052326 +301E6C241F7B4347853736071C033F441C164E221C27181310250C21304C0D3F0F7AD401 +1A2C3D02AB0F0D2613280824471921490630D95C312C01322A2D28222D1A1A11191D271E +320A76D0CF011F1B20370001000EFF3301BA01B900310000371736333216151407030615 +14172326353437133635342322060F01231336353423220E050727363736333215149402 +85581F280A571E08490B214B0E1928921D204B520E0E04090A090B070B020C0D10313028 +E401D61D1C1827FEBF6D3E0F130D1F327801122F1923BB616A0131320C110409080D090D +020A16133D2D290000000003001BFFF501EE02A6000F0018002200000114060706232226 +3534123736333216053336353423220E01172306151433323E0201EE4A3C58753C44835B +38423843FEA5E91E35285E3DD3E91D382246352701FF73D250755C509700FF452A52F966 +67697A87554C598C42646200000000010031FFF500EB01B90018000037170E0123223534 +3F01363534262735363717030615143332DE0D2A3A253116300917292E72045E0A0E1972 +0B4131371D52B1200C0F080110041503FEA9220A0F000001000EFFF301D101B900270000 +3F0136373633321615140623222623220607171E0133150623222F010723133635342B01 +35363717990385600D0D1A1C1A140C200A1A383E62192220271E3E245D3C4C560E211C35 +6203E101AB27051B141519132D41AC2C19100D40A0D30135350E180E0714030000000001 +FFF4FFF001AF02A60021000025330623222635343E013703230136353423220607233633 +32161514021514163332019F101F46171E050902D160013604310E260D1021441C241413 +161E7B8B2F2F1B446A24FEC501AC242B6C242689464144FEF73F352F00000001FFDFFF33 +01E301AC002B000025170E0123222635343F01230E012322270E04072336371333030615 +1432363F01330306151433323601D50E2E3922151C0F2101445B2C1C080915090C0A0647 +1814834B4B0450820F214D4F130B0C217509473018151F2D6879661C245325281408234D +0209FED6120930C13A7AFED44C010F1F000000010014FFEE01CB01B90016000001170E04 +0722353437133635342627353717033601BB100B244357834F1C035C021E23A30369E801 +B204407478573A03160607014D0A07100A01101F02FE861600000001001EFF4701BE02AB +004B000001170615141736333215140623220615141736333215140E022322270E010714 +163332363332161514070E0123222635343633321633323635342322062322353E013726 +35343722263534012804491D5B342F4F4D25301A3B4F351A28220F1D2B3663013736071C +033F441C164E221C27181310250C21304C0D3F0F7A01614D253A0D2202AB10183018053D +1F1E23441B2213291E12190C050D127234312C01322A2D28222D1A1A11191D271E320A76 +528A2619263B301B12490002001BFFF501D401B9000F001E000001140607062322263534 +363736333216073426232207061514163332373E0101D439315369464D654F38403E4F54 +2621433D4A2A243D3C2228012D397B31534942539E2A1E4B282D315B71732C2F532E8100 +000000010013FFEE021801AC002B00000107230E021514333237330E0123222635343F01 +230E020706232226353437363F0123220607233E01330218156603261A1F2C1B100D4933 +1E1D114C680C3434241113141E1E321652062D301E102A5B4A01AC4A0B815D092A3D3757 +2B20222ED220B9721D0C1A1229080D39D11225463B000002FFD8FF3301D701B900140023 +000007133E0133321E0315140623222707060723360134262322060706151416333E0209 +4B228A51171C311D17BF6B261E240A154E140192231F2B56162E1C153E663287011E849E +020E1B372773C8118D291D1F01E62E3E664FA61C1015016889000001001EFF4701C501B9 +002F000001142322262322061514163332363332161514070E0123222635343633321633 +32363534232206232235343E0133321601C5320C40115A8B3736071C033F441C164E221C +27181310250C21304C0D3F0F7A6A9C4C1F360182360B674D312C01322A2D28222D1A1A11 +191D271E320A76589D591C0000000002001BFFF5021301AC0010001C00000107231E0215 +140623222635343E0133173426272206151416333236021312AA0F341DA367464C4A925A +1221193A802A24436301AC4A1829272154904B4245875ECF2E480F9B632C2E9000000001 +000CFFF501AA01AC0018000001072306151433323637330E012322353437232207233E01 +3301AA15854624122C0D1012512E40623D50311019684301AC4A9F4F33291C3D54474FD7 +583D6500000000010013FFF601BE01B9002600000135321615140E02232235343F013635 +342322072736333215140F0106151433323E01353426011455552B46653586201C080C16 +2F0D463D2C08320B3932572B2801AA0F3B4F2F6D5E3F682A685D1D0A0E3C096A2D191BB5 +27234E779035362800000002001BFF33024E01B90021002E00003F013E03333215140E01 +070623072337222726353436373633150E02151416370732373E0135342E01232206DB2F +0E202F42277E2F6643272E354D36531D4A6349392A33583038C040291C38560E100D2131 +0AA7334F502C7F35776D160CC2C20B1D624DA32A20100D6F8B3E3228EFEF0F1EC1502426 +08510001FF94FF3101F201B9002900000901061514163332363733062322263534370723 +0135342623220607233E0333321615140E01073701F2FEE30115180C200D101B42201F08 +C55D011F131A0D230D10080E1720151D1D010201C401ACFE9F1A2B593D25258949374A32 +F40159594C4323261E282C1640500314392BFE0000000001000FFF33029C01B9002D0000 +01150E040706230723372322272635343635342737333215140615141633133303323736 +373E0433029C1C2C1A18090932D1364C3609451D352638013553232929734C73251F4B1E +0A0E1F26402901B910052224442426DBC2C2152657258221540610661CA21D3A3401A2FE +5E1535862B3243241B000001001BFFF5028E01B70041000001333217161514070E012322 +2E01270E012322263534373E013B011522070E01151433323637263534373E0133321514 +070607061514163332373E013534272E012301D81250272D2B2668342431130A1F413335 +4C0A1A9665125135263139214A0F030C0B2C1A232A120D02231E462F161A0508302501B7 +21265349514648171A16252248452A27608410412F913E5E452A161D292D2A3A2E49491F +14070E2232582A75332A1320160000030031FFF50167025E000B00170030000001140623 +222635343633321607140623222635343633321613170E01232235343F01363534262735 +36371703061514333201671D14151C1D15131DC81D14151C1D15131D3F0D2A3A25311630 +0917292E72045E0A0E19022D141D1D15141C1E13141D1D15141C1EFE320B4131371D52B1 +200C0F080110041503FEA9220A0F00030013FFF601BE025E000B0017003E000001140623 +22263534363332160714062322263534363332161735321615140E02232235343F013635 +342322072736333215140F0106151433323E0135342601A51D14151C1D15131DC81D1415 +1C1D15131D3755552B46653586201C080C162F0D463D2C08320B3932572B28022D141D1D +15141C1E13141D1D15141C1E960F3B4F2F6D5E3F682A685D1D0A0E3C096A2D191BB52723 +4E77903536280003001BFFF501D40289000900190028000001373633321615140F011714 +0607062322263534363736333216073426232207061514163332373E0101075E111A0910 +2858AB39315369464D654F38403E4F542621433D4A2A243D3C222801EE84170C0A0F2551 +C1397B31534942539E2A1E4B282D315B71732C2F532E8100000000020013FFF601BE0289 +00090030000013373633321615140F011735321615140E02232235343F01363534232207 +2736333215140F0106151433323E01353426D85E111A091028581A55552B46653586201C +080C162F0D463D2C08320B3932572B2801EE84170C0A0F2551440F3B4F2F6D5E3F682A68 +5D1D0A0E3C096A2D191BB527234E77903536280000000002001BFFF5028E02890009004B +000001373633321615140F0117333217161514070E0123222E01270E012322263534373E +013B011522070E01151433323637263534373E0133321514070607061514163332373E01 +3534272E012301635E111A09102858531250272D2B2668342431130A1F4133354C0A1A96 +65125135263139214A0F030C0B2C1A232A120D02231E462F161A0508302501EE84170C0A +0F25513721265349514648171A16252248452A27608410412F913E5E452A161D292D2A3A +2E49491F14070E2232582A75332A132016000003002DFFF601B402B6001F002B00380000 +011406070623222706073E0233321615140623222E023534363736333216073332363736 +35342623220613342623220E0115141633323601B42C21386A14093E221D2A4C2B3C4070 +532B3C1E0D595E3C2C2A3EFD073C4B2327120E306782221D265939201C3586026921360F +1A01579C2B332D654056912844472884F0452C268D132225230E1466FED01E2D576E251E +31B600020013FFF6020E02A6002D00380000250726270E01232235343F01363534232207 +2736333215140F010615143332372E013534373633321E0115140716033423220615141E +011736020E052522277850860715080C162F0D463D2C08120B396B3D5C7437314936491C +2F2A4F4F292C1240341ECE1303095C75681E1741180F0E3C096A2D191B3C27234ED42890 +5558342E3D553381800E0112A1573C264C611F7900000001004E000002B5029C00330000 +013312333216151423222635343E01353423220E020F01061514161F011521353E013F01 +36353426232207273E013332161514015B036F94262E3E141A1312142F5E47300E290917 +1E24FEDF332B0D380A313C141A072433204A45019801042D204C1914121607020D537F70 +318C1E1913100203101003202FC5423E69580B0E1A1762641F000003001BFF33025302AB +001A0024002D0000010732171615140E032307233722272635343E033B0137130332373E +01353427260313220E011514171601E143461F501934476539364E3649224D1A33456134 +0F4304712520395A2D0CED7238683C301502ABF20C1F5F245254452BC2C20B19671F5055 +472EF2FEF9FE66101DCA463A1C07FE66019A659446401308000000020011FFF5034001AC +001E003B0000010723161514070E01232226270E01232226353437363723220607233E01 +3305210E0115143332363726343633321514070615141633323E02353403401640082B26 +6834332F101F4034354C0A1539232E42231018714001BEFE8E233039234D0A022E212039 +02231E2C45231101AC4A2025495146482424272148452A274C43332F3C704A2F903B5E4A +250F58542E3B58070E223243645D261400000002003CFF3302BB029A001C002C00001737 +2E01353436373633361615140607060F0106151416171523353E010134262322070E0115 +14163332373E01D21B525F624F707D6B76735C4C53110F192CF42A1F018B453C6357353D +433F5C4E3B4672630C79625BC145610186736BC43E330F3D3517140E051010081A027C47 +517548B64E52575F4AD60002001BFF3301D401B900120021000017372E01353436373633 +321615140607060F01133426232207061514163332373E015C36393E654F38403E4F3931 +3D4A38D52621433D4A2A243D3C2228CDC407473B539E2A1E4B41397B313D10C802132D31 +5B71732C2F532E81000000010037FF310299029A0030000017371E013332363534272627 +2E0335343E02333215140623222E0223220E0115141E03171E0115140623228D12125428 +4A65202A842F454122598AA84F881B1A111B122C204B966628494B622034319666767C10 +191D48392C1A22100513243E2B549D6C4145191C1418144C8A4F2834180D120D1448286E +78000001001EFF4701E201CA002E0000013306070623220615143332363332161514070E +01232226353436333216333236353423220623222635343736373601D30F0E5626624E57 +4D0B3D0E3C371C164E221C27181310250C21304C0D3F0F304A4048848501CAA62F142636 +41123D2E2D28222D1A1A11191D271E320A3636513B42090900000001000800000285028D +002200000107273635342E012322060F013307230706151416171523353E013713363534 +26273502852015031C505B231C0540CD0BCC3A0E222BFB291E0C7B0A1B31028D9A02160B +27210E0D13E324D2320A121203101003202B01BA2419150F041000010020FF4201D801B1 +000900000107230733072303231301D80DDB3CB409B4404B9201B138FF25FEED026F0001 +0013FFEE02A3030500270000090106151433323717062322263534363F01052701363534 +26232207273E013332161514060F012502A3FEF52623302B08553D28282440A2FE010A01 +1626140F302B082E422229272A47A2020301F2FE9E331625230F482A1D223B45AC900D01 +632E1D1013230F2622261C203D4BAC9100000001001F000001BD02AB0007000009012301 +2101330101BDFEDA640122FECA012664FEDE017DFE8301330178FED2000000010007FF31 +029C029A0025000013273E0133321615140007353E023534270E0307233E03372E012322 +070323130617105FAC6181A8FEF8BC61A0540D396648300D5E0E415D85461A814F18154B +2B486301F7124E43B293D7FEC41117159BCB643F390A5C827D3A3B8A88670F475404FEE8 +010E1A0000000001005DFF2E01C00228001900001337041716151407273E023736353427 +0727372627072737265D0A010540146912040E0904150BB409B70A16B809B5430214144F +D44148BA940B0A21190D4E4E343F5A1B5C30385C1C5A8F0000000001FFF0FFF3022F01B9 +002A000001070E011514333216151406232226353437270723373E0135342623222E0235 +34363332161514071725022F9C142B31191A201B23303001FC6D940D2A0C0E0C0E140922 +131F252D01010C01AC911F6B20291610131C2F283C5E01E588168226110B0207120F1419 +2825486D01F60002001BFF3301E401B90020002F000005233635342E033534373E013332 +161514060706232227071E041514133426232207061514163332373E0101391003385051 +3856297D403E4F393153694D2102043B4D4C34362621433D4A2A243D3C2228CD06061118 +1A27533B957036474B41397B315339012F34100B1F1F2101F62D315B71732C2F532E8100 +00000003003CFFEE02BB029A000F00190023000001140607062322263534363736333616 +052136353426232207060521061514163332373602BB735C696D6377624F707D6B76FE0A +017D10453C6357310151FE8113433F5C4E4001A26BC43E477C6E5BC145610186AE403A47 +51754186454052575F4F0001001EFFF501A401B900220000010723262322060733072306 +15141633323637170E0123222635343E0133321633323701A412101053305D0DB306B40A +2E2B283D2E102F53464248477C441B340B0F0601B9816B733B201F253840242E0A3A3256 +41478B5B111100010018FFF5019E01B90022000013273E0133321615140E012322262322 +072337331633323637233733363534262322065C102F53464248477C441B340B0F061012 +101053305D0DB306B40A2E2B283D01430A3A325641478B5B1111816B733B201F25384024 +000000030001000002770358000B00170046000001140623222635343633321607140623 +2226353436333216170727363534262322060F0133323637170727363534262B01070615 +143332373637170721353E013713363426273502491D14151C1D15131DC81D14151C1D15 +131DF61F16034B762A1A053F4E422C1D1244140723324E1F234F7F4A2638103EFE082B1A +0C770B1F2E0327141D1D15141C1E13141D1D15141C1EAD9A0219152D1C0911E9204104E8 +051F15200E707E142227144E08A21008172B01BA2C281104100000010046FF300297028D +003C000001333633321514020706232226353436333216151406151433323E0135342623 +22060F01061514171521353E0137132322060727372107273635342B010155015E667D65 +3E3C412734201E151E1C171F54381A27284B362D1046FEF4362A0B8C334D4420122A0200 +2B120366320150586C61FED5413F3121202A1A17121D0413CBDA252931272CA63E082901 +1010051C2A020E3249049B9F0211185000000002FFDC0000025B03920008002300000137 +36321615140F011707273635342B010306151416171523353E0137133635342623350163 +A20A1E1511ABD52C1103659E840F212BFB2A1D0C7B0A1B2202E8A00A150F120A6A5BA402 +121E4EFE173A0F1212031010031F2C01BA241915131000010043FFEE02A8029A002F0000 +0107272E0123220706072107210615141633323635342635343633321615140706232226 +35343637363332171633323702A825120942406D5A421B010A0DFEFB07624D33490B241D +161C2844927590665566753B3014151B0B0298C60153506146692A272D65701B1B05180D +1E241E132C26448B7A67BB3C49110716000000010007FFEE01F2029B0035000001072734 +26232206151416171E0115140623222726232207233717061514163332363534262F012E +01272E013534363332171632363701F228123245343C2043432E73572642200F210A1222 +1402513F3A491A2227031C082D1E674B34211D22120A029BC8035350352F263343445232 +556E170C20E002090E495E47392135252A031F08303D294C580E0B0A10000001FFF90000 +017E028D0017000001150E01070306151416171523353E013713363534262735017E2A1B +0D740F192CF52A1F0B750D2028028D10051A2EFE533517140E051010081A2901B92E1014 +1502100000000003FFE1000001B10358000B0017002F0000011406232226353436333216 +07140623222635343633321617150E01070306151416171523353E013713363534262735 +01B11D14151C1D15131DC81D14151C1D15131D7D2A1B0D740F192CF52A1F0B750D202803 +27141D1D15141C1E13141D1D15141C1EAD10051A2EFE533517140E051010081A2901B92E +1014150210000001FFDEFFEE01CF028D001C000001150E0107030E012322263534363216 +1514061514323713363426273501CF2B1A0D671D5452354019281F0346127F0C1E2F028D +1006172DFE91686E302818201B13061104274001C62C281104100002FFDDFFF00385028D +0031003C00000133321514062321353E0137133635342B01220607030607062322263534 +33321E0233323637133635342627372115060F02061514333236353423024C57E2A278FE +E2291E0C81041A77141305592F362C462437351316061311293C2346081E210501D03F0C +44320F435D748C016C84688010061D2D01E01006131115FEBDAB372E2D2137181E187680 +0103200F1A13011010082FFEBA2D132A5B63660000000002FFE40000038A028D00350040 +0000013332171E011514062321353E013F01210706151416171523353E01371336353426 +273521150E010F0121373635342627353315060F02061514333236353423024F59702C1F +27A278FEE2291E0C3FFEF54303192DF529200E750C1D30010F2D2D0A37010B2C0C1C2BF7 +3F0D43330E425D758A016C150F3C28677D10061D2DE8F60A0C161006101004213101AE2E +12150F051010032024CAA82C121511051010082FFEBA2A162A5B63660000000100460000 +02BD028D003700002901353E013F013635342322060F0106151416171521353E01371323 +22060727372107273635342B0103333633321615140F01061514161702BDFEF332260B15 +164C284B36330A1F27FEF435280C8F334E4420122A02002B120365324B015A6A3E4A0C22 +06202F100421284D502659272CB7260E1612031010051B2B020E3249049B9F02111850FE +E7583736312C80180F12100500000002FFE4000002910392000800520000013736321615 +140F010333323637363736333216151423222623220E04070E0107151E011F011E011715 +23272E082726230706151416171523353E01371336353426273521150E01070154A20A1E +1511AB961C4D5428201B2331172532121F06070E0B0D0709012A46371E21154317222FA5 +72030903080307040808050E0D390B1D2AF52B1C0A760E222D010E2A2E0B02E8A00A150F +120A6AFE8A4E52421C251F1436280A0E150E1401504E1002122B2E9728150510F8061507 +0F050A0306030103D92C071711041010051A2801BD320C1514021010031F280000000002 +006EFFF202CC0377001B0045000001140623222635343633321614061514163236353426 +35343633321617150E0107030623222635343633321E0233323637032E0127353315070E +011514171B01363534233502755A35345C2213101811234222111A11131F57283524DD51 +5C2231211415180406071C4A1E541E1C29EF1A1B16054F91143C033F2D37372D1C1C1522 +1406111A191206151110151CCE10042A41FE7692241E1F1E181E1862440119662C091010 +030310130F12FEFB0106260A19100001FFE7FF4D02EB028D0036000001150E0107030615 +141617072322070607233635342B01353E01371336353426273521150E0107030615143B +013236371336353426273502EB2C1C0B750E1C2B04B648361515130954B52A1F0D730C1C +31010F2E2C0A83041CD614130784031F28028D1008182AFE46310E151005104B1D4B2927 +631004213101AE2D13150F051010041F24FE15120312101801EF0B0B1415031000000002 +FFCF00000236029C001A001D00002123353E0135342F012307061514171523353E013701 +33131E0117270B010236F52D200214DC3B163EBA222B39011D1A5C0A1C28C32D95100218 +1B0812836F29191E03101007326301F0FDD73E2203F60107FEF90002FFE40000025B028D +001D002A00000107273635342B0122060F0133321514062321353E013713363534262735 +13070615143332363736353423025B2C1103675D201A063A57E2A278FEE229210C750C1B +2B64330D42565D17078C028DA503210E4F0C17DA84688010061F2C01B32C1215110510FE +BBBB27182A39541918660003FFE90000023B028D00180023003000001333321615140607 +15161514062321353E013713363534262713333235342623220E010F0206151433323635 +3426272671FA666A634C80957EFEF02B200C730B1E2F7725C9373E171210054520204359 +66271E1D028D453D4A550D01276F626610061D2D01B42719160F04FEF096372F030F12FC +7574122A53512D400A0A0001FFDC0000025B028D001A00000107273635342B0103061514 +16171523353E013713363534262335025B2C1103659E840F212BFB2A1D0C7B0A1B22028D +A402121E4EFE173A0F1212031010031F2C01BA241915131000000002FF99FF4D02B8028D +001F002E000001150E010703061514330723363534262321220723373332361336353426 +27371B013635342B012206070E0107333202B82B1D0C780943341309332EFECE63461335 +134C7C50081E2205BD86031C97141106435D36FB24028D1006192CFE4024102EC33F113A +29B3C3EC01241B141A130110FDC401F50A08111013F3F43B00000001000100000277028D +002E0000010727363534262322060F0133323637170727363534262B0107061514333237 +3637170721353E013713363426273502771F16034B762A1A053F4E422C1D124414072332 +4E1F234F7F4A2638103EFE082B1A0C770B1F2E028D9A0219152D1C0911E9204104E8051F +15200E707E142227144E08A21008172B01BA2C281104100000000001FFC9000003CC0295 +0067000001333237363736373E01333216151423222623220E01070607151E011F011E01 +171523272E012726230706151416171523353E013F0122060F0123353E013F0136373526 +353436353423220623222635343633321514061514163B013736353426273521150E0107 +0224113E2E3B312414131E1A17252E1217061325381F2F321E21154317222FA572141415 +0E02390B1728FB2E250A41233528CCA3311E2492404C490513062A121617302158053F41 +0A2C0E222D010E2A2E0B01721A23634A1514101F14362841661D2B0F02122B2E97281505 +10F82C1B0603D92C071810041010051B27F11D31FA1005112CB44E030224530D380F352C +1C111724600D440B3D2AA2320C1514021010031F280000010009FFF00224029C003D0000 +131514333237363332161514070607151E0115140607062322263534363332161514070E +021514163332363534262B01373332363534262322060F0137B82211242E365C552F373D +2A4C5C494057565C1D1E1A1A10030D05402D5B70413A2D09284C5F362D4960241225029B +0312090D553F3D2F37060206413A4D6E1A17483F1F291C161115040D0805161E70593338 +2457462D414E5701C9000001FFE7000002ED028D0031000001150E010703061514161715 +21353E0137130106151416171523353E01371336353426273521150E0107030136353426 +273502ED2B1D0C790A1A33FEF334260B6DFE71062125F22F1A126E0C1C31010B2B2F0E65 +018C061E24028D1007192AFE3B220A1D100510100322280195FE6D130E17150210100720 +42019C2E11160E051010032536FE830191180D121003100000000002FFE7000002ED0377 +001B004D0000011406232226353436333216140615141632363534263534363332161715 +0E01070306151416171521353E0137130106151416171523353E01371336353426273521 +150E0107030136353426273502655A35345C2213101811234222111A11131F882B1D0C79 +0A1A33FEF334260B6DFE71062125F22F1A126E0C1C31010B2B2F0E65018C061E24033F2D +37372D1C1C15221406111A191206151110151CCE1007192AFE3B220A1D10051010032228 +0195FE6D130E1715021010072042019C2E11160E051010032536FE830191180D12100310 +00000001FFE4000002910295004900001333323637363736333216151423222623220E04 +070E0107151E011F011E01171523272E082726230706151416171523353E013713363534 +26273521150E0107E11C4D5428201B2331172532121F06070E0B0D0709012A46371E2115 +4317222FA572030903080307040808050E0D390B1D2AF52B1C0A760E222D010E2A2E0B01 +724E52421C251F1436280A0E150E1401504E1002122B2E9728150510F80615070F050A03 +06030103D92C071711041010051A2801BD320C1514021010031F280000000001FFDDFFF0 +02E4028D0033000001150E01070306151416171521353E0137133635342B012206070306 +070623222635343633321E02333236371336353426273702E42C1C0C81032629FEF13826 +1179031A89141305592F362C4626351D18121708130F293D2246081E2105028D1007182B +FE1F0C0C151203101004274101C70B08131115FEBDAB372E28231B1F191F197B7E010320 +0F1A130110000001FFDF00000357028D0028000001150E01070306151416170721353E01 +371301230B01061514171523353E01371336353427353313010357291D0B760E242D01FE +F231280D7BFE87113E760946C5282517720C4AB538014F028D10071B28FE45320C141501 +101005222F01CBFDCF0222FE5420162B051010052F520191290B1E0410FE1401EC000001 +FFE6000002ED028D0033000001150E01070306151416171521353E013F01210706151416 +171523373E01371336353426273521150E010F01213736353426273502ED2C1D0B80031E +31FEF033290A3FFEE14203192DF6022A1F0D730C1C30010F2D2F0A34011E2D0E2028028D +1008182AFE1F0C0C1510051010042227E9F40A0C161006101004213101AE2E12160E0510 +10032024C6A4340B1314031000000002003CFFEE02BB029A000F001F0000011406070623 +222635343637363336160734262322070E011514163332373E0102BB735C696D6377624F +707D6B7669453C6357353D433F5C4E3B4601A26BC43E477C6E5BC1456101863447517548 +B64E52575F4AD60000000001FFE3000002E9028D002C000001150E010703061514161715 +21353E0137133635342B012206070306151416171523353E01371336353426273502E92C +1D0B80031E31FEF133290A80041CD71513078503192DF52A210D720C1D30028D1008182A +FE1F0C0C151005101004222701E51203121018FE110A0C161006101004213101AE2E1215 +0F05100000000002FFE800000242028D001B002700001333321514060706232227070615 +1416171523353E0137133634262717071633323736353426232277F1DA251F4588322733 +0E1E27F42B1B0E71111C2BAC421D16552B4743412C028D94284D1A3909C2360912130410 +10061B31019E3F28110533F00519285E403500010043FFEE02B2029A0020000001072726 +2322070E01151433323637170E0123222635343637363332171633323702B2251212836D +5A3537AF3E67401243814D759066556675453014151B0B0298C803A36138A055CD34430F +4F468B7A67BB3C491107160000000001004600000284028D001A00000107273635342B01 +0306151416331521353E01371323220607273702842B1203653E820E2236FEE0342D0A8C +3C4E4420122A028D9F02111850FE17311119151010051E28020E3249049B0001006EFFF2 +02CC028D0029000001150E0107030623222635343633321E0233323637032E0127353315 +070E011514171B01363534233502CC283524DD515C2231211415180406071C481E521D1D +29EF1A1B16054D93143C028D10042A41FE7692241E1F1E181E1861450119652D09101003 +0310130F12FEFB0106260A19100000030049000002F6028D0025002C0034000001071E01 +15140706070615141633152135333236372E013534373637363534262335211523220703 +3237363534011322070E01151402130C66895B55B10B2B32FED7092F310C63875856B10E +222E01190558255F783B3CFEAF60743D201902462A045758604D48031D16181610102938 +0159585F4C4A04310F120F101085FE9D3F405A7EFEA901634022453181000001FFBD0000 +0269028D0031000001150E010F01171E01171521353E0135342F0107061514331523353E +013F01032E01273521150E0115141F013736353427350269213725A965122433FEF12B22 +0E43971742D528486C53670F252B0107291E103B91153D028D100B292BC2FF2D1A061010 +0111131023A5AC1A1621101007437E6100FF251C041010051113112793A718131F031000 +00000001FFE7FF4D02EB028D0033000001150E010703061514161707233E013534262321 +353E01371336353426273521150E0107030615143B013236371336353426273502EB2C1D +0C760E1E2C34130207312DFE272A1F0D730C1C31010F2E2C0A83041CD614130784031F28 +028D1008182AFE46310E141105C3063D0C3A2A1004213101AE2D13150F051010041F24FE +15120312101801EF0B0B141503100001003600000297028D0032000001150E0107030615 +1416171521353E013F010623222635343F0136353426273521150E010F0106151433323F +0136353426273502972C1D0B80031D31FEF033290A3C5C62454F0A24081E30010F2D2D0A +250A66474A320D1E28028D1008182AFE1F0C0C1510051010042227DB2E25331C2586200B +150F0510100220258A26133D25B9320D1314031000000001FFF2000003D1028D00400000 +01150E01070306151416170721353E01371336353426273521150E0107030615143B0132 +371336353426273533150E0107030615143B013236371336353426273503D12C1D0B750E +222D01FCAA2A1F0D73081A3001052D230A83041C8A200D83031526E82B1A0C84041D8414 +140784031D28028D1008182AFE46310E141006101004213101AE1E22150F051010041D26 +FE170C09143001E70B0B161303101008172BFE1A0C0914121801ED0B0B15140310000001 +FFF2FF4D03D1028D0047000001150E010703061514161707233E013534262321353E0137 +1336353426273521150E0107030615143B0132371336353426273533150E010703061514 +3B013236371336353426273503D12C1D0B750E1E2C34130207312DFD4A2A1F0D73081A30 +01052D230A83041C8A200D83031526E82B1A0C84041D8414140784031D28028D1008182A +FE46310E141105C3063D0C3A2A1004213101AE1E22150F051010041D26FE170C09143001 +E70B0B161303101008172BFE1A0C0914121801ED0B0B151403100002003F0000028C028D +001A002500000133321514062321353E01371336353423220607273721150E010F020615 +14333236353423015357E2A278FEE6291E0C7B022A4E3C23122A016D1F230744330E435D +748C016C84688010061D2D01D00811212E4E049B1004181BFEBA2A162A5B636600000003 +FFE40000037D028D0017002E0039000001150E01070306151416171523353E0137133635 +342627350133321514062321353E0137133635342627353315060F020615143332363534 +23037D2A1C0C720F192CF62A1F0B750D2028FE5857E2A278FEE6291E0C740C1C2BF23D0C +44310F435D738C028D10051B2DFE533517140E051010081A2901B92E1014150210FEDF84 +688010061D2D01B42C121511051010082FFEBA2D132A5B6366000002FFE400000219028D +00180023000013333217161514062321353E0137133635342627353315060F0206151433 +3236353423E0577D3332A377FEE5291E0C750C1C2BF43D0D45310F435D738C016C272541 +617E10061D2D01B42C121511051010082FFEBA2D132A5B6366000001000FFFEE027C029A +002B00001333163332373633321615140706232226353436333216140615141633323736 +372137213635342322060F019D1604192228285462848C73B055691D1E191B254134785A +4919FEF10B010A049B547023120299160C0B9073B0897044441E291D2A2807161E5F4E7C +2A1B21D44E55010000000002FFE0FFEE0352029A002B003A000013333637363332161514 +060706232226353437230706151416171523353E01371336353426273521150E01070534 +262322070E0115143332373E01DE552E5966705E646D575F61576512524003192DF52A20 +0D720C1D3001102D2D0A01E039345752333B6D544738440170755461787173CA3F477669 +3D3CF40A0C1610061010051E3301AE2E12150F0510100320244C434C754AB8569D5F4BD9 +00000002FFCF000002A4028D0020002E000001150E01070306151416171521353E013F01 +23012335363F013522263534373633033736353426232206151416333202A42C1D0B750B +222BFEEE33290A3A1FFEDB98322EF0425E3551C212330D0F1563884D4233028D0F09182A +FE4628121716021010042227D4FECF10032EF5024F3C4A334DFECEB92B140F0D575B3137 +000000020017FFF501E201B90021002F000025170E0123223534370E0123222635343637 +363332173F021706070215143332370334262322070E0115143332373601D50D38351E28 +17385E352C3844375350430D0B033D070105590E0F25471E1A443F212C3C3B444D6F0B44 +2A29195A54493D37438B344E3A300307030411FEBC270D2901171A205C31782E4A626F00 +000000020024FFF5021702AB002600350000013306070E01070E02071736373633321615 +140607062322263534373E053B013236033426232207061514163332373E010207101C42 +15570B2E583A11023B2A38403E4F39315369464D0F0B18293540552F3C2422712621433D +4A2A243D3C222802AB5018080101064F63340139161E4B41397B315349423A3927486350 +48280DFEB42D315B71732C2F532E810000000003001FFFF501A701B900170021002C0000 +2515321E0315140623222635343E023332161514063734232206073E0307342322070615 +1433323601141217281813845157451F3F734A303D52103F30631831464B282C4237490C +503945F502010A12251A426054492D605E3C282B2D39683C5D680A14212DB7491A213266 +550000010001FFF5018001B90023000013273633321615140E03151433323637170E0123 +222635343E03353426232206650A5462323D3E58583E4F223C2D0C38512F3D443E59583E +26212739015C0D50322926392525362337131F0C3323302B223B2B28331C192114000002 +001EFFF501D602AB00130022000013371E0115140E01232226353436333217372E011334 +26232207061514163332373E01D30D6B8B4C8851464DAD6B3B1C020A65632720453F462B +2346362027029A1118BB7161AA67474573C5310153A3FEC72B3359617F2A37522F840002 +0022FFF501A601B90014001F000025170623222635343633321615140607061416333227 +173E013736353423220601700C58743E50C171272BA1850A332A4A9701444C1B32232977 +6D0C6C4C3D74C72420416911145232AF011120193031278A000000010000FFF5031701B9 +004D000025333E0133321615140623222E022322070E01151416333237170E0123222635 +343723072337230E01232227263534363332160616333236373E01353426232207273E01 +33321615140733373301B63A1B794B2523160E1313030E0E191F242C2720372F0D253E2E +323E0A383D493D3918754D27131B1B0D120F020A0F0E260E242A2720372F0D253E2E333D +043A3449F252751F18151414191422288F36383B46093729504A2825DCDC588F0B101B14 +1B161A16130F279036383B4609372945492613BE00000001FFEEFFF5016501B900360000 +1333143332363332161514060F011E011514070623222635343633321615140615141633 +32363534262322073733323635342623220723650E0D0A3C1C453E503401303223377240 +481A141215101C1841432E280E08071E3144241F55301001B91111372A323A07010B3223 +32233A31281A1A17130B1A0C0A134A35262B0117422724276C000001001DFFF501EF01B9 +002E000025170E0123223534370E012235343F01363534232207273E01333215140F0106 +15143332373E01373303061433323601E10E303624302D59616A1B23110A1A3E0E2F3B25 +2E163603142D612125284A530F0B0C2277094A2D302D989265351E6281410D11520A482F +30214FC60907199332536EFED139222000000002001DFFF501EF029B0014004300000133 +0E01232226353436333216140615141633323613170E0123223534370E012235343F0136 +3534232207273E01333215140F010615143332373E01373303061433323601CA12084F3F +30511F12101811241D303E250E303624302D59616A1B23110A1A3E0E2F3B252E16360314 +2D612125284A530F0B0C22029B3D5F392E191C15221406101B45FE13094A2D302D989265 +351E6281410D11520A482F30214FC60907199332536EFED139222000000000010012FFF5 +01E501B9003A00003733323E0333321615140623222623220E02071516171E0233323736 +37170E01232226272E0427072313363534262B01353637179F0B23392727372217211B13 +111E100C201E331C391F0B120D0A1918050A0F1E361F26260E06060F0F1A103C4B4E1318 +1E0B5B4504F2293B3A291F121718252833340902053A1642242A08120B3C313732161526 +141504DC012449080F0C0F0D0D020001FFD4FFF401BA01B9003C000025170E0123222635 +343F01363534232207060F01140E0407062322263534363332171E0233323E023F013E01 +33321615140F01061433323701AC0E313C25141B102C0F1D1B1F221E120D050E0A11081D +2C19221A12170B030202040E17170F0E0E21633C1D230A380C0F1929730D432C1B1B103B +A23A19211D21653D012C0E28141B091F1A1917171806140B16362F2F307255221B1923CB +2B24330000000001FFD3FFF4025901B0002E000025170E01232226353437032303070607 +0E012322263534363332171E023332363F0133133313330E011514333237024B0E333623 +141B3AD3082730231E13232019231912170B030102041B2F1A4B3B2702CD3C1C4110122B +740D462B1B1B59B3FEC80147966D241715191917171706140B5753EEFECC013455FC2713 +350000010014FFF701D801B90023000025170E0123222635343F01230723133635342627 +3536371707333733030615143332373601CA0E333623141B1018AE3A495D021B264F5204 +3AAD3649530E10132A07750D462B1B1B103B5BD3015E0A0D0F0B010F091102CEC7FEC538 +0512350800000002001DFFF501D601B9000F001E00000114060706232226353436373633 +3216073426232207061514163332373E0101D639315369464D654F38403E4F542621433D +4A2A243D3C2228012D397B31534942539E2A1E4B282D315B71732C2F532E810000000001 +0013FFF701DF01B90030000025170E0123222635343F01363534232206070E0107231336 +3534262735363717073E0133321615140F010615143332373601D10E333623141B102C0E +181D4532211F244B60021B26683A04434A6C311F220A380E10132A07750D462B1B1B103B +A236191D4549314E7901610A0A0F0B010F0E0C02DA7666211C1923CB320B123508000002 +FFB3FF3301D001B9001E002E0000130736333215140E0123222706151416331523353E01 +37133635342B013537173426232206070E0115141633323736D71F4B606D548847242128 +1B23CB201B09730F2C189DAA1D21274E12162B1B154E434501B56D717D51985E11A50110 +0D1010011A2401B0370C1B0F1A802C29442E399C1911155F60000001001BFFF501A601B9 +0022000025170E0123222635343637363332161514062226353436353423220706151416 +333236015B102E5738474C44374D5A2E3B1C28130F253F2E5B2E2B27406B0A3A324E4C43 +7D2D3D2E23141C1711091D0A14306089363C2600000000010011FFF702C501B900430000 +250706232235343F01363534262322070E01072337363534232206070E01072313363534 +2B013536371707363332161514073E01373633321615140F0106151433323F0102C5054D +43280D3A070C082F54252A1D4B1B441619522A1923244B491929196939033A825A1D1F28 +354724201F1B1F0D3A0A0C162B1569076B2E0F33E31C0A090C753469735DEB24194F4027 +587701065B19160F0F0B02D1D3201C267254551714211A1330D8260710351A0000000001 +FFC3FF32018501B90031000037173E01353427263534363332161514070E012322263534 +363332163332363736353426272E012322073536373637333216CE1543371A1A1711161E +834E932B171C171013190C194C170A3E140E211E100F160A2942040B3DBA6E6E73201010 +11161015201757DA819E181311171C5626140F1EFB33251B04110402080ABA0000000003 +001DFF3302A502AB003100410051000001333E0133321615140E01232226270706151416 +331523353E013F01230E0123222635343E013332173635262B0135363717133426232206 +070615141633323E022535342623220E021514163332363701A6022240322C3D3B6D412E +2F0229101B23CB201B0930011F3925353B3B6E4047153C01281B603D0760272124420B36 +2D182C462513FEF52E18294427152720254409015F32284E3A4A9062361D9F3C0D100D10 +10011A24B6281B5A3F43886045DC161B0F0D0E06FE892C3C40209C2F242F3B5A5A380424 +2F3C585A242D3F411F000001FFDDFFF501B701B9003C000013173E013332161406232226 +232207141F011633323F01170E012322262F01070E012322263534363332171633323F01 +272E0123220F01273736333216EB0C3541211217130F091E0D1D4508200A14101F150F2B +321D181A091D581F2719171B130F0C140F0B1122521C0A11130C1B12030B502513160163 +39513E15201411790D208629281C09432F1E2677772A1A16140F150B0931747C2C180705 +10041D2400000001001DFF4A01EF01B90040000025070615141615140607273E01353426 +353437270623223534370E012235343F01363534232207273E01333215140F0106151433 +32373E0137330306143332363701EF221707243C0917120329011A23302D59616A1B2311 +0A1A3E0E2F3B252E163603142D612125284A530F0B0C22256E3423210D250B23321A120B +1919041A0222300115302D989265351E6281410D11520A482F30214FC60907199332536E +FED1392220310001002AFFF701C201B90028000025170E01232235343F01062322353437 +363534262335363717070615141633323F013303061514333201B40E303A242F160D4537 +681C0716274254042F041B222C353B4A4F130B177A094931300E56322048106619040C0C +0F071303AC101217161CD9FED549051100000001001FFFF502F101B90044000025170E01 +2322353437230E012235343F0123070E012235343F01363534232207273E01333215140F +010615143332373E013733030615143332373E0137330306151433323602E30E30362430 +2F0259616A1F1D02155A616A1B23110A1A3E0E2F3B252E163603142D612226274A580314 +2D612125284A4F130B0C227709492E3024A1926535186B61229265351E6281410D11520A +482F30214FC60907199333556BFEA30907199332536EFED54806112000000001001FFF4A +02F101B9005600002517070615141615140607273E013534263534372706232235343723 +0E012235343F0123070E012235343F01363534232207273E01333215140F010615143332 +373E013733030615143332373E0137330306151433323602E30E221707243C0917120329 +011924302F0259616A1F1D02155A616A1B23110A1A3E0E2F3B252E163603142D61222627 +4A5803142D612125284A4F130B0C22770934261C0D270B23321A120B1919041A02223001 +153024A1926535186B61229265351E6281410D11520A482F30214FC60907199333556BFE +A30907199332536EFED5480611200002000CFFF5021001B90023002F0000373336333216 +151406232226353436372706232226232207273E01333216333237170E01173423220706 +151416333236F5034C513D3E93634C415137011F2B1041192B1D0C1B2F301B521C2C1B0A +2C3CC2483134332520415AD548392D4D75403C459630020D0E35063B2E1717092B894944 +292765171E7000030032FFF5029101B90013002C0038000025170E012322263534371333 +030615143332363725173633321615140623222635343F01363534262335363717133423 +22070615141633323602830E2B3C25141B105249520E100B1A18FE29014C513D3F94634C +3C11230E16274E48048A493134332520415B750945301B1B103B0138FEC5380512171E7B +0148392D4D752E2A19448B3A090C0C0F0A1003FEFD44292765171E70000000020032FFF5 +01B101B900180024000037173633321615140623222635343F0136353426233536371713 +342322070615141633323697014C513D3F94634C3C11230E16274E48048A493134332520 +415BD60148392D4D752E2A17468B3A090C0C0F0A1003FEFD44292765171E700000000001 +0007FFF5018701B9002A0000133314333236333216151406232226353436333216151406 +15141633323736372337333635342623220723690E0D0B3C1B4F52A06F343D1A14121510 +1A1353371B0C8905870426275A341001B91111594A77AA32251B1B17130B1A0C0D10582E +47161C1A3B466C00000000020015FFF5028F01B90020002F000037333E01373633321615 +14060706232226353437230723133635342B013536371705342623220706151416333237 +3E01A04B17533538403E4F39315369464D0D483A4C4F13291969390301612621433D4A2A +243D3C2228E9385E1C1E4B41397B315349422A29D30124460A1C0F0F0B02712D315B7173 +2C2F532E81000002FFE7FFF701C101B00032003D000025170E01232235343723220E0207 +0E012322263534373306151416333236373E013F012E0135343E013B0103061514333236 +273736353423221514163301B30E30362430241F0E162223101332261C25081004120E12 +170D103629012F37485B388150120B0C225E29021797392C7709492E30336F0615362931 +2726291711140818191F29332C0502042D20374415FED648071120999D08031376202500 +000000040022FFF501DB025E000B0017002C003700000114062322263534363332160714 +0623222635343633321613170623222635343633321615140607061416333227173E0137 +36353423220601DB1D14151C1D15131DC81D14151C1D15131D5D0C58743E50C171272BA1 +850A332A4A9701444C1B32232977022D141D1D15141C1E13141D1D15141C1EFE2D0C6C4C +3D74C72420416911145232AF011120193031278A000000010014FF3001C002AB003C0000 +37333E01333216151407030E012322263534363332151406151433323637133635342322 +06070E0107231323373337363534262B0135363717073307239A01476D301F220A4D205A +41222D1811270C121E291A4811181A58271E1C254B81670C65070D1A0F1B4C510728A90C +A8E77062211C1923FEDC7B71231B121A250C0F070D4F68012544031D513D2F4C7D01EB26 +192D110C0D0F091206942600000000020001FFF501C702980008002C0000133736321615 +140F02273633321615140E03151433323637170E0123222635343E03353426232206E8A2 +0A1E1511ABA60A5462323D3E58583E4F223C2D0C38512F3D443E59583E2621273901EEA0 +0A150F120A6A920D50322926392525362337131F0C3323302B223B2B28331C1921140001 +001AFFF501B901B900260000010723342322060733072306151416333235343633321615 +14070623222635343633321633323701B924103F397719A105A1082D2A431E180F143F36 +3B4950B76F1B2E0B0F0601B9816C6A4D161D2B3F4644171D150D2E211C4A4B70BF111100 +00000001FFF7FFF3015501BA002900000107232623220615141716151406232227262322 +07233733163332363534272635343633321716333237015514100E4B1B203644513F1D1A +1517140910141014502329383F42371424160E140A01BA8C741E1B26404F393D490A0915 +9F8828252D464F34323A0A0712000002002BFFF50102028E000A00230000011406232226 +353436321603170E01232235343F0136353426273536371703061514333201021D14161A +1B281E2A0D2A3A25311630091729415F045E0A0E190257151E1D18171E21FE050B413137 +1D52B1200C0F08010F051503FEA9220A0F000003002BFFF50165025E000B001700320000 +01140623222635343633321607140623222635343633321613170E01232235343F013635 +34262735363717030615141633323601651D14151C1D15131DC81D14151C1D15131D3C0E +293C2532183009162937680560090A060C24022D141D1D15141C1E13141D1D15141C1EFE +330C3F3339145AAF220B0F08010F041603FEAA220B06092300000002FF54FF3100E7028C +000B002A000013140623222635343633321607030E012322263534363332151406151433 +32363713363534262B01353637E71E14171F2015141F21681F5B41232C1811270C121E29 +1A4810151B1A24850256141E1D17161E21B5FE667972221B121A250C0F070C4E68012441 +0F110E0F02180002FFD4FFF4027701B9003B004700002533363332161514062322263534 +3F01363534232207060F01140E0407062322263534363332171E0233323E023F013E0133 +3216151407173423220706151416333236016C01444F3D3A8D5B4C3C111D0F1D1B1F211F +120D050E0A11081D2C19221A12170B030202040E17170F0E0E21633C1D230A9744322933 +1F1F4153D548382E4D752E2A1F3E703A19211D20663D012C0E28141B091F1A1917171806 +140B16362F2F307255221B19238D44293359171E6F0000020015FFF5028901B900280034 +000001073633321615140623222635343F01230723133635342627353637170733373635 +3427262335363713342322070615141633323601BA3B444F3D3A8D5B4C3C110A9A394C5F +011B264F52043A9A160E0B0D2552447D443229331F1F415301B6E148382E4D752E2A1746 +29D3015E05120F0B010F091102CE4C32110C06060F0A10FEFA44293359171E6F00000001 +0014FFF701DF02AB0036000025170E0123222635343F01363534232206070E0107231323 +373337363534262B013536371707330723033633321615140706151433323601D20D2E3E +2614181437071C1B55281F241D4B81670C65070D1A0F1B4C510728A90CA8468264212030 +21100C1D760D41311713114BCF1C0519503C305B6F01EB26192D110C0D0F0912069426FE +FBD3251E2B966518121D00020012FFF501E50298000800430000133736321615140F0233 +323E0333321615140623222623220E02071516171E023332373637170E01232226272E04 +27072313363534262B0135363717BDA20A1E1511AB410B23392727372217211B13111E10 +0C201E331C391F0B120D0A1918050A0F1E361F26260E06060F0F1A103C4B4E13181E0B5B +450401EEA00A150F120A6AFC293B3A291F121718252833340902053A1642242A08120B3C +313732161526141504DC012449080F0C0F0D0D0200000002FFC3FF3201A1029B00140048 +000001330E01232226353436333216140615141633323603173E01353427263534363332 +161514070E012322263534363332163332373E013736353426272E012322073536373637 +333216018F12084F3F30511F12101811241D303EB31543371A1A1711161E834E932B171C +1710131E0C121E0D33070A3E140E211E100F160A2942040B3D029B3D5F392E191C152214 +06101B45FE566E6E7320101011161015201757DA819E181311171C210D430B140F1EFB33 +251B04110402080ABA000001001DFF4A01EF01B90046000025170E012322353437060706 +15141615140607273E0135342635343E03373506232235343F01363534232207273E0133 +3215140F010615143332373E01373303061433323601E10E303624302D63330D08253B09 +171203040A0512011A1D351B23110A1A3E0E2F3B252E163603142D612125284A530F0B0C +2277094A2D302D98A22F250E0D1A0B1F331A120B1919041902090F12081502010D351E62 +81410D11520A482F30214FC60907199332536EFED13922200000000200130000026D028D +002A003500000133321514062321373E01371323220E0307273733363534262735331506 +0F01330727363534262B010F01061514333236353423013457E2A278FEE203291E0C6E2C +211E29161C0E1220D00A1C2BF33D0D0CCC25120336353630320F425D758C016C84688010 +061D2D0197020916271F0487280F1511051010082F2B8B021A0A251CAFBA2D132A5B6366 +00000002000DFFF501F802AB002B0038000037173633321615140623222635343F012322 +060723373337363534262B013536371707330723363534262B0117342322070E01151416 +333236DD014C523D3F91644C3C113D3739211A111FA5200E190F1C54490744A51A120125 +2C318F4932341A1625204258CC0148392D4D6B2E2A1C41E815336677360A0C0E0F0A1106 +F5660B0A1C17E94429143836171E670000000002FFC90000037D028D0032003500002901 +35363534272E01270706151416171523353E013F010E0107061514171521353E01373E03 +3703210316171E0317032113037DFEE8470C18492C340B1227E428180C3C307835362BFF +0025331E283A586B415501E1FC5F431220163529A0FEDF4710044B1B23424E03C1260D19 +0F04101005182AD903453F40391D031010032A2A39444D26030133FECD045D1958403503 +0253FEF8000000020000FFF502AE01B00035003800002517062322272E0427072337230E +0423222635343633321E023332373E02373637272107151E011514061514333203231702 +A10D35543F0E0108060E171137473701213220243B2B25291B0E1212020D0E120B081619 +152746600185BD393F021F354EDB4C5E09604D043610241306C9C90C363936231F171417 +151815150F392D152705D1CF02064131031A042E017A9E0000000003003CFFEE02BB029A +000F0022003400000114060706232226353436373633361607342623220706073E013332 +1E0233323736070623222E02232207061514163332373602BB735C696D6377624F707D6B +7669453C6357321E2E3823162B1E2E181F2A14233D47192F1E2C171E2C13433F5C4E3801 +A26BC43E477C6E5BC1456101863447517544551F122025201C50802D2025201E45405257 +5F440003001DFFF501D601B9000F001E0030000001140607062322263534363736333216 +063426232207060736333216333237070623222E02232207061514163332373601D63931 +5369464D654F383F3E50542621433D201232221B3A16131808312B131C0E160E151A0E2A +243D3C21012D397B31534942539E2A1E4B555A315B3130263F111D261417141333312C2F +532E0001004CFFEE02E602960020000025133E033332161514232226232206070123032E +01273533150E01151417130132D51218272E1C242032111F090E150FFEBA135211172AF0 +2F1D013F8D018220252D1520133628111AFDC401F7692A05101005141A0A05FE52000001 +0022FFEE021001B9002600003733363736333216151423222623220E0307062322352627 +2E012B01353637363332171E01ED0146582E2A121A300B1707193D3033170A0913100A24 +11181A1E4825140304061B2073C3562D19122E134457773D1D191CAC7D38260F0B090510 +44AF0001FFE20000026E030F001B00000107210306151416171523353E01371336353426 +233521323E0237026E31FEE68310222BFB2A1D0C770A1B22013C20272F220C030FA6FE17 +3E0B1212031010031F2C01BA24191513100618372D000001002AFFF5019401FB001E0000 +010723220703061514333237170E01232235343F013635342627353332363701941D861B +0750080C193B0D2A3A2531163A041520BA42281601FB6119FEDE1E0E0F4E0B4131371D52 +D70D0B0D08020F16350000020047FFEE038A0370002E00380000052303230323032E0127 +26273533150E011514171B01272E01273533150E01151416151B01363534273533150E01 +0725272635343633321F010210143205DE133D080A0B0A29EB291F012CAC08041B2CEC27 +1D0228BC1743B81D1B15FEE38C1314101612731201C5FE3B0202462D0B0A05101004141B +0D07FE6C015C412616021010041418030B01FE64016D2C1829011010091A28926A0F1110 +1217950000000002000FFFEE028802980035003F0000133536373E023332161716171336 +333215133E0135342726353436333216151403070623222703070607062322262F012627 +2E012325272635343633321F010F4F10050D08030806051907C006070820634216151710 +161ED409230A08031D591720310F07040204081307111701878C13141016127301940D0D +040104020A1878A101300A0EFEA07B69200E1514150C1320185BFEFE0B2B23013698263D +5E121D5BA44E1B0F586A0F1110121795000000020047FFEE038A036C002E003700000523 +03230323032E012726273533150E011514171B01272E01273533150E01151416151B0136 +3534273533150E0107253736321615140F010210143205DE133D080A0B0A29EB291F012C +AC08041B2CEC271D0228BC1743B81D1B15FE48A20A1E1511AB1201C5FE3B0202462D0B0A +05101004141B0D07FE6C015C412616021010041418030B01FE64016D2C1829011010091A +2890A00A150F120A6A000002000FFFEE028802980035003E0000133536373E0233321617 +16171336333215133E013534272635343633321615140307062322270307060706232226 +2F0126272E01233F0136321615140F010F4F10050D08030806051907C006070820634216 +151710161ED409230A08031D591720310F070402040813071117E2A20A1E1511AB01940D +0D040104020A1878A101300A0EFEA07B69200E1514150C1320185BFEFE0B2B2301369826 +3D5E121D5BA44E1B0F5AA00A150F120A6A0000030047FFEE038A0332002E003A00460000 +052303230323032E012726273533150E011514171B01272E01273533150E01151416151B +01363534273533150E010701321615140623222635343633321615140623222635343602 +10143205DE133D080A0B0A29EB291F012CAC08041B2CEC271D0228BC1743B81D1B15FE4A +131D1D14151C1DDD131D1D14151C1D1201C5FE3B0202462D0B0A05101004141B0D07FE6C +015C412616021010041418030B01FE64016D2C1829011010091A2801001E13141D1D1514 +1C1E13141D1D15141C000003000FFFEE0288025E00350041004D0000133536373E023332 +161716171336333215133E01353427263534363332161514030706232227030706070623 +22262F0126272E01233732161514062322263534363332161514062322263534360F4F10 +050D08030806051907C006070820634216151710161ED409230A08031D591720310F0704 +02040813071117EE131D1D14151C1DDD131D1D14151C1D01940D0D040104020A1878A101 +300A0EFEA07B69200E1514150C1320185BFEFE0B2B23013698263D5E121D5BA44E1B0FCA +1E13141D1D15141C1E13141D1D15141C00000002004E0000027903700026003000000115 +0E01141F01373635342F013533150E01070307061514161F011521353E013F01032E0127 +3525272635343633321F01014A2C1C241F2795281DBD15161BDB241E171E24FEDF332B0D +3B4C0B192901578C131410161273028D10040F227F6E2EB0251804031010071521FEF27B +6718131002031010031F2FCD010B28160610376A0F11101217950002FFE8FF3201AA0298 +0033003D00001335363736373332161F013E01353427263534363332161514070E012322 +263534363332163332373E013736353426272E01232237272635343633321F010F160A29 +42040B3D0D1543371A1A1711161E834E932B171C1710131E0C121E0D33070A3E140E211E +10F98C1314101612730190110402080ABA456E6E7320101011161015201757DA819E1813 +11171C210D430B140F1EFB33251B586A0F11101217950001003100BF011A010100030000 +01072337011A0DDC0E01014242000001003100BF011A01010003000001072337011A0DDC +0E01014242000001FFF800C001FC0102000300000107213701FC08FE0408010242420001 +FFFA00C501F900F3000300002507213701F908FE0908F32E2E000001FFFA00C5037E00F3 +0003000025072137037E08FC8408F32E2E00000100AB01B40136029A000E000001170615 +1417161514062322263534012D094B14191D161921029A1132270D131617141B281F5700 +00000001009701B40122029A000E0000132736353427263534363332161514A0094B1419 +1D16192101B41132260E131618141A291E560001002CFF7F00B70065000E000017273635 +342726353436333216151435094B15181D161921811232260B14151A141A291E57000001 +00A901B40122029A00100000010726353436333216151406070E011514010C0D56262219 +181A15111101C7132F54273C1B14131B0101130B2C00000200A601B40202029A000E001D +000001170615141716151406232226353427170615141716151406232226353401F9094B +14191D1619214F094B14191D161921029A1132270D131617141B281F57481132270D1316 +17141B281F570002009701B401F3029A000E001D00000127363534272635343633321615 +140527363534272635343633321615140171094B14191D161921FEAD094B14191D161921 +01B41132260E131618141A291E56491132260E131618141A291E5600000000020039FF7F +01950065000E001D00000527363534272635343633321615140527363534272635343633 +321615140113094B14191D161921FEAD094B14191D161921811132270D131618141A291E +57481132270D131618141A291E57000200A901B401F3029A001000210000010726353436 +333216151406070E0115140F0126353436333216151406070E01151401DD0D5626221918 +1A151111960D56262219181A15111101C7132F54273C1B14131B0101130B2C2A132F5427 +3C1B14131B0101130B2C00010065FF6101E8029A00380000172336373635342726353637 +220706232235343332171617363534272635343332151407060736373633321514232227 +2623061514170E0107B316070D22030238122F31180F2C30111D2A300A05042F2A18230C +302A1C132F2C0E183138091014310C9F283DAC500D1C100B3E66140B2A280C1101371F11 +18170C392D13293C3601110C282A0A152D26361F1D7D3500000000010016FF7101EB029A +006800000123220706232226353436333217161736353427263534363332161514070607 +363736333216151406232227262B01061514170E01073332373633321614062322272627 +061514171615140622263534373637060706232226353436333217163B013635342F013E +01011A1219272211151B191510202D2E0906031D1312171A23082E2D211014191B151122 +27191A0B101C220E1319272211151B19160F202C2F0A06031D26161A23082F2C1E131419 +1B15112227191A0B0E021C2201AB110E171312160C11012E1E1C22110916201914182838 +3501110C161213170E1132231B381B493F110E1824160C11012E1E1B23100A1620191518 +28383401110C161213170E1134220C3D091B4900000000010046003B01C701BC000B0000 +25140623222635343633321601C7724F5070714F546DFC4F7271504E727000030039FFF5 +02FA0064000A001500200000251406232226353436321605140623222635343632160514 +06232226353436321602FA22181520202E21FED722181520202E21FED722181520202E21 +2B1620201618212217162020161821221716202016182122000000060050FFED042B02C2 +000B0019002500330050006000002514062322263534363332160734262322070E011514 +163332362514062322263534363332160734262322070E01151416333236030123010E01 +23222716151406070623222635343633321716333236370534262726270E010706151416 +333236042B6340344675482E3217231C231F18251F193452FEAD6440334675482E321723 +1C1D14212D201834522AFE522F018A1C35282329042C2426303244744D1A222F312E3445 +FF00091017151F1A0F301F1A354FD55B8D503B50823D3627302B206D281F277F4E5B8D50 +3A50833D362730172375331D277F023BFD2C029220190E1715346822254F3A55801C271E +43891610080B170F17194C571F278200000000080050FFED059502C2000B001900250033 +003F004D006A007A00002514062322263534363332160734262322070E01151416333236 +2514062322263534363332160734262322070E0115141633323625140623222635343633 +32160734262322070E01151416333236030123010E012322271615140607062322263534 +3633321716333236370534262726270E01070615141633323605956340344675482E3217 +231C231F18251F193452FEAD6340344675482E3217231C231F18251F193452FEAD644033 +4675482E3217231C1D14212D201834522AFE522F018A1C35282329042C2426303244744D +1A222F312E3445FF00091017151F1A0F301F1A354FD55B8D503B50823D3627302B206D28 +1F277F4E5B8D503B50823D3627302B206D281F277F4E5B8D503A50833D36273017237533 +1D277F023BFD2C029220190E1715346822254F3A55801C271E43891610080B170F17194C +571F278200000001003300250119019300180000373536373633321514070E0107161716 +15142322272E0127263367185809061B0F5F13060E3E070413144D0C10D80950154D0711 +1E105C180E1A7411071516630E14000100340025011A0193001500002507060706232235 +343F012726353433321716171617011A242F2C570A065B41143E07102D080D3112D71B23 +274D07125E4328721307440C0F391B00000000010000021401F402460003000001213521 +01F4FE0C01F4021432000001FF57FFF6015102A400030000090123010151FE393301C702 +A4FD5202AE000001000800000285028D002E000013333723373337363534262735210727 +3635342E012322060F01330723073307230706151416171523353E013F01233359195908 +59290A1B3101F12015031C505B231C0537A808A919A908A9230E222BFB291F0B2858010E +5A1E922419150F04109A02160B27210E0D13C61E5A1E7D320A121203101003202B920002 +000AFFF80205029E00370042000013333637233733363736333216151423222623220607 +330723060733072306071633323F011706232226270E0123222635343633321737231726 +2322061514163332363C7808056D086B1B3D39502934271E0C22272D1D84088201148008 +8010295A4627280A0B29652539321C291B1F223028221C117D5E231A171E19121428011D +41191E7C49442A2229585D8F1E03571E3C5B261C0709641A27251A221E1C280B8CB61919 +14101520000000040000FFF30466028D001C002F0059007B000013070615141617152335 +3E013713363534262735333216151407062322130716333236373635342623220E050133 +163332363534272635343633321716333237330723262322061514171615140623222726 +232207231307230306151433323637170E01232235343713232734373E01373633321514 +0F01F2350E1E27F42B1B0E74111C2BDD6C614145742D2B4516142C271944373E06080703 +03010301DB1014502428383F42371424160E140A0E14100E4B1B203644513F1D1A151714 +091031055457020F0C20250D2E3B262E104E4B012119521A060809011C0139C136091213 +041010061B31019E3D16141105104A4A593639011FF505090F275F423901030207030CFE +3F8828252D464F34323A0A07128C741E1B26404F393D490A091501B920FEB80806101F30 +074633250A400128061207064127090805026700000000010010FFF4021A0298002F0000 +133336372337333E01333216170723373534262322060733072306073307230615143332 +3637170E012322263534372318210A0F22082631A3552957131E0F013D31346829D008D2 +0F0BD508D40B4D30453B0A405D38424C0A2301222F2B1E718D1B1A6F0F0A313F796A1E30 +2A1E392A8529410A4D3B5E52263A0001FE3B0273FFEF02F8000800000321371706151433 +2111FE4C841224290119027385081E1613000001FE560273000A02F80008000013213521 +32353427370AFE4C011929241202733613161E0800000001FED4FF64FF16029600030000 +07231133EA42429C03320001FE3B0224FFEF02F80011000003212215141E031707273717 +0614332111FEE231040B091406128584123131011E02730F03070B0A1306086A6A08291E +00000001FE3B0224FFEF02F80011000001213235342E03273717072736342321FE3B011E +31040B091406128584123131FEE202A90F03070B0A1306086A6A08291E000003FE3B020B +002C026E00090013001D0000023216140623222635343632161406232226353424321614 +062322263534E1281E1E15141CE4281E1E15141CFE8F281E1E15141C026E1E281D1D1514 +1D1E281D1D15141D1E281D1D15140004FDBA020B0072026E00090013001D002700001232 +161406232226353426321614062322263534263216140623222635342632161406232226 +35342C281E1E15141CAA281E1E15141CAA281E1E15141CAA281E1E15141C026E1E281D1D +15141D1E281D1D15141D1E281D1D15141D1E281D1D15140000000002FD2DFF2300DF02D5 +000B0013000024103E01201E01100E0120260210162036102620FD2D7FDA0100DA7F7FDA +FF00DA3DEE0152EEEEFEAE7C0100DA7F7FDAFF00DA7F7F0203FEAEEEEE0152EE00000001 +FE3B0224001902F8001F0000032736342B012215141E03170727371706143B013235342E +032737176B123131B132040B091406128584123131B231040B0914061285022408291E0F +03070B0A1306086A6A08291E0F03070B0A1306086A000002FC36FF6501EA03FF00020005 +000005210901210101EAFA4C02D1FDB204AEFDA09B049AFBA803C40000000001FE52FF64 +FFE8029600030000072301331847FEB1479C033200000002FEA1FF64FFAA029600030007 +00000523113313231133FEE34242C742429C0332FCCE033200000001FDADFF4E00DD02D5 +00050000013521112311FDAD033042029342FC7903450003FE32FF260023FF8900090013 +001D0000063216140623222635343632161406232226353424321614062322263534EA28 +1E1E15141CE4281E1E15141CFE8F281E1E15141C771E281D1D15141D1E281D1D15141D1E +281D1D1514000001FE22021A003702A9000700000135211523352115FE22021536FE5702 +1A8F8F5959000001FCE70057009901A3001D000001211521221514171617072E0127353E +0137170E050706151416FDA202F7FD0A1A0E151F1436574343573614030C0409070B070E +12011E42140E0E162C133F451D0A1C463F130512060C080B070E0B070F000001FE3B0224 +FFEF02A9000800000307273635342321351184122429FEE702A985081E16133600000001 +FE3B0224FFEF02A900080000012115212215141707FE3B01B4FEE729241202A93613161E +08000001FE3BFF04FFEFFFD80011000007212215141E0317072737170614332111FEE231 +040B091406128584123131011EAD0F03070B0A1306086A6A08291E0000000001FE3BFF04 +FFEFFFD80011000007213521323427371707273E043534A7FEE2011E3131128485120614 +090B04AD361E29086A6A0806130A0B07030F00020023FFEE02BE029A001E002400000107 +2E06232207031633323E03371706232226353412333201130E01151402BE1909280F2017 +25291A764484465B2B462D411D2B1577CB768AEAB5A6FE027B4A53021215092A0E1C090E +0434FE0B390D0E2C18241A8E8175B700FFFDCD01CB3AA95D5F000004002FFFF2032802A4 +000F001B001F004100002514060706232226353436373633321607342322070615143332 +37360301230901170E012322263534373633321615140622263534363534232207061514 +1633323603282D274353393D513F2D33313F46363530393C2C303C5CFE3E3101C5FED60C +24452C383E4F414D28361620100C1D332446281D2033EA2D6227423A35427E22173C264C +4856564841530208FD4E02B2FEF7092E28453E62483B2B1C1017130E0717081026496528 +331A0003001EFF2502A601B90030003D0048000009011633323717062322270623222635 +34373633321737270E012322263534370623222737163332373E01333216173337073423 +22070615141633323E01032726232206151416333202A6FEF32C2F3B290C363F3D294D7E +2F33362C473B205701366138262E171E28271F0A1F1A404139953C243004021C3C365F6E +5618113D9360D5011D3739451F195D01A8FE0E171E1A2216722B1C30201A0D9C013A373A +2F303314111A0D4F455A2120303C2A9F7D3E131681A3FE73010D2820121700030035FFF1 +03DF02AF0055005C00630000010706073E013F013E01333215140E020706151416333237 +1706232226353437070E0107062322263534253E06370623222726232206151416333236 +37170623222635343633321617163332373E013705342322060736010E011514173202CA +127C6C16500D2164AF2F39335D613FAE130F37701578522730686B3996461E1A1920011B +04200D2019252B19070D2C503F272F452B2D26381B1236573B44644B1D3A373C1A29270E +39040100181B7546EEFD756974184302980E60D60919052B7D8C32274A3F3119FB530F14 +810D92302965A1296FA41B0B211B80770734152F1F2C2A16012C223D282A342B2B096B46 +383B5C151C1F13072A032B167E6169FED6306035190400030011000002FF028D000B000F +00130000010323132103231333032113172303330123033302FFAF9A53FEF6549AAF9A51 +010A526A4E9B4EFEF64E9B4E028DFD730135FECB028DFECD013325FDBD0243FDBD000001 +002DFFF501E3029C0031000025170E0422263437363534220607060F0123133635342322 +07273703333E0333321615140F011407061514333201D50E022113201F20194007304E20 +3A09204E98021F0D10029F6D040C3D2C43201D1C0B3A01010D166A0B0329121E0E142CF5 +181423553058227A0258080216020E18FE600E4E342D281E122EE6020303020E00000002 +001AFFF1037802A3003200400000372314163332363736372E0135343736333217363332 +161514230E0107363717060706070623222635343633321615140623220135262322070E +01151416173E013F0247316690420F0C3844564176334328240C116D24422C4A3310336A +4F3675A84D602219161D17141702930F266436243132312D595F17386B9423180C48395B +3628081B0B09341A725F144F0A6418AA397947331F291B15141C0206020118103F27223C +06577000000000030021FFF103A302AF003E004800510000010726232206151416333237 +3E02373E01333216151406070E010716333237170623222706232235343633321E02173E +01370623222E02353436333205342322060736373E0101352623221514333202600C375A +5688856D19260B25190D2A81392A29AE822F904045228D7C138396545046557E3B311532 +1C41092A732F1A1B325D5333936C63015C31376B242D3B3E51FD904A3343574202831321 +54494A540514492E143F642D2544972366A719178B0E9C1E183D17220B0A1A031B8E5703 +152A4E334E69632CA0670C21225CFE07012B1921000000020030FFF5023B02AF001E0028 +0000133716333E0133321514060706151433323637170E0123222635343736372637173E +013534232207064D0E243A55B33A40C1818F2421574F1555612D25324D0C1C319801759B +23252D3A01851A197DAC4351A013E7432B4C5B1163512D2A5486162C0222011A83481F2F +3B0000020019000002F3028D000B00110000010323012303231333013313030123070133 +02F3AE6FFEFA048E25AF700106028E9DFEF13F0701113B028DFD730210FDF0028DFDF102 +0FFDB902221CFDD9000000040013FFF10407029C000B0019001D004D0000011406232226 +35343633321607342623220E0115141633323E010307213727133E01333216151406222E +0123220E050703230323030623222635343633321E0233323713260737331304077D5534 +397F53313C3D181729492418182748261911FEE813836B0C34271E2C1C2A170D07050808 +05050403019B13A2027B224E1F2D1B161418050807181D7F173F05A38C0163568A483553 +86440A181D596B28191E5B6DFECC3C3C8601822A39261E151B1919060A0B100A0E02FDDC +0226FE53792D1F161C1419146501C1290212FE2A000000040011000002AE028D000B0011 +0019001D000013213216151407062B01072301033E0135340313262B0103333203230333 +C0014D4958384897AA429A024C513944A3551723B1599F35A14E9B4E028D59495F4154F7 +0253FED811703E42FEF901390AFEB4014CFDBD00000000050023FFB902C9029A0017001D +002D0033003B00000517062322262706232226343E013332161514060716333213033E01 +353403132E0123220703161736333216173625130E0115140526232207163332025E0825 +2D213C113C40798E67C078798E86771E2F2543794B51C7881C592A6F4789171F33502933 +1B15FE9F794B51014720323624232331132113281F127FEEC8777F7786DE3230023FFE3A +36AA5F49FE5D02001B1E28FDFE160C3E1B22083A01C638A95F508424260900020022FFF1 +036C02AF0052006200000117060716151406071516151406151433323717062322263534 +3E0135342322270E01232226353436333216151406232227231416333236373E01372623 +2206151416333237330E01232226353436333217361734270E070732173E010354072220 +536153364C20345D11654B25382A2A211E1152C1794D602219161D171417070246325D77 +554E6B434C7495CA3C2B9F2E14077B613F4FDEAB7D60240A300B1410150B16091A04221A +3947029D130E183556405E0302282C257811226510732F23213D371A300BA99648331F28 +1B15141C0C1C3368978B96313096632937F56BA8473B6BA83B17A540260A1A1423132C12 +35091106580000050011000002AE028D000D0013001B0023002700001321321615140607 +13230323032301033E0135340713262B01033332132706232226231703230333C0014D49 +58675B89AC7D5A479A024B4A3B3C9E4F1F18B3549F3369720B17081F076BB64E9B4E028D +59495C7310FEF40108FEF80255FEE7135C3F46FB01280BFEC5FEF8E40201E30243FDBD00 +00000002001E00F703BD028D0023003B000001150E011D011416171523353E013D010323 +03151416171523353E013D01262735331B0105232E012B01111416171523353E01351123 +22060723352103BD20180D25AA250C9A0B9715208320141530799AA0FE21140B1E1A320D +25AB250D311B1F0A140159028D1402181DFE240F041414040F24EBFEC80136DF24190414 +14041924F9300214FECB013558251FFECB240F041414040F2401351F2558000200070000 +02EE028D000B000F00000901152107213501352137210723013302EEFDEA01AD09FD8B02 +1BFE6C0902573464FDE7670268FDC00325250241022525FDBD0000020022FFF1038602AF +005E006A0000011706071615140607151E01151406070623222635343637170E01151416 +3332373E013534270623222702212226353436333216151406232227231416333236373E +01372623220E011514163332363733140623222635343E02333217360734270E01073633 +32173E01037F072A1E4859402D2D332D313F2C324842042A3F1D152419242A2E18192609 +9DFEFF4D602219161D171417070246325F8554477F4D51815DA96E3C3354780514806A3F +54507D8C4290642201282D492C07101B1C3C4002941313153B4F325708021348272C5A1E +21301E32470B17053821141C0F155530451A0613FEBA47331F291B15141C0C1C336B947D +9C31383F7A4C2F3B96797DB04A454270442643149B352A266D55040E05580002001EFFF5 +022A01B9001E0027000025170E012322263534372E01273716173E013332161514060706 +151416333227173E0135342322060216145C9C4C343612223E10171D482CB1582027AB8B +2A1E18776E016999242F76C4145D5E3B342E2E04271D1139055B831C1B387515492D1A1D +D0010F632C1B5D00000000020064FFF102DE02AF0045004E000001072623220615141633 +3E02333215140607161716142322270E011514163332373635342623220607273E013332 +1615140623222635343637352E02232E013534363332053426232206073E0101A50A2C42 +48586E510664853F64C38801034B2A1C19586B4E425E37233027355D1215146D4942449C +665B7D7E6F020403026B8169544B01491E16489C0A76AC029212113E31353D416A37493E +710A060603380E17784231463C262F22284F3F0652603F34446C59504F7B1702020A0802 +4F433951630F127C4307650000000002002B0000038B02A8001D00570000011706232226 +23220615141633323637170623222635343736333216333207170E010736373E01333215 +1406070615141707353437060702232226353436333216151406232227231E0133323637 +06072736373E01373E0103800B595739F72D5D6E3F2C47571C1427AA3B56404C9738F931 +2FAD0E222E1B4534122C1017291F08033B0B3E3569F93B5A211B141E1814150802043B2B +4C714061500D3A9E030A011E5402960F493C4E413838575901CD4A3D4E364038380E2164 +540E011B1E160F2D0F16260C0E141221250309FEE6393620251D14151D0D1B2460811F36 +0F46360617024566000000010026FFF1042002A200590000011706021514333237170623 +2226353401270E01070607062322263534373637270E01070E0823222635343633321615 +14062322272316333236373E0133321F01060207061514333236373E0537320418088EB1 +2137731378532531013401429D6B51202E36191F8F7E4201358337153D21301E281E2524 +13222E2318161E1813080703031C32604F91BB56070A0F64B727110D12251F145038594C +61301002A00DE1FEB02D238410922C2695019E0219BEBD8F2636262058DBC44A01168A57 +2263354B293219190A2D211C252014121A04156685F2B6020C8DFEC8592D10122E312089 +607D513F06000002001EFFF502A801B9001F003000002517062322270623222635343706 +232227371633323E01333216151407163332272623220E01151416333236372635343602 +9C0C1F2C291C7796333A121D35211F0A1F1A446E97472730221922245B0532358A5C1C1C +387C361026DF191512CE3B3A2E2D18111A0D905E31263E441194337D9A2C1B255C641922 +1D3400030028FFF4027601AC0023002D0031000001230306151417323E0237170E082322 +26353437132303231323352107230706151417373437032303330276774A0E041728142B +081B0522071B0918101B1B112C3C0947546A8D6C5F02419B44410E38020D934263420187 +FEF4341B0B08101028071A041F0616030E030601332B161F0100FE7901872525F1331131 +08022A2F0113FE9E00000003001E0000030C028D0007000B000F00000103231321032313 +0523033301230333030CAD9BA5FEF6A69BB0020F4F9A4FFEF54E9C50028DFD730268FD98 +028D25FDBD0243FDBD0000040011000002BF028D0008000E0016001A0000133332161514 +06232101033E0135340313262B0103333203230333C0FB7490EAB7FEF3026672474EC481 +2E6E6C996E5F594E9C50028D8073B7E3021BFE5229A75856FE6B01D939FDBD0243FDBD00 +000000040028FFF5027A02AB00110015002300290000010323370623222635343E013332 +1617331317230333273736353426232207031633323607130E011514027ABC890A365641 +4A37734A25480F02535E43A843491D0A2E252B16620E2A3356E15A393F02ABFD55303B56 +4248875D1E1E012E25FD9F71662315263A0AFE9C0C4A2C01461F8546250000040028FFF5 +01E501B90016001C00230029000025170E0123222635343633321615140721071633323E +0127333635342707372623220F02130E01151401981C2E64465460A172466416FEE6251E +2F2D442405470C284F2F241E2A1E2F5159324880153C3A585272A850442E408C111C2185 +2221381E99A90F0DABA40144178D3B3100000004001B0000015A028D00030007000B000F +000001072337172307331703231317230333015A248E255E43114402768C755E43614302 +8D8787253D7FFE5401AC25FE9E000004FF98FF27018A028D000300070014001A00000107 +23371723073307030E012322273716333237131723033E0137018A248E255E431144027D +157E522B241922231B0FA0583C981D3308028D8787253D7FFE2B4F6110210D07025A25FD +C80E3C1E000000020028FFF501D7029C001900260000132736333211140E032322263534 +3633321736353426232213342623220615143332363736C30A263CBC102A406A43454397 +6A451B073D46218325184970433657170F02711417FEFC3168745B3B5C466DAF30271F4D +68FEC12C2AB56B627654370000000001005600DC024E011E0003000025213521024EFE08 +01F8DC42000000010028FF8801CC001000070000052135331521353301CCFE5C1E01681E +78884C4C000000030000FFF202AC02A4001A00260030000001353E023332151407030615 +143B011523353E0137133734232205140623222635343633321607342622061514163236 +01301A39240107074C07220FAD231B044B041405015BC68F90C7C9938BC52AACFAB2B2FA +AC01D9190109090B021CFEF61C02131414020B0D0103140A9291C7C89092C8CB8F7FB1B2 +7E7DB1B0000000030000FFF202AC02A4001B0027003100001327363332161514060F0133 +32363717072335373E023534262322051406232226353436333216073426220615141632 +36FB14245E2D3B2633655F1A190B1320DA7C1E1A1A24213A0194C68F90C7C9938BC52AAC +FAB2B2FAAC019D0662392B1D352F5D0E150653137A1E1B2D151B218791C7C89092C8CB8F +7FB1B27E7DB1B000000000030000FFF202AC02A400280034003E00000127363332161514 +071615140623222734363332171633323635342B01353E05353426232205140623222635 +343633321607342622061514163236012214204D25314E2E644546020F0D121814162328 +61120A2C1722120D1D1720016AC68F90C7C9938BC52AACFAB2B2FAAC01BB064429204113 +1738444F260D10120F2F2354150209060C0E180F14189791C7C89092C8CB8F7FB1B27E7D +B1B000040000FFF202AC02A4000A000D0019002300000107330723072337233F010F0133 +2514062322263534363332160734262206151416323601CE443A0A3E19361A9F0FF92EA4 +74015AC68F90C7C9938BC52AACFAB2B2FAAC0205EA305F5F30EA4E9C2F91C7C89092C8CB +8F7FB1B27E7DB1B0000000030000FFF202AC02A4001C002800320000010723071E011514 +062322263534363332171633323635342726273537051406232226353436333216073426 +2206151416323601E7138E113F496A4D1F260F0B0E181312283F22204940016AC68F90C7 +C9938BC52AACFAB2B2FAAC020534250A4137475D14130C11110F412A2C161709137BBB91 +C7C89092C8CB8F7FB1B27E7DB1B000040000FFF202AC02A400140020002C003600000115 +0E010736333216151406232226353436373E010734262322061514163332362514062322 +263534363332160734262206151416323601DF346520131C2D3F5A41373C39332A511726 +1F2C2921192C340129C68F90C7C9938BC52AACFAB2B2FAAC020C15073E2E063B2E415A44 +3C3967251E1BDB1E204C342125575291C7C89092C8CB8F7FB1B27E7DB1B000030000FFF2 +02AC02A4000A001600200000010323132322060727373317140623222635343633321607 +34262206151416323601EFEB36DA7B1D22161236E9C7C68F90C7C9938BC52AACFAB2B2FA +AC01FAFE8C014B11180954BB91C7C89092C8CB8F7FB1B27E7DB1B000000000050000FFF2 +02AC02A400160022002C003800420000011406071E011514062322263534372E01353436 +333216073426232206151416173E01073426270E01141632362514062322263534363332 +160734262206151416323601E42931231D4939354A6C1B153C33323E30251C1B1E172125 +1D1F1830262E3242280117C68F90C7C9938BC52AACFAB2B2FAAC01B422290E1D301E303B +33314E201B24162B2E2D2A1B231C1710201B0F1EBB16222B0D343E26268691C7C89092C8 +CB8F7FB1B27E7DB1B00000040000FFF202AC02A40015001E002A0034000037353E013736 +37062322263534363332161514070E011334232206151433322514062322263534363332 +1607342622061514163236C82433212E181F2A2939553D363F712347A53A2A2F3A590100 +C68F90C7C9938BC52AACFAB2B2FAAC86150619192428153B2C3E56443975511A18011743 +462C4B1D91C7C89092C8CB8F7FB1B27E7DB1B000000000040000FFF202AC02A40019001C +0028003200002523353635342F012307061514171523353E01371333131E01172F010725 +1406232226353436333216073426220615141632360220A432021085220F287C171D1FA9 +134B0714198C1E4B0181C68F90C7C9938BC52AACFAB2B2FAAC8D160311050A43381A080B +011616041F320114FECA1E1401887C7C1F91C7C89092C8CB8F7FB1B27E7DB1B000000005 +0000FFF202AC02A40015001F002A003600400000133332151407161514062B01353E013F +0136353426271733323534262322060F0314333236353427262514062322263534363332 +1607342622061514163236EE9882503A584BA51A10063F05131D5412722124110B032912 +0E27323A290F0138C68F90C7C9938BC52AACFAB2B2FAAC02055C40141A3B393A16050D16 +F211100807028A481F1B040B954B3C112B29300F050791C7C89092C8CB8F7FB1B27E7DB1 +B00000030000FFF202AC02A4001B00270031000001072326232206151433323637170623 +222635343633321716333237171406232226353436333216073426220615141632360220 +151409554F6A7328422712565D4E639B642C1D100C0E099FC68F90C7C9938BC52AACFAB2 +B2FAAC020C7D5C7C50731D250E5A5349638709050EC291C7C89092C8CB8F7FB1B27E7DB1 +B00000040000FFF202AC02A40011001F002B00350000133332161514062B01353E013F01 +363534271707061514333236353427262322051406232226353436333216073426220615 +14163236D3A04D60916994190F053C042C6B3C072555672F1C2D22016AC68F90C7C9938B +C52AACFAB2B2FAAC0205554B647416050C14F8110D100119F61D0A0E6D544920129D91C7 +C89092C8CB8F7FB1B27E7DB1B00000030000FFF202AC02A4002B00370041000001072336 +352E0123220F01333236373307233635342B01070615163332373637330721353E013F01 +363427350514062322263534363332160734262206151416323602081111010128412402 +1E24251A0E1025110421360E12012A482519171524FEE0190D053E042D01C2C68F90C7C9 +938BC52AACFAB2B2FAAC0205630D14150D097910228D1410153948070C150E226516040C +14FB0F1A0416BB91C7C89092C8CB8F7FB1B27E7DB1B000030000FFF202AC02A400290035 +003F000001072337342623220F01333236373307233635342E012B010706151417152335 +3E013F013635342627350514062322263534363332160734262206151416323602081112 +0224491F041E2524190F112711040A0D0F301C052B911810053C04101C01C1C68F90C7C9 +938BC52AACFAB2B2FAAC020563161E0F0C76111F8F14110C0A027614050C031616011114 +F6130D08060216BB91C7C89092C8CB8F7FB1B27E7DB1B000000000030000FFF202AC02A4 +00290035003F000001150E010F0106232226353436333217163332373307232627262322 +061514163332363F01363534273505140623222635343633321607342622061514163236 +02201E150519434A4C64885E2A26110815100C1B1303131C354C59403818270416043001 +2FC68F90C7C9938BC52AACFAB2B2FAAC014D16020C156B23564B5F860D06137D28161F81 +51373C120D490F0A0B04160391C7C89092C8CB8F7FB1B27E7DB1B000000000030000FFF2 +02AC02A4002E003A0044000001150E01070306151417152335363F012307061514171523 +353E013F013635342627353315060F013337363526273505140623222635343633321607 +3426220615141632360219130E0445051C8F30081F7D1F0519851516063F050F16902508 +197E19030221011AC68F90C7C9938BC52AACFAB2B2FAAC020516040F11FEFE1702090416 +160422797914050B021616021316EF130E0807021616031F675E09110F0216BB91C7C890 +92C8CB8F7FB1B27E7DB1B000000000030000FFF202AC02A400150021002B000001150E01 +0F0106151433152335363F01363534262735051406232226353436333216073426220615 +1416323601C01911073C071985270A3E071115017CC68F90C7C9938BC52AACFAB2B2FAAC +02051603121DEB190A0C16160427EB1A090A070216BB91C7C89092C8CB8F7FB1B27E7DB1 +B00000030000FFF202AC02A4001F002B0035000001150E020F010E012322263534363216 +151406151433323F01363534262735051406232226353436333216073426220615141632 +3601E01114050334112E37242D151C140315180A3F050E17015CC68F90C7C9938BC52AAC +FAB2B2FAAC020516020C0B0CCA413920181015100E0509030F29EF140C09070216BB91C7 +C89092C8CB8F7FB1B27E7DB1B00000030000FFF202AC02A4002E003A004400000115220F +01171E01171523353635342F010706151416171523353E01371336353427353315060F01 +373635342F01350514062322263534363332160734262206151416323602201318A2640D +131CA129114C1E061218951A10053E042FA33008164E4B1111010FC68F90C7C9938BC52A +ACFAB2B2FAAC02051612799F150B021616020B071A7B7A16070907021616030C13010214 +020F03161603216038360C06020216BB91C7C89092C8CB8F7FB1B27E7DB1B00000000003 +0000FFF202AC02A4001B00270031000025072135363F01363534273533150E010F010615 +141633323637363F0114062322263534363332160734262206151416323601EC22FEEC26 +09410626901513053C06151E2725101611CFC68F90C7C9938BC52AACFAB2B2FAACFD7016 +0422F4170910021616011312E918080B07080D11294D91C7C89092C8CB8F7FB1B27E7DB1 +B00000030000FFF202AC02A400270033003D000001150E0107030615141617152335363F +0103230307061514171523353E013F013635342735331B01171406232226353436333216 +07342622061514163236023B1710054305111996260C3DB90B133804276A15130A370527 +6010ABD6C68F90C7C9938BC52AACFAB2B2FAAC020516040E12FEFF16040705011616032C +E7FED40127E1140712031616021A2ADE13080A0316FEEF0111BB91C7C89092C8CB8F7FB1 +B27E7DB1B00000030000FFF202AC02A40022002E0038000001150E010703230307061514 +171523353E013F0136353426233533133337363534273505140623222635343633321607 +3426220615141632360208170F0A3C0B762F04256315110A2A0417114F6A012B04240107 +C68F90C7C9938BC52AACFAB2B2FAAC020516081730FEE6012DDE160611031616031C32C2 +18050A1016FEEECA100C120416BB91C7C89092C8CB8F7FB1B27E7DB1B00000040000FFF2 +02AC02A4000B00190025002F000001140623222635343633321607342623220615141633 +323E0217140623222635343633321607342622061514163236021F9C633F4F9A60444F46 +2D254A652C2728442A18D3C68F90C7C9938BC52AACFAB2B2FAAC017A62924B415D9D5025 +292C9E4A2F2F334C512C91C7C89092C8CB8F7FB1B27E7DB1B00000040000FFF202AC02A4 +00180023002F0039000013333215140623222707061516331523353E013F013635342717 +0716333236373626232205140623222635343633321607342622061514163236F98B8458 +4424111E040228961814073A092666200D0D333901012625180148C68F90C7C9938BC52A +ACFAB2B2FAAC02055C3B38067510060E161603151BDB210B1002197C011F2C23209D91C7 +C89092C8CB8F7FB1B27E7DB1B00000040000FFF202AC02A4001F002B0037004100003727 +36372E013534363332161514062307321716333236371706232227262322013426232206 +15141633323617140623222635343633321607342622061514163236A20D3C2931369861 +4151986512213A2317212B1B1144582C3225132401122C254A642C224D64D4C68F90C7C9 +938BC52AACFAB2B2FAAC741227210C47356099503E6098120E0813190D530F0A01532A2C +9A4F2B329E3D91C7C89092C8CB8F7FB1B27E7DB1B00000040000FFF202AC02A4001F0029 +0035003F000025232F0107061514171523353E013F01363534262735333216151407171E +013303071633323635342322051406232226353436333216073426220615141632360208 +5B52231B082A961814073D060F179137466C370A1616A91E0B0F3338481A0148C68F90C7 +C9938BC52AACFAB2B2FAAC8DB5026C1C0A0E01161603161BE4160A0B0603162D2A55127A +18120133720124223E9D91C7C89092C8CB8F7FB1B27E7DB1B00000030000FFF202AC02A4 +00350041004B00000107232E01232206151416171E011514062322272623220723373306 +15141633323635342E032F012E0135343633321716333237171406232226353436333216 +0734262206151416323601EC1612021B271C22132B2A1E4834202413081206101215032E +2520280B0C180C0D0E1D13422D231611091109D2C68F90C7C9938BC52AACFAB2B2FAAC02 +0B7A2F2B191612192626311F313E0D0714890911232C221C0916121A0C0D0C1A26192C32 +08050DC191C7C89092C8CB8F7FB1B27E7DB1B000000000030000FFF202AC02A400190025 +002F0000010723363534262B0103061514331523353E0137132206072337051406232226 +3534363332160734262206151416323602131C14021A1E24430A27A021170847452C1516 +1C01E2C68F90C7C9938BC52AACFAB2B2FAAC02046712091714FEFD260A0D161601151C01 +0E192D67BA91C7C89092C8CB8F7FB1B27E7DB1B0000000030000FFF202AC02A400260032 +003C000001150E010F010E0123222635343F01363534273533150E010F01061514163332 +363F013634273505140623222635343633321607342622061514163236021A180D0D280F +4936384C0929082B9B1A15072F05271F2C3314210A260100C68F90C7C9938BC52AACFAB2 +B2FAAC0205160614339E3A44332A17209C1B0D1001161601131AB91417191A2D4E80281E +0416BB91C7C89092C8CB8F7FB1B27E7DB1B000030000FFF202AC02A400180024002E0000 +011506070323032E01273533150E0115141F013736353427350514062322263534363332 +16073426220615141632360220150CD60D3D0C0F1A961B11022C7619270102C68F90C7C9 +938BC52AACFAB2B2FAAC0205160112FEB1011236170316160308090A0ADABD260D0F0316 +BB91C7C89092C8CB8F7FB1B27E7DB1B0000000030000FFF202AC02A4002A003600400000 +01150E0107032327072303262726273533150E0115141F0137272E01273533150615141F +01373635342735171406232226353436333216073426220615141632360239100F09970C +236E0C2A08090419821510021C5005020F1883220517590A24DAC68F90C7C9938BC52AAC +FAB2B2FAAC020515050E13FEC3F5F5011C36090403161602090A0C08C7B3211109021616 +040D0928AEBD170B100116BB91C7C89092C8CB8F7FB1B27E7DB1B000000000030000FFF2 +02AC02A4002E003A004400000115060F01171E01171523353235342F0107061514331523 +353E013F01272E01273533150615141F0137363534273505140623222635343633321607 +3426220615141632360208261C513909141C93280926470B247518263326390714188F25 +0A1F4808220116C68F90C7C9938BC52AACFAB2B2FAAC0205151123678B160E0316160D07 +14585E0F060D1616052543318C110F021616050A07174D5A0B080C0116BB91C7C89092C8 +CB8F7FB1B27E7DB1B00000030000FFF202AC02A40021002D003700000115060F02061514 +33152335323F01272E01273533150615141F013736353427350514062322263534363332 +160734262206151416323602182014801A0829A5360A1E3607111A9C2D0826511E2E0112 +C68F90C7C9938BC52AACFAB2B2FAAC0205150A1795651D070E1616287092130C03161604 +090815695B21090A0416BB91C7C89092C8CB8F7FB1B27E7DB1B000030000FFF202AC02A4 +0013001F0029000009013332373637330721350123220706072337211714062322263534 +36333216073426220615141632360208FEFC524C181515121CFED00105593B1614121219 +0122A4C68F90C7C9938BC52AACFAB2B2FAAC01F4FEBA1210276A1101460E0D2662BB91C7 +C89092C8CB8F7FB1B27E7DB1B00000040000FFF202AC02A4001F002B0037004100000117 +0E012322353437062322263534363332173F0217140E0115061516333227342322070615 +14333237360514062322263534363332160734262206151416323601E2102825141E073B +3E1E28754125100504280802033203030A20222E232E2726272D0114C68F90C7C9938BC5 +2AACFAB2B2FAAC01080C2B1B1F101B49262243771B1403040302080901B10E03A41C2F3B +3226333A0191C7C89092C8CB8F7FB1B27E7DB1B0000000040000FFF202AC02A400180025 +0031003B0000010736333216151406232226353437133635342735363717061734232207 +0615143332373E012514062322263534363332160734262206151416323601512A323E22 +2E7F491F3A014F052A35320608552C282A291B2A221B250101C68F90C7C9938BC52AACFA +B2B2FAAC01D591452823447415100302011B110408011505090720AF2B3C3D3A0F1F1844 +3091C7C89092C8CB8F7FB1B27E7DB1B0000000030000FFF202AC02A4001C002800320000 +011706232226353436333216151406232235343635342322061514333225140623222635 +34363332160734262206151416323601AC0F3D4330367346202A140E1D091637443C2B01 +34C68F90C7C9938BC52AACFAB2B2FAAC01060C44302E45601E150E121C0712010459333D +7391C7C89092C8CB8F7FB1B27E7DB1B0000000040000FFF202AC02A40025002F003B0045 +00000117060F010E02151433323717062322263534370623222635343633321737363534 +273536073423220615143332362514062322263534363332160734262206151416323601 +F008020F3B020A070A0C270F31330D12042D3B2327773F200B17072A34351C304B252A48 +0124C68F90C7C9938BC52AACFAB2B2FAAC020C070730D30824190205270B45120D0C123B +252344751C50170E07011503AE1B6D2E25683391C7C89092C8CB8F7FB1B27E7DB1B00004 +0000FFF202AC02A40015001D002900330000011706232226353436333216151406070615 +141633323734232206073E010514062322263534363332160734262206151416323601B1 +103B4F2935774A1B1E625504221B2825151B3814324A010AC68F90C7C9938BC52AACFAB2 +B2FAAC01050C432E26426D1814273B0A09101418B310352E062C2491C7C89092C8CB8F7F +B1B27E7DB1B000030000FFF202AC02A4002B003700410000013336373633321615140623 +22353436353423220733072307062322263534363332161514071633323F012305140623 +2226353436333216073426220615141632360116380E05273D17200F0D1B080A2E134106 +41232055161E0F0C0B0E06020725102A36019CC68F90C7C9938BC52AACFAB2B2FAAC01B0 +2C084C19110C1217060D0106691CA09516100C100D0A0708054ED04A91C7C89092C8CB8F +7FB1B27E7DB1B000000000050000FFF202AC02A400250030003D00490053000001231615 +140623222623220615141716151406232226353436372635343726353436333217330734 +2322061514333237360734272E0227061514333236251406232226353436333216073426 +2206151416323601F41E034D300C0E01070C2E674D4338421C2A0B242A533629262E5825 +1E2F2821151408210F202406355726320118C68F90C7C9938BC52AACFAB2B2FAAC01D307 +11293C030B060909163E29332523172116090D1E1115302D39152B263425291F1FDF150E +070A0902181E381C8E91C7C89092C8CB8F7FB1B27E7DB1B0000000030000FFF202AC02A4 +002C00380042000025170E01232235343F01363534232206070E010723133635342B0135 +363717073633321615140F01061514323637140623222635343633321607342622061514 +16323601E010212919200A21030F11351814160F38570519143E2A083F4B3C1618062205 +1012E5C68F90C7C9938BC52AACFAB2B2FAACD60B281E1E1221710B07062A201B323E0142 +12020915060807E26519140718751205040F8F91C7C89092C8CB8F7FB1B27E7DB1B00004 +0000FFF202AC02A4000B00240030003A000001140623222635343633321603170E012322 +2635343F0136353423353637170706151433322514062322263534363332160734262206 +15141632360196130E0F16150E0F14130F1B28180F140D1A05293E270A3902070E014CC6 +8F90C7C9938BC52AACFAB2B2FAAC01D90F14150E0F1415FEEF0B271F13120D315F110706 +15020D08C40605069E91C7C89092C8CB8F7FB1B27E7DB1B0000000040000FFF202AC02A4 +000900250031003B00000014062322263436333217070623222635343632161514071633 +32363F013635342B013536371714062322263534363332160734262206151416323601CE +140E0F15140E0F04362054171E12160F07020712160D26081B143B2FF7C68F90C7C9938B +C52AACFAB2B2FAAC021D1C14151C1578DB8116110C120F09040C0527359B20080B14030A +7891C7C89092C8CB8F7FB1B27E7DB1B0000000030000FFF202AC02A400260032003C0000 +01150E01071716333237170E0123222726270F0123133635342B01353637170737363534 +2B01350514062322263534363332160734262206151416323601E51932401623110D1911 +191F141F1C0A1C161B37510A1F0F254407412843150C0140C68F90C7C9938BC52AACFAB2 +B2FAAC018116011C322B43260A281D3011381063012827080615020D07F11D3007031637 +91C7C89092C8CB8F7FB1B27E7DB1B000000000030000FFF202AC02A400170023002D0000 +0103061514333237170E0123223534371337342B01353637051406232226353436333216 +07342622061514163236019F5306090F27111E2C1A230547021C0E2F340116C68F90C7C9 +938BC52AACFAB2B2FAAC0206FEC414080432092C21240914010D0F0515050AC291C7C890 +92C8CB8F7FB1B27E7DB1B000000000030000FFF202AC02A4003E004A0054000001170623 +2235343F013635342206070E0107233736353423220607060723373635342B0135363717 +073633321614073E0233321617140F0106151433323F0114062322263534363332160734 +2622061514163236022F1235331D0723031A2F151719123912280C1135181A22381C1F19 +135B12081C483A15170D191B331C121601042504050E198CC68F90C7C9938BC52AACFAB2 +B2FAAC01070948220D177A0A0907221B1D3A413B850E072A22246557601B06150E030360 +63162427221F2017120816830806041A5391C7C89092C8CB8F7FB1B27E7DB1B000000003 +0000FFF202AC02A4002A00360040000001170E0123222635343F0136342322070E010723 +373635342B01353637170736333215140F01061514333237140623222635343633321607 +34262206151416323601E2102425170F14081B0811243A11131538370318141F4F08214D +3B2D042007080CF1C68F90C7C9938BC52AACFAB2B2FAAC01070B2B1B1212101B571C1850 +182C41BD0A090815040D0363662A130D6F150A046D91C7C89092C8CB8F7FB1B27E7DB1B0 +000000040000FFF202AC02A4000B00140020002A00000114062322263534363332160734 +232206151432362514062322263534363332160734262206151416323601E677452F3676 +4A2A373C2E304B64450102C68F90C7C9938BC52AACFAB2B2FAAC016344692D2746692E1D +326E32316A1191C7C89092C8CB8F7FB1B27E7DB1B00000040000FFF202AC02A4001E002C +00380042000001170607363332161514062322270F01143315233532363F013635342B01 +35173426232206070E011514333236171406232226353436333216073426220615141632 +36015706020A2E39282C7A4A181612042C8F15110543091A13DE13161A300B0E181E3551 +E3C68F90C7C9938BC52AACFAB2B2FAAC020B080A23352B264A740941170A16160D13F61D +0A08164A1B1624192154100F693391C7C89092C8CB8F7FB1B27E7DB1B00000040000FFF2 +02AC02A4001A00270033003D000001030E0215143B01152335363F010E01232226353436 +3332173707342623220615143332373E0105140623222635343633321607342622061514 +16323601F060010302230EA534092B21382421297D45280D09151710324F201B1B1F3301 +0AC68F90C7C9938BC52AACFAB2B2FAAC0204FEC0040B06010B1616021C882A212823477B +1F18300C1170302813185E6891C7C89092C8CB8F7FB1B27E7DB1B000000000030000FFF2 +02AC02A4001C002800320000010736373633321615142322262322070E01072337363534 +2B01353637051406232226353436333216073426220615141632360157191A1D20171017 +21111204112117181639310A18183B2F015CC68F90C7C9938BC52AACFAB2B2FAAC01B55C +2D181B140E251632213946AB23050C1606086F91C7C89092C8CB8F7FB1B27E7DB1B00003 +0000FFF202AC02A400260032003C00000107232623221514171615140623222726232207 +233733163332353427263534333217163332371714062322263534363332160734262206 +151416323601C70D12072F22242F322A160F0D0E0F030F0B110C332C252E50131310050D +06F4C68F90C7C9938BC52AACFAB2B2FAAC01B8583F1712212E22262805050A6148201726 +2E1D400504096E91C7C89092C8CB8F7FB1B27E7DB1B000030000FFF202AC02A40020002C +0036000001072307061433323637170E01232227343F01232734373E013736333215140F +010514062322263534363332160734262206151416323601BA064334070A09171D142731 +1E29010B3135031C153C1207080B030E012FC68F90C7C9938BC52AACFAB2B2FAAC01BE26 +BE180A16220D362721062EBD0D1206042A19080C050C317491C7C89092C8CB8F7FB1B27E +7DB1B000000000030000FFF202AC02A400280034003E000001170E0123223534370E0123 +2235343F013635342B01353637170F011433323736373307061514333237140623222635 +34363332160734262206151416323601D6112028182311303A21260F1108181044210731 +040B1C3B241F373407060DFDC68F90C7C9938BC52AACFAB2B2FAAC01090A2C1C21193A44 +31241536401C0D0815070704BE10074E2F57B61706036C91C7C89092C8CB8F7FB1B27E7D +B1B000030000FFF202AC02A40022002E0038000013353E0133321716173E013534272635 +343633321615140706070623223534272E01230514062322263534363332160734262206 +1514163236CF183C05111305042B370B13100C1117262E3322070917070E1101C5C68F90 +C7C9938BC52AACFAB2B2FAAC019615020C7B1C3124501303080E0F0B0E161127303A2E1D +15425E1B104C91C7C89092C8CB8F7FB1B27E7DB1B00000030000FFF202AC02A40031003D +004700000117363534272635343633321615140706222F01070E042322353426272E012B +01353E023332161716173736333205140623222635343633321607342622061514163236 +01841B610F0F110B10188A180E04182F0314101410040C110A040B0D160B281D02070604 +100970070408012AC68F90C7C9938BC52AACFAB2B2FAAC01ACB86420010C0D0F0A0E1610 +3F87171E964A0421181D101F1A771F0B061502070507113C519C096F91C7C89092C8CB8F +7FB1B27E7DB1B000000000030000FFF202AC02A400370043004D000001173E0133321615 +142322262322071716323F01170E012322262F01070E0123222635343633321633323F01 +272E0123220727373633321605140623222635343633321607342622061514163236016B +06212A150D111805130A13281D06181011101F2314101308143316181011150E0B081707 +0C133113070C0B1015060A35180D120149C68F90C7C9938BC52AACFAB2B2FAAC0184172B +210F0B1B0A415A1213140B2A1D12183B3D190F110E0B0E0B183C3E150E06130410175891 +C7C89092C8CB8F7FB1B27E7DB1B000030000FFF202AC02A4002E003A0044000001173635 +342726353436333216151407060706232226273436333216333237363534262726232207 +353E023332160514062322263534363332160734262206151416323601760D4B1313100D +1117524B361B17111701110D0B18040F12333010102108121E3212030734013FC68F90C7 +C9938BC52AACFAB2B2FAAC0171366823040A0B120C0F1711397A702714120E0D11101233 +100E9120210216040803764C91C7C89092C8CB8F7FB1B27E7DB1B000000000030000FFF2 +02AC02A400240030003A000001071E01171E013332353426353436333216151406232227 +262322072737232206072737331714062322263534363332160734262206151416323601 +D9B8171D170E110F0D09100A0B0F241C19352A1A0D110EC54B1917091517C2D3C68F90C7 +C9938BC52AACFAB2B2FAAC01A9C00413180F0B07010D080A0E110D141C1A150B0ED20E15 +044D6F91C7C89092C8CB8F7FB1B27E7DB1B000040000FFF202AC02A4000B001A00260030 +0000011406232226353436333216073423220E0215141633323E02171406232226353436 +3332160734262206151416323601E86B50313770493139393220341C0F191622361C0EFD +C68F90C7C9938BC52AACFAB2B2FAAC01785999484065994F17493C57521E23263A57513B +91C7C89092C8CB8F7FB1B27E7DB1B00000000001FFF5010B02CF01540003000001213521 +02CFFD2602DA010B49000001013DFED10186038E000300000123113301864949FED104BD +00000001013DFED102D001540005000001211123112102D0FEB6490193010BFDC6028300 +00000001FFF5FED10186015400050000012311213521018649FEB80191FED1023A490001 +013D010B02D0038E0005000001211133112102D0FE6D49014A010B0283FDC60000000001 +FFF5010B0186038E000500000121352111330186FE6F014849010B49023A0001013DFED1 +02CF038E00070000012111231133112102CFFEB749490149010BFDC604BDFDC600000001 +FFF5FED10186038E000700000123112135211133018649FEB8014849FED1023A49023A00 +00000001FFF5FED102CF015400070000012111231121352102CFFEB749FEB802DA010BFD +C6023A4900000001FFF5010B02CF038E00070000012135211133112102CFFD2601484901 +49010B49023AFDC600000001FFF5FED102CF038E000B0000012111231121352111331121 +02CFFEB749FEB80148490149010BFDC6023A49023AFDC60000000002FFF500AE02CF01B1 +000300070000012135211121352102CFFD2602DAFD2602DA016849FEFD49000200E1FED1 +01E3038E000300070000012311330323113301E34949B94949FED104BDFB4304BD000001 +013DFED102D001B1000900002521112311211521152102D0FEB6490193FEB6014AAEFE23 +02E049710000000100E1FED102D00154000900000123112311231123112102D0ED497049 +01EF010BFDC60232FDCE02830000000200E1FED102CF01B10005000B0000012111231121 +11231123112102CFFE5B4901EEEC4901350168FD6902E0FEFDFE230226000001FFF5FED1 +018601B10009000001231121352135213521018649FEB80148FEB80191FED101DD497149 +00000001FFF5FED101E30154000900000123112311231123352101E3497049EC01EEFED1 +023AFDC6023A490000000002FFF5FED101E301B10005000B000001231121352103231123 +352101E349FE5B01EEB949EC0135FED1029749FD2001DD4900000001013D00AE02D0038E +000900002521113311211521152102D0FE6D49014AFEB6014AAE02E0FE23497100000001 +00E1010B02D0038E000900000121113311331133113302D0FE11497049ED010B0283FDC6 +023AFDC60000000200E100AE02CF038E0005000B000001211133113311211133112102CF +FECB49ECFE124901A501680226FE23FEFD02E0FD69000001FFF500AE0186038E00090000 +252135213521352111330186FE6F0148FEB8014849AE49714901DD0000000001FFF5010B +01E3038E000900000121353311331133113301E3FE12EC497049010B49023AFDC6023A00 +00000002FFF500AE01E3038E0005000B0000012135331133132135211133012AFECBEC49 +B9FE1201A54901684901DDFD2049029700000001013DFED102D0038E000B000025211123 +113311211521152102D0FEB64949014AFEB6014AAEFE2304BDFE23497100000200E1FED1 +02D0038E0007000B000001231123113311330123113302D0ED4949EDFE5A4949010BFDC6 +04BDFDC6FD7D04BD0000000300E1FED102D0038E00050009000F00000121113311330123 +113301231123112102D0FECA49EDFE5A494901A6ED49013601680226FE23FD2004BDFD20 +FE23022600000001FFF5FED10186038E000B0000012311213521352135211133018649FE +B80148FEB8014849FED101DD49714901DD000002FFF5FED101E3038E0003000B00000123 +1133032311233533113301E34949B949ECEC49FED104BDFB43023A49023A0003FFF5FED1 +01E3038E00050009000F000001213533113313231133032311233521012AFECBEC49B949 +49B949EC013501684901DDFB4304BDFB4301DD4900000002FFF5FED102CF01B10003000B +000001213521112111231121352102CFFD2602DAFEB749FEB802DA016849FEFDFE2301DD +49000001FFF5FED102CF0154000B000001231123112311231123352102CFEC497049EC02 +DA010BFDC6023AFDC6023A4900000003FFF5FED102CF01B100030009000F000001213521 +11231123112101231123352102CFFD2602DAEC490135FE5B49EC0135016849FEFDFE2302 +26FDDA01DD490002FFF500AE02CF038E0007000B000001213521113311211121352102CF +FD260148490149FD2602DA01684901DDFE23FEFD49000001FFF5010B02CF038E000B0000 +01213533113311331133113302CFFD26EC497049EC010B49023AFDC6023AFDC600000003 +FFF500AE02CF038E0005000B000F00000121113311330521353311330121352102CFFECB +49ECFE5BFECBEC4901A5FD2602DA01680226FE23494901DDFD20490000000001FFF5FED1 +02CF038E00130000252111231121352135213521113311211521152102CFFEB749FEB801 +48FEB80148490149FEB70149AEFE2301DD49714901DDFE2349710001FFF5FED102CF038E +00130000012311231123112311233533113311331133113302CFEC497049ECEC497049EC +010BFDC6023AFDC6023A49023AFDC6023AFDC60000000004FFF5FED102CF038E0005000B +00110017000001211133113305213533113301231123112101231123352102CFFECB49EC +FE5BFECBEC4901A5EC490135FE5B49EC013501680226FE23494901DDFD20FE230226FDDA +01DD490000000001FF6DFF3102A102A60059000013333637363332161514062322263534 +363534232206073307230302232226353436333216151406151433323713230302232226 +353436333216151406151433323713233733363736333216151406232226353436353423 +2206D3AC2721364D253219110E170A162A3A166B066C484088222D1610111509143E2358 +AA484088222D1610111509143E23585B075D2721364E253119110E170A162A3A01AC7E2F +4D231B111A16110A12030D6D7720FEC0FEE5231A1119151007110510A201A4FEC0FEE523 +1A1119151007110510A201A4207E2F4D231B111A16110A12030D6D0000000001FF73FF31 +01E102A90059000013333E0137363332161514062322263534373635342322070E010733 +3237323E01331715140F010E01070607021514333237170E0123223534133635342B0103 +060706232226353436333216151407061514333237363736372333581B2628384E2D3A18 +1213160904223620191C1696282904080402050501020C010106480B1538102B3C1E2E4A +0C109B482B4A272D222C160F101705041425181C1E2D165801AC5C4A2433271D131A1813 +0E090504102A20475606010103030712040A27040515FEF90C0A46093A30321D010B2A06 +0AFEC2BB4121211B121A1810070907040D2F34ACFD370002FF73FF34020602AA003D004F +000013333E02373633321716333237363332140706021514333237170E01232226343F01 +230302232226353436333216151407061514333237363736133723253734272635343736 +353426232207060F012E5C1514251D404A201D1C030418060405151E610B123C102D381F +161A2F21A645418C222A150F10180504141D120D0516451C5A015725050508041A113726 +251B0601AC40343B193607040803124F73FE650C0B45093D2C1B2EC28AFECAFEDE231B11 +19180F080907030D18110E3A014A842094050A0C050A0B0504090D33336A180000000001 +FF6DFF3102D502A90085000013333E013736333216151406232226353437363534232206 +070E0107333237323E01331715140F010E01070607021514333237170E01232235341336 +35342B010306070623222635343633321615140706151433323736371237230302232226 +353436333216151406151433323713233733363736333216151406232226353436353423 +2206D3AC1B2628384E2D3A181213160904221D2712191C1696282904080402050501020C +010106480B1538102B3C1E2E4A0C109B482B4A272D222C160F101705041425181C1E3111 +AB484088222D1610111509143E23585B075D2721364E253119110E170A162A3A01AC5C4A +2433271D131A18130E0905040D0F1820475606010103030712040A27040515FEF90C0A46 +093A30321D010B2A060AFEC2BB4121211B121A1810070907040D2F34AC011420FEC0FEE5 +231A1119151007110510A201A4207E2F4D231B111A16110A12030D6D00000002FF6DFF31 +02FB02AA0069007B000013333E0237363332171633323736333214070602151433323717 +0E01232226343F0123030E01232226353436333216151407061514333237363736133723 +030223222635343633321615140615143332371323373336373633321615140623222635 +34363534232206053734272635343736353426232207060F01D3AC1514251D404A201D1C +030418060405151E610B123C102D381F161A2F21A645206944222A150F10180504141718 +0D0516451CAB484088222D1610111509143E23585B075D2721364E253119110E170A162A +3A018B25050508041A113726251B0601AC40343B193607040803124F73FE650C0B45093D +2C1B2EC28AFECA9095251C1119180F08090703141F110E3A014A84FEC0FEE5231A111915 +1007110510A201A4207E2F4D231B111A16110A12030D6D7794050A0C050A0B0504090D33 +336A1800000000020023000002AD029B001B001F000029013533323635342F0123070615 +163B011523353637013313163B012F01230702ADFEE3102820020DC6540A02291DDA4329 +0164124E0A4010DB19068B101D20070E718C0B0F1D101008420241FDBB46E8E3E3000003 +0026000002AE028D001A0025003000001333321514070607171E01151406232137333236 +37133635342B0117071633323635342623220B01163332363534262322C6FCEC5B1C2E03 +344B9091FEBC0414342C077B024E13D53B1E17525646311758442027506E503E24028D91 +662D0E0C0409463B526F10211E01EF0A0B2A1AFC06584B342EFED4FEF509525A34380001 +0032FFF402C70293002300000107233635342623220E0215141633323736371706070623 +222635343E01333216323702C73510014652487C4F2C63607E5A0A07142336576A8A9678 +CB781B6934100293DF08223B55446C83415B7B620A0A0D35273DA07670B6631B1B000002 +0026000002FD028D00120023000013213216151406232137333237133635342B01170306 +151433323E0235342E022322C2011A8C95E7BEFECE04125A0F7A044D19D87A055F456C3E +2010254B3423028D9182A2D8103E01F110082518FE0813082B3D626E3830524D2D000001 +0026000002DE028D002D00000107233635262B010733323637330723343635342B010306 +15143B013236373307213733323713363534262B013702DE2A10020469A03C50333C0F10 +3A1106485A42023F43736C221042FDC50413590F7805202B1304028D9E1A0957F82639F2 +02300A33FEFE08021B4858C6103E01E8160E1310100000010026000002D3028D002A0000 +0107233635262B010733323E01373307233635342B0107140615143B0107213733323637 +133635342B013702D3281001036B933E53242B280A103C100546613E044F2004FEAA0412 +342E087C044C1304028DA0081C57F80B2B29F2172632FE011004291010201E01F1100827 +0F0000010032FFF402DE029C00350000011522060F010E0223222635343E013332171E01 +333236373307233635342623220E0315141E0233323F01363534262B013702DE3B2D093E +2556332B7FA56ECB7A3532062C0D0F1A02102D1002514F426D48311610264B3439283903 +202B13040149101F1FD81616037F7F6AC27E100213180DDF140C3E5C3758717338223A37 +2019C90C0D1213100000000100260000039B028D00360000010723220607030615143B01 +0721373332363F0121070615143B01072137333237133635342B013721072322060F0121 +373635342B0137039B0412342E087B044E1304FEB70412332F073DFEE83D044D1404FEB6 +04125B0F7B044E1404014A0412362C0734011635044C1404028D10211EFE10120A221010 +201EF2F20C0C2610103E01F00C0C271010201FD9D914042710000001002600000212028D +00190000010723220607030615143B0107213733323637133635342B013702120413352D +087B034E1104FEB80413342E077B044D1204028D10201EFE0F0C11211010211D01F11008 +26100001003CFFF4026C028D001F00000107232207030607062322263534363332161514 +0615143332371235342B0137026C04125C106719432C413549232319271B183119754B14 +04028D103FFE63642D1C352C1E291D16111D0D156001C71627100001002600000322028D +00390000010722060705131E013307213733323635342E022F0123070615143B01072137 +333237133635342B013721072322060F01332536352E012337032204233025FEF1BB1A39 +2C04FEE1040B1817030407029C043E034E1104FED004124410750A4C12040138040B3326 +083505011A1201141E04028D10181DD3FEEA262910100D14060A050B03EDF30C0A281010 +3E01D8270A2610101F1FD1DD0E0F0B0A1000000100260000029C028D001E000025072137 +333237133635342B0137210723220607030615143B013236373637029C3DFDC704115C0F +76074C120401470412342D087A05287A4F57210908BEBE103E01DD1C11251010201FFE1F +130C182F440E17000000000100260000041F028D00300000010723220607030615143B01 +07213733323637132301230323030615143B0107213733323637133635342B0137331333 +01041F0411372A087F024D1304FEB60411362C077006FEA7195E036D054C1404FEF50413 +362D0977054D1304D55904014D028D101E1FFE0E0715221010211D01B7FDFB0205FE5416 +12211010262301DB15112310FE1301ED00000001002600000385028D0024000001072322 +060703230123030615143B0107213733323713262B0137331333133635342B0137038504 +12352F079018FEEE066C034C1304FEF604125B0F7E16461304C8EC0561044C1404028D10 +201FFDC2020EFE400C0F2310103E01FD3210FE2F01821208251000020032FFF502C8029D +000F0020000001140E0223222635343E0233321607342623220E03151416323E0302C83A +669E5B708D3B679F5C768374454842683D270E4F7A643F2B1201A44B987D4F82674D9D83 +52934F56674465826C3046503C5B7369000000020026000002C0028D001E002900001321 +32161514062322272227070615143B0107213733323637133635342B0117031633323635 +34262322C9010F75738F8E2C1E040838034D2004FEAB0411352D087D044E13D644201C4E +683B4218028D604052750502DF0C0B271010201E01F110092518FEEE08604C323F000002 +0032FF6802DB029B00250035000017372E0135343E0233321615140E0123071736333216 +333237170E012322272E02232207013423220E0315141633323E0253A4586D4472A85C6E +8170CB76400415161EA92E4A3E0D307354444A0D44270E15250206823F6C463215463D4D +7D4726736B0D79604C9F8052837466C6822B050422420B3B3C10031008120252A344687E +702C484D5C8C9100000000020026000002D5028D00250030000025072303062322270706 +15143B0107213733323637133635342B013721321615140607171E010103163332363534 +26232202D502A99614090A1C3E034C1304FEBB0410342D087C054D1404010F7167615173 +122EFEEB40110F605F4439121010013B0204EF0C0B271010201E01F11405251052453E5D +10E5252E0252FEFC044C4249340000010032FFF602A8029C003800000107233635342623 +220615141E05171E011514062322262322072337331416151E0133323534272E01272635 +34363332163332363702A8351001514F295006100C1C0D2406373F83713174242017103C +1001034E5A9C2E10511149716E2E78110E1403029CDD0810445C31300E1B1A121B0C1E05 +2E593B4F702626EC051505466188322E104610493A456A25180D000100190000029E028D +001D00000107233635342E012B01030615143B010721373332363713232206072337029E +2E100523251B6285054C1504FEB70412362D07855B3E5F0E102E028DB32A1D1F2107FDE6 +1603251010201E021A513DB3000000010041FFF30307028D002F0000010723220607030E +0423222635343637133635342B013721072322060703061514163332371336352E012B01 +3703070410342F085709162B3758376F6F0C024C014B120401480411362C085A074C4495 +2E56040121291304028D10211EFE9C243A412B1D6E4D065108014A02051F1010201FFE98 +1A2A2D43BD015F0E0C13121000000001003CFFF002F8028D001800000107060701231134 +23372107232206151117013635342B013702F8044D37FE47186304012604132C1A040118 +26341404028D100548FDC0023B5210102620FE7901016E301A16100000000001003CFFF0 +044D028D002D0000010706070123112301231134262B0137210723220E02151133133534 +2B013721072322151133013635342B0137044D044E38FE4A1D0BFED71D2F2A0A04012004 +0713141A0B05E2520804011D04124706011628361104028D100449FDC001BAFE46023929 +2B1010030C1F19FE87014C3D37101048FE750172341419100000000100190000032A028D +003A0000010723220E010F01131E013B0107213733323635342F01070615143B01072337 +363F01272E032B0137210723220615141F01373635262B0137032A040421331C17BB600B +22220E04FEE7040B22210445B50C381604F9044E3ED055060917261A0904011B04131A1A +063CA40F022B0904028D1016191BD5FEF62024101010190D0DC2C90D0F2010100A43E6E7 +1212200F10100E150C10B3B812101810000000010023000002B7028D0027000001070607 +03070615143B010721373332363F01272E012337210723220615141F0133373635342337 +02B7044834D13B034C1404FEB80411352D073D590E373604012B04132317074B04AE104F +04028D100540FF00EA0D0D241010201EF6ED2527101013150318CFD4140E1C1000000001 +003C00000322028D00130000090133323E02373307210123220E020723370322FDCADA2A +383F2B0D102EFDBB023DCA2C37422C0E1130028DFD99081A3C2EB20268061634299E0002 +0028FFF601D801B9001E002C00000103061514333237170E012322353437230623222635 +343E01333216173337073423220607061514333236373601D85B010E18280C1C48212A0B +04525B2D2C4C84441E2202010919322F561D1C3A3160160F01ACFEA7020911360C2A4137 +0F23694334439A6F1C122157476447463642734B31000002002DFFF501C2029C00170025 +000013173633321615140E022322271336352E0123220727370307141633323E01353426 +232206D6044138333C284367384348900201120A130B039E6C372611395A292A1D2F3A01 +7E043F57402E685B3C3002330803090C041018FE60D7050E627B37302C5500010028FFF5 +019001B9001F0000251706232226353436333216151406232226353436353423220E0115 +14163332016B0C5D6944459F6828391B1B12141D223755243628496F0D6D5B406CBD2923 +1F27180E0C230B1563732D3C310000020028FFF4020F029C002500340000010306151433 +3237170E012322353437230623222635343E013332161733373635342322072703342623 +220E011514163332363736020F95020F19250B1C4620280A05545731273E7C4728280102 +350221061504081A1E2E572F2018325B1710029CFDAA060609380C2940291B25694C3338 +947A1E14D1080414030FFED024236D89322220704A3300020028FFF5019A01B900180022 +00002517062322263534373E0133321615140E0207151416333227333236353426232206 +016B0E5A6E44450614975B283E37585F30422F4CBD094F7719133256700D6E5E3E201C59 +93222A2D472917021C2F3CA35C4113187A0000010028FF450267029C003800001333323E +013736333216151406232235343635342322060F01330723030607062322263534363332 +16151406151433323E05371323F8251C1D1D0F3B5B252A181123090F243A1013500C4C4F +140A4768232517141312100F0D1914100F080B02574D01B52750165A201B141419081A03 +08473D4626FECE4E18B21E18141D140D0A110509112120321E2F0601560000030014FF45 +01EC01B9002400300040000001072316151406070E01141E021514062322263534372635 +343633352E01353436333217073426232206151433323E0113342E02270E010706151416 +33323601EC0D51114C412A2E4957496F685E5A751833222F2F624C3C1C1E171F273B3821 +2E110D2D374C100114053048433F40019D2D141E395308062028180D312A3C5B42314626 +101F1E39040B3C263E601C401F1F5734513A44FE7E1B230D0E06010B042325273A350002 +0032FFF50101026800090025000000140623222634363332070306151433323E04371706 +2322353413363534262322072701011C14151B1B1513015C010D0609060C0613060D5234 +284F020E110E0E030249261B1A281EAFFE9406080A03030A0814070A692E1F013304080D +0904100000000002FFF0FF45017402680009002700000014062322263436333217030E03 +23222635343633321615140615141633323713342322072701741C14151B1B1513086C09 +1D2C4226252417180F141006043C2B5C200F0C030249261B1A281EAFFE5724423F262518 +142015110713080307AC016B1605110000000001002DFFF5020F029C0031000001070E01 +0F01171E0133323E033717140E04222E022F010F01231336353423220727370337363534 +262B0137020F042F36206A400D16120910100B12040F110D191721201B1408073F382D4C +9403201308039E71A71511090C0401AC0C051A1B5C981F1C09110F1A060B011F16231611 +0F1F11109331A6024D090B16020E19FE38951311080B0C0000000001002DFFF60116029C +001B0000010306151433323637170E0423223534371336353423220727011694010C0F25 +0A10032311201F11270680031F031803029CFDB104070D26110C042B121D0C33101401FE +0D0B16030F000001001EFFF802A801B9003E000025170E01232235343F01363534232206 +0F0123133635342322060F01231334232207273707333633321615140F01333E01373633 +3215140F01061514333236029B0D1A4821270638061825810D224F4D051724800E234E5F +210B10029D2C066F511B1C090A05174724201D36073D020F0E236B0B2C3C310D18DD1513 +26BC3687012B171126BC368701761F020E18A9A92E23161E242952181647211CE706060C +1B000001001EFFF801D301B90039000025070E09232235343F01363534232207060F0123 +13342E0123220727370733323736333215140F0106151633323E033701D305010F061009 +100B110D100829073907182C583A0A214D5F030E0D0715029F330307315D43380B3B0102 +0D070E0F091001600601130712090F090B05042E0E1ADD1C0E268557237C01760A0D0903 +0F17BD49743E1A2CE702080E070F0914020000020028FFF501B601B9000B001700000114 +06232226343E01333216073426232206151433323E0101B6996E45423E77464053511F24 +3D6C3B31562A011F6EBC6282845C4D2E2439B7666B78880000000002FFE2FF4901DA01B9 +002300300000133736333215140E01232227070615143B010723373E033713342E012322 +0727370F021633323E01353426232206FD0E3D345E417845251818053D1003EA03161D11 +070675030E0E0C10029E12242E121C30542C1F14284601720D3A9B4189601364160D2B0C +0C010A1A131701D00C0B0A0410184586C81561823A2B2853000000020028FF4901CF01B9 +001F002D00000103061514163B010723373332363F012306232226353436373633321617 +333707342322070E0115143332373E0101CF83031A170E03FA03132E26092C064A592D2C +63463229222402030718311B22304B342218324901ACFDF60A13161A0C0C2A24B8674330 +59A92E221E16275A4A1B27A8423F11239B000001001E0000018901B9001F000013173637 +3633321615140623222E0223220E010F0123133635342322072737AF050A164B3E151724 +1D0D100507061B4D2A07154D5C04210912029D010B011424771B151F330C0E0C8A6E194C +016C0F0813030F17000000010032FFF5018601B9002A0000010723342623220615141E01 +151406232226232207233733141633323635342E023534363332163332370186180F3329 +151E4343493E1457030F0F1119103B2D2821293029432F17380D0E1001B99232461D1D16 +526129324B14159C325035241B3B2D4221373414140000010028FFF7011B0237001D0000 +01072303061514333637170E06232235343713233736373307011B0A464E021017250D02 +130B171217190C2705514D057B360D1F01B626FEC006050C02320B021B0D1A0E11083413 +1201401D1773810000000001001EFFF701BC01B900360000010306151433323E053F0117 +0E02232235343F01230E020706232235343F01363534232207273703061514333237363F +0101BC59010E040909070A050B02050D131B3C1A28041A010234411226223D083B062110 +0A039D54031A293B4D201501ACFEA404050E0306050B060D02060B1B232D3415105F0142 +4C0D1C4A1D1EE7170217030F1AFEBA0D0B224D66754B00010048FFF701DF01CA00270000 +130306151416333236373635342E02353433321514070E01232235343F0136353423353E +0237F759041F1D496C1D0F131713362F61216A3774093A05390E45331601C6FEBA0D131E +2479522D1D19220E160E2A5392862E3A5D201ED21405140F040E0E0A000000010048FFF7 +02EC01CC0039000001030615143332373635342E02272636333215140E0323223534370E +03232235343F013635342335363717030615143336373E01370213500C3B7B480F131613 +010120172F1830415A316F17112B3B4B284E132F0536544704510B1C3861252F1A01C2FE +DF2E183DCB2D1D19220E160E1812532C676653346429542746482C57154AB10F0E160F0E +1E03FECD30192F019638785D00000001001EFFF701FE01B9003900000137363332151406 +23222623220E010F011E02333237170E0323222F01070E0223222635343633321633323F +0127262322072737161701312D37383115120C18080E150B093709232214211C0E021A19 +2A142D1C283F14192E1A191B15110D160C1F2741212042170F0384311A0120455421101A +090B0D0E55146E43390A022A23204D71621F201D1C130E17143B655C590612211B470001 +001EFF4901F001B800320000011736373635342E01353436333216151402070E06232226 +343633321633323637032E0223220E012327371E01010E1C472F1C1A1A1A1519209A320A +291523191F1D0E1A1E1B0D191B050C4315260309201A050D0F030296110F0133EB615734 +1708131A101117211D33FEFF3F0D341B2A16180A2328151F4620013A1E26250103101918 +35000001002AFFF201D301C200260000011501173633321E023332353426353436333216 +15140623222726232207270123220607273701D3FEBE031C271F2E151B0F1B0C180E1216 +4327093B323143370B0148832E2A10122401C210FE9801151B201B1805150C0E18181225 +2B0E0E180A0172162704890000000004001FFFF1034E02A2003100390042004B00000117 +0603363717060F0123372627062322263534363332161514062322272314163332363726 +3534363332173E03333207230E0107161712033427060716173736272623220615141736 +03450967A23C2B092A521161125A485C51303B241A151D1714160702241D29422B7A7249 +663B2B41514D2510390138714C1F0281981D703C435431012C325D39596B3F02A00ECAFE +7D0C16101F0E2A2706225E342820281C14121E0C1121232A458A5362523E55562B241484 +733D53011BFEC9543DAC4320066D08BC4B543E76404500020025FFF1030D02AF003A0045 +000001072623220E0115141617362433321615140E012306151416333236353426232206 +0727343633321615140607062322263534372E013534363332031732373E013534232206 +01C10C3751356347564151010F682E3285DD73453E37507A291E366107167550373F362A +4E6055703047638F715B35017B79495B3248CB0285131F214A313E47077DB727243C7E54 +6463313D643A25256A4E025B863532294E1D365D50515A0C56484B71FEB4013E25602B28 +9E0000030024FFF1033202AF00370044004C000001170E01071615140623222706232226 +353436333217363736372E0123220615141633323637331615140E022322263534363332 +161736073427060706070607163332360526232215143332032A081B151739C57D46564B +563D443C2F4763527953602C9A5290A15C4860770113022E494F255976C39060A7362708 +25293E4B7921143A3572A4FE204B39435742024B140C101959658CC7211B221D191E3432 +C487513D4B80693C5581840F1C3F64381D65526E934E421CEB4C44377B9753160A14AF98 +28192100000000020053FFF102E402AF0044004E0000010726232206151416173E013332 +1615140E0123061514163332363717060706232226353436333216151406232227231E01 +3332363727062322263534372E01353436333205342623220607323E0101A109313E4C61 +4A4145D8592C3B73B961292220367F580F222052F84861211A141F181415080205492E57 +75320142483C4D1A4E597659460153201941A830539F60028D121644302C3C096D842923 +325F3A3C441D264750102257E0432B1E271C13151E0D18276060012C453A37330D49393D +556114167F55344F000000030009FF4F031802A20029003600420000251706070E012322 +2635343736373E01372E0135343E023217363332161514230607363717060F0136133526 +2322070E011514161736030E02070615141633323602280F475035B85C242A7D239B1443 +10374233525B5A52241E090F6842564D3610356D5744891A1152303146392751DE114D31 +145814103D67C1103F1D66A0241D4B3B103027AC220B4337314F2D1706140B09302FC112 +530B6715D01A01C701021112482F2634019FFE210617110A2B360F16620000010028FFF1 +03EC02AF0075000001170E050732173E01373E01333216140623222627230E02070E0107 +15161514061514333237170623222635343635342322270E032322263534363332161514 +06232227231E01333236373E043727062322272623220614163332371706232226353436 +333216171633323603030D1A2F2129142A081B0F20382C4C6325161D1614101C01010815 +1C0A316141304C203970137555253855281A082E5E5C53303F50221D141B181415080203 +3C2B3C5A3C0D3E19343624010F152C503F273046362E4D361236613C4F664B1D3A373C1A +2255029D101430273F224B0E0E0735416F69152819171607263D12595915023029257E11 +22810F902F2329861E1F0F6589461C402A1E2C1C16141D0D1926586A18712A4C381D0305 +2C223D503656096B47373B5C151C1F26000000010026FFF103BC02AF003C000025333637 +3637363332161406232226352306070E020723363736372706070E012322263534363332 +16151406232227231E0133323637123717060706023901235752382228171D1912101F03 +30672433562B141A060516013C535B7640222E2219161E171309070301130B356F4A9D5F +0D0E0C088336D1C43C25192A19171619FC59718A2468CEBC4D0151A7B6942D201D251F14 +121B040A0C9496013E270B30DBA500010052FFF1029702A8002E000001072623220E0115 +14163332373E01353426232206151417072635343633321615140E0223222635343E0133 +3216029714205E51B3733A3871642A4B3725334D1B1623614037553D648E4C535D77CC74 +404E02250262ABEA5A3A4D672C9456343A564935340A39494D6749494893764A75567EE4 +8A4C00010026FFF1037602AF005200000117060716151406232226353436371706151416 +3332363534270E03070E01232226353436333216151406232227231416333236373E0337 +26232206151416333237330E0123222635343633321736035807222059573E2325201A0A +241210293537182B1C311054C2794D602219161D171417070246325E7C542B2A423D234C +7495CA3C2B9E2F140876653F4FDEAB7D6024029D130E184362446B261C162B0E1215210D +10563F4B301744386A21A99448331F281B15141C0C1C3369964D48643F1A3096632937F9 +71A6473B6BA83B17000000010052FFDA029702A80043000001072623220E011514163332 +3726232207273633321736373E0135342623220615141707263534363332161514060716 +3332371706232226270623222635343E01333216029714205E51B3733A38473F1B212626 +0D3E2E35211C062A4B3725334D1B16236140375565521A2435310F4441212813494D535D +77CC743F4F02250262ABEA5A3A4D262B1D113A3819072C9456343A564935340A39494D67 +49495FBE3B2A300E52201D2675567EE48A4C00010043FFF102BD02A80037000025072E01 +232206141633323635342E0335343E0133321615140623353E0135342623220615141E03 +151406232226353436333216018D141542312848533C4C75202F2E20546F3A3854593530 +3D3F2D3F7021303021A477517465423D5D8F04472E4368465E521D372F30422443632A3A +3A354C1505382E2A2759401E393032422463784E4F47564F00000002002BFFF1038B02AF +001D003D000001170623222623220615141633323637330E012322263534363332163332 +07170E01070E0107062322263534363332161406232227231E01333236373E0103800B59 +5739F82C5C794431475B1C141470554057AF8838EF3134B10D263319175D3F5A613D5722 +1B141D191415070203392E537744305A02A31249395F4239405D59656F4F41607635510E +256E585189293C3D2D23271D281D0C1B24729367750000010024FFF1032502AF00400000 +09010615143332371706232226353437270E0123222635343F0136353426232206151416 +333237330E012322263534363332161514070306151433323E023F010325FED811213870 +15785325311103356D2B242D4691244C2D547A27226229140C563C33409D63496A26BA27 +1D276D674D18820292FDDA201723810D922B2321260148513028396EE3382D2430634F25 +2F77385D3F335A7B4D45423AFEE13D1A1C5F8C782DF300010023FFF1039A02AF00460000 +37173E03373E03333216151406232226352306070607062322273E01373E013727062322 +2623220614163332371706232226353436333216171633323F01170E010706D602366163 +533A343C48371A151D19121418013494926775570E21293733235846030F15349E1F3046 +372D4D3610365F3C4F6F481C313B3C1A413B1B0F4849285815020B3C6A7158505459251A +1512191A171EE7E4505C062666835880430305533D503656096B4737395E131E1F31160F +4D8165DB000000010023FFF1042E02AF0060000025173E01373E01333216151406232235 +230E01070223222736373E0137270603022322273E023736372706232226232206141633 +32363717062322263534363332171E0433323F011706070607173E0237123332170E0407 +0601C702447C4B7E7337151D19122B011B6A71AF90210D55382C6F520161A5B195131C1F +38211B3888020F1531981E2F3D302A26381B10365538495D46316107180A100D06413B1B +0F754F4F7502326C4429B77E12211524281333065B18021B9181DB911916121932089FC2 +FED30450997AB8570111FED9FEC1061A5C4E4896890205533C52352B2B096B47373B5C31 +040C06060331161073CECD69031270694901440B0F2A4D26770FCE00000000010024FFF1 +036902AF0050000001333633321615140623222635343722060706151433323637170E01 +232226353437230E01232226353436333216151406232227163332363736353423220615 +1416333237170E01232226353436333216023B02707221292016151D1135854443321B48 +39143E573830350902367349353D201A141F1B140F0A1846377E3B587C445D2D2A582613 +114F3439447756596C01E9C61F201A1E18161711B19A974D413A420F5049333120174D4F +41291E2A1C131520063683679B669458452A356A053D46443A506D7100000002005BFF1E +039402AF004800550000013302033637170E02070E01232226343E04373637270E012322 +26353436373E01353426232206151416333237330E012322263534363332161514060706 +15141633323637030E0515141633323603395BF2804B3E0F1F40232535B65C242D212C4E +355B10491E0333722B272E2F3C472B4F2F5B752D22672E14155F3B30429B654B683A5256 +0F0E339670DF32284C20290F17103C680292FEBCFEFF1C340F1C2A121066A2243A332123 +111B059034044753312C24564E5B4C1B21325A4D202B7D4E4D3D2E5771533F2D65676C2B +0C118E99FE67100E1D131E1F120F166400000003003BFFF1039002AF0053005C00650000 +01170E0123222635343633321E0117363332161514062322270607163336371706232227 +06071633323637170E012322262706232235343633321736372623220727363332173637 +2E02232206151416333236253423220716333236012623220615143332019712193F3233 +4D685D32754639484E39374232374E383C05063C210E373F0E0436686A334F6A13140E73 +5D244F524B577042322D613B3D0408352A113C420B064459393D6E32404733242A3501E9 +473E2C442C1B26FDB44C2A1B264741020708303240333B641A1A172E221A18221A40AC01 +0219113B018F4E24494201555C151C2B3C18221F389F0120104101A54C1614174F29282D +23781E211911FDE81C110B1E00000001001EFFF502F601B9003A00002517062322263534 +372706232226353437062322273716333237153E0133321707262322070E01151433323E +01373E01333215140706151433323602E1158D6A252704016E572C30162324271F0A1F1A +3E433895435B1B151C38494641602722513523093B2A1B6E0B371F71C211B93025130D01 +793B322D3214111A0D4F01465A470A334642A82B2D33352934651C2C6627183A51000002 +002FFFF4022F02AF0032003A0000133716173E01333216151406230E0115143332363726 +353436333216151407163332371706232227230E01232226353436372625342322060732 +367F142035428C3C1D209B713F7B243A7F3D0A381E090F37132C120C071016332101428C +3F29346343370173231F5543578301ED1626095C7F1F184B7D5EE0342C6D631D1B395011 +0C435B20051A0920686E332A40D0580EA91F5E6369000001001EFFF5024D01B9002C0000 +25170E012322263534370623222737163332373E013332151406232235343E0235342322 +0E0115141633323602371659A9462F38121E2E271F0A1F1A3D3B34984258241928131813 +22378B5C1E18349FE1116E6D3F362E2D18111A0D4549604F1A27210F12050C0A1582A12E +1A1D650000000002001EFFF5033B02AF002B003900000901061514333237170E01232226 +353437230E01232226353437062322273716333237153E01333216153313033423220607 +0615143316373E01033BFEBF0E1C478D174B7334252409023B61352B30181F28271F0A1F +1A3E43389442242A02ACCC302971325729404F405B02AFFDB218181BAC115F5A281F1718 +3D3C38312E3514111A0D4F01465A27270144FEBE2954497D4029014A3C9E0002001BFF2F +02A102AF001D002800001713263534373E06333216151405071633323717062322270301 +3423220E020F013E011BC20D751B1D2D1D2A242B172327FEF1732130453C1149503326A6 +02192A122521130D3E5789D101761921573C353551283217112B1B916BDD1236173D13FE +BC032F311930201978216C00000000020026FFF502B202AF0031003B0000251706232226 +35343F013635342322060F01231326273716173E0133321615140E022307173633321615 +140F010614333203173236353426232206029D15A06820262E6A111944CF521C4DED502E +142E4C455D391F20344B4C1C4E03866721282A67181758A001368113111E42C311BD2523 +3C449D1A0D1ACA9C3501B80E371536077B5F28192A492C1999029E211D3043A4272A01C5 +02593D0F145000020053FFF501E4028D000B002800000114062322263534363332160317 +0E0123222635343F0106232227371633323733030615141633323601E41E15131B21160F +1B43154E6B2D242C393C25342A1F0A1F1D454349A016120F235A0260141E1A1114201CFE +4B115F572B273F666D1E111A0D4FFED928260E124E0000030009FF2502CE028D000B002E +0039000001140623222635343633321607011633323717062322270E0123222635343736 +3332171306232227371633323E0137012726232206151416333202CE1E15131B21160F1B +7AFEF82A2B3B290C363F34302B633F2F33362A493A21D12C462A1A0A1A221F3F2718FEF3 +011D3739451F195D0260141E1A1114201CC9FE0D161E1A22163F332B1C30201A0D018A2B +101A0C22241CFE02010D2820121700020028FFF5029A02AF003C0046000025170E012322 +26343635342623373E0135342322060F01231326273716173E0133321615140E02230717 +363332161514060F01161514061514333236031732363534262322060283174B74332331 +2B1E1F0B4C852141DE4E1B4DED502E142E4C455D391F20344B4C1C580295771E26825201 +36211F216BD401368113111E42BB115D58203E4811121D1E04522A22CE983501B80E3715 +36077B5F28192B492B19A801AC241930590A0320321C3E0C1B51017402593D0F14500002 +0030FFF5023B02AF001E00280000133716333E0133321514060706151433323637170E01 +23222635343736372637173E013534232207064D0E243A55B33A40C1818F2421574F1555 +612D25324D0C1C319801759B23252D3A01851A197DAC4351A013E7432B4C5B1163512D2A +5486162C0222011A83481F2F3B0000010031FFF503D201B9003C00002517062322263534 +3F0136353423220607231336353423220607231306232227371633323733071736333216 +151407173633321615140F01061514333203BD1599701E272D68131B4ADE584BBE141C4A +DF554DB83449201A0A1919505744460386681F291102746722263160171757C310BE2622 +3F41981D0F1AEAB10151240B1BECAF01562E101A0C628B029E211D23270189211D314E98 +26151600000000010031FFF502BD01B9002C000025170623222635343F01363534262322 +060F0123130623222737163332373307173633321615140F010614333202A8159B6D1F27 +2E6A110F0D43CD521C4DB73449201A0A1A185057484903866721282A67181758C311BD25 +233C449D1A0D0A10CA9C3501562E101A0C628B029E211D3043A4272A000000010017FF2F +02B601B9002E0000011736333216151406071617072E0127062322263534363332173E01 +35342322060703230106232227371633323F01016A03866726366846462316283123312C +2424332724152E7C2443CB548D4D01282D50201A0A1919515648011D029E303347B22F1C +2F14231C031C120E121E041AD54328C99DFEFA02272E101A0C61010000000002001EFF2F +02E701B9002800350000251706070E02072313270E012322263534370623222737163332 +373E01333216173337330117362427342322070615141633323E0102D512439830532606 +4EA902366138262E171E28271F0A1F1A404139953C243004021C44FEE7031F010E97365F +6E5618113D9360CA12468B2B582C090136013A373A2F303314111A0D4F455A212030FDF3 +0222F7BA2A9F7D3E131681A30000000100300000023C01BC002000000117062322270507 +231306232227371633323733071737343633321615071633320239030E124215FEFC4749 +B73549201A0A1A185057487802D62B22131754112D0D01371B0730C085015A32101A0C62 +E401A0293012094A24000001003EFFF5019C0213002C0000372736372635343633321615 +1407161514070623222635343633321615140E02151416333236353427230E0181096F59 +0525100B112A3A4D4667293B2517121812161222144A7010023059F31B266F0F0C253010 +10302A5F5665474327241F2C131211120309090B1092712C3E383B0000000001001EFFF5 +0214029200250000010723030615141633323637170E0123222635343F01062322273716 +33323F0123373337330702140D92D10E120F245754154F6C32212B3932373E201A0A1921 +485627660D67474F48020E1EFE7D1B1F0E124D601162582A273B695C32101A0C75491E84 +84000001001EFFF502B501A8002D000025170E01232226353437270623222635343F0106 +2322273716333237330306151416333236373303061514333236029E174B713524220803 +755E222B2E443944201A0A191950574B9F16120F47C7554EA0171D2261BE115D5827201B +2001862D2B35567E2E101A0C62FED927270D13E4B1FED72A201F4F0000000001001EFFF5 +024601B9002E00002517062322270E0123222635343F0106232227371633323733030615 +14163332363726353436333215140607163332023F07151A2B2043804825363933354520 +1A0A191950574B9E141B15338037102D201D1D12192511D21B091D6C6A322F3C665C2C10 +1A0C62FED9242211176869242438553224601A1D00000001001EFFF5035401B900400000 +2517062322270E01232226353437230623222635343F0106232227371633323733030615 +141633323F013303061514163332363726353436333215140607163332034D07151A2B20 +438048253601025959253639333743201A0A191950574B9E141B156380624B9E141B1533 +8037102D201D1D12192510D21B091D6C6A322F0B0773322F3C665C2C101A0C62FED92422 +1117E5B0FED9242211176869242438553224601A1D0000010041FFF502A301B900410000 +251706232226352306232226353436333215140E02151433323E02353423220607273633 +32161533363332151406232235343E02353423220E011514163332028D16987826340257 +49272F25172A121612242B5D432C25297B4E169D7227310244445225182812151222256C +4C181259CB11C2292C5827241C2C241013050B091559766E1830525D11BC2D27574C1A2A +211012040B0A1688A52C141800000002001EFF25026901A80033003E0000010306071633 +32371706232227062322263534373633321737270623222635343F010623222737163332 +3733030615143332363701272623220615141633320269AB352C2C2E3B290C363F36304D +7E2F33362A493A216303755E222B2E443746201A0A191950574B9F162147C755FEF9011D +3739451F195D01A8FEB86743171E1A2216722B1C30201A0DB101862D2B35567E2E101A0C +62FED9272720E4B1FE02010D28201217000000010034FFF5026901DE0046000025170E01 +2322353436342623220706232235343F0127062322270E01232227371633323726353436 +333216151407163332373E01333215140F01173633321615140615141633320252174976 +3B3C14120B413E372A167FE7011219372C18441F231A0C19173A2C1A1B1413151219342A +222241161F78DF011F292426110B0659B21066472E10271610473F14313BBC020722191E +101A0C2C1F2017221D15172620112E2B173227BA011021170F230A0608000002001F0000 +027B02A20007000A00002123272307230133032707027B6021F9826001C91A132597C8C8 +02A2FE70E5E50003004A000002810296000C0013001C000013333215140607161514062B +0113333235342B01033332363534262B01EFCDC543405BA877F0B95AC87082807E606F55 +6C4F029675395F1B2159668E018A833FFDFE5A42342300010060FFF202F302A4001A0000 +0107232E02232206151416333237170623222635343E0133321602F31A1308424D2E85C1 +655E7B7B2688AA808877C9734B7B022A65374517D48D57626C3385836F77CF7A3B000002 +004A000002EF029600090014000013332015140E022B0137333236373E0135342123EFA6 +015A3E71B36CD769315E6A365061FEDC3C0296E94D977C4D4A0F1925A161B30000000001 +004A000002A60296000B000001072107210721072107211302A613FEA032013113FECF3B +017B23FE3FA502964ACA4BED4A02960000000001004A000002A702960009000001072107 +21072103231302A70AFE9632012813FED84D57A502964ACA4BFEC902960000010061FFF2 +02F302A4002000000107232623220E011514163332363F01233533030E0223222635343E +02333202F31913209D5E9B5368645357062859C34B2D306D4481914979A456A50235678A +659A53577124199E4CFED61A1619877157A3784800000001004A000002ED0296000B0000 +01032313210323133303211302EDA5574BFEB04B57A557480150480296FD6A012DFED302 +96FEE1011F000001003B000002000296000B000001072303330721373313233702000A6F +806F1BFEE0046F806F2102964AFDFE4A4A02024A000000010016FFF201D6029600110000 +01030E0123222737331E0133323E02371301D6711B645B4C2926110E2F171926190C0872 +0296FE3E6B77384C17211933242001C800000001004A000002D90296000C000001070901 +23030703231333030102D905FE86011C77F12A4357A55748017C029611FEE0FE9B012E21 +FEF30296FEE1011F00000001004A00000234029600050000250721133303023424FE3AA5 +57934A4A0296FDB400000001004B000003A50296000C00000103231301230B0123133313 +0103A5A55587FE7E15758655A57B6801570296FD6A021FFDE1021DFDE30296FE1E01E200 +00000001004AFFF202FE0296000900000103270B012313331B0102FEA941E78C57A579C6 +790296FD5C0E0234FDCC0296FE1C01E4000000020063FFF2030B02A4000D001D00000114 +0E0123222635343E0133321607342623220607061514163332363736030B7FC368748A7F +C269748A5A5F586EA41F0C5F586EA41F0C01AE7BD07185717CD070857A555E917C312955 +5E917C3200000002004A0000027E02960009001100001333321514062B01032313333236 +35342B01EFB8D7A27C784757B05869689D53029685668EFEE3016751445000020063FF51 +030B02A4001E002E00000507222E06272E0135343E0133321615140E02071E0333133426 +23220607061514163332363736028B04272845273823271C0A5A677FC269748A416A8847 +0B27382C23675F586EA41F0C5F586EA41F0C9D120103090F1923301F1180607CCF708571 +559D714B0A1F261105020A555E917C3129555E917C320002004A0000027F0296000C0014 +0000133332151406071323032303231333323534262B01EFB9D78263AB67AD464A57B359 +CF4C5353029682587E0FFED1012BFED501758D2723000001003EFFF2025502A400240000 +0107232E012322061514171E0115140623222737331E01333236353426272E0135343633 +3202551E1309503A3351704F45A56E912F15120E61394A5C2F34524B95617C0254773C3F +462A3B33234A326881548749464735213117254D335E7E000000000100A1000002EC0296 +00070000010723032313233702EC09F5935792F51D02964AFDB4024C4A0000010075FFF2 +02F502960016000001030E012322353437133303061514163332363736371302F56920A5 +81D10C6957660E4A42375E1D1918620296FE5D7E83A8283101A3FE6A371C343B2B241F61 +0189000100C4FFF50314029600060000090123033313010314FE3D1A735F4D01440296FD +5F02A1FE0E01F2000000000100C2FFF504210296000D0000090123030123033313350113 +35010421FE741C43FEE41C3C5F22012D4101110296FD5F01BEFE4202A1FE240201DAFE24 +0201DA0000000001001F000003260296000B00000901132303012301033317370326FEC3 +B46991FEE5690160A26A7DF70296FEC7FEA3011BFEE5015D0139F8F80000000100BA0000 +03060296000800000901032313033313010306FEA84857479C5F7C01120296FE8AFEE001 +200176FED4012C0000000001001C000002FB0296000900000107012107213701213702FB +06FDC701B11AFDC9060236FE781B029615FDC94A1902334A000000020037FFF601D301CF +001D0024000013273E0133321615140F0106152337062322263534253736353426232207 +17370615143332A9291E6F413F46053F085505485A2C320140080227204C369617DA3044 +012E1F443E35300E16FA1D2F2C362725A83C210A05171B5AAA5A235B23000002004AFFF6 +021702AC000D001900000103363332161514062322271337030716333236353426232206 +01374243494650BE786730994C56341F3448843331244902A7FEF731514583C039026518 +FE82D0217E6530382F0000010043FFF601F701CF00170000010723262322061514163332 +37170623222635343633321601F739100E514079392E514A38608B4A58B86A374F017336 +4B7A65333969228E544C82B72E0000020048FFF5025802AC0012001E00000103060F0127 +37062322263534363332173F0103372623220615141633323602588A10064E080A455141 +4DB868372B3A4CC92B1B3D417E352C234C02A7FDD942311805323651497DC225EA18FDF2 +AB3F835D35363500000000020045FFF601E701CF00180020000025170E0123222635343E +0133321615140F0121061514163332273336353423220601933938694849555B80414046 +070EFECB07392E4F90D70450284EA7234C42534B609447453C1D1C371C1A3338E8101142 +3200000100650000020E02AB00180000010F012E012322060F0133072303231323373337 +3637363332020E2611181B131F330D0E7211725F4F5F5111510B1C3832364402793B0116 +1132353847FE82017E472965302800><0003FFF9FF28023F01CF00290034003F00000107 +23161514062322270615141716171615140E022322263534363726353436372635343633 +321633073423220615141633323603230E0115143332363534023F104E0484511F1C3628 +902B3D3B5E6734434F362E1727321C89591D5A1F674731482A253140CF142E3759517501 +B443140A5376081C1B1A01050E1438314B29142C2C294B16121B1C342B212D507F1B6B3F +492C1E2449FED70D2C1A2F2D302500000001003F000001FE02AC0017000001033E013332 +1615140703231336353423220607032313370137452C492E313806504F4B05411D59194B +4FA44C02A7FEEE2317322F1518FEBF0130160C363228FED2029418000002004500000145 +02A70003000800000107233717032313370145175C172172536D5002A75D5DDCFE3501B8 +180000000002FF8AFF28016202A70003001200000107233717030E012322273733163332 +3713370162175D17217918644332322B1024163F19784F02A75D5DDCFE1B5D6124401C66 +01E119000001003F0000022C02AC000C000001070517232707231337170337022C03FEDC +BF679C334FA44C085EEB01C50EB8FFCFCF02941805FE88960001003D0000013902AC0004 +000001032313370139A953A45002A7FD59029418000100410000030701D0002400001307 +3633321736333216151407032313363534232206070323133635342322060703231337FD +0E405A581B4A54313C064E4D49063D1B5A174B4D47073B1B5B184B4D6D4701CB393D4141 +34321519FEC501251812393327FED20122200D393228FED201B818000001003F000001FE +01D00017000013073E013332161514070323133635342322060703231337FB0C2D4C2D2F +3A06504F4B05411D59194B4F6D4701CB3924193328181BFEBF0130160D353228FED201B8 +180000000002004CFFF6021801CF000D001B000001140E02232226353436333216073426 +23220615141633323E020218294871414F5AA973525E513B354B6F3932304E2B16012C31 +6C5D3C5E4C73BC565F343A8651353F344A4600000002000EFF28021A01D00010001C0000 +0107363332161514062322270F012713370F011633323635342623220601000B4552414D +B967382A364C08A2491E2B17414C73322F234C01CB323653497BC224DA1805028B18A9AC +3E8758303C35000000020048FF28022501D0000F001C0000010307273706232226353436 +3332173703372E012322061514163332360225A70A403A43514250B96742274A902B0C33 +1D417E322F235101CAFD630518EA34534A7BC12324FECEAB1E21835D303B36000001003F +000001B701D0001100000107232E012322060F01231337170736333201B712140318082B +58233A4F6D4C080E40502501BF460708544AEA01B8180540440000000001003DFFF601B0 +01CF002300000107232E0122061416171E0115140623222627373316333236353426272E +01353436333201B0160F11324E2722213C2F70572D361A190F125B223A20263731684D57 +019A592C1C2B281D101D2D2144641A1D675723200F1B131B35223E6200010060FFF60178 +0244001B00000107230706151433323733070623222635343713233F01333F0133070178 +11683D062624220C1E223B292B054650043A23104D122001C547F5180F251A4B1629240F +1601161136403F7F00010059FFF5021801C5001900000103060F0127370E012322263534 +37133303061514333236371302185110064D080E255C272F3A06504F4B05411C5D194801 +C5FEBB42311805412025332819190142FED01310353B2901240000000001008FFFF2022B +01C50006000009012303331B01022BFEC9164F5530C201C5FE2D01D3FED5012B0001008C +FFF2031301C5000F0000090123270723033313372E0127331B010313FEC81625B7154854 +2F81030F015430BD01C5FE2DF4F401D3FED0B0196106FEDA012600000001001E00000220 +01C5000B00000107172327072337273317370220C86C5E4F9B5EDC605E448601C5D9ECAF +AFEFD697970000000001FFEDFF28023501C50016000009010E0123222737331633323637 +3E0137260227331B010235FED3366140301412101A1C204A22020E030E3E06563BBD01C5 +FE0F59531848184D3D04170651013821FEBD0143000100190000020501C5000900000107 +0121072137012337020505FEAA01081BFE82040156E31D01C514FE964714016A47000000 +0001002FFFF500EB01B90019000037170E01232235343F01363534262735363717030615 +14333236DD0E293C253218300916292C73056009100C24730C3F3339145AAF220B0F0801 +10031603FEAA220B0F2300000001FF84FF3100F601B9001E000013030E01232226353436 +333215140615143332363713363534262B01353637F6681F5B41232C1811270C121E291A +4810151B1A2D7C01B6FE667972221B121A250C0F070C4E680124410F110E100316000000 +00020023000002AD029B001B001F000029013533323635342F0123070615163B01152335 +3637013313163B012F01230702ADFEE3102820020DC6540A02291DDA43290164124E0A40 +10DB19068B101D20070E718C0B0F1D101008420241FDBB46E8E3E30000030026000002AE +028D001A0025003000001333321514070607171E0115140623213733323637133635342B +0117071633323635342623220B01163332363534262322C6FCEC5B1C2E03344B9091FEBC +0414342C077B024E13D53B1E17525646311758442027506E503E24028D91662D0E0C0409 +463B526F10211E01EF0A0B2A1AFC06584B342EFED4FEF509525A343800010026000002D1 +028D001B00000107233635262B01030615143B0107213733323637133635342B013702D1 +27110501719285044F2004FEAA0412352D077B044C1304028DAF2D0558FDE61206261010 +201E01F11008270F0002001E0000022C029B000300070000290101330B012303022CFDF2 +019C13202D06F1029BFDB70189FE770000010026000002DE028D002D0000010723363526 +2B010733323637330723343635342B01030615143B013236373307213733323713363534 +262B013702DE2A10020469A03C50333C0F103A1106485A42023F43736C221042FDC50413 +590F7805202B1304028D9E1A0957F82639F202300A33FEFE08021B4858C6103E01E8160E +131010000001003C00000322028D00130000090133323E02373307210123220E02072337 +0322FDCADA2A383F2B0D102EFDBB023DCA2C37422C0E1130028DFD99081A3C2EB2026806 +1634299E000100260000039B028D00360000010723220607030615143B01072137333236 +3F0121070615143B01072137333237133635342B013721072322060F0121373635342B01 +37039B0412342E087B044E1304FEB70412332F073DFEE83D044D1404FEB604125B0F7B04 +4E1404014A0412362C0734011635044C1404028D10211EFE10120A221010201EF2F20C0C +2610103E01F00C0C271010201FD9D9140427100000030032FFF502C8029D001600280039 +00000133061D01232E012B0122060723363D01331E013B013237140E0123222635343E03 +33321E0207342623220E0315141633323E020208101E1001181A751C1E10101E1006161C +7630D465C174708C244861854A4263391C74454942693C270D4E3D4B743F2001A94D561B +1F1A18214B650E22171B60B97D82673D7E745A362E4F5F0555674565826C30484D568588 +0001002600000212028D00190000010723220607030615143B0107213733323637133635 +342B013702120413352D087B034E1104FEB80413342E077B044D1204028D10201EFE0F0C +11211010211D01F1100826100001002600000322028D00390000010722060705131E0133 +07213733323635342E022F0123070615143B01072137333237133635342B013721072322 +060F01332536352E012337032204233025FEF1BB1A392C04FEE1040B1817030407029C04 +3E034E1104FED004124410750A4C12040138040B3326083505011A1201141E04028D1018 +1DD3FEEA262910100D14060A050B03EDF30C0A2810103E01D8270A2610101F1FD1DD0E0F +0B0A100000010023000002AE029B001B000029013733323534270323030615143B011523 +3536370133131E013B0102AEFEE1020F46012C05F50A2B1DDA43290165114E0624201110 +3D0E07017AFE6B0F0B1D101008420241FDC72E24000100260000041F028D003000000107 +23220607030615143B0107213733323637132301230323030615143B0107213733323637 +133635342B013733133301041F0411372A087F024D1304FEB60411362C077006FEA7195E +036D054C1404FEF50413362D0977054D1304D55904014D028D101E1FFE0E071522101021 +1D01B7FDFB0205FE541612211010262301DB15112310FE1301ED00000001002600000385 +028D0024000001072322060703230123030615143B0107213733323713262B0137331333 +133635342B013703850412352F079018FEEE066C034C1304FEF604125B0F7E16461304C8 +EC0561044C1404028D10201FFDC2020EFE400C0F2310103E01FD3210FE2F018212082510 +00030034000002E5028D000F0026003500000107233635342E0223212206072337050723 +3734262B01220607233733061514163B0132363713072137331D0114163321323E013702 +E523100309171214FED5282D0B10250168340F021611B91B2B0910341003201F9132220B +2428FDE7280D21200153221D1D0C028D980D1410120702232998CBD11A1217281BD10F0A +18111C26FEDC9E9E0E1518110621250000020032FFF502C8029D000F0020000001140E02 +23222635343E0233321607342623220E03151416323E0302C83A669E5B708D3B679F5C76 +8374454842683D270E4F7A643F2B1201A44B987D4F82674D9D8352934F56674465826C30 +46503C5B73690000000100260000039B028D002A000001072322060703061514163B0107 +213733323637132103061514163B0107213733323713363534262B0137039B0413352C08 +7B03212C1404FEB50412362B0984FEEA850323281304FEB704125B0F7A03222A1404028D +101F1EFE0E0B10121110101B23021AFDE60F0B160E10103E01F20C0C1312100000020026 +000002C0028D001E00290000132132161514062322272227070615143B01072137333236 +37133635342B011703163332363534262322C9010F75738F8E2C1E040838034D2004FEAB +0411352D087D044E13D644201C4E683B4218028D604052750502DF0C0B271010201E01F1 +10092518FEEE08604C323F0000030032FFF502C8029D0011001C0025000001140E012322 +2635343E0333321E0205213635342623220E0205210615141633323602C865C174708C24 +4861854A4263391CFDFB018B06454936593D29016EFE75094E3D6785018B60B97D82673D +7E745A362E4F5F51282455672C4F5881393B484D980000000001003A000002F8028D0016 +00000107233635342E032B01170121323637330721010302F82810031015271D18CDA1FE +C3013B394B1B1053FDCA017AD2028D9F07161A25120A02FFFEE93439BF01470146000000 +000100190000029E028D001D00000107233635342E012B01030615143B01072137333236 +3713232206072337029E2E100523251B6285054C1504FEB70412362D07855B3E5F0E102E +028DB32A1D1F2107FDE61603251010201E021A513DB300000001001C000002AF029C0027 +00000115220F020615143B010721373332363F01272E0123373633321E031F0133373E02 +333202AF3A44D439044D1504FEB80411352C073D4E1738370435201F301B1809094005B0 +1B1E341C1A02951051FBEB0E0C241010201EF7D03D3510050F11271719B9CF211E1D0000 +00030019000002EB028D002A0031003900000107321615140E032B01070615143B010721 +3732363723222635343E02333635342B013721072322070332363534260113220E011514 +1601FC096692304A5D5927130702491A04FEB60342320D0D717A426C7B400A4B13040141 +041052235F5C8D45FEEC5D3F6E3B4602421F5858385E3E2C141F0A052110101E315D414C +7543221D162710107FFE8780713A4EFE8701795276383445000100190000032A028D003A +0000010723220E010F01131E013B0107213733323635342F01070615143B01072337363F +01272E032B0137210723220615141F01373635262B0137032A040421331C17BB600B2222 +0E04FEE7040B22210445B50C381604F9044E3ED055060917261A0904011B04131A1A063C +A40F022B0904028D1016191BD5FEF62024101010190D0DC2C90D0F2010100A43E6E71212 +200F10100E150C10B3B81210181000000001001C000002E7029B00480000010706070607 +06070E0123070615143332370721373237363F01222E0135343635342737333216151406 +151433373635342E042223372107220E0107033236373E0237363302E704261105061213 +2B8C692B084D100504FEB80442121E0C2A32574222260412313F297C3611070F0E160D14 +03040141041D272A06444E4D1A030D0B082F67029B10082B0D1C5626594CB525061F0110 +10080E33B51844331F7A1F32041042311F721F45DA4706080C070502011010051A19FEEE +4B510A30230F60000001002000000309029A003100002537263534373637363332171615 +1407060F0133363736371707213736373635342322070615141716170721371706151433 +011805932924376BA67E3C30544C7A078038171F121238FEE8285E3D338C6C5461171726 +18FEF12A11043E5E25309B45463B2D59493B6273574F1825060D132F05AEA6155E4F5CB5 +576573412C2B0CA6B30511132C0000000002002AFFF10258028D00030006000009012303 +0521130258FE701A8401C9FEAA57028DFD64029C5EFE500000020028FFF6021101B9001D +002E00000107151416333237170E012322262723062322263534373E0133321615370734 +2E0223220615141633323E01373602118B1111141A0F0E31201A2602023B5E3D4407167D +4E373B4080030C1A152E5A14221D3E240C0501ACF125283B4A073A463423575E43251D5C +844F397B9B1F282D16AD713435484A241900000000020019FF490206029C001B003C0000 +17133E0137363332161514060715161514060706232227070607233613031633323E0135 +3423220623222635343633321633323635342623220E032F7419303C403B2A39372D3825 +1A4B75261A1C080F4F08E966161B365525150A17090D1317180321081D1F1F1E16231614 +0B6901DF675434374032396614010F57306B2160157A2521110271FE5D17657C353F080D +090A11055C20283C121A2E2600010023FF4501CA01B9001B000009010607062322263534 +3E013736353423220723363332151406071301CAFEF60808183B11131D360C0D3A1D1B10 +273F420D01B301ACFE8D5729741913243F4D185C5A8A4A8A802586080126000000020028 +FFF501C3029C002500310000011406222E02220615141E031514070E0123222635343637 +2E0335343E0133321603342623220615141633323601C3182C14021D3E3B2E42422E121D +7951464C8A650C2E19153A49242B42641B1B3D76271F3F640260121C141914281B1A3631 +354827422E4660523F5DA20A0C271825132D421B1EFE8F273DB1482B3BAC000000010019 +FFF501BC01B9002E000001072E0123220615141633323633321514232226232206151416 +33323637170E01232226353436372635343633321601BC0E12382E33582C220A270D262B +032E0C2D5848352A55180D23624D565040343A7A672E500174081A154031181B09141F06 +37302A2427220A32363A2C35470D142E3F542A0000010028FF4901E0029C003A00000117 +0E011514173E013332151406070E0115143B013236333216151406232226353436333216 +3332363534232206232226353436373522263534360122042426311F7024207F4548725C +0606170C3F3D763F181D19170B2109243D52053E0937486D5B1B2E40029C100D2914230A +24461822490632BB5C5B012E353E69221412181E271D31094E406EB45101201B203A0000 +0001001EFF4901C701B9003000003733373E013332151407030615141723263534361336 +3534262322060F0123133635342322072736373E01333215140E01AD02392D4D293C0F4B +17054C0B2142080F0D1F93161F4E4D0D0D16260D1E10133110290B13FB493A3B360D41FE +C7612F190A0D211E8E01081B150D10C44B69013036050D320A2A10131C29133545000000 +00030028FFF501DA029C000E00160021000001140E0123222635343E0233321605333635 +342322061723061514333236373E0101DA528E4947422B4C78433947FEC5CE1933326CAF +CF193A2D551C040B01D862E1A0585B44A89D6B64E0753181C2894E577D8B5B0D2B000000 +00010032FFF500E301B9001B0000130306151433323E0437170623223534133635342623 +220727E35C010D0609070A0811070D5234284F020E110E0E0301B9FE9406080B03030B08 +14070A692E1B013304080D0904100000000100320000022501B9002500003F013E013332 +15140623222623220F01171E01170723373235342F0107231335342322072737C1B72C34 +1E2F15150F1C111A1A8F7011243001EB013A0D5A394E5E200C1002A1FB8821152910161B +1571BB1D1205101011101199DB01730914030F1B00010032FFF001FF029C001E00002533 +0623222635343E0137032301363534272623220723363332151114333201EF1026421620 +050803DA65013F02010731191C1025433726197C8C36291B3C5C27FED701AF100F230B60 +4A8A88FE816500000001001EFF49022501AC002700000103061514333237170E01232235 +34370E0123222627060706072336371333030615143332363F0102255608111E1B0F0C55 +2229214757240D1804270C06094A1A137D4F4704362590101001ACFEAE20070E30062248 +2925866B540F0A9B180D0A254D01F1FED612092DE645470000010032FFF701CE01BE000E +000001170E01072303262B01353637133601BC120E8B74153E07251039473C8801BE0586 +ED4F01712A100215FEA2670000010019FF4901BB029C004C000001170E02151416333633 +3215140623220614173633321615140E012322270E011514163332363332161514062322 +263534363332163332363534232206232635343637263736372E01353436012504202507 +101058382E633925311F4646181F323217251F4258303D0C20053F3D773E181D19170B21 +09243D520A3709935E4C1E010336151D3C029C10092114080C1343221F283238182E100D +181E080919653C2C22012F353E69221412181E271D3109027452842A1A2B3326051E1022 +3200000000020028FFF501B601B9000B00170000011406232226343E0133321607342623 +2206151433323E0101B6996E45423E77464053511F243D6C3B31562A011F6EBC6282845C +4D2E2439B7666B788800000000010023FFF3023801AC002F00000107230E031514163332 +37330E012322263534373E0137230E030706232226353437363F01220E01072336330238 +1770031A141216102C1D10114E311C1D0909370E5E0C291C331D0D19141F1F3119592423 +2F1510458F01AC49084A3A4B17121E423B532B20221C1B972F2081535B160B1A1228080E +38CE0418197E00000002001EFF4901D801B9000E001B00001713363736333215140E0123 +22270713071633323E013534262322061E5432743A285E41784525182C632E121C30542C +1F142944B70150CA391D9B41896012BD01A5C81561823A2B284E000000010023FF4901D0 +01EA002E0000011423222623220E01151416333236333215140623222635343633321633 +3236353407220623222635343E0133321601D03014181337775623380D1E037E6F46181D +19170B2109233E520A3A122F4669A04C203801B62B253E74433235015C4A662414121820 +2A1D310109504550A4681A0000020028FFF5022301AC000F001D00000107231E02151406 +2322263534363307230E0115141E01333236353426022314AD092B20966A47479D670E02 +396A091F1945672B01AC49192A2C205689613F7A9D49058362142A288C432C430001001E +FFFB01D801AC0020000001072306070615141633323637330E01232235343E023F012322 +0607233E013301D8169B1B21071014132D0D101253304005060B01423327481910197442 +01AC49427B19151A17281B3C53430C1C121F04C831273A670001001EFFF501BD01B70025 +000001371615140623222635343F0136353423220607273E013332161514070615143332 +3E0135340125029693673E4C1329090F0D191E0D234A1F1816440D3F375A2A01A90E1890 +65B53A2E1B438D1D0A0E13250933360F1513DD29214761793578000000020032FF490277 +01B9001A002400003F011233321615140E012307233722263534363B01070E0115141637 +073236353426232206F7224BAA2F3A49925C28532B536BA2751905568142B43549931814 +2448138201214D4E488559ACAC594D70AE10099F623B51DBDBAE6037265300000001001E +FF36028501B9002000000901141633323733062322353437072301353426232207233E01 +333215140F01370285FEDE12171D191022443707B9650128181C211810102E28380104BF +01ACFEA9835C438370225BDA015D4E463F423B478A150A48E40000000001001EFF4902C7 +01B90032000001150E05070E012307233723222635343635342737363332161514061514 +16171333033E01373E073302C717261C1312080716995D2A512B0A4257203D051324292F +1F2C276451643A5E120806100D181A242F1C01B7100314262138211E607DACAC4F561B79 +2350061002412E1C801D3742050199FE670B624E22173B172B13170900010014FFF50295 +01B900310000013732151406232226270623222E013534363B0117220615141633323637 +2635343E01333216151407141633323E0135342601D106BEA0552C39034951304119A783 +10035D8E2420294B0B03112F210E134E212529502C3701A910A178AB3227593645267BA8 +10BB7E25384425161D2950411C1352712B39667E2D45390000020028FFF501D7029C0019 +00260000132736333211140E032322263534363332173635342623221334262322061514 +3332363736C30A263CBC102A406A434543976A451B073D46218325184970433657170F02 +711417FEFC3168745B3B5C466DAF30271F4D68FEC12C2AB56B6276543700000000010028 +FFF501AE01B900210000010723262322060733072306151416333237170E012322263534 +3E0133321633323701AE130F104D385514B505B907322A4A460C2E5B394349447F4A1B2D +0B0E0901B98469674024142E2F36440E3439564248895B141400000000020014FFF601FB +02A6002B00360000372736333215140615143332372E0135343633321615140716170726 +2706232235343E03373635342322253423220E011514161736210D483B2C25396B3D5878 +61504E4D2F280505141D5798860307050B02080C1501564F1F290D473F1ECD096A2D1E77 +254ED4268F585169735281800D01130107D1680C171C0F2206180F0EDBA1363E1F4B8126 +7B0000000001000CFFF3024B01B9002B0000010706070615143332151407062322272635 +3437270723373637363534232227263534373633321514071725024B9C16141531331110 +1A2518163001FC6D941013141A1B0B11150E12442D01010C01AC912432361E2926140E0D +1A17263C5E01E5881A4042221C060B19160D0A4D486D01F600030028FF49026C029C0015 +001C002300000107321615140706230723372226353437363B0136371303323635342603 +13220615141601E037566D50558D30512E556A54537A1020151461568038EF635D7A4202 +9CE4495276565CACAC58536E56547F65FEFFFE78AC593F45FE7701889E5F335800020028 +FF4501E901B90021002F000017273635342E0227263534373E0132161514062322263523 +0615141E03151413342623220615141633323E02DD0E041E27320F255229758849937935 +4202061D29291DAF1F21407D23232C4A2A17BB0707090D17111F112B4F6C7D3E57544673 +B63D2D1616222F1A1622181701E22236B7662745486662000002001EFFF5036201AC001A +003400000107231615140E022322262706232226353437232207233E0133052106151416 +333236372635343332161514071433323E01353403621650122F4956272C390347534644 +5A324C3B1016744501C5FE8D602420294C0A04451216384629502C01AC4922313D6D472A +302656613D7B55573F61495D99253541251E15951D1B445161627A2D2A0000000001FF73 +FF3101F802A90066000013333E0137363332171E01151406232227263534373635342322 +070E0107333237323E01331715140F010E010706070E02150E0123222635343633321514 +06151433323637133635342B010306070623222635343633321615140706151433323736 +3736372333581B2628384E371E11181D14280A070904223620191C169628290408040205 +0501020C0101061223131F5B41232C1811270C121E291A530B109B482B4A272D222C160F +101705041425181C1E2D165801AC5C4A24331C041F13151E250A100E090504102A204756 +06010103030712040A27040515438D52047972221B121A250C0F070C4E6801552E020AFE +C2BB4121211B121A1810070907040D2F34ACFD37000100000001000035A55AAF5F0F3CF5 +000B03E800000000C836D18900000000C836D189FC36FECF059503FF0002000800020001 +0000000000010000041FFE39000005C7FC36FE1605950064001D00000000000000000000 +0000042800FA000000000000014D000000FA0000014D002701A4009001F5000201F40020 +02F30050030A004C00D60084014D002A014D001001F4008002A3005600FAFFFB014D0031 +00FA001B0116FFBF01F4002001F4003201F4000C01F4001001F4000101F4000F01F4001E +01F4004B01F4001E01F40017014D0032014D001A02A3005402A3005602A3005401F40084 +039800760263FFCD0263FFF8029B004202D2FFF80263FFFF0263000802D2003402D2FFF8 +014DFFF801BCFFFA029B0007022CFFF80341FFEE029BFFEC02D2003C0263000002D2003B +0263FFF301F40011022C003B02D200660263004C034100470263FFE3022C004E022CFFFA +018500150116FFD70185000C01A6000001F40000014D007801F5001101F4001701BC001E +01F4000F01BC001F0116FF6D01F4000801F40013011600310116FF8401BC000E01160029 +02D2000C01F4000E01F4001B01F8FFB501F400190185002D018500100116002601F4002A +01BC0014029B000F01BCFFE501BCFFE80185FFFE01900033011300690190FFF9021D0028 +00FA00000185003B01F4004D01F4000A01F4FFEA01F4001C0113006901F40035014D006B +02F800290114002A01F4003502A30056014D003102F80029014D00630190006502A30056 +012C0021012C002B014D00B401F4FFE2022F003C00FA0046014DFFE2012C002B01360043 +01F4003702EE002102EE002202EE001701F4001C0263FFCD0263FFCD0263FFCD0263FFCD +0263FFCD0263FFCD0379FFE5029B00420263FFFF0263FFFF0263FFFF0263FFFF014DFFF8 +014DFFF8014DFFF8014DFFF802D2FFF8029BFFEC02D2003C02D2003C02D2003C02D2003C +02D2003C02A3005D02D2003C02D2006602D2006602D2006602D20066022C004E02630000 +01F4FF5801F5001101F5001101F5001101F5001101F5001101F50011029B001701BC001A +01BC001F01BC001F01BC001F01BC001F0116002F0116002F0116002F0116002F01F4001B +01F4000E01F4001B01F4001B01F4001B01F4001B01F4001B02A3005601F4001C01F4002A +01F4002A01F4002A01F4002A01BCFFE801F4FFB501BCFFE80263FFCD01F500110263FFCD +01F500110263FFCD01F50011029B004201BC001E029B004201BC001E029B004201BC001E +029B004201BC001E02D2FFF80261000F02D2FFF801F4000F0263FFFF01BC001F0263FFFF +01BC001F0263FFFF01BC001F0263FFFF01BC001F0263FFFF01BC001F02D2003401F40008 +02D2003401F4000802D2003401F4000802D2003401F4000802D2FFF801F4001302D2FFF8 +01F40013014DFFF80116001E014DFFF80116001D014DFFF80116002E014DFFF801160031 +014DFFF80116002F02EEFFF801F4003101BCFFFA0116FF84029B000701BC000E021E0005 +022CFFF801160029022CFFF801160007022CFFF801160029022CFFF801430029022CFFF8 +01160025029BFFEC01F4000E029BFFEC01F4000E029BFFEC01F4000E0241003A02D2FFF8 +01F4000E02D2003C01F4001B02D2003C01F4001B02D2003C01F4001B03B00031029B0014 +0263FFF30185002D0263FFF30185FFFE0263FFF30185002D01F400110185001001F40011 +0185001001F400110185001001F4001101850010022C003B0116FFDA022C003B01160026 +022C003B0116001C02D2006601F4002A02D2006601F4002A02D2006601F4002A02D20066 +01F4002A02D2006601F4002A02D2006601F4002A03410047029B000F022C004E01BCFFE8 +022C004E022CFFFA0185FFFE022CFFFA0185FFFE022CFFFA0185FFFE017F000D01F40017 +01F4001E029B004201D8FFC202A0001301F4000E0116002901EA001E01F4000E02D2003C +0216001B01F8FFB50154001F0116FFCA0136002602F20066023D002A01F4000801F4000C +01F4002F00AA000F0122000F0154000F014D00270116FF840263FFCD01F500110379FFE5 +029B001702D2003C01F4001C0116FF8401BC001301FF001101FF001101F4001701BC001E +01BCFFFD01F4000F01F4000F01BC001F01BC001F027F001F01BC001F01E0001F029A001F +01EA001E0165FF9C02CA0008025300080232003401BC000F01E0000401F4001301F40013 +01F4FFFA01160010014D003300F7FFF8011600040177000C00FC0008023F002902D2000C +02D2000C02B2000C025EFF9201F2000E021BFFEC01F4001B02CE0031029C001E0294001E +0192FFD3017FFFD30161FFD3014DFFEC018600180191002D0152004201DB001901DB0019 +01850009019FFF9201C5FF920153004F01B7FFC2014A00260116000601F4000902190031 +01F4003401BC0014029B000F01BC000A0279003E0195001101890011019D001501C90007 +01F4003701F400370189FFE701C2001802D3001601CC001301DF0014023A001D023C0019 +0193FFB001CF001A01D6001901E0001901F4003701F4003702E7000F02E7000F02F2000F +01F400260205FFE002780026017A0007017A0007012C002C014000020140000001400000 +0186000601F4000F014A0010014D004F0146001E01460017014D005B014D0079014D0075 +014D00CF014D009B014DFFEC014D0064014D005D013B001700DC0029012C0010017C0004 +013E00080140000F0195000A012100A0014D00460263FFCD014D00960276000702E40004 +015E000302D2003A0244000802FAFFFA011600310263FFCD0263FFF8026300080263FFE0 +0263FFFF022CFFFA02D2FFF802D2003C014DFFF8029B00070263FFCD0341FFEE029BFFEC +028BFFFA02D2003C02D2FFF802630000026CFFFA022C003B022C004E02E500320263FFE3 +02A3004D02FAFFFA014DFFF8022C004E0228001B01BC001E01DA000E0116003101DE0013 +0228001B01FAFFD8019A001301CC001801BC001E01C6001E01DA000E01E0001B01160031 +01BC000E01CAFFF4020EFFDF01D6001401C6001E01F4001B01F8001301F8FFD801C6001E +01F2001B019A000C01DE0013026E001B01C9FF940248000F02AE001B0116003101DE0013 +01F4001B01DE001302AE001B01C8002D022C00130254004E0273001B0318001102D2003C +01F4001B02A1003701BC001E022D000801E700200285001301C9001F02C400070210005D +0215FFF00204001B02D2003C01BC001E01BC00180263000102D300460239FFDC02910043 +01F40007014DFFF9014DFFE101BCFFDE03C1FFDD03C6FFE403120046026DFFE40290006E +02D2FFE70263FFCF024EFFE40255FFE90239FFDC028FFF990263000103BCFFC902340009 +02C4FFE702C4FFE7026DFFE402BBFFDD032EFFDF02C4FFE602C8003C02C0FFE30238FFE8 +029B0043022C00460290006E03040049023FFFBD02C2FFE7026E003603A8FFF203A8FFF2 +02B7003F0354FFE40255FFE40292000F036DFFE0027BFFCF0202001701F2002401BA001F +0186000101E9001E01B80022031F00000178FFEE020F001D020F001D01EB001201DAFFD4 +0279FFD301F8001401E9001D01FF001301E3FFB301B9001B02E5001101A5FFC302BE001D +01BCFFDD020F001D01E2002A0311001F0311001F0237000C02B1003201D7003201980007 +02A2001501E1FFE701B8002201DF00140186000101AC001A0185FFF70116002B0116002B +0116FF5402A7FFD402B9001501FF001401EB001201A5FFC3020F001D02A90013021E000D +03B9FFC902E5000002C8003C01E9001D0286004C01D00022020CFFE20151002A03410047 +029B000F03410047029B000F03410047029B000F022C004E01BCFFE8014D0031014D0031 +01F4FFF801F4FFFA0379FFFA014D00AB014D0097014D002C014D00A9022C00A6022C0097 +022C0039022C00A901F4006501F40016020B004603790039045D005005C70050014D0033 +014D003401F4000000A7FF570263000801F4000A047D000001F400100000FE3B0000FE56 +0000FED40000FE3B0000FE3B0000FE3B0000FDBA0000FD2D0000FE3B0000FC360000FE52 +0000FEA10000FDAD0000FE320000FE220000FCE70000FE3B0000FE3B0000FE3B0000FE3B +02BE00230357002F02E2001E03E5003502DC00110201002D0381001A03B2002102430030 +02D700190416001302AF001102D3002303B0002202AF001103D4001E02F2000703B60022 +0273001E02EE00640397002B0430002602B9001E027B002802EE001E02C9001102450028 +020300280125001B0155FF9801D7002802A3005601F4002802AC000002AC000002AC0000 +02AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC0000 +02AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC0000 +02AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC0000 +02AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC0000 +02AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC0000 +02AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC000002AC0000 +02AC000002AC000002AC000002AC000002AC000002C4FFF502C4013D02C4013D02C4FFF5 +02C4013D02C4FFF502C4013D02C4FFF502C4FFF502C4FFF502C4FFF502C4FFF502C400E1 +02C4013D02C400E102C400E102C4FFF502C4FFF502C4FFF502C4013D02C400E102C400E1 +02C4FFF502C4FFF502C4FFF502C4013D02C400E102C400E102C4FFF502C4FFF502C4FFF5 +02C4FFF502C4FFF502C4FFF502C4FFF502C4FFF502C4FFF502C4FFF502C4FFF502C4FFF5 +020FFF6D01F4FF7301F4FF7302E8FF6D02E9FF6D02CD002302B80026029F003203160026 +02CA0026026A002602DE00320369002601E00026021C003C02FA002602C4002603ED0026 +0353002602DC003202520026030D003202E40026028A00320226001902C10041023F003C +0394003C03160019021700230304003C01F6002801D6002D019F00280214002801BD0028 +022B002801EC0014013700320185FFF0021E002D013E002D02C6001E01F1001E01CA0028 +01E9FFE201CA00280198001E01B800320139002801DA001E01FA0048030700480226001E +01F0001E01F3002A0357001F031D002503750024030500530322000903F1002803CA0026 +02B40052038E002602B4005202E700430390002B034A002403A4002304360023037B0024 +039E005B03A4003B0333001E0244002F0296001E034D001E02AD001B02F1002601F00053 +02DA000902D6002802430030040E003102F9003103050017030C001E024400300203003E +0227001E02F1001E026A001E0378001E02F000410292001E02B30034029A001F025C004A +029F006002B4004A0247004A0217004A02B700610292004A0191003B018E0016027A004A +022F004A034B004B02A3004A02CA0063020D004A02CC0063024D004A021D003E026000A1 +02950075028E00C4039900C202BC001F027600BA027D001C01C0003701F0004A01C80043 +01EE004801BC00450150006501F0FFF901E7003F00DC004500FEFF8A01C5003F00CD003D +02F4004101E7003F01F3004C01F2000E01F200480150003F0185003D0123006001EB0059 +01DA008F02BE008C01E2001E01E4FFED01BF00190116002F0116FF8402CD002302B80026 +026800260254001E02CA00260304003C0369002602E1003201E0002602FA002602CE0023 +03ED00260353002602C2003402DC0032036900260252002602E1003202DF003A02260019 +0237001C0304001903160019029E001C032000200273002A020C002801ED001901AC0023 +01CF002801E4001901B3002801CC001E01E40028010B003202160032021D00320243001E +01C4003201B1001901CA0028022E002301F6001E01B700230219002801BA001E01CC001E +029A00320253001E0295001E02A9001401D7002801AE0028022A00140231000C02850028 +01FD00280358001E01F4FF73000000000000000000000000000000000000000000000050 +0000009C00000100000001AC0000027C000003440000036C000003A8000003EC000004CC +000004F400000528000005440000057000000590000005EC00000648000006A800000728 +0000076C000007C80000083C000008740000090800000988000009D000000A2400000A4C +00000A7400000A9C00000B1C00000BC400000C2800000CC000000D2800000D9C00000E30 +00000EC400000F5800000FF80000104C000010A80000114C000011B000001238000012A8 +000013100000138800001430000014BC00001558000015B40000163C0000169400001728 +000017C00000183C00001890000018C8000018E40000191C00001944000019600000198C +00001A1800001A9400001AFC00001B9C00001C0000001C8400001D4400001DCC00001E3C +00001EBC00001F4000001F9400002050000020E400002148000021D800002258000022B8 +000023300000239C0000241C000024A000002544000025FC000026900000270400002778 +00002790000027FC0000284C0000284C0000289C0000293C000029E400002A6000002B08 +00002B3000002C1000002C5C00002CF400002D7C00002E0400002E2400002E4000002EF0 +00002F0C00002F5400002F8C00002FE80000305C00003084000031080000319C000031C8 +0000321400003264000032B40000333C000033D40000348C00003544000035C80000364C +000036CC00003748000037E40000388800003928000039F000003A9400003B4400003BF0 +00003C9800003D6C00003DDC00003E4800003EB000003F4000003FC80000406C000040F0 +00004170000041EC000042880000432C00004360000043F40000449800004538000045D4 +0000469800004730000047B40000488000004928000049CC00004A6C00004B2C00004BF8 +00004CBC00004D7C00004E1800004E9800004F1400004F8C00005030000050A400005114 +00005180000052140000529C00005364000053E00000545C000054D40000556C0000560C +00005664000056F80000579400005830000058C40000598400005A3400005AD000005BA4 +00005C1C00005CB800005D4400005DF400005E8000005F3000005FB000006030000060AC +00006128000061AC00006234000062B00000632C000063B80000648000006508000065B8 +0000665C000066D0000067840000680C000068C000006944000069FC00006A8800006B30 +00006BAC00006C5800006D3000006DE800006ECC00006F80000070600000711C00007204 +000072B80000735400007410000074A800007530000075BC0000761C00007680000076F4 +0000776C000077E000007874000078E400007938000079D800007AB800007B2800007B9C +00007C6800007D1400007DEC00007E6C00007ED800007F6400007FE00000806C000080E8 +00008168000081DC00008254000082BC00008348000083F80000849400008550000085D8 +0000868400008740000087DC00008874000088EC0000895C000089E400008A6800008B08 +00008BA400008C6C00008D3400008DDC00008E5800008F0C00008F9400009038000090B0 +00009164000091F4000092A40000933000009404000094B400009564000095F000009684 +0000972C0000979C0000982C0000989C00009918000099D400009A8800009B2000009BB0 +00009C5800009CFC00009DBC00009E7400009F3400009FEC0000A09C0000A1400000A1EC +0000A2A40000A3340000A3E00000A49C0000A5080000A5980000A6080000A69C0000A704 +0000A7900000A7FC0000A8900000A9200000A9C00000AA540000AB080000AB940000ABFC +0000AC5C0000ACCC0000AD640000ADFC0000AE9C0000AF200000AFBC0000B03C0000B0EC +0000B1940000B2280000B29C0000B3080000B3280000B3540000B39C0000B3EC0000B460 +0000B5200000B6000000B6E40000B7BC0000B8640000B90C0000B96C0000BA100000BA8C +0000BB040000BB8C0000BBF40000BC940000BD400000BDE40000BE500000BEB40000BF5C +0000BFE00000C0640000C1200000C1A00000C2140000C2B80000C3480000C3D80000C488 +0000C5400000C5CC0000C6640000C6FC0000C7800000C7D80000C82C0000C8B80000C95C +0000C9B40000CA6C0000CB2C0000CBD80000CC980000CD580000CDEC0000CE600000CED0 +0000CF800000D0140000D0C00000D1240000D1A00000D21C0000D2800000D3080000D344 +0000D3880000D4040000D4800000D5200000D57C0000D5EC0000D6540000D6EC0000D754 +0000D7C40000D8640000D8D80000D9540000D9D80000DA7C0000DB100000DB840000DBF4 +0000DC680000DCE40000DD800000DDF00000DE680000DEE40000DF600000DFD80000E05C +0000E0D80000E1740000E2100000E2B40000E3340000E3940000E43C0000E4C00000E54C +0000E6140000E7100000E8080000E8D80000E98C0000EA6C0000EAF80000EBA00000EC1C +0000EC800000ECE40000ED600000EDDC0000EE740000EF040000EF500000EFA80000F004 +0000F0280000F04C0000F07C0000F0AC0000F0F40000F12C0000F1700000F1B80000F254 +0000F2A80000F3200000F3D00000F43C0000F4600000F4880000F4B40000F51C0000F5A0 +0000F5CC0000F67C0000F7380000F7A80000F82C0000F8D00000F97C0000FA280000FA8C +0000FB240000FB880000FBB40000FC480000FC9C0000FD3C0000FDD80000FE2C0000FED0 +0000FF280000FFB000010020000100C000010128000101A40001021C00010270000102CC +00010354000103F80001049000010544000105D00001066000010728000107C000010868 +000109140001098400010A4C00010AC800010B7000010BD800010C6C00010CF800010D98 +00010E2800010E9800010EE800010F6000010FC80001104C0001109C00011164000111C8 +00011248000112B80001133C00011398000113E800011458000114E000011560000115E4 +0001169C0001172C000117D800011858000118E4000119B800011A5C00011B0000011B94 +00011C2400011CD000011D5800011DC400011E4C00011ED000011F3C00011F6800011FE8 +0001201800012090000120EC00012168000121F400012268000122D00001233800012404 +000124B000012520000125AC000126480001269C0001272C0001278800012838000128F4 +0001299800012A8400012B4800012BEC00012C5000012CD000012D6000012DB800012E48 +00012ED800012FF40001309C0001313C00013220000132F00001338C00013414000134B4 +0001351C000135A80001362000013688000136E000013760000138000001389800013934 +000139CC00013A8C00013B5C00013BD000013C7C00013CE800013D6800013E1400013EA4 +00013F3400013FD400014054000140BC000141280001418C00014260000142F40001437C +0001443C000144E00001458C0001461800014688000146EC0001477C000148040001486C +0001492C000149BC00014AA000014B5000014C0400014C7C00014D3C00014E2800014EB0 +00014F5800014FC800015040000150CC0001517C00015220000152CC0001534C000153BC +00015434000154A40001553C000155B80001567C00015718000157B40001587400015940 +00015A0400015AA000015B4000015BE800015C8C00015D2800015DB800015E2000015E90 +00015EEC00015F4C00015FFC000160BC0001616800016224000162F4000163D40001646C +0001651C0001653800016554000165700001658C000165A8000165E00001661400016648 +00016684000166E0000167400001679C00016804000168A4000169C0000169EC00016A54 +00016B6C00016CC800016D1800016D6400016D8000016DA000016E2800016EE400017038 +000170C0000170E8000171100001712800017168000171A8000172040001727C000172CC +0001732C00017358000173740001739C000173BC000174180001743C0001749C000174C4 +000174EC0001752C00017568000175DC0001769C0001776C00017884000178D800017968 +00017A2400017B0C00017B8800017BD800017CBC00017D2800017DE400017EEC00017F78 +00018024000180680001818C00018208000182E4000183DC000184D400018560000185F8 +00018640000186A40001872C000187B0000187F400018858000188CC000188E80001890C +0001899C00018A3000018ADC00018B5000018BE400018C8400018CF000018DB400018E50 +00018EEC00018FA400019034000190D00001918C00019244000192FC000193C400019448 +000194E4000195AC00019640000196F8000197A00001982C000198D40001999000019A48 +00019B1C00019BAC00019C5C00019CEC00019DAC00019E7000019F1000019F940001A050 +0001A1000001A1900001A2540001A2EC0001A3A40001A48C0001A5480001A5F40001A6A0 +0001A7540001A7E00001A8CC0001A9840001AA040001AAC00001AB740001AC080001ACB0 +0001AD540001AE040001AEA80001AF740001B0500001B1140001B1BC0001B24C0001B268 +0001B2840001B2A80001B2C80001B2EC0001B30C0001B3340001B35C0001B3840001B3AC +0001B3E00001B4080001B4300001B45C0001B4880001B4BC0001B4E80001B5140001B548 +0001B5740001B5A00001B5D40001B6000001B62C0001B6600001B6900001B6C40001B708 +0001B7380001B7680001B7A80001B7DC0001B80C0001B84C0001B8800001B8B00001B8F4 +0001B9380001B97C0001B9D80001BAC80001BBBC0001BCA00001BE040001BF540001BFB8 +0001C0480001C0B40001C1200001C1A40001C2200001C2B80001C3580001C3AC0001C40C +0001C4B80001C51C0001C5B40001C6280001C68C0001C7080001C7A40001C8380001C8D4 +0001C9340001C9C40001CA1C0001CAA80001CB540001CBD00001CC180001CC9C0001CD10 +0001CD6C0001CE040001CE6C0001CF080001CFC00001D0340001D0AC0001D1440001D19C +0001D24C0001D2EC0001D33C0001D3CC0001D4540001D4B80001D5300001D5900001D62C +0001D6A00001D7440001D7E80001D87C0001D8F40001D9D40001DA980001DB740001DC50 +0001DD180001DE500001DF000001DF840001E0640001E1200001E1B80001E2680001E31C +0001E3E40001E4F80001E5D00001E6C00001E7DC0001E8800001E9280001E9A80001EA50 +0001EAD00001EB7C0001EBF80001ECA40001ED6C0001EDE80001EE940001EF180001EFA8 +0001F04C0001F0B40001F1340001F1A80001F2300001F2B80001F36C0001F4180001F4D0 +0001F5900001F5C00001F6180001F66C0001F6B40001F6EC0001F71C0001F7800001F7B8 +0001F7EC0001F8300001F8700001F8940001F8D40001F9080001F9680001F9A40001FA2C +0001FA740001FAE40001FB0C0001FB5C0001FB880001FBCC0001FC080001FC3C0001FC70 +0001FCE00001FD380001FD840001FDEC0001FE500001FEA40001FF580001FFAC0001FFDC +000200240002005C0002007C000200F0000201440002019C000201FC0002025C000202A0 +0002030C00020364000203C0000203E80002042C00020460000204B4000204E80002053C +0002059C0002060000020690000206E80002071400020798000207E00002088000020920 +0002097400020A2000020A7800020B1000020B8400020C2400020C8800020D0C00020D88 +00020E0000020E5400020EB400020F2C00020FD40002108000021150000211E800021214 +000212A00002134C000213A800021438000214BC0002155C000215EC00021658000216B0 +0002172000021780000217FC000218380002190800021958000219E400021A4000021AC0 +00021B1C00021B8000021BF000021C6000021CC800021D5800021DE400021E5800021EC0 +00021F5C00021FDC00022050000220D80002217000022284000100000428008600080000 +000000020000000100010000004000000000000000>]def +/CharStrings 2 dict dup begin +/.notdef 0 def +/m 80 def +end readonly def + +systemdict/resourcestatus known + {42 /FontType resourcestatus + {pop pop false}{true}ifelse} + {true}ifelse +{/TrueDict where{pop}{(%%[ Error: no TrueType rasterizer ]%%)= flush}ifelse +/FontType 3 def + /TrueState 271 string def + TrueDict begin sfnts save + 72 0 matrix defaultmatrix dtransform dup + mul exch dup mul add sqrt cvi 0 72 matrix + defaultmatrix dtransform dup mul exch dup + mul add sqrt cvi 3 -1 roll restore + TrueState initer end + /BuildGlyph{exch begin + CharStrings dup 2 index known + {exch}{exch pop /.notdef}ifelse + get dup xcheck + {currentdict systemdict begin begin exec end end} + {TrueDict begin /bander load cvlit exch TrueState render end} + ifelse + end}bind def + /BuildChar{ + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec + }bind def +}if + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +75.6 223.2 translate +460.8 345.6 0 0 clipbox +gsave +0 0 m +460.8 0 l +460.8 345.6 l +0 345.6 l +cl +1.000 setgray +fill +grestore +0.000 setgray +gsave +230.400000 172.800000 translate +0.000000 rotate +/DejaVuSans 10.0 selectfont +0.000000 0.703125 moveto +/M glyphshow +8.627930 0.703125 moveto +/a glyphshow +14.755859 0.703125 moveto +/s glyphshow +19.965820 0.703125 moveto +/s glyphshow +25.175781 0.703125 moveto +/space glyphshow +/STIXGeneral-Italic 10.0 selectfont +28.354492 0.703125 moveto +/m glyphshow +grestore + +end +showpage diff --git a/lib/matplotlib/tests/test_backend_ps.py b/lib/matplotlib/tests/test_backend_ps.py index 8fdc88ec1877..e0b9a34be4ab 100644 --- a/lib/matplotlib/tests/test_backend_ps.py +++ b/lib/matplotlib/tests/test_backend_ps.py @@ -184,3 +184,12 @@ def test_d_glyph(tmp_path): out = tmp_path / "test.eps" fig.savefig(out) mpl.testing.compare.convert(out, cache=False) # Should not raise. + + +@image_comparison(["type42_without_prep.eps"], style='mpl20') +def test_type42_font_without_prep(): + # Test whether Type 42 fonts without prep table are properly embedded + mpl.rcParams["ps.fonttype"] = 42 + mpl.rcParams["mathtext.fontset"] = "stix" + + plt.figtext(0.5, 0.5, "Mass $m$") From 76e1ce592550a1e691ae54415341d1f52b5a7d91 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 13 Jul 2021 02:36:47 -0400 Subject: [PATCH 027/270] Backport PR #20597: Fix TTF headers for type 42 stix font --- extern/ttconv/pprdrv_tt.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/extern/ttconv/pprdrv_tt.cpp b/extern/ttconv/pprdrv_tt.cpp index 934215470808..a1b6d3799b64 100644 --- a/extern/ttconv/pprdrv_tt.cpp +++ b/extern/ttconv/pprdrv_tt.cpp @@ -841,17 +841,24 @@ void ttfont_sfnts(TTStreamWriter& stream, struct TTFONT *font) /* Now, generate those silly numTables numbers. */ sfnts_pputUSHORT(stream, count); /* number of tables */ - if ( count == 9 ) - { - sfnts_pputUSHORT(stream, 7); /* searchRange */ - sfnts_pputUSHORT(stream, 3); /* entrySelector */ - sfnts_pputUSHORT(stream, 81); /* rangeShift */ + + int search_range = 1; + int entry_sel = 0; + + while (search_range <= count) { + search_range <<= 1; + entry_sel++; } + entry_sel = entry_sel > 0 ? entry_sel - 1 : 0; + search_range = (search_range >> 1) * 16; + int range_shift = count * 16 - search_range; + + sfnts_pputUSHORT(stream, search_range); /* searchRange */ + sfnts_pputUSHORT(stream, entry_sel); /* entrySelector */ + sfnts_pputUSHORT(stream, range_shift); /* rangeShift */ + #ifdef DEBUG_TRUETYPE - else - { - debug("only %d tables selected",count); - } + debug("only %d tables selected",count); #endif /* Now, emmit the table directory. */ From cce1048cd066ae7719172d416f19a9514a7909ca Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 19 Jul 2021 16:46:00 -0400 Subject: [PATCH 028/270] Backport PR #20645: Fix leak if affine_transform is passed invalid vertices. --- src/_path_wrapper.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/_path_wrapper.cpp b/src/_path_wrapper.cpp index 40b5abb2fd37..2b58aec0cfdd 100644 --- a/src/_path_wrapper.cpp +++ b/src/_path_wrapper.cpp @@ -471,17 +471,19 @@ static PyObject *Py_affine_transform(PyObject *self, PyObject *args, PyObject *k if (PyArray_NDIM(vertices_arr) == 2) { numpy::array_view vertices(vertices_arr); + Py_DECREF(vertices_arr); + npy_intp dims[] = { (npy_intp)vertices.size(), 2 }; numpy::array_view result(dims); CALL_CPP("affine_transform", (affine_transform_2d(vertices, trans, result))); - Py_DECREF(vertices_arr); return result.pyobj(); } else { // PyArray_NDIM(vertices_arr) == 1 numpy::array_view vertices(vertices_arr); + Py_DECREF(vertices_arr); + npy_intp dims[] = { (npy_intp)vertices.size() }; numpy::array_view result(dims); CALL_CPP("affine_transform", (affine_transform_1d(vertices, trans, result))); - Py_DECREF(vertices_arr); return result.pyobj(); } } From 70f885859d73cb15b95fc95d8834f269c19b1446 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 4 May 2021 00:07:13 -0400 Subject: [PATCH 029/270] Re-enable PyPy wheels. --- .github/workflows/cibuildwheel.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cibuildwheel.yml b/.github/workflows/cibuildwheel.yml index 2100d15fe000..24adb08b21bf 100644 --- a/.github/workflows/cibuildwheel.yml +++ b/.github/workflows/cibuildwheel.yml @@ -104,13 +104,10 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: "pp3?-*" + CIBW_BUILD: "pp37-*" CIBW_BEFORE_BUILD: pip install certifi numpy==${{ env.min-numpy-version }} CIBW_ARCHS: ${{ matrix.cibw_archs }} - if: > - runner.os != 'Windows' && ( - startsWith(github.ref, 'refs/heads/v3.3') || - startsWith(github.ref, 'refs/tags/v3.3') ) + if: runner.os != 'Windows' && matrix.cibw_archs != 'aarch64' - name: Validate that LICENSE files are included in wheels run: | From 7a5b9eb98e7df2f76774402a81b99cf638caf948 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 4 May 2021 00:37:16 -0400 Subject: [PATCH 030/270] Define Py_DTSF_ADD_DOT_0 to fix older PyPy. --- src/_path.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/_path.h b/src/_path.h index bcdf491ff071..16a981f0e3a8 100644 --- a/src/_path.h +++ b/src/_path.h @@ -21,6 +21,11 @@ #include "_backend_agg_basic_types.h" #include "numpy_cpp.h" +/* Compatibility for PyPy3.7 before 7.3.4. */ +#ifndef Py_DTSF_ADD_DOT_0 +#define Py_DTSF_ADD_DOT_0 0x2 +#endif + struct XY { double x; From 10a2a408258b7e79e9f0d40c147f8bcc001d0a28 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Tue, 20 Jul 2021 08:49:55 -0700 Subject: [PATCH 031/270] Backport PR #20662: Don't forget to disable autoscaling after interactive zoom. --- lib/matplotlib/axes/_base.py | 15 ++++----------- lib/matplotlib/tests/test_backend_bases.py | 2 ++ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 2a97499e0674..0ded09888d56 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -4130,25 +4130,17 @@ def _set_view_from_bbox(self, bbox, direction='in', Whether this axis is twinned in the *y*-direction. """ if len(bbox) == 3: - Xmin, Xmax = self.get_xlim() - Ymin, Ymax = self.get_ylim() - xp, yp, scl = bbox # Zooming code - if scl == 0: # Should not happen scl = 1. - if scl > 1: direction = 'in' else: direction = 'out' scl = 1/scl - # get the limits of the axes - tranD2C = self.transData.transform - xmin, ymin = tranD2C((Xmin, Ymin)) - xmax, ymax = tranD2C((Xmax, Ymax)) - + (xmin, ymin), (xmax, ymax) = self.transData.transform( + np.transpose([self.get_xlim(), self.get_ylim()])) # set the range xwidth = xmax - xmin ywidth = ymax - ymin @@ -4156,7 +4148,6 @@ def _set_view_from_bbox(self, bbox, direction='in', ycen = (ymax + ymin)*.5 xzc = (xp*(scl - 1) + xcen)/scl yzc = (yp*(scl - 1) + ycen)/scl - bbox = [xzc - xwidth/2./scl, yzc - ywidth/2./scl, xzc + xwidth/2./scl, yzc + ywidth/2./scl] elif len(bbox) != 4: @@ -4209,8 +4200,10 @@ def _set_view_from_bbox(self, bbox, direction='in', if not twinx and mode != "y": self.set_xbound(new_xbound) + self.set_autoscalex_on(False) if not twiny and mode != "x": self.set_ybound(new_ybound) + self.set_autoscaley_on(False) def start_pan(self, x, y, button): """ diff --git a/lib/matplotlib/tests/test_backend_bases.py b/lib/matplotlib/tests/test_backend_bases.py index 610897da173e..1550d3256c04 100644 --- a/lib/matplotlib/tests/test_backend_bases.py +++ b/lib/matplotlib/tests/test_backend_bases.py @@ -178,6 +178,8 @@ def test_interactive_zoom(): tb.zoom() assert ax.get_navigate_mode() is None + assert not ax.get_autoscalex_on() and not ax.get_autoscaley_on() + def test_toolbar_zoompan(): expected_warning_regex = ( From 32b594e266ea9682aa3dc8dbaef57aa75d7b190d Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 22 Jul 2021 07:56:04 +0200 Subject: [PATCH 032/270] Backport PR #20710: Fix tests with Inkscape 1.1. --- lib/matplotlib/tests/test_axes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index ec4773d46532..f949a5ce4ab3 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -1370,7 +1370,7 @@ def test_markevery_line(): ax.legend() -@image_comparison(['markevery_linear_scales'], remove_text=True) +@image_comparison(['markevery_linear_scales'], remove_text=True, tol=0.001) def test_markevery_linear_scales(): cases = [None, 8, From c7e85074aa38997417b0b1a596786164237ecce6 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 27 Jul 2021 19:15:15 -0400 Subject: [PATCH 033/270] Backport PR #20748: Ensure _static directory exists before copying CSS. --- lib/matplotlib/sphinxext/plot_directive.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/matplotlib/sphinxext/plot_directive.py b/lib/matplotlib/sphinxext/plot_directive.py index 565f0b1baed7..9433393b6dd7 100644 --- a/lib/matplotlib/sphinxext/plot_directive.py +++ b/lib/matplotlib/sphinxext/plot_directive.py @@ -258,6 +258,7 @@ def _copy_css_file(app, exc): if exc is None and app.builder.format == 'html': src = cbook._get_data_path('plot_directive/plot_directive.css') dst = app.outdir / Path('_static') + dst.mkdir(exist_ok=True) shutil.copy(src, dst) From 5b64248c356180c5fa60d1d65a0c21172338d1f7 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 29 Jul 2021 02:35:53 -0400 Subject: [PATCH 034/270] Backport PR #20761: Fix suplabel autopos --- lib/matplotlib/figure.py | 5 +++- .../tests/test_constrainedlayout.py | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index ba670f55c63c..a60658c7addf 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -373,7 +373,10 @@ def _suplabels(self, t, info, **kwargs): x = kwargs.pop('x', None) y = kwargs.pop('y', None) - autopos = x is None and y is None + if info['name'] in ['_supxlabel', '_suptitle']: + autopos = y is None + elif info['name'] == '_supylabel': + autopos = x is None if x is None: x = info['x0'] if y is None: diff --git a/lib/matplotlib/tests/test_constrainedlayout.py b/lib/matplotlib/tests/test_constrainedlayout.py index 67474628e7bf..117b221cc21a 100644 --- a/lib/matplotlib/tests/test_constrainedlayout.py +++ b/lib/matplotlib/tests/test_constrainedlayout.py @@ -555,3 +555,26 @@ def test_align_labels(): after_align[1].x0, rtol=0, atol=1e-05) # ensure labels do not go off the edge assert after_align[0].x0 >= 1 + + +def test_suplabels(): + fig, ax = plt.subplots(constrained_layout=True) + fig.canvas.draw() + pos0 = ax.get_tightbbox(fig.canvas.get_renderer()) + fig.supxlabel('Boo') + fig.supylabel('Booy') + fig.canvas.draw() + pos = ax.get_tightbbox(fig.canvas.get_renderer()) + assert pos.y0 > pos0.y0 + 10.0 + assert pos.x0 > pos0.x0 + 10.0 + + fig, ax = plt.subplots(constrained_layout=True) + fig.canvas.draw() + pos0 = ax.get_tightbbox(fig.canvas.get_renderer()) + # check that specifying x (y) doesn't ruin the layout + fig.supxlabel('Boo', x=0.5) + fig.supylabel('Boo', y=0.5) + fig.canvas.draw() + pos = ax.get_tightbbox(fig.canvas.get_renderer()) + assert pos.y0 > pos0.y0 + 10.0 + assert pos.x0 > pos0.x0 + 10.0 From c2f7ab6119e7de8efd6d4ccf877c707126bf4895 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Tue, 3 Aug 2021 10:03:48 -0700 Subject: [PATCH 035/270] Backport PR #20786: Fixed typo in _constrained_layout.py (#20782) --- lib/matplotlib/_constrained_layout.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/_constrained_layout.py b/lib/matplotlib/_constrained_layout.py index 245679394bc2..27393ce0bfcd 100644 --- a/lib/matplotlib/_constrained_layout.py +++ b/lib/matplotlib/_constrained_layout.py @@ -303,7 +303,7 @@ def _make_margin_suptitles(fig, renderer, *, w_pad=0, h_pad=0): bbox = inv_trans_fig(fig._supxlabel.get_tightbbox(renderer)) fig._layoutgrid.edit_margin_min('bottom', bbox.height + 2 * h_pad) - if fig._supylabel is not None and fig._supxlabel.get_in_layout(): + if fig._supylabel is not None and fig._supylabel.get_in_layout(): p = fig._supylabel.get_position() if getattr(fig._supylabel, '_autopos', False): fig._supylabel.set_position((w_pad_local, p[1])) From 5bf04bd75b20b3d3688edcb5687875743182dbf8 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 10 Aug 2021 10:58:01 -0400 Subject: [PATCH 036/270] Backport PR #20771: FIX: tickspacing for subfigures --- lib/matplotlib/axis.py | 12 +++-- lib/matplotlib/figure.py | 9 +++- .../test_subfigure_scatter_size.png | Bin 0 -> 4605 bytes lib/matplotlib/tests/test_figure.py | 45 ++++++++++++++++++ 4 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_figure/test_subfigure_scatter_size.png diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 9d5adb1a2a02..2f6fc2cff9a0 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -2261,8 +2261,10 @@ def set_default_intervals(self): self.stale = True def get_tick_space(self): - ends = self.axes.transAxes.transform([[0, 0], [1, 0]]) - length = ((ends[1][0] - ends[0][0]) / self.axes.figure.dpi) * 72 + ends = mtransforms.Bbox.from_bounds(0, 0, 1, 1) + ends = ends.transformed(self.axes.transAxes - + self.figure.dpi_scale_trans) + length = ends.width * 72 # There is a heuristic here that the aspect ratio of tick text # is no more than 3:1 size = self._get_tick_label_size('x') * 3 @@ -2526,8 +2528,10 @@ def set_default_intervals(self): self.stale = True def get_tick_space(self): - ends = self.axes.transAxes.transform([[0, 0], [0, 1]]) - length = ((ends[1][1] - ends[0][1]) / self.axes.figure.dpi) * 72 + ends = mtransforms.Bbox.from_bounds(0, 0, 1, 1) + ends = ends.transformed(self.axes.transAxes - + self.figure.dpi_scale_trans) + length = ends.height * 72 # Having a spacing of at least 2 just looks good. size = self._get_tick_label_size('y') * 2 if size > 0: diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index a60658c7addf..9e4e07b606f4 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -1985,7 +1985,6 @@ def __init__(self, parent, subplotspec, *, self.subplotpars = parent.subplotpars self.dpi_scale_trans = parent.dpi_scale_trans self._axobservers = parent._axobservers - self.dpi = parent.dpi self.canvas = parent.canvas self.transFigure = parent.transFigure self.bbox_relative = None @@ -2006,6 +2005,14 @@ def __init__(self, parent, subplotspec, *, if parent._layoutgrid is not None: self.init_layoutgrid() + @property + def dpi(self): + return self._parent.dpi + + @dpi.setter + def dpi(self, value): + self._parent.dpi = value + def _redo_transform_rel_fig(self, bbox=None): """ Make the transSubfigure bbox relative to Figure transform. diff --git a/lib/matplotlib/tests/baseline_images/test_figure/test_subfigure_scatter_size.png b/lib/matplotlib/tests/baseline_images/test_figure/test_subfigure_scatter_size.png new file mode 100644 index 0000000000000000000000000000000000000000..c193b5d0ec223873ef51b84c0d2901e8e22a90a6 GIT binary patch literal 4605 zcmd^@c~H}58pq#+XwViSb*oq~U~5IIVC1F&LMw_E0i{4yjt1pugpdG%KnxH|E7hXb zML{m{SfK?aUW6-GMU8?Gj$(vx!~zKzE)!ye7}6hzUHxmF&h8F7o0&{zo_U{1e$V@T zKHulbk)7Ti28%yf3;;0LzRlei05}5xm_&ae6tQdR>W4mdQ?~4;d`XI+P($OwfmbMn z98ID`6ZV-WhR4MdNHI26wpP|wWKuk3lbyZY`bZl)hy4-Zc9?zptir4@)|)Vn7`qMT z-%u#z_)j-(B>tIiMT(2u_)R0*0Q!zanq zX=Jb9vB`JVTl!TWu3mimCwOl5T7#kcp=5n0*jGlUd-d+E>c^bRkQ&{LY6)9?bQ@yW z{~uJ}t3D@}uP5D`4i(kLpWul;_Ij*BXb+#s_Zf{Hj`DzB3jo7dlz|3-QT8!_fm`}+ zfPsN80p^(i0rWrmzY9G$b{^??UvR>#L0m~{2(w-%Di1cHnKnHh9Q@f7jn2kWM^DK` zLS3&(N^cH#%;5ws^~LT~omL$ue`v`(cCzzf)c(xNM9k%Wl`N}NZ+t{td5I`KFTlT3 zQ@)-$*5jha@pf;hZ!7VsbTq1{8k{}7GvhXNdiFjxqhbr%5BNV*t35>t;Up4iFxD|c zMGNj^S(>@h*R~B!bn%*SRPa@qe>HXNtmy6!M0v%gtq<*u0~Axr?d@1bQOvR7k&!*C zJw`87R_7J3^J=3%i)S8t>d9VkfSCU2>T+CBSkLo?K!44@y4)S@W(ZDJc7v}W>O@+q z^}2BT+L~l5{AA1?L!I;EyTn&Y!csWg>f=EANywD!`e>vSdC zbo#0Ih-?R!8yulF`?|%wZxvv+#_g$3N0t;($vaaJR=t)D=|w`arS9P54G>g3Iv{UN z)r}0vI7uJFnazqur9zTp)`NnrJ0HVO)a zvha$%#N*}i!{|klTbGG$#L}7tUAA6?yokX~fK~r8*$n`zBEbG4>wcn8Ptt1Vpsu8$ ze>+zi$j6fGHS*18sgiuRHD4d`GvBNk3>^w#E4<84=h9O&zD-`xLwD-`KDr^IGGag? zNViFOzl*9BxKB_zGutoI_gSAA(r)7Yn?xkzk*IFzV&;LCPH$-ZllRw?l}iP(v4 zV0pw$)E_j-l-KuOvG))qY(9Y?hd#7FXYbz)kI5^x^|F~T27%!(lg$Ch@%anSe8yxm z3PiT3Q-(CD$|Oz*%FzI1=C5?y8hUN_sUb>@QzvUBZ8b2qgxy>F;PsyZE)FciTx@=I z=Xi@pu>TVLx{PTIo?OG7NZ}>3Lzu{dg?Q|&1Uq3t8nQ60Zqx)dl|3uJJWA@CaSWSh0X~0m&G-HgCFZrnUUS zt2Ydck3W}LWcfziD9cCUZ`b57J$2J{*MtrZYERAJ<8}i?v_9VlLNwahQOizG-{me* zbYC}}PNqNb=H{L1xH84mGcI|9s>rKzVCK0xOim@{cBj$rERAhPNG#^aYB|efpA#MF zW+-=a^13<33g=+#?JSerw=t^fVzc~Ge(hI#b^W3 z85IUUdqL43?_AhX($?6*8fpFr7IbDd3Ue$HHXNwvGz}IRxV*>zevg>Z>6h?M6(O(H zwy}9Xh(0}+3_y@8?D_q$>)pzQwv$hyZO*Ek85`TXx_X}^M+^Jq;y|a2*s>?f#?M9E z;JNlEBe{#h5~BhPQ=P{@Yv$uSJy4$N-%pd^zcdd|_r;C(=c2wfv;evoL@YJncSGa6 zsI!tv9HO*$XN7%fE zn0H-3!In2H6%&&PR($`)?1I0EFu#a-y>~!nb|63V^H=O+6ylM8VTSip1@r$?-8+xP zG^3n?`}q!+OjoYdy$JKIk4{Wbf}p?8V3VgK4=WoRwXLqSqy#+}mS75d-c2njiYH_8 z^nyM+PBYnGwmrA|1A!e7i#YV)&M}^gmc5+mE&#SjmZ-fNP#@oFz-aqGw4 zeKj!zl-@0#L1+gu3ahYsyrI zkYj&$th<)F{AJP;atkm2?r`U>JCmBHeFDX^5wUgdj{1ry(P6aAPp+!DNeqP6xP#b< z?mLkxk|>Qr@iRoB8Va%0dX-$3CioTF%y9JQJGqn6e1)9J8yz<52~Kml5>OU5*27Uu zYcA1oA=YNaX6e7-Kv@& z(n56h@GG-WkHi&umtb`VIdW#n?K{wl$O@(zRAtjfT2%!Ddm+_IE-L~;0E7Iprd=0` z3H3fW?F6&(lchleDvK8(V^emcQz~Mel@?t+n>XBA5yUFhSu6p7B{ZB@`^DRF|Lsmm bc{ew>G===lzX Date: Tue, 10 Aug 2021 09:27:55 -0700 Subject: [PATCH 037/270] Update lib/matplotlib/tests/test_figure.py draw_no_output doesn't exist yet ;-) --- lib/matplotlib/tests/test_figure.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py index a287fcb744bd..061b7b009d10 100644 --- a/lib/matplotlib/tests/test_figure.py +++ b/lib/matplotlib/tests/test_figure.py @@ -1043,7 +1043,7 @@ def test_subfigure_ticks(): fig.draw_no_output() ticks120 = ax2.get_xticks() fig.set_dpi(300) - fig.draw_no_output() + fig.canvas.draw() ticks300 = ax2.get_xticks() np.testing.assert_allclose(ticks120, ticks300) From 83b0190e6eb84c3cf9adf2b1833d5eaaa30e3904 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Tue, 10 Aug 2021 09:58:39 -0700 Subject: [PATCH 038/270] no draw_no_output --- lib/matplotlib/tests/test_figure.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py index 061b7b009d10..af800cd8872e 100644 --- a/lib/matplotlib/tests/test_figure.py +++ b/lib/matplotlib/tests/test_figure.py @@ -1040,7 +1040,7 @@ def test_subfigure_ticks(): ax3 = subfig_bl.add_subplot(gs[0, 3:14], sharey=ax1) fig.set_dpi(120) - fig.draw_no_output() + fig.canvas.draw() ticks120 = ax2.get_xticks() fig.set_dpi(300) fig.canvas.draw() From 7cf73680db7b9b0abea2b60af979086e0bd0137f Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 10 Aug 2021 23:50:38 +0200 Subject: [PATCH 039/270] Backport PR #20817: Make test_change_epoch more robust. --- lib/matplotlib/tests/test_dates.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_dates.py b/lib/matplotlib/tests/test_dates.py index e55cb7ec07ba..81ce8c820594 100644 --- a/lib/matplotlib/tests/test_dates.py +++ b/lib/matplotlib/tests/test_dates.py @@ -1004,12 +1004,15 @@ def test_datetime64_in_list(): def test_change_epoch(): date = np.datetime64('2000-01-01') + # use private method to clear the epoch and allow it to be set... + mdates._reset_epoch_test_example() + mdates.get_epoch() # Set default. + with pytest.raises(RuntimeError): # this should fail here because there is a sentinel on the epoch # if the epoch has been used then it cannot be set. mdates.set_epoch('0000-01-01') - # use private method to clear the epoch and allow it to be set... mdates._reset_epoch_test_example() mdates.set_epoch('1970-01-01') dt = (date - np.datetime64('1970-01-01')).astype('datetime64[D]') From 4b5ea5ad8bff6d407cb5e5da2214de4c0c485338 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Thu, 12 Aug 2021 13:04:52 -0700 Subject: [PATCH 040/270] Backport PR #20826: Fix clear of Axes that are shared. --- lib/matplotlib/axis.py | 9 +++++++-- lib/matplotlib/tests/test_axes.py | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 2f6fc2cff9a0..83384fd37646 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -791,8 +791,13 @@ def clear(self): # Clear the callback registry for this axis, or it may "leak" self.callbacks = cbook.CallbackRegistry() - self._reset_major_tick_kw() - self._reset_minor_tick_kw() + # whether the grids are on + self._major_tick_kw['gridOn'] = ( + mpl.rcParams['axes.grid'] and + mpl.rcParams['axes.grid.which'] in ('both', 'major')) + self._minor_tick_kw['gridOn'] = ( + mpl.rcParams['axes.grid'] and + mpl.rcParams['axes.grid.which'] in ('both', 'minor')) self.reset_ticks() self.converter = None diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index f949a5ce4ab3..7950e5b8306e 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -6955,6 +6955,21 @@ def test_2dcolor_plot(fig_test, fig_ref): axs[4].bar(np.arange(10), np.arange(10), color=color.reshape((1, -1))) +@check_figures_equal(extensions=['png']) +def test_shared_axes_clear(fig_test, fig_ref): + x = np.arange(0.0, 2*np.pi, 0.01) + y = np.sin(x) + + axs = fig_ref.subplots(2, 2, sharex=True, sharey=True) + for ax in axs.flat: + ax.plot(x, y) + + axs = fig_test.subplots(2, 2, sharex=True, sharey=True) + for ax in axs.flat: + ax.clear() + ax.plot(x, y) + + def test_shared_axes_retick(): fig, axs = plt.subplots(2, 2, sharex='all', sharey='all') From b8068c30631291b0b63a00b8e8c9159d16ae5d56 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 12 Aug 2021 19:40:11 -0400 Subject: [PATCH 041/270] DOC: Update GitHub stats for 3.4.3. --- doc/users/github_stats.rst | 244 ++++++++---------- .../prev_whats_new/github_stats_3.4.2.rst | 153 +++++++++++ 2 files changed, 265 insertions(+), 132 deletions(-) create mode 100644 doc/users/prev_whats_new/github_stats_3.4.2.rst diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst index 31a7619272e2..e2759a0d06e5 100644 --- a/doc/users/github_stats.rst +++ b/doc/users/github_stats.rst @@ -3,154 +3,134 @@ GitHub Stats ============ -GitHub stats for 2021/03/31 - 2021/05/07 (tag: v3.4.1) +GitHub stats for 2021/05/08 - 2021/08/12 (tag: v3.4.2) These lists are automatically generated, and may be incomplete or contain duplicates. -We closed 21 issues and merged 97 pull requests. -The full list can be seen `on GitHub `__ +We closed 22 issues and merged 69 pull requests. +The full list can be seen `on GitHub `__ -The following 13 authors contributed 138 commits. +The following 20 authors contributed 95 commits. -* AkM-2018 * Antony Lee * David Stansby +* Diego +* Diego Leal Petrola +* Diego Petrola * Elliott Sales de Andrade -* hannah -* Ian Thomas -* Jann Paul Mattern +* Eric Firing +* Frank Sauerburger +* Greg Lucas +* Ian Hunt-Isaak +* Jash Shah * Jody Klymak -* pwohlhart -* richardsheridan +* Jouni K. Seppänen +* Michał Górny +* sandipanpanda +* Slava Ostroukh * Thomas A Caswell * Tim Hoffmann +* Viacheslav Ostroukh * Xianxiang Li GitHub issues and pull requests: -Pull Requests (97): - -* :ghpull:`20184`: Backport PR #20147 on branch v3.4.x (DOC: add example of labelling axes) -* :ghpull:`20181`: Backport PR #20171 on branch v3.4.x (Remove unsupported arguments from tricontourf documentation) -* :ghpull:`20180`: Backport PR #19876 on branch v3.4.x (FIX: re-order unit conversion and mask array coercion) -* :ghpull:`20171`: Remove unsupported arguments from tricontourf documentation -* :ghpull:`19876`: FIX: re-order unit conversion and mask array coercion -* :ghpull:`20178`: Backport PR #20150 on branch v3.4.x -* :ghpull:`20172`: Backport PR #20161 on branch v3.4.x (Fix resetting grid visibility) -* :ghpull:`20161`: Fix resetting grid visibility -* :ghpull:`20167`: Backport PR #20146 on branch v3.4.x (Don't clip clip paths to Figure bbox.) -* :ghpull:`20166`: Backport PR #19978 on branch v3.4.x (fixed bug in CenteredNorm, issue #19972) -* :ghpull:`20146`: Don't clip clip paths to Figure bbox. -* :ghpull:`19978`: fixed bug in CenteredNorm, issue #19972 -* :ghpull:`20160`: Backport PR #20148 on branch v3.4.x (FIX: MouseButton representation in boilerplate generated signatures) -* :ghpull:`20148`: FIX: MouseButton representation in boilerplate generated signatures -* :ghpull:`20152`: Backport PR #20145 on branch v3.4.x (Fix broken link to ggplot in docs) -* :ghpull:`20139`: Backport PR #20135 on branch v3.4.x (Add tricontour/tricontourf arguments(corner_mask, vmin vmax, antialiased, nchunk, hatches) documentation) -* :ghpull:`20135`: Add tricontour/tricontourf arguments(corner_mask, vmin vmax, antialiased, nchunk, hatches) documentation -* :ghpull:`20136`: Backport PR #19959 on branch v3.4.x (Bugfix Tk start_event_loop) -* :ghpull:`19959`: Bugfix Tk start_event_loop -* :ghpull:`20128`: Backport PR #20123 on branch v3.4.x (Ensure that Matplotlib is importable even if there's no HOME.) -* :ghpull:`20123`: Ensure that Matplotlib is importable even if there's no HOME. -* :ghpull:`20009`: Fix removal of shared polar axes. -* :ghpull:`20104`: Backport PR #19686 on branch v3.4.x (Declare sphinxext.redirect_from parallel_read_safe) -* :ghpull:`19686`: Declare sphinxext.redirect_from parallel_read_safe -* :ghpull:`20098`: Backport PR #20096 on branch v3.4.x (Ignore errors for sip with no setapi.) -* :ghpull:`20096`: Ignore errors for sip with no setapi. -* :ghpull:`20087`: Backport PR #20083 on branch v3.4.x (Revert "Temporarily switch intersphinx to latest pytest.") -* :ghpull:`20085`: Backport PR #20082 on branch v3.4.x (Fix bar_label for bars with nan values) -* :ghpull:`20082`: Fix bar_label for bars with nan values -* :ghpull:`20076`: Backport PR #20062 on branch v3.4.x ([DOC] Add top-level .. module:: definition for matplotlib) -* :ghpull:`20043`: Backport PR #20041 on branch v3.4.x (Clarify docs for stackplot.) -* :ghpull:`20041`: Clarify docs for stackplot. -* :ghpull:`20039`: Backport PR #20037 on branch v3.4.x (Don't generate wheels unusable on PyPy7.3.{0,1}.) -* :ghpull:`20037`: Don't generate wheels unusable on PyPy7.3.{0,1}. -* :ghpull:`20033`: Backport PR #20031 on branch v3.4.x (Cleanup widget examples) -* :ghpull:`20031`: Cleanup widget examples -* :ghpull:`20022`: Backport PR #19949 on branch v3.4.x (FIX: subfigure indexing error) -* :ghpull:`19949`: FIX: subfigure indexing error -* :ghpull:`20018`: Backport PR #20017 on branch v3.4.x (FIX typos in imshow_extent.py) -* :ghpull:`20017`: FIX typos in imshow_extent.py -* :ghpull:`20015`: Backport PR #19962 on branch v3.4.x (Dev install troubleshooting) -* :ghpull:`19962`: Dev install troubleshooting -* :ghpull:`20002`: Backport PR #19995 on branch v3.4.x (Fix valinit argument to RangeSlider) -* :ghpull:`20004`: Backport PR #19999 on branch v3.4.x (DOC: add note about axes order to docstring) -* :ghpull:`19998`: Backport PR #19964 on branch v3.4.x (FIX: add subplot_mosaic axes in the order the user gave them to us) -* :ghpull:`19999`: DOC: add note about axes order to docstring -* :ghpull:`19997`: Backport PR #19992 on branch v3.4.x (Minor fixes to polar locator docstrings.) -* :ghpull:`19995`: Fix valinit argument to RangeSlider -* :ghpull:`19964`: FIX: add subplot_mosaic axes in the order the user gave them to us -* :ghpull:`19993`: Backport PR #19983 on branch v3.4.x (Fix handling of "d" glyph in backend_ps.) -* :ghpull:`19992`: Minor fixes to polar locator docstrings. -* :ghpull:`19991`: Backport PR #19987 on branch v3.4.x (Fix set_thetalim((min, max)).) -* :ghpull:`19976`: Backport PR #19970 on branch v3.4.x (Initialize members of PathClipper and check for m_has_init) -* :ghpull:`19983`: Fix handling of "d" glyph in backend_ps. -* :ghpull:`19987`: Fix set_thetalim((min, max)). -* :ghpull:`19970`: Initialize members of PathClipper and check for m_has_init -* :ghpull:`19973`: Backport PR #19971 on branch v3.4.x (Fix missing closing bracket in docs) -* :ghpull:`19971`: Fix missing closing bracket in docs -* :ghpull:`19966`: Backport PR #19963 on branch v3.4.x (test_StrCategoryLocator using parameterized plotter) -* :ghpull:`19965`: Backport PR #19961 on branch v3.4.x (FIX: subfigure tightbbox) -* :ghpull:`19963`: test_StrCategoryLocator using parameterized plotter -* :ghpull:`19961`: FIX: subfigure tightbbox -* :ghpull:`19953`: Backport PR #19919 on branch v3.4.x (Copy errorbar style normalization to 3D) -* :ghpull:`19919`: Copy errorbar style normalization to 3D -* :ghpull:`19950`: Backport PR #19948 on branch v3.4.x (Allow numpy arrays to be used as elinewidth) -* :ghpull:`19948`: Allow numpy arrays to be used as elinewidth -* :ghpull:`19944`: Backport PR #19939 on branch v3.4.x (add highlight-text to the third party packages list) -* :ghpull:`19921`: Backport PR #19913 on branch v3.4.x (Minor docstring improvement for set_aspect()) -* :ghpull:`19920`: Backport PR #19903 on branch v3.4.x (Fix textbox cursor color, set its linewidth.) -* :ghpull:`19913`: Minor docstring improvement for set_aspect() -* :ghpull:`19903`: Fix textbox cursor color, set its linewidth. -* :ghpull:`19917`: Backport PR #19911 on branch v3.4.x (Shorten "how-to draw order") -* :ghpull:`19916`: Backport PR #19888 on branch v3.4.x (Fix errorbar drawstyle) -* :ghpull:`19911`: Shorten "how-to draw order" -* :ghpull:`19888`: Fix errorbar drawstyle -* :ghpull:`19910`: Backport PR #19895 on branch v3.4.x (Added PyPI info to third party page) -* :ghpull:`19895`: Added PyPI info to third party page -* :ghpull:`19896`: Backport PR #19893 on branch v3.4.x (Remove Howto: Plot numpy.datetime64 values) -* :ghpull:`19893`: Remove Howto: Plot numpy.datetime64 values -* :ghpull:`19886`: Backport PR #19881 on branch v3.4.x (Remove two sections from Plotting FAQ) -* :ghpull:`19877`: Backport PR #19863 on branch v3.4.x (Cleanup docstrings related to interactive mode) -* :ghpull:`19881`: Remove two sections from Plotting FAQ -* :ghpull:`19885`: Backport PR #19883 on branch v3.4.x (Small cleanups to FAQ.) -* :ghpull:`19883`: Small cleanups to FAQ. -* :ghpull:`19878`: Backport PR #19867 on branch v3.4.x (Remove "Use show()" from how-to ) -* :ghpull:`19875`: Backport PR #19868 on branch v3.4.x (Remove "Install from source" from Installing FAQ) -* :ghpull:`19867`: Remove "Use show()" from how-to -* :ghpull:`19863`: Cleanup docstrings related to interactive mode -* :ghpull:`19868`: Remove "Install from source" from Installing FAQ -* :ghpull:`19874`: Backport PR #19847 on branch v3.4.x (Reformat references (part 2)) -* :ghpull:`19847`: Reformat references (part 2) -* :ghpull:`19865`: Backport PR #19860 on branch v3.4.x (Move "howto interpreting box plots" to boxplot docstring) -* :ghpull:`19860`: Move "howto interpreting box plots" to boxplot docstring -* :ghpull:`19862`: Backport PR #19861 on branch v3.4.x (Remove FAQ Installing - Linux notes) -* :ghpull:`19861`: Remove FAQ Installing - Linux notes -* :ghpull:`18060`: Correctly handle 'none' facecolors in do_3d_projection -* :ghpull:`19846`: Backport PR #19788 on branch v3.4.x (Reformat references) - -Issues (21): - -* :ghissue:`19871`: Matplotlib >= v3.3.3 breaks with pandas.plotting.register_matplotlib_converters(), ax.pcolormesh(), and datetime objects -* :ghissue:`20149`: KeyError: 'gridOn' in axis.py when axis.tick_params() is used with reset = True -* :ghissue:`20127`: Zooming on a contour plot with clipping results in bad clipping -* :ghissue:`19972`: CenteredNorm with halfrange raises exception when passed to imshow -* :ghissue:`19940`: Tkagg event loop throws error on window close -* :ghissue:`20122`: Run in a system service / without configuration -* :ghissue:`19989`: Removal of y-shared polar axes causes crash at draw time -* :ghissue:`19988`: Removal of x-shared polar axes causes crash -* :ghissue:`20040`: AttributeError: module 'sip' has no attribute 'setapi' -* :ghissue:`20058`: bar_label fails with nan data values -* :ghissue:`20036`: Minor changes about stackplot documentation -* :ghissue:`20014`: undefined symbol: PyPyUnicode_ReadChar -* :ghissue:`19947`: Figure.subfigures dont show/update correctly -* :ghissue:`19960`: Failed to init RangeSlider with valinit attribute -* :ghissue:`19736`: subplot_mosaic axes are not added in consistent order -* :ghissue:`19979`: Blank EPS figures if plot contains 'd' +Pull Requests (69): + +* :ghpull:`20830`: Backport PR #20826 on branch v3.4.x (Fix clear of Axes that are shared.) +* :ghpull:`20826`: Fix clear of Axes that are shared. +* :ghpull:`20823`: Backport PR #20817 on branch v3.4.x (Make test_change_epoch more robust.) +* :ghpull:`20817`: Make test_change_epoch more robust. +* :ghpull:`20820`: Backport PR #20771 on branch v3.4.x (FIX: tickspacing for subfigures) +* :ghpull:`20771`: FIX: tickspacing for subfigures +* :ghpull:`20777`: FIX: dpi and scatter for subfigures now correct +* :ghpull:`20787`: Backport PR #20786 on branch v3.4.x (Fixed typo in _constrained_layout.py (#20782)) +* :ghpull:`20786`: Fixed typo in _constrained_layout.py (#20782) +* :ghpull:`20763`: Backport PR #20761 on branch v3.4.x (Fix suplabel autopos) +* :ghpull:`20761`: Fix suplabel autopos +* :ghpull:`20751`: Backport PR #20748 on branch v3.4.x (Ensure _static directory exists before copying CSS.) +* :ghpull:`20748`: Ensure _static directory exists before copying CSS. +* :ghpull:`20713`: Backport PR #20710 on branch v3.4.x (Fix tests with Inkscape 1.1.) +* :ghpull:`20687`: Enable PyPy wheels for v3.4.x +* :ghpull:`20710`: Fix tests with Inkscape 1.1. +* :ghpull:`20696`: Backport PR #20662 on branch v3.4.x (Don't forget to disable autoscaling after interactive zoom.) +* :ghpull:`20662`: Don't forget to disable autoscaling after interactive zoom. +* :ghpull:`20683`: Backport PR #20645 on branch v3.4.x (Fix leak if affine_transform is passed invalid vertices.) +* :ghpull:`20645`: Fix leak if affine_transform is passed invalid vertices. +* :ghpull:`20642`: Backport PR #20629 on branch v3.4.x (Add protection against out-of-bounds read in ttconv) +* :ghpull:`20643`: Backport PR #20597 on branch v3.4.x +* :ghpull:`20629`: Add protection against out-of-bounds read in ttconv +* :ghpull:`20597`: Fix TTF headers for type 42 stix font +* :ghpull:`20624`: Backport PR #20609 on branch v3.4.x (FIX: fix figbox deprecation) +* :ghpull:`20609`: FIX: fix figbox deprecation +* :ghpull:`20594`: Backport PR #20590 on branch v3.4.x (Fix class docstrings for Norms created from Scales.) +* :ghpull:`20590`: Fix class docstrings for Norms created from Scales. +* :ghpull:`20587`: Backport PR #20584: FIX: do not simplify path in LineCollection.get_s… +* :ghpull:`20584`: FIX: do not simplify path in LineCollection.get_segments +* :ghpull:`20578`: Backport PR #20511 on branch v3.4.x (Fix calls to np.ma.masked_where) +* :ghpull:`20511`: Fix calls to np.ma.masked_where +* :ghpull:`20568`: Backport PR #20565 on branch v3.4.x (FIX: PILLOW asarray bug) +* :ghpull:`20566`: Backout pillow=8.3.0 due to a crash +* :ghpull:`20565`: FIX: PILLOW asarray bug +* :ghpull:`20503`: Backport PR #20488 on branch v3.4.x (FIX: Include 0 when checking lognorm vmin) +* :ghpull:`20488`: FIX: Include 0 when checking lognorm vmin +* :ghpull:`20483`: Backport PR #20480 on branch v3.4.x (Fix str of empty polygon.) +* :ghpull:`20480`: Fix str of empty polygon. +* :ghpull:`20478`: Backport PR #20473 on branch v3.4.x (_GSConverter: handle stray 'GS' in output gracefully) +* :ghpull:`20473`: _GSConverter: handle stray 'GS' in output gracefully +* :ghpull:`20456`: Backport PR #20453 on branch v3.4.x (Remove ``Tick.apply_tickdir`` from 3.4 deprecations.) +* :ghpull:`20441`: Backport PR #20416 on branch v3.4.x (Fix missing Patch3DCollection._z_markers_idx) +* :ghpull:`20416`: Fix missing Patch3DCollection._z_markers_idx +* :ghpull:`20417`: Backport PR #20395 on branch v3.4.x (Pathing issue) +* :ghpull:`20395`: Pathing issue +* :ghpull:`20404`: Backport PR #20403: FIX: if we have already subclassed mixin class ju… +* :ghpull:`20403`: FIX: if we have already subclassed mixin class just return +* :ghpull:`20383`: Backport PR #20381 on branch v3.4.x (Prevent corrections and completions in search field) +* :ghpull:`20307`: Backport PR #20154 on branch v3.4.x (ci: Bump Ubuntu to 18.04 LTS.) +* :ghpull:`20285`: Backport PR #20275 on branch v3.4.x (Fix some examples that are skipped in docs build) +* :ghpull:`20275`: Fix some examples that are skipped in docs build +* :ghpull:`20267`: Backport PR #20265 on branch v3.4.x (Legend edgecolor face) +* :ghpull:`20265`: Legend edgecolor face +* :ghpull:`20260`: Fix legend edgecolor face +* :ghpull:`20259`: Backport PR #20248 on branch v3.4.x (Replace pgf image-streaming warning by error.) +* :ghpull:`20248`: Replace pgf image-streaming warning by error. +* :ghpull:`20241`: Backport PR #20212 on branch v3.4.x (Update span_selector.py) +* :ghpull:`20212`: Update span_selector.py +* :ghpull:`19980`: Tidy up deprecation messages in ``_subplots.py`` +* :ghpull:`20234`: Backport PR #20225 on branch v3.4.x (FIX: correctly handle ax.legend(..., legendcolor='none')) +* :ghpull:`20225`: FIX: correctly handle ax.legend(..., legendcolor='none') +* :ghpull:`20232`: Backport PR #19636 on branch v3.4.x (Correctly check inaxes for multicursor) +* :ghpull:`20228`: Backport PR #19849 on branch v3.4.x (FIX DateFormatter for month names when usetex=True) +* :ghpull:`19849`: FIX DateFormatter for month names when usetex=True +* :ghpull:`20154`: ci: Bump Ubuntu to 18.04 LTS. +* :ghpull:`20186`: Backport PR #19975 on branch v3.4.x (CI: remove workflow to push commits to macpython/matplotlib-wheels) +* :ghpull:`19975`: CI: remove workflow to push commits to macpython/matplotlib-wheels +* :ghpull:`19636`: Correctly check inaxes for multicursor + +Issues (22): + +* :ghissue:`20219`: Regression: undocumented change of behaviour in mpl 3.4.2 with axis ticks direction +* :ghissue:`20721`: ax.clear() adds extra ticks, un-hides shared-axis tick labels +* :ghissue:`20765`: savefig re-scales xticks and labels of some (but not all) subplots +* :ghissue:`20782`: [Bug]: _supylabel get_in_layout() typo? +* :ghissue:`20747`: [Bug]: _copy_css_file assumes that the _static directory already exists +* :ghissue:`20617`: tests fail with new inkscape +* :ghissue:`20519`: Toolbar zoom doesn't change autoscale status for versions 3.2.0 and above +* :ghissue:`20628`: Out-of-bounds read leads to crash or broken TrueType fonts +* :ghissue:`20612`: Broken EPS for Type 42 STIX +* :ghissue:`19982`: regression for 3.4.x - ax.figbox replacement incompatible to all version including 3.3.4 * :ghissue:`19938`: unuseful deprecation warning figbox -* :ghissue:`19958`: subfigures missing bbox_inches attribute in inline backend -* :ghissue:`19936`: Errorbars elinewidth raise error when numpy array -* :ghissue:`19879`: Using "drawstyle" raises AttributeError in errorbar, when yerr is specified. -* :ghissue:`19454`: I cannot import matplotlib.pyplot as plt +* :ghissue:`16400`: Inconsistent behavior between Normalizers when input is Dataframe +* :ghissue:`20583`: Lost class descriptions since 3.4 docs +* :ghissue:`20551`: set_segments(get_segments()) makes lines coarse +* :ghissue:`20560`: test_png is failing +* :ghissue:`20487`: test_huge_range_log is failing... +* :ghissue:`20472`: test_backend_pgf.py::test_xelatex[pdf] - ValueError: invalid literal for int() with base 10: b'ate missing from Resources. [...] +* :ghissue:`20328`: Path.intersects_path sometimes returns incorrect values +* :ghissue:`20258`: Using edgecolors='face' with stackplot causes value error when using plt.legend() +* :ghissue:`20200`: examples/widgets/span_selector.py is brittle +* :ghissue:`20231`: MultiCursor bug +* :ghissue:`19836`: Month names not set as text when using usetex Previous GitHub Stats diff --git a/doc/users/prev_whats_new/github_stats_3.4.2.rst b/doc/users/prev_whats_new/github_stats_3.4.2.rst new file mode 100644 index 000000000000..badd0a589785 --- /dev/null +++ b/doc/users/prev_whats_new/github_stats_3.4.2.rst @@ -0,0 +1,153 @@ +.. _github-stats-3-4-2: + +GitHub Stats for Matplotlib 3.4.2 +================================= + +GitHub stats for 2021/03/31 - 2021/05/07 (tag: v3.4.1) + +These lists are automatically generated, and may be incomplete or contain duplicates. + +We closed 21 issues and merged 97 pull requests. +The full list can be seen `on GitHub `__ + +The following 13 authors contributed 138 commits. + +* AkM-2018 +* Antony Lee +* David Stansby +* Elliott Sales de Andrade +* hannah +* Ian Thomas +* Jann Paul Mattern +* Jody Klymak +* pwohlhart +* richardsheridan +* Thomas A Caswell +* Tim Hoffmann +* Xianxiang Li + +GitHub issues and pull requests: + +Pull Requests (97): + +* :ghpull:`20184`: Backport PR #20147 on branch v3.4.x (DOC: add example of labelling axes) +* :ghpull:`20181`: Backport PR #20171 on branch v3.4.x (Remove unsupported arguments from tricontourf documentation) +* :ghpull:`20180`: Backport PR #19876 on branch v3.4.x (FIX: re-order unit conversion and mask array coercion) +* :ghpull:`20171`: Remove unsupported arguments from tricontourf documentation +* :ghpull:`19876`: FIX: re-order unit conversion and mask array coercion +* :ghpull:`20178`: Backport PR #20150 on branch v3.4.x +* :ghpull:`20172`: Backport PR #20161 on branch v3.4.x (Fix resetting grid visibility) +* :ghpull:`20161`: Fix resetting grid visibility +* :ghpull:`20167`: Backport PR #20146 on branch v3.4.x (Don't clip clip paths to Figure bbox.) +* :ghpull:`20166`: Backport PR #19978 on branch v3.4.x (fixed bug in CenteredNorm, issue #19972) +* :ghpull:`20146`: Don't clip clip paths to Figure bbox. +* :ghpull:`19978`: fixed bug in CenteredNorm, issue #19972 +* :ghpull:`20160`: Backport PR #20148 on branch v3.4.x (FIX: MouseButton representation in boilerplate generated signatures) +* :ghpull:`20148`: FIX: MouseButton representation in boilerplate generated signatures +* :ghpull:`20152`: Backport PR #20145 on branch v3.4.x (Fix broken link to ggplot in docs) +* :ghpull:`20139`: Backport PR #20135 on branch v3.4.x (Add tricontour/tricontourf arguments(corner_mask, vmin vmax, antialiased, nchunk, hatches) documentation) +* :ghpull:`20135`: Add tricontour/tricontourf arguments(corner_mask, vmin vmax, antialiased, nchunk, hatches) documentation +* :ghpull:`20136`: Backport PR #19959 on branch v3.4.x (Bugfix Tk start_event_loop) +* :ghpull:`19959`: Bugfix Tk start_event_loop +* :ghpull:`20128`: Backport PR #20123 on branch v3.4.x (Ensure that Matplotlib is importable even if there's no HOME.) +* :ghpull:`20123`: Ensure that Matplotlib is importable even if there's no HOME. +* :ghpull:`20009`: Fix removal of shared polar axes. +* :ghpull:`20104`: Backport PR #19686 on branch v3.4.x (Declare sphinxext.redirect_from parallel_read_safe) +* :ghpull:`19686`: Declare sphinxext.redirect_from parallel_read_safe +* :ghpull:`20098`: Backport PR #20096 on branch v3.4.x (Ignore errors for sip with no setapi.) +* :ghpull:`20096`: Ignore errors for sip with no setapi. +* :ghpull:`20087`: Backport PR #20083 on branch v3.4.x (Revert "Temporarily switch intersphinx to latest pytest.") +* :ghpull:`20085`: Backport PR #20082 on branch v3.4.x (Fix bar_label for bars with nan values) +* :ghpull:`20082`: Fix bar_label for bars with nan values +* :ghpull:`20076`: Backport PR #20062 on branch v3.4.x ([DOC] Add top-level .. module:: definition for matplotlib) +* :ghpull:`20043`: Backport PR #20041 on branch v3.4.x (Clarify docs for stackplot.) +* :ghpull:`20041`: Clarify docs for stackplot. +* :ghpull:`20039`: Backport PR #20037 on branch v3.4.x (Don't generate wheels unusable on PyPy7.3.{0,1}.) +* :ghpull:`20037`: Don't generate wheels unusable on PyPy7.3.{0,1}. +* :ghpull:`20033`: Backport PR #20031 on branch v3.4.x (Cleanup widget examples) +* :ghpull:`20031`: Cleanup widget examples +* :ghpull:`20022`: Backport PR #19949 on branch v3.4.x (FIX: subfigure indexing error) +* :ghpull:`19949`: FIX: subfigure indexing error +* :ghpull:`20018`: Backport PR #20017 on branch v3.4.x (FIX typos in imshow_extent.py) +* :ghpull:`20017`: FIX typos in imshow_extent.py +* :ghpull:`20015`: Backport PR #19962 on branch v3.4.x (Dev install troubleshooting) +* :ghpull:`19962`: Dev install troubleshooting +* :ghpull:`20002`: Backport PR #19995 on branch v3.4.x (Fix valinit argument to RangeSlider) +* :ghpull:`20004`: Backport PR #19999 on branch v3.4.x (DOC: add note about axes order to docstring) +* :ghpull:`19998`: Backport PR #19964 on branch v3.4.x (FIX: add subplot_mosaic axes in the order the user gave them to us) +* :ghpull:`19999`: DOC: add note about axes order to docstring +* :ghpull:`19997`: Backport PR #19992 on branch v3.4.x (Minor fixes to polar locator docstrings.) +* :ghpull:`19995`: Fix valinit argument to RangeSlider +* :ghpull:`19964`: FIX: add subplot_mosaic axes in the order the user gave them to us +* :ghpull:`19993`: Backport PR #19983 on branch v3.4.x (Fix handling of "d" glyph in backend_ps.) +* :ghpull:`19992`: Minor fixes to polar locator docstrings. +* :ghpull:`19991`: Backport PR #19987 on branch v3.4.x (Fix set_thetalim((min, max)).) +* :ghpull:`19976`: Backport PR #19970 on branch v3.4.x (Initialize members of PathClipper and check for m_has_init) +* :ghpull:`19983`: Fix handling of "d" glyph in backend_ps. +* :ghpull:`19987`: Fix set_thetalim((min, max)). +* :ghpull:`19970`: Initialize members of PathClipper and check for m_has_init +* :ghpull:`19973`: Backport PR #19971 on branch v3.4.x (Fix missing closing bracket in docs) +* :ghpull:`19971`: Fix missing closing bracket in docs +* :ghpull:`19966`: Backport PR #19963 on branch v3.4.x (test_StrCategoryLocator using parameterized plotter) +* :ghpull:`19965`: Backport PR #19961 on branch v3.4.x (FIX: subfigure tightbbox) +* :ghpull:`19963`: test_StrCategoryLocator using parameterized plotter +* :ghpull:`19961`: FIX: subfigure tightbbox +* :ghpull:`19953`: Backport PR #19919 on branch v3.4.x (Copy errorbar style normalization to 3D) +* :ghpull:`19919`: Copy errorbar style normalization to 3D +* :ghpull:`19950`: Backport PR #19948 on branch v3.4.x (Allow numpy arrays to be used as elinewidth) +* :ghpull:`19948`: Allow numpy arrays to be used as elinewidth +* :ghpull:`19944`: Backport PR #19939 on branch v3.4.x (add highlight-text to the third party packages list) +* :ghpull:`19921`: Backport PR #19913 on branch v3.4.x (Minor docstring improvement for set_aspect()) +* :ghpull:`19920`: Backport PR #19903 on branch v3.4.x (Fix textbox cursor color, set its linewidth.) +* :ghpull:`19913`: Minor docstring improvement for set_aspect() +* :ghpull:`19903`: Fix textbox cursor color, set its linewidth. +* :ghpull:`19917`: Backport PR #19911 on branch v3.4.x (Shorten "how-to draw order") +* :ghpull:`19916`: Backport PR #19888 on branch v3.4.x (Fix errorbar drawstyle) +* :ghpull:`19911`: Shorten "how-to draw order" +* :ghpull:`19888`: Fix errorbar drawstyle +* :ghpull:`19910`: Backport PR #19895 on branch v3.4.x (Added PyPI info to third party page) +* :ghpull:`19895`: Added PyPI info to third party page +* :ghpull:`19896`: Backport PR #19893 on branch v3.4.x (Remove Howto: Plot numpy.datetime64 values) +* :ghpull:`19893`: Remove Howto: Plot numpy.datetime64 values +* :ghpull:`19886`: Backport PR #19881 on branch v3.4.x (Remove two sections from Plotting FAQ) +* :ghpull:`19877`: Backport PR #19863 on branch v3.4.x (Cleanup docstrings related to interactive mode) +* :ghpull:`19881`: Remove two sections from Plotting FAQ +* :ghpull:`19885`: Backport PR #19883 on branch v3.4.x (Small cleanups to FAQ.) +* :ghpull:`19883`: Small cleanups to FAQ. +* :ghpull:`19878`: Backport PR #19867 on branch v3.4.x (Remove "Use show()" from how-to ) +* :ghpull:`19875`: Backport PR #19868 on branch v3.4.x (Remove "Install from source" from Installing FAQ) +* :ghpull:`19867`: Remove "Use show()" from how-to +* :ghpull:`19863`: Cleanup docstrings related to interactive mode +* :ghpull:`19868`: Remove "Install from source" from Installing FAQ +* :ghpull:`19874`: Backport PR #19847 on branch v3.4.x (Reformat references (part 2)) +* :ghpull:`19847`: Reformat references (part 2) +* :ghpull:`19865`: Backport PR #19860 on branch v3.4.x (Move "howto interpreting box plots" to boxplot docstring) +* :ghpull:`19860`: Move "howto interpreting box plots" to boxplot docstring +* :ghpull:`19862`: Backport PR #19861 on branch v3.4.x (Remove FAQ Installing - Linux notes) +* :ghpull:`19861`: Remove FAQ Installing - Linux notes +* :ghpull:`18060`: Correctly handle 'none' facecolors in do_3d_projection +* :ghpull:`19846`: Backport PR #19788 on branch v3.4.x (Reformat references) + +Issues (21): + +* :ghissue:`19871`: Matplotlib >= v3.3.3 breaks with pandas.plotting.register_matplotlib_converters(), ax.pcolormesh(), and datetime objects +* :ghissue:`20149`: KeyError: 'gridOn' in axis.py when axis.tick_params() is used with reset = True +* :ghissue:`20127`: Zooming on a contour plot with clipping results in bad clipping +* :ghissue:`19972`: CenteredNorm with halfrange raises exception when passed to imshow +* :ghissue:`19940`: Tkagg event loop throws error on window close +* :ghissue:`20122`: Run in a system service / without configuration +* :ghissue:`19989`: Removal of y-shared polar axes causes crash at draw time +* :ghissue:`19988`: Removal of x-shared polar axes causes crash +* :ghissue:`20040`: AttributeError: module 'sip' has no attribute 'setapi' +* :ghissue:`20058`: bar_label fails with nan data values +* :ghissue:`20036`: Minor changes about stackplot documentation +* :ghissue:`20014`: undefined symbol: PyPyUnicode_ReadChar +* :ghissue:`19947`: Figure.subfigures dont show/update correctly +* :ghissue:`19960`: Failed to init RangeSlider with valinit attribute +* :ghissue:`19736`: subplot_mosaic axes are not added in consistent order +* :ghissue:`19979`: Blank EPS figures if plot contains 'd' +* :ghissue:`19938`: unuseful deprecation warning figbox +* :ghissue:`19958`: subfigures missing bbox_inches attribute in inline backend +* :ghissue:`19936`: Errorbars elinewidth raise error when numpy array +* :ghissue:`19879`: Using "drawstyle" raises AttributeError in errorbar, when yerr is specified. +* :ghissue:`19454`: I cannot import matplotlib.pyplot as plt From 919145fe9849c999aa491457c6de6faede5959c3 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 12 Aug 2021 20:09:56 -0400 Subject: [PATCH 042/270] REL: v3.4.3 This is the third bugfix release of the 3.4.x series. This release contains several critical bug-fixes: * Clarify deprecation of `Axes.figbox` * Disable `MultiCursor` widget on `Axes` subplots which it is not tracking * Don't simplify path in `LineCollection.get_segments` * Fix DPI in subfigures, affecting tick spacing, and scatter marker size * Fix broken EPS output when using Type 42 STIX fonts * Fix change in tick behaviour when calling `Axes.clear` * Fix class docstrings for `Norm`s created from `Scale`s * Fix compatibility with NumPy 1.21.0 * Fix crash on broken TrueType fonts * Fix incorrect hits from `Path.intersects_path` * Fix leak if affine_transform is passed invalid vertices * Fix legends of `stackplot` with `edgecolors='face'` * Fix plot directive when building in parallel * Fix `supxlabel` and `supylabel` behaviour in constrained layout * Fix tests with latest Inkscape and Ghostscript * Improve `DateFormatter` styling for month names when `usetex=True` * Re-disable autoscaling after interactive zoom * Work around bug in Pillow 8.3.0 From 1f76bcd219ee149fabe163bb140cfda334144fd0 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 12 Aug 2021 21:08:07 -0400 Subject: [PATCH 043/270] BLD: bump branch away from tag So the tarballs from GitHub are stable From e48e4acce0afb4b144e6ac05dbfaeeb87687491b Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 13 Aug 2021 00:29:41 -0400 Subject: [PATCH 044/270] DOC: Add Zenodo DOI for 3.4.3. --- doc/_static/zenodo_cache/5194481.svg | 35 ++++++++++++++++++++++++++++ doc/citing.rst | 3 +++ tools/cache_zenodo_svg.py | 1 + 3 files changed, 39 insertions(+) create mode 100644 doc/_static/zenodo_cache/5194481.svg diff --git a/doc/_static/zenodo_cache/5194481.svg b/doc/_static/zenodo_cache/5194481.svg new file mode 100644 index 000000000000..728ae0c15a6a --- /dev/null +++ b/doc/_static/zenodo_cache/5194481.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + DOI + + + DOI + + + 10.5281/zenodo.5194481 + + + 10.5281/zenodo.5194481 + + + \ No newline at end of file diff --git a/doc/citing.rst b/doc/citing.rst index c1a1b5fe679d..317b7480828e 100644 --- a/doc/citing.rst +++ b/doc/citing.rst @@ -29,6 +29,9 @@ By version .. START OF AUTOGENERATED +v3.4.3 + .. image:: _static/zenodo_cache/5194481.svg + :target: https://doi.org/10.5281/zenodo.5194481 v3.4.2 .. image:: _static/zenodo_cache/4743323.svg :target: https://doi.org/10.5281/zenodo.4743323 diff --git a/tools/cache_zenodo_svg.py b/tools/cache_zenodo_svg.py index e00f4eb3d128..10c556cc6ed2 100644 --- a/tools/cache_zenodo_svg.py +++ b/tools/cache_zenodo_svg.py @@ -62,6 +62,7 @@ def _get_xdg_cache_dir(): if __name__ == "__main__": data = { + "v3.4.3": "5194481", "v3.4.2": "4743323", "v3.4.1": "4649959", "v3.4.0": "4638398", From 165e1a39bb230be612e1029d6486119143629c55 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 24 Aug 2021 01:56:10 -0400 Subject: [PATCH 045/270] DOC: Update GitHub stats for 3.5.0b1. --- doc/users/github_stats.rst | 875 +++++++++++++++--- .../prev_whats_new/github_stats_3.4.3.rst | 133 +++ 2 files changed, 902 insertions(+), 106 deletions(-) create mode 100644 doc/users/prev_whats_new/github_stats_3.4.3.rst diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst index 4dfcd6e6fd1f..8f92b587a2dc 100644 --- a/doc/users/github_stats.rst +++ b/doc/users/github_stats.rst @@ -3,138 +3,801 @@ GitHub statistics ================= -GitHub statistics for 2021/05/08 - 2021/08/12 (tag: v3.4.2) +GitHub statistics for 2021/03/26 - 2021/08/24 (tag: v3.4.0) These lists are automatically generated, and may be incomplete or contain duplicates. -We closed 22 issues and merged 69 pull requests. -The full list can be seen `on GitHub `__ +We closed 127 issues and merged 532 pull requests. +The full list can be seen `on GitHub `__ -The following 20 authors contributed 95 commits. +The following 115 authors contributed 2695 commits. +* Aaron Rogers +* Abhinav Sagar +* Adrian Price-Whelan +* Adrien F. Vincent +* ain-soph +* Aitik Gupta +* Akiomi Kamakura +* AkM-2018 +* Andrea PIERRÉ +* andthum * Antony Lee +* Antti Soininen +* apodemus +* astromancer +* Bruno Beltran +* Carlos Cerqueira +* Casper da Costa-Luis +* ceelo777 +* Christian Baumann +* dan +* Dan Zimmerman +* David Matos * David Stansby -* Diego +* dependabot[bot] * Diego Leal Petrola -* Diego Petrola +* Ellert van der Velden * Elliott Sales de Andrade * Eric Firing +* Eric Larson +* Eric Prestat +* Ewan Sutherland +* fourpoints * Frank Sauerburger +* Gleb Fedorov * Greg Lucas +* hannah +* Hannes Breytenbach +* Hans Meine +* Harshal Prakash Patankar +* harupy +* Harutaka Kawamura +* Hildo Guillardi Júnior +* Holtz Yan * Ian Hunt-Isaak +* Ian Thomas +* ianhi +* Illviljan +* ImportanceOfBeingErnest +* iury simoes-sousa +* Jakub Klus +* Janakarajan Natarajan +* Jann Paul Mattern * Jash Shah +* jeffreypaul15 +* Jerome F. Villegas +* Jerome Villegas +* Jesus Briales * Jody Klymak +* Jonathan Yong +* Joschua Conrad +* Joschua-Conrad * Jouni K. Seppänen +* K-Monty +* katrielester +* kdpenner +* Kent +* Kent Gauen +* kentcr +* kir0ul +* KM Goh +* Konstantin Popov +* kyrogon +* Leo Singer +* luz paz +* luzpaz +* Madhav Humagain +* Marat Kopytjuk +* Marco Rigobello +* Marco Salathe +* Markus Wesslén +* Matthias Bussonnier * Michał Górny +* Mihai Anton +* Nico Schlömer +* Phil Nagel +* Philip Schiff +* Philipp Nagel +* pwohlhart +* Quentin Peter +* Ren Pang +* rgbmrc +* Richard Barnes +* richardsheridan +* Ruth Comer +* Ryan May +* Sam Van Kooten * sandipanpanda * Slava Ostroukh +* Stefan Appelhoff +* Stefanie Molin +* tdpetrou +* theOehrly * Thomas A Caswell * Tim Hoffmann +* tohc1 +* Tom Charrett +* Tom Neep +* Tortar +* Tranquilled +* Vagrant Cascadian * Viacheslav Ostroukh * Xianxiang Li +* Yo Yehudi +* Zexi +* znstrider GitHub issues and pull requests: -Pull Requests (69): - -* :ghpull:`20830`: Backport PR #20826 on branch v3.4.x (Fix clear of Axes that are shared.) -* :ghpull:`20826`: Fix clear of Axes that are shared. -* :ghpull:`20823`: Backport PR #20817 on branch v3.4.x (Make test_change_epoch more robust.) -* :ghpull:`20817`: Make test_change_epoch more robust. -* :ghpull:`20820`: Backport PR #20771 on branch v3.4.x (FIX: tickspacing for subfigures) -* :ghpull:`20771`: FIX: tickspacing for subfigures -* :ghpull:`20777`: FIX: dpi and scatter for subfigures now correct -* :ghpull:`20787`: Backport PR #20786 on branch v3.4.x (Fixed typo in _constrained_layout.py (#20782)) -* :ghpull:`20786`: Fixed typo in _constrained_layout.py (#20782) -* :ghpull:`20763`: Backport PR #20761 on branch v3.4.x (Fix suplabel autopos) -* :ghpull:`20761`: Fix suplabel autopos -* :ghpull:`20751`: Backport PR #20748 on branch v3.4.x (Ensure _static directory exists before copying CSS.) -* :ghpull:`20748`: Ensure _static directory exists before copying CSS. -* :ghpull:`20713`: Backport PR #20710 on branch v3.4.x (Fix tests with Inkscape 1.1.) -* :ghpull:`20687`: Enable PyPy wheels for v3.4.x -* :ghpull:`20710`: Fix tests with Inkscape 1.1. -* :ghpull:`20696`: Backport PR #20662 on branch v3.4.x (Don't forget to disable autoscaling after interactive zoom.) -* :ghpull:`20662`: Don't forget to disable autoscaling after interactive zoom. -* :ghpull:`20683`: Backport PR #20645 on branch v3.4.x (Fix leak if affine_transform is passed invalid vertices.) -* :ghpull:`20645`: Fix leak if affine_transform is passed invalid vertices. -* :ghpull:`20642`: Backport PR #20629 on branch v3.4.x (Add protection against out-of-bounds read in ttconv) -* :ghpull:`20643`: Backport PR #20597 on branch v3.4.x -* :ghpull:`20629`: Add protection against out-of-bounds read in ttconv -* :ghpull:`20597`: Fix TTF headers for type 42 stix font -* :ghpull:`20624`: Backport PR #20609 on branch v3.4.x (FIX: fix figbox deprecation) -* :ghpull:`20609`: FIX: fix figbox deprecation -* :ghpull:`20594`: Backport PR #20590 on branch v3.4.x (Fix class docstrings for Norms created from Scales.) -* :ghpull:`20590`: Fix class docstrings for Norms created from Scales. -* :ghpull:`20587`: Backport PR #20584: FIX: do not simplify path in LineCollection.get_s… -* :ghpull:`20584`: FIX: do not simplify path in LineCollection.get_segments -* :ghpull:`20578`: Backport PR #20511 on branch v3.4.x (Fix calls to np.ma.masked_where) -* :ghpull:`20511`: Fix calls to np.ma.masked_where -* :ghpull:`20568`: Backport PR #20565 on branch v3.4.x (FIX: PILLOW asarray bug) -* :ghpull:`20566`: Backout pillow=8.3.0 due to a crash -* :ghpull:`20565`: FIX: PILLOW asarray bug -* :ghpull:`20503`: Backport PR #20488 on branch v3.4.x (FIX: Include 0 when checking lognorm vmin) -* :ghpull:`20488`: FIX: Include 0 when checking lognorm vmin -* :ghpull:`20483`: Backport PR #20480 on branch v3.4.x (Fix str of empty polygon.) -* :ghpull:`20480`: Fix str of empty polygon. -* :ghpull:`20478`: Backport PR #20473 on branch v3.4.x (_GSConverter: handle stray 'GS' in output gracefully) -* :ghpull:`20473`: _GSConverter: handle stray 'GS' in output gracefully -* :ghpull:`20456`: Backport PR #20453 on branch v3.4.x (Remove ``Tick.apply_tickdir`` from 3.4 deprecations.) -* :ghpull:`20441`: Backport PR #20416 on branch v3.4.x (Fix missing Patch3DCollection._z_markers_idx) -* :ghpull:`20416`: Fix missing Patch3DCollection._z_markers_idx -* :ghpull:`20417`: Backport PR #20395 on branch v3.4.x (Pathing issue) -* :ghpull:`20395`: Pathing issue -* :ghpull:`20404`: Backport PR #20403: FIX: if we have already subclassed mixin class ju… -* :ghpull:`20403`: FIX: if we have already subclassed mixin class just return -* :ghpull:`20383`: Backport PR #20381 on branch v3.4.x (Prevent corrections and completions in search field) -* :ghpull:`20307`: Backport PR #20154 on branch v3.4.x (ci: Bump Ubuntu to 18.04 LTS.) -* :ghpull:`20285`: Backport PR #20275 on branch v3.4.x (Fix some examples that are skipped in docs build) -* :ghpull:`20275`: Fix some examples that are skipped in docs build -* :ghpull:`20267`: Backport PR #20265 on branch v3.4.x (Legend edgecolor face) -* :ghpull:`20265`: Legend edgecolor face -* :ghpull:`20260`: Fix legend edgecolor face -* :ghpull:`20259`: Backport PR #20248 on branch v3.4.x (Replace pgf image-streaming warning by error.) -* :ghpull:`20248`: Replace pgf image-streaming warning by error. -* :ghpull:`20241`: Backport PR #20212 on branch v3.4.x (Update span_selector.py) -* :ghpull:`20212`: Update span_selector.py -* :ghpull:`19980`: Tidy up deprecation messages in ``_subplots.py`` -* :ghpull:`20234`: Backport PR #20225 on branch v3.4.x (FIX: correctly handle ax.legend(..., legendcolor='none')) -* :ghpull:`20225`: FIX: correctly handle ax.legend(..., legendcolor='none') -* :ghpull:`20232`: Backport PR #19636 on branch v3.4.x (Correctly check inaxes for multicursor) -* :ghpull:`20228`: Backport PR #19849 on branch v3.4.x (FIX DateFormatter for month names when usetex=True) -* :ghpull:`19849`: FIX DateFormatter for month names when usetex=True -* :ghpull:`20154`: ci: Bump Ubuntu to 18.04 LTS. -* :ghpull:`20186`: Backport PR #19975 on branch v3.4.x (CI: remove workflow to push commits to macpython/matplotlib-wheels) -* :ghpull:`19975`: CI: remove workflow to push commits to macpython/matplotlib-wheels -* :ghpull:`19636`: Correctly check inaxes for multicursor - -Issues (22): - -* :ghissue:`20219`: Regression: undocumented change of behaviour in mpl 3.4.2 with axis ticks direction -* :ghissue:`20721`: ax.clear() adds extra ticks, un-hides shared-axis tick labels -* :ghissue:`20765`: savefig re-scales xticks and labels of some (but not all) subplots -* :ghissue:`20782`: [Bug]: _supylabel get_in_layout() typo? -* :ghissue:`20747`: [Bug]: _copy_css_file assumes that the _static directory already exists -* :ghissue:`20617`: tests fail with new inkscape -* :ghissue:`20519`: Toolbar zoom doesn't change autoscale status for versions 3.2.0 and above -* :ghissue:`20628`: Out-of-bounds read leads to crash or broken TrueType fonts -* :ghissue:`20612`: Broken EPS for Type 42 STIX -* :ghissue:`19982`: regression for 3.4.x - ax.figbox replacement incompatible to all version including 3.3.4 -* :ghissue:`19938`: unuseful deprecation warning figbox -* :ghissue:`16400`: Inconsistent behavior between Normalizers when input is Dataframe -* :ghissue:`20583`: Lost class descriptions since 3.4 docs -* :ghissue:`20551`: set_segments(get_segments()) makes lines coarse -* :ghissue:`20560`: test_png is failing -* :ghissue:`20487`: test_huge_range_log is failing... -* :ghissue:`20472`: test_backend_pgf.py::test_xelatex[pdf] - ValueError: invalid literal for int() with base 10: b'ate missing from Resources. [...] -* :ghissue:`20328`: Path.intersects_path sometimes returns incorrect values -* :ghissue:`20258`: Using edgecolors='face' with stackplot causes value error when using plt.legend() -* :ghissue:`20200`: examples/widgets/span_selector.py is brittle -* :ghissue:`20231`: MultiCursor bug -* :ghissue:`19836`: Month names not set as text when using usetex - - -Previous GitHub Stats ---------------------- +Pull Requests (532): + +* :ghpull:`20883`: Make pywin32 optional in Ctrl+C Qt test. +* :ghpull:`20874`: Add additional external resource. +* :ghpull:`20875`: Use mpl.colormaps in examples +* :ghpull:`20586`: Deprecate matplotlib.test() +* :ghpull:`19892`: Add Figure parameter layout and discourage tight_layout / constrained_layout +* :ghpull:`20882`: Don't add QtNetwork to the API exported by qt_compat. +* :ghpull:`20881`: Deprecate some old globals in qt_compat. +* :ghpull:`13306`: Qt5: SIGINT kills just the mpl window and not the process itself +* :ghpull:`20876`: DOC: Fix dependency link. +* :ghpull:`20878`: Use tables for Locator and Formatter docs +* :ghpull:`20873`: Remove mplutils.cpp; shorten mplutils.h. +* :ghpull:`20872`: Remove some boilerplate from C extension inits. +* :ghpull:`20871`: Move setup.cfg to mplsetup.cfg. +* :ghpull:`20869`: Ignore errors trying to delete make_release_tree. +* :ghpull:`20868`: Fix qt key mods +* :ghpull:`20856`: TST: Add unit test to catch recurrences of #20822, #20855 +* :ghpull:`20857`: Propose a less error-prone helper for module-level getattrs. +* :ghpull:`20840`: Speed up Tkagg blit with Tk_PhotoPutBlock +* :ghpull:`20805`: Ensure all params are restored after ``reset_ticks``. +* :ghpull:`20863`: new github citation format +* :ghpull:`20859`: Allow SubFigure legends +* :ghpull:`20848`: Fix PyPy wheels and tests +* :ghpull:`20862`: Fix minor typo in setupext.py +* :ghpull:`20814`: FIX: Avoid copying source script when ``plot_html_show_source_link`` is False in plot directive +* :ghpull:`20855`: BUG: __getattr__ must raise AttributeError if name not found (again) +* :ghpull:`20079`: Prepare axes_divider for simpler(?) indexing-based API. +* :ghpull:`20444`: Delete _Bracket and update the _Curve to be able to ']->' and '<-[' +* :ghpull:`20812`: Clarify tutorial "Customizing Matplotlib with style sheets and rcParams" +* :ghpull:`20806`: Deprecate matplotlib.cm.LUTSIZE +* :ghpull:`20818`: Swap Cap/Cup glyphs when using STIX font. +* :ghpull:`20849`: Add external resources to devdoc landing page +* :ghpull:`20846`: Re-re-remove deprecated Qt globals. +* :ghpull:`18503`: Add a dedicated ColormapRegistry class +* :ghpull:`20603`: Deprecate unused LassoSelector event handlers. +* :ghpull:`20679`: Fix selector onselect call when the selector is removed by an "empty" click and add ``ignore_event_outside`` argument +* :ghpull:`11358`: FIX/ENH: Introduce a monolithic legend handler for Line2D +* :ghpull:`20699`: FIX/ENH: Introduce a monolithic legend handler for Line2D +* :ghpull:`20837`: Merge branch v3.4.x +* :ghpull:`18782`: ENH: allow image to interpolate post RGBA +* :ghpull:`20829`: TST: neither warned and pytest upstream deprecated this usage +* :ghpull:`20828`: Increase test timeouts to 60 s to aid slower architectures +* :ghpull:`20816`: ENH: Add the ability to block callback signals +* :ghpull:`20646`: Handle NaN values in ``plot_surface`` zsort +* :ghpull:`20725`: ``Axes3D.plot_surface``: Allow masked arrays and ``NaN`` values +* :ghpull:`20825`: Fix image triage tool with Qt6 +* :ghpull:`20229`: ENH: Only do constrained layout at draw... +* :ghpull:`20822`: BUG: __getattr__ must raise AttributeError if name not found +* :ghpull:`20815`: circle: Switch to next-gen image. +* :ghpull:`20813`: add doc-link to dufte +* :ghpull:`20799`: MNT: Rename callbacksSM to callbacks +* :ghpull:`20803`: Re-remove deprecated Qt globals. +* :ghpull:`17810`: FIX: don't fail on first show if animation already exhausted +* :ghpull:`20733`: Deprecate globals using module-level ``__getattr__``. +* :ghpull:`20788`: FIX: Check for colorbar creation with multi-dimensional alpha +* :ghpull:`20115`: ENH: pass extra kwargs in FigureBase, SubFigure, Figure to set +* :ghpull:`20795`: TST/MNT: deprecate unused fixture +* :ghpull:`20792`: Change legend guide to object oriented approach +* :ghpull:`20717`: Fix collection offsets +* :ghpull:`20673`: Point [SOURCE] documents to github +* :ghpull:`19255`: Support for PyQt6/PySide6. +* :ghpull:`20772`: Implement remove_rubberband rather than release_zoom. +* :ghpull:`20783`: Document how to check for the existence of current figure/axes. +* :ghpull:`20778`: Dedupe handling of mouse buttons in macos backend. +* :ghpull:`20749`: Cleanup font subsetting code +* :ghpull:`20775`: Remove some remnants of qt4 support. +* :ghpull:`20659`: Add HiDPI-related config for mathmpl +* :ghpull:`20767`: Factor out latex ifpackageloaded pattern. +* :ghpull:`20769`: Simplify backend_ps._nums_to_str. +* :ghpull:`20768`: Avoid using gca() in examples. +* :ghpull:`20766`: Fix line dash offset format in PS output +* :ghpull:`20706`: Include ``underscore.sty`` +* :ghpull:`20729`: Support vmin/vmax with bins='log' in hexbin +* :ghpull:`20753`: Deprecate support for case-insensitive scales. +* :ghpull:`20602`: Merge EllipseSelector example together with RectangleSelector. +* :ghpull:`20744`: Add an example showing alternate mouse cursors. +* :ghpull:`20758`: FIX: pass colorbar.set_ticklabels down to long_axis +* :ghpull:`20759`: Modernize mathtext examples +* :ghpull:`20739`: Small simplifications to streamplot. +* :ghpull:`20756`: Add new external resource: Python Graph Gallery +* :ghpull:`20330`: Fix cla colorbar +* :ghpull:`20688`: issue form files +* :ghpull:`20743`: Set the canvas cursor when using a SpanSelector +* :ghpull:`20391`: Type42 subsetting in PS/PDF +* :ghpull:`20737`: DOC: new index page +* :ghpull:`20686`: Fix interaction between make_keyword_only and pyplot generation. +* :ghpull:`20731`: Improved implementation of Path.copy and deepcopy +* :ghpull:`20732`: Fix style in ``assert(x)``. +* :ghpull:`20620`: Move set_cursor from the toolbar to FigureCanvas. +* :ghpull:`20728`: Fix broken link in 'Contributing' docs +* :ghpull:`20727`: DOC/TST make circle faster +* :ghpull:`20726`: DOC: Provide alternative to cbar.patch +* :ghpull:`20719`: Fix color normalization in plot types scatter +* :ghpull:`20634`: Implement Type-1 decryption +* :ghpull:`20633`: Emit non BMP chars as XObjects in PDF +* :ghpull:`20709`: Fix Circle merge on master branch. +* :ghpull:`20701`: Small cleanup to GTK backend +* :ghpull:`20670`: Support markevery on figure-level lines. +* :ghpull:`20707`: Rename a confusingly named variable in backend_pdf. +* :ghpull:`20680`: CI: Build merged version on CircleCI +* :ghpull:`20471`: add interactive colorbar example to gallery +* :ghpull:`20692`: Small cleanups to hatch.py. +* :ghpull:`20702`: DOC: add note about contouring algorithm +* :ghpull:`18869`: Add __version_info__ as a tuple-based version identifier +* :ghpull:`20689`: Fix some very unlikely leaks in extensions. +* :ghpull:`20254`: Define FloatingAxes boundary patch in data coordinates. +* :ghpull:`20682`: Bump codecov/codecov-action from 1 to 2 +* :ghpull:`20544`: Support of different locations for the text fixing cursor of TextBox +* :ghpull:`20648`: Simplify barchart_demo +* :ghpull:`20606`: Dynamically generate CbarAxes. +* :ghpull:`20405`: ENH: expose make_norm_from_scale +* :ghpull:`20555`: Fix the way to get xs length in set_3d_properties() +* :ghpull:`20546`: Improve tutorial figures in the new theme +* :ghpull:`20676`: Fix bounds when initialising ``SpanSelector`` +* :ghpull:`20678`: Clarify comment about backend_pgf.writeln. +* :ghpull:`20675`: Shorten the ``@deprecated`` docs. +* :ghpull:`20585`: Rename parameter selectors +* :ghpull:`20672`: Remove outdated parts of MatplotlibDeprecationWarning docs. +* :ghpull:`20671`: Standardize description of kwargs in legend_handler. +* :ghpull:`20669`: Cleanup related to usage of axs +* :ghpull:`20664`: Reword docs about fallbacks on headless linux. +* :ghpull:`20663`: Document $MPLSETUPCFG. +* :ghpull:`20638`: Small simplifications to FixedAxisArtistHelper. +* :ghpull:`20626`: Simplify curvilinear grid examples. +* :ghpull:`20088`: fix some http: -> https: URLs +* :ghpull:`20654`: Remove some usages of plt.setp() +* :ghpull:`20615`: Font 42 kerning +* :ghpull:`20636`: Use set_xticks(ticks, labels) instead of a separate set_xticklabels() +* :ghpull:`20450`: [Doc] Font Types and Font Subsetting +* :ghpull:`20582`: Fix twoslopenorm colorbar +* :ghpull:`20632`: Use ticklabels([]) instead of ticklabels('') +* :ghpull:`20608`: doc/conf.py: if set, use SOURCE_DATE_EPOCH to set copyright year. +* :ghpull:`20605`: Add \dddot and \ddddot as accents in mathtext +* :ghpull:`20621`: TST/DOC: just run circle once... +* :ghpull:`20498`: Adapt the release guide to the new release notes structure +* :ghpull:`20601`: Hide some ``_SelectorWidget`` state internals. +* :ghpull:`20600`: Inline _print_svg into its only call site (print_svg). +* :ghpull:`20589`: Add directional sizing cursors +* :ghpull:`20481`: Deprecate Colorbar.patch. +* :ghpull:`20598`: Don't forget to propagate kwargs from print_svgz to print_svg. +* :ghpull:`19495`: Move svg basename detection down to RendererSVG. +* :ghpull:`20501`: Colorbar redo again! +* :ghpull:`20407`: Turn shared_axes, stale_viewlims into {axis_name: value} dicts. +* :ghpull:`18966`: PR: Remove modality of figure options +* :ghpull:`19265`: Change styling of slider widgets +* :ghpull:`20593`: DOC: fix various typos +* :ghpull:`20374`: Check modification times of included RST files +* :ghpull:`20569`: Better signature and docstring for Artist.set +* :ghpull:`20574`: Add tricontourf hatching example +* :ghpull:`18666`: Remove unused/deprecated AVConv_ classes +* :ghpull:`20514`: Fix example for rcParams['autolimit_mode'] +* :ghpull:`20571`: Switch default ArrowStyle angle values from None to zero. +* :ghpull:`20510`: Consistent capitalization of section headers +* :ghpull:`20573`: Move the marker path example into the marker reference +* :ghpull:`20572`: Clarify allowable backend switches in matplotlib.use(). +* :ghpull:`20538`: Show box/arrowstyle parameters in reference examples. +* :ghpull:`20515`: Shorten the implementation of bxp(). +* :ghpull:`20562`: More concise how to for subplot adjustment +* :ghpull:`20570`: Reduce vertical margins in property tables +* :ghpull:`20563`: Expire deprecation of passing nbins to MaxNLocator in two ways +* :ghpull:`20561`: Fix limits in plot types example hist(x) +* :ghpull:`20559`: Fix deprecation of encoding in plot_directive. +* :ghpull:`20547`: Raise if passed invalid kwargs to set_constrained_layout_pads. +* :ghpull:`20527`: Factor out DEBUG_TRUETYPE checks in ttconv, & removals of unused defs. +* :ghpull:`20465`: Remove remaining 3.3 deprecations +* :ghpull:`20558`: Rename recently introduced parameters in SpanSelector +* :ghpull:`20535`: Improve the documentation guide +* :ghpull:`20113`: Interactive span selector improvement +* :ghpull:`20524`: Dedupe some box anchoring code between legend.py and offsetbox.py. +* :ghpull:`20451`: Add initial TextBox widget testing +* :ghpull:`20543`: Deprecate ``@pytest.mark.style(...)``. +* :ghpull:`20530`: Plot nothing for incompatible 0 shape in x,y data +* :ghpull:`20367`: Add parse_math in Text and default it False for TextBox +* :ghpull:`20509`: Cleanup plot types +* :ghpull:`20537`: Don't sort boxstyles/arrowstyles/etc. alphabetically. +* :ghpull:`20542`: Fix ScalarFormatter.format_ticks for non-ordered tick locations. +* :ghpull:`20533`: Rename (N, M) -> (M, N) array-like +* :ghpull:`20540`: Deprecate :encoding: option to .. plot::, which has no effect since 2011 +* :ghpull:`20541`: Minor fix +* :ghpull:`20539`: Document defaults in plot_directive. +* :ghpull:`20536`: Make most of annotation tutorial a comment, and remove figure titles. +* :ghpull:`20439`: Remove dead code from LGTM alerts. +* :ghpull:`20528`: Merge subplot_demo into subplot example. +* :ghpull:`20493`: Cleanup AnchoredOffsetbox-related demos. +* :ghpull:`20513`: Shorten the bxp docstring. +* :ghpull:`20507`: Merge subplot_toolbar example into subplots_adjust. +* :ghpull:`20505`: Add rc_context to customizing tutorial +* :ghpull:`20449`: Suppress repeated logwarns in postscript output. +* :ghpull:`20500`: DOC: Add twitter icon and fix logo link +* :ghpull:`20499`: Simplify plot types pie() +* :ghpull:`20495`: Fix shape of Z in contour docs +* :ghpull:`20497`: Remove obsolete footnote on pyside +* :ghpull:`20485`: DOC: hexbin 'extent' must be 4-tuple of float, not float +* :ghpull:`20466`: Various cleanups to pgf backend. +* :ghpull:`20474`: Make lack of support more explicit for non-postscript fonts + usetex. +* :ghpull:`20476`: give Font a root widget +* :ghpull:`20477`: remove _master attribute from FigureCanvasTk +* :ghpull:`19731`: DOC: first pass at switching to pydata theme +* :ghpull:`20475`: Less pyplot, more OO in docs. +* :ghpull:`20467`: Small cleanups to sphinxext.plot_directive. +* :ghpull:`20437`: Use packaging to do version comparisons. +* :ghpull:`20354`: Merge Colorbar and ColorbarBase. +* :ghpull:`20464`: tinypages/conf.py doesn't need to manipulate sys.path. +* :ghpull:`20420`: Add a select_overload helper for signature-overloaded functions. +* :ghpull:`20460`: Shorten the AnchoredOffsetbox docstring. +* :ghpull:`20458`: Set the axes of legend text +* :ghpull:`20438`: Fix deprecation of ``Tick.apply_tickdir``. +* :ghpull:`20457`: Rename data variables in histogram example. +* :ghpull:`20442`: Fix dvi baseline detector when ``\usepackage{chemformula}`` is used. +* :ghpull:`20454`: Tell LGTM to use Python 3 explicitly. +* :ghpull:`20446`: Make used tex packages consistent between ps and other backends. +* :ghpull:`20447`: Remove Figure/Axes/Axis deprecations from 3.3 +* :ghpull:`20414`: ENH: add colorbar info to gridspec cbar +* :ghpull:`20436`: Add missing super __init__ in subclasses +* :ghpull:`20284`: Use a GtkApplication in GTK backend. +* :ghpull:`20400`: Make pdftex.map parsing stricter +* :ghpull:`20292`: Cleanup plot types docs +* :ghpull:`20445`: Small cleanups to backend_ps. +* :ghpull:`20399`: Improve example for 3D polygons +* :ghpull:`20432`: Small doc cleanups. +* :ghpull:`20398`: Document Axes.get_aspect() +* :ghpull:`20428`: Deprecate public use of get_path_in_displaycoord. +* :ghpull:`20397`: Improve hexbin() documentation +* :ghpull:`20430`: Improve fancyarrow_demo. +* :ghpull:`20431`: Fix indentation of Arrow/Box/Connection styles tables. +* :ghpull:`20427`: Fix references in ArrowStyle docstring. +* :ghpull:`20346`: Clarify/Improve docs on family-names vs generic-families +* :ghpull:`20410`: PGF: Clip lines/markers to maximum LaTeX dimensions. +* :ghpull:`20363`: Don't disable path clipping on paths with codes. +* :ghpull:`20244`: Inline and simplify SubplotToolQt. +* :ghpull:`20165`: Slightly improve output of dvi debug utilities, and tiny cleanups. +* :ghpull:`20390`: Cleanup arrow_demo. +* :ghpull:`20408`: Remove mention of now-removed Encoding class. +* :ghpull:`20327`: FIX: fix colorbars with no scales +* :ghpull:`20215`: Quadmesh.set_array validates dimensions +* :ghpull:`20293`: Simplify font setting in usetex mode +* :ghpull:`20386`: Merge arrow_simple_demo into arrow_guide. +* :ghpull:`20348`: codecs.getwriter has simpler lifetime semantics than TextIOWrapper. +* :ghpull:`20132`: Create release notes page +* :ghpull:`20331`: Remove Axis, Tick, and Axes deprecations from 3.3 +* :ghpull:`20373`: Handle direction="column" in axes_grid.Grid +* :ghpull:`20394`: Remove separate section for support of 3d subplots. +* :ghpull:`20393`: Remove non-informative figure captions. +* :ghpull:`17453`: Displaying colorbars with specified boundaries correctly +* :ghpull:`20369`: Switch version scheme to release-branch-semver. +* :ghpull:`20377`: Cleanup some examples titles & texts. +* :ghpull:`20378`: Redirect agg_buffer{,_to_array} examples to canvasagg. +* :ghpull:`20376`: Small improvements to canvasagg example. +* :ghpull:`20365`: Reorganize a bit text-related rcs in matplotlibrc. +* :ghpull:`20362`: Add research notice +* :ghpull:`20353`: Remove incorrect statement about data-kwarg interface. +* :ghpull:`20343`: Fix exception handling when constructing C-level PathGenerator. +* :ghpull:`20349`: Fix missing write in TTStreamWriter::printf. +* :ghpull:`20347`: Fix possible refleak in PathGenerator. +* :ghpull:`20339`: Cleanup autoscale-related docstrings. +* :ghpull:`20338`: Fix some indent-related style lints. +* :ghpull:`20337`: Small unit-related cleanups. +* :ghpull:`20168`: FIX: clean up re-limiting hysteresis +* :ghpull:`20336`: Deduplicate color format specification +* :ghpull:`20334`: Remove need for ConversionInterface to support unitless values. +* :ghpull:`20020`: For polar plots, report cursor position with correct precision. +* :ghpull:`20319`: DOC: Tweaks to module API pages +* :ghpull:`20332`: Quadmesh's default value of shading is now set to 'flat' instead of False +* :ghpull:`20333`: Better align param comments in ``Legend.__init__`` signature. +* :ghpull:`20323`: Adding cla and remove to ColorbarAxes +* :ghpull:`20320`: Fix remaining E265 exceptions. +* :ghpull:`20318`: DOC: Fix missing refs in what's new pages +* :ghpull:`20315`: Fix spelling. +* :ghpull:`20291`: Write data parameter docs as regular parameter not as note (v2) +* :ghpull:`19908`: Implement get_cursor_data for QuadMesh. +* :ghpull:`20314`: MAINT: Removing deprecated colorbar functions. +* :ghpull:`20310`: Add test for font selection by texmanager. +* :ghpull:`19348`: Make YearLocator a subclass of RRuleLocator +* :ghpull:`20208`: Rewrite blocking_input to something much simpler. +* :ghpull:`19033`: Templatize class factories. +* :ghpull:`20309`: DOC: Spell out args/kwargs in examples/tutorials +* :ghpull:`20305`: Merge two axisartist examples and point to standard methods. +* :ghpull:`20306`: Document legend(handles=handles) signature +* :ghpull:`20311`: Warn if a non-str is passed to an rcParam requiring a str. +* :ghpull:`18472`: Adding a get_coordinates() method to Quadmesh collections +* :ghpull:`20032`: axvline()/axvspan() should not update r limits in polar plots. +* :ghpull:`20304`: Don't mention dviread in the PsfontsMap "missing entry" error message. +* :ghpull:`20308`: Remove outdated comment re: pgf/windows. +* :ghpull:`20302`: Further remove use of meshWidth, meshHeight in QuadMesh. +* :ghpull:`20101`: Fix ``Text`` class bug when ``font`` argument is provided without ``math_fontfamily`` +* :ghpull:`15436`: Allow imshow from float16 data +* :ghpull:`20299`: Simplify tfm parsing. +* :ghpull:`20290`: Support imshow(). +* :ghpull:`20303`: Remove tilde in code links where not necessary +* :ghpull:`19873`: Allow changing the vertical axis in 3d plots +* :ghpull:`19558`: Use luatex in --luaonly mode to query kpsewhich. +* :ghpull:`20301`: Clarify the effect of PolygonCollection properties on Quiver +* :ghpull:`20235`: Warn user when mathtext font is used for ticks +* :ghpull:`20237`: Make QuadMesh arguments with defaults keyword_only +* :ghpull:`20054`: Enh better colorbar axes +* :ghpull:`20164`: Auto-generate required kwdoc entries into docstring.interpd. +* :ghpull:`19677`: Convert axis limit units in Qt plot options widget +* :ghpull:`14913`: Reimplement NonUniformImage, PcolorImage in Python, not C. +* :ghpull:`20295`: Replace text._wrap_text by _cm_set(). +* :ghpull:`19859`: Write data parameter docs as regular parameter not as note +* :ghpull:`20273`: Fix cursor with toolmanager on GTK3. +* :ghpull:`20288`: Small markup fixes in api docs. +* :ghpull:`20276`: Tiny fixes to mathtext/usetex tutorials. +* :ghpull:`20084`: Add legend.labelcolor in rcParams +* :ghpull:`19253`: Improve font spec for SVG font referencing. +* :ghpull:`20278`: Deprecate public access to certain texmanager attributes. +* :ghpull:`19375`: Don't composite path-clipped image; forward suppressComposite as needed. +* :ghpull:`20190`: Simplify handling of uncomparable formats in tests. +* :ghpull:`20277`: Fix ordering of tex font usepackages. +* :ghpull:`20279`: Slightly reword intros of mpl_toolkits API docs. +* :ghpull:`20272`: De-duplicate fonts in LaTeX preamble. +* :ghpull:`15604`: Deprecate auto-removal of grid by pcolor/pcolormesh. +* :ghpull:`20193`: Simplify HostAxes.draw and its interaction with ParasiteAxes. +* :ghpull:`19441`: Make backend_gtk3foo importable on headless environments. +* :ghpull:`20126`: Simplify font_manager font enumeration logic. +* :ghpull:`19869`: Factor out x/y lo/hi handling in errorbar. +* :ghpull:`20173`: Rename (with deprecation) first parameter of grid() from b to visible. +* :ghpull:`19499`: Fully fold overset/underset into _genset. +* :ghpull:`20268`: Api pcolorargs deprecation +* :ghpull:`20264`: Fix blitting selector +* :ghpull:`20081`: Limit documenting special members to __call__ +* :ghpull:`20245`: MAINT: Removing deprecated ``offset_position`` from Collection +* :ghpull:`20218`: Update Axes showcase in "Embedding in Tk" example +* :ghpull:`20019`: Example: Cursor widget with text +* :ghpull:`20242`: Add comments and format Axis._get_coord_info +* :ghpull:`20207`: Move axisartist towards using standard Transforms. +* :ghpull:`20247`: Explicitly reject black autoformatting. +* :ghpull:`20217`: ci: Export sphinx-gallery run results to CircleCI. +* :ghpull:`20238`: Clarify docstring of ScalarMappable.set/get_array() +* :ghpull:`20239`: Style tables in style guide +* :ghpull:`19894`: Remove deprecated Qt4 backends +* :ghpull:`19937`: Add washing machine to Axes3D +* :ghpull:`20233`: Add a Ubuntu 20.04 / Python 3.9 CI run +* :ghpull:`20227`: Adding an equals method to colormaps +* :ghpull:`20216`: Documentation Style Guide for contributors +* :ghpull:`20222`: Fix C coverage +* :ghpull:`20221`: DOC: clarify that savefig(..., transparent=False) has no effect +* :ghpull:`20047`: Add labels parameter to set_ticks() +* :ghpull:`20118`: Convert FontEntry to a data class +* :ghpull:`19167`: Add support for HiDPI in TkAgg on Windows +* :ghpull:`18397`: fix cmr10 negative sign in cmsy10 (RuntimeWarning: Glyph 8722 missing) +* :ghpull:`20170`: SubplotParams.validate-associated fixes. +* :ghpull:`19467`: Shorten the implementation of violin(). +* :ghpull:`12226`: FIX: pcolor/pcolormesh honour edgecolors kwarg when facecolors is set 'none' +* :ghpull:`18870`: Expand ScalarMappable.set_array to accept array-like inputs +* :ghpull:`20073`: Support SubFigures in AxesDivider. +* :ghpull:`20209`: Deprecate cbook.report_memory. +* :ghpull:`20211`: Use check_getitem in legend location resolution. +* :ghpull:`20206`: Cleanup axisartist in preparation for future changes. +* :ghpull:`20191`: Small simplifications to FloatingAxesBase. +* :ghpull:`20189`: Add tests for ginput and waitforbuttonpress. +* :ghpull:`20199`: Make set_marker{edge,face}color(None) more consistent. +* :ghpull:`16943`: Changing get_cmap to return copies of the registered colormaps. +* :ghpull:`19483`: MNT: deprecate epoch2num/num2epoch +* :ghpull:`20201`: Simplify _process_plot_var_args.set_prop_cycle. +* :ghpull:`20197`: Speedup Line2D marker color setting. +* :ghpull:`20194`: Fix markup on MEP22. +* :ghpull:`20198`: Fix validation of Line2D color. +* :ghpull:`20046`: Deprecation warning +* :ghpull:`20144`: More tight_layout cleanups +* :ghpull:`20105`: Shorten Curve arrowstyle implementations. +* :ghpull:`19401`: Simplify axisartist line clipping. +* :ghpull:`19260`: Update round fix +* :ghpull:`20196`: Replaced links to colormap packages with link to third-party packages list in MPL docs +* :ghpull:`18819`: Usage guide edit +* :ghpull:`18346`: Soft-deprecate Axes.plot_date() +* :ghpull:`20187`: Merge v3.4.x up into master +* :ghpull:`15333`: Enh: DivergingNorm Fair +* :ghpull:`20188`: Remove 3.3 deprecations in cbook. +* :ghpull:`20177`: Fix broken test re: polar tick visibility. +* :ghpull:`20026`: DOC: move third-party packages to new page +* :ghpull:`19994`: Don't hide shared "x/y"ticklabels for grids of non-rectilinear axes. +* :ghpull:`20150`: Rename mosaic layout +* :ghpull:`19369`: Add Artist._cm_set for temporarily setting an Artist property. +* :ghpull:`15889`: Add svg logo icon +* :ghpull:`20140`: DOC: make 2x versions of all gallery figures +* :ghpull:`20155`: Fix wheel builds on CI +* :ghpull:`19951`: Convert Qhull wrapper to C++ and array_view +* :ghpull:`19918`: Cleanup some consistency in contour extensions +* :ghpull:`20153`: Fix wheel builds on CI +* :ghpull:`19363`: Create box3d example +* :ghpull:`20129`: Cleanup some "variable assigned but not used" lints. +* :ghpull:`20107`: Support full-sharex/y in subplot_mosaic. +* :ghpull:`20094`: Switch _auto_adjust_subplotpars to take rowspan/colspan as input. +* :ghpull:`16368`: Improve warning for unsupported scripts. +* :ghpull:`19660`: Allow PolygonSelector points to be removed +* :ghpull:`16291`: Split Norm and LinearNorm up +* :ghpull:`20119`: Cleanup flake8 exceptions for examples +* :ghpull:`20109`: Fix trailing text in doctest-syntax plot_directive. +* :ghpull:`19538`: Speedup pdftex.map parsing. +* :ghpull:`20003`: Bump minimum NumPy to 1.17 +* :ghpull:`20074`: Copy-edit axes_grid tutorial. +* :ghpull:`20124`: Remove workaround unneeded on Py3.7+, which we require now. +* :ghpull:`20120`: Cleanup subsetting tool. +* :ghpull:`20108`: Skip back-and-forth between pixels and points in contour code. +* :ghpull:`20106`: Shorten bracket arrowstyle docs. +* :ghpull:`20090`: Cleanup anchored_artists, inset_locator docstrings. +* :ghpull:`20097`: Use nullcontext more as do-nothing context manager. +* :ghpull:`20095`: Remove 3.3 ticker deprecations +* :ghpull:`20064`: Expire deprecation of AxesDivider defaulting to zero pads. +* :ghpull:`20091`: Cleanup tight_layout. +* :ghpull:`20069`: Don't make VBoxDivider inherit from HBoxDivider. +* :ghpull:`20078`: Remove some usages of OrderedDict +* :ghpull:`20077`: Expire Artist.set() property reordering +* :ghpull:`20070`: Harmonize descriptions of the 'anchor' parameter. +* :ghpull:`20011`: Move development dependencies to dependencies page +* :ghpull:`20072`: Improve labeling in simple_axes_divider1 example. +* :ghpull:`20063`: Deprecate some untested, never used axes_grid1 methods. +* :ghpull:`20065`: Deprecate AxesDivider.append_axes(..., add_to_figure=True). +* :ghpull:`20066`: Cleanup axes_divider docstrings, and detail calculations. +* :ghpull:`20059`: Include left and right titles for labeling axes in qt axes selector. +* :ghpull:`20052`: Remove axes_grid/axisartist APIs deprecated in Matplotlib 3.3. +* :ghpull:`18807`: make FancyArrow animatable +* :ghpull:`15281`: Don't use ImageGrid in demo_text_rotation_mode. +* :ghpull:`20051`: Remove offsetbox APIs deprecated in Matplotlib 3.3. +* :ghpull:`14854`: Improved dev installation documentation +* :ghpull:`18900`: Enh better colorbar axes +* :ghpull:`20042`: DOC: fix typos +* :ghpull:`13860`: Deprecate {Locator,Formatter}.set_{{view,data}_interval,bounds}. +* :ghpull:`20028`: Shorten the repr of scaling transforms. +* :ghpull:`20027`: Fix axvspan for drawing slices on polar plots. +* :ghpull:`20024`: Small fixes to latex-related docs. +* :ghpull:`20023`: Simplify _redo_transform_rel_fig. +* :ghpull:`20012`: Fix default theta tick locations for non-full-circle polar plots. +* :ghpull:`20021`: DOC: fix typos +* :ghpull:`20013`: Move restriction of polar theta scales to ThetaAxis._set_scale. +* :ghpull:`20010`: DOC: fix heading level for plot_types/stats +* :ghpull:`20000`: Remove ax fixture from category tests. +* :ghpull:`20007`: Correct minor typos in legend.py and autoscale.py +* :ghpull:`20005`: DOC: Fix numpydoc syntax, and parameters names. +* :ghpull:`19996`: Small simplification to RadialLocator. +* :ghpull:`19968`: ENH: draw no output +* :ghpull:`19657`: Allow Selectors to be dragged from anywhere within their patch +* :ghpull:`19304`: Add legend title font properties +* :ghpull:`19977`: Fix doc build +* :ghpull:`19974`: CI: update the ssh key used to push the devdocs +* :ghpull:`9888`: Add an Annulus patch class +* :ghpull:`13680`: Update seaborn style +* :ghpull:`19967`: ENH: add user-facing no-output draw +* :ghpull:`19765`: ENH: use canvas renderer in draw +* :ghpull:`19525`: Don't create page transparency group in pdf output (for pdftex compat). +* :ghpull:`19952`: avoid implicit np.array -> float conversion +* :ghpull:`19931`: Remove now unused patches to ttconv. +* :ghpull:`19934`: Deprecate drawtype to RectangleSelector +* :ghpull:`19941`: Simplify 3D random walk example +* :ghpull:`19926`: Move custom scales/custom projections docs to module docstrings. +* :ghpull:`19898`: Remove 3.3 backend deprecations +* :ghpull:`19901`: Remove 3.3 rcParam deprecations +* :ghpull:`19900`: Remove 3.3 text deprecations +* :ghpull:`19922`: Remove 3.3 deprecated modules +* :ghpull:`19925`: Include projections.geo in api docs. +* :ghpull:`19924`: Discourage use of imread & improve its docs. +* :ghpull:`19866`: Switch to asciiart for boxplot illustration. +* :ghpull:`19912`: Add symlog to figureoptions scalings +* :ghpull:`19564`: Micro-optimize type1font loading +* :ghpull:`19623`: FIX: Contour lines rendered incorrectly when closed loops +* :ghpull:`19902`: Implement ArtistList.__[r]add__. +* :ghpull:`19904`: Don't set zoom/pan cursor for non-navigatable axes. +* :ghpull:`19909`: Use unicode when interactively displaying 3d azim/elev. +* :ghpull:`19905`: pyplot: do not apply kwargs twice in to x/yticklabels +* :ghpull:`19126`: Move pixel ratio handling into FigureCanvasBase +* :ghpull:`19897`: DOC/MNT fix make clean for plot_types +* :ghpull:`19858`: Move Line2D units handling to Axes & deprecate "units finalize" signal. +* :ghpull:`19889`: Include length in ArtistList repr. +* :ghpull:`19887`: Fix E265 in test files. +* :ghpull:`19882`: Use ax.set() for a more compact notation of styling in plot types docs +* :ghpull:`17231`: Fix errobar order +* :ghpull:`19703`: DOC: new plot gallery +* :ghpull:`19825`: Factor out machinery for running subprocess tk tests. +* :ghpull:`19872`: Fix unit handling in errorbar for astropy. +* :ghpull:`19526`: Apply unit conversion early in errorbar(). +* :ghpull:`19855`: Correct handle default backend. +* :ghpull:`18216`: Combine Axes.{lines,images,collections,patches,text,tables} into single list +* :ghpull:`19853`: Consistent corner variables names in widgets.py +* :ghpull:`19575`: Deprecate Text.get_prop_tup. +* :ghpull:`19810`: Remove JPEG-specific parameters and rcParams. +* :ghpull:`19666`: Change dictionary to list of tuples to permit duplicate keys +* :ghpull:`19400`: Fix tk event coordinates in the presence of scrollbars. +* :ghpull:`19603`: Remove matplotlibrc.template. +* :ghpull:`19835`: Merge v3.4.x into master +* :ghpull:`19821`: Hide stderr output from subprocess call in test suite. +* :ghpull:`19819`: Correct small typos in _axes.py and legend.py +* :ghpull:`19795`: Remove usetex-related APIs deprecated in Matplotlib 3.3. +* :ghpull:`19789`: Fix zorder handling for OffsetBoxes and subclasses. +* :ghpull:`19796`: Expire ````keymap.all_axes````-related deprecations. +* :ghpull:`19806`: Remove outdated api changes notes. +* :ghpull:`19801`: Expire deprecation of mathtext.fallback_to_cm. +* :ghpull:`12744`: Explicit plotorder +* :ghpull:`19681`: Merge branch 'v3.4.x' into master +* :ghpull:`18971`: Switch to setuptools_scm. +* :ghpull:`19727`: DOC: simplify API index +* :ghpull:`19760`: Speed up _delete_parameter. +* :ghpull:`19756`: Minor cleanup of documentation guide +* :ghpull:`19752`: Cleanup backend_tools docstrings, and minor refactorings. +* :ghpull:`19552`: Remove scalarmappable private update attributes +* :ghpull:`19728`: Factor out clip-path attr handling in backend_svg. +* :ghpull:`19540`: Share subplots() label visibility handling with label_outer(). +* :ghpull:`19753`: Cleanup string formatting in backend_pgf. +* :ghpull:`19750`: Simplify maxdict implementation. +* :ghpull:`19749`: Remove unused _find_dedent_regex & _dedent_regex. +* :ghpull:`19751`: Update some matplotlib.lines docstrings. +* :ghpull:`13072`: ENH: add figure.legend; outside kwarg for better layout outside subplots +* :ghpull:`19740`: Minor backend docstring fixes. +* :ghpull:`19734`: Remove unused _fonts attribute in RendererSVG. +* :ghpull:`19733`: Reword AutoDateFormatter docs. +* :ghpull:`19718`: Small style fixes to matplotlibrc.template. +* :ghpull:`19679`: Add inheritance diagram to patches docs +* :ghpull:`19717`: Don't sort lexicographially entries in SVG output. +* :ghpull:`19716`: Fix colon placement in issue template. +* :ghpull:`19704`: Cleanup license page in docs +* :ghpull:`19487`: Deprecate unused \*args to print_. +* :ghpull:`19654`: Dedupe various method implementations using functools.partialmethod. +* :ghpull:`19655`: Deprecate Tick.apply_tickdir. +* :ghpull:`19653`: deprecate_privatize_attribute also works for privatizing methods. +* :ghpull:`19646`: Add angle setter/getter to Rectangle +* :ghpull:`19659`: Improve docs for rgba conversion +* :ghpull:`19641`: Fix Bbox.frozen() not copying minposx/minposy +* :ghpull:`19626`: Clean up E265 in examples. +* :ghpull:`19622`: Prefer Axes.remove() over Figure.delaxes() in docs. +* :ghpull:`19621`: Dedupe docstrings of Figure.{get_axes,axes}. +* :ghpull:`19600`: DOC: better intro for dates.py +* :ghpull:`19606`: Remove versionadded notes; correct doc link +* :ghpull:`19620`: Remove suggestion to remove rk4/rk45 integrators from streamplot. +* :ghpull:`19586`: DOC: more improve date example +* :ghpull:`19566`: add docstring to ax.quiver +* :ghpull:`19601`: Handle None entries in sys.modules. +* :ghpull:`19517`: Deprecate toplevel is_url, URL_REGEX helpers. +* :ghpull:`19570`: Dedupe part of error message in check_in_list. +* :ghpull:`14508`: Add force_zorder parameter +* :ghpull:`19585`: Deprecate trivial helpers in style.core. +* :ghpull:`19534`: BUG: fill_between with interpolate=True and NaN. +* :ghpull:`18887`: FIX: Generalize Colorbar Scale Handling +* :ghpull:`16788`: Adding png image return for inline backend figures with _repr_html_ + +Issues (127): + +* :ghissue:`20791`: [Bug]: spines and ticklabels +* :ghissue:`20723`: Adding a legend to a ``SubFigure`` doesn't work +* :ghissue:`20637`: PyPy wheels are pinned to v3.3, so pypy-based wheels for latest versions are not available +* :ghissue:`19160`: pypy failures +* :ghissue:`20385`: Add ']->' , '<-[' arrowstyles +* :ghissue:`19016`: Move away from set_ticklabels() +* :ghissue:`20800`: [Bug]: Setting backend in custom style sheet raises UserWarning +* :ghissue:`20809`: [Bug]: \Cap and \Cup in mathtext are inconsistent +* :ghissue:`20762`: [Doc]: Add external resources to devdoc landing page +* :ghissue:`18490`: Add a method to access the list of registered colormaps +* :ghissue:`20666`: Interactive SpanSelector no longer notifies when the selector is removed by an "empty" click +* :ghissue:`20552`: Expose legend's line: ``legline._legmarker`` as public +* :ghissue:`18391`: Bug? Legend Picking Not Working on Marker +* :ghissue:`11357`: Unable to retrieve marker from legend handle +* :ghissue:`2035`: legend marker update bug +* :ghissue:`19748`: Incorrect & inconsistent coloring in .imshow() with LogNorm +* :ghissue:`18735`: imshow padding around NaN values +* :ghissue:`7928`: [Bug] backend_bases.key_press_handler sneakily uses digit keys +* :ghissue:`20802`: Add ability to disable callbacks temporarily +* :ghissue:`16470`: Inconsistent Corner Masking w/ plot_surface +* :ghissue:`12395`: Rendering issue occurs when plotting 3D surfaces at a discontinuity +* :ghissue:`8222`: matplotlib 3D surface - gaps / holes in surface +* :ghissue:`4941`: Axes3d plot_surface not supporting masked arrays? +* :ghissue:`487`: Plotting masked arrays with plot_surface() +* :ghissue:`20794`: [Doc]: "Bachelor's degrees by gender" example is more or less dufte +* :ghissue:`20557`: Have ``[Source]`` in api docs link to github +* :ghissue:`20754`: [Doc]: legend guide should be OO +* :ghissue:`17770`: animation.save and fig.savefig interfere with each other and raise StopIteration +* :ghissue:`20785`: [Bug]: Colorbar creation from pcolormesh with cell specific alpha values +* :ghissue:`19843`: collection with alpha + colorer +* :ghissue:`20698`: collections.Collections offset improvements +* :ghissue:`17774`: Cannot make Latex plots when Pandas dataframe has underscore in variable name +* :ghissue:`19884`: Better document Axes.set() +* :ghissue:`20760`: [Bug]: subfigure position shifts on y-axis when x kwarg added to supxlabel +* :ghissue:`20296`: colorbar set_ticklabels - text properties not working +* :ghissue:`18191`: PostScript Type42 embedding is broken in various ways +* :ghissue:`11303`: Using fonttype 42 will make the produced PDF size considerably larger when the image has Chinese characters +* :ghissue:`20735`: The top level of the docs needs modification +* :ghissue:`20684`: make_keyword_only doesn't work for pyplot-wrapped methods +* :ghissue:`20635`: DOC: Document patch deprecation +* :ghissue:`17473`: Issue with appearance of RectangleSelector +* :ghissue:`20616`: Type 42 chars beyond BMP not displayed in PDF +* :ghissue:`20658`: MAINT: CircleCI build merged PRs +* :ghissue:`18312`: Add easily comparable version info to toplevel +* :ghissue:`20665`: interactive SpanSelector incorrectly forces axes limits to include 0 +* :ghissue:`20614`: Missing kerning in PDFs with Type 42 font +* :ghissue:`20640`: Column direction breaks label mode L for AxesGrid. +* :ghissue:`20581`: Change in custom norm colour map display +* :ghissue:`20595`: Triple and quadruple dot Mathtext accents don't stack or align. +* :ghissue:`19755`: Avoid showing a black background before the plot is ready with Qt5agg backend +* :ghissue:`10235`: Why not get the same clear image on a high-resolution screen? +* :ghissue:`20479`: ColorbarAxes is an imperfect proxy for the Axes passed to Colorbar +* :ghissue:`18965`: Figure options with qt backend breaks +* :ghissue:`19256`: New Styling for Sliders +* :ghissue:`14148`: zorder ignored in mplot3d +* :ghissue:`20523`: plot_directive is confused by include directives, part 2 (context option) +* :ghissue:`17860`: Plot directive may be confused by ``..include::`` +* :ghissue:`19431`: Tricontour documentation and examples should be updated in line with contour +* :ghissue:`20508`: rcParams['axes.autolimit_mode'] = 'round_numbers' is broken +* :ghissue:`20289`: Simplify font setting in usetex mode +* :ghissue:`20370`: Test Coverage for TextBox +* :ghissue:`20522`: Improve 'Writing ReST Pages' section on docs +* :ghissue:`19259`: Set legend title font properties +* :ghissue:`18305`: Support simple axes shares in subplot_mosaic +* :ghissue:`20049`: add legend.labelcolor "argument" to mplstyle stylesheet +* :ghissue:`20452`: Wrong/not useful error message when plotting incompatible x and y +* :ghissue:`20266`: "$$" can not be displayed by ax.text() +* :ghissue:`20517`: Wrong shape of Z in documentation of contour +* :ghissue:`19423`: Switch to pydata-sphinx-theme +* :ghissue:`20435`: Legend Text's ``axes`` attribute is ``None`` +* :ghissue:`20379`: Change name of variables in histogram example +* :ghissue:`20440`: Wrong text vertical position with LaTeX enabled +* :ghissue:`10042`: Inconsistent use of graphicx and color packages in LaTeX preambles +* :ghissue:`4482`: PGF Backend: "Dimension too large" error while processing log-scale plot +* :ghissue:`20324`: New colorbar doesn't handle norms without a scale properly... +* :ghissue:`17508`: Quadmesh.set_array should validate dimensions +* :ghissue:`20372`: Incorrect axes positioning in axes_grid.Grid with direction='column' +* :ghissue:`19419`: Dev version hard to check +* :ghissue:`17310`: Matplotlib git master version fails to pass serveral pytest's tests. +* :ghissue:`7742`: plot_date() after axhline() doesn't rescale axes +* :ghissue:`20322`: QuadMesh default for shading inadvertently changed. +* :ghissue:`9653`: SVG savefig + LaTeX extremely slow on macOS +* :ghissue:`20099`: ``fontset`` from ``mathtext`` throwing error after setting Text ``font=`` +* :ghissue:`18399`: How to get Quadmesh coordinates +* :ghissue:`15432`: Add support in matplotlib.pyplot.imshow for float16 +* :ghissue:`20298`: plt.quiver linestyle option doesn't work?..... +* :ghissue:`19075`: Qt backend's Figure options to support axis units +* :ghissue:`15039`: NonUniformImage wrong image when using large values for axis +* :ghissue:`18499`: Saving as a pdf ignores ``set_clip_path`` when there is more than one of them. +* :ghissue:`15600`: Grid disappear after pcolormesh apply +* :ghissue:`20080`: API docs currently include entries for class ``__dict__``, ``__module__``, ``__weakref__`` +* :ghissue:`20159`: Zoom in NavigationToolbar2Tk stops working after updating the canvas figure. +* :ghissue:`17007`: Computer Modern Glyph Error +* :ghissue:`19494`: Update azure ubuntu images to 18.04, or update texlive in CI +* :ghissue:`18841`: ScalarMappable should copy its input and allow non-arrays +* :ghissue:`20121`: Adding cmocean and CMasher to the colormaps tutorial +* :ghissue:`18154`: Deprecate plot_date() +* :ghissue:`7413`: Autoscaling has fundamental problems +* :ghissue:`19627`: Replace use of Python/C API with numpy::array_view in _tri.cpp and qhull_wrap.c +* :ghissue:`19111`: plot_directive errantly tries to run code +* :ghissue:`11007`: BUG: Plot directive fails if its content ends with a normal text line (sphinxext) +* :ghissue:`19929`: Selecting axes when customizing gives +* :ghissue:`19578`: bisect very hard with rcParam changes +* :ghissue:`19506`: Allow saving PDF files without a page group +* :ghissue:`19906`: symlog is not in scale setting +* :ghissue:`19568`: Contour lines are rendered incorrectly when closed loops +* :ghissue:`19890`: Should ArtistList implement ``__add__``? +* :ghissue:`14405`: ENH: Add HiDPI physical to logical pixel ratio property +* :ghissue:`17139`: errorbar doesn't follow plot order +* :ghissue:`18277`: Create new sphinx gallery page for "Chart Types" +* :ghissue:`15446`: the python script in Catalina dock icon display wrong +* :ghissue:`19848`: ValueError: Key backend: '' is not a valid value for backend +* :ghissue:`1622`: zorder is not respected by all parts of ``errorbar`` +* :ghissue:`17247`: Move towards making Axes.lines, Axes.patches, ... read-only views of a single child list. +* :ghissue:`19842`: UserWarning: "Trying to register the cmap '...' which already exists" is not very helpful. +* :ghissue:`7962`: pip interprets Matplotlib dev version as stable +* :ghissue:`19607`: Curves with same label not appearing in Figure options (only the last one) +* :ghissue:`17584`: NavigationToolbar2Tk behave unexpected when using it in with Tkinter Canvas +* :ghissue:`19838`: Unexpected behaviour of imshow default interpolation +* :ghissue:`7650`: anchored_artists don't support zorder argument +* :ghissue:`19687`: License doc cleanup +* :ghissue:`19635`: Multicursor updates to events for any axis +* :ghissue:`17967`: Document how to use mathtext to obtain unicode minus instead of dashes for negative numbers +* :ghissue:`8519`: Closed figures linger in memory +* :ghissue:`14175`: RFC: Allow users to force zorder in 3D plots +* :ghissue:`19464`: Quiver docs don't have a return section +* :ghissue:`18986`: fill_between issue with interpolation & NaN + + +Previous GitHub statistics +-------------------------- .. toctree:: diff --git a/doc/users/prev_whats_new/github_stats_3.4.3.rst b/doc/users/prev_whats_new/github_stats_3.4.3.rst new file mode 100644 index 000000000000..7c775dbbbc48 --- /dev/null +++ b/doc/users/prev_whats_new/github_stats_3.4.3.rst @@ -0,0 +1,133 @@ +.. _github-stats-3-4-3: + +GitHub statistics for Matpltlib 3.4.3 +===================================== + +GitHub statistics for 2021/05/08 - 2021/08/12 (tag: v3.4.2) + +These lists are automatically generated, and may be incomplete or contain duplicates. + +We closed 22 issues and merged 69 pull requests. +The full list can be seen `on GitHub `__ + +The following 20 authors contributed 95 commits. + +* Antony Lee +* David Stansby +* Diego +* Diego Leal Petrola +* Diego Petrola +* Elliott Sales de Andrade +* Eric Firing +* Frank Sauerburger +* Greg Lucas +* Ian Hunt-Isaak +* Jash Shah +* Jody Klymak +* Jouni K. Seppänen +* Michał Górny +* sandipanpanda +* Slava Ostroukh +* Thomas A Caswell +* Tim Hoffmann +* Viacheslav Ostroukh +* Xianxiang Li + +GitHub issues and pull requests: + +Pull Requests (69): + +* :ghpull:`20830`: Backport PR #20826 on branch v3.4.x (Fix clear of Axes that are shared.) +* :ghpull:`20826`: Fix clear of Axes that are shared. +* :ghpull:`20823`: Backport PR #20817 on branch v3.4.x (Make test_change_epoch more robust.) +* :ghpull:`20817`: Make test_change_epoch more robust. +* :ghpull:`20820`: Backport PR #20771 on branch v3.4.x (FIX: tickspacing for subfigures) +* :ghpull:`20771`: FIX: tickspacing for subfigures +* :ghpull:`20777`: FIX: dpi and scatter for subfigures now correct +* :ghpull:`20787`: Backport PR #20786 on branch v3.4.x (Fixed typo in _constrained_layout.py (#20782)) +* :ghpull:`20786`: Fixed typo in _constrained_layout.py (#20782) +* :ghpull:`20763`: Backport PR #20761 on branch v3.4.x (Fix suplabel autopos) +* :ghpull:`20761`: Fix suplabel autopos +* :ghpull:`20751`: Backport PR #20748 on branch v3.4.x (Ensure _static directory exists before copying CSS.) +* :ghpull:`20748`: Ensure _static directory exists before copying CSS. +* :ghpull:`20713`: Backport PR #20710 on branch v3.4.x (Fix tests with Inkscape 1.1.) +* :ghpull:`20687`: Enable PyPy wheels for v3.4.x +* :ghpull:`20710`: Fix tests with Inkscape 1.1. +* :ghpull:`20696`: Backport PR #20662 on branch v3.4.x (Don't forget to disable autoscaling after interactive zoom.) +* :ghpull:`20662`: Don't forget to disable autoscaling after interactive zoom. +* :ghpull:`20683`: Backport PR #20645 on branch v3.4.x (Fix leak if affine_transform is passed invalid vertices.) +* :ghpull:`20645`: Fix leak if affine_transform is passed invalid vertices. +* :ghpull:`20642`: Backport PR #20629 on branch v3.4.x (Add protection against out-of-bounds read in ttconv) +* :ghpull:`20643`: Backport PR #20597 on branch v3.4.x +* :ghpull:`20629`: Add protection against out-of-bounds read in ttconv +* :ghpull:`20597`: Fix TTF headers for type 42 stix font +* :ghpull:`20624`: Backport PR #20609 on branch v3.4.x (FIX: fix figbox deprecation) +* :ghpull:`20609`: FIX: fix figbox deprecation +* :ghpull:`20594`: Backport PR #20590 on branch v3.4.x (Fix class docstrings for Norms created from Scales.) +* :ghpull:`20590`: Fix class docstrings for Norms created from Scales. +* :ghpull:`20587`: Backport PR #20584: FIX: do not simplify path in LineCollection.get_s… +* :ghpull:`20584`: FIX: do not simplify path in LineCollection.get_segments +* :ghpull:`20578`: Backport PR #20511 on branch v3.4.x (Fix calls to np.ma.masked_where) +* :ghpull:`20511`: Fix calls to np.ma.masked_where +* :ghpull:`20568`: Backport PR #20565 on branch v3.4.x (FIX: PILLOW asarray bug) +* :ghpull:`20566`: Backout pillow=8.3.0 due to a crash +* :ghpull:`20565`: FIX: PILLOW asarray bug +* :ghpull:`20503`: Backport PR #20488 on branch v3.4.x (FIX: Include 0 when checking lognorm vmin) +* :ghpull:`20488`: FIX: Include 0 when checking lognorm vmin +* :ghpull:`20483`: Backport PR #20480 on branch v3.4.x (Fix str of empty polygon.) +* :ghpull:`20480`: Fix str of empty polygon. +* :ghpull:`20478`: Backport PR #20473 on branch v3.4.x (_GSConverter: handle stray 'GS' in output gracefully) +* :ghpull:`20473`: _GSConverter: handle stray 'GS' in output gracefully +* :ghpull:`20456`: Backport PR #20453 on branch v3.4.x (Remove ``Tick.apply_tickdir`` from 3.4 deprecations.) +* :ghpull:`20441`: Backport PR #20416 on branch v3.4.x (Fix missing Patch3DCollection._z_markers_idx) +* :ghpull:`20416`: Fix missing Patch3DCollection._z_markers_idx +* :ghpull:`20417`: Backport PR #20395 on branch v3.4.x (Pathing issue) +* :ghpull:`20395`: Pathing issue +* :ghpull:`20404`: Backport PR #20403: FIX: if we have already subclassed mixin class ju… +* :ghpull:`20403`: FIX: if we have already subclassed mixin class just return +* :ghpull:`20383`: Backport PR #20381 on branch v3.4.x (Prevent corrections and completions in search field) +* :ghpull:`20307`: Backport PR #20154 on branch v3.4.x (ci: Bump Ubuntu to 18.04 LTS.) +* :ghpull:`20285`: Backport PR #20275 on branch v3.4.x (Fix some examples that are skipped in docs build) +* :ghpull:`20275`: Fix some examples that are skipped in docs build +* :ghpull:`20267`: Backport PR #20265 on branch v3.4.x (Legend edgecolor face) +* :ghpull:`20265`: Legend edgecolor face +* :ghpull:`20260`: Fix legend edgecolor face +* :ghpull:`20259`: Backport PR #20248 on branch v3.4.x (Replace pgf image-streaming warning by error.) +* :ghpull:`20248`: Replace pgf image-streaming warning by error. +* :ghpull:`20241`: Backport PR #20212 on branch v3.4.x (Update span_selector.py) +* :ghpull:`20212`: Update span_selector.py +* :ghpull:`19980`: Tidy up deprecation messages in ``_subplots.py`` +* :ghpull:`20234`: Backport PR #20225 on branch v3.4.x (FIX: correctly handle ax.legend(..., legendcolor='none')) +* :ghpull:`20225`: FIX: correctly handle ax.legend(..., legendcolor='none') +* :ghpull:`20232`: Backport PR #19636 on branch v3.4.x (Correctly check inaxes for multicursor) +* :ghpull:`20228`: Backport PR #19849 on branch v3.4.x (FIX DateFormatter for month names when usetex=True) +* :ghpull:`19849`: FIX DateFormatter for month names when usetex=True +* :ghpull:`20154`: ci: Bump Ubuntu to 18.04 LTS. +* :ghpull:`20186`: Backport PR #19975 on branch v3.4.x (CI: remove workflow to push commits to macpython/matplotlib-wheels) +* :ghpull:`19975`: CI: remove workflow to push commits to macpython/matplotlib-wheels +* :ghpull:`19636`: Correctly check inaxes for multicursor + +Issues (22): + +* :ghissue:`20219`: Regression: undocumented change of behaviour in mpl 3.4.2 with axis ticks direction +* :ghissue:`20721`: ax.clear() adds extra ticks, un-hides shared-axis tick labels +* :ghissue:`20765`: savefig re-scales xticks and labels of some (but not all) subplots +* :ghissue:`20782`: [Bug]: _supylabel get_in_layout() typo? +* :ghissue:`20747`: [Bug]: _copy_css_file assumes that the _static directory already exists +* :ghissue:`20617`: tests fail with new inkscape +* :ghissue:`20519`: Toolbar zoom doesn't change autoscale status for versions 3.2.0 and above +* :ghissue:`20628`: Out-of-bounds read leads to crash or broken TrueType fonts +* :ghissue:`20612`: Broken EPS for Type 42 STIX +* :ghissue:`19982`: regression for 3.4.x - ax.figbox replacement incompatible to all version including 3.3.4 +* :ghissue:`19938`: unuseful deprecation warning figbox +* :ghissue:`16400`: Inconsistent behavior between Normalizers when input is Dataframe +* :ghissue:`20583`: Lost class descriptions since 3.4 docs +* :ghissue:`20551`: set_segments(get_segments()) makes lines coarse +* :ghissue:`20560`: test_png is failing +* :ghissue:`20487`: test_huge_range_log is failing... +* :ghissue:`20472`: test_backend_pgf.py::test_xelatex[pdf] - ValueError: invalid literal for int() with base 10: b'ate missing from Resources. [...] +* :ghissue:`20328`: Path.intersects_path sometimes returns incorrect values +* :ghissue:`20258`: Using edgecolors='face' with stackplot causes value error when using plt.legend() +* :ghissue:`20200`: examples/widgets/span_selector.py is brittle +* :ghissue:`20231`: MultiCursor bug +* :ghissue:`19836`: Month names not set as text when using usetex From 83c1a5104bf20577370835c24faf4c1b800c3961 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 24 Aug 2021 02:00:08 -0400 Subject: [PATCH 046/270] REL: v3.5.0b1 First beta release for 3.5.0. From a2a729155db83d109fa6b542090150337c936dd8 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 24 Aug 2021 02:01:04 -0400 Subject: [PATCH 047/270] BLD: bump branch away from tag So the tarballs from GitHub are stable From 4bac8dcdb1df5281bf295eafecf005988f283e8b Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 24 Aug 2021 15:40:30 +0200 Subject: [PATCH 048/270] Backport PR #20884: Ensure full environment is passed to headless test. --- lib/matplotlib/tests/test_backends_interactive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_backends_interactive.py b/lib/matplotlib/tests/test_backends_interactive.py index 36ec3bfc83c3..a1f27fea577a 100644 --- a/lib/matplotlib/tests/test_backends_interactive.py +++ b/lib/matplotlib/tests/test_backends_interactive.py @@ -301,7 +301,7 @@ def test_lazy_linux_headless(): """ proc = subprocess.run([sys.executable, "-c", test_script], - env={"MPLBACKEND": ""}) + env={**os.environ, "MPLBACKEND": ""}) if proc.returncode: pytest.fail("The subprocess returned with non-zero exit status " f"{proc.returncode}.") From 4b3d1d897e0db994a123c7464f6a0d3bc3bb2fa3 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 24 Aug 2021 14:24:15 -0400 Subject: [PATCH 049/270] Backport PR #20864: Add Python 3.10 testing. --- .github/workflows/tests.yml | 5 ++++ lib/matplotlib/backends/backend_qt.py | 24 +++++++++---------- .../backends/qt_editor/_formlayout.py | 10 +++++--- lib/matplotlib/testing/conftest.py | 3 +++ lib/matplotlib/tests/test_sphinxext.py | 3 ++- setup.py | 1 + 6 files changed, 30 insertions(+), 16 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 84c73e3e3289..b4a1bbbf35fa 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,6 +41,11 @@ jobs: python-version: 3.9 extra-requirements: '-r requirements/testing/extra.txt' XVFB_RUN: xvfb-run -a + - os: ubuntu-20.04 + python-version: '3.10-dev' + # Re-add this when extra dependencies have wheels. + # extra-requirements: '-r requirements/testing/extra.txt' + XVFB_RUN: xvfb-run -a - os: macos-latest python-version: 3.8 XVFB_RUN: "" diff --git a/lib/matplotlib/backends/backend_qt.py b/lib/matplotlib/backends/backend_qt.py index bfbdf62fd27b..5b74176befff 100644 --- a/lib/matplotlib/backends/backend_qt.py +++ b/lib/matplotlib/backends/backend_qt.py @@ -630,9 +630,9 @@ class NavigationToolbar2QT(NavigationToolbar2, QtWidgets.QToolBar): def __init__(self, canvas, parent, coordinates=True): """coordinates: should we show the coordinates on the right?""" QtWidgets.QToolBar.__init__(self, parent) - self.setAllowedAreas( - _enum("QtCore.Qt.ToolBarArea").TopToolBarArea - | _enum("QtCore.Qt.ToolBarArea").TopToolBarArea) + self.setAllowedAreas(QtCore.Qt.ToolBarArea( + _to_int(_enum("QtCore.Qt.ToolBarArea").TopToolBarArea) | + _to_int(_enum("QtCore.Qt.ToolBarArea").BottomToolBarArea))) self.coordinates = coordinates self._actions = {} # mapping of toolitem method names to QActions. @@ -655,9 +655,9 @@ def __init__(self, canvas, parent, coordinates=True): # will resize this label instead of the buttons. if self.coordinates: self.locLabel = QtWidgets.QLabel("", self) - self.locLabel.setAlignment( - _enum("QtCore.Qt.AlignmentFlag").AlignRight - | _enum("QtCore.Qt.AlignmentFlag").AlignVCenter) + self.locLabel.setAlignment(QtCore.Qt.AlignmentFlag( + _to_int(_enum("QtCore.Qt.AlignmentFlag").AlignRight) | + _to_int(_enum("QtCore.Qt.AlignmentFlag").AlignVCenter))) self.locLabel.setSizePolicy(QtWidgets.QSizePolicy( _enum("QtWidgets.QSizePolicy.Policy").Expanding, _enum("QtWidgets.QSizePolicy.Policy").Ignored, @@ -887,13 +887,13 @@ class ToolbarQt(ToolContainerBase, QtWidgets.QToolBar): def __init__(self, toolmanager, parent): ToolContainerBase.__init__(self, toolmanager) QtWidgets.QToolBar.__init__(self, parent) - self.setAllowedAreas( - _enum("QtCore.Qt.ToolBarArea").TopToolBarArea - | _enum("QtCore.Qt.ToolBarArea").TopToolBarArea) + self.setAllowedAreas(QtCore.Qt.ToolBarArea( + _to_int(_enum("QtCore.Qt.ToolBarArea").TopToolBarArea) | + _to_int(_enum("QtCore.Qt.ToolBarArea").BottomToolBarArea))) message_label = QtWidgets.QLabel("") - message_label.setAlignment( - _enum("QtCore.Qt.AlignmentFlag").AlignRight - | _enum("QtCore.Qt.AlignmentFlag").AlignVCenter) + message_label.setAlignment(QtCore.Qt.AlignmentFlag( + _to_int(_enum("QtCore.Qt.AlignmentFlag").AlignRight) | + _to_int(_enum("QtCore.Qt.AlignmentFlag").AlignVCenter))) message_label.setSizePolicy(QtWidgets.QSizePolicy( _enum("QtWidgets.QSizePolicy.Policy").Expanding, _enum("QtWidgets.QSizePolicy.Policy").Ignored, diff --git a/lib/matplotlib/backends/qt_editor/_formlayout.py b/lib/matplotlib/backends/qt_editor/_formlayout.py index 9ca8963e2b23..8c3127bdbeee 100644 --- a/lib/matplotlib/backends/qt_editor/_formlayout.py +++ b/lib/matplotlib/backends/qt_editor/_formlayout.py @@ -48,7 +48,7 @@ from matplotlib import _api, colors as mcolors from .. import qt_compat -from ..qt_compat import QtGui, QtWidgets, QtCore, _enum +from ..qt_compat import QtGui, QtWidgets, QtCore, _enum, _to_int _log = logging.getLogger(__name__) @@ -441,8 +441,12 @@ def __init__(self, data, title="", comment="", # Button box self.bbox = bbox = QtWidgets.QDialogButtonBox( - _enum("QtWidgets.QDialogButtonBox.StandardButton").Ok - | _enum("QtWidgets.QDialogButtonBox.StandardButton").Cancel) + QtWidgets.QDialogButtonBox.StandardButton( + _to_int( + _enum("QtWidgets.QDialogButtonBox.StandardButton").Ok) | + _to_int( + _enum("QtWidgets.QDialogButtonBox.StandardButton").Cancel) + )) self.formwidget.update_buttons.connect(self.update_buttons) if self.apply_callback is not None: apply_btn = bbox.addButton( diff --git a/lib/matplotlib/testing/conftest.py b/lib/matplotlib/testing/conftest.py index 678825f4a89d..996bfbefef80 100644 --- a/lib/matplotlib/testing/conftest.py +++ b/lib/matplotlib/testing/conftest.py @@ -21,6 +21,9 @@ def pytest_configure(config): ("filterwarnings", "error"), ("filterwarnings", "ignore:.*The py23 module has been deprecated:DeprecationWarning"), + ("filterwarnings", + r"ignore:DynamicImporter.find_spec\(\) not found; " + r"falling back to find_module\(\):ImportWarning"), ]: config.addinivalue_line(key, value) diff --git a/lib/matplotlib/tests/test_sphinxext.py b/lib/matplotlib/tests/test_sphinxext.py index 02d56aeedc55..f71c6e32018a 100644 --- a/lib/matplotlib/tests/test_sphinxext.py +++ b/lib/matplotlib/tests/test_sphinxext.py @@ -10,7 +10,8 @@ import pytest -pytest.importorskip('sphinx') +pytest.importorskip('sphinx', + minversion=None if sys.version_info < (3, 10) else '4.1.3') def test_tinypages(tmpdir): diff --git a/setup.py b/setup.py index d3c79e9ad1f6..e1a2b261ddbe 100644 --- a/setup.py +++ b/setup.py @@ -299,6 +299,7 @@ def make_release_tree(self, base_dir, files): 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', 'Topic :: Scientific/Engineering :: Visualization', ], From 3d180e74ec3ca2f48047e22c8195dcaa49e4ae15 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 24 Aug 2021 22:46:30 +0200 Subject: [PATCH 050/270] Backport PR #20693: Fix setting artists properties of selectors --- .../deprecations/20693-EP.rst | 4 + .../setting_artists_properties_selector.rst | 5 + lib/matplotlib/tests/test_widgets.py | 97 +++++- lib/matplotlib/widgets.py | 295 +++++++++++------- 4 files changed, 280 insertions(+), 121 deletions(-) create mode 100644 doc/api/next_api_changes/deprecations/20693-EP.rst create mode 100644 doc/users/next_whats_new/setting_artists_properties_selector.rst diff --git a/doc/api/next_api_changes/deprecations/20693-EP.rst b/doc/api/next_api_changes/deprecations/20693-EP.rst new file mode 100644 index 000000000000..7d63e27fdd4f --- /dev/null +++ b/doc/api/next_api_changes/deprecations/20693-EP.rst @@ -0,0 +1,4 @@ +PolygonSelector +^^^^^^^^^^^^^^^ +The *line* attribute is deprecated. If you want to change the selector +artist properties, use the ``set_props`` or ``set_handle_props`` methods. diff --git a/doc/users/next_whats_new/setting_artists_properties_selector.rst b/doc/users/next_whats_new/setting_artists_properties_selector.rst new file mode 100644 index 000000000000..dbf1a4333f0e --- /dev/null +++ b/doc/users/next_whats_new/setting_artists_properties_selector.rst @@ -0,0 +1,5 @@ +Setting artist properties of selectors +-------------------------------------- + +The artist properties of selectors can be changed using the ``set_props`` and +``set_handle_props`` methods. diff --git a/lib/matplotlib/tests/test_widgets.py b/lib/matplotlib/tests/test_widgets.py index e6df7cfb68b8..36e2209c7fd2 100644 --- a/lib/matplotlib/tests/test_widgets.py +++ b/lib/matplotlib/tests/test_widgets.py @@ -90,6 +90,34 @@ def onselect(epress, erelease): assert tool.center == (180, 190) +def test_rectangle_selector_set_props_handle_props(): + ax = get_ax() + + def onselect(epress, erelease): + pass + + tool = widgets.RectangleSelector(ax, onselect, interactive=True, + props=dict(facecolor='b', alpha=0.2), + handle_props=dict(alpha=0.5)) + # Create rectangle + do_event(tool, 'press', xdata=0, ydata=10, button=1) + do_event(tool, 'onmove', xdata=100, ydata=120, button=1) + do_event(tool, 'release', xdata=100, ydata=120, button=1) + + artist = tool._selection_artist + assert artist.get_facecolor() == mcolors.to_rgba('b', alpha=0.2) + tool.set_props(facecolor='r', alpha=0.3) + assert artist.get_facecolor() == mcolors.to_rgba('r', alpha=0.3) + + for artist in tool._handles_artists: + assert artist.get_markeredgecolor() == 'black' + assert artist.get_alpha() == 0.5 + tool.set_handle_props(markeredgecolor='r', alpha=0.3) + for artist in tool._handles_artists: + assert artist.get_markeredgecolor() == 'r' + assert artist.get_alpha() == 0.3 + + def test_ellipse(): """For ellipse, test out the key modifiers""" ax = get_ax() @@ -185,9 +213,9 @@ def onselect(epress, erelease): # Check that marker_props worked. assert mcolors.same_color( - tool._corner_handles.artist.get_markerfacecolor(), 'r') + tool._corner_handles.artists[0].get_markerfacecolor(), 'r') assert mcolors.same_color( - tool._corner_handles.artist.get_markeredgecolor(), 'b') + tool._corner_handles.artists[0].get_markeredgecolor(), 'b') @pytest.mark.parametrize('interactive', [True, False]) @@ -404,6 +432,34 @@ def onselect(*args): tool.direction = 'invalid_string' +def test_span_selector_set_props_handle_props(): + ax = get_ax() + + def onselect(epress, erelease): + pass + + tool = widgets.SpanSelector(ax, onselect, 'horizontal', interactive=True, + props=dict(facecolor='b', alpha=0.2), + handle_props=dict(alpha=0.5)) + # Create rectangle + do_event(tool, 'press', xdata=0, ydata=10, button=1) + do_event(tool, 'onmove', xdata=100, ydata=120, button=1) + do_event(tool, 'release', xdata=100, ydata=120, button=1) + + artist = tool._selection_artist + assert artist.get_facecolor() == mcolors.to_rgba('b', alpha=0.2) + tool.set_props(facecolor='r', alpha=0.3) + assert artist.get_facecolor() == mcolors.to_rgba('r', alpha=0.3) + + for artist in tool._handles_artists: + assert artist.get_color() == 'b' + assert artist.get_alpha() == 0.5 + tool.set_handle_props(color='r', alpha=0.3) + for artist in tool._handles_artists: + assert artist.get_color() == 'r' + assert artist.get_alpha() == 0.3 + + def test_tool_line_handle(): ax = get_ax() @@ -781,6 +837,43 @@ def test_polygon_selector(): check_polygon_selector(event_sequence, expected_result, 1) +def test_polygon_selector_set_props_handle_props(): + ax = get_ax() + + ax._selections_count = 0 + + def onselect(vertices): + ax._selections_count += 1 + ax._current_result = vertices + + tool = widgets.PolygonSelector(ax, onselect, + props=dict(color='b', alpha=0.2), + handle_props=dict(alpha=0.5)) + + event_sequence = (polygon_place_vertex(50, 50) + + polygon_place_vertex(150, 50) + + polygon_place_vertex(50, 150) + + polygon_place_vertex(50, 50)) + + for (etype, event_args) in event_sequence: + do_event(tool, etype, **event_args) + + artist = tool._selection_artist + assert artist.get_color() == 'b' + assert artist.get_alpha() == 0.2 + tool.set_props(color='r', alpha=0.3) + assert artist.get_color() == 'r' + assert artist.get_alpha() == 0.3 + + for artist in tool._handles_artists: + assert artist.get_color() == 'b' + assert artist.get_alpha() == 0.5 + tool.set_handle_props(color='r', alpha=0.3) + for artist in tool._handles_artists: + assert artist.get_color() == 'r' + assert artist.get_alpha() == 0.3 + + @pytest.mark.parametrize( "horizOn, vertOn", [(True, True), (True, False), (False, True)], diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index 2b8b1d4a8f16..48c096032017 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -1800,7 +1800,6 @@ def __init__(self, ax, onselect, useblit=False, button=None, self.state_modifier_keys.update(state_modifier_keys or {}) self.background = None - self.artists = [] if isinstance(button, Integral): self.validButtons = [button] @@ -2009,6 +2008,41 @@ def set_visible(self, visible): for artist in self.artists: artist.set_visible(visible) + @property + def artists(self): + """Tuple of the artists of the selector.""" + handles_artists = getattr(self, '_handles_artists', ()) + return (self._selection_artist,) + handles_artists + + def set_props(self, **props): + """ + Set the properties of the selector artist. See the `props` argument + in the selector docstring to know which properties are supported. + """ + artist = self._selection_artist + props = cbook.normalize_kwargs(props, artist) + artist.set(**props) + if self.useblit: + self.update() + self._props.update(props) + + def set_handle_props(self, **handle_props): + """ + Set the properties of the handles selector artist. See the + `handle_props` argument in the selector docstring to know which + properties are supported. + """ + if not hasattr(self, '_handles_artists'): + raise NotImplementedError("This selector doesn't have handles.") + + artist = self._handles_artists[0] + handle_props = cbook.normalize_kwargs(handle_props, artist) + for handle in self._handles_artists: + handle.set(**handle_props) + if self.useblit: + self.update() + self._handle_props.update(handle_props) + class SpanSelector(_SelectorWidget): """ @@ -2114,7 +2148,6 @@ def __init__(self, ax, onselect, direction, minspan=0, useblit=False, self.direction = direction - self._rect = None self.visible = True self._extents_on_press = None @@ -2128,29 +2161,31 @@ def __init__(self, ax, onselect, direction, minspan=0, useblit=False, self.grab_range = grab_range self._interactive = interactive + self._edge_handles = None self.drag_from_anywhere = drag_from_anywhere self.ignore_event_outside = ignore_event_outside # Reset canvas so that `new_axes` connects events. self.canvas = None - self.artists = [] self.new_axes(ax) # Setup handles - handle_props = { + self._handle_props = { 'color': props.get('facecolor', 'r'), - **cbook.normalize_kwargs(handle_props, Line2D._alias_map)} + **cbook.normalize_kwargs(handle_props, Line2D)} if self._interactive: self._edge_order = ['min', 'max'] - self._setup_edge_handle(handle_props) + self._setup_edge_handles(self._handle_props) self._active_handle = None # prev attribute is deprecated but we still need to maintain it self._prev = (0, 0) - rect = _api.deprecate_privatize_attribute("3.5") + rect = _api.deprecated("3.5")( + property(lambda self: self._selection_artist) + ) rectprops = _api.deprecated("3.5")( property(lambda self: self._props) @@ -2185,18 +2220,15 @@ def new_axes(self, ax): else: trans = ax.get_yaxis_transform() w, h = 1, 0 - self._rect = Rectangle((0, 0), w, h, - transform=trans, - visible=False, - **self._props) - - self.ax.add_patch(self._rect) - if len(self.artists) > 0: - self.artists[0] = self._rect - else: - self.artists.append(self._rect) + rect_artist = Rectangle((0, 0), w, h, + transform=trans, + visible=False, + **self._props) + + self.ax.add_patch(rect_artist) + self._selection_artist = rect_artist - def _setup_edge_handle(self, props): + def _setup_edge_handles(self, props): # Define initial position using the axis bounds to keep the same bounds if self.direction == 'horizontal': positions = self.ax.get_xbound() @@ -2206,7 +2238,13 @@ def _setup_edge_handle(self, props): direction=self.direction, line_props=props, useblit=self.useblit) - self.artists.extend([line for line in self._edge_handles.artists]) + + @property + def _handles_artists(self): + if self._edge_handles is not None: + return self._edge_handles.artists + else: + return () def _set_cursor(self, enabled): """Update the canvas cursor based on direction of the selector.""" @@ -2228,7 +2266,7 @@ def connect_default_events(self): def _press(self, event): """Button press event handler.""" self._set_cursor(True) - if self._interactive and self._rect.get_visible(): + if self._interactive and self._selection_artist.get_visible(): self._set_active_handle(event) else: self._active_handle = None @@ -2268,15 +2306,13 @@ def direction(self, direction): _api.check_in_list(['horizontal', 'vertical'], direction=direction) if hasattr(self, '_direction') and direction != self._direction: # remove previous artists - self._rect.remove() + self._selection_artist.remove() if self._interactive: self._edge_handles.remove() - for artist in self._edge_handles.artists: - self.artists.remove(artist) self._direction = direction self.new_axes(self.ax) if self._interactive: - self._setup_edge_handle(self._edge_handles._line_props) + self._setup_edge_handles(self._handle_props) else: self._direction = direction @@ -2287,7 +2323,7 @@ def _release(self, event): self._pressv = None if not self._interactive: - self._rect.set_visible(False) + self._selection_artist.set_visible(False) if (self._active_handle is None and self._selection_completed and self.ignore_event_outside): @@ -2375,11 +2411,11 @@ def _draw_shape(self, vmin, vmax): if vmin > vmax: vmin, vmax = vmax, vmin if self.direction == 'horizontal': - self._rect.set_x(vmin) - self._rect.set_width(vmax - vmin) + self._selection_artist.set_x(vmin) + self._selection_artist.set_width(vmax - vmin) else: - self._rect.set_y(vmin) - self._rect.set_height(vmax - vmin) + self._selection_artist.set_y(vmin) + self._selection_artist.set_height(vmax - vmin) def _set_active_handle(self, event): """Set active handle based on the location of the mouse event.""" @@ -2409,17 +2445,17 @@ def _set_active_handle(self, event): def _contains(self, event): """Return True if event is within the patch.""" - return self._rect.contains(event, radius=0)[0] + return self._selection_artist.contains(event, radius=0)[0] @property def extents(self): """Return extents of the span selector.""" if self.direction == 'horizontal': - vmin = self._rect.get_x() - vmax = vmin + self._rect.get_width() + vmin = self._selection_artist.get_x() + vmax = vmin + self._selection_artist.get_width() else: - vmin = self._rect.get_y() - vmax = vmin + self._rect.get_height() + vmin = self._selection_artist.get_y() + vmax = vmin + self._selection_artist.get_height() return vmin, vmax @extents.setter @@ -2464,9 +2500,12 @@ def __init__(self, ax, positions, direction, line_props=None, line_props.update({'visible': False, 'animated': useblit}) line_fun = ax.axvline if self.direction == 'horizontal' else ax.axhline - self._line_props = line_props - self.artists = [line_fun(p, **line_props) for p in positions] + self._artists = [line_fun(p, **line_props) for p in positions] + + @property + def artists(self): + return tuple(self._artists) @property def positions(self): @@ -2505,7 +2544,7 @@ def set_animated(self, value): def remove(self): """Remove the handles artist from the figure.""" - for artist in self.artists: + for artist in self._artists: artist.remove() def closest(self, x, y): @@ -2564,7 +2603,6 @@ def __init__(self, ax, x, y, marker='o', marker_props=None, useblit=True): **cbook.normalize_kwargs(marker_props, Line2D._alias_map)} self._markers = Line2D(x, y, animated=useblit, **props) self.ax.add_line(self._markers) - self.artist = self._markers @property def x(self): @@ -2574,6 +2612,10 @@ def x(self): def y(self): return self._markers.get_ydata() + @property + def artists(self): + return (self._markers, ) + def set_data(self, pts, y=None): """Set x and y positions of handles.""" if y is not None: @@ -2726,7 +2768,6 @@ def __init__(self, ax, onselect, drawtype='box', super().__init__(ax, onselect, useblit=useblit, button=button, state_modifier_keys=state_modifier_keys) - self._to_draw = None self.visible = True self._interactive = interactive self.drag_from_anywhere = drag_from_anywhere @@ -2746,11 +2787,11 @@ def __init__(self, ax, onselect, drawtype='box', props = dict(facecolor='red', edgecolor='black', alpha=0.2, fill=True) props['animated'] = self.useblit - _props = props - self.visible = _props.pop('visible', self.visible) - self._to_draw = self._shape_klass((0, 0), 0, 1, visible=False, - **_props) - self.ax.add_patch(self._to_draw) + self.visible = props.pop('visible', self.visible) + self._props = props + to_draw = self._shape_klass((0, 0), 0, 1, visible=False, + **self._props) + self.ax.add_patch(to_draw) if drawtype == 'line': _api.warn_deprecated( "3.5", message="Support for drawtype='line' is deprecated " @@ -2760,10 +2801,11 @@ def __init__(self, ax, onselect, drawtype='box', lineprops = dict(color='black', linestyle='-', linewidth=2, alpha=0.5) lineprops['animated'] = self.useblit - self.lineprops = lineprops - self._to_draw = Line2D([0, 0], [0, 0], visible=False, - **self.lineprops) - self.ax.add_line(self._to_draw) + self._props = lineprops + to_draw = Line2D([0, 0], [0, 0], visible=False, **self._props) + self.ax.add_line(to_draw) + + self._selection_artist = to_draw self.minspanx = minspanx self.minspany = minspany @@ -2774,39 +2816,36 @@ def __init__(self, ax, onselect, drawtype='box', self.grab_range = grab_range - handle_props = { - 'markeredgecolor': (props or {}).get('edgecolor', 'black'), - **cbook.normalize_kwargs(handle_props, Line2D._alias_map)} - - self._corner_order = ['NW', 'NE', 'SE', 'SW'] - xc, yc = self.corners - self._corner_handles = ToolHandles(self.ax, xc, yc, - marker_props=handle_props, - useblit=self.useblit) - - self._edge_order = ['W', 'N', 'E', 'S'] - xe, ye = self.edge_centers - self._edge_handles = ToolHandles(self.ax, xe, ye, marker='s', - marker_props=handle_props, - useblit=self.useblit) - - xc, yc = self.center - self._center_handle = ToolHandles(self.ax, [xc], [yc], marker='s', - marker_props=handle_props, - useblit=self.useblit) - - self._active_handle = None + if self._interactive: + self._handle_props = { + 'markeredgecolor': (self._props or {}).get( + 'edgecolor', 'black'), + **cbook.normalize_kwargs(handle_props, Line2D)} + + self._corner_order = ['NW', 'NE', 'SE', 'SW'] + xc, yc = self.corners + self._corner_handles = ToolHandles(self.ax, xc, yc, + marker_props=self._handle_props, + useblit=self.useblit) + + self._edge_order = ['W', 'N', 'E', 'S'] + xe, ye = self.edge_centers + self._edge_handles = ToolHandles(self.ax, xe, ye, marker='s', + marker_props=self._handle_props, + useblit=self.useblit) - self.artists = [self._to_draw, self._center_handle.artist, - self._corner_handles.artist, - self._edge_handles.artist] + xc, yc = self.center + self._center_handle = ToolHandles(self.ax, [xc], [yc], marker='s', + marker_props=self._handle_props, + useblit=self.useblit) - if not self._interactive: - self.artists = [self._to_draw] + self._active_handle = None self._extents_on_press = None - to_draw = _api.deprecate_privatize_attribute("3.5") + to_draw = _api.deprecated("3.5")( + property(lambda self: self._selection_artist) + ) drawtype = _api.deprecate_privatize_attribute("3.5") @@ -2818,11 +2857,16 @@ def __init__(self, ax, onselect, drawtype='box', property(lambda self: self.grab_range, lambda self, value: setattr(self, "grab_range", value))) + @property + def _handles_artists(self): + return (*self._center_handle.artists, *self._corner_handles.artists, + *self._edge_handles.artists) + def _press(self, event): """Button press event handler.""" # make the drawn box/line visible get the click-coordinates, # button, ... - if self._interactive and self._to_draw.get_visible(): + if self._interactive and self._selection_artist.get_visible(): self._set_active_handle(event) else: self._active_handle = None @@ -2845,7 +2889,7 @@ def _press(self, event): def _release(self, event): """Button release event handler.""" if not self._interactive: - self._to_draw.set_visible(False) + self._selection_artist.set_visible(False) if (self._active_handle is None and self._selection_completed and self.ignore_event_outside): @@ -2955,13 +2999,13 @@ def _onmove(self, event): @property def _rect_bbox(self): if self._drawtype == 'box': - x0 = self._to_draw.get_x() - y0 = self._to_draw.get_y() - width = self._to_draw.get_width() - height = self._to_draw.get_height() + x0 = self._selection_artist.get_x() + y0 = self._selection_artist.get_y() + width = self._selection_artist.get_width() + height = self._selection_artist.get_height() return x0, y0, width, height else: - x, y = self._to_draw.get_data() + x, y = self._selection_artist.get_data() x0, x1 = min(x), max(x) y0, y1 = min(y), max(y) return x0, y0, x1 - x0, y1 - y0 @@ -3002,10 +3046,11 @@ def extents(self): def extents(self, extents): # Update displayed shape self._draw_shape(extents) - # Update displayed handles - self._corner_handles.set_data(*self.corners) - self._edge_handles.set_data(*self.edge_centers) - self._center_handle.set_data(*self.center) + if self._interactive: + # Update displayed handles + self._corner_handles.set_data(*self.corners) + self._edge_handles.set_data(*self.edge_centers) + self._center_handle.set_data(*self.center) self.set_visible(self.visible) self.update() @@ -3024,13 +3069,13 @@ def _draw_shape(self, extents): ymax = min(ymax, ylim[1]) if self._drawtype == 'box': - self._to_draw.set_x(xmin) - self._to_draw.set_y(ymin) - self._to_draw.set_width(xmax - xmin) - self._to_draw.set_height(ymax - ymin) + self._selection_artist.set_x(xmin) + self._selection_artist.set_y(ymin) + self._selection_artist.set_width(xmax - xmin) + self._selection_artist.set_height(ymax - ymin) elif self._drawtype == 'line': - self._to_draw.set_data([xmin, xmax], [ymin, ymax]) + self._selection_artist.set_data([xmin, xmax], [ymin, ymax]) def _set_active_handle(self, event): """Set active handle based on the location of the mouse event.""" @@ -3074,7 +3119,7 @@ def _set_active_handle(self, event): def _contains(self, event): """Return True if event is within the patch.""" - return self._to_draw.contains(event, radius=0)[0] + return self._selection_artist.contains(event, radius=0)[0] @property def geometry(self): @@ -3085,12 +3130,12 @@ def geometry(self): of the four corners of the rectangle starting and ending in the top left corner. """ - if hasattr(self._to_draw, 'get_verts'): + if hasattr(self._selection_artist, 'get_verts'): xfm = self.ax.transData.inverted() - y, x = xfm.transform(self._to_draw.get_verts()).T + y, x = xfm.transform(self._selection_artist.get_verts()).T return np.array([x, y]) else: - return np.array(self._to_draw.get_data()) + return np.array(self._selection_artist.get_data()) @docstring.Substitution(_RECTANGLESELECTOR_PARAMETERS_DOCSTRING.replace( @@ -3124,24 +3169,24 @@ def _draw_shape(self, extents): b = (ymax - ymin) / 2. if self._drawtype == 'box': - self._to_draw.center = center - self._to_draw.width = 2 * a - self._to_draw.height = 2 * b + self._selection_artist.center = center + self._selection_artist.width = 2 * a + self._selection_artist.height = 2 * b else: rad = np.deg2rad(np.arange(31) * 12) x = a * np.cos(rad) + center[0] y = b * np.sin(rad) + center[1] - self._to_draw.set_data(x, y) + self._selection_artist.set_data(x, y) @property def _rect_bbox(self): if self._drawtype == 'box': - x, y = self._to_draw.center - width = self._to_draw.width - height = self._to_draw.height + x, y = self._selection_artist.center + width = self._selection_artist.width + height = self._selection_artist.height return x - width / 2., y - height / 2., width, height else: - x, y = self._to_draw.get_data() + x, y = self._selection_artist.get_data() x0, x1 = min(x), max(x) y0, y1 = min(y), max(y) return x0, y0, x1 - x0, y1 - y0 @@ -3196,9 +3241,9 @@ def __init__(self, ax, onselect=None, useblit=True, props=None, props = dict() # self.useblit may be != useblit, if the canvas doesn't support blit. props.update(animated=self.useblit, visible=False) - self.line = Line2D([], [], **props) - self.ax.add_line(self.line) - self.artists = [self.line] + line = Line2D([], [], **props) + self.ax.add_line(line) + self._selection_artist = line @_api.deprecated("3.5", alternative="press") def onpress(self, event): @@ -3206,7 +3251,7 @@ def onpress(self, event): def _press(self, event): self.verts = [self._get_data(event)] - self.line.set_visible(True) + self._selection_artist.set_visible(True) @_api.deprecated("3.5", alternative="release") def onrelease(self, event): @@ -3216,15 +3261,16 @@ def _release(self, event): if self.verts is not None: self.verts.append(self._get_data(event)) self.onselect(self.verts) - self.line.set_data([[], []]) - self.line.set_visible(False) + self._selection_artist.set_data([[], []]) + self._selection_artist.set_visible(False) self.verts = None def _onmove(self, event): if self.verts is None: return self.verts.append(self._get_data(event)) - self.line.set_data(list(zip(*self.verts))) + self._selection_artist.set_data(list(zip(*self.verts))) + self.update() @@ -3312,22 +3358,28 @@ def __init__(self, ax, onselect, useblit=False, if props is None: props = dict(color='k', linestyle='-', linewidth=2, alpha=0.5) props['animated'] = self.useblit - self.line = Line2D(self._xs, self._ys, **props) - self.ax.add_line(self.line) + self._props = props + line = Line2D(self._xs, self._ys, **self._props) + self.ax.add_line(line) + self._selection_artist = line if handle_props is None: handle_props = dict(markeredgecolor='k', - markerfacecolor=props.get('color', 'k')) + markerfacecolor=self._props.get('color', 'k')) + self._handle_props = handle_props self._polygon_handles = ToolHandles(self.ax, self._xs, self._ys, useblit=self.useblit, - marker_props=handle_props) + marker_props=self._handle_props) self._active_handle_idx = -1 self.grab_range = grab_range - self.artists = [self.line, self._polygon_handles.artist] self.set_visible(True) + line = _api.deprecated("3.5")( + property(lambda self: self._selection_artist) + ) + vertex_select_radius = _api.deprecated("3.5", name="vertex_select_radius", alternative="grab_range")( property(lambda self: self.grab_range, @@ -3338,6 +3390,10 @@ def __init__(self, ax, onselect, useblit=False, def _nverts(self): return len(self._xs) + @property + def _handles_artists(self): + return self._polygon_handles.artists + def _remove_vertex(self, i): """Remove vertex with index i.""" if (self._nverts > 2 and @@ -3437,8 +3493,9 @@ def _onmove(self, event): # Position pending vertex. else: # Calculate distance to the start vertex. - x0, y0 = self.line.get_transform().transform((self._xs[0], - self._ys[0])) + x0, y0 = self._selection_artist.get_transform().transform( + (self._xs[0], self._ys[0]) + ) v0_dist = np.hypot(x0 - event.x, y0 - event.y) # Lock on to the start vertex if near it and ready to complete. if len(self._xs) > 3 and v0_dist < self.grab_range: @@ -3478,7 +3535,7 @@ def _on_key_release(self, event): def _draw_polygon(self): """Redraw the polygon based on the new vertex positions.""" - self.line.set_data(self._xs, self._ys) + self._selection_artist.set_data(self._xs, self._ys) # Only show one tool handle at the start and end vertex of the polygon # if the polygon is completed or the user is locked on to the start # vertex. From e14d74127a63f8591ee6f45624f81c9d74bb63c3 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 24 Aug 2021 18:30:52 -0400 Subject: [PATCH 051/270] Fix typos in 3.5 GitHub statistics page. --- doc/users/github_stats.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst index 8f92b587a2dc..defa8b5a1175 100644 --- a/doc/users/github_stats.rst +++ b/doc/users/github_stats.rst @@ -280,7 +280,7 @@ Pull Requests (532): * :ghpull:`20374`: Check modification times of included RST files * :ghpull:`20569`: Better signature and docstring for Artist.set * :ghpull:`20574`: Add tricontourf hatching example -* :ghpull:`18666`: Remove unused/deprecated AVConv_ classes +* :ghpull:`18666`: Remove unused/deprecated ``AVConv`` classes * :ghpull:`20514`: Fix example for rcParams['autolimit_mode'] * :ghpull:`20571`: Switch default ArrowStyle angle values from None to zero. * :ghpull:`20510`: Consistent capitalization of section headers @@ -587,7 +587,7 @@ Pull Requests (532): * :ghpull:`19912`: Add symlog to figureoptions scalings * :ghpull:`19564`: Micro-optimize type1font loading * :ghpull:`19623`: FIX: Contour lines rendered incorrectly when closed loops -* :ghpull:`19902`: Implement ArtistList.__[r]add__. +* :ghpull:`19902`: Implement ``ArtistList.__[r]add__``. * :ghpull:`19904`: Don't set zoom/pan cursor for non-navigatable axes. * :ghpull:`19909`: Use unicode when interactively displaying 3d azim/elev. * :ghpull:`19905`: pyplot: do not apply kwargs twice in to x/yticklabels From 3b73348302348f8fbd99e348f3796cb3379a9d06 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 24 Aug 2021 18:57:58 -0400 Subject: [PATCH 052/270] Backport PR #20892: Label pylab as "discouraged" instead of "disapproved" --- doc/api/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/index.rst b/doc/api/index.rst index d8b0bebee569..9c33f38ad6d8 100644 --- a/doc/api/index.rst +++ b/doc/api/index.rst @@ -166,7 +166,7 @@ Further reading: - Most of the :ref:`examples ` use the object-oriented approach (except for the pyplot section) -The pylab API (disapproved) +The pylab API (discouraged) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. automodule:: pylab From 2baa2d7010c309bfdac156857438f2a29fef16fe Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 24 Aug 2021 19:02:34 -0400 Subject: [PATCH 053/270] Backport PR #20891: Add dependency link for 3.5 --- doc/devel/min_dep_policy.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/devel/min_dep_policy.rst b/doc/devel/min_dep_policy.rst index d107c3c794d7..306ec0ea90dc 100644 --- a/doc/devel/min_dep_policy.rst +++ b/doc/devel/min_dep_policy.rst @@ -83,7 +83,7 @@ specification of the dependencies. ========== ======== ====== Matplotlib Python NumPy ========== ======== ====== -3.5 3.7 1.17.0 +`3.5`_ 3.7 1.17.0 `3.4`_ 3.7 1.16.0 `3.3`_ 3.6 1.15.0 `3.2`_ 3.6 1.11.0 @@ -100,7 +100,8 @@ Matplotlib Python NumPy 1.0 2.4 1.1 ========== ======== ====== -.. _`3.4`: https://matplotlib.org/3.4.0/devel/dependencies.html#dependencies +.. _`3.5`: https://matplotlib.org/3.5.0/devel/dependencies.html +.. _`3.4`: https://matplotlib.org/3.4.0/devel/dependencies.html .. _`3.3`: https://matplotlib.org/3.3.0/users/installing.html#dependencies .. _`3.2`: https://matplotlib.org/3.2.0/users/installing.html#dependencies .. _`3.1`: https://matplotlib.org/3.1.0/users/installing.html#dependencies From d6236d9a4d6b85ede825a3038137ec798e5678a5 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Wed, 25 Aug 2021 12:23:15 +0200 Subject: [PATCH 054/270] Backport PR #20885: Fix broken QApplication init in a test. --- lib/matplotlib/tests/test_backend_qt.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/tests/test_backend_qt.py b/lib/matplotlib/tests/test_backend_qt.py index b7fb708bee45..ff104fcfbe83 100644 --- a/lib/matplotlib/tests/test_backend_qt.py +++ b/lib/matplotlib/tests/test_backend_qt.py @@ -379,8 +379,9 @@ def crashing_callback(fig, stale): @pytest.mark.backend('Qt5Agg', skip_on_importerror=True) def test_form_widget_get_with_datetime_and_date_fields(): - if not QtWidgets.QApplication.instance(): - QtWidgets.QApplication() + from matplotlib.backends.backend_qt import _create_qApp + _create_qApp() + form = [ ("Datetime field", datetime(year=2021, month=3, day=11)), ("Date field", date(year=2021, month=3, day=11)) From aa24f0dbff335b3f3de576f3f1013fa2f54920b4 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Thu, 26 Aug 2021 22:24:54 +0200 Subject: [PATCH 055/270] Backport PR #20915: [Doc] boxplot typo --- lib/matplotlib/axes/_axes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 8ebf5583a95d..257ae2fe4839 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -3624,7 +3624,7 @@ def boxplot(self, x, notch=None, sym=None, vert=None, whis=None, patch_artist : bool, default: False If `False` produces boxes with the Line2D artist. Otherwise, - boxes and drawn with Patch artists. + boxes are drawn with Patch artists. labels : sequence, optional Labels for each dataset (one per dataset). From 48fcb03727e034fae9ca4bf5d18e922b804db922 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Fri, 27 Aug 2021 10:33:19 +0200 Subject: [PATCH 056/270] Backport PR #20920: Fix cubic curve code in `Path.__doc__` --- lib/matplotlib/path.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/path.py b/lib/matplotlib/path.py index 45826439b91f..b63f38500306 100644 --- a/lib/matplotlib/path.py +++ b/lib/matplotlib/path.py @@ -33,7 +33,7 @@ class Path: These two arrays always have the same length in the first dimension. For example, to represent a cubic curve, you must - provide three vertices as well as three codes ``CURVE3``. + provide three vertices as well as three codes ``CURVE4``. The code types are: From 77a43e7d6b4fd9fdf9c77029e46ebf05fcf05be8 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Fri, 27 Aug 2021 22:46:07 +0200 Subject: [PATCH 057/270] Backport PR #20917: Move installing FAQ to installing page. --- INSTALL.rst | 6 ++++++ doc/faq/index.rst | 1 - doc/faq/installing_faq.rst | 6 +++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/INSTALL.rst b/INSTALL.rst index 3a7d7cac5803..b682b076dd87 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -6,6 +6,7 @@ Installation :hidden: installing_source.rst + ../faq/installing_faq.rst ============================== @@ -90,3 +91,8 @@ Installing for development ========================== See :ref:`installing_for_devs`. +============== +Installing FAQ +============== + +See :ref:`installing-faq`. diff --git a/doc/faq/index.rst b/doc/faq/index.rst index bf71718e622b..def68fc84c71 100644 --- a/doc/faq/index.rst +++ b/doc/faq/index.rst @@ -14,7 +14,6 @@ The Matplotlib FAQ .. toctree:: :maxdepth: 2 - installing_faq.rst howto_faq.rst troubleshooting_faq.rst environment_variables_faq.rst diff --git a/doc/faq/installing_faq.rst b/doc/faq/installing_faq.rst index d9b8ae609372..45e3fd99c2ed 100644 --- a/doc/faq/installing_faq.rst +++ b/doc/faq/installing_faq.rst @@ -1,8 +1,8 @@ .. _installing-faq: -************* - Installation -************* +************** +Installing FAQ +************** .. contents:: :backlinks: none From de9a8a42b5047192042e5d10b2435f2c5cc41f19 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Fri, 27 Aug 2021 22:47:49 +0200 Subject: [PATCH 058/270] Backport PR #20924: Improve `path.py` docstrings a bit --- lib/matplotlib/path.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/matplotlib/path.py b/lib/matplotlib/path.py index b63f38500306..c09250123fb9 100644 --- a/lib/matplotlib/path.py +++ b/lib/matplotlib/path.py @@ -29,11 +29,11 @@ class Path: The underlying storage is made up of two parallel numpy arrays: - *vertices*: an Nx2 float array of vertices - - *codes*: an N-length uint8 array of vertex types, or None + - *codes*: an N-length uint8 array of path codes, or None These two arrays always have the same length in the first dimension. For example, to represent a cubic curve, you must - provide three vertices as well as three codes ``CURVE4``. + provide three vertices and three ``CURVE4`` codes. The code types are: @@ -109,7 +109,7 @@ def __init__(self, vertices, codes=None, _interpolation_steps=1, handled correctly by the Agg PathIterator and other consumers of path data, such as :meth:`iter_segments`. codes : array-like or None, optional - n-length array integers representing the codes of the path. + N-length array of integers representing the codes of the path. If not None, codes must be the same length as vertices. If None, *vertices* will be treated as a series of line segments. _interpolation_steps : int, optional @@ -288,7 +288,7 @@ def make_compound_path_from_polys(cls, XY): Make a compound path object to draw a number of polygons with equal numbers of sides XY is a (numpolys x numsides x 2) numpy array of vertices. Return object is a - :class:`Path` + :class:`Path`. .. plot:: gallery/misc/histogram_path.py @@ -314,8 +314,8 @@ def make_compound_path_from_polys(cls, XY): @classmethod def make_compound_path(cls, *args): """ - Make a compound path from a list of Path objects. Blindly removes all - Path.STOP control points. + Make a compound path from a list of `Path` objects. Blindly removes + all `Path.STOP` control points. """ # Handle an empty list in args (i.e. no args). if not args: @@ -917,8 +917,8 @@ def unit_circle_righthalf(cls): @classmethod def arc(cls, theta1, theta2, n=None, is_wedge=False): """ - Return the unit circle arc from angles *theta1* to *theta2* (in - degrees). + Return a `Path` for the unit circle arc from angles *theta1* to + *theta2* (in degrees). *theta2* is unwrapped to produce the shortest arc within 360 degrees. That is, if *theta2* > *theta1* + 360, the arc will be from *theta1* to @@ -996,8 +996,8 @@ def arc(cls, theta1, theta2, n=None, is_wedge=False): @classmethod def wedge(cls, theta1, theta2, n=None): """ - Return the unit circle wedge from angles *theta1* to *theta2* (in - degrees). + Return a `Path` for the unit circle wedge from angles *theta1* to + *theta2* (in degrees). *theta2* is unwrapped to produce the shortest wedge within 360 degrees. That is, if *theta2* > *theta1* + 360, the wedge will be from *theta1* From 5fa8b29a4efa59a93054485941210d5a8389731c Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 27 Aug 2021 18:35:20 -0400 Subject: [PATCH 059/270] Backport PR #20889: Fix clearing selector --- doc/users/next_whats_new/widget_clear.rst | 7 +++ lib/matplotlib/tests/test_widgets.py | 76 +++++++++++++++++++++++ lib/matplotlib/widgets.py | 14 +++-- 3 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 doc/users/next_whats_new/widget_clear.rst diff --git a/doc/users/next_whats_new/widget_clear.rst b/doc/users/next_whats_new/widget_clear.rst new file mode 100644 index 000000000000..3c72dd60cc52 --- /dev/null +++ b/doc/users/next_whats_new/widget_clear.rst @@ -0,0 +1,7 @@ +Clear selector +-------------- +The selectors (`~matplotlib.widgets.SpanSelector`, `~matplotlib.widgets.RectangleSelector`, +`~matplotlib.widgets.EllipseSelector`, `~matplotlib.widgets.PolygonSelector` and +`~matplotlib.widgets.LassoSelector` have a new method *clear*, which will clear +the current selection and get the selector ready to make a new selection. This +is equivalent to press the *escape* key. diff --git a/lib/matplotlib/tests/test_widgets.py b/lib/matplotlib/tests/test_widgets.py index 36e2209c7fd2..a43cfec6191f 100644 --- a/lib/matplotlib/tests/test_widgets.py +++ b/lib/matplotlib/tests/test_widgets.py @@ -460,6 +460,82 @@ def onselect(epress, erelease): assert artist.get_alpha() == 0.3 +@pytest.mark.parametrize('selector', ['span', 'rectangle']) +def test_selector_clear(selector): + ax = get_ax() + + def onselect(*args): + pass + + kwargs = dict(ax=ax, onselect=onselect, interactive=True) + if selector == 'span': + Selector = widgets.SpanSelector + kwargs['direction'] = 'horizontal' + else: + Selector = widgets.RectangleSelector + + tool = Selector(**kwargs) + do_event(tool, 'press', xdata=10, ydata=10, button=1) + do_event(tool, 'onmove', xdata=100, ydata=120, button=1) + do_event(tool, 'release', xdata=100, ydata=120, button=1) + + # press-release event outside the selector to clear the selector + do_event(tool, 'press', xdata=130, ydata=130, button=1) + do_event(tool, 'release', xdata=130, ydata=130, button=1) + assert not tool._selection_completed + + ax = get_ax() + kwargs['ignore_event_outside'] = True + tool = Selector(**kwargs) + assert tool.ignore_event_outside + do_event(tool, 'press', xdata=10, ydata=10, button=1) + do_event(tool, 'onmove', xdata=100, ydata=120, button=1) + do_event(tool, 'release', xdata=100, ydata=120, button=1) + + # press-release event outside the selector ignored + do_event(tool, 'press', xdata=130, ydata=130, button=1) + do_event(tool, 'release', xdata=130, ydata=130, button=1) + assert tool._selection_completed + + do_event(tool, 'on_key_press', key='escape') + assert not tool._selection_completed + + +@pytest.mark.parametrize('selector', ['span', 'rectangle']) +def test_selector_clear_method(selector): + ax = get_ax() + + def onselect(*args): + pass + + if selector == 'span': + tool = widgets.SpanSelector(ax, onselect, 'horizontal', + interactive=True, + ignore_event_outside=True) + else: + tool = widgets.RectangleSelector(ax, onselect, interactive=True) + do_event(tool, 'press', xdata=10, ydata=10, button=1) + do_event(tool, 'onmove', xdata=100, ydata=120, button=1) + do_event(tool, 'release', xdata=100, ydata=120, button=1) + assert tool._selection_completed + assert tool.visible + if selector == 'span': + assert tool.extents == (10, 100) + + tool.clear() + assert not tool._selection_completed + assert not tool.visible + + # Do another cycle of events to make sure we can + do_event(tool, 'press', xdata=10, ydata=10, button=1) + do_event(tool, 'onmove', xdata=50, ydata=120, button=1) + do_event(tool, 'release', xdata=50, ydata=120, button=1) + assert tool._selection_completed + assert tool.visible + if selector == 'span': + assert tool.extents == (10, 50) + + def test_tool_line_handle(): ax = get_ax() diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index 48c096032017..155b3b3f7b15 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -1978,9 +1978,7 @@ def on_key_press(self, event): key = event.key or '' key = key.replace('ctrl', 'control') if key == self.state_modifier_keys['clear']: - for artist in self.artists: - artist.set_visible(False) - self.update() + self.clear() return for (state, modifier) in self.state_modifier_keys.items(): if modifier in key: @@ -2008,6 +2006,12 @@ def set_visible(self, visible): for artist in self.artists: artist.set_visible(visible) + def clear(self): + """Clear the selection and set the selector ready to make a new one.""" + self._selection_completed = False + self.set_visible(False) + self.update() + @property def artists(self): """Tuple of the artists of the selector.""" @@ -2354,9 +2358,11 @@ def _hover(self, event): if self.ignore(event): return - if self._active_handle is not None: + if self._active_handle is not None or not self._selection_completed: # Do nothing if button is pressed and a handle is active, which may # occur with drag_from_anywhere=True. + # Do nothing if selection is not completed, which occurs when + # a selector has been cleared return _, e_dist = self._edge_handles.closest(event.x, event.y) From 9ba276245178574688f72821b114f3d1c73463e3 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sat, 28 Aug 2021 21:36:55 +0200 Subject: [PATCH 060/270] Backport PR #20916: Improve deleted Animation warning --- lib/matplotlib/animation.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/animation.py b/lib/matplotlib/animation.py index 985181a574c6..f93f6f1559d0 100644 --- a/lib/matplotlib/animation.py +++ b/lib/matplotlib/animation.py @@ -888,9 +888,11 @@ def __del__(self): if not getattr(self, '_draw_was_started', True): warnings.warn( 'Animation was deleted without rendering anything. This is ' - 'most likely unintended. To prevent deletion, assign the ' - 'Animation to a variable that exists for as long as you need ' - 'the Animation.') + 'most likely not intended. To prevent deletion, assign the ' + 'Animation to a variable, e.g. `anim`, that exists until you ' + 'have outputted the Animation using `plt.show()` or ' + '`anim.save()`.' + ) def _start(self, *args): """ From 5783521fd574bb55dc995ec5cf21b64b637864cb Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sat, 28 Aug 2021 07:43:05 +0200 Subject: [PATCH 061/270] Backport PR #20919: Improve various release notes --- .../prev_api_changes/api_changes_1.1.x.rst | 4 +- .../prev_api_changes/api_changes_1.2.x.rst | 4 +- .../prev_api_changes/api_changes_1.3.x.rst | 4 +- .../prev_api_changes/api_changes_1.4.x.rst | 4 +- .../prev_api_changes/api_changes_1.5.0.rst | 4 +- .../prev_api_changes/api_changes_1.5.2.rst | 4 +- .../prev_api_changes/api_changes_1.5.3.rst | 4 +- doc/users/github_stats.rst | 6 +- doc/users/prev_whats_new/changelog.rst | 8941 +++++++++-------- .../prev_whats_new/github_stats_3.0.0.rst | 1221 +++ .../prev_whats_new/github_stats_3.0.1.rst | 203 + .../prev_whats_new/github_stats_3.0.2.rst | 7 +- .../prev_whats_new/github_stats_3.0.3.rst | 147 + .../prev_whats_new/github_stats_3.1.0.rst | 8 +- .../prev_whats_new/github_stats_3.1.1.rst | 6 +- .../prev_whats_new/github_stats_3.1.2.rst | 338 +- .../prev_whats_new/github_stats_3.1.3.rst | 87 + .../prev_whats_new/github_stats_3.2.0.rst | 6 +- .../prev_whats_new/github_stats_3.2.1.rst | 6 +- .../prev_whats_new/github_stats_3.2.2.rst | 6 +- .../prev_whats_new/github_stats_3.3.0.rst | 6 +- .../prev_whats_new/github_stats_3.3.1.rst | 6 +- .../prev_whats_new/github_stats_3.3.2.rst | 6 +- .../prev_whats_new/github_stats_3.3.3.rst | 6 +- .../prev_whats_new/github_stats_3.3.4.rst | 6 +- .../prev_whats_new/github_stats_3.4.0.rst | 6 +- .../prev_whats_new/github_stats_3.4.1.rst | 6 +- .../prev_whats_new/github_stats_3.4.2.rst | 6 +- doc/users/prev_whats_new/whats_new_0.98.4.rst | 4 +- doc/users/prev_whats_new/whats_new_0.99.rst | 4 +- doc/users/prev_whats_new/whats_new_1.0.rst | 4 +- doc/users/prev_whats_new/whats_new_1.1.rst | 4 +- doc/users/prev_whats_new/whats_new_1.2.2.rst | 4 +- doc/users/prev_whats_new/whats_new_1.2.rst | 4 +- doc/users/prev_whats_new/whats_new_1.3.rst | 4 +- doc/users/prev_whats_new/whats_new_1.4.rst | 4 +- doc/users/prev_whats_new/whats_new_1.5.rst | 4 +- doc/users/prev_whats_new/whats_new_2.0.0.rst | 6 +- doc/users/prev_whats_new/whats_new_2.1.0.rst | 4 +- doc/users/prev_whats_new/whats_new_2.2.rst | 4 +- doc/users/prev_whats_new/whats_new_3.0.rst | 4 +- doc/users/prev_whats_new/whats_new_3.1.0.rst | 5 +- doc/users/prev_whats_new/whats_new_3.2.0.rst | 5 +- doc/users/prev_whats_new/whats_new_3.3.0.rst | 8 +- doc/users/prev_whats_new/whats_new_3.4.0.rst | 8 +- doc/users/release_notes.rst | 64 +- doc/users/release_notes_next.rst | 4 +- tools/github_stats.py | 11 +- 48 files changed, 6917 insertions(+), 4300 deletions(-) create mode 100644 doc/users/prev_whats_new/github_stats_3.0.0.rst create mode 100644 doc/users/prev_whats_new/github_stats_3.0.1.rst create mode 100644 doc/users/prev_whats_new/github_stats_3.0.3.rst create mode 100644 doc/users/prev_whats_new/github_stats_3.1.3.rst diff --git a/doc/api/prev_api_changes/api_changes_1.1.x.rst b/doc/api/prev_api_changes/api_changes_1.1.x.rst index 8320e2c4fc09..790b669081b7 100644 --- a/doc/api/prev_api_changes/api_changes_1.1.x.rst +++ b/doc/api/prev_api_changes/api_changes_1.1.x.rst @@ -1,6 +1,6 @@ -Changes in 1.1.x -================ +API Changes in 1.1.x +==================== * Added new :class:`matplotlib.sankey.Sankey` for generating Sankey diagrams. diff --git a/doc/api/prev_api_changes/api_changes_1.2.x.rst b/doc/api/prev_api_changes/api_changes_1.2.x.rst index 6d83874e6471..45a2f35cf29e 100644 --- a/doc/api/prev_api_changes/api_changes_1.2.x.rst +++ b/doc/api/prev_api_changes/api_changes_1.2.x.rst @@ -1,5 +1,5 @@ -Changes in 1.2.x -================ +API Changes in 1.2.x +==================== * The ``classic`` option of the rc parameter ``toolbar`` is deprecated and will be removed in the next release. diff --git a/doc/api/prev_api_changes/api_changes_1.3.x.rst b/doc/api/prev_api_changes/api_changes_1.3.x.rst index 5b596d83b5e2..1cfba079bb5e 100644 --- a/doc/api/prev_api_changes/api_changes_1.3.x.rst +++ b/doc/api/prev_api_changes/api_changes_1.3.x.rst @@ -1,8 +1,8 @@ .. _changes_in_1_3: -Changes in 1.3.x -================ +API Changes in 1.3.x +==================== Changes in 1.3.1 ---------------- diff --git a/doc/api/prev_api_changes/api_changes_1.4.x.rst b/doc/api/prev_api_changes/api_changes_1.4.x.rst index 2d49b4b6651a..d0952784677c 100644 --- a/doc/api/prev_api_changes/api_changes_1.4.x.rst +++ b/doc/api/prev_api_changes/api_changes_1.4.x.rst @@ -1,5 +1,5 @@ -Changes in 1.4.x -================ +API Changes in 1.4.x +==================== Code changes ------------ diff --git a/doc/api/prev_api_changes/api_changes_1.5.0.rst b/doc/api/prev_api_changes/api_changes_1.5.0.rst index abed630b126c..b51f311d8836 100644 --- a/doc/api/prev_api_changes/api_changes_1.5.0.rst +++ b/doc/api/prev_api_changes/api_changes_1.5.0.rst @@ -1,6 +1,6 @@ -Changes in 1.5.0 -================ +API Changes in 1.5.0 +==================== Code Changes ------------ diff --git a/doc/api/prev_api_changes/api_changes_1.5.2.rst b/doc/api/prev_api_changes/api_changes_1.5.2.rst index d2ee33546314..85c504fa6f12 100644 --- a/doc/api/prev_api_changes/api_changes_1.5.2.rst +++ b/doc/api/prev_api_changes/api_changes_1.5.2.rst @@ -1,5 +1,5 @@ -Changes in 1.5.2 -================ +API Changes in 1.5.2 +==================== Default Behavior Changes diff --git a/doc/api/prev_api_changes/api_changes_1.5.3.rst b/doc/api/prev_api_changes/api_changes_1.5.3.rst index 0dc025111eae..ff5d6a9cf996 100644 --- a/doc/api/prev_api_changes/api_changes_1.5.3.rst +++ b/doc/api/prev_api_changes/api_changes_1.5.3.rst @@ -1,5 +1,5 @@ -Changes in 1.5.3 -================ +API Changes in 1.5.3 +==================== ``ax.plot(..., marker=None)`` gives default marker -------------------------------------------------- diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst index defa8b5a1175..55446e3446de 100644 --- a/doc/users/github_stats.rst +++ b/doc/users/github_stats.rst @@ -1,9 +1,9 @@ .. _github-stats: -GitHub statistics -================= +GitHub statistics (Aug 12, 2021) +================================ -GitHub statistics for 2021/03/26 - 2021/08/24 (tag: v3.4.0) +GitHub statistics for 2021/05/08 (tag: v3.4.2) - 2021/08/12 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/changelog.rst b/doc/users/prev_whats_new/changelog.rst index ae9d40680e7c..483f6eda53c3 100644 --- a/doc/users/prev_whats_new/changelog.rst +++ b/doc/users/prev_whats_new/changelog.rst @@ -7,4029 +7,4743 @@ This is a list of the changes made to Matplotlib from 2003 to 2015. For more recent changes, please refer to the `what's new <../whats_new.html>`_ or the `API changes <../../api/api_changes.html>`_. -2015-11-16 Levels passed to contour(f) and tricontour(f) must be in increasing - order. +2015-11-16 + Levels passed to contour(f) and tricontour(f) must be in increasing order. -2015-10-21 Added TextBox widget +2015-10-21 + Added TextBox widget + +2015-10-21 + Added get_ticks_direction() + +2015-02-27 + Added the rcParam 'image.composite_image' to permit users to decide whether + they want the vector graphics backends to combine all images within a set + of axes into a single composite image. (If images do not get combined, + users can open vector graphics files in Adobe Illustrator or Inkscape and + edit each image individually.) + +2015-02-19 + Rewrite of C++ code that calculates contours to add support for corner + masking. This is controlled by the 'corner_mask' keyword in plotting + commands 'contour' and 'contourf'. - IMT + +2015-01-23 + Text bounding boxes are now computed with advance width rather than ink + area. This may result in slightly different placement of text. + +2014-10-27 + Allowed selection of the backend using the :envvar:`MPLBACKEND` environment + variable. Added documentation on backend selection methods. + +2014-09-27 + Overhauled `.colors.LightSource`. Added `.LightSource.hillshade` to allow + the independent generation of illumination maps. Added new types of + blending for creating more visually appealing shaded relief plots (e.g. + ``blend_mode="overlay"``, etc, in addition to the legacy "hsv" mode). + +2014-06-10 + Added Colorbar.remove() + +2014-06-07 + Fixed bug so radial plots can be saved as ps in py3k. + +2014-06-01 + Changed the fmt kwarg of errorbar to support the the mpl convention that + "none" means "don't draw it", and to default to the empty string, so that + plotting of data points is done with the plot() function defaults. + Deprecated use of the None object in place "none". + +2014-05-22 + Allow the linscale keyword parameter of symlog scale to be smaller than + one. + +2014-05-20 + Added logic to in FontManager to invalidate font-cache if if font-family + rcparams have changed. + +2014-05-16 + Fixed the positioning of multi-line text in the PGF backend. + +2014-05-14 + Added Axes.add_image() as the standard way to add AxesImage instances to + Axes. This improves the consistency with add_artist(), add_collection(), + add_container(), add_line(), add_patch(), and add_table(). + +2014-05-02 + Added colorblind-friendly colormap, named 'Wistia'. + +2014-04-27 + Improved input clean up in Axes.{h|v}lines + Coerce input into a 1D ndarrays (after dealing with units). + +2014-04-27 + removed un-needed cast to float in stem + +2014-04-23 + Updated references to "ipython -pylab" The preferred method for invoking + pylab is now using the "%pylab" magic. + -Chris G. + +2014-04-22 + Added (re-)generate a simple automatic legend to "Figure Options" dialog of + the Qt4Agg backend. + +2014-04-22 + Added an example showing the difference between interpolation = 'none' and + interpolation = 'nearest' in `~.Axes.imshow` when saving vector graphics + files. + +2014-04-22 + Added violin plotting functions. See `.Axes.violinplot`, `.Axes.violin`, + `.cbook.violin_stats` and `.mlab.GaussianKDE` for details. + +2014-04-10 + Fixed the triangular marker rendering error. The "Up" triangle was rendered + instead of "Right" triangle and vice-versa. + +2014-04-08 + Fixed a bug in parasite_axes.py by making a list out of a generator at line + 263. + +2014-04-02 + Added ``clipon=False`` to patch creation of wedges and shadows in + `~.Axes.pie`. + +2014-02-25 + In backend_qt4agg changed from using update -> repaint under windows. See + comment in source near ``self._priv_update`` for longer explanation. + +2014-03-27 + Added tests for pie ccw parameter. Removed pdf and svg images from tests + for pie linewidth parameter. + +2014-03-24 + Changed the behaviour of axes to not ignore leading or trailing patches of + height 0 (or width 0) while calculating the x and y axis limits. Patches + having both height == 0 and width == 0 are ignored. + +2014-03-24 + Added bool kwarg (manage_xticks) to boxplot to enable/disable the + managemnet of the xlimits and ticks when making a boxplot. Default in True + which maintains current behavior by default. + +2014-03-23 + Fixed a bug in projections/polar.py by making sure that the theta value + being calculated when given the mouse coordinates stays within the range of + 0 and 2 * pi. + +2014-03-22 + Added the keyword arguments wedgeprops and textprops to pie. Users can + control the wedge and text properties of the pie in more detail, if they + choose. + +2014-03-17 + Bug was fixed in append_axes from the AxesDivider class would not append + axes in the right location with respect to the reference locator axes + +2014-03-13 + Add parameter 'clockwise' to function pie, True by default. + +2014-02-28 + Added 'origin' kwarg to `~.Axes.spy` + +2014-02-27 + Implemented separate horizontal/vertical axes padding to the ImageGrid in + the AxesGrid toolkit + +2014-02-27 + Allowed markevery property of matplotlib.lines.Line2D to be, an int numpy + fancy index, slice object, or float. The float behaviour turns on markers + at approximately equal display-coordinate-distances along the line. + +2014-02-25 + In backend_qt4agg changed from using update -> repaint under windows. See + comment in source near ``self._priv_update`` for longer explanation. + +2014-01-02 + `~.Axes.triplot` now returns the artist it adds and support of line and + marker kwargs has been improved. GBY + +2013-12-30 + Made streamplot grid size consistent for different types of density + argument. A 30x30 grid is now used for both density=1 and density=(1, 1). + +2013-12-03 + Added a pure boxplot-drawing method that allow a more complete + customization of boxplots. It takes a list of dicts contains stats. Also + created a function (`.cbook.boxplot_stats`) that generates the stats + needed. + +2013-11-28 + Added qhull extension module to perform Delaunay triangulation more + robustly than before. It is used by tri.Triangulation (and hence all + pyplot.tri* methods) and mlab.griddata. Deprecated matplotlib.delaunay + module. - IMT + +2013-11-05 + Add power-law normalization method. This is useful for, e.g., showing small + populations in a "hist2d" histogram. + +2013-10-27 + Added get_rlabel_position and set_rlabel_position methods to PolarAxes to + control angular position of radial tick labels. + +2013-10-06 + Add stride-based functions to mlab for easy creation of 2D arrays with less + memory. + +2013-10-06 + Improve window and detrend functions in mlab, particulart support for 2D + arrays. + +2013-10-06 + Improve performance of all spectrum-related mlab functions and plots. + +2013-10-06 + Added support for magnitude, phase, and angle spectrums to axes.specgram, + and support for magnitude, phase, angle, and complex spectrums to + mlab-specgram. + +2013-10-06 + Added magnitude_spectrum, angle_spectrum, and phase_spectrum plots, as well + as magnitude_spectrum, angle_spectrum, phase_spectrum, and complex_spectrum + functions to mlab + +2013-07-12 + Added support for datetime axes to 2d plots. Axis values are passed through + Axes.convert_xunits/Axes.convert_yunits before being used by + contour/contourf, pcolormesh and pcolor. + +2013-07-12 + Allowed matplotlib.dates.date2num, matplotlib.dates.num2date, and + matplotlib.dates.datestr2num to accept n-d inputs. Also factored in support + for n-d arrays to matplotlib.dates.DateConverter and + matplotlib.units.Registry. + +2013-06-26 + Refactored the axes module: the axes module is now a folder, containing the + following submodule: + + - _subplots.py, containing all the subplots helper methods + - _base.py, containing several private methods and a new _AxesBase class. + This _AxesBase class contains all the methods that are not directly + linked to plots of the "old" Axes + - _axes.py contains the Axes class. This class now inherits from _AxesBase: + it contains all "plotting" methods and labelling methods. + + This refactoring should not affect the API. Only private methods are not + importable from the axes module anymore. + +2013-05-18 + Added support for arbitrary rasterization resolutions to the SVG backend. + Previously the resolution was hard coded to 72 dpi. Now the backend class + takes a image_dpi argument for its constructor, adjusts the image bounding + box accordingly and forwards a magnification factor to the image renderer. + The code and results now resemble those of the PDF backend. + - MW + +2013-05-08 + Changed behavior of hist when given stacked=True and normed=True. + Histograms are now stacked first, then the sum is normalized. Previously, + each histogram was normalized, then they were stacked. + +2013-04-25 + Changed all instances of:: + + from matplotlib import MatplotlibDeprecationWarning as mplDeprecation + + to:: + + from cbook import mplDeprecation + + and removed the import into the matplotlib namespace in __init__.py + - Thomas Caswell + +2013-04-15 + Added 'axes.xmargin' and 'axes.ymargin' to rpParams to set default margins + on auto-scaleing. - TAC + +2013-04-16 + Added patheffect support for Line2D objects. -JJL + +2013-03-31 + Added support for arbitrary unstructured user-specified triangulations to + Axes3D.tricontour[f] - Damon McDougall + +2013-03-19 + Added support for passing *linestyle* kwarg to `~.Axes.step` so all + `~.Axes.plot` kwargs are passed to the underlying `~.Axes.plot` call. -TAC + +2013-02-25 + Added classes CubicTriInterpolator, UniformTriRefiner, TriAnalyzer to + matplotlib.tri module. - GBy + +2013-01-23 + Add 'savefig.directory' to rcParams to remember and fill in the last + directory saved to for figure save dialogs - Martin Spacek + +2013-01-13 + Add eventplot method to axes and pyplot and EventCollection class to + collections. + +2013-01-08 + Added two extra titles to axes which are flush with the left and right + edges of the plot respectively. Andrew Dawson + +2013-01-07 + Add framealpha keyword argument to legend - PO + +2013-01-16 + Till Stensitzki added a baseline feature to stackplot + +2012-12-22 + Added classes for interpolation within triangular grids + (LinearTriInterpolator) and to find the triangles in which points lie + (TrapezoidMapTriFinder) to matplotlib.tri module. - IMT + +2012-12-05 + Added MatplotlibDeprecationWarning class for signaling deprecation. + Matplotlib developers can use this class as follows:: + + from matplotlib import MatplotlibDeprecationWarning as mplDeprecation + + In light of the fact that Python builtin DeprecationWarnings are ignored by + default as of Python 2.7, this class was put in to allow for the signaling + of deprecation, but via UserWarnings which are not ignored by default. - PI + +2012-11-27 + Added the *mtext* parameter for supplying matplotlib.text.Text instances to + RendererBase.draw_tex and RendererBase.draw_text. This allows backends to + utilize additional text attributes, like the alignment of text elements. - + pwuertz + +2012-11-26 + deprecate matplotlib/mpl.py, which was used only in pylab.py and is now + replaced by the more suitable ``import matplotlib as mpl``. - PI + +2012-11-25 + Make rc_context available via pyplot interface - PI + +2012-11-16 + plt.set_cmap no longer throws errors if there is not already an active + colorable artist, such as an image, and just sets up the colormap to use + from that point forward. - PI + +2012-11-16 + Added the funcction _get_rbga_face, which is identical to _get_rbg_face + except it return a (r,g,b,a) tuble, to line2D. Modified Line2D.draw to use + _get_rbga_face to get the markerface color so that any alpha set by + markerfacecolor will respected. - Thomas Caswell + +2012-11-13 + Add a symmetric log normalization class to colors.py. Also added some + tests for the normalization class. Till Stensitzki +2012-11-12 + Make axes.stem take at least one argument. Uses a default range(n) when + the first arg not provided. Damon McDougall -2015-10-21 Added get_ticks_direction() +2012-11-09 + Make plt.subplot() without arguments act as subplot(111) - PI -2015-02-27 Added the rcParam 'image.composite_image' to permit users - to decide whether they want the vector graphics backends to combine - all images within a set of axes into a single composite image. - (If images do not get combined, users can open vector graphics files - in Adobe Illustrator or Inkscape and edit each image individually.) +2012-11-08 + Replaced plt.figure and plt.subplot calls by the newer, more convenient + single call to plt.subplots() in the documentation examples - PI -2015-02-19 Rewrite of C++ code that calculates contours to add support for - corner masking. This is controlled by the 'corner_mask' keyword - in plotting commands 'contour' and 'contourf'. - IMT +2012-10-05 + Add support for saving animations as animated GIFs. - JVDP + +2012-08-11 + Fix path-closing bug in patches.Polygon, so that regardless of whether the + path is the initial one or was subsequently set by set_xy(), get_xy() will + return a closed path if and only if get_closed() is True. Thanks to Jacob + Vanderplas. - EF + +2012-08-05 + When a norm is passed to contourf, either or both of the vmin, vmax + attributes of that norm are now respected. Formerly they were respected + only if both were specified. In addition, vmin and/or vmax can now be + passed to contourf directly as kwargs. - EF + +2012-07-24 + Contourf handles the extend kwarg by mapping the extended ranges outside + the normed 0-1 range so that they are handled by colormap colors determined + by the set_under and set_over methods. Previously the extended ranges were + mapped to 0 or 1 so that the "under" and "over" colormap colors were + ignored. This change also increases slightly the color contrast for a given + set of contour levels. - EF + +2012-06-24 + Make use of mathtext in tick labels configurable - DSD + +2012-06-05 + Images loaded through PIL are now ordered correctly - CG + +2012-06-02 + Add new Axes method and pyplot function, hist2d. - PO + +2012-05-31 + Remove support for 'cairo.' style of backend specification. + Deprecate 'cairo.format' and 'savefig.extension' rcParams and replace with + 'savefig.format'. - Martin Spacek + +2012-05-29 + pcolormesh now obeys the passed in "edgecolor" kwarg. To support this, the + "shading" argument to pcolormesh now only takes "flat" or "gouraud". To + achieve the old "faceted" behavior, pass "edgecolors='k'". - MGD + +2012-05-22 + Added radius kwarg to pie charts. - HH + +2012-05-22 + Collections now have a setting "offset_position" to select whether the + offsets are given in "screen" coordinates (default, following the old + behavior) or "data" coordinates. This is currently used internally to + improve the performance of hexbin. + + As a result, the "draw_path_collection" backend methods have grown a new + argument "offset_position". - MGD + +2012-05-04 + Add a new argument to pie charts - startingangle - that allows one to + specify the angle offset for the first wedge of the chart. - EP + +2012-05-03 + symlog scale now obeys the logarithmic base. Previously, it was completely + ignored and always treated as base e. - MGD + +2012-05-03 + Allow linscalex/y keyword to symlog scale that allows the size of the + linear portion relative to the logarithmic portion to be adjusted. - MGD + +2012-04-14 + Added new plot style: stackplot. This new feature supports stacked area + plots. - Damon McDougall + +2012-04-06 + When path clipping changes a LINETO to a MOVETO, it also changes any + CLOSEPOLY command to a LINETO to the initial point. This fixes a problem + with pdf and svg where the CLOSEPOLY would then draw a line to the latest + MOVETO position instead of the intended initial position. - JKS + +2012-03-27 + Add support to ImageGrid for placing colorbars only at one edge of each + column/row. - RMM + +2012-03-07 + Refactor movie writing into useful classes that make use of pipes to write + image data to ffmpeg or mencoder. Also improve settings for these and the + ability to pass custom options. - RMM + +2012-02-29 + errorevery keyword added to errorbar to enable errorbar subsampling. fixes + issue #600. + +2012-02-28 + Added plot_trisurf to the mplot3d toolkit. This supports plotting three + dimensional surfaces on an irregular grid. - Damon McDougall + +2012-01-23 + The radius labels in polar plots no longer use a fixed padding, but use a + different alignment depending on the quadrant they are in. This fixes + numerical problems when (rmax - rmin) gets too small. - MGD + +2012-01-08 + Add axes.streamplot to plot streamlines of a velocity field. Adapted from + Tom Flannaghan streamplot implementation. -TSY + +2011-12-29 + ps and pdf markers are now stroked only if the line width is nonzero for + consistency with agg, fixes issue #621. - JKS + +2011-12-27 + Work around an EINTR bug in some versions of subprocess. - JKS + +2011-10-25 + added support for \operatorname to mathtext, including the ability to + insert spaces, such as $\operatorname{arg\,max}$ - PI + +2011-08-18 + Change api of Axes.get_tightbbox and add an optional keyword parameter + *call_axes_locator*. - JJL + +2011-07-29 + A new rcParam "axes.formatter.use_locale" was added, that, when True, will + use the current locale to format tick labels. This means that, for + example, in the fr_FR locale, ',' will be used as a decimal separator. - + MGD -2015-01-23 Text bounding boxes are now computed with advance width rather than - ink area. This may result in slightly different placement of text. +2011-07-15 + The set of markers available in the plot() and scatter() commands has been + unified. In general, this gives more options to both than were previously + available, however, there is one backward-incompatible change to the + markers in scatter: + + "d" used to mean "diamond", it now means "narrow diamond". "D" can be + used for a "diamond". + + -MGD + +2011-07-13 + Fix numerical problems in symlog scale, particularly when linthresh <= 1.0. + Symlog plots may look different if one was depending on the old broken + behavior - MGD + +2011-07-10 + Fixed argument handling error in tripcolor/triplot/tricontour, issue #203. + - IMT + +2011-07-08 + Many functions added to mplot3d.axes3d to bring Axes3D objects more + feature-parity with regular Axes objects. Significant revisions to the + documentation as well. - BVR + +2011-07-07 + Added compatibility with IPython strategy for picking a version of Qt4 + support, and an rcParam for making the choice explicitly: backend.qt4. - EF + +2011-07-07 + Modified AutoMinorLocator to improve automatic choice of the number of + minor intervals per major interval, and to allow one to specify this number + via a kwarg. - EF -2014-10-27 Allowed selection of the backend using the :envvar:`MPLBACKEND` environment - variable. Added documentation on backend selection methods. +2011-06-28 + 3D versions of scatter, plot, plot_wireframe, plot_surface, bar3d, and some + other functions now support empty inputs. - BVR -2014-09-27 Overhauled `.colors.LightSource`. Added `.LightSource.hillshade` to - allow the independent generation of illumination maps. Added new - types of blending for creating more visually appealing shaded relief - plots (e.g. ``blend_mode="overlay"``, etc, in addition to the legacy - "hsv" mode). +2011-06-22 + Add set_theta_offset, set_theta_direction and set_theta_zero_location to + polar axes to control the location of 0 and directionality of theta. - MGD -2014-06-10 Added Colorbar.remove() +2011-06-22 + Add axes.labelweight parameter to set font weight to axis labels - MGD. -2014-06-07 Fixed bug so radial plots can be saved as ps in py3k. +2011-06-20 + Add pause function to pyplot. - EF -2014-06-01 Changed the fmt kwarg of errorbar to support the - the mpl convention that "none" means "don't draw it", - and to default to the empty string, so that plotting - of data points is done with the plot() function - defaults. Deprecated use of the None object in place - "none". +2011-06-16 + Added *bottom* keyword parameter for the stem command. Also, implemented a + legend handler for the stem plot. - JJL -2014-05-22 Allow the linscale keyword parameter of symlog scale to be - smaller than one. +2011-06-16 + Added legend.frameon rcParams. - Mike Kaufman -2014-05-20 Added logic to in FontManager to invalidate font-cache if - if font-family rcparams have changed. +2011-05-31 + Made backend_qt4 compatible with PySide . - Gerald Storer -2014-05-16 Fixed the positioning of multi-line text in the PGF backend. +2011-04-17 + Disable keyboard auto-repeat in qt4 backend by ignoring key events + resulting from auto-repeat. This makes constrained zoom/pan work. - EF -2014-05-14 Added Axes.add_image() as the standard way to add AxesImage - instances to Axes. This improves the consistency with - add_artist(), add_collection(), add_container(), add_line(), - add_patch(), and add_table(). +2011-04-14 + interpolation="nearest" always interpolate images. A new mode "none" is + introduced for no interpolation - JJL -2014-05-02 Added colorblind-friendly colormap, named 'Wistia'. +2011-04-03 + Fixed broken pick interface to AsteriskCollection objects used by scatter. + - EF -2014-04-27 Improved input clean up in Axes.{h|v}lines - Coerce input into a 1D ndarrays (after dealing with units). +2011-04-01 + The plot directive Sphinx extension now supports all of the features in the + Numpy fork of that extension. These include doctest formatting, an + 'include-source' option, and a number of new configuration options. - MGD -2014-04-27 removed un-needed cast to float in stem +2011-03-29 + Wrapped ViewVCCachedServer definition in a factory function. This class + now inherits from urllib2.HTTPSHandler in order to fetch data from github, + but HTTPSHandler is not defined if python was built without SSL support. - + DSD -2014-04-23 Updated references to "ipython -pylab" - The preferred method for invoking pylab is now using the - "%pylab" magic. - -Chris G. +2011-03-10 + Update pytz version to 2011c, thanks to Simon Cross. - JKS -2014-04-22 Added (re-)generate a simple automatic legend to "Figure Options" - dialog of the Qt4Agg backend. +2011-03-06 + Add standalone tests.py test runner script. - JKS + +2011-03-06 + Set edgecolor to 'face' for scatter asterisk-type symbols; this fixes a bug + in which these symbols were not responding to the c kwarg. The symbols + have no face area, so only the edgecolor is visible. - EF -2014-04-22 Added an example showing the difference between - interpolation = 'none' and interpolation = 'nearest' in - `~.Axes.imshow` when saving vector graphics files. +2011-02-27 + Support libpng version 1.5.x; suggestion by Michael Albert. Changed + installation specification to a minimum of libpng version 1.2. - EF -2014-04-22 Added violin plotting functions. See `.Axes.violinplot`, - `.Axes.violin`, `.cbook.violin_stats` and `.mlab.GaussianKDE` for - details. +2011-02-20 + clabel accepts a callable as an fmt kwarg; modified patch by Daniel Hyams. + - EF -2014-04-10 Fixed the triangular marker rendering error. The "Up" triangle was - rendered instead of "Right" triangle and vice-versa. +2011-02-18 + scatter([], []) is now valid. Also fixed issues with empty collections - + BVR -2014-04-08 Fixed a bug in parasite_axes.py by making a list out - of a generator at line 263. +2011-02-07 + Quick workaround for dviread bug #3175113 - JKS -2014-04-02 Added ``clipon=False`` to patch creation of wedges and shadows - in `~.Axes.pie`. +2011-02-05 + Add cbook memory monitoring for Windows, using tasklist. - EF -2014-02-25 In backend_qt4agg changed from using update -> repaint under - windows. See comment in source near ``self._priv_update`` for - longer explanation. +2011-02-05 + Speed up Normalize and LogNorm by using in-place operations and by using + float32 for float32 inputs and for ints of 2 bytes or shorter; based on + patch by Christoph Gohlke. - EF -2014-03-27 Added tests for pie ccw parameter. Removed pdf and svg images - from tests for pie linewidth parameter. +2011-02-04 + Changed imshow to use rgba as uint8 from start to finish, instead of going + through an intermediate step as double precision; thanks to Christoph + Gohlke. - EF -2014-03-24 Changed the behaviour of axes to not ignore leading or trailing - patches of height 0 (or width 0) while calculating the x and y - axis limits. Patches having both height == 0 and width == 0 are - ignored. +2011-01-13 + Added zdir and offset arguments to contourf3d to bring contourf3d in + feature parity with contour3d. - BVR -2014-03-24 Added bool kwarg (manage_xticks) to boxplot to enable/disable - the managemnet of the xlimits and ticks when making a boxplot. - Default in True which maintains current behavior by default. +2011-01-04 + Tag 1.0.1 for release at r8896 -2014-03-23 Fixed a bug in projections/polar.py by making sure that the theta - value being calculated when given the mouse coordinates stays within - the range of 0 and 2 * pi. +2011-01-03 + Added display of ticker offset to 3d plots. - BVR + +2011-01-03 + Turn off tick labeling on interior subplots for pyplots.subplots when + sharex/sharey is True. - JDH -2014-03-22 Added the keyword arguments wedgeprops and textprops to pie. - Users can control the wedge and text properties of the pie - in more detail, if they choose. +2010-12-29 + Implement axes_divider.HBox and VBox. -JJL -2014-03-17 Bug was fixed in append_axes from the AxesDivider class would not - append axes in the right location with respect to the reference - locator axes +2010-11-22 + Fixed error with Hammer projection. - BVR + +2010-11-12 + Fixed the placement and angle of axis labels in 3D plots. - BVR + +2010-11-07 + New rc parameters examples.download and examples.directory allow bypassing + the download mechanism in get_sample_data. - JKS + +2010-10-04 + Fix JPEG saving bug: only accept the kwargs documented by PIL for JPEG + files. - JKS + +2010-09-15 + Remove unused _wxagg extension and numerix.h. - EF + +2010-08-25 + Add new framework for doing animations with examples.- RM + +2010-08-21 + Remove unused and inappropriate methods from Tick classes: + set_view_interval, get_minpos, and get_data_interval are properly found in + the Axis class and don't need to be duplicated in XTick and YTick. - EF + +2010-08-21 + Change Axis.set_view_interval() so that when updating an existing interval, + it respects the orientation of that interval, and can enlarge but not + reduce the interval. This fixes a bug in which Axis.set_ticks would change + the view limits of an inverted axis. Whether set_ticks should be affecting + the viewLim at all remains an open question. - EF + +2010-08-16 + Handle NaN's correctly in path analysis routines. Fixes a bug where the + best location for a legend was not calculated correctly when the line + contains NaNs. - MGD -2014-03-13 Add parameter 'clockwise' to function pie, True by default. +2010-08-14 + Fix bug in patch alpha handling, and in bar color kwarg - EF + +2010-08-12 + Removed all traces of numerix module after 17 months of deprecation + warnings. - EF -2014-02-28 Added 'origin' kwarg to `~.Axes.spy` +2010-08-05 + Added keyword arguments 'thetaunits' and 'runits' for polar plots. Fixed + PolarAxes so that when it set default Formatters, it marked them as such. + Fixed semilogx and semilogy to no longer blindly reset the ticker + information on the non-log axis. Axes.arrow can now accept unitized data. + - JRE -2014-02-27 Implemented separate horizontal/vertical axes padding to the - ImageGrid in the AxesGrid toolkit +2010-08-03 + Add support for MPLSETUPCFG variable for custom setup.cfg filename. Used + by sage buildbot to build an mpl w/ no gui support - JDH -2014-02-27 Allowed markevery property of matplotlib.lines.Line2D to be, an int - numpy fancy index, slice object, or float. The float behaviour - turns on markers at approximately equal display-coordinate-distances - along the line. +2010-08-01 + Create directory specified by MPLCONFIGDIR if it does not exist. - ADS -2014-02-25 In backend_qt4agg changed from using update -> repaint under - windows. See comment in source near ``self._priv_update`` for - longer explanation. +2010-07-20 + Return Qt4's default cursor when leaving the canvas - DSD -2014-01-02 `~.Axes.triplot` now returns the artist it adds and support of line and - marker kwargs has been improved. GBY +2010-07-06 + Tagging for mpl 1.0 at r8502 -2013-12-30 Made streamplot grid size consistent for different types of density - argument. A 30x30 grid is now used for both density=1 and - density=(1, 1). +2010-07-05 + Added Ben Root's patch to put 3D plots in arbitrary axes, allowing you to + mix 3d and 2d in different axes/subplots or to have multiple 3D plots in + one figure. See examples/mplot3d/subplot3d_demo.py - JDH -2013-12-03 Added a pure boxplot-drawing method that allow a more complete - customization of boxplots. It takes a list of dicts contains stats. - Also created a function (`.cbook.boxplot_stats`) that generates the - stats needed. +2010-07-05 + Preferred kwarg names in set_xlim are now 'left' and 'right'; in set_ylim, + 'bottom' and 'top'; original kwargs are still accepted without complaint. - + EF -2013-11-28 Added qhull extension module to perform Delaunay triangulation more - robustly than before. It is used by tri.Triangulation (and hence - all pyplot.tri* methods) and mlab.griddata. Deprecated - matplotlib.delaunay module. - IMT +2010-07-05 + TkAgg and FltkAgg backends are now consistent with other interactive + backends: when used in scripts from the command line (not from ipython + -pylab), show blocks, and can be called more than once. - EF -2013-11-05 Add power-law normalization method. This is useful for, - e.g., showing small populations in a "hist2d" histogram. +2010-07-02 + Modified CXX/WrapPython.h to fix "swab bug" on solaris so mpl can compile + on Solaris with CXX6 in the trunk. Closes tracker bug 3022815 - JDH -2013-10-27 Added get_rlabel_position and set_rlabel_position methods to - PolarAxes to control angular position of radial tick labels. +2010-06-30 + Added autoscale convenience method and corresponding pyplot function for + simplified control of autoscaling; and changed axis, set_xlim, and set_ylim + so that by default, they turn off the autoscaling on the relevant axis or + axes. Therefore one can call set_xlim before plotting a line, for example, + and the limits will be retained. - EF -2013-10-06 Add stride-based functions to mlab for easy creation of 2D arrays - with less memory. +2010-06-20 + Added Axes.tick_params and corresponding pyplot function to control tick + and tick label appearance after an Axes has been created. - EF -2013-10-06 Improve window and detrend functions in mlab, particulart support for - 2D arrays. +2010-06-09 + Allow Axes.grid to control minor gridlines; allow Axes.grid and Axis.grid + to control major and minor gridlines in the same method call. - EF -2013-10-06 Improve performance of all spectrum-related mlab functions and plots. +2010-06-06 + Change the way we do split/dividend adjustments in finance.py to handle + dividends and fix the zero division bug reported in sf bug 2949906 and + 2123566. Note that volume is not adjusted because the Yahoo CSV does not + distinguish between share split and dividend adjustments making it near + impossible to get volume adjustment right (unless we want to guess based on + the size of the adjustment or scrape the html tables, which we don't) - JDH -2013-10-06 Added support for magnitude, phase, and angle spectrums to - axes.specgram, and support for magnitude, phase, angle, and complex - spectrums to mlab-specgram. +2010-06-06 + Updated dateutil to 1.5 and pytz to 2010h. -2013-10-06 Added magnitude_spectrum, angle_spectrum, and phase_spectrum plots, - as well as magnitude_spectrum, angle_spectrum, phase_spectrum, - and complex_spectrum functions to mlab +2010-06-02 + Add error_kw kwarg to Axes.bar(). - EF -2013-07-12 Added support for datetime axes to 2d plots. Axis values are passed - through Axes.convert_xunits/Axes.convert_yunits before being used by - contour/contourf, pcolormesh and pcolor. +2010-06-01 + Fix pcolormesh() and QuadMesh to pass on kwargs as appropriate. - RM -2013-07-12 Allowed matplotlib.dates.date2num, matplotlib.dates.num2date, - and matplotlib.dates.datestr2num to accept n-d inputs. Also - factored in support for n-d arrays to matplotlib.dates.DateConverter - and matplotlib.units.Registry. +2010-05-18 + Merge mpl_toolkits.gridspec into the main tree. - JJL + +2010-05-04 + Improve backend_qt4 so it displays figures with the correct size - DSD + +2010-04-20 + Added generic support for connecting to a timer for events. This adds + TimerBase, TimerGTK, TimerQT, TimerWx, and TimerTk to the backends and a + new_timer() method to each backend's canvas to allow ease of creating a new + timer. - RM + +2010-04-20 + Added margins() Axes method and pyplot function. - EF -2013-06-26 Refactored the axes module: the axes module is now a folder, - containing the following submodule: - - _subplots.py, containing all the subplots helper methods - - _base.py, containing several private methods and a new - _AxesBase class. This _AxesBase class contains all the methods - that are not directly linked to plots of the "old" Axes - - _axes.py contains the Axes class. This class now inherits from - _AxesBase: it contains all "plotting" methods and labelling - methods. +2010-04-18 + update the axes_grid documentation. -JJL - This refactoring should not affect the API. Only private methods - are not importable from the axes module anymore. +2010-04-18 + Control MaxNLocator parameters after instantiation, and via + Axes.locator_params method, with corresponding pyplot function. -EF -2013-05-18 Added support for arbitrary rasterization resolutions to the - SVG backend. Previously the resolution was hard coded to 72 - dpi. Now the backend class takes a image_dpi argument for - its constructor, adjusts the image bounding box accordingly - and forwards a magnification factor to the image renderer. - The code and results now resemble those of the PDF backend. - - MW +2010-04-18 + Control ScalarFormatter offsets directly and via the + Axes.ticklabel_format() method, and add that to pyplot. -EF + +2010-04-16 + Add a close_event to the backends. -RM -2013-05-08 Changed behavior of hist when given stacked=True and normed=True. - Histograms are now stacked first, then the sum is normalized. - Previously, each histogram was normalized, then they were stacked. +2010-04-06 + modify axes_grid examples to use axes_grid1 and axisartist. -JJL -2013-04-25 Changed all instances of: +2010-04-06 + rebase axes_grid using axes_grid1 and axisartist modules. -JJL - from matplotlib import MatplotlibDeprecationWarning as mplDeprecation - to: +2010-04-06 + axes_grid toolkit is split into two separate modules, axes_grid1 and + axisartist. -JJL - from cbook import mplDeprecation +2010-04-05 + Speed up import: import pytz only if and when it is needed. It is not + needed if the rc timezone is UTC. - EF - and removed the import into the matplotlib namespace in __init__.py - Thomas Caswell +2010-04-03 + Added color kwarg to Axes.hist(), based on work by Jeff Klukas. - EF -2013-04-15 Added 'axes.xmargin' and 'axes.ymargin' to rpParams to set default - margins on auto-scaleing. - TAC +2010-03-24 + refactor colorbar code so that no cla() is necessary when mappable is + changed. -JJL + +2010-03-22 + fix incorrect rubber band during the zoom mode when mouse leaves the axes. + -JJL -2013-04-16 Added patheffect support for Line2D objects. -JJL +2010-03-21 + x/y key during the zoom mode only changes the x/y limits. -JJL -2013-03-31 Added support for arbitrary unstructured user-specified - triangulations to Axes3D.tricontour[f] - Damon McDougall +2010-03-20 + Added pyplot.sca() function suggested by JJL. - EF -2013-03-19 Added support for passing *linestyle* kwarg to `~.Axes.step` so all `~.Axes.plot` - kwargs are passed to the underlying `~.Axes.plot` call. -TAC +2010-03-20 + Added conditional support for new Tooltip API in gtk backend. - EF -2013-02-25 Added classes CubicTriInterpolator, UniformTriRefiner, TriAnalyzer - to matplotlib.tri module. - GBy +2010-03-20 + Changed plt.fig_subplot() to plt.subplots() after discussion on list, and + changed its API to return axes as a numpy object array (with control of + dimensions via squeeze keyword). FP. -2013-01-23 Add 'savefig.directory' to rcParams to remember and fill in the last - directory saved to for figure save dialogs - Martin Spacek +2010-03-13 + Manually brought in commits from branch:: -2013-01-13 Add eventplot method to axes and pyplot and EventCollection class - to collections. + ------------------------------------------------------------------------ + r8191 | leejjoon | 2010-03-13 + 17:27:57 -0500 (Sat, 13 Mar 2010) | 1 line -2013-01-08 Added two extra titles to axes which are flush with the left and - right edges of the plot respectively. - Andrew Dawson + fix the bug that handles for scatter are incorrectly set when dpi!=72. + Thanks to Ray Speth for the bug report. -2013-01-07 Add framealpha keyword argument to legend - PO +2010-03-03 + Manually brought in commits from branch via diff/patch (svnmerge is broken):: -2013-01-16 Till Stensitzki added a baseline feature to stackplot + ------------------------------------------------------------------------ + r8175 | leejjoon | 2010-03-03 + 10:03:30 -0800 (Wed, 03 Mar 2010) | 1 line -2012-12-22 Added classes for interpolation within triangular grids - (LinearTriInterpolator) and to find the triangles in which points - lie (TrapezoidMapTriFinder) to matplotlib.tri module. - IMT + fix arguments of allow_rasterization.draw_wrapper + ------------------------------------------------------------------------ + r8174 | jdh2358 | 2010-03-03 + 09:15:58 -0800 (Wed, 03 Mar 2010) | 1 line -2012-12-05 Added MatplotlibDeprecationWarning class for signaling deprecation. - Matplotlib developers can use this class as follows: + added support for favicon in docs build + ------------------------------------------------------------------------ + r8173 | jdh2358 | 2010-03-03 + 08:56:16 -0800 (Wed, 03 Mar 2010) | 1 line - from matplotlib import MatplotlibDeprecationWarning as mplDeprecation + applied Mattias get_bounds patch + ------------------------------------------------------------------------ + r8172 | jdh2358 | 2010-03-03 + 08:31:42 -0800 (Wed, 03 Mar 2010) | 1 line - In light of the fact that Python builtin DeprecationWarnings are - ignored by default as of Python 2.7, this class was put in to allow - for the signaling of deprecation, but via UserWarnings which are - not ignored by default. - PI + fix svnmerge download instructions + ------------------------------------------------------------------------ + r8171 | jdh2358 | 2010-03-03 + 07:47:48 -0800 (Wed, 03 Mar 2010) | 1 line -2012-11-27 Added the *mtext* parameter for supplying matplotlib.text.Text - instances to RendererBase.draw_tex and RendererBase.draw_text. - This allows backends to utilize additional text attributes, like - the alignment of text elements. - pwuertz +2010-02-25 + add annotation_demo3.py that demonstrates new functionality. -JJL -2012-11-26 deprecate matplotlib/mpl.py, which was used only in pylab.py and is - now replaced by the more suitable ``import matplotlib as mpl``. - PI +2010-02-25 + refactor Annotation to support arbitrary Transform as xycoords or + textcoords. Also, if a tuple of two coordinates is provided, they are + interpreted as coordinates for each x and y position. -JJL -2012-11-25 Make rc_context available via pyplot interface - PI +2010-02-24 + Added pyplot.fig_subplot(), to create a figure and a group of subplots in a + single call. This offers an easier pattern than manually making figures + and calling add_subplot() multiple times. FP -2012-11-16 plt.set_cmap no longer throws errors if there is not already - an active colorable artist, such as an image, and just sets - up the colormap to use from that point forward. - PI +2010-02-17 + Added Gokhan's and Mattias' customizable keybindings patch for the toolbar. + You can now set the keymap.* properties in the matplotlibrc file. + Newbindings were added for toggling log scaling on the x-axis. JDH -2012-11-16 Added the funcction _get_rbga_face, which is identical to - _get_rbg_face except it return a (r,g,b,a) tuble, to line2D. - Modified Line2D.draw to use _get_rbga_face to get the markerface - color so that any alpha set by markerfacecolor will respected. - - Thomas Caswell +2010-02-16 + Committed TJ's filled marker patch for left|right|bottom|top|full filled + markers. See examples/pylab_examples/filledmarker_demo.py. JDH -2012-11-13 Add a symmetric log normalization class to colors.py. - Also added some tests for the normalization class. - Till Stensitzki +2010-02-11 + Added 'bootstrap' option to boxplot. This allows bootstrap estimates of + median confidence intervals. Based on an initial patch by Paul Hobson. - + ADS -2012-11-12 Make axes.stem take at least one argument. - Uses a default range(n) when the first arg not provided. - Damon McDougall +2010-02-06 + Added setup.cfg "basedirlist" option to override setting in setupext.py + "basedir" dictionary; added "gnu0" platform requested by Benjamin Drung. - + EF -2012-11-09 Make plt.subplot() without arguments act as subplot(111) - PI +2010-02-06 + Added 'xy' scaling option to EllipseCollection. - EF -2012-11-08 Replaced plt.figure and plt.subplot calls by the newer, more - convenient single call to plt.subplots() in the documentation - examples - PI +2010-02-03 + Made plot_directive use a custom PlotWarning category, so that warnings can + be turned into fatal errors easily if desired. - FP -2012-10-05 Add support for saving animations as animated GIFs. - JVDP +2010-01-29 + Added draggable method to Legend to allow mouse drag placement. Thanks + Adam Fraser. JDH -2012-08-11 Fix path-closing bug in patches.Polygon, so that regardless - of whether the path is the initial one or was subsequently - set by set_xy(), get_xy() will return a closed path if and - only if get_closed() is True. Thanks to Jacob Vanderplas. - EF +2010-01-25 + Fixed a bug reported by Olle Engdegard, when using histograms with + stepfilled and log=True - MM -2012-08-05 When a norm is passed to contourf, either or both of the - vmin, vmax attributes of that norm are now respected. - Formerly they were respected only if both were - specified. In addition, vmin and/or vmax can now - be passed to contourf directly as kwargs. - EF +2010-01-16 + Upgraded CXX to 6.1.1 - JDH -2012-07-24 Contourf handles the extend kwarg by mapping the extended - ranges outside the normed 0-1 range so that they are - handled by colormap colors determined by the set_under - and set_over methods. Previously the extended ranges - were mapped to 0 or 1 so that the "under" and "over" - colormap colors were ignored. This change also increases - slightly the color contrast for a given set of contour - levels. - EF +2009-01-16 + Don't create minor ticks on top of existing major ticks. Patch by Neil + Crighton. -ADS -2012-06-24 Make use of mathtext in tick labels configurable - DSD +2009-01-16 + Ensure three minor ticks always drawn (SF# 2924245). Patch by Neil + Crighton. -ADS -2012-06-05 Images loaded through PIL are now ordered correctly - CG +2010-01-16 + Applied patch by Ian Thomas to fix two contouring problems: now contourf + handles interior masked regions, and the boundaries of line and filled + contours coincide. - EF -2012-06-02 Add new Axes method and pyplot function, hist2d. - PO +2009-01-11 + The color of legend patch follows the rc parameters axes.facecolor and + axes.edgecolor. -JJL -2012-05-31 Remove support for 'cairo.' style of backend specification. - Deprecate 'cairo.format' and 'savefig.extension' rcParams and - replace with 'savefig.format'. - Martin Spacek +2009-01-11 + adjustable of Axes can be "box-forced" which allow sharing axes. -JJL -2012-05-29 pcolormesh now obeys the passed in "edgecolor" kwarg. - To support this, the "shading" argument to pcolormesh now only - takes "flat" or "gouraud". To achieve the old "faceted" behavior, - pass "edgecolors='k'". - MGD +2009-01-11 + Add add_click and pop_click methods in BlockingContourLabeler. -JJL -2012-05-22 Added radius kwarg to pie charts. - HH +2010-01-03 + Added rcParams['axes.color_cycle'] - EF -2012-05-22 Collections now have a setting "offset_position" to select whether - the offsets are given in "screen" coordinates (default, - following the old behavior) or "data" coordinates. This is currently - used internally to improve the performance of hexbin. +2010-01-03 + Added Pierre's qt4 formlayout editor and toolbar button - JDH - As a result, the "draw_path_collection" backend methods have grown - a new argument "offset_position". - MGD +2009-12-31 + Add support for using math text as marker symbols (Thanks to tcb) - MGD + +2009-12-31 + Commit a workaround for a regression in PyQt4-4.6.{0,1} - DSD -2012-05-04 Add a new argument to pie charts - startingangle - that - allows one to specify the angle offset for the first wedge - of the chart. - EP +2009-12-22 + Fix cmap data for gist_earth_r, etc. -JJL -2012-05-03 symlog scale now obeys the logarithmic base. Previously, it was - completely ignored and always treated as base e. - MGD +2009-12-20 + spines: put spines in data coordinates, add set_bounds() call. -ADS -2012-05-03 Allow linscalex/y keyword to symlog scale that allows the size of - the linear portion relative to the logarithmic portion to be - adjusted. - MGD +2009-12-18 + Don't limit notch size in boxplot to q1-q3 range, as this is effectively + making the data look better than it is. - ADS -2012-04-14 Added new plot style: stackplot. This new feature supports stacked - area plots. - Damon McDougall +2009-12-18 + mlab.prctile handles even-length data, such that the median is the mean of + the two middle values. - ADS -2012-04-06 When path clipping changes a LINETO to a MOVETO, it also - changes any CLOSEPOLY command to a LINETO to the initial - point. This fixes a problem with pdf and svg where the - CLOSEPOLY would then draw a line to the latest MOVETO - position instead of the intended initial position. - JKS +2009-12-15 + Add raw-image (unsampled) support for the ps backend. - JJL -2012-03-27 Add support to ImageGrid for placing colorbars only at - one edge of each column/row. - RMM +2009-12-14 + Add patch_artist kwarg to boxplot, but keep old default. Convert + boxplot_demo2.py to use the new patch_artist. - ADS -2012-03-07 Refactor movie writing into useful classes that make use - of pipes to write image data to ffmpeg or mencoder. Also - improve settings for these and the ability to pass custom - options. - RMM +2009-12-06 + axes_grid: reimplemented AxisArtist with FloatingAxes support. Added new + examples. - JJL -2012-02-29 errorevery keyword added to errorbar to enable errorbar - subsampling. fixes issue #600. +2009-12-01 + Applied Laurent Dufrechou's patch to improve blitting with the qt4 backend + - DSD -2012-02-28 Added plot_trisurf to the mplot3d toolkit. This supports plotting - three dimensional surfaces on an irregular grid. - Damon McDougall +2009-11-13 + The pdf backend now allows changing the contents of a pdf file's + information dictionary via PdfPages.infodict. - JKS -2012-01-23 The radius labels in polar plots no longer use a fixed - padding, but use a different alignment depending on the - quadrant they are in. This fixes numerical problems when - (rmax - rmin) gets too small. - MGD +2009-11-12 + font_manager.py should no longer cause EINTR on Python 2.6 (but will on the + 2.5 version of subprocess). Also the fc-list command in that file was fixed + so now it should actually find the list of fontconfig fonts. - JKS -2012-01-08 Add axes.streamplot to plot streamlines of a velocity field. - Adapted from Tom Flannaghan streamplot implementation. -TSY +2009-11-10 + Single images, and all images in renderers with option_image_nocomposite + (i.e. agg, macosx and the svg backend when rcParams['svg.image_noscale'] is + True), are now drawn respecting the zorder relative to other artists. (Note + that there may now be inconsistencies across backends when more than one + image is drawn at varying zorders, but this change introduces correct + behavior for the backends in which it's easy to do so.) -2011-12-29 ps and pdf markers are now stroked only if the line width - is nonzero for consistency with agg, fixes issue #621. - JKS +2009-10-21 + Make AutoDateLocator more configurable by adding options to control the + maximum and minimum number of ticks. Also add control of the intervals to + be used for ticking. This does not change behavior but opens previously + hard-coded behavior to runtime modification`. - RMM -2011-12-27 Work around an EINTR bug in some versions of subprocess. - JKS +2009-10-19 + Add "path_effects" support for Text and Patch. See + examples/pylab_examples/patheffect_demo.py -JJL -2011-10-25 added support for \operatorname to mathtext, - including the ability to insert spaces, such as - $\operatorname{arg\,max}$ - PI +2009-10-19 + Add "use_clabeltext" option to clabel. If True, clabels will be created + with ClabelText class, which recalculates rotation angle of the label + during the drawing time. -JJL -2011-08-18 Change api of Axes.get_tightbbox and add an optional - keyword parameter *call_axes_locator*. - JJL +2009-10-16 + Make AutoDateFormatter actually use any specified timezone setting.This was + only working correctly when no timezone was specified. - RMM -2011-07-29 A new rcParam "axes.formatter.use_locale" was added, that, - when True, will use the current locale to format tick - labels. This means that, for example, in the fr_FR locale, - ',' will be used as a decimal separator. - MGD +2009-09-27 + Beginnings of a capability to test the pdf backend. - JKS -2011-07-15 The set of markers available in the plot() and scatter() - commands has been unified. In general, this gives more - options to both than were previously available, however, - there is one backward-incompatible change to the markers in - scatter: - - "d" used to mean "diamond", it now means "narrow - diamond". "D" can be used for a "diamond". - - -MGD - -2011-07-13 Fix numerical problems in symlog scale, particularly when - linthresh <= 1.0. Symlog plots may look different if one - was depending on the old broken behavior - MGD - -2011-07-10 Fixed argument handling error in tripcolor/triplot/tricontour, - issue #203. - IMT - -2011-07-08 Many functions added to mplot3d.axes3d to bring Axes3D - objects more feature-parity with regular Axes objects. - Significant revisions to the documentation as well. - - BVR - -2011-07-07 Added compatibility with IPython strategy for picking - a version of Qt4 support, and an rcParam for making - the choice explicitly: backend.qt4. - EF - -2011-07-07 Modified AutoMinorLocator to improve automatic choice of - the number of minor intervals per major interval, and - to allow one to specify this number via a kwarg. - EF - -2011-06-28 3D versions of scatter, plot, plot_wireframe, plot_surface, - bar3d, and some other functions now support empty inputs. - BVR - -2011-06-22 Add set_theta_offset, set_theta_direction and - set_theta_zero_location to polar axes to control the - location of 0 and directionality of theta. - MGD - -2011-06-22 Add axes.labelweight parameter to set font weight to axis - labels - MGD. - -2011-06-20 Add pause function to pyplot. - EF - -2011-06-16 Added *bottom* keyword parameter for the stem command. - Also, implemented a legend handler for the stem plot. - - JJL - -2011-06-16 Added legend.frameon rcParams. - Mike Kaufman - -2011-05-31 Made backend_qt4 compatible with PySide . - Gerald Storer - -2011-04-17 Disable keyboard auto-repeat in qt4 backend by ignoring - key events resulting from auto-repeat. This makes - constrained zoom/pan work. - EF - -2011-04-14 interpolation="nearest" always interpolate images. A new - mode "none" is introduced for no interpolation - JJL - -2011-04-03 Fixed broken pick interface to AsteriskCollection objects - used by scatter. - EF - -2011-04-01 The plot directive Sphinx extension now supports all of the - features in the Numpy fork of that extension. These - include doctest formatting, an 'include-source' option, and - a number of new configuration options. - MGD - -2011-03-29 Wrapped ViewVCCachedServer definition in a factory function. - This class now inherits from urllib2.HTTPSHandler in order - to fetch data from github, but HTTPSHandler is not defined - if python was built without SSL support. - DSD - -2011-03-10 Update pytz version to 2011c, thanks to Simon Cross. - JKS - -2011-03-06 Add standalone tests.py test runner script. - JKS - -2011-03-06 Set edgecolor to 'face' for scatter asterisk-type - symbols; this fixes a bug in which these symbols were - not responding to the c kwarg. The symbols have no - face area, so only the edgecolor is visible. - EF - -2011-02-27 Support libpng version 1.5.x; suggestion by Michael - Albert. Changed installation specification to a - minimum of libpng version 1.2. - EF - -2011-02-20 clabel accepts a callable as an fmt kwarg; modified - patch by Daniel Hyams. - EF - -2011-02-18 scatter([], []) is now valid. Also fixed issues - with empty collections - BVR - -2011-02-07 Quick workaround for dviread bug #3175113 - JKS - -2011-02-05 Add cbook memory monitoring for Windows, using - tasklist. - EF - -2011-02-05 Speed up Normalize and LogNorm by using in-place - operations and by using float32 for float32 inputs - and for ints of 2 bytes or shorter; based on - patch by Christoph Gohlke. - EF - -2011-02-04 Changed imshow to use rgba as uint8 from start to - finish, instead of going through an intermediate - step as double precision; thanks to Christoph Gohlke. - EF - -2011-01-13 Added zdir and offset arguments to contourf3d to - bring contourf3d in feature parity with contour3d. - BVR - -2011-01-04 Tag 1.0.1 for release at r8896 - -2011-01-03 Added display of ticker offset to 3d plots. - BVR - -2011-01-03 Turn off tick labeling on interior subplots for - pyplots.subplots when sharex/sharey is True. - JDH - -2010-12-29 Implement axes_divider.HBox and VBox. -JJL - - -2010-11-22 Fixed error with Hammer projection. - BVR - -2010-11-12 Fixed the placement and angle of axis labels in 3D plots. - BVR - -2010-11-07 New rc parameters examples.download and examples.directory - allow bypassing the download mechanism in get_sample_data. - - JKS - -2010-10-04 Fix JPEG saving bug: only accept the kwargs documented - by PIL for JPEG files. - JKS - -2010-09-15 Remove unused _wxagg extension and numerix.h. - EF - -2010-08-25 Add new framework for doing animations with examples.- RM - -2010-08-21 Remove unused and inappropriate methods from Tick classes: - set_view_interval, get_minpos, and get_data_interval are - properly found in the Axis class and don't need to be - duplicated in XTick and YTick. - EF - -2010-08-21 Change Axis.set_view_interval() so that when updating an - existing interval, it respects the orientation of that - interval, and can enlarge but not reduce the interval. - This fixes a bug in which Axis.set_ticks would - change the view limits of an inverted axis. Whether - set_ticks should be affecting the viewLim at all remains - an open question. - EF - -2010-08-16 Handle NaN's correctly in path analysis routines. Fixes a - bug where the best location for a legend was not calculated - correctly when the line contains NaNs. - MGD - -2010-08-14 Fix bug in patch alpha handling, and in bar color kwarg - EF - -2010-08-12 Removed all traces of numerix module after 17 months of - deprecation warnings. - EF - -2010-08-05 Added keyword arguments 'thetaunits' and 'runits' for polar - plots. Fixed PolarAxes so that when it set default - Formatters, it marked them as such. Fixed semilogx and - semilogy to no longer blindly reset the ticker information - on the non-log axis. Axes.arrow can now accept unitized - data. - JRE - -2010-08-03 Add support for MPLSETUPCFG variable for custom setup.cfg - filename. Used by sage buildbot to build an mpl w/ no gui - support - JDH - -2010-08-01 Create directory specified by MPLCONFIGDIR if it does - not exist. - ADS - -2010-07-20 Return Qt4's default cursor when leaving the canvas - DSD - -2010-07-06 Tagging for mpl 1.0 at r8502 - - -2010-07-05 Added Ben Root's patch to put 3D plots in arbitrary axes, - allowing you to mix 3d and 2d in different axes/subplots or - to have multiple 3D plots in one figure. See - examples/mplot3d/subplot3d_demo.py - JDH - -2010-07-05 Preferred kwarg names in set_xlim are now 'left' and - 'right'; in set_ylim, 'bottom' and 'top'; original - kwargs are still accepted without complaint. - EF - -2010-07-05 TkAgg and FltkAgg backends are now consistent with other - interactive backends: when used in scripts from the - command line (not from ipython -pylab), show blocks, - and can be called more than once. - EF - -2010-07-02 Modified CXX/WrapPython.h to fix "swab bug" on solaris so - mpl can compile on Solaris with CXX6 in the trunk. Closes - tracker bug 3022815 - JDH - -2010-06-30 Added autoscale convenience method and corresponding - pyplot function for simplified control of autoscaling; - and changed axis, set_xlim, and set_ylim so that by - default, they turn off the autoscaling on the relevant - axis or axes. Therefore one can call set_xlim before - plotting a line, for example, and the limits will be - retained. - EF - -2010-06-20 Added Axes.tick_params and corresponding pyplot function - to control tick and tick label appearance after an Axes - has been created. - EF - -2010-06-09 Allow Axes.grid to control minor gridlines; allow - Axes.grid and Axis.grid to control major and minor - gridlines in the same method call. - EF - -2010-06-06 Change the way we do split/dividend adjustments in - finance.py to handle dividends and fix the zero division bug reported - in sf bug 2949906 and 2123566. Note that volume is not adjusted - because the Yahoo CSV does not distinguish between share - split and dividend adjustments making it near impossible to - get volume adjustment right (unless we want to guess based - on the size of the adjustment or scrape the html tables, - which we don't) - JDH - -2010-06-06 Updated dateutil to 1.5 and pytz to 2010h. - -2010-06-02 Add error_kw kwarg to Axes.bar(). - EF - -2010-06-01 Fix pcolormesh() and QuadMesh to pass on kwargs as - appropriate. - RM - -2010-05-18 Merge mpl_toolkits.gridspec into the main tree. - JJL - -2010-05-04 Improve backend_qt4 so it displays figures with the - correct size - DSD - -2010-04-20 Added generic support for connecting to a timer for events. This - adds TimerBase, TimerGTK, TimerQT, TimerWx, and TimerTk to - the backends and a new_timer() method to each backend's - canvas to allow ease of creating a new timer. - RM - -2010-04-20 Added margins() Axes method and pyplot function. - EF - -2010-04-18 update the axes_grid documentation. -JJL - -2010-04-18 Control MaxNLocator parameters after instantiation, - and via Axes.locator_params method, with corresponding - pyplot function. -EF - -2010-04-18 Control ScalarFormatter offsets directly and via the - Axes.ticklabel_format() method, and add that to pyplot. -EF - -2010-04-16 Add a close_event to the backends. -RM - -2010-04-06 modify axes_grid examples to use axes_grid1 and axisartist. -JJL - -2010-04-06 rebase axes_grid using axes_grid1 and axisartist modules. -JJL - -2010-04-06 axes_grid toolkit is split into two separate modules, - axes_grid1 and axisartist. -JJL - -2010-04-05 Speed up import: import pytz only if and when it is - needed. It is not needed if the rc timezone is UTC. - EF - -2010-04-03 Added color kwarg to Axes.hist(), based on work by - Jeff Klukas. - EF - -2010-03-24 refactor colorbar code so that no cla() is necessary when - mappable is changed. -JJL - -2010-03-22 fix incorrect rubber band during the zoom mode when mouse - leaves the axes. -JJL - -2010-03-21 x/y key during the zoom mode only changes the x/y limits. -JJL - -2010-03-20 Added pyplot.sca() function suggested by JJL. - EF - -2010-03-20 Added conditional support for new Tooltip API in gtk backend. - EF - -2010-03-20 Changed plt.fig_subplot() to plt.subplots() after discussion on - list, and changed its API to return axes as a numpy object array - (with control of dimensions via squeeze keyword). FP. - -2010-03-13 Manually brought in commits from branch:: - - ------------------------------------------------------------------------ - r8191 | leejjoon | 2010-03-13 17:27:57 -0500 (Sat, 13 Mar 2010) | 1 line - - fix the bug that handles for scatter are incorrectly set when dpi!=72. - Thanks to Ray Speth for the bug report. - - -2010-03-03 Manually brought in commits from branch via diff/patch (svnmerge is broken):: - - ------------------------------------------------------------------------ - r8175 | leejjoon | 2010-03-03 10:03:30 -0800 (Wed, 03 Mar 2010) | 1 line - - fix arguments of allow_rasterization.draw_wrapper - ------------------------------------------------------------------------ - r8174 | jdh2358 | 2010-03-03 09:15:58 -0800 (Wed, 03 Mar 2010) | 1 line - - added support for favicon in docs build - ------------------------------------------------------------------------ - r8173 | jdh2358 | 2010-03-03 08:56:16 -0800 (Wed, 03 Mar 2010) | 1 line - - applied Mattias get_bounds patch - ------------------------------------------------------------------------ - r8172 | jdh2358 | 2010-03-03 08:31:42 -0800 (Wed, 03 Mar 2010) | 1 line - - fix svnmerge download instructions - ------------------------------------------------------------------------ - r8171 | jdh2358 | 2010-03-03 07:47:48 -0800 (Wed, 03 Mar 2010) | 1 line - - - -2010-02-25 add annotation_demo3.py that demonstrates new functionality. -JJL - -2010-02-25 refactor Annotation to support arbitrary Transform as xycoords - or textcoords. Also, if a tuple of two coordinates is provided, - they are interpreted as coordinates for each x and y position. - -JJL - -2010-02-24 Added pyplot.fig_subplot(), to create a figure and a group of - subplots in a single call. This offers an easier pattern than - manually making figures and calling add_subplot() multiple times. FP - -2010-02-17 Added Gokhan's and Mattias' customizable keybindings patch - for the toolbar. You can now set the keymap.* properties - in the matplotlibrc file. Newbindings were added for - toggling log scaling on the x-axis. JDH - -2010-02-16 Committed TJ's filled marker patch for - left|right|bottom|top|full filled markers. See - examples/pylab_examples/filledmarker_demo.py. JDH - -2010-02-11 Added 'bootstrap' option to boxplot. This allows bootstrap - estimates of median confidence intervals. Based on an - initial patch by Paul Hobson. - ADS - -2010-02-06 Added setup.cfg "basedirlist" option to override setting - in setupext.py "basedir" dictionary; added "gnu0" - platform requested by Benjamin Drung. - EF - -2010-02-06 Added 'xy' scaling option to EllipseCollection. - EF - -2010-02-03 Made plot_directive use a custom PlotWarning category, so that - warnings can be turned into fatal errors easily if desired. - FP - -2010-01-29 Added draggable method to Legend to allow mouse drag - placement. Thanks Adam Fraser. JDH - -2010-01-25 Fixed a bug reported by Olle Engdegard, when using - histograms with stepfilled and log=True - MM - -2010-01-16 Upgraded CXX to 6.1.1 - JDH - -2009-01-16 Don't create minor ticks on top of existing major - ticks. Patch by Neil Crighton. -ADS - -2009-01-16 Ensure three minor ticks always drawn (SF# 2924245). Patch - by Neil Crighton. -ADS - -2010-01-16 Applied patch by Ian Thomas to fix two contouring - problems: now contourf handles interior masked regions, - and the boundaries of line and filled contours coincide. - EF - -2009-01-11 The color of legend patch follows the rc parameters - axes.facecolor and axes.edgecolor. -JJL - -2009-01-11 adjustable of Axes can be "box-forced" which allow - sharing axes. -JJL - -2009-01-11 Add add_click and pop_click methods in - BlockingContourLabeler. -JJL - - -2010-01-03 Added rcParams['axes.color_cycle'] - EF - -2010-01-03 Added Pierre's qt4 formlayout editor and toolbar button - JDH - -2009-12-31 Add support for using math text as marker symbols (Thanks to tcb) - - MGD - -2009-12-31 Commit a workaround for a regression in PyQt4-4.6.{0,1} - DSD - -2009-12-22 Fix cmap data for gist_earth_r, etc. -JJL - -2009-12-20 spines: put spines in data coordinates, add set_bounds() - call. -ADS - -2009-12-18 Don't limit notch size in boxplot to q1-q3 range, as this - is effectively making the data look better than it is. - ADS - -2009-12-18 mlab.prctile handles even-length data, such that the median - is the mean of the two middle values. - ADS - -2009-12-15 Add raw-image (unsampled) support for the ps backend. - JJL - -2009-12-14 Add patch_artist kwarg to boxplot, but keep old default. - Convert boxplot_demo2.py to use the new patch_artist. - ADS - -2009-12-06 axes_grid: reimplemented AxisArtist with FloatingAxes support. - Added new examples. - JJL - -2009-12-01 Applied Laurent Dufrechou's patch to improve blitting with - the qt4 backend - DSD - -2009-11-13 The pdf backend now allows changing the contents of - a pdf file's information dictionary via PdfPages.infodict. - JKS - -2009-11-12 font_manager.py should no longer cause EINTR on Python 2.6 - (but will on the 2.5 version of subprocess). Also the - fc-list command in that file was fixed so now it should - actually find the list of fontconfig fonts. - JKS - -2009-11-10 Single images, and all images in renderers with - option_image_nocomposite (i.e. agg, macosx and the svg - backend when rcParams['svg.image_noscale'] is True), are - now drawn respecting the zorder relative to other - artists. (Note that there may now be inconsistencies across - backends when more than one image is drawn at varying - zorders, but this change introduces correct behavior for - the backends in which it's easy to do so.) - -2009-10-21 Make AutoDateLocator more configurable by adding options - to control the maximum and minimum number of ticks. Also - add control of the intervals to be used for ticking. This - does not change behavior but opens previously hard-coded - behavior to runtime modification`. - RMM - -2009-10-19 Add "path_effects" support for Text and Patch. See - examples/pylab_examples/patheffect_demo.py -JJL - -2009-10-19 Add "use_clabeltext" option to clabel. If True, clabels - will be created with ClabelText class, which recalculates - rotation angle of the label during the drawing time. -JJL - -2009-10-16 Make AutoDateFormatter actually use any specified - timezone setting.This was only working correctly - when no timezone was specified. - RMM - -2009-09-27 Beginnings of a capability to test the pdf backend. - JKS - -2009-09-27 Add a savefig.extension rcparam to control the default - filename extension used by savefig. - JKS +2009-09-27 + Add a savefig.extension rcparam to control the default filename extension + used by savefig. - JKS =============================================== -2009-09-21 Tagged for release 0.99.1 - -2009-09-20 Fix usetex spacing errors in pdf backend. - JKS - -2009-09-20 Add Sphinx extension to highlight IPython console sessions, - originally authored (I think) by Michael Droetboom. - FP - -2009-09-20 Fix off-by-one error in dviread.Tfm, and additionally protect - against exceptions in case a dvi font is missing some metrics. - JKS +2009-09-21 + Tagged for release 0.99.1 -2009-09-15 Implement draw_text and draw_tex method of backend_base using - the textpath module. Implement draw_tex method of the svg - backend. - JJL +2009-09-20 + Fix usetex spacing errors in pdf backend. - JKS -2009-09-15 Don't fail on AFM files containing floating-point bounding boxes - JKS +2009-09-20 + Add Sphinx extension to highlight IPython console sessions, originally + authored (I think) by Michael Droetboom. - FP -2009-09-13 AxesGrid : add modified version of colorbar. Add colorbar - location howto. - JJL +2009-09-20 + Fix off-by-one error in dviread.Tfm, and additionally protect against + exceptions in case a dvi font is missing some metrics. - JKS -2009-09-07 AxesGrid : implemented axisline style. - Added a demo examples/axes_grid/demo_axisline_style.py- JJL +2009-09-15 + Implement draw_text and draw_tex method of backend_base using the textpath + module. Implement draw_tex method of the svg backend. - JJL -2009-09-04 Make the textpath class as a separate module - (textpath.py). Add support for mathtext and tex.- JJL +2009-09-15 + Don't fail on AFM files containing floating-point bounding boxes - JKS -2009-09-01 Added support for Gouraud interpolated triangles. - pcolormesh now accepts shading='gouraud' as an option. - MGD +2009-09-13 + AxesGrid : add modified version of colorbar. Add colorbar location howto. - + JJL -2009-08-29 Added matplotlib.testing package, which contains a Nose - plugin and a decorator that lets tests be marked as - KnownFailures - ADS +2009-09-07 + AxesGrid : implemented axisline style. Added a demo + examples/axes_grid/demo_axisline_style.py- JJL -2009-08-20 Added scaled dict to AutoDateFormatter for customized - scales - JDH +2009-09-04 + Make the textpath class as a separate module (textpath.py). Add support for + mathtext and tex.- JJL -2009-08-15 Pyplot interface: the current image is now tracked at the - figure and axes level, addressing tracker item 1656374. - EF +2009-09-01 + Added support for Gouraud interpolated triangles. pcolormesh now accepts + shading='gouraud' as an option. - MGD -2009-08-15 Docstrings are now manipulated with decorators defined - in a new module, docstring.py, thanks to Jason Coombs. - EF +2009-08-29 + Added matplotlib.testing package, which contains a Nose plugin and a + decorator that lets tests be marked as KnownFailures - ADS -2009-08-14 Add support for image filtering for agg back end. See the example - demo_agg_filter.py. -JJL +2009-08-20 + Added scaled dict to AutoDateFormatter for customized scales - JDH -2009-08-09 AnnotationBbox added. Similar to Annotation, but works with - OffsetBox instead of Text. See the example - demo_annotation_box.py. -JJL +2009-08-15 + Pyplot interface: the current image is now tracked at the figure and axes + level, addressing tracker item 1656374. - EF -2009-08-07 BboxImage implemented. Two examples, demo_bboximage.py and - demo_ribbon_box.py added. - JJL +2009-08-15 + Docstrings are now manipulated with decorators defined in a new module, + docstring.py, thanks to Jason Coombs. - EF -2009-08-07 In an effort to simplify the backend API, all clipping rectangles - and paths are now passed in using GraphicsContext objects, even - on collections and images. Therefore: +2009-08-14 + Add support for image filtering for agg back end. See the example + demo_agg_filter.py. -JJL - draw_path_collection(self, master_transform, cliprect, clippath, - clippath_trans, paths, all_transforms, offsets, - offsetTrans, facecolors, edgecolors, linewidths, - linestyles, antialiaseds, urls) +2009-08-09 + AnnotationBbox added. Similar to Annotation, but works with OffsetBox + instead of Text. See the example demo_annotation_box.py. -JJL - becomes: +2009-08-07 + BboxImage implemented. Two examples, demo_bboximage.py and + demo_ribbon_box.py added. - JJL - draw_path_collection(self, gc, master_transform, paths, all_transforms, - offsets, offsetTrans, facecolors, edgecolors, - linewidths, linestyles, antialiaseds, urls) +2009-08-07 + In an effort to simplify the backend API, all clipping rectangles and paths + are now passed in using GraphicsContext objects, even on collections and + images. Therefore:: + draw_path_collection(self, master_transform, cliprect, clippath, + clippath_trans, paths, all_transforms, offsets, + offsetTrans, facecolors, edgecolors, linewidths, + linestyles, antialiaseds, urls) + becomes:: - draw_quad_mesh(self, master_transform, cliprect, clippath, - clippath_trans, meshWidth, meshHeight, coordinates, - offsets, offsetTrans, facecolors, antialiased, - showedges) + draw_path_collection(self, gc, master_transform, paths, all_transforms, + offsets, offsetTrans, facecolors, edgecolors, + linewidths, linestyles, antialiaseds, urls) - becomes: + :: - draw_quad_mesh(self, gc, master_transform, meshWidth, meshHeight, - coordinates, offsets, offsetTrans, facecolors, - antialiased, showedges) + draw_quad_mesh(self, master_transform, cliprect, clippath, + clippath_trans, meshWidth, meshHeight, coordinates, + offsets, offsetTrans, facecolors, antialiased, + showedges) + becomes:: + draw_quad_mesh(self, gc, master_transform, meshWidth, meshHeight, + coordinates, offsets, offsetTrans, facecolors, + antialiased, showedges) - draw_image(self, x, y, im, bbox, clippath=None, clippath_trans=None) + :: - becomes: + draw_image(self, x, y, im, bbox, clippath=None, clippath_trans=None) - draw_image(self, gc, x, y, im) + becomes:: - - MGD + draw_image(self, gc, x, y, im) -2009-08-06 Tagging the 0.99.0 release at svn r7397 - JDH + - MGD - * fixed an alpha colormapping bug posted on sf 2832575 +2009-08-06 + Tagging the 0.99.0 release at svn r7397 - JDH - * fix typo in axes_divider.py. use nanmin, nanmax in angle_helper.py - (patch by Christoph Gohlke) + * fixed an alpha colormapping bug posted on sf 2832575 - * remove dup gui event in enter/leave events in gtk + * fix typo in axes_divider.py. use nanmin, nanmax in angle_helper.py (patch + by Christoph Gohlke) - * lots of fixes for os x binaries (Thanks Russell Owen) + * remove dup gui event in enter/leave events in gtk - * attach gtk events to mpl events -- fixes sf bug 2816580 + * lots of fixes for os x binaries (Thanks Russell Owen) - * applied sf patch 2815064 (middle button events for wx) and - patch 2818092 (resize events for wx) + * attach gtk events to mpl events -- fixes sf bug 2816580 - * fixed boilerplate.py so it doesn't break the ReST docs. + * applied sf patch 2815064 (middle button events for wx) and patch 2818092 + (resize events for wx) - * removed a couple of cases of mlab.load + * fixed boilerplate.py so it doesn't break the ReST docs. - * fixed rec2csv win32 file handle bug from sf patch 2831018 + * removed a couple of cases of mlab.load - * added two examples from Josh Hemann: examples/pylab_examples/barchart_demo2.py - and examples/pylab_examples/boxplot_demo2.py + * fixed rec2csv win32 file handle bug from sf patch 2831018 - * handled sf bugs 2831556 and 2830525; better bar error messages and - backend driver configs + * added two examples from Josh Hemann: + examples/pylab_examples/barchart_demo2.py and + examples/pylab_examples/boxplot_demo2.py - * added miktex win32 patch from sf patch 2820194 + * handled sf bugs 2831556 and 2830525; better bar error messages and + backend driver configs - * apply sf patches 2830233 and 2823885 for osx setup and 64 bit; thanks Michiel + * added miktex win32 patch from sf patch 2820194 -2009-08-04 Made cbook.get_sample_data make use of the ETag and Last-Modified - headers of mod_dav_svn. - JKS + * apply sf patches 2830233 and 2823885 for osx setup and 64 bit; thanks + Michiel -2009-08-03 Add PathCollection; modify contourf to use complex - paths instead of simple paths with cuts. - EF +2009-08-04 + Made cbook.get_sample_data make use of the ETag and Last-Modified headers + of mod_dav_svn. - JKS +2009-08-03 + Add PathCollection; modify contourf to use complex paths instead of simple + paths with cuts. - EF -2009-08-03 Fixed boilerplate.py so it doesn't break the ReST docs. - JKS +2009-08-03 + Fixed boilerplate.py so it doesn't break the ReST docs. - JKS -2009-08-03 pylab no longer provides a load and save function. These - are available in matplotlib.mlab, or you can use - numpy.loadtxt and numpy.savetxt for text files, or np.save - and np.load for binary numpy arrays. - JDH +2009-08-03 + pylab no longer provides a load and save function. These are available in + matplotlib.mlab, or you can use numpy.loadtxt and numpy.savetxt for text + files, or np.save and np.load for binary numpy arrays. - JDH -2009-07-31 Added cbook.get_sample_data for urllib enabled fetching and - caching of data needed for examples. See - examples/misc/sample_data_demo.py - JDH +2009-07-31 + Added cbook.get_sample_data for urllib enabled fetching and caching of data + needed for examples. See examples/misc/sample_data_demo.py - JDH -2009-07-31 Tagging 0.99.0.rc1 at 7314 - MGD +2009-07-31 + Tagging 0.99.0.rc1 at 7314 - MGD -2009-07-30 Add set_cmap and register_cmap, and improve get_cmap, - to provide convenient handling of user-generated - colormaps. Reorganized _cm and cm modules. - EF +2009-07-30 + Add set_cmap and register_cmap, and improve get_cmap, to provide convenient + handling of user-generated colormaps. Reorganized _cm and cm modules. - EF -2009-07-28 Quiver speed improved, thanks to tip by Ray Speth. -EF +2009-07-28 + Quiver speed improved, thanks to tip by Ray Speth. -EF -2009-07-27 Simplify argument handling code for plot method. -EF +2009-07-27 + Simplify argument handling code for plot method. -EF -2009-07-25 Allow "plot(1, 2, 'r*')" to work. - EF +2009-07-25 + Allow "plot(1, 2, 'r*')" to work. - EF -2009-07-22 Added an 'interp' keyword to griddata so the faster linear - interpolation method can be chosen. Default is 'nn', so - default behavior (using natural neighbor method) is unchanged (JSW) +2009-07-22 + Added an 'interp' keyword to griddata so the faster linear interpolation + method can be chosen. Default is 'nn', so default behavior (using natural + neighbor method) is unchanged (JSW) -2009-07-22 Improved boilerplate.py so that it generates the correct - signatures for pyplot functions. - JKS +2009-07-22 + Improved boilerplate.py so that it generates the correct signatures for + pyplot functions. - JKS -2009-07-19 Fixed the docstring of Axes.step to reflect the correct - meaning of the kwargs "pre" and "post" - See SF bug - \https://sourceforge.net/tracker/index.php?func=detail&aid=2823304&group_id=80706&atid=560720 - - JDH +2009-07-19 + Fixed the docstring of Axes.step to reflect the correct meaning of the + kwargs "pre" and "post" - See SF bug + \https://sourceforge.net/tracker/index.php?func=detail&aid=2823304&group_id=80706&atid=560720 + - JDH -2009-07-18 Fix support for hatches without color fills to pdf and svg - backends. Add an example of that to hatch_demo.py. - JKS +2009-07-18 + Fix support for hatches without color fills to pdf and svg backends. Add an + example of that to hatch_demo.py. - JKS -2009-07-17 Removed fossils from swig version of agg backend. - EF +2009-07-17 + Removed fossils from swig version of agg backend. - EF -2009-07-14 initial submission of the annotation guide. -JJL +2009-07-14 + initial submission of the annotation guide. -JJL -2009-07-14 axes_grid : minor improvements in anchored_artists and - inset_locator. -JJL +2009-07-14 + axes_grid : minor improvements in anchored_artists and inset_locator. -JJL -2009-07-14 Fix a few bugs in ConnectionStyle algorithms. Add - ConnectionPatch class. -JJL +2009-07-14 + Fix a few bugs in ConnectionStyle algorithms. Add ConnectionPatch class. + -JJL -2009-07-11 Added a fillstyle Line2D property for half filled markers - -- see examples/pylab_examples/fillstyle_demo.py JDH +2009-07-11 + Added a fillstyle Line2D property for half filled markers -- see + examples/pylab_examples/fillstyle_demo.py JDH -2009-07-08 Attempt to improve performance of qt4 backend, do not call - qApp.processEvents while processing an event. Thanks Ole - Streicher for tracking this down - DSD +2009-07-08 + Attempt to improve performance of qt4 backend, do not call + qApp.processEvents while processing an event. Thanks Ole Streicher for + tracking this down - DSD -2009-06-24 Add withheader option to mlab.rec2csv and changed - use_mrecords default to False in mlab.csv2rec since this is - partially broken - JDH +2009-06-24 + Add withheader option to mlab.rec2csv and changed use_mrecords default to + False in mlab.csv2rec since this is partially broken - JDH -2009-06-24 backend_agg.draw_marker quantizes the main path (as in the - draw_path). - JJL +2009-06-24 + backend_agg.draw_marker quantizes the main path (as in the draw_path). - + JJL -2009-06-24 axes_grid: floating axis support added. - JJL +2009-06-24 + axes_grid: floating axis support added. - JJL -2009-06-14 Add new command line options to backend_driver.py to support - running only some directories of tests - JKS +2009-06-14 + Add new command line options to backend_driver.py to support running only + some directories of tests - JKS -2009-06-13 partial cleanup of mlab and its importation in pylab - EF +2009-06-13 + partial cleanup of mlab and its importation in pylab - EF -2009-06-13 Introduce a rotation_mode property for the Text artist. See - examples/pylab_examples/demo_text_rotation_mode.py -JJL +2009-06-13 + Introduce a rotation_mode property for the Text artist. See + examples/pylab_examples/demo_text_rotation_mode.py -JJL -2009-06-07 add support for bz2 files per sf support request 2794556 - - JDH +2009-06-07 + add support for bz2 files per sf support request 2794556 - JDH -2009-06-06 added a properties method to the artist and inspector to - return a dict mapping property name -> value; see sf - feature request 2792183 - JDH +2009-06-06 + added a properties method to the artist and inspector to return a dict + mapping property name -> value; see sf feature request 2792183 - JDH -2009-06-06 added Neil's auto minor tick patch; sf patch #2789713 - JDH +2009-06-06 + added Neil's auto minor tick patch; sf patch #2789713 - JDH -2009-06-06 do not apply alpha to rgba color conversion if input is - already rgba - JDH +2009-06-06 + do not apply alpha to rgba color conversion if input is already rgba - JDH -2009-06-03 axes_grid : Initial check-in of curvelinear grid support. See - examples/axes_grid/demo_curvelinear_grid.py - JJL +2009-06-03 + axes_grid : Initial check-in of curvelinear grid support. See + examples/axes_grid/demo_curvelinear_grid.py - JJL -2009-06-01 Add set_color method to Patch - EF +2009-06-01 + Add set_color method to Patch - EF -2009-06-01 Spine is now derived from Patch - ADS +2009-06-01 + Spine is now derived from Patch - ADS -2009-06-01 use cbook.is_string_like() instead of isinstance() for spines - ADS +2009-06-01 + use cbook.is_string_like() instead of isinstance() for spines - ADS -2009-06-01 cla() support for spines - ADS +2009-06-01 + cla() support for spines - ADS -2009-06-01 Removed support for gtk < 2.4. - EF +2009-06-01 + Removed support for gtk < 2.4. - EF -2009-05-29 Improved the animation_blit_qt4 example, which was a mix - of the object-oriented and pylab interfaces. It is now - strictly object-oriented - DSD +2009-05-29 + Improved the animation_blit_qt4 example, which was a mix of the + object-oriented and pylab interfaces. It is now strictly object-oriented - + DSD -2009-05-28 Fix axes_grid toolkit to work with spine patch by ADS. - JJL +2009-05-28 + Fix axes_grid toolkit to work with spine patch by ADS. - JJL -2009-05-28 Applied fbianco's patch to handle scroll wheel events in - the qt4 backend - DSD +2009-05-28 + Applied fbianco's patch to handle scroll wheel events in the qt4 backend - + DSD -2009-05-26 Add support for "axis spines" to have arbitrary location. -ADS +2009-05-26 + Add support for "axis spines" to have arbitrary location. -ADS -2009-05-20 Add an empty matplotlibrc to the tests/ directory so that running - tests will use the default set of rcparams rather than the user's - config. - RMM +2009-05-20 + Add an empty matplotlibrc to the tests/ directory so that running tests + will use the default set of rcparams rather than the user's config. - RMM -2009-05-19 Axis.grid(): allow use of which='major,minor' to have grid - on major and minor ticks. -ADS +2009-05-19 + Axis.grid(): allow use of which='major,minor' to have grid on major and + minor ticks. -ADS -2009-05-18 Make psd(), csd(), and cohere() wrap properly for complex/two-sided - versions, like specgram() (SF #2791686) - RMM +2009-05-18 + Make psd(), csd(), and cohere() wrap properly for complex/two-sided + versions, like specgram() (SF #2791686) - RMM -2009-05-18 Fix the linespacing bug of multiline text (#1239682). See - examples/pylab_examples/multiline.py -JJL +2009-05-18 + Fix the linespacing bug of multiline text (#1239682). See + examples/pylab_examples/multiline.py -JJL -2009-05-18 Add *annotation_clip* attr. for text.Annotation class. - If True, annotation is only drawn when the annotated point is - inside the axes area. -JJL +2009-05-18 + Add *annotation_clip* attr. for text.Annotation class. If True, annotation + is only drawn when the annotated point is inside the axes area. -JJL -2009-05-17 Fix bug(#2749174) that some properties of minor ticks are - not conserved -JJL +2009-05-17 + Fix bug(#2749174) that some properties of minor ticks are not conserved + -JJL -2009-05-17 applied Michiel's sf patch 2790638 to turn off gtk event - loop in setupext for pygtk>=2.15.10 - JDH +2009-05-17 + applied Michiel's sf patch 2790638 to turn off gtk event loop in setupext + for pygtk>=2.15.10 - JDH -2009-05-17 applied Michiel's sf patch 2792742 to speed up Cairo and - macosx collections; speedups can be 20x. Also fixes some - bugs in which gc got into inconsistent state +2009-05-17 + applied Michiel's sf patch 2792742 to speed up Cairo and macosx + collections; speedups can be 20x. Also fixes some bugs in which gc got + into inconsistent state ----------------------- -2008-05-17 Release 0.98.5.3 at r7107 from the branch - JDH +2008-05-17 + Release 0.98.5.3 at r7107 from the branch - JDH -2009-05-13 An optional offset and bbox support in restore_bbox. - Add animation_blit_gtk2.py. -JJL +2009-05-13 + An optional offset and bbox support in restore_bbox. Add + animation_blit_gtk2.py. -JJL -2009-05-13 psfrag in backend_ps now uses baseline-alignment - when preview.sty is used ((default is - bottom-alignment). Also, a small API improvement - in OffsetBox-JJL +2009-05-13 + psfrag in backend_ps now uses baseline-alignment when preview.sty is used + ((default is bottom-alignment). Also, a small API improvement in + OffsetBox-JJL -2009-05-13 When the x-coordinate of a line is monotonically - increasing, it is now automatically clipped at - the stage of generating the transformed path in - the draw method; this greatly speeds up zooming and - panning when one is looking at a short segment of - a long time series, for example. - EF +2009-05-13 + When the x-coordinate of a line is monotonically increasing, it is now + automatically clipped at the stage of generating the transformed path in + the draw method; this greatly speeds up zooming and panning when one is + looking at a short segment of a long time series, for example. - EF -2009-05-11 aspect=1 in log-log plot gives square decades. -JJL +2009-05-11 + aspect=1 in log-log plot gives square decades. -JJL -2009-05-08 clabel takes new kwarg, rightside_up; if False, labels - will not be flipped to keep them rightside-up. This - allows the use of clabel to make streamfunction arrows, - as requested by Evan Mason. - EF +2009-05-08 + clabel takes new kwarg, rightside_up; if False, labels will not be flipped + to keep them rightside-up. This allows the use of clabel to make + streamfunction arrows, as requested by Evan Mason. - EF -2009-05-07 'labelpad' can now be passed when setting x/y labels. This - allows controlling the spacing between the label and its - axis. - RMM +2009-05-07 + 'labelpad' can now be passed when setting x/y labels. This allows + controlling the spacing between the label and its axis. - RMM -2009-05-06 print_ps now uses mixed-mode renderer. Axes.draw rasterize - artists whose zorder smaller than rasterization_zorder. - -JJL +2009-05-06 + print_ps now uses mixed-mode renderer. Axes.draw rasterize artists whose + zorder smaller than rasterization_zorder. -JJL -2009-05-06 Per-artist Rasterization, originally by Eric Bruning. -JJ +2009-05-06 + Per-artist Rasterization, originally by Eric Bruning. -JJ -2009-05-05 Add an example that shows how to make a plot that updates - using data from another process. Thanks to Robert - Cimrman - RMM +2009-05-05 + Add an example that shows how to make a plot that updates using data from + another process. Thanks to Robert Cimrman - RMM -2009-05-05 Add Axes.get_legend_handles_labels method. - JJL +2009-05-05 + Add Axes.get_legend_handles_labels method. - JJL -2009-05-04 Fix bug that Text.Annotation is still drawn while set to - not visible. - JJL +2009-05-04 + Fix bug that Text.Annotation is still drawn while set to not visible. - JJL -2009-05-04 Added TJ's fill_betweenx patch - JDH +2009-05-04 + Added TJ's fill_betweenx patch - JDH -2009-05-02 Added options to plotfile based on question from - Joseph Smidt and patch by Matthias Michler. - EF +2009-05-02 + Added options to plotfile based on question from Joseph Smidt and patch by + Matthias Michler. - EF +2009-05-01 + Changed add_artist and similar Axes methods to return their argument. - EF -2009-05-01 Changed add_artist and similar Axes methods to - return their argument. - EF +2009-04-30 + Incorrect eps bbox for landscape mode fixed - JJL -2009-04-30 Incorrect eps bbox for landscape mode fixed - JJL +2009-04-28 + Fixed incorrect bbox of eps output when usetex=True. - JJL -2009-04-28 Fixed incorrect bbox of eps output when usetex=True. - JJL +2009-04-24 + Changed use of os.open* to instead use subprocess.Popen. os.popen* are + deprecated in 2.6 and are removed in 3.0. - RMM -2009-04-24 Changed use of os.open* to instead use subprocess.Popen. - os.popen* are deprecated in 2.6 and are removed in 3.0. - RMM +2009-04-20 + Worked on axes_grid documentation. Added axes_grid.inset_locator. - JJL -2009-04-20 Worked on axes_grid documentation. Added - axes_grid.inset_locator. - JJL +2009-04-17 + Initial check-in of the axes_grid toolkit. - JJL -2009-04-17 Initial check-in of the axes_grid toolkit. - JJL +2009-04-17 + Added a support for bbox_to_anchor in offsetbox.AnchoredOffsetbox. Improved + a documentation. - JJL -2009-04-17 Added a support for bbox_to_anchor in - offsetbox.AnchoredOffsetbox. Improved a documentation. - - JJL +2009-04-16 + Fixed a offsetbox bug that multiline texts are not correctly aligned. - + JJL -2009-04-16 Fixed a offsetbox bug that multiline texts are not - correctly aligned. - JJL +2009-04-16 + Fixed a bug in mixed mode renderer that images produced by an rasterizing + backend are placed with incorrect size. - JJL -2009-04-16 Fixed a bug in mixed mode renderer that images produced by - an rasterizing backend are placed with incorrect size. - - JJL +2009-04-14 + Added Jonathan Taylor's Reinier Heeres' port of John Porters' mplot3d to + svn trunk. Package in mpl_toolkits.mplot3d and demo is + examples/mplot3d/demo.py. Thanks Reiner -2009-04-14 Added Jonathan Taylor's Reinier Heeres' port of John - Porters' mplot3d to svn trunk. Package in - mpl_toolkits.mplot3d and demo is examples/mplot3d/demo.py. - Thanks Reiner +2009-04-06 + The pdf backend now escapes newlines and linefeeds in strings. Fixes sf + bug #2708559; thanks to Tiago Pereira for the report. -2009-04-06 The pdf backend now escapes newlines and linefeeds in strings. - Fixes sf bug #2708559; thanks to Tiago Pereira for the report. +2009-04-06 + texmanager.make_dvi now raises an error if LaTeX failed to create an output + file. Thanks to Joao Luis Silva for reporting this. - JKS -2009-04-06 texmanager.make_dvi now raises an error if LaTeX failed to - create an output file. Thanks to Joao Luis Silva for reporting - this. - JKS +2009-04-05 + _png.read_png() reads 12 bit PNGs (patch from Tobias Wood) - ADS -2009-04-05 _png.read_png() reads 12 bit PNGs (patch from - Tobias Wood) - ADS +2009-04-04 + Allow log axis scale to clip non-positive values to small positive value; + this is useful for errorbars. - EF -2009-04-04 Allow log axis scale to clip non-positive values to - small positive value; this is useful for errorbars. - EF +2009-03-28 + Make images handle nan in their array argument. A helper, + cbook.safe_masked_invalid() was added. - EF -2009-03-28 Make images handle nan in their array argument. - A helper, cbook.safe_masked_invalid() was added. - EF +2009-03-25 + Make contour and contourf handle nan in their Z argument. - EF -2009-03-25 Make contour and contourf handle nan in their Z argument. - EF +2009-03-20 + Add AuxTransformBox in offsetbox.py to support some transformation. + anchored_text.py example is enhanced and renamed (anchored_artists.py). - + JJL -2009-03-20 Add AuxTransformBox in offsetbox.py to support some transformation. - anchored_text.py example is enhanced and renamed - (anchored_artists.py). - JJL +2009-03-20 + Add "bar" connection style for annotation - JJL -2009-03-20 Add "bar" connection style for annotation - JJL +2009-03-17 + Fix bugs in edge color handling by contourf, found by Jae-Joon Lee. - EF -2009-03-17 Fix bugs in edge color handling by contourf, found - by Jae-Joon Lee. - EF +2009-03-14 + Added 'LightSource' class to colors module for creating shaded relief maps. + shading_example.py added to illustrate usage. - JSW -2009-03-14 Added 'LightSource' class to colors module for - creating shaded relief maps. shading_example.py - added to illustrate usage. - JSW +2009-03-11 + Ensure wx version >= 2.8; thanks to Sandro Tosi and Chris Barker. - EF -2009-03-11 Ensure wx version >= 2.8; thanks to Sandro Tosi and - Chris Barker. - EF +2009-03-10 + Fix join style bug in pdf. - JKS -2009-03-10 Fix join style bug in pdf. - JKS +2009-03-07 + Add pyplot access to figure number list - EF -2009-03-07 Add pyplot access to figure number list - EF +2009-02-28 + hashing of FontProperties accounts current rcParams - JJL -2009-02-28 hashing of FontProperties accounts current rcParams - JJL +2009-02-28 + Prevent double-rendering of shared axis in twinx, twiny - EF -2009-02-28 Prevent double-rendering of shared axis in twinx, twiny - EF +2009-02-26 + Add optional bbox_to_anchor argument for legend class - JJL -2009-02-26 Add optional bbox_to_anchor argument for legend class - JJL +2009-02-26 + Support image clipping in pdf backend. - JKS -2009-02-26 Support image clipping in pdf backend. - JKS +2009-02-25 + Improve tick location subset choice in FixedLocator. - EF -2009-02-25 Improve tick location subset choice in FixedLocator. - EF +2009-02-24 + Deprecate numerix, and strip out all but the numpy part of the code. - EF -2009-02-24 Deprecate numerix, and strip out all but the numpy - part of the code. - EF +2009-02-21 + Improve scatter argument handling; add an early error message, allow inputs + to have more than one dimension. - EF -2009-02-21 Improve scatter argument handling; add an early error - message, allow inputs to have more than one dimension. - EF +2009-02-16 + Move plot_directive.py to the installed source tree. Add support for + inline code content - MGD -2009-02-16 Move plot_directive.py to the installed source tree. Add - support for inline code content - MGD +2009-02-16 + Move mathmpl.py to the installed source tree so it is available to other + projects. - MGD -2009-02-16 Move mathmpl.py to the installed source tree so it is - available to other projects. - MGD +2009-02-14 + Added the legend title support - JJL -2009-02-14 Added the legend title support - JJL +2009-02-10 + Fixed a bug in backend_pdf so it doesn't break when the setting + pdf.use14corefonts=True is used. Added test case in + unit/test_pdf_use14corefonts.py. - NGR -2009-02-10 Fixed a bug in backend_pdf so it doesn't break when the setting - pdf.use14corefonts=True is used. Added test case in - unit/test_pdf_use14corefonts.py. - NGR +2009-02-08 + Added a new imsave function to image.py and exposed it in the pyplot + interface - GR -2009-02-08 Added a new imsave function to image.py and exposed it in - the pyplot interface - GR +2009-02-04 + Some reorgnization of the legend code. anchored_text.py added as an + example. - JJL -2009-02-04 Some reorgnization of the legend code. anchored_text.py - added as an example. - JJL +2009-02-04 + Add extent keyword arg to hexbin - ADS -2009-02-04 Add extent keyword arg to hexbin - ADS +2009-02-04 + Fix bug in mathtext related to \dots and \ldots - MGD -2009-02-04 Fix bug in mathtext related to \dots and \ldots - MGD +2009-02-03 + Change default joinstyle to round - MGD -2009-02-03 Change default joinstyle to round - MGD +2009-02-02 + Reduce number of marker XObjects in pdf output - JKS -2009-02-02 Reduce number of marker XObjects in pdf output - JKS +2009-02-02 + Change default resolution on polar plot to 1 - MGD -2009-02-02 Change default resolution on polar plot to 1 - MGD +2009-02-02 + Avoid malloc errors in ttconv for fonts that don't have e.g., PostName (a + version of Tahoma triggered this) - JKS -2009-02-02 Avoid malloc errors in ttconv for fonts that don't have - e.g., PostName (a version of Tahoma triggered this) - JKS +2009-01-30 + Remove support for pyExcelerator in exceltools -- use xlwt instead - JDH -2009-01-30 Remove support for pyExcelerator in exceltools -- use xlwt - instead - JDH +2009-01-29 + Document 'resolution' kwarg for polar plots. Support it when using + pyplot.polar, not just Figure.add_axes. - MGD -2009-01-29 Document 'resolution' kwarg for polar plots. Support it - when using pyplot.polar, not just Figure.add_axes. - MGD +2009-01-29 + Rework the nan-handling/clipping/quantizing/simplification framework so + each is an independent part of a pipeline. Expose the C++-implementation + of all of this so it can be used from all Python backends. Add rcParam + "path.simplify_threshold" to control the threshold of similarity below + which vertices will be removed. -2009-01-29 Rework the nan-handling/clipping/quantizing/simplification - framework so each is an independent part of a pipeline. - Expose the C++-implementation of all of this so it can be - used from all Python backends. Add rcParam - "path.simplify_threshold" to control the threshold of - similarity below which vertices will be removed. +2009-01-26 + Improved tight bbox option of the savefig. - JJL -2009-01-26 Improved tight bbox option of the savefig. - JJL +2009-01-26 + Make curves and NaNs play nice together - MGD -2009-01-26 Make curves and NaNs play nice together - MGD +2009-01-21 + Changed the defaults of acorr and xcorr to use usevlines=True, maxlags=10 + and normed=True since these are the best defaults -2009-01-21 Changed the defaults of acorr and xcorr to use - usevlines=True, maxlags=10 and normed=True since these are - the best defaults +2009-01-19 + Fix bug in quiver argument handling. - EF -2009-01-19 Fix bug in quiver argument handling. - EF +2009-01-19 + Fix bug in backend_gtk: don't delete nonexistent toolbar. - EF -2009-01-19 Fix bug in backend_gtk: don't delete nonexistent toolbar. - EF +2009-01-16 + Implement bbox_inches option for savefig. If bbox_inches is "tight", try to + determine the tight bounding box. - JJL -2009-01-16 Implement bbox_inches option for savefig. If bbox_inches is - "tight", try to determine the tight bounding box. - JJL +2009-01-16 + Fix bug in is_string_like so it doesn't raise an unnecessary exception. - + EF -2009-01-16 Fix bug in is_string_like so it doesn't raise an - unnecessary exception. - EF +2009-01-16 + Fix an infinite recursion in the unit registry when searching for a + converter for a sequence of strings. Add a corresponding test. - RM -2009-01-16 Fix an infinite recursion in the unit registry when searching - for a converter for a sequence of strings. Add a corresponding - test. - RM +2009-01-16 + Bugfix of C typedef of MPL_Int64 that was failing on Windows XP 64 bit, as + reported by George Goussard on numpy mailing list. - ADS -2009-01-16 Bugfix of C typedef of MPL_Int64 that was failing on - Windows XP 64 bit, as reported by George Goussard on numpy - mailing list. - ADS +2009-01-16 + Added helper function LinearSegmentedColormap.from_list to facilitate + building simple custom colomaps. See + examples/pylab_examples/custom_cmap_fromlist.py - JDH -2009-01-16 Added helper function LinearSegmentedColormap.from_list to - facilitate building simple custom colomaps. See - examples/pylab_examples/custom_cmap_fromlist.py - JDH +2009-01-16 + Applied Michiel's patch for macosx backend to fix rounding bug. Closed sf + bug 2508440 - JSW -2009-01-16 Applied Michiel's patch for macosx backend to fix rounding - bug. Closed sf bug 2508440 - JSW +2009-01-10 + Applied Michiel's hatch patch for macosx backend and draw_idle patch for + qt. Closes sf patched 2497785 and 2468809 - JDH -2009-01-10 Applied Michiel's hatch patch for macosx backend and - draw_idle patch for qt. Closes sf patched 2497785 and - 2468809 - JDH +2009-01-10 + Fix bug in pan/zoom with log coordinates. - EF -2009-01-10 Fix bug in pan/zoom with log coordinates. - EF +2009-01-06 + Fix bug in setting of dashed negative contours. - EF -2009-01-06 Fix bug in setting of dashed negative contours. - EF +2009-01-06 + Be fault tolerant when len(linestyles)>NLev in contour. - MM -2009-01-06 Be fault tolerant when len(linestyles)>NLev in contour. - MM +2009-01-06 + Added marginals kwarg to hexbin to plot marginal densities JDH -2009-01-06 Added marginals kwarg to hexbin to plot marginal densities - JDH +2009-01-06 + Change user-visible multipage pdf object to PdfPages to avoid accidents + with the file-like PdfFile. - JKS -2009-01-06 Change user-visible multipage pdf object to PdfPages to - avoid accidents with the file-like PdfFile. - JKS +2009-01-05 + Fix a bug in pdf usetex: allow using non-embedded fonts. - JKS -2009-01-05 Fix a bug in pdf usetex: allow using non-embedded fonts. - JKS +2009-01-05 + optional use of preview.sty in usetex mode. - JJL -2009-01-05 optional use of preview.sty in usetex mode. - JJL +2009-01-02 + Allow multipage pdf files. - JKS -2009-01-02 Allow multipage pdf files. - JKS +2008-12-31 + Improve pdf usetex by adding support for font effects (slanting and + extending). - JKS -2008-12-31 Improve pdf usetex by adding support for font effects - (slanting and extending). - JKS +2008-12-29 + Fix a bug in pdf usetex support, which occurred if the same Type-1 font was + used with different encodings, e.g., with Minion Pro and MnSymbol. - JKS -2008-12-29 Fix a bug in pdf usetex support, which occurred if the same - Type-1 font was used with different encodings, e.g., with - Minion Pro and MnSymbol. - JKS +2008-12-20 + fix the dpi-dependent offset of Shadow. - JJL -2008-12-20 fix the dpi-dependent offset of Shadow. - JJL +2008-12-20 + fix the hatch bug in the pdf backend. minor update in docs and example - + JJL -2008-12-20 fix the hatch bug in the pdf backend. minor update - in docs and example - JJL +2008-12-19 + Add axes_locator attribute in Axes. Two examples are added. - JJL -2008-12-19 Add axes_locator attribute in Axes. Two examples are added. - - JJL +2008-12-19 + Update Axes.legend documentation. /api/api_changes.rst is also updated to + describe changes in keyword parameters. Issue a warning if old keyword + parameters are used. - JJL -2008-12-19 Update Axes.legend documentation. /api/api_changes.rst is also - updated to describe changes in keyword parameters. - Issue a warning if old keyword parameters are used. - JJL - -2008-12-18 add new arrow style, a line + filled triangles. -JJL +2008-12-18 + add new arrow style, a line + filled triangles. -JJL ---------------- -2008-12-18 Re-Released 0.98.5.2 from v0_98_5_maint at r6679 - Released 0.98.5.2 from v0_98_5_maint at r6667 - -2008-12-18 Removed configobj, experimental traits and doc/mpl_data link - JDH - -2008-12-18 Fix bug where a line with NULL data limits prevents - subsequent data limits from calculating correctly - MGD +2008-12-18 + Re-Released 0.98.5.2 from v0_98_5_maint at r6679 Released 0.98.5.2 from + v0_98_5_maint at r6667 -2008-12-17 Major documentation generator changes - MGD +2008-12-18 + Removed configobj, experimental traits and doc/mpl_data link - JDH -2008-12-17 Applied macosx backend patch with support for path - collections, quadmesh, etc... - JDH +2008-12-18 + Fix bug where a line with NULL data limits prevents subsequent data limits + from calculating correctly - MGD -2008-12-17 fix dpi-dependent behavior of text bbox and arrow in annotate - -JJL +2008-12-17 + Major documentation generator changes - MGD -2008-12-17 Add group id support in artist. Two examples which - demonstrate svg filter are added. -JJL +2008-12-17 + Applied macosx backend patch with support for path collections, quadmesh, + etc... - JDH -2008-12-16 Another attempt to fix dpi-dependent behavior of Legend. -JJL +2008-12-17 + fix dpi-dependent behavior of text bbox and arrow in annotate -JJL -2008-12-16 Fixed dpi-dependent behavior of Legend and fancybox in Text. +2008-12-17 + Add group id support in artist. Two examples which demonstrate svg filter + are added. -JJL -2008-12-16 Added markevery property to Line2D to support subsampling - of markers - JDH -2008-12-15 Removed mpl_data symlink in docs. On platforms that do not - support symlinks, these become copies, and the font files - are large, so the distro becomes unnecessarily bloated. - Keeping the mpl_examples dir because relative links are - harder for the plot directive and the \*.py files are not so - large. - JDH +2008-12-16 + Another attempt to fix dpi-dependent behavior of Legend. -JJL -2008-12-15 Fix \$ in non-math text with usetex off. Document - differences between usetex on/off - MGD +2008-12-16 + Fixed dpi-dependent behavior of Legend and fancybox in Text. -2008-12-15 Fix anti-aliasing when auto-snapping - MGD +2008-12-16 + Added markevery property to Line2D to support subsampling of markers - JDH -2008-12-15 Fix grid lines not moving correctly during pan and zoom - MGD +2008-12-15 + Removed mpl_data symlink in docs. On platforms that do not support + symlinks, these become copies, and the font files are large, so the distro + becomes unnecessarily bloated. Keeping the mpl_examples dir because + relative links are harder for the plot directive and the \*.py files are + not so large. - JDH -2008-12-12 Preparations to eliminate maskedarray rcParams key: its - use will now generate a warning. Similarly, importing - the obsolote numerix.npyma will generate a warning. - EF +2008-12-15 + Fix \$ in non-math text with usetex off. Document differences between + usetex on/off - MGD -2008-12-12 Added support for the numpy.histogram() weights parameter - to the axes hist() method. Docs taken from numpy - MM +2008-12-15 + Fix anti-aliasing when auto-snapping - MGD -2008-12-12 Fixed warning in hist() with numpy 1.2 - MM +2008-12-15 + Fix grid lines not moving correctly during pan and zoom - MGD -2008-12-12 Removed external packages: configobj and enthought.traits - which are only required by the experimental traited config - and are somewhat out of date. If needed, install them - independently, see: +2008-12-12 + Preparations to eliminate maskedarray rcParams key: its use will now + generate a warning. Similarly, importing the obsolote numerix.npyma will + generate a warning. - EF - http://code.enthought.com/pages/traits.html +2008-12-12 + Added support for the numpy.histogram() weights parameter to the axes + hist() method. Docs taken from numpy - MM - and: +2008-12-12 + Fixed warning in hist() with numpy 1.2 - MM - http://www.voidspace.org.uk/python/configobj.html +2008-12-12 + Removed external packages: configobj and enthought.traits which are only + required by the experimental traited config and are somewhat out of date. + If needed, install them independently, see + http://code.enthought.com/pages/traits.html and + http://www.voidspace.org.uk/python/configobj.html -2008-12-12 Added support to assign labels to histograms of multiple - data. - MM +2008-12-12 + Added support to assign labels to histograms of multiple data. - MM ------------------------- -2008-12-11 Released 0.98.5 at svn r6573 +2008-12-11 + Released 0.98.5 at svn r6573 -2008-12-11 Use subprocess.Popen instead of os.popen in dviread - (Windows problem reported by Jorgen Stenarson) - JKS +2008-12-11 + Use subprocess.Popen instead of os.popen in dviread (Windows problem + reported by Jorgen Stenarson) - JKS -2008-12-10 Added Michael's font_manager fix and Jae-Joon's - figure/subplot fix. Bumped version number to 0.98.5 - JDH +2008-12-10 + Added Michael's font_manager fix and Jae-Joon's figure/subplot fix. Bumped + version number to 0.98.5 - JDH ---------------------------- -2008-12-09 Released 0.98.4 at svn r6536 - -2008-12-08 Added mdehoon's native macosx backend from sf patch 2179017 - JDH - -2008-12-08 Removed the prints in the set_*style commands. Return the - list of pprinted strings instead - JDH - -2008-12-08 Some of the changes Michael made to improve the output of - the property tables in the rest docs broke of made - difficult to use some of the interactive doc helpers, e.g., - setp and getp. Having all the rest markup in the ipython - shell also confused the docstrings. I added a new rc param - docstring.hardcopy, to format the docstrings differently for - hard copy and other use. The ArtistInspector could use a - little refactoring now since there is duplication of effort - between the rest out put and the non-rest output - JDH - -2008-12-08 Updated spectral methods (psd, csd, etc.) to scale one-sided - densities by a factor of 2 and, optionally, scale all densities - by the sampling frequency. This gives better MatLab - compatibility. -RM - -2008-12-08 Fixed alignment of ticks in colorbars. -MGD - -2008-12-07 drop the deprecated "new" keyword of np.histogram() for - numpy 1.2 or later. -JJL - -2008-12-06 Fixed a bug in svg backend that new_figure_manager() - ignores keywords arguments such as figsize, etc. -JJL +2008-12-09 + Released 0.98.4 at svn r6536 + +2008-12-08 + Added mdehoon's native macosx backend from sf patch 2179017 - JDH + +2008-12-08 + Removed the prints in the set_*style commands. Return the list of pprinted + strings instead - JDH -2008-12-05 Fixed a bug that the handlelength of the new legend class - set too short when numpoints=1 -JJL +2008-12-08 + Some of the changes Michael made to improve the output of the property + tables in the rest docs broke of made difficult to use some of the + interactive doc helpers, e.g., setp and getp. Having all the rest markup + in the ipython shell also confused the docstrings. I added a new rc param + docstring.hardcopy, to format the docstrings differently for hard copy and + other use. The ArtistInspector could use a little refactoring now since + there is duplication of effort between the rest out put and the non-rest + output - JDH -2008-12-04 Added support for data with units (e.g., dates) to - Axes.fill_between. -RM +2008-12-08 + Updated spectral methods (psd, csd, etc.) to scale one-sided densities by a + factor of 2 and, optionally, scale all densities by the sampling frequency. + This gives better MatLab compatibility. -RM -2008-12-04 Added fancybox keyword to legend. Also applied some changes - for better look, including baseline adjustment of the - multiline texts so that it is center aligned. -JJL +2008-12-08 + Fixed alignment of ticks in colorbars. -MGD -2008-12-02 The transmuter classes in the patches.py are reorganized as - subclasses of the Style classes. A few more box and arrow - styles are added. -JJL +2008-12-07 + drop the deprecated "new" keyword of np.histogram() for numpy 1.2 or later. + -JJL -2008-12-02 Fixed a bug in the new legend class that didn't allowed - a tuple of coordinate values as loc. -JJL +2008-12-06 + Fixed a bug in svg backend that new_figure_manager() ignores keywords + arguments such as figsize, etc. -JJL -2008-12-02 Improve checks for external dependencies, using subprocess - (instead of deprecated popen*) and distutils (for version - checking) - DSD +2008-12-05 + Fixed a bug that the handlelength of the new legend class set too short + when numpoints=1 -JJL -2008-11-30 Reimplementation of the legend which supports baseline alignment, - multi-column, and expand mode. - JJL +2008-12-04 + Added support for data with units (e.g., dates) to Axes.fill_between. -RM -2008-12-01 Fixed histogram autoscaling bug when bins or range are given - explicitly (fixes Debian bug 503148) - MM +2008-12-04 + Added fancybox keyword to legend. Also applied some changes for better + look, including baseline adjustment of the multiline texts so that it is + center aligned. -JJL -2008-11-25 Added rcParam axes.unicode_minus which allows plain hyphen - for minus when False - JDH +2008-12-02 + The transmuter classes in the patches.py are reorganized as subclasses of + the Style classes. A few more box and arrow styles are added. -JJL -2008-11-25 Added scatterpoints support in Legend. patch by Erik - Tollerud - JJL +2008-12-02 + Fixed a bug in the new legend class that didn't allowed a tuple of + coordinate values as loc. -JJL -2008-11-24 Fix crash in log ticking. - MGD +2008-12-02 + Improve checks for external dependencies, using subprocess (instead of + deprecated popen*) and distutils (for version checking) - DSD + +2008-11-30 + Reimplementation of the legend which supports baseline alignment, + multi-column, and expand mode. - JJL + +2008-12-01 + Fixed histogram autoscaling bug when bins or range are given explicitly + (fixes Debian bug 503148) - MM -2008-11-20 Added static helper method BrokenHBarCollection.span_where - and Axes/pyplot method fill_between. See - examples/pylab/fill_between.py - JDH +2008-11-25 + Added rcParam axes.unicode_minus which allows plain hyphen for minus when + False - JDH + +2008-11-25 + Added scatterpoints support in Legend. patch by Erik Tollerud - JJL + +2008-11-24 + Fix crash in log ticking. - MGD -2008-11-12 Add x_isdata and y_isdata attributes to Artist instances, - and use them to determine whether either or both - coordinates are used when updating dataLim. This is - used to fix autoscaling problems that had been triggered - by axhline, axhspan, axvline, axvspan. - EF +2008-11-20 + Added static helper method BrokenHBarCollection.span_where and Axes/pyplot + method fill_between. See examples/pylab/fill_between.py - JDH + +2008-11-12 + Add x_isdata and y_isdata attributes to Artist instances, and use them to + determine whether either or both coordinates are used when updating + dataLim. This is used to fix autoscaling problems that had been triggered + by axhline, axhspan, axvline, axvspan. - EF + +2008-11-11 + Update the psd(), csd(), cohere(), and specgram() methods of Axes and the + csd() cohere(), and specgram() functions in mlab to be in sync with the + changes to psd(). In fact, under the hood, these all call the same core to + do computations. - RM + +2008-11-11 + Add 'pad_to' and 'sides' parameters to mlab.psd() to allow controlling of + zero padding and returning of negative frequency components, respecitively. + These are added in a way that does not change the API. - RM + +2008-11-10 + Fix handling of c kwarg by scatter; generalize is_string_like to accept + numpy and numpy.ma string array scalars. - RM and EF + +2008-11-09 + Fix a possible EINTR problem in dviread, which might help when saving pdf + files from the qt backend. - JKS + +2008-11-05 + Fix bug with zoom to rectangle and twin axes - MGD + +2008-10-24 + Added Jae Joon's fancy arrow, box and annotation enhancements -- see + examples/pylab_examples/annotation_demo2.py + +2008-10-23 + Autoscaling is now supported with shared axes - EF -2008-11-11 Update the psd(), csd(), cohere(), and specgram() methods - of Axes and the csd() cohere(), and specgram() functions - in mlab to be in sync with the changes to psd(). - In fact, under the hood, these all call the same core - to do computations. - RM +2008-10-23 + Fixed exception in dviread that happened with Minion - JKS -2008-11-11 Add 'pad_to' and 'sides' parameters to mlab.psd() to - allow controlling of zero padding and returning of - negative frequency components, respecitively. These are - added in a way that does not change the API. - RM +2008-10-21 + set_xlim, ylim now return a copy of the viewlim array to avoid modify + inplace surprises -2008-11-10 Fix handling of c kwarg by scatter; generalize - is_string_like to accept numpy and numpy.ma string - array scalars. - RM and EF +2008-10-20 + Added image thumbnail generating function matplotlib.image.thumbnail. See + examples/misc/image_thumbnail.py - JDH -2008-11-09 Fix a possible EINTR problem in dviread, which might help - when saving pdf files from the qt backend. - JKS +2008-10-20 + Applied scatleg patch based on ideas and work by Erik Tollerud and Jae-Joon + Lee. - MM -2008-11-05 Fix bug with zoom to rectangle and twin axes - MGD +2008-10-11 + Fixed bug in pdf backend: if you pass a file object for output instead of a + filename, e.g., in a wep app, we now flush the object at the end. - JKS -2008-10-24 Added Jae Joon's fancy arrow, box and annotation - enhancements -- see - examples/pylab_examples/annotation_demo2.py +2008-10-08 + Add path simplification support to paths with gaps. - EF -2008-10-23 Autoscaling is now supported with shared axes - EF +2008-10-05 + Fix problem with AFM files that don't specify the font's full name or + family name. - JKS -2008-10-23 Fixed exception in dviread that happened with Minion - JKS +2008-10-04 + Added 'scilimits' kwarg to Axes.ticklabel_format() method, for easy access + to the set_powerlimits method of the major ScalarFormatter. - EF -2008-10-21 set_xlim, ylim now return a copy of the viewlim array to - avoid modify inplace surprises +2008-10-04 + Experimental new kwarg borderpad to replace pad in legend, based on + suggestion by Jae-Joon Lee. - EF -2008-10-20 Added image thumbnail generating function - matplotlib.image.thumbnail. See - examples/misc/image_thumbnail.py - JDH +2008-09-27 + Allow spy to ignore zero values in sparse arrays, based on patch by Tony + Yu. Also fixed plot to handle empty data arrays, and fixed handling of + markers in figlegend. - EF -2008-10-20 Applied scatleg patch based on ideas and work by Erik - Tollerud and Jae-Joon Lee. - MM +2008-09-24 + Introduce drawstyles for lines. Transparently split linestyles like + 'steps--' into drawstyle 'steps' and linestyle '--'. Legends always use + drawstyle 'default'. - MM -2008-10-11 Fixed bug in pdf backend: if you pass a file object for - output instead of a filename, e.g., in a wep app, we now - flush the object at the end. - JKS +2008-09-18 + Fixed quiver and quiverkey bugs (failure to scale properly when resizing) + and added additional methods for determining the arrow angles - EF -2008-10-08 Add path simplification support to paths with gaps. - EF +2008-09-18 + Fix polar interpolation to handle negative values of theta - MGD -2008-10-05 Fix problem with AFM files that don't specify the font's - full name or family name. - JKS +2008-09-14 + Reorganized cbook and mlab methods related to numerical calculations that + have little to do with the goals of those two modules into a separate + module numerical_methods.py Also, added ability to select points and stop + point selection with keyboard in ginput and manual contour labeling code. + Finally, fixed contour labeling bug. - DMK -2008-10-04 Added 'scilimits' kwarg to Axes.ticklabel_format() method, - for easy access to the set_powerlimits method of the - major ScalarFormatter. - EF +2008-09-11 + Fix backtick in Postscript output. - MGD -2008-10-04 Experimental new kwarg borderpad to replace pad in legend, - based on suggestion by Jae-Joon Lee. - EF +2008-09-10 + [ 2089958 ] Path simplification for vector output backends Leverage the + simplification code exposed through path_to_polygons to simplify certain + well-behaved paths in the vector backends (PDF, PS and SVG). + "path.simplify" must be set to True in matplotlibrc for this to work. + - MGD -2008-09-27 Allow spy to ignore zero values in sparse arrays, based - on patch by Tony Yu. Also fixed plot to handle empty - data arrays, and fixed handling of markers in figlegend. - EF +2008-09-10 + Add "filled" kwarg to Path.intersects_path and Path.intersects_bbox. - MGD -2008-09-24 Introduce drawstyles for lines. Transparently split linestyles - like 'steps--' into drawstyle 'steps' and linestyle '--'. - Legends always use drawstyle 'default'. - MM +2008-09-07 + Changed full arrows slightly to avoid an xpdf rendering problem reported by + Friedrich Hagedorn. - JKS -2008-09-18 Fixed quiver and quiverkey bugs (failure to scale properly - when resizing) and added additional methods for determining - the arrow angles - EF +2008-09-07 + Fix conversion of quadratic to cubic Bezier curves in PDF and PS backends. + Patch by Jae-Joon Lee. - JKS -2008-09-18 Fix polar interpolation to handle negative values of theta - MGD +2008-09-06 + Added 5-point star marker to plot command - EF -2008-09-14 Reorganized cbook and mlab methods related to numerical - calculations that have little to do with the goals of those two - modules into a separate module numerical_methods.py - Also, added ability to select points and stop point selection - with keyboard in ginput and manual contour labeling code. - Finally, fixed contour labeling bug. - DMK +2008-09-05 + Fix hatching in PS backend - MGD -2008-09-11 Fix backtick in Postscript output. - MGD +2008-09-03 + Fix log with base 2 - MGD -2008-09-10 [ 2089958 ] Path simplification for vector output backends - Leverage the simplification code exposed through - path_to_polygons to simplify certain well-behaved paths in - the vector backends (PDF, PS and SVG). "path.simplify" - must be set to True in matplotlibrc for this to work. - - MGD +2008-09-01 + Added support for bilinear interpolation in NonUniformImage; patch by + Gregory Lielens. - EF -2008-09-10 Add "filled" kwarg to Path.intersects_path and - Path.intersects_bbox. - MGD +2008-08-28 + Added support for multiple histograms with data of different length - MM -2008-09-07 Changed full arrows slightly to avoid an xpdf rendering - problem reported by Friedrich Hagedorn. - JKS +2008-08-28 + Fix step plots with log scale - MGD -2008-09-07 Fix conversion of quadratic to cubic Bezier curves in PDF - and PS backends. Patch by Jae-Joon Lee. - JKS +2008-08-28 + Fix masked arrays with markers in non-Agg backends - MGD -2008-09-06 Added 5-point star marker to plot command - EF +2008-08-28 + Fix clip_on kwarg so it actually works correctly - MGD -2008-09-05 Fix hatching in PS backend - MGD +2008-08-25 + Fix locale problems in SVG backend - MGD -2008-09-03 Fix log with base 2 - MGD +2008-08-22 + fix quiver so masked values are not plotted - JSW -2008-09-01 Added support for bilinear interpolation in - NonUniformImage; patch by Gregory Lielens. - EF +2008-08-18 + improve interactive pan/zoom in qt4 backend on windows - DSD -2008-08-28 Added support for multiple histograms with data of - different length - MM - -2008-08-28 Fix step plots with log scale - MGD - -2008-08-28 Fix masked arrays with markers in non-Agg backends - MGD - -2008-08-28 Fix clip_on kwarg so it actually works correctly - MGD - -2008-08-25 Fix locale problems in SVG backend - MGD - -2008-08-22 fix quiver so masked values are not plotted - JSW - -2008-08-18 improve interactive pan/zoom in qt4 backend on windows - DSD - -2008-08-11 Fix more bugs in NaN/inf handling. In particular, path simplification - (which does not handle NaNs or infs) will be turned off automatically - when infs or NaNs are present. Also masked arrays are now converted - to arrays with NaNs for consistent handling of masks and NaNs - - MGD and EF +2008-08-11 + Fix more bugs in NaN/inf handling. In particular, path simplification + (which does not handle NaNs or infs) will be turned off automatically when + infs or NaNs are present. Also masked arrays are now converted to arrays + with NaNs for consistent handling of masks and NaNs - MGD and EF ------------------------ -2008-08-03 Released 0.98.3 at svn r5947 +2008-08-03 + Released 0.98.3 at svn r5947 -2008-08-01 Backported memory leak fixes in _ttconv.cpp - MGD +2008-08-01 + Backported memory leak fixes in _ttconv.cpp - MGD -2008-07-31 Added masked array support to griddata. - JSW +2008-07-31 + Added masked array support to griddata. - JSW -2008-07-26 Added optional C and reduce_C_function arguments to - axes.hexbin(). This allows hexbin to accumulate the values - of C based on the x,y coordinates and display in hexagonal - bins. - ADS +2008-07-26 + Added optional C and reduce_C_function arguments to axes.hexbin(). This + allows hexbin to accumulate the values of C based on the x,y coordinates + and display in hexagonal bins. - ADS -2008-07-24 Deprecated (raise NotImplementedError) all the mlab2 - functions from matplotlib.mlab out of concern that some of - them were not clean room implementations. JDH +2008-07-24 + Deprecated (raise NotImplementedError) all the mlab2 functions from + matplotlib.mlab out of concern that some of them were not clean room + implementations. JDH -2008-07-24 Rewrite of a significant portion of the clabel code (class - ContourLabeler) to improve inlining. - DMK +2008-07-24 + Rewrite of a significant portion of the clabel code (class ContourLabeler) + to improve inlining. - DMK -2008-07-22 Added Barbs polygon collection (similar to Quiver) for plotting - wind barbs. Added corresponding helpers to Axes and pyplot as - well. (examples/pylab_examples/barb_demo.py shows it off.) - RMM +2008-07-22 + Added Barbs polygon collection (similar to Quiver) for plotting wind barbs. + Added corresponding helpers to Axes and pyplot as well. + (examples/pylab_examples/barb_demo.py shows it off.) - RMM -2008-07-21 Added scikits.delaunay as matplotlib.delaunay. Added griddata - function in matplotlib.mlab, with example (griddata_demo.py) in - pylab_examples. griddata function will use mpl_toolkits._natgrid - if installed. - JSW +2008-07-21 + Added scikits.delaunay as matplotlib.delaunay. Added griddata function in + matplotlib.mlab, with example (griddata_demo.py) in pylab_examples. + griddata function will use mpl_toolkits._natgrid if installed. - JSW -2008-07-21 Re-introduced offset_copy that works in the context of the - new transforms. - MGD +2008-07-21 + Re-introduced offset_copy that works in the context of the new transforms. + - MGD -2008-07-21 Committed patch by Ryan May to add get_offsets and - set_offsets to Collections base class - EF +2008-07-21 + Committed patch by Ryan May to add get_offsets and set_offsets to + Collections base class - EF -2008-07-21 Changed the "asarray" strategy in image.py so that - colormapping of masked input should work for all - image types (thanks Klaus Zimmerman) - EF +2008-07-21 + Changed the "asarray" strategy in image.py so that colormapping of masked + input should work for all image types (thanks Klaus Zimmerman) - EF -2008-07-20 Rewrote cbook.delete_masked_points and corresponding - unit test to support rgb color array inputs, datetime - inputs, etc. - EF +2008-07-20 + Rewrote cbook.delete_masked_points and corresponding unit test to support + rgb color array inputs, datetime inputs, etc. - EF -2008-07-20 Renamed unit/axes_unit.py to cbook_unit.py and modified - in accord with Ryan's move of delete_masked_points from - axes to cbook. - EF +2008-07-20 + Renamed unit/axes_unit.py to cbook_unit.py and modified in accord with + Ryan's move of delete_masked_points from axes to cbook. - EF -2008-07-18 Check for nan and inf in axes.delete_masked_points(). - This should help hexbin and scatter deal with nans. - ADS +2008-07-18 + Check for nan and inf in axes.delete_masked_points(). This should help + hexbin and scatter deal with nans. - ADS -2008-07-17 Added ability to manually select contour label locations. - Also added a waitforbuttonpress function. - DMK +2008-07-17 + Added ability to manually select contour label locations. Also added a + waitforbuttonpress function. - DMK -2008-07-17 Fix bug with NaNs at end of path (thanks, Andrew Straw for - the report) - MGD +2008-07-17 + Fix bug with NaNs at end of path (thanks, Andrew Straw for the report) - + MGD -2008-07-16 Improve error handling in texmanager, thanks to Ian Henry - for reporting - DSD +2008-07-16 + Improve error handling in texmanager, thanks to Ian Henry for reporting - + DSD -2008-07-12 Added support for external backends with the - "module://my_backend" syntax - JDH +2008-07-12 + Added support for external backends with the "module://my_backend" syntax - + JDH -2008-07-11 Fix memory leak related to shared axes. Grouper should - store weak references. - MGD +2008-07-11 + Fix memory leak related to shared axes. Grouper should store weak + references. - MGD -2008-07-10 Bugfix: crash displaying fontconfig pattern - MGD +2008-07-10 + Bugfix: crash displaying fontconfig pattern - MGD -2008-07-10 Bugfix: [ 2013963 ] update_datalim_bounds in Axes not works - MGD +2008-07-10 + Bugfix: [ 2013963 ] update_datalim_bounds in Axes not works - MGD -2008-07-10 Bugfix: [ 2014183 ] multiple imshow() causes gray edges - MGD +2008-07-10 + Bugfix: [ 2014183 ] multiple imshow() causes gray edges - MGD -2008-07-09 Fix rectangular axes patch on polar plots bug - MGD +2008-07-09 + Fix rectangular axes patch on polar plots bug - MGD -2008-07-09 Improve mathtext radical rendering - MGD +2008-07-09 + Improve mathtext radical rendering - MGD -2008-07-08 Improve mathtext superscript placement - MGD +2008-07-08 + Improve mathtext superscript placement - MGD -2008-07-07 Fix custom scales in pcolormesh (thanks Matthew Turk) - MGD +2008-07-07 + Fix custom scales in pcolormesh (thanks Matthew Turk) - MGD -2008-07-03 Implemented findobj method for artist and pyplot - see - examples/pylab_examples/findobj_demo.py - JDH +2008-07-03 + Implemented findobj method for artist and pyplot - see + examples/pylab_examples/findobj_demo.py - JDH -2008-06-30 Another attempt to fix TextWithDash - DSD +2008-06-30 + Another attempt to fix TextWithDash - DSD -2008-06-30 Removed Qt4 NavigationToolbar2.destroy -- it appears to - have been unnecessary and caused a bug reported by P. - Raybaut - DSD +2008-06-30 + Removed Qt4 NavigationToolbar2.destroy -- it appears to have been + unnecessary and caused a bug reported by P. Raybaut - DSD -2008-06-27 Fixed tick positioning bug - MM +2008-06-27 + Fixed tick positioning bug - MM -2008-06-27 Fix dashed text bug where text was at the wrong end of the - dash - MGD +2008-06-27 + Fix dashed text bug where text was at the wrong end of the dash - MGD -2008-06-26 Fix mathtext bug for expressions like $x_{\leftarrow}$ - MGD +2008-06-26 + Fix mathtext bug for expressions like $x_{\leftarrow}$ - MGD -2008-06-26 Fix direction of horizontal/vertical hatches - MGD +2008-06-26 + Fix direction of horizontal/vertical hatches - MGD -2008-06-25 Figure.figurePatch renamed Figure.patch, Axes.axesPatch - renamed Axes.patch, Axes.axesFrame renamed Axes.frame, - Axes.get_frame, which returns Axes.patch, is deprecated. - Examples and users guide updated - JDH +2008-06-25 + Figure.figurePatch renamed Figure.patch, Axes.axesPatch renamed Axes.patch, + Axes.axesFrame renamed Axes.frame, Axes.get_frame, which returns + Axes.patch, is deprecated. Examples and users guide updated - JDH -2008-06-25 Fix rendering quality of pcolor - MGD +2008-06-25 + Fix rendering quality of pcolor - MGD ---------------------------- -2008-06-24 Released 0.98.2 at svn r5667 - (source only for debian) JDH +2008-06-24 + Released 0.98.2 at svn r5667 - (source only for debian) JDH -2008-06-24 Added "transparent" kwarg to savefig. - MGD +2008-06-24 + Added "transparent" kwarg to savefig. - MGD -2008-06-24 Applied Stefan's patch to draw a single centered marker over - a line with numpoints==1 - JDH +2008-06-24 + Applied Stefan's patch to draw a single centered marker over a line with + numpoints==1 - JDH -2008-06-23 Use splines to render circles in scatter plots - MGD +2008-06-23 + Use splines to render circles in scatter plots - MGD ---------------------------- -2008-06-22 Released 0.98.1 at revision 5637 +2008-06-22 + Released 0.98.1 at revision 5637 -2008-06-22 Removed axes3d support and replaced it with a - NotImplementedError for one release cycle +2008-06-22 + Removed axes3d support and replaced it with a NotImplementedError for one + release cycle -2008-06-21 fix marker placement bug in backend_ps - DSD +2008-06-21 + fix marker placement bug in backend_ps - DSD -2008-06-20 [ 1978629 ] scale documentation missing/incorrect for log - MGD +2008-06-20 + [ 1978629 ] scale documentation missing/incorrect for log - MGD -2008-06-20 Added closed kwarg to PolyCollection. Fixes bug [ 1994535 - ] still missing lines on graph with svn (r 5548). - MGD +2008-06-20 + Added closed kwarg to PolyCollection. Fixes bug [ 1994535 ] still missing + lines on graph with svn (r 5548). - MGD -2008-06-20 Added set/get_closed method to Polygon; fixes error - in hist - MM +2008-06-20 + Added set/get_closed method to Polygon; fixes error in hist - MM -2008-06-19 Use relative font sizes (e.g., 'medium' and 'large') in - rcsetup.py and matplotlibrc.template so that text will - be scaled by default when changing rcParams['font.size'] - - EF +2008-06-19 + Use relative font sizes (e.g., 'medium' and 'large') in rcsetup.py and + matplotlibrc.template so that text will be scaled by default when changing + rcParams['font.size'] - EF -2008-06-17 Add a generic PatchCollection class that can contain any - kind of patch. - MGD +2008-06-17 + Add a generic PatchCollection class that can contain any kind of patch. - + MGD -2008-06-13 Change pie chart label alignment to avoid having labels - overwrite the pie - MGD +2008-06-13 + Change pie chart label alignment to avoid having labels overwrite the pie - + MGD -2008-06-12 Added some helper functions to the mathtext parser to - return bitmap arrays or write pngs to make it easier to use - mathtext outside the context of an mpl figure. modified - the mathpng sphinxext to use the mathtext png save - functionality - see examples/api/mathtext_asarray.py - JDH +2008-06-12 + Added some helper functions to the mathtext parser to return bitmap arrays + or write pngs to make it easier to use mathtext outside the context of an + mpl figure. modified the mathpng sphinxext to use the mathtext png save + functionality - see examples/api/mathtext_asarray.py - JDH -2008-06-11 Use matplotlib.mathtext to render math expressions in - online docs - MGD +2008-06-11 + Use matplotlib.mathtext to render math expressions in online docs - MGD -2008-06-11 Move PNG loading/saving to its own extension module, and - remove duplicate code in _backend_agg.cpp and _image.cpp - that does the same thing - MGD +2008-06-11 + Move PNG loading/saving to its own extension module, and remove duplicate + code in _backend_agg.cpp and _image.cpp that does the same thing - MGD -2008-06-11 Numerous mathtext bugfixes, primarily related to - dpi-independence - MGD +2008-06-11 + Numerous mathtext bugfixes, primarily related to dpi-independence - MGD -2008-06-10 Bar now applies the label only to the first patch only, and - sets '_nolegend_' for the other patch labels. This lets - autolegend work as expected for hist and bar - see - \https://sourceforge.net/tracker/index.php?func=detail&aid=1986597&group_id=80706&atid=560720 - JDH +2008-06-10 + Bar now applies the label only to the first patch only, and sets + '_nolegend_' for the other patch labels. This lets autolegend work as + expected for hist and bar - see + \https://sourceforge.net/tracker/index.php?func=detail&aid=1986597&group_id=80706&atid=560720 + JDH -2008-06-10 Fix text baseline alignment bug. [ 1985420 ] Repair of - baseline alignment in Text._get_layout. Thanks Stan West - - MGD +2008-06-10 + Fix text baseline alignment bug. [ 1985420 ] Repair of baseline alignment + in Text._get_layout. Thanks Stan West - MGD -2008-06-09 Committed Gregor's image resample patch to downsampling - images with new rcparam image.resample - JDH +2008-06-09 + Committed Gregor's image resample patch to downsampling images with new + rcparam image.resample - JDH -2008-06-09 Don't install Enthought.Traits along with matplotlib. For - matplotlib developers convenience, it can still be - installed by setting an option in setup.cfg while we figure - decide if there is a future for the traited config - DSD +2008-06-09 + Don't install Enthought.Traits along with matplotlib. For matplotlib + developers convenience, it can still be installed by setting an option in + setup.cfg while we figure decide if there is a future for the traited + config - DSD -2008-06-09 Added range keyword arg to hist() - MM +2008-06-09 + Added range keyword arg to hist() - MM -2008-06-07 Moved list of backends to rcsetup.py; made use of lower - case for backend names consistent; use validate_backend - when importing backends subpackage - EF +2008-06-07 + Moved list of backends to rcsetup.py; made use of lower case for backend + names consistent; use validate_backend when importing backends subpackage - + EF -2008-06-06 hist() revision, applied ideas proposed by Erik Tollerud and - Olle Engdegard: make histtype='step' unfilled by default - and introduce histtype='stepfilled'; use default color - cycle; introduce reverse cumulative histogram; new align - keyword - MM +2008-06-06 + hist() revision, applied ideas proposed by Erik Tollerud and Olle + Engdegard: make histtype='step' unfilled by default and introduce + histtype='stepfilled'; use default color cycle; introduce reverse + cumulative histogram; new align keyword - MM -2008-06-06 Fix closed polygon patch and also provide the option to - not close the polygon - MGD +2008-06-06 + Fix closed polygon patch and also provide the option to not close the + polygon - MGD -2008-06-05 Fix some dpi-changing-related problems with PolyCollection, - as called by Axes.scatter() - MGD +2008-06-05 + Fix some dpi-changing-related problems with PolyCollection, as called by + Axes.scatter() - MGD -2008-06-05 Fix image drawing so there is no extra space to the right - or bottom - MGD +2008-06-05 + Fix image drawing so there is no extra space to the right or bottom - MGD -2006-06-04 Added a figure title command suptitle as a Figure method - and pyplot command -- see examples/figure_title.py - JDH +2006-06-04 + Added a figure title command suptitle as a Figure method and pyplot command + -- see examples/figure_title.py - JDH -2008-06-02 Added support for log to hist with histtype='step' and fixed - a bug for log-scale stacked histograms - MM +2008-06-02 + Added support for log to hist with histtype='step' and fixed a bug for + log-scale stacked histograms - MM ----------------------------- -2008-05-29 Released 0.98.0 at revision 5314 +2008-05-29 + Released 0.98.0 at revision 5314 -2008-05-29 matplotlib.image.imread now no longer always returns RGBA - -- if the image is luminance or RGB, it will return a MxN - or MxNx3 array if possible. Also uint8 is no longer always - forced to float. +2008-05-29 + matplotlib.image.imread now no longer always returns RGBA -- if the image + is luminance or RGB, it will return a MxN or MxNx3 array if possible. Also + uint8 is no longer always forced to float. -2008-05-29 Implement path clipping in PS backend - JDH +2008-05-29 + Implement path clipping in PS backend - JDH -2008-05-29 Fixed two bugs in texmanager.py: - improved comparison of dvipng versions - fixed a bug introduced when get_grey method was added - - DSD +2008-05-29 + Fixed two bugs in texmanager.py: improved comparison of dvipng versions + fixed a bug introduced when get_grey method was added - DSD -2008-05-28 Fix crashing of PDFs in xpdf and ghostscript when two-byte - characters are used with Type 3 fonts - MGD +2008-05-28 + Fix crashing of PDFs in xpdf and ghostscript when two-byte characters are + used with Type 3 fonts - MGD -2008-05-28 Allow keyword args to configure widget properties as - requested in - \http://sourceforge.net/tracker/index.php?func=detail&aid=1866207&group_id=80706&atid=560722 - - JDH +2008-05-28 + Allow keyword args to configure widget properties as requested in + \http://sourceforge.net/tracker/index.php?func=detail&aid=1866207&group_id=80706&atid=560722 + - JDH -2008-05-28 Replaced '-' with u'\u2212' for minus sign as requested in - \http://sourceforge.net/tracker/index.php?func=detail&aid=1962574&group_id=80706&atid=560720 +2008-05-28 + Replaced '-' with u'\\u2212' for minus sign as requested in + \http://sourceforge.net/tracker/index.php?func=detail&aid=1962574&group_id=80706&atid=560720 -2008-05-28 zero width/height Rectangles no longer influence the - autoscaler. Useful for log histograms with empty bins - - JDH +2008-05-28 + zero width/height Rectangles no longer influence the autoscaler. Useful + for log histograms with empty bins - JDH -2008-05-28 Fix rendering of composite glyphs in Type 3 conversion - (particularly as evidenced in the Eunjin.ttf Korean font) - Thanks Jae-Joon Lee for finding this! +2008-05-28 + Fix rendering of composite glyphs in Type 3 conversion (particularly as + evidenced in the Eunjin.ttf Korean font) Thanks Jae-Joon Lee for finding + this! -2008-05-27 Rewrote the cm.ScalarMappable callback infrastructure to - use cbook.CallbackRegistry rather than custom callback - handling. Amy users of add_observer/notify of the - cm.ScalarMappable should uae the - cm.ScalarMappable.callbacksSM CallbackRegistry instead. JDH +2008-05-27 + Rewrote the cm.ScalarMappable callback infrastructure to use + cbook.CallbackRegistry rather than custom callback handling. Any users of + add_observer/notify of the cm.ScalarMappable should use the + cm.ScalarMappable.callbacksSM CallbackRegistry instead. JDH -2008-05-27 Fix TkAgg build on Ubuntu 8.04 (and hopefully a more - general solution for other platforms, too.) +2008-05-27 + Fix TkAgg build on Ubuntu 8.04 (and hopefully a more general solution for + other platforms, too.) -2008-05-24 Added PIL support for loading images to imread (if PIL is - available) - JDH +2008-05-24 + Added PIL support for loading images to imread (if PIL is available) - JDH -2008-05-23 Provided a function and a method for controlling the - plot color cycle. - EF +2008-05-23 + Provided a function and a method for controlling the plot color cycle. - EF -2008-05-23 Major revision of hist(). Can handle 2D arrays and create - stacked histogram plots; keyword 'width' deprecated and - rwidth (relative width) introduced; align='edge' changed - to center of bin - MM +2008-05-23 + Major revision of hist(). Can handle 2D arrays and create stacked histogram + plots; keyword 'width' deprecated and rwidth (relative width) introduced; + align='edge' changed to center of bin - MM -2008-05-22 Added support for ReST-based doumentation using Sphinx. - Documents are located in doc/, and are broken up into - a users guide and an API reference. To build, run the - make.py files. Sphinx-0.4 is needed to build generate xml, - which will be useful for rendering equations with mathml, - use sphinx from svn until 0.4 is released - DSD +2008-05-22 + Added support for ReST-based doumentation using Sphinx. Documents are + located in doc/, and are broken up into a users guide and an API reference. + To build, run the make.py files. Sphinx-0.4 is needed to build generate + xml, which will be useful for rendering equations with mathml, use sphinx + from svn until 0.4 is released - DSD -2008-05-21 Fix segfault in TkAgg backend - MGD +2008-05-21 + Fix segfault in TkAgg backend - MGD -2008-05-21 Fix a "local variable unreferenced" bug in plotfile - MM +2008-05-21 + Fix a "local variable unreferenced" bug in plotfile - MM -2008-05-19 Fix crash when Windows can not access the registry to - determine font path [Bug 1966974, thanks Patrik Simons] - MGD +2008-05-19 + Fix crash when Windows can not access the registry to determine font path + [Bug 1966974, thanks Patrik Simons] - MGD -2008-05-16 removed some unneeded code w/ the python 2.4 requirement. - cbook no longer provides compatibility for reversed, - enumerate, set or izip. removed lib/subprocess, mpl1, - sandbox/units, and the swig code. This stuff should remain - on the maintenance branch for archival purposes. JDH +2008-05-16 + removed some unneeded code w/ the python 2.4 requirement. cbook no longer + provides compatibility for reversed, enumerate, set or izip. removed + lib/subprocess, mpl1, sandbox/units, and the swig code. This stuff should + remain on the maintenance branch for archival purposes. JDH -2008-05-16 Reorganized examples dir - JDH +2008-05-16 + Reorganized examples dir - JDH -2008-05-16 Added 'elinewidth' keyword arg to errorbar, based on patch - by Christopher Brown - MM +2008-05-16 + Added 'elinewidth' keyword arg to errorbar, based on patch by Christopher + Brown - MM -2008-05-16 Added 'cumulative' keyword arg to hist to plot cumulative - histograms. For normed hists, this is normalized to one - MM +2008-05-16 + Added 'cumulative' keyword arg to hist to plot cumulative histograms. For + normed hists, this is normalized to one - MM -2008-05-15 Fix Tk backend segfault on some machines - MGD +2008-05-15 + Fix Tk backend segfault on some machines - MGD -2008-05-14 Don't use stat on Windows (fixes font embedding problem) - MGD +2008-05-14 + Don't use stat on Windows (fixes font embedding problem) - MGD -2008-05-09 Fix /singlequote (') in Postscript backend - MGD +2008-05-09 + Fix /singlequote (') in Postscript backend - MGD -2008-05-08 Fix kerning in SVG when embedding character outlines - MGD +2008-05-08 + Fix kerning in SVG when embedding character outlines - MGD -2008-05-07 Switched to future numpy histogram semantic in hist - MM +2008-05-07 + Switched to future numpy histogram semantic in hist - MM -2008-05-06 Fix strange colors when blitting in QtAgg and Qt4Agg - MGD +2008-05-06 + Fix strange colors when blitting in QtAgg and Qt4Agg - MGD -2008-05-05 pass notify_axes_change to the figure's add_axobserver - in the qt backends, like we do for the other backends. - Thanks Glenn Jones for the report - DSD +2008-05-05 + pass notify_axes_change to the figure's add_axobserver in the qt backends, + like we do for the other backends. Thanks Glenn Jones for the report - DSD -2008-05-02 Added step histograms, based on patch by Erik Tollerud. - MM +2008-05-02 + Added step histograms, based on patch by Erik Tollerud. - MM -2008-05-02 On PyQt <= 3.14 there is no way to determine the underlying - Qt version. [1851364] - MGD +2008-05-02 + On PyQt <= 3.14 there is no way to determine the underlying Qt version. + [1851364] - MGD -2008-05-02 Don't call sys.exit() when pyemf is not found [1924199] - - MGD +2008-05-02 + Don't call sys.exit() when pyemf is not found [1924199] - MGD -2008-05-02 Update _subprocess.c from upstream Python 2.5.2 to get a - few memory and reference-counting-related bugfixes. See - bug 1949978. - MGD +2008-05-02 + Update _subprocess.c from upstream Python 2.5.2 to get a few memory and + reference-counting-related bugfixes. See bug 1949978. - MGD -2008-04-30 Added some record array editing widgets for gtk -- see - examples/rec_edit*.py - JDH +2008-04-30 + Added some record array editing widgets for gtk -- see + examples/rec_edit*.py - JDH -2008-04-29 Fix bug in mlab.sqrtm - MM +2008-04-29 + Fix bug in mlab.sqrtm - MM -2008-04-28 Fix bug in SVG text with Mozilla-based viewers (the symbol - tag is not supported) - MGD +2008-04-28 + Fix bug in SVG text with Mozilla-based viewers (the symbol tag is not + supported) - MGD -2008-04-27 Applied patch by Michiel de Hoon to add hexbin - axes method and pyplot function - EF +2008-04-27 + Applied patch by Michiel de Hoon to add hexbin axes method and pyplot + function - EF -2008-04-25 Enforce python >= 2.4; remove subprocess build - EF +2008-04-25 + Enforce python >= 2.4; remove subprocess build - EF -2008-04-25 Enforce the numpy requirement at build time - JDH +2008-04-25 + Enforce the numpy requirement at build time - JDH -2008-04-24 Make numpy 1.1 and python 2.3 required when importing - matplotlib - EF +2008-04-24 + Make numpy 1.1 and python 2.3 required when importing matplotlib - EF -2008-04-24 Fix compilation issues on VS2003 (Thanks Martin Spacek for - all the help) - MGD +2008-04-24 + Fix compilation issues on VS2003 (Thanks Martin Spacek for all the help) - + MGD -2008-04-24 Fix sub/superscripts when the size of the font has been - changed - MGD +2008-04-24 + Fix sub/superscripts when the size of the font has been changed - MGD -2008-04-22 Use "svg.embed_char_paths" consistently everywhere - MGD +2008-04-22 + Use "svg.embed_char_paths" consistently everywhere - MGD -2008-04-20 Add support to MaxNLocator for symmetric axis autoscaling. - EF +2008-04-20 + Add support to MaxNLocator for symmetric axis autoscaling. - EF -2008-04-20 Fix double-zoom bug. - MM +2008-04-20 + Fix double-zoom bug. - MM -2008-04-15 Speed up colormapping. - EF +2008-04-15 + Speed up colormapping. - EF -2008-04-12 Speed up zooming and panning of dense images. - EF +2008-04-12 + Speed up zooming and panning of dense images. - EF -2008-04-11 Fix global font rcParam setting after initialization - time. - MGD +2008-04-11 + Fix global font rcParam setting after initialization time. - MGD -2008-04-11 Revert commits 5002 and 5031, which were intended to - avoid an unnecessary call to draw(). 5002 broke saving - figures before show(). 5031 fixed the problem created in - 5002, but broke interactive plotting. Unnecessary call to - draw still needs resolution - DSD +2008-04-11 + Revert commits 5002 and 5031, which were intended to avoid an unnecessary + call to draw(). 5002 broke saving figures before show(). 5031 fixed the + problem created in 5002, but broke interactive plotting. Unnecessary call + to draw still needs resolution - DSD -2008-04-07 Improve color validation in rc handling, suggested - by Lev Givon - EF +2008-04-07 + Improve color validation in rc handling, suggested by Lev Givon - EF -2008-04-02 Allow to use both linestyle definition arguments, '-' and - 'solid' etc. in plots/collections - MM +2008-04-02 + Allow to use both linestyle definition arguments, '-' and 'solid' etc. in + plots/collections - MM -2008-03-27 Fix saving to Unicode filenames with Agg backend - (other backends appear to already work...) - (Thanks, Christopher Barker) - MGD +2008-03-27 + Fix saving to Unicode filenames with Agg backend (other backends appear to + already work...) (Thanks, Christopher Barker) - MGD -2008-03-26 Fix SVG backend bug that prevents copying and pasting in - Inkscape (thanks Kaushik Ghose) - MGD +2008-03-26 + Fix SVG backend bug that prevents copying and pasting in Inkscape (thanks + Kaushik Ghose) - MGD -2008-03-24 Removed an unnecessary call to draw() in the backend_qt* - mouseReleaseEvent. Thanks to Ted Drain - DSD +2008-03-24 + Removed an unnecessary call to draw() in the backend_qt* mouseReleaseEvent. + Thanks to Ted Drain - DSD -2008-03-23 Fix a pdf backend bug which sometimes caused the outermost - gsave to not be balanced with a grestore. - JKS +2008-03-23 + Fix a pdf backend bug which sometimes caused the outermost gsave to not be + balanced with a grestore. - JKS -2008-03-20 Fixed a minor bug in ContourSet._process_linestyles when - len(linestyles)==Nlev - MM +2008-03-20 + Fixed a minor bug in ContourSet._process_linestyles when + len(linestyles)==Nlev - MM -2008-03-19 Changed ma import statements to "from numpy import ma"; - this should work with past and future versions of - numpy, whereas "import numpy.ma as ma" will work only - with numpy >= 1.05, and "import numerix.npyma as ma" - is obsolete now that maskedarray is replacing the - earlier implementation, as of numpy 1.05. +2008-03-19 + Changed ma import statements to "from numpy import ma"; this should work + with past and future versions of numpy, whereas "import numpy.ma as ma" + will work only with numpy >= 1.05, and "import numerix.npyma as ma" is + obsolete now that maskedarray is replacing the earlier implementation, as + of numpy 1.05. -2008-03-14 Removed an apparently unnecessary call to - FigureCanvasAgg.draw in backend_qt*agg. Thanks to Ted - Drain - DSD +2008-03-14 + Removed an apparently unnecessary call to FigureCanvasAgg.draw in + backend_qt*agg. Thanks to Ted Drain - DSD -2008-03-10 Workaround a bug in backend_qt4agg's blitting due to a - buffer width/bbox width mismatch in _backend_agg's - copy_from_bbox - DSD +2008-03-10 + Workaround a bug in backend_qt4agg's blitting due to a buffer width/bbox + width mismatch in _backend_agg's copy_from_bbox - DSD -2008-02-29 Fix class Wx toolbar pan and zoom functions (Thanks Jeff - Peery) - MGD +2008-02-29 + Fix class Wx toolbar pan and zoom functions (Thanks Jeff Peery) - MGD -2008-02-16 Added some new rec array functionality to mlab - (rec_summarize, rec2txt and rec_groupby). See - examples/rec_groupby_demo.py. Thanks to Tim M for rec2txt. +2008-02-16 + Added some new rec array functionality to mlab (rec_summarize, rec2txt and + rec_groupby). See examples/rec_groupby_demo.py. Thanks to Tim M for + rec2txt. -2008-02-12 Applied Erik Tollerud's span selector patch - JDH +2008-02-12 + Applied Erik Tollerud's span selector patch - JDH -2008-02-11 Update plotting() doc string to refer to getp/setp. - JKS +2008-02-11 + Update plotting() doc string to refer to getp/setp. - JKS -2008-02-10 Fixed a problem with square roots in the pdf backend with - usetex. - JKS +2008-02-10 + Fixed a problem with square roots in the pdf backend with usetex. - JKS -2008-02-08 Fixed minor __str__ bugs so getp(gca()) works. - JKS +2008-02-08 + Fixed minor __str__ bugs so getp(gca()) works. - JKS -2008-02-05 Added getters for title, xlabel, ylabel, as requested - by Brandon Kieth - EF +2008-02-05 + Added getters for title, xlabel, ylabel, as requested by Brandon Kieth - EF -2008-02-05 Applied Gael's ginput patch and created - examples/ginput_demo.py - JDH +2008-02-05 + Applied Gael's ginput patch and created examples/ginput_demo.py - JDH -2008-02-03 Expose interpnames, a list of valid interpolation - methods, as an AxesImage class attribute. - EF +2008-02-03 + Expose interpnames, a list of valid interpolation methods, as an AxesImage + class attribute. - EF -2008-02-03 Added BoundaryNorm, with examples in colorbar_only.py - and image_masked.py. - EF +2008-02-03 + Added BoundaryNorm, with examples in colorbar_only.py and image_masked.py. + - EF -2008-02-03 Force dpi=72 in pdf backend to fix picture size bug. - JKS +2008-02-03 + Force dpi=72 in pdf backend to fix picture size bug. - JKS -2008-02-01 Fix doubly-included font problem in Postscript backend - MGD +2008-02-01 + Fix doubly-included font problem in Postscript backend - MGD -2008-02-01 Fix reference leak in ft2font Glyph objects. - MGD +2008-02-01 + Fix reference leak in ft2font Glyph objects. - MGD -2008-01-31 Don't use unicode strings with usetex by default - DSD +2008-01-31 + Don't use unicode strings with usetex by default - DSD -2008-01-31 Fix text spacing problems in PDF backend with *some* fonts, - such as STIXGeneral. +2008-01-31 + Fix text spacing problems in PDF backend with *some* fonts, such as + STIXGeneral. -2008-01-31 Fix \sqrt with radical number (broken by making [ and ] - work below) - MGD +2008-01-31 + Fix \sqrt with radical number (broken by making [ and ] work below) - MGD -2008-01-27 Applied Martin Teichmann's patch to improve the Qt4 - backend. Uses Qt's builtin toolbars and statusbars. - See bug 1828848 - DSD +2008-01-27 + Applied Martin Teichmann's patch to improve the Qt4 backend. Uses Qt's + builtin toolbars and statusbars. See bug 1828848 - DSD -2008-01-10 Moved toolkits to mpl_toolkits, made mpl_toolkits - a namespace package - JSWHIT +2008-01-10 + Moved toolkits to mpl_toolkits, made mpl_toolkits a namespace package - + JSWHIT -2008-01-10 Use setup.cfg to set the default parameters (tkagg, - numpy) when building windows installers - DSD +2008-01-10 + Use setup.cfg to set the default parameters (tkagg, numpy) when building + windows installers - DSD -2008-01-10 Fix bug displaying [ and ] in mathtext - MGD +2008-01-10 + Fix bug displaying [ and ] in mathtext - MGD -2008-01-10 Fix bug when displaying a tick value offset with scientific - notation. (Manifests itself as a warning that the \times - symbol can not be found). - MGD +2008-01-10 + Fix bug when displaying a tick value offset with scientific notation. + (Manifests itself as a warning that the \times symbol can not be found). - + MGD -2008-01-10 Use setup.cfg to set the default parameters (tkagg, - numpy) when building windows installers - DSD +2008-01-10 + Use setup.cfg to set the default parameters (tkagg, numpy) when building + windows installers - DSD -------------------- -2008-01-06 Released 0.91.2 at revision 4802 +2008-01-06 + Released 0.91.2 at revision 4802 -2007-12-26 Reduce too-late use of matplotlib.use() to a warning - instead of an exception, for backwards compatibility - EF +2007-12-26 + Reduce too-late use of matplotlib.use() to a warning instead of an + exception, for backwards compatibility - EF -2007-12-25 Fix bug in errorbar, identified by Noriko Minakawa - EF +2007-12-25 + Fix bug in errorbar, identified by Noriko Minakawa - EF -2007-12-25 Changed masked array importing to work with the upcoming - numpy 1.05 (now the maskedarray branch) as well as with - earlier versions. - EF +2007-12-25 + Changed masked array importing to work with the upcoming numpy 1.05 (now + the maskedarray branch) as well as with earlier versions. - EF -2007-12-16 rec2csv saves doubles without losing precision. Also, it - does not close filehandles passed in open. - JDH,ADS +2007-12-16 + rec2csv saves doubles without losing precision. Also, it does not close + filehandles passed in open. - JDH,ADS -2007-12-13 Moved rec2gtk to matplotlib.toolkits.gtktools and rec2excel - to matplotlib.toolkits.exceltools - JDH +2007-12-13 + Moved rec2gtk to matplotlib.toolkits.gtktools and rec2excel to + matplotlib.toolkits.exceltools - JDH -2007-12-12 Support alpha-blended text in the Agg and Svg backends - - MGD +2007-12-12 + Support alpha-blended text in the Agg and Svg backends - MGD -2007-12-10 Fix SVG text rendering bug. - MGD +2007-12-10 + Fix SVG text rendering bug. - MGD -2007-12-10 Increase accuracy of circle and ellipse drawing by using an - 8-piece bezier approximation, rather than a 4-piece one. - Fix PDF, SVG and Cairo backends so they can draw paths - (meaning ellipses as well). - MGD +2007-12-10 + Increase accuracy of circle and ellipse drawing by using an 8-piece bezier + approximation, rather than a 4-piece one. Fix PDF, SVG and Cairo backends + so they can draw paths (meaning ellipses as well). - MGD -2007-12-07 Issue a warning when drawing an image on a non-linear axis. - MGD +2007-12-07 + Issue a warning when drawing an image on a non-linear axis. - MGD -2007-12-06 let widgets.Cursor initialize to the lower x and y bounds - rather than 0,0, which can cause havoc for dates and other - transforms - DSD +2007-12-06 + let widgets.Cursor initialize to the lower x and y bounds rather than 0,0, + which can cause havoc for dates and other transforms - DSD -2007-12-06 updated references to mpl data directories for py2exe - DSD +2007-12-06 + updated references to mpl data directories for py2exe - DSD -2007-12-06 fixed a bug in rcsetup, see bug 1845057 - DSD +2007-12-06 + fixed a bug in rcsetup, see bug 1845057 - DSD -2007-12-05 Fix how fonts are cached to avoid loading the same one multiple times. - (This was a regression since 0.90 caused by the refactoring of - font_manager.py) - MGD +2007-12-05 + Fix how fonts are cached to avoid loading the same one multiple times. + (This was a regression since 0.90 caused by the refactoring of + font_manager.py) - MGD -2007-12-05 Support arbitrary rotation of usetex text in Agg backend. - MGD +2007-12-05 + Support arbitrary rotation of usetex text in Agg backend. - MGD -2007-12-04 Support '|' as a character in mathtext - MGD +2007-12-04 + Support '|' as a character in mathtext - MGD ----------------------------------------------------- -2007-11-27 Released 0.91.1 at revision 4517 +2007-11-27 + Released 0.91.1 at revision 4517 ----------------------------------------------------- -2007-11-27 Released 0.91.0 at revision 4478 - -2007-11-13 All backends now support writing to a file-like object, not - just a regular file. savefig() can be passed a file-like - object in place of a file path. - MGD - -2007-11-13 Improved the default backend selection at build time: - SVG -> Agg -> TkAgg -> WXAgg -> GTK -> GTKAgg. The last usable - backend in this progression will be chosen in the default - config file. If a backend is defined in setup.cfg, that will - be the default backend - DSD - -2007-11-13 Improved creation of default config files at build time for - traited config package - DSD - -2007-11-12 Exposed all the build options in setup.cfg. These options are - read into a dict called "options" by setupext.py. Also, added - "-mpl" tags to the version strings for packages provided by - matplotlib. Versions provided by mpl will be identified and - updated on subsequent installs - DSD - -2007-11-12 Added support for STIX fonts. A new rcParam, - mathtext.fontset, can be used to choose between: - - 'cm': - The TeX/LaTeX Computer Modern fonts - - 'stix': - The STIX fonts (see stixfonts.org) - - 'stixsans': - The STIX fonts, using sans-serif glyphs by default - - 'custom': - A generic Unicode font, in which case the mathtext font - must be specified using mathtext.bf, mathtext.it, - mathtext.sf etc. - - Added a new example, stix_fonts_demo.py to show how to access - different fonts and unusual symbols. - - - MGD - -2007-11-12 Options to disable building backend extension modules moved - from setup.py to setup.cfg - DSD - -2007-11-09 Applied Martin Teichmann's patch 1828813: a QPainter is used in - paintEvent, which has to be destroyed using the method end(). If - matplotlib raises an exception before the call to end - and it - does if you feed it with bad data - this method end() is never - called and Qt4 will start spitting error messages - -2007-11-09 Moved pyparsing back into matplotlib namespace. Don't use - system pyparsing, API is too variable from one release - to the next - DSD +2007-11-27 + Released 0.91.0 at revision 4478 + +2007-11-13 + All backends now support writing to a file-like object, not just a regular + file. savefig() can be passed a file-like object in place of a file path. + - MGD + +2007-11-13 + Improved the default backend selection at build time: SVG -> Agg -> TkAgg + -> WXAgg -> GTK -> GTKAgg. The last usable backend in this progression will + be chosen in the default config file. If a backend is defined in setup.cfg, + that will be the default backend - DSD + +2007-11-13 + Improved creation of default config files at build time for traited config + package - DSD + +2007-11-12 + Exposed all the build options in setup.cfg. These options are read into a + dict called "options" by setupext.py. Also, added "-mpl" tags to the + version strings for packages provided by matplotlib. Versions provided by + mpl will be identified and updated on subsequent installs - DSD + +2007-11-12 + Added support for STIX fonts. A new rcParam, mathtext.fontset, can be used + to choose between: + + 'cm' + The TeX/LaTeX Computer Modern fonts + 'stix' + The STIX fonts (see stixfonts.org) + 'stixsans' + The STIX fonts, using sans-serif glyphs by default + 'custom' + A generic Unicode font, in which case the mathtext font must be + specified using mathtext.bf, mathtext.it, mathtext.sf etc. + + Added a new example, stix_fonts_demo.py to show how to access different + fonts and unusual symbols. - MGD + +2007-11-12 + Options to disable building backend extension modules moved from setup.py + to setup.cfg - DSD + +2007-11-09 + Applied Martin Teichmann's patch 1828813: a QPainter is used in paintEvent, + which has to be destroyed using the method end(). If matplotlib raises an + exception before the call to end - and it does if you feed it with bad data + - this method end() is never called and Qt4 will start spitting error + messages + +2007-11-09 + Moved pyparsing back into matplotlib namespace. Don't use system pyparsing, + API is too variable from one release to the next - DSD + +2007-11-08 + Made pylab use straight numpy instead of oldnumeric by default - EF + +2007-11-08 + Added additional record array utilities to mlab (rec2excel, rec2gtk, + rec_join, rec_append_field, rec_drop_field) - JDH + +2007-11-08 + Updated pytz to version 2007g - DSD -2007-11-08 Made pylab use straight numpy instead of oldnumeric - by default - EF +2007-11-08 + Updated pyparsing to version 1.4.8 - DSD + +2007-11-08 + Moved csv2rec to recutils and added other record array utilities - JDH + +2007-11-08 + If available, use existing pyparsing installation - DSD + +2007-11-07 + Removed old enthought.traits from lib/matplotlib, added Gael Varoquaux's + enthought.traits-2.6b1, which is stripped of setuptools. The package is + installed to site-packages if not already available - DSD + +2007-11-05 + Added easy access to minor tick properties; slight mod of patch by Pierre + G-M - EF + +2007-11-02 + Committed Phil Thompson's patch 1599876, fixes to Qt4Agg backend and qt4 + blitting demo - DSD + +2007-11-02 + Committed Phil Thompson's patch 1599876, fixes to Qt4Agg backend and qt4 + blitting demo - DSD + +2007-10-31 + Made log color scale easier to use with contourf; automatic level + generation now works. - EF + +2007-10-29 + TRANSFORMS REFACTORING + + The primary goal of this refactoring was to make it easier to extend + matplotlib to support new kinds of projections. This is primarily an + internal improvement, and the possible user-visible changes it allows are + yet to come. + + The transformation framework was completely rewritten in Python (with + Numpy). This will make it easier to add news kinds of transformations + without writing C/C++ code. + + Transforms are composed into a 'transform tree', made of transforms whose + value depends on other transforms (their children). When the contents of + children change, their parents are automatically updated to reflect those + changes. To do this an "invalidation" method is used: when children + change, all of their ancestors are marked as "invalid". When the value of + a transform is accessed at a later time, its value is recomputed only if it + is invalid, otherwise a cached value may be used. This prevents + unnecessary recomputations of transforms, and contributes to better + interactive performance. + + The framework can be used for both affine and non-affine transformations. + However, for speed, we want use the backend renderers to perform affine + transformations whenever possible. Therefore, it is possible to perform + just the affine or non-affine part of a transformation on a set of data. + The affine is always assumed to occur after the non-affine. For any + transform:: + + full transform == non-affine + affine + + Much of the drawing has been refactored in terms of compound paths. + Therefore, many methods have been removed from the backend interface and + replaced with a handful to draw compound paths. This will make updating + the backends easier, since there is less to update. It also should make + the backends more consistent in terms of functionality. + + User visible changes: + + - POLAR PLOTS: Polar plots are now interactively zoomable, and the r-axis + labels can be interactively rotated. Straight line segments are now + interpolated to follow the curve of the r-axis. + + - Non-rectangular clipping works in more backends and with more types of + objects. + + - Sharing an axis across figures is now done in exactly the same way as + sharing an axis between two axes in the same figure:: + + fig1 = figure() + fig2 = figure() + + ax1 = fig1.add_subplot(111) + ax2 = fig2.add_subplot(111, sharex=ax1, sharey=ax1) -2007-11-08 Added additional record array utilities to mlab (rec2excel, - rec2gtk, rec_join, rec_append_field, rec_drop_field) - JDH + - linestyles now include steps-pre, steps-post and steps-mid. The old step + still works and is equivalent to step-pre. -2007-11-08 Updated pytz to version 2007g - DSD + - Multiple line styles may be provided to a collection. -2007-11-08 Updated pyparsing to version 1.4.8 - DSD + See API_CHANGES for more low-level information about this refactoring. -2007-11-08 Moved csv2rec to recutils and added other record array - utilities - JDH +2007-10-24 + Added ax kwarg to Figure.colorbar and pyplot.colorbar - EF -2007-11-08 If available, use existing pyparsing installation - DSD +2007-10-19 + Removed a gsave/grestore pair surrounding _draw_ps, which was causing a + loss graphics state info (see "EPS output problem - scatter & edgecolors" + on mpl-dev, 2007-10-29) - DSD -2007-11-07 Removed old enthought.traits from lib/matplotlib, added - Gael Varoquaux's enthought.traits-2.6b1, which is stripped - of setuptools. The package is installed to site-packages - if not already available - DSD +2007-10-15 + Fixed a bug in patches.Ellipse that was broken for aspect='auto'. Scale + free ellipses now work properly for equal and auto on Agg and PS, and they + fall back on a polygonal approximation for nonlinear transformations until + we convince oursleves that the spline approximation holds for nonlinear + transformations. Added unit/ellipse_compare.py to compare spline with + vertex approx for both aspects. JDH + +2007-10-05 + remove generator expressions from texmanager and mpltraits. generator + expressions are not supported by python-2.3 - DSD + +2007-10-01 + Made matplotlib.use() raise an exception if called after backends has been + imported. - EF + +2007-09-30 + Modified update* methods of Bbox and Interval so they work with reversed + axes. Prior to this, trying to set the ticks on a reversed axis failed + with an uninformative error message. - EF + +2007-09-30 + Applied patches to axes3d to fix index error problem - EF + +2007-09-24 + Applied Eike Welk's patch reported on mpl-dev on 2007-09-22 Fixes a bug + with multiple plot windows in the qt backend, ported the changes to + backend_qt4 as well - DSD + +2007-09-21 + Changed cbook.reversed to yield the same result as the python reversed + builtin - DSD + +2007-09-13 + The usetex support in the pdf backend is more usable now, so I am enabling + it. - JKS + +2007-09-12 + Fixed a Axes.bar unit bug - JDH + +2007-09-10 + Made skiprows=1 the default on csv2rec - JDH + +2007-09-09 + Split out the plotting part of pylab and put it in pyplot.py; removed + numerix from the remaining pylab.py, which imports everything from + pyplot.py. The intention is that apart from cleanups, the result of + importing from pylab is nearly unchanged, but there is the new alternative + of importing from pyplot to get the state-engine graphics without all the + numeric functions. Numpified examples; deleted two that were obsolete; + modified some to use pyplot. - EF -2007-11-05 Added easy access to minor tick properties; slight mod - of patch by Pierre G-M - EF +2007-09-08 + Eliminated gd and paint backends - EF -2007-11-02 Committed Phil Thompson's patch 1599876, fixes to Qt4Agg - backend and qt4 blitting demo - DSD +2007-09-06 + .bmp file format is now longer an alias for .raw -2007-11-02 Committed Phil Thompson's patch 1599876, fixes to Qt4Agg - backend and qt4 blitting demo - DSD +2007-09-07 + Added clip path support to pdf backend. - JKS -2007-10-31 Made log color scale easier to use with contourf; - automatic level generation now works. - EF +2007-09-06 + Fixed a bug in the embedding of Type 1 fonts in PDF. Now it doesn't crash + Preview.app. - JKS -2007-10-29 TRANSFORMS REFACTORING +2007-09-06 + Refactored image saving code so that all GUI backends can save most image + types. See FILETYPES for a matrix of backends and their supported file + types. Backend canvases should no longer write their own print_figure() + method -- instead they should write a print_xxx method for each filetype + they can output and add an entry to their class-scoped filetypes + dictionary. - MGD - The primary goal of this refactoring was to make it easier - to extend matplotlib to support new kinds of projections. - This is primarily an internal improvement, and the possible - user-visible changes it allows are yet to come. +2007-09-05 + Fixed Qt version reporting in setupext.py - DSD - The transformation framework was completely rewritten in - Python (with Numpy). This will make it easier to add news - kinds of transformations without writing C/C++ code. +2007-09-04 + Embedding Type 1 fonts in PDF, and thus usetex support via dviread, sort of + works. To test, enable it by renaming _draw_tex to draw_tex. - JKS - Transforms are composed into a 'transform tree', made of - transforms whose value depends on other transforms (their - children). When the contents of children change, their - parents are automatically updated to reflect those changes. - To do this an "invalidation" method is used: when children - change, all of their ancestors are marked as "invalid". - When the value of a transform is accessed at a later time, - its value is recomputed only if it is invalid, otherwise a - cached value may be used. This prevents unnecessary - recomputations of transforms, and contributes to better - interactive performance. +2007-09-03 + Added ability of errorbar show limits via caret or arrowhead ends on the + bars; patch by Manual Metz. - EF - The framework can be used for both affine and non-affine - transformations. However, for speed, we want use the - backend renderers to perform affine transformations - whenever possible. Therefore, it is possible to perform - just the affine or non-affine part of a transformation on a - set of data. The affine is always assumed to occur after - the non-affine. For any transform: +2007-09-03 + Created type1font.py, added features to AFM and FT2Font (see API_CHANGES), + started work on embedding Type 1 fonts in pdf files. - JKS - full transform == non-affine + affine +2007-09-02 + Continued work on dviread.py. - JKS - Much of the drawing has been refactored in terms of - compound paths. Therefore, many methods have been removed - from the backend interface and replaced with a handful to - draw compound paths. This will make updating the backends - easier, since there is less to update. It also should make - the backends more consistent in terms of functionality. +2007-08-16 + Added a set_extent method to AxesImage, allow data extent to be modified + after initial call to imshow - DSD - User visible changes: +2007-08-14 + Fixed a bug in pyqt4 subplots-adjust. Thanks to Xavier Gnata for the report + and suggested fix - DSD - - POLAR PLOTS: Polar plots are now interactively zoomable, - and the r-axis labels can be interactively rotated. - Straight line segments are now interpolated to follow the - curve of the r-axis. +2007-08-13 + Use pickle to cache entire fontManager; change to using font_manager + module-level function findfont wrapper for the fontManager.findfont method + - EF - - Non-rectangular clipping works in more backends and with - more types of objects. +2007-08-11 + Numpification and cleanup of mlab.py and some examples - EF - - Sharing an axis across figures is now done in exactly - the same way as sharing an axis between two axes in the - same figure:: +2007-08-06 + Removed mathtext2 - fig1 = figure() - fig2 = figure() +2007-07-31 + Refactoring of distutils scripts. - ax1 = fig1.add_subplot(111) - ax2 = fig2.add_subplot(111, sharex=ax1, sharey=ax1) + - Will not fail on the entire build if an optional Python package (e.g., + Tkinter) is installed but its development headers are not (e.g., + tk-devel). Instead, it will continue to build all other extensions. + - Provide an overview at the top of the output to display what dependencies + and their versions were found, and (by extension) what will be built. + - Use pkg-config, when available, to find freetype2, since this was broken + on Mac OS-X when using MacPorts in a non- standard location. - - linestyles now include steps-pre, steps-post and - steps-mid. The old step still works and is equivalent to - step-pre. +2007-07-30 + Reorganized configuration code to work with traited config objects. The new + config system is located in the matplotlib.config package, but it is + disabled by default. To enable it, set NEWCONFIG=True in + matplotlib.__init__.py. The new configuration system will still use the + old matplotlibrc files by default. To switch to the experimental, traited + configuration, set USE_TRAITED_CONFIG=True in config.__init__.py. - - Multiple line styles may be provided to a collection. +2007-07-29 + Changed default pcolor shading to flat; added aliases to make collection + kwargs agree with setter names, so updating works; related minor cleanups. + Removed quiver_classic, scatter_classic, pcolor_classic. - EF - See API_CHANGES for more low-level information about this - refactoring. +2007-07-26 + Major rewrite of mathtext.py, using the TeX box layout model. -2007-10-24 Added ax kwarg to Figure.colorbar and pyplot.colorbar - EF + There is one (known) backward incompatible change. The font commands + (\cal, \rm, \it, \tt) now behave as TeX does: they are in effect until the + next font change command or the end of the grouping. Therefore uses of + $\cal{R}$ should be changed to ${\cal R}$. Alternatively, you may use the + new LaTeX-style font commands (\mathcal, \mathrm, \mathit, \mathtt) which + do affect the following group, e.g., $\mathcal{R}$. -2007-10-19 Removed a gsave/grestore pair surrounding _draw_ps, which - was causing a loss graphics state info (see "EPS output - problem - scatter & edgecolors" on mpl-dev, 2007-10-29) - - DSD + Other new features include: -2007-10-15 Fixed a bug in patches.Ellipse that was broken for - aspect='auto'. Scale free ellipses now work properly for - equal and auto on Agg and PS, and they fall back on a - polygonal approximation for nonlinear transformations until - we convince oursleves that the spline approximation holds - for nonlinear transformations. Added - unit/ellipse_compare.py to compare spline with vertex - approx for both aspects. JDH + - Math may be interspersed with non-math text. Any text with an even + number of $'s (non-escaped) will be sent to the mathtext parser for + layout. -2007-10-05 remove generator expressions from texmanager and mpltraits. - generator expressions are not supported by python-2.3 - DSD + - Sub/superscripts are less likely to accidentally overlap. -2007-10-01 Made matplotlib.use() raise an exception if called after - backends has been imported. - EF + - Support for sub/superscripts in either order, e.g., $x^i_j$ and $x_j^i$ + are equivalent. -2007-09-30 Modified update* methods of Bbox and Interval so they - work with reversed axes. Prior to this, trying to - set the ticks on a reversed axis failed with an - uninformative error message. - EF - -2007-09-30 Applied patches to axes3d to fix index error problem - EF - -2007-09-24 Applied Eike Welk's patch reported on mpl-dev on 2007-09-22 - Fixes a bug with multiple plot windows in the qt backend, - ported the changes to backend_qt4 as well - DSD - -2007-09-21 Changed cbook.reversed to yield the same result as the - python reversed builtin - DSD - -2007-09-13 The usetex support in the pdf backend is more usable now, - so I am enabling it. - JKS - -2007-09-12 Fixed a Axes.bar unit bug - JDH - -2007-09-10 Made skiprows=1 the default on csv2rec - JDH - -2007-09-09 Split out the plotting part of pylab and put it in - pyplot.py; removed numerix from the remaining pylab.py, - which imports everything from pyplot.py. The intention - is that apart from cleanups, the result of importing - from pylab is nearly unchanged, but there is the - new alternative of importing from pyplot to get - the state-engine graphics without all the numeric - functions. - Numpified examples; deleted two that were obsolete; - modified some to use pyplot. - EF + - Double sub/superscripts (e.g., $x_i_j$) are considered ambiguous and + raise an exception. Use braces to disambiguate. -2007-09-08 Eliminated gd and paint backends - EF + - $\frac{x}{y}$ can be used for displaying fractions. -2007-09-06 .bmp file format is now longer an alias for .raw + - $\sqrt[3]{x}$ can be used to display the radical symbol with a root + number and body. -2007-09-07 Added clip path support to pdf backend. - JKS + - $\left(\frac{x}{y}\right)$ may be used to create parentheses and other + delimiters that automatically resize to the height of their contents. -2007-09-06 Fixed a bug in the embedding of Type 1 fonts in PDF. - Now it doesn't crash Preview.app. - JKS + - Spacing around operators etc. is now generally more like TeX. -2007-09-06 Refactored image saving code so that all GUI backends can - save most image types. See FILETYPES for a matrix of - backends and their supported file types. - Backend canvases should no longer write their own print_figure() - method -- instead they should write a print_xxx method for - each filetype they can output and add an entry to their - class-scoped filetypes dictionary. - MGD + - Added support (and fonts) for boldface (\bf) and sans-serif (\sf) + symbols. -2007-09-05 Fixed Qt version reporting in setupext.py - DSD + - Log-like function name shortcuts are supported. For example, $\sin(x)$ + may be used instead of ${\rm sin}(x)$ -2007-09-04 Embedding Type 1 fonts in PDF, and thus usetex support - via dviread, sort of works. To test, enable it by - renaming _draw_tex to draw_tex. - JKS + - Limited use of kerning for the easy case (same font) -2007-09-03 Added ability of errorbar show limits via caret or - arrowhead ends on the bars; patch by Manual Metz. - EF + Behind the scenes, the pyparsing.py module used for doing the math parsing + was updated to the latest stable version (1.4.6). A lot of duplicate code + was refactored out of the Font classes. -2007-09-03 Created type1font.py, added features to AFM and FT2Font - (see API_CHANGES), started work on embedding Type 1 fonts - in pdf files. - JKS + - MGD -2007-09-02 Continued work on dviread.py. - JKS +2007-07-19 + completed numpification of most trivial cases - NN -2007-08-16 Added a set_extent method to AxesImage, allow data extent - to be modified after initial call to imshow - DSD +2007-07-19 + converted non-numpy relicts throughout the code - NN -2007-08-14 Fixed a bug in pyqt4 subplots-adjust. Thanks to - Xavier Gnata for the report and suggested fix - DSD +2007-07-19 + replaced the Python code in numerix/ by a minimal wrapper around numpy that + explicitly mentions all symbols that need to be addressed for further + numpification - NN -2007-08-13 Use pickle to cache entire fontManager; change to using - font_manager module-level function findfont wrapper for - the fontManager.findfont method - EF +2007-07-18 + make usetex respect changes to rcParams. texmanager used to only configure + itself when it was created, now it reconfigures when rcParams are changed. + Thank you Alexander Schmolck for contributing a patch - DSD -2007-08-11 Numpification and cleanup of mlab.py and some examples - EF +2007-07-17 + added validation to setting and changing rcParams - DSD -2007-08-06 Removed mathtext2 +2007-07-17 + bugfix segfault in transforms module. Thanks Ben North for the patch. - ADS -2007-07-31 Refactoring of distutils scripts. - - Will not fail on the entire build if an optional Python - package (e.g., Tkinter) is installed but its development - headers are not (e.g., tk-devel). Instead, it will - continue to build all other extensions. - - Provide an overview at the top of the output to display - what dependencies and their versions were found, and (by - extension) what will be built. - - Use pkg-config, when available, to find freetype2, since - this was broken on Mac OS-X when using MacPorts in a non- - standard location. +2007-07-16 + clean up some code in ticker.ScalarFormatter, use unicode to render + multiplication sign in offset ticklabel - DSD -2007-07-30 Reorganized configuration code to work with traited config - objects. The new config system is located in the - matplotlib.config package, but it is disabled by default. - To enable it, set NEWCONFIG=True in matplotlib.__init__.py. - The new configuration system will still use the old - matplotlibrc files by default. To switch to the experimental, - traited configuration, set USE_TRAITED_CONFIG=True in - config.__init__.py. +2007-07-16 + fixed a formatting bug in ticker.ScalarFormatter's scientific notation + (10^0 was being rendered as 10 in some cases) - DSD -2007-07-29 Changed default pcolor shading to flat; added aliases - to make collection kwargs agree with setter names, so - updating works; related minor cleanups. - Removed quiver_classic, scatter_classic, pcolor_classic. - EF +2007-07-13 + Add MPL_isfinite64() and MPL_isinf64() for testing doubles in (the now + misnamed) MPL_isnan.h. - ADS -2007-07-26 Major rewrite of mathtext.py, using the TeX box layout model. +2007-07-13 + The matplotlib._isnan module removed (use numpy.isnan) - ADS - There is one (known) backward incompatible change. The - font commands (\cal, \rm, \it, \tt) now behave as TeX does: - they are in effect until the next font change command or - the end of the grouping. Therefore uses of $\cal{R}$ - should be changed to ${\cal R}$. Alternatively, you may - use the new LaTeX-style font commands (\mathcal, \mathrm, - \mathit, \mathtt) which do affect the following group, - e.g., $\mathcal{R}$. +2007-07-13 + Some minor cleanups in _transforms.cpp - ADS - Other new features include: +2007-07-13 + Removed the rest of the numerix extension code detritus, numpified axes.py, + and cleaned up the imports in axes.py - JDH - - Math may be interspersed with non-math text. Any text - with an even number of $'s (non-escaped) will be sent to - the mathtext parser for layout. +2007-07-13 + Added legend.loc as configurable option that could in future default to + 'best'. - NN - - Sub/superscripts are less likely to accidentally overlap. +2007-07-12 + Bugfixes in mlab.py to coerce inputs into numpy arrays. -ADS - - Support for sub/superscripts in either order, e.g., $x^i_j$ - and $x_j^i$ are equivalent. +2007-07-11 + Added linespacing kwarg to text.Text - EF - - Double sub/superscripts (e.g., $x_i_j$) are considered - ambiguous and raise an exception. Use braces to disambiguate. +2007-07-11 + Added code to store font paths in SVG files. - MGD - - $\frac{x}{y}$ can be used for displaying fractions. +2007-07-10 + Store subset of TTF font as a Type 3 font in PDF files. - MGD - - $\sqrt[3]{x}$ can be used to display the radical symbol - with a root number and body. +2007-07-09 + Store subset of TTF font as a Type 3 font in PS files. - MGD - - $\left(\frac{x}{y}\right)$ may be used to create - parentheses and other delimiters that automatically - resize to the height of their contents. +2007-07-09 + Applied Paul's pick restructure pick and add pickers, sourceforge patch + 1749829 - JDH - - Spacing around operators etc. is now generally more like - TeX. +2007-07-09 + Applied Allan's draw_lines agg optimization. JDH - - Added support (and fonts) for boldface (\bf) and - sans-serif (\sf) symbols. +2007-07-08 + Applied Carl Worth's patch to fix cairo draw_arc - SC - - Log-like function name shortcuts are supported. For - example, $\sin(x)$ may be used instead of ${\rm sin}(x)$ +2007-07-07 + fixed bug 1712099: xpdf distiller on windows - DSD - - Limited use of kerning for the easy case (same font) +2007-06-30 + Applied patches to tkagg, gtk, and wx backends to reduce memory leakage. + Patches supplied by Mike Droettboom; see tracker numbers 1745400, 1745406, + 1745408. Also made unit/memleak_gui.py more flexible with command-line + options. - EF - Behind the scenes, the pyparsing.py module used for doing - the math parsing was updated to the latest stable version - (1.4.6). A lot of duplicate code was refactored out of the - Font classes. +2007-06-30 + Split defaultParams into separate file rcdefaults (together with validation + code). Some heavy refactoring was necessary to do so, but the overall + behavior should be the same as before. - NN - - MGD +2007-06-27 + Added MPLCONFIGDIR for the default location for mpl data and configuration. + useful for some apache installs where HOME is not writable. Tried to clean + up the logic in _get_config_dir to support non-writable HOME where are + writable HOME/.matplotlib already exists - JDH -2007-07-19 completed numpification of most trivial cases - NN +2007-06-27 + Fixed locale bug reported at + \http://sourceforge.net/tracker/index.php?func=detail&aid=1744154&group_id=80706&atid=560720 + by adding a cbook.unicode_safe function - JDH -2007-07-19 converted non-numpy relicts throughout the code - NN +2007-06-27 + Applied Micheal's tk savefig bugfix described at + \http://sourceforge.net/tracker/index.php?func=detail&aid=1716732&group_id=80706&atid=560720 + Thanks Michael! -2007-07-19 replaced the Python code in numerix/ by a minimal wrapper around - numpy that explicitly mentions all symbols that need to be - addressed for further numpification - NN +2007-06-27 + Patch for get_py2exe_datafiles() to work with new directory layout. (Thanks + Tocer and also Werner Bruhin.) -ADS -2007-07-18 make usetex respect changes to rcParams. texmanager used to - only configure itself when it was created, now it - reconfigures when rcParams are changed. Thank you Alexander - Schmolck for contributing a patch - DSD +2007-06-27 + Added a scroll event to the mpl event handling system and implemented it + for backends GTK* -- other backend users/developers/maintainers, please add + support for your backend. - JDH -2007-07-17 added validation to setting and changing rcParams - DSD +2007-06-25 + Changed default to clip=False in colors.Normalize; modified ColorbarBase + for easier colormap display - EF -2007-07-17 bugfix segfault in transforms module. Thanks Ben North for - the patch. - ADS +2007-06-13 + Added maskedarray option to rc, numerix - EF -2007-07-16 clean up some code in ticker.ScalarFormatter, use unicode to - render multiplication sign in offset ticklabel - DSD +2007-06-11 + Python 2.5 compatibility fix for mlab.py - EF -2007-07-16 fixed a formatting bug in ticker.ScalarFormatter's scientific - notation (10^0 was being rendered as 10 in some cases) - DSD +2007-06-10 + In matplotlibrc file, use 'dashed' | 'solid' instead of a pair of floats + for contour.negative_linestyle - EF -2007-07-13 Add MPL_isfinite64() and MPL_isinf64() for testing - doubles in (the now misnamed) MPL_isnan.h. - ADS +2007-06-08 + Allow plot and fill fmt string to be any mpl string colorspec - EF -2007-07-13 The matplotlib._isnan module removed (use numpy.isnan) - ADS +2007-06-08 + Added gnuplot file plotfile function to pylab -- see + examples/plotfile_demo.py - JDH -2007-07-13 Some minor cleanups in _transforms.cpp - ADS +2007-06-07 + Disable build of numarray and Numeric extensions for internal MPL use and + the numerix layer. - ADS -2007-07-13 Removed the rest of the numerix extension code detritus, - numpified axes.py, and cleaned up the imports in axes.py - - JDH +2007-06-07 + Added csv2rec to matplotlib.mlab to support automatically converting csv + files to record arrays using type introspection, and turned on native + datetime support using the new units support in matplotlib.dates. See + examples/loadrec.py ! JDH -2007-07-13 Added legend.loc as configurable option that could in - future default to 'best'. - NN +2007-06-07 + Simplified internal code of _auto_legend_data - NN -2007-07-12 Bugfixes in mlab.py to coerce inputs into numpy arrays. -ADS +2007-06-04 + Added labeldistance arg to Axes.pie to control the raidal distance of the + wedge labels - JDH -2007-07-11 Added linespacing kwarg to text.Text - EF - -2007-07-11 Added code to store font paths in SVG files. - MGD - -2007-07-10 Store subset of TTF font as a Type 3 font in PDF files. - MGD - -2007-07-09 Store subset of TTF font as a Type 3 font in PS files. - MGD - -2007-07-09 Applied Paul's pick restructure pick and add pickers, - sourceforge patch 1749829 - JDH - - -2007-07-09 Applied Allan's draw_lines agg optimization. JDH - - -2007-07-08 Applied Carl Worth's patch to fix cairo draw_arc - SC - -2007-07-07 fixed bug 1712099: xpdf distiller on windows - DSD - -2007-06-30 Applied patches to tkagg, gtk, and wx backends to reduce - memory leakage. Patches supplied by Mike Droettboom; - see tracker numbers 1745400, 1745406, 1745408. - Also made unit/memleak_gui.py more flexible with - command-line options. - EF - -2007-06-30 Split defaultParams into separate file rcdefaults (together with - validation code). Some heavy refactoring was necessary to do so, - but the overall behavior should be the same as before. - NN - -2007-06-27 Added MPLCONFIGDIR for the default location for mpl data - and configuration. useful for some apache installs where - HOME is not writable. Tried to clean up the logic in - _get_config_dir to support non-writable HOME where are - writable HOME/.matplotlib already exists - JDH - -2007-06-27 Fixed locale bug reported at - \http://sourceforge.net/tracker/index.php?func=detail&aid=1744154&group_id=80706&atid=560720 - by adding a cbook.unicode_safe function - JDH - -2007-06-27 Applied Micheal's tk savefig bugfix described at - \http://sourceforge.net/tracker/index.php?func=detail&aid=1716732&group_id=80706&atid=560720 - Thanks Michael! - - -2007-06-27 Patch for get_py2exe_datafiles() to work with new directory - layout. (Thanks Tocer and also Werner Bruhin.) -ADS - - -2007-06-27 Added a scroll event to the mpl event handling system and - implemented it for backends GTK* -- other backend - users/developers/maintainers, please add support for your - backend. - JDH - -2007-06-25 Changed default to clip=False in colors.Normalize; - modified ColorbarBase for easier colormap display - EF - -2007-06-13 Added maskedarray option to rc, numerix - EF - -2007-06-11 Python 2.5 compatibility fix for mlab.py - EF - -2007-06-10 In matplotlibrc file, use 'dashed' | 'solid' instead - of a pair of floats for contour.negative_linestyle - EF - -2007-06-08 Allow plot and fill fmt string to be any mpl string - colorspec - EF - -2007-06-08 Added gnuplot file plotfile function to pylab -- see - examples/plotfile_demo.py - JDH - -2007-06-07 Disable build of numarray and Numeric extensions for - internal MPL use and the numerix layer. - ADS - -2007-06-07 Added csv2rec to matplotlib.mlab to support automatically - converting csv files to record arrays using type - introspection, and turned on native datetime support using - the new units support in matplotlib.dates. See - examples/loadrec.py ! JDH - -2007-06-07 Simplified internal code of _auto_legend_data - NN - -2007-06-04 Added labeldistance arg to Axes.pie to control the raidal - distance of the wedge labels - JDH - -2007-06-03 Turned mathtext in SVG into single with multiple - objects (easier to edit in inkscape). - NN +2007-06-03 + Turned mathtext in SVG into single with multiple objects + (easier to edit in inkscape). - NN ---------------------------- -2007-06-02 Released 0.90.1 at revision 3352 - -2007-06-02 Display only meaningful labels when calling legend() - without args. - NN - -2007-06-02 Have errorbar follow the color cycle even if line is not plotted. - Suppress plotting of errorbar caps for capsize=0. - NN - -2007-06-02 Set markers to same alpha value as line. - NN - -2007-06-02 Fix mathtext position in svg backend. - NN - -2007-06-01 Deprecate Numeric and numarray for use as numerix. Props to - Travis -- job well done. - ADS - -2007-05-18 Added LaTeX unicode support. Enable with the - 'text.latex.unicode' rcParam. This requires the ucs and - inputenc LaTeX packages. - ADS - -2007-04-23 Fixed some problems with polar -- added general polygon - clipping to clip the lines and grids to the polar axes. - Added support for set_rmax to easily change the maximum - radial grid. Added support for polar legend - JDH - -2007-04-16 Added Figure.autofmt_xdate to handle adjusting the bottom - and rotating the tick labels for date plots when the ticks - often overlap - JDH - -2007-04-09 Beginnings of usetex support for pdf backend. -JKS - -2007-04-07 Fixed legend/LineCollection bug. Added label support - to collections. - EF - -2007-04-06 Removed deprecated support for a float value as a gray-scale; - now it must be a string, like '0.5'. Added alpha kwarg to - ColorConverter.to_rgba_list. - EF - -2007-04-06 Fixed rotation of ellipses in pdf backend - (sf bug #1690559) -JKS - -2007-04-04 More matshow tweaks; documentation updates; new method - set_bounds() for formatters and locators. - EF +2007-06-02 + Released 0.90.1 at revision 3352 -2007-04-02 Fixed problem with imshow and matshow of integer arrays; - fixed problems with changes to color autoscaling. - EF +2007-06-02 + Display only meaningful labels when calling legend() without args. - NN -2007-04-01 Made image color autoscaling work correctly with - a tracking colorbar; norm.autoscale now scales - unconditionally, while norm.autoscale_None changes - only None-valued vmin, vmax. - EF +2007-06-02 + Have errorbar follow the color cycle even if line is not plotted. Suppress + plotting of errorbar caps for capsize=0. - NN -2007-03-31 Added a qt-based subplot-adjustment dialog - DSD +2007-06-02 + Set markers to same alpha value as line. - NN -2007-03-30 Fixed a bug in backend_qt4, reported on mpl-dev - DSD +2007-06-02 + Fix mathtext position in svg backend. - NN -2007-03-26 Removed colorbar_classic from figure.py; fixed bug in - Figure.clf() in which _axobservers was not getting - cleared. Modernization and cleanups. - EF +2007-06-01 + Deprecate Numeric and numarray for use as numerix. Props to Travis -- job + well done. - ADS -2007-03-26 Refactored some of the units support -- units now live in - the respective x and y Axis instances. See also - API_CHANGES for some alterations to the conversion - interface. JDH +2007-05-18 + Added LaTeX unicode support. Enable with the 'text.latex.unicode' rcParam. + This requires the ucs and inputenc LaTeX packages. - ADS -2007-03-25 Fix masked array handling in quiver.py for numpy. (Numeric - and numarray support for masked arrays is broken in other - ways when using quiver. I didn't pursue that.) - ADS +2007-04-23 + Fixed some problems with polar -- added general polygon clipping to clip + the lines and grids to the polar axes. Added support for set_rmax to + easily change the maximum radial grid. Added support for polar legend - + JDH -2007-03-23 Made font_manager.py close opened files. - JKS +2007-04-16 + Added Figure.autofmt_xdate to handle adjusting the bottom and rotating the + tick labels for date plots when the ticks often overlap - JDH -2007-03-22 Made imshow default extent match matshow - EF +2007-04-09 + Beginnings of usetex support for pdf backend. -JKS -2007-03-22 Some more niceties for xcorr -- a maxlags option, normed - now works for xcorr as well as axorr, usevlines is - supported, and a zero correlation hline is added. See - examples/xcorr_demo.py. Thanks Sameer for the patch. - - JDH +2007-04-07 + Fixed legend/LineCollection bug. Added label support to collections. - EF -2007-03-21 Axes.vlines and Axes.hlines now create and returns a - LineCollection, not a list of lines. This is much faster. - The kwarg signature has changed, so consult the docs. - Modified Axes.errorbar which uses vlines and hlines. See - API_CHANGES; the return signature for these three functions - is now different +2007-04-06 + Removed deprecated support for a float value as a gray-scale; now it must + be a string, like '0.5'. Added alpha kwarg to ColorConverter.to_rgba_list. + - EF -2007-03-20 Refactored units support and added new examples - JDH +2007-04-06 + Fixed rotation of ellipses in pdf backend (sf bug #1690559) -JKS -2007-03-19 Added Mike's units patch - JDH +2007-04-04 + More matshow tweaks; documentation updates; new method set_bounds() for + formatters and locators. - EF -2007-03-18 Matshow as an Axes method; test version matshow1() in - pylab; added 'integer' Boolean kwarg to MaxNLocator - initializer to force ticks at integer locations. - EF +2007-04-02 + Fixed problem with imshow and matshow of integer arrays; fixed problems + with changes to color autoscaling. - EF -2007-03-17 Preliminary support for clipping to paths agg - JDH +2007-04-01 + Made image color autoscaling work correctly with a tracking colorbar; + norm.autoscale now scales unconditionally, while norm.autoscale_None + changes only None-valued vmin, vmax. - EF -2007-03-17 Text.set_text() accepts anything convertible with '%s' - EF +2007-03-31 + Added a qt-based subplot-adjustment dialog - DSD -2007-03-14 Add masked-array support to hist. - EF +2007-03-30 + Fixed a bug in backend_qt4, reported on mpl-dev - DSD -2007-03-03 Change barh to take a kwargs dict and pass it to bar. - Fixes sf bug #1669506. +2007-03-26 + Removed colorbar_classic from figure.py; fixed bug in Figure.clf() in which + _axobservers was not getting cleared. Modernization and cleanups. - EF -2007-03-02 Add rc parameter pdf.inheritcolor, which disables all - color-setting operations in the pdf backend. The idea is - that you include the resulting file in another program and - set the colors (both stroke and fill color) there, so you - can use the same pdf file for e.g., a paper and a - presentation and have them in the surrounding color. You - will probably not want to draw figure and axis frames in - that case, since they would be filled in the same color. - JKS +2007-03-26 + Refactored some of the units support -- units now live in the respective x + and y Axis instances. See also API_CHANGES for some alterations to the + conversion interface. JDH -2007-02-26 Prevent building _wxagg.so with broken Mac OS X wxPython. - ADS +2007-03-25 + Fix masked array handling in quiver.py for numpy. (Numeric and numarray + support for masked arrays is broken in other ways when using quiver. I + didn't pursue that.) - ADS -2007-02-23 Require setuptools for Python 2.3 - ADS +2007-03-23 + Made font_manager.py close opened files. - JKS -2007-02-22 WXAgg accelerator updates - KM - WXAgg's C++ accelerator has been fixed to use the correct wxBitmap - constructor. +2007-03-22 + Made imshow default extent match matshow - EF - The backend has been updated to use new wxPython functionality to - provide fast blit() animation without the C++ accelerator. This - requires wxPython 2.8 or later. Previous versions of wxPython can - use the C++ acclerator or the old pure Python routines. +2007-03-22 + Some more niceties for xcorr -- a maxlags option, normed now works for + xcorr as well as axorr, usevlines is supported, and a zero correlation + hline is added. See examples/xcorr_demo.py. Thanks Sameer for the patch. + - JDH - setup.py no longer builds the C++ accelerator when wxPython >= 2.8 - is present. +2007-03-21 + Axes.vlines and Axes.hlines now create and returns a LineCollection, not a + list of lines. This is much faster. The kwarg signature has changed, so + consult the docs. Modified Axes.errorbar which uses vlines and hlines. + See API_CHANGES; the return signature for these three functions is now + different - The blit() method is now faster regardless of which agg/wxPython - conversion routines are used. +2007-03-20 + Refactored units support and added new examples - JDH -2007-02-21 Applied the PDF backend patch by Nicolas Grilly. - This impacts several files and directories in matplotlib: +2007-03-19 + Added Mike's units patch - JDH - - Created the directory lib/matplotlib/mpl-data/fonts/pdfcorefonts, - holding AFM files for the 14 PDF core fonts. These fonts are - embedded in every PDF viewing application. +2007-03-18 + Matshow as an Axes method; test version matshow1() in pylab; added + 'integer' Boolean kwarg to MaxNLocator initializer to force ticks at + integer locations. - EF - - setup.py: Added the directory pdfcorefonts to package_data. +2007-03-17 + Preliminary support for clipping to paths agg - JDH - - lib/matplotlib/__init__.py: Added the default parameter - 'pdf.use14corefonts'. When True, the PDF backend uses - only the 14 PDF core fonts. +2007-03-17 + Text.set_text() accepts anything convertible with '%s' - EF - - lib/matplotlib/afm.py: Added some keywords found in - recent AFM files. Added a little workaround to handle - Euro symbol. +2007-03-14 + Add masked-array support to hist. - EF - - lib/matplotlib/fontmanager.py: Added support for the 14 - PDF core fonts. These fonts have a dedicated cache (file - pdfcorefont.cache), not the same as for other AFM files - (file .afmfont.cache). Also cleaned comments to conform - to CODING_GUIDE. +2007-03-03 + Change barh to take a kwargs dict and pass it to bar. Fixes sf bug + #1669506. - - lib/matplotlib/backends/backend_pdf.py: - Added support for 14 PDF core fonts. - Fixed some issues with incorrect character widths and - encodings (works only for the most common encoding, - WinAnsiEncoding, defined by the official PDF Reference). - Removed parameter 'dpi' because it causes alignment issues. +2007-03-02 + Add rc parameter pdf.inheritcolor, which disables all color-setting + operations in the pdf backend. The idea is that you include the resulting + file in another program and set the colors (both stroke and fill color) + there, so you can use the same pdf file for e.g., a paper and a + presentation and have them in the surrounding color. You will probably not + want to draw figure and axis frames in that case, since they would be + filled in the same color. - JKS - -JKS (patch by Nicolas Grilly) +2007-02-26 + Prevent building _wxagg.so with broken Mac OS X wxPython. - ADS -2007-02-17 Changed ft2font.get_charmap, and updated all the files where - get_charmap is mentioned - ES +2007-02-23 + Require setuptools for Python 2.3 - ADS -2007-02-13 Added barcode demo- JDH +2007-02-22 + WXAgg accelerator updates - KM -2007-02-13 Added binary colormap to cm - JDH + WXAgg's C++ accelerator has been fixed to use the correct wxBitmap + constructor. -2007-02-13 Added twiny to pylab - JDH + The backend has been updated to use new wxPython functionality to provide + fast blit() animation without the C++ accelerator. This requires wxPython + 2.8 or later. Previous versions of wxPython can use the C++ acclerator or + the old pure Python routines. -2007-02-12 Moved data files into lib/matplotlib so that setuptools' - develop mode works. Re-organized the mpl-data layout so - that this source structure is maintained in the - installation. (i.e., the 'fonts' and 'images' - sub-directories are maintained in site-packages.) Suggest - removing site-packages/matplotlib/mpl-data and - ~/.matplotlib/ttffont.cache before installing - ADS + setup.py no longer builds the C++ accelerator when wxPython >= 2.8 is + present. -2007-02-07 Committed Rob Hetland's patch for qt4: remove - references to text()/latin1(), plus some improvements - to the toolbar layout - DSD + The blit() method is now faster regardless of which agg/wxPython conversion + routines are used. ---------------------------- - -2007-02-06 Released 0.90.0 at revision 3003 - -2007-01-22 Extended the new picker API to text, patches and patch - collections. Added support for user customizable pick hit - testing and attribute tagging of the PickEvent - Details - and examples in examples/pick_event_demo.py - JDH - -2007-01-16 Begun work on a new pick API using the mpl event handling - frameowrk. Artists will define their own pick method with - a configurable epsilon tolerance and return pick attrs. - All artists that meet the tolerance threshold will fire a - PickEvent with artist dependent attrs; e.g., a Line2D can set - the indices attribute that shows the indices into the line - that are within epsilon of the pick point. See - examples/pick_event_demo.py. The implementation of pick - for the remaining Artists remains to be done, but the core - infrastructure at the level of event handling is in place - with a proof-of-concept implementation for Line2D - JDH - -2007-01-16 src/_image.cpp: update to use Py_ssize_t (for 64-bit systems). - Use return value of fread() to prevent warning messages - SC. - -2007-01-15 src/_image.cpp: combine buffer_argb32() and buffer_bgra32() into - a new method color_conv(format) - SC - -2007-01-14 backend_cairo.py: update draw_arc() so that - examples/arctest.py looks correct - SC - -2007-01-12 backend_cairo.py: enable clipping. Update draw_image() so that - examples/contour_demo.py looks correct - SC - -2007-01-12 backend_cairo.py: fix draw_image() so that examples/image_demo.py - now looks correct - SC - -2007-01-11 Added Axes.xcorr and Axes.acorr to plot the cross - correlation of x vs. y or the autocorrelation of x. pylab - wrappers also provided. See examples/xcorr_demo.py - JDH - -2007-01-10 Added "Subplot.label_outer" method. It will set the - visibility of the ticklabels so that yticklabels are only - visible in the first column and xticklabels are only - visible in the last row - JDH - -2007-01-02 Added additional kwarg documentation - JDH - -2006-12-28 Improved error message for nonpositive input to log - transform; added log kwarg to bar, barh, and hist, - and modified bar method to behave sensibly by default - when the ordinate has a log scale. (This only works - if the log scale is set before or by the call to bar, - hence the utility of the log kwarg.) - EF - -2006-12-27 backend_cairo.py: update draw_image() and _draw_mathtext() to work - with numpy - SC - -2006-12-20 Fixed xpdf dependency check, which was failing on windows. - Removed ps2eps dependency check. - DSD - -2006-12-19 Added Tim Leslie's spectral patch - JDH - -2006-12-17 Added rc param 'axes.formatter.limits' to control - the default threshold for switching to scientific - notation. Added convenience method - Axes.ticklabel_format() for turning scientific notation - on or off on either or both axes. - EF - -2006-12-16 Added ability to turn control scientific notation - in ScalarFormatter - EF - -2006-12-16 Enhanced boxplot to handle more flexible inputs - EF - -2006-12-13 Replaced calls to where() in colors.py with much faster - clip() and putmask() calls; removed inappropriate - uses of getmaskorNone (which should be needed only - very rarely); all in response to profiling by - David Cournapeau. Also fixed bugs in my 2-D - array support from 12-09. - EF - -2006-12-09 Replaced spy and spy2 with the new spy that combines - marker and image capabilities - EF +2007-02-21 + Applied the PDF backend patch by Nicolas Grilly. This impacts several + files and directories in matplotlib: -2006-12-09 Added support for plotting 2-D arrays with plot: - columns are plotted as in Matlab - EF + - Created the directory lib/matplotlib/mpl-data/fonts/pdfcorefonts, holding + AFM files for the 14 PDF core fonts. These fonts are embedded in every + PDF viewing application. -2006-12-09 Added linewidth kwarg to bar and barh; fixed arg - checking bugs - EF + - setup.py: Added the directory pdfcorefonts to package_data. -2006-12-07 Made pcolormesh argument handling match pcolor; - fixed kwarg handling problem noted by Pierre GM - EF + - lib/matplotlib/__init__.py: Added the default parameter + 'pdf.use14corefonts'. When True, the PDF backend uses only the 14 PDF + core fonts. -2006-12-06 Made pcolor support vector X and/or Y instead of - requiring 2-D arrays - EF + - lib/matplotlib/afm.py: Added some keywords found in recent AFM files. + Added a little workaround to handle Euro symbol. -2006-12-05 Made the default Artist._transform None (rather than - invoking identity_transform for each artist only to have it - overridden later). Use artist.get_transform() rather than - artist._transform, even in derived classes, so that the - default transform will be created lazily as needed - JDH + - lib/matplotlib/fontmanager.py: Added support for the 14 PDF core fonts. + These fonts have a dedicated cache (file pdfcorefont.cache), not the same + as for other AFM files (file .afmfont.cache). Also cleaned comments to + conform to CODING_GUIDE. -2006-12-03 Added LogNorm to colors.py as illustrated by - examples/pcolor_log.py, based on suggestion by - Jim McDonald. Colorbar modified to handle LogNorm. - Norms have additional "inverse" method. - EF + - lib/matplotlib/backends/backend_pdf.py: Added support for 14 PDF core + fonts. Fixed some issues with incorrect character widths and encodings + (works only for the most common encoding, WinAnsiEncoding, defined by the + official PDF Reference). Removed parameter 'dpi' because it causes + alignment issues. -2006-12-02 Changed class names in colors.py to match convention: - normalize -> Normalize, no_norm -> NoNorm. Old names - are still available. - Changed __init__.py rc defaults to match those in - matplotlibrc - EF + -JKS (patch by Nicolas Grilly) -2006-11-22 Fixed bug in set_*lim that I had introduced on 11-15 - EF +2007-02-17 + Changed ft2font.get_charmap, and updated all the files where get_charmap is + mentioned - ES -2006-11-22 Added examples/clippedline.py, which shows how to clip line - data based on view limits -- it also changes the marker - style when zoomed in - JDH +2007-02-13 + Added barcode demo- JDH -2006-11-21 Some spy bug-fixes and added precision arg per Robert C's - suggestion - JDH +2007-02-13 + Added binary colormap to cm - JDH -2006-11-19 Added semi-automatic docstring generation detailing all the - kwargs that functions take using the artist introspection - tools; e.g., 'help text now details the scatter kwargs - that control the Text properties - JDH +2007-02-13 + Added twiny to pylab - JDH -2006-11-17 Removed obsolete scatter_classic, leaving a stub to - raise NotImplementedError; same for pcolor_classic - EF +2007-02-12 + Moved data files into lib/matplotlib so that setuptools' develop mode + works. Re-organized the mpl-data layout so that this source structure is + maintained in the installation. (i.e., the 'fonts' and 'images' + sub-directories are maintained in site-packages.) Suggest removing + site-packages/matplotlib/mpl-data and ~/.matplotlib/ttffont.cache before + installing - ADS -2006-11-15 Removed obsolete pcolor_classic - EF +2007-02-07 + Committed Rob Hetland's patch for qt4: remove references to + text()/latin1(), plus some improvements to the toolbar layout - DSD -2006-11-15 Fixed 1588908 reported by Russel Owen; factored - nonsingular method out of ticker.py, put it into - transforms.py as a function, and used it in - set_xlim and set_ylim. - EF - -2006-11-14 Applied patch 1591716 by Ulf Larssen to fix a bug in - apply_aspect. Modified and applied patch - 1594894 by mdehoon to fix bugs and improve - formatting in lines.py. Applied patch 1573008 - by Greg Willden to make psd etc. plot full frequency - range for complex inputs. - EF - -2006-11-14 Improved the ability of the colorbar to track - changes in corresponding image, pcolor, or - contourf. - EF - -2006-11-11 Fixed bug that broke Numeric compatibility; - added support for alpha to colorbar. The - alpha information is taken from the mappable - object, not specified as a kwarg. - EF - -2006-11-05 Added broken_barh function for makring a sequence of - horizontal bars broken by gaps -- see examples/broken_barh.py - -2006-11-05 Removed lineprops and markerprops from the Annotation code - and replaced them with an arrow configurable with kwarg - arrowprops. See examples/annotation_demo.py - JDH - -2006-11-02 Fixed a pylab subplot bug that was causing axes to be - deleted with hspace or wspace equals zero in - subplots_adjust - JDH +--------------------------- -2006-10-31 Applied axes3d patch 1587359 - \http://sourceforge.net/tracker/index.php?func=detail&aid=1587359&group_id=80706&atid=560722 - JDH +2007-02-06 + Released 0.90.0 at revision 3003 + +2007-01-22 + Extended the new picker API to text, patches and patch collections. Added + support for user customizable pick hit testing and attribute tagging of the + PickEvent - Details and examples in examples/pick_event_demo.py - JDH + +2007-01-16 + Begun work on a new pick API using the mpl event handling frameowrk. + Artists will define their own pick method with a configurable epsilon + tolerance and return pick attrs. All artists that meet the tolerance + threshold will fire a PickEvent with artist dependent attrs; e.g., a Line2D + can set the indices attribute that shows the indices into the line that are + within epsilon of the pick point. See examples/pick_event_demo.py. The + implementation of pick for the remaining Artists remains to be done, but + the core infrastructure at the level of event handling is in place with a + proof-of-concept implementation for Line2D - JDH + +2007-01-16 + src/_image.cpp: update to use Py_ssize_t (for 64-bit systems). Use return + value of fread() to prevent warning messages - SC. + +2007-01-15 + src/_image.cpp: combine buffer_argb32() and buffer_bgra32() into a new + method color_conv(format) - SC + +2007-01-14 + backend_cairo.py: update draw_arc() so that examples/arctest.py looks + correct - SC + +2007-01-12 + backend_cairo.py: enable clipping. Update draw_image() so that + examples/contour_demo.py looks correct - SC + +2007-01-12 + backend_cairo.py: fix draw_image() so that examples/image_demo.py now looks + correct - SC + +2007-01-11 + Added Axes.xcorr and Axes.acorr to plot the cross correlation of x vs. y or + the autocorrelation of x. pylab wrappers also provided. See + examples/xcorr_demo.py - JDH + +2007-01-10 + Added "Subplot.label_outer" method. It will set the visibility of the + ticklabels so that yticklabels are only visible in the first column and + xticklabels are only visible in the last row - JDH + +2007-01-02 + Added additional kwarg documentation - JDH + +2006-12-28 + Improved error message for nonpositive input to log transform; added log + kwarg to bar, barh, and hist, and modified bar method to behave sensibly by + default when the ordinate has a log scale. (This only works if the log + scale is set before or by the call to bar, hence the utility of the log + kwarg.) - EF + +2006-12-27 + backend_cairo.py: update draw_image() and _draw_mathtext() to work with + numpy - SC + +2006-12-20 + Fixed xpdf dependency check, which was failing on windows. Removed ps2eps + dependency check. - DSD + +2006-12-19 + Added Tim Leslie's spectral patch - JDH + +2006-12-17 + Added rc param 'axes.formatter.limits' to control the default threshold for + switching to scientific notation. Added convenience method + Axes.ticklabel_format() for turning scientific notation on or off on either + or both axes. - EF + +2006-12-16 + Added ability to turn control scientific notation in ScalarFormatter - EF + +2006-12-16 + Enhanced boxplot to handle more flexible inputs - EF + +2006-12-13 + Replaced calls to where() in colors.py with much faster clip() and + putmask() calls; removed inappropriate uses of getmaskorNone (which should + be needed only very rarely); all in response to profiling by David + Cournapeau. Also fixed bugs in my 2-D array support from 12-09. - EF + +2006-12-09 + Replaced spy and spy2 with the new spy that combines marker and image + capabilities - EF + +2006-12-09 + Added support for plotting 2-D arrays with plot: columns are plotted as in + Matlab - EF + +2006-12-09 + Added linewidth kwarg to bar and barh; fixed arg checking bugs - EF + +2006-12-07 + Made pcolormesh argument handling match pcolor; fixed kwarg handling + problem noted by Pierre GM - EF + +2006-12-06 + Made pcolor support vector X and/or Y instead of requiring 2-D arrays - EF + +2006-12-05 + Made the default Artist._transform None (rather than invoking + identity_transform for each artist only to have it overridden later). Use + artist.get_transform() rather than artist._transform, even in derived + classes, so that the default transform will be created lazily as needed - + JDH + +2006-12-03 + Added LogNorm to colors.py as illustrated by examples/pcolor_log.py, based + on suggestion by Jim McDonald. Colorbar modified to handle LogNorm. Norms + have additional "inverse" method. - EF + +2006-12-02 + Changed class names in colors.py to match convention: normalize -> + Normalize, no_norm -> NoNorm. Old names are still available. Changed + __init__.py rc defaults to match those in matplotlibrc - EF + +2006-11-22 + Fixed bug in set_*lim that I had introduced on 11-15 - EF + +2006-11-22 + Added examples/clippedline.py, which shows how to clip line data based on + view limits -- it also changes the marker style when zoomed in - JDH + +2006-11-21 + Some spy bug-fixes and added precision arg per Robert C's suggestion - JDH + +2006-11-19 + Added semi-automatic docstring generation detailing all the kwargs that + functions take using the artist introspection tools; e.g., 'help text now + details the scatter kwargs that control the Text properties - JDH + +2006-11-17 + Removed obsolete scatter_classic, leaving a stub to raise + NotImplementedError; same for pcolor_classic - EF + +2006-11-15 + Removed obsolete pcolor_classic - EF + +2006-11-15 + Fixed 1588908 reported by Russel Owen; factored nonsingular method out of + ticker.py, put it into transforms.py as a function, and used it in set_xlim + and set_ylim. - EF + +2006-11-14 + Applied patch 1591716 by Ulf Larssen to fix a bug in apply_aspect. + Modified and applied patch 1594894 by mdehoon to fix bugs and improve + formatting in lines.py. Applied patch 1573008 by Greg Willden to make psd + etc. plot full frequency range for complex inputs. - EF + +2006-11-14 + Improved the ability of the colorbar to track changes in corresponding + image, pcolor, or contourf. - EF + +2006-11-11 + Fixed bug that broke Numeric compatibility; added support for alpha to + colorbar. The alpha information is taken from the mappable object, not + specified as a kwarg. - EF + +2006-11-05 + Added broken_barh function for makring a sequence of horizontal bars broken + by gaps -- see examples/broken_barh.py + +2006-11-05 + Removed lineprops and markerprops from the Annotation code and replaced + them with an arrow configurable with kwarg arrowprops. See + examples/annotation_demo.py - JDH + +2006-11-02 + Fixed a pylab subplot bug that was causing axes to be deleted with hspace + or wspace equals zero in subplots_adjust - JDH + +2006-10-31 + Applied axes3d patch 1587359 + \http://sourceforge.net/tracker/index.php?func=detail&aid=1587359&group_id=80706&atid=560722 + JDH ------------------------- -2006-10-26 Released 0.87.7 at revision 2835 +2006-10-26 + Released 0.87.7 at revision 2835 + +2006-10-25 + Made "tiny" kwarg in Locator.nonsingular much smaller - EF -2006-10-25 Made "tiny" kwarg in Locator.nonsingular much smaller - EF +2006-10-17 + Closed sf bug 1562496 update line props dash/solid/cap/join styles - JDH -2006-10-17 Closed sf bug 1562496 update line props dash/solid/cap/join - styles - JDH +2006-10-17 + Complete overhaul of the annotations API and example code - See + matplotlib.text.Annotation and examples/annotation_demo.py JDH -2006-10-17 Complete overhaul of the annotations API and example code - - See matplotlib.text.Annotation and - examples/annotation_demo.py JDH +2006-10-12 + Committed Manuel Metz's StarPolygon code and examples/scatter_star_poly.py + - JDH -2006-10-12 Committed Manuel Metz's StarPolygon code and - examples/scatter_star_poly.py - JDH +2006-10-11 + commented out all default values in matplotlibrc.template Default values + should generally be taken from defaultParam in __init__.py - the file + matplotlib should only contain those values that the user wants to + explicitly change from the default. (see thread "marker color handling" on + matplotlib-devel) +2006-10-10 + Changed default comment character for load to '#' - JDH -2006-10-11 commented out all default values in matplotlibrc.template - Default values should generally be taken from defaultParam in - __init__.py - the file matplotlib should only contain those values - that the user wants to explicitly change from the default. - (see thread "marker color handling" on matplotlib-devel) +2006-10-10 + deactivated rcfile-configurability of markerfacecolor and markeredgecolor. + Both are now hardcoded to the special value 'auto' to follow the line + color. Configurability at run-time (using function arguments) remains + functional. - NN -2006-10-10 Changed default comment character for load to '#' - JDH +2006-10-07 + introduced dummy argument magnification=1.0 to FigImage.make_image to + satisfy unit test figimage_demo.py The argument is not yet handled + correctly, which should only show up when using non-standard DPI settings + in PS backend, introduced by patch #1562394. - NN -2006-10-10 deactivated rcfile-configurability of markerfacecolor - and markeredgecolor. Both are now hardcoded to the special value - 'auto' to follow the line color. Configurability at run-time - (using function arguments) remains functional. - NN +2006-10-06 + add backend-agnostic example: simple3d.py - NN -2006-10-07 introduced dummy argument magnification=1.0 to - FigImage.make_image to satisfy unit test figimage_demo.py - The argument is not yet handled correctly, which should only - show up when using non-standard DPI settings in PS backend, - introduced by patch #1562394. - NN +2006-09-29 + fix line-breaking for SVG-inline images (purely cosmetic) - NN -2006-10-06 add backend-agnostic example: simple3d.py - NN +2006-09-29 + reworked set_linestyle and set_marker markeredgecolor and markerfacecolor + now default to a special value "auto" that keeps the color in sync with the + line color further, the intelligence of axes.plot is cleaned up, improved + and simplified. Complete compatibility cannot be guaranteed, but the new + behavior should be much more predictable (see patch #1104615 for details) - + NN -2006-09-29 fix line-breaking for SVG-inline images (purely cosmetic) - NN +2006-09-29 + changed implementation of clip-path in SVG to work around a limitation in + inkscape - NN -2006-09-29 reworked set_linestyle and set_marker - markeredgecolor and markerfacecolor now default to - a special value "auto" that keeps the color in sync with - the line color - further, the intelligence of axes.plot is cleaned up, - improved and simplified. Complete compatibility cannot be - guaranteed, but the new behavior should be much more predictable - (see patch #1104615 for details) - NN +2006-09-29 + added two options to matplotlibrc: -2006-09-29 changed implementation of clip-path in SVG to work around a - limitation in inkscape - NN + - svg.image_inline + - svg.image_noscale -2006-09-29 added two options to matplotlibrc: - svg.image_inline - svg.image_noscale - see patch #1533010 for details - NN + see patch #1533010 for details - NN -2006-09-29 axes.py: cleaned up kwargs checking - NN +2006-09-29 + axes.py: cleaned up kwargs checking - NN -2006-09-29 setup.py: cleaned up setup logic - NN +2006-09-29 + setup.py: cleaned up setup logic - NN -2006-09-29 setup.py: check for required pygtk versions, fixes bug #1460783 - SC +2006-09-29 + setup.py: check for required pygtk versions, fixes bug #1460783 - SC --------------------------------- -2006-09-27 Released 0.87.6 at revision 2783 +2006-09-27 + Released 0.87.6 at revision 2783 -2006-09-24 Added line pointers to the Annotation code, and a pylab - interface. See matplotlib.text.Annotation, - examples/annotation_demo.py and - examples/annotation_demo_pylab.py - JDH +2006-09-24 + Added line pointers to the Annotation code, and a pylab interface. See + matplotlib.text.Annotation, examples/annotation_demo.py and + examples/annotation_demo_pylab.py - JDH -2006-09-18 mathtext2.py: The SVG backend now supports the same things that - the AGG backend does. Fixed some bugs with rendering, and out of - bounds errors in the AGG backend - ES. Changed the return values - of math_parse_s_ft2font_svg to support lines (fractions etc.) +2006-09-18 + mathtext2.py: The SVG backend now supports the same things that the AGG + backend does. Fixed some bugs with rendering, and out of bounds errors in + the AGG backend - ES. Changed the return values of math_parse_s_ft2font_svg + to support lines (fractions etc.) -2006-09-17 Added an Annotation class to facilitate annotating objects - and an examples file examples/annotation_demo.py. I want - to add dash support as in TextWithDash, but haven't decided - yet whether inheriting from TextWithDash is the right base - class or if another approach is needed - JDH +2006-09-17 + Added an Annotation class to facilitate annotating objects and an examples + file examples/annotation_demo.py. I want to add dash support as in + TextWithDash, but haven't decided yet whether inheriting from TextWithDash + is the right base class or if another approach is needed - JDH ------------------------------ -2006-09-05 Released 0.87.5 at revision 2761 +2006-09-05 + Released 0.87.5 at revision 2761 -2006-09-04 Added nxutils for some numeric add-on extension code -- - specifically a better/more efficient inside polygon tester (see - unit/inside_poly_*.py) - JDH +2006-09-04 + Added nxutils for some numeric add-on extension code -- specifically a + better/more efficient inside polygon tester (see unit/inside_poly_*.py) - + JDH -2006-09-04 Made bitstream fonts the rc default - JDH +2006-09-04 + Made bitstream fonts the rc default - JDH -2006-08-31 Fixed alpha-handling bug in ColorConverter, affecting - collections in general and contour/contourf in - particular. - EF +2006-08-31 + Fixed alpha-handling bug in ColorConverter, affecting collections in + general and contour/contourf in particular. - EF -2006-08-30 ft2font.cpp: Added draw_rect_filled method (now used by mathtext2 - to draw the fraction bar) to FT2Font - ES +2006-08-30 + ft2font.cpp: Added draw_rect_filled method (now used by mathtext2 to draw + the fraction bar) to FT2Font - ES -2006-08-29 setupext.py: wrap calls to tk.getvar() with str(). On some - systems, getvar returns a Tcl_Obj instead of a string - DSD +2006-08-29 + setupext.py: wrap calls to tk.getvar() with str(). On some systems, getvar + returns a Tcl_Obj instead of a string - DSD -2006-08-28 mathtext2.py: Sub/superscripts can now be complex (i.e. - fractions etc.). The demo is also updated - ES +2006-08-28 + mathtext2.py: Sub/superscripts can now be complex (i.e. fractions etc.). + The demo is also updated - ES -2006-08-28 font_manager.py: Added /usr/local/share/fonts to list of - X11 font directories - DSD +2006-08-28 + font_manager.py: Added /usr/local/share/fonts to list of X11 font + directories - DSD -2006-08-28 mahtext2.py: Initial support for complex fractions. Also, - rendering is now completely separated from parsing. The - sub/superscripts now work better. - Updated the mathtext2_demo.py - ES +2006-08-28 + mathtext2.py: Initial support for complex fractions. Also, rendering is now + completely separated from parsing. The sub/superscripts now work better. + Updated the mathtext2_demo.py - ES -2006-08-27 qt backends: don't create a QApplication when backend is - imported, do it when the FigureCanvasQt is created. Simplifies - applications where mpl is embedded in qt. Updated - embedding_in_qt* examples - DSD +2006-08-27 + qt backends: don't create a QApplication when backend is imported, do it + when the FigureCanvasQt is created. Simplifies applications where mpl is + embedded in qt. Updated embedding_in_qt* examples - DSD -2006-08-27 mahtext2.py: Now the fonts are searched in the OS font dir and - in the mpl-data dir. Also env is not a dict anymore. - ES +2006-08-27 + mathtext2.py: Now the fonts are searched in the OS font dir and in the + mpl-data dir. Also env is not a dict anymore. - ES -2006-08-26 minor changes to __init__.py, mathtex2_demo.py. Added matplotlibrc - key "mathtext.mathtext2" (removed the key "mathtext2") - ES +2006-08-26 + minor changes to __init__.py, mathtex2_demo.py. Added matplotlibrc key + "mathtext.mathtext2" (removed the key "mathtext2") - ES -2006-08-21 mathtext2.py: Initial support for fractions - Updated the mathtext2_demo.py - _mathtext_data.py: removed "\" from the unicode dicts - mathtext.py: Minor modification (because of _mathtext_data.py)- ES +2006-08-21 + mathtext2.py: Initial support for fractions Updated the mathtext2_demo.py + _mathtext_data.py: removed "\" from the unicode dicts mathtext.py: Minor + modification (because of _mathtext_data.py)- ES -2006-08-20 Added mathtext2.py: Replacement for mathtext.py. Supports _ ^, - \rm, \cal etc., \sin, \cos etc., unicode, recursive nestings, - inline math mode. The only backend currently supported is Agg - __init__.py: added new rc params for mathtext2 - added mathtext2_demo.py example - ES +2006-08-20 + Added mathtext2.py: Replacement for mathtext.py. Supports _ ^, \rm, \cal + etc., \sin, \cos etc., unicode, recursive nestings, inline math mode. The + only backend currently supported is Agg __init__.py: added new rc params + for mathtext2 added mathtext2_demo.py example - ES -2006-08-19 Added embedding_in_qt4.py example - DSD +2006-08-19 + Added embedding_in_qt4.py example - DSD -2006-08-11 Added scale free Ellipse patch for Agg - CM +2006-08-11 + Added scale free Ellipse patch for Agg - CM -2006-08-10 Added converters to and from julian dates to matplotlib.dates - (num2julian and julian2num) - JDH +2006-08-10 + Added converters to and from julian dates to matplotlib.dates (num2julian + and julian2num) - JDH -2006-08-08 Fixed widget locking so multiple widgets could share the - event handling - JDH +2006-08-08 + Fixed widget locking so multiple widgets could share the event handling - + JDH -2006-08-07 Added scale free Ellipse patch to SVG and PS - CM +2006-08-07 + Added scale free Ellipse patch to SVG and PS - CM -2006-08-05 Re-organized imports in numerix for numpy 1.0b2 -- TEO +2006-08-05 + Re-organized imports in numerix for numpy 1.0b2 -- TEO -2006-08-04 Added draw_markers to PDF backend. - JKS +2006-08-04 + Added draw_markers to PDF backend. - JKS -2006-08-01 Fixed a bug in postscript's rendering of dashed lines - DSD +2006-08-01 + Fixed a bug in postscript's rendering of dashed lines - DSD -2006-08-01 figure.py: savefig() update docstring to add support for 'format' - argument. - backend_cairo.py: print_figure() add support 'format' argument. - SC +2006-08-01 + figure.py: savefig() update docstring to add support for 'format' argument. + backend_cairo.py: print_figure() add support 'format' argument. - SC -2006-07-31 Don't let postscript's xpdf distiller compress images - DSD +2006-07-31 + Don't let postscript's xpdf distiller compress images - DSD -2006-07-31 Added shallowcopy() methods to all Transformations; - removed copy_bbox_transform and copy_bbox_transform_shallow - from transforms.py; - added offset_copy() function to transforms.py to - facilitate positioning artists with offsets. - See examples/transoffset.py. - EF +2006-07-31 + Added shallowcopy() methods to all Transformations; removed + copy_bbox_transform and copy_bbox_transform_shallow from transforms.py; + added offset_copy() function to transforms.py to facilitate positioning + artists with offsets. See examples/transoffset.py. - EF -2006-07-31 Don't let postscript's xpdf distiller compress images - DSD +2006-07-31 + Don't let postscript's xpdf distiller compress images - DSD -2006-07-29 Fixed numerix polygon bug reported by Nick Fotopoulos. - Added inverse_numerix_xy() transform method. - Made autoscale_view() preserve axis direction - (e.g., increasing down).- EF +2006-07-29 + Fixed numerix polygon bug reported by Nick Fotopoulos. Added + inverse_numerix_xy() transform method. Made autoscale_view() preserve axis + direction (e.g., increasing down).- EF -2006-07-28 Added shallow bbox copy routine for transforms -- mainly - useful for copying transforms to apply offset to. - JDH +2006-07-28 + Added shallow bbox copy routine for transforms -- mainly useful for copying + transforms to apply offset to. - JDH -2006-07-28 Added resize method to FigureManager class - for Qt and Gtk backend - CM +2006-07-28 + Added resize method to FigureManager class for Qt and Gtk backend - CM -2006-07-28 Added subplots_adjust button to Qt backend - CM +2006-07-28 + Added subplots_adjust button to Qt backend - CM -2006-07-26 Use numerix more in collections. - Quiver now handles masked arrays. - EF +2006-07-26 + Use numerix more in collections. Quiver now handles masked arrays. - EF -2006-07-22 Fixed bug #1209354 - DSD +2006-07-22 + Fixed bug #1209354 - DSD -2006-07-22 make scatter() work with the kwarg "color". Closes bug - 1285750 - DSD +2006-07-22 + make scatter() work with the kwarg "color". Closes bug 1285750 - DSD -2006-07-20 backend_cairo.py: require pycairo 1.2.0. - print_figure() update to output SVG using cairo. +2006-07-20 + backend_cairo.py: require pycairo 1.2.0. print_figure() update to output + SVG using cairo. -2006-07-19 Added blitting for Qt4Agg - CM +2006-07-19 + Added blitting for Qt4Agg - CM -2006-07-19 Added lasso widget and example examples/lasso_demo.py - JDH +2006-07-19 + Added lasso widget and example examples/lasso_demo.py - JDH -2006-07-18 Added blitting for QtAgg backend - CM +2006-07-18 + Added blitting for QtAgg backend - CM -2006-07-17 Fixed bug #1523585: skip nans in semilog plots - DSD +2006-07-17 + Fixed bug #1523585: skip nans in semilog plots - DSD -2006-07-12 Add support to render the scientific notation label - over the right-side y-axis - DSD +2006-07-12 + Add support to render the scientific notation label over the right-side + y-axis - DSD ------------------------------ -2006-07-11 Released 0.87.4 at revision 2558 - -2006-07-07 Fixed a usetex bug with older versions of latex - DSD - -2006-07-07 Add compatibility for NumPy 1.0 - TEO - -2006-06-29 Added a Qt4Agg backend. Thank you James Amundson - DSD - -2006-06-26 Fixed a usetex bug. On Windows, usetex will process - postscript output in the current directory rather than - in a temp directory. This is due to the use of spaces - and tildes in windows paths, which cause problems with - latex. The subprocess module is no longer used. - DSD - -2006-06-22 Various changes to bar(), barh(), and hist(). - Added 'edgecolor' keyword arg to bar() and barh(). - The x and y args in barh() have been renamed to width - and bottom respectively, and their order has been swapped - to maintain a (position, value) order ala matlab. left, - height, width and bottom args can now all be scalars or - sequences. barh() now defaults to edge alignment instead - of center alignment. Added a keyword arg 'align' to bar(), - barh() and hist() that controls between edge or center bar - alignment. Fixed ignoring the rcParams['patch.facecolor'] - for bar color in bar() and barh(). Fixed ignoring the - rcParams['lines.color'] for error bar color in bar() - and barh(). Fixed a bug where patches would be cleared - when error bars were plotted if rcParams['axes.hold'] - was False. - MAS - -2006-06-22 Added support for numerix 2-D arrays as alternatives to - a sequence of (x,y) tuples for specifying paths in - collections, quiver, contour, pcolor, transforms. - Fixed contour bug involving setting limits for - colormapping. Added numpy-style all() to numerix. - EF - -2006-06-20 Added custom FigureClass hook to pylab interface - see - examples/custom_figure_class.py - -2006-06-16 Added colormaps from gist (gist_earth, gist_stern, - gist_rainbow, gist_gray, gist_yarg, gist_heat, gist_ncar) - JW - -2006-06-16 Added a pointer to parent in figure canvas so you can - access the container with fig.canvas.manager. Useful if - you want to set the window title, e.g., in gtk - fig.canvas.manager.window.set_title, though a GUI neutral - method would be preferable JDH - -2006-06-16 Fixed colorbar.py to handle indexed colors (i.e., - norm = no_norm()) by centering each colored region - on its index. - EF - -2006-06-15 Added scalex and scaley to Axes.autoscale_view to support - selective autoscaling just the x or y axis, and supported - these command in plot so you can say plot(something, - scaley=False) and just the x axis will be autoscaled. - Modified axvline and axhline to support this, so for - example axvline will no longer autoscale the y axis. JDH - -2006-06-13 Fix so numpy updates are backward compatible - TEO - -2006-06-12 Updated numerix to handle numpy restructuring of - oldnumeric - TEO - -2006-06-12 Updated numerix.fft to handle numpy restructuring - Added ImportError to numerix.linear_algebra for numpy -TEO - -2006-06-11 Added quiverkey command to pylab and Axes, using - QuiverKey class in quiver.py. Changed pylab and Axes - to use quiver2 if possible, but drop back to the - newly-renamed quiver_classic if necessary. Modified - examples/quiver_demo.py to illustrate the new quiver - and quiverkey. Changed LineCollection implementation - slightly to improve compatibility with PolyCollection. - EF - -2006-06-11 Fixed a usetex bug for windows, running latex on files - with spaces in their names or paths was failing - DSD - -2006-06-09 Made additions to numerix, changes to quiver to make it - work with all numeric flavors. - EF - -2006-06-09 Added quiver2 function to pylab and method to axes, - with implementation via a Quiver class in quiver.py. - quiver2 will replace quiver before the next release; - it is placed alongside it initially to facilitate - testing and transition. See also - examples/quiver2_demo.py. - EF - -2006-06-08 Minor bug fix to make ticker.py draw proper minus signs - with usetex - DSD +2006-07-11 + Released 0.87.4 at revision 2558 + +2006-07-07 + Fixed a usetex bug with older versions of latex - DSD + +2006-07-07 + Add compatibility for NumPy 1.0 - TEO + +2006-06-29 + Added a Qt4Agg backend. Thank you James Amundson - DSD + +2006-06-26 + Fixed a usetex bug. On Windows, usetex will process postscript output in + the current directory rather than in a temp directory. This is due to the + use of spaces and tildes in windows paths, which cause problems with latex. + The subprocess module is no longer used. - DSD + +2006-06-22 + Various changes to bar(), barh(), and hist(). Added 'edgecolor' keyword + arg to bar() and barh(). The x and y args in barh() have been renamed to + width and bottom respectively, and their order has been swapped to maintain + a (position, value) order ala matlab. left, height, width and bottom args + can now all be scalars or sequences. barh() now defaults to edge alignment + instead of center alignment. Added a keyword arg 'align' to bar(), barh() + and hist() that controls between edge or center bar alignment. Fixed + ignoring the rcParams['patch.facecolor'] for bar color in bar() and barh(). + Fixed ignoring the rcParams['lines.color'] for error bar color in bar() and + barh(). Fixed a bug where patches would be cleared when error bars were + plotted if rcParams['axes.hold'] was False. - MAS + +2006-06-22 + Added support for numerix 2-D arrays as alternatives to a sequence of (x,y) + tuples for specifying paths in collections, quiver, contour, pcolor, + transforms. Fixed contour bug involving setting limits for colormapping. + Added numpy-style all() to numerix. - EF + +2006-06-20 + Added custom FigureClass hook to pylab interface - see + examples/custom_figure_class.py + +2006-06-16 + Added colormaps from gist (gist_earth, gist_stern, gist_rainbow, gist_gray, + gist_yarg, gist_heat, gist_ncar) - JW + +2006-06-16 + Added a pointer to parent in figure canvas so you can access the container + with fig.canvas.manager. Useful if you want to set the window title, e.g., + in gtk fig.canvas.manager.window.set_title, though a GUI neutral method + would be preferable JDH + +2006-06-16 + Fixed colorbar.py to handle indexed colors (i.e., norm = no_norm()) by + centering each colored region on its index. - EF + +2006-06-15 + Added scalex and scaley to Axes.autoscale_view to support selective + autoscaling just the x or y axis, and supported these command in plot so + you can say plot(something, scaley=False) and just the x axis will be + autoscaled. Modified axvline and axhline to support this, so for example + axvline will no longer autoscale the y axis. JDH + +2006-06-13 + Fix so numpy updates are backward compatible - TEO + +2006-06-12 + Updated numerix to handle numpy restructuring of oldnumeric - TEO + +2006-06-12 + Updated numerix.fft to handle numpy restructuring Added ImportError to + numerix.linear_algebra for numpy -TEO + +2006-06-11 + Added quiverkey command to pylab and Axes, using QuiverKey class in + quiver.py. Changed pylab and Axes to use quiver2 if possible, but drop + back to the newly-renamed quiver_classic if necessary. Modified + examples/quiver_demo.py to illustrate the new quiver and quiverkey. + Changed LineCollection implementation slightly to improve compatibility + with PolyCollection. - EF + +2006-06-11 + Fixed a usetex bug for windows, running latex on files with spaces in their + names or paths was failing - DSD + +2006-06-09 + Made additions to numerix, changes to quiver to make it work with all + numeric flavors. - EF + +2006-06-09 + Added quiver2 function to pylab and method to axes, with implementation via + a Quiver class in quiver.py. quiver2 will replace quiver before the next + release; it is placed alongside it initially to facilitate testing and + transition. See also examples/quiver2_demo.py. - EF + +2006-06-08 + Minor bug fix to make ticker.py draw proper minus signs with usetex - DSD ----------------------- -2006-06-06 Released 0.87.3 at revision 2432 - -2006-05-30 More partial support for polygons with outline or fill, - but not both. Made LineCollection inherit from - ScalarMappable. - EF +2006-06-06 + Released 0.87.3 at revision 2432 -2006-05-29 Yet another revision of aspect-ratio handling. - EF +2006-05-30 + More partial support for polygons with outline or fill, but not both. Made + LineCollection inherit from ScalarMappable. - EF -2006-05-27 Committed a patch to prevent stroking zero-width lines in - the svg backend - DSD +2006-05-29 + Yet another revision of aspect-ratio handling. - EF -2006-05-24 Fixed colorbar positioning bug identified by Helge - Avlesen, and improved the algorithm; added a 'pad' - kwarg to control the spacing between colorbar and - parent axes. - EF +2006-05-27 + Committed a patch to prevent stroking zero-width lines in the svg backend - + DSD -2006-05-23 Changed color handling so that collection initializers - can take any mpl color arg or sequence of args; deprecated - float as grayscale, replaced by string representation of - float. - EF +2006-05-24 + Fixed colorbar positioning bug identified by Helge Avlesen, and improved + the algorithm; added a 'pad' kwarg to control the spacing between colorbar + and parent axes. - EF -2006-05-19 Fixed bug: plot failed if all points were masked - EF +2006-05-23 + Changed color handling so that collection initializers can take any mpl + color arg or sequence of args; deprecated float as grayscale, replaced by + string representation of float. - EF -2006-05-19 Added custom symbol option to scatter - JDH +2006-05-19 + Fixed bug: plot failed if all points were masked - EF -2006-05-18 New example, multi_image.py; colorbar fixed to show - offset text when the ScalarFormatter is used; FixedFormatter - augmented to accept and display offset text. - EF +2006-05-19 + Added custom symbol option to scatter - JDH -2006-05-14 New colorbar; old one is renamed to colorbar_classic. - New colorbar code is in colorbar.py, with wrappers in - figure.py and pylab.py. - Fixed aspect-handling bug reported by Michael Mossey. - Made backend_bases.draw_quad_mesh() run.- EF +2006-05-18 + New example, multi_image.py; colorbar fixed to show offset text when the + ScalarFormatter is used; FixedFormatter augmented to accept and display + offset text. - EF -2006-05-08 Changed handling of end ranges in contourf: replaced - "clip-ends" kwarg with "extend". See docstring for - details. -EF +2006-05-14 + New colorbar; old one is renamed to colorbar_classic. New colorbar code is + in colorbar.py, with wrappers in figure.py and pylab.py. Fixed + aspect-handling bug reported by Michael Mossey. Made + backend_bases.draw_quad_mesh() run.- EF -2006-05-08 Added axisbelow to rc - JDH +2006-05-08 + Changed handling of end ranges in contourf: replaced "clip-ends" kwarg with + "extend". See docstring for details. -EF -2006-05-08 If using PyGTK require version 2.2+ - SC +2006-05-08 + Added axisbelow to rc - JDH -2006-04-19 Added compression support to PDF backend, controlled by - new pdf.compression rc setting. - JKS +2006-05-08 + If using PyGTK require version 2.2+ - SC -2006-04-19 Added Jouni's PDF backend +2006-04-19 + Added compression support to PDF backend, controlled by new pdf.compression + rc setting. - JKS -2006-04-18 Fixed a bug that caused agg to not render long lines +2006-04-19 + Added Jouni's PDF backend -2006-04-16 Masked array support for pcolormesh; made pcolormesh support the - same combinations of X,Y,C dimensions as pcolor does; - improved (I hope) description of grid used in pcolor, - pcolormesh. - EF +2006-04-18 + Fixed a bug that caused agg to not render long lines -2006-04-14 Reorganized axes.py - EF +2006-04-16 + Masked array support for pcolormesh; made pcolormesh support the same + combinations of X,Y,C dimensions as pcolor does; improved (I hope) + description of grid used in pcolor, pcolormesh. - EF -2006-04-13 Fixed a bug Ryan found using usetex with sans-serif fonts and - exponential tick labels - DSD +2006-04-14 + Reorganized axes.py - EF -2006-04-11 Refactored backend_ps and backend_agg to prevent module-level - texmanager imports. Now these imports only occur if text.usetex - rc setting is true - DSD +2006-04-13 + Fixed a bug Ryan found using usetex with sans-serif fonts and exponential + tick labels - DSD -2006-04-10 Committed changes required for building mpl on win32 - platforms with visual studio. This allows wxpython - blitting for fast animations. - CM +2006-04-11 + Refactored backend_ps and backend_agg to prevent module-level texmanager + imports. Now these imports only occur if text.usetex rc setting is true - + DSD -2006-04-10 Fixed an off-by-one bug in Axes.change_geometry. +2006-04-10 + Committed changes required for building mpl on win32 platforms with visual + studio. This allows wxpython blitting for fast animations. - CM -2006-04-10 Fixed bug in pie charts where wedge wouldn't have label in - legend. Submitted by Simon Hildebrandt. - ADS +2006-04-10 + Fixed an off-by-one bug in Axes.change_geometry. -2006-05-06 Usetex makes temporary latex and dvi files in a temporary - directory, rather than in the user's current working - directory - DSD +2006-04-10 + Fixed bug in pie charts where wedge wouldn't have label in legend. + Submitted by Simon Hildebrandt. - ADS -2006-04-05 Applied Ken's wx deprecation warning patch closing sf patch - #1465371 - JDH +2006-05-06 + Usetex makes temporary latex and dvi files in a temporary directory, rather + than in the user's current working directory - DSD -2006-04-05 Added support for the new API in the postscript backend. - Allows values to be masked using nan's, and faster file - creation - DSD +2006-04-05 + Applied Ken's wx deprecation warning patch closing sf patch #1465371 - JDH -2006-04-05 Use python's subprocess module for usetex calls to - external programs. subprocess catches when they exit - abnormally so an error can be raised. - DSD +2006-04-05 + Added support for the new API in the postscript backend. Allows values to + be masked using nan's, and faster file creation - DSD -2006-04-03 Fixed the bug in which widgets would not respond to - events. This regressed the twinx functionality, so I - also updated subplots_adjust to update axes that share - an x or y with a subplot instance. - CM +2006-04-05 + Use python's subprocess module for usetex calls to external programs. + subprocess catches when they exit abnormally so an error can be raised. - + DSD -2006-04-02 Moved PBox class to transforms and deleted pbox.py; - made pylab axis command a thin wrapper for Axes.axis; - more tweaks to aspect-ratio handling; fixed Axes.specgram - to account for the new imshow default of unit aspect - ratio; made contour set the Axes.dataLim. - EF +2006-04-03 + Fixed the bug in which widgets would not respond to events. This regressed + the twinx functionality, so I also updated subplots_adjust to update axes + that share an x or y with a subplot instance. - CM -2006-03-31 Fixed the Qt "Underlying C/C++ object deleted" bug. - JRE +2006-04-02 + Moved PBox class to transforms and deleted pbox.py; made pylab axis command + a thin wrapper for Axes.axis; more tweaks to aspect-ratio handling; fixed + Axes.specgram to account for the new imshow default of unit aspect ratio; + made contour set the Axes.dataLim. - EF -2006-03-31 Applied Vasily Sulatskov's Qt Navigation Toolbar enhancement. - JRE +2006-03-31 + Fixed the Qt "Underlying C/C++ object deleted" bug. - JRE -2006-03-31 Ported Norbert's rewriting of Halldor's stineman_interp - algorithm to make it numerix compatible and added code to - matplotlib.mlab. See examples/interp_demo.py - JDH +2006-03-31 + Applied Vasily Sulatskov's Qt Navigation Toolbar enhancement. - JRE -2006-03-30 Fixed a bug in aspect ratio handling; blocked potential - crashes when panning with button 3; added axis('image') - support. - EF +2006-03-31 + Ported Norbert's rewriting of Halldor's stineman_interp algorithm to make + it numerix compatible and added code to matplotlib.mlab. See + examples/interp_demo.py - JDH -2006-03-28 More changes to aspect ratio handling; new PBox class - in new file pbox.py to facilitate resizing and repositioning - axes; made PolarAxes maintain unit aspect ratio. - EF +2006-03-30 + Fixed a bug in aspect ratio handling; blocked potential crashes when + panning with button 3; added axis('image') support. - EF -2006-03-23 Refactored TextWithDash class to inherit from, rather than - delegate to, the Text class. Improves object inspection - and closes bug # 1357969 - DSD +2006-03-28 + More changes to aspect ratio handling; new PBox class in new file pbox.py + to facilitate resizing and repositioning axes; made PolarAxes maintain unit + aspect ratio. - EF -2006-03-22 Improved aspect ratio handling, including pylab interface. - Interactive resizing, pan, zoom of images and plots - (including panels with a shared axis) should work. - Additions and possible refactoring are still likely. - EF +2006-03-23 + Refactored TextWithDash class to inherit from, rather than delegate to, the + Text class. Improves object inspection and closes bug # 1357969 - DSD -2006-03-21 Added another colorbrewer colormap (RdYlBu) - JSWHIT +2006-03-22 + Improved aspect ratio handling, including pylab interface. Interactive + resizing, pan, zoom of images and plots (including panels with a shared + axis) should work. Additions and possible refactoring are still likely. - + EF -2006-03-21 Fixed tickmarks for logscale plots over very large ranges. - Closes bug # 1232920 - DSD +2006-03-21 + Added another colorbrewer colormap (RdYlBu) - JSWHIT -2006-03-21 Added Rob Knight's arrow code; see examples/arrow_demo.py - JDH +2006-03-21 + Fixed tickmarks for logscale plots over very large ranges. Closes bug # + 1232920 - DSD -2006-03-20 Added support for masking values with nan's, using ADS's - isnan module and the new API. Works for \*Agg backends - DSD +2006-03-21 + Added Rob Knight's arrow code; see examples/arrow_demo.py - JDH -2006-03-20 Added contour.negative_linestyle rcParam - ADS +2006-03-20 + Added support for masking values with nan's, using ADS's isnan module and + the new API. Works for \*Agg backends - DSD -2006-03-20 Added _isnan extension module to test for nan with Numeric - - ADS +2006-03-20 + Added contour.negative_linestyle rcParam - ADS -2006-03-17 Added Paul and Alex's support for faceting with quadmesh - in sf patch 1411223 - JDH +2006-03-20 + Added _isnan extension module to test for nan with Numeric - ADS -2006-03-17 Added Charle Twardy's pie patch to support colors=None. - Closes sf patch 1387861 - JDH +2006-03-17 + Added Paul and Alex's support for faceting with quadmesh in sf patch + 1411223 - JDH -2006-03-17 Applied sophana's patch to support overlapping axes with - toolbar navigation by toggling activation with the 'a' key. - Closes sf patch 1432252 - JDH +2006-03-17 + Added Charle Twardy's pie patch to support colors=None. Closes sf patch + 1387861 - JDH -2006-03-17 Applied Aarre's linestyle patch for backend EMF; closes sf - patch 1449279 - JDH +2006-03-17 + Applied sophana's patch to support overlapping axes with toolbar navigation + by toggling activation with the 'a' key. Closes sf patch 1432252 - JDH -2006-03-17 Applied Jordan Dawe's patch to support kwarg properties - for grid lines in the grid command. Closes sf patch - 1451661 - JDH +2006-03-17 + Applied Aarre's linestyle patch for backend EMF; closes sf patch 1449279 - + JDH -2006-03-17 Center postscript output on page when using usetex - DSD +2006-03-17 + Applied Jordan Dawe's patch to support kwarg properties for grid lines in + the grid command. Closes sf patch 1451661 - JDH -2006-03-17 subprocess module built if Python <2.4 even if subprocess - can be imported from an egg - ADS +2006-03-17 + Center postscript output on page when using usetex - DSD -2006-03-17 Added _subprocess.c from Python upstream and hopefully - enabled building (without breaking) on Windows, although - not tested. - ADS +2006-03-17 + subprocess module built if Python <2.4 even if subprocess can be imported + from an egg - ADS -2006-03-17 Updated subprocess.py to latest Python upstream and - reverted name back to subprocess.py - ADS +2006-03-17 + Added _subprocess.c from Python upstream and hopefully enabled building + (without breaking) on Windows, although not tested. - ADS -2006-03-16 Added John Porter's 3D handling code +2006-03-17 + Updated subprocess.py to latest Python upstream and reverted name back to + subprocess.py - ADS +2006-03-16 + Added John Porter's 3D handling code ------------------------ -2006-03-16 Released 0.87.2 at revision 2150 +2006-03-16 + Released 0.87.2 at revision 2150 -2006-03-15 Fixed bug in MaxNLocator revealed by daigos@infinito.it. - The main change is that Locator.nonsingular now adjusts - vmin and vmax if they are nearly the same, not just if - they are equal. A new kwarg, "tiny", sets the threshold. - - EF +2006-03-15 + Fixed bug in MaxNLocator revealed by daigos@infinito.it. The main change + is that Locator.nonsingular now adjusts vmin and vmax if they are nearly + the same, not just if they are equal. A new kwarg, "tiny", sets the + threshold. - EF -2006-03-14 Added import of compatibility library for newer numpy - linear_algebra - TEO +2006-03-14 + Added import of compatibility library for newer numpy linear_algebra - TEO -2006-03-12 Extended "load" function to support individual columns and - moved "load" and "save" into matplotlib.mlab so they can be - used outside of pylab -- see examples/load_converter.py - - JDH +2006-03-12 + Extended "load" function to support individual columns and moved "load" and + "save" into matplotlib.mlab so they can be used outside of pylab -- see + examples/load_converter.py - JDH -2006-03-12 Added AutoDateFormatter and AutoDateLocator submitted - by James Evans. Try the load_converter.py example for a - demo. - ADS +2006-03-12 + Added AutoDateFormatter and AutoDateLocator submitted by James Evans. Try + the load_converter.py example for a demo. - ADS -2006-03-11 Added subprocess module from python-2.4 - DSD +2006-03-11 + Added subprocess module from python-2.4 - DSD -2006-03-11 Fixed landscape orientation support with the usetex - option. The backend_ps print_figure method was - getting complicated, I added a _print_figure_tex - method to maintain some degree of sanity - DSD +2006-03-11 + Fixed landscape orientation support with the usetex option. The backend_ps + print_figure method was getting complicated, I added a _print_figure_tex + method to maintain some degree of sanity - DSD -2006-03-11 Added "papertype" savefig kwarg for setting - postscript papersizes. papertype and ps.papersize - rc setting can also be set to "auto" to autoscale - pagesizes - DSD +2006-03-11 + Added "papertype" savefig kwarg for setting postscript papersizes. + papertype and ps.papersize rc setting can also be set to "auto" to + autoscale pagesizes - DSD -2006-03-09 Apply P-J's patch to make pstoeps work on windows - patch report # 1445612 - DSD +2006-03-09 + Apply P-J's patch to make pstoeps work on windows patch report # 1445612 - + DSD -2006-03-09 Make backend rc parameter case-insensitive - DSD +2006-03-09 + Make backend rc parameter case-insensitive - DSD -2006-03-07 Fixed bug in backend_ps related to C0-C6 papersizes, - which were causing problems with postscript viewers. - Supported page sizes include letter, legal, ledger, - A0-A10, and B0-B10 - DSD +2006-03-07 + Fixed bug in backend_ps related to C0-C6 papersizes, which were causing + problems with postscript viewers. Supported page sizes include letter, + legal, ledger, A0-A10, and B0-B10 - DSD ------------------------------------ -2006-03-07 Released 0.87.1 +2006-03-07 + Released 0.87.1 -2006-03-04 backend_cairo.py: - fix get_rgb() bug reported by Keith Briggs. - Require pycairo 1.0.2. - Support saving png to file-like objects. - SC +2006-03-04 + backend_cairo.py: fix get_rgb() bug reported by Keith Briggs. Require + pycairo 1.0.2. Support saving png to file-like objects. - SC -2006-03-03 Fixed pcolor handling of vmin, vmax - EF +2006-03-03 + Fixed pcolor handling of vmin, vmax - EF -2006-03-02 improve page sizing with usetex with the latex - geometry package. Closes bug # 1441629 - DSD +2006-03-02 + improve page sizing with usetex with the latex geometry package. Closes bug + # 1441629 - DSD -2006-03-02 Fixed dpi problem with usetex png output. Accepted a - modified version of patch # 1441809 - DSD +2006-03-02 + Fixed dpi problem with usetex png output. Accepted a modified version of + patch # 1441809 - DSD -2006-03-01 Fixed axis('scaled') to deal with case xmax < xmin - JSWHIT +2006-03-01 + Fixed axis('scaled') to deal with case xmax < xmin - JSWHIT -2006-03-01 Added reversed colormaps (with '_r' appended to name) - JSWHIT +2006-03-01 + Added reversed colormaps (with '_r' appended to name) - JSWHIT -2006-02-27 Improved eps bounding boxes with usetex - DSD +2006-02-27 + Improved eps bounding boxes with usetex - DSD -2006-02-27 Test svn commit, again! +2006-02-27 + Test svn commit, again! -2006-02-27 Fixed two dependency checking bugs related to usetex - on Windows - DSD +2006-02-27 + Fixed two dependency checking bugs related to usetex on Windows - DSD -2006-02-27 Made the rc deprecation warnings a little more human - readable. +2006-02-27 + Made the rc deprecation warnings a little more human readable. -2006-02-26 Update the previous gtk.main_quit() bug fix to use gtk.main_level() - - SC +2006-02-26 + Update the previous gtk.main_quit() bug fix to use gtk.main_level() - SC -2006-02-24 Implemented alpha support in contour and contourf - EF +2006-02-24 + Implemented alpha support in contour and contourf - EF -2006-02-22 Fixed gtk main quit bug when quit was called before - mainloop. - JDH +2006-02-22 + Fixed gtk main quit bug when quit was called before mainloop. - JDH -2006-02-22 Small change to colors.py to workaround apparent - bug in numpy masked array module - JSWHIT +2006-02-22 + Small change to colors.py to workaround apparent bug in numpy masked array + module - JSWHIT -2006-02-22 Fixed bug in ScalarMappable.to_rgba() reported by - Ray Jones, and fixed incorrect fix found by Jeff - Whitaker - EF +2006-02-22 + Fixed bug in ScalarMappable.to_rgba() reported by Ray Jones, and fixed + incorrect fix found by Jeff Whitaker - EF -------------------------------- -2006-02-22 Released 0.87 +2006-02-22 + Released 0.87 -2006-02-21 Fixed portrait/landscape orientation in postscript backend - DSD +2006-02-21 + Fixed portrait/landscape orientation in postscript backend - DSD -2006-02-21 Fix bug introduced in yesterday's bug fix - SC +2006-02-21 + Fix bug introduced in yesterday's bug fix - SC -2006-02-20 backend_gtk.py FigureCanvasGTK.draw(): fix bug reported by - David Tremouilles - SC +2006-02-20 + backend_gtk.py FigureCanvasGTK.draw(): fix bug reported by David + Tremouilles - SC -2006-02-20 Remove the "pygtk.require('2.4')" error from - examples/embedding_in_gtk2.py - SC +2006-02-20 + Remove the "pygtk.require('2.4')" error from examples/embedding_in_gtk2.py + - SC -2006-02-18 backend_gtk.py FigureCanvasGTK.draw(): simplify to use (rather than - duplicate) the expose_event() drawing code - SC +2006-02-18 + backend_gtk.py FigureCanvasGTK.draw(): simplify to use (rather than + duplicate) the expose_event() drawing code - SC -2006-02-12 Added stagger or waterfall plot capability to LineCollection; - illustrated in examples/collections.py. - EF +2006-02-12 + Added stagger or waterfall plot capability to LineCollection; illustrated + in examples/collections.py. - EF -2006-02-11 Massive cleanup of the usetex code in the postscript backend. Possibly - fixed the clipping issue users were reporting with older versions of - ghostscript - DSD +2006-02-11 + Massive cleanup of the usetex code in the postscript backend. Possibly + fixed the clipping issue users were reporting with older versions of + ghostscript - DSD -2006-02-11 Added autolim kwarg to axes.add_collection. Changed - collection get_verts() methods accordingly. - EF +2006-02-11 + Added autolim kwarg to axes.add_collection. Changed collection get_verts() + methods accordingly. - EF -2006-02-09 added a temporary rc parameter text.dvipnghack, to allow Mac users to get nice - results with the usetex option. - DSD +2006-02-09 + added a temporary rc parameter text.dvipnghack, to allow Mac users to get + nice results with the usetex option. - DSD -2006-02-09 Fixed a bug related to setting font sizes with the usetex option. - DSD +2006-02-09 + Fixed a bug related to setting font sizes with the usetex option. - DSD -2006-02-09 Fixed a bug related to usetex's latex code. - DSD +2006-02-09 + Fixed a bug related to usetex's latex code. - DSD -2006-02-09 Modified behavior of font.size rc setting. You should define font.size in pts, - which will set the "medium" or default fontsize. Special text sizes like axis - labels or tick labels can be given relative font sizes like small, large, - x-large, etc. and will scale accordingly. - DSD +2006-02-09 + Modified behavior of font.size rc setting. You should define font.size in + pts, which will set the "medium" or default fontsize. Special text sizes + like axis labels or tick labels can be given relative font sizes like + small, large, x-large, etc. and will scale accordingly. - DSD -2006-02-08 Added py2exe specific datapath check again. Also added new - py2exe helper function get_py2exe_datafiles for use in py2exe - setup.py scripts. - CM +2006-02-08 + Added py2exe specific datapath check again. Also added new py2exe helper + function get_py2exe_datafiles for use in py2exe setup.py scripts. - CM -2006-02-02 Added box function to pylab +2006-02-02 + Added box function to pylab -2006-02-02 Fixed a problem in setupext.py, tk library formatted in unicode - caused build problems - DSD +2006-02-02 + Fixed a problem in setupext.py, tk library formatted in unicode caused + build problems - DSD -2006-02-01 Dropped TeX engine support in usetex to focus on LaTeX. - DSD +2006-02-01 + Dropped TeX engine support in usetex to focus on LaTeX. - DSD -2006-01-29 Improved usetex option to respect the serif, sans-serif, monospace, - and cursive rc settings. Removed the font.latex.package rc setting, - it is no longer required - DSD +2006-01-29 + Improved usetex option to respect the serif, sans-serif, monospace, and + cursive rc settings. Removed the font.latex.package rc setting, it is no + longer required - DSD -2006-01-29 Fixed tex's caching to include font.family rc information - DSD +2006-01-29 + Fixed tex's caching to include font.family rc information - DSD -2006-01-29 Fixed subpixel rendering bug in \*Agg that was causing - uneven gridlines - JDH +2006-01-29 + Fixed subpixel rendering bug in \*Agg that was causing uneven gridlines - + JDH -2006-01-28 Added fontcmd to backend_ps's RendererPS.draw_tex, to support other - font families in eps output - DSD +2006-01-28 + Added fontcmd to backend_ps's RendererPS.draw_tex, to support other font + families in eps output - DSD -2006-01-28 Added MaxNLocator to ticker.py, and changed contour.py to - use it by default. - EF +2006-01-28 + Added MaxNLocator to ticker.py, and changed contour.py to use it by + default. - EF -2006-01-28 Added fontcmd to backend_ps's RendererPS.draw_tex, to support other - font families in eps output - DSD +2006-01-28 + Added fontcmd to backend_ps's RendererPS.draw_tex, to support other font + families in eps output - DSD -2006-01-27 Buffered reading of matplotlibrc parameters in order to allow - 'verbose' settings to be processed first (allows verbose.report - during rc validation process) - DSD +2006-01-27 + Buffered reading of matplotlibrc parameters in order to allow 'verbose' + settings to be processed first (allows verbose.report during rc validation + process) - DSD -2006-01-27 Removed setuptools support from setup.py and created a - separate setupegg.py file to replace it. - CM +2006-01-27 + Removed setuptools support from setup.py and created a separate setupegg.py + file to replace it. - CM -2006-01-26 Replaced the ugly datapath logic with a cleaner approach from - http://wiki.python.org/moin/DistutilsInstallDataScattered. - Overrides the install_data command. - CM +2006-01-26 + Replaced the ugly datapath logic with a cleaner approach from + http://wiki.python.org/moin/DistutilsInstallDataScattered. Overrides the + install_data command. - CM -2006-01-24 Don't use character typecodes in cntr.c --- changed to use - defined typenumbers instead. - TEO +2006-01-24 + Don't use character typecodes in cntr.c --- changed to use defined + typenumbers instead. - TEO -2006-01-24 Fixed some bugs in usetex's and ps.usedistiller's dependency +2006-01-24 + Fixed some bugs in usetex's and ps.usedistiller's dependency -2006-01-24 Added masked array support to scatter - EF +2006-01-24 + Added masked array support to scatter - EF -2006-01-24 Fixed some bugs in usetex's and ps.usedistiller's dependency - checking - DSD +2006-01-24 + Fixed some bugs in usetex's and ps.usedistiller's dependency checking - DSD ------------------------------- -2006-01-24 Released 0.86.2 +2006-01-24 + Released 0.86.2 -2006-01-20 Added a converters dict to pylab load to convert selected - columns to float -- especially useful for files with date - strings, uses a datestr2num converter - JDH +2006-01-20 + Added a converters dict to pylab load to convert selected columns to float + -- especially useful for files with date strings, uses a datestr2num + converter - JDH -2006-01-20 Added datestr2num to matplotlib dates to convert a string - or sequence of strings to a matplotlib datenum +2006-01-20 + Added datestr2num to matplotlib dates to convert a string or sequence of + strings to a matplotlib datenum -2006-01-18 Added quadrilateral pcolormesh patch 1409190 by Alex Mont - and Paul Kienzle -- this is \*Agg only for now. See - examples/quadmesh_demo.py - JDH +2006-01-18 + Added quadrilateral pcolormesh patch 1409190 by Alex Mont and Paul Kienzle + -- this is \*Agg only for now. See examples/quadmesh_demo.py - JDH -2006-01-18 Added Jouni's boxplot patch - JDH +2006-01-18 + Added Jouni's boxplot patch - JDH -2006-01-18 Added comma delimiter for pylab save - JDH +2006-01-18 + Added comma delimiter for pylab save - JDH -2006-01-12 Added Ryan's legend patch - JDH +2006-01-12 + Added Ryan's legend patch - JDH - -2006-1-12 Fixed numpy / numeric to use .dtype.char to keep in SYNC with numpy SVN +2006-01-12 + Fixed numpy / numeric to use .dtype.char to keep in SYNC with numpy SVN --------------------------- -2006-1-11 Released 0.86.1 +2006-01-11 + Released 0.86.1 -2006-1-11 Fixed setup.py for win32 build and added rc template to the MANIFEST.in +2006-01-11 + Fixed setup.py for win32 build and added rc template to the MANIFEST.in -2006-1-10 Added xpdf distiller option. matplotlibrc ps.usedistiller can now be - none, false, ghostscript, or xpdf. Validation checks for - dependencies. This needs testing, but the xpdf option should produce - the highest-quality output and small file sizes - DSD +2006-01-10 + Added xpdf distiller option. matplotlibrc ps.usedistiller can now be none, + false, ghostscript, or xpdf. Validation checks for dependencies. This needs + testing, but the xpdf option should produce the highest-quality output and + small file sizes - DSD -2006-01-10 For the usetex option, backend_ps now does all the LaTeX work in the - os's temp directory - DSD +2006-01-10 + For the usetex option, backend_ps now does all the LaTeX work in the os's + temp directory - DSD -2006-1-10 Added checks for usetex dependencies. - DSD +2006-01-10 + Added checks for usetex dependencies. - DSD --------------------------------- -2006-1-9 Released 0.86 +2006-01-09 + Released 0.86 -2006-1-4 Changed to support numpy (new name for scipy_core) - TEO +2006-01-04 + Changed to support numpy (new name for scipy_core) - TEO -2006-1-4 Added Mark's scaled axes patch for shared axis +2006-01-04 + Added Mark's scaled axes patch for shared axis -2005-12-28 Added Chris Barker's build_wxagg patch - JDH +2005-12-28 + Added Chris Barker's build_wxagg patch - JDH -2005-12-27 Altered numerix/scipy to support new scipy package - structure - TEO +2005-12-27 + Altered numerix/scipy to support new scipy package structure - TEO -2005-12-20 Fixed Jame's Boyles date tick reversal problem - JDH +2005-12-20 + Fixed Jame's Boyles date tick reversal problem - JDH -2005-12-20 Added Jouni's rc patch to support lists of keys to set on - - JDH +2005-12-20 + Added Jouni's rc patch to support lists of keys to set on - JDH -2005-12-12 Updated pyparsing and mathtext for some speed enhancements - (Thanks Paul McGuire) and minor fixes to scipy numerix and - setuptools +2005-12-12 + Updated pyparsing and mathtext for some speed enhancements (Thanks Paul + McGuire) and minor fixes to scipy numerix and setuptools -2005-12-12 Matplotlib data is now installed as package_data in - the matplotlib module. This gets rid of checking the - many possibilities in matplotlib._get_data_path() - CM +2005-12-12 + Matplotlib data is now installed as package_data in the matplotlib module. + This gets rid of checking the many possibilities in + matplotlib._get_data_path() - CM -2005-12-11 Support for setuptools/pkg_resources to build and use - matplotlib as an egg. Still allows matplotlib to exist - using a traditional distutils install. - ADS +2005-12-11 + Support for setuptools/pkg_resources to build and use matplotlib as an egg. + Still allows matplotlib to exist using a traditional distutils install. - + ADS -2005-12-03 Modified setup to build matplotlibrc based on compile time - findings. It will set numerix in the order of scipy, - numarray, Numeric depending on which are founds, and - backend as in preference order GTKAgg, WXAgg, TkAgg, GTK, - Agg, PS +2005-12-03 + Modified setup to build matplotlibrc based on compile time findings. It + will set numerix in the order of scipy, numarray, Numeric depending on + which are founds, and backend as in preference order GTKAgg, WXAgg, TkAgg, + GTK, Agg, PS -2005-12-03 Modified scipy patch to support Numeric, scipy and numarray - Some work remains to be done because some of the scipy - imports are broken if only the core is installed. e.g., - apparently we need from scipy.basic.fftpack import * rather - than from scipy.fftpack import * +2005-12-03 + Modified scipy patch to support Numeric, scipy and numarray Some work + remains to be done because some of the scipy imports are broken if only the + core is installed. e.g., apparently we need from scipy.basic.fftpack + import * rather than from scipy.fftpack import * -2005-12-03 Applied some fixes to Nicholas Young's nonuniform image - patch +2005-12-03 + Applied some fixes to Nicholas Young's nonuniform image patch -2005-12-01 Applied Alex Gontmakher hatch patch - PS only for now +2005-12-01 + Applied Alex Gontmakher hatch patch - PS only for now -2005-11-30 Added Rob McMullen's EMF patch +2005-11-30 + Added Rob McMullen's EMF patch -2005-11-30 Added Daishi's patch for scipy +2005-11-30 + Added Daishi's patch for scipy -2005-11-30 Fixed out of bounds draw markers segfault in agg +2005-11-30 + Fixed out of bounds draw markers segfault in agg -2005-11-28 Got TkAgg blitting working 100% (cross fingers) correctly. - CM +2005-11-28 + Got TkAgg blitting working 100% (cross fingers) correctly. - CM -2005-11-27 Multiple changes in cm.py, colors.py, figure.py, image.py, - contour.py, contour_demo.py; new _cm.py, examples/image_masked.py. - 1) Separated the color table data from cm.py out into - a new file, _cm.py, to make it easier to find the actual - code in cm.py and to add new colormaps. Also added - some line breaks to the color data dictionaries. Everything - from _cm.py is imported by cm.py, so the split should be - transparent. - 2) Enabled automatic generation of a colormap from - a list of colors in contour; see modified - examples/contour_demo.py. - 3) Support for imshow of a masked array, with the - ability to specify colors (or no color at all) for - masked regions, and for regions that are above or - below the normally mapped region. See - examples/image_masked.py. - 4) In support of the above, added two new classes, - ListedColormap, and no_norm, to colors.py, and modified - the Colormap class to include common functionality. Added - a clip kwarg to the normalize class. Reworked color - handling in contour.py, especially in the ContourLabeller - mixin. - - EF +2005-11-27 + Multiple changes in cm.py, colors.py, figure.py, image.py, contour.py, + contour_demo.py; new _cm.py, examples/image_masked.py. -2005-11-25 Changed text.py to ensure color is hashable. EF + 1. Separated the color table data from cm.py out into a new file, _cm.py, + to make it easier to find the actual code in cm.py and to add new + colormaps. Also added some line breaks to the color data dictionaries. + Everything from _cm.py is imported by cm.py, so the split should be + transparent. + 2. Enabled automatic generation of a colormap from a list of colors in + contour; see modified examples/contour_demo.py. + 3. Support for imshow of a masked array, with the ability to specify colors + (or no color at all) for masked regions, and for regions that are above + or below the normally mapped region. See examples/image_masked.py. + 4. In support of the above, added two new classes, ListedColormap, and + no_norm, to colors.py, and modified the Colormap class to include common + functionality. Added a clip kwarg to the normalize class. Reworked + color handling in contour.py, especially in the ContourLabeller mixin. --------------------------------- + - EF -2005-11-16 Released 0.85 +2005-11-25 + Changed text.py to ensure color is hashable. EF -2005-11-16 Changed the default default linewidth in rc to 1.0 +-------------------------------- -2005-11-16 Replaced agg_to_gtk_drawable with pure pygtk pixbuf code in - backend_gtkagg. When the equivalent is doe for blit, the - agg extension code will no longer be needed +2005-11-16 + Released 0.85 -2005-11-16 Added a maxdict item to cbook to prevent caches from - growing w/o bounds +2005-11-16 + Changed the default default linewidth in rc to 1.0 -2005-11-15 Fixed a colorup/colordown reversal bug in finance.py -- - Thanks Gilles +2005-11-16 + Replaced agg_to_gtk_drawable with pure pygtk pixbuf code in backend_gtkagg. + When the equivalent is doe for blit, the agg extension code will no longer + be needed -2005-11-15 Applied Jouni K Steppanen's boxplot patch SF patch#1349997 - - JDH +2005-11-16 + Added a maxdict item to cbook to prevent caches from growing w/o bounds +2005-11-15 + Fixed a colorup/colordown reversal bug in finance.py -- Thanks Gilles -2005-11-09 added axisbelow attr for Axes to determine whether ticks and such - are above or below the actors +2005-11-15 + Applied Jouni K Steppanen's boxplot patch SF patch#1349997 - JDH -2005-11-08 Added Nicolas' irregularly spaced image patch +2005-11-09 + added axisbelow attr for Axes to determine whether ticks and such are above + or below the actors +2005-11-08 + Added Nicolas' irregularly spaced image patch -2005-11-08 Deprecated HorizontalSpanSelector and replaced with - SpanSelection that takes a third arg, direction. The - new SpanSelector supports horizontal and vertical span - selection, and the appropriate min/max is returned. - CM +2005-11-08 + Deprecated HorizontalSpanSelector and replaced with SpanSelection that + takes a third arg, direction. The new SpanSelector supports horizontal and + vertical span selection, and the appropriate min/max is returned. - CM -2005-11-08 Added lineprops dialog for gtk +2005-11-08 + Added lineprops dialog for gtk -2005-11-03 Added FIFOBuffer class to mlab to support real time feeds - and examples/fifo_buffer.py +2005-11-03 + Added FIFOBuffer class to mlab to support real time feeds and + examples/fifo_buffer.py -2005-11-01 Contributed Nickolas Young's patch for afm mathtext to - support mathtext based upon the standard postscript Symbol - font when ps.usetex = True. +2005-11-01 + Contributed Nickolas Young's patch for afm mathtext to support mathtext + based upon the standard postscript Symbol font when ps.usetex = True. -2005-10-26 Added support for scatter legends - thanks John Gill +2005-10-26 + Added support for scatter legends - thanks John Gill -2005-10-20 Fixed image clipping bug that made some tex labels - disappear. JDH +2005-10-20 + Fixed image clipping bug that made some tex labels disappear. JDH -2005-10-14 Removed sqrt from dvipng 1.6 alpha channel mask. +2005-10-14 + Removed sqrt from dvipng 1.6 alpha channel mask. -2005-10-14 Added width kwarg to hist function +2005-10-14 + Added width kwarg to hist function -2005-10-10 Replaced all instances of os.rename with shutil.move +2005-10-10 + Replaced all instances of os.rename with shutil.move -2005-10-05 Added Michael Brady's ydate patch +2005-10-05 + Added Michael Brady's ydate patch -2005-10-04 Added rkern's texmanager patch +2005-10-04 + Added rkern's texmanager patch -2005-09-25 contour.py modified to use a single ContourSet class - that handles filled contours, line contours, and labels; - added keyword arg (clip_ends) to contourf. - Colorbar modified to work with new ContourSet object; - if the ContourSet has lines rather than polygons, the - colorbar will follow suit. Fixed a bug introduced in - 0.84, in which contourf(...,colors=...) was broken - EF +2005-09-25 + contour.py modified to use a single ContourSet class that handles filled + contours, line contours, and labels; added keyword arg (clip_ends) to + contourf. Colorbar modified to work with new ContourSet object; if the + ContourSet has lines rather than polygons, the colorbar will follow suit. + Fixed a bug introduced in 0.84, in which contourf(...,colors=...) was + broken - EF ------------------------------- -2005-09-19 Released 0.84 - -2005-09-14 Added a new 'resize_event' which triggers a callback with a - backend_bases.ResizeEvent object - JDH - -2005-09-14 font_manager.py: removed chkfontpath from x11FontDirectory() - SC - -2005-09-14 Factored out auto date locator/formatter factory code into - matplotlib.date.date_ticker_factory; applies John Bryne's - quiver patch. - -2005-09-13 Added Mark's axes positions history patch #1286915 +2005-09-19 + Released 0.84 -2005-09-09 Added support for auto canvas resizing with - fig.set_figsize_inches(9,5,forward=True) # inches - OR - fig.resize(400,300) # pixels +2005-09-14 + Added a new 'resize_event' which triggers a callback with a + backend_bases.ResizeEvent object - JDH -2005-09-07 figure.py: update Figure.draw() to use the updated - renderer.draw_image() so that examples/figimage_demo.py works again. - examples/stock_demo.py: remove data_clipping (which no longer - exists) - SC +2005-09-14 + font_manager.py: removed chkfontpath from x11FontDirectory() - SC -2005-09-06 Added Eric's tick.direction patch: in or out in rc +2005-09-14 + Factored out auto date locator/formatter factory code into + matplotlib.date.date_ticker_factory; applies John Bryne's quiver patch. -2005-09-06 Added Martin's rectangle selector widget +2005-09-13 + Added Mark's axes positions history patch #1286915 -2005-09-04 Fixed a logic err in text.py that was preventing rgxsuper - from matching - JDH +2005-09-09 + Added support for auto canvas resizing with:: -2005-08-29 Committed Ken's wx blit patch #1275002 + fig.set_figsize_inches(9,5,forward=True) # inches -2005-08-26 colorbar modifications - now uses contourf instead of imshow - so that colors used by contourf are displayed correctly. - Added two new keyword args (cspacing and clabels) that are - only relevant for ContourMappable images - JSWHIT + OR:: -2005-08-24 Fixed a PS image bug reported by Darren - JDH + fig.resize(400,300) # pixels -2005-08-23 colors.py: change hex2color() to accept unicode strings as well as - normal strings. Use isinstance() instead of types.IntType etc - SC +2005-09-07 + figure.py: update Figure.draw() to use the updated renderer.draw_image() so + that examples/figimage_demo.py works again. examples/stock_demo.py: remove + data_clipping (which no longer exists) - SC -2005-08-16 removed data_clipping line and rc property - JDH +2005-09-06 + Added Eric's tick.direction patch: in or out in rc -2005-08-22 backend_svg.py: Remove redundant "x=0.0 y=0.0" from svg element. - Increase svg version from 1.0 to 1.1. Add viewBox attribute to svg - element to allow SVG documents to scale-to-fit into an arbitrary - viewport - SC +2005-09-06 + Added Martin's rectangle selector widget -2005-08-16 Added Eric's dot marker patch - JDH +2005-09-04 + Fixed a logic err in text.py that was preventing rgxsuper from matching - + JDH -2005-08-08 Added blitting/animation for TkAgg - CM +2005-08-29 + Committed Ken's wx blit patch #1275002 -2005-08-05 Fixed duplicate tickline bug - JDH +2005-08-26 + colorbar modifications - now uses contourf instead of imshow so that colors + used by contourf are displayed correctly. Added two new keyword args + (cspacing and clabels) that are only relevant for ContourMappable images - + JSWHIT -2005-08-05 Fixed a GTK animation bug that cropped up when doing - animations in gtk//gtkagg canvases that had widgets packed - above them +2005-08-24 + Fixed a PS image bug reported by Darren - JDH -2005-08-05 Added Clovis Goldemberg patch to the tk save dialog +2005-08-23 + colors.py: change hex2color() to accept unicode strings as well as normal + strings. Use isinstance() instead of types.IntType etc - SC -2005-08-04 Removed origin kwarg from backend.draw_image. origin is - handled entirely by the frontend now. +2005-08-16 + removed data_clipping line and rc property - JDH -2005-07-03 Fixed a bug related to TeX commands in backend_ps +2005-08-22 + backend_svg.py: Remove redundant "x=0.0 y=0.0" from svg element. Increase + svg version from 1.0 to 1.1. Add viewBox attribute to svg element to allow + SVG documents to scale-to-fit into an arbitrary viewport - SC -2005-08-03 Fixed SVG images to respect upper and lower origins. - -2005-08-03 Added flipud method to image and removed it from to_str. - -2005-07-29 Modified figure.figaspect to take an array or number; - modified backend_svg to write utf-8 - JDH - -2005-07-30 backend_svg.py: embed png image files in svg rather than linking - to a separate png file, fixes bug #1245306 (thanks to Norbert Nemec - for the patch) - SC - ---------------------------- +2005-08-16 + Added Eric's dot marker patch - JDH -2005-07-29 Released 0.83.2 +2005-08-08 + Added blitting/animation for TkAgg - CM -2005-07-27 Applied SF patch 1242648: minor rounding error in - IndexDateFormatter in dates.py +2005-08-05 + Fixed duplicate tickline bug - JDH -2005-07-27 Applied sf patch 1244732: Scale axis such that circle - looks like circle - JDH +2005-08-05 + Fixed a GTK animation bug that cropped up when doing animations in + gtk//gtkagg canvases that had widgets packed above them -2005-07-29 Improved message reporting in texmanager and backend_ps - DSD +2005-08-05 + Added Clovis Goldemberg patch to the tk save dialog -2005-07-28 backend_gtk.py: update FigureCanvasGTK.draw() (needed due to the - recent expose_event() change) so that examples/anim.py works in the - usual way - SC +2005-08-04 + Removed origin kwarg from backend.draw_image. origin is handled entirely + by the frontend now. -2005-07-26 Added new widgets Cursor and HorizontalSpanSelector to - matplotlib.widgets. See examples/widgets/cursor.py and - examples/widgets/span_selector.py - JDH +2005-07-03 + Fixed a bug related to TeX commands in backend_ps -2005-07-26 added draw event to mpl event hierarchy -- triggered on - figure.draw +2005-08-03 + Fixed SVG images to respect upper and lower origins. -2005-07-26 backend_gtk.py: allow 'f' key to toggle window fullscreen mode +2005-08-03 + Added flipud method to image and removed it from to_str. -2005-07-26 backend_svg.py: write "<.../>" elements all on one line and remove - surplus spaces - SC +2005-07-29 + Modified figure.figaspect to take an array or number; modified backend_svg + to write utf-8 - JDH -2005-07-25 backend_svg.py: simplify code by deleting GraphicsContextSVG and - RendererSVG.new_gc(), and moving the gc.get_capstyle() code into - RendererSVG._get_gc_props_svg() - SC +2005-07-30 + backend_svg.py: embed png image files in svg rather than linking to a + separate png file, fixes bug #1245306 (thanks to Norbert Nemec for the + patch) - SC -2005-07-24 backend_gtk.py: call FigureCanvasBase.motion_notify_event() on - all motion-notify-events, not just ones where a modifier key or - button has been pressed (fixes bug report from Niklas Volbers) - SC - -2005-07-24 backend_gtk.py: modify print_figure() use own pixmap, fixing - problems where print_figure() overwrites the display pixmap. - return False from all button/key etc events - to allow the event - to propagate further - SC - -2005-07-23 backend_gtk.py: change expose_event from using set_back_pixmap(); - clear() to draw_drawable() - SC - -2005-07-23 backend_gtk.py: removed pygtk.require() - matplotlib/__init__.py: delete 'FROZEN' and 'McPLError' which are - no longer used - SC - -2005-07-22 backend_gdk.py: removed pygtk.require() - SC - -2005-07-21 backend_svg.py: Remove unused imports. Remove methods doc strings - which just duplicate the docs from backend_bases.py. Rename - draw_mathtext to _draw_mathtext. - SC - -2005-07-17 examples/embedding_in_gtk3.py: new example demonstrating placing - a FigureCanvas in a gtk.ScrolledWindow - SC - -2005-07-14 Fixed a Windows related bug (#1238412) in texmanager - DSD - -2005-07-11 Fixed color kwarg bug, setting color=1 or 0 caused an - exception - DSD - -2005-07-07 Added Eric's MA set_xdata Line2D fix - JDH - -2005-07-06 Made HOME/.matplotlib the new config dir where the - matplotlibrc file, the ttf.cache, and the tex.cache live. - The new default filenames in .matplotlib have no leading - dot and are not hidden. e.g., the new names are matplotlibrc - tex.cache ttffont.cache. This is how ipython does it so it - must be right. If old files are found, a warning is issued - and they are moved to the new location. Also fixed - texmanager to put all files, including temp files in - ~/.matplotlib/tex.cache, which allows you to usetex in - non-writable dirs. - -2005-07-05 Fixed bug #1231611 in subplots adjust layout. The problem - was that the text caching mechanism was not using the - transformation affine in the key. - JDH - -2005-07-05 Fixed default backend import problem when using API (SF bug - # 1209354 - see API_CHANGES for more info - JDH - -2005-07-04 backend_gtk.py: require PyGTK version 2.0.0 or higher - SC - -2005-06-30 setupext.py: added numarray_inc_dirs for building against - numarray when not installed in standard location - ADS - -2005-06-27 backend_svg.py: write figure width, height as int, not float. - Update to fix some of the pychecker warnings - SC - -2005-06-23 Updated examples/agg_test.py to demonstrate curved paths - and fills - JDH +--------------------------- -2005-06-21 Moved some texmanager and backend_agg tex caching to class - level rather than instance level - JDH +2005-07-29 + Released 0.83.2 -2005-06-20 setupext.py: fix problem where _nc_backend_gdk is installed to the - wrong directory - SC +2005-07-27 + Applied SF patch 1242648: minor rounding error in IndexDateFormatter in + dates.py -2005-06-19 Added 10.4 support for CocoaAgg. - CM +2005-07-27 + Applied sf patch 1244732: Scale axis such that circle looks like circle - + JDH -2005-06-18 Move Figure.get_width_height() to FigureCanvasBase and return - int instead of float. - SC +2005-07-29 + Improved message reporting in texmanager and backend_ps - DSD -2005-06-18 Applied Ted Drain's QtAgg patch: 1) Changed the toolbar to - be a horizontal bar of push buttons instead of a QToolbar - and updated the layout algorithms in the main window - accordingly. This eliminates the ability to drag and drop - the toolbar and detach it from the window. 2) Updated the - resize algorithm in the main window to show the correct - size for the plot widget as requested. This works almost - correctly right now. It looks to me like the final size of - the widget is off by the border of the main window but I - haven't figured out a way to get that information yet. We - could just add a small margin to the new size but that - seems a little hacky. 3) Changed the x/y location label to - be in the toolbar like the Tk backend instead of as a - status line at the bottom of the widget. 4) Changed the - toolbar pixmaps to use the ppm files instead of the png - files. I noticed that the Tk backend buttons looked much - nicer and it uses the ppm files so I switched them. +2005-07-28 + backend_gtk.py: update FigureCanvasGTK.draw() (needed due to the recent + expose_event() change) so that examples/anim.py works in the usual way - SC -2005-06-17 Modified the gtk backend to not queue mouse motion events. - This allows for live updates when dragging a slider. - CM +2005-07-26 + Added new widgets Cursor and HorizontalSpanSelector to matplotlib.widgets. + See examples/widgets/cursor.py and examples/widgets/span_selector.py - JDH -2005-06-17 Added starter CocoaAgg backend. Only works on OS 10.3 for - now and requires PyObjC. (10.4 is high priority) - CM +2005-07-26 + added draw event to mpl event hierarchy -- triggered on figure.draw -2005-06-17 Upgraded pyparsing and applied Paul McGuire's suggestions - for speeding things up. This more than doubles the speed - of mathtext in my simple tests. JDH +2005-07-26 + backend_gtk.py: allow 'f' key to toggle window fullscreen mode -2005-06-16 Applied David Cooke's subplot make_key patch +2005-07-26 + backend_svg.py: write "<.../>" elements all on one line and remove surplus + spaces - SC + +2005-07-25 + backend_svg.py: simplify code by deleting GraphicsContextSVG and + RendererSVG.new_gc(), and moving the gc.get_capstyle() code into + RendererSVG._get_gc_props_svg() - SC + +2005-07-24 + backend_gtk.py: call FigureCanvasBase.motion_notify_event() on all + motion-notify-events, not just ones where a modifier key or button has been + pressed (fixes bug report from Niklas Volbers) - SC + +2005-07-24 + backend_gtk.py: modify print_figure() use own pixmap, fixing problems where + print_figure() overwrites the display pixmap. return False from all + button/key etc events - to allow the event to propagate further - SC + +2005-07-23 + backend_gtk.py: change expose_event from using set_back_pixmap(); clear() + to draw_drawable() - SC + +2005-07-23 + backend_gtk.py: removed pygtk.require() matplotlib/__init__.py: delete + 'FROZEN' and 'McPLError' which are no longer used - SC + +2005-07-22 + backend_gdk.py: removed pygtk.require() - SC + +2005-07-21 + backend_svg.py: Remove unused imports. Remove methods doc strings which + just duplicate the docs from backend_bases.py. Rename draw_mathtext to + _draw_mathtext. - SC + +2005-07-17 + examples/embedding_in_gtk3.py: new example demonstrating placing a + FigureCanvas in a gtk.ScrolledWindow - SC + +2005-07-14 + Fixed a Windows related bug (#1238412) in texmanager - DSD + +2005-07-11 + Fixed color kwarg bug, setting color=1 or 0 caused an exception - DSD + +2005-07-07 + Added Eric's MA set_xdata Line2D fix - JDH + +2005-07-06 + Made HOME/.matplotlib the new config dir where the matplotlibrc file, the + ttf.cache, and the tex.cache live. The new default filenames in + .matplotlib have no leading dot and are not hidden. e.g., the new names + are matplotlibrc tex.cache ttffont.cache. This is how ipython does it so + it must be right. If old files are found, a warning is issued and they are + moved to the new location. Also fixed texmanager to put all files, + including temp files in ~/.matplotlib/tex.cache, which allows you to usetex + in non-writable dirs. + +2005-07-05 + Fixed bug #1231611 in subplots adjust layout. The problem was that the + text caching mechanism was not using the transformation affine in the key. + - JDH + +2005-07-05 + Fixed default backend import problem when using API (SF bug # 1209354 - + see API_CHANGES for more info - JDH + +2005-07-04 + backend_gtk.py: require PyGTK version 2.0.0 or higher - SC + +2005-06-30 + setupext.py: added numarray_inc_dirs for building against numarray when not + installed in standard location - ADS + +2005-06-27 + backend_svg.py: write figure width, height as int, not float. Update to + fix some of the pychecker warnings - SC + +2005-06-23 + Updated examples/agg_test.py to demonstrate curved paths and fills - JDH + +2005-06-21 + Moved some texmanager and backend_agg tex caching to class level rather + than instance level - JDH + +2005-06-20 + setupext.py: fix problem where _nc_backend_gdk is installed to the wrong + directory - SC + +2005-06-19 + Added 10.4 support for CocoaAgg. - CM + +2005-06-18 + Move Figure.get_width_height() to FigureCanvasBase and return int instead + of float. - SC + +2005-06-18 + Applied Ted Drain's QtAgg patch: 1) Changed the toolbar to be a horizontal + bar of push buttons instead of a QToolbar and updated the layout algorithms + in the main window accordingly. This eliminates the ability to drag and + drop the toolbar and detach it from the window. 2) Updated the resize + algorithm in the main window to show the correct size for the plot widget + as requested. This works almost correctly right now. It looks to me like + the final size of the widget is off by the border of the main window but I + haven't figured out a way to get that information yet. We could just add a + small margin to the new size but that seems a little hacky. 3) Changed the + x/y location label to be in the toolbar like the Tk backend instead of as a + status line at the bottom of the widget. 4) Changed the toolbar pixmaps to + use the ppm files instead of the png files. I noticed that the Tk backend + buttons looked much nicer and it uses the ppm files so I switched them. + +2005-06-17 + Modified the gtk backend to not queue mouse motion events. This allows for + live updates when dragging a slider. - CM + +2005-06-17 + Added starter CocoaAgg backend. Only works on OS 10.3 for now and requires + PyObjC. (10.4 is high priority) - CM + +2005-06-17 + Upgraded pyparsing and applied Paul McGuire's suggestions for speeding + things up. This more than doubles the speed of mathtext in my simple + tests. JDH + +2005-06-16 + Applied David Cooke's subplot make_key patch ---------------------------------- -2005-06-15 0.82 released +0.82 (2005-06-15) +----------------- -2005-06-15 Added subplot config tool to GTK* backends -- note you must - now import the NavigationToolbar2 from your backend of - choice rather than from backend_gtk because it needs to - know about the backend specific canvas -- see - examples/embedding_in_gtk2.py. Ditto for wx backend -- see - examples/embedding_in_wxagg.py +2005-06-15 + Added subplot config tool to GTK* backends -- note you must now import the + NavigationToolbar2 from your backend of choice rather than from backend_gtk + because it needs to know about the backend specific canvas -- see + examples/embedding_in_gtk2.py. Ditto for wx backend -- see + examples/embedding_in_wxagg.py -2005-06-15 backend_cairo.py: updated to use pycairo 0.5.0 - SC +2005-06-15 + backend_cairo.py: updated to use pycairo 0.5.0 - SC -2005-06-14 Wrote some GUI neutral widgets (Button, Slider, - RadioButtons, CheckButtons) in matplotlib.widgets. See - examples/widgets/\*.py - JDH +2005-06-14 + Wrote some GUI neutral widgets (Button, Slider, RadioButtons, CheckButtons) + in matplotlib.widgets. See examples/widgets/\*.py - JDH -2005-06-14 Exposed subplot parameters as rc vars and as the fig - SubplotParams instance subplotpars. See - figure.SubplotParams, figure.Figure.subplots_adjust and the - pylab method subplots_adjust and - examples/subplots_adjust.py . Also added a GUI neutral - widget for adjusting subplots, see - examples/subplot_toolbar.py - JDH +2005-06-14 + Exposed subplot parameters as rc vars and as the fig SubplotParams instance + subplotpars. See figure.SubplotParams, figure.Figure.subplots_adjust and + the pylab method subplots_adjust and examples/subplots_adjust.py . Also + added a GUI neutral widget for adjusting subplots, see + examples/subplot_toolbar.py - JDH -2005-06-13 Exposed cap and join style for lines with new rc params and - line properties +2005-06-13 + Exposed cap and join style for lines with new rc params and line properties:: lines.dash_joinstyle : miter # miter|round|bevel lines.dash_capstyle : butt # butt|round|projecting @@ -4037,1405 +4751,1654 @@ the `API changes <../../api/api_changes.html>`_. lines.solid_capstyle : projecting # butt|round|projecting -2005-06-13 Added kwargs to Axes init +2005-06-13 + Added kwargs to Axes init -2005-06-13 Applied Baptiste's tick patch - JDH +2005-06-13 + Applied Baptiste's tick patch - JDH -2005-06-13 Fixed rc alias 'l' bug reported by Fernando by removing - aliases for mainlevel rc options. - JDH +2005-06-13 + Fixed rc alias 'l' bug reported by Fernando by removing aliases for + mainlevel rc options. - JDH -2005-06-10 Fixed bug #1217637 in ticker.py - DSD +2005-06-10 + Fixed bug #1217637 in ticker.py - DSD -2005-06-07 Fixed a bug in texmanager.py: .aux files not being removed - DSD +2005-06-07 + Fixed a bug in texmanager.py: .aux files not being removed - DSD -2005-06-08 Added Sean Richard's hist binning fix -- see API_CHANGES - JDH +2005-06-08 + Added Sean Richard's hist binning fix -- see API_CHANGES - JDH -2005-06-07 Fixed a bug in texmanager.py: .aux files not being removed - - DSD +2005-06-07 + Fixed a bug in texmanager.py: .aux files not being removed - DSD ---------------------- -2005-06-07 matplotlib-0.81 released +0.81 (2005-06-07) +----------------- -2005-06-06 Added autoscale_on prop to axes +2005-06-06 + Added autoscale_on prop to axes -2005-06-06 Added Nick's picker "among" patch - JDH +2005-06-06 + Added Nick's picker "among" patch - JDH -2005-06-05 Fixed a TeX/LaTeX font discrepency in backend_ps. - DSD +2005-06-05 + Fixed a TeX/LaTeX font discrepency in backend_ps. - DSD -2005-06-05 Added a ps.distill option in rc settings. If True, postscript - output will be distilled using ghostscript, which should trim - the file size and allow it to load more quickly. Hopefully this - will address the issue of large ps files due to font - definitions. Tested with gnu-ghostscript-8.16. - DSD +2005-06-05 + Added a ps.distill option in rc settings. If True, postscript output will + be distilled using ghostscript, which should trim the file size and allow + it to load more quickly. Hopefully this will address the issue of large ps + files due to font definitions. Tested with gnu-ghostscript-8.16. - DSD -2005-06-03 Improved support for tex handling of text in backend_ps. - DSD +2005-06-03 + Improved support for tex handling of text in backend_ps. - DSD -2005-06-03 Added rc options to render text with tex or latex, and to select - the latex font package. - DSD +2005-06-03 + Added rc options to render text with tex or latex, and to select the latex + font package. - DSD -2005-06-03 Fixed a bug in ticker.py causing a ZeroDivisionError +2005-06-03 + Fixed a bug in ticker.py causing a ZeroDivisionError -2005-06-02 backend_gtk.py remove DBL_BUFFER, add line to expose_event to - try to fix pygtk 2.6 redraw problem - SC +2005-06-02 + backend_gtk.py remove DBL_BUFFER, add line to expose_event to try to fix + pygtk 2.6 redraw problem - SC -2005-06-01 The default behavior of ScalarFormatter now renders scientific - notation and large numerical offsets in a label at the end of - the axis. - DSD +2005-06-01 + The default behavior of ScalarFormatter now renders scientific notation and + large numerical offsets in a label at the end of the axis. - DSD -2005-06-01 Added Nicholas' frombyte image patch - JDH +2005-06-01 + Added Nicholas' frombyte image patch - JDH -2005-05-31 Added vertical TeX support for agg - JDH +2005-05-31 + Added vertical TeX support for agg - JDH -2005-05-31 Applied Eric's cntr patch - JDH +2005-05-31 + Applied Eric's cntr patch - JDH -2005-05-27 Finally found the pesky agg bug (which Maxim was kind - enough to fix within hours) that was causing a segfault in - the win32 cached marker drawing. Now windows users can get - the enormouse performance benefits of caced markers w/o - those occasional pesy screenshots. - JDH +2005-05-27 + Finally found the pesky agg bug (which Maxim was kind enough to fix within + hours) that was causing a segfault in the win32 cached marker drawing. Now + windows users can get the enormouse performance benefits of caced markers + w/o those occasional pesy screenshots. - JDH -2005-05-27 Got win32 build system working again, using a more recent - version of gtk and pygtk in the win32 build, gtk 2.6 from - https://web.archive.org/web/20050527002647/https://www.gimp.org/~tml/gimp/win32/downloads.html (you - will also need libpng12.dll to use these). I haven't - tested whether this binary build of mpl for win32 will work - with older gtk runtimes, so you may need to upgrade. +2005-05-27 + Got win32 build system working again, using a more recent version of gtk + and pygtk in the win32 build, gtk 2.6 from + https://web.archive.org/web/20050527002647/https://www.gimp.org/~tml/gimp/win32/downloads.html + (you will also need libpng12.dll to use these). I haven't tested whether + this binary build of mpl for win32 will work with older gtk runtimes, so + you may need to upgrade. -2005-05-27 Fixed bug where 2nd wxapp could be started if using wxagg - backend. - ADS +2005-05-27 + Fixed bug where 2nd wxapp could be started if using wxagg backend. - ADS -2005-05-26 Added Daishi text with dash patch -- see examples/dashtick.py +2005-05-26 + Added Daishi text with dash patch -- see examples/dashtick.py -2005-05-26 Moved backend_latex functionality into backend_ps. If - text.usetex=True, the PostScript backend will use LaTeX to - generate the .ps or .eps file. Ghostscript is required for - eps output. - DSD +2005-05-26 + Moved backend_latex functionality into backend_ps. If text.usetex=True, the + PostScript backend will use LaTeX to generate the .ps or .eps file. + Ghostscript is required for eps output. - DSD -2005-05-24 Fixed alignment and color issues in latex backend. - DSD +2005-05-24 + Fixed alignment and color issues in latex backend. - DSD -2005-05-21 Fixed raster problem for small rasters with dvipng -- looks - like it was a premultipled alpha problem - JDH +2005-05-21 + Fixed raster problem for small rasters with dvipng -- looks like it was a + premultipled alpha problem - JDH -2005-05-20 Added linewidth and faceted kwarg to scatter to control - edgewidth and color. Also added autolegend patch to - inspect line segments. +2005-05-20 + Added linewidth and faceted kwarg to scatter to control edgewidth and + color. Also added autolegend patch to inspect line segments. -2005-05-18 Added Orsay and JPL qt fixes - JDH +2005-05-18 + Added Orsay and JPL qt fixes - JDH -2005-05-17 Added a psfrag latex backend -- some alignment issues need - to be worked out. Run with -dLaTeX and a *.tex file and - *.eps file are generated. latex and dvips the generated - latex file to get ps output. Note xdvi *does* not work, - you must generate ps.- JDH +2005-05-17 + Added a psfrag latex backend -- some alignment issues need to be worked + out. Run with -dLaTeX and a *.tex file and *.eps file are generated. latex + and dvips the generated latex file to get ps output. Note xdvi *does* not + work, you must generate ps.- JDH -2005-05-13 Added Florent Rougon's Axis set_label1 - patch +2005-05-13 + Added Florent Rougon's Axis set_label1 patch -2005-05-17 pcolor optimization, fixed bug in previous pcolor patch - JSWHIT +2005-05-17 + pcolor optimization, fixed bug in previous pcolor patch - JSWHIT -2005-05-16 Added support for masked arrays in pcolor - JSWHIT +2005-05-16 + Added support for masked arrays in pcolor - JSWHIT -2005-05-12 Started work on TeX text for antigrain using pngdvi -- see - examples/tex_demo.py and the new module - matplotlib.texmanager. Rotated text not supported and - rendering small glyps is not working right yet. BUt large - fontsizes and/or high dpi saved figs work great. +2005-05-12 + Started work on TeX text for antigrain using pngdvi -- see + examples/tex_demo.py and the new module matplotlib.texmanager. Rotated + text not supported and rendering small glyps is not working right yet. BUt + large fontsizes and/or high dpi saved figs work great. -2005-05-10 New image resize options interpolation options. New values - for the interp kwarg are +2005-05-10 + New image resize options interpolation options. New values for the interp + kwarg are 'nearest', 'bilinear', 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos', 'blackman' - See help(imshow) for details, particularly the - interpolation, filternorm and filterrad kwargs + See help(imshow) for details, particularly the interpolation, filternorm + and filterrad kwargs -2005-05-10 Applied Eric's contour mem leak fixes - JDH +2005-05-10 + Applied Eric's contour mem leak fixes - JDH -2005-05-10 Extended python agg wrapper and started implementing - backend_agg2, an agg renderer based on the python wrapper. - This will be more flexible and easier to extend than the - current backend_agg. See also examples/agg_test.py - JDH +2005-05-10 + Extended python agg wrapper and started implementing backend_agg2, an agg + renderer based on the python wrapper. This will be more flexible and + easier to extend than the current backend_agg. See also + examples/agg_test.py - JDH -2005-05-09 Added Marcin's no legend patch to exclude lines from the - autolegend builder +2005-05-09 + Added Marcin's no legend patch to exclude lines from the autolegend builder:: plot(x, y, label='nolegend') -2005-05-05 Upgraded to agg23 - -2005-05-05 Added newscalarformatter_demo.py to examples. -DSD - -2005-05-04 Added NewScalarFormatter. Improved formatting of ticklabels, - scientific notation, and the ability to plot large large - numbers with small ranges, by determining a numerical offset. - See ticker.NewScalarFormatter for more details. -DSD +2005-05-05 + Upgraded to agg23 -2005-05-03 Added the option to specify a delimiter in pylab.load -DSD +2005-05-05 + Added newscalarformatter_demo.py to examples. -DSD -2005-04-28 Added Darren's line collection example +2005-05-04 + Added NewScalarFormatter. Improved formatting of ticklabels, scientific + notation, and the ability to plot large large numbers with small ranges, by + determining a numerical offset. See ticker.NewScalarFormatter for more + details. -DSD -2005-04-28 Fixed aa property in agg - JDH +2005-05-03 + Added the option to specify a delimiter in pylab.load -DSD -2005-04-27 Set postscript page size in .matplotlibrc - DSD +2005-04-28 + Added Darren's line collection example -2005-04-26 Added embedding in qt example. - JDH +2005-04-28 + Fixed aa property in agg - JDH -2005-04-14 Applied Michael Brady's qt backend patch: 1) fix a bug - where keyboard input was grabbed by the figure and not - released 2) turn on cursor changes 3) clean up a typo - and commented-out print statement. - JDH +2005-04-27 + Set postscript page size in .matplotlibrc - DSD +2005-04-26 + Added embedding in qt example. - JDH -2005-04-14 Applied Eric Firing's masked data lines patch and contour - patch. Support for masked arrays has been added to the - plot command and to the Line2D object. Only the valid - points are plotted. A "valid_only" kwarg was added to the - get_xdata() and get_ydata() methods of Line2D; by default - it is False, so that the original data arrays are - returned. Setting it to True returns the plottable points. - - see examples/masked_demo.py - JDH +2005-04-14 + Applied Michael Brady's qt backend patch: 1) fix a bug where keyboard input + was grabbed by the figure and not released 2) turn on cursor changes 3) + clean up a typo and commented-out print statement. - JDH -2005-04-13 Applied Tim Leslie's arrow key event handling patch - JDH +2005-04-14 + Applied Eric Firing's masked data lines patch and contour patch. Support + for masked arrays has been added to the plot command and to the Line2D + object. Only the valid points are plotted. A "valid_only" kwarg was added + to the get_xdata() and get_ydata() methods of Line2D; by default it is + False, so that the original data arrays are returned. Setting it to True + returns the plottable points. - see examples/masked_demo.py - JDH +2005-04-13 + Applied Tim Leslie's arrow key event handling patch - JDH --------------------------- -0.80 released +0.80 +---- -2005-04-11 Applied a variant of rick's xlim/ylim/axis patch. These - functions now take kwargs to let you selectively alter only - the min or max if desired. e.g., xlim(xmin=2) or - axis(ymax=3). They always return the new lim. - JDH +2005-04-11 + Applied a variant of rick's xlim/ylim/axis patch. These functions now take + kwargs to let you selectively alter only the min or max if desired. e.g., + xlim(xmin=2) or axis(ymax=3). They always return the new lim. - JDH -2005-04-11 Incorporated Werner's wx patch -- wx backend should be - compatible with wxpython2.4 and recent versions of 2.5. - Some early versions of wxpython 2.5 will not work because - there was a temporary change in the dc API that was rolled - back to make it 2.4 compliant +2005-04-11 + Incorporated Werner's wx patch -- wx backend should be compatible with + wxpython2.4 and recent versions of 2.5. Some early versions of wxpython + 2.5 will not work because there was a temporary change in the dc API that + was rolled back to make it 2.4 compliant -2005-04-11 modified tkagg show so that new figure window pops up on - call to figure +2005-04-11 + modified tkagg show so that new figure window pops up on call to figure -2005-04-11 fixed wxapp init bug +2005-04-11 + fixed wxapp init bug -2005-04-02 updated backend_ps.draw_lines, draw_markers for use with the - new API - DSD +2005-04-02 + updated backend_ps.draw_lines, draw_markers for use with the new API - DSD -2005-04-01 Added editable polygon example +2005-04-01 + Added editable polygon example ------------------------------ -2005-03-31 0.74 released +0.74 (2005-03-31) +----------------- -2005-03-30 Fixed and added checks for floating point inaccuracy in - ticker.Base - DSD +2005-03-30 + Fixed and added checks for floating point inaccuracy in ticker.Base - DSD -2005-03-30 updated /ellipse definition in backend_ps.py to address bug - #1122041 - DSD +2005-03-30 + updated /ellipse definition in backend_ps.py to address bug #1122041 - DSD -2005-03-29 Added unicode support for Agg and PS - JDH +2005-03-29 + Added unicode support for Agg and PS - JDH -2005-03-28 Added Jarrod's svg patch for text - JDH +2005-03-28 + Added Jarrod's svg patch for text - JDH -2005-03-28 Added Ludal's arrow and quiver patch - JDH +2005-03-28 + Added Ludal's arrow and quiver patch - JDH -2005-03-28 Added label kwarg to Axes to facilitate forcing the - creation of new Axes with otherwise identical attributes +2005-03-28 + Added label kwarg to Axes to facilitate forcing the creation of new Axes + with otherwise identical attributes -2005-03-28 Applied boxplot and OSX font search patches +2005-03-28 + Applied boxplot and OSX font search patches -2005-03-27 Added ft2font NULL check to fix Japanase font bug - JDH +2005-03-27 + Added ft2font NULL check to fix Japanase font bug - JDH -2005-03-27 Added sprint legend patch plus John Gill's tests and fix -- - see examples/legend_auto.py - JDH +2005-03-27 + Added sprint legend patch plus John Gill's tests and fix -- see + examples/legend_auto.py - JDH --------------------------- -2005-03-19 0.73.1 released +0.73.1 (2005-03-19) +------------------- -2005-03-19 Reverted wxapp handling because it crashed win32 - JDH +2005-03-19 + Reverted wxapp handling because it crashed win32 - JDH -2005-03-18 Add .number attribute to figure objects returned by figure() - FP +2005-03-18 + Add .number attribute to figure objects returned by figure() - FP --------------------------- -2005-03-18 0.73 released - -2005-03-16 Fixed labelsep bug - -2005-03-16 Applied Darren's ticker fix for small ranges - JDH - -2005-03-16 Fixed tick on horiz colorbar - JDH - -2005-03-16 Added Japanese winreg patch - JDH - -2005-03-15 backend_gtkagg.py: changed to use double buffering, this fixes - the problem reported Joachim Berdal Haga - "Parts of plot lagging - from previous frame in animation". Tested with anim.py and it makes - no noticeable difference to performance (23.7 before, 23.6 after) - - SC - -2005-03-14 add src/_backend_gdk.c extension to provide a substitute function - for pixbuf.get_pixels_array(). Currently pixbuf.get_pixels_array() - only works with Numeric, and then only works if pygtk has been - compiled with Numeric support. The change provides a function - pixbuf_get_pixels_array() which works with Numeric and numarray and - is always available. It means that backend_gtk should be able to - display images and mathtext in all circumstances. - SC - -2005-03-11 Upgraded CXX to 5.3.1 - -2005-03-10 remove GraphicsContextPS.set_linestyle() - and GraphicsContextSVG.set_linestyle() since they do no more than - the base class GraphicsContext.set_linestyle() - SC - -2005-03-09 Refactored contour functionality into dedicated module - -2005-03-09 Added Eric's contourf updates and Nadia's clabel functionality - -2005-03-09 Moved colorbar to figure.Figure to expose it for API developers - - JDH - -2005-03-09 backend_cairo.py: implemented draw_markers() - SC - -2005-03-09 cbook.py: only use enumerate() (the python version) if the builtin - version is not available. - Add new function 'izip' which is set to itertools.izip if available - and the python equivalent if not available. - SC - -2005-03-07 backend_gdk.py: remove PIXELS_PER_INCH from points_to_pixels(), but - still use it to adjust font sizes. This allows the GTK version of - line_styles.py to more closely match GTKAgg, previously the markers - were being drawn too large. - SC - -2005-03-01 Added Eric's contourf routines - -2005-03-01 Added start of proper agg SWIG wrapper. I would like to - expose agg functionality directly a the user level and this - module will serve that purpose eventually, and will - hopefully take over most of the functionality of the - current _image and _backend_agg modules. - JDH - -2005-02-28 Fixed polyfit / polyval to convert input args to float - arrays - JDH - - -2005-02-25 Add experimental feature to backend_gtk.py to enable/disable - double buffering (DBL_BUFFER=True/False) - SC - -2005-02-24 colors.py change ColorConverter.to_rgb() so it always returns rgb - (and not rgba), allow cnames keys to be cached, change the exception - raised from RuntimeError to ValueError (like hex2color()) - hex2color() use a regular expression to check the color string is - valid - SC - - -2005-02-23 Added rc param ps.useafm so backend ps can use native afm - fonts or truetype. afme breaks mathtext but causes much - smaller font sizes and may result in images that display - better in some contexts (e.g., pdfs incorporated into latex - docs viewed in acrobat reader). I would like to extend - this approach to allow the user to use truetype only for - mathtext, which should be easy. - -2005-02-23 Used sequence protocol rather than tuple in agg collection - drawing routines for greater flexibility - JDH - +0.73 (2005-03-18) +----------------- + +2005-03-16 + Fixed labelsep bug + +2005-03-16 + Applied Darren's ticker fix for small ranges - JDH + +2005-03-16 + Fixed tick on horiz colorbar - JDH + +2005-03-16 + Added Japanese winreg patch - JDH + +2005-03-15 + backend_gtkagg.py: changed to use double buffering, this fixes the problem + reported Joachim Berdal Haga - "Parts of plot lagging from previous frame + in animation". Tested with anim.py and it makes no noticeable difference to + performance (23.7 before, 23.6 after) - SC + +2005-03-14 + add src/_backend_gdk.c extension to provide a substitute function for + pixbuf.get_pixels_array(). Currently pixbuf.get_pixels_array() only works + with Numeric, and then only works if pygtk has been compiled with Numeric + support. The change provides a function pixbuf_get_pixels_array() which + works with Numeric and numarray and is always available. It means that + backend_gtk should be able to display images and mathtext in all + circumstances. - SC + +2005-03-11 + Upgraded CXX to 5.3.1 + +2005-03-10 + remove GraphicsContextPS.set_linestyle() and + GraphicsContextSVG.set_linestyle() since they do no more than the base + class GraphicsContext.set_linestyle() - SC + +2005-03-09 + Refactored contour functionality into dedicated module + +2005-03-09 + Added Eric's contourf updates and Nadia's clabel functionality + +2005-03-09 + Moved colorbar to figure.Figure to expose it for API developers - JDH + +2005-03-09 + backend_cairo.py: implemented draw_markers() - SC + +2005-03-09 + cbook.py: only use enumerate() (the python version) if the builtin version + is not available. Add new function 'izip' which is set to itertools.izip + if available and the python equivalent if not available. - SC + +2005-03-07 + backend_gdk.py: remove PIXELS_PER_INCH from points_to_pixels(), but still + use it to adjust font sizes. This allows the GTK version of line_styles.py + to more closely match GTKAgg, previously the markers were being drawn too + large. - SC + +2005-03-01 + Added Eric's contourf routines + +2005-03-01 + Added start of proper agg SWIG wrapper. I would like to expose agg + functionality directly a the user level and this module will serve that + purpose eventually, and will hopefully take over most of the functionality + of the current _image and _backend_agg modules. - JDH + +2005-02-28 + Fixed polyfit / polyval to convert input args to float arrays - JDH + +2005-02-25 + Add experimental feature to backend_gtk.py to enable/disable double + buffering (DBL_BUFFER=True/False) - SC + +2005-02-24 + colors.py change ColorConverter.to_rgb() so it always returns rgb (and not + rgba), allow cnames keys to be cached, change the exception raised from + RuntimeError to ValueError (like hex2color()) hex2color() use a regular + expression to check the color string is valid - SC + +2005-02-23 + Added rc param ps.useafm so backend ps can use native afm fonts or + truetype. afme breaks mathtext but causes much smaller font sizes and may + result in images that display better in some contexts (e.g., pdfs + incorporated into latex docs viewed in acrobat reader). I would like to + extend this approach to allow the user to use truetype only for mathtext, + which should be easy. + +2005-02-23 + Used sequence protocol rather than tuple in agg collection drawing routines + for greater flexibility - JDH -------------------------------- -2005-02-22 0.72.1 released - -2005-02-21 fixed linestyles for collections -- contour now dashes for - levels <0 +0.72.1 (2005-02-22) +------------------- -2005-02-21 fixed ps color bug - JDH +2005-02-21 + fixed linestyles for collections -- contour now dashes for levels <0 -2005-02-15 fixed missing qt file +2005-02-21 + fixed ps color bug - JDH -2005-02-15 banished error_msg and report_error. Internal backend - methods like error_msg_gtk are preserved. backend writers, - check your backends, and diff against 0.72 to make sure I - did the right thing! - JDH +2005-02-15 + fixed missing qt file +2005-02-15 + banished error_msg and report_error. Internal backend methods like + error_msg_gtk are preserved. backend writers, check your backends, and + diff against 0.72 to make sure I did the right thing! - JDH -2005-02-14 Added enthought traits to matplotlib tree - JDH +2005-02-14 + Added enthought traits to matplotlib tree - JDH ------------------------ -2005-02-14 0.72 released +0.72 (2005-02-14) +----------------- -2005-02-14 fix bug in cbook alltrue() and onetrue() - SC +2005-02-14 + fix bug in cbook alltrue() and onetrue() - SC -2005-02-11 updated qtagg backend from Ted - JDH +2005-02-11 + updated qtagg backend from Ted - JDH -2005-02-11 matshow fixes for figure numbering, return value and docs - FP +2005-02-11 + matshow fixes for figure numbering, return value and docs - FP -2005-02-09 new zorder example for fine control in zorder_demo.py - FP +2005-02-09 + new zorder example for fine control in zorder_demo.py - FP -2005-02-09 backend renderer draw_lines now has transform in backend, - as in draw_markers; use numerix in _backend_agg, aded small - line optimization to agg +2005-02-09 + backend renderer draw_lines now has transform in backend, as in + draw_markers; use numerix in _backend_agg, aded small line optimization to + agg -2005-02-09 subplot now deletes axes that it overlaps +2005-02-09 + subplot now deletes axes that it overlaps -2005-02-08 Added transparent support for gzipped files in load/save - Fernando - Perez (FP from now on). +2005-02-08 + Added transparent support for gzipped files in load/save - Fernando Perez + (FP from now on). -2005-02-08 Small optimizations in PS backend. They may have a big impact for - large plots, otherwise they don't hurt - FP +2005-02-08 + Small optimizations in PS backend. They may have a big impact for large + plots, otherwise they don't hurt - FP -2005-02-08 Added transparent support for gzipped files in load/save - Fernando - Perez (FP from now on). +2005-02-08 + Added transparent support for gzipped files in load/save - Fernando Perez + (FP from now on). -2005-02-07 Added newstyle path drawing for markers - only implemented - in agg currently - JDH +2005-02-07 + Added newstyle path drawing for markers - only implemented in agg currently + - JDH -2005-02-05 Some superscript text optimizations for ticking log plots +2005-02-05 + Some superscript text optimizations for ticking log plots -2005-02-05 Added some default key press events to pylab figures: 'g' - toggles grid - JDH +2005-02-05 + Added some default key press events to pylab figures: 'g' toggles grid - + JDH -2005-02-05 Added some support for handling log switching for lines - that have nonpos data - JDH +2005-02-05 + Added some support for handling log switching for lines that have nonpos + data - JDH -2005-02-04 Added Nadia's contour patch - contour now has matlab - compatible syntax; this also fixed an unequal sized contour - array bug- JDH +2005-02-04 + Added Nadia's contour patch - contour now has matlab compatible syntax; + this also fixed an unequal sized contour array bug- JDH -2005-02-04 Modified GTK backends to allow the FigureCanvas to be resized - smaller than its original size - SC +2005-02-04 + Modified GTK backends to allow the FigureCanvas to be resized smaller than + its original size - SC -2005-02-02 Fixed a bug in dates mx2num - JDH +2005-02-02 + Fixed a bug in dates mx2num - JDH -2005-02-02 Incorporated Fernando's matshow - JDH +2005-02-02 + Incorporated Fernando's matshow - JDH -2005-02-01 Added Fernando's figure num patch, including experimental - support for pylab backend switching, LineCOllection.color - warns, savefig now a figure method, fixed a close(fig) bug - - JDH +2005-02-01 + Added Fernando's figure num patch, including experimental support for pylab + backend switching, LineCOllection.color warns, savefig now a figure method, + fixed a close(fig) bug - JDH -2005-01-31 updated datalim in contour - JDH +2005-01-31 + updated datalim in contour - JDH -2005-01-30 Added backend_qtagg.py provided by Sigve Tjora - SC +2005-01-30 + Added backend_qtagg.py provided by Sigve Tjora - SC -2005-01-28 Added tk.inspect rc param to .matplotlibrc. IDLE users - should set tk.pythoninspect:True and interactive:True and - backend:TkAgg +2005-01-28 + Added tk.inspect rc param to .matplotlibrc. IDLE users should set + tk.pythoninspect:True and interactive:True and backend:TkAgg -2005-01-28 Replaced examples/interactive.py with an updated script from - Fernando Perez - SC +2005-01-28 + Replaced examples/interactive.py with an updated script from Fernando Perez + - SC -2005-01-27 Added support for shared x or y axes. See - examples/shared_axis_demo.py and examples/ganged_plots.py +2005-01-27 + Added support for shared x or y axes. See examples/shared_axis_demo.py and + examples/ganged_plots.py -2005-01-27 Added Lee's patch for missing symbols \leq and \LEFTbracket - to _mathtext_data - JDH +2005-01-27 + Added Lee's patch for missing symbols \leq and \LEFTbracket to + _mathtext_data - JDH -2005-01-26 Added Baptiste's two scales patch -- see help(twinx) in the - pylab interface for more info. See also - examples/two_scales.py +2005-01-26 + Added Baptiste's two scales patch -- see help(twinx) in the pylab interface + for more info. See also examples/two_scales.py -2005-01-24 Fixed a mathtext parser bug that prevented font changes in - sub/superscripts - JDH +2005-01-24 + Fixed a mathtext parser bug that prevented font changes in sub/superscripts + - JDH -2005-01-24 Fixed contour to work w/ interactive changes in colormaps, - clim, etc - JDH +2005-01-24 + Fixed contour to work w/ interactive changes in colormaps, clim, etc - JDH ----------------------------- -2005-01-21 matplotlib-0.71 released +0.71 (2005-01-21) +----------------- -2005-01-21 Refactored numerix to solve vexing namespace issues - JDH +2005-01-21 + Refactored numerix to solve vexing namespace issues - JDH -2005-01-21 Applied Nadia's contour bug fix - JDH +2005-01-21 + Applied Nadia's contour bug fix - JDH -2005-01-20 Made some changes to the contour routine - particularly - region=1 seems t fix a lot of the zigzag strangeness. - Added colormaps as default for contour - JDH +2005-01-20 + Made some changes to the contour routine - particularly region=1 seems t + fix a lot of the zigzag strangeness. Added colormaps as default for + contour - JDH -2005-01-19 Restored builtin names which were overridden (min, max, - abs, round, and sum) in pylab. This is a potentially - significant change for those who were relying on an array - version of those functions that previously overrode builtin - function names. - ADS +2005-01-19 + Restored builtin names which were overridden (min, max, abs, round, and + sum) in pylab. This is a potentially significant change for those who were + relying on an array version of those functions that previously overrode + builtin function names. - ADS -2005-01-18 Added accents to mathtext: \hat, \breve, \grave, \bar, - \acute, \tilde, \vec, \dot, \ddot. All of them have the - same syntax, e.g., to make an overbar you do \bar{o} or to - make an o umlaut you do \ddot{o}. The shortcuts are also - provided, e.g., \"o \'e \`e \~n \.x \^y - JDH +2005-01-18 + Added accents to mathtext: \hat, \breve, \grave, \bar, \acute, \tilde, + \vec, \dot, \ddot. All of them have the same syntax, e.g., to make an + overbar you do \bar{o} or to make an o umlaut you do \ddot{o}. The + shortcuts are also provided, e.g., \"o \'e \`e \~n \.x \^y - JDH -2005-01-18 Plugged image resize memory leaks - JDH +2005-01-18 + Plugged image resize memory leaks - JDH -2005-01-18 Fixed some mathtext parser problems relating to superscripts +2005-01-18 + Fixed some mathtext parser problems relating to superscripts -2005-01-17 Fixed a yticklabel problem for colorbars under change of - clim - JDH +2005-01-17 + Fixed a yticklabel problem for colorbars under change of clim - JDH -2005-01-17 Cleaned up Destroy handling in wx reducing memleak/fig from - approx 800k to approx 6k- JDH +2005-01-17 + Cleaned up Destroy handling in wx reducing memleak/fig from approx 800k to + approx 6k- JDH -2005-01-17 Added kappa to latex_to_bakoma - JDH +2005-01-17 + Added kappa to latex_to_bakoma - JDH -2005-01-15 Support arbitrary colorbar axes and horizontal colorbars - JDH +2005-01-15 + Support arbitrary colorbar axes and horizontal colorbars - JDH -2005-01-15 Fixed colormap number of colors bug so that the colorbar - has the same discretization as the image - JDH +2005-01-15 + Fixed colormap number of colors bug so that the colorbar has the same + discretization as the image - JDH -2005-01-15 Added Nadia's x,y contour fix - JDH +2005-01-15 + Added Nadia's x,y contour fix - JDH -2005-01-15 backend_cairo: added PDF support which requires pycairo 0.1.4. - Its not usable yet, but is ready for when the Cairo PDF backend - matures - SC +2005-01-15 + backend_cairo: added PDF support which requires pycairo 0.1.4. Its not + usable yet, but is ready for when the Cairo PDF backend matures - SC -2005-01-15 Added Nadia's x,y contour fix +2005-01-15 + Added Nadia's x,y contour fix -2005-01-12 Fixed set clip_on bug in artist - JDH +2005-01-12 + Fixed set clip_on bug in artist - JDH -2005-01-11 Reverted pythoninspect in tkagg - JDH +2005-01-11 + Reverted pythoninspect in tkagg - JDH -2005-01-09 Fixed a backend_bases event bug caused when an event is - triggered when location is None - JDH +2005-01-09 + Fixed a backend_bases event bug caused when an event is triggered when + location is None - JDH -2005-01-07 Add patch from Stephen Walton to fix bug in pylab.load() - when the % character is included in a comment. - ADS +2005-01-07 + Add patch from Stephen Walton to fix bug in pylab.load() when the % + character is included in a comment. - ADS -2005-01-07 Added markerscale attribute to Legend class. This allows - the marker size in the legend to be adjusted relative to - that in the plot. - ADS +2005-01-07 + Added markerscale attribute to Legend class. This allows the marker size + in the legend to be adjusted relative to that in the plot. - ADS -2005-01-06 Add patch from Ben Vanhaeren to make the FigureManagerGTK vbox a - public attribute - SC +2005-01-06 + Add patch from Ben Vanhaeren to make the FigureManagerGTK vbox a public + attribute - SC ---------------------------- -2004-12-30 Release 0.70 +2004-12-30 + Release 0.70 -2004-12-28 Added coord location to key press and added a - examples/picker_demo.py +2004-12-28 + Added coord location to key press and added a examples/picker_demo.py -2004-12-28 Fixed coords notification in wx toolbar - JDH +2004-12-28 + Fixed coords notification in wx toolbar - JDH -2004-12-28 Moved connection and disconnection event handling to the - FigureCanvasBase. Backends now only need to connect one - time for each of the button press, button release and key - press/release functions. The base class deals with - callbacks and multiple connections. This fixes flakiness - on some backends (tk, wx) in the presence of multiple - connections and/or disconnect - JDH +2004-12-28 + Moved connection and disconnection event handling to the FigureCanvasBase. + Backends now only need to connect one time for each of the button press, + button release and key press/release functions. The base class deals with + callbacks and multiple connections. This fixes flakiness on some backends + (tk, wx) in the presence of multiple connections and/or disconnect - JDH -2004-12-27 Fixed PS mathtext bug where color was not set - Jochen - please verify correct - JDH +2004-12-27 + Fixed PS mathtext bug where color was not set - Jochen please verify + correct - JDH -2004-12-27 Added Shadow class and added shadow kwarg to legend and pie - for shadow effect - JDH +2004-12-27 + Added Shadow class and added shadow kwarg to legend and pie for shadow + effect - JDH -2004-12-27 Added pie charts and new example/pie_demo.py +2004-12-27 + Added pie charts and new example/pie_demo.py -2004-12-23 Fixed an agg text rotation alignment bug, fixed some text - kwarg processing bugs, and added examples/text_rotation.py - to explain and demonstrate how text rotations and alignment - work in matplotlib. - JDH +2004-12-23 + Fixed an agg text rotation alignment bug, fixed some text kwarg processing + bugs, and added examples/text_rotation.py to explain and demonstrate how + text rotations and alignment work in matplotlib. - JDH ----------------------- -2004-12-22 0.65.1 released - JDH +0.65.1 (2004-12-22) +------------------- -2004-12-22 Fixed colorbar bug which caused colorbar not to respond to - changes in colormap in some instances - JDH +2004-12-22 + Fixed colorbar bug which caused colorbar not to respond to changes in + colormap in some instances - JDH -2004-12-22 Refactored NavigationToolbar in tkagg to support app - embedding , init now takes (canvas, window) rather than - (canvas, figman) - JDH +2004-12-22 + Refactored NavigationToolbar in tkagg to support app embedding , init now + takes (canvas, window) rather than (canvas, figman) - JDH -2004-12-21 Refactored axes and subplot management - removed - add_subplot and add_axes from the FigureManager. classic - toolbar updates are done via an observer pattern on the - figure using add_axobserver. Figure now maintains the axes - stack (for gca) and supports axes deletion. Ported changes - to GTK, Tk, Wx, and FLTK. Please test! Added delaxes - JDH +2004-12-21 + Refactored axes and subplot management - removed add_subplot and add_axes + from the FigureManager. classic toolbar updates are done via an observer + pattern on the figure using add_axobserver. Figure now maintains the axes + stack (for gca) and supports axes deletion. Ported changes to GTK, Tk, Wx, + and FLTK. Please test! Added delaxes - JDH -2004-12-21 Lots of image optimizations - 4x performance boost over - 0.65 JDH +2004-12-21 + Lots of image optimizations - 4x performance boost over 0.65 JDH -2004-12-20 Fixed a figimage bug where the axes is shown and modified - tkagg to move the destroy binding into the show method. +2004-12-20 + Fixed a figimage bug where the axes is shown and modified tkagg to move the + destroy binding into the show method. -2004-12-18 Minor refactoring of NavigationToolbar2 to support - embedding in an application - JDH +2004-12-18 + Minor refactoring of NavigationToolbar2 to support embedding in an + application - JDH -2004-12-14 Added linestyle to collections (currently broken) - JDH +2004-12-14 + Added linestyle to collections (currently broken) - JDH -2004-12-14 Applied Nadia's setupext patch to fix libstdc++ link - problem with contour and solaris -JDH +2004-12-14 + Applied Nadia's setupext patch to fix libstdc++ link problem with contour + and solaris -JDH -2004-12-14 A number of pychecker inspired fixes, including removal of - True and False from cbook which I erroneously thought was - needed for python2.2 - JDH +2004-12-14 + A number of pychecker inspired fixes, including removal of True and False + from cbook which I erroneously thought was needed for python2.2 - JDH -2004-12-14 Finished porting doc strings for set introspection. - Used silent_list for many get funcs that return - lists. JDH +2004-12-14 + Finished porting doc strings for set introspection. Used silent_list for + many get funcs that return lists. JDH -2004-12-13 dates.py: removed all timezone() calls, except for UTC - SC +2004-12-13 + dates.py: removed all timezone() calls, except for UTC - SC ---------------------------- -2004-12-13 0.65 released - JDH - -2004-12-13 colors.py: rgb2hex(), hex2color() made simpler (and faster), also - rgb2hex() - added round() instead of integer truncation - hex2color() - changed 256.0 divisor to 255.0, so now - '#ffffff' becomes (1.0,1.0,1.0) not (0.996,0.996,0.996) - SC +0.65 (2004-12-13) +----------------- -2004-12-11 Added ion and ioff to pylab interface - JDH +2004-12-13 + colors.py: rgb2hex(), hex2color() made simpler (and faster), also rgb2hex() + - added round() instead of integer truncation hex2color() - changed 256.0 + divisor to 255.0, so now '#ffffff' becomes (1.0,1.0,1.0) not + (0.996,0.996,0.996) - SC -2004-12-11 backend_template.py: delete FigureCanvasTemplate.realize() - most - backends don't use it and its no longer needed +2004-12-11 + Added ion and ioff to pylab interface - JDH - backend_ps.py, backend_svg.py: delete show() and - draw_if_interactive() - they are not needed for image backends +2004-12-11 + backend_template.py: delete FigureCanvasTemplate.realize() - most backends + don't use it and its no longer needed - backend_svg.py: write direct to file instead of StringIO - - SC + backend_ps.py, backend_svg.py: delete show() and draw_if_interactive() - + they are not needed for image backends -2004-12-10 Added zorder to artists to control drawing order of lines, - patches and text in axes. See examples/zoder_demo.py - JDH + backend_svg.py: write direct to file instead of StringIO -2004-12-10 Fixed colorbar bug with scatter - JDH + - SC -2004-12-10 Added Nadia Dencheva contour code - JDH +2004-12-10 + Added zorder to artists to control drawing order of lines, patches and text + in axes. See examples/zoder_demo.py - JDH -2004-12-10 backend_cairo.py: got mathtext working - SC +2004-12-10 + Fixed colorbar bug with scatter - JDH -2004-12-09 Added Norm Peterson's svg clipping patch +2004-12-10 + Added Nadia Dencheva contour code - JDH -2004-12-09 Added Matthew Newville's wx printing patch +2004-12-10 + backend_cairo.py: got mathtext working - SC -2004-12-09 Migrated matlab to pylab - JDH +2004-12-09 + Added Norm Peterson's svg clipping patch -2004-12-09 backend_gtk.py: split into two parts - - backend_gdk.py - an image backend - - backend_gtk.py - A GUI backend that uses GDK - SC +2004-12-09 + Added Matthew Newville's wx printing patch -2004-12-08 backend_gtk.py: remove quit_after_print_xvfb(\*args), show_xvfb(), - Dialog_MeasureTool(gtk.Dialog) one month after sending mail to - matplotlib-users asking if anyone still uses these functions - SC +2004-12-09 + Migrated matlab to pylab - JDH -2004-12-02 backend_bases.py, backend_template.py: updated some of the method - documentation to make them consistent with each other - SC +2004-12-09 + backend_gtk.py: split into two parts -2004-12-04 Fixed multiple bindings per event for TkAgg mpl_connect and - mpl_disconnect. Added a "test_disconnect" command line - parameter to coords_demo.py JTM + - backend_gdk.py - an image backend + - backend_gtk.py - A GUI backend that uses GDK - SC -2004-12-04 Fixed some legend bugs JDH +2004-12-08 + backend_gtk.py: remove quit_after_print_xvfb(\*args), show_xvfb(), + Dialog_MeasureTool(gtk.Dialog) one month after sending mail to + matplotlib-users asking if anyone still uses these functions - SC -2004-11-30 Added over command for oneoff over plots. e.g., over(plot, x, - y, lw=2). Works with any plot function. +2004-12-02 + backend_bases.py, backend_template.py: updated some of the method + documentation to make them consistent with each other - SC -2004-11-30 Added bbox property to text - JDH +2004-12-04 + Fixed multiple bindings per event for TkAgg mpl_connect and mpl_disconnect. + Added a "test_disconnect" command line parameter to coords_demo.py JTM -2004-11-29 Zoom to rect now respect reversed axes limits (for both - linear and log axes). - GL +2004-12-04 + Fixed some legend bugs JDH -2004-11-29 Added the over command to the matlab interface. over - allows you to add an overlay plot regardless of hold - state. - JDH +2004-11-30 + Added over command for oneoff over plots. e.g., over(plot, x, y, lw=2). + Works with any plot function. -2004-11-25 Added Printf to mplutils for printf style format string - formatting in C++ (should help write better exceptions) +2004-11-30 + Added bbox property to text - JDH -2004-11-24 IMAGE_FORMAT: remove from agg and gtkagg backends as its no longer - used - SC +2004-11-29 + Zoom to rect now respect reversed axes limits (for both linear and log + axes). - GL -2004-11-23 Added matplotlib compatible set and get introspection. See - set_and_get.py +2004-11-29 + Added the over command to the matlab interface. over allows you to add an + overlay plot regardless of hold state. - JDH -2004-11-23 applied Norbert's patched and exposed legend configuration - to kwargs - JDH +2004-11-25 + Added Printf to mplutils for printf style format string formatting in C++ + (should help write better exceptions) -2004-11-23 backend_gtk.py: added a default exception handler - SC +2004-11-24 + IMAGE_FORMAT: remove from agg and gtkagg backends as its no longer used - + SC -2004-11-18 backend_gtk.py: change so that the backend knows about all image - formats and does not need to use IMAGE_FORMAT in other backends - SC +2004-11-23 + Added matplotlib compatible set and get introspection. See set_and_get.py -2004-11-18 Fixed some report_error bugs in string interpolation as - reported on SF bug tracker- JDH +2004-11-23 + applied Norbert's patched and exposed legend configuration to kwargs - JDH -2004-11-17 backend_gtkcairo.py: change so all print_figure() calls render using - Cairo and get saved using backend_gtk.print_figure() - SC +2004-11-23 + backend_gtk.py: added a default exception handler - SC -2004-11-13 backend_cairo.py: Discovered the magic number (96) required for - Cairo PS plots to come out the right size. Restored Cairo PS output - and added support for landscape mode - SC +2004-11-18 + backend_gtk.py: change so that the backend knows about all image formats + and does not need to use IMAGE_FORMAT in other backends - SC -2004-11-13 Added ishold - JDH +2004-11-18 + Fixed some report_error bugs in string interpolation as reported on SF bug + tracker- JDH -2004-11-12 Added many new matlab colormaps - autumn bone cool copper - flag gray hot hsv jet pink prism spring summer winter - PG +2004-11-17 + backend_gtkcairo.py: change so all print_figure() calls render using Cairo + and get saved using backend_gtk.print_figure() - SC -2004-11-11 greatly simplify the emitted postscript code - JV +2004-11-13 + backend_cairo.py: Discovered the magic number (96) required for Cairo PS + plots to come out the right size. Restored Cairo PS output and added + support for landscape mode - SC -2004-11-12 Added new plotting functions spy, spy2 for sparse matrix - visualization - JDH +2004-11-13 + Added ishold - JDH -2004-11-11 Added rgrids, thetragrids for customizing the grid - locations and labels for polar plots - JDH +2004-11-12 + Added many new matlab colormaps - autumn bone cool copper flag gray hot hsv + jet pink prism spring summer winter - PG -2004-11-11 make the Gtk backends build without an X-server connection - JV +2004-11-11 + greatly simplify the emitted postscript code - JV -2004-11-10 matplotlib/__init__.py: Added FROZEN to signal we are running under - py2exe (or similar) - is used by backend_gtk.py - SC +2004-11-12 + Added new plotting functions spy, spy2 for sparse matrix visualization - + JDH -2004-11-09 backend_gtk.py: Made fix suggested by maffew@cat.org.au - to prevent problems when py2exe calls pygtk.require(). - SC +2004-11-11 + Added rgrids, thetragrids for customizing the grid locations and labels for + polar plots - JDH -2004-11-09 backend_cairo.py: Added support for printing to a fileobject. - Disabled cairo PS output which is not working correctly. - SC +2004-11-11 + make the Gtk backends build without an X-server connection - JV ----------------------------------- +2004-11-10 + matplotlib/__init__.py: Added FROZEN to signal we are running under py2exe + (or similar) - is used by backend_gtk.py - SC -2004-11-08 matplotlib-0.64 released +2004-11-09 + backend_gtk.py: Made fix suggested by maffew@cat.org.au to prevent problems + when py2exe calls pygtk.require(). - SC -2004-11-04 Changed -dbackend processing to only use known backends, so - we don't clobber other non-matplotlib uses of -d, like -debug. +2004-11-09 + backend_cairo.py: Added support for printing to a fileobject. Disabled + cairo PS output which is not working correctly. - SC -2004-11-04 backend_agg.py: added IMAGE_FORMAT to list the formats that the - backend can save to. - backend_gtkagg.py: added support for saving JPG files by using the - GTK backend - SC +---------------------------------- -2004-10-31 backend_cairo.py: now produces png and ps files (although the figure - sizing needs some work). pycairo did not wrap all the necessary - functions, so I wrapped them myself, they are included in the - backend_cairo.py doc string. - SC +0.64 (2004-11-08) +----------------- + +2004-11-04 + Changed -dbackend processing to only use known backends, so we don't + clobber other non-matplotlib uses of -d, like -debug. + +2004-11-04 + backend_agg.py: added IMAGE_FORMAT to list the formats that the backend can + save to. backend_gtkagg.py: added support for saving JPG files by using + the GTK backend - SC -2004-10-31 backend_ps.py: clean up the generated PostScript code, use - the PostScript stack to hold itermediate values instead of - storing them in the dictionary. - JV +2004-10-31 + backend_cairo.py: now produces png and ps files (although the figure sizing + needs some work). pycairo did not wrap all the necessary functions, so I + wrapped them myself, they are included in the backend_cairo.py doc string. + - SC -2004-10-30 backend_ps.py, ft2font.cpp, ft2font.h: fix the position of - text in the PostScript output. The new FT2Font method - get_descent gives the distance between the lower edge of - the bounding box and the baseline of a string. In - backend_ps the text is shifted upwards by this amount. - JV +2004-10-31 + backend_ps.py: clean up the generated PostScript code, use the PostScript + stack to hold itermediate values instead of storing them in the dictionary. + - JV -2004-10-30 backend_ps.py: clean up the code a lot. Change the - PostScript output to be more DSC compliant. All - definitions for the generated PostScript are now in a - PostScript dictionary 'mpldict'. Moved the long comment - about drawing ellipses from the PostScript output into a - Python comment. - JV +2004-10-30 + backend_ps.py, ft2font.cpp, ft2font.h: fix the position of text in the + PostScript output. The new FT2Font method get_descent gives the distance + between the lower edge of the bounding box and the baseline of a string. + In backend_ps the text is shifted upwards by this amount. - JV -2004-10-30 backend_gtk.py: removed FigureCanvasGTK.realize() as its no longer - needed. Merged ColorManager into GraphicsContext - backend_bases.py: For set_capstyle/joinstyle() only set cap or - joinstyle if there is no error. - SC +2004-10-30 + backend_ps.py: clean up the code a lot. Change the PostScript output to be + more DSC compliant. All definitions for the generated PostScript are now + in a PostScript dictionary 'mpldict'. Moved the long comment about drawing + ellipses from the PostScript output into a Python comment. - JV -2004-10-30 backend_gtk.py: tidied up print_figure() and removed some of the - dependency on widget events - SC +2004-10-30 + backend_gtk.py: removed FigureCanvasGTK.realize() as its no longer needed. + Merged ColorManager into GraphicsContext backend_bases.py: For + set_capstyle/joinstyle() only set cap or joinstyle if there is no error. - + SC -2004-10-28 backend_cairo.py: The renderer is complete except for mathtext, - draw_image() and clipping. gtkcairo works reasonably well. cairo - does not yet create any files since I can't figure how to set the - 'target surface', I don't think pycairo wraps the required functions - - SC +2004-10-30 + backend_gtk.py: tidied up print_figure() and removed some of the dependency + on widget events - SC -2004-10-28 backend_gtk.py: Improved the save dialog (GTK 2.4 only) so it - presents the user with a menu of supported image formats - SC +2004-10-28 + backend_cairo.py: The renderer is complete except for mathtext, + draw_image() and clipping. gtkcairo works reasonably well. cairo does not + yet create any files since I can't figure how to set the 'target surface', + I don't think pycairo wraps the required functions - SC -2004-10-28 backend_svg.py: change print_figure() to restore original face/edge - color - backend_ps.py : change print_figure() to ensure original face/edge - colors are restored even if there's an IOError - SC +2004-10-28 + backend_gtk.py: Improved the save dialog (GTK 2.4 only) so it presents the + user with a menu of supported image formats - SC -2004-10-27 Applied Norbert's errorbar patch to support barsabove kwarg +2004-10-28 + backend_svg.py: change print_figure() to restore original face/edge color + backend_ps.py : change print_figure() to ensure original face/edge colors + are restored even if there's an IOError - SC -2004-10-27 Applied Norbert's legend patch to support None handles +2004-10-27 + Applied Norbert's errorbar patch to support barsabove kwarg -2004-10-27 Added two more backends: backend_cairo.py, backend_gtkcairo.py - They are not complete yet, currently backend_gtkcairo just renders - polygons, rectangles and lines - SC +2004-10-27 + Applied Norbert's legend patch to support None handles -2004-10-21 Added polar axes and plots - JDH +2004-10-27 + Added two more backends: backend_cairo.py, backend_gtkcairo.py They are not + complete yet, currently backend_gtkcairo just renders polygons, rectangles + and lines - SC -2004-10-20 Fixed corrcoef bug exposed by corrcoef(X) where X is matrix - - JDH +2004-10-21 + Added polar axes and plots - JDH -2004-10-19 Added kwarg support to xticks and yticks to set ticklabel - text properties -- thanks to T. Edward Whalen for the suggestion +2004-10-20 + Fixed corrcoef bug exposed by corrcoef(X) where X is matrix - JDH -2004-10-19 Added support for PIL images in imshow(), image.py - ADS +2004-10-19 + Added kwarg support to xticks and yticks to set ticklabel text properties + -- thanks to T. Edward Whalen for the suggestion -2004-10-19 Re-worked exception handling in _image.py and _transforms.py - to avoid masking problems with shared libraries. - JTM +2004-10-19 + Added support for PIL images in imshow(), image.py - ADS -2004-10-16 Streamlined the matlab interface wrapper, removed the - noplot option to hist - just use mlab.hist instead. +2004-10-19 + Re-worked exception handling in _image.py and _transforms.py to avoid + masking problems with shared libraries. - JTM -2004-09-30 Added Andrew Dalke's strftime code to extend the range of - dates supported by the DateFormatter - JDH +2004-10-16 + Streamlined the matlab interface wrapper, removed the noplot option to hist + - just use mlab.hist instead. -2004-09-30 Added barh - JDH +2004-09-30 + Added Andrew Dalke's strftime code to extend the range of dates supported + by the DateFormatter - JDH -2004-09-30 Removed fallback to alternate array package from numerix - so that ImportErrors are easier to debug. JTM +2004-09-30 + Added barh - JDH -2004-09-30 Add GTK+ 2.4 support for the message in the toolbar. SC +2004-09-30 + Removed fallback to alternate array package from numerix so that + ImportErrors are easier to debug. - JTM -2004-09-30 Made some changes to support python22 - lots of doc - fixes. - JDH +2004-09-30 + Add GTK+ 2.4 support for the message in the toolbar. SC -2004-09-29 Added a Verbose class for reporting - JDH +2004-09-30 + Made some changes to support python22 - lots of doc fixes. - JDH + +2004-09-29 + Added a Verbose class for reporting - JDH ------------------------------------ -2004-09-28 Released 0.63.0 - -2004-09-28 Added save to file object for agg - see - examples/print_stdout.py - -2004-09-24 Reorganized all py code to lib subdir - -2004-09-24 Fixed axes resize image edge effects on interpolation - - required upgrade to agg22 which fixed an agg bug related to - this problem - -2004-09-20 Added toolbar2 message display for backend_tkagg. JTM - - -2004-09-17 Added coords formatter attributes. These must be callable, - and return a string for the x or y data. These will be used - to format the x and y data for the coords box. Default is - the axis major formatter. e.g.: - - # format the coords message box - def price(x): return '$%1.2f'%x - ax.format_xdata = DateFormatter('%Y-%m-%d') - ax.format_ydata = price - - -2004-09-17 Total rewrite of dates handling to use python datetime with - num2date, date2num and drange. pytz for timezone handling, - dateutils for spohisticated ticking. date ranges from - 0001-9999 are supported. rrules allow arbitrary date - ticking. examples/date_demo*.py converted to show new - usage. new example examples/date_demo_rrule.py shows how - to use rrules in date plots. The date locators are much - more general and almost all of them have different - constructors. See matplotlib.dates for more info. - -2004-09-15 Applied Fernando's backend __init__ patch to support easier - backend maintenance. Added his numutils to mlab. JDH - -2004-09-16 Re-designated all files in matplotlib/images as binary and - w/o keyword substitution using "cvs admin -kb \*.svg ...". - See binary files in "info cvs" under Linux. This was messing - up builds from CVS on windows since CVS was doing lf -> cr/lf - and keyword substitution on the bitmaps. - JTM - -2004-09-15 Modified setup to build array-package-specific extensions - for those extensions which are array-aware. Setup builds - extensions automatically for either Numeric, numarray, or - both, depending on what you have installed. Python proxy - modules for the array-aware extensions import the version - optimized for numarray or Numeric determined by numerix. - - JTM - -2004-09-15 Moved definitions of infinity from mlab to numerix to avoid - divide by zero warnings for numarray - JTM - -2004-09-09 Added axhline, axvline, axhspan and axvspan +2004-09-28 + Released 0.63.0 + +2004-09-28 + Added save to file object for agg - see examples/print_stdout.py + +2004-09-24 + Reorganized all py code to lib subdir + +2004-09-24 + Fixed axes resize image edge effects on interpolation - required upgrade to + agg22 which fixed an agg bug related to this problem + +2004-09-20 + Added toolbar2 message display for backend_tkagg. JTM + +2004-09-17 + Added coords formatter attributes. These must be callable, and return a + string for the x or y data. These will be used to format the x and y data + for the coords box. Default is the axis major formatter. e.g.:: + + # format the coords message box + def price(x): return '$%1.2f'%x + ax.format_xdata = DateFormatter('%Y-%m-%d') + ax.format_ydata = price + +2004-09-17 + Total rewrite of dates handling to use python datetime with num2date, + date2num and drange. pytz for timezone handling, dateutils for + spohisticated ticking. date ranges from 0001-9999 are supported. rrules + allow arbitrary date ticking. examples/date_demo*.py converted to show new + usage. new example examples/date_demo_rrule.py shows how to use rrules in + date plots. The date locators are much more general and almost all of them + have different constructors. See matplotlib.dates for more info. + +2004-09-15 + Applied Fernando's backend __init__ patch to support easier backend + maintenance. Added his numutils to mlab. JDH + +2004-09-16 + Re-designated all files in matplotlib/images as binary and w/o keyword + substitution using "cvs admin -kb \*.svg ...". See binary files in "info + cvs" under Linux. This was messing up builds from CVS on windows since CVS + was doing lf -> cr/lf and keyword substitution on the bitmaps. - JTM + +2004-09-15 + Modified setup to build array-package-specific extensions for those + extensions which are array-aware. Setup builds extensions automatically + for either Numeric, numarray, or both, depending on what you have + installed. Python proxy modules for the array-aware extensions import the + version optimized for numarray or Numeric determined by numerix. - JTM + +2004-09-15 + Moved definitions of infinity from mlab to numerix to avoid divide by zero + warnings for numarray - JTM + +2004-09-09 + Added axhline, axvline, axhspan and axvspan ------------------------------- -2004-08-30 matplotlib 0.62.4 released +0.62.4 (2004-08-30) +------------------- -2004-08-30 Fixed a multiple images with different extent bug, - Fixed markerfacecolor as RGB tuple +2004-08-30 + Fixed a multiple images with different extent bug, Fixed markerfacecolor as + RGB tuple -2004-08-27 Mathtext now more than 5x faster. Thanks to Paul Mcguire - for fixes both to pyparsing and to the matplotlib grammar! - mathtext broken on python2.2 +2004-08-27 + Mathtext now more than 5x faster. Thanks to Paul Mcguire for fixes both to + pyparsing and to the matplotlib grammar! mathtext broken on python2.2 -2004-08-25 Exposed Darren's and Greg's log ticking and formatting - options to semilogx and friends +2004-08-25 + Exposed Darren's and Greg's log ticking and formatting options to semilogx + and friends -2004-08-23 Fixed grid w/o args to toggle grid state - JDH +2004-08-23 + Fixed grid w/o args to toggle grid state - JDH -2004-08-11 Added Gregory's log patches for major and minor ticking +2004-08-11 + Added Gregory's log patches for major and minor ticking -2004-08-18 Some pixel edge effects fixes for images +2004-08-18 + Some pixel edge effects fixes for images -2004-08-18 Fixed TTF files reads in backend_ps on win32. +2004-08-18 + Fixed TTF files reads in backend_ps on win32. -2004-08-18 Added base and subs properties for logscale plots, user - modifiable using - set_[x,y]scale('log',base=b,subs=[mt1,mt2,...]) - GL +2004-08-18 + Added base and subs properties for logscale plots, user modifiable using + set_[x,y]scale('log',base=b,subs=[mt1,mt2,...]) - GL -2004-08-18 fixed a bug exposed by trying to find the HOME dir on win32 - thanks to Alan Issac for pointing to the light - JDH +2004-08-18 + fixed a bug exposed by trying to find the HOME dir on win32 thanks to Alan + Issac for pointing to the light - JDH -2004-08-18 fixed errorbar bug in setting ecolor - JDH +2004-08-18 + fixed errorbar bug in setting ecolor - JDH -2004-08-12 Added Darren Dale's exponential ticking patch +2004-08-12 + Added Darren Dale's exponential ticking patch -2004-08-11 Added Gregory's fltkagg backend +2004-08-11 + Added Gregory's fltkagg backend ------------------------------ -2004-08-09 matplotlib-0.61.0 released +0.61.0 (2004-08-09) +------------------- -2004-08-08 backend_gtk.py: get rid of the final PyGTK deprecation warning by - replacing gtkOptionMenu with gtkMenu in the 2.4 version of the - classic toolbar. +2004-08-08 + backend_gtk.py: get rid of the final PyGTK deprecation warning by replacing + gtkOptionMenu with gtkMenu in the 2.4 version of the classic toolbar. -2004-08-06 Added Tk zoom to rect rectangle, proper idle drawing, and - keybinding - JDH +2004-08-06 + Added Tk zoom to rect rectangle, proper idle drawing, and keybinding - JDH -2004-08-05 Updated installing.html and INSTALL - JDH +2004-08-05 + Updated installing.html and INSTALL - JDH -2004-08-01 backend_gtk.py: move all drawing code into the expose_event() +2004-08-01 + backend_gtk.py: move all drawing code into the expose_event() -2004-07-28 Added Greg's toolbar2 and backend_*agg patches - JDH +2004-07-28 + Added Greg's toolbar2 and backend_*agg patches - JDH -2004-07-28 Added image.imread with support for loading png into - numerix arrays +2004-07-28 + Added image.imread with support for loading png into numerix arrays -2004-07-28 Added key modifiers to events - implemented dynamic updates - and rubber banding for interactive pan/zoom - JDH +2004-07-28 + Added key modifiers to events - implemented dynamic updates and rubber + banding for interactive pan/zoom - JDH -2004-07-27 did a readthrough of SVG, replacing all the string - additions with string interps for efficiency, fixed some - layout problems, added font and image support (through - external pngs) - JDH +2004-07-27 + did a readthrough of SVG, replacing all the string additions with string + interps for efficiency, fixed some layout problems, added font and image + support (through external pngs) - JDH -2004-07-25 backend_gtk.py: modify toolbar2 to make it easier to support GTK+ - 2.4. Add GTK+ 2.4 toolbar support. - SC +2004-07-25 + backend_gtk.py: modify toolbar2 to make it easier to support GTK+ 2.4. Add + GTK+ 2.4 toolbar support. - SC -2004-07-24 backend_gtk.py: Simplified classic toolbar creation - SC +2004-07-24 + backend_gtk.py: Simplified classic toolbar creation - SC -2004-07-24 Added images/matplotlib.svg to be used when GTK+ windows are - minimised - SC +2004-07-24 + Added images/matplotlib.svg to be used when GTK+ windows are minimised - SC -2004-07-22 Added right mouse click zoom for NavigationToolbar2 panning - mode. - JTM +2004-07-22 + Added right mouse click zoom for NavigationToolbar2 panning mode. - JTM -2004-07-22 Added NavigationToolbar2 support to backend_tkagg. - Minor tweak to backend_bases. - JTM +2004-07-22 + Added NavigationToolbar2 support to backend_tkagg. Minor tweak to + backend_bases. - JTM -2004-07-22 Incorporated Gergory's renderer cache and buffer object - cache - JDH +2004-07-22 + Incorporated Gergory's renderer cache and buffer object cache - JDH -2004-07-22 Backend_gtk.py: Added support for GtkFileChooser, changed - FileSelection/FileChooser so that only one instance pops up, - and made them both modal. - SC +2004-07-22 + Backend_gtk.py: Added support for GtkFileChooser, changed + FileSelection/FileChooser so that only one instance pops up, and made them + both modal. - SC -2004-07-21 Applied backend_agg memory leak patch from hayden - - jocallo@online.no. Found and fixed a leak in binary - operations on transforms. Moral of the story: never incref - where you meant to decref! Fixed several leaks in ft2font: - moral of story: almost always return Py::asObject over - Py::Object - JDH +2004-07-21 + Applied backend_agg memory leak patch from hayden - jocallo@online.no. + Found and fixed a leak in binary operations on transforms. Moral of the + story: never incref where you meant to decref! Fixed several leaks in + ft2font: moral of story: almost always return Py::asObject over Py::Object + - JDH -2004-07-21 Fixed a to string memory allocation bug in agg and image - modules - JDH +2004-07-21 + Fixed a to string memory allocation bug in agg and image modules - JDH -2004-07-21 Added mpl_connect and mpl_disconnect to matlab interface - - JDH +2004-07-21 + Added mpl_connect and mpl_disconnect to matlab interface - JDH -2004-07-21 Added beginnings of users_guide to CVS - JDH +2004-07-21 + Added beginnings of users_guide to CVS - JDH -2004-07-20 ported toolbar2 to wx +2004-07-20 + ported toolbar2 to wx -2004-07-20 upgraded to agg21 - JDH +2004-07-20 + upgraded to agg21 - JDH -2004-07-20 Added new icons for toolbar2 - JDH +2004-07-20 + Added new icons for toolbar2 - JDH -2004-07-19 Added vertical mathtext for \*Agg and GTK - thanks Jim - Benson! - JDH +2004-07-19 + Added vertical mathtext for \*Agg and GTK - thanks Jim Benson! - JDH -2004-07-16 Added ps/eps/svg savefig options to wx and gtk JDH +2004-07-16 + Added ps/eps/svg savefig options to wx and gtk JDH -2004-07-15 Fixed python framework tk finder in setupext.py - JDH +2004-07-15 + Fixed python framework tk finder in setupext.py - JDH -2004-07-14 Fixed layer images demo which was broken by the 07/12 image - extent fixes - JDH +2004-07-14 + Fixed layer images demo which was broken by the 07/12 image extent fixes - + JDH -2004-07-13 Modified line collections to handle arbitrary length - segments for each line segment. - JDH +2004-07-13 + Modified line collections to handle arbitrary length segments for each line + segment. - JDH -2004-07-13 Fixed problems with image extent and origin - - set_image_extent deprecated. Use imshow(blah, blah, - extent=(xmin, xmax, ymin, ymax) instead - JDH +2004-07-13 + Fixed problems with image extent and origin - set_image_extent deprecated. + Use imshow(blah, blah, extent=(xmin, xmax, ymin, ymax) instead - JDH -2004-07-12 Added prototype for new nav bar with codifed event - handling. Use mpl_connect rather than connect for - matplotlib event handling. toolbar style determined by rc - toolbar param. backend status: gtk: prototype, wx: in - progress, tk: not started - JDH +2004-07-12 + Added prototype for new nav bar with codifed event handling. Use + mpl_connect rather than connect for matplotlib event handling. toolbar + style determined by rc toolbar param. backend status: gtk: prototype, wx: + in progress, tk: not started - JDH -2004-07-11 backend_gtk.py: use builtin round() instead of redefining it. - - SC +2004-07-11 + backend_gtk.py: use builtin round() instead of redefining it. - SC -2004-07-10 Added embedding_in_wx3 example - ADS +2004-07-10 + Added embedding_in_wx3 example - ADS -2004-07-09 Added dynamic_image_wxagg to examples - ADS +2004-07-09 + Added dynamic_image_wxagg to examples - ADS -2004-07-09 added support for embedding TrueType fonts in PS files - PEB +2004-07-09 + added support for embedding TrueType fonts in PS files - PEB -2004-07-09 fixed a sfnt bug exposed if font cache is not built +2004-07-09 + fixed a sfnt bug exposed if font cache is not built -2004-07-09 added default arg None to matplotlib.matlab grid command to - toggle current grid state +2004-07-09 + added default arg None to matplotlib.matlab grid command to toggle current + grid state --------------------- -2004-07-08 0.60.2 released +0.60.2 (2004-07-08) +------------------- -2004-07-08 fixed a mathtext bug for '6' +2004-07-08 + fixed a mathtext bug for '6' -2004-07-08 added some numarray bug workarounds +2004-07-08 + added some numarray bug workarounds -------------------------- -2004-07-07 0.60 released - -2004-07-07 Fixed a bug in dynamic_demo_wx - +0.60 (2004-07-07) +----------------- -2004-07-07 backend_gtk.py: raise SystemExit immediately if - 'import pygtk' fails - SC +2004-07-07 + Fixed a bug in dynamic_demo_wx -2004-07-05 Added new mathtext commands \over{sym1}{sym2} and - \under{sym1}{sym2} +2004-07-07 + backend_gtk.py: raise SystemExit immediately if 'import pygtk' fails - SC -2004-07-05 Unified image and patch collections colormapping and - scaling args. Updated docstrings for all - JDH +2004-07-05 + Added new mathtext commands \over{sym1}{sym2} and \under{sym1}{sym2} -2004-07-05 Fixed a figure legend bug and added - examples/figlegend_demo.py - JDH +2004-07-05 + Unified image and patch collections colormapping and scaling args. Updated + docstrings for all - JDH -2004-07-01 Fixed a memory leak in image and agg to string methods +2004-07-05 + Fixed a figure legend bug and added examples/figlegend_demo.py - JDH -2004-06-25 Fixed fonts_demo spacing problems and added a kwargs - version of the fonts_demo fonts_demo_kw.py - JDH +2004-07-01 + Fixed a memory leak in image and agg to string methods -2004-06-25 finance.py: handle case when urlopen() fails - SC +2004-06-25 + Fixed fonts_demo spacing problems and added a kwargs version of the + fonts_demo fonts_demo_kw.py - JDH -2004-06-24 Support for multiple images on axes and figure, with - blending. Support for upper and lower image origins. - clim, jet and gray functions in matlab interface operate on - current image - JDH +2004-06-25 + finance.py: handle case when urlopen() fails - SC -2004-06-23 ported code to Perry's new colormap and norm scheme. Added - new rc attributes image.aspect, image.interpolation, - image.cmap, image.lut, image.origin +2004-06-24 + Support for multiple images on axes and figure, with blending. Support for + upper and lower image origins. clim, jet and gray functions in matlab + interface operate on current image - JDH -2004-06-20 backend_gtk.py: replace gtk.TRUE/FALSE with True/False. - simplified _make_axis_menu(). - SC +2004-06-23 + ported code to Perry's new colormap and norm scheme. Added new rc + attributes image.aspect, image.interpolation, image.cmap, image.lut, + image.origin -2004-06-19 anim_tk.py: Updated to use TkAgg by default (not GTK) - backend_gtk_py: Added '_' in front of private widget - creation functions - SC +2004-06-20 + backend_gtk.py: replace gtk.TRUE/FALSE with True/False. simplified + _make_axis_menu(). - SC -2004-06-17 backend_gtk.py: Create a GC once in realise(), not every - time draw() is called. - SC +2004-06-19 + anim_tk.py: Updated to use TkAgg by default (not GTK) backend_gtk_py: Added + '_' in front of private widget creation functions - SC -2004-06-16 Added new py2exe FAQ entry and added frozen support in - get_data_path for py2exe - JDH +2004-06-17 + backend_gtk.py: Create a GC once in realise(), not every time draw() is + called. - SC -2004-06-16 Removed GTKGD, which was always just a proof-of-concept - backend - JDH +2004-06-16 + Added new py2exe FAQ entry and added frozen support in get_data_path for + py2exe - JDH -2004-06-16 backend_gtk.py updates to replace deprecated functions - gtk.mainquit(), gtk.mainloop(). - Update NavigationToolbar to use the new GtkToolbar API - SC +2004-06-16 + Removed GTKGD, which was always just a proof-of-concept backend - JDH -2004-06-15 removed set_default_font from font_manager to unify font - customization using the new function rc. See API_CHANGES - for more info. The examples fonts_demo.py and - fonts_demo_kw.py are ported to the new API - JDH +2004-06-16 + backend_gtk.py updates to replace deprecated functions gtk.mainquit(), + gtk.mainloop(). Update NavigationToolbar to use the new GtkToolbar API - + SC -2004-06-15 Improved (yet again!) axis scaling to properly handle - singleton plots - JDH +2004-06-15 + removed set_default_font from font_manager to unify font customization + using the new function rc. See API_CHANGES for more info. The examples + fonts_demo.py and fonts_demo_kw.py are ported to the new API - JDH -2004-06-15 Restored the old FigureCanvasGTK.draw() - SC +2004-06-15 + Improved (yet again!) axis scaling to properly handle singleton plots - JDH -2004-06-11 More memory leak fixes in transforms and ft2font - JDH +2004-06-15 + Restored the old FigureCanvasGTK.draw() - SC -2004-06-11 Eliminated numerix .numerix file and environment variable - NUMERIX. Fixed bug which prevented command line overrides: - --numarray or --numeric. - JTM +2004-06-11 + More memory leak fixes in transforms and ft2font - JDH -2004-06-10 Added rc configuration function rc; deferred all rc param - setting until object creation time; added new rc attrs: - lines.markerfacecolor, lines.markeredgecolor, - lines.markeredgewidth, patch.linewidth, patch.facecolor, - patch.edgecolor, patch.antialiased; see - examples/customize_rc.py for usage - JDH +2004-06-11 + Eliminated numerix .numerix file and environment variable NUMERIX. Fixed + bug which prevented command line overrides: --numarray or --numeric. - JTM +2004-06-10 + Added rc configuration function rc; deferred all rc param setting until + object creation time; added new rc attrs: lines.markerfacecolor, + lines.markeredgecolor, lines.markeredgewidth, patch.linewidth, + patch.facecolor, patch.edgecolor, patch.antialiased; see + examples/customize_rc.py for usage - JDH --------------------------------------------------------------- -2004-06-09 0.54.2 released +0.54.2 (2004-06-09) +------------------- -2004-06-08 Rewrote ft2font using CXX as part of general memory leak - fixes; also fixed transform memory leaks - JDH +2004-06-08 + Rewrote ft2font using CXX as part of general memory leak fixes; also fixed + transform memory leaks - JDH -2004-06-07 Fixed several problems with log ticks and scaling - JDH +2004-06-07 + Fixed several problems with log ticks and scaling - JDH -2004-06-07 Fixed width/height issues for images - JDH +2004-06-07 + Fixed width/height issues for images - JDH -2004-06-03 Fixed draw_if_interactive bug for semilogx; +2004-06-03 + Fixed draw_if_interactive bug for semilogx; -2004-06-02 Fixed text clipping to clip to axes - JDH +2004-06-02 + Fixed text clipping to clip to axes - JDH -2004-06-02 Fixed leading newline text and multiple newline text - JDH +2004-06-02 + Fixed leading newline text and multiple newline text - JDH -2004-06-02 Fixed plot_date to return lines - JDH +2004-06-02 + Fixed plot_date to return lines - JDH -2004-06-01 Fixed plot to work with x or y having shape N,1 or 1,N - JDH +2004-06-01 + Fixed plot to work with x or y having shape N,1 or 1,N - JDH -2004-05-31 Added renderer markeredgewidth attribute of Line2D. - ADS +2004-05-31 + Added renderer markeredgewidth attribute of Line2D. - ADS -2004-05-29 Fixed tick label clipping to work with navigation. +2004-05-29 + Fixed tick label clipping to work with navigation. -2004-05-28 Added renderer grouping commands to support groups in +2004-05-28 + Added renderer grouping commands to support groups in SVG/PS. - JDH -2004-05-28 Fixed, this time I really mean it, the singleton plot - plot([0]) scaling bug; Fixed Flavio's shape = N,1 bug - JDH +2004-05-28 + Fixed, this time I really mean it, the singleton plot plot([0]) scaling + bug; Fixed Flavio's shape = N,1 bug - JDH -2004-05-28 added colorbar - JDH +2004-05-28 + added colorbar - JDH -2004-05-28 Made some changes to the matplotlib.colors.Colormap to - properly support clim - JDH +2004-05-28 + Made some changes to the matplotlib.colors.Colormap to properly support + clim - JDH ----------------------------------------------------------------- -2004-05-27 0.54.1 released +0.54.1 (2004-05-27) +------------------- -2004-05-27 Lots of small bug fixes: rotated text at negative angles, - errorbar capsize and autoscaling, right tick label - position, gtkagg on win98, alpha of figure background, - singleton plots - JDH +2004-05-27 + Lots of small bug fixes: rotated text at negative angles, errorbar capsize + and autoscaling, right tick label position, gtkagg on win98, alpha of + figure background, singleton plots - JDH -2004-05-26 Added Gary's errorbar stuff and made some fixes for length - one plots and constant data plots - JDH +2004-05-26 + Added Gary's errorbar stuff and made some fixes for length one plots and + constant data plots - JDH -2004-05-25 Tweaked TkAgg backend so that canvas.draw() works - more like the other backends. Fixed a bug resulting - in 2 draws per figure manager show(). - JTM +2004-05-25 + Tweaked TkAgg backend so that canvas.draw() works more like the other + backends. Fixed a bug resulting in 2 draws per figure manager show(). + - JTM ------------------------------------------------------------ -2004-05-19 0.54 released +0.54 (2004-05-19) +----------------- -2004-05-18 Added newline separated text with rotations to text.Text - layout - JDH +2004-05-18 + Added newline separated text with rotations to text.Text layout - JDH -2004-05-16 Added fast pcolor using PolyCollections. - JDH +2004-05-16 + Added fast pcolor using PolyCollections. - JDH -2004-05-14 Added fast polygon collections - changed scatter to use - them. Added multiple symbols to scatter. 10x speedup on - large scatters using \*Agg and 5X speedup for ps. - JDH +2004-05-14 + Added fast polygon collections - changed scatter to use them. Added + multiple symbols to scatter. 10x speedup on large scatters using \*Agg and + 5X speedup for ps. - JDH -2004-05-14 On second thought... created an "nx" namespace in - in numerix which maps type names onto typecodes - the same way for both numarray and Numeric. This - undoes my previous change immediately below. To get a - typename for Int16 usable in a Numeric extension: - say nx.Int16. - JTM +2004-05-14 + On second thought... created an "nx" namespace in in numerix which maps + type names onto typecodes the same way for both numarray and Numeric. This + undoes my previous change immediately below. To get a typename for Int16 + usable in a Numeric extension: say nx.Int16. - JTM -2004-05-15 Rewrote transformation class in extension code, simplified - all the artist constructors - JDH +2004-05-15 + Rewrote transformation class in extension code, simplified all the artist + constructors - JDH -2004-05-14 Modified the type definitions in the numarray side of - numerix so that they are Numeric typecodes and can be - used with Numeric compilex extensions. The original - numarray types were renamed to type. - JTM +2004-05-14 + Modified the type definitions in the numarray side of numerix so that they + are Numeric typecodes and can be used with Numeric compilex extensions. + The original numarray types were renamed to type. - JTM -2004-05-06 Gary Ruben sent me a bevy of new plot symbols and markers. - See matplotlib.matlab.plot - JDH +2004-05-06 + Gary Ruben sent me a bevy of new plot symbols and markers. See + matplotlib.matlab.plot - JDH -2004-05-06 Total rewrite of mathtext - factored ft2font stuff out of - layout engine and defined abstract class for font handling - to lay groundwork for ps mathtext. Rewrote parser and made - layout engine much more precise. Fixed all the layout - hacks. Added spacing commands \/ and \hspace. Added - composite chars and defined angstrom. - JDH +2004-05-06 + Total rewrite of mathtext - factored ft2font stuff out of layout engine and + defined abstract class for font handling to lay groundwork for ps mathtext. + Rewrote parser and made layout engine much more precise. Fixed all the + layout hacks. Added spacing commands \/ and \hspace. Added composite + chars and defined angstrom. - JDH -2004-05-05 Refactored text instances out of backend; aligned - text with arbitrary rotations is now supported - JDH +2004-05-05 + Refactored text instances out of backend; aligned text with arbitrary + rotations is now supported - JDH -2004-05-05 Added a Matrix capability for numarray to numerix. JTM +2004-05-05 + Added a Matrix capability for numarray to numerix. JTM -2004-05-04 Updated whats_new.html.template to use dictionary and - template loop, added anchors for all versions and items; - updated goals.txt to use those for links. PG +2004-05-04 + Updated whats_new.html.template to use dictionary and template loop, added + anchors for all versions and items; updated goals.txt to use those for + links. PG -2004-05-04 Added fonts_demo.py to backend_driver, and AFM and TTF font - caches to font_manager.py - PEB +2004-05-04 + Added fonts_demo.py to backend_driver, and AFM and TTF font caches to + font_manager.py - PEB -2004-05-03 Redid goals.html.template to use a goals.txt file that - has a pseudo restructured text organization. PG +2004-05-03 + Redid goals.html.template to use a goals.txt file that has a pseudo + restructured text organization. PG -2004-05-03 Removed the close buttons on all GUIs and added the python - #! bang line to the examples following Steve Chaplin's - advice on matplotlib dev +2004-05-03 + Removed the close buttons on all GUIs and added the python #! bang line to + the examples following Steve Chaplin's advice on matplotlib dev -2004-04-29 Added CXX and rewrote backend_agg using it; tracked down - and fixed agg memory leak - JDH +2004-04-29 + Added CXX and rewrote backend_agg using it; tracked down and fixed agg + memory leak - JDH -2004-04-29 Added stem plot command - JDH +2004-04-29 + Added stem plot command - JDH -2004-04-28 Fixed PS scaling and centering bug - JDH +2004-04-28 + Fixed PS scaling and centering bug - JDH -2004-04-26 Fixed errorbar autoscale problem - JDH +2004-04-26 + Fixed errorbar autoscale problem - JDH -2004-04-22 Fixed copy tick attribute bug, fixed singular datalim - ticker bug; fixed mathtext fontsize interactive bug. - JDH +2004-04-22 + Fixed copy tick attribute bug, fixed singular datalim ticker bug; fixed + mathtext fontsize interactive bug. - JDH -2004-04-21 Added calls to draw_if_interactive to axes(), legend(), - and pcolor(). Deleted duplicate pcolor(). - JTM +2004-04-21 + Added calls to draw_if_interactive to axes(), legend(), and pcolor(). + Deleted duplicate pcolor(). - JTM ------------------------------------------------------------ -2004-04-21 matplotlib 0.53 release +2004-04-21 + matplotlib 0.53 release -2004-04-19 Fixed vertical alignment bug in PS backend - JDH +2004-04-19 + Fixed vertical alignment bug in PS backend - JDH -2004-04-17 Added support for two scales on the "same axes" with tick - different ticking and labeling left right or top bottom. - See examples/two_scales.py - JDH +2004-04-17 + Added support for two scales on the "same axes" with tick different ticking + and labeling left right or top bottom. See examples/two_scales.py - JDH -2004-04-17 Added default dirs as list rather than single dir in - setupext.py - JDH +2004-04-17 + Added default dirs as list rather than single dir in setupext.py - JDH -2004-04-16 Fixed wx exception swallowing bug (and there was much - rejoicing!) - JDH +2004-04-16 + Fixed wx exception swallowing bug (and there was much rejoicing!) - JDH -2004-04-16 Added new ticker locator a formatter, fixed default font - return - JDH +2004-04-16 + Added new ticker locator a formatter, fixed default font return - JDH -2004-04-16 Added get_name method to FontProperties class. Fixed font lookup - in GTK and WX backends. - PEB +2004-04-16 + Added get_name method to FontProperties class. Fixed font lookup in GTK and + WX backends. - PEB -2004-04-16 Added get- and set_fontstyle msethods. - PEB +2004-04-16 + Added get- and set_fontstyle msethods. - PEB -2004-04-10 Mathtext fixes: scaling with dpi, - JDH +2004-04-10 + Mathtext fixes: scaling with dpi, - JDH -2004-04-09 Improved font detection algorithm. - PEB +2004-04-09 + Improved font detection algorithm. - PEB -2004-04-09 Move deprecation warnings from text.py to __init__.py - PEB +2004-04-09 + Move deprecation warnings from text.py to __init__.py - PEB -2004-04-09 Added default font customization - JDH +2004-04-09 + Added default font customization - JDH -2004-04-08 Fixed viewlim set problem on axes and axis. - JDH +2004-04-08 + Fixed viewlim set problem on axes and axis. - JDH -2004-04-07 Added validate_comma_sep_str and font properties parameters to - __init__. Removed font families and added rcParams to - FontProperties __init__ arguments in font_manager. Added - default font property parameters to .matplotlibrc file with - descriptions. Added deprecation warnings to the get\_ - and - set_fontXXX methods of the Text object. - PEB +2004-04-07 + Added validate_comma_sep_str and font properties parameters to __init__. + Removed font families and added rcParams to FontProperties __init__ + arguments in font_manager. Added default font property parameters to + .matplotlibrc file with descriptions. Added deprecation warnings to the + get\_ - and set_fontXXX methods of the Text object. - PEB -2004-04-06 Added load and save commands for ASCII data - JDH +2004-04-06 + Added load and save commands for ASCII data - JDH -2004-04-05 Improved font caching by not reading AFM fonts until needed. - Added better documentation. Changed the behaviour of the - get_family, set_family, and set_name methods of FontProperties. - - PEB +2004-04-05 + Improved font caching by not reading AFM fonts until needed. Added better + documentation. Changed the behaviour of the get_family, set_family, and + set_name methods of FontProperties. - PEB -2004-04-05 Added WXAgg backend - JDH +2004-04-05 + Added WXAgg backend - JDH -2004-04-04 Improved font caching in backend_agg with changes to - font_manager - JDH +2004-04-04 + Improved font caching in backend_agg with changes to font_manager - JDH -2004-03-29 Fixed fontdicts and kwargs to work with new font manager - - JDH +2004-03-29 + Fixed fontdicts and kwargs to work with new font manager - JDH -------------------------------------------- This is the Old, stale, never used changelog -2002-12-10 - Added a TODO file and CHANGELOG. Lots to do -- get - crackin'! +2002-12-10 + - Added a TODO file and CHANGELOG. Lots to do -- get crackin'! - - Fixed y zoom tool bug + - Fixed y zoom tool bug - - Adopted a compromise fix for the y data clipping problem. - The problem was that for solid lines, the y data clipping - (as opposed to the gc clipping) caused artifactual - horizontal solid lines near the ylim boundaries. I did a - 5% offset hack in Axes set_ylim functions which helped, - but didn't cure the problem for very high gain y zooms. - So I disabled y data clipping for connected lines . If - you need extensive y clipping, either plot(y,x) because x - data clipping is always enabled, or change the _set_clip - code to 'if 1' as indicated in the lines.py src. See - _set_clip in lines.py and set_ylim in figure.py for more - information. + - Adopted a compromise fix for the y data clipping problem. The problem + was that for solid lines, the y data clipping (as opposed to the gc + clipping) caused artifactual horizontal solid lines near the ylim + boundaries. I did a 5% offset hack in Axes set_ylim functions which + helped, but didn't cure the problem for very high gain y zooms. So I + disabled y data clipping for connected lines . If you need extensive y + clipping, either plot(y,x) because x data clipping is always enabled, or + change the _set_clip code to 'if 1' as indicated in the lines.py src. + See _set_clip in lines.py and set_ylim in figure.py for more information. +2002-12-11 + - Added a measurement dialog to the figure window to measure axes position + and the delta x delta y with a left mouse drag. These defaults can be + overridden by deriving from Figure and overriding button_press_event, + button_release_event, and motion_notify_event, and _dialog_measure_tool. -2002-12-11 - Added a measurement dialog to the figure window to - measure axes position and the delta x delta y with a left - mouse drag. These defaults can be overridden by deriving - from Figure and overriding button_press_event, - button_release_event, and motion_notify_event, - and _dialog_measure_tool. + - fixed the navigation dialog so you can check the axes the navigation + buttons apply to. - - fixed the navigation dialog so you can check the axes the - navigation buttons apply to. +2003-04-23 + Released matplotlib v0.1 +2003-04-24 + Added a new line style PixelLine2D which is the plots the markers as pixels + (as small as possible) with format symbol ',' + Added a new class Patch with derived classes Rectangle, RegularPolygon and + Circle -2003-04-23 Released matplotlib v0.1 - -2003-04-24 Added a new line style PixelLine2D which is the plots the - markers as pixels (as small as possible) with format - symbol ',' - - Added a new class Patch with derived classes Rectangle, - RegularPolygon and Circle - -2003-04-25 Implemented new functions errorbar, scatter and hist - - Added a new line type '|' which is a vline. syntax is - plot(x, Y, '|') where y.shape = len(x),2 and each row gives - the ymin,ymax for the respective values of x. Previously I - had implemented vlines as a list of lines, but I needed the - efficientcy of the numeric clipping for large numbers of - vlines outside the viewport, so I wrote a dedicated class - Vline2D which derives from Line2D +2003-04-25 + Implemented new functions errorbar, scatter and hist + Added a new line type '|' which is a vline. syntax is plot(x, Y, '|') + where y.shape = len(x),2 and each row gives the ymin,ymax for the + respective values of x. Previously I had implemented vlines as a list of + lines, but I needed the efficientcy of the numeric clipping for large + numbers of vlines outside the viewport, so I wrote a dedicated class + Vline2D which derives from Line2D 2003-05-01 - - Fixed ytick bug where grid and tick show outside axis viewport with gc clip + Fixed ytick bug where grid and tick show outside axis viewport with gc clip 2003-05-14 - - Added new ways to specify colors 1) matlab format string 2) - html-style hex string, 3) rgb tuple. See examples/color_demo.py + Added new ways to specify colors 1) matlab format string 2) html-style hex + string, 3) rgb tuple. See examples/color_demo.py 2003-05-28 - - Changed figure rendering to draw form a pixmap to reduce flicker. - See examples/system_monitor.py for an example where the plot is - continusouly updated w/o flicker. This example is meant to - simulate a system monitor that shows free CPU, RAM, etc... + Changed figure rendering to draw form a pixmap to reduce flicker. See + examples/system_monitor.py for an example where the plot is continusouly + updated w/o flicker. This example is meant to simulate a system monitor + that shows free CPU, RAM, etc... 2003-08-04 - - Added Jon Anderson's GTK shell, which doesn't require pygtk to - have threading built-in and looks nice! + Added Jon Anderson's GTK shell, which doesn't require pygtk to have + threading built-in and looks nice! 2003-08-25 - - Fixed deprecation warnings for python2.3 and pygtk-1.99.18 + Fixed deprecation warnings for python2.3 and pygtk-1.99.18 2003-08-26 - - Added figure text with new example examples/figtext.py - + Added figure text with new example examples/figtext.py 2003-08-27 + Fixed bugs i figure text with font override dictionairies and fig text that + was placed outside the window bounding box - Fixed bugs i figure text with font override dictionairies and fig - text that was placed outside the window bounding box - -2003-09-1 through 2003-09-15 - - Added a postscript and a GD module backend +2003-09-01 through 2003-09-15 + Added a postscript and a GD module backend 2003-09-16 - - Fixed font scaling and point scaling so circles, squares, etc on - lines will scale with DPI as will fonts. Font scaling is not fully - implemented on the gtk backend because I have not figured out how - to scale fonts to arbitrary sizes with GTK + Fixed font scaling and point scaling so circles, squares, etc on lines will + scale with DPI as will fonts. Font scaling is not fully implemented on the + gtk backend because I have not figured out how to scale fonts to arbitrary + sizes with GTK 2003-09-17 + Fixed figure text bug which crashed X windows on long figure text extending + beyond display area. This was, I believe, due to the vestigial erase + functionality that was no longer needed since I began rendering to a pixmap - Fixed figure text bug which crashed X windows on long figure text - extending beyond display area. This was, I believe, due to the - vestigial erase functionality that was no longer needed since I - began rendering to a pixmap - -2003-09-30 Added legend +2003-09-30 + Added legend -2003-10-01 Fixed bug when colors are specified with rgb tuple or hex - string. +2003-10-01 + Fixed bug when colors are specified with rgb tuple or hex string. +2003-10-21 + Andrew Straw provided some legend code which I modified and incorporated. + Thanks Andrew! -2003-10-21 Andrew Straw provided some legend code which I modified - and incorporated. Thanks Andrew! +2003-10-27 + Fixed a bug in axis.get_view_distance that affected zoom in versus out with + interactive scrolling, and a bug in the axis text reset system that + prevented the text from being redrawn on a interactive gtk view lim set + with the widget -2003-10-27 Fixed a bug in axis.get_view_distance that affected zoom in - versus out with interactive scrolling, and a bug in the axis text - reset system that prevented the text from being redrawn on a - interactive gtk view lim set with the widget + Fixed a bug in that prevented the manual setting of ticklabel strings from + working properly - Fixed a bug in that prevented the manual setting of ticklabel - strings from working properly - -2003-11-02 - Do a nearest neighbor color pick on GD when - allocate fails +2003-11-02 + - Do a nearest neighbor color pick on GD when allocate fails 2003-11-02 - - Added pcolor plot - - Added MRI example - - Fixed bug that screwed up label position if xticks or yticks were - empty - - added nearest neighbor color picker when GD max colors exceeded - - fixed figure background color bug in GD backend + - Added pcolor plot + - Added MRI example + - Fixed bug that screwed up label position if xticks or yticks were empty + - added nearest neighbor color picker when GD max colors exceeded + - fixed figure background color bug in GD backend 2003-11-10 - 2003-11-11 - - major refactoring. - - * Ticks (with labels, lines and grid) handled by dedicated class - * Artist now know bounding box and dpi - * Bounding boxes and transforms handled by dedicated classes - * legend in dedicated class. Does a better job of alignment and - bordering. Can be initialized with specific line instances. - See examples/legend_demo2.py - - -2003-11-14 Fixed legend positioning bug and added new position args + major refactoring. -2003-11-16 Finished porting GD to new axes API + * Ticks (with labels, lines and grid) handled by dedicated class + * Artist now know bounding box and dpi + * Bounding boxes and transforms handled by dedicated classes + * legend in dedicated class. Does a better job of alignment and bordering. + Can be initialized with specific line instances. See + examples/legend_demo2.py +2003-11-14 + Fixed legend positioning bug and added new position args -2003-11-20 - add TM for matlab on website and in docs +2003-11-16 + Finished porting GD to new axes API +2003-11-20 + - add TM for matlab on website and in docs -2003-11-20 - make a nice errorbar and scatter screenshot +2003-11-20 + - make a nice errorbar and scatter screenshot -2003-11-20 - auto line style cycling for multiple line types - broken +2003-11-20 + - auto line style cycling for multiple line types broken -2003-11-18 (using inkrect) :logical rect too big on gtk backend +2003-11-18 + (using inkrect) :logical rect too big on gtk backend -2003-11-18 ticks don't reach edge of axes in gtk mode -- - rounding error? +2003-11-18 + ticks don't reach edge of axes in gtk mode -- rounding error? -2003-11-20 - port Gary's errorbar code to new API before 0.40 +2003-11-20 + - port Gary's errorbar code to new API before 0.40 -2003-11-20 - problem with stale _set_font. legend axes box - doesn't resize on save in GTK backend -- see htdocs legend_demo.py +2003-11-20 + - problem with stale _set_font. legend axes box doesn't resize on save in + GTK backend -- see htdocs legend_demo.py -2003-11-21 - make a dash-dot dict for the GC +2003-11-21 + - make a dash-dot dict for the GC -2003-12-15 - fix install path bug +2003-12-15 + - fix install path bug diff --git a/doc/users/prev_whats_new/github_stats_3.0.0.rst b/doc/users/prev_whats_new/github_stats_3.0.0.rst new file mode 100644 index 000000000000..ab90e5e79e4e --- /dev/null +++ b/doc/users/prev_whats_new/github_stats_3.0.0.rst @@ -0,0 +1,1221 @@ +.. _github-stats-3-0-0: + +GitHub statistics for 3.0.0 (Sep 18, 2018) +========================================== + +GitHub statistics for 2017/01/17 (tag: v2.0.0) - 2018/09/18 + +These lists are automatically generated, and may be incomplete or contain duplicates. + +We closed 123 issues and merged 598 pull requests. +The full list can be seen `on GitHub `__ + +The following 478 authors contributed 9809 commits. + +* 816-8055 +* Aashil Patel +* AbdealiJK +* Adam +* Adam Williamson +* Adrian Price-Whelan +* Adrien Chardon +* Adrien F. Vincent +* ahed87 +* akrherz +* Akshay Nair +* Alan Bernstein +* Alberto +* alcinos +* Aleksey Bilogur +* Alex Rothberg +* Alexander Buchkovsky +* Alexander Harnisch +* AlexCav +* Alexis Bienvenüe +* Ali Uneri +* Allan Haldane +* Allen Downey +* Alvaro Sanchez +* alvarosg +* AndersonDaniel +* Andras Deak +* Andreas Gustafsson +* Andreas Hilboll +* Andreas Mayer +* Andreas Mueller +* Andrew Nelson +* Andy Mastbaum +* aneda +* Anthony Scopatz +* Anton Akhmerov +* Antony Lee +* aparamon +* apodemus +* Arthur Paulino +* Arvind +* as691454 +* ash13 +* Atharva Khare +* Avinash Sharma +* Bastian Bechtold +* bduick +* Ben +* Ben Root +* Benedikt Daurer +* Benjamin Berg +* Benjamin Congdon +* Bernhard M. Wiedemann +* BHT +* Bianca Gibson +* Björn Dahlgren +* Blaise Thompson +* Boaz Mohar +* Brendan Zhang +* Brennan Magee +* Bruno Zohreh +* BTWS +* buefox +* Cameron Davidson-Pilon +* Cameron Fackler +* cclauss +* ch3rn0v +* Charles Ruan +* chelseatroy +* Chen Karako +* Chris Holdgraf +* Christoph Deil +* Christoph Gohlke +* Cimarron Mittelsteadt +* CJ Carey +* cknd +* cldssty +* clintval +* Cody Scot +* Colin +* Conner R. Phillips +* Craig Citro +* DaCoEx +* dahlbaek +* Dakota Blair +* Damian +* Dan Hickstein +* Dana +* Daniel C. Marcu +* Daniel Laidig +* danielballan +* Danny Hermes +* daronjp +* DaveL17 +* David A +* David Brooks +* David Kent +* David Stansby +* deeenes +* deepyaman +* Derek Kim +* Derek Tropf +* Devashish Deshpande +* Diego Mora Cespedes +* Dietmar Schwertberger +* Dietrich Brunn +* Divyam Madaan +* dlmccaffrey +* Dmitry Shachnev +* Dora Fraeman +* DoriekeMG +* Dorota Jarecka +* Doug Blank +* Drew J. Sonne +* Duncan Macleod +* Dylan Evans +* E. G. Patrick Bos +* Egor Panfilov +* Elijah Schutz +* Elizabeth Seiver +* Elliott Sales de Andrade +* Elvis Stansvik +* Emlyn Price +* endolith +* Eric Dill +* Eric Firing +* Eric Galloway +* Eric Larson +* Eric Wang (Mac) +* Eric Wieser +* Erik M. Bray +* Erin Pintozzi +* et2010 +* Ethan Ligon +* Eugene Yurtsev +* Fabian Kloosterman +* Fabian-Robert Stöter +* FedeMiorelli +* Federico Ariza +* Felix +* Felix Kohlgrüber +* Felix Yan +* Filip Dimitrovski +* Florencia Noriega +* Florian Le Bourdais +* Franco Vaccari +* Francoise Provencher +* Frank Yu +* fredrik-1 +* fuzzythecat +* Gabe +* Gabriel Munteanu +* Gauravjeet +* Gaute Hope +* gcallah +* Geoffrey Spear +* gnaggnoyil +* goldstarwebs +* Graeme Smecher +* greg-roper +* gregorybchris +* Grillard +* Guillermo Breto +* Gustavo Goretkin +* Hajoon Choi +* Hakan Kucukdereli +* hannah +* Hans Moritz Günther +* Harnesser +* Harshal Prakash Patankar +* Harshit Patni +* Hassan Kibirige +* Hastings Greer +* Heath Henley +* Heiko Oberdiek +* Helder +* helmiriawan +* Henning Pohl +* Herbert Kruitbosch +* HHest +* Hubert Holin +* Ian Thomas +* Ida Hjorth +* Ildar Akhmetgaleev +* ilivni +* Ilya Flyamer +* ImportanceOfBeingErnest +* ImSoErgodic +* Isa Hassen +* Isaac Schwabacher +* Isaac Slavitt +* Ismo Toijala +* J Alammar +* J. Goutin +* Jaap Versteegh +* Jacob McDonald +* jacob-on-github +* Jae-Joon Lee +* Jake Vanderplas +* James A. Bednar +* Jamie Nunez +* Jan Koehler +* Jan Schlüter +* Jan Schulz +* Jarrod Millman +* Jason King +* Jason Neal +* Jason Zheng +* jbhopkins +* jdollichon +* Jeffrey Hokanson @ Loki +* JelsB +* Jens Hedegaard Nielsen +* Jerry Lui +* jerrylui803 +* jhelie +* jli +* Jody Klymak +* joelostblom +* Johannes Wienke +* John Hoffman +* John Vandenberg +* Johnny Gill +* JojoBoulix +* jonchar +* Joseph Albert +* Joseph Fox-Rabinovitz +* Joseph Jon Booker +* Joseph Martinot-Lagarde +* Jouni K. Seppänen +* Juan Nunez-Iglesias +* Julia Sprenger +* Julian Mehne +* Julian V. Modesto +* Julien Lhermitte +* Julien Schueller +* Jun Tan +* Justin Cai +* Jörg Dietrich +* Kacper Kowalik (Xarthisius) +* Kanchana Ranasinghe +* Katrin Leinweber +* Keerysanth Sribaskaran +* keithbriggs +* Kenneth Ma +* Kevin Davies +* Kevin Ji +* Kevin Keating +* Kevin Rose +* Kexuan Sun +* khyox +* Kieran Ramos +* Kjartan Myrdal +* Kjell Le +* Klara Gerlei +* klaus +* klonuo +* Kristen M. Thyng +* kshramt +* Kyle Bridgemohansingh +* Kyle Sunden +* Kyler Brown +* Laptop11_ASPP2016 +* lboogaard +* legitz7 +* Leo Singer +* Leon Yin +* Levi Kilcher +* Liam Brannigan +* Lionel Miller +* lspvic +* Luca Verginer +* Luis Pedro Coelho +* luz.paz +* lzkelley +* Maarten Baert +* Magnus Nord +* mamrehn +* Manish Devgan +* Manuel Jung +* Mark Harfouche +* Martin Fitzpatrick +* Martin Spacek +* Massimo Santini +* Matt Hancock +* Matt Newville +* Matthew Bell +* Matthew Brett +* Matthias Bussonnier +* Matthias Lüthi +* Matti Picus +* Maximilian Albert +* Maximilian Maahn +* Maximilian Nöthe +* mcquin +* Mher Kazandjian +* Michael Droettboom +* Michael Scott Cuthbert +* Michael Seifert +* Michiel de Hoon +* Mike Henninger +* Mike Jarvis +* MinRK +* Mitar +* mitch +* mlub +* mobando +* Molly Rossow +* Moritz Boehle +* muahah +* Mudit Surana +* myyc +* Naoya Kanai +* Nathan Goldbaum +* Nathan Musoke +* Nathaniel M. Beaver +* navdeep rana +* nbrunett +* Nelle Varoquaux +* nemanja +* neok-m4700 +* nepix32 +* Nick Forrington +* Nick Garvey +* Nick Papior +* Nico Schlömer +* Nicolas P. Rougier +* Nicolas Tessore +* Nik Quibin +* Nikita Kniazev +* Nils Werner +* Ninad Bhat +* nmartensen +* Norman Fomferra +* ob +* OceanWolf +* Olivier +* Orso Meneghini +* Osarumwense +* Pankaj Pandey +* Paramonov Andrey +* Pastafarianist +* Paul Ganssle +* Paul Hobson +* Paul Ivanov +* Paul Kirow +* Paul Romano +* Paul Seyfert +* Pavol Juhas +* pdubcali +* Pete Huang +* Pete Peterson +* Peter Mackenzie-Helnwein +* Peter Mortensen +* Peter Würtz +* Petr Danecek +* pharshalp +* Phil Elson +* Phil Ruffwind +* Pierre de Buyl +* Pierre Haessig +* Pranav Garg +* productivememberofsociety666 +* Przemysław Dąbek +* Qingpeng "Q.P." Zhang +* RAKOTOARISON Herilalaina +* Ramiro Gómez +* Randy Olson +* rebot +* Richard Gowers +* Rishikesh +* Rob Harrigan +* Robin Dunn +* Robin Neatherway +* Robin Wilson +* Ronald Hartley-Davies +* Roy Smith +* Rui Lopes +* ruin +* rvhbooth +* Ryan +* Ryan May +* Ryan Morshead +* RyanPan +* s0vereign +* Saket Choudhary +* Salganos +* Salil Vanvari +* Salinder Sidhu +* Sam Vaughan +* Samson +* Samuel St-Jean +* Sander +* scls19fr +* Scott Howard +* Scott Lasley +* scott-vsi +* Sean Farley +* Sebastian Raschka +* Sebastián Vanrell +* Seraphim Alvanides +* Sergey B Kirpichev +* serv-inc +* settheory +* shaunwbell +* Simon Gibbons +* simonpf +* sindunuragarp +* Sourav Singh +* Stefan Pfenninger +* Stephan Erb +* Sterling Smith +* Steven Silvester +* Steven Tilley +* stone +* stonebig +* Tadeo Corradi +* Taehoon Lee +* Tanuj +* Taras +* Taras Kuzyo +* TD22057 +* Ted Petrou +* terranjp +* Terrence J. Katzenbaer +* Terrence Katzenbaer +* The Gitter Badger +* Thomas A Caswell +* Thomas Hisch +* Thomas Levine +* Thomas Mansencal +* Thomas Robitaille +* Thomas Spura +* Thomas VINCENT +* Thorsten Liebig +* thuvejan +* Tian Xia +* Till Stensitzki +* Tim Hoffmann +* tmdavison +* Tobias Froehlich +* Tobias Megies +* Tom +* Tom Augspurger +* Tom Dupré la Tour +* tomoemon +* tonyyli +* Trish Gillett-Kawamoto +* Truong Pham +* Tuan Dung Tran +* u55 +* ultra-andy +* V. R +* vab9 +* Valentin Schmidt +* Vedant Nanda +* Vidur Satija +* vraelvrangr +* Víctor Zabalza +* WANG Aiyong +* Warren Weckesser +* watkinrt +* Wieland Hoffmann +* Will Silva +* William Granados +* William Mallard +* Xufeng Wang +* y1thof +* Yao-Yuan Mao +* Yuval Langer +* Zac Hatfield-Dodds +* Zbigniew Jędrzejewski-Szmek +* zhangeugenia +* ZhaoZhonglun1991 +* zhoubecky +* ZWL +* Élie Gouzien +* Андрей Парамонов + +GitHub issues and pull requests: + +Pull Requests (598): + +* :ghpull:`12145`: Doc final 3.0 docs +* :ghpull:`12143`: Backport PR #12142 on branch v3.0.x (Unbreak formlayout for image edits.) +* :ghpull:`12142`: Unbreak formlayout for image edits. +* :ghpull:`12135`: Backport PR #12131 on branch v3.0.x (Fixes currently release version of cartopy) +* :ghpull:`12131`: Fixes currently release version of cartopy +* :ghpull:`12129`: Backports for 3.0 +* :ghpull:`12132`: Backport PR #12130 on branch v3.0.x (Mention colorbar.minorticks_on/off in references) +* :ghpull:`12130`: Mention colorbar.minorticks_on/off in references +* :ghpull:`12099`: FIX: make sure all ticks show up for colorbar minor tick +* :ghpull:`11962`: Propagate changes to backend loading to setup/setupext. +* :ghpull:`12128`: Unbreak the Sphinx 1.8 build by renaming :math: to :mathmpl:. +* :ghpull:`12126`: Backport PR #12117 on branch v3.0.x (Fix Agg extent calculations for empty draws) +* :ghpull:`12113`: Backport PR #12112 on branch v3.0.x (Reword the LockDraw docstring.) +* :ghpull:`12112`: Reword the LockDraw docstring. +* :ghpull:`12110`: Backport PR #12109 on branch v3.0.x (Pin to sphinx<1.8; unremove sphinxext.mathmpl.) +* :ghpull:`12084`: DOC: link palettable +* :ghpull:`12096`: Backport PR #12092 on branch v3.0.x (Update backend_qt5agg to fix PySide2 mem issues) +* :ghpull:`12083`: Backport PR #12012 on branch v3.0.x (FIX: fallback text renderer to fig._cachedRenderer, if none found) +* :ghpull:`12081`: Backport PR #12037 on branch v3.0.x (Fix ArtistInspector.get_aliases.) +* :ghpull:`12080`: Backport PR #12053 on branch v3.0.x (Fix up some OSX backend issues) +* :ghpull:`12037`: Fix ArtistInspector.get_aliases. +* :ghpull:`12053`: Fix up some OSX backend issues +* :ghpull:`12064`: Backport PR #11971 on branch v3.0.x (FIX: use cached renderer on Legend.get_window_extent) +* :ghpull:`12063`: Backport PR #12036 on branch v3.0.x (Interactive tests update) +* :ghpull:`11928`: Update doc/conf.py to avoid warnings with (future) sphinx 1.8. +* :ghpull:`12048`: Backport PR #12047 on branch v3.0.x (Remove asserting about current backend at the end of mpl_test_settings.) +* :ghpull:`11971`: FIX: use cached renderer on Legend.get_window_extent +* :ghpull:`12036`: Interactive tests update +* :ghpull:`12029`: Backport PR #12022 on branch v3.0.x (Remove intent to deprecate rcParams["backend_fallback"].) +* :ghpull:`12047`: Remove asserting about current backend at the end of mpl_test_settings. +* :ghpull:`12020`: Backport PR #12019 on branch v3.0.x (typo: s/unmultipled/unmultiplied) +* :ghpull:`12022`: Remove intent to deprecate rcParams["backend_fallback"]. +* :ghpull:`12028`: Backport PR #12023 on branch v3.0.x (Fix deprecation check in wx Timer.) +* :ghpull:`12023`: Fix deprecation check in wx Timer. +* :ghpull:`12019`: typo: s/unmultipled/unmultiplied +* :ghpull:`12017`: Backport PR #12016 on branch v3.0.x (Fix AttributeError in GTK3Agg backend) +* :ghpull:`12016`: Fix AttributeError in GTK3Agg backend +* :ghpull:`11991`: Backport PR #11988 on branch v3.0.x +* :ghpull:`11978`: Backport PR #11973 on branch v3.0.x +* :ghpull:`11968`: Backport PR #11963 on branch v3.0.x +* :ghpull:`11967`: Backport PR #11961 on branch v3.0.x +* :ghpull:`11969`: Fix an invalid escape sequence. +* :ghpull:`11963`: Fix some lgtm convention alerts +* :ghpull:`11961`: Downgrade backend_version log to DEBUG level. +* :ghpull:`11953`: Backport PR #11896 on branch v3.0.x +* :ghpull:`11896`: Resolve backend in rcParams.__getitem__("backend"). +* :ghpull:`11950`: Backport PR #11934 on branch v3.0.x +* :ghpull:`11952`: Backport PR #11949 on branch v3.0.x +* :ghpull:`11949`: Remove test2.png from examples. +* :ghpull:`11934`: Suppress the "non-GUI backend" warning from the .. plot:: directive... +* :ghpull:`11918`: Backport PR #11917 on branch v3.0.x +* :ghpull:`11916`: Backport PR #11897 on branch v3.0.x +* :ghpull:`11915`: Backport PR #11591 on branch v3.0.x +* :ghpull:`11897`: HTMLWriter, put initialisation of frames in setup +* :ghpull:`11591`: BUG: correct the scaling in the floating-point slop test. +* :ghpull:`11910`: Backport PR #11907 on branch v3.0.x +* :ghpull:`11907`: Move TOC back to top in axes documentation +* :ghpull:`11904`: Backport PR #11900 on branch v3.0.x +* :ghpull:`11900`: Allow args to pass through _allow_super_init +* :ghpull:`11889`: Backport PR #11847 on branch v3.0.x +* :ghpull:`11890`: Backport PR #11850 on branch v3.0.x +* :ghpull:`11850`: FIX: macosx framework check +* :ghpull:`11883`: Backport PR #11862 on branch v3.0.x +* :ghpull:`11882`: Backport PR #11876 on branch v3.0.x +* :ghpull:`11876`: MAINT Better error message for number of colors versus number of data… +* :ghpull:`11862`: Fix NumPy FutureWarning for non-tuple indexing. +* :ghpull:`11845`: Use Format_ARGB32_Premultiplied instead of RGBA8888 for Qt backends. +* :ghpull:`11843`: Remove unnecessary use of nose. +* :ghpull:`11600`: backend switching -- don't create a public fallback API +* :ghpull:`11833`: adding show inheritance to autosummary template +* :ghpull:`11828`: changed warning in animation +* :ghpull:`11829`: func animation warning changes +* :ghpull:`11826`: DOC documented more of the gridspec options +* :ghpull:`11818`: Merge v2.2.x +* :ghpull:`11821`: DOC: remove multicolumns from examples +* :ghpull:`11819`: DOC: fix minor typo in figure example +* :ghpull:`11722`: Remove unnecessary hacks from setup.py. +* :ghpull:`11802`: gridspec tutorial edits +* :ghpull:`11801`: update annotations +* :ghpull:`11734`: Small cleanups to backend_agg. +* :ghpull:`11785`: Add missing API changes +* :ghpull:`11788`: Fix DeprecationWarning on LocatableAxes +* :ghpull:`11558`: Added xkcd Style for Markers (plot only) +* :ghpull:`11755`: Add description for metadata argument of savefig +* :ghpull:`11703`: FIX: make update-from also set the original face/edgecolor +* :ghpull:`11765`: DOC: reorder examples and fix top level heading +* :ghpull:`11724`: Fix cairo's image inversion and alpha misapplication. +* :ghpull:`11726`: Consolidate agg-buffer examples. +* :ghpull:`11754`: FIX: update spine positions before get extents +* :ghpull:`11779`: Remove unused attribute in tests. +* :ghpull:`11770`: Correct errors in documentation +* :ghpull:`11778`: Unpin pandas in the CI. +* :ghpull:`11772`: Clarifying an error message +* :ghpull:`11760`: Switch grid documentation to numpydoc style +* :ghpull:`11705`: Suppress/fix some test warnings. +* :ghpull:`11763`: Pin OSX CI to numpy<1.15 to unbreak the build. +* :ghpull:`11767`: Add tolerance to csd frequency test +* :ghpull:`11757`: PGF backend output text color even if black +* :ghpull:`11751`: Remove the unused 'verbose' option from setupext. +* :ghpull:`9084`: Require calling a _BoundMethodProxy to get the underlying callable. +* :ghpull:`11752`: Fix section level of Previous Whats New +* :ghpull:`10513`: Replace most uses of getfilesystemencoding by os.fs{en,de}code. +* :ghpull:`11739`: fix tight_layout bug #11737 +* :ghpull:`11744`: minor doc update on axes_grid1's inset_axes +* :ghpull:`11729`: Pass 'figure' as kwarg to FigureCanvasQt5Agg super __init__. +* :ghpull:`11736`: Remove unused needs_sphinx marker; move importorskip to toplevel. +* :ghpull:`11731`: Directly get the size of the renderer buffer from the renderer. +* :ghpull:`11717`: DOC: fix broken link in inset-locator example +* :ghpull:`11723`: Start work on making colormaps picklable. +* :ghpull:`11721`: Remove some references to colorConverter. +* :ghpull:`11713`: Don't assume cwd in test_ipynb. +* :ghpull:`11026`: ENH add an inset_axes to the axes class +* :ghpull:`11712`: Fix drawing on qt+retina. +* :ghpull:`11714`: docstring for Figure.tight_layout don't include renderer parameter +* :ghpull:`8951`: Let QPaintEvent tell us what region to repaint. +* :ghpull:`11234`: Add fig.add_artist method +* :ghpull:`11706`: Remove unused private method. +* :ghpull:`11637`: Split API changes into individual pages +* :ghpull:`10403`: Deprecate LocatableAxes from toolkits +* :ghpull:`11699`: Dedent overindented rst bullet lists. +* :ghpull:`11701`: Use skipif instead of xfail when test dependencies are missing. +* :ghpull:`11700`: Don't use pytest -rw now that pytest-warnings is builtin. +* :ghpull:`11696`: Don't force backend in toolmanager example. +* :ghpull:`11690`: Avoid using private APIs in examples. +* :ghpull:`11684`: Style +* :ghpull:`11666`: TESTS: Increase tolerance for aarch64 tests +* :ghpull:`11680`: Boring style fixes. +* :ghpull:`11678`: Use super() instead of manually fetching supermethods for parasite axes. +* :ghpull:`11679`: Remove pointless draw() at the end of static examples. +* :ghpull:`11676`: Remove unused C++ code. +* :ghpull:`11010`: ENH: Add gridspec method to figure, and subplotspecs +* :ghpull:`11672`: Add comment re: use of lru_cache in PsfontsMap. +* :ghpull:`11674`: Boring style fixes. +* :ghpull:`10954`: Cache various dviread constructs globally. +* :ghpull:`9150`: Don't update style-blacklisted rcparams in rc_* functions +* :ghpull:`10936`: Simplify tkagg C extension. +* :ghpull:`11378`: SVG Backend gouraud_triangle Correction +* :ghpull:`11383`: FIX: Improve *c* (color) kwarg checking in scatter and the related exceptions +* :ghpull:`11627`: FIX: CL avoid fully collapsed axes +* :ghpull:`11504`: Bump pgi requirement to 0.0.11.2. +* :ghpull:`11640`: Fix barplot color if none and alpha is set +* :ghpull:`11443`: changed paths in kwdocs +* :ghpull:`11626`: Minor docstring fixes +* :ghpull:`11631`: DOC: better tight_layout error handling +* :ghpull:`11651`: Remove unused imports in examples +* :ghpull:`11633`: Clean up next api_changes +* :ghpull:`11643`: Fix deprecation messages. +* :ghpull:`9223`: Set norm to log if bins=='log' in hexbin +* :ghpull:`11622`: FIX: be forgiving about the event for enterEvent not having a pos +* :ghpull:`11581`: backend switching. +* :ghpull:`11616`: Fix some doctest issues +* :ghpull:`10872`: Cleanup _plot_args_replacer logic +* :ghpull:`11617`: Clean up what's new +* :ghpull:`11610`: FIX: let colorbar extends work for PowerNorm +* :ghpull:`11615`: Revert glyph warnings +* :ghpull:`11614`: CI: don't run tox to test pytz +* :ghpull:`11603`: Doc merge up +* :ghpull:`11613`: Make flake8 exceptions explicit +* :ghpull:`11611`: Fix css for parameter types +* :ghpull:`10001`: MAINT/BUG: Don't use 5-sided quadrilaterals in Axes3D.plot_surface +* :ghpull:`10234`: PowerNorm: do not clip negative values +* :ghpull:`11398`: Simplify retrieval of cache and config directories +* :ghpull:`10682`: ENH have ax.get_tightbbox have a bbox around all artists attached to axes. +* :ghpull:`11590`: Don't associate Wx timers with the parent frame. +* :ghpull:`10245`: Cache paths of fonts shipped with mpl relative to the mpl data path. +* :ghpull:`11381`: Deprecate text.latex.unicode. +* :ghpull:`11601`: FIX: subplots don't mutate kwargs passed by user. +* :ghpull:`11609`: Remove _macosx.NavigationToolbar. +* :ghpull:`11608`: Remove some conditional branches in examples for wx<4. +* :ghpull:`11604`: TST: Place animation files in a temp dir. +* :ghpull:`11605`: Suppress a spurious missing-glyph warning with ft2font. +* :ghpull:`11360`: Pytzectomy +* :ghpull:`10885`: Move GTK3 setupext checks to within the process. +* :ghpull:`11081`: Help tool for Wx backends +* :ghpull:`10851`: Wx Toolbar for ToolManager +* :ghpull:`11247`: Remove mplDeprecation +* :ghpull:`9795`: Backend switching +* :ghpull:`9426`: Don't mark a patch transform as set if the parent transform is not set. +* :ghpull:`9175`: Warn on freetype missing glyphs. +* :ghpull:`11412`: Make contour and contourf color assignments consistent. +* :ghpull:`11477`: Enable flake8 and re-enable it everywhere +* :ghpull:`11165`: Fix figure window icon +* :ghpull:`11584`: ENH: fix colorbar bad minor ticks +* :ghpull:`11438`: ENH: add get_gridspec convenience method to subplots +* :ghpull:`11451`: Cleanup Matplotlib API docs +* :ghpull:`11579`: DOC update some examples to use constrained_layout=True +* :ghpull:`11594`: Some more docstring cleanups. +* :ghpull:`11593`: Skip wx interactive tests on OSX. +* :ghpull:`11592`: Remove some extra spaces in docstrings/comments. +* :ghpull:`11585`: Some doc cleanup of Triangulation +* :ghpull:`10474`: Use TemporaryDirectory instead of mkdtemp in a few places. +* :ghpull:`11240`: Deprecate the examples.directory rcParam. +* :ghpull:`11370`: Sorting drawn artists by their zorder when blitting using FuncAnimation +* :ghpull:`11576`: Add parameter doc to save_diff_image +* :ghpull:`11573`: Inline setup_external_compile into setupext. +* :ghpull:`11571`: Cleanup stix_fonts_demo example. +* :ghpull:`11563`: Use explicit signature in pyplot.close() +* :ghpull:`9801`: ENH: Change default Autodatelocator *interval_multiples* +* :ghpull:`11570`: More simplifications to FreeType setup on Windows. +* :ghpull:`11401`: Some py3fications. +* :ghpull:`11566`: Cleanups. +* :ghpull:`11520`: Add private API retrieving the current event loop and backend GUI info. +* :ghpull:`11544`: Restore axes sharedness when unpickling. +* :ghpull:`11568`: Figure.text changes +* :ghpull:`11248`: Simplify FreeType Windows build. +* :ghpull:`11556`: Fix colorbar bad ticks +* :ghpull:`11494`: Fix CI install of wxpython. +* :ghpull:`11564`: triinterpolate cleanups. +* :ghpull:`11548`: Use numpydoc-style parameter lists for choices +* :ghpull:`9583`: Add edgecolors kwarg to contourf +* :ghpull:`10275`: Update contour.py and widget.py +* :ghpull:`11547`: Fix example links +* :ghpull:`11555`: Fix spelling in title +* :ghpull:`11404`: FIX: don't include text at -inf in bbox +* :ghpull:`11455`: Fixing the issue where right column and top row generate wrong stream… +* :ghpull:`11297`: Prefer warn_deprecated instead of warnings.warn. +* :ghpull:`11495`: Update the documentation guidelines +* :ghpull:`11545`: Doc: fix x(filled) marker image +* :ghpull:`11287`: Maintain artist addition order in Axes.mouseover_set. +* :ghpull:`11530`: FIX: Ensuring both x and y attrs of LocationEvent are int +* :ghpull:`10336`: Use Integral and Real in typechecks rather than explicit types. +* :ghpull:`10298`: Apply gtk3 background. +* :ghpull:`10297`: Fix gtk3agg alpha channel. +* :ghpull:`9094`: axisbelow should just set zorder. +* :ghpull:`11542`: Documentation polar grids +* :ghpull:`11459`: Doc changes in add_subplot and add_axes +* :ghpull:`10908`: Make draggable callbacks check that artist has not been removed. +* :ghpull:`11522`: Small cleanups. +* :ghpull:`11539`: DOC: talk about sticky edges in Axes.margins +* :ghpull:`11540`: adding axes to module list +* :ghpull:`11537`: Fix invalid value warning when autoscaling with no data limits +* :ghpull:`11512`: Skip 3D rotation example in sphinx gallery +* :ghpull:`11538`: Re-enable pep8 on examples folder +* :ghpull:`11136`: Move remaining examples from api/ +* :ghpull:`11519`: Raise ImportError on failure to import backends. +* :ghpull:`11529`: add documentation for quality in savefig +* :ghpull:`11528`: Replace an unnecessary zip() in mplot3d by numpy ops. +* :ghpull:`11492`: add __repr__ to GridSpecBase +* :ghpull:`11521`: Add missing ``.`` to rcParam +* :ghpull:`11491`: Fixed the source path on windows in rcparam_role +* :ghpull:`11514`: Remove embedding_in_tk_canvas, which demonstrated a private API. +* :ghpull:`11507`: Fix embedding_in_tk_canvas example. +* :ghpull:`11513`: Changed docstrings in Text +* :ghpull:`11503`: Remove various mentions of the now removed GTK(2) backend. +* :ghpull:`11493`: Update a test to a figure-equality test. +* :ghpull:`11501`: Treat empty $MPLBACKEND as an unset value. +* :ghpull:`11395`: Various fixes to deprecated and warn_deprecated. +* :ghpull:`11408`: Figure equality-based tests. +* :ghpull:`11461`: Fixed bug in rendering font property kwargs list +* :ghpull:`11397`: Replace ACCEPTS by standard numpydoc params table. +* :ghpull:`11483`: Use pip requirements files for travis build +* :ghpull:`11481`: remove more pylab references +* :ghpull:`10940`: Run flake8 instead of pep8 on Python 3.6 +* :ghpull:`11476`: Remove pylab references +* :ghpull:`11448`: Link rcParams role to docs +* :ghpull:`11424`: DOC: point align-ylabel demo to new align-label functions +* :ghpull:`11454`: add subplots to axes documentation +* :ghpull:`11470`: Hyperlink DOIs against preferred resolver +* :ghpull:`11421`: DOC: make signature background grey +* :ghpull:`11457`: Search $CPATH for include directories +* :ghpull:`11456`: DOC: fix minor typo in figaspect +* :ghpull:`11293`: Lim parameter naming +* :ghpull:`11447`: Do not use class attributes as defaults for instance attributes +* :ghpull:`11449`: Slightly improve doc sidebar layout +* :ghpull:`11224`: Add deprecation messages for unused kwargs in FancyArrowPatch +* :ghpull:`11437`: Doc markersupdate +* :ghpull:`11417`: FIX: better default spine path (for logit) +* :ghpull:`11406`: Backport PR #11403 on branch v2.2.2-doc +* :ghpull:`11427`: FIX: pathlib in nbagg +* :ghpull:`11428`: Doc: Remove huge note box from examples. +* :ghpull:`11392`: Deprecate the ``verts`` kwarg to ``scatter``. +* :ghpull:`8834`: WIP: Contour log extension +* :ghpull:`11402`: Remove unnecessary str calls. +* :ghpull:`11399`: Autogenerate credits.rst +* :ghpull:`11382`: plt.subplots and plt.figure docstring changes +* :ghpull:`11388`: DOC: Constrained layout tutorial improvements +* :ghpull:`11400`: Correct docstring for axvspan() +* :ghpull:`11396`: Remove some (minor) comments regarding Py2. +* :ghpull:`11210`: FIX: don't pad axes for ticks if they aren't visible or axis off +* :ghpull:`11362`: Fix tox configuration +* :ghpull:`11366`: Improve docstring of Axes.spy +* :ghpull:`11289`: io.open and codecs.open are redundant with open on Py3. +* :ghpull:`11213`: MNT: deprecate patches.YAArrow +* :ghpull:`11352`: Catch a couple of test warnings +* :ghpull:`11292`: Simplify cleanup decorator implementation. +* :ghpull:`11349`: Remove non-existent files from MANIFEST.IN +* :ghpull:`8774`: Git issue #7216 - Add a "ruler" tool to the plot UI +* :ghpull:`11348`: Make OSX's blit() have a consistent signature with other backends. +* :ghpull:`11345`: Revert "Deprecate text.latex.unicode." +* :ghpull:`11250`: [WIP] Add tutorial for LogScale +* :ghpull:`11223`: Add an arrow tutorial +* :ghpull:`10212`: Categorical refactor +* :ghpull:`11339`: Convert Ellipse docstring to numpydoc +* :ghpull:`11255`: Deprecate text.latex.unicode. +* :ghpull:`11338`: Fix typos +* :ghpull:`11332`: Let plt.rc = matplotlib.rc, instead of being a trivial wrapper. +* :ghpull:`11331`: multiprocessing.set_start_method() --> mp.set_start_method() +* :ghpull:`9948`: Add ``ealpha`` option to ``errorbar`` +* :ghpull:`11329`: Minor docstring update of thumbnail +* :ghpull:`9551`: Refactor backend loading +* :ghpull:`11328`: Undeprecate Polygon.xy from #11299 +* :ghpull:`11318`: Improve docstring of imread() and imsave() +* :ghpull:`11311`: Simplify image.thumbnail. +* :ghpull:`11225`: Add stacklevel=2 to some more warnings.warn() calls +* :ghpull:`11313`: Add changelog entry for removal of proprietary sphinx directives. +* :ghpull:`11323`: Fix infinite loop for connectionstyle + add some tests +* :ghpull:`11314`: API changes: use the heading format defined in README.txt +* :ghpull:`11320`: Py3fy multiprocess example. +* :ghpull:`6254`: adds two new cyclic color schemes +* :ghpull:`11268`: DOC: Sanitize some internal documentation links +* :ghpull:`11300`: Start replacing ACCEPTS table by parsing numpydoc. +* :ghpull:`11298`: Automagically set the stacklevel on warnings. +* :ghpull:`11277`: Avoid using MacRoman encoding. +* :ghpull:`11295`: Use sphinx builtin only directive instead of custom one. +* :ghpull:`11305`: Reuse the noninteractivity warning from Figure.show in _Backend.show. +* :ghpull:`11307`: Avoid recursion for subclasses of str that are also "PathLike" in to_filehandle() +* :ghpull:`11304`: Re-remove six from INSTALL.rst. +* :ghpull:`11299`: Fix a bunch of doc/comment typos in patches.py. +* :ghpull:`11301`: Undefined name: cbook --> matplotlib.cbook +* :ghpull:`11254`: Update INSTALL.rst. +* :ghpull:`11267`: FIX: allow nan values in data for plt.hist +* :ghpull:`11271`: Better argspecs for Axes.stem +* :ghpull:`11272`: Remove commented-out code, unused imports +* :ghpull:`11280`: Trivial cleanups +* :ghpull:`10514`: Cleanup/update cairo + gtk compatibility matrix. +* :ghpull:`11282`: Reduce the use of C++ exceptions +* :ghpull:`11263`: Fail gracefully if can't decode font names +* :ghpull:`11278`: Remove conditional path for sphinx <1.3 in plot_directive. +* :ghpull:`11273`: Include template matplotlibrc in package_data. +* :ghpull:`11265`: Minor cleanups. +* :ghpull:`11249`: Simplify FreeType build. +* :ghpull:`11158`: Remove dependency on six - we're Py3 only now! +* :ghpull:`10050`: Update Legend draggable API +* :ghpull:`11206`: More cleanups +* :ghpull:`11001`: DOC: improve legend bbox_to_anchor description +* :ghpull:`11258`: Removed comment in AGG backend that is no longer applicable +* :ghpull:`11062`: FIX: call constrained_layout twice +* :ghpull:`11251`: Re-run boilerplate.py. +* :ghpull:`11228`: Don't bother checking luatex's version. +* :ghpull:`11207`: Update venv gui docs wrt availability of PySide2. +* :ghpull:`11236`: Minor cleanups to setupext. +* :ghpull:`11239`: Reword the timeout error message in cbook._lock_path. +* :ghpull:`11204`: Test that boilerplate.py is correctly run. +* :ghpull:`11172`: ENH add rcparam to legend_title +* :ghpull:`11229`: Simplify lookup of animation external commands. +* :ghpull:`9086`: Add SVG animation. +* :ghpull:`11212`: Fix CirclePolygon __str__ + adding tests +* :ghpull:`6737`: Ternary +* :ghpull:`11216`: Yet another set of simplifications. +* :ghpull:`11056`: Simplify travis setup a bit. +* :ghpull:`11211`: Revert explicit linestyle kwarg on step() +* :ghpull:`11205`: Minor cleanups to pyplot. +* :ghpull:`11174`: Replace numeric loc by position string +* :ghpull:`11208`: Don't crash qt figure options on unknown marker styles. +* :ghpull:`11195`: Some unrelated cleanups. +* :ghpull:`11192`: Don't use deprecated get_texcommand in backend_pgf. +* :ghpull:`11197`: Simplify demo_ribbon_box.py. +* :ghpull:`11137`: Convert ``**kwargs`` to named arguments for a clearer API +* :ghpull:`10982`: Improve docstring of Axes.imshow +* :ghpull:`11182`: Use GLib.MainLoop() instead of deprecated GObject.MainLoop() +* :ghpull:`11185`: Fix undefined name error in backend_pgf. +* :ghpull:`10321`: Ability to scale axis by a fixed factor +* :ghpull:`8787`: Faster path drawing for the cairo backend (cairocffi only) +* :ghpull:`4559`: tight_layout: Use a different default gridspec +* :ghpull:`11179`: Convert internal tk focus helper to a context manager +* :ghpull:`11176`: Allow creating empty closed paths +* :ghpull:`10339`: Pass explicit font paths to fontspec in backend_pgf. +* :ghpull:`9832`: Minor cleanup to Text class. +* :ghpull:`11141`: Remove mpl_examples symlink. +* :ghpull:`10715`: ENH: add title_fontsize to legend +* :ghpull:`11166`: Set stacklevel to 2 for backend_wx +* :ghpull:`10934`: Autogenerate (via boilerplate) more of pyplot. +* :ghpull:`9298`: Cleanup blocking_input. +* :ghpull:`6329`: Set _text to '' if Text.set_text argument is None +* :ghpull:`11157`: Fix contour return link +* :ghpull:`11146`: Explicit args and refactor Axes.margins +* :ghpull:`11145`: Use kwonlyargs instead of popping from kwargs +* :ghpull:`11119`: PGF: Get unitless positions from Text elements (fix #11116) +* :ghpull:`9078`: New anchored direction arrows +* :ghpull:`11144`: Remove toplevel unit/ directory. +* :ghpull:`11148`: remove use of subprocess compatibility shim +* :ghpull:`11143`: Use debug level for debugging messages +* :ghpull:`11142`: Finish removing future imports. +* :ghpull:`11130`: Don't include the postscript title if it is not latin-1 encodable. +* :ghpull:`11093`: DOC: Fixup to AnchoredArtist examples in the gallery +* :ghpull:`11132`: pillow-dependency update +* :ghpull:`10446`: implementation of the copy canvas tool +* :ghpull:`9131`: FIX: prevent the canvas from jump sizes due to DPI changes +* :ghpull:`9454`: Batch ghostscript converter. +* :ghpull:`10545`: Change manual kwargs popping to kwonly arguments. +* :ghpull:`10950`: Actually ignore invalid log-axis limit setting +* :ghpull:`11096`: Remove support for bar(left=...) (as opposed to bar(x=...)). +* :ghpull:`11106`: py3fy art3d. +* :ghpull:`11085`: Use GtkShortcutsWindow for Help tool. +* :ghpull:`11099`: Deprecate certain marker styles that have simpler synonyms. +* :ghpull:`11100`: Some more deprecations of old, old stuff. +* :ghpull:`11098`: Make Marker.get_snap_threshold() always return a scalar. +* :ghpull:`11097`: Schedule a removal date for passing normed (instead of density) to hist. +* :ghpull:`9706`: Masking invalid x and/or weights in hist +* :ghpull:`11080`: Py3fy backend_qt5 + other cleanups to the backend. +* :ghpull:`10967`: updated the pyplot fill_between example to elucidate the premise;maki… +* :ghpull:`11075`: Drop alpha channel when saving comparison failure diff image. +* :ghpull:`9022`: Help tool +* :ghpull:`11045`: Help tool. +* :ghpull:`11076`: Don't create texput.{aux,log} in rootdir everytime tests are run. +* :ghpull:`11073`: py3fication of some tests. +* :ghpull:`11074`: bytes % args is back since py3.5 +* :ghpull:`11066`: Use chained comparisons where reasonable. +* :ghpull:`11061`: Changed tight_layout doc strings +* :ghpull:`11064`: Minor docstring format cleanup +* :ghpull:`11055`: Remove setup_tests_only.py. +* :ghpull:`11057`: Update Ellipse position with ellipse.center +* :ghpull:`10435`: Pathlibify font_manager (only internally, doesn't change the API). +* :ghpull:`10442`: Make the filternorm prop of Images a boolean rather than a {0,1} scalar. +* :ghpull:`9855`: ENH: make ax.get_position apply aspect +* :ghpull:`9987`: MNT: hist2d now uses pcolormesh instead of pcolorfast +* :ghpull:`11014`: Merge v2.2.x into master +* :ghpull:`11000`: FIX: improve Text repr to not error if non-float x and y. +* :ghpull:`10910`: FIX: return proper legend window extent +* :ghpull:`10915`: FIX: tight_layout having negative width axes +* :ghpull:`10408`: Factor out common code in _process_unit_info +* :ghpull:`10960`: Added share_tickers parameter to axes._AxesBase.twinx/y +* :ghpull:`10971`: Skip pillow animation test if pillow not importable +* :ghpull:`10970`: Simplify/fix some manual manipulation of len(args). +* :ghpull:`10958`: Simplify the grouper implementation. +* :ghpull:`10508`: Deprecate FigureCanvasQT.keyAutoRepeat. +* :ghpull:`10607`: Move notify_axes_change to FigureManagerBase class. +* :ghpull:`10215`: Test timers and (a bit) key_press_event for interactive backends. +* :ghpull:`10955`: Py3fy cbook, compare_backend_driver_results +* :ghpull:`10680`: Rewrite the tk C blitting code +* :ghpull:`9498`: Move title up if x-axis is on the top of the figure +* :ghpull:`10942`: Make active param in CheckBottons optional, default false +* :ghpull:`10943`: Allow pie textprops to take alignment and rotation arguments +* :ghpull:`10780`: Fix scaling of RadioButtons +* :ghpull:`10938`: Fix two undefined names +* :ghpull:`10685`: fix plt.show doesn't warn if a non-GUI backend +* :ghpull:`10689`: Declare global variables that are created elsewhere +* :ghpull:`10845`: WIP: first draft at replacing linkcheker +* :ghpull:`10898`: Replace "matplotlibrc" by "rcParams" in the docs where applicable. +* :ghpull:`10926`: Some more removals of deprecated APIs. +* :ghpull:`9173`: dynamically generate pyplot functions +* :ghpull:`10918`: Use function signatures in boilerplate.py. +* :ghpull:`10914`: Changed pie charts default shape to circle and added tests +* :ghpull:`10864`: ENH: Stop mangling default figure file name if file exists +* :ghpull:`10562`: Remove deprecated code in image.py +* :ghpull:`10798`: FIX: axes limits reverting to automatic when sharing +* :ghpull:`10485`: Remove the 'hold' kwarg from codebase +* :ghpull:`10571`: Use np.full{,_like} where appropriate. [requires numpy>=1.12] +* :ghpull:`10913`: Rely a bit more on rc_context. +* :ghpull:`10299`: Invalidate texmanager cache when any text.latex.* rc changes. +* :ghpull:`10906`: Deprecate ImageComparisonTest. +* :ghpull:`10904`: Improve docstring of clabel() +* :ghpull:`10912`: remove unused matplotlib.testing import +* :ghpull:`10876`: [wip] Replace _remove_method by _on_remove list of callbacks +* :ghpull:`10692`: Update afm docs and internal data structures +* :ghpull:`10896`: Update INSTALL.rst. +* :ghpull:`10905`: Inline knownfailureif. +* :ghpull:`10907`: No need to mark (unicode) strings as u"foo" anymore. +* :ghpull:`10903`: Py3fy testing machinery. +* :ghpull:`10901`: Remove Py2/3 portable code guide. +* :ghpull:`10900`: Remove some APIs deprecated in mpl2.1. +* :ghpull:`10902`: Kill some Py2 docs. +* :ghpull:`10887`: Added feature (Make pie charts circular by default #10789) +* :ghpull:`10884`: Style fixes to setupext.py. +* :ghpull:`10879`: Deprecate two-args for cycler() and set_prop_cycle() +* :ghpull:`10865`: DOC: use OO-ish interface in image, contour, field examples +* :ghpull:`8479`: FIX markerfacecolor / mfc not in rcparams +* :ghpull:`10314`: setattr context manager. +* :ghpull:`10013`: Allow rasterization for 3D plots +* :ghpull:`10158`: Allow mplot3d rasterization; adjacent cleanups. +* :ghpull:`10871`: Rely on rglob support rather than os.walk. +* :ghpull:`10878`: Change hardcoded brackets for Toolbar message +* :ghpull:`10708`: Py3fy webagg/nbagg. +* :ghpull:`10862`: py3ify table.py and correct some docstrings +* :ghpull:`10810`: Fix for plt.plot() does not support structured arrays as data= kwarg +* :ghpull:`10861`: More python3 cleanup +* :ghpull:`9903`: ENH: adjustable colorbar ticks +* :ghpull:`10831`: Minor docstring updates on binning related plot functions +* :ghpull:`9571`: Remove LaTeX checking in setup.py. +* :ghpull:`10097`: Reset extents in RectangleSelector when not interactive on press. +* :ghpull:`10686`: fix BboxConnectorPatch does not show facecolor +* :ghpull:`10801`: Fix undefined name. Add animation tests. +* :ghpull:`10857`: FIX: ioerror font cache, second try +* :ghpull:`10796`: Added descriptions for line bars and markers examples +* :ghpull:`10846`: Unsixification +* :ghpull:`10852`: Update docs re: pygobject in venv. +* :ghpull:`10847`: Py3fy axis.py. +* :ghpull:`10834`: Minor docstring updates on spectral plot functions +* :ghpull:`10778`: wx_compat is no more. +* :ghpull:`10609`: More wx cleanup. +* :ghpull:`10826`: Py3fy dates.py. +* :ghpull:`10837`: Correctly display error when running setup.py test. +* :ghpull:`10838`: Don't use private attribute in tk example. Fix Toolbar class rename. +* :ghpull:`10835`: DOC: Make colorbar tutorial examples look like colorbars. +* :ghpull:`10823`: Add some basic smoketesting for webagg (and wx). +* :ghpull:`10828`: Add print_rgba to backend_cairo. +* :ghpull:`10830`: Make function signatures more explicit +* :ghpull:`10829`: Use long color names for default rcParams +* :ghpull:`9776`: WIP: Lockout new converters Part 2 +* :ghpull:`10799`: DOC: make legend docstring interpolated +* :ghpull:`10818`: Deprecate vestigial Annotation.arrow. +* :ghpull:`10817`: Add test to imread from url. +* :ghpull:`10696`: Simplify venv docs. +* :ghpull:`10724`: Py3fication of unicode. +* :ghpull:`10815`: API: shift deprecation of TempCache class to 3.0 +* :ghpull:`10725`: FIX/TST constrained_layout remove test8 duplication +* :ghpull:`10705`: FIX: enable extend kwargs with log scale colorbar +* :ghpull:`10400`: numpydoc-ify art3d docstrings +* :ghpull:`10723`: repr style fixes. +* :ghpull:`10592`: Rely on generalized * and ** unpackings where possible. +* :ghpull:`9475`: Declare property aliases in a single place +* :ghpull:`10793`: A hodgepodge of Py3 & style fixes. +* :ghpull:`10794`: fixed comment typo +* :ghpull:`10768`: Fix crash when imshow encounters longdouble data +* :ghpull:`10774`: Remove dead wx testing code. +* :ghpull:`10756`: Fixes png showing inconsistent inset_axes position +* :ghpull:`10773`: Consider alpha channel from RGBA color of text for SVG backend text opacity rendering +* :ghpull:`10772`: API: check locator and formatter args when passed +* :ghpull:`10713`: Implemented support for 'markevery' in prop_cycle +* :ghpull:`10751`: make centre_baseline legal for Text.set_verticalalignment +* :ghpull:`10771`: FIX/TST OS X builds +* :ghpull:`10742`: FIX: reorder linewidth setting before linestyle +* :ghpull:`10714`: sys.platform is normalized to "linux" on Py3. +* :ghpull:`10542`: Minor cleanup: PEP8, PEP257 +* :ghpull:`10636`: Remove some wx version checks. +* :ghpull:`9731`: Make legend title fontsize obey fontsize kwarg by default +* :ghpull:`10697`: Remove special-casing of _remove_method when pickling. +* :ghpull:`10701`: Autoadd removal version to deprecation message. +* :ghpull:`10699`: Remove incorrect warning in gca(). +* :ghpull:`10674`: Fix getting polar axes in plt.polar() +* :ghpull:`10564`: Nested classes and instancemethods are directly picklable on Py3.5+. +* :ghpull:`10107`: Fix stay_span to reset onclick in SpanSelector. +* :ghpull:`10693`: Make markerfacecolor work for 3d scatterplots +* :ghpull:`10596`: Switch to per-file locking. +* :ghpull:`10532`: Py3fy backend_pgf. +* :ghpull:`10618`: Fixes #10501. python3 support and pep8 in jpl_units +* :ghpull:`10652`: Some py3fication for matplotlib/__init__, setupext. +* :ghpull:`10522`: Py3fy font_manager. +* :ghpull:`10666`: More figure-related doc updates +* :ghpull:`10507`: Remove Python 2 code from C extensions +* :ghpull:`10679`: Small fixes to gtk3 examples. +* :ghpull:`10426`: Delete deprecated backends +* :ghpull:`10488`: Bug Fix - Polar plot rectangle patch not transformed correctly (#8521) +* :ghpull:`9814`: figure_enter_event uses now LocationEvent instead of Event. Fix issue #9812. +* :ghpull:`9918`: Remove old nose testing code +* :ghpull:`10672`: Deprecation fixes. +* :ghpull:`10608`: Remove most APIs deprecated in 2.1. +* :ghpull:`10653`: Mock is in stdlib in Py3. +* :ghpull:`10603`: Remove workarounds for numpy<1.10. +* :ghpull:`10660`: Work towards removing reuse-of-axes-on-collision. +* :ghpull:`10661`: Homebrew python is now python 3 +* :ghpull:`10656`: Minor fixes to event handling docs. +* :ghpull:`10635`: Simplify setupext by using globs. +* :ghpull:`10632`: Support markers from Paths that consist of one line segment +* :ghpull:`10558`: Remove if six.PY2 code paths from boilerplate.py +* :ghpull:`10640`: Fix extra and missing spaces in constrainedlayout warning. +* :ghpull:`10624`: Some trivial py3fications. +* :ghpull:`10548`: Implement PdfPages for backend pgf +* :ghpull:`10614`: Use np.stack instead of list(zip()) in colorbar.py. +* :ghpull:`10621`: Cleanup and py3fy backend_gtk3. +* :ghpull:`10615`: More style fixes. +* :ghpull:`10604`: Minor style fixes. +* :ghpull:`10565`: Strip python 2 code from subprocess.py +* :ghpull:`10605`: Bump a tolerance in test_axisartist_floating_axes. +* :ghpull:`7853`: Use exact types for Py_BuildValue. +* :ghpull:`10591`: Switch to @-matrix multiplication. +* :ghpull:`10570`: Fix check_shared in test_subplots. +* :ghpull:`10569`: Various style fixes. +* :ghpull:`10593`: Use 'yield from' where appropriate. +* :ghpull:`10577`: Minor simplification to Figure.__getstate__ logic. +* :ghpull:`10549`: Source typos +* :ghpull:`10525`: Convert six.moves.xrange() to range() for Python 3 +* :ghpull:`10541`: More argumentless (py3) super() +* :ghpull:`10539`: TST: Replace assert_equal with plain asserts. +* :ghpull:`10534`: Modernize cbook.get_realpath_and_stat. +* :ghpull:`10524`: Remove unused private _StringFuncParser. +* :ghpull:`10470`: Remove Python 2 code from setup +* :ghpull:`10528`: py3fy examples +* :ghpull:`10520`: Py3fy mathtext.py. +* :ghpull:`10527`: Switch to argumentless (py3) super(). +* :ghpull:`10523`: The current master branch is now python 3 only. +* :ghpull:`10515`: Use feature detection instead of version detection +* :ghpull:`10432`: Use some new Python3 types +* :ghpull:`10475`: Use HTTP Secure for matplotlib.org +* :ghpull:`10383`: Fix some C++ warnings +* :ghpull:`10498`: Tell the lgtm checker that the project is Python 3 only +* :ghpull:`10505`: Remove backport of which() +* :ghpull:`10483`: Remove backports.functools_lru_cache +* :ghpull:`10492`: Avoid UnboundLocalError in drag_pan. +* :ghpull:`10491`: Simplify Mac builds on Travis +* :ghpull:`10481`: Remove python 2 compatibility code from dviread +* :ghpull:`10447`: Remove Python 2 compatibility code from backend_pdf.py +* :ghpull:`10468`: Replace is_numlike by isinstance(..., numbers.Number). +* :ghpull:`10439`: mkdir is in the stdlib in Py3. +* :ghpull:`10392`: FIX: make set_text(None) keep string empty instead of "None" +* :ghpull:`10425`: API: only support python 3.5+ +* :ghpull:`10316`: TST FIX pyqt5 5.9 +* :ghpull:`4625`: hist2d() is now using pcolormesh instead of pcolorfast + +Issues (123): + +* :ghissue:`12133`: Streamplot does not work for 29x29 grid +* :ghissue:`4429`: Error calculating scaling for radiobutton widget. +* :ghissue:`3293`: markerfacecolor / mfc not in rcparams +* :ghissue:`8109`: Cannot set the markeredgecolor by default +* :ghissue:`7942`: Extend keyword doesn't work with log scale. +* :ghissue:`5571`: Finish reorganizing examples +* :ghissue:`8307`: Colorbar with imshow(logNorm) shows unexpected minor ticks +* :ghissue:`6992`: plt.hist fails when data contains nan values +* :ghissue:`6483`: Range determination for data with NaNs +* :ghissue:`8059`: BboxConnectorPatch does not show facecolor +* :ghissue:`12134`: tight_layout flips images when making plots without displaying them +* :ghissue:`6739`: Make matplotlib fail more gracefully in headless environments +* :ghissue:`3679`: Runtime detection for default backend +* :ghissue:`11966`: CartoPy code gives attribute error +* :ghissue:`11844`: Backend related issues with matplotlib 3.0.0rc1 +* :ghissue:`12095`: colorbar minorticks (possibly release critical for 3.0) +* :ghissue:`12108`: Broken doc build with sphinx 1.8 +* :ghissue:`7366`: handle repaint requests better it qtAgg +* :ghissue:`11985`: Single shot timer not working correctly with MacOSX backend +* :ghissue:`10948`: OSX backend raises deprecation warning for enter_notify_event +* :ghissue:`11970`: Legend.get_window_extent now requires a renderer +* :ghissue:`8293`: investigate whether using a single instance of ghostscript for ps->png conversion can speed up the Windows build +* :ghissue:`7707`: Replace pep8 by pycodestyle for style checking +* :ghissue:`9135`: rcdefaults, rc_file_defaults, rc_file should not update backend if it has already been selected +* :ghissue:`12015`: AttributeError with GTK3Agg backend +* :ghissue:`11913`: plt.contour levels parameter don't work as intended if receive a single int +* :ghissue:`11846`: macosx backend won't load +* :ghissue:`11792`: Newer versions of ImageMagickWriter not found on windows +* :ghissue:`11858`: Adding "pie of pie" and "bar of pie" functionality +* :ghissue:`11852`: get_backend() backward compatibility +* :ghissue:`11629`: Importing qt_compat when no Qt binding is installed fails with NameError instead of ImportError +* :ghissue:`11842`: Failed nose import in test_annotation_update +* :ghissue:`11252`: Some API removals not documented +* :ghissue:`9404`: Drop support for python 2 +* :ghissue:`2625`: Markers in XKCD style +* :ghissue:`11749`: metadata kwarg to savefig is not documented +* :ghissue:`11702`: Setting alpha on legend handle changes patch color +* :ghissue:`8798`: gtk3cairo draw_image does not respect origin and mishandles alpha +* :ghissue:`11737`: Bug in tight_layout +* :ghissue:`11373`: Passing an incorrectly sized colour list to scatter should raise a relevant error +* :ghissue:`11756`: pgf backend doesn't set color of text when the color is black +* :ghissue:`11766`: test_axes.py::test_csd_freqs failing with numpy 1.15.0 on macOS +* :ghissue:`11750`: previous whats new is overindented on "what's new in mpl3.0 page" +* :ghissue:`11728`: Qt5 Segfaults on window resize +* :ghissue:`11709`: Repaint region is wrong on Retina display with Qt5 +* :ghissue:`11578`: wx segfaulting on OSX travis tests +* :ghissue:`11628`: edgecolor argument not working in matplotlib.pyplot.bar +* :ghissue:`11625`: plt.tight_layout() does not work with plt.subplot2grid +* :ghissue:`4993`: Version ~/.cache/matplotlib +* :ghissue:`7842`: If hexbin has logarithmic bins, use log formatter for colorbar +* :ghissue:`11607`: AttributeError: 'QEvent' object has no attribute 'pos' +* :ghissue:`11486`: Colorbar does not render with PowerNorm and min extend when using imshow +* :ghissue:`11582`: wx segfault +* :ghissue:`11515`: using 'sharex' once in 'subplots' function can affect subsequent calles to 'subplots' +* :ghissue:`10269`: input() blocks any rendering and event handling +* :ghissue:`10345`: Python 3.4 with Matplotlib 1.5 vs Python 3.6 with Matplotlib 2.1 +* :ghissue:`10443`: Drop use of pytz dependency in next major release +* :ghissue:`10572`: contour and contourf treat levels differently +* :ghissue:`11123`: Crash when interactively adding a number of subplots +* :ghissue:`11550`: Undefined names: 'obj_type' and 'cbook' +* :ghissue:`11138`: Only the first figure window has mpl icon, all other figures have default tk icon. +* :ghissue:`11510`: extra minor-ticks on the colorbar when used with the extend option +* :ghissue:`11369`: zorder of Artists not being respected when blitting with FuncAnimation +* :ghissue:`11452`: Streamplot ignores rightmost column and topmost row of velocity data +* :ghissue:`11284`: imshow of multiple images produces old pixel values printed in status bar +* :ghissue:`11496`: MouseEvent.x and .y have different types +* :ghissue:`11534`: Cross-reference margins and sticky edges +* :ghissue:`8556`: Add images of markers to the list of markers +* :ghissue:`11386`: Logit scale doesn't position x/ylabel correctly first draw +* :ghissue:`11384`: Undefined name 'Path' in backend_nbagg.py +* :ghissue:`11426`: nbagg broken on master. 'Path' is not defined... +* :ghissue:`11390`: Internal use of deprecated code +* :ghissue:`11203`: tight_layout reserves tick space even if disabled +* :ghissue:`11361`: Tox.ini does not work out of the box +* :ghissue:`11253`: Problem while changing current figure size in Jupyter notebook +* :ghissue:`11219`: Write an arrow tutorial +* :ghissue:`11322`: Really deprecate Patches.xy? +* :ghissue:`11294`: ConnectionStyle Angle3 hangs with specific parameters +* :ghissue:`9518`: Some ConnectionStyle not working +* :ghissue:`11306`: savefig and path.py +* :ghissue:`11077`: Font "DejaVu Sans" can only be used through fallback +* :ghissue:`10717`: Failure to find matplotlibrc when testing installed distribution +* :ghissue:`9912`: Cleaning up variable argument signatures +* :ghissue:`3701`: unit tests should compare pyplot.py with output from boilerplate.py +* :ghissue:`11183`: Undefined name 'system_fonts' in backend_pgf.py +* :ghissue:`11101`: Crash on empty patches +* :ghissue:`11124`: [Bug] savefig cannot save file with a Unicode name +* :ghissue:`7733`: Trying to set_ylim(bottom=0) on a log scaled axis changes plot +* :ghissue:`10319`: TST: pyqt 5.10 breaks pyqt5 interactive tests +* :ghissue:`10676`: Add source code to documentation +* :ghissue:`9207`: axes has no method to return new position after box is adjusted due to aspect ratio... +* :ghissue:`4615`: hist2d with log xy axis +* :ghissue:`10996`: Plotting text with datetime axis causes warning +* :ghissue:`7582`: Report date and time of cursor position on a plot_date plot +* :ghissue:`10114`: Remove mlab from examples +* :ghissue:`10342`: imshow longdouble not truly supported +* :ghissue:`8062`: tight_layout + lots of subplots + long ylabels inverts yaxis +* :ghissue:`4413`: Long axis title alters xaxis length and direction with ``plt.tight_layout()`` +* :ghissue:`1415`: Plot title should be shifted up when xticks are set to the top of the plot +* :ghissue:`10789`: Make pie charts circular by default +* :ghissue:`10941`: Cannot set text alignment in pie chart +* :ghissue:`7908`: plt.show doesn't warn if a non-GUI backend is being used +* :ghissue:`10502`: 'FigureManager' is an undefined name in backend_wx.py +* :ghissue:`10062`: axes limits revert to automatic on sharing axes? +* :ghissue:`9246`: ENH: make default colorbar ticks adjust as nicely as axes ticks +* :ghissue:`8818`: plt.plot() does not support structured arrays as data= kwarg +* :ghissue:`10533`: Recognize pandas Timestamp objects for DateConverter? +* :ghissue:`8358`: Minor ticks on log-scale colorbar are not cleared +* :ghissue:`10075`: RectangleSelector does not work if start and end points are identical +* :ghissue:`8576`: support 'markevery' in prop_cycle +* :ghissue:`8874`: Crash in python setup.py test +* :ghissue:`3871`: replace use of _tkcanvas with get_tk_widget() +* :ghissue:`10550`: Use long color names for rc defaultParams +* :ghissue:`10722`: Duplicated test name in test_constrainedlayout +* :ghissue:`10419`: svg backend does not respect alpha channel of text *when passed as rgba* +* :ghissue:`10769`: DOC: set_major_locator could check that its getting a Locator (was EngFormatter broken?) +* :ghissue:`10719`: Need better type error checking for linewidth in ax.grid +* :ghissue:`7776`: tex cache lockfile retries should be configurable +* :ghissue:`10556`: Special conversions of xrange() +* :ghissue:`10501`: cmp() is an undefined name in Python 3 +* :ghissue:`9812`: figure_enter_event generates base Event and not LocationEvent +* :ghissue:`10602`: Random image failures with test_curvelinear4 +* :ghissue:`7795`: Incorrect uses of is_numlike diff --git a/doc/users/prev_whats_new/github_stats_3.0.1.rst b/doc/users/prev_whats_new/github_stats_3.0.1.rst new file mode 100644 index 000000000000..95e899d1a9de --- /dev/null +++ b/doc/users/prev_whats_new/github_stats_3.0.1.rst @@ -0,0 +1,203 @@ +.. _github-stats-3-0-1: + +GitHub statistics for 3.0.1 (Oct 25, 2018) +========================================== + +GitHub statistics for 2018/09/18 (tag: v3.0.0) - 2018/10/25 + +These lists are automatically generated, and may be incomplete or contain duplicates. + +We closed 31 issues and merged 127 pull requests. +The full list can be seen `on GitHub `__ + +The following 23 authors contributed 227 commits. + +* Abhinuv Nitin Pitale +* Antony Lee +* Anubhav Shrimal +* Ben Root +* Colin +* Daniele Nicolodi +* David Haberthür +* David Stansby +* Elan Ernest +* Elliott Sales de Andrade +* Eric Firing +* ImportanceOfBeingErnest +* Jody Klymak +* Kai Muehlbauer +* Kevin Rose +* Marcel Martin +* MeeseeksMachine +* Nelle Varoquaux +* Nikita Kniazev +* Ryan May +* teresy +* Thomas A Caswell +* Tim Hoffmann + +GitHub issues and pull requests: + +Pull Requests (127): + +* :ghpull:`12595`: Backport PR #12569 on branch v3.0.x (Don't confuse uintptr_t and Py_ssize_t.) +* :ghpull:`12623`: Backport PR #12285 on branch v3.0.x (FIX: Don't apply tight_layout if axes collapse) +* :ghpull:`12285`: FIX: Don't apply tight_layout if axes collapse +* :ghpull:`12622`: FIX: flake8errors 3.0.x mergeup +* :ghpull:`12619`: Backport PR #12548 on branch v3.0.x (undef _XOPEN_SOURCE breaks the build in AIX) +* :ghpull:`12621`: Backport PR #12607 on branch v3.0.x (STY: fix whitespace and escaping) +* :ghpull:`12616`: Backport PR #12615 on branch v3.0.x (Fix travis OSX build) +* :ghpull:`12594`: Backport PR #12572 on branch v3.0.x (Fix singleton hist labels) +* :ghpull:`12615`: Fix travis OSX build +* :ghpull:`12607`: STY: fix whitespace and escaping +* :ghpull:`12605`: Backport PR #12603 on branch v3.0.x (FIX: don't import macosx to check if eventloop running) +* :ghpull:`12604`: FIX: over-ride 'copy' on RcParams +* :ghpull:`12603`: FIX: don't import macosx to check if eventloop running +* :ghpull:`12602`: Backport PR #12599 on branch v3.0.x (Fix formatting of docstring) +* :ghpull:`12599`: Fix formatting of docstring +* :ghpull:`12593`: Backport PR #12581 on branch v3.0.x (Fix hist() error message) +* :ghpull:`12569`: Don't confuse uintptr_t and Py_ssize_t. +* :ghpull:`12572`: Fix singleton hist labels +* :ghpull:`12581`: Fix hist() error message +* :ghpull:`12575`: Backport PR #12573 on branch v3.0.x (BUG: mplot3d: Don't crash if azim or elev are non-integral) +* :ghpull:`12558`: Backport PR #12555 on branch v3.0.x (Clarify horizontalalignment and verticalalignment in suptitle) +* :ghpull:`12544`: Backport PR #12159 on branch v3.0.x (FIX: colorbar re-check norm before draw for autolabels) +* :ghpull:`12159`: FIX: colorbar re-check norm before draw for autolabels +* :ghpull:`12540`: Backport PR #12501 on branch v3.0.x (Rectified plot error) +* :ghpull:`12531`: Backport PR #12431 on branch v3.0.x (FIX: allow single-string color for scatter) +* :ghpull:`12431`: FIX: allow single-string color for scatter +* :ghpull:`12529`: Backport PR #12216 on branch v3.0.x (Doc: Fix search for sphinx >=1.8) +* :ghpull:`12527`: Backport PR #12461 on branch v3.0.x (FIX: make add_lines work with new colorbar) +* :ghpull:`12461`: FIX: make add_lines work with new colorbar +* :ghpull:`12522`: Backport PR #12241 on branch v3.0.x (FIX: make unused spines invisible) +* :ghpull:`12241`: FIX: make unused spines invisible +* :ghpull:`12519`: Backport PR #12504 on branch v3.0.x (DOC: clarify min supported version wording) +* :ghpull:`12517`: Backport PR #12507 on branch v3.0.x (FIX: make minor ticks formatted with science formatter as well) +* :ghpull:`12507`: FIX: make minor ticks formatted with science formatter as well +* :ghpull:`12512`: Backport PR #12363 on branch v3.0.x +* :ghpull:`12511`: Backport PR #12366 on branch v2.2.x (TST: Update test images for new Ghostscript.) +* :ghpull:`12509`: Backport PR #12478 on branch v3.0.x (MAINT: numpy deprecates asscalar in 1.16) +* :ghpull:`12363`: FIX: errors in get_position changes +* :ghpull:`12497`: Backport PR #12495 on branch v3.0.x (Fix duplicate condition in pathpatch3d example) +* :ghpull:`12490`: Backport PR #12489 on branch v3.0.x (Fix typo in documentation of ylim) +* :ghpull:`12485`: Fix font_manager.OSXInstalledFonts() +* :ghpull:`12484`: Backport PR #12448 on branch v3.0.x (Don't error if some font directories are not readable.) +* :ghpull:`12421`: Backport PR #12360 on branch v3.0.x (Replace axes_grid by axes_grid1 in test) +* :ghpull:`12448`: Don't error if some font directories are not readable. +* :ghpull:`12471`: Backport PR #12468 on branch v3.0.x (Fix ``set_ylim`` unit handling) +* :ghpull:`12475`: Backport PR #12469 on branch v3.0.x (Clarify documentation of offsetbox.AnchoredText's prop kw argument) +* :ghpull:`12468`: Fix ``set_ylim`` unit handling +* :ghpull:`12464`: Backport PR #12457 on branch v3.0.x (Fix tutorial typos.) +* :ghpull:`12432`: Backport PR #12277: FIX: datetime64 now recognized if in a list +* :ghpull:`12277`: FIX: datetime64 now recognized if in a list +* :ghpull:`12426`: Backport PR #12293 on branch v3.0.x (Make pyplot more tolerant wrt. 3rd-party subclasses.) +* :ghpull:`12293`: Make pyplot more tolerant wrt. 3rd-party subclasses. +* :ghpull:`12360`: Replace axes_grid by axes_grid1 in test +* :ghpull:`12412`: Backport PR #12394 on branch v3.0.x (DOC: fix CL tutorial to give same output from saved file and example) +* :ghpull:`12410`: Backport PR #12408 on branch v3.0.x (Don't crash on invalid registry font entries on Windows.) +* :ghpull:`12411`: Backport PR #12366 on branch v3.0.0-doc (TST: Update test images for new Ghostscript.) +* :ghpull:`12408`: Don't crash on invalid registry font entries on Windows. +* :ghpull:`12403`: Backport PR #12149 on branch v3.0.x (Mathtext tutorial fixes) +* :ghpull:`12400`: Backport PR #12257 on branch v3.0.x (Document standard backends in matplotlib.use()) +* :ghpull:`12257`: Document standard backends in matplotlib.use() +* :ghpull:`12399`: Backport PR #12383 on branch v3.0.x (Revert change of parameter name in annotate()) +* :ghpull:`12383`: Revert change of parameter name in annotate() +* :ghpull:`12390`: Backport PR #12385 on branch v3.0.x (CI: Added Appveyor Python 3.7 build) +* :ghpull:`12385`: CI: Added Appveyor Python 3.7 build +* :ghpull:`12381`: Backport PR #12353 on branch v3.0.x (Doc: clarify default parameters in scatter docs) +* :ghpull:`12378`: Backport PR #12366 on branch v3.0.x (TST: Update test images for new Ghostscript.) +* :ghpull:`12375`: Backport PR #11648 on branch v3.0.x (FIX: colorbar placement in constrained layout) +* :ghpull:`11648`: FIX: colorbar placement in constrained layout +* :ghpull:`12350`: Backport PR #12214 on branch v3.0.x +* :ghpull:`12348`: Backport PR #12347 on branch v3.0.x (DOC: add_child_axes to axes_api.rst) +* :ghpull:`12214`: Improve docstring of Annotation +* :ghpull:`12344`: Backport PR #12321 on branch v3.0.x (maint: setupext.py for freetype had a Catch case for missing ft2build.h) +* :ghpull:`12342`: Backport PR #12334 on branch v3.0.x (Improve selection of inset indicator connectors.) +* :ghpull:`12334`: Improve selection of inset indicator connectors. +* :ghpull:`12339`: Backport PR #12297 on branch v3.0.x (Remove some pytest parameterising warnings) +* :ghpull:`12338`: Backport PR #12268 on branch v3.0.x (FIX: remove unnecessary ``self`` in ``super_``-calls, fixes #12265) +* :ghpull:`12336`: Backport PR #12212 on branch v3.0.x (font_manager: Fixed problems with Path(...).suffix) +* :ghpull:`12268`: FIX: remove unnecessary ``self`` in ``super_``-calls, fixes #12265 +* :ghpull:`12212`: font_manager: Fixed problems with Path(...).suffix +* :ghpull:`12331`: Backport PR #12322 on branch v3.0.x (Fix the docs build.) +* :ghpull:`12327`: Backport PR #12326 on branch v3.0.x (fixed minor spelling error in docstring) +* :ghpull:`12320`: Backport PR #12319 on branch v3.0.x (Fix Travis 3.6 builds) +* :ghpull:`12315`: Backport PR #12313 on branch v3.0.x (BUG: Fix typo in view_limits() for MultipleLocator) +* :ghpull:`12313`: BUG: Fix typo in view_limits() for MultipleLocator +* :ghpull:`12305`: Backport PR #12274 on branch v3.0.x (MNT: put back ``_hold`` as read-only attribute on AxesBase) +* :ghpull:`12274`: MNT: put back ``_hold`` as read-only attribute on AxesBase +* :ghpull:`12303`: Backport PR #12163 on branch v3.0.x (TST: Defer loading Qt framework until test is run.) +* :ghpull:`12299`: Backport PR #12294 on branch v3.0.x (Fix expand_dims warnings in triinterpolate) +* :ghpull:`12163`: TST: Defer loading Qt framework until test is run. +* :ghpull:`12301`: Ghostscript 9.0 requirement revisited +* :ghpull:`12294`: Fix expand_dims warnings in triinterpolate +* :ghpull:`12297`: Remove some pytest parameterising warnings +* :ghpull:`12295`: Backport PR #12261 on branch v3.0.x (FIX: parasite axis2 demo) +* :ghpull:`12289`: Backport PR #12278 on branch v3.0.x (Document inheriting docstrings) +* :ghpull:`12287`: Backport PR #12262 on branch v3.0.x (Simplify empty-rasterized pdf test.) +* :ghpull:`12280`: Backport PR #12269 on branch v3.0.x (Add some param docs to BlockingInput methods) +* :ghpull:`12266`: Backport PR #12254 on branch v3.0.x (Improve docstrings of Animations) +* :ghpull:`12262`: Simplify empty-rasterized pdf test. +* :ghpull:`12254`: Improve docstrings of Animations +* :ghpull:`12263`: Backport PR #12258 on branch v3.0.x (Fix CSS for module-level data) +* :ghpull:`12250`: Backport PR #12209 on branch v3.0.x (Doc: Sort named colors example by palette) +* :ghpull:`12248`: Backport PR #12237 on branch v3.0.x (Use (float, float) as parameter type for 2D positions in docstrings) +* :ghpull:`12240`: Backport PR #12236 on branch v3.0.x +* :ghpull:`12237`: Use (float, float) as parameter type for 2D positions in docstrings +* :ghpull:`12242`: Backport PR #12238 on branch v3.0.x (Typo in docs) +* :ghpull:`12236`: Make boilerplate-generated pyplot.py flake8 compliant +* :ghpull:`12234`: Backport PR #12228 on branch v3.0.x (Fix trivial typo in docs.) +* :ghpull:`12230`: Backport PR #12213 on branch v3.0.x (Change win32InstalledFonts return value) +* :ghpull:`12213`: Change win32InstalledFonts return value +* :ghpull:`12223`: Backport PR #11688 on branch v3.0.x (Don't draw axis (spines, ticks, labels) twice when using parasite axes.) +* :ghpull:`12224`: Backport PR #12207 on branch v3.0.x (FIX: dont' check for interactive framework if none required) +* :ghpull:`12207`: FIX: don't check for interactive framework if none required +* :ghpull:`11688`: Don't draw axis (spines, ticks, labels) twice when using parasite axes. +* :ghpull:`12205`: Backport PR #12186 on branch v3.0.x (DOC: fix API note about get_tightbbox) +* :ghpull:`12204`: Backport PR #12203 on branch v3.0.x (Document legend best slowness) +* :ghpull:`12203`: Document legend's slowness when "best" location is used +* :ghpull:`12194`: Backport PR #12164 on branch v3.0.x (Fix Annotation.contains.) +* :ghpull:`12193`: Backport PR #12177 on branch v3.0.x (FIX: remove cwd from mac font path search) +* :ghpull:`12164`: Fix Annotation.contains. +* :ghpull:`12177`: FIX: remove cwd from mac font path search +* :ghpull:`12185`: Backport PR #12183 on branch v3.0.x (Doc: Don't use Sphinx 1.8) +* :ghpull:`12183`: Doc: Don't use Sphinx 1.8 +* :ghpull:`12172`: Backport PR #12157 on branch v3.0.x (Properly declare the interactive framework for the qt4foo backends.) +* :ghpull:`12167`: Backport PR #12166 on branch v3.0.x (Document preference order for backend auto selection) +* :ghpull:`12166`: Document preference order for backend auto selection +* :ghpull:`12157`: Properly declare the interactive framework for the qt4foo backends. +* :ghpull:`12153`: Backport PR #12148 on branch v3.0.x (BLD: pragmatic fix for building basic_unit example on py37) + +Issues (31): + +* :ghissue:`12626`: AttributeError: module 'matplotlib' has no attribute 'artist' +* :ghissue:`12613`: transiently linked interactivity of unshared pair of axes generated with make_axes_locatable +* :ghissue:`12601`: Can't import matplotlib +* :ghissue:`12580`: Incorrect hist error message with bad color size +* :ghissue:`12567`: Calling pyplot.show() with TkAgg backend on x86 machine raises OverflowError. +* :ghissue:`12556`: Matplotlib 3.0.0 import hangs in clean environment +* :ghissue:`12550`: colorbar resizes in animation +* :ghissue:`12155`: Incorrect placement of Colorbar ticks using LogNorm +* :ghissue:`12438`: Scatter doesn't accept a list of strings as color spec. +* :ghissue:`12429`: scatter() does not accept gray strings anymore +* :ghissue:`12458`: add_lines misses lines for matplotlib.colorbar.ColorbarBase +* :ghissue:`12239`: 3d axes are collapsed by tight_layout +* :ghissue:`12488`: inconsistent colorbar tick labels for LogNorm +* :ghissue:`12515`: pyplot.step broken in 3.0.0? +* :ghissue:`12355`: Error for bbox_inches='tight' in savefig with make_axes_locatable +* :ghissue:`12505`: ImageGrid in 3.0 +* :ghissue:`12291`: Importing pyplot crashes on macOS due to missing fontlist-v300.json and then Permission denied: '/opt/local/share/fonts' +* :ghissue:`12288`: New function signatures in pyplot break Cartopy +* :ghissue:`12445`: Error on colorbar +* :ghissue:`12446`: Polar Contour - float() argument must be a string or a number, not 'AxesParasiteParasiteAuxTrans' +* :ghissue:`12271`: error with errorbar with datetime64 +* :ghissue:`12405`: plt.stackplot() does not work with 3.0.0 +* :ghissue:`12406`: Bug with font finding, and here is my fix as well. +* :ghissue:`12325`: Annotation change from "s" to "text" in 3.0- documentation +* :ghissue:`11641`: constrained_layout and colorbar for a subset of axes +* :ghissue:`12352`: TeX rendering broken on master with windows +* :ghissue:`12354`: Too many levels of symbolic links +* :ghissue:`12265`: ParasiteAxesAuxTrans pcolor/pcolormesh and contour/contourf broken +* :ghissue:`12173`: Cannot import pyplot +* :ghissue:`12120`: Default legend behavior (loc='best') very slow for large amounts of data. +* :ghissue:`12176`: import pyplot on MacOS without font cache will search entire subtree of current dir diff --git a/doc/users/prev_whats_new/github_stats_3.0.2.rst b/doc/users/prev_whats_new/github_stats_3.0.2.rst index edafac67e192..395f87acd534 100644 --- a/doc/users/prev_whats_new/github_stats_3.0.2.rst +++ b/doc/users/prev_whats_new/github_stats_3.0.2.rst @@ -1,13 +1,14 @@ .. _github-stats-3-0-2: -GitHub Stats for Matplotlib 3.0.2 -================================= +GitHub statistics for 3.0.2 (Nov 10, 2018) +========================================== -GitHub stats for 2018/09/18 - 2018/11/09 (tag: v3.0.0) +GitHub statistics for 2018/09/18 (tag: v3.0.0) - 2018/11/10 These lists are automatically generated, and may be incomplete or contain duplicates. We closed 170 issues and merged 224 pull requests. +The full list can be seen `on GitHub `__ The following 49 authors contributed 460 commits. diff --git a/doc/users/prev_whats_new/github_stats_3.0.3.rst b/doc/users/prev_whats_new/github_stats_3.0.3.rst new file mode 100644 index 000000000000..5c1271e52e4f --- /dev/null +++ b/doc/users/prev_whats_new/github_stats_3.0.3.rst @@ -0,0 +1,147 @@ +.. _github-stats-3-0-3: + +GitHub statistics for 3.0.3 (Feb 28, 2019) +========================================== + +GitHub statistics for 2018/11/10 (tag: v3.0.2) - 2019/02/28 + +These lists are automatically generated, and may be incomplete or contain duplicates. + +We closed 14 issues and merged 92 pull requests. +The full list can be seen `on GitHub `__ + +The following 19 authors contributed 157 commits. + +* Antony Lee +* Christer Jensen +* Christoph Gohlke +* David Stansby +* Elan Ernest +* Elliott Sales de Andrade +* ImportanceOfBeingErnest +* James Adams +* Jody Klymak +* Johannes H. Jensen +* Matthias Geier +* MeeseeksMachine +* Molly Rossow +* Nelle Varoquaux +* Paul Ivanov +* Pierre Thibault +* Thomas A Caswell +* Tim Hoffmann +* Tobia De Koninck + +GitHub issues and pull requests: + +Pull Requests (92): + +* :ghpull:`13493`: V3.0.3 prep +* :ghpull:`13491`: V3.0.x pi +* :ghpull:`13460`: Backport PR #13455 on branch v3.0.x (BLD: only try to get freetype src if src does not exist) +* :ghpull:`13461`: Backport PR #13426 on branch v3.0.x (FIX: bbox_inches='tight' with only non-finite bounding boxes) +* :ghpull:`13426`: FIX: bbox_inches='tight' with only non-finite bounding boxes +* :ghpull:`13453`: Backport PR #13451 on branch v3.0.x (MNT: fix logic error where we never try the second freetype URL) +* :ghpull:`13451`: MNT: fix logic error where we never try the second freetype URL +* :ghpull:`13446`: Merge pull request #11246 from anntzer/download-jquery +* :ghpull:`13437`: Backport PR #13436 on branch v3.0.x (Add get/set_in_layout to artist API docs.) +* :ghpull:`13436`: Add get/set_in_layout to artist API docs. +* :ghpull:`13432`: Really fix ArtistInspector.get_aliases +* :ghpull:`13416`: Backport PR #13405 on branch v3.0.x (Fix imshow()ing PIL-opened images.) +* :ghpull:`13418`: Backport PR #13412 and #13337 on branch v3.0.x +* :ghpull:`13412`: CI: add additional qt5 deb package on travis +* :ghpull:`13370`: Backport PR #13367 on branch v3.0.x (DOC: fix note of what version hold was deprecated in (2.0 not 2.1)) +* :ghpull:`13366`: Backport PR #13365 on branch v3.0.x (Fix gcc warning) +* :ghpull:`13365`: Fix gcc warning +* :ghpull:`13347`: Backport PR #13289 on branch v3.0.x (Fix unhandled C++ exception) +* :ghpull:`13349`: Backport PR #13234 on branch v3.0.x +* :ghpull:`13281`: MAINT install of pinned vers for travis +* :ghpull:`13289`: Fix unhandled C++ exception +* :ghpull:`13345`: Backport PR #13333 on branch v3.0.x (Fix possible leak of return of PySequence_GetItem.) +* :ghpull:`13333`: Fix possible leak of return of PySequence_GetItem. +* :ghpull:`13337`: Bump to flake8 3.7. +* :ghpull:`13340`: Backport PR #12398 on branch v3.0.x (CI: Don't run AppVeyor/Travis for doc backport branches.) +* :ghpull:`13317`: Backport PR #13316 on branch v3.0.x (Put correct version in constrained layout tutorial) +* :ghpull:`13308`: Backport PR #12678 on branch v3.0.x +* :ghpull:`12678`: FIX: properly set tz for YearLocator +* :ghpull:`13291`: Backport PR #13287 on branch v3.0.x (Fix unsafe use of NULL pointer) +* :ghpull:`13290`: Backport PR #13288 on branch v3.0.x (Fix potential memory leak) +* :ghpull:`13287`: Fix unsafe use of NULL pointer +* :ghpull:`13288`: Fix potential memory leak +* :ghpull:`13273`: Backport PR #13272 on branch v3.0.x (DOC Better description of inset locator and colorbar) +* :ghpull:`12812`: Backport PR #12809 on branch v3.0.x (Fix TypeError when calculating tick_values) +* :ghpull:`13245`: Backport PR #13244 on branch v3.0.x (Fix typo) +* :ghpull:`13176`: Backport PR #13047 on branch v3.0.x (Improve docs on contourf extend) +* :ghpull:`13215`: Backport PR #13212 on branch v3.0.x (Updated the docstring for pyplot.figure to list floats as the type for figsize argument) +* :ghpull:`13158`: Backport PR #13150 on branch v3.0.x (Remove unused add_dicts from example.) +* :ghpull:`13157`: Backport PR #13152 on branch v3.0.x (DOC: Add explanatory comment for colorbar with axes divider example) +* :ghpull:`13221`: Backport PR #13194 on branch v3.0.x (TST: Fix incorrect call to pytest.raises.) +* :ghpull:`13230`: Backport PR #13226 on branch v3.0.x (Avoid triggering warnings in mandelbrot example.) +* :ghpull:`13216`: Backport #13205 on branch v3.0.x (Add xvfb service to travis) +* :ghpull:`13194`: TST: Fix incorrect call to pytest.raises. +* :ghpull:`13212`: Updated the docstring for pyplot.figure to list floats as the type for figsize argument +* :ghpull:`13205`: Add xvfb service to travis +* :ghpull:`13204`: Add xvfb service to travis +* :ghpull:`13175`: Backport PR #13015 on branch v3.0.x (Enable local doc building without git installation) +* :ghpull:`13047`: Improve docs on contourf extend +* :ghpull:`13015`: Enable local doc building without git installation +* :ghpull:`13159`: Revert "Pin pytest to <3.8 (for 3.0.x)" +* :ghpull:`13150`: Remove unused add_dicts from example. +* :ghpull:`13152`: DOC: Add explanatory comment for colorbar with axes divider example +* :ghpull:`13085`: Backport PR #13081 on branch v3.0.x (DOC: forbid a buggy version of pillow for building docs) +* :ghpull:`13082`: Backport PR #13080 on branch v3.0.x (Pin pillow to < 5.4 to fix doc build) +* :ghpull:`13054`: Backport PR #13052 on branch v3.0.x (Small bug fix in image_slices_viewer) +* :ghpull:`13052`: Small bug fix in image_slices_viewer +* :ghpull:`13036`: Backport PR #12949 on branch v3.0.x (Update docstring of Axes3d.scatter) +* :ghpull:`12949`: Update docstring of Axes3d.scatter +* :ghpull:`13004`: Backport PR #13001: Update windows build instructions +* :ghpull:`13011`: Backport PR #13006 on branch v3.0.x (Add category module to docs) +* :ghpull:`13009`: Fix dependencies for travis build with python 3.5 +* :ghpull:`13006`: Add category module to docs +* :ghpull:`13001`: Update windows build instructions +* :ghpull:`12996`: Fix return type in 3D scatter docs +* :ghpull:`12972`: Backport PR #12929 on branch v3.0.x (FIX: skip gtk backend if gobject but not pygtk is installed) +* :ghpull:`12596`: Use sudo:true for nightly builds. +* :ghpull:`12929`: FIX: skip gtk backend if gobject but not pygtk is installed +* :ghpull:`12965`: Backport PR #12960 on branch v3.0.x (Remove animated=True from animation docs) +* :ghpull:`12964`: Backport PR #12938 on branch v3.0.x (Fix xtick.minor.visible only acting on the xaxis) +* :ghpull:`12938`: Fix xtick.minor.visible only acting on the xaxis +* :ghpull:`12937`: Backport PR #12914 on branch 3.0.x: Fix numpydoc formatting +* :ghpull:`12914`: Fix numpydoc formatting +* :ghpull:`12923`: Backport PR #12921 on branch v3.0.x (Fix documentation of vert parameter of Axes.bxp) +* :ghpull:`12921`: Fix documentation of vert parameter of Axes.bxp +* :ghpull:`12912`: Backport PR #12878 on branch v3.0.2-doc (Pin pytest to <3.8 (for 3.0.x)) +* :ghpull:`12906`: Backport PR #12774 on branch v3.0.x +* :ghpull:`12774`: Cairo backend: Fix alpha render of collections +* :ghpull:`12854`: Backport PR #12835 on branch v3.0.x (Don't fail tests if cairo dependency is not installed.) +* :ghpull:`12896`: Backport PR #12848 on branch v3.0.x (Fix spelling of the name Randall Munroe) +* :ghpull:`12894`: Backport PR #12890 on branch v3.0.x (Restrict postscript title to ascii.) +* :ghpull:`12838`: Backport PR #12795 on branch v3.0.x (Fix Bezier degree elevation formula in backend_cairo.) +* :ghpull:`12843`: Backport PR #12824 on branch v3.0.x +* :ghpull:`12890`: Restrict postscript title to ascii. +* :ghpull:`12878`: Pin pytest to <3.8 (for 3.0.x) +* :ghpull:`12870`: Backport PR #12869 on branch v3.0.x (Fix latin-1-ization of Title in eps.) +* :ghpull:`12869`: Fix latin-1-ization of Title in eps. +* :ghpull:`12835`: Don't fail tests if cairo dependency is not installed. +* :ghpull:`12848`: Fix spelling of the name Randall Munroe +* :ghpull:`12795`: Fix Bezier degree elevation formula in backend_cairo. +* :ghpull:`12824`: Add missing datestr2num to docs +* :ghpull:`12791`: Backport PR #12790 on branch v3.0.x (Remove ticks and titles from tight bbox tests.) +* :ghpull:`12790`: Remove ticks and titles from tight bbox tests. + +Issues (14): + +* :ghissue:`10360`: creating PathCollection proxy artist with %matplotlib inline raises ValueError: cannot convert float NaN to integer +* :ghissue:`13276`: calling annotate with nan values for the position still gives error after 3.0.2 +* :ghissue:`13450`: Issues with jquery download caching +* :ghissue:`13223`: label1On set to true when axis.tick_params(axis='both', which='major', length=5) +* :ghissue:`13311`: docs unclear on status of constraint layout +* :ghissue:`12675`: Off-by-one bug in annual axis labels when localized time crosses year boundary +* :ghissue:`13208`: Wrong argument type for figsize in documentation for figure +* :ghissue:`13201`: test_backend_qt tests failing +* :ghissue:`13013`: v3.0.2 local html docs "git describe" error +* :ghissue:`13051`: Missing self in image_slices_viewer +* :ghissue:`12920`: Incorrect return type in mplot3d documentation +* :ghissue:`12907`: Tiny typo in documentation of matplotlib.figure.Figure.colorbar +* :ghissue:`12892`: GTK3Cairo Backend Legend TypeError +* :ghissue:`12815`: DOC: matplotlib.dates datestr2num function documentation is missing diff --git a/doc/users/prev_whats_new/github_stats_3.1.0.rst b/doc/users/prev_whats_new/github_stats_3.1.0.rst index 704de6d09932..97bee1af56b8 100644 --- a/doc/users/prev_whats_new/github_stats_3.1.0.rst +++ b/doc/users/prev_whats_new/github_stats_3.1.0.rst @@ -1,14 +1,14 @@ .. _github-stats-3-1-0: -GitHub Stats for Matplotlib 3.1.0 -================================= +GitHub statistics for 3.1.0 (May 18, 2019) +========================================== -GitHub stats for 2018/09/18 - 2019/05/13 (tag: v3.0.0) +GitHub statistics for 2018/09/18 (tag: v3.0.0) - 2019/05/18 These lists are automatically generated, and may be incomplete or contain duplicates. We closed 161 issues and merged 918 pull requests. -The full list can be seen `on GitHub `__ +The full list can be seen `on GitHub `__ The following 150 authors contributed 3426 commits. diff --git a/doc/users/prev_whats_new/github_stats_3.1.1.rst b/doc/users/prev_whats_new/github_stats_3.1.1.rst index 5de8ba84ade8..3e552c371c55 100644 --- a/doc/users/prev_whats_new/github_stats_3.1.1.rst +++ b/doc/users/prev_whats_new/github_stats_3.1.1.rst @@ -1,9 +1,9 @@ .. _github-stats-3-1-1: -GitHub Stats for Matplotlib 3.1.1 -================================= +GitHub statistics for 3.1.1 (Jul 02, 2019) +========================================== -GitHub stats for 2019/05/18 - 2019/06/30 (tag: v3.1.0) +GitHub statistics for 2019/05/18 (tag: v3.1.0) - 2019/07/02 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.1.2.rst b/doc/users/prev_whats_new/github_stats_3.1.2.rst index 9f11f34cb78a..e1ed84e26372 100644 --- a/doc/users/prev_whats_new/github_stats_3.1.2.rst +++ b/doc/users/prev_whats_new/github_stats_3.1.2.rst @@ -1,202 +1,186 @@ .. _github-stats-3-1-2: -GitHub Stats for Matplotlib 3.1.2 -================================= +GitHub statistics for 3.1.2 (Nov 21, 2019) +========================================== -GitHub stats for 2019/05/18 - 2019/06/30 (tag: v3.1.0) +GitHub statistics for 2019/07/01 (tag: v3.1.1) - 2019/11/21 These lists are automatically generated, and may be incomplete or contain duplicates. -We closed 30 issues and merged 120 pulnl requests. -The full list can be seen `on GitHub `__ +We closed 28 issues and merged 113 pull requests. +The full list can be seen `on GitHub `__ -The following 30 authors contributed 323 commits. +The following 23 authors contributed 192 commits. -* Adam Gomaa +* Alex Rudy * Antony Lee -* Ben Root -* Christer Jensen -* chuanzhu xu +* Bingyao Liu +* Cong Ma * David Stansby -* Deng Tian -* djdt -* Dora Fraeman Caswell -* Elan Ernest * Elliott Sales de Andrade -* Eric Firing -* Filipe Fernandes -* Ian Thomas +* hannah +* Hanno Rein * ImportanceOfBeingErnest +* joaonsg * Jody Klymak -* Johannes H. Jensen -* Jonas Camillus Jeppesen -* LeiSurrre -* Matt Adamson +* Matthias Bussonnier * MeeseeksMachine -* Molly Rossow -* Nathan Goldbaum +* miquelastein * Nelle Varoquaux +* Patrick Shriwise +* Paul Hoffman * Paul Ivanov -* RoryIAngus * Ryan May +* Samesh * Thomas A Caswell -* Thomas Robitaille * Tim Hoffmann +* Vincent L.M. Mazoyer GitHub issues and pull requests: -Pull Requests (120): +Pull Requests (113): -* :ghpull:`14636`: Don't capture stderr in _check_and_log_subprocess. -* :ghpull:`14655`: Backport PR #14649 on branch v3.1.x (Fix appveyor conda py37) -* :ghpull:`14649`: Fix appveyor conda py37 -* :ghpull:`14646`: Backport PR #14640 on branch v3.1.x (FIX: allow secondary axes to be non-linear) -* :ghpull:`14640`: FIX: allow secondary axes to be non-linear -* :ghpull:`14643`: Second attempt at fixing axis inversion (for mpl3.1). -* :ghpull:`14623`: Fix axis inversion with loglocator and logitlocator. -* :ghpull:`14619`: Backport PR #14598 on branch v3.1.x (Fix inversion of shared axes.) -* :ghpull:`14621`: Backport PR #14613 on branch v3.1.x (Cleanup DateFormatter docstring.) -* :ghpull:`14622`: Backport PR #14611 on branch v3.1.x (Update some axis docstrings.) -* :ghpull:`14611`: Update some axis docstrings. -* :ghpull:`14613`: Cleanup DateFormatter docstring. -* :ghpull:`14598`: Fix inversion of shared axes. -* :ghpull:`14610`: Backport PR #14579 on branch v3.1.x (Fix inversion of 3d axis.) -* :ghpull:`14579`: Fix inversion of 3d axis. -* :ghpull:`14600`: Backport PR #14599 on branch v3.1.x (DOC: Add numpngw to third party packages.) -* :ghpull:`14574`: Backport PR #14568 on branch v3.1.x (Don't assume tk canvas have a manager attached.) -* :ghpull:`14568`: Don't assume tk canvas have a manager attached. -* :ghpull:`14571`: Backport PR #14566 on branch v3.1.x (Move setting of AA_EnableHighDpiScaling before creating QApplication.) -* :ghpull:`14566`: Move setting of AA_EnableHighDpiScaling before creating QApplication. -* :ghpull:`14541`: Backport PR #14535 on branch v3.1.x (Invalidate FT2Font cache when fork()ing.) -* :ghpull:`14535`: Invalidate FT2Font cache when fork()ing. -* :ghpull:`14522`: Backport PR #14040 on branch v3.1.x (Gracefully handle non-finite z in tricontour (issue #10167)) -* :ghpull:`14434`: Backport PR #14296 on branch v3.1.x (Fix barbs to accept array of bool for ``flip_barb``) -* :ghpull:`14518`: Backport PR #14509 on branch v3.1.x (Fix too large icon spacing in Qt5 on non-HiDPI screens) -* :ghpull:`14509`: Fix too large icon spacing in Qt5 on non-HiDPI screens -* :ghpull:`14514`: Backport PR #14256 on branch v3.1.x (Improve docstring of Axes.barbs) -* :ghpull:`14256`: Improve docstring of Axes.barbs -* :ghpull:`14505`: Backport PR #14395 on branch v3.1.x (MAINT: work around non-zero exit status of "pdftops -v" command.) -* :ghpull:`14504`: Backport PR #14445 on branch v3.1.x (FIX: fastpath clipped artists) -* :ghpull:`14502`: Backport PR #14451 on branch v3.1.x (FIX: return points rather than path to fix regression) -* :ghpull:`14445`: FIX: fastpath clipped artists -* :ghpull:`14497`: Backport PR #14491 on branch v3.1.x (Fix uses of PyObject_IsTrue.) -* :ghpull:`14491`: Fix uses of PyObject_IsTrue. -* :ghpull:`14492`: Backport PR #14490 on branch v3.1.x (Fix links of parameter types) -* :ghpull:`14490`: Fix links of parameter types -* :ghpull:`14489`: Backport PR #14459 on branch v3.1.x (Cleanup docstring of DraggableBase.) -* :ghpull:`14459`: Cleanup docstring of DraggableBase. -* :ghpull:`14485`: Backport #14429 on v3.1.x -* :ghpull:`14486`: Backport #14403 on v3.1. -* :ghpull:`14429`: FIX: if the first elements of an array are masked keep checking -* :ghpull:`14481`: Backport PR #14475 on branch v3.1.x (change ginoput docstring to match behavior) -* :ghpull:`14482`: Backport PR #14464 on branch v3.1.x (Mention origin and extent tutorial in API docs for origin kwarg) -* :ghpull:`14464`: Mention origin and extent tutorial in API docs for origin kwarg -* :ghpull:`14468`: Backport PR #14449: Improve docs on gridspec -* :ghpull:`14475`: change ginoput docstring to match behavior -* :ghpull:`14477`: Backport PR #14461 on branch v3.1.x (Fix out of bounds read in backend_tk.) -* :ghpull:`14476`: Backport PR #14474 on branch v3.1.x (Fix default value in docstring of errorbar func) -* :ghpull:`14461`: Fix out of bounds read in backend_tk. -* :ghpull:`14474`: Fix default value in docstring of errorbar func -* :ghpull:`14473`: Backport PR #14472 on branch v3.1.x (Fix NameError in example code for setting label via method) -* :ghpull:`14472`: Fix NameError in example code for setting label via method -* :ghpull:`14449`: Improve docs on gridspec -* :ghpull:`14450`: Backport PR #14422 on branch v3.1.x (Fix ReST note in span selector example) -* :ghpull:`14446`: Backport PR #14438 on branch v3.1.x (Issue #14372 - Add degrees to documentation) -* :ghpull:`14438`: Issue #14372 - Add degrees to documentation -* :ghpull:`14437`: Backport PR #14387 on branch v3.1.x (Fix clearing rubberband on nbagg) -* :ghpull:`14387`: Fix clearing rubberband on nbagg -* :ghpull:`14435`: Backport PR #14425 on branch v3.1.x (Lic restore license paint) -* :ghpull:`14296`: Fix barbs to accept array of bool for ``flip_barb`` -* :ghpull:`14430`: Backport PR #14397 on branch v3.1.x (Correctly set clip_path on pcolorfast return artist.) -* :ghpull:`14397`: Correctly set clip_path on pcolorfast return artist. -* :ghpull:`14409`: Backport PR #14335 on branch v3.1.x (Add explanation of animation.embed_limit to matplotlibrc.template) -* :ghpull:`14335`: Add explanation of animation.embed_limit to matplotlibrc.template -* :ghpull:`14403`: Revert "Preserve whitespace in svg output." -* :ghpull:`14407`: Backport PR #14406 on branch v3.1.x (Remove extra \iint in math_symbol_table for document) -* :ghpull:`14398`: Backport PR #14394 on branch v3.1.x (Update link to "MathML torture test".) -* :ghpull:`14394`: Update link to "MathML torture test". -* :ghpull:`14389`: Backport PR #14388 on branch v3.1.x (Fixed one little spelling error) -* :ghpull:`14385`: Backport PR #14316 on branch v3.1.x (Improve error message for kiwisolver import error (DLL load failed)) -* :ghpull:`14388`: Fixed one little spelling error -* :ghpull:`14384`: Backport PR #14369 on branch v3.1.x (Don't use deprecated mathcircled in docs.) -* :ghpull:`14316`: Improve error message for kiwisolver import error (DLL load failed) -* :ghpull:`14369`: Don't use deprecated mathcircled in docs. -* :ghpull:`14375`: Backport PR #14374 on branch v3.1.x (Check that the figure patch is in bbox_artists before trying to remove.) -* :ghpull:`14374`: Check that the figure patch is in bbox_artists before trying to remove. -* :ghpull:`14040`: Gracefully handle non-finite z in tricontour (issue #10167) -* :ghpull:`14342`: Backport PR #14326 on branch v3.1.x (Correctly apply PNG palette when building ImageBase through Pillow.) -* :ghpull:`14326`: Correctly apply PNG palette when building ImageBase through Pillow. -* :ghpull:`14341`: Backport PR #14337 on branch v3.1.x (Docstring cleanup) -* :ghpull:`14337`: Docstring cleanup -* :ghpull:`14325`: Backport PR #14126 on branch v3.1.x (Simplify grouped bar chart example) -* :ghpull:`14324`: Backport PR #14139 on branch v3.1.x (TST: be more explicit about identifying qt4/qt5 imports) -* :ghpull:`14126`: Simplify grouped bar chart example -* :ghpull:`14323`: Backport PR #14290 on branch v3.1.x (Convert SymmetricalLogScale to numpydoc) -* :ghpull:`14139`: TST: be more explicit about identifying qt4/qt5 imports -* :ghpull:`14290`: Convert SymmetricalLogScale to numpydoc -* :ghpull:`14321`: Backport PR #14313 on branch v3.1.x -* :ghpull:`14313`: Support masked array inputs for to_rgba and to_rgba_array. -* :ghpull:`14320`: Backport PR #14319 on branch v3.1.x (Don't set missing history buttons.) -* :ghpull:`14319`: Don't set missing history buttons. -* :ghpull:`14317`: Backport PR #14295: Fix bug in SymmetricalLogTransform. -* :ghpull:`14302`: Backport PR #14255 on branch v3.1.x (Improve docsstring of Axes.streamplot) -* :ghpull:`14255`: Improve docsstring of Axes.streamplot -* :ghpull:`14295`: Fix bug in SymmetricalLogTransform. -* :ghpull:`14294`: Backport PR #14282 on branch v3.1.x (Fix toolmanager's destroy subplots in tk) -* :ghpull:`14282`: Fix toolmanager's destroy subplots in tk -* :ghpull:`14292`: Backport PR #14289 on branch v3.1.x (BUG: Fix performance regression when plotting values from Numpy array sub-classes) -* :ghpull:`14289`: BUG: Fix performance regression when plotting values from Numpy array sub-classes -* :ghpull:`14287`: Backport PR #14286 on branch v3.1.x (fix minor typo) -* :ghpull:`14284`: Backport PR #14279 on branch v3.1.x (In case fallback to Agg fails, let the exception propagate out.) -* :ghpull:`14254`: Merge up 30x -* :ghpull:`14279`: In case fallback to Agg fails, let the exception propagate out. -* :ghpull:`14268`: Backport PR #14261 on branch v3.1.x (Updated polar documentation) -* :ghpull:`14261`: Updated polar documentation -* :ghpull:`14264`: Backport PR #14260 on branch v3.1.x (Remove old OSX FAQ page) -* :ghpull:`14260`: Remove old OSX FAQ page -* :ghpull:`14249`: Backport PR #14243 on branch v3.1.x (Update docstring of makeMappingArray) -* :ghpull:`14250`: Backport PR #14149 on branch v3.1.x -* :ghpull:`14252`: Backport PR #14248 on branch v3.1.x (Fix TextBox not respecting eventson) -* :ghpull:`14253`: Backport PR #13596 on branch v3.1.x (Normalize properties passed to bxp().) -* :ghpull:`14251`: Backport PR #14241 on branch v3.1.x (Fix linear segmented colormap with one element) -* :ghpull:`13596`: Normalize properties passed to bxp(). -* :ghpull:`14248`: Fix TextBox not respecting eventson -* :ghpull:`14241`: Fix linear segmented colormap with one element -* :ghpull:`14243`: Update docstring of makeMappingArray -* :ghpull:`14238`: Backport PR #14164 on branch v3.1.x (Fix regexp for dvipng version detection) -* :ghpull:`14149`: Avoid using ``axis([xlo, xhi, ylo, yhi])`` in examples. -* :ghpull:`14164`: Fix regexp for dvipng version detection -* :ghpull:`13739`: Fix pressing tab breaks keymap in CanvasTk +* :ghpull:`15664`: Backport PR #15649 on branch v3.1.x (Fix searchindex.js loading when ajax fails (because e.g. CORS in embedded iframes)) +* :ghpull:`15722`: Backport PR #15718 on branch v3.1.x (Update donation link) +* :ghpull:`15667`: Backport PR #15654 on branch v3.1.x (Fix some broken links.) +* :ghpull:`15658`: Backport PR #15647 on branch v3.1.x (Update some links) +* :ghpull:`15582`: Backport PR #15512 on branch v3.1.x +* :ghpull:`15512`: FIX: do not consider webagg and nbagg "interactive" for fallback +* :ghpull:`15558`: Backport PR #15553 on branch v3.1.x (DOC: add cache-buster query string to css path) +* :ghpull:`15550`: Backport PR #15528 on branch v3.1.x (Declutter home page) +* :ghpull:`15547`: Backport PR #15516 on branch v3.1.x (Add logo like font) +* :ghpull:`15511`: DOC: fix nav location +* :ghpull:`15508`: Backport PR #15489 on branch v3.1.x (DOC: adding main nav to site) +* :ghpull:`15494`: Backport PR #15486 on branch v3.1.x (Fixes an error in the documentation of Ellipse) +* :ghpull:`15486`: Fixes an error in the documentation of Ellipse +* :ghpull:`15473`: Backport PR #15464 on branch v3.1.x (Remove unused code (remainder from #15453)) +* :ghpull:`15470`: Backport PR #15460 on branch v3.1.x (Fix incorrect value check in axes_grid.) +* :ghpull:`15464`: Remove unused code (remainder from #15453) +* :ghpull:`15455`: Backport PR #15453 on branch v3.1.x (Improve example for tick locators) +* :ghpull:`15453`: Improve example for tick locators +* :ghpull:`15443`: Backport PR #15439 on branch v3.1.x (DOC: mention discourse main page) +* :ghpull:`15424`: Backport PR #15422 on branch v3.1.x (FIX: typo in attribute lookup) +* :ghpull:`15322`: Backport PR #15297 on branch v3.1.x (Document How-to figure empty) +* :ghpull:`15298`: Backport PR #15296 on branch v3.1.x (Fix typo/bug from 18cecf7) +* :ghpull:`15296`: Fix typo/bug from 18cecf7 +* :ghpull:`15278`: Backport PR #15271 on branch v3.1.x (Fix font weight validation) +* :ghpull:`15271`: Fix font weight validation +* :ghpull:`15218`: Backport PR #15217 on branch v3.1.x (Doc: Add ``plt.show()`` to horizontal bar chart example) +* :ghpull:`15207`: Backport PR #15206: FIX: be more forgiving about expecting internal s… +* :ghpull:`15198`: Backport PR #15197 on branch v3.1.x (Remove mention of now-removed basedir setup option.) +* :ghpull:`15197`: Remove mention of now-removed basedir setup option. +* :ghpull:`15189`: Backport PR #14979: FIX: Don't enable IPython integration if not ente… +* :ghpull:`15190`: Backport PR #14683: For non-html output, let sphinx pick the best format +* :ghpull:`15187`: Backport PR #15140 on branch v3.1.x +* :ghpull:`15185`: Backport PR #15168 on branch v3.1.x (MNT: explicitly cast ``np.bool_`` -> bool to prevent deprecation warning) +* :ghpull:`15168`: MNT: explicitly cast ``np.bool_`` -> bool to prevent deprecation warning +* :ghpull:`15183`: Backport PR #15181 on branch v3.1.x (FIX: proper call to zero_formats) +* :ghpull:`15181`: FIX: proper call to zero_formats +* :ghpull:`15172`: Backport PR #15166 on branch v3.1.x +* :ghpull:`15166`: FIX: indexed pandas bar +* :ghpull:`15153`: Backport PR #14456 on branch v3.1.x (PyQT5 Backend Partial Redraw Fix) +* :ghpull:`14456`: PyQT5 Backend Partial Redraw Fix +* :ghpull:`15140`: Fix ScalarFormatter formatting of masked values +* :ghpull:`15135`: Backport PR #15132 on branch v3.1.x (Update documenting guide on rcParams) +* :ghpull:`15128`: Backport PR #15115 on branch v3.1.x (Doc: highlight rcparams) +* :ghpull:`15125`: Backport PR #15110 on branch v3.1.x (Add inheritance diagram to mpl.ticker docs) +* :ghpull:`15116`: Backport PR #15114 on branch v3.1.x (DOC: update language around NF) +* :ghpull:`15058`: Backport PR #15055 on branch v3.1.x (Remove mention of now-removed feature in docstring.) +* :ghpull:`15055`: Remove mention of now-removed feature in docstring. +* :ghpull:`15047`: Backport PR #14919 on branch v3.1.x (FIX constrained_layout w/ hidden axes) +* :ghpull:`14919`: FIX constrained_layout w/ hidden axes +* :ghpull:`15022`: Backport PR #15020 on branch v3.1.x (Let connectionpatch be drawn on figure level) +* :ghpull:`15020`: Let connectionpatch be drawn on figure level +* :ghpull:`15017`: Backport PR #15007 on branch v3.1.x (FIX: support pandas 0.25) +* :ghpull:`14979`: FIX: Don't enable IPython integration if not entering REPL. +* :ghpull:`14987`: Merge pull request #14915 from AWhetter/fix_14585 +* :ghpull:`14985`: Backport PR #14982 on branch v3.1.x (DOC: correct table docstring) +* :ghpull:`14982`: DOC: correct table docstring +* :ghpull:`14975`: Backport PR #14974 on branch v3.1.x (grammar) +* :ghpull:`14972`: Backport PR #14971 on branch v3.1.x (typo) +* :ghpull:`14965`: Fix typo in documentation of table +* :ghpull:`14951`: Backport PR #14934 on branch v3.1.x (DOC: update axes_demo to directly manipulate fig, ax) +* :ghpull:`14938`: Backport PR #14905 on branch v3.1.x (Gracefully handle encoding problems when querying external executables.) +* :ghpull:`14935`: Backport PR #14933 on branch v3.1.x (DOC: typo x2 costum -> custom) +* :ghpull:`14936`: Backport PR #14932 on branch v3.1.x (DOC: Update invert_example to directly manipulate axis.) +* :ghpull:`14905`: Gracefully handle encoding problems when querying external executables. +* :ghpull:`14933`: DOC: typo x2 costum -> custom +* :ghpull:`14910`: Backport PR #14901 on branch v3.1.x (Fix GH14900: numpy 1.17.0 breaks test_colors.) +* :ghpull:`14864`: Backport PR #14830 on branch v3.1.x (FIX: restore special casing of shift-enter in notebook) +* :ghpull:`14861`: Don't use pandas 0.25.0 for testing +* :ghpull:`14855`: Backport PR #14839 on branch v3.1.x +* :ghpull:`14839`: Improve docstring of Axes.hexbin +* :ghpull:`14837`: Backport PR #14757 on branch v3.1.x (Remove incorrect color/cmap docstring line in contour.py) +* :ghpull:`14836`: Backport PR #14764 on branch v3.1.x (DOC: Fixes the links in the see-also section of Axes.get_tightbbox) +* :ghpull:`14818`: Backport PR #14510 on branch v3.1.x (Improve example for fill_between) +* :ghpull:`14819`: Backport PR #14704 on branch v3.1.x (Small patches on Docs (Tutorials and FAQ)) +* :ghpull:`14820`: Backport PR #14765 on branch v3.1.x (DOC: Fix documentation location for patheffects) +* :ghpull:`14821`: Backport PR #14741 on branch v3.1.x (DOC: Update description of properties of Line2D in 'plot' documentation.) +* :ghpull:`14822`: Backport PR #14714 on branch v3.1.x (Point towards how to save output of non-interactive backends) +* :ghpull:`14823`: Backport PR #14784 on branch v3.1.x (Tiny docs/comments cleanups.) +* :ghpull:`14824`: Backport PR #14798 on branch v3.1.x (Cleanup dates.py module docstrings.) +* :ghpull:`14825`: Backport PR #14802 on branch v3.1.x (Fix some broken refs in the docs.) +* :ghpull:`14826`: Backport PR #14806 on branch v3.1.x (Remove unnecessary uses of transFigure from examples.) +* :ghpull:`14827`: Backport PR #14525 on branch v3.1.x (improve documentation of OffsetBox) +* :ghpull:`14828`: Backport PR #14548: Link to matplotlibrc of used version +* :ghpull:`14817`: Backport PR #14697 on branch v3.1.x (Fix NavigationToolbar2QT height) +* :ghpull:`14692`: Backport PR #14688 on branch v3.1.x (Revise the misleading title for subplots demo) +* :ghpull:`14816`: Backport PR #14677 on branch v3.1.x (Don't misclip axis when calling set_ticks on inverted axes.) +* :ghpull:`14815`: Backport PR #14658 on branch v3.1.x (Fix numpydoc formatting) +* :ghpull:`14813`: Backport PR #14488 on branch v3.1.x (Make sure EventCollection doesn't modify input in-place) +* :ghpull:`14806`: Remove unnecessary uses of transFigure from examples. +* :ghpull:`14802`: Fix some broken refs in the docs. +* :ghpull:`14798`: Cleanup dates.py module docstrings. +* :ghpull:`14784`: Tiny docs/comments cleanups. +* :ghpull:`14764`: DOC: Fixes the links in the see-also section of Axes.get_tightbbox +* :ghpull:`14777`: Backport PR #14775 on branch v3.1.x (DOC: Fix CircleCI builds) +* :ghpull:`14769`: Backport PR #14759 on branch v3.1.x (DOC: note about having to rebuild after switching to local freetype) +* :ghpull:`14714`: Point towards how to save output of non-interactive backends +* :ghpull:`14741`: DOC: Update description of properties of Line2D in 'plot' documentation. +* :ghpull:`14771`: Backport PR #14760 on branch v3.1.x (DOC: minor CoC wording change) +* :ghpull:`14765`: DOC: Fix documentation location for patheffects +* :ghpull:`14735`: Backport PR #14734 on branch v3.1.x (Add geoplot to third-party example libraries page.) +* :ghpull:`14711`: Backport PR #14706 on branch v3.1.x (Mention gr backend in docs.) +* :ghpull:`14704`: Small patches on Docs (Tutorials and FAQ) +* :ghpull:`14700`: Backport PR #14698 on branch v3.1.x (Make property name be consistent with rc parameter.) +* :ghpull:`14510`: Improve example for fill_between +* :ghpull:`14683`: For non-html output, let sphinx pick the best format. +* :ghpull:`14697`: Fix NavigationToolbar2QT height +* :ghpull:`14677`: Don't misclip axis when calling set_ticks on inverted axes. +* :ghpull:`14658`: Fix numpydoc formatting +* :ghpull:`14488`: Make sure EventCollection doesn't modify input in-place +* :ghpull:`14570`: Remove print statements +* :ghpull:`14525`: improve documentation of OffsetBox +* :ghpull:`14548`: Link to matplotlibrc of used version +* :ghpull:`14395`: MAINT: work around non-zero exit status of "pdftops -v" command. -Issues (30): +Issues (28): -* :ghissue:`14620`: Plotting on a log/logit scale overwrites axis inverting -* :ghissue:`14615`: Inverting an axis using its limits does not work for log scale -* :ghissue:`14577`: Calling invert_yaxis() on a 3D plot has either no effect or removes ticks -* :ghissue:`14602`: NavigationToolbar2Tk save_figure function bug -* :ghissue:`1219`: Show fails on figures created with the object-oriented system -* :ghissue:`10167`: Segmentation fault with tricontour -* :ghissue:`13723`: RuntimeError when saving PDFs via parallel processes (not threads!) -* :ghissue:`14315`: Improvement: Better error message if kiwisolver fails to import -* :ghissue:`14356`: matplotlib.units.ConversionError on scatter of dates with a NaN in the first position -* :ghissue:`14467`: Docs for plt.ginput() have the wrong default value for show_clicks keyword argument. -* :ghissue:`14225`: Matplotlib crashes on windows while maximizing plot window when using Multicursor -* :ghissue:`14458`: DOC: small inconsistency in errobar docstring -* :ghissue:`14372`: Document that view_init() arguments should be in degrees -* :ghissue:`12201`: issues clearing rubberband on nbagg at non-default browser zoom -* :ghissue:`13576`: pcolorfast misbehaves when changing axis limits -* :ghissue:`14303`: Unable to import matplotlib on Windows 10 v1903 -* :ghissue:`14283`: RendererSVG CSS 'white-space' property conflicts with default HTML CSS -* :ghissue:`14293`: imshow() producing "inverted" colors since 3.0.3 -* :ghissue:`14322`: Cannot import matplotlib with Python 3.7.x on Win10Pro -* :ghissue:`14137`: Qt5 test auto-skip is not working correctly -* :ghissue:`14301`: scatter() fails on nan-containing input when providing edgecolor -* :ghissue:`14318`: Don't try to set missing history buttons. -* :ghissue:`14265`: symlog looses some points since 3.1.0 (example given) -* :ghissue:`14274`: BUG: plotting with Numpy array subclasses is slow with Matplotlib 3.1.0 (regression) -* :ghissue:`14263`: import pyplot issue - -* :ghissue:`14227`: Update "working with Mpl on OSX" docs -* :ghissue:`13448`: boxplot doesn't normalize properties before applying them -* :ghissue:`14226`: Modify matplotlib TextBox value without triggering callback -* :ghissue:`14232`: LinearSegmentedColormap with N=1 gives confusing error message -* :ghissue:`10365`: Scatter plot with non-sequence ´c´ color should give a better Error message. +* :ghissue:`15295`: Can't install matplotlib with pip for Python 3.8b4 +* :ghissue:`15714`: Publish 3.8 wheels +* :ghissue:`15706`: Python 3.8 - Installation error: TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType +* :ghissue:`15690`: Should xlim support single-entry arrays? +* :ghissue:`15608`: imshow rendering changed from 3.1.0 to 3.1.1 +* :ghissue:`14903`: 'MPLBACKEND=webagg' is overwritten by agg when $DISPLAY is not set on Linux +* :ghissue:`15351`: Bar width expands between subsequent bars +* :ghissue:`15240`: Can't specify integer ``font.weight`` in custom style sheet any more +* :ghissue:`15255`: ``imshow`` in ``v3.1.1``: y-axis chopped-off +* :ghissue:`15186`: 3D quiver plot fails when pivot = "middle" +* :ghissue:`14160`: PySide2/PyQt5: Graphics issues in QScrollArea for OSX +* :ghissue:`15178`: mdates.ConciseDateFormatter() doesn't work with zero_formats parameter +* :ghissue:`15179`: Patch 3.1.1 broke imshow() heatmaps: Tiles cut off on y-axis +* :ghissue:`15162`: axes.bar fails when x is int-indexed pandas.Series +* :ghissue:`15103`: Colorbar for imshow messes interactive cursor with masked data +* :ghissue:`8744`: ConnectionPatch hidden by plots +* :ghissue:`14950`: plt.ioff() not supressing figure generation +* :ghissue:`14959`: Typo in Docs +* :ghissue:`14902`: from matplotlib import animation UnicodeDecodeError +* :ghissue:`14897`: New yticks behavior in 3.1.1 vs 3.1.0 +* :ghissue:`14811`: How to save hexbin binned data in a text file. +* :ghissue:`14551`: Non functional API links break docs builds downstream +* :ghissue:`14720`: Line2D properties should state units +* :ghissue:`10891`: Toolbar icons too large in PyQt5 (Qt5Agg backend) +* :ghissue:`14675`: Heatmaps are being truncated when using with seaborn +* :ghissue:`14487`: eventplot sorts np.array positions, but not list positions +* :ghissue:`14547`: Changing mplstyle: axes.titlelocation causes Bad Key error +* :ghissue:`10410`: eventplot alters data in some cases diff --git a/doc/users/prev_whats_new/github_stats_3.1.3.rst b/doc/users/prev_whats_new/github_stats_3.1.3.rst new file mode 100644 index 000000000000..b4706569df02 --- /dev/null +++ b/doc/users/prev_whats_new/github_stats_3.1.3.rst @@ -0,0 +1,87 @@ +.. _github-stats-3-1-3: + +GitHub statistics for 3.1.3 (Feb 03, 2020) +========================================== + +GitHub statistics for 2019/11/05 (tag: v3.1.2) - 2020/02/03 + +These lists are automatically generated, and may be incomplete or contain duplicates. + +We closed 7 issues and merged 45 pull requests. +The full list can be seen `on GitHub `__ + +The following 13 authors contributed 125 commits. + +* Antony Lee +* David Stansby +* Elliott Sales de Andrade +* hannah +* Jody Klymak +* MeeseeksMachine +* Nelle Varoquaux +* Nikita Kniazev +* Paul Ivanov +* SamSchott +* Steven G. Johnson +* Thomas A Caswell +* Tim Hoffmann + +GitHub issues and pull requests: + +Pull Requests (45): + +* :ghpull:`16382`: Backport PR #16379 on branch v3.1.x (FIX: catch on message content, not module) +* :ghpull:`16362`: Backport PR #16347: FIX: catch warnings from pandas in cbook._check_1d +* :ghpull:`16356`: Backport PR #16330 on branch v3.1.x (Clearer signal handling) +* :ghpull:`16330`: Clearer signal handling +* :ghpull:`16348`: Backport PR #16255 on branch v3.1.x (Move version info to sidebar) +* :ghpull:`16345`: Backport PR #16298 on branch v3.1.x (Don't recursively call draw_idle when updating artists at draw time.) +* :ghpull:`16298`: Don't recursively call draw_idle when updating artists at draw time. +* :ghpull:`16322`: Backport PR #16250: Fix zerolen intersect +* :ghpull:`16320`: Backport PR #16311 on branch v3.1.x (don't override non-Python signal handlers) +* :ghpull:`16311`: don't override non-Python signal handlers +* :ghpull:`16250`: Fix zerolen intersect +* :ghpull:`16237`: Backport PR #16235 on branch v3.1.x (FIX: AttributeError in TimerBase.start) +* :ghpull:`16235`: FIX: AttributeError in TimerBase.start +* :ghpull:`16208`: Backport PR #15556 on branch v3.1.x (Fix test suite compat with ghostscript 9.50.) +* :ghpull:`16213`: Backport PR #15763 on branch v3.1.x (Skip webagg test if tornado is not available.) +* :ghpull:`16167`: Backport PR #16166 on branch v3.1.x (Add badge for citing 3.1.2) +* :ghpull:`16166`: Add badge for citing 3.1.2 +* :ghpull:`16144`: Backport PR #16053 on branch v3.1.x (Fix v_interval setter) +* :ghpull:`16053`: Fix v_interval setter +* :ghpull:`16136`: Backport PR #16112 on branch v3.1.x (CI: Fail when failed to install dependencies) +* :ghpull:`16131`: Backport PR #16126 on branch v3.1.x (TST: test_fork: Missing join) +* :ghpull:`16126`: TST: test_fork: Missing join +* :ghpull:`16091`: Backport PR #16086 on branch v3.1.x (FIX: use supported attribute to check pillow version) +* :ghpull:`16040`: Backport PR #16031 on branch v3.1.x (Fix docstring of hillshade().) +* :ghpull:`16032`: Backport PR #16028 on branch v3.1.x (Prevent FigureCanvasQT_draw_idle recursively calling itself.) +* :ghpull:`16028`: Prevent FigureCanvasQT_draw_idle recursively calling itself. +* :ghpull:`16020`: Backport PR #16007 on branch v3.1.x (Fix search on nested pages) +* :ghpull:`16018`: Backport PR #15735 on branch v3.1.x (Cleanup some mplot3d docstrings.) +* :ghpull:`16007`: Fix search on nested pages +* :ghpull:`15957`: Backport PR #15953 on branch v3.1.x (Update donation link) +* :ghpull:`15763`: Skip webagg test if tornado is not available. +* :ghpull:`15881`: Backport PR #15859 on branch v3.1.x (Doc: Move search field into nav bar) +* :ghpull:`15863`: Backport PR #15244 on branch v3.1.x: Change documentation format of rcParams defaults +* :ghpull:`15859`: Doc: Move search field into nav bar +* :ghpull:`15860`: Backport PR #15851 on branch v3.1.x (ffmpeg is available on default ubuntu packages now) +* :ghpull:`15851`: ffmpeg is available on default ubuntu packages now. +* :ghpull:`15843`: Backport PR #15737 on branch v3.1.x (Fix env override in WebAgg backend test.) +* :ghpull:`15760`: Backport PR #15752 on branch v3.1.x (Update boxplot/violinplot faq.) +* :ghpull:`15757`: Backport PR #15751 on branch v3.1.x (Modernize FAQ entry for plt.show().) +* :ghpull:`15735`: Cleanup some mplot3d docstrings. +* :ghpull:`15753`: Backport PR #15661 on branch v3.1.x (Document scope of 3D scatter depthshading.) +* :ghpull:`15741`: Backport PR #15729 on branch v3.1.x (Catch correct parse errror type for dateutil >= 2.8.1) +* :ghpull:`15729`: Catch correct parse errror type for dateutil >= 2.8.1 +* :ghpull:`15737`: Fix env override in WebAgg backend test. +* :ghpull:`15244`: Change documentation format of rcParams defaults + +Issues (7): + +* :ghissue:`16294`: BUG: Interactive mode slow +* :ghissue:`15842`: Path.intersects_path returns True when it shouldn't +* :ghissue:`16163`: libpng error: Read Error when using matplotlib after setting usetex=True +* :ghissue:`15960`: v3.1.2 - test suite "frozen" after it finishes +* :ghissue:`16083`: Pillow 7.0.0 Support +* :ghissue:`15481`: Recursion error +* :ghissue:`15717`: Move search field into nav bar diff --git a/doc/users/prev_whats_new/github_stats_3.2.0.rst b/doc/users/prev_whats_new/github_stats_3.2.0.rst index f5cee3ad245c..5fd75f7c57d0 100644 --- a/doc/users/prev_whats_new/github_stats_3.2.0.rst +++ b/doc/users/prev_whats_new/github_stats_3.2.0.rst @@ -1,9 +1,9 @@ .. _github-stats-3-2-0: -GitHub Stats for Matplotlib 3.2.0 -================================= +GitHub statistics for 3.2.0 (Mar 04, 2020) +========================================== -GitHub stats for 2019/05/18 - 2020/03/03 (tag: v3.1.0) +GitHub statistics for 2019/05/18 (tag: v3.1.0) - 2020/03/04 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.2.1.rst b/doc/users/prev_whats_new/github_stats_3.2.1.rst index ec95cf4a7887..4f865dbb5429 100644 --- a/doc/users/prev_whats_new/github_stats_3.2.1.rst +++ b/doc/users/prev_whats_new/github_stats_3.2.1.rst @@ -1,9 +1,9 @@ .. _github-stats-3-2-1: -GitHub Stats for Matplotlib 3.2.1 -================================= +GitHub statistics for 3.2.1 (Mar 18, 2020) +========================================== -GitHub stats for 2020/03/03 - 2020/03/17 (tag: v3.2.0) +GitHub statistics for 2020/03/03 (tag: v3.2.0) - 2020/03/18 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.2.2.rst b/doc/users/prev_whats_new/github_stats_3.2.2.rst index 8cd4e4eef1d7..9026d518ce4d 100644 --- a/doc/users/prev_whats_new/github_stats_3.2.2.rst +++ b/doc/users/prev_whats_new/github_stats_3.2.2.rst @@ -1,9 +1,9 @@ .. _github-stats-3-2-2: -GitHub Stats for Matplotlib 3.2.2 -================================= +GitHub statistics for 3.2.2 (Jun 17, 2020) +========================================== -GitHub stats for 2020/03/18 - 2020/06/17 (tag: v3.2.1) +GitHub statistics for 2020/03/18 (tag: v3.2.1) - 2020/06/17 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.3.0.rst b/doc/users/prev_whats_new/github_stats_3.3.0.rst index c57d4cda8cba..c2e6cd132c2d 100644 --- a/doc/users/prev_whats_new/github_stats_3.3.0.rst +++ b/doc/users/prev_whats_new/github_stats_3.3.0.rst @@ -1,9 +1,9 @@ .. _github-stats-3-3-0: -GitHub Stats for Matplotlib 3.3.0 -================================= +GitHub statistics for 3.3.0 (Jul 16, 2020) +========================================== -GitHub stats for 2020/03/03 - 2020/07/16 (tag: v3.2.0) +GitHub statistics for 2020/03/03 (tag: v3.2.0) - 2020/07/16 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.3.1.rst b/doc/users/prev_whats_new/github_stats_3.3.1.rst index ed6638638959..49212587a17a 100644 --- a/doc/users/prev_whats_new/github_stats_3.3.1.rst +++ b/doc/users/prev_whats_new/github_stats_3.3.1.rst @@ -1,9 +1,9 @@ .. _github-stats-3-3-1: -GitHub Stats for Matplotlib 3.3.1 -================================= +GitHub statistics for 3.3.1 (Aug 13, 2020) +========================================== -GitHub stats for 2020/07/16 - 2020/08/13 (tag: v3.3.0) +GitHub statistics for 2020/07/16 (tag: v3.3.0) - 2020/08/13 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.3.2.rst b/doc/users/prev_whats_new/github_stats_3.3.2.rst index 8f9bb9a6eceb..0bc03cbc83ee 100644 --- a/doc/users/prev_whats_new/github_stats_3.3.2.rst +++ b/doc/users/prev_whats_new/github_stats_3.3.2.rst @@ -1,9 +1,9 @@ .. _github-stats-3-3-2: -GitHub Stats for Matplotlib 3.3.2 -================================= +GitHub statistics for 3.3.2 (Sep 15, 2020) +========================================== -GitHub stats for 2020/08/14 - 2020/09/15 (tag: v3.3.1) +GitHub statistics for 2020/08/14 - 2020/09/15 (tag: v3.3.1) These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.3.3.rst b/doc/users/prev_whats_new/github_stats_3.3.3.rst index d7ba592d7339..5475a5209eed 100644 --- a/doc/users/prev_whats_new/github_stats_3.3.3.rst +++ b/doc/users/prev_whats_new/github_stats_3.3.3.rst @@ -1,9 +1,9 @@ .. _github-stats-3-3-3: -GitHub Stats for Matplotlib 3.3.3 -================================= +GitHub statistics for 3.3.3 (Nov 11, 2020) +========================================== -GitHub stats for 2020/09/15 - 2020/11/11 (tag: v3.3.2) +GitHub statistics for 2020/09/15 (tag: v3.3.2) - 2020/11/11 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.3.4.rst b/doc/users/prev_whats_new/github_stats_3.3.4.rst index e61309836034..afff8b384b8e 100644 --- a/doc/users/prev_whats_new/github_stats_3.3.4.rst +++ b/doc/users/prev_whats_new/github_stats_3.3.4.rst @@ -1,9 +1,9 @@ .. _github-stats-3-3-4: -GitHub Stats for Matplotlib 3.3.4 -================================= +GitHub statistics for 3.3.4 (Jan 28, 2021) +========================================== -GitHub stats for 2020/11/12 - 2021/01/28 (tag: v3.3.3) +GitHub statistics for 2020/11/12 (tag: v3.3.3) - 2021/01/28 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.4.0.rst b/doc/users/prev_whats_new/github_stats_3.4.0.rst index eeb53d647957..fe49e673a660 100644 --- a/doc/users/prev_whats_new/github_stats_3.4.0.rst +++ b/doc/users/prev_whats_new/github_stats_3.4.0.rst @@ -1,9 +1,9 @@ .. _github-stats-3-4-0: -GitHub Stats for Matplotlib 3.4.0 -================================= +GitHub statistics for 3.4.0 (Mar 26, 2021) +========================================== -GitHub stats for 2020/07/16 - 2021/03/25 (tag: v3.3.0) +GitHub statistics for 2020/07/16 (tag: v3.3.0) - 2021/03/26 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.4.1.rst b/doc/users/prev_whats_new/github_stats_3.4.1.rst index 220ed67a489a..0819a6850a3e 100644 --- a/doc/users/prev_whats_new/github_stats_3.4.1.rst +++ b/doc/users/prev_whats_new/github_stats_3.4.1.rst @@ -1,9 +1,9 @@ .. _github-stats-3-4-1: -GitHub Stats for Matplotlib 3.4.1 -================================= +GitHub statistics for 3.4.1 (Mar 31, 2021) +========================================== -GitHub stats for 2021/03/26 - 2021/03/31 (tag: v3.4.0) +GitHub statistics for 2021/03/26 (tag: v3.4.0) - 2021/03/31 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/github_stats_3.4.2.rst b/doc/users/prev_whats_new/github_stats_3.4.2.rst index badd0a589785..22b4797c2fc2 100644 --- a/doc/users/prev_whats_new/github_stats_3.4.2.rst +++ b/doc/users/prev_whats_new/github_stats_3.4.2.rst @@ -1,9 +1,9 @@ .. _github-stats-3-4-2: -GitHub Stats for Matplotlib 3.4.2 -================================= +GitHub statistics for 3.4.2 (May 08, 2021) +========================================== -GitHub stats for 2021/03/31 - 2021/05/07 (tag: v3.4.1) +GitHub statistics for 2021/03/31 (tag: v3.4.1) - 2021/05/08 These lists are automatically generated, and may be incomplete or contain duplicates. diff --git a/doc/users/prev_whats_new/whats_new_0.98.4.rst b/doc/users/prev_whats_new/whats_new_0.98.4.rst index 8e4635c175dd..88d376cf79bf 100644 --- a/doc/users/prev_whats_new/whats_new_0.98.4.rst +++ b/doc/users/prev_whats_new/whats_new_0.98.4.rst @@ -1,7 +1,7 @@ .. _whats-new-0-98-4: -New in matplotlib 0.98.4 -======================== +What's new in Matplotlib 0.98.4 +=============================== .. contents:: Table of Contents :depth: 2 diff --git a/doc/users/prev_whats_new/whats_new_0.99.rst b/doc/users/prev_whats_new/whats_new_0.99.rst index fc8b581f605a..94abde7fe4da 100644 --- a/doc/users/prev_whats_new/whats_new_0.99.rst +++ b/doc/users/prev_whats_new/whats_new_0.99.rst @@ -1,7 +1,7 @@ .. _whats-new-0-99: -New in matplotlib 0.99 -====================== +What's new in Matplotlib 0.99 (Aug 29, 2009) +============================================ .. contents:: Table of Contents :depth: 2 diff --git a/doc/users/prev_whats_new/whats_new_1.0.rst b/doc/users/prev_whats_new/whats_new_1.0.rst index ac54539c6da9..f80b5ce27972 100644 --- a/doc/users/prev_whats_new/whats_new_1.0.rst +++ b/doc/users/prev_whats_new/whats_new_1.0.rst @@ -1,7 +1,7 @@ .. _whats-new-1-0: -New in matplotlib 1.0 -===================== +What's new in Matplotlib 1.0 (Jul 06, 2010) +=========================================== .. contents:: Table of Contents :depth: 2 diff --git a/doc/users/prev_whats_new/whats_new_1.1.rst b/doc/users/prev_whats_new/whats_new_1.1.rst index 0ff0d46b0843..9b19872a6031 100644 --- a/doc/users/prev_whats_new/whats_new_1.1.rst +++ b/doc/users/prev_whats_new/whats_new_1.1.rst @@ -1,7 +1,7 @@ .. _whats-new-1-1: -New in matplotlib 1.1 -===================== +What's new in Matplotlib 1.1 (Nov 02, 2011) +=========================================== .. contents:: Table of Contents :depth: 2 diff --git a/doc/users/prev_whats_new/whats_new_1.2.2.rst b/doc/users/prev_whats_new/whats_new_1.2.2.rst index 51c43403d22c..ab81018925cd 100644 --- a/doc/users/prev_whats_new/whats_new_1.2.2.rst +++ b/doc/users/prev_whats_new/whats_new_1.2.2.rst @@ -1,7 +1,7 @@ .. _whats-new-1-2-2: -New in matplotlib 1.2.2 -======================= +What's new in Matplotlib 1.2.2 +============================== .. contents:: Table of Contents :depth: 2 diff --git a/doc/users/prev_whats_new/whats_new_1.2.rst b/doc/users/prev_whats_new/whats_new_1.2.rst index c6483584c83c..4169e47bd766 100644 --- a/doc/users/prev_whats_new/whats_new_1.2.rst +++ b/doc/users/prev_whats_new/whats_new_1.2.rst @@ -1,8 +1,8 @@ .. _whats-new-1-2: -New in matplotlib 1.2 -===================== +What's new in Matplotlib 1.2 (Nov 9, 2012) +========================================== .. contents:: Table of Contents :depth: 2 diff --git a/doc/users/prev_whats_new/whats_new_1.3.rst b/doc/users/prev_whats_new/whats_new_1.3.rst index 0107bc7efb65..d10fc738e118 100644 --- a/doc/users/prev_whats_new/whats_new_1.3.rst +++ b/doc/users/prev_whats_new/whats_new_1.3.rst @@ -1,7 +1,7 @@ .. _whats-new-1-3: -New in matplotlib 1.3 -===================== +What's new in Matplotlib 1.3 (Aug 01, 2013) +=========================================== .. contents:: Table of Contents :depth: 2 diff --git a/doc/users/prev_whats_new/whats_new_1.4.rst b/doc/users/prev_whats_new/whats_new_1.4.rst index 2d14709b8185..a58f3348ff68 100644 --- a/doc/users/prev_whats_new/whats_new_1.4.rst +++ b/doc/users/prev_whats_new/whats_new_1.4.rst @@ -1,8 +1,8 @@ .. _whats-new-1-4: -New in matplotlib 1.4 -===================== +What's new in Matplotlib 1.4 (Aug 25, 2014) +=========================================== Thomas A. Caswell served as the release manager for the 1.4 release. diff --git a/doc/users/prev_whats_new/whats_new_1.5.rst b/doc/users/prev_whats_new/whats_new_1.5.rst index 125e87c512d0..3eb017851168 100644 --- a/doc/users/prev_whats_new/whats_new_1.5.rst +++ b/doc/users/prev_whats_new/whats_new_1.5.rst @@ -1,7 +1,7 @@ .. _whats-new-1-5: -New in matplotlib 1.5 -===================== +What's new in Matplotlib 1.5 (Oct 29, 2015) +=========================================== .. contents:: Table of Contents :depth: 2 diff --git a/doc/users/prev_whats_new/whats_new_2.0.0.rst b/doc/users/prev_whats_new/whats_new_2.0.0.rst index 8d9e7e72c125..94da59cd1b88 100644 --- a/doc/users/prev_whats_new/whats_new_2.0.0.rst +++ b/doc/users/prev_whats_new/whats_new_2.0.0.rst @@ -1,11 +1,11 @@ .. _whats-new-2-0-0: -New in matplotlib 2.0 -===================== +What's new in Matplotlib 2.0 (Jan 17, 2017) +=========================================== .. note:: - matplotlib 2.0 supports Python 2.7, and 3.4+ + Matplotlib 2.0 supports Python 2.7, and 3.4+ diff --git a/doc/users/prev_whats_new/whats_new_2.1.0.rst b/doc/users/prev_whats_new/whats_new_2.1.0.rst index 83d6091efe6d..a66e2e10f3a2 100644 --- a/doc/users/prev_whats_new/whats_new_2.1.0.rst +++ b/doc/users/prev_whats_new/whats_new_2.1.0.rst @@ -1,7 +1,7 @@ .. _whats-new-2-1-0: -New in Matplotlib 2.1.0 -======================= +What's new in Matplotlib 2.1.0 (Oct 7, 2017) +============================================ Documentation +++++++++++++ diff --git a/doc/users/prev_whats_new/whats_new_2.2.rst b/doc/users/prev_whats_new/whats_new_2.2.rst index 05affccc7a6f..3dbe6482fd87 100644 --- a/doc/users/prev_whats_new/whats_new_2.2.rst +++ b/doc/users/prev_whats_new/whats_new_2.2.rst @@ -1,7 +1,7 @@ .. _whats-new-2-2-0: -New in Matplotlib 2.2 -===================== +What's new in Matplotlib 2.2 (Mar 06, 2018) +=========================================== Constrained Layout Manager -------------------------- diff --git a/doc/users/prev_whats_new/whats_new_3.0.rst b/doc/users/prev_whats_new/whats_new_3.0.rst index 8aaf4a2d1770..99de2caf9309 100644 --- a/doc/users/prev_whats_new/whats_new_3.0.rst +++ b/doc/users/prev_whats_new/whats_new_3.0.rst @@ -1,7 +1,7 @@ .. _whats-new-3-0-0: -New in Matplotlib 3.0 -===================== +What's new in Matplotlib 3.0 (Sep 18, 2018) +=========================================== Improved default backend selection ---------------------------------- diff --git a/doc/users/prev_whats_new/whats_new_3.1.0.rst b/doc/users/prev_whats_new/whats_new_3.1.0.rst index 9152a0dadd98..8821f8e59257 100644 --- a/doc/users/prev_whats_new/whats_new_3.1.0.rst +++ b/doc/users/prev_whats_new/whats_new_3.1.0.rst @@ -1,6 +1,7 @@ +.. _whats-new-3-1-0: -What's new in Matplotlib 3.1 -============================ +What's new in Matplotlib 3.1 (May 18, 2019) +=========================================== For a list of all of the issues and pull requests since the last revision, see the :ref:`github-stats`. diff --git a/doc/users/prev_whats_new/whats_new_3.2.0.rst b/doc/users/prev_whats_new/whats_new_3.2.0.rst index efa099d01a23..12d7fab3af90 100644 --- a/doc/users/prev_whats_new/whats_new_3.2.0.rst +++ b/doc/users/prev_whats_new/whats_new_3.2.0.rst @@ -1,6 +1,7 @@ +.. _whats-new-3-2-0: -What's new in Matplotlib 3.2 -============================ +What's new in Matplotlib 3.2 (Mar 04, 2020) +=========================================== For a list of all of the issues and pull requests since the last revision, see the :ref:`github-stats`. diff --git a/doc/users/prev_whats_new/whats_new_3.3.0.rst b/doc/users/prev_whats_new/whats_new_3.3.0.rst index 18c22e2cb3cb..f9c9fdcd3713 100644 --- a/doc/users/prev_whats_new/whats_new_3.3.0.rst +++ b/doc/users/prev_whats_new/whats_new_3.3.0.rst @@ -1,6 +1,8 @@ -============================== -What's new in Matplotlib 3.3.0 -============================== +.. _whats-new-3-3-0: + +============================================= +What's new in Matplotlib 3.3.0 (Jul 16, 2020) +============================================= For a list of all of the issues and pull requests since the last revision, see the :ref:`github-stats`. diff --git a/doc/users/prev_whats_new/whats_new_3.4.0.rst b/doc/users/prev_whats_new/whats_new_3.4.0.rst index cb8220bb5f0b..3c11359868dc 100644 --- a/doc/users/prev_whats_new/whats_new_3.4.0.rst +++ b/doc/users/prev_whats_new/whats_new_3.4.0.rst @@ -1,6 +1,8 @@ -============================== -What's new in Matplotlib 3.4.0 -============================== +.. _whats-new-3-4-0: + +============================================= +What's new in Matplotlib 3.4.0 (Mar 26, 2021) +============================================= For a list of all of the issues and pull requests since the last revision, see the :ref:`github-stats`. diff --git a/doc/users/release_notes.rst b/doc/users/release_notes.rst index 440beab397b7..98a9ae260de0 100644 --- a/doc/users/release_notes.rst +++ b/doc/users/release_notes.rst @@ -9,8 +9,8 @@ Release notes .. include from another document so that it's easy to exclude this for releases .. include:: release_notes_next.rst -3.4 -=== +Version 3.4 +=========== .. toctree:: :maxdepth: 1 @@ -20,8 +20,8 @@ Release notes prev_whats_new/github_stats_3.4.1.rst prev_whats_new/github_stats_3.4.0.rst -3.3 -=== +Version 3.3 +=========== .. toctree:: :maxdepth: 1 @@ -34,8 +34,8 @@ Release notes prev_whats_new/github_stats_3.3.1.rst prev_whats_new/github_stats_3.3.0.rst -3.2 -=== +Version 3.2 +=========== .. toctree:: :maxdepth: 1 @@ -45,38 +45,42 @@ Release notes prev_whats_new/github_stats_3.2.1.rst prev_whats_new/github_stats_3.2.0.rst -3.1 -=== +Version 3.1 +=========== .. toctree:: :maxdepth: 1 prev_whats_new/whats_new_3.1.0.rst ../api/prev_api_changes/api_changes_3.1.1.rst ../api/prev_api_changes/api_changes_3.1.0.rst + prev_whats_new/github_stats_3.1.3.rst prev_whats_new/github_stats_3.1.2.rst prev_whats_new/github_stats_3.1.1.rst prev_whats_new/github_stats_3.1.0.rst -3.0 -=== +Version 3.0 +=========== .. toctree:: :maxdepth: 1 prev_whats_new/whats_new_3.0.rst ../api/prev_api_changes/api_changes_3.0.1.rst ../api/prev_api_changes/api_changes_3.0.0.rst + prev_whats_new/github_stats_3.0.3.rst prev_whats_new/github_stats_3.0.2.rst + prev_whats_new/github_stats_3.0.1.rst + prev_whats_new/github_stats_3.0.0.rst -2.2 -=== +Version 2.2 +=========== .. toctree:: :maxdepth: 1 prev_whats_new/whats_new_2.2.rst ../api/prev_api_changes/api_changes_2.2.0.rst -2.1 -=== +Version 2.1 +=========== .. toctree:: :maxdepth: 1 @@ -85,8 +89,8 @@ Release notes ../api/prev_api_changes/api_changes_2.1.1.rst ../api/prev_api_changes/api_changes_2.1.0.rst -2.0 -=== +Version 2.0 +=========== .. toctree:: :maxdepth: 1 @@ -94,8 +98,8 @@ Release notes ../api/prev_api_changes/api_changes_2.0.1.rst ../api/prev_api_changes/api_changes_2.0.0.rst -1.5 -=== +Version 1.5 +=========== .. toctree:: :maxdepth: 1 @@ -103,8 +107,8 @@ Release notes ../api/prev_api_changes/api_changes_1.5.3.rst ../api/prev_api_changes/api_changes_1.5.2.rst -1.4 -=== +Version 1.4 +=========== .. toctree:: :maxdepth: 1 @@ -112,16 +116,16 @@ Release notes ../api/prev_api_changes/api_changes_1.4.x.rst ../api/prev_api_changes/api_changes_1.5.0.rst -1.3 -=== +Version 1.3 +=========== .. toctree:: :maxdepth: 1 prev_whats_new/whats_new_1.3.rst ../api/prev_api_changes/api_changes_1.3.x.rst -1.2 -=== +Version 1.2 +=========== .. toctree:: :maxdepth: 1 @@ -129,23 +133,23 @@ Release notes prev_whats_new/whats_new_1.2.rst ../api/prev_api_changes/api_changes_1.2.x.rst -1.1 -=== +Version 1.1 +=========== .. toctree:: :maxdepth: 1 prev_whats_new/whats_new_1.1.rst ../api/prev_api_changes/api_changes_1.1.x.rst -1.0 -=== +Version 1.0 +=========== .. toctree:: :maxdepth: 1 prev_whats_new/whats_new_1.0.rst -0.x -=== +Version 0.x +=========== .. toctree:: :maxdepth: 1 diff --git a/doc/users/release_notes_next.rst b/doc/users/release_notes_next.rst index f4122aaf96c7..b5f36efeb1ad 100644 --- a/doc/users/release_notes_next.rst +++ b/doc/users/release_notes_next.rst @@ -1,5 +1,5 @@ -Next -==== +Next Version +============ .. toctree:: :maxdepth: 1 diff --git a/tools/github_stats.py b/tools/github_stats.py index 849ace2a187c..2d1fbc47e81a 100755 --- a/tools/github_stats.py +++ b/tools/github_stats.py @@ -172,17 +172,18 @@ def report(issues, show_urls=False): n_issues, n_pulls = map(len, (issues, pulls)) n_total = n_issues + n_pulls + since_day = since.strftime("%Y/%m/%d") + today = datetime.today() # Print summary report we can directly include into release notes. print('.. _github-stats:') print() - print('GitHub statistics') - print('=================') + title = 'GitHub statistics ' + today.strftime('(%b %d, %Y)') + print(title) + print('=' * len(title)) print() - since_day = since.strftime("%Y/%m/%d") - today = datetime.today().strftime("%Y/%m/%d") - print("GitHub statistics for %s - %s (tag: %s)" % (since_day, today, tag)) + print("GitHub statistics for %s (tag: %s) - %s" % (since_day, tag, today.strftime("%Y/%m/%d"), )) print() print("These lists are automatically generated, and may be incomplete or contain duplicates.") print() From 077603eb370748cb67486426981023255c7685b5 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 29 Aug 2021 12:49:54 +0200 Subject: [PATCH 062/270] Backport PR #20937: Fix documented allowed values for Patch.set_edgecolor. --- lib/matplotlib/patches.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 5e053cb364a3..fa54b6f613fd 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -349,7 +349,7 @@ def set_edgecolor(self, color): Parameters ---------- - color : color or None or 'auto' + color : color or None """ self._original_edgecolor = color self._set_edgecolor(color) From 74b3621e6f1e08817a404e58d0d9b473abf8496c Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 29 Aug 2021 12:51:22 +0200 Subject: [PATCH 063/270] Backport PR #20938: Fix missorted changelog entry. --- doc/users/release_notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/release_notes.rst b/doc/users/release_notes.rst index 440beab397b7..f5b15b8bbcab 100644 --- a/doc/users/release_notes.rst +++ b/doc/users/release_notes.rst @@ -102,6 +102,7 @@ Release notes prev_whats_new/whats_new_1.5.rst ../api/prev_api_changes/api_changes_1.5.3.rst ../api/prev_api_changes/api_changes_1.5.2.rst + ../api/prev_api_changes/api_changes_1.5.0.rst 1.4 === @@ -110,7 +111,6 @@ Release notes prev_whats_new/whats_new_1.4.rst ../api/prev_api_changes/api_changes_1.4.x.rst - ../api/prev_api_changes/api_changes_1.5.0.rst 1.3 === From 732860b437ac693aca8b04e3a1d7be890d2dcef1 Mon Sep 17 00:00:00 2001 From: hannah Date: Mon, 30 Aug 2021 12:14:05 -0400 Subject: [PATCH 064/270] Backport PR #20941: Fix variable capitalization in plot types headings --- plot_types/basic/pie.py | 2 +- plot_types/basic/plot.py | 2 +- plot_types/basic/scatter_plot.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plot_types/basic/pie.py b/plot_types/basic/pie.py index e20b6c5001db..b078a8f5e6ab 100644 --- a/plot_types/basic/pie.py +++ b/plot_types/basic/pie.py @@ -1,6 +1,6 @@ """ ====== -pie(X) +pie(x) ====== See `~matplotlib.axes.Axes.pie`. diff --git a/plot_types/basic/plot.py b/plot_types/basic/plot.py index cd608f2c33f9..ac93ecf71b56 100644 --- a/plot_types/basic/plot.py +++ b/plot_types/basic/plot.py @@ -1,6 +1,6 @@ """ ========== -plot(X, Y) +plot(x, y) ========== See `~matplotlib.axes.Axes.plot`. diff --git a/plot_types/basic/scatter_plot.py b/plot_types/basic/scatter_plot.py index bc9ec24bbb78..68f06744150c 100644 --- a/plot_types/basic/scatter_plot.py +++ b/plot_types/basic/scatter_plot.py @@ -1,6 +1,6 @@ """ ============= -scatter(X, Y) +scatter(x, y) ============= See `~matplotlib.axes.Axes.scatter`. From a8d7d9933017301a41b3d73303519dc70ad34ecf Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 30 Aug 2021 17:07:15 -0400 Subject: [PATCH 065/270] Backport PR #20944: Switch documented deprecations in mathtext by `__getattr__` deprecations --- lib/matplotlib/mathtext.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 656aeb64dc0d..ce6de4cdee56 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -24,19 +24,27 @@ import numpy as np from PIL import Image -from matplotlib import _api, colors as mcolors, rcParams, _mathtext +from matplotlib import ( + _api, colors as mcolors, rcParams, _mathtext, _mathtext_data) from matplotlib.ft2font import FT2Image, LOAD_NO_HINTING from matplotlib.font_manager import FontProperties -# Backcompat imports, all are deprecated as of 3.4. -from matplotlib._mathtext import ( # noqa: F401 - SHRINK_FACTOR, GROW_FACTOR, NUM_SIZE_LEVELS) -from matplotlib._mathtext_data import ( # noqa: F401 - latex_to_bakoma, latex_to_cmex, latex_to_standard, stix_virtual_fonts, - tex2uni) _log = logging.getLogger(__name__) +@_api.caching_module_getattr +class __getattr__: + locals().update({ + name: _api.deprecated("3.4")( + property(lambda self, _mod=mod, _name=name: getattr(_mod, _name))) + for mod, names in [ + (_mathtext, ["SHRINK_FACTOR", "GROW_FACTOR", "NUM_SIZE_LEVELS"]), + (_mathtext_data, [ + "latex_to_bakoma", "latex_to_cmex", "latex_to_standard", + "stix_virtual_fonts", "tex2uni"])] + for name in names}) + + get_unicode_index = _mathtext.get_unicode_index get_unicode_index.__module__ = __name__ From 816ce4f385f9d7b826675d4c55654d535f0f7ce3 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 31 Aug 2021 00:25:52 +0200 Subject: [PATCH 066/270] Update doc/users/github_stats.rst Co-authored-by: Elliott Sales de Andrade --- doc/users/github_stats.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst index 55446e3446de..8521f149024e 100644 --- a/doc/users/github_stats.rst +++ b/doc/users/github_stats.rst @@ -3,7 +3,7 @@ GitHub statistics (Aug 12, 2021) ================================ -GitHub statistics for 2021/05/08 (tag: v3.4.2) - 2021/08/12 +GitHub statistics for 2021/03/26 (tag: v3.4.0) - 2021/08/24 These lists are automatically generated, and may be incomplete or contain duplicates. From 3b2484c6f99b3610d6c4820053cab1e4f295a6f3 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 31 Aug 2021 15:33:12 +0200 Subject: [PATCH 067/270] Backport PR #20931: API: rename draw_no_output to draw_without_rendering --- .../next_whats_new/fig_draw_no_output.rst | 10 ------ .../fig_draw_without_rendering.rst | 12 +++++++ lib/matplotlib/backend_bases.py | 2 +- lib/matplotlib/backends/backend_pdf.py | 2 +- lib/matplotlib/backends/backend_pgf.py | 2 +- lib/matplotlib/backends/backend_ps.py | 2 +- lib/matplotlib/backends/backend_svg.py | 2 +- lib/matplotlib/figure.py | 2 +- lib/matplotlib/tests/test_axes.py | 2 +- lib/matplotlib/tests/test_colorbar.py | 6 ++-- .../tests/test_constrainedlayout.py | 32 +++++++++---------- lib/matplotlib/tests/test_dates.py | 4 +-- lib/matplotlib/tests/test_figure.py | 8 ++--- lib/matplotlib/tests/test_mathtext.py | 4 +-- lib/matplotlib/tests/test_units.py | 12 +++---- 15 files changed, 52 insertions(+), 50 deletions(-) delete mode 100644 doc/users/next_whats_new/fig_draw_no_output.rst create mode 100644 doc/users/next_whats_new/fig_draw_without_rendering.rst diff --git a/doc/users/next_whats_new/fig_draw_no_output.rst b/doc/users/next_whats_new/fig_draw_no_output.rst deleted file mode 100644 index 293c6590b8c9..000000000000 --- a/doc/users/next_whats_new/fig_draw_no_output.rst +++ /dev/null @@ -1,10 +0,0 @@ -Figure now has draw_no_output method ------------------------------------- - -Rarely, the user will want to trigger a draw without making output to -either the screen or a file. This is useful for determining the final -position of artists on the figure that require a draw, like text artists. -This could be accomplished via ``fig.canvas.draw()`` but has side effects, -sometimes requires an open file, and is documented on an object most users -do not need to access. The `.Figure.draw_no_output` is provided to trigger -a draw without pushing to the final output, and with fewer side effects. \ No newline at end of file diff --git a/doc/users/next_whats_new/fig_draw_without_rendering.rst b/doc/users/next_whats_new/fig_draw_without_rendering.rst new file mode 100644 index 000000000000..8b9e3147bf07 --- /dev/null +++ b/doc/users/next_whats_new/fig_draw_without_rendering.rst @@ -0,0 +1,12 @@ +Figure now has ``draw_without_rendering`` method +------------------------------------------------ + +Some aspects of a figure are only determined at draw-time, such as the exact +position of text artists or deferred computation like automatic data limits. +If you need these values, you can use ``figure.canvas.draw()`` to force a full +draw. However, this has side effects, sometimes requires an open file, and is +doing more work than is needed. + +The new `.Figure.draw_without_rendering` method runs all the updates that +``draw()`` does, but skips rendering the figure. It's thus more efficient if you +need the updated values to configure further aspects of the figure. diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 00e99c9f073e..70f09d543c39 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -1570,7 +1570,7 @@ def _draw(renderer): raise Done(renderer) def _no_output_draw(figure): # _no_output_draw was promoted to the figure level, but # keep this here in case someone was calling it... - figure.draw_no_output() + figure.draw_without_rendering() def _is_non_interactive_terminal_ipython(ip): diff --git a/lib/matplotlib/backends/backend_pdf.py b/lib/matplotlib/backends/backend_pdf.py index 9980d49af85b..9ca791db0c5a 100644 --- a/lib/matplotlib/backends/backend_pdf.py +++ b/lib/matplotlib/backends/backend_pdf.py @@ -2793,7 +2793,7 @@ def print_pdf(self, filename, *, file.close() def draw(self): - self.figure.draw_no_output() + self.figure.draw_without_rendering() return super().draw() diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 3f1cb7b172eb..749da559662c 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -883,7 +883,7 @@ def get_renderer(self): return RendererPgf(self.figure, None) def draw(self): - self.figure.draw_no_output() + self.figure.draw_without_rendering() return super().draw() diff --git a/lib/matplotlib/backends/backend_ps.py b/lib/matplotlib/backends/backend_ps.py index f13e114a815b..93d0705ae363 100644 --- a/lib/matplotlib/backends/backend_ps.py +++ b/lib/matplotlib/backends/backend_ps.py @@ -1119,7 +1119,7 @@ def _print_figure_tex( _move_path_to_path_or_stream(tmpfile, outfile) def draw(self): - self.figure.draw_no_output() + self.figure.draw_without_rendering() return super().draw() diff --git a/lib/matplotlib/backends/backend_svg.py b/lib/matplotlib/backends/backend_svg.py index 904cca7bf313..e4de85905ca7 100644 --- a/lib/matplotlib/backends/backend_svg.py +++ b/lib/matplotlib/backends/backend_svg.py @@ -1343,7 +1343,7 @@ def get_default_filetype(self): return 'svg' def draw(self): - self.figure.draw_no_output() + self.figure.draw_without_rendering() return super().draw() diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index abe8ec694922..dbd879521f25 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -2808,7 +2808,7 @@ def draw(self, renderer): self.canvas.draw_event(renderer) - def draw_no_output(self): + def draw_without_rendering(self): """ Draw the figure with no output. Useful to get the final size of artists that require a draw before their size is known (e.g. text). diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 509910bdeec1..32b0c202478b 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -4793,7 +4793,7 @@ def test_reset_ticks(fig_test, fig_ref): labelsize=14, labelcolor='C1', labelrotation=45, grid_color='C2', grid_alpha=0.8, grid_linewidth=3, grid_linestyle='--') - fig.draw_no_output() + fig.draw_without_rendering() # After we've changed any setting on ticks, reset_ticks will mean # re-creating them from scratch. This *should* appear the same as not diff --git a/lib/matplotlib/tests/test_colorbar.py b/lib/matplotlib/tests/test_colorbar.py index 055c4acb7642..5f19a0aaf20a 100644 --- a/lib/matplotlib/tests/test_colorbar.py +++ b/lib/matplotlib/tests/test_colorbar.py @@ -613,7 +613,7 @@ def test_mappable_2d_alpha(): # the original alpha array assert cb.alpha is None assert pc.get_alpha() is x - fig.draw_no_output() + fig.draw_without_rendering() def test_colorbar_label(): @@ -766,7 +766,7 @@ def test_inset_colorbar_layout(): cax = ax.inset_axes([1.02, 0.1, 0.03, 0.8]) cb = fig.colorbar(pc, cax=cax) - fig.draw_no_output() + fig.draw_without_rendering() # make sure this is in the figure. In the colorbar swapping # it was being dropped from the list of children... np.testing.assert_allclose(cb.ax.get_position().bounds, @@ -806,7 +806,7 @@ def test_aspects(): pc = ax[mm, nn].pcolormesh(np.arange(100).reshape(10, 10)) cb[nn][mm] = fig.colorbar(pc, ax=ax[mm, nn], orientation=orient, aspect=aspect, extend=extend) - fig.draw_no_output() + fig.draw_without_rendering() # check the extends are right ratio: np.testing.assert_almost_equal(cb[0][1].ax.get_position().height, cb[0][0].ax.get_position().height * 0.9, diff --git a/lib/matplotlib/tests/test_constrainedlayout.py b/lib/matplotlib/tests/test_constrainedlayout.py index 007fac6ec1f9..a8222a73d5ee 100644 --- a/lib/matplotlib/tests/test_constrainedlayout.py +++ b/lib/matplotlib/tests/test_constrainedlayout.py @@ -128,7 +128,7 @@ def test_constrained_layout7(): for gs in gsl: fig.add_subplot(gs) # need to trigger a draw to get warning - fig.draw_no_output() + fig.draw_without_rendering() @image_comparison(['constrained_layout8.png']) @@ -309,7 +309,7 @@ def test_constrained_layout18(): ax2 = ax.twinx() example_plot(ax) example_plot(ax2, fontsize=24) - fig.draw_no_output() + fig.draw_without_rendering() assert all(ax.get_position().extents == ax2.get_position().extents) @@ -321,7 +321,7 @@ def test_constrained_layout19(): example_plot(ax2, fontsize=24) ax2.set_title('') ax.set_title('') - fig.draw_no_output() + fig.draw_without_rendering() assert all(ax.get_position().extents == ax2.get_position().extents) @@ -341,11 +341,11 @@ def test_constrained_layout21(): fig, ax = plt.subplots(constrained_layout=True) fig.suptitle("Suptitle0") - fig.draw_no_output() + fig.draw_without_rendering() extents0 = np.copy(ax.get_position().extents) fig.suptitle("Suptitle1") - fig.draw_no_output() + fig.draw_without_rendering() extents1 = np.copy(ax.get_position().extents) np.testing.assert_allclose(extents0, extents1) @@ -355,11 +355,11 @@ def test_constrained_layout22(): """#11035: suptitle should not be include in CL if manually positioned""" fig, ax = plt.subplots(constrained_layout=True) - fig.draw_no_output() + fig.draw_without_rendering() extents0 = np.copy(ax.get_position().extents) fig.suptitle("Suptitle", y=0.5) - fig.draw_no_output() + fig.draw_without_rendering() extents1 = np.copy(ax.get_position().extents) np.testing.assert_allclose(extents0, extents1) @@ -407,7 +407,7 @@ def test_hidden_axes(): # (as does a gridspec slot that is empty) fig, axs = plt.subplots(2, 2, constrained_layout=True) axs[0, 1].set_visible(False) - fig.draw_no_output() + fig.draw_without_rendering() extents1 = np.copy(axs[0, 0].get_position().extents) np.testing.assert_allclose( @@ -433,7 +433,7 @@ def test_colorbar_align(): fig.set_constrained_layout_pads(w_pad=4 / 72, h_pad=4 / 72, hspace=0.1, wspace=0.1) - fig.draw_no_output() + fig.draw_without_rendering() if location in ['left', 'right']: np.testing.assert_allclose(cbs[0].ax.get_position().x0, cbs[2].ax.get_position().x0) @@ -475,7 +475,7 @@ def test_colorbars_no_overlapH(): def test_manually_set_position(): fig, axs = plt.subplots(1, 2, constrained_layout=True) axs[0].set_position([0.2, 0.2, 0.3, 0.3]) - fig.draw_no_output() + fig.draw_without_rendering() pp = axs[0].get_position() np.testing.assert_allclose(pp, [[0.2, 0.2], [0.5, 0.5]]) @@ -483,7 +483,7 @@ def test_manually_set_position(): axs[0].set_position([0.2, 0.2, 0.3, 0.3]) pc = axs[0].pcolormesh(np.random.rand(20, 20)) fig.colorbar(pc, ax=axs[0]) - fig.draw_no_output() + fig.draw_without_rendering() pp = axs[0].get_position() np.testing.assert_allclose(pp, [[0.2, 0.2], [0.44, 0.5]]) @@ -528,7 +528,7 @@ def test_align_labels(): fig.align_ylabels(axs=(ax3, ax1, ax2)) - fig.draw_no_output() + fig.draw_without_rendering() after_align = [ax1.yaxis.label.get_window_extent(), ax2.yaxis.label.get_window_extent(), ax3.yaxis.label.get_window_extent()] @@ -541,22 +541,22 @@ def test_align_labels(): def test_suplabels(): fig, ax = plt.subplots(constrained_layout=True) - fig.draw_no_output() + fig.draw_without_rendering() pos0 = ax.get_tightbbox(fig.canvas.get_renderer()) fig.supxlabel('Boo') fig.supylabel('Booy') - fig.draw_no_output() + fig.draw_without_rendering() pos = ax.get_tightbbox(fig.canvas.get_renderer()) assert pos.y0 > pos0.y0 + 10.0 assert pos.x0 > pos0.x0 + 10.0 fig, ax = plt.subplots(constrained_layout=True) - fig.draw_no_output() + fig.draw_without_rendering() pos0 = ax.get_tightbbox(fig.canvas.get_renderer()) # check that specifying x (y) doesn't ruin the layout fig.supxlabel('Boo', x=0.5) fig.supylabel('Boo', y=0.5) - fig.draw_no_output() + fig.draw_without_rendering() pos = ax.get_tightbbox(fig.canvas.get_renderer()) assert pos.y0 > pos0.y0 + 10.0 assert pos.x0 > pos0.x0 + 10.0 diff --git a/lib/matplotlib/tests/test_dates.py b/lib/matplotlib/tests/test_dates.py index c440003f49c9..3a38516c7272 100644 --- a/lib/matplotlib/tests/test_dates.py +++ b/lib/matplotlib/tests/test_dates.py @@ -76,7 +76,7 @@ def test_date_empty(): # http://sourceforge.net/tracker/?func=detail&aid=2850075&group_id=80706&atid=560720 fig, ax = plt.subplots() ax.xaxis_date() - fig.draw_no_output() + fig.draw_without_rendering() np.testing.assert_allclose(ax.get_xlim(), [mdates.date2num(np.datetime64('2000-01-01')), mdates.date2num(np.datetime64('2010-01-01'))]) @@ -85,7 +85,7 @@ def test_date_empty(): mdates.set_epoch('0000-12-31') fig, ax = plt.subplots() ax.xaxis_date() - fig.draw_no_output() + fig.draw_without_rendering() np.testing.assert_allclose(ax.get_xlim(), [mdates.date2num(np.datetime64('2000-01-01')), mdates.date2num(np.datetime64('2010-01-01'))]) diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py index 7a222f20a058..317528879304 100644 --- a/lib/matplotlib/tests/test_figure.py +++ b/lib/matplotlib/tests/test_figure.py @@ -412,11 +412,11 @@ def test_autofmt_xdate(which): @mpl.style.context('default') def test_change_dpi(): fig = plt.figure(figsize=(4, 4)) - fig.draw_no_output() + fig.draw_without_rendering() assert fig.canvas.renderer.height == 400 assert fig.canvas.renderer.width == 400 fig.dpi = 50 - fig.draw_no_output() + fig.draw_without_rendering() assert fig.canvas.renderer.height == 200 assert fig.canvas.renderer.width == 200 @@ -1082,10 +1082,10 @@ def test_subfigure_ticks(): ax3 = subfig_bl.add_subplot(gs[0, 3:14], sharey=ax1) fig.set_dpi(120) - fig.draw_no_output() + fig.draw_without_rendering() ticks120 = ax2.get_xticks() fig.set_dpi(300) - fig.draw_no_output() + fig.draw_without_rendering() ticks300 = ax2.get_xticks() np.testing.assert_allclose(ticks120, ticks300) diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index 768db940c756..0055d54a03a8 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -402,7 +402,7 @@ def test_default_math_fontfamily(): prop2 = text2.get_fontproperties() assert prop2.get_math_fontfamily() == 'cm' - fig.draw_no_output() + fig.draw_without_rendering() def test_argument_order(): @@ -427,7 +427,7 @@ def test_argument_order(): prop4 = text4.get_fontproperties() assert prop4.get_math_fontfamily() == 'dejavusans' - fig.draw_no_output() + fig.draw_without_rendering() def test_mathtext_cmr10_minus_sign(): diff --git a/lib/matplotlib/tests/test_units.py b/lib/matplotlib/tests/test_units.py index c7a06e0e32ac..a6f6b44c9707 100644 --- a/lib/matplotlib/tests/test_units.py +++ b/lib/matplotlib/tests/test_units.py @@ -226,17 +226,17 @@ def test_empty_default_limits(quantity_converter): munits.registry[Quantity] = quantity_converter fig, ax1 = plt.subplots() ax1.xaxis.update_units(Quantity([10], "miles")) - fig.draw_no_output() + fig.draw_without_rendering() assert ax1.get_xlim() == (0, 100) ax1.yaxis.update_units(Quantity([10], "miles")) - fig.draw_no_output() + fig.draw_without_rendering() assert ax1.get_ylim() == (0, 100) fig, ax = plt.subplots() ax.axhline(30) ax.plot(Quantity(np.arange(0, 3), "miles"), Quantity(np.arange(0, 6, 2), "feet")) - fig.draw_no_output() + fig.draw_without_rendering() assert ax.get_xlim() == (0, 2) assert ax.get_ylim() == (0, 30) @@ -244,20 +244,20 @@ def test_empty_default_limits(quantity_converter): ax.axvline(30) ax.plot(Quantity(np.arange(0, 3), "miles"), Quantity(np.arange(0, 6, 2), "feet")) - fig.draw_no_output() + fig.draw_without_rendering() assert ax.get_xlim() == (0, 30) assert ax.get_ylim() == (0, 4) fig, ax = plt.subplots() ax.xaxis.update_units(Quantity([10], "miles")) ax.axhline(30) - fig.draw_no_output() + fig.draw_without_rendering() assert ax.get_xlim() == (0, 100) assert ax.get_ylim() == (28.5, 31.5) fig, ax = plt.subplots() ax.yaxis.update_units(Quantity([10], "miles")) ax.axvline(30) - fig.draw_no_output() + fig.draw_without_rendering() assert ax.get_ylim() == (0, 100) assert ax.get_xlim() == (28.5, 31.5) From f8536e6d0de4816af29dae9e52bab86acf3dc617 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Wed, 1 Sep 2021 04:59:36 +0200 Subject: [PATCH 068/270] Backport PR #20956: Make warning for no-handles legend more explicit. --- lib/matplotlib/legend.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/legend.py b/lib/matplotlib/legend.py index 1d85ba1a3f27..6d956a29ee48 100644 --- a/lib/matplotlib/legend.py +++ b/lib/matplotlib/legend.py @@ -1224,7 +1224,10 @@ def _parse_legend_args(axs, *args, handles=None, labels=None, **kwargs): elif len(args) == 0: handles, labels = _get_legend_handles_labels(axs, handlers) if not handles: - log.warning('No handles with labels found to put in legend.') + log.warning( + "No artists with labels found to put in legend. Note that " + "artists whose label start with an underscore are ignored " + "when legend() is called with no argument.") # One argument. User defined labels - automatic handle detection. elif len(args) == 1: From 90cf533f1829d954fc6c363b004ac95c29b62b4d Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 1 Sep 2021 01:55:12 -0400 Subject: [PATCH 069/270] Backport PR #20952: Redirect to new 3rd party packages page --- doc/thirdpartypackages/index.rst | 368 +------------------------------ 1 file changed, 2 insertions(+), 366 deletions(-) diff --git a/doc/thirdpartypackages/index.rst b/doc/thirdpartypackages/index.rst index e6c6aa401526..81dc4d710a52 100644 --- a/doc/thirdpartypackages/index.rst +++ b/doc/thirdpartypackages/index.rst @@ -1,369 +1,5 @@ :orphan: -.. note:: +.. raw:: html - This page has been moved to , - where you will find an up-to-date list of packages. - - -******************** -Third party packages -******************** - -Several external packages that extend or build on Matplotlib functionality are -listed below. You can find more packages at `PyPI `_. -They are maintained and distributed separately from Matplotlib, -and thus need to be installed individually. - -If you have a created a package that extends or builds on Matplotlib -and would like to have your package listed on this page, please submit -an issue or pull request on GitHub. The pull request should include a short -description of the library and an image demonstrating the functionality. -To be included in the PyPI listing, please include ``Framework :: Matplotlib`` -in the classifier list in the ``setup.py`` file for your package. We are also -happy to host third party packages within the `Matplotlib GitHub Organization -`_. - - -Mapping toolkits -**************** - -Basemap -======= -`Basemap `_ plots data on map projections, -with continental and political boundaries. - -.. image:: /_static/basemap_contour1.png - :height: 400px - -Cartopy -======= -`Cartopy `_ builds on top -of Matplotlib to provide object oriented map projection definitions -and close integration with Shapely for powerful yet easy-to-use vector -data processing tools. An example plot from the `Cartopy gallery -`_: - -.. image:: /_static/cartopy_hurricane_katrina_01_00.png - :height: 400px - -Geoplot -======= -`Geoplot `_ builds on top -of Matplotlib and Cartopy to provide a "standard library" of simple, powerful, -and customizable plot types. An example plot from the `Geoplot gallery -`_: - -.. image:: /_static/geoplot_nyc_traffic_tickets.png - :height: 400px - -Ridge Map -========= -`ridge_map `_ uses Matplotlib, -SRTM.py, NumPy, and scikit-image to make ridge plots of your favorite -ridges. - -.. image:: /_static/ridge_map_white_mountains.png - :height: 364px - -Declarative libraries -********************* - -ggplot -====== -`ggplot `_ is a port of the R ggplot2 package -to python based on Matplotlib. - -.. image:: /_static/ggplot.png - :height: 195px - -holoviews -========= -`holoviews `_ makes it easier to visualize data -interactively, especially in a `Jupyter notebook `_, by -providing a set of declarative plotting objects that store your data and -associated metadata. Your data is then immediately visualizable alongside or -overlaid with other data, either statically or with automatically provided -widgets for parameter exploration. - -.. image:: /_static/holoviews.png - :height: 354px - -plotnine -======== - -`plotnine `_ implements a grammar -of graphics, similar to R's `ggplot2 `_. -The grammar allows users to compose plots by explicitly mapping data to the -visual objects that make up the plot. - -.. image:: /_static/plotnine.png - -Specialty plots -*************** - -Broken Axes -=========== -`brokenaxes `_ supplies an axes -class that can have a visual break to indicate a discontinuous range. - -.. image:: /_static/brokenaxes.png - -DeCiDa -====== - -`DeCiDa `_ is a library of functions -and classes for electron device characterization, electronic circuit design and -general data visualization and analysis. - -matplotlib-scalebar -=================== - -`matplotlib-scalebar `_ provides a new artist to display a scale bar, aka micron bar. -It is particularly useful when displaying calibrated images plotted using ``plt.imshow(...)``. - -.. image:: /_static/gold_on_carbon.jpg - -Matplotlib-Venn -=============== -`Matplotlib-Venn `_ provides a -set of functions for plotting 2- and 3-set area-weighted (or unweighted) Venn -diagrams. - -mpl-probscale -============= -`mpl-probscale `_ is a small extension -that allows Matplotlib users to specify probability scales. Simply importing the -``probscale`` module registers the scale with Matplotlib, making it accessible -via e.g., ``ax.set_xscale('prob')`` or ``plt.yscale('prob')``. - -.. image:: /_static/probscale_demo.png - -mpl-scatter-density -=================== - -`mpl-scatter-density `_ is a -small package that makes it easy to make scatter plots of large numbers -of points using a density map. The following example contains around 13 million -points and the plotting (excluding reading in the data) took less than a -second on an average laptop: - -.. image:: /_static/mpl-scatter-density.png - :height: 400px - -When used in interactive mode, the density map is downsampled on-the-fly while -panning/zooming in order to provide a smooth interactive experience. - -mplstereonet -============ -`mplstereonet `_ provides -stereonets for plotting and analyzing orientation data in Matplotlib. - -Natgrid -======= -`mpl_toolkits.natgrid `_ is an interface -to the natgrid C library for gridding irregularly spaced data. - -pyUpSet -======= -`pyUpSet `_ is a -static Python implementation of the `UpSet suite by Lex et al. -`_ to explore complex intersections of -sets and data frames. - -seaborn -======= -`seaborn `_ is a high level interface for drawing -statistical graphics with Matplotlib. It aims to make visualization a central -part of exploring and understanding complex datasets. - -.. image:: /_static/seaborn.png - :height: 157px - -WCSAxes -======= - -The `Astropy `_ core package includes a submodule -called WCSAxes (available at `astropy.visualization.wcsaxes -`_) which -adds Matplotlib projections for Astronomical image data. The following is an -example of a plot made with WCSAxes which includes the original coordinate -system of the image and an overlay of a different coordinate system: - -.. image:: /_static/wcsaxes.jpg - :height: 400px - -Windrose -======== -`Windrose `_ is a Python Matplotlib, -Numpy library to manage wind data, draw windroses (also known as polar rose -plots), draw probability density functions and fit Weibull distributions. - -Yellowbrick -=========== -`Yellowbrick `_ is a suite of visual diagnostic tools for machine learning that enables human steering of the model selection process. Yellowbrick combines scikit-learn with matplotlib using an estimator-based API called the ``Visualizer``, which wraps both sklearn models and matplotlib Axes. ``Visualizer`` objects fit neatly into the machine learning workflow allowing data scientists to integrate visual diagnostic and model interpretation tools into experimentation without extra steps. - -.. image:: /_static/yellowbrick.png - :height: 400px - -Animations -********** - -animatplot -========== -`animatplot `_ is a library for -producing interactive animated plots with the goal of making production of -animated plots almost as easy as static ones. - -.. image:: /_static/animatplot.png - -For an animated version of the above picture and more examples, see the -`animatplot gallery. `_ - -gif -=== -`gif `_ is an ultra lightweight animated gif API. - -.. image:: /_static/gif_attachment_example.png - -numpngw -======= - -`numpngw `_ provides functions for writing -NumPy arrays to PNG and animated PNG files. It also includes the class -``AnimatedPNGWriter`` that can be used to save a Matplotlib animation as an -animated PNG file. See the example on the PyPI page or at the ``numpngw`` -`github repository `_. - -.. image:: /_static/numpngw_animated_example.png - -Interactivity -************* - -mplcursors -========== -`mplcursors `_ provides interactive data -cursors for Matplotlib. - -MplDataCursor -============= -`MplDataCursor `_ is a toolkit -written by Joe Kington to provide interactive "data cursors" (clickable -annotation boxes) for Matplotlib. - -mpl_interactions -================ -`mpl_interactions `_ -makes it easy to create interactive plots controlled by sliders and other -widgets. It also provides several handy capabilities such as manual -image segmentation, comparing cross-sections of arrays, and using the -scroll wheel to zoom. - -.. image:: /_static/mpl-interactions-slider-animated.png - -Rendering backends -****************** - -mplcairo -======== -`mplcairo `_ is a cairo backend for -Matplotlib, with faster and more accurate marker drawing, support for a wider -selection of font formats and complex text layout, and various other features. - -gr -== -`gr `_ is a framework for cross-platform -visualisation applications, which can be used as a high-performance Matplotlib -backend. - -GUI integration -*************** - -wxmplot -======= -`WXMPlot `_ provides advanced wxPython -widgets for plotting and image display of numerical data based on Matplotlib. - -Miscellaneous -************* - -adjustText -========== -`adjustText `_ is a small library for -automatically adjusting text position in Matplotlib plots to minimize overlaps -between them, specified points and other objects. - -.. image:: /_static/adjustText.png - -iTerm2 terminal backend -======================= -`matplotlib_iterm2 `_ is an -external Matplotlib backend using the iTerm2 nightly build inline image display -feature. - -.. image:: /_static/matplotlib_iterm2_demo.png - -mpl-template -============ -`mpl-template `_ provides -a customizable way to add engineering figure elements such as a title block, -border, and logo. - -.. image:: /_static/mpl_template_example.png - :height: 330px - -figpager -======== -`figpager `_ provides customizable figure -elements such as text, lines and images and subplot layout control for single -or multi page output. - - .. image:: /_static/figpager.png - -blume -===== - -`blume `_ provides a replacement for -the Matplotlib ``table`` module. It fixes a number of issues with the -existing table. See the `blume github repository -`_ for more details. - -.. image:: /_static/blume_table_example.png - -highlight-text -============== - -`highlight-text `_ is a small library -that provides an easy way to effectively annotate plots by highlighting -substrings with the font properties of your choice. -See the `highlight-text github repository -`_ for more details and examples. - -.. image:: /_static/highlight_text_examples.png - -DNA Features Viewer -=================== - -`DNA Features Viewer `_ -provides methods to plot annotated DNA sequence maps (possibly along other Matplotlib -plots) for Bioinformatics and Synthetic Biology applications. - -.. image:: /_static/dna_features_viewer_screenshot.png - -GUI applications -**************** - -sviewgui -======== - -`sviewgui `_ is a PyQt-based GUI for -visualisation of data from csv files or `pandas.DataFrame`\s. Main features: - -- Scatter, line, density, histogram, and box plot types -- Settings for the marker size, line width, number of bins of histogram, - colormap (from cmocean) -- Save figure as editable PDF -- Code of the plotted graph is available so that it can be reused and modified - outside of sviewgui - -.. image:: /_static/sviewgui_sample.png + From a32704353b18a10d9f4b060b533faff962b0a10f Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 1 Sep 2021 10:23:33 +0100 Subject: [PATCH 070/270] Backport PR #20745: Clean up some Event class docs. --- lib/matplotlib/backend_bases.py | 86 ++++++++++++++------------------- 1 file changed, 36 insertions(+), 50 deletions(-) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 70f09d543c39..483e40bdf47c 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -1211,9 +1211,10 @@ def _on_timer(self): class Event: """ - A Matplotlib event. Attach additional attributes as defined in - :meth:`FigureCanvasBase.mpl_connect`. The following attributes - are defined and shown with their default values + A Matplotlib event. + + The following attributes are defined and shown with their default values. + Subclasses may define additional attributes. Attributes ---------- @@ -1232,20 +1233,20 @@ def __init__(self, name, canvas, guiEvent=None): class DrawEvent(Event): """ - An event triggered by a draw operation on the canvas + An event triggered by a draw operation on the canvas. - In most backends callbacks subscribed to this callback will be - fired after the rendering is complete but before the screen is - updated. Any extra artists drawn to the canvas's renderer will - be reflected without an explicit call to ``blit``. + In most backends, callbacks subscribed to this event will be fired after + the rendering is complete but before the screen is updated. Any extra + artists drawn to the canvas's renderer will be reflected without an + explicit call to ``blit``. .. warning:: Calling ``canvas.draw`` and ``canvas.blit`` in these callbacks may not be safe with all backends and may cause infinite recursion. - In addition to the `Event` attributes, the following event - attributes are defined: + A DrawEvent has a number of special attributes in addition to those defined + by the parent `Event` class. Attributes ---------- @@ -1259,10 +1260,10 @@ def __init__(self, name, canvas, renderer): class ResizeEvent(Event): """ - An event triggered by a canvas resize + An event triggered by a canvas resize. - In addition to the `Event` attributes, the following event - attributes are defined: + A ResizeEvent has a number of special attributes in addition to those + defined by the parent `Event` class. Attributes ---------- @@ -1284,32 +1285,23 @@ class LocationEvent(Event): """ An event that has a screen location. - The following additional attributes are defined and shown with - their default values. - - In addition to the `Event` attributes, the following - event attributes are defined: + A LocationEvent has a number of special attributes in addition to those + defined by the parent `Event` class. Attributes ---------- - x : int - x position - pixels from left of canvas. - y : int - y position - pixels from bottom of canvas. + x, y : int or None + Event location in pixels from bottom left of canvas. inaxes : `~.axes.Axes` or None The `~.axes.Axes` instance over which the mouse is, if any. - xdata : float or None - x data coordinate of the mouse. - ydata : float or None - y data coordinate of the mouse. + xdata, ydata : float or None + Data coordinates of the mouse within *inaxes*, or *None* if the mouse + is not over an Axes. """ lastevent = None # the last event that was triggered before this one def __init__(self, name, canvas, x, y, guiEvent=None): - """ - (*x*, *y*) in figure coords ((0, 0) = bottom left). - """ super().__init__(name, canvas, guiEvent=guiEvent) # x position - pixels from left of canvas self.x = int(x) if x is not None else x @@ -1378,13 +1370,11 @@ class MouseButton(IntEnum): class MouseEvent(LocationEvent): """ - A mouse event ('button_press_event', - 'button_release_event', - 'scroll_event', - 'motion_notify_event'). + A mouse event ('button_press_event', 'button_release_event', \ +'scroll_event', 'motion_notify_event'). - In addition to the `Event` and `LocationEvent` - attributes, the following attributes are defined: + A MouseEvent has a number of special attributes in addition to those + defined by the parent `Event` and `LocationEvent` classes. Attributes ---------- @@ -1426,10 +1416,6 @@ def on_press(event): def __init__(self, name, canvas, x, y, button=None, key=None, step=0, dblclick=False, guiEvent=None): - """ - (*x*, *y*) in figure coords ((0, 0) = bottom left) - button pressed None, 1, 2, 3, 'up', 'down' - """ if button in MouseButton.__members__.values(): button = MouseButton(button) self.button = button @@ -1450,11 +1436,14 @@ def __str__(self): class PickEvent(Event): """ - A pick event, fired when the user picks a location on the canvas + A pick event. + + This event is fired when the user picks a location on the canvas sufficiently close to an artist that has been made pickable with `.Artist.set_picker`. - Attrs: all the `Event` attributes plus + A PickEvent has a number of special attributes in addition to those defined + by the parent `Event` class. Attributes ---------- @@ -1495,19 +1484,16 @@ class KeyEvent(LocationEvent): """ A key event (key press, key release). - Attach additional attributes as defined in - :meth:`FigureCanvasBase.mpl_connect`. - - In addition to the `Event` and `LocationEvent` - attributes, the following attributes are defined: + A KeyEvent has a number of special attributes in addition to those defined + by the parent `Event` and `LocationEvent` classes. Attributes ---------- key : None or str - the key(s) pressed. Could be **None**, a single case sensitive ascii - character ("g", "G", "#", etc.), a special key - ("control", "shift", "f1", "up", etc.) or a - combination of the above (e.g., "ctrl+alt+g", "ctrl+alt+G"). + The key(s) pressed. Could be *None*, a single case sensitive Unicode + character ("g", "G", "#", etc.), a special key ("control", "shift", + "f1", "up", etc.) or a combination of the above (e.g., "ctrl+alt+g", + "ctrl+alt+G"). Notes ----- From 21594f7e82f83a3d7c44d1b525d1a246785dc5b1 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 1 Sep 2021 16:04:06 -0400 Subject: [PATCH 071/270] Backport PR #19553: ENH: Adding callbacks to Norms for update signals --- .../next_whats_new/callbacks_on_norms.rst | 8 +++ lib/matplotlib/cm.py | 41 ++++++++--- lib/matplotlib/colorbar.py | 3 +- lib/matplotlib/colors.py | 64 +++++++++++++++-- lib/matplotlib/contour.py | 9 +++ lib/matplotlib/image.py | 13 ++-- lib/matplotlib/tests/test_colors.py | 69 ++++++++++++++++++- lib/matplotlib/tests/test_image.py | 4 +- 8 files changed, 186 insertions(+), 25 deletions(-) create mode 100644 doc/users/next_whats_new/callbacks_on_norms.rst diff --git a/doc/users/next_whats_new/callbacks_on_norms.rst b/doc/users/next_whats_new/callbacks_on_norms.rst new file mode 100644 index 000000000000..1904a92d2fba --- /dev/null +++ b/doc/users/next_whats_new/callbacks_on_norms.rst @@ -0,0 +1,8 @@ +A callback registry has been added to Normalize objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`.colors.Normalize` objects now have a callback registry, ``callbacks``, +that can be connected to by other objects to be notified when the norm is +updated. The callback emits the key ``changed`` when the norm is modified. +`.cm.ScalarMappable` is now a listener and will register a change +when the norm's vmin, vmax or other attributes are changed. diff --git a/lib/matplotlib/cm.py b/lib/matplotlib/cm.py index 0af2f0f327d9..76c1c5d4f7f2 100644 --- a/lib/matplotlib/cm.py +++ b/lib/matplotlib/cm.py @@ -337,7 +337,7 @@ def __init__(self, norm=None, cmap=None): The colormap used to map normalized data values to RGBA colors. """ self._A = None - self.norm = None # So that the setter knows we're initializing. + self._norm = None # So that the setter knows we're initializing. self.set_norm(norm) # The Normalize instance of this ScalarMappable. self.cmap = None # So that the setter knows we're initializing. self.set_cmap(cmap) # The Colormap instance of this ScalarMappable. @@ -496,6 +496,8 @@ def set_clim(self, vmin=None, vmax=None): .. ACCEPTS: (vmin: float, vmax: float) """ + # If the norm's limits are updated self.changed() will be called + # through the callbacks attached to the norm if vmax is None: try: vmin, vmax = vmin @@ -505,7 +507,6 @@ def set_clim(self, vmin=None, vmax=None): self.norm.vmin = colors._sanitize_extrema(vmin) if vmax is not None: self.norm.vmax = colors._sanitize_extrema(vmax) - self.changed() def get_alpha(self): """ @@ -531,6 +532,30 @@ def set_cmap(self, cmap): if not in_init: self.changed() # Things are not set up properly yet. + @property + def norm(self): + return self._norm + + @norm.setter + def norm(self, norm): + _api.check_isinstance((colors.Normalize, None), norm=norm) + if norm is None: + norm = colors.Normalize() + + if norm is self.norm: + # We aren't updating anything + return + + in_init = self.norm is None + # Remove the current callback and connect to the new one + if not in_init: + self.norm.callbacks.disconnect(self._id_norm) + self._norm = norm + self._id_norm = self.norm.callbacks.connect('changed', + self.changed) + if not in_init: + self.changed() + def set_norm(self, norm): """ Set the normalization instance. @@ -545,13 +570,7 @@ def set_norm(self, norm): the norm of the mappable will reset the norm, locator, and formatters on the colorbar to default. """ - _api.check_isinstance((colors.Normalize, None), norm=norm) - in_init = self.norm is None - if norm is None: - norm = colors.Normalize() self.norm = norm - if not in_init: - self.changed() # Things are not set up properly yet. def autoscale(self): """ @@ -560,8 +579,9 @@ def autoscale(self): """ if self._A is None: raise TypeError('You must first set_array for mappable') + # If the norm's limits are updated self.changed() will be called + # through the callbacks attached to the norm self.norm.autoscale(self._A) - self.changed() def autoscale_None(self): """ @@ -570,8 +590,9 @@ def autoscale_None(self): """ if self._A is None: raise TypeError('You must first set_array for mappable') + # If the norm's limits are updated self.changed() will be called + # through the callbacks attached to the norm self.norm.autoscale_None(self._A) - self.changed() def changed(self): """ diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index 459b14f6c5a7..9d40ac8e5e9c 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -471,6 +471,7 @@ def __init__(self, ax, mappable=None, *, cmap=None, self.ax.add_collection(self.dividers) self.locator = None + self.minorlocator = None self.formatter = None self.__scale = None # linear, log10 for now. Hopefully more? @@ -1096,7 +1097,7 @@ def _mesh(self): # vmax of the colorbar, not the norm. This allows the situation # where the colormap has a narrower range than the colorbar, to # accommodate extra contours: - norm = copy.copy(self.norm) + norm = copy.deepcopy(self.norm) norm.vmin = self.vmin norm.vmax = self.vmax x = np.array([0.0, 1.0]) diff --git a/lib/matplotlib/colors.py b/lib/matplotlib/colors.py index c5db6117f1bc..58e3fe198498 100644 --- a/lib/matplotlib/colors.py +++ b/lib/matplotlib/colors.py @@ -1123,10 +1123,50 @@ def __init__(self, vmin=None, vmax=None, clip=False): ----- Returns 0 if ``vmin == vmax``. """ - self.vmin = _sanitize_extrema(vmin) - self.vmax = _sanitize_extrema(vmax) - self.clip = clip - self._scale = None # will default to LinearScale for colorbar + self._vmin = _sanitize_extrema(vmin) + self._vmax = _sanitize_extrema(vmax) + self._clip = clip + self._scale = None + self.callbacks = cbook.CallbackRegistry() + + @property + def vmin(self): + return self._vmin + + @vmin.setter + def vmin(self, value): + value = _sanitize_extrema(value) + if value != self._vmin: + self._vmin = value + self._changed() + + @property + def vmax(self): + return self._vmax + + @vmax.setter + def vmax(self, value): + value = _sanitize_extrema(value) + if value != self._vmax: + self._vmax = value + self._changed() + + @property + def clip(self): + return self._clip + + @clip.setter + def clip(self, value): + if value != self._clip: + self._clip = value + self._changed() + + def _changed(self): + """ + Call this whenever the norm is changed to notify all the + callback listeners to the 'changed' signal. + """ + self.callbacks.process('changed') @staticmethod def process_value(value): @@ -1273,7 +1313,7 @@ def __init__(self, vcenter, vmin=None, vmax=None): """ super().__init__(vmin=vmin, vmax=vmax) - self.vcenter = vcenter + self._vcenter = vcenter if vcenter is not None and vmax is not None and vcenter >= vmax: raise ValueError('vmin, vcenter, and vmax must be in ' 'ascending order') @@ -1281,6 +1321,16 @@ def __init__(self, vcenter, vmin=None, vmax=None): raise ValueError('vmin, vcenter, and vmax must be in ' 'ascending order') + @property + def vcenter(self): + return self._vcenter + + @vcenter.setter + def vcenter(self, value): + if value != self._vcenter: + self._vcenter = value + self._changed() + def autoscale_None(self, A): """ Get vmin and vmax, and then clip at vcenter @@ -1387,7 +1437,9 @@ def vcenter(self): @vcenter.setter def vcenter(self, vcenter): - self._vcenter = vcenter + if vcenter != self._vcenter: + self._vcenter = vcenter + self._changed() if self.vmax is not None: # recompute halfrange assuming vmin and vmax represent # min and max of data diff --git a/lib/matplotlib/contour.py b/lib/matplotlib/contour.py index 7dec80943993..4d124ce8c57c 100644 --- a/lib/matplotlib/contour.py +++ b/lib/matplotlib/contour.py @@ -1090,6 +1090,15 @@ def _make_paths(self, segs, kinds): in zip(segs, kinds)] def changed(self): + if not hasattr(self, "cvalues"): + # Just return after calling the super() changed function + cm.ScalarMappable.changed(self) + return + # Force an autoscale immediately because self.to_rgba() calls + # autoscale_None() internally with the data passed to it, + # so if vmin/vmax are not set yet, this would override them with + # content from *cvalues* rather than levels like we want + self.norm.autoscale_None(self.levels) tcolors = [(tuple(rgba),) for rgba in self.to_rgba(self.cvalues, alpha=self.alpha)] self.tcolors = tcolors diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py index ca5b7da5f808..2036bf7e17c9 100644 --- a/lib/matplotlib/image.py +++ b/lib/matplotlib/image.py @@ -537,11 +537,14 @@ def _make_image(self, A, in_bbox, out_bbox, clip_bbox, magnification=1.0, if isinstance(self.norm, mcolors.LogNorm) and s_vmin <= 0: # Don't give 0 or negative values to LogNorm s_vmin = np.finfo(scaled_dtype).eps - with cbook._setattr_cm(self.norm, - vmin=s_vmin, - vmax=s_vmax, - ): - output = self.norm(resampled_masked) + # Block the norm from sending an update signal during the + # temporary vmin/vmax change + with self.norm.callbacks.blocked(): + with cbook._setattr_cm(self.norm, + vmin=s_vmin, + vmax=s_vmax, + ): + output = self.norm(resampled_masked) else: if A.ndim == 2: # _interpolation_stage == 'rgba' self.norm.autoscale_None(A) diff --git a/lib/matplotlib/tests/test_colors.py b/lib/matplotlib/tests/test_colors.py index ae004e957591..bf89a3a82364 100644 --- a/lib/matplotlib/tests/test_colors.py +++ b/lib/matplotlib/tests/test_colors.py @@ -1,5 +1,6 @@ import copy import itertools +import unittest.mock from io import BytesIO import numpy as np @@ -17,7 +18,7 @@ import matplotlib.cbook as cbook import matplotlib.pyplot as plt import matplotlib.scale as mscale -from matplotlib.testing.decorators import image_comparison +from matplotlib.testing.decorators import image_comparison, check_figures_equal @pytest.mark.parametrize('N, result', [ @@ -1408,3 +1409,69 @@ def test_norm_deepcopy(): norm2 = copy.deepcopy(norm) assert norm2._scale is None assert norm2.vmin == norm.vmin + + +def test_norm_callback(): + increment = unittest.mock.Mock(return_value=None) + + norm = mcolors.Normalize() + norm.callbacks.connect('changed', increment) + # Haven't updated anything, so call count should be 0 + assert increment.call_count == 0 + + # Now change vmin and vmax to test callbacks + norm.vmin = 1 + assert increment.call_count == 1 + norm.vmax = 5 + assert increment.call_count == 2 + # callback shouldn't be called if setting to the same value + norm.vmin = 1 + assert increment.call_count == 2 + norm.vmax = 5 + assert increment.call_count == 2 + + +def test_scalarmappable_norm_update(): + norm = mcolors.Normalize() + sm = matplotlib.cm.ScalarMappable(norm=norm, cmap='plasma') + # sm doesn't have a stale attribute at first, set it to False + sm.stale = False + # The mappable should be stale after updating vmin/vmax + norm.vmin = 5 + assert sm.stale + sm.stale = False + norm.vmax = 5 + assert sm.stale + sm.stale = False + norm.clip = True + assert sm.stale + # change to the CenteredNorm and TwoSlopeNorm to test those + # Also make sure that updating the norm directly and with + # set_norm both update the Norm callback + norm = mcolors.CenteredNorm() + sm.norm = norm + sm.stale = False + norm.vcenter = 1 + assert sm.stale + norm = mcolors.TwoSlopeNorm(vcenter=0, vmin=-1, vmax=1) + sm.set_norm(norm) + sm.stale = False + norm.vcenter = 1 + assert sm.stale + + +@check_figures_equal() +def test_norm_update_figs(fig_test, fig_ref): + ax_ref = fig_ref.add_subplot() + ax_test = fig_test.add_subplot() + + z = np.arange(100).reshape((10, 10)) + ax_ref.imshow(z, norm=mcolors.Normalize(10, 90)) + + # Create the norm beforehand with different limits and then update + # after adding to the plot + norm = mcolors.Normalize(0, 1) + ax_test.imshow(z, norm=norm) + # Force initial draw to make sure it isn't already stale + fig_test.canvas.draw() + norm.vmin, norm.vmax = 10, 90 diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index 37dddd4e4706..2e7fae6c58d8 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -1017,8 +1017,8 @@ def test_imshow_bool(): def test_full_invalid(): fig, ax = plt.subplots() ax.imshow(np.full((10, 10), np.nan)) - with pytest.warns(UserWarning): - fig.canvas.draw() + + fig.canvas.draw() @pytest.mark.parametrize("fmt,counted", From dc09ae65e9fa3712a5523e9f43342e63cd21bdc4 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 1 Sep 2021 16:11:57 -0400 Subject: [PATCH 072/270] Backport PR #20965: BUG: Fix f_back is None handling --- lib/matplotlib/backends/backend_qt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/backends/backend_qt.py b/lib/matplotlib/backends/backend_qt.py index 5b74176befff..e8a137d6a565 100644 --- a/lib/matplotlib/backends/backend_qt.py +++ b/lib/matplotlib/backends/backend_qt.py @@ -333,7 +333,8 @@ def keyReleaseEvent(self, event): def resizeEvent(self, event): frame = sys._getframe() - if frame.f_code is frame.f_back.f_code: # Prevent PyQt6 recursion. + # Prevent PyQt6 recursion, but sometimes frame.f_back is None + if frame.f_code is getattr(frame.f_back, 'f_code', None): return w = event.size().width() * self.device_pixel_ratio h = event.size().height() * self.device_pixel_ratio From f04212d6b5cd1bfe63cd8c4f1f8cbba7097c80ae Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 1 Sep 2021 18:18:20 -0400 Subject: [PATCH 073/270] Backport PR #20321: Add a GTK4 backend. --- .flake8 | 8 +- doc/api/backend_gtk4_api.rst | 16 + doc/api/index_backend_api.rst | 1 + doc/devel/dependencies.rst | 4 +- .../embedding_in_gtk3_panzoom_sgskip.py | 2 +- .../embedding_in_gtk3_sgskip.py | 2 +- .../embedding_in_gtk4_panzoom_sgskip.py | 51 ++ .../embedding_in_gtk4_sgskip.py | 45 ++ ...t_sgskip.py => gtk3_spreadsheet_sgskip.py} | 6 +- .../gtk4_spreadsheet_sgskip.py | 91 +++ ...tk_sgskip.py => pylab_with_gtk3_sgskip.py} | 6 +- .../user_interfaces/pylab_with_gtk4_sgskip.py | 51 ++ lib/matplotlib/__init__.py | 4 +- lib/matplotlib/backend_bases.py | 5 +- lib/matplotlib/backends/_backend_gtk.py | 174 +++++ lib/matplotlib/backends/backend_gtk3.py | 208 +----- lib/matplotlib/backends/backend_gtk4.py | 681 ++++++++++++++++++ lib/matplotlib/backends/backend_gtk4agg.py | 80 ++ lib/matplotlib/backends/backend_gtk4cairo.py | 35 + lib/matplotlib/cbook/__init__.py | 13 +- lib/matplotlib/mpl-data/matplotlibrc | 4 +- lib/matplotlib/pyplot.py | 4 +- lib/matplotlib/rcsetup.py | 2 +- .../tests/test_backends_interactive.py | 12 +- mplsetup.cfg.template | 4 +- tutorials/introductory/sample_plots.py | 1 + tutorials/introductory/usage.py | 14 +- 27 files changed, 1312 insertions(+), 212 deletions(-) create mode 100644 doc/api/backend_gtk4_api.rst create mode 100644 examples/user_interfaces/embedding_in_gtk4_panzoom_sgskip.py create mode 100644 examples/user_interfaces/embedding_in_gtk4_sgskip.py rename examples/user_interfaces/{gtk_spreadsheet_sgskip.py => gtk3_spreadsheet_sgskip.py} (97%) create mode 100644 examples/user_interfaces/gtk4_spreadsheet_sgskip.py rename examples/user_interfaces/{pylab_with_gtk_sgskip.py => pylab_with_gtk3_sgskip.py} (96%) create mode 100644 examples/user_interfaces/pylab_with_gtk4_sgskip.py create mode 100644 lib/matplotlib/backends/_backend_gtk.py create mode 100644 lib/matplotlib/backends/backend_gtk4.py create mode 100644 lib/matplotlib/backends/backend_gtk4agg.py create mode 100644 lib/matplotlib/backends/backend_gtk4cairo.py diff --git a/.flake8 b/.flake8 index 06ad576c1b19..82b495f4cfe3 100644 --- a/.flake8 +++ b/.flake8 @@ -123,8 +123,12 @@ per-file-ignores = examples/ticks_and_spines/date_concise_formatter.py: E402 examples/user_interfaces/embedding_in_gtk3_panzoom_sgskip.py: E402 examples/user_interfaces/embedding_in_gtk3_sgskip.py: E402 - examples/user_interfaces/gtk_spreadsheet_sgskip.py: E402 + examples/user_interfaces/embedding_in_gtk4_panzoom_sgskip.py: E402 + examples/user_interfaces/embedding_in_gtk4_sgskip.py: E402 + examples/user_interfaces/gtk3_spreadsheet_sgskip.py: E402 + examples/user_interfaces/gtk4_spreadsheet_sgskip.py: E402 examples/user_interfaces/mpl_with_glade3_sgskip.py: E402 - examples/user_interfaces/pylab_with_gtk_sgskip.py: E402 + examples/user_interfaces/pylab_with_gtk3_sgskip.py: E402 + examples/user_interfaces/pylab_with_gtk4_sgskip.py: E402 examples/user_interfaces/toolmanager_sgskip.py: E402 examples/userdemo/pgf_preamble_sgskip.py: E402 diff --git a/doc/api/backend_gtk4_api.rst b/doc/api/backend_gtk4_api.rst new file mode 100644 index 000000000000..c2bc05d6f36c --- /dev/null +++ b/doc/api/backend_gtk4_api.rst @@ -0,0 +1,16 @@ +**NOTE** These backends are not documented here, to avoid adding a dependency +to building the docs. + +.. redirect-from:: /api/backend_gtk4agg_api +.. redirect-from:: /api/backend_gtk4cairo_api + + +:mod:`matplotlib.backends.backend_gtk4agg` +========================================== + +.. module:: matplotlib.backends.backend_gtk4agg + +:mod:`matplotlib.backends.backend_gtk4cairo` +============================================ + +.. module:: matplotlib.backends.backend_gtk4cairo diff --git a/doc/api/index_backend_api.rst b/doc/api/index_backend_api.rst index ad2febf8dc38..25c06820c9da 100644 --- a/doc/api/index_backend_api.rst +++ b/doc/api/index_backend_api.rst @@ -10,6 +10,7 @@ backend_agg_api.rst backend_cairo_api.rst backend_gtk3_api.rst + backend_gtk4_api.rst backend_nbagg_api.rst backend_pdf_api.rst backend_pgf_api.rst diff --git a/doc/devel/dependencies.rst b/doc/devel/dependencies.rst index 5502664f4b35..1007210b8ba9 100644 --- a/doc/devel/dependencies.rst +++ b/doc/devel/dependencies.rst @@ -42,9 +42,9 @@ and the capabilities they provide. * Tk_ (>= 8.4, != 8.6.0 or 8.6.1) [#]_: for the Tk-based backends. * PyQt6_ (>= 6.1), PySide6_, PyQt5_, or PySide2_: for the Qt-based backends. -* PyGObject_: for the GTK3-based backends [#]_. +* PyGObject_: for the GTK-based backends [#]_. * wxPython_ (>= 4) [#]_: for the wx-based backends. -* pycairo_ (>= 1.11.0) or cairocffi_ (>= 0.8): for the GTK3 and/or cairo-based +* pycairo_ (>= 1.11.0) or cairocffi_ (>= 0.8): for the GTK and/or cairo-based backends. * Tornado_: for the WebAgg backend. diff --git a/examples/user_interfaces/embedding_in_gtk3_panzoom_sgskip.py b/examples/user_interfaces/embedding_in_gtk3_panzoom_sgskip.py index 2f0833f09511..95d8df21a3a2 100644 --- a/examples/user_interfaces/embedding_in_gtk3_panzoom_sgskip.py +++ b/examples/user_interfaces/embedding_in_gtk3_panzoom_sgskip.py @@ -20,7 +20,7 @@ win = Gtk.Window() win.connect("delete-event", Gtk.main_quit) win.set_default_size(400, 300) -win.set_title("Embedding in GTK") +win.set_title("Embedding in GTK3") fig = Figure(figsize=(5, 4), dpi=100) ax = fig.add_subplot(1, 1, 1) diff --git a/examples/user_interfaces/embedding_in_gtk3_sgskip.py b/examples/user_interfaces/embedding_in_gtk3_sgskip.py index f5872304964d..b672ba8d9ff0 100644 --- a/examples/user_interfaces/embedding_in_gtk3_sgskip.py +++ b/examples/user_interfaces/embedding_in_gtk3_sgskip.py @@ -19,7 +19,7 @@ win = Gtk.Window() win.connect("delete-event", Gtk.main_quit) win.set_default_size(400, 300) -win.set_title("Embedding in GTK") +win.set_title("Embedding in GTK3") fig = Figure(figsize=(5, 4), dpi=100) ax = fig.add_subplot() diff --git a/examples/user_interfaces/embedding_in_gtk4_panzoom_sgskip.py b/examples/user_interfaces/embedding_in_gtk4_panzoom_sgskip.py new file mode 100644 index 000000000000..685a278fc7ad --- /dev/null +++ b/examples/user_interfaces/embedding_in_gtk4_panzoom_sgskip.py @@ -0,0 +1,51 @@ +""" +=========================================== +Embedding in GTK4 with a navigation toolbar +=========================================== + +Demonstrate NavigationToolbar with GTK4 accessed via pygobject. +""" + +import gi +gi.require_version('Gtk', '4.0') +from gi.repository import Gtk + +from matplotlib.backends.backend_gtk4 import ( + NavigationToolbar2GTK4 as NavigationToolbar) +from matplotlib.backends.backend_gtk4agg import ( + FigureCanvasGTK4Agg as FigureCanvas) +from matplotlib.figure import Figure +import numpy as np + + +def on_activate(app): + win = Gtk.ApplicationWindow(application=app) + win.set_default_size(400, 300) + win.set_title("Embedding in GTK4") + + fig = Figure(figsize=(5, 4), dpi=100) + ax = fig.add_subplot(1, 1, 1) + t = np.arange(0.0, 3.0, 0.01) + s = np.sin(2*np.pi*t) + ax.plot(t, s) + + vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + win.set_child(vbox) + + # Add canvas to vbox + canvas = FigureCanvas(fig) # a Gtk.DrawingArea + canvas.set_hexpand(True) + canvas.set_vexpand(True) + vbox.append(canvas) + + # Create toolbar + toolbar = NavigationToolbar(canvas, win) + vbox.append(toolbar) + + win.show() + + +app = Gtk.Application( + application_id='org.matplotlib.examples.EmbeddingInGTK4PanZoom') +app.connect('activate', on_activate) +app.run(None) diff --git a/examples/user_interfaces/embedding_in_gtk4_sgskip.py b/examples/user_interfaces/embedding_in_gtk4_sgskip.py new file mode 100644 index 000000000000..c92e139de25f --- /dev/null +++ b/examples/user_interfaces/embedding_in_gtk4_sgskip.py @@ -0,0 +1,45 @@ +""" +================= +Embedding in GTK4 +================= + +Demonstrate adding a FigureCanvasGTK4Agg widget to a Gtk.ScrolledWindow using +GTK4 accessed via pygobject. +""" + +import gi +gi.require_version('Gtk', '4.0') +from gi.repository import Gtk + +from matplotlib.backends.backend_gtk4agg import ( + FigureCanvasGTK4Agg as FigureCanvas) +from matplotlib.figure import Figure +import numpy as np + + +def on_activate(app): + win = Gtk.ApplicationWindow(application=app) + win.set_default_size(400, 300) + win.set_title("Embedding in GTK4") + + fig = Figure(figsize=(5, 4), dpi=100) + ax = fig.add_subplot() + t = np.arange(0.0, 3.0, 0.01) + s = np.sin(2*np.pi*t) + ax.plot(t, s) + + # A scrolled margin goes outside the scrollbars and viewport. + sw = Gtk.ScrolledWindow(margin_top=10, margin_bottom=10, + margin_start=10, margin_end=10) + win.set_child(sw) + + canvas = FigureCanvas(fig) # a Gtk.DrawingArea + canvas.set_size_request(800, 600) + sw.set_child(canvas) + + win.show() + + +app = Gtk.Application(application_id='org.matplotlib.examples.EmbeddingInGTK4') +app.connect('activate', on_activate) +app.run(None) diff --git a/examples/user_interfaces/gtk_spreadsheet_sgskip.py b/examples/user_interfaces/gtk3_spreadsheet_sgskip.py similarity index 97% rename from examples/user_interfaces/gtk_spreadsheet_sgskip.py rename to examples/user_interfaces/gtk3_spreadsheet_sgskip.py index 1f0f6e702240..925ea33faa48 100644 --- a/examples/user_interfaces/gtk_spreadsheet_sgskip.py +++ b/examples/user_interfaces/gtk3_spreadsheet_sgskip.py @@ -1,7 +1,7 @@ """ -=============== -GTK Spreadsheet -=============== +================ +GTK3 Spreadsheet +================ Example of embedding Matplotlib in an application and interacting with a treeview to store data. Double click on an entry to update plot data. diff --git a/examples/user_interfaces/gtk4_spreadsheet_sgskip.py b/examples/user_interfaces/gtk4_spreadsheet_sgskip.py new file mode 100644 index 000000000000..047ae4cf974e --- /dev/null +++ b/examples/user_interfaces/gtk4_spreadsheet_sgskip.py @@ -0,0 +1,91 @@ +""" +================ +GTK4 Spreadsheet +================ + +Example of embedding Matplotlib in an application and interacting with a +treeview to store data. Double click on an entry to update plot data. +""" + +import gi +gi.require_version('Gtk', '4.0') +gi.require_version('Gdk', '4.0') +from gi.repository import Gtk + +from matplotlib.backends.backend_gtk4agg import FigureCanvas # or gtk4cairo. + +from numpy.random import random +from matplotlib.figure import Figure + + +class DataManager(Gtk.ApplicationWindow): + num_rows, num_cols = 20, 10 + + data = random((num_rows, num_cols)) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.set_default_size(600, 600) + + self.set_title('GtkListStore demo') + + vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, homogeneous=False, + spacing=8) + self.set_child(vbox) + + label = Gtk.Label(label='Double click a row to plot the data') + vbox.append(label) + + sw = Gtk.ScrolledWindow() + sw.set_has_frame(True) + sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) + sw.set_hexpand(True) + sw.set_vexpand(True) + vbox.append(sw) + + model = self.create_model() + self.treeview = Gtk.TreeView(model=model) + self.treeview.connect('row-activated', self.plot_row) + sw.set_child(self.treeview) + + # Matplotlib stuff + fig = Figure(figsize=(6, 4), constrained_layout=True) + + self.canvas = FigureCanvas(fig) # a Gtk.DrawingArea + self.canvas.set_hexpand(True) + self.canvas.set_vexpand(True) + vbox.append(self.canvas) + ax = fig.add_subplot() + self.line, = ax.plot(self.data[0, :], 'go') # plot the first row + + self.add_columns() + + def plot_row(self, treeview, path, view_column): + ind, = path # get the index into data + points = self.data[ind, :] + self.line.set_ydata(points) + self.canvas.draw() + + def add_columns(self): + for i in range(self.num_cols): + column = Gtk.TreeViewColumn(str(i), Gtk.CellRendererText(), text=i) + self.treeview.append_column(column) + + def create_model(self): + types = [float] * self.num_cols + store = Gtk.ListStore(*types) + for row in self.data: + # Gtk.ListStore.append is broken in PyGObject, so insert manually. + it = store.insert(-1) + store.set(it, {i: val for i, val in enumerate(row)}) + return store + + +def on_activate(app): + manager = DataManager(application=app) + manager.show() + + +app = Gtk.Application(application_id='org.matplotlib.examples.GTK4Spreadsheet') +app.connect('activate', on_activate) +app.run() diff --git a/examples/user_interfaces/pylab_with_gtk_sgskip.py b/examples/user_interfaces/pylab_with_gtk3_sgskip.py similarity index 96% rename from examples/user_interfaces/pylab_with_gtk_sgskip.py rename to examples/user_interfaces/pylab_with_gtk3_sgskip.py index 277f7de2a9eb..4d943032df5a 100644 --- a/examples/user_interfaces/pylab_with_gtk_sgskip.py +++ b/examples/user_interfaces/pylab_with_gtk3_sgskip.py @@ -1,7 +1,7 @@ """ -=============== -pyplot with GTK -=============== +================ +pyplot with GTK3 +================ An example of how to use pyplot to manage your figure windows, but modify the GUI by accessing the underlying GTK widgets. diff --git a/examples/user_interfaces/pylab_with_gtk4_sgskip.py b/examples/user_interfaces/pylab_with_gtk4_sgskip.py new file mode 100644 index 000000000000..6e0cebcce23c --- /dev/null +++ b/examples/user_interfaces/pylab_with_gtk4_sgskip.py @@ -0,0 +1,51 @@ +""" +================ +pyplot with GTK4 +================ + +An example of how to use pyplot to manage your figure windows, but modify the +GUI by accessing the underlying GTK widgets. +""" + +import matplotlib +matplotlib.use('GTK4Agg') # or 'GTK4Cairo' +import matplotlib.pyplot as plt + +import gi +gi.require_version('Gtk', '4.0') +from gi.repository import Gtk + + +fig, ax = plt.subplots() +ax.plot([1, 2, 3], 'ro-', label='easy as 1 2 3') +ax.plot([1, 4, 9], 'gs--', label='easy as 1 2 3 squared') +ax.legend() + +manager = fig.canvas.manager +# you can access the window or vbox attributes this way +toolbar = manager.toolbar +vbox = manager.vbox + +# now let's add a button to the toolbar +button = Gtk.Button(label='Click me') +button.connect('clicked', lambda button: print('hi mom')) +button.set_tooltip_text('Click me for fun and profit') +toolbar.append(button) + +# now let's add a widget to the vbox +label = Gtk.Label() +label.set_markup('Drag mouse over axes for position') +vbox.insert_child_after(label, fig.canvas) + + +def update(event): + if event.xdata is None: + label.set_markup('Drag mouse over axes for position') + else: + label.set_markup( + f'x,y=({event.xdata}, {event.ydata})') + + +fig.canvas.mpl_connect('motion_notify_event', update) + +plt.show() diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py index 0361a37aed48..ac84e82c30f6 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py @@ -1098,8 +1098,8 @@ def use(backend, *, force=True): backend names, which are case-insensitive: - interactive backends: - GTK3Agg, GTK3Cairo, MacOSX, nbAgg, QtAgg, QtCairo, - TkAgg, TkCairo, WebAgg, WX, WXAgg, WXCairo, Qt5Agg, Qt5Cairo + GTK3Agg, GTK3Cairo, GTK4Agg, GTK4Cairo, MacOSX, nbAgg, QtAgg, + QtCairo, TkAgg, TkCairo, WebAgg, WX, WXAgg, WXCairo, Qt5Agg, Qt5Cairo - non-interactive backends: agg, cairo, pdf, pgf, ps, svg, template diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 483e40bdf47c..f4934d3d10be 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -101,6 +101,7 @@ def _safe_pyplot_import(): backend_mapping = { 'qt': 'qtagg', 'gtk3': 'gtk3agg', + 'gtk4': 'gtk4agg', 'wx': 'wxagg', 'tk': 'tkagg', 'macosx': 'macosx', @@ -1656,7 +1657,7 @@ class FigureCanvasBase: A high-level figure instance. """ - # Set to one of {"qt", "gtk3", "wx", "tk", "macosx"} if an + # Set to one of {"qt", "gtk3", "gtk4", "wx", "tk", "macosx"} if an # interactive framework is required, or None otherwise. required_interactive_framework = None @@ -1732,7 +1733,7 @@ def _fix_ipython_backend2gui(cls): # don't break on our side. return rif = getattr(cls, "required_interactive_framework", None) - backend2gui_rif = {"qt": "qt", "gtk3": "gtk3", + backend2gui_rif = {"qt": "qt", "gtk3": "gtk3", "gtk4": "gtk4", "wx": "wx", "macosx": "osx"}.get(rif) if backend2gui_rif: if _is_non_interactive_terminal_ipython(ip): diff --git a/lib/matplotlib/backends/_backend_gtk.py b/lib/matplotlib/backends/_backend_gtk.py new file mode 100644 index 000000000000..f652815f5120 --- /dev/null +++ b/lib/matplotlib/backends/_backend_gtk.py @@ -0,0 +1,174 @@ +""" +Common code for GTK3 and GTK4 backends. +""" + +import logging + +import matplotlib as mpl +from matplotlib import backend_tools, cbook +from matplotlib.backend_bases import ( + _Backend, NavigationToolbar2, TimerBase, +) + +# The GTK3/GTK4 backends will have already called `gi.require_version` to set +# the desired GTK. +from gi.repository import Gio, GLib, Gtk + + +_log = logging.getLogger(__name__) + +backend_version = "%s.%s.%s" % ( + Gtk.get_major_version(), Gtk.get_minor_version(), Gtk.get_micro_version()) + +# Placeholder +_application = None + + +def _shutdown_application(app): + # The application might prematurely shut down if Ctrl-C'd out of IPython, + # so close all windows. + for win in app.get_windows(): + win.close() + # The PyGObject wrapper incorrectly thinks that None is not allowed, or we + # would call this: + # Gio.Application.set_default(None) + # Instead, we set this property and ignore default applications with it: + app._created_by_matplotlib = True + global _application + _application = None + + +def _create_application(): + global _application + + if _application is None: + app = Gio.Application.get_default() + if app is None or getattr(app, '_created_by_matplotlib'): + # display_is_valid returns False only if on Linux and neither X11 + # nor Wayland display can be opened. + if not mpl._c_internal_utils.display_is_valid(): + raise RuntimeError('Invalid DISPLAY variable') + _application = Gtk.Application.new('org.matplotlib.Matplotlib3', + Gio.ApplicationFlags.NON_UNIQUE) + # The activate signal must be connected, but we don't care for + # handling it, since we don't do any remote processing. + _application.connect('activate', lambda *args, **kwargs: None) + _application.connect('shutdown', _shutdown_application) + _application.register() + cbook._setup_new_guiapp() + else: + _application = app + + return _application + + +class TimerGTK(TimerBase): + """Subclass of `.TimerBase` using GTK timer events.""" + + def __init__(self, *args, **kwargs): + self._timer = None + super().__init__(*args, **kwargs) + + def _timer_start(self): + # Need to stop it, otherwise we potentially leak a timer id that will + # never be stopped. + self._timer_stop() + self._timer = GLib.timeout_add(self._interval, self._on_timer) + + def _timer_stop(self): + if self._timer is not None: + GLib.source_remove(self._timer) + self._timer = None + + def _timer_set_interval(self): + # Only stop and restart it if the timer has already been started. + if self._timer is not None: + self._timer_stop() + self._timer_start() + + def _on_timer(self): + super()._on_timer() + + # Gtk timeout_add() requires that the callback returns True if it + # is to be called again. + if self.callbacks and not self._single: + return True + else: + self._timer = None + return False + + +class _NavigationToolbar2GTK(NavigationToolbar2): + # Must be implemented in GTK3/GTK4 backends: + # * __init__ + # * save_figure + + def set_message(self, s): + escaped = GLib.markup_escape_text(s) + self.message.set_markup(f'{escaped}') + + def draw_rubberband(self, event, x0, y0, x1, y1): + height = self.canvas.figure.bbox.height + y1 = height - y1 + y0 = height - y0 + rect = [int(val) for val in (x0, y0, x1 - x0, y1 - y0)] + self.canvas._draw_rubberband(rect) + + def remove_rubberband(self): + self.canvas._draw_rubberband(None) + + def _update_buttons_checked(self): + for name, active in [("Pan", "PAN"), ("Zoom", "ZOOM")]: + button = self._gtk_ids.get(name) + if button: + with button.handler_block(button._signal_handler): + button.set_active(self.mode.name == active) + + def pan(self, *args): + super().pan(*args) + self._update_buttons_checked() + + def zoom(self, *args): + super().zoom(*args) + self._update_buttons_checked() + + def set_history_buttons(self): + can_backward = self._nav_stack._pos > 0 + can_forward = self._nav_stack._pos < len(self._nav_stack._elements) - 1 + if 'Back' in self._gtk_ids: + self._gtk_ids['Back'].set_sensitive(can_backward) + if 'Forward' in self._gtk_ids: + self._gtk_ids['Forward'].set_sensitive(can_forward) + + +class RubberbandGTK(backend_tools.RubberbandBase): + def draw_rubberband(self, x0, y0, x1, y1): + _NavigationToolbar2GTK.draw_rubberband( + self._make_classic_style_pseudo_toolbar(), None, x0, y0, x1, y1) + + def remove_rubberband(self): + _NavigationToolbar2GTK.remove_rubberband( + self._make_classic_style_pseudo_toolbar()) + + +class ConfigureSubplotsGTK(backend_tools.ConfigureSubplotsBase, Gtk.Window): + def _get_canvas(self, fig): + return self.canvas.__class__(fig) + + def trigger(self, *args): + _NavigationToolbar2GTK.configure_subplots( + self._make_classic_style_pseudo_toolbar(), None) + + +class _BackendGTK(_Backend): + @staticmethod + def mainloop(): + global _application + if _application is None: + return + + try: + _application.run() # Quits when all added windows close. + finally: + # Running after quit is undefined, so create a new one next time. + _application = None diff --git a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py index 46b48c2200aa..7701d7742bf0 100644 --- a/lib/matplotlib/backends/backend_gtk3.py +++ b/lib/matplotlib/backends/backend_gtk3.py @@ -29,13 +29,17 @@ raise ImportError from e from gi.repository import Gio, GLib, GObject, Gtk, Gdk +from ._backend_gtk import ( + _create_application, _shutdown_application, + backend_version, _BackendGTK, _NavigationToolbar2GTK, + TimerGTK as TimerGTK3, + ConfigureSubplotsGTK as ConfigureSubplotsGTK3, + RubberbandGTK as RubberbandGTK3, +) _log = logging.getLogger(__name__) -backend_version = "%s.%s.%s" % ( - Gtk.get_major_version(), Gtk.get_minor_version(), Gtk.get_micro_version()) - @_api.caching_module_getattr # module-level deprecations class __getattr__: @@ -56,46 +60,6 @@ def cursord(self): return {} -# Placeholder -_application = None - - -def _shutdown_application(app): - # The application might prematurely shut down if Ctrl-C'd out of IPython, - # so close all windows. - for win in app.get_windows(): - win.destroy() - # The PyGObject wrapper incorrectly thinks that None is not allowed, or we - # would call this: - # Gio.Application.set_default(None) - # Instead, we set this property and ignore default applications with it: - app._created_by_matplotlib = True - global _application - _application = None - - -def _create_application(): - global _application - - if _application is None: - app = Gio.Application.get_default() - if app is None or getattr(app, '_created_by_matplotlib'): - # display_is_valid returns False only if on Linux and neither X11 - # nor Wayland display can be opened. - if not mpl._c_internal_utils.display_is_valid(): - raise RuntimeError('Invalid DISPLAY variable') - _application = Gtk.Application.new('org.matplotlib.Matplotlib3', - Gio.ApplicationFlags.NON_UNIQUE) - # The activate signal must be connected, but we don't care for - # handling it, since we don't do any remote processing. - _application.connect('activate', lambda *args, **kwargs: None) - _application.connect('shutdown', _shutdown_application) - _application.register() - cbook._setup_new_guiapp() - else: - _application = app - - @functools.lru_cache() def _mpl_to_gtk_cursor(mpl_cursor): name = _api.check_getitem({ @@ -110,42 +74,6 @@ def _mpl_to_gtk_cursor(mpl_cursor): return Gdk.Cursor.new_from_name(Gdk.Display.get_default(), name) -class TimerGTK3(TimerBase): - """Subclass of `.TimerBase` using GTK3 timer events.""" - - def __init__(self, *args, **kwargs): - self._timer = None - super().__init__(*args, **kwargs) - - def _timer_start(self): - # Need to stop it, otherwise we potentially leak a timer id that will - # never be stopped. - self._timer_stop() - self._timer = GLib.timeout_add(self._interval, self._on_timer) - - def _timer_stop(self): - if self._timer is not None: - GLib.source_remove(self._timer) - self._timer = None - - def _timer_set_interval(self): - # Only stop and restart it if the timer has already been started - if self._timer is not None: - self._timer_stop() - self._timer_start() - - def _on_timer(self): - super()._on_timer() - - # Gtk timeout_add() requires that the callback returns True if it - # is to be called again. - if self.callbacks and not self._single: - return True - else: - self._timer = None - return False - - class FigureCanvasGTK3(Gtk.DrawingArea, FigureCanvasBase): required_interactive_framework = "gtk3" _timer_cls = TimerGTK3 @@ -365,7 +293,7 @@ class FigureManagerGTK3(FigureManagerBase): num : int or str The Figure number toolbar : Gtk.Toolbar - The Gtk.Toolbar + The toolbar vbox : Gtk.VBox The Gtk.VBox containing the canvas and toolbar window : Gtk.Window @@ -373,19 +301,13 @@ class FigureManagerGTK3(FigureManagerBase): """ def __init__(self, canvas, num): - _create_application() + app = _create_application() self.window = Gtk.Window() - _application.add_window(self.window) + app.add_window(self.window) super().__init__(canvas, num) self.window.set_wmclass("matplotlib", "Matplotlib") - try: - self.window.set_icon_from_file(window_icon) - except Exception: - # Some versions of gtk throw a glib.GError but not all, so I am not - # sure how to catch it. I am unhappy doing a blanket catch here, - # but am not sure what a better way is - JDH - _log.info('Could not load matplotlib icon: %s', sys.exc_info()[1]) + self.window.set_icon_from_file(window_icon) self.vbox = Gtk.Box() self.vbox.set_property("orientation", Gtk.Orientation.VERTICAL) @@ -492,7 +414,7 @@ def resize(self, width, height): self.window.resize(width, height) -class NavigationToolbar2GTK3(NavigationToolbar2, Gtk.Toolbar): +class NavigationToolbar2GTK3(_NavigationToolbar2GTK, Gtk.Toolbar): def __init__(self, canvas, window): self.win = window GObject.GObject.__init__(self) @@ -509,21 +431,16 @@ def __init__(self, canvas, window): str(cbook._get_data_path('images', f'{image_file}-symbolic.svg'))), Gtk.IconSize.LARGE_TOOLBAR) - self._gtk_ids[text] = tbutton = ( + self._gtk_ids[text] = button = ( Gtk.ToggleToolButton() if callback in ['zoom', 'pan'] else Gtk.ToolButton()) - tbutton.set_label(text) - tbutton.set_icon_widget(image) - self.insert(tbutton, -1) + button.set_label(text) + button.set_icon_widget(image) # Save the handler id, so that we can block it as needed. - tbutton._signal_handler = tbutton.connect( + button._signal_handler = button.connect( 'clicked', getattr(self, callback)) - tbutton.set_tooltip_text(tooltip_text) - - toolitem = Gtk.SeparatorToolItem() - self.insert(toolitem, -1) - toolitem.set_draw(False) - toolitem.set_expand(True) + button.set_tooltip_text(tooltip_text) + self.insert(button, -1) # This filler item ensures the toolbar is always at least two text # lines high. Otherwise the canvas gets redrawn as the mouse hovers @@ -534,6 +451,7 @@ def __init__(self, canvas, window): label = Gtk.Label() label.set_markup( '\N{NO-BREAK SPACE}\n\N{NO-BREAK SPACE}') + toolitem.set_expand(True) # Push real message to the right. toolitem.add(label) toolitem = Gtk.ToolItem() @@ -545,35 +463,6 @@ def __init__(self, canvas, window): NavigationToolbar2.__init__(self, canvas) - def set_message(self, s): - escaped = GLib.markup_escape_text(s) - self.message.set_markup(f'{escaped}') - - def draw_rubberband(self, event, x0, y0, x1, y1): - height = self.canvas.figure.bbox.height - y1 = height - y1 - y0 = height - y0 - rect = [int(val) for val in (x0, y0, x1 - x0, y1 - y0)] - self.canvas._draw_rubberband(rect) - - def remove_rubberband(self): - self.canvas._draw_rubberband(None) - - def _update_buttons_checked(self): - for name, active in [("Pan", "PAN"), ("Zoom", "ZOOM")]: - button = self._gtk_ids.get(name) - if button: - with button.handler_block(button._signal_handler): - button.set_active(self.mode.name == active) - - def pan(self, *args): - super().pan(*args) - self._update_buttons_checked() - - def zoom(self, *args): - super().zoom(*args) - self._update_buttons_checked() - def save_figure(self, *args): dialog = Gtk.FileChooserDialog( title="Save the figure", @@ -618,14 +507,6 @@ def on_notify_filter(*args): except Exception as e: error_msg_gtk(str(e), parent=self) - def set_history_buttons(self): - can_backward = self._nav_stack._pos > 0 - can_forward = self._nav_stack._pos < len(self._nav_stack._elements) - 1 - if 'Back' in self._gtk_ids: - self._gtk_ids['Back'].set_sensitive(can_backward) - if 'Forward' in self._gtk_ids: - self._gtk_ids['Forward'].set_sensitive(can_forward) - class ToolbarGTK3(ToolContainerBase, Gtk.Box): _icon_extension = '-symbolic.svg' @@ -643,26 +524,26 @@ def __init__(self, toolmanager): def add_toolitem(self, name, group, position, image_file, description, toggle): if toggle: - tbutton = Gtk.ToggleToolButton() + button = Gtk.ToggleToolButton() else: - tbutton = Gtk.ToolButton() - tbutton.set_label(name) + button = Gtk.ToolButton() + button.set_label(name) if image_file is not None: image = Gtk.Image.new_from_gicon( Gio.Icon.new_for_string(image_file), Gtk.IconSize.LARGE_TOOLBAR) - tbutton.set_icon_widget(image) + button.set_icon_widget(image) if position is None: position = -1 - self._add_button(tbutton, group, position) - signal = tbutton.connect('clicked', self._call_tool, name) - tbutton.set_tooltip_text(description) - tbutton.show_all() + self._add_button(button, group, position) + signal = button.connect('clicked', self._call_tool, name) + button.set_tooltip_text(description) + button.show_all() self._toolitems.setdefault(name, []) - self._toolitems[name].append((tbutton, signal)) + self._toolitems[name].append((button, signal)) def _add_button(self, button, group, position): if group not in self._groups: @@ -707,16 +588,6 @@ def set_message(self, s): self._message.set_label(s) -class RubberbandGTK3(backend_tools.RubberbandBase): - def draw_rubberband(self, x0, y0, x1, y1): - NavigationToolbar2GTK3.draw_rubberband( - self._make_classic_style_pseudo_toolbar(), None, x0, y0, x1, y1) - - def remove_rubberband(self): - NavigationToolbar2GTK3.remove_rubberband( - self._make_classic_style_pseudo_toolbar()) - - class SaveFigureGTK3(backend_tools.SaveFigureBase): def trigger(self, *args, **kwargs): @@ -733,15 +604,6 @@ def set_cursor(self, cursor): self._make_classic_style_pseudo_toolbar(), cursor) -class ConfigureSubplotsGTK3(backend_tools.ConfigureSubplotsBase, Gtk.Window): - def _get_canvas(self, fig): - return self.canvas.__class__(fig) - - def trigger(self, *args): - NavigationToolbar2GTK3.configure_subplots( - self._make_classic_style_pseudo_toolbar(), None) - - class HelpGTK3(backend_tools.ToolHelpBase): def _normalize_shortcut(self, key): """ @@ -868,18 +730,6 @@ def error_msg_gtk(msg, parent=None): @_Backend.export -class _BackendGTK3(_Backend): +class _BackendGTK3(_BackendGTK): FigureCanvas = FigureCanvasGTK3 FigureManager = FigureManagerGTK3 - - @staticmethod - def mainloop(): - global _application - if _application is None: - return - - try: - _application.run() # Quits when all added windows close. - finally: - # Running after quit is undefined, so create a new one next time. - _application = None diff --git a/lib/matplotlib/backends/backend_gtk4.py b/lib/matplotlib/backends/backend_gtk4.py new file mode 100644 index 000000000000..0babb1ff4974 --- /dev/null +++ b/lib/matplotlib/backends/backend_gtk4.py @@ -0,0 +1,681 @@ +import functools +import io +import os +from pathlib import Path +import sys + +import matplotlib as mpl +from matplotlib import _api, backend_tools, cbook +from matplotlib._pylab_helpers import Gcf +from matplotlib.backend_bases import ( + _Backend, FigureCanvasBase, FigureManagerBase, NavigationToolbar2, + TimerBase, ToolContainerBase) +from matplotlib.backend_tools import Cursors +from matplotlib.figure import Figure +from matplotlib.widgets import SubplotTool + +try: + import gi +except ImportError as err: + raise ImportError("The GTK4 backends require PyGObject") from err + +try: + # :raises ValueError: If module/version is already loaded, already + # required, or unavailable. + gi.require_version("Gtk", "4.0") +except ValueError as e: + # in this case we want to re-raise as ImportError so the + # auto-backend selection logic correctly skips. + raise ImportError from e + +from gi.repository import Gio, GLib, GObject, Gtk, Gdk, GdkPixbuf +from ._backend_gtk import ( + _create_application, _shutdown_application, + backend_version, _BackendGTK, _NavigationToolbar2GTK, + TimerGTK as TimerGTK4, + ConfigureSubplotsGTK as ConfigureSubplotsGTK4, + RubberbandGTK as RubberbandGTK4, +) + + +def _mpl_to_gtk_cursor(mpl_cursor): + return _api.check_getitem({ + Cursors.MOVE: "move", + Cursors.HAND: "pointer", + Cursors.POINTER: "default", + Cursors.SELECT_REGION: "crosshair", + Cursors.WAIT: "wait", + Cursors.RESIZE_HORIZONTAL: "ew-resize", + Cursors.RESIZE_VERTICAL: "ns-resize", + }, cursor=mpl_cursor) + + +class FigureCanvasGTK4(Gtk.DrawingArea, FigureCanvasBase): + required_interactive_framework = "gtk4" + _timer_cls = TimerGTK4 + + def __init__(self, figure=None): + FigureCanvasBase.__init__(self, figure) + GObject.GObject.__init__(self) + self.set_hexpand(True) + self.set_vexpand(True) + + self._idle_draw_id = 0 + self._lastCursor = None + self._rubberband_rect = None + + self.set_draw_func(self._draw_func) + self.connect('resize', self.resize_event) + + click = Gtk.GestureClick() + click.set_button(0) # All buttons. + click.connect('pressed', self.button_press_event) + click.connect('released', self.button_release_event) + self.add_controller(click) + + key = Gtk.EventControllerKey() + key.connect('key-pressed', self.key_press_event) + key.connect('key-released', self.key_release_event) + self.add_controller(key) + + motion = Gtk.EventControllerMotion() + motion.connect('motion', self.motion_notify_event) + motion.connect('enter', self.enter_notify_event) + motion.connect('leave', self.leave_notify_event) + self.add_controller(motion) + + scroll = Gtk.EventControllerScroll.new( + Gtk.EventControllerScrollFlags.VERTICAL) + scroll.connect('scroll', self.scroll_event) + self.add_controller(scroll) + + self.set_focusable(True) + + css = Gtk.CssProvider() + css.load_from_data(b".matplotlib-canvas { background-color: white; }") + style_ctx = self.get_style_context() + style_ctx.add_provider(css, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) + style_ctx.add_class("matplotlib-canvas") + + def pick(self, mouseevent): + # GtkWidget defines pick in GTK4, so we need to override here to work + # with the base implementation we want. + FigureCanvasBase.pick(self, mouseevent) + + def destroy(self): + self.close_event() + + def set_cursor(self, cursor): + # docstring inherited + self.set_cursor_from_name(_mpl_to_gtk_cursor(cursor)) + + def scroll_event(self, controller, dx, dy): + FigureCanvasBase.scroll_event(self, 0, 0, dy) + return True + + def button_press_event(self, controller, n_press, x, y): + # flipy so y=0 is bottom of canvas + y = self.get_allocation().height - y + FigureCanvasBase.button_press_event(self, x, y, + controller.get_current_button()) + self.grab_focus() + + def button_release_event(self, controller, n_press, x, y): + # flipy so y=0 is bottom of canvas + y = self.get_allocation().height - y + FigureCanvasBase.button_release_event(self, x, y, + controller.get_current_button()) + + def key_press_event(self, controller, keyval, keycode, state): + key = self._get_key(keyval, keycode, state) + FigureCanvasBase.key_press_event(self, key) + return True + + def key_release_event(self, controller, keyval, keycode, state): + key = self._get_key(keyval, keycode, state) + FigureCanvasBase.key_release_event(self, key) + return True + + def motion_notify_event(self, controller, x, y): + # flipy so y=0 is bottom of canvas + y = self.get_allocation().height - y + FigureCanvasBase.motion_notify_event(self, x, y) + + def leave_notify_event(self, controller): + FigureCanvasBase.leave_notify_event(self) + + def enter_notify_event(self, controller, x, y): + # flipy so y=0 is bottom of canvas + y = self.get_allocation().height - y + FigureCanvasBase.enter_notify_event(self, xy=(x, y)) + + def resize_event(self, area, width, height): + dpi = self.figure.dpi + self.figure.set_size_inches(width / dpi, height / dpi, forward=False) + FigureCanvasBase.resize_event(self) + self.draw_idle() + + def _get_key(self, keyval, keycode, state): + unikey = chr(Gdk.keyval_to_unicode(keyval)) + key = cbook._unikey_or_keysym_to_mplkey( + unikey, + Gdk.keyval_name(keyval)) + modifiers = [ + (Gdk.ModifierType.CONTROL_MASK, 'ctrl'), + (Gdk.ModifierType.ALT_MASK, 'alt'), + (Gdk.ModifierType.SHIFT_MASK, 'shift'), + (Gdk.ModifierType.SUPER_MASK, 'super'), + ] + for key_mask, prefix in modifiers: + if state & key_mask: + if not (prefix == 'shift' and unikey.isprintable()): + key = f'{prefix}+{key}' + return key + + def _draw_rubberband(self, rect): + self._rubberband_rect = rect + # TODO: Only update the rubberband area. + self.queue_draw() + + def _draw_func(self, drawing_area, ctx, width, height): + self.on_draw_event(self, ctx) + self._post_draw(self, ctx) + + def _post_draw(self, widget, ctx): + if self._rubberband_rect is None: + return + + x0, y0, w, h = self._rubberband_rect + x1 = x0 + w + y1 = y0 + h + + # Draw the lines from x0, y0 towards x1, y1 so that the + # dashes don't "jump" when moving the zoom box. + ctx.move_to(x0, y0) + ctx.line_to(x0, y1) + ctx.move_to(x0, y0) + ctx.line_to(x1, y0) + ctx.move_to(x0, y1) + ctx.line_to(x1, y1) + ctx.move_to(x1, y0) + ctx.line_to(x1, y1) + + ctx.set_antialias(1) + ctx.set_line_width(1) + ctx.set_dash((3, 3), 0) + ctx.set_source_rgb(0, 0, 0) + ctx.stroke_preserve() + + ctx.set_dash((3, 3), 3) + ctx.set_source_rgb(1, 1, 1) + ctx.stroke() + + def on_draw_event(self, widget, ctx): + # to be overwritten by GTK4Agg or GTK4Cairo + pass + + def draw(self): + # docstring inherited + if self.is_drawable(): + self.queue_draw() + + def draw_idle(self): + # docstring inherited + if self._idle_draw_id != 0: + return + def idle_draw(*args): + try: + self.draw() + finally: + self._idle_draw_id = 0 + return False + self._idle_draw_id = GLib.idle_add(idle_draw) + + def flush_events(self): + # docstring inherited + context = GLib.MainContext.default() + while context.pending(): + context.iteration(True) + + +class FigureManagerGTK4(FigureManagerBase): + """ + Attributes + ---------- + canvas : `FigureCanvas` + The FigureCanvas instance + num : int or str + The Figure number + toolbar : Gtk.Box + The toolbar + vbox : Gtk.VBox + The Gtk.VBox containing the canvas and toolbar + window : Gtk.Window + The Gtk.Window + + """ + def __init__(self, canvas, num): + app = _create_application() + self.window = Gtk.Window() + app.add_window(self.window) + super().__init__(canvas, num) + + self.vbox = Gtk.Box() + self.vbox.set_property("orientation", Gtk.Orientation.VERTICAL) + self.window.set_child(self.vbox) + + self.vbox.prepend(self.canvas) + # calculate size for window + w = int(self.canvas.figure.bbox.width) + h = int(self.canvas.figure.bbox.height) + + self.toolbar = self._get_toolbar() + + if self.toolmanager: + backend_tools.add_tools_to_manager(self.toolmanager) + if self.toolbar: + backend_tools.add_tools_to_container(self.toolbar) + + if self.toolbar is not None: + sw = Gtk.ScrolledWindow(vscrollbar_policy=Gtk.PolicyType.NEVER) + sw.set_child(self.toolbar) + self.vbox.append(sw) + min_size, nat_size = self.toolbar.get_preferred_size() + h += nat_size.height + + self.window.set_default_size(w, h) + + self._destroying = False + self.window.connect("destroy", lambda *args: Gcf.destroy(self)) + self.window.connect("close-request", lambda *args: Gcf.destroy(self)) + if mpl.is_interactive(): + self.window.show() + self.canvas.draw_idle() + + self.canvas.grab_focus() + + def destroy(self, *args): + if self._destroying: + # Otherwise, this can be called twice when the user presses 'q', + # which calls Gcf.destroy(self), then this destroy(), then triggers + # Gcf.destroy(self) once again via + # `connect("destroy", lambda *args: Gcf.destroy(self))`. + return + self._destroying = True + self.window.destroy() + self.canvas.destroy() + + def show(self): + # show the figure window + self.window.show() + self.canvas.draw() + if mpl.rcParams['figure.raise_window']: + if self.window.get_surface(): + self.window.present() + else: + # If this is called by a callback early during init, + # self.window (a GtkWindow) may not have an associated + # low-level GdkSurface (self.window.get_surface()) yet, and + # present() would crash. + _api.warn_external("Cannot raise window yet to be setup") + + def full_screen_toggle(self): + if not self.window.is_fullscreen(): + self.window.fullscreen() + else: + self.window.unfullscreen() + + def _get_toolbar(self): + # must be inited after the window, drawingArea and figure + # attrs are set + if mpl.rcParams['toolbar'] == 'toolbar2': + toolbar = NavigationToolbar2GTK4(self.canvas, self.window) + elif mpl.rcParams['toolbar'] == 'toolmanager': + toolbar = ToolbarGTK4(self.toolmanager) + else: + toolbar = None + return toolbar + + def get_window_title(self): + return self.window.get_title() + + def set_window_title(self, title): + self.window.set_title(title) + + def resize(self, width, height): + """Set the canvas size in pixels.""" + if self.toolbar: + toolbar_size = self.toolbar.size_request() + height += toolbar_size.height + canvas_size = self.canvas.get_allocation() + if canvas_size.width == canvas_size.height == 1: + # A canvas size of (1, 1) cannot exist in most cases, because + # window decorations would prevent such a small window. This call + # must be before the window has been mapped and widgets have been + # sized, so just change the window's starting size. + self.window.set_default_size(width, height) + else: + self.window.resize(width, height) + + +class NavigationToolbar2GTK4(_NavigationToolbar2GTK, Gtk.Box): + def __init__(self, canvas, window): + self.win = window + Gtk.Box.__init__(self) + + self.add_css_class('toolbar') + + self._gtk_ids = {} + for text, tooltip_text, image_file, callback in self.toolitems: + if text is None: + self.append(Gtk.Separator()) + continue + image = Gtk.Image.new_from_gicon( + Gio.Icon.new_for_string( + str(cbook._get_data_path('images', + f'{image_file}-symbolic.svg')))) + self._gtk_ids[text] = button = ( + Gtk.ToggleButton() if callback in ['zoom', 'pan'] else + Gtk.Button()) + button.set_child(image) + button.add_css_class('flat') + button.add_css_class('image-button') + # Save the handler id, so that we can block it as needed. + button._signal_handler = button.connect( + 'clicked', getattr(self, callback)) + button.set_tooltip_text(tooltip_text) + self.append(button) + + # This filler item ensures the toolbar is always at least two text + # lines high. Otherwise the canvas gets redrawn as the mouse hovers + # over images because those use two-line messages which resize the + # toolbar. + label = Gtk.Label() + label.set_markup( + '\N{NO-BREAK SPACE}\n\N{NO-BREAK SPACE}') + label.set_hexpand(True) # Push real message to the right. + self.append(label) + + self.message = Gtk.Label() + self.append(self.message) + + NavigationToolbar2.__init__(self, canvas) + + def save_figure(self, *args): + dialog = Gtk.FileChooserNative( + title='Save the figure', + transient_for=self.canvas.get_root(), + action=Gtk.FileChooserAction.SAVE, + modal=True) + self._save_dialog = dialog # Must keep a reference. + + ff = Gtk.FileFilter() + ff.set_name('All files') + ff.add_pattern('*') + dialog.add_filter(ff) + dialog.set_filter(ff) + + formats = [] + default_format = None + for i, (name, fmts) in enumerate( + self.canvas.get_supported_filetypes_grouped().items()): + ff = Gtk.FileFilter() + ff.set_name(name) + for fmt in fmts: + ff.add_pattern(f'*.{fmt}') + dialog.add_filter(ff) + formats.append(name) + if self.canvas.get_default_filetype() in fmts: + default_format = i + # Setting the choice doesn't always work, so make sure the default + # format is first. + formats = [formats[default_format], *formats[:default_format], + *formats[default_format+1:]] + dialog.add_choice('format', 'File format', formats, formats) + dialog.set_choice('format', formats[default_format]) + + dialog.set_current_folder(Gio.File.new_for_path( + os.path.expanduser(mpl.rcParams['savefig.directory']))) + dialog.set_current_name(self.canvas.get_default_filename()) + + @functools.partial(dialog.connect, 'response') + def on_response(dialog, response): + file = dialog.get_file() + fmt = dialog.get_choice('format') + fmt = self.canvas.get_supported_filetypes_grouped()[fmt][0] + dialog.destroy() + self._save_dialog = None + if response != Gtk.ResponseType.ACCEPT: + return + # Save dir for next time, unless empty str (which means use cwd). + if mpl.rcParams['savefig.directory']: + parent = file.get_parent() + mpl.rcParams['savefig.directory'] = parent.get_path() + try: + self.canvas.figure.savefig(file.get_path(), format=fmt) + except Exception as e: + msg = Gtk.MessageDialog( + transient_for=self.canvas.get_root(), + message_type=Gtk.MessageType.ERROR, + buttons=Gtk.ButtonsType.OK, modal=True, + text=str(e)) + msg.show() + + dialog.show() + + +class ToolbarGTK4(ToolContainerBase, Gtk.Box): + _icon_extension = '-symbolic.svg' + + def __init__(self, toolmanager): + ToolContainerBase.__init__(self, toolmanager) + Gtk.Box.__init__(self) + self.set_property('orientation', Gtk.Orientation.HORIZONTAL) + + # Tool items are created later, but must appear before the message. + self._tool_box = Gtk.Box() + self.append(self._tool_box) + self._groups = {} + self._toolitems = {} + + # This filler item ensures the toolbar is always at least two text + # lines high. Otherwise the canvas gets redrawn as the mouse hovers + # over images because those use two-line messages which resize the + # toolbar. + label = Gtk.Label() + label.set_markup( + '\N{NO-BREAK SPACE}\n\N{NO-BREAK SPACE}') + label.set_hexpand(True) # Push real message to the right. + self.append(label) + + self._message = Gtk.Label() + self.append(self._message) + + def add_toolitem(self, name, group, position, image_file, description, + toggle): + if toggle: + button = Gtk.ToggleButton() + else: + button = Gtk.Button() + button.set_label(name) + button.add_css_class('flat') + + if image_file is not None: + image = Gtk.Image.new_from_gicon( + Gio.Icon.new_for_string(image_file)) + button.set_child(image) + button.add_css_class('image-button') + + if position is None: + position = -1 + + self._add_button(button, group, position) + signal = button.connect('clicked', self._call_tool, name) + button.set_tooltip_text(description) + self._toolitems.setdefault(name, []) + self._toolitems[name].append((button, signal)) + + def _find_child_at_position(self, group, position): + children = [None] + child = self._groups[group].get_first_child() + while child is not None: + children.append(child) + child = child.get_next_sibling() + return children[position] + + def _add_button(self, button, group, position): + if group not in self._groups: + if self._groups: + self._add_separator() + group_box = Gtk.Box() + self._tool_box.append(group_box) + self._groups[group] = group_box + self._groups[group].insert_child_after( + button, self._find_child_at_position(group, position)) + + def _call_tool(self, btn, name): + self.trigger_tool(name) + + def toggle_toolitem(self, name, toggled): + if name not in self._toolitems: + return + for toolitem, signal in self._toolitems[name]: + toolitem.handler_block(signal) + toolitem.set_active(toggled) + toolitem.handler_unblock(signal) + + def remove_toolitem(self, name): + if name not in self._toolitems: + self.toolmanager.message_event(f'{name} not in toolbar', self) + return + + for group in self._groups: + for toolitem, _signal in self._toolitems[name]: + if toolitem in self._groups[group]: + self._groups[group].remove(toolitem) + del self._toolitems[name] + + def _add_separator(self): + sep = Gtk.Separator() + sep.set_property("orientation", Gtk.Orientation.VERTICAL) + self._tool_box.append(sep) + + def set_message(self, s): + self._message.set_label(s) + + +class SaveFigureGTK4(backend_tools.SaveFigureBase): + def trigger(self, *args, **kwargs): + + class PseudoToolbar: + canvas = self.figure.canvas + + return NavigationToolbar2GTK4.save_figure(PseudoToolbar()) + + +class HelpGTK4(backend_tools.ToolHelpBase): + def _normalize_shortcut(self, key): + """ + Convert Matplotlib key presses to GTK+ accelerator identifiers. + + Related to `FigureCanvasGTK4._get_key`. + """ + special = { + 'backspace': 'BackSpace', + 'pagedown': 'Page_Down', + 'pageup': 'Page_Up', + 'scroll_lock': 'Scroll_Lock', + } + + parts = key.split('+') + mods = ['<' + mod + '>' for mod in parts[:-1]] + key = parts[-1] + + if key in special: + key = special[key] + elif len(key) > 1: + key = key.capitalize() + elif key.isupper(): + mods += [''] + + return ''.join(mods) + key + + def _is_valid_shortcut(self, key): + """ + Check for a valid shortcut to be displayed. + + - GTK will never send 'cmd+' (see `FigureCanvasGTK4._get_key`). + - The shortcut window only shows keyboard shortcuts, not mouse buttons. + """ + return 'cmd+' not in key and not key.startswith('MouseButton.') + + def trigger(self, *args): + section = Gtk.ShortcutsSection() + + for name, tool in sorted(self.toolmanager.tools.items()): + if not tool.description: + continue + + # Putting everything in a separate group allows GTK to + # automatically split them into separate columns/pages, which is + # useful because we have lots of shortcuts, some with many keys + # that are very wide. + group = Gtk.ShortcutsGroup() + section.append(group) + # A hack to remove the title since we have no group naming. + child = group.get_first_child() + while child is not None: + child.set_visible(False) + child = child.get_next_sibling() + + shortcut = Gtk.ShortcutsShortcut( + accelerator=' '.join( + self._normalize_shortcut(key) + for key in self.toolmanager.get_tool_keymap(name) + if self._is_valid_shortcut(key)), + title=tool.name, + subtitle=tool.description) + group.append(shortcut) + + window = Gtk.ShortcutsWindow( + title='Help', + modal=True, + transient_for=self._figure.canvas.get_root()) + window.set_child(section) + + window.show() + + +class ToolCopyToClipboardGTK4(backend_tools.ToolCopyToClipboardBase): + def trigger(self, *args, **kwargs): + with io.BytesIO() as f: + self.canvas.print_rgba(f) + w, h = self.canvas.get_width_height() + pb = GdkPixbuf.Pixbuf.new_from_data(f.getbuffer(), + GdkPixbuf.Colorspace.RGB, True, + 8, w, h, w*4) + clipboard = self.canvas.get_clipboard() + clipboard.set(pb) + + +# Define the file to use as the GTk icon +if sys.platform == 'win32': + icon_filename = 'matplotlib.png' +else: + icon_filename = 'matplotlib.svg' +window_icon = str(cbook._get_data_path('images', icon_filename)) + + +backend_tools.ToolSaveFigure = SaveFigureGTK4 +backend_tools.ToolConfigureSubplots = ConfigureSubplotsGTK4 +backend_tools.ToolRubberband = RubberbandGTK4 +backend_tools.ToolHelp = HelpGTK4 +backend_tools.ToolCopyToClipboard = ToolCopyToClipboardGTK4 + +Toolbar = ToolbarGTK4 + + +@_Backend.export +class _BackendGTK4(_BackendGTK): + FigureCanvas = FigureCanvasGTK4 + FigureManager = FigureManagerGTK4 diff --git a/lib/matplotlib/backends/backend_gtk4agg.py b/lib/matplotlib/backends/backend_gtk4agg.py new file mode 100644 index 000000000000..b3439dc109cd --- /dev/null +++ b/lib/matplotlib/backends/backend_gtk4agg.py @@ -0,0 +1,80 @@ +import numpy as np + +from .. import cbook +try: + from . import backend_cairo +except ImportError as e: + raise ImportError('backend Gtk4Agg requires cairo') from e +from . import backend_agg, backend_gtk4 +from .backend_cairo import cairo +from .backend_gtk4 import Gtk, _BackendGTK4 +from matplotlib import transforms + + +class FigureCanvasGTK4Agg(backend_gtk4.FigureCanvasGTK4, + backend_agg.FigureCanvasAgg): + def __init__(self, figure): + backend_gtk4.FigureCanvasGTK4.__init__(self, figure) + self._bbox_queue = [] + + def on_draw_event(self, widget, ctx): + allocation = self.get_allocation() + w, h = allocation.width, allocation.height + + if not len(self._bbox_queue): + Gtk.render_background( + self.get_style_context(), ctx, + allocation.x, allocation.y, + allocation.width, allocation.height) + bbox_queue = [transforms.Bbox([[0, 0], [w, h]])] + else: + bbox_queue = self._bbox_queue + + ctx = backend_cairo._to_context(ctx) + + for bbox in bbox_queue: + x = int(bbox.x0) + y = h - int(bbox.y1) + width = int(bbox.x1) - int(bbox.x0) + height = int(bbox.y1) - int(bbox.y0) + + buf = cbook._unmultiplied_rgba8888_to_premultiplied_argb32( + np.asarray(self.copy_from_bbox(bbox))) + image = cairo.ImageSurface.create_for_data( + buf.ravel().data, cairo.FORMAT_ARGB32, width, height) + ctx.set_source_surface(image, x, y) + ctx.paint() + + if len(self._bbox_queue): + self._bbox_queue = [] + + return False + + def blit(self, bbox=None): + # If bbox is None, blit the entire canvas to gtk. Otherwise + # blit only the area defined by the bbox. + if bbox is None: + bbox = self.figure.bbox + + allocation = self.get_allocation() + x = int(bbox.x0) + y = allocation.height - int(bbox.y1) + width = int(bbox.x1) - int(bbox.x0) + height = int(bbox.y1) - int(bbox.y0) + + self._bbox_queue.append(bbox) + self.queue_draw_area(x, y, width, height) + + def draw(self): + backend_agg.FigureCanvasAgg.draw(self) + super().draw() + + +class FigureManagerGTK4Agg(backend_gtk4.FigureManagerGTK4): + pass + + +@_BackendGTK4.export +class _BackendGTK4Agg(_BackendGTK4): + FigureCanvas = FigureCanvasGTK4Agg + FigureManager = FigureManagerGTK4Agg diff --git a/lib/matplotlib/backends/backend_gtk4cairo.py b/lib/matplotlib/backends/backend_gtk4cairo.py new file mode 100644 index 000000000000..391a1a372856 --- /dev/null +++ b/lib/matplotlib/backends/backend_gtk4cairo.py @@ -0,0 +1,35 @@ +from contextlib import nullcontext + +from . import backend_cairo, backend_gtk4 +from .backend_gtk4 import Gtk, _BackendGTK4 + + +class RendererGTK4Cairo(backend_cairo.RendererCairo): + def set_context(self, ctx): + self.gc.ctx = backend_cairo._to_context(ctx) + + +class FigureCanvasGTK4Cairo(backend_gtk4.FigureCanvasGTK4, + backend_cairo.FigureCanvasCairo): + + def __init__(self, figure): + super().__init__(figure) + self._renderer = RendererGTK4Cairo(self.figure.dpi) + + def on_draw_event(self, widget, ctx): + with (self.toolbar._wait_cursor_for_draw_cm() if self.toolbar + else nullcontext()): + self._renderer.set_context(ctx) + allocation = self.get_allocation() + Gtk.render_background( + self.get_style_context(), ctx, + allocation.x, allocation.y, + allocation.width, allocation.height) + self._renderer.set_width_height( + allocation.width, allocation.height) + self.figure.draw(self._renderer) + + +@_BackendGTK4.export +class _BackendGTK4Cairo(_BackendGTK4): + FigureCanvas = FigureCanvasGTK4Cairo diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py index 109b9ea69cc9..6d181c43107d 100644 --- a/lib/matplotlib/cbook/__init__.py +++ b/lib/matplotlib/cbook/__init__.py @@ -50,8 +50,8 @@ def _get_running_interactive_framework(): Returns ------- Optional[str] - One of the following values: "qt", "gtk3", "wx", "tk", "macosx", - "headless", ``None``. + One of the following values: "qt", "gtk3", "gtk4", "wx", "tk", + "macosx", "headless", ``None``. """ # Use ``sys.modules.get(name)`` rather than ``name in sys.modules`` as # entries can also have been explicitly set to None. @@ -64,8 +64,13 @@ def _get_running_interactive_framework(): if QtWidgets and QtWidgets.QApplication.instance(): return "qt" Gtk = sys.modules.get("gi.repository.Gtk") - if Gtk and Gtk.main_level(): - return "gtk3" + if Gtk: + if Gtk.MAJOR_VERSION == 4: + from gi.repository import GLib + if GLib.main_depth(): + return "gtk4" + if Gtk.MAJOR_VERSION == 3 and Gtk.main_level(): + return "gtk3" wx = sys.modules.get("wx") if wx and wx.GetApp(): return "wx" diff --git a/lib/matplotlib/mpl-data/matplotlibrc b/lib/matplotlib/mpl-data/matplotlibrc index 19e89e3cdd5e..106d881ce88c 100644 --- a/lib/matplotlib/mpl-data/matplotlibrc +++ b/lib/matplotlib/mpl-data/matplotlibrc @@ -71,9 +71,9 @@ ## *************************************************************************** ## The default backend. If you omit this parameter, the first working ## backend from the following list is used: -## MacOSX QtAgg Gtk3Agg TkAgg WxAgg Agg +## MacOSX QtAgg Gtk4Agg Gtk3Agg TkAgg WxAgg Agg ## Other choices include: -## QtCairo GTK3Cairo TkCairo WxCairo Cairo +## QtCairo GTK4Cairo GTK3Cairo TkCairo WxCairo Cairo ## Qt5Agg Qt5Cairo Wx # deprecated. ## PS PDF SVG Template ## You can also deploy your own backend outside of Matplotlib by referring to diff --git a/lib/matplotlib/pyplot.py b/lib/matplotlib/pyplot.py index 201255da848c..b222466dda45 100644 --- a/lib/matplotlib/pyplot.py +++ b/lib/matplotlib/pyplot.py @@ -212,6 +212,7 @@ def switch_backend(newbackend): current_framework = cbook._get_running_interactive_framework() mapping = {'qt': 'qtagg', 'gtk3': 'gtk3agg', + 'gtk4': 'gtk4agg', 'wx': 'wxagg', 'tk': 'tkagg', 'macosx': 'macosx', @@ -222,7 +223,8 @@ def switch_backend(newbackend): candidates = [best_guess] else: candidates = [] - candidates += ["macosx", "qtagg", "gtk3agg", "tkagg", "wxagg"] + candidates += [ + "macosx", "qtagg", "gtk4agg", "gtk3agg", "tkagg", "wxagg"] # Don't try to fallback on the cairo-based backends as they each have # an additional dependency (pycairo) over the agg-based backend, and diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 2c3c88e2fa66..a8a54c10dac6 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -35,7 +35,7 @@ # The capitalized forms are needed for ipython at present; this may # change for later versions. interactive_bk = [ - 'GTK3Agg', 'GTK3Cairo', + 'GTK3Agg', 'GTK3Cairo', 'GTK4Agg', 'GTK4Cairo', 'MacOSX', 'nbAgg', 'QtAgg', 'QtCairo', 'Qt5Agg', 'Qt5Cairo', diff --git a/lib/matplotlib/tests/test_backends_interactive.py b/lib/matplotlib/tests/test_backends_interactive.py index a1f27fea577a..bb17e5fdaf82 100644 --- a/lib/matplotlib/tests/test_backends_interactive.py +++ b/lib/matplotlib/tests/test_backends_interactive.py @@ -29,8 +29,8 @@ def _get_testable_interactive_backends(): *[([qt_api, "cairocffi"], {"MPLBACKEND": "qtcairo", "QT_API": qt_api}) for qt_api in ["PyQt6", "PySide6", "PyQt5", "PySide2"]], - (["cairo", "gi"], {"MPLBACKEND": "gtk3agg"}), - (["cairo", "gi"], {"MPLBACKEND": "gtk3cairo"}), + *[(["cairo", "gi"], {"MPLBACKEND": f"gtk{version}{renderer}"}) + for version in [3, 4] for renderer in ["agg", "cairo"]], (["tkinter"], {"MPLBACKEND": "tkagg"}), (["wx"], {"MPLBACKEND": "wx"}), (["wx"], {"MPLBACKEND": "wxagg"}), @@ -45,6 +45,12 @@ def _get_testable_interactive_backends(): reason = "{} cannot be imported".format(", ".join(missing)) elif env["MPLBACKEND"] == 'macosx' and os.environ.get('TF_BUILD'): reason = "macosx backend fails on Azure" + elif env["MPLBACKEND"].startswith('gtk'): + import gi + version = env["MPLBACKEND"][3] + repo = gi.Repository.get_default() + if f'{version}.0' not in repo.enumerate_versions('Gtk'): + reason = "no usable GTK bindings" marks = [] if reason: marks.append(pytest.mark.skip( @@ -87,7 +93,7 @@ def _test_interactive_impl(): assert_equal = TestCase().assertEqual assert_raises = TestCase().assertRaises - if backend.endswith("agg") and not backend.startswith(("gtk3", "web")): + if backend.endswith("agg") and not backend.startswith(("gtk", "web")): # Force interactive framework setup. plt.figure() diff --git a/mplsetup.cfg.template b/mplsetup.cfg.template index 2fd28a6e4d67..6c54a23fdccb 100644 --- a/mplsetup.cfg.template +++ b/mplsetup.cfg.template @@ -28,8 +28,8 @@ [rc_options] # User-configurable options # -# Default backend, one of: Agg, Cairo, GTK3Agg, GTK3Cairo, MacOSX, Pdf, Ps, -# QtAgg, QtCairo, SVG, TkAgg, WX, WXAgg. +# Default backend, one of: Agg, Cairo, GTK3Agg, GTK3Cairo, GTK4Agg, GTK4Cairo, +# MacOSX, Pdf, Ps, QtAgg, QtCairo, SVG, TkAgg, WX, WXAgg. # # The Agg, Ps, Pdf and SVG backends do not require external dependencies. Do # not choose MacOSX if you have disabled the relevant extension modules. The diff --git a/tutorials/introductory/sample_plots.py b/tutorials/introductory/sample_plots.py index 91ae19eb0015..003bc70661ff 100644 --- a/tutorials/introductory/sample_plots.py +++ b/tutorials/introductory/sample_plots.py @@ -338,6 +338,7 @@ For examples of how to embed Matplotlib in different toolkits, see: + * :doc:`/gallery/user_interfaces/embedding_in_gtk4_sgskip` * :doc:`/gallery/user_interfaces/embedding_in_gtk3_sgskip` * :doc:`/gallery/user_interfaces/embedding_in_wx2_sgskip` * :doc:`/gallery/user_interfaces/mpl_with_glade3_sgskip` diff --git a/tutorials/introductory/usage.py b/tutorials/introductory/usage.py index 08b4d6ad00a0..17e623399b65 100644 --- a/tutorials/introductory/usage.py +++ b/tutorials/introductory/usage.py @@ -300,9 +300,10 @@ def my_plotter(ax, data1, data2, param_dict): # Without a backend explicitly set, Matplotlib automatically detects a usable # backend based on what is available on your system and on whether a GUI event # loop is already running. The first usable backend in the following list is -# selected: MacOSX, Qt5Agg, Gtk3Agg, TkAgg, WxAgg, Agg. The last, Agg, is a -# non-interactive backend that can only write to files. It is used on Linux, -# if Matplotlib cannot connect to either an X display or a Wayland display. +# selected: MacOSX, QtAgg, GTK4Agg, Gtk3Agg, TkAgg, WxAgg, Agg. The last, Agg, +# is a non-interactive backend that can only write to files. It is used on +# Linux, if Matplotlib cannot connect to either an X display or a Wayland +# display. # # Here is a detailed description of the configuration methods: # @@ -370,7 +371,7 @@ def my_plotter(ax, data1, data2, param_dict): # from the canvas (the place where the drawing goes). The canonical # renderer for user interfaces is ``Agg`` which uses the `Anti-Grain # Geometry`_ C++ library to make a raster (pixel) image of the figure; it -# is used by the ``QtAgg``, ``GTK3Agg``, ``wxAgg``, ``TkAgg``, and +# is used by the ``QtAgg``, ``GTK4Agg``, ``GTK3Agg``, ``wxAgg``, ``TkAgg``, and # ``macosx`` backends. An alternative renderer is based on the Cairo library, # used by ``QtCairo``, etc. # @@ -419,6 +420,9 @@ def my_plotter(ax, data1, data2, param_dict): # GTK3Agg Agg rendering to a GTK_ 3.x canvas (requires PyGObject_, # and pycairo_ or cairocffi_). This backend can be activated in # IPython with ``%matplotlib gtk3``. +# GTK4Agg Agg rendering to a GTK_ 4.x canvas (requires PyGObject_, +# and pycairo_ or cairocffi_). This backend can be activated in +# IPython with ``%matplotlib gtk4``. # macosx Agg rendering into a Cocoa canvas in OSX. This backend can be # activated in IPython with ``%matplotlib osx``. # TkAgg Agg rendering to a Tk_ canvas (requires TkInter_). This @@ -430,6 +434,8 @@ def my_plotter(ax, data1, data2, param_dict): # figure. # GTK3Cairo Cairo rendering to a GTK_ 3.x canvas (requires PyGObject_, # and pycairo_ or cairocffi_). +# GTK4Cairo Cairo rendering to a GTK_ 4.x canvas (requires PyGObject_, +# and pycairo_ or cairocffi_). # wxAgg Agg rendering to a wxWidgets_ canvas (requires wxPython_ 4). # This backend can be activated in IPython with ``%matplotlib wx``. # ========= ================================================================ From 998b22d4f88f85f265a96814ef1fe4bc987f03cc Mon Sep 17 00:00:00 2001 From: hannah Date: Thu, 2 Sep 2021 04:35:39 -0400 Subject: [PATCH 074/270] Backport PR #20970: Build wheels for Apple Silicon. --- .github/workflows/cibuildwheel.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cibuildwheel.yml b/.github/workflows/cibuildwheel.yml index 9114df686a96..47455e74fac0 100644 --- a/.github/workflows/cibuildwheel.yml +++ b/.github/workflows/cibuildwheel.yml @@ -15,6 +15,7 @@ jobs: env: min-numpy-version: "1.17.3" min-numpy-hash: "b6/d6/be8f975f5322336f62371c9abeb936d592c98c047ad63035f1b38ae08efe" + CIBW_ARCHS_MACOS: "x86_64 universal2 arm64" strategy: matrix: os: [ubuntu-18.04, windows-latest, macos-latest] From 880ebc55c9a50972b34c869e6c48d7636d38b773 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 2 Sep 2021 22:16:23 +0200 Subject: [PATCH 075/270] Backport PR #20975: Clarify support for 2D coordinate inputs to streamplot. --- lib/matplotlib/streamplot.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/streamplot.py b/lib/matplotlib/streamplot.py index 6de221476490..d6bceb6c9915 100644 --- a/lib/matplotlib/streamplot.py +++ b/lib/matplotlib/streamplot.py @@ -26,7 +26,9 @@ def streamplot(axes, x, y, u, v, density=1, linewidth=None, color=None, Parameters ---------- x, y : 1D/2D arrays - Evenly spaced strictly increasing arrays to make a grid. + Evenly spaced strictly increasing arrays to make a grid. If 2D, all + rows of *x* must be equal and all columns of *y* must be equal; i.e., + they must be as if generated by ``np.meshgrid(x_1d, y_1d)``. u, v : 2D arrays *x* and *y*-velocities. The number of rows and columns must match the length of *y* and *x*, respectively. From 8ddd9f0459e31dc05e280c4029696a2f3196f4a8 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 2 Sep 2021 22:22:02 +0200 Subject: [PATCH 076/270] Backport PR #20972: Cleanup some dviread docstrings. --- lib/matplotlib/dviread.py | 66 ++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/lib/matplotlib/dviread.py b/lib/matplotlib/dviread.py index 117c60aa786d..3207a01de8be 100644 --- a/lib/matplotlib/dviread.py +++ b/lib/matplotlib/dviread.py @@ -84,8 +84,6 @@ def _arg(nbytes, signed, dvi, _): def _arg_slen(dvi, delta): """ - Signed, length *delta* - Read *delta* bytes, returning None if *delta* is zero, and the bytes interpreted as a signed integer otherwise. """ @@ -96,26 +94,20 @@ def _arg_slen(dvi, delta): def _arg_slen1(dvi, delta): """ - Signed, length *delta*+1 - Read *delta*+1 bytes, returning the bytes interpreted as signed. """ - return dvi._arg(delta+1, True) + return dvi._arg(delta + 1, True) def _arg_ulen1(dvi, delta): """ - Unsigned length *delta*+1 - Read *delta*+1 bytes, returning the bytes interpreted as unsigned. """ - return dvi._arg(delta+1, False) + return dvi._arg(delta + 1, False) def _arg_olen1(dvi, delta): """ - Optionally signed, length *delta*+1 - Read *delta*+1 bytes, returning the bytes interpreted as unsigned integer for 0<=*delta*<3 and signed if *delta*==3. """ @@ -139,30 +131,30 @@ def _dispatch(table, min, max=None, state=None, args=('raw',)): matches *state* if not None, reads arguments from the file according to *args*. - *table* - the dispatch table to be filled in - - *min* - minimum opcode for calling this function - - *max* - maximum opcode for calling this function, None if only *min* is allowed - - *state* - state of the Dvi object in which these opcodes are allowed - - *args* - sequence of argument specifications: - - ``'raw'``: opcode minus minimum - ``'u1'``: read one unsigned byte - ``'u4'``: read four bytes, treat as an unsigned number - ``'s4'``: read four bytes, treat as a signed number - ``'slen'``: read (opcode - minimum) bytes, treat as signed - ``'slen1'``: read (opcode - minimum + 1) bytes, treat as signed - ``'ulen1'``: read (opcode - minimum + 1) bytes, treat as unsigned - ``'olen1'``: read (opcode - minimum + 1) bytes, treat as unsigned - if under four bytes, signed if four bytes + Parameters + ---------- + table : dict[int, callable] + The dispatch table to be filled in. + + min, max : int + Range of opcodes that calls the registered function; *max* defaults to + *min*. + + state : _dvistate, optional + State of the Dvi object in which these opcodes are allowed. + + args : list[str], default: ['raw'] + Sequence of argument specifications: + + - 'raw': opcode minus minimum + - 'u1': read one unsigned byte + - 'u4': read four bytes, treat as an unsigned number + - 's4': read four bytes, treat as a signed number + - 'slen': read (opcode - minimum) bytes, treat as signed + - 'slen1': read (opcode - minimum + 1) bytes, treat as signed + - 'ulen1': read (opcode - minimum + 1) bytes, treat as unsigned + - 'olen1': read (opcode - minimum + 1) bytes, treat as unsigned + if under four bytes, signed if four bytes """ def decorate(method): get_args = [_arg_mapping[x] for x in args] @@ -185,6 +177,7 @@ def wrapper(self, byte): class Dvi: """ A reader for a dvi ("device-independent") file, as produced by TeX. + The current implementation can only iterate through pages in order, and does not even attempt to verify the postamble. @@ -956,8 +949,9 @@ def _parse_and_cache_line(self, line): def _parse_enc(path): r""" - Parses a \*.enc file referenced from a psfonts.map style file. - The format this class understands is a very limited subset of PostScript. + Parse a \*.enc file referenced from a psfonts.map style file. + + The format supported by this function is a tiny subset of PostScript. Parameters ---------- From fabcce12971279ab5ed9b2213348412fd08043e3 Mon Sep 17 00:00:00 2001 From: hannah Date: Thu, 2 Sep 2021 07:04:27 -0400 Subject: [PATCH 077/270] Backport PR #20973: Docstring cleanups. --- lib/matplotlib/backend_tools.py | 2 +- lib/matplotlib/backends/backend_wx.py | 4 ++-- lib/matplotlib/colors.py | 2 +- lib/matplotlib/lines.py | 4 ++-- lib/matplotlib/path.py | 2 +- lib/matplotlib/testing/widgets.py | 7 ++++--- lib/matplotlib/widgets.py | 2 +- lib/mpl_toolkits/axisartist/axisline_style.py | 8 ++------ 8 files changed, 14 insertions(+), 17 deletions(-) diff --git a/lib/matplotlib/backend_tools.py b/lib/matplotlib/backend_tools.py index cc81b1f9269b..390b90134aed 100644 --- a/lib/matplotlib/backend_tools.py +++ b/lib/matplotlib/backend_tools.py @@ -900,7 +900,7 @@ class ToolHelpBase(ToolBase): @staticmethod def format_shortcut(key_sequence): """ - Converts a shortcut string from the notation used in rc config to the + Convert a shortcut string from the notation used in rc config to the standard notation for displaying shortcuts, e.g. 'ctrl+a' -> 'Ctrl+A'. """ return (key_sequence if len(key_sequence) == 1 else diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 16b152a51689..da78f69d9e8e 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -592,8 +592,8 @@ def _get_imagesave_wildcards(self): @_api.delete_parameter("3.4", "origin") def gui_repaint(self, drawDC=None, origin='WX'): """ - Performs update of the displayed image on the GUI canvas, using the - supplied wx.PaintDC device context. + Update the displayed image on the GUI canvas, using the supplied + wx.PaintDC device context. The 'WXAgg' backend sets origin accordingly. """ diff --git a/lib/matplotlib/colors.py b/lib/matplotlib/colors.py index 58e3fe198498..281b23eed89c 100644 --- a/lib/matplotlib/colors.py +++ b/lib/matplotlib/colors.py @@ -2373,7 +2373,7 @@ def blend_soft_light(self, rgb, intensity): def blend_overlay(self, rgb, intensity): """ - Combines an rgb image with an intensity map using "overlay" blending. + Combine an rgb image with an intensity map using "overlay" blending. Parameters ---------- diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index 8f4ddaa5c6ea..9a727f9a8107 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -601,7 +601,7 @@ def get_markevery(self): def set_picker(self, p): """ - Sets the event picker details for the line. + Set the event picker details for the line. Parameters ---------- @@ -688,7 +688,7 @@ def recache(self, always=False): def _transform_path(self, subslice=None): """ - Puts a TransformedPath instance at self._transformed_path; + Put a TransformedPath instance at self._transformed_path; all invalidation of the transform is then handled by the TransformedPath instance. """ diff --git a/lib/matplotlib/path.py b/lib/matplotlib/path.py index c09250123fb9..4280d55eeacd 100644 --- a/lib/matplotlib/path.py +++ b/lib/matplotlib/path.py @@ -162,7 +162,7 @@ def __init__(self, vertices, codes=None, _interpolation_steps=1, @classmethod def _fast_from_codes_and_verts(cls, verts, codes, internals_from=None): """ - Creates a Path instance without the expense of calling the constructor. + Create a Path instance without the expense of calling the constructor. Parameters ---------- diff --git a/lib/matplotlib/testing/widgets.py b/lib/matplotlib/testing/widgets.py index 49d5cb7175f9..3c3a4b6273bc 100644 --- a/lib/matplotlib/testing/widgets.py +++ b/lib/matplotlib/testing/widgets.py @@ -2,15 +2,16 @@ ======================== Widget testing utilities ======================== -Functions that are useful for testing widgets. -See also matplotlib.tests.test_widgets + +See also :mod:`matplotlib.tests.test_widgets`. """ + import matplotlib.pyplot as plt from unittest import mock def get_ax(): - """Creates plot and returns its axes""" + """Create a plot and return its axes.""" fig, ax = plt.subplots(1, 1) ax.plot([0, 200], [0, 200]) ax.set_aspect(1.0) diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index 155b3b3f7b15..220fb1d280cd 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -2710,7 +2710,7 @@ def onselect(eclick: MouseEvent, erelease: MouseEvent) - "move": Move the existing shape, default: no modifier. - "clear": Clear the current shape, default: "escape". - - "square": Makes the shape square, default: "shift". + - "square": Make the shape square, default: "shift". - "center": Make the initial point the center of the shape, default: "ctrl". diff --git a/lib/mpl_toolkits/axisartist/axisline_style.py b/lib/mpl_toolkits/axisartist/axisline_style.py index 80f3ce58eb48..db4b0c144c5e 100644 --- a/lib/mpl_toolkits/axisartist/axisline_style.py +++ b/lib/mpl_toolkits/axisartist/axisline_style.py @@ -9,9 +9,7 @@ class _FancyAxislineStyle: class SimpleArrow(FancyArrowPatch): - """ - The artist class that will be returned for SimpleArrow style. - """ + """The artist class that will be returned for SimpleArrow style.""" _ARROW_STYLE = "->" def __init__(self, axis_artist, line_path, transform, @@ -69,9 +67,7 @@ def draw(self, renderer): FancyArrowPatch.draw(self, renderer) class FilledArrow(SimpleArrow): - """ - The artist class that will be returned for SimpleArrow style. - """ + """The artist class that will be returned for SimpleArrow style.""" _ARROW_STYLE = "-|>" From cd709e086a5c8a0e0608eff7014aeb2a597beca3 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 2 Sep 2021 23:46:12 +0200 Subject: [PATCH 078/270] Backport PR #20942: DOC Use 'Axes' instead of 'axes' in axes._base.py --- lib/matplotlib/axes/_base.py | 146 +++++++++++++++++------------------ 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 802fd3c9971c..bcac6bbbf331 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -96,7 +96,7 @@ def wrapper(self, *args, **kwargs): class _TransformedBoundsLocator: """ - Axes locator for `.Axes.inset_axes` and similarly positioned axes. + Axes locator for `.Axes.inset_axes` and similarly positioned Axes. The locator is a callable object used in `.Axes.set_aspect` to compute the axes location depending on the renderer. @@ -105,7 +105,7 @@ class _TransformedBoundsLocator: def __init__(self, bounds, transform): """ *bounds* (a ``[l, b, w, h]`` rectangle) and *transform* together - specify the position of the inset axes. + specify the position of the inset Axes. """ self._bounds = bounds self._transform = transform @@ -563,15 +563,15 @@ def __init__(self, fig, rect, **kwargs ): """ - Build an axes in a figure. + Build an Axes in a figure. Parameters ---------- fig : `~matplotlib.figure.Figure` - The axes is build in the `.Figure` *fig*. + The Axes is built in the `.Figure` *fig*. rect : [left, bottom, width, height] - The axes is build in the rectangle *rect*. *rect* is in + The Axes is built in the rectangle *rect*. *rect* is in `.Figure` coordinates. sharex, sharey : `~.axes.Axes`, optional @@ -579,10 +579,10 @@ def __init__(self, fig, rect, y axis in the input `~.axes.Axes`. frameon : bool, default: True - Whether the axes frame is visible. + Whether the Axes frame is visible. box_aspect : float, optional - Set a fixed aspect for the axes box, i.e. the ratio of height to + Set a fixed aspect for the Axes box, i.e. the ratio of height to width. See `~.axes.Axes.set_box_aspect` for details. **kwargs @@ -615,7 +615,7 @@ def __init__(self, fig, rect, self.set_figure(fig) self.set_box_aspect(box_aspect) self._axes_locator = None # Optionally set via update(kwargs). - # placeholder for any colorbars added that use this axes. + # placeholder for any colorbars added that use this Axes. # (see colorbar.py): self._colorbars = [] self.spines = mspines.Spines.from_dict(self._gen_axes_spines()) @@ -723,7 +723,7 @@ def __repr__(self): def get_window_extent(self, *args, **kwargs): """ - Return the axes bounding box in display space; *args* and *kwargs* + Return the Axes bounding box in display space; *args* and *kwargs* are empty. This bounding box does not include the spines, ticks, ticklables, @@ -809,7 +809,7 @@ def _set_lim_and_transforms(self): This method is primarily used by rectilinear projections of the `~matplotlib.axes.Axes` class, and is meant to be overridden by - new kinds of projection axes that need different transformations + new kinds of projection Axes that need different transformations and limits. (See `~matplotlib.projections.polar.PolarAxes` for an example.) """ @@ -866,7 +866,7 @@ def get_xaxis_text1_transform(self, pad_points): ------- transform : Transform The transform used for drawing x-axis labels, which will add - *pad_points* of padding (in points) between the axes and the label. + *pad_points* of padding (in points) between the axis and the label. The x-direction is in data coordinates and the y-direction is in axis coordinates valign : {'center', 'top', 'bottom', 'baseline', 'center_baseline'} @@ -892,7 +892,7 @@ def get_xaxis_text2_transform(self, pad_points): ------- transform : Transform The transform used for drawing secondary x-axis labels, which will - add *pad_points* of padding (in points) between the axes and the + add *pad_points* of padding (in points) between the axis and the label. The x-direction is in data coordinates and the y-direction is in axis coordinates valign : {'center', 'top', 'bottom', 'baseline', 'center_baseline'} @@ -942,7 +942,7 @@ def get_yaxis_text1_transform(self, pad_points): ------- transform : Transform The transform used for drawing y-axis labels, which will add - *pad_points* of padding (in points) between the axes and the label. + *pad_points* of padding (in points) between the axis and the label. The x-direction is in axis coordinates and the y-direction is in data coordinates valign : {'center', 'top', 'bottom', 'baseline', 'center_baseline'} @@ -968,7 +968,7 @@ def get_yaxis_text2_transform(self, pad_points): ------- transform : Transform The transform used for drawing secondart y-axis labels, which will - add *pad_points* of padding (in points) between the axes and the + add *pad_points* of padding (in points) between the axis and the label. The x-direction is in axis coordinates and the y-direction is in data coordinates valign : {'center', 'top', 'bottom', 'baseline', 'center_baseline'} @@ -1002,7 +1002,7 @@ def _update_transScale(self): def get_position(self, original=False): """ - Get a copy of the axes rectangle as a `.Bbox`. + Return the position of the Axes within the figure as a `.Bbox`. Parameters ---------- @@ -1026,7 +1026,7 @@ def get_position(self, original=False): def set_position(self, pos, which='both'): """ - Set the axes position. + Set the Axes position. Axes have two position attributes. The 'original' position is the position allocated for the Axes. The 'active' position is the @@ -1081,7 +1081,7 @@ def reset_position(self): def set_axes_locator(self, locator): """ - Set the axes locator. + Set the Axes locator. Parameters ---------- @@ -1097,7 +1097,7 @@ def get_axes_locator(self): return self._axes_locator def _set_artist_props(self, a): - """Set the boilerplate props for artists added to axes.""" + """Set the boilerplate props for artists added to Axes.""" a.set_figure(self.figure) if not a.is_transform_set(): a.set_transform(self.transData) @@ -1111,8 +1111,8 @@ def _gen_axes_patch(self): Returns ------- Patch - The patch used to draw the background of the axes. It is also used - as the clipping path for any data elements on the axes. + The patch used to draw the background of the Axes. It is also used + as the clipping path for any data elements on the Axes. In the standard axes, this is a rectangle, but in other projections it may not be. @@ -1129,9 +1129,9 @@ def _gen_axes_spines(self, locations=None, offset=0.0, units='inches'): ------- dict Mapping of spine names to `.Line2D` or `.Patch` instances that are - used to draw axes spines. + used to draw Axes spines. - In the standard axes, spines are single line segments, but in other + In the standard Axes, spines are single line segments, but in other projections they may not be. Notes @@ -1147,7 +1147,7 @@ def sharex(self, other): This is equivalent to passing ``sharex=other`` when constructing the axes, and cannot be used if the x-axis is already being shared with - another axes. + another Axes. """ _api.check_isinstance(_AxesBase, other=other) if self._sharex is not None and other is not self._sharex: @@ -1166,7 +1166,7 @@ def sharey(self, other): This is equivalent to passing ``sharey=other`` when constructing the axes, and cannot be used if the y-axis is already being shared with - another axes. + another Axes. """ _api.check_isinstance(_AxesBase, other=other) if self._sharey is not None and other is not self._sharey: @@ -1180,7 +1180,7 @@ def sharey(self, other): self.yaxis._scale = other.yaxis._scale def cla(self): - """Clear the axes.""" + """Clear the Axes.""" # Note: this is called by Axes.__init__() # stash the current visibility state @@ -1285,7 +1285,7 @@ def cla(self): for _title in (self.title, self._left_title, self._right_title): self._set_artist_props(_title) - # The patch draws the background of the axes. We want this to be below + # The patch draws the background of the Axes. We want this to be below # the other artists. We use the frame to draw the edges so we are # setting the edgecolor to None. self.patch = self._gen_axes_patch() @@ -1471,7 +1471,7 @@ def texts(self): valid_types=mtext.Text) def clear(self): - """Clear the axes.""" + """Clear the Axes.""" self.cla() def get_facecolor(self): @@ -1520,13 +1520,13 @@ def set_prop_cycle(self, *args, **kwargs): Form 2 creates a `~cycler.Cycler` which cycles over one or more properties simultaneously and set it as the property cycle of the - axes. If multiple properties are given, their value lists must have + Axes. If multiple properties are given, their value lists must have the same length. This is just a shortcut for explicitly creating a cycler and passing it to the function, i.e. it's short for ``set_prop_cycle(cycler(label=values label2=values2, ...))``. Form 3 creates a `~cycler.Cycler` for a single property and set it - as the property cycle of the axes. This form exists for compatibility + as the property cycle of the Axes. This form exists for compatibility with the original `cycler.cycler` interface. Its use is discouraged in favor of the kwarg form, i.e. ``set_prop_cycle(label=values)``. @@ -1710,7 +1710,7 @@ def set_adjustable(self, adjustable, share=False): for ax in axs)): # Limits adjustment by apply_aspect assumes that the axes' aspect # ratio can be computed from the data limits and scales. - raise ValueError("Cannot set axes adjustable to 'datalim' for " + raise ValueError("Cannot set Axes adjustable to 'datalim' for " "Axes which override 'get_data_ratio'") for ax in axs: ax._adjustable = adjustable @@ -1718,7 +1718,7 @@ def set_adjustable(self, adjustable, share=False): def get_box_aspect(self): """ - Return the axes box aspect, i.e. the ratio of height to width. + Return the Axes box aspect, i.e. the ratio of height to width. The box aspect is ``None`` (i.e. chosen depending on the available figure space) unless explicitly specified. @@ -1734,21 +1734,21 @@ def get_box_aspect(self): def set_box_aspect(self, aspect=None): """ - Set the axes box aspect, i.e. the ratio of height to width. + Set the Axes box aspect, i.e. the ratio of height to width. - This defines the aspect of the axes in figure space and is not to be + This defines the aspect of the Axes in figure space and is not to be confused with the data aspect (see `~.Axes.set_aspect`). Parameters ---------- aspect : float or None Changes the physical dimensions of the Axes, such that the ratio - of the axes height to the axes width in physical units is equal to + of the Axes height to the Axes width in physical units is equal to *aspect*. Defining a box aspect will change the *adjustable* property to 'datalim' (see `~.Axes.set_adjustable`). *None* will disable a fixed box aspect so that height and width - of the axes are chosen independently. + of the Axes are chosen independently. See Also -------- @@ -2138,7 +2138,7 @@ def _sci(self, im): This image will be the target of colormap functions like `~.pyplot.viridis`, and other functions such as `~.pyplot.clim`. The - current image is an attribute of the current axes. + current image is an attribute of the current Axes. """ _api.check_isinstance( (mpl.contour.ContourSet, mcoll.Collection, mimage.AxesImage), @@ -2157,7 +2157,7 @@ def _gci(self): def has_data(self): """ - Return whether any artists have been added to the axes. + Return whether any artists have been added to the Axes. This should not be used to determine whether the *dataLim* need to be updated, and may not actually be useful for @@ -2204,12 +2204,12 @@ def add_artist(self, a): def add_child_axes(self, ax): """ - Add an `.AxesBase` to the axes' children; return the child axes. + Add an `.AxesBase` to the Axes' children; return the child Axes. This is the lowlevel version. See `.axes.Axes.inset_axes`. """ - # normally axes have themselves as the axes, but these need to have + # normally Axes have themselves as the Axes, but these need to have # their parent... # Need to bypass the getter... ax._axes = self @@ -2612,7 +2612,7 @@ def use_sticky_edges(self): @use_sticky_edges.setter def use_sticky_edges(self, b): self._use_sticky_edges = bool(b) - # No effect until next autoscaling, which will mark the axes as stale. + # No effect until next autoscaling, which will mark the Axes as stale. def set_xmargin(self, m): """ @@ -2664,7 +2664,7 @@ def margins(self, *margins, x=None, y=None, tight=True): """ Set or retrieve autoscaling margins. - The padding added to each limit of the axes is the *margin* + The padding added to each limit of the Axes is the *margin* times the data interval. All input parameters must be floats within the range [0, 1]. Passing both positional and keyword arguments is invalid and will raise a TypeError. If no @@ -2766,7 +2766,7 @@ def autoscale(self, enable=True, axis='both', tight=None): Convenience method for simple axis view autoscaling. It turns autoscaling on or off, and then, if autoscaling for either axis is on, it performs - the autoscaling on the specified axis or axes. + the autoscaling on the specified axis or Axes. Parameters ---------- @@ -2833,7 +2833,7 @@ def autoscale_view(self, tight=None, scalex=True, scaley=True): case, use :meth:`matplotlib.axes.Axes.relim` prior to calling autoscale_view. - If the views of the axes are fixed, e.g. via `set_xlim`, they will + If the views of the Axes are fixed, e.g. via `set_xlim`, they will not be changed by autoscale_view(). See :meth:`matplotlib.axes.Axes.autoscale` for an alternative. """ @@ -2842,9 +2842,9 @@ def autoscale_view(self, tight=None, scalex=True, scaley=True): x_stickies = y_stickies = np.array([]) if self.use_sticky_edges: - # Only iterate over axes and artists if needed. The check for + # Only iterate over Axes and artists if needed. The check for # ``hasattr(ax, "_children")`` is necessary because this can be - # called very early in the axes init process (e.g., for twin axes) + # called very early in the Axes init process (e.g., for twin axes) # when these attributes don't even exist yet, in which case # `get_children` would raise an AttributeError. if self._xmargin and scalex and self._autoscaleXon: @@ -2948,7 +2948,7 @@ def _get_axis_map(self): and the r-axis is still named "y" (for back-compatibility). In practice, this means that the entries are typically "x" and "y", and - additionally "z" for 3D axes. + additionally "z" for 3D Axes. """ return dict(zip(self._axis_names, self._get_axis_list())) @@ -2989,9 +2989,9 @@ def _update_title_position(self, renderer): if bb is not None: top = max(top, bb.ymax) if top < 0: - # the top of axes is not even on the figure, so don't try and + # the top of Axes is not even on the figure, so don't try and # automatically place it. - _log.debug('top of axes not in the figure, so title not moved') + _log.debug('top of Axes not in the figure, so title not moved') return if title.get_window_extent(renderer).ymin < top: _, y = self.transAxes.inverted().transform((0, top)) @@ -3024,7 +3024,7 @@ def draw(self, renderer): # prevent triggering call backs during the draw process self._stale = True - # loop over self and child axes... + # loop over self and child Axes... locator = self.get_axes_locator() if locator: pos = locator(self, renderer) @@ -3035,7 +3035,7 @@ def draw(self, renderer): artists = self.get_children() artists.remove(self.patch) - # the frame draws the edges around the axes patch -- we + # the frame draws the edges around the Axes patch -- we # decouple these so the patch can be in the background and the # frame in the foreground. Do this before drawing the axis # objects so that the spine has the opportunity to update them. @@ -3119,12 +3119,12 @@ def get_renderer_cache(self): # Axes rectangle characteristics def get_frame_on(self): - """Get whether the axes rectangle patch is drawn.""" + """Get whether the Axes rectangle patch is drawn.""" return self._frameon def set_frame_on(self, b): """ - Set whether the axes rectangle patch is drawn. + Set whether the Axes rectangle patch is drawn. Parameters ---------- @@ -3238,7 +3238,7 @@ def ticklabel_format(self, *, axis='both', style='', scilimits=None, Parameters ---------- axis : {'x', 'y', 'both'}, default: 'both' - The axes to configure. Only major ticks are affected. + The axis to configure. Only major ticks are affected. style : {'sci', 'scientific', 'plain'} Whether to use scientific notation. @@ -3463,7 +3463,7 @@ def set_xlabel(self, xlabel, fontdict=None, labelpad=None, *, The label text. labelpad : float, default: :rc:`axes.labelpad` - Spacing in points from the axes bounding box including ticks + Spacing in points from the Axes bounding box including ticks and tick labels. If None, the previous value is left as is. loc : {'left', 'center', 'right'}, default: :rc:`xaxis.labellocation` @@ -3533,7 +3533,7 @@ def set_xbound(self, lower=None, upper=None): """ Set the lower and upper numerical bounds of the x-axis. - This method will honor axes inversion regardless of parameter order. + This method will honor axis inversion regardless of parameter order. It will not change the autoscaling setting (`.get_autoscalex_on()`). Parameters @@ -3807,7 +3807,7 @@ def set_ylabel(self, ylabel, fontdict=None, labelpad=None, *, The label text. labelpad : float, default: :rc:`axes.labelpad` - Spacing in points from the axes bounding box including ticks + Spacing in points from the Axes bounding box including ticks and tick labels. If None, the previous value is left as is. loc : {'bottom', 'center', 'top'}, default: :rc:`yaxis.labellocation` @@ -3877,7 +3877,7 @@ def set_ybound(self, lower=None, upper=None): """ Set the lower and upper numerical bounds of the y-axis. - This method will honor axes inversion regardless of parameter order. + This method will honor axis inversion regardless of parameter order. It will not change the autoscaling setting (`.get_autoscaley_on()`). Parameters @@ -4153,7 +4153,7 @@ def format_coord(self, x, y): def minorticks_on(self): """ - Display minor ticks on the axes. + Display minor ticks on the Axes. Displaying minor ticks may reduce performance; you may turn them off using `minorticks_off()` if drawing speed is a problem. @@ -4171,7 +4171,7 @@ def minorticks_on(self): ax.set_minor_locator(mticker.AutoMinorLocator()) def minorticks_off(self): - """Remove minor ticks from the axes.""" + """Remove minor ticks from the Axes.""" self.xaxis.set_minor_locator(mticker.NullLocator()) self.yaxis.set_minor_locator(mticker.NullLocator()) @@ -4179,25 +4179,25 @@ def minorticks_off(self): def can_zoom(self): """ - Return whether this axes supports the zoom box button functionality. + Return whether this Axes supports the zoom box button functionality. """ return True def can_pan(self): """ - Return whether this axes supports any pan/zoom button functionality. + Return whether this Axes supports any pan/zoom button functionality. """ return True def get_navigate(self): """ - Get whether the axes responds to navigation commands + Get whether the Axes responds to navigation commands. """ return self._navigate def set_navigate(self, b): """ - Set whether the axes responds to navigation toolbar commands + Set whether the Axes responds to navigation toolbar commands. Parameters ---------- @@ -4207,13 +4207,13 @@ def set_navigate(self, b): def get_navigate_mode(self): """ - Get the navigation toolbar button status: 'PAN', 'ZOOM', or None + Get the navigation toolbar button status: 'PAN', 'ZOOM', or None. """ return self._navigate_mode def set_navigate_mode(self, b): """ - Set the navigation toolbar button status; + Set the navigation toolbar button status. .. warning :: this is not a user-API function. @@ -4346,7 +4346,7 @@ def _set_view_from_bbox(self, bbox, direction='in', [xmin0, xmax0, xmin, xmax]) # To screen space. factor = (sxmax0 - sxmin0) / (sxmax - sxmin) # Unzoom factor. # Move original bounds away by - # (factor) x (distance between unzoom box and axes bbox). + # (factor) x (distance between unzoom box and Axes bbox). sxmin1 = sxmin0 - factor * (sxmin - sxmin0) sxmax1 = sxmax0 + factor * (sxmax0 - sxmax) # And back to data space. @@ -4542,7 +4542,7 @@ def get_tightbbox(self, renderer, call_axes_locator=True, bbox_extra_artists : list of `.Artist` or ``None`` List of artists to include in the tight bounding box. If - ``None`` (default), then all artist children of the axes are + ``None`` (default), then all artist children of the Axes are included in the tight bounding box. call_axes_locator : bool, default: True @@ -4550,7 +4550,7 @@ def get_tightbbox(self, renderer, call_axes_locator=True, ``_axes_locator`` attribute, which is necessary to get the correct bounding box. ``call_axes_locator=False`` can be used if the caller is only interested in the relative size of the tightbbox - compared to the axes bbox. + compared to the Axes bbox. for_layout_only : default: False The bounding box will *not* include the x-extent of the title and @@ -4620,14 +4620,14 @@ def get_tightbbox(self, renderer, call_axes_locator=True, for a in bbox_artists: # Extra check here to quickly see if clipping is on and - # contained in the axes. If it is, don't get the tightbbox for + # contained in the Axes. If it is, don't get the tightbbox for # this artist because this can be expensive: clip_extent = a._get_clipping_extent_bbox() if clip_extent is not None: clip_extent = mtransforms.Bbox.intersection( clip_extent, axbbox) if np.all(clip_extent.extents == axbbox.extents): - # clip extent is inside the axes bbox so don't check + # clip extent is inside the Axes bbox so don't check # this artist continue bbox = a.get_tightbbox(renderer) @@ -4639,7 +4639,7 @@ def get_tightbbox(self, renderer, call_axes_locator=True, [b for b in bb if b.width != 0 or b.height != 0]) def _make_twin_axes(self, *args, **kwargs): - """Make a twinx axes of self. This is used for twinx and twiny.""" + """Make a twinx Axes of self. This is used for twinx and twiny.""" # Typically, SubplotBase._make_twin_axes is called instead of this. if 'sharex' in kwargs and 'sharey' in kwargs: raise ValueError("Twinned Axes may share only one axis") @@ -4670,7 +4670,7 @@ def twinx(self): Notes ----- For those who are 'picking' artists while using twinx, pick - events are only called for the artists in the top-most axes. + events are only called for the artists in the top-most Axes. """ ax2 = self._make_twin_axes(sharex=self) ax2.yaxis.tick_right() @@ -4700,7 +4700,7 @@ def twiny(self): Notes ----- For those who are 'picking' artists while using twiny, pick - events are only called for the artists in the top-most axes. + events are only called for the artists in the top-most Axes. """ ax2 = self._make_twin_axes(sharey=self) ax2.xaxis.tick_top() From f36d1822af5588a173160a58459841b739e58e3a Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 5 Sep 2021 00:34:00 +0200 Subject: [PATCH 079/270] Backport PR #20997: Fix ToolManager + TextBox support. --- lib/matplotlib/tests/test_widgets.py | 6 +++++- lib/matplotlib/widgets.py | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/tests/test_widgets.py b/lib/matplotlib/tests/test_widgets.py index a43cfec6191f..f50402a20a15 100644 --- a/lib/matplotlib/tests/test_widgets.py +++ b/lib/matplotlib/tests/test_widgets.py @@ -619,7 +619,11 @@ def test_CheckButtons(): check.disconnect(cid) -def test_TextBox(): +@pytest.mark.parametrize("toolbar", ["none", "toolbar2", "toolmanager"]) +def test_TextBox(toolbar): + # Avoid "toolmanager is provisional" warning. + dict.__setitem__(plt.rcParams, "toolbar", toolbar) + from unittest.mock import Mock submit_event = Mock() text_change_event = Mock() diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index 220fb1d280cd..a59b3b1b1677 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -1287,7 +1287,7 @@ def begin_typing(self, x): # If using toolmanager, lock keypresses, and plan to release the # lock when typing stops. toolmanager.keypresslock(self) - stack.push(toolmanager.keypresslock.release, self) + stack.callback(toolmanager.keypresslock.release, self) else: # If not using toolmanager, disable all keypress-related rcParams. # Avoid spurious warnings if keymaps are getting deprecated. From e5f4955bf7be1d92b2535a773f08f2eff7e68868 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 5 Sep 2021 12:42:07 +0200 Subject: [PATCH 080/270] Backport PR #20987: FIX: colorbar with boundary norm, proportional, extend --- lib/matplotlib/colorbar.py | 5 ++-- .../test_colorbar/proportional_colorbars.png | Bin 0 -> 11329 bytes lib/matplotlib/tests/test_colorbar.py | 27 ++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_colorbar/proportional_colorbars.png diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index 9d40ac8e5e9c..d826649af167 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -1198,8 +1198,9 @@ def _proportional_y(self): a proportional colorbar, plus extension lengths if required: """ if isinstance(self.norm, colors.BoundaryNorm): - y = (self._boundaries - self._boundaries[0]) - y = y / (self._boundaries[-1] - self._boundaries[0]) + y = (self._boundaries - self._boundaries[self._inside][0]) + y = y / (self._boundaries[self._inside][-1] - + self._boundaries[self._inside][0]) # need yscaled the same as the axes scale to get # the extend lengths. if self.spacing == 'uniform': diff --git a/lib/matplotlib/tests/baseline_images/test_colorbar/proportional_colorbars.png b/lib/matplotlib/tests/baseline_images/test_colorbar/proportional_colorbars.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f9745230ba39cc362d144aa7994dc8a8a86edb GIT binary patch literal 11329 zcmd^_bySqm*YAe`L_k3lMWqIi6ltlUTco=~7)o;J20;gDq@<<0l`a8k>2Qb{Y3c3( z-Uoki-}m0N?)~eo_mB6FS+mxx^E~IwIs5GW-JiWbswm0cC3s2z0)g(nl9N&cfxrPE z5Z3S8w}4+>j?69rUpg+*IxgxC7B23la2QC@)Wy-(!Nu144a5xwceZx0=Vs$!<6?7k zaCYJ3=i_{CX=?U{lYNV*Av%R)-8YQRA+5fQCcs99tEP;Z*7Mb314^lR;cviP_0X|;gR8unx|>*Z(k znK3lh0Y!a+__@JNUosW$7vHO|uio?OKHgq_?>xnQGB}&W?R+J)DwGk$!|t|%O0v}Q zZn^Ls%veqRg+`-^L7*z9sx>SSNQE8u9tgrs00D_vkcxo<2AF`2OHu`4fw;0kV34^C z77nN<9DExT{p5ezz=5?qykUme-e>l zaa0%?dslC4@z1*ssHP`FqSu(p9Z!#$KSy388%MlP-_G<9HI!JnvGzvqO9fdp2hELx<@%a+`PN2w9>i%__6_*^p>T zSN_UYV7`*2T~nq^tk)0EAiYK=ALR8(8lUhDoZ;ivgn^cSr5#I{(SX9QS zrEbspE*+6E@-4((FQm!VL{V7oRRys<|3ujjr;~6S|3UK`{OEFVJw$pS(DPjjdwf*>2bj%=)VUQ!Uf_GX6|!d7I0H@^rF zKy;a)UlW^KRS@>klrHgLIZI8-S!ogd0!i#i@MOSd*E?(vk4{s3i69_`>MuI<;j9<5I(`HL21f<~X#+_*pWkN6x4yy-)nf6!46Fm81Wxv4a7Qc7tDEvF3w5@z7Yv5KAMCj23nR z7wZT%O~pZJ!dmsR`XJDhn%M#>pU!>1#K_3V}F`_rmnqodUg0(VoQ zu-s(wFh5!Q;b*wfOB$358^P`|CnbX8?*+z{?T23yKwcFVVKhll{UXJ^9Y3N|YAj_b zVJi6M$zfsypA{H5siG{Ya<-|)pBoXv+(GsM0clgy%nr|?tt&_fFnU?x`0ythsR zxe~*zZ9XEXJx-wu+s@@e`laJP!O3}TIT1Ce1Bs%MD$v*65ksXC?6q{ zokR$!sjW?+y8pESL&>xO{YChh5jR?ELn1`h1=>Swj2YfIN~XH+BBRX}ea;*ZeOsL9 z=+AVGR@ccZr+v9^fNd1NrJ2s9=jTb=vpZ>kgX@vD`iPW>I`YRFGoUz6&sw__xCkg zA&Hk%2!T{=>*r=E<+M-}O#%p#1?mBuZ28Atvxi941VzTEL7G9p(zw>|?6ZXF>F&Jf zp%K=E$;#753o!+l=SMcX9OFp%t|tp=H5=xCB4>#5Q~|w`Ph>M-q8s?RM03|QzFI>b zG6&dU{A~M#Lb}0cp+PQB^Cy5YmE2#l(_I&f#@^_$tCGJg!S2x$Ieni`c!}vCHefnD z*kIjFE@DjgpzZwz&cxTWkkzb@F?&*-V0D7TmZPD@w2!^V_BlV9JTv?<$BVoQyFyis zjwWQ|k))6*%M$ZPf_voqSRIO65+Mk;Vp_hw9-?VeA*vyvzel`IiU<(Uiuc|mLS58J z3KV9?RW+O4y$D3K(rt^J^wpQoot__g>|4^-)YMp{QxhR7 ztE<&J{_L9&LkK5a>)enfS9QoHwXdmQ#k6(73A5N)rlMYF4`&fCj;9fC92|BA&Ah!E z*JxZr!9663X~o*wpRp&bSoj|Kmi3x79$j1}$(B#O^^!}=0^-D9jX{A7 z0g^MSmu?^*1eYDd5_yqZ8Arb=Dd3{dGE>~Us5H+`r2aE{d)|5W;#$YQyWbxl<>1II$sY7$B z*DP(}R8cSvCiPIH)9!_<1wz>QYZ|zxtB=V~8hx<)gT{_2aM%r&*qT>mrq@TW!lp`( z%OMH-;DMYM-nrDid!X_9%RNMP@<3$OYm1=ICs|C>_3%j-T%>g$ zbh8|vzqn}foc3UOrK&_Z&re`t(RXK$VO$g3fBT^7O0pu7%y7iqe&AwLLz(_nrNXE% z0p$J5hYMpFtxN;NwojKxQXYQS0MD|fbH#Bw*$VPSl1s8Y=;0z}OyREz2Y-$!3qB1L zlsA#8R4H5c`N9kJA^h5FK6)74qeDs0v9QdlLr=VPOYv{)L?1$?ZGb>&!V%KkeB;y< zi7g8i2~Fge9j2RJw&hJ-B-iS=gc7z4R zeEYb_gXA z6XPX!&>cOAkm0TspFyGQz2wH3Ciclx(W=1>-%P`Kl(Ed|nGqhHm;-R4;j;VL{&G%G z)nK!~<~rbcquA!|M;veH;VXFB=161ZsISDg@qX|OHKP?Z6t-KcD2s1X%;9p%@ggv} z1;^jRZZ`;#RNYvSkw?ai>d2u16(iOna*V2_x;RhqTc>;5da_9EvEGA^8siH>FUjm` zK3H%OkAKj;SY*99R8Y?brkDdseg@ay%YWXN&R>>-1+(Zb zs*Nm$LK}pvzkaa#M%otn+WJvzZ#d@n$&_c5qP&UW{PglYgraRSc}i2aAU#J`%U1os zP@(t2=`bIfj9ApsbbB$=p@p6H#%H|Ycs%O~+`>u0t}=CyZoz=A&l8%KUhh(UFkKP* zJ3At$0ySj4s*D>cb0FM|d-7gs0$6StuslVSa~f`Temvz0>>4k|CPY%cuP0mcwTaYA zX^up?TmKlCTg2o)wqtmBnHb*|GSTi63$j0#cu=6GD@z18G+N%D5h3uJ3zn*mPEKRM z$urXp(1pf-=L%hP3g(B|oX^g)^rIUxRHf~C(kS6{4wG0pM>hvx|Mhq(aP6pt_EGuS zOXXPa!(jfBd_WiK8}lqIZ<!ila8Ma=2Uv7N#ysq!ERaNh5sBM|=0pm>@fz>I=j?_SefH;tSl=tj~Ca~l~3GQ!u6`wbC4AW$Z z`mP3~>tjZ1l1Fu{62Llb+uPd%S#f^_!bgH!1F-rNyy6(jwPN`GFl z@i8zed!%5EhErBoyhSdS`+WSEq2eiWMA42V5FXS)+6MM&M#a2mZd~7uw>Q-0>7iRE z*1$p;3BbDZ`s%Voal7Nikm3ZSVmfbh@k{6oaQQXLOQ3fst-Qc%Az0n2ptT&qAfc>= zFAskY+bb$UmT&bl1!&|wN5F|n;O@ayV8gxaS7U_a)w6m17V-7X{X|;JN)VO6EO%^v zjQ6nCj@LyHIawCp<+$uqU7|b|#LlCtp2K6~XE(Y}1yrap^UeoVnx0qsbO{fK`yLH+ z(#fNFz^I%IaJHEvE>YlLPB&JyMc$am8M~8}B~C;-RntrN8B6*{^b zA(Lt3u0HAa>l!-VS_)$H*>I!HzB!5iX}B7@x8$PBk}vRCNa7`_m&aKwM1>n6qh>D#>}5jH0*50qP~WvOn8HrblNAar`Zc(G zt6mMn9ita58%MSR7P4F1^H||bQUJ8j3++i>w7DCHP94O;o=x(~wtJp@j`` zVA^nRGM>`TfHSa(IpB%4WHhyw``&|vWvEU^n9qc-c4i!7cr?K(NG;?Y&Ka{Av3p{5 zc0W2|8(1G*581~0$vcf-T@XqjR*)=3ldaYdG7?%pzlkiko{8_uU!!r=EcAnTm;!8b z2u)ko+$$`DZzRro-w8ySz$CAa^@SbLcit$MGLg8X#q-_K7K&-vLV)ukGr(kn`G;ga?(d_-A&g}*uxN|vEkL`KP{WHCN{#JOe~ImuiP(Q;HAQvijk z>}S~l;@Pb4D5?1e3yvCw^(2*^Zaooh{63W$i6=RH;#lTof*n43>)yM;{H&82fcFOc z&SJrk-*L6ml%e}i->vs#Mj;{m@XB#V{_wQ4v?4^pUEJvR$#)J&@tt(GO`tK9>@nmU zCZSd|z;tsxRk2P0(|4GiJ0gi;Jp=hsufaFVH zPvAi{svuqcsdj?^N#TaC?E$l2N=e0dCy!~F+A{s%*vYvdwd5My1`uLJ(E(xCLsT!W z%@h#Fwk$@5iY|*|jHwDLQw4500ZheFvN0!`9MO$sm<>`(=`hvPtRS@e6WIVaLs^O^ zG6(QjsQxN@y4(JA-+9)pRo<=VuE$5P92|$If(VIK?96x%;2yuQZ)*VJUc*B)6dv-8iOpdh@Ln&sniN$K-?#_2B=zCiCzkdWg zE0E`y{Z+X)y7Ac;TywnWr+^7n1iZLea!wc3e;=w*;u8+wO#)KUB!z8^CqN=-X}cDk z)Ft1IQedDcG@AX;o4w_9p>l{CCF0d=1f-8IWqug}%t4(*`BwED24AC-lyWaT45sk>?P13YBqauMo(<-;BH zF~qMmL%M)+*SDDO@g0Io3=kF;H<8s3Bl4i;veiE5^@qJg^)a{pGaC6N(QL#H@EhJ$ ziPIL9$k{8qvzCg_VPYT z+zOIty`XbPQ(v#0SuPOU3zJzD{I$3WN3%HQ3H=K91_%OFlU1daK+_Yvi<` z;j?}wTILu>VL^P8aIxR0m(`2QmV5c!p;VtR`-!a-*T?nj-Q`3r!XoDw?L}Gi?$n}s ztf-rnbLb`nPrCL@cKf2{bVc30+w5|x8-2Q{+}$m5TEC!bFi}L`3-=W-AgC%Kb`gIm|uHU2VA^HG44qCqsx*6n>(G391#L zsI{N70VIYBDDc}QYUk3($7+A#6minTK)aw6ef?{uML8Oq@bXtitB>WvW0Ji~OZLu) zOZ~l}A^*1>bo~hM?UF57c7J!DYvjekmAd7Q&`D%9*+Tv0%%1X)|LY(+Y_+5MAzwBT zp)(syCm%y32}$z<#zn>*Pen{Wx&LE6`&lb{$0w@5^gftH>ZqX>{z&S2@3$*w+>A&^BUlExTDsJO#_>J79M1TTpuqSd7NZ^ zH0yj#79#{7db_x{+Cu7oDC_?W%Cf>@V)DXRz@JxS&)r{0#ChJ;*_hfNgZ{yoerYV5 z@c!{X0mALTai6^~Z{ zj2Wq(_9!?LXspbj{{D_P`obbTmU3AQMDwP!k>?JggFt5VMZQv6)gWb>77ui(%f_oY zeY4;*SkA4lfqts#gk*bIQS&c`^do?zX|D?F5c?;nAdYQV01fJ@@>k(r@Jmom)4$)0 zCLb3Ek~g*6JJLj548t@p?0Nv7CJqEtL7HWdr~*ka&sSzXfVl$mTYsy;J>@Ya`WZvH zq=c0dKTUx`;5!#6PgP0UR{$zNuH#aBPcuGLF*GiF+9d9qz$`%N2@-&0a6V zc3yb`*ovmsv45>mA|5`I0KaG{QO0`aS$|8*iL{rj>c{E@{0uhix;T><3S-s%h_rUWuopXsSh1dvW~nI=d9r6?gNal25;cUS=_wp@3z=7S|-OX;&JXzXWp!Oyp_W@^g8q*6E?sbl0HYCoV!?`;W%{M$U?EBQW9T&iz(z&+*864mt z1b-~WxYm(zu2kj_(N0T|%M4(T z282Za!Aw7ljJS5pS2#KqdVPAy&PQ7`6!~_ltUi(BJyXE$-LQ8Tbs2@U{#mXkH-s5=1^i&WwxPU&*BrYZW4ZGfU;=S}Mq!<)% zT_2BunlJ^p{AifD{=O5RMrjCrA8f-MU|w1RDl57TUSoFlRxZWK1O!=>RS|!d zZgEgyFo$3*?z{UyZaok5DO@n9sjotjzUSvsrh%rz46M1em#$a^)T=~^s~9cm+u$-U zLGVB>wi{rg&!nTVnTwpg*%qr6sB~qpo(X6sv^Bie9itxx=%-k9PVMUraQoM)YO}QWnc5?rQri*K=PFejxTALg!t{b*3nr@lY`mCY zpW!y#;}s>cGQ4-uhLvE>mk6u6ir8;{EglGPb)LQCGj)y9;9( z7c0A|fI<+*!LPYFJFh>$gO4~IWJc+k0a{j;AhtigyeS7bo0TZWRp*a0URS&E&$R)p z>abGT+&p(!At?Pw8G{yAzW=@Vp9&;gl`@xd#?dA_bVKb z4NXs8&Ey(g5oxG`Guf)L1z?F{v9b;ArN6nfTmwX}0`s-5knYWw-*ZKsIZ$ge535RC#!lwjw+x65gME?Jx!E0u*-r5wMI{ zFMQTTVM>ADe_1EN9*gBpx9^G&EU}HN!=Nx&S8=I}1sS7;uRz0>3Z3-@jB$eUH$v1K zwVJ34rt4#V2YX+qE2Q|`dEr-FgS-h#Jr;mPo>=!c7#8bjfTIWxTtmkN1C5T2Iu$?v zhz(`vM;|^;P=xgB7`x2fVdCafpa8B(PBf_mrcIFhyg!lMK?8>j_poYeioSF0T^yY5 z%^uFam~PlW`6oh67#^z`jg?jcaJ)@Ic^!o9O6-`1-Zvu$x7R1;8eE@uE$$6CHyaHJ z3+v~+mLNL-NH`$r7f+`;tN++~^2k)-U79Q5^0Pb-AU$-ZM#FdN zPX{bT9t3?iS*dJn)IY0}lkG!}{Fn{U1ZsUBIFyHg82q1XPDgc$F_Pq9h)^h%9F``p zhS2Di_5!j^8_5vrKl1nrP6`|RuIn0yKxT#LXw9)Q!nZYZv+bKl`|#s&U^Az891x0L zS3kerY(yW(Wu6$F%%+FvTwv0<;`cH_@8w%-Do_*yRju3e4}rKjG*>OG;c@4NTVNf4}Q$g+&rge=Z#Kz{Ld9YD`;jEI-*1UjA(FjcW>LD5U*8Zw;tK^k!~6yr0E#+0T)H57 z%lq2I)iqTf{$+Es=R0uMOK9{sfml{hj3d)Tv9f{Vr0IIWcCvIp;bmX;Bu+1;$A>6W8+RRC18=+{$!l$%Z5uTv76 zG&~LFx3!4vHS0X5cTArBVh`vdwPTvJkgq{p%a!6OIV#{xB_J3du)W?Xic1X8&D)d| zB(c81*>74>tIQr0QVZ~_Erw~j1Zz6F5HdGg7-``DT|0IP7*PoUIX{;+8Rl;q@H z)>H-qH65b9S)Wp2T0r^Ce|aPN=N@Jr)^9QK5~!h)IyJ0eiOEx4x2bnu;T?Zx7i!-3 zj~o;C0qWEeqQv!HH>>#R6`&bS&Mu$>b=E7Nau)r4pE*D!sO$qzMKWz{H@4x=2zI}{ zuLbAqD0RB3>Ji$_Bb3n*AedmkG^t3wd%b; zZR*Sc#$YiyI6E^FwzajDhnQdntjC6{rx;@^P87E6K?PY(u64`nXa!U$7XO>rY&@8i z&A!gjYO>HL0sv>mbH+N*_H3L2h;qVaG1J6~5SIg6acGGSM_?(hq@(R7%4NXz%TNzUO*>xAKmK90a?&~gG4c18#VVCd$AcdkSdFu zEe$xAEtwf=nj>Z*+C*4mpWRzmW7OJfOHMLOmfuKFJW>Z|>XWwJ!QanrIQE5T8qQ1t-#rL$&omD8Qf>*| zZNuJ3Kq&45e?dOF)pl&>cZDG7)bXa(#VMc~%x)-m>D`W+Nb+R0mEio+8DstKyMR0n zk8fTrvdjEcvnRm#@u+Y?i@3CTO>0{}H@jggp5fH1sVOU!G{I zEkk6n0KeTEy~NsV2Bv^nRTzGF0pD;jo1X-QkybYjSJwF^hiOUo(ZQu!W^B&{MkOgA?-HG~>`m;we08gOJN?joxsn#*>zu6`FZRA<}Olh8mz>)^}s zO*_6jDV~D>yJWtBrqRm!kJ|9WGuk%|0y^FRc9?S0K|(sQaRi_`KH+dBbx>0A_I;03 z4KRfcTl|e4iW5~^VljDiU#}YD+h$|?oc+LEyogjR@@N;EtcsY!A5SIKt_zK24OE<7 zm5C>8oP6L~67uXj@*blifIRPiG2nb&rjnallRFFlbgTwqF4>r8Xv_2wu+=ua_HzjX z_vke|T`|NcMSo(mH#7Vx+3=H#!*&UBsHSsl`k%i57-um;(eMhW;h3HAj{x#5nXCkc+c;c?UKPDQJMGhM;X3)2pW!EHKU+s~6QS=GzacJ>bORMu;{E?=S<6qM0u3t-`5zTK0hJ%1kH*)}J@3hdf0W^u(qgyC1E-nDLc>_LL?~`O)&!HoB!a_PY zuO>oHPe_37E&m+IKTAola524>6Yo|&zf;PckOS%~N1yK0DStZJmY1}C%i4bQWk$_{ z2g#dE|3+e30R6fZBo6G0bSv7yi@zcUs7`129wX~Kwhe?xou2jh3(yYAbTT@i!hs6M zK{CKLzvzcvdHY>opsAxU!^A(7yEcsquE|J5$w)FTF40j_&D*ZPdIzy^CgDH}TIW#n z_2pg)$=<^Ff&XKYjHnRf>;1%R0Ef4tGdyoQ_RK)hXM_BdB(2VW&Z1;GmqR=*H;mb# zHeW#Cx8AEz^b>dKPXEiUj1#(r4wAh&5~sa|A6;FzIU9#-V|(SInEBJv5RYy0q060+ z(+rZm4dXL;v&FuM8*nvVsJ`bQvLAEm(L}m*Eo>xsy%U5`Lf!g&oKV|D&nDIBACCOE z_@0pLDW$d&shA0!gWo~Q;u|T9mK4T93R7*2`Qfqr+!(oA5D=Hf??mgjHI@;nEZvz; zyO0!e`uk|(ZWIf98JNw4D`_A#uA#P;jKpb4&DAP9$iG{5@s>CP1b4I!@5kt$Xc+PUl~J)m(v+E&qST*n@_{ zRV@EtoNsuZ!YYG<0W$qxfUJv~T#~sgw-4H@C(=!=mhf}!t&y{X)s!a+ooTNZo#!vK z97YUm1bEXM6%czb@#Nw31Yrgvq=A0Q?Fok^lez literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_colorbar.py b/lib/matplotlib/tests/test_colorbar.py index 5f19a0aaf20a..00a6f52698e2 100644 --- a/lib/matplotlib/tests/test_colorbar.py +++ b/lib/matplotlib/tests/test_colorbar.py @@ -827,3 +827,30 @@ def test_aspects(): np.testing.assert_almost_equal( cb[1][0].ax.get_position(original=False).height * 2, cb[1][2].ax.get_position(original=False).height, decimal=2) + + +@image_comparison(['proportional_colorbars.png'], remove_text=True, + style='mpl20') +def test_proportional_colorbars(): + + x = y = np.arange(-3.0, 3.01, 0.025) + X, Y = np.meshgrid(x, y) + Z1 = np.exp(-X**2 - Y**2) + Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2) + Z = (Z1 - Z2) * 2 + + levels = [-1.25, -0.5, -0.125, 0.125, 0.5, 1.25] + cmap = mcolors.ListedColormap( + ['0.3', '0.5', 'white', 'lightblue', 'steelblue']) + cmap.set_under('darkred') + cmap.set_over('crimson') + norm = mcolors.BoundaryNorm(levels, cmap.N) + + extends = ['neither', 'both'] + spacings = ['uniform', 'proportional'] + fig, axs = plt.subplots(2, 2) + for i in range(2): + for j in range(2): + CS3 = axs[i, j].contourf(X, Y, Z, levels, cmap=cmap, norm=norm, + extend=extends[i]) + fig.colorbar(CS3, spacing=spacings[j], ax=axs[i, j]) From 982f6719ce898846c0ca7e733ee364b1ab97b3f7 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 7 Sep 2021 18:26:41 +0200 Subject: [PATCH 081/270] Backport PR #21003: Deemphasize mpl_toolkits in API docs. --- doc/api/index.rst | 15 ---------- doc/api/toolkits/index.rst | 46 ------------------------------ doc/api/toolkits/mplot3d.rst | 32 ++++++++++++++++++--- doc/api/toolkits/mplot3d/index.rst | 28 ------------------ doc/devel/testing.rst | 2 +- doc/index.rst | 2 -- 6 files changed, 29 insertions(+), 96 deletions(-) delete mode 100644 doc/api/toolkits/index.rst delete mode 100644 doc/api/toolkits/mplot3d/index.rst diff --git a/doc/api/index.rst b/doc/api/index.rst index 9c33f38ad6d8..ed0e7f310275 100644 --- a/doc/api/index.rst +++ b/doc/api/index.rst @@ -101,21 +101,6 @@ Alphabetical list of modules: widgets_api.rst _api_api.rst _enums_api.rst - -Toolkits --------- - -:ref:`toolkits-index` are collections of application-specific functions that extend -Matplotlib. The following toolkits are included: - -.. toctree:: - :hidden: - - toolkits/index.rst - -.. toctree:: - :maxdepth: 1 - toolkits/mplot3d.rst toolkits/axes_grid1.rst toolkits/axisartist.rst diff --git a/doc/api/toolkits/index.rst b/doc/api/toolkits/index.rst deleted file mode 100644 index 59c01ab21a69..000000000000 --- a/doc/api/toolkits/index.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. _toolkits-index: - -.. _toolkits: - -######## -Toolkits -######## - -Toolkits are collections of application-specific functions that extend -Matplotlib. - -.. _toolkit_mplot3d: - -mplot3d -======= - -:mod:`mpl_toolkits.mplot3d` provides some basic 3D -plotting (scatter, surf, line, mesh) tools. Not the fastest or most feature -complete 3D library out there, but it ships with Matplotlib and thus may be a -lighter weight solution for some use cases. Check out the -:doc:`mplot3d tutorial ` for more -information. - -.. figure:: ../../gallery/mplot3d/images/sphx_glr_contourf3d_2_001.png - :target: ../../gallery/mplot3d/contourf3d_2.html - :align: center - :scale: 50 - -.. toctree:: - :maxdepth: 2 - - mplot3d/index.rst - mplot3d/faq.rst - -Links ------ -* mpl3d API: :ref:`toolkit_mplot3d-api` - -.. include:: axes_grid1.rst - :start-line: 1 - -.. include:: axisartist.rst - :start-line: 1 - -.. include:: axes_grid.rst - :start-line: 1 diff --git a/doc/api/toolkits/mplot3d.rst b/doc/api/toolkits/mplot3d.rst index 97d3bf13246f..5b3cb52571bb 100644 --- a/doc/api/toolkits/mplot3d.rst +++ b/doc/api/toolkits/mplot3d.rst @@ -1,8 +1,32 @@ -.. _toolkit_mplot3d-api: +.. _toolkit_mplot3d-index: +.. currentmodule:: mpl_toolkits.mplot3d + +************************ +``mpl_toolkits.mplot3d`` +************************ + +The mplot3d toolkit adds simple 3D plotting capabilities (scatter, surface, +line, mesh, etc.) to Matplotlib by supplying an Axes object that can create +a 2D projection of a 3D scene. The resulting graph will have the same look +and feel as regular 2D plots. Not the fastest or most feature complete 3D +library out there, but it ships with Matplotlib and thus may be a lighter +weight solution for some use cases. + +See the :doc:`mplot3d tutorial ` for +more information. + +.. image:: /_static/demo_mplot3d.png + :align: center + +The interactive backends also provide the ability to rotate and zoom the 3D +scene. One can rotate the 3D scene by simply clicking-and-dragging the scene. +Zooming is done by right-clicking the scene and dragging the mouse up and down +(unlike 2D plots, the toolbar zoom button is not used). + +.. toctree:: + :maxdepth: 2 -*********** -mplot3d API -*********** + mplot3d/faq.rst .. note:: `.pyplot` cannot be used to add content to 3D plots, because its function diff --git a/doc/api/toolkits/mplot3d/index.rst b/doc/api/toolkits/mplot3d/index.rst deleted file mode 100644 index 8b153c06903f..000000000000 --- a/doc/api/toolkits/mplot3d/index.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. _toolkit_mplot3d-index: -.. currentmodule:: mpl_toolkits.mplot3d - -******* -mplot3d -******* - -Matplotlib mplot3d toolkit -========================== -The mplot3d toolkit adds simple 3D plotting capabilities to matplotlib by -supplying an axes object that can create a 2D projection of a 3D scene. -The resulting graph will have the same look and feel as regular 2D plots. - -See the :doc:`mplot3d tutorial ` for -more information on how to use this toolkit. - -.. image:: /_static/demo_mplot3d.png - -The interactive backends also provide the ability to rotate and zoom -the 3D scene. One can rotate the 3D scene by simply clicking-and-dragging -the scene. Zooming is done by right-clicking the scene and dragging the -mouse up and down. Note that one does not use the zoom button like one -would use for regular 2D plots. - -.. toctree:: - :maxdepth: 2 - - faq.rst diff --git a/doc/devel/testing.rst b/doc/devel/testing.rst index aa189948003c..65898b95ee0c 100644 --- a/doc/devel/testing.rst +++ b/doc/devel/testing.rst @@ -244,7 +244,7 @@ The correct target folder can be found using:: python -c "import matplotlib.tests; print(matplotlib.tests.__file__.rsplit('/', 1)[0])" An analogous copying of :file:`lib/mpl_toolkits/tests/baseline_images` -is necessary for testing the :ref:`toolkits`. +is necessary for testing ``mpl_toolkits``. Run the tests ^^^^^^^^^^^^^ diff --git a/doc/index.rst b/doc/index.rst index 0350a1047a9f..3b18def1db3c 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -31,8 +31,6 @@ Reference - :doc:`Axes API ` for *most* plotting methods - :doc:`Figure API ` for figure-level methods -- :doc:`Extra Toolkits ` - How-tos ======= From 8d80432b4214c1520a57749264f70d7fc73594f6 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 7 Sep 2021 17:13:26 -0400 Subject: [PATCH 082/270] Backport PR #21012: Use numpydoc for GridSpecFromSubplotSpec.__init__ --- lib/matplotlib/gridspec.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/gridspec.py b/lib/matplotlib/gridspec.py index 752048d64a59..74b35d41797d 100644 --- a/lib/matplotlib/gridspec.py +++ b/lib/matplotlib/gridspec.py @@ -490,11 +490,19 @@ def __init__(self, nrows, ncols, wspace=None, hspace=None, height_ratios=None, width_ratios=None): """ - The number of rows and number of columns of the grid need to - be set. An instance of SubplotSpec is also needed to be set - from which the layout parameters will be inherited. The wspace - and hspace of the layout can be optionally specified or the - default values (from the figure or rcParams) will be used. + Parameters + ---------- + nrows, ncols : int + Number of rows and number of columns of the grid. + subplot_spec : SubplotSpec + Spec from which the layout parameters are inherited. + wspace, hspace : float, optional + See `GridSpec` for more details. If not specified default values + (from the figure or rcParams) are used. + height_ratios : array-like of length *nrows*, optional + See `GridSpecBase` for details. + width_ratios : array-like of length *ncols*, optional + See `GridSpecBase` for details. """ self._wspace = wspace self._hspace = hspace From 75b81e01ef4d4bf4f1e9427a552ff721e3db0026 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 7 Sep 2021 17:15:38 -0400 Subject: [PATCH 083/270] Backport PR #20994: Remove unused icon_filename, window_icon globals. --- lib/matplotlib/backends/backend_gtk4.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lib/matplotlib/backends/backend_gtk4.py b/lib/matplotlib/backends/backend_gtk4.py index 0babb1ff4974..3ffff77792db 100644 --- a/lib/matplotlib/backends/backend_gtk4.py +++ b/lib/matplotlib/backends/backend_gtk4.py @@ -658,14 +658,6 @@ def trigger(self, *args, **kwargs): clipboard.set(pb) -# Define the file to use as the GTk icon -if sys.platform == 'win32': - icon_filename = 'matplotlib.png' -else: - icon_filename = 'matplotlib.svg' -window_icon = str(cbook._get_data_path('images', icon_filename)) - - backend_tools.ToolSaveFigure = SaveFigureGTK4 backend_tools.ToolConfigureSubplots = ConfigureSubplotsGTK4 backend_tools.ToolRubberband = RubberbandGTK4 From e40c46bfe7e63d60f7951770ba7b798d1af445eb Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Wed, 8 Sep 2021 10:36:24 +0200 Subject: [PATCH 084/270] Backport PR #20976: Separate tick and spine examples --- .flake8 | 2 +- doc/users/prev_whats_new/whats_new_0.99.rst | 2 +- examples/axisartist/demo_axisline_style.py | 4 ++-- examples/axisartist/demo_parasite_axes.py | 2 +- examples/axisartist/demo_parasite_axes2.py | 2 +- examples/axisartist/simple_axisartist1.py | 6 +++--- examples/spines/README.txt | 4 ++++ .../centered_spines_with_arrows.py | 0 .../multiple_yaxis_with_spines.py | 0 .../spine_placement_demo.py | 2 +- examples/{ticks_and_spines => spines}/spines.py | 0 .../{ticks_and_spines => spines}/spines_bounds.py | 0 .../{ticks_and_spines => spines}/spines_dropped.py | 0 examples/text_labels_and_annotations/date.py | 9 ++++----- examples/ticks/README.txt | 4 ++++ examples/{ticks_and_spines => ticks}/auto_ticks.py | 0 .../centered_ticklabels.py | 0 .../colorbar_tick_labelling_demo.py | 0 .../{ticks_and_spines => ticks}/custom_ticker1.py | 0 .../date_concise_formatter.py | 0 .../date_demo_convert.py | 0 .../{ticks_and_spines => ticks}/date_demo_rrule.py | 0 .../date_index_formatter2.py | 0 .../date_precision_and_epochs.py | 0 .../major_minor_demo.py | 0 .../{ticks_and_spines => ticks}/scalarformatter.py | 0 .../{ticks_and_spines => ticks}/tick-formatters.py | 0 .../{ticks_and_spines => ticks}/tick-locators.py | 0 .../tick_label_right.py | 0 .../tick_labels_from_values.py | 0 .../{ticks_and_spines => ticks}/tick_xlabel_top.py | 0 .../ticklabels_rotation.py | 0 examples/ticks_and_spines/README.txt | 4 ---- lib/matplotlib/dates.py | 14 +++++++------- lib/matplotlib/ticker.py | 6 +++--- 35 files changed, 32 insertions(+), 29 deletions(-) create mode 100644 examples/spines/README.txt rename examples/{ticks_and_spines => spines}/centered_spines_with_arrows.py (100%) rename examples/{ticks_and_spines => spines}/multiple_yaxis_with_spines.py (100%) rename examples/{ticks_and_spines => spines}/spine_placement_demo.py (97%) rename examples/{ticks_and_spines => spines}/spines.py (100%) rename examples/{ticks_and_spines => spines}/spines_bounds.py (100%) rename examples/{ticks_and_spines => spines}/spines_dropped.py (100%) create mode 100644 examples/ticks/README.txt rename examples/{ticks_and_spines => ticks}/auto_ticks.py (100%) rename examples/{ticks_and_spines => ticks}/centered_ticklabels.py (100%) rename examples/{ticks_and_spines => ticks}/colorbar_tick_labelling_demo.py (100%) rename examples/{ticks_and_spines => ticks}/custom_ticker1.py (100%) rename examples/{ticks_and_spines => ticks}/date_concise_formatter.py (100%) rename examples/{ticks_and_spines => ticks}/date_demo_convert.py (100%) rename examples/{ticks_and_spines => ticks}/date_demo_rrule.py (100%) rename examples/{ticks_and_spines => ticks}/date_index_formatter2.py (100%) rename examples/{ticks_and_spines => ticks}/date_precision_and_epochs.py (100%) rename examples/{ticks_and_spines => ticks}/major_minor_demo.py (100%) rename examples/{ticks_and_spines => ticks}/scalarformatter.py (100%) rename examples/{ticks_and_spines => ticks}/tick-formatters.py (100%) rename examples/{ticks_and_spines => ticks}/tick-locators.py (100%) rename examples/{ticks_and_spines => ticks}/tick_label_right.py (100%) rename examples/{ticks_and_spines => ticks}/tick_labels_from_values.py (100%) rename examples/{ticks_and_spines => ticks}/tick_xlabel_top.py (100%) rename examples/{ticks_and_spines => ticks}/ticklabels_rotation.py (100%) delete mode 100644 examples/ticks_and_spines/README.txt diff --git a/.flake8 b/.flake8 index 82b495f4cfe3..7094b6c49b5f 100644 --- a/.flake8 +++ b/.flake8 @@ -120,7 +120,7 @@ per-file-ignores = examples/style_sheets/plot_solarizedlight2.py: E501 examples/subplots_axes_and_figures/demo_constrained_layout.py: E402 examples/text_labels_and_annotations/custom_legends.py: E402 - examples/ticks_and_spines/date_concise_formatter.py: E402 + examples/ticks/date_concise_formatter.py: E402 examples/user_interfaces/embedding_in_gtk3_panzoom_sgskip.py: E402 examples/user_interfaces/embedding_in_gtk3_sgskip.py: E402 examples/user_interfaces/embedding_in_gtk4_panzoom_sgskip.py: E402 diff --git a/doc/users/prev_whats_new/whats_new_0.99.rst b/doc/users/prev_whats_new/whats_new_0.99.rst index 94abde7fe4da..c2d761a25031 100644 --- a/doc/users/prev_whats_new/whats_new_0.99.rst +++ b/doc/users/prev_whats_new/whats_new_0.99.rst @@ -112,7 +112,7 @@ that denote the data limits -- in various arbitrary locations. No longer are your axis lines constrained to be a simple rectangle around the figure -- you can turn on or off left, bottom, right and top, as well as "detach" the spine to offset it away from the data. See -:doc:`/gallery/ticks_and_spines/spine_placement_demo` and +:doc:`/gallery/spines/spine_placement_demo` and :class:`matplotlib.spines.Spine`. .. plot:: diff --git a/examples/axisartist/demo_axisline_style.py b/examples/axisartist/demo_axisline_style.py index 1427a90952a1..c7270941dadf 100644 --- a/examples/axisartist/demo_axisline_style.py +++ b/examples/axisartist/demo_axisline_style.py @@ -7,8 +7,8 @@ Note: The `mpl_toolkits.axisartist` axes classes may be confusing for new users. If the only aim is to obtain arrow heads at the ends of the axes, -rather check out the -:doc:`/gallery/ticks_and_spines/centered_spines_with_arrows` example. +rather check out the :doc:`/gallery/spines/centered_spines_with_arrows` +example. """ from mpl_toolkits.axisartist.axislines import AxesZero diff --git a/examples/axisartist/demo_parasite_axes.py b/examples/axisartist/demo_parasite_axes.py index ef7d5ca5268d..0b7858f645f3 100644 --- a/examples/axisartist/demo_parasite_axes.py +++ b/examples/axisartist/demo_parasite_axes.py @@ -10,7 +10,7 @@ `mpl_toolkits.axes_grid1.parasite_axes.ParasiteAxes`. An alternative approach using standard Matplotlib subplots is shown in the -:doc:`/gallery/ticks_and_spines/multiple_yaxis_with_spines` example. +:doc:`/gallery/spines/multiple_yaxis_with_spines` example. An alternative approach using :mod:`mpl_toolkits.axes_grid1` and :mod:`mpl_toolkits.axisartist` is found in the diff --git a/examples/axisartist/demo_parasite_axes2.py b/examples/axisartist/demo_parasite_axes2.py index 3c23e37b7ae7..651cdd032ae5 100644 --- a/examples/axisartist/demo_parasite_axes2.py +++ b/examples/axisartist/demo_parasite_axes2.py @@ -19,7 +19,7 @@ `~.mpl_toolkits.axes_grid1.parasite_axes.ParasiteAxes` is the :doc:`/gallery/axisartist/demo_parasite_axes` example. An alternative approach using the usual Matplotlib subplots is shown in -the :doc:`/gallery/ticks_and_spines/multiple_yaxis_with_spines` example. +the :doc:`/gallery/spines/multiple_yaxis_with_spines` example. """ from mpl_toolkits.axes_grid1 import host_subplot diff --git a/examples/axisartist/simple_axisartist1.py b/examples/axisartist/simple_axisartist1.py index dacbfd0721f8..95d710cbe0b1 100644 --- a/examples/axisartist/simple_axisartist1.py +++ b/examples/axisartist/simple_axisartist1.py @@ -6,9 +6,9 @@ This example showcases the use of :mod:`.axisartist` to draw spines at custom positions (here, at ``y = 0``). -Note, however, that it is simpler to achieve this effect -using standard `.Spine` methods, as demonstrated in -:doc:`/gallery/ticks_and_spines/centered_spines_with_arrows`. +Note, however, that it is simpler to achieve this effect using standard +`.Spine` methods, as demonstrated in +:doc:`/gallery/spines/centered_spines_with_arrows`. .. redirect-from:: /gallery/axisartist/simple_axisline2 """ diff --git a/examples/spines/README.txt b/examples/spines/README.txt new file mode 100644 index 000000000000..40bc3952eacd --- /dev/null +++ b/examples/spines/README.txt @@ -0,0 +1,4 @@ +.. _spines_examples: + +Spines +====== diff --git a/examples/ticks_and_spines/centered_spines_with_arrows.py b/examples/spines/centered_spines_with_arrows.py similarity index 100% rename from examples/ticks_and_spines/centered_spines_with_arrows.py rename to examples/spines/centered_spines_with_arrows.py diff --git a/examples/ticks_and_spines/multiple_yaxis_with_spines.py b/examples/spines/multiple_yaxis_with_spines.py similarity index 100% rename from examples/ticks_and_spines/multiple_yaxis_with_spines.py rename to examples/spines/multiple_yaxis_with_spines.py diff --git a/examples/ticks_and_spines/spine_placement_demo.py b/examples/spines/spine_placement_demo.py similarity index 97% rename from examples/ticks_and_spines/spine_placement_demo.py rename to examples/spines/spine_placement_demo.py index e567d8160d9c..d433236657f9 100644 --- a/examples/ticks_and_spines/spine_placement_demo.py +++ b/examples/spines/spine_placement_demo.py @@ -6,7 +6,7 @@ Adjusting the location and appearance of axis spines. Note: If you want to obtain arrow heads at the ends of the axes, also check -out the :doc:`/gallery/ticks_and_spines/centered_spines_with_arrows` example. +out the :doc:`/gallery/spines/centered_spines_with_arrows` example. """ import numpy as np import matplotlib.pyplot as plt diff --git a/examples/ticks_and_spines/spines.py b/examples/spines/spines.py similarity index 100% rename from examples/ticks_and_spines/spines.py rename to examples/spines/spines.py diff --git a/examples/ticks_and_spines/spines_bounds.py b/examples/spines/spines_bounds.py similarity index 100% rename from examples/ticks_and_spines/spines_bounds.py rename to examples/spines/spines_bounds.py diff --git a/examples/ticks_and_spines/spines_dropped.py b/examples/spines/spines_dropped.py similarity index 100% rename from examples/ticks_and_spines/spines_dropped.py rename to examples/spines/spines_dropped.py diff --git a/examples/text_labels_and_annotations/date.py b/examples/text_labels_and_annotations/date.py index c37a5fb61e31..f1701ad9bc3b 100644 --- a/examples/text_labels_and_annotations/date.py +++ b/examples/text_labels_and_annotations/date.py @@ -16,11 +16,10 @@ An alternative formatter is the `~.dates.ConciseDateFormatter`, used in the second ``Axes`` below (see -:doc:`/gallery/ticks_and_spines/date_concise_formatter`), which often -removes the need to rotate the tick labels. The last ``Axes`` -formats the dates manually, using `~.dates.DateFormatter` to -format the dates using the format strings documented at -`datetime.date.strftime`. +:doc:`/gallery/ticks/date_concise_formatter`), which often removes the need to +rotate the tick labels. The last ``Axes`` formats the dates manually, using +`~.dates.DateFormatter` to format the dates using the format strings documented +at `datetime.date.strftime`. """ import matplotlib.pyplot as plt diff --git a/examples/ticks/README.txt b/examples/ticks/README.txt new file mode 100644 index 000000000000..82441a0d9ee7 --- /dev/null +++ b/examples/ticks/README.txt @@ -0,0 +1,4 @@ +.. _ticks_examples: + +Ticks +===== diff --git a/examples/ticks_and_spines/auto_ticks.py b/examples/ticks/auto_ticks.py similarity index 100% rename from examples/ticks_and_spines/auto_ticks.py rename to examples/ticks/auto_ticks.py diff --git a/examples/ticks_and_spines/centered_ticklabels.py b/examples/ticks/centered_ticklabels.py similarity index 100% rename from examples/ticks_and_spines/centered_ticklabels.py rename to examples/ticks/centered_ticklabels.py diff --git a/examples/ticks_and_spines/colorbar_tick_labelling_demo.py b/examples/ticks/colorbar_tick_labelling_demo.py similarity index 100% rename from examples/ticks_and_spines/colorbar_tick_labelling_demo.py rename to examples/ticks/colorbar_tick_labelling_demo.py diff --git a/examples/ticks_and_spines/custom_ticker1.py b/examples/ticks/custom_ticker1.py similarity index 100% rename from examples/ticks_and_spines/custom_ticker1.py rename to examples/ticks/custom_ticker1.py diff --git a/examples/ticks_and_spines/date_concise_formatter.py b/examples/ticks/date_concise_formatter.py similarity index 100% rename from examples/ticks_and_spines/date_concise_formatter.py rename to examples/ticks/date_concise_formatter.py diff --git a/examples/ticks_and_spines/date_demo_convert.py b/examples/ticks/date_demo_convert.py similarity index 100% rename from examples/ticks_and_spines/date_demo_convert.py rename to examples/ticks/date_demo_convert.py diff --git a/examples/ticks_and_spines/date_demo_rrule.py b/examples/ticks/date_demo_rrule.py similarity index 100% rename from examples/ticks_and_spines/date_demo_rrule.py rename to examples/ticks/date_demo_rrule.py diff --git a/examples/ticks_and_spines/date_index_formatter2.py b/examples/ticks/date_index_formatter2.py similarity index 100% rename from examples/ticks_and_spines/date_index_formatter2.py rename to examples/ticks/date_index_formatter2.py diff --git a/examples/ticks_and_spines/date_precision_and_epochs.py b/examples/ticks/date_precision_and_epochs.py similarity index 100% rename from examples/ticks_and_spines/date_precision_and_epochs.py rename to examples/ticks/date_precision_and_epochs.py diff --git a/examples/ticks_and_spines/major_minor_demo.py b/examples/ticks/major_minor_demo.py similarity index 100% rename from examples/ticks_and_spines/major_minor_demo.py rename to examples/ticks/major_minor_demo.py diff --git a/examples/ticks_and_spines/scalarformatter.py b/examples/ticks/scalarformatter.py similarity index 100% rename from examples/ticks_and_spines/scalarformatter.py rename to examples/ticks/scalarformatter.py diff --git a/examples/ticks_and_spines/tick-formatters.py b/examples/ticks/tick-formatters.py similarity index 100% rename from examples/ticks_and_spines/tick-formatters.py rename to examples/ticks/tick-formatters.py diff --git a/examples/ticks_and_spines/tick-locators.py b/examples/ticks/tick-locators.py similarity index 100% rename from examples/ticks_and_spines/tick-locators.py rename to examples/ticks/tick-locators.py diff --git a/examples/ticks_and_spines/tick_label_right.py b/examples/ticks/tick_label_right.py similarity index 100% rename from examples/ticks_and_spines/tick_label_right.py rename to examples/ticks/tick_label_right.py diff --git a/examples/ticks_and_spines/tick_labels_from_values.py b/examples/ticks/tick_labels_from_values.py similarity index 100% rename from examples/ticks_and_spines/tick_labels_from_values.py rename to examples/ticks/tick_labels_from_values.py diff --git a/examples/ticks_and_spines/tick_xlabel_top.py b/examples/ticks/tick_xlabel_top.py similarity index 100% rename from examples/ticks_and_spines/tick_xlabel_top.py rename to examples/ticks/tick_xlabel_top.py diff --git a/examples/ticks_and_spines/ticklabels_rotation.py b/examples/ticks/ticklabels_rotation.py similarity index 100% rename from examples/ticks_and_spines/ticklabels_rotation.py rename to examples/ticks/ticklabels_rotation.py diff --git a/examples/ticks_and_spines/README.txt b/examples/ticks_and_spines/README.txt deleted file mode 100644 index e7869c5a08d1..000000000000 --- a/examples/ticks_and_spines/README.txt +++ /dev/null @@ -1,4 +0,0 @@ -.. _ticks_and_spines_examples: - -Ticks and spines -================ diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index 67aff6270815..7ec320ffab33 100644 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -21,8 +21,8 @@ .. seealso:: - :doc:`/gallery/text_labels_and_annotations/date` - - :doc:`/gallery/ticks_and_spines/date_concise_formatter` - - :doc:`/gallery/ticks_and_spines/date_demo_convert` + - :doc:`/gallery/ticks/date_concise_formatter` + - :doc:`/gallery/ticks/date_demo_convert` .. _date-format: @@ -38,7 +38,7 @@ 20 microseconds for the rest of the allowable range of dates (year 0001 to 9999). The epoch can be changed at import time via `.dates.set_epoch` or :rc:`dates.epoch` to other dates if necessary; see -:doc:`/gallery/ticks_and_spines/date_precision_and_epochs` for a discussion. +:doc:`/gallery/ticks/date_precision_and_epochs` for a discussion. .. note:: @@ -144,7 +144,7 @@ * `RRuleLocator`: Locate using a `matplotlib.dates.rrulewrapper`. `.rrulewrapper` is a simple wrapper around dateutil_'s `dateutil.rrule` which allow almost arbitrary date tick specifications. See :doc:`rrule example - `. + `. * `AutoDateLocator`: On autoscale, this class picks the best `DateLocator` (e.g., `RRuleLocator`) to set the view limits and the tick locations. If @@ -271,7 +271,7 @@ def set_epoch(epoch): `~.dates.set_epoch` must be called before any dates are converted (i.e. near the import section) or a RuntimeError will be raised. - See also :doc:`/gallery/ticks_and_spines/date_precision_and_epochs`. + See also :doc:`/gallery/ticks/date_precision_and_epochs`. Parameters ---------- @@ -683,7 +683,7 @@ class ConciseDateFormatter(ticker.Formatter): Examples -------- - See :doc:`/gallery/ticks_and_spines/date_concise_formatter` + See :doc:`/gallery/ticks/date_concise_formatter` .. plot:: @@ -1659,7 +1659,7 @@ class MicrosecondLocator(DateLocator): If you really must use datetime.datetime() or similar and still need microsecond precision, change the time origin via `.dates.set_epoch` to something closer to the dates being plotted. - See :doc:`/gallery/ticks_and_spines/date_precision_and_epochs`. + See :doc:`/gallery/ticks/date_precision_and_epochs`. """ def __init__(self, interval=1, tz=None): diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index fc30977d9b39..7a0380453452 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -118,9 +118,9 @@ the input ``str``. For function input, a `.FuncFormatter` with the input function will be generated and used. -See :doc:`/gallery/ticks_and_spines/major_minor_demo` for an -example of setting major and minor ticks. See the :mod:`matplotlib.dates` -module for more information and examples of using date locators and formatters. +See :doc:`/gallery/ticks/major_minor_demo` for an example of setting major +and minor ticks. See the :mod:`matplotlib.dates` module for more information +and examples of using date locators and formatters. """ import itertools From 6bb6944ac72c3b99beb8ddfab98e09032c0482ae Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 8 Sep 2021 15:33:23 -0400 Subject: [PATCH 085/270] Backport PR #20518: Support sketch_params in pgf backend --- lib/matplotlib/artist.py | 3 +++ lib/matplotlib/backends/backend_pgf.py | 24 +++++++++++++++++++++ lib/matplotlib/tests/test_backend_pgf.py | 27 ++++++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/lib/matplotlib/artist.py b/lib/matplotlib/artist.py index 152c0ea33ff5..185ec79ca8d8 100644 --- a/lib/matplotlib/artist.py +++ b/lib/matplotlib/artist.py @@ -690,6 +690,9 @@ def set_sketch_params(self, scale=None, length=None, randomness=None): The scale factor by which the length is shrunken or expanded (default 16.0) + The PGF backend uses this argument as an RNG seed and not as + described above. Using the same seed yields the same random shape. + .. ACCEPTS: (scale: float, length: float, randomness: float) """ if scale is None: diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 749da559662c..2fa8c3251b12 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -600,6 +600,30 @@ def _print_pgf_path(self, gc, path, transform, rgbFace=None): r"{\pgfqpoint{%fin}{%fin}}" % coords) + # apply pgf decorators + sketch_params = gc.get_sketch_params() if gc else None + if sketch_params is not None: + # Only "length" directly maps to "segment length" in PGF's API. + # PGF uses "amplitude" to pass the combined deviation in both x- + # and y-direction, while matplotlib only varies the length of the + # wiggle along the line ("randomness" and "length" parameters) + # and has a separate "scale" argument for the amplitude. + # -> Use "randomness" as PRNG seed to allow the user to force the + # same shape on multiple sketched lines + scale, length, randomness = sketch_params + if scale is not None: + # make matplotlib and PGF rendering visually similar + length *= 0.5 + scale *= 2 + # PGF guarantees that repeated loading is a no-op + writeln(self.fh, r"\usepgfmodule{decorations}") + writeln(self.fh, r"\usepgflibrary{decorations.pathmorphing}") + writeln(self.fh, r"\pgfkeys{/pgf/decoration/.cd, " + f"segment length = {(length * f):f}in, " + f"amplitude = {(scale * f):f}in}}") + writeln(self.fh, f"\\pgfmathsetseed{{{int(randomness)}}}") + writeln(self.fh, r"\pgfdecoratecurrentpath{random steps}") + def _pgf_path_draw(self, stroke=True, fill=False): actions = [] if stroke: diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index a463c96e61fc..9b5b0b28ee3f 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -337,3 +337,30 @@ def test_minus_signs_with_tex(fig_test, fig_ref, texsystem): mpl.rcParams["pgf.texsystem"] = texsystem fig_test.text(.5, .5, "$-1$") fig_ref.text(.5, .5, "$\N{MINUS SIGN}1$") + + +@pytest.mark.backend("pgf") +def test_sketch_params(): + fig, ax = plt.subplots(figsize=(3, 3)) + ax.set_xticks([]) + ax.set_yticks([]) + ax.set_frame_on(False) + handle, = ax.plot([0, 1]) + handle.set_sketch_params(scale=5, length=30, randomness=42) + + with BytesIO() as fd: + fig.savefig(fd, format='pgf') + buf = fd.getvalue().decode() + + baseline = r"""\pgfpathmoveto{\pgfqpoint{0.375000in}{0.300000in}}% +\pgfpathlineto{\pgfqpoint{2.700000in}{2.700000in}}% +\usepgfmodule{decorations}% +\usepgflibrary{decorations.pathmorphing}% +\pgfkeys{/pgf/decoration/.cd, """ \ + r"""segment length = 0.150000in, amplitude = 0.100000in}% +\pgfmathsetseed{42}% +\pgfdecoratecurrentpath{random steps}% +\pgfusepath{stroke}%""" + # \pgfdecoratecurrentpath must be after the path definition and before the + # path is used (\pgfusepath) + assert baseline in buf From d6706af1bd9a23484e0276e86656c0fc4a799e82 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 9 Sep 2021 22:34:06 +0200 Subject: [PATCH 086/270] Backport PR #21028: Minor homogeneization of markup for MEP titles. --- doc/devel/MEP/MEP15.rst | 6 +++--- doc/devel/MEP/MEP24.rst | 2 +- doc/devel/MEP/MEP27.rst | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/devel/MEP/MEP15.rst b/doc/devel/MEP/MEP15.rst index dc1802e33b8c..8e2f80707429 100644 --- a/doc/devel/MEP/MEP15.rst +++ b/doc/devel/MEP/MEP15.rst @@ -1,6 +1,6 @@ -========================================================================== - MEP15 - Fix axis autoscaling when limits are specified for one axis only -========================================================================== +========================================================================= + MEP15: Fix axis autoscaling when limits are specified for one axis only +========================================================================= .. contents:: :local: diff --git a/doc/devel/MEP/MEP24.rst b/doc/devel/MEP/MEP24.rst index 53f0609f3e9b..b0620ce3dc8f 100644 --- a/doc/devel/MEP/MEP24.rst +++ b/doc/devel/MEP/MEP24.rst @@ -1,5 +1,5 @@ ======================================= - MEP24: negative radius in polar plots + MEP24: Negative radius in polar plots ======================================= .. contents:: diff --git a/doc/devel/MEP/MEP27.rst b/doc/devel/MEP/MEP27.rst index 13ed37cb73cb..d4ea57f1b6a6 100644 --- a/doc/devel/MEP/MEP27.rst +++ b/doc/devel/MEP/MEP27.rst @@ -1,5 +1,5 @@ ====================================== - MEP27: decouple pyplot from backends + MEP27: Decouple pyplot from backends ====================================== .. contents:: From dbb091a278e8bb1f7985988a47e02a3de5c56738 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 9 Sep 2021 22:36:36 +0200 Subject: [PATCH 087/270] Backport PR #20980: FIX: remove colorbar from list of colorbars on axes --- lib/matplotlib/colorbar.py | 6 ++++++ lib/matplotlib/tests/test_colorbar.py | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index d826649af167..a5439bf8ea75 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -992,6 +992,12 @@ def remove(self): If the colorbar was created with ``use_gridspec=True`` the previous gridspec is restored. """ + if hasattr(self.ax, '_colorbar_info'): + parents = self.ax._colorbar_info['parents'] + for a in parents: + if self.ax in a._colorbars: + a._colorbars.remove(self.ax) + self.ax.remove() self.mappable.callbacks.disconnect(self.mappable.colorbar_cid) diff --git a/lib/matplotlib/tests/test_colorbar.py b/lib/matplotlib/tests/test_colorbar.py index 00a6f52698e2..6b691713e7e6 100644 --- a/lib/matplotlib/tests/test_colorbar.py +++ b/lib/matplotlib/tests/test_colorbar.py @@ -221,7 +221,7 @@ def test_colorbar_single_scatter(): ids=['no gridspec', 'with gridspec']) def test_remove_from_figure(use_gridspec): """ - Test `remove_from_figure` with the specified ``use_gridspec`` setting + Test `remove` with the specified ``use_gridspec`` setting """ fig, ax = plt.subplots() sc = ax.scatter([1, 2], [3, 4], cmap="spring") @@ -235,6 +235,23 @@ def test_remove_from_figure(use_gridspec): assert (pre_position.get_points() == post_position.get_points()).all() +def test_remove_from_figure_cl(): + """ + Test `remove` with constrained_layout + """ + fig, ax = plt.subplots(constrained_layout=True) + sc = ax.scatter([1, 2], [3, 4], cmap="spring") + sc.set_array(np.array([5, 6])) + fig.draw_without_rendering() + pre_position = ax.get_position() + cb = fig.colorbar(sc) + cb.remove() + fig.draw_without_rendering() + post_position = ax.get_position() + np.testing.assert_allclose(pre_position.get_points(), + post_position.get_points()) + + def test_colorbarbase(): # smoke test from #3805 ax = plt.gca() From 41a90c6efe5883e321b2fff38ea8e07dbf40f430 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 9 Sep 2021 22:44:30 +0200 Subject: [PATCH 088/270] Backport PR #21017: FIX: Don't subslice lines if non-standard transform --- lib/matplotlib/lines.py | 3 ++- lib/matplotlib/tests/test_lines.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index 9a727f9a8107..e3bfced3cf21 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -664,7 +664,8 @@ def recache(self, always=False): self.axes.name == 'rectilinear' and self.axes.get_xscale() == 'linear' and self._markevery is None and - self.get_clip_on()): + self.get_clip_on() and + self.get_transform() == self.axes.transData): self._subslice = True nanmask = np.isnan(x) if nanmask.any(): diff --git a/lib/matplotlib/tests/test_lines.py b/lib/matplotlib/tests/test_lines.py index 21cb2214051a..f6917a134bb4 100644 --- a/lib/matplotlib/tests/test_lines.py +++ b/lib/matplotlib/tests/test_lines.py @@ -16,6 +16,7 @@ from matplotlib.markers import MarkerStyle from matplotlib.path import Path import matplotlib.pyplot as plt +import matplotlib.transforms as mtransforms from matplotlib.testing.decorators import image_comparison, check_figures_equal @@ -131,6 +132,17 @@ def test_drawstyle_variants(): ax.set(xlim=(0, 2), ylim=(0, 2)) +@check_figures_equal(extensions=('png',)) +def test_no_subslice_with_transform(fig_ref, fig_test): + ax = fig_ref.add_subplot() + x = np.arange(2000) + ax.plot(x + 2000, x) + + ax = fig_test.add_subplot() + t = mtransforms.Affine2D().translate(2000.0, 0.0) + ax.plot(x, x, transform=t+ax.transData) + + def test_valid_drawstyles(): line = mlines.Line2D([], []) with pytest.raises(ValueError): From 083b381f1306f9cd6f89f021218d151fbcfabda8 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 9 Sep 2021 22:44:30 +0200 Subject: [PATCH 089/270] Backport PR #21017: FIX: Don't subslice lines if non-standard transform --- lib/matplotlib/lines.py | 3 ++- lib/matplotlib/tests/test_lines.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index 1203862a3f50..658900da9e91 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -677,7 +677,8 @@ def recache(self, always=False): self.axes.name == 'rectilinear' and self.axes.get_xscale() == 'linear' and self._markevery is None and - self.get_clip_on()): + self.get_clip_on() and + self.get_transform() == self.axes.transData): self._subslice = True nanmask = np.isnan(x) if nanmask.any(): diff --git a/lib/matplotlib/tests/test_lines.py b/lib/matplotlib/tests/test_lines.py index def26456bb36..a9e52ed26850 100644 --- a/lib/matplotlib/tests/test_lines.py +++ b/lib/matplotlib/tests/test_lines.py @@ -16,6 +16,7 @@ from matplotlib.markers import MarkerStyle from matplotlib.path import Path import matplotlib.pyplot as plt +import matplotlib.transforms as mtransforms from matplotlib.testing.decorators import image_comparison, check_figures_equal @@ -131,6 +132,17 @@ def test_drawstyle_variants(): ax.set(xlim=(0, 2), ylim=(0, 2)) +@check_figures_equal(extensions=('png',)) +def test_no_subslice_with_transform(fig_ref, fig_test): + ax = fig_ref.add_subplot() + x = np.arange(2000) + ax.plot(x + 2000, x) + + ax = fig_test.add_subplot() + t = mtransforms.Affine2D().translate(2000.0, 0.0) + ax.plot(x, x, transform=t+ax.transData) + + def test_valid_drawstyles(): line = mlines.Line2D([], []) with pytest.raises(ValueError): From 21b8a812adb334b3381021579492a4365759b8c6 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Fri, 10 Sep 2021 09:02:46 +0200 Subject: [PATCH 090/270] Backport PR #21031: Make date.{converter,interval_multiples} rcvalidators side-effect free. --- .../next_api_changes/behavior/21031-AL.rst | 3 + lib/matplotlib/dates.py | 62 ++++++++----------- lib/matplotlib/rcsetup.py | 25 +------- lib/matplotlib/tests/test_dates.py | 2 +- 4 files changed, 31 insertions(+), 61 deletions(-) create mode 100644 doc/api/next_api_changes/behavior/21031-AL.rst diff --git a/doc/api/next_api_changes/behavior/21031-AL.rst b/doc/api/next_api_changes/behavior/21031-AL.rst new file mode 100644 index 000000000000..ec1a80f9478a --- /dev/null +++ b/doc/api/next_api_changes/behavior/21031-AL.rst @@ -0,0 +1,3 @@ +Setting invalid ``rcParams["date.converter"]`` now raises ValueError +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Previously, invalid values would be ignored with a UserWarning. diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index 7ec320ffab33..0766156d64ab 100644 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -1890,44 +1890,32 @@ def axisinfo(self, unit, axis): default_limits=(datemin, datemax)) -class _rcParam_helper: +class _SwitchableDateConverter: """ - This helper class is so that we can set the converter for dates - via the validator for the rcParams `date.converter` and - `date.interval_multiples`. Never instatiated. + Helper converter-like object that generates and dispatches to + temporary ConciseDateConverter or DateConverter instances based on + :rc:`date.converter` and :rc:`date.interval_multiples`. """ - conv_st = 'auto' - int_mult = True - - @classmethod - def set_converter(cls, s): - """Called by validator for rcParams date.converter""" - if s not in ['concise', 'auto']: - raise ValueError('Converter must be one of "concise" or "auto"') - cls.conv_st = s - cls.register_converters() - - @classmethod - def set_int_mult(cls, b): - """Called by validator for rcParams date.interval_multiples""" - cls.int_mult = b - cls.register_converters() - - @classmethod - def register_converters(cls): - """ - Helper to register the date converters when rcParams `date.converter` - and `date.interval_multiples` are changed. Called by the helpers - above. - """ - if cls.conv_st == 'concise': - converter = ConciseDateConverter - else: - converter = DateConverter + @staticmethod + def _get_converter(): + converter_cls = { + "concise": ConciseDateConverter, "auto": DateConverter}[ + mpl.rcParams["date.converter"]] + interval_multiples = mpl.rcParams["date.interval_multiples"] + return converter_cls(interval_multiples=interval_multiples) + + def axisinfo(self, *args, **kwargs): + return self._get_converter().axisinfo(*args, **kwargs) + + def default_units(self, *args, **kwargs): + return self._get_converter().default_units(*args, **kwargs) + + def convert(self, *args, **kwargs): + return self._get_converter().convert(*args, **kwargs) + - interval_multiples = cls.int_mult - convert = converter(interval_multiples=interval_multiples) - units.registry[np.datetime64] = convert - units.registry[datetime.date] = convert - units.registry[datetime.datetime] = convert +units.registry[np.datetime64] = \ + units.registry[datetime.date] = \ + units.registry[datetime.datetime] = \ + _SwitchableDateConverter() diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index a8a54c10dac6..9f6b9d53ca62 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -149,26 +149,6 @@ def validate_bool(b): raise ValueError('Could not convert "%s" to bool' % b) -def _validate_date_converter(s): - if s is None: - return - s = validate_string(s) - if s not in ['auto', 'concise']: - _api.warn_external(f'date.converter string must be "auto" or ' - f'"concise", not "{s}". Check your matplotlibrc') - return - import matplotlib.dates as mdates - mdates._rcParam_helper.set_converter(s) - - -def _validate_date_int_mult(s): - if s is None: - return - s = validate_bool(s) - import matplotlib.dates as mdates - mdates._rcParam_helper.set_int_mult(s) - - def validate_axisbelow(s): try: return validate_bool(s) @@ -1036,10 +1016,9 @@ def _convert_validator_spec(key, conv): "date.autoformatter.second": validate_string, "date.autoformatter.microsecond": validate_string, - # 'auto', 'concise', 'auto-noninterval' - 'date.converter': _validate_date_converter, + 'date.converter': ['auto', 'concise'], # for auto date locator, choose interval_multiples - 'date.interval_multiples': _validate_date_int_mult, + 'date.interval_multiples': validate_bool, # legend properties "legend.fancybox": validate_bool, diff --git a/lib/matplotlib/tests/test_dates.py b/lib/matplotlib/tests/test_dates.py index 3a38516c7272..96a3db173053 100644 --- a/lib/matplotlib/tests/test_dates.py +++ b/lib/matplotlib/tests/test_dates.py @@ -1152,7 +1152,7 @@ def test_change_converter(): fig.canvas.draw() assert ax.get_xticklabels()[0].get_text() == 'Jan 01 2020' assert ax.get_xticklabels()[1].get_text() == 'Jan 15 2020' - with pytest.warns(UserWarning) as rec: + with pytest.raises(ValueError): plt.rcParams['date.converter'] = 'boo' From 5c6072856cd6666ad99398c3be686ec841dcc910 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Fri, 10 Sep 2021 09:18:04 +0200 Subject: [PATCH 091/270] Backport PR #20949: Improve formatting of imshow() cursor data independently of colorbar. --- lib/matplotlib/artist.py | 14 ++++++++------ lib/matplotlib/cbook/__init__.py | 18 ++++++++++++++++++ lib/matplotlib/projections/polar.py | 14 ++++---------- lib/matplotlib/tests/test_image.py | 18 +++++------------- lib/matplotlib/ticker.py | 11 +---------- 5 files changed, 36 insertions(+), 39 deletions(-) diff --git a/lib/matplotlib/artist.py b/lib/matplotlib/artist.py index 185ec79ca8d8..7cf22b95623f 100644 --- a/lib/matplotlib/artist.py +++ b/lib/matplotlib/artist.py @@ -12,6 +12,7 @@ import matplotlib as mpl from . import _api, cbook +from .cm import ScalarMappable from .path import Path from .transforms import (Bbox, IdentityTransform, Transform, TransformedBbox, TransformedPatchPath, TransformedPath) @@ -1261,17 +1262,18 @@ def format_cursor_data(self, data): -------- get_cursor_data """ - if np.ndim(data) == 0 and getattr(self, "colorbar", None): + if np.ndim(data) == 0 and isinstance(self, ScalarMappable): # This block logically belongs to ScalarMappable, but can't be # implemented in it because most ScalarMappable subclasses inherit # from Artist first and from ScalarMappable second, so # Artist.format_cursor_data would always have precedence over # ScalarMappable.format_cursor_data. - return ( - "[" - + cbook.strip_math( - self.colorbar.formatter.format_data_short(data)).strip() - + "]") + n = self.cmap.N + # Midpoints of neighboring color intervals. + neighbors = self.norm.inverse( + (int(self.norm(data) * n) + np.array([0, 1])) / n) + delta = abs(neighbors - data).max() + return "[{:-#.{}g}]".format(data, cbook._g_sig_digits(data, delta)) else: try: data[0] diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py index 6d181c43107d..9d0fcadc431c 100644 --- a/lib/matplotlib/cbook/__init__.py +++ b/lib/matplotlib/cbook/__init__.py @@ -12,6 +12,7 @@ import functools import gzip import itertools +import math import operator import os from pathlib import Path @@ -2206,6 +2207,23 @@ def _format_approx(number, precision): return f'{number:.{precision}f}'.rstrip('0').rstrip('.') or '0' +def _g_sig_digits(value, delta): + """ + Return the number of significant digits to %g-format *value*, assuming that + it is known with an error of *delta*. + """ + # If e.g. value = 45.67 and delta = 0.02, then we want to round to 2 digits + # after the decimal point (floor(log10(0.02)) = -2); 45.67 contributes 2 + # digits before the decimal point (floor(log10(45.67)) + 1 = 2): the total + # is 4 significant digits. A value of 0 contributes 1 "digit" before the + # decimal point. + # For inf or nan, the precision doesn't matter. + return max( + 0, + (math.floor(math.log10(abs(value))) + 1 if value else 1) + - math.floor(math.log10(delta))) if math.isfinite(value) else 0 + + def _unikey_or_keysym_to_mplkey(unikey, keysym): """ Convert a Unicode key or X keysym to a Matplotlib key name. diff --git a/lib/matplotlib/projections/polar.py b/lib/matplotlib/projections/polar.py index 322b84c6468d..7ce6292fb897 100644 --- a/lib/matplotlib/projections/polar.py +++ b/lib/matplotlib/projections/polar.py @@ -1399,16 +1399,10 @@ def format_coord(self, theta, r): # (as for linear axes), but for theta, use f-formatting as scientific # notation doesn't make sense and the trailing dot is ugly. def format_sig(value, delta, opt, fmt): - digits_post_decimal = math.floor(math.log10(delta)) - digits_offset = ( - # For "f", only count digits after decimal point. - 0 if fmt == "f" - # For "g", offset by digits before the decimal point. - else math.floor(math.log10(abs(value))) + 1 if value - # For "g", 0 contributes 1 "digit" before the decimal point. - else 1) - fmt_prec = max(0, digits_offset - digits_post_decimal) - return f"{value:-{opt}.{fmt_prec}{fmt}}" + # For "f", only count digits after decimal point. + prec = (max(0, -math.floor(math.log10(delta))) if fmt == "f" else + cbook._g_sig_digits(value, delta)) + return f"{value:-{opt}.{prec}{fmt}}" return ('\N{GREEK SMALL LETTER THETA}={}\N{GREEK SMALL LETTER PI} ' '({}\N{DEGREE SIGN}), r={}').format( diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index 2e7fae6c58d8..9aab4e60a7a2 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -337,11 +337,11 @@ def test_cursor_data(): @pytest.mark.parametrize( - "data, text_without_colorbar, text_with_colorbar", [ - ([[10001, 10000]], "[1e+04]", "[10001]"), - ([[.123, .987]], "[0.123]", "[0.123]"), + "data, text", [ + ([[10001, 10000]], "[10001.000]"), + ([[.123, .987]], "[0.123]"), ]) -def test_format_cursor_data(data, text_without_colorbar, text_with_colorbar): +def test_format_cursor_data(data, text): from matplotlib.backend_bases import MouseEvent fig, ax = plt.subplots() @@ -350,15 +350,7 @@ def test_format_cursor_data(data, text_without_colorbar, text_with_colorbar): xdisp, ydisp = ax.transData.transform([0, 0]) event = MouseEvent('motion_notify_event', fig.canvas, xdisp, ydisp) assert im.get_cursor_data(event) == data[0][0] - assert im.format_cursor_data(im.get_cursor_data(event)) \ - == text_without_colorbar - - fig.colorbar(im) - fig.canvas.draw() # This is necessary to set up the colorbar formatter. - - assert im.get_cursor_data(event) == data[0][0] - assert im.format_cursor_data(im.get_cursor_data(event)) \ - == text_with_colorbar + assert im.format_cursor_data(im.get_cursor_data(event)) == text @image_comparison(['image_clip'], style='mpl20') diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 7a0380453452..6d8fa5419bbf 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -655,16 +655,7 @@ def format_data_short(self, value): # Rough approximation: no more than 1e4 divisions. a, b = self.axis.get_view_interval() delta = (b - a) / 1e4 - # If e.g. value = 45.67 and delta = 0.02, then we want to round to - # 2 digits after the decimal point (floor(log10(0.02)) = -2); - # 45.67 contributes 2 digits before the decimal point - # (floor(log10(45.67)) + 1 = 2): the total is 4 significant digits. - # A value of 0 contributes 1 "digit" before the decimal point. - sig_digits = max( - 0, - (math.floor(math.log10(abs(value))) + 1 if value else 1) - - math.floor(math.log10(delta))) - fmt = f"%-#.{sig_digits}g" + fmt = "%-#.{}g".format(cbook._g_sig_digits(value, delta)) return self._format_maybe_minus_and_locale(fmt, value) def format_data(self, value): From dedc592d0a76386419d08cf4ff9bcf5d15519119 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sat, 11 Sep 2021 20:31:11 +0200 Subject: [PATCH 092/270] Backport PR #21041: Prefer "none" to "None" in docs, examples and comments. --- examples/axes_grid1/inset_locator_demo.py | 6 +++--- .../marker_reference.py | 2 +- .../shapes_and_collections/compound_path.py | 2 +- examples/statistics/errorbars_and_boxes.py | 4 ++-- lib/matplotlib/axes/_axes.py | 3 +-- lib/matplotlib/axes/_base.py | 2 +- lib/matplotlib/lines.py | 18 ++++++++-------- lib/matplotlib/patches.py | 21 ++++++++----------- lib/mpl_toolkits/mplot3d/axes3d.py | 3 +-- 9 files changed, 28 insertions(+), 33 deletions(-) diff --git a/examples/axes_grid1/inset_locator_demo.py b/examples/axes_grid1/inset_locator_demo.py index 16e3cab5f964..974783c04309 100644 --- a/examples/axes_grid1/inset_locator_demo.py +++ b/examples/axes_grid1/inset_locator_demo.py @@ -69,7 +69,7 @@ bbox_transform=ax.transAxes, loc=3) # For visualization purposes we mark the bounding box by a rectangle -ax.add_patch(plt.Rectangle((.2, .4), .6, .5, ls="--", ec="c", fc="None", +ax.add_patch(plt.Rectangle((.2, .4), .6, .5, ls="--", ec="c", fc="none", transform=ax.transAxes)) # We set the axis limits to something other than the default, in order to not @@ -89,9 +89,9 @@ bbox_transform=ax3.transAxes) # For visualization purposes we mark the bounding box by a rectangle -ax2.add_patch(plt.Rectangle((0, 0), 1, 1, ls="--", lw=2, ec="c", fc="None")) +ax2.add_patch(plt.Rectangle((0, 0), 1, 1, ls="--", lw=2, ec="c", fc="none")) ax3.add_patch(plt.Rectangle((.7, .5), .3, .5, ls="--", lw=2, - ec="c", fc="None")) + ec="c", fc="none")) # Turn ticklabels off for axi in [axins2, axins3, ax2, ax3]: diff --git a/examples/lines_bars_and_markers/marker_reference.py b/examples/lines_bars_and_markers/marker_reference.py index 450906637c01..98af2519124c 100644 --- a/examples/lines_bars_and_markers/marker_reference.py +++ b/examples/lines_bars_and_markers/marker_reference.py @@ -117,7 +117,7 @@ def split_list(a_list): fig.suptitle('Mathtext markers', fontsize=14) fig.subplots_adjust(left=0.4) -marker_style.update(markeredgecolor="None", markersize=15) +marker_style.update(markeredgecolor="none", markersize=15) markers = ["$1$", r"$\frac{1}{2}$", "$f$", "$\u266B$", r"$\mathcal{A}$"] for y, marker in enumerate(markers): diff --git a/examples/shapes_and_collections/compound_path.py b/examples/shapes_and_collections/compound_path.py index 76a11703ab9b..d721eaf1c392 100644 --- a/examples/shapes_and_collections/compound_path.py +++ b/examples/shapes_and_collections/compound_path.py @@ -23,7 +23,7 @@ path = Path(vertices, codes) -pathpatch = PathPatch(path, facecolor='None', edgecolor='green') +pathpatch = PathPatch(path, facecolor='none', edgecolor='green') fig, ax = plt.subplots() ax.add_patch(pathpatch) diff --git a/examples/statistics/errorbars_and_boxes.py b/examples/statistics/errorbars_and_boxes.py index ac0d7cb6cd66..a8bdd7a46384 100644 --- a/examples/statistics/errorbars_and_boxes.py +++ b/examples/statistics/errorbars_and_boxes.py @@ -40,7 +40,7 @@ def make_error_boxes(ax, xdata, ydata, xerror, yerror, facecolor='r', - edgecolor='None', alpha=0.5): + edgecolor='none', alpha=0.5): # Loop over data points; create box from errors at each point errorboxes = [Rectangle((x - xe[0], y - ye[0]), xe.sum(), ye.sum()) @@ -55,7 +55,7 @@ def make_error_boxes(ax, xdata, ydata, xerror, yerror, facecolor='r', # Plot errorbars artists = ax.errorbar(xdata, ydata, xerr=xerror, yerr=yerror, - fmt='None', ecolor='k') + fmt='none', ecolor='k') return artists diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 257ae2fe4839..cef0f8c3c88d 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -3317,8 +3317,7 @@ def errorbar(self, x, y, yerr=None, xerr=None, %(Line2D:kwdoc)s """ kwargs = cbook.normalize_kwargs(kwargs, mlines.Line2D) - # anything that comes in as 'None', drop so the default thing - # happens down stream + # Drop anything that comes in as None to use the default instead. kwargs = {k: v for k, v in kwargs.items() if v is not None} kwargs.setdefault('zorder', 2) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index bcac6bbbf331..97ed781b00f6 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -1291,7 +1291,7 @@ def cla(self): self.patch = self._gen_axes_patch() self.patch.set_figure(self.figure) self.patch.set_facecolor(self._facecolor) - self.patch.set_edgecolor('None') + self.patch.set_edgecolor('none') self.patch.set_linewidth(0) self.patch.set_transform(self.transAxes) diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index e3bfced3cf21..b4614868b784 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -1093,15 +1093,15 @@ def set_linestyle(self, ls): - A string: - =============================== ================= - Linestyle Description - =============================== ================= - ``'-'`` or ``'solid'`` solid line - ``'--'`` or ``'dashed'`` dashed line - ``'-.'`` or ``'dashdot'`` dash-dotted line - ``':'`` or ``'dotted'`` dotted line - ``'None'`` or ``' '`` or ``''`` draw nothing - =============================== ================= + ========================================== ================= + linestyle description + ========================================== ================= + ``'-'`` or ``'solid'`` solid line + ``'--'`` or ``'dashed'`` dashed line + ``'-.'`` or ``'dashdot'`` dash-dotted line + ``':'`` or ``'dotted'`` dotted line + ``'none'``, ``'None'``, ``' '``, or ``''`` draw nothing + ========================================== ================= - Alternatively a dash tuple of the following form can be provided:: diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index fa54b6f613fd..253e8abe2ef7 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -419,18 +419,15 @@ def set_linestyle(self, ls): """ Set the patch linestyle. - =========================== ================= - linestyle description - =========================== ================= - ``'-'`` or ``'solid'`` solid line - ``'--'`` or ``'dashed'`` dashed line - ``'-.'`` or ``'dashdot'`` dash-dotted line - ``':'`` or ``'dotted'`` dotted line - ``'None'`` draw nothing - ``'none'`` draw nothing - ``' '`` draw nothing - ``''`` draw nothing - =========================== ================= + ========================================== ================= + linestyle description + ========================================== ================= + ``'-'`` or ``'solid'`` solid line + ``'--'`` or ``'dashed'`` dashed line + ``'-.'`` or ``'dashdot'`` dash-dotted line + ``':'`` or ``'dotted'`` dotted line + ``'none'``, ``'None'``, ``' '``, or ``''`` draw nothing + ========================================== ================= Alternatively a dash tuple of the following form can be provided:: diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index d4eef7ca77e6..a738c4a38a5f 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -3033,8 +3033,7 @@ def errorbar(self, x, y, z, zerr=None, yerr=None, xerr=None, fmt='', had_data = self.has_data() kwargs = cbook.normalize_kwargs(kwargs, mlines.Line2D) - # anything that comes in as 'None', drop so the default thing - # happens down stream + # Drop anything that comes in as None to use the default instead. kwargs = {k: v for k, v in kwargs.items() if v is not None} kwargs.setdefault('zorder', 2) From fe72506f6e01ef2476d7434644d66dccbdf97ba9 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sat, 11 Sep 2021 22:28:17 +0200 Subject: [PATCH 093/270] Backport PR #21040: Document `handleheight` parameter of `Legend` constructor --- lib/matplotlib/legend.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/matplotlib/legend.py b/lib/matplotlib/legend.py index 6d956a29ee48..2fe1bd5c3369 100644 --- a/lib/matplotlib/legend.py +++ b/lib/matplotlib/legend.py @@ -262,6 +262,9 @@ def _update_bbox_to_anchor(self, loc_in_canvas): handlelength : float, default: :rc:`legend.handlelength` The length of the legend handles, in font-size units. +handleheight : float, default: :rc:`legend.handleheight` + The height of the legend handles, in font-size units. + handletextpad : float, default: :rc:`legend.handletextpad` The pad between the legend handle and text, in font-size units. From 15b9fcf4bf4d2de8eecb0360075152c8c569588f Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sat, 11 Sep 2021 22:54:31 +0200 Subject: [PATCH 094/270] Backport PR #21044: Support for forward/back mousebuttons on WX backend --- lib/matplotlib/backends/backend_wx.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index da78f69d9e8e..bc80d0f0b564 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -515,6 +515,12 @@ def __init__(self, parent, id, figure=None): self.Bind(wx.EVT_RIGHT_DOWN, self._onMouseButton) self.Bind(wx.EVT_RIGHT_DCLICK, self._onMouseButton) self.Bind(wx.EVT_RIGHT_UP, self._onMouseButton) + self.Bind(wx.EVT_MOUSE_AUX1_DOWN, self._onMouseButton) + self.Bind(wx.EVT_MOUSE_AUX1_UP, self._onMouseButton) + self.Bind(wx.EVT_MOUSE_AUX2_DOWN, self._onMouseButton) + self.Bind(wx.EVT_MOUSE_AUX2_UP, self._onMouseButton) + self.Bind(wx.EVT_MOUSE_AUX1_DCLICK, self._onMouseButton) + self.Bind(wx.EVT_MOUSE_AUX2_DCLICK, self._onMouseButton) self.Bind(wx.EVT_MOUSEWHEEL, self._onMouseWheel) self.Bind(wx.EVT_MOTION, self._onMotion) self.Bind(wx.EVT_LEAVE_WINDOW, self._onLeave) @@ -766,6 +772,8 @@ def _onMouseButton(self, event): wx.MOUSE_BTN_LEFT: MouseButton.LEFT, wx.MOUSE_BTN_MIDDLE: MouseButton.MIDDLE, wx.MOUSE_BTN_RIGHT: MouseButton.RIGHT, + wx.MOUSE_BTN_AUX1: MouseButton.BACK, + wx.MOUSE_BTN_AUX2: MouseButton.FORWARD, } button = event.GetButton() button = button_map.get(button, button) From a99befa840761ad1f341dd6cacecfacfabca1d06 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 12 Sep 2021 09:12:49 +0200 Subject: [PATCH 095/270] Backport PR #20867: "inner" index reorganization --- .github/FUNDING.yml | 2 +- doc/_static/mpl.css | 8 ++ doc/_templates/cheatsheet_sidebar.html | 9 ++ doc/_templates/donate_sidebar.html | 6 +- doc/_templates/mpl_nav_bar.html | 24 +++++ doc/_templates/sidebar_versions.html | 9 -- doc/conf.py | 8 +- doc/contents.rst | 9 +- doc/faq/index.rst | 6 +- doc/index.rst | 122 +++++++++++++++++++------ doc/users/backmatter.rst | 11 +++ doc/users/explain.rst | 10 ++ doc/users/fonts.rst | 8 +- doc/users/index.rst | 29 +++--- examples/user_interfaces/test.bmp | Bin 0 -> 800054 bytes requirements/doc/doc-requirements.txt | 7 +- 16 files changed, 198 insertions(+), 70 deletions(-) create mode 100644 doc/_templates/cheatsheet_sidebar.html create mode 100644 doc/_templates/mpl_nav_bar.html create mode 100644 doc/users/backmatter.rst create mode 100644 doc/users/explain.rst create mode 100644 examples/user_interfaces/test.bmp diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 2bef7ab95a56..5c9afed3c02b 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,3 @@ # These are supported funding model platforms -github: [numfocus] +github: [matplotlib, numfocus] custom: https://numfocus.org/donate-to-matplotlib diff --git a/doc/_static/mpl.css b/doc/_static/mpl.css index 88c620d559e8..b5ac4b6ddd3a 100644 --- a/doc/_static/mpl.css +++ b/doc/_static/mpl.css @@ -212,3 +212,11 @@ table.property-table th, table.property-table td { padding: 4px 10px; } + +.donate-button { + margin: 1em 0; +} + +.sphinxsidebarwrapper { + margin: 0 1em; +} diff --git a/doc/_templates/cheatsheet_sidebar.html b/doc/_templates/cheatsheet_sidebar.html new file mode 100644 index 000000000000..615c2bc4cd04 --- /dev/null +++ b/doc/_templates/cheatsheet_sidebar.html @@ -0,0 +1,9 @@ + +
    +

    Matplotlib cheatsheets

    + + Matplotlib cheatsheets + +
    diff --git a/doc/_templates/donate_sidebar.html b/doc/_templates/donate_sidebar.html index fc7310b70088..02d5ff6fc46c 100644 --- a/doc/_templates/donate_sidebar.html +++ b/doc/_templates/donate_sidebar.html @@ -1,6 +1,8 @@ - - -
    -

    Matplotlib cheatsheets

    - - Matplotlib cheatsheets - -
    diff --git a/doc/conf.py b/doc/conf.py index 00f7ed7c5ea2..77b879d6f371 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -71,12 +71,15 @@ 'sphinxext.skip_deprecated', 'sphinxext.redirect_from', 'sphinx_copybutton', + 'sphinx_panels', ] exclude_patterns = [ 'api/prev_api_changes/api_changes_*/*', ] +panels_add_bootstrap_css = False + def _check_dependencies(): names = { @@ -312,8 +315,9 @@ def _check_dependencies(): "url": "https://twitter.com/matplotlib/", "icon": "fab fa-twitter-square", }, - ], + "show_prev_next": False, + "navbar_center": ["mpl_nav_bar.html"], } include_analytics = False if include_analytics: @@ -341,8 +345,10 @@ def _check_dependencies(): # Custom sidebar templates, maps page names to templates. html_sidebars = { "index": [ + 'search-field.html', # 'sidebar_announcement.html', "sidebar_versions.html", + "cheatsheet_sidebar.html", "donate_sidebar.html", ], # '**': ['localtoc.html', 'pagesource.html'] diff --git a/doc/contents.rst b/doc/contents.rst index 37fd17172ce2..f9d10936c7fc 100644 --- a/doc/contents.rst +++ b/doc/contents.rst @@ -1,4 +1,4 @@ - +.. _complete_sitemap: Contents ======== @@ -15,13 +15,10 @@ Contents :maxdepth: 2 users/installing.rst - plot_types/index.rst - gallery/index.rst - tutorials/index.rst - api/index.rst users/index.rst + users/backmatter.rst devel/index.rst - Third-party packages + users/release_notes.rst .. only:: html diff --git a/doc/faq/index.rst b/doc/faq/index.rst index def68fc84c71..bb477de21f0e 100644 --- a/doc/faq/index.rst +++ b/doc/faq/index.rst @@ -1,8 +1,8 @@ .. _faq-index: -################## -The Matplotlib FAQ -################## +###### +How-to +###### .. only:: html diff --git a/doc/index.rst b/doc/index.rst index 3b18def1db3c..9d77ba0a4d39 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -4,41 +4,109 @@ .. module:: matplotlib -Matplotlib documentation ------------------------- -Release: |release| +Matplotlib |release| documentation +---------------------------------- Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. -Learn -===== - -- :doc:`Quick-start Guide ` -- Basic :doc:`Plot Types ` and :doc:`Example Gallery ` -- `Introductory Tutorials <../tutorials/index.html#introductory>`_ -- :doc:`External Learning Resources ` - -Reference -========= +Installation +============ -- :doc:`API Reference ` +.. panels:: + :card: + install-card + :column: col-lg-6 col-md-6 col-sm-12 col-xs-12 p-3 - - :doc:`pyplot API `: top-level interface to create - Figures (`.pyplot.figure`) and Subplots (`.pyplot.subplots`, - `.pyplot.subplot_mosaic`) - - :doc:`Axes API ` for *most* plotting methods - - :doc:`Figure API ` for figure-level methods + Installing using `conda `__ + ^^^^^^^^^^^^^^^^^^^^^^ -How-tos -======= -- :doc:`Installation Guide ` -- :doc:`Contributing to Matplotlib ` -- :doc:`Matplotlib FAQ ` -Understand how Matplotlib works -=============================== + .. code-block:: bash -- Many of the :doc:`Tutorials ` have explanatory material + conda install matplotlib + + --- + + Installing using `pip `__ + ^^^^^^^^^^^^^^^^^^^^ + + + .. code-block:: bash + + pip install matplotlib + + +Further details are available in the :doc:`Installation Guide `. + + +Learning resources +================== + + +.. panels:: + + Tutorials + ^^^^^^^^^ + + - :doc:`Quick-start Guide ` + - :doc:`Plot Types ` + - `Introductory Tutorials <../tutorials/index.html#introductory>`_ + - :doc:`External Learning Resources ` + + --- + + How-tos + ^^^^^^^ + - :doc:`Example Gallery ` + - :doc:`Matplotlib FAQ ` + + --- + + Understand how Matplotlib works + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + - The :ref:`users-guide-explain` section of the :doc:`Users guide ` + - Many of the :ref:`Intermediate ` and + :ref:`Advanced ` Tutorials + have explanatory material + + --- + + Reference + ^^^^^^^^^ + + - :doc:`API Reference ` + - :doc:`Axes API ` for *most* plotting methods + - :doc:`Figure API ` for figure-level methods + - Top-level interfaces to create: + + - Figures (`.pyplot.figure`) + - Subplots (`.pyplot.subplots`, `.pyplot.subplot_mosaic`) + + + +Third-party packages +-------------------- + +There are many `Third-party packages +`_ built on top of and extending +Matplotlib. + + +Contributing +------------ + +Matplotlib is a community project maitained for and by its users. There are many ways +you can help! + +- Help other users `on discourse `__ +- report a bug or request a feature `on GitHub `__ +- or improve the :ref:`documentation and code ` + + +Site map +-------- + +The :ref:`complete contents of the docs `. diff --git a/doc/users/backmatter.rst b/doc/users/backmatter.rst new file mode 100644 index 000000000000..8d9fc0407d6f --- /dev/null +++ b/doc/users/backmatter.rst @@ -0,0 +1,11 @@ + +Project Information +------------------- + +.. toctree:: + :maxdepth: 1 + + license.rst + ../citing.rst + credits.rst + history.rst diff --git a/doc/users/explain.rst b/doc/users/explain.rst new file mode 100644 index 000000000000..d9d7a8474dbb --- /dev/null +++ b/doc/users/explain.rst @@ -0,0 +1,10 @@ +.. _users-guide-explain: + +Explanations +------------ + +.. toctree:: + :maxdepth: 1 + + interactive.rst + fonts.rst diff --git a/doc/users/fonts.rst b/doc/users/fonts.rst index e385c98284c0..1b9861df7414 100644 --- a/doc/users/fonts.rst +++ b/doc/users/fonts.rst @@ -1,16 +1,16 @@ -Fonts in Matplotlib Text Engine +Fonts in Matplotlib text engine =============================== Matplotlib needs fonts to work with its text engine, some of which are shipped alongside the installation. However, users can configure the default fonts, or -even provide their own custom fonts! For more details, see :doc:`Customizing +even provide their own custom fonts! For more details, see :doc:`Customizing text properties `. However, Matplotlib also provides an option to offload text rendering to a TeX engine (``usetex=True``), see :doc:`Text rendering with LaTeX `. -Font Specifications +Font specifications ------------------- Fonts have a long and sometimes incompatible history in computing, leading to different platforms supporting different types of fonts. In practice, there are @@ -40,7 +40,7 @@ fonts', more about which is explained later in the guide): NOTE: Adobe will disable support for authoring with Type 1 fonts in January 2023. `Read more here. `_ -Special Mentions +Special mentions ^^^^^^^^^^^^^^^^ Other font specifications which Matplotlib supports: diff --git a/doc/users/index.rst b/doc/users/index.rst index c4ec864df787..32d70d3537fe 100644 --- a/doc/users/index.rst +++ b/doc/users/index.rst @@ -1,23 +1,24 @@ .. _users-guide-index: -############ -User's guide -############ +########### +Usage Guide +########### .. only:: html :Release: |version| :Date: |today| + + + .. toctree:: - :maxdepth: 2 - - interactive.rst - fonts.rst - release_notes.rst - license.rst - ../citing.rst - ../resources/index.rst - ../faq/index.rst - credits.rst - history.rst + :maxdepth: 2 + + ../plot_types/index.rst + ../tutorials/index.rst + ../gallery/index.rst + explain.rst + ../faq/index.rst + ../api/index.rst + ../resources/index.rst diff --git a/examples/user_interfaces/test.bmp b/examples/user_interfaces/test.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ae58370451a8e036ff214bef4c9cd1b17533aa7a GIT binary patch literal 800054 zcmeI53wRaPx%aUsP>&*7t%?c)0#)#OP_$I2)rtiQpFKrek4Ss^VWsp_TeS_>6psc3 z1T12yQc$a+v~p1r!ad=BPapw8xC9805N;s}xsmXGc?b8fbD!DSmzlkP>v{IG=dxz4 zcm4j8{P(Q2X68pfec=8p8fki<;`6uzfx4->udH?!u{ZFQUXIqAgzzcoT)qaz4>{`u#I=YII%hq80$PI>Wk`wDJdytp0Q)c8fDC%KVPk&z)w zmoAn2?z>Ogw{I`S#l^mcX&z@c-qE8+%c4b#WZ%AhvSrH_`Nc1OVf=60v15l>rjz)3 zg8IP^eqj9H^Q?Qm1Ibs*PD)BLKKg%f;>3x@^1*`#jq3Hh)$`Yr_V3>>mtTIly!P5_ z#<@Fn>QrgmxUs~?$9u9!eR`Q0eORy?@28)BYW%HfoZjcI`j02Q^2#fckdR=UyZX2J z*kg~$wbx!NIXO9=EDid$8}p<|lVsk!d9r8E9^-$)OE0}7-}=_KjK3>SAWmZJiRsyA zpOvm%yLwhDeFuv1;K76Cs;jOt^z+tNe*=4x)BgW@;^Nzx1oV3R_rL$W8C-dJx#;iw zF=NJ<+q@T^dg>|Z)2EO3CVA+ghvc`v{jIT0uN`l=;ReI+J(i@y#o_kLE_U&6^ zh_~Ewi|B7~?=))ED7ovdyNpeGU8#Tfdfnumx_9p`FTVJq_a@uRzQpUPWc>K?#&6+G zn>Kki)%mU0IMb$0t20l1I~x+OciBJx`Ol5(blv7uz6AvZ#&4#{lP7zJUhA?y_<9#^ z#cLjZ_+ioOMej6Y#tb8F-R3X7yvwg`*-E^gWA%5i_6ILmu)wpa&hIW=x>V{@t248W zopxgOE>`=$9(?dYW0O-EtGC{E+ijxbT~?Am8LOw?eDlqs{YUksQ2zg|FE;jvmcWrC zM-1;>yLN4*K(s$ne?!-lv~OLn8N8GB2Y&av-!(RApP&BSA3b{1JB#%1-(U2%WkZrL z@p{*%eGYo1ohh4OszCElu(b<9fVL3xkm>-CRktY7;oZomC@x&QwAMfd0v?B^RcY%qSy>9=>^w_auX4B*1 z;*9yJ`Wsc}0qEG5&TY-h%QN%%YrzU*og1nBTAMd-7Cl#g{p(*Fa{zQMh$dhDCVY+G zO1$1>Yiv57;)^f7@ZK!JV65Yuy?ghTZr!?7s=Mk+DF6RfjfHh*5%8t&E0p~`zQkLV zxc;Bhxwl_`{k6GE=L_q+6rJO)^Y-<(vXyaQvw&I_e2G`bq4j@?{!i9EI34#$O-(gx z@LbzEZ9KyhppH-L{Q=%7P<*}Xu=2m#t^MtucIy9p{rl6o;hv=PQT4iA=eX;f(`TM} zMm+NYJ$d}~ZH2LC99r)a(RnmFcD{P`YBL01{wBI32I{B%P0|bEW(> zAI?s^o)|pedd+?1l~)?qz@BaDH#!GD5XmlI^>h7gQCsrNhjS`lom-)Nbv)gZ0?F4? zhn4@`Iv-B&uk=oOFH+U{a1A-Xyvwd@*-E@M9e>9icZl8t;YsQ>ci(-tXEmVTR$}(} zx%NrdmhApb)K*S?+pWY~wG8c_)48w*4jeFd1&guXlb|stCMKG7S6$FC%TWIRtr`#O z&LW`qj_CbdIxk4?iPCE;yE8EbWX1J z1L`%VKkrww6R%#c==i=~&+7ekzxvg$jMxqzK5RBi{pN`$o~U$B(5X|W%>4~nu*+Bd zT>IC(?_a5UFT9iZo;-Q7QmopSpy!9S!;=EVSNlPS4<9ab=FBnv4_2Mm>8aoI?YUp= zkAM85aqjAMuEtvRelse+zqJ@O+2*|F0(wzMV_p-FM$L=3?kIwElLkI{sNTa($kR-b1DN zwSTp?=gDY)oAzz%^JJ{vk5RR*n%3>atIvqgd!zL?iheYfs_j$1(ci`1AMb0nnqsiC z%}%`f_w5~rE-Pp6q}S;BydEd;t?ij7`Wzfj3KUsq%P@0VYGY2Ht+eI7bT-21nO)}>xk^?cF4O@Af3F?;;HYE0^x z-pMJ9YdSYIcI^l8q(Cv&`FA=`{)#KEFvj|{k5K0y)R#j2|F^#Q*be~+KmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*!7NkHE@rt>}h z@$Ru;#7(?`r3_#AdK2J$@TTGaWw-J5KLJYgCjos|n%>W$-)>068(5X#3tw*noDbeK z{J-orzWygbiT)(uw)2U2{i%NSvfx{ti9ff%*Pk@2mj&PIOxO}R1UUZ#t2KP#>rH_3 z!JCHvm*MMwrj!^Q0{YBFeV(B{<516IUp{)g_P6V|FUJS_7~=I!XRA8F7rx%-3g?46 z&Ik1X)yn%hyuooHYVj8V&)-_rXECx~`B|^pb{RfBKVj?%cUjo?rg* zm(sImPjj1IkN^Jnzc<(Qxw|*rbd!u3GsfIj-vS!eM~M9pfB*!-p8#Iqo5oiB{NaZm zmX}_7sZs?qX3UW0&6^wBN=izM>-DO?3!Z!KIqBQCZ>8hvT0z6Q=&%n05P(2r5Wow3 z)7grjw{PEGVq#({RS+8+YmC7c78c5pBS(zowQJW_%A@`Bdfi@IDlRUr^qh9jGkaA_ zUsK`fBcdM?1Rwwb2)L5~e(sxYq4e|U=;#{f<@xI8Wu-;3YRXS#@$2`=iGAyQ1Hw@d zfB*y_5K;p8xo`Nb_<5lE+x>lgUUcS|tepIWEckP4i5=Qj_OG5H=g*(_4Gc#?00Izz zKu8GS=e}XL;^#Uau2ZK@l`44p>8GpBhZ{0vh?z&{!?kSLGU)T+%1R1l>#P?IPgh@0 z`ut_lZ6pXl00Izj2Lb%tx=wL%aWZ`PaG5h_j?v#;bsk&Ql05gT{qc`~H10*y`^;;) zUrp~#*LiX~cI=Qrg9aJ*s~tObtZH$!uKP(<77=sFK>!-fsE8sTpZPwZW5jHRomFB*Nfkb8%Drfz(jP)HBw8TrsBJ&hYibiH}Rc@eDWNAyx=L00I#~ zAdp@V5da;~$Y5xAGGmi0d83Qr>G9E><=C#}4rn;x9;<_+Hq2a-epG(}Z_J*&onDB_?AKT+PZUhVg2tXj5 z2!z55!ik>~+7c=aPajH>rEhk7+Vu1dGkztd zXLEgM35P%c0uX?JuLMHv1-{13aTf_VMZ?T3UrOBY4u-EUAJ<*-veGUF$r1!0009UD zlz>ybAfSy5^TM5^Vea7+SvKbThNmwadAl6h_H~%kr+E;700f*tz)4=<3?lA}!f6_o z6r7ZGA3S6BzweBTk@B*0?gLB25P$##TtvWWUf?2hjtSL?8mfQqjEylpeft~mgsa1 z&t&Zqogb&~Ue)<>nOoe2njgd3qpv-HC4MoL%n}(!;FDu|9k3Jf2kN# zFLe!L0)+qsAmDTYZtw!9GYoZnZqe|3d6}fek2gJi?X;()IRAL4@lihnAOL}|AmA1+ z2n*N&YJ}S~%t~1(3rF5z`1;bA2SuM7OM(CdAOL}e5pbIqG_1AZd9)if%&T~Ri@wLj z7*nr!ugjs0UxcSPvecoGN)F9=U%thXv$G%PrtAqf+I zYTL{PUp3{YQh54E7%E4TAOHaf_>Vxi zd4d1PR4-}8iWSnRQKM>~fddB`nf1Fzj~?cMx?ER&&G_`wPs@!r-Y89)G?ANby2)7I zyLYcyhLweI)i5W0r7RkKx8doFU%yXI>|JXG2YDa>0SH7SfpGPLK!};2pD#&CNybNg zdg8>1#`3{~2aW2YqM~HLfB|OJpMLtOTzcuHGIi=y$;!$yKe@TNW}a7Gc|{Tu5+oxd zL)NTWBac1ym|T19wUU#QW9F%EA)GZld-9O1ocxmuW9mcO%KlaVU`)Nf6N3E^fIvhN z2xl({q@e2ObLY;jw~Eg``%IcOYbNvN&8s)BX3*aZS6_X#yz|aGmhx++aM!S`q)@ib zdeIzH-#Y6h(QPCMKmY;|xJV$}z2IU?{kvq<&$ZTBvu4S+zx{1luwa3uAi8wvB6_V~ zTPiLtHauLl(@$n*rqQpj%i)@IOnv{V=@MIUjjqp>(`$CUb|*mq0uX?}1p@fFZ)buX zKi3+x@BQ-2FP9}tmeg6{>C>mBdGqEnefsoT^F>ET*ElX8&VKHJp=0Pemad+zW9vG` zPJ#dgAOL~z@2d@z#&-Q&<9O?>w~W5@W5+H&|12&pPG--ZE!(zjllb^}dFY{sq*bd{ zl9!iPYv_@9eeMlI=ep~hclC6g1HU(68e{6-fLMkA1R|0E*XO>;?u(z7S3KMFmRoL- zDO0AHmFl&&UbpKU_cm?X$TQD8BcAznW~O=;B2h!VCtdGNH$1(<*Y%!ty?31i0SG`K zQVB$&7x+VKU;JF_z2lBMWc29KW(ex%ci(-tx$etCq-v;R>KSW4t{78qXZU*J#K%RS zF-L*`1RxNJ1R~W7e9>C_#)l6dE_3G0F~+a!o8SJ@OD`FH>>D?3l=Sp;89H>RTz1)I zvUTfLvwHROPMtcL_p<4IZO4xvH}_jvh;$84W^59D=DS|2>oeew?OJXH8+jlA0SJT@ zfk^iPJ7Oj#CQ6?^eT=?wE7#{=e)*+&KlzncUMUYg_@FUH?pqVH}aK>z{}h!g^Nf%}z4!wVYfyVJMN8D@^DZ~Ex}N@-E; z^9tRsJS~6#1R!vc0A6sBgKdLtlq5^v?0R8LeN@H#gw*)znb-mW2tXi=2;c?o7ZVL@*04A)N7hd3Z}z{Z zEt*gnA%GXSN2}T*MZ?<2)Vy8&duMEn>FMh~_-|34CqV!L5O6aA zyui)sU5FhGebZ3;+qK_apDCyP@Y)|wf&c^{;8p^7fm@Zk7&jVTWMOwn=f&y#IQ4X$ zFPFJ>j@=^24*>{3z!3!S0!PTupdiq&LHLaO*YrL%OzMlHkUn<7bOB+@wM?(Mt z5C}2>ydcQH15h0rHXN!xXGWhliH^1WjE&3i8V@$o`y)OEG7ZL;@ z00E~HzzdwNQ2p_tVf~Ek=Fs=7>ibqb{qOo7R(&5U2?7v+fKv(J1x{7QdR%B|ot2%O z=gZ3_ed#;0AnI1b*H=${Qi{%G+bM#)5P$##f<^!@2pZ~uRfL8CLu(YAy=$4oM|UM7e0SH(mfEQQ<<=|{+7#wlV6&J{sPkv{PsVC2VRmw_>f>SxQKmY;|sD}VvP!Av% z>_)@jiKN%$dlUXvF{a+e@by(wekz5hj|49OYJva+AW#bdyr32^F4~NS!51qheWffK zeYfH1i(kJ_PV8M9{2-_i0uX?J7XiG$3x-P<(J(Z^ojrL-R!;uOg)#M^ZDs$ee=w#V z8Y!q10uZPmfET#`G(f}9X;@ZLC|hT}XpX6Go%NFFHWCCN0D)i=zzeJsU$J6^G-}kS z+GpUvfkq+v-J?ejv%t6BdP~~1YbVW`HIr+uxki5Y!yn4><;%_eo`oq>rbw$+t)xkl zCi1`o56JrU>pibzdfLY+ANt0yWym_)`&mKuhNs*UcdP%?8<400O}xfEV~iTK#_Bk@!$Xc_vU(e#WTrny6GkvGiHpr zt-b{`tdCIe_Ul~tRa5$2=zp)61Fv)8xlcWK{HX~7kxT$D@J)SR{ruHeUzGO{Yu8r3*Xgy_UNgqgYm2P7xY(G-sM_f#Gc(gDN0&*? zAfVUe`V2XJmYnv#>$Bwwj_-Fya6|zC2!tg8{M; z`qy&lrI*T6d=xcvF*XJfeS1jl|+19-Gvv0=KZ#CZ8rtfYe zK>z{}@FxNM+&7wb{QUIk)3sKj^WlaJ8Dj3&`EV^;wq!n>NhCZL^xf(D4t2dw*N?ti zUEi@zf&c^{;4cFBxpk6pad9$y_;8ssXO7X|UEln6&-MB4-Mb|#E6e<-XM2*~ucr5% z&zLbocI?<8g9Z&U?pHf@?3gD@z29h9FCxceIJoh1i5u45@bncE9+A9bdmIxRfj|HP z?k0d2Sl2HxF;V*T=_5DZc%v;p*K2w2k9xazdiULTMf>FSK6Jfa->_kW_wIU^(Xd`b zj>>TQP?9Wtv#a6h@uNCPR%*PX;v*OcK){^@@B(-0<{dQ}ded;na&cactew{1?0-*N zG(panm$@T&qJ#hh97zB#aHK4@fhDucY9VtpDJ@&HneD zu`yC!cFsKwAW{fGAfyEFf{^0(OXXppl!N(xRoA~u4600f*( z055R1K31YbLo1ZrmFLK|uSNUa_1QDa#(ZD2Kb`~u2tc4N0(e1PblkBI4c(!W-6-?2 z(nROSsi*6FIh{90f&c^{P#Xcfpf)n@*^Y+p(aLV5djFc<$L4uXZ0c8ksTfl)wOb7N zApn60Ab=ORUt~0NzlL?SK%XanxLbSB$wG318;1j2{_Uf_N)(a`-G`r3l*UCSgsy0hWwOWx=rCo?wr zS`^1Y00J&2fET!2z>4tE(ES=Vqy+`XGbC~1)pNxKvgOm?nPck7vtO06(xM0?L6ad6xdiY6_iK-a?$^*CEzoQ7 zy$OG-7*lU!`1-0TKb6AMNBmJVWk3J|E+BvxxIm>ZG;h^xe$m<0(gP@bw@+@Yv}J5oIQC+R!;uOg)#M^ZDs$e>5QrS8#3iVz+nXN z0*49WLpW&Y1GES@q^zV+w$6IV98=e2-9~}{1j3U5Uf_OR(a`-G2C4-*roMmGKP0x| z8eN}1vvTqiqSx*u2tXkG2;c?o*AxxiuVJ8DaAMy&(Xn*(bRApQF?JFJAP`;z@B;Vi ziH7diFc>Y+x$di`^u5skUNHw==fZQJdN9aS2Lysc051p*=RnqihJmCTUS;b&>B;|k z%^XwT{K;U^d)G-2fPni6;00*tegd?>4gtL;*JsG-v*fh@Jz?UHrQrB}J4KKe0uXQ@ z0sP#$C@WU1kVcIfRr?GaIM66WzkBrPQK`V(++6wgx4$j#zyE%v?VgpVpMF|yyzxe9 z(xi#pbkj|u>wEX^_3XCvjfR#mk*Nv+eb&1^^Ibh%p8>DWf+s-$0`4V%7g*OWKR;iR zl9G&%`ufC)6OHAA2M-#BL`6l(fB^%l75MD4&q~*>U8`-^4X?cNiX0 z9((LDx%S#?B_}7R#{4yHM8le>u+0hqeJ9(R_kQ-xnEI{8JKOZ#Z6pXlzg^=nJT#l^-u)l@tEWM*a> zV*t8Lf`G3C4sHBG;)b_3e0{})M1O)JN-=N#^bFCpJCPu#Vo$p9V zNlBd*o<4nAnm2DQ)2C0bHD7debhR;jjR!xk6&X7$5;%P*S(e5;Xn6X#Ywr!L6_;`8fp@*bZt5%Yi zmscsD_X^kN-ZWVDH-X~(C>l= z{P@Q|u2i93YhQl(<;EQMHf`F-GtWFDp80i^GS;zzhIPPUmrn%B%St8ntG}3@zG22d zDLtF(Q&}7Y0SE+#0AAo5XJ7nW=g(bo$t7~&zyY&T_4B*$zS~^)WdRL+p~f**2xM-Z zQ!%FA!SMCvZ#^t$vUXWHj64v4KnMun1=gW!-}vz1!)4B#ImY;Pee>J(-t(-iEc2uD z)~>nc8c`4TBwg;*sgs#U^B+Hc+_T%#HyT>PL?#~zd2`c!4u@u@e;<+Mz|>h7vfk?Q2$AOL~T62J>W%ikZhqoF@2QifdudjFc< z$EMfm`qBH_^gcHd1RxL^0(e1axcjqKH1sD;%CbX1pEHxTXoBhKYp3;>;yml`60%bl zc_9FSx(VO~b@Oq&AJxh5^`&oil~V_|hIfN$9RwUm055Q$C^kbv zLz}?J9uNZg74L6ZG2ussr^gLzF9$cw3P?Q^3IPbzOaL#anTwmYqM@7A3h!7;i}GaC zM}y4%_w93rO4+&M@NP7%gMdQ_-~|p5q5)x`VFTcCsNV^kFE5w$rGJ$LQMVetzIy7D zQgkNU@AXh11RzkE0A5g;ha1<>(2c5vf6T{rEtmM{I}J}?@pqtA=g<4S9twm21Vr!x_n!r5=za~u zxdrEn3uMcuzca_wlV`swWu-;o++^AYfshcu3qpe3ua%;qUvW}c00`(c`QC)TRg9^( zF?@a1l%GoB=_3KCi6S8oxdiY6_iK-a?$%yCmn@`PEvzd>=HP!Z=L8^y1t`L$JTX>odf|0*e8G&*k|UnBhb)k ziV%-o0y@`y)s(&$`rj+&!0%o09%JfuA(B7h3E&0pKLyax{Tk8&G44rE{?}{fnEK{V z28-UiPJ#dgtP#KqtZ{O3E;MwqI>cs&fR3pjSocqf9d?`H>j`f^CI!d$+bM#)5Qta; zc!B$+M??2(NDC?xIC)^REP3O8!_(uVJ4^PiWtB6q1_20EBY+oFL*lv(Xy`i02-pIF zqBF;2&3ixlW=#Foig&iXBl_+(5(FSnGXcDyW-e~piiU1di&*UtC_h&s+vg59$J94{ z_!}uLI%B5@@)28z1qmRn&-McI0sc!`h>m$T|w-Y$D@e7F?-rn%_ z6%!tjykmRZ-X!9OfZqw=1=f%b9z0mCy6P%PNJx;ZtSs|WSa|W7Rs#kMkf^9Av%ocL z*2txoUMdqNOpsl>c1d(}v|M)CWs;JTV&)k;cC55$(L(0WpD)|DZsC|Q=qJZO0O!jX4KR?5OKZY@oNfPDgZfi-4&9X({o5NX-6rKG2) zTRP~er=F5Nefm_&`_MxV$!~xATVtD+dBY7i7=G``qz$5)K0mxW2|Xa)otMgT9c$4@=|=9_Pp{rl^`hvt@BZjnioCRM6n z)TmK%*IjoR+xG3-XY}DGB_&nL)4h9ldGW;;D{ZT51r6(>!@h7MP+nFlsbBrY^z;og z21@DK+;D3q?SX)80(gOKWb(obFG%awttB%vv(AIHZ~e2+KC6^x>eQ+7-S2+a*rxsQ zIwpVg=+R1f`uFcIdTn1@DlRS-)y?zKIJ6vHCqW=m2xM-ZQ!%FA!SMCvZ#^t$vUWvE z(`hFJY9xT4*NCOgjpY^h%=GTvTe@}YR%gCI`MHk6*EBZ|Kd(~`c7`E=+`}odY;3m+ zW9lQmCr6UM3d2^?BnVg|fS+6AR5jP0J$npK^`6^SHBX@W+qpikN}BaZCQwpvO4d(* z*6e@Z8T+P`mz|4bB(yz33E=0x37?abWB7SuVq&cYXrH-W$9t!)UAtDB4>x}Ncr#0G zZZ7lTOd2dez#0La6Sp%i#`N@cA3P%^1t+Z?OfCq72?6}vnvgwv_7uI>JT)~{l9Q9A zSFc{us#Pl~D5(8?5jsBJxN&0{H*TEl+__Umj2Kbl{c3t2+`M`7WZSlF(zkD4?pL!W z3ArFpjlj`u3uNKQ+YMh|Hs<@H{qZCSL<#}?+?vucF)`AmOBcD~iYw&0>#j5I6HiM^ ztM_1io=nG%9gS=5&Ye5g`aBuEZ>?FgX2$bmtlkgjsT>VGB>0AaNM2T&EFagy@N}Io zm$~Ijus|Rp2;c?oml+M+uOTh)FM-m+T-h+=S7!fv>ip=6G4)daRzhhIa2Nr+z+r;; z5Dpsp0F6V!o`Al)C2i5$rl+s{TYo9e%L)5-)4<3jfET!5do*;vhO{7X1hP^WN&Kiz zhOaMuv#XpsxHWK#NiktdAiv`MEh{Gc=)#!#u=a9rgZ1Yr zhb8vwOIAOHmLf&f4ba*=2lWZ+a676b~8XGr42#|=-99okL~tovB> z9mXUGxRn52;8x`>#*Ky-S+E2FI|R;^oRuw~{>~gzPoDj%l$93QDT2HZa0~&wz%f$z z90(fvjE(~#U|f^$O_)|OrryTz^;J`TDut&HLk0q_BY+pUPO@qNqhU29Y=D4m0>{%= z$)eHs7@ofP^?T*`-Zi$%-~b4Ok^o*1O8Wk(8x8%#ky0RV_T(X1`A)BI#?;%&zLg&^ zrp{^M8UlEMYow|*P&BL+4LcxUn?PAfp(K6&vN@){b=Hfb+ei>_Isv@E=?c{!9~#!r zh#U~GLqO-b?_WJbVu!Xhe0}BQC*4051qSa=%xIhJHs%fer(8x4cQnOY#A1Wq2< zEKAK)?=x@^dA!eeQ5`OnuXbzmd|SGj@s~F9iHb059+> z&X5#_h9SXDr4TR(9NP4S#0_t6`1*?Rk4Rp2I%FUa5(0QZNU;00QZ)1{P6~s7Z33qc zCCk#72MteOIPwlTnzGP#85{tCh7!OF8cHzq$D?8BH6Q{A6z3n8wbPz5``>rPkE<9{ zF9Qq&f<^!@2pZ~uRfL8CLrcLButlJ}tWZ`BHx^?R$BO^nWE?p}3-FKg~Z{J>u zi;K;2>RUj=`UtTf0-+&LQgBMvPk+|zf8QDVrj(bR3r#T88ukS60&5cMvmS>G86quP zwv_aA>-VF)_10U`ym@oOv#r#WnVBhhJenA+Zh*QdiuH# zo{^G*lc5QQTEm(EUSLmN_4J!>zFGF~xBlGb@#DuE*Y=w>ZL(C^wbx!N)22;mz9jUR%=f_nOA?@$=e`=5e!T%`*Ddw{PDr zbLY;L+i$;J?!W(jDJ!e}zE!TzO?)gsz;y&l3v*?|j9;1k@2T^nE5_7IUDpl*b{+xz z+&4}3?Ac>nBd4TT?=#EG%adl!n#tE+e{EK(^Wk-#oz8LZ(4m9qwf~6|C(Qj;7SPZN zCGtSPIRy0GEoqD1Ha&gq-}*~&UXF7DBobE=zzcknEhi_(@bkpPM9T%}HTRWQUMU}a z^pSat`gy;8{mgY=7SPZaY8(TB&=bf?T_o|NIvKvc^v$kv>fqMU2So&~C4d)Lldfma zo}%}fr>3S#a&oft>eWkHwQ3~=1qHPh@XRyM$keG*B`GOMcJ10Fzxvg$jBD}3hYy>_ zsGmRa#1ob7XFGN3l)2x^0vcMOL>>q@lR$pXURg2WM;FG_hqaf38)i8(P@-}?0ldJP zL@_Zj(xpomx#Ef|jJ|QbrcO&stMlOZ-+y0z@Pi*nixw@6&!dk%DjPOzsC10_dDXdX z`rE-yLPI;W$O{4I5hyLnlT9BDGW*}R&lxIZ=d3@2!g(zsqEHaP3qnENzjdOae|b_G z1VTYT$JEo8O_2prw;H~_dg}j?qTH-dghHJzC4d*WR5-7&(a;M9ix6-*fn#aQB|iF2 z!_$}i?|;h4jEydD5#a}m0A3I*(t)c74FkuPk|7WZ0tLr2Byr;7hNs64Z6_IPKNfvP zB?$s`5x@)TqT`NzXy^`|h!O&J2%IZ9D_cJOojInSJo^SG4(cvudn)RA1OS2@&1^aj$vEm62J@GuRR*NUqe~|fw~AB zPhTaAM&Dz2`r_B`mE(KY)Rmom5lR3raKG?q=za}p0R-wJaQ5UOS@}+{Z^qQy%D$B! zFs5D~vqn`7!*XT2!8jRXNDfET#`JU~PDYe)+q zV3mN5sqbGsLt=-vHGF;L@FbvP>Ic?;BC*46GkiVa?Z+fPXJ2?WmR8kD057N&jcazGp=+cfPzVH+ zz^Mb9Wyu@&8=f9Nss=xQlHhy?J0Ai@q%RcII> zuoMe{FeGqz>s*N&(b4eryC!**N_%KAeaPlkEF`7vE43= zsgL-c97&!Z%<8EtKm_oD0D%o+v1k}X*i;39FdR+l$V_glh#FM zGw=fU>yC!**N_%KAQS|2PTa1zF{Y=ld;gbGoPQz|p-`tE2;c?QAU0~$NNW1boH^4h zphu4$GH~EPbN%I)UzS#_T1k^8P2~FPua{oEddb$UTh0BtpwC?%IdY`2ziHE^^5~UD?^^Py%>?HDLx19xPW~ zb(JI}BuG|PmiZ|xEHn!kFkpa0MMatGqeqXHMT-{6zJ2>-%a$$ji(mXgnl)=CJ9g|a z^NbxkR$8=ZA@k?Ym+jlPOTT{oq)nSPQdCrA=BaN14eKMseh5IIJ_32!yJh*f9)_pK z4eubCoBv(kA?$Y;0ldJPAbK4=WXKR{*|Mdir~CGdrLwXz>DaNO{NWFOFe=qDZ@A$G znJ{638HDPg*Xgrn%`&&uw}6KA5n?|CAYg?+X<@ExocU|B|2=hnbj6r@sg*;?;{XD9 zfjtq_({H}{X4$`gzr6#$$^G-6|J=Av*Hyi4*FOBDq@+q^b?@F?UVQPzO55sMLBqP} zunz(dutPxK-IBKGZPU}&{;j_h=jGTbg1jLjfEU;Y|H2C|NbAcB?=Me1^;D&8-Ydn$#iF`-J{pJqF3@!n1Rwwbe-Ow@ zT_o|NIvKvc^v$kv>R{!$KmMqLGW<&bKex}byyEw3@7}$oTeog?9=vw#TKVXskBsYY z9e3~3r;jvm-rW2h;H#fUM@QE_6%&4RVN88kdpWql`Z%D? zs>tpK0{FRa5cllaV|Z#xN=mH-=-l_ljT;+t+_jIsZ{NO>nwo0n_qD&B>vIz!3lM-n zfC-cq<;kXx2ATcu+vg0GvU9}&u9f0_A%LIzLQNzmC&%#f#Kgo}3s67TIq|h6&wRM? za&vQ;4`r?>+9s?WaD0Py|=ueprF>HG{5$*d*9!dot<4NzuvE=ot`IIE28lwB-^XeW&5+OaAvipLc>3bk@0H_w*F-px&@~?~2pxNW)r^MzB1t(AfPgOq z&YnCZE8pq$&6s*y*|+io#?*ZQ*}!A)f(8O~z~N}<01*fQ0ufF?$Ip{K|ARTEzV);J zCpykf3LXKxAb6|;RTCNpiY(6KQ&)H|I3^H3I zfEQTf4FV8Q0;djamL+f8Z+LqAsLqnTb17i_OaL$NGtdwehlU}5PL&XV zfNcUrXO795_x{W5e@|aBS@hj)B>xb=3;e?|l%=3yDCtu-1R!9CK>4{6Ntrvs^z@A% z{zgiR&e$n}ytNR(3u*!5qRnXNBC!Y+0uV3=9NP4S#0_t6`1*?Rk4Rp2I%FD10551D zKnEO-h7J&c5Fh{n+XPN$Zj+@k4;h}maO53wG-aXfGC1HO0leTM3%4$zp<9(BZU{i2 zIRCh;{rl5q|NE}^aTR0gWq|R40AAn&G>096h7J>ia3BByTLj9>&dH9iUpGB{!#@T{ z$=TDk${@1{Uf}+-01e%*AuWIa1Vj!e&6Bth9SvV!{?@~C=IBna*dTxx*ns8GtZ3*^ zVF(KX5U@=k_eiQN8{5tBboKTl$@6WO5vd2@1@2cK4c)IHEr0+7E)pmyI3??+KWp~C z?^y7LXrDZ(ZUT5g-F)1z7Y*H@5-~ym0(J=KoVZ-XIRAv5A|fs?Uf_Po z(a`-G(gFxTpk@L`x5vuDk+&PZzHH3*B{y?>%^BIse7G<;2k`SS5RoQ800OlV$jja> z%g6P&Fs44dgJf?0cddCNc?VwLe)ZAN{Tk8&2tc520;PqyvT^3G&Hne)`Oy_)>ZNrb z6k&Vu0{07!hVIvp7C-<3^%Kx{x1=q4+w}Ccf9o&Bc{%kT7$G_E0{07zhVIvp7C-<3 z)(K?qSSSXd~JKmNE}cinYz*=3hW>(;Gh(4aw*ot<4RZ(SSEur506g8&4= zkwAXVUP*ZS(FZ+?GAt6Dsva-yNda@@C7%)Jh zqM|&j=JyYN@B?}J>8H(g&q98FzP$SCtFmt0I?2e$kflqP%6<3UC+*v}m*V1LPquo$ z(Xd`bWPkt!!jQnZ;(Xck@$+W?`}QxRr0ksa|DEB61TV0r==t;KWyp{r(z0bsNl&-; zUO&BtZ`!n}oH$Ycy_1=lnR3Y`m&pA2)}M)lhSoGB7X%;>egyP?^Pc7J%7Um{4PRgV zZa*o?%?iJUT4)hoU;&a>7WMR-Z@yXf@89pWweH1&f&yvYytz!CJh|?S-|W5i+G}On zv}v{G)oXXv&GXUU06G?+>m&$300NOn;8@xUiI2Y1@bo4B`=4@h|AvUefS=o!{Dl`@ zFvhyoN3EvkpMPHNyz|a_v+vut&+umLd#^1;M@QE@zS89t_e}Ke-CMeK>t^}j4I4HX9<1NqY1XV+M&J7O?b~JU z+_`f5?YGPQ_unsNWwpQmm+NzHf-FM-0uZ=J;9SXB+4AWSb4)$?i$6+PY0c%5gbbKE<0=pcISZ)Kd_y9_k+rol1OA)Y}-ozUr@ir113Nu*ZTI_$F~qPLAQ{iHV7p3z#%%l3aP^m7?S6o}_-> zuU|jUs!!i&=o2;$f&c`C#26xZ(< zC4Ih3P0ygw-vXYbeqJ??{&ujF(9jMo@Q6B-7JEagG~0^v$PpYy)$-+wm8)Hnb01<~ihyE)+nZdUI?>}cqI z4QT-cAP^b?2iJcpvBPdNd|ltymY=gPG=cb`R=mIu5JOx98irT^s)qmsTutEAfz7hy zjr$Ex*Y~Pt?^xo>_TUAsl&w|@N1e>`3>qA5TGo?fbKmY>8`Nw7L-=8-7-*?52s~A(S{ax0fCWaS; zT7ibwkA@9rNC^;t00e3xP+oRUc6|N1>FFE(F+fVro~|it$hYAIA(x=R0ia=n5mEpI zAOL|n2^>zECvhV>8os{#t%v2z(VcbX55-QrAQaU7TPGU&mnWq`00I!Gi9qg=R9QB* zo8jr|?MIU5*OV<}+wg*rq4!(GXy`YT6a)bXK%h zJ~Z?{Q%ZyY1R!9CfWEtB_u{urPha!5pNqcZC71~>2qx{o)P;tD;Yz6xfB*#S63E`M zSoEE%+W)@f%?ISv!7X-+@HszT;4?bM9EgUFk%B-V009U{e$HM=c>B={W9q}&%fStw z1%(P;5ERS-tpp7NikHG6009WtCUCAeUp9UGyxIT0{mUpRJ6CMG96JZ#1$JmTGcOuC zQx~Fw00bhN!1?p%WzX_=WkJ-fhOe)Fx1SW{W(5oiUSJLF|NPJYNbA; z$)k@xDvK8{HV^L6qlXL}IM7_zh1s)bONR~}jAJ@=>LjtTv6c3#)+0xbl8 zBxCJIqSti(On8CsG#`27k!siEp3M7~dr;lgV_?=COC_+q7P z^{t>`eT3K#0SG|A83goNZg1k>E5_8@7{0#huYIKO^kKgQhZk7KSW;3Vd-m*+&6_tH zee2g=d#&u)v7^QUv~T^h&nn-eFm>uw`R;eWYvkAdc=hw6M~_xIzJLGzqSy9yrQ+gZ zQQbVB%*;%qEL|r-00Izzfb$6)-?K&*jlRe5^u@2=E4tp$gr8d{sN?4U@gM&ojT<+X ztFF4L+Wa=}k^<@HIu@_L1*(4Vb8iJ$h5!U0;A{eCPi4x=zxKY+|6Xyup0Vb`1_g|t z+s9W{R%VQG>sx}Ncr#CKZZ7lTOd2de00Iz*3<5f)e(J#H1~(Qz zw}$Ymuf8(+*VEI}Meh+GHf)%2|5<8kYK;Zx__+4Vj~h2mcJACMBSws<@qRV!x1Tp} zo^0E;P5Soj%l&FK(qtn9AOHaf)JFh6uaD4${qMc^p4@roopR-sR~nxOAAC^a;_B`j z(dWr@?AXz`=I-3NbG7ky{Y|FNlhOOunl)=?JWob{FW60JXqOoIApijggdYLC!2Oz{ zq5CzY1rUG$1R6>JFK8&i&>xS6q1S*2AOHafgqi?e5NZV)UOyT(oFOGZ00IzjI|01F z?Fx$VTp7I=U9}`Z00IzzKx7iY&)u&(8oFOYS^xnEK%k)n@PdXC4E^zF7Tn1Rwwbw-dk%+^!(w=k8aK7C-<35NJ37{Jh}|LtTPCCsyaf z>3h~xPd+f<9N-+_9EiMg!1Jz6^#qbT33xQD`o1;RtG|N|CNSX~;2a3|b3i?Tkh;x&9{OH+kg!CP#BL=N#Z1&~rdNK)qZ&fdl~vKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| RfB*y_009U<00K1=`2TKqI1B&) literal 0 HcmV?d00001 diff --git a/requirements/doc/doc-requirements.txt b/requirements/doc/doc-requirements.txt index 2cfba0dbad07..8be10d4d107c 100644 --- a/requirements/doc/doc-requirements.txt +++ b/requirements/doc/doc-requirements.txt @@ -12,12 +12,13 @@ colorspacious ipython ipywidgets numpydoc>=0.8 -pydata-sphinx-theme>=0.5.0 +pydata-sphinx-theme>=0.6.0 sphinxcontrib-svg2pdfconverter>=1.1.0 -# sphinx-gallery>=0.7 -# b41e328 is PR 808 which adds the image_srcset directive. When this is +# sphinx-gallery>=0.7 +# b41e328 is PR 808 which adds the image_srcset directive. When this is # released with sphinx gallery, we can change to the last release w/o this feature: # sphinx-gallery>0.90 git+git://github.com/sphinx-gallery/sphinx-gallery@b41e328#egg=sphinx-gallery sphinx-copybutton +sphinx-panels scipy From 7e15befa1ada130ffa88a8e30a23a5731d3ac81f Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 12 Sep 2021 20:36:14 +0200 Subject: [PATCH 096/270] Backport PR #21053: Fix validate_markevery docstring markup. --- lib/matplotlib/rcsetup.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 9f6b9d53ca62..e582f5cb575a 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -485,14 +485,11 @@ def validate_markevery(s): Parameters ---------- - s : None, int, float, slice, length-2 tuple of ints, - length-2 tuple of floats, list of ints + s : None, int, (int, int), slice, float, (float, float), or list[int] Returns ------- - None, int, float, slice, length-2 tuple of ints, - length-2 tuple of floats, list of ints - + None, int, (int, int), slice, float, (float, float), or list[int] """ # Validate s against type slice float int and None if isinstance(s, (slice, float, int, type(None))): From c8f21107d9bb0d72cbaa1600a2c21249b274cf01 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 13 Sep 2021 09:35:56 +0100 Subject: [PATCH 097/270] Backport PR #21062: Fix typo in template of current dev-docs --- doc/_templates/mpl_nav_bar.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/_templates/mpl_nav_bar.html b/doc/_templates/mpl_nav_bar.html index d672730de313..f0c16cc34eb8 100644 --- a/doc/_templates/mpl_nav_bar.html +++ b/doc/_templates/mpl_nav_bar.html @@ -7,7 +7,7 @@ Examples - diff --git a/doc/api/index.rst b/doc/api/index.rst index ed0e7f310275..1f9048787e69 100644 --- a/doc/api/index.rst +++ b/doc/api/index.rst @@ -1,5 +1,5 @@ -Reference -========= +API Reference +============= When using the library you will typically create :doc:`Figure ` and :doc:`Axes ` objects and diff --git a/doc/api/prev_api_changes/api_changes_3.1.0.rst b/doc/api/prev_api_changes/api_changes_3.1.0.rst index f3737889841f..b300d0d4c469 100644 --- a/doc/api/prev_api_changes/api_changes_3.1.0.rst +++ b/doc/api/prev_api_changes/api_changes_3.1.0.rst @@ -308,7 +308,7 @@ FreeType or libpng are not in the compiler or linker's default path, set the standard environment variables ``CFLAGS``/``LDFLAGS`` on Linux or OSX, or ``CL``/``LINK`` on Windows, to indicate the relevant paths. -See details in :doc:`/users/installing`. +See details in :doc:`/users/installing/index`. Setting artist properties twice or more in the same call ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/conf.py b/doc/conf.py index c1b5cc164ca8..110570cf26e3 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -213,7 +213,7 @@ def _check_dependencies(): source_encoding = "utf-8" # The master toctree document. -master_doc = 'contents' +master_doc = 'users/index' # General substitutions. try: diff --git a/doc/contents.rst b/doc/contents.rst deleted file mode 100644 index 4f070951d9e7..000000000000 --- a/doc/contents.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _complete_sitemap: - -Contents -======== - -.. only:: html - - :Release: |version| - :Date: |today| - - Download `PDF `_ - - -.. toctree:: - :maxdepth: 2 - - users/installing.rst - users/index.rst - users/backmatter.rst - devel/index.rst - users/release_notes.rst - -.. only:: html - - * :ref:`search` diff --git a/doc/devel/contributing.rst b/doc/devel/contributing.rst index c91a185566b8..9348158848a5 100644 --- a/doc/devel/contributing.rst +++ b/doc/devel/contributing.rst @@ -265,7 +265,7 @@ Other ways to contribute It also helps us if you spread the word: reference the project from your blog and articles or link to it from your website! If Matplotlib contributes to a project that leads to a scientific publication, please follow the -:doc:`/citing` guidelines. +:doc:`/users/backmatter/citing` guidelines. .. _coding_guidelines: diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst index e85dc97a0b23..2355a251be57 100644 --- a/doc/devel/documenting_mpl.rst +++ b/doc/devel/documenting_mpl.rst @@ -10,34 +10,35 @@ Getting started General file structure ---------------------- -All documentation is built from the :file:`doc/`, :file:`tutorials/`, and -:file:`examples/` directories. The :file:`doc/` directory contains -configuration files for Sphinx and reStructuredText (ReST_; ``.rst``) files -that are rendered to documentation pages. +All documentation is built from the :file:`doc/`. The :file:`doc/` +directory contains configuration files for Sphinx and reStructuredText +(ReST_; ``.rst``) files that are rendered to documentation pages. - -The main entry point is :file:`doc/index.rst`, which pulls in the -:file:`index.rst` file for the users guide (:file:`doc/users`), developers -guide (:file:`doc/devel`), api reference (:file:`doc/api`), and FAQs -(:file:`doc/faq`). The documentation suite is built as a single document in -order to make the most effective use of cross referencing. - -Sphinx_ also creates ``.rst`` files that are staged in :file:`doc/api` from +Documentation is created in three ways. First, API documentation +(:file:`doc/api`) is created by Sphinx_ from the docstrings of the classes in the Matplotlib library. Except for -:file:`doc/api/api_changes/`, these ``.rst`` files are created when the -documentation is built. - -Similarly, the contents of :file:`doc/gallery` and :file:`doc/tutorials` are -generated by the `Sphinx Gallery`_ from the sources in :file:`examples/` and -:file:`tutorials/`. These sources consist of python scripts that have ReST_ -documentation built into their comments. +:file:`doc/api/api_changes/`, ``.rst`` files in :file:`doc/api` are created +when the documentation is built. See :ref:`writing-docstrings` below. + +Second, the contents of :file:`doc/plot_types`, :file:`doc/gallery` and +:file:`doc/tutorials` are generated by the `Sphinx Gallery`_ from python +files in :file:`plot_types/`, :file:`examples/` and :file:`tutorials/`. +These sources consist of python scripts that have ReST_ documentation built +into their comments. See :ref:`writing-examples-and-tutorials` below. + +Third, Matplotlib has narrative docs written in ReST_ in subdirectories of +:file:`doc/users/`. If you would like to add new documentation that is suited +to an ``.rst`` file rather than a gallery or tutorial example, choose an +appropriate subdirectory to put it in, and add the file to the table of +contents of :file:`index.rst` of the subdirectory. See +:ref:`writing-rest-pages` below. .. note:: - Don't directly edit the ``.rst`` files in :file:`doc/gallery`, - :file:`doc/tutorials`, and :file:`doc/api` (excepting - :file:`doc/api/api_changes/`). Sphinx_ regenerates files in these - directories when building documentation. + Don't directly edit the ``.rst`` files in :file:`doc/plot_types`, + :file:`doc/gallery`, :file:`doc/tutorials`, and :file:`doc/api` + (excepting :file:`doc/api/api_changes/`). Sphinx_ regenerates + files in these directories when building documentation. Setting up the doc build ------------------------ @@ -181,7 +182,7 @@ Documents can be linked with the ``:doc:`` directive: .. code-block:: rst - See the :doc:`/faq/installing_faq` + See the :doc:`/users/faq/installing_faq` See the tutorial :doc:`/tutorials/introductory/sample_plots` @@ -189,14 +190,14 @@ Documents can be linked with the ``:doc:`` directive: will render as: - See the :doc:`/faq/installing_faq` + See the :doc:`/users/faq/installing_faq` See the tutorial :doc:`/tutorials/introductory/sample_plots` See the example :doc:`/gallery/lines_bars_and_markers/simple_plot` Sections can also be given reference names. For instance from the -:doc:`/faq/installing_faq` link: +:doc:`/users/faq/installing_faq` link: .. code-block:: rst diff --git a/doc/index.rst b/doc/index.rst index 7b88cd7374d6..618418a9a641 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -38,7 +38,7 @@ Installation pip install matplotlib -Further details are available in the :doc:`Installation Guide `. +Further details are available in the :doc:`Installation Guide `. Learning resources @@ -53,7 +53,7 @@ Learning resources - :doc:`Quick-start guide ` - :doc:`Plot types ` - `Introductory tutorials <../tutorials/index.html#introductory>`_ - - :doc:`External learning resources ` + - :doc:`External learning resources ` --- @@ -67,7 +67,7 @@ Learning resources Understand how Matplotlib works ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - The :ref:`users-guide-explain` in the :doc:`Usage guide ` + - The :ref:`users-guide-explain` in the :doc:`Users guide ` - Many of the :ref:`Intermediate ` and :ref:`Advanced ` tutorials have explanatory material @@ -106,7 +106,7 @@ you can help! - or improve the :ref:`documentation and code ` -Site map --------- +Users guide +----------- -The :ref:`complete contents of the docs `. +The `contents of the docs `_. diff --git a/doc/citing.rst b/doc/users/backmatter/citing.rst similarity index 59% rename from doc/citing.rst rename to doc/users/backmatter/citing.rst index bbf4f7ea8f75..b7da1ee8df6f 100644 --- a/doc/citing.rst +++ b/doc/users/backmatter/citing.rst @@ -1,4 +1,4 @@ -:orphan: +.. redirect-from:: /citing Citing Matplotlib ================= @@ -8,12 +8,12 @@ please acknowledge this fact by citing `J. D. Hunter, "Matplotlib: A 2D Graphics Environment", Computing in Science & Engineering, vol. 9, no. 3, pp. 90-95, 2007 `_. -.. literalinclude:: ../CITATION.bib +.. literalinclude:: ../../../CITATION.bib :language: bibtex .. container:: sphx-glr-download - :download:`Download BibTeX bibliography file: CITATION.bib <../CITATION.bib>` + :download:`Download BibTeX bibliography file: CITATION.bib <../../../CITATION.bib>` DOIs ---- @@ -30,124 +30,124 @@ By version v3.4.3 - .. image:: _static/zenodo_cache/5194481.svg + .. image:: ../../_static/zenodo_cache/5194481.svg :target: https://doi.org/10.5281/zenodo.5194481 v3.4.2 - .. image:: _static/zenodo_cache/4743323.svg + .. image:: ../../_static/zenodo_cache/4743323.svg :target: https://doi.org/10.5281/zenodo.4743323 v3.4.1 - .. image:: _static/zenodo_cache/4649959.svg + .. image:: ../../_static/zenodo_cache/4649959.svg :target: https://doi.org/10.5281/zenodo.4649959 v3.4.0 - .. image:: _static/zenodo_cache/4638398.svg + .. image:: ../../_static/zenodo_cache/4638398.svg :target: https://doi.org/10.5281/zenodo.4638398 v3.3.4 - .. image:: _static/zenodo_cache/4475376.svg + .. image:: ../../_static/zenodo_cache/4475376.svg :target: https://doi.org/10.5281/zenodo.4475376 v3.3.3 - .. image:: _static/zenodo_cache/4268928.svg + .. image:: ../../_static/zenodo_cache/4268928.svg :target: https://doi.org/10.5281/zenodo.4268928 v3.3.2 - .. image:: _static/zenodo_cache/4030140.svg + .. image:: ../../_static/zenodo_cache/4030140.svg :target: https://doi.org/10.5281/zenodo.4030140 v3.3.1 - .. image:: _static/zenodo_cache/3984190.svg + .. image:: ../../_static/zenodo_cache/3984190.svg :target: https://doi.org/10.5281/zenodo.3984190 v3.3.0 - .. image:: _static/zenodo_cache/3948793.svg + .. image:: ../../_static/zenodo_cache/3948793.svg :target: https://doi.org/10.5281/zenodo.3948793 v3.2.2 - .. image:: _static/zenodo_cache/3898017.svg + .. image:: ../../_static/zenodo_cache/3898017.svg :target: https://doi.org/10.5281/zenodo.3898017 v3.2.1 - .. image:: _static/zenodo_cache/3714460.svg + .. image:: ../../_static/zenodo_cache/3714460.svg :target: https://doi.org/10.5281/zenodo.3714460 v3.2.0 - .. image:: _static/zenodo_cache/3695547.svg + .. image:: ../../_static/zenodo_cache/3695547.svg :target: https://doi.org/10.5281/zenodo.3695547 v3.1.3 - .. image:: _static/zenodo_cache/3633844.svg + .. image:: ../../_static/zenodo_cache/3633844.svg :target: https://doi.org/10.5281/zenodo.3633844 v3.1.2 - .. image:: _static/zenodo_cache/3563226.svg + .. image:: ../../_static/zenodo_cache/3563226.svg :target: https://doi.org/10.5281/zenodo.3563226 v3.1.1 - .. image:: _static/zenodo_cache/3264781.svg + .. image:: ../../_static/zenodo_cache/3264781.svg :target: https://doi.org/10.5281/zenodo.3264781 v3.1.0 - .. image:: _static/zenodo_cache/2893252.svg + .. image:: ../../_static/zenodo_cache/2893252.svg :target: https://doi.org/10.5281/zenodo.2893252 v3.0.3 - .. image:: _static/zenodo_cache/2577644.svg + .. image:: ../../_static/zenodo_cache/2577644.svg :target: https://doi.org/10.5281/zenodo.2577644 v3.0.2 - .. image:: _static/zenodo_cache/1482099.svg + .. image:: ../../_static/zenodo_cache/1482099.svg :target: https://doi.org/10.5281/zenodo.1482099 v3.0.1 - .. image:: _static/zenodo_cache/1482098.svg + .. image:: ../../_static/zenodo_cache/1482098.svg :target: https://doi.org/10.5281/zenodo.1482098 v2.2.5 - .. image:: _static/zenodo_cache/3633833.svg + .. image:: ../../_static/zenodo_cache/3633833.svg :target: https://doi.org/10.5281/zenodo.3633833 v3.0.0 - .. image:: _static/zenodo_cache/1420605.svg + .. image:: ../../_static/zenodo_cache/1420605.svg :target: https://doi.org/10.5281/zenodo.1420605 v2.2.4 - .. image:: _static/zenodo_cache/2669103.svg + .. image:: ../../_static/zenodo_cache/2669103.svg :target: https://doi.org/10.5281/zenodo.2669103 v2.2.3 - .. image:: _static/zenodo_cache/1343133.svg + .. image:: ../../_static/zenodo_cache/1343133.svg :target: https://doi.org/10.5281/zenodo.1343133 v2.2.2 - .. image:: _static/zenodo_cache/1202077.svg + .. image:: ../../_static/zenodo_cache/1202077.svg :target: https://doi.org/10.5281/zenodo.1202077 v2.2.1 - .. image:: _static/zenodo_cache/1202050.svg + .. image:: ../../_static/zenodo_cache/1202050.svg :target: https://doi.org/10.5281/zenodo.1202050 v2.2.0 - .. image:: _static/zenodo_cache/1189358.svg + .. image:: ../../_static/zenodo_cache/1189358.svg :target: https://doi.org/10.5281/zenodo.1189358 v2.1.2 - .. image:: _static/zenodo_cache/1154287.svg + .. image:: ../../_static/zenodo_cache/1154287.svg :target: https://doi.org/10.5281/zenodo.1154287 v2.1.1 - .. image:: _static/zenodo_cache/1098480.svg + .. image:: ../../_static/zenodo_cache/1098480.svg :target: https://doi.org/10.5281/zenodo.1098480 v2.1.0 - .. image:: _static/zenodo_cache/1004650.svg + .. image:: ../../_static/zenodo_cache/1004650.svg :target: https://doi.org/10.5281/zenodo.1004650 v2.0.2 - .. image:: _static/zenodo_cache/573577.svg + .. image:: ../../_static/zenodo_cache/573577.svg :target: https://doi.org/10.5281/zenodo.573577 v2.0.1 - .. image:: _static/zenodo_cache/570311.svg + .. image:: ../../_static/zenodo_cache/570311.svg :target: https://doi.org/10.5281/zenodo.570311 v2.0.0 - .. image:: _static/zenodo_cache/248351.svg + .. image:: ../../_static/zenodo_cache/248351.svg :target: https://doi.org/10.5281/zenodo.248351 v1.5.3 - .. image:: _static/zenodo_cache/61948.svg + .. image:: ../../_static/zenodo_cache/61948.svg :target: https://doi.org/10.5281/zenodo.61948 v1.5.2 - .. image:: _static/zenodo_cache/56926.svg + .. image:: ../../_static/zenodo_cache/56926.svg :target: https://doi.org/10.5281/zenodo.56926 v1.5.1 - .. image:: _static/zenodo_cache/44579.svg + .. image:: ../../_static/zenodo_cache/44579.svg :target: https://doi.org/10.5281/zenodo.44579 v1.5.0 - .. image:: _static/zenodo_cache/32914.svg + .. image:: ../../_static/zenodo_cache/32914.svg :target: https://doi.org/10.5281/zenodo.32914 v1.4.3 - .. image:: _static/zenodo_cache/15423.svg + .. image:: ../../_static/zenodo_cache/15423.svg :target: https://doi.org/10.5281/zenodo.15423 v1.4.2 - .. image:: _static/zenodo_cache/12400.svg + .. image:: ../../_static/zenodo_cache/12400.svg :target: https://doi.org/10.5281/zenodo.12400 v1.4.1 - .. image:: _static/zenodo_cache/12287.svg + .. image:: ../../_static/zenodo_cache/12287.svg :target: https://doi.org/10.5281/zenodo.12287 v1.4.0 - .. image:: _static/zenodo_cache/11451.svg + .. image:: ../../_static/zenodo_cache/11451.svg :target: https://doi.org/10.5281/zenodo.11451 .. END OF AUTOGENERATED diff --git a/doc/users/credits.rst b/doc/users/backmatter/credits.rst similarity index 99% rename from doc/users/credits.rst rename to doc/users/backmatter/credits.rst index 0c0feed44218..04424fc8f263 100644 --- a/doc/users/credits.rst +++ b/doc/users/backmatter/credits.rst @@ -1,5 +1,7 @@ .. Note: This file is auto-generated using generate_credits.py +.. redirect-from:: /users/credits + .. _credits: ******* @@ -11,7 +13,7 @@ Matplotlib was written by John D. Hunter, with contributions from an ever-increasing number of users and developers. The current lead developer is Thomas A. Caswell, who is assisted by many `active developers `_. -Please also see our instructions on :doc:`/citing`. +Please also see our instructions on :doc:`/users/backmatter/citing`. The following is a list of contributors extracted from the git revision control history of the project: diff --git a/doc/users/history.rst b/doc/users/backmatter/history.rst similarity index 99% rename from doc/users/history.rst rename to doc/users/backmatter/history.rst index 19ba9c551ec2..8725e0773522 100644 --- a/doc/users/history.rst +++ b/doc/users/backmatter/history.rst @@ -1,3 +1,5 @@ +.. redirect-from:: /users/history + History ======= diff --git a/doc/users/backmatter.rst b/doc/users/backmatter/index.rst similarity index 60% rename from doc/users/backmatter.rst rename to doc/users/backmatter/index.rst index 93e88870215d..132c0905b23c 100644 --- a/doc/users/backmatter.rst +++ b/doc/users/backmatter/index.rst @@ -1,11 +1,12 @@ +.. redirect-from:: /users/backmatter Project information ------------------- .. toctree:: - :maxdepth: 1 + :maxdepth: 2 license.rst - ../citing.rst + citing.rst credits.rst history.rst diff --git a/doc/users/license.rst b/doc/users/backmatter/license.rst similarity index 95% rename from doc/users/license.rst rename to doc/users/backmatter/license.rst index 44822d9d95f1..a55927d9f2c5 100644 --- a/doc/users/license.rst +++ b/doc/users/backmatter/license.rst @@ -1,5 +1,7 @@ .. _license: +.. redirect-from:: /users/license + ******* License ******* @@ -44,5 +46,5 @@ control logs. License agreement ================= -.. literalinclude:: ../../LICENSE/LICENSE +.. literalinclude:: ../../../LICENSE/LICENSE :language: none diff --git a/doc/users/explain.rst b/doc/users/explain.rst deleted file mode 100644 index d9d7a8474dbb..000000000000 --- a/doc/users/explain.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. _users-guide-explain: - -Explanations ------------- - -.. toctree:: - :maxdepth: 1 - - interactive.rst - fonts.rst diff --git a/doc/users/backends.rst b/doc/users/explain/backends.rst similarity index 100% rename from doc/users/backends.rst rename to doc/users/explain/backends.rst diff --git a/doc/users/event_handling.rst b/doc/users/explain/event_handling.rst similarity index 99% rename from doc/users/event_handling.rst rename to doc/users/explain/event_handling.rst index 3a368d3b5312..6fb208d4c2ac 100644 --- a/doc/users/event_handling.rst +++ b/doc/users/explain/event_handling.rst @@ -1,3 +1,5 @@ +.. redirect-from:: /users/event_handling + .. _event-handling-tutorial: ************************** diff --git a/doc/users/fonts.rst b/doc/users/explain/fonts.rst similarity index 99% rename from doc/users/fonts.rst rename to doc/users/explain/fonts.rst index 19cdefa15606..9bf2bbc26a2d 100644 --- a/doc/users/fonts.rst +++ b/doc/users/explain/fonts.rst @@ -1,3 +1,5 @@ +.. redirect-from:: /users/fonts + Fonts in Matplotlib text engine =============================== diff --git a/doc/users/explain/index.rst b/doc/users/explain/index.rst new file mode 100644 index 000000000000..f18676613dfc --- /dev/null +++ b/doc/users/explain/index.rst @@ -0,0 +1,16 @@ +.. _users-guide-explain: + +.. redirect-from:: /users/explain + +Explanations +------------ + +.. toctree:: + :maxdepth: 2 + + backends.rst + interactive.rst + fonts.rst + event_handling.rst + performance.rst + interactive_guide.rst diff --git a/doc/users/interactive.rst b/doc/users/explain/interactive.rst similarity index 99% rename from doc/users/interactive.rst rename to doc/users/explain/interactive.rst index dd86ea0a1b30..0f27b8e01583 100644 --- a/doc/users/interactive.rst +++ b/doc/users/explain/interactive.rst @@ -1,3 +1,5 @@ +.. redirect-from:: /users/interactive + .. currentmodule:: matplotlib .. _mpl-shell: diff --git a/doc/users/interactive_guide.rst b/doc/users/explain/interactive_guide.rst similarity index 99% rename from doc/users/interactive_guide.rst rename to doc/users/explain/interactive_guide.rst index 959059d7264f..76f014d7b129 100644 --- a/doc/users/interactive_guide.rst +++ b/doc/users/explain/interactive_guide.rst @@ -1,5 +1,7 @@ .. _interactive_figures_and_eventloops: +.. redirect-from:: /users/interactive_guide + .. currentmodule:: matplotlib diff --git a/doc/users/performance.rst b/doc/users/explain/performance.rst similarity index 100% rename from doc/users/performance.rst rename to doc/users/explain/performance.rst diff --git a/doc/faq/environment_variables_faq.rst b/doc/users/faq/environment_variables_faq.rst similarity index 98% rename from doc/faq/environment_variables_faq.rst rename to doc/users/faq/environment_variables_faq.rst index dc26fa9a53f7..36460ae1b0cd 100644 --- a/doc/faq/environment_variables_faq.rst +++ b/doc/users/faq/environment_variables_faq.rst @@ -1,5 +1,7 @@ .. _environment-variables: +.. redirect-from:: /faq/environment_variables_faq + ********************* Environment variables ********************* diff --git a/doc/faq/howto_faq.rst b/doc/users/faq/howto_faq.rst similarity index 98% rename from doc/faq/howto_faq.rst rename to doc/users/faq/howto_faq.rst index 533e7d2b3141..0076cb335ab4 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/users/faq/howto_faq.rst @@ -1,5 +1,7 @@ .. _howto-faq: +.. redirect-from:: /faq/howto_faq + ****** How-to ****** @@ -148,8 +150,8 @@ behavior by specifying the coordinates of the label. The example below shows the default behavior in the left subplots, and the manual setting in the right subplots. -.. figure:: ../gallery/pyplots/images/sphx_glr_align_ylabels_001.png - :target: ../gallery/pyplots/align_ylabels.html +.. figure:: ../../gallery/pyplots/images/sphx_glr_align_ylabels_001.png + :target: ../../gallery/pyplots/align_ylabels.html :align: center :scale: 50 diff --git a/doc/faq/index.rst b/doc/users/faq/index.rst similarity index 67% rename from doc/faq/index.rst rename to doc/users/faq/index.rst index 24e9112465d3..124b1a7f561a 100644 --- a/doc/faq/index.rst +++ b/doc/users/faq/index.rst @@ -1,8 +1,10 @@ .. _faq-index: -###### -How-to -###### +.. redirect-from:: /faq/index + +########################## +How-to and troubleshooting +########################## .. only:: html diff --git a/doc/faq/installing_faq.rst b/doc/users/faq/installing_faq.rst similarity index 99% rename from doc/faq/installing_faq.rst rename to doc/users/faq/installing_faq.rst index 45e3fd99c2ed..c843da427f96 100644 --- a/doc/faq/installing_faq.rst +++ b/doc/users/faq/installing_faq.rst @@ -1,5 +1,7 @@ .. _installing-faq: +.. redirect-from:: /faq/installing_faq + ************** Installing FAQ ************** diff --git a/doc/faq/troubleshooting_faq.rst b/doc/users/faq/troubleshooting_faq.rst similarity index 99% rename from doc/faq/troubleshooting_faq.rst rename to doc/users/faq/troubleshooting_faq.rst index cf9e3b5cf8b9..aedd108f5430 100644 --- a/doc/faq/troubleshooting_faq.rst +++ b/doc/users/faq/troubleshooting_faq.rst @@ -1,5 +1,7 @@ .. _troubleshooting-faq: +.. redirect-from:: /faq/troubleshooting_faq + *************** Troubleshooting *************** diff --git a/doc/users/getting_started.rst b/doc/users/getting_started/index.rst similarity index 89% rename from doc/users/getting_started.rst rename to doc/users/getting_started/index.rst index 1cb7c97952da..7e8863991a41 100644 --- a/doc/users/getting_started.rst +++ b/doc/users/getting_started/index.rst @@ -1,8 +1,8 @@ Getting started =============== -Installation ------------- +Installation quick-start +------------------------ .. container:: twocol @@ -22,12 +22,13 @@ Installation conda install matplotlib -Further details are available in the :doc:`Installation Guide `. +Further details are available in the :doc:`Installation Guide `. + Draw a first plot ----------------- -Here is a minimal example plot you can try out: +Here is a minimal example plot: .. plot:: :include-source: diff --git a/doc/users/index.rst b/doc/users/index.rst index ac5af88b418a..c062a839a5ef 100644 --- a/doc/users/index.rst +++ b/doc/users/index.rst @@ -1,20 +1,43 @@ .. _users-guide-index: +.. redirect-from:: /contents + + ########### -Usage guide +Users guide ########### + +General +####### + +.. toctree:: + :maxdepth: 2 + + getting_started/index.rst + installing/index.rst + explain/index.rst + faq/index.rst + resources/index.rst + +Reference +######### + .. toctree:: :maxdepth: 2 + ../api/index.rst + ../devel/index.rst + backmatter/index.rst + release_notes.rst + + +Tutorials and examples +###################### + +.. toctree:: + :maxdepth: 1 + ../plot_types/index.rst ../tutorials/index.rst ../gallery/index.rst - getting_started.rst - backends.rst - performance.rst - explain.rst - ../faq/index.rst - ../api/index.rst - ../resources/index.rst - \ No newline at end of file diff --git a/doc/users/installing.rst b/doc/users/installing.rst deleted file mode 100644 index 545ae4fa153e..000000000000 --- a/doc/users/installing.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../INSTALL.rst diff --git a/doc/users/installing/index.rst b/doc/users/installing/index.rst new file mode 100644 index 000000000000..50c625bfcd83 --- /dev/null +++ b/doc/users/installing/index.rst @@ -0,0 +1,10 @@ +.. redirect-from:: /installing + + +.. toctree:: + :hidden: + + installing_source.rst + ../faq/installing_faq.rst + +.. include:: ../../../INSTALL.rst diff --git a/doc/users/installing_source.rst b/doc/users/installing/installing_source.rst similarity index 100% rename from doc/users/installing_source.rst rename to doc/users/installing/installing_source.rst diff --git a/doc/users/dflt_style_changes.rst b/doc/users/prev_whats_new/dflt_style_changes.rst similarity index 99% rename from doc/users/dflt_style_changes.rst rename to doc/users/prev_whats_new/dflt_style_changes.rst index 5de399adb053..b36a1a343116 100644 --- a/doc/users/dflt_style_changes.rst +++ b/doc/users/prev_whats_new/dflt_style_changes.rst @@ -1,3 +1,5 @@ +.. redirect-from:: /users/dflt_style_changes + ============================== Changes to the default style ============================== diff --git a/doc/users/prev_whats_new/whats_new_2.0.0.rst b/doc/users/prev_whats_new/whats_new_2.0.0.rst index 94da59cd1b88..0f5edb7c0e3f 100644 --- a/doc/users/prev_whats_new/whats_new_2.0.0.rst +++ b/doc/users/prev_whats_new/whats_new_2.0.0.rst @@ -17,7 +17,7 @@ The major changes in v2.0 are related to overhauling the default styles. .. toctree:: :maxdepth: 2 - ../dflt_style_changes + dflt_style_changes Improved color conversion API and RGBA support diff --git a/doc/users/release_notes.rst b/doc/users/release_notes.rst index eaf57e6d2bfa..970fc4f29f2b 100644 --- a/doc/users/release_notes.rst +++ b/doc/users/release_notes.rst @@ -29,8 +29,11 @@ Version 3.4 prev_whats_new/github_stats_3.4.1.rst prev_whats_new/github_stats_3.4.0.rst +Past versions +============= + Version 3.3 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -44,7 +47,7 @@ Version 3.3 prev_whats_new/github_stats_3.3.0.rst Version 3.2 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -55,7 +58,7 @@ Version 3.2 prev_whats_new/github_stats_3.2.0.rst Version 3.1 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -68,7 +71,7 @@ Version 3.1 prev_whats_new/github_stats_3.1.0.rst Version 3.0 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -81,7 +84,7 @@ Version 3.0 prev_whats_new/github_stats_3.0.0.rst Version 2.2 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -89,7 +92,7 @@ Version 2.2 ../api/prev_api_changes/api_changes_2.2.0.rst Version 2.1 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -99,7 +102,7 @@ Version 2.1 ../api/prev_api_changes/api_changes_2.1.0.rst Version 2.0 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -108,7 +111,7 @@ Version 2.0 ../api/prev_api_changes/api_changes_2.0.0.rst Version 1.5 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -118,7 +121,7 @@ Version 1.5 ../api/prev_api_changes/api_changes_1.5.0.rst Version 1.4 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -126,7 +129,7 @@ Version 1.4 ../api/prev_api_changes/api_changes_1.4.x.rst Version 1.3 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -134,7 +137,7 @@ Version 1.3 ../api/prev_api_changes/api_changes_1.3.x.rst Version 1.2 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -143,7 +146,7 @@ Version 1.2 ../api/prev_api_changes/api_changes_1.2.x.rst Version 1.1 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 @@ -151,14 +154,14 @@ Version 1.1 ../api/prev_api_changes/api_changes_1.1.x.rst Version 1.0 -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 prev_whats_new/whats_new_1.0.rst Version 0.x -=========== +~~~~~~~~~~~ .. toctree:: :maxdepth: 1 diff --git a/doc/resources/index.rst b/doc/users/resources/index.rst similarity index 98% rename from doc/resources/index.rst rename to doc/users/resources/index.rst index d80e4b81fdaa..bd83759766fb 100644 --- a/doc/resources/index.rst +++ b/doc/users/resources/index.rst @@ -1,5 +1,7 @@ .. _resources-index: +.. redirect-from:: /resources/index + ****************** External resources ****************** diff --git a/examples/README.txt b/examples/README.txt index 22e3be4d0794..87098fb881ce 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -10,5 +10,5 @@ This page contains example plots. Click on any image to see the full image and source code. For longer tutorials, see our `tutorials page <../tutorials/index.html>`_. -You can also find `external resources <../resources/index.html>`_ and -a `FAQ <../faq/index.html>`_ in our `user guide <../contents.html>`_. +You can also find `external resources <../users/resources/index.html>`_ and +a `FAQ <../users/faq/index.html>`_ in our `user guide <../users/index.html>`_. diff --git a/examples/event_handling/README.txt b/examples/event_handling/README.txt index 165cb66cb15a..a4c4b6524658 100644 --- a/examples/event_handling/README.txt +++ b/examples/event_handling/README.txt @@ -3,10 +3,11 @@ Event handling ============== -Matplotlib supports :doc:`event handling` with a GUI -neutral event model, so you can connect to Matplotlib events without knowledge -of what user interface Matplotlib will ultimately be plugged in to. This has -two advantages: the code you write will be more portable, and Matplotlib events -are aware of things like data coordinate space and which axes the event occurs -in so you don't have to mess with low level transformation details to go from -canvas space to data space. Object picking examples are also included. +Matplotlib supports :doc:`event handling` with +a GUI neutral event model, so you can connect to Matplotlib events without +knowledge of what user interface Matplotlib will ultimately be plugged in to. +This has two advantages: the code you write will be more portable, and +Matplotlib events are aware of things like data coordinate space and which +axes the event occurs in so you don't have to mess with low level +transformation details to go from canvas space to data space. Object picking +examples are also included. diff --git a/tools/cache_zenodo_svg.py b/tools/cache_zenodo_svg.py index 0167bcf7fd8b..d62ceac2e69c 100644 --- a/tools/cache_zenodo_svg.py +++ b/tools/cache_zenodo_svg.py @@ -106,7 +106,7 @@ def _get_xdg_cache_dir(): } doc_dir = Path(__file__).parent.parent.absolute() / "doc" target_dir = doc_dir / "_static/zenodo_cache" - citing = doc_dir / "citing.rst" + citing = doc_dir / "users/backmatter/citing.rst" target_dir.mkdir(exist_ok=True, parents=True) header = [] footer = [] @@ -134,7 +134,7 @@ def _get_xdg_cache_dir(): fout.write( f""" {version} - .. image:: _static/zenodo_cache/{doi}.svg + .. image:: ../../_static/zenodo_cache/{doi}.svg :target: https://doi.org/10.5281/zenodo.{doi}""" ) fout.write("\n\n") From 2d85c8550c2a15aab03444b9e8c8757d9fde16f2 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 21 Oct 2021 15:58:39 -0400 Subject: [PATCH 215/270] Backport PR #21411: Document webagg in docs. --- doc/api/backend_webagg_api.rst | 9 ++++----- doc/conf.py | 1 + 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/api/backend_webagg_api.rst b/doc/api/backend_webagg_api.rst index 24839a545abd..a4089473c903 100644 --- a/doc/api/backend_webagg_api.rst +++ b/doc/api/backend_webagg_api.rst @@ -1,8 +1,7 @@ :mod:`.backend_webagg` ====================== -.. note:: - The WebAgg backend is not documented here, in order to avoid adding Tornado - to the doc build requirements. - -.. module:: matplotlib.backends.backend_webagg +.. automodule:: matplotlib.backends.backend_webagg + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/conf.py b/doc/conf.py index c1b5cc164ca8..1ec0efb02889 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -161,6 +161,7 @@ def _check_dependencies(): 'pytest': ('https://pytest.org/en/stable/', None), 'python': ('https://docs.python.org/3/', None), 'scipy': ('https://docs.scipy.org/doc/scipy/reference/', None), + 'tornado': ('https://www.tornadoweb.org/en/stable/', None), } From 3e1c3c4edc657998e6f80e68ec9c0f695b2b4723 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Fri, 22 Oct 2021 11:16:58 +0200 Subject: [PATCH 216/270] Backport PR #21422: Doc --- doc/devel/contributing.rst | 2 +- doc/users/index.rst | 22 +++++++++---------- doc/users/{backmatter => project}/citing.rst | 0 doc/users/{backmatter => project}/credits.rst | 2 +- doc/users/{backmatter => project}/history.rst | 0 doc/users/{backmatter => project}/index.rst | 0 doc/users/{backmatter => project}/license.rst | 0 tools/cache_zenodo_svg.py | 2 +- 8 files changed, 13 insertions(+), 15 deletions(-) rename doc/users/{backmatter => project}/citing.rst (100%) rename doc/users/{backmatter => project}/credits.rst (99%) rename doc/users/{backmatter => project}/history.rst (100%) rename doc/users/{backmatter => project}/index.rst (100%) rename doc/users/{backmatter => project}/license.rst (100%) diff --git a/doc/devel/contributing.rst b/doc/devel/contributing.rst index 9348158848a5..96ffd93b6b18 100644 --- a/doc/devel/contributing.rst +++ b/doc/devel/contributing.rst @@ -265,7 +265,7 @@ Other ways to contribute It also helps us if you spread the word: reference the project from your blog and articles or link to it from your website! If Matplotlib contributes to a project that leads to a scientific publication, please follow the -:doc:`/users/backmatter/citing` guidelines. +:doc:`/users/project/citing` guidelines. .. _coding_guidelines: diff --git a/doc/users/index.rst b/doc/users/index.rst index c062a839a5ef..e065df00164b 100644 --- a/doc/users/index.rst +++ b/doc/users/index.rst @@ -7,6 +7,15 @@ Users guide ########### +Tutorials and examples +###################### + +.. toctree:: + :maxdepth: 1 + + ../plot_types/index.rst + ../tutorials/index.rst + ../gallery/index.rst General ####### @@ -28,16 +37,5 @@ Reference ../api/index.rst ../devel/index.rst - backmatter/index.rst + project/index.rst release_notes.rst - - -Tutorials and examples -###################### - -.. toctree:: - :maxdepth: 1 - - ../plot_types/index.rst - ../tutorials/index.rst - ../gallery/index.rst diff --git a/doc/users/backmatter/citing.rst b/doc/users/project/citing.rst similarity index 100% rename from doc/users/backmatter/citing.rst rename to doc/users/project/citing.rst diff --git a/doc/users/backmatter/credits.rst b/doc/users/project/credits.rst similarity index 99% rename from doc/users/backmatter/credits.rst rename to doc/users/project/credits.rst index 04424fc8f263..c23d6ac11298 100644 --- a/doc/users/backmatter/credits.rst +++ b/doc/users/project/credits.rst @@ -13,7 +13,7 @@ Matplotlib was written by John D. Hunter, with contributions from an ever-increasing number of users and developers. The current lead developer is Thomas A. Caswell, who is assisted by many `active developers `_. -Please also see our instructions on :doc:`/users/backmatter/citing`. +Please also see our instructions on :doc:`/users/project/citing`. The following is a list of contributors extracted from the git revision control history of the project: diff --git a/doc/users/backmatter/history.rst b/doc/users/project/history.rst similarity index 100% rename from doc/users/backmatter/history.rst rename to doc/users/project/history.rst diff --git a/doc/users/backmatter/index.rst b/doc/users/project/index.rst similarity index 100% rename from doc/users/backmatter/index.rst rename to doc/users/project/index.rst diff --git a/doc/users/backmatter/license.rst b/doc/users/project/license.rst similarity index 100% rename from doc/users/backmatter/license.rst rename to doc/users/project/license.rst diff --git a/tools/cache_zenodo_svg.py b/tools/cache_zenodo_svg.py index d62ceac2e69c..fac396d53f99 100644 --- a/tools/cache_zenodo_svg.py +++ b/tools/cache_zenodo_svg.py @@ -106,7 +106,7 @@ def _get_xdg_cache_dir(): } doc_dir = Path(__file__).parent.parent.absolute() / "doc" target_dir = doc_dir / "_static/zenodo_cache" - citing = doc_dir / "users/backmatter/citing.rst" + citing = doc_dir / "users/project/citing.rst" target_dir.mkdir(exist_ok=True, parents=True) header = [] footer = [] From 4980e6d66c36b6b2206998d4c43bac6e5e656ccc Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 23 Oct 2021 11:53:59 +0100 Subject: [PATCH 217/270] Backport PR #21435: DOC: Fix selection of parameter names in HTML theme --- doc/_static/mpl.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/_static/mpl.css b/doc/_static/mpl.css index 370e2e5ac201..bc8339a951ae 100644 --- a/doc/_static/mpl.css +++ b/doc/_static/mpl.css @@ -245,3 +245,11 @@ div.twocol > div { padding: 0; margin: 0; } + +/* Fix selection of parameter names; remove when fixed in the theme + * https://github.com/sphinx-doc/sphinx/pull/9763 + */ +.classifier:before { + display: inline-block; + margin: 0 0.5em; +} From 3da26803c271ab5895a1aa4a7b2980c9de55aaf5 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 23 Oct 2021 11:54:40 +0100 Subject: [PATCH 218/270] Backport PR #21427: Update docstrings of get_{view,data}_interval. --- lib/matplotlib/axis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 96abe69c81ca..5badbfb636a3 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -938,7 +938,7 @@ def set_clip_path(self, clippath, transform=None): self.stale = True def get_view_interval(self): - """Return the view limits ``(min, max)`` of this axis.""" + """Return the ``(min, max)`` view limits of this axis.""" raise NotImplementedError('Derived must override') def set_view_interval(self, vmin, vmax, ignore=False): @@ -957,7 +957,7 @@ def set_view_interval(self, vmin, vmax, ignore=False): raise NotImplementedError('Derived must override') def get_data_interval(self): - """Return the Interval instance for this axis data limits.""" + """Return the ``(min, max)`` data limits of this axis.""" raise NotImplementedError('Derived must override') def set_data_interval(self, vmin, vmax, ignore=False): From 8ef676e9c0fbbff0d4df168cf21276115aa3da4c Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 23 Oct 2021 11:55:30 +0100 Subject: [PATCH 219/270] Backport PR #21420: Enable Python 3.10 wheel building on all systems --- .github/workflows/cibuildwheel.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/cibuildwheel.yml b/.github/workflows/cibuildwheel.yml index 6d64422adb66..cc920180d5ca 100644 --- a/.github/workflows/cibuildwheel.yml +++ b/.github/workflows/cibuildwheel.yml @@ -64,12 +64,11 @@ jobs: - name: Build wheels for CPython 3.10 run: | python -m cibuildwheel --output-dir dist - if: matrix.os != 'macos-10.15' env: CIBW_BUILD: "cp310-*" CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 CIBW_MANYLINUX_I686_IMAGE: manylinux2014 - CIBW_BEFORE_BUILD: pip install certifi numpy==1.21.2 + CIBW_BEFORE_BUILD: pip install certifi numpy==1.21.3 MPL_DISABLE_FH4: "yes" CIBW_ARCHS: ${{ matrix.cibw_archs }} From b7185554df41500a38b7b1d2ef787076618e5c48 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Sun, 24 Oct 2021 20:28:55 +0200 Subject: [PATCH 220/270] Backport PR #21449: Less verbose install info on index page --- doc/index.rst | 24 +++++++++--------------- doc/users/getting_started/index.rst | 4 ++-- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/doc/index.rst b/doc/index.rst index 618418a9a641..1ac3cfc80ecd 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -14,29 +14,23 @@ and interactive visualizations in Python. Installation ============ -.. panels:: - :card: + install-card - :column: col-lg-6 col-md-6 col-sm-12 col-xs-12 p-3 - - Installing using `conda `__ - ^^^^^^^^^^^^^^^^^^^^^^ - +.. container:: twocol + .. container:: - .. code-block:: bash + Install using `pip `__: - conda install matplotlib - - --- + .. code-block:: bash - Installing using `pip `__ - ^^^^^^^^^^^^^^^^^^^^ + pip install matplotlib + .. container:: - .. code-block:: bash + Install using `conda `__: - pip install matplotlib + .. code-block:: bash + conda install matplotlib Further details are available in the :doc:`Installation Guide `. diff --git a/doc/users/getting_started/index.rst b/doc/users/getting_started/index.rst index 7e8863991a41..8ce5491ce19e 100644 --- a/doc/users/getting_started/index.rst +++ b/doc/users/getting_started/index.rst @@ -8,7 +8,7 @@ Installation quick-start .. container:: - Install using pip: + Install using `pip `__: .. code-block:: bash @@ -16,7 +16,7 @@ Installation quick-start .. container:: - Install using conda: + Install using `conda `__: .. code-block:: bash From cf685f3ab69b6d7d1511d3cca077cf44739f09c6 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Sun, 24 Oct 2021 10:21:56 +0200 Subject: [PATCH 221/270] Backport PR #21445: Mnt pin pyparsing --- requirements/doc/doc-requirements.txt | 1 + requirements/testing/all.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/requirements/doc/doc-requirements.txt b/requirements/doc/doc-requirements.txt index 30b7c0c88669..4e2188d65725 100644 --- a/requirements/doc/doc-requirements.txt +++ b/requirements/doc/doc-requirements.txt @@ -13,6 +13,7 @@ ipython ipywidgets numpydoc>=0.8 packaging>=20 +pyparsing<3.0.0 pydata-sphinx-theme>=0.6.0 sphinxcontrib-svg2pdfconverter>=1.1.0 sphinx-gallery>=0.10 diff --git a/requirements/testing/all.txt b/requirements/testing/all.txt index fb7beef90f16..d11ac58331cc 100644 --- a/requirements/testing/all.txt +++ b/requirements/testing/all.txt @@ -2,6 +2,7 @@ certifi coverage +pyparsing<3.0.0 pytest!=4.6.0,!=5.4.0 pytest-cov pytest-rerunfailures From 6d70c8bb9432338c136109d7f1dd5be4b7ec0ceb Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Sun, 24 Oct 2021 18:20:24 +0200 Subject: [PATCH 222/270] Backport PR #21446: Also exclude pyparsing 3.0.0 in setup.py. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f61f27221555..34966a9b34d9 100644 --- a/setup.py +++ b/setup.py @@ -326,7 +326,7 @@ def make_release_tree(self, base_dir, files): "numpy>=1.17", "packaging>=20.0", "pillow>=6.2.0", - "pyparsing>=2.2.1", + "pyparsing>=2.2.1,<3.0.0", "python-dateutil>=2.7", ] + ( # Installing from a git checkout. From 90c7afd8022c2edabf1cb7c3eb52c27d854125ac Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 24 Oct 2021 22:45:53 +0200 Subject: [PATCH 223/270] Fix error with pyparsing 3 - Code suggestion taken from #21448 - Removed all pyparsing pinning. If this runs through CI, the fix is proven to be working. --- lib/matplotlib/_mathtext.py | 4 ++-- lib/matplotlib/tests/test_mathtext.py | 8 +++++--- requirements/doc/doc-requirements.txt | 1 - requirements/testing/all.txt | 1 - setup.py | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/_mathtext.py b/lib/matplotlib/_mathtext.py index bbb247ec02fe..4fd96640e89c 100644 --- a/lib/matplotlib/_mathtext.py +++ b/lib/matplotlib/_mathtext.py @@ -13,7 +13,7 @@ import numpy as np from pyparsing import ( - Combine, Empty, FollowedBy, Forward, Group, Literal, oneOf, OneOrMore, + Combine, Empty, Forward, Group, Literal, oneOf, OneOrMore, Optional, ParseBaseException, ParseFatalException, ParserElement, ParseResults, QuotedString, Regex, StringEnd, Suppress, ZeroOrMore) @@ -2044,7 +2044,7 @@ def __init__(self): p.accentprefixed <<= Suppress(p.bslash) + oneOf(self._accentprefixed) p.symbol_name <<= ( Combine(p.bslash + oneOf(list(tex2uni))) - + FollowedBy(Regex("[^A-Za-z]").leaveWhitespace() | StringEnd()) + + Suppress(Regex("(?=[^A-Za-z]|$)").leaveWhitespace()) ) p.symbol <<= (p.single_symbol | p.symbol_name).leaveWhitespace() diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index 0055d54a03a8..80d989922c22 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -250,7 +250,9 @@ def test_fontinfo(): (r'$\leftF$', r'Expected a delimiter'), (r'$\rightF$', r'Unknown symbol: \rightF'), (r'$\left(\right$', r'Expected a delimiter'), - (r'$\left($', r'Expected "\right"'), + # PyParsing 2 uses double quotes, PyParsing 3 uses single quotes and an + # extra backslash. + (r'$\left($', re.compile(r'Expected ("|\'\\)\\right["\']')), (r'$\dfrac$', r'Expected \dfrac{num}{den}'), (r'$\dfrac{}{}$', r'Expected \dfrac{num}{den}'), (r'$\overset$', r'Expected \overset{body}{annotation}'), @@ -281,8 +283,8 @@ def test_fontinfo(): ) def test_mathtext_exceptions(math, msg): parser = mathtext.MathTextParser('agg') - - with pytest.raises(ValueError, match=re.escape(msg)): + match = re.escape(msg) if isinstance(msg, str) else msg + with pytest.raises(ValueError, match=match): parser.parse(math) diff --git a/requirements/doc/doc-requirements.txt b/requirements/doc/doc-requirements.txt index 4e2188d65725..30b7c0c88669 100644 --- a/requirements/doc/doc-requirements.txt +++ b/requirements/doc/doc-requirements.txt @@ -13,7 +13,6 @@ ipython ipywidgets numpydoc>=0.8 packaging>=20 -pyparsing<3.0.0 pydata-sphinx-theme>=0.6.0 sphinxcontrib-svg2pdfconverter>=1.1.0 sphinx-gallery>=0.10 diff --git a/requirements/testing/all.txt b/requirements/testing/all.txt index d11ac58331cc..fb7beef90f16 100644 --- a/requirements/testing/all.txt +++ b/requirements/testing/all.txt @@ -2,7 +2,6 @@ certifi coverage -pyparsing<3.0.0 pytest!=4.6.0,!=5.4.0 pytest-cov pytest-rerunfailures diff --git a/setup.py b/setup.py index 34966a9b34d9..f61f27221555 100644 --- a/setup.py +++ b/setup.py @@ -326,7 +326,7 @@ def make_release_tree(self, base_dir, files): "numpy>=1.17", "packaging>=20.0", "pillow>=6.2.0", - "pyparsing>=2.2.1,<3.0.0", + "pyparsing>=2.2.1", "python-dateutil>=2.7", ] + ( # Installing from a git checkout. From cfa4f6bb566e1e21edaa6ec581323fa9ca5a44e4 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Mon, 25 Oct 2021 07:49:46 +0200 Subject: [PATCH 224/270] Backport PR #21453: Cleanup index.rst sectioning --- doc/devel/documenting_mpl.rst | 19 +++++++++++++++++-- doc/index.rst | 22 ++++++++++------------ 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst index 2355a251be57..97a2fd4bc0bb 100644 --- a/doc/devel/documenting_mpl.rst +++ b/doc/devel/documenting_mpl.rst @@ -138,13 +138,28 @@ Formatting and style conventions It is useful to strive for consistency in the Matplotlib documentation. Here are some formatting and style conventions that are used. -Section name formatting -~~~~~~~~~~~~~~~~~~~~~~~ +Section formatting +~~~~~~~~~~~~~~~~~~ For everything but top-level chapters, use ``Upper lower`` for section titles, e.g., ``Possible hangups`` rather than ``Possible Hangups`` +We aim to follow the recommendations from the +`Python documentation `_ +and the `Sphinx reStructuredText documentation `_ +for section markup characters, i.e.: + +- ``#`` with overline, for parts. This is reserved for the main title in + ``index.rst``. All other pages should start with "chapter" or lower. +- ``*`` with overline, for chapters +- ``=``, for sections +- ``-``, for subsections +- ``^``, for subsubsections +- ``"``, for paragraphs + +This may not yet be applied consistently in existing docs. + Function arguments ~~~~~~~~~~~~~~~~~~ diff --git a/doc/index.rst b/doc/index.rst index 1ac3cfc80ecd..62e376197a4a 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -5,14 +5,16 @@ .. module:: matplotlib +################################## Matplotlib |release| documentation ----------------------------------- +################################## Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. +************ Installation -============ +************ .. container:: twocol @@ -35,9 +37,9 @@ Installation Further details are available in the :doc:`Installation Guide `. +****************** Learning resources -================== - +****************** .. panels:: @@ -81,16 +83,18 @@ Learning resources +******************** Third-party packages --------------------- +******************** There are many `Third-party packages `_ built on top of and extending Matplotlib. +************ Contributing ------------- +************ Matplotlib is a community project maintained for and by its users. There are many ways you can help! @@ -98,9 +102,3 @@ you can help! - Help other users `on discourse `__ - report a bug or request a feature `on GitHub `__ - or improve the :ref:`documentation and code ` - - -Users guide ------------ - -The `contents of the docs `_. From 76d1b3eef803a58ee55afa262e5aadfc60428909 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Mon, 25 Oct 2021 07:51:23 +0200 Subject: [PATCH 225/270] Backport PR #21455: Hide note linking to the download section at the bottom of galleries --- doc/_static/mpl.css | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/_static/mpl.css b/doc/_static/mpl.css index bc8339a951ae..bb5fef2e4340 100644 --- a/doc/_static/mpl.css +++ b/doc/_static/mpl.css @@ -204,7 +204,6 @@ does not float with it. */ .sphx-glr-thumbcontainer p.caption:hover > a.headerlink{ visibility: hidden; - } /* slightly reduce horizontal margin compared to gallery.css to @@ -218,6 +217,26 @@ does not float with it. padding: 0; } +/* hide note linking to the download section at the bottom of galleries + * as suggested in https://github.com/sphinx-gallery/sphinx-gallery/issues/760 + */ +div.sphx-glr-download-link-note { + height: 0px; + visibility: hidden; +} + +/* re-style the download button */ +div.sphx-glr-download a { + background-color: #E3F0F6; + background-image: none; + color: #11557c; + border: 0; +} + +div.sphx-glr-download a:hover { + background-color: #BCD4DF; +} + table.property-table th, table.property-table td { padding: 4px 10px; From e94f7eae65ca22d8f2e03bc5f83d1395eec7acec Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Mon, 25 Oct 2021 10:26:46 +0200 Subject: [PATCH 226/270] Backport PR #21423: Change CircleCI job title to "Rendered docs" --- .github/workflows/circleci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/circleci.yml b/.github/workflows/circleci.yml index 75fc40d32e99..5c1c2c60331f 100644 --- a/.github/workflows/circleci.yml +++ b/.github/workflows/circleci.yml @@ -10,4 +10,4 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} artifact-path: 0/doc/build/html/index.html circleci-jobs: docs-python38 - job-title: Check the rendered docs here! + job-title: View the built docs From eb58c9456eee0ec439e38b4e9b63c23ca4652302 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 24 Oct 2021 21:57:09 +0200 Subject: [PATCH 227/270] Merge pull request #21429 from jklymak/doc-use-mpl-sphinx DOC: use mpl-sphinx-theme for navbar, social, logo --- doc/_templates/mpl_nav_bar.html | 21 ---------- doc/conf.py | 26 +----------- doc/devel/documenting_mpl.rst | 8 ++++ environment.yml | 58 +++++++++++++++++++++++++++ requirements/doc/doc-requirements.txt | 3 +- 5 files changed, 70 insertions(+), 46 deletions(-) delete mode 100644 doc/_templates/mpl_nav_bar.html create mode 100644 environment.yml diff --git a/doc/_templates/mpl_nav_bar.html b/doc/_templates/mpl_nav_bar.html deleted file mode 100644 index 82b8586de449..000000000000 --- a/doc/_templates/mpl_nav_bar.html +++ /dev/null @@ -1,21 +0,0 @@ - diff --git a/doc/conf.py b/doc/conf.py index 2092a7d4cae4..64a9240f9072 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -292,7 +292,7 @@ def _check_dependencies(): f"mpl.css?{SHA}", ] -html_theme = "pydata_sphinx_theme" +html_theme = "mpl_sphinx_theme" # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". @@ -302,34 +302,12 @@ def _check_dependencies(): # the sidebar. html_logo = "_static/logo2.svg" html_theme_options = { + "native_site": True, "logo_link": "index", # collapse_navigation in pydata-sphinx-theme is slow, so skipped for local # and CI builds https://github.com/pydata/pydata-sphinx-theme/pull/386 "collapse_navigation": not is_release_build, - "icon_links": [ - { - "name": "gitter", - "url": "https://gitter.im/matplotlib", - "icon": "fab fa-gitter", - }, - { - "name": "discourse", - "url": "https://discourse.matplotlib.org", - "icon": "fab fa-discourse", - }, - { - "name": "GitHub", - "url": "https://github.com/matplotlib/matplotlib", - "icon": "fab fa-github-square", - }, - { - "name": "twitter", - "url": "https://twitter.com/matplotlib/", - "icon": "fab fa-twitter-square", - }, - ], "show_prev_next": False, - "navbar_center": ["mpl_nav_bar.html"], } include_analytics = is_release_build if include_analytics: diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst index 97a2fd4bc0bb..c1f2fd26c7cf 100644 --- a/doc/devel/documenting_mpl.rst +++ b/doc/devel/documenting_mpl.rst @@ -1019,6 +1019,14 @@ Example: :parts: 2 +Navbar and style +---------------- + +Matplotlib has a few subprojects that share the same navbar and style, so these +are centralized as a sphinx theme at +`mpl_sphinx_theme `_. Changes to the +style or topbar should be made there to propagate across all subprojects. + .. TODO: Add section about uploading docs .. _ReST: https://docutils.sourceforge.io/rst.html diff --git a/environment.yml b/environment.yml new file mode 100644 index 000000000000..d73d7a99f579 --- /dev/null +++ b/environment.yml @@ -0,0 +1,58 @@ +# To set up a development environment using conda run: +# +# conda env create -f environment.yml +# conda activate mpl-dev +# pip install -e . +# +name: mpl-dev +channels: + - conda-forge +dependencies: + - cairocffi + - cycler>=0.10.0 + - fonttools>=4.22.0 + - kiwisolver>=1.0.1 + - numpy>=1.17 + - pillow>=6.2 + - pygobject + - pyparsing + - pyqt + - python-dateutil>=2.1 + - setuptools + - setuptools_scm + - wxpython + # building documentation + - colorspacious + - graphviz + - ipython + - ipywidgets + - numpydoc>=0.8 + - packaging + - pydata-sphinx-theme + - scipy + - sphinx>=1.8.1,!=2.0.0 + - sphinx-copybutton + - sphinx-gallery>=0.10 + - sphinx-panels + - pip + - pip: + - mpl-sphinx-theme + - sphinxcontrib-svg2pdfconverter + # testing + - coverage + - flake8>=3.8 + - flake8-docstrings>=1.4.0 + - gtk3 + - ipykernel + - nbconvert[execute]!=6.0.0,!=6.0.1 + - nbformat!=5.0.0,!=5.0.1 + - pandas!=0.25.0 + - pikepdf + - pydocstyle>=5.1.0 + - pytest!=4.6.0,!=5.4.0 + - pytest-cov + - pytest-rerunfailures + - pytest-timeout + - pytest-xdist + - tornado + - pytz diff --git a/requirements/doc/doc-requirements.txt b/requirements/doc/doc-requirements.txt index 30b7c0c88669..afb5c4105fae 100644 --- a/requirements/doc/doc-requirements.txt +++ b/requirements/doc/doc-requirements.txt @@ -13,7 +13,8 @@ ipython ipywidgets numpydoc>=0.8 packaging>=20 -pydata-sphinx-theme>=0.6.0 +pyparsing<3.0.0 +mpl-sphinx-theme sphinxcontrib-svg2pdfconverter>=1.1.0 sphinx-gallery>=0.10 sphinx-copybutton From 4ca374385a690f112404d97e39422b124073e940 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Mon, 25 Oct 2021 22:35:18 +0200 Subject: [PATCH 228/270] Removing pyparsing pin --- requirements/doc/doc-requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements/doc/doc-requirements.txt b/requirements/doc/doc-requirements.txt index afb5c4105fae..c77787e4c72b 100644 --- a/requirements/doc/doc-requirements.txt +++ b/requirements/doc/doc-requirements.txt @@ -13,7 +13,6 @@ ipython ipywidgets numpydoc>=0.8 packaging>=20 -pyparsing<3.0.0 mpl-sphinx-theme sphinxcontrib-svg2pdfconverter>=1.1.0 sphinx-gallery>=0.10 From c8543ee14087f39d28e92afa7a59335cd7a4013f Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 26 Oct 2021 03:52:18 -0400 Subject: [PATCH 229/270] Backport PR #21460: Clip slider init marker to slider track. --- lib/matplotlib/widgets.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index a59b3b1b1677..0c8c59176838 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -20,6 +20,7 @@ from . import _api, backend_tools, cbook, colors, ticker from .lines import Line2D from .patches import Circle, Rectangle, Ellipse +from .transforms import TransformedPatchPath class LockDraw: @@ -439,7 +440,10 @@ def __init__(self, ax, label, valmin, valmax, valinit=0.5, valfmt=None, ) ax.add_patch(self.track) self.poly = ax.axhspan(valmin, valinit, .25, .75, **kwargs) - self.hline = ax.axhline(valinit, .15, .85, color=initcolor, lw=1) + # Drawing a longer line and clipping it to the track avoids + # pixellization-related asymmetries. + self.hline = ax.axhline(valinit, 0, 1, color=initcolor, lw=1, + clip_path=TransformedPatchPath(self.track)) handleXY = [[0.5], [valinit]] else: self.track = Rectangle( @@ -449,12 +453,8 @@ def __init__(self, ax, label, valmin, valmax, valinit=0.5, valfmt=None, ) ax.add_patch(self.track) self.poly = ax.axvspan(valmin, valinit, .25, .75, **kwargs) - # These asymmetric limits (.2, .9) minimize the asymmetry - # above and below the *poly* when rendered to pixels. - # This seems to be different for Horizontal and Vertical lines. - # For discussion see: - # https://github.com/matplotlib/matplotlib/pull/19265 - self.vline = ax.axvline(valinit, .2, .9, color=initcolor, lw=1) + self.vline = ax.axvline(valinit, 0, 1, color=initcolor, lw=1, + clip_path=TransformedPatchPath(self.track)) handleXY = [[valinit], [0.5]] self._handle, = ax.plot( *handleXY, From 5cf149f31bbcdf2281db499136d2121ebc23efc6 Mon Sep 17 00:00:00 2001 From: hannah Date: Wed, 27 Oct 2021 00:20:08 -0400 Subject: [PATCH 230/270] Backport PR #21468: Fix some typos in examples --- examples/misc/svg_filter_line.py | 4 ++-- examples/misc/svg_filter_pie.py | 13 ++++++------- plot_types/arrays/barbs.py | 8 ++++---- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/examples/misc/svg_filter_line.py b/examples/misc/svg_filter_line.py index 8e790a708628..a64b719f74df 100644 --- a/examples/misc/svg_filter_line.py +++ b/examples/misc/svg_filter_line.py @@ -3,9 +3,9 @@ SVG Filter Line =============== -Demonstrate SVG filtering effects which might be used with mpl. +Demonstrate SVG filtering effects which might be used with Matplotlib. -Note that the filtering effects are only effective if your svg renderer +Note that the filtering effects are only effective if your SVG renderer support it. """ diff --git a/examples/misc/svg_filter_pie.py b/examples/misc/svg_filter_pie.py index 75524183d765..65aca9a1a73a 100644 --- a/examples/misc/svg_filter_pie.py +++ b/examples/misc/svg_filter_pie.py @@ -3,10 +3,10 @@ SVG Filter Pie ============== -Demonstrate SVG filtering effects which might be used with mpl. +Demonstrate SVG filtering effects which might be used with Matplotlib. The pie chart drawing code is borrowed from pie_demo.py -Note that the filtering effects are only effective if your svg renderer +Note that the filtering effects are only effective if your SVG renderer support it. """ @@ -26,7 +26,7 @@ explode = (0, 0.05, 0, 0) # We want to draw the shadow for each pie but we will not use "shadow" -# option as it does'n save the references to the shadow patches. +# option as it doesn't save the references to the shadow patches. pies = ax.pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%') for w in pies[0]: @@ -49,12 +49,11 @@ plt.savefig(f, format="svg") -# filter definition for shadow using a gaussian blur -# and lightening effect. -# The lightening filter is copied from http://www.w3.org/TR/SVG/filters.html +# Filter definition for shadow using a gaussian blur and lighting effect. +# The lighting filter is copied from http://www.w3.org/TR/SVG/filters.html # I tested it with Inkscape and Firefox3. "Gaussian blur" is supported -# in both, but the lightening effect only in the Inkscape. Also note +# in both, but the lighting effect only in Inkscape. Also note # that, Inkscape's exporting also may not support it. filter_def = """ diff --git a/plot_types/arrays/barbs.py b/plot_types/arrays/barbs.py index a54424a58b46..63e492869039 100644 --- a/plot_types/arrays/barbs.py +++ b/plot_types/arrays/barbs.py @@ -1,7 +1,7 @@ """ -================ -barbs(X, Y U, V) -================ +================= +barbs(X, Y, U, V) +================= See `~matplotlib.axes.Axes.barbs`. """ @@ -26,7 +26,7 @@ # plot: fig, ax = plt.subplots() -ax.barbs(X, Y, U, V, barbcolor="C0", flagcolor="C0", length=7, linewidth=1.5) +ax.barbs(X, Y, U, V, barbcolor='C0', flagcolor='C0', length=7, linewidth=1.5) ax.set(xlim=(0, 4.5), ylim=(0, 4.5)) From f47893f07c13a9aab8295f8d2b0b02331bfd91d3 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Wed, 27 Oct 2021 11:01:43 +0200 Subject: [PATCH 231/270] Backport PR #21470: Hide fully transparent latex text in PS output --- lib/matplotlib/backends/backend_ps.py | 3 +++ lib/matplotlib/tests/test_backend_ps.py | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/matplotlib/backends/backend_ps.py b/lib/matplotlib/backends/backend_ps.py index 93d0705ae363..fc1e73d4b18e 100644 --- a/lib/matplotlib/backends/backend_ps.py +++ b/lib/matplotlib/backends/backend_ps.py @@ -593,6 +593,9 @@ def draw_path_collection(self, gc, master_transform, paths, all_transforms, @_log_if_debug_on def draw_tex(self, gc, x, y, s, prop, angle, *, mtext=None): # docstring inherited + if self._is_transparent(gc.get_rgb()): + return # Special handling for fully transparent. + if not hasattr(self, "psfrag"): self._logwarn_once( "The PS backend determines usetex status solely based on " diff --git a/lib/matplotlib/tests/test_backend_ps.py b/lib/matplotlib/tests/test_backend_ps.py index 74776fd048a6..50b1b0bc0cbe 100644 --- a/lib/matplotlib/tests/test_backend_ps.py +++ b/lib/matplotlib/tests/test_backend_ps.py @@ -118,6 +118,16 @@ def test_transparency(): ax.text(.5, .5, "foo", color="r", alpha=0) +@needs_usetex +@image_comparison(["empty.eps"]) +def test_transparency_tex(): + mpl.rcParams['text.usetex'] = True + fig, ax = plt.subplots() + ax.set_axis_off() + ax.plot([0, 1], color="r", alpha=0) + ax.text(.5, .5, "foo", color="r", alpha=0) + + def test_bbox(): fig, ax = plt.subplots() with io.BytesIO() as buf: From 1f85036395f44c0868867bf2959a7e5f6c32d2d5 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 27 Oct 2021 23:13:03 -0400 Subject: [PATCH 232/270] Backport PR #21472: Clarify set_parse_math documentation. --- lib/matplotlib/text.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/text.py b/lib/matplotlib/text.py index c9f7c75851d5..b2b2195837fb 100644 --- a/lib/matplotlib/text.py +++ b/lib/matplotlib/text.py @@ -1232,7 +1232,8 @@ def _preprocess_math(self, s): - If *self* is configured to use TeX, return *s* unchanged except that a single space gets escaped, and the flag "TeX". - Otherwise, if *s* is mathtext (has an even number of unescaped dollar - signs), return *s* and the flag True. + signs) and ``parse_math`` is not set to False, return *s* and the + flag True. - Otherwise, return *s* with dollar signs unescaped, and the flag False. """ @@ -1281,21 +1282,18 @@ def get_usetex(self): def set_parse_math(self, parse_math): """ - Override switch to enable/disable any mathtext - parsing for the given `Text` object. + Override switch to disable any mathtext parsing for this `Text`. Parameters ---------- parse_math : bool - Whether to consider mathtext parsing for the string + If False, this `Text` will never use mathtext. If True, mathtext + will be used if there is an even number of unescaped dollar signs. """ self._parse_math = bool(parse_math) def get_parse_math(self): - """ - Return whether mathtext parsing is considered - for this `Text` object. - """ + """Return whether mathtext parsing is considered for this `Text`.""" return self._parse_math def set_fontname(self, fontname): From 24e2b1a00517b421c1f5197fe6d24a8ade58d156 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Thu, 28 Oct 2021 13:30:56 +0200 Subject: [PATCH 233/270] Backport PR #21387: Fix path simplification of closed loops --- lib/matplotlib/tests/test_simplification.py | 154 ++++++++++++- lib/matplotlib/tests/test_transforms.py | 2 +- src/_backend_agg.cpp | 4 +- src/_backend_agg.h | 16 +- src/_path.h | 20 +- src/path_converters.h | 226 ++++++++++++-------- src/py_adaptors.h | 2 +- 7 files changed, 316 insertions(+), 108 deletions(-) diff --git a/lib/matplotlib/tests/test_simplification.py b/lib/matplotlib/tests/test_simplification.py index 0749d0f3a115..446fc92993e7 100644 --- a/lib/matplotlib/tests/test_simplification.py +++ b/lib/matplotlib/tests/test_simplification.py @@ -6,7 +6,8 @@ import pytest -from matplotlib.testing.decorators import image_comparison +from matplotlib.testing.decorators import ( + check_figures_equal, image_comparison, remove_ticks_and_titles) import matplotlib.pyplot as plt from matplotlib import patches, transforms @@ -230,7 +231,7 @@ def test_sine_plus_noise(): assert simplified.vertices.size == 25240 -@image_comparison(['simplify_curve'], remove_text=True) +@image_comparison(['simplify_curve'], remove_text=True, tol=0.017) def test_simplify_curve(): pp1 = patches.PathPatch( Path([(0, 0), (1, 0), (1, 1), (np.nan, 1), (0, 0), (2, 0), (2, 2), @@ -245,6 +246,155 @@ def test_simplify_curve(): ax.set_ylim((0, 2)) +@check_figures_equal() +def test_closed_path_nan_removal(fig_test, fig_ref): + ax_test = fig_test.subplots(2, 2).flatten() + ax_ref = fig_ref.subplots(2, 2).flatten() + + # NaN on the first point also removes the last point, because it's closed. + path = Path( + [[-3, np.nan], [3, -3], [3, 3], [-3, 3], [-3, -3]], + [Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.CLOSEPOLY]) + ax_test[0].add_patch(patches.PathPatch(path, facecolor='none')) + path = Path( + [[-3, np.nan], [3, -3], [3, 3], [-3, 3], [-3, np.nan]], + [Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.LINETO]) + ax_ref[0].add_patch(patches.PathPatch(path, facecolor='none')) + + # NaN on second-last point should not re-close. + path = Path( + [[-2, -2], [2, -2], [2, 2], [-2, np.nan], [-2, -2]], + [Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.CLOSEPOLY]) + ax_test[0].add_patch(patches.PathPatch(path, facecolor='none')) + path = Path( + [[-2, -2], [2, -2], [2, 2], [-2, np.nan], [-2, -2]], + [Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.LINETO]) + ax_ref[0].add_patch(patches.PathPatch(path, facecolor='none')) + + # Test multiple loops in a single path (with same paths as above). + path = Path( + [[-3, np.nan], [3, -3], [3, 3], [-3, 3], [-3, -3], + [-2, -2], [2, -2], [2, 2], [-2, np.nan], [-2, -2]], + [Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.CLOSEPOLY, + Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.CLOSEPOLY]) + ax_test[1].add_patch(patches.PathPatch(path, facecolor='none')) + path = Path( + [[-3, np.nan], [3, -3], [3, 3], [-3, 3], [-3, np.nan], + [-2, -2], [2, -2], [2, 2], [-2, np.nan], [-2, -2]], + [Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.LINETO, + Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.LINETO]) + ax_ref[1].add_patch(patches.PathPatch(path, facecolor='none')) + + # NaN in first point of CURVE3 should not re-close, and hide entire curve. + path = Path( + [[-1, -1], [1, -1], [1, np.nan], [0, 1], [-1, 1], [-1, -1]], + [Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE3, Path.LINETO, + Path.CLOSEPOLY]) + ax_test[2].add_patch(patches.PathPatch(path, facecolor='none')) + path = Path( + [[-1, -1], [1, -1], [1, np.nan], [0, 1], [-1, 1], [-1, -1]], + [Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE3, Path.LINETO, + Path.CLOSEPOLY]) + ax_ref[2].add_patch(patches.PathPatch(path, facecolor='none')) + + # NaN in second point of CURVE3 should not re-close, and hide entire curve + # plus next line segment. + path = Path( + [[-3, -3], [3, -3], [3, 0], [0, np.nan], [-3, 3], [-3, -3]], + [Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE3, Path.LINETO, + Path.LINETO]) + ax_test[2].add_patch(patches.PathPatch(path, facecolor='none')) + path = Path( + [[-3, -3], [3, -3], [3, 0], [0, np.nan], [-3, 3], [-3, -3]], + [Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE3, Path.LINETO, + Path.LINETO]) + ax_ref[2].add_patch(patches.PathPatch(path, facecolor='none')) + + # NaN in first point of CURVE4 should not re-close, and hide entire curve. + path = Path( + [[-1, -1], [1, -1], [1, np.nan], [0, 0], [0, 1], [-1, 1], [-1, -1]], + [Path.MOVETO, Path.LINETO, Path.CURVE4, Path.CURVE4, Path.CURVE4, + Path.LINETO, Path.CLOSEPOLY]) + ax_test[3].add_patch(patches.PathPatch(path, facecolor='none')) + path = Path( + [[-1, -1], [1, -1], [1, np.nan], [0, 0], [0, 1], [-1, 1], [-1, -1]], + [Path.MOVETO, Path.LINETO, Path.CURVE4, Path.CURVE4, Path.CURVE4, + Path.LINETO, Path.CLOSEPOLY]) + ax_ref[3].add_patch(patches.PathPatch(path, facecolor='none')) + + # NaN in second point of CURVE4 should not re-close, and hide entire curve. + path = Path( + [[-2, -2], [2, -2], [2, 0], [0, np.nan], [0, 2], [-2, 2], [-2, -2]], + [Path.MOVETO, Path.LINETO, Path.CURVE4, Path.CURVE4, Path.CURVE4, + Path.LINETO, Path.LINETO]) + ax_test[3].add_patch(patches.PathPatch(path, facecolor='none')) + path = Path( + [[-2, -2], [2, -2], [2, 0], [0, np.nan], [0, 2], [-2, 2], [-2, -2]], + [Path.MOVETO, Path.LINETO, Path.CURVE4, Path.CURVE4, Path.CURVE4, + Path.LINETO, Path.LINETO]) + ax_ref[3].add_patch(patches.PathPatch(path, facecolor='none')) + + # NaN in third point of CURVE4 should not re-close, and hide entire curve + # plus next line segment. + path = Path( + [[-3, -3], [3, -3], [3, 0], [0, 0], [0, np.nan], [-3, 3], [-3, -3]], + [Path.MOVETO, Path.LINETO, Path.CURVE4, Path.CURVE4, Path.CURVE4, + Path.LINETO, Path.LINETO]) + ax_test[3].add_patch(patches.PathPatch(path, facecolor='none')) + path = Path( + [[-3, -3], [3, -3], [3, 0], [0, 0], [0, np.nan], [-3, 3], [-3, -3]], + [Path.MOVETO, Path.LINETO, Path.CURVE4, Path.CURVE4, Path.CURVE4, + Path.LINETO, Path.LINETO]) + ax_ref[3].add_patch(patches.PathPatch(path, facecolor='none')) + + # Keep everything clean. + for ax in [*ax_test.flat, *ax_ref.flat]: + ax.set(xlim=(-3.5, 3.5), ylim=(-3.5, 3.5)) + remove_ticks_and_titles(fig_test) + remove_ticks_and_titles(fig_ref) + + +@check_figures_equal() +def test_closed_path_clipping(fig_test, fig_ref): + vertices = [] + for roll in range(8): + offset = 0.1 * roll + 0.1 + + # A U-like pattern. + pattern = [ + [-0.5, 1.5], [-0.5, -0.5], [1.5, -0.5], [1.5, 1.5], # Outer square + # With a notch in the top. + [1 - offset / 2, 1.5], [1 - offset / 2, offset], + [offset / 2, offset], [offset / 2, 1.5], + ] + + # Place the initial/final point anywhere in/out of the clipping area. + pattern = np.roll(pattern, roll, axis=0) + pattern = np.concatenate((pattern, pattern[:1, :])) + + vertices.append(pattern) + + # Multiple subpaths are used here to ensure they aren't broken by closed + # loop clipping. + codes = np.full(len(vertices[0]), Path.LINETO) + codes[0] = Path.MOVETO + codes[-1] = Path.CLOSEPOLY + codes = np.tile(codes, len(vertices)) + vertices = np.concatenate(vertices) + + fig_test.set_size_inches((5, 5)) + path = Path(vertices, codes) + fig_test.add_artist(patches.PathPatch(path, facecolor='none')) + + # For reference, we draw the same thing, but unclosed by using a line to + # the last point only. + fig_ref.set_size_inches((5, 5)) + codes = codes.copy() + codes[codes == Path.CLOSEPOLY] = Path.LINETO + path = Path(vertices, codes) + fig_ref.add_artist(patches.PathPatch(path, facecolor='none')) + + @image_comparison(['hatch_simplify'], remove_text=True) def test_hatch(): fig, ax = plt.subplots() diff --git a/lib/matplotlib/tests/test_transforms.py b/lib/matplotlib/tests/test_transforms.py index a31e8de9951a..716ef2117c02 100644 --- a/lib/matplotlib/tests/test_transforms.py +++ b/lib/matplotlib/tests/test_transforms.py @@ -201,7 +201,7 @@ def test_clipping_of_log(): clip=(0, 0, 100, 100), simplify=False) tpoints, tcodes = zip(*result) - assert_allclose(tcodes, path.codes) + assert_allclose(tcodes, path.codes[:-1]) # No longer closed. class NonAffineForTest(mtransforms.Transform): diff --git a/src/_backend_agg.cpp b/src/_backend_agg.cpp index 79575697a08b..9c46148ba4af 100644 --- a/src/_backend_agg.cpp +++ b/src/_backend_agg.cpp @@ -152,10 +152,10 @@ bool RendererAgg::render_clippath(py::PathIterator &clippath, rendererBaseAlphaMask.clear(agg::gray8(0, 0)); transformed_path_t transformed_clippath(clippath, trans); - nan_removed_t nan_removed_clippath(transformed_clippath, true, clippath.has_curves()); + nan_removed_t nan_removed_clippath(transformed_clippath, true, clippath.has_codes()); snapped_t snapped_clippath(nan_removed_clippath, snap_mode, clippath.total_vertices(), 0.0); simplify_t simplified_clippath(snapped_clippath, - clippath.should_simplify() && !clippath.has_curves(), + clippath.should_simplify() && !clippath.has_codes(), clippath.simplify_threshold()); curve_t curved_clippath(simplified_clippath); theRasterizer.add_path(curved_clippath); diff --git a/src/_backend_agg.h b/src/_backend_agg.h index d61dd5baa966..0cd76618e26d 100644 --- a/src/_backend_agg.h +++ b/src/_backend_agg.h @@ -277,7 +277,7 @@ class RendererAgg DashesVector &linestyles, AntialiasedArray &antialiaseds, bool check_snap, - bool has_curves); + bool has_codes); template void _draw_gouraud_triangle(PointArray &points, @@ -478,7 +478,7 @@ RendererAgg::draw_path(GCAgg &gc, PathIterator &path, agg::trans_affine &trans, } transformed_path_t tpath(path, trans); - nan_removed_t nan_removed(tpath, true, path.has_curves()); + nan_removed_t nan_removed(tpath, true, path.has_codes()); clipped_t clipped(nan_removed, clip, width, height); snapped_t snapped(clipped, gc.snap_mode, path.total_vertices(), snapping_linewidth); simplify_t simplified(snapped, simplify, path.simplify_threshold()); @@ -512,7 +512,7 @@ inline void RendererAgg::draw_markers(GCAgg &gc, trans *= agg::trans_affine_translation(0.5, (double)height + 0.5); transformed_path_t marker_path_transformed(marker_path, marker_trans); - nan_removed_t marker_path_nan_removed(marker_path_transformed, true, marker_path.has_curves()); + nan_removed_t marker_path_nan_removed(marker_path_transformed, true, marker_path.has_codes()); snap_t marker_path_snapped(marker_path_nan_removed, gc.snap_mode, marker_path.total_vertices(), @@ -910,7 +910,7 @@ inline void RendererAgg::_draw_path_collection_generic(GCAgg &gc, DashesVector &linestyles, AntialiasedArray &antialiaseds, bool check_snap, - bool has_curves) + bool has_codes) { typedef agg::conv_transform transformed_path_t; typedef PathNanRemover nan_removed_t; @@ -998,11 +998,11 @@ inline void RendererAgg::_draw_path_collection_generic(GCAgg &gc, gc.isaa = antialiaseds(i % Naa); transformed_path_t tpath(path, trans); - nan_removed_t nan_removed(tpath, true, has_curves); + nan_removed_t nan_removed(tpath, true, has_codes); clipped_t clipped(nan_removed, do_clip, width, height); snapped_t snapped( clipped, gc.snap_mode, path.total_vertices(), points_to_pixels(gc.linewidth)); - if (has_curves) { + if (has_codes) { snapped_curve_t curve(snapped); _draw_path(curve, has_clippath, face, gc); } else { @@ -1012,9 +1012,9 @@ inline void RendererAgg::_draw_path_collection_generic(GCAgg &gc, gc.isaa = antialiaseds(i % Naa); transformed_path_t tpath(path, trans); - nan_removed_t nan_removed(tpath, true, has_curves); + nan_removed_t nan_removed(tpath, true, has_codes); clipped_t clipped(nan_removed, do_clip, width, height); - if (has_curves) { + if (has_codes) { curve_t curve(clipped); _draw_path(curve, has_clippath, face, gc); } else { diff --git a/src/_path.h b/src/_path.h index a6b3ba718acd..f4c8fd036d2c 100644 --- a/src/_path.h +++ b/src/_path.h @@ -259,7 +259,7 @@ inline void points_in_path(PointArray &points, } transformed_path_t trans_path(path, trans); - no_nans_t no_nans_path(trans_path, true, path.has_curves()); + no_nans_t no_nans_path(trans_path, true, path.has_codes()); curve_t curved_path(no_nans_path); if (r != 0.0) { contour_t contoured_path(curved_path); @@ -305,7 +305,7 @@ void points_on_path(PointArray &points, } transformed_path_t trans_path(path, trans); - no_nans_t nan_removed_path(trans_path, true, path.has_curves()); + no_nans_t nan_removed_path(trans_path, true, path.has_codes()); curve_t curved_path(nan_removed_path); stroke_t stroked_path(curved_path); stroked_path.width(r * 2.0); @@ -378,7 +378,7 @@ void update_path_extents(PathIterator &path, agg::trans_affine &trans, extent_li unsigned code; transformed_path_t tpath(path, trans); - nan_removed_t nan_removed(tpath, true, path.has_curves()); + nan_removed_t nan_removed(tpath, true, path.has_codes()); nan_removed.rewind(0); @@ -512,7 +512,7 @@ bool path_in_path(PathIterator1 &a, } transformed_path_t b_path_trans(b, btrans); - no_nans_t b_no_nans(b_path_trans, true, b.has_curves()); + no_nans_t b_no_nans(b_path_trans, true, b.has_codes()); curve_t b_curved(b_no_nans); double x, y; @@ -884,8 +884,8 @@ bool path_intersects_path(PathIterator1 &p1, PathIterator2 &p2) return false; } - no_nans_t n1(p1, true, p1.has_curves()); - no_nans_t n2(p2, true, p2.has_curves()); + no_nans_t n1(p1, true, p1.has_codes()); + no_nans_t n2(p2, true, p2.has_codes()); curve_t c1(n1); curve_t c2(n2); @@ -949,7 +949,7 @@ bool path_intersects_rectangle(PathIterator &path, return false; } - no_nans_t no_nans(path, true, path.has_curves()); + no_nans_t no_nans(path, true, path.has_codes()); curve_t curve(no_nans); double cx = (rect_x1 + rect_x2) * 0.5, cy = (rect_y1 + rect_y2) * 0.5; @@ -998,7 +998,7 @@ void convert_path_to_polygons(PathIterator &path, bool simplify = path.should_simplify(); transformed_path_t tpath(path, trans); - nan_removal_t nan_removed(tpath, true, path.has_curves()); + nan_removal_t nan_removed(tpath, true, path.has_codes()); clipped_t clipped(nan_removed, do_clip, width, height); simplify_t simplified(clipped, simplify, path.simplify_threshold()); curve_t curve(simplified); @@ -1063,7 +1063,7 @@ void cleanup_path(PathIterator &path, typedef Sketch sketch_t; transformed_path_t tpath(path, trans); - nan_removal_t nan_removed(tpath, remove_nans, path.has_curves()); + nan_removal_t nan_removed(tpath, remove_nans, path.has_codes()); clipped_t clipped(nan_removed, do_clip, rect); snapped_t snapped(clipped, snap_mode, path.total_vertices(), stroke_width); simplify_t simplified(snapped, do_simplify, path.simplify_threshold()); @@ -1222,7 +1222,7 @@ bool convert_to_string(PathIterator &path, bool do_clip = (clip_rect.x1 < clip_rect.x2 && clip_rect.y1 < clip_rect.y2); transformed_path_t tpath(path, trans); - nan_removal_t nan_removed(tpath, true, path.has_curves()); + nan_removal_t nan_removed(tpath, true, path.has_codes()); clipped_t clipped(nan_removed, do_clip, clip_rect); simplify_t simplified(clipped, simplify, path.simplify_threshold()); diff --git a/src/path_converters.h b/src/path_converters.h index 5a1d28964662..6cbbf9c14115 100644 --- a/src/path_converters.h +++ b/src/path_converters.h @@ -162,16 +162,22 @@ class PathNanRemover : protected EmbeddedQueue<4> { VertexSource *m_source; bool m_remove_nans; - bool m_has_curves; + bool m_has_codes; bool valid_segment_exists; + bool m_last_segment_valid; + bool m_was_broken; + double m_initX; + double m_initY; public: - /* has_curves should be true if the path contains bezier curve - segments, as this requires a slower algorithm to remove the - NaNs. When in doubt, set to true. + /* has_codes should be true if the path contains bezier curve segments, or + * closed loops, as this requires a slower algorithm to remove the NaNs. + * When in doubt, set to true. */ - PathNanRemover(VertexSource &source, bool remove_nans, bool has_curves) - : m_source(&source), m_remove_nans(remove_nans), m_has_curves(has_curves) + PathNanRemover(VertexSource &source, bool remove_nans, bool has_codes) + : m_source(&source), m_remove_nans(remove_nans), m_has_codes(has_codes), + m_last_segment_valid(false), m_was_broken(false), + m_initX(nan("")), m_initY(nan("")) { // ignore all close/end_poly commands until after the first valid // (nan-free) command is encountered @@ -192,8 +198,9 @@ class PathNanRemover : protected EmbeddedQueue<4> return m_source->vertex(x, y); } - if (m_has_curves) { - /* This is the slow method for when there might be curves. */ + if (m_has_codes) { + /* This is the slow method for when there might be curves or closed + * loops. */ if (queue_pop(&code, x, y)) { return code; } @@ -205,14 +212,41 @@ class PathNanRemover : protected EmbeddedQueue<4> are found along the way, the queue is emptied, and the next curve segment is handled. */ code = m_source->vertex(x, y); - /* The vertices attached to STOP and CLOSEPOLY left are never - used, so we leave them as-is even if NaN. However, CLOSEPOLY - only makes sense if a valid MOVETO command has already been - emitted. */ - if (code == agg::path_cmd_stop || - (code == (agg::path_cmd_end_poly | agg::path_flags_close) && - valid_segment_exists)) { + /* The vertices attached to STOP and CLOSEPOLY are never used, + * so we leave them as-is even if NaN. */ + if (code == agg::path_cmd_stop) { return code; + } else if (code == (agg::path_cmd_end_poly | + agg::path_flags_close) && + valid_segment_exists) { + /* However, CLOSEPOLY only makes sense if a valid MOVETO + * command has already been emitted. But if a NaN was + * removed in the path, then we cannot close it as it is no + * longer a loop. We must emulate that by inserting a + * LINETO instead. */ + if (m_was_broken) { + if (m_last_segment_valid && ( + std::isfinite(m_initX) && + std::isfinite(m_initY))) { + /* Join to start if both ends are valid. */ + queue_push(agg::path_cmd_line_to, m_initX, m_initY); + break; + } else { + /* Skip the close, in case there are additional + * subpaths. */ + continue; + } + m_was_broken = false; + break; + } else { + return code; + } + } else if (code == agg::path_cmd_move_to) { + /* Save the initial point in order to produce the last + * segment closing a loop, *if* we broke the loop. */ + m_initX = *x; + m_initY = *y; + m_was_broken = false; } if (needs_move_to) { @@ -220,22 +254,24 @@ class PathNanRemover : protected EmbeddedQueue<4> } size_t num_extra_points = num_extra_points_map[code & 0xF]; - bool has_nan = (!(std::isfinite(*x) && std::isfinite(*y))); + m_last_segment_valid = (std::isfinite(*x) && std::isfinite(*y)); queue_push(code, *x, *y); /* Note: this test can not be short-circuited, since we need to advance through the entire curve no matter what */ for (size_t i = 0; i < num_extra_points; ++i) { m_source->vertex(x, y); - has_nan = has_nan || !(std::isfinite(*x) && std::isfinite(*y)); + m_last_segment_valid = m_last_segment_valid && + (std::isfinite(*x) && std::isfinite(*y)); queue_push(code, *x, *y); } - if (!has_nan) { + if (m_last_segment_valid) { valid_segment_exists = true; break; } + m_was_broken = true; queue_clear(); /* If the last point is finite, we use that for the @@ -254,9 +290,9 @@ class PathNanRemover : protected EmbeddedQueue<4> } else { return agg::path_cmd_stop; } - } else // !m_has_curves + } else // !m_has_codes { - /* This is the fast path for when we know we have no curves */ + /* This is the fast path for when we know we have no codes. */ code = m_source->vertex(x, y); if (code == agg::path_cmd_stop || @@ -300,6 +336,7 @@ class PathClipper : public EmbeddedQueue<3> double m_initX; double m_initY; bool m_has_init; + bool m_was_clipped; public: PathClipper(VertexSource &source, bool do_clipping, double width, double height) @@ -311,7 +348,8 @@ class PathClipper : public EmbeddedQueue<3> m_moveto(true), m_initX(nan("")), m_initY(nan("")), - m_has_init(false) + m_has_init(false), + m_was_clipped(false) { // empty } @@ -325,7 +363,8 @@ class PathClipper : public EmbeddedQueue<3> m_moveto(true), m_initX(nan("")), m_initY(nan("")), - m_has_init(false) + m_has_init(false), + m_was_clipped(false) { m_cliprect.x1 -= 1.0; m_cliprect.y1 -= 1.0; @@ -336,21 +375,29 @@ class PathClipper : public EmbeddedQueue<3> inline void rewind(unsigned path_id) { m_has_init = false; + m_was_clipped = false; m_moveto = true; m_source->rewind(path_id); } - int draw_clipped_line(double x0, double y0, double x1, double y1) + int draw_clipped_line(double x0, double y0, double x1, double y1, + bool closed=false) { unsigned moved = agg::clip_line_segment(&x0, &y0, &x1, &y1, m_cliprect); // moved >= 4 - Fully clipped // moved & 1 != 0 - First point has been moved // moved & 2 != 0 - Second point has been moved + m_was_clipped = m_was_clipped || (moved != 0); if (moved < 4) { if (moved & 1 || m_moveto) { queue_push(agg::path_cmd_move_to, x0, y0); } queue_push(agg::path_cmd_line_to, x1, y1); + if (closed && !m_was_clipped) { + // Close the path only if the end point hasn't moved. + queue_push(agg::path_cmd_end_poly | agg::path_flags_close, + x1, y1); + } m_moveto = false; return 1; @@ -364,75 +411,91 @@ class PathClipper : public EmbeddedQueue<3> unsigned code; bool emit_moveto = false; - if (m_do_clipping) { - /* This is the slow path where we actually do clipping */ + if (!m_do_clipping) { + // If not doing any clipping, just pass along the vertices verbatim + return m_source->vertex(x, y); + } - if (queue_pop(&code, x, y)) { - return code; - } + /* This is the slow path where we actually do clipping */ - while ((code = m_source->vertex(x, y)) != agg::path_cmd_stop) { - emit_moveto = false; + if (queue_pop(&code, x, y)) { + return code; + } - switch (code) { - case (agg::path_cmd_end_poly | agg::path_flags_close): - if (m_has_init) { - draw_clipped_line(m_lastX, m_lastY, m_initX, m_initY); - } + while ((code = m_source->vertex(x, y)) != agg::path_cmd_stop) { + emit_moveto = false; + + switch (code) { + case (agg::path_cmd_end_poly | agg::path_flags_close): + if (m_has_init) { + // Queue the line from last point to the initial point, and + // if never clipped, add a close code. + draw_clipped_line(m_lastX, m_lastY, m_initX, m_initY, + true); + } else { + // An empty path that is immediately closed. queue_push( agg::path_cmd_end_poly | agg::path_flags_close, m_lastX, m_lastY); + } + // If paths were not clipped, then the above code queued + // something, and we should exit the loop. Otherwise, continue + // to the next point, as there may be a new subpath. + if (queue_nonempty()) { goto exit_loop; + } + break; + + case agg::path_cmd_move_to: + + // was the last command a moveto (and we have + // seen at least one command ? + // if so, shove it in the queue if in clip box + if (m_moveto && m_has_init && + m_lastX >= m_cliprect.x1 && + m_lastX <= m_cliprect.x2 && + m_lastY >= m_cliprect.y1 && + m_lastY <= m_cliprect.y2) { + // push the last moveto onto the queue + queue_push(agg::path_cmd_move_to, m_lastX, m_lastY); + // flag that we need to emit it + emit_moveto = true; + } + // update the internal state for this moveto + m_initX = m_lastX = *x; + m_initY = m_lastY = *y; + m_has_init = true; + m_moveto = true; + m_was_clipped = false; + // if the last command was moveto exit the loop to emit the code + if (emit_moveto) { + goto exit_loop; + } + // else, break and get the next point + break; - case agg::path_cmd_move_to: - - // was the last command a moveto (and we have - // seen at least one command ? - // if so, shove it in the queue if in clip box - if (m_moveto && m_has_init && - m_lastX >= m_cliprect.x1 && - m_lastX <= m_cliprect.x2 && - m_lastY >= m_cliprect.y1 && - m_lastY <= m_cliprect.y2) { - // push the last moveto onto the queue - queue_push(agg::path_cmd_move_to, m_lastX, m_lastY); - // flag that we need to emit it - emit_moveto = true; - } - // update the internal state for this moveto - m_initX = m_lastX = *x; - m_initY = m_lastY = *y; - m_has_init = true; - m_moveto = true; - // if the last command was moveto exit the loop to emit the code - if (emit_moveto) { - goto exit_loop; - } - // else, break and get the next point - break; - - case agg::path_cmd_line_to: - if (draw_clipped_line(m_lastX, m_lastY, *x, *y)) { - m_lastX = *x; - m_lastY = *y; - goto exit_loop; - } - m_lastX = *x; - m_lastY = *y; - break; - - default: - if (m_moveto) { - queue_push(agg::path_cmd_move_to, m_lastX, m_lastY); - m_moveto = false; - } - - queue_push(code, *x, *y); + case agg::path_cmd_line_to: + if (draw_clipped_line(m_lastX, m_lastY, *x, *y)) { m_lastX = *x; m_lastY = *y; goto exit_loop; } + m_lastX = *x; + m_lastY = *y; + break; + + default: + if (m_moveto) { + queue_push(agg::path_cmd_move_to, m_lastX, m_lastY); + m_moveto = false; + } + + queue_push(code, *x, *y); + m_lastX = *x; + m_lastY = *y; + goto exit_loop; } + } exit_loop: @@ -452,11 +515,6 @@ class PathClipper : public EmbeddedQueue<3> } return agg::path_cmd_stop; - } else { - // If not doing any clipping, just pass along the vertices - // verbatim - return m_source->vertex(x, y); - } } }; diff --git a/src/py_adaptors.h b/src/py_adaptors.h index b7bf4931f228..7722137dc6e1 100644 --- a/src/py_adaptors.h +++ b/src/py_adaptors.h @@ -175,7 +175,7 @@ class PathIterator return m_simplify_threshold; } - inline bool has_curves() const + inline bool has_codes() const { return m_codes != NULL; } From eb4eb9468736a7c0520e7dd61ba70fc827cea51b Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Thu, 28 Oct 2021 21:11:58 +0200 Subject: [PATCH 234/270] Backport PR #21478: Fix GTK4 embedding example --- lib/matplotlib/backends/_backend_gtk.py | 2 +- lib/matplotlib/backends/backend_gtk3agg.py | 4 +++- lib/matplotlib/backends/backend_gtk4agg.py | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/backends/_backend_gtk.py b/lib/matplotlib/backends/_backend_gtk.py index f652815f5120..7b0341d644fb 100644 --- a/lib/matplotlib/backends/_backend_gtk.py +++ b/lib/matplotlib/backends/_backend_gtk.py @@ -43,7 +43,7 @@ def _create_application(): if _application is None: app = Gio.Application.get_default() - if app is None or getattr(app, '_created_by_matplotlib'): + if app is None or getattr(app, '_created_by_matplotlib', False): # display_is_valid returns False only if on Linux and neither X11 # nor Wayland display can be opened. if not mpl._c_internal_utils.display_is_valid(): diff --git a/lib/matplotlib/backends/backend_gtk3agg.py b/lib/matplotlib/backends/backend_gtk3agg.py index 14206484e73d..ef1eed5cccdd 100644 --- a/lib/matplotlib/backends/backend_gtk3agg.py +++ b/lib/matplotlib/backends/backend_gtk3agg.py @@ -70,8 +70,10 @@ def blit(self, bbox=None): self.queue_draw_area(x, y, width, height) def draw(self): + # Call these explicitly because GTK's draw is a GObject method which + # isn't cooperative with Python class methods. backend_agg.FigureCanvasAgg.draw(self) - super().draw() + backend_gtk3.FigureCanvasGTK3.draw(self) class FigureManagerGTK3Agg(backend_gtk3.FigureManagerGTK3): diff --git a/lib/matplotlib/backends/backend_gtk4agg.py b/lib/matplotlib/backends/backend_gtk4agg.py index 58f085e85d8f..386f1ad0d2f8 100644 --- a/lib/matplotlib/backends/backend_gtk4agg.py +++ b/lib/matplotlib/backends/backend_gtk4agg.py @@ -27,7 +27,7 @@ def on_draw_event(self, widget, ctx): ctx = backend_cairo._to_context(ctx) buf = cbook._unmultiplied_rgba8888_to_premultiplied_argb32( - np.asarray(self.renderer.buffer_rgba())) + np.asarray(self.get_renderer().buffer_rgba())) height, width, _ = buf.shape image = cairo.ImageSurface.create_for_data( buf.ravel().data, cairo.FORMAT_ARGB32, width, height) @@ -38,8 +38,10 @@ def on_draw_event(self, widget, ctx): return False def draw(self): + # Call these explicitly because GTK's draw is a GObject method which + # isn't cooperative with Python class methods. backend_agg.FigureCanvasAgg.draw(self) - super().draw() + backend_gtk4.FigureCanvasGTK4.draw(self) class FigureManagerGTK4Agg(backend_gtk4.FigureManagerGTK4): From d0ffc4fd048fcecbfb487d4e8b6cf03ce06a3da6 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Fri, 29 Oct 2021 01:51:00 +0200 Subject: [PATCH 235/270] Backport PR #21488: Added to contour docs --- lib/matplotlib/contour.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/matplotlib/contour.py b/lib/matplotlib/contour.py index 9f1307c44791..7e76aa39f8df 100644 --- a/lib/matplotlib/contour.py +++ b/lib/matplotlib/contour.py @@ -1593,6 +1593,8 @@ def _initialize_x_y(self, z): that ``len(X) == N`` is the number of columns in *Z* and ``len(Y) == M`` is the number of rows in *Z*. + *X* and *Y* must both be ordered monotonically. + If not given, they are assumed to be integer indices, i.e. ``X = range(N)``, ``Y = range(M)``. From 1658f9967402b4cceb316a62870ba74c3db8bee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=B6=C3=9Fler?= <60656686+FelixNoessler@users.noreply.github.com> Date: Fri, 29 Oct 2021 05:57:55 +0200 Subject: [PATCH 236/270] Backport PR #21492: added parameter documentation for MultiCursor --- lib/matplotlib/widgets.py | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index 0c8c59176838..35d9ed3bfe4f 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -1677,25 +1677,36 @@ class MultiCursor(Widget): For the cursor to remain responsive you must keep a reference to it. - Example usage:: + Parameters + ---------- + canvas : `matplotlib.backend_bases.FigureCanvasBase` + The FigureCanvas that contains all the axes. + + axes : list of `matplotlib.axes.Axes` + The `~.axes.Axes` to attach the cursor to. - from matplotlib.widgets import MultiCursor - import matplotlib.pyplot as plt - import numpy as np + useblit : bool, default: True + Use blitting for faster drawing if supported by the backend. - fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True) - t = np.arange(0.0, 2.0, 0.01) - ax1.plot(t, np.sin(2*np.pi*t)) - ax2.plot(t, np.sin(4*np.pi*t)) + horizOn : bool, default: False + Whether to draw the horizontal line. - multi = MultiCursor(fig.canvas, (ax1, ax2), color='r', lw=1, - horizOn=False, vertOn=True) - plt.show() + vertOn: bool, default: True + Whether to draw the vertical line. + Other Parameters + ---------------- + **lineprops + `.Line2D` properties that control the appearance of the lines. + See also `~.Axes.axhline`. + + Examples + -------- + See :doc:`/gallery/widgets/multicursor`. """ + def __init__(self, canvas, axes, useblit=True, horizOn=False, vertOn=True, **lineprops): - self.canvas = canvas self.axes = axes self.horizOn = horizOn From bd4894959669226876bfa21653f1b2084221f304 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Fri, 29 Oct 2021 09:20:46 +0200 Subject: [PATCH 237/270] Backport PR #21484: Replacement for imread should return an array --- lib/matplotlib/image.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py index 2036bf7e17c9..cdb8580c3627 100644 --- a/lib/matplotlib/image.py +++ b/lib/matplotlib/image.py @@ -1486,7 +1486,7 @@ def imread(fname, format=None): Passing a URL is deprecated. Please open the URL for reading and pass the result to Pillow, e.g. with - ``PIL.Image.open(urllib.request.urlopen(url))``. + ``np.array(PIL.Image.open(urllib.request.urlopen(url)))``. format : str, optional The image file format assumed for reading the data. The image is loaded as a PNG file if *format* is set to "png", if *fname* is a path @@ -1542,7 +1542,7 @@ def imread(fname, format=None): "deprecated since %(since)s and will no longer be supported " "%(removal)s. Please open the URL for reading and pass the " "result to Pillow, e.g. with " - "``PIL.Image.open(urllib.request.urlopen(url))``.") + "``np.array(PIL.Image.open(urllib.request.urlopen(url)))``.") # hide imports to speed initial import on systems with slow linkers from urllib import request ssl_ctx = mpl._get_ssl_context() From 3e5a57271ac5a2934c564ad280e028c4b8a11f67 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Sat, 30 Oct 2021 03:30:00 -0400 Subject: [PATCH 238/270] Backport PR #21481: FIX: spanning subfigures --- lib/matplotlib/_layoutgrid.py | 3 ++- lib/matplotlib/tests/test_constrainedlayout.py | 7 +++++++ lib/matplotlib/tests/test_figure.py | 7 +++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/_layoutgrid.py b/lib/matplotlib/_layoutgrid.py index 80a0ee2c86fb..8b7b140f600b 100644 --- a/lib/matplotlib/_layoutgrid.py +++ b/lib/matplotlib/_layoutgrid.py @@ -169,7 +169,8 @@ def hard_constraints(self): self.solver.addConstraint(c | 'required') def add_child(self, child, i=0, j=0): - self.children[i, j] = child + # np.ix_ returns the cross product of i and j indices + self.children[np.ix_(np.atleast_1d(i), np.atleast_1d(j))] = child def parent_constraints(self): # constraints that are due to the parent... diff --git a/lib/matplotlib/tests/test_constrainedlayout.py b/lib/matplotlib/tests/test_constrainedlayout.py index a8222a73d5ee..a717eace8348 100644 --- a/lib/matplotlib/tests/test_constrainedlayout.py +++ b/lib/matplotlib/tests/test_constrainedlayout.py @@ -560,3 +560,10 @@ def test_suplabels(): pos = ax.get_tightbbox(fig.canvas.get_renderer()) assert pos.y0 > pos0.y0 + 10.0 assert pos.x0 > pos0.x0 + 10.0 + + +def test_gridspec_addressing(): + fig = plt.figure() + gs = fig.add_gridspec(3, 3) + sp = fig.add_subplot(gs[0:, 1:]) + fig.draw_without_rendering() diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py index bc2256ce3c54..cb8f63893aea 100644 --- a/lib/matplotlib/tests/test_figure.py +++ b/lib/matplotlib/tests/test_figure.py @@ -1073,6 +1073,7 @@ def test_subfigure_spanning(): fig.add_subfigure(gs[0, 0]), fig.add_subfigure(gs[0:2, 1]), fig.add_subfigure(gs[2, 1:3]), + fig.add_subfigure(gs[0:, 1:]) ] w = 640 @@ -1086,6 +1087,12 @@ def test_subfigure_spanning(): np.testing.assert_allclose(sub_figs[2].bbox.min, [w / 3, 0]) np.testing.assert_allclose(sub_figs[2].bbox.max, [w, h / 3]) + # check here that slicing actually works. Last sub_fig + # with open slices failed, but only on draw... + for i in range(4): + sub_figs[i].add_subplot() + fig.draw_without_rendering() + @mpl.style.context('mpl20') def test_subfigure_ticks(): From 3f702b4c9ed2faecb9c15ab3394a895a65e0706c Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Wed, 3 Nov 2021 07:55:35 +0100 Subject: [PATCH 239/270] Backport PR #21491: Relocate inheritance diagram to the top of the document --- doc/api/animation_api.rst | 23 ++++++++++++----------- doc/api/artist_api.rst | 13 +++++++------ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/doc/api/animation_api.rst b/doc/api/animation_api.rst index 7ad0f5c150c6..5ac5d1b1aad1 100644 --- a/doc/api/animation_api.rst +++ b/doc/api/animation_api.rst @@ -11,6 +11,18 @@ :local: :backlinks: entry + +Inheritance Diagrams +==================== + +.. inheritance-diagram:: matplotlib.animation.FuncAnimation matplotlib.animation.ArtistAnimation + :private-bases: + :parts: 1 + +.. inheritance-diagram:: matplotlib.animation.FFMpegFileWriter matplotlib.animation.FFMpegWriter matplotlib.animation.ImageMagickFileWriter matplotlib.animation.ImageMagickWriter + :private-bases: + :parts: 1 + Animation ========= @@ -288,14 +300,3 @@ and mixins are provided. See the source code for how to easily implement new `MovieWriter` classes. - -Inheritance Diagrams -==================== - -.. inheritance-diagram:: matplotlib.animation.FuncAnimation matplotlib.animation.ArtistAnimation - :private-bases: - :parts: 1 - -.. inheritance-diagram:: matplotlib.animation.FFMpegFileWriter matplotlib.animation.FFMpegWriter matplotlib.animation.ImageMagickFileWriter matplotlib.animation.ImageMagickWriter - :private-bases: - :parts: 1 diff --git a/doc/api/artist_api.rst b/doc/api/artist_api.rst index 98bfb1f057c8..119d5fa3464c 100644 --- a/doc/api/artist_api.rst +++ b/doc/api/artist_api.rst @@ -4,16 +4,17 @@ ``matplotlib.artist`` ********************* -.. inheritance-diagram:: matplotlib.axes._axes.Axes matplotlib.axes._base._AxesBase matplotlib.axis.Axis matplotlib.axis.Tick matplotlib.axis.XAxis matplotlib.axis.XTick matplotlib.axis.YAxis matplotlib.axis.YTick matplotlib.collections.AsteriskPolygonCollection matplotlib.collections.BrokenBarHCollection matplotlib.collections.CircleCollection matplotlib.collections.Collection matplotlib.collections.EllipseCollection matplotlib.collections.EventCollection matplotlib.collections.LineCollection matplotlib.collections.PatchCollection matplotlib.collections.PathCollection matplotlib.collections.PolyCollection matplotlib.collections.QuadMesh matplotlib.collections.RegularPolyCollection matplotlib.collections.StarPolygonCollection matplotlib.collections.TriMesh matplotlib.collections._CollectionWithSizes matplotlib.contour.ClabelText matplotlib.figure.Figure matplotlib.image.AxesImage matplotlib.image.BboxImage matplotlib.image.FigureImage matplotlib.image.NonUniformImage matplotlib.image.PcolorImage matplotlib.image._ImageBase matplotlib.legend.Legend matplotlib.lines.Line2D matplotlib.offsetbox.AnchoredOffsetbox matplotlib.offsetbox.AnchoredText matplotlib.offsetbox.AnnotationBbox matplotlib.offsetbox.AuxTransformBox matplotlib.offsetbox.DrawingArea matplotlib.offsetbox.HPacker matplotlib.offsetbox.OffsetBox matplotlib.offsetbox.OffsetImage matplotlib.offsetbox.PackerBase matplotlib.offsetbox.PaddedBox matplotlib.offsetbox.TextArea matplotlib.offsetbox.VPacker matplotlib.patches.Arc matplotlib.patches.Arrow matplotlib.patches.Circle matplotlib.patches.CirclePolygon matplotlib.patches.ConnectionPatch matplotlib.patches.Ellipse matplotlib.patches.FancyArrow matplotlib.patches.FancyArrowPatch matplotlib.patches.FancyBboxPatch matplotlib.patches.Patch matplotlib.patches.PathPatch matplotlib.patches.StepPatch matplotlib.patches.Polygon matplotlib.patches.Rectangle matplotlib.patches.RegularPolygon matplotlib.patches.Shadow matplotlib.patches.Wedge matplotlib.projections.geo.AitoffAxes matplotlib.projections.geo.GeoAxes matplotlib.projections.geo.HammerAxes matplotlib.projections.geo.LambertAxes matplotlib.projections.geo.MollweideAxes matplotlib.projections.polar.PolarAxes matplotlib.quiver.Barbs matplotlib.quiver.Quiver matplotlib.quiver.QuiverKey matplotlib.spines.Spine matplotlib.table.Cell matplotlib.table.CustomCell matplotlib.table.Table matplotlib.text.Annotation matplotlib.text.Text - :parts: 1 - :private-bases: - - - .. automodule:: matplotlib.artist :no-members: :no-undoc-members: +Inheritance Diagrams +==================== + +.. inheritance-diagram:: matplotlib.axes._axes.Axes matplotlib.axes._base._AxesBase matplotlib.axis.Axis matplotlib.axis.Tick matplotlib.axis.XAxis matplotlib.axis.XTick matplotlib.axis.YAxis matplotlib.axis.YTick matplotlib.collections.AsteriskPolygonCollection matplotlib.collections.BrokenBarHCollection matplotlib.collections.CircleCollection matplotlib.collections.Collection matplotlib.collections.EllipseCollection matplotlib.collections.EventCollection matplotlib.collections.LineCollection matplotlib.collections.PatchCollection matplotlib.collections.PathCollection matplotlib.collections.PolyCollection matplotlib.collections.QuadMesh matplotlib.collections.RegularPolyCollection matplotlib.collections.StarPolygonCollection matplotlib.collections.TriMesh matplotlib.collections._CollectionWithSizes matplotlib.contour.ClabelText matplotlib.figure.Figure matplotlib.image.AxesImage matplotlib.image.BboxImage matplotlib.image.FigureImage matplotlib.image.NonUniformImage matplotlib.image.PcolorImage matplotlib.image._ImageBase matplotlib.legend.Legend matplotlib.lines.Line2D matplotlib.offsetbox.AnchoredOffsetbox matplotlib.offsetbox.AnchoredText matplotlib.offsetbox.AnnotationBbox matplotlib.offsetbox.AuxTransformBox matplotlib.offsetbox.DrawingArea matplotlib.offsetbox.HPacker matplotlib.offsetbox.OffsetBox matplotlib.offsetbox.OffsetImage matplotlib.offsetbox.PackerBase matplotlib.offsetbox.PaddedBox matplotlib.offsetbox.TextArea matplotlib.offsetbox.VPacker matplotlib.patches.Arc matplotlib.patches.Arrow matplotlib.patches.Circle matplotlib.patches.CirclePolygon matplotlib.patches.ConnectionPatch matplotlib.patches.Ellipse matplotlib.patches.FancyArrow matplotlib.patches.FancyArrowPatch matplotlib.patches.FancyBboxPatch matplotlib.patches.Patch matplotlib.patches.PathPatch matplotlib.patches.StepPatch matplotlib.patches.Polygon matplotlib.patches.Rectangle matplotlib.patches.RegularPolygon matplotlib.patches.Shadow matplotlib.patches.Wedge matplotlib.projections.geo.AitoffAxes matplotlib.projections.geo.GeoAxes matplotlib.projections.geo.HammerAxes matplotlib.projections.geo.LambertAxes matplotlib.projections.geo.MollweideAxes matplotlib.projections.polar.PolarAxes matplotlib.quiver.Barbs matplotlib.quiver.Quiver matplotlib.quiver.QuiverKey matplotlib.spines.Spine matplotlib.table.Cell matplotlib.table.CustomCell matplotlib.table.Table matplotlib.text.Annotation matplotlib.text.Text + :parts: 1 + :private-bases: + ``Artist`` class ================ From 27ab2060cfa7511e2d25f7d520c4050dd56e7cae Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 5 Nov 2021 03:38:01 -0400 Subject: [PATCH 240/270] Ignore transOffset if no offsets passed to Collection This fixes a regression from #20717 in networkx (Fixes #21517), but we'll go forward with the change in a later release to give them time to fix it. --- .../api_changes_3.5.0/deprecations.rst | 4 ++++ lib/matplotlib/collections.py | 12 ++++++++++++ lib/matplotlib/tests/test_collections.py | 7 ++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/doc/api/prev_api_changes/api_changes_3.5.0/deprecations.rst b/doc/api/prev_api_changes/api_changes_3.5.0/deprecations.rst index 3118c2bca0e6..2132e0faf9db 100644 --- a/doc/api/prev_api_changes/api_changes_3.5.0/deprecations.rst +++ b/doc/api/prev_api_changes/api_changes_3.5.0/deprecations.rst @@ -269,6 +269,10 @@ Miscellaneous deprecations - ``cm.LUTSIZE`` is deprecated. Use :rc:`image.lut` instead. This value only affects colormap quantization levels for default colormaps generated at module import time. +- ``Collection.__init__`` previously ignored *transOffset* without *offsets* also + being specified. In the future, *transOffset* will begin having an effect + regardless of *offsets*. In the meantime, if you wish to set *transOffset*, + call `.Collection.set_offset_transform` explicitly. - ``Colorbar.patch`` is deprecated; this attribute is not correctly updated anymore. - ``ContourLabeler.get_label_width`` is deprecated. diff --git a/lib/matplotlib/collections.py b/lib/matplotlib/collections.py index 619c62b5ca14..562362ab0c37 100644 --- a/lib/matplotlib/collections.py +++ b/lib/matplotlib/collections.py @@ -202,6 +202,18 @@ def __init__(self, if offsets.shape == (2,): offsets = offsets[None, :] self._offsets = offsets + elif transOffset is not None: + _api.warn_deprecated( + '3.5', + removal='3.6', + message='Passing *transOffset* without *offsets* has no ' + 'effect. This behavior is deprecated since %(since)s ' + 'and %(removal)s, *transOffset* will begin having an ' + 'effect regardless of *offsets*. In the meantime, if ' + 'you wish to set *transOffset*, call ' + 'collection.set_offset_transform(transOffset) ' + 'explicitly.') + transOffset = None self._transOffset = transOffset diff --git a/lib/matplotlib/tests/test_collections.py b/lib/matplotlib/tests/test_collections.py index a80c8d717416..9f92206e51cb 100644 --- a/lib/matplotlib/tests/test_collections.py +++ b/lib/matplotlib/tests/test_collections.py @@ -1072,8 +1072,13 @@ def test_set_offsets_late(): def test_set_offset_transform(): + with pytest.warns(MatplotlibDeprecationWarning, + match='.transOffset. without .offsets. has no effect'): + mcollections.Collection([], + transOffset=mtransforms.IdentityTransform()) + skew = mtransforms.Affine2D().skew(2, 2) - init = mcollections.Collection([], transOffset=skew) + init = mcollections.Collection([], offsets=[], transOffset=skew) late = mcollections.Collection([]) late.set_offset_transform(skew) From 85955bfe79ec2ebaacf9179b47f81e5778f6c22a Mon Sep 17 00:00:00 2001 From: MeeseeksMachine <39504233+meeseeksmachine@users.noreply.github.com> Date: Sun, 7 Nov 2021 08:12:56 -0800 Subject: [PATCH 241/270] Backport PR #21443: FIX: re-instate ability to have position in axes (#21543) Co-authored-by: Elliott Sales de Andrade --- lib/matplotlib/pyplot.py | 6 +++++- lib/matplotlib/tests/test_pyplot.py | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/pyplot.py b/lib/matplotlib/pyplot.py index a7deb9a5e78b..89b1f647e1b0 100644 --- a/lib/matplotlib/pyplot.py +++ b/lib/matplotlib/pyplot.py @@ -1059,8 +1059,12 @@ def axes(arg=None, **kwargs): plt.axes((left, bottom, width, height), facecolor='w') """ fig = gcf() + pos = kwargs.pop('position', None) if arg is None: - return fig.add_subplot(**kwargs) + if pos is None: + return fig.add_subplot(**kwargs) + else: + return fig.add_axes(pos, **kwargs) else: return fig.add_axes(arg, **kwargs) diff --git a/lib/matplotlib/tests/test_pyplot.py b/lib/matplotlib/tests/test_pyplot.py index d0d38c78ed7f..0105c6f22d47 100644 --- a/lib/matplotlib/tests/test_pyplot.py +++ b/lib/matplotlib/tests/test_pyplot.py @@ -1,4 +1,5 @@ import difflib +import numpy as np import subprocess import sys from pathlib import Path @@ -320,3 +321,17 @@ def test_polar_second_call(): ln2, = plt.polar(1.57, .5, 'bo') assert isinstance(ln2, mpl.lines.Line2D) assert ln1.axes is ln2.axes + + +def test_fallback_position(): + # check that position kwarg works if rect not supplied + axref = plt.axes([0.2, 0.2, 0.5, 0.5]) + axtest = plt.axes(position=[0.2, 0.2, 0.5, 0.5]) + np.testing.assert_allclose(axtest.bbox.get_points(), + axref.bbox.get_points()) + + # check that position kwarg ignored if rect is supplied + axref = plt.axes([0.2, 0.2, 0.5, 0.5]) + axtest = plt.axes([0.2, 0.2, 0.5, 0.5], position=[0.1, 0.1, 0.8, 0.8]) + np.testing.assert_allclose(axtest.bbox.get_points(), + axref.bbox.get_points()) From 8fcd3b1a4a670b8b056aad6c2b4c1c6f435eb486 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Mon, 8 Nov 2021 00:11:14 +0100 Subject: [PATCH 242/270] Backport PR #21553: Fix check for manager presence in blocking_input. --- lib/matplotlib/_blocking_input.py | 2 +- lib/matplotlib/blocking_input.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/_blocking_input.py b/lib/matplotlib/_blocking_input.py index 5842f7f3fb30..45f077571443 100644 --- a/lib/matplotlib/_blocking_input.py +++ b/lib/matplotlib/_blocking_input.py @@ -18,7 +18,7 @@ def blocking_input_loop(figure, event_names, timeout, handler): Function called for each event; it can force an early exit of the event loop by calling ``canvas.stop_event_loop()``. """ - if hasattr(figure.canvas, "manager"): + if figure.canvas.manager: figure.show() # Ensure that the figure is shown if we are managing it. # Connect the events to the on_event function call. cids = [figure.canvas.mpl_connect(name, handler) for name in event_names] diff --git a/lib/matplotlib/blocking_input.py b/lib/matplotlib/blocking_input.py index 4a0082e24043..f59a54ff7343 100644 --- a/lib/matplotlib/blocking_input.py +++ b/lib/matplotlib/blocking_input.py @@ -83,7 +83,7 @@ def __call__(self, n=1, timeout=30): self.n = n self.events = [] - if hasattr(self.fig.canvas, "manager"): + if self.figure.canvas.manager: # Ensure that the figure is shown, if we are managing it. self.fig.show() # Connect the events to the on_event function call. From d1520ca83b984b96eebb6b3bf29abf84f92304c0 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Mon, 8 Nov 2021 00:12:39 +0100 Subject: [PATCH 243/270] Backport PR #21555: MNT: reject more possibly unsafe strings in validate_cycler --- lib/matplotlib/rcsetup.py | 11 ++++++++--- lib/matplotlib/tests/test_rcparams.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index e582f5cb575a..7edc1773b49e 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -700,6 +700,13 @@ def cycler(*args, **kwargs): return reduce(operator.add, (ccycler(k, v) for k, v in validated)) +class _DunderChecker(ast.NodeVisitor): + def visit_Attribute(self, node): + if node.attr.startswith("__") and node.attr.endswith("__"): + raise ValueError("cycler strings with dunders are forbidden") + self.generic_visit(node) + + def validate_cycler(s): """Return a Cycler object from a string repr or the object itself.""" if isinstance(s, str): @@ -715,9 +722,7 @@ def validate_cycler(s): # We should replace this eval with a combo of PyParsing and # ast.literal_eval() try: - if '.__' in s.replace(' ', ''): - raise ValueError("'%s' seems to have dunder methods. Raising" - " an exception for your safety") + _DunderChecker().visit(ast.parse(s)) s = eval(s, {'cycler': cycler, '__builtins__': {}}) except BaseException as e: raise ValueError("'%s' is not a valid cycler construction: %s" % diff --git a/lib/matplotlib/tests/test_rcparams.py b/lib/matplotlib/tests/test_rcparams.py index c44bc7bf92df..c8ae9a77c727 100644 --- a/lib/matplotlib/tests/test_rcparams.py +++ b/lib/matplotlib/tests/test_rcparams.py @@ -278,6 +278,17 @@ def generate_validator_testcases(valid): ('cycler("bleh, [])', ValueError), # syntax error ('Cycler("linewidth", [1, 2, 3])', ValueError), # only 'cycler()' function is allowed + # do not allow dunder in string literals + ("cycler('c', [j.__class__(j) for j in ['r', 'b']])", + ValueError), + ("cycler('c', [j. __class__(j) for j in ['r', 'b']])", + ValueError), + ("cycler('c', [j.\t__class__(j) for j in ['r', 'b']])", + ValueError), + ("cycler('c', [j.\u000c__class__(j) for j in ['r', 'b']])", + ValueError), + ("cycler('c', [j.__class__(j).lower() for j in ['r', 'b']])", + ValueError), ('1 + 2', ValueError), # doesn't produce a Cycler object ('os.system("echo Gotcha")', ValueError), # os not available ('import os', ValueError), # should not be able to import From c4145c542d21a47f7a88719d32c6e06f3666f1cb Mon Sep 17 00:00:00 2001 From: hannah Date: Sun, 7 Nov 2021 15:43:13 -0500 Subject: [PATCH 244/270] Backport PR #21559: Fix eventplot units --- lib/matplotlib/axes/_axes.py | 14 +++++++++----- lib/matplotlib/tests/test_axes.py | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index f9cbf8e276ad..a980cf81e293 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -1253,10 +1253,11 @@ def eventplot(self, positions, orientation='horizontal', lineoffsets=1, -------- .. plot:: gallery/lines_bars_and_markers/eventplot_demo.py """ - # We do the conversion first since not all unitized data is uniform - positions, lineoffsets, linelengths = self._process_unit_info( - [("x", positions), ("y", lineoffsets), ("y", linelengths)], kwargs) + lineoffsets, linelengths = self._process_unit_info( + [("y", lineoffsets), ("y", linelengths)], kwargs) + + # fix positions, noting that it can be a list of lists: if not np.iterable(positions): positions = [positions] elif any(np.iterable(position) for position in positions): @@ -1267,6 +1268,11 @@ def eventplot(self, positions, orientation='horizontal', lineoffsets=1, if len(positions) == 0: return [] + poss = [] + for position in positions: + poss += self._process_unit_info([("x", position)], kwargs) + positions = poss + # prevent 'singular' keys from **kwargs dict from overriding the effect # of 'plural' keyword arguments (e.g. 'color' overriding 'colors') colors = cbook._local_over_kwdict(colors, kwargs, 'color') @@ -4308,9 +4314,7 @@ def scatter(self, x, y, s=None, c=None, marker=None, cmap=None, norm=None, """ # Process **kwargs to handle aliases, conflicts with explicit kwargs: - x, y = self._process_unit_info([("x", x), ("y", y)], kwargs) - # np.ma.ravel yields an ndarray, not a masked array, # unless its argument is a masked array. x = np.ma.ravel(x) diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index b73d63c49d77..17f8e5c6312c 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -4116,6 +4116,21 @@ def test_eventplot_orientation(data, orientation): plt.draw() +@check_figures_equal(extensions=['png']) +def test_eventplot_units_list(fig_test, fig_ref): + # test that list of lists converted properly: + ts_1 = [datetime.datetime(2021, 1, 1), datetime.datetime(2021, 1, 2), + datetime.datetime(2021, 1, 3)] + ts_2 = [datetime.datetime(2021, 1, 15), datetime.datetime(2021, 1, 16)] + + ax = fig_ref.subplots() + ax.eventplot(ts_1, lineoffsets=0) + ax.eventplot(ts_2, lineoffsets=1) + + ax = fig_test.subplots() + ax.eventplot([ts_1, ts_2]) + + @image_comparison(['marker_styles.png'], remove_text=True) def test_marker_styles(): fig, ax = plt.subplots() From f3ea6c1464aec1c90176edbf5b7048835079d96a Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 9 Nov 2021 17:09:57 +0100 Subject: [PATCH 245/270] Backport PR #21570: Raise correct exception out of Spines.__getattr__ --- lib/matplotlib/spines.py | 2 +- lib/matplotlib/tests/test_spines.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/spines.py b/lib/matplotlib/spines.py index b07514d324d8..7e7a423c787b 100644 --- a/lib/matplotlib/spines.py +++ b/lib/matplotlib/spines.py @@ -550,7 +550,7 @@ def __getattr__(self, name): try: return self._dict[name] except KeyError: - raise ValueError( + raise AttributeError( f"'Spines' object does not contain a '{name}' spine") def __getitem__(self, key): diff --git a/lib/matplotlib/tests/test_spines.py b/lib/matplotlib/tests/test_spines.py index 589badc310d9..b8891aec411e 100644 --- a/lib/matplotlib/tests/test_spines.py +++ b/lib/matplotlib/tests/test_spines.py @@ -35,6 +35,8 @@ def set_val(self, val): spines[:].set_val('y') assert all(spine.val == 'y' for spine in spines.values()) + with pytest.raises(AttributeError, match='foo'): + spines.foo with pytest.raises(KeyError, match='foo'): spines['foo'] with pytest.raises(KeyError, match='foo, bar'): From 63cc38906b0bc46e30bd202f48e1105182111b9a Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Tue, 9 Nov 2021 17:09:57 +0100 Subject: [PATCH 246/270] Backport PR #21570: Raise correct exception out of Spines.__getattr__ --- lib/matplotlib/spines.py | 2 +- lib/matplotlib/tests/test_spines.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/spines.py b/lib/matplotlib/spines.py index 40ceb157fd6e..9c9f32770a6b 100644 --- a/lib/matplotlib/spines.py +++ b/lib/matplotlib/spines.py @@ -550,7 +550,7 @@ def __getattr__(self, name): try: return self._dict[name] except KeyError: - raise ValueError( + raise AttributeError( f"'Spines' object does not contain a '{name}' spine") def __getitem__(self, key): diff --git a/lib/matplotlib/tests/test_spines.py b/lib/matplotlib/tests/test_spines.py index 589badc310d9..b8891aec411e 100644 --- a/lib/matplotlib/tests/test_spines.py +++ b/lib/matplotlib/tests/test_spines.py @@ -35,6 +35,8 @@ def set_val(self, val): spines[:].set_val('y') assert all(spine.val == 'y' for spine in spines.values()) + with pytest.raises(AttributeError, match='foo'): + spines.foo with pytest.raises(KeyError, match='foo'): spines['foo'] with pytest.raises(KeyError, match='foo, bar'): From f60afd7514475ee9fca76d6fd22a3c2539eb8622 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 9 Nov 2021 23:07:42 -0500 Subject: [PATCH 247/270] Backport PR #21527: Add more 3.5 release notes --- .../api_changes_3.5.0/development.rst | 33 +++ doc/users/explain/backends.rst | 20 +- doc/users/prev_whats_new/whats_new_3.5.0.rst | 280 +++++++++++++++++- 3 files changed, 311 insertions(+), 22 deletions(-) diff --git a/doc/api/prev_api_changes/api_changes_3.5.0/development.rst b/doc/api/prev_api_changes/api_changes_3.5.0/development.rst index d86bc5e344a9..2f0b158d35b6 100644 --- a/doc/api/prev_api_changes/api_changes_3.5.0/development.rst +++ b/doc/api/prev_api_changes/api_changes_3.5.0/development.rst @@ -18,6 +18,39 @@ some :ref:`optional dependencies ` are being bumped: This is consistent with our :ref:`min_deps_policy` and `NEP29 `__ +New wheel architectures +~~~~~~~~~~~~~~~~~~~~~~~ + +Wheels have been added for: + +- Python 3.10 +- PyPy 3.7 +- macOS on Apple Silicon (both arm64 and universal2) + +New build dependencies +~~~~~~~~~~~~~~~~~~~~~~ + +Versioning has been switched from bundled versioneer to `setuptools-scm +`__ using the +``release-branch-semver`` version scheme. The latter is well-maintained, but +may require slight modification to packaging scripts. + +The `setuptools-scm-git-archive +`__ plugin is also used +for consistent version export. + +Data directory is no longer optional +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Historically, the ``mpl-data`` directory has been optional (example files were +unnecessary, and fonts could be deleted if a suitable dependency on a system +font were provided). Though example files are still optional, they have been +substantially pared down, and we now consider the directory to be required. + +Specifically, the ``matplotlibrc`` file found there is used for runtime +verifications and must exist. Packagers may still symlink fonts to system +versions if needed. + New runtime dependencies ~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/users/explain/backends.rst b/doc/users/explain/backends.rst index 24fe007173f1..e42a489c707b 100644 --- a/doc/users/explain/backends.rst +++ b/doc/users/explain/backends.rst @@ -232,19 +232,23 @@ for more details. .. _QT_API-usage: -How do I select PyQt5 or PySide2? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +How do I select the Qt implementation? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The :envvar:`QT_API` environment variable can be set to either ``pyqt5`` or -``pyside2`` to use ``PyQt5`` or ``PySide2``, respectively. +The QtAgg and QtCairo backends support both Qt 5 and 6, as well as both Python +bindings (`PyQt`_ or `Qt for Python`_, a.k.a. PySide). If any binding has +already been loaded, then it will be used for the Qt backend. Otherwise, the +first available binding is used, in the order: PyQt6, PySide6, PyQt5, PySide2. -Since the default value for the bindings to be used is ``PyQt5``, Matplotlib -first tries to import it. If the import fails, it tries to import -``PySide2``. +The :envvar:`QT_API` environment variable can be set to override the search +when nothing has already been loaded. It may be set to (case-insensitively) +PyQt6, PySide6, PyQt5, or PySide2 to pick the version and binding to use. If +the chosen implementation is unavailable, the Qt backend will fail to load +without attempting any other Qt implementations. Using non-builtin backends -------------------------- More generally, any importable backend can be selected by using any of the methods above. If ``name.of.the.backend`` is the module containing the backend, use ``module://name.of.the.backend`` as the backend name, e.g. -``matplotlib.use('module://name.of.the.backend')``. \ No newline at end of file +``matplotlib.use('module://name.of.the.backend')``. diff --git a/doc/users/prev_whats_new/whats_new_3.5.0.rst b/doc/users/prev_whats_new/whats_new_3.5.0.rst index 0fc7d33f69a2..1e9d5de64ec4 100644 --- a/doc/users/prev_whats_new/whats_new_3.5.0.rst +++ b/doc/users/prev_whats_new/whats_new_3.5.0.rst @@ -14,6 +14,26 @@ the :ref:`github-stats`. Figure and Axes creation / management ===================================== +``subplot_mosaic`` supports simple Axes sharing +----------------------------------------------- + +`.Figure.subplot_mosaic`, `.pyplot.subplot_mosaic` support *simple* Axes +sharing (i.e., only `True`/`False` may be passed to *sharex*/*sharey*). When +`True`, tick label visibility and Axis units will be shared. + +.. plot:: + :include-source: + + mosaic = [ + ['A', [['B', 'C'], + ['D', 'E']]], + ['F', 'G'], + ] + fig = plt.figure(constrained_layout=True) + ax_dict = fig.subplot_mosaic(mosaic, sharex=True, sharey=True) + # All Axes use these scales after this call. + ax_dict['A'].set(xscale='log', yscale='logit') + Figure now has ``draw_without_rendering`` method ------------------------------------------------ @@ -77,14 +97,36 @@ Two new styles ``']->'`` and ``'<-['`` are also added via this mechanism. `.ConnectionPatch`, which accepts arrow styles though its *arrowstyle* parameter, also accepts these new styles. +.. plot:: + + import matplotlib.patches as mpatches + + fig, ax = plt.subplots(figsize=(4, 4)) + + ax.plot([0.75, 0.75], [0.25, 0.75], 'ok') + ax.set(xlim=(0, 1), ylim=(0, 1), title='New ArrowStyle options') + + ax.annotate(']->', (0.75, 0.25), (0.25, 0.25), + arrowprops=dict( + arrowstyle=']->', connectionstyle="arc3,rad=-0.05", + shrinkA=5, shrinkB=5, + ), + bbox=dict(boxstyle='square', fc='w'), size='large') + + ax.annotate('<-[', (0.75, 0.75), (0.25, 0.75), + arrowprops=dict( + arrowstyle='<-[', connectionstyle="arc3,rad=-0.05", + shrinkA=5, shrinkB=5, + ), + bbox=dict(boxstyle='square', fc='w'), size='large') + Setting collection offset transform after initialization -------------------------------------------------------- The added `.collections.Collection.set_offset_transform` may be used to set the offset transform after initialization. This can be helpful when creating a -`.collections.Collection` outside an Axes object and later adding it with -`.Axes.add_collection()` and settings the offset transform to -`.Axes.transData`. +`.collections.Collection` outside an Axes object, and later adding it with +`.Axes.add_collection()` and setting the offset transform to `.Axes.transData`. Colors and colormaps ==================== @@ -95,7 +137,7 @@ Colormap registry (experimental) Colormaps are now managed via `matplotlib.colormaps` (or `.pyplot.colormaps`), which is a `.ColormapRegistry`. While we are confident that the API is final, we formally mark it as experimental for 3.5 because we want to keep the option -to still adapt the API for 3.6 should the need arise. +to still modify the API for 3.6 should the need arise. Colormaps can be obtained using item access:: @@ -130,11 +172,22 @@ A new keyword argument *interpolation_stage* is provided for happens. The default is the current behaviour of "data", with the alternative being "rgba" for the newly-available behavior. +.. figure:: /gallery/images_contours_and_fields/images/sphx_glr_image_antialiasing_001.png + :target: /gallery/images_contours_and_fields/image_antialiasing.html + + Example of the interpolation stage options. + For more details see the discussion of the new keyword argument in :doc:`/gallery/images_contours_and_fields/image_antialiasing`. +``imshow`` supports half-float arrays +------------------------------------- + +The `~.axes.Axes.imshow` method now supports half-float arrays, i.e., NumPy +arrays with dtype ``np.float16``. + A callback registry has been added to Normalize objects -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +------------------------------------------------------- `.colors.Normalize` objects now have a callback registry, ``callbacks``, that can be connected to by other objects to be notified when the norm is updated. @@ -153,11 +206,19 @@ Settings tick positions and labels simultaneously in ``set_ticks`` and labels simultaneously. Previously, setting tick labels was done using `.Axis.set_ticklabels` (or -the corresponding `.Axes.set_xticklabels` / `.Axes.set_yticklabels`). This +the corresponding `.Axes.set_xticklabels` / `.Axes.set_yticklabels`); this usually only makes sense if tick positions were previously fixed with -`~.Axis.set_ticks`. The combined functionality is now available in -`~.Axis.set_ticks`. The use of `.Axis.set_ticklabels` is discouraged, but it -will stay available for backward compatibility. +`~.Axis.set_ticks`:: + + ax.set_xticks([1, 2, 3]) + ax.set_xticklabels(['a', 'b', 'c']) + +The combined functionality is now available in `~.Axis.set_ticks`:: + + ax.set_xticks([1, 2, 3], ['a', 'b', 'c']) + +The use of `.Axis.set_ticklabels` is discouraged, but it will stay available +for backward compatibility. Note: This addition makes the API of `~.Axis.set_ticks` also more similar to `.pyplot.xticks` / `.pyplot.yticks`, which already had the additional *labels* @@ -166,6 +227,19 @@ parameter. Fonts and Text ============== +Triple and quadruple dot mathtext accents +----------------------------------------- + +In addition to single and double dot accents, mathtext now supports triple and +quadruple dot accents. + +.. plot:: + :include-source: + + fig = plt.figure(figsize=(3, 1)) + fig.text(0.5, 0.5, r'$\dot{a} \ddot{b} \dddot{c} \ddddot{d}$', fontsize=40, + horizontalalignment='center', verticalalignment='center') + Font properties of legend title are configurable ------------------------------------------------ @@ -179,6 +253,14 @@ argument, for example: ax.legend(title='Points', title_fontproperties={'family': 'serif', 'size': 20}) +``Text`` and ``TextBox`` added *parse_math* option +-------------------------------------------------- + +`.Text` and `.TextBox` objects now allow a *parse_math* keyword-only argument +which controls whether math should be parsed from the displayed string. If +*True*, the string will be parsed as a math text object. If *False*, the string +will be considered a literal and no parsing will occur. + Text can be positioned inside TextBox widget -------------------------------------------- @@ -190,8 +272,9 @@ of the text inside the Axes of the `.TextBox` widget. from matplotlib import pyplot as plt from matplotlib.widgets import TextBox + fig = plt.figure(figsize=(4, 3)) for i, alignment in enumerate(['left', 'center', 'right']): - box_input = plt.axes([0.2, 0.7 - i*0.2, 0.6, 0.1]) + box_input = fig.add_axes([0.1, 0.7 - i*0.3, 0.8, 0.2]) text_box = TextBox(ax=box_input, initial=f'{alignment} alignment', label='', textalignment=alignment) @@ -241,7 +324,6 @@ A new :rc:`legend.labelcolor` sets the default *labelcolor* argument for 'mfc'), or 'markeredgecolor' (or 'mec') will cause the legend text to match the corresponding color of marker. - .. plot:: plt.rcParams['legend.labelcolor'] = 'linecolor' @@ -269,15 +351,121 @@ The `~mpl_toolkits.mplot3d.axes3d.Axes3D` class now has *computed_zorder* parameter. When set to False, Artists are drawn using their ``zorder`` attribute. +.. plot:: + + import matplotlib.patches as mpatches + from mpl_toolkits.mplot3d import art3d + + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6.4, 3), + subplot_kw=dict(projection='3d')) + + ax1.set_title('computed_zorder = True (default)') + ax2.set_title('computed_zorder = False') + ax2.computed_zorder = False + + corners = ((0, 0, 0), (0, 5, 0), (5, 5, 0), (5, 0, 0)) + for ax in (ax1, ax2): + tri = art3d.Poly3DCollection([corners], + facecolors='white', + edgecolors='black', + zorder=1) + ax.add_collection3d(tri) + line, = ax.plot((2, 2), (2, 2), (0, 4), c='red', zorder=2, + label='zorder=2') + points = ax.scatter((3, 3), (1, 3), (1, 3), c='red', zorder=10, + label='zorder=10') + + ax.set_xlim((0, 5)) + ax.set_ylim((0, 5)) + ax.set_zlim((0, 2.5)) + + plane = mpatches.Patch(facecolor='white', edgecolor='black', + label='zorder=1') + fig.legend(handles=[plane, line, points], loc='lower center') + Allow changing the vertical axis in 3d plots ---------------------------------------------- `~mpl_toolkits.mplot3d.axes3d.Axes3D.view_init` now has the parameter *vertical_axis* which allows switching which axis is aligned vertically. +.. plot:: + + Nphi, Nr = 18, 8 + phi = np.linspace(0, np.pi, Nphi) + r = np.arange(Nr) + phi = np.tile(phi, Nr).flatten() + r = np.repeat(r, Nphi).flatten() + + x = r * np.sin(phi) + y = r * np.cos(phi) + z = Nr - r + + fig, axs = plt.subplots(1, 3, figsize=(7, 3), + subplot_kw=dict(projection='3d'), + gridspec_kw=dict(wspace=0.4, left=0.08, right=0.98, + bottom=0, top=1)) + for vert_a, ax in zip(['z', 'y', 'x'], axs): + pc = ax.scatter(x, y, z, c=z) + ax.view_init(azim=30, elev=30, vertical_axis=vert_a) + ax.set(xlabel='x', ylabel='y', zlabel='z', + title=f'vertical_axis={vert_a!r}') + +``plot_surface`` supports masked arrays and NaNs +------------------------------------------------ + +`.axes3d.Axes3D.plot_surface` supports masked arrays and NaNs, and will now +hide quads that contain masked or NaN points. The behaviour is similar to +`.Axes.contour` with ``corner_mask=True``. + +.. plot:: + + import matplotlib + import matplotlib.pyplot as plt + import numpy as np + + fig, ax = plt.subplots(figsize=(6, 6), subplot_kw={'projection': '3d'}, + constrained_layout=True) + + x, y = np.mgrid[1:10:1, 1:10:1] + z = x ** 3 + y ** 3 - 500 + z = np.ma.masked_array(z, z < 0) + + ax.plot_surface(x, y, z, rstride=1, cstride=1, linewidth=0, cmap='inferno') + ax.view_init(35, -90) + +3D plotting methods support *data* keyword argument +--------------------------------------------------- + +To match all 2D plotting methods, the 3D Axes now support the *data* keyword +argument. This allows passing arguments indirectly from a DataFrame-like +structure. :: + + data = { # A labelled data set, or e.g., Pandas DataFrame. + 'x': ..., + 'y': ..., + 'z': ..., + 'width': ..., + 'depth': ..., + 'top': ..., + } + + fig, ax = plt.subplots(subplot_kw={'projection': '3d') + ax.bar3d('x', 'y', 'z', 'width', 'depth', 'top', data=data) + Interactive tool improvements ============================= +Colorbars now have pan and zoom functionality +--------------------------------------------- + +Interactive plots with colorbars can now be zoomed and panned on the colorbar +axis. This adjusts the *vmin* and *vmax* of the ``ScalarMappable`` associated +with the colorbar. This is currently only enabled for continuous norms. Norms +used with contourf and categoricals, such as ``BoundaryNorm`` and ``NoNorm``, +have the interactive capability disabled by default. ``cb.ax.set_navigate()`` +can be used to set whether a colorbar axes is interactive or not. + Updated the appearance of Slider widgets ---------------------------------------- @@ -391,6 +579,14 @@ from being processed and let all other signals pass. with fig.canvas.callbacks.blocked(signal="key_press_event"): plt.show() +Directional sizing cursors +-------------------------- + +Canvases now support setting directional sizing cursors, i.e., horizontal and +vertical double arrows. These are used in e.g., selector widgets. Try the +:doc:`/gallery/widgets/mouse_cursor` example to see the cursor in your desired +backend. + Sphinx extensions ================= @@ -411,12 +607,68 @@ configuration options that may be specified in your ``conf.py``: Backend-specific improvements ============================= +GTK backend +----------- + +A backend supporting GTK4_ has been added. Both Agg and Cairo renderers are +supported. The GTK4 backends may be selected as GTK4Agg or GTK4Cairo. + +.. _GTK4: https://www.gtk.org/ + +Qt backends +----------- + +Support for Qt6 (using either PyQt6_ or PySide6_) has been added, with either +the Agg or Cairo renderers. Simultaneously, support for Qt4 has been dropped. +Both Qt6 and Qt5 are supported by a combined backend (QtAgg or QtCairo), and +the loaded version is determined by modules already imported, the +:envvar:`QT_API` environment variable, and available packages. See +:ref:`QT_API-usage` for details. The versioned Qt5 backend names (Qt5Agg or +Qt5Cairo) remain supported for backwards compatibility. + +.. _PyQt6: https://www.riverbankcomputing.com/static/Docs/PyQt6/ +.. _PySide6: https://doc.qt.io/qtforpython/ + +HiDPI support in Cairo-based, GTK, and Tk backends +-------------------------------------------------- + +The GTK3 backends now support HiDPI fully, including mixed monitor cases (on +Wayland only). The newly added GTK4 backends also support HiDPI. + +The TkAgg backend now supports HiDPI **on Windows only**, including mixed +monitor cases. + +All Cairo-based backends correctly support HiDPI as well as their Agg +counterparts did (i.e., if the toolkit supports HiDPI, then the \*Cairo backend +will now support it, but not otherwise.) + +Qt figure options editor improvements +------------------------------------- + +The figure options editor in the Qt backend now also supports editing the left +and right titles (plus the existing centre title). Editing Axis limits is +better supported when using a date converter. The ``symlog`` option is now +available in Axis scaling options. All entries with the same label are now +shown in the Curves tab. + +WX backends support mouse navigation buttons +-------------------------------------------- + +The WX backends now support navigating through view states using the mouse +forward/backward buttons, as in other backends. + +WebAgg uses asyncio instead of Tornado +-------------------------------------- + +The WebAgg backend defaults to using `asyncio` over Tornado for timer support. +This allows using the WebAgg backend in JupyterLite. + Version information =================== -We switched to the `release-branch-semver`_ version scheme. This only affects, -the version information for development builds. Their version number now -describes the targeted release, i.e. 3.5.0.dev820+g6768ef8c4c.d20210520 is 820 +We switched to the `release-branch-semver`_ version scheme of setuptools-scm. +This only affects the version information for development builds. Their version +number now describes the targeted release, i.e. 3.5.0.dev820+g6768ef8c4c is 820 commits after the previous release and is scheduled to be officially released as 3.5.0 later. From 56ec348c8b85013838898459d08e9cb1b5761717 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 10 Nov 2021 16:32:46 -0500 Subject: [PATCH 248/270] Backport PR #21581: Fix RangeSlider.reset --- lib/matplotlib/tests/test_widgets.py | 11 +++++++++++ lib/matplotlib/widgets.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_widgets.py b/lib/matplotlib/tests/test_widgets.py index f50402a20a15..0e4a7e7daa68 100644 --- a/lib/matplotlib/tests/test_widgets.py +++ b/lib/matplotlib/tests/test_widgets.py @@ -743,6 +743,14 @@ def test_slider_horizontal_vertical(): assert_allclose(box.bounds, [.25, 0, .5, 10/24]) +def test_slider_reset(): + fig, ax = plt.subplots() + slider = widgets.Slider(ax=ax, label='', valmin=0, valmax=1, valinit=.5) + slider.set_val(0.75) + slider.reset() + assert slider.val == 0.5 + + @pytest.mark.parametrize("orientation", ["horizontal", "vertical"]) def test_range_slider(orientation): if orientation == "vertical": @@ -773,6 +781,9 @@ def test_range_slider(orientation): slider.set_val((-1, 10)) assert_allclose(slider.val, (0, 1)) + slider.reset() + assert_allclose(slider.val, [0.1, 0.34]) + def check_polygon_selector(event_sequence, expected_result, selections_count): """ diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index 35d9ed3bfe4f..c34eaae792d3 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -305,7 +305,7 @@ def disconnect(self, cid): def reset(self): """Reset the slider to the initial value.""" - if self.val != self.valinit: + if np.any(self.val != self.valinit): self.set_val(self.valinit) From f35e3b5b2fc9203c62e6e5df926797a1b719613a Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Thu, 11 Nov 2021 08:50:27 +0100 Subject: [PATCH 249/270] Backport PR #21592: [BUG in 3.5.0rc1] - Anatomy of a Figure has the legend in the wrong spot --- examples/showcase/anatomy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/showcase/anatomy.py b/examples/showcase/anatomy.py index 9a362df386e1..cc3f334c0987 100644 --- a/examples/showcase/anatomy.py +++ b/examples/showcase/anatomy.py @@ -52,7 +52,7 @@ def minor_tick(x, pos): ax.set_xlabel("X axis label") ax.set_ylabel("Y axis label") -ax.legend() +ax.legend(loc="upper right") def circle(x, y, radius=0.15): From 632c41b012f93fb1cf33ff85980ce138bd278c91 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 11 Nov 2021 12:12:30 -0500 Subject: [PATCH 250/270] Backport PR #21530: Fix interrupting GTK on plain Python --- lib/matplotlib/backends/_backend_gtk.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/matplotlib/backends/_backend_gtk.py b/lib/matplotlib/backends/_backend_gtk.py index 7b0341d644fb..2b095c3bc7a9 100644 --- a/lib/matplotlib/backends/_backend_gtk.py +++ b/lib/matplotlib/backends/_backend_gtk.py @@ -169,6 +169,13 @@ def mainloop(): try: _application.run() # Quits when all added windows close. + except KeyboardInterrupt: + # Ensure all windows can process their close event from + # _shutdown_application. + context = GLib.MainContext.default() + while context.pending(): + context.iteration(True) + raise finally: # Running after quit is undefined, so create a new one next time. _application = None From 7c7bc9fe18105ba6171da03e2caa4c276f858681 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 11 Nov 2021 12:43:30 -0500 Subject: [PATCH 251/270] Backport PR #21586: Defer enforcement of hatch validation --- lib/matplotlib/hatch.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/matplotlib/hatch.py b/lib/matplotlib/hatch.py index c490f404c948..9c836cbf3cb9 100644 --- a/lib/matplotlib/hatch.py +++ b/lib/matplotlib/hatch.py @@ -188,6 +188,7 @@ def _validate_hatch_pattern(hatch): invalids = ''.join(sorted(invalids)) _api.warn_deprecated( '3.4', + removal='3.7', # one release after custom hatches (#20690) message=f'hatch must consist of a string of "{valid}" or ' 'None, but found the following invalid values ' f'"{invalids}". Passing invalid values is deprecated ' From 58b42b6c8f2f5ee8226f4357ef2a324705ce4d0f Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 11 Nov 2021 00:11:20 -0500 Subject: [PATCH 252/270] Backport PR #21596: Pin sphinx to fix sphinx-gallery --- requirements/doc/doc-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/doc/doc-requirements.txt b/requirements/doc/doc-requirements.txt index c77787e4c72b..9d4073dec892 100644 --- a/requirements/doc/doc-requirements.txt +++ b/requirements/doc/doc-requirements.txt @@ -7,7 +7,7 @@ # Install the documentation requirements with: # pip install -r requirements/doc/doc-requirements.txt # -sphinx>=1.8.1,!=2.0.0 +sphinx>=1.8.1,!=2.0.0,<4.3.0 colorspacious ipython ipywidgets From e4325e668f951ca9f3d5abeafa145987a29791bf Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 11 Nov 2021 15:05:58 -0500 Subject: [PATCH 253/270] Backport PR #21317: Move label hiding rectilinear-only check into _label_outer_{x,y}axis. --- lib/matplotlib/axes/_subplots.py | 15 +++++++++++---- lib/matplotlib/figure.py | 4 ++-- lib/matplotlib/gridspec.py | 13 ++++++------- lib/matplotlib/tests/test_polar.py | 7 ++++++- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/lib/matplotlib/axes/_subplots.py b/lib/matplotlib/axes/_subplots.py index f92d08440ea5..18faf2e9d086 100644 --- a/lib/matplotlib/axes/_subplots.py +++ b/lib/matplotlib/axes/_subplots.py @@ -1,3 +1,4 @@ +import matplotlib as mpl from matplotlib import _api, cbook from matplotlib.axes._axes import Axes from matplotlib.gridspec import GridSpec, SubplotSpec @@ -109,10 +110,13 @@ def label_outer(self): labels are on the top side); y-labels only for subplots on the first column (or last column, if labels are on the right side). """ - self._label_outer_xaxis() - self._label_outer_yaxis() + self._label_outer_xaxis(check_patch=False) + self._label_outer_yaxis(check_patch=False) - def _label_outer_xaxis(self): + def _label_outer_xaxis(self, *, check_patch): + # see documentation in label_outer. + if check_patch and not isinstance(self.patch, mpl.patches.Rectangle): + return ss = self.get_subplotspec() label_position = self.xaxis.get_label_position() if not ss.is_first_row(): # Remove top label/ticklabels/offsettext. @@ -128,7 +132,10 @@ def _label_outer_xaxis(self): if self.xaxis.offsetText.get_position()[1] == 0: self.xaxis.offsetText.set_visible(False) - def _label_outer_yaxis(self): + def _label_outer_yaxis(self, *, check_patch): + # see documentation in label_outer. + if check_patch and not isinstance(self.patch, mpl.patches.Rectangle): + return ss = self.get_subplotspec() label_position = self.yaxis.get_label_position() if not ss.is_first_col(): # Remove left label/ticklabels/offsettext. diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index 2454776370d0..61ef30c8fcb1 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -1909,10 +1909,10 @@ def _do_layout(gs, mosaic, unique_ids, nested): for ax in ret.values(): if sharex: ax.sharex(ax0) - ax._label_outer_xaxis() + ax._label_outer_xaxis(check_patch=True) if sharey: ax.sharey(ax0) - ax._label_outer_yaxis() + ax._label_outer_yaxis(check_patch=True) for k, ax in ret.items(): if isinstance(k, str): ax.set_label(k) diff --git a/lib/matplotlib/gridspec.py b/lib/matplotlib/gridspec.py index 74b35d41797d..be004fcf9868 100644 --- a/lib/matplotlib/gridspec.py +++ b/lib/matplotlib/gridspec.py @@ -306,13 +306,12 @@ def subplots(self, *, sharex=False, sharey=False, squeeze=True, self[row, col], **subplot_kw) # turn off redundant tick labeling - if all(ax.name == "rectilinear" for ax in axarr.flat): - if sharex in ["col", "all"]: - for ax in axarr.flat: - ax._label_outer_xaxis() - if sharey in ["row", "all"]: - for ax in axarr.flat: - ax._label_outer_yaxis() + if sharex in ["col", "all"]: + for ax in axarr.flat: + ax._label_outer_xaxis(check_patch=True) + if sharey in ["row", "all"]: + for ax in axarr.flat: + ax._label_outer_yaxis(check_patch=True) if squeeze: # Discarding unneeded dimensions that equal 1. If we only have one diff --git a/lib/matplotlib/tests/test_polar.py b/lib/matplotlib/tests/test_polar.py index ea3cdfa12917..85aece5fce1a 100644 --- a/lib/matplotlib/tests/test_polar.py +++ b/lib/matplotlib/tests/test_polar.py @@ -396,10 +396,15 @@ def test_remove_shared_polar(fig_ref, fig_test): def test_shared_polar_keeps_ticklabels(): fig, axs = plt.subplots( - 2, 2, subplot_kw=dict(projection="polar"), sharex=True, sharey=True) + 2, 2, subplot_kw={"projection": "polar"}, sharex=True, sharey=True) fig.canvas.draw() assert axs[0, 1].xaxis.majorTicks[0].get_visible() assert axs[0, 1].yaxis.majorTicks[0].get_visible() + fig, axs = plt.subplot_mosaic( + "ab\ncd", subplot_kw={"projection": "polar"}, sharex=True, sharey=True) + fig.canvas.draw() + assert axs["b"].xaxis.majorTicks[0].get_visible() + assert axs["b"].yaxis.majorTicks[0].get_visible() def test_axvline_axvspan_do_not_modify_rlims(): From d42e5bc3c0ace75ecceb995fd9d044056efd13c7 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Fri, 12 Nov 2021 02:14:49 -0800 Subject: [PATCH 254/270] Backport PR #21609: Fix documentation link with renaming `voxels` to `voxelarray` --- examples/mplot3d/voxels.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/mplot3d/voxels.py b/examples/mplot3d/voxels.py index c6a35d7bcf5b..5b74914fa271 100644 --- a/examples/mplot3d/voxels.py +++ b/examples/mplot3d/voxels.py @@ -20,16 +20,16 @@ link = abs(x - y) + abs(y - z) + abs(z - x) <= 2 # combine the objects into a single boolean array -voxels = cube1 | cube2 | link +voxelarray = cube1 | cube2 | link # set the colors of each object -colors = np.empty(voxels.shape, dtype=object) +colors = np.empty(voxelarray.shape, dtype=object) colors[link] = 'red' colors[cube1] = 'blue' colors[cube2] = 'green' # and plot everything ax = plt.figure().add_subplot(projection='3d') -ax.voxels(voxels, facecolors=colors, edgecolor='k') +ax.voxels(voxelarray, facecolors=colors, edgecolor='k') plt.show() From b84d8386e1e09d15d45673b710528fada5873e5f Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Fri, 12 Nov 2021 21:44:23 +0100 Subject: [PATCH 255/270] Backport PR #21607: DOC: link to cheatsheets site, not github repo --- doc/_templates/cheatsheet_sidebar.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/_templates/cheatsheet_sidebar.html b/doc/_templates/cheatsheet_sidebar.html index 44de3dff1e59..3f2b7c4f4db1 100644 --- a/doc/_templates/cheatsheet_sidebar.html +++ b/doc/_templates/cheatsheet_sidebar.html @@ -1,7 +1,7 @@